Content-Type: multipart/related; start=; boundary=----------W3sjLlB6dNUmUe9578Qmr0 Content-Location: http://www.radikal.com.tr/Radikal.aspx?aType=RadikalDetayV3&ArticleID=1072471&Date=14.12.2011&CategoryID=81 Subject: =?utf-8?Q?T=C3=BCrkiye=20kar=C5=9F=C4=B1t=C4=B1=20tasar=C4=B1,=202=20ki=C5=9Finin=20oyuyla=20ge=C3=A7ti=20/=20D=C3=BCnya=20/=20Radikal=20=C4=B0nternet?= MIME-Version: 1.0 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=Radikal.htm Content-Type: text/html; charset=iso-8859-9; name=Radikal.htm Content-ID: Content-Location: http://www.radikal.com.tr/Radikal.aspx?aType=RadikalDetayV3&ArticleID=1072471&Date=14.12.2011&CategoryID=81 Content-Transfer-Encoding: Quoted-Printable = T=FCrkiye kar=FE=FDt=FD tasar=FD, 2 ki=FEinin oyuyla ge=E7ti = / D=FCnya / Radikal =DDnternet = = = =
= = = =
=
=
=
= =
  • 3D"Down"
  • USD
  •  1.88
  •   %-0.01
  • 3D""
  • =
  • EURO
  •  2.44
  •   %0.00
  • 3D""
  • IMKB
  •  51223.20
  •   %0.00
  • = 3D"Down"
  • ALTIN
  •  96.16
  •   %-0.01
3D"Radikal"
14  Aral=FDk 2011, =C7ar= =FEamba
Son G=FCncelleme  23:35
  • =DDSTANBUL
    14=B0C / 8=B0C
  • ANKARA
    12=B0C / 0=B0C
  • =DDZM=DDR
    18=B0C / 9=B0C
  • ANTALYA
    19=B0C / 9=B0C
  • BURSA
    15=B0C / 4=B0C
  • ADANA
    18=B0C / 5=B0C
  • D=DDYARBAKIR
    9=B0C / -2=B0C
  • ESK=DD=DEEH=DDR
    11=B0C /= -1=B0C
  • KAYSER=DD
    8=B0C / -4=B0C
  • TRABZON
    13=B0C / 7=B0C
=
=
=
= =

T=FCrkiye kar=FE=FD= t=FD tasar=FD, 2 ki=FEinin oyuyla ge=E7ti =

14/12/2011 11:13

Y= az=FD Boyutu
3D"K=FC=E7=FCk"

T=FCrkiye'den "=FClkedeki Hristi= yanlar=FDn haklar=FDna tam olarak sayg=FD g=F6stermesini" isteyen 306 No= 'lu tasar=FD, ABD Temsilciler Meclisi Genel Kurulundan ge=E7ti =

3D"T=FCrkiye

A= r=FEiv


  • Okur Yorumlar=FD
  • (7 Yorum)

  • 3D"Ekrem<= p class=3D"title">Rad=FDkal Gazetesini k=FDn=FDyorum

    15/12/2011 - = 9:7

    Bu gazeteyi "nerede konu= mlanaca=F0=FDn=FD" bilen bir bas=FDn organ=FD olarak g=F6r=FCyordum. Bu = nas=FDl bir ba=FEl=FDk b=F6yle! Nereye hizmet edece=F0ini tahmin etmiyor= musunuz say=FDn genel m=FCd=FCrler, edit=F6rler vs.!!

    • Yorumu Oyla    
    • 1
    • 0

    =
  • 3D"Ekrem<= p class=3D"title">GARIP ISE BAK

    14/12/2011 - = 19:51

    Tamam, onlarin Turkiye= sini anladikta ama onlarin ulkesinde yasayan ezilmis ve kucultulmus musl= umanlarin insan haklarindan hangi parlemento karar alacak. Yoksa onlara = gore o muslumanlarin insan haklari yokmudur?. Birakin artik bu ayaklari!= , topu baskalarinin sahasina atmakla kendinizi beyazami cikaracaksiniz.<= /p>

    • Yorumu Oyla    
    • 0
    • 1

    =
  • kaptan-az - o= kurun di=F0er yorumlar=FD i=E7in t=FDklay=FDn=FDz
    3D"Ekrem

    abd nin neyine

    14/12/2011= - = 18:17

    temsilciler meclisinin= boyle bir konu hakkinda oylama yapmasi manidardir,zaten destekcilerin(2= ) de ne olduklarini yazmislar.Oylama yapmak icin yeterli cogunluga bakma= k ve 2 kisi ile tasarinin meclis kurulundan gecmeside meclisin ciddiyeti= hakkinda fikir sahibi yapiyor bizleri....

    • Yorumu Oyla    
    • 0
    • 1

    =
ADnet
<= /div>
= =
= =
= =
=
=
=
= =
D=FCnya Galeri Haberleri
<= div id=3D"linkCont2" style=3D"width:260px">
D=FCnya
<= a target=3D"_blank" style=3D"text-decoration: none; color: #1B3B72;" hre= f=3D"Radikal.aspx?aType=3DRadikalGaleriHaber&ArticleID=3D1061642&= ;PAGE=3D1&Date=3D14.12.2011">Kas=FDrgadan tropikal f=FDrt=FDnaya=
Facebook'ta Payla=FE=FDlan= lar
Twitter'da Payla=FE=FDlanlar
= = = =
=
= =
=
=
=
3D"Do=F0an"
=DDnternet bask=FDs=FDnda yer alan t=FCm metin, resim ve benzeri= i=E7eri=F0in haklar=FD H=FCrriyet Gazetecilik ve Matbaac=FDl=FDk A.=DE'= ye aittir
Hi=E7bir =FEekilde bas=FDl=FD ya da elektronik bir ortamd= a (CD, Internet vs.) kaynak g=F6sterilse bile izin al=FDnmadan kullan=FD= lamaz.
3D"Radikal"=A9 2010
=
------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=share.js Content-Type: application/x-javascript; charset=iso-8859-9; name=share.js Content-Location: http://www.radikal.com.tr/D/j/1/share.js?v=3 Content-Transfer-Encoding: Base64 ICAgICAgZnVuY3Rpb24gbWFrZVVSTChub2QpDQogICAgICB7DQogICAgICB2YXIg dGl0bGUgPSBlbmNvZGVVUkkoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGRl blRpdGxlJykudmFsdWUpOw0KICAgICAgdmFyIHVybCA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdoaWRkZW5VUkwnKS52YWx1ZTsNCi8vICAgICAgdmFyIHJlZzEg PSBuZXcgUmVnRXhwKC8oKCZZYXphcj0uKykmRGF0ZSkvKTsNCi8vICAgICAgaWYo cmVnMS5leGVjKHVybCkpDQovLyAgICAgIHsNCi8vICAgICAgICAgdmFyIHRtcCA9 IHJlZzEuZXhlYyh1cmwpWzBdLnRvU3RyaW5nKCkNCi8vICAgICAgICAgdXJsID0g dXJsLnJlcGxhY2UodG1wLCImRGF0ZSIpOw0KLy8gICAgIH0NCiAgICAgdmFyIEtl eXdvcmRMaXN0PW5ldyBBcnJheSgiWWF6YXIiLCJSZGtyZWYiLCJmYyIpOyAgICAg IA0KICAgICBmb3IodmFyIGk9MDtpPEtleXdvcmRMaXN0Lmxlbmd0aDtpKyspew0K ICAgICAgICAgdmFyIHJlZzEgPSBuZXcgUmVnRXhwKCIoWz98Jl0pIitLZXl3b3Jk TGlzdFtpXSsiPS4qPygmfCQpIik7DQogICAgICAgICBpZihyZWcxLmV4ZWModXJs KSE9bnVsbCkNCiAgICAgICAgIHsNCiAgICAgICAgIGlmKHJlZzEuZXhlYyh1cmwp KSANCiAgICAgICAgIHsNCiAgICAgICAgICAgICB2YXIgdG1wID0gcmVnMS5leGVj KHVybClbMF0udG9TdHJpbmcoKTsNCiAgICAgICAgICAgICB1cmwgPSB1cmwucmVw bGFjZSh0bXAsIiYiKTsgDQogICAgICAgICB9DQogICAgICAgICB9DQogICAgIH0N CiAgICAgaWYodXJsLnN1YnN0cmluZyh1cmwubGVuZ3RoLTEpPT0nJicpDQogICAg IHsNCiAgICAgICAgdXJsPXVybC5zdWJzdHJpbmcodXJsLmxlbmd0aC0xLC0xKTsN CiAgICAgfQ0KICAgICB1cmwgPSBlc2NhcGUodXJsKTsNCg0KICAgICAgdmFyIG9w dGlvbnMgPSAiaGVpZ2h0PTcwMCx3aWR0aD04MDAsdGl0bGViYXI9bm8sc3RhdHVz PW5vLHRvb2xiYXI9bm8sbWVudWJhcj1ubyxsb2NhdGlvbj1ubyxyZXNpemFibGU9 bm8sc2Nyb2xsYmFycz0xIjsNCiAgICAgIHZhciBtVVJMPScnOw0KICAgICAgaWYo bm9kPT0xKQ0KICAgICAgbVVSTD0iaHR0cDovL3d3dy5mYWNlYm9vay5jb20vc2hh cmUucGhwP3U9IiArIHVybDsNCiAgICAgIGlmKG5vZD09MikNCiAgICAgIG1VUkw9 Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9ib29rbWFya3MvbWFyaz9vcD1lZGl0JiMz ODtia21rPSIgKyB1cmwgKyAiJiMzODt0aXRsZT0iICsgdGl0bGU7DQogICAgICBp Zihub2Q9PTMpDQogICAgICBtVVJMPSJodHRwOi8vbXl3ZWIyLnNlYXJjaC55YWhv by5jb20vbXlyZXN1bHRzL2Jvb2ttYXJrbGV0PyZhbXA7dT0iICt1cmwrICImYW1w O3Q9IiArIHRpdGxlOw0KICAgICAgaWYobm9kPT00KQ0KICAgICAgbVVSTD0iaHR0 cDovL3d3dy5taXh4LmNvbS9zdWJtaXQvc3Rvcnk/dGl0bGU9Iit0aXRsZSsiJmFt cDtwYWdlX3VybD0iK3VybCsiJmFtcDtwYXJ0bmVyPVJhZGlrYWwmYW1wO2Rlc2Ny aXB0aW9uPSI7DQogICAgICBpZihub2Q9PTUpDQogICAgICBtVVJMPSJodHRwOi8v ZGlnZy5jb20vc3VibWl0P3VybD0iK3VybCsiJmFtcDt0aXRsZT0iICsgdGl0bGU7 DQogICAgICBpZihub2Q9PTYpDQogICAgICBtVVJMPSJodHRwOi8vd3d3LnN0dW1i bGV1cG9uLmNvbS9zdWJtaXQ/dXJsPSIrdXJsKyImYW1wO3RpdGxlPSIgKyB0aXRs ZTsNCiAgICAgIGlmKG5vZD09NykNCiAgICAgIG1VUkw9Imh0dHA6Ly9kZWwuaWNp by51cy9wb3N0P3VybD0iK3VybCsiJmFtcDt0aXRsZT0iICsgdGl0bGU7DQogICAg ICBpZihub2Q9PTgpDQogICAgICBtVVJMPSJodHRwOi8vcmVkZGl0LmNvbS9zdWJt aXQ/dXJsPSIrdXJsKyImYW1wO3RpdGxlPSIgKyB0aXRsZTsNCiAgICAgIGlmKG5v ZD09OSl7DQogICAgICAgIC8vbVVSTD0iaHR0cDovL3R3c2hvdC5jb20vc2hhcmUu YXNweD91cmw9Iit1cmwrIiZhbXA7dGl0bGU9IiArIHRpdGxlOw0KICAgICAgICBt VVJMPSJodHRwOi8vdHdpdHRlci5jb20vc2hhcmU/dXJsPSIrdXJsKyImYW1wO3Rl eHQ9IiArIHRpdGxlLnN1YnN0cmluZygwLDEwMCkrIiZhbXA7dmlhPXd3d3JhZGlr YWxjb210ciI7DQogICAgICB9DQogICAgICBpZihub2Q9PTEwKQ0KICAgICAgbVVS TD0iaHR0cDovL3d3dy5teXNwYWNlLmNvbS9Nb2R1bGVzL1Bvc3RUby9QYWdlcy8/ bD0yJmFtcDt1PSIgK3VybCsgIiZhbXA7dD0iK3RpdGxlKyImYW1wO2M9Iit0aXRs ZTsNCiAgICAgIGlmKG5vZD09MTEpDQogICAgICBtVVJMPSJodHRwOi8vZnJpZW5k ZmVlZC5jb20vc2hhcmUvYm9va21hcmtsZXQvZnJhbWUjdGl0bGU9IiArIHRpdGxl ICsgIiZhbXA7dXJsPSIrdXJsOw0KDQogICAgICB3aW5kb3cub3BlbihtVVJMLnJl cGxhY2UoL2FtcDsvZ2ksJycpLCdfYmxhbmsnLG9wdGlvbnMpOw0KICAgICAgfQ== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=jquery-1.3.2.min.js Content-Type: application/x-javascript; charset=iso-8859-9; name=jquery-1.3.2.min.js Content-Location: http://www.radikal.com.tr/data/js/jquery-1.3.2.min.js Content-Transfer-Encoding: Base64 LyoKICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2MS4zLjIKICogaHR0cDov L2pxdWVyeS5jb20vCiAqCiAqIENvcHlyaWdodCAoYykgMjAwOSBKb2huIFJlc2ln CiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2Vz LgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL0xpY2Vuc2UKICoKICogRGF0ZTog MjAwOS0wMi0xOSAxNzozNDoyMSAtMDUwMCAoVGh1LCAxOSBGZWIgMjAwOSkKICog UmV2aXNpb246IDYyNDYKICovCihmdW5jdGlvbigpe3ZhciBsPXRoaXMsZyx5PWwu alF1ZXJ5LHA9bC4kLG89bC5qUXVlcnk9bC4kPWZ1bmN0aW9uKEUsRil7cmV0dXJu IG5ldyBvLmZuLmluaXQoRSxGKX0sRD0vXltePF0qKDwoLnxccykrPilbXj5dKiR8 XiMoW1x3LV0rKSQvLGY9L14uW146I1xbXC4sXSokLztvLmZuPW8ucHJvdG90eXBl PXtpbml0OmZ1bmN0aW9uKEUsSCl7RT1FfHxkb2N1bWVudDtpZihFLm5vZGVUeXBl KXt0aGlzWzBdPUU7dGhpcy5sZW5ndGg9MTt0aGlzLmNvbnRleHQ9RTtyZXR1cm4g dGhpc31pZih0eXBlb2YgRT09PSJzdHJpbmciKXt2YXIgRz1ELmV4ZWMoRSk7aWYo RyYmKEdbMV18fCFIKSl7aWYoR1sxXSl7RT1vLmNsZWFuKFtHWzFdXSxIKX1lbHNl e3ZhciBJPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEdbM10pO2lmKEkmJkkuaWQh PUdbM10pe3JldHVybiBvKCkuZmluZChFKX12YXIgRj1vKEl8fFtdKTtGLmNvbnRl eHQ9ZG9jdW1lbnQ7Ri5zZWxlY3Rvcj1FO3JldHVybiBGfX1lbHNle3JldHVybiBv KEgpLmZpbmQoRSl9fWVsc2V7aWYoby5pc0Z1bmN0aW9uKEUpKXtyZXR1cm4gbyhk b2N1bWVudCkucmVhZHkoRSl9fWlmKEUuc2VsZWN0b3ImJkUuY29udGV4dCl7dGhp cy5zZWxlY3Rvcj1FLnNlbGVjdG9yO3RoaXMuY29udGV4dD1FLmNvbnRleHR9cmV0 dXJuIHRoaXMuc2V0QXJyYXkoby5pc0FycmF5KEUpP0U6by5tYWtlQXJyYXkoRSkp fSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuMy4yIixzaXplOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMubGVuZ3RofSxnZXQ6ZnVuY3Rpb24oRSl7cmV0dXJuIEU9PT1nP0Fy cmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMpOnRoaXNbRV19LHB1c2hTdGFj azpmdW5jdGlvbihGLEgsRSl7dmFyIEc9byhGKTtHLnByZXZPYmplY3Q9dGhpcztH LmNvbnRleHQ9dGhpcy5jb250ZXh0O2lmKEg9PT0iZmluZCIpe0cuc2VsZWN0b3I9 dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK0V9ZWxzZXtpZihI KXtHLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK0grIigiK0UrIikifX1yZXR1 cm4gR30sc2V0QXJyYXk6ZnVuY3Rpb24oRSl7dGhpcy5sZW5ndGg9MDtBcnJheS5w cm90b3R5cGUucHVzaC5hcHBseSh0aGlzLEUpO3JldHVybiB0aGlzfSxlYWNoOmZ1 bmN0aW9uKEYsRSl7cmV0dXJuIG8uZWFjaCh0aGlzLEYsRSl9LGluZGV4OmZ1bmN0 aW9uKEUpe3JldHVybiBvLmluQXJyYXkoRSYmRS5qcXVlcnk/RVswXTpFLHRoaXMp fSxhdHRyOmZ1bmN0aW9uKEYsSCxHKXt2YXIgRT1GO2lmKHR5cGVvZiBGPT09InN0 cmluZyIpe2lmKEg9PT1nKXtyZXR1cm4gdGhpc1swXSYmb1tHfHwiYXR0ciJdKHRo aXNbMF0sRil9ZWxzZXtFPXt9O0VbRl09SH19cmV0dXJuIHRoaXMuZWFjaChmdW5j dGlvbihJKXtmb3IoRiBpbiBFKXtvLmF0dHIoRz90aGlzLnN0eWxlOnRoaXMsRixv LnByb3AodGhpcyxFW0ZdLEcsSSxGKSl9fSl9LGNzczpmdW5jdGlvbihFLEYpe2lm KChFPT0id2lkdGgifHxFPT0iaGVpZ2h0IikmJnBhcnNlRmxvYXQoRik8MCl7Rj1n fXJldHVybiB0aGlzLmF0dHIoRSxGLCJjdXJDU1MiKX0sdGV4dDpmdW5jdGlvbihG KXtpZih0eXBlb2YgRiE9PSJvYmplY3QiJiZGIT1udWxsKXtyZXR1cm4gdGhpcy5l bXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxk b2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoRikpfXZhciBFPSIiO28uZWFjaChGfHx0 aGlzLGZ1bmN0aW9uKCl7by5lYWNoKHRoaXMuY2hpbGROb2RlcyxmdW5jdGlvbigp e2lmKHRoaXMubm9kZVR5cGUhPTgpe0UrPXRoaXMubm9kZVR5cGUhPTE/dGhpcy5u b2RlVmFsdWU6by5mbi50ZXh0KFt0aGlzXSl9fSl9KTtyZXR1cm4gRX0sd3JhcEFs bDpmdW5jdGlvbihFKXtpZih0aGlzWzBdKXt2YXIgRj1vKEUsdGhpc1swXS5vd25l ckRvY3VtZW50KS5jbG9uZSgpO2lmKHRoaXNbMF0ucGFyZW50Tm9kZSl7Ri5pbnNl cnRCZWZvcmUodGhpc1swXSl9Ri5tYXAoZnVuY3Rpb24oKXt2YXIgRz10aGlzO3do aWxlKEcuZmlyc3RDaGlsZCl7Rz1HLmZpcnN0Q2hpbGR9cmV0dXJuIEd9KS5hcHBl bmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihFKXtyZXR1 cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7byh0aGlzKS5jb250ZW50cygpLndyYXBB bGwoRSl9KX0sd3JhcDpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0 aW9uKCl7byh0aGlzKS53cmFwQWxsKEUpfSl9LGFwcGVuZDpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKEUpe2lm KHRoaXMubm9kZVR5cGU9PTEpe3RoaXMuYXBwZW5kQ2hpbGQoRSl9fSl9LHByZXBl bmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsdHJ1 ZSxmdW5jdGlvbihFKXtpZih0aGlzLm5vZGVUeXBlPT0xKXt0aGlzLmluc2VydEJl Zm9yZShFLHRoaXMuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmYWxzZSxmdW5jdGlvbihFKXt0 aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKEUsdGhpcyl9KX0sYWZ0ZXI6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZmFsc2UsZnVu Y3Rpb24oRSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShFLHRoaXMubmV4 dFNpYmxpbmcpfSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmpl Y3R8fG8oW10pfSxwdXNoOltdLnB1c2gsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5z cGxpY2UsZmluZDpmdW5jdGlvbihFKXtpZih0aGlzLmxlbmd0aD09PTEpe3ZhciBG PXRoaXMucHVzaFN0YWNrKFtdLCJmaW5kIixFKTtGLmxlbmd0aD0wO28uZmluZChF LHRoaXNbMF0sRik7cmV0dXJuIEZ9ZWxzZXtyZXR1cm4gdGhpcy5wdXNoU3RhY2so by51bmlxdWUoby5tYXAodGhpcyxmdW5jdGlvbihHKXtyZXR1cm4gby5maW5kKEUs Ryl9KSksImZpbmQiLEUpfX0sY2xvbmU6ZnVuY3Rpb24oRyl7dmFyIEU9dGhpcy5t YXAoZnVuY3Rpb24oKXtpZighby5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmIW8uaXNY TUxEb2ModGhpcykpe3ZhciBJPXRoaXMub3V0ZXJIVE1MO2lmKCFJKXt2YXIgSj10 aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Si5hcHBlbmRD aGlsZCh0aGlzLmNsb25lTm9kZSh0cnVlKSk7ST1KLmlubmVySFRNTH1yZXR1cm4g by5jbGVhbihbSS5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2cs IiIpLnJlcGxhY2UoL15ccyovLCIiKV0pWzBdfWVsc2V7cmV0dXJuIHRoaXMuY2xv bmVOb2RlKHRydWUpfX0pO2lmKEc9PT10cnVlKXt2YXIgSD10aGlzLmZpbmQoIioi KS5hbmRTZWxmKCksRj0wO0UuZmluZCgiKiIpLmFuZFNlbGYoKS5lYWNoKGZ1bmN0 aW9uKCl7aWYodGhpcy5ub2RlTmFtZSE9PUhbRl0ubm9kZU5hbWUpe3JldHVybn12 YXIgST1vLmRhdGEoSFtGXSwiZXZlbnRzIik7Zm9yKHZhciBLIGluIEkpe2Zvcih2 YXIgSiBpbiBJW0tdKXtvLmV2ZW50LmFkZCh0aGlzLEssSVtLXVtKXSxJW0tdW0pd LmRhdGEpfX1GKyt9KX1yZXR1cm4gRX0sZmlsdGVyOmZ1bmN0aW9uKEUpe3JldHVy biB0aGlzLnB1c2hTdGFjayhvLmlzRnVuY3Rpb24oRSkmJm8uZ3JlcCh0aGlzLGZ1 bmN0aW9uKEcsRil7cmV0dXJuIEUuY2FsbChHLEYpfSl8fG8ubXVsdGlGaWx0ZXIo RSxvLmdyZXAodGhpcyxmdW5jdGlvbihGKXtyZXR1cm4gRi5ub2RlVHlwZT09PTF9 KSksImZpbHRlciIsRSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oRSl7dmFyIEc9by5leHBy Lm1hdGNoLlBPUy50ZXN0KEUpP28oRSk6bnVsbCxGPTA7cmV0dXJuIHRoaXMubWFw KGZ1bmN0aW9uKCl7dmFyIEg9dGhpczt3aGlsZShIJiZILm93bmVyRG9jdW1lbnQp e2lmKEc/Ry5pbmRleChIKT4tMTpvKEgpLmlzKEUpKXtvLmRhdGEoSCwiY2xvc2Vz dCIsRik7cmV0dXJuIEh9SD1ILnBhcmVudE5vZGU7RisrfX0pfSxub3Q6ZnVuY3Rp b24oRSl7aWYodHlwZW9mIEU9PT0ic3RyaW5nIil7aWYoZi50ZXN0KEUpKXtyZXR1 cm4gdGhpcy5wdXNoU3RhY2soby5tdWx0aUZpbHRlcihFLHRoaXMsdHJ1ZSksIm5v dCIsRSl9ZWxzZXtFPW8ubXVsdGlGaWx0ZXIoRSx0aGlzKX19dmFyIEY9RS5sZW5n dGgmJkVbRS5sZW5ndGgtMV0hPT1nJiYhRS5ub2RlVHlwZTtyZXR1cm4gdGhpcy5m aWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gRj9vLmluQXJyYXkodGhpcyxFKTwwOnRo aXMhPUV9KX0sYWRkOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhv LnVuaXF1ZShvLm1lcmdlKHRoaXMuZ2V0KCksdHlwZW9mIEU9PT0ic3RyaW5nIj9v KEUpOm8ubWFrZUFycmF5KEUpKSkpfSxpczpmdW5jdGlvbihFKXtyZXR1cm4gISFF JiZvLm11bHRpRmlsdGVyKEUsdGhpcykubGVuZ3RoPjB9LGhhc0NsYXNzOmZ1bmN0 aW9uKEUpe3JldHVybiAhIUUmJnRoaXMuaXMoIi4iK0UpfSx2YWw6ZnVuY3Rpb24o Syl7aWYoSz09PWcpe3ZhciBFPXRoaXNbMF07aWYoRSl7aWYoby5ub2RlTmFtZShF LCJvcHRpb24iKSl7cmV0dXJuKEUuYXR0cmlidXRlcy52YWx1ZXx8e30pLnNwZWNp ZmllZD9FLnZhbHVlOkUudGV4dH1pZihvLm5vZGVOYW1lKEUsInNlbGVjdCIpKXt2 YXIgST1FLnNlbGVjdGVkSW5kZXgsTD1bXSxNPUUub3B0aW9ucyxIPUUudHlwZT09 InNlbGVjdC1vbmUiO2lmKEk8MCl7cmV0dXJuIG51bGx9Zm9yKHZhciBGPUg/STow LEo9SD9JKzE6TS5sZW5ndGg7RjxKO0YrKyl7dmFyIEc9TVtGXTtpZihHLnNlbGVj dGVkKXtLPW8oRykudmFsKCk7aWYoSCl7cmV0dXJuIEt9TC5wdXNoKEspfX1yZXR1 cm4gTH1yZXR1cm4oRS52YWx1ZXx8IiIpLnJlcGxhY2UoL1xyL2csIiIpfXJldHVy biBnfWlmKHR5cGVvZiBLPT09Im51bWJlciIpe0srPSIifXJldHVybiB0aGlzLmVh Y2goZnVuY3Rpb24oKXtpZih0aGlzLm5vZGVUeXBlIT0xKXtyZXR1cm59aWYoby5p c0FycmF5KEspJiYvcmFkaW98Y2hlY2tib3gvLnRlc3QodGhpcy50eXBlKSl7dGhp cy5jaGVja2VkPShvLmluQXJyYXkodGhpcy52YWx1ZSxLKT49MHx8by5pbkFycmF5 KHRoaXMubmFtZSxLKT49MCl9ZWxzZXtpZihvLm5vZGVOYW1lKHRoaXMsInNlbGVj dCIpKXt2YXIgTj1vLm1ha2VBcnJheShLKTtvKCJvcHRpb24iLHRoaXMpLmVhY2go ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPShvLmluQXJyYXkodGhpcy52YWx1ZSxO KT49MHx8by5pbkFycmF5KHRoaXMudGV4dCxOKT49MCl9KTtpZighTi5sZW5ndGgp e3RoaXMuc2VsZWN0ZWRJbmRleD0tMX19ZWxzZXt0aGlzLnZhbHVlPUt9fX0pfSxo dG1sOmZ1bmN0aW9uKEUpe3JldHVybiBFPT09Zz8odGhpc1swXT90aGlzWzBdLmlu bmVySFRNTC5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIp Om51bGwpOnRoaXMuZW1wdHkoKS5hcHBlbmQoRSl9LHJlcGxhY2VXaXRoOmZ1bmN0 aW9uKEUpe3JldHVybiB0aGlzLmFmdGVyKEUpLnJlbW92ZSgpfSxlcTpmdW5jdGlv bihFKXtyZXR1cm4gdGhpcy5zbGljZShFLCtFKzEpfSxzbGljZTpmdW5jdGlvbigp e3JldHVybiB0aGlzLnB1c2hTdGFjayhBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBw bHkodGhpcyxhcmd1bWVudHMpLCJzbGljZSIsQXJyYXkucHJvdG90eXBlLnNsaWNl LmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oRSl7cmV0 dXJuIHRoaXMucHVzaFN0YWNrKG8ubWFwKHRoaXMsZnVuY3Rpb24oRyxGKXtyZXR1 cm4gRS5jYWxsKEcsRixHKX0pKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0 aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfSxkb21NYW5pcDpmdW5jdGlvbihKLE0s TCl7aWYodGhpc1swXSl7dmFyIEk9KHRoaXNbMF0ub3duZXJEb2N1bWVudHx8dGhp c1swXSkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLEY9by5jbGVhbihKLCh0aGlz WzBdLm93bmVyRG9jdW1lbnR8fHRoaXNbMF0pLEkpLEg9SS5maXJzdENoaWxkO2lm KEgpe2Zvcih2YXIgRz0wLEU9dGhpcy5sZW5ndGg7RzxFO0crKyl7TC5jYWxsKEso dGhpc1tHXSxIKSx0aGlzLmxlbmd0aD4xfHxHPjA/SS5jbG9uZU5vZGUodHJ1ZSk6 SSl9fWlmKEYpe28uZWFjaChGLHopfX1yZXR1cm4gdGhpcztmdW5jdGlvbiBLKE4s Tyl7cmV0dXJuIE0mJm8ubm9kZU5hbWUoTiwidGFibGUiKSYmby5ub2RlTmFtZShP LCJ0ciIpPyhOLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxOLmFw cGVuZENoaWxkKE4ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIp KSk6Tn19fTtvLmZuLmluaXQucHJvdG90eXBlPW8uZm47ZnVuY3Rpb24geihFLEYp e2lmKEYuc3JjKXtvLmFqYXgoe3VybDpGLnNyYyxhc3luYzpmYWxzZSxkYXRhVHlw ZToic2NyaXB0In0pfWVsc2V7by5nbG9iYWxFdmFsKEYudGV4dHx8Ri50ZXh0Q29u dGVudHx8Ri5pbm5lckhUTUx8fCIiKX1pZihGLnBhcmVudE5vZGUpe0YucGFyZW50 Tm9kZS5yZW1vdmVDaGlsZChGKX19ZnVuY3Rpb24gZSgpe3JldHVybiArbmV3IERh dGV9by5leHRlbmQ9by5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgSj1hcmd1bWVu dHNbMF18fHt9LEg9MSxJPWFyZ3VtZW50cy5sZW5ndGgsRT1mYWxzZSxHO2lmKHR5 cGVvZiBKPT09ImJvb2xlYW4iKXtFPUo7Sj1hcmd1bWVudHNbMV18fHt9O0g9Mn1p Zih0eXBlb2YgSiE9PSJvYmplY3QiJiYhby5pc0Z1bmN0aW9uKEopKXtKPXt9fWlm KEk9PUgpe0o9dGhpczstLUh9Zm9yKDtIPEk7SCsrKXtpZigoRz1hcmd1bWVudHNb SF0pIT1udWxsKXtmb3IodmFyIEYgaW4gRyl7dmFyIEs9SltGXSxMPUdbRl07aWYo Sj09PUwpe2NvbnRpbnVlfWlmKEUmJkwmJnR5cGVvZiBMPT09Im9iamVjdCImJiFM Lm5vZGVUeXBlKXtKW0ZdPW8uZXh0ZW5kKEUsS3x8KEwubGVuZ3RoIT1udWxsP1td Ont9KSxMKX1lbHNle2lmKEwhPT1nKXtKW0ZdPUx9fX19fXJldHVybiBKfTt2YXIg Yj0vei0/aW5kZXh8Zm9udC0/d2VpZ2h0fG9wYWNpdHl8em9vbXxsaW5lLT9oZWln aHQvaSxxPWRvY3VtZW50LmRlZmF1bHRWaWV3fHx7fSxzPU9iamVjdC5wcm90b3R5 cGUudG9TdHJpbmc7by5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oRSl7bC4k PXA7aWYoRSl7bC5qUXVlcnk9eX1yZXR1cm4gb30saXNGdW5jdGlvbjpmdW5jdGlv bihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgRnVuY3Rpb25dIn0saXNB cnJheTpmdW5jdGlvbihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgQXJy YXldIn0saXNYTUxEb2M6ZnVuY3Rpb24oRSl7cmV0dXJuIEUubm9kZVR5cGU9PT05 JiZFLmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSE9PSJIVE1MInx8ISFFLm93bmVy RG9jdW1lbnQmJm8uaXNYTUxEb2MoRS5vd25lckRvY3VtZW50KX0sZ2xvYmFsRXZh bDpmdW5jdGlvbihHKXtpZihHJiYvXFMvLnRlc3QoRykpe3ZhciBGPWRvY3VtZW50 LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudCxFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO0Uu dHlwZT0idGV4dC9qYXZhc2NyaXB0IjtpZihvLnN1cHBvcnQuc2NyaXB0RXZhbCl7 RS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShHKSl9ZWxzZXtF LnRleHQ9R31GLmluc2VydEJlZm9yZShFLEYuZmlyc3RDaGlsZCk7Ri5yZW1vdmVD aGlsZChFKX19LG5vZGVOYW1lOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIEYubm9kZU5h bWUmJkYubm9kZU5hbWUudG9VcHBlckNhc2UoKT09RS50b1VwcGVyQ2FzZSgpfSxl YWNoOmZ1bmN0aW9uKEcsSyxGKXt2YXIgRSxIPTAsST1HLmxlbmd0aDtpZihGKXtp ZihJPT09Zyl7Zm9yKEUgaW4gRyl7aWYoSy5hcHBseShHW0VdLEYpPT09ZmFsc2Up e2JyZWFrfX19ZWxzZXtmb3IoO0g8STspe2lmKEsuYXBwbHkoR1tIKytdLEYpPT09 ZmFsc2Upe2JyZWFrfX19fWVsc2V7aWYoST09PWcpe2ZvcihFIGluIEcpe2lmKEsu Y2FsbChHW0VdLEUsR1tFXSk9PT1mYWxzZSl7YnJlYWt9fX1lbHNle2Zvcih2YXIg Sj1HWzBdO0g8SSYmSy5jYWxsKEosSCxKKSE9PWZhbHNlO0o9R1srK0hdKXt9fX1y ZXR1cm4gR30scHJvcDpmdW5jdGlvbihILEksRyxGLEUpe2lmKG8uaXNGdW5jdGlv bihJKSl7ST1JLmNhbGwoSCxGKX1yZXR1cm4gdHlwZW9mIEk9PT0ibnVtYmVyIiYm Rz09ImN1ckNTUyImJiFiLnRlc3QoRSk/SSsicHgiOkl9LGNsYXNzTmFtZTp7YWRk OmZ1bmN0aW9uKEUsRil7by5lYWNoKChGfHwiIikuc3BsaXQoL1xzKy8pLGZ1bmN0 aW9uKEcsSCl7aWYoRS5ub2RlVHlwZT09MSYmIW8uY2xhc3NOYW1lLmhhcyhFLmNs YXNzTmFtZSxIKSl7RS5jbGFzc05hbWUrPShFLmNsYXNzTmFtZT8iICI6IiIpK0h9 fSl9LHJlbW92ZTpmdW5jdGlvbihFLEYpe2lmKEUubm9kZVR5cGU9PTEpe0UuY2xh c3NOYW1lPUYhPT1nP28uZ3JlcChFLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyksZnVu Y3Rpb24oRyl7cmV0dXJuICFvLmNsYXNzTmFtZS5oYXMoRixHKX0pLmpvaW4oIiAi KToiIn19LGhhczpmdW5jdGlvbihGLEUpe3JldHVybiBGJiZvLmluQXJyYXkoRSwo Ri5jbGFzc05hbWV8fEYpLnRvU3RyaW5nKCkuc3BsaXQoL1xzKy8pKT4tMX19LHN3 YXA6ZnVuY3Rpb24oSCxHLEkpe3ZhciBFPXt9O2Zvcih2YXIgRiBpbiBHKXtFW0Zd PUguc3R5bGVbRl07SC5zdHlsZVtGXT1HW0ZdfUkuY2FsbChIKTtmb3IodmFyIEYg aW4gRyl7SC5zdHlsZVtGXT1FW0ZdfX0sY3NzOmZ1bmN0aW9uKEgsRixKLEUpe2lm KEY9PSJ3aWR0aCJ8fEY9PSJoZWlnaHQiKXt2YXIgTCxHPXtwb3NpdGlvbjoiYWJz b2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxLPUY9 PSJ3aWR0aCI/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdO2Z1bmN0 aW9uIEkoKXtMPUY9PSJ3aWR0aCI/SC5vZmZzZXRXaWR0aDpILm9mZnNldEhlaWdo dDtpZihFPT09ImJvcmRlciIpe3JldHVybn1vLmVhY2goSyxmdW5jdGlvbigpe2lm KCFFKXtMLT1wYXJzZUZsb2F0KG8uY3VyQ1NTKEgsInBhZGRpbmciK3RoaXMsdHJ1 ZSkpfHwwfWlmKEU9PT0ibWFyZ2luIil7TCs9cGFyc2VGbG9hdChvLmN1ckNTUyhI LCJtYXJnaW4iK3RoaXMsdHJ1ZSkpfHwwfWVsc2V7TC09cGFyc2VGbG9hdChvLmN1 ckNTUyhILCJib3JkZXIiK3RoaXMrIldpZHRoIix0cnVlKSl8fDB9fSl9aWYoSC5v ZmZzZXRXaWR0aCE9PTApe0koKX1lbHNle28uc3dhcChILEcsSSl9cmV0dXJuIE1h dGgubWF4KDAsTWF0aC5yb3VuZChMKSl9cmV0dXJuIG8uY3VyQ1NTKEgsRixKKX0s Y3VyQ1NTOmZ1bmN0aW9uKEksRixHKXt2YXIgTCxFPUkuc3R5bGU7aWYoRj09Im9w YWNpdHkiJiYhby5zdXBwb3J0Lm9wYWNpdHkpe0w9by5hdHRyKEUsIm9wYWNpdHki KTtyZXR1cm4gTD09IiI/IjEiOkx9aWYoRi5tYXRjaCgvZmxvYXQvaSkpe0Y9d31p ZighRyYmRSYmRVtGXSl7TD1FW0ZdfWVsc2V7aWYocS5nZXRDb21wdXRlZFN0eWxl KXtpZihGLm1hdGNoKC9mbG9hdC9pKSl7Rj0iZmxvYXQifUY9Ri5yZXBsYWNlKC8o W0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCk7dmFyIE09cS5nZXRDb21wdXRl ZFN0eWxlKEksbnVsbCk7aWYoTSl7TD1NLmdldFByb3BlcnR5VmFsdWUoRil9aWYo Rj09Im9wYWNpdHkiJiZMPT0iIil7TD0iMSJ9fWVsc2V7aWYoSS5jdXJyZW50U3R5 bGUpe3ZhciBKPUYucmVwbGFjZSgvXC0oXHcpL2csZnVuY3Rpb24oTixPKXtyZXR1 cm4gTy50b1VwcGVyQ2FzZSgpfSk7TD1JLmN1cnJlbnRTdHlsZVtGXXx8SS5jdXJy ZW50U3R5bGVbSl07aWYoIS9eXGQrKHB4KT8kL2kudGVzdChMKSYmL15cZC8udGVz dChMKSl7dmFyIEg9RS5sZWZ0LEs9SS5ydW50aW1lU3R5bGUubGVmdDtJLnJ1bnRp bWVTdHlsZS5sZWZ0PUkuY3VycmVudFN0eWxlLmxlZnQ7RS5sZWZ0PUx8fDA7TD1F LnBpeGVsTGVmdCsicHgiO0UubGVmdD1IO0kucnVudGltZVN0eWxlLmxlZnQ9S319 fX1yZXR1cm4gTH0sY2xlYW46ZnVuY3Rpb24oRixLLEkpe0s9S3x8ZG9jdW1lbnQ7 aWYodHlwZW9mIEsuY3JlYXRlRWxlbWVudD09PSJ1bmRlZmluZWQiKXtLPUsub3du ZXJEb2N1bWVudHx8S1swXSYmS1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudH1p ZighSSYmRi5sZW5ndGg9PT0xJiZ0eXBlb2YgRlswXT09PSJzdHJpbmciKXt2YXIg SD0vXjwoXHcrKVxzKlwvPz4kLy5leGVjKEZbMF0pO2lmKEgpe3JldHVybltLLmNy ZWF0ZUVsZW1lbnQoSFsxXSldfX12YXIgRz1bXSxFPVtdLEw9Sy5jcmVhdGVFbGVt ZW50KCJkaXYiKTtvLmVhY2goRixmdW5jdGlvbihQLFMpe2lmKHR5cGVvZiBTPT09 Im51bWJlciIpe1MrPSIifWlmKCFTKXtyZXR1cm59aWYodHlwZW9mIFM9PT0ic3Ry aW5nIil7Uz1TLnJlcGxhY2UoLyg8KFx3KylbXj5dKj8pXC8+L2csZnVuY3Rpb24o VSxWLFQpe3JldHVybiBULm1hdGNoKC9eKGFiYnJ8YnJ8Y29sfGltZ3xpbnB1dHxs aW5rfG1ldGF8cGFyYW18aHJ8YXJlYXxlbWJlZCkkL2kpP1U6VisiPjwvIitUKyI+ In0pO3ZhciBPPVMucmVwbGFjZSgvXlxzKy8sIiIpLnN1YnN0cmluZygwLDEwKS50 b0xvd2VyQ2FzZSgpO3ZhciBRPSFPLmluZGV4T2YoIjxvcHQiKSYmWzEsIjxzZWxl Y3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXXx8IU8uaW5kZXhP ZigiPGxlZyIpJiZbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il18fE8ubWF0 Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8pJiZbMSwiPHRhYmxl PiIsIjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjx0ciIpJiZbMiwiPHRhYmxlPjx0 Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il18fCghTy5pbmRleE9mKCI8dGQiKXx8 IU8uaW5kZXhPZigiPHRoIikpJiZbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90 cj48L3Rib2R5PjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjxjb2wiKSYmWzIsIjx0 YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3Rh YmxlPiJdfHwhby5zdXBwb3J0Lmh0bWxTZXJpYWxpemUmJlsxLCJkaXY8ZGl2PiIs IjwvZGl2PiJdfHxbMCwiIiwiIl07TC5pbm5lckhUTUw9UVsxXStTK1FbMl07d2hp bGUoUVswXS0tKXtMPUwubGFzdENoaWxkfWlmKCFvLnN1cHBvcnQudGJvZHkpe3Zh ciBSPS88dGJvZHkvaS50ZXN0KFMpLE49IU8uaW5kZXhPZigiPHRhYmxlIikmJiFS P0wuZmlyc3RDaGlsZCYmTC5maXJzdENoaWxkLmNoaWxkTm9kZXM6UVsxXT09Ijx0 YWJsZT4iJiYhUj9MLmNoaWxkTm9kZXM6W107Zm9yKHZhciBNPU4ubGVuZ3RoLTE7 TT49MDstLU0pe2lmKG8ubm9kZU5hbWUoTltNXSwidGJvZHkiKSYmIU5bTV0uY2hp bGROb2Rlcy5sZW5ndGgpe05bTV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChOW01d KX19fWlmKCFvLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJi9eXHMvLnRlc3Qo Uykpe0wuaW5zZXJ0QmVmb3JlKEsuY3JlYXRlVGV4dE5vZGUoUy5tYXRjaCgvXlxz Ki8pWzBdKSxMLmZpcnN0Q2hpbGQpfVM9by5tYWtlQXJyYXkoTC5jaGlsZE5vZGVz KX1pZihTLm5vZGVUeXBlKXtHLnB1c2goUyl9ZWxzZXtHPW8ubWVyZ2UoRyxTKX19 KTtpZihJKXtmb3IodmFyIEo9MDtHW0pdO0orKyl7aWYoby5ub2RlTmFtZShHW0pd LCJzY3JpcHQiKSYmKCFHW0pdLnR5cGV8fEdbSl0udHlwZS50b0xvd2VyQ2FzZSgp PT09InRleHQvamF2YXNjcmlwdCIpKXtFLnB1c2goR1tKXS5wYXJlbnROb2RlP0db Sl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChHW0pdKTpHW0pdKX1lbHNle2lmKEdb Sl0ubm9kZVR5cGU9PT0xKXtHLnNwbGljZS5hcHBseShHLFtKKzEsMF0uY29uY2F0 KG8ubWFrZUFycmF5KEdbSl0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIp KSkpfUkuYXBwZW5kQ2hpbGQoR1tKXSl9fXJldHVybiBFfXJldHVybiBHfSxhdHRy OmZ1bmN0aW9uKEosRyxLKXtpZighSnx8Si5ub2RlVHlwZT09M3x8Si5ub2RlVHlw ZT09OCl7cmV0dXJuIGd9dmFyIEg9IW8uaXNYTUxEb2MoSiksTD1LIT09ZztHPUgm Jm8ucHJvcHNbR118fEc7aWYoSi50YWdOYW1lKXt2YXIgRj0vaHJlZnxzcmN8c3R5 bGUvLnRlc3QoRyk7aWYoRz09InNlbGVjdGVkIiYmSi5wYXJlbnROb2RlKXtKLnBh cmVudE5vZGUuc2VsZWN0ZWRJbmRleH1pZihHIGluIEomJkgmJiFGKXtpZihMKXtp ZihHPT0idHlwZSImJm8ubm9kZU5hbWUoSiwiaW5wdXQiKSYmSi5wYXJlbnROb2Rl KXt0aHJvdyJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQifUpbR109S31p ZihvLm5vZGVOYW1lKEosImZvcm0iKSYmSi5nZXRBdHRyaWJ1dGVOb2RlKEcpKXty ZXR1cm4gSi5nZXRBdHRyaWJ1dGVOb2RlKEcpLm5vZGVWYWx1ZX1pZihHPT0idGFi SW5kZXgiKXt2YXIgST1KLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4Iik7cmV0 dXJuIEkmJkkuc3BlY2lmaWVkP0kudmFsdWU6Si5ub2RlTmFtZS5tYXRjaCgvKGJ1 dHRvbnxpbnB1dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKS9pKT8wOkoubm9kZU5h bWUubWF0Y2goL14oYXxhcmVhKSQvaSkmJkouaHJlZj8wOmd9cmV0dXJuIEpbR119 aWYoIW8uc3VwcG9ydC5zdHlsZSYmSCYmRz09InN0eWxlIil7cmV0dXJuIG8uYXR0 cihKLnN0eWxlLCJjc3NUZXh0IixLKX1pZihMKXtKLnNldEF0dHJpYnV0ZShHLCIi K0spfXZhciBFPSFvLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQmJkgmJkY/Si5nZXRB dHRyaWJ1dGUoRywyKTpKLmdldEF0dHJpYnV0ZShHKTtyZXR1cm4gRT09PW51bGw/ ZzpFfWlmKCFvLnN1cHBvcnQub3BhY2l0eSYmRz09Im9wYWNpdHkiKXtpZihMKXtK Lnpvb209MTtKLmZpbHRlcj0oSi5maWx0ZXJ8fCIiKS5yZXBsYWNlKC9hbHBoYVwo W14pXSpcKS8sIiIpKyhwYXJzZUludChLKSsiIj09Ik5hTiI/IiI6ImFscGhhKG9w YWNpdHk9IitLKjEwMCsiKSIpfXJldHVybiBKLmZpbHRlciYmSi5maWx0ZXIuaW5k ZXhPZigib3BhY2l0eT0iKT49MD8ocGFyc2VGbG9hdChKLmZpbHRlci5tYXRjaCgv b3BhY2l0eT0oW14pXSopLylbMV0pLzEwMCkrIiI6IiJ9Rz1HLnJlcGxhY2UoLy0o W2Etel0pL2lnLGZ1bmN0aW9uKE0sTil7cmV0dXJuIE4udG9VcHBlckNhc2UoKX0p O2lmKEwpe0pbR109S31yZXR1cm4gSltHXX0sdHJpbTpmdW5jdGlvbihFKXtyZXR1 cm4oRXx8IiIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sbWFrZUFycmF5OmZ1 bmN0aW9uKEcpe3ZhciBFPVtdO2lmKEchPW51bGwpe3ZhciBGPUcubGVuZ3RoO2lm KEY9PW51bGx8fHR5cGVvZiBHPT09InN0cmluZyJ8fG8uaXNGdW5jdGlvbihHKXx8 Ry5zZXRJbnRlcnZhbCl7RVswXT1HfWVsc2V7d2hpbGUoRil7RVstLUZdPUdbRl19 fX1yZXR1cm4gRX0saW5BcnJheTpmdW5jdGlvbihHLEgpe2Zvcih2YXIgRT0wLEY9 SC5sZW5ndGg7RTxGO0UrKyl7aWYoSFtFXT09PUcpe3JldHVybiBFfX1yZXR1cm4g LTF9LG1lcmdlOmZ1bmN0aW9uKEgsRSl7dmFyIEY9MCxHLEk9SC5sZW5ndGg7aWYo IW8uc3VwcG9ydC5nZXRBbGwpe3doaWxlKChHPUVbRisrXSkhPW51bGwpe2lmKEcu bm9kZVR5cGUhPTgpe0hbSSsrXT1HfX19ZWxzZXt3aGlsZSgoRz1FW0YrK10pIT1u dWxsKXtIW0krK109R319cmV0dXJuIEh9LHVuaXF1ZTpmdW5jdGlvbihLKXt2YXIg Rj1bXSxFPXt9O3RyeXtmb3IodmFyIEc9MCxIPUsubGVuZ3RoO0c8SDtHKyspe3Zh ciBKPW8uZGF0YShLW0ddKTtpZighRVtKXSl7RVtKXT10cnVlO0YucHVzaChLW0dd KX19fWNhdGNoKEkpe0Y9S31yZXR1cm4gRn0sZ3JlcDpmdW5jdGlvbihGLEosRSl7 dmFyIEc9W107Zm9yKHZhciBIPTAsST1GLmxlbmd0aDtIPEk7SCsrKXtpZighRSE9 IUooRltIXSxIKSl7Ry5wdXNoKEZbSF0pfX1yZXR1cm4gR30sbWFwOmZ1bmN0aW9u KEUsSil7dmFyIEY9W107Zm9yKHZhciBHPTAsSD1FLmxlbmd0aDtHPEg7RysrKXt2 YXIgST1KKEVbR10sRyk7aWYoSSE9bnVsbCl7RltGLmxlbmd0aF09SX19cmV0dXJu IEYuY29uY2F0LmFwcGx5KFtdLEYpfX0pO3ZhciBDPW5hdmlnYXRvci51c2VyQWdl bnQudG9Mb3dlckNhc2UoKTtvLmJyb3dzZXI9e3ZlcnNpb246KEMubWF0Y2goLy4r KD86cnZ8aXR8cmF8aWUpW1wvOiBdKFtcZC5dKykvKXx8WzAsIjAiXSlbMV0sc2Fm YXJpOi93ZWJraXQvLnRlc3QoQyksb3BlcmE6L29wZXJhLy50ZXN0KEMpLG1zaWU6 L21zaWUvLnRlc3QoQykmJiEvb3BlcmEvLnRlc3QoQyksbW96aWxsYTovbW96aWxs YS8udGVzdChDKSYmIS8oY29tcGF0aWJsZXx3ZWJraXQpLy50ZXN0KEMpfTtvLmVh Y2goe3BhcmVudDpmdW5jdGlvbihFKXtyZXR1cm4gRS5wYXJlbnROb2RlfSxwYXJl bnRzOmZ1bmN0aW9uKEUpe3JldHVybiBvLmRpcihFLCJwYXJlbnROb2RlIil9LG5l eHQ6ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubnRoKEUsMiwibmV4dFNpYmxpbmciKX0s cHJldjpmdW5jdGlvbihFKXtyZXR1cm4gby5udGgoRSwyLCJwcmV2aW91c1NpYmxp bmciKX0sbmV4dEFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwibmV4dFNp YmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwicHJl dmlvdXNTaWJsaW5nIil9LHNpYmxpbmdzOmZ1bmN0aW9uKEUpe3JldHVybiBvLnNp YmxpbmcoRS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsRSl9LGNoaWxkcmVuOmZ1bmN0 aW9uKEUpe3JldHVybiBvLnNpYmxpbmcoRS5maXJzdENoaWxkKX0sY29udGVudHM6 ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubm9kZU5hbWUoRSwiaWZyYW1lIik/RS5jb250 ZW50RG9jdW1lbnR8fEUuY29udGVudFdpbmRvdy5kb2N1bWVudDpvLm1ha2VBcnJh eShFLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oRSxGKXtvLmZuW0VdPWZ1bmN0aW9u KEcpe3ZhciBIPW8ubWFwKHRoaXMsRik7aWYoRyYmdHlwZW9mIEc9PSJzdHJpbmci KXtIPW8ubXVsdGlGaWx0ZXIoRyxIKX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soby51 bmlxdWUoSCksRSxHKX19KTtvLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBl bmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVy OiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihFLEYp e28uZm5bRV09ZnVuY3Rpb24oRyl7dmFyIEo9W10sTD1vKEcpO2Zvcih2YXIgSz0w LEg9TC5sZW5ndGg7SzxIO0srKyl7dmFyIEk9KEs+MD90aGlzLmNsb25lKHRydWUp OnRoaXMpLmdldCgpO28uZm5bRl0uYXBwbHkobyhMW0tdKSxJKTtKPUouY29uY2F0 KEkpfXJldHVybiB0aGlzLnB1c2hTdGFjayhKLEUsRyl9fSk7by5lYWNoKHtyZW1v dmVBdHRyOmZ1bmN0aW9uKEUpe28uYXR0cih0aGlzLEUsIiIpO2lmKHRoaXMubm9k ZVR5cGU9PTEpe3RoaXMucmVtb3ZlQXR0cmlidXRlKEUpfX0sYWRkQ2xhc3M6ZnVu Y3Rpb24oRSl7by5jbGFzc05hbWUuYWRkKHRoaXMsRSl9LHJlbW92ZUNsYXNzOmZ1 bmN0aW9uKEUpe28uY2xhc3NOYW1lLnJlbW92ZSh0aGlzLEUpfSx0b2dnbGVDbGFz czpmdW5jdGlvbihGLEUpe2lmKHR5cGVvZiBFIT09ImJvb2xlYW4iKXtFPSFvLmNs YXNzTmFtZS5oYXModGhpcyxGKX1vLmNsYXNzTmFtZVtFPyJhZGQiOiJyZW1vdmUi XSh0aGlzLEYpfSxyZW1vdmU6ZnVuY3Rpb24oRSl7aWYoIUV8fG8uZmlsdGVyKEUs W3RoaXNdKS5sZW5ndGgpe28oIioiLHRoaXMpLmFkZChbdGhpc10pLmVhY2goZnVu Y3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzKTtvLnJlbW92ZURhdGEodGhpcyl9 KTtpZih0aGlzLnBhcmVudE5vZGUpe3RoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGls ZCh0aGlzKX19fSxlbXB0eTpmdW5jdGlvbigpe28odGhpcykuY2hpbGRyZW4oKS5y ZW1vdmUoKTt3aGlsZSh0aGlzLmZpcnN0Q2hpbGQpe3RoaXMucmVtb3ZlQ2hpbGQo dGhpcy5maXJzdENoaWxkKX19fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5lYWNoKEYsYXJndW1lbnRzKX19KTtmdW5jdGlvbiBq KEUsRil7cmV0dXJuIEVbMF0mJnBhcnNlSW50KG8uY3VyQ1NTKEVbMF0sRix0cnVl KSwxMCl8fDB9dmFyIGg9ImpRdWVyeSIrZSgpLHY9MCxBPXt9O28uZXh0ZW5kKHtj YWNoZTp7fSxkYXRhOmZ1bmN0aW9uKEYsRSxHKXtGPUY9PWw/QTpGO3ZhciBIPUZb aF07aWYoIUgpe0g9RltoXT0rK3Z9aWYoRSYmIW8uY2FjaGVbSF0pe28uY2FjaGVb SF09e319aWYoRyE9PWcpe28uY2FjaGVbSF1bRV09R31yZXR1cm4gRT9vLmNhY2hl W0hdW0VdOkh9LHJlbW92ZURhdGE6ZnVuY3Rpb24oRixFKXtGPUY9PWw/QTpGO3Zh ciBIPUZbaF07aWYoRSl7aWYoby5jYWNoZVtIXSl7ZGVsZXRlIG8uY2FjaGVbSF1b RV07RT0iIjtmb3IoRSBpbiBvLmNhY2hlW0hdKXticmVha31pZighRSl7by5yZW1v dmVEYXRhKEYpfX19ZWxzZXt0cnl7ZGVsZXRlIEZbaF19Y2F0Y2goRyl7aWYoRi5y ZW1vdmVBdHRyaWJ1dGUpe0YucmVtb3ZlQXR0cmlidXRlKGgpfX1kZWxldGUgby5j YWNoZVtIXX19LHF1ZXVlOmZ1bmN0aW9uKEYsRSxIKXtpZihGKXtFPShFfHwiZngi KSsicXVldWUiO3ZhciBHPW8uZGF0YShGLEUpO2lmKCFHfHxvLmlzQXJyYXkoSCkp e0c9by5kYXRhKEYsRSxvLm1ha2VBcnJheShIKSl9ZWxzZXtpZihIKXtHLnB1c2go SCl9fX1yZXR1cm4gR30sZGVxdWV1ZTpmdW5jdGlvbihILEcpe3ZhciBFPW8ucXVl dWUoSCxHKSxGPUUuc2hpZnQoKTtpZighR3x8Rz09PSJmeCIpe0Y9RVswXX1pZihG IT09Zyl7Ri5jYWxsKEgpfX19KTtvLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihF LEcpe3ZhciBIPUUuc3BsaXQoIi4iKTtIWzFdPUhbMV0/Ii4iK0hbMV06IiI7aWYo Rz09PWcpe3ZhciBGPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK0hbMV0r IiEiLFtIWzBdXSk7aWYoRj09PWcmJnRoaXMubGVuZ3RoKXtGPW8uZGF0YSh0aGlz WzBdLEUpfXJldHVybiBGPT09ZyYmSFsxXT90aGlzLmRhdGEoSFswXSk6Rn1lbHNl e3JldHVybiB0aGlzLnRyaWdnZXIoInNldERhdGEiK0hbMV0rIiEiLFtIWzBdLEdd KS5lYWNoKGZ1bmN0aW9uKCl7by5kYXRhKHRoaXMsRSxHKX0pfX0scmVtb3ZlRGF0 YTpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5yZW1v dmVEYXRhKHRoaXMsRSl9KX0scXVldWU6ZnVuY3Rpb24oRSxGKXtpZih0eXBlb2Yg RSE9PSJzdHJpbmciKXtGPUU7RT0iZngifWlmKEY9PT1nKXtyZXR1cm4gby5xdWV1 ZSh0aGlzWzBdLEUpfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgRz1v LnF1ZXVlKHRoaXMsRSxGKTtpZihFPT0iZngiJiZHLmxlbmd0aD09MSl7R1swXS5j YWxsKHRoaXMpfX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmVh Y2goZnVuY3Rpb24oKXtvLmRlcXVldWUodGhpcyxFKX0pfX0pOwovKgogKiBTaXp6 bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSAtIHYwLjkuMwogKiAgQ29weXJpZ2h0IDIw MDksIFRoZSBEb2pvIEZvdW5kYXRpb24KICogIFJlbGVhc2VkIHVuZGVyIHRoZSBN SVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNlcy4KICogIE1vcmUgaW5mb3JtYXRpb246 IGh0dHA6Ly9zaXp6bGVqcy5jb20vCiAqLwooZnVuY3Rpb24oKXt2YXIgUj0vKCg/ OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18Wyci XVteJyJdKlsnIl18W15bXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xb Pit+XSkoXHMqLFxzKik/L2csTD0wLEg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmlu Zzt2YXIgRj1mdW5jdGlvbihZLFUsYWIsYWMpe2FiPWFifHxbXTtVPVV8fGRvY3Vt ZW50O2lmKFUubm9kZVR5cGUhPT0xJiZVLm5vZGVUeXBlIT09OSl7cmV0dXJuW119 aWYoIVl8fHR5cGVvZiBZIT09InN0cmluZyIpe3JldHVybiBhYn12YXIgWj1bXSxX LGFmLGFpLFQsYWQsVixYPXRydWU7Ui5sYXN0SW5kZXg9MDt3aGlsZSgoVz1SLmV4 ZWMoWSkpIT09bnVsbCl7Wi5wdXNoKFdbMV0pO2lmKFdbMl0pe1Y9UmVnRXhwLnJp Z2h0Q29udGV4dDticmVha319aWYoWi5sZW5ndGg+MSYmTS5leGVjKFkpKXtpZiha Lmxlbmd0aD09PTImJkkucmVsYXRpdmVbWlswXV0pe2FmPUooWlswXStaWzFdLFUp fWVsc2V7YWY9SS5yZWxhdGl2ZVtaWzBdXT9bVV06RihaLnNoaWZ0KCksVSk7d2hp bGUoWi5sZW5ndGgpe1k9Wi5zaGlmdCgpO2lmKEkucmVsYXRpdmVbWV0pe1krPVou c2hpZnQoKX1hZj1KKFksYWYpfX19ZWxzZXt2YXIgYWU9YWM/e2V4cHI6Wi5wb3Ao KSxzZXQ6RShhYyl9OkYuZmluZChaLnBvcCgpLFoubGVuZ3RoPT09MSYmVS5wYXJl bnROb2RlP1UucGFyZW50Tm9kZTpVLFEoVSkpO2FmPUYuZmlsdGVyKGFlLmV4cHIs YWUuc2V0KTtpZihaLmxlbmd0aD4wKXthaT1FKGFmKX1lbHNle1g9ZmFsc2V9d2hp bGUoWi5sZW5ndGgpe3ZhciBhaD1aLnBvcCgpLGFnPWFoO2lmKCFJLnJlbGF0aXZl W2FoXSl7YWg9IiJ9ZWxzZXthZz1aLnBvcCgpfWlmKGFnPT1udWxsKXthZz1VfUku cmVsYXRpdmVbYWhdKGFpLGFnLFEoVSkpfX1pZighYWkpe2FpPWFmfWlmKCFhaSl7 dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiso YWh8fFkpfWlmKEguY2FsbChhaSk9PT0iW29iamVjdCBBcnJheV0iKXtpZighWCl7 YWIucHVzaC5hcHBseShhYixhaSl9ZWxzZXtpZihVLm5vZGVUeXBlPT09MSl7Zm9y KHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJihhaVthYV09 PT10cnVlfHxhaVthYV0ubm9kZVR5cGU9PT0xJiZLKFUsYWlbYWFdKSkpe2FiLnB1 c2goYWZbYWFdKX19fWVsc2V7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsr KXtpZihhaVthYV0mJmFpW2FhXS5ub2RlVHlwZT09PTEpe2FiLnB1c2goYWZbYWFd KX19fX19ZWxzZXtFKGFpLGFiKX1pZihWKXtGKFYsVSxhYixhYyk7aWYoRyl7aGFz RHVwbGljYXRlPWZhbHNlO2FiLnNvcnQoRyk7aWYoaGFzRHVwbGljYXRlKXtmb3Io dmFyIGFhPTE7YWE8YWIubGVuZ3RoO2FhKyspe2lmKGFiW2FhXT09PWFiW2FhLTFd KXthYi5zcGxpY2UoYWEtLSwxKX19fX19cmV0dXJuIGFifTtGLm1hdGNoZXM9ZnVu Y3Rpb24oVCxVKXtyZXR1cm4gRihULG51bGwsbnVsbCxVKX07Ri5maW5kPWZ1bmN0 aW9uKGFhLFQsYWIpe3ZhciBaLFg7aWYoIWFhKXtyZXR1cm5bXX1mb3IodmFyIFc9 MCxWPUkub3JkZXIubGVuZ3RoO1c8VjtXKyspe3ZhciBZPUkub3JkZXJbV10sWDtp ZigoWD1JLm1hdGNoW1ldLmV4ZWMoYWEpKSl7dmFyIFU9UmVnRXhwLmxlZnRDb250 ZXh0O2lmKFUuc3Vic3RyKFUubGVuZ3RoLTEpIT09IlxcIil7WFsxXT0oWFsxXXx8 IiIpLnJlcGxhY2UoL1xcL2csIiIpO1o9SS5maW5kW1ldKFgsVCxhYik7aWYoWiE9 bnVsbCl7YWE9YWEucmVwbGFjZShJLm1hdGNoW1ldLCIiKTticmVha319fX1pZigh Wil7Wj1ULmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil9cmV0dXJue3NldDpaLGV4 cHI6YWF9fTtGLmZpbHRlcj1mdW5jdGlvbihhZCxhYyxhZyxXKXt2YXIgVj1hZCxh aT1bXSxhYT1hYyxZLFQsWj1hYyYmYWNbMF0mJlEoYWNbMF0pO3doaWxlKGFkJiZh Yy5sZW5ndGgpe2Zvcih2YXIgYWIgaW4gSS5maWx0ZXIpe2lmKChZPUkubWF0Y2hb YWJdLmV4ZWMoYWQpKSE9bnVsbCl7dmFyIFU9SS5maWx0ZXJbYWJdLGFoLGFmO1Q9 ZmFsc2U7aWYoYWE9PWFpKXthaT1bXX1pZihJLnByZUZpbHRlclthYl0pe1k9SS5w cmVGaWx0ZXJbYWJdKFksYWEsYWcsYWksVyxaKTtpZighWSl7VD1haD10cnVlfWVs c2V7aWYoWT09PXRydWUpe2NvbnRpbnVlfX19aWYoWSl7Zm9yKHZhciBYPTA7KGFm PWFhW1hdKSE9bnVsbDtYKyspe2lmKGFmKXthaD1VKGFmLFksWCxhYSk7dmFyIGFl PVdeISFhaDtpZihhZyYmYWghPW51bGwpe2lmKGFlKXtUPXRydWV9ZWxzZXthYVtY XT1mYWxzZX19ZWxzZXtpZihhZSl7YWkucHVzaChhZik7VD10cnVlfX19fX1pZihh aCE9PWcpe2lmKCFhZyl7YWE9YWl9YWQ9YWQucmVwbGFjZShJLm1hdGNoW2FiXSwi Iik7aWYoIVQpe3JldHVybltdfWJyZWFrfX19aWYoYWQ9PVYpe2lmKFQ9PW51bGwp e3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIr YWR9ZWxzZXticmVha319Vj1hZH1yZXR1cm4gYWF9O3ZhciBJPUYuc2VsZWN0b3Jz PXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdc dTAwYzAtXHVGRkZGXy1dfFxcLikrKS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1c dUZGRkZfLV18XFwuKSspLyxOQU1FOi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMw LVx1RkZGRl8tXXxcXC4pKylbJyJdKlxdLyxBVFRSOi9cW1xzKigoPzpbXHdcdTAw YzAtXHVGRkZGXy1dfFxcLikrKVxzKig/OihcUz89KVxzKihbJyJdKikoLio/KVwz fClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKl8tXXxcXC4pKykv LENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XCgoZXZlbnxv ZGR8W1xkbistXSopXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0 fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W14tXXwkKS8sUFNFVURPOi86KCg/ Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspKD86XCgoWyciXSopKCg/OlwoW15c KV0rXCl8W15cMlwoXCldKikrKVwyXCkpPy99LGF0dHJNYXA6eyJjbGFzcyI6ImNs YXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0 aW9uKFQpe3JldHVybiBULmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0scmVsYXRpdmU6 eyIrIjpmdW5jdGlvbihhYSxULFope3ZhciBYPXR5cGVvZiBUPT09InN0cmluZyIs YWI9WCYmIS9cVy8udGVzdChUKSxZPVgmJiFhYjtpZihhYiYmIVope1Q9VC50b1Vw cGVyQ2FzZSgpfWZvcih2YXIgVz0wLFY9YWEubGVuZ3RoLFU7VzxWO1crKyl7aWYo KFU9YWFbV10pKXt3aGlsZSgoVT1VLnByZXZpb3VzU2libGluZykmJlUubm9kZVR5 cGUhPT0xKXt9YWFbV109WXx8VSYmVS5ub2RlTmFtZT09PVQ/VXx8ZmFsc2U6VT09 PVR9fWlmKFkpe0YuZmlsdGVyKFQsYWEsdHJ1ZSl9fSwiPiI6ZnVuY3Rpb24oWixV LGFhKXt2YXIgWD10eXBlb2YgVT09PSJzdHJpbmciO2lmKFgmJiEvXFcvLnRlc3Qo VSkpe1U9YWE/VTpVLnRvVXBwZXJDYXNlKCk7Zm9yKHZhciBWPTAsVD1aLmxlbmd0 aDtWPFQ7VisrKXt2YXIgWT1aW1ZdO2lmKFkpe3ZhciBXPVkucGFyZW50Tm9kZTta W1ZdPVcubm9kZU5hbWU9PT1VP1c6ZmFsc2V9fX1lbHNle2Zvcih2YXIgVj0wLFQ9 Wi5sZW5ndGg7VjxUO1YrKyl7dmFyIFk9WltWXTtpZihZKXtaW1ZdPVg/WS5wYXJl bnROb2RlOlkucGFyZW50Tm9kZT09PVV9fWlmKFgpe0YuZmlsdGVyKFUsWix0cnVl KX19fSwiIjpmdW5jdGlvbihXLFUsWSl7dmFyIFY9TCsrLFQ9UztpZighVS5tYXRj aCgvXFcvKSl7dmFyIFg9VT1ZP1U6VS50b1VwcGVyQ2FzZSgpO1Q9UH1UKCJwYXJl bnROb2RlIixVLFYsVyxYLFkpfSwifiI6ZnVuY3Rpb24oVyxVLFkpe3ZhciBWPUwr KyxUPVM7aWYodHlwZW9mIFU9PT0ic3RyaW5nIiYmIVUubWF0Y2goL1xXLykpe3Zh ciBYPVU9WT9VOlUudG9VcHBlckNhc2UoKTtUPVB9VCgicHJldmlvdXNTaWJsaW5n IixVLFYsVyxYLFkpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oVSxWLFcpe2lmKHR5cGVv ZiBWLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFXKXt2YXIgVD1WLmdl dEVsZW1lbnRCeUlkKFVbMV0pO3JldHVybiBUP1tUXTpbXX19LE5BTUU6ZnVuY3Rp b24oVixZLFope2lmKHR5cGVvZiBZLmdldEVsZW1lbnRzQnlOYW1lIT09InVuZGVm aW5lZCIpe3ZhciBVPVtdLFg9WS5nZXRFbGVtZW50c0J5TmFtZShWWzFdKTtmb3Io dmFyIFc9MCxUPVgubGVuZ3RoO1c8VDtXKyspe2lmKFhbV10uZ2V0QXR0cmlidXRl KCJuYW1lIik9PT1WWzFdKXtVLnB1c2goWFtXXSl9fXJldHVybiBVLmxlbmd0aD09 PTA/bnVsbDpVfX0sVEFHOmZ1bmN0aW9uKFQsVSl7cmV0dXJuIFUuZ2V0RWxlbWVu dHNCeVRhZ05hbWUoVFsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKFcs VSxWLFQsWixhYSl7Vz0iICIrV1sxXS5yZXBsYWNlKC9cXC9nLCIiKSsiICI7aWYo YWEpe3JldHVybiBXfWZvcih2YXIgWD0wLFk7KFk9VVtYXSkhPW51bGw7WCsrKXtp ZihZKXtpZihaXihZLmNsYXNzTmFtZSYmKCIgIitZLmNsYXNzTmFtZSsiICIpLmlu ZGV4T2YoVyk+PTApKXtpZighVil7VC5wdXNoKFkpfX1lbHNle2lmKFYpe1VbWF09 ZmFsc2V9fX19cmV0dXJuIGZhbHNlfSxJRDpmdW5jdGlvbihUKXtyZXR1cm4gVFsx XS5yZXBsYWNlKC9cXC9nLCIiKX0sVEFHOmZ1bmN0aW9uKFUsVCl7Zm9yKHZhciBW PTA7VFtWXT09PWZhbHNlO1YrKyl7fXJldHVybiBUW1ZdJiZRKFRbVl0pP1VbMV06 VVsxXS50b1VwcGVyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihUKXtpZihUWzFdPT0i bnRoIil7dmFyIFU9LygtPykoXGQqKW4oKD86XCt8LSk/XGQqKS8uZXhlYyhUWzJd PT0iZXZlbiImJiIybiJ8fFRbMl09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3Qo VFsyXSkmJiIwbisiK1RbMl18fFRbMl0pO1RbMl09KFVbMV0rKFVbMl18fDEpKS0w O1RbM109VVszXS0wfVRbMF09TCsrO3JldHVybiBUfSxBVFRSOmZ1bmN0aW9uKFgs VSxWLFQsWSxaKXt2YXIgVz1YWzFdLnJlcGxhY2UoL1xcL2csIiIpO2lmKCFaJiZJ LmF0dHJNYXBbV10pe1hbMV09SS5hdHRyTWFwW1ddfWlmKFhbMl09PT0ifj0iKXtY WzRdPSIgIitYWzRdKyIgIn1yZXR1cm4gWH0sUFNFVURPOmZ1bmN0aW9uKFgsVSxW LFQsWSl7aWYoWFsxXT09PSJub3QiKXtpZihYWzNdLm1hdGNoKFIpLmxlbmd0aD4x fHwvXlx3Ly50ZXN0KFhbM10pKXtYWzNdPUYoWFszXSxudWxsLG51bGwsVSl9ZWxz ZXt2YXIgVz1GLmZpbHRlcihYWzNdLFUsVix0cnVlXlkpO2lmKCFWKXtULnB1c2gu YXBwbHkoVCxXKX1yZXR1cm4gZmFsc2V9fWVsc2V7aWYoSS5tYXRjaC5QT1MudGVz dChYWzBdKXx8SS5tYXRjaC5DSElMRC50ZXN0KFhbMF0pKXtyZXR1cm4gdHJ1ZX19 cmV0dXJuIFh9LFBPUzpmdW5jdGlvbihUKXtULnVuc2hpZnQodHJ1ZSk7cmV0dXJu IFR9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKFQpe3JldHVybiBULmRpc2Fi bGVkPT09ZmFsc2UmJlQudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlv bihUKXtyZXR1cm4gVC5kaXNhYmxlZD09PXRydWV9LGNoZWNrZWQ6ZnVuY3Rpb24o VCl7cmV0dXJuIFQuY2hlY2tlZD09PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKFQp e1QucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBULnNlbGVjdGVkPT09 dHJ1ZX0scGFyZW50OmZ1bmN0aW9uKFQpe3JldHVybiAhIVQuZmlyc3RDaGlsZH0s ZW1wdHk6ZnVuY3Rpb24oVCl7cmV0dXJuICFULmZpcnN0Q2hpbGR9LGhhczpmdW5j dGlvbihWLFUsVCl7cmV0dXJuICEhRihUWzNdLFYpLmxlbmd0aH0saGVhZGVyOmZ1 bmN0aW9uKFQpe3JldHVybi9oXGQvaS50ZXN0KFQubm9kZU5hbWUpfSx0ZXh0OmZ1 bmN0aW9uKFQpe3JldHVybiJ0ZXh0Ij09PVQudHlwZX0scmFkaW86ZnVuY3Rpb24o VCl7cmV0dXJuInJhZGlvIj09PVQudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oVCl7 cmV0dXJuImNoZWNrYm94Ij09PVQudHlwZX0sZmlsZTpmdW5jdGlvbihUKXtyZXR1 cm4iZmlsZSI9PT1ULnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKFQpe3JldHVybiJw YXNzd29yZCI9PT1ULnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihUKXtyZXR1cm4ic3Vi bWl0Ij09PVQudHlwZX0saW1hZ2U6ZnVuY3Rpb24oVCl7cmV0dXJuImltYWdlIj09 PVQudHlwZX0scmVzZXQ6ZnVuY3Rpb24oVCl7cmV0dXJuInJlc2V0Ij09PVQudHlw ZX0sYnV0dG9uOmZ1bmN0aW9uKFQpe3JldHVybiJidXR0b24iPT09VC50eXBlfHxU Lm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT0iQlVUVE9OIn0saW5wdXQ6ZnVuY3Rp b24oVCl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50ZXN0 KFQubm9kZU5hbWUpfX0sc2V0RmlsdGVyczp7Zmlyc3Q6ZnVuY3Rpb24oVSxUKXty ZXR1cm4gVD09PTB9LGxhc3Q6ZnVuY3Rpb24oVixVLFQsVyl7cmV0dXJuIFU9PT1X Lmxlbmd0aC0xfSxldmVuOmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFQlMj09PTB9LG9k ZDpmdW5jdGlvbihVLFQpe3JldHVybiBUJTI9PT0xfSxsdDpmdW5jdGlvbihWLFUs VCl7cmV0dXJuIFU8VFszXS0wfSxndDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU+ VFszXS0wfSxudGg6ZnVuY3Rpb24oVixVLFQpe3JldHVybiBUWzNdLTA9PVV9LGVx OmZ1bmN0aW9uKFYsVSxUKXtyZXR1cm4gVFszXS0wPT1VfX0sZmlsdGVyOntQU0VV RE86ZnVuY3Rpb24oWixWLFcsYWEpe3ZhciBVPVZbMV0sWD1JLmZpbHRlcnNbVV07 aWYoWCl7cmV0dXJuIFgoWixXLFYsYWEpfWVsc2V7aWYoVT09PSJjb250YWlucyIp e3JldHVybihaLnRleHRDb250ZW50fHxaLmlubmVyVGV4dHx8IiIpLmluZGV4T2Yo VlszXSk+PTB9ZWxzZXtpZihVPT09Im5vdCIpe3ZhciBZPVZbM107Zm9yKHZhciBX PTAsVD1ZLmxlbmd0aDtXPFQ7VysrKXtpZihZW1ddPT09Wil7cmV0dXJuIGZhbHNl fX1yZXR1cm4gdHJ1ZX19fX0sQ0hJTEQ6ZnVuY3Rpb24oVCxXKXt2YXIgWj1XWzFd LFU9VDtzd2l0Y2goWil7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShVPVUu cHJldmlvdXNTaWJsaW5nKXtpZihVLm5vZGVUeXBlPT09MSl7cmV0dXJuIGZhbHNl fX1pZihaPT0iZmlyc3QiKXtyZXR1cm4gdHJ1ZX1VPVQ7Y2FzZSJsYXN0Ijp3aGls ZShVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtyZXR1cm4gZmFs c2V9fXJldHVybiB0cnVlO2Nhc2UibnRoIjp2YXIgVj1XWzJdLGFjPVdbM107aWYo Vj09MSYmYWM9PTApe3JldHVybiB0cnVlfXZhciBZPVdbMF0sYWI9VC5wYXJlbnRO b2RlO2lmKGFiJiYoYWIuc2l6Y2FjaGUhPT1ZfHwhVC5ub2RlSW5kZXgpKXt2YXIg WD0wO2ZvcihVPWFiLmZpcnN0Q2hpbGQ7VTtVPVUubmV4dFNpYmxpbmcpe2lmKFUu bm9kZVR5cGU9PT0xKXtVLm5vZGVJbmRleD0rK1h9fWFiLnNpemNhY2hlPVl9dmFy IGFhPVQubm9kZUluZGV4LWFjO2lmKFY9PTApe3JldHVybiBhYT09MH1lbHNle3Jl dHVybihhYSVWPT0wJiZhYS9WPj0wKX19fSxJRDpmdW5jdGlvbihVLFQpe3JldHVy biBVLm5vZGVUeXBlPT09MSYmVS5nZXRBdHRyaWJ1dGUoImlkIik9PT1UfSxUQUc6 ZnVuY3Rpb24oVSxUKXtyZXR1cm4oVD09PSIqIiYmVS5ub2RlVHlwZT09PTEpfHxV Lm5vZGVOYW1lPT09VH0sQ0xBU1M6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oIiAiKyhV LmNsYXNzTmFtZXx8VS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhP ZihUKT4tMX0sQVRUUjpmdW5jdGlvbihZLFcpe3ZhciBWPVdbMV0sVD1JLmF0dHJI YW5kbGVbVl0/SS5hdHRySGFuZGxlW1ZdKFkpOllbVl0hPW51bGw/WVtWXTpZLmdl dEF0dHJpYnV0ZShWKSxaPVQrIiIsWD1XWzJdLFU9V1s0XTtyZXR1cm4gVD09bnVs bD9YPT09IiE9IjpYPT09Ij0iP1o9PT1VOlg9PT0iKj0iP1ouaW5kZXhPZihVKT49 MDpYPT09In49Ij8oIiAiK1orIiAiKS5pbmRleE9mKFUpPj0wOiFVP1omJlQhPT1m YWxzZTpYPT09IiE9Ij9aIT1VOlg9PT0iXj0iP1ouaW5kZXhPZihVKT09PTA6WD09 PSIkPSI/Wi5zdWJzdHIoWi5sZW5ndGgtVS5sZW5ndGgpPT09VTpYPT09Inw9Ij9a PT09VXx8Wi5zdWJzdHIoMCxVLmxlbmd0aCsxKT09PVUrIi0iOmZhbHNlfSxQT1M6 ZnVuY3Rpb24oWCxVLFYsWSl7dmFyIFQ9VVsyXSxXPUkuc2V0RmlsdGVyc1tUXTtp ZihXKXtyZXR1cm4gVyhYLFYsVSxZKX19fX07dmFyIE09SS5tYXRjaC5QT1M7Zm9y KHZhciBPIGluIEkubWF0Y2gpe0kubWF0Y2hbT109UmVnRXhwKEkubWF0Y2hbT10u c291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSl9dmFyIEU9 ZnVuY3Rpb24oVSxUKXtVPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFUpO2lm KFQpe1QucHVzaC5hcHBseShULFUpO3JldHVybiBUfXJldHVybiBVfTt0cnl7QXJy YXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LmNoaWxkTm9kZXMpfWNhdGNoKE4pe0U9ZnVuY3Rpb24oWCxXKXt2YXIgVT1XfHxb XTtpZihILmNhbGwoWCk9PT0iW29iamVjdCBBcnJheV0iKXtBcnJheS5wcm90b3R5 cGUucHVzaC5hcHBseShVLFgpfWVsc2V7aWYodHlwZW9mIFgubGVuZ3RoPT09Im51 bWJlciIpe2Zvcih2YXIgVj0wLFQ9WC5sZW5ndGg7VjxUO1YrKyl7VS5wdXNoKFhb Vl0pfX1lbHNle2Zvcih2YXIgVj0wO1hbVl07VisrKXtVLnB1c2goWFtWXSl9fX1y ZXR1cm4gVX19dmFyIEc7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbXBh cmVEb2N1bWVudFBvc2l0aW9uKXtHPWZ1bmN0aW9uKFUsVCl7dmFyIFY9VS5jb21w YXJlRG9jdW1lbnRQb3NpdGlvbihUKSY0Py0xOlU9PT1UPzA6MTtpZihWPT09MCl7 aGFzRHVwbGljYXRlPXRydWV9cmV0dXJuIFZ9fWVsc2V7aWYoInNvdXJjZUluZGV4 IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe0c9ZnVuY3Rpb24oVSxUKXt2 YXIgVj1VLnNvdXJjZUluZGV4LVQuc291cmNlSW5kZXg7aWYoVj09PTApe2hhc0R1 cGxpY2F0ZT10cnVlfXJldHVybiBWfX1lbHNle2lmKGRvY3VtZW50LmNyZWF0ZVJh bmdlKXtHPWZ1bmN0aW9uKFcsVSl7dmFyIFY9Vy5vd25lckRvY3VtZW50LmNyZWF0 ZVJhbmdlKCksVD1VLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtWLnNlbGVj dE5vZGUoVyk7Vi5jb2xsYXBzZSh0cnVlKTtULnNlbGVjdE5vZGUoVSk7VC5jb2xs YXBzZSh0cnVlKTt2YXIgWD1WLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5T VEFSVF9UT19FTkQsVCk7aWYoWD09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVy biBYfX19fShmdW5jdGlvbigpe3ZhciBVPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo ImZvcm0iKSxWPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO1UuaW5uZXJI VE1MPSI8aW5wdXQgbmFtZT0nIitWKyInLz4iO3ZhciBUPWRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudDtULmluc2VydEJlZm9yZShVLFQuZmlyc3RDaGlsZCk7aWYoISFk b2N1bWVudC5nZXRFbGVtZW50QnlJZChWKSl7SS5maW5kLklEPWZ1bmN0aW9uKFgs WSxaKXtpZih0eXBlb2YgWS5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYh Wil7dmFyIFc9WS5nZXRFbGVtZW50QnlJZChYWzFdKTtyZXR1cm4gVz9XLmlkPT09 WFsxXXx8dHlwZW9mIFcuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZX LmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09WFsxXT9bV106Zzpb XX19O0kuZmlsdGVyLklEPWZ1bmN0aW9uKFksVyl7dmFyIFg9dHlwZW9mIFkuZ2V0 QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZZLmdldEF0dHJpYnV0ZU5vZGUo ImlkIik7cmV0dXJuIFkubm9kZVR5cGU9PT0xJiZYJiZYLm5vZGVWYWx1ZT09PVd9 fVQucmVtb3ZlQ2hpbGQoVSl9KSgpOyhmdW5jdGlvbigpe3ZhciBUPWRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl YXRlQ29tbWVudCgiIikpO2lmKFQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5s ZW5ndGg+MCl7SS5maW5kLlRBRz1mdW5jdGlvbihVLFkpe3ZhciBYPVkuZ2V0RWxl bWVudHNCeVRhZ05hbWUoVVsxXSk7aWYoVVsxXT09PSIqIil7dmFyIFc9W107Zm9y KHZhciBWPTA7WFtWXTtWKyspe2lmKFhbVl0ubm9kZVR5cGU9PT0xKXtXLnB1c2go WFtWXSl9fVg9V31yZXR1cm4gWH19VC5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwv YT4iO2lmKFQuZmlyc3RDaGlsZCYmdHlwZW9mIFQuZmlyc3RDaGlsZC5nZXRBdHRy aWJ1dGUhPT0idW5kZWZpbmVkIiYmVC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgi aHJlZiIpIT09IiMiKXtJLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihVKXtyZXR1 cm4gVS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfX19KSgpO2lmKGRvY3VtZW50LnF1 ZXJ5U2VsZWN0b3JBbGwpeyhmdW5jdGlvbigpe3ZhciBUPUYsVT1kb2N1bWVudC5j cmVhdGVFbGVtZW50KCJkaXYiKTtVLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1Qn PjwvcD4iO2lmKFUucXVlcnlTZWxlY3RvckFsbCYmVS5xdWVyeVNlbGVjdG9yQWxs KCIuVEVTVCIpLmxlbmd0aD09PTApe3JldHVybn1GPWZ1bmN0aW9uKFksWCxWLFcp e1g9WHx8ZG9jdW1lbnQ7aWYoIVcmJlgubm9kZVR5cGU9PT05JiYhUShYKSl7dHJ5 e3JldHVybiBFKFgucXVlcnlTZWxlY3RvckFsbChZKSxWKX1jYXRjaChaKXt9fXJl dHVybiBUKFksWCxWLFcpfTtGLmZpbmQ9VC5maW5kO0YuZmlsdGVyPVQuZmlsdGVy O0Yuc2VsZWN0b3JzPVQuc2VsZWN0b3JzO0YubWF0Y2hlcz1ULm1hdGNoZXN9KSgp fWlmKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmRvY3VtZW50LmRv Y3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXsoZnVuY3Rpb24o KXt2YXIgVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtULmlubmVySFRN TD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48 L2Rpdj4iO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09 PTApe3JldHVybn1ULmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiO2lmKFQuZ2V0RWxl bWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTEpe3JldHVybn1JLm9yZGVy LnNwbGljZSgxLDAsIkNMQVNTIik7SS5maW5kLkNMQVNTPWZ1bmN0aW9uKFUsVixX KXtpZih0eXBlb2YgVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09InVuZGVmaW5l ZCImJiFXKXtyZXR1cm4gVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFVbMV0pfX19 KSgpfWZ1bmN0aW9uIFAoVSxaLFksYWQsYWEsYWMpe3ZhciBhYj1VPT0icHJldmlv dXNTaWJsaW5nIiYmIWFjO2Zvcih2YXIgVz0wLFY9YWQubGVuZ3RoO1c8VjtXKysp e3ZhciBUPWFkW1ddO2lmKFQpe2lmKGFiJiZULm5vZGVUeXBlPT09MSl7VC5zaXpj YWNoZT1ZO1Quc2l6c2V0PVd9VD1UW1VdO3ZhciBYPWZhbHNlO3doaWxlKFQpe2lm KFQuc2l6Y2FjaGU9PT1ZKXtYPWFkW1Quc2l6c2V0XTticmVha31pZihULm5vZGVU eXBlPT09MSYmIWFjKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31pZihULm5vZGVO YW1lPT09Wil7WD1UO2JyZWFrfVQ9VFtVXX1hZFtXXT1YfX19ZnVuY3Rpb24gUyhV LFosWSxhZCxhYSxhYyl7dmFyIGFiPVU9PSJwcmV2aW91c1NpYmxpbmciJiYhYWM7 Zm9yKHZhciBXPTAsVj1hZC5sZW5ndGg7VzxWO1crKyl7dmFyIFQ9YWRbV107aWYo VCl7aWYoYWImJlQubm9kZVR5cGU9PT0xKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9 V31UPVRbVV07dmFyIFg9ZmFsc2U7d2hpbGUoVCl7aWYoVC5zaXpjYWNoZT09PVkp e1g9YWRbVC5zaXpzZXRdO2JyZWFrfWlmKFQubm9kZVR5cGU9PT0xKXtpZighYWMp e1Quc2l6Y2FjaGU9WTtULnNpenNldD1XfWlmKHR5cGVvZiBaIT09InN0cmluZyIp e2lmKFQ9PT1aKXtYPXRydWU7YnJlYWt9fWVsc2V7aWYoRi5maWx0ZXIoWixbVF0p Lmxlbmd0aD4wKXtYPVQ7YnJlYWt9fX1UPVRbVV19YWRbV109WH19fXZhciBLPWRv Y3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKFUsVCl7cmV0 dXJuIFUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oVCkmMTZ9OmZ1bmN0aW9uKFUs VCl7cmV0dXJuIFUhPT1UJiYoVS5jb250YWlucz9VLmNvbnRhaW5zKFQpOnRydWUp fTt2YXIgUT1mdW5jdGlvbihUKXtyZXR1cm4gVC5ub2RlVHlwZT09PTkmJlQuZG9j dW1lbnRFbGVtZW50Lm5vZGVOYW1lIT09IkhUTUwifHwhIVQub3duZXJEb2N1bWVu dCYmUShULm93bmVyRG9jdW1lbnQpfTt2YXIgSj1mdW5jdGlvbihULGFhKXt2YXIg Vz1bXSxYPSIiLFksVj1hYS5ub2RlVHlwZT9bYWFdOmFhO3doaWxlKChZPUkubWF0 Y2guUFNFVURPLmV4ZWMoVCkpKXtYKz1ZWzBdO1Q9VC5yZXBsYWNlKEkubWF0Y2gu UFNFVURPLCIiKX1UPUkucmVsYXRpdmVbVF0/VCsiKiI6VDtmb3IodmFyIFo9MCxV PVYubGVuZ3RoO1o8VTtaKyspe0YoVCxWW1pdLFcpfXJldHVybiBGLmZpbHRlcihY LFcpfTtvLmZpbmQ9RjtvLmZpbHRlcj1GLmZpbHRlcjtvLmV4cHI9Ri5zZWxlY3Rv cnM7by5leHByWyI6Il09by5leHByLmZpbHRlcnM7Ri5zZWxlY3RvcnMuZmlsdGVy cy5oaWRkZW49ZnVuY3Rpb24oVCl7cmV0dXJuIFQub2Zmc2V0V2lkdGg9PT0wfHxU Lm9mZnNldEhlaWdodD09PTB9O0Yuc2VsZWN0b3JzLmZpbHRlcnMudmlzaWJsZT1m dW5jdGlvbihUKXtyZXR1cm4gVC5vZmZzZXRXaWR0aD4wfHxULm9mZnNldEhlaWdo dD4wfTtGLnNlbGVjdG9ycy5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKFQpe3Jl dHVybiBvLmdyZXAoby50aW1lcnMsZnVuY3Rpb24oVSl7cmV0dXJuIFQ9PT1VLmVs ZW19KS5sZW5ndGh9O28ubXVsdGlGaWx0ZXI9ZnVuY3Rpb24oVixULFUpe2lmKFUp e1Y9Ijpub3QoIitWKyIpIn1yZXR1cm4gRi5tYXRjaGVzKFYsVCl9O28uZGlyPWZ1 bmN0aW9uKFYsVSl7dmFyIFQ9W10sVz1WW1VdO3doaWxlKFcmJlchPWRvY3VtZW50 KXtpZihXLm5vZGVUeXBlPT0xKXtULnB1c2goVyl9Vz1XW1VdfXJldHVybiBUfTtv Lm50aD1mdW5jdGlvbihYLFQsVixXKXtUPVR8fDE7dmFyIFU9MDtmb3IoO1g7WD1Y W1ZdKXtpZihYLm5vZGVUeXBlPT0xJiYrK1U9PVQpe2JyZWFrfX1yZXR1cm4gWH07 by5zaWJsaW5nPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W107Zm9yKDtWO1Y9Vi5uZXh0 U2libGluZyl7aWYoVi5ub2RlVHlwZT09MSYmViE9VSl7VC5wdXNoKFYpfX1yZXR1 cm4gVH07cmV0dXJuO2wuU2l6emxlPUZ9KSgpO28uZXZlbnQ9e2FkZDpmdW5jdGlv bihJLEYsSCxLKXtpZihJLm5vZGVUeXBlPT0zfHxJLm5vZGVUeXBlPT04KXtyZXR1 cm59aWYoSS5zZXRJbnRlcnZhbCYmSSE9bCl7ST1sfWlmKCFILmd1aWQpe0guZ3Vp ZD10aGlzLmd1aWQrK31pZihLIT09Zyl7dmFyIEc9SDtIPXRoaXMucHJveHkoRyk7 SC5kYXRhPUt9dmFyIEU9by5kYXRhKEksImV2ZW50cyIpfHxvLmRhdGEoSSwiZXZl bnRzIix7fSksSj1vLmRhdGEoSSwiaGFuZGxlIil8fG8uZGF0YShJLCJoYW5kbGUi LGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBvIT09InVuZGVmaW5lZCImJiFvLmV2 ZW50LnRyaWdnZXJlZD9vLmV2ZW50LmhhbmRsZS5hcHBseShhcmd1bWVudHMuY2Fs bGVlLmVsZW0sYXJndW1lbnRzKTpnfSk7Si5lbGVtPUk7by5lYWNoKEYuc3BsaXQo L1xzKy8pLGZ1bmN0aW9uKE0sTil7dmFyIE89Ti5zcGxpdCgiLiIpO049Ty5zaGlm dCgpO0gudHlwZT1PLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4iKTt2YXIgTD1FW05d O2lmKG8uZXZlbnQuc3BlY2lhbEFsbFtOXSl7by5ldmVudC5zcGVjaWFsQWxsW05d LnNldHVwLmNhbGwoSSxLLE8pfWlmKCFMKXtMPUVbTl09e307aWYoIW8uZXZlbnQu c3BlY2lhbFtOXXx8by5ldmVudC5zcGVjaWFsW05dLnNldHVwLmNhbGwoSSxLLE8p PT09ZmFsc2Upe2lmKEkuYWRkRXZlbnRMaXN0ZW5lcil7SS5hZGRFdmVudExpc3Rl bmVyKE4sSixmYWxzZSl9ZWxzZXtpZihJLmF0dGFjaEV2ZW50KXtJLmF0dGFjaEV2 ZW50KCJvbiIrTixKKX19fX1MW0guZ3VpZF09SDtvLmV2ZW50Lmdsb2JhbFtOXT10 cnVlfSk7ST1udWxsfSxndWlkOjEsZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihL LEgsSil7aWYoSy5ub2RlVHlwZT09M3x8Sy5ub2RlVHlwZT09OCl7cmV0dXJufXZh ciBHPW8uZGF0YShLLCJldmVudHMiKSxGLEU7aWYoRyl7aWYoSD09PWd8fCh0eXBl b2YgSD09PSJzdHJpbmciJiZILmNoYXJBdCgwKT09Ii4iKSl7Zm9yKHZhciBJIGlu IEcpe3RoaXMucmVtb3ZlKEssSSsoSHx8IiIpKX19ZWxzZXtpZihILnR5cGUpe0o9 SC5oYW5kbGVyO0g9SC50eXBlfW8uZWFjaChILnNwbGl0KC9ccysvKSxmdW5jdGlv bihNLE8pe3ZhciBRPU8uc3BsaXQoIi4iKTtPPVEuc2hpZnQoKTt2YXIgTj1SZWdF eHAoIihefFxcLikiK1Euc2xpY2UoKS5zb3J0KCkuam9pbigiLipcXC4iKSsiKFxc LnwkKSIpO2lmKEdbT10pe2lmKEope2RlbGV0ZSBHW09dW0ouZ3VpZF19ZWxzZXtm b3IodmFyIFAgaW4gR1tPXSl7aWYoTi50ZXN0KEdbT11bUF0udHlwZSkpe2RlbGV0 ZSBHW09dW1BdfX19aWYoby5ldmVudC5zcGVjaWFsQWxsW09dKXtvLmV2ZW50LnNw ZWNpYWxBbGxbT10udGVhcmRvd24uY2FsbChLLFEpfWZvcihGIGluIEdbT10pe2Jy ZWFrfWlmKCFGKXtpZighby5ldmVudC5zcGVjaWFsW09dfHxvLmV2ZW50LnNwZWNp YWxbT10udGVhcmRvd24uY2FsbChLLFEpPT09ZmFsc2Upe2lmKEsucmVtb3ZlRXZl bnRMaXN0ZW5lcil7Sy5yZW1vdmVFdmVudExpc3RlbmVyKE8sby5kYXRhKEssImhh bmRsZSIpLGZhbHNlKX1lbHNle2lmKEsuZGV0YWNoRXZlbnQpe0suZGV0YWNoRXZl bnQoIm9uIitPLG8uZGF0YShLLCJoYW5kbGUiKSl9fX1GPW51bGw7ZGVsZXRlIEdb T119fX0pfWZvcihGIGluIEcpe2JyZWFrfWlmKCFGKXt2YXIgTD1vLmRhdGEoSywi aGFuZGxlIik7aWYoTCl7TC5lbGVtPW51bGx9by5yZW1vdmVEYXRhKEssImV2ZW50 cyIpO28ucmVtb3ZlRGF0YShLLCJoYW5kbGUiKX19fSx0cmlnZ2VyOmZ1bmN0aW9u KEksSyxILEUpe3ZhciBHPUkudHlwZXx8STtpZighRSl7ST10eXBlb2YgST09PSJv YmplY3QiP0lbaF0/STpvLmV4dGVuZChvLkV2ZW50KEcpLEkpOm8uRXZlbnQoRyk7 aWYoRy5pbmRleE9mKCIhIik+PTApe0kudHlwZT1HPUcuc2xpY2UoMCwtMSk7SS5l eGNsdXNpdmU9dHJ1ZX1pZighSCl7SS5zdG9wUHJvcGFnYXRpb24oKTtpZih0aGlz Lmdsb2JhbFtHXSl7by5lYWNoKG8uY2FjaGUsZnVuY3Rpb24oKXtpZih0aGlzLmV2 ZW50cyYmdGhpcy5ldmVudHNbR10pe28uZXZlbnQudHJpZ2dlcihJLEssdGhpcy5o YW5kbGUuZWxlbSl9fSl9fWlmKCFIfHxILm5vZGVUeXBlPT0zfHxILm5vZGVUeXBl PT04KXtyZXR1cm4gZ31JLnJlc3VsdD1nO0kudGFyZ2V0PUg7Sz1vLm1ha2VBcnJh eShLKTtLLnVuc2hpZnQoSSl9SS5jdXJyZW50VGFyZ2V0PUg7dmFyIEo9by5kYXRh KEgsImhhbmRsZSIpO2lmKEope0ouYXBwbHkoSCxLKX1pZigoIUhbR118fChvLm5v ZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpJiZIWyJvbiIrR10mJkhbIm9uIitH XS5hcHBseShILEspPT09ZmFsc2Upe0kucmVzdWx0PWZhbHNlfWlmKCFFJiZIW0dd JiYhSS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIShvLm5vZGVOYW1lKEgsImEiKSYm Rz09ImNsaWNrIikpe3RoaXMudHJpZ2dlcmVkPXRydWU7dHJ5e0hbR10oKX1jYXRj aChMKXt9fXRoaXMudHJpZ2dlcmVkPWZhbHNlO2lmKCFJLmlzUHJvcGFnYXRpb25T dG9wcGVkKCkpe3ZhciBGPUgucGFyZW50Tm9kZXx8SC5vd25lckRvY3VtZW50O2lm KEYpe28uZXZlbnQudHJpZ2dlcihJLEssRix0cnVlKX19fSxoYW5kbGU6ZnVuY3Rp b24oSyl7dmFyIEosRTtLPWFyZ3VtZW50c1swXT1vLmV2ZW50LmZpeChLfHxsLmV2 ZW50KTtLLmN1cnJlbnRUYXJnZXQ9dGhpczt2YXIgTD1LLnR5cGUuc3BsaXQoIi4i KTtLLnR5cGU9TC5zaGlmdCgpO0o9IUwubGVuZ3RoJiYhSy5leGNsdXNpdmU7dmFy IEk9UmVnRXhwKCIoXnxcXC4pIitMLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4qXFwu IikrIihcXC58JCkiKTtFPShvLmRhdGEodGhpcywiZXZlbnRzIil8fHt9KVtLLnR5 cGVdO2Zvcih2YXIgRyBpbiBFKXt2YXIgSD1FW0ddO2lmKEp8fEkudGVzdChILnR5 cGUpKXtLLmhhbmRsZXI9SDtLLmRhdGE9SC5kYXRhO3ZhciBGPUguYXBwbHkodGhp cyxhcmd1bWVudHMpO2lmKEYhPT1nKXtLLnJlc3VsdD1GO2lmKEY9PT1mYWxzZSl7 Sy5wcmV2ZW50RGVmYXVsdCgpO0suc3RvcFByb3BhZ2F0aW9uKCl9fWlmKEsuaXNJ bW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl7YnJlYWt9fX19LHByb3BzOiJh bHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxh YmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJn ZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtl eUNvZGUgbWV0YUtleSBuZXdWYWx1ZSBvcmlnaW5hbFRhcmdldCBwYWdlWCBwYWdl WSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNj cmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcg d2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oSCl7aWYo SFtoXSl7cmV0dXJuIEh9dmFyIEY9SDtIPW8uRXZlbnQoRik7Zm9yKHZhciBHPXRo aXMucHJvcHMubGVuZ3RoLEo7Rzspe0o9dGhpcy5wcm9wc1stLUddO0hbSl09RltK XX1pZighSC50YXJnZXQpe0gudGFyZ2V0PUguc3JjRWxlbWVudHx8ZG9jdW1lbnR9 aWYoSC50YXJnZXQubm9kZVR5cGU9PTMpe0gudGFyZ2V0PUgudGFyZ2V0LnBhcmVu dE5vZGV9aWYoIUgucmVsYXRlZFRhcmdldCYmSC5mcm9tRWxlbWVudCl7SC5yZWxh dGVkVGFyZ2V0PUguZnJvbUVsZW1lbnQ9PUgudGFyZ2V0P0gudG9FbGVtZW50Okgu ZnJvbUVsZW1lbnR9aWYoSC5wYWdlWD09bnVsbCYmSC5jbGllbnRYIT1udWxsKXt2 YXIgST1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsRT1kb2N1bWVudC5ib2R5O0gu cGFnZVg9SC5jbGllbnRYKyhJJiZJLnNjcm9sbExlZnR8fEUmJkUuc2Nyb2xsTGVm dHx8MCktKEkuY2xpZW50TGVmdHx8MCk7SC5wYWdlWT1ILmNsaWVudFkrKEkmJkku c2Nyb2xsVG9wfHxFJiZFLnNjcm9sbFRvcHx8MCktKEkuY2xpZW50VG9wfHwwKX1p ZighSC53aGljaCYmKChILmNoYXJDb2RlfHxILmNoYXJDb2RlPT09MCk/SC5jaGFy Q29kZTpILmtleUNvZGUpKXtILndoaWNoPUguY2hhckNvZGV8fEgua2V5Q29kZX1p ZighSC5tZXRhS2V5JiZILmN0cmxLZXkpe0gubWV0YUtleT1ILmN0cmxLZXl9aWYo IUgud2hpY2gmJkguYnV0dG9uKXtILndoaWNoPShILmJ1dHRvbiYxPzE6KEguYnV0 dG9uJjI/MzooSC5idXR0b24mND8yOjApKSl9cmV0dXJuIEh9LHByb3h5OmZ1bmN0 aW9uKEYsRSl7RT1FfHxmdW5jdGlvbigpe3JldHVybiBGLmFwcGx5KHRoaXMsYXJn dW1lbnRzKX07RS5ndWlkPUYuZ3VpZD1GLmd1aWR8fEUuZ3VpZHx8dGhpcy5ndWlk Kys7cmV0dXJuIEV9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpCLHRlYXJkb3duOmZ1 bmN0aW9uKCl7fX19LHNwZWNpYWxBbGw6e2xpdmU6e3NldHVwOmZ1bmN0aW9uKEUs Ril7by5ldmVudC5hZGQodGhpcyxGWzBdLGMpfSx0ZWFyZG93bjpmdW5jdGlvbihH KXtpZihHLmxlbmd0aCl7dmFyIEU9MCxGPVJlZ0V4cCgiKF58XFwuKSIrR1swXSsi KFxcLnwkKSIpO28uZWFjaCgoby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fHt9 KSxmdW5jdGlvbigpe2lmKEYudGVzdCh0aGlzLnR5cGUpKXtFKyt9fSk7aWYoRTwx KXtvLmV2ZW50LnJlbW92ZSh0aGlzLEdbMF0sYyl9fX19fX07by5FdmVudD1mdW5j dGlvbihFKXtpZighdGhpcy5wcmV2ZW50RGVmYXVsdCl7cmV0dXJuIG5ldyBvLkV2 ZW50KEUpfWlmKEUmJkUudHlwZSl7dGhpcy5vcmlnaW5hbEV2ZW50PUU7dGhpcy50 eXBlPUUudHlwZX1lbHNle3RoaXMudHlwZT1FfXRoaXMudGltZVN0YW1wPWUoKTt0 aGlzW2hdPXRydWV9O2Z1bmN0aW9uIGsoKXtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24g dSgpe3JldHVybiB0cnVlfW8uRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVs dDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU7dmFyIEU9dGhp cy5vcmlnaW5hbEV2ZW50O2lmKCFFKXtyZXR1cm59aWYoRS5wcmV2ZW50RGVmYXVs dCl7RS5wcmV2ZW50RGVmYXVsdCgpfUUucmV0dXJuVmFsdWU9ZmFsc2V9LHN0b3BQ cm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9 dTt2YXIgRT10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoIUUpe3JldHVybn1pZihFLnN0 b3BQcm9wYWdhdGlvbil7RS5zdG9wUHJvcGFnYXRpb24oKX1FLmNhbmNlbEJ1YmJs ZT10cnVlfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlz LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXU7dGhpcy5zdG9wUHJvcGFn YXRpb24oKX0saXNEZWZhdWx0UHJldmVudGVkOmssaXNQcm9wYWdhdGlvblN0b3Bw ZWQ6ayxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDprfTt2YXIgYT1mdW5j dGlvbihGKXt2YXIgRT1GLnJlbGF0ZWRUYXJnZXQ7d2hpbGUoRSYmRSE9dGhpcyl7 dHJ5e0U9RS5wYXJlbnROb2RlfWNhdGNoKEcpe0U9dGhpc319aWYoRSE9dGhpcyl7 Ri50eXBlPUYuZGF0YTtvLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50 cyl9fTtvLmVhY2goe21vdXNlb3ZlcjoibW91c2VlbnRlciIsbW91c2VvdXQ6Im1v dXNlbGVhdmUifSxmdW5jdGlvbihGLEUpe28uZXZlbnQuc3BlY2lhbFtFXT17c2V0 dXA6ZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEYsYSxFKX0sdGVhcmRvd246 ZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEYsYSl9fX0pO28uZm4uZXh0 ZW5kKHtiaW5kOmZ1bmN0aW9uKEYsRyxFKXtyZXR1cm4gRj09InVubG9hZCI/dGhp cy5vbmUoRixHLEUpOnRoaXMuZWFjaChmdW5jdGlvbigpe28uZXZlbnQuYWRkKHRo aXMsRixFfHxHLEUmJkcpfSl9LG9uZTpmdW5jdGlvbihHLEgsRil7dmFyIEU9by5l dmVudC5wcm94eShGfHxILGZ1bmN0aW9uKEkpe28odGhpcykudW5iaW5kKEksRSk7 cmV0dXJuKEZ8fEgpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO3JldHVybiB0aGlz LmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEcsRSxGJiZIKX0pfSx1 bmJpbmQ6ZnVuY3Rpb24oRixFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7 by5ldmVudC5yZW1vdmUodGhpcyxGLEUpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oRSxG KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC50cmlnZ2VyKEUs Rix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihFLEcpe2lmKHRoaXNb MF0pe3ZhciBGPW8uRXZlbnQoRSk7Ri5wcmV2ZW50RGVmYXVsdCgpO0Yuc3RvcFBy b3BhZ2F0aW9uKCk7by5ldmVudC50cmlnZ2VyKEYsRyx0aGlzWzBdKTtyZXR1cm4g Ri5yZXN1bHR9fSx0b2dnbGU6ZnVuY3Rpb24oRyl7dmFyIEU9YXJndW1lbnRzLEY9 MTt3aGlsZShGPEUubGVuZ3RoKXtvLmV2ZW50LnByb3h5KEcsRVtGKytdKX1yZXR1 cm4gdGhpcy5jbGljayhvLmV2ZW50LnByb3h5KEcsZnVuY3Rpb24oSCl7dGhpcy5s YXN0VG9nZ2xlPSh0aGlzLmxhc3RUb2dnbGV8fDApJUY7SC5wcmV2ZW50RGVmYXVs dCgpO3JldHVybiBFW3RoaXMubGFzdFRvZ2dsZSsrXS5hcHBseSh0aGlzLGFyZ3Vt ZW50cyl8fGZhbHNlfSkpfSxob3ZlcjpmdW5jdGlvbihFLEYpe3JldHVybiB0aGlz Lm1vdXNlZW50ZXIoRSkubW91c2VsZWF2ZShGKX0scmVhZHk6ZnVuY3Rpb24oRSl7 QigpO2lmKG8uaXNSZWFkeSl7RS5jYWxsKGRvY3VtZW50LG8pfWVsc2V7by5yZWFk eUxpc3QucHVzaChFKX1yZXR1cm4gdGhpc30sbGl2ZTpmdW5jdGlvbihHLEYpe3Zh ciBFPW8uZXZlbnQucHJveHkoRik7RS5ndWlkKz10aGlzLnNlbGVjdG9yK0c7byhk b2N1bWVudCkuYmluZChpKEcsdGhpcy5zZWxlY3RvciksdGhpcy5zZWxlY3RvcixF KTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKEYsRSl7byhkb2N1bWVudCkudW5i aW5kKGkoRix0aGlzLnNlbGVjdG9yKSxFP3tndWlkOkUuZ3VpZCt0aGlzLnNlbGVj dG9yK0Z9Om51bGwpO3JldHVybiB0aGlzfX0pO2Z1bmN0aW9uIGMoSCl7dmFyIEU9 UmVnRXhwKCIoXnxcXC4pIitILnR5cGUrIihcXC58JCkiKSxHPXRydWUsRj1bXTtv LmVhY2goby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fFtdLGZ1bmN0aW9uKEks Sil7aWYoRS50ZXN0KEoudHlwZSkpe3ZhciBLPW8oSC50YXJnZXQpLmNsb3Nlc3Qo Si5kYXRhKVswXTtpZihLKXtGLnB1c2goe2VsZW06SyxmbjpKfSl9fX0pO0Yuc29y dChmdW5jdGlvbihKLEkpe3JldHVybiBvLmRhdGEoSi5lbGVtLCJjbG9zZXN0Iikt by5kYXRhKEkuZWxlbSwiY2xvc2VzdCIpfSk7by5lYWNoKEYsZnVuY3Rpb24oKXtp Zih0aGlzLmZuLmNhbGwodGhpcy5lbGVtLEgsdGhpcy5mbi5kYXRhKT09PWZhbHNl KXtyZXR1cm4oRz1mYWxzZSl9fSk7cmV0dXJuIEd9ZnVuY3Rpb24gaShGLEUpe3Jl dHVyblsibGl2ZSIsRixFLnJlcGxhY2UoL1wuL2csImAiKS5yZXBsYWNlKC8gL2cs InwiKV0uam9pbigiLiIpfW8uZXh0ZW5kKHtpc1JlYWR5OmZhbHNlLHJlYWR5TGlz dDpbXSxyZWFkeTpmdW5jdGlvbigpe2lmKCFvLmlzUmVhZHkpe28uaXNSZWFkeT10 cnVlO2lmKG8ucmVhZHlMaXN0KXtvLmVhY2goby5yZWFkeUxpc3QsZnVuY3Rpb24o KXt0aGlzLmNhbGwoZG9jdW1lbnQsbyl9KTtvLnJlYWR5TGlzdD1udWxsfW8oZG9j dW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfX19KTt2YXIgeD1mYWxzZTtm dW5jdGlvbiBCKCl7aWYoeCl7cmV0dXJufXg9dHJ1ZTtpZihkb2N1bWVudC5hZGRF dmVudExpc3RlbmVyKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250 ZW50TG9hZGVkIixmdW5jdGlvbigpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVu ZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGFyZ3VtZW50cy5jYWxsZWUsZmFsc2UpO28u cmVhZHkoKX0sZmFsc2UpfWVsc2V7aWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpe2Rv Y3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9u KCl7aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpe2RvY3VtZW50 LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGFyZ3VtZW50cy5jYWxs ZWUpO28ucmVhZHkoKX19KTtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9T Y3JvbGwmJmw9PWwudG9wKXsoZnVuY3Rpb24oKXtpZihvLmlzUmVhZHkpe3JldHVy bn10cnl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9 Y2F0Y2goRSl7c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApO3JldHVybn1v LnJlYWR5KCl9KSgpfX19by5ldmVudC5hZGQobCwibG9hZCIsby5yZWFkeSl9by5l YWNoKCgiYmx1cixmb2N1cyxsb2FkLHJlc2l6ZSxzY3JvbGwsdW5sb2FkLGNsaWNr LGRibGNsaWNrLG1vdXNlZG93bixtb3VzZXVwLG1vdXNlbW92ZSxtb3VzZW92ZXIs bW91c2VvdXQsbW91c2VlbnRlcixtb3VzZWxlYXZlLGNoYW5nZSxzZWxlY3Qsc3Vi bWl0LGtleWRvd24sa2V5cHJlc3Msa2V5dXAsZXJyb3IiKS5zcGxpdCgiLCIpLGZ1 bmN0aW9uKEYsRSl7by5mbltFXT1mdW5jdGlvbihHKXtyZXR1cm4gRz90aGlzLmJp bmQoRSxHKTp0aGlzLnRyaWdnZXIoRSl9fSk7byhsKS5iaW5kKCJ1bmxvYWQiLGZ1 bmN0aW9uKCl7Zm9yKHZhciBFIGluIG8uY2FjaGUpe2lmKEUhPTEmJm8uY2FjaGVb RV0uaGFuZGxlKXtvLmV2ZW50LnJlbW92ZShvLmNhY2hlW0VdLmhhbmRsZS5lbGVt KX19fSk7KGZ1bmN0aW9uKCl7by5zdXBwb3J0PXt9O3ZhciBGPWRvY3VtZW50LmRv Y3VtZW50RWxlbWVudCxHPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIp LEs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSj0ic2NyaXB0IisobmV3 IERhdGUpLmdldFRpbWUoKTtLLnN0eWxlLmRpc3BsYXk9Im5vbmUiO0suaW5uZXJI VE1MPScgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0iL2EiIHN0eWxl PSJjb2xvcjpyZWQ7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41OyI+YTwvYT48c2VsZWN0 PjxvcHRpb24+dGV4dDwvb3B0aW9uPjwvc2VsZWN0PjxvYmplY3Q+PHBhcmFtLz48 L29iamVjdD4nO3ZhciBIPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxFPUsu Z2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighSHx8IUgubGVuZ3RofHwh RSl7cmV0dXJufW8uc3VwcG9ydD17bGVhZGluZ1doaXRlc3BhY2U6Sy5maXJzdENo aWxkLm5vZGVUeXBlPT0zLHRib2R5OiFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0 Ym9keSIpLmxlbmd0aCxvYmplY3RBbGw6ISFLLmdldEVsZW1lbnRzQnlUYWdOYW1l KCJvYmplY3QiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCxo dG1sU2VyaWFsaXplOiEhSy5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxl bmd0aCxzdHlsZTovcmVkLy50ZXN0KEUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxo cmVmTm9ybWFsaXplZDpFLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFj aXR5OkUuc3R5bGUub3BhY2l0eT09PSIwLjUiLGNzc0Zsb2F0OiEhRS5zdHlsZS5j c3NGbG9hdCxzY3JpcHRFdmFsOmZhbHNlLG5vQ2xvbmVFdmVudDp0cnVlLGJveE1v ZGVsOm51bGx9O0cudHlwZT0idGV4dC9qYXZhc2NyaXB0Ijt0cnl7Ry5hcHBlbmRD aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrSisiPTE7Iikp fWNhdGNoKEkpe31GLmluc2VydEJlZm9yZShHLEYuZmlyc3RDaGlsZCk7aWYobFtK XSl7by5zdXBwb3J0LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgbFtKXX1GLnJlbW92 ZUNoaWxkKEcpO2lmKEsuYXR0YWNoRXZlbnQmJksuZmlyZUV2ZW50KXtLLmF0dGFj aEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe28uc3VwcG9ydC5ub0Nsb25lRXZl bnQ9ZmFsc2U7Sy5kZXRhY2hFdmVudCgib25jbGljayIsYXJndW1lbnRzLmNhbGxl ZSl9KTtLLmNsb25lTm9kZSh0cnVlKS5maXJlRXZlbnQoIm9uY2xpY2siKX1vKGZ1 bmN0aW9uKCl7dmFyIEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7TC5z dHlsZS53aWR0aD1MLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiO2RvY3VtZW50LmJv ZHkuYXBwZW5kQ2hpbGQoTCk7by5ib3hNb2RlbD1vLnN1cHBvcnQuYm94TW9kZWw9 TC5vZmZzZXRXaWR0aD09PTI7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChMKS5z dHlsZS5kaXNwbGF5PSJub25lIn0pfSkoKTt2YXIgdz1vLnN1cHBvcnQuY3NzRmxv YXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCI7by5wcm9wcz17ImZvciI6Imh0bWxG b3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsImZsb2F0Ijp3LGNzc0Zsb2F0Oncsc3R5 bGVGbG9hdDp3LHJlYWRvbmx5OiJyZWFkT25seSIsbWF4bGVuZ3RoOiJtYXhMZW5n dGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIscm93c3Bhbjoicm93U3BhbiIs dGFiaW5kZXg6InRhYkluZGV4In07by5mbi5leHRlbmQoe19sb2FkOm8uZm4ubG9h ZCxsb2FkOmZ1bmN0aW9uKEcsSixLKXtpZih0eXBlb2YgRyE9PSJzdHJpbmciKXty ZXR1cm4gdGhpcy5fbG9hZChHKX12YXIgST1HLmluZGV4T2YoIiAiKTtpZihJPj0w KXt2YXIgRT1HLnNsaWNlKEksRy5sZW5ndGgpO0c9Ry5zbGljZSgwLEkpfXZhciBI PSJHRVQiO2lmKEope2lmKG8uaXNGdW5jdGlvbihKKSl7Sz1KO0o9bnVsbH1lbHNl e2lmKHR5cGVvZiBKPT09Im9iamVjdCIpe0o9by5wYXJhbShKKTtIPSJQT1NUIn19 fXZhciBGPXRoaXM7by5hamF4KHt1cmw6Ryx0eXBlOkgsZGF0YVR5cGU6Imh0bWwi LGRhdGE6Sixjb21wbGV0ZTpmdW5jdGlvbihNLEwpe2lmKEw9PSJzdWNjZXNzInx8 TD09Im5vdG1vZGlmaWVkIil7Ri5odG1sKEU/bygiPGRpdi8+IikuYXBwZW5kKE0u cmVzcG9uc2VUZXh0LnJlcGxhY2UoLzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9n LCIiKSkuZmluZChFKTpNLnJlc3BvbnNlVGV4dCl9aWYoSyl7Ri5lYWNoKEssW00u cmVzcG9uc2VUZXh0LEwsTV0pfX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1 bmN0aW9uKCl7cmV0dXJuIG8ucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0s c2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9vLm1ha2VBcnJheSh0aGlzLmVsZW1l bnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYm IXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fC9zZWxlY3R8dGV4dGFyZWEv aS50ZXN0KHRoaXMubm9kZU5hbWUpfHwvdGV4dHxoaWRkZW58cGFzc3dvcmR8c2Vh cmNoL2kudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihFLEYpe3ZhciBH PW8odGhpcykudmFsKCk7cmV0dXJuIEc9PW51bGw/bnVsbDpvLmlzQXJyYXkoRyk/ by5tYXAoRyxmdW5jdGlvbihJLEgpe3JldHVybntuYW1lOkYubmFtZSx2YWx1ZTpJ fX0pOntuYW1lOkYubmFtZSx2YWx1ZTpHfX0pLmdldCgpfX0pO28uZWFjaCgiYWph eFN0YXJ0LGFqYXhTdG9wLGFqYXhDb21wbGV0ZSxhamF4RXJyb3IsYWpheFN1Y2Nl c3MsYWpheFNlbmQiLnNwbGl0KCIsIiksZnVuY3Rpb24oRSxGKXtvLmZuW0ZdPWZ1 bmN0aW9uKEcpe3JldHVybiB0aGlzLmJpbmQoRixHKX19KTt2YXIgcj1lKCk7by5l eHRlbmQoe2dldDpmdW5jdGlvbihFLEcsSCxGKXtpZihvLmlzRnVuY3Rpb24oRykp e0g9RztHPW51bGx9cmV0dXJuIG8uYWpheCh7dHlwZToiR0VUIix1cmw6RSxkYXRh Okcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKEUs Ril7cmV0dXJuIG8uZ2V0KEUsbnVsbCxGLCJzY3JpcHQiKX0sZ2V0SlNPTjpmdW5j dGlvbihFLEYsRyl7cmV0dXJuIG8uZ2V0KEUsRixHLCJqc29uIil9LHBvc3Q6ZnVu Y3Rpb24oRSxHLEgsRil7aWYoby5pc0Z1bmN0aW9uKEcpKXtIPUc7Rz17fX1yZXR1 cm4gby5hamF4KHt0eXBlOiJQT1NUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRh dGFUeXBlOkZ9KX0sYWpheFNldHVwOmZ1bmN0aW9uKEUpe28uZXh0ZW5kKG8uYWph eFNldHRpbmdzLEUpfSxhamF4U2V0dGluZ3M6e3VybDpsb2NhdGlvbi5ocmVmLGds b2JhbDp0cnVlLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gt d3d3LWZvcm0tdXJsZW5jb2RlZCIscHJvY2Vzc0RhdGE6dHJ1ZSxhc3luYzp0cnVl LHhocjpmdW5jdGlvbigpe3JldHVybiBsLkFjdGl2ZVhPYmplY3Q/bmV3IEFjdGl2 ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik6bmV3IFhNTEh0dHBSZXF1ZXN0 KCl9LGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRt bDoidGV4dC9odG1sIixzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRp b24vamF2YXNjcmlwdCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZh c2NyaXB0Iix0ZXh0OiJ0ZXh0L3BsYWluIixfZGVmYXVsdDoiKi8qIn19LGxhc3RN b2RpZmllZDp7fSxhamF4OmZ1bmN0aW9uKE0pe009by5leHRlbmQodHJ1ZSxNLG8u ZXh0ZW5kKHRydWUse30sby5hamF4U2V0dGluZ3MsTSkpO3ZhciBXLEY9Lz1cPygm fCQpL2csUixWLEc9TS50eXBlLnRvVXBwZXJDYXNlKCk7aWYoTS5kYXRhJiZNLnBy b2Nlc3NEYXRhJiZ0eXBlb2YgTS5kYXRhIT09InN0cmluZyIpe00uZGF0YT1vLnBh cmFtKE0uZGF0YSl9aWYoTS5kYXRhVHlwZT09Impzb25wIil7aWYoRz09IkdFVCIp e2lmKCFNLnVybC5tYXRjaChGKSl7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8i JiI6Ij8iKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19ZWxzZXtpZighTS5k YXRhfHwhTS5kYXRhLm1hdGNoKEYpKXtNLmRhdGE9KE0uZGF0YT9NLmRhdGErIiYi OiIiKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19TS5kYXRhVHlwZT0ianNv biJ9aWYoTS5kYXRhVHlwZT09Impzb24iJiYoTS5kYXRhJiZNLmRhdGEubWF0Y2go Ril8fE0udXJsLm1hdGNoKEYpKSl7Vz0ianNvbnAiK3IrKztpZihNLmRhdGEpe00u ZGF0YT0oTS5kYXRhKyIiKS5yZXBsYWNlKEYsIj0iK1crIiQxIil9TS51cmw9TS51 cmwucmVwbGFjZShGLCI9IitXKyIkMSIpO00uZGF0YVR5cGU9InNjcmlwdCI7bFtX XT1mdW5jdGlvbihYKXtWPVg7SSgpO0woKTtsW1ddPWc7dHJ5e2RlbGV0ZSBsW1dd fWNhdGNoKFkpe31pZihIKXtILnJlbW92ZUNoaWxkKFQpfX19aWYoTS5kYXRhVHlw ZT09InNjcmlwdCImJk0uY2FjaGU9PW51bGwpe00uY2FjaGU9ZmFsc2V9aWYoTS5j YWNoZT09PWZhbHNlJiZHPT0iR0VUIil7dmFyIEU9ZSgpO3ZhciBVPU0udXJsLnJl cGxhY2UoLyhcP3wmKV89Lio/KCZ8JCkvLCIkMV89IitFKyIkMiIpO00udXJsPVUr KChVPT1NLnVybCk/KE0udXJsLm1hdGNoKC9cPy8pPyImIjoiPyIpKyJfPSIrRToi Iil9aWYoTS5kYXRhJiZHPT0iR0VUIil7TS51cmwrPShNLnVybC5tYXRjaCgvXD8v KT8iJiI6Ij8iKStNLmRhdGE7TS5kYXRhPW51bGx9aWYoTS5nbG9iYWwmJiFvLmFj dGl2ZSsrKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpfXZhciBRPS9eKFx3 KzopP1wvXC8oW15cLz8jXSspLy5leGVjKE0udXJsKTtpZihNLmRhdGFUeXBlPT0i c2NyaXB0IiYmRz09IkdFVCImJlEmJihRWzFdJiZRWzFdIT1sb2NhdGlvbi5wcm90 b2NvbHx8UVsyXSE9bG9jYXRpb24uaG9zdCkpe3ZhciBIPWRvY3VtZW50LmdldEVs ZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07dmFyIFQ9ZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgic2NyaXB0Iik7VC5zcmM9TS51cmw7aWYoTS5zY3JpcHRDaGFyc2V0 KXtULmNoYXJzZXQ9TS5zY3JpcHRDaGFyc2V0fWlmKCFXKXt2YXIgTz1mYWxzZTtU Lm9ubG9hZD1ULm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKCFPJiYo IXRoaXMucmVhZHlTdGF0ZXx8dGhpcy5yZWFkeVN0YXRlPT0ibG9hZGVkInx8dGhp cy5yZWFkeVN0YXRlPT0iY29tcGxldGUiKSl7Tz10cnVlO0koKTtMKCk7VC5vbmxv YWQ9VC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDtILnJlbW92ZUNoaWxkKFQpfX19 SC5hcHBlbmRDaGlsZChUKTtyZXR1cm4gZ312YXIgSz1mYWxzZTt2YXIgSj1NLnho cigpO2lmKE0udXNlcm5hbWUpe0oub3BlbihHLE0udXJsLE0uYXN5bmMsTS51c2Vy bmFtZSxNLnBhc3N3b3JkKX1lbHNle0oub3BlbihHLE0udXJsLE0uYXN5bmMpfXRy eXtpZihNLmRhdGEpe0ouc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixN LmNvbnRlbnRUeXBlKX1pZihNLmlmTW9kaWZpZWQpe0ouc2V0UmVxdWVzdEhlYWRl cigiSWYtTW9kaWZpZWQtU2luY2UiLG8ubGFzdE1vZGlmaWVkW00udXJsXXx8IlRo dSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIil9Si5zZXRSZXF1ZXN0SGVhZGVy KCJYLVJlcXVlc3RlZC1XaXRoIiwiWE1MSHR0cFJlcXVlc3QiKTtKLnNldFJlcXVl c3RIZWFkZXIoIkFjY2VwdCIsTS5kYXRhVHlwZSYmTS5hY2NlcHRzW00uZGF0YVR5 cGVdP00uYWNjZXB0c1tNLmRhdGFUeXBlXSsiLCAqLyoiOk0uYWNjZXB0cy5fZGVm YXVsdCl9Y2F0Y2goUyl7fWlmKE0uYmVmb3JlU2VuZCYmTS5iZWZvcmVTZW5kKEos TSk9PT1mYWxzZSl7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRy aWdnZXIoImFqYXhTdG9wIil9Si5hYm9ydCgpO3JldHVybiBmYWxzZX1pZihNLmds b2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsW0osTV0pfXZhciBOPWZ1 bmN0aW9uKFgpe2lmKEoucmVhZHlTdGF0ZT09MCl7aWYoUCl7Y2xlYXJJbnRlcnZh bChQKTtQPW51bGw7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRy aWdnZXIoImFqYXhTdG9wIil9fX1lbHNle2lmKCFLJiZKJiYoSi5yZWFkeVN0YXRl PT00fHxYPT0idGltZW91dCIpKXtLPXRydWU7aWYoUCl7Y2xlYXJJbnRlcnZhbChQ KTtQPW51bGx9Uj1YPT0idGltZW91dCI/InRpbWVvdXQiOiFvLmh0dHBTdWNjZXNz KEopPyJlcnJvciI6TS5pZk1vZGlmaWVkJiZvLmh0dHBOb3RNb2RpZmllZChKLE0u dXJsKT8ibm90bW9kaWZpZWQiOiJzdWNjZXNzIjtpZihSPT0ic3VjY2VzcyIpe3Ry eXtWPW8uaHR0cERhdGEoSixNLmRhdGFUeXBlLE0pfWNhdGNoKFope1I9InBhcnNl cmVycm9yIn19aWYoUj09InN1Y2Nlc3MiKXt2YXIgWTt0cnl7WT1KLmdldFJlc3Bv bnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIil9Y2F0Y2goWil7fWlmKE0uaWZNb2Rp ZmllZCYmWSl7by5sYXN0TW9kaWZpZWRbTS51cmxdPVl9aWYoIVcpe0koKX19ZWxz ZXtvLmhhbmRsZUVycm9yKE0sSixSKX1MKCk7aWYoWCl7Si5hYm9ydCgpfWlmKE0u YXN5bmMpe0o9bnVsbH19fX07aWYoTS5hc3luYyl7dmFyIFA9c2V0SW50ZXJ2YWwo TiwxMyk7aWYoTS50aW1lb3V0PjApe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihK JiYhSyl7TigidGltZW91dCIpfX0sTS50aW1lb3V0KX19dHJ5e0ouc2VuZChNLmRh dGEpfWNhdGNoKFMpe28uaGFuZGxlRXJyb3IoTSxKLG51bGwsUyl9aWYoIU0uYXN5 bmMpe04oKX1mdW5jdGlvbiBJKCl7aWYoTS5zdWNjZXNzKXtNLnN1Y2Nlc3MoVixS KX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U3VjY2VzcyIsW0os TV0pfX1mdW5jdGlvbiBMKCl7aWYoTS5jb21wbGV0ZSl7TS5jb21wbGV0ZShKLFIp fWlmKE0uZ2xvYmFsKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW0os TV0pfWlmKE0uZ2xvYmFsJiYhLS1vLmFjdGl2ZSl7by5ldmVudC50cmlnZ2VyKCJh amF4U3RvcCIpfX1yZXR1cm4gSn0saGFuZGxlRXJyb3I6ZnVuY3Rpb24oRixILEUs Ryl7aWYoRi5lcnJvcil7Ri5lcnJvcihILEUsRyl9aWYoRi5nbG9iYWwpe28uZXZl bnQudHJpZ2dlcigiYWpheEVycm9yIixbSCxGLEddKX19LGFjdGl2ZTowLGh0dHBT dWNjZXNzOmZ1bmN0aW9uKEYpe3RyeXtyZXR1cm4gIUYuc3RhdHVzJiZsb2NhdGlv bi5wcm90b2NvbD09ImZpbGU6Inx8KEYuc3RhdHVzPj0yMDAmJkYuc3RhdHVzPDMw MCl8fEYuc3RhdHVzPT0zMDR8fEYuc3RhdHVzPT0xMjIzfWNhdGNoKEUpe31yZXR1 cm4gZmFsc2V9LGh0dHBOb3RNb2RpZmllZDpmdW5jdGlvbihHLEUpe3RyeXt2YXIg SD1HLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIik7cmV0dXJuIEcu c3RhdHVzPT0zMDR8fEg9PW8ubGFzdE1vZGlmaWVkW0VdfWNhdGNoKEYpe31yZXR1 cm4gZmFsc2V9LGh0dHBEYXRhOmZ1bmN0aW9uKEosSCxHKXt2YXIgRj1KLmdldFJl c3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSxFPUg9PSJ4bWwifHwhSCYmRiYm Ri5pbmRleE9mKCJ4bWwiKT49MCxJPUU/Si5yZXNwb25zZVhNTDpKLnJlc3BvbnNl VGV4dDtpZihFJiZJLmRvY3VtZW50RWxlbWVudC50YWdOYW1lPT0icGFyc2VyZXJy b3IiKXt0aHJvdyJwYXJzZXJlcnJvciJ9aWYoRyYmRy5kYXRhRmlsdGVyKXtJPUcu ZGF0YUZpbHRlcihJLEgpfWlmKHR5cGVvZiBJPT09InN0cmluZyIpe2lmKEg9PSJz Y3JpcHQiKXtvLmdsb2JhbEV2YWwoSSl9aWYoSD09Impzb24iKXtJPWxbImV2YWwi XSgiKCIrSSsiKSIpfX1yZXR1cm4gSX0scGFyYW06ZnVuY3Rpb24oRSl7dmFyIEc9 W107ZnVuY3Rpb24gSChJLEope0dbRy5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVu dChJKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEopfWlmKG8uaXNBcnJheShFKXx8 RS5qcXVlcnkpe28uZWFjaChFLGZ1bmN0aW9uKCl7SCh0aGlzLm5hbWUsdGhpcy52 YWx1ZSl9KX1lbHNle2Zvcih2YXIgRiBpbiBFKXtpZihvLmlzQXJyYXkoRVtGXSkp e28uZWFjaChFW0ZdLGZ1bmN0aW9uKCl7SChGLHRoaXMpfSl9ZWxzZXtIKEYsby5p c0Z1bmN0aW9uKEVbRl0pP0VbRl0oKTpFW0ZdKX19fXJldHVybiBHLmpvaW4oIiYi KS5yZXBsYWNlKC8lMjAvZywiKyIpfX0pO3ZhciBtPXt9LG4sZD1bWyJoZWlnaHQi LCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGlu Z0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJw YWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXTtmdW5jdGlv biB0KEYsRSl7dmFyIEc9e307by5lYWNoKGQuY29uY2F0LmFwcGx5KFtdLGQuc2xp Y2UoMCxFKSksZnVuY3Rpb24oKXtHW3RoaXNdPUZ9KTtyZXR1cm4gR31vLmZuLmV4 dGVuZCh7c2hvdzpmdW5jdGlvbihKLEwpe2lmKEope3JldHVybiB0aGlzLmFuaW1h dGUodCgic2hvdyIsMyksSixMKX1lbHNle2Zvcih2YXIgSD0wLEY9dGhpcy5sZW5n dGg7SDxGO0grKyl7dmFyIEU9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiKTt0 aGlzW0hdLnN0eWxlLmRpc3BsYXk9RXx8IiI7aWYoby5jc3ModGhpc1tIXSwiZGlz cGxheSIpPT09Im5vbmUiKXt2YXIgRz10aGlzW0hdLnRhZ05hbWUsSztpZihtW0dd KXtLPW1bR119ZWxzZXt2YXIgST1vKCI8IitHKyIgLz4iKS5hcHBlbmRUbygiYm9k eSIpO0s9SS5jc3MoImRpc3BsYXkiKTtpZihLPT09Im5vbmUiKXtLPSJibG9jayJ9 SS5yZW1vdmUoKTttW0ddPUt9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiLEsp fX1mb3IodmFyIEg9MCxGPXRoaXMubGVuZ3RoO0g8RjtIKyspe3RoaXNbSF0uc3R5 bGUuZGlzcGxheT1vLmRhdGEodGhpc1tIXSwib2xkZGlzcGxheSIpfHwiIn1yZXR1 cm4gdGhpc319LGhpZGU6ZnVuY3Rpb24oSCxJKXtpZihIKXtyZXR1cm4gdGhpcy5h bmltYXRlKHQoImhpZGUiLDMpLEgsSSl9ZWxzZXtmb3IodmFyIEc9MCxGPXRoaXMu bGVuZ3RoO0c8RjtHKyspe3ZhciBFPW8uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5 Iik7aWYoIUUmJkUhPT0ibm9uZSIpe28uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5 IixvLmNzcyh0aGlzW0ddLCJkaXNwbGF5IikpfX1mb3IodmFyIEc9MCxGPXRoaXMu bGVuZ3RoO0c8RjtHKyspe3RoaXNbR10uc3R5bGUuZGlzcGxheT0ibm9uZSJ9cmV0 dXJuIHRoaXN9fSxfdG9nZ2xlOm8uZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihH LEYpe3ZhciBFPXR5cGVvZiBHPT09ImJvb2xlYW4iO3JldHVybiBvLmlzRnVuY3Rp b24oRykmJm8uaXNGdW5jdGlvbihGKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxh cmd1bWVudHMpOkc9PW51bGx8fEU/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIEg9 RT9HOm8odGhpcykuaXMoIjpoaWRkZW4iKTtvKHRoaXMpW0g/InNob3ciOiJoaWRl Il0oKX0pOnRoaXMuYW5pbWF0ZSh0KCJ0b2dnbGUiLDMpLEcsRil9LGZhZGVUbzpm dW5jdGlvbihFLEcsRil7cmV0dXJuIHRoaXMuYW5pbWF0ZSh7b3BhY2l0eTpHfSxF LEYpfSxhbmltYXRlOmZ1bmN0aW9uKEksRixILEcpe3ZhciBFPW8uc3BlZWQoRixI LEcpO3JldHVybiB0aGlzW0UucXVldWU9PT1mYWxzZT8iZWFjaCI6InF1ZXVlIl0o ZnVuY3Rpb24oKXt2YXIgSz1vLmV4dGVuZCh7fSxFKSxNLEw9dGhpcy5ub2RlVHlw ZT09MSYmbyh0aGlzKS5pcygiOmhpZGRlbiIpLEo9dGhpcztmb3IoTSBpbiBJKXtp ZihJW01dPT0iaGlkZSImJkx8fElbTV09PSJzaG93IiYmIUwpe3JldHVybiBLLmNv bXBsZXRlLmNhbGwodGhpcyl9aWYoKE09PSJoZWlnaHQifHxNPT0id2lkdGgiKSYm dGhpcy5zdHlsZSl7Sy5kaXNwbGF5PW8uY3NzKHRoaXMsImRpc3BsYXkiKTtLLm92 ZXJmbG93PXRoaXMuc3R5bGUub3ZlcmZsb3d9fWlmKEsub3ZlcmZsb3chPW51bGwp e3RoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiJ9Sy5jdXJBbmltPW8uZXh0ZW5k KHt9LEkpO28uZWFjaChJLGZ1bmN0aW9uKE8sUyl7dmFyIFI9bmV3IG8uZngoSixL LE8pO2lmKC90b2dnbGV8c2hvd3xoaWRlLy50ZXN0KFMpKXtSW1M9PSJ0b2dnbGUi P0w/InNob3ciOiJoaWRlIjpTXShJKX1lbHNle3ZhciBRPVMudG9TdHJpbmcoKS5t YXRjaCgvXihbKy1dPSk/KFtcZCstLl0rKSguKikkLyksVD1SLmN1cih0cnVlKXx8 MDtpZihRKXt2YXIgTj1wYXJzZUZsb2F0KFFbMl0pLFA9UVszXXx8InB4IjtpZihQ IT0icHgiKXtKLnN0eWxlW09dPShOfHwxKStQO1Q9KChOfHwxKS9SLmN1cih0cnVl KSkqVDtKLnN0eWxlW09dPVQrUH1pZihRWzFdKXtOPSgoUVsxXT09Ii09Ij8tMTox KSpOKStUfVIuY3VzdG9tKFQsTixQKX1lbHNle1IuY3VzdG9tKFQsUywiIil9fX0p O3JldHVybiB0cnVlfSl9LHN0b3A6ZnVuY3Rpb24oRixFKXt2YXIgRz1vLnRpbWVy cztpZihGKXt0aGlzLnF1ZXVlKFtdKX10aGlzLmVhY2goZnVuY3Rpb24oKXtmb3Io dmFyIEg9Ry5sZW5ndGgtMTtIPj0wO0gtLSl7aWYoR1tIXS5lbGVtPT10aGlzKXtp ZihFKXtHW0hdKHRydWUpfUcuc3BsaWNlKEgsMSl9fX0pO2lmKCFFKXt0aGlzLmRl cXVldWUoKX1yZXR1cm4gdGhpc319KTtvLmVhY2goe3NsaWRlRG93bjp0KCJzaG93 IiwxKSxzbGlkZVVwOnQoImhpZGUiLDEpLHNsaWRlVG9nZ2xlOnQoInRvZ2dsZSIs MSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlk ZSJ9fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyxIKXtyZXR1cm4g dGhpcy5hbmltYXRlKEYsRyxIKX19KTtvLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24o RyxILEYpe3ZhciBFPXR5cGVvZiBHPT09Im9iamVjdCI/Rzp7Y29tcGxldGU6Rnx8 IUYmJkh8fG8uaXNGdW5jdGlvbihHKSYmRyxkdXJhdGlvbjpHLGVhc2luZzpGJiZI fHxIJiYhby5pc0Z1bmN0aW9uKEgpJiZIfTtFLmR1cmF0aW9uPW8uZngub2ZmPzA6 dHlwZW9mIEUuZHVyYXRpb249PT0ibnVtYmVyIj9FLmR1cmF0aW9uOm8uZnguc3Bl ZWRzW0UuZHVyYXRpb25dfHxvLmZ4LnNwZWVkcy5fZGVmYXVsdDtFLm9sZD1FLmNv bXBsZXRlO0UuY29tcGxldGU9ZnVuY3Rpb24oKXtpZihFLnF1ZXVlIT09ZmFsc2Up e28odGhpcykuZGVxdWV1ZSgpfWlmKG8uaXNGdW5jdGlvbihFLm9sZCkpe0Uub2xk LmNhbGwodGhpcyl9fTtyZXR1cm4gRX0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24o RyxILEUsRil7cmV0dXJuIEUrRipHfSxzd2luZzpmdW5jdGlvbihHLEgsRSxGKXty ZXR1cm4oKC1NYXRoLmNvcyhHKk1hdGguUEkpLzIpKzAuNSkqRitFfX0sdGltZXJz OltdLGZ4OmZ1bmN0aW9uKEYsRSxHKXt0aGlzLm9wdGlvbnM9RTt0aGlzLmVsZW09 Rjt0aGlzLnByb3A9RztpZighRS5vcmlnKXtFLm9yaWc9e319fX0pO28uZngucHJv dG90eXBlPXt1cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuc3RlcCl7 dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyl9 KG8uZnguc3RlcFt0aGlzLnByb3BdfHxvLmZ4LnN0ZXAuX2RlZmF1bHQpKHRoaXMp O2lmKCh0aGlzLnByb3A9PSJoZWlnaHQifHx0aGlzLnByb3A9PSJ3aWR0aCIpJiZ0 aGlzLmVsZW0uc3R5bGUpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9 fSxjdXI6ZnVuY3Rpb24oRil7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwm JighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09 bnVsbCkpe3JldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXX12YXIgRT1wYXJzZUZs b2F0KG8uY3NzKHRoaXMuZWxlbSx0aGlzLnByb3AsRikpO3JldHVybiBFJiZFPi0x MDAwMD9FOnBhcnNlRmxvYXQoby5jdXJDU1ModGhpcy5lbGVtLHRoaXMucHJvcCkp fHwwfSxjdXN0b206ZnVuY3Rpb24oSSxILEcpe3RoaXMuc3RhcnRUaW1lPWUoKTt0 aGlzLnN0YXJ0PUk7dGhpcy5lbmQ9SDt0aGlzLnVuaXQ9R3x8dGhpcy51bml0fHwi cHgiO3RoaXMubm93PXRoaXMuc3RhcnQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0wO3Zh ciBFPXRoaXM7ZnVuY3Rpb24gRihKKXtyZXR1cm4gRS5zdGVwKEopfUYuZWxlbT10 aGlzLmVsZW07aWYoRigpJiZvLnRpbWVycy5wdXNoKEYpJiYhbil7bj1zZXRJbnRl cnZhbChmdW5jdGlvbigpe3ZhciBLPW8udGltZXJzO2Zvcih2YXIgSj0wO0o8Sy5s ZW5ndGg7SisrKXtpZighS1tKXSgpKXtLLnNwbGljZShKLS0sMSl9fWlmKCFLLmxl bmd0aCl7Y2xlYXJJbnRlcnZhbChuKTtuPWd9fSwxMyl9fSxzaG93OmZ1bmN0aW9u KCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1vLmF0dHIodGhpcy5lbGVt LnN0eWxlLHRoaXMucHJvcCk7dGhpcy5vcHRpb25zLnNob3c9dHJ1ZTt0aGlzLmN1 c3RvbSh0aGlzLnByb3A9PSJ3aWR0aCJ8fHRoaXMucHJvcD09ImhlaWdodCI/MTow LHRoaXMuY3VyKCkpO28odGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24o KXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPW8uYXR0cih0aGlzLmVsZW0u c3R5bGUsdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuaGlkZT10cnVlO3RoaXMuY3Vz dG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oSCl7dmFyIEc9ZSgpO2lm KEh8fEc+PXRoaXMub3B0aW9ucy5kdXJhdGlvbit0aGlzLnN0YXJ0VGltZSl7dGhp cy5ub3c9dGhpcy5lbmQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0xO3RoaXMudXBkYXRl KCk7dGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXT10cnVlO3ZhciBFPXRy dWU7Zm9yKHZhciBGIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtpZih0aGlzLm9w dGlvbnMuY3VyQW5pbVtGXSE9PXRydWUpe0U9ZmFsc2V9fWlmKEUpe2lmKHRoaXMu b3B0aW9ucy5kaXNwbGF5IT1udWxsKXt0aGlzLmVsZW0uc3R5bGUub3ZlcmZsb3c9 dGhpcy5vcHRpb25zLm92ZXJmbG93O3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PXRo aXMub3B0aW9ucy5kaXNwbGF5O2lmKG8uY3NzKHRoaXMuZWxlbSwiZGlzcGxheSIp PT0ibm9uZSIpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fWlmKHRo aXMub3B0aW9ucy5oaWRlKXtvKHRoaXMuZWxlbSkuaGlkZSgpfWlmKHRoaXMub3B0 aW9ucy5oaWRlfHx0aGlzLm9wdGlvbnMuc2hvdyl7Zm9yKHZhciBJIGluIHRoaXMu b3B0aW9ucy5jdXJBbmltKXtvLmF0dHIodGhpcy5lbGVtLnN0eWxlLEksdGhpcy5v cHRpb25zLm9yaWdbSV0pfX10aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlz LmVsZW0pfXJldHVybiBmYWxzZX1lbHNle3ZhciBKPUctdGhpcy5zdGFydFRpbWU7 dGhpcy5zdGF0ZT1KL3RoaXMub3B0aW9ucy5kdXJhdGlvbjt0aGlzLnBvcz1vLmVh c2luZ1t0aGlzLm9wdGlvbnMuZWFzaW5nfHwoby5lYXNpbmcuc3dpbmc/InN3aW5n IjoibGluZWFyIildKHRoaXMuc3RhdGUsSiwwLDEsdGhpcy5vcHRpb25zLmR1cmF0 aW9uKTt0aGlzLm5vdz10aGlzLnN0YXJ0KygodGhpcy5lbmQtdGhpcy5zdGFydCkq dGhpcy5wb3MpO3RoaXMudXBkYXRlKCl9cmV0dXJuIHRydWV9fTtvLmV4dGVuZChv LmZ4LHtzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3Rl cDp7b3BhY2l0eTpmdW5jdGlvbihFKXtvLmF0dHIoRS5lbGVtLnN0eWxlLCJvcGFj aXR5IixFLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKEUpe2lmKEUuZWxlbS5zdHls ZSYmRS5lbGVtLnN0eWxlW0UucHJvcF0hPW51bGwpe0UuZWxlbS5zdHlsZVtFLnBy b3BdPUUubm93K0UudW5pdH1lbHNle0UuZWxlbVtFLnByb3BdPUUubm93fX19fSk7 aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVj dCl7by5mbi5vZmZzZXQ9ZnVuY3Rpb24oKXtpZighdGhpc1swXSl7cmV0dXJue3Rv cDowLGxlZnQ6MH19aWYodGhpc1swXT09PXRoaXNbMF0ub3duZXJEb2N1bWVudC5i b2R5KXtyZXR1cm4gby5vZmZzZXQuYm9keU9mZnNldCh0aGlzWzBdKX12YXIgRz10 aGlzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEo9dGhpc1swXS5vd25lckRv Y3VtZW50LEY9Si5ib2R5LEU9Si5kb2N1bWVudEVsZW1lbnQsTD1FLmNsaWVudFRv cHx8Ri5jbGllbnRUb3B8fDAsSz1FLmNsaWVudExlZnR8fEYuY2xpZW50TGVmdHx8 MCxJPUcudG9wKyhzZWxmLnBhZ2VZT2Zmc2V0fHxvLmJveE1vZGVsJiZFLnNjcm9s bFRvcHx8Ri5zY3JvbGxUb3ApLUwsSD1HLmxlZnQrKHNlbGYucGFnZVhPZmZzZXR8 fG8uYm94TW9kZWwmJkUuc2Nyb2xsTGVmdHx8Ri5zY3JvbGxMZWZ0KS1LO3JldHVy bnt0b3A6SSxsZWZ0Okh9fX1lbHNle28uZm4ub2Zmc2V0PWZ1bmN0aW9uKCl7aWYo IXRoaXNbMF0pe3JldHVybnt0b3A6MCxsZWZ0OjB9fWlmKHRoaXNbMF09PT10aGlz WzBdLm93bmVyRG9jdW1lbnQuYm9keSl7cmV0dXJuIG8ub2Zmc2V0LmJvZHlPZmZz ZXQodGhpc1swXSl9by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRp YWxpemUoKTt2YXIgSj10aGlzWzBdLEc9Si5vZmZzZXRQYXJlbnQsRj1KLE89Si5v d25lckRvY3VtZW50LE0sSD1PLmRvY3VtZW50RWxlbWVudCxLPU8uYm9keSxMPU8u ZGVmYXVsdFZpZXcsRT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKSxOPUoub2Zm c2V0VG9wLEk9Si5vZmZzZXRMZWZ0O3doaWxlKChKPUoucGFyZW50Tm9kZSkmJkoh PT1LJiZKIT09SCl7TT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKTtOLT1KLnNj cm9sbFRvcCxJLT1KLnNjcm9sbExlZnQ7aWYoSj09PUcpe04rPUoub2Zmc2V0VG9w LEkrPUoub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyJiYh KG8ub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzJiYvXnQoYWJs ZXxkfGgpJC9pLnRlc3QoSi50YWdOYW1lKSkpe04rPXBhcnNlSW50KE0uYm9yZGVy VG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEw KXx8MH1GPUcsRz1KLm9mZnNldFBhcmVudH1pZihvLm9mZnNldC5zdWJ0cmFjdHNC b3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJk0ub3ZlcmZsb3chPT0idmlzaWJs ZSIpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNl SW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1FPU19aWYoRS5wb3NpdGlvbj09 PSJyZWxhdGl2ZSJ8fEUucG9zaXRpb249PT0ic3RhdGljIil7Tis9Sy5vZmZzZXRU b3AsSSs9Sy5vZmZzZXRMZWZ0fWlmKEUucG9zaXRpb249PT0iZml4ZWQiKXtOKz1N YXRoLm1heChILnNjcm9sbFRvcCxLLnNjcm9sbFRvcCksSSs9TWF0aC5tYXgoSC5z Y3JvbGxMZWZ0LEsuc2Nyb2xsTGVmdCl9cmV0dXJue3RvcDpOLGxlZnQ6SX19fW8u b2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5pbml0aWFsaXpl ZCl7cmV0dXJufXZhciBMPWRvY3VtZW50LmJvZHksRj1kb2N1bWVudC5jcmVhdGVF bGVtZW50KCJkaXYiKSxILEcsTixJLE0sRSxKPUwuc3R5bGUubWFyZ2luVG9wLEs9 JzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJn aW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDto ZWlnaHQ6MXB4OyI+PGRpdj48L2Rpdj48L2Rpdj48dGFibGUgc3R5bGU9InBvc2l0 aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNv bGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyIgY2VsbHBh ZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkPjwvdGQ+PC90cj48L3Rh YmxlPic7TT17cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2lu OjAsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6 ImhpZGRlbiJ9O2ZvcihFIGluIE0pe0Yuc3R5bGVbRV09TVtFXX1GLmlubmVySFRN TD1LO0wuaW5zZXJ0QmVmb3JlKEYsTC5maXJzdENoaWxkKTtIPUYuZmlyc3RDaGls ZCxHPUguZmlyc3RDaGlsZCxJPUgubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJz dENoaWxkO3RoaXMuZG9lc05vdEFkZEJvcmRlcj0oRy5vZmZzZXRUb3AhPT01KTt0 aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzPShJLm9mZnNldFRvcD09 PTUpO0guc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsSC5zdHlsZS5wb3NpdGlvbj0i cmVsYXRpdmUiO3RoaXMuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNp YmxlPShHLm9mZnNldFRvcD09PS01KTtMLnN0eWxlLm1hcmdpblRvcD0iMXB4Ijt0 aGlzLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PShMLm9mZnNldFRv cD09PTApO0wuc3R5bGUubWFyZ2luVG9wPUo7TC5yZW1vdmVDaGlsZChGKTt0aGlz LmluaXRpYWxpemVkPXRydWV9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24oRSl7by5vZmZz ZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgRz1FLm9m ZnNldFRvcCxGPUUub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90SW5jbHVk ZU1hcmdpbkluQm9keU9mZnNldCl7Rys9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFy Z2luVG9wIix0cnVlKSwxMCl8fDAsRis9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFy Z2luTGVmdCIsdHJ1ZSksMTApfHwwfXJldHVybnt0b3A6RyxsZWZ0OkZ9fX07by5m bi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIEk9MCxIPTAsRjtpZih0 aGlzWzBdKXt2YXIgRz10aGlzLm9mZnNldFBhcmVudCgpLEo9dGhpcy5vZmZzZXQo KSxFPS9eYm9keXxodG1sJC9pLnRlc3QoR1swXS50YWdOYW1lKT97dG9wOjAsbGVm dDowfTpHLm9mZnNldCgpO0oudG9wLT1qKHRoaXMsIm1hcmdpblRvcCIpO0oubGVm dC09aih0aGlzLCJtYXJnaW5MZWZ0Iik7RS50b3ArPWooRywiYm9yZGVyVG9wV2lk dGgiKTtFLmxlZnQrPWooRywiYm9yZGVyTGVmdFdpZHRoIik7Rj17dG9wOkoudG9w LUUudG9wLGxlZnQ6Si5sZWZ0LUUubGVmdH19cmV0dXJuIEZ9LG9mZnNldFBhcmVu dDpmdW5jdGlvbigpe3ZhciBFPXRoaXNbMF0ub2Zmc2V0UGFyZW50fHxkb2N1bWVu dC5ib2R5O3doaWxlKEUmJighL15ib2R5fGh0bWwkL2kudGVzdChFLnRhZ05hbWUp JiZvLmNzcyhFLCJwb3NpdGlvbiIpPT0ic3RhdGljIikpe0U9RS5vZmZzZXRQYXJl bnR9cmV0dXJuIG8oRSl9fSk7by5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9u KEYsRSl7dmFyIEc9InNjcm9sbCIrRTtvLmZuW0ddPWZ1bmN0aW9uKEgpe2lmKCF0 aGlzWzBdKXtyZXR1cm4gbnVsbH1yZXR1cm4gSCE9PWc/dGhpcy5lYWNoKGZ1bmN0 aW9uKCl7dGhpcz09bHx8dGhpcz09ZG9jdW1lbnQ/bC5zY3JvbGxUbyghRj9IOm8o bCkuc2Nyb2xsTGVmdCgpLEY/SDpvKGwpLnNjcm9sbFRvcCgpKTp0aGlzW0ddPUh9 KTp0aGlzWzBdPT1sfHx0aGlzWzBdPT1kb2N1bWVudD9zZWxmW0Y/InBhZ2VZT2Zm c2V0IjoicGFnZVhPZmZzZXQiXXx8by5ib3hNb2RlbCYmZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50W0ddfHxkb2N1bWVudC5ib2R5W0ddOnRoaXNbMF1bR119fSk7by5l YWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihJLEcpe3ZhciBFPUk/Ikxl ZnQiOiJUb3AiLEg9ST8iUmlnaHQiOiJCb3R0b20iLEY9Ry50b0xvd2VyQ2FzZSgp O28uZm5bImlubmVyIitHXT1mdW5jdGlvbigpe3JldHVybiB0aGlzWzBdP28uY3Nz KHRoaXNbMF0sRixmYWxzZSwicGFkZGluZyIpOm51bGx9O28uZm5bIm91dGVyIitH XT1mdW5jdGlvbihLKXtyZXR1cm4gdGhpc1swXT9vLmNzcyh0aGlzWzBdLEYsZmFs c2UsSz8ibWFyZ2luIjoiYm9yZGVyIik6bnVsbH07dmFyIEo9Ry50b0xvd2VyQ2Fz ZSgpO28uZm5bSl09ZnVuY3Rpb24oSyl7cmV0dXJuIHRoaXNbMF09PWw/ZG9jdW1l bnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiJiZkb2N1bWVudC5kb2N1bWVudEVs ZW1lbnRbImNsaWVudCIrR118fGRvY3VtZW50LmJvZHlbImNsaWVudCIrR106dGhp c1swXT09ZG9jdW1lbnQ/TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 WyJjbGllbnQiK0ddLGRvY3VtZW50LmJvZHlbInNjcm9sbCIrR10sZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK0ddLGRvY3VtZW50LmJvZHlbIm9mZnNl dCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK0ddKTpLPT09 Zz8odGhpcy5sZW5ndGg/by5jc3ModGhpc1swXSxKKTpudWxsKTp0aGlzLmNzcyhK LHR5cGVvZiBLPT09InN0cmluZyI/SzpLKyJweCIpfX0pfSkoKTs= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=master.js Content-Type: application/x-javascript; charset=iso-8859-9; name=master.js Content-Location: http://www.radikal.com.tr/data/js/master.js Content-Transfer-Encoding: Base64 CXZhciBtYW5zZXRJbmRleCA9IC0xOw0KCXZhciBhdXRvTWFuc2V0ID0gMTsNCgl2 YXIgYXV0b0R1cnVtID0gMDsNCgl2YXIgbWFuc2V0VGltZW91dCA9IDYwMDA7DQoJ dmFyIG1hbnNldEF1dG9UaW1lb3V0ID0gMTIwMDA7DQoJdmFyIG15VGltZU91dDsN CgkNCiAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpeyANCiAgICAgICAJ TWFuc2V0SGFiZXIoMSxhdXRvTWFuc2V0KTsNCgkJc2V0VGltZW91dCgiQXV0b01h bnNldElzbGVtKCkiLCBtYW5zZXRUaW1lb3V0KTsNCiAgICB9KTsNCgkNCgl2YXIg c2xpZGVyS2F5ZGlyID0gMzI4OyAvL2theW1hIG1pa3RhcmkgcHguDQoJdmFyIG1h eFNsaWRlcktheSA9IC05ODQ7IC8vMyBoYWJlciBrYXlhY2FrIGthZGFyLCB0b3Bs YW0gNiBoYWJlciB2YXIuDQoJDQoJdmFyIHNsaWRlcktheWRpcjIgPSAyNTA7IC8v a2F5bWEgbWlrdGFyaSBweC4NCgl2YXIgbWF4U2xpZGVyS2F5MiA9IC0xMDAwOyAv LzQgaGFiZXIga2F5YWNhayBrYWRhciwgdG9wbGFtIDggaGFiZXIgdmFyLg0KCQ0K CWZ1bmN0aW9uIHlhdGF5U2xpZGVyR2VyaShzKQ0KCXsNCgkJdmFyIG1Lb251bSA9 IHBhcnNlSW50KCQoIiMiICsgcyArICIgdWwiKS5jc3MoIm1hcmdpbi1sZWZ0Iiku cmVwbGFjZSgicHgiLCIiKSk7DQoJCQ0KCQlpZiAobUtvbnVtID09IDApew0KCQkJ aUtheWRpciA9ICBzbGlkZXJLYXlkaXI7DQoJCX0gZWxzZSB7DQoJCQlpS2F5ZGly ID0gcGFyc2VJbnQobUtvbnVtK3NsaWRlcktheWRpcik7DQoJCX0NCgkJDQoJCWlm IChtS29udW0gIT0gMCkkKCIjIiArIHMgKyAiIHVsIikuY3NzKCJtYXJnaW4tbGVm dCIsIGlLYXlkaXIgKyAicHgiKTsNCgl9DQoJDQoJZnVuY3Rpb24geWF0YXlTbGlk ZXJJbGVyaShzKQ0KCXsNCgkJdmFyIG1Lb251bSA9IHBhcnNlSW50KCQoIiMiICsg cyArICIgdWwiKS5jc3MoIm1hcmdpbi1sZWZ0IikucmVwbGFjZSgicHgiLCIiKSk7 DQoJCQ0KCQlpZiAobUtvbnVtID09IDApew0KCQkJaUtheWRpciA9ICItIiArIHNs aWRlcktheWRpcjsNCgkJfSBlbHNlIHsNCgkJCWlLYXlkaXIgPSBwYXJzZUludCht S29udW0tc2xpZGVyS2F5ZGlyKTsNCgkJfQ0KCQkNCgkJaWYgKG1Lb251bSA+IG1h eFNsaWRlcktheSkkKCIjIiArIHMgKyAiIHVsIikuY3NzKCJtYXJnaW4tbGVmdCIs IGlLYXlkaXIgKyAicHgiKTsNCgl9DQoJDQoJZnVuY3Rpb24geWF0YXlTbGlkZXJH ZXJpMihzKQ0KCXsNCgkJdmFyIG1Lb251bSA9IHBhcnNlSW50KCQoIiMiICsgcyAr ICIgdWwiKS5jc3MoIm1hcmdpbi1sZWZ0IikucmVwbGFjZSgicHgiLCIiKSk7DQoJ CQ0KCQlpZiAobUtvbnVtID09IDApew0KCQkJaUtheWRpciA9ICBzbGlkZXJLYXlk aXIyOw0KCQl9IGVsc2Ugew0KCQkJaUtheWRpciA9IHBhcnNlSW50KG1Lb251bStz bGlkZXJLYXlkaXIyKTsNCgkJfQ0KCQkNCgkJaWYgKG1Lb251bSAhPSAwKSQoIiMi ICsgcyArICIgdWwiKS5jc3MoIm1hcmdpbi1sZWZ0IiwgaUtheWRpciArICJweCIp Ow0KCX0NCgkNCglmdW5jdGlvbiB5YXRheVNsaWRlcklsZXJpMihzKQ0KCXsNCgkJ dmFyIG1Lb251bSA9IHBhcnNlSW50KCQoIiMiICsgcyArICIgdWwiKS5jc3MoIm1h cmdpbi1sZWZ0IikucmVwbGFjZSgicHgiLCIiKSk7DQoJCQ0KCQlpZiAobUtvbnVt ID09IDApew0KCQkJaUtheWRpciA9ICItIiArIHNsaWRlcktheWRpcjI7DQoJCX0g ZWxzZSB7DQoJCQlpS2F5ZGlyID0gcGFyc2VJbnQobUtvbnVtLXNsaWRlcktheWRp cjIpOw0KCQl9DQoJCQ0KCQlpZiAobUtvbnVtID4gbWF4U2xpZGVyS2F5MikkKCIj IiArIHMgKyAiIHVsIikuY3NzKCJtYXJnaW4tbGVmdCIsIGlLYXlkaXIgKyAicHgi KTsNCgl9DQoJDQoJDQoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqLw0KCWZ1 bmN0aW9uIEF1dG9NYW5zZXRJc2xlbSgpDQoJew0KCQlpZiAoYXV0b01hbnNldCA9 PSAxKQ0KCQl7DQoJCQlNYW5zZXRJbGVyaSgxKTsNCgkJCXNldFRpbWVvdXQoIkF1 dG9NYW5zZXRJc2xlbSgpIiwgbWFuc2V0VGltZW91dCk7DQoJCX0gZWxzZSB7DQoJ CQlzZXRUaW1lb3V0KCJBdXRvTWFuc2V0SXNsZW0oKSIsIG1hbnNldFRpbWVvdXQp Ow0KCQl9DQoJfQ0KCQ0KCQ0KCWZ1bmN0aW9uIE1hbnNldEtvbnRyb2woKQ0KCXsN CgkJaWYgKGF1dG9NYW5zZXQgPT0gMSkNCgkJew0KCQkJTWFuc2V0SWxlcmkoMSk7 DQoJCQlzZXRUaW1lb3V0KCJNYW5zZXRLb250cm9sKCkiLCBtYW5zZXRBdXRvVGlt ZW91dCk7DQoJCX0gZWxzZSB7DQoJCQlzZXRUaW1lb3V0KCJNYW5zZXRLb250cm9s KCkiLCBtYW5zZXRBdXRvVGltZW91dCk7DQoJCX0NCgl9DQoJDQoJZnVuY3Rpb24g TWFuc2V0SGFiZXIodCwgX2F1dG9NYW5zZXQpew0KCQlpZiAoX2F1dG9NYW5zZXQg PT0gMCAmJiBhdXRvTWFuc2V0ID09IDEpIGF1dG9NYW5zZXQgPSAwOw0KCQltYW5z ZXRJbmRleCA9IHQ7DQoJCSQoIi5oYWJlcmxlciBsaSIpLmhpZGUoKTsNCgkJJCgi I21hbnNldC1oYWJlci1pY2VyaWstIiArIHQpLnNob3coKTsNCgkJJCgiLmhhYmVy bGVyLXNheWkgbGkgYSIpLmNzcygiYmFja2dyb3VuZC1wb3NpdGlvbiIsIjBweCA2 cHgiKTsNCgkJJCgiI21hbnNldC1oYWJlci1saW5rLSIgKyB0KS5jc3MoImJhY2tn cm91bmQtcG9zaXRpb24iLCJjZW50ZXIgLTMwcHgiKTsNCgl9DQoJDQoJZnVuY3Rp b24gTWFuc2V0RGV2YW0oKQ0KCXsNCgkJYXV0b01hbnNldCA9IDE7DQoJfQ0KCQ0K CWZ1bmN0aW9uIE1hbnNldElsZXJpKF9hdXRvTWFuc2V0KXsNCgkJdmFyIG5IYWJl ciA9IHBhcnNlSW50KG1hbnNldEluZGV4KzEpOw0KCQlpZiAobkhhYmVyIDwgMTMp ICB7DQoJCQlNYW5zZXRIYWJlcihuSGFiZXIsX2F1dG9NYW5zZXQpOw0KCQl9IGVs c2Ugew0KCQkJTWFuc2V0SGFiZXIoMSxfYXV0b01hbnNldCk7DQoJCX0NCgl9DQoJ DQoJZnVuY3Rpb24gQXV0b01hbnNldElwdGFsKCkNCgl7DQoJCWF1dG9NYW5zZXQg PSAwOw0KCQlzZXRUaW1lb3V0KCJBdXRvTWFuc2V0QmFzbGF0KCkiLCBtYW5zZXRB dXRvVGltZW91dCk7DQoJfQ0KCQ0KCWZ1bmN0aW9uIEF1dG9NYW5zZXRCYXNsYXQo KXthdXRvTWFuc2V0ID0gMTtBdXRvTWFuc2V0SXNsZW0oYXV0b01hbnNldCk7fQ0K CQ0KCWZ1bmN0aW9uIE1hbnNldEdlcmkoX2F1dG9NYW5zZXQpew0KCQl2YXIgbkhh YmVyID0gcGFyc2VJbnQobWFuc2V0SW5kZXgtMSk7DQoJCWlmIChuSGFiZXIgPiAw KSAgew0KCQkJTWFuc2V0SGFiZXIobkhhYmVyLF9hdXRvTWFuc2V0KTsNCgkJfSBl bHNlIHsNCgkJCU1hbnNldEhhYmVyKDEyLF9hdXRvTWFuc2V0KTsNCgkJfQ0KCX0N Cg0KCS8qKioqKioqKioqKioqKioqKioqKioqKioqKi8NCgkNCglmdW5jdGlvbiBH ZXRUYWJOZXdzKHQpew0KCQl2YXIgbiA9IHQtMTsNCgkJJCgiLm5ld3MtY29udGVu dCAubmMiKS5oaWRlKCk7DQoJCSQoIi5uZXdzLXRhYiBsaSIpLnJlbW92ZUNsYXNz KCk7DQoJCSQoIiNuZXdzLXRhYi0iICsgbikuYWRkQ2xhc3MoInRhYi1maXJzdCIp Ow0KCQkkKCIjbmV3cy10YWItIiArIHQpLmFkZENsYXNzKCJ0YWItc2VsZWN0Iik7 CQ0KCQkkKCIjbmV3cy1jb250ZW50LSIgKyB0KS5zaG93KCk7DQoJfQ0KCQ0KCWZ1 bmN0aW9uIFdlYXRoZXJDaXR5KCl7JCgiI3dlYXRoZXItY2l0eS1saXN0IikuY3Nz KCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpO30JDQoJDQoJZnVuY3Rpb24gV2VhdGhl ckNpdHlDbG9zZSgpDQoJew0KCQkkKCIjd2VhdGhlci1jaXR5LWxpc3QiKS5jc3Mo InZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCgl9DQoJDQoJZnVuY3Rpb24gV2VhdGhl ckNoYW5jZUNpdHkoaSkNCgl7DQoJCSQoIiN3ZWF0aGVyLWxpc3QgbGkiKS5oaWRl KCk7DQoJCSQoIiN3ZWF0aGVyLWNpdHktIiArIGkpLnNob3coKTsNCgkJV2VhdGhl ckNpdHlDbG9zZSgpOw0KCX0= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=BaseScript.js Content-Type: application/x-javascript; charset=utf-8; name=BaseScript.js Content-Location: http://www.radikal.com.tr/D/j/3/BaseScript.js Content-Transfer-Encoding: Base64 77u/YWhhbmRhaG9sZGVyID0gZmFsc2U7DQpmdW5jdGlvbiBxdWVyeVN0cmluZ0dl dFZhbHVlKHBhcmFtKSANCnsNCiAgIHZhciBVUkwgPSBsb2NhdGlvbi5ocmVmDQog ICBpZihwYXJhbSE9bnVsbCkgew0KICAgdmFyIHJlZ0V4ID0gbmV3IFJlZ0V4cCgi KFxcP3wmKSgiK3BhcmFtKyI9KSguKj8pKCZ8JHwjKSIsImkiKQ0KICAgdmFyIGV4 ZWMgPSByZWdFeC5leGVjKFVSTCkNCiAgIHZhciBTb251YyA9IFJlZ0V4cC4kMw0K fSANCmVsc2UgDQp7DQogICB2YXIgcmVnRXggPSBuZXcgUmVnRXhwKCIoXFw/KSgu Kj8pKCQpIiwiaSIpDQogICB2YXIgZXhlYyA9IHJlZ0V4LmV4ZWMoVVJMKQ0KICAg dmFyIFNvbnVjID0gUmVnRXhwLiQyDQp9DQogICByZXR1cm4oU29udWMpDQp9DQoN Cg0KZnVuY3Rpb24gSXNNYWlsVmFsaWQodmFsdWUpDQp7DQogICAgdmFyIHggPSB2 YWx1ZTsNCiAgICB2YXIgZmlsdGVyICA9IC9eKFthLXpBLVowLTlfXC5cLV0pK1xA KChbYS16QS1aMC05XC1dKStcLikrKFthLXpBLVowLTldezIsNH0pKyQvOw0KICAg IGlmICghZmlsdGVyLnRlc3QoeCkpDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAg ICBlbHNlDQogICAgICAgIHJldHVybiB0cnVlOyANCn0NCmZ1bmN0aW9uIGNoYW5n ZUNsYXNzKG9iaklkLGNzc0NsYXNzKQ0Kew0KICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKG9iaklkKS5jbGFzc05hbWUgPSBjc3NDbGFzczsNCn0NCg0KZnVuY3Rp b24gT3BlblBvcHVwKHBhZ2VMaW5rLHdpZHRoLGhlaWdodCxwb3NpdGlvblRvcCxw b3NpdGlvbkxlZnQscGFyVXNlU2Nyb2xsQmFyKSANCnsNCiAgICBwb3B1cFdpbj13 aW5kb3cub3BlbihwYWdlTGluaywnbXlOZXdXaW4nLCdtZW51YmFyPTEscmVzaXph YmxlPTEsd2lkdGg9Jyt3aWR0aCsnLGhlaWdodD0nK2hlaWdodCsnLHRvcD0nK3Bv c2l0aW9uVG9wKycsbGVmdD0nK3Bvc2l0aW9uTGVmdCsnLHNjcm9sbGJhcnM9Jytw YXJVc2VTY3JvbGxCYXIpDQogICAgcmV0dXJuIHBvcHVwV2luOw0KfQ0KZnVuY3Rp b24gT3BlblBvcHVwV2l0aE91dFJldHVybihwYWdlTGluayx3aWR0aCxoZWlnaHQs cG9zaXRpb25Ub3AscG9zaXRpb25MZWZ0LHBhclVzZVNjcm9sbEJhcikgDQp7DQog ICAgcG9wdXBXaW49d2luZG93Lm9wZW4ocGFnZUxpbmssJ215TmV3V2luJywnbWVu dWJhcj0xLHJlc2l6YWJsZT0xLHdpZHRoPScrd2lkdGgrJyxoZWlnaHQ9JytoZWln aHQrJyx0b3A9Jytwb3NpdGlvblRvcCsnLGxlZnQ9Jytwb3NpdGlvbkxlZnQrJyxz Y3JvbGxiYXJzPScrcGFyVXNlU2Nyb2xsQmFyKQ0KICAgIH0NCg0KZnVuY3Rpb24g TmV3V2luZG93KFNheWZhLEVuLEJveSkgew0KCXdpbmRvdy5vcGVuKFNheWZhLCAn QmFzbGlrJywgImhlaWdodD0iK0JveSsiLHdpZHRoPSIrRW4rIix0b3A9MjAwLGxl ZnQ9MjAwLHN0YXR1cz15ZXMsdG9vbGJhcj1ubyxtZW51YmFyPW5vLGxvY2F0aW9u PW5vLHNjcm9sbGJhcnM9bm8iKTsNCn0NCmZ1bmN0aW9uIE5ld1dpbmRvd0ltYWdl KFNheWZhLEVuLEJveSkgew0KCXdpbmRvdy5vcGVuKFNheWZhLCAnQmFzbGlrJywg ImhlaWdodD0iK0JveSsiLHdpZHRoPSIrRW4rIix0b3A9MjAwLHJlc2l6YWJsZT0x LGxlZnQ9MjAwLHN0YXR1cz15ZXMsdG9vbGJhcj1ubyxtZW51YmFyPW5vLGxvY2F0 aW9uPW5vLHNjcm9sbGJhcnM9eWVzIik7DQp9DQpmdW5jdGlvbiBHZXRieUF0dHIg KCBuYW1lLCB0YWcgKSB7DQogICAgdmFyIHJlc3VsdHMgPSBuZXcgQXJyYXkoKTsN CiAgICB2YXIgZWxlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi KiIpOw0KICAgIHZhciBsZW4gPSBlbGVtcy5sZW5ndGg7DQoNCiAgICBpZiAobmFt ZSA9PSAiY2xhc3MiKSB7DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVu OyBpKyspIHsNCiAgICAgICAgICAgIGlmIChlbGVtc1tpXS5jbGFzc05hbWUpIHsg ICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2go ZWxlbXNbaV0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHJl dHVybiByZXN1bHRzOw0KICAgIH0gZWxzZSBpZiAobmFtZSA9PSAiZm9yIiAmJiBk b2N1bWVudC5hbGwpIHsNCiAgICAgICAgbmFtZSA9ICJodG1sRm9yIjsNCiAgICB9 DQoNCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7DQogICAgICAg IGlmIChlbGVtc1tpXS5nZXRBdHRyaWJ1dGUobmFtZSkpIHsNCiAgICAgICAgICAg IHJlc3VsdHMucHVzaChlbGVtc1tpXSk7DQogICAgICAgIH0NCiAgICB9DQogICAg cmV0dXJuIHJlc3VsdHM7DQp9DQoNCmZ1bmN0aW9uIGZpbmRQb3NYKG9iaikNCiAg ew0KICAgIHZhciBjdXJsZWZ0ID0gMDsNCiAgICBpZihvYmoub2Zmc2V0UGFyZW50 KQ0KICAgICAgICB3aGlsZSgxKSANCiAgICAgICAgew0KICAgICAgICAgIGN1cmxl ZnQgKz0gb2JqLm9mZnNldExlZnQ7DQogICAgICAgICAgaWYoIW9iai5vZmZzZXRQ YXJlbnQpDQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgICBvYmogPSBvYmou b2Zmc2V0UGFyZW50Ow0KICAgICAgICB9DQogICAgZWxzZSBpZihvYmoueCkNCiAg ICAgICAgY3VybGVmdCArPSBvYmoueDsNCiAgICByZXR1cm4gY3VybGVmdDsNCiAg fQ0KDQogIGZ1bmN0aW9uIGZpbmRQb3NZKG9iaikNCiAgew0KICAgIHZhciBjdXJ0 b3AgPSAwOw0KICAgIGlmKG9iai5vZmZzZXRQYXJlbnQpDQogICAgICAgIHdoaWxl KDEpDQogICAgICAgIHsNCiAgICAgICAgICBjdXJ0b3AgKz0gb2JqLm9mZnNldFRv cDsNCiAgICAgICAgICBpZighb2JqLm9mZnNldFBhcmVudCkNCiAgICAgICAgICAg IGJyZWFrOw0KICAgICAgICAgIG9iaiA9IG9iai5vZmZzZXRQYXJlbnQ7DQogICAg ICAgIH0NCiAgICBlbHNlIGlmKG9iai55KQ0KICAgICAgICBjdXJ0b3AgKz0gb2Jq Lnk7DQogICAgcmV0dXJuIGN1cnRvcDsNCiAgfQ0KZnVuY3Rpb24gd29yZHdyYXAo cGFyU3RyaW5nLHBhckNoYXJBbW91bnQpDQp7DQogICAgaHRtbCA9ICIiOw0KCXBv aW50ZXIgPSAwOw0KCWluZGV4ID0gLTE7DQoJVG90YWxDaGFyQW1vdW50ID0gcGFy U3RyaW5nLmxlbmd0aDsNCgkgICAgd2hpbGUgKHBvaW50ZXIgPCBUb3RhbENoYXJB bW91bnQgKQ0KCSAgICB7DQoJCSAgICBpbmRleCA9IChwYXJTdHJpbmcuc3Vic3Ry aW5nKHBvaW50ZXIscGFyQ2hhckFtb3VudCtwb2ludGVyKSkuaW5kZXhPZignICcp Ow0KCQkgICAgaWYoaW5kZXggIT0gLTEgfHwgcGFyU3RyaW5nLnN1YnN0cmluZyhw b2ludGVyLHBhckNoYXJBbW91bnQrcG9pbnRlcikubGVuZ3RoICE9IHBhckNoYXJB bW91bnQpLy8gYm/Fn2x1ayB2YXJzYQ0KCQkgICAgew0KICAgICAgICAgICAgICAg IGlmKHBhclN0cmluZy5zdWJzdHJpbmcocG9pbnRlcixwYXJDaGFyQW1vdW50K3Bv aW50ZXIpLmxlbmd0aCAhPSBwYXJDaGFyQW1vdW50KQ0KICAgICAgICAgICAgICAg IHsNCiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBwYXJTdHJpbmcuc3Vic3Ry aW5nKHBvaW50ZXIscGFyQ2hhckFtb3VudCtwb2ludGVyKTsNCiAgICAgICAgICAg ICAgICAgICAgcG9pbnRlciA9IFRvdGFsQ2hhckFtb3VudDsNCiAgICAgICAgICAg ICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsN CiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBwYXJTdHJpbmcuc3Vic3RyaW5n KHBvaW50ZXIsaW5kZXgrMStwb2ludGVyKTsNCgkJICAgICAgICAgICAgcG9pbnRl ciA9IHBvaW50ZXIraW5kZXgrMTsNCgkJICAgICAgICB9DQoJCSAgICAgICAgDQoJ ICAgICAgICB9DQoJICAgICAgICBlbHNlDQoJICAgICAgICB7DQoJCSAgICAgICAg aHRtbCs9ICI8ZGl2PiI7DQoJCSAgICAgICAgaHRtbCs9IHBhclN0cmluZy5zdWJz dHJpbmcocG9pbnRlcixwYXJDaGFyQW1vdW50K3BvaW50ZXIpOw0KCQkgICAgICAg IGh0bWwgKz0gIjwvZGl2PiI7DQoJCSAgICAgICAgcG9pbnRlciA9IHBvaW50ZXIr cGFyQ2hhckFtb3VudDsNCgkgICAgICAgIH0NCgl9DQoJICAgIHJldHVybiBodG1s Ow0KfQ0KDQpmdW5jdGlvbiBNb2RhbEFjKFNheWZhLEVuLEJveSkgew0KCXdpbmRv dy5zaG93TW9kYWxEaWFsb2coU2F5ZmEsICIiLCAiZGlhbG9nSGVpZ2h0OiIrQm95 KyJweDsgZGlhbG9nV2lkdGg6IitFbisicHg7aGVscDpubztzY3JvbGw6eWVzIik7 DQp9DQoNCmZ1bmN0aW9uIElzTnVtZXJpYyhzdHJTdHJpbmcpDQogICAvLyAgY2hl Y2sgZm9yIHZhbGlkIG51bWVyaWMgc3RyaW5ncwkNCiAgIHsNCiAgIHZhciBzdHJW YWxpZENoYXJzID0gIjAxMjM0NTY3ODkuIjsNCiAgIHZhciBzdHJDaGFyOw0KICAg dmFyIGJsblJlc3VsdCA9IHRydWU7DQoNCiAgIGlmIChzdHJTdHJpbmcubGVuZ3Ro ID09IDApIHJldHVybiBmYWxzZTsNCg0KICAgLy8gIHRlc3Qgc3RyU3RyaW5nIGNv bnNpc3RzIG9mIHZhbGlkIGNoYXJhY3RlcnMgbGlzdGVkIGFib3ZlDQogICBmb3Ig KGkgPSAwOyBpIDwgc3RyU3RyaW5nLmxlbmd0aCAmJiBibG5SZXN1bHQgPT0gdHJ1 ZTsgaSsrKQ0KICAgICAgew0KICAgICAgc3RyQ2hhciA9IHN0clN0cmluZy5jaGFy QXQoaSk7DQogICAgICBpZiAoc3RyVmFsaWRDaGFycy5pbmRleE9mKHN0ckNoYXIp ID09IC0xKQ0KICAgICAgICAgew0KICAgICAgICAgYmxuUmVzdWx0ID0gZmFsc2U7 DQogICAgICAgICB9DQogICAgICB9DQogICByZXR1cm4gYmxuUmVzdWx0Ow0KICAg fQ0KDQoNCg0KDQoNCi8vR2xvYmFsIFhNTEhUVFAgUmVxdWVzdCBvYmplY3QNCnZh ciBYbWxIdHRwOw0KdmFyIHNsY1NlaGlyQ2xpZW50SUQgPSAnc2xjU2VoaXInOw0K dmFyIHNsY0JlbGVkaXllQ2xpZW50SUQgPSAnc2xjQmVsZWRpeWUnOw0KdmFyIHNs Y1BhcnRpQ2xpZW50SUQgPSAnc2xjUGFydGknOw0KDQoNCg0KDQoNCmZ1bmN0aW9u IE9uU2xjUGFydGlDaGFuZ2VkKCkNCnsNCiAgICBSZWRpcmVjdElmU2VoaXJBbmRQ YXJ0aUJvdGhTZWxlY3RlZCgpOyAgICANCn0NCg0KZnVuY3Rpb24gUmVkaXJlY3RJ ZlNlaGlyQW5kUGFydGlCb3RoU2VsZWN0ZWQoKQ0Kew0KICAgIHZhciBzZWhpckxp c3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzbGNTZWhpckNsaWVudElEKTsN CgkvL0dldHRpbmcgdGhlIHNlbGVjdGVkIHNlaGlyDQoJdmFyIHNlbGVjdGVkU2Vo aXJJRCA9IHNlaGlyTGlzdC5vcHRpb25zW3NlaGlyTGlzdC5zZWxlY3RlZEluZGV4 XS52YWx1ZTsJDQoJDQoJaWYoc2VsZWN0ZWRTZWhpcklEICE9ICcnKQ0KCXsJICAN CgkgICAgdmFyIHBhcnRpTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNs Y1BhcnRpQ2xpZW50SUQpOw0KCSAgICAvL0dldHRpbmcgdGhlIHNlbGVjdGVkIHBh cnRpDQoJICAgIHZhciBzZWxlY3RlZFBhcnRpSUQgPSBwYXJ0aUxpc3Qub3B0aW9u c1twYXJ0aUxpc3Quc2VsZWN0ZWRJbmRleF0udmFsdWU7DQoJICAgIA0KCSAgICBp ZihzZWxlY3RlZFBhcnRpSUQgIT0gJycpDQoJICAgIHsNCgkgICAgICAgIGRvY3Vt ZW50LmxvY2F0aW9uID0gImh0dHA6Ly93d3cucmFkaWthbC5jb20udHIvc2VjaW0y MDA5L3NlY2ltcGFydGlkZXRheS5hc3B4P3NlaGlyaWQ9IiArIHNlbGVjdGVkU2Vo aXJJRCArICImIiArICJwYXJ0aWlkPSIgKyBzZWxlY3RlZFBhcnRpSUQ7DQoJICAg IH0JICAgIAkJDQoJfQkNCn0NCg0KLy8vLy8vLy8vLy8vLy8vLw0KLy8vLy8vLy8v Ly8vLy8vIFNlaGlyIEJlbGVkaXllIGFqYXgNCi8vLy8vLy8vLy8vLy8vDQovL0Ny ZWF0aW5nIGFuZCBzZXR0aW5nIHRoZSBpbnN0YW5jZSBvZiBhcHByb3ByaWF0ZSBY TUxIVFRQIFJlcXVlc3Qgb2JqZWN0IHRvIA0KLy9hICJYbWxIdHRwIiB2YXJpYWJs ZSAgDQpmdW5jdGlvbiBDcmVhdGVYbWxIdHRwKCkNCnsNCiAgICAvL0NyZWF0aW5n IG9iamVjdCBvZiBYTUxIVFRQIGluIElFDQogICAgdHJ5DQogICAgew0KICAgICAg ICBYbWxIdHRwID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7 DQogICAgfQ0KICAgIGNhdGNoKGUpDQogICAgew0KICAgICAgICB0cnkNCiAgICAg ICAgew0KICAgICAgICAgICAgWG1sSHR0cCA9IG5ldyBBY3RpdmVYT2JqZWN0KCJN aWNyb3NvZnQuWE1MSFRUUCIpOw0KICAgICAgICB9IA0KICAgICAgICBjYXRjaChv YykNCiAgICAgICAgew0KICAgICAgICAgICAgWG1sSHR0cCA9IG51bGw7DQogICAg ICAgIH0NCiAgICB9DQogICAgLy9DcmVhdGluZyBvYmplY3Qgb2YgWE1MSFRUUCBp biBNb3ppbGxhIGFuZCBTYWZhcmkgDQogICAgaWYoIVhtbEh0dHAgJiYgdHlwZW9m IFhNTEh0dHBSZXF1ZXN0ICE9ICJ1bmRlZmluZWQiKSANCiAgICB7DQogICAgICAg IFhtbEh0dHAgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsNCiAgICB9DQp9DQoNCg0K ZnVuY3Rpb24gT25TbGNTZWhpckNoYW5nZWQoKQ0KeyAgICANCiAgICBSZWRpcmVj dElmU2VoaXJBbmRQYXJ0aUJvdGhTZWxlY3RlZCgpOyAgIA0KICAgIHZhciBzZWhp ckxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzbGNTZWhpckNsaWVudElE KTsNCgkvL0dldHRpbmcgdGhlIHNlbGVjdGVkIHNlaGlyDQoJdmFyIHNlbGVjdGVk U2VoaXJJRCA9IHNlaGlyTGlzdC5vcHRpb25zW3NlaGlyTGlzdC5zZWxlY3RlZElu ZGV4XS52YWx1ZTsNCglDbGVhckJlbGVkaXllTGlzdEl0ZW1zKCk7DQoJDQoJaWYo c2VsZWN0ZWRTZWhpcklEID09ICcnKQ0KCXsJICANCgkgICAgcmV0dXJuOwkNCgl9 DQoJDQogICAgdmFyIGJlbGVkaXllTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKHNsY0JlbGVkaXllQ2xpZW50SUQpOw0KICAgICAgICAgICANCiAgICB2YXIg cmVxdWVzdFVybCA9ICIvc2VjaW0yMDA5L2FwaS9iZWxlZGl5ZWxpc3QuYXNoeCIg KyAiP3NlaGlyaWQ9IiArIHNlbGVjdGVkU2VoaXJJRDsNCiAgICBDcmVhdGVYbWxI dHRwKCk7DQogICAgIA0KICAgIC8vIElmIGJyb3dzZXIgc3VwcG9ydHMgWE1MSFRU UFJlcXVlc3Qgb2JqZWN0DQogICAgaWYoWG1sSHR0cCkNCiAgICB7DQogICAgICAg IC8vU2V0dGluZyB0aGUgZXZlbnQgaGFuZGxlciBmb3IgdGhlIHJlc3BvbnNlDQog ICAgICAgIFhtbEh0dHAub25yZWFkeXN0YXRlY2hhbmdlID0gSGFuZGxlU2xjU2Vo aXJDaGFuZ2VkUmVzcG9uc2U7DQoNCiAgICAgICAgLy9Jbml0aWFsaXplcyB0aGUg cmVxdWVzdCBvYmplY3Qgd2l0aCBHRVQgKE1FVEhPRCBvZiBwb3N0aW5nKSwgDQog ICAgICAgIC8vUmVxdWVzdCBVUkwgYW5kIHNldHMgdGhlIHJlcXVlc3QgYXMgYXN5 bmNocm9ub3VzLg0KICAgICAgICBYbWxIdHRwLm9wZW4oIkdFVCIsIHJlcXVlc3RV cmwsICB0cnVlKTsNCg0KICAgICAgICAvL1NlbmRzIHRoZSByZXF1ZXN0IHRvIHNl cnZlcg0KICAgICAgICBYbWxIdHRwLnNlbmQobnVsbCk7ICANCiAgICB9DQogfQ0K ICAgDQogZnVuY3Rpb24gSGFuZGxlU2xjU2VoaXJDaGFuZ2VkUmVzcG9uc2UoKQ0K IHsNCiAgICBpZihYbWxIdHRwLnJlYWR5U3RhdGUgPT0gNCkNCiAgICAgew0KICAg ICAgICAvLyBUbyBtYWtlIHN1cmUgdmFsaWQgcmVzcG9uc2UgaXMgcmVjZWl2ZWQg ZnJvbSB0aGUgc2VydmVyLCANCiAgICAgICAgLy8gMjAwIG1lYW5zIHJlc3BvbnNl IHJlY2VpdmVkIGlzIE9LDQogICAgICAgIGlmKFhtbEh0dHAuc3RhdHVzID09IDIw MCkNCiAgICAgICAgeyAgDQogICAgICAgICAgICBDbGVhckFuZFNldEJlbGVkaXll TGlzdEl0ZW1zKFhtbEh0dHAucmVzcG9uc2VUZXh0KTsNCiAgICAgICAgfQ0KICAg ICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIGFsZXJ0KCJUaGVyZSB3 YXMgYSBwcm9ibGVtIHJldHJpZXZpbmcgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuIiAp Ow0KICAgICAgICB9DQogICAgIH0NCiB9DQogDQogDQogZnVuY3Rpb24gQ2xlYXJC ZWxlZGl5ZUxpc3RJdGVtcygpDQogew0KICAgIHZhciBiZWxlZGl5ZUxpc3QgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZChzbGNCZWxlZGl5ZUNsaWVudElEKTsNCiAg ICANCiAgICAvL0NsZWFycyB0aGUgYmVsZWRpeWUgY29tYm8gYm94IGNvbnRlbnRz Lg0KICAgIGZvciAodmFyIGNvdW50ID0gYmVsZWRpeWVMaXN0Lm9wdGlvbnMubGVu Z3RoLTE7IGNvdW50ID4wOyBjb3VudC0tKQ0KICAgIHsNCiAgICAgICAgYmVsZWRp eWVMaXN0Lm9wdGlvbnNbY291bnRdID0gbnVsbDsNCiAgICB9DQogfQ0KIA0KIGZ1 bmN0aW9uIENsZWFyQW5kU2V0QmVsZWRpeWVMaXN0SXRlbXMocmVzcG9uc2VUZXh0 KQ0KIHsNCiAgICB2YXIgYmVsZWRpeWVMaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoc2xjQmVsZWRpeWVDbGllbnRJRCk7ICAgICAgICANCiAgICB2YXIgYmVs ZWRpeWVOb2RlcyA9IHJlc3BvbnNlVGV4dC5zcGxpdCgiOyIpOyAgICAgICANCiAg ICB2YXIgVmFsdWVBbmRUZXh0Ow0KICAgIHZhciBzZWxlY3RWYWx1ZTsNCiAgICB2 YXIgc2VsZWN0VGV4dDsNCiAgICB2YXIgb3B0aW9uSXRlbTsNCiAgICANCiAgICAv L0FkZCBuZXcgYmVsZWRpeWUgbGlzdCB0byB0aGUgc3RhdGUgY29tYm8gYm94Lg0K ICAgIGZvciAodmFyIGNvdW50ID0gMDsgY291bnQgPCBiZWxlZGl5ZU5vZGVzLmxl bmd0aDsgY291bnQrKykNCiAgICB7DQogICAgICAgIFZhbHVlQW5kVGV4dCA9IChi ZWxlZGl5ZU5vZGVzW2NvdW50XSkuc3BsaXQoIiMiKTsNCiAgICAgICAgc2VsZWN0 VmFsdWUgPSBWYWx1ZUFuZFRleHRbMF07DQogICAgICAgIHNlbGVjdFRleHQgPSBW YWx1ZUFuZFRleHRbMV07DQogICAgICAgICAgICAgICAgDQogICAgICAgIG9wdGlv bkl0ZW0gPSBuZXcgT3B0aW9uKHNlbGVjdFRleHQsIHNlbGVjdFZhbHVlICwgIGZh bHNlLCBmYWxzZSk7ICAgICAgICANCiAgICAgICAgYmVsZWRpeWVMaXN0Lm9wdGlv bnNbYmVsZWRpeWVMaXN0Lmxlbmd0aF0gPSBvcHRpb25JdGVtOw0KICAgIH0NCiB9 DQogDQovLy8vLy8vLy8vLy8vLw0KLy8vLy8vLy8vLy8vLy8gRW5kIC0gU2VoaXIg QmVsZWRpeWUgYWpheA0KLy8vLy8vLy8vLy8vLw0KIA0KIA0KZnVuY3Rpb24gT25T bGNCZWxlZGl5ZUNoYW5nZWQoKQ0Kew0KICAgIHZhciBiZWxlZGl5ZUxpc3QgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZChzbGNCZWxlZGl5ZUNsaWVudElEKTsNCgkv L0dldHRpbmcgdGhlIHNlbGVjdGVkIHNlaGlyDQoJdmFyIHNlbGVjdGVkQmVsZWRp eWVJRCA9IGJlbGVkaXllTGlzdC5vcHRpb25zW2JlbGVkaXllTGlzdC5zZWxlY3Rl ZEluZGV4XS52YWx1ZTsNCgkJCQ0KCQ0KCWlmKHNlbGVjdGVkQmVsZWRpeWVJRCAh PSAnJykNCgl7DQoJICAgIHZhciBzZWhpckxpc3QgPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZChzbGNTZWhpckNsaWVudElEKTsNCgkgICAgdmFyIHNlbGVjdGVkU2Vo aXJJRCA9IHNlaGlyTGlzdC5vcHRpb25zW3NlaGlyTGlzdC5zZWxlY3RlZEluZGV4 XS52YWx1ZTsJICAgICAgDQoJICAgIGRvY3VtZW50LmxvY2F0aW9uID0gImh0dHA6 Ly93d3cucmFkaWthbC5jb20udHIvc2VjaW0yMDA5L3NlY2ltaWxkZXRheS5hc3B4 P2JlbGVkaXllaWQ9IiArIHNlbGVjdGVkQmVsZWRpeWVJRCArICImc2VoaXJpZD0i ICsgc2VsZWN0ZWRTZWhpcklEOw0KCX0JDQp9DQoNCmZ1bmN0aW9uIE9uQnRuU3Vi bWl0Q2xpY2tlZCgpDQp7DQogICAgLy9TZWNpbGVuIHNlaGlyDQogICAgdmFyIHNl aGlyTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNsY1NlaGlyQ2xpZW50 SUQpOw0KCXZhciBzZWxlY3RlZFNlaGlySUQgPSBzZWhpckxpc3Qub3B0aW9uc1tz ZWhpckxpc3Quc2VsZWN0ZWRJbmRleF0udmFsdWU7DQoJDQoJdmFyIHBhcnRpTGlz dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNsY1BhcnRpQ2xpZW50SUQpOw0K CS8vR2V0dGluZyB0aGUgc2VsZWN0ZWQgc2VoaXINCgl2YXIgc2VsZWN0ZWRQYXJ0 aUlEID0gcGFydGlMaXN0Lm9wdGlvbnNbcGFydGlMaXN0LnNlbGVjdGVkSW5kZXhd LnZhbHVlOw0KICAgIA0KICAgIA0KICAgICAgICBpZihzZWxlY3RlZFNlaGlySUQg IT0gIiIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9u ID0gImh0dHA6Ly93d3cucmFkaWthbC5jb20udHIvc2VjaW0yMDA5L3NlY2ltaWxk ZXRheS5hc3B4P3NlaGlyaWQ9IiArIHNlbGVjdGVkU2VoaXJJRDsNCiAgICAgICAg ICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgaWYoc2Vs ZWN0ZWRQYXJ0aUlEICE9ICIiKQ0KICAgICAgICB7ICAgICAgICANCiAgICAgICAg ICAgIGRvY3VtZW50LmxvY2F0aW9uID0gImh0dHA6Ly93d3cucmFkaWthbC5jb20u dHIvc2VjaW0yMDA5L3NlY2ltcGFydGlkZXRheS5hc3B4P3BhcnRpaWQ9IiArIHNl bGVjdGVkUGFydGlJRDsNCiAgICAgICAgICAgIHJldHVybjsgICAgICAgICAgICAg ICAgICAgIA0KICAgICAgICB9DQogICAgICAgIHdpbmRvdy5hbGVydCgiTMO8dGZl biBhcmFtYSBrcml0ZXJpIHNlw6dpbi4iKSAgICAgICAgICAgICAgIA0KICAgIA0K fQ0KDQpmdW5jdGlvbiBDaGFuZ2VDaXR5RGV0YWlsKG9iaikNCnsNCiAgICBkb2N1 bWVudC5sb2NhdGlvbiA9ICJodHRwOi8vd3d3LnJhZGlrYWwuY29tLnRyL3NlY2lt MjAwOS9zZWNpbWlsZGV0YXkuYXNweD9zZWhpcmlkPSIrb2JqLm9wdGlvbnNbb2Jq LnNlbGVjdGVkSW5kZXhdLnZhbHVlOw0KfQ0KDQp2YXIgQ29va2llcyA9IHsNCiAg ICBpbml0OiBmdW5jdGlvbigpIHsNCiAgICAgICAgdmFyIGFsbENvb2tpZXMgPSBk b2N1bWVudC5jb29raWUuc3BsaXQoJzsgJyk7DQogICAgICAgIGZvciAodmFyIGkg PSAwOyBpIDwgYWxsQ29va2llcy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAg dmFyIGNvb2tpZVBhaXIgPSBhbGxDb29raWVzW2ldLnNwbGl0KCc9Jyk7DQogICAg ICAgICAgICB0aGlzW2Nvb2tpZVBhaXJbMF1dID0gY29va2llUGFpclsxXTsNCiAg ICAgICAgfQ0KICAgIH0sDQogICAgY3JlYXRlOiBmdW5jdGlvbihuYW1lLCB2YWx1 ZSwgZGF5cykgew0KICAgICAgICBpZiAoZGF5cykgew0KICAgICAgICAgICAgdmFy IGRhdGUgPSBuZXcgRGF0ZSgpOw0KICAgICAgICAgICAgZGF0ZS5zZXRUaW1lKGRh dGUuZ2V0VGltZSgpICsgKGRheXMgKiAyNCAqIDYwICogNjAgKiAxMDAwKSk7DQog ICAgICAgICAgICB2YXIgZXhwaXJlcyA9ICI7IGV4cGlyZXM9IiArIGRhdGUudG9H TVRTdHJpbmcoKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHZhciBleHBpcmVz ID0gIiI7DQogICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyAiPSIgKyB2 YWx1ZSArIGV4cGlyZXMgKyAiOyBwYXRoPS8iOw0KICAgICAgICB0aGlzW25hbWVd ID0gdmFsdWU7DQogICAgfSwNCiAgICBlcmFzZTogZnVuY3Rpb24obmFtZSkgew0K ICAgICAgICB0aGlzLmNyZWF0ZShuYW1lLCAnJywgLTEpOw0KICAgICAgICB0aGlz W25hbWVdID0gdW5kZWZpbmVkOw0KICAgIH0NCn07DQpDb29raWVzLmluaXQoKTsN Cg0KDQp2YXIgU2Nyb2xsSGVscGVyID0gew0KICAgIGdldFNjcm9sbFhZIDogZnVu Y3Rpb24oKSB7DQogICAgICAgIHZhciBzY3JPZlggPSAwLCBzY3JPZlkgPSAwOw0K ICAgICAgICBpZiggdHlwZW9mKCB3aW5kb3cucGFnZVlPZmZzZXQgKSA9PSAnbnVt YmVyJyl7DQogICAgICAgICAgICAvL05ldHNjYXBlIGNvbXBsaWFudA0KICAgICAg ICAgICAgc2NyT2ZZID0gd2luZG93LnBhZ2VZT2Zmc2V0Ow0KICAgICAgICAgICAg c2NyT2ZYID0gd2luZG93LnBhZ2VYT2Zmc2V0Ow0KICAgICAgICB9DQogICAgICAg IGVsc2UgaWYoIGRvY3VtZW50LmJvZHkgJiYgKCBkb2N1bWVudC5ib2R5LnNjcm9s bExlZnQgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgKSApIHsNCiAgICAgICAg ICAgIC8vRE9NIGNvbXBsaWFudA0KICAgICAgICAgICAgc2NyT2ZZID0gZG9jdW1l bnQuYm9keS5zY3JvbGxUb3A7DQogICAgICAgICAgICBzY3JPZlggPSBkb2N1bWVu dC5ib2R5LnNjcm9sbExlZnQ7DQogICAgICAgIH0gDQogICAgICAgIGVsc2UgaWYo IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiAoIGRvY3VtZW50LmRvY3VtZW50 RWxlbWVudC5zY3JvbGxMZWZ0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5z Y3JvbGxUb3AgKSApIHsNCiAgICAgICAgICAgIC8vSUU2IHN0YW5kYXJkcyBjb21w bGlhbnQgbW9kZQ0KICAgICAgICAgICAgc2NyT2ZZID0gZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50LnNjcm9sbFRvcDsNCiAgICAgICAgICAgIHNjck9mWCA9IGRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0Ow0KICAgICAgICB9DQogICAg ICAgIHJldHVybiBbIHNjck9mWCwgc2NyT2ZZIF07DQogICAgfSwNCiAgICBzYXZl U2Nyb2xsQ29vcmRpbmF0ZXMgOiBmdW5jdGlvbigpeyAgICAgIA0KICAgICAgQ29v a2llcy5jcmVhdGUoIkVkaXRvci5TY3JvbGxDb29yZGluYXRlcyIsIHRoaXMuZ2V0 U2Nyb2xsWFkoKSwgZmFsc2UpOw0KICAgICAgQ29va2llcy5pbml0KCk7DQogICAg fSwNCiAgICBzY3JvbGxUb1NhdmVkQ29vcmRpbmF0ZXMgOiBmdW5jdGlvbigpew0K ICAgICAgICB2YXIgc2Nyb2xsUG9zaXRpb25zID0gQ29va2llc1siRWRpdG9yLlNj cm9sbENvb3JkaW5hdGVzIl07DQogICAgICAgIGlmKHNjcm9sbFBvc2l0aW9ucyAh PSBudWxsICYmIHNjcm9sbFBvc2l0aW9ucyAhPSAnJykNCiAgICAgICAgew0KICAg ICAgICAgIHZhciBwb3NpdGlvbnMgPSBzY3JvbGxQb3NpdGlvbnMuc3BsaXQoJywn KTsNCiAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8ocG9zaXRpb25zWzBdLCBwb3Np dGlvbnNbMV0pOw0KICAgICAgICAgIENvb2tpZXMuZXJhc2UoIkVkaXRvci5TY3Jv bGxDb29yZGluYXRlcyIpOw0KICAgICAgICAgIENvb2tpZXMuaW5pdCgpOw0KICAg ICAgICB9DQogICAgfQ0KfQ== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=radikal_video.js Content-Type: application/x-javascript; charset=utf-8; name=radikal_video.js Content-Location: http://www.radikal.com.tr/D/j/8/radikal_video.js?v=5 Content-Transfer-Encoding: Base64 77u/LyogaHR0cDovL3d3dy5mZWF0dXJlYmxlbmQuY29tL2xpY2Vuc2UudHh0ICov DQp2YXIgRmxhc2hEZXRlY3Q9bmV3IGZ1bmN0aW9uKCl7dmFyIHNlbGY9dGhpcztz ZWxmLmluc3RhbGxlZD1mYWxzZTtzZWxmLnJhdz0iIjtzZWxmLm1ham9yPS0xO3Nl bGYubWlub3I9LTE7c2VsZi5yZXZpc2lvbj0tMTtzZWxmLnJldmlzaW9uU3RyPSIi O3ZhciBhY3RpdmVYRGV0ZWN0UnVsZXM9W3sibmFtZSI6IlNob2Nrd2F2ZUZsYXNo LlNob2Nrd2F2ZUZsYXNoLjciLCJ2ZXJzaW9uIjpmdW5jdGlvbihvYmope3JldHVy biBnZXRBY3RpdmVYVmVyc2lvbihvYmopO319LHsibmFtZSI6IlNob2Nrd2F2ZUZs YXNoLlNob2Nrd2F2ZUZsYXNoLjYiLCJ2ZXJzaW9uIjpmdW5jdGlvbihvYmope3Zh ciB2ZXJzaW9uPSI2LDAsMjEiO3RyeXtvYmouQWxsb3dTY3JpcHRBY2Nlc3M9ImFs d2F5cyI7dmVyc2lvbj1nZXRBY3RpdmVYVmVyc2lvbihvYmopO31jYXRjaChlcnIp e30NCnJldHVybiB2ZXJzaW9uO319LHsibmFtZSI6IlNob2Nrd2F2ZUZsYXNoLlNo b2Nrd2F2ZUZsYXNoIiwidmVyc2lvbiI6ZnVuY3Rpb24ob2JqKXtyZXR1cm4gZ2V0 QWN0aXZlWFZlcnNpb24ob2JqKTt9fV07dmFyIGdldEFjdGl2ZVhWZXJzaW9uPWZ1 bmN0aW9uKGFjdGl2ZVhPYmope3ZhciB2ZXJzaW9uPS0xO3RyeXt2ZXJzaW9uPWFj dGl2ZVhPYmouR2V0VmFyaWFibGUoIiR2ZXJzaW9uIik7fWNhdGNoKGVycil7fQ0K cmV0dXJuIHZlcnNpb247fTt2YXIgZ2V0QWN0aXZlWE9iamVjdD1mdW5jdGlvbihu YW1lKXt2YXIgb2JqPS0xO3RyeXtvYmo9bmV3IEFjdGl2ZVhPYmplY3QobmFtZSk7 fWNhdGNoKGVycil7b2JqPXthY3RpdmVYRXJyb3I6dHJ1ZX07fQ0KcmV0dXJuIG9i ajt9O3ZhciBwYXJzZUFjdGl2ZVhWZXJzaW9uPWZ1bmN0aW9uKHN0cil7dmFyIHZl cnNpb25BcnJheT1zdHIuc3BsaXQoIiwiKTtyZXR1cm57InJhdyI6c3RyLCJtYWpv ciI6cGFyc2VJbnQodmVyc2lvbkFycmF5WzBdLnNwbGl0KCIgIilbMV0sMTApLCJt aW5vciI6cGFyc2VJbnQodmVyc2lvbkFycmF5WzFdLDEwKSwicmV2aXNpb24iOnBh cnNlSW50KHZlcnNpb25BcnJheVsyXSwxMCksInJldmlzaW9uU3RyIjp2ZXJzaW9u QXJyYXlbMl19O307dmFyIHBhcnNlU3RhbmRhcmRWZXJzaW9uPWZ1bmN0aW9uKHN0 cil7dmFyIGRlc2NQYXJ0cz1zdHIuc3BsaXQoLyArLyk7dmFyIG1ham9yTWlub3I9 ZGVzY1BhcnRzWzJdLnNwbGl0KC9cLi8pO3ZhciByZXZpc2lvblN0cj1kZXNjUGFy dHNbM107cmV0dXJueyJyYXciOnN0ciwibWFqb3IiOnBhcnNlSW50KG1ham9yTWlu b3JbMF0sMTApLCJtaW5vciI6cGFyc2VJbnQobWFqb3JNaW5vclsxXSwxMCksInJl dmlzaW9uU3RyIjpyZXZpc2lvblN0ciwicmV2aXNpb24iOnBhcnNlUmV2aXNpb25T dHJUb0ludChyZXZpc2lvblN0cil9O307dmFyIHBhcnNlUmV2aXNpb25TdHJUb0lu dD1mdW5jdGlvbihzdHIpe3JldHVybiBwYXJzZUludChzdHIucmVwbGFjZSgvW2Et ekEtWl0vZywiIiksMTApfHxzZWxmLnJldmlzaW9uO307c2VsZi5tYWpvckF0TGVh c3Q9ZnVuY3Rpb24odmVyc2lvbil7cmV0dXJuIHNlbGYubWFqb3I+PXZlcnNpb247 fTtzZWxmLm1pbm9yQXRMZWFzdD1mdW5jdGlvbih2ZXJzaW9uKXtyZXR1cm4gc2Vs Zi5taW5vcj49dmVyc2lvbjt9O3NlbGYucmV2aXNpb25BdExlYXN0PWZ1bmN0aW9u KHZlcnNpb24pe3JldHVybiBzZWxmLnJldmlzaW9uPj12ZXJzaW9uO307c2VsZi52 ZXJzaW9uQXRMZWFzdD1mdW5jdGlvbihtYWpvcil7dmFyIHByb3BlcnRpZXM9W3Nl bGYubWFqb3Isc2VsZi5taW5vcixzZWxmLnJldmlzaW9uXTt2YXIgbGVuPU1hdGgu bWluKHByb3BlcnRpZXMubGVuZ3RoLGFyZ3VtZW50cy5sZW5ndGgpO2ZvcihpPTA7 aTxsZW47aSsrKXtpZihwcm9wZXJ0aWVzW2ldPj1hcmd1bWVudHNbaV0pe2lmKGkr MTxsZW4mJnByb3BlcnRpZXNbaV09PWFyZ3VtZW50c1tpXSl7Y29udGludWU7fWVs c2V7cmV0dXJuIHRydWU7fX1lbHNle3JldHVybiBmYWxzZTt9fX07c2VsZi5GbGFz aERldGVjdD1mdW5jdGlvbigpe2lmKG5hdmlnYXRvci5wbHVnaW5zJiZuYXZpZ2F0 b3IucGx1Z2lucy5sZW5ndGg+MCl7dmFyIHR5cGU9J2FwcGxpY2F0aW9uL3gtc2hv Y2t3YXZlLWZsYXNoJzt2YXIgbWltZVR5cGVzPW5hdmlnYXRvci5taW1lVHlwZXM7 aWYobWltZVR5cGVzJiZtaW1lVHlwZXNbdHlwZV0mJm1pbWVUeXBlc1t0eXBlXS5l bmFibGVkUGx1Z2luJiZtaW1lVHlwZXNbdHlwZV0uZW5hYmxlZFBsdWdpbi5kZXNj cmlwdGlvbil7dmFyIHZlcnNpb249bWltZVR5cGVzW3R5cGVdLmVuYWJsZWRQbHVn aW4uZGVzY3JpcHRpb247dmFyIHZlcnNpb25PYmo9cGFyc2VTdGFuZGFyZFZlcnNp b24odmVyc2lvbik7c2VsZi5yYXc9dmVyc2lvbk9iai5yYXc7c2VsZi5tYWpvcj12 ZXJzaW9uT2JqLm1ham9yO3NlbGYubWlub3I9dmVyc2lvbk9iai5taW5vcjtzZWxm LnJldmlzaW9uU3RyPXZlcnNpb25PYmoucmV2aXNpb25TdHI7c2VsZi5yZXZpc2lv bj12ZXJzaW9uT2JqLnJldmlzaW9uO3NlbGYuaW5zdGFsbGVkPXRydWU7fX1lbHNl IGlmKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoIk1hYyIpPT0tMSYmd2lu ZG93LmV4ZWNTY3JpcHQpe3ZhciB2ZXJzaW9uPS0xO2Zvcih2YXIgaT0wO2k8YWN0 aXZlWERldGVjdFJ1bGVzLmxlbmd0aCYmdmVyc2lvbj09LTE7aSsrKXt2YXIgb2Jq PWdldEFjdGl2ZVhPYmplY3QoYWN0aXZlWERldGVjdFJ1bGVzW2ldLm5hbWUpO2lm KCFvYmouYWN0aXZlWEVycm9yKXtzZWxmLmluc3RhbGxlZD10cnVlO3ZlcnNpb249 YWN0aXZlWERldGVjdFJ1bGVzW2ldLnZlcnNpb24ob2JqKTtpZih2ZXJzaW9uIT0t MSl7dmFyIHZlcnNpb25PYmo9cGFyc2VBY3RpdmVYVmVyc2lvbih2ZXJzaW9uKTtz ZWxmLnJhdz12ZXJzaW9uT2JqLnJhdztzZWxmLm1ham9yPXZlcnNpb25PYmoubWFq b3I7c2VsZi5taW5vcj12ZXJzaW9uT2JqLm1pbm9yO3NlbGYucmV2aXNpb249dmVy c2lvbk9iai5yZXZpc2lvbjtzZWxmLnJldmlzaW9uU3RyPXZlcnNpb25PYmoucmV2 aXNpb25TdHI7fX19fX0oKTt9O0ZsYXNoRGV0ZWN0LkpTX1JFTEVBU0U9IjEuMC40 IjsNCi8qIFNXRk9iamVjdCB2MS41OiBGbGFzaCBQbGF5ZXIgZGV0ZWN0aW9uIGFu ZCBlbWJlZCAtIGh0dHA6Ly9ibG9nLmRlY29uY2VwdC5jb20vc3dmb2JqZWN0LyAq Lw0KaWYodHlwZW9mIGRlY29uY2VwdD09InVuZGVmaW5lZCIpe3ZhciBkZWNvbmNl cHQ9bmV3IE9iamVjdCgpO30NCmlmKHR5cGVvZiBkZWNvbmNlcHQudXRpbD09InVu ZGVmaW5lZCIpe2RlY29uY2VwdC51dGlsPW5ldyBPYmplY3QoKTt9DQppZih0eXBl b2YgZGVjb25jZXB0LlNXRk9iamVjdFV0aWw9PSJ1bmRlZmluZWQiKXtkZWNvbmNl cHQuU1dGT2JqZWN0VXRpbD1uZXcgT2JqZWN0KCk7fQ0KZGVjb25jZXB0LlNXRk9i amVjdD1mdW5jdGlvbihfMSxpZCx3LGgsXzUsYyxfNyxfOCxfOSxfYSl7aWYoIWRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKXtyZXR1cm47fXRoaXMuREVURUNUX0tFWT1f YT9fYToiZGV0ZWN0Zmxhc2giO3RoaXMuc2tpcERldGVjdD1kZWNvbmNlcHQudXRp bC5nZXRSZXF1ZXN0UGFyYW1ldGVyKHRoaXMuREVURUNUX0tFWSk7dGhpcy5wYXJh bXM9bmV3IE9iamVjdCgpO3RoaXMudmFyaWFibGVzPW5ldyBPYmplY3QoKTt0aGlz LmF0dHJpYnV0ZXM9bmV3IEFycmF5KCk7aWYoXzEpe3RoaXMuc2V0QXR0cmlidXRl KCJzd2YiLF8xKTt9aWYoaWQpe3RoaXMuc2V0QXR0cmlidXRlKCJpZCIsaWQpO31p Zih3KXt0aGlzLnNldEF0dHJpYnV0ZSgid2lkdGgiLHcpO31pZihoKXt0aGlzLnNl dEF0dHJpYnV0ZSgiaGVpZ2h0IixoKTt9aWYoXzUpe3RoaXMuc2V0QXR0cmlidXRl KCJ2ZXJzaW9uIixuZXcgZGVjb25jZXB0LlBsYXllclZlcnNpb24oXzUudG9TdHJp bmcoKS5zcGxpdCgiLiIpKSk7fXRoaXMuaW5zdGFsbGVkVmVyPWRlY29uY2VwdC5T V0ZPYmplY3RVdGlsLmdldFBsYXllclZlcnNpb24oKTtpZighd2luZG93Lm9wZXJh JiZkb2N1bWVudC5hbGwmJnRoaXMuaW5zdGFsbGVkVmVyLm1ham9yPjcpe2RlY29u Y2VwdC5TV0ZPYmplY3QuZG9QcmVwVW5sb2FkPXRydWU7fWlmKGMpe3RoaXMuYWRk UGFyYW0oImJnY29sb3IiLGMpO312YXIgcT1fNz9fNzoiaGlnaCI7dGhpcy5hZGRQ YXJhbSgicXVhbGl0eSIscSk7dGhpcy5zZXRBdHRyaWJ1dGUoInVzZUV4cHJlc3NJ bnN0YWxsIixmYWxzZSk7dGhpcy5zZXRBdHRyaWJ1dGUoImRvRXhwcmVzc0luc3Rh bGwiLGZhbHNlKTt2YXIgX2M9KF84KT9fODp3aW5kb3cubG9jYXRpb247dGhpcy5z ZXRBdHRyaWJ1dGUoInhpUmVkaXJlY3RVcmwiLF9jKTt0aGlzLnNldEF0dHJpYnV0 ZSgicmVkaXJlY3RVcmwiLCIiKTtpZihfOSl7dGhpcy5zZXRBdHRyaWJ1dGUoInJl ZGlyZWN0VXJsIixfOSk7fX07ZGVjb25jZXB0LlNXRk9iamVjdC5wcm90b3R5cGU9 e3VzZUV4cHJlc3NJbnN0YWxsOmZ1bmN0aW9uKF9kKXt0aGlzLnhpU1dGUGF0aD0h X2Q/ImV4cHJlc3NpbnN0YWxsLnN3ZiI6X2Q7dGhpcy5zZXRBdHRyaWJ1dGUoInVz ZUV4cHJlc3NJbnN0YWxsIix0cnVlKTt9LHNldEF0dHJpYnV0ZTpmdW5jdGlvbihf ZSxfZil7dGhpcy5hdHRyaWJ1dGVzW19lXT1fZjt9LGdldEF0dHJpYnV0ZTpmdW5j dGlvbihfMTApe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbXzEwXTt9LGFkZFBhcmFt OmZ1bmN0aW9uKF8xMSxfMTIpe3RoaXMucGFyYW1zW18xMV09XzEyO30sZ2V0UGFy YW1zOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyYW1zO30sYWRkVmFyaWFibGU6 ZnVuY3Rpb24oXzEzLF8xNCl7dGhpcy52YXJpYWJsZXNbXzEzXT1fMTQ7fSxnZXRW YXJpYWJsZTpmdW5jdGlvbihfMTUpe3JldHVybiB0aGlzLnZhcmlhYmxlc1tfMTVd O30sZ2V0VmFyaWFibGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFyaWFibGVz O30sZ2V0VmFyaWFibGVQYWlyczpmdW5jdGlvbigpe3ZhciBfMTY9bmV3IEFycmF5 KCk7dmFyIGtleTt2YXIgXzE4PXRoaXMuZ2V0VmFyaWFibGVzKCk7Zm9yKGtleSBp biBfMTgpe18xNltfMTYubGVuZ3RoXT1rZXkrIj0iK18xOFtrZXldO31yZXR1cm4g XzE2O30sZ2V0U1dGSFRNTDpmdW5jdGlvbigpe3ZhciBfMTk9IiI7aWYobmF2aWdh dG9yLnBsdWdpbnMmJm5hdmlnYXRvci5taW1lVHlwZXMmJm5hdmlnYXRvci5taW1l VHlwZXMubGVuZ3RoKXtpZih0aGlzLmdldEF0dHJpYnV0ZSgiZG9FeHByZXNzSW5z dGFsbCIpKXt0aGlzLmFkZFZhcmlhYmxlKCJNTXBsYXllclR5cGUiLCJQbHVnSW4i KTt0aGlzLnNldEF0dHJpYnV0ZSgic3dmIix0aGlzLnhpU1dGUGF0aCk7fV8xOT0i PGVtYmVkIHR5cGU9XCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiIHNy Yz1cIiIrdGhpcy5nZXRBdHRyaWJ1dGUoInN3ZiIpKyJcIiB3aWR0aD1cIiIrdGhp cy5nZXRBdHRyaWJ1dGUoIndpZHRoIikrIlwiIGhlaWdodD1cIiIrdGhpcy5nZXRB dHRyaWJ1dGUoImhlaWdodCIpKyJcIiBzdHlsZT1cIiIrdGhpcy5nZXRBdHRyaWJ1 dGUoInN0eWxlIikrIlwiIjtfMTkrPSIgaWQ9XCIiK3RoaXMuZ2V0QXR0cmlidXRl KCJpZCIpKyJcIiBuYW1lPVwiIit0aGlzLmdldEF0dHJpYnV0ZSgiaWQiKSsiXCIg Ijt2YXIgXzFhPXRoaXMuZ2V0UGFyYW1zKCk7Zm9yKHZhciBrZXkgaW4gXzFhKXtf MTkrPVtrZXldKyI9XCIiK18xYVtrZXldKyJcIiAiO312YXIgXzFjPXRoaXMuZ2V0 VmFyaWFibGVQYWlycygpLmpvaW4oIiYiKTtpZihfMWMubGVuZ3RoPjApe18xOSs9 ImZsYXNodmFycz1cIiIrXzFjKyJcIiI7fV8xOSs9Ii8+Ijt9ZWxzZXtpZih0aGlz LmdldEF0dHJpYnV0ZSgiZG9FeHByZXNzSW5zdGFsbCIpKXt0aGlzLmFkZFZhcmlh YmxlKCJNTXBsYXllclR5cGUiLCJBY3RpdmVYIik7dGhpcy5zZXRBdHRyaWJ1dGUo InN3ZiIsdGhpcy54aVNXRlBhdGgpO31fMTk9IjxvYmplY3QgaWQ9XCIiK3RoaXMu Z2V0QXR0cmlidXRlKCJpZCIpKyJcIiBjbGFzc2lkPVwiY2xzaWQ6RDI3Q0RCNkUt QUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwXCIgd2lkdGg9XCIiK3RoaXMuZ2V0 QXR0cmlidXRlKCJ3aWR0aCIpKyJcIiBoZWlnaHQ9XCIiK3RoaXMuZ2V0QXR0cmli dXRlKCJoZWlnaHQiKSsiXCIgc3R5bGU9XCIiK3RoaXMuZ2V0QXR0cmlidXRlKCJz dHlsZSIpKyJcIj4iO18xOSs9IjxwYXJhbSBuYW1lPVwibW92aWVcIiB2YWx1ZT1c IiIrdGhpcy5nZXRBdHRyaWJ1dGUoInN3ZiIpKyJcIiAvPiI7dmFyIF8xZD10aGlz LmdldFBhcmFtcygpO2Zvcih2YXIga2V5IGluIF8xZCl7XzE5Kz0iPHBhcmFtIG5h bWU9XCIiK2tleSsiXCIgdmFsdWU9XCIiK18xZFtrZXldKyJcIiAvPiI7fXZhciBf MWY9dGhpcy5nZXRWYXJpYWJsZVBhaXJzKCkuam9pbigiJiIpO2lmKF8xZi5sZW5n dGg+MCl7XzE5Kz0iPHBhcmFtIG5hbWU9XCJmbGFzaHZhcnNcIiB2YWx1ZT1cIiIr XzFmKyJcIiAvPiI7fV8xOSs9Ijwvb2JqZWN0PiI7fXJldHVybiBfMTk7fSx3cml0 ZTpmdW5jdGlvbihfMjApe2lmKHRoaXMuZ2V0QXR0cmlidXRlKCJ1c2VFeHByZXNz SW5zdGFsbCIpKXt2YXIgXzIxPW5ldyBkZWNvbmNlcHQuUGxheWVyVmVyc2lvbihb NiwwLDY1XSk7aWYodGhpcy5pbnN0YWxsZWRWZXIudmVyc2lvbklzVmFsaWQoXzIx KSYmIXRoaXMuaW5zdGFsbGVkVmVyLnZlcnNpb25Jc1ZhbGlkKHRoaXMuZ2V0QXR0 cmlidXRlKCJ2ZXJzaW9uIikpKXt0aGlzLnNldEF0dHJpYnV0ZSgiZG9FeHByZXNz SW5zdGFsbCIsdHJ1ZSk7dGhpcy5hZGRWYXJpYWJsZSgiTU1yZWRpcmVjdFVSTCIs ZXNjYXBlKHRoaXMuZ2V0QXR0cmlidXRlKCJ4aVJlZGlyZWN0VXJsIikpKTtkb2N1 bWVudC50aXRsZT1kb2N1bWVudC50aXRsZS5zbGljZSgwLDQ3KSsiIC0gRmxhc2gg UGxheWVyIEluc3RhbGxhdGlvbiI7dGhpcy5hZGRWYXJpYWJsZSgiTU1kb2N0aXRs ZSIsZG9jdW1lbnQudGl0bGUpO319aWYodGhpcy5za2lwRGV0ZWN0fHx0aGlzLmdl dEF0dHJpYnV0ZSgiZG9FeHByZXNzSW5zdGFsbCIpfHx0aGlzLmluc3RhbGxlZFZl ci52ZXJzaW9uSXNWYWxpZCh0aGlzLmdldEF0dHJpYnV0ZSgidmVyc2lvbiIpKSl7 dmFyIG49KHR5cGVvZiBfMjA9PSJzdHJpbmciKT9kb2N1bWVudC5nZXRFbGVtZW50 QnlJZChfMjApOl8yMDtuLmlubmVySFRNTD10aGlzLmdldFNXRkhUTUwoKTtyZXR1 cm4gdHJ1ZTt9ZWxzZXtpZih0aGlzLmdldEF0dHJpYnV0ZSgicmVkaXJlY3RVcmwi KSE9IiIpe2RvY3VtZW50LmxvY2F0aW9uLnJlcGxhY2UodGhpcy5nZXRBdHRyaWJ1 dGUoInJlZGlyZWN0VXJsIikpO319cmV0dXJuIGZhbHNlO319Ow0KZGVjb25jZXB0 LlNXRk9iamVjdFV0aWwuZ2V0UGxheWVyVmVyc2lvbj1mdW5jdGlvbigpe3ZhciBf MjM9bmV3IGRlY29uY2VwdC5QbGF5ZXJWZXJzaW9uKFswLDAsMF0pO2lmKG5hdmln YXRvci5wbHVnaW5zJiZuYXZpZ2F0b3IubWltZVR5cGVzLmxlbmd0aCl7dmFyIHg9 bmF2aWdhdG9yLnBsdWdpbnNbIlNob2Nrd2F2ZSBGbGFzaCJdO2lmKHgmJnguZGVz Y3JpcHRpb24pe18yMz1uZXcgZGVjb25jZXB0LlBsYXllclZlcnNpb24oeC5kZXNj cmlwdGlvbi5yZXBsYWNlKC8oW2EtekEtWl18XHMpKy8sIiIpLnJlcGxhY2UoLyhc cytyfFxzK2JbMC05XSspLywiLiIpLnNwbGl0KCIuIikpO319ZWxzZXtpZihuYXZp Z2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIldp bmRvd3MgQ0UiKT49MCl7dmFyIGF4bz0xO3ZhciBfMjY9Mzt3aGlsZShheG8pe3Ry eXtfMjYrKztheG89bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNo b2Nrd2F2ZUZsYXNoLiIrXzI2KTtfMjM9bmV3IGRlY29uY2VwdC5QbGF5ZXJWZXJz aW9uKFtfMjYsMCwwXSk7fWNhdGNoKGUpe2F4bz1udWxsO319fWVsc2V7dHJ5e3Zh ciBheG89bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2 ZUZsYXNoLjciKTt9Y2F0Y2goZSl7dHJ5e3ZhciBheG89bmV3IEFjdGl2ZVhPYmpl Y3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLjYiKTtfMjM9bmV3IGRl Y29uY2VwdC5QbGF5ZXJWZXJzaW9uKFs2LDAsMjFdKTtheG8uQWxsb3dTY3JpcHRB Y2Nlc3M9ImFsd2F5cyI7fWNhdGNoKGUpe2lmKF8yMy5tYWpvcj09Nil7cmV0dXJu IF8yMzt9fXRyeXtheG89bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNo LlNob2Nrd2F2ZUZsYXNoIik7fWNhdGNoKGUpe319aWYoYXhvIT1udWxsKXtfMjM9 bmV3IGRlY29uY2VwdC5QbGF5ZXJWZXJzaW9uKGF4by5HZXRWYXJpYWJsZSgiJHZl cnNpb24iKS5zcGxpdCgiICIpWzFdLnNwbGl0KCIsIikpO319fXJldHVybiBfMjM7 fTtkZWNvbmNlcHQuUGxheWVyVmVyc2lvbj1mdW5jdGlvbihfMjkpe3RoaXMubWFq b3I9XzI5WzBdIT1udWxsP3BhcnNlSW50KF8yOVswXSk6MDt0aGlzLm1pbm9yPV8y OVsxXSE9bnVsbD9wYXJzZUludChfMjlbMV0pOjA7dGhpcy5yZXY9XzI5WzJdIT1u dWxsP3BhcnNlSW50KF8yOVsyXSk6MDt9O2RlY29uY2VwdC5QbGF5ZXJWZXJzaW9u LnByb3RvdHlwZS52ZXJzaW9uSXNWYWxpZD1mdW5jdGlvbihmdil7aWYodGhpcy5t YWpvcjxmdi5tYWpvcil7cmV0dXJuIGZhbHNlO31pZih0aGlzLm1ham9yPmZ2Lm1h am9yKXtyZXR1cm4gdHJ1ZTt9aWYodGhpcy5taW5vcjxmdi5taW5vcil7cmV0dXJu IGZhbHNlO31pZih0aGlzLm1pbm9yPmZ2Lm1pbm9yKXtyZXR1cm4gdHJ1ZTt9aWYo dGhpcy5yZXY8ZnYucmV2KXtyZXR1cm4gZmFsc2U7fXJldHVybiB0cnVlO307ZGVj b25jZXB0LnV0aWw9e2dldFJlcXVlc3RQYXJhbWV0ZXI6ZnVuY3Rpb24oXzJiKXt2 YXIgcT1kb2N1bWVudC5sb2NhdGlvbi5zZWFyY2h8fGRvY3VtZW50LmxvY2F0aW9u Lmhhc2g7aWYoXzJiPT1udWxsKXtyZXR1cm4gcTt9aWYocSl7dmFyIF8yZD1xLnN1 YnN0cmluZygxKS5zcGxpdCgiJiIpO2Zvcih2YXIgaT0wO2k8XzJkLmxlbmd0aDtp Kyspe2lmKF8yZFtpXS5zdWJzdHJpbmcoMCxfMmRbaV0uaW5kZXhPZigiPSIpKT09 XzJiKXtyZXR1cm4gXzJkW2ldLnN1YnN0cmluZygoXzJkW2ldLmluZGV4T2YoIj0i KSsxKSk7fX19cmV0dXJuICIiO319O2RlY29uY2VwdC5TV0ZPYmplY3RVdGlsLmNs ZWFudXBTV0ZzPWZ1bmN0aW9uKCl7dmFyIF8yZj1kb2N1bWVudC5nZXRFbGVtZW50 c0J5VGFnTmFtZSgiT0JKRUNUIik7Zm9yKHZhciBpPV8yZi5sZW5ndGgtMTtpPj0w O2ktLSl7XzJmW2ldLnN0eWxlLmRpc3BsYXk9Im5vbmUiO2Zvcih2YXIgeCBpbiBf MmZbaV0pe2lmKHR5cGVvZiBfMmZbaV1beF09PSJmdW5jdGlvbiIpe18yZltpXVt4 XT1mdW5jdGlvbigpe307fX19fTtpZihkZWNvbmNlcHQuU1dGT2JqZWN0LmRvUHJl cFVubG9hZCl7aWYoIWRlY29uY2VwdC51bmxvYWRTZXQpe2RlY29uY2VwdC5TV0ZP YmplY3RVdGlsLnByZXBVbmxvYWQ9ZnVuY3Rpb24oKXtfX2ZsYXNoX3VubG9hZEhh bmRsZXI9ZnVuY3Rpb24oKXt9O19fZmxhc2hfc2F2ZWRVbmxvYWRIYW5kbGVyPWZ1 bmN0aW9uKCl7fTt3aW5kb3cuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixkZWNvbmNl cHQuU1dGT2JqZWN0VXRpbC5jbGVhbnVwU1dGcyk7fTt3aW5kb3cuYXR0YWNoRXZl bnQoIm9uYmVmb3JldW5sb2FkIixkZWNvbmNlcHQuU1dGT2JqZWN0VXRpbC5wcmVw VW5sb2FkKTtkZWNvbmNlcHQudW5sb2FkU2V0PXRydWU7fX1pZighZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQmJmRvY3VtZW50LmFsbCl7ZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQ9ZnVuY3Rpb24oaWQpe3JldHVybiBkb2N1bWVudC5hbGxbaWRdO307fXZh ciBnZXRRdWVyeVBhcmFtVmFsdWU9ZGVjb25jZXB0LnV0aWwuZ2V0UmVxdWVzdFBh cmFtZXRlcjt2YXIgRmxhc2hPYmplY3Q9ZGVjb25jZXB0LlNXRk9iamVjdDt2YXIg U1dGT2JqZWN0PWRlY29uY2VwdC5TV0ZPYmplY3Q7DQovKmdvb2dsZWFuYWx5dGlj cw0KdmFyIGdhSnNIb3N0ID0gKCgiaHR0cHM6IiA9PSBkb2N1bWVudC5sb2NhdGlv bi5wcm90b2NvbCkgPyAiaHR0cHM6Ly9zc2wuIiA6ICJodHRwOi8vd3d3LiIpOw0K ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoIiUzQ3NjcmlwdCBzcmM9JyIgKyBnYUpz SG9zdCArICJnb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qcycgdHlwZT0ndGV4dC9q YXZhc2NyaXB0JyUzRSUzQy9zY3JpcHQlM0UiKSk7IA0KZnVuY3Rpb24gVmlkZW9f R0EoKXsNCgl0cnkgew0KICAgIHZhciBwYWdlVHJhY2tlciA9IF9nYXQuX2dldFRy YWNrZXIoIlVBLTEwNDI0NTI3LTEiKTsNCiAgICBwYWdlVHJhY2tlci5fdHJhY2tQ YWdldmlldygpOw0KICAgIH0gY2F0Y2goZXJyKSB7fQ0KfQ0KKi8NCi8qIEN1c3Rv bSAqLw0KZnVuY3Rpb24gc3RhcnRGbHZQbGF5ZXIoZGl2SWQsIFZpZGVvSWQsIFZp ZGVvRGF0ZSkgew0KICAgIGlmKEZsYXNoRGV0ZWN0Lmluc3RhbGxlZCl7DQogICAg ICAgICAgICAgICBpZihGbGFzaERldGVjdC52ZXJzaW9uQXRMZWFzdCg5LCAwLCA0 NSkpey8vQVMzDQogICAgICAgICAgICB2YXIgczEgPSBuZXcgU1dGT2JqZWN0KCJo dHRwOi8vdmlkZW8ucmFkaWthbC5jb20udHIvc3dmUGxheWVyL3JhZGlrYWxUVl92 Ni5zd2Y/IisiaWQ9IitWaWRlb0lkKyImdGFyaWg9IitWaWRlb0RhdGUgKyAnJm1U YXJnZXQ9cmFkaWthbF92aWRlb2FkX3ByZXJvbGwnLCAiRmx2UGxheWVyIitWaWRl b0lkLCAiNDQwIiwgIjM2MiIsICI5LjAuNDUiLCAiI0ZGRkZGRiIpOw0KICAgICAg ICAgICAgczEuYWRkUGFyYW0oImFsbG93ZnVsbHNjcmVlbiIsICJ0cnVlIik7DQog ICAgICAgICAgICBzMS5hZGRQYXJhbSgiYWxsb3dzY3JpcHRhY2Nlc3MiLCAiYWx3 YXlzIik7DQogICAgICAgICAgICBzMS5hZGRQYXJhbSgnZmxhc2h2YXJzJywnJmlk PScrVmlkZW9JZCsnJnRhcmloPScrVmlkZW9EYXRlKTsNCiAgICAgICAgICAgIHMx LndyaXRlKGRpdklkKTsNCi8vICAgICAgICAgICAgVmlkZW9fR0EoKTsNCiAgICAg ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgIGVsc2UgaWYoRmxhc2hEZXRlY3Qu dmVyc2lvbkF0TGVhc3QoOCwgMCwgMjQpKXsvL0FTMg0KICAgICAgICAgICAgdmFy IHMxID0gbmV3IFNXRk9iamVjdCgiaHR0cDovL3ZpZGVvLnJhZGlrYWwuY29tLnRy L3N3ZlBsYXllci9hczJyYWRpa2FsX3Y2LnN3Zj8iKyJpZD0iK1ZpZGVvSWQrIiZ0 YXJpaD0iK1ZpZGVvRGF0ZSwgIkZsdlBsYXllciIrVmlkZW9JZCArICcmbVRhcmdl dD1yYWRpa2FsX3ZpZGVvYWRfcHJlcm9sbCcsICI0NDAiLCAiMzUwIiwgIjguMC4y NCIsICIjRkZGRkZGIik7DQogICAgICAgICAgICBzMS5hZGRQYXJhbSgiYWxsb3dm dWxsc2NyZWVuIiwgInRydWUiKTsNCiAgICAgICAgICAgIHMxLmFkZFBhcmFtKCJh bGxvd3NjcmlwdGFjY2VzcyIsICJhbHdheXMiKTsNCiAgICAgICAgICAgIHMxLmFk ZFBhcmFtKCdmbGFzaHZhcnMnLCcmaWQ9JytWaWRlb0lkKycmdGFyaWg9JytWaWRl b0RhdGUpOw0KICAgICAgICAgICAgczEud3JpdGUoZGl2SWQpOw0KLy8gICAgICAg ICAgICBWaWRlb19HQSgpOw0KICAgICAgICAgICAgICAgfQ0KICAgICAgICB9ICAg ICAgIA0KfQ0KDQpmdW5jdGlvbiBzdGFydEZsdlBsYXllcjIoZGl2SWQsIFZpZGVv SWQsIFZpZGVvRGF0ZSkgew0KDQogICAgaWYoRmxhc2hEZXRlY3QuaW5zdGFsbGVk KXsNCg0KICAgICAgICAgICAgICAgaWYoRmxhc2hEZXRlY3QudmVyc2lvbkF0TGVh c3QoOSwgMCwgNDUpKXsvL0FTMw0KDQogICAgICAgICAgICB2YXIgczEgPSBuZXcg U1dGT2JqZWN0KCJodHRwOi8vdmlkZW8ucmFkaWthbC5jb20udHIvc3dmUGxheWVy L3JhZGlrYWxUVl92Ni5zd2Y/IisiYmFudD0xJmlkPSIrVmlkZW9JZCsiJnRhcmlo PSIrVmlkZW9EYXRlICsgJyZtVGFyZ2V0PXJhZGlrYWxfdmlkZW9hZF9wcmVyb2xs JywgIkZsdlBsYXllciIrVmlkZW9JZCwgIjQ0MCIsICIzNjIiLCAiOS4wLjQ1Iiwg IiNGRkZGRkYiKTsNCg0KICAgICAgICAgICAgczEuYWRkUGFyYW0oImFsbG93ZnVs bHNjcmVlbiIsICJ0cnVlIik7DQoNCiAgICAgICAgICAgIHMxLmFkZFBhcmFtKCJh bGxvd3NjcmlwdGFjY2VzcyIsICJhbHdheXMiKTsNCg0KICAgICAgICAgICAgczEu YWRkUGFyYW0oJ2ZsYXNodmFycycsJyZiYW50PTEmaWQ9JytWaWRlb0lkKycmdGFy aWg9JytWaWRlb0RhdGUpOw0KDQogICAgICAgICAgICBzMS53cml0ZShkaXZJZCk7 DQovLyAgICAgICAgICAgIFZpZGVvX0dBKCk7DQoNCiAgICAgICAgICAgICAgIH0N Cg0KICAgICAgICAgICAgICAgZWxzZSBpZihGbGFzaERldGVjdC52ZXJzaW9uQXRM ZWFzdCg4LCAwLCAyNCkpey8vQVMyDQoNCiAgICAgICAgICAgIHZhciBzMSA9IG5l dyBTV0ZPYmplY3QoImh0dHA6Ly92aWRlby5yYWRpa2FsLmNvbS50ci9zd2ZQbGF5 ZXIvYXMycmFkaWthbF92Ni5zd2Y/IisiYmFudD0xJmlkPSIrVmlkZW9JZCsiJnRh cmloPSIrVmlkZW9EYXRlICsgJyZtVGFyZ2V0PXJhZGlrYWxfdmlkZW9hZF9wcmVy b2xsJywgIkZsdlBsYXllciIrVmlkZW9JZCwgIjQ0MCIsICIzNTAiLCAiOC4wLjI0 IiwgIiNGRkZGRkYiKTsNCg0KICAgICAgICAgICAgczEuYWRkUGFyYW0oImFsbG93 ZnVsbHNjcmVlbiIsICJ0cnVlIik7DQoNCiAgICAgICAgICAgIHMxLmFkZFBhcmFt KCJhbGxvd3NjcmlwdGFjY2VzcyIsICJhbHdheXMiKTsNCg0KICAgICAgICAgICAg czEuYWRkUGFyYW0oJ2ZsYXNodmFycycsJyZiYW50PTEmaWQ9JytWaWRlb0lkKycm dGFyaWg9JytWaWRlb0RhdGUpOw0KDQogICAgICAgICAgICBzMS53cml0ZShkaXZJ ZCk7DQovLyAgICAgICAgICAgIFZpZGVvX0dBKCk7DQoNCiAgICAgICAgICAgICAg IH0NCg0KICAgICAgICB9ICAgICAgIA0KDQp9DQoNCg== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=jquerycssmenu.js Content-Type: application/x-javascript; charset=iso-8859-9; name=jquerycssmenu.js Content-Location: http://www.radikal.com.tr/D/j/1/jquerycssmenu.js Content-Transfer-Encoding: Base64 LyoqKioqKioqKioqKioqKioqKioqKg0KLy8qIGpRdWVyeSBNdWx0aSBMZXZlbCBD U1MgTWVudSAoaG9yaXpvbnRhbCktIEJ5IER5bmFtaWMgRHJpdmUgREhUTUwgY29k ZSBsaWJyYXJ5OiBodHRwOi8vd3d3LmR5bmFtaWNkcml2ZS5jb20NCi8vKiBNZW51 IGluc3RydWN0aW9ucyBwYWdlOiBodHRwOi8vd3d3LmR5bmFtaWNkcml2ZS5jb20v ZHluYW1pY2luZGV4MS9kZGxldmVsc21lbnUvDQovLyogTGFzdCBtb2RpZmllZDog U2VwdCA2dGgsIDA4Jy4gVXNhZ2UgVGVybXM6IGh0dHA6Ly93d3cuZHluYW1pY2Ry aXZlLmNvbS9zdHlsZS9jc3NsaWJyYXJ5L3Rvcy8NCioqKioqKioqKioqKioqKioq KioqKi8NCg0KLy9TcGVjaWZ5IGZ1bGwgVVJMIHRvIGRvd24gYW5kIHJpZ2h0IGFy cm93IGltYWdlcyAoMjUgaXMgcGFkZGluZy1yaWdodCB0byBhZGQgdG8gdG9wIGxl dmVsIExJcyB3aXRoIGRyb3AgZG93bnMpOg0KdmFyIGFycm93aW1hZ2VzPXtkb3du OlsnZG93bmFycm93Y2xhc3MnLCAnJywgMTBdLCByaWdodDpbJ3JpZ2h0YXJyb3dj bGFzcycsICcnXX0NCg0KdmFyIGpxdWVyeWNzc21lbnU9ew0KDQpmYWRlc2V0dGlu Z3M6IHtvdmVyZHVyYXRpb246IDM1MCwgb3V0ZHVyYXRpb246IDEwMH0sIC8vZHVy YXRpb24gb2YgZmFkZSBpbi8gb3V0IGFuaW1hdGlvbiwgaW4gbWlsbGlzZWNvbmRz DQoNCmJ1aWxkbWVudTpmdW5jdGlvbihtZW51aWQsIGFycm93c3Zhcil7DQoJalF1 ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKXsNCgkJdmFyICRtYWlubWVu dT0kKCIjIittZW51aWQrIj51bCIpDQoJCXZhciAkaGVhZGVycz0kbWFpbm1lbnUu ZmluZCgidWwiKS5wYXJlbnQoKQ0KCQkkaGVhZGVycy5lYWNoKGZ1bmN0aW9uKGkp ew0KCQkJdmFyICRjdXJvYmo9JCh0aGlzKQ0KCQkJdmFyICRzdWJ1bD0kKHRoaXMp LmZpbmQoJ3VsOmVxKDApJykNCgkJCXRoaXMuX2RpbWVuc2lvbnM9e3c6dGhpcy5v ZmZzZXRXaWR0aCwgaDp0aGlzLm9mZnNldEhlaWdodCwgc3VidWx3OiRzdWJ1bC5v dXRlcldpZHRoKCksIHN1YnVsaDokc3VidWwub3V0ZXJIZWlnaHQoKX0NCgkJCXRo aXMuaXN0b3BoZWFkZXI9JGN1cm9iai5wYXJlbnRzKCJ1bCIpLmxlbmd0aD09MT8g dHJ1ZSA6IGZhbHNlDQoJCQkkc3VidWwuY3NzKHt0b3A6dGhpcy5pc3RvcGhlYWRl cj8gdGhpcy5fZGltZW5zaW9ucy5oKyJweCIgOiAwfSkNCgkJCQ0KCQkJJGN1cm9i ai5ob3ZlcigNCgkJCQlmdW5jdGlvbihlKXsNCgkJCQkJdmFyICR0YXJnZXR1bD0k KHRoaXMpLmNoaWxkcmVuKCJ1bDplcSgwKSIpDQoJCQkJCXRoaXMuX29mZnNldHM9 e2xlZnQ6JCh0aGlzKS5vZmZzZXQoKS5sZWZ0LCB0b3A6JCh0aGlzKS5vZmZzZXQo KS50b3B9DQoJCQkJCXZhciBtZW51bGVmdD10aGlzLmlzdG9waGVhZGVyPyAwIDog dGhpcy5fZGltZW5zaW9ucy53DQoJCQkJCW1lbnVsZWZ0PSh0aGlzLl9vZmZzZXRz LmxlZnQrbWVudWxlZnQrdGhpcy5fZGltZW5zaW9ucy5zdWJ1bHc+JCh3aW5kb3cp LndpZHRoKCkpPyAodGhpcy5pc3RvcGhlYWRlcj8gLXRoaXMuX2RpbWVuc2lvbnMu c3VidWx3K3RoaXMuX2RpbWVuc2lvbnMudyA6IC10aGlzLl9kaW1lbnNpb25zLncp IDogbWVudWxlZnQNCgkJCQkJJHRhcmdldHVsLmNzcyh7bGVmdDptZW51bGVmdCsi cHgifSkuZmFkZUluKGpxdWVyeWNzc21lbnUuZmFkZXNldHRpbmdzLm92ZXJkdXJh dGlvbikNCgkJCQl9LA0KCQkJCWZ1bmN0aW9uKGUpew0KCQkJCQkkKHRoaXMpLmNo aWxkcmVuKCJ1bDplcSgwKSIpLmZhZGVPdXQoanF1ZXJ5Y3NzbWVudS5mYWRlc2V0 dGluZ3Mub3V0ZHVyYXRpb24pDQoJCQkJfQ0KCQkJKSAvL2VuZCBob3Zlcg0KCQl9 KSAvL2VuZCAkaGVhZGVycy5lYWNoKCkNCgkJJG1haW5tZW51LmZpbmQoInVsIiku Y3NzKHtkaXNwbGF5Oidub25lJywgdmlzaWJpbGl0eTondmlzaWJsZSd9KQ0KCX0p IC8vZW5kIGRvY3VtZW50LnJlYWR5DQp9DQp9DQoNCi8vYnVpbGQgbWVudSB3aXRo IElEPSJteWpxdWVyeW1lbnUiIG9uIHBhZ2U6DQpqcXVlcnljc3NtZW51LmJ1aWxk bWVudSgibXlqcXVlcnltZW51IiwgYXJyb3dpbWFnZXMp ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/gfx/ico-1.gif Content-Transfer-Encoding: Base64 R0lGODlhDAARALMAAHt+msXG04yOp/////f3+aSmuubn7LW3xtbX34OGoJyes62v wJSWrc3O2QAAAAAAACH5BAAHAP8ALAAAAAAMABEAAARFsJARgL0Wjd3wPduGJB4Q hINBegtqCGUbEkzJTBtt49viJQbUAcMIhnyX2wxpUfB0F1mudim4VhfNRlWyDhpY D0NRukQAADs= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/weather/down.gif Content-Transfer-Encoding: Base64 R0lGODlhEwANAJEAAH9/f////+saVQAAACH5BAAHAP8ALAAAAAATAA0AAAIeRI6p Z+sPXYtqIoGzoEfvZV2YBH3cGYScirYIGwEFADs= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/gfx/nav-bg.gif Content-Transfer-Encoding: Base64 R0lGODlhDAAPAJEAAH9/f////+Xl5QAAACH5BAAHAP8ALAAAAAAMAA8AAAIdRGJ4 GXL9HDxyPltljpR37F3bN06lFlapd37gaxUAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/nav-ok.gif Content-Transfer-Encoding: Base64 R0lGODlhBAAHAIAAAKioqP///yH5BAAHAP8ALAAAAAAEAAcAAAIHRB6GeuqNCgA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/news-ok.gif Content-Transfer-Encoding: Base64 R0lGODlhCAAMALMAAP////P3/efu+9vm+c/e98LW9bbN86rF8Yet7Huk6m6c6GKU 5kqD4j574AAAAAAAACH5BAEHAAAALAAAAAAIAAwAAAQs0KgCalWtGQsGywcXLBki ko1pBUm2WF62AUbGEFXdMEN1uL1LYxHgCA5FTgQAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=main.css Content-Type: text/css; charset=iso-8859-9; name=main.css Content-Location: http://www.radikal.com.tr/data/css/main.css Content-Transfer-Encoding: 8bit @charset "iso-8859-9";/* Bekir TOPUZ CSS Document */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {margin: 0;padding: 0;border: 0;outline: 0;font-weight: normal;font-style: inherit;font-size: 100%;font-family: inherit;vertical-align: baseline;} :focus {outline: 0;}/* remember to define focus styles! */ ol, ul {list-style: none;} img {vertical-align: top;} table {border-collapse: separate;border-spacing: 0;}/* tables still need 'cellspacing="0"' in the markup */ caption, th, td {text-align: left;font-weight: normal;} blockquote:before, blockquote:after, q:before, q:after {content: "";} blockquote, q {quotes: "" "";} strong {font-weight: bold;} /*::selection {color: #01AD39;} /* Safari */ /*::-moz-selection {color: #01AD39;}*/ /* Firefox */ body {font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;font-size: 13px;line-height: 20px;font-weight: normal;color:Black /*#4c4c4c*/;text-decoration: none;background-color: #fff;margin: 0 0 20px 0;} .base_container {width: 980px;margin-right: auto;margin-left: auto} .base_top{ clear: both; padding-bottom: 10px; } .base_top .top-nav ul{background-color: #7B7E9A;height: 31px;width: 980px;clear: both;} .base_top .top-nav li {float: left;display: block;height: 31px;background-color: #53577C;line-height: 21px;} .base_top .top-nav li a{display: block;border-right: 1px solid #666987;font-family: Arial, Helvetica, sans-serif;font-size: 12px;color: #D5D5DD;text-decoration: none;padding: 5px 7px 6px 7px;line-height: 20px;} .base_top .top-nav li a:hover{text-decoration:none;} .base_top .top-nav .uye-islemleri {background-color: #7B7E9A;padding-right: 0px;background-image: url(../img/gfx/ico-1.gif);background-repeat: no-repeat;background-position: 220px center;font-weight: bold;color: #f5f5f5;width: 245px;float: right;} .base_top .top-nav .uye-islemleri a {border-right: none;} .base_top .top-nav .uye-login {background-color: #7B7E9A;color: #f5f5f5;padding: 4px 10px 0 0;border: 0px;float: right;height: 20px;} .base_top .top-nav .uye-login a {border-right: none; margin: 0px; padding: 0px; } .base_top .top-nav .uye-login .login-text {float: left;border: none;height: 22px;overflow: hidden;padding-right:10px;} .base_top .top-nav .uye-login .login-text a {margin: 0px;padding: 0px;float: none;display: inline;border: none;} .base_top .top-nav .uye-login .login-buttons {float: right;border: none;width: 50px;text-align: left;} .base_top .top-nav .uye-login .login-buttons img {float: right;border: none;margin: 1px 0 0 5px;} /*****************************/ .base_top .top-header {padding: 10px 0 10px 0;} .top-banner {float: left;height: 90px;width: 728px;padding: 10px 0 10px 0;} .finance {float: right;height: 90px;width: 238px;padding: 10px 0 10px 0;} .finance ul {clear: both;border: 0px;margin: 0;padding: 0;width: 238px;height: 22px;} .finance li {float: left;padding: 2px 0 0px 10px;font-size: 12px;line-height: 20px;display: block;} .finance .row-gray {background-color: #F9F9F9;} .finance .row-white {background-color: #fff;} .finance .col-1 {border-right-width: 1px;border-left-width: 1px;border-right-style: solid;border-left-style: solid;border-right-color: #DFDFDF;border-left-color: #DFDFDF;width: 33px;text-align: center;height: 17px;padding: 5px 0 0 0;line-height: 22px;} .finance .col-2 {border-right: 1px solid #DFDFDF; width: 50px; color: #5D749A; font-weight: bold;} .finance .col-3 {border-right: 1px solid #DFDFDF; width: 70px; font-weight: bold;} .finance .col-4 {border-right: 1px solid #DFDFDF; width: 50px;} .base_top .top-middle {padding-bottom: 10px;} .site-logo {float: left;height: 40px;width: 197px;} .site-date {width: 172px;border-right-width: 1px;border-right-style: dotted;border-right-color: #7F7F7F;text-align: center;float: left;} .site-date .today {color:Black /*#7F7F7F*/;} .site-date .last-modify {color:Black /*#1B3C72*/;font-size: 11px;} .weather { float: left; width: 170px; border-right-width: 1px; border-right-style: dotted; border-right-color: #7F7F7F; line-height: 14px; height: 40px; overflow:hidden; cursor:pointer; } .weather .weather-list { height: 40px; width: 170px; cursor: pointer; z-index:-10; /* required styles for marquee */ display: block; padding: 0; margin: 0; list-style: none; line-height: 1; position: relative; overflow: hidden; } .weather .weather-list li { height: 40px; width: 170px; /* required styles for marque */ /*position: absolute;*/ top: -999em; left: 0; display: block; white-space: nowrap; /* keep all text on a single line */ } /********************/ .weather .weather-info { float: left; height: 34px; width: 101px; padding-top: 6px; padding-left: 15px; } .weather .weather-info .weather-status-up {background-image: url(../img/weather/up.gif);} .weather .weather-info .weather-status-down {background-image: url(../img/weather/down.gif);} .weather .weather-info .weather-city {height: 14px;width: 76px;padding-left: 25px;background-repeat: no-repeat;padding-bottom: 5px;font-weight: bold;cursor: pointer;color:Black;} .weather .weather-info .weather-status{color:Black;} .weather .weather-icon { height: 40px; width: 45px; float: left; } .archive { float: left; width: 220px; padding-top:3px; padding-left:5px; } .archive .archive-title {height: 24px;width: 47px;border-top: 1px solid #E4E4E4;border-bottom: 1px solid #E4E4E4;border-left: 1px solid #E4E4E4;border-right: none;color: #4C4C4C;text-align: center;padding-top: 3px;font-size: 12px;float: left;} .archive .archive-textbox { padding: 0 5px; height: 27px; width: 65px; font-size: 12px; text-align: center; color: #7D7D7D; line-height: 27px; background-color: #FAFAFA; border-top: 1px solid #E4E4E4; border-bottom: 1px solid #E4E4E4; border-left: 1px solid #E4E4E4; border-right: none; float: left; } .archive .archive-button {float: left;width: 29px; height: 29px;} .archive .archive-button-go {float: left;width: 32px; height: 29px; margin-left: 1px;} .search-short {float: left;padding-top: 5px; padding-left:5px;} .search-short .search-textbox { border-top: 1px solid #E4E4E4; border-bottom: 1px solid #E4E4E4; border-left: 1px solid #E4E4E4; border-right: none; background-color: #FAFAFA; width: 96px; float: left; line-height: 25px; height: 25px; font-size: 12px; padding-right: 5px; padding-left: 5px; color: #7D7D7D; border-right-width: 0px; border-right-style: none; } .search-short .search-short-btn {float: left;} .site-detail-search { display: block; float: left; color: #EB1A55; text-decoration: none; line-height: 16px; width:68px; padding-top:10px; padding-left:5px; } .site-detail-search:hover {text-decoration: none;} /************************/ .base_top .nav {text-align: center;height: 48px;background-image: url(../img/gfx/nav-bg.gif);background-repeat: repeat-x;background-position:bottom;padding: 0 0 0 0; border-top: 7px solid #EB1A55;text-align:left;} .base_top .nav a {display: inline-block;border-bottom: 2px solid; margin: 0 3px;text-decoration: none;color: #546D96;line-height: 13px;font-size: 13px; padding: 10px 4px 8px 4px;} .base_top .nav a:hover {} .base_top .nav .nav-lnk-1{border-bottom-color: #EB1A55; margin-left: 0px;} .base_top .nav .nav-lnk-2{border-bottom-color: #EB1A1A;} .base_top .nav .nav-lnk-3{border-bottom-color: #182179;} .base_top .nav .nav-lnk-4{border-bottom-color: #39CDC8;} .base_top .nav .nav-lnk-5{border-bottom-color: #B0BE54;} /*.base_top .nav .nav-lnk-6{border-bottom-color: #F29428;}*/ .base_top .nav .nav-lnk-6{border-bottom-color: #918158;} /*.base_top .nav .nav-lnk-7{border-bottom-color: #918158;}*/ .base_top .nav .nav-lnk-7{border-bottom-color: #009FE1;} .base_top .nav .nav-lnk-8{border-bottom-color: #A4A5A6;} .base_top .nav .nav-lnk-9{border-bottom-color: #004071;} .base_top .nav .nav-lnk-10{border-bottom-color: #3F843D;} .base_top .nav .nav-lnk-11{border-bottom-color: #F6CE13;} .base_top .nav .nav-lnk-12{border-bottom-color: #000;} /*.base_top .nav .nav-lnk-13{border-bottom-color: #CB1BC1;}*/ .base_top .nav .nav-lnk-13{border-bottom-color: #ED1956;} .base_top .nav .nav-lnk-14{border-bottom-color: #787878;} .base_top .nav .nav-lnk-15{border-bottom-color: #324794; margin-right: 0px;} .base_top .nav .nav-lnk-16{border-bottom-color: #F2A654;} .base_top .nav .nav_div_1{} .base_top .nav .nav_div_2{} .base_top .box-news { } .page-nav { padding-bottom: 10px; } .page-nav p { color:Black; } .page-nav .main-page { padding-left: 0px; background-image: none; } .page-nav a { display: inline-block; float: left; background-image: url(../img/nav-ok.gif); background-repeat: no-repeat; background-position: 0px 6px; padding: 3px 0 3px 13px; margin-right: 10px; color: #4B84E2; text-decoration: none; font-size: 12px; line-height: 12px; } .page-nav a:hover {text-decoration:none;} .btpage-nav { padding-bottom: 10px; } .btpage-nav .main-page { padding-left: 0px; background-image: none; } .btpage-nav a { display: inline-block; float: left; background-image: url(../img/nav-ok.gif); background-repeat: no-repeat; background-position: 0px 6px; padding: 3px 0 3px 13px; margin-right: 10px; color: #4B84E2; text-decoration: none; font-size: 12px; line-height: 12px; } .btpage-nav a:hover {text-decoration: none;} /***************************************************/ .author-news .title {border-bottom: none;} .author-news .author-content{ padding: 10px 0px; margin: 0 15px; display: block; border-bottom: 1px dotted #7F7F7F; } .author-news .last{ border-bottom: none; } .author-news .author-content img { float: left; margin-right: 10px; } .author-news .author-content .title { font-size: 14px; line-height: 14px; color: #1B3B72; text-decoration: none; background-color: #FFF; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; display: inline; padding: 0; } .author-news .author-content .content { font-size: 12px; line-height: 16px; color: #4B4B4B; } .author-news .author-content .author { font-size: 13px; line-height: 14px; color: #1B3B72; padding-top: 10px; display: block; clear: both; } .btauthor { font-size: 13px; line-height: 14px; color: #1B3B72; padding-top: 10px; display: block; clear: both; } /**************************/ .other-news-list, .author-news, .article-author {margin: 0 0 20px 0} .other-news-list .title, .author-news .title, .article-author .title { background-color: #E3E3E3; border-left: 4px solid; padding: 8px 15px 8px 10px; border-top-style: none; border-right-style: none; border-bottom-style: none; margin: 0 0 5px 0; display: block; font-size: 16px; font-weight: bold; } .other-news-list-related { margin: 0 0 20px 0; background-color:#BBD4E4; color:#FFF; } .other-news-list-related .titlerelated { background-color: #5F759A; border-left: 4px solid; border-color: Black; padding: 8px 15px 8px 10px; border-top-style: none; border-right-style: none; border-bottom-style: none; margin: 0 0 5px 0; display: block; font-size: 16px; font-weight: bold; color:#FFF; } .middle_news .news .other-news-list li a{width: 167px; color: Black;} .middle_news .news .other-news-list-related li a{width: 167px; color: Black;} .other-news-list .BlackContent { color:Black;} .other-news-list-related .BlackContent { color:Black;} .other-news-list li{padding: 0 15px;} .other-news-list-related li{padding: 0 15px;} .other-news-list li a{ display: block; font-size: 13px; line-height: 18px; color: Black; /*#1B3B72*/ text-decoration: none; background-image: url(../img/news/news-ok.gif); background-repeat: no-repeat; background-position: 0px 8px; width: 215px; padding: 4px 0 4px 15px; } .other-news-list-related li a{ display: block; font-size: 13px; line-height: 18px; color: Black; /*#1B3B72*/ text-decoration: none; background-image: url(../img/news/news-ok.gif); background-repeat: no-repeat; background-position: 0px 8px; width: 215px; padding: 4px 0 4px 15px; } .other-news-list li a:hover{text-decoration:none;} .other-news-list-related li a:hover{text-decoration:none;} .other-news-list .news-pic { text-align: center; display: block; padding-bottom: 10px; } .article-author {} .article-author li { padding: 15px 15px; display: block; border-bottom: 1px dotted #7F7F7F; } .article-author .content-title { background-color: #FFF; padding: 0; margin: 0 0 5px 0; display: block; font-size: 14px; font-weight: bold; text-decoration: none; line-height: 16px; color: #1b3c72; } .bttcontent-title { background-color: #FFF; padding: 0; margin: 0 0 5px 0; display: block; font-size: 14px; font-weight: bold; text-decoration: none; line-height: 16px; color: #1b3c72; } .article-author .content-title:hover {text-decoration:none;} .article-author .content { font-size: 12px; line-height: 16px; color: #818181; background-image: url(../img/news/blue-ok.gif); background-repeat: no-repeat; background-position: right bottom; padding-top: 0px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; width: auto; text-decoration: none; display: block; } .article-author .btcontent { font-size: 12px; line-height: 16px; color: #818181; padding-top: 0px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; width: auto; text-decoration: none; display: block; } .article-author .btt2content-title { background-color: #FFF; padding: 0; margin: 0 0 5px 0; background-image: url(../img/news/blue-ok.gif); background-repeat: no-repeat; background-position: right bottom; display: block; font-size: 16px; font-weight: bold; text-decoration: none; line-height: 16px; color: #1b3c72; padding-top: 0px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; } .article-author .content:hover {text-decoration:none;} .article-author .date { color: #818181; font-size: 11px; line-height: 16px; } /****************************/ .middle-2-260x200 {margin-bottom: 20px; width: 260px; text-align: center;} #footer {background-image: url(../img/gfx/footer-bg.gif);background-repeat: repeat-x;background-position: 0px 0px;padding-top: 16px;color: Black /*#9C9C9C*/;} #footer .footer-nav {border-top-width: 4px;border-top-style: solid;border-top-color: #3E7BE0;padding-top: 10px;padding-bottom: 10px;border-bottom-width: 1px;border-bottom-style: dotted;border-bottom-color: #7C7C7C;text-align: center;margin-bottom: 10px;} #footer .footer-nav a {text-decoration: none;color: Black /*#7C7C7C*/;display: inline;margin-right: 8px;margin-left: 8px;} #footer .footer-nav a:hover {text-decoration:none;} #footer .footer-content {float: left;} #footer .footer-content .footer-content-logo {float: left;margin-right: 15px;} #footer .footer-content .footer-content-text {font-family: Arial, Helvetica, sans-serif;font-size: 11px;line-height: 13px;width: 580px;float: left;padding-top: 15px; color:Black;} #footer .footer-logo {float: right;padding-top: 15px;} #footer .footer-logo img {margin-right: 10px;float: left;} #footer .footer-logo .footer-copyright {padding-top: 5px;display: block;float: left;width: 45px; color:Black;} .pt5px{padding-top:5px} .pt10px{padding-top:10px} .pt15px{padding-top:15px} .no-border{border: 0px;} .kalin {font-weight: bold;} .temizle {clear: both; line-height: 1px;} .temizle_bt {clear: both; } .cursorYap {cursor: pointer;} .rotate {-webkit-transform: rotate(-90deg);/* Safari */ -moz-transform: rotate(-90deg);/* Firefox */ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);/* Internet Explorer */ } .base_middle {clear: both;padding: 0px 0 10px 0;} .base_middle .middle_1 {clear: both;} .base_middle .middle_1 .middle_1_1 {float: left;width: 482px;} .base_middle .middle_1 .middle_1_1 .middle_1_1_1 {height: 348px;width: 480px;} .base_middle #manset {height: 348px;width: 480px;border: 1px solid #BBB9B9;} .base_middle #manset .haberler {height: 318px;width: 480px;overflow: hidden;} .base_middle #manset ul {height: 318px;width: 480px;overflow: hidden;} .base_middle #manset .haberler li {height: 318px;width: 480px;} .base_middle #manset .haberler li img {height: 318px;width: 480px;} .base_middle #manset .haberler li a {text-decoration: none;display: block;height: 318px;width: 480px;} .base_middle #manset li .haber-bg {background-color: #244478;padding: 10px 20px;color: #fff;width: 440px;height: 20px;margin: -40px 0 0 0;filter: alpha(opacity=78);-moz-opacity:0.7;-khtml-opacity: 0.7;opacity: 0.7;z-index: 5;} .base_middle #manset li .haber-bg-1 {background-color: #244478;padding: 10px 20px;color: #fff;width: 440px;height: 40px;margin: -60px 0 0 0;filter: alpha(opacity=78);-moz-opacity:0.7;-khtml-opacity: 0.7;opacity: 0.7;z-index: 5;} .base_middle #manset li .haber-bg-no {padding: 10px 20px;color: #fff;width: 440px;height: 40px;margin: -60px 0 0 0;filter: alpha(opacity=78);-moz-opacity:0.7;-khtml-opacity: 0.7;opacity: 0.7;z-index: 5;} .base_middle #manset .haberler li h1 {font-size: 20px;font-weight: bold;line-height: 22px;text-decoration: none;} .base_middle #manset .haberler li p {text-decoration: none;} .base_middle #manset .haberler-sayi {height: 37px;clear: both;position: relative;z-index: 6;margin: -6px 0 0 0;} .base_middle #manset .haberler-sayi li {float: left;} .base_middle #manset .haberler-sayi li a {display: block;padding: 9px 0 6px 0;color: #FFF;text-decoration: none;font-size: 16px;width: 34px;text-align: center;background-image: url(../img/news/news-select-bg.gif);background-repeat: no-repeat;background-position: 0px 6px;line-height: 21px;} .base_middle #manset .haberler-sayi li a:hover {background-position: center -30px;} .base_middle #manset .haberler-sayi li .sec {background-position: center -30px;} .geri {width: 35px;border-right: 1px dotted #79809A;height: 23px;padding: 7px 0 0 0;text-align: center;cursor: pointer;line-height: 16px;background-image: url(../img/news/geri.jpg);margin: 6px 0 0 0;background-color: #313562;background-repeat: no-repeat;background-position: center center;} .geri:hover {background-image: url(../img/news/geri-1.jpg);background-color: #ED1956;height: 23px;padding: 7px 0 0 0;} .ileri {width: 35px;border-left: 1px dotted #79809A;float: right;padding: 7px 0 0px 0;height: 23px;text-align: center;cursor: pointer;line-height: 16px;background-image: url(../img/news/ileri.jpg);margin: 6px 0 0 0;background-color: #313562;background-repeat: no-repeat;background-position: center center;} .ileri:hover {background-image: url(../img/news/ileri-1.jpg);background-color: #ED1956;height: 23px;padding: 7px 0 0 0;} .base_middle .middle_1 .middle_1_1 .middle_1_1_2 {padding: 15px 0 15px 0;} .base_middle .middle_1 .middle_1_1 .middle_1_1_2 .middle_1_1_2_news_first {float: left;width: 224px;border-right: 1px dotted #A7A7A7;padding: 3px 14px 14px 0;border-bottom:0px;} .base_middle .middle_1 .middle_1_1 .middle_1_1_2 .middle_1_1_2_news_last {float: left;width: 224px;padding: 3px 0 14px 14px;border-bottom:0px;} .BorderTopDotted{border-top: 1px dotted #A7A7A7;} .base_middle .middle_1_1_2 a {text-decoration: none;} .base_middle .middle_1_1_2 a:hover, .middle_1_1_2 p:hover, .middle_1_1_2 h2:hover {text-decoration:none; color: #4c4c4c;} .base_middle .middle_1 .middle_1_1 .middle_1_1_2 .news-pic {height: 159px;width: 224px;border: 1px solid #A7A7A7;margin: 5px 0 8px 0;} .base_middle .middle_1 .middle_1_1 .middle_1_1_2 .news-pic:hover {border: 1px solid #666;} .base_middle .middle_1 .middle_1_1 .middle_1_1_2 h2 {font-size: 20px;color: #1b3c72;line-height: 25px;padding: 0 0 7px 0;font-weight: normal;} .base_middle .middle_1 .middle_1_1 .middle_1_1_2 p {color:Black /*#4c4c4c*/;line-height: 18px;} .base_middle .middle_1 .middle_1_1 .middle_1_1_3 .news {width: 480px;border-bottom: 1px dotted #A7A7A7;padding: 15px 0 10px 0;clear: both;} .base_middle .middle_1 .middle_1_1 .middle_1_1_3 .news-pic {float: left;height: 100px;width: 150px;border: 1px solid #A7A7A7;margin: 0 10px 5px 0;} .base_middle .middle_1 .middle_1_1 .middle_1_1_3 .news-pic:hover {border: 1px solid #666;} .base_middle .middle_1 .middle_1_1 .middle_1_1_3 h2 {font-size: 20px;color: #1b3c72;line-height: 25px;padding: 0 0 5px 0;font-weight: normal;} .base_middle .middle_1 .middle_1_1 .middle_1_1_3 p {color:Black /*#4c4c4c*/;line-height: 18px;} .base_middle .middle_1_1_3 .news a {text-decoration: none;} .base_middle .middle_1_1_3 .news a:hover {text-decoration:none;} .base_middle .middle_1_1_3 .news a:hover, .news p:hover, .news h2:hover {text-decoration:none; color: #4c4c4c;} /*********************/ .base_middle .middle_1 .middle_1_2 {float: right;width: 476px;border-left: 1px solid #CFCFCF;padding-left: 10px;} .base_middle .middle_1_2_1_1 {width: 300px;display: block;float: left;border-right: 1px solid #CFCFCF;padding-right: 10px;} .base_middle .middle_1_2_1_1 ul {width: 300px;display: block;} .base_middle .middle_1_2_1_1 .news {background-image: url(../img/news/ok-mag.gif);background-repeat: no-repeat;background-position: 0px 14px;border-bottom: 1px dotted #7F7F7F;padding: 10px 0 10px 0;} .base_middle .middle_1_2_1_1 .news a {text-decoration: none;} .base_middle .middle_1_2_1_1 .news a:hover {text-decoration:none;} .base_middle .middle_1_2_1_1 .news h2:hover {text-decoration:none;} .base_middle .middle_1_2_1_1 .news p:hover {text-decoration:none;} .base_middle .middle_1_2_1_1 .news h2 {color: #1B3C72;text-decoration: none;padding-left: 15px;font-size: 16px;line-height: 20px;font-weight: normal;height: 26px;} .base_middle .middle_1_2_1_1 .news .news-pic {float: left;height: 95px;width: 140px;margin: 0 10px 5px 0;} .base_middle .middle_1_2_1_1 .news p {line-height: 16px;text-decoration: none;color:Black /*#4C4C4C*/;} .base_middle .middle_1_2_1_1 .news-list {background-image: url(../img/news/ok-mag-2.gif);background-repeat: no-repeat;background-position: 0px 9px;padding-right: 5px;padding-bottom: 3px;padding-left: 25px;display: block;padding-top: 5px;border-bottom: 1px dotted #7F7F7F;} .base_middle .middle_1_2_1_1 .news-list a {text-decoration: none;color: #2A497B;font-size: 14px;font-weight: bold;} .base_middle .middle_1_2_1_1 .news-list a:hover {text-decoration:none;} .base_middle .middle_1_2_1_1 .news-list-2 {background-image: url(../img/news/ok-mavi.gif);background-repeat: no-repeat;background-position: 0px 9px;padding-right: 5px;padding-bottom: 3px;padding-left: 25px;display: block;padding-top: 5px;border-bottom: 1px dotted #7F7F7F;} .base_middle .middle_1_2_1_1 .news-list-2 a {text-decoration: none;color: #454545;font-size: 14px;font-weight: bold;} .base_middle .middle_1_2_1_1 .news-list-2 a:hover {text-decoration:none;} .base_middle .middle_1_2_1_1 .middle_1_2_1_1_300x250{text-align: center; padding-top: 15px;} .base_middle .middle_1_2_1_2 {float: right;padding-left: 10px;width: 155px;} .base_middle .middle_1_2_1_2 .ekonomi li { padding-bottom: 6px;} .base_middle .middle_1_2_1_2 .ekonomi .last-news-pic {padding-bottom: 0px;border-bottom: 5px solid #3E7BE0;margin-bottom: 5px;} .base_middle .middle_1_2_1_2 .ekonomi .last-news a {text-decoration: none; color:Black;} .base_middle .middle_1_2_1_2 .ekonomi .last-news a:hover {text-decoration:none;} .base_middle .middle_1_2_1_2 .ekonomi .last-news h2:hover {text-decoration:none;} .base_middle .middle_1_2_1_2 .ekonomi .last-news p:hover {text-decoration:none;} .base_middle .middle_1_2_1_2 .ekonomi li h2 {font-size: 16px;line-height: 20px;color: #3E7BE0;text-decoration: none;padding-bottom: 5px;font-weight: normal;} .base_middle .middle_1_2_1_2 .ekonomi li a {text-decoration: none;color: #4C4C4C;line-height: 16px;} .base_middle .middle_1_2_1_2 .ekonomi .last-news-2 {border-top: 1px dotted #7F7F7F;border-bottom: 1px dotted #7F7F7F;background-image: url(../img/news/blue-ok.gif);background-repeat: no-repeat;background-position: 0px 9px;padding: 5px 0 5px 25px;} .base_middle .middle_1_2_1_2 .ekonomi .last-news-2 a {text-decoration: none;color: #3E7BE0;line-height: 18px;} .base_middle .middle_1_2_1_2 .ekonomi .last-news-2 a:hover {text-decoration:none;color: #1b3c72;} .base_middle .middle_1_2_2 ul li {border-bottom-width: 1px;border-bottom-style: dotted;border-bottom-color: #7F7F7F;} .base_middle .middle_1_2_1_2 .ekonomi .news-link { background-color: #ACB94D; display: block; padding: 5px 10px; font-size: 13px; line-height: 18px; color: #FFF; font-weight: bold; text-decoration: none; } .yesilnews-link { background-color: #ACB94D; display: block; padding: 5px 10px; font-size: 13px; line-height: 18px; color: #FFF; font-weight: bold; text-decoration: none; } .mavinews-link { background-color: #3E7BE0; display: block; padding: 5px 10px; font-size: 13px; line-height: 18px; color: #FFF; font-weight: bold; text-decoration: none; } .base_middle .middle_1_2_2 {padding-top: 10px;} .base_middle .middle_1_2_2 ul li {border-bottom-width: 1px;border-bottom-style: dotted;border-bottom-color: #7F7F7F; display: block;} .base_middle .middle_1_2_2 ul .title {font-size: 20px;line-height: 20px;font-weight: normal;color: #FFF;background-color: #2EA8ED;padding: 5px; border-bottom: none;} .base_middle .middle_1_2_2 ul .title .title-text {float: left;padding-left: 5px;} .base_middle .middle_1_2_2 ul .title .all-button {float: right;line-height: 14px;font-size: 14px;padding: 4px 5px 0 0;} .base_middle .middle_1_2_2 ul .title .all-button a {color: #FFF;text-decoration: none;} .base_middle .middle_1_2_2 ul .title .all-button a:hover {text-decoration: none;} /*Radikal Günlük*/ .base_middle .middle_1_2_2 ul .titleRadikalGunluk {font-size: 20px;line-height: 20px;font-weight: normal;color: #FFF;background-color: #005296;padding: 5px; border-bottom: none;} .base_middle .middle_1_2_2 ul .titleRadikalGunluk .title-textRadikalGunluk {float: left;padding-left: 5px;} .base_middle .middle_1_2_2 ul .titleRadikalGunluk .all-buttonRadikalGunluk {float: right;line-height: 14px;font-size: 14px;padding: 4px 5px 0 0;} .base_middle .middle_1_2_2 ul .titleRadikalGunluk .all-buttonRadikalGunluk a {color: #FFF;font-weight: normal;text-decoration: none;} .base_middle .middle_1_2_2 ul .titleRadikalGunluk .all-buttonRadikalGunluk a:hover {text-decoration: none;} .base_middle .middle_1_2_2 ul .newsRadikalGunlukGray {background-color: #F4F4F4; padding: 6px 0px 6px 10px;width: 466px;} .base_middle .middle_1_2_2 ul .newsRadikalGunlukGray a {font-size: 16px;line-height: 18px;color:#005296 /*#454545*/;text-decoration: none;display: block;float: left;padding-top: 3px;width: 440px;} .base_middle .middle_1_2_2 ul .newsRadikalGunlukGray a:hover {text-decoration: none;} .base_middle .middle_1_2_2 ul .newsRadikalGunlukGray img {float: right;} .base_middle .middle_1_2_2 ul .newsRadikalGunluk {padding: 6px 0px 6px 10px;width: 466px;} .base_middle .middle_1_2_2 ul .newsRadikalGunluk a {font-size: 16px;line-height: 18px;color:#005296 /*#454545*/;text-decoration: none;display: block;float: left;padding-top: 3px;width: 440px;} .base_middle .middle_1_2_2 ul .newsRadikalGunluk a:hover {text-decoration: none;} .base_middle .middle_1_2_2 ul .newsRadikalGunluk img {float: right;} .base_middle .middle_1_2_2 ul .news { background-image: url(../img/news/ok-mavi-2.gif); background-repeat: no-repeat; background-position: 7px 11px; padding: 6px 0px 6px 30px; width: 446px; } .base_middle .middle_1_2_2 ul .news a {font-size: 14px;line-height: 16px;color:Black /*#454545*/;text-decoration: none;display: block;float: left;padding-top: 3px;width: 440px;} .base_middle .middle_1_2_2 ul .news a:hover {text-decoration: none;} .base_middle .middle_1_2_2 ul .news img {float: right;} .base_middle .middle_1_2_3 {padding-top: 60px;} .base_middle .middle_1_2_3 .news-tab {width: 476px;height: 31px;display: block;position: absolute;margin-top: -31px;} .base_middle .middle_1_2_3 .news-tab li {float: left;padding: 3px 5px 0px 5px;margin-top: 6px;display: block;border-right: 1px solid #DBDBDB;cursor: pointer;} .base_middle .middle_1_2_3 .news-tab .tab-first {border-right: 1px solid #FFFFFF;} .base_middle .middle_1_2_3 .news-tab .tab-select {background-color: #F4F4F4;border-top: 1px solid #DBDBDB;border-right: 1px solid #DBDBDB;border-left: 1px solid #DBDBDB;border-bottom: 1px solid #F4F4F4;padding: 5px 0px 5px 2px;margin: 0px;color: #1b3c72;font-size: 14px;} .base_middle .middle_1_2_3 .news-content {background-color: #F4F4F4;padding: 5px 10px;border-top: 1px solid #DBDBDB;border-right: 1px solid #DBDBDB;border-bottom: 1px solid #DBDBDB;border-left: 1px solid #DBDBDB;background-image: url(../img/news/tab-bg.gif);background-repeat: no-repeat;background-position: right center;} .base_middle .middle_1_2_3 .news-content ul li {display: block;} .base_middle .middle_1_2_3 .news-content ul li a {text-decoration: none;display: block;color:Black /*#424242*/;background-image: url(../img/news/ok-mavi-3.gif);background-repeat: no-repeat;background-position: 3px 12px;padding: 8px 0 8px 20px;font-size: 16px;border-bottom: 1px dotted #BBBBBB;width: 430px;} .base_middle .middle_1_2_3 .news-content ul li a:hover {text-decoration:none;} .base_middle .middle_1_2_3 .news-content .all-news {text-align: right;padding-top: 8px;} .base_middle .middle_1_2_3 .news-content .all-news a{color: #1b3c72;font-weight: bold;text-decoration: none;} .base_middle .middle_1_2_3 .news-content .all-news a:hover {text-decoration:none;} /***************************************************/ /**************** Middle 2 *************************/ /***************************************************/ /************************************************ .base_middle .middle_2 {padding-top: 10px;padding-bottom: 10px;border-bottom: 3px solid #3E7BE0; } .base_middle .middle_2 .news-slider-title {color: #FFF;text-decoration: none;background-color: #3E7BE0;margin-bottom: 8px;padding: 8px 10px 8px 15px;height: 18px;} .base_middle .middle_2 .news-slider-title h2 {display: block;float: left;font-weight: normal;font-size: 16px;line-height: 16px;} .base_middle .middle_2 .news-slider-title .news-slider-buttons {float: right;} .base_middle .middle_2 .news-slider-title .news-slider-buttons img {margin-left: 5px;} .yataySlider_1 { width: 980px; } .base_middle .middle_2 .news-slider {width: 980px;} .base_middle .middle_2 .news-slider li {float: left;width: 316px;padding-right: 10px;} .base_middle .middle_2 .news-slider li img {float: left;border-bottom: 4px solid;} .base_middle .middle_2 .news-slider li .title-link {font-weight: bold;text-decoration: none;font-size: 12px;padding-top: 25px; padding-bottom: 5px;} .base_middle .middle_2 .news-slider .news-button {background-repeat: no-repeat;background-position: 0px 4px;font-family: 12;line-height: 12px;color: #000;text-decoration: none;display: block;float: left;padding: 5px 0 5px 25px;margin-top: 10px;} .base_middle .middle_2 .news-slider .news-button:hover {text-decoration: none;} .base_middle .middle_2 .news-slider .news-1 img {border-bottom-color: #F59A0B;} .base_middle .middle_2 .news-slider .news-2 img {border-bottom-color: #918158;} .base_middle .middle_2 .news-slider .news-3 img {border-bottom-color: #46D0CC;} .base_middle .middle_2 .news-slider .news-1 .title-link {color: #F59A0B; font-weight: normal;} .base_middle .middle_2 .news-slider .news-2 .title-link {color: #918158; font-weight: normal;} .base_middle .middle_2 .news-slider .news-3 .title-link {color: #46D0CC; font-weight: normal;} .base_middle .middle_2 .news-slider .news-1 .news-button {background-image: url(../img/news/ok-turuncu.gif);} .base_middle .middle_2 .news-slider .news-2 .news-button {background-image: url(../img/news/ok-yesil.gif);} .base_middle .middle_2 .news-slider .news-3 .news-button {background-image: url(../img/news/ok-mavi-4.gif);} ***/ /***************************************************/ /**************** Middle 2 *************************/ /************************************************* .base_middle .middle_2 {padding-top: 10px;padding-bottom: 10px;border-bottom: 3px solid #3E7BE0;} .base_middle .middle_2 .news-slider-title {color: #FFF;text-decoration: none;background-color: #3E7BE0;margin-bottom: 8px;padding: 8px 10px 8px 15px;height: 18px;} .base_middle .middle_2 .news-slider-title h2 {display: block;float: left;font-weight: normal;font-size: 16px;line-height: 16px;} .base_middle .middle_2 .news-slider-title .news-slider-buttons {float: right;} .base_middle .middle_2 .news-slider-title .news-slider-buttons img {margin-left: 5px;} .yataySlider_1 { width: 980px; height: 130px; overflow: hidden; position: relative; } .base_middle .middle_2 .news-slider { width: 1968px; } .base_middle .middle_2 .news-slider li {float: left;width: 316px;padding-right: 12px; display: block;} .base_middle .middle_2 .news-slider li img {float: left;margin-right: 8px;border-bottom: 4px solid; width: 183px;} .base_middle .middle_2 .news-slider li .title-link {font-weight: bold;text-decoration: none;font-size: 17px;height: 75px;padding-top: 10px; display: block; text-align: center;} .base_middle .middle_2 .news-slider .news-button {background-repeat: no-repeat;background-position: 0px 4px;font-family: 12;line-height: 12px;color: #000;text-decoration: none;display: block;float: left;padding: 5px 0 5px 25px;margin-top: 10px;} .base_middle .middle_2 .news-slider .news-button:hover {text-decoration: none;} .base_middle .middle_2 .news-slider .news-1 img {border-bottom-color: #F59A0B;} .base_middle .middle_2 .news-slider .news-2 img {border-bottom-color: #918158;} .base_middle .middle_2 .news-slider .news-3 img {border-bottom-color: #46D0CC;} .base_middle .middle_2 .news-slider .news-1 .title-link {color: #F59A0B; font-weight: normal;} .base_middle .middle_2 .news-slider .news-2 .title-link {color: #918158; font-weight: normal;} .base_middle .middle_2 .news-slider .news-3 .title-link {color: #46D0CC; font-weight: normal;} .base_middle .middle_2 .news-slider .news-1 .news-button {background-image: url(../img/news/ok-turuncu.gif);} .base_middle .middle_2 .news-slider .news-2 .news-button {background-image: url(../img/news/ok-yesil.gif);} .base_middle .middle_2 .news-slider .news-3 .news-button {background-image: url(../img/news/ok-mavi-4.gif);}**/ .base_middle .middle_2 {padding-top: 10px;padding-bottom: 10px;border-bottom: 3px solid #3E7BE0; } .base_middle .middle_2 .news-slider-title {color: #FFF;text-decoration: none;background-color: #3E7BE0;margin-bottom: 8px;padding: 8px 10px 8px 15px;height: 18px;} .base_middle .middle_2 .news-slider-title h2 {display: block;float: left;font-weight: normal;font-size: 16px;line-height: 16px;} .base_middle .middle_2 .news-slider-title .news-slider-buttons {float: right;} .base_middle .middle_2 .news-slider-title .news-slider-buttons img {margin-left: 5px;} .base_middle .middle_2 .news-slider {width: 980px;} .base_middle .middle_2 .news-slider li {float: left;width: 316px;padding-right: 10px;} .base_middle .middle_2 .news-slider li img {float: left;margin-right: 8px;border-bottom: 4px solid;} /*.base_middle .middle_2 .news-slider li .title-link {font-weight: bold;text-decoration: none;font-size: 17px;padding-top: 10px; vertical-align:middle; }*/ /*.base_middle .middle_2 .news-slider li .title-link {font-weight: bold;text-decoration: none;font-size: 17px;height: 75px;padding-top: 10px; display: block; text-align: center; }*/ .base_middle .middle_2 .news-slider .news-button {background-repeat: no-repeat;background-position: 0px 4px;font-family: 12;line-height: 12px;color: #000;text-decoration: none;display: block;float: left;padding: 5px 0 5px 25px;margin-top: 10px;} .base_middle .middle_2 .news-slider .news-button:hover {text-decoration: none;} .base_middle .middle_2 .news-slider .news-1 img {border-bottom-color: #F59A0B;} .base_middle .middle_2 .news-slider .news-2 img {border-bottom-color: #918158;} .base_middle .middle_2 .news-slider .news-3 img {border-bottom-color: #46D0CC;} .base_middle .middle_2 .news-slider .news-1 .title-link {color: #F59A0B; font-weight: normal;font-weight: bold;text-decoration: none;font-size: 17px;line-height:20px;padding-top: 10px; display: block; text-align: center; vertical-align:middle; } .base_middle .middle_2 .news-slider .news-2 .title-link {color: #918158; font-weight: normal;font-weight: bold;text-decoration: none;font-size: 17px;line-height:20px;padding-top: 10px; display: block; text-align: center; vertical-align:middle;} .base_middle .middle_2 .news-slider .news-3 .title-link {color: #46D0CC; font-weight: normal;font-weight: bold;text-decoration: none;font-size: 17px;line-height:20px;padding-top: 10px; display: block; text-align: center; vertical-align:middle;} .base_middle .middle_2 .news-slider .news-1 .news-button {background-image: url(../img/news/ok-turuncu.gif);} .base_middle .middle_2 .news-slider .news-2 .news-button {background-image: url(../img/news/ok-yesil.gif);} .base_middle .middle_2 .news-slider .news-3 .news-button {background-image: url(../img/news/ok-mavi-4.gif);} /*******************************/ .base_middle .middle_3 {padding: 10px 0 0 0;} .base_middle .middle_3_0{width: 660px; float: left; border-right: 1px solid #CFCFCF;}/**/ .base_middle .middle_3_0_500x90{text-align: center;} .base_middle .middle_3_0_1{width: 250px; float: right;} .base_middle .author {background-repeat: no-repeat;background-position: right top;float: right;height: 90px;width: 465px;padding: 4px 0 0 0;} .base_middle .author .content {background-color: #F4F4F4;width: 345px;height: 76px;padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;} .base_middle .author .content h2 {font-size: 14px;line-height: 14px;color: #eb1a55;font-weight: bold;} .base_middle .author .content .title {display: block;height: 30px;line-height: 14px;width: 210px;overflow: hidden;margin-top: 3px;font-style: italic;color: #313131;} .base_middle .author .content .author-ns {display: block;line-height: 13px;text-align: right;color: #313131;} .base_middle .middle_3_1 {float: left;width: 307px;padding-right: 13px;} .base_middle .middle_3_1_1 .news { border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #7F7F7F; padding: 10px 0; } .base_middle .middle_3_1_1 .news h2 {font-size: 16px;color: #1b3c72;padding-bottom: 7px;text-decoration: none;font-weight: bold;} .base_middle .middle_3_1_1 .news img {float: left;border: 1px solid #A7A7A7;margin-right: 8px;} .base_middle .middle_3_1_1 .news p {line-height: 18px;text-decoration: none;color:Black /*#4C4C4C*/;} .base_middle .middle_3_1_1 .news a {text-decoration: none;} .base_middle .middle_3_1_1 .news a:hover {text-decoration:none;} .base_middle .middle_3_1_1 .news h2:hover {text-decoration:none;} .base_middle .middle_3_1_1 .news p:hover {text-decoration:none;} .base_middle .middle_3_1_1 .news .news-comment {background-image: url(../img/news/ok-pembe.gif);background-repeat: no-repeat;background-position: 0px 6px;display: block;padding-left: 25px;padding-top: 3px;padding-bottom: 3px;color: #eb1a55;text-decoration: none;margin-top: 5px;width: 80px;} .base_middle .middle_3_1_1 .news .news-comment:hover {text-decoration:none;} .base_middle .middle_3_1_1 .author {background-repeat: no-repeat;background-position: right top;height: 78px;width: 307px;padding: 4px 0 0 0;} .base_middle .middle_3_1_1 .author .content {background-color: #F4F4F4;width: 210px;height: 64px;padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;} .base_middle .middle_3_1_1 .author .content h2 {font-size: 14px;line-height: 14px;color: #eb1a55;font-weight: bold;} .base_middle .middle_3_1_1 .author .content .title {display: block;height: 30px;line-height: 14px;width: 210px;overflow: hidden;margin-top: 3px;font-style: italic;color: #313131;} .base_middle .middle_3_1_1 .author .content .author-ns {display: block;line-height: 13px;text-align: right;color: #313131;} .base_middle .middle_3_1_2 .cinema {} .base_middle .middle_3_1_2 .cinema .title {background-color: #000;padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;color: #FFF;height: 20px;} .base_middle .middle_3_1_2 .cinema .title .title-text {float: left;width: 150px;font-size: 14px;} .base_middle .middle_3_1_2 .cinema .title .title-button {float: right;text-align: right;width: 60px;background-image: url(../img/cinema/ok.gif);background-repeat: no-repeat;background-position: 10px 5px;} .base_middle .middle_3_1_2 .cinema .title .title-button a {color: #FFF;text-decoration: none;} .base_middle .middle_3_1_2 .cinema .title .title-button a:hover {text-decoration:none;} .base_middle .middle_3_1_2 .cinema ul {background-color: #F4F4F4;padding: 6px 12px 12px 12px;} .base_middle .middle_3_1_2 .cinema ul li {border-bottom: 1px dotted #7A7A7A;padding-top: 10px;padding-bottom: 10px;clear: both;width: 285px;} .base_middle .middle_3_1_2 .cinema ul li img {float: left;margin-right: 10px;border: 1px solid #A7A7A7;} .base_middle .middle_3_1_2 .cinema ul li .cinema-info {float: left;height: 52px;width: 181px;padding-top: 8px;} .base_middle .middle_3_1_2 .cinema ul li h3 {color: #000;line-height: 16px;font-weight: bold;} .base_middle .middle_3_1_2 .cinema ul li a {display: block;float: left;background-image: url(../img/news/ok-pembe.gif);background-repeat: no-repeat;background-position: 0px 4px;padding-left: 25px;width: 105px;height: 20px;text-decoration: none;color: #000;} .base_middle .middle_3_1_2 .cinema ul li a:hover {text-decoration:none;} .base_middle .middle_3_2 {float: left;width: 300px;padding-right: 20px;padding-left: 18px;border-right-width: 0px;border-left-width: 1px;border-right-style: solid;border-left-style: solid;border-right-color: #CFCFCF;border-left-color: #CFCFCF;} .base_middle .middle_3_2_2 .news {padding: 10px 0 10px 0;border-bottom: 1px dotted #7F7F7F;} .base_middle .middle_3_2_2 .news h2 {font-size: 16px;color: #1b3c72;padding-bottom: 7px;text-decoration: none;font-weight: bold;} .base_middle .middle_3_2_2 .news img {float: left;border: 1px solid #A7A7A7;margin-right: 8px;} .base_middle .middle_3_2_2 .news p {line-height: 18px;text-decoration: none;color:Black /*#4C4C4C*/;} .base_middle .middle_3_2_2 .news a {text-decoration: none;} .base_middle .middle_3_2_2 .news a:hover {text-decoration:none;} .base_middle .middle_3_2_2 .news h2:hover {text-decoration:none;} .base_middle .middle_3_2_2 .news p:hover {text-decoration:none;} .base_middle .middle_3_2_2 .news .news-comment {background-image: url(../img/news/ok-pembe.gif);background-repeat: no-repeat;background-position: 0px 6px;display: block;padding-left: 25px;padding-top: 3px;padding-bottom: 3px;color: #eb1a55;text-decoration: none;margin-top: 5px;width: 80px;} .base_middle .middle_3_2_2 .news .news-comment:hover {text-decoration:none;} .base_middle .middle_3_2_3 ul {margin-top: 10px;height: 180px;} .base_middle .middle_3_2_3 ul .first-news {margin-right: 10px;} .base_middle .middle_3_2_3 li {float: left;height: 132px;width: 145px;} .base_middle .middle_3_2_3 ul h2 {font-size: 14px;color: #FFF;background-color: #3E7BE0;padding: 5px 10px;line-height: 16px;height: 33px;} .base_middle .middle_3_2_3 ul a {text-decoration: none;} /*********************************/ .base_middle .middle_3_3 {float: right;width: 306px;} .base_middle .middle_3_3_1 ul {float: right;width: 306px; } .base_middle .middle_3_3_1 ul .title {background-color: #3E7BE0;color: #FFF;height: 20px;padding: 5px 10px;width: 286px;} .base_middle .middle_3_3_1 ul .title .title-text {float: left;width: 150px;font-size: 16px;} .base_middle .middle_3_3_1 .title a {float: right;width: 30px;display: block;background-image: url(../img/authors/ok.gif);background-repeat: no-repeat;background-position: 0px 5px;color: #FFF;text-decoration: none;padding: 0 0 0 15px;background-color: #3E7BE0;} .base_middle .middle_3_3_1 .title a:hover {text-decoration:none;background-color: #3E7BE0;} .base_middle .middle_3_3_1 ul .row-gray {background-color: #F4F4F4;} .base_middle .middle_3_3_1 ul li {border-bottom: 1px dotted #7B7B7B;clear: both;display: block;width: 306px;} .base_middle .middle_3_3_1 ul li img {float: left;height: 50px;width: 42px;border: 1px solid #B1B1B1;margin-right: 10px;} .base_middle .middle_3_3_1 ul li a{display: block;text-decoration: none;width: 280px;padding: 11px 13px;} .base_middle .middle_3_3_1 ul li a:hover{background-color: #E9E9E9;} .base_middle .middle_3_3_1 ul .author-content {float: left;padding: 10px 0 0 0;} .base_middle .middle_3_3_1 ul .author-content p {color: #3E7BE0;text-decoration: none;font-size: 15px;line-height: 18px;cursor:pointer;} .base_middle .middle_3_3_1 ul .author-content h3 {color: #494949;text-decoration: none;line-height: 15px;cursor:pointer;} /*****************************************/ .base_middle .middle_4 {padding-top: 10px;padding-bottom: 15px;border-bottom: 3px solid #EB1A55;} .base_middle .middle_4 .news-slider-title {font-size: 16px;line-height: 16px;color: #FFF;text-decoration: none;background-color: #EB1A55;padding: 8px 10px 8px 15px;} .base_middle .middle_4 .news-slider-title h2 {display: block;float: left;font-weight: normal;line-height: 16px;} .base_middle .middle_4 .news-slider-title .news-slider-buttons {float: right;} .base_middle .middle_4 .news-slider-title .news-slider-buttons img {margin-left: 5px;} .base_middle .middle_4 .news-slider {} .base_middle .middle_4 .news-slider {width: 980px;padding-top: 8px;} .base_middle .middle_4 .news-slider li {float: left;width: 229px;margin-right: 21px;} .base_middle .middle_4 .news-slider li a {text-decoration: none;} .base_middle .middle_4 .news-slider li a:hover {text-decoration:none;} .base_middle .middle_4 .news-slider li h2:hover {text-decoration:none;} .base_middle .middle_4 .news-slider li p:hover {text-decoration:none;} .base_middle .middle_4 .news-slider li img {margin: 0 0 10px 0;} .base_middle .middle_4 .news-slider li .news-content {padding-right: 15px;padding-left: 15px;} .base_middle .middle_4 .news-slider li h2 {font-weight: bold;text-decoration: none;font-size: 17px;color: #4B84E2;padding-bottom: 5px;} .base_middle .middle_4 .news-slider li .news-content .date {text-decoration: none;color: #373737;line-height: 12px;font-weight: bold;} .base_middle .middle_4 .news-slider li .news-content .content {color:Black /*#373737*/;text-decoration: none;line-height: 16px;padding-top: 8px;} /***********************************/ .base_middle .middle_5{padding-top: 10px;} .base_middle .middle_5 .news {padding: 10px 0 5px 0;border-bottom: 1px dotted #7F7F7F;} .base_middle .middle_5 .news h2 {font-size: 16px;color: #1b3c72;padding-bottom: 7px;text-decoration: none;} .base_middle .middle_5 .news img {float: left;border: 1px solid #A7A7A7;margin-right: 8px;} .base_middle .middle_5 .news p {line-height: 18px;text-decoration: none;color: #4C4C4C;} .base_middle .middle_5 .news a {text-decoration: none;} .base_middle .middle_5 .news a:hover {text-decoration:none;} .base_middle .middle_5 .news h2:hover {text-decoration:none;} .base_middle .middle_5 .news p:hover {text-decoration:none;} .base_middle .middle_5 .news .news-comment {background-image: url(../img/news/ok-pembe.gif);background-repeat: no-repeat;background-position: 0px 6px;display: block;padding-left: 25px;padding-top: 3px;padding-bottom: 3px;color: #eb1a55;text-decoration: none;margin-top: 5px;width: 80px;} .base_middle .middle_5 .news .news-comment:hover {text-decoration:none;} .base_middle .middle_5_1 {float: left;width: 307px;padding-right: 13px;} .base_middle .middle_5_1_1 .news p {color:Black;} .base_middle .middle_5_2_1 .news p {color:Black;} .base_middle .middle_5_1_2 ul {float: left;width: 148px;margin-right: 10px;} .base_middle .mr {margin-right: 0px;} .base_middle .middle_5_1_2 li {border-bottom-width: 1px;border-bottom-style: dotted;border-bottom-color: #7F7F7F;display: block;background-image: url(../img/news/ok-mavi.gif);background-repeat: no-repeat;background-position: 5px 8px;padding-top: 5px;padding-bottom: 5px;padding-left: 25px;} .base_middle .middle_5_1_2 li a {color:Black /*#454545*/;text-decoration: none;} .base_middle .middle_5_1_2 li a:hover {text-decoration:none;} .base_middle .middle_5_1_3 {padding-top: 15px;} .base_middle .middle_5_1_3 ul {background-color: #F4F4F4;padding: 10px;float: left;width: 127px;margin-right: 10px;height: 50px;} .base_middle .middle_5_1_3 ul li {background-image: url(../img/ok.gif);background-repeat: no-repeat;padding-top: 4px;padding-bottom: 4px;padding-left: 20px;background-position: 0px 8px;} .base_middle .middle_5_1_3 ul li a {color: #454545;text-decoration: none;} .base_middle .middle_5_1_3 ul li a:hover {text-decoration:none;} /*******************/ .base_middle .middle_5_2 {float: left;width: 300px;padding-right: 18px;padding-left: 18px; /* border-right: 1px solid #CFCFCF;border-left: 1px solid #CFCFCF; */} .base_middle .middle_5_2_2 ul {margin-top: 10px;height: 180px; } .base_middle .middle_5_2_2 ul .first-news {margin-right: 10px;} .base_middle .middle_5_2_2 li {float: left;height: 132px;width: 145px;} .base_middle .middle_5_2_2 ul h2 {font-size: 14px;color: #FFF;background-color: #3E7BE0;padding: 5px 10px;line-height: 16px;height: 33px;} .base_middle .middle_5_2_2 ul a {text-decoration: none;} /*******************************/ .base_middle .middle_5_3 {float: right;width: 306px;} .base_middle .middle_5_3_1 ul {background-color: #F4F4F4;border-bottom-width: 1px;border-bottom-style: dotted;border-bottom-color: #7F7F7F;padding: 0 0 10px 0;} .base_middle .middle_5_3_1 li {padding: 5px 15px;clear: both;} .base_middle .middle_5_3_1 ul .title {background-color: #5F759A;padding: 5px 10px;font-size: 14px;color: #FFF;margin: 0 0 5px 0;} .base_middle .middle_5_3_1 ul .title a {color: #FFF; text-decoration: none;} .base_middle .middle_5_3_1 ul .content { } .base_middle .middle_5_3_1 ul .content-form .textbox {background-color: #FFF;border: 1px solid #BFBFBF;padding: 5px;width: 170px;height: 21px;font-size: 13px;line-height: 21px;float: left;margin-right: 8px;color: #B0B0B0;text-align: center;} .base_middle .middle_5_3_2 {margin-top: 10px;} .base_middle .middle_5_3_2 ul {background-color: #F4F4F4;} .base_middle .middle_5_3_2 ul .title {font-size: 14px;line-height: 14px;color: #FFF;background-color: #5F759A;padding: 8px 10px;border: 0;} .base_middle .middle_5_3_2 .pic { display: block; clear: both; background-color: #f4f4f4; width: 305px; text-align: center; height: 165px; padding: 15px 0 0 0; border-bottom: 1px dotted #7a7a7a; } .base_middle .middle_5_3_2 ul li {border-bottom-width: 1px;border-bottom-style: dotted;border-bottom-color: #b7b7b7;padding: 10px;} .base_middle .middle_5_3_2 ul li img {float: left;margin-right: 5px;} .base_middle .middle_5_3_2 ul li a {text-decoration: none;} .base_middle .middle_5_3_2 ul li .content-title {color: #1B3C72;font-size: 13px;line-height: 16px;padding-top: 10px;} .base_middle .middle_5_3_2 ul li .content-author {font-size: 12px;line-height: 13px;color: #7A7A7A;} .base_middle .middle_5_3_2 ul li .cizgi-sol {float: left;width: 143px;padding-right: 10px;} .base_middle .middle_5_3_2 ul li .cizgi-sag {float: right;width: 130px;} /*------------------starts encok yorumlar sayfasi------------------*/ .encoklar_sol { float:left; width: 668px; margin: 0 0 10px 0; font-family:font-family: Arial, Verdana, Helvetica, sans-serif; font-size:12px; line-height:1.7em; } .encoklar_sol .encoklar_content { color: #000000; border: 1px solid #a8aaaa; padding: 15px; } .encoklar_sol .encoklar_content a:link, .encoklar_sol .encoklar_content a:visited { text-decoration: none; font-family: Georgia, "Times New Roman", Times, serif; font-size: 13px; color: #000000; line-height: 26px; } .encoklar_sol .encoklar_content a:hover, .encoklar_sol .encoklar_content a:active { text-decoration:none; color:; color: #03699a; } .encoklar_sol .encoklar_content a:link span, .encoklar_sol .encoklar_content a:visited span { color:#03699a; font-size:16px; font-weight: bold; float: left; width: 30px; } .encoklar_sol .encoklar_content a:link em, .encoklar_sol .encoklar_content a:visited em { font-family: Georgia, "Times New Roman", Times, serif; font-size: 13px; line-height: 30px; color: #006aa2; } .encoklar_sol .encoklar_content .line1 { color: #000000; padding: 0 0 6px 0; border-bottom: 1px solid #d3d3d3; margin-bottom: 4px; } .encoklar_sol .encoklar_content .line1 a:link, .encoklar_sol .encoklar_content .line1 a:visited { font:normal 22px/27px Georgia, "Times New Roman", Times, serif; } .encoklar_sol .encoklar_content .line1 a:link span, .encoklar_sol .encoklar_content .line1 a:visited span { font-family: Georgia, "Times New Roman", Times, serif; font-size: 40px; line-height: 30px; } .encoklar_sol .encoklar_content .line1 a:link em, .encoklar_sol .encoklar_content .line1 a:visited em { font-family: Georgia, "Times New Roman", Times, serif; font-size: 17px; line-height: 30px; color: #006aa2; } .encoklar_sol .encoklar_content .line2 a:link em, .encoklar_sol .encoklar_content .line2 a:visited em { font-family: Georgia, "Times New Roman", Times, serif; font-size: 15px; line-height: 30px; color: #006aa2; } .encoklar_sol .encoklar_content .line3 a:link em, .encoklar_sol .encoklar_content .line3 a:visited em { font-family: Georgia, "Times New Roman", Times, serif; font-size: 14px; line-height: 30px; color: #006aa2; } .encoklar_sol .encoklar_content .line2 { color: #000000; padding: 0 0 6px 0; border-bottom: 1px solid #d3d3d3; margin-bottom: 4px; } .encoklar_sol .encoklar_content .line2 a:link, .encoklar_sol .encoklar_content .line2 a:visited { font:normal 20px/27px Georgia, "Times New Roman", Times, serif; } .encoklar_sol .encoklar_content .line2 a:link span, .encoklar_sol .encoklar_content .line2 a:visited span { font-family: Georgia, "Times New Roman", Times, serif; font-size: 30px; line-height: 30px; } .encoklar_sol .encoklar_content .line3 { color: #000000; padding: 0 0 6px 0; border-bottom: 1px solid #d3d3d3; margin-bottom: 4px; } .encoklar_sol .encoklar_content .line3 a:link, .encoklar_sol .encoklar_content .line3 a:visited { font:normal 17px/27px Georgia, "Times New Roman", Times, serif; } .encoklar_sol .encoklar_content .line3 a:link span, .encoklar_sol .encoklar_content .line3 a:visited span { font-family: Georgia, "Times New Roman", Times, serif; font-size: 20px; line-height: 30px; } .encoklar_sol .tabs { color: #000000; position: relative; bottom: -1px; height:33px; } .encoklar_sol .tabs a:link, .encoklar_sol .tabs a:visited { text-decoration: none; background:white url(../img/encoktab1_bg.jpg) repeat-x left bottom; float:left; height:26px; width:158px; text-align:center; font-family: Georgia, "Times New Roman", Times, serif; font-size: 12px; font-weight: bold; color: #535151; margin-right: 2px; padding-top:7px; color:#535151; } .encoklar_sol .tabs a:hover, .encoklar_sol .tabs a:active { text-decoration: none; color:white; text-decoration:none; background-image: url(../img/encoktab2_bg.jpg); } .encoklar_sol .tabs a:link.selected, .encoklar_sol .tabs a:visited.selected { height:25px; border: 1px solid #a8aaaa; border-bottom:none; background:white; padding-top:7px; width: 175px; color: #006aa2; } .encoklar_sol .tabs a:hover.selected, .encoklar_sol .tabs a:active.selected { background:white; color: #006aa2; } /*------------------ends encok yorumlar sayfasi------------------*/ /*------------------starts tum okur yorumlari sayfasi------------------*/ .okuryorumlari_cont { float:left; width: 668px; margin: 0 0 10px 0; font-family:Georgia, "Times New Roman", Times, serif; font-size:12px; line-height:20px; } .okuryorumlari_cont p { font-family:Georgia, "Times New Roman", Times, serif; } .okuryorumlari_cont h1 { font-family: Georgia, "Times New Roman", Times, serif; font-size: 12px; font-weight: bold; color: #3e3c3e; } .okur_kunyecont { margin: 10px 0 15px 0; background: #e6eff5; height: 107px; } .okur_kunyecont h2 { background-color: #bbd4e4; display: block; padding: 3px 10px; font: bold 14px Georgia, "Times New Roman", Times, serif; } .okuryorum_info { font:normal 12px Arial, Verdana, Helvetica, sans-serif; } .okuryorumlar_info1 { float: left; width: 300px; margin: 0 0 2px 0; } .okuryorum_info2 { float: left; width:180px; font:bold 12px Arial, Verdana, Helvetica, sans-serif; } .okuryorum_info3 { float: left; width:105px; font:bold 12px Arial, Verdana, Helvetica, sans-serif; } .okuryorum_senmicolumn { float: left; width:10px; } .kunye1 { float:left; width:300px; padding: 10px 0 0 10px; } .kunye2 { float:right; width:290px; padding: 10px 20px 0 20px; display: inline; } .okuryorumbox { clear: both; margin: 0 0 5px 0; padding: 10px 0 0 0; } .okuryorumbox_left { font:bold 11px Arial, Verdana, Helvetica, sans-serif; color:#489ab7; width:90px; float: left; text-align: right; } .okuryorumbox_left span a:link, .okuryorumbox_left span a:visited { text-decoration: none; font:bold 11px/19px Arial, Verdana, Helvetica, sans-serif; color:#489ab7; } .okuryorumbox_left p { font:normal 12px/19px Arial, Verdana, Helvetica, sans-serif; color:#292929; } .okuryorumbox_right { float: right; width: 555px; font:normal 13px/19px Arial, Verdana, Helvetica, sans-serif; color:#292929; } .okuryorumbox_right h3 a.tumyorum_baslik2 { text-decoration: none; font:bold 14px/17px Georgia, "Times New Roman", Times, serif; color: #01689d; } .okuryorumbox_right h3 tumyorum_baslik2 a:hover {text-decoration: none;} .okuryorumbox_right p { font:normal 13px/19px Arial, Verdana, Helvetica, sans-ser; color:#292929; } .commentbox { text-align: right; font:normal 12px Arial, Verdana, Helvetica, sans-serif; color:#474747; background:url(../../i/1/v2/yorumbgcolor.jpg) right top no-repeat; padding: 6px 7px 7px 0; clear: both; } .commentbox p { color:#990000; font:bold 10px/11px Arial, Verdana, Helvetica, sans-serif; margin: 4px 0 0 0; } .commentbox strong { font:normal 12px Arial, Verdana, Helvetica, sans-serif; color:#3073a4; } .commentbox strong a:link, .commentbox strong a:visited { font:bold 12px Arial, Verdana, Helvetica, sans-serif; color:#06bd00; padding:3px 0 3px 20px; background:url(../../i/1/v2/goodcomment2.jpg) left center no-repeat; margin:0 10px 0 7px } .commentbox em a:link, .commentbox em a:visited { font:normal bold 12px Arial, Verdana, Helvetica, sans-serif; color:#737373; padding:3px 0 3px 20px; background:url(../../i/1/v2/badcomment2.jpg) left center no-repeat; } /*------------------ends tum okur yorumlari sayfasi------------------*/ /*------------------start yorum yaz / iletižim sayfasi------------------*/ .mavibuton { COLOR: #00689B; background-color: #B0C6DB; BORDER-BOTTOM: #B0C6DB 1px solid; BORDER-LEFT: #B0C6DB 1px solid; BORDER-RIGHT: #B0C6DB 1px solid; BORDER-TOP: #B0C6DB 1px solid; FONT-FAMILY: Arial,Verdana, Helvetica, sans-serif; FONT-SIZE: 8pt; FONT-WEIGHT: bold; TEXT-DECORATION: none; cursor:hand; } .kirmizibuton { COLOR: #ffffff; background-color: #CF0900; BORDER-BOTTOM: #CF0900 1px solid; BORDER-LEFT: #CF0900 1px solid; BORDER-RIGHT: #CF0900 1px solid; BORDER-TOP: #CF0900 1px solid; FONT-FAMILY: Arial,Verdana, Helvetica, sans-serif; FONT-SIZE: 8pt; FONT-WEIGHT: bold; TEXT-DECORATION: none; cursor:hand; } /*------------------ends tum okur yorumlari sayfasi------------------*/ /*--------start SSS Bolumu--------*/ .sss_cont { margin: 15px 0 15px 0; clear: both; background:url(../img/sss_bg.jpg) right top repeat-y; padding: 0 0 1px 0; } .sss_leftside { float:left; width: 625px; margin: 0 0 10px 0; font-family:Georgia, "Times New Roman", Times, serif; font-size:12px; line-height:20px; } .sss_leftside p { font-family:Georgia, "Times New Roman", Times, serif; } .sss_rightside { float: right; width: 300px; padding: 10px 10px; font-family:Arial, Verdana, Helvetica, sans-serif; margin: 0; } .sssbanner300x250 { width: 300px; margin-top: 15px; } .sss_topcont1 { font:normal 12px Arial, Verdana, Helvetica, sans-serif; } .sss_topcont1 h1 { font:bold 18px Arial, Verdana, Helvetica, sans-serif; color: #01689d; } .sss_tablotop { padding: 5px 5px; background:#ececec; font: bold 11px Arial, Verdana, Helvetica, sans-serif; margin: 0 0 10px 0; } .sss_tablotop span { color:#01689d } .sss_leftside h3 { font-family: Georgia, "Times New Roman", Times, serif; font-size: 18px; color: #01689D; font-weight: normal; } .sss_wrapper { padding: 10px 5px; margin: 5px; border-bottom:1px solid #dbdbdb; clear:both; } .sss_wrapperson { padding: 10px 5px; margin: 5px; border-bottom:none; clear:both; } .sss_leftside a:link, .sss_leftside a:visited { color: #01689D; text-decoration:underline; } .sss_bizesor { font: bold 12px Georgia, "Times New Roman", Times, serif, sans-serif; color:#01689d; margin:15px 0; } .tarih_yazardetay { color: #4B4B4B; font:bold 11px Arial, Verdana, Helvetica, sans-serif; padding:0; } .othersites { background: #e9ecee url(../img/zz.jpg) left top no-repeat; width:285px; padding: 9px 5px 0 12px; height: 31px; } .othersites ul { float:left; } .othersites li { float:left; font:bold 12px/20px Georgia, "Times New Roman", Times, serif; color:#2f2f2f; } .othersites li a:link, .othersites li a:visited { float: left; font:bold 12px/25px Georgia, "Times New Roman", Times, serif; color:#2f2f2f; padding:0 6px; border-right:1px solid #cecece } .othersites li a:link.son, .othersites li a:visited.son { border-right:none; } /*--------end SSS Bolumu--------*/ /*--------start Arama Sonuc--------*/ .arsonuc_leftside { float:left; width: 730px; margin: 0 0 10px 0; font-family:Georgia, "Times New Roman", Times, serif; font-size:12px; line-height:20px; } .arsonuc_leftside p { font-family:Arial, Verdana, Helvetica, sans-serif; } .arsonuc_rightside { float: right; width: 218px; padding: 10px 10px; font-family:Arial, Verdana, Helvetica, sans-serif; margin: 0; } h4.arsonuc { font: bold 18px Arial, Helvetica, sans-serif; color: #01689d; margin: 0 0 10px 0; } h5.arsonuc { font: bold 14px Arial, Helvetica, sans-serif; color: #01689d; margin: 0 0 3px 0; } p.arsonuc_katbaslik { margin: 10px 0 3px 0; } span.aramaselected { color:#01689d; font-weight:bold; } .arsonuc_katbox { border:1px solid #d2e1e8; margin: 10px 0; } .arsonuc_katbox a:link, .arsonuc_katbox a:visited { text-decoration:none; color:#01689d; font:bold 12px/19px Arial, Verdana, Helvetica, sans-serif } .arsonuc_katbox span.arasonuc_sil a:link, .arsonuc_katbox span.arasonuc_sil a:visited { color:#ff0000; font-family:Arial, Verdana, Helvetica, sans-serif; font-size:11px; font-weight:bold; padding:0 0 0 20px; background:url(../../i/1/v2/arsonuc_silbg.gif) 10px 4px no-repeat; } .arsonuc_katline1 { background:#e9f0f6; padding: 3px 5px; } .arsonuc_katline2 { background: #f1f5f9; padding: 3px 5px; } .arsonuc_kelime { border: 1px solid #b9c2cf; height:21px; font:bold 12px Arial, Verdana, Helvetica, sans-serif; color:#454444; width: 215px; padding: 3px 0 0 5px; background: #fefefe url(../../i/1/v2/arsiv_input1bg.jpg) left top repeat-x; } .arsonuc_bolum { font:bold 12px Arial, Verdana, Helvetica, sans-serif; color:#d20000; background: #f0f4f9; padding: 3px 2px; } .arsonuc_katline { margin: 5px 0; padding: 0 10px 0 10px; } .arsonuc_katline3 { margin: 12px 0 10px 0; padding: 0 5px 0 10px; background:white; } .arsonuc_checkboxtext { padding: 2px 0 0 10px; margin: 0 0 0 12px; } .arsonuc_katbox3 { padding:5px; } .arsonuc_katbox4 { background:white; padding:5px; margin: 7px 0; } .arsonuc_combobox1 { width:110px; border:1px solid #a8c3db; background:#fefefe; padding:2px; color:#666666; margin:0 0 0 5px; font:normal 12px Arial, Helvetica, sans-serif; height: 23px; } .arsonuc_combobox2 { width:180px; border:1px solid #a8c3db; background:#fefefe; padding:2px; color:#666666; margin:0 0 0 0px; font:normal 12px Arial, Helvetica, sans-serif; height: 23px; } .arsonuc_tarihara { width:80px; border:1px solid #b9c2cf; background:#fefefe url(../../i/1/v2/arsiv_input1bg.jpg) left top repeat-x; padding:4px; color:#666666; font:normal 12px Arial, Helvetica, sans-serif; height: 15px; margin: 10px 7px 0 0; text-align: center; } .arsonuc_filtrebtn { width:140px; margin:0px 0 0 40px } .arsonuc_topsag { font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; color:#4a4a4a; float:right;} .arsonuc_topsag span { font-weight:bold; color:#4a4a4a; } .arsonuc_box { border: 1px solid #dbdbdb; padding: 0 10px; font-family: Arial, Helvetica, sans-serif; } .arsonuc_tablocont { border:1px solid #dbdbdb; margin: 15px 0 0 0; } .arsonuc_tablotop { padding: 5px 5px; background:#f2f2f2; } .arsonuc_tablosiralama { float:left; width:90px; font: bold 12px Arial, Verdana, sans-serif; color: #4a4a4a; padding: 0px 0 0 0; margin: 0 10px 0 0; } .arsonuc_tablokatogori ul { margin: 2px 0 0 0; } .arsonuc_tablokatogori li { float: left; font:bold 11px Arial, Verdana, Helvetica, sans-serif; } .arsonuc_tablokatogori li a:link, .arsonuc_tablokatogori li a:visited { text-decoration:none; font:normal 11px Arial, Verdana, Helvetica, sans-serif; background:url(../../i/1/v2/arsonuc_arrow1.gif) right 3px no-repeat; padding:0 15px 0 6px; margin: 0 2px; color: #000000; text-decoration:none; font-family:Georgia, "Times New Roman", Times, serif; } .arsonuc_tablokatogori li a:hover, .arsonuc_tablokatogori li a:active { background:url(../../i/1/v2/arsonuc_arrow2.gif) right 3px no-repeat; text-decoration:none; color: #01689d; } .arsonuc_tablokatogori li.selected, .arsonuc_tablokatogori li.selected { background:url(../../i/1/v2/arsonuc_arrow2.gif) right 3px no-repeat; text-decoration:none; color: #01689d; padding:0 15px 0 6px; margin: 0 2px; } .arsonuc_tablotopleft { float: left; width:500px; } .arsonuc_tablotopright { float:right; width:200px; } .arsonuc_sayilar ul { margin: 2px 0 0 0; } .arsonuc_sayilar li { float: left; font:bold 11px Arial, Verdana, Helvetica, sans-serif; border-right:1px solid #4a4a4a; } .arsonuc_sayilar li a:link, .arsonuc_sayilar li a:visited { text-decoration:none; font:bold 11px Arial, Verdana, Helvetica, sans-serif; padding:0 5px; } .arsonuc_sayilar li a:hover, .arsonuc_sayilari li a:active { text-decoration:none; color: #01689d; } .arsonuc_sayilar li.selected, .arsonuc_sayilar li.selected { text-decoration:none; color: #01689d; padding:0 5px; } .arsonuc_sayilar li.last, .arsonuc_sayilar li.last { border-right:none; } .arsonuc_wrapper { padding: 5px; margin: 5px; border-bottom:1px solid #dbdbdb; clear:both; } .arsonuc_wrapperson { padding: 5px; margin: 5px; border-bottom:none; clear:both; } .arsonuc_sonuccont {padding:1px;} .arsonuc_sonuccont img { float: left; margin:0 8px 0 0; } .arsonuc_maintext { font-family: Georgia, "Times New Roman", Times, serif; font-size: 12px; font-weight: normal; color: #000000; } .arsonuc_yazar { font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-style: italic; font-weight: normal; color: #000000; } .arsonuc_sonuccont h3 { font-family: Georgia, "Times New Roman", Times, serif; font-size: 18px; font-style: normal; font-weight: normal; color: #01689D; } .arsonuc_sonuccont h3 a:link { text-decoration:none; font-family: Georgia, "Times New Roman", Times, serif; font-size: 18px; font-style: normal; font-weight: normal; color: #01689D; } .arsonuc_sonuccont h3 a:link span.selected, .arsonuc_sonuccont h3 a:visited span.selected { text-decoration:none; font-family: Georgia, "Times New Roman", Times, serif; font-size: 18px; font-style: normal; font-weight: normal; line-height:26px; color: #01689D; background: #fffabf; } .arsonuc_sonuccont h3 a:hover span.selected, .arsonuc_sonuccont h3 a:active span.selected { text-decoration: underline; } .arsonuc_sonuccont a:link, .arsonuc_sonuccont a:visited { text-decoration:none; font:bold 12px Arial, Helvetica, sans-serif; color:#01689d; } span.arsonuc_habkat a:link, span.arsonuc_habkat a:visited { text-decoration:none; font:bold 12px Arial, Helvetica, sans-serif; color:#01689d; } span.arsonuc_habkat a:hover, span.arsonuc_habkat a:active { text-decoration:underline; } .arsonuc_sonuccont a:link span.arsonuc_maintextselected, .arsonuc_sonuccont a:visited span.arsonuc_maintextselected { text-decoration:none; color: #000000; text-decoration:none; font-family:Georgia, "Times New Roman", Times, serif; background: #fffabf; } .arsonuc_sonuccont a:hover span.arsonuc_maintextselected, .arsonuc_sonuccont a:active span.arsonuc_maintextselected { text-decoration:underline; } .arsonuc_sonuccont .arsonuc_habtarih { font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-weight: bold; color: #1f1f1f; } /*--------end Arama Sonuc--------*/ /*--------start Mobil--------*/ .mobil {background:url(../img/Mobil/mobilBack.jpg?v=2) no-repeat; width:481px; height:736px; margin-top:2px; font-family:Arial, Helvetica, sans-serif; padding:78px 30px 0 469px; margin-bottom:1px; position:relative;} .mobil strong {display:block; color:#033048; font-size:18px;} .mobil span {display:block; font-size:12px; color:#045482; font-weight:bold; margin-bottom:16px; line-height:16px;} .mobil span.last {margin-bottom:10px;} .mobil .foot a {float:right; font-family:Arial, Helvetica, sans-serif !important; font-size:14px; font-weight:bold; color:#389ad1 !important; background:url(../img/Mobil/zarf.gif) no-repeat; padding-left:32px; line-height:17px;} .mobil .btndemo { position:absolute; left:20px; top:10px; width:144px; height:53px;} .mobil .btndemo a { background:none;} .mobil a { color:#033048; background:none; font-family:Arial, Helvetica, sans-serif;} .mobil .logo { position:absolute; left:20px; top:100px; width:350px; height:386px;} .mobil .logo2 { position:absolute; left:445px; top:16px; width:159px; height:60px;} .itunes {width:980px; height:74px; background:url(../img/Mobil/store_bg.jpg) repeat-x;} .itunes .left { width:220px; text-align:center; float:left; padding:10px 0 0 24px;} .itunes .right { width:700px; float:left; font-family:Arial; font-size:14px; color:#FFF; padding:15px 0 0 0; } .itunes .right a {font-family:Arial; font-size:14px; color:#FFF;} /*--------end Mobil--------*/ /*--------start Ipad--------*/ .ipad { background:url(../img/Ipad/radikalIpadyeni_bg.jpg) no-repeat; width:481px; height:806px; margin-top:2px; font-family:Arial, Helvetica, sans-serif; padding:18px 30px 0 469px; margin-bottom:1px; position:relative;} .ipad strong {display:block; color:#033048; font-size:18px;} .ipad span {display:block; font-size:12px; font-family:Arial; color:#000; font-weight:bold; margin-bottom:16px; line-height:16px;} .ipad span.last {margin-bottom:10px;} .ipad .foot a {float:right; font-family:Arial, Helvetica, sans-serif !important; font-size:14px; font-weight:bold; color:#000 !important; background:url(../img/Mobil/zarf.gif) no-repeat; padding-left:32px; line-height:17px;} .ipad .btndemo { position:absolute; left:20px; top:10px; width:144px; height:53px;} .ipad .btndemo a { background:none;} .ipad a { color:#033048; background:none; font-family:Arial, Helvetica, sans-serif;} .ipad .logo { position:absolute; left:40px; top:213px;} .ipad .logo2 { position:absolute; left:445px; top:16px; width:159px; height:60px;} /*--------end Mobil--------*/ /*------------ RSS sayfasi*/ .rss_cont { border: 5px solid #efefef; width: 440px; } .rss_title { float: left; font: bold 11px Arial, Helvetica, sans-serif; } .rss_title a:link, .rss_title a:visited { font: bold 11px Arial, Helvetica, sans-serif; color:#1f1f1f; text-decoration:none; } .rss_title a:hover, .rss_title a:active { text-decoration:underline; color: #01689d; } .rss_feed { float: right; } .rss_odd { background: white; height:20px; padding:8px 5px 4px 5px; } .rss_even { background: #efefef; height:20px; padding:8px 5px 4px 5px; } ul.rssboxlist { list-style:none; margin: 10px 0 0 0; } ul.rssboxlist li { font-family:Georgia, "Times New Roman", Times, serif; font-size:12px; color:#1f1f1f; text-decoration:none; color: #000000; line-height:19px; margin: 5px 0; } ul.rssboxlist li a:link, ul.rssboxlist li a:visited { padding-left:14px; font: normal 12px Arial, Helvetica, sans-serif; color:#1f1f1f; text-decoration:none; background:url(../img/rsslisticon.gif) left 4px no-repeat; color: #000000; line-height:17px; text-decoration:none; display:block; } ul.rssboxlist li a:hover, ul.rssboxlist li a:active { text-decoration:underline; color: #e38542; } a.windows:link, a.windows:visited, a.mac:link, a.mac:visited, a.linux:link, a.linux:visited, a.habregboxlink:link, a.habregboxlink:visited { font:bold 12px/16px Arial, Helvetica, sans-serif; text-decoration:none; color:#1f1f1f } a.windows:hover, a.windows:active, a.mac:hover, a.mac:active, a.linux:hover, a.linux:active, a.habregboxlink:hover, a.habregboxlink:active { text-decoration:underline; } a.windows:link, a.windows:visited { padding:5px 0 20px 25px; background:url(../img/windowslogo.gif) left 4px no-repeat; } a.mac:link, a.mac:visited { padding:5px 0 20px 25px; background:url(../img/maclogo.gif) left 4px no-repeat; } a.linux:link, a.linux:visited { padding:5px 0 20px 25px; background:url(../img/linuxlogo.gif) left 4px no-repeat; } .renk1 { color:#de6100; } .rss_tasbaski { margin: 10px 0; width: 450px; float: left; } .habdetay_regbox { float:right; border: 1px solid #f1f1f1; width:176px; padding: 7px 7px; margin: 0 0 10px 0; font: 12px/16px Arial, Verdana, Helvetica, sans-serif; color:#1f1f1f } .habdetay_regbox p { font: 12px/16px Arial, Verdana, Helvetica, sans-serif; color:#1f1f1f; margin: 0 0 8px 0; } .yazarlar_cont { float: right; width:300px; margin:0px 0 10px 0; } .yazarlar_top { background:#b3c2d0; height:22px; padding:6px 0 0 20px; } a.yazarcontitle:link, a.yazarcontitle:visited { font-size:12px; font-weight:bold; text-decoration:none; color: #1f1f1f; } a.yazarcontitle:hover, a.yazarcontitle:active { text-decoration:underline } .yazar_odd { padding: 6px 0; background:#efefef; height: 55px; } .yazar_even { padding: 6px 0; background:#e6e6e6; height: 55px; } .yazar_guest { padding:6px 0; background:#ebe1d7; height: 55px; } p.guestname { font:normal 11px Arial, Verdana, Helvetica, sans-serif; color:#a67237; } .yazar_img { margin: 0 10px 0 20px; float: left; height: 50px; display: inline; } .yazar_cont { float: left; width:220px; } a.yazi_baslik:link, a.yazi_baslik:visited { font-size:12px; color:#1f1f1f; text-decoration:none; } a.yazi_baslik:hover, a.yazi_baslik:active { text-decoration:underline; } a.yazar_isim:link, a.yazar_isim:visited { font-size:12px; color:#1f1f1f; text-decoration:none; font-weight:bold; } a.yazar_isim:hover, a.yazar_isim:active { text-decoration:underline; } .yazar_cont { width: 220px; float: left; height: 50px; text-align: left; float:left; } .yazar_cont2 { width: 220px; float: left; text-align: left; float:left; } .valignbox1 { display: table; height: 50px; #position: relative; overflow: hidden; width: 219px; text-align: left; } .valignbox2 { #position: absolute; #top: 50%; display: table-cell; vertical-align: middle; } .logo { #position: relative; #top: -50%; } .yazarlar_tumu { background:#c4c4c4; text-align:right; padding: 3px 15px; } .rss_cont .yazarlar_rss { font-family: Arial, Verdana, Helvetica, sans-serif; color: #000000; background-color: #efefef; padding: 0 0 1px 0; } .rss_cont .yazarlar_rss .yazarlarsol_rss { width: 217px; float: left; } .rss_cont .yazarlar_rss .yazarlarsag_rss { float: right; width: 217px; } .rss_cont .yazarlar_rss p { font-size:1px; height:1px; } .rss_cont .yazarlar_rss .rss_odd { margin-bottom:2px } .rss_cont .yazarlar_rss .rss_even { margin-bottom:2px } /*------------ end RSS sayfasi*/ /*--------Arsiv sayfasi--------*/ .arsiv_cont { margin: 15px 0 15px 0; clear: both; background:url(../../i/1/v2/arsiv_bg.gif) right top repeat-y; padding: 0 0 1px 0; } .forumtumu { margin: 15px 0 15px 0; clear: both; padding: 0 0 1px 0; } .arsiv_leftside { float:left; width: 730px; margin: 0 0 10px 0; font-family:Georgia, "Times New Roman", Times, serif; font-size:12px; line-height:20px; } .arsiv_leftside p { font-family:Georgia, "Times New Roman", Times, serif; } .arsiv_rightside { float: right; width: 218px; padding: 0 10px; } h4.arsivtitle { font: bold 18px Arial, Helvetica, sans-serif; color: #01689d; } h4.arsivtitle2 { font: bold 18px Arial, Helvetica, sans-serif; color: #01689d; margin: 0 0 0 10px; } ul.arsivbtn { } ul.arsivbtn li { display:block; width:100%; margin: 5px 0px; } ul.arsivbtn li a:link, ul.arsivbtn li a:visited { border: 1px solid #a8c3db; font:bold 13px Arial, Helvetica, sans-serif; padding:2px 4px 3px 4px; background:gray url(../../i/1/v2/arsiv_btnbg.jpg) repeat-x; display:block; color:white; text-align:center } ul.arsivbtn li a:hover, ul.arsivbtn li a:active { text-decoration:none; background:gray url(../../i/1/v2/uyelikbtn_bg2.jpg) repeat-x; } /*----------arsiv table--------------*/ .arsiv_table { margin: 10px 0; } .arsiv_table td { border: 1px solid #bfd7f9; text-align:center; vertical-align:middle; font: normal 11px Arial, Verdana, Helvetica, sans-serif; color:#000000 } .arsiv_table td span { font: normal 11px Arial, Verdana, Helvetica, sans-serif; text-align:center; vertical-align:middle; color: #666666; } .arsiv_table td a:link, .arsiv_table td a:visited { font: bold 10px Arial, Verdana, Helvetica, sans-serif; color:#000000; display:block; padding:5px; text-decoration:none; } .arsiv_table td a:hover, .arsiv_table td a:active { color: white; background:#FF6600; text-decoration:none; } .arsiv_table td.hafta { background: #f0f6fe } .arsiv_table td.haftabaslik { color: #4F93EE; font-size:10px; font-weight: bold; padding: 3px; } .arsiv_table td.mavi1_font8 { background:#ffecdb; } .arsiv_table td.activedate { background:#bfd7f9; } .arsiv_table table.arsivtable_yil td { background: #FF0000; font:bold 12px Arial, Verdana, Helvetica, sans-serif; color: #FFFFFF; } .arsiv_table table.arsivtable_yil td a { color: #FFFFFF; text-decoration:none;} .activedate a { color: black; } .arsiv_table td.mavi1_font8 a { color:#ff7800; font-weight:bold; text-decoration:none; } .arsiv_table td.mavi1_font8 a:hover { text-decoration:none; color: white; background:#FF6600; } .mavi2_font8 a { color:#25507E; font-size:8pt; font-weight:bold; text-decoration:none; } .mavi2_font8 a:hover { color: white; background:#FF6600; text-decoration:none; } .gri1_font9 { background:#bfd7f9; color:#000000; font-family:Arial, Verdana, Helvetica, sans-serif; font-size:9pt; font-weight:bold; height:20px; padding-left:2px; padding-right:2px; text-decoration:none; text-align: center; } /* ---------------- */ .arsiv_topform { padding: 10px 0 10px 10px; font-family: Arial, Helvetica, sans-serif; } .arsiv_formlabers { float: left; width: 180px; margin: 0 10px 0 0; } .arsiv_forminfo { float: left; width: 510px; } .arsiv_flt_lft { float: left; width:170px; } .arsiv_input1 { width:510px; border:1px solid #b9c2cf; background:#fefefe url(../../i/1/v2/arsiv_input1bg.jpg) left top repeat-x; padding:4px; color:#666666; font:normal 12px Arial, Helvetica, sans-serif; height: 15px; } .arsiv_midform { padding: 10px 0 10px 0; font-family: Arial, Helvetica, sans-serif; } .arsiv_midform2 { padding: 5px 0 5px 0; font-family: Arial, Helvetica, sans-serif; background: #f8f8f8; margin: 15px 0; } .arsiv_midformLine1 { margin: 0 0 10px 0; padding: 4px 0 3px 10px; background: #f0f4f9; } .arsiv_midformLine2 { margin: 0; padding: 4px 0 3px 10px; } .arsiv_midformLine3 { margin: 0 0 5px 0; padding: 4px 0 8px 10px; border-bottom: 1px solid #e1e1e1; } .arsiv_forminfo label { font: bold 14px Arial, Helvetica, sans-serif; color: #d20000; } .arsiv_forminfo2 label { font: bold 12px Arial, Helvetica, sans-serif; color:black; } .arsiv_forminfo3 label { font: normal 12px Arial, Helvetica, sans-serif; color:black; } .arsiv_box1 { float:left; width:170px; } .arsiv_input4 { width:80px; border:1px solid #b9c2cf; background:#fefefe url(../../i/1/v2/arsiv_input1bg.jpg) left top repeat-x; padding:4px; color:#666666; font:normal 12px Arial, Helvetica, sans-serif; height: 15px; margin: 0 7px 0 0; text-align: center; } .arsiv_input5 { width:150px; border:1px solid #b9c2cf; background:#fefefe url(../../i/1/v2/arsiv_input1bg.jpg) left top repeat-x; padding:4px; color:#666666; font:normal 12px Arial, Helvetica, sans-serif; height: 15px; margin: 0 7px 0 0; text-align: left; } .arsiv_arabtn { float: right; width:62px; padding-right:20px; } .arsiv_uyari { float: right; font: normal 10px/13px Arial, Verdana, Helvetica, sans-serif; width: 200px; } .arsivcombobox { width:150px; border:1px solid #a8c3db; background:#fefefe; padding:2px; color:#666666; margin:0; font:normal 12px Arial, Helvetica, sans-serif; height: 23px; } .pop_gazsayfa_content { padding: 10px 0 15px 10px; background:white; /*url(../../i/1/v2/popup_contentbg.jpg) repeat-x;*/ float: left; width: 1190px; position: relative; } .pop_gazsayfa_search { float: left; width: 400px; margin: 6px 0 0 0; text-align: right; } .habdetay_yazarisim { font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height:19px; font-weight: NORMAL; color: #01689d; margin: 8px 00; } .habdetay_yazarisim a:link, .habdetay_yazarisim a:visited { font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height:19px; font-weight: NORMAL; color: #01689d; margin: 8px 00; } .habdetay_yazarisim a:hover, .habdetay_yazarisim a:active { text-decoration:underline; } ul.habdetay_digerhaberler { list-style:none; margin: 10px 0 0 0; } ul.habdetay_digerhaberler li { font-family:Georgia, "Times New Roman", Times, serif; font-size:12px; color:#1f1f1f; text-decoration:none; color: #000000; line-height:19px; margin: 5px 0; } ul.habdetay_digerhaberler li a:link, ul.habdetay_digerhaberler li a:visited { padding-left:12px; font-family:Georgia, "Times New Roman", Times, serif; font-size:12px; color:#1f1f1f; text-decoration:none; background:url(../../i/1/v2/new1arrow.gif) left 6px no-repeat; color: #3073a4; ; line-height:19px; text-decoration:none; display:block; } ul.habdetay_digerhaberler li a:hover, ul.habdetay_digerhaberler li a:active { background:url(../../i/1/v2/newarrow_hover.gif) left 5px no-repeat; text-decoration:underline; } .arsiv_forminfo { float: left; width: 530px; } /*-------------arsiv arama-----------*/ .arc_1, .arc_2, .arc_3, .arc_4, .arc_5, .ekler_arc_1 { float: left; margin:0 0 0 6px; display: inline; } .arc_1 { font-family:Arial, Helvetica, sans-serif; font-weight: bold; font-size:12px; color:#5c727f; padding: 5px 5px 0 0; } .tumyazar_arch1 { float: left; margin:0 0 0 6px; display: inline; font-family:Arial, Helvetica, sans-serif; font-weight: bold; font-size:12px; color:white; padding: 5px 5px 0 0; } .ekler_arc_1 { font-family:Arial, Helvetica, sans-serif; font-weight: bold; font-size:12px; color:#FFFFFF; padding: 5px 5px 0 0; } .arsiv_input { height:20px; background:#f8f8f8; border:1px solid #a8c3db; font-size: 12px; color: #333333; padding: 5px 0 0 3px; font-weight: bold; text-align: center; width: 95px; } .ekler_arsiv_input { height:20px; background:#f8f8f8; border:1px solid #f30000; font-size: 12px; color: #333333; padding: 5px 0 0 3px; font-weight: bold; text-align: center; width: 95px; } /*-------------Sinem Detaylż Arama Sonuc V3-----------*/ .detayliaramasonuc_leftside { float:left; width: 730px; margin: 0 0 10px 0; font-size:12px; line-height:20px; } .detayliaramasonuc_flt_lft { float: left; width:370px; } .detayliaramasonuc_flt_lft h4 { font: bold 18px Arial, Helvetica, sans-serif; color: #01689d; margin: 0 0 0 10px; } .detayliaramasonuc_flt_rght { font-size: 12px; font-family: Arial, Verdana, Helvetica, sans-serif; color:#4a4a4a; float:right;} .detayliaramasonuc_tablo { border:1px solid #dbdbdb; margin: 15px 0 0 0; } .detayliaramasonuc_tablotop { padding: 5px 5px; background:#f2f2f2; } .detayliaramasonuc_tabloleft { float: left; width:500px; } .detayliaramasonuc_tabloright { float:right; width:200px; } .detayliaramasonuc_tablosiralama { float:left; width:90px; font: bold 12px Arial, Verdana, sans-serif; color: #4a4a4a; padding: 0px 0 0 0; margin: 0 10px 0 0; } .detayliaramasonuc_tablokatogori ul { margin: 2px 0 0 0; } .detayliaramasonuc_tablokatogori li { float: left; font:bold 11px Arial, Verdana, Helvetica, sans-serif; } .detayliaramasonuc_tablokatogori li a { text-decoration:none; font:normal 11px Arial, Verdana, Helvetica, sans-serif; background:url(../img/arsonuc_arrow1.gif) right 3px no-repeat; padding:0 15px 0 6px; margin: 0 2px; color: #000000;} .detayliaramasonuc_tablokatogori li a:hover { background:url(../img/arsonuc_arrow2.gif) right 3px no-repeat; text-decoration:none; color: #01689d; font:normal 11px Arial, Verdana, Helvetica, sans-serif; padding:0 15px 0 6px; margin: 0 2px;} .detayliaramasonuc_tablokatogori li.selected, .arsonuc_tablokatogori li.selected { background:url(../img/arsonuc_arrow2.gif) right 3px no-repeat; text-decoration:none; color: #01689d; padding:0 15px 0 6px; margin: 0 2px; } .detayliaramasonuc_wrapper { padding: 5px; margin: 5px; border-bottom:1px solid #dbdbdb; clear:both; } .detayliaramasonuc_sonuccont { padding:1px; } .detayliaramasonuc_sonuccont img { float: left; margin:0 8px 0 0; } .detayliaramasonuc_sonuccont h3 a:link { text-decoration:none; font-family: Georgia, "Times New Roman", Times, serif; font-size: 18px; font-style: normal; font-weight: normal; color: #01689D; } .detayliaramasonuc_sonuccont h3 a:link span.selected, .detayliaramasonuc_sonuccont h3 a:visited span.selected { font-family: Georgia, "Times New Roman", Times, serif; font-size: 18px; font-style: normal; font-weight: normal; line-height:26px; color: #01689D; background: #fffabf; } .detayliaramasonuc_sonuccont h3 a:hover span.selected, .detayliaramasonuc_sonuccont h3 a:active span.selected { text-decoration: underline; font-family: Georgia, "Times New Roman", Times, serif; font-size: 18px; font-style: normal; font-weight: normal; line-height:26px; color: #01689D; background: #fffabf;} .detayliaramasonuc_sonuccont p a:link { text-decoration:none; font:bold 12px Arial, Helvetica, sans-serif; color:#01689D;} .detayliaramasonuc_sonuccont span a:link, .detayliaramasonuc_sonuccont span a:visited { text-decoration:none; font:bold 12px Arial, Helvetica, sans-serif; color:#01689d; } .detayliaramasonuc_sonuccont span a:hover, .detayliaramasonuc_sonuccont span a:active { text-decoration:underline; text-decoration:none; font:bold 12px Arial, Helvetica, sans-serif; color:#01689d;} .detayliaramasonuc_sonuccont .detayliaramasonuc__habtarih { font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-weight: bold; color: #1f1f1f; } .detayliaramasonuc_maintext { font-family: Georgia, "Times New Roman", Times, serif; font-size: 12px; font-weight: normal; color: #000000; } .detayliaramasonuc_yazar { font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-style: italic; font-weight: normal; color: #000000; } .detayliaramasonuc_pagination { clear:both; margin:10px 0; } .detayliaramasonuc_pagination a:link , .detayliaramasonuc_pagination a:visited { text-decoration:none; font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold; color:#666666; padding: 0 4px 0 4px; border:1px solid #d7d7d7; } .mynews_paging2 { margin:10px 0; padding:1px 0 } .mynews_paging2 .page_right2 { float: right; width: 600px; text-align: right; } .mynews_paging2 .page_right2 ul li {list-style-position:inside; list-style-type: none; } .mynews_paging2 .page_right2 ul li a {text-decoration:none;} .mynews_paging2 .page_right2 ul li a:link.geri, .mynews_paging2 .page_right2 ul li a:visited.geri { width:80px; height:20px; text-decoration:none; float:left; padding: 2px 4px; border:1px solid #3073a4; color:black; float:left; background:white; margin:0 4px 0 0; font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold; } .mynews_paging2 .page_right2 ul li a:hover.geri, .mynews_paging2 .page_right2 ul li a:active.geri { color:white; background:#3073a4; border:1px solid #3073a4; text-decoration:none; } .mynews_paging2 .page_right2 ul li a:link, .mynews_paging2 .page_right2 ul li a:visited { text-decoration:none; float:left; padding: 2px 4px; color:black; float:left; background:white; margin:0 4px 0 0; font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold; } .mynews_paging2 .page_right2 ul li a.selected { color:white; background:#3073a4; } .mynews_paging2 .page_right2 ul li a:hover, .mynews_paging2 .page_right2 ul li a:active { color:white; background:#3073a4; text-decoration:none; } /* -----------Uye ozel sayfasi ----------*/ .uyeozelwrapper { padding:10px 0 0 0; color: #000000; clear: both; } /* { float: right; margin: 0; width: 460px; }*/ .puanim_cont { border:1px solid #c6c6c6; margin: 0 0 10px 0; width: 460px; float: right; } .puanim_cont .puanim_top { background-color: #c1d5e6; padding: 4px; font-family: Georgia, "Times New Roman", Times, serif; font-size: 12px; font-weight: bold; border-bottom: 1px solid #c6c6c6; } .puanim_cont .puanim_top span { font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; font-weight: bold; color: #666666; float: right; } .puanim_cont ul { margin:5px;} .puanim_cont li { font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-weight: bold; color: #666666; padding: 2px 5px 0 5px; background-color: #ebebeb; margin: 0 0 2px 0; clear: both; height: 21px; } .puanim_cont li.haftatoplam { color: #046899; background-color: #afcadd; } .puanim_cont li.haftatoplam2 { color: #046899; background-color: #cfdfeb; } .puanim_cont label { width: 180px; float: left; margin: 0 20px 0 0; } .puanim_cont label span { float:right} .puanim_cont label em { float:left; font-style:normal} .puanim_cont strong { float:left; width:235px; text-align:center; color:#046899 } .puanim_cont li.toplam { color: white;; background-color: #cc0001; font-size:14px; } .puanim_cont li.toplam strong { color:white; font-size:14px;} .puanim_cont li.toplam label em { float:left; font-style:normal; font-size:14px} .duyuru_cont { border:1px solid #c6c6c6;} .duyuru_cont h4 { background-color:#b3c2cf; padding:3px 5px;} .duyuru_cont .duyuru { padding:5px;} .duyuru_cont .duyuru img { margin:0 5px 5px 0; float:left} .duyuru_cont .duyuru p { font-size:13px;} .duyuru_cont .duyuru p span { color:#e71d25; font-size:13px;} .duyuru_cont .duyuru p.kazan {color:#026996;margin: 8px 0 0 0;} .mycomments_cont { border:1px solid #afcadd; padding: 0 1px 0 0; margin: 10px 0; } .mycomments_cont li { padding:10px; font:bold 12px/16px Arial, Verdana, Helvetica, sans-serif; color: #666666; border-bottom: 1px solid #afcadd; } .mycomments_cont li a:link, .mycomments_cont li a:visited { text-decoration:underline; color:#00699b; font:normal 12px/16px Arial, Verdana, Helvetica, sans-serif;} .mycomments_cont li span { font:bold 11px Arial, Verdana, Helvetica, sans-serif; color:#4d96b7; margin:0 2px 0 0 } .mycomments_cont li strong { font:normal 12px Arial, Verdana, Helvetica, sans-serif; color:#666666; display:block; color:color: #666666; margin:2px 0 0 0} .mycomments_cont h3 { font-family: Georgia, "Times New Roman", Times, serif; font-size: 12px; font-weight: bold; background-color: #d5e2ee; padding: 3px 5px; margin: 0; } .mycomments_cont li h3 { background:none; font:normal 18px/21px Georgia, "Times New Roman", Times, serif; color:#00699b; padding:0; margin:0 0 2px 0 } .mycomments_cont li h3 a:link, .mycomments_cont li h3 a:visited { background:none; font:normal 18px Georgia, "Times New Roman", Times, serif; color:#00699b; text-decoration:none } .mycomments_cont li h3 a:hover, .mycomments_cont li h3 a:active{ text-decoration:underline; } .haberara_cont { background-color: #afcadd; padding: 10px 0 10px 10px; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-weight: bold; } .haberara_cont select { font-size: 13px; width: 265px; margin: 0 10px 0 15px; height: 19px; } .haberara_cont input { font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 13px; width: 466px; margin: 0 6px 0 0; } .haberara_cont input.sbmt { background:url(../../i/1/v2/arabtn.jpg) no-repeat; width:60px; height:23px; border:none; cursor:pointer; margin: 0; } .habersonuc { border:1px solid #afcadd; background:url(../img/haberarsonuc.jpg) repeat-y; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-weight: bold; color: #666666; padding: 6px 8px 4px 0; } .habersonuc span { text-align: center; float: left; width: 46px; margin: 0 7px 0 0; } .habersonuc em { float: left; margin: 0 9px 0 0; } .habersonuc em a:link, .habersonuc em a:visited { float: left; width: 60px; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-style: normal; font-weight: bold; color: #666666; background:url(../../i/1/v2/habersort.jpg) right center no-repeat; margin: 0 5px 0 0; } .habersonuc strong { float: right; } .habersonuclist { background:url(../img/haberarsonuc.jpg) repeat-y; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-weight: bold; color: #666666; padding: 10px 3px 10px 0; border-bottom: 1px solid #afcadd; } .habersonuclist span { text-align: center; float: left; width: 46px; margin: 0 7px 0 0; } .habersonuclist em { float: left; margin: 0 9px 0 0; font:normal bold 11px Arial, Verdana, Helvetica, sans-serif; color:#4d96b7; width: 65px; padding: 2px 0 0 0; } .habersonuclist .habersonuc_news { float:left; width: 840px; } .habersonuc_news li { padding:0px; font:normal 12px Arial, Verdana, Helvetica, sans-serif; color:#666666; float: left; } .habersonuc_news li img { float:left; margin:0 7px 7px 0} .habersonuc_news li a:link, .habersonuc_news li a:visited { text-decoration:underline; color:#00699b; font:normal 12px/16px Arial, Verdana, Helvetica, sans-serif;} .habersonuc_news h3 {font-family: Georgia, "Times New Roman", Times, serif;font-size: 12px; font-weight: bold; background-color: #d5e2ee; margin: 0; } .habersonuc_news li h3 {background:none; font:normal 18px/21px Georgia, "Times New Roman", Times, serif; color:#00699b; padding:0; margin:0 0 2px 0 } .habersonuc_news li h3 a:link, .habersonuc_news li h3 a:visited { background:none; font:normal 18px/21px Georgia, "Times New Roman", Times, serif; color:#00699b; text-decoration:none } .habersonuc_news li h3 a:hover, .habersonuc_news li h3 a:active{ text-decoration:underline; } .habersonuclist_cont { color: #000000; border: 1px solid #afcadd; } .habersonuc_news p { font-family: Georgia, "Times New Roman", Times, serif; font-size: 12px; font-weight: bold; color: #00699d; text-align:right } .habersonuc_news p a:link, .habersonuc_news p a:visited { font-family: Georgia, "Times New Roman", Times, serif; font-size: 12px; font-weight: bold; color: #00699d; text-decoration:underline; } .mynews_paging { } .mynews_paging { margin:10px 0; padding:1px 0} .mynews_paging .page_left { float: left; width: 250px; } .mynews_paging .page_left ul{} .mynews_paging .page_left ul li{padding: 0px;} .mynews_paging .page_left ul li a:link,.mynews_paging .page_left ul li a:visited {padding: 2px 4px; border:1px solid #3073a4; color:black; float:left; background:white; margin:0 4px 0 0; font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold;} .mynews_paging .page_left ul li a:hover, .mynews_paging .page_left ul li a:active{color:white; background:#3073a4; border:1px solid #3073a4; text-decoration:none;} .mynews_paging .page_right {float: right; width: 600px; text-align: right;} .mynews_paging .page_right ul { float:right} .mynews_paging .page_right ul li { float:left; margin:0 5px 0 0} .mynews_paging .page_right ul li a:link.geri,.mynews_paging .page_right ul li a:visited.geri { width:80px; height:19px; float:left; padding: 2px 4px; border:1px solid #3073a4; color:black; background:white; margin:0 4px 0 0; font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold; text-decoration:none;} .mynews_paging .page_right ul li a:hover.geri, .mynews_paging .page_right ul li a:active.geri{color:white; background:#3073a4; border:1px solid #3073a4; text-decoration:none;} .mynews_paging .page_right ul li a:link,.mynews_paging .page_right ul li a:visited { float:left; padding: 2px 4px; color:black; float:left; background:white; margin:0 4px 0 0; font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold; text-decoration:none;} .mynews_paging .page_right ul li a:link.selected,.mynews_paging .page_right ul li a:visited.selected {color:white; background:#3073a4; text-decoration:none;} .mynews_paging .page_right ul li a:hover, .mynews_paging .page_right ul li a:active{color:white; background:#3073a4; text-decoration:none;} /*----*/ /*--------------------Start Radikal Sitene Ekle-----------------*/ .siteneekle_content { padding: 10px 15px; float: left; background-color:#FFF; width:950px; } .haberkosesi_ust { float:right; background-color:#0772ba; } .siteneekle_h1 { font-size: 23px; color: #1B3B72; line-height: 23px; text-decoration: none; padding-bottom: 5px; } .arial12b { font: 14px Arial, Verdana, Helvetica, sans-serif; } .siteneekle_left{ float: left; width:400px; margin: 0 0 12px 0; } .siteneekle_right{ float: right; width: 500px; padding: 5px; } .siteneekle_frame{ width: 390px; padding: 10px; background-color: #eeeeee; font: normal 10px/14px arial; color: #666666; margin-right:100px; margin-top:15px; } .siteneekle_td1 { padding-top:1px; font-weight:bold; width:200px; } .siteneekle_td2 { padding-top:1px; font-weight:bold; width:200px; } .siteneekle_td2 a { font-weight:bold; color:#3D7BDF; text-decoration:none; } .siteneekle_td2 a:hover { text-decoration:none; } .siteneekle_onizleme { padding-left: 15px; width: 500px; background-color:#FFF; } .onizleme_title { font-weight:bold; padding-bottom:10px; } .siteneekle_onizleme_iframe { border: solid 1px black; } .siteneekle_container{ width:auto; background:#fff; text-align:left; margin: 0 auto; } .siteneekle_list { border-bottom: 1px dotted #7F7F7F; } .siteneekle_description { padding-left:10px; } .siteneekle_description a { color:Black; text-decoration:none; } .siteneekle_description a:hover { color:Black; text-decoration:underline; } .siteneekle_title { padding-left:10px; } .siteneekle_title a { color:#1B3B72; font-weight:bold; text-decoration:none; } .siteneekle_title a:hover { text-decoration:underline; } .siteneekleinput{ width:205px; border:1px solid #a8c3db; background:#fefefe; padding:4px 4px 0 4px; color:#666666; margin:0; font:normal 12px Arial, Helvetica, sans-serif; height: 18px; } /*--------------------End Radikal Sitene Ekle-------------*/ /*--------------------Start 404html-------------*/ .new404html a { font-weight: bold; font-size: 14px; color:Black; text-decoration:none; } .new404html a:hover { text-decoration:underline; color:#4B84E2; } .new404html hr { color: #fff; background-color: #fff; border: 1px dotted #4B84E2; border-style: none none dotted; } /*--------------------End 404html-------------*/ /*---------------Hava Durumu-----------------*/ /*harita üzeri hareketli kżsżm*/ .HavaDurumu_Container{clear:both;} .HavaDurumu{float:left;width:188px;margin-right:8px;} .HavaDurumu_Il{font-weight:bold;font-size:13pt;background-color:#F3F3F3;padding:3px;} .HavaDurumu_SicaklikB{height:40px;} .HavaDurumu_Sicaklik{} .HavaDurumu_SicaklikB .Day{width:60px;float:left;margin-top:10px;font-weight:bold;display:none;} .HavaDurumu_SicaklikB .Seperator{float:left;margin-left:3px;margin-right:3px;margin-top:10px;font-weight:bold;display:none;} .HavaDurumu_SicaklikB .Status{float:left;margin-top:10px;margin-right:5px;font-weight:bold;font-size:16pt;width:142px;} .HavaDurumu_Sicaklik .Day{width:60px;float:left;margin-top:10px;font-weight:bold;} .HavaDurumu_Sicaklik .Seperator{float:left;margin-left:3px;margin-right:3px;margin-top:10px;} .HavaDurumu_Sicaklik .Status{float:left;margin-top:10px;margin-right:5px;font-weight:bold;} .HavaDurumu_Sicaklik .Icon img{width:30px;margin-top:5px;} .HaritaContainer{clear:both;} img#HavaDurumuMap{border:Solid 1px #cccccc;} /*END harita üzeri hareketli kżsżm*/ /*Sol taraf sabit kżsżm*/ .HavaDurumu_SicaklikB2{border:Solid 1px #cccccc;clear:both;margin-top:5px;padding:5px;height:85px;} .HavaDurumu_Sicaklik2{border:Solid 1px #cccccc;clear:both;margin-top:3px;padding:5px;height:80px;} .HavaDurumu_SicaklikB2 .Day{font-weight:bold;margin-right:10px;margin-bottom:10px;font-size:14pt;} .HavaDurumu_SicaklikB2 .Icon{float:left;margin-top:-5px;} .HavaDurumu_SicaklikB2 .Status{font-weight:bold;font-size:16pt;clear:right;} .HavaDurumu_Sicaklik2 .Day{font-weight:bold;margin-right:10px;clear:both;margin-bottom:5px;font-size:12pt;} .HavaDurumu_Sicaklik2 .Status{font-weight:bold;clear:right;font-size:12pt;} .HavaDurumu_Sicaklik2 .Status span{font-weight:bold;font-size:12pt;} .HavaDurumu_Sicaklik2 .Icon{float:left;} .HavaDurumu_Sicaklik2 .Icon img{margin-top:-3px;} #SelectIl{width:182px;background-color:#F3F3F3;border:0;font-weight:bold;} #SelectIl option{font-weight:lighter;} .DurumAd_Sabit{font-weight:bold;font-size:9pt;clear:both;} /*END Sol taraf sabit kżsżm*/ /* HOVER STYLES */ div#pop-up {display: none;position: absolute;width: 188px;padding: 10px;background: #ffffff;color: #000000;border: 1px solid #1a1a1a;font-size: 90%;} /* END HOVER STYLES */ /* Grid*/ #HavaDurumuGrid{font-weight:bold;font-size:12pt;width:100%;} .HavaDurumuTarih{padding:5px;} .HavaDurumuTarihDiv{font-weight:bold;float:left;padding-right:15px;} .HavaDurumuGunDiv{font-weight:bold;} .HavaDurumuMerkez_{padding-left:5px;padding-right:5px;border-bottom:Solid 1px #cccccc;color:#1b3c72;font-weight:bold;font-size:14pt;vertical-align:bottom;} .HavaDurumuMerkez{padding-left:5px;padding-right:5px;color:#1b3c72;font-weight:bold;font-size:14pt;vertical-align:middle;padding-top:4px;} .HavaDurumuBosluk_{border-bottom:Solid 1px #cccccc;font-weight:bold;} .HavaDurumuBosluk{font-weight:bold;} .HavaDurumuBosluk table{width:200px;border:Solid 1px #cccccc;margin-bottom:2px;} .HavaDurumuStatus_{padding-left:5px;border-bottom:Solid 1px #cccccc;font-weight:bold;text-align:right;vertical-align:bottom;} .HavaDurumuStatus{padding-left:5px;font-weight:bold;text-align:right;vertical-align:bottom;font-size:13pt;} .HavaDurumuDerece_{padding-right:5px;border-bottom:Solid 1px #cccccc;width:20px;vertical-align:bottom;} .HavaDurumuDerece{width:20px;} .HavaDurumuAyrac_{padding:1px;border-bottom:Solid 1px #cccccc;font-weight:bold;vertical-align:bottom;} .HavaDurumuAyrac{padding:1px;font-weight:bold;vertical-align:bottom;} .HavaDurumuResim_{padding:3px;border-bottom:Solid 1px #cccccc;text-align:right;vertical-align:bottom;} .HavaDurumuResim{padding:3px;text-align:left;vertical-align:bottom;} .HavaDurumuResim img{width:40px;} .HavaDurumuDurum_{padding-right:5px;padding-top:5px;border-bottom:Solid 1px #cccccc;vertical-align:bottom;font-weight:bold;font-size:10pt;} .HavaDurumuDurum{padding-right:5px;padding-top:5px;vertical-align:bottom;font-weight:bold;font-size:10pt;text-align:center;} /* test giv gird*/ .HavaDurumu_Sicaklik3{border:Solid 1px #cccccc;clear:both;margin-top:3px;padding:5px;height:50px;margin-bottom:3px;width:200px;} .HavaDurumu_Sicaklik3_2{border-left:Solid 1px #cccccc;border-right:Solid 1px #cccccc;clear:both;padding:5px;height:50px;width:200px;} .HavaDurumu_Sicaklik3_3{border-left:Solid 1px #cccccc;clear:both;padding:5px;height:50px;width:200px;} .HavaDurumu_Sicaklik3_4{clear:both;padding:5px;height:50px;width:200px;} .HavaDurumu_Sicaklik3 .Day{font-weight:bold;margin-right:10px;clear:both;margin-bottom:5px;font-size:12pt;} .HavaDurumu_Sicaklik3 .Status{font-weight:bold;clear:right;font-size:12pt;margin-top:5px;margin-left:50px;} .HavaDurumu_Sicaklik3 .Status span{font-weight:bold;font-size:12pt;} .HavaDurumu_Sicaklik3 .Icon{float:left;height:37px;} .HavaDurumu_Sicaklik3 .Icon img{margin-top:-3px;} /* end test div grid*/ /* EndGrid*/ /*----------End Hava Durumu--------------------/* /*-------------------- Radikal Anket-------------*/ .anket_cont { padding:1px 0 0 0; clear: left; margin: 7px 0; float: left; border:1px solid #e8e8e8; padding-bottom:10px; margin-bottom:15px; } .anket_cont .anket_border { width:422px; } .anket_cont .anket_border .ankettop { background-color: #acacac; color:white; font:bold 26px Georgia, "Times New Roman", Times, serif; padding: 3px 5px; } .anket_cont .anket_border .ankettop span { float:right; padding:2px 0 0 0} .anket_cont .anket_border .ankettop span a { color:white; font-weight:normal; text-decoration:underline; font-size:11px; font-family:Arial, Verdana, Helvetica, sans-serif;} .anket_cont .anket_border .anket_content { color: #000000; padding: 7px; } .anket_cont .anket_border .anket_content .anketimg { float: left; margin: 0 10px 0 0; } .anket_cont .anket_border .anket_content .ankettext { float:left; width: 225px; } .anket_cont .anket_border .anket_content_result { color: #000000; padding: 7px; background-image:url(http://anket.radikal.com.tr/d/Poll/i/1/Radikal/ENIYIFILM_RESULT.jpg); height:320px; background-repeat:no-repeat; background-position:left; } .anket_cont .anket_border .anket_content_result .anketimg { float: left; margin: 0 10px 0 0; } .anket_cont .anket_border .anket_content_result .ankettext { float:left; width: 400px; } .anketline {margin-bottom:4px;} .anketsbmt { margin:15px 0 0 0; text-align: right; } .ankettext input.check { margin:5px 0 0 0} .ankettext input.sbmt { width:62px; height:25px; border:none; cursor:pointer; background:url(../img/yanitla.gif) repeat} .anket_cont .anket_border .anket_content .anketsonuc { float:left; width: 400px; font-size: 12px; font-family: Arial, Verdana, Helvetica, sans-serif; margin-top:-20px; } .anket_cont .anket_border .anket_content .anketsonuc p { margin:0; padding:5px 0 2px 0;} .anketsonuc .barcont { float: left; height: 12px; width: 120px; position: relative; background-color: #e8e8e8; font-size: 3px; margin: 0px 0 0 0; top: 3px; } .anketsonuc .toplamoy { float: left; width: 120px; } .anketsonuc .barcont .barrate { position: absolute; height: 12px; left: 0px; top: 0px; background-color: #007caf; font-size: 3px; margin: 0; } .anketsonuc .baroran { float: left; width: 38px; padding:0 0 0 6px; font-size: 12px; } .anketsonuc .oyrakami { float: right; width: 55px; padding:0 0 0 0; color: #007caf; text-align: right; } .anketsonuc .anketkat2 { margin: 5px 0 0 0; padding-top:15px; } /*-------------------- Radikal Anket-------------*/ /*----------- Radikal Captcha -------------------*/ .RadikalCaptcha{border:Solid 1px Black;padding:10px;width:225px;} .RadikalCaptcha input{width:220px;} .RadikalCaptcha .bosluk{height:5px;} /*----------- End Radikal Captcha -------------------*/ /*----------- FCK Editor -------------------*/ .fck_li ul { padding-left:30px; list-style-image: url(../img/list-style.jpg); } .fck_li ol { padding-left:30px; list-style-type:decimal; } .fck_li em { font-style:italic; } /*----------- Radikal FCK Editor -------------------*/ /*----------- Radikal Sinema Search -------------------*/ .Sinema_baslik { color:#1B3B72; font-size: 23px; line-height: 23px; font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; } .Sinema_baslik2 { color: #3D7BDF; font-size: 18px; line-height: 23px; } .Sinema_news-row { width: 100%; padding: 10px 0 10px 0; clear: both; } .Sinema_news-row .Sinema_news-col { float: left; width: 250px; display: block; } .Sinema_news-col-1 { padding-top: 0; } .Sinema_news-col-2 { padding: 0 12px; margin: 0 13px; border-right: 1px dotted #7F7F7F; border-left: 1px dotted #7F7F7F; } .Sinema_title { font-size: 20px; line-height: 24px; color: #1B3B72; display: block; padding-left: 13px; border-left: 4px solid; padding-bottom:5px; } .Sinema_news-row .Sinema_news-col .Sinema_pic {margin-bottom: 8px;} .seantitle a { font-size: 14px; color: #1B3B72; text-decoration:none; font-weight:bold; } .seantitle a:hover { text-decoration:none; } /*----------- End Radikal Sinema Search -------------------*/ ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=okur-yazar.css Content-Type: text/css; charset=utf-8; name=okur-yazar.css Content-Location: http://www.radikal.com.tr/data/css/okur-yazar.css Content-Transfer-Encoding: 8bit @charset "utf-8"; .middle_okur-yazar { padding: 0 0 10px 0; } .middle_okur-yazar .middle-left { float: left; width: 250px; margin-right: 15px; } .middle_okur-yazar .articles { background-color: #F7F7F7; padding: 20px 20px; } .middle_okur-yazar .articles .title { display: block; font-size: 16px; line-height: 16px; color: #3e7be0; font-weight: bold; } .middle_okur-yazar .articles .article-content { padding: 10px 0; } .middle_okur-yazar .articles .article-content .article { padding: 15px 0; border-bottom: 1px dotted #7B7B7B; width: 210px; } .middle_okur-yazar .articles .article-content .article ul {display: block;} .middle_okur-yazar .articles .article-content .article a{display: block;} .middle_okur-yazar .articles .article-content .article .title { font-size: 13px; color: #1b3c72; text-decoration: none; line-height: 13px; font-weight: normal; border-left: 4px solid; padding: 5px 0 5px 10px; } .middle_okur-yazar .articles .article-content .article .content { color: #7f7f7f; text-decoration: none; font-size: 12px; line-height: 16px; padding: 5px 0 10px 0; } .middle_okur-yazar .articles .article-content .article .title:hover {text-decoration: none;} .middle_okur-yazar .articles .article-content .article .content:hover {text-decoration: none;} .middle_okur-yazar .articles .article-content .article .author { color: #1b3c72; text-decoration: none; float: left; } .middle_okur-yazar .articles .article-content .article .author :hover{text-decoration: none;} .middle_okur-yazar .articles .article-content .article ul .date { color: #1b3c72; text-decoration: none; float: right; display: block; } .middle_okur-yazar .middle-center { float: left; width: 395px; } .middle_okur-yazar .articles-center {} .middle_okur-yazar .articles-center .article-first { width: 400px; } .middle_okur-yazar .articles-center .article-first ol li { display: block; width: 400px; } .middle_okur-yazar .articles-center .article-first ol .author { font-size: 16px; line-height: 18px; color: #1b3c72; } .middle_okur-yazar .articles-center .article-first ol .author a { display: inline-block; text-decoration: none; font-size: 16px; line-height: 18px; color: #1b3c72; } .middle_okur-yazar .articles-center .article-first ol .author a:hover {text-decoration: none;} .middle_okur-yazar .articles-center .article-first ol .title { font-size: 20px; line-height: 22px; color: #264579; display: block; float: left; } .middle_okur-yazar .articles-center .article-first ol .title a {text-decoration: none; font-size: 20px; line-height: 22px; color: #264579; display: block; float: left; } .middle_okur-yazar .articles-center .article-first ol .author a:hover {text-decoration: none;} .middle_okur-yazar .articles-center .article-first ol .date { float: right; display: block; font-size: 11px; line-height: 22px; color: #818181; } .middle_okur-yazar .articles-center .article-first ol .date a {text-decoration: none; float: right; display: block; font-size: 11px; line-height: 22px; color: #818181; } .middle_okur-yazar .articles-center .article-first ol .author a:hover {text-decoration: none;} .middle_okur-yazar .articles-center .article-first ol img { border: 1px solid #cacaca; margin: 8px 0 0 0; } .middle_okur-yazar .articles-center .article { border-bottom: 1px dotted #7F7F7F; padding: 20px 0; width: 400px; display: block; } .middle_okur-yazar .articles-center .article ol a {text-decoration: none;} .middle_okur-yazar .articles-center .article ol .title { font-size: 20px; line-height: 22px; color: #1b3c72; display: block; padding-bottom: 5px; } .middle_okur-yazar .articles-center .article ol .title:hover {text-decoration: none;} .middle_okur-yazar .articles-center .article ol img { float: left; margin: 0 10px 5px 0; } .middle_okur-yazar .articles-center .article ol .content { font-size: 12px; line-height: 16px; color: #818181; display: block; width: 400px; } .middle_okur-yazar .articles-center .article ol .content:hover {text-decoration: none;} .middle_okur-yazar .articles-center .article ol ul { clear: both; display: block; padding-top: 10px; } .middle_okur-yazar .articles-center .article ol ul li .title { font-size: 13px; line-height: 16px; color: #1b3c72; display: block; float: left; } .middle_okur-yazar .articles-center .article ol ul li .comment { display: block; float: right; padding-left: 25px; background-image: url(../img/articles/comment.gif); background-repeat: no-repeat; font-size: 13px; line-height: 21px; background-position: 0px 5px; } .middle_okur-yazar .articles-center .article ol .date { font-size: 11px; line-height: 14px; } .middle_okur-yazar .middle-right { float: right; width: 300px; } .middle_okur-yazar .articles .all-news {text-align: right;padding-top: 8px;} .middle_okur-yazar .articles .all-news a{color: #1b3c72;font-weight: bold;text-decoration: none;} .middle_okur-yazar .articlest .all-news a:hover {text-decoration:none;} /*--------------------Start OkurYazar Yazini Gonder-------------*/ .topnav{ height:33px; background:url(../../d/i/1/v2/topnav_bg.jpg) repeat-x; padding: 10px 0 0 0; } .sistersites { font:bold 12px Arial, Verdana, Helvetica, sans-serif; color:#026fb4; margin:12px 0 7px 0; } .mainnews { font-family: Arial, Helvetica, sans-serif; font-size:12px; line-height:19px; color: #000000; } .mainnews a:link, .mainnews a:visited { font-family: Arial, Helvetica, sans-serif; font-size:12px; line-height:15px; color: #000000; text-decoration:none; } .mainnews a:hover, .mainnews a:active { text-decoration:underline; } /*--------------------End OkurYazar Yazini Gonder-------------*/ ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=swfobject.js Content-Type: application/x-javascript; charset=iso-8859-9; name=swfobject.js Content-Location: http://www.radikal.com.tr/D/j/1/swfobject.js Content-Transfer-Encoding: Base64 LyoqDQogKiBTV0ZPYmplY3QgdjEuNC4xOiBGbGFzaCBQbGF5ZXIgZGV0ZWN0aW9u IGFuZCBlbWJlZCAtIGh0dHA6Ly9ibG9nLmRlY29uY2VwdC5jb20vc3dmb2JqZWN0 Lw0KICoNCiAqIFNXRk9iamVjdCBpcyAoYykgMjAwNiBHZW9mZiBTdGVhcm5zIGFu ZCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2U6DQogKiBodHRwOi8v d3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocA0KICoN CiAqICoqU1dGT2JqZWN0IGlzIHRoZSBTV0YgZW1iZWQgc2NyaXB0IGZvcm1lcmx5 IGtub3duIGFzIEZsYXNoT2JqZWN0LiBUaGUgbmFtZSB3YXMgY2hhbmdlZCBmb3IN CiAqICAgbGVnYWwgcmVhc29ucy4NCiAqLw0KaWYodHlwZW9mIGRlY29uY2VwdCA9 PSAidW5kZWZpbmVkIikgdmFyIGRlY29uY2VwdCA9IG5ldyBPYmplY3QoKTsNCmlm KHR5cGVvZiBkZWNvbmNlcHQudXRpbCA9PSAidW5kZWZpbmVkIikgZGVjb25jZXB0 LnV0aWwgPSBuZXcgT2JqZWN0KCk7DQppZih0eXBlb2YgZGVjb25jZXB0LlNXRk9i amVjdFV0aWwgPT0gInVuZGVmaW5lZCIpIGRlY29uY2VwdC5TV0ZPYmplY3RVdGls ID0gbmV3IE9iamVjdCgpOw0KZGVjb25jZXB0LlNXRk9iamVjdCA9IGZ1bmN0aW9u KHN3ZiwgaWQsIHcsIGgsIHZlciwgYywgdXNlRXhwcmVzc0luc3RhbGwsIHF1YWxp dHksIHhpUmVkaXJlY3RVcmwsIHJlZGlyZWN0VXJsLCBkZXRlY3RLZXkpew0KCWlm ICghZG9jdW1lbnQuY3JlYXRlRWxlbWVudCB8fCAhZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQpIHsgcmV0dXJuOyB9DQoJdGhpcy5ERVRFQ1RfS0VZID0gZGV0ZWN0S2V5 ID8gZGV0ZWN0S2V5IDogJ2RldGVjdGZsYXNoJzsNCgl0aGlzLnNraXBEZXRlY3Qg PSBkZWNvbmNlcHQudXRpbC5nZXRSZXF1ZXN0UGFyYW1ldGVyKHRoaXMuREVURUNU X0tFWSk7DQoJdGhpcy5wYXJhbXMgPSBuZXcgT2JqZWN0KCk7DQoJdGhpcy52YXJp YWJsZXMgPSBuZXcgT2JqZWN0KCk7DQoJdGhpcy5hdHRyaWJ1dGVzID0gbmV3IEFy cmF5KCk7DQoJaWYoc3dmKSB7IHRoaXMuc2V0QXR0cmlidXRlKCdzd2YnLCBzd2Yp OyB9DQoJaWYoaWQpIHsgdGhpcy5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpOyB9DQoJ aWYodykgeyB0aGlzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB3KTsgfQ0KCWlmKGgp IHsgdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGgpOyB9DQoJaWYodmVyKSB7 IHRoaXMuc2V0QXR0cmlidXRlKCd2ZXJzaW9uJywgbmV3IGRlY29uY2VwdC5QbGF5 ZXJWZXJzaW9uKHZlci50b1N0cmluZygpLnNwbGl0KCIuIikpKTsgfQ0KCXRoaXMu aW5zdGFsbGVkVmVyID0gZGVjb25jZXB0LlNXRk9iamVjdFV0aWwuZ2V0UGxheWVy VmVyc2lvbih0aGlzLmdldEF0dHJpYnV0ZSgndmVyc2lvbicpLCB1c2VFeHByZXNz SW5zdGFsbCk7DQoJaWYoYykgeyB0aGlzLmFkZFBhcmFtKCdiZ2NvbG9yJywgYyk7 IH0NCgl2YXIgcSA9IHF1YWxpdHkgPyBxdWFsaXR5IDogJ2hpZ2gnOw0KCXRoaXMu YWRkUGFyYW0oJ3F1YWxpdHknLCBxKTsNCgl0aGlzLnNldEF0dHJpYnV0ZSgndXNl RXhwcmVzc0luc3RhbGwnLCB1c2VFeHByZXNzSW5zdGFsbCk7DQoJdGhpcy5zZXRB dHRyaWJ1dGUoJ2RvRXhwcmVzc0luc3RhbGwnLCBmYWxzZSk7DQoJdmFyIHhpciA9 ICh4aVJlZGlyZWN0VXJsKSA/IHhpUmVkaXJlY3RVcmwgOiB3aW5kb3cubG9jYXRp b247DQoJdGhpcy5zZXRBdHRyaWJ1dGUoJ3hpUmVkaXJlY3RVcmwnLCB4aXIpOw0K CXRoaXMuc2V0QXR0cmlidXRlKCdyZWRpcmVjdFVybCcsICcnKTsNCglpZihyZWRp cmVjdFVybCkgeyB0aGlzLnNldEF0dHJpYnV0ZSgncmVkaXJlY3RVcmwnLCByZWRp cmVjdFVybCk7IH0NCn0NCmRlY29uY2VwdC5TV0ZPYmplY3QucHJvdG90eXBlID0g ew0KCXNldEF0dHJpYnV0ZTogZnVuY3Rpb24obmFtZSwgdmFsdWUpew0KCQl0aGlz LmF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTsNCgl9LA0KCWdldEF0dHJpYnV0ZTog ZnVuY3Rpb24obmFtZSl7DQoJCXJldHVybiB0aGlzLmF0dHJpYnV0ZXNbbmFtZV07 DQoJfSwNCglhZGRQYXJhbTogZnVuY3Rpb24obmFtZSwgdmFsdWUpew0KCQl0aGlz LnBhcmFtc1tuYW1lXSA9IHZhbHVlOw0KCX0sDQoJZ2V0UGFyYW1zOiBmdW5jdGlv bigpew0KCQlyZXR1cm4gdGhpcy5wYXJhbXM7DQoJfSwNCglhZGRWYXJpYWJsZTog ZnVuY3Rpb24obmFtZSwgdmFsdWUpew0KCQl0aGlzLnZhcmlhYmxlc1tuYW1lXSA9 IHZhbHVlOw0KCX0sDQoJZ2V0VmFyaWFibGU6IGZ1bmN0aW9uKG5hbWUpew0KCQly ZXR1cm4gdGhpcy52YXJpYWJsZXNbbmFtZV07DQoJfSwNCglnZXRWYXJpYWJsZXM6 IGZ1bmN0aW9uKCl7DQoJCXJldHVybiB0aGlzLnZhcmlhYmxlczsNCgl9LA0KCWdl dFZhcmlhYmxlUGFpcnM6IGZ1bmN0aW9uKCl7DQoJCXZhciB2YXJpYWJsZVBhaXJz ID0gbmV3IEFycmF5KCk7DQoJCXZhciBrZXk7DQoJCXZhciB2YXJpYWJsZXMgPSB0 aGlzLmdldFZhcmlhYmxlcygpOw0KCQlmb3Ioa2V5IGluIHZhcmlhYmxlcyl7DQoJ CQl2YXJpYWJsZVBhaXJzLnB1c2goa2V5ICsiPSIrIHZhcmlhYmxlc1trZXldKTsN CgkJfQ0KCQlyZXR1cm4gdmFyaWFibGVQYWlyczsNCgl9LA0KCWdldFNXRkhUTUw6 IGZ1bmN0aW9uKCkgew0KCQl2YXIgc3dmTm9kZSA9ICIiOw0KCQlpZiAobmF2aWdh dG9yLnBsdWdpbnMgJiYgbmF2aWdhdG9yLm1pbWVUeXBlcyAmJiBuYXZpZ2F0b3Iu bWltZVR5cGVzLmxlbmd0aCkgeyAvLyBuZXRzY2FwZSBwbHVnaW4gYXJjaGl0ZWN0 dXJlDQoJCQlpZiAodGhpcy5nZXRBdHRyaWJ1dGUoImRvRXhwcmVzc0luc3RhbGwi KSkgdGhpcy5hZGRWYXJpYWJsZSgiTU1wbGF5ZXJUeXBlIiwgIlBsdWdJbiIpOw0K CQkJc3dmTm9kZSA9ICc8ZW1iZWQgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dh dmUtZmxhc2giIHNyYz0iJysgdGhpcy5nZXRBdHRyaWJ1dGUoJ3N3ZicpICsnIiB3 aWR0aD0iJysgdGhpcy5nZXRBdHRyaWJ1dGUoJ3dpZHRoJykgKyciIGhlaWdodD0i JysgdGhpcy5nZXRBdHRyaWJ1dGUoJ2hlaWdodCcpICsnIic7DQoJCQlzd2ZOb2Rl ICs9ICcgaWQ9IicrIHRoaXMuZ2V0QXR0cmlidXRlKCdpZCcpICsnIiBuYW1lPSIn KyB0aGlzLmdldEF0dHJpYnV0ZSgnaWQnKSArJyIgJzsNCgkJCXZhciBwYXJhbXMg PSB0aGlzLmdldFBhcmFtcygpOw0KCQkJIGZvcih2YXIga2V5IGluIHBhcmFtcyl7 IHN3Zk5vZGUgKz0gW2tleV0gKyc9IicrIHBhcmFtc1trZXldICsnIiAnOyB9DQoJ CQl2YXIgcGFpcnMgPSB0aGlzLmdldFZhcmlhYmxlUGFpcnMoKS5qb2luKCImIik7 DQoJCQkgaWYgKHBhaXJzLmxlbmd0aCA+IDApeyBzd2ZOb2RlICs9ICdmbGFzaHZh cnM9IicrIHBhaXJzICsnIic7IH0NCgkJCXN3Zk5vZGUgKz0gJy8+JzsNCgkJfSBl bHNlIHsgLy8gUEMgSUUNCgkJCWlmICh0aGlzLmdldEF0dHJpYnV0ZSgiZG9FeHBy ZXNzSW5zdGFsbCIpKSB0aGlzLmFkZFZhcmlhYmxlKCJNTXBsYXllclR5cGUiLCAi QWN0aXZlWCIpOw0KCQkJc3dmTm9kZSA9ICc8b2JqZWN0IGlkPSInKyB0aGlzLmdl dEF0dHJpYnV0ZSgnaWQnKSArJyIgY2xhc3NpZD0iY2xzaWQ6RDI3Q0RCNkUtQUU2 RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIiB3aWR0aD0iJysgdGhpcy5nZXRBdHRy aWJ1dGUoJ3dpZHRoJykgKyciIGhlaWdodD0iJysgdGhpcy5nZXRBdHRyaWJ1dGUo J2hlaWdodCcpICsnIj4nOw0KCQkJc3dmTm9kZSArPSAnPHBhcmFtIG5hbWU9Im1v dmllIiB2YWx1ZT0iJysgdGhpcy5nZXRBdHRyaWJ1dGUoJ3N3ZicpICsnIiAvPic7 DQoJCQl2YXIgcGFyYW1zID0gdGhpcy5nZXRQYXJhbXMoKTsNCgkJCWZvcih2YXIg a2V5IGluIHBhcmFtcykgew0KCQkJIHN3Zk5vZGUgKz0gJzxwYXJhbSBuYW1lPSIn KyBrZXkgKyciIHZhbHVlPSInKyBwYXJhbXNba2V5XSArJyIgLz4nOw0KCQkJfQ0K CQkJdmFyIHBhaXJzID0gdGhpcy5nZXRWYXJpYWJsZVBhaXJzKCkuam9pbigiJiIp Ow0KCQkJaWYocGFpcnMubGVuZ3RoID4gMCkge3N3Zk5vZGUgKz0gJzxwYXJhbSBu YW1lPSJmbGFzaHZhcnMiIHZhbHVlPSInKyBwYWlycyArJyIgLz4nO30NCgkJCXN3 Zk5vZGUgKz0gIjwvb2JqZWN0PiI7DQoJCX0NCgkJcmV0dXJuIHN3Zk5vZGU7DQoJ fSwNCgl3cml0ZTogZnVuY3Rpb24oZWxlbWVudElkKXsNCgkJaWYodGhpcy5nZXRB dHRyaWJ1dGUoJ3VzZUV4cHJlc3NJbnN0YWxsJykpIHsNCgkJCS8vIGNoZWNrIHRv IHNlZSBpZiB3ZSBuZWVkIHRvIGRvIGFuIGV4cHJlc3MgaW5zdGFsbA0KCQkJdmFy IGV4cHJlc3NJbnN0YWxsUmVxVmVyID0gbmV3IGRlY29uY2VwdC5QbGF5ZXJWZXJz aW9uKFs2LDAsNjVdKTsNCgkJCWlmICh0aGlzLmluc3RhbGxlZFZlci52ZXJzaW9u SXNWYWxpZChleHByZXNzSW5zdGFsbFJlcVZlcikgJiYgIXRoaXMuaW5zdGFsbGVk VmVyLnZlcnNpb25Jc1ZhbGlkKHRoaXMuZ2V0QXR0cmlidXRlKCd2ZXJzaW9uJykp KSB7DQoJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2RvRXhwcmVzc0luc3RhbGwnLCB0 cnVlKTsNCgkJCQl0aGlzLmFkZFZhcmlhYmxlKCJNTXJlZGlyZWN0VVJMIiwgZXNj YXBlKHRoaXMuZ2V0QXR0cmlidXRlKCd4aVJlZGlyZWN0VXJsJykpKTsNCgkJCQlk b2N1bWVudC50aXRsZSA9IGRvY3VtZW50LnRpdGxlLnNsaWNlKDAsIDQ3KSArICIg LSBGbGFzaCBQbGF5ZXIgSW5zdGFsbGF0aW9uIjsNCgkJCQl0aGlzLmFkZFZhcmlh YmxlKCJNTWRvY3RpdGxlIiwgZG9jdW1lbnQudGl0bGUpOw0KCQkJfQ0KCQl9DQoJ CWlmKHRoaXMuc2tpcERldGVjdCB8fCB0aGlzLmdldEF0dHJpYnV0ZSgnZG9FeHBy ZXNzSW5zdGFsbCcpIHx8IHRoaXMuaW5zdGFsbGVkVmVyLnZlcnNpb25Jc1ZhbGlk KHRoaXMuZ2V0QXR0cmlidXRlKCd2ZXJzaW9uJykpKXsNCgkJCXZhciBuID0gKHR5 cGVvZiBlbGVtZW50SWQgPT0gJ3N0cmluZycpID8gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoZWxlbWVudElkKSA6IGVsZW1lbnRJZDsNCgkJCW4uaW5uZXJIVE1MID0g dGhpcy5nZXRTV0ZIVE1MKCk7DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfWVsc2V7DQoJ CQlpZih0aGlzLmdldEF0dHJpYnV0ZSgncmVkaXJlY3RVcmwnKSAhPSAiIikgew0K CQkJCWRvY3VtZW50LmxvY2F0aW9uLnJlcGxhY2UodGhpcy5nZXRBdHRyaWJ1dGUo J3JlZGlyZWN0VXJsJykpOw0KCQkJfQ0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9 DQp9DQoNCi8qIC0tLS0gZGV0ZWN0aW9uIGZ1bmN0aW9ucyAtLS0tICovDQpkZWNv bmNlcHQuU1dGT2JqZWN0VXRpbC5nZXRQbGF5ZXJWZXJzaW9uID0gZnVuY3Rpb24o cmVxVmVyLCB4aUluc3RhbGwpew0KCXZhciBQbGF5ZXJWZXJzaW9uID0gbmV3IGRl Y29uY2VwdC5QbGF5ZXJWZXJzaW9uKFswLDAsMF0pOw0KCWlmKG5hdmlnYXRvci5w bHVnaW5zICYmIG5hdmlnYXRvci5taW1lVHlwZXMubGVuZ3RoKXsNCgkJdmFyIHgg PSBuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl07DQoJCWlmKHgg JiYgeC5kZXNjcmlwdGlvbikgew0KCQkJUGxheWVyVmVyc2lvbiA9IG5ldyBkZWNv bmNlcHQuUGxheWVyVmVyc2lvbih4LmRlc2NyaXB0aW9uLnJlcGxhY2UoLyhbYS16 XXxbQS1aXXxccykrLywgIiIpLnJlcGxhY2UoLyhccytyfFxzK2JbMC05XSspLywg Ii4iKS5zcGxpdCgiLiIpKTsNCgkJfQ0KCX1lbHNlew0KCQl0cnl7DQoJCQl2YXIg YXhvID0gbmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2 ZUZsYXNoIik7DQoJCQlmb3IgKHZhciBpPTM7IGF4byE9bnVsbDsgaSsrKSB7DQoJ CQkJYXhvID0gbmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nr d2F2ZUZsYXNoLiIraSk7DQoJCQkJUGxheWVyVmVyc2lvbiA9IG5ldyBkZWNvbmNl cHQuUGxheWVyVmVyc2lvbihbaSwwLDBdKTsNCgkJCX0NCgkJfWNhdGNoKGUpe30N CgkJaWYgKHJlcVZlciAmJiBQbGF5ZXJWZXJzaW9uLm1ham9yID4gcmVxVmVyLm1h am9yKSByZXR1cm4gUGxheWVyVmVyc2lvbjsgLy8gdmVyc2lvbiBpcyBvaywgc2tp cCBtaW5vciBkZXRlY3Rpb24NCgkJLy8gdGhpcyBvbmx5IGRvZXMgdGhlIG1pbm9y IHJldiBsb29rdXAgaWYgdGhlIHVzZXIncyBtYWpvciB2ZXJzaW9uIA0KCQkvLyBp cyBub3QgNiBvciB3ZSBhcmUgY2hlY2tpbmcgZm9yIGEgc3BlY2lmaWMgbWlub3Ig b3IgcmV2aXNpb24gbnVtYmVyDQoJCS8vIHNlZSBodHRwOi8vYmxvZy5kZWNvbmNl cHQuY29tLzIwMDYvMDEvMTEvZ2V0dmFyaWFibGUtc2V0dmFyaWFibGUtY3Jhc2gt aW50ZXJuZXQtZXhwbG9yZXItZmxhc2gtNi8NCgkJaWYgKCFyZXFWZXIgfHwgKChy ZXFWZXIubWlub3IgIT0gMCB8fCByZXFWZXIucmV2ICE9IDApICYmIFBsYXllclZl cnNpb24ubWFqb3IgPT0gcmVxVmVyLm1ham9yKSB8fCBQbGF5ZXJWZXJzaW9uLm1h am9yICE9IDYgfHwgeGlJbnN0YWxsKSB7DQoJCQl0cnl7DQoJCQkJUGxheWVyVmVy c2lvbiA9IG5ldyBkZWNvbmNlcHQuUGxheWVyVmVyc2lvbihheG8uR2V0VmFyaWFi bGUoIiR2ZXJzaW9uIikuc3BsaXQoIiAiKVsxXS5zcGxpdCgiLCIpKTsNCgkJCX1j YXRjaChlKXt9DQoJCX0NCgl9DQoJcmV0dXJuIFBsYXllclZlcnNpb247DQp9DQpk ZWNvbmNlcHQuUGxheWVyVmVyc2lvbiA9IGZ1bmN0aW9uKGFyclZlcnNpb24pew0K CXRoaXMubWFqb3IgPSBwYXJzZUludChhcnJWZXJzaW9uWzBdKSAhPSBudWxsID8g cGFyc2VJbnQoYXJyVmVyc2lvblswXSkgOiAwOw0KCXRoaXMubWlub3IgPSBwYXJz ZUludChhcnJWZXJzaW9uWzFdKSB8fCAwOw0KCXRoaXMucmV2ID0gcGFyc2VJbnQo YXJyVmVyc2lvblsyXSkgfHwgMDsNCn0NCmRlY29uY2VwdC5QbGF5ZXJWZXJzaW9u LnByb3RvdHlwZS52ZXJzaW9uSXNWYWxpZCA9IGZ1bmN0aW9uKGZ2KXsNCglpZih0 aGlzLm1ham9yIDwgZnYubWFqb3IpIHJldHVybiBmYWxzZTsNCglpZih0aGlzLm1h am9yID4gZnYubWFqb3IpIHJldHVybiB0cnVlOw0KCWlmKHRoaXMubWlub3IgPCBm di5taW5vcikgcmV0dXJuIGZhbHNlOw0KCWlmKHRoaXMubWlub3IgPiBmdi5taW5v cikgcmV0dXJuIHRydWU7DQoJaWYodGhpcy5yZXYgPCBmdi5yZXYpIHJldHVybiBm YWxzZTsNCglyZXR1cm4gdHJ1ZTsNCn0NCi8qIC0tLS0gZ2V0IHZhbHVlIG9mIHF1 ZXJ5IHN0cmluZyBwYXJhbSAtLS0tICovDQpkZWNvbmNlcHQudXRpbCA9IHsNCgln ZXRSZXF1ZXN0UGFyYW1ldGVyOiBmdW5jdGlvbihwYXJhbSl7DQoJCXZhciBxID0g ZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhh c2g7DQoJCWlmKHEpew0KCQkJdmFyIHN0YXJ0SW5kZXggPSBxLmluZGV4T2YocGFy YW0gKyI9Iik7DQoJCQl2YXIgZW5kSW5kZXggPSAocS5pbmRleE9mKCImIiwgc3Rh cnRJbmRleCkgPiAtMSkgPyBxLmluZGV4T2YoIiYiLCBzdGFydEluZGV4KSA6IHEu bGVuZ3RoOw0KCQkJaWYgKHEubGVuZ3RoID4gMSAmJiBzdGFydEluZGV4ID4gLTEp IHsNCgkJCQlyZXR1cm4gcS5zdWJzdHJpbmcocS5pbmRleE9mKCI9Iiwgc3RhcnRJ bmRleCkrMSwgZW5kSW5kZXgpOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAiIjsNCgl9 DQp9DQovKiBmaXggZm9yIHZpZGVvIHN0cmVhbWluZyBidWcgKi8NCmRlY29uY2Vw dC5TV0ZPYmplY3RVdGlsLmNsZWFudXBTV0ZzID0gZnVuY3Rpb24oKSB7DQoJdmFy IG9iamVjdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiT0JKRUNU Iik7DQoJZm9yICh2YXIgaT0wOyBpIDwgb2JqZWN0cy5sZW5ndGg7IGkrKykgew0K CQlmb3IgKHZhciB4IGluIG9iamVjdHNbaV0pIHsNCgkJCWlmICh0eXBlb2Ygb2Jq ZWN0c1tpXVt4XSA9PSAnZnVuY3Rpb24nKSB7DQoJCQkJb2JqZWN0c1tpXVt4XSA9 IG51bGw7DQoJCQl9DQoJCX0NCgl9DQp9DQppZiAodHlwZW9mIHdpbmRvdy5vbnVu bG9hZCA9PSAnZnVuY3Rpb24nKSB7DQoJdmFyIG9sZHVubG9hZCA9IHdpbmRvdy5v bnVubG9hZDsNCgkJd2luZG93Lm9udW5sb2FkID0gZnVuY3Rpb24oKSB7DQoJCWRl Y29uY2VwdC5TV0ZPYmplY3RVdGlsLmNsZWFudXBTV0ZzKCk7DQoJCW9sZHVubG9h ZCgpOw0KCX0NCn0gZWxzZSB7DQoJd2luZG93Lm9udW5sb2FkID0gZGVjb25jZXB0 LlNXRk9iamVjdFV0aWwuY2xlYW51cFNXRnM7DQp9DQovKiBhZGQgQXJyYXkucHVz aCBpZiBuZWVkZWQgKGllNSkgKi8NCmlmIChBcnJheS5wcm90b3R5cGUucHVzaCA9 PSBudWxsKSB7IEFycmF5LnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24oaXRlbSkg eyB0aGlzW3RoaXMubGVuZ3RoXSA9IGl0ZW07IHJldHVybiB0aGlzLmxlbmd0aDsg fX0NCg0KLyogYWRkIHNvbWUgYWxpYXNlcyBmb3IgZWFzZSBvZiB1c2UvYmFja3dh cmRzIGNvbXBhdGliaWxpdHkgKi8NCnZhciBnZXRRdWVyeVBhcmFtVmFsdWUgPSBk ZWNvbmNlcHQudXRpbC5nZXRSZXF1ZXN0UGFyYW1ldGVyOw0KdmFyIEZsYXNoT2Jq ZWN0ID0gZGVjb25jZXB0LlNXRk9iamVjdDsgLy8gZm9yIGxlZ2FjeSBzdXBwb3J0 DQp2YXIgU1dGT2JqZWN0ID0gZGVjb25jZXB0LlNXRk9iamVjdDsNCg== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/jpeg Content-Location: http://www.radikal.com.tr/data/img/news/font-box-bg.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgIDAgMDAwMDAwMDBAUEAwMEBQYF BQUFBQYIBgYGBgYGCAcICQoJCAcLCwwMCwsPDw8PDxAQEBAQEBAQEBD/2wBDAQQE BAcGBwwICAwQDQsNEBISEhISEhIQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ EBAQEBAQEBAQEBAQEBD/wAARCAAjAIADAREAAhEBAxEB/8QAGAABAQEBAQAAAAAA AAAAAAAAAAQFAwn/xAApEAAAAwYGAgIDAAAAAAAAAAAAAgQBAwUTFdERElNUk6Ih JXOyBjJ0/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAA AAD/2gAMAwEAAhEDEQA/APT2HoUChCnUKE7l++fuyvTnelYduJ2ZmsZmxwZ58MAd 6RBtij4iWAKRBtij4iWAKRBtij4iWAKRBtij4iWAKRBtij4iWAKRBtij4iWAKRBt ij4iWAKRBtij4iWAKRBtij4iWAKRBtij4iWAKRBtij4iWAKRBtij4iWAKRBtij4i WAKRBtij4iWAcIghQJ0KhQnTuXD5w7M9Id0VhG4kZmYxuXDFnjywAhDz1SL+d19G AK5oBNAJoBNAJoBNAJoBNAJoBNAJoBNAJoBNASRd56pb/O9+jQEsLeesSfA7+rAF U0AmgE0AmgE0AmgE0AmgE0AmgE0AmgE0AmgJYo89Yr+B59WgJ4cf16X4Xf1YAozg GcAzgGcAzgGcAzgGcAzgGcAzgGcAzgGcBPET+vVfC8+rQGR+SLFKKJncpjynf7ZM GG8m8twzYgMqvRbX6ksAV6La/UlgCvRbX6ksAV6La/UlgCvRbX6ksAV6La/UlgCv RbX6ksAV6La/UlgCvRbX6ksAV6La/UlgCvRbX6ksAV6La/UlgCvRbX6ksAV6La/U lgGr+NrFK2JkcqTzXf7ZMGF8l8sxy4AP/9k= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/print.gif Content-Transfer-Encoding: Base64 R0lGODlhDgAPALMAAFZWVubm5qCgoJKSko2NjczMzP///729ve/v77W1tff399fX 16+vr8PDw97e3qampiH5BAAHAP8ALAAAAAAOAA8AAARa0Bg0qq1ISqr1yBqHjNnX iUgQGCY7EHAsP8JgEMjR7M2BEC7DAlcoFn6HICKBIxEeCyWiIGssohWh8MrVZl2X b3YACBR6iQDA9qmU0Qw1RkJW2eUdA2DP32siADs= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/send-to-friends.gif Content-Transfer-Encoding: Base64 R0lGODlhDgAPALMAAIKCgvb29tfX15OTk7KysvDw8Obm5v///7y8vNzc3J2dnYyM jMnJyQAAAAAAAAAAACH5BAAHAP8ALAAAAAAOAA8AAARD8MhJq71g6c33GEwgFmQ5 aMFABKThGkugHYWiBG4BC8dMEgORYJEw9BY0EmKxLBpnL8PQ+URGr8/BpdLpcrbg sJgSAQA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/add-archive.gif Content-Transfer-Encoding: Base64 R0lGODlhDgAPAKIAAFpaWv///7S0tG9vb4SEhMTExGNjY8zMzCH5BAAHAP8ALAAA AAAOAA8AAAM7GBpGTmPJAGSdqp5CcQ6C0C0DYBqgaJ7EFE5OGs5zENO4GC/HKxGG VeUVPFlSI8xQ5Uk6JYMHsEkNJAAAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/comment.gif Content-Transfer-Encoding: Base64 R0lGODlhDgAPAMQAAH19fefn58zMzKampv///4yMjL6+vtvb2+/v75mZmba2ttbW 1vf394WFhcbGxpWVla6urgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAOAA8AAAVsIEEwzlMkSfE4jEgEjRIw NBMoRfA2C+L/vkUjkBgEjsjkIAEwJJ8BA6B5qFqv0sZAsOh6u4JBrOEQmM9mR4zx eAgO34Wh8WgxFICE4SAwMBUtLggOABAAAw4ILosEUwmMkAANipCLDQaVmZAhADs= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/comment-count.gif Content-Transfer-Encoding: Base64 R0lGODlhEgARALMAAEB94LTM81mO5Obu+4et7Pr8/nmj6Zm5726c6JCz7f////H2 /Zu77wAAAAAAAAAAACH5BAAHAP8ALAAAAAASABEAAAQpkIFJqwXy6s27/2AojmRp nlMyJkrrKgYgDG/9DgCy2LxyEIWerRAQtiIAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/comment-up.gif Content-Transfer-Encoding: Base64 R0lGODlhEwAOAMQAAEB94MbY9lCH4+jv+6K/8P///3Kf6NLg+PH2/WCS5UyE4sXe 936m6leM5Ovx/Pj6/tjl+abC8c3d91WL5HOl5gAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAATAA4AAAVEYCGOxcM0EKmqQwK80boG ymtTiCxGdg9Mh5XJRySQWsSkIUdLOgUShyPg9AUGAxGk2kuNttyXVxsWk8DhcQHN VbOr3hAAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/comment-down.gif Content-Transfer-Encoding: Base64 R0lGODlhEwAOAMQAAJSEXODb0JmKZPv7+bGmie/t58vEsKSXdenm3vPy7a+jhePe 1J6QbP////b18fLw67Wrj5uNaM3Fsvf39wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAATAA4AAAVFYNMgQGmeJiKKJOoC6tq+ Z8zSqD3i9brzpVgiEQCWAo/HImI0CQINh6J5KPgMQMjAJ1owaAauz0FAPcViiamK RiMYWnQIADs= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/social-icon/facebook.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAMQAACs+ZtDY605uqkBdmGSDtkFSc////0prp193qnGItzZIbkRg m1t1rEZXeuLo9mF6rF54r22Jt0hknl9+tFBrpHSSv0RVeVNzrEJKc2uGtTBDalx7 smyKuzpMcXGNvQAAACH5BAAHAP8ALAAAAAAQABAAAAWAoNGMZFkaVqWuLGtZ3iPP MmU/XlFwUO9DmYDDAeHoMoykkiEcMjKdDuFCrV6GCSohOrF5JZIhmDKJbry2odpB 2SgUDLB8LWZoNBe5Xgy+3AULgYILQ4ICAAAHA4uMA0OMBwAFETQzQzMROhEInJ0I Q52ZBRmkpaamHQZRq6ytBiEAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/social-icon/delicious.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAMQAABwcHNTU1J2dnT1nolCI2DRhoPf390WB1TMzM7e3tykpKVOa 3d3d3To6Ov///2Cg4CAgIEmE1jploUJCQlqd3z9oo2Kh4DdjoAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAQABAAAAVioJOMZFKdaCUabGtYcGwN idsSeP7QNpvrklovQixSLkJb0YjsGZbERSHpOlivUkUDwe0GvmCGQNv1gr9iyLaM OKMFanbbnUYo7nh3oI7P0wUAcggMhIViDgCJigACjY4CDiEAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/social-icon/google.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAPcAAABvHwBSwcwAAPXMzaMHA/K3AK+1vz+sPnPAbvF9fgCtPMKz fI6PKwA6oUuGvxB92cSjo0lyqyyrOq1RHqS/4+z1++fEWOemABeJ40+9QQCNJpfQ q/8AAPXikDtztfkAAN/q9czMzBqjPOzFd0G1JnS148LV7TZ5yO8AAAttxT24QLuM EhtEfv/2x26ff/TEKITJlS2r7bDbv2ywPPLHBOoAABp6L1iHMBK2SQGaOWTAQfaj rQNt03Gfvw9krCmB0/T69r+LK+vSkxy5Suv16ABzMse6pjy4akS0PzmrLvfd3dLp 1/vGALNoPAqV4oKhz2nWSBBstrjP6PCzExVRlACsSrUAABCfOgaCMfr7/XizVmSM wvC/QMXjx9Pi8q3ZrkS07fTEDxeA3Q521023P/zp7gCzRwqcKuUSBgBIm/XjpE64 OBLGUf/+6C6mO/a9CmjDRPrv3SS4QQBUwlq8QAB7MUymOjeuPQidOgV0zq7I6PrL Ca4AALC8yPCoBmLINtPn9iK7Sv///+0GAruJMrwAAFazPgWzRx6lOzq1OhR926bF 5ySM5ACUK97s+ER8xgZpyucIA/HelS6rPABbx17FQwAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAQABAAAAj/AAWF6BHFR58QEKwIWLiw kMAKYGI4KSFIUIIPGDGisBICEAZGiiCBEDQABYeTKDaGcPRAzBhKegQpqZGxRg2O WX7w4DEn5o4ag9BESsknhKBFAQKcEFSmCYMZhuzcmEAgghdBJigIIqLlD5RKGVTI YWMjTZ5HUioiIAFHBx0yByYFwkIlRQMPFb8kWfMWyR0JQ7CwcLDlSUVBXQ4k8isB EY46BgS1adFBUsUlbiQ0vnKoTgg1YfYwKWAhiyAYZ0RcwWOmzgIaTGK/uSBEkIxG eHLkaL0izJTfU/yMELRBg+4cVeqseMGcOZc4QI4oMEO9ShFBQbIHIWQkhAsAdcLX A7keEAA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/social-icon/yahoo.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQANUAAIkDGNebpaMZL3QgQv///7hndI0LILRebMp6h7NCVIlCXmAA J4E1U5kAGbpseN6stKhFVNKPmbhOX3srS71xfWsRNoxHYsJnds2DjtulreCyucZx f8Fjc60zR71barpTY38yUZ0JIbdKXIU7WNSTnpRKa8+Hk4pEX9mhqqcjOMF6hch1 gpsFHL9gbsRseuG0u7VSY9GNmNacrct+irVFV9WXoQAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAQABAAAAaYQIJleCqOjozkZEIovZ6v R2aKCtRIkcjE8sLMEKuN68LxeCQi08BCaLvJZjQNMzg9VG1HofxxtysKDysUbWUe HxBtBgcLChliBW0eCSltAA0eCyMZYxwHbSyWDZiaGRcXEikAbpejmSMoLR0ho6Kj pCMRArcNbbykAy23fr6uCwsetwDLzLeZyL/RpMhm1dbWCwTH29zdBEEAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/social-icon/myspace.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQANUAAAgiUKq81TtknhhEkk9zpP///yRAcTxywdfg7x1SqBQvX4uj xBVAjixitXORxkR6xxlNpe/z9yBVq22LtBw3aB9Lmg0mVTlmubHC3klxtiVarjxl rDVruxtHlkh/yi1bnThuvSlatUBnnHuYypKq0SZBdL7M4kJzxRpLjRgzZDVjtSA7 bRArWihVpuLn8HCOuC9crTlkp3yXuyFarUpzuoqj0bDB3r3M5AAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAQABAAAAaewEJpSCwWCwaPcslkGgyP i/SSyVw2qI30sVqdVDRU7PX6BAqBjOrUPcBGBVOhgJgXSLADhQKCOQo3c3VzNTAg exwwAgsCZBsYBTYwMBx7DS0uBRGbEwQLIjEtDSkpl3anczKiCgohFa+ocxEVIawa rxWxcxUarBIdwMGoHRIsLAkDycqoAwnGEAzR0tPREBYWENna29sWBQDg4eLiBUEA Ow== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/social-icon/su.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAOYAAARUZrDCtT6uWgJ7mi2BQmKhhc3l6wOQtAJvinnQjyuQpNTU 1FW91yNjMkydru34+7zXwwKm0jicUkO7YjR7jDV3hgNedDuw0LjZ4Fm7cjSRS93t 8COnzASFpHavukfFZ1GfZeDg4P///wJ1kluxcAObwjKbtASLrOfn57y8vO7u7jyp V8XOzmvDggNkezKMSFaitUCyXCWz2hOMqbOzs22pfczMzPT09Orx8wR6lXvWlAKv 3zqcSkG3XwKUvTGlvTqlVANfdDux017EeANqgzmHS1Gqv3WpgszZzwSAnTaWTjCG RQKHqwKNs7rFvQOgyubt7+/3/wKr2bXe3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAQABAAAAe7gDctMYSFhjQ0Qg8tGQmO j5ALCxwXK0MfmJmaNjYyPkAToaKjE5w7PhITMRJKra4CpTanSj0gAZy4TjU9nFJN GjE2ksOSNjGSEUwvApIeDgo/DJLMC08dSytIIdshMCXbK9slAwRAJBAo6SgH6Urp PiMNBPNFBSoqP/dH9wcIKTcAA0I5gSEghhNEUohYuHCDkQ4zDIjYYKKDCwsjkmjc yFHjCAsUgiDIQbKkSQRBKOCoAKCly5ctK+AIBAA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/social-icon/mixx.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAMQAAG8JD////8UXIa0ZIdRETYEkKsE2ProrM3cVG9tYYbIgKMon MIguM8Y+RXMOE9VIUqogIM81PrcoL78zOnsbIIUqLsccJ8Q6QdlSXM0wOX4gJHQR FoMnLNE5RMghLHELESH5BAAHAP8ALAAAAAAQABAAAAV5YMCMZFmKSaqu64g1cCzD WFU9V67v+cNxD4MBQiwShY9CgTCZBJ7QZ5Og7BwO0ei1o9FYsQGw+NChUCISyVMd YKcj5oxC8aQH7PMMArGY1/93Cgt7fXOGh3MLGxseA46PkI4eixaRlgMWDg4CnJ2e nh8BAKOkpaUBIQA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/social-icon/twitter.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQANUAADGiyKvY53DB7Eq+6Njx+3fS8U6u0Fy+7qXW5vn9/rbl+Di2 63jF85XV9Wq+7VS67obU853d9sPo+Taoz4bP8lrK7XPP8er2/U3D7WnN8GHG70O9 7I3U9P///4TT8pTe93vQ8cXr+orR9XTF8VvF7U+v0G7G8L/m+GHM70KlzlHF7aPe 937U8ky97czt+tzy+8rq+YTO9+73/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAQABAAAAarwATCACgajwZEIpByMJ7Q qCMVKAkaWA4Hy8UKSgBRJLIKKcbosagoakBOnQ7HQ+euAR4OCBZ/+V0fEIJFIBAW EnGJHScWECBFFiwZcB0JlhcNkRZFJgUalCMPDwedBSZFGRkkCnEwghCpqUUaqhSK cREVGRpFJCgoLQ0yihEYKCRFKhXLGyYizxQk0sglAxUq2BsL2wsYGBUDJQETA9jm 5yoDEwFCYEfvJUpBADs= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/social-icon/digg.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQALMAAKampvX19b29vebm5t7e3rW1tdbW1q2trf///+/v7wAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAQABAAAARkEMlJq50lF3EoOJ1UeFOI AJIgBUFoIskhqPAgc1NiI6pu2yjEYGBAfUCgwQcRIBYRhOEgujscAYIRK6GzToI8 YaK5K2GYgSjB9AmqmoJh0NQZTQvRYDCBUg3jZUggCIJIYBcXEQA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/social-icon/reddity.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAOYAAAAAANXn+Yy334qTnP1EAV9fX7q9vzs9P9Dd6vX5/pq/4f6t YsXQ2ycpK/9mM6+vr//LqnV6funz/EhLTxwdH/7Er//u6OHu+5S13hUXGLC3vv// //5/UXyBht3e3//d0G92fUBAQL3FzVBXXeXw+/f//668yywuL+/2/d3l7Ghrb9zh 5pCQkIOIjpW84UJFR97s+mJobcLCwrW1vSosL9ji7Ht7e1FRUZicnzMzMx4eHsnT 3H6FjVhbXt7m90VKTri7vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAQABAAAAemgBsKg4SFhYIJiYqLi4MJ KJCRkpAJjhKXKicHKRIaET0SCS4uCZcaKhsPLwAHEScioqSXIgWpHZcSLSqxCSS+ MTQTNb4kOxSxKBfKy8wXJyujyc0XDDwxBzQv0TAIIAcDAzQUKjgGBh7bPywyOg1A G/Dx2wAbJzfx+BsCAhIBBzYh4lUg4CDevn4mMtiIx4EAgQ/wDl4a4SGehQUQDOrb x7Fjxw2BAAA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/social-icon/ff.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAPcAAAAtjZK2yFOV0Ky8yTJytEBjh7Tk/Hy19Gmf5FB0oB5Ton2c t97q7arN7CZju3m34Z/Q7xJEolSFvDl4w3Sjz73L1H2p0JS93mGc/16Y2fX+/Tpr p7rf8El0tDprvI3E+Dl219Dq/FWL06HS9J210VGDqm6YuClhx67R4sPo95TC3h5U rnOk9gAkkIuz9qra/+L5/z50vMzZ4H2u1Gug0xlQqEZ2wkhsm1+EsHGm4ZHI/3Sj 5HumwDNt20N706a4zk59wIi3532//KjL3sbr82aWzJmyvD1tyrC51cjb8CdZrK3a 8I/L8GOP4s3v91yJvAA4jLHCygQzlkmBxY6wyj14zxxZsoyjtXq771J7qidcmWKe 1Z7c/m+dyWqk+6DE4ai5xHGf7Wyj8Wyr4j1tsyFbs6a9z5XQ/4Sr1p+6zoGy4W+e 4Dp3s5PK87rO35K35VGHtt/8/0x3zKC3x9Po9luKzkyEt0BwwmSMssn0/TRqu0Ru x7jB1L/t/9Hf8AA1h1uRyLPX7xNJqoarx43E/o+/+Iy723Gn7mig/zR1wP///8nn /kpzupe86rTg/jlusGaZzJvQ9WKLvSNZoViGtkJrvUp9xoS485rN/J6+x5rB2cDT 35fE5Oj9/8Di95S9xWmf8YOeslCJv2CS1TZ04KLX/3Sv9M7e3nmt4RxSr2CHtnmi yaW504O8/8jt/MPf+bDd+I/L97fH1AAyn2Gg36Tf/3Cn/pvE5Xas36W91oO35XOd 4Nbm/1mK00mBvgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAQABAAAAj/ADXIMPKj4I9MmUiQmGMk lCxFDMBsokMnxKIUrha9ehUCxRUZfCp0iuPkCxo0KlRYWHUhz5AFSPzAIMKD0po1 cOzQoLHBUJ8urJLE0VSizZlDOWJ9MBVjhgEaaTx5kgSp1hYla7gIKOMBgoEinzi8 YeTizINdLphg8XEH1pInAQI16rBDxxgRYS5lmLRhRCRfVBo4emKpVaI/VWwp0KKm 1Icpg245qqPHiwMAIBDVGPViRBAgJmZgilEGw4lZpDCs6IWJkxobeCgQ0mMF0YkW PTRbKqQC1QQcFD4QgLIighRBqaBYuqQL1yNVEgjRIqBETpM7Su4cOiAE0A03BSQc IBJD/tChMCxAIRBVYICiClk87LHBhk0MG3uOkEkQRVFAADs= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/news-back.gif Content-Transfer-Encoding: Base64 R0lGODlhBAAHAIAAAP///5ycnCH5BAEHAAAALAAAAAAEAAcAAAIIhHMJaNveQgEA Ow== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.radikal.com.tr/data/img/news/news-next.gif Content-Transfer-Encoding: Base64 R0lGODlhBAAHAJEAAP////7+/pycnAAAACH5BAEHAAAALAAAAAAEAAcAAAIIFB6G eup9QAEAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=news-detail.css Content-Type: text/css; charset=utf-8; name=news-detail.css Content-Location: http://www.radikal.com.tr/data/css/news-detail.css Content-Transfer-Encoding: 8bit @charset "utf-8"; .middle_news {} .middle_news .middle_1 { float: left; width: 660px; } .middle_news .middle_1 .news {} .middle_news .middle_1 .news .news-header {} .middle_news .middle_1 .news .news-header .header-left { float: left; width: 510px; } .middle_news .middle_1 .news .news-header .header-right { float: right; } .middle_news .print-size { height: 15px; width: 108px; float: right; background-image: url(../img/news/font-box-bg.jpg); background-repeat: no-repeat; padding: 10px 10px; } .middle_news .print-size li { float: left; line-height: 13px; } .middle_news .print-size .title { font-size: 13px; color: #1B3B72; margin-right: 3px; } .middle_news .print-size img { margin-left: 5px; } .middle_news .middle_1 .news .news-header h1 { font-size: 23px; color: #1B3B72; line-height: 23px; text-decoration: none; padding-bottom: 5px; } .middle_news .middle_1 .news .news-header p { font-size: 11px; line-height: 11px; color: #4B4B4B; padding-bottom: 10px; } .middle_news .middle_1 .news .news-header h2 { border-top-width: 1px; border-top-style: dotted; border-top-color: #7F7F7F; display: block; padding: 8px 0 0 0; color: #3D7BDF; font-size: 18px; line-height: 23px; } .middle_news .middle_1 .news .news-middle { padding-top: 15px; } .middle_news .middle_1 .news .news-middle .news-left{ float: left; width: 420px; } .middle_news .news .news-middle .news-left .news-body {} .middle_news .news-body .news-pic { border: 1px solid #C7C7C7; margin-bottom: 0px;} .middle_news .news .news-body p{ padding-bottom: 5px; color:Black;} .middle_news .news .news-body .BlackContent p {color:Black; font-size:15px;} .middle_news .news .news-body h3{ color: #3D7BDF; font-size: 18px; padding: 10px 0 5px 0; } .middle_news .news .news-buttons { border-top: 1px dotted #7F7F7F; border-bottom: 1px dotted #7F7F7F; padding: 5px 0; } .middle_news .news .news-buttons a { display: inline-block; text-decoration: none; font-size: 13px; color: #1B3C72; background-repeat: no-repeat; background-position: 0px 4px; margin: 0 40px 0 0; padding: 1px 0; padding-left: 20px; } .middle_news .news .news-buttons a:hover {text-decoration: none;} .middle_news .news .news-buttons .print-button {background-image: url(../img/news/print.gif);} .middle_news .news .news-buttons .send-to-friends {background-image: url(../img/news/send-to-friends.gif);} .middle_news .news .news-buttons .add-archive {background-image: url(../img/news/add-archive.gif);} .middle_news .news .news-buttons .comment {background-image: url(../img/news/comment.gif);} .middle_news .news .news-comments { padding: 20px 0; } .middle_news .news .news-comments .comments-header { border-bottom: 1px dotted #7F7F7F; height: 43px; } .middle_news .news .news-comments .comments-header li { display: block; line-height: 13px; } .middle_news .news .news-comments .comments-header .title { color: #1B3B72; float: left; border-left: 4px solid; line-height: 13px; font-size: 16px; padding: 5px 0 5px 13px; } .middle_news .news .news-comments .comments-header .comment-count { float: right; line-height: 13px; background-image: url(../img/news/comment-count.gif); background-repeat: no-repeat; background-position: 0px 0px; height: 20px; color: #1B3B72; padding: 0 0 0 25px; margin: 3px 0 0 0; } .middle_news .news .news-comments .comment-list {} .middle_news .news .news-comments .comment-list li { border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #7F7F7F; padding: 15px 0 0 0; color: Black;} .middle_news .news .news-comments .comment-list li .comment-ns { line-height: 13px; color: #1B3B71; padding-bottom: 10px; font-weight: bold; } .middle_news .news .news-comments .comment-list li .comment-pic { float: left; margin-right: 10px; } .middle_news .news .news-comments .comment-list li .title { line-height: 14px; color: #1B3B72; font-size: 14px; padding-bottom: 5px; } .middle_news .news .news-comments .comment-list .comment-vote { padding: 20px 0 0px 0; clear: both; display: block; height: 30px; } .middle_news .news .news-comments .comment-list .comment-vote li { border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; margin: 0 0 0 20px; padding: 0 0; float: right; line-height: 12px; display: block; } .middle_news .news .news-comments .comment-list .comment-vote a { color: #1B3B72; text-decoration: none; background-repeat: no-repeat; background-position: 0px 1px; padding-left: 25px; font-size: 12px; display: block; padding: 2px 0 2px 25px; } .middle_news .news .news-comments .comment-list .comment-vote a:hover {text-decoration: none;} .middle_news .news .news-comments .comment-list .comment-vote .title { border-left-width: 3px; border-left-style: solid; border-left-color: #918158; font-size: 12px; padding: 2px 0 2px 13px; } .middle_news .news .news-comments .comment-list .comment-vote .comment-up {background-image: url(../img/news/comment-up.gif);} .middle_news .news .news-comments .comment-list .comment-vote .comment-down {background-image: url(../img/news/comment-down.gif);} .middle_news .news .news-comments .comment-pages { text-align: center; padding: 15px 0 20px 0; } .middle_news .news .news-comments .comment-pages a { line-height: 13px; display: inline-block; padding: 5px; border: 1px solid #C9C9C9; text-decoration: none; color: #4B4B4B; } .middle_news .news .news-comments .comment-pages a:hover {border: 1px solid #1B3B72;color: #1B3B72;} .middle_news .news-body .news-sound { height: 72px; width: 406px; padding-bottom: 15px; } .middle_news .middle_1 .news .news-middle .news-right{ float: right; width: 212px; } .middle_news .news-right .article-pic { border: 1px solid #C9C9C9; margin-bottom: 20px; } .middle_news .news .news-social { background-color: #EDEDED; padding: 15px 20px; } .middle_news .news .news-social .title { font-size: 14px; color: #1B3B72; border: none; padding: 0 0 10px 0; width: 172px; display: block; } .middle_news .news .news-social li{ border-top: 1px dotted #767676; border-bottom: 1px dotted #767676; padding: 5px 0 10px 0; display: block; width: 172px; } .middle_news .news .news-social ul li a { display: block; float: left; width: 63px; text-decoration: none; color: #4B4B4B; font-size: 11px; background-repeat: no-repeat; background-position: 0px 1px; padding: 1px 0 1px 22px; margin: 4px 0; line-height: 16px; } .middle_news .news .news-social ul li a:hover {text-decoration: none;} .middle_news .news .news-social ul li .facebook {background-image: url(../img/news/social-icon/facebook.gif);} .middle_news .news .news-social ul li .delicious {background-image: url(../img/news/social-icon/delicious.gif);} .middle_news .news .news-social ul li .google {background-image: url(../img/news/social-icon/google.gif);} .middle_news .news .news-social ul li .yahoo {background-image: url(../img/news/social-icon/yahoo.gif);} .middle_news .news .news-social ul li .myspace {background-image: url(../img/news/social-icon/myspace.gif);} .middle_news .news .news-social ul li .su {background-image: url(../img/news/social-icon/su.gif);} .middle_news .news .news-social ul li .mixx {background-image: url(../img/news/social-icon/mixx.gif);} .middle_news .news .news-social ul li .twitter {background-image: url(../img/news/social-icon/twitter.gif);} .middle_news .news .news-social ul li .digg {background-image: url(../img/news/social-icon/digg.gif);} .middle_news .news .news-social ul li .reddit {background-image: url(../img/news/social-icon/reddity.gif);} .middle_news .news .news-social ul li .ff {background-image: url(../img/news/social-icon/ff.gif);} .middle_news .news .news-previous-next { background-color: #EDEDED; padding: 15px 10px; text-align: center; margin: 0 0 15px; width: 192px; } .middle_news .news .news-previous-next a { display: inline-block; font-size: 12px; color: #1B3B72; text-decoration: none; background-repeat: no-repeat; line-height: 12px; } .middle_news .news .news-previous-next a:hover {text-decoration: none;} .middle_news .news .news-previous-next .previous { background-image: url(../img/news/news-back.gif); background-position: left 7px; border-right-width: 1px; border-right-style: solid; border-right-color: #9A9A9A; display: block; float: left; padding: 5px 8px 5px 10px; } .middle_news .news .news-previous-next .next { display: block; float: right; padding: 5px 10px 5px 0; background-image: url(../img/news/news-next.gif); background-position: right 7px; } .middle_news .news .other-news-list li a{width: 167px; color:Black;} /* Sosyal linklerin altındaki haberler iƧin */ .middle_news .news-header .article-info { width: 660px; padding-bottom: 15px; border-bottom: 1px dotted #7f7f7f; } .middle_news .news-header .article-info img { float: left; margin-right: 15px; } .middle_news .news-header .article-info .content{ float: right; width: 455px; } .middle_news .news-header .article-info .content .author-title{ font-size: 23px; color: #1b3c72; padding-bottom: 3px; border-bottom: none; } .middle_news .news-header .article-info .content .author{ font-size: 15px; color: #1b3c72; padding: 0; border: none; } .middle_news .news-header .article-info .content .word{ font-size: 17px; line-height: 20px; color: #3e7be0; } .middle_news .middle_2 { float: right; width: 300px; } /* ---- Galeri Haber Share----*/ .GeleryShare .news-social {} .GeleryShare .news-social .title { font-size: 14px; color: #ffffff; border: none; padding: 0 0 5px 0;display: block; } .GeleryShare .news-social li{ border-top: 1px dotted #767676; border-bottom: 1px dotted #767676; padding: 5px 0 10px 0; display: block;} .GeleryShare .news-social ul li a { display: block; float: left; text-decoration: none; color: #ffffff; font-size: 11px; background-repeat: no-repeat; background-position: 0px 1px; padding: 1px 0 5px 18px; margin: 4px 5px; line-height: 16px; } .GeleryShare .news-social ul li a:hover {text-decoration: none;} .GeleryShare .news-social ul li .facebook {background-image: url(/data/img/news/social-icon/facebook-galeri.gif);} .GeleryShare .news-social ul li .delicious {background-image: url(/data/img/news/social-icon/delicious-galeri.gif);} .GeleryShare .news-social ul li .google {background-image: url(/data/img/news/social-icon/google-galeri.gif);} .GeleryShare .news-social ul li .yahoo {background-image: url(/data/img/news/social-icon/yahoo-galeri.gif);} .GeleryShare .news-social ul li .myspace {background-image: url(/data/img/news/social-icon/myspace-galeri.gif);} .GeleryShare .news-social ul li .su {background-image: url(/data/img/news/social-icon/su-galeri.gif);} .GeleryShare .news-social ul li .mixx {background-image: url(/data/img/news/social-icon/mixx-galeri.gif);} .GeleryShare .news-social ul li .twitter {background-image: url(/data/img/news/social-icon/twitter-galeri.gif);} .GeleryShare .news-social ul li .digg {background-image: url(/data/img/news/social-icon/digg-galeri.gif);} .GeleryShare .news-social ul li .reddit {background-image: url(/data/img/news/social-icon/reddity-galeri.gif);} .GeleryShare .news-social ul li .ff {background-image: url(/data/img/news/social-icon/ff-galeri.gif);} /* ---- End Galeri Haber Share----*/ ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=category.css Content-Type: text/css; charset=utf-8; name=category.css Content-Location: http://www.radikal.com.tr/data/css/category.css Content-Transfer-Encoding: 8bit @charset "utf-8"; .middle_cat { } .middle_cat .middle-left { float: left; width: 670px; } .middle_cat .middle-right { float: right; width: 260px; } .header-news { padding-bottom: 15px; border-bottom: 1px dotted #7F7F7F; width: 670px; } .header-news .news-pic { float: left; width: 380px; } .header-news .news-content { float: right; width: 280px; } .header-news .news-content h1 { font-size: 20px; line-height: 24px; color: #1B3B72; display: block; padding-left: 13px; border-left-width: 4px; border-left-style: solid; } .header-news .news-content h1 a { display: inline-block; color: #1B3B72; text-decoration: none; } .header-news .news-content h1 a:hover {text-decoration:none;} .news-content .news-date { font-size: 11px; color: #4B4B4B; display: block; padding-left: 15px; padding-top: 5px; padding-bottom: 10px; } .news-content .news-date a { display: inline-block; color: #4B4B4B; text-decoration: none; } .news-content .news-date a:hover {text-decoration:none;} .news-content .news-detail { color: #1B3B71; display: block; padding-left: 15px; padding-bottom: 10px; } .news-content .news-detail a { display: inline-block; color: #1B3B71; text-decoration: none; } .news-content .news-detail a:hover {text-decoration:none;} .news-content .news-buttons {padding-left: 15px;} .news-content .news-buttons a { color: #1B3B72; text-decoration: none; display: block; float: left; margin-right: 30px; padding-left: 25px; line-height: 18px; background-repeat: no-repeat; } .news-content .news-buttons a:hover {text-decoration: underline;} .news-content .news-buttons .news-more { background-image: url(../img/news/news-more.gif); background-position: 0px 2px; } .news-content .news-buttons .news-comment { background-image: url(../img/news/news-comment.gif); background-position: 0px 2px; } .cat-news .news-row { width: 670px; padding: 20px 0 20px 0; clear: both; } .cat-news .news-row .news-col { float: left; width: 206px; display: block; } .cat-news .news-col-1 { padding-top: 0; } .cat-news .news-col-2 { padding: 0 12px; margin: 0 13px; border-right: 1px dotted #7F7F7F; border-left: 1px dotted #7F7F7F; } .cat-news .news-row .news-col .row-news .title { font-size: 17px; line-height: 24px; color: #1B3B72; display: block; padding-left: 13px; border-left: 4px solid; } .cat-news .news-row .news-col .row-news .title a { display: inline-block; color: #1B3B72; text-decoration: none; } .cat-news .news-row .news-col .row-news .title a:hover {text-decoration:none;} .cat-news .news-row .news-col .row-news .date-time { font-size: 11px; color: #4B4B4B; display: block; padding: 5px 0 5px 15px; } .cat-news .news-row .news-col .row-news .date-time a { display: inline-block; color: #4B4B4B; text-decoration: none; } .cat-news .news-row .news-col .row-news .date-time a:hover {text-decoration:none;} .cat-news .news-row .news-col .row-news .pic {margin-bottom: 8px;} .cat-news .news-row .news-col .row-news .word { font-size: 12px; line-height: 18px; padding-bottom: 10px; } .cat-news .news-row .news-col .row-news .word a { color: Black /*#1B3B71*/; display: inline-block; text-decoration: none; } .cat-news .news-row .news-col .row-news .word a:hover {text-decoration:none;} .cat-news .news-row .news-col .row-news .buttons { display: block; width: 206px; } .cat-news .news-row .news-col .row-news .buttons a { color: #1B3B72; text-decoration: none; display: block; float: left; margin-right: 25px; padding-left: 25px; line-height: 18px; background-repeat: no-repeat; } .cat-news .news-row .news-col .row-news .buttons a:hover {text-decoration: underline;} .cat-news .news-row .news-col .row-news .buttons .news-more { background-image: url(../img/news/news-more.gif); background-position: 0px 2px; } .cat-news .news-row .news-col .row-news .buttons .news-comment { background-image: url(../img/news/news-comment.gif); background-position: 0px 2px; float: right; margin-right: 0px; } ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://www.radikal.com.tr/favicon.ico Content-Transfer-Encoding: Base64 AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAMAAAAA AAAAAAAAAAAAAAAAAADu0YDMqUjWoynuuzzLozPCoEa8mVnTp3L/7Lr//9n/7uH8 4ujv9v/h/f/f/vXe/ua3lkeSaw+lcACpdACRagCHaRKpi0qMZS6/gkr/yJv//+v7 4eHo7v/f9v/U6+Pv//TQpl+jdCKmbQSpdAagehq5nk7eyIeMbjORYSGdaC/70a7/ //Tz9P7s9//2/v3l7eLMmFWncSSdYgWaZweBXg7MtXHh05izoWZ9WxWNZiKDYjHx 3MH++fjy8vj//v7///vTmFOdYhqmZxencSS0k1T/877f2KfGvYR4ZRyWfjJ7YiK/ rH/67Nry4tz/7+v/9vPnp1mSVAiucCmaZCfKqH3/9dTk4L3k4bSIfztaTQByYRiV gUf137v93sn/4tX/8ObUkzevcR3/0Iv/2Kj/4cj///L++er//+vu6rW/tnKThTmA aiPNr3i2jGGbZUT1tprrrUGlawzEj0zXqoS0lovv3d778/T//vP//tj//9T666Lv 1oamgTeSYB6VVyHRjl3jrTGhbQOXaiZqRCHnysbs1uLr3en//P//++j//tOwnVmm iDWhdRylbxiiZRXYl0zbqiqldwuBXBiihGH53tru1uL/9f/dzdTc0Mb/9tWiiUuE YAycagafZQClaQndoELVqS6ngBiOdDL/8c3/+u7/7uzz2dmcg4H/9+//+d3/7ra4 jjujbAO5fQuiagDhrUPbsUaFZAeEcjf//dfv3MH/8NqwkXp4WUL64c3/5cb//8u1 hTOiZgC5fAiQXwDVqD/RqVd+YBmtoXH//9j/8cP647GXdj6AXCbJq4L//9z/1JeL VAO3dQ6sbwGXaAbLpUezi1aukF//+9b//+L/9rivmUuRbxaIYw+jgkP/9b3/25mV WgquagewcAqXbBW8m0u0jHDVuJ3//+3g4riknE9zYACPbwCbdQV/XQmpgj3qtm+m aBqgVwCycRWHXhWwlFTVrJ3rz7799+TY2rCIgy67qTa7mxS8lxe1kzWwijy+iUDH hznnnkPOjTifdzbOs3sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=MNetOrfad.js Content-Type: application/x-javascript; charset=utf-8; name=MNetOrfad.js Content-Location: http://ad.e-kolay.net/MNetOrfad.js Content-Transfer-Encoding: Base64 77u/U3RyaW5nLnByb3RvdHlwZS50cmltID0gZnVuY3Rpb24gKCkgeyByZXR1cm4g dGhpcy5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpOyB9Ow0KU3RyaW5nLnByb3Rv dHlwZS5sdHJpbSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucmVwbGFjZSgv XlxzKy8sICcnKTsgfTsNClN0cmluZy5wcm90b3R5cGUucnRyaW0gPSBmdW5jdGlv biAoKSB7IHJldHVybiB0aGlzLnJlcGxhY2UoL1xzKyQvLCAnJyk7IH07DQpTdHJp bmcucHJvdG90eXBlLnJlcGxhY2VBbGwgPSBmdW5jdGlvbiAob2xkU3RyLCBuZXdT dHIpIHsNCiAgICB2YXIgc3RyID0gdGhpczsNCiAgICB2YXIgcmUgPSBuZXcgUmVn RXhwKG9sZFN0ciwgJ2dpbScpOw0KICAgIHN0ciA9IHN0ci5yZXBsYWNlKHJlLCBu ZXdTdHIpOw0KICAgIHJldHVybiBzdHI7DQp9Ow0KU3RyaW5nLmZvcm1hdCA9IGZ1 bmN0aW9uICgpIHsNCiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKQ0KICAg ICAgICByZXR1cm4gbnVsbDsNCiAgICB2YXIgc3RyID0gYXJndW1lbnRzWzBdOw0K ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7 DQogICAgICAgIHZhciByZSA9IG5ldyBSZWdFeHAoJ1xceycgKyAoaSAtIDEpICsg J1xcfScsICdnaW0nKTsNCiAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UocmUsIGFy Z3VtZW50c1tpXSk7DQogICAgfQ0KICAgIHJldHVybiBzdHI7DQp9Ow0KZG9jdW1l bnQud3JpdGUoJzxkaXYgaWQ9Il9fc3dmQ29udCIgc3R5bGU9InBvc2l0aW9uOmFi c29sdXRlOyB0b3A6LTUwMHB4OyBsZWZ0Oi01MDBweDsiPjwvZGl2PjxkaXYgaWQ9 Il9fc3dmQnRDb250IiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IHRvcDotNTAw cHg7IGxlZnQ6LTUwMHB4OyI+PC9kaXY+Jyk7DQp2YXIgbW4gPSBtbiB8fCB7fTsN Cm1uLmQgPSBkb2N1bWVudDsNCm1uLncgPSB3aW5kb3c7DQptbi5uID0gbmF2aWdh dG9yOw0KbW4udWEgPSBtbi5uLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpOw0KbW4u RmxvYXRpbmdCYW5uZXJJRCA9ICdtZG5GbG9hdGluZyc7DQptbi5GaW5kID0gZnVu Y3Rpb24gKGlkKSB7IHJldHVybiBtbi5kLmdldEVsZW1lbnRCeUlkID8gbW4uZC5n ZXRFbGVtZW50QnlJZChpZCkgOiBtbi5kLmFsbChpZCk7IH07DQptbi5DbG9zZUJh bm5lciA9IGZ1bmN0aW9uIChpZCkgew0KICAgIHZhciBlbG0gPSBtbi5GaW5kKGlk KTsNCiAgICBpZiAoZWxtICE9IG51bGwpIGVsbS5zdHlsZS52aXNpYmlsaXR5ID0g J2hpZGRlbic7DQp9Ow0KbW4uRmxhc2hTdXBwb3J0ID0gZnVuY3Rpb24gKCkgew0K ICAgIHZhciBmbGFzaFN1cHBvcnQgPSAobmF2aWdhdG9yLm1pbWVUeXBlcyAmJiBu YXZpZ2F0b3IubWltZVR5cGVzWydhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFz aCddKSA/IG5hdmlnYXRvci5taW1lVHlwZXNbJ2FwcGxpY2F0aW9uL3gtc2hvY2t3 YXZlLWZsYXNoJ10uZW5hYmxlZFBsdWdpbiA/IHRydWUgOiBmYWxzZSA6IGZhbHNl Ow0KICAgIGlmICghZmxhc2hTdXBwb3J0ICYmIG1uLkJyb3dzZXIuSXNJRSkgeyBm bGFzaFN1cHBvcnQgPSAobmV3IEFjdGl2ZVhPYmplY3QoJ1Nob2Nrd2F2ZUZsYXNo LlNob2Nrd2F2ZUZsYXNoLjcnKSkgPyB0cnVlIDogZmFsc2U7IH0NCiAgICByZXR1 cm4gZmxhc2hTdXBwb3J0Ow0KfTsNCm1uLkJyb3dzZXIgPSBuZXcgZnVuY3Rpb24g KCkgew0KICAgIHZhciBicklEID0gMTsNCiAgICB0aGlzLnZEZXRlciA9IHRydWU7 IHRoaXMuSXNJRSA9IGZhbHNlOyB0aGlzLklzRkYgPSBmYWxzZTsgdGhpcy5Jc0No cm9tZSA9IGZhbHNlOyB0aGlzLklzU2FmYXJpID0gZmFsc2U7IHRoaXMuSXNPcGVy YSA9IGZhbHNlOyB0aGlzLklzV2Via2l0ID0gZmFsc2U7IHRoaXMuSXNPdGhlciA9 IGZhbHNlOw0KICAgIC8vIFVzZXJhZ2VudCBSZWdFeHANCiAgICB2YXIgcm16ID0g LyhmaXJlZm94KVtcL1xzXShcZCtcLlxkKy5cZCspL2dpbTsNCiAgICB2YXIgcm16 NSA9IC8oZmlyZWZveClbXC9cc10oXGQrXC5cZCkvZ2ltOw0KICAgIHZhciByd2Ig PSAvKHdlYmtpdClbIFwvXShbXHcuXSspL2dpbTsNCiAgICB2YXIgcmNoID0gLyhj aHJvbWUpWyBcL10oW1x3Ll0rKS9naW07DQogICAgdmFyIHJvcCA9IC8ob3BlcmEp KD86Lip2ZXJzaW9uKT9bIFwvXShbXHcuXSspL2dpbTsNCiAgICB2YXIgcmllID0g Lyhtc2llKSAoW1x3Ll0rKS9naW07DQogICAgdmFyIHJzYSA9IC8odmVyc2lvbilb IFwvXShbXHcuXSspL2dpbTsNCiAgICB2YXIgbWF0Y2ggPSByY2guZXhlYyhtbi51 YSkgfHwgcm9wLmV4ZWMobW4udWEpIHx8IHJpZS5leGVjKG1uLnVhKSB8fCBtbi51 YS5pbmRleE9mKCdjb21wYXRpYmxlJykgPCAwICYmIChybXouZXhlYyhtbi51YSkg fHwgcm16NS5leGVjKG1uLnVhKSkgfHwgbW4udWEuaW5kZXhPZignc2FmYXJpJykg PCAwICYmIHJ3Yi5leGVjKG1uLnVhKSB8fCBbXTsNCiAgICBpZiAobWF0Y2gubGVu Z3RoID09IDAgJiYgbW4udWEuaW5kZXhPZignc2FmYXJpJykgPiAwKSB7IC8qIGZv ciBzYWZhcmkqLw0KICAgICAgICBtYXRjaCA9IHJzYS5leGVjKG1uLnVhKSB8fCBb XTsNCiAgICAgICAgbWF0Y2hbMV0gPSAnc2FmYXJpJzsNCiAgICB9DQogICAgdmFy IHZlcnNpb24gPSBtYXRjaFsyXSA/IG1hdGNoWzJdLnNwbGl0KCcuJylbMF0gOiAn MCc7DQogICAgc3dpdGNoIChtYXRjaFsxXSkgew0KICAgICAgICBjYXNlICdtc2ll JzogdGhpcy5Jc0lFID0gdHJ1ZTsgYnJJRCA9IDI7IGJyZWFrOw0KICAgICAgICBj YXNlICdmaXJlZm94JzogdGhpcy5Jc0ZGID0gdHJ1ZTsgYnJJRCA9IDM7IGJyZWFr Ow0KICAgICAgICBjYXNlICdjaHJvbWUnOiB0aGlzLklzQ2hyb21lID0gdHJ1ZTsg YnJJRCA9IDQ7IGJyZWFrOw0KICAgICAgICBjYXNlICdzYWZhcmknOiB0aGlzLklz U2FmYXJpID0gdHJ1ZTsgYnJJRCA9IDU7IGJyZWFrOw0KICAgICAgICBjYXNlICdv cGVyYSc6IHRoaXMuSXNPcGVyYSA9IHRydWU7IGJySUQgPSA2OyBicmVhazsNCiAg ICAgICAgY2FzZSAnd2Via2l0JzogdGhpcy5Jc1dlYmtpdCA9IHRydWU7IGJyZWFr Ow0KICAgICAgICBkZWZhdWx0OiB0aGlzLklzT3RoZXIgPSB0cnVlOyB0aGlzLl92 RGV0ZXIgPSBmYWxzZTsgYnJlYWs7DQogICAgfQ0KICAgIHJldHVybiB7IE5hbWU6 IG1hdGNoWzFdIHx8ICcnLCBGdWxsVmVyc2lvbjogbWF0Y2hbMl0gfHwgJzAnLCBW ZXJzaW9uOiB2ZXJzaW9uLCBJc0lFOiB0aGlzLklzSUUsIElzRkY6IHRoaXMuSXNG RiwgSXNDaHJvbWU6IHRoaXMuSXNDaHJvbWUsIElzU2FmYXJpOiB0aGlzLklzU2Fm YXJpLCBJc09wZXJhOiB0aGlzLklzT3BlcmEsIElzV2Via2l0OiB0aGlzLklzV2Vi a2l0LCBJc090aGVyOiB0aGlzLklzT3RoZXIsDQogICAgICAgIFZlcnNpb25EZXRl cm1pbmVkOiB0aGlzLnZEZXRlciwgSUQ6IGJySUQNCiAgICB9Ow0KfTsNCnZhciBp c09ScSA9IHRydWU7DQptbi5pc09yZmFkID0gdHJ1ZTsNCm1uLlJ1bk1vZGUgPSBm dW5jdGlvbigpIHsNCiAgICBpZiAobW4uQnJvd3Nlci5Jc0ZGIHx8IG1uLkJyb3dz ZXIuSXNDaHJvbWUgfHwgbW4uQnJvd3Nlci5Jc1NhZmFyaSkgew0KICAgICAgICBp c09ScSA9IGZhbHNlOw0KICAgICAgICBtbi5pc09yZmFkID0gZmFsc2U7DQogICAg fQ0KICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZS5pbmRleE9mKCJ0aXBlZXoiKSA+ IC0xKSB7DQogICAgICAgIGlzT1JxID0gdHJ1ZTsNCiAgICAgICAgbW4uaXNPcmZh ZCA9IHRydWU7DQogICAgfQ0KfTsNCm1uLlJ1bk1vZGUoKTsNCg0KdmFyIGRfID0g ZG9jdW1lbnQ7DQp2YXIgbl8gPSBuYXZpZ2F0b3I7DQp2YXIgdWFfID0gbl8udXNl ckFnZW50LnRvTG93ZXJDYXNlKCk7DQp2YXIgaHR0cCA9ICgoJ2h0dHBzOicgPT0g ZF8ubG9jYXRpb24ucHJvdG9jb2wpID8gJ2h0dHBzOi8vJyA6ICdodHRwOi8vJyk7 DQp2YXIgX2J0c3JjID0gaHR0cCArICdhZC5lLWtvbGF5Lm5ldC9idC5qcz92PTIu MCc7DQp2YXIgX19fc2NyaXB0ID0gbnVsbDsNCnZhciBVQXJyID0gbmV3IEFycmF5 KCk7IHZhciBEQXJyID0gbmV3IEFycmF5KCk7IHZhciBHQXJyID0gbmV3IEFycmF5 KCk7IHZhciBfZnJPYmosIFNydkNvZGUgPSBudWxsLCBtbmV0XyA9IG51bGwsIG1u ZXRfXyA9IG51bGw7DQp2YXIgcm5kX18gPSBTdHJpbmcoTWF0aC5yYW5kb20oKSku c3Vic3RyKDIsIDE1KTsgdmFyIF9UYXJnZXRDYW1wYWlnbiA9ICIiOw0KdmFyIEJV cmwgPSAiaHR0cDovL2FkLmUta29sYXkubmV0IjsgdmFyIFBhZ2VUYWc7DQp2YXIg SXNJRSA9IChkXy5hbGwpID8gdHJ1ZSA6IGZhbHNlOw0KZnVuY3Rpb24gTU5TUih1 cmwpIHsNCiAgICBybmRfXyA9IFN0cmluZyhNYXRoLnJhbmRvbSgpKS5zdWJzdHIo MiwgMTUpOw0KICAgIHRoaXMudXJsXyA9IHVybDsNCiAgICBpZiAodXJsLmluZGV4 T2YoIj8iKSA+IDApDQogICAgICAgIHRoaXMuY2FjaGUgPSAiJnJuZD0iICsgcm5k X187DQogICAgZWxzZQ0KICAgICAgICB0aGlzLmNhY2hlID0gIj9ybmQ9IiArIHJu ZF9fOw0KICAgIHRoaXMuYm9keUxvYyA9IGRfLmJvZHk7DQogICAgdGhpcy5zY3Jp cHRJZCA9ICdzY3JpcHRJZCcgKyBNTlNSLnNDKys7DQp9DQoNCmZ1bmN0aW9uIGZx b2JqKGluaXQpIHsNCiAgICBpZiAoaW5pdCAhPSAiIiAmJiB0eXBlb2YgKGluaXQp ICE9IHVuZGVmaW5lZCAmJiBpbml0ICE9IG51bGwpDQogICAgeyB0aGlzLmNpaWQg PSBpbml0LnNwbGl0KCJ8IilbMF07IHRoaXMuZnF0eXBlID0gaW5pdC5zcGxpdCgi fCIpWzFdOyB0aGlzLmZxdmFsdWUgPSBpbml0LnNwbGl0KCJ8IilbMl07IHRoaXMu ZnFtYXh2YWx1ZSA9IGluaXQuc3BsaXQoInwiKVszXTsgdGhpcy5mcWRhdGUgPSBp bml0LnNwbGl0KCJ8IilbNF07IH0NCiAgICBlbHNlDQogICAgeyB0aGlzLmNpaWQg PSAwOyB0aGlzLmZxdHlwZSA9IDA7IHRoaXMuZnF2YWx1ZSA9IDA7IHRoaXMuZnFt YXh2YWx1ZSA9IDA7IHRoaXMuZnFkYXRlID0gbnVsbDsgfQ0KfQ0KDQpmcW9iai5w cm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmNp aWQgKyAifCIgKyB0aGlzLmZxdHlwZSArICJ8IiArIHRoaXMuZnF2YWx1ZSArICJ8 IiArIHRoaXMuZnFtYXh2YWx1ZSArICJ8IiArIHRoaXMuZnFkYXRlOyB9Ow0KDQpN TlNSLnByb3RvdHlwZS5VcGRhdGVGcUxpc3QgPSBmdW5jdGlvbiAoZikgew0KICAg IHZhciBpc2MgPSBmYWxzZTsNCiAgICB2YXIgY25hbWUgPSBmLmZxdHlwZSA9PSAx ID8gImZxc2Vzc2lvbiIgOiAiZnFjb29raWUiOw0KICAgIHZhciBmcWNvb2tpZSA9 IG5ldyBTdHJpbmcoZ2V0Q29va2llKGNuYW1lKSk7DQogICAgdmFyIGZxYXJyID0g ZnFjb29raWUuc3BsaXQoIiwiKTsNCiAgICBmb3IgKHZhciBpID0gMDsgZnFjb29r aWUgIT0gIiIgJiYgaSA8IGZxYXJyLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIHZh ciBvID0gbmV3IGZxb2JqKGZxYXJyW2ldKTsNCiAgICAgICAgaWYgKG8uY2lpZCA9 PSBmLmNpaWQpDQogICAgICAgIHsgby5mcXZhbHVlKys7IG8uZnFtYXh2YWx1ZSA9 IGYuZnFtYXh2YWx1ZTsgZnFhcnIucHVzaChvLnRvU3RyaW5nKCkpOyBpc2MgPSB0 cnVlOyB9DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIGZxYXJyLnB1c2goby50 b1N0cmluZygpKTsNCiAgICB9DQoNCiAgICBpZiAoIWlzYykNCiAgICAgICAgZnFh cnIucHVzaChmLnRvU3RyaW5nKCkpOw0KICAgIHNldENvb2tpZShjbmFtZSwgZnFh cnIpOw0KfTsNCk1OU1IucHJvdG90eXBlLkdldEZxTGlzdCA9IGZ1bmN0aW9uICgp IHsNCiAgICB2YXIgcmV0dXJuc3RyID0gIiI7DQogICAgaWYgKGdldENvb2tpZSgi ZnFzZXNzaW9uIikgIT0gbnVsbCkgew0KICAgICAgICB2YXIgZnFjb29raWUgPSBu ZXcgU3RyaW5nKGdldENvb2tpZSgiZnFzZXNzaW9uIikpOw0KICAgICAgICB2YXIg ZnFhcnIgPSBmcWNvb2tpZS5zcGxpdCgiLCIpOw0KICAgICAgICBmb3IgKHZhciBp ID0gMDsgaSA8IGZxYXJyLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICB2YXIg byA9IG5ldyBmcW9iaihmcWFycltpXSk7DQogICAgICAgICAgICBpZiAoby5jaWlk ICE9IDAgJiYgby5mcXR5cGUgPT0gMSAmJiAocGFyc2VJbnQoby5mcXZhbHVlKSA+ PSBwYXJzZUludChvLmZxbWF4dmFsdWUpIC0gMSkpDQogICAgICAgICAgICAgICAg cmV0dXJuc3RyICs9IHJldHVybnN0ciAhPSAiIiA/ICIsIiArIG8uY2lpZCA6IG8u Y2lpZDsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gcmV0dXJuc3RyOw0K fTsNCg0KTU5TUi5zQyA9IDE7DQpNTlNSLnByb3RvdHlwZS5CU1QgPSBmdW5jdGlv biAoKSB7DQogICAgdGhpcy5zT2JqID0gZF8uY3JlYXRlRWxlbWVudCgiaWZyYW1l Iik7DQogICAgdGhpcy5zT2JqLmZyYW1lQm9yZGVyID0gMDsgdGhpcy5zT2JqLmxl ZnQgPSAtMTAwOyB0aGlzLnNPYmoudG9wID0gLTEwMDsgdGhpcy5zT2JqLndpZHRo ID0gMTsgdGhpcy5zT2JqLmhlaWdodCA9IDE7DQogICAgdGhpcy5zT2JqLnNldEF0 dHJpYnV0ZSgibmFtZSIsIHRoaXMuc2NyaXB0SWQpOw0KICAgIHRoaXMuc09iai5z dHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7DQogICAgdGhpcy5mcWxpc3QgPSB0 aGlzLkdldEZxTGlzdCgpOw0KICAgIHZhciBzdHJ1ID0gImphdmFzY3JpcHQ6ZG9j dW1lbnQud3JpdGUoJzxzY3JpcHQgc3JjPSIgKyBCVXJsICsgIi9vcmZhZC5hMj90 YXJnZXQ9IiArIHRoaXMudXJsXyArICImZnFsaXN0PSIgKyB0aGlzLmZxbGlzdCAr ICImcm5kPSIgKyBybmRfXyArICI+PFwvc2NyaXB0PicpOyI7DQogICAgc3RydSAr PSAiZG9jdW1lbnQuY2xvc2UoKTsiOw0KICAgIHRoaXMuc09iai5zZXRBdHRyaWJ1 dGUoInNyYyIsIHN0cnUpOw0KICAgIHRoaXMuc09iai5zZXRBdHRyaWJ1dGUoImlk IiwgdGhpcy5zY3JpcHRJZCk7DQp9Ow0KTU5TUi5wcm90b3R5cGUuUlNUID0gZnVu Y3Rpb24gKCkgeyB0aGlzLmJvZHlMb2MucmVtb3ZlQ2hpbGQodGhpcy5zT2JqKTsg fTsNCk1OU1IucHJvdG90eXBlLkFTVCA9IGZ1bmN0aW9uICgpIHsgX2ZyT2JqID0g dGhpcy5ib2R5TG9jLmFwcGVuZENoaWxkKHRoaXMuc09iaik7IH07DQoNCnZhciBp ZXZlcnNpb247DQppZiAoL01TSUUgKFxkK1wuXGQrKTsvLnRlc3Qobl8udXNlckFn ZW50KSkgew0KICAgIGlldmVyc2lvbiA9IG5ldyBOdW1iZXIoUmVnRXhwLiQxKTsN Cn0NCmZ1bmN0aW9uIE1OZXRDYWxsQmFja0Z1bmN0aW9uKHJldHVybnN0cmluZykg ew0KICAgIGlmIChyZXR1cm5zdHJpbmcgIT0gbnVsbCAmJiByZXR1cm5zdHJpbmcg IT0gIiIpIHsNCiAgICAgICAgU3J2Q29kZSA9IHJldHVybnN0cmluZy5yZXBsYWNl KCdbdGltZXN0YW1wXScsIERvbFJhbmRvbSgpKTsNCiAgICAgICAgaWYgKElzSUUg JiYgaWV2ZXJzaW9uID09IDcpIHsgbW5ldF8uc09iai5zcmMgPSAnIyc7IH0NCiAg ICAgICAgbW5ldF8uUlNUKCk7DQogICAgfQ0KfQ0KZnVuY3Rpb24gQXBwbHlHZW8o KSB7IG1uZXRfXyA9IG5ldyBNTlNSKFVybCk7IG1uZXRfXy5CU1QoKTsgbW5ldF9f LkFTVCgpOyB9DQpmdW5jdGlvbiBBcHBseUZ1bmN0aW9uKGRuLCBycykgeyB2YXIg cnNwID0gZXZhbChycyk7IGlmICh0eXBlb2YgKHJzcCkgIT0gInVuZGVmaW5lZCIp IHsgZF8uZ2V0RWxlbWVudEJ5SWQoZG4pLmlubmVySFRNTCA9IHJzcDsgfSB9DQpm dW5jdGlvbiBBcHBseUh0bWwoZG4sIHJzKSB7IGRfLmdldEVsZW1lbnRCeUlkKGRu KS5pbm5lckhUTUwgPSByczsgfQ0KZnVuY3Rpb24gQXBwbHlTY3JpcHQoKSB7IC8q Ki8gfQ0KDQpmdW5jdGlvbiBNTmV0QmFubmVyKGRpdiwgZ3BhcmFtLCBpc0FnYWlu KSB7DQogICAgaWYgKGdwYXJhbSAhPSBudWxsICYmIGdwYXJhbSAhPSAidW5kZWZp bmVkIiAmJiBpc09ScSkgLy8gZ2VvDQogICAgew0KICAgICAgICB2YXIgcyA9IGRf LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOw0KICAgICAgICBzLnNldEF0dHJpYnV0 ZSgndHlwZScsICd0ZXh0L2phdmFzY3JpcHQnKTsNCiAgICAgICAgdmFyIHJzID0g J2RvY3VtZW50LndyaXRlKFwnPHNjclwnK1wnaXB0IGxhbmd1YWdlPUphdmFTY3Jp cHQgc3JjPSInICsgQlVybCArICcvZ2V0YWQuYTI/dGFyZ2V0PScgKyBkaXYgKyAn JicgKyBncGFyYW0gKyAnJkRPTF9jaGFjaGU9JyArIHJuZF9fICsgJyI+PFwvc2Ny aVwnICsgXCdwdD5cJyk7JzsNCiAgICAgICAgcy50ZXh0ID0gcnM7DQoNCiAgICAg ICAgaXNPUnEgPSBmYWxzZTsNCiAgICAgICAgbW4uaXNPcmZhZCA9IGZhbHNlOw0K ICAgICAgICBkXy5nZXRFbGVtZW50QnlJZChkaXYpLmFwcGVuZENoaWxkKHMpOw0K ICAgICAgICBpc09ScSA9IHRydWU7DQogICAgICAgIG1uLmlzT3JmYWQgPSB0cnVl Ow0KICAgICAgICBHQXJyW0dBcnIubGVuZ3RoXSA9IGdwYXJhbTsNCiAgICB9DQog ICAgZWxzZSB7DQogICAgICAgIGlmICghaXNPUnEpIHsNCiAgICAgICAgICAgIGRf LndyaXRlKCc8c2NyJyArICdpcHQgbGFuZ3VhZ2U9SmF2YVNjcmlwdCBzcmM9JyAr IEJVcmwgKyAnL2dldGFkLmEyP3RhcmdldD0nICsgZGl2ICsgJyZET0xfY2hhY2hl PScgKyBybmRfXyArICc+PFwvc2NyaScgKyAncHQ+Jyk7DQogICAgICAgIH0NCiAg ICAgICAgZWxzZSB7DQogICAgICAgICAgICBpZiAoU3J2Q29kZSAhPSBudWxsKSB7 DQogICAgICAgICAgICAgICAgdmFyIGJhbmNvZGVzID0gU3J2Q29kZS5zcGxpdChT dHJpbmcuZnJvbUNoYXJDb2RlKDE2MykpOw0KICAgICAgICAgICAgICAgIGZvciAo dmFyIGkgPSAwOyBpIDwgYmFuY29kZXMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAg ICAgICAgICAgICAgdmFyIGJhbmNvZGUgPSBiYW5jb2Rlc1tpXS5zcGxpdCgifCIs IDEyKTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGNhbXBhaWduSUQgPSBiYW5j b2RlWzZdOw0KICAgICAgICAgICAgICAgICAgICB2YXIgcG9ydGFsSUQgPSBiYW5j b2RlWzEwXTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGlzQ3BhID0gYmFuY29k ZVsxMV07DQogICAgICAgICAgICAgICAgICAgIGlmIChiYW5jb2RlWzNdID09IGRp dikgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRfLmdldEVsZW1lbnRC eUlkKGRpdikgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZhciBjb250ZW50dHlwZSA9IGJhbmNvZGVbMF0uc3BsaXQoIiMjIyIsIDIpOw0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0bXAgPSBfVGFyZ2V0Q2Ft cGFpZ24gIT0gIiIgPyAiLCIgKyBiYW5jb2RlWzJdICsgIjsiICsgYmFuY29kZVs0 XSA6IGJhbmNvZGVbMl0gKyAiOyIgKyBiYW5jb2RlWzRdOyAvL0JUDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgX1RhcmdldENhbXBhaWduID0gX1RhcmdldENh bXBhaWduICsgdG1wOyAvL0JUDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg c3dpdGNoIChjb250ZW50dHlwZVsxXSkgew0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6IEFwcGx5RnVuY3Rpb24oZGl2LCBj b250ZW50dHlwZVswXSk7IE1OZXRWaWV3ZWQoYmFuY29kZVs0XSwgYmFuY29kZVsy XSk7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl ICJnZW8iOiBBcHBseUdlbyhkaXYsIGNvbnRlbnR0eXBlWzBdKTsgTU5ldFZpZXdl ZChiYW5jb2RlWzRdLCBiYW5jb2RlWzJdKTsgYnJlYWs7DQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhc2UgImh0bWwiOiBBcHBseUh0bWwoZGl2LCBj b250ZW50dHlwZVswXSk7IE1OZXRWaWV3ZWQoYmFuY29kZVs0XSwgYmFuY29kZVsy XSk7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl ICJzY3JpcHQiOiBBcHBseVNjcmlwdChkaXYsIGNvbnRlbnR0eXBlWzBdKTsgTU5l dFZpZXdlZChiYW5jb2RlWzRdLCBiYW5jb2RlWzJdKTsgYnJlYWs7DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChpc0NwYSA9PSAiMSIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTU5ldF9DcGFWaWV3ZWQoY2FtcGFpZ25JRCwgcG9ydGFsSUQpOw0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIC8vZnENCiAgICAgICAg ICAgICAgICAgICAgICAgIHZhciBqID0gbmV3IGZxb2JqKCk7IGoudGlkID0gYmFu Y29kZVs0XTsgai5jaWlkID0gYmFuY29kZVsyXTsNCiAgICAgICAgICAgICAgICAg ICAgICAgIGouZnF0eXBlID0gYmFuY29kZVs3XTsgai5mcW1heHZhbHVlID0gYmFu Y29kZVs4XTsgai5mcWRhdGUgPSBuZXcgRGF0ZShiYW5jb2RlWzldKTsNCiAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChiYW5jb2RlWzddID09IDEgfHwgYmFuY29k ZVs3XSA9PSA0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgeyBtbmV0Xy5VcGRh dGVGcUxpc3Qoaik7IH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoaXNBZ2FpbiAhPSAiQWdhaW4i KSB7DQogICAgICAgICAgICAgICAgICAgIERBcnJbREFyci5sZW5ndGhdID0gZGl2 OyBHQXJyW0dBcnIubGVuZ3RoXSA9IGdwYXJhbTsNCiAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAg ICAgICBzZXRUaW1lb3V0KCJNTmV0QmFubmVyKCciICsgZGl2ICsgIicsJyIgKyBn cGFyYW0gKyAiJywnIiArIGlzQWdhaW4gKyAiJyk7IiwgMjUwKTsNCiAgICAgICAg ICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KdmFyIF9fc2VudExpc3QgPSAi IjsNCmZ1bmN0aW9uIE1OZXRWaWV3ZWQodGlkLCBjaWlkKSB7DQogICAgaWYgKF9f c2VudExpc3QuaW5kZXhPZigiLSIgKyB0aWQgKyAiLSIpID09IC0xKSB7DQogICAg ICAgIF9fc2VudExpc3QgPSBfX3NlbnRMaXN0ICsgIiwtIiArIHRpZCArICItIjsN CiAgICAgICAgdmFyIHJuZCA9IERvbFJhbmRvbSgpOw0KICAgICAgICB2YXIgc3Jj ID0gQlVybCArICIvaW1wcmVzc2lvbi5hMj90aWQ9IiArIHRpZCArICImY2lpZD0i ICsgY2lpZCArICImcm5kPSIgKyBybmQ7DQogICAgICAgIHZhciBpbWcgPSBuZXcg SW1hZ2UoMSwgMSk7DQogICAgICAgIGltZy5zcmMgPSBzcmM7DQogICAgICAgIGlt Zy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IF9ib3MoKTsgfTsNCiAgICB9DQp9DQoN CmZ1bmN0aW9uIE1OZXRfQ3BhVmlld2VkKGNpZCwgcGlkKSB7DQogICAgdmFyIHJu ZCA9IERvbFJhbmRvbSgpOw0KICAgIHZhciBzcmMgPSBCVXJsICsgIi9jcGEuYTI/ YT12JnBpZD0iICsgcGlkICsgIiZjaWQ9IiArIGNpZCArICImcm5kPSIgKyBybmQ7 DQogICAgdmFyIGltZyA9IG5ldyBJbWFnZSgxLCAxKTsNCiAgICBpbWcuc3JjID0g c3JjOw0KICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IF9ib3MoKTsgfTsN Cn0NCg0KZnVuY3Rpb24gTU5ldFJlcSh1cmwpIHsNCiAgICBpZiAoaXNPUnEpIHsN CiAgICAgICAgUGFnZVRhZyA9IHVybDsNCiAgICAgICAgR2V0QmFubmVySHRtbENv ZGUodXJsKTsNCiAgICB9DQp9DQpmdW5jdGlvbiBNTmV0QmFubmVyU2hvdygpIHsg cmV0dXJuOyB9DQpmdW5jdGlvbiBHZXRCYW5uZXJIdG1sQ29kZSh1cmwpIHsgbW5l dF8gPSBuZXcgTU5TUih1cmwpOyBtbmV0Xy5CU1QoKTsgbW5ldF8uQVNUKCk7IH0N CmZ1bmN0aW9uIEdldEJhbm5lcnNBZ2FpbigpIHsNCiAgICBfX3NlbnRMaXN0ID0g IiI7DQogICAgU3J2Q29kZSA9IG51bGw7DQogICAgcm5kX18gPSBTdHJpbmcoTWF0 aC5yYW5kb20oKSkuc3Vic3RyKDIsIDE1KTsNCiAgICBtbmV0Xy5zT2JqID0gZF8u Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7DQogICAgbW5ldF8uc09iai5mcmFtZUJv cmRlciA9IDA7IG1uZXRfLnNPYmoubGVmdCA9IC0xMDA7IG1uZXRfLnNPYmoudG9w ID0gLTEwMDsgbW5ldF8uc09iai53aWR0aCA9IDE7IG1uZXRfLnNPYmouaGVpZ2h0 ID0gMTsNCiAgICBtbmV0Xy5zT2JqLnNldEF0dHJpYnV0ZSgibmFtZSIsIHJuZF9f KTsNCiAgICB2YXIgZnFsaXN0ID0gbW5ldF8uR2V0RnFMaXN0KCk7DQogICAgdmFy IHN0cnUgPSAiamF2YXNjcmlwdDpkb2N1bWVudC53cml0ZSgnPHNjcmlwdCBzcmM9 IiArIEJVcmwgKyAiL29yZmFkLmEyP3RhcmdldD0iICsgUGFnZVRhZyArICImZnFs aXN0PSIgKyBmcWxpc3QgKyAiJnJuZD0iICsgcm5kX18gKyAiPjxcL3NjcmlwdD4n KTsiOw0KICAgIHN0cnUgKz0gImRvY3VtZW50LmNsb3NlKCk7IjsNCiAgICBtbmV0 Xy5zT2JqLnNldEF0dHJpYnV0ZSgic3JjIiwgc3RydSk7DQogICAgbW5ldF8uc09i ai5zZXRBdHRyaWJ1dGUoImlkIiwgcm5kX18pOw0KICAgIGRfLmJvZHkuYXBwZW5k Q2hpbGQobW5ldF8uc09iaik7DQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBEQXJy Lmxlbmd0aDsgaSsrKSB7DQogICAgICAgIGV2YWwoIk1OZXRCYW5uZXIoJyIgKyBE QXJyW2ldICsgIicsJyIgKyBHQXJyW2ldICsgIicsJ0FnYWluJykiKTsNCiAgICB9 DQp9DQovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKg0KLy9BZC5Kcw0KDQp2YXIgYmxuSXNOUyA9IChuXy5hcHBOYW1lLmlu ZGV4T2YoJ05ldHNjYXBlJykgPj0gMCAmJiBwYXJzZUZsb2F0KG5fLmFwcFZlcnNp b24pID49IDQpID8gdHJ1ZSA6IGZhbHNlOw0KdmFyIGJsbklzSUUgPSAoZF8uYWxs KSA/IHRydWUgOiBmYWxzZTsNCnZhciBibG5Jc01hYyA9IChuXy5hcHBWZXJzaW9u LmluZGV4T2YoJ01hYycpICE9IC0xKSA/IHRydWUgOiBmYWxzZTsNCnZhciBpZF9j b3VudGVyID0gMDsNCmZ1bmN0aW9uIERPTEFEX3BvcHVwKHN0clVybCwgaW50V2lk dGgsIGludEhlaWdodCwgaW50TGVmdCwgaW50VG9wKSB7IERPTExjbF9wb3BXaW5k b3coc3RyVXJsLCBpbnRXaWR0aCwgaW50SGVpZ2h0LCBpbnRMZWZ0LCBpbnRUb3As IHRydWUpOyByZXR1cm4gIiI7IH0NCmZ1bmN0aW9uIERPTEFEX3BvcHVuZGVyKHN0 clVybCwgaW50V2lkdGgsIGludEhlaWdodCwgaW50TGVmdCwgaW50VG9wKSB7IERP TExjbF9wb3BXaW5kb3coc3RyVXJsLCBpbnRXaWR0aCwgaW50SGVpZ2h0LCBpbnRM ZWZ0LCBpbnRUb3AsIGZhbHNlKTsgcmV0dXJuICIiOyB9DQpmdW5jdGlvbiBET0xM Y2xfcG9wV2luZG93KHN0clVybCwgaW50V2lkdGgsIGludEhlaWdodCwgaW50TGVm dCwgaW50VG9wLCBibG5Gb2N1cykgew0KICAgIHZhciBsY2xJbnRMZWZ0ID0gKGlu dExlZnQgPT0gbnVsbCB8fCBpbnRMZWZ0ID09IDApID8gKHNjcmVlbi53aWR0aCAt IGludFdpZHRoKSAvIDIgOiBpbnRMZWZ0Ow0KICAgIHZhciBsY2xJbnRUb3AgPSAo aW50VG9wID09IG51bGwgfHwgaW50VG9wID09IDApID8gKHNjcmVlbi5oZWlnaHQg LSBpbnRIZWlnaHQpIC8gMiA6IGludFRvcDsNCiAgICB2YXIgbGNsT2JqV2luID0g d2luZG93Lm9wZW4oc3RyVXJsLCAnZWtvbGF5JywgJ3Rvb2xiYXI9MCxzdGF0dXM9 MCxtZW51YmFyPTAscmVzaXphYmxlPTAsc2Nyb2xsYmFycz0wLHdpZHRoPScgKyBp bnRXaWR0aCArICdweCxoZWlnaHQ9JyArIGludEhlaWdodCArICdweCxsZWZ0PScg KyBsY2xJbnRMZWZ0ICsgJyx0b3A9JyArIGxjbEludFRvcCk7DQogICAgaWYgKCFi bG5Gb2N1cykgew0KICAgICAgICBsY2xPYmpXaW4uYmx1cigpOw0KICAgICAgICBz ZWxmLmZvY3VzKCk7DQogICAgfQ0KICAgIHJldHVybiAnJzsNCn0NCmZ1bmN0aW9u IERPTEFEX2ZsYXNoKHN0clVybCwgaW50V2lkdGgsIGludEhlaWdodCwgaW50VG9w LCBpbnRMZWZ0LCBzdHJNb2RlKSB7DQoNCiAgICB2YXIgbGNsU3RyTW9kZSA9IChz dHJNb2RlID09IG51bGwpID8gInRyYW5zcGFyZW50IiA6IHN0ck1vZGU7DQogICAg dmFyIHRtcCA9ICcnOw0KICAgIGlmIChpbnRUb3AgPT0gbnVsbCkgew0KICAgICAg ICB0bXAgKz0gKCc8ZGl2IHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDon ICsgaW50V2lkdGggKyAncHg7aGVpZ2h0OicgKyBpbnRIZWlnaHQgKyAncHg7ei1p bmRleDo5OyI+PG9iamVjdCBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7bGVmdDow cHg7dG9wOjBweDt6LWluZGV4Ojk7IiBib3JkZXI9IjAiIGhlaWdodD0iJyArIGlu dEhlaWdodCArICciIHdpZHRoPSInICsgaW50V2lkdGggKyAnIiBhbGlnbj0idG9w IiBpZD0iRmxhc2hfJyArIHN0clVybCArICciJyArDQoJCScgY29kZUJhc2U9Imh0 dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMv Zmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj01LDAsMCwwIicgKw0KCQknIGhlaWdo dD0iJyArIGludEhlaWdodCArICciIHdpZHRoPSInICsgaW50V2lkdGggKyAnIiBj bGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAw MDAiID4nICsNCgkJJzxwYXJhbSBuYW1lPSJtb3ZpZSIgdmFsdWU9IicgKyBzdHJV cmwgKyAnIiAvPicgKw0KCQknPHBhcmFtIG5hbWU9ImFsbG93c2NyaXB0YWNjZXNz IiB2YWx1ZT0iYWx3YXlzIiAvPicgKw0KCQknPHBhcmFtIG5hbWU9InF1YWxpdHki IHZhbHVlPSJoaWdoIiAvPicgKw0KCQknPHBhcmFtIG5hbWU9Indtb2RlIiB2YWx1 ZT0iJyArIGxjbFN0ck1vZGUgKyAnIiAvPicgKw0KCQknPGVtYmVkIElEPSJlbWJl ZEZsYXNoXycgKyBzdHJVcmwgKyAnIiAnICsNCgkJJyBzcmM9IicgKyBzdHJVcmwg KyAnIicgKw0KCQknIHF1YWxpdHk9ImhpZ2giIHdtb2RlPSInICsgbGNsU3RyTW9k ZSArICciJyArDQoJCScgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyB6LWluZGV4 Ojk7IicgKw0KCQknIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEu Y29tL3Nob2Nrd2F2ZS9kb3dubG9hZC9pbmRleC5jZ2k/UDFfUHJvZF9WZXJzaW9u PVNob2Nrd2F2ZUZsYXNoIicgKw0KCQknIGFsbG93c2NyaXB0YWNjZXNzPSJhbHdh eXMiJyArDQoJCScgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gi IHdpZHRoPSInICsgaW50V2lkdGggKyAnIiBoZWlnaHQ9IicgKyBpbnRIZWlnaHQg KyAnIj48L2VtYmVkPicgKw0KCQknPC9vYmplY3Q+PC9kaXY+Jyk7DQogICAgfQ0K ICAgIGlmIChpc09ScSkNCiAgICAgICAgcmV0dXJuIHRtcDsNCiAgICBlbHNlDQog ICAgICAgIGRfLndyaXRlKHRtcCk7DQp9DQoNCm1uLkZsYXNoID0gZnVuY3Rpb24g KHN0clVybCwgaW50V2lkdGgsIGludEhlaWdodCwgc3RyTm9GbGFzaCwgc3RyQ2xp Y2ssIHN0ckRlc3RVcmwsIHN0ck1vZGUpIHsNCiAgICB2YXIgdG1wID0gJyc7DQog ICAgdG1wID0gJzxkaXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOicg KyBpbnRXaWR0aCArICdweDtoZWlnaHQ6JyArIGludEhlaWdodCArICdweDt6LWlu ZGV4OjkiPic7DQogICAgaWYgKG1uLkZsYXNoU3VwcG9ydCgpKSB7DQogICAgICAg IHZhciBsY2xTdHJNb2RlID0gKHN0ck1vZGUgPT0gbnVsbCkgPyAidHJhbnNwYXJl bnQiIDogc3RyTW9kZTsNCiAgICAgICAgdmFyIGZsYXNoU3JjID0gc3RyVXJsICsg c3RyQ2xpY2sgKyBzdHJEZXN0VXJsOw0KICAgICAgICB0bXAgKz0gJzxvYmplY3Qg c3R5bGU9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7ei1pbmRl eDo5OyIgYm9yZGVyPSIwIiBoZWlnaHQ9IicgKyBpbnRIZWlnaHQgKyAnIiB3aWR0 aD0iJyArIGludFdpZHRoICsgJyIgYWxpZ249InRvcCIgaWQ9IkZsYXNoXycgKyBm bGFzaFNyYyArICciJzsNCiAgICAgICAgdG1wICs9ICcgY29kZUJhc2U9Imh0dHA6 Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxh c2gvc3dmbGFzaC5jYWIjdmVyc2lvbj01LDAsMCwwIic7DQogICAgICAgIHRtcCAr PSAnIGhlaWdodD0iJyArIGludEhlaWdodCArICciIHdpZHRoPSInICsgaW50V2lk dGggKyAnIiBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00 NDQ1NTM1NDAwMDAiID4nOw0KICAgICAgICB0bXAgKz0gJzxwYXJhbSBuYW1lPSJt b3ZpZSIgdmFsdWU9IicgKyBmbGFzaFNyYyArICciIC8+JzsNCiAgICAgICAgdG1w ICs9ICc8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+JzsNCiAg ICAgICAgdG1wICs9ICc8cGFyYW0gbmFtZT0iYWxsb3dzY3JpcHRhY2Nlc3MiIHZh bHVlPSJhbHdheXMiIC8+JzsNCiAgICAgICAgdG1wICs9ICc8cGFyYW0gbmFtZT0i d21vZGUiIHZhbHVlPSInICsgbGNsU3RyTW9kZSArICciIC8+JzsNCiAgICAgICAg dG1wICs9ICc8ZW1iZWQgaWQ9ImVtYmVkRmxhc2hfJyArIGZsYXNoU3JjICsgJyIg JzsNCiAgICAgICAgdG1wICs9ICcgc3JjPSInICsgZmxhc2hTcmMgKyAnIic7DQog ICAgICAgIHRtcCArPSAnIHF1YWxpdHk9ImhpZ2giIHdtb2RlPSInICsgbGNsU3Ry TW9kZSArICciJzsNCiAgICAgICAgdG1wICs9ICcgc3R5bGU9InBvc2l0aW9uOnJl bGF0aXZlOyB6LWluZGV4Ojk7Iic7DQogICAgICAgIHRtcCArPSAnIHBsdWdpbnNw YWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL3Nob2Nrd2F2ZS9kb3dubG9h ZC9pbmRleC5jZ2k/UDFfUHJvZF9WZXJzaW9uPVNob2Nrd2F2ZUZsYXNoIic7DQog ICAgICAgIHRtcCArPSAnIGFsbG93c2NyaXB0YWNjZXNzPSJhbHdheXMiJzsNCiAg ICAgICAgdG1wICs9ICcgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxh c2giIHdpZHRoPSInICsgaW50V2lkdGggKyAnIiBoZWlnaHQ9IicgKyBpbnRIZWln aHQgKyAnIj48L2VtYmVkPic7DQogICAgICAgIHRtcCArPSAnPC9vYmplY3Q+JzsN CiAgICB9DQogICAgZWxzZSB7DQogICAgICAgIHN0ckNsaWNrID0gdW5lc2NhcGUo c3RyQ2xpY2spICsgZXNjYXBlKHN0ckRlc3RVcmwpOw0KICAgICAgICB0bXAgKz0g JzxhIGhyZWY9IicgKyBzdHJDbGljayArICciIHRhcmdldD0iX2JsYW5rIj48aW1n IHNyYz0iJyArIHN0ck5vRmxhc2ggKyAnIiBhbHQ9IiIgc3R5bGU9ImJvcmRlci1z dHlsZTpub25lOyIgIHdpZHRoPSInICsgaW50V2lkdGggKyAnIiBoZWlnaHQ9Iicg KyBpbnRIZWlnaHQgKyAnIi8+PC9hPic7DQogICAgfQ0KICAgIHRtcCArPSAnPC9k aXY+JzsNCiAgICBpZiAobW4uaXNPcmZhZCkNCiAgICAgICAgcmV0dXJuIHRtcDsN CiAgICBlbHNlIHsNCiAgICAgICAgbW4uZC53cml0ZSh0bXApOw0KICAgICAgICBy ZXR1cm4gJyc7DQogICAgfQ0KfTsNCg0KbW4uUm9sbG92ZXIgPSBmdW5jdGlvbiAo c3RyVXJsLCBpbnRXaWR0aCwgaW50SGVpZ2h0LCBzdHJOb0ZsYXNoLCBzdHJDbGlj aywgc3RyRGVzdFVybCwgaW50TWluV2lkdGgsIGludE1pbkhlaWdodCwgc3RyTW9k ZSkgew0KICAgIHZhciB0bXBTdHIgPSAnJzsNCiAgICBpZiAobW4uRmxhc2hTdXBw b3J0KCkpIHsNCiAgICAgICAgdmFyIGxjbFN0ck1vZGUgPSAoc3RyTW9kZSA9PSBu dWxsKSA/ICd0cmFuc3BhcmVudCcgOiBzdHJNb2RlOw0KICAgICAgICB2YXIgZmxh c2hTcmMgPSBzdHJVcmwgKyBzdHJDbGljayArIHN0ckRlc3RVcmw7DQogICAgICAg IGlmICghbW4uQnJvd3Nlci5Jc0lFKSB7IC8vIG5vdCBpZQ0KICAgICAgICAgICAg aWYgKHR5cGVvZiBpbnRNaW5XaWR0aCA9PSAidW5kZWZpbmVkIiB8fCBpbnRNaW5X aWR0aCA9PSBudWxsKSByZXR1cm4gJyc7DQogICAgICAgICAgICBpZiAodHlwZW9m IGludE1pbkhlaWdodCA9PSAidW5kZWZpbmVkIiB8fCBpbnRNaW5IZWlnaHQgPT0g bnVsbCkgcmV0dXJuICcnOw0KICAgICAgICAgICAgdG1wU3RyID0gIjxkaXYgb25t b3VzZW91dD10aGlzLnN0eWxlLndpZHRoPSciICsgU3RyaW5nKGludE1pbldpZHRo KSArICJweCc7dGhpcy5zdHlsZS5oZWlnaHQ9JyIgKyBTdHJpbmcoaW50TWluSGVp Z2h0KSArICJweCcgb25tb3VzZW92ZXI9dGhpcy5zdHlsZS53aWR0aD0nIiArIFN0 cmluZyhpbnRXaWR0aCkgKyAicHgnO3RoaXMuc3R5bGUuaGVpZ2h0PSciICsgU3Ry aW5nKGludEhlaWdodCkgKyAicHgnIHN0eWxlPSd3aWR0aDoiICsgU3RyaW5nKGlu dE1pbldpZHRoKSArICJweDtoZWlnaHQ6IiArIFN0cmluZyhpbnRNaW5IZWlnaHQp ICsgInB4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbjt6LWluZGV4 Ojk5OTk5MCc+IjsNCiAgICAgICAgICAgIHRtcFN0ciArPSAnPG9iamVjdCBzdHls ZT0iei1pbmRleDo5OTk5OTA7IiBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZE LTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxv YWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxh c2guY2FiI3ZlcnNpb249NywwLDE5LDAiIHdpZHRoPSInICsgU3RyaW5nKGludFdp ZHRoKSArICciIGhlaWdodD0iJyArIFN0cmluZyhpbnRIZWlnaHQpICsgJyI+JzsN CiAgICAgICAgICAgIHRtcFN0ciArPSAnPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1 ZT0iJyArIGZsYXNoU3JjICsgJyIgLz4nOw0KICAgICAgICAgICAgdG1wU3RyICs9 ICc8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+JzsNCiAgICAg ICAgICAgIHRtcFN0ciArPSAnPHBhcmFtIG5hbWU9Indtb2RlIiB2YWx1ZT0iJyAr IGxjbFN0ck1vZGUgKyAnIiAvPic7DQogICAgICAgICAgICB0bXBTdHIgKz0gJzxw YXJhbSBuYW1lPSJhbGxvd3NjcmlwdGFjY2VzcyIgdmFsdWU9ImFsd2F5cyIgLz4n Ow0KICAgICAgICAgICAgdG1wU3RyICs9ICc8ZW1iZWQgc3R5bGU9InBvc2l0aW9u OnJlbGF0aXZlO3otaW5kZXg6OTk5OTkwOyInOw0KICAgICAgICAgICAgdG1wU3Ry ICs9ICcgc3JjPSInICsgZmxhc2hTcmMgKyAnIic7DQogICAgICAgICAgICB0bXBT dHIgKz0gJyB3aWR0aD0iJyArIFN0cmluZyhpbnRXaWR0aCkgKyAnICIgaGVpZ2h0 PSInICsgU3RyaW5nKGludEhlaWdodCkgKyAnIic7DQogICAgICAgICAgICB0bXBT dHIgKz0gJyBhbGxvd1NjcmlwdEFjY2Vzcz0iYWx3YXlzIiBhbGxvd0Z1bGxTY3Jl ZW49ImZhbHNlIiBxdWFsaXR5PSJoaWdoIiBwbHVnaW5zcGFnZT0iaHR0cDovL3d3 dy5tYWNyb21lZGlhLmNvbS9nby9nZXRmbGFzaHBsYXllciIgdHlwZT0iYXBwbGlj YXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHdtb2RlPSJ0cmFuc3BhcmVudCI+PC9l bWJlZD4nOw0KICAgICAgICAgICAgdG1wU3RyICs9ICc8L29iamVjdD48L2Rpdj4n Ow0KICAgICAgICAgICAgdG1wU3RyICs9ICc8ZGl2IGlkPSJzcGFjZXJGb3JGRiIg c3R5bGU9IndpZHRoOicgKyBTdHJpbmcoaW50TWluV2lkdGgpICsgJ3B4O2hlaWdo dDonICsgU3RyaW5nKGludE1pbkhlaWdodCkgKyAncHg7ei1pbmRleDowOyI+PC9k aXY+JzsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsgLy8gZm9yIGllDQogICAg ICAgICAgICB2YXIgcG9zaXRpb24gPSAnJzsNCiAgICAgICAgICAgIHRtcFN0ciA9 ICc8ZGl2IGlkPSJfX19fZGl2Um9sbENvbnRBZCIgc3R5bGU9InBvc2l0aW9uOnJl bGF0aXZlO3RvcDowcHg7d2lkdGg6JyArIGludFdpZHRoICsgJ3B4O3otaW5kZXg6 OTk5OTkwIj4nOw0KICAgICAgICAgICAgdG1wU3RyICs9ICc8b2JqZWN0IG9ubW91 c2VvdmVyPSJ0cnl7RE9MQk5SX2hpZGUoKTt9IGNhdGNoKGUpIHt9IiBvbm1vdXNl b3V0PSJ0cnl7RE9MQk5SX3Nob3coKTt9IGNhdGNoKGUpIHt9Iic7DQogICAgICAg ICAgICB0bXBTdHIgKz0gJyBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7bGVmdDow cHg7dG9wOjBweDt6LWluZGV4Ojk5OTk5MDsiJzsNCiAgICAgICAgICAgIHRtcFN0 ciArPSAnIGNvZGVCYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20v cHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NSww LDAsMCInOw0KICAgICAgICAgICAgdG1wU3RyICs9ICcgd2lkdGg9IicgKyBpbnRX aWR0aCArICciIGhlaWdodD0iJyArIGludEhlaWdodCArICciJzsNCiAgICAgICAg ICAgIHRtcFN0ciArPSAnIGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFj Zi05NkI4LTQ0NDU1MzU0MDAwMCI+JzsNCiAgICAgICAgICAgIHRtcFN0ciArPSAn PHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0iJyArIGZsYXNoU3JjICsgJyIgLz4n Ow0KICAgICAgICAgICAgdG1wU3RyICs9ICc8cGFyYW0gbmFtZT0icXVhbGl0eSIg dmFsdWU9ImhpZ2giIC8+JzsNCiAgICAgICAgICAgIHRtcFN0ciArPSAnPHBhcmFt IG5hbWU9Indtb2RlIiB2YWx1ZT0iJyArIGxjbFN0ck1vZGUgKyAnIiAvPic7DQog ICAgICAgICAgICB0bXBTdHIgKz0gJzxwYXJhbSBuYW1lPSJhbGxvd3NjcmlwdGFj Y2VzcyIgdmFsdWU9ImFsd2F5cyIgLz4nOw0KICAgICAgICAgICAgdG1wU3RyICs9 ICc8ZW1iZWQgc3JjPSInICsgZmxhc2hTcmMgKyAnIic7DQogICAgICAgICAgICB0 bXBTdHIgKz0gJyBxdWFsaXR5PSJoaWdoIiBwbHVnaW5zcGFnZT0iaHR0cDovL3d3 dy5tYWNyb21lZGlhLmNvbS9zaG9ja3dhdmUvZG93bmxvYWQvaW5kZXguY2dpP1Ax X1Byb2RfVmVyc2lvbj1TaG9ja3dhdmVGbGFzaCInOw0KICAgICAgICAgICAgdG1w U3RyICs9ICcgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giJzsN CiAgICAgICAgICAgIHRtcFN0ciArPSAnIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2 ZTsgei1pbmRleDo5OTk5OTA7JyArIHBvc2l0aW9uICsgJyInOw0KICAgICAgICAg ICAgdG1wU3RyICs9ICcgd21vZGU9IicgKyBsY2xTdHJNb2RlICsgJyInOw0KICAg ICAgICAgICAgdG1wU3RyICs9ICcgd2lkdGg9IicgKyBpbnRXaWR0aCArICciIGhl aWdodD0iJyArIGludEhlaWdodCArICciJzsNCiAgICAgICAgICAgIHRtcFN0ciAr PSAnIGFsbG93c2NyaXB0YWNjZXNzPSJhbHdheXMiPjwvZW1iZWQ+JzsNCiAgICAg ICAgICAgIHRtcFN0ciArPSAnPC9vYmplY3Q+PC9kaXY+JzsNCiAgICAgICAgICAg IHRtcFN0ciArPSAnPGRpdiBpZD0ic3BhY2VyRm9ySUUiIHN0eWxlPSJ3aWR0aDon ICsgU3RyaW5nKGludE1pbldpZHRoKSArICdweDtoZWlnaHQ6JyArIFN0cmluZyhp bnRNaW5IZWlnaHQpICsgJ3B4O3otaW5kZXg6MDsiPjwvZGl2Pic7DQogICAgICAg IH0NCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgIHN0ckNsaWNrID0gdW5lc2Nh cGUoc3RyQ2xpY2spICsgZXNjYXBlKHN0ckRlc3RVcmwpOw0KICAgICAgICB0bXBT dHIgKz0gJzxhIGhyZWY9IicgKyBzdHJDbGljayArICciIHRhcmdldD0iX2JsYW5r Ij48aW1nIHNyYz0iJyArIHN0ck5vRmxhc2ggKyAnIiBhbHQ9IiIgc3R5bGU9ImJv cmRlci1zdHlsZTpub25lOyIgIHdpZHRoPSInICsgaW50TWluV2lkdGggKyAnIiBo ZWlnaHQ9IicgKyBpbnRNaW5IZWlnaHQgKyAnIi8+PC9hPic7DQogICAgfQ0KICAg IGlmIChtbi5pc09yZmFkKQ0KICAgICAgICByZXR1cm4gdG1wU3RyOw0KICAgIGVs c2Ugew0KICAgICAgICBtbi5kLndyaXRlKHRtcFN0cik7DQogICAgICAgIHJldHVy biAnJzsNCiAgICB9ICAgIA0KfTsNCg0KbW4uRmxvYXRpbmdCYW5uZXIgPSBmdW5j dGlvbiAoc3RyVXJsLCBpbnRXaWR0aCwgaW50SGVpZ2h0LCBzdHJOb0ZsYXNoLCBz dHJDbGljaywgc3RyRGVzdFVybCwgaW50TGVmdCwgaW50VG9wKSB7DQoNCiAgICBp ZiAobW4uZC5ib2R5ID09IG51bGwpIHsNCiAgICAgICAgc2V0VGltZW91dCgibW4u RmxvYXRpbmdCYW5uZXIoJyIgKyBzdHJVcmwgKyAiJywiICsgaW50V2lkdGggKyAi LCIgKyBpbnRIZWlnaHQgKyAiLCciICsgc3RyTm9GbGFzaCArICInLCciICsgc3Ry Q2xpY2sgKyAiJywnIiArIHN0ckRlc3RVcmwgKyAiJywiICsgaW50TGVmdCArICIs IiArIGludFRvcCArICIpOyIsIDEwMDApOw0KICAgICAgICByZXR1cm4gJyc7DQog ICAgfQ0KDQogICAgdmFyIENsb3NpbmdUaW1lID0gODAwMDsNCiAgICBpZiAoKHR5 cGVvZiBGbG9hdGluZ0Jhbm5lckNsb3NpbmdUaW1lKSAhPSAndW5kZWZpbmVkJykg ew0KICAgICAgICBDbG9zaW5nVGltZSA9IEZsb2F0aW5nQmFubmVyQ2xvc2luZ1Rp bWU7IC8vIEZsb2F0aW5nQmFubmVyQ2xvc2luZ1RpbWUgaXMgY29taW5nIGFkdi4g Y29kZQ0KICAgIH0NCg0KICAgIHZhciBjbGllbnRXaWR0aCwgY2xpZW50SGVpZ2h0 Ow0KICAgIGlmIChtbi5uLmFwcE5hbWUgPT0gIk5ldHNjYXBlIikgew0KICAgICAg ICBjbGllbnRXaWR0aCA9IG1uLmQuYm9keS5jbGllbnRXaWR0aDsNCiAgICAgICAg Y2xpZW50SGVpZ2h0ID0gbW4udy5pbm5lckhlaWdodDsNCiAgICB9IGVsc2Ugew0K ICAgICAgICBjbGllbnRXaWR0aCA9IG1uLmQuYm9keS5jbGllbnRXaWR0aDsNCiAg ICAgICAgY2xpZW50SGVpZ2h0ID0gbW4uZC5ib2R5LmNsaWVudEhlaWdodDsNCiAg ICB9DQoNCiAgICB2YXIgbGNsSW50WCA9IChpbnRMZWZ0ID09IG51bGwpID8gMCA6 IGludExlZnQ7DQogICAgdmFyIGxjbEludFkgPSAoaW50VG9wID09IG51bGwpID8g MCA6IGludFRvcDsNCg0KICAgIGlmIChjbGllbnRXaWR0aCA8IDc3MCkgY2xpZW50 V2lkdGggPSA3OTI7DQogICAgaWYgKGNsaWVudEhlaWdodCA8IDc1MCkgY2xpZW50 SGVpZ2h0ID0gNzUwOw0KICAgIHZhciBwb3NpdGlvbkxlZnQgPSAobGNsSW50WCA9 PSAwKSA/IChjbGllbnRXaWR0aCAvIDIpIC0gKGludFdpZHRoIC8gMikgOiBsY2xJ bnRYOw0KICAgIHZhciBwb3NpdGlvblRvcCA9IChsY2xJbnRZID09IDApID8gKGNs aWVudEhlaWdodCAvIDIpIC0gKGludEhlaWdodCAvIDIpIDogbGNsSW50WTsNCiAg ICB2YXIgdG1wID0gJzxkaXYgaWQ9IicgKyBtbi5GbG9hdGluZ0Jhbm5lcklEICsg JyIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjIxNDc0ODM2NDc7 IGJvcmRlcjpzb2xpZCAxcHggIzgwODA4MDsgdGV4dC1hbGlnbjpjZW50ZXI7JzsN CiAgICB0bXAgKz0gJyB3aWR0aDonICsgaW50V2lkdGggKyAncHg7IGhlaWdodDon ICsgaW50SGVpZ2h0ICsgJ3B4Oyc7DQogICAgdG1wICs9ICcgbGVmdDonICsgcG9z aXRpb25MZWZ0ICsgJ3B4OyB0b3A6JyArIHBvc2l0aW9uVG9wICsgJ3B4OyI+JzsN CiAgICB0bXAgKz0gJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyB0ZXh0 LWFsaWduOnJpZ2h0OyB3aWR0aDonICsgaW50V2lkdGggKyAncHg7IG1hcmdpbi10 b3A6LTExcHg7IGxlZnQ6MTZweDsiPic7DQogICAgdG1wICs9ICc8aW1nIHNyYz0i aHR0cDovL2FkLmUta29sYXkubmV0L2Zsb2F0aW5nL2Nsb3NlLnBuZyIgYWx0PSJL YXBhdCIgdGl0bGU9IkthcGF0IiBzdHlsZT0iY3Vyc29yOnBvaW50ZXI7IiBvbmNs aWNrPSJtbi5DbG9zZUJhbm5lcihtbi5GbG9hdGluZ0Jhbm5lcklEKTsiIC8+JzsN CiAgICB0bXAgKz0gJzwvZGl2Pic7DQogICAgaWYgKG1uLkZsYXNoU3VwcG9ydCgp KSB7DQogICAgICAgIHZhciBmbGFzaFNyYyA9IHN0clVybCArIHN0ckNsaWNrICsg c3RyRGVzdFVybDsNCiAgICAgICAgdG1wICs9ICc8b2JqZWN0IGlkPSJtZG5GbG9h dGluZ0ZsYXNoIiB3aWR0aD0iJyArIGludFdpZHRoICsgJyIgaGVpZ2h0PSInICsg aW50SGVpZ2h0ICsgJyInOw0KICAgICAgICB0bXAgKz0gJyBjbGFzc2lkPSJjbHNp ZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIGNvZGViYXNl PSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9j YWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NSwwLDAsMCI+JzsNCiAgICAg ICAgdG1wICs9ICc8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSInICsgZmxhc2hT cmMgKyAnIiAvPic7DQogICAgICAgIHRtcCArPSAnPHBhcmFtIG5hbWU9Indtb2Rl IiB2YWx1ZT0idHJhbnNwYXJlbnQiIC8+JzsNCiAgICAgICAgdG1wICs9ICc8cGFy YW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+JzsNCiAgICAgICAgdG1w ICs9ICc8cGFyYW0gbmFtZT0iYmdjb2xvciIgdmFsdWU9IiIgLz4nOw0KICAgICAg ICB0bXAgKz0gJzxwYXJhbSBuYW1lPSJzY2FsZSIgdmFsdWU9Im5vYm9yZGVyIiAv Pic7DQogICAgICAgIHRtcCArPSAnPHBhcmFtIG5hbWU9ImFsbG93c2NyaXB0YWNj ZXNzIiB2YWx1ZT0iYWx3YXlzIiAvPic7DQogICAgICAgIHRtcCArPSAnPGVtYmVk IGlkPSJmbG9hdGluZ0VtYmVkIiBzcmM9IicgKyBmbGFzaFNyYyArICciIHF1YWxp dHk9ImhpZ2giIGFsbG93c2NyaXB0YWNjZXNzPSJhbHdheXMiIHdtb2RlPSJ0cmFu c3BhcmVudCIgc2NhbGU9Im5vYm9yZGVyIic7DQogICAgICAgIHRtcCArPSAnIHBs dWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL3Nob2Nrd2F2ZS9k b3dubG9hZC9pbmRleC5jZ2k/UDFfUHJvZF9WZXJzaW9uPVNob2Nrd2F2ZUZsYXNo IiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCInOw0KICAgICAg ICB0bXAgKz0gJyB3aWR0aD0iJyArIGludFdpZHRoICsgJyIgaGVpZ2h0PSInICsg aW50SGVpZ2h0ICsgJyI+PC9lbWJlZD4nOw0KICAgICAgICB0bXAgKz0gJzwvb2Jq ZWN0Pic7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICBzdHJDbGljayA9IHVu ZXNjYXBlKHN0ckNsaWNrKSArIGVzY2FwZShzdHJEZXN0VXJsKTsNCiAgICAgICAg dG1wICs9ICc8YSBocmVmPSInICsgc3RyQ2xpY2sgKyAnIiB0YXJnZXQ9Il9ibGFu ayI+PGltZyBzcmM9IicgKyBzdHJOb0ZsYXNoICsgJyIgYWx0PSIiIHN0eWxlPSJi b3JkZXItc3R5bGU6bm9uZTsiICB3aWR0aD0iJyArIGludFdpZHRoICsgJyIgaGVp Z2h0PSInICsgaW50SGVpZ2h0ICsgJyIvPjwvYT4nOw0KICAgIH0NCiAgICB0bXAg Kz0gJzwvZGl2Pic7DQogICAgc2V0VGltZW91dCgibW4uQ2xvc2VCYW5uZXIobW4u RmxvYXRpbmdCYW5uZXJJRCkiLCBDbG9zaW5nVGltZSk7DQogICAgaWYgKG1uLmlz T3JmYWQpDQogICAgICAgIHJldHVybiB0bXA7DQogICAgZWxzZSB7DQogICAgICAg IG1uLmQud3JpdGUodG1wKTsNCiAgICAgICAgcmV0dXJuICcnOw0KICAgIH0gICAg DQp9Ow0KDQpmdW5jdGlvbiBET0xBRF9yb2xsb3ZlcihzdHJVcmwsIGludFdpZHRo LCBpbnRIZWlnaHQsIGNsaWNrVXJsLCByYXdDbGlja1VybCwgc3RyTW9kZSwgaW50 TWluV2lkdGgsIGludE1pbkhlaWdodCkgew0KICAgIHZhciBsY2xTdHJNb2RlID0g KHN0ck1vZGUgPT0gbnVsbCkgPyAidHJhbnNwYXJlbnQiIDogc3RyTW9kZTsNCiAg ICB2YXIgdGVtcFN0clVybCA9IChyYXdDbGlja1VybCAhPSAiaHR0cDovLyIpID8g c3RyVXJsICsgY2xpY2tVcmwgOiBzdHJVcmw7DQogICAgc3RyVXJsID0gdGVtcFN0 clVybDsNCiAgICBpZiAobl8uYXBwTmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yo J2V4cGxvcmVyJykgPCAwKSB7DQogICAgICAgIGlmICh0eXBlb2YgaW50TWluV2lk dGggPT0gInVuZGVmaW5lZCIgfHwgaW50TWluV2lkdGggPT0gbnVsbCkgcmV0dXJu ICIiOw0KICAgICAgICBpZiAodHlwZW9mIGludE1pbkhlaWdodCA9PSAidW5kZWZp bmVkIiB8fCBpbnRNaW5IZWlnaHQgPT0gbnVsbCkgcmV0dXJuICIiOw0KICAgICAg ICB2YXIgYXJySHRtbCA9IFtdOw0KICAgICAgICBhcnJIdG1sLnB1c2goIjxkaXYg b25tb3VzZW91dD10aGlzLnN0eWxlLndpZHRoPSciICsgU3RyaW5nKGludE1pbldp ZHRoKSArICJweCc7dGhpcy5zdHlsZS5oZWlnaHQ9JyIgKyBTdHJpbmcoaW50TWlu SGVpZ2h0KSArICJweCcgb25tb3VzZW92ZXI9dGhpcy5zdHlsZS53aWR0aD0nIiAr IFN0cmluZyhpbnRXaWR0aCkgKyAicHgnO3RoaXMuc3R5bGUuaGVpZ2h0PSciICsg U3RyaW5nKGludEhlaWdodCkgKyAicHgnIHN0eWxlPSd3aWR0aDoiICsgU3RyaW5n KGludE1pbldpZHRoKSArICJweDtoZWlnaHQ6IiArIFN0cmluZyhpbnRNaW5IZWln aHQpICsgInB4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbjt6LWlu ZGV4Ojk5OTk5MDsnPiIpOw0KICAgICAgICBhcnJIdG1sLnB1c2goJzxvYmplY3Qg c3R5bGU9InotaW5kZXg6OTk5OTkwOyIgY2xhc3NpZD0iY2xzaWQ6RDI3Q0RCNkUt QUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIiBjb2RlYmFzZT0iaHR0cDovL2Rv d25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9z d2ZsYXNoLmNhYiN2ZXJzaW9uPTcsMCwxOSwwIiB3aWR0aD0iJyArIFN0cmluZyhp bnRXaWR0aCkgKyAnIiBoZWlnaHQ9IicgKyBTdHJpbmcoaW50SGVpZ2h0KSArICci PicpOw0KICAgICAgICBhcnJIdG1sLnB1c2goJzxwYXJhbSBuYW1lPSJtb3ZpZSIg dmFsdWU9IicgKyBzdHJVcmwgKyAnIiAvPicpOw0KICAgICAgICBhcnJIdG1sLnB1 c2goJzxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz4nKTsNCiAg ICAgICAgYXJySHRtbC5wdXNoKCc8cGFyYW0gbmFtZT0id21vZGUiIHZhbHVlPSIn ICsgbGNsU3RyTW9kZSArICciIC8+Jyk7DQogICAgICAgIGFyckh0bWwucHVzaCgn PHBhcmFtIG5hbWU9ImFsbG93c2NyaXB0YWNjZXNzIiB2YWx1ZT0iYWx3YXlzIiAv PicpOw0KICAgICAgICBhcnJIdG1sLnB1c2goJzxlbWJlZCBzdHlsZT0icG9zaXRp b246cmVsYXRpdmU7ei1pbmRleDo5OTk5OTA7IiBzcmM9IicgKyBzdHJVcmwgKyAn IiB3aWR0aD0iJyArIFN0cmluZyhpbnRXaWR0aCkgKyAnIiBoZWlnaHQ9IicgKyBT dHJpbmcoaW50SGVpZ2h0KSArICciIGFsbG93c2NyaXB0YWNjZXNzPSJhbHdheXMi IGFsbG93ZnVsbHNjcmVlbj0iZmFsc2UiIHF1YWxpdHk9ImhpZ2giIHBsdWdpbnNw YWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVy IiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgd21vZGU9InRy YW5zcGFyZW50Ij48L2VtYmVkPicpOw0KICAgICAgICBhcnJIdG1sLnB1c2goIjwv b2JqZWN0PjwvZGl2PiIpOw0KICAgICAgICBhcnJIdG1sLnB1c2goIjxkaXYgaWQ9 J3NwYWNlckZvckZGJyBzdHlsZT0nd2lkdGg6IiArIFN0cmluZyhpbnRNaW5XaWR0 aCkgKyAicHg7aGVpZ2h0OiIgKyBTdHJpbmcoaW50TWluSGVpZ2h0KSArICJweDt6 LWluZGV4OjA7Jz48L2Rpdj4iKTsNCiAgICAgICAgdmFyIG91dFB1dCA9IGFyckh0 bWwuam9pbignJyk7DQogICAgICAgIGlmIChpc09ScSkNCiAgICAgICAgICAgIHJl dHVybiBvdXRQdXQ7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIGRfLndyaXRl KGFyckh0bWwuam9pbignJykpOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAg dmFyIHBvc2l0aW9uID0gIiI7IC8vKGJsbklzSUUpID8gJycgOiAnbGVmdDonICsg bHlyLlBhZ2VYICsgJzt0b3A6JyArIGx5ci5QYWdlWTsNCiAgICAgICAgdmFyIHRt cDsNCiAgICAgICAgdG1wID0gJycgKw0KICAgICAgICAgICAgJzxkaXYgaWQ9Il9f X19kaXZSb2xsQ29udEFkIiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IHRvcDow cHg7IHdpZHRoOicgKyBpbnRXaWR0aCArICdweDsgei1pbmRleDo5OTk5OTAiPicg Kw0KICAgICAgICAgICAgICAgICc8b2JqZWN0IG9ubW91c2VvdmVyPSJ0cnl7RE9M Qk5SX2hpZGUoKTt9IGNhdGNoKGUpIHt9IiBvbm1vdXNlb3V0PSJ0cnl7RE9MQk5S X3Nob3coKTt9IGNhdGNoKGUpIHt9IicgKw0KICAgICAgICAgICAgICAgICAgICAn IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjBweDt0b3A6MHB4O3otaW5k ZXg6OTk5OTkwOyInICsNCiAgICAgICAgICAgICAgICAgICAgICAgICcgY29kZUJh c2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZl L2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj01LDAsMCwwIicgKw0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICcgd2lkdGg9IicgKyBpbnRXaWR0aCAr ICciIGhlaWdodD0iJyArIGludEhlaWdodCArICciJyArDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICcgY2xhc3NpZD0iY2xzaWQ6RDI3Q0RCNkUtQUU2 RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIj4nICsNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICc8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSIn ICsgc3RyVXJsICsgJyIgLz4nICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnPHBhcmFtIG5hbWU9InF1YWxpdHkiIHZhbHVlPSJoaWdo IiAvPicgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnPHBhcmFtIG5hbWU9Indtb2RlIiB2YWx1ZT0iJyArIGxjbFN0ck1vZGUg KyAnIiAvPicgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJzxwYXJhbSBuYW1lPSJhbGxvd3NjcmlwdGFjY2VzcyIgdmFs dWU9ImFsd2F5cyIgLz4nICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnPGVtYmVkJyArDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgc3Jj PSInICsgc3RyVXJsICsgJyInICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcXVhbGl0eT0iaGln aCInICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnIGFsbG93c2NyaXB0YWNjZXNzPSJhbHdh eXMiJyArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcGx1Z2luc3BhZ2U9Imh0dHA6 Ly93d3cubWFjcm9tZWRpYS5jb20vc2hvY2t3YXZlL2Rvd25sb2FkL2luZGV4LmNn aT9QMV9Qcm9kX1ZlcnNpb249U2hvY2t3YXZlRmxhc2giJyArDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZs YXNoIicgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgc3R5bGU9InBv c2l0aW9uOnJlbGF0aXZlOyB6LWluZGV4Ojk5OTk5MDsgJyArIHBvc2l0aW9uICsg JyInICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyB3bW9kZT0i JyArIGxjbFN0ck1vZGUgKyAnIicgKw0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJyB3aWR0aD0iJyArIGludFdpZHRoICsgJyIgaGVpZ2h0PSIn ICsgaW50SGVpZ2h0ICsgJyInICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnPjwvZW1iZWQ+JyArDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICc8L29iamVjdD48L2Rpdj4nICsNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8 ZGl2IGlkPSJzcGFjZXJGb3JJRSIgc3R5bGU9IndpZHRoOicgKyBTdHJpbmcoaW50 TWluV2lkdGgpICsgJ3B4O2hlaWdodDonICsgU3RyaW5nKGludE1pbkhlaWdodCkg KyAncHg7ei1pbmRleDowOyI+PC9kaXY+JzsNCiAgICAgICAgaWYgKGlzT1JxKQ0K ICAgICAgICAgICAgcmV0dXJuIHRtcDsNCiAgICAgICAgZWxzZQ0KICAgICAgICAg ICAgZF8ud3JpdGUodG1wKTsNCiAgICB9DQogICAgcmV0dXJuICIiOw0KfQ0KZnVu Y3Rpb24gRE9MQURfaW1nKHN0ckh0bWwpIHsgaWYgKGlzT1JxKSB7IHJldHVybiBz dHJIdG1sOyB9IGVsc2UgeyBkXy53cml0ZShzdHJIdG1sKTsgfSB9DQpmdW5jdGlv biBET0xBRF9IVE1MKHN0ckh0bWwpIHsgaWYgKGlzT1JxKSB7IHJldHVybiBzdHJI dG1sOyB9IGVsc2UgeyBkXy53cml0ZShzdHJIdG1sKTsgfSB9DQpmdW5jdGlvbiBn ZShpZCkgeyByZXR1cm4gZF8uZ2V0RWxlbWVudEJ5SWQgPyBkXy5nZXRFbGVtZW50 QnlJZChpZCkgOiBkXy5hbGwoaWQpOyB9DQoNCmZ1bmN0aW9uIERPTEFEX2Zsb2F0 aW5nKHN0clVybCwgY2xpY2tVcmwsIGludFdpZHRoLCBpbnRIZWlnaHQsIGludExl ZnQsIGludFRvcCkgew0KICAgIGlmIChuXy5hcHBOYW1lLnRvTG93ZXJDYXNlKCku aW5kZXhPZignZXhwbG9yZXInKSA+IDApIHsNCiAgICAgICAgdmFyIGNsaWVudFdp ZHRoLCBjbGllbnRIZWlnaHQ7DQoNCiAgICAgICAgaWYgKG5fLmFwcE5hbWUgPT0g Ik5ldHNjYXBlIikgew0KICAgICAgICAgICAgY2xpZW50V2lkdGggPSBkXy5ib2R5 LmNsaWVudFdpZHRoOw0KICAgICAgICAgICAgY2xpZW50SGVpZ2h0ID0gd2luZG93 LmlubmVySGVpZ2h0Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgY2xp ZW50V2lkdGggPSBkXy5ib2R5LmNsaWVudFdpZHRoOw0KICAgICAgICAgICAgY2xp ZW50SGVpZ2h0ID0gZF8uYm9keS5jbGllbnRIZWlnaHQ7DQogICAgICAgIH0NCg0K ICAgICAgICB2YXIgbGNsSW50WCA9IChpbnRMZWZ0ID09IG51bGwpID8gMCA6IGlu dExlZnQ7DQogICAgICAgIHZhciBsY2xJbnRZID0gKGludFRvcCA9PSBudWxsKSA/ IDAgOiBpbnRUb3A7DQogICAgICAgIC8vdmFyIHJuZD1NYXRoLmNlaWwoTWF0aC5y YW5kb20oKSo5OTk5OTk5OSk7DQoNCiAgICAgICAgaWYgKGNsaWVudFdpZHRoIDwg NzcwKSBjbGllbnRXaWR0aCA9IDc5MjsNCiAgICAgICAgdmFyIHBvc2l0aW9uTGVm dCA9IChsY2xJbnRYID09IDApID8gKGNsaWVudFdpZHRoIC8gMikgLSAoaW50V2lk dGggLyAyKSA6IGxjbEludFg7DQogICAgICAgIHZhciBwb3NpdGlvblRvcCA9IChs Y2xJbnRZID09IDApID8gKGNsaWVudEhlaWdodCAvIDIpIC0gKGludEhlaWdodCAv IDIpIDogbGNsSW50WTsNCiAgICAgICAgcG9zaXRpb25Ub3AgPSBNYXRoLnJvdW5k KHBvc2l0aW9uVG9wKTsNCiAgICAgICAgcG9zaXRpb25MZWZ0ID0gTWF0aC5yb3Vu ZChwb3NpdGlvbkxlZnQpOw0KICAgICAgICBwb3NpdGlvbkxlZnQgPSBwb3NpdGlv bkxlZnQgLSA4Ow0KICAgICAgICB2YXIgdG1wID0gJzxkaXYgaWQ9ImZsb2F0aW5n RGl2JyArIHJuZF9fICsgJyIgJyArDQogICAgICAgICAgICAnIHN0eWxlPSJwb3Np dGlvbjogYWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOicgKyBpbnRX aWR0aCArICdweDsgaGVpZ2h0OicgKyBpbnRIZWlnaHQgKyAncHg7IHotaW5kZXg6 MjE0NzQ4MzY0NztsZWZ0OicgKyBwb3NpdGlvbkxlZnQgKyAncHg7dG9wOicgKyBw b3NpdGlvblRvcCArICdweDsiPiAnICsNCiAgICAgICAgICAgICAgICAnIDxvYmpl Y3QgaWQ9ImZsYXNob2JqJyArIHJuZF9fICsgJyIgc3R5bGU9InotaW5kZXg6MjE0 NzQ4MzY0NzsiIGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4 LTQ0NDU1MzU0MDAwMCIgJyArDQogICAgICAgICAgICAgICAgICAgICcgY29kZWJh c2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZl L2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj01LDAsMCwwIiAnICsNCiAg ICAgICAgICAgICAgICAgICAgICAgICcgd2lkdGg9IicgKyBpbnRXaWR0aCArICci IGhlaWdodD0iJyArIGludEhlaWdodCArICciIGFsaWduPSJtaWRkbGUiPiAnICsN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIDxwYXJhbSBuYW1lPSJt b3ZpZSIgdmFsdWU9IicgKyBzdHJVcmwgKyBjbGlja1VybCArICciIC8+JyArDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgPHBhcmFtIG5hbWU9 InF1YWxpdHkiIHZhbHVlPSJoaWdoIiAvPicgKw0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJyAgICA8cGFyYW0gbmFtZT0iQkdDT0xPUiIgdmFs dWU9IiIgLz4nICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnICAgIDxwYXJhbSBuYW1lPSJzY2FsZSIgdmFsdWU9Im5vYm9yZGVyIiAv PicgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnICAgIDxwYXJhbSBuYW1lPSJ3bW9kZSIgdmFsdWU9InRyYW5zcGFyZW50IiAv PicgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJyAgICA8cGFyYW0gbmFtZT0iYWxsb3dzY3JpcHRhY2Nlc3MiIHZhbHVl PSJhbHdheXMiIC8+JyArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJyAgICA8ZW1iZWQgaWQ9ImZsb2F0aW5nRW1i ZWQnICsgcm5kX18gKyAnIiBzcmM9IicgKyBzdHJVcmwgKyBjbGlja1VybCArICci IHF1YWxpdHk9ImhpZ2giIHdtb2RlPSJ0cmFuc3BhcmVudCIgYWxsb3dzY3JpcHRh Y2Nlc3M9ImFsd2F5cyIgei1pbmRleD0iMjE0NzQ4MzY0NyIgc2NhbGU9Im5vYm9y ZGVyIiBwbHVnaW5zcGFnZT0iaHR0cDovL3d3dy5tYWNyb21lZGlhLmNvbS9zaG9j a3dhdmUvZG93bmxvYWQvaW5kZXguY2dpP1AxX1Byb2RfVmVyc2lvbj1TaG9ja3dh dmVGbGFzaCIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giICcg Kw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnIHdpZHRoPSInICsgaW50V2lkdGggKyAnIiBoZWlnaHQ9Iicg KyBpbnRIZWlnaHQgKyAnIiBhbGlnbj0iYWJzbWlkZGxlIj4gJyArDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnICAgIDwvZW1iZWQ+PC9vYmplY3Q+JyArDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JyAgPC9kaXY+ICc7DQoNCiAgICAgICAgaWYgKGlzT1JxKQ0KICAgICAgICAgICAg cmV0dXJuIHRtcDsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgZF8ud3JpdGUo dG1wKTsNCiAgICB9DQp9DQpmdW5jdGlvbiBjbG9zZUZsb2F0aW5nRGl2KCkgeyBn ZSgnZmxvYXRpbmdEaXYnICsgcm5kX18pLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlk ZGVuJzsgfQ0KZnVuY3Rpb24gRE9MQURfUmVQb3MoKSB7IH0NCmZ1bmN0aW9uIGdl dENvb2tpZShzdHJOYW1lKSB7DQogICAgdmFyIGFyckNvb2tpZSA9IGRfLmNvb2tp ZS5zcGxpdCgiOyIpOw0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyQ29va2ll Lmxlbmd0aDsgaSsrKSB7DQogICAgICAgIHZhciBjb29raWUgPSBhcnJDb29raWVb aV0uc3BsaXQoIj0iKTsNCiAgICAgICAgd2hpbGUgKGNvb2tpZVswXS5pbmRleE9m KCIgIikgPT0gMCkgY29va2llWzBdID0gY29va2llWzBdLnN1YnN0cigxKTsNCiAg ICAgICAgaWYgKHN0ck5hbWUgPT0gY29va2llWzBdKSByZXR1cm4gdW5lc2NhcGUo Y29va2llWzFdKTsNCiAgICB9DQogICAgcmV0dXJuICIiOw0KfQ0KZnVuY3Rpb24g Y3JlYXRlQ29va2llKG5hbWUsIHZhbHVlLCBkYXlzKSB7DQogICAgdmFyIGV4cGly ZXMgPSAiIjsNCiAgICBpZiAoZGF5cykgew0KICAgICAgICB2YXIgZGF0ZSA9IG5l dyBEYXRlKCk7DQogICAgICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSAr IChkYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCkpOw0KICAgICAgICBleHBpcmVz ID0gIjsgZXhwaXJlcz0iICsgZGF0ZS50b0dNVFN0cmluZygpOw0KICAgIH0NCiAg ICBkXy5jb29raWUgPSBuYW1lICsgIj0iICsgdmFsdWUgKyBleHBpcmVzICsgIjsi Ow0KfQ0KZnVuY3Rpb24gc2V0Q29va2llKHN0ck5hbWUsIHN0clZhbHVlKSB7IGRf LmNvb2tpZSA9IHN0ck5hbWUgKyAiPSIgKyBlc2NhcGUoc3RyVmFsdWUpOyB9DQoN CmZ1bmN0aW9uIGZsYXNoQ29va2llKGNvb2tpZW5hbWUpIHsNCiAgICB2YXIgZ2V0 Q29va2llT2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29va2llbmFtZSk7 DQogICAgdmFyIGNvb2tpZVZhbHVlID0gZ2V0Q29va2llKGNvb2tpZW5hbWUpOw0K ICAgIGlmIChnZXRDb29raWVPYmogPT0gbnVsbCkNCiAgICAgICAgc2V0VGltZW91 dCgiZmxhc2hDb29raWUoJyIgKyBjb29raWVuYW1lICsgIicpOyIsIDIwMCk7DQog ICAgZWxzZQ0KICAgICAgICBnZXRDb29raWVPYmouU2V0VmFyaWFibGUoJ19yb290 LmNvb2tpZVZhbHVlJywgY29va2llVmFsdWUpOw0KfQ0KDQpmdW5jdGlvbiBEb2xS YW5kb20oKSB7DQogICAgcmV0dXJuIFN0cmluZyhNYXRoLnJhbmRvbSgpKS5zdWJz dHIoMiwgMTApOw0KfQ0KDQoNCi8vLy8vLy8vLyBGTE9BVElORyAvLy8vLy8vLy8v Ly8vLy8vLy8vLy8NCg0KDQpmdW5jdGlvbiBDbG9zZUZsb2F0aW5nQmFubmVyKCkg ew0KICAgIGdlKCJtZG5GbG9hdGluZyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk ZGVuIjsNCn0NCg0KZnVuY3Rpb24gRmxvYXRpbmdCYW5uZXIoc3RyVXJsLCBjbGlj a1VybCwgaW50V2lkdGgsIGludEhlaWdodCwgaW50TGVmdCwgaW50VG9wKSB7DQog ICAgDQogICAgaWYgKGRfLmJvZHkgPT0gbnVsbCkgew0KICAgICAgICBzZXRUaW1l b3V0KCJGbG9hdGluZ0Jhbm5lcignIiArIHN0clVybCArICInLCciICsgY2xpY2tV cmwgKyAiJywiICsgaW50V2lkdGggKyAiLCIgKyBpbnRIZWlnaHQgKyAiLCIgKyBp bnRMZWZ0ICsgIiwiICsgaW50VG9wICsgIik7IiwgMTAwMCk7DQogICAgICAgIHJl dHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICB2YXIgQ2xvc2luZ1RpbWUgPSA4MDAw Ow0KDQogICAgaWYgKCh0eXBlb2YgRmxvYXRpbmdCYW5uZXJDbG9zaW5nVGltZSkg IT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAgICAgQ2xvc2luZ1RpbWUgPSBGbG9hdGlu Z0Jhbm5lckNsb3NpbmdUaW1lOw0KICAgIH0NCiAgICANCiAgICB2YXIgY2xpZW50 V2lkdGgsIGNsaWVudEhlaWdodDsNCiAgICBpZiAobl8uYXBwTmFtZSA9PSAiTmV0 c2NhcGUiKSB7DQogICAgICAgIGNsaWVudFdpZHRoID0gZG9jdW1lbnQuYm9keS5j bGllbnRXaWR0aDsNCiAgICAgICAgY2xpZW50SGVpZ2h0ID0gd2luZG93LmlubmVy SGVpZ2h0Ow0KICAgIH0gZWxzZSB7DQogICAgICAgIGNsaWVudFdpZHRoID0gZG9j dW1lbnQuYm9keS5jbGllbnRXaWR0aDsNCiAgICAgICAgY2xpZW50SGVpZ2h0ID0g ZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7DQogICAgfQ0KDQogICAgdmFyIGxj bEludFggPSAoaW50TGVmdCA9PSBudWxsKSA/IDAgOiBpbnRMZWZ0Ow0KICAgIHZh ciBsY2xJbnRZID0gKGludFRvcCA9PSBudWxsKSA/IDAgOiBpbnRUb3A7DQoNCiAg ICBpZiAoY2xpZW50V2lkdGggPCA3NzApIGNsaWVudFdpZHRoID0gNzkyOw0KICAg IGlmIChjbGllbnRIZWlnaHQgPCA3NTApIGNsaWVudEhlaWdodCA9IDc1MDsNCiAg ICB2YXIgcG9zaXRpb25MZWZ0ID0gKGxjbEludFggPT0gMCkgPyAoY2xpZW50V2lk dGggLyAyKSAtIChpbnRXaWR0aCAvIDIpIDogbGNsSW50WDsNCiAgICB2YXIgcG9z aXRpb25Ub3AgPSAobGNsSW50WSA9PSAwKSA/IChjbGllbnRIZWlnaHQgLyAyKSAt IChpbnRIZWlnaHQgLyAyKSA6IGxjbEludFk7DQoNCiAgICB2YXIgdG1wID0gJzxk aXYgaWQ9Im1kbkZsb2F0aW5nIiAnICsNCiAgICAnc3R5bGU9InBvc2l0aW9uOmFi c29sdXRlOyB6LWluZGV4OjIxNDc0ODM2NDc7IGJvcmRlcjpzb2xpZCAxcHggIzgw ODA4MDsgd2lkdGg6JyArIGludFdpZHRoICsgJ3B4OyBoZWlnaHQ6JyArIGludEhl aWdodCArICdweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGxlZnQ6JyArIHBvc2l0aW9u TGVmdCArICdweDsgdG9wOicgKyBwb3NpdGlvblRvcCArICdweDsiPicgKw0KICAg ICcgPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IHRleHQtYWxpZ246cmln aHQ7IHdpZHRoOicgKyBpbnRXaWR0aCArICdweDsgbWFyZ2luLXRvcDotMTFweDsg bGVmdDoxNnB4OyI+JyArDQogICAgJyAgICA8aW1nIHNyYz0iaHR0cDovL2FkLmUt a29sYXkubmV0L2Zsb2F0aW5nL2Nsb3NlLnBuZyIgYWx0PSJLYXBhdCIgdGl0bGU9 IkthcGF0IiBzdHlsZT0iY3Vyc29yOnBvaW50ZXI7IiBvbmNsaWNrPSJDbG9zZUZs b2F0aW5nQmFubmVyKCk7IiAvPicgKw0KICAgICcgPC9kaXY+JyArDQogICAgJyA8 b2JqZWN0IGlkPSJtZG5GbG9hdGluZ0ZsYXNoIiB3aWR0aD0iJyArIGludFdpZHRo ICsgJyIgaGVpZ2h0PSInICsgaW50SGVpZ2h0ICsgJyInICsNCiAgICAnICAgICBj bGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAw MDAiIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHVi L3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NSwwLDAs MCI+ICcgKw0KICAgICcgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0iJyAr IHN0clVybCArIGNsaWNrVXJsICsgJyI+ICcgKw0KICAgICcgICAgPHBhcmFtIG5h bWU9Indtb2RlIiB2YWx1ZT0idHJhbnNwYXJlbnQiPiAnICsNCiAgICAnICAgIDxw YXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCI+ICcgKw0KICAgICcgICAg PHBhcmFtIG5hbWU9ImJnY29sb3IiIHZhbHVlPSIiPiAnICsNCiAgICAnICAgIDxw YXJhbSBuYW1lPSJzY2FsZSIgdmFsdWU9Im5vYm9yZGVyIj4gJyArDQogICAgJyAg ICA8cGFyYW0gbmFtZT0iYWxsb3dzY3JpcHRhY2Nlc3MiIHZhbHVlPSJhbHdheXMi PiAnICsNCiAgICAnICAgIDxlbWJlZCBpZD0iZmxvYXRpbmdFbWJlZCIgc3JjPSIn ICsgc3RyVXJsICsgY2xpY2tVcmwgKyAnIiBxdWFsaXR5PSJoaWdoIiBhbGxvd3Nj cmlwdGFjY2Vzcz0iYWx3YXlzIiB3bW9kZT0idHJhbnNwYXJlbnQiIHNjYWxlPSJu b2JvcmRlciIgJyArDQogICAgJyAgICAgICAgcGx1Z2luc3BhZ2U9Imh0dHA6Ly93 d3cubWFjcm9tZWRpYS5jb20vc2hvY2t3YXZlL2Rvd25sb2FkL2luZGV4LmNnaT9Q MV9Qcm9kX1ZlcnNpb249U2hvY2t3YXZlRmxhc2giIHR5cGU9ImFwcGxpY2F0aW9u L3gtc2hvY2t3YXZlLWZsYXNoIiAnICsNCiAgICAnICAgICAgICB3aWR0aD0iJyAr IGludFdpZHRoICsgJyIgaGVpZ2h0PSInICsgaW50SGVpZ2h0ICsgJyI+PC9lbWJl ZD4gJyArDQogICAgJyA8L29iamVjdD4gJyArDQogICAgJzwvZGl2Pic7DQogICAg c2V0VGltZW91dCgiQ2xvc2VGbG9hdGluZ0Jhbm5lcigpIiwgQ2xvc2luZ1RpbWUp Ow0KICAgIGlmIChpc09ScSkgew0KICAgICAgICByZXR1cm4gdG1wOw0KICAgIH0g ZWxzZSB7DQogICAgICAgIGRvY3VtZW50LndyaXRlKHRtcCk7DQogICAgfQ0KfQ0K DQpmdW5jdGlvbiBGbG9hdGluZ0Jhbm5lckhUTUwoaHRtbENvZGUsIGludFdpZHRo LCBpbnRIZWlnaHQsIGludExlZnQsIGludFRvcCkgew0KDQogICAgaWYgKGRfLmJv ZHkgPT0gbnVsbCkgew0KICAgICAgICBzZXRUaW1lb3V0KCJGbG9hdGluZ0Jhbm5l ckhUTUwoJyIgKyBodG1sQ29kZSArICInLCciICsgaW50V2lkdGggKyAiLCIgKyBp bnRIZWlnaHQgKyAiLCIgKyBpbnRMZWZ0ICsgIiwiICsgaW50VG9wICsgIik7Iiwg MTAwMCk7DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICB2YXIg Q2xvc2luZ1RpbWUgPSA4MDAwOw0KICAgIGlmICgodHlwZW9mIEZsb2F0aW5nQmFu bmVyQ2xvc2luZ1RpbWUpICE9ICd1bmRlZmluZWQnKSB7DQogICAgICAgIENsb3Np bmdUaW1lID0gRmxvYXRpbmdCYW5uZXJDbG9zaW5nVGltZTsNCiAgICB9DQogICAg DQogICAgdmFyIGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQ7DQogICAgaWYgKG5f LmFwcE5hbWUgPT0gIk5ldHNjYXBlIikgew0KICAgICAgICBjbGllbnRXaWR0aCA9 IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7DQogICAgICAgIGNsaWVudEhlaWdo dCA9IHdpbmRvdy5pbm5lckhlaWdodDsNCiAgICB9IGVsc2Ugew0KICAgICAgICBj bGllbnRXaWR0aCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7DQogICAgICAg IGNsaWVudEhlaWdodCA9IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0Ow0KICAg IH0NCg0KICAgIHZhciBsY2xJbnRYID0gKGludExlZnQgPT0gbnVsbCkgPyAwIDog aW50TGVmdDsNCiAgICB2YXIgbGNsSW50WSA9IChpbnRUb3AgPT0gbnVsbCkgPyAw IDogaW50VG9wOw0KDQogICAgaWYgKGNsaWVudFdpZHRoIDwgNzcwKSBjbGllbnRX aWR0aCA9IDc5MjsNCiAgICBpZiAoY2xpZW50SGVpZ2h0IDwgNzUwKSBjbGllbnRI ZWlnaHQgPSA3NTA7DQogICAgdmFyIHBvc2l0aW9uTGVmdCA9IChsY2xJbnRYID09 IDApID8gKGNsaWVudFdpZHRoIC8gMikgLSAoaW50V2lkdGggLyAyKSA6IGxjbElu dFg7DQogICAgdmFyIHBvc2l0aW9uVG9wID0gKGxjbEludFkgPT0gMCkgPyAoY2xp ZW50SGVpZ2h0IC8gMikgLSAoaW50SGVpZ2h0IC8gMikgOiBsY2xJbnRZOw0KDQog ICAgdmFyIHRtcCA9ICc8ZGl2IGlkPSJtZG5GbG9hdGluZyIgJyArDQogICAgJ3N0 eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoyMTQ3NDgzNjQ3OyBib3Jk ZXI6c29saWQgMXB4ICM4MDgwODA7IHdpZHRoOicgKyBpbnRXaWR0aCArICdweDsg aGVpZ2h0OicgKyBpbnRIZWlnaHQgKyAncHg7IHRleHQtYWxpZ246Y2VudGVyOyBs ZWZ0OicgKyBwb3NpdGlvbkxlZnQgKyAncHg7IHRvcDonICsgcG9zaXRpb25Ub3Ag KyAncHg7Ij4nICsNCiAgICAnIDxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRl OyB0ZXh0LWFsaWduOnJpZ2h0OyB3aWR0aDonICsgaW50V2lkdGggKyAncHg7IG1h cmdpbi10b3A6LTExcHg7IGxlZnQ6MTZweDsiPicgKw0KICAgICcgICAgPGltZyBz cmM9Imh0dHA6Ly9hZC5lLWtvbGF5Lm5ldC9mbG9hdGluZy9jbG9zZS5wbmciIGFs dD0iS2FwYXQiIHRpdGxlPSJLYXBhdCIgc3R5bGU9ImN1cnNvcjpwb2ludGVyOyIg b25jbGljaz0iQ2xvc2VGbG9hdGluZ0Jhbm5lcigpOyIgLz4nICsNCiAgICAnIDwv ZGl2PjxpZnJhbWUgc3JjPSInICsgaHRtbENvZGUgKyAnIiBmcmFtZWJvcmRlcj0i MCIgc2Nyb2xsaW5nPSJubyIgaGVpZ2h0PSInICsgaW50SGVpZ2h0ICsgJyIgd2lk dGg9IicgKyBpbnRXaWR0aCArICciPjwvaWZyYW1lPicgKw0KICAgICc8L2Rpdj4n Ow0KICAgIHNldFRpbWVvdXQoIkNsb3NlRmxvYXRpbmdCYW5uZXIoKSIsIENsb3Np bmdUaW1lKTsNCiAgICBpZiAoaXNPUnEpIHsNCiAgICAgICAgcmV0dXJuIHRtcDsN CiAgICB9IGVsc2Ugew0KICAgICAgICBkb2N1bWVudC53cml0ZSh0bXApOw0KICAg IH0NCn0NCg0KZnVuY3Rpb24gbW5fRGV0ZWN0RG9jdHlwZSgpIHsNCiAgICB2YXIg cmUgPSAvXHMrKFg/SFRNTClccysoW1xkXC5dKylccyooW15cL10rKSpcLy9naTsg dmFyIHJlcyA9IGZhbHNlOw0KICAgIGlmIChkb2N1bWVudC5kb2N0eXBlICE9IG51 bGwpIHsgcmVzID0gcmUudGVzdChkb2N1bWVudC5kb2N0eXBlLnB1YmxpY0lkKTsg fSBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQubmFtZXNwYWNlcyAhPSAidW5kZWZp bmVkIikgeyByZXMgPSBkb2N1bWVudC5hbGxbMF0ubm9kZVR5cGUgPT0gOCA/IHJl LnRlc3QoZG9jdW1lbnQuYWxsWzBdLm5vZGVWYWx1ZSkgOiBmYWxzZTsgfSBlbHNl IHsgcmVzID0gZmFsc2U7IH0NCiAgICBpZiAocmVzKSB7IHJlcyA9IG5ldyBPYmpl Y3QoKTsgcmVzWyd4aHRtbCddID0gUmVnRXhwLiQxOyByZXNbJ3ZlcnNpb24nXSA9 IFJlZ0V4cC4kMjsgcmVzWydpbXBvcnRhbmNlJ10gPSBSZWdFeHAuJDM7IHJldHVy biByZXM7IH0NCiAgICBlbHNlIHsgcmV0dXJuIG51bGw7IH0NCn0NCg0KZnVuY3Rp b24gbW5fQWRkTG9hZEV2ZW50KGZ1bmMpIHsgdmFyIG9sZEV2ZW50ID0gd2luZG93 Lm9ubG9hZDsgd2luZG93Lm9ubG9hZCA9ICh0eXBlb2Ygd2luZG93Lm9ubG9hZCAh PSAnZnVuY3Rpb24nKSA/IGZ1bmMgOiBmdW5jdGlvbiAoKSB7IG9sZEV2ZW50KCk7 IGZ1bmMoKTsgfTsgfQ0KZnVuY3Rpb24gbW5fQWRkQmVmb3JlVW5Mb2FkKGZ1bmMp IHsgdmFyIG9sZEV2ZW50ID0gd2luZG93LmJlZm9yZXVubG9hZDsgd2luZG93Lm9u bG9hZCA9ICh0eXBlb2Ygd2luZG93LmJlZm9yZXVubG9hZCAhPSAnZnVuY3Rpb24n KSA/IGZ1bmMgOiBmdW5jdGlvbiAoKSB7IG9sZEV2ZW50KCk7IGZ1bmMoKTsgfTsg fQ0KZnVuY3Rpb24gbW5fQWRkT25VbkxvYWQoZnVuYykgeyB2YXIgb2xkRXZlbnQg PSB3aW5kb3cub251bmxvYWQ7IHdpbmRvdy5vbnVubG9hZCA9ICh0eXBlb2Ygd2lu ZG93Lm9udW5sb2FkICE9ICdmdW5jdGlvbicpID8gZnVuYyA6IGZ1bmN0aW9uICgp IHsgb2xkRXZlbnQoKTsgZnVuYygpOyB9OyB9DQoNCmZ1bmN0aW9uIERPTF9JRnJh bWUoc3JjLCB3aWR0aCwgaGVpZ2h0KSB7DQogICAgdmFyIHJhbmRvbSA9IERvbFJh bmRvbSgpOw0KICAgIHNyYyA9IHNyYy5yZXBsYWNlKCJbdGltZXN0YW1wXSIsIHJh bmRvbSk7DQogICAgdmFyIGlkID0gImlmcmFtZV8iICsgcmFuZG9tOw0KDQogICAg aWYgKGlzT1JxKSB7DQogICAgICAgIHJldHVybiAiPGlmcmFtZSBzcmM9JyIgKyBz cmMgKyAiJyBuYW1lPSciICsgaWQgKyAiJyBpZD0nIiArIGlkICsgIicgd2lkdGg9 JyIgKyB3aWR0aCArICInIGhlaWdodD0nIiArIGhlaWdodCArICInICBib3JkZXI9 JzAnIGZyYW1lYm9yZGVyPScwJyBzY3JvbGxpbmc9J25vJyAgbWFyZ2lud2lkdGg9 JzAnIG1hcmdpbmhlaWdodD0nMCcgc3R5bGU9J3otaW5kZXg6OTsnPjwvaWZyYW1l PiI7DQogICAgfSBlbHNlIHsNCiAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxpZnJh bWUgbmFtZT0nIiArIGlkICsgIicgaWQ9JyIgKyBpZCArICInIHdpZHRoPSciICsg d2lkdGggKyAiJyBoZWlnaHQ9JyIgKyBoZWlnaHQgKyAiJyAgYm9yZGVyPScwJyBm cmFtZWJvcmRlcj0nMCcgc2Nyb2xsaW5nPSdubycgIG1hcmdpbndpZHRoPScwJyBt YXJnaW5oZWlnaHQ9JzAnIHN0eWxlPSd6LWluZGV4Ojk7Jz48L2lmcmFtZT4iKTsN CiAgICAgICAgc2V0VGltZW91dCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIg KyBpZCArICInKS5zcmM9JyciLCAxMDApOw0KICAgICAgICBzZXRUaW1lb3V0KCJk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIiArIGlkICsgIicpLnNyYz0nIiArIHNy YyArICInIiwgNTAwKTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIERPTF9NYWtlUmVx dWVzdEltZyh1cmwpIHsNCiAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsLmxlbmd0 aCA+IDApIHsNCiAgICAgICAgdmFyIHRyYWNrSW1nID0gZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgiaW1nIik7DQogICAgICAgIHRyYWNrSW1nLnN0eWxlLmRpc3BsYXkg PSAnbm9uZSc7DQogICAgICAgIHVybCA9IHVybC5pbmRleE9mKCc/JykgPiAtMSA/ IHVybCArICcmcm5kPScgKyBEb2xSYW5kb20oKSA6IHVybCArICc/cm5kPScgKyBE b2xSYW5kb20oKTsNCiAgICAgICAgdHJhY2tJbWcuc3JjID0gdXJsOw0KICAgICAg ICBkXy5ib2R5LmFwcGVuZENoaWxkKHRyYWNrSW1nKTsNCiAgICB9DQp9DQpmdW5j dGlvbiBBZEJlUFNob3cod2lkdGgsIGhlaWdodCwgZHVyYXRpb24sIGZsYXNoVXJs LCBjbGlja1VybCkgew0KICAgIHZhciBkaXZBZCA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCJNZWR5YW5ldC1BZEJlUCIpOw0KICAgIHZhciBkaXZQbGF5ZXIgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTWVkeWFuZXQtQ2xpZW50UGxheWVyIik7 DQoNCiAgICBkaXZQbGF5ZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAgICBk aXZBZC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCg0KICAgIHZhciBjb2RlID0g JycgKw0KICAgICc8ZGl2IGlkPSJPdXRlciIgc3R5bGU9ImhlaWdodDonICsgZGl2 QWQuc3R5bGUuaGVpZ2h0ICsgJzsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOicg KyBkaXZBZC5zdHlsZS53aWR0aCArICc7IGRpc3BsYXk6dGFibGUtY2VsbDsgdmVy dGljYWwtYWxpZ246bWlkZGxlOyB6LWluZGV4OjIxNDc0ODM2NDY7Ij4nICsNCiAg ICAgICAgJzxkaXYgc3R5bGU9ImJvcmRlcjpzb2xpZCAxcHggIzgwODA4MDsgd2lk dGg6JyArIHdpZHRoICsgJ3B4OyBtYXJnaW46YXV0bzsgIj4nICsNCiAgICAgICAg ICAgICc8ZGl2IHN0eWxlPSJ3aWR0aDonICsgd2lkdGggKyAncHg7IHRleHQtYWxp Z246cmlnaHQ7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjIxNDc0ODM2NDY7 Ij4nICsNCiAgICAgICAgICAgICAgICAnPGltZyBzdHlsZT0ibWFyZ2luLXRvcDot MTNweDsgcmlnaHQ6LTE2cHg7IGN1cnNvcjpwb2ludGVyOyBwb3NpdGlvbjphYnNv bHV0ZTsiIHNyYz0iaHR0cDovL2FkLmUta29sYXkubmV0L2Zsb2F0aW5nL2Nsb3Nl LnBuZyIgYWx0PSJLYXBhdCIgdGl0bGU9IkthcGF0IiBvbmNsaWNrPSJBZEJlUENs b3NlKCk7IiAvPicgKw0KICAgICAgICAgICAgJzwvZGl2PicgKw0KICAgICAgICAg ICAgJzxvYmplY3Qgd2lkdGg9IicgKyB3aWR0aCArICciIGhlaWdodD0iJyArIGhl aWdodCArICciIGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4 LTQ0NDU1MzU0MDAwMCIgJyArDQogICAgICAgICAgICAgICAgJyBjb2RlYmFzZT0i aHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Fi cy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTUsMCwwLDAiPicgKw0KICAgICAg ICAgICAgICAgICc8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSInICsgZmxhc2hV cmwgKyAnP2NsaWNrVEFHPScgKyBjbGlja1VybCArICciIC8+JyArDQogICAgICAg ICAgICAgICAgJzxwYXJhbSBuYW1lPSJ3bW9kZSIgdmFsdWU9InRyYW5zcGFyZW50 IiAvPjxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iaGlnaCIgLz48cGFyYW0g bmFtZT0ic2NhbGUiIHZhbHVlPSJub2JvcmRlciIgLz48cGFyYW0gbmFtZT0iYWxs b3dzY3JpcHRhY2Nlc3MiIHZhbHVlPSJhbHdheXMiIC8+JyArDQogICAgICAgICAg ICAgICAgJzxlbWJlZCBpZD0iZW1iZWQiIHNyYz0iJyArIGZsYXNoVXJsICsgJz9j bGlja1RBRz0nICsgY2xpY2tVcmwgKyAnIiBxdWFsaXR5PSJoaWdoIiBhbGxvd3Nj cmlwdGFjY2Vzcz0iYWx3YXlzIiAnICsNCiAgICAgICAgICAgICAgICAgICAgJ3dt b2RlPSJ0cmFuc3BhcmVudCIgc2NhbGU9Im5vYm9yZGVyIiBwbHVnaW5zcGFnZT0i aHR0cDovL3d3dy5tYWNyb21lZGlhLmNvbS9zaG9ja3dhdmUvZG93bmxvYWQvaW5k ZXguY2dpP1AxX1Byb2RfVmVyc2lvbj1TaG9ja3dhdmVGbGFzaCIgdHlwZT0iYXBw bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giICcgKw0KICAgICAgICAgICAgICAg ICAgICAnd2lkdGg9IicgKyB3aWR0aCArICciIGhlaWdodD0iJyArIGhlaWdodCAr ICciPjwvZW1iZWQ+JyArDQogICAgICAgICAgICAnPC9vYmplY3Q+JyArDQogICAg ICAgICc8L2Rpdj4nICsNCiAgICAnPC9kaXY+JzsNCiAgICBkaXZBZC5pbm5lckhU TUwgPSBjb2RlOw0KICAgIGlmIChkdXJhdGlvbiAhPSAiMCIpIHsgc2V0VGltZW91 dCgiQWRCZVBDbG9zZSgpOyIsIGR1cmF0aW9uICogMTAwMCk7IH0NCiAgICBpZiAo aXNPUnEpIHsNCiAgICAgICAgcmV0dXJuICIiOw0KICAgIH0NCiAgICBlbHNlIHsN CiAgICAgICAgZG9jdW1lbnQud3JpdGUoIiIpOw0KICAgIH0NCn0NCmZ1bmN0aW9u IEFkQmVQQ2xvc2UoKSB7DQogICAgdmFyIGRpdkFkID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoIk1lZHlhbmV0LUFkQmVQIik7DQogICAgdmFyIGRpdlBsYXllciA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJNZWR5YW5ldC1DbGllbnRQbGF5ZXIi KTsNCg0KICAgIGRpdlBsYXllci5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAg ICBkaXZBZC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KfQ0KZnVuY3Rpb24gbW5f TG9hZEpzKGZpbGVQYXRoKSB7DQogICAgaWYgKGZpbGVQYXRoICE9IG51bGwgJiYg ZmlsZVBhdGgubGVuZ3RoID4gMykgew0KICAgICAgICB0cnkgew0KICAgICAgICAg ICAgdmFyIGpzZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOw0K ICAgICAgICAgICAganNmLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsNCiAgICAg ICAgICAgIGpzZi5zcmMgPSBmaWxlUGF0aDsNCiAgICAgICAgICAgIGpzZi5pZCA9 IGZpbGVQYXRoOw0KICAgICAgICAgICAganNmLmFzeW5jID0gdHJ1ZTsNCiAgICAg ICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBd IHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0pLmFw cGVuZENoaWxkKGpzZik7DQogICAgICAgIH0gY2F0Y2ggKGUpIHsgfQ0KICAgIH0N Cn0NCmZ1bmN0aW9uIERPTF9QYWdlU2tpbkxvYWQodGFyZ2V0TmFtZSkgew0KICAg IHZhciBkb2xSYW5kb20gPSBTdHJpbmcoTWF0aC5yYW5kb20oKSkuc3Vic3RyKDIs IDEwKTsNCiAgICBtbl9Mb2FkSnMoaHR0cCArICdhZC5lLWtvbGF5Lm5ldC9nZXR4 bWwuYTI/dGFyZ2V0PScgKyB0YXJnZXROYW1lICsgJyZybmQ9JyArIGRvbFJhbmRv bSk7DQogICAgbW5fTG9hZEpzKGh0dHAgKyAnYWQuZS1rb2xheS5uZXQvcGFnZXNr aW4vbW5fcGFnZXNraW4uanM/dj0xLjgyJyk7DQogICAgc2V0VGltZW91dChmdW5j dGlvbiAoKSB7IG1uX1BhZ2VTa2luTG9hZChwc3AudywgcHNwLmMsIHBzcC5wLCBw c3AuYmksIHBzcC50LCBwc3AuYmcsIHBzcC5zdCk7IH0sIDcwMCk7DQp9DQoNCm1u X0xvYWRKcyhfYnRzcmMpOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=Radikal.js Content-Type: application/x-javascript; charset=utf-8; name=Radikal.js Content-Location: http://www.radikal.com.tr/D/j/1/Radikal.js?v=2 Content-Transfer-Encoding: Base64 77u/dmFyIENvb2tpZXMgPSB7DQogICAgaW5pdDogZnVuY3Rpb24oKSB7DQogICAg ICAgIHZhciBhbGxDb29raWVzID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7ICcp Ow0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbENvb2tpZXMubGVuZ3Ro OyBpKyspIHsNCiAgICAgICAgICAgIHZhciBjb29raWVQYWlyID0gYWxsQ29va2ll c1tpXS5zcGxpdCgnPScpOw0KICAgICAgICAgICAgdGhpc1tjb29raWVQYWlyWzBd XSA9IGNvb2tpZVBhaXJbMV07DQogICAgICAgIH0NCiAgICB9LA0KICAgIGNyZWF0 ZTogZnVuY3Rpb24obmFtZSwgdmFsdWUsIGRheXMpIHsNCiAgICAgICAgaWYgKGRh eXMpIHsNCiAgICAgICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoKTsNCiAgICAg ICAgICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIChkYXlzICogMjQg KiA2MCAqIDYwICogMTAwMCkpOw0KICAgICAgICAgICAgdmFyIGV4cGlyZXMgPSAi OyBleHBpcmVzPSIgKyBkYXRlLnRvR01UU3RyaW5nKCk7DQogICAgICAgIH0NCiAg ICAgICAgZWxzZSB2YXIgZXhwaXJlcyA9ICIiOw0KICAgICAgICBkb2N1bWVudC5j b29raWUgPSBuYW1lICsgIj0iICsgdmFsdWUgKyBleHBpcmVzICsgIjsgcGF0aD0v IjsNCiAgICAgICAgdGhpc1tuYW1lXSA9IHZhbHVlOw0KICAgIH0sDQogICAgZXJh c2U6IGZ1bmN0aW9uKG5hbWUpIHsNCiAgICAgICAgdGhpcy5jcmVhdGUobmFtZSwg JycsIC0xKTsNCiAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDsNCiAgICB9 DQp9Ow0KQ29va2llcy5pbml0KCk7DQoNCg0KZnVuY3Rpb24gY29weV9wcm9wZXJ0 aWVzKCl7fTsgLy9kdW1teSBmdW5jdGlvbiB0byBzdXBwcmVzcyBJRSBlcnJvciBt ZXNzYWdlIQ0KdmFyIEZhY2Vib29rUGx1Z2lucyA9IHsNCiAgICBpc0Jsb2NrZWQg OiB0cnVlLA0KICAgIGhhc0luaXQgOiBmYWxzZSwNCiAgICBpbml0IDogZnVuY3Rp b24oKXsNCiAgICAgICAgaWYodGhpcy5oYXNJbml0KSByZXR1cm47DQogICAgICAg IHRoaXMuaGFzSW5pdCA9IHRydWU7DQogICAgICAgIA0KICAgICAgICBpZihDb29r aWVzWyJGYWNlYm9va1BsdWdpbnNJc0Jsb2NrZWQiXSAhPSBudWxsICYmIENvb2tp ZXNbIkZhY2Vib29rUGx1Z2luc0lzQmxvY2tlZCJdICE9ICIiKXsNCiAgICAgICAg ICAgIHRoaXMuaXNCbG9ja2VkID0gKENvb2tpZXNbIkZhY2Vib29rUGx1Z2luc0lz QmxvY2tlZCJdID09ICJ0cnVlIik7DQogICAgICAgICAgICByZXR1cm47DQogICAg ICAgIH0NCiAgICAgICAgDQogICAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5j cmVhdGVFbGVtZW50KCJzY3JpcHQiKTsNCiAgICAgICAgc2NyaXB0Lmxhbmd1YWdl ID0gImphdmFzY3JpcHQiOw0KICAgICAgICBzY3JpcHQuc3JjID0gImh0dHA6Ly93 d3cuZmFjZWJvb2suY29tL3JzcmMucGhwL3o1VTA4L2hhc2gvM2FtZGlucjMuanMi Ow0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcp WzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7DQogICAgfSwNCiAgICBjcmVhdGVSZWNv bW1lbmRhdGlvbnNQbHVnaW4gOiBmdW5jdGlvbihpZCx3aWR0aCl7DQogICAgICAg IHRoaXMuaW5pdCgpOw0KICAgICAgICB2YXIgd2lkdGggPSB3aWR0aCB8fCAiMTky IjsNCiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsNCiAgICAg ICAgICAgIGlmKENvb2tpZXNbIkZhY2Vib29rUGx1Z2luc0lzQmxvY2tlZCJdID09 IG51bGwgfHwgQ29va2llc1siRmFjZWJvb2tQbHVnaW5zSXNCbG9ja2VkIl0gPT0g IiIpew0KICAgICAgICAgICAgICAgIEZhY2Vib29rUGx1Z2lucy5pc0Jsb2NrZWQg PSAodHlwZW9mKFBhZ2VDYWNoZSkgPT0gInVuZGVmaW5lZCIpOw0KICAgICAgICAg ICAgICAgIENvb2tpZXMuY3JlYXRlKCJGYWNlYm9va1BsdWdpbnNJc0Jsb2NrZWQi LCBGYWNlYm9va1BsdWdpbnMuaXNCbG9ja2VkKTsNCiAgICAgICAgICAgICAgICBD b29raWVzLmluaXQoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKEZh Y2Vib29rUGx1Z2lucy5pc0Jsb2NrZWQpeyANCiAgICAgICAgICAgICAgICBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsN CiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAg ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuaW5uZXJIVE1MID0gJzxp ZnJhbWUgc3JjPSJodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9wbHVnaW5zL3JlY29t bWVuZGF0aW9ucy5waHA/c2l0ZT13d3cucmFkaWthbC5jb20udHImYW1wO3dpZHRo PScgKyB3aWR0aCArICcmYW1wO2hlaWdodD0zMDAmYW1wO2hlYWRlcj10cnVlJmFt cDtjb2xvcnNjaGVtZT1saWdodCZhbXA7Zm9udCZhbXA7bG9jYWxlPXRyX1RSIiBz Y3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9ImJvcmRlcjpub25l OyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOicgKyB3aWR0aCArICdweDsgaGVpZ2h0 OjMwMHB4OyIgYWxsb3dUcmFuc3BhcmVuY3k9InRydWUiPjwvaWZyYW1lPic7DQog ICAgICAgIH0pOw0KICAgIH0sDQogICAgY3JlYXRlTGlrZUJ1dHRvblBsdWdpbiA6 IGZ1bmN0aW9uKGlkLHdpZHRoKXsNCiAgICAgICAgdGhpcy5pbml0KCk7DQogICAg ICAgIHZhciB3aWR0aCA9IHdpZHRoIHx8ICIxOTIiOw0KICAgICAgICAkKGRvY3Vt ZW50KS5yZWFkeShmdW5jdGlvbigpew0KICAgICAgICAgICAgaWYoQ29va2llc1si RmFjZWJvb2tQbHVnaW5zSXNCbG9ja2VkIl0gPT0gbnVsbCB8fCBDb29raWVzWyJG YWNlYm9va1BsdWdpbnNJc0Jsb2NrZWQiXSA9PSAiIil7DQogICAgICAgICAgICAg ICAgRmFjZWJvb2tQbHVnaW5zLmlzQmxvY2tlZCA9ICh0eXBlb2YoUGFnZUNhY2hl KSA9PSAidW5kZWZpbmVkIik7DQogICAgICAgICAgICAgICAgQ29va2llcy5jcmVh dGUoIkZhY2Vib29rUGx1Z2luc0lzQmxvY2tlZCIsIEZhY2Vib29rUGx1Z2lucy5p c0Jsb2NrZWQpOw0KICAgICAgICAgICAgICAgIENvb2tpZXMuaW5pdCgpOw0KICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgaWYoRmFjZWJvb2tQbHVnaW5zLmlzQmxv Y2tlZCl7IA0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KGlkKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KICAgICAgICAgICAgICAgIHJl dHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKGlkKS5pbm5lckhUTUwgPSAnPGlmcmFtZSBzcmM9Imh0dHA6Ly93 d3cuZmFjZWJvb2suY29tL3BsdWdpbnMvbGlrZS5waHA/aHJlZj0nKyBlbmNvZGVV UklDb21wb25lbnQoZG9jdW1lbnQubG9jYXRpb24pICsnJmFtcDtsYXlvdXQ9c3Rh bmRhcmQmYW1wO3Nob3dfZmFjZXM9dHJ1ZSZhbXA7d2lkdGg9JyArIHdpZHRoICsg JyZhbXA7YWN0aW9uPWxpa2UmYW1wO2ZvbnQmYW1wO2NvbG9yc2NoZW1lPWxpZ2h0 JmFtcDtoZWlnaHQ9MTAwJmFtcDtsb2NhbGU9dHJfVFIiIHNjcm9sbGluZz0ibm8i IGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOm5vbmU7IG92ZXJmbG93Omhp ZGRlbjsgd2lkdGg6JyArIHdpZHRoICsgJ3B4OyBoZWlnaHQ6MTAwcHg7IiBhbGxv d1RyYW5zcGFyZW5jeT0idHJ1ZSI+PC9pZnJhbWU+JzsNCiAgICAgICAgfSk7DQog ICAgfQ0KfQ0K ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: text/css; charset=iso-8859-9 Content-Location: http://www.radikal.com.tr/D/c/1/Custom.css Content-Transfer-Encoding: 8bit .HaberBaslik1 { color:#c41425; font-size:15px; font-weight:bold; } .HaberBaslik2 { font-size:13px; color:#1d398d; font-weight:bold; } .HaberSpot { font-weight:bold; } ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=adnet_async.js Content-Type: application/x-javascript; charset=iso-8859-9; name=adnet_async.js Content-Location: http://adonline.e-kolay.net/async/adnet_async.js Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gQUROZXRfR2V0QmFubmVyKHRhcmdldCxrcyxQSUQsZyxjLGRpdjJp ZCxrczIsZzIsYzIpIHsNCiAgICB2YXIgZHZJRCA9IHRhcmdldCsnXycra3MrJ18n K1BJRCsnXycrZysnXycrYzsNCiAgICBkb2N1bWVudC53cml0ZSgnPGRpdiB3aWR0 aD0iMHB4IiBpZD0iJytkdklEKyciPjwvZGl2PicpOw0KICAgIHZhciBzdHJUb1dy aXRlID0gJzxpZnJhbWUgc3R5bGU9ImRpc3BsYXk6bm9uZSIgc3JjPSJqYXZhc2Ny aXB0OmRvY3VtZW50LndyaXRlKFwnPHNjcmlwdCB0eXBlPXRleHQvamF2YXNjcmlw dCBzcmM9aHR0cDovL2Fkb25saW5lLmUta29sYXkubmV0L2FzeW5jL2Fkdl9hc3lu Yy5hc3A/dGFyZ2V0PScrdGFyZ2V0Kycma3M9JytrcysnJlBJRD0nK1BJRCsnJmc9 JytnKycmYz0nK2MrJyZkaXYyaWQ9JytkaXYyaWQrJyZrczI9JytBRE5FVF9pc251 bGwoa3MyKSsnJmcyPScrQURORVRfaXNudWxsKGcyKSsnJmMyPScrQURORVRfaXNu dWxsKGMyKSsnJmR2aWQ9JytkdklEKyc+PFwvc2NyaXB0PlwnKTtkb2N1bWVudC5j bG9zZSgpOyI+PC9pZnJhbWU+JzsNCiAgICBkb2N1bWVudC53cml0ZShzdHJUb1dy aXRlKTsNCiAgICBkb2N1bWVudC53cml0ZSgiPGltZyBzcmM9J2h0dHA6Ly9hZG9u bGluZS5lLWtvbGF5Lm5ldC9BZG5ldEdlb0Nvb2tpZS5hc3AnIGJvcmRlcj0wIHdp ZHRoPTAgaGVpZ2h0PTAgc3R5bGU9cG9zaXRpb246cmVsYXRpdmU7IC8+Iik7DQp9 DQpmdW5jdGlvbiBBRE5FVF9pc251bGwoX19zKXtyZXR1cm4gX19zJiZfX3MhPSJ1 bmRlZmluZWQiP19fczoiIjt9DQoNCg== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=radikalkitap10.jpg Content-Type: image/jpeg; name=radikalkitap10.jpg Content-Location: http://www.radikal.com.tr/data/img/radikalkitap10.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2Jl AGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQ DA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AA EQgAHwAkAwERAAIRAQMRAf/EAI4AAAICAwAAAAAAAAAAAAAAAAYHBAUBAgMBAQEA AwEAAAAAAAAAAAAAAAQFAAECAxAAAQMDAwIEBAcBAAAAAAAAAgEDBBEFBgASEyEH QSIUFTFhMiNRgUJzsxYXNxEAAQMCAwQJAwUBAAAAAAAAARECAwAhMRIEQVGxE3GB kaHBMkIUBdFSovBhIjNDNP/aAAwDAQACEQMRAD8Affda+3SxYTMuVre4JjRsoDm1 CohuiJdCRU+C6b8fC2SYNdcXoHyUzo4S5pQ240u4147lDg7+Z/2th8GGwdW3Ay24 qKRoOx1fLsKhVpTVN0Wn5wi5ZC7VqW2XUcnncwFNiVZ2PJ83yTHgv91yCJi1qJxI sdxqOhm87XZuVXSVBRT6IifPXlLBDE/I1hkdjjh2V7Q6iaaPO54jbhhj21mx3nuH au5zGMX26pPhOtK+06jQAjra9BLolRVFRUVK6yWKB+nMjGoayGWdmoEb3ZhTe1Eq 7QF3y/5vcf3I/wDMOqXxP946+FS/mP8And1caXmGWS8OdlMmZbgvk9OeB2G2LZKT wfa8zaU8yeVeqapaqVo1bCotj+2NTNHC/wBm8Ibm3dXVy13DIOxdjh2aOcuVEn7J DDSbjFUcdRVVE/DkFV+XXWhI2PWOLygLfpW+W6XRNDApDvrRVen2S71Y/FEkJ+Lb VF+nWik4qoi/l10OIH2jzvdTpXD3bBtDaaOpFWKHs0tdgv1mk2O6zxiNGjTzyi62 DghyojZLvrQSMdqKqdV6aTpZHxvD2haLq445WFjimHGh+Fjlsh2uJAtWcyY8dSWH AEX4LgK4PRWgRW6mSV+lFrpT53OcXOiBOJs7txorIGtaGtlKYC7ezCqLDO3sGxSV YZzsgduSo7GiwXWG+ds0XjcQHFe3qSCtFFPDoukarWmQKYvLvW3CjaTRNjKCXzbA RfjUmy452/tGaSruWRPyJ8JsHZk2bKjkxvfM2uM3fKqOCrPUVpRKa4lnnfEG5AAc AAVt4XruKCBkxdnJcMSSEvbHfamnzNcXNvHh27+SqbdtK7q/ClNSEKpVlQi0G5ZB hzMvsiOvjGbjAr1wMzbAHGedtYzVDWpF6wG9vT5fqRFdp3lsTkCrh2FfxWp+pYHS tUomPQoT8kqkaxWfb7xbwh3lq53E7mj099CRuS0yLMZH6Ickt28Ab5A2ENDHaIUD SDqGuaVblbltuVXJ6elL7MTejjTOa9qODnZr70Rq+roUJtFhapduxHH2Y0RoMgjP bG7ILbgq2imkKQZtKKo6qp6oi2BRfinTdrh+peSTkPr7xfZ6f0ldx6WMADOP8/xN tvq2eNaQ8KbcZFqDlDCgEKIwz6YNhFAYV/jJw2JAGXIji/cAgRVDxSo6x2qQqWHz HH7im8d18a0zSKEbIPKBb7Qu523eEwol9og/537P7i16H2j0fu3l4uL03H6n69uz b5/rpTx8dF5h5+dL51TrwpnKb7fJm/jkTN1Y+Nf/2Q== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=arrow-down.gif Content-Type: image/gif; name=arrow-down.gif Content-Location: http://www.radikal.com.tr/data/img/finance/arrow-down.gif Content-Transfer-Encoding: Base64 R0lGODlhDAAJALMAAP////3x8fnU1Pa3t/SpqfCMjO5/f+xwcOpiYulTU+dFReMo KOEaGgAAAAAAAAAAACH5BAEHAAAALAAAAAAMAAkAAAQssLADqiUsIcaKBQO3CAtH VKQJpMzAnhXGLApnfIDMUThgcIie5aAICC3GTwQAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=kur_002.gif Content-Type: image/gif; name=kur_002.gif Content-Location: http://www.radikal.com.tr/D/i/1/V2/kur_002.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAKALMAAPn5+WRjY5ybm8HBwYB/f/Dw8MrKym1sbN3d3bi3t5OSkomJ iQAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4w LWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8 cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjIt cmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4 bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1s bnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNv dXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4w LyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkFEMDQ1MzUyOTI0 QkRGMTE5RDg1Q0M3ODAxOUQ0NEJFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlk OkUzM0FFM0E4RUNBNjExREZBMjYyRjNFNzIwNDc1MTNDIiB4bXBNTTpJbnN0YW5j ZUlEPSJ4bXAuaWlkOkUzM0FFM0E3RUNBNjExREZBMjYyRjNFNzIwNDc1MTNDIiB4 bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyI+IDx4 bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEzMzhE MjVBQTZFQ0RGMTE5QTc1RjM3NUYzREJEMTUyIiBzdFJlZjpkb2N1bWVudElEPSJ4 bXAuZGlkOkFEMDQ1MzUyOTI0QkRGMTE5RDg1Q0M3ODAxOUQ0NEJFIi8+IDwvcmRm OkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQg ZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva 2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuq qainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6 eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtK SUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsa GRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAAAAAAAsAAAAABAACgAABDEQ yElrNWqmMCwYATEZR5BUQlhQSClMaSDPdPAWRK3bsL1OIA4qNJJ1LIMF8IDwOCsR ADs= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=radikal-logo.jpg Content-Type: image/jpeg; name=radikal-logo.jpg Content-Location: http://www.radikal.com.tr/data/img/gfx/radikal-logo.jpg Content-Transfer-Encoding: Base64 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 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=jquery.marquee.min.js Content-Type: application/x-javascript; charset=iso-8859-9; name=jquery.marquee.min.js Content-Location: http://www.radikal.com.tr/data/js/jquery.marquee.min.js Content-Transfer-Encoding: Base64 LyoKICogTWFycXVlZSBqUXVlcnkgUGx1Zy1pbgogKgogKiBDb3B5cmlnaHQgMjAw OSBHaXZhLCBJbmMuIChodHRwOi8vd3d3LmdpdmFpbmMuY29tL2xhYnMvKSAKICog CiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy LjAgKHRoZSAiTGljZW5zZSIpOwogKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAqIFlvdSBt YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogKiAKICogCWh0dHA6 Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKiAKICogVW5s ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3 cml0aW5nLCBzb2Z0d2FyZQogKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogKiBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4 cHJlc3Mgb3IgaW1wbGllZC4KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogKiBsaW1p dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICoKICogRGF0ZTogMjAwOS0wNS0y MAogKiBSZXY6ICAxLjAuMDEKICovCihmdW5jdGlvbihBKXtBLm1hcnF1ZWU9e3Zl cnNpb246IjEuMC4wMSJ9O0EuZm4ubWFycXVlZT1mdW5jdGlvbihFKXt2YXIgRj10 eXBlb2YgYXJndW1lbnRzWzBdPT0ic3RyaW5nIiYmYXJndW1lbnRzWzBdO3ZhciBE PUYmJkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKXx8YXJn dW1lbnRzO3ZhciBDPSh0aGlzLmxlbmd0aD09MCk/bnVsbDpBLmRhdGEodGhpc1sw XSwibWFycXVlZSIpO2lmKEMmJkYmJnRoaXMubGVuZ3RoKXtpZihGLnRvTG93ZXJD YXNlKCk9PSJvYmplY3QiKXtyZXR1cm4gQ31lbHNle2lmKENbRl0pe3ZhciBCO3Ro aXMuZWFjaChmdW5jdGlvbihHKXt2YXIgSD1BLmRhdGEodGhpcywibWFycXVlZSIp W0ZdLmFwcGx5KEMsRCk7aWYoRz09MCYmSCl7aWYoISFILmpxdWVyeSl7Qj1BKFtd KS5hZGQoSCl9ZWxzZXtCPUg7cmV0dXJuIGZhbHNlfX1lbHNle2lmKCEhSCYmISFI LmpxdWVyeSl7Qj1CLmFkZChIKX19fSk7cmV0dXJuIEJ8fHRoaXN9ZWxzZXtyZXR1 cm4gdGhpc319fWVsc2V7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe25ldyBB Lk1hcnF1ZWUodGhpcyxFKX0pfX07QS5NYXJxdWVlPWZ1bmN0aW9uKEUsUSl7UT1B LmV4dGVuZCh7fSxBLk1hcnF1ZWUuZGVmYXVsdHMsUSk7dmFyIE89dGhpcyxNPUEo RSksRj1NLmZpbmQoIj4gbGkiKSxIPTAsRz1mYWxzZSxMPWZhbHNlLE49MDtBLmRh dGEoTVswXSwibWFycXVlZSIsTyk7dGhpcy5wYXVzZT1mdW5jdGlvbigpe0c9dHJ1 ZTtQKCl9O3RoaXMucmVzdW1lPWZ1bmN0aW9uKCl7Rz1mYWxzZTtEKCl9O3RoaXMu dXBkYXRlPWZ1bmN0aW9uKCl7dmFyIFI9Ri5sZW5ndGg7Rj1NLmZpbmQoIj4gbGki KTtpZihSPD0xKXtEKCl9fTtmdW5jdGlvbiBLKFIpe2lmKEYuZmlsdGVyKCIuIitR LmNzc1Nob3dpbmcpLmxlbmd0aD4wKXtyZXR1cm4gZmFsc2V9dmFyIFQ9Ri5lcShS KTtpZihBLmlzRnVuY3Rpb24oUS5iZWZvcmVzaG93KSl7US5iZWZvcmVzaG93LmFw cGx5KE8sW00sVF0pfXZhciBTPXt0b3A6KFEueVNjcm9sbD09InRvcCI/Ii0iOiIr IikrVC5vdXRlckhlaWdodCgpKyJweCIsbGVmdDowfTtNLmRhdGEoIm1hcnF1ZWUu c2hvd2luZyIsdHJ1ZSk7VC5hZGRDbGFzcyhRLmNzc1Nob3dpbmcpO1QuY3NzKFMp LmFuaW1hdGUoe3RvcDoiMHB4In0sUS5zaG93U3BlZWQsUS5meEVhc2luZ1Nob3cs ZnVuY3Rpb24oKXtpZihBLmlzRnVuY3Rpb24oUS5zaG93KSl7US5zaG93LmFwcGx5 KE8sW00sVF0pfU0uZGF0YSgibWFycXVlZS5zaG93aW5nIixmYWxzZSk7SihUKX0p fWZ1bmN0aW9uIEooUyxSKXtpZihMPT10cnVlKXtyZXR1cm4gZmFsc2V9Uj1SfHxR LnBhdXNlU3BlZWQ7aWYoQyhTKSl7c2V0VGltZW91dChmdW5jdGlvbigpe2lmKEw9 PXRydWUpe3JldHVybiBmYWxzZX12YXIgVj1TLm91dGVyV2lkdGgoKSxUPVYqLTEs VT1wYXJzZUludChTLmNzcygibGVmdCIpLDEwKTtTLmFuaW1hdGUoe2xlZnQ6VCsi cHgifSwoKFYrVSkqUS5zY3JvbGxTcGVlZCksUS5meEVhc2luZ1Njcm9sbCxmdW5j dGlvbigpe0koUyl9KX0sUil9ZWxzZXtpZihGLmxlbmd0aD4xKXtzZXRUaW1lb3V0 KGZ1bmN0aW9uKCl7aWYoTD09dHJ1ZSl7cmV0dXJuIGZhbHNlfVMuYW5pbWF0ZSh7 dG9wOihRLnlTY3JvbGw9PSJ0b3AiPyIrIjoiLSIpK00uaW5uZXJIZWlnaHQoKSsi cHgifSxRLnNob3dTcGVlZCxRLmZ4RWFzaW5nU2Nyb2xsKTtJKFMpfSxSKX19fWZ1 bmN0aW9uIEkoUil7aWYoQS5pc0Z1bmN0aW9uKFEuYWZ0ZXJzaG93KSl7US5hZnRl cnNob3cuYXBwbHkoTyxbTSxSXSl9Ui5yZW1vdmVDbGFzcyhRLmNzc1Nob3dpbmcp O0IoKX1mdW5jdGlvbiBQKCl7TD10cnVlO2lmKE0uZGF0YSgibWFycXVlZS5zaG93 aW5nIikhPXRydWUpe0YuZmlsdGVyKCIuIitRLmNzc1Nob3dpbmcpLmRlcXVldWUo KS5zdG9wKCl9fWZ1bmN0aW9uIEQoKXtMPWZhbHNlO2lmKE0uZGF0YSgibWFycXVl ZS5zaG93aW5nIikhPXRydWUpe0ooRi5maWx0ZXIoIi4iK1EuY3NzU2hvd2luZyks MSl9fWlmKFEucGF1c2VPbkhvdmVyKXtNLmhvdmVyKGZ1bmN0aW9uKCl7aWYoRyl7 cmV0dXJuIGZhbHNlfVAoKX0sZnVuY3Rpb24oKXtpZihHKXtyZXR1cm4gZmFsc2V9 RCgpfSl9ZnVuY3Rpb24gQyhSKXtyZXR1cm4oUi5vdXRlcldpZHRoKCk+TS5pbm5l cldpZHRoKCkpfWZ1bmN0aW9uIEIoKXtIKys7aWYoSD49Ri5sZW5ndGgpe2lmKCFp c05hTihRLmxvb3ApJiZRLmxvb3A+MCYmKCsrTj49US5sb29wKSl7cmV0dXJuIGZh bHNlfUg9MH1LKEgpfWlmKEEuaXNGdW5jdGlvbihRLmluaXQpKXtRLmluaXQuYXBw bHkoTyxbTSxRXSl9QigpfTtBLk1hcnF1ZWUuZGVmYXVsdHM9e3lTY3JvbGw6InRv cCIsc2hvd1NwZWVkOjg1MCxzY3JvbGxTcGVlZDoxMixwYXVzZVNwZWVkOjUwMDAs cGF1c2VPbkhvdmVyOnRydWUsbG9vcDotMSxmeEVhc2luZ1Nob3c6InN3aW5nIixm eEVhc2luZ1Njcm9sbDoibGluZWFyIixjc3NTaG93aW5nOiJtYXJxdWVlLXNob3dp bmciLGluaXQ6bnVsbCxiZWZvcmVzaG93Om51bGwsc2hvdzpudWxsLGFmdGVyc2hv dzpudWxsfX0pKGpRdWVyeSk7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=2.gif Content-Type: image/gif; name=2.gif Content-Location: http://i.radikal.com.tr/HavaDurumu/2.gif Content-Transfer-Encoding: Base64 R0lGODlhKAAoAOYAALnE1Pm+Y9Pa5P726t7j6/3u1Vpzmvzju8jR3fDz9vzhtfn6 +/erNf7+/kplkPrLglRulWd+opSkvXSJqjVUg/zfsc7V4P/79O3w9PWeFert8v3r zqOxx/WdErbB0vzdrP3pyfnBavvVmfalJvvXnf715vagGvzmwvi6Wf3nxfrPiW6E pv/8+PnCbP758EJfi/7y3i5NfvewQY2fuvb4+v747/737LS/0f/+/f/9+vz8/cPM 2jpYhvzcqv7w2/WbDf3v2CZHevvbp/vTlH6RsMbO3GF5nrG9z/3s0vanKp6sw/ap L4eZtSpKfDhWhfb3+URgjEVijeHm7U9qk/758vr7/PT2+PeuPP/89/nEbz1aiP36 9JiowP7y4ChJe/vYoPP19/ajIezv8/jXov3+/v79/PrKfjBPgPrQjfvpzYSXs4ia tvi3Utje55inv+/k0ufr8Jyrwp+uxPnlxvnEcPnHeEhkj/704/vbqffZqfi9YNrW 0PWaCyVGef39/f///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4w LWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8 cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjIt cmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4 bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnht cE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJl Zj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVm IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3Mi IHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzM0MTdDOTRFQzBGMTFERkI2RjBD RTA2OTE1MkE3MDEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzM0MTdDOTVF QzBGMTFERkI2RjBDRTA2OTE1MkE3MDEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RS ZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3MzQxN0M5MkVDMEYxMURGQjZGMENFMDY5 MTUyQTcwMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3MzQxN0M5M0VDMEYx MURGQjZGMENFMDY5MTUyQTcwMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6 UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf2 9fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfG xcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeW lZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdm ZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2 NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcG BQQDAgEAACH5BAAAAAAALAAAAAAoACgAAAf/gH6Cg4SFhoeIiYqLjI2Oj3+RkpOU lZFVVZaam5yTAwOdoaKRKSCjp5siX6islFl0kziVDaMNGGCTVDWRVFcyOZEDW5Mu NqhbFQWSFxXAJxkmygNfLJIbFResPig9ki0qfxV8fClYIeB/OCQoMK1/Qh16pg9L uyQkfz4ZB38pKB0K3EVCwceEAhdActwBAuRODhg4FJjg00JgpDQTuylAscSEiSV6 +H3gM0KZxT9vKgwI8WOcSz4d6lz4YOqPDRejFkixYKFNgkgwrrwcasbmgxBCcHbC wMEIjzNnnEyZIeDPAD1DXWbYsCGJCqWcEEDoQ7YsWR5K/lwIkHVcixzG/0IBcEI2 iJ0IKyDEKMvkTw0ZbRm4mHlgmCYEFMhOuSFmQRUwFlaUlfBnToesI2CggckggAgQ cSNZMUDWgIZKC2aQpVA1D+CXI7qI+JGBzYMKSHZJuhGkjxYCm4iQneDnjw4RYVwK /nOigCxLE8hS1qTDTe8YRpRg+AMiybgsWExqSjClT4yqlghE8GK2jwMEzDtkKFBg RJYS6Sc06cNjeyUxDpSlxQv79eGEBX888MAfORwwBB6hRSKAHWWdcVolbfTGAwdw iOFBeX1AsEAZNgxRQSQXZCNJAqT1QYERROBSiQ5yRFDEJFJEQdYOf4xR0AaWHNFb FEXQQAYnOlQigZ50f+yRXACWqNFHExwIBEBvRETyRgAZdENJdDHw6E4cZM0wSQUB IEEJE30EwYU7GgQYBACUdKEAFZMAwJ4TR1hBwxOABipooDTQUESLU9BQSQ66iRZB XS84IOmklFYKRYFniBmKFGO15+mnZ92ACgZcGBDFC1Ckquqqqr4QhQFMtNEKDQIA 4MGtuOaqKwAW/HTKI8AGK+ywxBZrLCOBAAA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=9.gif Content-Type: image/gif; name=9.gif Content-Location: http://i.radikal.com.tr/HavaDurumu/9.gif Content-Transfer-Encoding: Base64 R0lGODlhKAAoAOYAAOrq78zM21hkkMXG1nl+o46RsUpbiXV7oZ6gvHJ4njpRgmJs loeLrSlHe7W2y7GzyTZPgO/u8+bm7CZGel5pk6KkvqCivZyeukBVhGBqlbq7zq+x yIGFqJqcuZmbuWpymldjjypJfE5ei01cij1TgzNOfy9Lfb6/0sDB0ypIe4uPr4SI q2Rtl/v7+/X1+IOHqv39/vPy9j9UhNbW4ejn7srK2XyBpd3d5m92nfT09tzc5ZOW tMjI2MDA0ra3zH6Dp/Hx9d/f6H2CpmRtlvr6+/Ly9mx0m1dkkGZul7+/0s/P3JGV s9LT37m6zi5KfTBLfZSXtVBfjEVYhoqNroWKq1NhjjFMfs7O26mrxKutxNDR3oqO r1RhjmhwmHB3ntTV4Nra5Nvb5UZZiDROf7y90Pj4+1xnkktcire4zcvL2qaowsHC 1IKHqXuApJCTs8PE1Jeat9PU4FpmkTJNf+Xl7OTk66iqw9HS3i1JfLi5zbu90FVi j8fI2EJVhSVGev///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4w LWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8 cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjIt cmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4 bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnht cE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJl Zj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVm IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3Mi IHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDdDNzVGRjRFQzBBMTFERkI5QUU5 MjhFQTAyNERGNjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDdDNzVGRjVF QzBBMTFERkI5QUU5MjhFQTAyNERGNjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RS ZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0N0M3NUZGMkVDMEExMURGQjlBRTkyOEVB MDI0REY2OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0N0M3NUZGM0VDMEEx MURGQjlBRTkyOEVBMDI0REY2OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6 UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf2 9fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfG xcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeW lZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdm ZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2 NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcG BQQDAgEAACH5BAAAAAAALAAAAAAoACgAAAf/gH+Cg4SDRQEVLwkfODZwJzSFkpOU f0VYGX0lE36dfiYyXFAAlaWFM11OnqurDQI9pqZ6Yqy1qwoVsZQ1GKxWRwQrNgsk rCYWuoVBVatzBAExRERlOTo7UqtjaMmCOT+rZyeVOkirAmHcA3ieImmmQQurOy26 LTieMk26TCCeBky6bpToNIEDNyirjCCoEaNUFk5++vDRRaOAgVoYhGipRAWiHF0z 4tnyM0GED0lAslzsdCCWDjMjV2HQN2gGjieeGvww1aLDqhBVDrQZospTlBuCwFCo ZYSnz059LtyIVudBFE8ThAjysmqCiTFsYoFZ0ECEA0laaHUaMWODAnwe/wYEiGQK Bh0eOmBM2gDRCoIEnhSgoMfNVISVfl7068TAReFYQET6ITDCk4bHsSII8CSkcqfL mEt9GdMphJvFfqg4Dj3JBQFPJHwA7qSADGtJAHZA9GPGhVtPGJY4SHKiuPHjyJEn 0WDHSwpPELAIMsKqgYnr2LNr3/4kBKsQLwbFORKzvPnSNlYLumPk+fn3/qA0LERD DQ4DEEro38+/v3/9GGRQQA2lAKDEGj2goOCCDDbYYII8BKHXbRRWSGEONoAgwIYc drjHAlf8kcMUXHRoogAgUCCOJA4MdN4PLlzRwHkTIDFJADJMkMKOPPY4Ixwt3CBF Aw30aKR1Bk1yAmwVL6zg5JNPclBBEX/AUAOTUGb5QgdAWFghDD6oIOaYZKrAAAKR tPDGFluUSeYUHkgwCQ8QvLdEC2EUY14DbUySh4vmceCCEjOaN0EXk8RQAAtDsODo o44OkcEBX/zhAgILLADppgskEAAhgQAAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=3.gif Content-Type: image/gif; name=3.gif Content-Location: http://i.radikal.com.tr/HavaDurumu/3.gif Content-Transfer-Encoding: Base64 R0lGODlhKAAeAPcAADFQgfP1+ElkkK+7zv7+/iZHeyhIfN/j6zpXh/Dz9qKwxvT2 +JWlvkhkj/n6+y5OgICUsl93nSpKffHz92d+okVijvb4+vz9/W6Eptbc5i5Nf83V 4TVUhLXB0p2swyxMfsLL2qm2ylBqlKe0ydPZ5Ofr8HqOrjlXhj9cijRTg8fP3TBP ge3w9PDy9kplkOzv9Pz8/aOxx8TN20Fei8XO3Ort8uXp74iat/3+/rzG1jRSg2mA pEZijuLm7b3H10Rgjff4+q+8znSJqrvG1uru8ldwmLC8z5Chu0djjytLfn6RsIqc uFhymU1ok9nf6NTb5VNtllJsloSXtJemv83U4D1aievu83aLrJ6txDZVhPv7/Nje 57bB07/J2JSkvjpYh2l/o8/W4sDJ2Ku4zKq3y5OkvbnE1HyQr9LZ42N7oE9qlNHY 46Sxx+Hm7drg6UVhjaa0yfX2+WJ6n77I12F5n0JfjENfjC9PgG+Fp0BcimN6oDdV hWqBpNfd5uTp7666zWV8oejr8aSyyGZ9olx0m9Pa5O7w9YaZteTo7m+Ep8jR3lFr lcHL2Zamv3WKq+/x9TxaiI+gu4ucuGB4nnCGqChJfIWXtFRul3OIqS1NfyVGev// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4w LWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8 cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjIt cmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4 bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnht cE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJl Zj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVm IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3Mi IHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjFFMTE5QzVFQzA5MTFERkI2NjFB QzFEQjE4MENGMUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjFFMTE5QzZF QzA5MTFERkI2NjFBQzFEQjE4MENGMUUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RS ZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCMUUxMTlDM0VDMDkxMURGQjY2MUFDMURC MTgwQ0YxRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCMUUxMTlDNEVDMDkx MURGQjY2MUFDMURCMTgwQ0YxRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6 UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf2 9fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfG xcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeW lZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdm ZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2 NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcG BQQDAgEAACH5BAAAAAAALAAAAAAoAB4AAAj/ADcJHEiwIEECBhMqXEgwQB8fChgw iJEjQwCGGBOy6CCkggFNIDVVqpPIyISMKFXsSBKyZUgJg1TgQLlQAQKXOEPmEYSQ ZkEGmVoWQEEBkxBAVVze8eKT4IgVLUWwcUIkQQIibsgsaqnBQ9NNG360lGKj58FH Nz6E/BLGpxZHLRkswLhEQkgKPmWcCGniIsYLOwqA3AOCpqSQKA7QPLBXUwE9hRKY TVhiUsgjDlD6aaRDKI8pNhaumRFSEUoZDXKCRMLIIIEakT5qqqAYo5EsqkMCCHFh IIwcalpCQYSxTZOWCC7RKXIz5AoaAmGEeODyTe2FJCqEBNOlxaYFYuS04ozwAiz1 kIKj9MCI45AGDWdOEmRBqaUPIBjQF8ESZENmjBPMYQYQCT0hQEgQZGAXSBhY8RVG loTEhAIhNbDFgxiNIBsPEIR0BYYYwSFbAyYgCCJDSoREyBEhRWDBiQlRQRpINwwR 0gMxwFhQDxG0RIMhqYGkQxmBWLBAAEgmqeSSS8bxQhAutIRBCxdQ2FIKArggwJZc dunll82FBAkaAiVAQW5ophlSCkMQVAMeaqkpZ0gGiFBYQQuMwccPHADg55+ABiqo nxzYkYYHJSzkQAZc/DHAo5BGKumkA3RAwosFBQQAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=4.gif Content-Type: image/gif; name=4.gif Content-Location: http://i.radikal.com.tr/HavaDurumu/4.gif Content-Transfer-Encoding: Base64 R0lGODlhKAAoAOYAALnE1Pm+Y9Pa5P726t7j6/3u1Vpzmvzju8jR3fDz9vzhtfn6 +/erNf7+/kplkPrLglRulWd+opSkvXSJqjVUg/zfsc7V4P/79O3w9PWeFert8v3r zqOxx/WdErbB0vzdrP3pyfnBavvVmfalJvvXnf715vagGvzmwvi6Wf3nxfrPiW6E pv/8+PnCbP758EJfi/7y3i5NfvewQY2fuvb4+v747/737LS/0f/+/f/9+vz8/cPM 2jpYhvzcqv7w2/WbDf3v2CZHevvbp/vTlH6RsMbO3GF5nrG9z/3s0vanKp6sw/ap L4eZtSpKfDhWhfb3+URgjEVijeHm7U9qk/758vr7/PT2+PeuPP/89/nEbz1aiP36 9JiowP7y4ChJe/vYoPP19/ajIezv8/jXov3+/v79/PrKfjBPgPrQjfvpzYSXs4ia tvi3Utje55inv+/k0ufr8Jyrwp+uxPnlxvnEcPnHeEhkj/704/vbqffZqfi9YNrW 0PWaCyVGef39/f///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4w LWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8 cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjIt cmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4 bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnht cE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJl Zj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVm IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3Mi IHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzM0MTdDOTRFQzBGMTFERkI2RjBD RTA2OTE1MkE3MDEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzM0MTdDOTVF QzBGMTFERkI2RjBDRTA2OTE1MkE3MDEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RS ZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3MzQxN0M5MkVDMEYxMURGQjZGMENFMDY5 MTUyQTcwMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3MzQxN0M5M0VDMEYx MURGQjZGMENFMDY5MTUyQTcwMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6 UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf2 9fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfG xcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeW lZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdm ZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2 NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcG BQQDAgEAACH5BAAAAAAALAAAAAAoACgAAAf/gH6Cg4SFhoeIiYqLjI2Oj3+RkpOU lZFVVZaam5yTAwOdoaKRKSCjp5siX6islFl0kziVDaMNGGCTVDWRVFcyOZEDW5Mu NqhbFQWSFxXAJxkmygNfLJIbFResPig9ki0qfxV8fClYIeB/OCQoMK1/Qh16pg9L uyQkfz4ZB38pKB0K3EVCwceEAhdActwBAuRODhg4FJjg00JgpDQTuylAscSEiSV6 +H3gM0KZxT9vKgwI8WOcSz4d6lz4YOqPDRejFkixYKFNgkgwrrwcasbmgxBCcHbC wMEIjzNnnEyZIeDPAD1DXWbYsCGJCqWcEEDoQ7YsWR5K/lwIkHVcixzG/0IBcEI2 iJ0IKyDEKMvkTw0ZbRm4mHlgmCYEFMhOuSFmQRUwFlaUlfBnToesI2CggckggAgQ cSNZMUDWgIZKC2aQpVA1D+CXI7qI+JGBzYMKSHZJuhGkjxYCm4iQneDnjw4RYVwK /nOigCxLE8hS1qTDTe8YRpRg+AMiybgsWExqSjClT4yqlghE8GK2jwMEzDtkKFBg RJYS6Sc06cNjeyUxDpSlxQv79eGEBX888MAfORwwBB6hRSKAHWWdcVolbfTGAwdw iOFBeX1AsEAZNgxRQSQXZCNJAqT1QYERROBSiQ5yRFDEJFJEQdYOf4xR0AaWHNFb FEXQQAYnOlQigZ50f+yRXACWqNFHExwIBEBvRETyRgAZdENJdDHw6E4cZM0wSQUB IEEJE30EwYU7GgQYBACUdKEAFZMAwJ4TR1hBwxOABipooDTQUESLU9BQSQ66iRZB XS84IOmklFYKRYFniBmKFGO15+mnZ92ACgZcGBDFC1Ckquqqqr4QhQFMtNEKDQIA 4MGtuOaqKwAW/HTKI8AGK+ywxBZrLCOBAAA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=5.gif Content-Type: image/gif; name=5.gif Content-Location: http://i.radikal.com.tr/HavaDurumu/5.gif Content-Transfer-Encoding: Base64 R0lGODlhKAAoAOYAALm6zqyuxV5pk4aKrM3N2zZPgJaZt/Ly9lFgjC1JfKaowuDg 6Nra5KOlv8nJ2Xl+o2pymsDA0khaiD1Tg2VulyhHesLD1E1ciq+wx0BVhGZvmEVY hyZGeoCFqHJ4nypJfDlQgVZjj1FfjKCivTFMfuvr70daiO7t8v39/ujn7t/f6PDv 81hkkG92ndPU4Pj4+1pmkVtnko+SsdTV4KGjvjBLffv7+/r6+32CpjpRgqSmwIKH qb+/0tHS3kNWhTJNf7O0ykNWhre4zUtcitDR3kZZiOPi6pCTs0RXhuno7lNhjsPE 1N3d5oOHqj9UhIiLrTROf7u90KmrxH6Dp+/u83+Ep+bm7OXl7PT09pSXtY2QsMfI 2HyBpYyPr97e5m11nDtSgufn7YuPr5yeuuTk68XF1rS1ytbW4dLT346Rsc/P3JGU s/X1+Hp/pGtzm2BqlWNslkFVhVdkkLy90PHx9bGyydXW4dvb5erp74iMrYqNrtnZ 5JibuJuduSVGev///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4w LWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8 cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjIt cmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4 bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnht cE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJl Zj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVm IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3Mi IHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzQ1NjY5QTlFQzA5MTFERjk0MjE4 RkQxQjNGMzI4NjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzQ1NjY5QUFF QzA5MTFERjk0MjE4RkQxQjNGMzI4NjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RS ZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDNDU2NjlBN0VDMDkxMURGOTQyMThGRDFC M0YzMjg2NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDNDU2NjlBOEVDMDkx MURGOTQyMThGRDFCM0YzMjg2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6 UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf2 9fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfG xcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeW lZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdm ZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2 NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcG BQQDAgEAACH5BAAAAAAALAAAAAAoACgAAAf/gH+Cg4SECxENaQNaYwAzbIWRkpN/ KD1aMQV+m5s1IlwRNpSjhXhrG5ypqTk7TKSkTBoVqrSbHCxbr5MqMKoVQxpuECEk qhtzuoUlFKkfFBgzVylWe1FcmpwbDsmCLzKpEzoHkjc8IakaV9xE2H5xZqQESqk0 yShVnFD1r1EZnDBGdKXwwekLtyOcOIghQAfFKCGz/OQAostGBDgcUiUQIGUFJRkZ /SgZR6rEkw+1/FRwwyDSgS0sOLV4FcZDylQICBBK8aRdBRyvaDTzISfGhQSpWJwQ lORLRJmkbmTJN8UBlj93DATh9OGJIBwhOSV48IoIAnf7CAGYwEnEAgtI/7i26KPA ha4ZNJZIQsEnnwJ8mz4Y8MiNVAp/m/LE4OSBZOFRK95wenCBE8XHpFYImDyEEw/M pBaA2VShy7xNWW6AnoSiC6ccAdxwCmJ3dSQpxTaFSDLiB6cLGFKcKEG8uPHjx0+c 6LEDaScDf1b0SuhEgonr2LNr1y5hQw1VGlT/EbL1pvnzm2J4IVSnMvr3qaB8URFJ zQAlTn6Q2M+/v///JPyQwxAtKODQJFYA0MAIDDbo4IMQMhiACwfaZiElL6iwlCR3 vDDJHVQ8FoYMQkyyQw+TNLFNYS6AQFYkaOQAVCRLgNHBVcmcAIEfBehQiBGbQaFA IV5slkADoryiI30nPQ5Swmab5DCkICow0wkGFVIygipK2CGIAd9xYgIZgoihilKk 2NCGKmAAIMgDYUn02QEtqFIAfaOggFAqQ6yoh3ObxDGDIFOoIkEKr5yBCicdDEKE CWLN+IcFRaQig4evlCHABEU8saEgQMDgQxFNOPYHACxMgEQHIUYSCAA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=btn-search-short.gif Content-Type: image/gif; name=btn-search-short.gif Content-Location: http://www.radikal.com.tr/data/img/btn-search-short.gif Content-Transfer-Encoding: Base64 R0lGODlhHQAdALMAAP////P3/dvm+cLW9bbN86rF8ZO17oet7Huk6m6c6GKU5laM 5EuE4kqD4j574AAAACH5BAAHAP8ALAAAAAAdAB0AAAR50MlJq73s6k0z/5YHjo5I fua5pRUSAAXJUgNgE+M8GbY9NKhPoQcQAFegA1GwQCaJAYVGZ1G8bFHMyUo8hE4N AdHwHSnEPW/5w8Wq15vEFZCdfpS9un2DWB6dGjU2RiBUDn0ABH8chg4KCSeNKiWT QZWAl3CZHZsYEQA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=haberkosesi_anasayfa.jpg Content-Type: image/jpeg; name=haberkosesi_anasayfa.jpg Content-Location: http://www.radikal.com.tr/data/img/haberkosesi_anasayfa.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2Jl AGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQ DA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AA EQgAIADSAwERAAIRAQMRAf/EAJYAAAMBAAIDAAAAAAAAAAAAAAMEBQYCBwABCAEA AgMBAQEAAAAAAAAAAAAAAgMAAQQFBgcQAAEDAwMCBAIIBAcBAAAAAAECAwQAEQUh EgYxE0FRIgdhMnGBkaHRUpIUcjNTFfBigrIjQxYIEQACAgECBQIGAgMAAAAAAAAB AgADESEEMUESEwVRInGRwTJSI0IUgbEV/9oADAMBAAIRAxEAPwDNwoOUyU/9nAbc kyVk7GW7lRt5V7tnVVy2gnzxEZ2wuphpODz0WQ5GksOMyGjZxpatqkn4gmhW1CMg 6QmpsU4IwYNOLy6iAEKJV09Y1++r7iwe08CzHyL7q2WGnXnW770NhSiLGxuBRFlA yZQVicDM9uw8qy4hp1h9t13+U2pKgpX8IPWoGU6giQo4OCDPH4eVjo7khh9lu9t7 iVpFz8TUDKeBEjI44gz2iDmHEJW3GkLQoXStKFkEfAgVRdRzEgrc8jAL/cocLS96 XQdpbNwoHytRDHGCcg4jrUHLjrGkfoX+FLLr6iPRH9DDpEptYbcS4hw9EKCgT9AN AcGaFyJRbjZL+g/+hf4UosvqJsVWjDbM4EAtPAnoClWtASI0Axptmd/Sd/SqhJEY AYVta72KjcdQb0JEMRxkSFC6UrUPMAkfdQHEMZjLQfJIAWSOosdPpoTiGMxlneHE JcKkJKgFE3FgTqdaAwhNOnDYgZZUcZFX7AM9xMy2hX+TyrJ3W6c41zwj+gZ46SWh RBNlEi5sb9RTjAEcbDwsSFAedjQHEMRlorPS5+2gMIRtrf8AH76EwhG2SrQa38qW YQjrRUOtxQGFKKGkCOhwOXWo2KPKlE6w8Rli9CZYjP4UEufJGDyEvG5B7IQ19uTF Qt1pXxSb17S1AyhTwM8FQ5V+ocRO4eRcQxfPF4DkcBtq0pTSso82fnbH81JH5kKF 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 LqMMwDVGWIz+FBCn/9k= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=getAD.js Content-Type: application/x-javascript; charset=utf-8; name=getAD.js Content-Location: http://adtext.adnet.com.tr/js/getAD.js Content-Transfer-Encoding: Base64 77u/DQp2YXIgQWRCb3hXaWR0aCA9ICIzMDBweCI7DQp2YXIgQWRCb3hIZWlnaHQ9 IjI1MHB4IjsNCnZhciBBZEJveEhlaWdodElubmVyPSIxMjBweCI7DQoNCnZhciBW aWRlb1dpZHRoID0gIjE4MHB4IjsNCnZhciBWaWRlb0hlaWdodD0iMTUwcHgiOw0K DQp2YXIgRmxhc2hXaWR0aCA9ICIzMDBweCI7DQp2YXIgRmxhc2hIZWlnaHQgPSAi MjUwcHgiOw0KDQoNCnZhciBfbWF4QWRDb3VudD0xMDsNCg0KdmFyIEFkSW1hZ2VQ YXRoID0naHR0cDovL2ltZy5hZG5ldC5jb20udHInOyANCnZhciBBZFZpZGVvcGF0 aD0naHR0cDovL2NyZWEuYWRuZXQuY29tLnRyJzsNCnZhciBBZEZsYXNoUGF0aD0n aHR0cDovL2NyZWEuYWRuZXQuY29tLnRyJzsNCnZhciBBZFJpY2hNZWRpYVBhdGgg PSAnaHR0cDovL2NyZWEuYWRuZXQuY29tLnRyJzsNCg0KdmFyIEFkbmV0S2V5d29y ZFBhdGggPSdodHRwOi8vYWR0ZXh0LmFkbmV0LmNvbS50cic7DQoNCmRvY3VtZW50 LndyaXRlKCc8c2NyJysnaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIn K0FkbmV0S2V5d29yZFBhdGgrJy9BZG5ldEdlb0Nvb2tpZS5hc2h4Ij48L3Njcicr J2lwdD4nKTsNCmRvY3VtZW50LndyaXRlKCc8c2NyJysnaXB0IHR5cGU9InRleHQv amF2YXNjcmlwdCIgc3JjPSInK0FkbmV0S2V5d29yZFBhdGgrJy9qcy9BZHRleHRG bGFzaG9iamVjdC5qcyI+PC9zY3InKydpcHQ+Jyk7DQpkb2N1bWVudC53cml0ZSgn PHNjcicrJ2lwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJytBZG5ldEtl eXdvcmRQYXRoKycvYWRBcnJheS5hc2h4P1BhcnRuZXJJZD0nICsgUGFydG5lcklk ICsgJyI+PC9zY3InKydpcHQ+Jyk7DQpkb2N1bWVudC53cml0ZSgnPHNjcicrJ2lw dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJytBZG5ldEtleXdvcmRQYXRo KycvanMvQWR0ZXh0QWQuanM/dj0xXzEiPjwvc2NyJysnaXB0PicpOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=font-up.gif Content-Type: image/gif; name=font-up.gif Content-Location: http://www.radikal.com.tr/data/img/news/font-up.gif Content-Transfer-Encoding: Base64 R0lGODlhDgAOALMAAD574JW06vj4+vHy9U2F4v///1KJ45e37U+G4pq57QAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAOAA4AAAQpUCQDqq0miXO7PYTnhWJ5 FYVpoSrqpuLLmnMLqyWpEgEOBIMAooQARgAAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=font-down.gif Content-Type: image/gif; name=font-down.gif Content-Location: http://www.radikal.com.tr/data/img/news/font-down.gif Content-Transfer-Encoding: Base64 R0lGODlhDgAOAKIAAKSlpqytrfr5+cXFxf///8zMzAAAAAAAACH5BAAHAP8ALAAA AAAOAA4AAAMdKBXQ3qGoR92qleHNuydguIWiZ56c1kWmdGGRkAAAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=fft5_mf874877.Jpeg Content-Type: image/jpeg; name=fft5_mf874877.Jpeg Content-Location: http://i.radikal.com.tr/644x385/2011/12/14/fft5_mf874877.Jpeg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkS Ew8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjL/wAARCAELAZADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6 Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDz aCUMqAlMjPesvUFA1S5QYySDn8BVJoYfOy4K5btT7osuoEB8jAO7uO1ZouWwhwYi xA+9nipMYlGQBk9T1qBf9Xk4wG6f1qZeXQEjO0jrVEAAoU5XIDHOT+VSj76A5BIx gVDj92/ykcDOO5qQ5Ei/Kcnpk/nQA7eDG7cgAjrzzUqnEgX5s+o6Y71CoJV8Fvv9 qepJZCOCQSBTA6Lw2ivDeZcYBFa1z5cGzPOY854rkbSa7jjnFo6qxAJDrwfarcl3 fPYNLcmMTBf3bRjoKyb1LSujY+1R8FJkyD6ipVmVs5mQk+pBzXHre323JlB78oKl /tC9YYLwkevlD/GlY1sdcrKXG1lPX0qpq6n+yk4z+/FZmnXEzQzTtFHJNGDtCjbn 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 nOa9X0MeZ4a009jaEfoRXk8vN1NknO88n1P/AOuvUPDDhvDelgnAELDr7mm9hMo/ DqQrbWCrnIedcfjmvRlZ92QnzdOeleafD9thtADjFzcDIr0hppCoxcfMeMCPNOW5 mWEjfruPzdvT3ryjx8vk+N3kyMS2qoNxyfXI/L8K9W3soGXwcda8l+JL7vFfllts vkK6kHsAePxp09yZbHp+hxINJ8P7ZB89w+STnGVNcpe4Ova15qMLYzSx7znHbuK6 Pw68MnhvQJEZiVnCuVB4+U5NZF5b2F74jmtJdSihuJ5N8NjA7SSO5HzDdgbcgZya mcW9ioSs9Te8VIo0KEyPvcaYwO09flz9a5z4T7E14u0TL5ljuU7v9rdj9f5Vf17W 9PvbWW1gvDcTWVtJDPuJ8xGA/i9frXI+Cdbay1PzhJskkt1i49Sy8/XGfyq0nykv WR2tlqdtYWWkSyMzeTqM7SKvUAggfqRW1p8L2s+jW06hZ4ra9eRN2TGHBZd3pkGv M77WZrTwnc2sRh2zay3zsBuQBC3H1I5rYj8SfaviBazyXBWCSxLLC3BXfDkAk4yN 2celONOTV+3/AADvq4tKo0ut/wAU/wDM3bfUoZlgto4p3lXRntmQJht5JPH4VD4r jkbwNooAYuzIoGP9g+verttqiS65cwNItrczmFoJQm8M6rwSDwSQTWD4mubj/hGt Pt2kN08euPFlASeBwMdR1qI/ELGSmlyy6u/5/wCYzwDbiX4da3bw+ZHIfN+bBO0j knirng7fc+KYLpQCk1jKNq/NkjaCdo6cj9a1/hcg0/w1f/atsXkXU5cbc4wTngjk YrJ1Gz0W5ubTUPDc15BEzESSRTeWI8kYIGeTjt05pum5O6OKMlazNPxtZQnT7q5B O5LaQ8H2rhPhess3iXU/MYho7NAe3pXonie6ivPDWoXQCHbZu3BHynnPFcV8NCra 9qUhYyv9hiyV7kn9atppNMm92d7LZq/CvIT7Nis3WLZItJuWEbfKufmYnNbztE0r rEuXX765GV+o7fjWRrku7R7tSyECIsQDzjB6j0rLQuOrOS0KML4AMhPP2CQj6nNc LaXUWnI08sJlUKF2DHcj1rvLGVE+G+Q+WXT2z6AkevfOa4jRY2utU3SQtNbW7CVw UyhVT1Pt15FTZyZstIll9RQQ/wBprG2wQ5VAF4BbAHpWdqN19uWzm2eWGV9seAAM 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 r5mwF8dSc9qp6K4krux//9k= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=comment-user.gif Content-Type: image/gif; name=comment-user.gif Content-Location: http://www.radikal.com.tr/data/img/news/comment-user.gif Content-Transfer-Encoding: Base64 R0lGODlhNwA3ALMAALW1tff398XFxczMzObm5t7e3r29vf///+/v79bW1gAAAAAA AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAA3ADcAAAT/UMhJq704a3G6/2AojuQo lWgXrGyanq4YEMkwSEOBxCbHe4HCwEAsEgWJ3c8D+wUSgmKlOFAum7HA0HicCqw8 rCvB1RgGgasvRoh2M8WC+kfm2u2CdHidQkQ3ElwEP2IlBHeABgmEfCgFdwaAaHs8 j5BmkzGFJJZ4mHoumyOHgBaKjDx+E1IbBnKUWVtlG2AvjShtpW6nqDxPkJe1tkta nlMGg3NLCLLAAsnKxFDAVUtMt6lCFQkEoNaiAQgF4+TeKgjoCCsh4uTj6j0iCHWC JOYfnUZJIoXMkIshtDyTIWvVmXuF6NnJ5IEZAADI2JkqksCcGD+RJkI70OahxwLe //LhqSWmDTBeHA14XFlRRTM8Gw+U/HQggICVOJNhdBZzJhwDSgbg9Ai0wyEjXno2 MnnyVYGhDzMphKQURC44kxCoHPpqZ8ZdR6p+uKphh5ahRQ+IRCTWA1kMrtI8xTnp 10kibY2Wyrr1YwevGvJyBAssmVCiSo7ejfjBpxlXHeZG1TO1MIiZswjz9VvzpxHB TJFeMHs4ba7FjK9ZJQzX6eQOdVql7uD4GJfNXYckmi1z6YVLg2ya/iMbNOvWsPPU rHzSOGoikwjo3KLLuK5IwdddRT2wcaOdqzS88kDGYOYo1byDsPucYTFWE4mAXEf7 lr+vv49YCY3/GEPV7NRgHh0k87F3kgADtNRCfdY02IuDEJYgSoQU6mLhhRtEAAA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=jquery.cycle.all.pack.js Content-Type: application/x-javascript; charset=iso-8859-9; name=jquery.cycle.all.pack.js Content-Location: http://www.radikal.com.tr/d/j/4/jquery.cycle.all.pack.js Content-Transfer-Encoding: Base64 LyoNCiAqIGpRdWVyeSBDeWNsZSBQbHVnaW4gKHdpdGggVHJhbnNpdGlvbiBEZWZp bml0aW9ucykNCiAqIEV4YW1wbGVzIGFuZCBkb2N1bWVudGF0aW9uIGF0OiBodHRw Oi8vbWFsc3VwLmNvbS9qcXVlcnkvY3ljbGUvDQogKiBDb3B5cmlnaHQgKGMpIDIw MDcgTS4gQWxzdXANCiAqIFZlcnNpb246IDIuMDINCiAqIER1YWwgbGljZW5zZWQg dW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzOg0KICogaHR0cDovL3d3dy5v cGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHANCiAqIGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbA0KICovDQpldmFsKGZ1bmN0 aW9uKHAsYSxjLGssZSxyKXtlPWZ1bmN0aW9uKGMpe3JldHVybihjPGE/Jyc6ZShw YXJzZUludChjL2EpKSkrKChjPWMlYSk+MzU/U3RyaW5nLmZyb21DaGFyQ29kZShj KzI5KTpjLnRvU3RyaW5nKDM2KSl9O2lmKCEnJy5yZXBsYWNlKC9eLyxTdHJpbmcp KXt3aGlsZShjLS0pcltlKGMpXT1rW2NdfHxlKGMpO2s9W2Z1bmN0aW9uKGUpe3Jl dHVybiByW2VdfV07ZT1mdW5jdGlvbigpe3JldHVybidcXHcrJ307Yz0xfTt3aGls ZShjLS0paWYoa1tjXSlwPXAucmVwbGFjZShuZXcgUmVnRXhwKCdcXGInK2UoYykr J1xcYicsJ2cnKSxrW2NdKTtyZXR1cm4gcH0oJygzKCQpezggaz1cJzIuMmZcJzsk Lm0ubD0zKGope0sgNi4xMCgzKCl7NChqJiZqLjFTPT0xUil7MlIoail7MUtcJzJI XCc6NCg2LlEpMUQoNi5RKTs2LlE9MDtLOzFLXCcxSVwnOjYuWD0xO0s7MUtcJzJk XCc6Ni5YPTA7SzsyYzpqPXsxODpqfX19OCBiPSQoNiksJE89Yi4yOSgpLHI9JE8u MlEoKTs0KHIuQjwyKUs7OCBjPSQuMkooe30sJC5tLmwuMVosanx8e30sJC4yRD9i LjJCKCk6e30pOzQoYy4xRSljLjFZPWMuMnZ8fHIuQjtjLnU9Yy51P1tjLnVdOltd O2MuVj1jLlY/W2MuVl06W107Yy5WLjJtKDMoKXtjLjFBPTB9KTs4IGQ9Ni4yZzs4 IHc9MXkoKGQuMXgoL3c6KFxcZCspLyl8fFtdKVsxXSl8fGMuQzs4IGg9MXkoKGQu MXgoL2g6KFxcZCspLyl8fFtdKVsxXSl8fGMuRDtjLkg9MXkoKGQuMXgoL3Q6KFxc ZCspLyl8fFtdKVsxXSl8fGMuSDs0KGIueShcJzF0XCcpPT1cJzJiXCcpYi55KFwn MXRcJyxcJzJhXCcpOzQodyliLkModyk7NChoJiZoIT1cJzFyXCcpYi5EKGgpOzQo Yy5VPj1yLkIpYy5VPTA7OCBlPWMuVXx8MDskTy55KFwnMXRcJyxcJzI3XCcpLjFx KCkuMTAoMyhpKXs4IHo9ZT9pPj1lP3IuQi0oaS1lKTplLWk6ci5CLWk7JCg2KS55 KFwnei0yM1wnLHopfSk7JChyW2VdKS5HKCk7NChjLjE5JiZ3KSRPLkModyk7NChj LjE5JiZoJiZoIT1cJzFyXCcpJE8uRChoKTs0KGMuMUkpYi4ySSgzKCl7Ni5YPTF9 LDMoKXs2Llg9MH0pOzggZj0kLm0ubC5GW2MuMThdOzQoJC4yMChmKSlmKGIsJE8s Yyk7JE8uMTAoMygpezggYT0kKDYpOzYuUz0oYy4xOSYmaCk/aDphLkQoKTs2LlI9 KGMuMTkmJncpP3c6YS5DKCl9KTtjLnY9Yy52fHx7fTtjLnM9Yy5zfHx7fTtjLng9 Yy54fHx7fTskTy4xbChcJzoxbihcJytlK1wnKVwnKS55KGMudik7NChjLk0pJCgk T1tlXSkueShjLk0pOzQoYy5IKXs0KGMuTC4xUz09MVIpYy5MPXsyczoycSwycDoy bn1bYy5MXXx8Mmw7NCghYy4xbyljLkw9Yy5MLzI7MUIoKGMuSC1jLkwpPDJoKWMu SCs9Yy5MfTQoYy4xeiljLjFrPWMuMWo9Yy4xejs0KCFjLjFkKWMuMWQ9Yy5MOzQo IWMuMWMpYy4xYz1jLkw7Yy4yZT1yLkI7Yy5QPWU7NChjLjExKXtjLnE9Yy5QOzFC KGMucT09Yy5QKWMucT0xaS4xWCgxaS4xMSgpKnIuQil9MWEgYy5xPWMuVT49KHIu Qi0xKT8wOmMuVSsxOzggZz0kT1tlXTs0KGMudS5CKWMudVswXS4xaChnLFtnLGcs YywxV10pOzQoYy5WLkI+MSljLlZbMV0uMWgoZyxbZyxnLGMsMVddKTs0KGMuWSYm IWMuSiljLko9Yy5ZOzQoYy5KKSQoYy5KKS4xdyhcJ1lcJywzKCl7SyAxdihyLGMs Yy4xYj8tMToxKX0pOzQoYy4xdSkkKGMuMXUpLjF3KFwnWVwnLDMoKXtLIDF2KHIs YyxjLjFiPzE6LTEpfSk7NChjLjE3KTFWKHIsYyk7NChjLkgpNi5RPTFVKDMoKXsx NihyLGMsMCwhYy4xYil9LGMuSCsoYy4xVHx8MCkpfSl9OzMgMTYoYSxiLGMsZCl7 NChiLjFBKUs7OCBwPWFbMF0uMXMsWj1hW2IuUF0sSj1hW2IucV07NChwLlE9PT0w JiYhYylLOzQoIWMmJiFwLlgmJmIuMUUmJigtLWIuMVk8PTApKUs7NChjfHwhcC5Y KXs0KGIudS5CKSQuMTAoYi51LDMoaSxvKXtvLjFoKEosW1osSixiLGRdKX0pOzgg ZT0zKCl7JC4xMChiLlYsMyhpLG8pe28uMWgoSixbWixKLGIsZF0pfSl9OzQoYi5x IT1iLlApe2IuMUE9MTs0KGIuMW0pYi4xbShaLEosYixlKTsxYSA0KCQuMjAoJC5t LmxbYi4xOF0pKSQubS5sW2IuMThdKFosSixiLGUpOzFhICQubS5sLjFRKFosSixi LGUpfTQoYi4xMSl7Yi5QPWIucTsxQihiLnE9PWIuUCliLnE9MWkuMVgoMWkuMTEo KSphLkIpfTFhezggZj0oYi5xKzEpPT1hLkI7Yi5xPWY/MDpiLnErMTtiLlA9Zj9h LkItMTpiLnEtMX00KGIuMTcpJChiLjE3KS4xUChcJ2FcJykuMjgoXCcxSFwnKS4x TyhcJ2E6MW4oXCcrYi5QK1wnKVwnKS4yNihcJzFIXCcpfTQoYi5IKXAuUT0xVSgz KCl7MTYoYSxiLDAsIWIuMWIpfSxiLkgpfTszIDF2KGEsYixjKXs4IHA9YVswXS4x cyxIPXAuUTs0KEgpezFEKEgpO3AuUT0wfWIucT1iLlArYzs0KGIucTwwKWIucT1h LkItMTsxYSA0KGIucT49YS5CKWIucT0wOzQoYi4xcCYmMU0gYi4xcD09XCczXCcp Yi4xcChjPjAsYi5xLGFbYi5xXSk7MTYoYSxiLDEsYz49MCk7SyAyNX07MyAxVihi LGMpezggZD0kKGMuMTcpOyQuMTAoYiwzKGksbyl7OCBhPSgxTSBjLjFMPT1cJzNc Jyk/JChjLjFMKGksbykpOiQoXCc8YSAyUD0iIyI+XCcrKGkrMSkrXCc8L2E+XCcp OzQoYS4yTyhcJzJOXCcpLkI9PTApYS4ySyhkKTthLjF3KFwnWVwnLDMoKXtjLnE9 aTs4IHA9YlswXS4xcyxIPXAuUTs0KEgpezFEKEgpO3AuUT0wfTQoMU0gYy4xSj09 XCczXCcpYy4xSihjLnEsYltjLnFdKTsxNihiLGMsMSwhYy4xYik7SyAyNX0pfSk7 ZC4xUChcJ2FcJykuMU8oXCdhOjFuKFwnK2MuVStcJylcJykuMjYoXCcxSFwnKX07 JC5tLmwuMVE9MyhhLGIsYyxkKXs4IGU9JChhKSwkbj0kKGIpOyRuLnkoYy52KTs4 IGY9MygpeyRuLjFnKGMucyxjLjFkLGMuMWssZCl9O2UuMWcoYy54LGMuMWMsYy4x aiwzKCl7NChjLkkpZS55KGMuSSk7NCghYy4xbylmKCl9KTs0KGMuMW8pZigpfTsk Lm0ubC5GPXsyMjozKGEsYixjKXtiLjFsKFwnOjFuKFwnK2MuVStcJylcJykueShc JzFmXCcsMCk7Yy51LkUoMygpeyQoNikuRygpfSk7Yy5zPXsxZjoxfTtjLng9ezFm OjB9O2MuST17VDpcJ05cJ319fTskLm0ubC4yRz0zKCl7SyBrfTskLm0ubC4xWj17 MTg6XCcyMlwnLEg6MkYsTDoyQywxZDpBLDFjOkEsWTpBLEo6QSwxdTpBLDFwOkEs MTc6QSwxSjpBLDFMOkEsdTpBLFY6QSwxejpBLDFrOkEsMWo6QSwxZTpBLHM6QSx4 OkEsdjpBLEk6QSwxbTpBLEQ6XCcxclwnLFU6MCwxbzoxLDExOjAsMTk6MCwxSTow LDFFOjAsMVQ6MH19KSg1KTs1Lm0ubC5GLjJBPTMoZCxlLGYpe2QueShcJ1dcJyxc JzE0XCcpO2YudS5FKDMoYSxiLGMpezUoNikuRygpO2Mudi43PWIuMTM7Yy54Ljc9 MC1hLjEzfSk7Zi5NPXs3OjB9O2Yucz17NzowfTtmLkk9e1Q6XCdOXCd9fTs1Lm0u bC5GLjJ6PTMoZCxlLGYpe2QueShcJ1dcJyxcJzE0XCcpO2YudS5FKDMoYSxiLGMp ezUoNikuRygpO2Mudi43PTAtYi4xMztjLnguNz1hLjEzfSk7Zi5NPXs3OjB9O2Yu cz17NzowfTtmLkk9e1Q6XCdOXCd9fTs1Lm0ubC5GLjJ5PTMoZCxlLGYpe2QueShc J1dcJyxcJzE0XCcpO2YudS5FKDMoYSxiLGMpezUoNikuRygpO2Mudi45PWIuMTI7 Yy54Ljk9MC1hLjEyfSk7Zi5NPXs5OjB9O2Yucz17OTowfX07NS5tLmwuRi4yeD0z KGQsZSxmKXtkLnkoXCdXXCcsXCcxNFwnKTtmLnUuRSgzKGEsYixjKXs1KDYpLkco KTtjLnYuOT0wLWIuMTI7Yy54Ljk9YS4xMn0pO2YuTT17OTowfTtmLnM9ezk6MH19 OzUubS5sLkYuMnc9MyhmLGcsaCl7Zi55KFwnV1wnLFwnMTRcJykuQygpO2gudS5F KDMoYSxiLGMsZCl7NSg2KS5HKCk7OCBlPWEuMTIsMUY9Yi4xMjtjLnY9ZD97OTox Rn06ezk6LTFGfTtjLnMuOT0wO2MueC45PWQ/LWU6ZTtnLjFsKGEpLnkoYy52KX0p O2guTT17OTowfTtoLkk9e1Q6XCdOXCd9fTs1Lm0ubC5GLjJ1PTMoZixnLGgpe2Yu eShcJ1dcJyxcJzE0XCcpO2gudS5FKDMoYSxiLGMsZCl7NSg2KS5HKCk7OCBlPWEu MTMsMUM9Yi4xMztjLnY9ZD97NzotMUN9Ons3OjFDfTtjLnMuNz0wO2MueC43PWQ/ ZTotZTtnLjFsKGEpLnkoYy52KX0pO2guTT17NzowfTtoLkk9e1Q6XCdOXCd9fTs1 Lm0ubC5GLjJ0PTMoYSxiLGMpe2Mucz17QzpcJ0dcJ307Yy54PXtDOlwnMXFcJ319 OzUubS5sLkYuMkU9MyhhLGIsYyl7Yy5zPXtEOlwnR1wnfTtjLng9e0Q6XCcxcVwn fX07NS5tLmwuRi4xZT0zKGYsZyxoKXs4IHc9Zi55KFwnV1wnLFwnMnJcJykuQygp O2cueSh7OTowLDc6MH0pO2gudS5FKDMoKXs1KDYpLkcoKX0pO2guTD1oLkwvMjto LjExPTA7aC4xZT1oLjFlfHx7OTotdyw3OjE1fTtoLnI9W107MUcoOCBpPTA7aTxn LkI7aSsrKWguci5FKGdbaV0pOzFHKDggaT0wO2k8aC5VO2krKyloLnIuRShoLnIu MjEoKSk7aC4xbT0zKGEsYixjLGQpezggZT01KGEpO2UuMWcoYy4xZSxjLjFkLGMu MWssMygpe2Muci5FKGMuci4yMSgpKTsxRyg4IGk9MCwxTj1jLnIuQjtpPDFOO2kr Kyk1KGMucltpXSkueShcJ3otMjNcJywxTi1pKTtlLjFnKHs5OjAsNzowfSxjLjFj LGMuMWosMygpezUoNikuMXEoKTs0KGQpZCgpfSl9KX19OzUubS5sLkYuMm89Myhk LGUsZil7Zi51LkUoMyhhLGIsYyl7NSg2KS5HKCk7Yy52Ljc9Yi5TO2Mucy5EPWIu U30pO2YuTT17NzowfTtmLnY9e0Q6MH07Zi5zPXs3OjB9O2YueD17RDowfTtmLkk9 e1Q6XCdOXCd9fTs1Lm0ubC5GLjJMPTMoZCxlLGYpe2YudS5FKDMoYSxiLGMpezUo NikuRygpO2Mucy5EPWIuUztjLnguNz1hLlN9KTtmLk09ezc6MH07Zi52PXs3OjAs RDowfTtmLng9e0Q6MH07Zi5JPXtUOlwnTlwnfX07NS5tLmwuRi4yTT0zKGQsZSxm KXtmLnUuRSgzKGEsYixjKXs1KDYpLkcoKTtjLnYuOT1iLlI7Yy5zLkM9Yi5SfSk7 Zi52PXtDOjB9O2Yucz17OTowfTtmLng9e0M6MH07Zi5JPXtUOlwnTlwnfX07NS5t LmwuRi4yaz0zKGQsZSxmKXtmLnUuRSgzKGEsYixjKXs1KDYpLkcoKTtjLnMuQz1i LlI7Yy54Ljk9YS5SfSk7Zi52PXs5OjAsQzowfTtmLnM9ezk6MH07Zi54PXtDOjB9 O2YuST17VDpcJ05cJ319OzUubS5sLkYuMmo9MyhkLGUsZil7Zi5NPXs3OjAsOTow fTtmLkk9e1Q6XCdOXCd9O2YudS5FKDMoYSxiLGMpezUoNikuRygpO2Mudj17Qzow LEQ6MCw3OmIuUy8yLDk6Yi5SLzJ9O2Mucz17NzowLDk6MCxDOmIuUixEOmIuU307 Yy54PXtDOjAsRDowLDc6YS5TLzIsOTphLlIvMn19KX07NS5tLmwuRi4yaT0zKGQs ZSxmKXtmLnUuRSgzKGEsYixjKXtjLnY9e0M6MCxEOjAsMWY6MSw5OmIuUi8yLDc6 Yi5TLzIsMjQ6MX07Yy5zPXs3OjAsOTowLEM6Yi5SLEQ6Yi5TfX0pO2YueD17MWY6 MH07Zi5JPXsyNDowfX07Jyw2MiwxNzgsJ3x8fGZ1bmN0aW9ufGlmfGpRdWVyeXx0 aGlzfHRvcHx2YXJ8bGVmdHx8fHx8fHx8fHx8fGN5Y2xlfGZufHx8fG5leHRTbGlk ZXxlbHN8YW5pbUlufHxiZWZvcmV8Y3NzQmVmb3JlfHxhbmltT3V0fGNzc3x8bnVs bHxsZW5ndGh8d2lkdGh8aGVpZ2h0fHB1c2h8dHJhbnNpdGlvbnN8c2hvd3x0aW1l b3V0fGNzc0FmdGVyfG5leHR8cmV0dXJufHNwZWVkfGNzc0ZpcnN0fG5vbmV8c2xp ZGVzfGN1cnJTbGlkZXxjeWNsZVRpbWVvdXR8Y3ljbGVXfGN5Y2xlSHxkaXNwbGF5 fHN0YXJ0aW5nU2xpZGV8YWZ0ZXJ8b3ZlcmZsb3d8Y3ljbGVQYXVzZXxjbGlja3xj dXJyfGVhY2h8cmFuZG9tfG9mZnNldFdpZHRofG9mZnNldEhlaWdodHxoaWRkZW58 fGdvfHBhZ2VyfGZ4fGZpdHxlbHNlfHJldnxzcGVlZE91dHxzcGVlZElufHNodWZm bGV8b3BhY2l0eXxhbmltYXRlfGFwcGx5fE1hdGh8ZWFzZU91dHxlYXNlSW58bm90 fGZ4Rm58ZXF8c3luY3xwcmV2TmV4dENsaWNrfGhpZGV8YXV0b3xwYXJlbnROb2Rl fHBvc2l0aW9ufHByZXZ8YWR2YW5jZXxiaW5kfG1hdGNofHBhcnNlSW50fGVhc2lu Z3xidXN5fHdoaWxlfG5leHRIfGNsZWFyVGltZW91dHxhdXRvc3RvcHxuZXh0V3xm b3J8YWN0aXZlU2xpZGV8cGF1c2V8cGFnZXJDbGlja3xjYXNlfHBhZ2VyQW5jaG9y QnVpbGRlcnx0eXBlb2Z8bGVufGZpbHRlcnxmaW5kfGN1c3RvbXxTdHJpbmd8Y29u c3RydWN0b3J8ZGVsYXl8c2V0VGltZW91dHxidWlsZFBhZ2VyfHRydWV8Zmxvb3J8 Y291bnRkb3dufGRlZmF1bHRzfGlzRnVuY3Rpb258c2hpZnR8ZmFkZXxpbmRleHx6 SW5kZXh8ZmFsc2V8YWRkQ2xhc3N8YWJzb2x1dGV8cmVtb3ZlQ2xhc3N8Y2hpbGRy ZW58cmVsYXRpdmV8c3RhdGljfGRlZmF1bHR8cmVzdW1lfHNsaWRlQ291bnR8MDJ8 Y2xhc3NOYW1lfDI1MHxmYWRlWm9vbXx6b29tfHR1cm5SaWdodHw0MDB8dW5zaGlm dHwyMDB8dHVyblVwfGZhc3R8NjAwfHZpc2libGV8c2xvd3xzbGlkZVh8c2Nyb2xs VmVydHxhdXRvc3RvcENvdW50fHNjcm9sbEhvcnp8c2Nyb2xsUmlnaHR8c2Nyb2xs TGVmdHxzY3JvbGxEb3dufHNjcm9sbFVwfGRhdGF8MTAwMHxtZXRhfHNsaWRlWXw0 MDAwfHZlcnxzdG9wfGhvdmVyfGV4dGVuZHxhcHBlbmRUb3x0dXJuRG93bnx0dXJu TGVmdHxib2R5fHBhcmVudHN8aHJlZnxnZXR8c3dpdGNoJy5zcGxpdCgnfCcpLDAs e30pKQ0K ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=jquery.cycle.pack.js Content-Type: application/x-javascript; charset=iso-8859-9; name=jquery.cycle.pack.js Content-Location: http://www.radikal.com.tr/d/j/4/jquery.cycle.pack.js Content-Transfer-Encoding: Base64 LyoNCiAqIGpRdWVyeSBDeWNsZSBQbHVnaW4NCiAqIEV4YW1wbGVzIGFuZCBkb2N1 bWVudGF0aW9uIGF0OiBodHRwOi8vbWFsc3VwLmNvbS9qcXVlcnkvY3ljbGUvDQog KiBDb3B5cmlnaHQgKGMpIDIwMDcgTS4gQWxzdXANCiAqIFZlcnNpb24gMi4wMg0K ICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXM6 DQogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNl bnNlLnBocA0KICogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1s DQogKi8NCmV2YWwoZnVuY3Rpb24ocCxhLGMsayxlLHIpe2U9ZnVuY3Rpb24oYyl7 cmV0dXJuKGM8YT8nJzplKHBhcnNlSW50KGMvYSkpKSsoKGM9YyVhKT4zNT9TdHJp bmcuZnJvbUNoYXJDb2RlKGMrMjkpOmMudG9TdHJpbmcoMzYpKX07aWYoIScnLnJl cGxhY2UoL14vLFN0cmluZykpe3doaWxlKGMtLSlyW2UoYyldPWtbY118fGUoYyk7 az1bZnVuY3Rpb24oZSl7cmV0dXJuIHJbZV19XTtlPWZ1bmN0aW9uKCl7cmV0dXJu J1xcdysnfTtjPTF9O3doaWxlKGMtLSlpZihrW2NdKXA9cC5yZXBsYWNlKG5ldyBS ZWdFeHAoJ1xcYicrZShjKSsnXFxiJywnZycpLGtbY10pO3JldHVybiBwfSgnKDQo JCl7NyBrPVwnMi4xVFwnOyQucy52PTQoail7cSBsLkcoNCgpezMoaiYmai4xdD09 MXMpezJvKGopezFuXCcyYlwnOjMobC51KTFpKGwudSk7bC51PTA7cTsxblwnMWdc JzpsLkY9MTtxOzFuXCcxUlwnOmwuRj0wO3E7MVE6aj17TTpqfX19NyBiPSQobCks JEE9Yi4xTigpLG09JEEuMm0oKTszKG0uODwyKXE7NyBjPSQuMmUoe30sJC5zLnYu MUssanx8e30sJC4yNz9iLjI0KCk6e30pOzMoYy4xayljLjFDPWMuMjJ8fG0uODtj LkM9Yy5DP1tjLkNdOltdO2MuRT1jLkU/W2MuRV06W107Yy5FLjFYKDQoKXtjLjEz PTB9KTs3IGQ9bC4xVTs3IHc9MWIoKGQuMTkoL3c6KFxcZCspLyl8fFtdKVsxXSl8 fGMuVzs3IGg9MWIoKGQuMTkoL2g6KFxcZCspLyl8fFtdKVsxXSl8fGMuTjtjLjk9 MWIoKGQuMTkoL3Q6KFxcZCspLyl8fFtdKVsxXSl8fGMuOTszKGIuQihcJzE1XCcp PT1cJzFQXCcpYi5CKFwnMTVcJyxcJzFPXCcpOzModyliLlcodyk7MyhoJiZoIT1c JzE0XCcpYi5OKGgpOzMoYy5EPj1tLjgpYy5EPTA7NyBlPWMuRHx8MDskQS5CKFwn MTVcJyxcJzFMXCcpLjJsKCkuRyg0KGkpezcgej1lP2k+PWU/bS44LShpLWUpOmUt aTptLjgtaTskKGwpLkIoXCd6LTJpXCcseil9KTskKG1bZV0pLjFHKCk7MyhjLlMm JncpJEEuVyh3KTszKGMuUyYmaCYmaCE9XCcxNFwnKSRBLk4oaCk7MyhjLjFnKWIu MmQoNCgpe2wuRj0xfSw0KCl7bC5GPTB9KTs3IGY9JC5zLnYuMURbYy5NXTszKCQu MUgoZikpZihiLCRBLGMpOyRBLkcoNCgpezcgYT0kKGwpO2wuMjU9KGMuUyYmaCk/ aDphLk4oKTtsLjIzPShjLlMmJncpP3c6YS5XKCl9KTtjLlI9Yy5SfHx7fTtjLlE9 Yy5RfHx7fTtjLlA9Yy5QfHx7fTskQS4xQihcJzpaKFwnK2UrXCcpXCcpLkIoYy5S KTszKGMuMUEpJCgkQVtlXSkuQihjLjFBKTszKGMuOSl7MyhjLnguMXQ9PTFzKWMu eD17MjE6MjAsMVo6MVl9W2MueF18fDFXOzMoIWMuWSljLng9Yy54LzI7MWYoKGMu OS1jLngpPDFWKWMuOSs9Yy54fTMoYy4xZSljLjFkPWMuMWM9Yy4xZTszKCFjLlUp Yy5VPWMueDszKCFjLlgpYy5YPWMueDtjLjFTPW0uODtjLnk9ZTszKGMuTyl7Yy41 PWMueTsxZihjLjU9PWMueSljLjU9MTAuMXkoMTAuTygpKm0uOCl9VCBjLjU9Yy5E Pj0obS44LTEpPzA6Yy5EKzE7NyBnPSRBW2VdOzMoYy5DLjgpYy5DWzBdLlYoZyxb ZyxnLGMsMXhdKTszKGMuRS44PjEpYy5FWzFdLlYoZyxbZyxnLGMsMXhdKTszKGMu SCYmIWMuciljLnI9Yy5IOzMoYy5yKSQoYy5yKS4xOChcJ0hcJyw0KCl7cSAxNyht LGMsYy5MPy0xOjEpfSk7MyhjLjE2KSQoYy4xNikuMTgoXCdIXCcsNCgpe3EgMTco bSxjLGMuTD8xOi0xKX0pOzMoYy5KKTF3KG0sYyk7MyhjLjkpbC51PTF2KDQoKXtL KG0sYywwLCFjLkwpfSxjLjkrKGMuMXV8fDApKX0pfTs0IEsoYSxiLGMsZCl7Myhi LjEzKXE7NyBwPWFbMF0uMWEsST1hW2IueV0scj1hW2IuNV07MyhwLnU9PT0wJiYh YylxOzMoIWMmJiFwLkYmJmIuMWsmJigtLWIuMUM8PTApKXE7MyhjfHwhcC5GKXsz KGIuQy44KSQuRyhiLkMsNChpLG8pe28uVihyLFtJLHIsYixkXSl9KTs3IGU9NCgp eyQuRyhiLkUsNChpLG8pe28uVihyLFtJLHIsYixkXSl9KX07MyhiLjUhPWIueSl7 Yi4xMz0xOzMoYi4xaCliLjFoKEkscixiLGUpO1QgMygkLjFIKCQucy52W2IuTV0p KSQucy52W2IuTV0oSSxyLGIsZSk7VCAkLnMudi4xcihJLHIsYixlKX0zKGIuTyl7 Yi55PWIuNTsxZihiLjU9PWIueSliLjU9MTAuMXkoMTAuTygpKmEuOCl9VHs3IGY9 KGIuNSsxKT09YS44O2IuNT1mPzA6Yi41KzE7Yi55PWY/YS44LTE6Yi41LTF9Myhi LkopJChiLkopLjFxKFwnYVwnKS4xTShcJzFqXCcpLjF6KFwnYTpaKFwnK2IueStc JylcJykuMUooXCcxalwnKX0zKGIuOSlwLnU9MXYoNCgpe0soYSxiLDAsIWIuTCl9 LGIuOSl9OzQgMTcoYSxiLGMpezcgcD1hWzBdLjFhLDk9cC51OzMoOSl7MWkoOSk7 cC51PTB9Yi41PWIueStjOzMoYi41PDApYi41PWEuOC0xO1QgMyhiLjU+PWEuOCli LjU9MDszKGIuMTImJjFwIGIuMTI9PVwnNFwnKWIuMTIoYz4wLGIuNSxhW2IuNV0p O0soYSxiLDEsYz49MCk7cSAxSX07NCAxdyhiLGMpezcgZD0kKGMuSik7JC5HKGIs NChpLG8pezcgYT0oMXAgYy4xbz09XCc0XCcpPyQoYy4xbyhpLG8pKTokKFwnPGEg Mmo9IiMiPlwnKyhpKzEpK1wnPC9hPlwnKTszKGEuMmgoXCcyZ1wnKS44PT0wKWEu MmYoZCk7YS4xOChcJ0hcJyw0KCl7Yy41PWk7NyBwPWJbMF0uMWEsOT1wLnU7Myg5 KXsxaSg5KTtwLnU9MH0zKDFwIGMuMWw9PVwnNFwnKWMuMWwoYy41LGJbYy41XSk7 SyhiLGMsMSwhYy5MKTtxIDFJfSl9KTtkLjFxKFwnYVwnKS4xeihcJ2E6WihcJytj LkQrXCcpXCcpLjFKKFwnMWpcJyl9OyQucy52LjFyPTQoYSxiLGMsZCl7NyBlPSQo YSksJG49JChiKTskbi5CKGMuUik7NyBmPTQoKXskbi4xRihjLlEsYy5VLGMuMWQs ZCl9O2UuMUYoYy5QLGMuWCxjLjFjLDQoKXszKGMuMTEpZS5CKGMuMTEpOzMoIWMu WSlmKCl9KTszKGMuWSlmKCl9OyQucy52LjFEPXsxRTo0KGEsYixjKXtiLjFCKFwn OlooXCcrYy5EK1wnKVwnKS5CKFwnMW1cJywwKTtjLkMuMmMoNCgpeyQobCkuMUco KX0pO2MuUT17MW06MX07Yy5QPXsxbTowfTtjLjExPXsyYTpcJzI5XCd9fX07JC5z LnYuMjg9NCgpe3Ega307JC5zLnYuMUs9e006XCcxRVwnLDk6MmsseDoyNixVOjYs WDo2LEg6NixyOjYsMTY6NiwxMjo2LEo6NiwxbDo2LDFvOjYsQzo2LEU6NiwxZTo2 LDFkOjYsMWM6Niwybjo2LFE6NixQOjYsUjo2LDExOjYsMWg6NixOOlwnMTRcJyxE OjAsWToxLE86MCxTOjAsMWc6MCwxazowLDF1OjB9fSkoMnApOycsNjIsMTUwLCd8 fHxpZnxmdW5jdGlvbnxuZXh0U2xpZGV8bnVsbHx2YXJ8bGVuZ3RofHRpbWVvdXR8 fHx8fHx8fHx8fHx0aGlzfGVsc3x8fHxyZXR1cm58bmV4dHxmbnx8Y3ljbGVUaW1l b3V0fGN5Y2xlfHxzcGVlZHxjdXJyU2xpZGV8fHNsaWRlc3xjc3N8YmVmb3JlfHN0 YXJ0aW5nU2xpZGV8YWZ0ZXJ8Y3ljbGVQYXVzZXxlYWNofGNsaWNrfGN1cnJ8cGFn ZXJ8Z298cmV2fGZ4fGhlaWdodHxyYW5kb218YW5pbU91dHxhbmltSW58Y3NzQmVm b3JlfGZpdHxlbHNlfHNwZWVkSW58YXBwbHl8d2lkdGh8c3BlZWRPdXR8c3luY3xl cXxNYXRofGNzc0FmdGVyfHByZXZOZXh0Q2xpY2t8YnVzeXxhdXRvfHBvc2l0aW9u fHByZXZ8YWR2YW5jZXxiaW5kfG1hdGNofHBhcmVudE5vZGV8cGFyc2VJbnR8ZWFz ZU91dHxlYXNlSW58ZWFzaW5nfHdoaWxlfHBhdXNlfGZ4Rm58Y2xlYXJUaW1lb3V0 fGFjdGl2ZVNsaWRlfGF1dG9zdG9wfHBhZ2VyQ2xpY2t8b3BhY2l0eXxjYXNlfHBh Z2VyQW5jaG9yQnVpbGRlcnx0eXBlb2Z8ZmluZHxjdXN0b218U3RyaW5nfGNvbnN0 cnVjdG9yfGRlbGF5fHNldFRpbWVvdXR8YnVpbGRQYWdlcnx0cnVlfGZsb29yfGZp bHRlcnxjc3NGaXJzdHxub3R8Y291bnRkb3dufHRyYW5zaXRpb25zfGZhZGV8YW5p bWF0ZXxzaG93fGlzRnVuY3Rpb258ZmFsc2V8YWRkQ2xhc3N8ZGVmYXVsdHN8YWJz b2x1dGV8cmVtb3ZlQ2xhc3N8Y2hpbGRyZW58cmVsYXRpdmV8c3RhdGljfGRlZmF1 bHR8cmVzdW1lfHNsaWRlQ291bnR8MDJ8Y2xhc3NOYW1lfDI1MHw0MDB8dW5zaGlm dHwyMDB8ZmFzdHw2MDB8c2xvd3xhdXRvc3RvcENvdW50fGN5Y2xlV3xkYXRhfGN5 Y2xlSHwxMDAwfG1ldGF8dmVyfG5vbmV8ZGlzcGxheXxzdG9wfHB1c2h8aG92ZXJ8 ZXh0ZW5kfGFwcGVuZFRvfGJvZHl8cGFyZW50c3xpbmRleHxocmVmfDQwMDB8aGlk ZXxnZXR8c2h1ZmZsZXxzd2l0Y2h8alF1ZXJ5Jy5zcGxpdCgnfCcpLDAse30pKQ0K ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=jquery.cycle.trans.pack.js Content-Type: application/x-javascript; charset=iso-8859-9; name=jquery.cycle.trans.pack.js Content-Location: http://www.radikal.com.tr/d/j/4/jquery.cycle.trans.pack.js Content-Transfer-Encoding: Base64 LyoNCiAqIGpRdWVyeSBDeWNsZSBQbHVnaW4gVHJhbnNpdGlvbiBEZWZpbml0aW9u cw0KICogVGhpcyBzY3JpcHQgaXMgYSBwbHVnaW4gZm9yIHRoZSBqUXVlcnkgQ3lj bGUgUGx1Z2luDQogKiBFeGFtcGxlcyBhbmQgZG9jdW1lbnRhdGlvbiBhdDogaHR0 cDovL21hbHN1cC5jb20vanF1ZXJ5L2N5Y2xlLw0KICogQ29weXJpZ2h0IChjKSAy MDA3IE0uIEFsc3VwDQogKiBWZXJzaW9uOiAyLjAyDQogKiBEdWFsIGxpY2Vuc2Vk IHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlczoNCiAqIGh0dHA6Ly93d3cu b3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQogKiBodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwNCiAqLw0KZXZhbChmdW5j dGlvbihwLGEsYyxrLGUscil7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUo cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUo YysyOSk6Yy50b1N0cmluZygzNikpfTtpZighJycucmVwbGFjZSgvXi8sU3RyaW5n KSl7d2hpbGUoYy0tKXJbZShjKV09a1tjXXx8ZShjKTtrPVtmdW5jdGlvbihlKXty ZXR1cm4gcltlXX1dO2U9ZnVuY3Rpb24oKXtyZXR1cm4nXFx3Kyd9O2M9MX07d2hp bGUoYy0tKWlmKGtbY10pcD1wLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxiJytlKGMp KydcXGInLCdnJyksa1tjXSk7cmV0dXJuIHB9KCc0Lmwubi5tLlo9MyhkLGUsZil7 ZC5zKFwnQ1wnLFwnRVwnKTtmLnAuOSgzKGEsYixjKXs0KHIpLm8oKTtjLmouNT1i LkY7Yy44LjU9MC1hLkZ9KTtmLng9ezU6MH07Zi43PXs1OjB9O2YudD17djpcJ3Vc J319OzQubC5uLm0uVj0zKGQsZSxmKXtkLnMoXCdDXCcsXCdFXCcpO2YucC45KDMo YSxiLGMpezQocikubygpO2Muai41PTAtYi5GO2MuOC41PWEuRn0pO2YueD17NTow fTtmLjc9ezU6MH07Zi50PXt2OlwndVwnfX07NC5sLm4ubS4xaT0zKGQsZSxmKXtk LnMoXCdDXCcsXCdFXCcpO2YucC45KDMoYSxiLGMpezQocikubygpO2Muai42PWIu RztjLjguNj0wLWEuR30pO2YueD17NjowfTtmLjc9ezY6MH19OzQubC5uLm0uMWM9 MyhkLGUsZil7ZC5zKFwnQ1wnLFwnRVwnKTtmLnAuOSgzKGEsYixjKXs0KHIpLm8o KTtjLmouNj0wLWIuRztjLjguNj1hLkd9KTtmLng9ezY6MH07Zi43PXs2OjB9fTs0 Lmwubi5tLjE4PTMoZixnLGgpe2YucyhcJ0NcJyxcJ0VcJykuaygpO2gucC45KDMo YSxiLGMsZCl7NChyKS5vKCk7RCBlPWEuRyxMPWIuRztjLmo9ZD97NjpMfTp7Njot TH07Yy43LjY9MDtjLjguNj1kPy1lOmU7Zy5SKGEpLnMoYy5qKX0pO2gueD17Njow fTtoLnQ9e3Y6XCd1XCd9fTs0Lmwubi5tLjEyPTMoZixnLGgpe2YucyhcJ0NcJyxc J0VcJyk7aC5wLjkoMyhhLGIsYyxkKXs0KHIpLm8oKTtEIGU9YS5GLEs9Yi5GO2Mu aj1kP3s1Oi1LfTp7NTpLfTtjLjcuNT0wO2MuOC41PWQ/ZTotZTtnLlIoYSkucyhj LmopfSk7aC54PXs1OjB9O2gudD17djpcJ3VcJ319OzQubC5uLm0uMTE9MyhhLGIs Yyl7Yy43PXtrOlwnb1wnfTtjLjg9e2s6XCdKXCd9fTs0Lmwubi5tLjEwPTMoYSxi LGMpe2MuNz17cTpcJ29cJ307Yy44PXtxOlwnSlwnfX07NC5sLm4ubS5IPTMoZixn LGgpe0Qgdz1mLnMoXCdDXCcsXCdZXCcpLmsoKTtnLnMoezY6MCw1OjB9KTtoLnAu OSgzKCl7NChyKS5vKCl9KTtoLlE9aC5RLzI7aC5YPTA7aC5IPWguSHx8ezY6LXcs NToxNX07aC5CPVtdO0koRCBpPTA7aTxnLk87aSsrKWguQi45KGdbaV0pO0koRCBp PTA7aTxoLlc7aSsrKWguQi45KGguQi5OKCkpO2guVT0zKGEsYixjLGQpe0QgZT00 KGEpO2UuUChjLkgsYy4xaCxjLjFnLDMoKXtjLkIuOShjLkIuTigpKTtJKEQgaT0w LE09Yy5CLk87aTxNO2krKyk0KGMuQltpXSkucyhcJ3otMWVcJyxNLWkpO2UuUCh7 NjowLDU6MH0sYy4xZCxjLjFhLDMoKXs0KHIpLkooKTsxOShkKWQoKX0pfSl9fTs0 Lmwubi5tLjE3PTMoZCxlLGYpe2YucC45KDMoYSxiLGMpezQocikubygpO2Muai41 PWIuQTtjLjcucT1iLkF9KTtmLng9ezU6MH07Zi5qPXtxOjB9O2YuNz17NTowfTtm Ljg9e3E6MH07Zi50PXt2OlwndVwnfX07NC5sLm4ubS4xNj0zKGQsZSxmKXtmLnAu OSgzKGEsYixjKXs0KHIpLm8oKTtjLjcucT1iLkE7Yy44LjU9YS5BfSk7Zi54PXs1 OjB9O2Yuaj17NTowLHE6MH07Zi44PXtxOjB9O2YudD17djpcJ3VcJ319OzQubC5u Lm0uMWI9MyhkLGUsZil7Zi5wLjkoMyhhLGIsYyl7NChyKS5vKCk7Yy5qLjY9Yi55 O2MuNy5rPWIueX0pO2Yuaj17azowfTtmLjc9ezY6MH07Zi44PXtrOjB9O2YudD17 djpcJ3VcJ319OzQubC5uLm0uMTQ9MyhkLGUsZil7Zi5wLjkoMyhhLGIsYyl7NChy KS5vKCk7Yy43Lms9Yi55O2MuOC42PWEueX0pO2Yuaj17NjowLGs6MH07Zi43PXs2 OjB9O2YuOD17azowfTtmLnQ9e3Y6XCd1XCd9fTs0Lmwubi5tLjEzPTMoZCxlLGYp e2YueD17NTowLDY6MH07Zi50PXt2OlwndVwnfTtmLnAuOSgzKGEsYixjKXs0KHIp Lm8oKTtjLmo9e2s6MCxxOjAsNTpiLkEvMiw2OmIueS8yfTtjLjc9ezU6MCw2OjAs azpiLnkscTpiLkF9O2MuOD17azowLHE6MCw1OmEuQS8yLDY6YS55LzJ9fSl9OzQu bC5uLm0uMWY9MyhkLGUsZil7Zi5wLjkoMyhhLGIsYyl7Yy5qPXtrOjAscTowLFM6 MSw2OmIueS8yLDU6Yi5BLzIsVDoxfTtjLjc9ezU6MCw2OjAsazpiLnkscTpiLkF9 fSk7Zi44PXtTOjB9O2YudD17VDowfX07Jyw2Miw4MSwnfHx8ZnVuY3Rpb258alF1 ZXJ5fHRvcHxsZWZ0fGFuaW1JbnxhbmltT3V0fHB1c2h8fHx8fHx8fHx8Y3NzQmVm b3JlfHdpZHRofGZufHRyYW5zaXRpb25zfGN5Y2xlfHNob3d8YmVmb3JlfGhlaWdo dHx0aGlzfGNzc3xjc3NBZnRlcnxub25lfGRpc3BsYXl8fGNzc0ZpcnN0fGN5Y2xl V3x8Y3ljbGVIfGVsc3xvdmVyZmxvd3x2YXJ8aGlkZGVufG9mZnNldEhlaWdodHxv ZmZzZXRXaWR0aHxzaHVmZmxlfGZvcnxoaWRlfG5leHRIfG5leHRXfGxlbnxzaGlm dHxsZW5ndGh8YW5pbWF0ZXxzcGVlZHxub3R8b3BhY2l0eXx6SW5kZXh8ZnhGbnxz Y3JvbGxEb3dufHN0YXJ0aW5nU2xpZGV8cmFuZG9tfHZpc2libGV8c2Nyb2xsVXB8 c2xpZGVZfHNsaWRlWHxzY3JvbGxWZXJ0fHpvb218dHVyblJpZ2h0fHx0dXJuRG93 bnx0dXJuVXB8c2Nyb2xsSG9yenxpZnxlYXNlT3V0fHR1cm5MZWZ0fHNjcm9sbFJp Z2h0fHNwZWVkT3V0fGluZGV4fGZhZGVab29tfGVhc2VJbnxzcGVlZElufHNjcm9s bExlZnQnLnNwbGl0KCd8JyksMCx7fSkpDQo= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=fft41_mf800603.Jpeg Content-Type: image/jpeg; name=fft41_mf800603.Jpeg Content-Location: http://i.radikal.com.tr/155x155/2011/08/28/fft41_mf800603.Jpeg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0V FhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoL Cw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozv/wAARCACbAJsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6 Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDQ uLqdbmQCZ8Bj3poup/8Ans/51Tvr2CKed/MVtrH5QRmqUOsRyMQ0bL7jmtSTbF1P /wA9X/Onfap/+er/AJ1nwXsE/wByQZ/ung1P5ijvQBa+0z/89W/OgXU//PVvzqlN dRwLliM/Wqr6rgYWJg3uaBmubyUdZyPq1J9sl/57n/vqubed5XJlXcCfxH41Hx26 UAdSLyQ/8tz/AN9Uv2qY/wDLVvzrlgKt2t9JB8jfPH6Z6fSgDe+0z4/1r/nSfaZ/ +erfnWZ/akX/ADzenRahFK23lD2z3oAvm6n/AOer/nSfaZ/+er/nUPmLSbwe9AiZ rmf/AJ7P+dNNzP8A89n/ADqIyCmNIKBkpuZ/+ez/AJ003U//AD2f86j3imFxQIlN 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 z//Z ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=fft41_mf784251.Jpeg Content-Type: image/jpeg; name=fft41_mf784251.Jpeg Content-Location: http://i.radikal.com.tr/155x155/2011/08/07/fft41_mf784251.Jpeg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0V FhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoL Cw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozv/wAARCACbAJsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6 Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDz i/vL7+0bkC8nAEzY/et6n3qEXd8f+Xy4/wC/rf41YvYs6lc/9dm/malgsmlOFQnj oBmuWVSx6lOhzFI3l+D/AMflx/38b/Gk+3Xw/wCXy4/7+n/GtGbTXhYrIjK391hg iqUsG05pRqqQ54ZxI/t99/z+T/8Af0/40ov77/n7n/7+mmFMHpS7avmM+Qf9vvv+ fyf/AL+Gj7fe/wDP5P8A9/DTNvajbSuPkJPt19/z+T/9/DR9vvv+fyf/AL+GmBaU Jk4o5h8g8X19/wA/k/8A38P+NKL69/5/J/8Av4f8aQR08RGp5y1SHC+vT/y+T/8A fw04Xt90+1z/APfw0wR1MsR9KhzNY0gW7vs/8fc//fw1o6fJeTTpG17Im4gbnkOF 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 nNIuoALgzMPbFYoJPc/nRtFR7FdTT6xLof/Z ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=fft41_mf728551.Jpeg Content-Type: image/jpeg; name=fft41_mf728551.Jpeg Content-Location: http://i.radikal.com.tr/155x155/2011/05/25/fft41_mf728551.Jpeg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0V FhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoL Cw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozv/wAARCACbAJsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6 Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1 h3IbAPpSb39R+QokZS+PYU0cd81wtnSkOLtg/wCFUtQvGggIJ5PpirL7SPm4+hqj fW1r9nZpJGRcf3sfzoW4zjtSv5XkKrM6+uDWes1yTxcSf99Gr+oQWhkLxzvz3YDF ZqzeS2QQcdM17FN3joeTVTUtS7Bbapcf6sysPXnFXYdG1WQ48/H/AAMk/pVKHxJc RDYWDL6EVbi8T7TkRhG9UNZzdfoi4qh1ZbXw7qLf8vn5A1J/wjGp/wDP5/OltvFs YAEjZ9yvP5itCLxRZN/y0x+P+NczqYhbnQoUHt+Znf8ACL6nj/j8/nUbeGNUHH2w E/Uiugi1+xf/AJeVP14qb+2bI/8ALVT75FT9YrLf8ivYUn/w5yr+HNbXo+76SVWk 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 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=fft41_mf727756.Jpeg Content-Type: image/jpeg; name=fft41_mf727756.Jpeg Content-Location: http://i.radikal.com.tr/155x155/2011/05/24/fft41_mf727756.Jpeg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0V FhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoL Cw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozv/wAARCABnAJsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6 Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCh qV7dpf3CrdzY8xukh45p8OoXhjQm7m6D+M1DqK5vrsY6yN/OoYv9WleHKTPUSRav NVuIYmD3kqlvujeeeKpXWpXcsflpcyeWucOs7ZHU9O45q/aaYdcujZwiOV1w7K/Q D61b1HwHq9opls7KI/KRtVmYHPXvwa+hw2Wr6vzVHyzeybXy80eVXxkVV5Vqu5D4 Nn1G6ku7ePUJ2EMfmgedgnLYxk545B+ortYtM1JbiKSS7kdA4JBGM81yfw4hS21+ 6S4hwz2xRlYEEYZTgg+9elNcRm2b15r57EN87TZ3R8jJ1CC4mzJaOvmoCAHJwT26 Ed6858TeLtctbmOxtJzaBYg7mNSC+T3LZPY+1eg2FxegS/a44UcyfL5TEgr2PPQ1 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 UviQ9mf/2Q== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=fft41_mf725526.Jpeg Content-Type: image/jpeg; name=fft41_mf725526.Jpeg Content-Location: http://i.radikal.com.tr/155x155/2011/05/21/fft41_mf725526.Jpeg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0V FhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoL Cw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozv/wAARCACbAJsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6 Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDj r68vBf3AF1NgStj94fWs2e+vkkBF3Pz/ANNDWnfpi/uD/wBNG/nWbeR/JkdjUkoV NSvf+fuf/v4amTUrz/n6m/7+Gs5M1On0oGX11C7P/L1N/wB/DW/4W0+TVX1GW7lu WjSFUjZZG4c9wc8HiuXUj0qxFPJHG0aSuiMwYqGIBI6H60Ad/L4OiYAR6hfRMFAO ZScn15/zxWbL4L1pd5h1Mvj7qmU5P48Vz8Gu6tbHEN7MAOmZSf0NaEXjXW42G6UO P9pFNPQWo248O+KbYKfLuJARyY5c7frzWTLNqcDlJJbpWBwQS1dHD49vxIGntYJE AwVAKE++eax7nUJbq5knWNcOxbbuPHtUsaKa6hdHg3U2f980/wC13f8Az9Tf9/DT 3nXjzIc578GmGS22b2BRR35FFx2E+2Xo6Xc4/wC2ho+33w/5eZT/AMDNJm2dcxy4 pFCuxVGyQOvai4WJo769frcTD/toak+13YH/AB8zf99moUGxcHHXtQWyeKYiRr67 H/LzN/32aia+vD/y9Tf99mjaTTSntQIa17ef8/U3/fZpBeXmP+Pub/v4aCtIFGKA Lt2u69nP/TRv51RuIt0Tj05rVuo/9NuPaVv51WmiyG91pgYSLzU6JTVT5jVmNCSA OT2pFCKlSKlTLaTj/li//fJqQW8o6xOP+AmgRSkZIsGRlUFsAkd6crQkjEiHkj73 cdastbFxh48jOfmXvTTZQkgmJMgk+nJ60hkaqcgrISPYg5qVc+pz70w6ZbMpXysD aF4bsDkVaVD1INMCMbvUUpyeqg1KFGeh/KgqKQFYnb0QD6VCZm3YC4q4yZqAx5k4 FACRoz8k5qwsWBViG22qM08xnB4piKpTjimlKtbfao2U0xFRkoCDFTslIqcUgNK5 QHULgY/5aE1C8POOxzWnc2udRmwOrE/r/wDXpj25wMjoaAOSZNszKexq/prLFceY w+6hI9qhvI/Lv5F96lt03MR6qR+lAzRh1JN3INadtqUPGWxWBDHyOw9a0Ybcbsbg ff1oGdDDf2xHLirAubFhgmM/UCsVLQYHzL+dTCzAHVeuPvCgRpudMYcpAf8AgAqn NHpX/PGD8hUDWigdR+BqpLbjdgFSfrQMllTS+0SfgarOun9Av5Maglh2kjioVjww xQBa+x28v3QwH1qubARX6IDuUruGa1rK2yozSzQAarCAOsR/nQIqGHApjQ/KeO1a r2xweMVBJBwfpTEZZjAzUTrV9ogCf89qgeP0oAostIE4qw6GkVOKAOplgH9okkcF 2H9f6VPLYAx7vTn9alnhPnbv+mwOfxx/WrioXh244INSM888SWwttadQOGAYVFp6 BruFT0ZgD+PFbXji32XtpOBxLF/Ksa0bZNE5/hcH8jTBEkScciuk8KeWNbtA8AnB fGwgfNn68ViSR7LuaPssjD9TWxoJMWpWsu8oFkXLjqvPWmtwPWltbfA/4l8Q/wCA rR9kt8/8eEP/AHytSxMjDK3Bl98g/wAhUuPc1V2Mr/ZYMf8AHlF/3ytcP45tkjvY XW1jh3REZXHzYPtXoGOO9cR46jXzLZh5ucNneTjt0z/Sk2Bwckfy9KgVPnXjvV6U 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 RAv4/wA6AP/Z ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=all.js Content-Type: application/x-javascript; charset=utf-8; name=all.js Content-Location: http://connect.facebook.net/tr_TR/all.js Content-Transfer-Encoding: Base64 LyoxMzIzOTQ4MDc1LDE2OTk0MTg5MSxKSVQgQ29uc3RydWN0aW9uOiB2NDg2Njcw LHRyX1RSKi8KCmlmKCF3aW5kb3cuRkIpd2luZG93LkZCPXtfYXBpS2V5Om51bGws X3Nlc3Npb246bnVsbCxfdXNlclN0YXR1czondW5rbm93bicsX2xvZ2dpbmc6dHJ1 ZSxfaW5DYW52YXM6KCh3aW5kb3cubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoJ2Zi X3NpZ19pbl9pZnJhbWU9MScpPi0xKXx8KHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gu aW5kZXhPZignc2Vzc2lvbj0nKT4tMSl8fCh3aW5kb3cubG9jYXRpb24uc2VhcmNo LmluZGV4T2YoJ3NpZ25lZF9yZXF1ZXN0PScpPi0xKXx8KHdpbmRvdy5uYW1lLmlu ZGV4T2YoJ2lmcmFtZV9jYW52YXMnKT4tMSl8fCh3aW5kb3cubmFtZS5pbmRleE9m KCdhcHBfcnVubmVyJyk+LTEpKSxfaHR0cHM6KHdpbmRvdy5uYW1lLmluZGV4T2Yo J19mYl9odHRwcycpPi0xKSxfZG9tYWluOnthcGk6J2h0dHBzOi8vYXBpLmZhY2Vi b29rLmNvbS8nLGFwaV9yZWFkOidodHRwczovL2FwaS1yZWFkLmZhY2Vib29rLmNv bS8nLGNkbjonaHR0cDovL3N0YXRpYy5hay5mYmNkbi5uZXQvJyxodHRwc19jZG46 J2h0dHBzOi8vcy1zdGF0aWMuYWsuZmJjZG4ubmV0LycsZ3JhcGg6J2h0dHBzOi8v Z3JhcGguZmFjZWJvb2suY29tLycsc3RhdGljZmI6J2h0dHA6Ly9zdGF0aWMuYWsu ZmFjZWJvb2suY29tLycsaHR0cHNfc3RhdGljZmI6J2h0dHBzOi8vcy1zdGF0aWMu YWsuZmFjZWJvb2suY29tLycsd3d3OidodHRwOi8vd3d3LmZhY2Vib29rLmNvbS8n LGh0dHBzX3d3dzonaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tLycsbTonaHR0cDov L20uZmFjZWJvb2suY29tLycsaHR0cHNfbTonaHR0cHM6Ly9tLmZhY2Vib29rLmNv bS8nfSxfbG9jYWxlOm51bGwsX2xvY2FsZUlzUnRsOmZhbHNlLGdldERvbWFpbjpm dW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAnYXBpJzpyZXR1cm4gRkIuX2RvbWFp bi5hcGk7Y2FzZSAnYXBpX3JlYWQnOnJldHVybiBGQi5fZG9tYWluLmFwaV9yZWFk O2Nhc2UgJ2Nkbic6cmV0dXJuICh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2w9PSdo dHRwczonfHxGQi5faHR0cHMpP0ZCLl9kb21haW4uaHR0cHNfY2RuOkZCLl9kb21h aW4uY2RuO2Nhc2UgJ2Nkbl9mb3JlaWduJzpyZXR1cm4gRkIuX2RvbWFpbi5jZG5f Zm9yZWlnbjtjYXNlICdodHRwc19jZG4nOnJldHVybiBGQi5fZG9tYWluLmh0dHBz X2NkbjtjYXNlICdncmFwaCc6cmV0dXJuIEZCLl9kb21haW4uZ3JhcGg7Y2FzZSAn c3RhdGljZmInOnJldHVybiAoZG9jdW1lbnQucmVmZXJyZXIuaW5kZXhPZignaHR0 cHM6Jyk9PTB8fEZCLl9odHRwcyk/RkIuX2RvbWFpbi5odHRwc19zdGF0aWNmYjpG Qi5fZG9tYWluLnN0YXRpY2ZiO2Nhc2UgJ2h0dHBzX3N0YXRpY2ZiJzpyZXR1cm4g RkIuX2RvbWFpbi5odHRwc19zdGF0aWNmYjtjYXNlICd3d3cnOnJldHVybiAod2lu ZG93LmxvY2F0aW9uLnByb3RvY29sPT0naHR0cHM6J3x8RkIuX2h0dHBzKT9GQi5f ZG9tYWluLmh0dHBzX3d3dzpGQi5fZG9tYWluLnd3dztjYXNlICdodHRwc193d3cn OnJldHVybiBGQi5fZG9tYWluLmh0dHBzX3d3dztjYXNlICdtJzpyZXR1cm4gKHdp bmRvdy5sb2NhdGlvbi5wcm90b2NvbD09J2h0dHBzOid8fEZCLl9odHRwcyk/RkIu X2RvbWFpbi5odHRwc19tOkZCLl9kb21haW4ubTtjYXNlICdodHRwc19tJzpyZXR1 cm4gRkIuX2RvbWFpbi5odHRwc19tO319LGNvcHk6ZnVuY3Rpb24oZCxjLGIsZSl7 Zm9yKHZhciBhIGluIGMpaWYoYnx8dHlwZW9mIGRbYV09PT0ndW5kZWZpbmVkJylk W2FdPWU/ZShjW2FdKTpjW2FdO3JldHVybiBkO30sY3JlYXRlOmZ1bmN0aW9uKGMs aCl7dmFyIGU9d2luZG93LkZCLGQ9Yz9jLnNwbGl0KCcuJyk6W10sYT1kLmxlbmd0 aDtmb3IodmFyIGI9MDtiPGE7YisrKXt2YXIgZz1kW2JdO3ZhciBmPWVbZ107aWYo IWYpe2Y9KGgmJmIrMT09YSk/aDp7fTtlW2ddPWY7fWU9Zjt9cmV0dXJuIGU7fSxw cm92aWRlOmZ1bmN0aW9uKGMsYixhKXtyZXR1cm4gRkIuY29weSh0eXBlb2YgYz09 J3N0cmluZyc/RkIuY3JlYXRlKGMpOmMsYixhKTt9LGd1aWQ6ZnVuY3Rpb24oKXty ZXR1cm4gJ2YnKyhNYXRoLnJhbmRvbSgpKigxPDwzMCkpLnRvU3RyaW5nKDE2KS5y ZXBsYWNlKCcuJywnJyk7fSxsb2c6ZnVuY3Rpb24oYSl7aWYoRkIuX2xvZ2dpbmcp aWYod2luZG93LkRlYnVnJiZ3aW5kb3cuRGVidWcud3JpdGVsbil7d2luZG93LkRl YnVnLndyaXRlbG4oYSk7fWVsc2UgaWYod2luZG93LmNvbnNvbGUpd2luZG93LmNv bnNvbGUubG9nKGEpO2lmKEZCLkV2ZW50KUZCLkV2ZW50LmZpcmUoJ2ZiLmxvZycs YSk7fSwkOmZ1bmN0aW9uKGEpe3JldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZChhKTt9fTsKRkIucHJvdmlkZSgnQXJyYXknLHtpbmRleE9mOmZ1bmN0aW9uKGEs Yyl7aWYoYS5pbmRleE9mKXJldHVybiBhLmluZGV4T2YoYyk7dmFyIGQ9YS5sZW5n dGg7aWYoZClmb3IodmFyIGI9MDtiPGQ7YisrKWlmKGFbYl09PT1jKXJldHVybiBi O3JldHVybiAtMTt9LG1lcmdlOmZ1bmN0aW9uKGMsYil7Zm9yKHZhciBhPTA7YTxi Lmxlbmd0aDthKyspaWYoRkIuQXJyYXkuaW5kZXhPZihjLGJbYV0pPDApYy5wdXNo KGJbYV0pO3JldHVybiBjO30sZmlsdGVyOmZ1bmN0aW9uKGEsYyl7dmFyIGI9W107 Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspaWYoYyhhW2RdKSliLnB1c2goYVtk XSk7cmV0dXJuIGI7fSxrZXlzOmZ1bmN0aW9uKGMsZCl7dmFyIGE9W107Zm9yKHZh ciBiIGluIGMpaWYoZHx8Yy5oYXNPd25Qcm9wZXJ0eShiKSlhLnB1c2goYik7cmV0 dXJuIGE7fSxtYXA6ZnVuY3Rpb24oYSxkKXt2YXIgYz1bXTtmb3IodmFyIGI9MDti PGEubGVuZ3RoO2IrKyljLnB1c2goZChhW2JdKSk7cmV0dXJuIGM7fSxmb3JFYWNo OmZ1bmN0aW9uKGMsYSxmKXtpZighYylyZXR1cm47aWYoT2JqZWN0LnByb3RvdHlw ZS50b1N0cmluZy5hcHBseShjKT09PSdbb2JqZWN0IEFycmF5XSd8fCghKGMgaW5z dGFuY2VvZiBGdW5jdGlvbikmJnR5cGVvZiBjLmxlbmd0aD09J251bWJlcicpKXtp ZihjLmZvckVhY2gpe2MuZm9yRWFjaChhKTt9ZWxzZSBmb3IodmFyIGI9MCxlPWMu bGVuZ3RoO2I8ZTtiKyspYShjW2JdLGIsYyk7fWVsc2UgZm9yKHZhciBkIGluIGMp aWYoZnx8Yy5oYXNPd25Qcm9wZXJ0eShkKSlhKGNbZF0sZCxjKTt9LHRvQXJyYXk6 ZnVuY3Rpb24oYil7Zm9yKHZhciBjPTAsYT1bXSxkPWIubGVuZ3RoO2M8ZDtjKysp YVtjXT1iW2NdO3JldHVybiBhO319KTsKRkIucHJvdmlkZSgnUVMnLHtlbmNvZGU6 ZnVuY3Rpb24oYyxkLGEpe2Q9ZD09PXVuZGVmaW5lZD8nJic6ZDthPWE9PT1mYWxz ZT9mdW5jdGlvbihlKXtyZXR1cm4gZTt9OmVuY29kZVVSSUNvbXBvbmVudDt2YXIg Yj1bXTtGQi5BcnJheS5mb3JFYWNoKGMsZnVuY3Rpb24oZixlKXtpZihmIT09bnVs bCYmdHlwZW9mIGYhPSd1bmRlZmluZWQnKWIucHVzaChhKGUpKyc9JythKGYpKTt9 KTtiLnNvcnQoKTtyZXR1cm4gYi5qb2luKGQpO30sZGVjb2RlOmZ1bmN0aW9uKGYp e3ZhciBhPWRlY29kZVVSSUNvbXBvbmVudCxkPXt9LGU9Zi5zcGxpdCgnJicpLGIs Yztmb3IoYj0wO2I8ZS5sZW5ndGg7YisrKXtjPWVbYl0uc3BsaXQoJz0nLDIpO2lm KGMmJmNbMF0pZFthKGNbMF0pXT1hKGNbMV18fCcnKTt9cmV0dXJuIGQ7fX0pOwpG Qi5wcm92aWRlKCdDb250ZW50Jyx7X3Jvb3Q6bnVsbCxfaGlkZGVuUm9vdDpudWxs LF9jYWxsYmFja3M6e30sYXBwZW5kOmZ1bmN0aW9uKGEsYyl7aWYoIWMpaWYoIUZC LkNvbnRlbnQuX3Jvb3Qpe0ZCLkNvbnRlbnQuX3Jvb3Q9Yz1GQi4kKCdmYi1yb290 Jyk7aWYoIWMpe0ZCLmxvZygnVGhlICJmYi1yb290IiBkaXYgaGFzIG5vdCBiZWVu IGNyZWF0ZWQuJyk7cmV0dXJuO31lbHNlIGMuY2xhc3NOYW1lKz0nIGZiX3Jlc2V0 Jzt9ZWxzZSBjPUZCLkNvbnRlbnQuX3Jvb3Q7aWYodHlwZW9mIGE9PSdzdHJpbmcn KXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtjLmFwcGVuZENo aWxkKGIpLmlubmVySFRNTD1hO3JldHVybiBiO31lbHNlIHJldHVybiBjLmFwcGVu ZENoaWxkKGEpO30sYXBwZW5kSGlkZGVuOmZ1bmN0aW9uKGEpe2lmKCFGQi5Db250 ZW50Ll9oaWRkZW5Sb290KXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk aXYnKSxjPWIuc3R5bGU7Yy5wb3NpdGlvbj0nYWJzb2x1dGUnO2MudG9wPSctMTAw MDBweCc7Yy53aWR0aD1jLmhlaWdodD0wO0ZCLkNvbnRlbnQuX2hpZGRlblJvb3Q9 RkIuQ29udGVudC5hcHBlbmQoYik7fXJldHVybiBGQi5Db250ZW50LmFwcGVuZChh LEZCLkNvbnRlbnQuX2hpZGRlblJvb3QpO30saW5zZXJ0SWZyYW1lOmZ1bmN0aW9u KGUpe2UuaWQ9ZS5pZHx8RkIuZ3VpZCgpO2UubmFtZT1lLm5hbWV8fEZCLmd1aWQo KTt2YXIgYT1GQi5ndWlkKCksZj1mYWxzZSxkPWZhbHNlO0ZCLkNvbnRlbnQuX2Nh bGxiYWNrc1thXT1mdW5jdGlvbigpe2lmKGYmJiFkKXtkPXRydWU7ZS5vbmxvYWQm JmUub25sb2FkKGUucm9vdC5maXJzdENoaWxkKTt9fTtpZihkb2N1bWVudC5hdHRh Y2hFdmVudCl7dmFyIGI9KCc8aWZyYW1lJysnIGlkPSInK2UuaWQrJyInKycgbmFt ZT0iJytlLm5hbWUrJyInKyhlLnRpdGxlPycgdGl0bGU9IicrZS50aXRsZSsnIic6 JycpKyhlLmNsYXNzTmFtZT8nIGNsYXNzPSInK2UuY2xhc3NOYW1lKyciJzonJykr JyBzdHlsZT0iYm9yZGVyOm5vbmU7JysoZS53aWR0aD8nd2lkdGg6JytlLndpZHRo KydweDsnOicnKSsoZS5oZWlnaHQ/J2hlaWdodDonK2UuaGVpZ2h0KydweDsnOicn KSsnIicrJyBzcmM9IicrZS51cmwrJyInKycgZnJhbWVib3JkZXI9IjAiJysnIHNj cm9sbGluZz0ibm8iJysnIGFsbG93dHJhbnNwYXJlbmN5PSJ0cnVlIicrJyBvbmxv YWQ9IkZCLkNvbnRlbnQuX2NhbGxiYWNrcy4nK2ErJygpIicrJz48L2lmcmFtZT4n KTtlLnJvb3QuaW5uZXJIVE1MPSc8aWZyYW1lIHNyYz0iamF2YXNjcmlwdDpmYWxz ZSInKycgZnJhbWVib3JkZXI9IjAiJysnIHNjcm9sbGluZz0ibm8iJysnIHN0eWxl PSJoZWlnaHQ6MXB4Ij48L2lmcmFtZT4nO2Y9dHJ1ZTt3aW5kb3cuc2V0VGltZW91 dChmdW5jdGlvbigpe2Uucm9vdC5pbm5lckhUTUw9YjtlLm9uSW5zZXJ0JiZlLm9u SW5zZXJ0KGUucm9vdC5maXJzdENoaWxkKTt9LDApO31lbHNle3ZhciBjPWRvY3Vt ZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO2MuaWQ9ZS5pZDtjLm5hbWU9ZS5u YW1lO2Mub25sb2FkPUZCLkNvbnRlbnQuX2NhbGxiYWNrc1thXTtjLnNjcm9sbGlu Zz0nbm8nO2Muc3R5bGUuYm9yZGVyPSdub25lJztjLnN0eWxlLm92ZXJmbG93PSdo aWRkZW4nO2lmKGUudGl0bGUpYy50aXRsZT1lLnRpdGxlO2lmKGUuY2xhc3NOYW1l KWMuY2xhc3NOYW1lPWUuY2xhc3NOYW1lO2lmKGUuaGVpZ2h0KWMuc3R5bGUuaGVp Z2h0PWUuaGVpZ2h0KydweCc7aWYoZS53aWR0aCljLnN0eWxlLndpZHRoPWUud2lk dGgrJ3B4JztlLnJvb3QuYXBwZW5kQ2hpbGQoYyk7Zj10cnVlO2Muc3JjPWUudXJs O2Uub25JbnNlcnQmJmUub25JbnNlcnQoYyk7fX0sc3VibWl0VG9UYXJnZXQ6ZnVu Y3Rpb24oYyxiKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtJyk7 YS5hY3Rpb249Yy51cmw7YS50YXJnZXQ9Yy50YXJnZXQ7YS5tZXRob2Q9KGIpPydH RVQnOidQT1NUJztGQi5Db250ZW50LmFwcGVuZEhpZGRlbihhKTtGQi5BcnJheS5m b3JFYWNoKGMucGFyYW1zLGZ1bmN0aW9uKGYsZSl7aWYoZiE9PW51bGwmJmYhPT11 bmRlZmluZWQpe3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7 ZC5uYW1lPWU7ZC52YWx1ZT1mO2EuYXBwZW5kQ2hpbGQoZCk7fX0pO2Euc3VibWl0 KCk7YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpO319KTsKRkIucHJvdmlkZSgn Rmxhc2gnLHtfbWluVmVyc2lvbnM6W1s5LDAsMTU5LDBdLFsxMCwwLDIyLDg3XV0s X3N3ZlBhdGg6J3N3Zi9YZENvbW0uc3dmJyxfY2FsbGJhY2tzOltdLF9uYW1lczp7 fSxfdW5sb2FkUmVnaXN0ZXJlZDpmYWxzZSxpbml0OmZ1bmN0aW9uKCl7aWYoRkIu Rmxhc2guX2luaXQpcmV0dXJuO0ZCLkZsYXNoLl9pbml0PXRydWU7d2luZG93LkZC X09uRmxhc2hYZENvbW1SZWFkeT1mdW5jdGlvbigpe0ZCLkZsYXNoLl9yZWFkeT10 cnVlO2Zvcih2YXIgYT0wLGI9RkIuRmxhc2guX2NhbGxiYWNrcy5sZW5ndGg7YTxi O2ErKylGQi5GbGFzaC5fY2FsbGJhY2tzW2FdKCk7RkIuRmxhc2guX2NhbGxiYWNr cz1bXTt9O0ZCLkZsYXNoLmVtYmVkU1dGKCdYZENvbW0nLEZCLmdldERvbWFpbign Y2RuX2ZvcmVpZ24nKStGQi5GbGFzaC5fc3dmUGF0aCk7fSxlbWJlZFNXRjpmdW5j dGlvbihkLGUsYil7dmFyIGE9ISFkb2N1bWVudC5hdHRhY2hFdmVudCxjPSgnPG9i amVjdCAnKyd0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgJysn aWQ9IicrZCsnIiAnKyhiPydmbGFzaHZhcnM9IicrYisnIiAnOicnKSsoYT8nbmFt ZT0iJytkKyciICc6JycpKyhhPycnOidkYXRhPSInK2UrJyIgJykrKGE/J2NsYXNz aWQ9ImNsc2lkOmQyN2NkYjZlLWFlNmQtMTFjZi05NmI4LTQ0NDU1MzU0MDAwMCIg JzonJykrJ2FsbG93c2NyaXB0YWNjZXNzPSJhbHdheXMiPicrJzxwYXJhbSBuYW1l PSJtb3ZpZSIgdmFsdWU9IicrZSsnIj48L3BhcmFtPicrJzxwYXJhbSBuYW1lPSJh bGxvd3NjcmlwdGFjY2VzcyIgdmFsdWU9ImFsd2F5cyI+PC9wYXJhbT4nKyc8L29i amVjdD4nKTtGQi5Db250ZW50LmFwcGVuZEhpZGRlbihjKTtpZihGQi5VQS5pZSgp Pj05KXtpZighRkIuRmxhc2guX3VubG9hZFJlZ2lzdGVyZWQpe3ZhciBmPWZ1bmN0 aW9uKCl7RkIuQXJyYXkuZm9yRWFjaChGQi5GbGFzaC5fbmFtZXMsZnVuY3Rpb24o aSxoKXt2YXIgZz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChoKTtpZihnKWcucmVt b3ZlTm9kZSh0cnVlKTt9KTt9O3dpbmRvdy5hdHRhY2hFdmVudCgnb251bmxvYWQn LGYpO0ZCLkZsYXNoLl91bmxvYWRSZWdpc3RlcmVkPXRydWU7fUZCLkZsYXNoLl9u YW1lc1tkXT10cnVlO319LGhhc01pblZlcnNpb246ZnVuY3Rpb24oKXtpZih0eXBl b2YgRkIuRmxhc2guX2hhc01pblZlcnNpb249PT0ndW5kZWZpbmVkJyl7dmFyIGks YSxiLGg9W107dHJ5e2k9bmV3IEFjdGl2ZVhPYmplY3QoJ1Nob2Nrd2F2ZUZsYXNo LlNob2Nrd2F2ZUZsYXNoJykuR2V0VmFyaWFibGUoJyR2ZXJzaW9uJyk7fWNhdGNo KGope2lmKG5hdmlnYXRvci5taW1lVHlwZXMubGVuZ3RoPjApe3ZhciBtaW1lVHlw ZT0nYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnO2lmKG5hdmlnYXRvci5t aW1lVHlwZXNbbWltZVR5cGVdLmVuYWJsZWRQbHVnaW4pe3ZhciBuYW1lPSdTaG9j a3dhdmUgRmxhc2gnO2k9KG5hdmlnYXRvci5wbHVnaW5zW25hbWUrJyAyLjAnXXx8 bmF2aWdhdG9yLnBsdWdpbnNbbmFtZV0pLmRlc2NyaXB0aW9uO319fWlmKGkpe3Zh ciBmPWkucmVwbGFjZSgvXEQrL2csJywnKS5tYXRjaCgvXiw/KC4rKSw/JC8pWzFd LnNwbGl0KCcsJyk7Zm9yKGE9MCxiPWYubGVuZ3RoO2E8YjthKyspaC5wdXNoKHBh cnNlSW50KGZbYV0sMTApKTt9RkIuRmxhc2guX2hhc01pblZlcnNpb249ZmFsc2U7 bWFqb3JWZXJzaW9uOmZvcihhPTAsYj1GQi5GbGFzaC5fbWluVmVyc2lvbnMubGVu Z3RoO2E8YjthKyspe3ZhciBnPUZCLkZsYXNoLl9taW5WZXJzaW9uc1thXTtpZihn WzBdIT1oWzBdKWNvbnRpbnVlO2Zvcih2YXIgYz0xLGQ9Zy5sZW5ndGgsZT1oLmxl bmd0aDsoYzxkJiZjPGUpO2MrKylpZihoW2NdPGdbY10pe0ZCLkZsYXNoLl9oYXNN aW5WZXJzaW9uPWZhbHNlO2NvbnRpbnVlIG1ham9yVmVyc2lvbjt9ZWxzZXtGQi5G bGFzaC5faGFzTWluVmVyc2lvbj10cnVlO2lmKGhbY10+Z1tjXSlicmVhayBtYWpv clZlcnNpb247fX07fXJldHVybiBGQi5GbGFzaC5faGFzTWluVmVyc2lvbjt9LG9u UmVhZHk6ZnVuY3Rpb24oYSl7RkIuRmxhc2guaW5pdCgpO2lmKEZCLkZsYXNoLl9y ZWFkeSl7d2luZG93LnNldFRpbWVvdXQoYSwwKTt9ZWxzZSBGQi5GbGFzaC5fY2Fs bGJhY2tzLnB1c2goYSk7fX0pOwppZighdGhpcy5KU09OKXRoaXMuSlNPTj17fTso ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKG4pe3JldHVybiBuPDEwPycwJytuOm47fWlm KHR5cGVvZiBEYXRlLnByb3RvdHlwZS50b0pTT04hPT0nZnVuY3Rpb24nKXtEYXRl LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oa2V5KXtyZXR1cm4gaXNGaW5pdGUo dGhpcy52YWx1ZU9mKCkpP3RoaXMuZ2V0VVRDRnVsbFllYXIoKSsnLScrZih0aGlz LmdldFVUQ01vbnRoKCkrMSkrJy0nK2YodGhpcy5nZXRVVENEYXRlKCkpKydUJytm KHRoaXMuZ2V0VVRDSG91cnMoKSkrJzonK2YodGhpcy5nZXRVVENNaW51dGVzKCkp Kyc6JytmKHRoaXMuZ2V0VVRDU2Vjb25kcygpKSsnWic6bnVsbDt9O1N0cmluZy5w cm90b3R5cGUudG9KU09OPU51bWJlci5wcm90b3R5cGUudG9KU09OPUJvb2xlYW4u cHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbihrZXkpe3JldHVybiB0aGlzLnZhbHVl T2YoKTt9O312YXIgY3g9L1tcdTAwMDBcdTAwYWRcdTA2MDAtXHUwNjA0XHUwNzBm XHUxN2I0XHUxN2I1XHUyMDBjLVx1MjAwZlx1MjAyOC1cdTIwMmZcdTIwNjAtXHUy MDZmXHVmZWZmXHVmZmYwLVx1ZmZmZl0vZyxlc2NhcGFibGU9L1tcXFwiXHgwMC1c eDFmXHg3Zi1ceDlmXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdi NVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1 ZmZmMC1cdWZmZmZdL2csZ2FwLGluZGVudCxtZXRhPXsnXGInOidcXGInLCdcdCc6 J1xcdCcsJ1xuJzonXFxuJywnXGYnOidcXGYnLCdccic6J1xccicsJyInOidcXCIn LCdcXCc6J1xcXFwnfSxyZXA7ZnVuY3Rpb24gcXVvdGUoc3RyaW5nKXtlc2NhcGFi bGUubGFzdEluZGV4PTA7cmV0dXJuIGVzY2FwYWJsZS50ZXN0KHN0cmluZyk/JyIn K3N0cmluZy5yZXBsYWNlKGVzY2FwYWJsZSxmdW5jdGlvbihhKXt2YXIgYz1tZXRh W2FdO3JldHVybiB0eXBlb2YgYz09PSdzdHJpbmcnP2M6J1xcdScrKCcwMDAwJyth LmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCk7fSkrJyInOici JytzdHJpbmcrJyInO31mdW5jdGlvbiBzdHIoa2V5LGhvbGRlcil7dmFyIGksayx2 LGxlbmd0aCxtaW5kPWdhcCxwYXJ0aWFsLHZhbHVlPWhvbGRlcltrZXldO2lmKHZh bHVlJiZ0eXBlb2YgdmFsdWU9PT0nb2JqZWN0JyYmdHlwZW9mIHZhbHVlLnRvSlNP Tj09PSdmdW5jdGlvbicpdmFsdWU9dmFsdWUudG9KU09OKGtleSk7aWYodHlwZW9m IHJlcD09PSdmdW5jdGlvbicpdmFsdWU9cmVwLmNhbGwoaG9sZGVyLGtleSx2YWx1 ZSk7c3dpdGNoKHR5cGVvZiB2YWx1ZSl7Y2FzZSAnc3RyaW5nJzpyZXR1cm4gcXVv dGUodmFsdWUpO2Nhc2UgJ251bWJlcic6cmV0dXJuIGlzRmluaXRlKHZhbHVlKT9T dHJpbmcodmFsdWUpOidudWxsJztjYXNlICdib29sZWFuJzpjYXNlICdudWxsJzpy ZXR1cm4gU3RyaW5nKHZhbHVlKTtjYXNlICdvYmplY3QnOmlmKCF2YWx1ZSlyZXR1 cm4gJ251bGwnO2dhcCs9aW5kZW50O3BhcnRpYWw9W107aWYoT2JqZWN0LnByb3Rv dHlwZS50b1N0cmluZy5hcHBseSh2YWx1ZSk9PT0nW29iamVjdCBBcnJheV0nKXts ZW5ndGg9dmFsdWUubGVuZ3RoO2ZvcihpPTA7aTxsZW5ndGg7aSs9MSlwYXJ0aWFs W2ldPXN0cihpLHZhbHVlKXx8J251bGwnO3Y9cGFydGlhbC5sZW5ndGg9PT0wPydb XSc6Z2FwPydbXG4nK2dhcCtwYXJ0aWFsLmpvaW4oJyxcbicrZ2FwKSsnXG4nK21p bmQrJ10nOidbJytwYXJ0aWFsLmpvaW4oJywnKSsnXSc7Z2FwPW1pbmQ7cmV0dXJu IHY7fWlmKHJlcCYmdHlwZW9mIHJlcD09PSdvYmplY3QnKXtsZW5ndGg9cmVwLmxl bmd0aDtmb3IoaT0wO2k8bGVuZ3RoO2krPTEpe2s9cmVwW2ldO2lmKHR5cGVvZiBr PT09J3N0cmluZycpe3Y9c3RyKGssdmFsdWUpO2lmKHYpcGFydGlhbC5wdXNoKHF1 b3RlKGspKyhnYXA/JzogJzonOicpK3YpO319fWVsc2UgZm9yKGsgaW4gdmFsdWUp aWYoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsaykpe3Y9c3RyKGss dmFsdWUpO2lmKHYpcGFydGlhbC5wdXNoKHF1b3RlKGspKyhnYXA/JzogJzonOicp K3YpO312PXBhcnRpYWwubGVuZ3RoPT09MD8ne30nOmdhcD8ne1xuJytnYXArcGFy dGlhbC5qb2luKCcsXG4nK2dhcCkrJ1xuJyttaW5kKyd9JzoneycrcGFydGlhbC5q b2luKCcsJykrJ30nO2dhcD1taW5kO3JldHVybiB2O319aWYodHlwZW9mIEpTT04u c3RyaW5naWZ5IT09J2Z1bmN0aW9uJylKU09OLnN0cmluZ2lmeT1mdW5jdGlvbih2 YWx1ZSxyZXBsYWNlcixzcGFjZSl7dmFyIGk7Z2FwPScnO2luZGVudD0nJztpZih0 eXBlb2Ygc3BhY2U9PT0nbnVtYmVyJyl7Zm9yKGk9MDtpPHNwYWNlO2krPTEpaW5k ZW50Kz0nICc7fWVsc2UgaWYodHlwZW9mIHNwYWNlPT09J3N0cmluZycpaW5kZW50 PXNwYWNlO3JlcD1yZXBsYWNlcjtpZihyZXBsYWNlciYmdHlwZW9mIHJlcGxhY2Vy IT09J2Z1bmN0aW9uJyYmKHR5cGVvZiByZXBsYWNlciE9PSdvYmplY3QnfHx0eXBl b2YgcmVwbGFjZXIubGVuZ3RoIT09J251bWJlcicpKXRocm93IG5ldyBFcnJvcign SlNPTi5zdHJpbmdpZnknKTtyZXR1cm4gc3RyKCcnLHsnJzp2YWx1ZX0pO307aWYo dHlwZW9mIEpTT04ucGFyc2UhPT0nZnVuY3Rpb24nKUpTT04ucGFyc2U9ZnVuY3Rp b24odGV4dCxyZXZpdmVyKXt2YXIgajtmdW5jdGlvbiB3YWxrKGhvbGRlcixrZXkp e3ZhciBrLHYsdmFsdWU9aG9sZGVyW2tleV07aWYodmFsdWUmJnR5cGVvZiB2YWx1 ZT09PSdvYmplY3QnKWZvcihrIGluIHZhbHVlKWlmKE9iamVjdC5oYXNPd25Qcm9w ZXJ0eS5jYWxsKHZhbHVlLGspKXt2PXdhbGsodmFsdWUsayk7aWYodiE9PXVuZGVm aW5lZCl7dmFsdWVba109djt9ZWxzZSBkZWxldGUgdmFsdWVba107fXJldHVybiBy ZXZpdmVyLmNhbGwoaG9sZGVyLGtleSx2YWx1ZSk7fWN4Lmxhc3RJbmRleD0wO2lm KGN4LnRlc3QodGV4dCkpdGV4dD10ZXh0LnJlcGxhY2UoY3gsZnVuY3Rpb24oYSl7 cmV0dXJuICdcXHUnKygnMDAwMCcrYS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2 KSkuc2xpY2UoLTQpO30pO2lmKC9eW1xdLDp7fVxzXSokLy50ZXN0KHRleHQucmVw bGFjZSgvXFwoPzpbIlxcXC9iZm5ydF18dVswLTlhLWZBLUZdezR9KS9nLCdAJyku cmVwbGFjZSgvIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpc LlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2csJ10nKS5yZXBsYWNlKC8oPzpefDp8 LCkoPzpccypcWykrL2csJycpKSl7aj1ldmFsKCcoJyt0ZXh0KycpJyk7cmV0dXJu IHR5cGVvZiByZXZpdmVyPT09J2Z1bmN0aW9uJz93YWxrKHsnJzpqfSwnJyk6ajt9 dGhyb3cgbmV3IFN5bnRheEVycm9yKCdKU09OLnBhcnNlJyk7fTt9KCkpOwpGQi5w cm92aWRlKCdKU09OJyx7c3RyaW5naWZ5OmZ1bmN0aW9uKGEpe2lmKHdpbmRvdy5Q cm90b3R5cGUmJk9iamVjdC50b0pTT04pe3JldHVybiBPYmplY3QudG9KU09OKGEp O31lbHNlIHJldHVybiBKU09OLnN0cmluZ2lmeShhKTt9LHBhcnNlOmZ1bmN0aW9u KGEpe3JldHVybiBKU09OLnBhcnNlKGEpO30sZmxhdHRlbjpmdW5jdGlvbihjKXt2 YXIgYT17fTtmb3IodmFyIGIgaW4gYylpZihjLmhhc093blByb3BlcnR5KGIpKXt2 YXIgZD1jW2JdO2lmKG51bGw9PT1kfHx1bmRlZmluZWQ9PT1kKXtjb250aW51ZTt9 ZWxzZSBpZih0eXBlb2YgZD09J3N0cmluZycpe2FbYl09ZDt9ZWxzZSBhW2JdPUZC LkpTT04uc3RyaW5naWZ5KGQpO31yZXR1cm4gYTt9fSk7CkZCLnByb3ZpZGUoJycs e2FwaTpmdW5jdGlvbigpe2lmKHR5cGVvZiBhcmd1bWVudHNbMF09PT0nc3RyaW5n Jyl7RkIuQXBpU2VydmVyLmdyYXBoLmFwcGx5KEZCLkFwaVNlcnZlcixhcmd1bWVu dHMpO31lbHNlIEZCLkFwaVNlcnZlci5yZXN0LmFwcGx5KEZCLkFwaVNlcnZlcixh cmd1bWVudHMpO319KTtGQi5wcm92aWRlKCdBcGlTZXJ2ZXInLHtNRVRIT0RTOlsn Z2V0JywncG9zdCcsJ2RlbGV0ZScsJ3B1dCddLF9jYWxsYmFja3M6e30sX3JlYWRP bmx5Q2FsbHM6e2ZxbF9xdWVyeTp0cnVlLGZxbF9tdWx0aXF1ZXJ5OnRydWUsZnJp ZW5kc19nZXQ6dHJ1ZSxub3RpZmljYXRpb25zX2dldDp0cnVlLHN0cmVhbV9nZXQ6 dHJ1ZSx1c2Vyc19nZXRpbmZvOnRydWV9LGdyYXBoOmZ1bmN0aW9uKCl7dmFyIGE9 QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxmPWEuc2hpZnQo KSxkPWEuc2hpZnQoKSxjLGUsYjt3aGlsZShkKXt2YXIgZz10eXBlb2YgZDtpZihn PT09J3N0cmluZycmJiFjKXtjPWQudG9Mb3dlckNhc2UoKTt9ZWxzZSBpZihnPT09 J2Z1bmN0aW9uJyYmIWIpe2I9ZDt9ZWxzZSBpZihnPT09J29iamVjdCcmJiFlKXtl PWQ7fWVsc2V7RkIubG9nKCdJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBGQi5h cGkoKTogJytkKTtyZXR1cm47fWQ9YS5zaGlmdCgpO31jPWN8fCdnZXQnO2U9ZXx8 e307aWYoZlswXT09PScvJylmPWYuc3Vic3RyKDEpO2lmKEZCLkFycmF5LmluZGV4 T2YoRkIuQXBpU2VydmVyLk1FVEhPRFMsYyk8MCl7RkIubG9nKCdJbnZhbGlkIG1l dGhvZCBwYXNzZWQgdG8gRkIuYXBpKCk6ICcrYyk7cmV0dXJuO31GQi5BcGlTZXJ2 ZXIub2F1dGhSZXF1ZXN0KCdncmFwaCcsZixjLGUsYik7fSxyZXN0OmZ1bmN0aW9u KGUsYSl7dmFyIGM9ZS5tZXRob2QudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCcuJywn XycpO2lmKEZCLkF1dGgmJmM9PT0nYXV0aF9yZXZva2VhdXRob3JpemF0aW9uJyl7 dmFyIGQ9YTthPWZ1bmN0aW9uKGYpe2lmKGY9PT10cnVlKWlmKEZCLl9vYXV0aCl7 RkIuQXV0aC5zZXRBdXRoUmVzcG9uc2UobnVsbCwnbm90X2F1dGhvcml6ZWQnKTt9 ZWxzZSBGQi5BdXRoLnNldFNlc3Npb24obnVsbCwnbm90Q29ubmVjdGVkJyk7ZCYm ZChmKTt9O31lLmZvcm1hdD0nanNvbi1zdHJpbmdzJztlLmFwaV9rZXk9RkIuX2Fw aUtleTt2YXIgYj1GQi5BcGlTZXJ2ZXIuX3JlYWRPbmx5Q2FsbHNbY10/J2FwaV9y ZWFkJzonYXBpJztGQi5BcGlTZXJ2ZXIub2F1dGhSZXF1ZXN0KGIsJ3Jlc3RzZXJ2 ZXIucGhwJywnZ2V0JyxlLGEpO30sb2F1dGhSZXF1ZXN0OmZ1bmN0aW9uKGIsZyxk LGYsYSl7aWYoIWYuYWNjZXNzX3Rva2VuJiZGQi5nZXRBY2Nlc3NUb2tlbigpKWYu YWNjZXNzX3Rva2VuPUZCLmdldEFjY2Vzc1Rva2VuKCk7Zi5zZGs9J2pvZXknO2Yu cHJldHR5PTA7dmFyIGU9YTthPWZ1bmN0aW9uKGgpe2lmKEZCLkF1dGgmJmgmJkZC Ll9zZXNzaW9uJiZGQi5fc2Vzc2lvbi5hY2Nlc3NfdG9rZW49PWYuYWNjZXNzX3Rv a2VuJiYoaC5lcnJvcl9jb2RlPT09JzE5MCd8fChoLmVycm9yJiYoaC5lcnJvcj09 PSdpbnZhbGlkX3Rva2VuJ3x8aC5lcnJvci50eXBlPT09J09BdXRoRXhjZXB0aW9u JykpKSlGQi5nZXRMb2dpblN0YXR1cyhudWxsLHRydWUpO2UmJmUoaCk7fTt0cnl7 RkIuQXBpU2VydmVyLmpzb25wKGIsZyxkLEZCLkpTT04uZmxhdHRlbihmKSxhKTt9 Y2F0Y2goYyl7dHJ5e2lmKCFGQi5pbml0U2l0ZXZhcnMuY29yc0tpbGxTd2l0Y2gm JkZCLkFwaVNlcnZlci5jb3JzUG9zdChiLGcsZCxGQi5KU09OLmZsYXR0ZW4oZiks YSkpcmV0dXJuO31jYXRjaChlMl9pZ25vcmUpe31pZihGQi5GbGFzaC5oYXNNaW5W ZXJzaW9uKCkpe0ZCLkFwaVNlcnZlci5mbGFzaChiLGcsZCxGQi5KU09OLmZsYXR0 ZW4oZiksYSk7fWVsc2UgdGhyb3cgbmV3IEVycm9yKCdZb3VyIGJyb3dzZXIgZG9l cyBub3Qgc3VwcG9ydCBsb25nIGNvbm5lY3QgJysncmVxdWVzdHMuIFlvdSBjYW4g Zml4IHRoaXMgcHJvYmxlbSBieSB1cGdyYWRpbmcgeW91ciBicm93c2VyICcrJ29y IGluc3RhbGxpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIEZsYXNoJyk7fX0sY29y c1Bvc3Q6ZnVuY3Rpb24oYyxnLGUsZixhKXt2YXIgaT1GQi5nZXREb21haW4oYykr ZztpZihjPT0nZ3JhcGgnKWYubWV0aG9kPWU7dmFyIGQ9RkIuUVMuZW5jb2RlKGYp O3ZhciBiPSdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnO3ZhciBo PUZCLkFwaVNlcnZlci5fY3JlYXRlQ09SU1JlcXVlc3QoJ1BPU1QnLGksYik7aWYo aCl7aC5vbmxvYWQ9ZnVuY3Rpb24oKXthJiZhKEZCLkpTT04ucGFyc2UoaC5yZXNw b25zZVRleHQpKTt9O2guc2VuZChkKTtyZXR1cm4gdHJ1ZTt9ZWxzZSByZXR1cm4g ZmFsc2U7fSxfY3JlYXRlQ09SU1JlcXVlc3Q6ZnVuY3Rpb24oYixjLGEpe2lmKCF3 aW5kb3cuWE1MSHR0cFJlcXVlc3QpcmV0dXJuIG51bGw7dmFyIGQ9bmV3IFhNTEh0 dHBSZXF1ZXN0KCk7aWYoIndpdGhDcmVkZW50aWFscyIgaW4gZCl7ZC5vcGVuKGIs Yyx0cnVlKTtkLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtdHlwZScsYSk7fWVs c2UgaWYod2luZG93LlhEb21haW5SZXF1ZXN0KXtkPW5ldyBYRG9tYWluUmVxdWVz dCgpO2Qub3BlbihiLGMpO31lbHNlIGQ9bnVsbDtyZXR1cm4gZDt9LGpzb25wOmZ1 bmN0aW9uKGIsZixkLGUsYSl7dmFyIGM9RkIuZ3VpZCgpLGc9ZG9jdW1lbnQuY3Jl YXRlRWxlbWVudCgnc2NyaXB0Jyk7aWYoYj09PSdncmFwaCcmJmQhPT0nZ2V0Jyll Lm1ldGhvZD1kO2UuY2FsbGJhY2s9J0ZCLkFwaVNlcnZlci5fY2FsbGJhY2tzLicr Yzt2YXIgaD0oRkIuZ2V0RG9tYWluKGIpK2YrKGYuaW5kZXhPZignPycpPi0xPycm JzonPycpK0ZCLlFTLmVuY29kZShlKSk7aWYoaC5sZW5ndGg+MjAwMCl0aHJvdyBu ZXcgRXJyb3IoJ0pTT05QIG9ubHkgc3VwcG9ydCBhIG1heGltdW0gb2YgMjAwMCBi eXRlcyBvZiBpbnB1dC4nKTtGQi5BcGlTZXJ2ZXIuX2NhbGxiYWNrc1tjXT1mdW5j dGlvbihpKXthJiZhKGkpO2RlbGV0ZSBGQi5BcGlTZXJ2ZXIuX2NhbGxiYWNrc1tj XTtnLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZyk7fTtnLnNyYz1oO2RvY3VtZW50 LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoZyk7 fSxmbGFzaDpmdW5jdGlvbihiLGUsYyxkLGEpe2lmKCF3aW5kb3cuRkJfT25YZEh0 dHBSZXN1bHQpd2luZG93LkZCX09uWGRIdHRwUmVzdWx0PWZ1bmN0aW9uKGcsZil7 RkIuQXBpU2VydmVyLl9jYWxsYmFja3NbZ10oZGVjb2RlVVJJQ29tcG9uZW50KGYp KTt9O0ZCLkZsYXNoLm9uUmVhZHkoZnVuY3Rpb24oKXtpZihiPT09J2dyYXBoJylk LnN1cHByZXNzX2h0dHBfY29kZT0xO3ZhciBoPUZCLmdldERvbWFpbihiKStlLGY9 RkIuUVMuZW5jb2RlKGQpO2lmKGM9PT0nZ2V0Jyl7aWYoaC5sZW5ndGgrZi5sZW5n dGg+MjAwMCl7aWYoYj09PSdncmFwaCcpZC5tZXRob2Q9J2dldCc7Yz0ncG9zdCc7 Zj1GQi5RUy5lbmNvZGUoZCk7fWVsc2V7aCs9KGguaW5kZXhPZignPycpPi0xPycm JzonPycpK2Y7Zj0nJzt9fWVsc2UgaWYoYyE9PSdwb3N0Jyl7aWYoYj09PSdncmFw aCcpZC5tZXRob2Q9YztjPSdwb3N0JztmPUZCLlFTLmVuY29kZShkKTt9dmFyIGc9 ZG9jdW1lbnQuWGRDb21tLnNlbmRYZEh0dHBSZXF1ZXN0KGMudG9VcHBlckNhc2Uo KSxoLGYsbnVsbCk7RkIuQXBpU2VydmVyLl9jYWxsYmFja3NbZ109ZnVuY3Rpb24o aSl7YSYmYShGQi5KU09OLnBhcnNlKGkpKTtkZWxldGUgRkIuQXBpU2VydmVyLl9j YWxsYmFja3NbZ107fTt9KTt9fSk7CkZCLnByb3ZpZGUoJ0V2ZW50UHJvdmlkZXIn LHtzdWJzY3JpYmVyczpmdW5jdGlvbigpe2lmKCF0aGlzLl9zdWJzY3JpYmVyc01h cCl0aGlzLl9zdWJzY3JpYmVyc01hcD17fTtyZXR1cm4gdGhpcy5fc3Vic2NyaWJl cnNNYXA7fSxzdWJzY3JpYmU6ZnVuY3Rpb24oYixhKXt2YXIgYz10aGlzLnN1YnNj cmliZXJzKCk7aWYoIWNbYl0pe2NbYl09W2FdO31lbHNlIGNbYl0ucHVzaChhKTt9 LHVuc3Vic2NyaWJlOmZ1bmN0aW9uKGIsYSl7dmFyIGM9dGhpcy5zdWJzY3JpYmVy cygpW2JdO0ZCLkFycmF5LmZvckVhY2goYyxmdW5jdGlvbihlLGQpe2lmKGU9PWEp Y1tkXT1udWxsO30pO30sbW9uaXRvcjpmdW5jdGlvbihkLGEpe2lmKCFhKCkpe3Zh ciBiPXRoaXMsYz1mdW5jdGlvbigpe2lmKGEuYXBwbHkoYSxhcmd1bWVudHMpKWIu dW5zdWJzY3JpYmUoZCxjKTt9O3RoaXMuc3Vic2NyaWJlKGQsYyk7fX0sY2xlYXI6 ZnVuY3Rpb24oYSl7ZGVsZXRlIHRoaXMuc3Vic2NyaWJlcnMoKVthXTt9LGZpcmU6 ZnVuY3Rpb24oKXt2YXIgYT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1 bWVudHMpLGI9YS5zaGlmdCgpO0ZCLkFycmF5LmZvckVhY2godGhpcy5zdWJzY3Jp YmVycygpW2JdLGZ1bmN0aW9uKGMpe2lmKGMpYy5hcHBseSh0aGlzLGEpO30pO30s bGlzdGVuOmZ1bmN0aW9uKGEsZXZlbnQsYil7aWYoYS5hZGRFdmVudExpc3RlbmVy KXthLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsYixmYWxzZSk7fWVsc2UgaWYoYS5h dHRhY2hFdmVudClhLmF0dGFjaEV2ZW50KCdvbicrZXZlbnQsYik7fSx1bmxpc3Rl bjpmdW5jdGlvbihhLGV2ZW50LGIpe2lmKGEucmVtb3ZlRXZlbnRMaXN0ZW5lcil7 YS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LGIsZmFsc2UpO31lbHNlIGlmKGEu ZGV0YWNoRXZlbnQpYS5kZXRhY2hFdmVudCgnb24nK2V2ZW50LGIpO319KTtGQi5w cm92aWRlKCdFdmVudCcsRkIuRXZlbnRQcm92aWRlcik7CkZCLnByb3ZpZGUoJ1hE Jyx7X29yaWdpbjpudWxsLF90cmFuc3BvcnQ6bnVsbCxfY2FsbGJhY2tzOnt9LF9m b3JldmVyOnt9LF94ZFByb3h5VXJsOidjb25uZWN0L3hkX3Byb3h5LnBocCcsX29w ZW5lclRyYW5zcG9ydDpudWxsLF9vcGVuZXJPcmlnaW46bnVsbCxfbm9uT3BlbmVy T3JpZ2luOm51bGwsaW5pdDpmdW5jdGlvbihiKXtpZihGQi5YRC5fb3JpZ2luKXJl dHVybjt2YXIgZD0od2luZG93LmxvY2F0aW9uLnByb3RvY29sKycvLycrd2luZG93 LmxvY2F0aW9uLmhvc3QrJy8nK0ZCLmd1aWQoKSk7aWYod2luZG93LmFkZEV2ZW50 TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZlbnQmJndpbmRvdy5wb3N0TWVzc2Fn ZSl7RkIuWEQuX29yaWdpbj1kO0ZCLlhELlBvc3RNZXNzYWdlLmluaXQoKTtGQi5Y RC5fdHJhbnNwb3J0PSdwb3N0bWVzc2FnZSc7fWVsc2UgaWYoIWImJkZCLkZsYXNo Lmhhc01pblZlcnNpb24oKSl7aWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zi LXJvb3QnKSl7dmFyIGM9ZG9jdW1lbnQuZG9tYWluO2lmKGM9PSdmYWNlYm9vay5j b20nKWM9d2luZG93LmxvY2F0aW9uLmhvc3Q7RkIuWEQuX29yaWdpbj0od2luZG93 LmxvY2F0aW9uLnByb3RvY29sKycvLycrYysnLycrRkIuZ3VpZCgpKTtGQi5YRC5G bGFzaC5pbml0KCk7RkIuWEQuX3RyYW5zcG9ydD0nZmxhc2gnO31lbHNle2lmKEZC LmxvZylGQi5sb2coJ21pc3NpbmcgZmItcm9vdCwgZGVmYXVsdGluZyB0byBmcmFn bWVudC1iYXNlZCB4ZGNvbW0nKTtGQi5YRC5fdHJhbnNwb3J0PSdmcmFnbWVudCc7 RkIuWEQuRnJhZ21lbnQuX2NoYW5uZWxVcmw9Ynx8d2luZG93LmxvY2F0aW9uLnRv U3RyaW5nKCk7fX1lbHNle0ZCLlhELl90cmFuc3BvcnQ9J2ZyYWdtZW50JztGQi5Y RC5GcmFnbWVudC5fY2hhbm5lbFVybD1ifHx3aW5kb3cubG9jYXRpb24udG9TdHJp bmcoKTt9dmFyIGE9ISF3aW5kb3cuYXR0YWNoRXZlbnQ7aWYoRkIuWEQuX3RyYW5z cG9ydCE9J3Bvc3RtZXNzYWdlJyYmYSYmd2luZG93LnBvc3RNZXNzYWdlKXtGQi5Y RC5fb3BlbmVyVHJhbnNwb3J0PUZCLlhELl90cmFuc3BvcnQ7RkIuWEQuX29wZW5l ck9yaWdpbj1GQi5YRC5fb3JpZ2luO0ZCLlhELl9ub25PcGVuZXJPcmlnaW49ZDt9 fSxyZXNvbHZlUmVsYXRpb246ZnVuY3Rpb24oYil7dmFyIGcsZCxmPWIuc3BsaXQo Jy4nKSxlPXdpbmRvdztmb3IodmFyIGE9MCxjPWYubGVuZ3RoO2E8YzthKyspe2c9 ZlthXTtpZihnPT09J29wZW5lcid8fGc9PT0ncGFyZW50J3x8Zz09PSd0b3AnKXtl PWVbZ107fWVsc2UgaWYoZD0vXmZyYW1lc1xbWyciXT8oW2EtekEtWjAtOS1fXSsp WyciXT9cXSQvLmV4ZWMoZykpe2U9ZS5mcmFtZXNbZFsxXV07fWVsc2UgdGhyb3cg bmV3IFN5bnRheEVycm9yKCdNYWxmb3JtZWQgaWQgdG8gcmVzb2x2ZTogJytiKycs IHB0OiAnK2cpO31yZXR1cm4gZTt9LGhhbmRsZXI6ZnVuY3Rpb24oYSxmLGMsZCxi KXtpZih3aW5kb3cubG9jYXRpb24udG9TdHJpbmcoKS5pbmRleE9mKEZCLlhELkZy YWdtZW50Ll9tYWdpYyk+MClyZXR1cm4gJ2phdmFzY3JpcHQ6ZmFsc2U7Ly8nO2lm KEZCLmluaXRTaXRldmFycy5mb3JjZVNlY3VyZVhkUHJveHkpYj10cnVlO3ZhciBn PUZCLmdldERvbWFpbigoYj8naHR0cHNfJzonJykrJ2NkbicpK0ZCLlhELl94ZFBy b3h5VXJsKycjJztkPWR8fEZCLmd1aWQoKTtmPWZ8fCdvcGVuZXInO2lmKEZCLlhE Ll9vcGVuZXJUcmFuc3BvcnQpaWYoZj09J29wZW5lcicpe0ZCLlhELl90cmFuc3Bv cnQ9RkIuWEQuX29wZW5lclRyYW5zcG9ydDtGQi5YRC5fb3JpZ2luPUZCLlhELl9v cGVuZXJPcmlnaW47fWVsc2V7RkIuWEQuUG9zdE1lc3NhZ2UuaW5pdCgpO0ZCLlhE Ll90cmFuc3BvcnQ9J3Bvc3RtZXNzYWdlJztGQi5YRC5fb3JpZ2luPUZCLlhELl9u b25PcGVuZXJPcmlnaW47fWlmKEZCLlhELl90cmFuc3BvcnQ9PSdmcmFnbWVudCcp e2c9RkIuWEQuRnJhZ21lbnQuX2NoYW5uZWxVcmw7dmFyIGU9Zy5pbmRleE9mKCcj Jyk7aWYoZT4wKWc9Zy5zdWJzdHIoMCxlKTtnKz0oKGcuaW5kZXhPZignPycpPDA/ Jz8nOicmJykrRkIuWEQuRnJhZ21lbnQuX21hZ2ljKycjPz0mJyk7fWlmKGMpRkIu WEQuX2ZvcmV2ZXJbZF09dHJ1ZTtGQi5YRC5fY2FsbGJhY2tzW2RdPWE7cmV0dXJu IGcrRkIuUVMuZW5jb2RlKHtjYjpkLG9yaWdpbjpGQi5YRC5fb3JpZ2luLHJlbGF0 aW9uOmYsdHJhbnNwb3J0OkZCLlhELl90cmFuc3BvcnR9KTt9LHJlY3Y6ZnVuY3Rp b24oYil7aWYodHlwZW9mIGI9PSdzdHJpbmcnKXRyeXtiPUZCLkpTT04ucGFyc2Uo Yik7fWNhdGNoKGMpe2I9RkIuUVMuZGVjb2RlKGIpO312YXIgYT1GQi5YRC5fY2Fs bGJhY2tzW2IuY2JdO2lmKCFGQi5YRC5fZm9yZXZlcltiLmNiXSlkZWxldGUgRkIu WEQuX2NhbGxiYWNrc1tiLmNiXTthJiZhKGIpO30sUG9zdE1lc3NhZ2U6e19pc0lu aXRpYWxpemVkOmZhbHNlLGluaXQ6ZnVuY3Rpb24oKXtpZighRkIuWEQuUG9zdE1l c3NhZ2UuX2lzSW5pdGlhbGl6ZWQpe3ZhciBhPUZCLlhELlBvc3RNZXNzYWdlLm9u TWVzc2FnZTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcj93aW5kb3cuYWRkRXZlbnRM aXN0ZW5lcignbWVzc2FnZScsYSxmYWxzZSk6d2luZG93LmF0dGFjaEV2ZW50KCdv bm1lc3NhZ2UnLGEpO0ZCLlhELlBvc3RNZXNzYWdlLl9pc0luaXRpYWxpemVkPXRy dWU7fX0sb25NZXNzYWdlOmZ1bmN0aW9uKGV2ZW50KXtGQi5YRC5yZWN2KGV2ZW50 LmRhdGEpO319LFdlYlZpZXc6e29uTWVzc2FnZTpmdW5jdGlvbihhLGMsYil7RkIu WEQucmVjdihiKTt9fSxGbGFzaDp7aW5pdDpmdW5jdGlvbigpe0ZCLkZsYXNoLm9u UmVhZHkoZnVuY3Rpb24oKXtkb2N1bWVudC5YZENvbW0ucG9zdE1lc3NhZ2VfaW5p dCgnRkIuWEQuRmxhc2gub25NZXNzYWdlJyxGQi5YRC5fb3BlbmVyT3JpZ2luP0ZC LlhELl9vcGVuZXJPcmlnaW46RkIuWEQuX29yaWdpbik7fSk7fSxvbk1lc3NhZ2U6 ZnVuY3Rpb24oYSl7RkIuWEQucmVjdihkZWNvZGVVUklDb21wb25lbnQoYSkpO319 LEZyYWdtZW50OntfbWFnaWM6J2ZiX3hkX2ZyYWdtZW50JyxjaGVja0FuZERpc3Bh dGNoOmZ1bmN0aW9uKCl7dmFyIGI9d2luZG93LmxvY2F0aW9uLnRvU3RyaW5nKCks YT1iLnN1YnN0cihiLmluZGV4T2YoJyMnKSsxKSxjPWIuaW5kZXhPZihGQi5YRC5G cmFnbWVudC5fbWFnaWMpO2lmKGM+MCl7RkIuaW5pdD1GQi5nZXRMb2dpblN0YXR1 cz1GQi5hcGk9ZnVuY3Rpb24oKXt9O2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5z dHlsZS5kaXNwbGF5PSdub25lJztGQi5YRC5yZXNvbHZlUmVsYXRpb24oRkIuUVMu ZGVjb2RlKGEpLnJlbGF0aW9uKS5GQi5YRC5yZWN2KGEpO319fX0pO0ZCLlhELkZy YWdtZW50LmNoZWNrQW5kRGlzcGF0Y2goKTsKRkIucHJvdmlkZSgnVUEnLHtpZTpm dW5jdGlvbigpe3JldHVybiBGQi5VQS5fcG9wdWxhdGUoKXx8dGhpcy5faWU7fSxm aXJlZm94OmZ1bmN0aW9uKCl7cmV0dXJuIEZCLlVBLl9wb3B1bGF0ZSgpfHx0aGlz Ll9maXJlZm94O30sb3BlcmE6ZnVuY3Rpb24oKXtyZXR1cm4gRkIuVUEuX3BvcHVs YXRlKCl8fHRoaXMuX29wZXJhO30sc2FmYXJpOmZ1bmN0aW9uKCl7cmV0dXJuIEZC LlVBLl9wb3B1bGF0ZSgpfHx0aGlzLl9zYWZhcmk7fSxjaHJvbWU6ZnVuY3Rpb24o KXtyZXR1cm4gRkIuVUEuX3BvcHVsYXRlKCl8fHRoaXMuX2Nocm9tZTt9LHdpbmRv d3M6ZnVuY3Rpb24oKXtyZXR1cm4gRkIuVUEuX3BvcHVsYXRlKCl8fHRoaXMuX3dp bmRvd3M7fSxvc3g6ZnVuY3Rpb24oKXtyZXR1cm4gRkIuVUEuX3BvcHVsYXRlKCl8 fHRoaXMuX29zeDt9LGxpbnV4OmZ1bmN0aW9uKCl7cmV0dXJuIEZCLlVBLl9wb3B1 bGF0ZSgpfHx0aGlzLl9saW51eDt9LGlvczpmdW5jdGlvbigpe0ZCLlVBLl9wb3B1 bGF0ZSgpO3JldHVybiBGQi5VQS5tb2JpbGUoKSYmdGhpcy5faW9zO30sbW9iaWxl OmZ1bmN0aW9uKCl7RkIuVUEuX3BvcHVsYXRlKCk7cmV0dXJuICFGQi5faW5DYW52 YXMmJnRoaXMuX21vYmlsZTt9LG5hdGl2ZUFwcDpmdW5jdGlvbigpe3JldHVybiBG Qi5VQS5tb2JpbGUoKSYmbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvRkJBTlwv XHcrOy9pKTt9LGFuZHJvaWQ6ZnVuY3Rpb24oKXtGQi5VQS5fcG9wdWxhdGUoKTty ZXR1cm4gRkIuVUEubW9iaWxlKCkmJnRoaXMuX2FuZHJvaWQ7fSxpUGFkOmZ1bmN0 aW9uKCl7RkIuVUEuX3BvcHVsYXRlKCk7cmV0dXJuIEZCLlVBLm1vYmlsZSgpJiZ0 aGlzLl9pUGFkO30sX3BvcHVsYXRlZDpmYWxzZSxfcG9wdWxhdGU6ZnVuY3Rpb24o KXtpZihGQi5VQS5fcG9wdWxhdGVkKXJldHVybjtGQi5VQS5fcG9wdWxhdGVkPXRy dWU7dmFyIGE9Lyg/Ok1TSUUuKFxkK1wuXGQrKSl8KD86KD86RmlyZWZveHxHcmFu UGFyYWRpc298SWNld2Vhc2VsKS4oXGQrXC5cZCspKXwoPzpPcGVyYSg/Oi4rVmVy c2lvbi58LikoXGQrXC5cZCspKXwoPzpBcHBsZVdlYktpdC4oXGQrKD86XC5cZCsp PykpLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpO3ZhciBjPS8oTWFjIE9TIFgp fChXaW5kb3dzKXwoTGludXgpLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpO3Zh ciBiPS9cYihpUGhvbmV8aVBbYW9dZCkvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2Vu dCk7RkIuVUEuX2lQYWQ9L1xiKGlQYWQpLy5leGVjKG5hdmlnYXRvci51c2VyQWdl bnQpO0ZCLlVBLl9hbmRyb2lkPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0Fu ZHJvaWQvaSk7RkIuVUEuX21vYmlsZT1ifHxGQi5VQS5fYW5kcm9pZHx8bmF2aWdh dG9yLnVzZXJBZ2VudC5tYXRjaCgvTW9iaWxlL2kpO2lmKGEpe0ZCLlVBLl9pZT1h WzFdP3BhcnNlRmxvYXQoYVsxXSk6TmFOO2lmKEZCLlVBLl9pZT49OCYmIXdpbmRv dy5IVE1MQ29sbGVjdGlvbilGQi5VQS5faWU9NztGQi5VQS5fZmlyZWZveD1hWzJd P3BhcnNlRmxvYXQoYVsyXSk6TmFOO0ZCLlVBLl9vcGVyYT1hWzNdP3BhcnNlRmxv YXQoYVszXSk6TmFOO0ZCLlVBLl9zYWZhcmk9YVs0XT9wYXJzZUZsb2F0KGFbNF0p Ok5hTjtpZihGQi5VQS5fc2FmYXJpKXthPS8oPzpDaHJvbWVcLyhcZCtcLlxkKykp Ly5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpO0ZCLlVBLl9jaHJvbWU9YSYmYVsx XT9wYXJzZUZsb2F0KGFbMV0pOk5hTjt9ZWxzZSBGQi5VQS5fY2hyb21lPU5hTjt9 ZWxzZSBGQi5VQS5faWU9RkIuVUEuX2ZpcmVmb3g9RkIuVUEuX29wZXJhPUZCLlVB Ll9jaHJvbWU9RkIuVUEuX3NhZmFyaT1OYU47aWYoYyl7RkIuVUEuX29zeD0hIWNb MV07RkIuVUEuX3dpbmRvd3M9ISFjWzJdO0ZCLlVBLl9saW51eD0hIWNbM107fWVs c2UgRkIuVUEuX29zeD1GQi5VQS5fd2luZG93cz1GQi5VQS5fbGludXg9ZmFsc2U7 RkIuVUEuX2lvcz1iO319KTsKRkIucHJvdmlkZSgnQXJiaXRlcicse19jYW52YXNQ cm94eVVybDonY29ubmVjdC9jYW52YXNfcHJveHkucGhwJyxCRUhBVklPUl9FVkVO VDonZScsQkVIQVZJT1JfUEVSU0lTVEVOVDoncCcsQkVIQVZJT1JfU1RBVEU6J3Mn LGluZm9ybTpmdW5jdGlvbihkLGYsZyxjLGEpe2lmKEZCLkNhbnZhcy5pc1RhYklm cmFtZSgpfHwoRkIuX2luUGx1Z2luJiZ3aW5kb3cucG9zdE1lc3NhZ2UpfHwoIUZC Ll9pbkNhbnZhcyYmRkIuVUEubW9iaWxlKCkmJndpbmRvdy5wb3N0TWVzc2FnZSkp e3ZhciBlPUZCLkpTT04uc3RyaW5naWZ5KHttZXRob2Q6ZCxwYXJhbXM6ZixiZWhh dmlvcjphfHxGQi5BcmJpdGVyLkJFSEFWSU9SX1BFUlNJU1RFTlR9KTtpZih3aW5k b3cucG9zdE1lc3NhZ2Upe0ZCLlhELnJlc29sdmVSZWxhdGlvbihnfHwncGFyZW50 JykucG9zdE1lc3NhZ2UoZSwnKicpO3JldHVybjt9ZWxzZSB0cnl7d2luZG93Lm9w ZW5lci5wb3N0TWVzc2FnZShlKTtyZXR1cm47fWNhdGNoKGIpe319dmFyIGk9KEZC LmdldERvbWFpbigoYz8naHR0cHNfJzonJykrJ3N0YXRpY2ZiJykrRkIuQXJiaXRl ci5fY2FudmFzUHJveHlVcmwrJyMnK0ZCLlFTLmVuY29kZSh7bWV0aG9kOmQscGFy YW1zOkZCLkpTT04uc3RyaW5naWZ5KGZ8fHt9KSxiZWhhdmlvcjphfHxGQi5BcmJp dGVyLkJFSEFWSU9SX1BFUlNJU1RFTlQscmVsYXRpb246Z30pKTt2YXIgaD1GQi5D b250ZW50LmFwcGVuZEhpZGRlbignJyk7RkIuQ29udGVudC5pbnNlcnRJZnJhbWUo e3VybDppLHJvb3Q6aCx3aWR0aDoxLGhlaWdodDoxLG9ubG9hZDpmdW5jdGlvbigp e3NldFRpbWVvdXQoZnVuY3Rpb24oKXtoLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo aCk7fSwxMCk7fX0pO319KTsKRkIucHJvdmlkZSgnQ2FudmFzJyx7X3RpbWVyOm51 bGwsX2xhc3RTaXplOnt9LF9wYWdlSW5mbzp7Y2xpZW50V2lkdGg6MCxjbGllbnRI ZWlnaHQ6MCxzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjAsb2Zmc2V0TGVmdDowLG9m ZnNldFRvcDowfSxnZXRQYWdlSW5mbzpmdW5jdGlvbihhKXt2YXIgZD0ndG9wLmZy YW1lc1snK3dpbmRvdy5uYW1lKyddJzt2YXIgYj1GQi5YRC5oYW5kbGVyKGZ1bmN0 aW9uKGUpe2Zvcih2YXIgZiBpbiBGQi5DYW52YXMuX3BhZ2VJbmZvKWlmKGVbZl0p RkIuQ2FudmFzLl9wYWdlSW5mb1tmXT1lW2ZdfDA7YSYmYShGQi5DYW52YXMuX3Bh Z2VJbmZvKTt9LGQsdHJ1ZSk7dmFyIGM9e2NoYW5uZWxVcmw6YixmcmFtZTp3aW5k b3cubmFtZX07RkIuQXJiaXRlci5pbmZvcm0oJ2dldFBhZ2VJbmZvJyxjLCd0b3An KTtyZXR1cm4gRkIuQ2FudmFzLl9wYWdlSW5mbzt9LGhpZGVGbGFzaEVsZW1lbnQ6 ZnVuY3Rpb24oYSl7YS5zdHlsZS52aXNpYmlsaXR5PSdoaWRkZW4nO30sc2hvd0Zs YXNoRWxlbWVudDpmdW5jdGlvbihhKXthLnN0eWxlLnZpc2liaWxpdHk9Jyc7fSxf Zmxhc2hDbGFzc0lEOiJDTFNJRDpEMjdDREI2RS1BRTZELTExQ0YtOTZCOC00NDQ1 NTM1NDAwMDAiLF9oaWRlRmxhc2hDYWxsYmFjazpmdW5jdGlvbihnKXt2YXIgYT13 aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ29iamVjdCcpO2Zv cih2YXIgZT0wO2U8YS5sZW5ndGg7ZSsrKXt2YXIgYz1hW2VdO2lmKGMudHlwZS50 b0xvd2VyQ2FzZSgpIT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giJiZj LmNsYXNzaWQudG9VcHBlckNhc2UoKSE9RkIuQ2FudmFzLl9mbGFzaENsYXNzSUQp Y29udGludWU7dmFyIGQ9ZmFsc2U7Zm9yKHZhciBmPTA7ZjxjLmNoaWxkTm9kZXMu bGVuZ3RoO2YrKylpZihjLmNoaWxkTm9kZXNbZl0ubm9kZU5hbWUudG9Mb3dlckNh c2UoKT09InBhcmFtIiYmYy5jaGlsZE5vZGVzW2ZdLm5hbWUudG9Mb3dlckNhc2Uo KT09Indtb2RlIilpZihjLmNoaWxkTm9kZXNbZl0udmFsdWUudG9Mb3dlckNhc2Uo KT09Im9wYXF1ZSJ8fGMuY2hpbGROb2Rlc1tmXS52YWx1ZS50b0xvd2VyQ2FzZSgp PT0idHJhbnNwYXJlbnQiKWQ9dHJ1ZTtpZighZCl7dmFyIGg9TWF0aC5yYW5kb20o KTtpZihoPD0xLzEwMDApRkIuYXBpKEZCLl9hcGlLZXkrJy9vY2NsdWRlc3BvcHVw cycsJ3Bvc3QnLHt9KTtpZihGQi5DYW52YXMuX2RldkhpZGVGbGFzaENhbGxiYWNr KXt2YXIgaT0yMDA7dmFyIGI9e3N0YXRlOmcuc3RhdGUsZWxlbTpjfTtzZXRUaW1l b3V0KGZ1bmN0aW9uKGope2lmKGouc3RhdGU9PSdvcGVuZWQnKXtGQi5DYW52YXMu aGlkZUZsYXNoRWxlbWVudChqLmVsZW0pO31lbHNlIEZCLkNhbnZhcy5zaG93Rmxh c2hFbGVtZW50KGouZWxlbSk7fS5iaW5kKHRoaXMsYiksaSk7RkIuQ2FudmFzLl9k ZXZIaWRlRmxhc2hDYWxsYmFjayhiKTt9ZWxzZSBpZihnLnN0YXRlPT0nb3BlbmVk Jyl7Yy5fb2xkX3Zpc2liaWxpdHk9Yy5zdHlsZS52aXNpYmlsaXR5O2Muc3R5bGUu dmlzaWJpbGl0eT0naGlkZGVuJzt9ZWxzZSBpZihnLnN0YXRlPT0nY2xvc2VkJyl7 Yy5zdHlsZS52aXNpYmlsaXR5PWMuX29sZF92aXNpYmlsaXR5O2RlbGV0ZSBjLl9v bGRfdmlzaWJpbGl0eTt9fX19LF9kZXZIaWRlRmxhc2hDYWxsYmFjazpudWxsLF9z ZXRIaWRlRmxhc2hDYWxsYmFjazpmdW5jdGlvbihhKXtGQi5DYW52YXMuX2Rldkhp ZGVGbGFzaENhbGxiYWNrPWE7fSxpbml0OmZ1bmN0aW9uKCl7dmFyIGI9RkIuRG9t LmdldFZpZXdwb3J0SW5mbygpO0ZCLkNhbnZhcy5fcGFnZUluZm8uY2xpZW50V2lk dGg9Yi53aWR0aDtGQi5DYW52YXMuX3BhZ2VJbmZvLmNsaWVudEhlaWdodD1iLmhl aWdodDtGQi5DYW52YXMuZ2V0UGFnZUluZm8oKTt2YXIgYT1GQi5YRC5oYW5kbGVy KEZCLkNhbnZhcy5faGlkZUZsYXNoQ2FsbGJhY2ssJ3RvcC5mcmFtZXNbJyt3aW5k b3cubmFtZSsnXScsdHJ1ZSk7RkIuQXJiaXRlci5pbmZvcm0oJ2lmcmFtZVNldHVw Rmxhc2hIaWRpbmcnLHtjaGFubmVsVXJsOmF9KTt9LHNldFNpemU6ZnVuY3Rpb24o ZSl7aWYodHlwZW9mIGUhPSJvYmplY3QiKWU9e307dmFyIGM9MCxiPTA7ZT1lfHx7 fTtpZihlLndpZHRoPT1udWxsfHxlLmhlaWdodD09bnVsbCl7ZT1GQi5jb3B5KGUs RkIuQ2FudmFzLl9jb21wdXRlQ29udGVudFNpemUoKSk7Yz0xNjtiPTQ7fWU9RkIu Y29weShlLHtmcmFtZTp3aW5kb3cubmFtZXx8J2lmcmFtZV9jYW52YXMnfSk7aWYo RkIuQ2FudmFzLl9sYXN0U2l6ZVtlLmZyYW1lXSl7dmFyIGQ9RkIuQ2FudmFzLl9s YXN0U2l6ZVtlLmZyYW1lXS5oZWlnaHQ7dmFyIGE9ZS5oZWlnaHQtZDtpZihGQi5D YW52YXMuX2xhc3RTaXplW2UuZnJhbWVdLndpZHRoPT1lLndpZHRoJiYoYTw9YiYm YT49LWMpKXJldHVybiBmYWxzZTt9RkIuQ2FudmFzLl9sYXN0U2l6ZVtlLmZyYW1l XT1lO0ZCLkFyYml0ZXIuaW5mb3JtKCdzZXRTaXplJyxlKTtyZXR1cm4gdHJ1ZTt9 LHNjcm9sbFRvOmZ1bmN0aW9uKGEsYil7RkIuQXJiaXRlci5pbmZvcm0oJ3Njcm9s bFRvJyx7ZnJhbWU6d2luZG93Lm5hbWV8fCdpZnJhbWVfY2FudmFzJyx4OmEseTpi fSk7fSxzZXRBdXRvR3JvdzpmdW5jdGlvbihiLGEpe2lmKGE9PT11bmRlZmluZWQm JnR5cGVvZiBiPT0ibnVtYmVyIil7YT1iO2I9dHJ1ZTt9aWYoYj09PXVuZGVmaW5l ZHx8Yil7aWYoRkIuQ2FudmFzLl90aW1lcj09PW51bGwpRkIuQ2FudmFzLl90aW1l cj13aW5kb3cuc2V0SW50ZXJ2YWwoRkIuQ2FudmFzLnNldFNpemUsYXx8MTAwKTtG Qi5DYW52YXMuc2V0U2l6ZSgpO31lbHNlIGlmKEZCLkNhbnZhcy5fdGltZXIhPT1u dWxsKXt3aW5kb3cuY2xlYXJJbnRlcnZhbChGQi5DYW52YXMuX3RpbWVyKTtGQi5D YW52YXMuX3RpbWVyPW51bGw7fX0sc2V0QXV0b1Jlc2l6ZTpmdW5jdGlvbihiLGEp e3JldHVybiBGQi5DYW52YXMuc2V0QXV0b0dyb3coYixhKTt9LGlzVGFiSWZyYW1l OmZ1bmN0aW9uKCl7cmV0dXJuICh3aW5kb3cubmFtZS5pbmRleE9mKCdhcHBfcnVu bmVyXycpPT09MCk7fSxzZXREb25lTG9hZGluZzpmdW5jdGlvbihhKXtGQi5DYW52 YXMuX3Bhc3NBcHBUdGlNZXNzYWdlKGEsJ1JlY29yZElmcmFtZUFwcFR0aScpO30s c3RvcFRpbWVyOmZ1bmN0aW9uKGEpe0ZCLkNhbnZhcy5fcGFzc0FwcFR0aU1lc3Nh Z2UoYSwnU3RvcElmcmFtZUFwcFR0aVRpbWVyJyk7fSxzZXRVcmxIYW5kbGVyOmZ1 bmN0aW9uKGEpe3ZhciBiPUZCLlhELmhhbmRsZXIoYSwndG9wLmZyYW1lc1snK3dp bmRvdy5uYW1lKyddJyx0cnVlKTtGQi5BcmJpdGVyLmluZm9ybSgnc2V0VXJsSGFu ZGxlcicsYik7RkIuRXZlbnQubGlzdGVuKHdpbmRvdywnbG9hZCcsZnVuY3Rpb24o KXtGQi5BcmJpdGVyLmluZm9ybSgnc2V0VXJsSGFuZGxlcicsYik7fSk7fSxzdGFy dFRpbWVyOmZ1bmN0aW9uKCl7RkIuQ2FudmFzLl9wYXNzQXBwVHRpTWVzc2FnZShu dWxsLCdTdGFydElmcmFtZUFwcFR0aVRpbWVyJyk7fSxfcGFzc0FwcFR0aU1lc3Nh Z2U6ZnVuY3Rpb24oYSxjKXt2YXIgYj1udWxsO2lmKGEpYj1GQi5YRC5oYW5kbGVy KGEsJ3RvcC5mcmFtZXNbJyt3aW5kb3cubmFtZSsnXScsZmFsc2UpO0ZCLkFyYml0 ZXIuaW5mb3JtKGMse2ZyYW1lOndpbmRvdy5uYW1lfHwnaWZyYW1lX2NhbnZhcycs dGltZToobmV3IERhdGUoKSkuZ2V0VGltZSgpLGFwcElkOnBhcnNlSW50KEZCLl9h cGlLZXksMTApLGNoYW5uZWxVcmw6Yn0pO30sX2NvbXB1dGVDb250ZW50U2l6ZTpm dW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LmJvZHksZT1kb2N1bWVudC5kb2N1bWVu dEVsZW1lbnQsaT0wLGQ9TWF0aC5tYXgoYS5vZmZzZXRUb3AsMCksaD1NYXRoLm1h eChlLm9mZnNldFRvcCwwKSxjPWEuc2Nyb2xsSGVpZ2h0K2QsYj1hLm9mZnNldEhl aWdodCtkLGc9ZS5zY3JvbGxIZWlnaHQraCxmPWUub2Zmc2V0SGVpZ2h0K2g7Ym90 dG9tPU1hdGgubWF4KGMsYixnLGYpO2lmKGEub2Zmc2V0V2lkdGg8YS5zY3JvbGxX aWR0aCl7aT1hLnNjcm9sbFdpZHRoK2Eub2Zmc2V0TGVmdDt9ZWxzZSBGQi5BcnJh eS5mb3JFYWNoKGEuY2hpbGROb2RlcyxmdW5jdGlvbihqKXt2YXIgaz1qLm9mZnNl dFdpZHRoK2oub2Zmc2V0TGVmdDtpZihrPmkpaT1rO30pO2lmKGUuY2xpZW50TGVm dD4wKWkrPShlLmNsaWVudExlZnQqMik7aWYoZS5jbGllbnRUb3A+MClib3R0b20r PShlLmNsaWVudFRvcCoyKTtyZXR1cm4ge2hlaWdodDpib3R0b20sd2lkdGg6aX07 fX0pOwpGQi5wcm92aWRlKCdTdHJpbmcnLHt0cmltOmZ1bmN0aW9uKGEpe3JldHVy biBhLnJlcGxhY2UoL15ccyp8XHMqJC9nLCcnKTt9LGZvcm1hdDpmdW5jdGlvbihh KXtpZighRkIuU3RyaW5nLmZvcm1hdC5fZm9ybWF0UkUpRkIuU3RyaW5nLmZvcm1h dC5fZm9ybWF0UkU9Lyhce1teXH1eXHtdK1x9KS9nO3ZhciBiPWFyZ3VtZW50czty ZXR1cm4gYS5yZXBsYWNlKEZCLlN0cmluZy5mb3JtYXQuX2Zvcm1hdFJFLGZ1bmN0 aW9uKGUsZCl7dmFyIGM9cGFyc2VJbnQoZC5zdWJzdHIoMSksMTApLGY9YltjKzFd O2lmKGY9PT1udWxsfHxmPT09dW5kZWZpbmVkKXJldHVybiAnJztyZXR1cm4gZi50 b1N0cmluZygpO30pO30sZXNjYXBlSFRNTDpmdW5jdGlvbihiKXt2YXIgYT1kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTthLmFwcGVuZENoaWxkKGRvY3VtZW50 LmNyZWF0ZVRleHROb2RlKGIpKTtyZXR1cm4gYS5pbm5lckhUTUwucmVwbGFjZSgv Ii9nLCcmcXVvdDsnKS5yZXBsYWNlKC8nL2csJyYjMzk7Jyk7fSxxdW90ZTpmdW5j dGlvbihjKXt2YXIgYT0vWyJcXFx4MDAtXHgxZlx4N2YtXHg5Zl0vZyxiPXsnXGIn OidcXGInLCdcdCc6J1xcdCcsJ1xuJzonXFxuJywnXGYnOidcXGYnLCdccic6J1xc cicsJyInOidcXCInLCdcXCc6J1xcXFwnfTtyZXR1cm4gYS50ZXN0KGMpPyciJytj LnJlcGxhY2UoYSxmdW5jdGlvbihkKXt2YXIgZT1iW2RdO2lmKGUpcmV0dXJuIGU7 ZT1kLmNoYXJDb2RlQXQoKTtyZXR1cm4gJ1xcdTAwJytNYXRoLmZsb29yKGUvMTYp LnRvU3RyaW5nKDE2KSsoZSUxNikudG9TdHJpbmcoMTYpO30pKyciJzonIicrYysn Iic7fX0pOwpGQi5wcm92aWRlKCdEb20nLHtjb250YWluc0NzczpmdW5jdGlvbihj LGEpe3ZhciBiPScgJytjLmNsYXNzTmFtZSsnICc7cmV0dXJuIGIuaW5kZXhPZign ICcrYSsnICcpPj0wO30sYWRkQ3NzOmZ1bmN0aW9uKGIsYSl7aWYoIUZCLkRvbS5j b250YWluc0NzcyhiLGEpKWIuY2xhc3NOYW1lPWIuY2xhc3NOYW1lKycgJythO30s cmVtb3ZlQ3NzOmZ1bmN0aW9uKGIsYSl7aWYoRkIuRG9tLmNvbnRhaW5zQ3NzKGIs YSkpe2IuY2xhc3NOYW1lPWIuY2xhc3NOYW1lLnJlcGxhY2UoYSwnJyk7RkIuRG9t LnJlbW92ZUNzcyhiLGEpO319LGdldEJ5Q2xhc3M6ZnVuY3Rpb24oYixjKXtjPWN8 fGRvY3VtZW50LmJvZHk7aWYoYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVy biBGQi5BcnJheS50b0FycmF5KGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShiKSk7 dmFyIGE9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpLGQ9W107Zm9yKHZhciBl PTAsZj1hLmxlbmd0aDtlPGY7ZSsrKWlmKHRoaXMuY29udGFpbnNDc3MoYVtlXSxi KSlkW2QubGVuZ3RoXT1hW2VdO3JldHVybiBkO30sZ2V0U3R5bGU6ZnVuY3Rpb24o YSxjKXt2YXIgZD1mYWxzZSxiPWEuc3R5bGU7aWYoYS5jdXJyZW50U3R5bGUpe0ZC LkFycmF5LmZvckVhY2goYy5tYXRjaCgvXC0oW2Etel0pL2cpLGZ1bmN0aW9uKGUp e2M9Yy5yZXBsYWNlKGUsZS5zdWJzdHIoMSwxKS50b1VwcGVyQ2FzZSgpKTt9KTtk PWEuY3VycmVudFN0eWxlW2NdO31lbHNle0ZCLkFycmF5LmZvckVhY2goYy5tYXRj aCgvW0EtWl0vZyksZnVuY3Rpb24oZSl7Yz1jLnJlcGxhY2UoZSwnLScrZS50b0xv d2VyQ2FzZSgpKTt9KTtpZih3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSl7ZD1kb2N1 bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCkuZ2V0UHJv cGVydHlWYWx1ZShjKTtpZihjPT0nYmFja2dyb3VuZC1wb3NpdGlvbi15J3x8Yz09 J2JhY2tncm91bmQtcG9zaXRpb24teCcpaWYoZD09J3RvcCd8fGQ9PSdsZWZ0Jylk PScwcHgnO319aWYoYz09J29wYWNpdHknKXtpZihhLmZpbHRlcnMmJmEuZmlsdGVy cy5hbHBoYSlyZXR1cm4gZDtyZXR1cm4gZCoxMDA7fXJldHVybiBkO30sc2V0U3R5 bGU6ZnVuY3Rpb24oYSxjLGQpe3ZhciBiPWEuc3R5bGU7aWYoYz09J29wYWNpdHkn KXtpZihkPj0xMDApZD05OS45OTk7aWYoZDwwKWQ9MDtiLm9wYWNpdHk9ZC8xMDA7 Yi5Nb3pPcGFjaXR5PWQvMTAwO2IuS2h0bWxPcGFjaXR5PWQvMTAwO2lmKGEuZmls dGVycylpZihhLmZpbHRlcnMuYWxwaGE9PXVuZGVmaW5lZCl7YS5maWx0ZXI9ImFs cGhhKG9wYWNpdHk9IitkKyIpIjt9ZWxzZSBhLmZpbHRlcnMuYWxwaGEub3BhY2l0 eT1kO31lbHNlIGJbY109ZDt9LGFkZFNjcmlwdDpmdW5jdGlvbihiKXt2YXIgYT1k b2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTthLnR5cGU9InRleHQvamF2 YXNjcmlwdCI7YS5zcmM9YjtyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh Z05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChhKTt9LGFkZENzc1J1bGVzOmZ1 bmN0aW9uKGUsYyl7aWYoIUZCLkRvbS5fY3NzUnVsZXMpRkIuRG9tLl9jc3NSdWxl cz17fTt2YXIgYT10cnVlO0ZCLkFycmF5LmZvckVhY2goYyxmdW5jdGlvbihmKXtp ZighKGYgaW4gRkIuRG9tLl9jc3NSdWxlcykpe2E9ZmFsc2U7RkIuRG9tLl9jc3NS dWxlc1tmXT10cnVlO319KTtpZihhKXJldHVybjtpZighRkIuVUEuaWUoKSl7dmFy IGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtkLnR5cGU9J3RleHQv Y3NzJztkLnRleHRDb250ZW50PWU7ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h bWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChkKTt9ZWxzZSB0cnl7ZG9jdW1lbnQu Y3JlYXRlU3R5bGVTaGVldCgpLmNzc1RleHQ9ZTt9Y2F0Y2goYil7aWYoZG9jdW1l bnQuc3R5bGVTaGVldHNbMF0pZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzVGV4 dCs9ZTt9fSxnZXRWaWV3cG9ydEluZm86ZnVuY3Rpb24oKXt2YXIgYT0oZG9jdW1l bnQuZG9jdW1lbnRFbGVtZW50JiZkb2N1bWVudC5jb21wYXRNb2RlPT0nQ1NTMUNv bXBhdCcpP2RvY3VtZW50LmRvY3VtZW50RWxlbWVudDpkb2N1bWVudC5ib2R5O3Jl dHVybiB7c2Nyb2xsVG9wOmEuc2Nyb2xsVG9wLHNjcm9sbExlZnQ6YS5zY3JvbGxM ZWZ0LHdpZHRoOnNlbGYuaW5uZXJXaWR0aD9zZWxmLmlubmVyV2lkdGg6YS5jbGll bnRXaWR0aCxoZWlnaHQ6c2VsZi5pbm5lckhlaWdodD9zZWxmLmlubmVySGVpZ2h0 OmEuY2xpZW50SGVpZ2h0fTt9LHJlYWR5OmZ1bmN0aW9uKGEpe2lmKEZCLkRvbS5f aXNSZWFkeSl7YSYmYSgpO31lbHNlIEZCLkV2ZW50LnN1YnNjcmliZSgnZG9tLnJl YWR5JyxhKTt9fSk7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZG9tUmVhZHkoKXtGQi5E b20uX2lzUmVhZHk9dHJ1ZTtGQi5FdmVudC5maXJlKCdkb20ucmVhZHknKTtGQi5F dmVudC5jbGVhcignZG9tLnJlYWR5Jyk7fWlmKEZCLkRvbS5faXNSZWFkeXx8ZG9j dW1lbnQucmVhZHlTdGF0ZT09J2NvbXBsZXRlJylyZXR1cm4gZG9tUmVhZHkoKTtp Zihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKXtkb2N1bWVudC5hZGRFdmVudExp c3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxkb21SZWFkeSxmYWxzZSk7fWVsc2Ug aWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpZG9jdW1lbnQuYXR0YWNoRXZlbnQoJ29u cmVhZHlzdGF0ZWNoYW5nZScsZG9tUmVhZHkpO2lmKEZCLlVBLmllKCkmJndpbmRv dz09PXRvcCkoZnVuY3Rpb24oKXt0cnl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LmRvU2Nyb2xsKCdsZWZ0Jyk7fWNhdGNoKGVycm9yKXtzZXRUaW1lb3V0KGFyZ3Vt ZW50cy5jYWxsZWUsMCk7cmV0dXJuO31kb21SZWFkeSgpO30pKCk7dmFyIG9sZG9u bG9hZD13aW5kb3cub25sb2FkO3dpbmRvdy5vbmxvYWQ9ZnVuY3Rpb24oKXtkb21S ZWFkeSgpO2lmKG9sZG9ubG9hZClpZih0eXBlb2Ygb2xkb25sb2FkPT0nc3RyaW5n Jyl7ZXZhbChvbGRvbmxvYWQpO31lbHNlIG9sZG9ubG9hZCgpO307fSkoKTsKRkIu cHJvdmlkZSgnSW50bCcse19wdW5jdENoYXJDbGFzczooJ1snKycuIT8nKydcdTMw MDInKydcdUZGMDEnKydcdUZGMUYnKydcdTA5NjQnKydcdTIwMjYnKydcdTBFQUYn KydcdTE4MDEnKydcdTBFMkYnKydcdUZGMEUnKyddJyksX2VuZHNJblB1bmN0OmZ1 bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT0nc3RyaW5nJylyZXR1cm4gZmFsc2U7cmV0 dXJuIGEubWF0Y2gobmV3IFJlZ0V4cChGQi5JbnRsLl9wdW5jdENoYXJDbGFzcysn WycrJykiJysiJyIrJ1x1MDBCQicrJ1x1MEYzQicrJ1x1MEYzRCcrJ1x1MjAxOScr J1x1MjAxRCcrJ1x1MjAzQScrJ1x1MzAwOScrJ1x1MzAwQicrJ1x1MzAwRCcrJ1x1 MzAwRicrJ1x1MzAxMScrJ1x1MzAxNScrJ1x1MzAxNycrJ1x1MzAxOScrJ1x1MzAx QicrJ1x1MzAxRScrJ1x1MzAxRicrJ1x1RkQzRicrJ1x1RkYwNycrJ1x1RkYwOScr J1x1RkYzRCcrJ1xzJysnXSokJykpO30sX3R4OmZ1bmN0aW9uKGQsYSl7aWYoYSE9 PXVuZGVmaW5lZClpZih0eXBlb2YgYSE9J29iamVjdCcpe0ZCLmxvZygnVGhlIHNl Y29uZCBhcmcgdG8gRkIuSW50bC5fdHgoKSBtdXN0IGJlIGFuIE9iamVjdCBmb3Ig JysndHgoJytkKycsIC4uLiknKTt9ZWxzZXt2YXIgYztmb3IodmFyIGIgaW4gYSlp ZihhLmhhc093blByb3BlcnR5KGIpKXtpZihGQi5JbnRsLl9lbmRzSW5QdW5jdChh W2JdKSl7Yz1uZXcgUmVnRXhwKCdceycrYisnXH0nK0ZCLkludGwuX3B1bmN0Q2hh ckNsYXNzKycqJywnZycpO31lbHNlIGM9bmV3IFJlZ0V4cCgnXHsnK2IrJ1x9Jywn ZycpO2Q9ZC5yZXBsYWNlKGMsYVtiXSk7fX1yZXR1cm4gZDt9LHR4OmZ1bmN0aW9u KGIsYSl7ZnVuY3Rpb24gYyhlLGQpe3ZvaWQoMCk7fWlmKCFGQi5JbnRsLl9zdHJp bmdUYWJsZSlyZXR1cm4gbnVsbDtyZXR1cm4gRkJJbnRlcm4uSW50bC5fdHgoRkIu SW50bC5fc3RyaW5nVGFibGVbYl0sYSk7fX0pOwpGQi5wcm92aWRlKCcnLHtiaW5k OmZ1bmN0aW9uKCl7dmFyIGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJn dW1lbnRzKSxjPWEuc2hpZnQoKSxiPWEuc2hpZnQoKTtyZXR1cm4gZnVuY3Rpb24o KXtyZXR1cm4gYy5hcHBseShiLGEuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGlj ZS5jYWxsKGFyZ3VtZW50cykpKTt9O30sQ2xhc3M6ZnVuY3Rpb24oYixhLGQpe2lm KEZCLkNMQVNTRVNbYl0pcmV0dXJuIEZCLkNMQVNTRVNbYl07dmFyIGM9YXx8ZnVu Y3Rpb24oKXt9O2MucHJvdG90eXBlPWQ7Yy5wcm90b3R5cGUuYmluZD1mdW5jdGlv bihlKXtyZXR1cm4gRkIuYmluZChlLHRoaXMpO307Yy5wcm90b3R5cGUuY29uc3Ry dWN0b3I9YztGQi5jcmVhdGUoYixjKTtGQi5DTEFTU0VTW2JdPWM7cmV0dXJuIGM7 fSxzdWJjbGFzczpmdW5jdGlvbihkLGIsYyxlKXtpZihGQi5DTEFTU0VTW2RdKXJl dHVybiBGQi5DTEFTU0VTW2RdO3ZhciBhPUZCLmNyZWF0ZShiKTtGQi5jb3B5KGUs YS5wcm90b3R5cGUpO2UuX2Jhc2U9YTtlLl9jYWxsQmFzZT1mdW5jdGlvbihnKXt2 YXIgZj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0 dXJuIGEucHJvdG90eXBlW2ddLmFwcGx5KHRoaXMsZik7fTtyZXR1cm4gRkIuQ2xh c3MoZCxjP2M6ZnVuY3Rpb24oKXtpZihhLmFwcGx5KWEuYXBwbHkodGhpcyxhcmd1 bWVudHMpO30sZSk7fSxDTEFTU0VTOnt9fSk7RkIucHJvdmlkZSgnVHlwZScse2lz VHlwZTpmdW5jdGlvbihhLGIpe3doaWxlKGEpaWYoYS5jb25zdHJ1Y3Rvcj09PWJ8 fGE9PT1iKXtyZXR1cm4gdHJ1ZTt9ZWxzZSBhPWEuX2Jhc2U7cmV0dXJuIGZhbHNl O319KTsKRkIuQ2xhc3MoJ09iaicsbnVsbCxGQi5jb3B5KHtzZXRQcm9wZXJ0eTpm dW5jdGlvbihhLGIpe2lmKEZCLkpTT04uc3RyaW5naWZ5KGIpIT1GQi5KU09OLnN0 cmluZ2lmeSh0aGlzW2FdKSl7dGhpc1thXT1iO3RoaXMuZmlyZShhLGIpO319fSxG Qi5FdmVudFByb3ZpZGVyKSk7CkZCLnN1YmNsYXNzKCdEaWFsb2cnLCdPYmonLGZ1 bmN0aW9uKGEpe3RoaXMuaWQ9YTtpZighRkIuRGlhbG9nLl9kaWFsb2dzKXtGQi5E aWFsb2cuX2RpYWxvZ3M9e307RkIuRGlhbG9nLl9hZGRPcmllbnRhdGlvbkhhbmRs ZXIoKTt9RkIuRGlhbG9nLl9kaWFsb2dzW2FdPXRoaXM7fSx7fSk7RkIucHJvdmlk ZSgnRGlhbG9nJyx7X2RpYWxvZ3M6bnVsbCxfbGFzdFlPZmZzZXQ6MCxfbG9hZGVy RWw6bnVsbCxfb3ZlcmxheUVsOm51bGwsX3N0YWNrOltdLF9hY3RpdmU6bnVsbCxf cG9wU3RhdGVMaXN0ZW5lck9uOmZhbHNlLF9oaWRlT25Qb3BTdGF0ZTpmdW5jdGlv bihhKXtGQi5EaWFsb2cuaGlkZShGQi5EaWFsb2cuX3N0YWNrLnBvcCgpKTt9LGdl dDpmdW5jdGlvbihhKXtyZXR1cm4gRkIuRGlhbG9nLl9kaWFsb2dzW2FdO30sX2Zp bmRSb290OmZ1bmN0aW9uKGEpe3doaWxlKGEpe2lmKEZCLkRvbS5jb250YWluc0Nz cyhhLCdmYl9kaWFsb2cnKSlyZXR1cm4gYTthPWEucGFyZW50Tm9kZTt9fSxfY3Jl YXRlV1dXTG9hZGVyOmZ1bmN0aW9uKGEpe2E9cGFyc2VJbnQoYSwxMCk7YT1hP2E6 NDYwO3JldHVybiBGQi5EaWFsb2cuY3JlYXRlKHtjb250ZW50OignPGRpdiBjbGFz cz0iZGlhbG9nX3RpdGxlIj4nKycgIDxhIGlkPSJmYl9kaWFsb2dfbG9hZGVyX2Ns b3NlIj4nKycgICAgPGRpdiBjbGFzcz0iZmJfZGlhbG9nX2Nsb3NlX2ljb24iPjwv ZGl2PicrJyAgPC9hPicrJyAgPHNwYW4+RmFjZWJvb2s8L3NwYW4+JysnICA8ZGl2 IHN0eWxlPSJjbGVhcjpib3RoOyI+PC9kaXY+JysnPC9kaXY+JysnPGRpdiBjbGFz cz0iZGlhbG9nX2NvbnRlbnQiPjwvZGl2PicrJzxkaXYgY2xhc3M9ImRpYWxvZ19m b290ZXIiPjwvZGl2PicpLHdpZHRoOmF9KTt9LF9jcmVhdGVNb2JpbGVMb2FkZXI6 ZnVuY3Rpb24oKXt2YXIgYT1GQi5VQS5uYXRpdmVBcHAoKT8nJzooJzx0YWJsZT4n KycgIDx0Ym9keT4nKycgICAgPHRyPicrJyAgICAgIDx0ZCBjbGFzcz0iaGVhZGVy X2xlZnQiPicrJyAgICAgICAgPGxhYmVsIGNsYXNzPSJ0b3VjaGFibGVfYnV0dG9u Ij4nKycgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicrRkIu SW50bC5fdHgoIlx1MDEzMHB0YWwiKSsnIicrJyAgICAgICAgICAgIGlkPSJmYl9k aWFsb2dfbG9hZGVyX2Nsb3NlIi8+JysnICAgICAgICA8L2xhYmVsPicrJyAgICAg IDwvdGQ+JysnICAgICAgPHRkIGNsYXNzPSJoZWFkZXJfY2VudGVyIj4nKycgICAg ICAgIDxkaXY+JytGQi5JbnRsLl90eCgiWVx1MDBmY2tsZW5peW9yLi4uIikrJzwv ZGl2PicrJyAgICAgIDwvdGQ+JysnICAgICAgPHRkIGNsYXNzPSJoZWFkZXJfcmln aHQiPicrJyAgICAgIDwvdGQ+JysnICAgIDwvdHI+JysnICA8L3Rib2R5PicrJzwv dGFibGU+Jyk7cmV0dXJuIEZCLkRpYWxvZy5jcmVhdGUoe2NsYXNzZXM6J2xvYWRp bmcnKyhGQi5VQS5pUGFkKCk/JyBjZW50ZXJlZCc6JycpLGNvbnRlbnQ6KCc8ZGl2 IGNsYXNzPSJkaWFsb2dfaGVhZGVyIj4nK2ErJzwvZGl2PicpfSk7fSxfcmVzdG9y ZUJvZHlQb3NpdGlvbjpmdW5jdGlvbigpe2lmKCFGQi5VQS5pUGFkKCkpe3ZhciBh PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF07RkIuRG9t LnJlbW92ZUNzcyhhLCdmYl9oaWRkZW4nKTt9fSxfc2hvd0lQYWRPdmVybGF5OmZ1 bmN0aW9uKCl7aWYoIUZCLlVBLmlQYWQoKSlyZXR1cm47aWYoIUZCLkRpYWxvZy5f b3ZlcmxheUVsKXtGQi5EaWFsb2cuX292ZXJsYXlFbD1kb2N1bWVudC5jcmVhdGVF bGVtZW50KCdkaXYnKTtGQi5EaWFsb2cuX292ZXJsYXlFbC5zZXRBdHRyaWJ1dGUo J2lkJywnZmJfZGlhbG9nX2lwYWRfb3ZlcmxheScpO0ZCLkNvbnRlbnQuYXBwZW5k KEZCLkRpYWxvZy5fb3ZlcmxheUVsLG51bGwpO31GQi5EaWFsb2cuX292ZXJsYXlF bC5jbGFzc05hbWU9Jyc7fSxfaGlkZUlQYWRPdmVybGF5OmZ1bmN0aW9uKCl7aWYo RkIuVUEuaVBhZCgpKUZCLkRpYWxvZy5fb3ZlcmxheUVsLmNsYXNzTmFtZT0naGlk ZGVuJzt9LHNob3dMb2FkZXI6ZnVuY3Rpb24oYSxkKXtGQi5EaWFsb2cuX3Nob3dJ UGFkT3ZlcmxheSgpO2lmKCFGQi5EaWFsb2cuX2xvYWRlckVsKUZCLkRpYWxvZy5f bG9hZGVyRWw9RkIuRGlhbG9nLl9maW5kUm9vdChGQi5VQS5tb2JpbGUoKT9GQi5E aWFsb2cuX2NyZWF0ZU1vYmlsZUxvYWRlcigpOkZCLkRpYWxvZy5fY3JlYXRlV1dX TG9hZGVyKGQpKTtpZighYSlhPWZ1bmN0aW9uKCl7fTt2YXIgYz1GQi4kKCdmYl9k aWFsb2dfbG9hZGVyX2Nsb3NlJyk7RkIuRG9tLnJlbW92ZUNzcyhjLCdmYl9oaWRk ZW4nKTtjLm9uY2xpY2s9ZnVuY3Rpb24oKXtGQi5EaWFsb2cuX2hpZGVMb2FkZXIo KTtGQi5EaWFsb2cuX3Jlc3RvcmVCb2R5UG9zaXRpb24oKTtGQi5EaWFsb2cuX2hp ZGVJUGFkT3ZlcmxheSgpO2EoKTt9O3ZhciBiPUZCLiQoJ2ZiX2RpYWxvZ19pcGFk X292ZXJsYXknKTtpZihiKWIub250b3VjaHN0YXJ0PWMub25jbGljaztGQi5EaWFs b2cuX21ha2VBY3RpdmUoRkIuRGlhbG9nLl9sb2FkZXJFbCk7fSxfaGlkZUxvYWRl cjpmdW5jdGlvbigpe2lmKEZCLkRpYWxvZy5fbG9hZGVyRWwmJkZCLkRpYWxvZy5f bG9hZGVyRWw9PUZCLkRpYWxvZy5fYWN0aXZlKUZCLkRpYWxvZy5fbG9hZGVyRWwu c3R5bGUudG9wPSctMTAwMDBweCc7fSxfbWFrZUFjdGl2ZTpmdW5jdGlvbihhKXtG Qi5EaWFsb2cuX3NldERpYWxvZ1NpemVzKCk7RkIuRGlhbG9nLl9sb3dlckFjdGl2 ZSgpO0ZCLkRpYWxvZy5fYWN0aXZlPWE7dmFyIGI9RkIuQ2FudmFzLmdldFBhZ2VJ bmZvKGZ1bmN0aW9uKGMpe0ZCLkRpYWxvZy5fY2VudGVyQWN0aXZlKGMpO30pO0ZC LkRpYWxvZy5fY2VudGVyQWN0aXZlKGIpO30sX2xvd2VyQWN0aXZlOmZ1bmN0aW9u KCl7aWYoIUZCLkRpYWxvZy5fYWN0aXZlKXJldHVybjtGQi5EaWFsb2cuX2FjdGl2 ZS5zdHlsZS50b3A9Jy0xMDAwMHB4JztGQi5EaWFsb2cuX2FjdGl2ZT1udWxsO30s X3JlbW92ZVN0YWNrZWQ6ZnVuY3Rpb24oYSl7RkIuRGlhbG9nLl9zdGFjaz1GQi5B cnJheS5maWx0ZXIoRkIuRGlhbG9nLl9zdGFjayxmdW5jdGlvbihiKXtyZXR1cm4g YiE9YTt9KTt9LF9jZW50ZXJBY3RpdmU6ZnVuY3Rpb24oaSl7dmFyIGI9RkIuRGlh bG9nLl9hY3RpdmU7aWYoIWIpcmV0dXJuO3ZhciBrPUZCLkRvbS5nZXRWaWV3cG9y dEluZm8oKTt2YXIgbD1wYXJzZUludChiLm9mZnNldFdpZHRoLDEwKTt2YXIgYz1w YXJzZUludChiLm9mZnNldEhlaWdodCwxMCk7dmFyIGQ9ay5zY3JvbGxMZWZ0Kyhr LndpZHRoLWwpLzI7dmFyIGY9KGsuaGVpZ2h0LWMpLzIuNTtpZihkPGYpZj1kO3Zh ciBlPWsuaGVpZ2h0LWMtZjt2YXIgaj1pLnNjcm9sbFRvcC1pLm9mZnNldFRvcCso aS5jbGllbnRIZWlnaHQtYykvMjtpZihqPGYpe2o9Zjt9ZWxzZSBpZihqPmUpaj1l O2orPWsuc2Nyb2xsVG9wO2lmKEZCLlVBLm1vYmlsZSgpKXt2YXIgaD0xMDA7aWYo RkIuVUEuaVBhZCgpKXtoKz0oay5oZWlnaHQtYykvMjt9ZWxzZXt2YXIgYT1kb2N1 bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdO0ZCLkRvbS5hZGRD c3MoYSwnZmJfaGlkZGVuJyk7ZD0xMDAwMDtqPTEwMDAwO312YXIgZz1GQi5Eb20u Z2V0QnlDbGFzcygnZmJfZGlhbG9nX3BhZGRpbmcnLGIpO2lmKGcubGVuZ3RoKWdb MF0uc3R5bGUuaGVpZ2h0PWgrJ3B4Jzt9Yi5zdHlsZS5sZWZ0PShkPjA/ZDowKSsn cHgnO2Iuc3R5bGUudG9wPShqPjA/ajowKSsncHgnO30sX3NldERpYWxvZ1NpemVz OmZ1bmN0aW9uKCl7aWYoIUZCLlVBLm1vYmlsZSgpfHxGQi5VQS5pUGFkKCkpcmV0 dXJuO2Zvcih2YXIgYSBpbiBGQi5EaWFsb2cuX2RpYWxvZ3MpaWYoZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoYSkpe3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlk KGEpO2Iuc3R5bGUud2lkdGg9RkIuVUlTZXJ2ZXIuZ2V0RGVmYXVsdFNpemUoKS53 aWR0aCsncHgnO2Iuc3R5bGUuaGVpZ2h0PUZCLlVJU2VydmVyLmdldERlZmF1bHRT aXplKCkuaGVpZ2h0KydweCc7fX0sX2hhbmRsZU9yaWVudGF0aW9uQ2hhbmdlOmZ1 bmN0aW9uKGEpe2lmKEZCLlVBLmFuZHJvaWQoKSYmc2NyZWVuLmF2YWlsV2lkdGg9 PUZCLkRpYWxvZy5fYXZhaWxTY3JlZW5XaWR0aCl7d2luZG93LnNldFRpbWVvdXQo RkIuRGlhbG9nLl9oYW5kbGVPcmllbnRhdGlvbkNoYW5nZSw1MCk7cmV0dXJuO31G Qi5EaWFsb2cuX2F2YWlsU2NyZWVuV2lkdGg9c2NyZWVuLmF2YWlsV2lkdGg7aWYo RkIuVUEuaVBhZCgpKXtGQi5EaWFsb2cuX2NlbnRlckFjdGl2ZShGQi5DYW52YXMu Z2V0UGFnZUluZm8oKSk7fWVsc2UgZm9yKHZhciBiIGluIEZCLkRpYWxvZy5fZGlh bG9ncylpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKSlkb2N1bWVudC5nZXRF bGVtZW50QnlJZChiKS5zdHlsZS53aWR0aD1GQi5VSVNlcnZlci5nZXREZWZhdWx0 U2l6ZSgpLndpZHRoKydweCc7fSxfYWRkT3JpZW50YXRpb25IYW5kbGVyOmZ1bmN0 aW9uKCl7aWYoIUZCLlVBLm1vYmlsZSgpKXJldHVybjt2YXIgYT0ib25vcmllbnRh dGlvbmNoYW5nZSIgaW4gd2luZG93PydvcmllbnRhdGlvbmNoYW5nZSc6J3Jlc2l6 ZSc7RkIuRGlhbG9nLl9hdmFpbFNjcmVlbldpZHRoPXNjcmVlbi5hdmFpbFdpZHRo O0ZCLkV2ZW50Lmxpc3Rlbih3aW5kb3csYSxGQi5EaWFsb2cuX2hhbmRsZU9yaWVu dGF0aW9uQ2hhbmdlKTt9LGNyZWF0ZTpmdW5jdGlvbihlKXtlPWV8fHt9O3ZhciBk PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLGM9ZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgnZGl2JyksYT0nZmJfZGlhbG9nJztpZihlLmNsb3NlSWNvbiYmZS5v bkNsb3NlKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7Yi5jbGFz c05hbWU9J2ZiX2RpYWxvZ19jbG9zZV9pY29uJztiLm9uY2xpY2s9ZS5vbkNsb3Nl O2QuYXBwZW5kQ2hpbGQoYik7fWErPScgJysoZS5jbGFzc2VzfHwnJyk7aWYoRkIu VUEuaWUoKSl7YSs9JyBmYl9kaWFsb2dfbGVnYWN5JztGQi5BcnJheS5mb3JFYWNo KFsndmVydF9sZWZ0JywndmVydF9yaWdodCcsJ2hvcml6X3RvcCcsJ2hvcml6X2Jv dHRvbScsJ3RvcF9sZWZ0JywndG9wX3JpZ2h0JywnYm90dG9tX2xlZnQnLCdib3R0 b21fcmlnaHQnXSxmdW5jdGlvbihoKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVt ZW50KCdzcGFuJyk7aS5jbGFzc05hbWU9J2ZiX2RpYWxvZ18nK2g7ZC5hcHBlbmRD aGlsZChpKTt9KTt9ZWxzZSBhKz0oRkIuVUEubW9iaWxlKCkpPycgZmJfZGlhbG9n X21vYmlsZSc6JyBmYl9kaWFsb2dfYWR2YW5jZWQnO2lmKGUuY29udGVudClGQi5D b250ZW50LmFwcGVuZChlLmNvbnRlbnQsYyk7ZC5jbGFzc05hbWU9YTt2YXIgZz1w YXJzZUludChlLndpZHRoLDEwKTtpZighaXNOYU4oZykpZC5zdHlsZS53aWR0aD1n KydweCc7Yy5jbGFzc05hbWU9J2ZiX2RpYWxvZ19jb250ZW50JztkLmFwcGVuZENo aWxkKGMpO2lmKEZCLlVBLm1vYmlsZSgpKXt2YXIgZj1kb2N1bWVudC5jcmVhdGVF bGVtZW50KCdkaXYnKTtmLmNsYXNzTmFtZT0nZmJfZGlhbG9nX3BhZGRpbmcnO2Qu YXBwZW5kQ2hpbGQoZik7fUZCLkNvbnRlbnQuYXBwZW5kKGQpO2lmKGUudmlzaWJs ZSlGQi5EaWFsb2cuc2hvdyhkKTtyZXR1cm4gYzt9LHNob3c6ZnVuY3Rpb24oYSl7 dmFyIGI9RkIuRGlhbG9nLl9maW5kUm9vdChhKTtpZihiKXtGQi5EaWFsb2cuX3Jl bW92ZVN0YWNrZWQoYik7RkIuRGlhbG9nLl9oaWRlTG9hZGVyKCk7RkIuRGlhbG9n Ll9tYWtlQWN0aXZlKGIpO0ZCLkRpYWxvZy5fc3RhY2sucHVzaChiKTtpZignZmJD YWxsSUQnIGluIGEpRkIuRGlhbG9nLmdldChhLmZiQ2FsbElEKS5maXJlKCdpZnJh bWVfc2hvdycpO2lmKCFGQi5FdmVudC5fcG9wU3RhdGVMaXN0ZW5lck9uKXtGQi5F dmVudC5saXN0ZW4od2luZG93LCdwb3BzdGF0ZScsRkIuRGlhbG9nLl9oaWRlT25Q b3BTdGF0ZSk7RkIuRXZlbnQuX3BvcFN0YXRlTGlzdGVuZXJPbj10cnVlO319fSxo aWRlOmZ1bmN0aW9uKGEpe3ZhciBiPUZCLkRpYWxvZy5fZmluZFJvb3QoYSk7aWYo Yj09RkIuRGlhbG9nLl9hY3RpdmUpe0ZCLkRpYWxvZy5fbG93ZXJBY3RpdmUoKTtG Qi5EaWFsb2cuX3Jlc3RvcmVCb2R5UG9zaXRpb24oKTtGQi5EaWFsb2cuX2hpZGVJ UGFkT3ZlcmxheSgpO2lmKCdmYkNhbGxJRCcgaW4gYSlGQi5EaWFsb2cuZ2V0KGEu ZmJDYWxsSUQpLmZpcmUoJ2lmcmFtZV9oaWRlJyk7aWYoRkIuRXZlbnQuX3BvcFN0 YXRlTGlzdGVuZXJPbil7RkIuRXZlbnQudW5saXN0ZW4od2luZG93LCdwb3BzdGF0 ZScsRkIuRGlhbG9nLl9oaWRlT25Qb3BTdGF0ZSk7RkIuRXZlbnQuX3BvcFN0YXRl TGlzdGVuZXJPbj1mYWxzZTt9fX0scmVtb3ZlOmZ1bmN0aW9uKGEpe2E9RkIuRGlh bG9nLl9maW5kUm9vdChhKTtpZihhKXt2YXIgYj1GQi5EaWFsb2cuX2FjdGl2ZT09 YTtGQi5EaWFsb2cuX3JlbW92ZVN0YWNrZWQoYSk7aWYoYil7RkIuRGlhbG9nLl9o aWRlTG9hZGVyKCk7aWYoRkIuRGlhbG9nLl9zdGFjay5sZW5ndGg+MCl7RkIuRGlh bG9nLnNob3coRkIuRGlhbG9nLl9zdGFjay5wb3AoKSk7fWVsc2V7RkIuRGlhbG9n Ll9sb3dlckFjdGl2ZSgpO0ZCLkRpYWxvZy5fcmVzdG9yZUJvZHlQb3NpdGlvbigp O0ZCLkRpYWxvZy5faGlkZUlQYWRPdmVybGF5KCk7fX1lbHNlIGlmKEZCLkRpYWxv Zy5fYWN0aXZlPT09bnVsbCYmRkIuRGlhbG9nLl9zdGFjay5sZW5ndGg+MClGQi5E aWFsb2cuc2hvdyhGQi5EaWFsb2cuX3N0YWNrLnBvcCgpKTt3aW5kb3cuc2V0VGlt ZW91dChmdW5jdGlvbigpe2EucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKTt9LDMw MDApO319LGlzQWN0aXZlOmZ1bmN0aW9uKGEpe3ZhciBiPUZCLkRpYWxvZy5fZmlu ZFJvb3QoYSk7cmV0dXJuIGImJmI9PT1GQi5EaWFsb2cuX2FjdGl2ZTt9fSk7CkZC LnByb3ZpZGUoJycse3VpOmZ1bmN0aW9uKGYsYil7Zj1GQi5jb3B5KHt9LGYpO2lm KCFmLm1ldGhvZCl7RkIubG9nKCcibWV0aG9kIiBpcyBhIHJlcXVpcmVkIHBhcmFt ZXRlciBmb3IgRkIudWkoKS4nKTtyZXR1cm4gbnVsbDt9aWYoKGYubWV0aG9kPT0n cGVybWlzc2lvbnMucmVxdWVzdCd8fGYubWV0aG9kPT0ncGVybWlzc2lvbnMub2F1 dGgnKSYmKGYuZGlzcGxheT09J2lmcmFtZSd8fGYuZGlzcGxheT09J2RpYWxvZycp KXt2YXIgaDt2YXIgaTtpZihGQi5fb2F1dGgpe2g9Zi5zY29wZTtpPWguc3BsaXQo L1xzfCwvZyk7fWVsc2V7aD1mLnBlcm1zO2k9aC5zcGxpdCgnLCcpO31mb3IodmFy IGU9MDtlPGkubGVuZ3RoO2UrKyl7dmFyIGc9RkIuU3RyaW5nLnRyaW0oaVtlXSk7 aWYoZyYmIUZCLmluaXRTaXRldmFycy5pZnJhbWVQZXJtaXNzaW9uc1tnXSl7Zi5k aXNwbGF5PSdwb3B1cCc7YnJlYWs7fX19dmFyIGE9RkIuVUlTZXJ2ZXIucHJlcGFy ZUNhbGwoZixiKTtpZighYSlyZXR1cm4gbnVsbDt2YXIgZD1hLnBhcmFtcy5kaXNw bGF5O2lmKGQ9PT0nZGlhbG9nJyl7ZD0naWZyYW1lJzt9ZWxzZSBpZihkPT09J25v bmUnKWQ9J2hpZGRlbic7dmFyIGM9RkIuVUlTZXJ2ZXJbZF07aWYoIWMpe0ZCLmxv ZygnImRpc3BsYXkiIG11c3QgYmUgb25lIG9mICJwb3B1cCIsICcrJyJkaWFsb2ci LCAiaWZyYW1lIiwgInRvdWNoIiwgImFzeW5jIiwgImhpZGRlbiIsIG9yICJub25l IicpO3JldHVybiBudWxsO31jKGEpO3JldHVybiBhLmRpYWxvZzt9fSk7RkIucHJv dmlkZSgnVUlTZXJ2ZXInLHtNZXRob2RzOnt9LF9sb2FkZWROb2Rlczp7fSxfZGVm YXVsdENiOnt9LF9yZXN1bHRUb2tlbjonInh4UkVTVUxUVE9LRU54eCInLF9mb3Jj ZUhUVFBTOmZhbHNlLGdlbmVyaWNUcmFuc2Zvcm06ZnVuY3Rpb24oYSl7aWYoYS5w YXJhbXMuZGlzcGxheT09J2RpYWxvZyd8fGEucGFyYW1zLmRpc3BsYXk9PSdpZnJh bWUnKXthLnBhcmFtcy5kaXNwbGF5PSdpZnJhbWUnO2EucGFyYW1zLmNoYW5uZWw9 RkIuVUlTZXJ2ZXIuX3hkQ2hhbm5lbEhhbmRsZXIoYS5pZCwncGFyZW50LnBhcmVu dCcpO31yZXR1cm4gYTt9LHByZXBhcmVDYWxsOmZ1bmN0aW9uKGgsYil7dmFyIGc9 aC5tZXRob2QudG9Mb3dlckNhc2UoKSxmPUZCLmNvcHkoe30sRkIuVUlTZXJ2ZXIu TWV0aG9kc1tnXSksZT1GQi5ndWlkKCksYz0oZi5ub0h0dHBzIT09dHJ1ZSkmJihG Qi5faHR0cHN8fChnIT09J2F1dGguc3RhdHVzJyYmZyE9J2xvZ2luLnN0YXR1cycp KTtGQi5VSVNlcnZlci5fZm9yY2VIVFRQUz1jO0ZCLmNvcHkoaCx7YXBpX2tleTpG Qi5fYXBpS2V5LGFwcF9pZDpGQi5fYXBpS2V5LGxvY2FsZTpGQi5fbG9jYWxlLHNk azonam9leScsYWNjZXNzX3Rva2VuOmMmJkZCLmdldEFjY2Vzc1Rva2VuKCl8fHVu ZGVmaW5lZH0pO2guZGlzcGxheT1GQi5VSVNlcnZlci5nZXREaXNwbGF5TW9kZShm LGgpO2lmKCFmLnVybClmLnVybD0nZGlhbG9nLycrZzt2YXIgYT17Y2I6YixpZDpl LHNpemU6Zi5zaXplfHxGQi5VSVNlcnZlci5nZXREZWZhdWx0U2l6ZSgpLHVybDpG Qi5nZXREb21haW4oYz8naHR0cHNfd3d3Jzond3d3JykrZi51cmwsZm9yY2VIVFRQ UzpjLHBhcmFtczpoLG5hbWU6ZyxkaWFsb2c6bmV3IEZCLkRpYWxvZyhlKX07dmFy IGo9Zi50cmFuc2Zvcm0/Zi50cmFuc2Zvcm06RkIuVUlTZXJ2ZXIuZ2VuZXJpY1Ry YW5zZm9ybTtpZihqKXthPWooYSk7aWYoIWEpcmV0dXJuO312YXIgZD1mLmdldFhk UmVsYXRpb258fEZCLlVJU2VydmVyLmdldFhkUmVsYXRpb247dmFyIGk9ZChhLnBh cmFtcyk7aWYoIShhLmlkIGluIEZCLlVJU2VydmVyLl9kZWZhdWx0Q2IpJiYhKCdu ZXh0JyBpbiBhLnBhcmFtcykmJiEoJ3JlZGlyZWN0X3VyaScgaW4gYS5wYXJhbXMp KWEucGFyYW1zLm5leHQ9RkIuVUlTZXJ2ZXIuX3hkUmVzdWx0KGEuY2IsYS5pZCxp LHRydWUpO2lmKGk9PT0ncGFyZW50JylhLnBhcmFtcy5jaGFubmVsX3VybD1GQi5V SVNlcnZlci5feGRDaGFubmVsSGFuZGxlcihlLCdwYXJlbnQucGFyZW50Jyk7YT1G Qi5VSVNlcnZlci5wcmVwYXJlUGFyYW1zKGEpO3JldHVybiBhO30scHJlcGFyZVBh cmFtczpmdW5jdGlvbihhKXt2YXIgYz1hLnBhcmFtcy5tZXRob2Q7aWYoIUZCLkNh bnZhcy5pc1RhYklmcmFtZSgpKWRlbGV0ZSBhLnBhcmFtcy5tZXRob2Q7aWYoRkIu VGVtcGxhdGVVSSYmRkIuVGVtcGxhdGVVSS5zdXBwb3J0c1RlbXBsYXRlKGMsYSkp e2lmKEZCLnJlcG9ydFRlbXBsYXRlcyljb25zb2xlLmxvZygiVXNpbmcgdGVtcGxh dGUgZm9yICIrYysiLiIpO0ZCLlRlbXBsYXRlVUkudXNlQ2FjaGVkVUkoYyxhKTt9 ZWxzZXthLnBhcmFtcz1GQi5KU09OLmZsYXR0ZW4oYS5wYXJhbXMpO3ZhciBiPUZC LlFTLmVuY29kZShhLnBhcmFtcyk7aWYoIUZCLlVBLm5hdGl2ZUFwcCgpJiZGQi5V SVNlcnZlci51cmxUb29Mb25nRm9ySUUoYS51cmwrJz8nK2IpKXthLnBvc3Q9dHJ1 ZTt9ZWxzZSBpZihiKWEudXJsKz0nPycrYjt9cmV0dXJuIGE7fSx1cmxUb29Mb25n Rm9ySUU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RoPjIwMDA7fSxnZXREaXNw bGF5TW9kZTpmdW5jdGlvbihhLGIpe2lmKGIuZGlzcGxheT09PSdoaWRkZW4nfHxi LmRpc3BsYXk9PT0nbm9uZScpcmV0dXJuIGIuZGlzcGxheTtpZihGQi5DYW52YXMu aXNUYWJJZnJhbWUoKSYmYi5kaXNwbGF5IT09J3BvcHVwJylyZXR1cm4gJ2FzeW5j JztpZihGQi5VQS5tb2JpbGUoKXx8Yi5kaXNwbGF5PT09J3RvdWNoJylyZXR1cm4g J3RvdWNoJztpZighRkIuZ2V0QWNjZXNzVG9rZW4oKSYmYi5kaXNwbGF5PT0nZGlh bG9nJyYmIWEubG9nZ2VkT3V0SWZyYW1lKXtGQi5sb2coJyJkaWFsb2ciIG1vZGUg Y2FuIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSB1c2VyIGlzIGNvbm5lY3RlZC4nKTty ZXR1cm4gJ3BvcHVwJzt9aWYoYS5jb25uZWN0RGlzcGxheSYmIUZCLl9pbkNhbnZh cylyZXR1cm4gYS5jb25uZWN0RGlzcGxheTtyZXR1cm4gYi5kaXNwbGF5fHwoRkIu Z2V0QWNjZXNzVG9rZW4oKT8nZGlhbG9nJzoncG9wdXAnKTt9LGdldFhkUmVsYXRp b246ZnVuY3Rpb24oYil7dmFyIGE9Yi5kaXNwbGF5O2lmKGE9PT0ncG9wdXAnfHxh PT09J3RvdWNoJylyZXR1cm4gJ29wZW5lcic7aWYoYT09PSdkaWFsb2cnfHxhPT09 J2lmcmFtZSd8fGE9PT0naGlkZGVuJ3x8YT09PSdub25lJylyZXR1cm4gJ3BhcmVu dCc7aWYoYT09PSdhc3luYycpcmV0dXJuICdwYXJlbnQuZnJhbWVzWycrd2luZG93 Lm5hbWUrJ10nO30scG9wdXA6ZnVuY3Rpb24oYil7dmFyIGE9dHlwZW9mIHdpbmRv dy5zY3JlZW5YIT0ndW5kZWZpbmVkJz93aW5kb3cuc2NyZWVuWDp3aW5kb3cuc2Ny ZWVuTGVmdCxpPXR5cGVvZiB3aW5kb3cuc2NyZWVuWSE9J3VuZGVmaW5lZCc/d2lu ZG93LnNjcmVlblk6d2luZG93LnNjcmVlblRvcCxnPXR5cGVvZiB3aW5kb3cub3V0 ZXJXaWR0aCE9J3VuZGVmaW5lZCc/d2luZG93Lm91dGVyV2lkdGg6ZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLGY9dHlwZW9mIHdpbmRvdy5vdXRl ckhlaWdodCE9J3VuZGVmaW5lZCc/d2luZG93Lm91dGVySGVpZ2h0Oihkb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LTIyKSxrPUZCLlVBLm1vYmls ZSgpP251bGw6Yi5zaXplLndpZHRoLGQ9RkIuVUEubW9iaWxlKCk/bnVsbDpiLnNp emUuaGVpZ2h0LGg9KGE8MCk/d2luZG93LnNjcmVlbi53aWR0aCthOmEsZT1wYXJz ZUludChoKygoZy1rKS8yKSwxMCksaj1wYXJzZUludChpKygoZi1kKS8yLjUpLDEw KSxjPVtdO2lmKGshPT1udWxsKWMucHVzaCgnd2lkdGg9JytrKTtpZihkIT09bnVs bCljLnB1c2goJ2hlaWdodD0nK2QpO2MucHVzaCgnbGVmdD0nK2UpO2MucHVzaCgn dG9wPScraik7Yy5wdXNoKCdzY3JvbGxiYXJzPTEnKTtpZihiLm5hbWU9PSdwZXJt aXNzaW9ucy5yZXF1ZXN0J3x8Yi5uYW1lPT0ncGVybWlzc2lvbnMub2F1dGgnKWMu cHVzaCgnbG9jYXRpb249MSx0b29sYmFyPTAnKTtjPWMuam9pbignLCcpO2lmKGIu cG9zdCl7RkIuVUlTZXJ2ZXIuc2V0TG9hZGVkTm9kZShiLHdpbmRvdy5vcGVuKCdh Ym91dDpibGFuaycsYi5pZCxjKSk7RkIuQ29udGVudC5zdWJtaXRUb1RhcmdldCh7 dXJsOmIudXJsLHRhcmdldDpiLmlkLHBhcmFtczpiLnBhcmFtc30pO31lbHNlIEZC LlVJU2VydmVyLnNldExvYWRlZE5vZGUoYix3aW5kb3cub3BlbihiLnVybCxiLmlk LGMpKTtpZihiLmlkIGluIEZCLlVJU2VydmVyLl9kZWZhdWx0Q2IpRkIuVUlTZXJ2 ZXIuX3BvcHVwTW9uaXRvcigpO30sc2V0TG9hZGVkTm9kZTpmdW5jdGlvbihhLGIp e0ZCLlVJU2VydmVyLl9sb2FkZWROb2Rlc1thLmlkXT1iO2lmKGEucGFyYW1zKWIu ZmJDYWxsSUQ9YS5pZDt9LGdldExvYWRlZE5vZGU6ZnVuY3Rpb24oYSl7cmV0dXJu IEZCLlVJU2VydmVyLl9sb2FkZWROb2Rlc1thLmlkXTt9LGhpZGRlbjpmdW5jdGlv bihhKXthLmNsYXNzTmFtZT0nRkJfVUlfSGlkZGVuJzthLnJvb3Q9RkIuQ29udGVu dC5hcHBlbmRIaWRkZW4oJycpO0ZCLlVJU2VydmVyLl9pbnNlcnRJZnJhbWUoYSk7 fSxpZnJhbWU6ZnVuY3Rpb24oYSl7YS5jbGFzc05hbWU9J0ZCX1VJX0RpYWxvZyc7 dmFyIGI9ZnVuY3Rpb24oKXtGQi5VSVNlcnZlci5fdHJpZ2dlckRlZmF1bHQoYS5p ZCk7fTthLnJvb3Q9RkIuRGlhbG9nLmNyZWF0ZSh7b25DbG9zZTpiLGNsb3NlSWNv bjp0cnVlLGNsYXNzZXM6KEZCLlVBLmlQYWQoKT8nY2VudGVyZWQnOicnKX0pO2lm KCFhLmhpZGVMb2FkZXIpRkIuRGlhbG9nLnNob3dMb2FkZXIoYixhLnNpemUud2lk dGgpO0ZCLkRvbS5hZGRDc3MoYS5yb290LCdmYl9kaWFsb2dfaWZyYW1lJyk7RkIu VUlTZXJ2ZXIuX2luc2VydElmcmFtZShhKTt9LHRvdWNoOmZ1bmN0aW9uKGEpe2lm KGEucGFyYW1zJiZhLnBhcmFtcy5pbl9pZnJhbWUpe2lmKGEudWlfY3JlYXRlZCl7 RkIuRGlhbG9nLnNob3dMb2FkZXIoZnVuY3Rpb24oKXtGQi5VSVNlcnZlci5fdHJp Z2dlckRlZmF1bHQoYS5pZCk7fSwwKTt9ZWxzZSBGQi5VSVNlcnZlci5pZnJhbWUo YSk7fWVsc2UgaWYoRkIuVUEubmF0aXZlQXBwKCkmJiFhLnVpX2NyZWF0ZWQpe2Eu ZnJhbWU9YS5pZDtGQi5OYXRpdmUub25yZWFkeShmdW5jdGlvbigpe0ZCLlVJU2Vy dmVyLnNldExvYWRlZE5vZGUoYSxGQi5OYXRpdmUub3BlbihhLnVybCsnI2NiPScr YS5mcmFtZU5hbWUpKTt9KTtGQi5VSVNlcnZlci5fcG9wdXBNb25pdG9yKCk7fWVs c2UgaWYoIWEudWlfY3JlYXRlZClGQi5VSVNlcnZlci5wb3B1cChhKTt9LGFzeW5j OmZ1bmN0aW9uKGEpe2EuZnJhbWU9d2luZG93Lm5hbWU7ZGVsZXRlIGEudXJsO2Rl bGV0ZSBhLnNpemU7RkIuQXJiaXRlci5pbmZvcm0oJ3Nob3dEaWFsb2cnLGEpO30s Z2V0RGVmYXVsdFNpemU6ZnVuY3Rpb24oKXtpZihGQi5VQS5tb2JpbGUoKSlpZihG Qi5VQS5pUGFkKCkpe3JldHVybiB7d2lkdGg6NTAwLGhlaWdodDo1OTB9O31lbHNl IGlmKEZCLlVBLmFuZHJvaWQoKSl7cmV0dXJuIHt3aWR0aDpzY3JlZW4uYXZhaWxX aWR0aCxoZWlnaHQ6c2NyZWVuLmF2YWlsSGVpZ2h0fTt9ZWxzZXt2YXIgYz13aW5k b3cuaW5uZXJXaWR0aDt2YXIgYT13aW5kb3cuaW5uZXJIZWlnaHQ7dmFyIGI9Yy9h PjEuMjtyZXR1cm4ge3dpZHRoOmMsaGVpZ2h0Ok1hdGgubWF4KGEsKGI/c2NyZWVu LndpZHRoOnNjcmVlbi5oZWlnaHQpKX07fXJldHVybiB7d2lkdGg6NTc1LGhlaWdo dDoyNDB9O30sX2luc2VydElmcmFtZTpmdW5jdGlvbihiKXtGQi5VSVNlcnZlci5f bG9hZGVkTm9kZXNbYi5pZF09ZmFsc2U7dmFyIGE9ZnVuY3Rpb24oYyl7aWYoYi5p ZCBpbiBGQi5VSVNlcnZlci5fbG9hZGVkTm9kZXMpRkIuVUlTZXJ2ZXIuc2V0TG9h ZGVkTm9kZShiLGMpO307aWYoYi5wb3N0KXtGQi5Db250ZW50Lmluc2VydElmcmFt ZSh7dXJsOidhYm91dDpibGFuaycscm9vdDpiLnJvb3QsY2xhc3NOYW1lOmIuY2xh c3NOYW1lLHdpZHRoOmIuc2l6ZS53aWR0aCxoZWlnaHQ6Yi5zaXplLmhlaWdodCxp ZDpiLmlkLG9uSW5zZXJ0OmEsb25sb2FkOmZ1bmN0aW9uKGMpe0ZCLkNvbnRlbnQu c3VibWl0VG9UYXJnZXQoe3VybDpiLnVybCx0YXJnZXQ6Yy5uYW1lLHBhcmFtczpi LnBhcmFtc30pO319KTt9ZWxzZSBGQi5Db250ZW50Lmluc2VydElmcmFtZSh7dXJs OmIudXJsLHJvb3Q6Yi5yb290LGNsYXNzTmFtZTpiLmNsYXNzTmFtZSx3aWR0aDpi LnNpemUud2lkdGgsaGVpZ2h0OmIuc2l6ZS5oZWlnaHQsaWQ6Yi5pZCxuYW1lOmIu ZnJhbWVOYW1lLG9uSW5zZXJ0OmF9KTt9LF9oYW5kbGVSZXNpemVNZXNzYWdlOmZ1 bmN0aW9uKGIsYSl7dmFyIGM9RkIuVUlTZXJ2ZXIuX2xvYWRlZE5vZGVzW2JdO2lm KGEuaGVpZ2h0KWMuc3R5bGUuaGVpZ2h0PWEuaGVpZ2h0KydweCc7aWYoYS53aWR0 aCljLnN0eWxlLndpZHRoPWEud2lkdGgrJ3B4JztGQi5BcmJpdGVyLmluZm9ybSgn cmVzaXplLmFjaycsYXx8e30sJ3BhcmVudC5mcmFtZXNbJytjLm5hbWUrJ10nLHRy dWUpO2lmKCFGQi5EaWFsb2cuaXNBY3RpdmUoYykpRkIuRGlhbG9nLnNob3coYyk7 fSxfdHJpZ2dlckRlZmF1bHQ6ZnVuY3Rpb24oYSl7RkIuVUlTZXJ2ZXIuX3hkUmVj dih7ZnJhbWU6YX0sRkIuVUlTZXJ2ZXIuX2RlZmF1bHRDYlthXXx8ZnVuY3Rpb24o KXt9KTt9LF9wb3B1cE1vbml0b3I6ZnVuY3Rpb24oKXt2YXIgYTtmb3IodmFyIGIg aW4gRkIuVUlTZXJ2ZXIuX2xvYWRlZE5vZGVzKWlmKEZCLlVJU2VydmVyLl9sb2Fk ZWROb2Rlcy5oYXNPd25Qcm9wZXJ0eShiKSYmYiBpbiBGQi5VSVNlcnZlci5fZGVm YXVsdENiKXt2YXIgYz1GQi5VSVNlcnZlci5fbG9hZGVkTm9kZXNbYl07dHJ5e2lm KGMudGFnTmFtZSljb250aW51ZTt9Y2F0Y2goZCl7fXRyeXtpZihjLmNsb3NlZCl7 RkIuVUlTZXJ2ZXIuX3RyaWdnZXJEZWZhdWx0KGIpO31lbHNlIGE9dHJ1ZTt9Y2F0 Y2goZSl7fX1pZihhJiYhRkIuVUlTZXJ2ZXIuX3BvcHVwSW50ZXJ2YWwpe0ZCLlVJ U2VydmVyLl9wb3B1cEludGVydmFsPXdpbmRvdy5zZXRJbnRlcnZhbChGQi5VSVNl cnZlci5fcG9wdXBNb25pdG9yLDEwMCk7fWVsc2UgaWYoIWEmJkZCLlVJU2VydmVy Ll9wb3B1cEludGVydmFsKXt3aW5kb3cuY2xlYXJJbnRlcnZhbChGQi5VSVNlcnZl ci5fcG9wdXBJbnRlcnZhbCk7RkIuVUlTZXJ2ZXIuX3BvcHVwSW50ZXJ2YWw9bnVs bDt9fSxfeGRDaGFubmVsSGFuZGxlcjpmdW5jdGlvbihiLGMpe3ZhciBhPShGQi5V SVNlcnZlci5fZm9yY2VIVFRQUyYmRkIuVUEuaWUoKSE9PTcpO3JldHVybiBGQi5Y RC5oYW5kbGVyKGZ1bmN0aW9uKGQpe3ZhciBlPUZCLlVJU2VydmVyLl9sb2FkZWRO b2Rlc1tiXTtpZighZSlyZXR1cm47aWYoZC50eXBlPT0ncmVzaXplJyl7RkIuVUlT ZXJ2ZXIuX2hhbmRsZVJlc2l6ZU1lc3NhZ2UoYixkKTt9ZWxzZSBpZihkLnR5cGU9 PSdoaWRlJyl7RkIuRGlhbG9nLmhpZGUoZSk7fWVsc2UgaWYoZC50eXBlPT0ncmVu ZGVyZWQnKXt2YXIgZj1GQi5EaWFsb2cuX2ZpbmRSb290KGUpO0ZCLkRpYWxvZy5z aG93KGYpO31lbHNlIGlmKGQudHlwZT09J2ZpcmVldmVudCcpRkIuRXZlbnQuZmly ZShkLmV2ZW50KTt9LGMsdHJ1ZSxudWxsLGEpO30sX3hkTmV4dEhhbmRsZXI6ZnVu Y3Rpb24oYSxiLGQsYyl7aWYoYylGQi5VSVNlcnZlci5fZGVmYXVsdENiW2JdPWE7 cmV0dXJuIEZCLlhELmhhbmRsZXIoZnVuY3Rpb24oZSl7RkIuVUlTZXJ2ZXIuX3hk UmVjdihlLGEpO30sZCkrJyZmcmFtZT0nK2I7fSxfeGRSZWN2OmZ1bmN0aW9uKGIs YSl7dmFyIGM9RkIuVUlTZXJ2ZXIuX2xvYWRlZE5vZGVzW2IuZnJhbWVdO3RyeXtp ZihGQi5Eb20uY29udGFpbnNDc3MoYywnRkJfVUlfSGlkZGVuJykpe3dpbmRvdy5z ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5wYXJlbnROb2RlLnBhcmVudE5vZGUucmVt b3ZlQ2hpbGQoYy5wYXJlbnROb2RlKTt9LDMwMDApO31lbHNlIGlmKEZCLkRvbS5j b250YWluc0NzcyhjLCdGQl9VSV9EaWFsb2cnKSl7RkIuRGlhbG9nLnJlbW92ZShj KTtpZihGQi5UZW1wbGF0ZVVJJiZGQi5VQS5tb2JpbGUoKSlGQi5UZW1wbGF0ZVVJ LnBvcHVsYXRlQ2FjaGUoKTt9fWNhdGNoKGQpe310cnl7aWYoYy5jbG9zZSl7Yy5j bG9zZSgpO0ZCLlVJU2VydmVyLl9wb3B1cENvdW50LS07fX1jYXRjaChlKXt9ZGVs ZXRlIEZCLlVJU2VydmVyLl9sb2FkZWROb2Rlc1tiLmZyYW1lXTtkZWxldGUgRkIu VUlTZXJ2ZXIuX2RlZmF1bHRDYltiLmZyYW1lXTthKGIpO30sX3hkUmVzdWx0OmZ1 bmN0aW9uKGEsYixkLGMpe3JldHVybiAoRkIuVUlTZXJ2ZXIuX3hkTmV4dEhhbmRs ZXIoZnVuY3Rpb24oZSl7YSYmYShlLnJlc3VsdCYmZS5yZXN1bHQhPUZCLlVJU2Vy dmVyLl9yZXN1bHRUb2tlbiYmRkIuSlNPTi5wYXJzZShlLnJlc3VsdCkpO30sYixk LGMpKycmcmVzdWx0PScrZW5jb2RlVVJJQ29tcG9uZW50KEZCLlVJU2VydmVyLl9y ZXN1bHRUb2tlbikpO319KTsKRkIucHJvdmlkZSgnJyx7Z2V0TG9naW5TdGF0dXM6 ZnVuY3Rpb24oYSxiKXtpZighRkIuX2FwaUtleSl7RkIubG9nKCdGQi5nZXRMb2dp blN0YXR1cygpIGNhbGxlZCBiZWZvcmUgY2FsbGluZyBGQi5pbml0KCkuJyk7cmV0 dXJuO31pZihhKWlmKCFiJiZGQi5BdXRoLl9sb2FkU3RhdGU9PSdsb2FkZWQnKXtp ZihGQi5fb2F1dGgpe2Eoe3N0YXR1czpGQi5fdXNlclN0YXR1cyxhdXRoUmVzcG9u c2U6RkIuX2F1dGhSZXNwb25zZX0pO31lbHNlIGEoe3N0YXR1czpGQi5fdXNlclN0 YXR1cyxzZXNzaW9uOkZCLl9zZXNzaW9ufSk7cmV0dXJuO31lbHNlIEZCLkV2ZW50 LnN1YnNjcmliZSgnRkIubG9naW5TdGF0dXMnLGEpO2lmKCFiJiZGQi5BdXRoLl9s b2FkU3RhdGU9PSdsb2FkaW5nJylyZXR1cm47RkIuQXV0aC5fbG9hZFN0YXRlPSds b2FkaW5nJzt2YXIgYz1mdW5jdGlvbihkKXtGQi5BdXRoLl9sb2FkU3RhdGU9J2xv YWRlZCc7RkIuRXZlbnQuZmlyZSgnRkIubG9naW5TdGF0dXMnLGQpO0ZCLkV2ZW50 LmNsZWFyKCdGQi5sb2dpblN0YXR1cycpO307aWYoRkIuVUEubW9iaWxlKCkmJndp bmRvdy5wb3N0TWVzc2FnZSYmd2luZG93LmxvY2FsU3RvcmFnZSl7RkIuQXV0aC5z dGF0aWNBdXRoQ2hlY2soYyk7fWVsc2UgaWYoRkIuX29hdXRoKXtGQi51aSh7bWV0 aG9kOidsb2dpbi5zdGF0dXMnLGRpc3BsYXk6J25vbmUnfSxjKTt9ZWxzZSBGQi51 aSh7bWV0aG9kOidhdXRoLnN0YXR1cycsZGlzcGxheTonaGlkZGVuJ30sYyk7fSxn ZXRTZXNzaW9uOmZ1bmN0aW9uKCl7aWYoRkIuX29hdXRoKXRocm93IG5ldyBFcnJv cignRkIuZ2V0U2Vzc2lvbiBpbmNvbXBhdGlibGUgd2l0aCBPQXV0aDIuJyk7cmV0 dXJuIEZCLl9zZXNzaW9uO30sZ2V0QXV0aFJlc3BvbnNlOmZ1bmN0aW9uKCl7aWYo IUZCLl9vYXV0aCl0aHJvdyBuZXcgRXJyb3IoJ2dldEF1dGhSZXNwb25zZSBjYWxs ZWQgd2hlbiBPQXV0aDIgc3VwcG9ydCBpcyAnKydkaXNhYmxlZC4gIFBsZWFzZSBm aXguJyk7cmV0dXJuIEZCLl9hdXRoUmVzcG9uc2U7fSxnZXRBY2Nlc3NUb2tlbjpm dW5jdGlvbigpe2lmKEZCLl9vYXV0aCl7cmV0dXJuIChGQi5fYXV0aFJlc3BvbnNl JiZGQi5fYXV0aFJlc3BvbnNlLmFjY2Vzc1Rva2VuKXx8bnVsbDt9ZWxzZSByZXR1 cm4gKEZCLl9zZXNzaW9uJiZGQi5fc2Vzc2lvbi5hY2Nlc3NfdG9rZW4pfHxudWxs O30sZ2V0VXNlcklEOmZ1bmN0aW9uKCl7aWYoRkIuX29hdXRoKXtyZXR1cm4gRkIu X3VzZXJJRDt9ZWxzZSByZXR1cm4gKEZCLl9zZXNzaW9uJiZGQi5fc2Vzc2lvbi51 aWQpfHwwO30sbG9naW46ZnVuY3Rpb24oYSxiKXtpZihGQi5fb2F1dGgpe2lmKGIm JmIucGVybXMpdGhyb3cgbmV3IEVycm9yKCdPQXV0aDIgc3BlY2lmaWNhdGlvbiBz dGF0ZXMgdGhhdCBcJ3Blcm1zXCcgJysnc2hvdWxkIG5vdyBiZSBjYWxsZWQgXCdz Y29wZVwnLiAgUGxlYXNlIHVwZGF0ZS4nKTtGQi51aShGQi5jb3B5KHttZXRob2Q6 J3Blcm1pc3Npb25zLm9hdXRoJyxkaXNwbGF5Oidwb3B1cCd9LGJ8fHt9KSxhKTt9 ZWxzZSBGQi51aShGQi5jb3B5KHttZXRob2Q6J3Blcm1pc3Npb25zLnJlcXVlc3Qn LGRpc3BsYXk6J3BvcHVwJ30sYnx8e30pLGEpO30sbG9nb3V0OmZ1bmN0aW9uKGEp e0ZCLnVpKHttZXRob2Q6J2F1dGgubG9nb3V0JyxkaXNwbGF5OidoaWRkZW4nfSxh KTt9fSk7RkIucHJvdmlkZSgnQXV0aCcse19jYWxsYmFja3M6W10sX3hkU3RvcmVQ YXRoOid4ZF9sb2NhbHN0b3JhZ2UvJyxzdGF0aWNBdXRoQ2hlY2s6ZnVuY3Rpb24o Yil7dmFyIGE9RkIuZ2V0RG9tYWluKCdodHRwc19zdGF0aWNmYicpO0ZCLkNvbnRl bnQuaW5zZXJ0SWZyYW1lKHtyb290OkZCLkNvbnRlbnQuYXBwZW5kSGlkZGVuKCcn KSxjbGFzc05hbWU6J0ZCX1VJX0hpZGRlbicsdXJsOmErRkIuQXV0aC5feGRTdG9y ZVBhdGgsb25sb2FkOmZ1bmN0aW9uKGYpe3ZhciBnPWZyYW1lc1tmLm5hbWVdO3Zh ciBkPUZCLmd1aWQoKTt2YXIgZT1mYWxzZTt2YXIgYz1mdW5jdGlvbihoKXtpZigh ZSl7ZT10cnVlO0ZCLkF1dGguX3N0YXRpY0F1dGhIYW5kbGVyKGIsaCk7fX07RkIu WEQuaGFuZGxlcihjLCdwYXJlbnQnLHRydWUsZCk7c2V0VGltZW91dChjLDUwMCk7 Zy5wb3N0TWVzc2FnZShGQi5KU09OLnN0cmluZ2lmeSh7bWV0aG9kOidnZXRJdGVt JyxwYXJhbXM6WydMb2dpbkluZm9fJytGQi5fYXBpS2V5LHRydWVdLHJldHVybkNi OmR9KSxhKTt9fSk7fSxfc3RhdGljQXV0aEhhbmRsZXI6ZnVuY3Rpb24oYixkKXtp ZihkJiZkLmRhdGEmJmQuZGF0YS5zdGF0dXMmJmQuZGF0YS5zdGF0dXM9PSdjb25u ZWN0ZWQnKXt2YXIgYzt2YXIgZj1kLmRhdGEuc3RhdHVzO2lmKEZCLl9vYXV0aCl7 dmFyIGE9ZC5kYXRhLmF1dGhSZXNwb25zZXx8bnVsbDtjPUZCLkF1dGguc2V0QXV0 aFJlc3BvbnNlKGEsZik7fWVsc2V7dmFyIGU9ZC5kYXRhLnNlc3Npb258fG51bGw7 Yz1GQi5BdXRoLnNldFNlc3Npb24oZSxmKTt9YiYmYihjKTt9ZWxzZSBpZihGQi5f b2F1dGgpe0ZCLnVpKHttZXRob2Q6J2xvZ2luLnN0YXR1cycsZGlzcGxheTonbm9u ZSd9LGIpO31lbHNlIEZCLnVpKHttZXRob2Q6J2F1dGguc3RhdHVzJyxkaXNwbGF5 OidoaWRkZW4nfSxiKTt9LHNldFNlc3Npb246ZnVuY3Rpb24oZSxnKXtpZihGQi5f b2F1dGgpdGhyb3cgbmV3IEVycm9yKCdGQi5BdXRoLnNldFNlc3Npb24gaW5jb21w YXRpYmxlIHdpdGggT0F1dGgyLicpO3ZhciBiPSFGQi5fc2Vzc2lvbiYmZSxjPUZC Ll9zZXNzaW9uJiYhZSxhPUZCLl9zZXNzaW9uJiZlJiZGQi5fc2Vzc2lvbi51aWQh PWUudWlkLGY9Ynx8Y3x8KEZCLl9zZXNzaW9uJiZlJiZGQi5fc2Vzc2lvbi5hY2Nl c3NfdG9rZW4hPWUuYWNjZXNzX3Rva2VuKSxoPWchPUZCLl91c2VyU3RhdHVzO3Zh ciBkPXtzZXNzaW9uOmUsc3RhdHVzOmd9O0ZCLl9zZXNzaW9uPWU7RkIuX3VzZXJT dGF0dXM9ZztpZihmJiZGQi5Db29raWUmJkZCLkNvb2tpZS5nZXRFbmFibGVkKCkp RkIuQ29va2llLnNldChlKTtpZihoKUZCLkV2ZW50LmZpcmUoJ2F1dGguc3RhdHVz Q2hhbmdlJyxkKTtpZihjfHxhKUZCLkV2ZW50LmZpcmUoJ2F1dGgubG9nb3V0Jyxk KTtpZihifHxhKUZCLkV2ZW50LmZpcmUoJ2F1dGgubG9naW4nLGQpO2lmKGYpRkIu RXZlbnQuZmlyZSgnYXV0aC5zZXNzaW9uQ2hhbmdlJyxkKTtpZihGQi5BdXRoLl9y ZWZyZXNoVGltZXIpe3dpbmRvdy5jbGVhclRpbWVvdXQoRkIuQXV0aC5fcmVmcmVz aFRpbWVyKTtkZWxldGUgRkIuQXV0aC5fcmVmcmVzaFRpbWVyO31pZihGQi5BdXRo Ll9sb2FkU3RhdGUmJmUmJmUuZXhwaXJlcylGQi5BdXRoLl9yZWZyZXNoVGltZXI9 d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtGQi5nZXRMb2dpblN0YXR1cyhu dWxsLHRydWUpO30sMTIwMDAwMCk7cmV0dXJuIGQ7fSxzZXRBdXRoUmVzcG9uc2U6 ZnVuY3Rpb24oYSxoKXtpZighRkIuX29hdXRoKXRocm93IG5ldyBFcnJvcignRkIu QXV0aC5zZXRBdXRoUmVzcG9uc2Ugb25seSBjb21wYXRpYmxlIHdpdGggT0F1dGgy LicpO3ZhciBqPTA7aWYoYSlpZihhLnVzZXJJRCl7aj1hLnVzZXJJRDt9ZWxzZSBp ZihhLnNpZ25lZFJlcXVlc3Qpe3ZhciBmPUZCLkF1dGgucGFyc2VTaWduZWRSZXF1 ZXN0KGEuc2lnbmVkUmVxdWVzdCk7aWYoZiYmZi51c2VyX2lkKWo9Zi51c2VyX2lk O312YXIgZD0hRkIuX3VzZXJJRCYmYSxlPUZCLl91c2VySUQmJiFhLGM9YSYmRkIu X3VzZXJJRCE9aixiPWR8fGV8fGMsaT1oIT1GQi5fdXNlclN0YXR1czt2YXIgZz17 YXV0aFJlc3BvbnNlOmEsc3RhdHVzOmh9O0ZCLl9hdXRoUmVzcG9uc2U9YTtGQi5f dXNlcklEPWo7RkIuX3VzZXJTdGF0dXM9aDtpZihlfHxjKUZCLkV2ZW50LmZpcmUo J2F1dGgubG9nb3V0JyxnKTtpZihkfHxjKUZCLkV2ZW50LmZpcmUoJ2F1dGgubG9n aW4nLGcpO2lmKGIpRkIuRXZlbnQuZmlyZSgnYXV0aC5hdXRoUmVzcG9uc2VDaGFu Z2UnLGcpO2lmKGkpRkIuRXZlbnQuZmlyZSgnYXV0aC5zdGF0dXNDaGFuZ2UnLGcp O2lmKEZCLkF1dGguX3JlZnJlc2hUaW1lcil7d2luZG93LmNsZWFyVGltZW91dChG Qi5BdXRoLl9yZWZyZXNoVGltZXIpO2RlbGV0ZSBGQi5BdXRoLl9yZWZyZXNoVGlt ZXI7fWlmKEZCLkF1dGguX2xvYWRTdGF0ZSYmYSlGQi5BdXRoLl9yZWZyZXNoVGlt ZXI9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtGQi5nZXRMb2dpblN0YXR1 cyhudWxsLHRydWUpO30sMTIwMDAwMCk7cmV0dXJuIGc7fSx4ZEhhbmRsZXI6ZnVu Y3Rpb24oYSxiLGYsYyxlLGQpe3JldHVybiBGQi5VSVNlcnZlci5feGROZXh0SGFu ZGxlcihGQi5BdXRoLnhkUmVzcG9uc2VXcmFwcGVyKGEsZSxkKSxiLGYsYyk7fSx4 ZFJlc3BvbnNlV3JhcHBlcjpmdW5jdGlvbihhLGMsYil7cmV0dXJuIGZ1bmN0aW9u KGUpe3RyeXtiPUZCLkpTT04ucGFyc2UoZS5zZXNzaW9uKTt9Y2F0Y2goaSl7fWlm KGIpYz0nY29ubmVjdGVkJztpZihlJiZlLmZiX2h0dHBzJiYhRkIuX2h0dHBzKUZC Ll9odHRwcz10cnVlO3ZhciBoPUZCLkF1dGguc2V0U2Vzc2lvbihifHxudWxsLGMp O2gucGVybXM9ZSYmZS5wZXJtc3x8bnVsbDtpZihlJiZlLnJlcXVpcmVkX3Blcm1z JiZGQi5VQS5uYXRpdmVBcHAoKSl7dmFyIGc9SlNPTi5wYXJzZShlLnJlcXVpcmVk X3Blcm1zKTt2YXIgZD1bXTtGQi5BcnJheS5mb3JFYWNoKGcsZnVuY3Rpb24oayxq KXtkPWQuY29uY2F0KGspO30pO3ZhciBmPWQuam9pbignLCcpO0ZCLmxvZ2luKGEs e3Blcm1zOmZ9KTt9ZWxzZSBhJiZhKGgpO307fSxfZ2V0U2Vzc2lvbk9yaWdpbjpm dW5jdGlvbigpe2lmKEZCLlVBLm5hdGl2ZUFwcCgpKXJldHVybiAzO2lmKEZCLlVB Lm1vYmlsZSgpKXJldHVybiAyO2lmKEZCLl9pbkNhbnZhcylyZXR1cm4gNTtyZXR1 cm4gMTt9LHhkTmV3SGFuZGxlcjpmdW5jdGlvbihiLGMsZCxhKXtpZighRkIuX29h dXRoKXRocm93IG5ldyBFcnJvcigneGROZXdIYW5kbGVyIHNob3VsZCBub3QgYmUg aW52b2tlZCB1bmxlc3MgJysnT0F1dGgyIGlzIGJlaW5nIHVzZWQuJyk7cmV0dXJu IEZCLlVJU2VydmVyLl94ZE5leHRIYW5kbGVyKEZCLkF1dGgueGROZXdSZXNwb25z ZVdyYXBwZXIoYixhKSxjLGQsdHJ1ZSk7fSx4ZE5ld1Jlc3BvbnNlV3JhcHBlcjpm dW5jdGlvbihiLGEpe2lmKCFGQi5fb2F1dGgpdGhyb3cgbmV3IEVycm9yKCd4ZE5l d1Jlc3BvbnNlV3JhcHBlciBzaG91bGQgbm90IGJlIGludm9rZWQgdW5sZXNzICcr J09BdXRoMiBpcyBiZWluZyB1c2VkLicpO3JldHVybiBmdW5jdGlvbihkKXtpZihk LmFjY2Vzc190b2tlbil7dmFyIGU9RkIuQXV0aC5wYXJzZVNpZ25lZFJlcXVlc3Qo ZC5zaWduZWRfcmVxdWVzdCk7YT17YWNjZXNzVG9rZW46ZC5hY2Nlc3NfdG9rZW4s dXNlcklEOmUudXNlcl9pZCxleHBpcmVzSW46cGFyc2VJbnQoZC5leHBpcmVzX2lu LDEwKSxzaWduZWRSZXF1ZXN0OmQuc2lnbmVkX3JlcXVlc3R9O0ZCLkF1dGguc2V0 QXV0aFJlc3BvbnNlKGEsJ2Nvbm5lY3RlZCcpO2lmKEZCLkNvb2tpZS5nZXRFbmFi bGVkKCkpe3ZhciBjPShuZXcgRGF0ZSgpKS5nZXRUaW1lKCkrMTAwMCphLmV4cGly ZXNJbjtGQi5Db29raWUuc2V0U2lnbmVkUmVxdWVzdENvb2tpZShkLnNpZ25lZF9y ZXF1ZXN0LGMpO319ZWxzZSBpZighRkIuX2F1dGhSZXNwb25zZSYmYSl7RkIuQXV0 aC5zZXRBdXRoUmVzcG9uc2UoYSwnY29ubmVjdGVkJyk7fWVsc2V7dmFyIGY7aWYo ZC5lcnJvciYmZC5lcnJvcj09PSdub3RfYXV0aG9yaXplZCcpe2Y9J25vdF9hdXRo b3JpemVkJzt9ZWxzZSBmPSd1bmtub3duJztGQi5BdXRoLnNldEF1dGhSZXNwb25z ZShudWxsLGYpO2lmKEZCLkNvb2tpZS5nZXRFbmFibGVkKCkpRkIuQ29va2llLmNs ZWFyU2lnbmVkUmVxdWVzdENvb2tpZSgpO31pZihkJiZkLmZiX2h0dHBzJiYhRkIu X2h0dHBzKUZCLl9odHRwcz10cnVlO3Jlc3BvbnNlPXthdXRoUmVzcG9uc2U6RkIu X2F1dGhSZXNwb25zZSxzdGF0dXM6RkIuX3VzZXJTdGF0dXN9O2ImJmIocmVzcG9u c2UpO307fSxwYXJzZVNpZ25lZFJlcXVlc3Q6ZnVuY3Rpb24oZCl7aWYoIWQpcmV0 dXJuIG51bGw7dmFyIGE9ZC5zcGxpdCgnLicsMik7dmFyIGM9YVsxXTt2YXIgYj1G Qi5BdXRoLmJhc2U2NFVSTERlY29kZShjKTtyZXR1cm4gRkIuSlNPTi5wYXJzZShi KTt9LGJhc2U2NFVSTERlY29kZTpmdW5jdGlvbihqKXtqPWoucmVwbGFjZSgvXC0v ZywnKycpLnJlcGxhY2UoL1xfL2csJy8nKTtpZihqLmxlbmd0aCU0IT09MCl7dmFy IG09NC1qLmxlbmd0aCU0O2Zvcih2YXIgZD0wO2Q8bTtkKyspaj1qKyc9Jzt9dmFy IGs9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFy c3R1dnd4eXowMTIzNDU2Nzg5Ky89Ijt2YXIgbD0iIjt2YXIgYSxiLGM9IiI7dmFy IGUsZixnLGg9IiI7Zm9yKHZhciBpPTA7aTxqLmxlbmd0aDtpKz00KXtlPWsuaW5k ZXhPZihqLmNoYXJBdChpKSk7Zj1rLmluZGV4T2Yoai5jaGFyQXQoaSsxKSk7Zz1r LmluZGV4T2Yoai5jaGFyQXQoaSsyKSk7aD1rLmluZGV4T2Yoai5jaGFyQXQoaSsz KSk7YT0oZTw8Mil8KGY+PjQpO2I9KChmJjE1KTw8NCl8KGc+PjIpO2M9KChnJjMp PDw2KXxoO2w9bCtTdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2lmKGchPTY0KWw9bCtT dHJpbmcuZnJvbUNoYXJDb2RlKGIpO2lmKGghPTY0KWw9bCtTdHJpbmcuZnJvbUNo YXJDb2RlKGMpO2E9Yj1jPSIiO2U9Zj1nPWg9IiI7fXJldHVybiB1bmVzY2FwZShs KTt9fSk7RkIucHJvdmlkZSgnVUlTZXJ2ZXIuTWV0aG9kcycseydwZXJtaXNzaW9u cy5yZXF1ZXN0Jzp7c2l6ZTp7d2lkdGg6KEZCLlVBLm1vYmlsZSgpP251bGw6NjQw KSxoZWlnaHQ6KEZCLlVBLm1vYmlsZSgpP251bGw6MjQxKX0sdHJhbnNmb3JtOmZ1 bmN0aW9uKGEpe2lmKCFGQi5fYXBpS2V5KXtGQi5sb2coJ0ZCLmxvZ2luKCkgY2Fs bGVkIGJlZm9yZSBjYWxsaW5nIEZCLmluaXQoKS4nKTtyZXR1cm47fWlmKEZCLl9z ZXNzaW9uJiYhYS5wYXJhbXMucGVybXMmJiFhLnBhcmFtcy5hdXRoX3R5cGUpe0ZC LmxvZygnRkIubG9naW4oKSBjYWxsZWQgd2hlbiB1c2VyIGlzIGFscmVhZHkgY29u bmVjdGVkLicpO2EuY2ImJmEuY2Ioe3N0YXR1czpGQi5fdXNlclN0YXR1cyxzZXNz aW9uOkZCLl9zZXNzaW9ufSk7cmV0dXJuO31hPUZCLlVJU2VydmVyLmdlbmVyaWNU cmFuc2Zvcm0oYSk7YS5jYj1GQi5BdXRoLnhkUmVzcG9uc2VXcmFwcGVyKGEuY2Is RkIuX3VzZXJTdGF0dXMsRkIuX3Nlc3Npb24pO2EucGFyYW1zLm1ldGhvZD0ncGVy bWlzc2lvbnMucmVxdWVzdCc7RkIuY29weShhLnBhcmFtcyx7ZmJjb25uZWN0OkZC Ll9pbkNhbnZhcz8wOjEscmV0dXJuX3Nlc3Npb246MSxzZXNzaW9uX3ZlcnNpb246 M30pO3JldHVybiBhO319LCdwZXJtaXNzaW9ucy5vYXV0aCc6e3VybDonZGlhbG9n L29hdXRoJyxzaXplOnt3aWR0aDooRkIuVUEubW9iaWxlKCk/bnVsbDo2MjcpLGhl aWdodDooRkIuVUEubW9iaWxlKCk/bnVsbDozMjYpfSx0cmFuc2Zvcm06ZnVuY3Rp b24oYSl7aWYoIUZCLl9hcGlLZXkpe0ZCLmxvZygnRkIubG9naW4oKSBjYWxsZWQg YmVmb3JlIEZCLmluaXQoKS4nKTtyZXR1cm47fWlmKEZCLl9hdXRoUmVzcG9uc2Um JiFhLnBhcmFtcy5zY29wZSl7RkIubG9nKCdGQi5sb2dpbigpIGNhbGxlZCB3aGVu IHVzZXIgaXMgYWxyZWFkeSBjb25uZWN0ZWQuJyk7YS5jYiYmYS5jYih7c3RhdHVz OkZCLl91c2VyU3RhdHVzLGF1dGhSZXNwb25zZTpGQi5fYXV0aFJlc3BvbnNlfSk7 cmV0dXJuO312YXIgYj1hLmNiLGM9YS5pZDtkZWxldGUgYS5jYjtGQi5jb3B5KGEu cGFyYW1zLHtjbGllbnRfaWQ6RkIuX2FwaUtleSxyZWRpcmVjdF91cmk6RkIuQXV0 aC54ZE5ld0hhbmRsZXIoYixjLCdvcGVuZXInKSxvcmlnaW46RkIuQXV0aC5fZ2V0 U2Vzc2lvbk9yaWdpbigpLHJlc3BvbnNlX3R5cGU6J3Rva2VuLHNpZ25lZF9yZXF1 ZXN0J30pO3JldHVybiBhO319LCdhdXRoLmxvZ291dCc6e3VybDonbG9nb3V0LnBo cCcsdHJhbnNmb3JtOmZ1bmN0aW9uKGEpe2lmKCFGQi5fYXBpS2V5KXtGQi5sb2co J0ZCLmxvZ291dCgpIGNhbGxlZCBiZWZvcmUgY2FsbGluZyBGQi5pbml0KCkuJyk7 fWVsc2UgaWYoRkIuX29hdXRoJiYhRkIuX2F1dGhSZXNwb25zZSl7RkIubG9nKCdG Qi5sb2dvdXQoKSBjYWxsZWQgd2l0aG91dCBhbiBhY2Nlc3MgdG9rZW4uJyk7fWVs c2UgaWYoIUZCLl9vYXV0aCYmIUZCLl9zZXNzaW9uKXtGQi5sb2coJ0ZCLmxvZ291 dCgpIGNhbGxlZCB3aXRob3V0IGEgc2Vzc2lvbi4nKTt9ZWxzZXtpZihGQi5fb2F1 dGgpe2EucGFyYW1zLm5leHQ9RkIuQXV0aC54ZE5ld0hhbmRsZXIoYS5jYixhLmlk LCdwYXJlbnQnKTt9ZWxzZSBhLnBhcmFtcy5uZXh0PUZCLkF1dGgueGRIYW5kbGVy KGEuY2IsYS5pZCwncGFyZW50JyxmYWxzZSwndW5rbm93bicpO3JldHVybiBhO319 fSwnYXV0aC5zdGF0dXMnOnt1cmw6J2V4dGVybi9sb2dpbl9zdGF0dXMucGhwJyx0 cmFuc2Zvcm06ZnVuY3Rpb24oYSl7dmFyIGI9YS5jYixjPWEuaWQsZD1GQi5BdXRo LnhkSGFuZGxlcjtkZWxldGUgYS5jYjtGQi5jb3B5KGEucGFyYW1zLHtub19zZXNz aW9uOmQoYixjLCdwYXJlbnQnLGZhbHNlLCdub3RDb25uZWN0ZWQnKSxub191c2Vy OmQoYixjLCdwYXJlbnQnLGZhbHNlLCd1bmtub3duJyksb2tfc2Vzc2lvbjpkKGIs YywncGFyZW50JyxmYWxzZSwnY29ubmVjdGVkJyksc2Vzc2lvbl92ZXJzaW9uOjMs ZXh0ZXJuOkZCLl9pbkNhbnZhcz8wOjIsc2Vzc2lvbl9vcmlnaW46RkIuQXV0aC5f Z2V0U2Vzc2lvbk9yaWdpbigpfSk7cmV0dXJuIGE7fX0sJ2xvZ2luLnN0YXR1cyc6 e3VybDonZGlhbG9nL29hdXRoJyx0cmFuc2Zvcm06ZnVuY3Rpb24oYSl7dmFyIGI9 YS5jYixjPWEuaWQ7ZGVsZXRlIGEuY2I7RkIuY29weShhLnBhcmFtcyx7Y2xpZW50 X2lkOkZCLl9hcGlLZXkscmVkaXJlY3RfdXJpOkZCLkF1dGgueGROZXdIYW5kbGVy KGIsYywncGFyZW50Jyksb3JpZ2luOkZCLkF1dGguX2dldFNlc3Npb25PcmlnaW4o KSxyZXNwb25zZV90eXBlOid0b2tlbixzaWduZWRfcmVxdWVzdCxjb2RlJ30pO3Jl dHVybiBhO319fSk7CkZCLnByb3ZpZGUoJ0NhbnZhc0luc2lnaHRzJyx7c2V0RG9u ZUxvYWRpbmc6ZnVuY3Rpb24oYSl7RkIuQ2FudmFzLnNldERvbmVMb2FkaW5nKGEp O319KTsKRkIucHJvdmlkZSgnQ29va2llJyx7X2RvbWFpbjpudWxsLF9lbmFibGVk OmZhbHNlLHNldEVuYWJsZWQ6ZnVuY3Rpb24oYSl7RkIuQ29va2llLl9lbmFibGVk PWE7fSxnZXRFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIEZCLkNvb2tpZS5fZW5h YmxlZDt9LGxvYWQ6ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5jb29raWUubWF0 Y2goJ1xcYmZic18nK0ZCLl9hcGlLZXkrJz0iKFteO10qKVxcYicpLGI7aWYoYSl7 Yj1GQi5RUy5kZWNvZGUoYVsxXSk7Yi5leHBpcmVzPXBhcnNlSW50KGIuZXhwaXJl cywxMCk7RkIuQ29va2llLl9kb21haW49Yi5iYXNlX2RvbWFpbjt9cmV0dXJuIGI7 fSxsb2FkU2lnbmVkUmVxdWVzdDpmdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LmNv b2tpZS5tYXRjaCgnXFxiZmJzcl8nK0ZCLl9hcGlLZXkrJz0oW147XSopXFxiJyk7 aWYoIWEpcmV0dXJuIG51bGw7cmV0dXJuIGFbMV07fSxzZXRTaWduZWRSZXF1ZXN0 Q29va2llOmZ1bmN0aW9uKGIsYSl7aWYoIUZCLl9vYXV0aCl0aHJvdyBuZXcgRXJy b3IoJ0ZCLkNvb2tpZS5zZXRTaWduZWRSZXF1ZXN0Q29va2llIHNob3VsZCBvbmx5 IGJlICcrJ3VzZWQgd2l0aCBPQXV0aDIuJyk7aWYoIWIpdGhyb3cgbmV3IEVycm9y KCdWYWx1ZSBwYXNzZWQgdG8gRkIuQ29va2llLnNldFNpZ25lZFJlcXVlc3RDb29r aWUgJysnd2FzIGVtcHR5LicpO2lmKCFGQi5Db29raWUuZ2V0RW5hYmxlZCgpKXJl dHVybjtGQi5Db29raWUuc2V0UmF3KCdmYnNyXycsYixhKTt9LGNsZWFyU2lnbmVk UmVxdWVzdENvb2tpZTpmdW5jdGlvbigpe2lmKCFGQi5fb2F1dGgpdGhyb3cgbmV3 IEVycm9yKCdGQi5Db29raWUuc2V0U2lnbmVkUmVxdWVzdENvb2tpZSBzaG91bGQg b25seSBiZSAnKyd1c2VkIHdpdGggT0F1dGgyLicpO2lmKCFGQi5Db29raWUuZ2V0 RW5hYmxlZCgpKXJldHVybjtGQi5Db29raWUuc2V0UmF3KCdmYnNyXycsJycsMCk7 fSxzZXRSYXc6ZnVuY3Rpb24oYyxlLGQsYSl7dmFyIGI9bmV3IERhdGUoZCoxMDAw KS50b0dNVFN0cmluZygpO2RvY3VtZW50LmNvb2tpZT1jK0ZCLl9hcGlLZXkrJz0n K2UrKGUmJmQ9PT0wPycnOic7IGV4cGlyZXM9JytiKSsnOyBwYXRoPS8nKyhhPyc7 IGRvbWFpbj0uJythOicnKTt9LHNldDpmdW5jdGlvbihhKXtpZighYSl7RkIuQ29v a2llLmNsZWFyKCk7cmV0dXJuO31GQi5Db29raWUuc2V0UmF3KCdmYnNfJywnIicr RkIuUVMuZW5jb2RlKGEpKyciJyxhLmV4cGlyZXMsYS5iYXNlX2RvbWFpbik7RkIu Q29va2llLl9kb21haW49YS5iYXNlX2RvbWFpbjt9LGNsZWFyOmZ1bmN0aW9uKCl7 RkIuQ29va2llLnNldFJhdygnZmJzXycsJycsMCxGQi5Db29raWUuX2RvbWFpbik7 fX0pOwpGQi5wcm92aWRlKCdGcmljdGlvbmxlc3MnLHtfYWxsb3dlZFJlY2lwaWVu dHM6e30sX3VzZUZyaWN0aW9ubGVzczpmYWxzZSxfdXBkYXRlUmVjaXBpZW50czpm dW5jdGlvbigpe0ZCLkZyaWN0aW9ubGVzcy5fYWxsb3dlZFJlY2lwaWVudHM9e307 RkIuYXBpKCcvbWUvYXBwcmVxdWVzdGZvcm1lcnJlY2lwaWVudHMnLGZ1bmN0aW9u KGEpe2lmKCFhfHxhLmVycm9yKXJldHVybjtGQi5BcnJheS5mb3JFYWNoKGEuZGF0 YSxmdW5jdGlvbihiKXtGQi5GcmljdGlvbmxlc3MuX2FsbG93ZWRSZWNpcGllbnRz W2IucmVjaXBpZW50X2lkXT10cnVlO30sZmFsc2UpO30pO30saW5pdDpmdW5jdGlv bigpe0ZCLkZyaWN0aW9ubGVzcy5fdXNlRnJpY3Rpb25sZXNzPXRydWU7RkIuZ2V0 TG9naW5TdGF0dXMoZnVuY3Rpb24oYSl7aWYoYS5zdGF0dXM9PSdjb25uZWN0ZWQn KUZCLkZyaWN0aW9ubGVzcy5fdXBkYXRlUmVjaXBpZW50cygpO30pO0ZCLkV2ZW50 LnN1YnNjcmliZSgnYXV0aC5sb2dpbicsZnVuY3Rpb24oYSl7aWYoYS5zZXNzaW9u KUZCLkZyaWN0aW9ubGVzcy5fdXBkYXRlUmVjaXBpZW50cygpO30pO30sX3Byb2Nl c3NSZXF1ZXN0UmVzcG9uc2U6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24o Yyl7dmFyIGQ9YyYmYy51cGRhdGVkX2ZyaWN0aW9ubGVzcztpZihGQi5GcmljdGlv bmxlc3MuX3VzZUZyaWN0aW9ubGVzcyYmZClGQi5GcmljdGlvbmxlc3MuX3VwZGF0 ZVJlY2lwaWVudHMoKTtpZihjKXtpZighYiYmYy5mcmljdGlvbmxlc3Mpe0ZCLkRp YWxvZy5faGlkZUxvYWRlcigpO0ZCLkRpYWxvZy5fcmVzdG9yZUJvZHlQb3NpdGlv bigpO0ZCLkRpYWxvZy5faGlkZUlQYWRPdmVybGF5KCk7fWRlbGV0ZSBjLmZyaWN0 aW9ubGVzcztkZWxldGUgYy51cGRhdGVkX2ZyaWN0aW9ubGVzczt9YSYmYShjKTt9 O30saXNBbGxvd2VkOmZ1bmN0aW9uKGMpe2lmKCFjKXJldHVybiBmYWxzZTtpZih0 eXBlb2YgYz09PSdudW1iZXInKXJldHVybiBGQi5GcmljdGlvbmxlc3MuX2FsbG93 ZWRSZWNpcGllbnRzW2NdO2lmKHR5cGVvZiBjPT09J3N0cmluZycpYz1jLnNwbGl0 KCcsJyk7Yz1GQi5BcnJheS5tYXAoYyxGQi5TdHJpbmcudHJpbSk7dmFyIGE9dHJ1 ZTt2YXIgYj1mYWxzZTtGQi5BcnJheS5mb3JFYWNoKGMsZnVuY3Rpb24oZCl7YT1h JiZGQi5GcmljdGlvbmxlc3MuX2FsbG93ZWRSZWNpcGllbnRzW2RdO2I9dHJ1ZTt9 LGZhbHNlKTtyZXR1cm4gYSYmYjt9fSk7CkZCLnByb3ZpZGUoJycse2luaXRTaXRl dmFyczp7fSxpbml0OmZ1bmN0aW9uKGEpe2E9RkIuY29weShhfHx7fSx7bG9nZ2lu Zzp0cnVlLHN0YXR1czp0cnVlfSk7RkIuX3VzZXJJRD0wO0ZCLl9hcGlLZXk9YS5h cHBJZHx8YS5hcGlLZXk7RkIuX29hdXRoPUZCLmZvcmNlT0F1dGh8fCEhYS5vYXV0 aDtpZighYS5sb2dnaW5nJiZ3aW5kb3cubG9jYXRpb24udG9TdHJpbmcoKS5pbmRl eE9mKCdmYl9kZWJ1Zz0xJyk8MClGQi5fbG9nZ2luZz1mYWxzZTtGQi5YRC5pbml0 KGEuY2hhbm5lbFVybCk7aWYoRkIuVUEubW9iaWxlKCkmJkZCLlRlbXBsYXRlVUkm JkZCLlRlbXBsYXRlRGF0YSYmRkIuVGVtcGxhdGVEYXRhLl9lbmFibGVkJiZhLnVz ZUNhY2hlZERpYWxvZ3MhPT1mYWxzZSl7RkIuVGVtcGxhdGVVSS5pbml0KCk7RkIu RXZlbnQuc3Vic2NyaWJlKCdhdXRoLnN0YXR1c0NoYW5nZScsRkIuVGVtcGxhdGVE YXRhLnVwZGF0ZSk7fWlmKGEucmVwb3J0VGVtcGxhdGVzKUZCLnJlcG9ydFRlbXBs YXRlcz10cnVlO2lmKGEuZnJpY3Rpb25sZXNzUmVxdWVzdHMpRkIuRnJpY3Rpb25s ZXNzLmluaXQoKTtpZihGQi5fYXBpS2V5KXtGQi5Db29raWUuc2V0RW5hYmxlZChh LmNvb2tpZSk7aWYoRkIuX29hdXRoKXtpZihhLmF1dGhSZXNwb25zZSl7RkIuQXV0 aC5zZXRBdXRoUmVzcG9uc2UoYS5hdXRoUmVzcG9uc2UsJ2Nvbm5lY3RlZCcpO31l bHNle3ZhciBjPUZCLkNvb2tpZS5sb2FkU2lnbmVkUmVxdWVzdCgpO3ZhciBiPUZC LkF1dGgucGFyc2VTaWduZWRSZXF1ZXN0KGMpO0ZCLl91c2VySUQ9KGImJmIudXNl cl9pZCl8fDA7fX1lbHNle2Euc2Vzc2lvbj1hLnNlc3Npb258fEZCLkNvb2tpZS5s b2FkKCk7RkIuQXV0aC5zZXRTZXNzaW9uKGEuc2Vzc2lvbixhLnNlc3Npb24/J2Nv bm5lY3RlZCc6J3Vua25vd24nKTt9aWYoYS5zdGF0dXMpRkIuZ2V0TG9naW5TdGF0 dXMoKTt9aWYoRkIuX2luQ2FudmFzKXtGQi5DYW52YXMuX3NldEhpZGVGbGFzaENh bGxiYWNrKGEuaGlkZUZsYXNoQ2FsbGJhY2spO0ZCLkNhbnZhcy5pbml0KCk7fUZC LkV2ZW50LnN1YnNjcmliZSgneGZibWwucGFyc2UnLGZ1bmN0aW9uKCl7RkIuWEZC TUwuSWZyYW1lV2lkZ2V0LmJhdGNoV2lkZ2V0UGlwZVJlcXVlc3RzKCk7fSk7aWYo YS54ZmJtbCl3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2lmKEZCLlhGQk1M KWlmKEZCLmluaXRTaXRldmFycy5wYXJzZVhGQk1MQmVmb3JlRG9tUmVhZHkpe0ZC LlhGQk1MLnBhcnNlKCk7dmFyIGQ9d2luZG93LnNldEludGVydmFsKGZ1bmN0aW9u KCl7RkIuWEZCTUwucGFyc2UoKTt9LDEwMCk7RkIuRG9tLnJlYWR5KGZ1bmN0aW9u KCl7d2luZG93LmNsZWFySW50ZXJ2YWwoZCk7RkIuWEZCTUwucGFyc2UoKTt9KTt9 ZWxzZSBGQi5Eb20ucmVhZHkoRkIuWEZCTUwucGFyc2UpO30sMCk7aWYoRkIuQ2Fu dmFzJiZGQi5DYW52YXMuUHJlZmV0Y2hlcilGQi5DYW52YXMuUHJlZmV0Y2hlci5f bWF5YmVTYW1wbGUoKTt9fSk7CkZCLnByb3ZpZGUoJ0NhbnZhcy5QcmVmZXRjaGVy Jyx7X3NhbXBsZVJhdGU6MCxfYXBwSWRzQmxhY2tsaXN0OltdLF9saW5rczpbXSxD T0xMRUNUX0FVVE9NQVRJQzowLENPTExFQ1RfTUFOVUFMOjEsX2NvbGxlY3Rpb25N b2RlOjAsYWRkU3RhdGljUmVzb3VyY2U6ZnVuY3Rpb24oYSl7aWYoIUZCLl9pbkNh bnZhc3x8IUZCLl9hcGlLZXkpcmV0dXJuO0ZCLkNhbnZhcy5QcmVmZXRjaGVyLl9s aW5rcy5wdXNoKGEpO30sc2V0Q29sbGVjdGlvbk1vZGU6ZnVuY3Rpb24oYSl7aWYo IUZCLl9pbkNhbnZhc3x8IUZCLl9hcGlLZXkpcmV0dXJuIGZhbHNlO2lmKGEhPUZC LkNhbnZhcy5QcmVmZXRjaGVyLkNPTExFQ1RfQVVUT01BVElDJiZhIT1GQi5DYW52 YXMuUHJlZmV0Y2hlci5DT0xMRUNUX01BTlVBTClyZXR1cm4gZmFsc2U7RkIuQ2Fu dmFzLlByZWZldGNoZXIuX2NvbGxlY3Rpb25Nb2RlPWE7fSxfbWF5YmVTYW1wbGU6 ZnVuY3Rpb24oKXtpZighRkIuX2luQ2FudmFzfHwhRkIuX2FwaUtleXx8IUZCLkNh bnZhcy5QcmVmZXRjaGVyLl9zYW1wbGVSYXRlKXJldHVybjt2YXIgYT1NYXRoLnJh bmRvbSgpO2lmKGE+MS9GQi5DYW52YXMuUHJlZmV0Y2hlci5fc2FtcGxlUmF0ZSly ZXR1cm47aWYoRkIuQ2FudmFzLlByZWZldGNoZXIuX2FwcElkc0JsYWNrbGlzdD09 JyonKXJldHVybjtpZihGQi5BcnJheS5pbmRleE9mKEZCLkNhbnZhcy5QcmVmZXRj aGVyLl9hcHBJZHNCbGFja2xpc3QscGFyc2VJbnQoRkIuX2FwaUtleSwxMCkpIT0t MSlyZXR1cm47d2luZG93LnNldFRpbWVvdXQoRkIuQ2FudmFzLlByZWZldGNoZXIu X3NhbXBsZSwzMDAwMCk7fSxfc2FtcGxlOmZ1bmN0aW9uKCl7dmFyIGI9e29iamVj dDonZGF0YScsbGluazonaHJlZicsc2NyaXB0OidzcmMnfTtpZihGQi5DYW52YXMu UHJlZmV0Y2hlci5fY29sbGVjdGlvbk1vZGU9PUZCLkNhbnZhcy5QcmVmZXRjaGVy LkNPTExFQ1RfQVVUT01BVElDKUZCLkFycmF5LmZvckVhY2goYixmdW5jdGlvbihj LGQpe0ZCLkFycmF5LmZvckVhY2god2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRz QnlUYWdOYW1lKGQpLGZ1bmN0aW9uKGUpe2lmKGVbY10pRkIuQ2FudmFzLlByZWZl dGNoZXIuX2xpbmtzLnB1c2goZVtjXSk7fSk7fSk7dmFyIGE9RkIuSlNPTi5zdHJp bmdpZnkoRkIuQ2FudmFzLlByZWZldGNoZXIuX2xpbmtzKTtGQi5hcGkoRkIuX2Fw aUtleSsnL3N0YXRpY3Jlc291cmNlcycsJ3Bvc3QnLHt1cmxzOmEsaXNfaHR0cHM6 RkIuX2h0dHBzfSk7RkIuQ2FudmFzLlByZWZldGNoZXIuX2xpbmtzPVtdO319KTtG Qi5wcm92aWRlKCdDYW52YXMuRWFybHlGbHVzaCcse2FkZFJlc291cmNlOmZ1bmN0 aW9uKGEpe3JldHVybiBGQi5DYW52YXMuUHJlZmV0Y2hlci5hZGRTdGF0aWNSZXNv dXJjZShhKTt9LHNldENvbGxlY3Rpb25Nb2RlOmZ1bmN0aW9uKGEpe3JldHVybiBG Qi5DYW52YXMuUHJlZmV0Y2hlci5zZXRDb2xsZWN0aW9uTW9kZShhKTt9fSk7CkZC LnByb3ZpZGUoJ1VJU2VydmVyLk1vYmlsZUlmcmFtYWJsZU1ldGhvZCcse3RyYW5z Zm9ybTpmdW5jdGlvbihhKXtpZihhLnBhcmFtcy5kaXNwbGF5PT09J3RvdWNoJyYm YS5wYXJhbXMuYWNjZXNzX3Rva2VuJiZ3aW5kb3cucG9zdE1lc3NhZ2Upe2EucGFy YW1zLmNoYW5uZWw9RkIuVUlTZXJ2ZXIuX3hkQ2hhbm5lbEhhbmRsZXIoYS5pZCwn cGFyZW50Jyk7aWYoIUZCLlVBLm5hdGl2ZUFwcCgpKWEucGFyYW1zLmluX2lmcmFt ZT0xO3JldHVybiBhO31lbHNlIHJldHVybiBGQi5VSVNlcnZlci5nZW5lcmljVHJh bnNmb3JtKGEpO30sZ2V0WGRSZWxhdGlvbjpmdW5jdGlvbihiKXt2YXIgYT1iLmRp c3BsYXk7aWYoYT09PSd0b3VjaCcmJndpbmRvdy5wb3N0TWVzc2FnZSYmYi5pbl9p ZnJhbWUpcmV0dXJuICdwYXJlbnQnO3JldHVybiBGQi5VSVNlcnZlci5nZXRYZFJl bGF0aW9uKGIpO319KTtGQi5wcm92aWRlKCdVSVNlcnZlci5NZXRob2RzJyx7J3N0 cmVhbS5zaGFyZSc6e3NpemU6e3dpZHRoOjU3NSxoZWlnaHQ6MzgwfSx1cmw6J3No YXJlci5waHAnLHRyYW5zZm9ybTpmdW5jdGlvbihhKXtpZighYS5wYXJhbXMudSlh LnBhcmFtcy51PXdpbmRvdy5sb2NhdGlvbi50b1N0cmluZygpO3JldHVybiBhO319 LCdmYm1sLmRpYWxvZyc6e3NpemU6e3dpZHRoOjU3NSxoZWlnaHQ6MzAwfSx1cmw6 J3JlbmRlcl9mYm1sLnBocCcsbG9nZ2VkT3V0SWZyYW1lOnRydWUsdHJhbnNmb3Jt OmZ1bmN0aW9uKGEpe3JldHVybiBhO319LCdhdXRoLmxvZ2ludG9mYWNlYm9vayc6 e3NpemU6e3dpZHRoOjUzMCxoZWlnaHQ6Mjg3fSx1cmw6J2xvZ2luLnBocCcsdHJh bnNmb3JtOmZ1bmN0aW9uKGEpe2EucGFyYW1zLnNraXBfYXBpX2xvZ2luPTE7dmFy IGM9RkIuVUlTZXJ2ZXIuZ2V0WGRSZWxhdGlvbihhLnBhcmFtcyk7dmFyIGI9RkIu VUlTZXJ2ZXIuX3hkUmVzdWx0KGEuY2IsYS5pZCxjLHRydWUpO2EucGFyYW1zLm5l eHQ9RkIuZ2V0RG9tYWluKEZCLl9odHRwcz8naHR0cHNfd3d3Jzond3d3JykrImxv Z2luLnBocD8iK0ZCLlFTLmVuY29kZSh7YXBpX2tleTpGQi5fYXBpS2V5LG5leHQ6 Yixza2lwX2FwaV9sb2dpbjoxfSk7cmV0dXJuIGE7fX0sYXBwcmVxdWVzdHM6e3Ry YW5zZm9ybTpmdW5jdGlvbihhKXthPUZCLlVJU2VydmVyLk1vYmlsZUlmcmFtYWJs ZU1ldGhvZC50cmFuc2Zvcm0oYSk7YS5wYXJhbXMuZnJpY3Rpb25sZXNzPUZCLkZy aWN0aW9ubGVzcyYmRkIuRnJpY3Rpb25sZXNzLl91c2VGcmljdGlvbmxlc3M7aWYo YS5wYXJhbXMuZnJpY3Rpb25sZXNzKXthLmhpZGVMb2FkZXI9RkIuRnJpY3Rpb25s ZXNzLmlzQWxsb3dlZChhLnBhcmFtcy50byk7YS5jYj1GQi5GcmljdGlvbmxlc3Mu X3Byb2Nlc3NSZXF1ZXN0UmVzcG9uc2UoYS5jYixhLmhpZGVMb2FkZXIpO31yZXR1 cm4gYTt9LGdldFhkUmVsYXRpb246ZnVuY3Rpb24oYSl7cmV0dXJuIEZCLlVJU2Vy dmVyLk1vYmlsZUlmcmFtYWJsZU1ldGhvZC5nZXRYZFJlbGF0aW9uKGEpO319LGZl ZWQ6RkIuVUlTZXJ2ZXIuTW9iaWxlSWZyYW1hYmxlTWV0aG9kfSk7CkZCLnByb3Zp ZGUoJycse3NoYXJlOmZ1bmN0aW9uKGEpe0ZCLmxvZygnRkIuc2hhcmUoKSBoYXMg YmVlbiBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIEZCLnVpKCkgaW5zdGVhZC4nKTtG Qi51aSh7ZGlzcGxheToncG9wdXAnLG1ldGhvZDonc3RyZWFtLnNoYXJlJyx1OmF9 KTt9LHB1Ymxpc2g6ZnVuY3Rpb24oYixhKXtGQi5sb2coJ0ZCLnB1Ymxpc2goKSBo YXMgYmVlbiBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIEZCLnVpKCkgaW5zdGVhZC4n KTtiPWJ8fHt9O0ZCLnVpKEZCLmNvcHkoe2Rpc3BsYXk6J3BvcHVwJyxtZXRob2Q6 J3N0cmVhbS5wdWJsaXNoJyxwcmV2aWV3OjF9LGJ8fHt9KSxhKTt9LGFkZEZyaWVu ZDpmdW5jdGlvbihiLGEpe0ZCLmxvZygnRkIuYWRkRnJpZW5kKCkgaGFzIGJlZW4g ZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBGQi51aSgpIGluc3RlYWQuJyk7RkIudWko e2Rpc3BsYXk6J3BvcHVwJyxpZDpiLG1ldGhvZDonZnJpZW5kLmFkZCd9LGEpO319 KTtGQi5VSVNlcnZlci5NZXRob2RzWydhdXRoLmxvZ2luJ109RkIuVUlTZXJ2ZXIu TWV0aG9kc1sncGVybWlzc2lvbnMucmVxdWVzdCddOwpGQi5wcm92aWRlKCdYRkJN TCcse19yZW5kZXJUaW1lb3V0OjMwMDAwLGdldEVsZW1lbnRzOmZ1bmN0aW9uKGIs ZixkKXt2YXIgYT1GQi5BcnJheSxlPUZCLlhGQk1MLl9nZXREb21FbGVtZW50cyhi LGYsZCksYz1GQi5Eb20uZ2V0QnlDbGFzcyhmKyctJytkLGIpO2U9YS50b0FycmF5 KGUpO2M9YS50b0FycmF5KGMpO2M9YS5maWx0ZXIoYyxmdW5jdGlvbihnKXtyZXR1 cm4gIWcuaGFzQ2hpbGROb2RlcygpfHwoZy5jaGlsZE5vZGVzLmxlbmd0aD09PTEm JmcuY2hpbGROb2Rlc1swXS5ub2RlVHlwZT09PTMpO30pO3JldHVybiBhLm1lcmdl KGUsYyk7fSxwYXJzZTpmdW5jdGlvbihkLGIpe2Q9ZHx8ZG9jdW1lbnQuYm9keTt2 YXIgYz0xLGU9ZnVuY3Rpb24oKXtjLS07aWYoYz09PTApe2ImJmIoKTtGQi5FdmVu dC5maXJlKCd4ZmJtbC5yZW5kZXInKTt9fTt2YXIgYT17fTtpZihGQi5YRkJNTC5f d2lkZ2V0UGlwZUlzRW5hYmxlZCgpKUZCLkFycmF5LmZvckVhY2goRkIuWEZCTUwu X3RhZ0luZm9zLGZ1bmN0aW9uKGYpe2lmKGYuc3VwcG9ydHNXaWRnZXRQaXBlKXt2 YXIgaD1mLnhtbG5zP2YueG1sbnM6J2ZiJzt2YXIgZz1GQi5YRkJNTC5nZXRFbGVt ZW50cyhkLGgsZi5sb2NhbE5hbWUpO2FbZi5sb2NhbE5hbWVdPWc7RkIuWEZCTUwu X3dpZGdldFBpcGVFbmFibGVkVGFnQ291bnQrPWcubGVuZ3RoO319KTtGQi5BcnJh eS5mb3JFYWNoKEZCLlhGQk1MLl90YWdJbmZvcyxmdW5jdGlvbihnKXtpZighZy54 bWxucylnLnhtbG5zPSdmYic7dmFyIGg7aWYoYVtnLmxvY2FsTmFtZV0hPT11bmRl ZmluZWQpe2g9YVtnLmxvY2FsTmFtZV07fWVsc2UgaD1GQi5YRkJNTC5nZXRFbGVt ZW50cyhkLGcueG1sbnMsZy5sb2NhbE5hbWUpO2Zvcih2YXIgZj0wO2Y8aC5sZW5n dGg7ZisrKXtjKys7RkIuWEZCTUwuX3Byb2Nlc3NFbGVtZW50KGhbZl0sZyxlKTt9 fSk7RkIuRXZlbnQuZmlyZSgneGZibWwucGFyc2UnKTt3aW5kb3cuc2V0VGltZW91 dChmdW5jdGlvbigpe2lmKGM+MClGQi5sb2coYysnIFhGQk1MIHRhZ3MgZmFpbGVk IHRvIHJlbmRlciBpbiAnK0ZCLlhGQk1MLl9yZW5kZXJUaW1lb3V0Kydtcy4nKTt9 LEZCLlhGQk1MLl9yZW5kZXJUaW1lb3V0KTtlKCk7fSxyZWdpc3RlclRhZzpmdW5j dGlvbihhKXtGQi5YRkJNTC5fdGFnSW5mb3MucHVzaChhKTt9LHNob3VsZFVzZVdp ZGdldFBpcGU6ZnVuY3Rpb24oKXtpZighRkIuWEZCTUwuX3dpZGdldFBpcGVJc0Vu YWJsZWQoKSlyZXR1cm4gZmFsc2U7dmFyIGE9RkIuWEZCTUwuX3dpZGdldFBpcGVF bmFibGVkVGFnQ291bnQ+MTtyZXR1cm4gYTt9LGdldEJvb2xBdHRyOmZ1bmN0aW9u KGIsYSl7YT1GQi5YRkJNTC5nZXRBdHRyKGIsYSk7cmV0dXJuIChhJiZGQi5BcnJh eS5pbmRleE9mKFsndHJ1ZScsJzEnLCd5ZXMnLCdvbiddLGEudG9Mb3dlckNhc2Uo KSk+LTEpO30sZ2V0QXR0cjpmdW5jdGlvbihiLGEpe3JldHVybiAoYi5nZXRBdHRy aWJ1dGUoYSl8fGIuZ2V0QXR0cmlidXRlKGEucmVwbGFjZSgvXy9nLCctJykpfHxi LmdldEF0dHJpYnV0ZShhLnJlcGxhY2UoLy0vZywnXycpKXx8Yi5nZXRBdHRyaWJ1 dGUoYS5yZXBsYWNlKC8tL2csJycpKXx8Yi5nZXRBdHRyaWJ1dGUoYS5yZXBsYWNl KC9fL2csJycpKXx8Yi5nZXRBdHRyaWJ1dGUoJ2RhdGEtJythKXx8Yi5nZXRBdHRy aWJ1dGUoJ2RhdGEtJythLnJlcGxhY2UoL18vZywnLScpKXx8Yi5nZXRBdHRyaWJ1 dGUoJ2RhdGEtJythLnJlcGxhY2UoLy0vZywnXycpKXx8Yi5nZXRBdHRyaWJ1dGUo J2RhdGEtJythLnJlcGxhY2UoLy0vZywnJykpfHxiLmdldEF0dHJpYnV0ZSgnZGF0 YS0nK2EucmVwbGFjZSgvXy9nLCcnKSl8fG51bGwpO30sX3Byb2Nlc3NFbGVtZW50 OmZ1bmN0aW9uKGRvbSx0YWdJbmZvLGNiKXt2YXIgZWxlbWVudD1kb20uX2VsZW1l bnQ7aWYoZWxlbWVudCl7ZWxlbWVudC5zdWJzY3JpYmUoJ3JlbmRlcicsY2IpO2Vs ZW1lbnQucHJvY2VzcygpO31lbHNle3ZhciBwcm9jZXNzb3I9ZnVuY3Rpb24oKXt2 YXIgZm49ZXZhbCh0YWdJbmZvLmNsYXNzTmFtZSk7dmFyIGlzTG9naW49ZmFsc2U7 dmFyIHNob3dGYWNlcz10cnVlO3ZhciByZW5kZXJJbklmcmFtZT1mYWxzZTt2YXIg YWRkVG9UaW1lbGluZT0odGFnSW5mby5jbGFzc05hbWU9PT0nRkIuWEZCTUwuQWRk VG9UaW1lbGluZScpO2lmKCh0YWdJbmZvLmNsYXNzTmFtZT09PSdGQi5YRkJNTC5M b2dpbkJ1dHRvbicpfHxhZGRUb1RpbWVsaW5lKXtyZW5kZXJJbklmcmFtZT1GQi5Y RkJNTC5nZXRCb29sQXR0cihkb20sJ3JlbmRlci1pbi1pZnJhbWUnKTttb2RlPUZC LlhGQk1MLmdldEF0dHIoZG9tLCdtb2RlJyk7c2hvd0ZhY2VzPShhZGRUb1RpbWVs aW5lJiZtb2RlIT0nYnV0dG9uJyl8fEZCLlhGQk1MLmdldEJvb2xBdHRyKGRvbSwn c2hvdy1mYWNlcycpO2lzTG9naW49YWRkVG9UaW1lbGluZXx8cmVuZGVySW5JZnJh bWV8fHNob3dGYWNlc3x8RkIuWEZCTUwuZ2V0Qm9vbEF0dHIoZG9tLCdvbmVjbGlj aycpO2lmKGlzTG9naW4mJiFhZGRUb1RpbWVsaW5lKWZuPUZCLlhGQk1MLkxvZ2lu O31lbGVtZW50PWRvbS5fZWxlbWVudD1uZXcgZm4oZG9tKTtpZihpc0xvZ2luKXtz aG93RmFjZXM9ISFzaG93RmFjZXM7dmFyIGV4dHJhUGFyYW1zPXtzaG93X2ZhY2Vz OnNob3dGYWNlcyxhZGRfdG9fcHJvZmlsZTphZGRUb1RpbWVsaW5lLG1vZGU6bW9k ZX07dmFyIHNjb3BlPUZCLlhGQk1MLmdldEF0dHIoZG9tLCdzY29wZScpO2lmKHNj b3BlKXtpZihGQi5fb2F1dGgpe2V4dHJhUGFyYW1zLnNjb3BlPXNjb3BlO31lbHNl IGV4dHJhUGFyYW1zLnBlcm1zPXNjb3BlO31lbHNle3ZhciBwZXJtcz1GQi5YRkJN TC5nZXRBdHRyKGRvbSwncGVybXMnKTtpZihwZXJtcylleHRyYVBhcmFtcy5wZXJt cz1wZXJtczt9ZWxlbWVudC5zZXRFeHRyYVBhcmFtcyhleHRyYVBhcmFtcyk7fWVs ZW1lbnQuc3Vic2NyaWJlKCdyZW5kZXInLGNiKTtlbGVtZW50LnByb2Nlc3MoKTt9 O2lmKEZCLkNMQVNTRVNbdGFnSW5mby5jbGFzc05hbWUuc3Vic3RyKDMpXSl7cHJv Y2Vzc29yKCk7fWVsc2UgRkIubG9nKCdUYWcgJyt0YWdJbmZvLmNsYXNzTmFtZSsn IHdhcyBub3QgZm91bmQuJyk7fX0sX2dldERvbUVsZW1lbnRzOmZ1bmN0aW9uKGEs ZSxkKXt2YXIgYz1lKyc6JytkO2lmKEZCLlVBLmZpcmVmb3goKSl7cmV0dXJuIGEu Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhkb2N1bWVudC5ib2R5Lm5hbWVzcGFjZVVS SSxjKTt9ZWxzZSBpZihGQi5VQS5pZSgpPDkpe3RyeXt2YXIgZG9jTmFtZXNwYWNl cz1kb2N1bWVudC5uYW1lc3BhY2VzO2lmKGRvY05hbWVzcGFjZXMmJmRvY05hbWVz cGFjZXNbZV0pe3ZhciBub2Rlcz1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGQpO2lm KCFkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyfHxub2Rlcy5sZW5ndGg+MClyZXR1 cm4gbm9kZXM7fX1jYXRjaChiKXt9cmV0dXJuIGEuZ2V0RWxlbWVudHNCeVRhZ05h bWUoYyk7fWVsc2UgcmV0dXJuIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYyk7fSxf dGFnSW5mb3M6W3tsb2NhbE5hbWU6J2FjdGl2aXR5JyxjbGFzc05hbWU6J0ZCLlhG Qk1MLkFjdGl2aXR5J30se2xvY2FsTmFtZTonYWRkLXByb2ZpbGUtdGFiJyxjbGFz c05hbWU6J0ZCLlhGQk1MLkFkZFByb2ZpbGVUYWInfSx7bG9jYWxOYW1lOidhZGQt dG8tdGltZWxpbmUnLGNsYXNzTmFtZTonRkIuWEZCTUwuQWRkVG9UaW1lbGluZSd9 LHtsb2NhbE5hbWU6J2Jvb2ttYXJrJyxjbGFzc05hbWU6J0ZCLlhGQk1MLkJvb2tt YXJrJ30se2xvY2FsTmFtZTonY29tbWVudHMnLGNsYXNzTmFtZTonRkIuWEZCTUwu Q29tbWVudHMnfSx7bG9jYWxOYW1lOidjb21tZW50cy1jb3VudCcsY2xhc3NOYW1l OidGQi5YRkJNTC5Db21tZW50c0NvdW50J30se2xvY2FsTmFtZTonY29ubmVjdC1i YXInLGNsYXNzTmFtZTonRkIuWEZCTUwuQ29ubmVjdEJhcid9LHtsb2NhbE5hbWU6 J2ZhbicsY2xhc3NOYW1lOidGQi5YRkJNTC5GYW4nfSx7bG9jYWxOYW1lOidsaWtl JyxjbGFzc05hbWU6J0ZCLlhGQk1MLkxpa2UnLHN1cHBvcnRzV2lkZ2V0UGlwZTp0 cnVlfSx7bG9jYWxOYW1lOidsaWtlLWJveCcsY2xhc3NOYW1lOidGQi5YRkJNTC5M aWtlQm94J30se2xvY2FsTmFtZTonbGl2ZS1zdHJlYW0nLGNsYXNzTmFtZTonRkIu WEZCTUwuTGl2ZVN0cmVhbSd9LHtsb2NhbE5hbWU6J2xvZ2luJyxjbGFzc05hbWU6 J0ZCLlhGQk1MLkxvZ2luJ30se2xvY2FsTmFtZTonbG9naW4tYnV0dG9uJyxjbGFz c05hbWU6J0ZCLlhGQk1MLkxvZ2luQnV0dG9uJ30se2xvY2FsTmFtZTonZmFjZXBp bGUnLGNsYXNzTmFtZTonRkIuWEZCTUwuRmFjZXBpbGUnfSx7bG9jYWxOYW1lOidm cmllbmRwaWxlJyxjbGFzc05hbWU6J0ZCLlhGQk1MLkZyaWVuZHBpbGUnfSx7bG9j YWxOYW1lOiduYW1lJyxjbGFzc05hbWU6J0ZCLlhGQk1MLk5hbWUnfSx7bG9jYWxO YW1lOidwcm9maWxlLXBpYycsY2xhc3NOYW1lOidGQi5YRkJNTC5Qcm9maWxlUGlj J30se2xvY2FsTmFtZToncXVlc3Rpb24nLGNsYXNzTmFtZTonRkIuWEZCTUwuUXVl c3Rpb24nfSx7bG9jYWxOYW1lOidyZWNvbW1lbmRhdGlvbnMnLGNsYXNzTmFtZTon RkIuWEZCTUwuUmVjb21tZW5kYXRpb25zJ30se2xvY2FsTmFtZToncmVjb21tZW5k YXRpb25zLWJhcicsY2xhc3NOYW1lOidGQi5YRkJNTC5SZWNvbW1lbmRhdGlvbnNC YXInfSx7bG9jYWxOYW1lOidyZWdpc3RyYXRpb24nLGNsYXNzTmFtZTonRkIuWEZC TUwuUmVnaXN0cmF0aW9uJ30se2xvY2FsTmFtZTonc2VuZCcsY2xhc3NOYW1lOidG Qi5YRkJNTC5TZW5kJ30se2xvY2FsTmFtZTonc2VydmVyZmJtbCcsY2xhc3NOYW1l OidGQi5YRkJNTC5TZXJ2ZXJGYm1sJ30se2xvY2FsTmFtZTonc2hhcmUtYnV0dG9u JyxjbGFzc05hbWU6J0ZCLlhGQk1MLlNoYXJlQnV0dG9uJ30se2xvY2FsTmFtZTon c3Vic2NyaWJlJyxjbGFzc05hbWU6J0ZCLlhGQk1MLlN1YnNjcmliZSd9XSxfd2lk Z2V0UGlwZUVuYWJsZWRUYWdDb3VudDowLF93aWRnZXRQaXBlSXNFbmFibGVkOmZ1 bmN0aW9uKCl7cmV0dXJuIEZCLndpZGdldFBpcGVFbmFibGVkQXBwcyYmRkIud2lk Z2V0UGlwZUVuYWJsZWRBcHBzW0ZCLl9hcGlLZXldIT09dW5kZWZpbmVkO319KTso ZnVuY3Rpb24oKXt0cnl7aWYoZG9jdW1lbnQubmFtZXNwYWNlcyYmIWRvY3VtZW50 Lm5hbWVzcGFjZXMuaXRlbS5mYilkb2N1bWVudC5uYW1lc3BhY2VzLmFkZCgnZmIn KTt9Y2F0Y2goYSl7fX0oKSk7CkZCLnByb3ZpZGUoJ1hGQk1MJyx7c2V0OmZ1bmN0 aW9uKGIsYyxhKXtGQi5sb2coJ0ZCLlhGQk1MLnNldCgpIGhhcyBiZWVuIGRlcHJl Y2F0ZWQuJyk7Yi5pbm5lckhUTUw9YztGQi5YRkJNTC5wYXJzZShiLGEpO319KTsK RkIuc3ViY2xhc3MoJ1dhaXRhYmxlJywnT2JqJyxmdW5jdGlvbigpe30se3NldDpm dW5jdGlvbihhKXt0aGlzLnNldFByb3BlcnR5KCd2YWx1ZScsYSk7fSxlcnJvcjpm dW5jdGlvbihhKXt0aGlzLmZpcmUoImVycm9yIixhKTt9LHdhaXQ6ZnVuY3Rpb24o YSxiKXtpZihiKXRoaXMuc3Vic2NyaWJlKCdlcnJvcicsYik7dGhpcy5tb25pdG9y KCd2YWx1ZScsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7aWYodGhpcy52YWx1ZSE9PXVu ZGVmaW5lZCl7YSh0aGlzLnZhbHVlKTtyZXR1cm4gdHJ1ZTt9fSkpO319KTsKRkIu c3ViY2xhc3MoJ0RhdGEuUXVlcnknLCdXYWl0YWJsZScsZnVuY3Rpb24oKXtpZigh RkIuRGF0YS5RdWVyeS5fYylGQi5EYXRhLlF1ZXJ5Ll9jPTE7dGhpcy5uYW1lPSd2 XycrRkIuRGF0YS5RdWVyeS5fYysrO30se3BhcnNlOmZ1bmN0aW9uKGEpe3ZhciBi PUZCLlN0cmluZy5mb3JtYXQuYXBwbHkobnVsbCxhKSxkPSgvXnNlbGVjdCAoLio/ KSBmcm9tIChcdyspXHMrd2hlcmUgKC4qKSQvaSkuZXhlYyhiKTt0aGlzLmZpZWxk cz10aGlzLl90b0ZpZWxkcyhkWzFdKTt0aGlzLnRhYmxlPWRbMl07dGhpcy53aGVy ZT10aGlzLl9wYXJzZVdoZXJlKGRbM10pO2Zvcih2YXIgYz0xO2M8YS5sZW5ndGg7 YysrKWlmKEZCLlR5cGUuaXNUeXBlKGFbY10sRkIuRGF0YS5RdWVyeSkpYVtjXS5o YXNEZXBlbmRlbmN5PXRydWU7cmV0dXJuIHRoaXM7fSx0b0ZxbDpmdW5jdGlvbigp e3ZhciBhPSdzZWxlY3QgJyt0aGlzLmZpZWxkcy5qb2luKCcsJykrJyBmcm9tICcr dGhpcy50YWJsZSsnIHdoZXJlICc7c3dpdGNoKHRoaXMud2hlcmUudHlwZSl7Y2Fz ZSAndW5rbm93bic6YSs9dGhpcy53aGVyZS52YWx1ZTticmVhaztjYXNlICdpbmRl eCc6YSs9dGhpcy53aGVyZS5rZXkrJz0nK3RoaXMuX2VuY29kZSh0aGlzLndoZXJl LnZhbHVlKTticmVhaztjYXNlICdpbic6aWYodGhpcy53aGVyZS52YWx1ZS5sZW5n dGg9PTEpe2ErPXRoaXMud2hlcmUua2V5Kyc9Jyt0aGlzLl9lbmNvZGUodGhpcy53 aGVyZS52YWx1ZVswXSk7fWVsc2UgYSs9dGhpcy53aGVyZS5rZXkrJyBpbiAoJytG Qi5BcnJheS5tYXAodGhpcy53aGVyZS52YWx1ZSx0aGlzLl9lbmNvZGUpLmpvaW4o JywnKSsnKSc7YnJlYWs7fXJldHVybiBhO30sX2VuY29kZTpmdW5jdGlvbihhKXty ZXR1cm4gdHlwZW9mKGEpPT0nc3RyaW5nJz9GQi5TdHJpbmcucXVvdGUoYSk6YTt9 LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICcjJyt0aGlzLm5hbWU7fSxfdG9G aWVsZHM6ZnVuY3Rpb24oYSl7cmV0dXJuIEZCLkFycmF5Lm1hcChhLnNwbGl0KCcs JyksRkIuU3RyaW5nLnRyaW0pO30sX3BhcnNlV2hlcmU6ZnVuY3Rpb24ocyl7dmFy IHJlPSgvXlxzKihcdyspXHMqPVxzKiguKilccyokL2kpLmV4ZWMocykscmVzdWx0 LHZhbHVlLHR5cGU9J3Vua25vd24nO2lmKHJlKXt2YWx1ZT1yZVsyXTtpZigvXihb IiddKSg/OlxcPy4pKj9cMSQvLnRlc3QodmFsdWUpKXt2YWx1ZT1ldmFsKHZhbHVl KTt0eXBlPSdpbmRleCc7fWVsc2UgaWYoL15cZCtcLj9cZCokLy50ZXN0KHZhbHVl KSl0eXBlPSdpbmRleCc7fWlmKHR5cGU9PSdpbmRleCcpe3Jlc3VsdD17dHlwZTon aW5kZXgnLGtleTpyZVsxXSx2YWx1ZTp2YWx1ZX07fWVsc2UgcmVzdWx0PXt0eXBl Oid1bmtub3duJyx2YWx1ZTpzfTtyZXR1cm4gcmVzdWx0O319KTsKRkIucHJvdmlk ZSgnRGF0YScse3F1ZXJ5OmZ1bmN0aW9uKGMsYSl7dmFyIGI9bmV3IEZCLkRhdGEu UXVlcnkoKS5wYXJzZShhcmd1bWVudHMpO0ZCLkRhdGEucXVldWUucHVzaChiKTtG Qi5EYXRhLl93YWl0VG9Qcm9jZXNzKCk7cmV0dXJuIGI7fSx3YWl0T246ZnVuY3Rp b24oZGVwZW5kZW5jaWVzLGNhbGxiYWNrKXt2YXIgcmVzdWx0PW5ldyBGQi5XYWl0 YWJsZSgpLGNvdW50PWRlcGVuZGVuY2llcy5sZW5ndGg7aWYodHlwZW9mKGNhbGxi YWNrKT09J3N0cmluZycpe3ZhciBzPWNhbGxiYWNrO2NhbGxiYWNrPWZ1bmN0aW9u KGFyZ3Mpe3JldHVybiBldmFsKHMpO307fUZCLkFycmF5LmZvckVhY2goZGVwZW5k ZW5jaWVzLGZ1bmN0aW9uKGl0ZW0pe2l0ZW0ubW9uaXRvcigndmFsdWUnLGZ1bmN0 aW9uKCl7dmFyIGRvbmU9ZmFsc2U7aWYoRkIuRGF0YS5fZ2V0VmFsdWUoaXRlbSkh PT11bmRlZmluZWQpe2NvdW50LS07ZG9uZT10cnVlO31pZihjb3VudD09PTApe3Zh ciB2YWx1ZT1jYWxsYmFjayhGQi5BcnJheS5tYXAoZGVwZW5kZW5jaWVzLEZCLkRh dGEuX2dldFZhbHVlKSk7cmVzdWx0LnNldCh2YWx1ZSE9PXVuZGVmaW5lZD92YWx1 ZTp0cnVlKTt9cmV0dXJuIGRvbmU7fSk7fSk7cmV0dXJuIHJlc3VsdDt9LF9nZXRW YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gRkIuVHlwZS5pc1R5cGUoYSxGQi5XYWl0 YWJsZSk/YS52YWx1ZTphO30sX3NlbGVjdEJ5SW5kZXg6ZnVuY3Rpb24oYSxkLGIs ZSl7dmFyIGM9bmV3IEZCLkRhdGEuUXVlcnkoKTtjLmZpZWxkcz1hO2MudGFibGU9 ZDtjLndoZXJlPXt0eXBlOidpbmRleCcsa2V5OmIsdmFsdWU6ZX07RkIuRGF0YS5x dWV1ZS5wdXNoKGMpO0ZCLkRhdGEuX3dhaXRUb1Byb2Nlc3MoKTtyZXR1cm4gYzt9 LF93YWl0VG9Qcm9jZXNzOmZ1bmN0aW9uKCl7aWYoRkIuRGF0YS50aW1lcjwwKUZC LkRhdGEudGltZXI9c2V0VGltZW91dChGQi5EYXRhLl9wcm9jZXNzLDEwKTt9LF9w cm9jZXNzOmZ1bmN0aW9uKCl7RkIuRGF0YS50aW1lcj0tMTt2YXIgYz17fSxlPUZC LkRhdGEucXVldWU7RkIuRGF0YS5xdWV1ZT1bXTtmb3IodmFyIGE9MDthPGUubGVu Z3RoO2ErKyl7dmFyIGI9ZVthXTtpZihiLndoZXJlLnR5cGU9PSdpbmRleCcmJiFi Lmhhc0RlcGVuZGVuY3kpe0ZCLkRhdGEuX21lcmdlSW5kZXhRdWVyeShiLGMpO31l bHNlIGNbYi5uYW1lXT1iO312YXIgZD17bWV0aG9kOidmcWwubXVsdGlxdWVyeScs cXVlcmllczp7fX07RkIuY29weShkLnF1ZXJpZXMsYyx0cnVlLGZ1bmN0aW9uKGYp e3JldHVybiBmLnRvRnFsKCk7fSk7ZC5xdWVyaWVzPUZCLkpTT04uc3RyaW5naWZ5 KGQucXVlcmllcyk7RkIuYXBpKGQsZnVuY3Rpb24oZil7aWYoZi5lcnJvcl9tc2cp e0ZCLkFycmF5LmZvckVhY2goYyxmdW5jdGlvbihnKXtnLmVycm9yKEVycm9yKGYu ZXJyb3JfbXNnKSk7fSk7fWVsc2UgRkIuQXJyYXkuZm9yRWFjaChmLGZ1bmN0aW9u KGcpe2NbZy5uYW1lXS5zZXQoZy5mcWxfcmVzdWx0X3NldCk7fSk7fSk7fSxfbWVy Z2VJbmRleFF1ZXJ5OmZ1bmN0aW9uKGEsZCl7dmFyIGI9YS53aGVyZS5rZXksZj1h LndoZXJlLnZhbHVlO3ZhciBlPSdpbmRleF8nK2EudGFibGUrJ18nK2I7dmFyIGM9 ZFtlXTtpZighYyl7Yz1kW2VdPW5ldyBGQi5EYXRhLlF1ZXJ5KCk7Yy5maWVsZHM9 W2JdO2MudGFibGU9YS50YWJsZTtjLndoZXJlPXt0eXBlOidpbicsa2V5OmIsdmFs dWU6W119O31GQi5BcnJheS5tZXJnZShjLmZpZWxkcyxhLmZpZWxkcyk7RkIuQXJy YXkubWVyZ2UoYy53aGVyZS52YWx1ZSxbZl0pO2Mud2FpdChmdW5jdGlvbihnKXth LnNldChGQi5BcnJheS5maWx0ZXIoZyxmdW5jdGlvbihoKXtyZXR1cm4gaFtiXT09 Zjt9KSk7fSk7fSx0aW1lcjotMSxxdWV1ZTpbXX0pOwp3aW5kb3cuc2V0VGltZW91 dChmdW5jdGlvbigpe3ZhciBhPS8oY29ubmVjdC5mYWNlYm9vay5uZXR8ZmFjZWJv b2suY29tXC9hc3NldHMucGhwKS4qPyMoLiopLztGQi5BcnJheS5mb3JFYWNoKGRv Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKSxmdW5jdGlvbihk KXtpZihkLnNyYyl7dmFyIGI9YS5leGVjKGQuc3JjKTtpZihiKXt2YXIgYz1GQi5R Uy5kZWNvZGUoYlsyXSk7RkIuQXJyYXkuZm9yRWFjaChjLGZ1bmN0aW9uKGYsZSl7 aWYoZj09JzAnKWNbZV09MDt9KTtjLm9hdXRoPXRydWU7RkIuaW5pdChjKTt9fX0p O2lmKHdpbmRvdy5mYkFzeW5jSW5pdCYmIXdpbmRvdy5mYkFzeW5jSW5pdC5oYXNS dW4pe3dpbmRvdy5mYkFzeW5jSW5pdC5oYXNSdW49dHJ1ZTtmYkFzeW5jSW5pdCgp O319LDApOwpGQi5wcm92aWRlKCdOYXRpdmUnLHtOQVRJVkVfUkVBRFlfRVZFTlQ6 J2ZiTmF0aXZlUmVhZHknLG9ucmVhZHk6ZnVuY3Rpb24oYSl7aWYoIUZCLlVBLm5h dGl2ZUFwcCgpKXtGQi5sb2coJ0ZCLk5hdGl2ZS5vbnJlYWR5IG9ubHkgd29ya3Mg d2hlbiB0aGUgcGFnZSBpcyByZW5kZXJlZCAnKydpbiBhIFdlYlZpZXcgb2YgdGhl IG5hdGl2ZSBGYWNlYm9vayBhcHAuIFRlc3QgaWYgdGhpcyBpcyB0aGUgJysnY2Fz ZSBjYWxsaW5nIEZCLlVBLm5hdGl2ZUFwcCgpJyk7cmV0dXJuO31pZih3aW5kb3cu X19mYk5hdGl2ZSYmIXRoaXMubmF0aXZlUmVhZHkpRkIucHJvdmlkZSgnTmF0aXZl Jyx3aW5kb3cuX19mYk5hdGl2ZSk7aWYodGhpcy5uYXRpdmVSZWFkeSl7YSgpO31l bHNle3ZhciBiPWZ1bmN0aW9uKGMpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVy KEZCLk5hdGl2ZS5OQVRJVkVfUkVBRFlfRVZFTlQsYik7RkIuTmF0aXZlLm9ucmVh ZHkoYSk7fTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihGQi5OYXRpdmUuTkFUSVZF X1JFQURZX0VWRU5ULGIsZmFsc2UpO319fSk7CkZCLnByb3ZpZGUoJ1VJU2VydmVy Lk1ldGhvZHMnLHsncGF5LnByb21wdCc6e3RyYW5zZm9ybTpmdW5jdGlvbihhKXt2 YXIgYj1GQi5YRC5oYW5kbGVyKGZ1bmN0aW9uKGMpe2EuY2IoRkIuSlNPTi5wYXJz ZShjLnJlc3BvbnNlKSk7fSwncGFyZW50LmZyYW1lc1snKyh3aW5kb3cubmFtZXx8 J2lmcmFtZV9jYW52YXMnKSsnXScpO2EucGFyYW1zLmNoYW5uZWw9YjtGQi5BcmJp dGVyLmluZm9ybSgnUGF5LlByb21wdCcsYS5wYXJhbXMpO3JldHVybiBmYWxzZTt9 fX0pO0ZCLnByb3ZpZGUoJ1VJU2VydmVyLk1ldGhvZHMnLHtwYXk6e3NpemU6e3dp ZHRoOjU1NSxoZWlnaHQ6MTIwfSxub0h0dHBzOnRydWUsY29ubmVjdERpc3BsYXk6 J3BvcHVwJyx0cmFuc2Zvcm06ZnVuY3Rpb24oYSl7aWYoIUZCLl9pbkNhbnZhcyl7 YS5wYXJhbXMub3JkZXJfaW5mbz1GQi5KU09OLnN0cmluZ2lmeShhLnBhcmFtcy5v cmRlcl9pbmZvKTtyZXR1cm4gYTt9dmFyIGI9RkIuWEQuaGFuZGxlcihmdW5jdGlv bihjKXthLmNiKEZCLkpTT04ucGFyc2UoYy5yZXNwb25zZSkpO30sJ3BhcmVudC5m cmFtZXNbJysod2luZG93Lm5hbWV8fCdpZnJhbWVfY2FudmFzJykrJ10nKTthLnBh cmFtcy5jaGFubmVsPWI7YS5wYXJhbXMudWlzZXJ2ZXI9dHJ1ZTtGQi5BcmJpdGVy LmluZm9ybSgnUGF5LlByb21wdCcsYS5wYXJhbXMpO3JldHVybiBmYWxzZTt9fX0p OwpGQi5wcm92aWRlKCdIZWxwZXInLHtpc1VzZXI6ZnVuY3Rpb24oYSl7cmV0dXJu IGE8Mi4yZSswOXx8KGE+PTFlKzE0JiZhPD0xMDAwOTk5OTk5ODk5OTkpfHwoYT49 OC45ZSsxMyYmYTw9ODk5OTk5OTk5OTk5OTkpO30sZ2V0TG9nZ2VkSW5Vc2VyOmZ1 bmN0aW9uKCl7cmV0dXJuIEZCLmdldFVzZXJJRCgpO30sdXBwZXJDYXNlRmlyc3RD aGFyOmZ1bmN0aW9uKGEpe2lmKGEubGVuZ3RoPjApe3JldHVybiBhLnN1YnN0cigw LDEpLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHIoMSk7fWVsc2UgcmV0dXJuIGE7fSxn ZXRQcm9maWxlTGluazpmdW5jdGlvbihjLGIsYSl7YT1hfHwoYz9GQi5nZXREb21h aW4oJ3d3dycpKydwcm9maWxlLnBocD9pZD0nK2MudWlkOm51bGwpO2lmKGEpYj0n PGEgY2xhc3M9ImZiX2xpbmsiIGhyZWY9IicrYSsnIj4nK2IrJzwvYT4nO3JldHVy biBiO30saW52b2tlSGFuZGxlcjpmdW5jdGlvbihoYW5kbGVyLHNjb3BlLGFyZ3Mp e2lmKGhhbmRsZXIpaWYodHlwZW9mIGhhbmRsZXI9PT0nc3RyaW5nJyl7ZXZhbCho YW5kbGVyKTt9ZWxzZSBpZihoYW5kbGVyLmFwcGx5KWhhbmRsZXIuYXBwbHkoc2Nv cGUsYXJnc3x8W10pO30sZmlyZUV2ZW50OmZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5f YXR0ci5ocmVmO2IuZmlyZShhLGMpO0ZCLkV2ZW50LmZpcmUoYSxjLGIpO30sZXhl Y3V0ZUZ1bmN0aW9uQnlOYW1lOmZ1bmN0aW9uKGQpe3ZhciBhPUFycmF5LnByb3Rv dHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTt2YXIgZj1kLnNwbGl0KCIuIik7 dmFyIGM9Zi5wb3AoKTt2YXIgYj13aW5kb3c7Zm9yKHZhciBlPTA7ZTxmLmxlbmd0 aDtlKyspYj1iW2ZbZV1dO3JldHVybiBiW2NdLmFwcGx5KHRoaXMsYSk7fX0pOwpG Qi5wcm92aWRlKCdUZW1wbGF0ZURhdGEnLHtfaW5pdGlhbGl6ZWQ6ZmFsc2UsX3Zl cnNpb246MCxfcmVzcG9uc2U6bnVsbCxfbG9jYWxTdG9yYWdlVGltZW91dDo2MCo2 MCoyNCxfZW5hYmxlZDp0cnVlLGVuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gRkIu VGVtcGxhdGVEYXRhLl9lbmFibGVkJiZGQi5UZW1wbGF0ZURhdGEuX2luaXRpYWxp emVkJiZGQi5UZW1wbGF0ZURhdGEuc3VwcG9ydHNMb2NhbFN0b3JhZ2UoKSYmRkIu X3VzZXJTdGF0dXM9PSdjb25uZWN0ZWQnJiZGQi5UZW1wbGF0ZURhdGEuZ2V0UmVz cG9uc2UoKTt9LHN1cHBvcnRzTG9jYWxTdG9yYWdlOmZ1bmN0aW9uKCl7dHJ5e3Jl dHVybiAnbG9jYWxTdG9yYWdlJyBpbiB3aW5kb3cmJndpbmRvdy5sb2NhbFN0b3Jh Z2UhPT1udWxsO31jYXRjaChhKXtyZXR1cm4gZmFsc2U7fX0sX2lzU3RhbGU6ZnVu Y3Rpb24oYil7aWYoIWJ8fCFiLnZlcnNpb258fGIudmVyc2lvbiE9RkIuVGVtcGxh dGVEYXRhLl92ZXJzaW9ufHxiLmN1cnJlbnRVc2VySUQhPUZCLmdldFVzZXJJRCgp KXJldHVybiB0cnVlO3ZhciBhPU1hdGgucm91bmQoKG5ldyBEYXRlKCkpLmdldFRp bWUoKSk7cmV0dXJuIChhLWIuc2V0QXQpLzEwMDA+RkIuVGVtcGxhdGVEYXRhLl9s b2NhbFN0b3JhZ2VUaW1lb3V0O30sZ2V0UmVzcG9uc2U6ZnVuY3Rpb24oKXt2YXIg Yj1GQi5UZW1wbGF0ZURhdGE7dHJ5e2IuX3Jlc3BvbnNlPWIuX3Jlc3BvbnNlfHwo Yi5zdXBwb3J0c0xvY2FsU3RvcmFnZSgpJiZGQi5KU09OLnBhcnNlKGxvY2FsU3Rv cmFnZS5GQl90ZW1wbGF0ZURhdGFSZXNwb25zZXx8Im51bGwiKSk7fWNhdGNoKGEp e2IuX3Jlc3BvbnNlPW51bGw7fWlmKGIuX2lzU3RhbGUoYi5fcmVzcG9uc2UpKWIu c2F2ZVJlc3BvbnNlKG51bGwpO3JldHVybiBiLl9yZXNwb25zZTt9LHNhdmVSZXNw b25zZTpmdW5jdGlvbihhKXtGQi5UZW1wbGF0ZURhdGEuX3Jlc3BvbnNlPWE7aWYo RkIuVGVtcGxhdGVEYXRhLnN1cHBvcnRzTG9jYWxTdG9yYWdlKCkpbG9jYWxTdG9y YWdlLkZCX3RlbXBsYXRlRGF0YVJlc3BvbnNlPUZCLkpTT04uc3RyaW5naWZ5KGEp O30sZ2V0RGF0YTpmdW5jdGlvbigpe3ZhciBhPUZCLlRlbXBsYXRlRGF0YS5nZXRS ZXNwb25zZSgpO3JldHVybiBhP2EuZGF0YTp7fTt9LGluaXQ6ZnVuY3Rpb24oYSl7 aWYoIWEpcmV0dXJuO0ZCLlRlbXBsYXRlRGF0YS5faW5pdGlhbGl6ZWQ9dHJ1ZTtG Qi5UZW1wbGF0ZURhdGEuX3ZlcnNpb249YTtpZihGQi5UZW1wbGF0ZURhdGEuc3Vw cG9ydHNMb2NhbFN0b3JhZ2UoKSYmISgnRkJfdGVtcGxhdGVEYXRhUmVzcG9uc2Un IGluIGxvY2FsU3RvcmFnZSkpRkIuVGVtcGxhdGVEYXRhLmNsZWFyKCk7fSxjbGVh cjpmdW5jdGlvbigpe0ZCLlRlbXBsYXRlRGF0YS5zYXZlUmVzcG9uc2UobnVsbCk7 fSx1cGRhdGU6ZnVuY3Rpb24oYSl7aWYoRkIuX3VzZXJTdGF0dXMhPSdjb25uZWN0 ZWQnKUZCLlRlbXBsYXRlRGF0YS5jbGVhcigpO2lmKEZCLl91c2VyU3RhdHVzPT0n Y29ubmVjdGVkJyYmIUZCLlRlbXBsYXRlRGF0YS5nZXRSZXNwb25zZSgpKUZCLmFw aSh7bWV0aG9kOidkaWFsb2cudGVtcGxhdGVfZGF0YSd9LGZ1bmN0aW9uKGMpe2lm KCdlcnJvcl9jb2RlJyBpbiBjKXJldHVybjt2YXIgYj17ZGF0YTpjLGN1cnJlbnRV c2VySUQ6RkIuZ2V0VXNlcklEKCksc2V0QXQ6KG5ldyBEYXRlKCkpLmdldFRpbWUo KSx2ZXJzaW9uOkZCLlRlbXBsYXRlRGF0YS5fdmVyc2lvbn07RkIuVGVtcGxhdGVE YXRhLnNhdmVSZXNwb25zZShiKTt9KTt9fSk7CkZCLnN1YmNsYXNzKCdUZW1wbGF0 ZVVJJywnT2JqJyxmdW5jdGlvbihkLGMpe3RoaXMubWV0aG9kPWQ7dmFyIGI9RkIu VUEubmF0aXZlQXBwKCk/MDoxO3ZhciBlPXtkaXNwbGF5Oid0b3VjaCcscHJldmll d190ZW1wbGF0ZToxLGluX2lmcmFtZTpiLGxvY2FsZTpGQi5fbG9jYWxlLHY6RkIu VGVtcGxhdGVVSS5fdmVyc2lvbix1c2VyX2FnZW50Om5hdmlnYXRvci51c2VyQWdl bnR9O2lmKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKWUubV9waXhlbF9yYXRpbz13 aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzt2YXIgZj1GQi5RUy5lbmNvZGUoZSk7dGhp cy5jYWNoZWRDYWxsPXt1cmw6RkIuZ2V0RG9tYWluKCdzdGF0aWNmYicpKydkaWFs b2cvJytkKyc/JytmLGZyYW1lTmFtZTpGQi5ndWlkKCksaWQ6RkIuZ3VpZCgpLHNp emU6RkIuVUlTZXJ2ZXIuZ2V0RGVmYXVsdFNpemUoKSxoaWRlTG9hZGVyOnRydWV9 O0ZCLlhELmhhbmRsZXIodGhpcy5iaW5kKGZ1bmN0aW9uKGcpe2lmKGcudHlwZT09 J2dldFBhcmFtcycpdGhpcy5zZXRQcm9wZXJ0eSgnZ2V0UGFyYW1zQ2InLGcucmV0 dXJuQ2IpO30pLCdwYXJlbnQnLHRydWUsdGhpcy5jYWNoZWRDYWxsLmZyYW1lTmFt ZSk7aWYoYil7RkIuVUlTZXJ2ZXIuaWZyYW1lKHRoaXMuY2FjaGVkQ2FsbCk7RkIu RGlhbG9nLmhpZGUodGhpcy5jYWNoZWRDYWxsLnJvb3QpO31lbHNlIGlmKGMmJiFG Qi5UZW1wbGF0ZVVJLl9wcmVsb2Fkc1t0aGlzLmNhY2hlZENhbGwudXJsXSl7dmFy IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7RkIuVGVtcGxhdGVVSS5f cHJlbG9hZHNbdGhpcy5jYWNoZWRDYWxsLnVybF09e2NvbnRhaW5lcjphfTtGQi5D b250ZW50Lmluc2VydElmcmFtZSh7dXJsOnRoaXMuY2FjaGVkQ2FsbC51cmwscm9v dDpGQi5Db250ZW50LmFwcGVuZEhpZGRlbihhKX0pO319LHt1c2U6ZnVuY3Rpb24o YSl7aWYoIXRoaXMuY2FjaGVkQ2FsbC5yb290KXtGQi5VSVNlcnZlci50b3VjaCh0 aGlzLmNhY2hlZENhbGwpO3ZhciBjPUZCLlRlbXBsYXRlVUkuX3ByZWxvYWRzW3Ro aXMuY2FjaGVkQ2FsbC51cmxdO2lmKGMmJmMuY29udGFpbmVyKXtjLmNvbnRhaW5l ci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMuY29udGFpbmVyKTtkZWxldGUgYy5j b250YWluZXI7fX1hLnVpX2NyZWF0ZWQ9dHJ1ZTthLnJvb3Q9dGhpcy5jYWNoZWRD YWxsLnJvb3Q7RkIuVUlTZXJ2ZXIuc2V0TG9hZGVkTm9kZShhLEZCLlVJU2VydmVy Ll9sb2FkZWROb2Rlc1t0aGlzLmNhY2hlZENhbGwuaWRdKTtkZWxldGUgRkIuVUlT ZXJ2ZXIuX2xvYWRlZE5vZGVzW3RoaXMuY2FjaGVkQ2FsbC5pZF07dmFyIGI9RkIu RGlhbG9nLl9kaWFsb2dzW2EuaWRdO0ZCLkRpYWxvZy5fZGlhbG9nc1t0aGlzLmNh Y2hlZENhbGwuaWRdPWI7Yi5pZD10aGlzLmNhY2hlZENhbGwuaWQ7ZGVsZXRlIEZC LkRpYWxvZy5fZGlhbG9nc1thLmlkXTtGQi5VSVNlcnZlci5nZXRMb2FkZWROb2Rl KGEpLmZiQ2FsbElEPXRoaXMuY2FjaGVkQ2FsbC5pZDt0aGlzLmNhY2hlZENhbGwu aWQ9YS5pZDt2YXIgZD17fTtGQi5jb3B5KGQsYS5wYXJhbXMpO0ZCLmNvcHkoZCxG Qi5UZW1wbGF0ZURhdGEuZ2V0RGF0YSgpW3RoaXMubWV0aG9kXSk7ZC5mcmljdGlv bmxlc3M9RkIuVGVtcGxhdGVVSS5pc0ZyaWN0aW9ubGVzc0FwcFJlcXVlc3QodGhp cy5tZXRob2QsZCk7ZC5jb21tb249RkIuVGVtcGxhdGVEYXRhLmdldERhdGEoKS5j b21tb247ZC5tZXRob2Q9dGhpcy5tZXRob2Q7dGhpcy5zZXRQYXJhbXMoZCk7aWYo RkIuVUEubmF0aXZlQXBwKCkpRkIuVUlTZXJ2ZXIuX3BvcHVwTW9uaXRvcigpO30s c2V0UGFyYW1zOmZ1bmN0aW9uKGEpe3RoaXMubW9uaXRvcignZ2V0UGFyYW1zQ2In LHRoaXMuYmluZChmdW5jdGlvbigpe2lmKHRoaXMuZ2V0UGFyYW1zQ2Ipe3ZhciBi PWZyYW1lc1t0aGlzLmNhY2hlZENhbGwuZnJhbWVOYW1lXXx8RkIuVUlTZXJ2ZXIu Z2V0TG9hZGVkTm9kZSh0aGlzLmNhY2hlZENhbGwpO2IucG9zdE1lc3NhZ2UoRkIu SlNPTi5zdHJpbmdpZnkoe3BhcmFtczphLGNiOnRoaXMuZ2V0UGFyYW1zQ2J9KSwn KicpO3JldHVybiB0cnVlO319KSk7fX0pO0ZCLnByb3ZpZGUoJ1RlbXBsYXRlVUkn LHtfdGltZXI6bnVsbCxfY2FjaGU6e30sX3ByZWxvYWRzOnt9LF92ZXJzaW9uOjAs aW5pdDpmdW5jdGlvbigpe0ZCLlRlbXBsYXRlRGF0YS5pbml0KEZCLlRlbXBsYXRl VUkuX3ZlcnNpb24pO0ZCLlRlbXBsYXRlVUkuaW5pdENhY2hlKCk7fSx1c2VDYWNo ZWRVSTpmdW5jdGlvbihjLGEpe3RyeXtGQi5UZW1wbGF0ZVVJLnBvcHVsYXRlQ2Fj aGUoKTtjYWNoZT1GQi5UZW1wbGF0ZVVJLl9jYWNoZVtjXTtkZWxldGUgRkIuVGVt cGxhdGVVSS5fY2FjaGVbY107Y2FjaGUudXNlKGEpO31jYXRjaChiKXtGQi5UZW1w bGF0ZURhdGEuY2xlYXIoKTt9fSxwb3B1bGF0ZUNhY2hlOmZ1bmN0aW9uKGEpe2lm KCFGQi5UZW1wbGF0ZURhdGEuZW5hYmxlZCgpfHwhRkIuVUEubW9iaWxlKCkpcmV0 dXJuO2NsZWFySW50ZXJ2YWwoRkIuVGVtcGxhdGVVSS5fdGltZXIpO3ZhciBjPXtm ZWVkOnRydWUsYXBwcmVxdWVzdHM6dHJ1ZX07Zm9yKHZhciBiIGluIGMpaWYoIShi IGluIEZCLlRlbXBsYXRlVUkuX2NhY2hlKSlGQi5UZW1wbGF0ZVVJLl9jYWNoZVti XT1uZXcgRkIuVGVtcGxhdGVVSShiLGEpO30saW5pdENhY2hlOmZ1bmN0aW9uKCl7 RkIuVGVtcGxhdGVVSS5fdGltZXI9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtGQi5U ZW1wbGF0ZVVJLnBvcHVsYXRlQ2FjaGUodHJ1ZSk7fSwyMDAwKTt9LHN1cHBvcnRz VGVtcGxhdGU6ZnVuY3Rpb24oYixhKXtyZXR1cm4gRkIuVGVtcGxhdGVEYXRhLmVu YWJsZWQoKSYmRkIuVGVtcGxhdGVVSS5wYXJhbXNBbGxvd1RlbXBsYXRlKGIsYS5w YXJhbXMpJiZhLnBhcmFtcy5kaXNwbGF5PT09J3RvdWNoJyYmRkIuVUEubW9iaWxl KCk7fSxwYXJhbXNBbGxvd1RlbXBsYXRlOmZ1bmN0aW9uKGMsYSl7dmFyIGI9e2Zl ZWQ6e3RvOjEsYXR0YWNobWVudDoxLHNvdXJjZToxfSxhcHByZXF1ZXN0czp7fX07 aWYoIShjIGluIGIpKXJldHVybiBmYWxzZTtmb3IodmFyIGQgaW4gYltjXSlpZihh W2RdKXJldHVybiBmYWxzZTtyZXR1cm4gIUZCLlRlbXBsYXRlVUkud2lsbFdyaXRl T25HZXQoYyxhKTt9LGlzRnJpY3Rpb25sZXNzQXBwUmVxdWVzdDpmdW5jdGlvbihi LGEpe3JldHVybiBiPT09J2FwcHJlcXVlc3RzJyYmRkIuRnJpY3Rpb25sZXNzJiZG Qi5GcmljdGlvbmxlc3MuX3VzZUZyaWN0aW9ubGVzczt9LHdpbGxXcml0ZU9uR2V0 OmZ1bmN0aW9uKGIsYSl7cmV0dXJuIEZCLlRlbXBsYXRlVUkuaXNGcmljdGlvbmxl c3NBcHBSZXF1ZXN0KGIsYSkmJmEudG8mJkZCLkZyaWN0aW9ubGVzcy5pc0FsbG93 ZWQoYS50byk7fX0pOwpGQi5wcm92aWRlKCdVUkknLHtyZXNvbHZlOmZ1bmN0aW9u KGIpe2lmKCFiKXJldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZjt2YXIgYT1kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTthLmlubmVySFRNTD0nPGEgaHJlZj0i JytiLnJlcGxhY2UoLyIvZywnJnF1b3Q7JykrJyI+PC9hPic7cmV0dXJuIGEuZmly c3RDaGlsZC5ocmVmO319KTsKRkIuQ2xhc3MoJ1hGQk1MLkVsZW1lbnQnLGZ1bmN0 aW9uKGEpe3RoaXMuZG9tPWE7fSxGQi5jb3B5KHtnZXRBdHRyaWJ1dGU6ZnVuY3Rp b24oYixhLGMpe3ZhciBkPUZCLlhGQk1MLmdldEF0dHIodGhpcy5kb20sYik7cmV0 dXJuIGQ/KGM/YyhkKTpkKTphO30sX2dldEJvb2xBdHRyaWJ1dGU6ZnVuY3Rpb24o YixhKXtpZihGQi5YRkJNTC5nZXRBdHRyKHRoaXMuZG9tLGIpPT09bnVsbClyZXR1 cm4gYTtyZXR1cm4gRkIuWEZCTUwuZ2V0Qm9vbEF0dHIodGhpcy5kb20sYik7fSxf Z2V0UHhBdHRyaWJ1dGU6ZnVuY3Rpb24oYixhKXtyZXR1cm4gdGhpcy5nZXRBdHRy aWJ1dGUoYixhLGZ1bmN0aW9uKGMpe3ZhciBkPXBhcnNlSW50KGMucmVwbGFjZSgn cHgnLCcnKSwxMCk7aWYoaXNOYU4oZCkpe3JldHVybiBhO31lbHNlIHJldHVybiBk O30pO30sX2dldEF0dHJpYnV0ZUZyb21MaXN0OmZ1bmN0aW9uKGMsYixhKXtyZXR1 cm4gdGhpcy5nZXRBdHRyaWJ1dGUoYyxiLGZ1bmN0aW9uKGQpe2Q9ZC50b0xvd2Vy Q2FzZSgpO2lmKEZCLkFycmF5LmluZGV4T2YoYSxkKT4tMSl7cmV0dXJuIGQ7fWVs c2UgcmV0dXJuIGI7fSk7fSxpc1ZhbGlkOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRo aXMuZG9tO2E7YT1hLnBhcmVudE5vZGUpaWYoYT09ZG9jdW1lbnQuYm9keSlyZXR1 cm4gdHJ1ZTt9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5kb20uaW5uZXJIVE1MPScn O319LEZCLkV2ZW50UHJvdmlkZXIpKTsKRkIuc3ViY2xhc3MoJ1hGQk1MLklmcmFt ZVdpZGdldCcsJ1hGQk1MLkVsZW1lbnQnLG51bGwse19pZnJhbWVOYW1lOm51bGws X3Nob3dMb2FkZXI6dHJ1ZSxfcmVmcmVzaE9uQXV0aENoYW5nZTpmYWxzZSxfYWxs b3dSZVByb2Nlc3M6ZmFsc2UsX2ZldGNoUHJlQ2FjaGVkTG9hZGVyOmZhbHNlLF92 aXNpYmxlQWZ0ZXI6J2xvYWQnLF93aWRnZXRQaXBlRW5hYmxlZDpmYWxzZSxnZXRV cmxCaXRzOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdJbmhlcml0aW5nIGNs YXNzIG5lZWRzIHRvIGltcGxlbWVudCBnZXRVcmxCaXRzKCkuJyk7fSxzZXR1cEFu ZFZhbGlkYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRydWU7fSxvbmVUaW1lU2V0dXA6 ZnVuY3Rpb24oKXt9LGdldFNpemU6ZnVuY3Rpb24oKXt9LGdldElmcmFtZU5hbWU6 ZnVuY3Rpb24oKXtpZighdGhpcy5faWZyYW1lTmFtZSYmdGhpcy5fd2lkZ2V0UGlw ZUVuYWJsZWQmJkZCLlhGQk1MLnNob3VsZFVzZVdpZGdldFBpcGUoKSl7dGhpcy5f aWZyYW1lTmFtZT10aGlzLmdlbmVyYXRlV2lkZ2V0UGlwZUlmcmFtZU5hbWUoKTtG Qi5YRkJNTC5JZnJhbWVXaWRnZXQuYWxsV2lkZ2V0UGlwZUlmcmFtZXNbdGhpcy5f aWZyYW1lTmFtZV09dGhpcztpZihGQi5YRkJNTC5JZnJhbWVXaWRnZXQubWFzdGVy V2lkZ2V0UGlwZUlmcmFtZT09PW51bGwpRkIuWEZCTUwuSWZyYW1lV2lkZ2V0Lm1h c3RlcldpZGdldFBpcGVJZnJhbWU9dGhpczt9cmV0dXJuIHRoaXMuX2lmcmFtZU5h bWU7fSxnZXRJZnJhbWVUaXRsZTpmdW5jdGlvbigpe30sZ2V0Q2hhbm5lbFVybDpm dW5jdGlvbigpe2lmKCF0aGlzLl9jaGFubmVsVXJsKXt2YXIgYT10aGlzO3RoaXMu X2NoYW5uZWxVcmw9RkIuWEQuaGFuZGxlcihmdW5jdGlvbihiKXthLmZpcmUoJ3hk LicrYi50eXBlLGIpO30sJ3BhcmVudC5wYXJlbnQnLHRydWUpO31yZXR1cm4gdGhp cy5fY2hhbm5lbFVybDt9LGdldElmcmFtZU5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5kb20uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBdO30sYXJi aXRlckluZm9ybTpmdW5jdGlvbihldmVudCxiLGEpe2lmKHRoaXMubG9hZGVkKXt0 aGlzLl9hcmJpdGVySW5mb3JtKGV2ZW50LGIsYSk7fWVsc2UgdGhpcy5zdWJzY3Jp YmUoJ2lmcmFtZS5vbmxvYWQnLEZCLmJpbmQodGhpcy5fYXJiaXRlckluZm9ybSx0 aGlzLGV2ZW50LGIsYSkpO30sX2FyYml0ZXJJbmZvcm06ZnVuY3Rpb24oZXZlbnQs YixhKXt2YXIgYz0ncGFyZW50LmZyYW1lc1siJyt0aGlzLmdldElmcmFtZU5vZGUo KS5uYW1lKyciXSc7RkIuQXJiaXRlci5pbmZvcm0oZXZlbnQsYixjLHdpbmRvdy5s b2NhdGlvbi5wcm90b2NvbD09J2h0dHBzOicsYSk7fSxnZXREZWZhdWx0V2ViRG9t YWluOmZ1bmN0aW9uKCl7cmV0dXJuICd3d3cnO30sZ2V0RGVmYXVsdFN0YXRpY0Rv bWFpbjpmdW5jdGlvbigpe3JldHVybiAnY2RuJzt9LHByb2Nlc3M6ZnVuY3Rpb24o YSl7aWYodGhpcy5fZG9uZSl7aWYoIXRoaXMuX2FsbG93UmVQcm9jZXNzJiYhYSly ZXR1cm47dGhpcy5jbGVhcigpO31lbHNlIHRoaXMuX29uZVRpbWVTZXR1cCgpO3Ro aXMuX2RvbmU9dHJ1ZTtpZighdGhpcy5zZXR1cEFuZFZhbGlkYXRlKCkpe3RoaXMu ZmlyZSgncmVuZGVyJyk7cmV0dXJuO31pZih0aGlzLl9zaG93TG9hZGVyKXRoaXMu X2FkZExvYWRlcigpO0ZCLkRvbS5hZGRDc3ModGhpcy5kb20sJ2ZiX2lmcmFtZV93 aWRnZXQnKTtpZih0aGlzLl92aXNpYmxlQWZ0ZXIhPSdpbW1lZGlhdGUnKXtGQi5E b20uYWRkQ3NzKHRoaXMuZG9tLCdmYl9oaWRlX2lmcmFtZXMnKTt9ZWxzZSB0aGlz LnN1YnNjcmliZSgnaWZyYW1lLm9ubG9hZCcsRkIuYmluZCh0aGlzLmZpcmUsdGhp cywncmVuZGVyJykpO3ZhciBiPXRoaXMuZ2V0U2l6ZSgpfHx7fTt2YXIgYz10aGlz LmdldEZ1bGx5UXVhbGlmaWVkVVJMKCk7RkIuQ29udGVudC5pbnNlcnRJZnJhbWUo e3VybDpjLHJvb3Q6dGhpcy5kb20uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgnc3BhbicpKSxuYW1lOnRoaXMuZ2V0SWZyYW1lTmFtZSgpLHRpdGxl OnRoaXMuZ2V0SWZyYW1lVGl0bGUoKSxjbGFzc05hbWU6RkIuX2xvY2FsZUlzUnRs PydmYl9ydGwnOidmYl9sdHInLGhlaWdodDpiLmhlaWdodCx3aWR0aDpiLndpZHRo LG9ubG9hZDpGQi5iaW5kKHRoaXMuZmlyZSx0aGlzLCdpZnJhbWUub25sb2FkJyl9 KTt0aGlzLmxvYWRlZD1mYWxzZTt0aGlzLnN1YnNjcmliZSgnaWZyYW1lLm9ubG9h ZCcsRkIuYmluZChmdW5jdGlvbigpe3RoaXMubG9hZGVkPXRydWU7fSx0aGlzKSk7 fSxnZW5lcmF0ZVdpZGdldFBpcGVJZnJhbWVOYW1lOmZ1bmN0aW9uKCl7RkIuWEZC TUwuSWZyYW1lV2lkZ2V0LndpZGdldFBpcGVJZnJhbWVDb3VudCsrO3JldHVybiAn ZmJfaWZyYW1lXycrRkIuWEZCTUwuSWZyYW1lV2lkZ2V0LndpZGdldFBpcGVJZnJh bWVDb3VudDt9LGdldEZ1bGx5UXVhbGlmaWVkVVJMOmZ1bmN0aW9uKCl7aWYoRkIu WEZCTUwuc2hvdWxkVXNlV2lkZ2V0UGlwZSgpJiZ0aGlzLl93aWRnZXRQaXBlRW5h YmxlZClyZXR1cm4gdGhpcy5fZ2V0V2lkZ2V0UGlwZVNoZWxsKCk7dmFyIGI9dGhp cy5fZ2V0VVJMKCk7aWYoIXRoaXMuX2ZldGNoUHJlQ2FjaGVkTG9hZGVyKWIrPSc/ JytGQi5RUy5lbmNvZGUodGhpcy5fZ2V0UVMoKSk7aWYoYi5sZW5ndGg+MjAwMCl7 Yj0nYWJvdXQ6YmxhbmsnO3ZhciBhPUZCLmJpbmQoZnVuY3Rpb24oKXt0aGlzLl9w b3N0UmVxdWVzdCgpO3RoaXMudW5zdWJzY3JpYmUoJ2lmcmFtZS5vbmxvYWQnLGEp O30sdGhpcyk7dGhpcy5zdWJzY3JpYmUoJ2lmcmFtZS5vbmxvYWQnLGEpO31yZXR1 cm4gYjt9LF9nZXRXaWRnZXRQaXBlU2hlbGw6ZnVuY3Rpb24oKXtyZXR1cm4gRkIu Z2V0RG9tYWluKCd3d3cnKSsnY29tbW9uL3dpZGdldF9waXBlX3NoZWxsLnBocCc7 fSxfb25lVGltZVNldHVwOmZ1bmN0aW9uKCl7dGhpcy5zdWJzY3JpYmUoJ3hkLnJl c2l6ZScsRkIuYmluZCh0aGlzLl9oYW5kbGVSZXNpemVNc2csdGhpcykpO2lmKEZC LmdldExvZ2luU3RhdHVzKXt0aGlzLnN1YnNjcmliZSgneGQucmVmcmVzaExvZ2lu U3RhdHVzJyxGQi5iaW5kKEZCLmdldExvZ2luU3RhdHVzLEZCLGZ1bmN0aW9uKCl7 fSx0cnVlKSk7dGhpcy5zdWJzY3JpYmUoJ3hkLmxvZ291dCcsRkIuYmluZChGQi5s b2dvdXQsRkIsZnVuY3Rpb24oKXt9KSk7fWlmKHRoaXMuX3JlZnJlc2hPbkF1dGhD aGFuZ2UpdGhpcy5fc2V0dXBBdXRoUmVmcmVzaCgpO2lmKHRoaXMuX3Zpc2libGVB ZnRlcj09J2xvYWQnKXRoaXMuc3Vic2NyaWJlKCdpZnJhbWUub25sb2FkJyxGQi5i aW5kKHRoaXMuX21ha2VWaXNpYmxlLHRoaXMpKTt0aGlzLm9uZVRpbWVTZXR1cCgp O30sX21ha2VWaXNpYmxlOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlTG9hZGVyKCk7 RkIuRG9tLnJlbW92ZUNzcyh0aGlzLmRvbSwnZmJfaGlkZV9pZnJhbWVzJyk7dGhp cy5maXJlKCdyZW5kZXInKTt9LF9zZXR1cEF1dGhSZWZyZXNoOmZ1bmN0aW9uKCl7 RkIuZ2V0TG9naW5TdGF0dXMoRkIuYmluZChmdW5jdGlvbihiKXt2YXIgYT1iLnN0 YXR1cztGQi5FdmVudC5zdWJzY3JpYmUoJ2F1dGguc3RhdHVzQ2hhbmdlJyxGQi5i aW5kKGZ1bmN0aW9uKGMpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm47aWYoYT09 J3Vua25vd24nfHxjLnN0YXR1cz09J3Vua25vd24nKXRoaXMucHJvY2Vzcyh0cnVl KTthPWMuc3RhdHVzO30sdGhpcykpO30sdGhpcykpO30sX2hhbmRsZVJlc2l6ZU1z ZzpmdW5jdGlvbihiKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuO3ZhciBhPXRo aXMuZ2V0SWZyYW1lTm9kZSgpO2Euc3R5bGUuaGVpZ2h0PWIuaGVpZ2h0KydweCc7 aWYoYi53aWR0aClhLnN0eWxlLndpZHRoPWIud2lkdGgrJ3B4JzthLnN0eWxlLmJv cmRlcj0nbm9uZSc7dGhpcy5fbWFrZVZpc2libGUoKTt9LF9hZGRMb2FkZXI6ZnVu Y3Rpb24oKXtpZighdGhpcy5fbG9hZGVyRGl2KXtGQi5Eb20uYWRkQ3NzKHRoaXMu ZG9tLCdmYl9pZnJhbWVfd2lkZ2V0X2xvYWRlcicpO3RoaXMuX2xvYWRlckRpdj1k b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTt0aGlzLl9sb2FkZXJEaXYuY2xh c3NOYW1lPSdGQl9Mb2FkZXInO3RoaXMuZG9tLmFwcGVuZENoaWxkKHRoaXMuX2xv YWRlckRpdik7fX0sX3JlbW92ZUxvYWRlcjpmdW5jdGlvbigpe2lmKHRoaXMuX2xv YWRlckRpdil7RkIuRG9tLnJlbW92ZUNzcyh0aGlzLmRvbSwnZmJfaWZyYW1lX3dp ZGdldF9sb2FkZXInKTtpZih0aGlzLl9sb2FkZXJEaXYucGFyZW50Tm9kZSl0aGlz Ll9sb2FkZXJEaXYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9sb2FkZXJE aXYpO3RoaXMuX2xvYWRlckRpdj1udWxsO319LF9nZXRRUzpmdW5jdGlvbigpe3Jl dHVybiBGQi5jb3B5KHthcGlfa2V5OkZCLl9hcGlLZXksbG9jYWxlOkZCLl9sb2Nh bGUsc2RrOidqb2V5JyxzZXNzaW9uX2tleTpGQi5fc2Vzc2lvbiYmRkIuX3Nlc3Np b24uc2Vzc2lvbl9rZXkscmVmOnRoaXMuZ2V0QXR0cmlidXRlKCdyZWYnKX0sdGhp cy5nZXRVcmxCaXRzKCkucGFyYW1zKTt9LF9nZXRVUkw6ZnVuY3Rpb24oKXt2YXIg YT10aGlzLmdldERlZmF1bHRXZWJEb21haW4oKSxiPScnO2lmKHRoaXMuX2ZldGNo UHJlQ2FjaGVkTG9hZGVyKXthPXRoaXMuZ2V0RGVmYXVsdFN0YXRpY0RvbWFpbigp O2I9J3N0YXRpYy8nO31yZXR1cm4gRkIuZ2V0RG9tYWluKGEpKydwbHVnaW5zLycr Yit0aGlzLmdldFVybEJpdHMoKS5uYW1lKycucGhwJzt9LF9wb3N0UmVxdWVzdDpm dW5jdGlvbigpe0ZCLkNvbnRlbnQuc3VibWl0VG9UYXJnZXQoe3VybDp0aGlzLl9n ZXRVUkwoKSx0YXJnZXQ6dGhpcy5nZXRJZnJhbWVOb2RlKCkubmFtZSxwYXJhbXM6 dGhpcy5fZ2V0UVMoKX0pO319KTtGQi5wcm92aWRlKCdYRkJNTC5JZnJhbWVXaWRn ZXQnLHt3aWRnZXRQaXBlSWZyYW1lQ291bnQ6MCxtYXN0ZXJXaWRnZXRQaXBlSWZy YW1lOm51bGwsYWxsV2lkZ2V0UGlwZUlmcmFtZXM6e30sYmF0Y2hXaWRnZXRQaXBl UmVxdWVzdHM6ZnVuY3Rpb24oKXtpZighRkIuWEZCTUwuSWZyYW1lV2lkZ2V0Lm1h c3RlcldpZGdldFBpcGVJZnJhbWUpcmV0dXJuO3ZhciBjPUZCLlhGQk1MLklmcmFt ZVdpZGdldC5fZ3JvdXBXaWRnZXRQaXBlRGVzY3JpcHRpb25zKCk7dmFyIGU9e3dp ZGdldF9waXBlOkZCLkpTT04uc3RyaW5naWZ5KGMpLGhyZWY6d2luZG93LmxvY2F0 aW9uLHNpdGU6bG9jYXRpb24uaG9zdG5hbWUsY2hhbm5lbDpGQi5YRkJNTC5JZnJh bWVXaWRnZXQubWFzdGVyV2lkZ2V0UGlwZUlmcmFtZS5nZXRDaGFubmVsVXJsKCks YXBpX2tleTpGQi5fYXBpS2V5LGxvY2FsZTpGQi5fbG9jYWxlLHNkazonam9leScs c2Vzc2lvbl9rZXk6RkIuX3Nlc3Npb24mJkZCLl9zZXNzaW9uLnNlc3Npb25fa2V5 fTt2YXIgZD1GQi5ndWlkKCk7dmFyIGE9RkIuWEZCTUwuSWZyYW1lV2lkZ2V0Lm1h c3RlcldpZGdldFBpcGVJZnJhbWUuZG9tO3ZhciBiPWEuYXBwZW5kQ2hpbGQoZG9j dW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTtGQi5Db250ZW50Lmluc2VydElm cmFtZSh7dXJsOidhYm91dDpibGFuaycscm9vdDpiLG5hbWU6ZCxjbGFzc05hbWU6 J2ZiX2hpZGRlbiBmYl9pbnZpc2libGUnLG9ubG9hZDpmdW5jdGlvbigpe0ZCLkNv bnRlbnQuc3VibWl0VG9UYXJnZXQoe3VybDpGQi5fZG9tYWluLnd3dysnd2lkZ2V0 X3BpcGUucGhwP3dpZGdldF9waXBlPTEnLHRhcmdldDpkLHBhcmFtczplfSk7fX0p O30sX2dyb3VwV2lkZ2V0UGlwZURlc2NyaXB0aW9uczpmdW5jdGlvbigpe3ZhciBl PXt9O2Zvcih2YXIgYiBpbiBGQi5YRkJNTC5JZnJhbWVXaWRnZXQuYWxsV2lkZ2V0 UGlwZUlmcmFtZXMpe3ZhciBhPUZCLlhGQk1MLklmcmFtZVdpZGdldC5hbGxXaWRn ZXRQaXBlSWZyYW1lc1tiXTt2YXIgYz1hLmdldFVybEJpdHMoKTt2YXIgZD17d2lk Z2V0OmMubmFtZX07RkIuY29weShkLGMucGFyYW1zKTtlW2JdPWQ7fXJldHVybiBl O319KTsKRkIuc3ViY2xhc3MoJ1hGQk1MLkFjdGl2aXR5JywnWEZCTUwuSWZyYW1l V2lkZ2V0JyxudWxsLHtfdmlzaWJsZUFmdGVyOidsb2FkJyxfcmVmcmVzaE9uQXV0 aENoYW5nZTp0cnVlLHNldHVwQW5kVmFsaWRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9h dHRyPXtib3JkZXJfY29sb3I6dGhpcy5nZXRBdHRyaWJ1dGUoJ2JvcmRlci1jb2xv cicpLGNvbG9yc2NoZW1lOnRoaXMuZ2V0QXR0cmlidXRlKCdjb2xvci1zY2hlbWUn KSxmaWx0ZXI6dGhpcy5nZXRBdHRyaWJ1dGUoJ2ZpbHRlcicpLGFjdGlvbjp0aGlz LmdldEF0dHJpYnV0ZSgnYWN0aW9uJyksbWF4X2FnZTp0aGlzLmdldEF0dHJpYnV0 ZSgnbWF4X2FnZScpLGZvbnQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ2ZvbnQnKSxsaW5r dGFyZ2V0OnRoaXMuZ2V0QXR0cmlidXRlKCdsaW5rdGFyZ2V0JywnX2JsYW5rJyks aGVhZGVyOnRoaXMuX2dldEJvb2xBdHRyaWJ1dGUoJ2hlYWRlcicpLGhlaWdodDp0 aGlzLl9nZXRQeEF0dHJpYnV0ZSgnaGVpZ2h0JywzMDApLHJlY29tbWVuZGF0aW9u czp0aGlzLl9nZXRCb29sQXR0cmlidXRlKCdyZWNvbW1lbmRhdGlvbnMnKSxzaXRl OnRoaXMuZ2V0QXR0cmlidXRlKCdzaXRlJyxsb2NhdGlvbi5ob3N0bmFtZSksd2lk dGg6dGhpcy5fZ2V0UHhBdHRyaWJ1dGUoJ3dpZHRoJywzMDApfTtyZXR1cm4gdHJ1 ZTt9LGdldFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4ge3dpZHRoOnRoaXMuX2F0dHIu d2lkdGgsaGVpZ2h0OnRoaXMuX2F0dHIuaGVpZ2h0fTt9LGdldFVybEJpdHM6ZnVu Y3Rpb24oKXtyZXR1cm4ge25hbWU6J2FjdGl2aXR5JyxwYXJhbXM6dGhpcy5fYXR0 cn07fX0pOwpGQi5zdWJjbGFzcygnWEZCTUwuQnV0dG9uRWxlbWVudCcsJ1hGQk1M LkVsZW1lbnQnLG51bGwse19hbGxvd2VkU2l6ZXM6WydpY29uJywnc21hbGwnLCdt ZWRpdW0nLCdsYXJnZScsJ3hsYXJnZSddLG9uQ2xpY2s6ZnVuY3Rpb24oKXt0aHJv dyBuZXcgRXJyb3IoJ0luaGVyaXRpbmcgY2xhc3MgbmVlZHMgdG8gaW1wbGVtZW50 IG9uQ2xpY2soKS4nKTt9LHNldHVwQW5kVmFsaWRhdGU6ZnVuY3Rpb24oKXtyZXR1 cm4gdHJ1ZTt9LGdldEJ1dHRvbk1hcmt1cDpmdW5jdGlvbigpe3JldHVybiB0aGlz LmdldE9yaWdpbmFsSFRNTCgpO30sZ2V0T3JpZ2luYWxIVE1MOmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX29yaWdpbmFsSFRNTDt9LHByb2Nlc3M6ZnVuY3Rpb24oKXtp ZighKCdfb3JpZ2luYWxIVE1MJyBpbiB0aGlzKSl0aGlzLl9vcmlnaW5hbEhUTUw9 RkIuU3RyaW5nLnRyaW0odGhpcy5kb20uaW5uZXJIVE1MKTtpZighdGhpcy5zZXR1 cEFuZFZhbGlkYXRlKCkpe3RoaXMuZmlyZSgncmVuZGVyJyk7cmV0dXJuO312YXIg ZD10aGlzLl9nZXRBdHRyaWJ1dGVGcm9tTGlzdCgnc2l6ZScsJ21lZGl1bScsdGhp cy5fYWxsb3dlZFNpemVzKSxhPScnLGI9Jyc7aWYoZD09J2ljb24nKXthPSdmYl9i dXR0b25fc2ltcGxlJzt9ZWxzZXt2YXIgYz1GQi5fbG9jYWxlSXNSdGw/J19ydGwn OicnO2I9dGhpcy5nZXRCdXR0b25NYXJrdXAoKTthPSdmYl9idXR0b24nK2MrJyBm Yl9idXR0b25fJytkK2M7fWlmKGIhPT0nJyl7dGhpcy5kb20uaW5uZXJIVE1MPSgn PGEgY2xhc3M9IicrYSsnIj4nKyc8c3BhbiBjbGFzcz0iZmJfYnV0dG9uX3RleHQi PicrYisnPC9zcGFuPicrJzwvYT4nKTt0aGlzLmRvbS5maXJzdENoaWxkLm9uY2xp Y2s9RkIuYmluZCh0aGlzLm9uQ2xpY2ssdGhpcyk7fXRoaXMuZmlyZSgncmVuZGVy Jyk7fX0pOwpGQi5zdWJjbGFzcygnWEZCTUwuQWRkUHJvZmlsZVRhYicsJ1hGQk1M LkJ1dHRvbkVsZW1lbnQnLG51bGwse2dldEJ1dHRvbk1hcmt1cDpmdW5jdGlvbigp e3JldHVybiBGQi5JbnRsLl90eCgiRmFjZWJvb2sndGEgUHJvZmlsIFNla21lc2kg RWtsZSIpO30sb25DbGljazpmdW5jdGlvbigpe0ZCLnVpKHttZXRob2Q6J3Byb2Zp bGUuYWRkdGFiJ30sdGhpcy5iaW5kKGZ1bmN0aW9uKGEpe2lmKGEudGFiX2FkZGVk KUZCLkhlbHBlci5pbnZva2VIYW5kbGVyKHRoaXMuZ2V0QXR0cmlidXRlKCdvbi1h ZGQnKSx0aGlzKTt9KSk7fX0pOwpGQi5zdWJjbGFzcygnWEZCTUwuRmFjZXBpbGUn LCdYRkJNTC5JZnJhbWVXaWRnZXQnLG51bGwse192aXNpYmxlQWZ0ZXI6J2xvYWQn LF9leHRyYVBhcmFtczp7fSxzZXR1cEFuZFZhbGlkYXRlOmZ1bmN0aW9uKCl7dGhp cy5fYXR0cj17aHJlZjp0aGlzLmdldEF0dHJpYnV0ZSgnaHJlZicpLGNoYW5uZWw6 dGhpcy5nZXRDaGFubmVsVXJsKCksY29sb3JzY2hlbWU6dGhpcy5nZXRBdHRyaWJ1 dGUoJ2NvbG9yc2NoZW1lJywnbGlnaHQnKSxtYXhfcm93czp0aGlzLmdldEF0dHJp YnV0ZSgnbWF4LXJvd3MnKSxhY3Rpb246dGhpcy5nZXRBdHRyaWJ1dGUoJ2FjdGlv bicsJ2xpa2UnKSx0ZW5zZTp0aGlzLmdldEF0dHJpYnV0ZSgndGVuc2UnLCdwYXN0 Jyksd2lkdGg6dGhpcy5fZ2V0UHhBdHRyaWJ1dGUoJ3dpZHRoJywyMDApLHJlZjp0 aGlzLmdldEF0dHJpYnV0ZSgncmVmJyksc2l6ZTp0aGlzLmdldEF0dHJpYnV0ZSgn c2l6ZScsJ3NtYWxsJyksZXh0ZW5kZWRfc29jaWFsX2NvbnRleHQ6dGhpcy5nZXRB dHRyaWJ1dGUoJ2V4dGVuZGVkX3NvY2lhbF9jb250ZXh0JyxmYWxzZSksbG9naW5f dGV4dDp0aGlzLmRvbS5pbm5lckhUTUx9O3RoaXMuY2xlYXIoKTtmb3IodmFyIGEg aW4gdGhpcy5fZXh0cmFQYXJhbXMpdGhpcy5fYXR0clthXT10aGlzLl9leHRyYVBh cmFtc1thXTtyZXR1cm4gdHJ1ZTt9LHNldEV4dHJhUGFyYW1zOmZ1bmN0aW9uKGEp e3RoaXMuX2V4dHJhUGFyYW1zPWE7fSxvbmVUaW1lU2V0dXA6ZnVuY3Rpb24oKXt2 YXIgYT1GQi5fdXNlclN0YXR1cztGQi5FdmVudC5zdWJzY3JpYmUoJ2F1dGguc3Rh dHVzQ2hhbmdlJyxGQi5iaW5kKGZ1bmN0aW9uKGIpe2lmKGE9PSdjb25uZWN0ZWQn fHxiLnN0YXR1cz09J2Nvbm5lY3RlZCcpdGhpcy5wcm9jZXNzKHRydWUpO2E9Yi5z dGF0dXM7fSx0aGlzKSk7fSxnZXRTaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5fYXR0 ci5zaXplPT0nbGFyZ2UnKXJldHVybiB7d2lkdGg6dGhpcy5fYXR0ci53aWR0aCxo ZWlnaHQ6OTB9O3JldHVybiB7d2lkdGg6dGhpcy5fYXR0ci53aWR0aCxoZWlnaHQ6 NzB9O30sZ2V0VXJsQml0czpmdW5jdGlvbigpe3JldHVybiB7bmFtZTonZmFjZXBp bGUnLHBhcmFtczp0aGlzLl9hdHRyfTt9fSk7CkZCLnN1YmNsYXNzKCdYRkJNTC5B ZGRUb1RpbWVsaW5lJywnWEZCTUwuRmFjZXBpbGUnLG51bGwse192aXNpYmxlQWZ0 ZXI6J2xvYWQnLGdldFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4ge3dpZHRoOjMwMCxo ZWlnaHQ6MjUwfTt9LGdldFVybEJpdHM6ZnVuY3Rpb24oKXtyZXR1cm4ge25hbWU6 J2FkZF90b190aW1lbGluZScscGFyYW1zOnRoaXMuX2F0dHJ9O319KTsKRkIuc3Vi Y2xhc3MoJ1hGQk1MLkJvb2ttYXJrJywnWEZCTUwuQnV0dG9uRWxlbWVudCcsbnVs bCx7Z2V0QnV0dG9uTWFya3VwOmZ1bmN0aW9uKCl7cmV0dXJuIEZCLkludGwuX3R4 KCJGYWNlYm9vayBZZXIgXHUwMTMwXHUwMTVmYXJldGxlcmluZSBFa2xlIik7fSxv bkNsaWNrOmZ1bmN0aW9uKCl7RkIudWkoe21ldGhvZDonYm9va21hcmsuYWRkJ30s dGhpcy5iaW5kKGZ1bmN0aW9uKGEpe2lmKGEuYm9va21hcmtlZClGQi5IZWxwZXIu aW52b2tlSGFuZGxlcih0aGlzLmdldEF0dHJpYnV0ZSgnb24tYWRkJyksdGhpcyk7 fSkpO319KTsKRkIuc3ViY2xhc3MoJ1hGQk1MLkNvbW1lbnRzJywnWEZCTUwuSWZy YW1lV2lkZ2V0JyxudWxsLHtfdmlzaWJsZUFmdGVyOidpbW1lZGlhdGUnLF9yZWZy ZXNoT25BdXRoQ2hhbmdlOnRydWUsc2V0dXBBbmRWYWxpZGF0ZTpmdW5jdGlvbigp e3ZhciBhPXtjaGFubmVsX3VybDp0aGlzLmdldENoYW5uZWxVcmwoKSxjb2xvcnNj aGVtZTp0aGlzLmdldEF0dHJpYnV0ZSgnY29sb3JzY2hlbWUnKSxudW1wb3N0czp0 aGlzLmdldEF0dHJpYnV0ZSgnbnVtLXBvc3RzJywxMCksd2lkdGg6dGhpcy5fZ2V0 UHhBdHRyaWJ1dGUoJ3dpZHRoJyw1NTApLGhyZWY6dGhpcy5nZXRBdHRyaWJ1dGUo J2hyZWYnKSxwZXJtYWxpbms6dGhpcy5nZXRBdHRyaWJ1dGUoJ3Blcm1hbGluaycp LHB1Ymxpc2hfZmVlZDp0aGlzLmdldEF0dHJpYnV0ZSgncHVibGlzaF9mZWVkJyks bW9iaWxlOnRoaXMuX2dldEJvb2xBdHRyaWJ1dGUoJ21vYmlsZScpfTtpZighYS5o cmVmKXthLm1pZ3JhdGVkPXRoaXMuZ2V0QXR0cmlidXRlKCdtaWdyYXRlZCcpO2Eu eGlkPXRoaXMuZ2V0QXR0cmlidXRlKCd4aWQnKTthLnRpdGxlPXRoaXMuZ2V0QXR0 cmlidXRlKCd0aXRsZScsZG9jdW1lbnQudGl0bGUpO2EudXJsPXRoaXMuZ2V0QXR0 cmlidXRlKCd1cmwnLGRvY3VtZW50LlVSTCk7YS5xdWlldD10aGlzLmdldEF0dHJp YnV0ZSgncXVpZXQnKTthLnJldmVyc2U9dGhpcy5nZXRBdHRyaWJ1dGUoJ3JldmVy c2UnKTthLnNpbXBsZT10aGlzLmdldEF0dHJpYnV0ZSgnc2ltcGxlJyk7YS5jc3M9 dGhpcy5nZXRBdHRyaWJ1dGUoJ2NzcycpO2Eubm90aWZ5PXRoaXMuZ2V0QXR0cmli dXRlKCdub3RpZnknKTtpZighYS54aWQpe3ZhciBjPWRvY3VtZW50LlVSTC5pbmRl eE9mKCcjJyk7aWYoYz4wKXthLnhpZD1lbmNvZGVVUklDb21wb25lbnQoZG9jdW1l bnQuVVJMLnN1YnN0cmluZygwLGMpKTt9ZWxzZSBhLnhpZD1lbmNvZGVVUklDb21w b25lbnQoZG9jdW1lbnQuVVJMKTt9aWYoYS5taWdyYXRlZClhLmhyZWY9J2h0dHA6 Ly93d3cuZmFjZWJvb2suY29tL3BsdWdpbnMvY29tbWVudHNfdjEucGhwPycrJ2Fw cF9pZD0nK0ZCLl9hcGlLZXkrJyZ4aWQ9JytlbmNvZGVVUklDb21wb25lbnQoYS54 aWQpKycmdXJsPScrZW5jb2RlVVJJQ29tcG9uZW50KGEudXJsKTt9ZWxzZXt2YXIg Yj10aGlzLmdldEF0dHJpYnV0ZSgnZmJfY29tbWVudF9pZCcpO2lmKCFiKXtiPUZC LlFTLmRlY29kZShkb2N1bWVudC5VUkwuc3Vic3RyaW5nKGRvY3VtZW50LlVSTC5p bmRleE9mKCc/JykrMSkpLmZiX2NvbW1lbnRfaWQ7aWYoYiYmYi5pbmRleE9mKCcj Jyk+MCliPWIuc3Vic3RyaW5nKDAsYi5pbmRleE9mKCcjJykpO31pZihiKXthLmZi X2NvbW1lbnRfaWQ9Yjt0aGlzLnN1YnNjcmliZSgncmVuZGVyJyxGQi5iaW5kKGZ1 bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLmhhc2g9dGhpcy5nZXRJZnJhbWVOb2Rl KCkuaWQ7fSx0aGlzKSk7fX10aGlzLl9hdHRyPWE7cmV0dXJuIHRydWU7fSxvbmVU aW1lU2V0dXA6ZnVuY3Rpb24oKXt0aGlzLnN1YnNjcmliZSgneGQuYWRkQ29tbWVu dCcsRkIuYmluZCh0aGlzLl9oYW5kbGVDb21tZW50TXNnLHRoaXMpKTt0aGlzLnN1 YnNjcmliZSgneGQuY29tbWVudENyZWF0ZWQnLEZCLmJpbmQodGhpcy5faGFuZGxl Q29tbWVudENyZWF0ZWRNc2csdGhpcykpO3RoaXMuc3Vic2NyaWJlKCd4ZC5jb21t ZW50UmVtb3ZlZCcsRkIuYmluZCh0aGlzLl9oYW5kbGVDb21tZW50UmVtb3ZlZE1z Zyx0aGlzKSk7fSxnZXRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHt3aWR0aDp0aGlz Ll9hdHRyLndpZHRoLGhlaWdodDoxNjB9O30sZ2V0VXJsQml0czpmdW5jdGlvbigp e3JldHVybiB7bmFtZTonY29tbWVudHMnLHBhcmFtczp0aGlzLl9hdHRyfTt9LGdl dERlZmF1bHRXZWJEb21haW46ZnVuY3Rpb24oKXtpZih0aGlzLl9hdHRyLm1vYmls ZSl7cmV0dXJuICdodHRwc19tJzt9ZWxzZSByZXR1cm4gJ2h0dHBzX3d3dyc7fSxf aGFuZGxlQ29tbWVudE1zZzpmdW5jdGlvbihhKXtpZighdGhpcy5pc1ZhbGlkKCkp cmV0dXJuO0ZCLkV2ZW50LmZpcmUoJ2NvbW1lbnRzLmFkZCcse3Bvc3Q6YS5wb3N0 LHVzZXI6YS51c2VyLHdpZGdldDp0aGlzfSk7fSxfaGFuZGxlQ29tbWVudENyZWF0 ZWRNc2c6ZnVuY3Rpb24oYil7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybjt2YXIg YT17aHJlZjpiLmhyZWYsY29tbWVudElEOmIuY29tbWVudElELHBhcmVudENvbW1l bnRJRDpiLnBhcmVudENvbW1lbnRJRH07RkIuRXZlbnQuZmlyZSgnY29tbWVudC5j cmVhdGUnLGEpO30sX2hhbmRsZUNvbW1lbnRSZW1vdmVkTXNnOmZ1bmN0aW9uKGIp e2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm47dmFyIGE9e2hyZWY6Yi5ocmVmLGNv bW1lbnRJRDpiLmNvbW1lbnRJRH07RkIuRXZlbnQuZmlyZSgnY29tbWVudC5yZW1v dmUnLGEpO319KTsKRkIuc3ViY2xhc3MoJ1hGQk1MLkNvbW1lbnRzQ291bnQnLCdY RkJNTC5FbGVtZW50JyxudWxsLHtwcm9jZXNzOmZ1bmN0aW9uKCl7dGhpcy5faHJl Zj10aGlzLmdldEF0dHJpYnV0ZSgnaHJlZicsd2luZG93LmxvY2F0aW9uLmhyZWYp O3RoaXMuX2NvdW50PUZCLkRhdGEuX3NlbGVjdEJ5SW5kZXgoWydjb21tZW50c2Jv eF9jb3VudCddLCdsaW5rX3N0YXQnLCd1cmwnLHRoaXMuX2hyZWYpO0ZCLkRvbS5h ZGRDc3ModGhpcy5kb20sJ2ZiX2NvbW1lbnRzX2NvdW50X3plcm8nKTt0aGlzLl9j b3VudC53YWl0KEZCLmJpbmQoZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9jb3VudC52 YWx1ZVswXS5jb21tZW50c2JveF9jb3VudDt0aGlzLmRvbS5pbm5lckhUTUw9RkIu U3RyaW5nLmZvcm1hdCgnPHNwYW4gY2xhc3M9ImZiX2NvbW1lbnRzX2NvdW50Ij57 MH08L3NwYW4+JyxhKTtpZihhPjApRkIuRG9tLnJlbW92ZUNzcyh0aGlzLmRvbSwn ZmJfY29tbWVudHNfY291bnRfemVybycpO3RoaXMuZmlyZSgncmVuZGVyJyk7fSx0 aGlzKSk7fX0pOwpGQi5wcm92aWRlKCdBbmltJyx7YXRlOmZ1bmN0aW9uKGMsZyxk LGIpe2Q9IWlzTmFOKHBhcnNlRmxvYXQoZCkpJiZkPj0wP2Q6NzUwO3ZhciBlPTQw LGY9e30saj17fSxhPW51bGwsaD1jLnN0eWxlLGk9c2V0SW50ZXJ2YWwoRkIuYmlu ZChmdW5jdGlvbigpe2lmKCFhKWE9bmV3IERhdGUoKS5nZXRUaW1lKCk7dmFyIGs9 MTtpZihkIT0wKWs9TWF0aC5taW4oKG5ldyBEYXRlKCkuZ2V0VGltZSgpLWEpL2Qs MSk7RkIuQXJyYXkuZm9yRWFjaChnLEZCLmJpbmQoZnVuY3Rpb24obyxtKXtpZigh ZlttXSl7dmFyIG49RkIuRG9tLmdldFN0eWxlKGMsbSk7aWYobj09PWZhbHNlKXJl dHVybjtmW21dPXRoaXMuX3BhcnNlQ1NTKG4rJycpO31pZighalttXSlqW21dPXRo aXMuX3BhcnNlQ1NTKG8udG9TdHJpbmcoKSk7dmFyIGw9Jyc7RkIuQXJyYXkuZm9y RWFjaChmW21dLGZ1bmN0aW9uKHEscCl7aWYoaXNOYU4oalttXVtwXS5udW1QYXJ0 KSYmalttXVtwXS50ZXh0UGFydD09Jz8nKXtsPXEubnVtUGFydCtxLnRleHRQYXJ0 O31lbHNlIGlmKGlzTmFOKHEubnVtUGFydCkpe2w9cS50ZXh0UGFydDt9ZWxzZSBs Kz0ocS5udW1QYXJ0K01hdGguY2VpbCgoalttXVtwXS5udW1QYXJ0LXEubnVtUGFy dCkqTWF0aC5zaW4oTWF0aC5QSS8yKmspKSkralttXVtwXS50ZXh0UGFydCsnICc7 fSk7RkIuRG9tLnNldFN0eWxlKGMsbSxsKTt9LHRoaXMpKTtpZihrPT0xKXtjbGVh ckludGVydmFsKGkpO2lmKGIpYihjKTt9fSx0aGlzKSxlKTt9LF9wYXJzZUNTUzpm dW5jdGlvbihhKXt2YXIgYj1bXTtGQi5BcnJheS5mb3JFYWNoKGEuc3BsaXQoJyAn KSxmdW5jdGlvbihkKXt2YXIgYz1wYXJzZUludChkLDEwKTtiLnB1c2goe251bVBh cnQ6Yyx0ZXh0UGFydDpkLnJlcGxhY2UoYywnJyl9KTt9KTtyZXR1cm4gYjt9fSk7 CkZCLnByb3ZpZGUoJ0luc2lnaHRzJyx7aW1wcmVzc2lvbjpmdW5jdGlvbihlLGEp e3ZhciBiPUZCLmd1aWQoKSxnPSIvL2FoOC5mYWNlYm9vay5jb20vaW1wcmVzc2lv bi5waHAvIitiKyIvIixjPW5ldyBJbWFnZSgxLDEpLGY9W107aWYoIWUuYXBpX2tl eSYmRkIuX2FwaUtleSllLmFwaV9rZXk9RkIuX2FwaUtleTtmb3IodmFyIGQgaW4g ZSlmLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGQpKyc9JytlbmNvZGVVUklDb21w b25lbnQoZVtkXSkpO2crPSc/JytmLmpvaW4oJyYnKTtpZihhKWMub25sb2FkPWE7 Yy5zcmM9Zzt9fSk7CkZCLnN1YmNsYXNzKCdYRkJNTC5Db25uZWN0QmFyJywnWEZC TUwuRWxlbWVudCcsbnVsbCx7X2luaXRpYWxIZWlnaHQ6bnVsbCxfaW5pdFRvcE1h cmdpbjowLF9waWNGaWVsZE5hbWU6J3BpY19zcXVhcmUnLF9wYWdlOm51bGwsX2Rp c3BsYXllZDpmYWxzZSxfbm90RGlzcGxheWVkOmZhbHNlLF9jb250YWluZXI6bnVs bCxfYW5pbWF0aW9uU3BlZWQ6MCxwcm9jZXNzOmZ1bmN0aW9uKCl7RkIuZ2V0TG9n aW5TdGF0dXModGhpcy5iaW5kKGZ1bmN0aW9uKGEpe0ZCLkV2ZW50Lm1vbml0b3Io J2F1dGguc3RhdHVzQ2hhbmdlJyx0aGlzLmJpbmQoZnVuY3Rpb24oKXtpZih0aGlz LmlzVmFsaWQoKSYmRkIuX3VzZXJTdGF0dXM9PSdjb25uZWN0ZWQnKXt0aGlzLl91 aWQ9RkIuSGVscGVyLmdldExvZ2dlZEluVXNlcigpO0ZCLmFwaSh7bWV0aG9kOidD b25uZWN0LnNob3VsZFNob3dDb25uZWN0QmFyJ30sdGhpcy5iaW5kKGZ1bmN0aW9u KGIpe2lmKGIhPTIpe3RoaXMuX2FuaW1hdGlvblNwZWVkPShiPT0wKT83NTA6MDt0 aGlzLl9zaG93QmFyKCk7fWVsc2UgdGhpcy5fbm9SZW5kZXIoKTt9KSk7fWVsc2Ug dGhpcy5fbm9SZW5kZXIoKTtyZXR1cm4gZmFsc2U7fSkpO30pKTt9LF9zaG93QmFy OmZ1bmN0aW9uKCl7dmFyIGE9RkIuRGF0YS5fc2VsZWN0QnlJbmRleChbJ2ZpcnN0 X25hbWUnLCdwcm9maWxlX3VybCcsdGhpcy5fcGljRmllbGROYW1lXSwndXNlcics J3VpZCcsdGhpcy5fdWlkKTt2YXIgYj1GQi5EYXRhLl9zZWxlY3RCeUluZGV4KFsn ZGlzcGxheV9uYW1lJ10sJ2FwcGxpY2F0aW9uJywnYXBpX2tleScsRkIuX2FwaUtl eSk7RkIuRGF0YS53YWl0T24oW2EsYl0sRkIuYmluZChmdW5jdGlvbihjKXtjWzBd WzBdLnNpdGVfbmFtZT1jWzFdWzBdLmRpc3BsYXlfbmFtZTtpZighdGhpcy5fZGlz cGxheWVkKXt0aGlzLl9kaXNwbGF5ZWQ9dHJ1ZTt0aGlzLl9ub3REaXNwbGF5ZWQ9 ZmFsc2U7dGhpcy5fcmVuZGVyQ29ubmVjdEJhcihjWzBdWzBdKTt0aGlzLmZpcmUo J3JlbmRlcicpO0ZCLkluc2lnaHRzLmltcHJlc3Npb24oe2xpZDoxMDQsbmFtZTon d2lkZ2V0X2xvYWQnfSk7dGhpcy5maXJlKCdjb25uZWN0YmFyLm9uZGlzcGxheScp O0ZCLkV2ZW50LmZpcmUoJ2Nvbm5lY3RiYXIub25kaXNwbGF5Jyx0aGlzKTtGQi5I ZWxwZXIuaW52b2tlSGFuZGxlcih0aGlzLmdldEF0dHJpYnV0ZSgnb24tZGlzcGxh eScpLHRoaXMpO319LHRoaXMpKTt9LF9ub1JlbmRlcjpmdW5jdGlvbigpe2lmKHRo aXMuX2Rpc3BsYXllZCl7dGhpcy5fZGlzcGxheWVkPWZhbHNlO3RoaXMuX2Nsb3Nl Q29ubmVjdEJhcigpO31pZighdGhpcy5fbm90RGlzcGxheWVkKXt0aGlzLl9ub3RE aXNwbGF5ZWQ9dHJ1ZTt0aGlzLmZpcmUoJ3JlbmRlcicpO3RoaXMuZmlyZSgnY29u bmVjdGJhci5vbm5vdGRpc3BsYXknKTtGQi5FdmVudC5maXJlKCdjb25uZWN0YmFy Lm9ubm90ZGlzcGxheScsdGhpcyk7RkIuSGVscGVyLmludm9rZUhhbmRsZXIodGhp cy5nZXRBdHRyaWJ1dGUoJ29uLW5vdC1kaXNwbGF5JyksdGhpcyk7fX0sX3JlbmRl ckNvbm5lY3RCYXI6ZnVuY3Rpb24oZCl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnZGl2JyksYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtiLmNs YXNzTmFtZT0nZmJfY29ubmVjdF9iYXInO2MuY2xhc3NOYW1lPSdmYl9yZXNldCBm Yl9jb25uZWN0X2Jhcl9jb250YWluZXInO2MuYXBwZW5kQ2hpbGQoYik7ZG9jdW1l bnQuYm9keS5hcHBlbmRDaGlsZChjKTt0aGlzLl9jb250YWluZXI9Yzt0aGlzLl9p bml0aWFsSGVpZ2h0PU1hdGgucm91bmQocGFyc2VGbG9hdChGQi5Eb20uZ2V0U3R5 bGUoYywnaGVpZ2h0JykpK3BhcnNlRmxvYXQoRkIuRG9tLmdldFN0eWxlKGMsJ2Jv cmRlckJvdHRvbVdpZHRoJykpKTtiLmlubmVySFRNTD1GQi5TdHJpbmcuZm9ybWF0 KCc8ZGl2IGNsYXNzPSJmYl9idXR0b25zIj4nKyc8YSBocmVmPSIjIiBjbGFzcz0i ZmJfYmFyX2Nsb3NlIj4nKyc8aW1nIHNyYz0iezF9IiBhbHQ9InsyfSIgdGl0bGU9 InsyfSIvPicrJzwvYT4nKyc8L2Rpdj4nKyc8YSBocmVmPSJ7N30iIGNsYXNzPSJm Yl9wcm9maWxlIiB0YXJnZXQ9Il9ibGFuayI+JysnPGltZyBzcmM9InszfSIgYWx0 PSJ7NH0iIHRpdGxlPSJ7NH0iLz4nKyc8L2E+JysnezV9JysnIDxzcGFuPicrJzxh IGhyZWY9Ins4fSIgY2xhc3M9ImZiX2xlYXJuX21vcmUiIHRhcmdldD0iX2JsYW5r Ij57Nn08L2E+ICZuZGFzaDsgJysnPGEgaHJlZj0iIyIgY2xhc3M9ImZiX25vX3Ro YW5rcyI+ezB9PC9hPicrJzwvc3Bhbj4nLEZCLkludGwuX3R4KCIgSGF5XHUwMTMx ciwgVGVcdTAxNWZla2tcdTAwZmNybGVyIiksRkIuZ2V0RG9tYWluKCdjZG4nKStG Qi5YRkJNTC5Db25uZWN0QmFyLmltZ3MuYnV0dG9uVXJsLEZCLkludGwuX3R4KCJL YXBhdCIpLGRbdGhpcy5fcGljRmllbGROYW1lXXx8RkIuZ2V0RG9tYWluKCdjZG4n KStGQi5YRkJNTC5Db25uZWN0QmFyLmltZ3MubWlzc2luZ1Byb2ZpbGVVcmwsRkIu U3RyaW5nLmVzY2FwZUhUTUwoZC5maXJzdF9uYW1lKSxGQi5JbnRsLl90eCgiTWVy aGFiYSB7Zmlyc3ROYW1lfS4gXHUwMDNjc3Ryb25nPntzaXRlTmFtZX1cdTAwM2Nc L3N0cm9uZz4gZGVuZXlpbWluaSBraVx1MDE1ZmlzZWxsZVx1MDE1ZnRpcm1layBp XHUwMGU3aW4gRmFjZWJvb2sndSBrdWxsYW5cdTAxMzF5b3IuIix7Zmlyc3ROYW1l OkZCLlN0cmluZy5lc2NhcGVIVE1MKGQuZmlyc3RfbmFtZSksc2l0ZU5hbWU6RkIu U3RyaW5nLmVzY2FwZUhUTUwoZC5zaXRlX25hbWUpfSksRkIuSW50bC5fdHgoIkRh aGEgRmF6bGEgQmlsZ2kiKSxkLnByb2ZpbGVfdXJsLEZCLmdldERvbWFpbignd3d3 JykrJ3NpdGV0b3VyL2Nvbm5lY3QucGhwJyk7dmFyIGE9dGhpcztGQi5BcnJheS5m b3JFYWNoKGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKSxmdW5jdGlvbihnKXtn Lm9uY2xpY2s9RkIuYmluZChhLl9jbGlja0hhbmRsZXIsYSk7fSk7dGhpcy5fcGFn ZT1kb2N1bWVudC5ib2R5O3ZhciBmPTA7aWYodGhpcy5fcGFnZS5wYXJlbnROb2Rl KXtmPU1hdGgucm91bmQoKHBhcnNlRmxvYXQoRkIuRG9tLmdldFN0eWxlKHRoaXMu X3BhZ2UucGFyZW50Tm9kZSwnaGVpZ2h0JykpLXBhcnNlRmxvYXQoRkIuRG9tLmdl dFN0eWxlKHRoaXMuX3BhZ2UsJ2hlaWdodCcpKSkvMik7fWVsc2UgZj1wYXJzZUlu dChGQi5Eb20uZ2V0U3R5bGUodGhpcy5fcGFnZSwnbWFyZ2luVG9wJyksMTApO2Y9 aXNOYU4oZik/MDpmO3RoaXMuX2luaXRUb3BNYXJnaW49ZjtpZighd2luZG93LlhN TEh0dHBSZXF1ZXN0KXtjLmNsYXNzTmFtZSs9IiBmYl9jb25uZWN0X2Jhcl9jb250 YWluZXJfaWU2Ijt9ZWxzZXtjLnN0eWxlLnRvcD0oLTEqdGhpcy5faW5pdGlhbEhl aWdodCkrJ3B4JztGQi5BbmltLmF0ZShjLHt0b3A6JzBweCd9LHRoaXMuX2FuaW1h dGlvblNwZWVkKTt9dmFyIGU9e21hcmdpblRvcDp0aGlzLl9pbml0VG9wTWFyZ2lu K3RoaXMuX2luaXRpYWxIZWlnaHQrJ3B4J307aWYoRkIuVUEuaWUoKSl7ZS5iYWNr Z3JvdW5kUG9zaXRpb25ZPXRoaXMuX2luaXRpYWxIZWlnaHQrJ3B4Jzt9ZWxzZSBl LmJhY2tncm91bmRQb3NpdGlvbj0nPyAnK3RoaXMuX2luaXRpYWxIZWlnaHQrJ3B4 JztGQi5BbmltLmF0ZSh0aGlzLl9wYWdlLGUsdGhpcy5fYW5pbWF0aW9uU3BlZWQp O30sX2NsaWNrSGFuZGxlcjpmdW5jdGlvbihhKXthPWF8fHdpbmRvdy5ldmVudDt2 YXIgYj1hLnRhcmdldHx8YS5zcmNFbGVtZW50O3doaWxlKGIubm9kZU5hbWUhPSdB JyliPWIucGFyZW50Tm9kZTtzd2l0Y2goYi5jbGFzc05hbWUpe2Nhc2UgJ2ZiX2Jh cl9jbG9zZSc6RkIuYXBpKHttZXRob2Q6J0Nvbm5lY3QuY29ubmVjdEJhck1hcmtB Y2tub3dsZWRnZWQnfSk7RkIuSW5zaWdodHMuaW1wcmVzc2lvbih7bGlkOjEwNCxu YW1lOid3aWRnZXRfdXNlcl9jbG9zZWQnfSk7dGhpcy5fY2xvc2VDb25uZWN0QmFy KCk7YnJlYWs7Y2FzZSAnZmJfbGVhcm5fbW9yZSc6Y2FzZSAnZmJfcHJvZmlsZSc6 d2luZG93Lm9wZW4oYi5ocmVmKTticmVhaztjYXNlICdmYl9ub190aGFua3MnOnRo aXMuX2Nsb3NlQ29ubmVjdEJhcigpO0ZCLmFwaSh7bWV0aG9kOidDb25uZWN0LmNv bm5lY3RCYXJNYXJrQWNrbm93bGVkZ2VkJ30pO0ZCLkluc2lnaHRzLmltcHJlc3Np b24oe2xpZDoxMDQsbmFtZTond2lkZ2V0X3VzZXJfbm9fdGhhbmtzJ30pO0ZCLmFw aSh7bWV0aG9kOidhdXRoLnJldm9rZUF1dGhvcml6YXRpb24nLGJsb2NrOnRydWV9 LHRoaXMuYmluZChmdW5jdGlvbigpe3RoaXMuZmlyZSgnY29ubmVjdGJhci5vbmRl YXV0aCcpO0ZCLkV2ZW50LmZpcmUoJ2Nvbm5lY3RiYXIub25kZWF1dGgnLHRoaXMp O0ZCLkhlbHBlci5pbnZva2VIYW5kbGVyKHRoaXMuZ2V0QXR0cmlidXRlKCdvbi1k ZWF1dGgnKSx0aGlzKTtpZih0aGlzLl9nZXRCb29sQXR0cmlidXRlKCdhdXRvLXJl ZnJlc2gnLHRydWUpKXdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTt9KSk7YnJlYWs7 fXJldHVybiBmYWxzZTt9LF9jbG9zZUNvbm5lY3RCYXI6ZnVuY3Rpb24oKXt0aGlz Ll9ub3REaXNwbGF5ZWQ9dHJ1ZTt2YXIgYT17bWFyZ2luVG9wOnRoaXMuX2luaXRU b3BNYXJnaW4rJ3B4J307aWYoRkIuVUEuaWUoKSl7YS5iYWNrZ3JvdW5kUG9zaXRp b25ZPScwcHgnO31lbHNlIGEuYmFja2dyb3VuZFBvc2l0aW9uPSc/IDBweCc7dmFy IGI9KHRoaXMuX2FuaW1hdGlvblNwZWVkPT0wKT8wOjMwMDtGQi5BbmltLmF0ZSh0 aGlzLl9wYWdlLGEsYik7RkIuQW5pbS5hdGUodGhpcy5fY29udGFpbmVyLHt0b3A6 KC0xKnRoaXMuX2luaXRpYWxIZWlnaHQpKydweCd9LGIsZnVuY3Rpb24oYyl7Yy5w YXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpO30pO3RoaXMuZmlyZSgnY29ubmVjdGJh ci5vbmNsb3NlJyk7RkIuRXZlbnQuZmlyZSgnY29ubmVjdGJhci5vbmNsb3NlJyx0 aGlzKTtGQi5IZWxwZXIuaW52b2tlSGFuZGxlcih0aGlzLmdldEF0dHJpYnV0ZSgn b24tY2xvc2UnKSx0aGlzKTt9fSk7RkIucHJvdmlkZSgnWEZCTUwuQ29ubmVjdEJh cicse2ltZ3M6e2J1dHRvblVybDonaW1hZ2VzL2ZhY2Vib29rLXdpZGdldHMvY2xv c2VfYnRuLnBuZycsbWlzc2luZ1Byb2ZpbGVVcmw6J3BpY3MvcV9zaWxob3VldHRl LmdpZid9fSk7CkZCLnN1YmNsYXNzKCdYRkJNTC5GYW4nLCdYRkJNTC5JZnJhbWVX aWRnZXQnLG51bGwse192aXNpYmxlQWZ0ZXI6J2xvYWQnLHNldHVwQW5kVmFsaWRh dGU6ZnVuY3Rpb24oKXt0aGlzLl9hdHRyPXthcGlfa2V5OkZCLl9hcGlLZXksY29u bmVjdGlvbnM6dGhpcy5nZXRBdHRyaWJ1dGUoJ2Nvbm5lY3Rpb25zJywnMTAnKSxj c3M6dGhpcy5nZXRBdHRyaWJ1dGUoJ2NzcycpLGhlaWdodDp0aGlzLl9nZXRQeEF0 dHJpYnV0ZSgnaGVpZ2h0JyksaWQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ3Byb2ZpbGUt aWQnKSxsb2dvYmFyOnRoaXMuX2dldEJvb2xBdHRyaWJ1dGUoJ2xvZ28tYmFyJyks bmFtZTp0aGlzLmdldEF0dHJpYnV0ZSgnbmFtZScpLHN0cmVhbTp0aGlzLl9nZXRC b29sQXR0cmlidXRlKCdzdHJlYW0nLHRydWUpLHdpZHRoOnRoaXMuX2dldFB4QXR0 cmlidXRlKCd3aWR0aCcsMzAwKX07aWYoIXRoaXMuX2F0dHIuaWQmJiF0aGlzLl9h dHRyLm5hbWUpe0ZCLmxvZygnPGZiOmZhbj4gcmVxdWlyZXMgb25lIG9mIHRoZSAi aWQiIG9yICJuYW1lIiBhdHRyaWJ1dGVzLicpO3JldHVybiBmYWxzZTt9dmFyIGE9 dGhpcy5fYXR0ci5oZWlnaHQ7aWYoIWEpaWYoKCF0aGlzLl9hdHRyLmNvbm5lY3Rp b25zfHx0aGlzLl9hdHRyLmNvbm5lY3Rpb25zPT09JzAnKSYmIXRoaXMuX2F0dHIu c3RyZWFtKXthPTY1O31lbHNlIGlmKCF0aGlzLl9hdHRyLmNvbm5lY3Rpb25zfHx0 aGlzLl9hdHRyLmNvbm5lY3Rpb25zPT09JzAnKXthPTM3NTt9ZWxzZSBpZighdGhp cy5fYXR0ci5zdHJlYW0pe2E9MjUwO31lbHNlIGE9NTUwO2lmKHRoaXMuX2F0dHIu bG9nb2JhcilhKz0yNTt0aGlzLl9hdHRyLmhlaWdodD1hO3JldHVybiB0cnVlO30s Z2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB7d2lkdGg6dGhpcy5fYXR0ci53aWR0 aCxoZWlnaHQ6dGhpcy5fYXR0ci5oZWlnaHR9O30sZ2V0VXJsQml0czpmdW5jdGlv bigpe3JldHVybiB7bmFtZTonZmFuJyxwYXJhbXM6dGhpcy5fYXR0cn07fX0pOwpG Qi5zdWJjbGFzcygnWEZCTUwuRnJpZW5kcGlsZScsJ1hGQk1MLkZhY2VwaWxlJyxu dWxsLHt9KTsKRkIuc3ViY2xhc3MoJ1hGQk1MLkVkZ2VDb21tZW50V2lkZ2V0Jywn WEZCTUwuSWZyYW1lV2lkZ2V0JyxmdW5jdGlvbihhKXt0aGlzLl9pZnJhbWVXaWR0 aD1hLndpZHRoKzE7dGhpcy5faWZyYW1lSGVpZ2h0PWEuaGVpZ2h0O3RoaXMuX2F0 dHI9e21hc3Rlcl9mcmFtZV9uYW1lOmEubWFzdGVyRnJhbWVOYW1lfTt0aGlzLmRv bT1hLmNvbW1lbnROb2RlO3RoaXMuZG9tLnN0eWxlLnRvcD1hLnJlbGF0aXZlSGVp Z2h0T2Zmc2V0O2lmKGEucmVsYXRpdmVXaWR0aE9mZnNldClpZihGQi5fbG9jYWxl SXNSdGwpe3RoaXMuZG9tLnN0eWxlLnJpZ2h0PWEucmVsYXRpdmVXaWR0aE9mZnNl dDt9ZWxzZSB0aGlzLmRvbS5zdHlsZS5sZWZ0PWEucmVsYXRpdmVXaWR0aE9mZnNl dDt0aGlzLmRvbS5zdHlsZS56SW5kZXg9RkIuWEZCTUwuRWRnZUNvbW1lbnRXaWRn ZXQuTmV4dFpJbmRleCsrO0ZCLkRvbS5hZGRDc3ModGhpcy5kb20sJ2ZiX2VkZ2Vf Y29tbWVudF93aWRnZXQnKTt9LHtfdmlzaWJsZUFmdGVyOidsb2FkJyxfc2hvd0xv YWRlcjpmYWxzZSxnZXRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHt3aWR0aDp0aGlz Ll9pZnJhbWVXaWR0aCxoZWlnaHQ6dGhpcy5faWZyYW1lSGVpZ2h0fTt9LGdldFVy bEJpdHM6ZnVuY3Rpb24oKXtyZXR1cm4ge25hbWU6J2NvbW1lbnRfd2lkZ2V0X3No ZWxsJyxwYXJhbXM6dGhpcy5fYXR0cn07fX0pO0ZCLnByb3ZpZGUoJ1hGQk1MLkVk Z2VDb21tZW50V2lkZ2V0Jyx7TmV4dFpJbmRleDoxMDAwMH0pOwpGQi5zdWJjbGFz cygnWEZCTUwuRWRnZVdpZGdldCcsJ1hGQk1MLklmcmFtZVdpZGdldCcsbnVsbCx7 X3Zpc2libGVBZnRlcjonaW1tZWRpYXRlJyxfc2hvd0xvYWRlcjpmYWxzZSxzZXR1 cEFuZFZhbGlkYXRlOmZ1bmN0aW9uKCl7RkIuRG9tLmFkZENzcyh0aGlzLmRvbSwn ZmJfZWRnZV93aWRnZXRfd2l0aF9jb21tZW50Jyk7dGhpcy5fYXR0cj17Y2hhbm5l bF91cmw6dGhpcy5nZXRDaGFubmVsVXJsKCksZGVidWc6dGhpcy5fZ2V0Qm9vbEF0 dHJpYnV0ZSgnZGVidWcnKSxocmVmOnRoaXMuZ2V0QXR0cmlidXRlKCdocmVmJyx3 aW5kb3cubG9jYXRpb24uaHJlZiksaXNfcGVybWFsaW5rOnRoaXMuX2dldEJvb2xB dHRyaWJ1dGUoJ2lzLXBlcm1hbGluaycpLG5vZGVfdHlwZTp0aGlzLmdldEF0dHJp YnV0ZSgnbm9kZS10eXBlJywnbGluaycpLHdpZHRoOnRoaXMuX2dldFdpZGdldFdp ZHRoKCksZm9udDp0aGlzLmdldEF0dHJpYnV0ZSgnZm9udCcpLGxheW91dDp0aGlz Ll9nZXRMYXlvdXQoKSxjb2xvcnNjaGVtZTp0aGlzLmdldEF0dHJpYnV0ZSgnY29s b3Itc2NoZW1lJyksYWN0aW9uOnRoaXMuZ2V0QXR0cmlidXRlKCdhY3Rpb24nKSxy ZWY6dGhpcy5nZXRBdHRyaWJ1dGUoJ3JlZicpLHNob3dfZmFjZXM6dGhpcy5fc2hv dWxkU2hvd0ZhY2VzKCksbm9fcmVzaXplOnRoaXMuX2dldEJvb2xBdHRyaWJ1dGUo J25vX3Jlc2l6ZScpLHNlbmQ6dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgnc2VuZCcp LHVybF9tYXA6dGhpcy5nZXRBdHRyaWJ1dGUoJ3VybF9tYXAnKSxleHRlbmRlZF9z b2NpYWxfY29udGV4dDp0aGlzLl9nZXRCb29sQXR0cmlidXRlKCdleHRlbmRlZF9z b2NpYWxfY29udGV4dCcsZmFsc2UpfTtyZXR1cm4gdHJ1ZTt9LG9uZVRpbWVTZXR1 cDpmdW5jdGlvbigpe3RoaXMuc3Vic2NyaWJlKCd4ZC5hdXRoUHJvbXB0ZWQnLEZC LmJpbmQodGhpcy5fb25BdXRoUHJvbXB0LHRoaXMpKTt0aGlzLnN1YnNjcmliZSgn eGQuZWRnZUNyZWF0ZWQnLEZCLmJpbmQodGhpcy5fb25FZGdlQ3JlYXRlLHRoaXMp KTt0aGlzLnN1YnNjcmliZSgneGQuZWRnZVJlbW92ZWQnLEZCLmJpbmQodGhpcy5f b25FZGdlUmVtb3ZlLHRoaXMpKTt0aGlzLnN1YnNjcmliZSgneGQucHJlc2VudEVk Z2VDb21tZW50RGlhbG9nJyxGQi5iaW5kKHRoaXMuX2hhbmRsZUVkZ2VDb21tZW50 RGlhbG9nUHJlc2VudGF0aW9uLHRoaXMpKTt0aGlzLnN1YnNjcmliZSgneGQuZGlz bWlzc0VkZ2VDb21tZW50RGlhbG9nJyxGQi5iaW5kKHRoaXMuX2hhbmRsZUVkZ2VD b21tZW50RGlhbG9nRGlzbWlzc2FsLHRoaXMpKTt0aGlzLnN1YnNjcmliZSgneGQu aGlkZUVkZ2VDb21tZW50RGlhbG9nJyxGQi5iaW5kKHRoaXMuX2hhbmRsZUVkZ2VD b21tZW50RGlhbG9nSGlkZSx0aGlzKSk7dGhpcy5zdWJzY3JpYmUoJ3hkLnNob3dF ZGdlQ29tbWVudERpYWxvZycsRkIuYmluZCh0aGlzLl9oYW5kbGVFZGdlQ29tbWVu dERpYWxvZ1Nob3csdGhpcykpO30sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB7 d2lkdGg6dGhpcy5fZ2V0V2lkZ2V0V2lkdGgoKSxoZWlnaHQ6dGhpcy5fZ2V0V2lk Z2V0SGVpZ2h0KCl9O30sX2dldFdpZGdldEhlaWdodDpmdW5jdGlvbigpe3ZhciBi PXRoaXMuX2dldExheW91dCgpO3ZhciBlPXRoaXMuX3Nob3VsZFNob3dGYWNlcygp PydzaG93JzonaGlkZSc7dmFyIGQ9dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgnc2Vu ZCcpO3ZhciBhPTY1KyhkPzI1OjApO3ZhciBjPXtzdGFuZGFyZDp7c2hvdzo4MCxo aWRlOjM1fSxib3hfY291bnQ6e3Nob3c6YSxoaWRlOmF9LGJ1dHRvbl9jb3VudDp7 c2hvdzoyMSxoaWRlOjIxfSxzaW1wbGU6e3Nob3c6MjAsaGlkZToyMH19O3JldHVy biBjW2JdW2VdO30sX2dldFdpZGdldFdpZHRoOmZ1bmN0aW9uKCl7dmFyIGU9dGhp cy5fZ2V0TGF5b3V0KCk7dmFyIGg9dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgnc2Vu ZCcpO3ZhciBpPXRoaXMuX3Nob3VsZFNob3dGYWNlcygpPydzaG93JzonaGlkZSc7 dmFyIGc9KHRoaXMuZ2V0QXR0cmlidXRlKCdhY3Rpb24nKT09PSdyZWNvbW1lbmQn KTt2YXIgaz0oZz8yNjU6MjI1KSsoaD82MDowKTt2YXIgYz0oZz8xMzA6OTApKyho PzYwOjApO3ZhciBiPXRoaXMuZ2V0QXR0cmlidXRlKCdhY3Rpb24nKT09PSdyZWNv bW1lbmQnPzEwMDo1NTt2YXIgaj10aGlzLmdldEF0dHJpYnV0ZSgnYWN0aW9uJyk9 PT0ncmVjb21tZW5kJz85MDo1MDt2YXIgZj17c3RhbmRhcmQ6e3Nob3c6NDUwLGhp ZGU6NDUwfSxib3hfY291bnQ6e3Nob3c6YixoaWRlOmJ9LGJ1dHRvbl9jb3VudDp7 c2hvdzpjLGhpZGU6Y30sc2ltcGxlOntzaG93OmosaGlkZTpqfX07dmFyIGQ9Zltl XVtpXTt2YXIgbD10aGlzLl9nZXRQeEF0dHJpYnV0ZSgnd2lkdGgnLGQpO3ZhciBh PXtzdGFuZGFyZDp7bWluOmssbWF4OjkwMH0sYm94X2NvdW50OnttaW46YixtYXg6 OTAwfSxidXR0b25fY291bnQ6e21pbjpjLG1heDo5MDB9LHNpbXBsZTp7bWluOjQ5 LG1heDo5MDB9fTtpZihsPGFbZV0ubWluKXtsPWFbZV0ubWluO31lbHNlIGlmKGw+ YVtlXS5tYXgpbD1hW2VdLm1heDtyZXR1cm4gbDt9LF9nZXRMYXlvdXQ6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5fZ2V0QXR0cmlidXRlRnJvbUxpc3QoJ2xheW91dCcs J3N0YW5kYXJkJyxbJ3N0YW5kYXJkJywnYnV0dG9uX2NvdW50JywnYm94X2NvdW50 Jywnc2ltcGxlJ10pO30sX3Nob3VsZFNob3dGYWNlczpmdW5jdGlvbigpe3JldHVy biB0aGlzLl9nZXRMYXlvdXQoKT09PSdzdGFuZGFyZCcmJnRoaXMuX2dldEJvb2xB dHRyaWJ1dGUoJ3Nob3ctZmFjZXMnLHRydWUpO30sX2hhbmRsZUVkZ2VDb21tZW50 RGlhbG9nUHJlc2VudGF0aW9uOmZ1bmN0aW9uKGIpe2lmKCF0aGlzLmlzVmFsaWQo KSlyZXR1cm47dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO3Ro aXMuX2NvbW1lbnRTbGF2ZT10aGlzLl9jcmVhdGVFZGdlQ29tbWVudFdpZGdldChi LGEpO3RoaXMuZG9tLmFwcGVuZENoaWxkKGEpO3RoaXMuX2NvbW1lbnRTbGF2ZS5w cm9jZXNzKCk7dGhpcy5fY29tbWVudFdpZGdldE5vZGU9YTt9LF9jcmVhdGVFZGdl Q29tbWVudFdpZGdldDpmdW5jdGlvbihiLGEpe3ZhciBjPXtjb21tZW50Tm9kZTph LGV4dGVybmFsVXJsOmIuZXh0ZXJuYWxVUkwsd2lkdGg6NDAwLGhlaWdodDoyMjUs bWFzdGVyRnJhbWVOYW1lOmIubWFzdGVyRnJhbWVOYW1lLGxheW91dDp0aGlzLl9n ZXRMYXlvdXQoKSxyZWxhdGl2ZUhlaWdodE9mZnNldDp0aGlzLl9nZXRIZWlnaHRP ZmZzZXQoYikscmVsYXRpdmVXaWR0aE9mZnNldDp0aGlzLl9nZXRXaWR0aE9mZnNl dChiKX07cmV0dXJuIG5ldyBGQi5YRkJNTC5FZGdlQ29tbWVudFdpZGdldChjKTt9 LF9nZXRIZWlnaHRPZmZzZXQ6ZnVuY3Rpb24oYyl7aWYoYyYmYy5wcmVDb21wdXRl ZEhlaWdodE9mZnNldClyZXR1cm4gcGFyc2VJbnQoYy5wcmVDb21wdXRlZEhlaWdo dE9mZnNldCwxMCkrJ3B4Jzt2YXIgYT10aGlzLl9nZXRMYXlvdXQoKTt2YXIgYj17 c3RhbmRhcmQ6JzIycHgnLGJ1dHRvbl9jb3VudDonMTlweCcsYm94X2NvdW50Oict NXB4JyxzaW1wbGU6JzE4cHgnfTtyZXR1cm4gYlthXTt9LF9nZXRDb21tb25FZGdl Q29tbWVudFdpZGdldE9wdHM6ZnVuY3Rpb24oYyxhLGQsYil7cmV0dXJuIHtjb2xv cnNjaGVtZTp0aGlzLl9hdHRyLmNvbG9yc2NoZW1lLGNvbW1lbnROb2RlOmEsY29u dHJvbGxlcklEOmMuY29udHJvbGxlcklELG5vZGVJbWFnZVVSTDpjLm5vZGVJbWFn ZVVSTCxub2RlUmVmOnRoaXMuX2F0dHIucmVmLG5vZGVUaXRsZTpjLm5vZGVUaXRs ZSxub2RlVVJMOmMubm9kZVVSTCxub2RlU3VtbWFyeTpjLm5vZGVTdW1tYXJ5LHdp ZHRoOjQwMCxoZWlnaHQ6MzAwLHJlbGF0aXZlSGVpZ2h0T2Zmc2V0OihiP3RoaXMu X2dldEhlaWdodE9mZnNldChjKTp0aGlzLl9nZXRIZWlnaHRPZmZzZXQoKSkscmVs YXRpdmVXaWR0aE9mZnNldDooZD90aGlzLl9nZXRXaWR0aE9mZnNldChjKTp0aGlz Ll9nZXRXaWR0aE9mZnNldCgpKSxlcnJvcjpjLmVycm9yLHNpZGVyZW5kZXI6Yy5z aWRlcmVuZGVyLGV4dGVuZGVkX3NvY2lhbF9jb250ZXh0OmMuZXh0ZW5kZWRfc29j aWFsX2NvbnRleHR9O30sX2dldFdpZHRoT2Zmc2V0OmZ1bmN0aW9uKGMpe2lmKGMm JmMucHJlQ29tcHV0ZWRXaWR0aE9mZnNldClyZXR1cm4gcGFyc2VJbnQoYy5wcmVD b21wdXRlZFdpZHRoT2Zmc2V0LDEwKSsncHgnO3ZhciBhPXRoaXMuX2dldExheW91 dCgpO3ZhciBiPXtzdGFuZGFyZDonMHB4Jyxib3hfY291bnQ6JzBweCcsYnV0dG9u X2NvdW50OicwcHgnLHNpbXBsZTonMHB4J307cmV0dXJuIGJbYV07fSxfaGFuZGxl RWRnZUNvbW1lbnREaWFsb2dEaXNtaXNzYWw6ZnVuY3Rpb24oYSl7aWYodGhpcy5f Y29tbWVudFdpZGdldE5vZGUpe3RoaXMuZG9tLnJlbW92ZUNoaWxkKHRoaXMuX2Nv bW1lbnRXaWRnZXROb2RlKTtkZWxldGUgdGhpcy5fY29tbWVudFdpZGdldE5vZGU7 fX0sX2hhbmRsZUVkZ2VDb21tZW50RGlhbG9nSGlkZTpmdW5jdGlvbigpe2lmKHRo aXMuX2NvbW1lbnRXaWRnZXROb2RlKXRoaXMuX2NvbW1lbnRXaWRnZXROb2RlLnN0 eWxlLmRpc3BsYXk9Im5vbmUiO30sX2hhbmRsZUVkZ2VDb21tZW50RGlhbG9nU2hv dzpmdW5jdGlvbigpe2lmKHRoaXMuX2NvbW1lbnRXaWRnZXROb2RlKXRoaXMuX2Nv bW1lbnRXaWRnZXROb2RlLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjt9LF9maXJlRXZl bnRBbmRJbnZva2VIYW5kbGVyOmZ1bmN0aW9uKGIsYSl7RkIuSGVscGVyLmZpcmVF dmVudChiLHRoaXMpO0ZCLkhlbHBlci5pbnZva2VIYW5kbGVyKHRoaXMuZ2V0QXR0 cmlidXRlKGEpLHRoaXMsW3RoaXMuX2F0dHIuaHJlZl0pO30sX29uRWRnZUNyZWF0 ZTpmdW5jdGlvbigpe3RoaXMuX2ZpcmVFdmVudEFuZEludm9rZUhhbmRsZXIoJ2Vk Z2UuY3JlYXRlJywnb24tY3JlYXRlJyk7fSxfb25FZGdlUmVtb3ZlOmZ1bmN0aW9u KCl7dGhpcy5fZmlyZUV2ZW50QW5kSW52b2tlSGFuZGxlcignZWRnZS5yZW1vdmUn LCdvbi1yZW1vdmUnKTt9LF9vbkF1dGhQcm9tcHQ6ZnVuY3Rpb24oKXt0aGlzLl9m aXJlRXZlbnRBbmRJbnZva2VIYW5kbGVyKCdhdXRoLnByb21wdCcsJ29uLXByb21w dCcpO319KTsKRkIuc3ViY2xhc3MoJ1hGQk1MLlNlbmRCdXR0b25Gb3JtV2lkZ2V0 JywnWEZCTUwuRWRnZUNvbW1lbnRXaWRnZXQnLGZ1bmN0aW9uKGEpe3RoaXMuX2Jh c2UoYSk7RkIuRG9tLmFkZENzcyh0aGlzLmRvbSwnZmJfc2VuZF9idXR0b25fZm9y bV93aWRnZXQnKTtGQi5Eb20uYWRkQ3NzKHRoaXMuZG9tLGEuY29sb3JzY2hlbWUp O0ZCLkRvbS5hZGRDc3ModGhpcy5kb20sKHR5cGVvZiBhLnNpZGVyZW5kZXIhPSd1 bmRlZmluZWQnJiZhLnNpZGVyZW5kZXIpPydzaWRlcmVuZGVyJzonJyk7dGhpcy5f YXR0ci5ub2RlSW1hZ2VVUkw9YS5ub2RlSW1hZ2VVUkw7dGhpcy5fYXR0ci5ub2Rl UmVmPWEubm9kZVJlZjt0aGlzLl9hdHRyLm5vZGVUaXRsZT1hLm5vZGVUaXRsZTt0 aGlzLl9hdHRyLm5vZGVVUkw9YS5ub2RlVVJMO3RoaXMuX2F0dHIubm9kZVN1bW1h cnk9YS5ub2RlU3VtbWFyeTt0aGlzLl9hdHRyLmNoYW5uZWw9dGhpcy5nZXRDaGFu bmVsVXJsKCk7dGhpcy5fYXR0ci5jb250cm9sbGVySUQ9YS5jb250cm9sbGVySUQ7 dGhpcy5fYXR0ci5jb2xvcnNjaGVtZT1hLmNvbG9yc2NoZW1lO3RoaXMuX2F0dHIu ZXJyb3I9YS5lcnJvcjt0aGlzLl9hdHRyLnNpZGVyZW5kZXI9YS5zaWRlcmVuZGVy O3RoaXMuX2F0dHIuZXh0ZW5kZWRfc29jaWFsX2NvbnRleHQ9YS5leHRlbmRlZF9z b2NpYWxfY29udGV4dDt9LHtfc2hvd0xvYWRlcjp0cnVlLGdldFVybEJpdHM6ZnVu Y3Rpb24oKXtyZXR1cm4ge25hbWU6J3NlbmRfYnV0dG9uX2Zvcm1fc2hlbGwnLHBh cmFtczp0aGlzLl9hdHRyfTt9LG9uZVRpbWVTZXR1cDpmdW5jdGlvbigpe3RoaXMu c3Vic2NyaWJlKCd4ZC5tZXNzYWdlU2VudCcsRkIuYmluZCh0aGlzLl9vbk1lc3Nh Z2VTZW50LHRoaXMpKTt9LF9vbk1lc3NhZ2VTZW50OmZ1bmN0aW9uKCl7RkIuRXZl bnQuZmlyZSgnbWVzc2FnZS5zZW5kJyx0aGlzLl9hdHRyLm5vZGVVUkwsdGhpcyk7 fX0pOwpGQi5zdWJjbGFzcygnWEZCTUwuU2VuZCcsJ1hGQk1MLkVkZ2VXaWRnZXQn LG51bGwse3NldHVwQW5kVmFsaWRhdGU6ZnVuY3Rpb24oKXtGQi5Eb20uYWRkQ3Nz KHRoaXMuZG9tLCdmYl9lZGdlX3dpZGdldF93aXRoX2NvbW1lbnQnKTt0aGlzLl9h dHRyPXtjaGFubmVsOnRoaXMuZ2V0Q2hhbm5lbFVybCgpLGFwaV9rZXk6RkIuX2Fw aUtleSxmb250OnRoaXMuZ2V0QXR0cmlidXRlKCdmb250JyksY29sb3JzY2hlbWU6 dGhpcy5nZXRBdHRyaWJ1dGUoJ2NvbG9yc2NoZW1lJywnbGlnaHQnKSxocmVmOnRo aXMuZ2V0QXR0cmlidXRlKCdocmVmJyx3aW5kb3cubG9jYXRpb24uaHJlZikscmVm OnRoaXMuZ2V0QXR0cmlidXRlKCdyZWYnKSxleHRlbmRlZF9zb2NpYWxfY29udGV4 dDp0aGlzLmdldEF0dHJpYnV0ZSgnZXh0ZW5kZWRfc29jaWFsX2NvbnRleHQnLGZh bHNlKX07cmV0dXJuIHRydWU7fSxnZXRVcmxCaXRzOmZ1bmN0aW9uKCl7cmV0dXJu IHtuYW1lOidzZW5kJyxwYXJhbXM6dGhpcy5fYXR0cn07fSxfY3JlYXRlRWRnZUNv bW1lbnRXaWRnZXQ6ZnVuY3Rpb24oYixhKXt2YXIgYz10aGlzLl9nZXRDb21tb25F ZGdlQ29tbWVudFdpZGdldE9wdHMoYixhKTtyZXR1cm4gbmV3IEZCLlhGQk1MLlNl bmRCdXR0b25Gb3JtV2lkZ2V0KGMpO30sX2dldEhlaWdodE9mZnNldDpmdW5jdGlv bigpe3JldHVybiAnMjFweCc7fSxfZ2V0V2lkdGhPZmZzZXQ6ZnVuY3Rpb24oKXty ZXR1cm4gJzBweCc7fSxnZXRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHt3aWR0aDpG Qi5YRkJNTC5TZW5kLkRpbWVuc2lvbnMud2lkdGgsaGVpZ2h0OkZCLlhGQk1MLlNl bmQuRGltZW5zaW9ucy5oZWlnaHR9O319KTtGQi5wcm92aWRlKCdYRkJNTC5TZW5k Jyx7RGltZW5zaW9uczp7d2lkdGg6ODAsaGVpZ2h0OjI1fX0pOwpGQi5zdWJjbGFz cygnWEZCTUwuTGlrZScsJ1hGQk1MLkVkZ2VXaWRnZXQnLG51bGwse193aWRnZXRQ aXBlRW5hYmxlZDp0cnVlLGdldFVybEJpdHM6ZnVuY3Rpb24oKXtyZXR1cm4ge25h bWU6J2xpa2UnLHBhcmFtczp0aGlzLl9hdHRyfTt9LF9jcmVhdGVFZGdlQ29tbWVu dFdpZGdldDpmdW5jdGlvbihiLGEpe2lmKCdzZW5kJyBpbiB0aGlzLl9hdHRyJiYn d2lkZ2V0X3R5cGUnIGluIGImJmIud2lkZ2V0X3R5cGU9PSdzZW5kJyl7dmFyIGM9 dGhpcy5fZ2V0Q29tbW9uRWRnZUNvbW1lbnRXaWRnZXRPcHRzKGIsYSx0cnVlLHRy dWUpO3JldHVybiBuZXcgRkIuWEZCTUwuU2VuZEJ1dHRvbkZvcm1XaWRnZXQoYyk7 fWVsc2UgcmV0dXJuIHRoaXMuX2NhbGxCYXNlKCJfY3JlYXRlRWRnZUNvbW1lbnRX aWRnZXQiLGIsYSk7fSxnZXRJZnJhbWVUaXRsZTpmdW5jdGlvbigpe3JldHVybiAn TGlrZSB0aGlzIGNvbnRlbnQgb24gRmFjZWJvb2suJzt9fSk7CkZCLnN1YmNsYXNz KCdYRkJNTC5MaWtlQm94JywnWEZCTUwuRWRnZVdpZGdldCcsbnVsbCx7X3Zpc2li bGVBZnRlcjonbG9hZCcsc2V0dXBBbmRWYWxpZGF0ZTpmdW5jdGlvbigpe3RoaXMu X2F0dHI9e2NoYW5uZWw6dGhpcy5nZXRDaGFubmVsVXJsKCksYXBpX2tleTpGQi5f YXBpS2V5LGNvbm5lY3Rpb25zOnRoaXMuZ2V0QXR0cmlidXRlKCdjb25uZWN0aW9u cycpLGNzczp0aGlzLmdldEF0dHJpYnV0ZSgnY3NzJyksaGVpZ2h0OnRoaXMuZ2V0 QXR0cmlidXRlKCdoZWlnaHQnKSxpZDp0aGlzLmdldEF0dHJpYnV0ZSgncHJvZmls ZS1pZCcpLGhlYWRlcjp0aGlzLl9nZXRCb29sQXR0cmlidXRlKCdoZWFkZXInLHRy dWUpLG5hbWU6dGhpcy5nZXRBdHRyaWJ1dGUoJ25hbWUnKSxzaG93X2ZhY2VzOnRo aXMuX2dldEJvb2xBdHRyaWJ1dGUoJ3Nob3ctZmFjZXMnLHRydWUpLHN0cmVhbTp0 aGlzLl9nZXRCb29sQXR0cmlidXRlKCdzdHJlYW0nLHRydWUpLHdpZHRoOnRoaXMu X2dldFB4QXR0cmlidXRlKCd3aWR0aCcsMzAwKSxocmVmOnRoaXMuZ2V0QXR0cmli dXRlKCdocmVmJyksY29sb3JzY2hlbWU6dGhpcy5nZXRBdHRyaWJ1dGUoJ2NvbG9y c2NoZW1lJywnbGlnaHQnKSxib3JkZXJfY29sb3I6dGhpcy5nZXRBdHRyaWJ1dGUo J2JvcmRlcl9jb2xvcicpfTtpZih0aGlzLl9nZXRCb29sQXR0cmlidXRlKCdmb3Jj ZV93YWxsJyxmYWxzZSkpdGhpcy5fYXR0ci5mb3JjZV93YWxsPXRydWU7aWYodGhp cy5fYXR0ci5jb25uZWN0aW9ucz09PScwJyl7dGhpcy5fYXR0ci5zaG93X2ZhY2Vz PWZhbHNlO31lbHNlIGlmKHRoaXMuX2F0dHIuY29ubmVjdGlvbnMpdGhpcy5fYXR0 ci5zaG93X2ZhY2VzPXRydWU7aWYoIXRoaXMuX2F0dHIuaWQmJiF0aGlzLl9hdHRy Lm5hbWUmJiF0aGlzLl9hdHRyLmhyZWYpe0ZCLmxvZygnPGZiOmxpa2UtYm94PiBy ZXF1aXJlcyBvbmUgb2YgdGhlICJpZCIgb3IgIm5hbWUiIGF0dHJpYnV0ZXMuJyk7 cmV0dXJuIGZhbHNlO312YXIgYT10aGlzLl9hdHRyLmhlaWdodDtpZighYSlpZigh dGhpcy5fYXR0ci5zaG93X2ZhY2VzJiYhdGhpcy5fYXR0ci5zdHJlYW0pe2E9NjI7 fWVsc2V7YT05NTtpZih0aGlzLl9hdHRyLnNob3dfZmFjZXMpYSs9MTYzO2lmKHRo aXMuX2F0dHIuc3RyZWFtKWErPTMwMDtpZih0aGlzLl9hdHRyLmhlYWRlciYmdGhp cy5fYXR0ci5oZWFkZXIhPT0nMCcpYSs9MzI7fXRoaXMuX2F0dHIuaGVpZ2h0PWE7 dGhpcy5zdWJzY3JpYmUoJ3hkLmxpa2Vib3hMaWtlZCcsRkIuYmluZCh0aGlzLl9v bkxpa2VkLHRoaXMpKTt0aGlzLnN1YnNjcmliZSgneGQubGlrZWJveFVubGlrZWQn LEZCLmJpbmQodGhpcy5fb25Vbmxpa2VkLHRoaXMpKTtyZXR1cm4gdHJ1ZTt9LGdl dFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4ge3dpZHRoOnRoaXMuX2F0dHIud2lkdGgs aGVpZ2h0OnRoaXMuX2F0dHIuaGVpZ2h0fTt9LGdldFVybEJpdHM6ZnVuY3Rpb24o KXtyZXR1cm4ge25hbWU6J2xpa2Vib3gnLHBhcmFtczp0aGlzLl9hdHRyfTt9LF9v bkxpa2VkOmZ1bmN0aW9uKCl7RkIuSGVscGVyLmZpcmVFdmVudCgnZWRnZS5jcmVh dGUnLHRoaXMpO30sX29uVW5saWtlZDpmdW5jdGlvbigpe0ZCLkhlbHBlci5maXJl RXZlbnQoJ2VkZ2UucmVtb3ZlJyx0aGlzKTt9fSk7CkZCLnN1YmNsYXNzKCdYRkJN TC5MaXZlU3RyZWFtJywnWEZCTUwuSWZyYW1lV2lkZ2V0JyxudWxsLHtfdmlzaWJs ZUFmdGVyOidsb2FkJyxzZXR1cEFuZFZhbGlkYXRlOmZ1bmN0aW9uKCl7dGhpcy5f YXR0cj17YXBwX2lkOnRoaXMuZ2V0QXR0cmlidXRlKCdldmVudC1hcHAtaWQnKSxo ZWlnaHQ6dGhpcy5fZ2V0UHhBdHRyaWJ1dGUoJ2hlaWdodCcsNTAwKSxoaWRlRnJp ZW5kc1RhYjp0aGlzLmdldEF0dHJpYnV0ZSgnaGlkZS1mcmllbmRzLXRhYicpLHJl ZGVzaWduZWQ6dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgncmVkZXNpZ25lZC1zdHJl YW0nKSx3aWR0aDp0aGlzLl9nZXRQeEF0dHJpYnV0ZSgnd2lkdGgnLDQwMCkseGlk OnRoaXMuZ2V0QXR0cmlidXRlKCd4aWQnLCdkZWZhdWx0JyksYWx3YXlzX3Bvc3Rf dG9fZnJpZW5kczp0aGlzLl9nZXRCb29sQXR0cmlidXRlKCdhbHdheXMtcG9zdC10 by1mcmllbmRzJyxmYWxzZSksdmlhX3VybDp0aGlzLmdldEF0dHJpYnV0ZSgndmlh X3VybCcpfTtyZXR1cm4gdHJ1ZTt9LGdldFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4g e3dpZHRoOnRoaXMuX2F0dHIud2lkdGgsaGVpZ2h0OnRoaXMuX2F0dHIuaGVpZ2h0 fTt9LGdldFVybEJpdHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9hdHRyLnJlZGVz aWduZWQ/J2xpdmVfc3RyZWFtX2JveCc6J2xpdmVmZWVkJztyZXR1cm4ge25hbWU6 YSxwYXJhbXM6dGhpcy5fYXR0cn07fX0pOwpGQi5zdWJjbGFzcygnWEZCTUwuTG9n aW4nLCdYRkJNTC5GYWNlcGlsZScsbnVsbCx7X3Zpc2libGVBZnRlcjonbG9hZCcs Z2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB7d2lkdGg6dGhpcy5fYXR0ci53aWR0 aCxoZWlnaHQ6OTR9O30sZ2V0VXJsQml0czpmdW5jdGlvbigpe3JldHVybiB7bmFt ZTonbG9naW4nLHBhcmFtczp0aGlzLl9hdHRyfTt9fSk7CkZCLnN1YmNsYXNzKCdY RkJNTC5Mb2dpbkJ1dHRvbicsJ1hGQk1MLkJ1dHRvbkVsZW1lbnQnLG51bGwse3Nl dHVwQW5kVmFsaWRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9hbHJlYWR5U2V0dXAp cmV0dXJuIHRydWU7dGhpcy5fYWxyZWFkeVNldHVwPXRydWU7dGhpcy5fYXR0cj17 YXV0b2xvZ291dGxpbms6dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgnYXV0by1sb2dv dXQtbGluaycpLGxlbmd0aDp0aGlzLl9nZXRBdHRyaWJ1dGVGcm9tTGlzdCgnbGVu Z3RoJywnc2hvcnQnLFsnbG9uZycsJ3Nob3J0J10pLG9ubG9naW46dGhpcy5nZXRB dHRyaWJ1dGUoJ29uLWxvZ2luJykscGVybXM6dGhpcy5nZXRBdHRyaWJ1dGUoJ3Bl cm1zJyksc2NvcGU6dGhpcy5nZXRBdHRyaWJ1dGUoJ3Njb3BlJykscmVnaXN0cmF0 aW9uX3VybDp0aGlzLmdldEF0dHJpYnV0ZSgncmVnaXN0cmF0aW9uLXVybCcpLHN0 YXR1czondW5rbm93bid9O2lmKHRoaXMuX2F0dHIuYXV0b2xvZ291dGxpbmspRkIu RXZlbnQuc3Vic2NyaWJlKCdhdXRoLnN0YXR1c0NoYW5nZScsRkIuYmluZCh0aGlz LnByb2Nlc3MsdGhpcykpO2lmKHRoaXMuX2F0dHIucmVnaXN0cmF0aW9uX3VybCl7 RkIuRXZlbnQuc3Vic2NyaWJlKCdhdXRoLnN0YXR1c0NoYW5nZScsdGhpcy5fc2F2 ZVN0YXR1cyh0aGlzLnByb2Nlc3MsZmFsc2UpKTtGQi5nZXRMb2dpblN0YXR1cyh0 aGlzLl9zYXZlU3RhdHVzKHRoaXMucHJvY2VzcyxmYWxzZSkpO31yZXR1cm4gdHJ1 ZTt9LGdldEJ1dHRvbk1hcmt1cDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0T3Jp Z2luYWxIVE1MKCk7aWYoYSlyZXR1cm4gYTtpZighdGhpcy5fYXR0ci5yZWdpc3Ry YXRpb25fdXJsKXtpZihGQi5nZXRBY2Nlc3NUb2tlbigpJiZ0aGlzLl9hdHRyLmF1 dG9sb2dvdXRsaW5rKXtyZXR1cm4gRkIuSW50bC5fdHgoIkZhY2Vib29rJ3RhbiBc dTAwYzdcdTAxMzFrXHUwMTMxXHUwMTVmIik7fWVsc2UgaWYoRkIuZ2V0QWNjZXNz VG9rZW4oKSl7cmV0dXJuICcnO31lbHNlIHJldHVybiB0aGlzLl9nZXRMb2dpblRl eHQoKTt9ZWxzZSBzd2l0Y2godGhpcy5fYXR0ci5zdGF0dXMpe2Nhc2UgJ3Vua25v d24nOnJldHVybiB0aGlzLl9nZXRMb2dpblRleHQoKTtjYXNlICdub3RDb25uZWN0 ZWQnOmNhc2UgJ25vdF9hdXRob3JpemVkJzpyZXR1cm4gRkIuSW50bC5fdHgoIkth eWRvbCIpO2Nhc2UgJ2Nvbm5lY3RlZCc6aWYoRkIuZ2V0QWNjZXNzVG9rZW4oKSYm dGhpcy5fYXR0ci5hdXRvbG9nb3V0bGluaylyZXR1cm4gRkIuSW50bC5fdHgoIkZh Y2Vib29rJ3RhbiBcdTAwYzdcdTAxMzFrXHUwMTMxXHUwMTVmIik7cmV0dXJuICcn O2RlZmF1bHQ6RkIubG9nKCdVbmtub3duIHN0YXR1czogJyt0aGlzLl9hdHRyLnN0 YXR1cyk7cmV0dXJuIEZCLkludGwuX3R4KCJHaXJpXHUwMTVmIFlhcCIpO319LF9n ZXRMb2dpblRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXR0ci5sZW5ndGg9 PSdzaG9ydCc/RkIuSW50bC5fdHgoIkdpcmlcdTAxNWYgWWFwIik6RkIuSW50bC5f dHgoIkZhY2Vib29rIGlsZSBHaXJpXHUwMTVmIFlhcCIpO30sb25DbGljazpmdW5j dGlvbigpe2lmKCF0aGlzLl9hdHRyLnJlZ2lzdHJhdGlvbl91cmwpe2lmKCFGQi5n ZXRBY2Nlc3NUb2tlbigpfHwhdGhpcy5fYXR0ci5hdXRvbG9nb3V0bGluayl7RkIu bG9naW4oRkIuYmluZCh0aGlzLl9hdXRoQ2FsbGJhY2ssdGhpcykse3Blcm1zOnRo aXMuX2F0dHIucGVybXMsc2NvcGU6dGhpcy5fYXR0ci5zY29wZX0pO31lbHNlIEZC LmxvZ291dChGQi5iaW5kKHRoaXMuX2F1dGhDYWxsYmFjayx0aGlzKSk7fWVsc2Ug c3dpdGNoKHRoaXMuX2F0dHIuc3RhdHVzKXtjYXNlICd1bmtub3duJzpGQi51aSh7 bWV0aG9kOidhdXRoLmxvZ2ludG9GYWNlYm9vayd9LEZCLmJpbmQoZnVuY3Rpb24o YSl7RkIuYmluZChGQi5nZXRMb2dpblN0YXR1cyh0aGlzLl9zYXZlU3RhdHVzKHRo aXMuX2F1dGhDYWxsYmFjayx0cnVlKSx0cnVlKSx0aGlzKTt9LHRoaXMpKTticmVh aztjYXNlICdub3RDb25uZWN0ZWQnOmNhc2UgJ25vdF9hdXRob3JpemVkJzp3aW5k b3cudG9wLmxvY2F0aW9uPXRoaXMuX2F0dHIucmVnaXN0cmF0aW9uX3VybDticmVh aztjYXNlICdjb25uZWN0ZWQnOmlmKCFGQi5nZXRBY2Nlc3NUb2tlbigpfHwhdGhp cy5fYXR0ci5hdXRvbG9nb3V0bGluayl7dGhpcy5fYXV0aENhbGxiYWNrKCk7fWVs c2UgRkIubG9nb3V0KEZCLmJpbmQodGhpcy5fYXV0aENhbGxiYWNrLHRoaXMpKTti cmVhaztkZWZhdWx0OkZCLmxvZygnVW5rbm93biBzdGF0dXM6ICcrdGhpcy5fYXR0 ci5zdGF0dXMpO319LF9hdXRoQ2FsbGJhY2s6ZnVuY3Rpb24oYSl7RkIuSGVscGVy Lmludm9rZUhhbmRsZXIodGhpcy5fYXR0ci5vbmxvZ2luLHRoaXMsW2FdKTt9LF9z YXZlU3RhdHVzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEZCLmJpbmQoZnVuY3Rpb24o Yyl7aWYoYiYmdGhpcy5fYXR0ci5yZWdpc3RyYXRpb25fdXJsJiYodGhpcy5fYXR0 ci5zdGF0dXM9PSdub3RDb25uZWN0ZWQnfHx0aGlzLl9hdHRyLnN0YXR1cz09J25v dF9hdXRob3JpemVkJykmJihjLnN0YXR1cz09J25vdENvbm5lY3RlZCd8fGMuc3Rh dHVzPT0nbm90X2F1dGhvcml6ZWQnKSl3aW5kb3cudG9wLmxvY2F0aW9uPXRoaXMu X2F0dHIucmVnaXN0cmF0aW9uX3VybDt0aGlzLl9hdHRyLnN0YXR1cz1jLnN0YXR1 cztpZihhKXthPXRoaXMuYmluZChhLHRoaXMpO3JldHVybiBhKGMpO319LHRoaXMp O319KTsKRkIuc3ViY2xhc3MoJ1hGQk1MLk5hbWUnLCdYRkJNTC5FbGVtZW50Jyxu dWxsLHtwcm9jZXNzOmZ1bmN0aW9uKCl7RkIuY29weSh0aGlzLHtfdWlkOnRoaXMu Z2V0QXR0cmlidXRlKCd1aWQnKSxfZmlyc3RuYW1lb25seTp0aGlzLl9nZXRCb29s QXR0cmlidXRlKCdmaXJzdC1uYW1lLW9ubHknKSxfbGFzdG5hbWVvbmx5OnRoaXMu X2dldEJvb2xBdHRyaWJ1dGUoJ2xhc3QtbmFtZS1vbmx5JyksX3Bvc3Nlc3NpdmU6 dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgncG9zc2Vzc2l2ZScpLF9yZWZsZXhpdmU6 dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0ZSgncmVmbGV4aXZlJyksX29iamVjdGl2ZTp0 aGlzLl9nZXRCb29sQXR0cmlidXRlKCdvYmplY3RpdmUnKSxfbGlua2VkOnRoaXMu X2dldEJvb2xBdHRyaWJ1dGUoJ2xpbmtlZCcsdHJ1ZSksX3N1YmplY3RJZDp0aGlz LmdldEF0dHJpYnV0ZSgnc3ViamVjdC1pZCcpfSk7aWYoIXRoaXMuX3VpZCl7RkIu bG9nKCcidWlkIiBpcyBhIHJlcXVpcmVkIGF0dHJpYnV0ZSBmb3IgPGZiOm5hbWU+ Jyk7dGhpcy5maXJlKCdyZW5kZXInKTtyZXR1cm47fXZhciBiPVtdO2lmKHRoaXMu X2ZpcnN0bmFtZW9ubHkpe2IucHVzaCgnZmlyc3RfbmFtZScpO31lbHNlIGlmKHRo aXMuX2xhc3RuYW1lb25seSl7Yi5wdXNoKCdsYXN0X25hbWUnKTt9ZWxzZSBiLnB1 c2goJ25hbWUnKTtpZih0aGlzLl9zdWJqZWN0SWQpe2IucHVzaCgnc2V4Jyk7aWYo dGhpcy5fc3ViamVjdElkPT1GQi5IZWxwZXIuZ2V0TG9nZ2VkSW5Vc2VyKCkpdGhp cy5fcmVmbGV4aXZlPXRydWU7fXZhciBhO0ZCLkV2ZW50Lm1vbml0b3IoJ2F1dGgu c3RhdHVzQ2hhbmdlJyx0aGlzLmJpbmQoZnVuY3Rpb24oKXtpZighdGhpcy5pc1Zh bGlkKCkpe3RoaXMuZmlyZSgncmVuZGVyJyk7cmV0dXJuIHRydWU7fWlmKCF0aGlz Ll91aWR8fHRoaXMuX3VpZD09J2xvZ2dlZGludXNlcicpdGhpcy5fdWlkPUZCLkhl bHBlci5nZXRMb2dnZWRJblVzZXIoKTtpZighdGhpcy5fdWlkKXJldHVybjtpZihG Qi5IZWxwZXIuaXNVc2VyKHRoaXMuX3VpZCkpe2E9RkIuRGF0YS5fc2VsZWN0QnlJ bmRleChiLCd1c2VyJywndWlkJyx0aGlzLl91aWQpO31lbHNlIGE9RkIuRGF0YS5f c2VsZWN0QnlJbmRleChbJ25hbWUnLCdpZCddLCdwcm9maWxlJywnaWQnLHRoaXMu X3VpZCk7YS53YWl0KHRoaXMuYmluZChmdW5jdGlvbihjKXtpZih0aGlzLl9zdWJq ZWN0SWQ9PXRoaXMuX3VpZCl7dGhpcy5fcmVuZGVyUHJvbm91bihjWzBdKTt9ZWxz ZSB0aGlzLl9yZW5kZXJPdGhlcihjWzBdKTt0aGlzLmZpcmUoJ3JlbmRlcicpO30p KTt9KSk7fSxfcmVuZGVyUHJvbm91bjpmdW5jdGlvbihiKXt2YXIgYz0nJyxhPXRo aXMuX29iamVjdGl2ZTtpZih0aGlzLl9zdWJqZWN0SWQpe2E9dHJ1ZTtpZih0aGlz Ll9zdWJqZWN0SWQ9PT10aGlzLl91aWQpdGhpcy5fcmVmbGV4aXZlPXRydWU7fWlm KHRoaXMuX3VpZD09RkIuQ29ubmVjdC5nZXRfbG9nZ2VkSW5Vc2VyKCkmJnRoaXMu X2dldEJvb2xBdHRyaWJ1dGUoJ3VzZS15b3UnLHRydWUpKXtpZih0aGlzLl9wb3Nz ZXNzaXZlKXtpZih0aGlzLl9yZWZsZXhpdmUpe2M9J3lvdXIgb3duJzt9ZWxzZSBj PSd5b3VyJzt9ZWxzZSBpZih0aGlzLl9yZWZsZXhpdmUpe2M9J3lvdXJzZWxmJzt9 ZWxzZSBjPSd5b3UnO31lbHNlIHN3aXRjaChiLnNleCl7Y2FzZSAnbWFsZSc6aWYo dGhpcy5fcG9zc2Vzc2l2ZSl7Yz10aGlzLl9yZWZsZXhpdmU/J2hpcyBvd24nOido aXMnO31lbHNlIGlmKHRoaXMuX3JlZmxleGl2ZSl7Yz0naGltc2VsZic7fWVsc2Ug aWYoYSl7Yz0naGltJzt9ZWxzZSBjPSdoZSc7YnJlYWs7Y2FzZSAnZmVtYWxlJzpp Zih0aGlzLl9wb3NzZXNzaXZlKXtjPXRoaXMuX3JlZmxleGl2ZT8naGVyIG93bic6 J2hlcic7fWVsc2UgaWYodGhpcy5fcmVmbGV4aXZlKXtjPSdoZXJzZWxmJzt9ZWxz ZSBpZihhKXtjPSdoZXInO31lbHNlIGM9J3NoZSc7YnJlYWs7ZGVmYXVsdDppZih0 aGlzLl9nZXRCb29sQXR0cmlidXRlKCd1c2UtdGhleScsdHJ1ZSkpe2lmKHRoaXMu X3Bvc3Nlc3NpdmUpe2lmKHRoaXMuX3JlZmxleGl2ZSl7Yz0ndGhlaXIgb3duJzt9 ZWxzZSBjPSd0aGVpcic7fWVsc2UgaWYodGhpcy5fcmVmbGV4aXZlKXtjPSd0aGVt c2VsdmVzJzt9ZWxzZSBpZihhKXtjPSd0aGVtJzt9ZWxzZSBjPSd0aGV5Jzt9ZWxz ZSBpZih0aGlzLl9wb3NzZXNzaXZlKXtpZih0aGlzLl9yZWZsZXhpdmUpe2M9J2hp cy9oZXIgb3duJzt9ZWxzZSBjPSdoaXMvaGVyJzt9ZWxzZSBpZih0aGlzLl9yZWZs ZXhpdmUpe2M9J2hpbXNlbGYvaGVyc2VsZic7fWVsc2UgaWYoYSl7Yz0naGltL2hl cic7fWVsc2UgYz0naGUvc2hlJzticmVhazt9aWYodGhpcy5fZ2V0Qm9vbEF0dHJp YnV0ZSgnY2FwaXRhbGl6ZScsZmFsc2UpKWM9RkIuSGVscGVyLnVwcGVyQ2FzZUZp cnN0Q2hhcihjKTt0aGlzLmRvbS5pbm5lckhUTUw9Yzt9LF9yZW5kZXJPdGhlcjpm dW5jdGlvbihjKXt2YXIgYj0nJyxhPScnO2lmKHRoaXMuX3VpZD09RkIuSGVscGVy LmdldExvZ2dlZEluVXNlcigpJiZ0aGlzLl9nZXRCb29sQXR0cmlidXRlKCd1c2Ut eW91Jyx0cnVlKSl7aWYodGhpcy5fcmVmbGV4aXZlKXtpZih0aGlzLl9wb3NzZXNz aXZlKXtiPSd5b3VyIG93bic7fWVsc2UgYj0neW91cnNlbGYnO31lbHNlIGlmKHRo aXMuX3Bvc3Nlc3NpdmUpe2I9J3lvdXInO31lbHNlIGI9J3lvdSc7fWVsc2UgaWYo Yyl7aWYobnVsbD09PWMuZmlyc3RfbmFtZSljLmZpcnN0X25hbWU9Jyc7aWYobnVs bD09PWMubGFzdF9uYW1lKWMubGFzdF9uYW1lPScnO2lmKHRoaXMuX2ZpcnN0bmFt ZW9ubHkmJmMuZmlyc3RfbmFtZSE9PXVuZGVmaW5lZCl7Yj1GQi5TdHJpbmcuZXNj YXBlSFRNTChjLmZpcnN0X25hbWUpO31lbHNlIGlmKHRoaXMuX2xhc3RuYW1lb25s eSYmYy5sYXN0X25hbWUhPT11bmRlZmluZWQpYj1GQi5TdHJpbmcuZXNjYXBlSFRN TChjLmxhc3RfbmFtZSk7aWYoIWIpYj1GQi5TdHJpbmcuZXNjYXBlSFRNTChjLm5h bWUpO2lmKGIhPT0nJyYmdGhpcy5fcG9zc2Vzc2l2ZSliKz0nXCdzJzt9aWYoIWIp Yj1GQi5TdHJpbmcuZXNjYXBlSFRNTCh0aGlzLmdldEF0dHJpYnV0ZSgnaWYtY2Fu dC1zZWUnLCdGYWNlYm9vayBVc2VyJykpO2lmKGIpe2lmKHRoaXMuX2dldEJvb2xB dHRyaWJ1dGUoJ2NhcGl0YWxpemUnLGZhbHNlKSliPUZCLkhlbHBlci51cHBlckNh c2VGaXJzdENoYXIoYik7aWYoYyYmdGhpcy5fbGlua2VkKXthPUZCLkhlbHBlci5n ZXRQcm9maWxlTGluayhjLGIsdGhpcy5nZXRBdHRyaWJ1dGUoJ2hyZWYnLG51bGwp KTt9ZWxzZSBhPWI7fXRoaXMuZG9tLmlubmVySFRNTD1hO319KTsKRkIuc3ViY2xh c3MoJ1hGQk1MLlByb2ZpbGVQaWMnLCdYRkJNTC5FbGVtZW50JyxudWxsLHtwcm9j ZXNzOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5nZXRBdHRyaWJ1dGUoJ3NpemUnLCd0 aHVtYicpLGI9RkIuWEZCTUwuUHJvZmlsZVBpYy5fc2l6ZVRvUGljRmllbGRNYXBb ZF0sZz10aGlzLl9nZXRQeEF0dHJpYnV0ZSgnd2lkdGgnKSxhPXRoaXMuX2dldFB4 QXR0cmlidXRlKCdoZWlnaHQnKSxlPXRoaXMuZG9tLnN0eWxlLGY9dGhpcy5nZXRB dHRyaWJ1dGUoJ3VpZCcpO2lmKHRoaXMuX2dldEJvb2xBdHRyaWJ1dGUoJ2ZhY2Vi b29rLWxvZ28nKSliKz0nX3dpdGhfbG9nbyc7aWYoZyl7Zz1nKydweCc7ZS53aWR0 aD1nO31pZihhKXthPWErJ3B4JztlLmhlaWdodD1hO312YXIgYz10aGlzLmJpbmQo ZnVuY3Rpb24oail7dmFyIGw9aj9qWzBdOm51bGwsaT1sP2xbYl06bnVsbDtpZigh aSlpPUZCLmdldERvbWFpbignY2RuJykrRkIuWEZCTUwuUHJvZmlsZVBpYy5fZGVm UGljTWFwW2JdO3ZhciBrPSgoZz8nd2lkdGg6JytnKyc7JzonJykrKGE/J2hlaWdo dDonK2crJzsnOicnKSksaD1GQi5TdHJpbmcuZm9ybWF0KCc8aW1nIHNyYz0iezB9 IiBhbHQ9InsxfSIgdGl0bGU9InsxfSIgc3R5bGU9InsyfSIgY2xhc3M9InszfSIg Lz4nLGksbD9GQi5TdHJpbmcuZXNjYXBlSFRNTChsLm5hbWUpOicnLGssdGhpcy5k b20uY2xhc3NOYW1lKTtpZih0aGlzLl9nZXRCb29sQXR0cmlidXRlKCdsaW5rZWQn LHRydWUpKWg9RkIuSGVscGVyLmdldFByb2ZpbGVMaW5rKGwsaCx0aGlzLmdldEF0 dHJpYnV0ZSgnaHJlZicsbnVsbCkpO3RoaXMuZG9tLmlubmVySFRNTD1oO0ZCLkRv bS5hZGRDc3ModGhpcy5kb20sJ2ZiX3Byb2ZpbGVfcGljX3JlbmRlcmVkJyk7dGhp cy5maXJlKCdyZW5kZXInKTt9KTtGQi5FdmVudC5tb25pdG9yKCdhdXRoLnN0YXR1 c0NoYW5nZScsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNWYWxpZCgp KXt0aGlzLmZpcmUoJ3JlbmRlcicpO3JldHVybiB0cnVlO31pZih0aGlzLmdldEF0 dHJpYnV0ZSgndWlkJyxudWxsKT09J2xvZ2dlZGludXNlcicpZj1GQi5IZWxwZXIu Z2V0TG9nZ2VkSW5Vc2VyKCk7aWYoRkIuX3VzZXJTdGF0dXMmJmYpe0ZCLkRhdGEu X3NlbGVjdEJ5SW5kZXgoWyduYW1lJyxiXSxGQi5IZWxwZXIuaXNVc2VyKGYpPyd1 c2VyJzoncHJvZmlsZScsRkIuSGVscGVyLmlzVXNlcihmKT8ndWlkJzonaWQnLGYp LndhaXQoYyk7fWVsc2UgYygpO30pKTt9fSk7RkIucHJvdmlkZSgnWEZCTUwuUHJv ZmlsZVBpYycse19kZWZQaWNNYXA6e3BpYzoncGljcy9zX3NpbGhvdWV0dGUuanBn JyxwaWNfYmlnOidwaWNzL2Rfc2lsaG91ZXR0ZS5naWYnLHBpY19iaWdfd2l0aF9s b2dvOidwaWNzL2Rfc2lsaG91ZXR0ZV9sb2dvLmdpZicscGljX3NtYWxsOidwaWNz L3Rfc2lsaG91ZXR0ZS5qcGcnLHBpY19zbWFsbF93aXRoX2xvZ286J3BpY3MvdF9z aWxob3VldHRlX2xvZ28uZ2lmJyxwaWNfc3F1YXJlOidwaWNzL3Ffc2lsaG91ZXR0 ZS5naWYnLHBpY19zcXVhcmVfd2l0aF9sb2dvOidwaWNzL3Ffc2lsaG91ZXR0ZV9s b2dvLmdpZicscGljX3dpdGhfbG9nbzoncGljcy9zX3NpbGhvdWV0dGVfbG9nby5n aWYnfSxfc2l6ZVRvUGljRmllbGRNYXA6e246J3BpY19iaWcnLG5vcm1hbDoncGlj X2JpZycscToncGljX3NxdWFyZScsczoncGljJyxzbWFsbDoncGljJyxzcXVhcmU6 J3BpY19zcXVhcmUnLHQ6J3BpY19zbWFsbCcsdGh1bWI6J3BpY19zbWFsbCd9fSk7 CkZCLnN1YmNsYXNzKCdYRkJNTC5RdWVzdGlvbicsJ1hGQk1MLklmcmFtZVdpZGdl dCcsbnVsbCx7X3Zpc2libGVBZnRlcjonbG9hZCcsc2V0dXBBbmRWYWxpZGF0ZTpm dW5jdGlvbigpe3RoaXMuX2F0dHI9e2NoYW5uZWw6dGhpcy5nZXRDaGFubmVsVXJs KCksYXBpX2tleTpGQi5fYXBpS2V5LHBlcm1hbGluazp0aGlzLmdldEF0dHJpYnV0 ZSgncGVybWFsaW5rJyksd2lkdGg6dGhpcy5fZ2V0UHhBdHRyaWJ1dGUoJ3dpZHRo Jyw0MDApLGhlaWdodDowfTt0aGlzLnN1YnNjcmliZSgneGQuZmlyc3RWb3RlJyxG Qi5iaW5kKHRoaXMuX29uSW5pdGlhbFZvdGUsdGhpcykpO3RoaXMuc3Vic2NyaWJl KCd4ZC52b3RlJyxGQi5iaW5kKHRoaXMuX29uQ2hhbmdlZFZvdGUsdGhpcykpO3Jl dHVybiB0cnVlO30sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB7d2lkdGg6dGhp cy5fYXR0ci53aWR0aCxoZWlnaHQ6dGhpcy5fYXR0ci5oZWlnaHR9O30sZ2V0VXJs Qml0czpmdW5jdGlvbigpe3JldHVybiB7bmFtZToncXVlc3Rpb24nLHBhcmFtczp0 aGlzLl9hdHRyfTt9LF9vbkluaXRpYWxWb3RlOmZ1bmN0aW9uKGEpe0ZCLkV2ZW50 LmZpcmUoJ3F1ZXN0aW9uLmZpcnN0Vm90ZScsdGhpcy5fYXR0ci5wZXJtYWxpbmss YS52b3RlKTt9LF9vbkNoYW5nZWRWb3RlOmZ1bmN0aW9uKGEpe0ZCLkV2ZW50LmZp cmUoJ3F1ZXN0aW9uLnZvdGUnLHRoaXMuX2F0dHIucGVybWFsaW5rLGEudm90ZSk7 fX0pOwpGQi5zdWJjbGFzcygnWEZCTUwuUmVjb21tZW5kYXRpb25zJywnWEZCTUwu SWZyYW1lV2lkZ2V0JyxudWxsLHtfdmlzaWJsZUFmdGVyOidsb2FkJyxfcmVmcmVz aE9uQXV0aENoYW5nZTp0cnVlLHNldHVwQW5kVmFsaWRhdGU6ZnVuY3Rpb24oKXt0 aGlzLl9hdHRyPXtib3JkZXJfY29sb3I6dGhpcy5nZXRBdHRyaWJ1dGUoJ2JvcmRl ci1jb2xvcicpLGNvbG9yc2NoZW1lOnRoaXMuZ2V0QXR0cmlidXRlKCdjb2xvci1z Y2hlbWUnKSxmaWx0ZXI6dGhpcy5nZXRBdHRyaWJ1dGUoJ2ZpbHRlcicpLGZvbnQ6 dGhpcy5nZXRBdHRyaWJ1dGUoJ2ZvbnQnKSxhY3Rpb246dGhpcy5nZXRBdHRyaWJ1 dGUoJ2FjdGlvbicpLGxpbmt0YXJnZXQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ2xpbmt0 YXJnZXQnLCdfYmxhbmsnKSxtYXhfYWdlOnRoaXMuZ2V0QXR0cmlidXRlKCdtYXhf YWdlJyksaGVhZGVyOnRoaXMuX2dldEJvb2xBdHRyaWJ1dGUoJ2hlYWRlcicpLGhl aWdodDp0aGlzLl9nZXRQeEF0dHJpYnV0ZSgnaGVpZ2h0JywzMDApLHNpdGU6dGhp cy5nZXRBdHRyaWJ1dGUoJ3NpdGUnLGxvY2F0aW9uLmhvc3RuYW1lKSx3aWR0aDp0 aGlzLl9nZXRQeEF0dHJpYnV0ZSgnd2lkdGgnLDMwMCl9O3JldHVybiB0cnVlO30s Z2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB7d2lkdGg6dGhpcy5fYXR0ci53aWR0 aCxoZWlnaHQ6dGhpcy5fYXR0ci5oZWlnaHR9O30sZ2V0VXJsQml0czpmdW5jdGlv bigpe3JldHVybiB7bmFtZToncmVjb21tZW5kYXRpb25zJyxwYXJhbXM6dGhpcy5f YXR0cn07fX0pOwpGQi5zdWJjbGFzcygnWEZCTUwuUmVjb21tZW5kYXRpb25zQmFy JywnWEZCTUwuSWZyYW1lV2lkZ2V0JyxudWxsLHtnZXRVcmxCaXRzOmZ1bmN0aW9u KCl7cmV0dXJuIHtuYW1lOidyZWNvbW1lbmRhdGlvbnNfYmFyJyxwYXJhbXM6dGhp cy5fYXR0cn07fSxzZXR1cEFuZFZhbGlkYXRlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24g YihrLGope3ZhciBsPTA7dmFyIG09bnVsbDtmdW5jdGlvbiBuKCl7aigpO209bnVs bDtsPShuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7fXJldHVybiBmdW5jdGlvbigpe2lm KCFtKXt2YXIgbz0obmV3IERhdGUoKSkuZ2V0VGltZSgpO2lmKG8tbDxrKXttPXdp bmRvdy5zZXRUaW1lb3V0KG4say0oby1sKSk7fWVsc2UgbigpO31yZXR1cm4gdHJ1 ZTt9O31mdW5jdGlvbiBoKGspe2lmKGsubWF0Y2goL15cZCsoPzpcLlxkKyk/JSQv KSl7dmFyIGo9TWF0aC5taW4oTWF0aC5tYXgocGFyc2VJbnQoaywxMCksMCksMTAw KTtrPWovMTAwO31lbHNlIGlmKGshPSdtYW51YWwnJiZrIT0nb252aXNpYmxlJylr PSdvbnZpc2libGUnO3JldHVybiBrO31mdW5jdGlvbiBmKGope3JldHVybiBNYXRo Lm1heChwYXJzZUludChqLDEwKXx8MzAsMTApO31mdW5jdGlvbiBnKGope2lmKGo9 PSdsZWZ0J3x8aj09J3JpZ2h0JylyZXR1cm4gajtyZXR1cm4gRkIuX2xvY2FsZUlz UnRsPydsZWZ0JzoncmlnaHQnO310aGlzLl9hdHRyPXtjaGFubmVsOnRoaXMuZ2V0 Q2hhbm5lbFVybCgpLGFwaV9rZXk6RkIuX2FwaUtleSxmb250OnRoaXMuZ2V0QXR0 cmlidXRlKCdmb250JyksY29sb3JzY2hlbWU6dGhpcy5nZXRBdHRyaWJ1dGUoJ2Nv bG9yc2NoZW1lJyksaHJlZjpGQi5VUkkucmVzb2x2ZSh0aGlzLmdldEF0dHJpYnV0 ZSgnaHJlZicpKSxzaWRlOmcodGhpcy5nZXRBdHRyaWJ1dGUoJ3NpZGUnKSksc2l0 ZTp0aGlzLmdldEF0dHJpYnV0ZSgnc2l0ZScpLGFjdGlvbjp0aGlzLmdldEF0dHJp YnV0ZSgnYWN0aW9uJykscmVmOnRoaXMuZ2V0QXR0cmlidXRlKCdyZWYnKSx0cmln Z2VyOmgodGhpcy5nZXRBdHRyaWJ1dGUoJ3RyaWdnZXInLCcnKSkscmVhZF90aW1l OmYodGhpcy5nZXRBdHRyaWJ1dGUoJ3JlYWRfdGltZScpKX07RkIuX2luUGx1Z2lu PXRydWU7dGhpcy5fc2hvd0xvYWRlcj1mYWxzZTt0aGlzLnN1YnNjcmliZSgnaWZy YW1lLm9ubG9hZCcsRkIuYmluZChmdW5jdGlvbigpe3ZhciBqPXRoaXMuZG9tLmNo aWxkcmVuWzBdO2ouY2xhc3NOYW1lPSdmYnBsdWdpbnJlY29tbWVuZGF0aW9uc2Jh cicrdGhpcy5fYXR0ci5zaWRlO30sdGhpcykpO3ZhciBhPUZCLmJpbmQoZnVuY3Rp b24oKXtGQi5FdmVudC51bmxpc3Rlbih3aW5kb3csJ3Njcm9sbCcsYSk7RkIuRXZl bnQudW5saXN0ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdjbGljaycsYSk7 RkIuRXZlbnQudW5saXN0ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdtb3Vz ZW1vdmUnLGEpO3dpbmRvdy5zZXRUaW1lb3V0KEZCLmJpbmQodGhpcy5hcmJpdGVy SW5mb3JtLHRoaXMsJ3BsYXRmb3JtL3BsdWdpbnMvcmVjb21tZW5kYXRpb25zX2Jh ci9hY3Rpb24nLG51bGwsRkIuQXJiaXRlci5CRUhBVklPUl9TVEFURSksdGhpcy5f YXR0ci5yZWFkX3RpbWUqMTAwMCk7cmV0dXJuIHRydWU7fSx0aGlzKTtGQi5FdmVu dC5saXN0ZW4od2luZG93LCdzY3JvbGwnLGEpO0ZCLkV2ZW50Lmxpc3Rlbihkb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQsJ2NsaWNrJyxhKTtGQi5FdmVudC5saXN0ZW4o ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdtb3VzZW1vdmUnLGEpO2lmKHRoaXMu X2F0dHIudHJpZ2dlcj09Im1hbnVhbCIpe3ZhciBjPUZCLmJpbmQoZnVuY3Rpb24o ail7aWYoaj09dGhpcy5fYXR0ci5ocmVmKXtGQi5FdmVudC51bnN1YnNjcmliZSgn eGZibWwucmVjb21tZW5kYXRpb25zYmFyLnJlYWQnLGMpO3RoaXMuYXJiaXRlcklu Zm9ybSgncGxhdGZvcm0vcGx1Z2lucy9yZWNvbW1lbmRhdGlvbnNfYmFyL3RyaWdn ZXInLG51bGwsRkIuQXJiaXRlci5CRUhBVklPUl9TVEFURSk7fXJldHVybiB0cnVl O30sdGhpcyk7RkIuRXZlbnQuc3Vic2NyaWJlKCd4ZmJtbC5yZWNvbW1lbmRhdGlv bnNiYXIucmVhZCcsYyk7fWVsc2V7dmFyIGU9Yig1MDAsRkIuYmluZChmdW5jdGlv bigpe2lmKHRoaXMuY2FsY3VsYXRlVmlzaWJpbGl0eSgpKXtGQi5FdmVudC51bmxp c3Rlbih3aW5kb3csJ3Njcm9sbCcsZSk7RkIuRXZlbnQudW5saXN0ZW4od2luZG93 LCdyZXNpemUnLGUpO3RoaXMuYXJiaXRlckluZm9ybSgncGxhdGZvcm0vcGx1Z2lu cy9yZWNvbW1lbmRhdGlvbnNfYmFyL3RyaWdnZXInLG51bGwsRkIuQXJiaXRlci5C RUhBVklPUl9TVEFURSk7fXJldHVybiB0cnVlO30sdGhpcykpO0ZCLkV2ZW50Lmxp c3Rlbih3aW5kb3csJ3Njcm9sbCcsZSk7RkIuRXZlbnQubGlzdGVuKHdpbmRvdywn cmVzaXplJyxlKTtlKCk7fXRoaXMudmlzaWJsZT1mYWxzZTt2YXIgaT1iKDUwMCxG Qi5iaW5kKGZ1bmN0aW9uKCl7aWYoIXRoaXMudmlzaWJsZSYmdGhpcy5jYWxjdWxh dGVWaXNpYmlsaXR5KCkpe3RoaXMudmlzaWJsZT10cnVlO3RoaXMuYXJiaXRlcklu Zm9ybSgncGxhdGZvcm0vcGx1Z2lucy9yZWNvbW1lbmRhdGlvbnNfYmFyL3Zpc2li bGUnKTt9ZWxzZSBpZih0aGlzLnZpc2libGUmJiF0aGlzLmNhbGN1bGF0ZVZpc2li aWxpdHkoKSl7dGhpcy52aXNpYmxlPWZhbHNlO3RoaXMuYXJiaXRlckluZm9ybSgn cGxhdGZvcm0vcGx1Z2lucy9yZWNvbW1lbmRhdGlvbnNfYmFyL2ludmlzaWJsZScp O31yZXR1cm4gdHJ1ZTt9LHRoaXMpKTtGQi5FdmVudC5saXN0ZW4od2luZG93LCdz Y3JvbGwnLGkpO0ZCLkV2ZW50Lmxpc3Rlbih3aW5kb3csJ3Jlc2l6ZScsaSk7aSgp O3RoaXMuZm9jdXNlZD10cnVlO3ZhciBkPUZCLmJpbmQoZnVuY3Rpb24oKXt0aGlz LmZvY3VzZWQ9IXRoaXMuZm9jdXNlZDtyZXR1cm4gdHJ1ZTt9LHRoaXMpO0ZCLkV2 ZW50Lmxpc3Rlbih3aW5kb3csJ2JsdXInLGQpO0ZCLkV2ZW50Lmxpc3Rlbih3aW5k b3csJ2ZvY3VzJyxkKTt0aGlzLnJlc2l6ZV9ydW5uaW5nPWZhbHNlO3RoaXMuYW5p bWF0ZT1mYWxzZTt0aGlzLnN1YnNjcmliZSgneGQuc2lnbmFsX2FuaW1hdGlvbics RkIuYmluZChmdW5jdGlvbigpe3RoaXMuYW5pbWF0ZT10cnVlO30sdGhpcykpO3Jl dHVybiB0cnVlO30sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB7aGVpZ2h0OjI1 LHdpZHRoOih0aGlzLl9hdHRyLmFjdGlvbj09J3JlY29tbWVuZCc/MTQwOjk2KX07 fSxjYWxjdWxhdGVWaXNpYmlsaXR5OmZ1bmN0aW9uKCl7dmFyIGI9ZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtpZighdGhpcy5mb2N1c2VkJiZ3 aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUuZmlyZWJ1ZylyZXR1cm4gdGhp cy52aXNpYmxlO3N3aXRjaCh0aGlzLl9hdHRyLnRyaWdnZXIpe2Nhc2UgIm1hbnVh bCI6cmV0dXJuIGZhbHNlO2Nhc2UgIm9udmlzaWJsZSI6dmFyIGE9dGhpcy5kb20u Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO3JldHVybiBhPD1iO2RlZmF1bHQ6 dmFyIGQ9d2luZG93LnBhZ2VZT2Zmc2V0fHxkb2N1bWVudC5ib2R5LnNjcm9sbFRv cDt2YXIgYz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0O3Jl dHVybiAoZCtiKS9jPj10aGlzLl9hdHRyLnRyaWdnZXI7fX0sX2hhbmRsZVJlc2l6 ZU1zZzpmdW5jdGlvbihhKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuO2lmKGEu d2lkdGgpdGhpcy5nZXRJZnJhbWVOb2RlKCkuc3R5bGUud2lkdGg9YS53aWR0aCsn cHgnO2lmKGEuaGVpZ2h0KXt0aGlzLl9zZXROZXh0UmVzaXplKGEuaGVpZ2h0KTt0 aGlzLl9jaGVja05leHRSZXNpemUoKTt9dGhpcy5fbWFrZVZpc2libGUoKTt9LF9z ZXROZXh0UmVzaXplOmZ1bmN0aW9uKGEpe3RoaXMubmV4dF9yZXNpemU9YTt9LF9j aGVja05leHRSZXNpemU6ZnVuY3Rpb24oKXtpZighdGhpcy5uZXh0X3Jlc2l6ZXx8 dGhpcy5yZXNpemVfcnVubmluZylyZXR1cm47dmFyIGI9dGhpcy5nZXRJZnJhbWVO b2RlKCk7dmFyIGE9dGhpcy5uZXh0X3Jlc2l6ZTt0aGlzLm5leHRfcmVzaXplPW51 bGw7aWYodGhpcy5hbmltYXRlKXt0aGlzLmFuaW1hdGU9ZmFsc2U7dGhpcy5yZXNp emVfcnVubmluZz10cnVlO0ZCLkFuaW0uYXRlKGIse2hlaWdodDphKydweCd9LDMw MCxGQi5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5yZXNpemVfcnVubmluZz1mYWxzZTt0 aGlzLl9jaGVja05leHRSZXNpemUoKTt9LHRoaXMpKTt9ZWxzZSBiLnN0eWxlLmhl aWdodD1hKydweCc7fX0pO0ZCLlhGQk1MLlJlY29tbWVuZGF0aW9uc0Jhci5tYXJr UmVhZD1mdW5jdGlvbihhKXtGQi5FdmVudC5maXJlKCd4ZmJtbC5yZWNvbW1lbmRh dGlvbnNiYXIucmVhZCcsYXx8d2luZG93LmxvY2F0aW9uLmhyZWYpO307CkZCLnN1 YmNsYXNzKCdYRkJNTC5SZWdpc3RyYXRpb24nLCdYRkJNTC5JZnJhbWVXaWRnZXQn LG51bGwse192aXNpYmxlQWZ0ZXI6J2ltbWVkaWF0ZScsX2Jhc2VIZWlnaHQ6MTY3 LF9maWVsZEhlaWdodDoyOCxfc2tpbm55V2lkdGg6NTIwLF9za2lubnlCYXNlSGVp Z2h0OjE3Myxfc2tpbm55RmllbGRIZWlnaHQ6NTIsc2V0dXBBbmRWYWxpZGF0ZTpm dW5jdGlvbigpe3RoaXMuX2F0dHI9e2FjdGlvbjp0aGlzLmdldEF0dHJpYnV0ZSgn YWN0aW9uJyksYm9yZGVyX2NvbG9yOnRoaXMuZ2V0QXR0cmlidXRlKCdib3JkZXIt Y29sb3InKSxjaGFubmVsX3VybDp0aGlzLmdldENoYW5uZWxVcmwoKSxjbGllbnRf aWQ6RkIuX2FwaUtleSxmYl9vbmx5OnRoaXMuX2dldEJvb2xBdHRyaWJ1dGUoJ2Zi LW9ubHknLGZhbHNlKSxmYl9yZWdpc3Rlcjp0aGlzLl9nZXRCb29sQXR0cmlidXRl KCdmYi1yZWdpc3RlcicsZmFsc2UpLGZpZWxkczp0aGlzLmdldEF0dHJpYnV0ZSgn ZmllbGRzJyksaGVpZ2h0OnRoaXMuX2dldFB4QXR0cmlidXRlKCdoZWlnaHQnKSxy ZWRpcmVjdF91cmk6dGhpcy5nZXRBdHRyaWJ1dGUoJ3JlZGlyZWN0LXVyaScsd2lu ZG93LmxvY2F0aW9uLmhyZWYpLG5vX2Zvb3Rlcjp0aGlzLl9nZXRCb29sQXR0cmli dXRlKCduby1mb290ZXInKSxub19oZWFkZXI6dGhpcy5fZ2V0Qm9vbEF0dHJpYnV0 ZSgnbm8taGVhZGVyJyksb252YWxpZGF0ZTp0aGlzLmdldEF0dHJpYnV0ZSgnb252 YWxpZGF0ZScpLHdpZHRoOnRoaXMuX2dldFB4QXR0cmlidXRlKCd3aWR0aCcsNjAw KSx0YXJnZXQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ3RhcmdldCcpfTtpZih0aGlzLl9h dHRyLm9udmFsaWRhdGUpdGhpcy5zdWJzY3JpYmUoJ3hkLnZhbGlkYXRlJyx0aGlz LmJpbmQoZnVuY3Rpb24oYil7dmFyIGQ9RkIuSlNPTi5wYXJzZShiLnZhbHVlKTt2 YXIgYT10aGlzLmJpbmQoZnVuY3Rpb24oZSl7RkIuQXJiaXRlci5pbmZvcm0oJ1Jl Z2lzdHJhdGlvbi5WYWxpZGF0aW9uJyx7ZXJyb3JzOmUsaWQ6Yi5pZH0sJ3BhcmVu dC5mcmFtZXNbIicrdGhpcy5nZXRJZnJhbWVOb2RlKCkubmFtZSsnIl0nLHRoaXMu X2F0dHIuY2hhbm5lbF91cmwuc3Vic3RyaW5nKDAsNSk9PSJodHRwcyIpO30pO3Zh ciBjPUZCLkhlbHBlci5leGVjdXRlRnVuY3Rpb25CeU5hbWUodGhpcy5fYXR0ci5v bnZhbGlkYXRlLGQsYSk7aWYoYylhKGMpO30pKTt0aGlzLnN1YnNjcmliZSgneGQu YXV0aExvZ2luJyxGQi5iaW5kKHRoaXMuX29uQXV0aExvZ2luLHRoaXMpKTt0aGlz LnN1YnNjcmliZSgneGQuYXV0aExvZ291dCcsRkIuYmluZCh0aGlzLl9vbkF1dGhM b2dvdXQsdGhpcykpO3JldHVybiB0cnVlO30sZ2V0U2l6ZTpmdW5jdGlvbigpe3Jl dHVybiB7d2lkdGg6dGhpcy5fYXR0ci53aWR0aCxoZWlnaHQ6dGhpcy5fZ2V0SGVp Z2h0KCl9O30sX2dldEhlaWdodDpmdW5jdGlvbigpe2lmKHRoaXMuX2F0dHIuaGVp Z2h0KXJldHVybiB0aGlzLl9hdHRyLmhlaWdodDt2YXIgYjtpZighdGhpcy5fYXR0 ci5maWVsZHMpe2I9WyduYW1lJ107fWVsc2UgdHJ5e2I9RkIuSlNPTi5wYXJzZSh0 aGlzLl9hdHRyLmZpZWxkcyk7fWNhdGNoKGEpe2I9dGhpcy5fYXR0ci5maWVsZHMu c3BsaXQoLywvKTt9aWYodGhpcy5fYXR0ci53aWR0aDx0aGlzLl9za2lubnlXaWR0 aCl7cmV0dXJuIHRoaXMuX3NraW5ueUJhc2VIZWlnaHQrYi5sZW5ndGgqdGhpcy5f c2tpbm55RmllbGRIZWlnaHQ7fWVsc2UgcmV0dXJuIHRoaXMuX2Jhc2VIZWlnaHQr Yi5sZW5ndGgqdGhpcy5fZmllbGRIZWlnaHQ7fSxnZXRVcmxCaXRzOmZ1bmN0aW9u KCl7cmV0dXJuIHtuYW1lOidyZWdpc3RyYXRpb24nLHBhcmFtczp0aGlzLl9hdHRy fTt9LGdldERlZmF1bHRXZWJEb21haW46ZnVuY3Rpb24oKXtyZXR1cm4gJ2h0dHBz X3d3dyc7fSxfb25BdXRoTG9naW46ZnVuY3Rpb24oKXtpZighRkIuZ2V0U2Vzc2lv bigpKUZCLmdldExvZ2luU3RhdHVzKCk7RkIuSGVscGVyLmZpcmVFdmVudCgnYXV0 aC5sb2dpbicsdGhpcyk7fSxfb25BdXRoTG9nb3V0OmZ1bmN0aW9uKCl7aWYoIUZC LmdldFNlc3Npb24oKSlGQi5nZXRMb2dpblN0YXR1cygpO0ZCLkhlbHBlci5maXJl RXZlbnQoJ2F1dGgubG9nb3V0Jyx0aGlzKTt9fSk7CkZCLnN1YmNsYXNzKCdYRkJN TC5TZXJ2ZXJGYm1sJywnWEZCTUwuSWZyYW1lV2lkZ2V0JyxudWxsLHtfdmlzaWJs ZUFmdGVyOidyZXNpemUnLHNldHVwQW5kVmFsaWRhdGU6ZnVuY3Rpb24oKXt0aGlz Ll9hdHRyPXtjaGFubmVsX3VybDp0aGlzLmdldENoYW5uZWxVcmwoKSxmYm1sOnRo aXMuZ2V0QXR0cmlidXRlKCdmYm1sJyksd2lkdGg6dGhpcy5fZ2V0UHhBdHRyaWJ1 dGUoJ3dpZHRoJyl9O2lmKCF0aGlzLl9hdHRyLmZibWwpe3ZhciBhPXRoaXMuZG9t LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtpZihhJiZhLnR5cGU9 PT0ndGV4dC9mYm1sJyl0aGlzLl9hdHRyLmZibWw9YS5pbm5lckhUTUw7fWlmKCF0 aGlzLl9hdHRyLmZibWwpe0ZCLmxvZygnPGZiOnNlcnZlcmZibWw+IHJlcXVpcmVz IHRoZSAiZmJtbCIgYXR0cmlidXRlLicpO3JldHVybiBmYWxzZTt9cmV0dXJuIHRy dWU7fSxnZXRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHt3aWR0aDp0aGlzLl9hdHRy LndpZHRoLGhlaWdodDp0aGlzLl9hdHRyLmhlaWdodH07fSxnZXRVcmxCaXRzOmZ1 bmN0aW9uKCl7cmV0dXJuIHtuYW1lOidzZXJ2ZXJmYm1sJyxwYXJhbXM6dGhpcy5f YXR0cn07fX0pOwpGQi5zdWJjbGFzcygnWEZCTUwuU2hhcmVCdXR0b24nLCdYRkJN TC5FbGVtZW50JyxudWxsLHtwcm9jZXNzOmZ1bmN0aW9uKCl7dGhpcy5faHJlZj10 aGlzLmdldEF0dHJpYnV0ZSgnaHJlZicsd2luZG93LmxvY2F0aW9uLmhyZWYpO3Ro aXMuX3R5cGU9dGhpcy5nZXRBdHRyaWJ1dGUoJ3R5cGUnLCdpY29uX2xpbmsnKTtG Qi5Eb20uYWRkQ3NzKHRoaXMuZG9tLCdmYl9zaGFyZV9jb3VudF9oaWRkZW4nKTt0 aGlzLl9yZW5kZXJCdXR0b24odHJ1ZSk7fSxfcmVuZGVyQnV0dG9uOmZ1bmN0aW9u KGgpe2lmKCF0aGlzLmlzVmFsaWQoKSl7dGhpcy5maXJlKCdyZW5kZXInKTtyZXR1 cm47fXZhciBkPScnLGU9JycsZj0nJyxjPScnLGc9RkIuSW50bC5fdHgoIlBheWxh XHUwMTVmIiksaT0nJztzd2l0Y2godGhpcy5fdHlwZSl7Y2FzZSAnaWNvbic6Y2Fz ZSAnaWNvbl9saW5rJzpjPSdmYl9idXR0b25fc2ltcGxlJztkPSgnPHNwYW4gY2xh c3M9ImZiX2J1dHRvbl90ZXh0Ij4nKyh0aGlzLl90eXBlPT0naWNvbl9saW5rJz9n OicmbmJzcDsnKSsnPC9zcGFuPicpO2g9ZmFsc2U7YnJlYWs7Y2FzZSAnbGluayc6 ZD1GQi5JbnRsLl90eCgiRmFjZWJvb2sndGEgUGF5bGFcdTAxNWYiKTtoPWZhbHNl O2JyZWFrO2Nhc2UgJ2J1dHRvbic6ZD0nPHNwYW4gY2xhc3M9ImZiX2J1dHRvbl90 ZXh0Ij4nK2crJzwvc3Bhbj4nO2M9J2ZiX2J1dHRvbiBmYl9idXR0b25fc21hbGwn O2g9ZmFsc2U7YnJlYWs7Y2FzZSAnYnV0dG9uX2NvdW50JzpkPSc8c3BhbiBjbGFz cz0iZmJfYnV0dG9uX3RleHQiPicrZysnPC9zcGFuPic7ZT0oJzxzcGFuIGNsYXNz PSJmYl9zaGFyZV9jb3VudF9udWJfcmlnaHQiPiZuYnNwOzwvc3Bhbj4nKyc8c3Bh biBjbGFzcz0iZmJfc2hhcmVfY291bnQgZmJfc2hhcmVfY291bnRfcmlnaHQiPicr dGhpcy5fZ2V0Q291bnRlck1hcmt1cCgpKyc8L3NwYW4+Jyk7Yz0nZmJfYnV0dG9u IGZiX2J1dHRvbl9zbWFsbCc7YnJlYWs7ZGVmYXVsdDpkPSc8c3BhbiBjbGFzcz0i ZmJfYnV0dG9uX3RleHQiPicrZysnPC9zcGFuPic7Zj0oJzxzcGFuIGNsYXNzPSJm Yl9zaGFyZV9jb3VudF9udWJfdG9wIj4mbmJzcDs8L3NwYW4+JysnPHNwYW4gY2xh c3M9ImZiX3NoYXJlX2NvdW50IGZiX3NoYXJlX2NvdW50X3RvcCI+Jyt0aGlzLl9n ZXRDb3VudGVyTWFya3VwKCkrJzwvc3Bhbj4nKTtjPSdmYl9idXR0b24gZmJfYnV0 dG9uX3NtYWxsJztpPSdmYl9zaGFyZV9jb3VudF93cmFwcGVyJzt9dmFyIGI9RkIu Z3VpZCgpO3RoaXMuZG9tLmlubmVySFRNTD1GQi5TdHJpbmcuZm9ybWF0KCc8c3Bh biBjbGFzcz0iezB9Ij57NH08YSBpZD0iezF9IiBjbGFzcz0iezJ9IiAnKyd0YXJn ZXQ9Il9ibGFuayI+ezN9PC9hPns1fTwvc3Bhbj4nLGksYixjLGQsZixlKTt2YXIg YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTthLmhyZWY9dGhpcy5faHJlZjth Lm9uY2xpY2s9ZnVuY3Rpb24oKXtGQi51aSh7bWV0aG9kOidzdHJlYW0uc2hhcmUn LHU6dGhpcy5ocmVmfSk7cmV0dXJuIGZhbHNlO307aWYoIWgpdGhpcy5maXJlKCdy ZW5kZXInKTt9LF9nZXRDb3VudGVyTWFya3VwOmZ1bmN0aW9uKCl7aWYoIXRoaXMu X2NvdW50KXRoaXMuX2NvdW50PUZCLkRhdGEuX3NlbGVjdEJ5SW5kZXgoWyd0b3Rh bF9jb3VudCddLCdsaW5rX3N0YXQnLCd1cmwnLHRoaXMuX2hyZWYpO3ZhciBiPScw JztpZih0aGlzLl9jb3VudC52YWx1ZSE9PXVuZGVmaW5lZCl7aWYodGhpcy5fY291 bnQudmFsdWUubGVuZ3RoPjApe3ZhciBhPXRoaXMuX2NvdW50LnZhbHVlWzBdLnRv dGFsX2NvdW50O2lmKGE+Myl7RkIuRG9tLnJlbW92ZUNzcyh0aGlzLmRvbSwnZmJf c2hhcmVfY291bnRfaGlkZGVuJyk7Yj1hPj0xZSswNz9NYXRoLnJvdW5kKGEvMWUr MDYpKydNJzooYT49MTAwMDA/TWF0aC5yb3VuZChhLzEwMDApKydLJzphKTt9fX1l bHNlIHRoaXMuX2NvdW50LndhaXQoRkIuYmluZCh0aGlzLl9yZW5kZXJCdXR0b24s dGhpcyxmYWxzZSkpO3JldHVybiAnPHNwYW4gY2xhc3M9ImZiX3NoYXJlX2NvdW50 X2lubmVyIj4nK2IrJzwvc3Bhbj4nO319KTsKRkIuc3ViY2xhc3MoJ1hGQk1MLlN1 YnNjcmliZScsJ1hGQk1MLkVkZ2VXaWRnZXQnLG51bGwse3NldHVwQW5kVmFsaWRh dGU6ZnVuY3Rpb24oKXt0aGlzLl9hdHRyPXtjaGFubmVsOnRoaXMuZ2V0Q2hhbm5l bFVybCgpLGFwaV9rZXk6RkIuX2FwaUtleSxmb250OnRoaXMuZ2V0QXR0cmlidXRl KCdmb250JyksY29sb3JzY2hlbWU6dGhpcy5nZXRBdHRyaWJ1dGUoJ2NvbG9yc2No ZW1lJywnbGlnaHQnKSxocmVmOnRoaXMuZ2V0QXR0cmlidXRlKCdocmVmJykscmVm OnRoaXMuZ2V0QXR0cmlidXRlKCdyZWYnKSxsYXlvdXQ6dGhpcy5fZ2V0TGF5b3V0 KCksc2hvd19mYWNlczp0aGlzLl9zaG91bGRTaG93RmFjZXMoKSx3aWR0aDp0aGlz Ll9nZXRXaWRnZXRXaWR0aCgpfTtyZXR1cm4gdHJ1ZTt9LGdldFVybEJpdHM6ZnVu Y3Rpb24oKXtyZXR1cm4ge25hbWU6J3N1YnNjcmliZScscGFyYW1zOnRoaXMuX2F0 dHJ9O30sX2dldFdpZGdldFdpZHRoOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5fZ2V0 TGF5b3V0KCk7dmFyIGQ9e3N0YW5kYXJkOjQ1MCxib3hfY291bnQ6ODMsYnV0dG9u X2NvdW50OjExNX07dmFyIGI9ZFtjXTt2YXIgZT10aGlzLl9nZXRQeEF0dHJpYnV0 ZSgnd2lkdGgnLGIpO3ZhciBhPXtzdGFuZGFyZDp7bWluOjIyNSxtYXg6OTAwfSxi b3hfY291bnQ6e21pbjo0MyxtYXg6OTAwfSxidXR0b25fY291bnQ6e21pbjo2Myxt YXg6OTAwfX07aWYoZTxhW2NdLm1pbil7ZT1hW2NdLm1pbjt9ZWxzZSBpZihlPmFb Y10ubWF4KWU9YVtjXS5tYXg7cmV0dXJuIGU7fX0pOwp2b2lkKDApOwoKCkZCLnBy b3ZpZGUoIiIsIHsiX2RvbWFpbiI6eyJhcGkiOiJodHRwczpcL1wvYXBpLmZhY2Vi b29rLmNvbVwvIiwiYXBpX3JlYWQiOiJodHRwczpcL1wvYXBpLXJlYWQuZmFjZWJv b2suY29tXC8iLCJjZG4iOiJodHRwOlwvXC9zdGF0aWMuYWsuZmJjZG4ubmV0XC8i LCJjZG5fZm9yZWlnbiI6Imh0dHA6XC9cL2Nvbm5lY3QuZmFjZWJvb2submV0XC8i LCJncmFwaCI6Imh0dHBzOlwvXC9ncmFwaC5mYWNlYm9vay5jb21cLyIsImh0dHBz X2NkbiI6Imh0dHBzOlwvXC9zLXN0YXRpYy5hay5mYmNkbi5uZXRcLyIsImh0dHBz X3N0YXRpY2ZiIjoiaHR0cHM6XC9cL3Mtc3RhdGljLmFrLmZhY2Vib29rLmNvbVwv IiwiaHR0cHNfd3d3IjoiaHR0cHM6XC9cL3d3dy5mYWNlYm9vay5jb21cLyIsInN0 YXRpY2ZiIjoiaHR0cDpcL1wvc3RhdGljLmFrLmZhY2Vib29rLmNvbVwvIiwid3d3 IjoiaHR0cDpcL1wvd3d3LmZhY2Vib29rLmNvbVwvIiwibSI6Imh0dHA6XC9cL20u ZmFjZWJvb2suY29tXC8iLCJodHRwc19tIjoiaHR0cHM6XC9cL20uZmFjZWJvb2su Y29tXC8ifSwiX2xvY2FsZSI6InRyX1RSIiwiX2xvY2FsZUlzUnRsIjpmYWxzZX0s IHRydWUpOwpGQi5wcm92aWRlKCJGbGFzaCIsIHsiX21pblZlcnNpb25zIjpbWzEw LDMsMTgxLDM0XSxbMTEsMCwwXV0sIl9zd2ZQYXRoIjoicnNyYy5waHBcL3YxXC95 RFwvclwvR0w3NHkyOUFtMXIuc3dmIn0sIHRydWUpOwpGQi5wcm92aWRlKCJYRCIs IHsiX3hkUHJveHlVcmwiOiJjb25uZWN0XC94ZF9wcm94eS5waHA/dmVyc2lvbj0z In0sIHRydWUpOwpGQi5wcm92aWRlKCJBcmJpdGVyIiwgeyJfY2FudmFzUHJveHlV cmwiOiJjb25uZWN0XC9jYW52YXNfcHJveHkucGhwP3ZlcnNpb249MyJ9LCB0cnVl KTsKRkIucHJvdmlkZSgnQXV0aCcsIHsiX3hkU3RvcmVQYXRoIjoieGRfbG9jYWxz dG9yYWdlXC92MiJ9LCB0cnVlKTsKRkIuaW5pdFNpdGV2YXJzID0geyJwYXJzZVhG Qk1MQmVmb3JlRG9tUmVhZHkiOmZhbHNlLCJjb21wdXRlQ29udGVudFNpemVWZXJz aW9uIjowLCJlbmFibGVNb2JpbGUiOjEsImZvcmNlU2VjdXJlWGRQcm94eSI6MSwi aWZyYW1lUGVybWlzc2lvbnMiOnsicmVhZF9zdHJlYW0iOmZhbHNlLCJtYW5hZ2Vf bWFpbGJveCI6ZmFsc2UsIm1hbmFnZV9mcmllbmRsaXN0cyI6ZmFsc2UsInJlYWRf bWFpbGJveCI6ZmFsc2UsInB1Ymxpc2hfY2hlY2tpbnMiOnRydWUsInN0YXR1c191 cGRhdGUiOnRydWUsInBob3RvX3VwbG9hZCI6dHJ1ZSwidmlkZW9fdXBsb2FkIjp0 cnVlLCJzbXMiOmZhbHNlLCJjcmVhdGVfZXZlbnQiOnRydWUsInJzdnBfZXZlbnQi OnRydWUsIm9mZmxpbmVfYWNjZXNzIjp0cnVlLCJlbWFpbCI6dHJ1ZSwieG1wcF9s b2dpbiI6ZmFsc2UsImNyZWF0ZV9ub3RlIjp0cnVlLCJzaGFyZV9pdGVtIjp0cnVl LCJleHBvcnRfc3RyZWFtIjpmYWxzZSwicHVibGlzaF9zdHJlYW0iOnRydWUsInB1 Ymxpc2hfbGlrZXMiOnRydWUsImFkc19tYW5hZ2VtZW50IjpmYWxzZSwiY29udGFj dF9lbWFpbCI6dHJ1ZSwiYWNjZXNzX3ByaXZhdGVfZGF0YSI6ZmFsc2UsInJlYWRf aW5zaWdodHMiOmZhbHNlLCJyZWFkX3JlcXVlc3RzIjpmYWxzZSwicmVhZF9mcmll bmRsaXN0cyI6dHJ1ZSwibWFuYWdlX3BhZ2VzIjpmYWxzZSwicGh5c2ljYWxfbG9n aW4iOmZhbHNlLCJtYW5hZ2VfZ3JvdXBzIjpmYWxzZSwicmVhZF9kZWFscyI6ZmFs c2V9fTsgRkIuZm9yY2VPQXV0aCA9IHRydWU7IEZCLndpZGdldFBpcGVFbmFibGVk QXBwcyA9IHsiMTExNDc2NjU4ODY0OTc2IjoxLCJjY2E2NDc3MjcyZmM1Y2I4MDVm ODVhODRmMjBmY2ExZCI6MSwiMTc5MTUwMTY1NDcyMDEwIjoxfTsgRkIud2lkZ2V0 UGlwZVRhZ0NvdW50VGhyZXNob2xkID0gNDsKRkIucHJvdmlkZSgiQ2FudmFzLlBy ZWZldGNoZXIiLCB7Il9hcHBJZHNCbGFja2xpc3QiOlsxNDQ5NTk2MTU1NzY0NjZd LCJfc2FtcGxlUmF0ZSI6NTAwfSwgdHJ1ZSk7CkZCLnByb3ZpZGUoIlRlbXBsYXRl RGF0YSIsIHsiX2VuYWJsZWQiOnRydWV9LCB0cnVlKTsKRkIucHJvdmlkZSgiVGVt cGxhdGVVSSIsIHsiX3ZlcnNpb24iOjE4fSwgdHJ1ZSk7CkZCLnByb3ZpZGUoIlhG Qk1MLkNvbm5lY3RCYXIiLCB7ImltZ3MiOnsiYnV0dG9uVXJsIjoicnNyYy5waHBc L3YxXC95WVwvclwvaF9ZNnUxd3JaUFcucG5nIiwibWlzc2luZ1Byb2ZpbGVVcmwi OiJyc3JjLnBocFwvdjFcL3lvXC9yXC9VbElxbUhKbi1TSy5naWYifX0sIHRydWUp OwpGQi5wcm92aWRlKCJYRkJNTC5Qcm9maWxlUGljIiwgeyJfZGVmUGljTWFwIjp7 InBpYyI6InJzcmMucGhwXC92MVwveWhcL3JcL0M1eXQ3Q3FmM3pVLmpwZyIsInBp Y19iaWciOiJyc3JjLnBocFwvdjFcL3lMXC9yXC9Ic1RaU0R3NGF2eC5naWYiLCJw aWNfYmlnX3dpdGhfbG9nbyI6InJzcmMucGhwXC92MVwveTVcL3JcL1NSRENhZUNM N2hNLmdpZiIsInBpY19zbWFsbCI6InJzcmMucGhwXC92MVwveWlcL3JcL29kQTlz TkxyRTg2LmpwZyIsInBpY19zbWFsbF93aXRoX2xvZ28iOiJyc3JjLnBocFwvdjFc L3lEXC9yXC9rMXhpUlhLbmxHZC5naWYiLCJwaWNfc3F1YXJlIjoicnNyYy5waHBc L3YxXC95b1wvclwvVWxJcW1ISm4tU0suZ2lmIiwicGljX3NxdWFyZV93aXRoX2xv Z28iOiJyc3JjLnBocFwvdjFcL3lYXC9yXC85ZFlKQlBESFh3Wi5naWYiLCJwaWNf d2l0aF9sb2dvIjoicnNyYy5waHBcL3YxXC95dVwvclwvZlBQUjlmMkZKM3QuZ2lm In19LCB0cnVlKTsKaWYgKEZCLkRvbSAmJiBGQi5Eb20uYWRkQ3NzUnVsZXMpIHsg RkIuRG9tLmFkZENzc1J1bGVzKCIuZmJfaGlkZGVue3Bvc2l0aW9uOmFic29sdXRl O3RvcDotMTAwMDBweDt6LWluZGV4OjEwMDAxfVxuLmZiX2ludmlzaWJsZXtkaXNw bGF5Om5vbmV9XG4uZmJfcmVzZXR7YmFja2dyb3VuZDpub25lO2JvcmRlci1zcGFj aW5nOjA7Ym9yZGVyOjA7Y29sb3I6IzAwMDtjdXJzb3I6YXV0bztkaXJlY3Rpb246 bHRyO2ZvbnQtZmFtaWx5OlwibHVjaWRhIGdyYW5kZVwiLCB0YWhvbWEsIHZlcmRh bmEsIGFyaWFsLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZTogMTFweDtmb250LXN0eWxl Om5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDts ZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MTttYXJnaW46MDtvdmVy Zmxvdzp2aXNpYmxlO3BhZGRpbmc6MDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNv cmF0aW9uOm5vbmU7dGV4dC1pbmRlbnQ6MDt0ZXh0LXNoYWRvdzpub25lO3RleHQt dHJhbnNmb3JtOm5vbmU7dmlzaWJpbGl0eTp2aXNpYmxlO3doaXRlLXNwYWNlOm5v cm1hbDt3b3JkLXNwYWNpbmc6bm9ybWFsfVxuLmZiX2xpbmsgaW1ne2JvcmRlcjpu b25lfVxuLmZiX2RpYWxvZ3tiYWNrZ3JvdW5kOnJnYmEoODIsIDgyLCA4MiwgLjcp O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTAwMDBweDt6LWluZGV4OjEwMDAxfVxu LmZiX2RpYWxvZ19hZHZhbmNlZHtwYWRkaW5nOjEwcHg7LW1vei1ib3JkZXItcmFk aXVzOjhweDstd2Via2l0LWJvcmRlci1yYWRpdXM6OHB4fVxuLmZiX2RpYWxvZ19j b250ZW50e2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMzMzfVxuLmZiX2RpYWxvZ19j bG9zZV9pY29ue2JhY2tncm91bmQ6dXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNk bi5uZXRcL3JzcmMucGhwXC92MVwveXFcL3JcL0lFOUpJSTZaMVlzLnBuZykgbm8t cmVwZWF0IHNjcm9sbCAwIDAgdHJhbnNwYXJlbnQ7X2JhY2tncm91bmQtaW1hZ2U6 dXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNkbi5uZXRcL3JzcmMucGhwXC92MVwv eUxcL3JcL3M4MTZlV0MtMnNsLmdpZik7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpi bG9jaztoZWlnaHQ6MTVweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxOHB4O3Rv cDoxN3B4O3dpZHRoOjE1cHg7dG9wOjhweFxcOTtyaWdodDo3cHhcXDl9XG4uZmJf ZGlhbG9nX21vYmlsZSAuZmJfZGlhbG9nX2Nsb3NlX2ljb257dG9wOjVweDtsZWZ0 OjVweDtyaWdodDphdXRvfVxuLmZiX2RpYWxvZ19wYWRkaW5ne2JhY2tncm91bmQt Y29sb3I6dHJhbnNwYXJlbnQ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3ot aW5kZXg6LTF9XG4uZmJfZGlhbG9nX2Nsb3NlX2ljb246aG92ZXJ7YmFja2dyb3Vu ZDp1cmwoaHR0cDpcL1wvc3RhdGljLmFrLmZiY2RuLm5ldFwvcnNyYy5waHBcL3Yx XC95cVwvclwvSUU5SklJNloxWXMucG5nKSBuby1yZXBlYXQgc2Nyb2xsIDAgLTE1 cHggdHJhbnNwYXJlbnQ7X2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHA6XC9cL3N0 YXRpYy5hay5mYmNkbi5uZXRcL3JzcmMucGhwXC92MVwveUxcL3JcL3M4MTZlV0Mt MnNsLmdpZil9XG4uZmJfZGlhbG9nX2Nsb3NlX2ljb246YWN0aXZle2JhY2tncm91 bmQ6dXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNkbi5uZXRcL3JzcmMucGhwXC92 MVwveXFcL3JcL0lFOUpJSTZaMVlzLnBuZykgbm8tcmVwZWF0IHNjcm9sbCAwIC0z MHB4IHRyYW5zcGFyZW50O19iYWNrZ3JvdW5kLWltYWdlOnVybChodHRwOlwvXC9z dGF0aWMuYWsuZmJjZG4ubmV0XC9yc3JjLnBocFwvdjFcL3lMXC9yXC9zODE2ZVdD LTJzbC5naWYpfVxuLmZiX2RpYWxvZ19sb2FkZXJ7YmFja2dyb3VuZC1jb2xvcjoj ZjJmMmYyO2JvcmRlcjoxcHggc29saWQgIzYwNjA2MDtmb250LXNpemU6IDI0cHg7 cGFkZGluZzoyMHB4fVxuLmZiX2RpYWxvZ190b3BfbGVmdCxcbi5mYl9kaWFsb2df dG9wX3JpZ2h0LFxuLmZiX2RpYWxvZ19ib3R0b21fbGVmdCxcbi5mYl9kaWFsb2df Ym90dG9tX3JpZ2h0e2hlaWdodDoxMHB4O3dpZHRoOjEwcHg7b3ZlcmZsb3c6aGlk ZGVuO3Bvc2l0aW9uOmFic29sdXRlfVxuLmZiX2RpYWxvZ190b3BfbGVmdHtiYWNr Z3JvdW5kOnVybChodHRwOlwvXC9zdGF0aWMuYWsuZmJjZG4ubmV0XC9yc3JjLnBo cFwvdjFcL3llXC9yXC84WWVUTklsVFpqbS5wbmcpIG5vLXJlcGVhdCAwIDA7bGVm dDotMTBweDt0b3A6LTEwcHh9XG4uZmJfZGlhbG9nX3RvcF9yaWdodHtiYWNrZ3Jv dW5kOnVybChodHRwOlwvXC9zdGF0aWMuYWsuZmJjZG4ubmV0XC9yc3JjLnBocFwv djFcL3llXC9yXC84WWVUTklsVFpqbS5wbmcpIG5vLXJlcGVhdCAwIC0xMHB4O3Jp Z2h0Oi0xMHB4O3RvcDotMTBweH1cbi5mYl9kaWFsb2dfYm90dG9tX2xlZnR7YmFj a2dyb3VuZDp1cmwoaHR0cDpcL1wvc3RhdGljLmFrLmZiY2RuLm5ldFwvcnNyYy5w aHBcL3YxXC95ZVwvclwvOFllVE5JbFRaam0ucG5nKSBuby1yZXBlYXQgMCAtMjBw eDtib3R0b206LTEwcHg7bGVmdDotMTBweH1cbi5mYl9kaWFsb2dfYm90dG9tX3Jp Z2h0e2JhY2tncm91bmQ6dXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNkbi5uZXRc L3JzcmMucGhwXC92MVwveWVcL3JcLzhZZVROSWxUWmptLnBuZykgbm8tcmVwZWF0 IDAgLTMwcHg7cmlnaHQ6LTEwcHg7Ym90dG9tOi0xMHB4fVxuLmZiX2RpYWxvZ192 ZXJ0X2xlZnQsXG4uZmJfZGlhbG9nX3ZlcnRfcmlnaHQsXG4uZmJfZGlhbG9nX2hv cml6X3RvcCxcbi5mYl9kaWFsb2dfaG9yaXpfYm90dG9te3Bvc2l0aW9uOmFic29s dXRlO2JhY2tncm91bmQ6IzUyNTI1MjtmaWx0ZXI6YWxwaGEob3BhY2l0eT03MCk7 b3BhY2l0eTouN31cbi5mYl9kaWFsb2dfdmVydF9sZWZ0LFxuLmZiX2RpYWxvZ192 ZXJ0X3JpZ2h0e3dpZHRoOjEwcHg7aGVpZ2h0OjEwMFx1MDAyNX1cbi5mYl9kaWFs b2dfdmVydF9sZWZ0e21hcmdpbi1sZWZ0Oi0xMHB4fVxuLmZiX2RpYWxvZ192ZXJ0 X3JpZ2h0e3JpZ2h0OjA7bWFyZ2luLXJpZ2h0Oi0xMHB4fVxuLmZiX2RpYWxvZ19o b3Jpel90b3AsXG4uZmJfZGlhbG9nX2hvcml6X2JvdHRvbXt3aWR0aDoxMDBcdTAw MjU7aGVpZ2h0OjEwcHh9XG4uZmJfZGlhbG9nX2hvcml6X3RvcHttYXJnaW4tdG9w Oi0xMHB4fVxuLmZiX2RpYWxvZ19ob3Jpel9ib3R0b217Ym90dG9tOjA7bWFyZ2lu LWJvdHRvbTotMTBweH1cbi5mYl9kaWFsb2dfaWZyYW1le2xpbmUtaGVpZ2h0OjB9 XG4uZmJfZGlhbG9nX2NvbnRlbnQgLmRpYWxvZ190aXRsZXtiYWNrZ3JvdW5kOiM2 ZDg0YjQ7Ym9yZGVyOjFweCBzb2xpZCAjM2I1OTk4O2NvbG9yOiNmZmY7Zm9udC1z aXplOiAxNHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7bWFyZ2luOjB9XG4uZmJfZGlhbG9n X2NvbnRlbnQgLmRpYWxvZ190aXRsZSA+IHNwYW57YmFja2dyb3VuZDp1cmwoaHR0 cDpcL1wvc3RhdGljLmFrLmZiY2RuLm5ldFwvcnNyYy5waHBcL3YxXC95ZFwvclwv Q291N24tbnFLNTIuZ2lmKVxubm8tcmVwZWF0IDVweCA1MFx1MDAyNTtmbG9hdDps ZWZ0O3BhZGRpbmc6NXB4IDAgN3B4IDI2cHh9XG5ib2R5LmZiX2hpZGRlbnstd2Vi a2l0LXRyYW5zZm9ybTpub25lO2hlaWdodDoxMDBcdTAwMjU7bWFyZ2luOjA7bGVm dDotMTAwMDBweDtvdmVyZmxvdzp2aXNpYmxlO3Bvc2l0aW9uOmFic29sdXRlO3Rv cDotMTAwMDBweDt3aWR0aDoxMDBcdTAwMjVcbn1cbi5mYl9kaWFsb2cuZmJfZGlh bG9nX21vYmlsZS5sb2FkaW5ne2JhY2tncm91bmQ6dXJsKGh0dHA6XC9cL3N0YXRp Yy5hay5mYmNkbi5uZXRcL3JzcmMucGhwXC92MVwveU9cL3JcL19qMDNpekVYNDBV LmdpZilcbndoaXRlIG5vLXJlcGVhdCA1MFx1MDAyNSA1MFx1MDAyNTttaW4taGVp Z2h0OjEwMFx1MDAyNTttaW4td2lkdGg6MTAwXHUwMDI1O292ZXJmbG93OmhpZGRl bjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt6LWluZGV4OjEwMDAxfVxuLmZiX2Rp YWxvZy5mYl9kaWFsb2dfbW9iaWxlLmxvYWRpbmcuY2VudGVyZWR7bWF4LWhlaWdo dDo1OTBweDttaW4taGVpZ2h0OjU5MHB4O21heC13aWR0aDo1MDBweDttaW4td2lk dGg6NTAwcHh9XG4jZmItcm9vdCAjZmJfZGlhbG9nX2lwYWRfb3ZlcmxheXtiYWNr Z3JvdW5kOnJnYmEoMCwgMCwgMCwgLjQ1KTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0 OjA7dG9wOjA7d2lkdGg6MTAwXHUwMDI1O21pbi1oZWlnaHQ6MTAwXHUwMDI1O3ot aW5kZXg6MTAwMDB9XG4jZmItcm9vdCAjZmJfZGlhbG9nX2lwYWRfb3ZlcmxheS5o aWRkZW57ZGlzcGxheTpub25lfVxuLmZiX2RpYWxvZy5mYl9kaWFsb2dfbW9iaWxl LmxvYWRpbmcgaWZyYW1le3Zpc2liaWxpdHk6aGlkZGVufVxuLmZiX2RpYWxvZ19j b250ZW50IC5kaWFsb2dfaGVhZGVyey13ZWJraXQtYm94LXNoYWRvdzp3aGl0ZSAw IDFweCAxcHggLTFweCBpbnNldDtiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQo bGluZWFyLCAwIDAsIDAgMTAwXHUwMDI1LCBmcm9tKCM3MzhBQkEpLCB0bygjMkM0 OTg3KSk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQ7Ym9yZGVyLWNvbG9yOiMxZDQw ODg7Y29sb3I6I2ZmZjtmb250OjE0cHggSGVsdmV0aWNhLCBzYW5zLXNlcmlmO2Zv bnQtd2VpZ2h0OmJvbGQ7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt0ZXh0LXNoYWRv dzpyZ2JhKDAsIDMwLCA4NCwgLjI5Njg3NSkgMCAtMXB4IDA7dmVydGljYWwtYWxp Z246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3JhcH1cbi5mYl9kaWFsb2dfY29udGVu dCAuZGlhbG9nX2hlYWRlciB0YWJsZXstd2Via2l0LWZvbnQtc21vb3RoaW5nOnN1 YnBpeGVsLWFudGlhbGlhc2VkO2hlaWdodDo0M3B4O3dpZHRoOjEwMFx1MDAyNVxu fVxuLmZiX2RpYWxvZ19jb250ZW50IC5kaWFsb2dfaGVhZGVyIHRkLmhlYWRlcl9s ZWZ0e2ZvbnQtc2l6ZTogMTJweDtwYWRkaW5nLWxlZnQ6NXB4O3ZlcnRpY2FsLWFs aWduOm1pZGRsZTt3aWR0aDo2MHB4XG59XG4uZmJfZGlhbG9nX2NvbnRlbnQgLmRp YWxvZ19oZWFkZXIgdGQuaGVhZGVyX3JpZ2h0e2ZvbnQtc2l6ZTogMTJweDtwYWRk aW5nLXJpZ2h0OjVweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2lkdGg6NjBweFxu fVxuLmZiX2RpYWxvZ19jb250ZW50IC50b3VjaGFibGVfYnV0dG9ue2JhY2tncm91 bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMCwgMCAxMDBcdTAwMjUsIGZy b20oIzQ5NjZBNiksXG5jb2xvci1zdG9wKDAuNSwgIzM1NTQ5MiksIHRvKCMyQTQ4 ODcpKTtib3JkZXI6MXB4IHNvbGlkICMyOTQ0N2U7LXdlYmtpdC1iYWNrZ3JvdW5k LWNsaXA6cGFkZGluZy1ib3g7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDstd2Vi a2l0LWJveC1zaGFkb3c6cmdiYSgwLCAwLCAwLCAuMTE3MTg4KSAwIDFweCAxcHgg aW5zZXQsXG5yZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNjc5NjkpIDAgMXB4IDA7ZGlz cGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXRvcDozcHg7bWF4LXdpZHRoOjg1cHg7 bGluZS1oZWlnaHQ6MThweDtwYWRkaW5nOjRweCAxMnB4O3Bvc2l0aW9uOnJlbGF0 aXZlfVxuLmZiX2RpYWxvZ19jb250ZW50IC5kaWFsb2dfaGVhZGVyIC50b3VjaGFi bGVfYnV0dG9uIGlucHV0e2JvcmRlcjpub25lO2JhY2tncm91bmQ6bm9uZTtjb2xv cjojZmZmO2ZvbnQ6MTJweCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Zm9udC13ZWln aHQ6Ym9sZDttYXJnaW46MnB4IC0xMnB4O3BhZGRpbmc6MnB4IDZweCAzcHggNnB4 O3RleHQtc2hhZG93OnJnYmEoMCwgMzAsIDg0LCAuMjk2ODc1KSAwIC0xcHggMH1c bi5mYl9kaWFsb2dfY29udGVudCAuZGlhbG9nX2hlYWRlciAuaGVhZGVyX2NlbnRl cntjb2xvcjojZmZmO2ZvbnQtc2l6ZTogMTZweDtmb250LXdlaWdodDpib2xkO2xp bmUtaGVpZ2h0OjE4cHg7dGV4dC1hbGlnbjpjZW50ZXI7dmVydGljYWwtYWxpZ246 bWlkZGxlfVxuLmZiX2RpYWxvZ19jb250ZW50IC5kaWFsb2dfY29udGVudHtiYWNr Z3JvdW5kOnVybChodHRwOlwvXC9zdGF0aWMuYWsuZmJjZG4ubmV0XC9yc3JjLnBo cFwvdjFcL3k5XC9yXC9qS0VjVlBaRmstMi5naWYpIG5vLXJlcGVhdCA1MFx1MDAy NSA1MFx1MDAyNTtib3JkZXI6MXB4IHNvbGlkICM1NTU7Ym9yZGVyLWJvdHRvbTow O2JvcmRlci10b3A6MDtoZWlnaHQ6MTUwcHh9XG4uZmJfZGlhbG9nX2NvbnRlbnQg LmRpYWxvZ19mb290ZXJ7YmFja2dyb3VuZDojZjJmMmYyO2JvcmRlcjoxcHggc29s aWQgIzU1NTtib3JkZXItdG9wLWNvbG9yOiNjY2M7aGVpZ2h0OjQwcHh9XG4jZmJf ZGlhbG9nX2xvYWRlcl9jbG9zZXtmbG9hdDpsZWZ0fVxuLmZiX2RpYWxvZy5mYl9k aWFsb2dfbW9iaWxlIC5mYl9kaWFsb2dfY2xvc2VfYnV0dG9ue3RleHQtc2hhZG93 OnJnYmEoMCwgMzAsIDg0LCAuMjk2ODc1KSAwIC0xcHggMH1cbi5mYl9kaWFsb2cu ZmJfZGlhbG9nX21vYmlsZSAuZmJfZGlhbG9nX2Nsb3NlX2ljb257dmlzaWJpbGl0 eTpoaWRkZW59XG4uZmJfaWZyYW1lX3dpZGdldHtwb3NpdGlvbjpyZWxhdGl2ZTtk aXNwbGF5Oi1tb3otaW5saW5lLWJsb2NrO2Rpc3BsYXk6aW5saW5lLWJsb2NrfVxu LmZiX2lmcmFtZV93aWRnZXQgaWZyYW1le3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRp Y2FsLWFsaWduOnRleHQtYm90dG9tfVxuLmZiX2lmcmFtZV93aWRnZXQgc3Bhbntw b3NpdGlvbjpyZWxhdGl2ZX1cbi5mYl9oaWRlX2lmcmFtZXMgaWZyYW1le3Bvc2l0 aW9uOnJlbGF0aXZlO2xlZnQ6LTEwMDAwcHh9XG4uZmJfaWZyYW1lX3dpZGdldF9s b2FkZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9XG4u ZmJfaWZyYW1lX3dpZGdldF9sb2FkZXIgaWZyYW1le21pbi1oZWlnaHQ6MzJweDt6 LWluZGV4OjI7em9vbToxfVxuLmZiX2lmcmFtZV93aWRnZXRfbG9hZGVyIC5GQl9M b2FkZXJ7YmFja2dyb3VuZDp1cmwoaHR0cDpcL1wvc3RhdGljLmFrLmZiY2RuLm5l dFwvcnNyYy5waHBcL3YxXC95OVwvclwvaktFY1ZQWkZrLTIuZ2lmKSBuby1yZXBl YXQ7aGVpZ2h0OjMycHg7d2lkdGg6MzJweDttYXJnaW4tbGVmdDotMTZweDtwb3Np dGlvbjphYnNvbHV0ZTtsZWZ0OjUwXHUwMDI1O3otaW5kZXg6NH1cbi5mYl9idXR0 b25fc2ltcGxlLFxuLmZiX2J1dHRvbl9zaW1wbGVfcnRse2JhY2tncm91bmQtaW1h Z2U6dXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNkbi5uZXRcL3JzcmMucGhwXC92 MVwveUhcL3JcL2VJcGJuVktJOWxSLnBuZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8t cmVwZWF0O2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTt0ZXh0LWRlY29yYXRp b246bm9uZX1cbi5mYl9idXR0b25fc2ltcGxlX3J0bHtiYWNrZ3JvdW5kLXBvc2l0 aW9uOnJpZ2h0IDB9XG4uZmJfYnV0dG9uX3NpbXBsZSAuZmJfYnV0dG9uX3RleHR7 bWFyZ2luOjAgMCAwIDIwcHg7cGFkZGluZy1ib3R0b206MXB4fVxuLmZiX2J1dHRv bl9zaW1wbGVfcnRsIC5mYl9idXR0b25fdGV4dHttYXJnaW46MCAxMHB4IDAgMH1c bmEuZmJfYnV0dG9uX3NpbXBsZTpob3ZlciAuZmJfYnV0dG9uX3RleHQsXG5hLmZi X2J1dHRvbl9zaW1wbGVfcnRsOmhvdmVyIC5mYl9idXR0b25fdGV4dCxcbi5mYl9i dXR0b25fc2ltcGxlOmhvdmVyIC5mYl9idXR0b25fdGV4dCxcbi5mYl9idXR0b25f c2ltcGxlX3J0bDpob3ZlciAuZmJfYnV0dG9uX3RleHR7dGV4dC1kZWNvcmF0aW9u OnVuZGVybGluZX1cbi5mYl9idXR0b24sXG4uZmJfYnV0dG9uX3J0bHtiYWNrZ3Jv dW5kOiMyOTQ0N2UgdXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNkbi5uZXRcL3Jz cmMucGhwXC92MVwveUxcL3JcL0ZHRmJjODBkVUtqLnBuZyk7YmFja2dyb3VuZC1y ZXBlYXQ6bm8tcmVwZWF0O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJs b2NrO3BhZGRpbmc6MCAwIDAgMXB4O3RleHQtZGVjb3JhdGlvbjpub25lO291dGxp bmU6bm9uZX1cbi5mYl9idXR0b24gLmZiX2J1dHRvbl90ZXh0LFxuLmZiX2J1dHRv bl9ydGwgLmZiX2J1dHRvbl90ZXh0e2JhY2tncm91bmQ6IzVmNzhhYiB1cmwoaHR0 cDpcL1wvc3RhdGljLmFrLmZiY2RuLm5ldFwvcnNyYy5waHBcL3YxXC95TFwvclwv RkdGYmM4MGRVS2oucG5nKTtib3JkZXItdG9wOnNvbGlkIDFweCAjODc5YWMwO2Jv cmRlci1ib3R0b206c29saWQgMXB4ICMxYTM1NmU7Y29sb3I6I2ZmZjtkaXNwbGF5 OmJsb2NrO2ZvbnQtZmFtaWx5OlwibHVjaWRhIGdyYW5kZVwiLHRhaG9tYSx2ZXJk YW5hLGFyaWFsLHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6Ym9sZDtwYWRkaW5nOjJw eCA2cHggM3B4IDZweDttYXJnaW46MXB4IDFweCAwIDIxcHg7dGV4dC1zaGFkb3c6 bm9uZX1cbmEuZmJfYnV0dG9uLFxuYS5mYl9idXR0b25fcnRsLFxuLmZiX2J1dHRv bixcbi5mYl9idXR0b25fcnRse3RleHQtZGVjb3JhdGlvbjpub25lfVxuYS5mYl9i dXR0b246YWN0aXZlIC5mYl9idXR0b25fdGV4dCxcbmEuZmJfYnV0dG9uX3J0bDph Y3RpdmUgLmZiX2J1dHRvbl90ZXh0LFxuLmZiX2J1dHRvbjphY3RpdmUgLmZiX2J1 dHRvbl90ZXh0LFxuLmZiX2J1dHRvbl9ydGw6YWN0aXZlIC5mYl9idXR0b25fdGV4 dHtib3JkZXItYm90dG9tOnNvbGlkIDFweCAjMjk0NDdlO2JvcmRlci10b3A6c29s aWQgMXB4ICM0NTYxOWQ7YmFja2dyb3VuZDojNGY2YWEzO3RleHQtc2hhZG93Om5v bmV9XG4uZmJfYnV0dG9uX3hsYXJnZSxcbi5mYl9idXR0b25feGxhcmdlX3J0bHti YWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTYwcHg7Zm9udC1zaXplOiAyNHB4O2xp bmUtaGVpZ2h0OjMwcHh9XG4uZmJfYnV0dG9uX3hsYXJnZSAuZmJfYnV0dG9uX3Rl eHR7cGFkZGluZzozcHggOHB4IDNweCAxMnB4O21hcmdpbi1sZWZ0OjM4cHh9XG5h LmZiX2J1dHRvbl94bGFyZ2U6YWN0aXZle2JhY2tncm91bmQtcG9zaXRpb246bGVm dCAtOTlweH1cbi5mYl9idXR0b25feGxhcmdlX3J0bHtiYWNrZ3JvdW5kLXBvc2l0 aW9uOnJpZ2h0IC0yNjhweH1cbi5mYl9idXR0b25feGxhcmdlX3J0bCAuZmJfYnV0 dG9uX3RleHR7cGFkZGluZzozcHggOHB4IDNweCAxMnB4O21hcmdpbi1yaWdodDoz OXB4fVxuYS5mYl9idXR0b25feGxhcmdlX3J0bDphY3RpdmV7YmFja2dyb3VuZC1w b3NpdGlvbjpyaWdodCAtMzA3cHh9XG4uZmJfYnV0dG9uX2xhcmdlLFxuLmZiX2J1 dHRvbl9sYXJnZV9ydGx7YmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC0xMzhweDtm b250LXNpemU6IDEzcHg7bGluZS1oZWlnaHQ6MTZweH1cbi5mYl9idXR0b25fbGFy Z2UgLmZiX2J1dHRvbl90ZXh0e21hcmdpbi1sZWZ0OjI0cHg7cGFkZGluZzoycHgg NnB4IDRweCA2cHh9XG5hLmZiX2J1dHRvbl9sYXJnZTphY3RpdmV7YmFja2dyb3Vu ZC1wb3NpdGlvbjpsZWZ0IC0xNjNweH1cbi5mYl9idXR0b25fbGFyZ2VfcnRse2Jh Y2tncm91bmQtcG9zaXRpb246cmlnaHQgLTM0NnB4fVxuLmZiX2J1dHRvbl9sYXJn ZV9ydGwgLmZiX2J1dHRvbl90ZXh0e21hcmdpbi1yaWdodDoyNXB4fVxuYS5mYl9i dXR0b25fbGFyZ2VfcnRsOmFjdGl2ZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0 IC0zNzFweH1cbi5mYl9idXR0b25fbWVkaXVtLFxuLmZiX2J1dHRvbl9tZWRpdW1f cnRse2JhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMTg4cHg7Zm9udC1zaXplOiAx MXB4O2xpbmUtaGVpZ2h0OjE0cHh9XG5hLmZiX2J1dHRvbl9tZWRpdW06YWN0aXZl e2JhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMjEwcHh9XG4uZmJfYnV0dG9uX21l ZGl1bV9ydGx7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAtMzk2cHh9XG4uZmJf YnV0dG9uX3RleHRfcnRsLFxuLmZiX2J1dHRvbl9tZWRpdW1fcnRsIC5mYl9idXR0 b25fdGV4dHtwYWRkaW5nOjJweCA2cHggM3B4IDZweDttYXJnaW4tcmlnaHQ6MjJw eH1cbmEuZmJfYnV0dG9uX21lZGl1bV9ydGw6YWN0aXZle2JhY2tncm91bmQtcG9z aXRpb246cmlnaHQgLTQxOHB4fVxuLmZiX2J1dHRvbl9zbWFsbCxcbi5mYl9idXR0 b25fc21hbGxfcnRse2JhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMjMycHg7Zm9u dC1zaXplOiAxMHB4O2xpbmUtaGVpZ2h0OjEwcHh9XG4uZmJfYnV0dG9uX3NtYWxs IC5mYl9idXR0b25fdGV4dHtwYWRkaW5nOjJweCA2cHggM3B4O21hcmdpbi1sZWZ0 OjE3cHh9XG5hLmZiX2J1dHRvbl9zbWFsbDphY3RpdmUsXG4uZmJfYnV0dG9uX3Nt YWxsOmFjdGl2ZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTI1MHB4fVxuLmZi X2J1dHRvbl9zbWFsbF9ydGx7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAtNDQw cHh9XG4uZmJfYnV0dG9uX3NtYWxsX3J0bCAuZmJfYnV0dG9uX3RleHR7cGFkZGlu ZzoycHggNnB4O21hcmdpbi1yaWdodDoxOHB4fVxuYS5mYl9idXR0b25fc21hbGxf cnRsOmFjdGl2ZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC00NThweH1cbi5m Yl9zaGFyZV9jb3VudF93cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Zsb2F0Omxl ZnR9XG4uZmJfc2hhcmVfY291bnR7YmFja2dyb3VuZDojYjBiOWVjIG5vbmUgcmVw ZWF0IHNjcm9sbCAwIDA7Y29sb3I6IzMzMztmb250LWZhbWlseTpcImx1Y2lkYSBn cmFuZGVcIiwgdGFob21hLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjt0ZXh0 LWFsaWduOmNlbnRlcn1cbi5mYl9zaGFyZV9jb3VudF9pbm5lcntiYWNrZ3JvdW5k OiNlOGViZjI7ZGlzcGxheTpibG9ja31cbi5mYl9zaGFyZV9jb3VudF9yaWdodHtt YXJnaW4tbGVmdDotMXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrfVxuLmZiX3NoYXJl X2NvdW50X3JpZ2h0IC5mYl9zaGFyZV9jb3VudF9pbm5lcntib3JkZXItdG9wOnNv bGlkIDFweCAjZThlYmYyO2JvcmRlci1ib3R0b206c29saWQgMXB4ICNiMGI5ZWM7 bWFyZ2luOjFweCAxcHggMCAxcHg7Zm9udC1zaXplOiAxMHB4O2xpbmUtaGVpZ2h0 OjEwcHg7cGFkZGluZzoycHggNnB4IDNweDtmb250LXdlaWdodDpib2xkfVxuLmZi X3NoYXJlX2NvdW50X3RvcHtkaXNwbGF5OmJsb2NrO2xldHRlci1zcGFjaW5nOi0x cHg7bGluZS1oZWlnaHQ6MzRweDttYXJnaW4tYm90dG9tOjdweDtmb250LXNpemU6 IDIycHg7Ym9yZGVyOnNvbGlkIDFweCAjYjBiOWVjfVxuLmZiX3NoYXJlX2NvdW50 X251Yl90b3B7Ym9yZGVyOm5vbmU7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNv bHV0ZTtsZWZ0OjdweDt0b3A6MzVweDttYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6 NnB4O2hlaWdodDo3cHg7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tn cm91bmQtaW1hZ2U6dXJsKGh0dHA6XC9cL3N0YXRpYy5hay5mYmNkbi5uZXRcL3Jz cmMucGhwXC92MVwveVVcL3JcL2JTT0h0S2JDR1lJLnBuZyl9XG4uZmJfc2hhcmVf Y291bnRfbnViX3JpZ2h0e2JvcmRlcjpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2Nr O3BhZGRpbmc6MDt3aWR0aDo1cHg7aGVpZ2h0OjEwcHg7YmFja2dyb3VuZC1yZXBl YXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHA6XC9cL3N0YXRp Yy5hay5mYmNkbi5uZXRcL3JzcmMucGhwXC92MVwveVhcL3JcL2lfb0lWVEtNWXNM LnBuZyk7dmVydGljYWwtYWxpZ246dG9wO2JhY2tncm91bmQtcG9zaXRpb246cmln aHQgNXB4O3otaW5kZXg6MTA7bGVmdDoycHg7bWFyZ2luOjAgMnB4IDAgMDtwb3Np dGlvbjpyZWxhdGl2ZX1cbi5mYl9zaGFyZV9ub19jb3VudHtkaXNwbGF5Om5vbmV9 XG4uZmJfc2hhcmVfc2l6ZV9TbWFsbCAuZmJfc2hhcmVfY291bnRfcmlnaHQgLmZi X3NoYXJlX2NvdW50X2lubmVye2ZvbnQtc2l6ZTogMTBweH1cbi5mYl9zaGFyZV9z aXplX01lZGl1bSAuZmJfc2hhcmVfY291bnRfcmlnaHQgLmZiX3NoYXJlX2NvdW50 X2lubmVye2ZvbnQtc2l6ZTogMTFweDtwYWRkaW5nOjJweCA2cHggM3B4O2xldHRl ci1zcGFjaW5nOi0xcHg7bGluZS1oZWlnaHQ6MTRweH1cbi5mYl9zaGFyZV9zaXpl X0xhcmdlIC5mYl9zaGFyZV9jb3VudF9yaWdodCAuZmJfc2hhcmVfY291bnRfaW5u ZXJ7Zm9udC1zaXplOiAxM3B4O2xpbmUtaGVpZ2h0OjE2cHg7cGFkZGluZzoycHgg NnB4IDRweDtmb250LXdlaWdodDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6LTFweH1c bi5mYl9zaGFyZV9jb3VudF9oaWRkZW4gLmZiX3NoYXJlX2NvdW50X251Yl90b3As XG4uZmJfc2hhcmVfY291bnRfaGlkZGVuIC5mYl9zaGFyZV9jb3VudF90b3AsXG4u ZmJfc2hhcmVfY291bnRfaGlkZGVuIC5mYl9zaGFyZV9jb3VudF9udWJfcmlnaHQs XG4uZmJfc2hhcmVfY291bnRfaGlkZGVuIC5mYl9zaGFyZV9jb3VudF9yaWdodHt2 aXNpYmlsaXR5OmhpZGRlbn1cbi5mYl9jb25uZWN0X2Jhcl9jb250YWluZXIgZGl2 LFxuLmZiX2Nvbm5lY3RfYmFyX2NvbnRhaW5lciBzcGFuLFxuLmZiX2Nvbm5lY3Rf YmFyX2NvbnRhaW5lciBhLFxuLmZiX2Nvbm5lY3RfYmFyX2NvbnRhaW5lciBpbWcs XG4uZmJfY29ubmVjdF9iYXJfY29udGFpbmVyIHN0cm9uZ3tiYWNrZ3JvdW5kOm5v bmU7Ym9yZGVyLXNwYWNpbmc6MDtib3JkZXI6MDtkaXJlY3Rpb246bHRyO2ZvbnQt c3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6 bm9ybWFsO2xpbmUtaGVpZ2h0OjE7bWFyZ2luOjA7b3ZlcmZsb3c6dmlzaWJsZTtw YWRkaW5nOjA7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO3Rl eHQtaW5kZW50OjA7dGV4dC1zaGFkb3c6bm9uZTt0ZXh0LXRyYW5zZm9ybTpub25l O3Zpc2liaWxpdHk6dmlzaWJsZTt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1zcGFj aW5nOm5vcm1hbDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1cbi5mYl9jb25uZWN0 X2Jhcl9jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7bGVmdDowICFpbXBvcnRhbnQ7 cmlnaHQ6MCAhaW1wb3J0YW50O2hlaWdodDo0MnB4ICFpbXBvcnRhbnQ7cGFkZGlu ZzowIDI1cHggIWltcG9ydGFudDttYXJnaW46MCAhaW1wb3J0YW50O3ZlcnRpY2Fs LWFsaWduOm1pZGRsZSAhaW1wb3J0YW50O2JvcmRlci1ib3R0b206MXB4IHNvbGlk ICMzMzMgIWltcG9ydGFudDtiYWNrZ3JvdW5kOiMzYjU5OTggIWltcG9ydGFudDt6 LWluZGV4Ojk5OTk5OTk5ICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBv cnRhbnR9XG4uZmJfY29ubmVjdF9iYXJfY29udGFpbmVyX2llNntwb3NpdGlvbjph YnNvbHV0ZTt0b3A6ZXhwcmVzc2lvbihkb2N1bWVudC5jb21wYXRNb2RlPT1cIkNT UzFDb21wYXRcIj8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCtc InB4XCI6Ym9keS5zY3JvbGxUb3ArXCJweFwiKX1cbi5mYl9jb25uZWN0X2Jhcntw b3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46YXV0bztoZWlnaHQ6MTAwXHUwMDI1O3dp ZHRoOjEwMFx1MDAyNTtwYWRkaW5nOjZweCAwIDAgMCAhaW1wb3J0YW50O2JhY2tn cm91bmQ6bm9uZTtjb2xvcjojZmZmICFpbXBvcnRhbnQ7Zm9udC1mYW1pbHk6XCJs dWNpZGEgZ3JhbmRlXCIsIHRhaG9tYSwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2Vy aWYgIWltcG9ydGFudDtmb250LXNpemU6IDEzcHggIWltcG9ydGFudDtmb250LXN0 eWxlOm5vcm1hbCAhaW1wb3J0YW50O2ZvbnQtdmFyaWFudDpub3JtYWwgIWltcG9y dGFudDtmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDtsZXR0ZXItc3BhY2lu Zzpub3JtYWwgIWltcG9ydGFudDtsaW5lLWhlaWdodDoxICFpbXBvcnRhbnQ7dGV4 dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudDt0ZXh0LWluZGVudDowICFpbXBv cnRhbnQ7dGV4dC1zaGFkb3c6bm9uZSAhaW1wb3J0YW50O3RleHQtdHJhbnNmb3Jt Om5vbmUgIWltcG9ydGFudDt3aGl0ZS1zcGFjZTpub3JtYWwgIWltcG9ydGFudDt3 b3JkLXNwYWNpbmc6bm9ybWFsICFpbXBvcnRhbnR9XG4uZmJfY29ubmVjdF9iYXIg YTpob3Zlcntjb2xvcjojZmZmfVxuLmZiX2Nvbm5lY3RfYmFyIC5mYl9wcm9maWxl IGltZ3toZWlnaHQ6MzBweDt3aWR0aDozMHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRs ZTttYXJnaW46MCA2cHggNXB4IDB9XG4uZmJfY29ubmVjdF9iYXIgZGl2IGEsXG4u ZmJfY29ubmVjdF9iYXIgc3Bhbixcbi5mYl9jb25uZWN0X2JhciBzcGFuIGF7Y29s b3I6I2JhYzZkYTtmb250LXNpemU6IDExcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmV9 XG4uZmJfY29ubmVjdF9iYXIgLmZiX2J1dHRvbnN7ZmxvYXQ6cmlnaHQ7bWFyZ2lu LXRvcDo3cHh9XG4uZmJfZWRnZV93aWRnZXRfd2l0aF9jb21tZW50e3Bvc2l0aW9u OnJlbGF0aXZlOyp6LWluZGV4OjEwMDB9XG4uZmJfZWRnZV93aWRnZXRfd2l0aF9j b21tZW50IHNwYW4uZmJfZWRnZV9jb21tZW50X3dpZGdldHtwb3NpdGlvbjphYnNv bHV0ZX1cbi5mYl9lZGdlX3dpZGdldF93aXRoX2NvbW1lbnQgc3Bhbi5mYl9lZGdl X2NvbW1lbnRfd2lkZ2V0IGlmcmFtZS5mYl9sdHJ7bGVmdDotNHB4fVxuLmZiX2Vk Z2Vfd2lkZ2V0X3dpdGhfY29tbWVudCBzcGFuLmZiX2VkZ2VfY29tbWVudF93aWRn ZXQgaWZyYW1lLmZiX3J0bHtsZWZ0OjJweH1cbi5mYl9lZGdlX3dpZGdldF93aXRo X2NvbW1lbnQgc3Bhbi5mYl9zZW5kX2J1dHRvbl9mb3JtX3dpZGdldHtsZWZ0OjA7 ei1pbmRleDoxfVxuLmZiX2VkZ2Vfd2lkZ2V0X3dpdGhfY29tbWVudCBzcGFuLmZi X3NlbmRfYnV0dG9uX2Zvcm1fd2lkZ2V0IC5GQl9Mb2FkZXJ7bGVmdDowO3RvcDox cHg7bWFyZ2luLXRvcDo2cHg7bWFyZ2luLWxlZnQ6MDtiYWNrZ3JvdW5kLXBvc2l0 aW9uOjUwXHUwMDI1IDUwXHUwMDI1O2JhY2tncm91bmQtY29sb3I6I2ZmZjtoZWln aHQ6MTUwcHg7d2lkdGg6Mzk0cHg7Ym9yZGVyOjFweCAjNjY2IHNvbGlkO2JvcmRl ci1ib3R0b206MnB4IHNvbGlkICMyODNlNmM7ei1pbmRleDoxfVxuLmZiX2VkZ2Vf d2lkZ2V0X3dpdGhfY29tbWVudCBzcGFuLmZiX3NlbmRfYnV0dG9uX2Zvcm1fd2lk Z2V0LmRhcmsgLkZCX0xvYWRlcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7Ym9yZGVy LWJvdHRvbToycHggc29saWQgI2NjY31cbi5mYl9lZGdlX3dpZGdldF93aXRoX2Nv bW1lbnQgc3Bhbi5mYl9zZW5kX2J1dHRvbl9mb3JtX3dpZGdldC5zaWRlcmVuZGVy XG4uRkJfTG9hZGVye21hcmdpbi10b3A6MH1cbi5mYnBsdWdpbnJlY29tbWVuZGF0 aW9uc2JhcmxlZnQsXG4uZmJwbHVnaW5yZWNvbW1lbmRhdGlvbnNiYXJyaWdodHtw b3NpdGlvbjpmaXhlZCAhaW1wb3J0YW50O2JvdHRvbTowO3otaW5kZXg6OTk5fVxu XC8qIFx1MDA0MG5vZmxpcCAqXC9cbi5mYnBsdWdpbnJlY29tbWVuZGF0aW9uc2Jh cmxlZnR7bGVmdDoxMHB4fVxuXC8qIFx1MDA0MG5vZmxpcCAqXC9cbi5mYnBsdWdp bnJlY29tbWVuZGF0aW9uc2JhcnJpZ2h0e3JpZ2h0OjEwcHh9XG4iLCBbImZiLmNz cy5iYXNlIiwiZmIuY3NzLmRpYWxvZyIsImZiLmNzcy5pZnJhbWV3aWRnZXQiLCJm Yi5jc3MuYnV0dG9uIiwiZmIuY3NzLnNoYXJlYnV0dG9uIiwiZmIuY3NzLmNvbm5l Y3RiYXJ3aWRnZXQiLCJmYi5jc3MuZWRnZWNvbW1lbnR3aWRnZXQiLCJmYi5jc3Mu c2VuZGJ1dHRvbmZvcm13aWRnZXQiLCJmYi5jc3MucGx1Z2luLnJlY29tbWVuZGF0 aW9uc2JhciJdKTsgfQ== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=widget.js Content-Type: application/javascript; name=widget.js Content-Location: http://widgets.twimg.com/j/2/widget.js Content-Transfer-Encoding: Base64 LyoKICogdHdpdHRlci10ZXh0LWpzIDEuNC4xMAogKgogKiBDb3B5cmlnaHQgMjAx MSBUd2l0dGVyLCBJbmMuCiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogKiB5b3UgbWF5 IG5vdCB1c2UgdGhpcyB3b3JrIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl IExpY2Vuc2UuCiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z ZSBhdDoKICoKICogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ Q0VOU0UtMi4wCiAqLwppZighd2luZG93LnR3dHRyKXt3aW5kb3cudHd0dHI9e319 KGZ1bmN0aW9uKCl7dHd0dHIudHh0PXt9O3R3dHRyLnR4dC5yZWdleGVuPXt9O3Zh ciBDPXsiJiI6IiZhbXA7IiwiPiI6IiZndDsiLCI8IjoiJmx0OyIsJyInOiImcXVv dDsiLCInIjoiJiMzOTsifTt0d3R0ci50eHQuaHRtbEVzY2FwZT1mdW5jdGlvbihS KXtyZXR1cm4gUiYmUi5yZXBsYWNlKC9bJiInPjxdL2csZnVuY3Rpb24oUyl7cmV0 dXJuIENbU119KX07ZnVuY3Rpb24gRChTLFIpe1I9Unx8IiI7aWYodHlwZW9mIFMh PT0ic3RyaW5nIil7aWYoUy5nbG9iYWwmJlIuaW5kZXhPZigiZyIpPDApe1IrPSJn In1pZihTLmlnbm9yZUNhc2UmJlIuaW5kZXhPZigiaSIpPDApe1IrPSJpIn1pZihT Lm11bHRpbGluZSYmUi5pbmRleE9mKCJtIik8MCl7Uis9Im0ifVM9Uy5zb3VyY2V9 cmV0dXJuIG5ldyBSZWdFeHAoUy5yZXBsYWNlKC8jXHsoXHcrKVx9L2csZnVuY3Rp b24oVSxUKXt2YXIgVj10d3R0ci50eHQucmVnZXhlbltUXXx8IiI7aWYodHlwZW9m IFYhPT0ic3RyaW5nIil7Vj1WLnNvdXJjZX1yZXR1cm4gVn0pLFIpfWZ1bmN0aW9u IEUoUyxSKXtyZXR1cm4gUy5yZXBsYWNlKC8jXHsoXHcrKVx9L2csZnVuY3Rpb24o VSxUKXtyZXR1cm4gUltUXXx8IiJ9KX1mdW5jdGlvbiBCKFMsVSxSKXt2YXIgVD1T dHJpbmcuZnJvbUNoYXJDb2RlKFUpO2lmKFIhPT1VKXtUKz0iLSIrU3RyaW5nLmZy b21DaGFyQ29kZShSKX1TLnB1c2goVCk7cmV0dXJuIFN9dmFyIEo9U3RyaW5nLmZy b21DaGFyQ29kZTt2YXIgSD1bSigzMiksSigxMzMpLEooMTYwKSxKKDU3NjApLEoo NjE1OCksSig4MjMyKSxKKDgyMzMpLEooODIzOSksSig4Mjg3KSxKKDEyMjg4KV07 QihILDksMTMpO0IoSCw4MTkyLDgyMDIpO3R3dHRyLnR4dC5yZWdleGVuLnNwYWNl c19ncm91cD1EKEguam9pbigiIikpO3R3dHRyLnR4dC5yZWdleGVuLnNwYWNlcz1E KCJbIitILmpvaW4oIiIpKyJdIik7dHd0dHIudHh0LnJlZ2V4ZW4ucHVuY3Q9L1wh JyMlJidcKFwpKlwrLFxcXC1cLlwvOjs8PT5cP0BcW1xdXF5fe3x9fi87dHd0dHIu dHh0LnJlZ2V4ZW4uYXRTaWducz0vW0DvvKBdLzt0d3R0ci50eHQucmVnZXhlbi5l eHRyYWN0TWVudGlvbnM9RCgvKF58W15hLXpBLVowLTlfXSkoI3thdFNpZ25zfSko W2EtekEtWjAtOV9dezEsMjB9KSg/PSgufCQpKS9nKTt0d3R0ci50eHQucmVnZXhl bi5leHRyYWN0UmVwbHk9RCgvXig/OiN7c3BhY2VzfSkqI3thdFNpZ25zfShbYS16 QS1aMC05X117MSwyMH0pLyk7dHd0dHIudHh0LnJlZ2V4ZW4ubGlzdE5hbWU9L1th LXpBLVpdW2EtekEtWjAtOV9cLVx1MDA4MC1cdTAwZmZdezAsMjR9Lzt0d3R0ci50 eHQucmVnZXhlbi5leHRyYWN0TWVudGlvbnNPckxpc3RzPUQoLyhefFteYS16QS1a MC05X10pKCN7YXRTaWduc30pKFthLXpBLVowLTlfXXsxLDIwfSkoXC9bYS16QS1a XVthLXpBLVowLTlfXC1dezAsMjR9KT8oPz0oLnwkKSkvZyk7dmFyIE49W107QihO LDEwMjQsMTI3OSk7QihOLDEyODAsMTMxOSk7QihOLDExNzQ0LDExNzc1KTtCKE4s NDI1NjAsNDI2NTUpO0IoTiw0MzUyLDQ2MDcpO0IoTiwxMjU5MiwxMjY3Nyk7QihO LDQzMzYwLDQzMzkxKTtCKE4sNDQwMzIsNTUyMTUpO0IoTiw1NTIxNiw1NTI5NSk7 QihOLDY1NDQxLDY1NTAwKTtCKE4sMTI0NDksMTI1MzgpO0IoTiwxMjU0MCwxMjU0 Mik7QihOLDY1MzgyLDY1NDM5KTtCKE4sNjUzOTIsNjUzOTIpO0IoTiw2NTI5Niw2 NTMwNSk7QihOLDY1MzEzLDY1MzM4KTtCKE4sNjUzNDUsNjUzNzApO0IoTiwxMjM1 MywxMjQzOCk7QihOLDEyNDQxLDEyNDQ2KTtCKE4sMTMzMTIsMTk5MDMpO0IoTiwx OTk2OCw0MDk1OSk7QihOLDE3MzgyNCwxNzc5ODMpO0IoTiwxNzc5ODQsMTc4MjA3 KTtCKE4sMTk0NTYwLDE5NTEwMyk7QihOLDEyMjkzLDEyMjkzKTtCKE4sMTIzNDcs MTIzNDcpO3R3dHRyLnR4dC5yZWdleGVuLm5vbkxhdGluSGFzaHRhZ0NoYXJzPUQo Ti5qb2luKCIiKSk7dHd0dHIudHh0LnJlZ2V4ZW4ubGF0aW5BY2NlbnRDaGFycz1E KCLDgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOW w5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOv w7DDscOyw7PDtMO1w7bDuMO5w7rDu8O8w73DvsWfXFwzMDNcXDI3NyIpO3R3dHRy LnR4dC5yZWdleGVuLmVuZFNjcmVlbk5hbWVNYXRjaD1EKC9eKD86I3thdFNpZ25z fXxbI3tsYXRpbkFjY2VudENoYXJzfV18OlwvXC8pLyk7dHd0dHIudHh0LnJlZ2V4 ZW4uaGFzaHRhZ0JvdW5kYXJ5PUQoLyg/Ol58JHwje3NwYWNlc318W+OAjOOAjeOA guOAgS4sIe+8gT/vvJ86OyInXSkvKTt0d3R0ci50eHQucmVnZXhlbi5oYXNodGFn QWxwaGE9RCgvW2Etel8je2xhdGluQWNjZW50Q2hhcnN9I3tub25MYXRpbkhhc2h0 YWdDaGFyc31dL2kpO3R3dHRyLnR4dC5yZWdleGVuLmhhc2h0YWdBbHBoYU51bWVy aWM9RCgvW2EtejAtOV8je2xhdGluQWNjZW50Q2hhcnN9I3tub25MYXRpbkhhc2h0 YWdDaGFyc31dL2kpO3R3dHRyLnR4dC5yZWdleGVuLmF1dG9MaW5rSGFzaHRhZ3M9 RCgvKCN7aGFzaHRhZ0JvdW5kYXJ5fSkoI3zvvIMpKCN7aGFzaHRhZ0FscGhhTnVt ZXJpY30qI3toYXNodGFnQWxwaGF9I3toYXNodGFnQWxwaGFOdW1lcmljfSopL2dp KTt0d3R0ci50eHQucmVnZXhlbi5hdXRvTGlua1VzZXJuYW1lc09yTGlzdHM9Lyhe fFteYS16QS1aMC05X118UlQ6PykoW0DvvKBdKykoW2EtekEtWjAtOV9dezEsMjB9 KShcL1thLXpBLVpdW2EtekEtWjAtOV9cLV17MCwyNH0pPy9nO3R3dHRyLnR4dC5y ZWdleGVuLmF1dG9MaW5rRW1vdGljb249Lyg4XC1cI3w4XC1FfFwrXC1cKHxcYFxA fFxgT3xcJmx0O1x8On5cKHxcfTpvXHt8OlwtXFt8XCZndDtvXCZsdDt8WFwtXC98 XFs6LVxdXC1JXC18XC9cL1wvXC/DllxcXFxcXFxcfFwoXHw6XHxcL1wpfOKIkTpc KlwpfFwoIFx8IFwpKS9nO3R3dHRyLnR4dC5yZWdleGVuLnZhbGlkUHJlY2VkaW5n Q2hhcnM9RCgvKD86W14tXC8iJyE9QS1aYS16MC05X0DvvKBcLl18XikvKTt0d3R0 ci50eHQucmVnZXhlbi5pbnZhbGlkRG9tYWluQ2hhcnM9RSgiXHUwMEEwI3twdW5j dH0je3NwYWNlc19ncm91cH0iLHR3dHRyLnR4dC5yZWdleGVuKTt0d3R0ci50eHQu cmVnZXhlbi52YWxpZERvbWFpbkNoYXJzPUQoL1teI3tpbnZhbGlkRG9tYWluQ2hh cnN9XS8pO3R3dHRyLnR4dC5yZWdleGVuLnZhbGlkU3ViZG9tYWluPUQoLyg/Oig/ OiN7dmFsaWREb21haW5DaGFyc30oPzpbXy1dfCN7dmFsaWREb21haW5DaGFyc30p Kik/I3t2YWxpZERvbWFpbkNoYXJzfVwuKS8pO3R3dHRyLnR4dC5yZWdleGVuLnZh bGlkRG9tYWluTmFtZT1EKC8oPzooPzoje3ZhbGlkRG9tYWluQ2hhcnN9KD86LXwj e3ZhbGlkRG9tYWluQ2hhcnN9KSopPyN7dmFsaWREb21haW5DaGFyc31cLikvKTt0 d3R0ci50eHQucmVnZXhlbi52YWxpZEdUTEQ9RCgvKD86KD86YWVyb3xhc2lhfGJp enxjYXR8Y29tfGNvb3B8ZWR1fGdvdnxpbmZvfGludHxqb2JzfG1pbHxtb2JpfG11 c2V1bXxuYW1lfG5ldHxvcmd8cHJvfHRlbHx0cmF2ZWwpKD89W15hLXpBLVpdfCQp KS8pO3R3dHRyLnR4dC5yZWdleGVuLnZhbGlkQ0NUTEQ9RCgvKD86KD86YWN8YWR8 YWV8YWZ8YWd8YWl8YWx8YW18YW58YW98YXF8YXJ8YXN8YXR8YXV8YXd8YXh8YXp8 YmF8YmJ8YmR8YmV8YmZ8Ymd8Ymh8Yml8Ymp8Ym18Ym58Ym98YnJ8YnN8YnR8YnZ8 Ynd8Ynl8Ynp8Y2F8Y2N8Y2R8Y2Z8Y2d8Y2h8Y2l8Y2t8Y2x8Y218Y258Y298Y3J8 Y3N8Y3V8Y3Z8Y3h8Y3l8Y3p8ZGR8ZGV8ZGp8ZGt8ZG18ZG98ZHp8ZWN8ZWV8ZWd8 ZWh8ZXJ8ZXN8ZXR8ZXV8Zml8Zmp8Zmt8Zm18Zm98ZnJ8Z2F8Z2J8Z2R8Z2V8Z2Z8 Z2d8Z2h8Z2l8Z2x8Z218Z258Z3B8Z3F8Z3J8Z3N8Z3R8Z3V8Z3d8Z3l8aGt8aG18 aG58aHJ8aHR8aHV8aWR8aWV8aWx8aW18aW58aW98aXF8aXJ8aXN8aXR8amV8am18 am98anB8a2V8a2d8a2h8a2l8a218a258a3B8a3J8a3d8a3l8a3p8bGF8bGJ8bGN8 bGl8bGt8bHJ8bHN8bHR8bHV8bHZ8bHl8bWF8bWN8bWR8bWV8bWd8bWh8bWt8bWx8 bW18bW58bW98bXB8bXF8bXJ8bXN8bXR8bXV8bXZ8bXd8bXh8bXl8bXp8bmF8bmN8 bmV8bmZ8bmd8bml8bmx8bm98bnB8bnJ8bnV8bnp8b218cGF8cGV8cGZ8cGd8cGh8 cGt8cGx8cG18cG58cHJ8cHN8cHR8cHd8cHl8cWF8cmV8cm98cnN8cnV8cnd8c2F8 c2J8c2N8c2R8c2V8c2d8c2h8c2l8c2p8c2t8c2x8c218c258c298c3J8c3N8c3R8 c3V8c3Z8c3l8c3p8dGN8dGR8dGZ8dGd8dGh8dGp8dGt8dGx8dG18dG58dG98dHB8 dHJ8dHR8dHZ8dHd8dHp8dWF8dWd8dWt8dXN8dXl8dXp8dmF8dmN8dmV8dmd8dml8 dm58dnV8d2Z8d3N8eWV8eXR8emF8em18encpKD89W15hLXpBLVpdfCQpKS8pO3R3 dHRyLnR4dC5yZWdleGVuLnZhbGlkUHVueWNvZGU9RCgvKD86eG4tLVswLTlhLXpd KykvKTt0d3R0ci50eHQucmVnZXhlbi52YWxpZERvbWFpbj1EKC8oPzoje3ZhbGlk U3ViZG9tYWlufSoje3ZhbGlkRG9tYWluTmFtZX0oPzoje3ZhbGlkR1RMRH18I3t2 YWxpZENDVExEfXwje3ZhbGlkUHVueWNvZGV9KSkvKTt0d3R0ci50eHQucmVnZXhl bi52YWxpZFNob3J0RG9tYWluPUQoL14je3ZhbGlkRG9tYWluTmFtZX0je3ZhbGlk Q0NUTER9JC8pO3R3dHRyLnR4dC5yZWdleGVuLnZhbGlkUG9ydE51bWJlcj1EKC9b MC05XSsvKTt0d3R0ci50eHQucmVnZXhlbi52YWxpZEdlbmVyYWxVcmxQYXRoQ2hh cnM9RCgvW2EtejAtOSFcKic7Oj1cK1wkXC8lI1xbXF1cLV8sfnwmI3tsYXRpbkFj Y2VudENoYXJzfV0vaSk7dHd0dHIudHh0LnJlZ2V4ZW4ud2lraXBlZGlhRGlzYW1i aWd1YXRpb249RCgvKD86XCgje3ZhbGlkR2VuZXJhbFVybFBhdGhDaGFyc30rXCkp L2kpO3R3dHRyLnR4dC5yZWdleGVuLnZhbGlkVXJsUGF0aENoYXJzPUQoLyg/OiN7 d2lraXBlZGlhRGlzYW1iaWd1YXRpb259fEAje3ZhbGlkR2VuZXJhbFVybFBhdGhD aGFyc30rXC98W1wuLF0/I3t2YWxpZEdlbmVyYWxVcmxQYXRoQ2hhcnN9PykvaSk7 dHd0dHIudHh0LnJlZ2V4ZW4udmFsaWRVcmxQYXRoRW5kaW5nQ2hhcnM9RCgvKD86 W1wrXC1hLXowLTk9XyNcLyN7bGF0aW5BY2NlbnRDaGFyc31dfCN7d2lraXBlZGlh RGlzYW1iaWd1YXRpb259KS9pKTt0d3R0ci50eHQucmVnZXhlbi52YWxpZFVybFF1 ZXJ5Q2hhcnM9L1thLXowLTkhXConXChcKTs6Jj1cK1wkXC8lI1xbXF1cLV9cLix+ fF0vaTt0d3R0ci50eHQucmVnZXhlbi52YWxpZFVybFF1ZXJ5RW5kaW5nQ2hhcnM9 L1thLXowLTlfJj0jXC9dL2k7dHd0dHIudHh0LnJlZ2V4ZW4uZXh0cmFjdFVybD1E KCIoKCN7dmFsaWRQcmVjZWRpbmdDaGFyc30pKChodHRwcz86XFwvXFwvKT8oI3t2 YWxpZERvbWFpbn0pKD86Oigje3ZhbGlkUG9ydE51bWJlcn0pKT8oXFwvKD86I3t2 YWxpZFVybFBhdGhDaGFyc30rI3t2YWxpZFVybFBhdGhFbmRpbmdDaGFyc318I3t2 YWxpZFVybFBhdGhDaGFyc30rI3t2YWxpZFVybFBhdGhFbmRpbmdDaGFyc30/fCN7 dmFsaWRVcmxQYXRoRW5kaW5nQ2hhcnN9KT8pPyhcXD8je3ZhbGlkVXJsUXVlcnlD aGFyc30qI3t2YWxpZFVybFF1ZXJ5RW5kaW5nQ2hhcnN9KT8pKSIsImdpIik7dHd0 dHIudHh0LnJlZ2V4ZW4udmFsaWRhdGVVcmxVbnJlc2VydmVkPS9bYS16MC05XC0u X35dL2k7dHd0dHIudHh0LnJlZ2V4ZW4udmFsaWRhdGVVcmxQY3RFbmNvZGVkPS8o PzolWzAtOWEtZl17Mn0pL2k7dHd0dHIudHh0LnJlZ2V4ZW4udmFsaWRhdGVVcmxT dWJEZWxpbXM9L1shJCYnKCkqKyw7PV0vaTt0d3R0ci50eHQucmVnZXhlbi52YWxp ZGF0ZVVybFBjaGFyPUQoIig/OiN7dmFsaWRhdGVVcmxVbnJlc2VydmVkfXwje3Zh bGlkYXRlVXJsUGN0RW5jb2RlZH18I3t2YWxpZGF0ZVVybFN1YkRlbGltc318Wzp8 QF0pIiwiaSIpO3R3dHRyLnR4dC5yZWdleGVuLnZhbGlkYXRlVXJsU2NoZW1lPS8o PzpbYS16XVthLXowLTkrXC0uXSopL2k7dHd0dHIudHh0LnJlZ2V4ZW4udmFsaWRh dGVVcmxVc2VyaW5mbz1EKCIoPzoje3ZhbGlkYXRlVXJsVW5yZXNlcnZlZH18I3t2 YWxpZGF0ZVVybFBjdEVuY29kZWR9fCN7dmFsaWRhdGVVcmxTdWJEZWxpbXN9fDop KiIsImkiKTt0d3R0ci50eHQucmVnZXhlbi52YWxpZGF0ZVVybERlY09jdGV0PS8o PzpbMC05XXwoPzpbMS05XVswLTldKXwoPzoxWzAtOV17Mn0pfCg/OjJbMC00XVsw LTldKXwoPzoyNVswLTVdKSkvaTt0d3R0ci50eHQucmVnZXhlbi52YWxpZGF0ZVVy bElwdjQ9RCgvKD86I3t2YWxpZGF0ZVVybERlY09jdGV0fSg/OlwuI3t2YWxpZGF0 ZVVybERlY09jdGV0fSl7M30pL2kpO3R3dHRyLnR4dC5yZWdleGVuLnZhbGlkYXRl VXJsSXB2Nj0vKD86XFtbYS1mMC05OlwuXStcXSkvaTt0d3R0ci50eHQucmVnZXhl bi52YWxpZGF0ZVVybElwPUQoIig/OiN7dmFsaWRhdGVVcmxJcHY0fXwje3ZhbGlk YXRlVXJsSXB2Nn0pIiwiaSIpO3R3dHRyLnR4dC5yZWdleGVuLnZhbGlkYXRlVXJs U3ViRG9tYWluU2VnbWVudD0vKD86W2EtejAtOV0oPzpbYS16MC05X1wtXSpbYS16 MC05XSk/KS9pO3R3dHRyLnR4dC5yZWdleGVuLnZhbGlkYXRlVXJsRG9tYWluU2Vn bWVudD0vKD86W2EtejAtOV0oPzpbYS16MC05XC1dKlthLXowLTldKT8pL2k7dHd0 dHIudHh0LnJlZ2V4ZW4udmFsaWRhdGVVcmxEb21haW5UbGQ9Lyg/OlthLXpdKD86 W2EtejAtOVwtXSpbYS16MC05XSk/KS9pO3R3dHRyLnR4dC5yZWdleGVuLnZhbGlk YXRlVXJsRG9tYWluPUQoLyg/Oig/OiN7dmFsaWRhdGVVcmxTdWJEb21haW5TZWdt ZW50XX1cLikqKD86I3t2YWxpZGF0ZVVybERvbWFpblNlZ21lbnRdfVwuKSN7dmFs aWRhdGVVcmxEb21haW5UbGR9KS9pKTt0d3R0ci50eHQucmVnZXhlbi52YWxpZGF0 ZVVybEhvc3Q9RCgiKD86I3t2YWxpZGF0ZVVybElwfXwje3ZhbGlkYXRlVXJsRG9t YWlufSkiLCJpIik7dHd0dHIudHh0LnJlZ2V4ZW4udmFsaWRhdGVVcmxVbmljb2Rl U3ViRG9tYWluU2VnbWVudD0vKD86KD86W2EtejAtOV18W15cdTAwMDAtXHUwMDdm XSkoPzooPzpbYS16MC05X1wtXXxbXlx1MDAwMC1cdTAwN2ZdKSooPzpbYS16MC05 XXxbXlx1MDAwMC1cdTAwN2ZdKSk/KS9pO3R3dHRyLnR4dC5yZWdleGVuLnZhbGlk YXRlVXJsVW5pY29kZURvbWFpblNlZ21lbnQ9Lyg/Oig/OlthLXowLTldfFteXHUw MDAwLVx1MDA3Zl0pKD86KD86W2EtejAtOVwtXXxbXlx1MDAwMC1cdTAwN2ZdKSoo PzpbYS16MC05XXxbXlx1MDAwMC1cdTAwN2ZdKSk/KS9pO3R3dHRyLnR4dC5yZWdl eGVuLnZhbGlkYXRlVXJsVW5pY29kZURvbWFpblRsZD0vKD86KD86W2Etel18W15c dTAwMDAtXHUwMDdmXSkoPzooPzpbYS16MC05XC1dfFteXHUwMDAwLVx1MDA3Zl0p Kig/OlthLXowLTldfFteXHUwMDAwLVx1MDA3Zl0pKT8pL2k7dHd0dHIudHh0LnJl Z2V4ZW4udmFsaWRhdGVVcmxVbmljb2RlRG9tYWluPUQoLyg/Oig/OiN7dmFsaWRh dGVVcmxVbmljb2RlU3ViRG9tYWluU2VnbWVudH1cLikqKD86I3t2YWxpZGF0ZVVy bFVuaWNvZGVEb21haW5TZWdtZW50fVwuKSN7dmFsaWRhdGVVcmxVbmljb2RlRG9t YWluVGxkfSkvaSk7dHd0dHIudHh0LnJlZ2V4ZW4udmFsaWRhdGVVcmxVbmljb2Rl SG9zdD1EKCIoPzoje3ZhbGlkYXRlVXJsSXB9fCN7dmFsaWRhdGVVcmxVbmljb2Rl RG9tYWlufSkiLCJpIik7dHd0dHIudHh0LnJlZ2V4ZW4udmFsaWRhdGVVcmxQb3J0 PS9bMC05XXsxLDV9Lzt0d3R0ci50eHQucmVnZXhlbi52YWxpZGF0ZVVybFVuaWNv ZGVBdXRob3JpdHk9RCgiKD86KCN7dmFsaWRhdGVVcmxVc2VyaW5mb30pQCk/KCN7 dmFsaWRhdGVVcmxVbmljb2RlSG9zdH0pKD86Oigje3ZhbGlkYXRlVXJsUG9ydH0p KT8iLCJpIik7dHd0dHIudHh0LnJlZ2V4ZW4udmFsaWRhdGVVcmxBdXRob3JpdHk9 RCgiKD86KCN7dmFsaWRhdGVVcmxVc2VyaW5mb30pQCk/KCN7dmFsaWRhdGVVcmxI b3N0fSkoPzo6KCN7dmFsaWRhdGVVcmxQb3J0fSkpPyIsImkiKTt0d3R0ci50eHQu cmVnZXhlbi52YWxpZGF0ZVVybFBhdGg9RCgvKFwvI3t2YWxpZGF0ZVVybFBjaGFy fSopKi9pKTt0d3R0ci50eHQucmVnZXhlbi52YWxpZGF0ZVVybFF1ZXJ5PUQoLygj e3ZhbGlkYXRlVXJsUGNoYXJ9fFwvfFw/KSovaSk7dHd0dHIudHh0LnJlZ2V4ZW4u dmFsaWRhdGVVcmxGcmFnbWVudD1EKC8oI3t2YWxpZGF0ZVVybFBjaGFyfXxcL3xc PykqL2kpO3R3dHRyLnR4dC5yZWdleGVuLnZhbGlkYXRlVXJsVW5lbmNvZGVkPUQo Il4oPzooW146Lz8jXSspOlxcL1xcLyk/KFteLz8jXSopKFtePyNdKikoPzpcXD8o W14jXSopKT8oPzojKC4qKSk/JCIsImkiKTt2YXIgQT0idHdlZXQtdXJsIjt2YXIg Rz0ibGlzdC1zbHVnIjt2YXIgUT0idXNlcm5hbWUiO3ZhciBNPSJoYXNodGFnIjt2 YXIgTz0nIHJlbD0ibm9mb2xsb3ciJztmdW5jdGlvbiBLKFQpe3ZhciBTPXt9O2Zv cih2YXIgUiBpbiBUKXtpZihULmhhc093blByb3BlcnR5KFIpKXtTW1JdPVRbUl19 fXJldHVybiBTfXR3dHRyLnR4dC5hdXRvTGluaz1mdW5jdGlvbihTLFIpe1I9SyhS fHx7fSk7cmV0dXJuIHR3dHRyLnR4dC5hdXRvTGlua1VzZXJuYW1lc09yTGlzdHMo dHd0dHIudHh0LmF1dG9MaW5rVXJsc0N1c3RvbSh0d3R0ci50eHQuYXV0b0xpbmtI YXNodGFncyhTLFIpLFIpLFIpfTt0d3R0ci50eHQuYXV0b0xpbmtVc2VybmFtZXNP ckxpc3RzPWZ1bmN0aW9uKFgsVil7Vj1LKFZ8fHt9KTtWLnVybENsYXNzPVYudXJs Q2xhc3N8fEE7Vi5saXN0Q2xhc3M9Vi5saXN0Q2xhc3N8fEc7Vi51c2VybmFtZUNs YXNzPVYudXNlcm5hbWVDbGFzc3x8UTtWLnVzZXJuYW1lVXJsQmFzZT1WLnVzZXJu YW1lVXJsQmFzZXx8Imh0dHA6Ly90d2l0dGVyLmNvbS8iO1YubGlzdFVybEJhc2U9 Vi5saXN0VXJsQmFzZXx8Imh0dHA6Ly90d2l0dGVyLmNvbS8iO2lmKCFWLnN1cHBy ZXNzTm9Gb2xsb3cpe3ZhciBSPU99dmFyIFc9IiIsVT10d3R0ci50eHQuc3BsaXRU YWdzKFgpO2Zvcih2YXIgVD0wO1Q8VS5sZW5ndGg7VCsrKXt2YXIgUz1VW1RdO2lm KFQhPT0wKXtXKz0oKFQlMj09PTApPyI+IjoiPCIpfWlmKFQlNCE9PTApe1crPVN9 ZWxzZXtXKz1TLnJlcGxhY2UodHd0dHIudHh0LnJlZ2V4ZW4uYXV0b0xpbmtVc2Vy bmFtZXNPckxpc3RzLGZ1bmN0aW9uKGYsaSxhLGUsWSxjLGope3ZhciBaPWouc2xp Y2UoYytmLmxlbmd0aCk7dmFyIGg9e2JlZm9yZTppLGF0OmEsdXNlcjp0d3R0ci50 eHQuaHRtbEVzY2FwZShlKSxzbGFzaExpc3RuYW1lOnR3dHRyLnR4dC5odG1sRXNj YXBlKFkpLGV4dHJhSHRtbDpSLHByZUNodW5rOiIiLGNodW5rOnR3dHRyLnR4dC5o dG1sRXNjYXBlKGopLHBvc3RDaHVuazoiIn07Zm9yKHZhciBiIGluIFYpe2lmKFYu aGFzT3duUHJvcGVydHkoYikpe2hbYl09VltiXX19aWYoWSYmIVYuc3VwcHJlc3NM aXN0cyl7dmFyIGc9aC5jaHVuaz1FKCIje3VzZXJ9I3tzbGFzaExpc3RuYW1lfSIs aCk7aC5saXN0PXR3dHRyLnR4dC5odG1sRXNjYXBlKGcudG9Mb3dlckNhc2UoKSk7 cmV0dXJuIEUoJyN7YmVmb3JlfSN7YXR9PGEgY2xhc3M9IiN7dXJsQ2xhc3N9ICN7 bGlzdENsYXNzfSIgaHJlZj0iI3tsaXN0VXJsQmFzZX0je2xpc3R9IiN7ZXh0cmFI dG1sfT4je3ByZUNodW5rfSN7Y2h1bmt9I3twb3N0Q2h1bmt9PC9hPicsaCl9ZWxz ZXtpZihaJiZaLm1hdGNoKHR3dHRyLnR4dC5yZWdleGVuLmVuZFNjcmVlbk5hbWVN YXRjaCkpe3JldHVybiBmfWVsc2V7aC5jaHVuaz10d3R0ci50eHQuaHRtbEVzY2Fw ZShlKTtoLmRhdGFTY3JlZW5OYW1lPSFWLnN1cHByZXNzRGF0YVNjcmVlbk5hbWU/ RSgnZGF0YS1zY3JlZW4tbmFtZT0iI3tjaHVua30iICcsaCk6IiI7cmV0dXJuIEUo JyN7YmVmb3JlfSN7YXR9PGEgY2xhc3M9IiN7dXJsQ2xhc3N9ICN7dXNlcm5hbWVD bGFzc30iICN7ZGF0YVNjcmVlbk5hbWV9aHJlZj0iI3t1c2VybmFtZVVybEJhc2V9 I3tjaHVua30iI3tleHRyYUh0bWx9PiN7cHJlQ2h1bmt9I3tjaHVua30je3Bvc3RD aHVua308L2E+JyxoKX19fSl9fXJldHVybiBXfTt0d3R0ci50eHQuYXV0b0xpbmtI YXNodGFncz1mdW5jdGlvbihULFMpe1M9SyhTfHx7fSk7Uy51cmxDbGFzcz1TLnVy bENsYXNzfHxBO1MuaGFzaHRhZ0NsYXNzPVMuaGFzaHRhZ0NsYXNzfHxNO1MuaGFz aHRhZ1VybEJhc2U9Uy5oYXNodGFnVXJsQmFzZXx8Imh0dHA6Ly90d2l0dGVyLmNv bS9zZWFyY2g/cT0lMjMiO2lmKCFTLnN1cHByZXNzTm9Gb2xsb3cpe3ZhciBSPU99 cmV0dXJuIFQucmVwbGFjZSh0d3R0ci50eHQucmVnZXhlbi5hdXRvTGlua0hhc2h0 YWdzLGZ1bmN0aW9uKFYsVyxYLFope3ZhciBZPXtiZWZvcmU6VyxoYXNoOnR3dHRy LnR4dC5odG1sRXNjYXBlKFgpLHByZVRleHQ6IiIsdGV4dDp0d3R0ci50eHQuaHRt bEVzY2FwZShaKSxwb3N0VGV4dDoiIixleHRyYUh0bWw6Un07Zm9yKHZhciBVIGlu IFMpe2lmKFMuaGFzT3duUHJvcGVydHkoVSkpe1lbVV09U1tVXX19cmV0dXJuIEUo JyN7YmVmb3JlfTxhIGhyZWY9IiN7aGFzaHRhZ1VybEJhc2V9I3t0ZXh0fSIgdGl0 bGU9IiMje3RleHR9IiBjbGFzcz0iI3t1cmxDbGFzc30gI3toYXNodGFnQ2xhc3N9 IiN7ZXh0cmFIdG1sfT4je2hhc2h9I3twcmVUZXh0fSN7dGV4dH0je3Bvc3RUZXh0 fTwvYT4nLFkpfSl9O3R3dHRyLnR4dC5hdXRvTGlua1VybHNDdXN0b209ZnVuY3Rp b24oVSxTKXtTPUsoU3x8e30pO2lmKCFTLnN1cHByZXNzTm9Gb2xsb3cpe1MucmVs PSJub2ZvbGxvdyJ9aWYoUy51cmxDbGFzcyl7U1siY2xhc3MiXT1TLnVybENsYXNz O2RlbGV0ZSBTLnVybENsYXNzfXZhciBWLFQsUjtpZihTLnVybEVudGl0aWVzKXtW PXt9O2ZvcihUPTAsUj1TLnVybEVudGl0aWVzLmxlbmd0aDtUPFI7VCsrKXtWW1Mu dXJsRW50aXRpZXNbVF0udXJsXT1TLnVybEVudGl0aWVzW1RdfX1kZWxldGUgUy5z dXBwcmVzc05vRm9sbG93O2RlbGV0ZSBTLnN1cHByZXNzRGF0YVNjcmVlbk5hbWU7 ZGVsZXRlIFMubGlzdENsYXNzO2RlbGV0ZSBTLnVzZXJuYW1lQ2xhc3M7ZGVsZXRl IFMudXNlcm5hbWVVcmxCYXNlO2RlbGV0ZSBTLmxpc3RVcmxCYXNlO3JldHVybiBV LnJlcGxhY2UodHd0dHIudHh0LnJlZ2V4ZW4uZXh0cmFjdFVybCxmdW5jdGlvbihl LGgsZyxYLGksYSxjLGosVyl7dmFyIFo7aWYoaSl7dmFyIFk9IiI7Zm9yKHZhciBi IGluIFMpe1krPUUoJyAje2t9PSIje3Z9IiAnLHtrOmIsdjpTW2JdLnRvU3RyaW5n KCkucmVwbGFjZSgvIi8sIiZxdW90OyIpLnJlcGxhY2UoLzwvLCImbHQ7IikucmVw bGFjZSgvPi8sIiZndDsiKX0pfXZhciBmPXtiZWZvcmU6ZyxodG1sQXR0cnM6WSx1 cmw6dHd0dHIudHh0Lmh0bWxFc2NhcGUoWCl9O2lmKFYmJlZbWF0mJlZbWF0uZGlz cGxheV91cmwpe2YuZGlzcGxheVVybD10d3R0ci50eHQuaHRtbEVzY2FwZShWW1hd LmRpc3BsYXlfdXJsKX1lbHNle2YuZGlzcGxheVVybD1mLnVybH1yZXR1cm4gRSgn I3tiZWZvcmV9PGEgaHJlZj0iI3t1cmx9IiN7aHRtbEF0dHJzfT4je2Rpc3BsYXlV cmx9PC9hPicsZil9ZWxzZXtyZXR1cm4gaH19KX07dHd0dHIudHh0LmV4dHJhY3RN ZW50aW9ucz1mdW5jdGlvbihVKXt2YXIgVj1bXSxSPXR3dHRyLnR4dC5leHRyYWN0 TWVudGlvbnNXaXRoSW5kaWNlcyhVKTtmb3IodmFyIFQ9MDtUPFIubGVuZ3RoO1Qr Kyl7dmFyIFM9UltUXS5zY3JlZW5OYW1lO1YucHVzaChTKX1yZXR1cm4gVn07dHd0 dHIudHh0LmV4dHJhY3RNZW50aW9uc1dpdGhJbmRpY2VzPWZ1bmN0aW9uKFQpe2lm KCFUKXtyZXR1cm5bXX12YXIgUz1bXSxSPTA7VC5yZXBsYWNlKHR3dHRyLnR4dC5y ZWdleGVuLmV4dHJhY3RNZW50aW9ucyxmdW5jdGlvbihVLFksWCxWLFope2lmKCFa Lm1hdGNoKHR3dHRyLnR4dC5yZWdleGVuLmVuZFNjcmVlbk5hbWVNYXRjaCkpe3Zh ciBXPVQuaW5kZXhPZihYK1YsUik7Uj1XK1YubGVuZ3RoKzE7Uy5wdXNoKHtzY3Jl ZW5OYW1lOlYsaW5kaWNlczpbVyxSXX0pfX0pO3JldHVybiBTfTt0d3R0ci50eHQu ZXh0cmFjdE1lbnRpb25zT3JMaXN0c1dpdGhJbmRpY2VzPWZ1bmN0aW9uKFQpe2lm KCFUKXtyZXR1cm5bXX12YXIgUz1bXSxSPTA7VC5yZXBsYWNlKHR3dHRyLnR4dC5y ZWdleGVuLmV4dHJhY3RNZW50aW9uc09yTGlzdHMsZnVuY3Rpb24oVSxZLFgsVixh LFope2lmKCFaLm1hdGNoKHR3dHRyLnR4dC5yZWdleGVuLmVuZFNjcmVlbk5hbWVN YXRjaCkpe2E9YXx8IiI7dmFyIFc9VC5pbmRleE9mKFgrVithLFIpO1I9VytWLmxl bmd0aCthLmxlbmd0aCsxO1MucHVzaCh7c2NyZWVuTmFtZTpWLGxpc3RTbHVnOmEs aW5kaWNlczpbVyxSXX0pfX0pO3JldHVybiBTfTt0d3R0ci50eHQuZXh0cmFjdFJl cGxpZXM9ZnVuY3Rpb24oUyl7aWYoIVMpe3JldHVybiBudWxsfXZhciBSPVMubWF0 Y2godHd0dHIudHh0LnJlZ2V4ZW4uZXh0cmFjdFJlcGx5KTtpZighUil7cmV0dXJu IG51bGx9cmV0dXJuIFJbMV19O3R3dHRyLnR4dC5leHRyYWN0VXJscz1mdW5jdGlv bihVKXt2YXIgVD1bXSxSPXR3dHRyLnR4dC5leHRyYWN0VXJsc1dpdGhJbmRpY2Vz KFUpO2Zvcih2YXIgUz0wO1M8Ui5sZW5ndGg7UysrKXtULnB1c2goUltTXS51cmwp fXJldHVybiBUfTt0d3R0ci50eHQuZXh0cmFjdFVybHNXaXRoSW5kaWNlcz1mdW5j dGlvbihUKXtpZighVCl7cmV0dXJuW119dmFyIFM9W10sUj0wO1QucmVwbGFjZSh0 d3R0ci50eHQucmVnZXhlbi5leHRyYWN0VXJsLGZ1bmN0aW9uKFosYyxiLFUsZCxX LFYsZSxhKXtpZighZCYmIWUmJlcubWF0Y2godHd0dHIudHh0LnJlZ2V4ZW4udmFs aWRTaG9ydERvbWFpbikpe3JldHVybiB9dmFyIFg9VC5pbmRleE9mKFUsWSksWT1Y K1UubGVuZ3RoO1MucHVzaCh7dXJsOlUsaW5kaWNlczpbWCxZXX0pfSk7cmV0dXJu IFN9O3R3dHRyLnR4dC5leHRyYWN0SGFzaHRhZ3M9ZnVuY3Rpb24oVSl7dmFyIFQ9 W10sUz10d3R0ci50eHQuZXh0cmFjdEhhc2h0YWdzV2l0aEluZGljZXMoVSk7Zm9y KHZhciBSPTA7UjxTLmxlbmd0aDtSKyspe1QucHVzaChTW1JdLmhhc2h0YWcpfXJl dHVybiBUfTt0d3R0ci50eHQuZXh0cmFjdEhhc2h0YWdzV2l0aEluZGljZXM9ZnVu Y3Rpb24oVCl7aWYoIVQpe3JldHVybltdfXZhciBTPVtdLFI9MDtULnJlcGxhY2Uo dHd0dHIudHh0LnJlZ2V4ZW4uYXV0b0xpbmtIYXNodGFncyxmdW5jdGlvbihVLFgs WSxXKXt2YXIgVj1ULmluZGV4T2YoWStXLFIpO1I9VitXLmxlbmd0aCsxO1MucHVz aCh7aGFzaHRhZzpXLGluZGljZXM6W1YsUl19KX0pO3JldHVybiBTfTt0d3R0ci50 eHQuc3BsaXRUYWdzPWZ1bmN0aW9uKFgpe3ZhciBSPVguc3BsaXQoIjwiKSxXLFY9 W10sVTtmb3IodmFyIFQ9MDtUPFIubGVuZ3RoO1QrPTEpe1U9UltUXTtpZighVSl7 Vi5wdXNoKCIiKX1lbHNle1c9VS5zcGxpdCgiPiIpO2Zvcih2YXIgUz0wO1M8Vy5s ZW5ndGg7Uys9MSl7Vi5wdXNoKFdbU10pfX19cmV0dXJuIFZ9O3R3dHRyLnR4dC5o aXRIaWdobGlnaHQ9ZnVuY3Rpb24oYyxlLFUpe3ZhciBhPSJlbSI7ZT1lfHxbXTtV PVV8fHt9O2lmKGUubGVuZ3RoPT09MCl7cmV0dXJuIGN9dmFyIFQ9VS50YWd8fGEs ZD1bIjwiK1QrIj4iLCI8LyIrVCsiPiJdLGI9dHd0dHIudHh0LnNwbGl0VGFncyhj KSxmLGssaCxYPSIiLFI9MCxZPWJbMF0sWj0wLFM9MCxvPWZhbHNlLFY9WSxnPVtd LFcsbCxwLG4sbTtmb3Ioaz0wO2s8ZS5sZW5ndGg7ays9MSl7Zm9yKGg9MDtoPGVb a10ubGVuZ3RoO2grPTEpe2cucHVzaChlW2tdW2hdKX19Zm9yKFc9MDtXPGcubGVu Z3RoO1crPTEpe2w9Z1tXXTtwPWRbVyUyXTtuPWZhbHNlO3doaWxlKFkhPW51bGwm Jmw+PVorWS5sZW5ndGgpe1grPVYuc2xpY2UoUyk7aWYobyYmbD09PVorVi5sZW5n dGgpe1grPXA7bj10cnVlfWlmKGJbUisxXSl7WCs9IjwiK2JbUisxXSsiPiJ9Wis9 Vi5sZW5ndGg7Uz0wO1IrPTI7WT1iW1JdO1Y9WTtvPWZhbHNlfWlmKCFuJiZZIT1u dWxsKXttPWwtWjtYKz1WLnNsaWNlKFMsbSkrcDtTPW07aWYoVyUyPT09MCl7bz10 cnVlfWVsc2V7bz1mYWxzZX19ZWxzZXtpZighbil7bj10cnVlO1grPXB9fX1pZihZ IT1udWxsKXtpZihTPFYubGVuZ3RoKXtYKz1WLnNsaWNlKFMpfWZvcihXPVIrMTtX PGIubGVuZ3RoO1crPTEpe1grPShXJTI9PT0wP2JbV106IjwiK2JbV10rIj4iKX19 cmV0dXJuIFh9O3ZhciBGPTE0MDt2YXIgUD1bSig2NTUzNCksSig2NTI3OSksSig2 NTUzNSksSig4MjM0KSxKKDgyMzUpLEooODIzNiksSig4MjM3KSxKKDgyMzgpXTt0 d3R0ci50eHQuaXNJbnZhbGlkVHdlZXQ9ZnVuY3Rpb24oUyl7aWYoIVMpe3JldHVy biJlbXB0eSJ9aWYoUy5sZW5ndGg+Ril7cmV0dXJuInRvb19sb25nIn1mb3IodmFy IFI9MDtSPFAubGVuZ3RoO1IrKyl7aWYoUy5pbmRleE9mKFBbUl0pPj0wKXtyZXR1 cm4iaW52YWxpZF9jaGFyYWN0ZXJzIn19cmV0dXJuIGZhbHNlfTt0d3R0ci50eHQu aXNWYWxpZFR3ZWV0VGV4dD1mdW5jdGlvbihSKXtyZXR1cm4gIXR3dHRyLnR4dC5p c0ludmFsaWRUd2VldChSKX07dHd0dHIudHh0LmlzVmFsaWRVc2VybmFtZT1mdW5j dGlvbihTKXtpZighUyl7cmV0dXJuIGZhbHNlfXZhciBSPXR3dHRyLnR4dC5leHRy YWN0TWVudGlvbnMoUyk7cmV0dXJuIFIubGVuZ3RoPT09MSYmUlswXT09PVMuc2xp Y2UoMSl9O3ZhciBMPUQoL14je2F1dG9MaW5rVXNlcm5hbWVzT3JMaXN0c30kLyk7 dHd0dHIudHh0LmlzVmFsaWRMaXN0PWZ1bmN0aW9uKFMpe3ZhciBSPVMubWF0Y2go TCk7cmV0dXJuICEhKFImJlJbMV09PSIiJiZSWzRdKX07dHd0dHIudHh0LmlzVmFs aWRIYXNodGFnPWZ1bmN0aW9uKFMpe2lmKCFTKXtyZXR1cm4gZmFsc2V9dmFyIFI9 dHd0dHIudHh0LmV4dHJhY3RIYXNodGFncyhTKTtyZXR1cm4gUi5sZW5ndGg9PT0x JiZSWzBdPT09Uy5zbGljZSgxKX07dHd0dHIudHh0LmlzVmFsaWRVcmw9ZnVuY3Rp b24oUixXLFope2lmKFc9PW51bGwpe1c9dHJ1ZX1pZihaPT1udWxsKXtaPXRydWV9 aWYoIVIpe3JldHVybiBmYWxzZX12YXIgUz1SLm1hdGNoKHR3dHRyLnR4dC5yZWdl eGVuLnZhbGlkYXRlVXJsVW5lbmNvZGVkKTtpZighU3x8U1swXSE9PVIpe3JldHVy biBmYWxzZX12YXIgVD1TWzFdLFU9U1syXSxZPVNbM10sWD1TWzRdLFY9U1s1XTtp ZighKCghWnx8KEkoVCx0d3R0ci50eHQucmVnZXhlbi52YWxpZGF0ZVVybFNjaGVt ZSkmJlQubWF0Y2goL15odHRwcz8kL2kpKSkmJkkoWSx0d3R0ci50eHQucmVnZXhl bi52YWxpZGF0ZVVybFBhdGgpJiZJKFgsdHd0dHIudHh0LnJlZ2V4ZW4udmFsaWRh dGVVcmxRdWVyeSx0cnVlKSYmSShWLHR3dHRyLnR4dC5yZWdleGVuLnZhbGlkYXRl VXJsRnJhZ21lbnQsdHJ1ZSkpKXtyZXR1cm4gZmFsc2V9cmV0dXJuKFcmJkkoVSx0 d3R0ci50eHQucmVnZXhlbi52YWxpZGF0ZVVybFVuaWNvZGVBdXRob3JpdHkpKXx8 KCFXJiZJKFUsdHd0dHIudHh0LnJlZ2V4ZW4udmFsaWRhdGVVcmxBdXRob3JpdHkp KX07ZnVuY3Rpb24gSShTLFQsUil7aWYoIVIpe3JldHVybigodHlwZW9mIFM9PT0i c3RyaW5nIikmJlMubWF0Y2goVCkmJlJlZ0V4cFsiJCYiXT09PVMpfXJldHVybigh U3x8KFMubWF0Y2goVCkmJlJlZ0V4cFsiJCYiXT09PVMpKX1pZih0eXBlb2YgbW9k dWxlIT0idW5kZWZpbmVkIiYmbW9kdWxlLmV4cG9ydHMpe21vZHVsZS5leHBvcnRz PXR3dHRyLnR4dH19KCkpO1RXVFI9d2luZG93LlRXVFJ8fHt9O2lmKCFBcnJheS5m b3JFYWNoKXtBcnJheS5wcm90b3R5cGUuZmlsdGVyPWZ1bmN0aW9uKEUsRil7dmFy IEQ9Rnx8d2luZG93O3ZhciBBPVtdO2Zvcih2YXIgQz0wLEI9dGhpcy5sZW5ndGg7 QzxCOysrQyl7aWYoIUUuY2FsbChELHRoaXNbQ10sQyx0aGlzKSl7Y29udGludWV9 QS5wdXNoKHRoaXNbQ10pfXJldHVybiBBfTtBcnJheS5wcm90b3R5cGUuaW5kZXhP Zj1mdW5jdGlvbihCLEMpe3ZhciBDPUN8fDA7Zm9yKHZhciBBPTA7QTx0aGlzLmxl bmd0aDsrK0Epe2lmKHRoaXNbQV09PT1CKXtyZXR1cm4gQX19cmV0dXJuIC0xfX0o ZnVuY3Rpb24oKXtpZihUV1RSJiZUV1RSLldpZGdldCl7cmV0dXJuIH1mdW5jdGlv biBGKEosTSxJKXtmb3IodmFyIEw9MCxLPUoubGVuZ3RoO0w8SzsrK0wpe00uY2Fs bChJfHx3aW5kb3csSltMXSxMLEopfX1mdW5jdGlvbiBCKEksSyxKKXt0aGlzLmVs PUk7dGhpcy5wcm9wPUs7dGhpcy5mcm9tPUouZnJvbTt0aGlzLnRvPUoudG87dGhp cy50aW1lPUoudGltZTt0aGlzLmNhbGxiYWNrPUouY2FsbGJhY2s7dGhpcy5hbmlt RGlmZj10aGlzLnRvLXRoaXMuZnJvbX1CLmNhblRyYW5zaXRpb249ZnVuY3Rpb24o KXt2YXIgST1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0d2l0dGVyIik7SS5zdHls ZS5jc3NUZXh0PSItd2Via2l0LXRyYW5zaXRpb246IGFsbCAuNXMgbGluZWFyOyI7 cmV0dXJuICEhSS5zdHlsZS53ZWJraXRUcmFuc2l0aW9uUHJvcGVydHl9KCk7Qi5w cm90b3R5cGUuX3NldFN0eWxlPWZ1bmN0aW9uKEkpe3N3aXRjaCh0aGlzLnByb3Ap e2Nhc2Uib3BhY2l0eSI6dGhpcy5lbC5zdHlsZVt0aGlzLnByb3BdPUk7dGhpcy5l bC5zdHlsZS5maWx0ZXI9ImFscGhhKG9wYWNpdHk9IitJKjEwMCsiKSI7YnJlYWs7 ZGVmYXVsdDp0aGlzLmVsLnN0eWxlW3RoaXMucHJvcF09SSsicHgiO2JyZWFrfX07 Qi5wcm90b3R5cGUuX2FuaW1hdGU9ZnVuY3Rpb24oKXt2YXIgST10aGlzO3RoaXMu bm93PW5ldyBEYXRlKCk7dGhpcy5kaWZmPXRoaXMubm93LXRoaXMuc3RhcnRUaW1l O2lmKHRoaXMuZGlmZj50aGlzLnRpbWUpe3RoaXMuX3NldFN0eWxlKHRoaXMudG8p O2lmKHRoaXMuY2FsbGJhY2spe3RoaXMuY2FsbGJhY2suY2FsbCh0aGlzKX1jbGVh ckludGVydmFsKHRoaXMudGltZXIpO3JldHVybiB9dGhpcy5wZXJjZW50YWdlPShN YXRoLmZsb29yKCh0aGlzLmRpZmYvdGhpcy50aW1lKSoxMDApLzEwMCk7dGhpcy52 YWw9KHRoaXMuYW5pbURpZmYqdGhpcy5wZXJjZW50YWdlKSt0aGlzLmZyb207dGhp cy5fc2V0U3R5bGUodGhpcy52YWwpfTtCLnByb3RvdHlwZS5zdGFydD1mdW5jdGlv bigpe3ZhciBJPXRoaXM7dGhpcy5zdGFydFRpbWU9bmV3IERhdGUoKTt0aGlzLnRp bWVyPXNldEludGVydmFsKGZ1bmN0aW9uKCl7SS5fYW5pbWF0ZS5jYWxsKEkpfSwx NSl9O1RXVFIuV2lkZ2V0PWZ1bmN0aW9uKEkpe3RoaXMuaW5pdChJKX07KGZ1bmN0 aW9uKCl7dmFyIFc9d2luZG93LnR3dHRyfHx7fTt2YXIgVD1sb2NhdGlvbi5wcm90 b2NvbC5tYXRjaCgvaHR0cHMvKTt2YXIgVj0vXi4rXC9wcm9maWxlX2ltYWdlcy87 dmFyIGI9Imh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS90d2l0dGVyX3Byb2R1Y3Rp b24vcHJvZmlsZV9pbWFnZXMiO3ZhciBjPWZ1bmN0aW9uKG4pe3JldHVybiBUP24u cmVwbGFjZShWLGIpOm59O3ZhciBtPXt9O3ZhciBrPWZ1bmN0aW9uKG8pe3ZhciBu PW1bb107aWYoIW4pe249bmV3IFJlZ0V4cCgiKD86XnxcXHMrKSIrbysiKD86XFxz K3wkKSIpO21bb109bn1yZXR1cm4gbn07dmFyIEo9ZnVuY3Rpb24ocyx3LHQsdSl7 dmFyIHc9d3x8IioiO3ZhciB0PXR8fGRvY3VtZW50O3ZhciBvPVtdLG49dC5nZXRF bGVtZW50c0J5VGFnTmFtZSh3KSx2PWsocyk7Zm9yKHZhciBwPTAscT1uLmxlbmd0 aDtwPHE7KytwKXtpZih2LnRlc3QobltwXS5jbGFzc05hbWUpKXtvW28ubGVuZ3Ro XT1uW3BdO2lmKHUpe3UuY2FsbChuW3BdLG5bcF0pfX19cmV0dXJuIG99O3ZhciBs PWZ1bmN0aW9uKCl7dmFyIG49bmF2aWdhdG9yLnVzZXJBZ2VudDtyZXR1cm57aWU6 bi5tYXRjaCgvTVNJRVxzKFteO10qKS8pfX0oKTt2YXIgTT1mdW5jdGlvbihuKXtp Zih0eXBlb2Ygbj09InN0cmluZyIpe3JldHVybiBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZChuKX1yZXR1cm4gbn07dmFyIGU9ZnVuY3Rpb24obil7cmV0dXJuIG4ucmVw bGFjZSgvXlxzK3xccyskL2csIiIpfTt2YXIgYT1mdW5jdGlvbigpe3ZhciBuPXNl bGYuaW5uZXJIZWlnaHQ7dmFyIG89ZG9jdW1lbnQuY29tcGF0TW9kZTtpZigob3x8 bC5pZSkpe249KG89PSJDU1MxQ29tcGF0Iik/ZG9jdW1lbnQuZG9jdW1lbnRFbGVt ZW50LmNsaWVudEhlaWdodDpkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodH1yZXR1 cm4gbn07dmFyIGo9ZnVuY3Rpb24ocCxuKXt2YXIgbz1wLnRhcmdldHx8cC5zcmNF bGVtZW50O3JldHVybiBuKG8pfTt2YXIgWT1mdW5jdGlvbihvKXt0cnl7aWYobyYm Mz09by5ub2RlVHlwZSl7cmV0dXJuIG8ucGFyZW50Tm9kZX1lbHNle3JldHVybiBv fX1jYXRjaChuKXt9fTt2YXIgWj1mdW5jdGlvbihvKXt2YXIgbj1vLnJlbGF0ZWRU YXJnZXQ7aWYoIW4pe2lmKG8udHlwZT09Im1vdXNlb3V0Iil7bj1vLnRvRWxlbWVu dH1lbHNle2lmKG8udHlwZT09Im1vdXNlb3ZlciIpe249by5mcm9tRWxlbWVudH19 fXJldHVybiBZKG4pfTt2YXIgZj1mdW5jdGlvbihvLG4pe24ucGFyZW50Tm9kZS5p bnNlcnRCZWZvcmUobyxuLm5leHRTaWJsaW5nKX07dmFyIGc9ZnVuY3Rpb24obyl7 dHJ5e28ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1jYXRjaChuKXt9fTt2YXIg ZD1mdW5jdGlvbihuKXtyZXR1cm4gbi5maXJzdENoaWxkfTt2YXIgST1mdW5jdGlv bihwKXt2YXIgbz1aKHApO3doaWxlKG8mJm8hPXRoaXMpe3RyeXtvPW8ucGFyZW50 Tm9kZX1jYXRjaChuKXtvPXRoaXN9fWlmKG8hPXRoaXMpe3JldHVybiB0cnVlfXJl dHVybiBmYWxzZX07dmFyIEw9ZnVuY3Rpb24oKXtpZihkb2N1bWVudC5kZWZhdWx0 VmlldyYmZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSl7cmV0 dXJuIGZ1bmN0aW9uKG8scyl7dmFyIHE9bnVsbDt2YXIgcD1kb2N1bWVudC5kZWZh dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKG8sIiIpO2lmKHApe3E9cFtzXX12YXIg bj1vLnN0eWxlW3NdfHxxO3JldHVybiBufX1lbHNle2lmKGRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJmwuaWUpe3JldHVybiBmdW5jdGlvbihu LHApe3ZhciBvPW4uY3VycmVudFN0eWxlP24uY3VycmVudFN0eWxlW3BdOm51bGw7 cmV0dXJuKG4uc3R5bGVbcF18fG8pfX19fSgpO3ZhciBpPXtoYXM6ZnVuY3Rpb24o bixvKXtyZXR1cm4gbmV3IFJlZ0V4cCgiKF58XFxzKSIrbysiKFxcc3wkKSIpLnRl c3QoTShuKS5jbGFzc05hbWUpfSxhZGQ6ZnVuY3Rpb24obixvKXtpZighdGhpcy5o YXMobixvKSl7TShuKS5jbGFzc05hbWU9ZShNKG4pLmNsYXNzTmFtZSkrIiAiK299 fSxyZW1vdmU6ZnVuY3Rpb24obixvKXtpZih0aGlzLmhhcyhuLG8pKXtNKG4pLmNs YXNzTmFtZT1NKG4pLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoIihefFxc cykiK28rIihcXHN8JCkiLCJnIiksIiIpfX19O3ZhciBLPXthZGQ6ZnVuY3Rpb24o cCxvLG4pe2lmKHAuYWRkRXZlbnRMaXN0ZW5lcil7cC5hZGRFdmVudExpc3RlbmVy KG8sbixmYWxzZSl9ZWxzZXtwLmF0dGFjaEV2ZW50KCJvbiIrbyxmdW5jdGlvbigp e24uY2FsbChwLHdpbmRvdy5ldmVudCl9KX19LHJlbW92ZTpmdW5jdGlvbihwLG8s bil7aWYocC5yZW1vdmVFdmVudExpc3RlbmVyKXtwLnJlbW92ZUV2ZW50TGlzdGVu ZXIobyxuLGZhbHNlKX1lbHNle3AuZGV0YWNoRXZlbnQoIm9uIitvLG4pfX19O3Zh ciBTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbyhxKXtyZXR1cm4gcGFyc2VJbnQoKHEp LnN1YnN0cmluZygwLDIpLDE2KX1mdW5jdGlvbiBuKHEpe3JldHVybiBwYXJzZUlu dCgocSkuc3Vic3RyaW5nKDIsNCksMTYpfWZ1bmN0aW9uIHAocSl7cmV0dXJuIHBh cnNlSW50KChxKS5zdWJzdHJpbmcoNCw2KSwxNil9cmV0dXJuIGZ1bmN0aW9uKHEp e3JldHVybltvKHEpLG4ocSkscChxKV19fSgpO3ZhciBOPXtib29sOmZ1bmN0aW9u KG4pe3JldHVybiB0eXBlb2Ygbj09PSJib29sZWFuIn0sZGVmOmZ1bmN0aW9uKG4p e3JldHVybiAhKHR5cGVvZiBuPT09InVuZGVmaW5lZCIpfSxudW1iZXI6ZnVuY3Rp b24obyl7cmV0dXJuIHR5cGVvZiBvPT09Im51bWJlciImJmlzRmluaXRlKG8pfSxz dHJpbmc6ZnVuY3Rpb24obil7cmV0dXJuIHR5cGVvZiBuPT09InN0cmluZyJ9LGZu OmZ1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbj09PSJmdW5jdGlvbiJ9LGFycmF5 OmZ1bmN0aW9uKG4pe2lmKG4pe3JldHVybiBOLm51bWJlcihuLmxlbmd0aCkmJk4u Zm4obi5zcGxpY2UpfXJldHVybiBmYWxzZX19O3ZhciBSPVsiSmFudWFyeSIsIkZl YnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVn dXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIi XTt2YXIgWD1mdW5jdGlvbihxKXt2YXIgdj1uZXcgRGF0ZShxKTtpZihsLmllKXt2 PURhdGUucGFyc2UocS5yZXBsYWNlKC8oIFwrKS8sIiBVVEMkMSIpKX12YXIgbz0i Ijt2YXIgbj1mdW5jdGlvbigpe3ZhciBzPXYuZ2V0SG91cnMoKTtpZihzPjAmJnM8 MTMpe289ImFtIjtyZXR1cm4gc31lbHNle2lmKHM8MSl7bz0iYW0iO3JldHVybiAx Mn1lbHNle289InBtIjtyZXR1cm4gcy0xMn19fSgpO3ZhciBwPXYuZ2V0TWludXRl cygpO3ZhciB1PXYuZ2V0U2Vjb25kcygpO2Z1bmN0aW9uIHQoKXt2YXIgcz1uZXcg RGF0ZSgpO2lmKHMuZ2V0RGF0ZSgpIT12LmdldERhdGUoKXx8cy5nZXRZZWFyKCkh PXYuZ2V0WWVhcigpfHxzLmdldE1vbnRoKCkhPXYuZ2V0TW9udGgoKSl7cmV0dXJu IiAtICIrUlt2LmdldE1vbnRoKCldKyIgIit2LmdldERhdGUoKSsiLCAiK3YuZ2V0 RnVsbFllYXIoKX1lbHNle3JldHVybiIifX1yZXR1cm4gbisiOiIrcCtvK3QoKX07 dmFyIFA9ZnVuY3Rpb24odSl7dmFyIHc9bmV3IERhdGUoKTt2YXIgcz1uZXcgRGF0 ZSh1KTtpZihsLmllKXtzPURhdGUucGFyc2UodS5yZXBsYWNlKC8oIFwrKS8sIiBV VEMkMSIpKX12YXIgdj13LXM7dmFyIG89MTAwMCxwPW8qNjAscT1wKjYwLHQ9cSoy NCxuPXQqNztpZihpc05hTih2KXx8djwwKXtyZXR1cm4iIn1pZih2PG8qMil7cmV0 dXJuInJpZ2h0IG5vdyJ9aWYodjxwKXtyZXR1cm4gTWF0aC5mbG9vcih2L28pKyIg c2Vjb25kcyBhZ28ifWlmKHY8cCoyKXtyZXR1cm4iYWJvdXQgMSBtaW51dGUgYWdv In1pZih2PHEpe3JldHVybiBNYXRoLmZsb29yKHYvcCkrIiBtaW51dGVzIGFnbyJ9 aWYodjxxKjIpe3JldHVybiJhYm91dCAxIGhvdXIgYWdvIn1pZih2PHQpe3JldHVy biBNYXRoLmZsb29yKHYvcSkrIiBob3VycyBhZ28ifWlmKHY+dCYmdjx0KjIpe3Jl dHVybiJ5ZXN0ZXJkYXkifWlmKHY8dCozNjUpe3JldHVybiBNYXRoLmZsb29yKHYv dCkrIiBkYXlzIGFnbyJ9ZWxzZXtyZXR1cm4ib3ZlciBhIHllYXIgYWdvIn19O2Z1 bmN0aW9uIGgocSl7dmFyIHA9e307Zm9yKHZhciBuIGluIHEpe2lmKHEuaGFzT3du UHJvcGVydHkobikpe3Bbbl09cVtuXX19cmV0dXJuIHB9Vy50eHQuYXV0b0xpbms9 ZnVuY3Rpb24obyxuKXtuPW9wdGlvbnNfbGlua3M9bnx8e307aWYobi5oYXNPd25Q cm9wZXJ0eSgiZXh0cmFIdG1sIikpe29wdGlvbnNfbGlua3M9aChuKTtkZWxldGUg b3B0aW9uc19saW5rcy5leHRyYUh0bWx9cmV0dXJuIFcudHh0LmF1dG9MaW5rVXNl cm5hbWVzT3JMaXN0cyhXLnR4dC5hdXRvTGlua1VybHNDdXN0b20oVy50eHQuYXV0 b0xpbmtIYXNodGFncyhvLG4pLG9wdGlvbnNfbGlua3MpLG4pfTtUV1RSLldpZGdl dC5pZnk9e2F1dG9MaW5rOmZ1bmN0aW9uKG4pe29wdGlvbnM9e2V4dHJhSHRtbDoi dGFyZ2V0PV9ibGFuayIsdGFyZ2V0OiJfYmxhbmsiLHVybEVudGl0aWVzOltdfTtp ZihuLm5lZWRsZS5lbnRpdGllcyl7aWYobi5uZWVkbGUuZW50aXRpZXMudXJscyl7 b3B0aW9ucy51cmxFbnRpdGllcz1uLm5lZWRsZS5lbnRpdGllcy51cmxzfWlmKG4u bmVlZGxlLmVudGl0aWVzLm1lZGlhKXtvcHRpb25zLnVybEVudGl0aWVzPW9wdGlv bnMudXJsRW50aXRpZXMuY29uY2F0KG4ubmVlZGxlLmVudGl0aWVzLm1lZGlhKX19 aWYoVyYmVy50eHQpe3JldHVybiBXLnR4dC5hdXRvTGluayhuLm5lZWRsZS50ZXh0 LG9wdGlvbnMpLnJlcGxhY2UoLyhbQO+8oF0rKSg8W14+XSo+KS9nLCIkMiQxIil9 ZWxzZXtyZXR1cm4gbi5uZWVkbGUudGV4dH19fTtmdW5jdGlvbiBVKG8scCxuKXt0 aGlzLmpvYj1vO3RoaXMuZGVjYXlGbj1wO3RoaXMuaW50ZXJ2YWw9bjt0aGlzLmRl Y2F5UmF0ZT0xO3RoaXMuZGVjYXlNdWx0aXBsaWVyPTEuMjU7dGhpcy5tYXhEZWNh eVRpbWU9Myo2MCoxMDAwfVUucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbigpe3Ro aXMuc3RvcCgpLnJ1bigpO3JldHVybiB0aGlzfSxzdG9wOmZ1bmN0aW9uKCl7aWYo dGhpcy53b3JrZXIpe3dpbmRvdy5jbGVhclRpbWVvdXQodGhpcy53b3JrZXIpfXJl dHVybiB0aGlzfSxydW46ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3RoaXMuam9iKGZ1 bmN0aW9uKCl7bi5kZWNheVJhdGU9bi5kZWNheUZuKCk/TWF0aC5tYXgoMSxuLmRl Y2F5UmF0ZS9uLmRlY2F5TXVsdGlwbGllcik6bi5kZWNheVJhdGUqbi5kZWNheU11 bHRpcGxpZXI7dmFyIG89bi5pbnRlcnZhbCpuLmRlY2F5UmF0ZTtvPShvPj1uLm1h eERlY2F5VGltZSk/bi5tYXhEZWNheVRpbWU6bztvPU1hdGguZmxvb3Iobyk7bi53 b3JrZXI9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLnJ1bi5jYWxsKG4p fSxvKX0pfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5zdG9wKCk7dGhpcy5kZWNh eVJhdGU9MTtyZXR1cm4gdGhpc319O2Z1bmN0aW9uIE8obyxuLHApe3RoaXMudGlt ZT1vfHw2MDAwO3RoaXMubG9vcD1ufHxmYWxzZTt0aGlzLnJlcGVhdGVkPTA7dGhp cy5jYWxsYmFjaz1wO3RoaXMuaGF5c3RhY2s9W119Ty5wcm90b3R5cGU9e3NldDpm dW5jdGlvbihuKXt0aGlzLmhheXN0YWNrPW59LGFkZDpmdW5jdGlvbihuKXt0aGlz LmhheXN0YWNrLnVuc2hpZnQobil9LHN0YXJ0OmZ1bmN0aW9uKCl7aWYodGhpcy50 aW1lcil7cmV0dXJuIHRoaXN9dGhpcy5fam9iKCk7dmFyIG49dGhpczt0aGlzLnRp bWVyPXNldEludGVydmFsKGZ1bmN0aW9uKCl7bi5fam9iLmNhbGwobil9LHRoaXMu dGltZSk7cmV0dXJuIHRoaXN9LHN0b3A6ZnVuY3Rpb24oKXtpZih0aGlzLnRpbWVy KXt3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTt0aGlzLnRpbWVyPW51 bGx9cmV0dXJuIHRoaXN9LF9uZXh0OmZ1bmN0aW9uKCl7dmFyIG49dGhpcy5oYXlz dGFjay5zaGlmdCgpO2lmKG4mJnRoaXMubG9vcCl7dGhpcy5oYXlzdGFjay5wdXNo KG4pfXJldHVybiBufHxudWxsfSxfam9iOmZ1bmN0aW9uKCl7dmFyIG49dGhpcy5f bmV4dCgpO2lmKG4pe3RoaXMuY2FsbGJhY2sobil9cmV0dXJuIHRoaXN9fTtmdW5j dGlvbiBRKG8pe3ZhciBuPSc8ZGl2IGNsYXNzPSJ0d3RyLXR3ZWV0LXdyYXAiPiAg ICAgICAgIDxkaXYgY2xhc3M9InR3dHItYXZhdGFyIj4gICAgICAgICAgIDxkaXYg Y2xhc3M9InR3dHItaW1nIj48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDov L3R3aXR0ZXIuY29tL2ludGVudC91c2VyP3NjcmVlbl9uYW1lPScrby51c2VyKyci PjxpbWcgYWx0PSInK28udXNlcisnIHByb2ZpbGUiIHNyYz0iJytjKG8uYXZhdGFy KSsnIj48L2E+PC9kaXY+ICAgICAgICAgPC9kaXY+ICAgICAgICAgPGRpdiBjbGFz cz0idHd0ci10d2VldC10ZXh0Ij4gICAgICAgICAgIDxwPiAgICAgICAgICAgICA8 YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL2ludGVu dC91c2VyP3NjcmVlbl9uYW1lPScrby51c2VyKyciIGNsYXNzPSJ0d3RyLXVzZXIi Picrby51c2VyKyI8L2E+ICIrby50d2VldCsnICAgICAgICAgICAgIDxlbT4gICAg ICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InR3dHItdGltZXN0YW1w IiB0aW1lPSInK28udGltZXN0YW1wKyciIGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNv bS8nK28udXNlcisiL3N0YXR1cy8iK28uaWQrJyI+JytvLmNyZWF0ZWRfYXQrJzwv YT4gJm1pZGRvdDsgICAgICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9 InR3dHItcmVwbHkiIGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdl ZXQ/aW5fcmVwbHlfdG89JytvLmlkKyciPnJlcGx5PC9hPiAmbWlkZG90OyAgICAg ICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InR3dHItcnQiIGhyZWY9 Imh0dHA6Ly90d2l0dGVyLmNvbS9pbnRlbnQvcmV0d2VldD90d2VldF9pZD0nK28u aWQrJyI+cmV0d2VldDwvYT4gJm1pZGRvdDsgICAgICAgICAgICAgPGEgdGFyZ2V0 PSJfYmxhbmsiIGNsYXNzPSJ0d3RyLWZhdiIgaHJlZj0iaHR0cDovL3R3aXR0ZXIu Y29tL2ludGVudC9mYXZvcml0ZT90d2VldF9pZD0nK28uaWQrJyI+ZmF2b3JpdGU8 L2E+ICAgICAgICAgICAgIDwvZW0+ICAgICAgICAgICA8L3A+ICAgICAgICAgPC9k aXY+ICAgICAgIDwvZGl2Pic7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi ZGl2Iik7cC5pZD0idHdlZXQtaWQtIisgKytRLl90d2VldENvdW50O3AuY2xhc3NO YW1lPSJ0d3RyLXR3ZWV0IjtwLmlubmVySFRNTD1uO3RoaXMuZWxlbWVudD1wfVEu X3R3ZWV0Q291bnQ9MDtXLmxvYWRTdHlsZVNoZWV0PWZ1bmN0aW9uKHAsbyl7aWYo IVRXVFIuV2lkZ2V0LmxvYWRpbmdTdHlsZVNoZWV0KXtUV1RSLldpZGdldC5sb2Fk aW5nU3R5bGVTaGVldD10cnVlO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo ImxpbmsiKTtuLmhyZWY9cDtuLnJlbD0ic3R5bGVzaGVldCI7bi50eXBlPSJ0ZXh0 L2NzcyI7ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5h cHBlbmRDaGlsZChuKTt2YXIgcT1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3ZhciBz PUwobywicG9zaXRpb24iKTtpZihzPT0icmVsYXRpdmUiKXtjbGVhckludGVydmFs KHEpO3E9bnVsbDtUV1RSLldpZGdldC5oYXNMb2FkZWRTdHlsZVNoZWV0PXRydWV9 fSw1MCl9fTsoZnVuY3Rpb24oKXt2YXIgbj1mYWxzZTtXLmNzcz1mdW5jdGlvbihx KXt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3AudHlwZT0i dGV4dC9jc3MiO2lmKGwuaWUpe3Auc3R5bGVTaGVldC5jc3NUZXh0PXF9ZWxzZXt2 YXIgcz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7cy5hcHBlbmRD aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShxKSk7cC5hcHBlbmRDaGlsZChz KX1mdW5jdGlvbiBvKCl7ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhl YWQiKVswXS5hcHBlbmRDaGlsZChwKX1pZighbC5pZXx8bil7bygpfWVsc2V7d2lu ZG93LmF0dGFjaEV2ZW50KCJvbmxvYWQiLGZ1bmN0aW9uKCl7bj10cnVlO28oKX0p fX19KSgpO1RXVFIuV2lkZ2V0LmlzTG9hZGVkPWZhbHNlO1RXVFIuV2lkZ2V0Lmxv YWRpbmdTdHlsZVNoZWV0PWZhbHNlO1RXVFIuV2lkZ2V0Lmhhc0xvYWRlZFN0eWxl U2hlZXQ9ZmFsc2U7VFdUUi5XaWRnZXQuV0lER0VUX05VTUJFUj0wO1RXVFIuV2lk Z2V0LlJFRlJFU0hfTUlOPTYwMDA7VFdUUi5XaWRnZXQuRU5USVRZX1JBTkdFPTEw MDtUV1RSLldpZGdldC5FTlRJVFlfUEVSQ0VOVEFHRT04MDtUV1RSLldpZGdldC5t YXRjaGVzPXttZW50aW9uczovXkBbYS16QS1aMC05X117MSwyMH1cYi8sYW55X21l bnRpb25zOi9cYkBbYS16QS1aMC05X117MSwyMH1cYi99O1RXVFIuV2lkZ2V0Lmpz b25QPWZ1bmN0aW9uKG8scSl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi c2NyaXB0Iik7dmFyIHA9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhl YWQiKVswXTtuLnR5cGU9InRleHQvamF2YXNjcmlwdCI7bi5zcmM9bztwLmluc2Vy dEJlZm9yZShuLHAuZmlyc3RDaGlsZCk7cShuKTtyZXR1cm4gbn07VFdUUi5XaWRn ZXQucmFuZG9tTnVtYmVyPWZ1bmN0aW9uKG4pe3I9TWF0aC5mbG9vcihNYXRoLnJh bmRvbSgpKm4pO3JldHVybiByfTtUV1RSLldpZGdldC5TSE9XX0VOVElUSUVTPVRX VFIuV2lkZ2V0LnJhbmRvbU51bWJlcihUV1RSLldpZGdldC5FTlRJVFlfUkFOR0Up PD1UV1RSLldpZGdldC5FTlRJVFlfUEVSQ0VOVEFHRTtUV1RSLldpZGdldC5wcm90 b3R5cGU9ZnVuY3Rpb24oKXt2YXIgdD13aW5kb3cudHd0dHJ8fHt9O3ZhciB1PVQ/ Imh0dHBzOi8vIjoiaHR0cDovLyI7dmFyIHM9InR3aXR0ZXIuY29tIjt2YXIgbz11 KyJzZWFyY2guIitzKyIvc2VhcmNoLiI7dmFyIG49dSsiYXBpLiIrcysiLzEvc3Rh dHVzZXMvdXNlcl90aW1lbGluZS4iO3ZhciBxPXUrcysiL2Zhdm9yaXRlcy8iO3Zh ciBwPXUrImFwaS4iK3MrIi8xLyI7dmFyIHY9MjUwMDA7dmFyIHc9VD8iaHR0cHM6 Ly90d2l0dGVyLXdpZGdldHMuczMuYW1hem9uYXdzLmNvbS9qLzEvZGVmYXVsdC5n aWYiOiJodHRwOi8vd2lkZ2V0cy50d2ltZy5jb20vai8xL2RlZmF1bHQuZ2lmIjty ZXR1cm57aW5pdDpmdW5jdGlvbih5KXt2YXIgeD10aGlzO3RoaXMuX3dpZGdldE51 bWJlcj0rK1RXVFIuV2lkZ2V0LldJREdFVF9OVU1CRVI7VFdUUi5XaWRnZXRbInJl Y2VpdmVDYWxsYmFja18iK3RoaXMuX3dpZGdldE51bWJlcl09ZnVuY3Rpb24oeil7 eC5fcHJlUGxheS5jYWxsKHgseil9O3RoaXMuX2NiPSJUV1RSLldpZGdldC5yZWNl aXZlQ2FsbGJhY2tfIit0aGlzLl93aWRnZXROdW1iZXI7dGhpcy5vcHRzPXk7dGhp cy5fYmFzZT1vO3RoaXMuX2lzUnVubmluZz1mYWxzZTt0aGlzLl9oYXNPZmZpY2lh bGx5U3RhcnRlZD1mYWxzZTt0aGlzLl9oYXNOZXdTZWFyY2hSZXN1bHRzPWZhbHNl O3RoaXMuX3JlbmRlcmVkPWZhbHNlO3RoaXMuX3Byb2ZpbGVJbWFnZT1mYWxzZTt0 aGlzLl9pc0NyZWF0b3I9ISF5LmNyZWF0b3I7dGhpcy5fc2V0V2lkZ2V0VHlwZSh5 LnR5cGUpO3RoaXMudGltZXNSZXF1ZXN0ZWQ9MDt0aGlzLnJ1bk9uY2U9ZmFsc2U7 dGhpcy5uZXdSZXN1bHRzPWZhbHNlO3RoaXMucmVzdWx0cz1bXTt0aGlzLmpzb25N YXhSZXF1ZXN0VGltZU91dD0xOTAwMDt0aGlzLnNob3dlZFJlc3VsdHM9W107dGhp cy5zaW5jZUlkPTE7dGhpcy5zb3VyY2U9IlRXSVRURVJJTkNfV0lER0VUIjt0aGlz LmlkPXkuaWR8fCJ0d3RyLXdpZGdldC0iK3RoaXMuX3dpZGdldE51bWJlcjt0aGlz LnR3ZWV0cz0wO3RoaXMuc2V0RGltZW5zaW9ucyh5LndpZHRoLHkuaGVpZ2h0KTt0 aGlzLmludGVydmFsPXkuaW50ZXJ2YWw/TWF0aC5tYXgoeS5pbnRlcnZhbCxUV1RS LldpZGdldC5SRUZSRVNIX01JTik6VFdUUi5XaWRnZXQuUkVGUkVTSF9NSU47dGhp cy5mb3JtYXQ9Impzb24iO3RoaXMucnBwPXkucnBwfHw1MDt0aGlzLnN1YmplY3Q9 eS5zdWJqZWN0fHwiIjt0aGlzLnRpdGxlPXkudGl0bGV8fCIiO3RoaXMuc2V0Rm9v dGVyVGV4dCh5LmZvb3Rlcik7dGhpcy5zZXRTZWFyY2goeS5zZWFyY2gpO3RoaXMu X3NldFVybCgpO3RoaXMudGhlbWU9eS50aGVtZT95LnRoZW1lOnRoaXMuX2dldERl ZmF1bHRUaGVtZSgpO2lmKCF5LmlkKXtkb2N1bWVudC53cml0ZSgnPGRpdiBjbGFz cz0idHd0ci13aWRnZXQiIGlkPSInK3RoaXMuaWQrJyI+PC9kaXY+Jyl9dGhpcy53 aWRnZXRFbD1NKHRoaXMuaWQpO2lmKHkuaWQpe2kuYWRkKHRoaXMud2lkZ2V0RWws InR3dHItd2lkZ2V0Iil9aWYoeS52ZXJzaW9uPj0yJiYhVFdUUi5XaWRnZXQuaGFz TG9hZGVkU3R5bGVTaGVldCl7aWYoVCl7dC5sb2FkU3R5bGVTaGVldCgiaHR0cHM6 Ly90d2l0dGVyLXdpZGdldHMuczMuYW1hem9uYXdzLmNvbS9qLzIvd2lkZ2V0LmNz cyIsdGhpcy53aWRnZXRFbCl9ZWxzZXtpZih5LmNyZWF0b3Ipe3QubG9hZFN0eWxl U2hlZXQoIi9zdHlsZXNoZWV0cy93aWRnZXRzL3dpZGdldC5jc3MiLHRoaXMud2lk Z2V0RWwpfWVsc2V7dC5sb2FkU3R5bGVTaGVldCgiaHR0cDovL3dpZGdldHMudHdp bWcuY29tL2ovMi93aWRnZXQuY3NzIix0aGlzLndpZGdldEVsKX19fXRoaXMub2Nj YXNpb25hbEpvYj1uZXcgVShmdW5jdGlvbih6KXt4LmRlY2F5PXo7eC5fZ2V0UmVz dWx0cy5jYWxsKHgpfSxmdW5jdGlvbigpe3JldHVybiB4Ll9kZWNheURlY2lkZXIu Y2FsbCh4KX0sdik7dGhpcy5fcmVhZHk9Ti5mbih5LnJlYWR5KT95LnJlYWR5OmZ1 bmN0aW9uKCl7fTt0aGlzLl9pc1JlbGF0aXZlVGltZT10cnVlO3RoaXMuX3R3ZWV0 RmlsdGVyPWZhbHNlO3RoaXMuX2F2YXRhcnM9dHJ1ZTt0aGlzLl9pc0Z1bGxTY3Jl ZW49ZmFsc2U7dGhpcy5faXNMaXZlPXRydWU7dGhpcy5faXNTY3JvbGw9ZmFsc2U7 dGhpcy5fbG9vcD10cnVlO3RoaXMuX2JlaGF2aW9yPSJkZWZhdWx0Ijt0aGlzLnNl dEZlYXR1cmVzKHRoaXMub3B0cy5mZWF0dXJlcyk7dGhpcy5pbnRlcnZhbEpvYj1u ZXcgTyh0aGlzLmludGVydmFsLHRoaXMuX2xvb3AsZnVuY3Rpb24oeil7eC5fbm9y bWFsaXplVHdlZXQoeil9KTtyZXR1cm4gdGhpc30sc2V0RGltZW5zaW9uczpmdW5j dGlvbih4LHkpe3RoaXMud2g9KHgmJnkpP1t4LHldOlsyNTAsMzAwXTtpZih4PT0i YXV0byJ8fHg9PSIxMDAlIil7dGhpcy53aFswXT0iMTAwJSJ9ZWxzZXt0aGlzLndo WzBdPSgodGhpcy53aFswXTwxNTApPzE1MDp0aGlzLndoWzBdKSsicHgifXRoaXMu d2hbMV09KCh0aGlzLndoWzFdPDEwMCk/MTAwOnRoaXMud2hbMV0pKyJweCI7cmV0 dXJuIHRoaXN9LHNldFJwcDpmdW5jdGlvbih4KXt2YXIgeD1wYXJzZUludCh4KTt0 aGlzLnJwcD0oTi5udW1iZXIoeCkmJih4PjAmJng8PTEwMCkpP3g6MzA7cmV0dXJu IHRoaXN9LF9zZXRXaWRnZXRUeXBlOmZ1bmN0aW9uKHgpe3RoaXMuX2lzU2VhcmNo V2lkZ2V0PWZhbHNlLHRoaXMuX2lzUHJvZmlsZVdpZGdldD1mYWxzZSx0aGlzLl9p c0ZhdnNXaWRnZXQ9ZmFsc2UsdGhpcy5faXNMaXN0V2lkZ2V0PWZhbHNlO3N3aXRj aCh4KXtjYXNlInByb2ZpbGUiOnRoaXMuX2lzUHJvZmlsZVdpZGdldD10cnVlO2Jy ZWFrO2Nhc2Uic2VhcmNoIjp0aGlzLl9pc1NlYXJjaFdpZGdldD10cnVlLHRoaXMu c2VhcmNoPXRoaXMub3B0cy5zZWFyY2g7YnJlYWs7Y2FzZSJmYXZlcyI6Y2FzZSJm YXZzIjp0aGlzLl9pc0ZhdnNXaWRnZXQ9dHJ1ZTticmVhaztjYXNlImxpc3QiOmNh c2UibGlzdHMiOnRoaXMuX2lzTGlzdFdpZGdldD10cnVlO2JyZWFrfXJldHVybiB0 aGlzfSxzZXRGZWF0dXJlczpmdW5jdGlvbih4KXtpZih4KXtpZihOLmRlZih4LmZp bHRlcnMpKXt0aGlzLl90d2VldEZpbHRlcj14LmZpbHRlcnN9aWYoTi5kZWYoeC5k YXRlZm9ybWF0KSl7dGhpcy5faXNSZWxhdGl2ZVRpbWU9ISEoeC5kYXRlZm9ybWF0 IT09ImFic29sdXRlIil9aWYoTi5kZWYoeC5mdWxsc2NyZWVuKSYmTi5ib29sKHgu ZnVsbHNjcmVlbikpe2lmKHguZnVsbHNjcmVlbil7dGhpcy5faXNGdWxsU2NyZWVu PXRydWU7dGhpcy53aFswXT0iMTAwJSI7dGhpcy53aFsxXT0oYSgpLTkwKSsicHgi O3ZhciB5PXRoaXM7Sy5hZGQod2luZG93LCJyZXNpemUiLGZ1bmN0aW9uKEFBKXt5 LndoWzFdPWEoKTt5Ll9mdWxsU2NyZWVuUmVzaXplKCl9KX19aWYoTi5kZWYoeC5s b29wKSYmTi5ib29sKHgubG9vcCkpe3RoaXMuX2xvb3A9eC5sb29wfWlmKE4uZGVm KHguYmVoYXZpb3IpJiZOLnN0cmluZyh4LmJlaGF2aW9yKSl7c3dpdGNoKHguYmVo YXZpb3Ipe2Nhc2UiYWxsIjp0aGlzLl9iZWhhdmlvcj0iYWxsIjticmVhaztjYXNl InByZWxvYWRlZCI6dGhpcy5fYmVoYXZpb3I9InByZWxvYWRlZCI7YnJlYWs7ZGVm YXVsdDp0aGlzLl9iZWhhdmlvcj0iZGVmYXVsdCI7YnJlYWt9fWlmKE4uZGVmKHgu YXZhdGFycykmJk4uYm9vbCh4LmF2YXRhcnMpKXtpZigheC5hdmF0YXJzKXt0LmNz cygiIyIrdGhpcy5pZCsiIC50d3RyLWF2YXRhciB7IGRpc3BsYXk6IG5vbmU7IH0g IyIrdGhpcy5pZCsiIC50d3RyLXR3ZWV0LXRleHQgeyBtYXJnaW4tbGVmdDogMDsg fSIpO3RoaXMuX2F2YXRhcnM9ZmFsc2V9ZWxzZXt2YXIgej0odGhpcy5faXNGdWxs U2NyZWVuKT8iOTBweCI6IjQwcHgiO3QuY3NzKCIjIit0aGlzLmlkKyIgLnR3dHIt YXZhdGFyIHsgZGlzcGxheTogYmxvY2s7IH0gIyIrdGhpcy5pZCsiIC50d3RyLXVz ZXIgeyBkaXNwbGF5OiBpbmxpbmU7IH0gIyIrdGhpcy5pZCsiIC50d3RyLXR3ZWV0 LXRleHQgeyBtYXJnaW4tbGVmdDogIit6KyI7IH0iKTt0aGlzLl9hdmF0YXJzPXRy dWV9fWVsc2V7aWYodGhpcy5faXNQcm9maWxlV2lkZ2V0KXt0aGlzLnNldEZlYXR1 cmVzKHthdmF0YXJzOmZhbHNlfSk7dGhpcy5fYXZhdGFycz1mYWxzZX1lbHNle3Ro aXMuc2V0RmVhdHVyZXMoe2F2YXRhcnM6dHJ1ZX0pO3RoaXMuX2F2YXRhcnM9dHJ1 ZX19aWYoTi5kZWYoeC5saXZlKSYmTi5ib29sKHgubGl2ZSkpe3RoaXMuX2lzTGl2 ZT14LmxpdmV9aWYoTi5kZWYoeC5zY3JvbGxiYXIpJiZOLmJvb2woeC5zY3JvbGxi YXIpKXt0aGlzLl9pc1Njcm9sbD14LnNjcm9sbGJhcn19ZWxzZXtpZih0aGlzLl9p c1Byb2ZpbGVXaWRnZXR8fHRoaXMuX2lzRmF2c1dpZGdldCl7dGhpcy5fYmVoYXZp b3I9ImFsbCJ9fXJldHVybiB0aGlzfSxfZnVsbFNjcmVlblJlc2l6ZTpmdW5jdGlv bigpe3ZhciB4PUooInR3dHItdGltZWxpbmUiLCJkaXYiLGRvY3VtZW50LmJvZHks ZnVuY3Rpb24oeSl7eS5zdHlsZS5oZWlnaHQ9KGEoKS05MCkrInB4In0pfSxzZXRU d2VldEludGVydmFsOmZ1bmN0aW9uKHgpe3RoaXMuaW50ZXJ2YWw9eDtyZXR1cm4g dGhpc30sc2V0QmFzZTpmdW5jdGlvbih4KXt0aGlzLl9iYXNlPXg7cmV0dXJuIHRo aXN9LHNldFVzZXI6ZnVuY3Rpb24oeSx4KXt0aGlzLnVzZXJuYW1lPXk7dGhpcy5y ZWFsbmFtZT14fHwiICI7aWYodGhpcy5faXNGYXZzV2lkZ2V0KXt0aGlzLnNldEJh c2UocSt5KyIuIil9ZWxzZXtpZih0aGlzLl9pc1Byb2ZpbGVXaWRnZXQpe3RoaXMu c2V0QmFzZShuK3RoaXMuZm9ybWF0KyI/c2NyZWVuX25hbWU9Iit5KX19dGhpcy5z ZXRTZWFyY2goIiAiKTtyZXR1cm4gdGhpc30sc2V0TGlzdDpmdW5jdGlvbih5LHgp e3RoaXMubGlzdHNsdWc9eC5yZXBsYWNlKC8gL2csIi0iKS50b0xvd2VyQ2FzZSgp O3RoaXMudXNlcm5hbWU9eTt0aGlzLnNldEJhc2UocCt5KyIvbGlzdHMvIit0aGlz Lmxpc3RzbHVnKyIvc3RhdHVzZXMuIik7dGhpcy5zZXRTZWFyY2goIiAiKTtyZXR1 cm4gdGhpc30sc2V0UHJvZmlsZUltYWdlOmZ1bmN0aW9uKHgpe3RoaXMuX3Byb2Zp bGVJbWFnZT14O3RoaXMuYnlDbGFzcygidHd0ci1wcm9maWxlLWltZyIsImltZyIp LnNyYz1jKHgpO3RoaXMuYnlDbGFzcygidHd0ci1wcm9maWxlLWltZy1hbmNob3Ii LCJhIikuaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL2ludGVudC91c2VyP3NjcmVl bl9uYW1lPSIrdGhpcy51c2VybmFtZTtyZXR1cm4gdGhpc30sc2V0VGl0bGU6ZnVu Y3Rpb24oeCl7dGhpcy50aXRsZT14O3RoaXMud2lkZ2V0RWwuZ2V0RWxlbWVudHNC eVRhZ05hbWUoImgzIilbMF0uaW5uZXJIVE1MPXRoaXMudGl0bGU7cmV0dXJuIHRo aXN9LHNldENhcHRpb246ZnVuY3Rpb24oeCl7dGhpcy5zdWJqZWN0PXg7dGhpcy53 aWRnZXRFbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaDQiKVswXS5pbm5lckhUTUw9 dGhpcy5zdWJqZWN0O3JldHVybiB0aGlzfSxzZXRGb290ZXJUZXh0OmZ1bmN0aW9u KHgpe3RoaXMuZm9vdGVyVGV4dD0oTi5kZWYoeCkmJk4uc3RyaW5nKHgpKT94OiJK b2luIHRoZSBjb252ZXJzYXRpb24iO2lmKHRoaXMuX3JlbmRlcmVkKXt0aGlzLmJ5 Q2xhc3MoInR3dHItam9pbi1jb252IiwiYSIpLmlubmVySFRNTD10aGlzLmZvb3Rl clRleHR9cmV0dXJuIHRoaXN9LHNldFNlYXJjaDpmdW5jdGlvbih5KXt0aGlzLnNl YXJjaFN0cmluZz15fHwiIjt0aGlzLnNlYXJjaD1lbmNvZGVVUklDb21wb25lbnQo dGhpcy5zZWFyY2hTdHJpbmcpO3RoaXMuX3NldFVybCgpO2lmKHRoaXMuX3JlbmRl cmVkKXt2YXIgeD10aGlzLmJ5Q2xhc3MoInR3dHItam9pbi1jb252IiwiYSIpO3gu aHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tLyIrdGhpcy5fZ2V0V2lkZ2V0UGF0aCgp fXJldHVybiB0aGlzfSxfZ2V0V2lkZ2V0UGF0aDpmdW5jdGlvbigpe2lmKHRoaXMu X2lzUHJvZmlsZVdpZGdldCl7cmV0dXJuIHRoaXMudXNlcm5hbWV9ZWxzZXtpZih0 aGlzLl9pc0ZhdnNXaWRnZXQpe3JldHVybiB0aGlzLnVzZXJuYW1lKyIvZmF2b3Jp dGVzIn1lbHNle2lmKHRoaXMuX2lzTGlzdFdpZGdldCl7cmV0dXJuIHRoaXMudXNl cm5hbWUrIi9saXN0cy8iK3RoaXMubGlzdHNsdWd9ZWxzZXtyZXR1cm4iI3NlYXJj aD9xPSIrdGhpcy5zZWFyY2h9fX19LF9zZXRVcmw6ZnVuY3Rpb24oKXt2YXIgeT10 aGlzO2Z1bmN0aW9uIHgoKXtyZXR1cm4iJiIrKCtuZXcgRGF0ZSkrIj1jYWNoZWJ1 c3QifWZ1bmN0aW9uIHooKXtyZXR1cm4oeS5zaW5jZUlkPT0xKT8iIjoiJnNpbmNl X2lkPSIreS5zaW5jZUlkKyImcmVmcmVzaD10cnVlIn1pZih0aGlzLl9pc1Byb2Zp bGVXaWRnZXQpe3RoaXMudXJsPXRoaXMuX2luY2x1ZGVFbnRpdGllcyh0aGlzLl9i YXNlKyImY2FsbGJhY2s9Iit0aGlzLl9jYisiJmluY2x1ZGVfcnRzPXRydWUmY291 bnQ9Iit0aGlzLnJwcCt6KCkrIiZjbGllbnRzb3VyY2U9Iit0aGlzLnNvdXJjZSl9 ZWxzZXtpZih0aGlzLl9pc0ZhdnNXaWRnZXR8fHRoaXMuX2lzTGlzdFdpZGdldCl7 dGhpcy51cmw9dGhpcy5faW5jbHVkZUVudGl0aWVzKHRoaXMuX2Jhc2UrdGhpcy5m b3JtYXQrIj9jYWxsYmFjaz0iK3RoaXMuX2NiK3ooKSsiJmNsaWVudHNvdXJjZT0i K3RoaXMuc291cmNlKX1lbHNle3RoaXMudXJsPXRoaXMuX2luY2x1ZGVFbnRpdGll cyh0aGlzLl9iYXNlK3RoaXMuZm9ybWF0KyI/cT0iK3RoaXMuc2VhcmNoKyImY2Fs bGJhY2s9Iit0aGlzLl9jYisiJnJwcD0iK3RoaXMucnBwK3ooKSsiJmNsaWVudHNv dXJjZT0iK3RoaXMuc291cmNlKTtpZighdGhpcy5ydW5PbmNlKXt0aGlzLnVybCs9 IiZyZXN1bHRfdHlwZT1yZWNlbnQifX19dGhpcy51cmwrPXgoKTtyZXR1cm4gdGhp c30sX2luY2x1ZGVFbnRpdGllczpmdW5jdGlvbih4KXtpZihUV1RSLldpZGdldC5T SE9XX0VOVElUSUVTKXtyZXR1cm4geCsiJmluY2x1ZGVfZW50aXRpZXM9dHJ1ZSJ9 cmV0dXJuIHh9LF9nZXRSR0I6ZnVuY3Rpb24oeCl7cmV0dXJuIFMoeC5zdWJzdHJp bmcoMSw3KSl9LHNldFRoZW1lOmZ1bmN0aW9uKEFDLHgpe3ZhciBBQT10aGlzO3Zh ciB5PSIgIWltcG9ydGFudCI7dmFyIEFCPSgod2luZG93LmxvY2F0aW9uLmhvc3Ru YW1lLm1hdGNoKC90d2l0dGVyXC5jb20vKSkmJih3aW5kb3cubG9jYXRpb24ucGF0 aG5hbWUubWF0Y2goL2dvb2RpZXMvKSkpO2lmKHh8fEFCKXt5PSIifXRoaXMudGhl bWU9e3NoZWxsOntiYWNrZ3JvdW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEFDLnNoZWxs LmJhY2tncm91bmR8fEFBLl9nZXREZWZhdWx0VGhlbWUoKS5zaGVsbC5iYWNrZ3Jv dW5kfSgpLGNvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIEFDLnNoZWxsLmNvbG9yfHxB QS5fZ2V0RGVmYXVsdFRoZW1lKCkuc2hlbGwuY29sb3J9KCl9LHR3ZWV0czp7YmFj a2dyb3VuZDpmdW5jdGlvbigpe3JldHVybiBBQy50d2VldHMuYmFja2dyb3VuZHx8 QUEuX2dldERlZmF1bHRUaGVtZSgpLnR3ZWV0cy5iYWNrZ3JvdW5kfSgpLGNvbG9y OmZ1bmN0aW9uKCl7cmV0dXJuIEFDLnR3ZWV0cy5jb2xvcnx8QUEuX2dldERlZmF1 bHRUaGVtZSgpLnR3ZWV0cy5jb2xvcn0oKSxsaW5rczpmdW5jdGlvbigpe3JldHVy biBBQy50d2VldHMubGlua3N8fEFBLl9nZXREZWZhdWx0VGhlbWUoKS50d2VldHMu bGlua3N9KCl9fTt2YXIgej0iIyIrdGhpcy5pZCsiIC50d3RyLWRvYywgICAgICAg ICAgICAgICAgICAgICAgIyIrdGhpcy5pZCsiIC50d3RyLWhkIGEsICAgICAgICAg ICAgICAgICAgICAgICMiK3RoaXMuaWQrIiBoMywgICAgICAgICAgICAgICAgICAg ICAgIyIrdGhpcy5pZCsiIGg0IHsgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y OiAiK3RoaXMudGhlbWUuc2hlbGwuYmFja2dyb3VuZCt5KyI7ICAgICAgICAgICAg Y29sb3I6ICIrdGhpcy50aGVtZS5zaGVsbC5jb2xvcit5KyI7ICAgICAgICAgIH0g ICAgICAgICAgIyIrdGhpcy5pZCsiIC50d3RyLXR3ZWV0IGEgeyAgICAgICAgICAg IGNvbG9yOiAiK3RoaXMudGhlbWUudHdlZXRzLmxpbmtzK3krIjsgICAgICAgICAg fSAgICAgICAgICAjIit0aGlzLmlkKyIgLnR3dHItYmQsICMiK3RoaXMuaWQrIiAu dHd0ci10aW1lbGluZSBpIGEsICAgICAgICAgICAjIit0aGlzLmlkKyIgLnR3dHIt YmQgcCB7ICAgICAgICAgICAgY29sb3I6ICIrdGhpcy50aGVtZS50d2VldHMuY29s b3IreSsiOyAgICAgICAgICB9ICAgICAgICAgICMiK3RoaXMuaWQrIiAudHd0ci1u ZXctcmVzdWx0cywgICAgICAgICAgICMiK3RoaXMuaWQrIiAudHd0ci1yZXN1bHRz LWlubmVyLCAgICAgICAgICAgIyIrdGhpcy5pZCsiIC50d3RyLXRpbWVsaW5lIHsg ICAgICAgICAgICBiYWNrZ3JvdW5kOiAiK3RoaXMudGhlbWUudHdlZXRzLmJhY2tn cm91bmQreSsiOyAgICAgICAgICB9IjtpZihsLmllKXt6Kz0iIyIrdGhpcy5pZCsi IC50d3RyLXR3ZWV0IHsgYmFja2dyb3VuZDogIit0aGlzLnRoZW1lLnR3ZWV0cy5i YWNrZ3JvdW5kK3krIjsgfSJ9dC5jc3Moeik7cmV0dXJuIHRoaXN9LGJ5Q2xhc3M6 ZnVuY3Rpb24oQUEseCx5KXt2YXIgej1KKEFBLHgsTSh0aGlzLmlkKSk7cmV0dXJu KHkpP3o6elswXX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIHo9dGhpcztpZighVFdU Ui5XaWRnZXQuaGFzTG9hZGVkU3R5bGVTaGVldCl7d2luZG93LnNldFRpbWVvdXQo ZnVuY3Rpb24oKXt6LnJlbmRlci5jYWxsKHopfSw1MCk7cmV0dXJuIHRoaXN9dGhp cy5zZXRUaGVtZSh0aGlzLnRoZW1lLHRoaXMuX2lzQ3JlYXRvcik7aWYodGhpcy5f aXNQcm9maWxlV2lkZ2V0KXtpLmFkZCh0aGlzLndpZGdldEVsLCJ0d3RyLXdpZGdl dC1wcm9maWxlIil9aWYodGhpcy5faXNTY3JvbGwpe2kuYWRkKHRoaXMud2lkZ2V0 RWwsInR3dHItc2Nyb2xsIil9aWYoIXRoaXMuX2lzTGl2ZSYmIXRoaXMuX2lzU2Ny b2xsKXt0aGlzLndoWzFdPSJhdXRvIn1pZih0aGlzLl9pc1NlYXJjaFdpZGdldCYm dGhpcy5faXNGdWxsU2NyZWVuKXtkb2N1bWVudC50aXRsZT0iVHdpdHRlciBzZWFy Y2g6ICIrZXNjYXBlKHRoaXMuc2VhcmNoU3RyaW5nKX10aGlzLndpZGdldEVsLmlu bmVySFRNTD10aGlzLl9nZXRXaWRnZXRIdG1sKCk7dmFyIHk9dGhpcy5ieUNsYXNz KCJ0d3RyLXRpbWVsaW5lIiwiZGl2Iik7aWYodGhpcy5faXNMaXZlJiYhdGhpcy5f aXNGdWxsU2NyZWVuKXt2YXIgQUE9ZnVuY3Rpb24oQUIpe2lmKHouX2JlaGF2aW9y PT09ImFsbCIpe3JldHVybiB9aWYoSS5jYWxsKHRoaXMsQUIpKXt6LnBhdXNlLmNh bGwoeil9fTt2YXIgeD1mdW5jdGlvbihBQil7aWYoei5fYmVoYXZpb3I9PT0iYWxs Iil7cmV0dXJuIH1pZihJLmNhbGwodGhpcyxBQikpe3oucmVzdW1lLmNhbGwoeil9 fTt0aGlzLnJlbW92ZUV2ZW50cz1mdW5jdGlvbigpe0sucmVtb3ZlKHksIm1vdXNl b3ZlciIsQUEpO0sucmVtb3ZlKHksIm1vdXNlb3V0Iix4KX07Sy5hZGQoeSwibW91 c2VvdmVyIixBQSk7Sy5hZGQoeSwibW91c2VvdXQiLHgpfXRoaXMuX3JlbmRlcmVk PXRydWU7dGhpcy5fcmVhZHkoKTtyZXR1cm4gdGhpc30scmVtb3ZlRXZlbnRzOmZ1 bmN0aW9uKCl7fSxfZ2V0RGVmYXVsdFRoZW1lOmZ1bmN0aW9uKCl7cmV0dXJue3No ZWxsOntiYWNrZ3JvdW5kOiIjOGVjMWRhIixjb2xvcjoiI2ZmZmZmZiJ9LHR3ZWV0 czp7YmFja2dyb3VuZDoiI2ZmZmZmZiIsY29sb3I6IiM0NDQ0NDQiLGxpbmtzOiIj MTk4NWI1In19fSxfZ2V0V2lkZ2V0SHRtbDpmdW5jdGlvbigpe3ZhciB6PXRoaXM7 ZnVuY3Rpb24gQUIoKXtpZih6Ll9pc1Byb2ZpbGVXaWRnZXQpe3JldHVybic8YSB0 YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tLyIgY2xhc3M9 InR3dHItcHJvZmlsZS1pbWctYW5jaG9yIj48aW1nIGFsdD0icHJvZmlsZSIgY2xh c3M9InR3dHItcHJvZmlsZS1pbWciIHNyYz0iJyt3KyciPjwvYT4gICAgICAgICAg ICAgICAgICAgICAgPGgzPjwvaDM+ICAgICAgICAgICAgICAgICAgICAgIDxoND48 L2g0Pid9ZWxzZXtyZXR1cm4iPGgzPiIrei50aXRsZSsiPC9oMz48aDQ+Iit6LnN1 YmplY3QrIjwvaDQ+In19ZnVuY3Rpb24geSgpe3JldHVybiB6Ll9pc0Z1bGxTY3Jl ZW4/IiB0d3RyLWZ1bGxzY3JlZW4iOiIifXZhciBBQT1UPyJodHRwczovL3R3aXR0 ZXItd2lkZ2V0cy5zMy5hbWF6b25hd3MuY29tL2kvd2lkZ2V0LWxvZ28ucG5nIjoi aHR0cDovL3dpZGdldHMudHdpbWcuY29tL2kvd2lkZ2V0LWxvZ28ucG5nIjtpZih0 aGlzLl9pc0Z1bGxTY3JlZW4pe0FBPSJodHRwczovL3R3aXR0ZXItd2lkZ2V0cy5z My5hbWF6b25hd3MuY29tL2kvd2lkZ2V0LWxvZ28tZnVsbHNjcmVlbi5wbmcifXZh ciB4PSc8ZGl2IGNsYXNzPSJ0d3RyLWRvYycreSgpKyciIHN0eWxlPSJ3aWR0aDog Jyt0aGlzLndoWzBdKyc7Ij4gICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0d3RyLWhk Ij4nK0FCKCkrJyAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICA8ZGl2IGNs YXNzPSJ0d3RyLWJkIj4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9InR3dHItdGlt ZWxpbmUiIHN0eWxlPSJoZWlnaHQ6ICcrdGhpcy53aFsxXSsnOyI+ICAgICAgICAg ICAgICAgIDxkaXYgY2xhc3M9InR3dHItdHdlZXRzIj4gICAgICAgICAgICAgICAg ICA8ZGl2IGNsYXNzPSJ0d3RyLXJlZmVyZW5jZS10d2VldCI+PC9kaXY+ICAgICAg ICAgICAgICAgICAgPCEtLSB0d2VldHMgc2hvdyBoZXJlIC0tPiAgICAgICAgICAg ICAgICA8L2Rpdj4gICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgIDwvZGl2 PiAgICAgICAgICAgIDxkaXYgY2xhc3M9InR3dHItZnQiPiAgICAgICAgICAgICAg PGRpdj48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29t Ij48aW1nIGFsdD0iIiBzcmM9IicrQUErJyI+PC9hPiAgICAgICAgICAgICAgICA8 c3Bhbj48YSB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InR3dHItam9pbi1jb252IiBz dHlsZT0iY29sb3I6Jyt0aGlzLnRoZW1lLnNoZWxsLmNvbG9yKyciIGhyZWY9Imh0 dHA6Ly90d2l0dGVyLmNvbS8nK3RoaXMuX2dldFdpZGdldFBhdGgoKSsnIj4nK3Ro aXMuZm9vdGVyVGV4dCsiPC9hPjwvc3Bhbj4gICAgICAgICAgICAgIDwvZGl2PiAg ICAgICAgICAgIDwvZGl2PiAgICAgICAgICA8L2Rpdj4iO3JldHVybiB4fSxfYXBw ZW5kVHdlZXQ6ZnVuY3Rpb24oeCl7dGhpcy5faW5zZXJ0TmV3UmVzdWx0c051bWJl cigpO2YoeCx0aGlzLmJ5Q2xhc3MoInR3dHItcmVmZXJlbmNlLXR3ZWV0IiwiZGl2 IikpO3JldHVybiB0aGlzfSxfc2xpZGU6ZnVuY3Rpb24oeSl7dmFyIHo9dGhpczt2 YXIgeD1kKHkpLm9mZnNldEhlaWdodDtpZih0aGlzLnJ1bk9uY2Upe25ldyBCKHks ImhlaWdodCIse2Zyb206MCx0bzp4LHRpbWU6NTAwLGNhbGxiYWNrOmZ1bmN0aW9u KCl7ei5fZmFkZS5jYWxsKHoseSl9fSkuc3RhcnQoKX1yZXR1cm4gdGhpc30sX2Zh ZGU6ZnVuY3Rpb24oeCl7dmFyIHk9dGhpcztpZihCLmNhblRyYW5zaXRpb24pe3gu c3R5bGUud2Via2l0VHJhbnNpdGlvbj0ib3BhY2l0eSAwLjVzIGVhc2Utb3V0Ijt4 LnN0eWxlLm9wYWNpdHk9MTtyZXR1cm4gdGhpc31uZXcgQih4LCJvcGFjaXR5Iix7 ZnJvbTowLHRvOjEsdGltZTo1MDB9KS5zdGFydCgpO3JldHVybiB0aGlzfSxfY2hv cDpmdW5jdGlvbigpe2lmKHRoaXMuX2lzU2Nyb2xsKXtyZXR1cm4gdGhpc312YXIg QUM9dGhpcy5ieUNsYXNzKCJ0d3RyLXR3ZWV0IiwiZGl2Iix0cnVlKTt2YXIgQUQ9 dGhpcy5ieUNsYXNzKCJ0d3RyLW5ldy1yZXN1bHRzIiwiZGl2Iix0cnVlKTtpZihB Qy5sZW5ndGgpe2Zvcih2YXIgej1BQy5sZW5ndGgtMTt6Pj0wO3otLSl7dmFyIEFC PUFDW3pdO3ZhciBBQT1wYXJzZUludChBQi5vZmZzZXRUb3ApO2lmKEFBPnBhcnNl SW50KHRoaXMud2hbMV0pKXtnKEFCKX1lbHNle2JyZWFrfX1pZihBRC5sZW5ndGg+ MCl7dmFyIHg9QURbQUQubGVuZ3RoLTFdO3ZhciB5PXBhcnNlSW50KHgub2Zmc2V0 VG9wKTtpZih5PnBhcnNlSW50KHRoaXMud2hbMV0pKXtnKHgpfX19cmV0dXJuIHRo aXN9LF9hcHBlbmRTbGlkZUZhZGU6ZnVuY3Rpb24oeSl7dmFyIHg9eXx8dGhpcy50 d2VldC5lbGVtZW50O3RoaXMuX2Nob3AoKS5fYXBwZW5kVHdlZXQoeCkuX3NsaWRl KHgpO3JldHVybiB0aGlzfSxfY3JlYXRlVHdlZXQ6ZnVuY3Rpb24oeCl7eC50d2Vl dD1UV1RSLldpZGdldC5pZnkuYXV0b0xpbmsoeCk7eC50aW1lc3RhbXA9eC5jcmVh dGVkX2F0O3guY3JlYXRlZF9hdD10aGlzLl9pc1JlbGF0aXZlVGltZT9QKHguY3Jl YXRlZF9hdCk6WCh4LmNyZWF0ZWRfYXQpO3RoaXMudHdlZXQ9bmV3IFEoeCk7aWYo dGhpcy5faXNMaXZlJiZ0aGlzLnJ1bk9uY2Upe3RoaXMudHdlZXQuZWxlbWVudC5z dHlsZS5vcGFjaXR5PTA7dGhpcy50d2VldC5lbGVtZW50LnN0eWxlLmZpbHRlcj0i YWxwaGEob3BhY2l0eTowKSI7dGhpcy50d2VldC5lbGVtZW50LnN0eWxlLmhlaWdo dD0iMCJ9cmV0dXJuIHRoaXN9LF9nZXRSZXN1bHRzOmZ1bmN0aW9uKCl7dmFyIHg9 dGhpczt0aGlzLnRpbWVzUmVxdWVzdGVkKys7dGhpcy5qc29uUmVxdWVzdFJ1bm5p bmc9dHJ1ZTt0aGlzLmpzb25SZXF1ZXN0VGltZXI9d2luZG93LnNldFRpbWVvdXQo ZnVuY3Rpb24oKXtpZih4Lmpzb25SZXF1ZXN0UnVubmluZyl7Y2xlYXJUaW1lb3V0 KHguanNvblJlcXVlc3RUaW1lcik7eC5qc29uUmVxdWVzdFRpbWVyPW51bGx9eC5q c29uUmVxdWVzdFJ1bm5pbmc9ZmFsc2U7Zyh4LnNjcmlwdEVsZW1lbnQpO3gubmV3 UmVzdWx0cz1mYWxzZTt4LmRlY2F5KCl9LHRoaXMuanNvbk1heFJlcXVlc3RUaW1l T3V0KTtUV1RSLldpZGdldC5qc29uUCh4LnVybCxmdW5jdGlvbih5KXt4LnNjcmlw dEVsZW1lbnQ9eX0pfSxjbGVhcjpmdW5jdGlvbigpe3ZhciB5PXRoaXMuYnlDbGFz cygidHd0ci10d2VldCIsImRpdiIsdHJ1ZSk7dmFyIHg9dGhpcy5ieUNsYXNzKCJ0 d3RyLW5ldy1yZXN1bHRzIiwiZGl2Iix0cnVlKTt5PXkuY29uY2F0KHgpO0YoeSxm dW5jdGlvbih6KXtnKHopfSk7cmV0dXJuIHRoaXN9LF9zb3J0QnlNYWdpYzpmdW5j dGlvbih4KXt2YXIgeT10aGlzO2lmKHRoaXMuX3R3ZWV0RmlsdGVyKXtpZih0aGlz Ll90d2VldEZpbHRlci5uZWdhdGl2ZXMpe3g9eC5maWx0ZXIoZnVuY3Rpb24oeil7 aWYoIXkuX3R3ZWV0RmlsdGVyLm5lZ2F0aXZlcy50ZXN0KHoudGV4dCkpe3JldHVy biB6fX0pfWlmKHRoaXMuX3R3ZWV0RmlsdGVyLnBvc2l0aXZlcyl7eD14LmZpbHRl cihmdW5jdGlvbih6KXtpZih5Ll90d2VldEZpbHRlci5wb3NpdGl2ZXMudGVzdCh6 LnRleHQpKXtyZXR1cm4gen19KX19c3dpdGNoKHRoaXMuX2JlaGF2aW9yKXtjYXNl ImFsbCI6dGhpcy5fc29ydEJ5TGF0ZXN0KHgpO2JyZWFrO2Nhc2UicHJlbG9hZGVk IjpkZWZhdWx0OnRoaXMuX3NvcnRCeURlZmF1bHQoeCk7YnJlYWt9aWYodGhpcy5f aXNMaXZlJiZ0aGlzLl9iZWhhdmlvciE9PSJhbGwiKXt0aGlzLmludGVydmFsSm9i LnNldCh0aGlzLnJlc3VsdHMpO3RoaXMuaW50ZXJ2YWxKb2Iuc3RhcnQoKX1yZXR1 cm4gdGhpc30sX3NvcnRCeUxhdGVzdDpmdW5jdGlvbih4KXt0aGlzLnJlc3VsdHM9 eDt0aGlzLnJlc3VsdHM9dGhpcy5yZXN1bHRzLnNsaWNlKDAsdGhpcy5ycHApO3Ro aXMucmVzdWx0cy5yZXZlcnNlKCk7cmV0dXJuIHRoaXN9LF9zb3J0QnlEZWZhdWx0 OmZ1bmN0aW9uKHkpe3ZhciB6PXRoaXM7dmFyIHg9ZnVuY3Rpb24oQUEpe3JldHVy biBuZXcgRGF0ZShBQSkuZ2V0VGltZSgpfTt0aGlzLnJlc3VsdHMudW5zaGlmdC5h cHBseSh0aGlzLnJlc3VsdHMseSk7Rih0aGlzLnJlc3VsdHMsZnVuY3Rpb24oQUEp e2lmKCFBQS52aWV3cyl7QUEudmlld3M9MH19KTt0aGlzLnJlc3VsdHMuc29ydChm dW5jdGlvbihBQixBQSl7aWYoeChBQi5jcmVhdGVkX2F0KT54KEFBLmNyZWF0ZWRf YXQpKXtyZXR1cm4gLTF9ZWxzZXtpZih4KEFCLmNyZWF0ZWRfYXQpPHgoQUEuY3Jl YXRlZF9hdCkpe3JldHVybiAxfWVsc2V7cmV0dXJuIDB9fX0pO3RoaXMucmVzdWx0 cz10aGlzLnJlc3VsdHMuc2xpY2UoMCx0aGlzLnJwcCk7dGhpcy5yZXN1bHRzPXRo aXMucmVzdWx0cy5zb3J0KGZ1bmN0aW9uKEFCLEFBKXtpZihBQi52aWV3czxBQS52 aWV3cyl7cmV0dXJuIC0xfWVsc2V7aWYoQUIudmlld3M+QUEudmlld3Mpe3JldHVy biAxfX1yZXR1cm4gMH0pO2lmKCF0aGlzLl9pc0xpdmUpe3RoaXMucmVzdWx0cy5y ZXZlcnNlKCl9fSxfcHJlUGxheTpmdW5jdGlvbih5KXtpZih0aGlzLmpzb25SZXF1 ZXN0VGltZXIpe2NsZWFyVGltZW91dCh0aGlzLmpzb25SZXF1ZXN0VGltZXIpO3Ro aXMuanNvblJlcXVlc3RUaW1lcj1udWxsfWlmKCFsLmllKXtnKHRoaXMuc2NyaXB0 RWxlbWVudCl9aWYoeS5lcnJvcil7dGhpcy5uZXdSZXN1bHRzPWZhbHNlfWVsc2V7 aWYoeS5yZXN1bHRzJiZ5LnJlc3VsdHMubGVuZ3RoPjApe3RoaXMucmVzcG9uc2U9 eTt0aGlzLm5ld1Jlc3VsdHM9dHJ1ZTt0aGlzLnNpbmNlSWQ9eS5tYXhfaWRfc3Ry O3RoaXMuX3NvcnRCeU1hZ2ljKHkucmVzdWx0cyk7aWYodGhpcy5pc1J1bm5pbmco KSl7dGhpcy5fcGxheSgpfX1lbHNle2lmKCh0aGlzLl9pc1Byb2ZpbGVXaWRnZXR8 fHRoaXMuX2lzRmF2c1dpZGdldHx8dGhpcy5faXNMaXN0V2lkZ2V0KSYmTi5hcnJh eSh5KSYmeS5sZW5ndGgpe3RoaXMubmV3UmVzdWx0cz10cnVlO2lmKCF0aGlzLl9w cm9maWxlSW1hZ2UmJnRoaXMuX2lzUHJvZmlsZVdpZGdldCl7dmFyIHg9eVswXS51 c2VyLnNjcmVlbl9uYW1lO3RoaXMuc2V0UHJvZmlsZUltYWdlKHlbMF0udXNlci5w cm9maWxlX2ltYWdlX3VybCk7dGhpcy5zZXRUaXRsZSh5WzBdLnVzZXIubmFtZSk7 dGhpcy5zZXRDYXB0aW9uKCc8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDov L3R3aXR0ZXIuY29tL2ludGVudC91c2VyP3NjcmVlbl9uYW1lPScreCsnIj4nK3gr IjwvYT4iKX10aGlzLnNpbmNlSWQ9eVswXS5pZF9zdHI7dGhpcy5fc29ydEJ5TWFn aWMoeSk7aWYodGhpcy5pc1J1bm5pbmcoKSl7dGhpcy5fcGxheSgpfX1lbHNle3Ro aXMubmV3UmVzdWx0cz1mYWxzZX19fXRoaXMuX3NldFVybCgpO2lmKHRoaXMuX2lz TGl2ZSl7dGhpcy5kZWNheSgpfX0sX3BsYXk6ZnVuY3Rpb24oKXt2YXIgeD10aGlz O2lmKHRoaXMucnVuT25jZSl7dGhpcy5faGFzTmV3U2VhcmNoUmVzdWx0cz10cnVl fWlmKHRoaXMuX2F2YXRhcnMpe3RoaXMuX3ByZWxvYWRJbWFnZXModGhpcy5yZXN1 bHRzKX1pZih0aGlzLl9pc1JlbGF0aXZlVGltZSYmKHRoaXMuX2JlaGF2aW9yPT0i YWxsInx8dGhpcy5fYmVoYXZpb3I9PSJwcmVsb2FkZWQiKSl7Rih0aGlzLmJ5Q2xh c3MoInR3dHItdGltZXN0YW1wIiwiYSIsdHJ1ZSksZnVuY3Rpb24oeSl7eS5pbm5l ckhUTUw9UCh5LmdldEF0dHJpYnV0ZSgidGltZSIpKX0pfWlmKCF0aGlzLl9pc0xp dmV8fHRoaXMuX2JlaGF2aW9yPT0iYWxsInx8dGhpcy5fYmVoYXZpb3I9PSJwcmVs b2FkZWQiKXtGKHRoaXMucmVzdWx0cyxmdW5jdGlvbih6KXtpZih6LnJldHdlZXRl ZF9zdGF0dXMpe3o9ei5yZXR3ZWV0ZWRfc3RhdHVzfWlmKHguX2lzUHJvZmlsZVdp ZGdldCl7ei5mcm9tX3VzZXI9ei51c2VyLnNjcmVlbl9uYW1lO3oucHJvZmlsZV9p bWFnZV91cmw9ei51c2VyLnByb2ZpbGVfaW1hZ2VfdXJsfWlmKHguX2lzRmF2c1dp ZGdldHx8eC5faXNMaXN0V2lkZ2V0KXt6LmZyb21fdXNlcj16LnVzZXIuc2NyZWVu X25hbWU7ei5wcm9maWxlX2ltYWdlX3VybD16LnVzZXIucHJvZmlsZV9pbWFnZV91 cmx9ei5pZD16LmlkX3N0cjt4Ll9jcmVhdGVUd2VldCh7aWQ6ei5pZCx1c2VyOnou ZnJvbV91c2VyLHR3ZWV0OnoudGV4dCxhdmF0YXI6ei5wcm9maWxlX2ltYWdlX3Vy bCxjcmVhdGVkX2F0OnouY3JlYXRlZF9hdCxuZWVkbGU6en0pO3ZhciB5PXgudHdl ZXQuZWxlbWVudDsoeC5fYmVoYXZpb3I9PSJhbGwiKT94Ll9hcHBlbmRTbGlkZUZh ZGUoeSk6eC5fYXBwZW5kVHdlZXQoeSl9KTtpZih0aGlzLl9iZWhhdmlvciE9InBy ZWxvYWRlZCIpe3JldHVybiB0aGlzfX1yZXR1cm4gdGhpc30sX25vcm1hbGl6ZVR3 ZWV0OmZ1bmN0aW9uKHkpe3ZhciB4PXRoaXM7eS52aWV3cysrO2lmKHRoaXMuX2lz UHJvZmlsZVdpZGdldCl7eS5mcm9tX3VzZXI9eC51c2VybmFtZTt5LnByb2ZpbGVf aW1hZ2VfdXJsPXkudXNlci5wcm9maWxlX2ltYWdlX3VybH1pZih0aGlzLl9pc0Zh dnNXaWRnZXR8fHRoaXMuX2lzTGlzdFdpZGdldCl7eS5mcm9tX3VzZXI9eS51c2Vy LnNjcmVlbl9uYW1lO3kucHJvZmlsZV9pbWFnZV91cmw9eS51c2VyLnByb2ZpbGVf aW1hZ2VfdXJsfWlmKHRoaXMuX2lzRnVsbFNjcmVlbil7eS5wcm9maWxlX2ltYWdl X3VybD15LnByb2ZpbGVfaW1hZ2VfdXJsLnJlcGxhY2UoL19ub3JtYWxcLi8sIl9i aWdnZXIuIil9eS5pZD15LmlkX3N0cjt0aGlzLl9jcmVhdGVUd2VldCh7aWQ6eS5p ZCx1c2VyOnkuZnJvbV91c2VyLHR3ZWV0OnkudGV4dCxhdmF0YXI6eS5wcm9maWxl X2ltYWdlX3VybCxjcmVhdGVkX2F0OnkuY3JlYXRlZF9hdCxuZWVkbGU6eX0pLl9h cHBlbmRTbGlkZUZhZGUoKX0sX2luc2VydE5ld1Jlc3VsdHNOdW1iZXI6ZnVuY3Rp b24oKXtpZighdGhpcy5faGFzTmV3U2VhcmNoUmVzdWx0cyl7dGhpcy5faGFzTmV3 U2VhcmNoUmVzdWx0cz1mYWxzZTtyZXR1cm4gfWlmKHRoaXMucnVuT25jZSYmdGhp cy5faXNTZWFyY2hXaWRnZXQpe3ZhciBBQT10aGlzLnJlc3BvbnNlLnRvdGFsPnRo aXMucnBwP3RoaXMucmVzcG9uc2UudG90YWw6dGhpcy5yZXNwb25zZS5yZXN1bHRz Lmxlbmd0aDt2YXIgeD1BQT4xPyJzIjoiIjt2YXIgej0odGhpcy5yZXNwb25zZS53 YXJuaW5nJiZ0aGlzLnJlc3BvbnNlLndhcm5pbmcubWF0Y2goL2FkanVzdGVkIHNp bmNlX2lkLykpPyJtb3JlIHRoYW4iOiIiO3ZhciB5PWRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoImRpdiIpO2kuYWRkKHksInR3dHItbmV3LXJlc3VsdHMiKTt5LmlubmVy SFRNTD0nPGRpdiBjbGFzcz0idHd0ci1yZXN1bHRzLWlubmVyIj4gJm5ic3A7IDwv ZGl2PjxkaXYgY2xhc3M9InR3dHItcmVzdWx0cy1ociI+ICZuYnNwOyA8L2Rpdj48 c3Bhbj4nK3orIiA8c3Ryb25nPiIrQUErIjwvc3Ryb25nPiBuZXcgdHdlZXQiK3gr Ijwvc3Bhbj4iO2YoeSx0aGlzLmJ5Q2xhc3MoInR3dHItcmVmZXJlbmNlLXR3ZWV0 IiwiZGl2IikpO3RoaXMuX2hhc05ld1NlYXJjaFJlc3VsdHM9ZmFsc2V9fSxfcHJl bG9hZEltYWdlczpmdW5jdGlvbih4KXtpZih0aGlzLl9pc1Byb2ZpbGVXaWRnZXR8 fHRoaXMuX2lzRmF2c1dpZGdldHx8dGhpcy5faXNMaXN0V2lkZ2V0KXtGKHgsZnVu Y3Rpb24oeil7dmFyIHk9bmV3IEltYWdlKCk7eS5zcmM9Yyh6LnVzZXIucHJvZmls ZV9pbWFnZV91cmwpfSl9ZWxzZXtGKHgsZnVuY3Rpb24oeSl7KG5ldyBJbWFnZSgp KS5zcmM9Yyh5LnByb2ZpbGVfaW1hZ2VfdXJsKX0pfX0sX2RlY2F5RGVjaWRlcjpm dW5jdGlvbigpe3ZhciB4PWZhbHNlO2lmKCF0aGlzLnJ1bk9uY2Upe3RoaXMucnVu T25jZT10cnVlO3g9dHJ1ZX1lbHNle2lmKHRoaXMubmV3UmVzdWx0cyl7eD10cnVl fX1yZXR1cm4geH0sc3RhcnQ6ZnVuY3Rpb24oKXt2YXIgeD10aGlzO2lmKCF0aGlz Ll9yZW5kZXJlZCl7c2V0VGltZW91dChmdW5jdGlvbigpe3guc3RhcnQuY2FsbCh4 KX0sNTApO3JldHVybiB0aGlzfWlmKCF0aGlzLl9pc0xpdmUpe3RoaXMuX2dldFJl c3VsdHMoKX1lbHNle3RoaXMub2NjYXNpb25hbEpvYi5zdGFydCgpfXRoaXMuX2lz UnVubmluZz10cnVlO3RoaXMuX2hhc09mZmljaWFsbHlTdGFydGVkPXRydWU7cmV0 dXJuIHRoaXN9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLm9jY2FzaW9uYWxKb2Iuc3Rv cCgpO2lmKHRoaXMuaW50ZXJ2YWxKb2Ipe3RoaXMuaW50ZXJ2YWxKb2Iuc3RvcCgp fXRoaXMuX2lzUnVubmluZz1mYWxzZTtyZXR1cm4gdGhpc30scGF1c2U6ZnVuY3Rp b24oKXtpZih0aGlzLmlzUnVubmluZygpJiZ0aGlzLmludGVydmFsSm9iKXt0aGlz LmludGVydmFsSm9iLnN0b3AoKTtpLmFkZCh0aGlzLndpZGdldEVsLCJ0d3RyLXBh dXNlZCIpO3RoaXMuX2lzUnVubmluZz1mYWxzZX1pZih0aGlzLl9yZXN1bWVUaW1l cil7Y2xlYXJUaW1lb3V0KHRoaXMuX3Jlc3VtZVRpbWVyKTt0aGlzLl9yZXN1bWVU aW1lcj1udWxsfXJldHVybiB0aGlzfSxyZXN1bWU6ZnVuY3Rpb24oKXt2YXIgeD10 aGlzO2lmKCF0aGlzLmlzUnVubmluZygpJiZ0aGlzLl9oYXNPZmZpY2lhbGx5U3Rh cnRlZCYmdGhpcy5pbnRlcnZhbEpvYil7dGhpcy5fcmVzdW1lVGltZXI9d2luZG93 LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt4LmludGVydmFsSm9iLnN0YXJ0KCk7eC5f aXNSdW5uaW5nPXRydWU7aS5yZW1vdmUoeC53aWRnZXRFbCwidHd0ci1wYXVzZWQi KX0sMjAwMCl9cmV0dXJuIHRoaXN9LGlzUnVubmluZzpmdW5jdGlvbigpe3JldHVy biB0aGlzLl9pc1J1bm5pbmd9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnN0b3Ao KTt0aGlzLmNsZWFyKCk7dGhpcy5ydW5PbmNlPWZhbHNlO3RoaXMuX2hhc09mZmlj aWFsbHlTdGFydGVkPWZhbHNlO3RoaXMuX3Byb2ZpbGVJbWFnZT1mYWxzZTt0aGlz Ll9pc0xpdmU9dHJ1ZTt0aGlzLl90d2VldEZpbHRlcj1mYWxzZTt0aGlzLl9pc1Nj cm9sbD1mYWxzZTt0aGlzLm5ld1Jlc3VsdHM9ZmFsc2U7dGhpcy5faXNSdW5uaW5n PWZhbHNlO3RoaXMuc2luY2VJZD0xO3RoaXMucmVzdWx0cz1bXTt0aGlzLnNob3dl ZFJlc3VsdHM9W107dGhpcy5vY2Nhc2lvbmFsSm9iLmRlc3Ryb3koKTtpZih0aGlz Lmpzb25SZXF1ZXN0UnVubmluZyl7Y2xlYXJUaW1lb3V0KHRoaXMuanNvblJlcXVl c3RUaW1lcil9aS5yZW1vdmUodGhpcy53aWRnZXRFbCwidHd0ci1zY3JvbGwiKTt0 aGlzLnJlbW92ZUV2ZW50cygpO3JldHVybiB0aGlzfX19KCl9KSgpO3ZhciBFPS90 d2l0dGVyXC5jb20oXDpcZHsyLDR9KT9cL2ludGVudFwvKFx3KykvLEg9e3R3ZWV0 OnRydWUscmV0d2VldDp0cnVlLGZhdm9yaXRlOnRydWV9LEc9InNjcm9sbGJhcnM9 eWVzLHJlc2l6YWJsZT15ZXMsdG9vbGJhcj1ubyxsb2NhdGlvbj15ZXMiLEQ9c2Ny ZWVuLmhlaWdodCxDPXNjcmVlbi53aWR0aDtmdW5jdGlvbiBBKE8pe089T3x8d2lu ZG93LmV2ZW50O3ZhciBOPU8udGFyZ2V0fHxPLnNyY0VsZW1lbnQsSixLLEksTSxM O3doaWxlKE4mJk4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJhIil7Tj1OLnBh cmVudE5vZGV9aWYoTiYmTi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImEiJiZO LmhyZWYpe0o9Ti5ocmVmLm1hdGNoKEUpO2lmKEope0s9NTUwO0k9KEpbMl0gaW4g SCk/NDIwOjU2MDtNPU1hdGgucm91bmQoKEMvMiktKEsvMikpO0w9MDtpZihEPkkp e0w9TWF0aC5yb3VuZCgoRC8yKS0oSS8yKSl9d2luZG93Lm9wZW4oTi5ocmVmLCJp bnRlbnQiLEcrIix3aWR0aD0iK0srIixoZWlnaHQ9IitJKyIsbGVmdD0iK00rIix0 b3A9IitMKTtPLnJldHVyblZhbHVlPWZhbHNlO08ucHJldmVudERlZmF1bHQmJk8u cHJldmVudERlZmF1bHQoKX19fWlmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIp e2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixBLGZhbHNlKX1lbHNl e2lmKGRvY3VtZW50LmF0dGFjaEV2ZW50KXtkb2N1bWVudC5hdHRhY2hFdmVudCgi b25jbGljayIsQSl9fX0pKCk7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=dogan-logo.jpg Content-Type: image/jpeg; name=dogan-logo.jpg Content-Location: http://www.radikal.com.tr/data/img/gfx/dogan-logo.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAICAgICAgICAgICAgICAwQDAgIDBAUE BAQEBAUGBQUFBQUFBgYHBwgHBwYJCQoKCQkMDAwMDAwMDAwMDAwMDAz/2wBDAQMD AwUEBQkGBgkNCwkLDQ8ODg4ODw8MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAz/wAARCAApACoDAREAAhEBAxEB/8QAHAAAAgEFAQAAAAAA AAAAAAAAAAcIAgMEBQYJ/8QAORAAAAUBBQMHCgcAAAAAAAAAAgMEBQYABxITFCIB CEIRFTIzVHSSISMkNDVDU2JysxZSYWNzgrL/xAAcAQEAAwEAAwEAAAAAAAAAAAAA AgMFBAEGBwj/xAA0EQABAgMGBAMFCQAAAAAAAAACAAMEBRIBBhMiMkIUM1JiI0Nx B3KDkrIVRFNUY4Ki0uL/2gAMAwEAAhEDEQA/APPpUqVZhT6Sp64XGL81foARWKrO bVdpU+MVSpRGbVdpU+MVKURm1XaVPjFSlEZtV2lT4xUpRSUYjVG1jZtuMp8qFPxi +GGsF7Xb6q1RrV+tKf5h/wCq3hVSxqIiiIoiKIpLsPsNm7in+2GsR7Xb6q1Kpphp 00JXlRUGZlrVimqYr79wSh1CPbviGF+8J6XEHiu8E3vGMkdEphlhnPO2tF0xHSJe U7p2lTlq6mITiR8LmdP9VwAgiCIZQgGANAO4cAekQBB4RBr2oVwKiiIoi71pg6wU fHN5HiMkNAPCbVJuk92VdmbihdZ+4d1ZYfm016rHXna4/wCzYLxYvcO1gfxXy29r XNdLtqIe9uELCxSyt/V7qbrHt27WVn27MMvZtRJ+Qu8LT5sPkrUMc1uZcqX8Jstt El5blL4bzagRxt7ToAPy14Qs110VXj0xCY9YoT3jhBLvaanHPwtPDxA1WODmGmqo d1Q9KN1ahTad55G1byvh29DZS4p5wxCyrpM2QIW59DdD0lxAbpKjTqxOKvj5XBnM k8e58eLbBfdInxYX4Rc1r3VvDMmInLGtZuodS1RkR3Sz/SiLY7Q0BXS5uNZsU8Af qCnu14G8ftNDKUngyt6hiKR+tS4SUfmHPl/wrIptu3QPzsGgkgtLkBPqzxNTQlNx QuE3IkXcT+wauG7t/bw2UTWYNQDG5uCGp8vjlp/aocXLoblNEdv6mn5Uk5tPpJaC 9c9y14z6wAMujTBulJUhAeiQmIDpLL+UNfTrsXVlt24XhZe1ht6i3E6XU6WoiWTF xzsYVTpJ1MPsNm7in+2GrXtdvqqFvS5RYW52JQOzWSzCfs57RJHiUWhM7QwlKjXN YsupkZaZYeqJJLwUpd28IItQujVeBHBFk6AjpERzKdQ0UJvu+9ZAZSvhsiRHSmx8 2PvYVM5YWVEW6LJS0thZCZoRmuYzSeilIwTizg4eoRuqs5qQOsAYZXKhy9pb8qtx xTNs9c2heCCWgCbnLd4smjy54m9o7YQ3pebpCE9caub0xbuFQEZwREiLShR4d4PC GuGLAwra5rxUiPb1ZP5VKQpfIN7CzoM1YrQClD/GGltYXBU62Pt7IRlXaXqgqBZx xXFGhxk5hhwRag+bu3bt2u0pDEYRtaiq5lWlrtUccFx8Z3k4VHpJZC0iG5L7LYbD VYbSGQ1tIN/E0lcSlR6wJ5BgBXic0aEITBdEIavfkrxg6fmEWXtBQxUpmXZiMzSZ yBJvoyBYIL10PKWHSH9Nldj2u31VSjYZ1g/rreVSooixvdk98FU0WTUERRFIVl9j NPcyPthrMPVapL//2Q== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=radikal-small-logo.jpg Content-Type: image/jpeg; name=radikal-small-logo.jpg Content-Location: http://www.radikal.com.tr/data/img/gfx/radikal-small-logo.jpg Content-Transfer-Encoding: Base64 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 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=xgemius.js Content-Type: application/x-javascript; charset=iso-8859-9; name=xgemius.js Content-Location: http://www.radikal.com.tr/d/j/1/xgemius.js Content-Transfer-Encoding: Base64 Ly8gKGMpIDIwMDAtMjAwOSBieSBHZW1pdXMgU0ENCg0KZnVuY3Rpb24gZ2VtaXVz X3BhcmFtZXRlcnMoKSB7DQogICAgICAgIHZhciBkPWRvY3VtZW50Ow0KICAgICAg ICB2YXIgaHJlZj1uZXcgU3RyaW5nKGQubG9jYXRpb24uaHJlZik7DQogICAgICAg IHZhciByZWY7DQogICAgICAgIHZhciBmPTA7DQogICAgICAgIHZhciBmdj0nLSc7 DQogICAgICAgIGlmIChkLnJlZmVycmVyKSB7IHJlZj1uZXcgU3RyaW5nKGQucmVm ZXJyZXIpOyB9IGVsc2UgeyByZWY9Jyc7IH0NCiAgICAgICAgaWYgKHR5cGVvZiBF cnJvciE9J3VuZGVmaW5lZCcpIHsNCiAgICAgICAgICAgICAgICB2YXIgZm87DQog ICAgICAgICAgICAgICAgZXZhbCgndHJ5IHsgZj0oZD09dG9wLmRvY3VtZW50KT8x OjI7IGlmICh0eXBlb2YgdG9wLmRvY3VtZW50LnJlZmVycmVyPT0ic3RyaW5nIikg eyByZWY9dG9wLmRvY3VtZW50LnJlZmVycmVyIH0gfSBjYXRjaChlKSB7Zj0zO30n KTsNCiAgICAgICAgICAgICAgICBldmFsKCd0cnkgeyBmdj1uYXZpZ2F0b3IucGx1 Z2luc1siU2hvY2t3YXZlIEZsYXNoIl0uZGVzY3JpcHRpb247IH0gY2F0Y2ggKGUp IHt9Jyk7DQogICAgICAgICAgICAgICAgZXZhbCgnaWYgKHR5cGVvZiBBY3RpdmVY T2JqZWN0IT0idW5kZWZpbmVkIikgeyB0cnkgeyBmbz1uZXcgQWN0aXZlWE9iamVj dCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guNyIpOyB9IGNhdGNoKGUp IHsgdHJ5IHsgZm89bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNo b2Nrd2F2ZUZsYXNoLjYiKTsgZnY9IlgiOyBmby5BbGxvd1NjcmlwdEFjY2Vzcz0i YWx3YXlzIjsgfSBjYXRjaChlKSB7IGlmIChmdj09IlgiKSB7IGZ2PSJXSU4gNiww LDIwLDAiOyB9fSB0cnkgeyBmbz1uZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZl Rmxhc2guU2hvY2t3YXZlRmxhc2giKTsgfSBjYXRjaChlKSB7fSB9IGlmICgoZnY9 PSItIiB8fCBmdj09IlgiKSAmJiBmbykgeyBmdj1mby5HZXRWYXJpYWJsZSgiJHZl cnNpb24iKTsgfX0nKTsNCiAgICAgICAgfQ0KICAgICAgICB2YXIgdXJsPScmZnI9 JytmKycmZnY9Jytlc2NhcGUoZnYpKycmdHo9JysobmV3IERhdGUoKSkuZ2V0VGlt ZXpvbmVPZmZzZXQoKSsnJmhyZWY9Jytlc2NhcGUoaHJlZi5zdWJzdHJpbmcoMCw0 OTkpKSsnJnJlZj0nK2VzY2FwZShyZWYuc3Vic3RyaW5nKDAsNDk5KSk7DQogICAg ICAgIGlmIChzY3JlZW4pIHsNCiAgICAgICAgICAgICAgICB2YXIgcz1zY3JlZW47 DQogICAgICAgICAgICAgICAgaWYgKHMud2lkdGgpIHVybCs9JyZzY3JlZW49Jytz LndpZHRoKyd4JytzLmhlaWdodDsNCiAgICAgICAgICAgICAgICBpZiAocy5jb2xv ckRlcHRoKSB1cmwrPScmY29sPScrcy5jb2xvckRlcHRoOw0KICAgICAgICB9DQog ICAgICAgIHJldHVybiB1cmw7DQp9DQpmdW5jdGlvbiBnZW1pdXNfYWRkX29ubG9h ZF9ldmVudChvYmosZm4pIHsNCiAgICAgICAgaWYgKG9iai5hdHRhY2hFdmVudCkg ew0KICAgICAgICAgICAgICAgIG9iai5hdHRhY2hFdmVudCgnb25sb2FkJywgZm4p Ow0KICAgICAgICB9IGVsc2UgaWYob2JqLmFkZEV2ZW50TGlzdGVuZXIpIHsNCiAg ICAgICAgICAgICAgICBvYmouYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZuLCBm YWxzZSk7DQogICAgICAgIH0NCn0NCmZ1bmN0aW9uIGdlbWl1c19hcHBlbmRfc2Ny aXB0KHhwX3VybCkgew0KICAgICAgICBpZiAodHlwZW9mIEVycm9yIT0ndW5kZWZp bmVkJykgew0KICAgICAgICAgICAgICAgIGV2YWwoJ3RyeSB7IHhwX2phdmFzY3Jp cHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7IHhwX2phdmFzY3Jp cHQuc3JjPXhwX3VybDsgeHBfamF2YXNjcmlwdC50eXBlPSJ0ZXh0L2phdmFzY3Jp cHQiOyB4cF9qYXZhc2NyaXB0LmRlZmVyPXRydWU7IGRvY3VtZW50LmJvZHkuYXBw ZW5kQ2hpbGQoeHBfamF2YXNjcmlwdCk7IH0gY2F0Y2goZSkge30nKTsNCiAgICAg ICAgfQ0KfQ0KZnVuY3Rpb24gZ2VtaXVzX29ial9sb2FkZWQoKSB7DQogICAgICAg IHdpbmRvdy5wcF9nZW1pdXNfbG9hZGVkKz0xOw0KICAgICAgICBpZiAod2luZG93 LnBwX2dlbWl1c19sb2FkZWQ9PTIgJiYgd2luZG93LnBwX2dlbWl1c19pbWFnZS53 aWR0aCAmJiB3aW5kb3cucHBfZ2VtaXVzX2ltYWdlLndpZHRoPjEpIHsNCiAgICAg ICAgICAgICAgICBnZW1pdXNfYXBwZW5kX3NjcmlwdCh3aW5kb3cucHBfZ2VtaXVz X3NjcmlwdCk7DQogICAgICAgIH0NCn0NCnZhciBwcF9nZW1pdXNfcHJvdG8gPSAo ZG9jdW1lbnQubG9jYXRpb24gJiYgZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wg JiYgZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2w9PSdodHRwczonKT8naHR0cHM6 Ly8nOidodHRwOi8vJzsNCmlmICh0eXBlb2YgcHBfZ2VtaXVzX2hpdGNvbGxlY3Rv ciA9PSAndW5kZWZpbmVkJykgew0KICAgICAgICBpZiAodHlwZW9mIGdlbWl1c19o aXRjb2xsZWN0b3IgIT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAgICAgICAgICAgICBw cF9nZW1pdXNfaGl0Y29sbGVjdG9yID0gZ2VtaXVzX2hpdGNvbGxlY3RvcjsNCiAg ICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBwcF9nZW1pdXNfaGl0Y29s bGVjdG9yID0gJ2dhdHIuaGl0LmdlbWl1cy5wbCc7DQogICAgICAgIH0NCn0NCnZh ciBwcF9nZW1pdXNfaG9zdCA9IHBwX2dlbWl1c19wcm90bytwcF9nZW1pdXNfaGl0 Y29sbGVjdG9yKycvXyc7DQppZiAodHlwZW9mIHBwX2dlbWl1c19uaGl0ID09ICd1 bmRlZmluZWQnKSB7DQogICAgICAgIGlmICh0eXBlb2YgcHBfZ2VtaXVzX2lkZW50 aWZpZXIgPT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAgICAgICAgICAgICBpZiAodHlw ZW9mIGdlbWl1c19pZGVudGlmaWVyICE9ICd1bmRlZmluZWQnKSB7DQogICAgICAg ICAgICAgICAgICAgICAgICBwcF9nZW1pdXNfaWRlbnRpZmllciA9IGdlbWl1c19p ZGVudGlmaWVyOw0KICAgICAgICAgICAgICAgICAgICAgICAgZ2VtaXVzX2lkZW50 aWZpZXIgPSAnVVNFRF8nK2dlbWl1c19pZGVudGlmaWVyOw0KICAgICAgICAgICAg ICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBwcF9nZW1pdXNf aWRlbnRpZmllciA9ICcnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K ICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5wcF9nZW1pdXNfY250ICE9ICd1bmRl ZmluZWQnKSB7DQogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cucHBf Z2VtaXVzX2ltYWdlcyA9PSAndW5kZWZpbmVkJykgew0KICAgICAgICAgICAgICAg ICAgICAgICAgd2luZG93LnBwX2dlbWl1c19pbWFnZXMgPSBuZXcgQXJyYXkoKTsN CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdmFyIGdlbWl1c19s ID0gd2luZG93LnBwX2dlbWl1c19pbWFnZXMubGVuZ3RoOw0KICAgICAgICAgICAg ICAgIHdpbmRvdy5wcF9nZW1pdXNfaW1hZ2VzW2dlbWl1c19sXT1uZXcgSW1hZ2Uo KTsNCiAgICAgICAgICAgICAgICB3aW5kb3cucHBfZ2VtaXVzX2ltYWdlc1tnZW1p dXNfbF0uc3JjID0gcHBfZ2VtaXVzX2hvc3QrKG5ldyBEYXRlKCkpLmdldFRpbWUo KSsnL3JlZG90LmdpZj9sPTMzJmlkPUVSUl8nK3BwX2dlbWl1c19pZGVudGlmaWVy LnJlcGxhY2UoL2lkPS8sJ2lkPUVSUl8nKStnZW1pdXNfcGFyYW1ldGVycygpOw0K ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHBf Z2VtaXVzX21vZGUgPT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAgICAgICAgICAgICAg ICAgICAgIHdpbmRvdy5wcF9nZW1pdXNfbG9hZGVkID0gMDsNCiAgICAgICAgICAg ICAgICAgICAgICAgIHdpbmRvdy5wcF9nZW1pdXNfc2NyaXB0ID0gcHBfZ2VtaXVz X2hvc3QrKG5ldyBEYXRlKCkpLmdldFRpbWUoKSsnL3BwLmpzP2lkPScrcHBfZ2Vt aXVzX2lkZW50aWZpZXI7DQogICAgICAgICAgICAgICAgICAgICAgICBnZW1pdXNf YWRkX29ubG9hZF9ldmVudCh3aW5kb3csZ2VtaXVzX29ial9sb2FkZWQpOw0KICAg ICAgICAgICAgICAgICAgICAgICAgd2luZG93LnBwX2dlbWl1c19pbWFnZSA9IG5l dyBJbWFnZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZ2VtaXVzX2FkZF9v bmxvYWRfZXZlbnQod2luZG93LnBwX2dlbWl1c19pbWFnZSxnZW1pdXNfb2JqX2xv YWRlZCk7DQogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cucHBfZ2VtaXVz X2ltYWdlLnNyYyA9IHBwX2dlbWl1c19ob3N0KyhuZXcgRGF0ZSgpKS5nZXRUaW1l KCkrJy9yZXhkb3QuZ2lmP2w9MzAmaWQ9JytwcF9nZW1pdXNfaWRlbnRpZmllcitn ZW1pdXNfcGFyYW1ldGVycygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgd2lu ZG93LnBwX2dlbWl1c19jbnQgPSAxOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7 DQogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cucHBfZ2VtaXVzX2ltYWdl ID0gbmV3IEltYWdlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cu cHBfZ2VtaXVzX2ltYWdlLnNyYyA9IHBwX2dlbWl1c19ob3N0KyhuZXcgRGF0ZSgp KS5nZXRUaW1lKCkrJy9yZXhkb3QuZ2lmP2w9MzEmaWQ9JytwcF9nZW1pdXNfaWRl bnRpZmllcitnZW1pdXNfcGFyYW1ldGVycygpOw0KICAgICAgICAgICAgICAgICAg ICAgICAgd2luZG93LnBwX2dlbWl1c19jbnQgPSAxOw0KICAgICAgICAgICAgICAg IH0NCiAgICAgICAgfQ0KICAgICAgICBwcF9nZW1pdXNfaWRlbnRpZmllciA9ICdV U0VEXycrcHBfZ2VtaXVzX2lkZW50aWZpZXI7DQp9DQpmdW5jdGlvbiBwcF9nZW1p dXNfaGl0X2ludChsaXN0LHJmcm9tLHJ0bykgew0KICAgICAgICB2YXIgZ3UgPSBw cF9nZW1pdXNfaG9zdCsobmV3IERhdGUoKSkuZ2V0VGltZSgpKycvcmVkb3QuZ2lm P2w9MzInOw0KICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy54Z2VtaXVzX3Byb3Rf Y250ID09ICd1bmRlZmluZWQnKSB7DQogICAgICAgICAgICAgICAgd2luZG93Lnhn ZW1pdXNfcHJvdF9jbnQ9MDsNCiAgICAgICAgfQ0KICAgICAgICBpZiAodHlwZW9m IHhnZW1pdXNfcHJvdF9jbnQgPT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAgICAgICAg ICAgICB4Z2VtaXVzX3Byb3RfY250PTA7DQogICAgICAgIH0NCiAgICAgICAgaWYg KHdpbmRvdy54Z2VtaXVzX3Byb3RfY250PD14Z2VtaXVzX3Byb3RfY250KSB7DQog ICAgICAgICAgICAgICAgZ289MTsNCiAgICAgICAgICAgICAgICB3aW5kb3cueGdl bWl1c19wcm90X2NudCsrOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg ICAgIGdvPTA7DQogICAgICAgIH0NCiAgICAgICAgeGdlbWl1c19wcm90X2NudCsr Ow0KICAgICAgICBmb3IgKHZhciBpPXJmcm9tIDsgaTxydG8gOyBpKyspIHsNCiAg ICAgICAgICAgICAgICBndSArPSAnJmlkPScrbGlzdFtpXTsNCiAgICAgICAgfQ0K ICAgICAgICBndSArPSBnZW1pdXNfcGFyYW1ldGVycygpOw0KICAgICAgICBpZiAo dHlwZW9mIHdpbmRvdy5nZW1pdXNfaGl0X2ltYWdlcyA9PSAndW5kZWZpbmVkJykg ew0KICAgICAgICAgICAgICAgIHdpbmRvdy5nZW1pdXNfaGl0X2ltYWdlcyA9IG5l dyBBcnJheSgpOw0KICAgICAgICB9DQogICAgICAgIHZhciBnbCA9IHdpbmRvdy5n ZW1pdXNfaGl0X2ltYWdlcy5sZW5ndGg7DQogICAgICAgIHdpbmRvdy5nZW1pdXNf aGl0X2ltYWdlc1tnbF09bmV3IEltYWdlKCk7DQogICAgICAgIGlmIChnbykgew0K ICAgICAgICAgICAgICAgIHdpbmRvdy5nZW1pdXNfaGl0X2ltYWdlc1tnbF0uc3Jj ID0gZ3U7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgd2luZG93 LmdlbWl1c19oaXRfaW1hZ2VzW2dsXS5zcmMgPSBndS5yZXBsYWNlKC9pZD0vLCdp ZD1EQkxfJyk7DQogICAgICAgIH0NCn0NCmZ1bmN0aW9uIHBwX2dlbWl1c19oaXQo KSB7DQogICAgICAgIGZvciAoaT0wIDsgaTxhcmd1bWVudHMubGVuZ3RoIDsgaSs9 NSkgew0KICAgICAgICAgICAgICAgIGlmIChpKzU8YXJndW1lbnRzLmxlbmd0aCkg ew0KICAgICAgICAgICAgICAgICAgICAgICAgcHBfZ2VtaXVzX2hpdF9pbnQoYXJn dW1lbnRzLGksaSs1KTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAg ICAgICAgICAgICAgICAgICAgcHBfZ2VtaXVzX2hpdF9pbnQoYXJndW1lbnRzLGks YXJndW1lbnRzLmxlbmd0aCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICB9 DQp9DQppZiAodHlwZW9mIGdlbWl1c19oaXQgIT0gJ2Z1bmN0aW9uJykgew0KICAg ICAgICBnZW1pdXNfaGl0PXBwX2dlbWl1c19oaXQ7DQp9DQo= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=like.htm Content-Type: text/html; charset=utf-8; name=like.htm Content-Location: http://www.facebook.com/plugins/like.php?locale=tr_TR&href=http%3A%2F/www.radikal.com.tr/Radikal.aspx%3faType%3DRadikalDetayV3%26ArticleID=1072471%26Date=14.12.2011%26CategoryID=81&layout=standard&show_faces=true&width=450&action=recommend&colorscheme=light&height=80 Content-Transfer-Encoding: Quoted-Printable <= title>Like
Ona= yla
Bunu tavsiye ettin. · Y=C3=B6netici Sayfas=C4=B1 · =C4=B0statistikler ·=  Hata<= /span>= Bunu tavsiye e= ttinArkada=C5=9F= lar=C4=B1n=C4=B1n tavsiyelerini g=C3=B6rmek i=C3=A7in K= aydol. · Y=C3=B6netici Sayfas=C4=B1 ·=  =C4=B0= statistikler · Hata
------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAEfCAMAAAB/DLYyAAABI1BMVEX////////+ /v40NDSbq8tsg7Pl6fLq7fQ2WJnS2um7u7tmZmbh4eFzirbCyt9kZGTZ2dlERERV VVVRbKQeRYC9yN6+vr5geKyqqqrDw8M7WZji5vDT09Oenp5NTU1jeKN1i7jd3d3H x8fU1NTu7u7e4u5id6LLy8umpqbo6OjP2Oh1dXWJiYm4uLjOzs7b29vp6elof7HA wMCRkZFYapHFzOLy8vKMjIygoKCNoMV+fn6rq6t7j7rl5eW/yuBlZWWuu9W/xduN jY3u8fbT2eji4uKpqam8vLx3d3eoqKh7e3u9vb3u8PbX19dKaKTk5OSKioqkpKQ5 VZS0tLT29vZPaqNVcan6+vq2wNxwg6+MnsNXapCwvttXV1ded65paWmQpMmBnePY AAAAAXRSTlMAQObYZgAAAyRJREFUeF61juWW40oMBtNtO8yMg8zMsMx0men9n2K/ dhyNlBwle5LcmsmPqiOpHZsJryS9bIeCZz3hzwsIcsB6nvdvuOwBOOgPeTc3UB4K hWmC5xV+dGEhegWTW67CZ8O+kN6JDQWLP85fKRmcWWt3wmXroIzlWg3KQyo1TbA2 9Z8L8egVTPiuwmcj+Vn6P3YoJG1SuJ9DkAM2mUwuhctJAAf9oeT1NZSHXG5SWBqd wNFc3oVfolcw+dsSKnw6Gm2iEQYIwUPOmJwIJv5sQ4ZnYqXimx2/wgIujNzYQVdC EGLWg0AES6FR/aEa/TdicyQbywIWNrPFbreYZaG7Cbos1ENYaDlvsRCTAwjbgIft bLGYRaEAR2EBCh5DayTEpCOcAh5Oe1tbPVZavdegxwIUjAsx6Qh/Ah7ONoJg4+wx 1BcDsMgCFOgBkKs8AOGpeDzFy0MCjA+pRAIr6lHgA+G1TqfGix9PJOLjQy0epxVx VH/laT7/VNzIn5/ntSBX9FfaQHjl+LjCSzsA40MlCGiFHZ2eu+qAu36otgdUeWj4 DRn8RE2GF75csdbKid/t8I0EWwkc1g8CERIUxJfOnfSwp9Oqp8lplpyKvk9XZuVn IvL1jxHrKC50iEH4I4SCNgHUiZcDfzl4F7Th+A4GClwWBFkQ/n8yw57JqJ4hp1ly Kvo+XZk3HhG5ITwtFEImTgB9QgYUh1PnBApcFAQJNuZIhoi8TGS00J+fOAHUCRkA nXROoMBFQZBgY46kiciXibQW+vMTJ4A6IQOgk84JFLgoCBK5MZlXQPjqysoqL69W gB5oRT8KykD4Qqm0wEu5BPRAK/pRsAyE36+t3fOyvAb0QCv6UcnJ9wNO+gEygIKB GBaMMe7HJwCbAKHrE3RDf4VQvnSEkjeg1A/eIxQMxLBgjHE/PgHYBAhdn6Ab+iuE 8qXfQPM7ohkGCMHDB2PeiGB+PXonw5FYuTo0F4dXLLwxZuTGBboS9kPMT/v7Smi+ JZqxb6P8hCiHAULw8NyYSxHMl/p7GepiZffWHNzusnBpzMiNA3Ql7IWYT3t7Sij/ TeDTvwLENdsHdW/D3AAAAABJRU5ErkJggg== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=twitter_detay.html Content-Type: text/html; name=twitter_detay.html Content-Location: http://www.radikal.com.tr/twitter/twitter_detay.html Content-Transfer-Encoding: 8bit title ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=likebox.htm Content-Type: text/html; charset=utf-8; name=likebox.htm Content-Location: http://www.facebook.com/plugins/likebox.php?locale=tr_TR&href=http%3A%2F%2Fwww.facebook.com%2Fradikalgazete&width=212&colorscheme=light&connections=6&stream=false&header=false&height=270 Content-Transfer-Encoding: Quoted-Printable <= title>Likebox
=
66,728 ki=C5=9Fi <= b>Radikal Gazetesi'yi be=C4=9Fendi.66,7= 27 ki=C5=9Fi Radikal Gazetesi'yi be=C4=9Fendi.
3D""
<= a href=3D"http://www.facebook.com/people/Sirel-Eksi/585119249" target=3D= "_blank">3D""
Sirel=
=
------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png Content-Transfer-Encoding: Base64 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 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/gif Content-Location: http://static.ak.fbcdn.net/rsrc.php/v1/y9/r/jKEcVPZFk-2.gif Content-Transfer-Encoding: Base64 R0lGODlhIAAgAMQYAFJvp3mOup6sy+Dl7vHz+OXp8fT2+WV+sOjr8oiawae10OPn 74mbwaKxzrrF2+zv9ens8/L0+O/y99DX5sDJ3a+71e/y9vf5+////wAAAAAAAAAA AAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCAAYACwAAAAAIAAg AAAFlCAmjmRpnmiqrmzrvnAsz6JBWLhFGKSd67yRL7cjXI5IAsmIPCpHzOatebSQ LNSLdYSl4rJbUbcZxoyRX+8VvPaeq21yHP3WzuFccL28v2v7eWqBZIBibIN0h4aC i4SKZo97hZCMlI6Vk5KRm26ccohVmZ6JmKNVUUlLWU8iqE5DODs9N0RBNbSxtjS7 vL2+v8DBGCEAIfkEBQgAGAAsAAAFAAgAFgAABR+gQVikRYhXqo5Y61puLM90bd94 ru88Dssm1UpUMhlCACH5BAkIABgALAAAAAAUACAAAAV0IHMAJHAwWKqu6VG98MHO GADDAM3ad5XrKt7tB6z1fCsDwcK0EAxC3IpwqVoJ0RcRY5lZssiisbfVgcu0s3g8 XKvF72IcODcf0bN6+u7mw/1ygHSCdmQrXSxfglRWVViCSk1OUIR7hn+XRS49MmIi JSYoYiEAIfkECQgAGAAsAAAAACAAIAAABcsgJo6kyBxAChxM6WJNEsxB0pBHpe/H WyaUoDBBAux2AB8pIBQGikddUiliNinPkTE6pVqbWdH22MUYCJa0hWD4OqFcEuFC rxPcwTBmjCRZXBZ4WHBkVFVXg1pRFWU+gnp8UoYYj4R9hpWKcZiIkIuNL5lin5Oi e6ScV56bXp2Wkqlgr4ylrpqFsW+3l62qs6AuppG0uXm/tb67sCJ/JYG2o6wYc3V0 d9Cn0mdqa23Yw8AlwqhUQFdEysRUMTQ1NyM5UT2ThicqKy2GIQAh+QQJCAAYACwA AAAAIAAgAAAF5CAmjmRpjswBrMDBnGWTBHSQNORR7fwBkwmKcJggAXg8gEMhaAoU DlJgOAwYkTuAYsLtKqRUoXV0xAIE3a4AHB6LyshzmrseTdtXM3peF92pbhhwSXtp fRh/VXlxhWpsgIuEcxOHiWKRWY10j4pkWBVyfJyXnnqTlWEUgYOZp6OqmKCalK+r n6GGtbG4jnaptqaivniljK7DkMWSwn6/u7OoxG+30LrKrcyIzteyx83SgtTe2uCs 3dmWsNxak1/IndNmS05PUe+k8XE/I0FhRev7RMioYQPHCB1YfARcmIJFCwYhAAAh +QQJCAAYACwAAAAAIAAgAAAF1iAmjmRpnmiqYk0SvEHSrDSWUHie0I4i/AKFgxTI 5QI0xWTJVBCNuABkMagOFhCSgMkUPKGBhWRMXmi5S++oCB6QyYMzWi1iGwPutyQ+ 2s6/d3lvfCJ+XHQYdkeCcHKHgIt6e45dkFGMY4QYhpVrUBR4kpqcaZagmJN9aBOI ipeilKWebbCqf7OBtYWrrZ+heqO8pr+DsazDqMG3db7Jxr20wM/IupvCuJHSto/Y UWJ6ZtudzGBTVldZ4rLkd0mrTt2gPD5AQsM1KzdQO/gpLTAxZvQbGAIAIfkECQgA GAAsAAAAACAAIAAABc0gJo5kaZ5oqq5s676OIsyC4rypMu28wkKLgXCwgJAEPJ7g gSg4C4gHaSGpWhfH5E6AiHi/CNLAah1ktYLC91sQk6vmERKtXkfao/E7Lpon03Z3 bntnf3VreCJ6ZHwYfkqHbIOMhZCBiRiLZZVbkV6YmnCcE4B2oG8SjY+dl5Obclqk noJ5qKqxpYiuorB0rbWEvYa/irajuZLAlMKWprupx7OnwX24XXZhyq/VaExPUFIj VG9YzFs/QUNFxzgoOlo+7SYxNDU38vj5+u0hACH5BAkIABgALAAAAAAgACAAAAXI ICaOZGmeaKqubOu+cCy30DLcwwIZhOVbBAPpgSgYC4gHaSFpOheEi3RKICEi2CyC NHA6B5bp1EIqZLMFrrcJFkvJI/M5kh511203XCQ/10V3Xnliexh9aGp4YXplc3SJ gouEjXN/GIFfkmOUfpCZbheFh1iWmGyab5yIdmsSg5txjqWtr6mxlZ6noKKyua6o oaqkvrXBt52sirvCj8mRy8ergLRRblUjV3Nbzl88P0BCI0RHSEojTGsLMyU1ODkQ 6/Hy8/T19SEAIfkEBQgAGAAsAAAAACAAIAAABbAgJo5kaZ5oqq5s675wLM+iQVi4 RRikneu80QNRKBYQD8JlySSQlMylc4SIWK8IS3RpIWm33VHhei18o2HRmZnGjMkR 8/bSXnNJb7Ic7J2382V2dH18YnBxgnV+eId7aISPhnCObJCVknqJlneYgYsjmp1W lJxqnyKAo6GmhaiNqxiwqYinsbWzpIOgt6+1so1QUVMiwU0kVXAIPjk7PTfMQSJD RkcPNNfY2drb3N0kIQAh+QQFFAAYACwYAAYACAAUAAAFKKBBWKRFiFeqjqpKtukL yy3tWvBlx/jc179bbqcL8obG4pCQO41KpxAAOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=iKJVbggoLhB.css Content-Type: text/css; charset=utf-8; name=iKJVbggoLhB.css Content-Location: http://static.ak.fbcdn.net/rsrc.php/v1/ys/r/iKJVbggoLhB.css Content-Transfer-Encoding: 8bit /*1323906891,169776067*/ .fbEmu .body .fbEmuLink{color:#333} .fbEmu .body .fbEmuLink:hover{text-decoration:none} .fbEmu .body a.signature{color:#3b5998;display:inline} .fbEmu .body a.signature:hover{text-decoration:underline} .fbEmu .hover:hover .title .fbEmuLink{text-decoration:underline} /* @noflip */ .fbEmu .forceRTL{direction:rtl;text-align:right;display:block} /* @noflip */ .fbEmu .forceLTR{direction:ltr;text-align:left;display:block} .fbEmu .adInfo a.identity{color:gray;display:block;white-space:nowrap} .fbEmuHidePoll .undo{float:right;padding-left:2px;padding-bottom:2px;margin-bottom:3px;margin-left:5px} .fbEmuHidePoll .fbEmuXTitle{font-weight:bold} .fbEmuHidePoll .fbEmuXSubtitle{margin-bottom:10px} .fbEmuHideThanks .fbEmuXThanksTitle{font-weight:bold;margin-bottom:10px} .fbEmuLegacy .fbEmuHidePoll .otherdiv .other{width:141px} .fbEmuBlock .fbEmuHidePoll .otherdiv{margin-left:20px} .fbEmuEgo .fbEmuHidePoll .otherdiv .other{width:206px} .emu_x{float:right} .emu_x .uiSelectorButton{opacity:0} .old_x{opacity:0} .fbEmu:hover .old_x,.fbEmu:hover .uiSelectorButton,.emu_x .openToggler .uiSelectorButton{opacity:1} .fbEmuBlock .title{font-weight:bold;line-height:13px;margin-bottom:4px;margin-right:20px} .fbEmuEgo .body .fbEmuLink{line-height:13px} .fbEmuPremium .inline{padding-top:4px} .fbEmuPremium .body{line-height:13px} .fbEmuPremium .body .fbEmuLink{display:block} .fbEmuPremiumFan .action{padding-top:4px} .fbEmuMainBody .firstPassiveName{font-weight:bold} .fbEmuPremium .fbEmuStreamAttachment{margin-bottom:3px} .fbEmuPremium .fbEmuStreamAttachment.fbEmuStreamPhotoStory{margin-bottom:2px} .fbEmuStreamAttachment.fbEmuStreamEventStory a.fbEmuStreamTitle,.fbEmuPicStory a.fbEmuStreamTitle,.fbEmuLikeMessage{color:gray} .fbEmuPremium .fbEmuStreamAttachment.fbEmuStreamLinkStory img,.fbEmuPremium .fbEmuStreamAttachment.fbEmuStreamEventStory img{max-height:75px;max-width:75px} .fbEmuMarketplace .fbEmuStreamAttachment.fbEmuStreamLinkStory img,.fbEmuMarketplace .fbEmuStreamAttachment.fbEmuStreamEventStory img{max-height:50px;max-width:50px} .fbEmuStreamAttachment.fbEmuStreamLinkStory .fbEmuLink{margin-right:5px} .fbEmuStreamAttachment.fbEmuStreamLinkStory .fbEmuStreamTitle,.fbEmuPicStory a.fbEmuStreamTitle,.fbEmuStreamAttachment.fbEmuStreamEventStory .UIImageBlock_Content a{font-weight:normal} .fbEmuMarketplace .fbEmuStreamAttachment.fbEmuStreamPhotoStory img,.fbEmuMarketplace .fbEmuStreamAttachment.fbEmuStreamPhotoStory i{max-height:90px;max-width:118px} .fbEmuPremium .fbEmuStreamAttachment.fbEmuStreamPhotoStory img,.fbEmuPremium .fbEmuStreamAttachment.fbEmuStreamPhotoStory i{max-height:128px;max-width:168px} .fbEmuStreamStory .uiVideoThumb.fbEmuLargeThumb{margin-right:0} .fbEmuMarketplace .uiVideoThumb.fbEmuLargeThumb img{display:block;height:72px;max-height:72px;max-width:128px} .fbEmuPremium .uiVideoThumb.fbEmuLargeThumb img{height:104px;display:block;max-height:104px;max-width:185px} .fbEmuStreamStory .uiStreamMessage{font-weight:normal} .fbEmuStreamStory .fbEmuStreamTitle{display:block;font-weight:bold} .fbEmuStreamStory .fbEmuStreamBody{color:#666} .fbEmuStreamStory .uiPhotoThumb{display:inline-block} .fbEmuStreamStory .uiVideoThumb{display:inline-block;margin-right:5px} .fbEmuStreamStory .uiVideoThumb img{height:auto} .fbEmuStreamStory .uiVideoThumb.fbEmuSmallThumb img{max-width:60px} .fbEmuStreamStory .fbEmuStreamAttachment .uiPhotoThumb img{margin:3px} .fbEmuStreamStory .fbEmuAttachmentFrame{background-color:#000;text-align:center} .fbEmuStreamStory .fbEmuAttachmentFrame .uiVideoThumb{display:inline-block;margin:0} .fbEmuStreamStory .textOnly{width:175px;word-wrap:break-word} .fbEmuStreamStory .textWithMedia{max-width:125px;word-wrap:break-word} .fbEmuStreamAttachmentOffset{border-left:2px solid #ccc;padding-left:4px} .fbEmuStreamAttachmentOffset .fbEmuPicStory,.fbEmuStreamStory .fbEmuStreamAttachmentOffset .textOnly{border-left:0;padding-left:0} .fbEmuStreamStory .uiUfi .ufiItem{padding:3px 3px 2px} .fbEmuStreamStory .uiBlingBox .text{line-height:normal} .fbEmuStreamStory .uiBlingBox{margin-right:-1px;margin-left:-1px} .fbEmuStreamStory .uiBlingBox .img{margin-top:-1px} .fbEmuStreamStory .fbTimelineFeedbackComments{float:left;padding-right:3px} .fbEmuStreamStory .fbTimelineFeedbackLikes{float:left;padding-right:3px} .fbFeedTickerStory .fbEmuStreamStory .fbEmuStreamAttachment img{width:32px;height:32px} .fbFeedTickerStory .fbEmuStreamAttachment .UIImageBlock_Content{height:32px} .fbEmuStream .title{font-weight:bold;line-height:13px;margin-right:20px} .fbEmuStream .fbEmuContext{margin-bottom:2px} .fbEmuStream .action{margin:2px 0 1px 0} .fbEmuStream .body{line-height:13px} .fbEmuStreamBlockQuote{border-left:2px solid #ccc;padding:0 0 3px 8px} .fbEmuStream .text_exposed_link{padding:0 0 0 5px} .fbEmuStreamAttribution{color:gray} .bassLike{margin-top:2px} .fbEmuStreamStory{padding-top:1px} .fbEmuComboList .fbEmuComboListHeader{background-color:#ccc;border-top:1px solid #ccc;margin:13px 0 8px 0;padding:0;position:relative} .fbEmuComboList .fbEmuComboListHeader .fbEmuComboListHeaderText{background-color:#fff;color:#999;font-size: 9px;font-weight:bold;left:0;margin-left:32px;padding:0 8px;position:absolute;top:-6px} .fbEmuStreamComboStory .UIImageBlock_Content.fbEmuMainBody{height:32px;vertical-align:middle} div.fbEmuEgo .image .img{max-height:72px;max-width:100px;padding-top:3px} .fbEmuEgo .action{margin-top:5px} .fbEmuEgo{line-height:13px} .fbEmuEgo .fbEmuHide{margin-top:0 !important} .fbEmuEgo .title{font-weight:bold;margin-bottom:0 !important} .fbEmuEgo .image{width:100px;display:block} .fbEmuEgo .image_body_block{padding-top:3px} .fbEmuEgo .action{color:#777} .fbEmuEgo .action .fbEmuContext .fbEmuLink{color:#777} .fbEmuEgo .action div.UIImageBlock_Content{padding-top:1px} .fbEmuTracking{position:absolute;visibility:hidden} .fbEmuStreamStoryAttachment .pollOptions{margin-left:-18px} .fbEmuStreamStoryAttachment .pollOptions .fbQuestionsPollResultsBar{width:146px;white-space:nowrap} .fbEmuStreamStoryAttachment .pollOptions .fbQuestionsPollResultsBar .label{padding:0;text-align:left} .fbEmuStreamStoryAttachment .pollOptions .pollResultsFacepile{width:24px} .fbEmuStreamStoryAttachment .pollOptions{table-layout:auto} .fbEmuStreamStoryAttachment{padding-left:32px} .fbEmu .uiUfi{width:auto} button.async_saving .default_message, a.async_saving .default_message, form.async_saving .default_message, .saving_message{display:none} .default_message, button.async_saving .saving_message, a.async_saving .saving_message, form.async_saving .saving_message{display:inline} .async_throbber .async_saving{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/GsNJNwuI-UM.gif) no-repeat right;padding-right:20px} .async_throbber_left .async_saving{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/GsNJNwuI-UM.gif) no-repeat left;padding-left:20px} form{margin:0;padding:0} label{cursor:pointer;color:#666;font-weight:bold;vertical-align:middle} label input{font-weight:normal} textarea,.inputtext,.inputpassword{border:1px solid #bdc7d8;font-family:"lucida grande",tahoma,verdana,arial,sans-serif;font-size: 11px;padding:3px} select{border:1px solid #bdc7d8;font-family:"lucida grande",tahoma,verdana,arial,sans-serif;font-size: 11px;padding:2px} .inputtext,.inputpassword{margin:0;padding-bottom:4px} .inputradio{padding:0;margin:0 5px 0 0;vertical-align:middle} .inputcheckbox{border:0;vertical-align:middle} .inputbutton,.inputsubmit{border-style:solid;border-width:1px;border-color:#d9dfea #0e1f5b #0e1f5b #d9dfea;background-color:#3b5998;color:#fff;padding:2px 15px 3px 15px;text-align:center} .inputsubmit_disabled{background-color:#999;border-bottom:1px solid #000;border-right:1px solid #666;color:#fff} .inputaux{background:#f0f0f0;border-color:#e7e7e7 #666 #666 #e7e7e7;color:#000} .inputaux_disabled{color:#999} .inputsearch{background:#fff url(http://static.ak.fbcdn.net/rsrc.php/v1/yV/r/IJYgcESal33.png) no-repeat left 4px;padding-left:17px} body{background:#fff;font-size: 11px;font-family:"lucida grande",tahoma,verdana,arial,sans-serif;color:#333;line-height:1.28;margin:0;padding:0;text-align:left;direction:ltr;unicode-bidi:embed} h1,h2,h3,h4,h5,h6{font-size: 13px;color:#333;margin:0;padding:0} h1{font-size: 14px} h4,h5{font-size: 11px} p{margin:1em 0} a{cursor:pointer;color:#3b5998;text-decoration:none} a:hover{text-decoration:underline} img{border:0} td,td.label{font-size: 11px;text-align:left} dd{color:#000} dt{color:#777} ul{list-style-type:none;margin:0;padding:0} abbr{border-bottom:none} hr{background:#d9d9d9;border-width:0;color:#d9d9d9;height:1px} .clearfix:after{clear:both;content:".";display:block;font-size:0;height:0;line-height:0;visibility:hidden} .clearfix{zoom:1} .datawrap{word-wrap:break-word} .word_break{display:inline-block} wbr:after{content:"\00200B"} .ellipsis{overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap} .img_loading{position:absolute;top:-9999999px} .aero{opacity:.5} .column{float:left} .center{margin-left:auto;margin-right:auto} #facebook .hidden_elem{display:none !important} #facebook .invisible_elem{visibility:hidden} #facebook .accessible_elem{left:-9999px;position:absolute} .direction_ltr{direction:ltr} .direction_rtl{direction:rtl} .text_align_ltr{text-align:left} .text_align_rtl{text-align:right} .DOMControl_placeholder{color:#777} .no_js .DOMControl_placeholder{color:#000} body{overflow-y:scroll} .mini_iframe,.serverfbml_iframe{overflow-y:visible} .auto_resize_iframe{height:auto;overflow:hidden} .pipe{color:gray;padding:0 3px} #content{width:auto;padding:0;margin:0} .profile #content,.home #content,.search #content{min-height:600px} .UIStandardFrame_Container{width:960px;padding:0;margin:20px auto 0} .UIStandardFrame_Content{width:760px;float:left;margin:0;padding:0} .UIStandardFrame_SidebarAds{width:200px;padding:0;margin:0;float:right} .UIFullPage_Container{width:940px;padding:0 12px;margin:20px auto 0} .empty_message{font-size: 13px;line-height:17px;padding:20px 20px 50px 20px;text-align:center;background:#f7f7f7} .see_all{text-align:right} .standard_status_element{visibility:hidden} .standard_status_element.async_saving{visibility:visible} img.tracking_pixel{height:1px;position:absolute;visibility:hidden;width:1px} #dropmenu_container{display:block;height:0;margin:0 auto;padding:0;position:absolute;width:964px;z-index:300} .inlineBlock{display:inline-block;zoom:1} .text_exposed_root{display:inline} .text_exposed .text_exposed_show{display:inline} .text_exposed_show, .text_exposed .text_exposed_hide{display:none} .text_exposed_link{font-size: 9px;padding:0 12px 0 0;white-space:nowrap} .text_exposed_link_icon{margin:0 0 -1px 4px} .text_exposed .text_exposed_link{display:none !important} button.as_link{background:none;border:none;color:#3b5998;cursor:pointer;font-family:"lucida grande",tahoma,verdana,arial,sans-serif;font-size:100%;margin:0;overflow:visible;padding:0;text-align:left;width:auto} button.as_link:hover span,button.as_link:focus span{text-decoration:underline} button.as_link .button_img{margin:0 6px 0 0;vertical-align:text-bottom;width:16px;height:16px} .homeFixedLayout #rightCol{padding-top:56px} .home_right_column .fbFeedTicker{border-bottom:1px solid #c1c1c1;box-shadow:0 1px 0 rgba(0, 0, 0, .10)} .fbFeedTicker{width:244px} .homeFixedLayout .uiOverlayArrowRight{margin-right:3px} .homeFixedLayout #rightCol .uiSideHeader,#rightCol .tickerHeader{border-bottom:1px solid #d9d9d9;border-top:1px solid #e5e5e5;margin-bottom:8px;padding:3px 8px} .homeFixedLayout #rightCol .uiSideHeader a{color:#6d84b4} .homeFixedLayout #rightCol .tickerHeader{margin-bottom:0} .tickerStoryBlock .UIImageBlock_Content{max-width:183px} .fbFeedTicker.disconnected{opacity:.3} .fbFeedTicker .fbFeedTickerStory{background:#fff no-repeat 15px 16px;border-bottom:1px solid #fff;border-top:1px solid #e9e9e9;line-height:14px;outline:0;padding:6px 14px 6px 2px;position:relative} .adsOnTop .fbCurrentThickline,.tickerOnTop .fbCurrentThickline{display:none} .tickerOnTop .fbCurrentThicklineForce{display:block !important} .fbCurrentThickline,.sidebarMode .fbCurrentThickline{background:#e9e9e9;border-top:1px solid #ccc;display:block;height:1px} .tickerOnTop .fbFeedHeadThickLineCapable{border-top:1px solid #ccc} .fbFeedTicker .tickerStoryHidden .tickerStoryBlock{display:none} .fbFeedTicker .fbFeedTickerStory .uiProfilePhoto{margin-right:8px} .fbFeedTicker .fbFeedTickerStory .uiFacepile .uiProfilePhoto{margin-right:0} .fbFeedTicker .fbFeedTickerStory .tickerFeedMessage,.fbFeedTicker .fbFeedTickerStory div.tickerFeedMessage h6{display:inline;font-size: 11px;font-weight:normal} .fbFeedTicker .fbFeedTickerStory .actorName,.fbFeedTicker .fbFeedTickerStory .actorDescription{display:inline} .fbFeedTicker .fbFeedTickerStory .removeStory{float:right;margin-right:-5px} .fbFeedTicker .fbFeedTickerStory .fbEmuHidePoll{padding-left:5px} .fbFeedTicker .tickerStoryClickable{cursor:pointer} .fbFeedTicker .tickerStoryHidden{cursor:auto} .fbFeedTicker .fbFeedTickerStory .uiStreamPassive,.fbFeedTicker .fbFeedTickerStory .tickerAttachmentBodyText,.fbFeedTicker .tickerStoryClickable a,.fbFeedTicker .tickerStoryClickable .passiveName,.fbFeedTicker .tickerStoryClickable .token{color:#333;outline:0;text-decoration:none} .fbFeedTicker .tickerStoryActive,.fbFeedTicker .tickerStoryClickable:hover{background-color:#eceff5 !important;border-bottom-color:#eceff5 !important} .fbFeedTicker .tickerStoryClicked,.fbFeedTicker .tickerStoryClicked:hover,.fbFeedTicker .tickerStorySelected,.fbFeedTicker .tickerStorySelected:hover{background-color:#d8dfea !important;border-color:#a8b2ce !important} .fbFeedTicker .tickerStoryHidden,.fbFeedTicker .tickerStoryHidden:hover{background-color:#fff !important;border-bottom:1px solid #fff !important;border-top:1px solid #e9e9e9 !important} .fbFeedTicker .tickerStoryFetching.tickerStoryActive{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yk/r/LOOn0JtHNzb.gif)} .fbFeedTicker .tickerStoryFetching.tickerStoryActive .UIImageBlock_Image{visibility:hidden} .fbFeedTicker .scrollTopPrompt{background:#e7e9ef url(http://static.ak.fbcdn.net/rsrc.php/v1/yU/r/n93MoBZD7fU.png) center 3px no-repeat;box-shadow:rgba(67, 74, 90, .3) 0 1px 0;cursor:pointer;height:10px;position:absolute;width:244px;z-index:1} .fbFeedTicker .scrollTopPrompt:hover{background-color:#e1e2e9} .home_right_column .fbFeedTicker .scrollTopPrompt{background:#fbfbfb url(http://static.ak.fbcdn.net/rsrc.php/v1/yU/r/n93MoBZD7fU.png) center 3px no-repeat;box-shadow:rgba(0, 0, 0, .15) 0 1px 0} .home_right_column .fbFeedTicker .scrollTopPrompt:hover{background-color:#f2f2f2;box-shadow:rgba(0, 0, 0, .18) 0 1px 0} .fbFeedTicker .fbFeedTickerStory .attachmentLink{border-left:2px solid #ccc} .fbFeedTicker .attachmentPhotoOuter{width:54px;height:34px;border:1px solid #ccc;padding:2px;float:left;margin-left:3px} .fbFeedTicker .attachmentPhotoOuter:first-child{margin-left:0} .fbFeedTicker .tickerPhotoAttachment{display:none;overflow:hidden} div.fbFeedTicker .tickerStoryClickable .uiTooltipWrap{display:none} .fbFeedTicker .attachmentPhotoInner{overflow:hidden;width:54px;height:34px} .fbFeedTicker .attachmentPhoto{width:54px} .fbFeedTicker .highlightedStory{background-color:#fff9d7 !important;border-color:#e2c822 !important;padding:10px 5px;text-align:center} .fbFeedTicker .noTimestamps .ticker_timestamp{display:none} .fbFeedTicker .tickerSpamMenu{padding-left:5px;background:transparent !important} .fbFeedTicker .uiStreamInlineReplaceList{margin-left:15px;margin-top:5px} .tickerNUXDialog{margin-top:50px} .fbFeedTicker .fbFeedTickerStory.tickerNuxStory{background-color:#f4f4f4;border-bottom-color:silver;border-top-color:#ccc;box-shadow:rgba(0, 0, 0, .1) 0 1px 0;margin:-2px 0 -15px 0;padding:8px 8px 8px 10px;z-index:10} .tickerInlineOverlay{background-color:#fff;border:1px solid #ccc;border-color:rgba(0, 0, 0, .2);border-radius:2px;border-right:none;box-shadow:5px 0 10px 10px #eceff5;color:#6d84b4;display:none;height:17px;margin-top:-12px;padding:3px 10px 0 6px;position:absolute;right:0;top:50%} .fbFeedTicker .tickerStoryActive .tickerInlineOverlay{display:block} .fbFeedTicker .tickerStorySelected .tickerInlineOverlay{box-shadow:5px 0 10px 10px #d8dfea} .tickerInlineOverlay:hover{border-color:#7489b6;border-color:rgba(59, 89, 152, .55)} .tickerInlineOverlay:active{background-color:#f9fafc;background-color:rgba(249, 250, 252, .9);border-color:rgba(59, 89, 152, .5)} .tickerInlineOverlayDisabled{background-color:#fff !important;border-color:rgba(0, 0, 0, .2) !important} .tickerInlineOverlayLink{display:none} .canvasTicker .tickerInlineOverlayLink{display:none !important} .tickerActionBottomButton{display:none !important} .tickerActionExpandableButton{margin-top:-9px;position:absolute;right:7px;top:50%} .tickerActionExpandableButton .tickerActionButtonLink{background-color:#f8f8f8;background-image:-o-linear-gradient(bottom, #f0f0f0, #fff);box-shadow:0 1px 0 rgba(0, 0, 0, .10);height:16px;padding:3px 0 1px 20px;width:0} .tickerStoryClicked .tickerActionExpandableButton .tickerActionButtonLink{background-color:#fff;background-image:-o-linear-gradient(bottom, #fff, #f0f0f0)} .tickerActionExpandableButton .tickerActionVerb{color:#3b5998;display:none;font-weight:bold} .fbFeedTickerStory:hover .tickerActionExpandableButton .tickerActionButtonLink,.tickerStoryActive .tickerActionExpandableButton .tickerActionButtonLink{width:auto} .tickerStoryActive .tickerActionExpandableButton .tickerActionVerb,.fbFeedTickerStory:hover .tickerActionExpandableButton .tickerActionVerb{display:inline} .tickerActionExpandableButton .tickerActionIcon{position:absolute;left:6px;top:6px} .tickerActionButtonLink{background-color:#fff;border:1px solid #96a2c4;border-radius:3px;display:block} .tickerActionButtonLink .tickerActionVerb{padding-right:4px} .fbFeedTicker .tickerStoryWithIcon{padding-right:18px !important} .fbFeedTicker .tickerStoryWithButton{padding-right:33px !important} .fbFeedTickerStory .tickerVisitIcon{display:none;margin-top:-3px;opacity:.7;position:absolute;right:7px;top:50%} .fbFeedTickerStory:hover .tickerVisitIcon{display:block} .tickerMusicButtonImg{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-135px -415px;height:11px;width:9px} .tickerNewsButtonImg{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-111px -415px;height:11px;width:11px} .tickerVideoButtonImg{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-123px -415px;height:11px;width:11px} .tickerActionButtonImg{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-189px -415px;height:10px;width:10px} .tickerActionExpandableButton img.tickerGameButtonImg{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-99px -415px;height:14px;width:11px;top:5px} .fbCurrent .fbCurrentHeader{margin-bottom:6px} .fbCurrent .fbCurrentStory{padding:3px 5px} .fbCurrent .fbCurrentStory:hover{background-color:#eceff5;cursor:pointer} .fbCurrent .fbCurrentStory:hover a{text-decoration:none} .fbCurrent .fbCurrentStory .fbCurrentTitle{color:#3b5998} .fbCurrentContent .fbCurrentFooter{text-align:center} .fbCurrentContent .fbCurrentActionLink{color:#6d84b4} #chatFriendsOnline .chatGoOnlineLink span{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yW/r/AebrcwrBeG6.png) no-repeat right 3px;padding:0 12px 0 2px} #chatFriendsOnline .chatGoOnlineLink,#chatFriendsOnline .chatGoOnlineLink:hover,#chatFriendsOnline .chatReconnectLink,#chatFriendsOnline .chatReconnectLink:hover{margin:3px 0 0 7px;text-decoration:none} #chatFriendsOnline .fbChatReconnecting{display:inline-block} #chatFriendsOnline .chatGoOnlineLink .img{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y1/r/q02nVgnK52c.png);background-repeat:no-repeat;background-position:-424px -139px;height:16px;width:15px} #chatFriendsOnline .chatReconnectLink .img{margin-top:7px;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y1/r/q02nVgnK52c.png);background-repeat:no-repeat;background-position:-486px -94px;height:13px;width:14px} #chatFriendsOnline .fbChatOfflineMessage,#chatFriendsOnline .fbChatDisconnectedMessage{padding:0 5px 0 1px} #chatFriendsOnline.disconnected .uiFacepileItem .img{opacity:.3} #chatFriendsOnline .typeaheadContainer td:first-child{width:100%} #chatFriendsOnline .sidebarBtn{display:none;margin-left:3px} .sidebarCapable #chatFriendsOnline .sidebarBtn{display:inline-block} .fbChatTypeahead .throbber{display:none;position:absolute;margin-top:-5px;right:6px;top:50%} .fbChatTypeahead.hasValue .clear, .fbChatTypeahead.hasValue.typeaheadLoading .throbber{display:block} .fbChatTypeahead.typeaheadLoading .clear{display:none} .fbChatTypeaheadView li{color:#333;cursor:pointer;padding:2px 20px 2px 10px;position:relative} .fbChatTypeaheadView li.selected{background-color:#e0e4ee} .fbChatTypeaheadView li img{float:left;height:28px;margin-right:5px;width:28px} .fbChatTypeaheadView li .text{display:block;line-height:28px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .fbChatTypeaheadView li i{display:block;height:14px;margin-top:-7px;position:absolute;right:8px;top:50%;width:7px} .fbChatTypeaheadView li.active i{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y1/r/q02nVgnK52c.png);background-repeat:no-repeat;background-position:-493px -64px} .fbChatTypeaheadView li.mobile i{height:12px;width:8px;margin-top:-6px;right:9px;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y1/r/q02nVgnK52c.png);background-repeat:no-repeat;background-position:-34px -49px} .fbChatTypeaheadView li.invis{opacity:.3} .fbChatTypeaheadView .noResults{padding:10px} .uiComposer{border-bottom:1px solid #ccc} .uiComposerTopBorder{border-top:1px solid #ccc} .uiComposerOpen,.no_js .uiComposer{border-bottom:none} .uiComposer .attachmentLoader{line-height:normal;position:absolute;right:2px;top:9px} .uiComposer .attachmentSentenceBar{line-height:22px;padding:3px 0 6px;position:relative;z-index:2;zoom:1} .uiComposer .attachmentCloseBtn{position:absolute;right:2px;top:7px} .uiComposer .attachmentFrame{border:1px solid #b4bbcd;border-bottom-color:#ccc} .uiComposerHideMessageBox .attachmentFrame,.uiComposerHideInput .attachmentFrame{border-bottom-color:#b4bbcd} .uiComposerHideContent .attachmentFrame{display:none} .uiComposerOpen .focus_target{padding-bottom:10px} .uiComposerWhiteMessageBox .child_was_focused{border-bottom:1px solid #e9e9e9} .uiComposerHideMessageBox .child_was_focused{border-bottom:none} .uiComposer .showWhenOpen,.uiComposer .showOnceInteracted{display:none !important} .uiComposerOpen .showWhenOpen,.no_js .uiComposer .showWhenOpen,.uiComposerInteracted .showOnceInteracted,.uiComposer .child_was_focused .showOnceInteracted{display:block !important} .uiComposerAttachment .attachmentLink{outline:none} .uiComposerAttachment .attachmentLink:focus{text-decoration:underline} .uiComposerAttachment .selected, .uiComposerAttachmentSelected .normal{display:none} .uiComposerAttachmentSelected .selected{display:inline} .uiComposerAttachment .nub{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yf/r/PfBgtiydy5U.gif) no-repeat center top;height:7px;left:2px;position:absolute;top:18px;width:11px} .uiMetaComposer .uiComposerAttachment .nub{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/ALnh3ly4npU.gif);left:4px;top:19px} span.uiComposerAttachment{color:#333;display:inline-block} .uiComposerAttachments{line-height:22px;padding:3px 0 4px;position:relative;z-index:2} .uiComposerOpen .uiComposerAttachments{padding-bottom:6px} .uiComposerMetaContainer{background-color:#fff;border:1px solid #b4bbcd;position:relative;z-index:1} .uiMetaComposer .uiComposerMetaContainer .attachmentFrame{border:0} .uiMetaComposer.uiComposerWhiteMessageBox .child_was_focused{border:none} .uiMetaComposerMessageBox{zoom:1} .uiComposerHideMessageBox .uiMetaComposerMessageBox{display:none} .uiComposerWhiteMessageBox .uiComposerMessageBox{background-color:#fff;border-width:0;padding:0} .uiMetaComposerMessageBoxTable{border-spacing:0;width:100%} .uiMetaComposerMessageBoxTable td{padding:0;vertical-align:top} .uiMetaComposerMessageBoxTable .attachmentBottomRow{height:0} .uiMetaComposerMessageBoxTable .attachmentBottomRow td{vertical-align:bottom} .uiMetaComposerMessageBox .inputContainer{background-color:#fff;zoom:1} .uiComposerHideInput .uiMetaComposerMessageBoxTable{display:none} .uiMetaComposerMessageBox .uiComposerMessageBoxControls{height:30px;margin:0} .uiMetaComposerMessageBox .uiComposerMessageBoxMentions .inputContainer{border:none;padding:0;position:relative;zoom:1} .uiMetaComposerMessageBox .uiComposerMention .inputContainer{z-index:2} .uiMetaComposerMessageBoxShelf{background-color:#f2f2f2;border-top:1px solid #e6e6e6} .uiMetaComposerMessageBox .composerTypeahead{border:0} .uiMetaComposerMessageBox .composerTypeahead .wrap{padding:5px !important;border:0} .uiMetaComposerMessageBox .uiMentionsInput .highlighter{font-size: 13px} .uiMetaComposerMessageBox .uiMentionsInput .highlighter div{line-height:16px} .uiMetaComposerMessageBox .uiMentionsInput .highlighter .metadataFragment{color:gray} .uiMetaComposerMessageBox .uiMentionsInput .highlighter .withToken,.uiMetaComposerMessageBox .uiMentionsInput .highlighter .timeToken,.uiMetaComposerMessageBox .uiMentionsInput .highlighter .placeToken{z-index:2;position:relative} .uiMetaComposerMessageBox .uiMentionsInput .highlighter .withToken{cursor:pointer;color:#3b5998} .uiMetaComposerMessageBox .uiMentionsInput .highlighter .withToken:hover{text-decoration:underline} .uiMetaComposerMessageBox .input{background:transparent;border-width:0;font-size: 13px;height:16px;margin:0;outline:none;padding:0;resize:none;vertical-align:bottom;width:100%} .child_was_focused .uiMetaComposerMessageBox .input{min-height:48px} .child_was_focused .uiMetaComposerMessageBox .inputContainer{min-height:58px} .uiMetaComposerMessageBox .composerTypeahead .uiStickyPlaceholderInput{width:100%} div.uiMetaComposerMessageBox .composerTypeahead .placeholder{font-size: 13px;padding:0} .uiMetaComposerMessageBox .attachmentMetaArea{position:relative} .uiMetaComposerMessageBox .textBlurb{line-height:30px} .uiMetaComposerMessageBox .textBlurb label{font-weight:normal;vertical-align:baseline} .uiMetaComposerMessageBox .textBlurb input{vertical-align:middle} .uiMetaComposerMessageBox .uiComposerTagControls{border-right:1px solid #e0e0e0;display:inline-block;float:left;height:30px;outline:none} .uiMetaComposerMessageBox .uiComposerTagControls:hover{background-color:#e9e9e9} .uiMetaComposerMessageBox .attachmentBarArea .uiComposerTagControlOpen{background-color:#fafafa;border-top:1px solid #f2f2f2;margin-top:-1px} .uiMetaComposerMessageBox .uiComposerBarRightArea{margin:4px} .uiMetaComposerMessageBox .submitBtn{padding:2px 16px} .uiMetaComposerMessageBox .fakePrivacyWidget,.uiMetaComposerMessageBox .fakePrivacyWidget:active,.uiMetaComposerMessageBox .fakePrivacyWidget:focus,.uiMetaComposerMessageBox .fakePrivacyWidget:hover{border-color:transparent} .uiMetaComposerMessageBox .fakePrivacyWidget .uiButtonText{font-weight:normal;color:gray} .uiMetaComposer .ComposerCitySharer{color:gray;line-height:30px;position:relative} .uiMetaComposer .friendsTokenizer{border:0;border-top:1px dashed #bdc7d8;padding:0} .uiMetaComposer .friendsTokenizer .uiTypeaheadView{width:300px} .uiMetaComposer .friendsTokenizer .tokenarea{padding-left:2px} .uiMetaComposer .attachmentBottomArea .inputtext{border:none;min-width:160px;outline:none} .uiMetaComposer .friendsTokenizer .uiTypeaheadDisabled{display:none} .uiMetaComposer .taggerLocationSharer{border:0;border-top:1px dashed #bdc7d8} .uiMetaComposer .taggerLocationSharer .wrap{border:0} .uiMetaComposer .taggerLocationSharer .uiStickyPlaceholderInput{width:100%} .uiMetaComposerMessageBox .cameraIcon{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-150px -439px;width:29px} .uiMetaComposerMessageBox .cameraIconSelected{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-120px -439px;width:29px} .uiMetaComposerMessageBox .friendTaggerIcon{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-90px -439px;width:29px} .uiMetaComposerMessageBox .friendTaggerIconSelected{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-60px -439px;width:29px} .uiMetaComposerMessageBox .placeTaggerIcon{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-30px -439px;width:29px} .uiMetaComposerMessageBox .placeTaggerIconSelected{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:0 -439px;width:29px} body.transparent_widget{background-color:transparent;overflow:hidden} body.plugin.transparent_widget{overflow-y:hidden} .connect_widget{background-color:transparent} .connect_widget .connect_widget_facebook_favicon{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png) no-repeat -1px -47px transparent;display:block;height:14px;padding:0 0 0 0;width:14px;position:absolute;left:-1px} body.transparent_widget .generic_dialog_popup, .connect_widget .generic_dialog_popup{width:400px} .navIdentity{min-height:38px;border-bottom:1px solid #e0e0e0;margin:5px;padding-bottom:5px} #navAccount ul .navIdentityPic{float:left} #navAccount ul .navIdentityPic img{width:28px} #navAccount ul .navIdentityPic a{padding:5px} #navAccount ul .navIdentityPic a:hover{padding:4px 5px 4px 5px} #navAccount ul .navIdentitySub input{font-size: 9px} #navAccount ul .navIdentityLinks{margin:5px;float:left} .fbx #pageFooter{margin:auto;width:auto} .hasLeftCol #pageFooter{background-color:#fff;clear:both;margin-left:180px} #pagefooter{border-top:0} #pageFooter{color:#737373;font-size: 11px;margin:0 auto;width:980px} #pageFooter a{text-decoration:none;white-space:nowrap} #pageFooter a:last-child{margin-right:0} #pageFooter a:hover{text-decoration:underline} #contentCurve{background-color:#fff;border-bottom:1px solid #ccc;height:8px;font-size: 1px} .hasLeftCol #contentCurve{border:1px solid #ccc;border-top:none;position:relative} #footerContainer{border-top:1px solid #eee;margin-bottom:30px;padding:8px;position:relative} #footerContainer .navigation{text-align:right} .profileInfoSection{margin-bottom:30px} .profileInfoSection .emptyInfoSection{text-align:center;font-size: 13px} .profileInfoSection .inlineLabel{color:#999} .profileInfoSection .privacyTooltip{padding-top:4px} #blueBarHolder{height:41px} #blueBarHolder.slim{height:38px} #blueBar{background-color:#3b5998;min-width:981px;width:100%;z-index:300} #blueBar.fixed_elem{left:0;top:0} .tinyViewport #blueBar.fixed_elem{position:relative !important} .composerTourInProgress #blueBar.fixed_elem{position:static !important} #blueBar #pageHead{margin:0 auto;width:981px} #globalContainer{margin:0 auto;position:relative;zoom:1} .fbx #globalContainer{width:981px} .fbx #tab_canvas > div{padding-top:0} .fb_content{padding-bottom:20px} .fbx .fb_content{padding-bottom:0} .fbx #globalContainer #content{min-height:inherit} #mainContainer{margin-left:-1px;display:block;width:100%} .hasLeftCol #mainContainer{border-right:1px solid #ccc} #leftCol{display:none;float:left;padding:20px 0 0 2px;width:179px;word-wrap:break-word} .hasLeftCol #leftCol{display:block} #rightCol{margin-top:-10000px;float:right;padding-right:0;width:244px;word-wrap:break-word} .hasRightCol #rightCol{margin-top:0} .hasLeftCol #rightCol{padding-right:20px} #contentCol{background-color:#fff;padding-top:15px} .hasLeftCol #contentCol{border-left:1px solid #ccc;margin-left:181px} #headerArea{margin-bottom:5px;padding:2px 0 12px} .hasLeftCol #headerArea{float:left;margin:0 20px 0;width:759px} #contentArea{margin-right:-1px;padding-left:1px;word-wrap:break-word} .hasLeftCol #contentArea,.hasRightCol #contentArea{float:left;margin-right:0} .hasLeftCol #contentArea{padding:0 20px;width:759px} .hasRightCol #contentArea{width:714px} .hasLeftCol .hasRightCol #contentArea{padding-right:0;width:493px} #bottomContent{clear:both;padding:0 20px 12px} #pageHead{margin:0 auto;width:980px} .fbx #pageHead{margin:0;width:auto} #pageLogo{float:left;margin-left:-6px;z-index:5} #pageLogo a{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:0 -183px;background-color:#3b5998;display:block;height:31px;width:103px} #pageLogo a:hover,#pageLogo a:focus,#pageLogo a:active{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:0 -151px;background-color:#4b67a1;outline:none} #headNav{background-color:#627aad;border:1px solid #1d4088;border-bottom:0;height:30px;margin-left:180px} #pageNav li{float:left} #pageNav a{color:#fff;display:block;display:inline-block;font-weight:bold;height:22px;padding:8px 10px 0 10px;text-decoration:none} #pageNav a:hover,#pageNav a:focus,#pageNav a:active{outline:none;background-color:#6d86b7} #navAccount{position:relative} #navAccount.openToggler,.no_js #navAccount:hover{background-color:#fff;border:1px solid #333;border-bottom:0;margin:-1px -1px 0} #navAccount #navAccountLink{padding-right:16px;zoom:1} .openToggler #navAccountLink,.no_js #navAccount:hover #navAccountLink{background-color:#fff;color:#333;position:relative;z-index:2} .openToggler #navAccountLink:hover,.openToggler #navAccountLink:focus,.openToggler #navAccountLink:active,.no_js #navAccountLink:hover{background-color:#fff} #navAccountLink .accountPulldown{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-49px -141px;height:4px;left:5px;position:relative;top:-2px;width:7px} .openToggler #navAccountLink .dropMenuDivide,.no_js #navAccount:hover #navAccountLink .dropMenuDivide{background:#e0e0e0} .openToggler #navAccountLink .accountPulldown,.no_js #navAccount:hover #navAccountLink .accountPulldown{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-57px -141px} #navAccount .contextualHelp,#navAccount .navigation{background:#fff;border:1px solid #333;border-bottom:2px solid #2d4486;margin-right:-1px;margin-top:-1px;min-width:200px;padding:10px 0 5px;position:absolute;right:0;top:100%;z-index:1} #navAccount .navigation{display:none} #navAccount.openToggler .navigation,.no_js #navAccount:hover .navigation{display:block} #navAccount .navigation .logoutButton{display:block} #navAccount .logoutButton:hover{text-decoration:none} #navAccount .logoutButton input{width:100%;text-align:left;outline:0} #navAccount .navigation a,#navAccount .navigation .logoutButton input{color:#3a579a;display:block;font-weight:normal;height:auto;padding:4px 10px 5px;white-space:nowrap} #navAccount .navigation a:hover,#navAccount .navigation a:focus,#navAccount .navigation a:active,#navAccount .logoutButton:hover input,#navAccount .logoutButton input:active,#navAccount .logoutButton input:focus{background:#6d84b4;border-bottom:1px solid #3b5998;border-top:1px solid #3b5998;color:#fff;padding:3px 10px 4px;text-decoration:none} #navAccount li{display:block;float:none} #navAccountInfo{border-bottom:1px solid #e0e0e0;min-height:55px;position:relative;margin:5px 4px;padding:0 6px 0 64px} ul #navAccountInfo a:hover,ul #navAccountInfo a:focus,ul #navAccountInfo a:active{background:none;border:none;color:#3b5998;padding:4px 10px 5px;text-decoration:underline} #navAccountInfo #navAccountPic{left:-5px;margin:0;position:absolute;top:-9px} #navAccountInfo #navAccountPic img{width:50px;height:50px} #navAccount #navAccountName{font-size: 13px;font-weight:bold;margin:0;padding:0 !important} #navSearch{margin:4px 0 0 4px;position:relative;width:350px} #navSearch .uiSearchInput{border:0} #navSearch .uiSearchInput input{width:315px} #navSearch .uiTypeahead,#navSearch .uiTypeahead .wrap{border-color:#3b5998;height:22px;z-index:100;position:static} #navSearch .uiTypeaheadView{top:auto} .hideBanner .fbPageBanner, .fixedBody .fbPageBanner{display:none} .fbPageBannerInner{margin:auto;width:980px} .sidebarMode .fbPageBannerInner{left:-90px;position:relative} .permalink_stream .uiStream .uiStreamMessage{font-size: 13px} .permalink_stream .fbStreamPermalinkHeader{border-bottom:1px solid #e9e9e9} .permalink_stream .permalinkCloseButton{margin:2px} .permalinkRedesign .uiUfi, .permalinkRedesign .uiStreamFooter{float:left} .permalinkRedesign .uiUfi{clear:left} .permalinkRedesign{margin:auto;float:none} .fbxWelcomeBox .fbxWelcomeBoxBlock{margin-right:8px} .fbxWelcomeBox .fbxWelcomeBoxName{padding-bottom:1px} .fbxWelcomeBox div, .fbxWelcomeBoxBlock .fbxWelcomeBoxImg{height:40px !important} .fbxWelcomeBoxBlock .fbxWelcomeBoxImg{width:40px !important} .fbxWelcomeBoxName{display:block;font-weight:bold;width:112px;word-wrap:break-word} .UIActionLinks_title{font-size: 9px;font-weight:normal;white-space:nowrap;color:#999} .UIActionLinks_bottom{color:#999} .UIActionLinks_bottom a, .UIActionLinks_bottom button.as_link, .UIActionLinks_bottom .uiLinkButton input, .UIActionLinks_bottom .uiLinkButton input:hover{color:#6d84b4} .UIActionLinks .uiBlingBox{color:#3b5998} .cmt_like_icon{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-200px -415px;width:10px;height:9px} .comment_like_button{margin:-5px;padding:5px;padding-top:0} .comment_like_button:active,.comment_like_button:focus,.comment_like_button:hover{text-decoration:none} .fixed_elem{position:fixed !important} .tinyViewport .fixed_elem{position:static !important} body .fixedScrolling{position:fixed !important} body.fixedBody #contentCol{min-height:617px} body.fixedBody{overflow-x:hidden} .fixedBody #blueBar, .fixedBody #leftCol{position:fixed !important} .fixedBody #leftColContainer{float:left;padding-right:2px;width:179px} .fixedBody .hideWhenFixed{display:none} .subscribeButtonsContainer{display:inline-block;vertical-align:top} .subscribeButtonsContainer .uiButton{margin-left:0} div.subscribeButtonsContainer .subscribedButton,.subscribeButtonsContainer .subscribedButton .uiButtonText,.subscribeButtonsContainer .subscribedButton input{cursor:default} div.subscribeButtonsContainer .uiButtonHover,div.subscribeButtonsContainer .uiButtonHover:active,div.subscribeButtonsContainer .uiButtonHover:hover{background:#6d84b4;border-color:#3b5998;box-shadow:none} .subscribeButtonsContainer .uiButtonHover .uiButtonText{color:#fff} div.subscribeButtonsContainer .customimg{margin:2px 5px 0 0} .FlyoutSubscriptionMenu{min-width:180px} .SubscriptionMenu .itemLabel{overflow:hidden} .NonFriendSubscriptionMenu .hideFromNonFriend{display:none} div.SubscriptionMenu .SubscriptionMenuCategory .itemAnchor{font-weight:normal} .SelectorMenuOnFeed .uiMenuItem .itemAnchor{padding:1px 16px 1px 42px} .uiMenu .SelectorMenuOnFeed .checked .itemAnchor{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yu/r/6NHt8H5uyPf.png) 20px 5px no-repeat} .uiMenu .SelectorMenuOnFeed .checked a:active,.uiMenu .SelectorMenuOnFeed .checked a:focus{background-color:#6d84b4;background-position:20px -56px} .hasSubscriptionMenu .SubscriptionMenuItem,div.showSubscriptionMenu li,.isUnsubscribed .SubscribeMenuToggle,.SubscribeMenuSubscribe{display:none} div.showSubscriptionMenu li.SubscriptionMenuItem,.isUnsubscribed .SubscribeMenuSubscribe{display:block} span.FollowLink .followLinkInlineCheck{display:inline;margin-right:4px} .followLinkSubscribed{cursor:default} .FriendListMenu{overflow:hidden;padding-bottom:0} .FriendListActionMenu{padding-top:0} .async_saving .FriendListCancel,.async_saving .FriendListUnfriend,.async_saving .FriendListActionSeparator,.async_saving .FriendListScroller,.async_saving .FriendListMenu{display:none} .FriendListMenu .itemLabel{overflow:hidden} .FriendListMenu .FriendListItem .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .FriendListMenu .FriendListItem .icon{float:right;margin:3px 0 0 4px} .uiScrollableArea ul.FriendListMenu{margin-right:5px} .FriendListMenu .FriendListCreateItem{position:relative} .FriendListMenu .createPlusIcon{display:block;left:8px;position:absolute;top:6px;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-133px -392px;overflow:hidden;width:8px;height:8px} .FriendListMenu .selected .createPlusIcon{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-125px -392px} .CreateListInputItem,.FriendListCreateTrigger{position:relative;zoom:1} div.FriendListMenuCreate li.FriendListCreateTrigger,.FriendListMenu .CreateListInputItem{display:none} div.FriendListMenuCreate .CreateListInputItem{display:block;padding:1px 16px 1px 22px} .FriendListMenu .createListInput{outline:none;padding:1px 2px 2px 2px;width:100px} .async_saving .FriendListActionMenu{display:none} .FriendListCancel{position:relative} .FriendListCancel .uiLoadingIndicatorAsync{position:absolute;top:4px} .FriendListMenu .underShowMore,.FriendListMenu .ShowMoreItem,div.FriendListMenuShowMore li.ShowMoreItem{display:none} div.FriendListMenuShowMore .underShowMore,div.hasMoreFriendListItems .ShowMoreItem{display:block} .FlyoutFriendMenu .uiScrollableAreaWrap{max-height:266px} .FlyoutFriendMenu .uiScrollableAreaTrack{right:15px} .FlyoutFriendMenu .uiScrollableArea.contentAfter:after{background-color:transparent} div.followButtonFlyout .FriendListCancel,div.followButtonFlyout .FriendListUnfriend,div.followButtonFlyout .friendOptionsOnly,div.followButtonFlyout .PageMenuUnlike,div.friendButtonFlyout .SubscribeMenuUnsubscribe,div.friendButtonFlyout .PageMenuUnlike,div.likeButtonFlyout .SubscribeMenuUnsubscribe,div.likeButtonFlyout .FriendListCancel,div.likeButtonFlyout .FriendListUnfriend,div.likeButtonFlyout .friendOptionsOnly{display:none} .FriendButton{display:inline-block;vertical-align:top} .FriendButton .uiButton{margin-left:0} div.FriendButton .enableFriendListFlyout,.FriendButton .enableFriendListFlyout .uiButtonText,.FriendButton .enableFriendListFlyout input{cursor:default} div.FriendButton .uiButtonHover{background:#6d84b4;border-color:#3b5998;box-shadow:none} .FriendButton .uiButtonHover .uiButtonText{color:#fff} .requestResponseMenu .action .itemAnchor{padding-right:22px} div.FriendButton .customimg{margin:2px 5px 0 0} .home #leftCol{min-height:600px} .home #rightCol .home_right_column{padding-top:44px} .home #rightCol .friend_list_right_column_header{height:44px} .profileItemImg{height:16px;width:16px} .facepile16 .unreadProfileImg{height:16px;margin-top:-1px;padding-right:1px;width:16px} .facepile16 .uiSideNav .subitem .uiSideNavCount{top:-1px} .editMode .unreadProfileImg, .homeSideNav .async_saving .unreadProfileImg, .homeSideNav .loading .unreadProfileImg{display:none} .facepile22 .unreadProfileImg{height:22px;margin-top:-1px;padding-right:1px;width:22px} .facepile22 .uiSideNav .buttonWrap{padding-top:3px} .facepile22 .uiSideNav .uiSideNavCount{top:2px} .facepile22 .uiSideNav .uiSideNavCountSprited{margin-top:4px} .facepile22 .uiSideNav .subitem .uiSideNavCountSprited{margin-top:0} .facepile22 .uiSideNav .sideNavItem .linkWrap{padding-bottom:1px;padding-top:3px} .facepile22 .uiSideNav .sideNavItem .subitem .linkWrap{margin-top:-1px;padding-bottom:1px;padding-top:0} .facepile22 .uiSideNav .sideNavItem .imgWrap{height:24px;position:relative;top:3px} .facepile22 .uiSideNav .sideNavItem .subitem .uiSideNavCount{top:-1px} .facepile22 .uiSideNav .uiLoadingIndicatorAsync{top:5px} .facepile22 .droppableNav .grip{margin-top:6px} .editMode .unreadProfileImg, .homeSideNav .async_saving .unreadProfileImg, .homeSideNav .loading .unreadProfileImg{display:none} .facepile24 .unreadProfileImg{height:24px;margin-top:-1px;padding-right:1px;width:24px} .facepile24 .uiSideNav .buttonWrap{padding-top:3px} .facepile24 .uiSideNav .uiSideNavCount{top:3px} .facepile24 .uiSideNav .uiSideNavCountSprited{margin-top:4px} .facepile24 .uiSideNav .subitem .uiSideNavCountSprited{margin-top:0} .facepile24 .uiSideNav .sideNavItem .linkWrap{padding-bottom:1px;padding-top:4px} .facepile24 .uiSideNav .sideNavItem .subitem .linkWrap{margin-top:-1px;padding-bottom:1px;padding-top:0} .facepile24 .uiSideNav .sideNavItem .imgWrap{height:26px;position:relative;top:4px} .facepile24 .uiSideNav .sideNavItem .subitem .uiSideNavCount{top:-1px} .facepile24 .uiSideNav .uiLoadingIndicatorAsync{top:5px} .facepile24 .droppableNav .grip{margin-top:6px} .editMode .unreadProfileImg, .homeSideNav .async_saving .unreadProfileImg, .homeSideNav .loading .unreadProfileImg{display:none} .bookmarksMenuButton .uiCloseButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yV/r/VKGo18phZx4.png);background-repeat:no-repeat;background-position:-1px -1px} .bookmarksMenuButton .uiCloseButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yQ/r/qsj3AWNXuuM.png);background-repeat:no-repeat;background-position:-1px -1px} .bookmarksMenuButton .uiCloseButton:hover,.bookmarksMenuButton .openToggler .uiCloseButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yV/r/VKGo18phZx4.png);background-repeat:no-repeat;background-position:-1px -19px} .uiSideNav ul{display:none} .uiSideNav .open ul{display:block} .uiSideNav .forceSubitems ul{display:block} .uiSideNav .hidden{display:none} .uiSideNav .item,.uiSideNav .subitem{color:#333;display:block;border-bottom:1px solid #fff;min-height:17px;line-height:13px;padding:3px 8px 0 28px;text-decoration:none} .uiSideNav .subitem{padding-left:37px} .uiSideNav .item:hover,.uiSideNav .item:active,.uiSideNav .item:focus,.uiSideNav .subitem:hover,.uiSideNav .subitem:active,.uiSideNav .subitem:focus{background-color:#eff2f7;text-decoration:none} .uiSideNav .selectedItem .item,.uiSideNav .selectedItem .item:hover,.uiSideNav ul .selectedItem .subitem,.uiSideNav ul .selectedItem .subitem:hover{background-color:#d8dfea;font-weight:bold} .uiSideNav .item .imgWrap{width:18px} .uiSideNav .external{padding-right:12px;background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yW/r/AebrcwrBeG6.png) no-repeat right 3px} .uiSideNav .item .linkWrap{-o-text-overflow:ellipsis;display:block;max-width:116px;overflow:hidden;padding-left:0;text-overflow:ellipsis;white-space:nowrap} .uiSideNavCountText{color:gray} .uiSideNav .loading .item,.uiSideNav .sideNavItem .loading .subitem{background-color:#eff2f7;border-color:#eff2f7;border-bottom-color:#fff} .uiSideNav .loading .subitem{background-color:#fff;border-color:#fff} .uiFutureSideNav .actionLinks{font-size: 9px;font-weight:bold;text-transform:uppercase} .droppableNav .actionLinks{display:block} .actionLinks{line-height:12px;padding:4px 0 4px 28px;position:relative} .uiSideNav .loadingIndicator,.actionLinks .loadingIndicator{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/GsNJNwuI-UM.gif) no-repeat 0 0;display:none;height:11px;position:absolute;right:5px;top:5px;width:16px} .loading .loadingIndicator,.async_saving .loadingIndicator{display:block} .editMode .loadingIndicator,.loading ul .loadingIndicator{display:none} .uiSideNav ul .loading .loadingIndicator{top:5px} .uiSideNav .showSubitems .hiddenSubitem,.uiSideNav .open .navMore{display:block} .uiSideNav .hiddenSubitem,.uiSideNav .showSubitems .navMore,.uiSideNav .navMore{display:none} .uiSideNav li .navMore{margin:4px 0 10px 37px} .uiSideNav .loading .navMore{background-color:transparent} .uiSideNav .item:hover .buttonWrap .uiCloseButton{visibility:visible} .editMode .droppableNav .uiCloseButton, .editMode .droppableNav .item:hover .uiCloseButton{visibility:visible} .middot{display:none} .expandedMode .middot{display:inline} .uiSideNav .mover{display:none;left:-18px;overflow:hidden;position:absolute;text-align:right;top:3px;z-index:2} .uiSideNav .placeholder{border:2px dashed gray} .editMode .item{cursor:default;opacity:.5} .editMode .item:hover{background-color:transparent} .editMode .sortableItem{cursor:move;opacity:1} .editMode .sortableItem:hover{background-color:#eff2f7} .uiSideNav .mover .arrow{position:relative;top:-20px} .uiSideNav .mover .arrow:active,.uiSideNav .mover .arrow:focus{top:0} .droppableNav .grip{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-156px -392px;display:none;height:10px;margin-top:2px;width:10px} .editMode .droppableNav .grip{display:block} .editMode .uiSideNav .external{background-image:none} .middot,.navEdit,.navDone{display:none} .expandedMode .middot,.expandedMode .navEdit,.navEditDone .navEdit,.editMode .navDone{display:inline} .editMode .draggingMode{opacity:.5} .editMode .droppableNav .draggingMode{opacity:1} .editMode .uiSideNav ul{display:none} .editMode .middot,.editMode .navEdit,.editMode .navLessLink,.editMode .uiSideNav .count,.editMode .uiSideNav .divider,.editMode .uiSideNav .loading .mover,.editMode .uiSideNav .uiCloseButton{display:none !important} #sideNav #pinnedNav{margin-top:16px} #sideNav .belowThreshold,#sideNav .homeSideNav .actionLinks,#sideNav #pinnedNav .hideOption{display:none} #sideNav.editMode .homeSideNav .actionLinks{display:block} #sideNav .moreSectionsLink{color:#7f93bc;font-size: 9px;font-weight:bold} .navHeader,.navHeader a{color:#999;font-size: 9px;font-weight:bold;margin-top:12px} .navHeader .bookmarksNavSeeAll{color:#6d84b4;white-space:nowrap} .navHeader .uiLoadingIndicatorAsync{margin-top:-3px} .editMode .nonDroppableNav{opacity:.5} .editMode .nonDroppableNav .sortableItem{cursor:default} .editMode .homeSideNav .bookmarksNavSeeAll,.homeSideNav .bookmarksNavSeeAll{visibility:hidden} .homeSideNav:hover .bookmarksNavSeeAll,.forceMoreLink .bookmarksNavSeeAll{visibility:visible} .homeSideNav a:hover{text-decoration:none} .bookmarksNavSeeAll:hover{text-decoration:underline} .homeSideNav .loading .bookmarksNavSeeAll{display:none} .homeSideNav .bookmarksMenuButton ul{display:inline} .sideNavItem:hover .bookmarksMenuButton .uiCloseButton,.sideNavItem .bookmarksMenuButton a.selected{visibility:visible} .editMode .homeSideNav .sideNavItem .bookmarksMenuButton .uiCloseButton,.editMode .homeSideNav .sideNavItem:hover .bookmarksMenuButton .uiCloseButton{visibility:hidden} .droppableNav .rearrange{display:inline} .nonDroppableNav .rearrange{display:none} div.fbComposerWideSpacing{border-bottom:0;margin:9px 0 -6px;padding-bottom:4px} div.fbFriendListComposer{border-bottom:none;margin-left:-18px;padding-left:18px} div.fbFriendListComposer .focus_target{border-bottom:1px solid #e6e6e6;margin-left:-18px;padding-left:18px} div.fbFriendListComposer .child_was_focused{border-bottom:none} div.fbFriendListComposer .uiComposerAttachments{padding:5px 0 6px} #pagelet_rhc_ticker{margin-top:-5px} #pagelet_rhc_ticker .fbFeedTicker{padding-top:5px} .homeFixedLayout .fbFeedTicker.fixed_elem{background-color:#fff;z-index:2} .homeFixedLayout #contentCurve{height:0} div#contentCol.homeFixedLayout{padding-top:5px} .homeFixedLayout div#contentArea{padding-bottom:20px} .tickerOnTop #pagelet_rhc_ticker{margin-top:0;margin-bottom:5px} .adsOnTop .rightColumnWrapper .fixed_scrolling_wrapper, .tickerOnTop .rightColumnWrapper{width:244px} .sidebarMode .tickerOnTop #pagelet_rhc_ticker{margin-bottom:0} .tickerOnTop #pagelet_rhc_ticker .fbFeedTicker{padding-top:0} .sidebarMode .tickerOnTop #pagelet_current .fbCurrent{margin:6px 0 12px 0} .tickerOnTop #pagelet_current .fbCurrent{margin:8px 0 10px 0} .tickerOnTop .ticker_container .ticker_stream{margin-top:-1px} .tickerOnTop .ego_section{margin-bottom:0} .tickerOnTop .fbFeedTicker .ticker_container:before, .tickerOnTop .fbFeedTicker .ticker_container:after{background-color:rgba(0, 0, 0, .10) !important;content:"";display:block;height:1px !important;position:absolute;width:100%;z-index:2} .tickerOnTop .fixed_elem .ticker_container:before{background-color:transparent !important} .tickerOnTop .fbFeedTicker .ticker_container:after{bottom:0} .tickerOnTop .fbFeedTicker .fbTickerFooter{border-top:3px solid #f2f2f2} .tickerOnTop .fixed_elem .fbFeedHeadThickLineCapable{border:0} div.composerOpen #rightCol{padding-top:40px} div.fbStreamRecentStoriesPager{padding-bottom:20px;padding-top:13px} .fbStreamRecentStoriesPager a.fbStreamRecentStoriesWrap .img{position:relative;top:1px} .fbStreamRecentStoriesText{padding-left:7px} div.fbStreamRecentStoriesPager .fbStreamRecentStoriesWrap{border-bottom-color:#c2c8d1;border-top-color:#d8dfe9;padding-top:8px;padding-bottom:8px;text-align:center} .slim #blueBar{border-bottom:1px solid #133783;box-shadow:0 0 2px rgba(0, 0, 0, .52);height:37px;position:relative} .slimHeader #headNav{background:none;border:none;margin-left:176px} .slimHeader .fbJewelFlyout{top:37px} .slimHeader #jewelContainer{padding-top:5px} .slimHeader .fbJewel .jewelCount{background:none;top:0} .slimHeader .fbJewel .jewelCount span{border:solid 1px #d83722;border-bottom:solid 1px #c0311e;border-top:solid 1px #e23923;box-shadow:0 1px 0 rgba(0, 39, 121, .77);padding:0 1px} .slimHeader #jewelContainer .fbJewel a.jewelButton{height:31px;margin-top:1px} .slimHeader .openToggler a.jewelButton{height:31px !important} .slimHeader #fbMessagesJewel a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-25px -247px} .slimHeader #fbMessagesJewel a.jewelButton:active,.slimHeader #fbMessagesJewel a.jewelButton:focus,.slimHeader #fbMessagesJewel a.jewelButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-25px -282px} .slimHeader #fbMessagesJewel.hasNew a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:0 -282px} .slimHeader #fbMessagesJewel.openToggler a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png) !important;background-repeat:no-repeat !important;background-position:-50px -247px !important} .slimHeader #fbNotificationsJewel a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-56px -91px} .slimHeader #fbNotificationsJewel a.jewelButton:active,.slimHeader #fbNotificationsJewel a.jewelButton:focus,.slimHeader #fbNotificationsJewel a.jewelButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-31px -91px} .slimHeader #fbNotificationsJewel.hasNew a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-56px -21px} .slimHeader #fbNotificationsJewel.openToggler a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png) !important;background-repeat:no-repeat !important;background-position:-31px -21px !important} .slimHeader #fbRequestsJewel a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-56px -56px} .slimHeader #fbRequestsJewel a.jewelButton:active,.slimHeader #fbRequestsJewel a.jewelButton:focus,.slimHeader #fbRequestsJewel a.jewelButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-75px -247px} .slimHeader #fbRequestsJewel.hasNew a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:0 -247px} .slimHeader #fbRequestsJewel.openToggler a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png) !important;background-repeat:no-repeat !important;background-position:-31px -56px !important} .slimHeader #pageLogo a,.slimHeader #pageLogo a:hover,.slimHeader #pageLogo a:focus,.slimHeader #pageLogo a:active{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:0 -214px;height:31px;margin-top:6px} .slimHeader #navSearch{margin-top:9px} .slimHeader #navSearch .uiTypeahead{background:none;border:solid 1px #294a8f;border-top:solid 1px #123682;border-radius:2px} .slimHeader #navSearch .uiSearchInput{background:#fff;border-radius:1px;border-top:1px solid #d9d9d9;height:20px;padding:0 0 1px} .slimHeader #navSearch div,.slimHeader #navSearch span{border:none} .slimHeader #navSearch .textInput .inputtext{padding-top:2px} .slimHeader #pageNav .topNavLink{height:31px} .slimHeader #pageNav a{color:#d8dfea} .slimHeader #pageNav{margin-right:1px;padding-top:6px} .slimHeader #pageNav .topNavLink:hover,.slimHeader #pageNav .topNavLink:focus,.slimHeader #pageNav .topNavLink:active,.slimHeader #pageNav .tinyman:hover a,.slimheader #pageNav .tinyman:focus a,.slimHeader #pageNav .tinyman:active a,.slimHeader #pageNav .topNavLink a:hover,.slimHeader #pageNav .topNavLink a:focus,.slimHeader #pageNav .topNavLink a:active{background-color:#4b67a1;color:#fff;height:31px} .slimHeader #pageNav .openToggler #navAccountLink,.slimHeader #pageNav .openToggler #navAccountLink:hover,.slimHeader #pageNav .openToggler #navAccountLink:focus,.slimHeader #pageNav .openToggler #navAccountLink:active,.slimHeader #pageNav .no_js #navAccountLink:hover{background-color:#fff} .slimHeader #pageNav .headerTinymanPhoto{border:solid 1px #294a8f;border-top:solid 1px #123682;border-radius:2px;height:23px;margin:3px 5px 3px 3px;width:23px} .slimHeader #pageNav .topNavLink .headerTinymanName{display:inline-block;max-width:175px;overflow:hidden;padding-right:8px;text-overflow:ellipsis;vertical-align:top;white-space:nowrap} .slimHeader #pageNav .topNavLink a{height:31px;line-height:29px;padding:0;vertical-align:top} .slimHeader #pageNav .middleLink a{padding:0 8px} .slimHeader #pageNav li.tinyman:after,.slimHeader #pageNav li.middleLink:after{background:#526da4;content:" ";display:inline-block;float:right;margin-top:9px;width:1px;height:14px} .slimHeader #pageNav .topNavLink:hover:after{background:#4b67a1} .slimHeader #pageNav li.middleLink:hover,.slimHeader #pageNav #navAccountLink:hover{margin-left:-1px;padding-left:1px} .slimHeader #pageNav .openToggler #navAccountLink:hover{margin-left:0;padding-left:0} .slimHeader #pageNav .menuPulldown{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-56px -366px;height:31px;width:24px} .slimHeader #pageNav .menuPulldown:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-2px -366px;height:31px;width:24px} .slimHeader #pageNav #navAccount.openToggler,.slimHeader .no_js #navAccount:hover,.slimHeader #pageNav .openToggler #navAccountLink{height:31px;margin-top:0} .slimHeader #pageNav .openToggler .menuPulldown{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png) !important;background-repeat:no-repeat !important;background-position:-29px -366px !important;height:31px;width:24px} .slimHeader #pageNav #navAccountLink{padding-right:0} .slimHeader #pageNav .menuDivider{background:#ddd;font-size:0;height:1px;line-height:0;margin:6px 7px} .slimHeader #navAccount .navigation{border-bottom-color:#333;padding:4px 0} .slimHeader #pageNav #navAccount .navSubmenu{border-bottom:solid 1px #fff;border-top:solid 1px #fff;color:#222;height:18px;line-height:18px;padding:0 22px} .slimHeader #navAccount .navSubmenu input{color:#222;height:20px;margin-top:-1px;padding:0} .slimHeader #navAccount .navSubmenu .UIImageBlock{max-width:120px;width:120px;overflow:hidden} .slimHeader #navAccount .navSubmenu .UIImageBlock_Content{max-width:102px;overflow:hidden;display:inline-block;vertical-align:middle;text-overflow:ellipsis;white-space:nowrap} .slimHeader #navAccount .navSubmenu .navSubmenuPageLink{height:18px;color:#000;line-height:normal;border:none} .slimHeader #navAccount .navSubmenu:hover .navSubmenuPageLink,.slimHeader #navAccount .navSubmenu:focus .navSubmenuPageLink,.slimHeader #navAccount .navSubmenu:active .navSubmenuPageLink{color:#fff;background:#6d84b4;text-decoration:none;height:18px} .slimHeader #pageNav .navSubmenu img{height:18px;width:18px} .slimHeader #pageNav .navSubmenu img.uiLoadingIndicatorAsync{width:16px;height:11px;margin-top:4px} .slimHeader #navAccount .highlanderIntro{padding:0 22px 6px 22px} .slimHeader #navAccount .uiScrollableArea.contentAfter:after{display:none} .slimHeader #pageNav #navAccount .navSubmenu:hover,.slimHeader #pageNav #navAccount .navSubmenu:focus,.slimHeader #pageNav #navAccount .navSubmenu:active{background:#6d84b4;border-bottom:solid 1px #3b5998;border-top:solid 1px #3b5998;color:#fff} .slimHeader #navAccount .navSubmenu:hover input,.slimHeader #navAccount .navSubmenu:focus input,.slimHeader #navAccount .navSubmenu:active input{color:#fff;text-decoration:none} .slimHeader #navAccount .navIdentity{padding:5px 22px 5px 17px;width:200px} .slimHeader #navAccount .navIdentityPic a:hover,.slimHeader #navAccount .navIdentityPic:hover img{background:none;border:none;padding:0} .slimHeader #navAccount .navIdentityLinks{margin-top:3px;width:120px} .homeWiderContent div#rightCol .home_right_column{padding-top:0;width:244px} div#contentCol.homeWiderContent, .homeWiderContent #bottomContent{padding-left:0;padding-right:0} .homeWiderContent div#rightCol{padding-right:0} .hasLeftCol .homeWiderContent div#contentArea{padding-left:18px;padding-right:25px;width:511px} div.homeWiderContent .megaphone_box{margin-left:-18px;margin-top:-5px} .HovercardStage{min-width:275px;max-width:350px;padding:10px} .HovercardTitle{max-width:165px} .uiHovercardFooter .buttonsHovercardFooter{float:right} .HovercardLoading{padding:10px;width:275px} span.alternate_name{color:gray;font-weight:normal} .fbJewel{float:left;margin-right:-1px} #jewelContainer{float:left;position:relative;z-index:4} #jewelContainer .hasNew,#jewelContainer .openToggler{position:relative} .fbJewel .jewelCount{background-color:#00376a;border-radius:2px;color:#fff;display:none;font-size: 9px;font-weight:bold;padding-bottom:1px;position:absolute;right:-1px;top:-1px;z-index:101} #jewelContainer .hasNew .jewelCount{display:block} #jewelContainer .openToggler .jewelCount{display:none} .fbJewel .jewelCount span{background-color:#f03d25;border:1px solid #dd3822;border-radius:2px;border-top:0;display:block;padding:1px 1px 0} .fbJewel a.jewelButton{display:block;height:31px;text-decoration:none;margin:0 1px;width:24px} .fbJewel a.jewelButton:active,.fbJewel a.jewelButton:focus,.fbJewel a.jewelButton:hover{background-color:#4b67a1;outline:none;text-decoration:none} #jewelContainer .openToggler .jewelButton{background-color:#fff !important;border:1px solid #333;border-bottom:0;height:30px;margin:0} .fbJewelFlyout{background-color:#fff;border:1px solid #333;border-bottom:2px solid #293e6a;left:0;overflow:visible;position:absolute;top:30px;width:330px;z-index:-1} .fbJewelFlyout .metadata{padding-top:3px} .fbJewelFlyout .jewelItemList{padding:4px 0} .fbJewelFlyout .jewelHighlight .empty{border:none;padding:4px 8px} .fbJewelFlyout .jewelHighlight li a{color:#333;display:block;padding:4px 8px;text-decoration:none} .fbJewelFlyout .jewelHighlight li a:hover,.fbJewelFlyout .jewelHighlight li a:active,.fbJewelFlyout .jewelHighlight li a:focus{background-color:#6d84b4 !important;border-bottom:1px solid #3b5998;border-top:1px solid #3b5998;outline:none;padding-top:3px;padding-bottom:3px;text-decoration:none} .fbJewelFlyout .jewelHighlight a:hover span,.fbJewelFlyout .jewelHighlight a:active span,.fbJewelFlyout .jewelHighlight a:focus span,.fbJewelFlyout .jewelHighlight a:hover div,.fbJewelFlyout .jewelHighlight a:active div,.fbJewelFlyout .jewelHighlight a:focus div,.fbJewelFlyout .jewelHighlight li.selected a,.fbJewelFlyout .jewelHighlight li.selected .timestamp{color:#fff} .fbJewelFlyout .jewelHighlight li{cursor:pointer;border-top:1px solid #e6e6e6} .fbJewelFlyout .jewelHighlight li:first-child{border-top:none} .fbJewelFlyout li.jewelItemNew{background:#eff1f7} .fbJewelFlyout li.jewelItemResponded{background:#fff9d7} .fbJewelFlyout .jewelLoading{display:block;margin:10px auto} .fbJewelFlyout .jewelHeader{padding:7px 8px 7px 8px;border-color:#ddd} .fbJewelFlyout .jewelFooter a{background-color:#f7f7f7;border-top:1px solid #e0e0e0;display:block;font-weight:bold;padding:8px;text-align:center} .fbJewelFlyout .jewelFooter a:hover,.fbJewelFlyout .jewelFooter a:active,.fbJewelFlyout .jewelFooter a:focus{background-color:#6d84b4;border-top:1px solid #3b5998;color:#fff;outline:none;text-decoration:none} .fbJewelFlyout .jewelFooter .seeMoreCount{display:none;font-weight:bold;padding:2px 0 0} .fbJewelFlyout .jewelUnread .seeMoreCount{display:block} .fbJewelFlyout .jewelFooter a:hover .seeMoreCount,.fbJewelFlyout .jewelFooter a:active .seeMoreCount,.fbJewelFlyout .jewelFooter a:focus .seeMoreCount{color:#e7e7e7} #fbMessagesJewel a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-25px -247px} #fbMessagesJewel a.jewelButton:active,#fbMessagesJewel a.jewelButton:focus,#fbMessagesJewel a.jewelButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-25px -282px} #fbMessagesJewel.hasNew a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:0 -282px} #fbMessagesJewel.openToggler a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png) !important;background-repeat:no-repeat !important;background-position:-50px -247px !important} #fbMessagesFlyout{left:25px} #fbMessagesFlyout li.empty{color:#757575;padding:4px 8px 10px} #fbMessagesFlyout li a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap} #fbMessagesFlyout .content{display:block;width:auto} #fbMessagesFlyout .author{color:#3b5998;font-weight:bold;padding-top:2px;white-space:normal} #fbMessagesFlyout .preview{overflow:hidden;text-overflow:ellipsis;white-space:nowrap} #fbMessagesFlyout .subject{color:#333} #fbMessagesFlyout .time{color:#9d9d9d;font-size: 9px} #fbMessagesFlyout a:hover .author,#fbMessagesFlyout a:hover .preview,#fbMessagesFlyout a:hover .subject,#fbMessagesFlyout a:hover .time{color:#fff} .noMessages #fbNotificationsJewel{margin-left:25px} #fbNotificationsJewel a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-56px -91px} #fbNotificationsJewel a.jewelButton:active,#fbNotificationsJewel a.jewelButton:focus,#fbNotificationsJewel a.jewelButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-31px -91px} #fbNotificationsJewel.hasNew a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-56px -21px} #fbNotificationsJewel.openToggler a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png) !important;background-repeat:no-repeat !important;background-position:-31px -21px !important} #fbNotificationsFlyout{left:50px} #fbNotificationsFlyout a:hover .blueName{color:#fff} #fbNotificationsFlyout .blueName{color:#3b5998;font-weight:bold} #fbNotificationsFlyout .staticAppIcon{background-position:right;height:16px;width:16px} #fbNotificationsFlyout .selected .staticAppIcon{background-position:left} #fbNotificationsFlyout .info{max-width:259px;word-wrap:break-word} #fbRequestsJewel a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-56px -56px} #fbRequestsJewel a.jewelButton:active,#fbRequestsJewel a.jewelButton:focus,#fbRequestsJewel a.jewelButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:-75px -247px} #fbRequestsJewel.hasNew a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:0 -247px} #fbRequestsJewel.openToggler a.jewelButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png) !important;background-repeat:no-repeat !important;background-position:-31px -56px !important} #fbRequestsFlyout ul.jewelItemList{padding:0} #fbRequestsFlyout li{padding:4px 8px} #fbRequestsFlyout .jewelHighlight li{padding:0} #fbRequestsFlyout li.empty,#fbRequestsFlyout .jewelHighlight li.empty{color:#757575;padding:4px 8px 10px 8px} #fbRequestsFlyout .fbRequestMessageWrapper{white-space:nowrap} #fbRequestsFlyout .fbRequestMessage{display:inline-block;max-width:169px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} #fbRequestsFlyout .jewelHighlight .title{color:#3b5998} #fbRequestsFlyout .jewelHighlight .mutualFriends{color:gray} #fbRequestsFlyout .jewelHighlight a:hover .title,#fbRequestsFlyout .jewelHighlight a:focus .title,#fbRequestsFlyout .jewelHighlight a:active .title,#fbRequestsFlyout .jewelHighlight a:hover .mutualFriends,#fbRequestsFlyout .jewelHighlight a:focus .mutualFriends,#fbRequestsFlyout .jewelHighlight a:active .mutualFriends{color:#fff} #fbRequestsFlyout .jewelRequest .jewelRequestContent{padding-top:5px} #fbRequestsFlyout .title{font-size: 11px} #fbRequestsFlyout .requestLabel{line-height:12px} #fbRequestsFlyout .jewelFooter .seeMoreCount{display:block} .fbRequestsJewelRelationshipIcon{margin-bottom:-3px;padding-right:5px} #fbRequestsFlyout .fbRequestList{padding-top:8px} #fbRequestsFlyout .fbMoreRequestList{border-top:1px solid #e9e9e9;padding:0} #fbRequestsFlyout .friendBrowserExtraSpacing{margin:0} .uiScrollableArea #fbRequestsPYMKContainer .uiListItem:last-child{padding:0} #fbRequestsFlyout .jewelNoScroll .jewelFooter{margin-top:4px} #fbRequestsFlyout .uiScrollableAreaContent{padding-bottom:4px} #fbRequestsList .uiScrollableArea.contentAfter{border-bottom:1px solid #bbb} #fbRequestsList .uiScrollableArea{border-bottom:1px solid #e0e0e0} #fbRequestsFlyout .jewelNoScroll .jewelFooter a{border-top:1px solid #e0e0e0} #fbRequestsFlyout .jewelFooter a{border:0} .uiScrollableHeaderBox{position:absolute;top:0;width:100%;z-index:1} #fbRequestsFlyout .jewelHeader{position:relative;background:white;padding-right:10px} #fbRequestsFlyout .uiScrollableAreaContent .uiListItem{padding-right:12px} .textMetrics{border:none;height:1px;overflow:hidden;padding:0;position:absolute;top:-9999999px} .megaphone_story_wrapper{margin-bottom:20px} .dialog_content .megaphone_story_wrapper{margin-bottom:0} .megaphone_story{position:relative;overflow:hidden} .megaphone_story .megaphone_content{font-size: 11px} .megaphone_story .megaphone_hide_link{float:right} .megaphone_story_highlighted{background-color:#fcf5d0;border:1px solid #cbb631} .megaphone_box{background-color:#f5f7fa;border:1px dashed #ced5e5} .hasLeftCol .megaphone_box{border-width:0 0 1px 0;margin-left:-20px;margin-top:-15px} #headerArea .megaphone_box{margin-right:-20px;margin-top:-17px} .megaphone_location_friends{margin:0} .megaphone_location_privacy{margin-left:auto;margin-right:auto;width:760px} .ego_x{float:right;opacity:0} .ego_unit:hover .ego_x{opacity:1} .ego_title{display:block;font-weight:bold;margin-top:2px;max-width:162px;word-wrap:break-word} .ego_page .UIStandardFrame_Container{padding-left:0;width:980px} .ego_page .UIStandardFrame_Content{width:720px} .ego_page .UIStandardFrame_SidebarAds{width:auto} .ego_column{width:244px} .ego_section{margin-bottom:15px} .ego_section .async_saving a{display:none} .ego_section .indicator{display:none} .ego_section .async_saving .indicator{display:inline} .ego_unit{margin-bottom:8px} .ego_unit + .ego_unit, .ego_unit + .ego_appended_units .ego_unit{padding-top:8px;border-top:1px solid #e9e9e9} div.egoProfileTemplate div{margin-top:2px} div.egoStatusStory{max-width:197px;word-wrap:break-word} .fbpage_edit_header{padding:0;margin:0;height:31px;border:0;margin:-7px 0 19px;border-bottom:1px solid #ccc;background:#fff} .pages_edit .fbpage_edit_header{margin:0} .icon_dock{margin:0;padding:0;width:300px;float:right} .icon_dock .icon_dock_container{margin:0;padding:0;padding-top:8px;float:right;z-index:30} .icon_dock .edit_link{padding-right:8px;padding-top:10px;font-weight:bold;color:#666;display:block;margin:0;float:right} .icon_dock a{padding:0;padding-left:5px;padding-top:8px;margin:0 0 0 0} .edit_app_switcher{margin:0 0;padding-top:6px} .edit_app_switcher .app_switcher_button .name{padding:2px 0 2px 6px} .edit_app_switcher .app_switcher_menu{width:160px} .edit_app_switcher .app_switcher_menu .name{width:105px;text-align:left} .edit_app_switcher .app_switcher_button .arrow{padding:2px 0 1px} .fbpage_edit_header .left_header{float:left;font-size: 11px;font-weight:bold;overflow:hidden;padding:7px 0 2px;white-space:nowrap;width:250px} .fbpage_edit_header .left_header_text{padding-left:5px;position:relative;top:-4px} .fbpage_edit_header div.left_header .edit_link{font-weight:normal;padding-left:4px;color:#ccc} .fbpage_edit_header div.left_header .edit_link a{color:#6d84b4} .fan_status_inactive{background-color:#fffccc;color:#666;margin:0;padding:0 0 0 3px;line-height:18px} div.PageLikeButton .PageLikedButton,div.PageLikeButton .PageLikedButton .uiButtonText,div.PageLikeButton .PageLikedButton input{cursor:default} div.PageLikeButton .uiButtonHover,div.PageLikeButton .uiButtonHover:active,div.PageLikeButton .uiButtonHover:hover{background:#6d84b4;border-color:#3b5998;box-shadow:none} div.PageLikeButton .uiButtonHover input{color:#fff} .bulkTaggerTypeahead{width:210px} .bulk_tagger_body .bulkTagIcon{margin-top:6px;margin-right:7px} .bulk_tagger_body .bulkTagStatus{display:inline-block;padding-top:4px} .bulkTagSaving{display:none} .tagSaving .bulkTagSaving{display:inline-block;margin-top:2px} .bulk_tagger_loading{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yk/r/LOOn0JtHNzb.gif);background-repeat:no-repeat;background-position:center center;height:21px} div.fbCommentViewUfi ul.fbPhotoTheaterUfi, div.fbCommentViewUfi, div.fbCommentViewCaption{width:364px} span.fbCommentViewThumb i{width:320px} .photosCroppedThumbHighlighted{background-color:#edeff4;border-color:#3b5998} .fbxPhotoSetPageHeader .fbxPhotoSetPageHeaderByline{width:714px} .fbxPhotoSetPageHeader .fbxPhotoSetPageHeaderBox{width:714px;float:left} .fbxPhotoSetPageHeader .fbxPhotoSetViewSwitcher{width:8px} .fbxPhotoSetPageHeader .fbxPhotoSetViewSwitcher .fbxPhotoSetViewSwitcherIcon{margin-top:2px} #fbxPhotoSetViewSwitcherGrid{border-right:0} #fbxPhotoSetViewSwitcherComment{margin-left:0} #fbxPhotoSetViewSwitcherMap{margin-left:-2px;padding-left:2px;padding-right:10px} .fbxPhotoSetViewSwitcherThrobber{background-position:left center;display:inline-block} .fbxPhotoSetPageHeader .async_throbber_left .async_saving{padding-left:28px} #fbCommentViewList{margin-top:-10px} div.photoSetHeader{padding-bottom:0} .fbxPhotoSetPageMetadata{width:437px} .fbPhotoFeedbackForm .uiUfi{width:430px} .fbPhotosReorderableGrid .drag{z-index:200} .fbPhotosReorderableGrid .dragWrapper{position:relative} .fbPhotosReorderableGrid .dragWrapper .uiMediaThumb{cursor:move} .fbPhotosReorderableGrid .dragWrapper .dragHover{display:none} .fbPhotosReorderableGrid .dragWrapper:hover .dragHover{display:block !important} .fbPhotosReorderableGrid .dragHover{background-color:#ddd;position:absolute;left:10px;top:10px} .fbPhotosReorderableGrid .mover{display:block;left:-8px;overflow:hidden;position:absolute;text-align:right;top:3px;z-index:2} .fbPhotosReorderableGrid .mover .arrow{position:relative;top:-20px} .fbPhotosReorderableGrid .mover .arrow:active,.fbPhotosReorderableGrid .mover .arrow:focus{top:0} .fbPhotosGrid td{width:171px} .fbPhotosGridTight td{padding-right:8px;width:150px} .fbPhotosGrid .photoDetails{width:166px} .fbPhotosGrid .photoDetails .photoText{word-wrap:break-word;overflow:hidden} .fbPhotosGridTight .photoDetails{width:154px} .fbPhotosGrid .lastChild{padding-right:0} div.albumsHeader{padding-bottom:0} .fbPhotosGridHeader{margin:0 0 8px} .uiHeader + .fbPhotosGridHeader{margin-top:0} .fbPhotoInlineCaptionEditor .editIcon{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y4/r/ffUJLIqlYCk.gif) no-repeat -18px 0;height:18px;width:18px} .fbPhotoInlineCaptionEditor .editIcon:hover{background-position:0 0} .fbPhotoInlineCaptionEditor .captionWrapper{margin-right:18px} .fbPhotoInlineCaptionEditorEditMode .captionWrapper{margin-right:0} .fbPhotoInlineCaptionEditor .editForm, .fbPhotoInlineCaptionEditorEditMode .fbPhotoCaption, .fbPhotoInlineCaptionEditorEditMode .noCaption, .fbPhotoInlineCaptionEditorEditMode .editIcon{display:none} .fbPhotoInlineCaptionEditorEditMode .editForm{display:block;margin:0;padding:0;text-align:right} .fbPhotoInlineCaptionEditor textarea{width:429px;font-size: 11px;line-height:13px;margin:0 0 2px 0;padding:0} .fbPhotoInlineCaptionEditor .uiMentionsInput .highlighter{font-size: 11px;overflow:hidden;padding:4px 4px 0 4px;left:2px;top:2px;width:392px} .fbPhotoInlineCaptionEditor .mentionsTypeahead{margin-bottom:5px} .fbPhotoInlineCaptionEditor .mentionsTypeahead .wrap{padding:5px} .fbPhotoInlineCaptionEditor .uiTypeahead .innerWrap{overflow:visible} .fbPhotoInlineCaptionEditor .uiMentionsInput .highlighter div{line-height:13px;white-space:pre-wrap;text-align:left} .fbPhotosPhoto{background-color:#f2f2f2;position:relative} .fbPhotosPhoto .photo .img{display:block;margin-left:auto;margin-right:auto} .fbPhotosPhotoButtons{bottom:27px;color:#333;cursor:default;height:0;left:6px;position:absolute;right:6px;user-select:none;z-index:2} .imageLoading .fbPhotosPhotoButtons{display:none} .fbPhotosPhotoButtons .tagMessage,.fbPhotosPhotoButtons .cropMessage{background-color:#f2f2f2;background-color:rgba(255, 255, 255, .8);color:#333;display:none;height:20px;left:0;line-height:20px;margin-left:-10px;margin-right:-10px;padding:5px 10px 6px;position:absolute;right:0;top:0} .fbPhotosPhotoButtons .tagMessage .doneTaggingLink{cursor:pointer;display:inline-block;margin-left:10px} .fbPhotosPhotoButtons .likeCommentGroup .unlike{display:none} .fbPhotosPhotoButtons .viewerLikesThis .like{display:none} .fbPhotosPhotoButtons .viewerLikesThis .unlike{display:block} .taggingMode .fbPhotosPhotoButtons .tagMessage{display:block} .taggingMode .fbPhotosPhotoButtons .likeCommentGroup,.taggingMode .fbPhotosPhotoButtons .commentButton,.taggingMode .fbPhotosPhotoButtons .tagButton{display:none} .fbPhotosPhotoButtons .cropMessage{display:none} .croppingMode .fbPhotosPhotoButtons .cropMessage{display:block} .croppingMode .fbPhotosPhotoButtons .likeCommentGroup,.croppingMode .fbPhotosPhotoButtons .commentButton,.croppingMode .fbPhotosPhotoButtons .tagButton{display:none} .fbPhotosPhotoButtons .hasLocation .addLocation,.fbPhotosPhotoButtons .editLocation{display:none} .fbPhotosPhotoButtons .hasLocation .editLocation,.fbPhotosPhotoButtons .addLocation{display:block} .fbPhotosPhotoTagboxes{height:100%;left:0;position:absolute;top:0;width:100%;pointer-events:none} .showVideo .fbPhotosPhotoTagboxes,.minPhotoTagboxes{height:0} .fbPhotosPhotoTagboxes .tagsWrapper{display:inline-block;max-height:100%;max-width:100%;position:relative;vertical-align:middle} .minPhotoTagboxes .tagsWrapper{display:block;left:0;position:absolute;right:0;top:0} .fbPhotosPhotoTagboxBase{line-height:normal;position:absolute} .imageLoading .fbPhotosPhotoTagboxBase,.croppingMode .fbPhotosPhotoTagboxBase{display:none} .fbPhotosPhotoTagboxBase .borderTagBox,.fbPhotosPhotoTagboxBase .innerTagBox{box-sizing:border-box;height:100%;width:100%} .ieContentFix{display:none;font-size: 200px;height:100%;overflow:hidden;width:100%} .fbPhotosPhotoTagboxBase .tag{bottom:0;left:50%;position:absolute} .fbPhotosPhotoTagboxBase .tagPointer{left:-50%;position:relative} .fbPhotosPhotoTagboxBase .tagArrow{left:50%;margin-left:-10px;position:absolute;top:-4px} .fbPhotosPhotoTagboxBase .tagName{background:#fff;color:#404040;cursor:default;font-weight:normal;padding:2px 6px 3px;top:3px;white-space:nowrap} .fbPhotosPhotoTagboxBase .borderTagBox,.fbPhotosPhotoTagboxBase .tagName{box-shadow:0 0 1px rgba(0, 0, 0, .25), 0 1px 5px 3px rgba(0, 0, 0, .05);background-clip:padding-box;border:1px solid #404040;border-color:rgba(0, 0, 0, .25)} .fbPhotosPhotoTagboxBase .innerTagBox{border:4px solid #fff;border-color:rgba(255, 255, 255, .8)} .fbPhotosPhotoTagboxes .tagBoxPending .tagName{padding:3px 3px 3px 6px;pointer-events:auto} .fbPhotosPhotoTagboxes .tagName .tagForm span,.fbPhotosPhotoTagboxes .tagName .tagForm{display:inline-block;float:none;vertical-align:middle} .imageLoading .tagBoxPending,.taggingMode .fbPhotosPhotoTagboxes .tagBoxPending{display:none} .fbPhotosPhotoTagboxes .hover{opacity:1;z-index:1} .taggingMode .fbPhotosPhotoTagboxes .hover{cursor:crosshair;z-index:auto} .fbPhotosPhotoTagboxes .tagBox .tag{top:85%} .fbPhotosPhotoTagboxes .tagBoxPending .tag{margin-top:10px;top:100%} .fbPhotosPhotoTagboxes .tagBox .tagIgnored{color:#999} .fbPhotosPhotoTagboxes .tag,.fbPhotosPhotoTagboxes .innerTagBox,.fbPhotosPhotoTagboxes .borderTagBox{visibility:hidden} .fbPhotosPhotoTagboxes .tagBoxPending.showPendingTagName .tag,.fbPhotosPhotoTagboxes .tagBoxPending .borderTagBox,.fbPhotosPhotoTagboxes .tagBoxPending .innerTagBox{opacity:.7;-o-transition:opacity .3s linear;visibility:visible} .fbPhotosPhotoTagboxes .hover.tagBox .tag,.fbPhotosPhotoTagboxes .hover.tagBoxPending.showPendingTagName .tag,.fbPhotosPhotoTagboxes .showTag .borderTagBox,.fbPhotosPhotoTagboxes .showTag .innerTagBox,.fbPhotosPhotoTagboxes .tagBoxPendingResponse .tag,.fbPhotosPhotoTagboxes .tagBoxPending.hover .borderTagBox,.fbPhotosPhotoTagboxes .tagBoxPending.hover .innerTagBox{opacity:1;-o-transition:opacity .3s linear;visibility:visible} .showingTag .tagsWrapper .tagBoxPending .tag,.showingTag .tagsWrapper .tagBoxPending.showPendingTagName .tag,.showingTag .tagsWrapper .tagBoxPending .borderTagBox,.showingTag .tagsWrapper .tagBoxPending .innerTagBox{opacity:0} .fbPhotosPhotoTagboxes .hover.tagBoxPending .borderTagBox{border:1px solid #3b5998} .fbxPhoto .fbPhotoContributor{min-height:32px;padding:12px 0 5px;width:448px} .fbxPhoto .fbPhotoContributorName{font-weight:bold;padding-top:1px;padding-bottom:3px;display:inline} .fbxPhoto .fbPhotosPhotoCaption{outline:none;display:inline;width:auto} .fbxPhoto .fbPhotosPhotoCaption:empty{margin:0 !important} .fbxPhoto .fbPhotosPhotoCaption .fbPhotoInlineCaptionEditorEditMode{display:block;width:365px} .fbxPhoto .fbPhotoInlineCaptionEditor,.fbxPhoto .fbPhotoInlineCaptionEditor .captionWrapper,.fbxPhoto .fbPhotoInlineCaptionEditor .fbPhotoCaption{display:inline;margin:0} .fbxPhoto .fbPhotoInlineCaptionEditor .editIcon{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y4/r/-PAXP-deijE.gif) no-repeat 0 0;height:auto;width:auto} .fbxPhoto .fbPhotoInlineCaptionEditorEditMode .fbPhotoCaption{display:none} .fbxPhoto .fbPhotoInlineCaptionEditor .uiMentionsInput,.fbxPhoto .fbPhotoInlineCaptionEditor textarea{width:365px} .fbxPhoto .fbPhotoInlineCaptionEditor .uiMentionsInput .highlighter{width:335px} .fbxPhoto .fbPhotoUfiCol{padding-right:10px;vertical-align:top;width:474px} .fbxPhoto .fbPhotoDataCol{vertical-align:top;width:262px} .fbxPhoto .fbPhotosPhotoFeedback{margin-top:3px} .fbxPhoto .fbPhotosPhotoUfi{padding-top:2px} .fbxPhoto .fbPhotoRemoveFromProfileLink .img{margin-right:3px} .fbxPhoto .fbPhotoTagList{display:inline} .fbxPhoto .fbPhotoTagList .textTagHovercardLink{color:#333;text-decoration:none} .fbxPhoto .fbPhotoRemoveFromProfile{border-bottom:1px solid #e5e5e5;-o-transition:background 500ms ease-out} .fbxPhoto .fbPhotosOnProfile{padding-top:2px} .fbxPhoto .fbPhotosOnProfile .highlight{background:#fff8cc} .fbxPhoto .fbPhotosPhotoActions,.fbPhotosPhotoActions .rotateButtons{border-top:1px solid #e5e5e5} .fbxPhoto .fbPhotoRemoveFromProfile,.fbxPhoto .fbPhotosMediaInfo,.fbxPhoto .fbPhotosPhotoActions .fbUndoSpamReport,.fbxPhoto .fbPhotosPhotoActions a,.fbPhotosPhotoActions .rotateButtons{padding-left:5px;padding-right:5px} .fbPhotosPhotoActions .rotateButtons{height:25px;margin-bottom:5px} .fbxPhoto .fbPhotosPhotoActions .rotateWait{color:gray} .fbxPhoto .fbPhotosPhotoActions .fbUndoSpamReport a{padding-left:0;padding-right:0} .fbPhotosMediaInfo{margin-top:5px} .fbxPhoto .fbPhotosPhotoActions a,.fbxPhoto .fbPhotosPhotoActions .fbUndoSpamReport{display:block;margin-bottom:5px} .fbxPhoto .fbPhotosPhotoActions .iconActionLinks{border-bottom:1px solid #e5e5e5;margin-bottom:7px;padding-bottom:3px} .fbPhotosPhotoActions .taggingOn,.taggingMode .taggingOff{display:none} .taggingMode .taggingOn{display:inline} .fbPhotosPhotoActions .croppingModeOn .startCropping,.fbPhotosPhotoActions .doneCropping{display:none} .fbPhotosPhotoActions .croppingModeOn .doneCropping{display:block} .fbPhotosAudienceEditable{margin-right:0} .fbPhotosAudienceNotEditable{float:left;margin-top:1px} .fbPhotosAudience{margin-bottom:-5px;margin-top:-4px} .fbPhotosPhotoActions .addLocationActionIcon{margin:0 6px 0 1px} .fbPhotosPhotoActions .addLocation,.fbPhotosPhotoActions .hasLocation .editLocation{display:inline} .fbPhotosPhotoActions .editLocation,.fbPhotosPhotoActions .hasLocation .addLocation{display:none} #fbxPhotoContentContainer{position:relative} .fbPhotoTagApprovalBox{background-color:rgba(255,255,255,0.85);border:1px solid rgb(128,128,128);cursor:default;font-size: 11px;left:50%;margin:5px 0 0 -285px;padding:0;position:absolute;text-align:left;top:12px;width:558px;z-index:1} .fbPhotoApprovalPendingButtons{float:right} .fbPhotoApprovalPendingHeader{border-bottom:1px solid #c9c9c9;font-weight:bold;line-height:24px;padding-left:8px} .fbPhotoApprovalPrevPager,.fbPhotoApprovalNextPager{border-bottom:1px solid #c9c9c9;float:left;height:24px;width:25px} .fbPhotoApprovalUnit{line-height:normal;padding:10px 10px 16px 10px} .fbPhotoTagApprovalPager .pager{border-left:1px solid #c9c9c9;display:inline-block;float:right;height:24px;width:25px} .fbPhotoTagApprovalPager .prevPager{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yL/r/-GKzQgqQ7SO.png);background-repeat:no-repeat;background-position:-25px -25px} .fbPhotoTagApprovalPager .prevPager.enabled{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yL/r/-GKzQgqQ7SO.png);background-repeat:no-repeat;background-position:0 -25px} .fbPhotoTagApprovalPager .nextPager{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yL/r/-GKzQgqQ7SO.png);background-repeat:no-repeat;background-position:-25px 0} .fbPhotoTagApprovalPager .nextPager.enabled{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yL/r/-GKzQgqQ7SO.png);background-repeat:no-repeat;background-position:0 0} .imageLoading .fbPhotoTagApproval,.fbPhotoTagApproval.hidePagers .pager{display:none} .fbPhotoPublicLink{text-align:center} .theaterMode .defaultScrollbar, .theaterMode .defaultScrollbar .fbChatSidebar{margin-right:15px} .theaterMode .scrollbar20, .theaterMode .scrollbar20 .fbChatSidebar{margin-right:20px} .theaterMode #blueBar.fixed_elem #pageHead{position:relative} .theaterMode .defaultScrollbar #blueBar.fixed_elem #pageHead{left:-7px} .theaterMode .scrollbar20 #blueBar.fixed_elem #pageHead{left:-10px} .sidebarMode.theaterMode .defaultScrollbar #blueBar.fixed_elem #pageHead{left:-97px} .sidebarMode.theaterMode .scrollbar20 #blueBar.fixed_elem #pageHead{left:-100px} .theaterMode .defaultScrollbar .fbDockWrapperRight{right:15px} .theaterMode .scrollbar20 .fbDockWrapperRight{right:20px} .theaterMode .fbTimelineSideAds, .theaterMode .fbTimelineScrubber{margin-right:-483px} .sidebarMode.theaterMode .fbTimelineSideAds, .sidebarMode.theaterMode .fbTimelineScrubber{margin-right:-393px} .theaterMode .defaultScrollbar .fbTimelineStickyHeader{right:145px} .sidebarMode.theaterMode .defaultScrollbar .fbTimelineStickyHeader{right:325px} .theaterMode .scrollbar20 .fbTimelineStickyHeader{right:140px} .sidebarMode.theaterMode .scrollbar20 .fbTimelineStickyHeader{right:330px} .sidebarMode.theaterMode .defaultScrollbar .fbDockWrapperRight{right:190px} .sidebarMode.theaterMode .scrollbar20 .fbDockWrapperRight{right:195px} .sidebarMode.ticker.theaterMode .defaultScrollbar .fbDockWrapperRight{right:220px} .sidebarMode.ticker.theaterMode .scrollbar20 .fbDockWrapperRight{right:225px} .fbPhotoSnowbox{background-color:rgba(252, 252, 252, .75);bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;z-index:300} .theaterMode .fbPhotoSnowbox{overflow-x:auto;overflow-y:scroll;z-index:101} .theaterMode body{overflow:hidden} .theaterMode #blueBar,.theaterMode .fbChatSidebar,.theaterMode .fbDockWrapper{z-index:50} .fbPhotoSnowbox .closeTheater{position:absolute;right:6px;top:6px;z-index:2} .fbPhotoSnowbox .container{background-color:#fff;box-shadow:0 0 1px rgba(0, 0, 0, .25), 0 1px 5px 3px rgba(0, 0, 0, .05), 0 5px 4px -3px rgba(0, 0, 0, .06);margin:9px auto 40px auto;max-width:960px;min-width:720px;padding:12px;width:720px} .fbPhotoSnowbox .bottomSpace{padding-bottom:40px;position:absolute} .fbPhotoSnowbox .stageWrapper,.fbPhotoSnowbox .stagePagers{text-align:center;width:100%} .fbPhotoSnowbox .stageWrapper{max-height:960px;min-height:402px;height:100%;cursor:default;position:relative} .fbPhotoSnowbox .stagePagers{height:51.1%;max-height:480px;min-height:201px} .fbPhotoSnowbox .stageActions,.fbPhotoSnowbox .stagePagers,.fbPhotoSnowbox .stage .stageWrapper img{user-select:none;-o-user-select:none} .fbPhotoSnowbox .stagePagers,.fbPhotoSnowbox .stageActions{cursor:pointer;left:0;position:absolute;top:0} .fbPhotoSnowbox .stageActions{bottom:0;height:0;top:auto;width:100%} .taggingMode .stageActions{height:100%} .fbPhotoSnowbox .photoInfoWrapper,.dataLoading .stageActions{display:none} .dataLoaded .photoInfoWrapper{display:block} .taggingMode .stageActions{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y4/r/-PAXP-deijE.gif) no-repeat;cursor:crosshair} .fbPhotoSnowbox .stage{background:#f6f6f6;cursor:pointer;display:block;font-size:0;height:100%;max-height:960px;min-height:402px;position:relative;text-align:center;width:100%} .fbPhotoSnowbox .stage .fbPhotosPhotoTagboxes{font-size: 11px} .fbPhotoSnowbox .videoStage,.imagePixelsLoading .stage{background:#f6f6f6 url(http://static.ak.fbcdn.net/rsrc.php/v1/y9/r/jKEcVPZFk-2.gif) no-repeat center center} .fbPhotoSnowbox .showVideo .videoStage{display:block} .fbPhotoSnowbox .videoStage,.fbPhotoSnowbox .showVideo .stage{display:none} .fbPhotoSnowbox .videoStage{height:100%;width:100%;position:absolute;z-index:1} .fbPhotoSnowbox .videoStage embed,.fbPhotoSnowbox .videoStage object{display:inline-block;max-height:100%;max-width:100%;text-align:center;vertical-align:middle} .fbPhotoSnowbox .stage img{display:inline-block;height:auto;image-rendering:optimizeQuality;max-height:100%;max-width:100%;vertical-align:middle;width:auto} .fbPhotoSnowbox .stageError{left:50%;margin-left:-278px;margin-top:-82px;position:absolute;text-align:left;top:50%} .fbPhotoSnowbox .uiButtonOverlay:active{box-shadow:0 0 1px rgba(0, 0, 0, .05), 0 0 2px rgba(0, 0, 0, .1), inset 0 1px 0 rgba(0, 0, 0, .08)} .fbPhotoSnowbox .prev,.fbPhotoSnowbox .next{bottom:-40px;left:-100px;padding:30px;position:absolute} .fbPhotoSnowbox .next{left:auto;right:-100px} .fbPhotoSnowbox .arrowLeft a,.fbPhotoSnowbox .arrowRight a{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yn/r/77uboGPzRks.png);background-position:10px 9px;background-repeat:no-repeat;cursor:pointer;height:30px;opacity:1;padding:0;width:31px} .pagingDisabled .arrowLeft a,.pagingDisabled .arrowRight a{opacity:.65;border-color:#a2a2a2;border-color:rgba(162, 162, 162, .55)} .fbPhotoSnowbox .pagingReady .arrowLeft a:hover,.fbPhotoSnowbox .pagingReady .arrowRight a:hover{border-color:#7489b6;border-color:rgba(59, 89, 152, .55)} .fbPhotoSnowbox .arrowRight a{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yi/r/KsODvVMV-0n.png)} .fbPhotoSnowbox .pagingReady .arrowLeft a:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yC/r/B_qduFj1etl.png)} .fbPhotoSnowbox .pagingReady .arrowRight a:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y-/r/lWUUm37r11D.png)} .fbPhotoSnowbox .pagingReady .arrowLeft a:active{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yL/r/U1-etAWzQ4t.png)} .fbPhotoSnowbox .pagingReady .arrowRight a:active{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yj/r/wU__r0m45JU.png)} .fbPhotoSnowbox .fbPhotoSnowboxInfo{background:#fff;height:75px;padding:20px 0;width:100%} .dataLoading .fbPhotoSnowboxInfo{display:none} .fbPhotoSnowboxInfo .fbPhotoUfiCol,.fbPhotoSnowboxInfo .fbPhotoDataCol,.fbPhotoSnowboxInfo .fbPhotoAdsCol{padding:0 0 10px} .fbPhotoSnowboxInfo .fbPhotoUfiCol{width:60%} .fbPhotoSnowboxInfo .fbPhotoDataCol{max-width:280px;width:33%} .adsOnSide .fbPhotoSnowboxInfo .fbPhotoDataCol{max-width:170px;width:20%} .fbPhotoSnowboxInfo .fbPhotosPhotoUfi{width:auto} .fbPhotoSnowbox .fbPhotoSnowboxInfo .fbPhotoContributor{width:95%;max-width:515px;min-width:390px} .fbPhotoSnowboxInfo .photoDetailsContainer{width:100%;max-width:280px;float:right} .fbPhotoSnowboxInfo .ego_section{margin-bottom:0} .fbPhotoSnowboxInfo .ego_section .uiHeader{display:none} .fbPhotoSnowboxInfo .fbPhotoAdsCol .fbPhotoSnowboxAdsSide{display:none;float:right;width:170px} .adsOnSide .fbPhotoAdsCol .fbPhotoSnowboxAdsSide{display:block} .fbPhotoSnowboxAdsSide .ego_column{width:100%} .fbPhotoSnowboxAdsBottom{border-top:1px solid #e5e5e5;width:100%} .fbPhotoSnowboxAds.fbPhotoSnowboxAdsNone .fbPhotoSnowboxAdsSponsored,.adsOnSide .fbPhotoSnowboxAdsBottom{display:none} .fbPhotoSnowboxAdsBottom .fbEmuVertical .image img,.fbPhotoSnowboxAdsBottom .fbEmuVertical .image i{max-height:72px;max-width:100px;padding-top:3px} .fbPhotoSnowboxAdsBottom .fbEmuVertical .image{display:block;float:left;margin-right:8px;max-width:100px;width:42%} .fbPhotoSnowboxAdsBottom .fbEmuVertical .body{display:table-cell;vertical-align:top;width:58%} .fbPhotoSnowboxAdsBottom .fbEmuVertical .inline{float:left} .fbPhotoSnowboxAds .fbPhotoSnowboxAdsSponsored{float:right;text-align:right;width:95%} .dataLoading .fbPhotoSnowboxInfo .fbPhotoUfiCol,.dataLoading .fbPhotoSnowboxInfo .fbPhotoDataCol,.dataLoading .fbPhotoSnowboxInfo .fbPhotoAdsCol{display:none} a.uiMediaThumbTagging{cursor:default} a.uiMediaThumbTagging i,a.uiMediaThumbTagging .taggerOverlay{cursor:crosshair} a.uiMediaThumbTagging .taggerOverlayDisabled{cursor:default} a.uiMediaThumbTagging:hover,a.uiMediaThumbTagging:active,a.uiMediaThumbTagging:focus{border-color:#ccc;text-decoration:none} .tagWrapper{position:relative;overflow:hidden} a.uiMediaThumbTagging .taggerOverlay .lockBar{background-color:#222;color:#fff;left:10px;padding-left:21px;position:absolute;top:86px;opacity:.9} a.uiMediaThumbTagging .taggerOverlay .lockIcon{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/LIMS6JdvvOD.png);background-repeat:no-repeat;display:inline-block;height:15px;left:6px;position:absolute;top:5px;width:15px} a.uiMediaThumbTagging .taggerOverlay .blackwash{background:#000;height:100%;left:0;opacity:.7;position:absolute;top:0;width:100%} a.uiMediaThumbTagging .taggerOverlay .highlightBox{border:2px solid #fff;opacity:.3;position:absolute} .fluploader_swfdiv{left:0;position:absolute;top:0} .fluploaderButtonLoading{padding-right:4px} .fluploaderButtonLoading .img{display:none} .fluploaderButtonLoading input{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y_/r/464P0IE2gPV.gif) no-repeat 0 1px;color:#5c5c5c;opacity:.5;padding-left:15px;position:relative;right:2px} .fluploaderConfirmButtonLoading input{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/GsNJNwuI-UM.gif) no-repeat 0 5px;color:#fff;opacity:1;padding-left:20px} .flashUploaderOverlay.uiOverlayPageWrapper{background-color:#e7ebf3;background-color:rgba(231, 235, 243, .92)} .flashUploaderOverlayButton{display:inline-block;position:relative;vertical-align:bottom} .composerPhotoGrid .flashUploaderOverlayButton{display:block} .flashUploaderOverlayButton.async_saving{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yk/r/LOOn0JtHNzb.gif) no-repeat center center} .flashUploaderOverlayButton.async_saving div,.flashUploaderOverlayButton.async_saving a{opacity:.5} .flashUploaderOverlayButton a.selectOver,.flashUploaderOverlayButton .selectOver a.attachmentLink{text-decoration:underline} .composerPhotoGrid .flashUploaderOverlayButton a.selectOver{background-color:#ebeef4} .flashUploaderOverlay .uiOverlayContent{padding-bottom:25px} .flashUploaderOverlay .uiOverlayCancelButton{display:none} .flashUploaderOverlay .headerBox{border-color:#c4cde0;border-bottom-color:rgb(245,245,245);border-bottom-color:rgba(0,0,0,0.1);border-radius:3px 3px 0 0;left:-1px;margin:0;position:absolute;right:-1px;top:-1px;z-index:1} .flashUploaderOverlay .albumInfoFields{width:330px} .flashUploaderOverlay .albumMetaFields{margin-left:110px} .flashUploaderOverlay .albumMetaPlacesInput{float:right;margin-right:20px;width:280px} .flashUploaderOverlay .albumInfoFields input{border-color:#fff;outline:none;-o-transition:border-color .2s} .flashUploaderOverlay .albumInfoFields input:hover,.flashUploaderOverlay .albumInfoFields input:focus{border-color:#bec7da} .flashUploaderOverlay .albumInfoFields .photoAlbumTitleInput:focus + .photoAlbumDescInput,.flashUploaderOverlay .albumInfoFields .photoAlbumTitleInput:hover + .photoAlbumDescInput:focus{border-top-color:transparent} .flashUploaderOverlay .fbPhotoBulkEditor{margin:65px -15px 0 -15px} .flashUploaderOverlay .fbPhotoBulkEditor .editablePhoto{margin-bottom:17px;margin-left:17px} .flashUploaderOverlay .headerFixed{border-bottom-color:#b0bbd7;border-radius:0;left:50%;margin-left:-483px;position:fixed;right:auto;width:946px} .flashUploaderOverlay .addPhotosEnabled .fakeButton,.flashUploaderOverlay .addPhotosDisabled .realButton{position:absolute;top:-10000px} .flashUploaderOverlay .footerBox{border-color:#c4cde0;border-radius:0 0 3px 3px;border-top-color:rgb(245,245,245);border-top-color:rgba(0,0,0,0.1);left:-1px;position:absolute;right:-1px} .footerBox .footerInner{width:100%} .flashUploaderOverlay .footerFixed{bottom:0;border-bottom:0;border-radius:0;border-top-color:#c4cde0;left:50%;margin-left:-483px;margin-top:50px;position:fixed;width:926px} .flashUploaderOverlay .titleInput input,.flashUploaderOverlay .descriptionInput{width:100%} .flashUploaderOverlay .placesTypeaheadCell{width:280px} .flashUploaderOverlay .progressLinks{padding-top:3px} .flashUploaderOverlay .progressWrap{width:120px} .showEmptyState .progressWrap{display:none} .flashUploaderOverlayFooter .quality{display:inline-block;left:10px;position:relative} .flashUploaderOverlayFooter .quality label{color:#666} .presenceIndicator{display:inline-block} .presenceIndicator .uiTooltipWrap{margin-left:-5px} .presenceIndicator i{display:inline-block;width:7px;height:14px} .presenceIndicator .online{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y1/r/q02nVgnK52c.png);background-repeat:no-repeat;background-position:-493px -64px} .presenceIndicator .mobile{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y1/r/q02nVgnK52c.png);background-repeat:no-repeat;background-position:-34px -49px;height:12px;width:8px} .presenceIndicator .offline{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y1/r/q02nVgnK52c.png);background-repeat:no-repeat;background-position:-493px -79px} .audienceSelector{text-align:left} .audienceSelectorNoTruncate,.audienceSelectorNoTruncate .uiSelectorButton,.audienceSelectorNoTruncate .uiSelectorButton:active,.audienceSelectorNoTruncate .uiSelectorButton:focus .audienceSelectorNoTruncate .uiSelectorButton:hover,.audienceSelectorNoTruncate .uiButtonSuppressed:active,.audienceSelectorNoTruncate .uiButtonSuppressed:focus,.audienceSelectorNoTruncate .uiButtonSuppressed:hover,.audienceSelectorNoTruncate .uiSelectorButton .uiButtonText{max-width:none !important} .audienceSelector .uiSelectorBigButtonLabel .uiButtonText{overflow:visible} .audienceSelector .uiSelectorButton .customimg{margin-left:-2px;margin-right:2px} .audienceSelector .uiButtonNoText .customimg{margin-right:-5px} .showSecondaryOptions li,.audienceSelector .secondaryOption,.audienceSelector .returnOption{display:none} .showSecondaryOptions li,.audienceSelector .secondaryOption,.audienceSelector .returnOption{display:none} .showSecondaryOptions .returnOption,.showSecondaryOptions .secondaryOption,.group .groupOption,.friendList .friendListOption{display:block} .friendList .groupOption,.group .friendListOption{display:none} .showSecondaryOptions .uiSelectorMenu{max-height:214px;overflow-y:auto} .composerAudienceWrapper .uiSelectorButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y1/r/q02nVgnK52c.png);background-repeat:no-repeat;background-position:right -1px} .composerAudienceWrapper .uiButton .uiButtonText{color:gray;font-weight:normal} .composerAudienceWrapper .audienceSelector .uiSelectorButton .customimg{opacity:.5} .composerAudienceWrapper:hover .uiButton .uiButtonText{color:#333} .composerAudienceWrapper .openToggler .uiButton .uiButtonText{color:#fff} .composerAudienceWrapper:hover .audienceSelector .uiSelectorButton .customimg,.composerAudienceWrapper .openToggler .uiSelectorButton .customimg{opacity:1} .composerAudienceWrapper .selected .plusLabel{color:#fff} .fbPrivacyAudienceIndicator .indicator{color:#333} .fbPrivacyAudienceIndicator .audienceIcon{margin-left:-18px} .fbPrivacyAudienceIndicator:hover{text-decoration:none} .fbAudienceHover{position:relative;top:2px} .fbProfileByline{width:493px;margin-top:4px;line-height:15px} .fbProfileBylineFragment, .fbProfileNonIconBylineFragment{margin-right:8px;color:#666} .fbProfileBylineIcon{margin-bottom:1px;vertical-align:bottom} .fbProfileLoggedOutByline{width:493px;margin-top:1px;line-height:14px} .fbLongBlurb{margin-right:8px;color:#666;padding-bottom:3px} .fbHubsTypeaheadThrobber{display:none;position:absolute;right:6px;top:5px} .typeaheadLoading .fbHubsTypeaheadThrobber{display:block} .fbProfileExperience .hubPhoto{margin-right:7px} .fbProfileExperience .wishlistPhoto{height:150px;margin-right:7px;width:150px} .fbProfileExperience .experienceContent{line-height:14px;padding-top:1px} .fbProfileExperience .experienceContentLarge{font-size: 13px;font-weight:bold;line-height:30px;padding-top:22px;padding-left:8px} .fbProfileExperience .experienceBody,.fbProfileExperience .subexperienceContent{margin-top:2px} .fbProfileExperience .subexperiences{margin:6px 0 0 15px} .fbProfileExperience .subexperience{padding-bottom:1px} .fbProfileExperience .subexperienceContent{width:273px} .showAllExperiences .revealerArrow{margin:0 0 2px 5px} .showAllExperiences:hover a,.showAllExperiences .mediaRevealer:hover{text-decoration:none} .profileInfoTable .highlight{background-color:#fffbe4} .profileInfoTable .fbProfileExperience.highlight{left:-5px;padding:5px 0 5px 5px;position:relative;top:-5px} .profileInfoTable .afterHighlight{margin-top:-10px} .profileInfoTable .highlight .complimentsBlingBox{margin-right:-5px} li.showAllExperiences{border-top:1px solid #e5eaf1;padding-top:7px;text-align:center} .showAllExperiences:hover{border-top-color:#d8dfea;background-color:#eceff4;cursor:pointer} .showAllExperiences a{display:inline-block;padding-bottom:8px} .fbProfileInfoExpandedRowWrapper .fbProfileExperience{text-align:left} .fbProfileInfoExpandedRowWrapper .revealerWrapper{margin-top:0} .fbProfileInfoWorkRowWrapper .fbProfileExperience{text-align:left} .fbProfileInfoEducationRowWrapper .fbProfileExperience{text-align:left} .profileHeader{margin-top:4px} .profileHeaderMain{width:513px} .profileHeaderMain h1{display:inline;margin-right:5px} .profileHeaderMain .profileHeaderButtons{display:inline-block;vertical-align:top;white-space:nowrap} .profileHeaderMain .profileHeaderButton{margin-right:5px;z-index:3} .profileHeaderMain #profile_connect_text .uiButton,.profileHeaderMain #profile_connect{margin-left:0} .profileHeader .mainButtonSpan{display:inline-block;vertical-align:top} .profileHeader .headerFormButton{display:inline} .profileHeader .headerActions{text-align:right} .profileHeader .subtitle{line-height:15px;padding-top:4px;width:490px} .profileHeader .profileActions{float:left;margin-top:3px} .profileHeader .profileCallButton .img{margin-top:2px} .profileHeader .fadedDespressedButton{opacity:.6} .ginormousProfileName{color:#1c2a47;font-size: 20px} .profileArrow{margin:0 5px 2px 6px} .fbx_above_html #above_the_profile{width:auto;padding-right:0} .profile-picture{background-color:#fff;display:block;overflow:hidden;position:relative;width:180px} .profile-picture:hover{text-decoration:none} .profile-picture:hover .edit_profilepicture{display:block} .profile-picture img{display:block;margin:auto;max-width:180px} .profile-picture span{background-color:#000;height:800px;position:absolute;top:0;right:0;width:1px;opacity:.30} .edit_profilepicture{background:#000;color:#fff;display:none;height:20px;opacity:.7;padding:6px 7px 0 23px;position:absolute;right:1px;top:0} .edit_profilepicture:hover{opacity:.95} span.edit_profilepicture_icon{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yA/r/QbfalTL4SQ2.png) no-repeat left 4px;height:18px;left:7px;opacity:.95;position:absolute;top:4px;width:18px} .profile-friends .profileFriendsContent{height:42px;line-height:14px;overflow:hidden} .profile-friends .profileFriendsText{overflow:hidden;text-overflow:ellipsis;width:102px;word-wrap:normal} .profile-friends .profileFriendsByline{width:172px} .profileFriendsByline{white-space:nowrap} .profileFriendsNetwork{white-space:nowrap} .profile-left-nav-facepile{margin:2px 6px 14px 6px} .relationshipSection:hover .fbProfileNavHeaderEditButton{display:block} .relationshipSection .fbProfileNavHeaderEditButton{display:none} .profile-friends{margin:7px 6px 15px} .profile-friends li{margin-bottom:7px} .profile-friends li .UIImageBlock_Content{padding-top:3px} .profile-friends-footer{border-top:1px solid #cdcdcd;padding:8px 10px 0 6px} .profile-friends-footer li:first-child{padding-top:0} div.profile-pagelet-section{margin-bottom:24px} .profile .fbx_profile_tab_loading{background:no-repeat url(http://static.ak.fbcdn.net/rsrc.php/v1/y9/r/jKEcVPZFk-2.gif) center center;padding:150px 0} .fbx .profileInfoTable th.label{padding-right:8px;width:80px} .fbx .nuxBanner .description{width:450px} .mediaRow .mediaPortrait{line-height:14px;padding:0;overflow:hidden;width:75px} .mediaRow .mediaPortrait .photo{height:75px;margin-bottom:5px} .mediaRow .mediaPortrait .mediaPageName{overflow:hidden;max-height:28px;word-wrap:break-word} .mediaRowWrapper{text-align:center} .mediaRowRevealer{line-height:12px} .inCommonSectionList{margin-bottom:1px} .profileInfoTable th.label{color:#999;font-weight:bold;line-height:15px;text-align:left;vertical-align:top;width:90px} .nile_profile .profileInfoTable th.label{font-size: 11px;line-height:16px} .profileInfoTable .greenLink{color:#060} .profileInfoTable td.data{line-height:15px} .profileInfoTable td.rightCol{padding:3px 0 0 35px;text-align:right;width:50px} .profileInfoTable .sampleImageCaption{text-align:center;width:50px;word-wrap:break-word} .profileInfoTable .uiInfoTable .label{color:#666;font-size: 11px;font-weight:normal;padding-top:0} .profileInfoTable .uiInfoTable .data{padding-top:0} .profileInfoTable .throbber{display:none} .profileInfoTable .async_saving .throbber{display:block} .showOtherMasher:hover{background-color:#edeff4;cursor:pointer} .showOtherMasher a{display:block;padding-bottom:8px;padding-top:6px} .showOtherMasher:hover a{text-decoration:underline} .profileTagIcon{margin:-2px 0 0 5px;vertical-align:middle} .timelineMegaphoneFriends{max-width:245px} .fbProfileEditLink{text-align:left;background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yh/r/_S0u1wZb3JC.png) no-repeat left 2px;padding-left:14px} .fbProfileLargePortrait{margin:2px 0 0 1px;width:75px;word-wrap:break-word} .fbProfileLargePortrait .photoCrop{background:#eee;height:75px;overflow:hidden;position:absolute;width:75px} .fbProfileLargePortrait .photoWrapper{height:79px} .fbProfileLargePortraitImgScaleHeight{height:75px;position:relative} .fbProfileLargePortraitImgScaleWidth{position:relative;width:75px} .fbProfileLargePortraitImgSmall{background-position:center 10%} .fbProfileLargePortraitImgMedium{background-position:center 15%} .fbProfileLargePortraitImgLarge{background-position:center 20%} .fbProfileLagePortraitImgHuge{background-position:center 30%} .fbProfilePhotoBar{margin-left:-2px} .fbProfilePhotoBar li{float:left;line-height:0;padding-left:2px} .fbProfilePhotoStrip{overflow:hidden;width:493px} .fbProfilePhotoStrip .fbProfilePhotoBar{display:block;width:900px} a.fbProfilePhotoThumb, a.fbProfilePhotoThumb:hover{border:none;padding:0} a.fbProfilePhotoThumb i{height:68px;width:97px} div.fbProfilePhotoThumbEmpty{background-color:#f2f2f2;border-top:1px solid #d9d9d9;height:67px;width:97px} .fbProfileThumbRemove{position:relative} .fbProfileThumbRemoveX{display:none;right:3px;position:absolute;top:2px} .fbProfileThumbRemove:hover .fbProfileThumbRemoveX,.async_saving .fbProfileThumbRemoveX,.fbProfileThumbRemoveDialog{text-decoration:none;display:block} .async_saving .fbProfileThumbRemoveX .fbProfilePhotoClose,.fbProfileThumbRemoveDialog .fbProfilePhotoClose{background-position:left -22px} .fbProfileThumbDontShowAgain label{font-weight:normal;vertical-align:text-bottom} .fbProfileSuppressConfirm .async_saving{display:none} .async_saving .fbProfilePhotoThumb{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yk/r/LOOn0JtHNzb.gif) no-repeat center center} .async_saving .fbProfilePhotoThumb i{opacity:.3} .fbProfileScalableThumb{overflow:hidden} .fbProfileScalableThumb .cropped{background-repeat:no-repeat;background-position:top center;display:block} .fbProfileNavHeaderEditButton{width:18px;height:18px;display:block} .fbProfileNavHeaderEditButton:hover .navHeaderPencil{opacity:.8} .fbProfileNavHeaderEditButton:active .navHeaderPencil{opacity:1} .fbxLeftNavHeaderActionLists{position:relative;top:-2px;margin-bottom:-7px} #profile_minifeed .reportHide{display:none} #profile_minifeed.uiReportStream .reportHide{display:block} #profile_minifeed.uiReportStream .uiStreamHide, #profile_minifeed.uiReportStream .uiStreamHide .uiSelectorButton{position:static} .fbProfileStream .uiStreamMessage .passiveName{font-weight:normal} .fbProfileStream .uiStreamMessage a.passiveName{font-weight:bold} .standardLayout .filterBox{padding:6px 7px 6px 5px} .standardLayout .filterBox table{border-collapse:collapse;width:100%} .standardLayout .filterBox td{padding:0} .standardLayout .fullWidth,.standardLayout .uiTypeahead{width:100%} .standardLayout .hasSelector .uiTypeahead .wrap{border-left:0} .standardLayout .hubsLoading .throbber{display:block} .standardLayout .hubsLoading .selected .uiCloseButton{display:none} .switchableLayout .buttonsCell{padding-left:6px} .switchableLayout .hasSelector .uiTypeahead .wrap{border-right:0} .fbProfileBrowserList .fbProfileBrowserListItem{padding:8px 0} .fbProfileBrowserList .async_saving{position:relative} .fbProfileBrowserList .async_saving .loadingIndicator{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/GsNJNwuI-UM.gif) no-repeat 0 0;height:11px;left:50%;margin:-5px 0 0 -6px;position:absolute;top:50%;width:16px} .fbProfileBrowserList .async_saving .auxiliaryButton{visibility:hidden} .normal .gridList,.grid .normalList,.normal .largeList,.large .normalList{top:150%;left:-3000px;position:fixed} .fbProfileBrowserLargeList li:first-child, .fbProfileBrowserLargeList .expandedList li:first-child{border-top:none;padding:0} .listView .throbber,.showListviewLoading .lists{display:none} .showListviewLoading .throbber{display:block;margin:0 auto;position:relative;top:40px} .limitReached .checkableListItem{opacity:.3} .limitReached .selectedCheckable{opacity:1} .hiddenList{top:150%;left:-3000px;position:fixed !important} .fbProfileBrowserListContainer .expandedList li:first-child{border-top:1px solid #e9e9e9} .fbProfileBrowserSummaryBox{border-bottom:1px solid #ccc} .hideSummary .fbProfileBrowserSummaryBox{display:none} .fbProfileBrowserTypeahead .nameTypeaheadThrobber{display:none;position:absolute;right:6px;top:5px} div.fbProfileBrowserTypeahead .clear, .fbProfileBrowser .loading .nameTypeaheadThrobber{display:block} .fbProfileBrowser .loading .clear{display:none} .fbProfileBrowserViewButtons{white-space:nowrap} .fbProfileBrowserViewButtons .profileBrowserViewButton{margin-left:0} .fbProfileBrowserViewButtons .normal{border-right:0} .fbProfileBrowserViewButtons .profileBrowserViewButton .customimg{margin-top:2px} .fbQuestionsBlingBox{padding:3px 4px;margin-left:-1px;margin-right:-1px;color:#3B5998 !important} .fbQuestionsBlingBox:hover{text-decoration:none;background-color:#eceff5;border-bottom:1px solid #e5eaf1} .fbQuestionsBlingBox span{line-height:11px;margin-left:3px} .fbQuestionsBlingBox .img{margin-left:5px} .fbQuestionsBlingBox .img:first-child{margin-left:0} .fbQuestionsBlingBox .img{vertical-align:text-top} .fbQuestionFollowLink .followBackup{display:none} .fbQuestionFollowLink .followMain{display:inline;margin-left:0} .pollOptions{width:100%;table-layout:fixed;border-spacing:1px 0 0 0} .pollOptions .pollRadioBtn{position:relative;top:2px;padding-left:3px;width:26px;vertical-align:top} .pollOptions .fbOpinionPollHighlight .pollRadioBtn{border-left:2px solid #a8b2ce;width:24px;padding-left:1px} .pollOptions .pollRadioBtn,.pollOptions .pollRadioBtn input{cursor:pointer} .pollOptions .pollResultsFacepile{width:171px;vertical-align:top;padding-top:2px} .pollOptions .pollResultsFacepile .uiFacepile{padding-left:2px} .pollResultsFacepile .uiTooltipWrap{margin:0 3px} .pollOptions .selectedPollOption div,.pollOptions .pollResultsBar:hover div,.pollOptions .pollRadioBtn:hover + .pollResultsBar div{border-color:#3b5998} .pollOptions .pollRadioBtn:hover + .pollResultsBar .auxlabel,.pollOptions .pollResultsBar:hover .auxlabel,.pollOptions .pollRadioBtn:hover + .pollResultsBar .fbQuestionsPollAttachment,.pollOptions .pollResultsBar:hover .fbQuestionsPollAttachment{visibility:visible} .pollOptions .pollResultsBar{padding:2px 0} .pollOptions .fbOpinionPollHighlight{background-color:#edeff4} .fbQuestionsPollResultsBar{position:relative;border:1px solid;border-color:#a4a4a4 #bbb #d5d5d5;padding-top:3px;padding-bottom:6px;background-color:#fff;zoom:1} .fbQuestionsPollResultsBar .shaded{position:absolute;background-color:#d8dfea;height:100%;top:-1px;left:-1px;border:solid #93a4c7;border-width:1px 0 1px 1px} .fbQuestionsPollResultsBar .full{border-width:1px} .fbQuestionsPollResultsBar .label{top:1px;position:relative;line-height:13px;overflow:hidden;color:#3b5998} .fbQuestionsPollResultsBar .auxlabel{visibility:hidden;position:absolute;right:0;top:0;height:100%;background-color:#fff} .fbQuestionsPollResultsBar .auxlabel span{position:relative;top:4px} .fbQuestionsPollResultsBar .auxlabelWithAttachment,.fbQuestionsPollResultsBar .fbQuestionsPollClickTargetWithAttachment{padding-right:25px} .fbQuestionsPollResultsBar .fbQuestionsPollAttachmentContainer{margin:3px;position:absolute;right:0;top:0;z-index:1} .fbQuestionsPollResultsBar .fbQuestionsPollAttachment{height:16px;visibility:hidden;width:16px} .fbQuestionsPollResultsBar .fbQuestionsPollAttachmentIcon:hover{background-color:#6d84b4;border-radius:2px} .fbQuestionsPollResultsBar .fbQuestionsPollClickTarget{position:absolute;top:-1px;left:-1px;right:-1px;cursor:pointer;z-index:1;height:100%} .fbRequestList .async_saving{position:relative} .fbRequestList .loadingIndicator{display:none;top:50%;left:50%;margin:-5px 0 0 -8px;position:absolute} .fbRequestList .async_saving .loadingIndicator{display:block} .fbRequestList .async_saving .addButtonWrapper,.fbRequestList .async_saving .uiButton{visibility:hidden} div.fbRequestList .addButtonWrapper{display:inline-block;margin-right:5px;text-align:left} .fbRequestList .addButtonWrapper .FriendListMenu li,#fbRequestsFlyout .addButtonWrapper .FriendListMenu li{overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap} .fbRequestList .networkContextWrapper{margin:2px 0} .sp_16a1or{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yg/r/anEeckMm1yG.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_f605c2{background-position:-16px -0px} .selected .sx_f605c2{background-position:-0px -0px} .sx_78a84d{background-position:-16px -17px} .selected .sx_78a84d{background-position:-0px -17px} .sx_57b19f{background-position:-16px -34px} .selected .sx_57b19f{background-position:-0px -34px} .sx_4bf0c6{background-position:-16px -51px} .selected .sx_4bf0c6{background-position:-0px -51px} .sx_766b47{width:9px;height:13px;background-position:-0px -68px} .sp_19xbbr{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yE/r/D4nG-K9BXbS.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_274470{background-position:-16px -0px} .selected .sx_274470{background-position:-0px -0px} .sx_0ba8f7{background-position:-16px -17px} .selected .sx_0ba8f7{background-position:-0px -17px} .sx_5788e8{background-position:-16px -34px} .selected .sx_5788e8{background-position:-0px -34px} .sx_932bfe{background-position:-16px -51px} .selected .sx_932bfe{background-position:-0px -51px} .sx_0e3bf2{background-position:-16px -68px} .selected .sx_0e3bf2{background-position:-0px -68px} .sx_814021{background-position:-16px -85px} .selected .sx_814021{background-position:-0px -85px} .sp_1l19wn{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y4/r/0GpksuG3F__.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_4d26cd{background-position:-16px -0px} .selected .sx_4d26cd{background-position:-0px -0px} .sx_70fcc7{background-position:-0px -17px} .sx_981da1{background-position:-0px -34px} .sx_7e428f{background-position:-0px -51px} .sp_2xg6kf{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y6/r/T30EiQuGJ46.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_3c8808{width:7px;height:10px;background-position:-24px -17px} .sx_12a34b{width:17px;background-position:-17px -0px} .selected .sx_12a34b{background-position:-0px -0px} .sx_232d3f{width:11px;height:14px;background-position:-11px -50px} .selected .sx_232d3f{background-position:-0px -50px} .sx_e4e91a{background-position:-0px -65px} .sx_0c6b88{background-position:-17px -65px} .sx_3fc94b{background-position:-0px -82px} .sx_f4e078{width:23px;height:32px;background-position:-0px -17px} .sp_4oo2ai{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yM/r/nRKondHW4RO.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_98a113{width:12px;height:11px;background-position:-0px -323px} .sx_bb9439{background-position:-0px -306px} .sx_2215cd{background-position:-0px -289px} .sx_1e0232{background-position:-0px -272px} .sx_bebbeb{background-position:-0px -255px} .sx_20c62c{background-position:-0px -238px} .sx_f550b8{background-position:-0px -221px} .sx_2db1b3{background-position:-0px -204px} .sx_e33aa9{background-position:-0px -187px} .sx_727ce3{background-position:-0px -170px} .sx_c7183e{background-position:-0px -153px} .sx_3a0b70{background-position:-0px -136px} .sx_47a1d0{background-position:-0px -119px} .sx_95ac3a{background-position:-0px -102px} .sx_554a3c{background-position:-0px -85px} .sx_7e5e55{background-position:-0px -68px} .sx_86743f{background-position:-0px -51px} .sx_6cdcff{background-position:-0px -34px} .sx_8783da{background-position:-0px -17px} .sx_4a9a6f{background-position:-0px -0px} .sp_51cg4r{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_bab05f{background-position:-49px -349px} .selected .sx_bab05f{background-position:-33px -349px} .sx_4a3199{width:7px;height:12px;background-position:-93px -349px} .sx_179e0e{width:7px;height:7px;background-position:-41px -141px} .sx_b9f61a{width:14px;height:14px;background-position:-16px -494px} .sx_2d3653{width:17px;background-position:-67px -297px} .selected .sx_2d3653{background-position:-50px -297px} .sx_ceefaf{width:17px;background-position:-67px -280px} .selected .sx_ceefaf{background-position:-50px -280px} .sx_c4d60d{width:10px;height:10px;background-position:-83px -511px} .sx_a5e871{width:10px;height:10px;background-position:-68px -398px} .sx_ba28af{width:10px;height:10px;background-position:-79px -398px} .sx_59c690{width:13px;height:10px;background-position:-54px -398px} .sx_50fc55{width:17px;background-position:-83px -124px} .selected .sx_50fc55{background-position:-66px -124px} .sx_3f432a{width:17px;background-position:-48px -124px} .selected .sx_3f432a{background-position:-31px -124px} .sx_7f0966{width:17px;background-position:-85px -0px} .selected .sx_7f0966{background-position:-68px -0px} .sx_2aaf46{width:11px;height:14px;background-position:-92px -34px} .selected .sx_2aaf46{background-position:-81px -34px} .sx_b487d5{width:5px;height:14px;background-position:-98px -411px} .selected .sx_b487d5{background-position:-93px -411px} .sx_fe11c1{width:8px;height:14px;background-position:-33px -411px} .selected .sx_fe11c1{background-position:-25px -411px} .sx_75e255{width:10px;height:14px;background-position:-91px -86px} .selected .sx_75e255{background-position:-81px -86px} .sx_c0304d{width:8px;height:14px;background-position:-50px -411px} .selected .sx_c0304d{background-position:-42px -411px} .sx_d5699e{width:12px;height:14px;background-position:-12px -411px} .selected .sx_d5699e{background-position:-0px -411px} .sx_261919{width:9px;height:12px;background-position:-94px -299px} .selected .sx_261919{background-position:-85px -299px} .sx_ff765b{width:10px;height:14px;background-position:-91px -71px} .selected .sx_ff765b{background-position:-81px -71px} .sx_9b84fe{width:8px;height:14px;background-position:-67px -411px} .selected .sx_9b84fe{background-position:-59px -411px} .sx_310fa5{width:11px;height:14px;background-position:-92px -19px} .selected .sx_310fa5{background-position:-81px -19px} .sx_1d732c{background-position:-34px -443px} .sx_377b8c{width:5px;height:3px;background-position:-97px -49px} .sx_a48743{width:10px;height:10px;background-position:-90px -398px} .sx_3d57e5{background-position:-51px -443px} .sx_7e12c4{width:10px;height:12px;background-position:-91px -379px} .selected .sx_7e12c4{background-position:-81px -379px} .sx_738840{width:10px;height:12px;background-position:-91px -366px} .selected .sx_738840{background-position:-81px -366px} .sx_60eb35{width:10px;height:12px;background-position:-91px -101px} .selected .sx_60eb35{background-position:-81px -101px} .sx_8f8882{background-position:-82px -332px} .selected .sx_8f8882{background-position:-66px -332px} .sx_eac848{width:6px;height:11px;background-position:-76px -511px} .selected .sx_eac848{background-position:-70px -511px} .sx_cb3d35{width:13px;height:12px;background-position:-79px -349px} .selected .sx_cb3d35{background-position:-66px -349px} .sx_bb380b{width:13px;height:12px;background-position:-13px -398px} .selected .sx_bb380b{background-position:-0px -398px} .sx_9a132f{width:13px;height:12px;background-position:-40px -398px} .selected .sx_9a132f{background-position:-27px -398px} .sx_1056c0{background-position:-49px -332px} .selected .sx_1056c0{background-position:-33px -332px} .sx_3ce7c8{background-position:-16px -332px} .selected .sx_3ce7c8{background-position:-0px -332px} .sx_908ea2{background-position:-82px -315px} .selected .sx_908ea2{background-position:-66px -315px} .sx_706ac5{background-position:-49px -315px} .selected .sx_706ac5{background-position:-33px -315px} .sx_edaedc{background-position:-16px -315px} .selected .sx_edaedc{background-position:-0px -315px} .sx_e72523{background-position:-68px -443px} .sx_110f25{background-position:-16px -349px} .selected .sx_110f25{background-position:-0px -349px} .sx_091bed{background-position:-85px -443px} .sx_f1364c{width:8px;height:14px;background-position:-84px -411px} .selected .sx_f1364c{background-position:-76px -411px} .sx_04ce88{background-position:-0px -460px} .sx_985cf2{background-position:-17px -460px} .sx_2fc750{background-position:-34px -460px} .sx_ecad54{background-position:-51px -460px} .sx_9b6295{background-position:-68px -460px} .sx_803590{background-position:-85px -460px} .sx_42d277{background-position:-0px -477px} .sx_2061f9{background-position:-17px -477px} .sx_88960d{background-position:-34px -477px} .sx_44e5d7{background-position:-51px -477px} .sx_ff8d0b{background-position:-68px -477px} .sx_9bf119{background-position:-85px -477px} .sx_7758fb{background-position:-17px -443px} .sx_452b3d{background-position:-0px -443px} .sx_5075ed{width:18px;height:18px;background-position:-49px -0px} .sx_5075ed:hover{background-position:-31px -0px} .sx_2e7699{width:15px;background-position:-0px -494px} .sx_c5ddda{background-position:-68px -426px} .sx_1d92f1{background-position:-51px -426px} .sx_eb3c0a{background-position:-34px -426px} .sx_87c8cc{width:4px;height:4px;background-position:-97px -53px} .sx_810c36{width:24px;height:31px;background-position:-25px -282px} .sx_567d5b{width:24px;height:31px;background-position:-0px -282px} .sx_cfe62d{width:24px;height:31px;background-position:-50px -247px} .sx_6b867d{width:24px;height:31px;background-position:-25px -247px} .sx_a77ba8{width:24px;height:31px;background-position:-31px -91px} .sx_8e9d0c{width:24px;height:31px;background-position:-56px -21px} .sx_31caef{width:24px;height:31px;background-position:-31px -21px} .sx_9b926c{width:24px;height:31px;background-position:-56px -91px} .sx_56ab7e{width:24px;height:31px;background-position:-75px -247px} .sx_ec77bd{width:24px;height:31px;background-position:-0px -247px} .sx_3998ba{width:24px;height:31px;background-position:-31px -56px} .sx_5d3073{width:24px;height:31px;background-position:-56px -56px} .sx_b44c23{width:19px;height:5px;background-position:-81px -114px} .sx_8b9fce{width:11px;height:12px;background-position:-0px -525px} .sx_6eb116{width:30px;height:150px;background-position:-0px -0px} .sx_5b1ecc{width:25px;height:31px;background-position:-1px -366px} .sx_3e5738{width:25px;height:31px;background-position:-28px -366px} .sx_d2b8c7{width:25px;height:31px;background-position:-55px -366px} .sx_cabd2a{width:7px;height:4px;background-position:-57px -141px} .sx_a916ca{width:7px;height:4px;background-position:-49px -141px} .sx_b1fc9c{width:89px;height:19px;background-position:-7px -219px} .sx_0682dc{width:103px;height:31px;background-position:-0px -151px} .sx_2650aa{width:103px;height:30px;background-position:-0px -183px} .sx_176912{width:18px;height:18px;background-position:-85px -280px} .sx_ca3dea{width:8px;height:13px;background-position:-61px -511px} .sx_8d7ac2{width:9px;height:13px;background-position:-51px -511px} .sx_d02a9d{width:11px;height:13px;background-position:-59px -494px} .sx_7cf95c{width:11px;height:13px;background-position:-71px -494px} .sx_b0a358{width:9px;height:13px;background-position:-41px -511px} .sx_59f50f{width:9px;height:13px;background-position:-31px -511px} .sx_076589{width:10px;height:13px;background-position:-0px -511px} .sx_ceac61{width:10px;height:13px;background-position:-83px -494px} .sx_a968ac{width:9px;height:13px;background-position:-21px -511px} .sx_b063b0{width:9px;height:13px;background-position:-11px -511px} .sx_d7a573{width:9px;height:13px;background-position:-94px -494px} .sx_d49e7a{width:15px;height:21px;background-position:-81px -49px} .sx_db6694{width:13px;height:13px;background-position:-45px -494px} .sx_e8c415{width:13px;height:13px;background-position:-31px -494px} .sx_829296{width:8px;height:10px;background-position:-94px -511px} .sx_c6550c{background-position:-0px -426px} .sx_2d05a1{background-position:-17px -426px} .sx_364149{background-position:-85px -426px} .sx_d8759e{width:9px;height:8px;background-position:-31px -141px} .sp_82j0y8{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yQ/r/hagyLX0EQuD.png);background-repeat:no-repeat;display:inline-block;height:11px;width:11px} .sx_4b9eec{background-position:-0px -12px} .sx_f4458d{width:12px;background-position:-0px -0px} .sp_9rf1fr{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yl/r/5Uqg90MJkQO.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_4f43cd{background-position:-16px -91px} .selected .sx_4f43cd{background-position:-0px -91px} .sx_ab26c5{width:17px;height:17px;background-position:-34px -108px} .sx_441d23{width:11px;height:7px;background-position:-116px -126px} .sx_ca58ed{background-position:-118px -91px} .sx_7b5fce{height:14px;background-position:-85px -126px} .sx_8c608a{background-position:-0px -128px} .sx_271f8b{background-position:-171px -108px} .sx_064030{background-position:-154px -108px} .sx_2e18dd{background-position:-137px -108px} .sx_410ef0{width:9px;height:5px;background-position:-128px -126px} .sx_58efda{background-position:-103px -108px} .sx_aafb92{height:17px;background-position:-52px -108px} .sx_508ca8{background-position:-86px -108px} .sx_ef3e5f{background-position:-169px -91px} .sx_7b736f{background-position:-152px -91px} .sx_e4f14a{height:15px;background-position:-17px -127px} .sx_634ad8{width:13px;height:10px;background-position:-102px -126px} .sx_7118c9{width:12px;height:11px;background-position:-38px -145px} .sx_ccba29{height:18px;background-position:-17px -108px} .sx_49f77c{width:10px;background-position:-14px -145px} .sx_c9138a{height:19px;background-position:-0px -108px} .sx_e46c38{background-position:-67px -91px} .sx_80a7c6{height:15px;background-position:-34px -126px} .sx_a9f45e{width:13px;background-position:-0px -145px} .sx_5c371d{background-position:-50px -91px} .sx_4117ef{height:14px;background-position:-68px -126px} .sx_e165c5{background-position:-33px -91px} .sx_73faa2{height:15px;background-position:-51px -126px} .sx_a7968b{background-position:-84px -91px} .sx_42e573{background-position:-101px -91px} .sx_16aa6e{background-position:-135px -91px} .sx_f27da6{height:17px;background-position:-69px -108px} .sx_8e6b08{background-position:-120px -108px} .sx_d4f1aa{width:12px;height:12px;background-position:-25px -145px} .sx_88540b{width:5px;height:3px;background-position:-138px -126px} .sx_fe9981{width:190px;height:90px;background-position:-0px -0px} .sp_a950vs{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yo/r/rzf94UOvxY9.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_5458d0{width:4px;height:7px;background-position:-0px -86px} .sx_86bcde{width:13px;height:13px;background-position:-34px -68px} .sx_899af0{background-position:-17px -51px} .sx_63079c{background-position:-34px -51px} .sx_acfed7{height:17px;background-position:-0px -51px} .sx_181ef1{background-position:-0px -69px} .sx_7d92f8{background-position:-17px -68px} .sx_c101eb{width:50px;height:50px;background-position:-0px -0px} .sp_auh1be{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yq/r/jN0vTtR_VoS.png);background-repeat:no-repeat;display:inline-block;height:14px;width:15px} .sx_bf4676{width:11px;background-position:-210px -14px} .selected .sx_bf4676{background-position:-199px -14px} .sx_e0041f{width:9px;background-position:-231px -14px} .selected .sx_e0041f{background-position:-222px -14px} .sx_75a545{width:11px;background-position:-187px -14px} .selected .sx_75a545{background-position:-176px -14px} .sx_3afd56{height:16px;background-position:-176px -45px} .sx_db9423{width:16px;height:16px;background-position:-159px -47px} .sx_dfee86{width:16px;height:17px;background-position:-128px -47px} .sx_d86817{width:17px;height:12px;background-position:-241px -14px} .sx_285fb9{background-position:-216px -29px} .sx_bea7ca{width:32px;height:32px;background-position:-112px -14px} .sx_0355b1{width:30px;height:32px;background-position:-145px -14px} .sx_a29df5{width:13px;height:17px;background-position:-145px -47px} .sx_db548a{width:111px;height:74px;background-position:-0px -14px} .sx_702d03{width:19px;height:15px;background-position:-176px -29px} .sx_7fd946{width:19px;height:15px;background-position:-196px -29px} .sx_4adeb0{height:21px;background-position:-112px -47px} .sx_ae895e{width:411px;height:4px;background-position:-0px -9px} .sx_9aa797{width:851px;height:4px;background-position:-0px -0px} .sx_9c7f73{width:411px;height:3px;background-position:-412px -9px} .sx_c82aa2{width:851px;height:3px;background-position:-0px -5px} .sp_b8f7ho{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y1/r/q02nVgnK52c.png);background-repeat:no-repeat;display:inline-block;height:25px;width:16px} .sx_778da9{width:26px;height:24px;background-position:-0px -64px} .sx_dca1fb{width:26px;height:24px;background-position:-27px -64px} .sx_e35ea4{width:26px;height:24px;background-position:-54px -64px} .sx_b22d64{width:20px;height:24px;background-position:-0px -262px} .sx_4902ef{width:14px;height:13px;background-position:-486px -94px} .sx_3afab0{width:8px;height:12px;background-position:-34px -49px} .sx_455a4f{width:7px;height:14px;background-position:-493px -79px} .sx_5d36fe{width:7px;height:14px;background-position:-493px -64px} .sx_392615{width:11px;height:14px;background-position:-489px -49px} .sx_aa6e9c{width:22px;background-position:-271px -139px} .sx_2890f5{width:22px;background-position:-340px -139px} .sx_d1f9d9{width:21px;background-position:-385px -139px} .sx_e3e7d2{width:21px;background-position:-363px -139px} .sx_cad985{width:22px;background-position:-317px -139px} .sx_a4970e{width:22px;background-position:-294px -139px} .sx_878f81{width:8px;height:12px;background-position:-43px -49px} .sx_ddf0dd{width:17px;height:16px;background-position:-93px -64px} .sx_348756{width:7px;height:14px;background-position:-0px -232px} .sx_b39116{width:7px;height:14px;background-position:-0px -202px} .sx_80c96a{width:11px;height:12px;background-position:-0px -102px} .sx_9dc708{width:22px;background-position:-463px -94px} .sx_363aa7{width:22px;background-position:-440px -94px} .sx_e8e9be{width:9px;height:5px;background-position:-52px -49px} .sx_75cb1a{width:15px;height:16px;background-position:-424px -139px} .sx_426c00{width:11px;height:19px;background-position:-81px -64px} .sx_2885fc{width:10px;height:15px;background-position:-179px -64px} .sx_ef552a{height:16px;background-position:-111px -64px} .sx_7cc44d{height:16px;background-position:-128px -64px} .sx_1246ec{height:16px;background-position:-145px -64px} .sx_e40152{height:16px;background-position:-162px -64px} .sx_acd5ba{height:16px;background-position:-407px -139px} .sx_e88de6{height:12px;background-position:-0px -49px} .sx_b39583{height:12px;background-position:-17px -49px} .sx_633fdc{width:88px;height:44px;background-position:-271px -94px} .sx_5b39e0{width:79px;height:41px;background-position:-360px -94px} .sx_b1fbb4{width:500px;height:48px;background-position:-0px -0px} .sp_bvcmmi{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yE/r/cxXtjK8opQb.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_c19bfc{background-position:-16px -0px} .selected .sx_c19bfc{background-position:-0px -0px} .sx_7850ac{background-position:-0px -17px} .sp_ctji5o{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yr/r/UTBFW7opuWA.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_dee49e{background-position:-16px -0px} .selected .sx_dee49e{background-position:-0px -0px} .sx_ec0af3{background-position:-16px -17px} .selected .sx_ec0af3{background-position:-0px -17px} .sx_4d8d1f{background-position:-16px -34px} .selected .sx_4d8d1f{background-position:-0px -34px} .sx_d8be9c{background-position:-16px -51px} .selected .sx_d8be9c{background-position:-0px -51px} .sx_38f56f{background-position:-0px -87px} .sx_f1ad42{width:18px;height:18px;background-position:-0px -68px} .sx_37ee7a{height:15px;background-position:-0px -189px} .sx_7d1f86{background-position:-0px -104px} .sx_ea2d4f{background-position:-0px -121px} .sx_aaadbf{background-position:-0px -138px} .sx_8ed5b6{background-position:-0px -155px} .sx_fde09c{background-position:-0px -172px} .sx_08e7a0{width:12px;height:11px;background-position:-19px -68px} .sp_cw9sqr{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y2/r/vmJvmrkIH7p.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_560381{background-position:-0px -0px} .sx_edf3e1{width:11px;height:10px;background-position:-0px -66px} .sx_1de284{width:9px;height:11px;background-position:-0px -77px} .sx_fbc1e6{width:12px;height:14px;background-position:-0px -51px} .sx_f80c60{background-position:-0px -17px} .sx_408ebf{background-position:-0px -34px} .sp_eajqff{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yZ/r/JOZO54OL9ob.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_4aea98{background-position:-0px -33px} .sx_b1c3f2{width:29px;height:32px;background-position:-0px -0px} .sp_empbd9{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y3/r/ZUVNAQFo1_3.png);background-repeat:no-repeat;display:inline-block;height:11px;width:10px} .sx_07ae09{background-position:-0px -31px} .sx_09da84{width:16px;height:16px;background-position:-0px -0px} .sx_cad7ec{width:11px;height:13px;background-position:-0px -17px} .sp_epdhgb{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/ys/r/1lsxhswUfM4.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_3c5bb4{background-position:-16px -0px} .selected .sx_3c5bb4{background-position:-0px -0px} .sx_90e0d7{background-position:-16px -17px} .selected .sx_90e0d7{background-position:-0px -17px} .sx_1006ba{background-position:-16px -34px} .selected .sx_1006ba{background-position:-0px -34px} .sx_c42104{background-position:-16px -51px} .selected .sx_c42104{background-position:-0px -51px} .sx_2484f1{background-position:-16px -68px} .selected .sx_2484f1{background-position:-0px -68px} .sx_4e9bc5{background-position:-16px -85px} .selected .sx_4e9bc5{background-position:-0px -85px} .sp_evxj8k{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/ya/r/XUlwHc83MiZ.png);background-repeat:no-repeat;display:inline-block;height:8px;width:4px} .sx_d98c01{width:16px;height:10px;background-position:-0px -27px} .sx_5f42ec{width:11px;height:11px;background-position:-4px -8px} .sx_dcc438{background-position:-63px -27px} .sx_97af49{background-position:-68px -27px} .sx_25c4cd{background-position:-73px -27px} .sx_d71837{background-position:-78px -27px} .sx_7587a9{width:13px;height:14px;background-position:-0px -52px} .sx_53e45f{width:16px;height:10px;background-position:-17px -27px} .sx_8d2bab{width:15px;height:13px;background-position:-0px -38px} .sx_082517{width:11px;height:9px;background-position:-51px -27px} .sx_bd86a9{width:16px;height:10px;background-position:-34px -27px} .sp_lgrp37{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yU/r/oYJTCcAk_iS.png);background-repeat:no-repeat;display:inline-block;height:10px;width:10px} .sx_7f56a4{width:13px;height:14px;background-position:-13px -0px} .selected .sx_7f56a4{background-position:-0px -0px} .sx_85dc6d{width:12px;height:14px;background-position:-12px -15px} .selected .sx_85dc6d{background-position:-0px -15px} .sx_f0e704{background-position:-0px -39px} .sx_7b91f7{width:8px;height:7px;background-position:-13px -30px} .sx_00c026{background-position:-11px -39px} .sx_88ac2e{background-position:-0px -50px} .sx_694221{width:12px;height:8px;background-position:-0px -30px} .sp_zg5d7h{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;display:inline-block;height:48px;width:500px} .sx_152317{width:29px;height:30px;background-position:-150px -439px} .sx_6c8928{width:29px;height:30px;background-position:-120px -439px} .sx_e1a29c{width:29px;height:30px;background-position:-90px -439px} .sx_4d4bf3{width:29px;height:30px;background-position:-60px -439px} .sx_6e4d20{width:29px;height:30px;background-position:-30px -439px} .sx_ce7fed{width:29px;height:30px;background-position:-0px -439px} .sx_cbcc80{width:14px;height:14px;background-position:-84px -415px} .sx_70465a{width:16px;height:9px;background-position:-74px -392px} .sx_51347b{width:16px;height:9px;background-position:-91px -392px} .sx_80f258{width:9px;height:16px;background-position:-64px -415px} .sx_07ea5e{width:9px;height:16px;background-position:-74px -415px} .sx_7d69d2{width:16px;height:9px;background-position:-108px -392px} .sx_6fbd38{width:10px;height:10px;background-position:-145px -415px} .sx_a8ce63{width:10px;height:10px;background-position:-156px -415px} .sx_fb8f95{width:10px;height:10px;background-position:-167px -415px} .sx_a6c956{width:10px;height:10px;background-position:-178px -415px} .sx_f0131d{width:11px;height:14px;background-position:-99px -415px} .sx_a3fa3f{width:10px;height:10px;background-position:-189px -415px} .sx_b968bb{width:9px;height:11px;background-position:-135px -415px} .sx_bf7935{width:11px;height:11px;background-position:-111px -415px} .sx_0ebe54{width:11px;height:11px;background-position:-123px -415px} .sx_137d17{width:16px;height:8px;background-position:-125px -392px} .sx_a13e3a{width:13px;height:8px;background-position:-142px -392px} .sx_35b581{width:16px;height:15px;background-position:-57px -392px} .sx_c0ef06{width:10px;height:8px;background-position:-156px -392px} .sx_d2d670{width:16px;height:16px;background-position:-23px -392px} .sx_c5563d{width:16px;height:16px;background-position:-40px -392px} .sx_971863{width:10px;height:9px;background-position:-200px -415px} .sx_04aa3e{width:5px;height:3px;background-position:-495px -402px} .sx_98915c{width:63px;height:23px;background-position:-0px -415px} .sx_36c870{background-position:-0px -0px} .sx_2bdd18{background-position:-0px -49px} .sx_3ebcd1{background-position:-0px -98px} .sx_456128{background-position:-0px -147px} .sx_2382ca{background-position:-0px -196px} .sx_43230c{background-position:-0px -245px} .sx_399e19{background-position:-0px -343px} .sx_b8d8dc{background-position:-0px -294px} .sx_2f0b03{width:22px;height:19px;background-position:-0px -392px} div.experienceAttachment{border-left:2px solid #ccc;float:none} div.experienceAttachment .img{margin-top:1px} .uiStreamStory .uiPhotoThumb img{max-width:121px} .uiStreamStory .largePhoto img{max-width:300px} .uiStream .uiStreamHeader{background-color:#e9e9e9;border-top:1px solid #ccc;height:1px;margin:20px 0 5px -18px;padding:0;position:relative} .uiStream .uiStreamHeader .uiStreamHeaderChronologicalForm,.uiStream .uiStreamHeader .uiStreamHeaderText{background-color:#fff;left:0;padding-right:2px;position:absolute} .uiStream .uiStreamHeader .uiStreamHeaderText{color:gray;margin-left:68px;top:-6px} .uiStream .uiStreamHeader .uiStreamHeaderChronologicalForm{left:auto;right:35px;top:-7px} .uiStream .uiStreamHeader .uiStreamHeaderChronologicalForm .uiSelectorButton .uiButtonText{color:gray;font-size: 9px;font-weight:bold} .uiStream .uiStreamHeader .uiStreamHeaderChronologicalForm .uiSelectorButton:hover .uiButtonText{text-decoration:underline} .uiStream .uiStreamHeader .uiStreamHeaderChronologicalForm .uiSelectorButton,.uiStream .uiStreamHeader .uiStreamHeaderChronologicalForm .uiSelectorButton:active,.uiStream .uiStreamHeader .uiStreamHeaderChronologicalForm .uiSelectorButton:focus,.uiStream .uiStreamHeader .uiStreamHeaderChronologicalForm .uiSelectorButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:right -396px;background-color:transparent;border:none;box-shadow:none;padding:0 9px 0 3px;margin:-1px 2px 0 2px} .uiStreamHeaderChronologicalFormNux{background-color:#f6f6f6;border-top:1px solid #ddd;margin-bottom:-4px;margin-top:4px;max-width:300px;padding:10px} .uiStreamHeaderChronologicalFormNuxRed{color:#f03d25} .uiStreamHeaderChronologicalForm .uiStreamHeaderChronologicalFormNux .uiCloseButton{float:right;margin:-5px -5px 0 0} .uiSelector .openToggler .uiStreamHeaderChronologicalFormNux .uiCloseButtonSmall{background-position:left 0} .uiSelector .openToggler .uiStreamHeaderChronologicalFormNux .uiCloseButtonSmall:hover,.uiSelector .openToggler .uiStreamHeaderChronologicalFormNux .uiCloseButtonSmall:focus{background-position:left -24px} .uiSelector .openToggler .uiStreamHeaderChronologicalFormNux .uiCloseButtonSmall:active{background-position:left -36px} .uiStreamMinistoryGroup{padding:10px 0 11px 60px} .uiStreamMinistoryGroup .uiStreamStory{padding-top:1px} .uiStreamMinistoryGroup .header{color:#aaa;padding:2px 0 8px} .uiStreamMinistoryGroup .uiStreamStory .ministoryMessage{color:#333} .uiStreamMinistoryGroup .uiStreamStory .ministoryInlineMessage{display:inline} .uiStreamMinistoryGroup .showSimilar{display:block;margin:0 2px 8px 22px} .uiStreamMinistoryGroup .showSimilarAjax{display:block;margin:2px 2px 0 22px} .uiStreamMinistoryGroup .ministoryUfi{margin-bottom:6px} div.uiAttachmentPhotoBox .uiMediaThumb, div.uiAttachmentPhotoBox div.horizontalSplitContainer{display:inline-block;float:left} div.uiAttachmentPhotoBox .uiMediaThumb{padding:2px} div.uiAttachmentPhotoBox .beforeHorizontalSplit{margin-right:3px} div.uiAttachmentPhotoBox .beforeVerticalSplit{margin-bottom:3px} .uiStream .uiStreamMessage{color:#000;font-size: 11px;font-weight:normal;margin:0 0 5px 0} .uiStream .uiStreamHeadline{margin-bottom:0} .uiStream .uiStreamPassive{margin-bottom:5px} .Locale_zh_CN .uiStream .uiStreamMessage,.Locale_zh_TW .uiStream .uiStreamMessage,.Locale_zh_HK .uiStream .uiStreamMessage{font-size: 13px} .Locale_ja_JP .uiStream .uiStreamMessage{font-size: 12px} .uiStreamMessage,.uiAttachmentTitle,.uiAttachmentDesc{word-break:break-word;word-wrap:break-word} .uiStreamMessage .actorDescription{padding-bottom:3px} .uiStreamMessage .suggestionBio .actorDescription{padding-bottom:0} .uiStreamMessage .suggestionBio{width:410px} .fbStreamPrivacy .lock{bottom:-2px;margin-bottom:-5px;position:relative;vertical-align:top} div.uiAttachmentTitle{color:#333} .uiStreamStory{padding-right:35px;zoom:1} .uiStream .uiStreamHide{float:right;margin:-2px -35px 0 0} .uiStream .substoryHideSelector{float:right;margin:-2px 0 0 0} .uiStreamHide .uiSelectorButton,a.uiCloseButton.uiStreamHide,.uiStream .uiStreamStory:hover .uiStreamSubstory .uiStreamHide .uiSelectorButton{left:-9999px;position:absolute} .uiStream .uiStreamStory:hover .uiStreamHide .uiSelectorButton,.uiStream .uiStreamStory:hover a.uiCloseButton.uiStreamHide,.uiStream .uiStreamStory .uiStreamSubstory:hover .uiStreamHide .uiSelectorButton,.uiStream .uiStreamStory .uiStreamHide .openToggler .uiSelectorButton,.uiStream .uiStreamStory:hover .uiStreamSubstory .uiStreamHide .openToggler .uiSelectorButton{left:auto;position:relative} .uiStream .uiAttachmentDesc,.uiStream .uiStreamPassive,.uiStream .uiStreamRobotextBeforeMessage,.uiStream .uiAdminAttribution{color:gray} .uiStream .tagIcon{vertical-align:bottom} .uiStream .text_exposed_link{display:block;padding-top:4px;font-size: 11px} .uiStream .uiStreamStoryHide .storyContent{display:none} .uiStreamAttachments .external img{max-height:90px;max-width:90px} .uiStream .uiAttachmentDetails{color:#333} .uiAttachmentInline .uiAttachmentTitle,.uiAttachmentInline .uiAttachmentDesc{display:inline} .uiStreamMessage .actorName,.uiStreamMessage .passiveName{font-weight:bold} .uiStreamMessage .wallArrowIcon{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/ya/r/XUlwHc83MiZ.png);background-repeat:no-repeat;background-position:-51px -27px;height:9px;margin:0 5px;width:11px} .uiStreamMessage .readButton{float:right} .uiAttachmentNoMedia{border-left:2px solid #ccc} .uiAttachmentMedia{float:left} .uiStreamAttachments .exploded .swfObject{margin-bottom:7px} .uiStreamAttachments .exploded .UIImageBlock_Image{margin-right:0} .uiStreamAttachments .exploded .UIImageBlock_Content,.uiStreamAttachments .text_exposed .truncatedMediaInfo{clear:both;display:block;padding-left:0;width:auto} .uiStreamAttachments .truncatedMediaItem{display:none} .uiStreamAttachments .text_exposed .truncatedMediaItem{display:block} .uiStreamAttachments .truncatedMediaInfo{display:table;zoom:1} .uiStreamPrivacyContainer{color:#999} .uiStreamCollapsed{border-top:1px solid #eee} .uiStreamSubstories li.showAll{line-height:15px;padding:8px 0 0} .uiStreamSubstories li.showAll a{color:#6d84b4} .uiStreamSubstories .unseenItem{border-left:2px solid #a8b2ce;margin-left:-4px;padding-left:2px} .uiStreamSubstories .uiUfi{width:358px} .uiStream .uiStreamSeparator{background-color:#e9e9e9;border:0;height:7px;margin:6px 0;padding:0;text-align:center} .uiStream .uiStreamSeparatorText{background-color:#fff;padding:0 5px;position:relative;top:-4px} .uiStream .suppressBorder{border-top:0} .uiStreamFooter,.uiStreamSource,.uiStreamAdditionalLogging{color:#999} .uiStreamFooter a{color:#6d84b4} .uiStreamSource a{color:#999} .uiStreamActionFooter .UIActionLinks_bottom a{color:#3b5998} .uiStreamNub{border-bottom:1px solid #c2cbe1;margin-top:2px} .uiStream .uiStreamNoBorderStory{border-width:0} .uiStreamBoulderStyleAgg .uiStreamAttachments .external{display:block;margin:0;padding-bottom:5px;padding-right:10px} .uiStreamBoulderStyleAgg .uiStreamAttachments .external img{max-height:100px;max-width:120px} .uiStreamInlineTextarea{height:13px;width:98%} .uiStream .uiStreamBoulderStyle{margin-left:-18px;padding:12px 35px 14px 18px;position:relative} .uiStream .uiStreamBoulderStyleNew{padding:0;position:static} .uiStreamBoulderStyleNew .storyHighlightIndicatorWrapper{position:relative} .uiStream .uiStreamBoulderStyleNew .storyContent{padding:12px 35px 14px 18px} .uiStream .uiStreamBoulderStyleNew .uiStreamSubstory .storyContent{padding:0} .uiStreamBoulderStyleAgg .substoryActorPic img,.uiStreamBoulderStyleAgg .uiStreamInlineAction .inlineActionInputPic{height:32px;width:32px} .uiStreamBoulderStyleAgg .storyContent{padding-bottom:2px} .uiStreamBoulderStyleAgg .storyInnerContent .mainWrapper{margin-top:0} .uiStreamBoulderStyleAgg .uiStreamSubstories{padding-top:5px} .uiStreamBoulderStyle .uiStreamSubstories .uiUfi{width:350px} .uiStreamBoulderStyleAgg .uiStreamSubstories .uiStreamShowAll{border-bottom:0;text-align:left} .uiStreamBoulderStyleAgg .uiStreamSubstories .uiStreamShowAll span{font-weight:normal} .uiStreamBoulderStyleAgg .uiStreamSubstory{margin:0;padding:3px 0} .uiStreamBoulderStyleAgg .inlineSubstory .uiStreamSubstory{border-bottom:1px solid #e5e5e5;padding-bottom:10px} .uiStream .uiStreamBoulderStyle .highlightSelector{margin:-14px -25px 0 0} .uiStreamHomepage .uiStreamStory:first-child .highlightSelector{margin-top:-20px} .uiStream .uiStreamBoulderStyle .substoryHideSelector{margin:-2px 0 0} .uiStream .uiStreamBoulderStyle .highlightSelector .uiSelectorButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:0 -415px;display:inline-block;height:24px;width:21px} .uiStream .uiStreamBoulderStyle .highlightSelector .uiSelectorButton,.uiStream .uiStreamBoulderStyle .highlightSelector .uiSelectorButton:active,.uiStream .uiStreamBoulderStyle .highlightSelector .uiSelectorButton:focus,.uiStream .uiStreamBoulderStyle .highlightSelector .uiSelectorButton:hover{background-color:transparent;border:0} .uiStream .uiStreamBoulderStyle .highlightSelector .uiSelectorMenuWrapper{margin:-3px 1px 0 0} .uiStream .uiStreamBoulderStyle .highlightSelector .uiSelectorButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-21px -415px} .uiStream .uiStreamBoulderStyle .highlightSelector .openToggler .uiSelectorButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-42px -415px} .uiStream .highlightIndicator{display:inline-block;height:16px;left:-1px;position:absolute;top:-1px;width:16px} .uiStream .uiStreamStoryHide .highlightIndicator{display:none} .uiStream .highlightIndicator .img{opacity:0;position:absolute} .uiStream .uiStreamBoulderStyle:hover .highlightIndicator .img,.uiStream .uiStreamBoulderHighlight:hover .highlightIndicator .img,.uiStream .uiStreamBoulderHighlight .highlightIndicator .img{opacity:1} .uiStream .uiStreamBoulderStyle .highlightIndicator .hoverTriangle,.uiStream .uiStreamBoulderStyle a.highlightIndicator:hover .nullTriangle{display:none} .uiStream .uiStreamBoulderStyle a.highlightIndicator:hover .hoverTriangle{display:inline} .uiStreamHomepage .uiStreamStory:first-child .highlightIndicator{top:-7px} .UIIntentionalStream_Error{display:none;padding-top:2px;padding-bottom:8px} .UIIntentionalStream_HiddenInfo{float:right} .UIIntentionalStream_AutoUpdate{margin:5px} .UIIntentionalStream_AutoUpdateMessage, .UIIntentionalStream_AutoUpdateControl{float:right} .feedback_toggle_link .feedbackBling .text{line-height:normal} a.feedbackBling{margin-left:-1px;margin-right:-1px;padding-bottom:0;padding-top:0} .feedback_toggle_link .feedbackBling .img{margin-top:-1px} .scrollable{overflow-y:auto} .contextual_dialog .generic_dialog_popup{padding-top:9px;position:absolute;width:360px} .contextual_dialog .arrow{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-142px -392px;height:9px;margin-left:25px;margin-top:-2px;position:absolute;top:4px;width:13px} .contextual_dialog .contextual_dialog_content{background:#fff;border:1px solid #333;border-bottom:2px solid #283e6a;line-height:15px} .contextual_dialog .contextual_dialog_content div.dialog_loading{background:#fff;border:0;font-size: 11px} .contextual_dialog .dialog_title{color:#000;font-size: 11px;padding-bottom:2px;padding:8px 10px 0} .contextual_dialog .dialog_body{padding:8px 10px} .contextual_dialog .dialog_buttons{background-color:#f2f2f2;border-top:1px solid #ccc;padding:8px 10px} .contextual_dialog .dialog_buttons_msg{float:right} .contextual_dialog .dialog_loading,.contextual_dialog .dialog_loading_shown .dialog_title,.contextual_dialog .dialog_loading_shown .dialog_content{display:none} .contextual_dialog .dialog_loading_shown .dialog_loading{display:block} .pop_container_advanced{background:rgba(82,82,82,0.7);border-radius:8px;padding:10px} .pop_content_old{position:relative} .pop_container{direction:ltr;position:relative;top:10px} .pop_topleft,.pop_topright,.pop_bottomleft,.pop_bottomright{height:10px;width:10px;overflow:hidden;position:absolute} .pop_topleft{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-167px -415px;left:-10px;top:-10px} .pop_topright{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-178px -415px;right:-10px;top:-10px} .pop_bottomleft{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-145px -415px;bottom:-10px;left:-10px} .pop_bottomright{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-156px -415px;right:-10px;bottom:-10px} .pop_verticalslab,.pop_horizontalslab{width:100%;height:100%;position:absolute;background:#525252;opacity:.7} .pop_verticalslab{margin:-10px 0 0;padding-bottom:20px} .pop_horizontalslab{margin:0 0 0 -10px;padding-right:20px} .generic_dialog{height:0;left:0;overflow:visible;outline:none;position:fixed;top:0;width:100%;z-index:200} .generic_dialog_modal,.generic_dialog_fixed_overflow{background-color:rgba(252, 252, 252, .9);height:100%;z-index:300} .generic_dialog_fixed_overflow{overflow-x:auto;overflow-y:scroll} .generic_dialog_fixed_overflow .generic_dialog_popup{height:auto;padding-bottom:40px} .generic_dialog_overflow_mode body{overflow:hidden !important} .generic_dialog_popup{height:0;overflow:visible;position:relative;width:465px;margin:auto} .generic_dialog div.dialog_loading{background-color:#f2f2f2;border:1px solid #606060;font-size: 24px;padding:10px} .pop_content{direction:ltr;outline:none} .pop_dialog_rtl .pop_content{direction:rtl} .pop_content h2.dialog_title{background:#6d84b4;border:1px solid #3b5998;border-bottom:none;color:#fff;font-size: 14px;font-weight:bold;margin:0} .pop_content h2.secure{background:#6d84b4 url(http://static.ak.fbcdn.net/rsrc.php/v1/yu/r/jp8TzrZb6J1.png) 98% no-repeat} .pop_content h2.loading{background:#6d84b4 url(http://static.ak.fbcdn.net/rsrc.php/v1/y-/r/AGUNXgX_Wx3.gif) 98% no-repeat} .pop_content h2.dialog_loading{background:#6d84b4 url(http://static.ak.fbcdn.net/rsrc.php/v1/y-/r/AGUNXgX_Wx3.gif) no-repeat 400px 10px;padding-right:40px} .pop_content h2 span{display:block;padding:5px 10px} .pop_content .dialog_content{background:#fff;border:1px solid #555;border-top-width:0} .pop_content .dialog_content.dialog_content_titleless{border-top:1px solid #555} .pop_content .dialog_loading,.dialog_loading_shown .dialog_title,.dialog_loading_shown .dialog_content{display:none} .dialog_loading_shown .dialog_loading{display:block} .pop_content .dialog_body{padding:10px;border-bottom:1px solid #ccc} .omitDialogFooter .pop_content .dialog_body{border-bottom:0} .pop_content .dialog_summary{background:#f2f2f2;padding:8px 10px;border-bottom:1px solid #ccc} .pop_content .dialog_buttons{background:#f2f2f2;padding:8px 10px 8px 10px;position:relative;text-align:right} .pop_content .dialog_buttons_msg{float:left;line-height:17px;padding-top:4px} .pop_content .dialog_footer{background:#F2F2F2 none repeat scroll 0} .full_bleed .pop_content .dialog_body{padding:0} .uiSimpleScrollingLoadingIndicator{display:none;margin:auto} .async_saving .uiSimpleScrollingLoadingIndicator{display:block} .uiUfiLikeIcon{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/ya/r/XUlwHc83MiZ.png);background-repeat:no-repeat;background-position:0 -38px;display:block;height:13px;width:15px} .uiUfiLikeIconDisabled,.uiUfiLikeIconDisabled:active,.uiUfiLikeIconDisabled:focus{cursor:default;outline:none} .ufiItem .async_saving .uiUfiViewSharesLink, .ufiItem .stat_elem .uiUfiViewSharesLoading{display:none} .ufiItem .async_saving .uiUfiViewSharesLoading{display:inline} .uiButton,.uiButtonSuppressed:active,.uiButtonSuppressed:focus,.uiButtonSuppressed:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:0 -98px;background-color:#eee;border:1px solid #999;border-bottom-color:#888;box-shadow:0 1px 0 rgba(0, 0, 0, .1);cursor:pointer;display:inline-block;font-size: 11px;font-weight:bold;line-height:13px;padding:2px 6px;text-align:center;text-decoration:none;vertical-align:top;white-space:nowrap} .uiButtonLarge{line-height:16px} .uiButton + .uiButton{margin-left:4px} .uiButton:hover{text-decoration:none} .uiButton:active,.uiButtonDepressed{background:#ddd;border-bottom-color:#999;box-shadow:0 1px 0 rgba(0, 0, 0, .05)} .uiButton .img{margin-top:2px;vertical-align:top} .uiButtonLarge .img{margin-top:4px} .uiButton .customimg{margin-top:0} .uiButton .uiButtonText,.uiButton input{background:none;border:0;color:#333;cursor:pointer;display:inline-block;font-family:'Lucida Grande', Tahoma, Verdana, Arial, sans-serif;font-size: 11px;font-weight:bold;margin:0;padding:1px 0 2px;white-space:nowrap} .uiButtonOverlay,.uiButtonOverlay:hover{background-clip:padding-box;background-color:#fff;background-color:rgba(255, 255, 255, .8);background-image:none;border-color:#a5a5a5;border-color:rgba(0, 0, 0, .35);border-radius:2px} .uiButtonOverlay:focus,.uiButtonOverlay:active{background-color:#f9fafc;background-color:rgba(249, 250, 252, .9);border-color:#3b5998;border-color:rgba(59, 89, 152, .5)} .async_saving .uiButton.uiButtonOverlay,.uiButtonOverlay.uiButtonDisabled,.uiButtonOverlay.uiButtonDisabled:active,.uiButtonOverlay.uiButtonDisabled:focus,.uiButtonOverlay.uiButtonDisabled:hover{background-color:#fff;background-color:rgba(255, 255, 255, .8);border-color:#c8c8c8;border-color:rgba(180, 180, 180, .8)} .uiButtonSpecial{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:0 -343px;background-color:#69a74e;border-color:#3b6e22 #3b6e22 #2c5115} .uiButtonSpecial:active{background:#609946;border-bottom-color:#3b6e22} .async_saving .uiButton.uiButtonSpecial,.uiButtonSpecial.uiButtonDisabled,.uiButtonSpecial.uiButtonDisabled:active,.uiButtonSpecial.uiButtonDisabled:focus,.uiButtonSpecial.uiButtonDisabled:hover{background:#b4d3a7;border-color:#9db791} .uiButtonConfirm{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:0 -49px;background-color:#5b74a8;border-color:#29447e #29447e #1a356e} .uiButtonConfirm:active{background:#4f6aa3;border-bottom-color:#29447e} .async_saving .uiButton.uiButtonConfirm,.uiButtonConfirm.uiButtonDisabled,.uiButtonConfirm.uiButtonDisabled:active,.uiButtonConfirm.uiButtonDisabled:focus,.uiButtonConfirm.uiButtonDisabled:hover{background:#adbad4;border-color:#94a2bf} .async_saving .uiButton.uiButtonSpecial .uiButtonText,.async_saving .uiButton.uiButtonSpecial input,.async_saving .uiButton.uiButtonConfirm .uiButtonText,.async_saving .uiButton.uiButtonConfirm input,.uiButtonSpecial .uiButtonText,.uiButtonSpecial input,.uiButtonSpecial.uiButtonDisabled .uiButtonText,.uiButtonSpecial.uiButtonDisabled input,.uiButtonConfirm .uiButtonText,.uiButtonConfirm input,.uiButtonConfirm.uiButtonDisabled .uiButtonText,.uiButtonConfirm.uiButtonDisabled input{color:#fff} .async_saving .uiButton,.uiButtonDisabled,.uiButtonDisabled:active,.uiButtonDisabled:focus,.uiButtonDisabled:hover{background:#f2f2f2;border-color:#c8c8c8;box-shadow:none} .async_saving .uiButton .img,.uiButtonDisabled .img{opacity:.5} .async_saving .uiButton .uiButtonText,.async_saving .uiButton input,.uiButtonDisabled .uiButtonText,.uiButtonDisabled input{color:#b8b8b8} .async_saving .uiButton,.async_saving .uiButton .uiButtonText,.async_saving .uiButton input,.uiButtonDepressed,.uiButtonDepressed .uiButtonText,.uiButtonDepressed input,.uiButtonDisabled,.uiButtonDisabled .uiButtonText,.uiButtonDisabled input{cursor:default} .uiButtonLarge,.uiButtonLarge .uiButtonText,.uiButtonLarge input{font-size: 13px} .uiButtonSuppressed{background:none;border-color:transparent;box-shadow:none} .uiButtonNoText .img{margin-left:-1px;margin-right:-1px} .android .uiButton .uiButtonText,.android .uiButton input{padding:3px 0 1px 1px} .uiCloseButton{cursor:pointer;display:inline-block;margin:0;padding:0;zoom:1} label.uiCloseButton{overflow:hidden} .uiCloseButton input{cursor:pointer;opacity:0;outline:none;padding:18px} .uiCloseButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yA/r/4WSewcWboV8.png);background-repeat:no-repeat;height:15px;width:15px} .uiCloseButtonSmall{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yx/r/ogYrclupeJV.png);height:11px;margin-top:1px;width:11px} .uiCloseButtonHuge{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yj/r/ubIGOTIgUYc.png)} .uiCloseButtonDark{background-position:left -16px} .uiCloseButtonInverted{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yo/r/33RpiRygxAr.png);background-position:left -16px} .uiCloseButton:hover,.uiCloseButton:focus{background-position:left -32px} .uiCloseButton:active{background-position:left -48px} .uiCloseButtonSmallDark{background-position:left -12px} .uiCloseButtonSmallInverted{background-position:left -12px;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yT/r/Vi-KTnbdMKr.png)} .uiCloseButtonSmall:hover,.uiCloseButtonSmall:focus{background-position:left -24px} .uiCloseButtonSmall:active{background-position:left -36px} .uiButtonGroup{background-clip:padding-box;background-color:#fff;border:1px solid #a5a5a5;border-color:rgba(0, 0, 0, .35);border-radius:3px;box-shadow:0 1px 0 rgba(0, 0, 0, .1);display:inline-block;padding:0;white-space:nowrap} .uiButtonGroup .uiButtonGroupItem{border-left:1px solid #d9d9d9;border-color:rgba(0, 0, 0, .15);display:inline-block;vertical-align:top} .uiButtonGroup .firstItem{border-left:0} .uiButtonGroup .uiSelector,.uiButtonGroup .uiButton{box-shadow:none;vertical-align:top} .uiButtonGroup .selectorItem .uiSelector,.uiButtonGroup .buttonItem .uiButton{margin:-1px} .uiButtonGroup .uiButtonLarge{padding:2px 8px} .uiButtonGroup .uiButtonOverlay,.uiButtonGroupOverlay .uiButtonGroupItem .uiButtonDisabled,.uiButtonGroupOverlay .uiButtonGroupItem .uiButtonDisabled:hover,.uiButtonGroupOverlay .uiButtonGroupItem .uiButtonDisabled:active,.uiButtonGroupOverlay .uiButtonGroupItem .uiButtonDisabled:focus{background-clip:padding-box;border-color:transparent} .uiButtonGroup .selectorItem .openToggler .uiButton,.uiButtonGroup .buttonItem .uiButtonSpecial,.uiButtonGroup .buttonItem .uiButtonConfirm{position:relative;z-index:1} .uiButtonGroup span .uiButtonOverlay,.uiButtonGroup span .uiButtonOverlay:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yU/r/j0eBHOpxhI1.png);background-repeat:no-repeat;background-position:right -107px;background-color:transparent} .uiButtonGroup span .uiButtonOverlay:active,.uiButtonGroup span .uiButtonOverlay:focus{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yU/r/j0eBHOpxhI1.png);background-repeat:no-repeat;background-position:right -156px;background-color:transparent} .uiButtonGroupOverlay span .uiButtonOverlay.uiButtonDisabled{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yU/r/j0eBHOpxhI1.png);background-repeat:no-repeat;background-position:right -107px} .uiButtonGroup .buttonItem .uiButtonOverlay,.uiButtonGroup .buttonItem .uiButtonOverlay:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yU/r/j0eBHOpxhI1.png);background-repeat:no-repeat;background-position:0 -9px} .uiButtonGroup .buttonItem .uiButtonOverlay:active,.uiButtonGroup .buttonItem .uiButtonOverlay:focus{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yU/r/j0eBHOpxhI1.png);background-repeat:no-repeat;background-position:0 -58px} .uiButtonGroupOverlay .buttonItem .uiButtonOverlay.uiButtonDisabled{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yU/r/j0eBHOpxhI1.png);background-repeat:no-repeat;background-position:0 -9px} .uiButtonGroupOverlay .uiButton{border-radius:0} .uiButtonGroupOverlay > :first-child .uiButton{border-top-left-radius:3px;border-bottom-left-radius:3px} .uiButtonGroupOverlay > :last-child .uiButton{border-top-right-radius:3px;border-bottom-right-radius:3px} .uiLinkButton input{background:none;border:none;color:#3b5998;cursor:pointer;font-family:'Lucida Grande', Tahoma, Verdana, Arial, sans-serif;font-size: 11px;margin:0;padding:0;vertical-align:top} .uiLinkButton:hover,.uiLinkButton input:hover,.uiLinkButton input:focus,.uiLinkButton input:active{color:#3b5998;text-decoration:underline} .uiLinkButtonSubtle input,.uiLinkButtonSubtle:hover,.uiLinkButtonSubtle input:hover,.uiLinkButtonSubtle input:focus,.uiLinkButtonSubtle input:active{color:gray} .uiLinkButton input.async_saving{text-decoration:none} .uiBoxGray{background-color:#f2f2f2;border:1px solid #ccc} .uiBoxDarkgray{color:#ccc;background-color:#333;border:1px solid #666} .uiBoxLightblue{background-color:#edeff4;border:1px solid #d8dfea} .uiBoxRed{background-color:#ffebe8;border:1px solid #dd3c10} .uiBoxWhite{background-color:#fff;border:1px solid #ccc} .uiBoxYellow{background-color:#fff9d7;border:1px solid #e2c822} .uiBoxOverlay{background:rgba(255, 255, 255, .85);border:1px solid #3b5998;border:1px solid rgba(59, 89, 153, .65);zoom:1} .noborder{border:none} .topborder{border-bottom:none;border-left:none;border-right:none} .bottomborder{border-left:none;border-right:none;border-top:none} .dashedborder{border-style:dashed} .uiGrid{border:0;border-collapse:collapse;border-spacing:0} .uiGridCalc{width:100%} .uiGrid .vTop{vertical-align:top} .uiGrid .vMid{vertical-align:middle} .uiGrid .vBot{vertical-align:bottom} .uiGrid .hLeft{text-align:left} .uiGrid .hCent{text-align:center} .uiGrid .hRght{text-align:right} .uiIconText{padding-left:21px;position:relative} label.uiIconText{vertical-align:baseline} .uiIconText .img{left:0;position:absolute;top:-1px;vertical-align:middle} i.img u{position:absolute;top:-9999999px} .UIImageBlock_Content{display:table-cell;vertical-align:top;width:10000px} .UIImageBlock_Image{float:left;margin-right:5px} .UIImageBlock_Image .img,img.UIImageBlock_Image,i.UIImageBlock_Image{display:block} .UIImageBlock_Ext{float:right} .UIImageBlock_ICON_Image{margin-right:5px} .UIImageBlock_ICON_Content{padding-top:1px} .UIImageBlock_SMALL_Image{margin-right:8px} .UIImageBlock_MED_Image,.UIImageBlock_ENT_Image{margin-right:10px} .UIImageBlock_Entity .UIImageBlock_Content{height:50px;vertical-align:middle} .UIImageBlock_Entity img.UIImageBlock_Image,.UIImageBlock_Entity i.UIImageBlock_Image,.UIImageBlock_Entity .UIImageBlock_Image .img{height:50px;width:50px} .UIImageBlock_Entity .UIImageBlock_Ext{margin-top:14px;padding-left:8px} .uiInfoTable{border:0;border-collapse:collapse;border-spacing:0;width:100%} .uiInfoTable .spacer td{padding:5px 0} .noBorder .spacer td{padding:0;visibility:hidden} .uiInfoTable .label, .uiInfoTable .data, .uiInfoTable .rightCol{padding:3px 0 1px 0;text-align:left;vertical-align:top} .uiInfoTable .dataRow .data, .uiInfoTable .dataRow .rightCol{padding-top:5px} .uiInfoTable .data > input, .uiInfoTable .data > label input, .uiInfoTable .rightCol > input, .uiInfoTable .rightCol > label input{margin-left:0} .uiInfoTable .label{color:#666;font-weight:bold;padding-right:10px;text-align:right;width:130px} .uiInfoTable .dataRow .label{padding-top:8px} .uiInfoTable .label .annotation{color:#999} .uiInfoTable .rightCol{padding:0 0 0 20px;width:225px} .lfloat{float:left} .rfloat{float:right} a.uiLinkSubtle{color:gray} .uiListItem{display:block} .uiListHorizontalItem{float:left} .uiListLight,.uiListMedium,.uiListDark{border-style:solid} .uiListHorizontalItemBorder{border-width:0 0 0 1px} .uiListVerticalItemBorder{border-width:1px 0 0 0} .uiListItem:first-child{border-width:0} .uiListLight{border-color:#e9e9e9} .uiListMedium{border-color:#ccc} .uiListDark{border-color:#aaa} .uiListBulleted{color:#3b5998;list-style-type:square;margin-left:12px} .pas{padding:5px} .pam{padding:10px} .pal{padding:20px} .pts{padding-top:5px} .ptm{padding-top:10px} .ptl{padding-top:20px} .prs{padding-right:5px} .prm{padding-right:10px} .prl{padding-right:20px} .pbs{padding-bottom:5px} .pbm{padding-bottom:10px} .pbl{padding-bottom:20px} .pls{padding-left:5px} .plm{padding-left:10px} .pll{padding-left:20px} .phs{padding-left:5px;padding-right:5px} .phm{padding-left:10px;padding-right:10px} .phl{padding-left:20px;padding-right:20px} .pvs{padding-top:5px;padding-bottom:5px} .pvm{padding-top:10px;padding-bottom:10px} .pvl{padding-top:20px;padding-bottom:20px} .mas{margin:5px} .mam{margin:10px} .mal{margin:20px} .mts{margin-top:5px} .mtm{margin-top:10px} .mtl{margin-top:20px} .mrs{margin-right:5px} .mrm{margin-right:10px} .mrl{margin-right:20px} .mbs{margin-bottom:5px} .mbm{margin-bottom:10px} .mbl{margin-bottom:20px} .mls{margin-left:5px} .mlm{margin-left:10px} .mll{margin-left:20px} .mhs{margin-left:5px;margin-right:5px} .mhm{margin-left:10px;margin-right:10px} .mhl{margin-left:20px;margin-right:20px} .mvs{margin-top:5px;margin-bottom:5px} .mvm{margin-top:10px;margin-bottom:10px} .mvl{margin-top:20px;margin-bottom:20px} .fss{font-size: 9px} .fsm{font-size: 11px} .fsl{font-size: 13px} .fsxl{font-size: 16px} .fsxxl{font-size: 18px} .fwn{font-weight:normal} .fwb{font-weight:bold} .fcb{color:#333} .fcg{color:gray} .uiLoadingIndicatorAsync{display:none} .async_saving .uiLoadingIndicatorAsync{display:inline} .uiMentionsInput{position:relative} .uiMentionsInput .mentionsTextarea,.uiMentionsInput .mentionsTypeahead{background:transparent;zoom:1} .uiMentionsInput .highlighter{left:1px;overflow:hidden;position:absolute;padding:4px;top:1px} .uiMentionsInput .highlighter div{color:transparent;line-height:14px;white-space:pre-wrap;width:100%} .uiMentionsInput .highlighter b{background:#d8dfea;font-weight:normal} .uiSearchInput{background:#fff;border:1px solid #899bc1;border-top-color:#6484b4;display:inline-block} .uiSearchInput span{border:0;border-top:1px solid #ededed;display:inline-block;padding:1px 0 2px;position:relative} .uiSearchInput input{border:0;margin:0 22px 0 5px;outline:none;padding:1px 5px 2px 0;width:190px} .uiSearchInput button{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:0 -392px;background-color:#fff;border:0;cursor:pointer;display:block;height:19px;padding:0;position:absolute;right:0;top:0;width:22px} .uiSelector .uiCloseButton{background-clip:padding-box;border:1px solid transparent;margin:0} .uiSelector .openToggler .uiCloseButton{background-position:left -32px} .uiSelector .openToggler .uiCloseButtonSmall{background-position:left -24px} .uiMenu{background-color:#fff;padding:3px 0 4px;overflow-y:auto} .uiMenuItem .itemAnchor{border:solid #fff;border-width:1px 0;color:#111;display:block;font-weight:normal;line-height:16px;padding:1px 16px 1px 22px;text-decoration:none} .uiMenuItem a:hover{text-decoration:none} .uiMenuItem a:active,.uiMenuItem a:focus{background-color:#6d84b4;border-color:#3b5998;color:#fff;outline:none} .uiMenu .checked .itemAnchor{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yu/r/6NHt8H5uyPf.png) left 4px no-repeat;font-weight:bold} .uiMenu .checked a:active,.uiMenu .checked a:focus{background-color:#6d84b4;background-position:left -56px} .uiMenuItem{white-space:nowrap} .uiMenuItem .itemLabel{display:block;max-width:300px;text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap} .uiMenuItem .itemWithIcon .itemLabel,.uiMenuItem .itemIcon{display:inline-block;vertical-align:middle} .uiMenuItem .itemLabel .menuIcon{vertical-align:sub} .uiMenuItemBigLabel .itemLabel{overflow:hidden;min-width:300px} .uiMenuItem .disabledAnchor,.uiMenu .disabled .itemAnchor{display:none} .uiMenu .disabled .disabledAnchor{display:block} .uiMenu .disabled .itemAnchor{opacity:.55} .uiMenuItemGroup .groupTitle{margin:0 16px 3px 22px} .uiMenuSeparator{border-bottom:1px solid #ddd;margin:5px 7px 6px;padding-top:1px} .openToggler{z-index:100} .uiToggleFlyout,.toggleTargetClosed,.openToggler .uiToggleFlyout .uiToggleFlyout{display:none} .openToggler .uiToggleFlyout,.openToggler .uiToggleFlyout .openToggler .uiToggleFlyout{display:block} .hideToggler{border:0;height:0;opacity:0;overflow:hidden;position:absolute;width:0} body.opera .hideToggler{padding:0} .uiSelector{max-width:200px;vertical-align:top} .uiSelector .wrap{position:relative} .uiSelector select,.uiSelector .submitButton,.no_js form .uiSelectorButton{display:none} .no_js form .uiSelector select,.no_js form .uiSelector .submitButton{display:inline} .uiSelector .uiButton,.uiSelector .uiButton:active,.uiSelector .uiButton:focus,.uiSelector .uiButton:hover{background-image:none} .uiSelector .uiSelectorButton{vertical-align:top} .uiSelector .uiSelectorButton:active{background-color:#ddd} .uiSelector .openToggler .uiSelectorButton,.uiSelector .openToggler .uiSelectorButton:active,.uiSelector .openToggler .uiSelectorButton:focus,.uiSelector .openToggler .uiSelectorButton:hover{background-color:#6d84b4;border:1px solid #3b5998;border-bottom-color:#6d84b4;box-shadow:none} .uiSelectorNormal .uiSelectorChevronOnly,.uiSelectorNormal .uiSelectorChevronOnly:active,.uiSelectorNormal .uiSelectorChevronOnly:focus,.uiSelectorNormal .uiSelectorChevronOnly:hover{height:20px;padding:0} .uiSelectorNormal .uiSelectorButton,.uiSelectorNormal .uiSelectorButton:active,.uiSelectorNormal .uiSelectorButton:focus,.uiSelectorNormal .uiSelectorButton:hover,.uiSelectorNormal .uiButtonSuppressed:active,.uiSelectorNormal .uiButtonSuppressed:focus,.uiSelectorNormal .uiButtonSuppressed:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:right 0;max-width:169px;padding-right:23px} .uiSelectorNormal .uiButtonDisabled,.uiSelectorNormal a.uiButtonDisabled:active,.uiSelectorNormal a.uiButtonDisabled:focus,.uiSelectorNormal a.uiButtonDisabled:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:right -147px} .uiSelectorNormal .uiButtonSuppressed.uiButtonDisabled{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:right -294px} .uiSelectorNormal .uiButtonOverlay,.uiSelectorNormal .uiButtonOverlay:active,.uiSelectorNormal .uiButtonOverlay:focus,.uiSelectorNormal .uiButtonOverlay:hover,.uiSelectorNormal .uiSelectorButton:active,.uiSelectorNormal .uiButtonSuppressed{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:right -246px} .uiSelectorNormal .openToggler .uiSelectorButton,.uiSelectorNormal .openToggler .uiSelectorButton:active,.uiSelectorNormal .openToggler .uiSelectorButton:focus,.uiSelectorNormal .openToggler .uiSelectorButton:hover,.uiSelectorNormal .openToggler .uiButtonSuppressed,.uiSelectorNormal .openToggler .uiButtonSuppressed:active,.uiSelectorNormal .openToggler .uiButtonSuppressed:focus,.uiSelectorNormal .openToggler .uiButtonSuppressed:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:right -196px} .uiSelectorNormal .uiSelectorButton .uiButtonText{max-width:169px;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;vertical-align:top} .uiSelectorNormal .uiSelectorBigButtonLabel .img{float:left} .uiSelectorNormal .uiSelectorBigButtonLabel .uiButtonText{display:block} .uiSelectorNormal .openToggler .uiSelectorButton .uiButtonText{color:#fff} .uiSelectorMenuWrapper{bottom:auto;left:0;margin:-1px 0 30px;max-width:340px;min-width:100%;position:absolute;right:auto;top:100%;z-index:-1} .uiSelectorRight .uiSelectorMenuWrapper{left:auto;right:0} .uiSelectorMenuWrapper .loading{padding:5px 20px} .uiSelectorMenuWrapper .loading span{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/GsNJNwuI-UM.gif) no-repeat 0 0;display:inline-block;height:11px;margin:0 auto;width:16px} .uiSelector .uiMenu{border:1px solid #777;border-bottom:2px solid #293e6a} .uiContextualLayer .uiSelector{margin:0;max-width:none;position:relative} .uiContextualLayerPositioner .aboveleft .uiSelector,.uiContextualLayerPositioner .aboveright .uiSelector{top:2px} .uiContextualLayerPositioner .belowleft .uiSelector,.uiContextualLayerPositioner .belowright .uiSelector{top:-1px} .uiContextualLayer .uiSelectorMenuWrapper{position:static;margin:0} .uiContextualLayer .uiSelector .uiSelectorButton{position:absolute} .uiContextualLayerPositioner .aboveleft .uiSelector .uiSelectorButton,.uiContextualLayerPositioner .aboveright .uiSelector .uiSelectorButton{border:1px solid #3b5998;border-top-color:#6d84b4;margin-top:-2px;top:100%} .uiContextualLayerPositioner .belowleft .uiSelector .uiSelectorButton,.uiContextualLayerPositioner .belowright .uiSelector .uiSelectorButton{bottom:100%;margin-bottom:-1px} .uiContextualLayerPositioner .aboveleft .uiSelector .uiSelectorButton,.uiContextualLayerPositioner .belowleft .uiSelector .uiSelectorButton{left:0} .uiContextualLayerPositioner .aboveright .uiSelector .uiSelectorButton,.uiContextualLayerPositioner .belowright .uiSelector .uiSelectorButton{right:0} .uiTextareaNoResize{resize:none} .uiTextareaAutogrow{overflow:hidden} .uiHeader h2{color:#1c2a47;font-size: 16px} .uiHeader h2 a{color:#1c2a47} .uiHeader h3,.uiHeader h4{color:#333;font-size: 11px} .uiHeader h5{color:#666;font-size: 11px} .uiHeaderWithImage .uiHeaderTop{position:relative} .uiHeaderWithImage .uiHeaderTitle{padding-left:22px} .uiHeaderImage{left:0;position:absolute} .uiHeader h2 .uiHeaderImage{top:2px} .uiHeaderTopBorder{border-top:1px solid #aaa;padding-top:.5em} div.uiHeaderTopBorder{margin-left:0} .uiHeaderTopAndBottomBorder{border-bottom:1px solid #e9e9e9;border-top:1px solid #aaa;padding:5px 0} .uiHeaderMiddleBorder{border-bottom:1px solid #ccc;height:.8em;margin:.5em 0 1.5em 0;position:relative} .uiHeaderMiddleBorder .uiHeaderTitle,.uiHeaderMiddleBorder .uiHeaderActions{background-color:#fff;position:absolute;top:0} .uiHeaderMiddleBorder .uiHeaderTitle{left:0;padding-right:.5em} .uiHeaderMiddleBorder .uiHeaderActions{padding-left:.5em;right:0} .uiHeaderMiddleBorder .uiButton{margin-top:-2px} .uiHeaderBottomBorder{border-bottom:1px solid #aaa;padding-bottom:.5em} .uiHeaderPage{padding:6px 0 16px} .uiHeaderPage .uiHeaderTitle{line-height:20px;min-height:20px;padding-bottom:2px;vertical-align:bottom} .uiHeaderPage .uiHeaderActions{margin-top:-1px} .uiHeaderPage .uiHeaderTop .fsl{margin-top:3px} .uiHeaderNav{border-color:#eee;margin:8px 0 0 6px;padding:7px 6px 3px 5px} .uiHeaderNavEmpty{padding-top:6px} .uiHeaderNav h4{color:gray} .uiHeaderSection,.uiSideHeader{background-color:#f2f2f2;border-bottom:none;border-top:solid 1px #e2e2e2;padding:4px 5px 5px} .uiInterstitial{border-radius:4px;margin-left:auto;margin-right:auto} .uiInterstitialSmall{width:445px} .uiInterstitialLarge{width:555px} .uiInterstitial .interstitialHeader{border-color:#ccc;padding-bottom:.5em} .fullBleed .interstitialHeader{margin:0;padding:4px 12px 10px} .uiInterstitialContent{margin-bottom:15px} .fullBleed .uiInterstitialContent{margin:0;padding:0} .uiInterstitialBar{border-bottom-right-radius:3px;border-bottom-left-radius:3px;line-height:16px;padding:8px 10px} div.uiInterstitialWithStripes{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/y9/r/y7MG8IZpiC8.gif) repeat-x;padding-top:15px} .uiScrollableArea{height:100%;overflow:hidden;position:relative;width:100%} .uiScrollableAreaWrap,.native .uiScrollableAreaWrap:active{height:100%;overflow-x:hidden;overflow-y:auto;position:relative;width:150%} .uiScrollableAreaWrap:active{overflow:hidden} .native .uiScrollableAreaWrap,.native .uiScrollableAreaBody,.no_js .uiScrollableAreaWrap,.no_js .uiScrollableAreaBody{width:auto !important} .uiScrollableAreaBody{position:relative} .uiScrollableAreaTrack{bottom:2px;display:block;position:absolute;right:2px;top:2px;width:7px;z-index:5} .uiScrollableArea .uiContextualLayerPositioner{z-index:4} .native .uiScrollableAreaTrack,.no_js .uiScrollableAreaTrack{display:none} .fade .uiScrollableAreaTrack{opacity:0} .uiScrollableAreaGripper{background-clip:content-box;background-color:rgba(0, 0, 0, .4);border:1px solid rgba(85, 85, 85, .6);border-radius:7px;position:absolute;-o-transition:25ms;width:5px} .uiScrollableArea.contentBefore:before,.uiScrollableArea.contentAfter:after{content:'';display:block;height:2px;position:absolute;width:100%;z-index:99} .uiScrollableArea.contentBefore:before{top:0} .uiScrollableArea.contentAfter:after{background-color:rgba(0, 0, 0, .07);bottom:0} .uiMoreLinkCaret{margin-left:2px;padding-bottom:2px} .uiTooltip{position:relative} .uiTooltip:active,.uiTooltip:focus,.uiTooltip:hover{outline:none;text-decoration:none;z-index:5} .uiTooltipWrap{display:none} .uiTooltipWrap:hover{visibility:hidden} .uiTooltipText{background-color:#282828;color:#fff !important;display:block;font-size: 11px;line-height:14px;padding:4px 8px;text-align:left;white-space:nowrap} .uiTooltip:active .uiTooltipWrap,.uiTooltip:focus .uiTooltipWrap,.uiTooltip:hover .uiTooltipWrap{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y1/r/uVR6w3wRHEJ.gif) left bottom no-repeat;bottom:100%;display:block;left:0;padding:0 0 4px;position:absolute} .uiTooltip:active .center,.uiTooltip:focus .center,.uiTooltip:hover .center{left:50%;margin-left:-10px;padding-left:10px} .uiTooltip .center .uiTooltipText{left:-50%;position:relative} .uiTooltip .centerbottom .uiTooltipText{margin-left:18px} .uiTooltip:active .right,.uiTooltip:focus .right,.uiTooltip:hover .right{background-position:right bottom;left:auto;right:0} .uiTooltip:active .middle,.uiTooltip:focus .middle,.uiTooltip:hover .middle{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yR/r/kPCE0g_tKJs.gif);background-position:right top;left:auto;margin:-4px 4px 0 0;right:100%;padding:4px;top:50%} .uiTooltip .middle .uiTooltipText{margin-top:-10px} .uiTooltip:active .rightmiddle,.uiTooltip:focus .rightmiddle,.uiTooltip:hover .rightmiddle{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yY/r/_ZWZupdaAgS.gif);background-position:left top;left:100%;margin:-4px 0 0 4px;right:auto} .uiTooltip:active .bottom,.uiTooltip:focus .bottom,.uiTooltip:hover .bottom{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yX/r/k2R_CZuPy2I.png);background-position:left top;bottom:auto;padding:4px 0 0;top:100%} .uiTooltip:active .rightbottom,.uiTooltip:focus .rightbottom,.uiTooltip:hover .rightbottom{background-position:right top} .openToggler > .uiTooltip:active .uiTooltipWrap,.openToggler > .uiTooltip:focus .uiTooltipWrap,.openToggler > .uiTooltip:hover .uiTooltipWrap{display:none} .uiCollapsedList .visible{margin-right:10px} .uiCollapsedListHidden .showAll{list-style-type:none} .uiCollapsedListVisible .showAll, .uiCollapsedListHidden .hiddenItem{display:none} .uiCollapsedListNoSeparate .visible{margin-right:3px} .uiCollapsedListVisible .visible, .uiCollapsedListMiddot .visible{margin-right:0} .objectListItem{padding-bottom:8px;padding-top:8px} .passive .objectListItem{color:gray} .objectListItem .auxiliary{text-align:right} .mouseEventsDisabled .MicrosoftMap{cursor:default !important} .uiMediaThumb{background:#fff;border:1px solid #ccc;display:inline-block;outline:none;padding:4px;position:relative;vertical-align:bottom} .loading.uiMediaThumb{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yk/r/LOOn0JtHNzb.gif) no-repeat center center} .loading.uiMediaThumb i{opacity:.3} .uiMediaThumbSelected{background-color:#3b5998;border-color:#3b5998} .uiMediaThumb:hover,.uiMediaThumb:hover .uiMediaThumbWrap,.uiMediaThumb:active,.uiMediaThumb:active .uiMediaThumbWrap,.uiMediaThumb:focus,.uiMediaThumb:focus .uiMediaThumbWrap{border-color:#3b5998} .uiMediaThumb i{background-color:#eee;background-position:center 25%;background-repeat:no-repeat;display:block} .uiMediaThumbSmall i{height:54px;width:73px} .uiMediaThumbMedium i{height:85px;width:114px} .uiMediaThumbLarge i{height:116px;width:149px} .uiMediaThumbHuge i{height:120px;width:161px} .uiMediaThumbAlb{margin-bottom:4px;margin-right:4px} .uiMediaThumbWrap{background:#fff;border:1px solid #ccc;left:4px;padding:4px;position:absolute;top:4px} .uiMediaThumbAlbSmall,.uiMediaThumbSmall .uiMediaThumbWrap i{height:49px;width:68px} .uiMediaThumbAlbMedium,.uiMediaThumbMedium .uiMediaThumbWrap i{height:80px;width:109px} .uiMediaThumbAlbLarge,.uiMediaThumbLarge .uiMediaThumbWrap i{height:111px;width:144px} .uiMediaThumbAlbHuge,.uiMediaThumbHuge .uiMediaThumbWrap i{height:115px;width:156px} .uiPhotoThumb{border:1px solid #ccc;display:inline-block} .uiPhotoThumb img{display:block;margin:3px} .uiPhotoThumb:hover{border:1px solid #3b5998} .loading.uiPhotoThumb{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/GsNJNwuI-UM.gif) no-repeat center center} .loading.uiPhotoThumb img{opacity:.3} .uiVideoThumb{border:0;overflow:hidden;position:relative} .uiVideoThumb img{display:inline-block;max-height:130px;max-width:130px} .uiVideoThumb img[width]{max-width:auto} .uiVideoThumb i{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y6/r/gY6pCnDw29i.png) no-repeat 0 0;bottom:5px;height:26px;left:5px;position:absolute;width:35px} .uiVideoThumbSmall i{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yN/r/aERK2-5sOBX.png);bottom:3px;height:22px;left:3px;width:27px} .uiVideoThumbTiny i{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yr/r/AF1Uwjj81fI.png);bottom:3px;height:17px;width:21px;left:3px} .uiVideoThumbLoading i{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y9/r/jKEcVPZFk-2.gif) no-repeat 50% 50%;bottom:0;height:100%;left:0;width:100%} .uiVideoThumbSmall.uiVideoThumbLoading i,.uiVideoThumbTiny.uiVideoThumbLoading i{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/GsNJNwuI-UM.gif)} .uiVideoThumbLoading img{opacity:.15} .uiMorePager .uiMorePagerPrimary{display:block;padding:10px 15px} .uiMorePager .uiMorePagerPrimary:hover{background-color:#d8dfea} .uiMorePager .uiMorePagerSecondary{margin:10px 15px} .uiMorePager .arrow{display:inline-block;vertical-align:top} .uiMorePager .uiMorePagerLoader{display:none;padding:11px 15px 9px;text-align:center} .async_saving .uiMorePagerLoader{display:block} .async_saving .uiMorePagerPrimary, .async_saving .uiMorePagerSecondary{display:none} .uiMorePagerCenter{text-align:center} .uiMorePagerLight .uiMorePagerPrimary, .uiMorePagerLight .uiMorePagerLoader{padding:6px 5px 10px;border-top:1px solid #e5eaf1} .uiMorePagerLight .uiMorePagerPrimary:hover{background-color:#edeff4;border-top:1px solid #d8dfea} .uiMorePagerLight .uiMorePagerSecondary{margin:6px 5px} .uiSideNav .loading .uiLoadingIndicatorAsync,.uiFutureSideNav .loading .uiLoadingIndicatorAsync{display:inline} .editMode .uiSideNav .loading .uiLoadingIndicatorAsync,.uiSideNav .loading ul .uiLoadingIndicatorAsync{display:none} .uiSideNav .uiLoadingIndicatorAsync{position:relative;top:2px} .uiSideNav .buttonWrap{clear:left;float:left;height:20px;text-align:right;width:20px} .uiSideNav .sideNavItem{padding-right:20px;margin-left:-20px;width:100%} .uiSideNav .drag{margin-left:0} .uiSideNav .item,.uiSideNav .subitem{margin-left:20px;margin-right:-20px} .uiSideNav .sideNavItem .imgWrap{margin-left:-22px;margin-top:-1px;float:left} .uiSideNav .sideNavItem .linkWrap{-o-text-overflow:ellipsis;display:block;overflow:hidden;padding-left:0;text-overflow:ellipsis;white-space:nowrap} .uiSideNav .sideNavItem .hasCount{max-width:110px} .uiSideNav .sideNavItem .noCount{max-width:145px} .uiSideNav .sideNavItem .subitem .hasCount{max-width:90px} .uiSideNav .sideNavItem .subitem .noCount{max-width:125px} .uiSideNav .loading .noCount{max-width:127px} .uiSideNav .sideNavItem .uiSideNavEditButton{margin:2px 5px 0 0;text-align:left} .uiSideNav .sideNavItem .uiCloseButton{opacity:0} .uiSideNav .sideNavItem .uiCloseButton:focus,.uiSideNav .sideNavItem:hover .uiCloseButton,.uiSideNav .sideNavItem .openToggler .uiCloseButton{opacity:1} .uiNarrowSideNav .uiSideNav .sideNavItem:hover .buttonWrap,.uiNarrowSideNav .uiSideNav .hover .buttonWrap,.uiNarrowSideNav .uiSideNav .editMenuOpened .buttonWrap{padding-right:4px;width:25px} .uiNarrowSideNav .uiSideNav .sideNavItem:hover .item .rfloat,.uiNarrowSideNav .uiSideNav .hover .item .rfloat,.uiNarrowSideNav .uiSideNav .editMenuOpened .item .rfloat{display:none} .uiNarrowSideNav .uiSideNav .buttonWrap{float:right;margin-right:-2px;width:0} .uiNarrowSideNav .sideNavItem{padding-right:0;margin-left:0} .uiNarrowSideNav .sideNavItem .item,.uiNarrowSideNav .sideNavItem .subitem{margin-left:0;margin-right:0} .uiSideNavCountSprited{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yk/r/BwKwOpPWbGZ.png) no-repeat right 0;color:#3b5998;display:inline-block;font-weight:bold;line-height:13px;/* @noflip */ padding-right:4px;text-decoration:none} .uiSideNavCountSprited .countValue{/* @noflip */ background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yk/r/BwKwOpPWbGZ.png) no-repeat 0 -13px;/* @noflip */ padding-left:4px} .uiSideNavCountSprited .countValue, .uiSideNavCountSprited .maxCountIndicator{display:inline-block;height:13px;vertical-align:top} .uiSideNav .async_saving .uiSideNavCountSprited, .uiSideNav .loading .uiSideNavCountSprited{display:none} .uiSideNavCount{background-color:#d8dfea;border-radius:2px;color:#3b5998;font-weight:bold;left:-1px;padding:0 4px;position:relative} .uiSideNav .uiSideNavCount{padding-bottom:2px} .uiSideNavCountInline{display:inline-block;line-height:15px} .uiSideNav .async_saving .uiSideNavCount,.uiSideNav .loading .uiSideNavCount{display:none} .uiToolbarBordered{margin:0 -7px;padding:6px 7px 6px 1px} .uiToolbar .uiToolbarItem{float:left;margin-left:6px;vertical-align:top} .uiToolbarUnbordered .uiToolbarItem:first-child{margin-left:0} .uiToolbar .uiToolbarDivider{background:#d6d6d6;height:22px;width:1px} .uiContextualDialogDefaultPadding{padding:15px} .uiContextualDialogFooter{padding:6px 7px 6px 8px} .uiContextualDialogPositioner, .uiContextualDialogPositioner .uiContextualDialog{position:absolute;z-index:200} .uiContextualDialogFixed{position:fixed} .uiContextualDialogAbove .uiContextualDialog{bottom:0} .uiContextualDialogBelow .uiContextualDialog{top:0} .uiContextualDialogLeft .uiContextualDialog, .uiContextualDialogRightAligned .uiContextualDialog{right:0} .uiContextualDialog, .uiContextualDialog:focus{outline:0 solid transparent} .uiContextualLayerPositioner{height:0;position:absolute;z-index:200} .uiContextualLayer{position:absolute} div.uiContextualLayerPositionerFixed{position:fixed} .uiOverlay{position:relative;z-index:200} .uiOverlayContent{background:#fff;border:1px solid #8c8c8c;border:1px solid rgba(0, 0, 0, .45);border-bottom:1px solid #666;box-shadow:0 3px 8px rgba(0, 0, 0, .3);position:relative} .uiOverlayFooter{text-align:right} .uiOverlayFooterMessage{width:100%} .uiOverlayFooterButtons{white-space:nowrap} .uiOverlayArrow{position:absolute;overflow:hidden} .uiOverlayArrowTop{padding-top:10px} .uiOverlayArrowRight{padding-right:10px} .uiOverlayArrowBottom{padding-bottom:10px} .uiOverlayArrowLeft{padding-left:10px} .uiOverlayArrowTop .uiOverlayArrow{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-108px -392px;height:9px;top:2px;width:16px} .uiOverlayArrowRight .uiOverlayArrow{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-74px -415px;height:16px;right:2px;width:9px} .uiOverlayArrowBottom .uiOverlayArrow{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-74px -392px;bottom:2px;height:9px;width:16px} .uiOverlayWithFooterArrowBottom .uiOverlayArrow{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-91px -392px} .uiOverlayArrowLeft .uiOverlayArrow{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:-64px -415px;height:16px;left:2px;width:9px} .uiTooltipX{position:relative;zoom:1} .uiTooltipX .content{background-color:#282828;color:#fff;font-size: 11px;line-height:14px;padding:4px 8px;text-align:left;white-space:nowrap} .uiTooltipX .tooltipText{max-width:334px} .uiTooltipX .tooltipWrap{white-space:normal;width:334px;word-wrap:break-word} .uiTooltipX .tooltipText span{zoom:1} .uiTooltipX i.arrow{border:4px solid transparent;font-size:0;height:0;line-height:0;position:absolute;width:0} .aboveleft .uiTooltipX,.aboveright .uiTooltipX,.abovecenter .uiTooltipX{margin-bottom:1px;padding-bottom:4px} .aboveleft .uiTooltipX i.arrow,.aboveright .uiTooltipX i.arrow,.abovecenter .uiTooltipX i.arrow{border-bottom:0;border-top-color:#282828;bottom:0} .belowleft .uiTooltipX,.belowright .uiTooltipX,.belowcenter .uiTooltipX{margin-top:1px;padding-top:4px} .belowleft .uiTooltipX i.arrow,.belowright .uiTooltipX i.arrow,.belowcenter .uiTooltipX i.arrow{border-bottom-color:#282828;border-top:0;top:0} .aboveleft .uiTooltipX i.arrow,.belowleft .uiTooltipX i.arrow{left:5px} .aboveright .uiTooltipX i.arrow,.belowright .uiTooltipX i.arrow{right:5px} .abovecenter .uiTooltipX i.arrow,.belowcenter .uiTooltipX i.arrow{left:50%;margin-left:-4px} .left .uiTooltipX{margin-right:1px;padding-right:4px} .left .uiTooltipX i.arrow{border-left-color:#282828;border-right:0;right:0;top:6px} .right .uiTooltipX{margin-left:1px;padding-left:4px} .right .uiTooltipX i.arrow{border-left:0;border-right-color:#282828;left:0;top:6px} .uiFacepileSmall ul{margin-top:-2px} .uiFacepileMedium ul{margin-top:-1px} .uiFacepileLarge ul{margin-top:-3px} .uiFacepile .link{display:inline-block} .uiFacepile .uiFacepileItem .img{vertical-align:bottom} .uiFacepileSmall .uiFacepileItem{margin:2px 2px 0 0} .uiFacepileMedium .uiFacepileItem{margin:1px 1px 0 0} .uiFacepileLarge .uiFacepileItem{margin:3px 3px 0 0} .uiFacepile li:last-child .img{margin-right:0} .uiFacepile .showAll{width:100%} .uiFacepile .showAllLink{border-color:#7792ba;border-width:1px 0 0;padding:3px;vertical-align:middle} .uiFacepileSmall .showAllLink{line-height:18px;margin:2px 2px 0 0} .uiFacepileMedium .showAllLink{line-height:24px;margin:1px 1px 0 0} .uiFacepileLarge .showAllLink{line-height:44px;margin:5px 5px 0 0} .uiFacepile .chatOnline .uiTooltipText{background-position:right center;background-repeat:no-repeat;border-right:7px solid #282828;padding-right:12px} .uiFacepile .chatOnline .uiTooltipText{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yU/r/gATt-jY8pG8.png)} .uiFacepile .chatStatus{border:solid #fff;border-width:1px 0 0 1px;bottom:0;height:5px;position:absolute;right:0;width:5px} .uiFacepile .chatOnline .chatStatus{background:#84ca5a} .uiFacepile .chatOffline .chatStatus,.uiFacepile .chatIdle .chatStatus,.uiFacepile .chatMobile .chatStatus{border:none} .uiProfilePhotoHugeBadCrop{background-position:center 25%} .uiProfilePhotoHuge{width:100px;height:100px} .uiProfilePhotoLarge{width:50px;height:50px} .uiProfilePhotoMedium{width:32px;height:32px} .uiProfilePhotoSmall{width:24px;height:24px} .uiScaledImageContainer{position:relative;overflow:hidden} .uiScaledImageCentered{background-color:#f2f2f2;text-align:center} .uiScaledImageContainer img{height:100%;min-height:100%;position:relative} .uiScaledImageContainer .scaledImageFitWidth{height:auto;width:100%} .uiScaledImageContainer .verticallyAligned{min-height:0;vertical-align:middle} .uiNumberGiant{font-family:arial, helvetica} .uiTypeaheadView{display:block;left:0;position:absolute;top:100%;width:100%} .uiTypeaheadView ul{background:#fff;border:solid;border-width:1px 1px 2px;border-color:#333 #333 #293e6a;overflow:hidden;padding:2px 0} .uiTypeaheadView .freeform{border-top-color:#ddd;padding:2px 6px 1px;text-align:center} .uiTypeaheadView li{border:solid #fff;border-width:1px 0;color:#333;cursor:pointer;display:block;min-height:1px;padding:0 6px;position:relative} .uiTypeaheadView strong{background-color:#d8dfea;color:#3b5998} div.uiTypeaheadView .selected{background-color:#6d84b4;border-color:#3b5998} .uiTypeaheadView .selected,.uiTypeaheadView .selected a,.uiTypeaheadView .selected div,.uiTypeaheadView .selected span{color:#fff !important} .uiTypeaheadView .selected strong{background-color:#5670a6} .uiTypeaheadView .text,.uiTypeaheadView .subtext,.uiTypeaheadView .category{display:block;padding-bottom:2px} .uiTypeaheadView .category{color:#666} .uiTypeaheadView .subtext{color:#999} .uiTypeaheadView .arrow{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/yV/r/IJYgcESal33.png) 0 -413px;display:inline-block;height:7px;margin-left:4px;width:4px} .uiTypeaheadView .selected .arrow{background-position:0 -420px} .uiTypeahead .uiTypeaheadView .calltoaction{background:#f7f7f7;border-bottom:none;border-color:#ddd;display:block;min-height:1px;margin:2px 0 -2px;padding:8px;text-align:center} .uiTypeahead .uiTypeaheadView .calltoaction.selected{background:#6d84b4;border-color:#3b5998} .typeaheadLoading .uiTypeaheadView .calltoaction span.text{visibility:hidden} .typeaheadLoading .uiTypeaheadView .calltoaction{background:#f7f7f7 url(http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/GsNJNwuI-UM.gif) no-repeat 50% 50%} .typeaheadLoading .uiTypeaheadView .calltoaction.selected{background:#6d84b4 url(http://static.ak.fbcdn.net/rsrc.php/v1/y-/r/AGUNXgX_Wx3.gif) no-repeat 50% 50%} .uiTypeaheadView .bucketed ul{padding:0} .uiTypeaheadView .bucketed .header{background-color:#f2f2f2;border-top:1px solid #e2e2e2;border-bottom:none;margin-top:4px;min-height:10px;padding:2px 15px 2px 6px} .uiTypeaheadView .bucketed .header:first-child{border-top:none;margin-top:0} .uiTypeaheadView .bucketed .header .text{color:#000 !important} .uiClearableTypeahead .selected .clear{display:block} .uiClearableTypeahead .clear,.uiTypeaheadDisabled .selected .clear{display:none;position:absolute;margin-top:-7px;right:3px;top:50%} .uiClearableTypeahead .selected{padding-right:16px} .uiTypeaheadDisabled .selected{padding-right:0} .photoTypeahead .photo{display:none;height:16px;left:3px;position:absolute;top:2px;width:16px} .photoTypeahead .selected .photo{display:block} .photoTypeahead .selected .textInput{padding-left:23px} .photoTypeahead.uiTypeaheadDisabled .selected .photo{opacity:.30} .uiTypeahead{background:#fff;border:solid #bdc7d8;border-width:1px 0;cursor:default;position:relative} .uiTypeahead .wrap{border:solid #bdc7d8;border-width:0 1px} .uiTypeahead .innerWrap{overflow:hidden;zoom:1} .uiTypeahead .textInput{background-color:transparent;border:0;outline:0;width:100%} .uiTypeahead .selected{background-color:#e2e8f6} .uiTypeaheadDisabled, .uiTypeaheadDisabled div.wrap{border-color:#ccc} .uiTypeaheadDisabled div.wrap{background:#e2e2e2} .uiTypeaheadDisabled div.wrap .textInput{color:#333} .uiTypeaheadFocused, .uiTypeaheadFocused .uiTypeahead{z-index:1} .uiTypeaheadView .basic img{display:block;float:left;padding-right:4px} .uiTypeahead .uiTypeaheadView .basic .calltoaction{padding:3px} .uiTypeaheadView .compact li{min-height:32px;padding:2px 10px 2px 45px} .uiTypeaheadView .compact .splitpics,.uiTypeaheadView .compact img{display:block;height:32px;left:6px;position:absolute;width:32px} .uiTypeaheadView .compact .text{font-weight:bold} .uiTypeaheadView .compact .details{color:#999;padding-top:0} .uiTypeaheadView .compact .detailsContents{position:relative} .uiTypeaheadView .compact .splitpic{float:left;overflow:hidden;width:15px} .uiTypeaheadView .compact .splitpics img{left:0;margin-left:-8px;position:static} .uiTypeaheadView .compact .splitpics .leftpic{margin-right:1px;width:16px} .uiTypeaheadView .compact .splitpics .toppic{height:15px;margin-bottom:1px} .uiTypeaheadView .compact .splitpics .bottompic{height:16px} .uiTypeaheadView .compact .splitpics .toppic img,.uiTypeaheadView .compact .splitpics .bottompic img{margin-top:-8px} .uiTypeaheadView .compact .friendlist img{background-color:transparent} .uiTypeaheadView .search li{min-height:50px;padding:2px 30px 2px 63px} .uiTypeaheadView .search li a{outline:none} .uiTypeaheadView .search li a:hover{text-decoration:none} .uiTypeaheadView .search .playButton{height:30px;left:16px;top:12px;position:absolute;width:30px;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:0 0} .uiTypeaheadView .search a:hover .playButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:0 -30px} .uiTypeaheadView .search .music_playing a .playButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:0 -60px} .uiTypeaheadView .search .music_playing a:hover .playButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:0 -90px} .uiTypeaheadView .search .song.async_saving a .playButton{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yH/r/C1Y7Ev2JweC.png);background-repeat:no-repeat;background-position:0 -120px} .uiTypeaheadView .search .song.async_saving a .playLoader{position:absolute;width:14px;height:14px;left:24px;top:20px;background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yp/r/DrGcdjdlpCl.gif) no-repeat} .uiTypeaheadView .search img{background-color:#eceff5;display:block;height:50px;left:6px;position:absolute;width:50px} .uiTypeaheadView .search .text{color:#3b5998;font-weight:bold} .uiTypeaheadView .search .subtext{font-size: 9px} .uiTypeaheadView .search .seeMore{color:#3b5998;font-size: 11px;font-weight:bold;padding-bottom:0;padding-right:7px} .uiTypeaheadView .search .web{padding:2px 15px 2px 6px} .uiTypeaheadView .search .question{min-height:14px;padding:3px 30px 3px 6px} .uiTypeaheadView .search .question .text{display:inline} .uiTypeaheadView .search .question .subtext{display:inline;margin-left:5px;white-space:nowrap} .uiTypeaheadView .search .friendlist .photo{background-color:transparent} .uiTypeaheadView .search .text .alias{color:#999;font-weight:normal} .uiBlingBox{border-bottom:1px solid #fff;display:inline-block;padding:3px 4px 3px 2px} .uiBlingBox:hover{text-decoration:none;background-color:#eceff5;border-bottom:1px solid #e5eaf1} .uiBlingBox .text{line-height:11px;vertical-align:text-bottom} .uiBlingBoxSm .text{font-size: 9px} .uiBlingBox .img{margin-right:2px;vertical-align:text-top} .uiBlingBoxSm .img{vertical-align:text-bottom} .uiBlingBox .emptyBling{margin-right:0 !important} .autoexpand_mode .feedback_toggle_link{display:none} .UIActionLinks .uiLinkButton,.UIActionLinks .uiLinkButton input,.UIActionLinks .uiLinkButton input:hover{color:#6b84b4;font-weight:normal;vertical-align:baseline} .collapsed_comments .uiUfi{display:none} .uiUfi{padding-top:2px;width:398px;margin:0} .uiUfi .ufiItem{background-color:#edeff4;border-bottom:1px solid #d2d9e7;margin-top:1px;padding:5px 5px 4px} .uiUfi .uiUfiSpamItem{background-color:#e2e2e2} .uiUfi .uiUfiUnseenItem{border-left:2px solid #a8b2ce;padding-left:3px} .uiUfi .ufiNub{margin-bottom:-2px;margin-top:0} .uiUfi .ufiNub i{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/UvyvLtJTQzO.png);background-repeat:no-repeat;background-position:0 0;display:block;height:5px;margin-left:17px;width:9px} .uiUfi .uiUfiViewAll .uiLinkButton,.uiUfi .uiUfiViewReposts a{display:block} .uiUfiAddComment .actorPic{float:left;margin-right:6px} .uiUfiAddComment .commentArea{padding:0 !important} .uiUfiAddComment .commentBox{padding:0 8px 0 0} .uiUfiAddComment .commentBtn{float:right} .uiUfiAddComment .textBox{display:block;margin:0;width:100%} .child_is_active .uiUfiAddCommentCollapsed .textBox,.child_was_focused .commentArea .inlineShareBox .textBox,.uiUfiAddComment .textBox{height:29px} .uiUfiAddCommentCollapsed .textBox{height:14px} .hidden_add_comment .uiUfiAddComment,.uiUfiAddCommentCollapsed .actorPic,.uiUfiAddComment .commentBtn,.uiUfiAddCommentCollapsed .sendOnEnterTip,.uiUfiAddCommentCollapsed .commentBoxSubtitle,.commentUndoTip{display:none} .child_is_active .uiUfiAddCommentCollapsed .actorPic,.child_is_active .uiUfiAddComment .commentBtn,.child_is_active .sendOnEnterTip,.child_is_active .commentBoxSubtitle,.commentUndone .child_is_focused .commentUndoTip{display:block} .commentUndone .commentBoxSubtitle,.commentUndone .sendOnEnterTip{display:none} .uiUfiAddTip{padding-top:1px;padding-left:0} .uiUfiAddComment .mentionsAddComment .commentBox{padding:0} .uiUfiAddComment .mentionsAddComment .mentionsTypeahead .wrap{padding:3px} .uiUfiAddComment .mentionsAddComment .textBoxContainer{background-color:#fff} .uiUfiAddComment .mentionsAddComment .textBox{padding:0;line-height:13px} .uiUfiAddComment .mentionsAddComment .highlighter{padding:3px} .uiUfiAddComment .mentionsAddComment .highlighter div{line-height:13px} .uiUfiComment .commentContent{padding-top:1px} .uiUfiComment .actorName{font-weight:bold} .uiUfiComment .commentActions{padding-top:2px} .uiUfiComment .deleteAction,.uiUfiComment .commentHideSelector .uiSelectorButton,.uiUfiComment .commentRemoverButton{opacity:0} .uiUfiComment .socialContext a{color:gray} .uiUfiComment:hover .deleteAction,.uiUfiComment:hover .commentHideSelector .uiSelectorButton,.uiUfiSpamItem .commentHideSelector .uiSelectorButton,.uiUfiComment .commentHideSelector .openToggler .uiSelectorButton,.uiUfiComment:hover .commentRemoverButton{opacity:1} .uiUfiFailureShow, .uiUfiCommentFailed .uiUfiFailureHide{display:none} .uiUfiCommentFailed .uiUfiFailureShow{display:block} .uiUfiCommentFailed{background:#f2f2f2 !important;border-left:2px solid #aaa7a2} .uiUfiCommentFailed .actorName, .uiUfiCommentFailed{color:gray} .uiUfiCommentFailed .uiUfiFailureMessage{color:#111} .uiUfiSmall .commentArea .textBox{height:14px} #bootloader_k7Z0E { height: 42px; } ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline Content-Type: image/png Content-Location: http://static.ak.fbcdn.net/rsrc.php/v1/ye/r/nZW4C56WJb6.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAEYAAAAjCAMAAAAeyYxfAAABqlBMVEXT2ejS2egt LS0sLCz////Q1+YuLi4vLy9ERERkZGQqKirQ2OfR2OfQ1+fS2OcpKSnR1+dlZWXT 2Og5OTnM1OXO1ebP1uYrKys6Ojr7/P3S2Oj5+vxjY2NYWFjP1+bk6PFmZmZiYmJF RUVfX1/p7PPN1eVnZ2cyMjLb4OwoKCjO1eU4ODgwMDD+/v4xMTFVVVXQ1uY0NDTV 2+no6/NXV1fp7PTX3epKSkr09vn19/rl6fHz9fn5+fzl6fJeXl5gYGBWVlZaWlr2 9/pUVFRcXFxbW1thYWHm6fLa4OzU2+n3+Pv9/v7c4e38/f3g5e9ISEhdXV3R2eja 3+xJSUny9Pjw8vczMzP6+vzR2Ojy9PlPT0/k6fHY3us/Pz9CQkLp7fTR1+bU2unc 4ezj5/A3Nzc2Njbl6PH7+/z9/f5RUVHq7fT4+fv8/P3T2uk9PT1ZWVnJ0ePK0uTW 3epoaGj09vrT2ujO1ubu8PYlJSXd4u3b4e3O1OXW2+na3+tDQ0M1NTXe4+7k5/Hd 4e3P1eY7Ozv2+PrV3OpSUlLW3OppaWkmJibt8Pbi5vBBQUG8svd/AAAC8klEQVR4 Xt3VVa/bShSAUQ+YHWZmhoPMzMwMZWa+zPyfO4516nEct3npy/2iaBQpWtLeozhM I2B5kK4gx38pxu12q2/roz2GfI8wlsfXZ8xDhd1WR9tMmAxgbxUZK6wzXKt0ppGd dTZ3aWe0rhlkronpfH800tTRbr+TZgK/znQ0NTPTBQ27KQ/jk+ExupMxXGTp3TgE l5A2JKRFDzLcVPnOXW8u56Py+kdvONVprxlJGC85JDpHYC4I1WkpJiQDxU/ls0W+ +6az087oTAbyXADpSXD2lgMFIDUUYeTunmzfp7IP8Nuevuz2Jc3AwsYO1UD0mHy+ hTQmrDH+RTw4RDXyamgI3ynTDKrke3tjeh29sd6XguP6phpMvBgBNsWQLUQYhmI8 szzkDKFxQTIxrAaUfdrJtmCQBkhS44AoQxhqN4Q5YOTDQwDiIJHwAwDCiqwybgNT bWwU8YLQWAkHrxkyvM4AoNh+XMN4nVWsGQ49mUjmzxBnyWxtKWAQY/xQ+RzDTyaj ySlOZ8xDyVfThJkGsjUD6zEx6orx0MCEDYxtaRnXcORP22eYwpSYcs12IZoh0UPJ r39TmSUbABrDmJn6U5UpwBYM61/UduPrwRj/kwNmBgU8myrDSRtkN8cO3ryblRe/ r0fIUAqIf1jBeDXefOEOYb5r/0wdiuNRcF4Ug8h84Tfxo1Bt+rEMgOwdxhhnvWQo 427OXZlMKlZXhyqlXVHXTglWmxj7tz+vFn8aZRT5Tf9FiOymdnGakwHNwP1gsPL9 XBVC6YeBcTElzg/cliBPD0Ucp/OX7QMm3r23hlUF43u7/Taa4TkCVDarqH5/IhlN kVdygjz96AtX3272xqjv2R7WW37uvUsxJOSZk9798ZcY1RLzU3+X9J+mFlvEI4M1 iiEfcYLcFMVU8h2TURdVxyT9oGAAmas7MbZw81+qhYXEqZNmuIIgpM//o0qnhdvQ 8B/O2DvZ5qiHqOYgc/B//h9OGIujbcbOfKG2mI+BW9BfFjHF6QAAAABJRU5ErkJg gg== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=mZ5Ja2mBTZ3.css Content-Type: text/css; charset=utf-8; name=mZ5Ja2mBTZ3.css Content-Location: http://static.ak.fbcdn.net/rsrc.php/v1/yL/r/mZ5Ja2mBTZ3.css Content-Transfer-Encoding: 8bit /*1323824125,169776318*/ .fbDarkWidget .fan_box, .fbDarkWidget .uiStream .uiStreamMessage{color:gray} .fbDarkWidget .fan_box a{color:#ccc} .fan_box .full_widget{border:solid 1px #94a3c4;background:white} .fan_box .full_widget .connect_top{background:#eceff5} .fan_box .connect_top{padding:10px 10px 8px 10px} .pts .fan_box .connect_top{padding:5px 10px 8px 5px} .fan_box .profileimage{float:left;width:40px;height:40px;padding:0 10px 0 0;margin:0 0 4px 0} .fan_box .connect_action{padding:0 0 0 8px} .fan_box .connect_action .name{line-height:15px;font-size: 14px;font-weight:bold} .fan_box .connect_button{padding-top:5px} .fan_box .connect_button .uiButton{margin:1px 0 0 0} .fan_box .connect_action a.undo{margin:0 0 0 3px} .fan_box .page_stream, .fan_box .page_stream_short{text-align:center;padding:0 5px;overflow:auto;border-top:solid 1px #d8dfea;position:relative} .fan_box .storyContent{text-align:left} .fan_box .page_stream{overflow-x:hidden} .fan_box .page_stream .loader{padding-top:20px} .fan_box .UIIntentionalStory{background:transparent;text-align:left;padding:7px 0 0 0} .fan_box .UIIntentionalStory .UIMediaItem_UnknownWidth{max-width:100px} .fan_box .connections{border-top:solid 1px #d8dfea;padding:10px 0 4px 10px;min-height:150px} .pts .fan_box .connections{padding:5px 0 4px 5px} .fan_box .connections .connections_grid{padding-top:5px} .fan_box .connections_grid .grid_item{float:left;padding:0 5px 8px 0;overflow:hidden;width:50px} .fan_box .connections_grid .grid_item .name{font-size: 9px;color:gray;overflow:hidden;padding-top:2px;text-align:center;white-space:nowrap} .fan_box .connect_span{margin:0 0 1px} .fan_box .connect_widget .connect_widget_text{padding:0} .fan_box .connect_widget td.connect_widget_vertical_center{height:20px} .fan_box .connect_widget .connect_widget_interactive_area{margin:5px 0 0} .connect_comment_widget{margin:0 4px;padding:5px 0;position:relative} .connect_comment_widget .nub{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/yv/r/agyQHs6yLID.gif) no-repeat 8px 0;height:6px;width:20px;padding:0;margin:0;left:0;line-height:0;position:absolute;z-index:2;top:0} .connect_comment_widget .side_nub{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/yn/r/vAOEfR4cWQM.gif) no-repeat 0 0;height:20px;width:6px;padding:0;margin:0;left:-5px;line-height:0;position:absolute;z-index:2;top:14px} .connect_comment_widget_rtl .side_nub{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/yK/r/R95msRfVr6a.gif) no-repeat 0 0} .connect_comment_widget .comment_content{background:white;border-color:#333333 #333333 #283e6c;border-style:solid;border-width:1px 1px 2px;zoom:1} .connect_comment_widget .connect_comment_widget_text{padding:8px 8px 4px} .connect_comment_widget .connect_comment_widget_custom_text{color:gray} .connect_comment_widget .connect_comment_widget_placeholder_input{width:304px;color:gray;line-height:16px;height:20px} .connect_comment_widget .connect_comment_widget_placeholder_input_region{padding:8px 8px 5px} .connect_comment_widget .connect_comment_widget_user_pic{display:block;float:left;height:auto;padding:0 5px 0 0;width:50px} .connect_comment_widget .connect_comment_widget_full_input_textarea{height:50px;width:319px} .connect_comment_widget .connect_comment_widget_full_input_region{padding:8px 8px 5px} .connect_comment_widget textarea.connect_comment_widget_disabled{color:gray} .connect_comment_widget.like_button_dark textarea.connect_comment_widget_disabled{color:#dedede} .connect_comment_widget div.connect_comment_share_preview{padding-left:55px;padding-top:6px} .connect_comment_widget div.connect_comment_widget_button_region{padding:8px 8px 5px;text-align:right;background-color:#f2f2f2;border-top:1px solid #bdc7d8} .connect_comment_widget_checkbox_region div.uiinputlabel{display:inline-block;float:left} .connect_comment_widget.like_button_dark div.connect_comment_widget_button_region{background-color:#333;border-top:1px solid #666} .like_button_dark .nub,.like_button_dark .connect_widget_comment_box_upward_nub{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yL/r/7vbl1usLlV8.gif)} .like_button_dark .side_nub{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/yB/r/Gvy8rtIdNBK.gif) no-repeat 0 0;left:-4px} .connect_comment_widget_rtl.like_button_dark .side_nub{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/yp/r/E-2vs4qfO7d.gif) no-repeat 0 0} .like_button_dark .comment_content{background:#111;border:1px solid #666;border-bottom:2px solid #ccc;color:#ccc} .like_button_dark .connect_comment_widget_placeholder_input{border:1px solid #505050;background:#505050;color:#fff} .like_button_dark .connect_comment_widget_full_input_textarea,.like_button_dark .connect_comment_widget_placeholder_input{background-color:#000;border-color:#434343;color:#fff} .like_button_dark .connect_comment_widget_full_input_textarea{color:#fff} .like_button_dark a{color:#fff} .connect_comment_widget .connect_comment_widget_title{font-size: 12px;font-weight:bold;margin-top:-2px} .connect_comment_widget.like_button_dark .connect_comment_widget_title{color:#ccc} .connect_comment_widget .connect_comment_widget_description,.connect_comment_widget .connect_comment_widget_href{font-size: 11px;line-height:11px;margin-bottom:6px} .connect_comment_widget .connect_comment_widget_description{color:#000} .connect_comment_widget.like_button_dark .connect_comment_widget_description{color:#ccc} .connect_widget .connect_widget_interactive_area{border-collapse:collapse} .connect_widget td.connect_widget_vertical_center{border-spacing:0;font-size: 11px;line-height:normal;padding:0} .connect_widget td.connect_widget_button_cell{vertical-align:top} .connect_widget td.connect_widget_confirm_cell{padding-top:4px} .connect_widget .connect_button_slider{position:relative;zoom:1} .connect_widget .connect_widget_button_cell .connect_slide_hide_content{overflow:hidden;width:1px;margin-right:0} .connect_widget .connect_slide_hide_content .connect_button_container{margin-left:1px} .button_count .connect_widget_interactive_area .connect_widget_facebook_favicon,.button_count .connect_widget_interactive_area .connect_widget_text{float:left;position:static} a.connect_widget_like_button{display:block;float:left;border-radius:3px;padding:4px 5px;border:1px solid #000} .button_count a.connect_widget_like_button{padding:2px 4px} a.connect_widget_like_button span{line-height:14px} a.connect_widget_like_button:hover{text-decoration:none} .connect_widget_number_cloud{position:relative;background:#fff;border:1px solid #d3d3d3;height:25px;padding-top:7px;text-align:center} .like_widget_dark div.connect_widget_number_cloud{background-color:#d7d7d7;border-color:#d7d7d7} div.connect_widget_number_cloud table.connect_widget_number_cloud_summary{margin-left:auto;margin-right:auto} div.connect_widget_number_cloud table.connect_widget_number_cloud_summary td{font-size: 13px} .thumbs_up_icon{width:15px;height:15px;margin-right:2px;background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png) -1px -32px no-repeat} .like_widget_dark .thumbs_up_icon{background-position:-1px -2px} .like_widget_dark div.connect_widget_number_cloud_extension a{color:#333} div.connect_widget_number_cloud .connect_widget_text{padding-left:0} .connect_widget_number_cloud_nub{position:absolute;z-index:2;height:7px;width:7px;bottom:-7px;left:5px} .connect_widget_number_cloud_nub s,.connect_widget_number_cloud_nub i{border:solid transparent;border-top-color:#d3d3d3;border-width:5px;display:block;position:relative} .connect_widget_number_cloud_nub i{left:0;top:-12px;border-top-color:#fff} .like_widget_dark .connect_widget_number_cloud_nub s{border-top-color:#d7d7d7} .like_widget_dark .connect_widget_number_cloud_nub i{display:none} .connect_widget_offscreen{position:absolute;top:-10000px} div.connect_widget_number_cloud_extension{font-size: 11px;height:30px;margin-left:4px;margin-right:4px;margin-top:6px} div.connect_widget_number_cloud_extension_icon{margin-left:2px;margin-top:3px} div.connect_widget_number_cloud_extension_text{border-color:#dedede;border-width:1px 0 0 0;border-style:solid;line-height:11px;margin-top:1px;text-align:center} div.connect_widget_number_cloud_extension_text table{width:100%} div.connect_widget_number_cloud_extension_text td{height:30px;text-align:center;vertical-align:middle} div.connect_widget_number_cloud_extension span.like_reminder{color:#777;font-size: 9px} .like_widget_dark div.connect_widget_number_cloud_extension span.like_reminder{color:#333;font-size: 9px} table.connect_widget_button_count_summary,table.connect_widget_simple_summary{background-color:#eceef5;color:#000;font-size: 11px;height:21px} table.connect_widget_button_count_summary div.thumbs_up{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png) no-repeat 3px -32px #eceef5;height:15px;width:18px} td.connect_widget_simple_including div.simple_liked{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png) no-repeat 3px -47px #eceef5;height:15px;width:18px} .like_button_simple .connect_widget_like_button .liketext{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png) no-repeat 0 -47px #eceef5} .connect_widget_rtl table.connect_widget_button_count_summary div.thumbs_up{background-position:-1px 0} table.connect_widget_button_count_summary div.undo{background-color:#eceef5;height:21px;width:18px} .like_button_dark table.connect_widget_button_count_summary div.undo{background-color:#d7d7d7} table.connect_widget_button_count_summary label.undo_button{margin-left:6px;margin-top:4px} table.connect_widget_button_count_summary div.summary_text{padding-left:3px;padding-right:6px;white-space:nowrap} table.connect_widget_simple_summary div.summary_text{padding-left:3px;padding-right:6px;white-space:nowrap;color:#ccc} .like_button_dark table.connect_widget_button_count_summary,.like_button_dark table.connect_widget_simple_summary{background-color:#d7d7d7} .like_button_dark table.connect_widget_button_count_summary div.thumbs_up{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png) no-repeat 3px -3px} .connect_widget_rtl .like_button_dark table.connect_widget_button_count_summary div.thumbs_up{background-position:-1px -3px} .connect_widget_button_count_count{background:#fff;border:1px solid #d1d1d1;float:left;font-weight:normal;height:14px;margin-left:1px;min-width:15px;padding:1px 2px 1px 2px;text-align:center;line-height:14px;white-space:nowrap} .like_button_dark div.connect_widget_button_count_count{background-color:#d7d7d7;border-color:#d7d7d7} .connect_widget_button_count_nub{float:left;position:relative;z-index:2;height:0;width:5px;top:-5px;left:2px} .connect_widget_button_count_nub s,.connect_widget_button_count_nub i{border:solid transparent;border-right-color:#d7d7d7;border-width:4px 5px 4px 0;top:1px;display:block;position:relative} .connect_widget_button_count_nub i{left:2px;top:-7px;border-right-color:#fff} .like_button_dark .connect_widget_button_count_nub i{display:none} td.connect_widget_button_count_excluding{padding:0} td.connect_widget_button_count_including,td.connect_widget_simple_including{padding:0} td.connect_widget_button_count_including .connect_widget_button_count_count.noGrayOut{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/yp/r/qDH1xoDhFBF.gif) no-repeat 4px 2px;padding-left:22px;padding-right:4px} .connect_widget_rtl td.connect_widget_button_count_including .connect_widget_button_count.noGrayOut{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/yp/r/qDH1xoDhFBF.gif) no-repeat 4px 2px;padding-right:22px;padding-left:4px} .connect_widget_like_button .vertical{display:block;top:-6px;left:0;margin:0 3px -6px 0;position:relative;padding:3px 4px 4px 3px;border-top:solid 1px;border-bottom:solid 1px} .button_count .connect_widget_like_button .vertical{padding:2px 3px 3px 2px} .connect_widget_like_button .horizontal{height:100%;width:100%;position:absolute;display:block;top:-3px;left:-3px;padding-left:1px;border-left:solid 1px;border-right:solid 1px} .connect_widget_like_button .corner_mask{overflow:hidden;width:3px;height:3px;position:absolute;display:block} .connect_widget_like_button .corner{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png);height:6px;width:6px;display:block} .connect_widget_like_button .topleft{top:-6px;left:-3px} .connect_widget_like_button .topleft .corner{margin:0 0} .connect_widget_like_button .topright{top:-6px;right:0} .connect_widget_like_button .topright .corner{margin:0 0 0 -3px} .connect_widget_like_button .bottomright{bottom:0;right:0} .connect_widget_like_button .bottomright .corner{margin:-3px 0 0 -3px} .connect_widget_like_button .bottomleft{bottom:0;left:-3px} .connect_widget_like_button .bottomleft .corner{margin:-3px 0 0 0} .connect_widget_like_button .liketext{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png) -1px -33px no-repeat;color:#3b5998;display:block;padding-left:17px;white-space:nowrap} .connect_widget_rtl .connect_button_container .liketext{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png) 34px -33px no-repeat} .connect_widget_like_button .liketextwithimage img{margin-bottom:-2px;margin-right:4px;width:13px} .hidden .connect_widget_like_button .liketextwithimage img{height:0;margin:0;padding:0;width:0} .connect_widget_like_button .fbLikeButtonTrackingPixel{display:inline;height:0;width:0} .button_count .like_button_dark .like_button_no_like .liketext,.button_count .connect_widget_like_button .liketext{background-position:left -47px;margin-left:-1px} .connect_widget .like_button_no_like .piece,.connect_widget .like_button_no_like{background-color:#eceef5;border-color:#cad4e7} .connect_widget .like_button_no_like .corner{background-position:10px -89px} .connect_widget a.like_button_no_like:hover .piece,.connect_widget a.like_button_no_like:hover{background-color:#ebedf4;border-color:#9dacce} .connect_widget .like_button_no_like:hover .corner{background-position:10px -95px} .connect_widget .like_button_pressed,.connect_widget .like_button_pressed .piece{background-color:#ced4e6;border-color:#94a5ca} .connect_widget .like_button_pressed .corner{background-position:10px 55px} .connect_widget .like_button_like .corner{background-position:10px 49px} .connect_widget .like_button_dark .like_button_no_like,.connect_widget .like_button_dark .like_button_no_like .piece{background-color:#d7d7d7;border-color:#cad4e7} .connect_widget .like_button_dark .like_button_no_like .corner{background-position:10px -217px} .connect_widget .like_button_dark .liketext{color:#333;background-position:left -3px;margin-left:-1px} .connect_widget .like_button_dark .like_button_no_like:hover,.connect_widget .like_button_dark .like_button_no_like:hover .piece{background-color:#d9d9d9;border-color:#e9e9e9} .connect_widget .like_button_dark .like_button_no_like:hover .corner{background-position:10px -217px} .connect_widget .like_button_dark .like_button_no_like_pressed,.connect_widget .like_button_dark .like_button_no_like_pressed .piece{background-color:#a8a8a8;border-color:#a8a8a8;border-top-color:#8f8f8f} .connect_widget .like_button_dark .like_button_no_like_pressed .corner{background-position:10px 80px} .connect_widget .like_button_dark .like_button_like .corner{background-position:10px 74px} .connect_widget .connect_text_wrapper{position:relative} .connect_widget div.connect_confirmation_cell{padding:0;margin:0} .connect_widget div.connect_confirmation_cell_like{padding-left:0;position:relative;left:-1px} .connect_widget div.connect_confirmation_cell_no_like{padding-left:7px} .connect_widget .vertical_centering{padding-top:5px} .connect_widget .connect_widget_text{display:block;padding-left:17px;line-height:14px} .button_count .connect_widget_interactive_area .connect_widget_text{padding-left:0;font-weight:bold} .connect_widget .like_button_dark .connect_widget_text,.connect_widget .like_button_dark .connect_widget_confirmation{color:gray} .connect_widget .like_button_dark .connect_widget_text a{color:#fff} .connect_widget .connect_widget_connect_button{float:left} .connect_widget .connect_bar_widget_interactive_area{float:left} .connect_widget .connect_bar_widget_text_cell{width:400px} .connect_widget .connect_widget_icon{padding:4px 0 4px 4px;vertical-align:middle} .connect_widget a.connect_widget_link_inactive{color:gray;text-decoration:none;cursor:default} .connect_widget a.connect_widget_error_text{color:#a00;font-weight:bold} .transparent_widget .uiBoxLightblue{background-color:transparent;background-color:rgba(165, 175, 200, .2)} .transparent_widget .uiBoxWhite,.transparent_widget .fbConnectWidgetFooter{background-color:transparent;background-color:rgba(255, 255, 255, .2)} div.connect_widget_comment_box_nub{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/yn/r/vAOEfR4cWQM.gif) no-repeat 0 0;height:12px;left:-6px;position:absolute;top:6px;width:20px;z-index:3} div.connect_widget_comment_box_upward_nub{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/yv/r/agyQHs6yLID.gif) no-repeat 0 0;height:12px;left:5px;position:absolute;top:-6px;width:20px;z-index:3} .connect_widget_rtl div.connect_widget_comment_box_nub{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/yK/r/R95msRfVr6a.gif) no-repeat 0 0;left:-20px} .connect_widget div.connect_widget_comment_box{background-color:#fff;border-color:#000;border-style:solid;border-width:1px 1px 2px 1px;position:relative;z-index:100} .connect_widget div.connect_widget_comment_box.like_button_dark{background-color:#111;color:#ccc;border-color:#666} .connect_widget div.like_button_dark input.connect_widget_comment_textinput{background-color:#666;border-color:#666;color:#dedede} .connect_widget div.connect_widget_header_text{float:left;height:20px;overflow:hidden;padding-left:7px;padding-top:3px;width:200px} .connect_widget div.connect_widget_cancel_button{cursor:pointer;float:right;padding-right:7px;padding-top:3px} .connect_widget div.connect_widget_comment_text_area_div{padding-left:7px;padding-top:2px} .connect_widget div.connect_widget_comment_area{padding:8px} .connect_widget .connect_widget_comment_textinput{width:325px} .connect_widget .connect_widget_comment_summary{padding:7px 5px 7px 5px} .connect_widget .connect_widget_comment_button{margin-left:-1px} .connect_widget .connect_widget_comment_close_button{margin-left:2px} .connect_widget .like_button_dark .connect_widget_comment_close_button{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yE/r/htZktl244wt.png);background-repeat:no-repeat;opacity:.7} .connect_widget .like_button_dark .connect_widget_comment_close_button:hover{opacity:1} .connect_widget textarea.connect_widget_comment_text_area{height:30px;width:476px} .connect_widget .connect_widget_image{height:30px;width:30px;padding-top:3px;vertical-align:bottom} .connect_widget a.name_tooltip_link{display:block} .connect_widget a.name_tooltip_link .uiTooltipWrap:hover{display:none} .connect_widget .connect_widget_name{text-align:center} .connect_widget .connect_widget_sample_connection{float:left;padding-right:3px;width:30px;padding-top:5px} .connect_widget .connect_widget_user_not_connected{display:none} .connect_widget .connect_bar_widget_sample_connections{float:right} .connect_widget .connect_widget_whats_this{color:#999;font-size: 9px;padding-top:4px} .connect_widget .connect_widget_whats_this a:hover{color:#3b5998;text-decoration:none} .connect_widget .page_stream img{max-width:120px;height:auto} .fbGalleryPrev,.fbDisabledGalleryPrev{float:left;margin-top:50px;opacity:.7} .fbGalleryPrev:hover{opacity:1} .fbGalleryNext,.fbDisabledGalleryNext{float:right;margin-top:50px;opacity:.7} .fbGalleryNext:hover{opacity:1} .fbConnectWidgetTopmost{border:1px solid #aaa;border-top-color:#315c99;overflow:hidden;padding:0;position:relative} div.fbDarkWidget{background-color:transparent} .fbDarkWidget .fbWidgetTitle{color:#fff} .fbDarkWidget a,.fbDarkWidget .profileName{color:#fff} .fbDarkWidget a.uiLinkSubtle{color:gray} div.fbConnectWidgetHeaderTitle{border-width:0 0 1px} div.ConnectActivityLogin{border-width:0 0 1px;zoom:1} .fbRecommendationWidgetContent .recommendations_metadata{padding-top:3px;color:gray} .fbDarkWidget .fbRecommendationWidgetContent .recommendations_metadata{color:#ccc} .fbGalleryImage{max-height:125px;max-width:140px} .fbShowBothHidden{display:none} .fbRecommendationsContainer{display:none} .fbShowBothRecommendationsHighlighted .fbRecommendationsContainer{display:inline} .fbShowBothRecommendationsHighlighted .fbActivityContainer{display:none} .fbActivityContainer{display:inline} .fbGalleryRecommendationsFacepile{position:relative} .fbGalleryRecommendationsFooter{width:150px} .fbGalleryRecommendationsImageBlock{display:block;margin-left:auto;margin-right:auto;text-align:center;height:125px} .fbGalleryRecommendationsImageContainer{width:140px;height:125px;background:#edeff4 url(http://static.ak.fbcdn.net/rsrc.php/v1/ye/r/nZW4C56WJb6.png) repeat 0 0;overflow:hidden;display:inline-block} .fbDarkWidget .fbGalleryRecommendationsImageContainer{background-position:-125px 0} .fbGalleryRecommendationsNode{height:275px} .fbGalleryRecommendationsText{padding-top:3px;height:64px} .fbShowBothActivityHeader{display:none} .fbShowBothRecommendationsHighlighted .fbShowBothActivityHeader{display:inline} .fbShowBothRecommendationsHeader{display:inline} .fbShowBothRecommendationsHighlighted .fbShowBothRecommendationsHeader{display:none} .fbDarkWidget div.ConnectActivityLogin{border-color:#303030;background-color:#000} .fbProfilePic{height:35px;width:35px} .fbImageContainer{width:35px;height:35px;background:#edeff4 url(http://static.ak.fbcdn.net/rsrc.php/v1/ye/r/nZW4C56WJb6.png) no-repeat 0 0;overflow:hidden} .fbDarkWidget .fbImageContainer{background-position:-35px 0} .fbConnectWidgetHeaderTitle{color:#1c2a47;border:1px solid #c6cedd;padding-bottom:7px;padding-top:8px;cursor:default} .fbConnectWidgetHeaderTitleBranded{background:#3b5998;color:#fff;cursor:default;padding-bottom:5px;padding-top:7px} .fbDarkWidget .fbConnectWidgetHeaderTitle{background-color:#333;border:1px solid #444} .fbLoginButton{float:left} .ConnectActivityLoginMessage{color:#666;line-height:14px;vertical-align:top;zoom:1} .fbDarkWidget .ConnectActivityLoginMessage{color:gray} .fbConnectWidgetFooter{bottom:0;cursor:default;position:absolute;width:100%} .transparent_widget .fbDarkWidget .fbConnectWidgetFooter{background-color:transparent} .fbConnectWidgetFooter .fbFooterBorder{border-top:1px solid #ccc;margin:0 6px;padding:4px 3px} .fbDarkWidget .fbConnectWidgetFooter .fbFooterBorder{border-top:1px solid #444} .fbConnectWidgetContent,.fbImageContainer img{visibility:hidden} .fbConnectWidgetContent,.fbGalleryRecommendationsImageContainer img{visibility:hidden} div.fbHalfPage{overflow:hidden} div.fbAdminOptions{float:right} .connect_widget_like_button .liketext{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png) -1px -33px no-repeat} .connect_widget a.like_button_no_like:hover .piece,.connect_widget a.like_button_no_like:hover{background-color:#eceef5;border-color:#9dacce} .uiTooltipWrap{display:none} .connect_widget .like_button_like , .connect_widget .like_button_like .piece{background-color:#eee;border-color:#ddd;cursor:default} .connect_widget .like_button_dark .like_button_like , .connect_widget .like_button_dark .like_button_like .piece{background-color:#444;border-color:#555;cursor:default} .connect_widget .like_button_like .corner{background-position:10px -229px} .connect_widget .like_button_dark .like_button_like .corner{background-position:10px -223px} .connect_widget .like_button_like .liketext{background-image:none;clear:right;color:#aaa} .connect_widget .tombstone_cross{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png) no-repeat 0 -128px;display:block;float:left;height:12px;margin-right:3px;width:14px;z-index:99} .connect_widget .tombstone_cross_static{cursor:default} .like_button_no_like .tombstone_cross{display:none} .like_button_like .tombstone_cross{display:block} .connect_widget .like_button_dark .like_button_like .tombstone_cross{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png) no-repeat 0 -156px} .connect_widget .like_button_like .tombstone_cross:hover{background-position:0 -235px;cursor:pointer} .connect_widget .like_button_like .tombstone_cross_static:hover{background-position:0 -128px;cursor:default} .connect_widget .like_button_simple .like_button_like .tombstone_cross:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/ql9vukDCc4R.png);background-position:0 -128px;cursor:auto;height:12px;margin-left:0;margin-right:3px;margin-top:0;width:14px} .connect_widget .like_button_dark .like_button_like .tombstone_cross:hover{background-position:0 -247px} .connect_widget .connect_button_container .like_button_like .liketext, .connect_widget .connect_widget_connect_button .like_button_like .liketext{padding-left:17px} .connect_widget_comment_box div.connect_widget_comment_box_nub{background:none} .connect_widget .like_button_dark .like_button_like .liketext{color:#666} div.connect_widget div.connect_confirmation_cell_like{padding-left:7px} .fbFeedbackContent.fbDarkWidget{border:none} .fbFeedbackContent .async_saving ul,.fbFeedbackContent .async_saving .indicator,.fbFeedbackContent .async_saving .action_links{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/GsNJNwuI-UM.gif) no-repeat right} .fbFeedbackContent.fbDarkWidget .composerHider{border-bottom:1px solid #666;border-top:1px solid #666} .fbFeedbackContent .composerHider{border-bottom:1px solid #ccc;border-top:1px solid #ccc;margin:0;padding:9px 0 7px} .fbFeedbackContent .composerHider .uiSelector{margin:-3px 1px} .fbFeedbackContent .composerHider .uiSelector .uiSelectorButton,.fbFeedbackContent .composerHider .uiSelector .uiSelectorButton:active,.fbFeedbackContent .composerHider .uiSelector .uiSelectorButton:focus,.fbFeedbackContent .composerHider .uiSelector .uiSelectorButton:hover{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/K8-2F4r57by.png);background-repeat:no-repeat;background-position:right -246px;background-color:transparent;border:none;box-shadow:none;margin:0;outline:0;padding:2px 20px 2px 0} .fbFeedbackContent .composerHider .uiSelector .uiSelectorButton .uiButtonText{color:#333} .fbFeedbackContent.fbDarkWidget .composerHider .uiSelector .uiSelectorButton .uiButtonText{color:#fff} .fbFeedbackContent .composerHider .uiSelector .itemLabel{font-weight:normal} .fbFeedbackContent .composerHider .uiSelector .checked .itemLabel{font-weight:bold} .fbFeedbackContent .composerHider a{font-weight:bold} .fbFeedbackContent .fbThirdPartyIcon{position:relative;right:1px;top:4px} .fbCommentContext .fbCommentContextPosts{overflow-x:hidden;overflow-y:auto;max-height:400px} .fbCommentContext .fbCommentContextPosts .fbTopLevelComment{padding-top:0} .fbCommentContext .composerGrid{width:100%} .fbCommentContext .composerTight{width:0} .fbCommentContext .composerReply .uiButton{margin-right:4px} .fbFeedbackContent .composer{background-color:transparent;background-color:rgba(190, 190, 190, .2);border:solid #e9e9e9;border-width:1px 0;padding:7px 10px 7px 69px;position:relative} .fbFeedbackContent.fbDarkWidget .composer{background-color:#333;border-color:#666} .fbFeedbackContent .fbFeedbackPosts .composer{margin-left:-10px} .fbFeedbackContent .fbFeedbackPostsContainer .fbFeedbackPosts{padding:0} .fbFeedbackContent .noTopBorder{border-top:0 !important} .fbDarkWidget .fbCommentContext .composer{background-color:#555;border:none} .fbCommentContext .composer{background-color:#f2f2f2;border:1px solid #ccc;margin-top:4px;padding-bottom:4px;padding-top:4px;padding-left:70px;position:relative} .fbFeedbackContent .composer .uiProfilePhoto{background-color:#ddd;margin:2px 0 0 0;padding:0 !important;position:absolute;left:10px} .fbFeedbackContent.fbDarkWidget .fbFeedbackTypeahead,.fbFeedbackContent.fbDarkWidget .fbFeedbackTypeahead .wrap{border-color:#434343} .fbFeedbackContent.fbDarkWidget .fbFeedbackMentions .mentionsTextarea,.fbFeedbackContent .fbFeedbackMentions .mentionsTextarea{border-width:0;padding:0;margin:0;box-shadow:none;background-color:transparent} .fbFeedbackContent.fbDarkWidget .fbFeedbackMentions{background-color:#000} .fbFeedbackContent .fbFeedbackMentions{background-color:#fff;margin:2px 0} .fbFeedbackContent .fbFeedbackMentions .innerWrap{padding:3px} .fbFeedbackContent .fbFeedbackMentions .highlighter{left:0;top:0} .fbFeedbackContent .fbFeedbackMentions .highlighter div{line-height:13px} .fbFeedbackContent.fbDarkWidget .fbFeedbackMentions .highlighter b{background-color:#444} .fbCommentContext .textwrapper,.fbFeedbackContent .textwrapper{padding:0 8px 0 0} .fbFeedbackContent .postToProfile{position:relative;width:135px} .fbFeedbackContent .postToProfile input{position:relative;top:2px} .fbFeedbackContent div.commentas{color:gray;float:right;margin:4px 6px} .fbFeedbackContent div.postToProfile{float:left} .fbFeedbackContent .indicator{float:left;margin:3px 0 0 0} .fbFeedbackContent select.commentas{float:right;margin:1px 6px} .hideCommentas .commentas{display:none} .fbCommentContext.fbDarkWidget .composer textarea,.fbFeedbackContent.fbDarkWidget .composer textarea{color:#fff;background-color:#000;border:1px solid #434343} .fbCommentContext .composer textarea,.fbFeedbackContent .composer textarea{border-width:0;border:1px solid;border-color:#899bc5;padding:3px;width:100%} .fbFeedbackContent .replywrapper{padding:0 8px 0 0} .fbCommentContext .viewerProfilePic{float:left} .fbCommentContext .replywrapper{width:100%} .fbCommentContext .replywrappermargin{margin:0 9px} .fbCommentContext .replywrappermargin .textarea{margin-left:-4px} .fbFeedbackContent.fbDarkWidget .composerReply{border-top:1px solid #666} .fbFeedbackContent .composerReply{border-top:1px solid #e9e9e9} .fbFeedbackContent .composerReply{padding-top:8px} .fbFeedbackContent .composerReply textarea{width:100%} .fbFeedbackContent .postContent .action_links{margin-bottom:8px} .fbFeedbackContent .postBlingBox{border:none;bottom:1px;cursor:text;padding:0;position:relative} .fbFeedbackContent .postBlingBox:hover{background-color:transparent;border:none} .fbFeedbackContent .fbUpDownVoteAfterLogin{display:inline} .fbFeedbackContent .fbFeedbackPager{margin-left:0} .fbFeedbackContent .fbFeedbackPager .fbFeedbackPagerLink{padding:8px} .fbFeedbackContent .fbFeedbackReplyPager .fbFeedbackPagerLink{padding:5px 8px} .fbFeedbackContent .fbFeedbackPager .fbFeedbackPagerLink:hover{text-decoration:none} .fbFeedbackContent .postReplies .pagerLoader{padding-left:2px} .fbFeedbackContent{min-height:160px} .fbCommentContext .fbFeedbackContent{min-height:0} .fbFeedbackContent .fbFeedbackPosts{padding:0 0 0 10px} .fbFeedbackContent .star{height:11px;width:11px} .fbFeedbackContent .followLinkInlineCheck,.fbFeedbackContent .followLinkInlineCheckDark{margin-right:4px} .fbFeedbackContent .post{margin-top:4px} .fbFeedbackContent .post input{margin-left:0} .fbCommentContext .post .uiSelector,.fbCommentContext .cancel .uiSelector,.fbFeedbackContent .post .uiSelector,.fbCommentContext .post .uiButton,.fbCommentContext .cancel .uiButton,.fbFeedbackContent .post .uiButton{float:right} .fbCommentContext .post .uiSelector .uiButton,.fbCommentContext .cancel .uiSelector .uiButton,.fbFeedbackContent .post .uiSelector .uiButton{float:none} .fbFeedbackContent .post label.desc{font-weight:normal;position:absolute;top:4px} .fbFeedbackContent .profileName{font-size: 11px} .fbFeedbackContent .objectListItem{border:solid #e2e2e2;border-width:1px 0 0;clear:both;padding-bottom:0 !important;padding-top:10px} .fbFeedbackContent.fbDarkWidget .objectListItem{border-color:#555} .fbFeedbackContent li.fbTopLevelComment:first-of-type{border-width:0} .fbFeedbackContent li.fbTopLevelComment:last-of-type{margin-bottom:-5px} .fbDarkWidget .fbFeedbackReplies .objectListItem{border-color:#444} .fbFeedbackReplies .objectListItem{border-width:0 0 1px 0;border-color:#e9e9e9} .fbFeedbackReply form,.fbFeedbackContent .postReply,.postReplies{margin-top:8px} .postReplies .uiMorePagerLight .uiMorePagerPrimary:hover{background-color:transparent;background-color:rgba(225, 228, 237, .6)} .postReplies .uiMorePagerInverted .uiMorePagerPrimary,.postReplies .uiMorePagerInverted .uiMorePagerLoader{background-color:transparent;border-width:1px 0 0 0;border-color:#444} .fbFeedbackContent .uiMorePagerInverted .uiMorePagerPrimary:hover{background-color:#444;border-color:#555} .fbDarkWidget .closeButton .uiCloseButton,.fbDarkWidget .closeButton .openToggler .uiCloseButton,.fbDarkWidget .closeButtonAfterLogin .uiCloseButton{border:1px solid #000;margin:0} .fbFeedbackContent .postContainer:hover .closeButton,.fbFeedbackContent .postContainer:hover .closeButtonAfterLogin{visibility:visible} .fbFeedbackContent .postContainer .closeButton,.fbFeedbackContent .postContainer .closeButtonAfterLogin{float:right;visibility:hidden} .fbFeedbackPost{position:relative} .fbFeedbackPost .postContent{margin-top:5px} .fbDarkWidget .fbFeedbackPost .postText{color:#ccc} .fbFeedbackPost .postText{color:#1a1a1a;line-height:14px;margin:0 28px 5px 0} .fbFeedbackPost .UIImageBlock_Entity .UIImageBlock_Content{height:auto} .fbDarkWidget .fbFeedbackPost .UIImageBlock_Image{background-color:#333} .fbFeedbackPost .UIImageBlock_Image{background-color:#ededed;margin-bottom:8px;margin-right:11px} .fbFirstPartyPost .uiTextTitle{font-size: 11px} .fbFeedbackReplyPager{height:16px;margin-bottom:8px} .fbFeedbackContent .fbConnectWidgetFooter{position:static} .fbFeedbackContent .fbConnectWidgetFooter .fbFooterBorder{margin:5px 0 0 0} .fbTopLevelComment .fbFeedbackReplies .fbCommentReply{border-width:1px 0 0} .fbFeedbackContent .fbCommentOverlay{border-style:solid;border-width:1px;position:absolute;top:0;left:0;bottom:0;right:0;opacity:.90;font-size: 12px} .fbFeedbackContent .fbReportedByUser{background-color:#fff;border-color:#eee} .fbFeedbackContent .fbRecentlyBlacklisted{background-color:#444;border-color:#1a1a1a} .fbFeedbackContent .fbRecentlyPublicized{background-color:#e4ffe2;border-color:#d2f1d0} .fbFeedbackContent .fbRecentlyPrivatized{background-color:#fffbe8;border-color:#f7e0ff} .fbFeedbackContent .fbCommentOverlayInsert{position:absolute;top:50%;margin-top:-0.5em;text-align:center;width:100%} .fbFeedbackContent .fbCommentDownvotedButVisible .postText{color:gray} .fbFeedbackContent .fbCommentOverlayDark{color:#000} .fbFeedbackContent .fbCommentOverlayLight{color:#fff} .fbFeedbackContent .fbCommentOverlayLight a:link,.fbFeedbackContent .fbCommentOverlayLight a:hover,.fbFeedbackContent .fbCommentOverlayLight a:visited,.fbFeedbackContent .fbCommentOverlayLight a:active{color:#999} .fbCommentsEditSettings .uiInfoTable .label{width:145px;vertical-align:middle} .fbCommentsEditSettings .uiInfoTable tr{border-top:1px solid #ccc} .fbCommentsEditSettings .uiInfoTable tr:first-child{border:none} .fbCommentsEditSettings .uiInfoTable th{padding:10px 5px 10px 0} .fbCommentsEditSettings .uiInfoTable td{padding:10px 0 10px 5px} .fbCommentsEditSettings .uiInfoTable tr:first-child th,.fbCommentsEditSettings .uiInfoTable tr:first-child td{padding-top:0} .fbCommentsEditSettings .uiInfoTable tr:nth-last-child(2) th,.fbCommentsEditSettings .uiInfoTable tr:nth-last-child(2) td{padding-bottom:0} .fbCommentsEditSettings .uiInfoTable tr:last-child,.fbCommentsEditSettings .uiInfoTable tr.custom_blacklist{border:none} .fbCommentsEditSettings .uiInfoTable tr.custom_blacklist th,.fbCommentsEditSettings .uiInfoTable tr.custom_blacklist td{padding:0 5px 10px 5px} .fbDarkWidget .warning a{color:gray} body.plugin{background:transparent;overflow:hidden} .email{width:500px;margin:auto;padding:10px;border:solid 1px #ccc;background:white;font-family:monospace} .confirm_email .send_buttons{width:500px;margin:auto;padding-top:10px} .req_preview{background:white} .confirm_req .req_preview{border:1px solid #ccc} .req_preview .confirm{border:0} .preview_background{padding:20px;background:#f7f7f7;border-top:1px solid #ccc} .confirm_req .recipients,.req_preview,.confirm_req .send_buttons{width:434px;padding:5px} .confirm_req .recipients,.confirm_req .req_preview,.confirm_req .send_buttons{margin:auto} .req_preview .inputbutton{color:#666;background-color:#fff;border-bottom:1px solid #999;border-right:1px solid #999} .confirm_req .send_buttons{padding-top:10px} .confirm_req .recipients{background:white;border:1px solid #ccc;border-bottom:0} h2.req_conf_header{padding:5px} .req_dialog .dialog_body{background:#f7f7f7} .req_confirmation h3{font-size: 11px} .req_confirmation .req_recipients{padding:9px 20px 0 16px;margin:0} .req_confirmation .req_recipients h3{padding-left:52px} .req_confirmation .req_recipients strong{float:left;padding:4px 0;margin-left:-52px} .req_confirmation .req_recipients .token{font-weight:normal;float:left;display:block;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yK/r/mD9hhq3V835.gif);background-repeat:no-repeat;color:#000;margin:2px;white-space:nowrap} .req_confirmation .req_recipients .token span{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yK/r/mD9hhq3V835.gif);background-position:top right;background-repeat:no-repeat;display:block} .req_confirmation .req_recipients .token span span{background-position:bottom right} .req_confirmation .req_recipients .token span span span{background-position:bottom left} .req_confirmation .req_recipients .token span span span span{background-image:none;padding:2px 3px 3px 5px} .req_confirmation .req_recipients .token:hover,.req_confirmation .req_recipients .token:hover span{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/ym/r/Ze4Z6J_Shqw.gif);text-decoration:none} .req_confirmation .req_recipients .simple{padding:2px 2px 3px 2px;white-space:wrap} .req_confirmation .req_recipients .simple:hover{background:none} .req_confirmation .req_recipients a.hide{background-repeat:no-repeat;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yV/r/pFoKUTi0nJ6.gif);background-position:3px 2px;padding:0 8px 0 3px;text-decoration:none} .req_confirmation .req_recipients a.hide:hover{text-decoration:none} .req_confirmation .req_preview{margin:12px 7px 0 0;position:relative;min-height:177px;width:100%} .req_confirmation .req_preview_with_background{background:url(http://static.ak.fbcdn.net/rsrc.php/v1/yq/r/9KprPryaw2M.gif) no-repeat 16px -17px} .req_confirmation .req_no_preview{margin:12px 7px 0 0;position:relative;min-height:20px;width:100%} .req_confirmation .req_preview_guts{position:relative;top:-18px;left:94px;width:404px;padding:8px 8px 4px 8px;border:1px solid #3b5998;background:#fff} .req_confirmation .req_preview_guts h4{font-size: 13px;padding:0 2px 4px 22px;background-repeat:no-repeat;background-position:top left;border-bottom:1px solid #ccc} .req_confirmation .req_preview_guts .fbpage_title{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yN/r/xC785tTCIQO.gif)} .req_preview_guts .requestBody{width:100%} .req_confirmation .req_preview h3{border:none;padding-left:11px} .req_confirmation .req_preview h3 span{display:block;float:left;padding:2px} .req_confirmation .req_send_buttons{text-align:right;float:right;padding:0 18px 9px 10px} .req_confirmation .req_send_buttons input{padding:3px 10px;margin-right:5px} .send_buttons input{margin-right:5px} .req_confirmation .req_send_buttons .inputbutton{background-color:#efefef;border-right:1px solid #5d5d5d;border-bottom:1px solid #5f5f5f;color:#000} .generic_dialog_popup .send_buttons{float:right} .req_confirmation .info .link_placeholder{color:#3b5998} .req_confirmation #req_msg_add{margin:0;padding:4px 15px 4px 16px} .req_confirmation #req_dont_send{float:right;margin:-3px 0 0 0;padding:0 6px 4px 4px} .req_confirmation #req_dont_send #label_dosend{color:#333;font-weight:normal} .req_confirmation #req_msg_add span{color:#333;display:block;float:left;padding:3px 0 4px 0;margin:0 5px 0 0} .req_confirmation .inputcheckbox{margin-bottom:0} .req_confirmation .req_conf_expl{padding:7px 20px 20px 20px} .req_confirmation #req_msg_add #personal_msg_add{display:block;padding:1px 1px 1px 56px} .req_confirmation #req_msg_add #personal_msg_add{display:block;padding:1px 1px 1px 56px} .req_confirmation #req_msg_add #personal_msg_box span{font-weight:bold} .req_confirmation #req_msg_add #personal_msg_box span a{font-weight:normal} .req_confirmation #req_msg_add #personal_msg_add a{float:left} .req_confirmation #req_msg_add #personal_msg_box a{font-size: 9px} .req_confirmation #req_msg_add #personal_msg_box a{display:block;float:left;padding-top:3px} .sp_afc3p3{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yL/r/Fn_lZuLFHmH.png);background-repeat:no-repeat;display:inline-block;height:10px;width:10px} .sx_efd7f6{width:11px;background-position:-0px -0px} .sx_07776e{background-position:-0px -11px} .sx_5d8e7c{background-position:-0px -22px} .sp_comments{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yv/r/gALanm7_TWn.png);background-repeat:no-repeat;display:inline-block;height:16px;width:16px} .sx_comments_favicon{background-position:-0px -153px} .sx_comments_cfavicon{width:14px;height:14px;background-position:-0px -187px} .sx_comments_yahoo{background-position:-17px -153px} .sx_comments_aol{background-position:-34px -153px} .sx_comments_msft{background-position:-0px -170px} .sx_comments_pyahoo{width:50px;height:50px;background-position:-0px -0px} .sx_comments_paol{width:50px;height:50px;background-position:-0px -51px} .sx_comments_pmsft{width:50px;height:50px;background-position:-0px -102px} .sx_comments_star{width:11px;height:10px;background-position:-0px -202px} .sx_comments_darkstar{width:11px;height:10px;background-position:-28px -187px} .sx_comments_arrowb{width:9px;height:5px;background-position:-33px -202px} .sx_comments_arroww{width:9px;height:5px;background-position:-23px -202px} .sx_comments_like{width:15px;height:13px;background-position:-33px -170px} .sx_comments_darklike{width:15px;height:13px;background-position:-17px -170px} .sx_comments_subscribe{width:12px;height:14px;background-position:-15px -187px} .sx_comments_subscribedark{width:10px;height:10px;background-position:-40px -187px} .sx_comments_followLinkInlineCheck{width:9px;height:11px;background-position:-0px -213px} .sx_comments_followLinkInlineCheckDark{width:10px;height:10px;background-position:-12px -202px} .sp_recommendations{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v1/yM/r/tc6kQtD6Y3L.png);background-repeat:no-repeat;display:inline-block;height:14px;width:14px} .sx_recommendations_favicon{background-position:-0px -0px} .uiMorePagerInverted .uiMorePagerPrimary, .uiMorePagerInverted .uiMorePagerLoader{padding:6px 5px 10px;border:1px solid #444} .uiMorePagerInverted .uiMorePagerPrimary:hover{background-color:#444} .uiMorePagerInverted .uiMorePagerSecondary{margin:6px 5px} .connect_widget{overflow:hidden} .connect_widget .connect_widget_facebook_logo_menubar{background-color:#3b5998;border:1px solid #244588;border-bottom:none;margin-bottom:-1px;position:relative} .connect_widget .connect_widget_facebook_logo{padding:3px 0 5px 6px;float:left} .connect_widget .connect_widget_facebook_logo span{background:transparent url(http://static.ak.fbcdn.net/rsrc.php/v1/yx/r/zZEOQP4uOC1.gif) no-repeat scroll 0 0;display:block;height:17px;width:90px} .connect_widget .connect_widget_facebook_logo:hover span{background-position:left -17px} .connect_widget .connect_widget_menu_options{float:right} .connect_widget .connect_widget_menu_link{float:left;height:17px;margin-right:5px;padding:5px 5px 3px 5px;color:#fff;font-size: 11px} .connect_widget .connect_widget_menu_link:hover{background-color:#5c75aa;text-decoration:none} #bootloader_2wkHm { height: 42px; } ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=WNauUmsmuGC.js Content-Type: application/x-javascript; charset=utf-8; name=WNauUmsmuGC.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v1/yx/r/WNauUmsmuGC.js Content-Transfer-Encoding: Base64 LyoxMzIzNjY2MDA5LDE3NjgyMDY2NCovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbImFyb0dNIl0pOyB9CgpmdW5j dGlvbiBpbmNvcnBvcmF0ZV9mcmFnbWVudChhKXt2YXIgYz0vXig/Oig/OlteOlwv PyNdKyk6KT8oPzpcL1wvKD86W15cLz8jXSopKT8oW14/I10qKSg/Olw/KFteI10q KSk/KD86IyguKikpPy87dmFyIGI9Jyc7YS5ocmVmLnJlcGxhY2UoYyxmdW5jdGlv bihkLGcsaCxmKXt2YXIgZSxpO2U9aT1nKyhoPyc/JytoOicnKTtpZihmKXtmPWYu cmVwbGFjZSgvXighfCUyMSkvLCcnKTtpZihmLmNoYXJBdCgwKT09Jy8nKWU9Zi5y ZXBsYWNlKC9eXC8rLywnLycpO31pZihlIT1pKXtpZih3aW5kb3cuX3NjcmlwdF9w YXRoKWRvY3VtZW50LmNvb2tpZT0icmRpcj0iK3dpbmRvdy5fc2NyaXB0X3BhdGgr IjsgcGF0aD0vOyBkb21haW49Iit3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUucmVw bGFjZSgvXi4qKFwuZmFjZWJvb2tcLi4qKSQvaSwnJDEnKTt3aW5kb3cubG9jYXRp b24ucmVwbGFjZShiK2UpO319KTt9aWYod2luZG93Ll9pbmNvcnBvcmF0ZV9mcmFn bWVudClpbmNvcnBvcmF0ZV9mcmFnbWVudCh3aW5kb3cubG9jYXRpb24pOwp3aW5k b3cuX19ERVZfXz13aW5kb3cuX19ERVZfX3x8MDtpZighd2luZG93LnNraXBEb21h aW5Mb3dlciYmZG9jdW1lbnQuZG9tYWluLnRvTG93ZXJDYXNlKCkubWF0Y2goLyhe fFwuKWZhY2Vib29rXC4uKi8pKWRvY3VtZW50LmRvbWFpbj13aW5kb3cubG9jYXRp b24uaG9zdG5hbWUucmVwbGFjZSgvXi4qKGZhY2Vib29rXC4uKikkL2ksJyQxJyk7 ZnVuY3Rpb24gYmFnb2Zob2xkaW5nKCl7fWZ1bmN0aW9uIGJhZ29mKGEpe3JldHVy biBmdW5jdGlvbigpe3JldHVybiBhO307fWlmKCFEYXRlLm5vdylEYXRlLm5vdz1m dW5jdGlvbiBub3coKXtyZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7fTtpZigh QXJyYXkuaXNBcnJheSlBcnJheS5pc0FycmF5PWZ1bmN0aW9uKGEpe3JldHVybiBP YmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSk9PSdbb2JqZWN0IEFycmF5 XSc7fTtFbnY9d2luZG93LkVudnx8e307RW52LnN0YXJ0PUVudi5zdGFydHx8RGF0 ZS5ub3coKTtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NOYW1lPWRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc05hbWUucmVwbGFjZSgnbm9fanMnLCcn KTsKd2luZG93LnJlcXVpcmV8fChmdW5jdGlvbigpe3ZhciB6PXt9LHc9e30sbj0w LHk9dGhpcyxpPTEsbD0yLGo9J3NwZWNpYWwnLGQ9J2V4cG9ydHMnLGM9J2RlcGVu ZGVuY2llcycsZz0nbW9kdWxlJyxtPSd3YWl0aW5nJyxlPSdmYWN0b3J5JyxrPXVu ZGVmaW5lZCxiPSdkZWZpbmUnLGY9J2dsb2JhbCcsaD0ncmVxdWlyZScsYT0nY29u dGV4dCc7ZnVuY3Rpb24gemEoemkpe3ZhciB6az16W3ppXSx6ZCx6aDtpZih6a1tt XSYmemtbal0mbClxKCk7aWYoIXprW2RdKXt2YXIgemY9emtbZF09e30semc9emtb ZV07aWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHpnKT09PSdbb2Jq ZWN0IEZ1bmN0aW9uXScpe3ZhciB6Yz1bXSx6ZT16a1tjXSx6aj16ZS5sZW5ndGg7 aWYoemtbal0mbCl6aj1NYXRoLm1pbih6aix6Zy5sZW5ndGgpO2Zvcih6aD0wO3po PHpqO3poKyspe3pkPXplW3poXTt6Yy5wdXNoKHpkPT09Zz96azooemQ9PT1kP3pm OnphKHpkKSkpO312YXIgemw9emcuYXBwbHkoemtbYV18fHksemMpO2lmKHpsKXpr W2RdPXpsO31lbHNlIHprW2RdPXpnO31yZXR1cm4gemtbZF07fWZ1bmN0aW9uIHUo emcsemUsemYsemQsemMpe2lmKHplPT09ayl7emU9W107emY9emc7emc9cygpO31l bHNlIGlmKHpmPT09ayl7emY9emU7emU9emc7emc9cygpO31pZih6W3pnXSlyZXR1 cm47dmFyIHpoPXtpZDp6Z307emhbZV09emY7emhbY109emU7emhbYV09emM7emhb al09emQ7elt6Z109emg7byh6Zyk7fWZ1bmN0aW9uIHgoemQsemUsemMpe3UoemQs emUsayxpLHpjKTt9ZnVuY3Rpb24gcSgpe3ZhciB6ZD17fSx6Yztmb3IoemMgaW4g dylpZih6W3pjXSYmIXpkW3pjXSYmelt6Y11bal0mbClyKHt9LHpjLHpkKTt9ZnVu Y3Rpb24gcih6Zix6Yyx6Zyl7emdbemNdPTE7dmFyIHplPXdbemNdLHpkO2lmKCF6 ZSlyZXR1cm47emZbemNdPTE7Zm9yKHpkIGluIHplKXtpZighelt6ZF1bal0mbClj b250aW51ZTtpZih6Zlt6ZF0pe2RlbGV0ZSB6ZVt6ZF07elt6ZF1bbV0tLTtpZigh elt6ZF1bbV0pdCh6ZCk7fWVsc2Ugcih6Zix6ZCx6Zyk7fXpmW3pjXT0wO31mdW5j dGlvbiBzKCl7cmV0dXJuICdfX21vZF9fJytuKys7fWZ1bmN0aW9uIG8oemUpe3Zh ciB6Zj16W3plXTt2YXIgemc9MDtmb3IodmFyIHpkPTA7emQ8emZbY10ubGVuZ3Ro O3pkKyspe3ZhciB6Yz16ZltjXVt6ZF07aWYoIXpbemNdfHx6W3pjXVttXSl7d1t6 Y118fCh3W3pjXT17fSk7d1t6Y11bemVdPTE7emcrKzt9fXpmW21dPXpnO2lmKCF6 Zyl0KHplKTt9ZnVuY3Rpb24gdCh6ZCl7dmFyIHplPXpbemRdO2lmKHplW2pdJmkp emEoemQpO3ZhciB6Zj13W3pkXTtpZih6Zil7ZGVsZXRlIHdbemRdO2Zvcih2YXIg emMgaW4gemYpaWYoIS0telt6Y11bbV0pdCh6Yyk7fX1mdW5jdGlvbiBwKHpkLHpj KXt6W3pkXT17aWQ6emR9O3pbemRdW2RdPXpjO31wKGcsMCk7cChkLDApO3AoYix1 KTtwKGYseSk7cChoLHphKTt1LmFtZD17fTt5W2JdPXU7eVtoXT16YTt6YS5lbnN1 cmU9eDt2YXIgemI9ZmFsc2U7dmFyIHY9ZnVuY3Rpb24oemYsemQsemUsemMpe3Uo emYsemQsemUsemN8fGwpO2lmKHpbemZdW21dJiYhemIpemI9c2V0VGltZW91dChm dW5jdGlvbigpe3EoKTt6Yj1mYWxzZTt9LDkpO307eS5fX2Q9ZnVuY3Rpb24oemYs emQsemUsemMpe3pkPVtmLGcsaCxkXS5jb25jYXQoemQpO3YoemYsemQsemUsemMp O307eS5fX2U9ZnVuY3Rpb24oemYsemQsemUsemMpe3pkPVtmLGgsZyxkXS5jb25j YXQoemQpO3YoemYsemQsemUsemMpO307fSkoKTsKX19lKCJoYXNBcnJheU5hdHVy ZSIsW10sZnVuY3Rpb24oYixlLGQsYSl7ZnVuY3Rpb24gYyhmKXtyZXR1cm4gKCEh ZiYmKHR5cGVvZiBmPT0nb2JqZWN0J3x8dHlwZW9mIGY9PSdmdW5jdGlvbicpJiYo J2xlbmd0aCcgaW4gZikmJiEoJ3NldEludGVydmFsJyBpbiBmKSYmKE9iamVjdC5w cm90b3R5cGUudG9TdHJpbmcuY2FsbChmKT09PSJbb2JqZWN0IEFycmF5XSJ8fCgn Y2FsbGVlJyBpbiBmKXx8KCdpdGVtJyBpbiBmKSkpO31kLmV4cG9ydHM9Yzt9KTsK X19lKCJBcnJheVV0aWxzIixbImhhc0FycmF5TmF0dXJlIiwiQXJyYXlVdGlscyJd LGZ1bmN0aW9uKGMsZixlLGIpe3ZhciBkPWYoImhhc0FycmF5TmF0dXJlIik7dmFy IGE9e2NyZWF0ZUZyb206ZnVuY3Rpb24oaCl7aWYoIWQoaCkpcmV0dXJuIFtoXTtp ZihoLml0ZW0pe3ZhciBnPWgubGVuZ3RoLGk9bmV3IEFycmF5KGcpO3doaWxlKGct LSlpW2ddPWhbZ107cmV0dXJuIGk7fXJldHVybiBBcnJheS5wcm90b3R5cGUuc2xp Y2UuY2FsbChoKTt9fTtlLmV4cG9ydHM9YTt9KTsKX19lKCJjb3B5UHJvcGVydGll cyIsW10sZnVuY3Rpb24oYyxlLGQsYil7ZnVuY3Rpb24gYShnLGgpe2c9Z3x8e307 aD1ofHx7fTtmb3IodmFyIGYgaW4gaClnW2ZdPWhbZl07aWYoaC5oYXNPd25Qcm9w ZXJ0eSYmaC5oYXNPd25Qcm9wZXJ0eSgndG9TdHJpbmcnKSYmKHR5cGVvZiBoLnRv U3RyaW5nIT0ndW5kZWZpbmVkJykmJihnLnRvU3RyaW5nIT09aC50b1N0cmluZykp Zy50b1N0cmluZz1oLnRvU3RyaW5nO3JldHVybiBnO31kLmV4cG9ydHM9YTt9KTsK X19lKCJ1dGlsIixbXSxmdW5jdGlvbihiLGQsYyxhKXtpZih0eXBlb2YgY29uc29s ZT09J3VuZGVmaW5lZCcpYi5jb25zb2xlPXtsb2c6YmFnb2Zob2xkaW5nLGluZm86 YmFnb2Zob2xkaW5nLHdhcm46YmFnb2Zob2xkaW5nLGRlYnVnOmJhZ29maG9sZGlu ZyxkaXI6YmFnb2Zob2xkaW5nLGVycm9yOmJhZ29maG9sZGluZ307Yi5VdGlsPWMu ZXhwb3J0cz1iLmNvbnNvbGU7fSwzKTsKX19lKCJhcmJpdGVyIixbIkFycmF5VXRp bHMiLCJjb3B5UHJvcGVydGllcyIsImhhc0FycmF5TmF0dXJlIiwidXRpbCJdLGZ1 bmN0aW9uKGcsaixpLGYpe3ZhciBiPWooJ0FycmF5VXRpbHMnKTt2YXIgZT1qKCdj b3B5UHJvcGVydGllcycpO3ZhciBoPWooJ2hhc0FycmF5TmF0dXJlJyk7dmFyIGM9 aigndXRpbCcpO3ZhciBkPW51bGw7ZnVuY3Rpb24gayhsKXtkPWw7fWlmKCF3aW5k b3cuYXN5bmNfY2FsbGJhY2spd2luZG93LmFzeW5jX2NhbGxiYWNrPWZ1bmN0aW9u KGwsbSl7cmV0dXJuIGw7fTtmdW5jdGlvbiBhKCl7ZSh0aGlzLHtfbGlzdGVuZXJz OltdLF9ldmVudHM6e30sX2NhbGxiYWNrczp7fSxfbGFzdF9pZDoxLF9saXN0ZW46 e30sX2luZGV4Ont9fSk7ZSh0aGlzLGEpO2RlbGV0ZSB0aGlzLnNldEVycm9ySGFu ZGxlcjt9ZShhLHtTVUJTQ1JJQkVfTkVXOiduZXcnLFNVQlNDUklCRV9BTEw6J2Fs bCcsQkVIQVZJT1JfRVZFTlQ6J2V2ZW50JyxCRUhBVklPUl9QRVJTSVNURU5UOidw ZXJzaXN0ZW50JyxCRUhBVklPUl9TVEFURTonc3RhdGUnLExJVkVNRVNTQUdFOids aXZlbWVzc2FnZScsQk9PVExPQUQ6J2Jvb3Rsb2FkJyxGVU5DVElPTl9FWFRFTlNJ T046J2Z1bmN0aW9uX2V4dCcsc2V0RXJyb3JIYW5kbGVyOmssc3Vic2NyaWJlOmZ1 bmN0aW9uKHYsbSx0KXtpZighdnx8di5sZW5ndGg9PTApcmV0dXJuIG51bGw7dj1i LmNyZWF0ZUZyb20odik7dmFyIGw9YS5fZ2V0SW5zdGFuY2UodGhpcyk7bC5fbGlz dGVuZXJzLnB1c2goe2NhbGxiYWNrOm0sdHlwZXM6dn0pO3ZhciBzPWwuX2xpc3Rl bmVycy5sZW5ndGgtMTtmb3IodmFyIG89MDtvPHYubGVuZ3RoO28rKylpZihsLl9p bmRleFt2W29dXSl7bC5faW5kZXhbdltvXV0ucHVzaChzKTt9ZWxzZSBsLl9pbmRl eFt2W29dXT1bc107dD10fHxhLlNVQlNDUklCRV9BTEw7aWYodD09YS5TVUJTQ1JJ QkVfQUxMKXt2YXIgbix1LHI7Zm9yKHZhciBwPTA7cDx2Lmxlbmd0aDtwKyspe3U9 dltwXTtpZih1IGluIGwuX2V2ZW50cylmb3IodmFyIHE9MDtxPGwuX2V2ZW50c1t1 XS5sZW5ndGg7cSsrKXtuPWwuX2V2ZW50c1t1XVtxXTtyPW0uYXBwbHkobnVsbCxb dSxuXSk7aWYocj09PWZhbHNlKXtsLl9ldmVudHNbdV0uc3BsaWNlKHEsMSk7cS0t O319fX1yZXR1cm4ge3N1YnNjcmliZXJJRDpzfTt9LHVuc3Vic2NyaWJlOmZ1bmN0 aW9uKHApe3ZhciBsPWEuX2dldEluc3RhbmNlKHRoaXMpO3ZhciBuPWwuX2xpc3Rl bmVyc1twLnN1YnNjcmliZXJJRF07aWYoIW4pcmV0dXJuO2Zvcih2YXIgbz0wO288 bi50eXBlcy5sZW5ndGg7bysrKXt2YXIgcT1uLnR5cGVzW29dO2lmKGwuX2luZGV4 W3FdKWZvcih2YXIgbT0wO208bC5faW5kZXhbcV0ubGVuZ3RoO20rKylpZihsLl9p bmRleFtxXVttXT09cC5zdWJzY3JpYmVySUQpe2wuX2luZGV4W3FdLnNwbGljZSht LDEpO2lmKGwuX2luZGV4W3FdLmxlbmd0aD09MClkZWxldGUgbC5faW5kZXhbcV07 YnJlYWs7fX1kZWxldGUgbC5fbGlzdGVuZXJzW3Auc3Vic2NyaWJlcklEXTt9LGlu Zm9ybTpmdW5jdGlvbih4LG4sbSl7dmFyIHk9aCh4KTt4PWIuY3JlYXRlRnJvbSh4 KTt2YXIgbD1hLl9nZXRJbnN0YW5jZSh0aGlzKTt2YXIgdT17fTttPW18fGEuQkVI QVZJT1JfRVZFTlQ7Zm9yKHZhciBxPTA7cTx4Lmxlbmd0aDtxKyspe3ZhciB2PXhb cV0scD1udWxsO2lmKG09PWEuQkVIQVZJT1JfUEVSU0lTVEVOVCl7cD1sLl9ldmVu dHMubGVuZ3RoO2lmKCEodiBpbiBsLl9ldmVudHMpKWwuX2V2ZW50c1t2XT1bXTts Ll9ldmVudHNbdl0ucHVzaChuKTtsLl9ldmVudHNbdl0uX3N0YXRlZnVsPWZhbHNl O31lbHNlIGlmKG09PWEuQkVIQVZJT1JfU1RBVEUpe3A9MDtsLl9ldmVudHNbdl09 W25dO2wuX2V2ZW50c1t2XS5fc3RhdGVmdWw9dHJ1ZTt9ZWxzZSBpZih2IGluIGwu X2V2ZW50cylsLl9ldmVudHNbdl0uX3N0YXRlZnVsPWZhbHNlO3dpbmRvdy5BcmJp dGVyTW9uaXRvciYmQXJiaXRlck1vbml0b3IucmVjb3JkKCdldmVudCcsdixuLGwp O3ZhciB0O2lmKGwuX2luZGV4W3ZdKXt2YXIgdz1iLmNyZWF0ZUZyb20obC5faW5k ZXhbdl0pO2Zvcih2YXIgcj0wO3I8dy5sZW5ndGg7cisrKXt2YXIgcz1sLl9saXN0 ZW5lcnNbd1tyXV07aWYocyl7dHJ5e3Q9cy5jYWxsYmFjay5hcHBseShudWxsLFt2 LG5dKTt9Y2F0Y2gobyl7aWYoZClkKG8pO31pZih0PT09ZmFsc2Upe2lmKHAhPT1u dWxsKWwuX2V2ZW50c1t2XS5zcGxpY2UocCwxKTticmVhazt9fX19bC5fdXBkYXRl Q2FsbGJhY2tzKHYsbik7d2luZG93LkFyYml0ZXJNb25pdG9yJiZBcmJpdGVyTW9u aXRvci5yZWNvcmQoJ2RvbmUnLHYsbixsKTt1W3ZdPXQ7fXJldHVybiB5P3U6dVt4 WzBdXTt9LHF1ZXJ5OmZ1bmN0aW9uKG0pe3ZhciBsPWEuX2dldEluc3RhbmNlKHRo aXMpO2lmKCEobSBpbiBsLl9ldmVudHMpKXJldHVybiBudWxsO2lmKGwuX2V2ZW50 c1ttXS5sZW5ndGgpcmV0dXJuIGwuX2V2ZW50c1ttXVswXTtyZXR1cm4gbnVsbDt9 LF9pbnN0YW5jZTpudWxsLF9nZXRJbnN0YW5jZTpmdW5jdGlvbihsKXtpZihsIGlu c3RhbmNlb2YgYSlyZXR1cm4gbDtpZighYS5faW5zdGFuY2UpYS5faW5zdGFuY2U9 bmV3IGEoKTtyZXR1cm4gYS5faW5zdGFuY2U7fSxyZWdpc3RlckNhbGxiYWNrOmZ1 bmN0aW9uKG0sbyl7dmFyIHMsbj0wLGw9YS5fZ2V0SW5zdGFuY2UodGhpcykscj1m YWxzZTtpZih0eXBlb2YgbT09J2Z1bmN0aW9uJyl7cz1sLl9sYXN0X2lkO2wuX2xh c3RfaWQrKztyPXRydWU7fWVsc2V7aWYoIWwuX2NhbGxiYWNrc1ttXSlyZXR1cm4g bnVsbDtzPW07fWlmKGgobykpe3ZhciB0PXt9O2Zvcih2YXIgcT0wO3E8by5sZW5n dGg7cSsrKXRbb1txXV09MTtvPXQ7fWZvcih2YXIgdSBpbiBvKXt0cnl7aWYobC5x dWVyeSh1KSljb250aW51ZTt9Y2F0Y2gocCl7fW4rPW9bdV07aWYobC5fbGlzdGVu W3VdPT09dW5kZWZpbmVkKWwuX2xpc3Rlblt1XT17fTtsLl9saXN0ZW5bdV1bc109 KGwuX2xpc3Rlblt1XVtzXXx8MCkrb1t1XTt9aWYobj09MCYmcil7bSgpO3JldHVy biBudWxsO31pZighcil7bC5fY2FsbGJhY2tzW3NdLmRlcG51bSs9bjt9ZWxzZSBs Ll9jYWxsYmFja3Nbc109e2NhbGxiYWNrOmFzeW5jX2NhbGxiYWNrKG0sJ2FyYml0 ZXInKSxkZXBudW06bn07cmV0dXJuIHM7fSxfdXBkYXRlQ2FsbGJhY2tzOmZ1bmN0 aW9uKG8sbil7aWYobj09PW51bGx8fCF0aGlzLl9saXN0ZW5bb10pcmV0dXJuO2Zv cih2YXIgbSBpbiB0aGlzLl9saXN0ZW5bb10pe3RoaXMuX2xpc3RlbltvXVttXS0t O2lmKHRoaXMuX2xpc3RlbltvXVttXTw9MClkZWxldGUgdGhpcy5fbGlzdGVuW29d W21dO3RoaXMuX2NhbGxiYWNrc1ttXS5kZXBudW0tLTtpZih0aGlzLl9jYWxsYmFj a3NbbV0uZGVwbnVtPD0wKXt2YXIgbD10aGlzLl9jYWxsYmFja3NbbV0uY2FsbGJh Y2s7ZGVsZXRlIHRoaXMuX2NhbGxiYWNrc1ttXTtsKCk7fX19fSk7Zy5BcmJpdGVy PWkuZXhwb3J0cz1hO30sMyk7Cl9fZSgiaXNFbXB0eSIsW10sZnVuY3Rpb24oYixl LGQsYSl7ZnVuY3Rpb24gYyhnKXtpZihnIGluc3RhbmNlb2YgQXJyYXkpe3JldHVy biBnLmxlbmd0aD09PTA7fWVsc2UgaWYoZyBpbnN0YW5jZW9mIE9iamVjdCl7Zm9y KHZhciBmIGluIGcpcmV0dXJuIGZhbHNlO3JldHVybiB0cnVlO31lbHNlIHJldHVy biAhZzt9ZC5leHBvcnRzPWM7fSk7Cl9fZSgiYm9vdGxvYWRlciIsWyJBcnJheVV0 aWxzIiwiYXJiaXRlciIsInV0aWwiLCJpc0VtcHR5Il0sZnVuY3Rpb24odyx6LHks dil7dmFyIGI9eignQXJyYXlVdGlscycpO3ZhciBhPXooJ2FyYml0ZXInKTt2YXIg ZD16KCd1dGlsJyk7dmFyIHg9eignaXNFbXB0eScpO3ZhciBmPXt9O3ZhciBrPW51 bGw7dmFyIG89e307dmFyIG09e307dmFyIGg9e307dmFyIGk9e307dmFyIHM9W107 dmFyIGw9bnVsbDt2YXIgcD17fTt2YXIgaj17fTt2YXIgZz1mYWxzZTt2YXIgdT1b XTt2YXIgZT01MDAwO2Z1bmN0aW9uIG4oemosemcsemUsemIpe2lmKHpqPT0nanMn KXt2YXIgemY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7emYuc3Jj PXpnO3pmLnR5cGU9J3RleHQvamF2YXNjcmlwdCc7emYuYXN5bmM9dHJ1ZTt2YXIg emE9ZnVuY3Rpb24oKXtjLmRvbmUoW3plXSk7fTt6Zi5vbmxvYWQ9emYub25lcnJv cj16YTt6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih0aGlzLnJl YWR5U3RhdGUgaW4ge2xvYWRlZDoxLGNvbXBsZXRlOjF9KXphKCk7fTt6Yi5hcHBl bmRDaGlsZCh6Zik7fWVsc2UgaWYoemo9PSdjc3MnKXtpZihkb2N1bWVudC5jcmVh dGVTdHlsZVNoZWV0KXt2YXIgemg9cyx6aT0tMTtmb3IodmFyIHpjPTA7emM8emgu bGVuZ3RoO3pjKyspaWYoemhbemNdLmltcG9ydHMubGVuZ3RoPDI1KXt6aT16Yzti cmVhazt9aWYoemk9PS0xKXt6aC5wdXNoKGRvY3VtZW50LmNyZWF0ZVN0eWxlU2hl ZXQoKSk7emk9emgubGVuZ3RoLTE7fXpoW3ppXS5hZGRJbXBvcnQoemcpO2lbemVd PXt0YWdJZHg6emksaHJlZjp6Z307fWVsc2V7dmFyIHpkPWRvY3VtZW50LmNyZWF0 ZUVsZW1lbnQoJ2xpbmsnKTt6ZC5yZWw9InN0eWxlc2hlZXQiO3pkLnR5cGU9InRl eHQvY3NzIjt6ZC5tZWRpYT0iYWxsIjt6ZC5ocmVmPXpnO2lbemVdPXtsaW5rOnpk fTt6Yi5hcHBlbmRDaGlsZCh6ZCk7fXIoemUpO319ZnVuY3Rpb24gcSgpe3ZhciB6 ZDt2YXIgemE9W107dmFyIHplPURhdGUubm93KCk7aWYoemU+PWspe2Zvcih6ZCBp biBmKXphLnB1c2goemQpO2lmKHdpbmRvdy5sb2dKU0Vycm9yKWlmKE1hdGgucmFu ZG9tKCk8LjAxKWxvZ0pTRXJyb3IoJ2Jvb3Rsb2FkZXInLHtlcnJvcjonQ1NTIHRp bWVvdXQnLGV4dHJhOntuYW1lOnphLmpvaW4oJywnKX19KTt9ZWxzZSBmb3IoemQg aW4gZil7dmFyIHpmPWZbemRdO3ZhciB6Zz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHls ZT93aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh6ZixudWxsKTp6Zi5jdXJyZW50U3R5 bGU7aWYoemcmJnBhcnNlSW50KHpnLmhlaWdodCwxMCk+MSl6YS5wdXNoKHpkKTt9 aWYoIXgoemEpKXtmb3IodmFyIHpjPTA7emM8emEubGVuZ3RoO3pjKyspe3ZhciB6 Yj1mW3phW3pjXV07emIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh6Yik7ZGVsZXRl IGZbemFbemNdXTt9az16ZStlO2MuZG9uZSh6YSx0cnVlKTt9cmV0dXJuIHgoZik7 fWZ1bmN0aW9uIHIoemMpe3ZhciB6YT0nYm9vdGxvYWRlcl8nK3pjLnJlcGxhY2Uo L1teYS16MC05XS9pZywnXycpO3ZhciB6ZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50 KCdtZXRhJyk7emQuaWQ9emE7Yy5nZXRIYXJkcG9pbnQoKS5hcHBlbmRDaGlsZCh6 ZCk7az1EYXRlLm5vdygpK2U7dmFyIHplPXgoZik7Zlt6Y109emQ7aWYoemUpdmFy IHpiPXNldEludGVydmFsKGZ1bmN0aW9uIF9wb2xsKCl7aWYocSgpKXpiJiZjbGVh ckludGVydmFsKHpiKTt9LDIwLGZhbHNlKTt9ZnVuY3Rpb24gdCh6ZCl7aWYoemQg aW4gaSl7dmFyIHpiPWlbemRdLHpjPXpiLmxpbms7aWYoemMpe3pjLnBhcmVudE5v ZGUucmVtb3ZlQ2hpbGQoemMpO31lbHNle3ZhciB6ZT1zW3piLnRhZ0lkeF07Zm9y KHZhciB6YT0wO3phPHplLmltcG9ydHMubGVuZ3RoO3phKyspaWYoemUuaW1wb3J0 c1t6YV0uaHJlZj09emIuaHJlZil7emUucmVtb3ZlSW1wb3J0KHphKTticmVhazt9 fWRlbGV0ZSBpW3pkXTtkZWxldGUgb1t6ZF07YS5pbmZvcm0oYS5CT09UTE9BRCsn LycremQsbnVsbCxhLkJFSEFWSU9SX1NUQVRFKTt9fXZhciBjPXtjb25maWd1cmVQ YWdlOmZ1bmN0aW9uKHphKXt2YXIgemc9e307dmFyIHpmPWMucmVzb2x2ZVJlc291 cmNlcyh6YSk7dmFyIHpiO2Zvcih6Yj0wO3piPHpmLmxlbmd0aDt6YisrKXt6Z1t6 Zlt6Yl0uc3JjXT16Zlt6Yl07Yy5yZXF1ZXN0ZWQoemZbemJdLm5hbWUpO3IoemZb emJdLm5hbWUpO312YXIgemQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo J2xpbmsnKTtmb3IoemI9MDt6Yjx6ZC5sZW5ndGg7Kyt6Yil7aWYoemRbemJdLnJl bCE9J3N0eWxlc2hlZXQnKWNvbnRpbnVlO2Zvcih2YXIgemMgaW4gemcpaWYoemRb emJdLmhyZWYuaW5kZXhPZih6YykhPT0tMSl7dmFyIHplPXpnW3pjXS5uYW1lO2lb emVdPXtsaW5rOnpkW3piXX07aWYoemdbemNdLnBlcm1hbmVudCltW3plXT10cnVl O2RlbGV0ZSB6Z1t6Y107YnJlYWs7fX19LGxvYWRNb2R1bGVzOmZ1bmN0aW9uKHpi LHphKXt6Yj1iLmNyZWF0ZUZyb20oemIpO2MubG9hZENvbXBvbmVudHMoemIsZnVu Y3Rpb24gaW5qZWN0X21vZHVsZV9jYWxsYmFjaygpe3ZhciB6ZD1bXTtmb3IodmFy IHpjPTA7emM8emIubGVuZ3RoO3pjKyspemQucHVzaCh6KHpiW3pjXSkpO3phLmFw cGx5KHRoaXMsemQpO30pO30sbG9hZENvbXBvbmVudHM6ZnVuY3Rpb24oemMsemEp e2lmKCFnKXt1LnB1c2goW3pjLHphXSk7cmV0dXJuO316Yz1iLmNyZWF0ZUZyb20o emMpO3ZhciB6Zj1bXTtmb3IodmFyIHpkPTA7emQ8emMubGVuZ3RoOysremQpe2lm KCF6Y1t6ZF0pY29udGludWU7dmFyIHpiPWhbemNbemRdXTtpZighIXpiKWZvcih2 YXIgemU9MDt6ZTx6Yi5sZW5ndGg7Kyt6ZSl6Zi5wdXNoKHpiW3plXSk7fWMubG9h ZFJlc291cmNlcyh6Zix6YSk7fSxsb2FkUmVzb3VyY2VzOmZ1bmN0aW9uKHpqLHpi LHppLHptKXt2YXIgemU7emo9Yy5yZXNvbHZlUmVzb3VyY2VzKGIuY3JlYXRlRnJv bSh6aikpO2lmKHppKXt2YXIgemc9e307Zm9yKHplPTA7emU8emoubGVuZ3RoOysr emUpemdbempbemVdLm5hbWVdPXRydWU7Zm9yKHZhciB6ZiBpbiBvKWlmKCEoemYg aW4gbSkmJiEoemYgaW4gemcpJiYhKHpmIGluIGopKXQoemYpO2o9e307fXZhciB6 bj1bXTt2YXIgemg9W107Zm9yKHplPTA7emU8emoubGVuZ3RoOysremUpe3ZhciB6 az16alt6ZV07aWYoemsucGVybWFuZW50KW1bemsubmFtZV09dHJ1ZTt2YXIgemw9 YS5CT09UTE9BRCsnLycremsubmFtZTtpZihhLnF1ZXJ5KHpsKSE9PW51bGwpY29u dGludWU7aWYoIXprLm5vbmJsb2NraW5nKXpoLnB1c2goemwpO2lmKCFvW3prLm5h bWVdKXtjLnJlcXVlc3RlZCh6ay5uYW1lKTt6bi5wdXNoKHprKTt3aW5kb3cuQ2F2 YWxyeUxvZ2dlciYmQ2F2YWxyeUxvZ2dlci5nZXRJbnN0YW5jZSgpLm1lYXN1cmVS ZXNvdXJjZXMoemssem0pO319aWYoemIpemI9YS5yZWdpc3RlckNhbGxiYWNrKHpi LHpoKTt2YXIgemQ9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHwrKC9NU0lFLihcZCsp Ly5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpfHxbXSlbMV07dmFyIHpjPWMuZ2V0 SGFyZHBvaW50KCk7dmFyIHphPXpkP3pjOmRvY3VtZW50LmNyZWF0ZURvY3VtZW50 RnJhZ21lbnQoKTtmb3IoemU9MDt6ZTx6bi5sZW5ndGg7Kyt6ZSluKHpuW3plXS50 eXBlLHpuW3plXS5zcmMsem5bemVdLm5hbWUsemEpO2lmKHpjIT09emEpemMuYXBw ZW5kQ2hpbGQoemEpO3JldHVybiB6Yjt9LHJlcXVlc3RSZXNvdXJjZTpmdW5jdGlv bih6ZCx6Yyx6Yil7dmFyIHphPWMuZ2V0SGFyZHBvaW50KCk7bih6ZCx6Yyx6Yix6 YSk7fSxkb25lOmZ1bmN0aW9uKHplLHpiKXtjLnJlcXVlc3RlZCh6ZSk7aWYoIXpi KXt2YXIgemQ9e3NlbmRlcjp0aGlzfTthLmluZm9ybShhLkJPT1RMT0FELHpkLGEu QkVIQVZJT1JfRVZFTlQpO31mb3IodmFyIHphPTA7emE8emUubGVuZ3RoOysremEp e3ZhciB6Yz16ZVt6YV07YS5pbmZvcm0oYS5CT09UTE9BRCsnLycremMsdHJ1ZSxh LkJFSEFWSU9SX1NUQVRFKTt9fSxyZXF1ZXN0ZWQ6ZnVuY3Rpb24oemIpe3piPWIu Y3JlYXRlRnJvbSh6Yik7Zm9yKHZhciB6YT0wO3phPHpiLmxlbmd0aDsrK3phKW9b emJbemFdXT10cnVlO30sZW5hYmxlQm9vdGxvYWQ6ZnVuY3Rpb24oemIpe2Zvcih2 YXIgemMgaW4gemIpaWYoIWhbemNdKWhbemNdPXpiW3pjXTtpZighZyl7Zz10cnVl O2Zvcih2YXIgemE9MDt6YTx1Lmxlbmd0aDt6YSsrKWMubG9hZENvbXBvbmVudHMu YXBwbHkobnVsbCx1W3phXSk7dT1bXTt9fSxnZXRIYXJkcG9pbnQ6ZnVuY3Rpb24o KXtpZighbCl7dmFyIHphPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdo ZWFkJyk7bD16YS5sZW5ndGgmJnphWzBdfHxkb2N1bWVudC5ib2R5O31yZXR1cm4g bDt9LHNldFJlc291cmNlTWFwOmZ1bmN0aW9uKHpiKXtpZighemIpcmV0dXJuO2Zv cih2YXIgemEgaW4gemIpe2lmKCF6Ylt6YV0ubmFtZSl6Ylt6YV0ubmFtZT16YTtw W3phXT16Ylt6YV07fX0scmVzb2x2ZVJlc291cmNlczpmdW5jdGlvbih6Yyl7aWYo IXpjKXJldHVybiBbXTt2YXIgemI9W107Zm9yKHZhciB6YT0wO3phPHpjLmxlbmd0 aDsrK3phKWlmKHR5cGVvZiB6Y1t6YV09PSdzdHJpbmcnKXtpZih6Y1t6YV0gaW4g cCl6Yi5wdXNoKHBbemNbemFdXSk7fWVsc2UgemIucHVzaCh6Y1t6YV0pO3JldHVy biB6Yjt9LGxvYWRFYXJseVJlc291cmNlczpmdW5jdGlvbih6Yyl7dmFyIHphO2Mu c2V0UmVzb3VyY2VNYXAoemMpO3ZhciB6Yj1bXTtmb3IoemEgaW4gemMpemIucHVz aChwW3phXSk7Yy5sb2FkUmVzb3VyY2VzKHpiKTtmb3IoemEgaW4gemMpe3ZhciB6 ZD1wW3phXTtpZighemQucGVybWFuZW50KWpbemQubmFtZV09emQ7fX0saXNEaXNw bGF5SlM6ZnVuY3Rpb24oemEpe2lmKHR5cGVvZiB6YT09J3N0cmluZycpemE9cFt6 YV07cmV0dXJuIHphLmRpc3BsYXlqczt9fTt3LkJvb3Rsb2FkZXI9eS5leHBvcnRz PWM7fSwzKTsKX19lKCJFbnYiLFsiY29weVByb3BlcnRpZXMiLCJFbnYiXSxmdW5j dGlvbihkLGYsZSxjKXt2YXIgYj1mKCJjb3B5UHJvcGVydGllcyIpO3ZhciBhPXtz dGFydDpEYXRlLm5vdygpfTtpZihkLkVudil7YihhLGQuRW52KTtkLkVudj11bmRl ZmluZWQ7fWUuZXhwb3J0cz1hO30pOwpfX2UoIm9ubG9hZCIsWyJhcmJpdGVyIiwi Y29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihsLHUsbSxrKXt2YXIgYT11KCdhcmJp dGVyJyk7dmFyIGM9YS5CRUhBVklPUl9TVEFURTt2YXIgaD1mdW5jdGlvbih2KXt3 aW5kb3cuQ2F2YWxyeUxvZ2dlciYmQ2F2YWxyeUxvZ2dlci5nZXRJbnN0YW5jZSgp LnNldFRpbWVTdGFtcCh2KTt9O3ZhciBiPXtPTkxPQUQ6J29ubG9hZC9vbmxvYWQn LE9OTE9BRF9DQUxMQkFDSzonb25sb2FkL29ubG9hZF9jYWxsYmFjaycsT05MT0FE X0RPTUNPTlRFTlQ6J29ubG9hZC9kb21fY29udGVudF9yZWFkeScsT05MT0FEX0RP TUNPTlRFTlRfQ0FMTEJBQ0s6J29ubG9hZC9kb21jb250ZW50X2NhbGxiYWNrJyxP TkJFRk9SRVVOTE9BRDonb25sb2FkL2JlZm9yZXVubG9hZCcsT05VTkxPQUQ6J29u bG9hZC91bmxvYWQnfTtmdW5jdGlvbiBnKCl7cmV0dXJuICF3aW5kb3cubG9hZGlu Z19wYWdlX2Nocm9tZTt9ZnVuY3Rpb24gcSh2KXtpZih3aW5kb3cubG9hZGVkJiZ0 eXBlb2YgX3J1bkhvb2shPSd1bmRlZmluZWQnKXtfcnVuSG9vayh2LCdvbmxhdGVs b2FkaG9va3MnKTt9ZWxzZSBkKCdvbmxvYWRob29rcycsdik7fWZ1bmN0aW9uIG4o dil7aWYod2luZG93LmFmdGVybG9hZGVkJiZ0eXBlb2YgX3J1bkhvb2shPSd1bmRl ZmluZWQnKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7X3J1bkhvb2sodiwnb25sYXRl YWZ0ZXJsb2FkaG9va3MnKTt9LDApO31lbHNlIGQoJ29uYWZ0ZXJsb2FkaG9va3Mn LHYpO31mdW5jdGlvbiBvKHYsdyl7aWYodz09PXVuZGVmaW5lZCl3PWcoKTt3P2Qo J29uYmVmb3JlbGVhdmVob29rcycsdik6ZCgnb25iZWZvcmV1bmxvYWRob29rcycs dik7fWZ1bmN0aW9uIHModil7aWYoIXdpbmRvdy5vbnVubG9hZCl3aW5kb3cub251 bmxvYWQ9ZnVuY3Rpb24oKXthLmluZm9ybShiLk9OVU5MT0FELHRydWUsYyk7fTtk KCdvbnVubG9hZGhvb2tzJyx2KTt9ZnVuY3Rpb24gcCh2KXtkKCdvbmxlYXZlaG9v a3MnLHYpO31mdW5jdGlvbiBkKHcsdil7d2luZG93W3ddPSh3aW5kb3dbd118fFtd KS5jb25jYXQodik7fWZ1bmN0aW9uIHQodil7d2luZG93W3ZdPVtdO31mdW5jdGlv biBmKCl7YS5pbmZvcm0oYi5PTkxPQURfRE9NQ09OVEVOVCx0cnVlLGMpO31mdW5j dGlvbiBlKCl7dmFyIHY9ZG9jdW1lbnQsej13aW5kb3c7aWYodi5hZGRFdmVudExp c3RlbmVyKXt2YXIgemE9L0FwcGxlV2ViS2l0LihcZCspLy5leGVjKG5hdmlnYXRv ci51c2VyQWdlbnQpO2lmKHphJiZ6YVsxXTw1MjUpe3ZhciB5PXNldEludGVydmFs KGZ1bmN0aW9uKCl7aWYoL2xvYWRlZHxjb21wbGV0ZS8udGVzdCh2LnJlYWR5U3Rh dGUpKXtmKCk7Y2xlYXJJbnRlcnZhbCh5KTt9fSwxMCk7fWVsc2Ugdi5hZGRFdmVu dExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmLHRydWUpO31lbHNle3ZhciB4 PSdqYXZhc2NyaXB0OnZvaWQoMCknO2lmKHoubG9jYXRpb24ucHJvdG9jb2w9PSdo dHRwczonKXg9Jy8vOic7di53cml0ZSgnPHNjcmlwdCBvbnJlYWR5c3RhdGVjaGFu Z2U9ImlmICh0aGlzLnJlYWR5U3RhdGU9PVwnY29tcGxldGVcJykgeycrJ3RoaXMu cGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKTtfZG9tY29udGVudHJlYWR5KCk7 fSIgJysnZGVmZXI9ImRlZmVyIiBzcmM9IicreCsnIj48XC9zY3JpcHRcPicpO312 YXIgdz16Lm9ubG9hZDt6Lm9ubG9hZD1mdW5jdGlvbigpe2goJ3RfbGF5b3V0Jyk7 dyYmdygpO2EuaW5mb3JtKGIuT05MT0FELHRydWUsYyk7fTt6Lm9uYmVmb3JldW5s b2FkPWZ1bmN0aW9uKCl7dmFyIHpiPXt9O2EuaW5mb3JtKGIuT05CRUZPUkVVTkxP QUQsemIsYyk7aWYoIXpiLndhcm4pYS5pbmZvcm0oJ29ubG9hZC9leGl0Jyx0cnVl KTtyZXR1cm4gemIud2Fybjt9O312YXIgcj1hLnJlZ2lzdGVyQ2FsbGJhY2soZnVu Y3Rpb24oKXtoKCd0X29ubG9hZCcpO2EuaW5mb3JtKGIuT05MT0FEX0NBTExCQUNL LHRydWUsYyk7fSxbYi5PTkxPQURdKTt2YXIgaj1hLnJlZ2lzdGVyQ2FsbGJhY2so ZnVuY3Rpb24oKXtoKCd0X2RvbWNvbnRlbnQnKTthLmluZm9ybShiLk9OTE9BRF9E T01DT05URU5UX0NBTExCQUNLLHRydWUsYyk7fSxbYi5PTkxPQURfRE9NQ09OVEVO VF0pO2lmKCF3aW5kb3cuX2V2ZW50SGFuZGxlcnNCb290c3RyYXBwZWQpe19ldmVu dEhhbmRsZXJzQm9vdHN0cmFwcGVkPXRydWU7ZSgpO31tLmV4cG9ydHM9e0V2ZW50 OmIscnVuT25sb2FkOnEscnVuQWZ0ZXJsb2FkOm4scnVuT25sZWF2ZTpwfTt2YXIg aT11KCdjb3B5UHJvcGVydGllcycpO2kobCx7T25sb2FkRXZlbnQ6YixvbmxvYWRS ZWdpc3RlcjpxLG9uYWZ0ZXJsb2FkUmVnaXN0ZXI6bixvbmxlYXZlUmVnaXN0ZXI6 cCxvbmJlZm9yZXVubG9hZFJlZ2lzdGVyOm8sb251bmxvYWRSZWdpc3RlcjpzLGRv bWNvbnRlbnRfY2FsbGJhY2s6aixvbmxvYWRfY2FsbGJhY2s6cixfZG9tY29udGVu dHJlYWR5OmYscmVtb3ZlSG9vazp0LF9hZGRIb29rOmR9KTt9LDMpOwpfX2UoIkVh Z2xlRXllIixbImFyYml0ZXIiLCJib290bG9hZGVyIiwiRW52Iiwib25sb2FkIiwi dXRpbCJdLGZ1bmN0aW9uKG8sdixzLG4pe3ZhciBhPXYoJ2FyYml0ZXInKTt2YXIg Yz12KCdib290bG9hZGVyJyk7dmFyIGU9dignRW52Jyk7dmFyIGY9dignb25sb2Fk Jyk7dmFyIGg9digndXRpbCcpO3ZhciB5PSdfZV8nO3ZhciB6YT0od2luZG93Lm5h bWV8fCcnKS50b1N0cmluZygpO2lmKHphLmxlbmd0aD09NyYmemEuc3Vic3RyKDAs Myk9PXkpe3phPXphLnN1YnN0cigzKTt9ZWxzZXt6YT13aW5kb3cuX0VhZ2xlRXll U2VlZDtpZih3aW5kb3c9PXdpbmRvdy50b3Apd2luZG93Lm5hbWU9eSt3aW5kb3cu X0VhZ2xlRXllU2VlZDt9dmFyIHc9KHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbD09 J2h0dHBzOicmJmRvY3VtZW50LmNvb2tpZS5tYXRjaCgvXGJjc209MS8pKT8nOyBz ZWN1cmUnOicnO3ZhciB0PXkremErJ18nO3ZhciBtPW5ldyBEYXRlKERhdGUubm93 KCkrNjA0ODAwMDAwKS50b0dNVFN0cmluZygpO3ZhciBrPXdpbmRvdy5sb2NhdGlv bi5ob3N0bmFtZS5yZXBsYWNlKC9eLiooZmFjZWJvb2tcLi4qKSQvaSwnJDEnKTt2 YXIgbD0nOyBleHBpcmVzPScrbSsnO3BhdGg9LzsgZG9tYWluPScrayt3O3ZhciBq PTA7dmFyIHU7dmFyIHo9d2luZG93Ll9FYWdsZUV5ZVNlc3Npb25TdG9yYWdlJiZ3 aW5kb3cuc2Vzc2lvblN0b3JhZ2U7dmFyIHE9ZG9jdW1lbnQuY29va2llLmxlbmd0 aDt2YXIgcj1mYWxzZTt2YXIgeD1EYXRlLm5vdygpO2Z1bmN0aW9uIHAoemUpe3Zh ciB6Yj0yMTY2MTM2MjYxO2Zvcih2YXIgemM9MCx6ZD16ZS5sZW5ndGg7emM8emQ7 Kyt6Yyl6Yj0oemJeemUuY2hhckNvZGVBdCh6YykpKjE2Nzc3NjE5O3piKz16Yjw8 MTM7emJePXpiPj43O3piKz16Yjw8Mzt6Yl49emI+PjE3O3piKz16Yjw8NTtyZXR1 cm4gKHpifDApKzIxNDc0ODM2NDg7fWZ1bmN0aW9uIGkoemIpe3JldHVybiB0Kyhq KyspKyc9JytlbmNvZGVVUklDb21wb25lbnQoemIpK2w7fWZ1bmN0aW9uIGIoKXt2 YXIgemI9W107dmFyIHplPWZhbHNlO3ZhciB6ZD0wO3ZhciB6Yz0wO3RoaXMuaXNF bXB0eT1mdW5jdGlvbigpe3JldHVybiAhemIubGVuZ3RoO307dGhpcy5lbnF1ZXVl PWZ1bmN0aW9uKHpnLHpmKXtpZih6Zil7emIudW5zaGlmdCh6Zyk7fWVsc2UgemIu cHVzaCh6Zyk7fTt0aGlzLmRlcXVldWU9ZnVuY3Rpb24oKXt6Yi5zaGlmdCgpO307 dGhpcy5wZWVrPWZ1bmN0aW9uKCl7cmV0dXJuIHpiWzBdO307dGhpcy5jbGVhcj1m dW5jdGlvbih6aCl7cT1NYXRoLm1pbihxLGRvY3VtZW50LmNvb2tpZS5sZW5ndGgp O2lmKCFyJiYobmV3IERhdGUoKS14PjYwMDAwKSlyPXRydWU7dmFyIHpmPSF6aCYm KGRvY3VtZW50LmNvb2tpZS5zZWFyY2goeSk+PTApO3ZhciB6cj0hIWUuY29va2ll X2hlYWRlcl9saW1pdDt2YXIgem09ZS5jb29raWVfY291bnRfbGltaXR8fDE5O3Zh ciB6bj1lLmNvb2tpZV9oZWFkZXJfbGltaXR8fDM5NTA7dmFyIHprPXptLTU7dmFy IHpsPXpuLTEwMDA7d2hpbGUoIXRoaXMuaXNFbXB0eSgpKXt2YXIgemc9aSh0aGlz LnBlZWsoKSk7aWYoenImJih6Zy5sZW5ndGg+em58fChyJiZ6Zy5sZW5ndGgrcT56 bikpKXt0aGlzLmRlcXVldWUoKTtjb250aW51ZTt9aWYoKHpmfHx6cikmJigoZG9j dW1lbnQuY29va2llLmxlbmd0aCt6Zy5sZW5ndGg+em4pfHwoZG9jdW1lbnQuY29v a2llLnNwbGl0KCc7JykubGVuZ3RoPnptKSkpYnJlYWs7ZG9jdW1lbnQuY29va2ll PXpnO3pmPXRydWU7dGhpcy5kZXF1ZXVlKCk7fXZhciB6bz1EYXRlLm5vdygpO2lm KHpofHwhemUmJnpmJiYoKHpjPjApJiYoTWF0aC5taW4oMTAqTWF0aC5wb3coMix6 Yy0xKSw2MDAwMCkremQ8em8pKSYmYS5xdWVyeShmLkV2ZW50Lk9OTE9BRCkmJigh dGhpcy5pc0VtcHR5KCl8fChkb2N1bWVudC5jb29raWUubGVuZ3RoPnpsKXx8KGRv Y3VtZW50LmNvb2tpZS5zcGxpdCgnOycpLmxlbmd0aD56aykpKXt2YXIgenE9bmV3 IEltYWdlKCk7dmFyIHpwPXRoaXM7dmFyIHppPXdpbmRvdy5fRWFnbGVFeWVEb21h aW58fGUudHJhY2tpbmdfZG9tYWlufHwnJzt6ZT10cnVlO3pxLm9ubG9hZD1mdW5j dGlvbiBfRWFnbGVFeWVfbG9nZ2VkKCl7emU9ZmFsc2U7emM9MDt6cC5jbGVhcigp O307enEub25lcnJvcj16cS5vbmFib3J0PWZ1bmN0aW9uIF9FYWdsZUV5ZV9lcnJv cigpe3plPWZhbHNlO3pkPURhdGUubm93KCk7emMrKzt9O3ZhciB6aj1lLmZiX2lz Yj8nJmZiX2lzYj0nK2UuZmJfaXNiOicnO3ZhciB6cz0nJl9fdXNlcj0nK2UudXNl cjt6cS5zcmM9emkrJy9hamF4L25lY3Rhci5waHA/YXN5bmNTaWduYWw9JysoTWF0 aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMDAwKSsxKSt6ait6cysnJicrKCF6aD8n Jzoncz0nKSt6bzt9fTt9dT1uZXcgYigpO2lmKHope3ZhciBnPWZ1bmN0aW9uKCl7 dmFyIHpkPTA7dmFyIHpmPXpkO2Z1bmN0aW9uIHpjKCl7dmFyIHpoPXNlc3Npb25T dG9yYWdlLmdldEl0ZW0oJ19lX2lkcycpO2lmKHpoKXt2YXIgemc9KHpoKycnKS5z cGxpdCgnOycpO2lmKHpnLmxlbmd0aD09Mil7emQ9cGFyc2VJbnQoemdbMF0sMTAp O3pmPXBhcnNlSW50KHpnWzFdLDEwKTt9fX1mdW5jdGlvbiB6ZSgpe3ZhciB6Zz16 ZCsnOycremY7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnX2VfaWRzJyx6Zyk7fWZ1 bmN0aW9uIHpiKHpnKXtyZXR1cm4gJ19lXycrKCh6ZyE9PXVuZGVmaW5lZCk/emc6 emQrKyk7fXRoaXMuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiB6Zj09PXpkO307 dGhpcy5lbnF1ZXVlPWZ1bmN0aW9uKHppLHpnKXt2YXIgemg9emc/emIoLS16Zik6 emIoKTtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHpoLHppKTt6ZSgpO307dGhpcy5k ZXF1ZXVlPWZ1bmN0aW9uKCl7dGhpcy5pc0VtcHR5KCk7c2Vzc2lvblN0b3JhZ2Uu cmVtb3ZlSXRlbSh6Yih6ZikpO3pmKys7emUoKTt9O3RoaXMucGVlaz1mdW5jdGlv bigpe3ZhciB6Zz1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHpiKHpmKSk7cmV0dXJu IHpnPyh6ZysnJyk6emc7fTt0aGlzLmNsZWFyPXUuY2xlYXI7emMoKTt9O3U9bmV3 IGcoKTt9dmFyIGQ9e2xvZzpmdW5jdGlvbih6ZSx6Yix6Yyl7aWYoZS5ub19jb29r aWVzKXJldHVybjt2YXIgemY9W3phLERhdGUubm93KCksemVdLmNvbmNhdCh6Yik7 emYucHVzaCh6Zi5sZW5ndGgpO2Z1bmN0aW9uIHpkKCl7dmFyIHpoPUpTT04uc3Ry aW5naWZ5KHpmKTt0cnl7dS5lbnF1ZXVlKHpoLCEhemMpO3UuY2xlYXIoISF6Yyk7 fWNhdGNoKHpnKXtpZih6JiYoemcuY29kZT09PTEwMDApKXt1PW5ldyBiKCk7ej1m YWxzZTt6ZCgpO319fWlmKHdpbmRvdy5KU09OKXt6ZCgpO31lbHNlIGMubG9hZENv bXBvbmVudHMoJ2pzb24nLHpkKTt9LGNyZWF0ZUxvZ2dlcjpmdW5jdGlvbih6ZCx6 Yil7emI9KHpiPT09dW5kZWZpbmVkKT8xOnpiO3ZhciB6Yz1mdW5jdGlvbih6ZSx6 Zil7aWYoemMuZW5hYmxlZClkLmxvZyh6ZCx6ZSx6Zik7fTt6Yy5lbmFibGVkPWZh bHNlO3pjLl9rZXk9KGUudXNlcnx8TWF0aC5yYW5kb20oKSkremQ7emMuZW5hYmxl ZD0ocCh6Yy5fa2V5KSU2NTUzNS82NTUzNSk8PXpiO3JldHVybiB6Yzt9LGdldFNl c3Npb25JRDpmdW5jdGlvbigpe3JldHVybiB6YTt9fTtvLkVhZ2xlRXllPXMuZXhw b3J0cz1kO30sMyk7Cl9fZSgic2V0VUVDb29raWUiLFsiRW52Il0sZnVuY3Rpb24o YyxlLGQsYil7dmFyIGE9ZSgiRW52Iik7ZnVuY3Rpb24gZihoKXtpZighYS5ub19j b29raWVzKXt2YXIgZz0wO2lmKGMuYWZ0ZXJsb2FkZWQpe2c9Mjt9ZWxzZSBpZihj LmxvYWRlZClnPTE7ZG9jdW1lbnQuY29va2llPSJhY3Q9IitlbmNvZGVVUklDb21w b25lbnQoaCsiOiIrZykrIjsgcGF0aD0vOyBkb21haW49Iit3aW5kb3cubG9jYXRp b24uaG9zdG5hbWUucmVwbGFjZSgvXi4qKFwuZmFjZWJvb2tcLi4qKSQvaSwnJDEn KTt9fWQuZXhwb3J0cz1mO30pOwpfX2UoImpzb24iLFtdLGZ1bmN0aW9uKGdsb2Jh bCxyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtpZighdGhpcy5KU09OKXRoaXMuSlNP Tj17fTsoZnVuY3Rpb24oKXtmdW5jdGlvbiBmKG4pe3JldHVybiBuPDEwPycwJytu Om47fWlmKHR5cGVvZiBEYXRlLnByb3RvdHlwZS50b0pTT04hPT0nZnVuY3Rpb24n KXtEYXRlLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oa2V5KXtyZXR1cm4gaXNG aW5pdGUodGhpcy52YWx1ZU9mKCkpP3RoaXMuZ2V0VVRDRnVsbFllYXIoKSsnLScr Zih0aGlzLmdldFVUQ01vbnRoKCkrMSkrJy0nK2YodGhpcy5nZXRVVENEYXRlKCkp KydUJytmKHRoaXMuZ2V0VVRDSG91cnMoKSkrJzonK2YodGhpcy5nZXRVVENNaW51 dGVzKCkpKyc6JytmKHRoaXMuZ2V0VVRDU2Vjb25kcygpKSsnWic6bnVsbDt9O1N0 cmluZy5wcm90b3R5cGUudG9KU09OPU51bWJlci5wcm90b3R5cGUudG9KU09OPUJv b2xlYW4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbihrZXkpe3JldHVybiB0aGlz LnZhbHVlT2YoKTt9O312YXIgY3g9L1tcdTAwMDBcdTAwYWRcdTA2MDAtXHUwNjA0 XHUwNzBmXHUxN2I0XHUxN2I1XHUyMDBjLVx1MjAwZlx1MjAyOC1cdTIwMmZcdTIw NjAtXHUyMDZmXHVmZWZmXHVmZmYwLVx1ZmZmZl0vZyxlc2NhcGFibGU9L1tcXFwi XHgwMC1ceDFmXHg3Zi1ceDlmXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdi NFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1 ZmVmZlx1ZmZmMC1cdWZmZmZdL2csZ2FwLGluZGVudCxtZXRhPXsnXGInOidcXGIn LCdcdCc6J1xcdCcsJ1xuJzonXFxuJywnXGYnOidcXGYnLCdccic6J1xccicsJyIn OidcXCInLCdcXCc6J1xcXFwnfSxyZXA7ZnVuY3Rpb24gcXVvdGUoc3RyaW5nKXtl c2NhcGFibGUubGFzdEluZGV4PTA7cmV0dXJuIGVzY2FwYWJsZS50ZXN0KHN0cmlu Zyk/JyInK3N0cmluZy5yZXBsYWNlKGVzY2FwYWJsZSxmdW5jdGlvbihhKXt2YXIg Yz1tZXRhW2FdO3JldHVybiB0eXBlb2YgYz09PSdzdHJpbmcnP2M6J1xcdScrKCcw MDAwJythLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCk7fSkr JyInOiciJytzdHJpbmcrJyInO31mdW5jdGlvbiBzdHIoa2V5LGhvbGRlcil7dmFy IGksayx2LGxlbmd0aCxtaW5kPWdhcCxwYXJ0aWFsLHZhbHVlPWhvbGRlcltrZXld O2lmKHZhbHVlJiZ0eXBlb2YgdmFsdWU9PT0nb2JqZWN0JyYmdHlwZW9mIHZhbHVl LnRvSlNPTj09PSdmdW5jdGlvbicpdmFsdWU9dmFsdWUudG9KU09OKGtleSk7aWYo dHlwZW9mIHJlcD09PSdmdW5jdGlvbicpdmFsdWU9cmVwLmNhbGwoaG9sZGVyLGtl eSx2YWx1ZSk7c3dpdGNoKHR5cGVvZiB2YWx1ZSl7Y2FzZSAnc3RyaW5nJzpyZXR1 cm4gcXVvdGUodmFsdWUpO2Nhc2UgJ251bWJlcic6cmV0dXJuIGlzRmluaXRlKHZh bHVlKT9TdHJpbmcodmFsdWUpOidudWxsJztjYXNlICdib29sZWFuJzpjYXNlICdu dWxsJzpyZXR1cm4gU3RyaW5nKHZhbHVlKTtjYXNlICdvYmplY3QnOmlmKCF2YWx1 ZSlyZXR1cm4gJ251bGwnO2dhcCs9aW5kZW50O3BhcnRpYWw9W107aWYoT2JqZWN0 LnByb3RvdHlwZS50b1N0cmluZy5hcHBseSh2YWx1ZSk9PT0nW29iamVjdCBBcnJh eV0nKXtsZW5ndGg9dmFsdWUubGVuZ3RoO2ZvcihpPTA7aTxsZW5ndGg7aSs9MSlw YXJ0aWFsW2ldPXN0cihpLHZhbHVlKXx8J251bGwnO3Y9cGFydGlhbC5sZW5ndGg9 PT0wPydbXSc6Z2FwPydbXG4nK2dhcCtwYXJ0aWFsLmpvaW4oJyxcbicrZ2FwKSsn XG4nK21pbmQrJ10nOidbJytwYXJ0aWFsLmpvaW4oJywnKSsnXSc7Z2FwPW1pbmQ7 cmV0dXJuIHY7fWlmKHJlcCYmdHlwZW9mIHJlcD09PSdvYmplY3QnKXtsZW5ndGg9 cmVwLmxlbmd0aDtmb3IoaT0wO2k8bGVuZ3RoO2krPTEpe2s9cmVwW2ldO2lmKHR5 cGVvZiBrPT09J3N0cmluZycpe3Y9c3RyKGssdmFsdWUpO2lmKHYpcGFydGlhbC5w dXNoKHF1b3RlKGspKyhnYXA/JzogJzonOicpK3YpO319fWVsc2UgZm9yKGsgaW4g dmFsdWUpaWYoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsaykpe3Y9 c3RyKGssdmFsdWUpO2lmKHYpcGFydGlhbC5wdXNoKHF1b3RlKGspKyhnYXA/Jzog JzonOicpK3YpO312PXBhcnRpYWwubGVuZ3RoPT09MD8ne30nOmdhcD8ne1xuJytn YXArcGFydGlhbC5qb2luKCcsXG4nK2dhcCkrJ1xuJyttaW5kKyd9JzoneycrcGFy dGlhbC5qb2luKCcsJykrJ30nO2dhcD1taW5kO3JldHVybiB2O319aWYodHlwZW9m IEpTT04uc3RyaW5naWZ5IT09J2Z1bmN0aW9uJylKU09OLnN0cmluZ2lmeT1mdW5j dGlvbih2YWx1ZSxyZXBsYWNlcixzcGFjZSl7dmFyIGk7Z2FwPScnO2luZGVudD0n JztpZih0eXBlb2Ygc3BhY2U9PT0nbnVtYmVyJyl7Zm9yKGk9MDtpPHNwYWNlO2kr PTEpaW5kZW50Kz0nICc7fWVsc2UgaWYodHlwZW9mIHNwYWNlPT09J3N0cmluZycp aW5kZW50PXNwYWNlO3JlcD1yZXBsYWNlcjtpZihyZXBsYWNlciYmdHlwZW9mIHJl cGxhY2VyIT09J2Z1bmN0aW9uJyYmKHR5cGVvZiByZXBsYWNlciE9PSdvYmplY3Qn fHx0eXBlb2YgcmVwbGFjZXIubGVuZ3RoIT09J251bWJlcicpKXRocm93IG5ldyBF cnJvcignSlNPTi5zdHJpbmdpZnknKTtyZXR1cm4gc3RyKCcnLHsnJzp2YWx1ZX0p O307aWYodHlwZW9mIEpTT04ucGFyc2UhPT0nZnVuY3Rpb24nKUpTT04ucGFyc2U9 ZnVuY3Rpb24odGV4dCxyZXZpdmVyKXt2YXIgajtmdW5jdGlvbiB3YWxrKGhvbGRl cixrZXkpe3ZhciBrLHYsdmFsdWU9aG9sZGVyW2tleV07aWYodmFsdWUmJnR5cGVv ZiB2YWx1ZT09PSdvYmplY3QnKWZvcihrIGluIHZhbHVlKWlmKE9iamVjdC5oYXNP d25Qcm9wZXJ0eS5jYWxsKHZhbHVlLGspKXt2PXdhbGsodmFsdWUsayk7aWYodiE9 PXVuZGVmaW5lZCl7dmFsdWVba109djt9ZWxzZSBkZWxldGUgdmFsdWVba107fXJl dHVybiByZXZpdmVyLmNhbGwoaG9sZGVyLGtleSx2YWx1ZSk7fXRleHQ9U3RyaW5n KHRleHQpO2N4Lmxhc3RJbmRleD0wO2lmKGN4LnRlc3QodGV4dCkpdGV4dD10ZXh0 LnJlcGxhY2UoY3gsZnVuY3Rpb24oYSl7cmV0dXJuICdcXHUnKygnMDAwMCcrYS5j aGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpO30pO2lmKC9eW1xd LDp7fVxzXSokLy50ZXN0KHRleHQucmVwbGFjZSgvXFwoPzpbIlxcXC9iZm5ydF18 dVswLTlhLWZBLUZdezR9KS9nLCdAJykucmVwbGFjZSgvIlteIlxcXG5ccl0qInx0 cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/ L2csJ10nKS5yZXBsYWNlKC8oPzpefDp8LCkoPzpccypcWykrL2csJycpKSl7aj1l dmFsKCcoJyt0ZXh0KycpJyk7cmV0dXJuIHR5cGVvZiByZXZpdmVyPT09J2Z1bmN0 aW9uJz93YWxrKHsnJzpqfSwnJyk6ajt9dGhyb3cgbmV3IFN5bnRheEVycm9yKCdK U09OLnBhcnNlJyk7fTtKU09OLnN0cmluZ2lmeT1mdW5jdGlvbihvbGQpe3JldHVy biBmdW5jdGlvbigpe3ZhciBzPW9sZC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0 dXJuIHM/cy5yZXBsYWNlKC9bJVx1MjAyOFx1MjAyOV0vZyxmdW5jdGlvbihtKXt2 YXIgcz1tLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpO3JldHVybiAnXFx1MDAw MCcuc3Vic3RyaW5nKDAsNi1zLmxlbmd0aCkrczt9KTpzO307fShKU09OLnN0cmlu Z2lmeSk7fSgpKTtpZighZ2xvYmFsLkpTT04pZ2xvYmFsLkpTT049SlNPTjt9LDMp OwpfX2UoImNvbGxlY3REYXRhQXR0cmlidXRlcyIsWyJqc29uIl0sZnVuY3Rpb24o YyxlLGQsYil7ZSgianNvbiIpO2Z1bmN0aW9uIGEoaixuKXt2YXIgbD17fTt2YXIg aT17fTt2YXIgbT1uLmxlbmd0aDt2YXIgaztmb3Ioaz0wO2s8bTsrK2spe2xbbltr XV09e307aVtuW2tdXT0nZGF0YS0nK25ba107fXdoaWxlKGope2lmKGouZ2V0QXR0 cmlidXRlKWZvcihrPTA7azxtOysrayl7dmFyIGg9ai5nZXRBdHRyaWJ1dGUoaVtu W2tdXSk7aWYoaCl7dmFyIGc9SlNPTi5wYXJzZShoKTtmb3IodmFyIGYgaW4gZylp ZihsW25ba11dW2ZdPT09dW5kZWZpbmVkKWxbbltrXV1bZl09Z1tmXTt9fWo9ai5w YXJlbnROb2RlO31yZXR1cm4gbDt9ZC5leHBvcnRzPWE7fSk7Cl9fZSgiQ2xpY2tS ZWYiLFsiYXJiaXRlciIsIkVhZ2xlRXllIiwiY29weVByb3BlcnRpZXMiLCJzZXRV RUNvb2tpZSIsImNvbGxlY3REYXRhQXR0cmlidXRlcyJdLGZ1bmN0aW9uKGYsaSxo LGUpe3ZhciBhPWkoImFyYml0ZXIiKTt2YXIgYj1pKCJFYWdsZUV5ZSIpO3ZhciBk PWkoImNvcHlQcm9wZXJ0aWVzIik7dmFyIGo9aSgic2V0VUVDb29raWUiKTt2YXIg Yz1pKCJjb2xsZWN0RGF0YUF0dHJpYnV0ZXMiKTtmdW5jdGlvbiBnKCl7ZnVuY3Rp b24gbShyKXtpZighIXIpe3ZhciBxPXtwcm9maWxlX21pbmlmZWVkOjEsaW5mb190 YWI6MSxnYl9jb250ZW50X2FuZF90b29sYmFyOjEsZ2JfbXVmZmluX2FyZWE6MSxl Z286MSxib29rbWFya3NfbWVudToxLGpld2VsQm94Tm90aWY6MSxqZXdlbE5vdGlm OjEsQmVlcGVyQm94OjEsbmF2U2VhcmNoOjF9O2Zvcih2YXIgcD1yO3AmJnAhPWRv Y3VtZW50LmJvZHk7cD1wLnBhcmVudE5vZGUpe2lmKCFwLmlkfHx0eXBlb2YgcC5p ZCE9PSdzdHJpbmcnKWNvbnRpbnVlO2lmKHAuaWQuc3Vic3RyKDAsOCk9PSdwYWdl bGV0XycpcmV0dXJuIHAuaWQuc3Vic3RyKDgpO2lmKHAuaWQuc3Vic3RyKDAsOCk9 PSdib3hfYXBwXycpcmV0dXJuIHAuaWQ7aWYocVtwLmlkXSlyZXR1cm4gcC5pZDt9 fXJldHVybiAnLSc7fWZ1bmN0aW9uIGwocCl7cmV0dXJuIChwLmdldEF0dHJpYnV0 ZSYmKHAuZ2V0QXR0cmlidXRlKCdhamF4aWZ5Jyl8fHAuZ2V0QXR0cmlidXRlKCdk YXRhLWVuZHBvaW50JykpfHxwLmFjdGlvbnx8cC5ocmVmfHxwLm5hbWUpO31mdW5j dGlvbiBuKHEpe2lmKCFnZSgnY29udGVudCcpKXJldHVybiBbMCwwLDAsMF07dmFy IHA9JCgnY29udGVudCcpO3ZhciByPXdpbmRvdy5WZWN0b3IyP1ZlY3RvcjIuZ2V0 RXZlbnRQb3NpdGlvbihxKTp7eDowLHk6MH07cmV0dXJuIFtyLngsci55LHAub2Zm c2V0TGVmdCxwLmNsaWVudFdpZHRoXTt9ZnVuY3Rpb24gbyhxLHApe2lmKHA9PSdG T1JDRScpcmV0dXJuIHRydWU7aWYocD09J0lORElSRUNUJylyZXR1cm4gZmFsc2U7 cmV0dXJuIChxJiZsKHEpKTt9ZnVuY3Rpb24gayh6YSx3LGV2ZW50LHMpe3ZhciB5 PSghd2luZG93LkFyYml0ZXJNb25pdG9yKT8ncic6J2EnLHY9WzAsMCwwLDBdLHos dCx1O2lmKCEhZXZlbnQpe3o9ZXZlbnQudHlwZTtpZih6PT0nY2xpY2snJiZnZSgn Y29udGVudCcpKXY9bihldmVudCk7dmFyIHE9MDtldmVudC5jdHJsS2V5JiYocSs9 MSk7ZXZlbnQuc2hpZnRLZXkmJihxKz0yKTtldmVudC5hbHRLZXkmJihxKz00KTtl dmVudC5tZXRhS2V5JiYocSs9OCk7aWYocSl6Kz1xO31pZighIXcpdD1sKHcpO3Zh ciBwPVtdO2lmKHdpbmRvdy5BcmJpdGVyTW9uaXRvcil7dT1BcmJpdGVyTW9uaXRv ci5nZXRJbnRlcm5SZWYodyk7cD1BcmJpdGVyTW9uaXRvci5nZXRBY3RGaWVsZHMo KTt9dmFyIHI9Yyh3LFsnZnQnLCdndCddKTtkKHIuZnQscy5mdHx8e30pO2Qoci5n dCxzLmd0fHx7fSk7aWYoci5ndC51YV9pZCl6YS5zZXRfdWFfaWQoci5ndC51YV9p ZCk7aWYodHlwZW9mKHIuZnQuZWkpPT09J3N0cmluZycpZGVsZXRlIHIuZnQuZWk7 dmFyIHg9W3phLl91ZV90cyx6YS5fdWVfY291bnQsdHx8Jy0nLHphLl9jb250ZXh0 LHp8fCctJyx1fHxtKHcpLHksd2luZG93LlVSST9VUkkuZ2V0UmVxdWVzdFVSSSh0 cnVlLHRydWUpLmdldFVucXVhbGlmaWVkVVJJKCkudG9TdHJpbmcoKTpsb2NhdGlv bi5wYXRobmFtZStsb2NhdGlvbi5zZWFyY2grbG9jYXRpb24uaGFzaCxyXS5jb25j YXQodikuY29uY2F0KHApO3JldHVybiB4O31hLnN1YnNjcmliZSgiVXNlckFjdGlv bi9uZXciLGZ1bmN0aW9uKHIscSl7aWYobyhxLm5vZGUscS5tb2RlKSl7dmFyIHA9 ayhxLnVhLHEubm9kZSxxLmV2ZW50LHEuZXh0cmFfZGF0YSk7aihxLnVhLnVlKTti LmxvZygnYWN0JyxwKTt9fSk7fWguZXhwb3J0cz17aW5pdDpnfTt9KTsKX19lKCJj bGljay1yZWYiLFsiQ2xpY2tSZWYiXSxmdW5jdGlvbihhLGIpe2IoJ0NsaWNrUmVm JykuaW5pdCgpO30sMyk7Cl9fZSgiZG9tLWNvcmUiLFtdLGZ1bmN0aW9uKGQsZixl LGIpe3ZhciBhPWZ1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZz09J3N0cmluZyc/ ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZyk6Zzt9O3ZhciBjPWE7ZC5nZT1iLmdl PWM7ZC4kPWIuJD1hO30sMyk7Cl9fZSgiY3NzLWNvcmUiLFsiZG9tLWNvcmUiXSxm dW5jdGlvbihkLGYsZSxjKXt2YXIgYT1mKCdkb20tY29yZScpLiQ7dmFyIGI9e2hh c0NsYXNzOmZ1bmN0aW9uKGgsZyl7aD1hKGgpO3JldHVybiAoJyAnK2guY2xhc3NO YW1lKycgJykuaW5kZXhPZignICcrZysnICcpPi0xO30sYWRkQ2xhc3M6ZnVuY3Rp b24oaCxnKXtoPWEoaCk7aWYoZyYmIWIuaGFzQ2xhc3MoaCxnKSloLmNsYXNzTmFt ZT1oLmNsYXNzTmFtZSsnICcrZztyZXR1cm4gaDt9LHJlbW92ZUNsYXNzOmZ1bmN0 aW9uKGgsZyl7aD1hKGgpO2lmKGIuaGFzQ2xhc3MoaCxnKSloLmNsYXNzTmFtZT1o LmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoJyhefFxccyknK2crJyg/Olxc c3wkKScsJ2cnKSwnJDEnKTtyZXR1cm4gaDt9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9u KGgsZyl7cmV0dXJuIGIuY29uZGl0aW9uQ2xhc3MoaCxnLCFiLmhhc0NsYXNzKGgs ZykpO30sY29uZGl0aW9uQ2xhc3M6ZnVuY3Rpb24oaSxoLGcpe3JldHVybiAoZz9i LmFkZENsYXNzOmIucmVtb3ZlQ2xhc3MpKGksaCk7fSxzaG93OmZ1bmN0aW9uKGcp e2IucmVtb3ZlQ2xhc3MoZywnaGlkZGVuX2VsZW0nKTt9LGhpZGU6ZnVuY3Rpb24o Zyl7Yi5hZGRDbGFzcyhnLCdoaWRkZW5fZWxlbScpO30sY29uZGl0aW9uU2hvdzpm dW5jdGlvbihoLGcpe2IuY29uZGl0aW9uQ2xhc3MoaCwnaGlkZGVuX2VsZW0nLCFn KTt9fTtkLkNTUz1lLmV4cG9ydHM9Yjt9LDMpOwpfX2UoInBhcmVudCIsWyJjc3Mt Y29yZSJdLGZ1bmN0aW9uKGQsZixlLGMpe3ZhciBhPWYoJ2Nzcy1jb3JlJyk7dmFy IGI9e2J5VGFnOmZ1bmN0aW9uKGcsaCl7aD1oLnRvVXBwZXJDYXNlKCk7d2hpbGUo ZyYmZy5ub2RlTmFtZSE9aClnPWcucGFyZW50Tm9kZTtyZXR1cm4gZzt9LGJ5Q2xh c3M6ZnVuY3Rpb24oaCxnKXt3aGlsZShoJiYhYS5oYXNDbGFzcyhoLGcpKWg9aC5w YXJlbnROb2RlO3JldHVybiBoO30sYnlBdHRyaWJ1dGU6ZnVuY3Rpb24oaCxnKXt3 aGlsZShoJiYoIWguZ2V0QXR0cmlidXRlfHwhaC5nZXRBdHRyaWJ1dGUoZykpKWg9 aC5wYXJlbnROb2RlO3JldHVybiBoO319O2QuUGFyZW50PWUuZXhwb3J0cz1iO30s Myk7Cl9fZSgidHJhY2tSZWZlcnJlciIsWyJwYXJlbnQiXSxmdW5jdGlvbihjLGUs ZCxiKXt2YXIgYT1lKCJwYXJlbnQiKTtmdW5jdGlvbiBmKGcsayl7Zz1hLmJ5QXR0 cmlidXRlKGcsJ2RhdGEtcmVmZXJyZXInKTtpZihnKXt2YXIgaj0vXig/Oig/Olte OlwvPyNdKyk6KT8oPzpcL1wvKD86W15cLz8jXSopKT8oW14/I10qKSg/Olw/KFte I10qKSk/KD86IyguKikpPy8uZXhlYyhrKVsxXXx8Jyc7aWYoIWopcmV0dXJuO3Zh ciBpPWorJ3wnK2cuZ2V0QXR0cmlidXRlKCdkYXRhLXJlZmVycmVyJyk7dmFyIGg9 bmV3IERhdGUoKTtoLnNldFRpbWUoRGF0ZS5ub3coKSsxMDAwKTtkb2N1bWVudC5j b29raWU9Ingtc3JjPSIrZW5jb2RlVVJJQ29tcG9uZW50KGkpKyI7ICIrImV4cGly ZXM9IitoLnRvR01UU3RyaW5nKCkrIjtwYXRoPS87IGRvbWFpbj0iK3dpbmRvdy5s b2NhdGlvbi5ob3N0bmFtZS5yZXBsYWNlKC9eLiooXC5mYWNlYm9va1wuLiopJC9p LCckMScpO31yZXR1cm4gZzt9ZC5leHBvcnRzPWY7fSk7Cl9fZSgicmVmZXJyZXIt dHJhY2tlciIsWyJ0cmFja1JlZmVycmVyIl0sZnVuY3Rpb24oYSxiKXthLnRyYWNr UmVmZXJyZXI9YigndHJhY2tSZWZlcnJlcicpO30sMyk7Cl9fZSgiVXNlck5vT3Ai LFtdLGZ1bmN0aW9uKGQsZixlLGMpe3ZhciBhPWZ1bmN0aW9uKCl7fTt2YXIgYj1m dW5jdGlvbigpe3JldHVybiB0aGlzO307YS5wcm90b3R5cGU9e2FkZF9ldmVudDpi LGFkZF9kYXRhOmIsc2V0X3VhX2lkOmIsc2V0X25hbWVzcGFjZTpifTtlLmV4cG9y dHM9YTt9KTsKX19lKCJtaXhpbnMiLFsiYXJiaXRlciJdLGZ1bmN0aW9uKGQsZixl LGMpe3ZhciBhPWYoJ2FyYml0ZXInKTt2YXIgYj17QXJiaXRlcjp7X2dldEFyYml0 ZXJJbnN0YW5jZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcmJpdGVyfHwodGhp cy5fYXJiaXRlcj1uZXcgYSgpKTt9LGluZm9ybTpmdW5jdGlvbihpLGgsZyl7cmV0 dXJuIHRoaXMuX2dldEFyYml0ZXJJbnN0YW5jZSgpLmluZm9ybShpLGgsZyk7fSxz dWJzY3JpYmU6ZnVuY3Rpb24oaSxnLGgpe3JldHVybiB0aGlzLl9nZXRBcmJpdGVy SW5zdGFuY2UoKS5zdWJzY3JpYmUoaSxnLGgpO30sdW5zdWJzY3JpYmU6ZnVuY3Rp b24oZyl7dGhpcy5fZ2V0QXJiaXRlckluc3RhbmNlKCkudW5zdWJzY3JpYmUoZyk7 fX19O2QuTWl4aW5zPWUuZXhwb3J0cz1iO30sMyk7Cl9fZSgiYmluZCIsW10sZnVu Y3Rpb24oYyxlLGQsYil7ZnVuY3Rpb24gYShpLGgpe3ZhciBmPUFycmF5LnByb3Rv dHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTtmdW5jdGlvbiBnKCl7dmFyIGs9 aXx8KHRoaXM9PXdpbmRvdz9mYWxzZTp0aGlzKSxqPWYuY29uY2F0KEFycmF5LnBy b3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO2lmKHR5cGVvZihoKT09InN0 cmluZyIpe2lmKGtbaF0pcmV0dXJuIGtbaF0uYXBwbHkoayxqKTt9ZWxzZSByZXR1 cm4gaC5hcHBseShrLGopO31nLnRvU3RyaW5nPWZ1bmN0aW9uKCl7aWYodHlwZW9m KGgpPT0ic3RyaW5nIilyZXR1cm4gImJvdW5kIGxhemlseTogIitpW2hdO3JldHVy biAiYm91bmQ6ICIraDt9O3JldHVybiBnO31kLmV4cG9ydHM9YTtjLmJpbmQ9YTt9 LDMpOwpfX2UoImZ1bmN0aW9uLWV4dGVuc2lvbnMiLFsiQXJyYXlVdGlscyIsIm1p eGlucyIsImJpbmQiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGYsaCxnLGUp e3ZhciBhPWgoJ0FycmF5VXRpbHMnKTt2YXIgYj1oKCdtaXhpbnMnKTt2YXIgYz1o KCdiaW5kJyk7dmFyIGQ9aCgnY29weVByb3BlcnRpZXMnKTtGdW5jdGlvbi5taXhp bj1mdW5jdGlvbigpe2Zvcih2YXIgaj0xLGk9YXJndW1lbnRzLmxlbmd0aDtqPGk7 KytqKWQoYXJndW1lbnRzWzBdLGJbYXJndW1lbnRzW2pdXXx8YXJndW1lbnRzW2pd KTt9O0Z1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGope3ZhciBpPVtq LHRoaXNdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu dHMsMSkpO3JldHVybiBjLmFwcGx5KG51bGwsaSk7fTtGdW5jdGlvbi5wcm90b3R5 cGUuY3Vycnk9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuYmluZChudWxsLG51bGwp O0Z1bmN0aW9uLnByb3RvdHlwZS5zaGllbGQ9ZnVuY3Rpb24oail7aWYodHlwZW9m IHRoaXMhPSdmdW5jdGlvbicpdGhyb3cgbmV3IFR5cGVFeGNlcHRpb24oKTt2YXIg aT10aGlzLmJpbmQuYXBwbHkodGhpcyxhLmNyZWF0ZUZyb20oYXJndW1lbnRzKSk7 cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGkoKTt9O307RnVuY3Rpb24ucHJvdG90 eXBlLmRlZmVyPWZ1bmN0aW9uKGosaSl7aWYodHlwZW9mIHRoaXMhPSdmdW5jdGlv bicpdGhyb3cgbmV3IFR5cGVFcnJvcigpO2o9anx8MDtyZXR1cm4gc2V0VGltZW91 dCh0aGlzLGosaSk7fTt9LDMpOwpfX2UoIkZ1bmN0aW9uVXRpbHMiLFtdLGZ1bmN0 aW9uKGIsZSxkLGEpe2Z1bmN0aW9uIGMoaSxrLGcsZil7dmFyIGo7dmFyIGg9ZnVu Y3Rpb24oKXt2YXIgbD1hcmd1bWVudHM7dmFyIG09dGhpczt2YXIgbj1mdW5jdGlv bigpe2o9bnVsbDtpLmFwcGx5KG0sbCk7fTtnJiZoLnJlc2V0KCk7aWYoZ3x8IWop aj1zZXRUaW1lb3V0KG4sayxmKTt9O2gucmVzZXQ9ZnVuY3Rpb24oKXtqJiZjbGVh clRpbWVvdXQoaik7aj1udWxsO307cmV0dXJuIGg7fWQuZXhwb3J0cz17ZGVib3Vu Y2U6ZnVuY3Rpb24oZyxoLGYpe3JldHVybiBjKGcsaCx0cnVlLGYpO30sdGhyb3R0 bGU6ZnVuY3Rpb24oZyxoLGYpe3JldHVybiBjKGcsaCxmYWxzZSxmKTt9fTt9KTsK X19lKCJ1c2VyQWN0aW9uIixbImZ1bmN0aW9uLWV4dGVuc2lvbnMiLCJhcmJpdGVy IiwiRWFnbGVFeWUiLCJGdW5jdGlvblV0aWxzIiwiY29weVByb3BlcnRpZXMiLCJo YXNBcnJheU5hdHVyZSJdLGZ1bmN0aW9uKGgsbixqLGcpe24oImZ1bmN0aW9uLWV4 dGVuc2lvbnMiKTt2YXIgYT1uKCJhcmJpdGVyIik7dmFyIGI9bigiRWFnbGVFeWUi KTt2YXIgYz1uKCJGdW5jdGlvblV0aWxzIik7dmFyIGY9bigiY29weVByb3BlcnRp ZXMiKTt2YXIgaT1uKCJoYXNBcnJheU5hdHVyZSIpO2Z1bmN0aW9uIGQodCxzLHEp e3ZhciByPXQrJy8nK3M7Zih0aGlzLHt1ZTpyLF91YV9pZDpudWxsLF90czp0LF9u czpudWxsLF9zdGFydF90czp0LF9wcmV2X2V2ZW50OidzJyxfdWVfdHM6dCxfdWVf Y291bnQ6cyxfY29udGV4dDpxLF9kYXRhX3ZlcnNpb246MSxfZXZlbnRfdmVyc2lv bjoyLF9pbmZvX3ZlcnNpb246MX0pO2lmKGQuZW5hYmxlLnJlcG9ydCliLmxvZygn dWFuJyxbdCxzXSk7dGhpcy5fcmVwb3J0PWMuZGVib3VuY2UoZnVuY3Rpb24gcmVw b3J0KCl7aWYoIWQuZW5hYmxlLnJlcG9ydClyZXR1cm47dmFyIHU9W3RoaXMuX2lu Zm9fdmVyc2lvbix0aGlzLnVlLHRoaXMuX25zLHRoaXMuX3VhX2lkXTtiLmxvZygn dWFpJyx1KTt9LmJpbmQodGhpcyksMTAwKTt9dmFyIGU9W107ZC5lbmFibGU9ZnVu Y3Rpb24ocil7aWYoIXIpcmV0dXJuO2lmKCFpKHIpKXI9W3JdO2Zvcih2YXIgcT0w O3E8ci5sZW5ndGg7cSsrKWQuZW5hYmxlW3JbcV1dPXRydWU7fTtmKGQucHJvdG90 eXBlLHtzZXRfdWFfaWQ6ZnVuY3Rpb24ocSl7dGhpcy5fdWFfaWQ9cTt0aGlzLl9y ZXBvcnQoKTtyZXR1cm4gdGhpczt9LHNldF9uYW1lc3BhY2U6ZnVuY3Rpb24ocSl7 dGhpcy5fbnM9cTt0aGlzLl9yZXBvcnQoKTtyZXR1cm4gdGhpczt9LGFkZF9ldmVu dDpmdW5jdGlvbihzLHQpe2lmKCFkLmVuYWJsZS5ldmVudHMpcmV0dXJuIHRoaXM7 dD10fHwwO3ZhciB2PShEYXRlLm5vdygpLXQpO3ZhciBxPXYtdGhpcy5fdHM7dmFy IHU9di10aGlzLl91ZV90czt2YXIgcj1bdGhpcy5fZXZlbnRfdmVyc2lvbix0aGlz LnVlLHRoaXMuX25zLHRoaXMuX3VhX2lkLHRoaXMuX3ByZXZfZXZlbnQscyxxLHVd O2IubG9nKCd1YWUnLHIpO3RoaXMuX3RzPXY7dGhpcy5fcHJldl9ldmVudD1zO3Jl dHVybiB0aGlzO30sYWRkX2RhdGE6ZnVuY3Rpb24ocSl7aWYoIWQuZW5hYmxlLmRh dGEpcmV0dXJuIHRoaXM7dmFyIHI9W3RoaXMuX2RhdGFfdmVyc2lvbix0aGlzLnVl LHFdO2IubG9nKCd1YWQnLHIpO3JldHVybiB0aGlzO319KTt2YXIgbz0wO3ZhciBt PTA7dmFyIGw9bnVsbDt2YXIgaz1udWxsO2Z1bmN0aW9uIHAocSx1LGV2ZW50LHQs cil7dmFyIHg9RGF0ZS5ub3coKTt2YXIgdz14KycvJytvO3I9cnx8e307aWYoIXUm JmV2ZW50KXU9ZXZlbnQuZ2V0VGFyZ2V0KCk7dmFyIHM9NTA7aWYodSYmbClpZih4 LW08cyYmdT09bCYmdCE9IkZPUkNFIilyZXR1cm4gZVtlLmxlbmd0aC0xXTtpZigh d2luZG93LmFkZEV2ZW50TGlzdGVuZXImJmRvY3VtZW50LmNyZWF0ZUV2ZW50T2Jq ZWN0KWV2ZW50PWRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KGV2ZW50KTtsPXU7 az1ldmVudDt2YXIgdj1uZXcgZCh4LG8scSk7ZS5wdXNoKHYpO3doaWxlKGUubGVu Z3RoPjEwKWUuc2hpZnQoKTthLmluZm9ybSgiVXNlckFjdGlvbi9uZXciLHt1YTp2 LG5vZGU6dSxtb2RlOnQsZXZlbnQ6ZXZlbnQsZXh0cmFfZGF0YTpyfSk7bT14O28r KztyZXR1cm4gdjt9YS5zdWJzY3JpYmUoIlVzZXJBY3Rpb24vZW5hYmxlIixmdW5j dGlvbihyLHEpe2QuZW5hYmxlKHEpO30pO2ouZXhwb3J0cz1wO30pOwpfX2UoIlVz ZXJBY3Rpb24iLFsiVXNlck5vT3AiLCJ1c2VyQWN0aW9uIl0sZnVuY3Rpb24oYSxi KXthLlVzZXJOb09wPWIoJ1VzZXJOb09wJyk7YS51c2VyX2FjdGlvbj1hLnVzZXJf YWN0aW9ufHxiKCd1c2VyQWN0aW9uJyk7YS5yZXBvcnRfZGF0YT1hLnJlcG9ydF9k YXRhfHxmdW5jdGlvbihjLGQpe3VzZXJfYWN0aW9uKGMsbnVsbCxudWxsLCdGT1JD RScsZCk7fTt9LDMpOwohZnVuY3Rpb24oKXtpZih3aW5kb3cuX19wcmltZXIpcmV0 dXJuO3dpbmRvdy5fX3ByaW1lcj10cnVlO3ZhciBhPW51bGw7dmFyIGI9L2FzeW5j KD86LXBvc3QpP3xkaWFsb2coPzotcGlwZXwtcG9zdCk/fHRoZWF0ZXJ8dG9nZ2xl Lztkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub25jbGljaz1mdW5jdGlvbihlKXtl PWV8fHdpbmRvdy5ldmVudDthPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnQ7dmFyIGY9 UGFyZW50LmJ5VGFnKGEsJ0EnKTtpZighZilyZXR1cm47dmFyIGM9Zi5nZXRBdHRy aWJ1dGUoJ2FqYXhpZnknKTt2YXIgZz1mLmhyZWY7dmFyIGw9Y3x8ZztpZihsKXt2 YXIgaz11c2VyX2FjdGlvbignYScsZixlKS5zZXRfbmFtZXNwYWNlKCdwcmltZXIn KTtpZih3aW5kb3cuQXJiaXRlck1vbml0b3IpQXJiaXRlck1vbml0b3IuaW5pdFVB KGssW2ZdKTt9aWYoYyYmZyYmISgvIyQvKS50ZXN0KGcpKXt2YXIgaD1lLndoaWNo JiZlLndoaWNoIT0xO3ZhciBpPWUuYWx0S2V5fHxlLmN0cmxLZXl8fGUubWV0YUtl eXx8ZS5zaGlmdEtleTtpZihofHxpKXJldHVybjt9dHJhY2tSZWZlcnJlcihmLGwp O3ZhciBkPVsnZGlhbG9nJ107dmFyIGo9Zi5yZWwmJmYucmVsLm1hdGNoKGIpO2o9 aiYmalswXTtzd2l0Y2goail7Y2FzZSAnZGlhbG9nLXBpcGUnOmQucHVzaCgnYWph eHBpcGUnKTtjYXNlICdkaWFsb2cnOmNhc2UgJ2RpYWxvZy1wb3N0JzpCb290bG9h ZGVyLmxvYWRDb21wb25lbnRzKGQsZnVuY3Rpb24oKXtEaWFsb2cuYm9vdHN0cmFw KGwsbnVsbCxqPT0nZGlhbG9nJyxudWxsLG51bGwsZik7fSk7YnJlYWs7Y2FzZSAn YXN5bmMnOmNhc2UgJ2FzeW5jLXBvc3QnOkJvb3Rsb2FkZXIubG9hZENvbXBvbmVu dHMoJ2FzeW5jJyxmdW5jdGlvbigpe0FzeW5jUmVxdWVzdC5ib290c3RyYXAobCxm KTt9KTticmVhaztjYXNlICd0aGVhdGVyJzpCb290bG9hZGVyLmxvYWRDb21wb25l bnRzKCdQaG90b1Nub3dib3gnLGZ1bmN0aW9uKCl7UGhvdG9Tbm93Ym94LmJvb3Rz dHJhcChsLGYpO30pO2JyZWFrO2Nhc2UgJ3RvZ2dsZSc6Q1NTLnRvZ2dsZUNsYXNz KGYucGFyZW50Tm9kZSwnb3BlblRvZ2dsZXInKTtCb290bG9hZGVyLmxvYWRDb21w b25lbnRzKCdUb2dnbGVyJyxmdW5jdGlvbigpe1RvZ2dsZXIuYm9vdHN0cmFwKGYp O30pO2JyZWFrO2RlZmF1bHQ6cmV0dXJuO31yZXR1cm4gZmFsc2U7fTtkb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQub25zdWJtaXQ9ZnVuY3Rpb24oYyl7Yz1jfHx3aW5k b3cuZXZlbnQ7dmFyIGQ9Yy50YXJnZXR8fGMuc3JjRWxlbWVudDtpZihkJiZkLm5v ZGVOYW1lPT0nRk9STScmJmQuZ2V0QXR0cmlidXRlKCdyZWwnKT09J2FzeW5jJyl7 dmFyIGY9dXNlcl9hY3Rpb24oJ2YnLGQsYykuc2V0X25hbWVzcGFjZSgncHJpbWVy Jyk7aWYod2luZG93LkFyYml0ZXJNb25pdG9yKUFyYml0ZXJNb25pdG9yLmluaXRV QShmLFtkXSk7dmFyIGU9YTtCb290bG9hZGVyLmxvYWRDb21wb25lbnRzKCdkb20t Zm9ybScsZnVuY3Rpb24oKXtGb3JtLmJvb3RzdHJhcChkLGUpO30pO3JldHVybiBm YWxzZTt9fTt9KCk7Cl9fZSgiYXJyYXktZXh0ZW5zaW9ucyIsWyJhcmJpdGVyIiwi Y29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihkLGcsZSxjKXt2YXIgYT1nKCdhcmJp dGVyJyk7dmFyIGI9ZygnY29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBmKGgpe3Jl dHVybiBmdW5jdGlvbigpe2lmKHRoaXM9PT1kKXRocm93IG5ldyBUeXBlRXJyb3Io KTtyZXR1cm4gaC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7fTt9YihBcnJheS5wcm90 b3R5cGUse21hcDpmdW5jdGlvbihpLGgpe2lmKHRoaXM9PT1kfHx0eXBlb2YgaSE9 J2Z1bmN0aW9uJyl0aHJvdyBuZXcgVHlwZUVycm9yKCk7dmFyIGo7dmFyIGs9dGhp cy5sZW5ndGg7dmFyIGw9bmV3IEFycmF5KGspO2ZvcihqPTA7ajxrOysrailpZihq IGluIHRoaXMpbFtqXT1pLmNhbGwoaCx0aGlzW2pdLGosdGhpcyk7cmV0dXJuIGw7 fSxmb3JFYWNoOmZ1bmN0aW9uKGksaCl7dGhpcy5tYXAoaSxoKTt9LGZpbHRlcjpm KGZ1bmN0aW9uKGksaCl7aWYodHlwZW9mIGkhPSdmdW5jdGlvbicpdGhyb3cgbmV3 IFR5cGVFcnJvcigpO3ZhciBqLG0saz10aGlzLmxlbmd0aCxsPVtdO2ZvcihqPTA7 ajxrOysrailpZihqIGluIHRoaXMpe209dGhpc1tqXTtpZihpLmNhbGwoaCxtLGos dGhpcykpbC5wdXNoKG0pO31yZXR1cm4gbDt9KSxldmVyeTpmKGZ1bmN0aW9uKGks aCl7aWYodHlwZW9mIGkhPT0nZnVuY3Rpb24nKXRocm93IG5ldyBUeXBlRXJyb3Io KTt2YXIgbD1uZXcgT2JqZWN0KHRoaXMpO3ZhciBrPWwubGVuZ3RoO2Zvcih2YXIg aj0wO2o8aztqKyspaWYoaiBpbiBsKWlmKCFpLmNhbGwoaCxsW2pdLGosbCkpcmV0 dXJuIGZhbHNlO3JldHVybiB0cnVlO30pLHNvbWU6ZihmdW5jdGlvbihpLGgpe2lm KHR5cGVvZiBpIT09J2Z1bmN0aW9uJyl0aHJvdyBuZXcgVHlwZUVycm9yKCk7dmFy IGw9bmV3IE9iamVjdCh0aGlzKTt2YXIgaz1sLmxlbmd0aDtmb3IodmFyIGo9MDtq PGs7aisrKWlmKGogaW4gbClpZihpLmNhbGwoaCxsW2pdLGosbCkpcmV0dXJuIHRy dWU7cmV0dXJuIGZhbHNlO30pLHJlZHVjZTpudWxsLHJlZHVjZVJpZ2h0Om51bGws c29ydDpmKEFycmF5LnByb3RvdHlwZS5zb3J0KSxyZXZlcnNlOmYoQXJyYXkucHJv dG90eXBlLnJldmVyc2UpLGNvbmNhdDpmKEFycmF5LnByb3RvdHlwZS5jb25jYXQp LHNsaWNlOmYoQXJyYXkucHJvdG90eXBlLnNsaWNlKSxpbmRleE9mOmYoQXJyYXku cHJvdG90eXBlLmluZGV4T2Z8fGZ1bmN0aW9uKGosaCl7dmFyIGk9dGhpcy5sZW5n dGg7aHw9MDtpZihoPDApaCs9aTtmb3IoO2g8aTtoKyspaWYoaCBpbiB0aGlzJiZ0 aGlzW2hdPT09ailyZXR1cm4gaDtyZXR1cm4gLTE7fSksY29udGFpbnM6ZnVuY3Rp b24oaCl7cmV0dXJuIHRoaXMuaW5kZXhPZihoKSE9LTE7fSxyZW1vdmU6ZnVuY3Rp b24oaSl7dmFyIGg9dGhpcy5pbmRleE9mKGkpO2lmKGghPS0xKXRoaXMuc3BsaWNl KGgsMSk7fX0pO0FycmF5LnByb3RvdHlwZS5lYWNoPUFycmF5LnByb3RvdHlwZS5m b3JFYWNoO2EuaW5mb3JtKCdmYmpzL3Byb3RvdHlwZXMnKTt9LDMpOwpfX2UoIm9i amVjdC1jb3JlLXV0aWxzIixbImlzRW1wdHkiLCJjb3B5UHJvcGVydGllcyJdLGZ1 bmN0aW9uKGMsZSxkLGIpe2MuaXNfZW1wdHk9ZSgnaXNFbXB0eScpO2MuY29weV9w cm9wZXJ0aWVzPWUoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rpb24gYShmLGcpe3Jl dHVybiBjb3B5X3Byb3BlcnRpZXMod2luZG93W2ZdfHwod2luZG93W2ZdPXt9KSxn KTt9Yy5hZGRfcHJvcGVydGllcz1iLmFkZF9wcm9wZXJ0aWVzPWE7fSwzKTsKSW5p dGlhbEpTTG9hZGVyPXdpbmRvdy5Jbml0aWFsSlNMb2FkZXJ8fHtJTklUSUFMX0pT X1JFQURZOidCT09UTE9BRC9KU1JFQURZJyxsb2FkOmZ1bmN0aW9uKGEpe0luaXRp YWxKU0xvYWRlci5jYWxsYmFjaz1Cb290bG9hZGVyLmxvYWRSZXNvdXJjZXMoYSxJ bml0aWFsSlNMb2FkZXIuY2FsbGJhY2spO30sY2FsbGJhY2s6QXJiaXRlci5yZWdp c3RlckNhbGxiYWNrKGZ1bmN0aW9uKCl7QXJiaXRlci5pbmZvcm0oSW5pdGlhbEpT TG9hZGVyLklOSVRJQUxfSlNfUkVBRFksdHJ1ZSxBcmJpdGVyLkJFSEFWSU9SX1NU QVRFKTt9LFtPbmxvYWRFdmVudC5PTkxPQURfRE9NQ09OVEVOVF9DQUxMQkFDS10p fTsKX19lKCJKU0xvZ2dlciIsWyJqc29uIl0sZnVuY3Rpb24oZCxmLGUsYyl7Zign anNvbicpO2Z1bmN0aW9uIGIoaCl7dGhpcy5jYXQ9aDt0aGlzLl9jb3VudHM9e307 fXZhciBhPXtfSlNMb2dnZXI6YixpbnN0YW5jZXM6e30sYmFja2xvZzpbXSxzdHJp bmdpZnk6ZnVuY3Rpb24oaSl7aWYoaSBpbnN0YW5jZW9mIEVycm9yJiZ3aW5kb3cu U3lzdGVtRXZlbnRzKWk9U3lzdGVtRXZlbnRzLm5vcm1hbGl6ZUVycm9yKGkpO3Ry eXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoaSk7fWNhdGNoKGgpe3JldHVybiAne30n O319fTtmdW5jdGlvbiBnKGgpe2IucHJvdG90eXBlW2hdPWZ1bmN0aW9uKGV2ZW50 LGkpe2lmKGEuYmFja2xvZy5sZW5ndGg8MTAwKWEuYmFja2xvZy5wdXNoKFt0aGlz LmNhdCxoLGV2ZW50LGkmJmEuc3RyaW5naWZ5KGkpLG5ldyBEYXRlKCldKTt9O31n KCdkZWJ1ZycpO2coJ2xvZycpO2coJ3dhcm4nKTtnKCdlcnJvcicpO2coJ2J1bXAn KTtnKCdyYXRlJyk7ZC5KU0xvZ2dlcj1lLmV4cG9ydHM9e186YSxEVU1QX0VWRU5U Oidqc2xvZ2dlci9kdW1wJyxjcmVhdGU6ZnVuY3Rpb24oaCl7cmV0dXJuIGEuaW5z dGFuY2VzW2hdfHwoYS5pbnN0YW5jZXNbaF09bmV3IGIoaCkpO319O30sMyk7Cl9f ZSgiY3VycnkiLFsiYmluZCJdLGZ1bmN0aW9uKGQsZixlLGMpe3ZhciBhPWYoJ2Jp bmQnKTt2YXIgYj1hKG51bGwsYSxudWxsKTtlLmV4cG9ydHM9YjtkLmN1cnJ5PWI7 fSwzKTsKX19lKCJldmVudC1mb3JtLWJ1YmJsaW5nIixbXSxmdW5jdGlvbihiLGQs YyxhKXtiLkV2ZW50PWIuRXZlbnR8fGZ1bmN0aW9uKCl7fTtFdmVudC5fX2lubGlu ZVN1Ym1pdD1mdW5jdGlvbihmLGV2ZW50KXt2YXIgZT1FdmVudC5fX2dldEhhbmRs ZXImJkV2ZW50Ll9fZ2V0SGFuZGxlcihmLCdzdWJtaXQnKTtyZXR1cm4gZT9udWxs OkV2ZW50Ll9fYnViYmxlU3VibWl0KGYsZXZlbnQpO307RXZlbnQuX19idWJibGVT dWJtaXQ9ZnVuY3Rpb24oZSxldmVudCl7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVt ZW50LmF0dGFjaEV2ZW50KXt2YXIgZjt3aGlsZShmIT09ZmFsc2UmJihlPWUucGFy ZW50Tm9kZSkpZj1lLm9uc3VibWl0P2Uub25zdWJtaXQoZXZlbnQpOkV2ZW50Ll9f ZmlyZSYmRXZlbnQuX19maXJlKGUsJ3N1Ym1pdCcsZXZlbnQpO3JldHVybiBmO319 O30sMyk7Cl9fZSgid2FpdF9mb3JfbG9hZCIsWyJib290bG9hZGVyIiwib25sb2Fk IiwiYmluZCJdLGZ1bmN0aW9uKGUsZyxmLGQpe3ZhciBhPWcoJ2Jvb3Rsb2FkZXIn KTt2YXIgYj1nKCdvbmxvYWQnKTt2YXIgYz1nKCdiaW5kJyk7ZnVuY3Rpb24gaChr LGwpe3JldHVybiB3aW5kb3cubG9hZGVkJiZsLmNhbGwoayk7fWZ1bmN0aW9uIGko bCxrLG0pe2EubG9hZENvbXBvbmVudHMoayxjKGwsbSkpO3JldHVybiBmYWxzZTt9 ZnVuY3Rpb24gaihtLGwsbyl7bz1jKG0sbyxsKTtpZih3aW5kb3cubG9hZGVkKXJl dHVybiBvKCk7c3dpdGNoKChsfHxldmVudCkudHlwZSl7Y2FzZSAnbG9hZCc6Y2Fz ZSAnZm9jdXMnOmIucnVuQWZ0ZXJsb2FkKG8pO3JldHVybjtjYXNlICdjbGljayc6 dmFyIG49bS5zdHlsZSxrPWRvY3VtZW50LmJvZHkuc3R5bGU7bi5jdXJzb3I9ay5j dXJzb3I9J3Byb2dyZXNzJztiLnJ1bkFmdGVybG9hZChmdW5jdGlvbigpe24uY3Vy c29yPWsuY3Vyc29yPScnO2lmKG0udGFnTmFtZS50b0xvd2VyQ2FzZSgpPT0nYScp e2lmKGZhbHNlIT09bygpJiZtLmhyZWYpd2luZG93LmxvY2F0aW9uLmhyZWY9bS5o cmVmO31lbHNlIGlmKG0uY2xpY2spbS5jbGljaygpO30pO2JyZWFrO31yZXR1cm4g ZmFsc2U7fWUucnVuX2lmX2xvYWRlZD1oO2UucnVuX3dpdGg9aTtlLndhaXRfZm9y X2xvYWQ9ajt9LDMpOwpfX2UoIkludGwiLFtdLGZ1bmN0aW9uKGMsZixkLGIpe2Z1 bmN0aW9uIGEoZyl7aWYodHlwZW9mIGchPSdzdHJpbmcnKXJldHVybiBmYWxzZTty ZXR1cm4gZy5tYXRjaChuZXcgUmVnRXhwKGEucHVuY3RfY2hhcl9jbGFzcysnWycr JykiJysiJyIrJ1x1MDBCQicrJ1x1MEYzQicrJ1x1MEYzRCcrJ1x1MjAxOScrJ1x1 MjAxRCcrJ1x1MjAzQScrJ1x1MzAwOScrJ1x1MzAwQicrJ1x1MzAwRCcrJ1x1MzAw RicrJ1x1MzAxMScrJ1x1MzAxNScrJ1x1MzAxNycrJ1x1MzAxOScrJ1x1MzAxQicr J1x1MzAxRScrJ1x1MzAxRicrJ1x1RkQzRicrJ1x1RkYwNycrJ1x1RkYwOScrJ1x1 RkYzRCcrJ1xzJysnXSokJykpO31hLnB1bmN0X2NoYXJfY2xhc3M9J1snKycuIT8n KydcdTMwMDInKydcdUZGMDEnKydcdUZGMUYnKydcdTA5NjQnKydcdTIwMjYnKydc dTBFQUYnKydcdTE4MDEnKydcdTBFMkYnKydcdUZGMEUnKyddJztmdW5jdGlvbiBl KG0pe3ZhciBrLGo9bSxsPXdpbmRvdy5pbnRsX2xvY2FsZV9yZXdyaXRlcyxoLGk7 dHJ5e2lmKGwpe3ZhciBwYXRzPVtdLHJlcHM9W107Zm9yKHZhciBwIGluIGwucGF0 dGVybnMpe3ZhciBwYXQ9cCxyZXA9bC5wYXR0ZXJuc1twXTtmb3IoaCBpbiBsLm1l dGEpe2s9bmV3IFJlZ0V4cChoLnNsaWNlKDEsLTEpLCdnJyk7cGF0PXBhdC5yZXBs YWNlKGssbC5tZXRhW2hdKTtyZXA9cmVwLnJlcGxhY2UoayxsLm1ldGFbaF0pO31w YXRzW3BhdHMubGVuZ3RoXT1wYXQ7cmVwc1tyZXBzLmxlbmd0aF09cmVwO31mb3Io dmFyIGlpPTA7aWk8cGF0cy5sZW5ndGg7aWkrKyl7az1uZXcgUmVnRXhwKHBhdHNb aWldLnNsaWNlKDEsLTEpLCdnJyk7aWYocmVwc1tpaV09PSdqYXZhc2NyaXB0Jyl7 aT1tLm1hdGNoKGspO2g9aSYmaVswXTtpZihoKW09bS5yZXBsYWNlKGssaC5zbGlj ZSgxKS50b0xvd2VyQ2FzZSgpKTt9ZWxzZSBtPW0ucmVwbGFjZShrLHJlcHNbaWld KTt9fX1jYXRjaChnKXttPWo7fWs9bmV3IFJlZ0V4cCgnXHgwMScsJ2cnKTttPW0u cmVwbGFjZShrLCcnKTtyZXR1cm4gbTt9ZC5leHBvcnRzPXtlbmRzSW5QdW5jdDph LHBob25vbG9naWNhbFJ1bGVzOmV9O30pOwpfX2UoIl90eCIsWyJJbnRsIl0sZnVu Y3Rpb24oZCxmLGUsYyl7dmFyIGE9ZignSW50bCcpO2Z1bmN0aW9uIGIoayxnKXtp ZighZylyZXR1cm4gazt2YXIgajtmb3IodmFyIGkgaW4gZyl7aWYoYS5lbmRzSW5Q dW5jdChnW2ldKSl7aj1uZXcgUmVnRXhwKCdcXHsnK2krJ1xcfScrYS5lbmRzSW5Q dW5jdC5wdW5jdF9jaGFyX2NsYXNzKycqJywnZycpO31lbHNlIGo9bmV3IFJlZ0V4 cCgnXFx7JytpKydcXH0nLCdnJyk7dmFyIGg9J1x4MDEnO2s9ay5yZXBsYWNlKGos aCtnW2ldK2gpO31rPWEucGhvbm9sb2dpY2FsUnVsZXMoayk7cmV0dXJuIGs7fWUu ZXhwb3J0cz1iO30pOwpfX2UoInR4IixbIl90eCJdLGZ1bmN0aW9uKGMsZSxkLGIp e3ZhciBhPWUoJ190eCcpO2Z1bmN0aW9uIGYoaCxnKXtpZih0eXBlb2YgX3N0cmlu Z190YWJsZT09J3VuZGVmaW5lZCcpcmV0dXJuO2g9X3N0cmluZ190YWJsZVtoXTty ZXR1cm4gYShoLGcpO31kLmV4cG9ydHM9Zjt9KTsKX19lKCJpbnRsLWNvcmUiLFsi dHgiLCJfdHgiLCJJbnRsIl0sZnVuY3Rpb24oYyxkKXt2YXIgZT1kKCd0eCcpO3Zh ciBiPWQoJ190eCcpO3ZhciBhPWQoJ0ludGwnKTtjLnR4PWU7Yy5fdHg9YjtjLmlu dGxfZW5kc19pbl9wdW5jdD1hLmVuZHNJblB1bmN0O2MuaW50bF9waG9ub2xvZ2lj YWxfcnVsZXM9YS5waG9ub2xvZ2ljYWxSdWxlczt9LDMpOwpEeW5hVGVtcGxhdGU9 d2luZG93LkR5bmFUZW1wbGF0ZXx8KGZ1bmN0aW9uKCl7dmFyIGc9J1tbJyxpPSdc XFtcXFsnLGg9J1xcXVxcXSc7dmFyIGw9e307dmFyIGE9e307ZnVuY3Rpb24gZChu LG0pe3JldHVybiBtLmluZGV4T2YoZytuKSE9LTE7fWZ1bmN0aW9uIGUobSl7cmV0 dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChtKT09PSJbb2JqZWN0 IEFycmF5XSI7fWZ1bmN0aW9uIGYobSl7cmV0dXJuIG0mJnR5cGVvZiBtPT0ib2Jq ZWN0Ijt9ZnVuY3Rpb24gYyhtKXtzd2l0Y2gobSl7Y2FzZSAiJiI6cmV0dXJuICIm YW1wOyI7Y2FzZSAnIic6cmV0dXJuICcmcXVvdDsnO2Nhc2UgIiciOnJldHVybiAn JiMzOTsnO2Nhc2UgIjwiOnJldHVybiAiJmx0OyI7Y2FzZSAiPiI6cmV0dXJuICIm Z3Q7IjtkZWZhdWx0OnJldHVybiBtO319ZnVuY3Rpb24gYihtKXttPVN0cmluZyht PT09bnVsbD8iIjptKTtyZXR1cm4gbS5yZXBsYWNlKC8mKD8hXHcrOyl8WyInPD5d L2csYyk7fWZ1bmN0aW9uIGoobil7Zm9yKHZhciBtIGluIG4pe3ZhciBvPW5bbV07 YVtvWzBdXT1vWzFdO2xbbV09b1sxXTt9fWZ1bmN0aW9uIGsocCxtKXtpZihwLmNo YXJBdCgwKT09J0AnKXJldHVybiBrKGFbcC5zdWJzdHJpbmcoMSldLG0pO2lmKGQo JyMnLHApfHxkKCdeJyxwKSl7dmFyIG89bmV3IFJlZ0V4cChpKyIoXFxefFxcIylc XHMqKC4rKVxccyoiK2grIlxuKihbXFxzXFxTXSs/KSIraSsiXFwvXFxzKlxcMlxc cyoiK2grIlxccyoiLCJtZyIpO3A9cC5yZXBsYWNlKG8sZnVuY3Rpb24ocSx2LHQs cil7dmFyIHc9bVt0XTt3PSh3JiZ3Ll9faHRtbCE9PXVuZGVmaW5lZCk/dy5fX2h0 bWw6dztpZih2PT0nXicpe2lmKCF3fHxlKHcpJiZ3Lmxlbmd0aD09PTApe3JldHVy biBrKHIsbSk7fWVsc2UgcmV0dXJuICcnO31lbHNlIGlmKHY9PScjJyl7aWYoZSh3 KSl7dmFyIHU9W107Zm9yKHZhciBzPTA7czx3Lmxlbmd0aDtzKyspdS5wdXNoKGso cix3W3NdKSk7cmV0dXJuIHUuam9pbignJyk7fWVsc2UgaWYoZih3KSl7cmV0dXJu IGsocix3KTt9ZWxzZSBpZighKHR5cGVvZiB3PT0nZnVuY3Rpb24nKSlpZih3KXJl dHVybiBrKHIsbSk7cmV0dXJuICcnO319KTt9aWYoIWQoIiIscCkpcmV0dXJuIHA7 dmFyIG49bmV3IFJlZ0V4cChpKyIoPnxcXFt8Jik/KFteXFwvI1xcXl0rPylcXDE/ IitoKyIrIiwiZyIpO3JldHVybiBwLnJlcGxhY2UobixmdW5jdGlvbihxLHMscil7 cj1yLnJlcGxhY2UoL15ccyp8XHMqJC9nLCIiKTt2YXIgdD1tW3JdO2lmKCF0fHx0 IGluc3RhbmNlb2YgQXJyYXkmJnQubGVuZ3RoPT09MClyZXR1cm4gJyc7c3dpdGNo KHMpe2Nhc2UgJz4nOmlmKHRbMF0uY2hhckF0KDApPT0nQCcpe3JldHVybiBrKHRb MF0sdFsxXSk7fWVsc2UgaWYoISh0WzBdIGluIGwpKXJldHVybiAnJztyZXR1cm4g ayhsW3RbMF1dLHRbMV0pO2Nhc2UgJyYnOmRlZmF1bHQ6aWYod2luZG93LkhUTUwm JnQgaW5zdGFuY2VvZiBIVE1MKXJldHVybiB0LnRvU3RyaW5nKCk7cmV0dXJuIHQu X19odG1sIT09dW5kZWZpbmVkP3QuX19odG1sOmIodCk7fX0pO31yZXR1cm4ge3Jl Z2lzdGVyVGVtcGxhdGVzOmoscmVuZGVyVG9IdG1sOmt9O30pKCk7Cl9fZSgiSlND QyIsWyJhcnJheS1leHRlbnNpb25zIiwidXRpbCIsImlzRW1wdHkiXSxmdW5jdGlv bihmLGwsayxkKXtsKCJhcnJheS1leHRlbnNpb25zIik7dmFyIGI9bCgidXRpbCIp O3ZhciBpPWwoImlzRW1wdHkiKTt2YXIgZT17fTt2YXIgZz17fTt2YXIgaj17fTtm dW5jdGlvbiBjKG4pe3ZhciBvO3ZhciBtPWZhbHNlO3JldHVybiBmdW5jdGlvbigp e2lmKCFtKXtvPW4oKTttPXRydWU7fXJldHVybiBvO307fWZ1bmN0aW9uIGgobSxv KXtpZihpKG0pKXJldHVybjtmb3IodmFyIG4gaW4gbSl7ZVtuXT1jKG1bbl0pO2lm KG8pe2lmKCFqW29dKWpbb109W107altvXS5wdXNoKG4pO319fXZhciBhPXtnZXQ6 ZnVuY3Rpb24obSl7cmV0dXJuIChlW21dfHxnW21dKSgpO30saW5pdDpmdW5jdGlv bihtKXtoKG0pO30saW5pdEZvclBhZ2VsZXQ6ZnVuY3Rpb24obixtKXtoKG0sbik7 fSxjbGVhckZvclBhZ2VsZXQ6ZnVuY3Rpb24obyl7aWYoaltvXSl7Zm9yKHZhciBt PTA7bTxqW29dLmxlbmd0aDttKyspe3ZhciBuPWpbb11bbV07Z1tuXT1lW25dO2Rl bGV0ZSBlW25dO31kZWxldGUgaltvXTt9fX07ay5leHBvcnRzPWE7Zi5KU0NDPWYu SlNDQ3x8YTt9KTsKX19lKCJpbnZva2VDYWxsYmFja3MiLFtdLGZ1bmN0aW9uKGIs ZSxkLGEpe2Z1bmN0aW9uIGMoZyxpKXtpZihnKWZvcih2YXIgaD0wO2g8Zy5sZW5n dGg7aCsrKXRyeXsobmV3IEZ1bmN0aW9uKGdbaF0pKS5hcHBseShpKTt9Y2F0Y2go Zil7fX1kLmV4cG9ydHM9Yzt9KTsKX19lKCJiaWctcGlwZSIsWyJhcmJpdGVyIiwi Ym9vdGxvYWRlciIsIkVudiIsIkpTQ0MiLCJkb20tY29yZSIsImJpbmQiLCJjb3B5 UHJvcGVydGllcyIsImludm9rZUNhbGxiYWNrcyJdLGZ1bmN0aW9uKGdsb2JhbCxy ZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgQXJiaXRlcj1yZXF1aXJlKCdhcmJp dGVyJyk7dmFyIEJvb3Rsb2FkZXI9cmVxdWlyZSgnYm9vdGxvYWRlcicpO3ZhciBF bnY9cmVxdWlyZSgnRW52Jyk7dmFyIEpTQ0M9cmVxdWlyZSgnSlNDQycpO3ZhciAk PXJlcXVpcmUoJ2RvbS1jb3JlJykuJDt2YXIgYmluZD1yZXF1aXJlKCdiaW5kJyk7 dmFyIGNvcHlQcm9wZXJ0aWVzPXJlcXVpcmUoJ2NvcHlQcm9wZXJ0aWVzJyk7dmFy IGdlPXJlcXVpcmUoJ2RvbS1jb3JlJykuZ2U7dmFyIGludm9rZUNhbGxiYWNrcz1y ZXF1aXJlKCdpbnZva2VDYWxsYmFja3MnKTt2YXIgaWU9ZG9jdW1lbnQuZG9jdW1l bnRNb2RlfHwrKC9NU0lFLihcZCspLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQp fHxbXSlbMV07ZnVuY3Rpb24gQmlnUGlwZShvcHRpb25zKXtjb3B5UHJvcGVydGll cyh0aGlzLHthcmJpdGVyOkFyYml0ZXIscm9vdE5vZGVJRDonY29udGVudCcsbGlk OjAsaXNBamF4OmZhbHNlLHJyRW5hYmxlZDp0cnVlLGRvbUNvbnRlbnRDYWxsYmFj azpkb21jb250ZW50X2NhbGxiYWNrLG9ubG9hZENhbGxiYWNrOm9ubG9hZF9jYWxs YmFjayxkb21Db250ZW50RXZ0Ok9ubG9hZEV2ZW50Lk9OTE9BRF9ET01DT05URU5U X0NBTExCQUNLLG9ubG9hZEV2dDpPbmxvYWRFdmVudC5PTkxPQURfQ0FMTEJBQ0ss Zm9yY2VGaW5pc2g6ZmFsc2UsanNFYXJsaWVyOmZhbHNlLF9waGFzZURvbmVDYWxs YmFja3M6W10sX2N1cnJlbnRQaGFzZTowLF9sYXN0UGhhc2U6LTF9KTtjb3B5UHJv cGVydGllcyh0aGlzLG9wdGlvbnMpO3RoaXMuX2NhdmFscnk9KHRoaXMubGlkJiZ3 aW5kb3cuQ2F2YWxyeUxvZ2dlcik/Q2F2YWxyeUxvZ2dlci5nZXRJbnN0YW5jZSh0 aGlzLmxpZCk6bnVsbDt0aGlzLl9pbnN0PXRoaXMuX2NhdmFscnkmJih3aW5kb3cu X3BhZ2VsZXRfcHJvZmlsZXx8dGhpcy5fY2F2YWxyeS5pc1BhZ2VsZXRQcm9maWxl cigpKTtCaWdQaXBlLl9jdXJyZW50X2luc3RhbmNlPXRoaXM7aWYoRW52LnR0aV92 aXNpb249PTEpKG5ldyBUVElWaXN1YWxpemVyKHRoaXMpKS5pbml0KCk7dGhpcy5h cmJpdGVyLnJlZ2lzdGVyQ2FsbGJhY2sodGhpcy5kb21Db250ZW50Q2FsbGJhY2ss WydwYWdlbGV0X2Rpc3BsYXllZF9hbGwnXSk7dGhpcy5hcmJpdGVyLmluZm9ybSgn cGhhc2VfYmVnaW5fMCcsdHJ1ZSxBcmJpdGVyLkJFSEFWSU9SX1NUQVRFKTt0aGlz Ll9pbnN0JiZ0aGlzLl9jYXZhbHJ5LnNldFRpbWVTdGFtcCgndF9waGFzZV9iZWdp bl8wJyk7dGhpcy5vbmxvYWRDYWxsYmFjaz10aGlzLmFyYml0ZXIucmVnaXN0ZXJD YWxsYmFjayh0aGlzLm9ubG9hZENhbGxiYWNrLFsncGFnZWxldF9kaXNwbGF5ZWRf YWxsJ10pO31jb3B5UHJvcGVydGllcyhCaWdQaXBlLnByb3RvdHlwZSx7X2N0OmZ1 bmN0aW9uKG8pe3JldHVybiAoIW98fCdsZW5ndGgnIGluIG8mJm8ubGVuZ3RoPT09 MCk/e306bzt9LF9kaXNwbGF5UGFnZWxldEhhbmRsZXI6ZnVuY3Rpb24ocGFnZWxl dCl7aWYodGhpcy5kaXNwbGF5Q2FsbGJhY2spe3RoaXMuZGlzcGxheUNhbGxiYWNr KHRoaXMuX2Rpc3BsYXlQYWdlbGV0LmJpbmQodGhpcyxwYWdlbGV0KSk7fWVsc2Ug dGhpcy5fZGlzcGxheVBhZ2VsZXQocGFnZWxldCk7fSxfZGlzcGxheVBhZ2VsZXQ6 ZnVuY3Rpb24ocGFnZWxldCl7aWYodGhpcy5faW5zdCl0aGlzLl9jYXZhbHJ5Lm9u UGFnZWxldEV2ZW50KCdkaXNwbGF5X3N0YXJ0JyxwYWdlbGV0LmlkKTtwYWdlbGV0 LmNvbnRlbnQ9dGhpcy5fY3QocGFnZWxldC5jb250ZW50KTt2YXIgaW5mb3JtX25v dz10cnVlO2Zvcih2YXIgdGFyZ2V0X2lkIGluIHBhZ2VsZXQuY29udGVudCl7dmFy IGNvbnRlbnQ9cGFnZWxldC5jb250ZW50W3RhcmdldF9pZF07aWYocGFnZWxldC5h cHBlbmQpdGFyZ2V0X2lkPShwYWdlbGV0LmFwcGVuZD09PSdiaWdwaXBlX3Jvb3Qn KT90aGlzLnJvb3ROb2RlSUQ6cGFnZWxldC5hcHBlbmQ7dmFyIHRhcmdldD1nZSh0 YXJnZXRfaWQpO2lmKHRhcmdldCl7Y29udGVudD10aGlzLl9nZXRDb250ZW50TWFy a3VwKGNvbnRlbnQpO2lmKGNvbnRlbnQpaWYoIXBhZ2VsZXQuYXBwZW5kJiZwYWdl bGV0Lmhhc19pbmxpbmVfanMpe2lmKHdpbmRvdy5ET00mJndpbmRvdy5IVE1MKXtE T00uc2V0Q29udGVudCh0YXJnZXQsSFRNTChjb250ZW50KSk7fWVsc2V7aW5mb3Jt X25vdz1mYWxzZTtCb290bG9hZGVyLmxvYWRDb21wb25lbnRzKFsnZG9tJywnZG9t LWh0bWwnXSxmdW5jdGlvbigpe0RPTS5zZXRDb250ZW50KHRhcmdldCxIVE1MKGNv bnRlbnQpKTt0aGlzLmFyYml0ZXIuaW5mb3JtKHBhZ2VsZXQuaWQrJ19kaXNwbGF5 ZWQnLHRydWUsQXJiaXRlci5CRUhBVklPUl9TVEFURSk7fS5iaW5kKHRoaXMpKTt9 fWVsc2UgaWYocGFnZWxldC5hcHBlbmR8fGllPDgpe2lmKCFwYWdlbGV0LmFwcGVu ZCl3aGlsZSh0YXJnZXQuZmlyc3RDaGlsZCl0YXJnZXQucmVtb3ZlQ2hpbGQodGFy Z2V0LmZpcnN0Q2hpbGQpO3RoaXMuX2FwcGVuZE5vZGVzKHRhcmdldCxjb250ZW50 KTt9ZWxzZSB0YXJnZXQuaW5uZXJIVE1MPWNvbnRlbnQ7aWYodGhpcy5faW5zdCl0 aGlzLl9jYXZhbHJ5Lm9uUGFnZWxldEV2ZW50KCdkaXNwbGF5JyxwYWdlbGV0Lmlk KTt2YXIgcmVmZXJyZXI9dGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1yZWZlcnJl cicpO2lmKCFyZWZlcnJlcil0YXJnZXQuc2V0QXR0cmlidXRlKCdkYXRhLXJlZmVy cmVyJyx0YXJnZXRfaWQpO319aWYoaW5mb3JtX25vdyl0aGlzLmFyYml0ZXIuaW5m b3JtKHBhZ2VsZXQuaWQrJ19kaXNwbGF5ZWQnLHRydWUsQXJiaXRlci5CRUhBVklP Ul9TVEFURSk7aWYocGFnZWxldC5jYWNoZV9oaXQmJkVudi5wY19kZWJ1Zz09MSkk KHBhZ2VsZXQuaWQpLnN0eWxlLmJvcmRlcj0iMXB4IHJlZCBzb2xpZCI7fSxfZ2V0 Q29udGVudE1hcmt1cDpmdW5jdGlvbihjb250ZW50KXtpZighY29udGVudHx8dHlw ZW9mIGNvbnRlbnQ9PT0nc3RyaW5nJylyZXR1cm4gY29udGVudDtpZihjb250ZW50 LmNvbnRhaW5lcl9pZCl7dmFyIGNvbnRhaW5lcj0kKGNvbnRlbnQuY29udGFpbmVy X2lkKTtjb250ZW50PXRoaXMuX2V4dHJhY3RNYXJrdXAoY29udGFpbmVyKXx8Jyc7 Y29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY29udGFpbmVyKTtyZXR1 cm4gY29udGVudDt9aWYoY29udGVudC5sZW5ndGg+PTIpcmV0dXJuIER5bmFUZW1w bGF0ZS5yZW5kZXJUb0h0bWwoY29udGVudFswXSxjb250ZW50WzFdKTtyZXR1cm4g bnVsbDt9LF9leHRyYWN0TWFya3VwOmZ1bmN0aW9uKGNvbnRhaW5lcil7aWYoIWNv bnRhaW5lci5maXJzdENoaWxkKXtCb290bG9hZGVyLmxvYWRDb21wb25lbnRzKCdl cnJvci1zaWduYWwnLGZ1bmN0aW9uKCl7c2VuZF9lcnJvcl9zaWduYWwoJ2JpZ3Bp cGUnLCdQYWdlbGV0IG1hcmt1cCBjb250YWluZXIgaXMgZW1wdHkuJyk7fSk7cmV0 dXJuIG51bGw7fWlmKGNvbnRhaW5lci5maXJzdENoaWxkLm5vZGVUeXBlIT09OCly ZXR1cm4gbnVsbDt2YXIgY29tbWVudD1jb250YWluZXIuZmlyc3RDaGlsZC5ub2Rl VmFsdWU7Y29tbWVudD1jb21tZW50LnN1YnN0cmluZygxLGNvbW1lbnQubGVuZ3Ro LTEpO3JldHVybiBjb21tZW50LnJlcGxhY2UoL1xcKFtcc1xTXXwkKS9nLCckMScp O30sX2FwcGVuZE5vZGVzOmZ1bmN0aW9uKGNvbnRhaW5lcixtYXJrdXApe3ZhciBu bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTt2YXIgaGF4PWllPDc7aWYo aGF4KWNvbnRhaW5lci5hcHBlbmRDaGlsZChubik7bm4uaW5uZXJIVE1MPW1hcmt1 cDt2YXIgZnJhZz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7d2hp bGUobm4uZmlyc3RDaGlsZClmcmFnLmFwcGVuZENoaWxkKG5uLmZpcnN0Q2hpbGQp O2NvbnRhaW5lci5hcHBlbmRDaGlsZChmcmFnKTtpZihoYXgpY29udGFpbmVyLnJl bW92ZUNoaWxkKG5uKTt9LF9kb3dubG9hZEpzRm9yUGFnZWxldDpmdW5jdGlvbihw YWdlbGV0KXtCb290bG9hZGVyLmxvYWRSZXNvdXJjZXMocGFnZWxldC5qc3x8W10s YmluZCh0aGlzLGZ1bmN0aW9uKCl7aWYodGhpcy5faW5zdCl0aGlzLl9jYXZhbHJ5 Lm9uUGFnZWxldEV2ZW50KCdqc2RvbmUnLHBhZ2VsZXQuaWQpO3BhZ2VsZXQucmVx dWlyZXM9cGFnZWxldC5yZXF1aXJlc3x8W107aWYoIXRoaXMuaXNBamF4fHxwYWdl bGV0LnBoYXNlPj0xKXBhZ2VsZXQucmVxdWlyZXMucHVzaCgndWlwYWdlX29ubG9h ZCcpO3ZhciBmaXJlX29ubG9hZHM9YmluZCh0aGlzLGZ1bmN0aW9uKCl7dGhpcy5f aXNSZWxldmFudCgpJiZpbnZva2VDYWxsYmFja3MocGFnZWxldC5vbmxvYWQpO2lm KHRoaXMuX2luc3QpdGhpcy5fY2F2YWxyeS5vblBhZ2VsZXRFdmVudCgnb25sb2Fk JyxwYWdlbGV0LmlkKTt0aGlzLmFyYml0ZXIuaW5mb3JtKCdwYWdlbGV0X29ubG9h ZCcsdHJ1ZSxBcmJpdGVyLkJFSEFWSU9SX0VWRU5UKTtwYWdlbGV0LnByb3ZpZGVz JiZ0aGlzLmFyYml0ZXIuaW5mb3JtKHBhZ2VsZXQucHJvdmlkZXMsdHJ1ZSxBcmJp dGVyLkJFSEFWSU9SX1NUQVRFKTt9KTt2YXIgZmlyZV9vbmFmdGVybG9hZHM9Ymlu ZCh0aGlzLGZ1bmN0aW9uKCl7dGhpcy5faXNSZWxldmFudCgpJiZpbnZva2VDYWxs YmFja3MocGFnZWxldC5vbmFmdGVybG9hZCk7fSk7aWYodGhpcy5kZWxheSl7dmFy IHRlbXA9ZmlyZV9vbmxvYWRzO2ZpcmVfb25sb2Fkcz1mdW5jdGlvbigpe3NldFRp bWVvdXQodGVtcCw0MDApO307fXRoaXMuYXJiaXRlci5yZWdpc3RlckNhbGxiYWNr KGZpcmVfb25sb2FkcyxwYWdlbGV0LnJlcXVpcmVzKTt0aGlzLmFyYml0ZXIucmVn aXN0ZXJDYWxsYmFjayhmaXJlX29uYWZ0ZXJsb2FkcyxbdGhpcy5vbmxvYWRFdnRd KTt9KSxmYWxzZSxwYWdlbGV0LmlkKTt9LF9kb3dubG9hZENzc0FuZERpc3BsYXlQ YWdlbGV0OmZ1bmN0aW9uKHBhZ2VsZXQpe2lmKHRoaXMuX2luc3QpdGhpcy5fY2F2 YWxyeS5vblBhZ2VsZXRFdmVudCgnY3NzJyxwYWdlbGV0LmlkKTt2YXIgZm49Ymlu ZCh0aGlzLGZ1bmN0aW9uKCl7dmFyIGRlcD1wYWdlbGV0LmRpc3BsYXlfZGVwZW5k ZW5jeXx8W107dmFyIHNpZ25hbHM9W107Zm9yKHZhciBpPTA7aTxkZXAubGVuZ3Ro O2krKylzaWduYWxzLnB1c2goZGVwW2ldKydfZGlzcGxheWVkJyk7dGhpcy5hcmJp dGVyLnJlZ2lzdGVyQ2FsbGJhY2sodGhpcy5fZGlzcGxheVBhZ2VsZXRIYW5kbGVy LmJpbmQodGhpcyxwYWdlbGV0KSxzaWduYWxzKTt9KTt2YXIgY3NzPXBhZ2VsZXQu Y3NzfHxbXTtCb290bG9hZGVyLmxvYWRSZXNvdXJjZXMoY3NzLGZuLGZhbHNlLHBh Z2VsZXQuaWQpO2lmKHRoaXMuX2luc3QpdGhpcy5fY2F2YWxyeS5vblBhZ2VsZXRF dmVudCgnY3NzX2VuZCcscGFnZWxldC5pZCk7fSxfZG93bmxvYWRBbmRTY2hlZHVs ZURpc3BsYXlKUzpmdW5jdGlvbihwYWdlbGV0KXt2YXIganM9cGFnZWxldC5qc3x8 W107dmFyIGRpc3BsYXlqcz1bXTtmb3IodmFyIGk9MDtpPGpzLmxlbmd0aDtpKysp aWYoQm9vdGxvYWRlci5pc0Rpc3BsYXlKUyhqc1tpXSkpZGlzcGxheWpzLnB1c2go anNbaV0pO0Jvb3Rsb2FkZXIubG9hZFJlc291cmNlcyhkaXNwbGF5anMsYmluZCh0 aGlzLGZ1bmN0aW9uKCl7aWYocGFnZWxldC5vbmRpc3BsYXkmJnBhZ2VsZXQub25k aXNwbGF5Lmxlbmd0aCl0aGlzLmFyYml0ZXIucmVnaXN0ZXJDYWxsYmFjayhmdW5j dGlvbigpe2ludm9rZUNhbGxiYWNrcyhwYWdlbGV0Lm9uZGlzcGxheSk7fSxbcGFn ZWxldC5pZCsnX2Rpc3BsYXllZCddKTt9KSk7fSxvblBhZ2VsZXRBcnJpdmU6ZnVu Y3Rpb24ocGFnZWxldCl7aWYodGhpcy5faW5zdCl7dGhpcy5fY2F2YWxyeS5vblBh Z2VsZXRFdmVudCgnYXJyaXZlJyxwYWdlbGV0LmlkKTt0aGlzLl9jYXZhbHJ5LmV2 ZW50c1twYWdlbGV0LmlkXS5waGFzZT1wYWdlbGV0LnBoYXNlO312YXIgcGhhc2U9 cGFnZWxldC5waGFzZTtpZighdGhpcy5fcGhhc2VEb25lQ2FsbGJhY2tzW3BoYXNl XSl0aGlzLl9waGFzZURvbmVDYWxsYmFja3NbcGhhc2VdPXRoaXMuYXJiaXRlci5y ZWdpc3RlckNhbGxiYWNrKHRoaXMuX29uUGhhc2VEb25lLmJpbmQodGhpcyksWydw aGFzZV9jb21wbGV0ZV8nK3BoYXNlXSk7dGhpcy5hcmJpdGVyLnJlZ2lzdGVyQ2Fs bGJhY2sodGhpcy5fcGhhc2VEb25lQ2FsbGJhY2tzW3BoYXNlXSxbcGFnZWxldC5p ZCsnX2Rpc3BsYXllZCddKTtpZihwYWdlbGV0LmNhY2hlYWJsZSl7aWYocGFnZWxl dC5jYWNoZV9oaXQpe0FyYml0ZXIucmVnaXN0ZXJDYWxsYmFjayhmdW5jdGlvbigp e3RoaXMucHJvY2Vzc1BhZ2VsZXQodGhpcy5sb2FkRnJvbUNhY2hlKHBhZ2VsZXQp KTt9LmJpbmQodGhpcyksWydwYWdlbGV0X2NhY2hlX2xvYWRlZCddKTt9ZWxzZXtQ YWdlbGV0Q2FjaGUud3JpdGUocGFnZWxldCk7dGhpcy5wcm9jZXNzUGFnZWxldChw YWdlbGV0KTt9fWVsc2UgdGhpcy5wcm9jZXNzUGFnZWxldChwYWdlbGV0KTtpZih0 aGlzLl9pbnN0KXRoaXMuX2NhdmFscnkub25QYWdlbGV0RXZlbnQoJ2Fycml2ZV9l bmQnLHBhZ2VsZXQuaWQpO30scHJvY2Vzc1BhZ2VsZXQ6ZnVuY3Rpb24ocGFnZWxl dCl7dmFyIHBoYXNlPXBhZ2VsZXQucGhhc2U7aWYocGFnZWxldC50aGVfZW5kKXRo aXMuX2xhc3RQaGFzZT1wYWdlbGV0LnBoYXNlO2lmKHBhZ2VsZXQudHRpX3BoYXNl IT09dW5kZWZpbmVkKXRoaXMuX3R0aVBoYXNlPXBhZ2VsZXQudHRpX3BoYXNlO2lm KHBhZ2VsZXQuaXNfc2Vjb25kX3RvX2xhc3RfcGhhc2UpdGhpcy5fc2Vjb25kVG9M YXN0UGhhc2U9cGFnZWxldC5waGFzZTtwYWdlbGV0LmpzY2MmJmludm9rZUNhbGxi YWNrcyhbcGFnZWxldC5qc2NjXSk7aWYocGFnZWxldC5qc2NjX21hcCl7dmFyIGpz Y2NfbWFwPWV2YWwocGFnZWxldC5qc2NjX21hcCk7SlNDQy5pbml0Rm9yUGFnZWxl dChwYWdlbGV0LmlkLGpzY2NfbWFwKTt9cGFnZWxldC50cGx0cyYmRHluYVRlbXBs YXRlLnJlZ2lzdGVyVGVtcGxhdGVzKHBhZ2VsZXQudHBsdHMpO0Jvb3Rsb2FkZXIu c2V0UmVzb3VyY2VNYXAocGFnZWxldC5yZXNvdXJjZV9tYXApO0Jvb3Rsb2FkZXIu ZW5hYmxlQm9vdGxvYWQodGhpcy5fY3QocGFnZWxldC5ib290bG9hZGFibGUpKTt2 YXIgcGhhc2Vfc3RhcnRfZXZ0PSdwaGFzZV9iZWdpbl8nK3BoYXNlO3RoaXMuYXJi aXRlci5yZWdpc3RlckNhbGxiYWNrKHRoaXMuX2Rvd25sb2FkQ3NzQW5kRGlzcGxh eVBhZ2VsZXQuYmluZCh0aGlzLHBhZ2VsZXQpLFtwaGFzZV9zdGFydF9ldnRdKTt0 aGlzLmFyYml0ZXIucmVnaXN0ZXJDYWxsYmFjayh0aGlzLl9kb3dubG9hZEFuZFNj aGVkdWxlRGlzcGxheUpTLmJpbmQodGhpcyxwYWdlbGV0KSxbcGhhc2Vfc3RhcnRf ZXZ0XSk7dmFyIGpzX2V2ZW50cz1bcGFnZWxldC5pZCsnX2Rpc3BsYXllZCddO2lm KCF0aGlzLmpzTm9uQmxvY2spaWYodGhpcy5qc0VhcmxpZXIpe2pzX2V2ZW50cy5w dXNoKCdzdGFydF90b19kb3dubG9hZF9qcycpO31lbHNlIGpzX2V2ZW50cy5wdXNo KHRoaXMuZG9tQ29udGVudEV2dCk7dGhpcy5hcmJpdGVyLnJlZ2lzdGVyQ2FsbGJh Y2sodGhpcy5vbmxvYWRDYWxsYmFjayxbJ3BhZ2VsZXRfb25sb2FkJ10pO3RoaXMu YXJiaXRlci5yZWdpc3RlckNhbGxiYWNrKHRoaXMuX2Rvd25sb2FkSnNGb3JQYWdl bGV0LmJpbmQodGhpcyxwYWdlbGV0KSxqc19ldmVudHMpO2lmKHBhZ2VsZXQuanNj YWxscyl0aGlzLmFyYml0ZXIucmVnaXN0ZXJDYWxsYmFjayhmdW5jdGlvbigpe2lu dm9rZUNhbGxiYWNrcyhbcGFnZWxldC5qc2NhbGxzXSk7fSxbcGFnZWxldC5pZCsn X2Rpc3BsYXllZCddKTtwYWdlbGV0LmlzX2xhc3QmJnRoaXMuYXJiaXRlci5pbmZv cm0oJ3BoYXNlX2NvbXBsZXRlXycrcGhhc2UsdHJ1ZSxBcmJpdGVyLkJFSEFWSU9S X1NUQVRFKTt9LF9vblBoYXNlRG9uZTpmdW5jdGlvbigpe2lmKHRoaXMuX2N1cnJl bnRQaGFzZT09PXRoaXMuX3R0aVBoYXNlJiZ0aGlzLnJyRW5hYmxlZCl7dGhpcy5h cmJpdGVyLmluZm9ybSgndHRpX2JpZ3BpcGUnLHtzOnRoaXMubGlkfSxBcmJpdGVy LkJFSEFWSU9SX0VWRU5UKTt0aGlzLl9jYXZhbHJ5JiZ0aGlzLl9jYXZhbHJ5LnNl dFRUSVBoYXNlKHRoaXMuX3R0aVBoYXNlKS5tZWFzdXJlUGFnZUxvYWQodHJ1ZSk7 fXZhciBuZXh0UGhhc2U9dGhpcy5fY3VycmVudFBoYXNlKzE7dmFyIGZuPShmdW5j dGlvbih3YXNfc2Vjb25kX3RvX2xhc3RfcGhhc2Upe2lmKHRoaXMuanNFYXJsaWVy JiZ3YXNfc2Vjb25kX3RvX2xhc3RfcGhhc2UpdGhpcy5hcmJpdGVyLmluZm9ybSgn c3RhcnRfdG9fZG93bmxvYWRfanMnLHRydWUsQXJiaXRlci5CRUhBVklPUl9TVEFU RSk7dGhpcy5faW5zdCYmdGhpcy5fY2F2YWxyeS5zZXRUaW1lU3RhbXAoJ3RfcGhh c2VfYmVnaW5fJytuZXh0UGhhc2UpO3RoaXMuYXJiaXRlci5pbmZvcm0oJ3BoYXNl X2JlZ2luXycrbmV4dFBoYXNlLHRydWUsQXJiaXRlci5CRUhBVklPUl9TVEFURSk7 fSkuYmluZCh0aGlzLHRoaXMuX2N1cnJlbnRQaGFzZT09PXRoaXMuX3NlY29uZFRv TGFzdFBoYXNlKTtpZih0aGlzLl9jdXJyZW50UGhhc2U9PT10aGlzLl9sYXN0UGhh c2UmJnRoaXMuX2lzUmVsZXZhbnQoKSl0aGlzLmFyYml0ZXIuaW5mb3JtKCdwYWdl bGV0X2Rpc3BsYXllZF9hbGwnLHRydWUsQXJiaXRlci5CRUhBVklPUl9TVEFURSk7 dGhpcy5fY3VycmVudFBoYXNlKys7aWYoaWUpe3NldFRpbWVvdXQoZm4sMjApO31l bHNlIGZuKCk7fSxfaXNSZWxldmFudDpmdW5jdGlvbigpe3JldHVybiB0aGlzPT1C aWdQaXBlLl9jdXJyZW50X2luc3RhbmNlfHx0aGlzLmpzTm9uQmxvY2t8fHRoaXMu Zm9yY2VGaW5pc2g7fX0pO0JpZ1BpcGUucGFnZWxldF9pZHM9e307Z2xvYmFsLkJp Z1BpcGU9bW9kdWxlLmV4cG9ydHM9QmlnUGlwZTt9LDMpOwpfX2UoIkNsYXNzIixb ImZ1bmN0aW9uLWV4dGVuc2lvbnMiLCJhcmJpdGVyIiwiYmluZCJdLGZ1bmN0aW9u KG4scCxvLG0pe3AoJ2Z1bmN0aW9uLWV4dGVuc2lvbnMnKTt2YXIgYT1wKCdhcmJp dGVyJyk7dmFyIGw9cCgnYmluZCcpO3ZhciBoPXt9O3ZhciBkPW51bGw7dmFyIGI9 e2V4dGVuZDpmdW5jdGlvbihxLHIpe2lmKCFkKWQ9YS5zdWJzY3JpYmUoYS5CT09U TE9BRCxqKTtpZih0eXBlb2Ygcj09J3N0cmluZycpe2kocSxyKTt9ZWxzZSBjKHEs cik7fSxtaXhpbjpmdW5jdGlvbihzLHIpe3ZhciBxPUFycmF5LnByb3RvdHlwZS5z bGljZS5jYWxsKGFyZ3VtZW50cyk7cVswXT1xWzBdLnByb3RvdHlwZTtGdW5jdGlv bi5taXhpbi5hcHBseShGdW5jdGlvbixxKTt9fTtmdW5jdGlvbiBpKHIscyl7ci5f X2NsYXNzX2V4dGVuZGluZz10cnVlO3ZhciBxPWEucmVnaXN0ZXJDYWxsYmFjayhs KG51bGwsYyxyLHMpLFthLkZVTkNUSU9OX0VYVEVOU0lPTisnLycrcyxhLkJPT1RM T0FEXSk7aWYocSE9PW51bGwpaFtzXT10cnVlO31mdW5jdGlvbiBqKCl7Zm9yKHZh ciBxIGluIGgpaWYoISFuW3FdKXtkZWxldGUgaFtxXTtpZighbltxXS5fX2NsYXNz X2V4dGVuZGluZyl7YS5pbmZvcm0oYS5GVU5DVElPTl9FWFRFTlNJT04rJy8nK3Es dHJ1ZSxhLkJFSEFWSU9SX1NUQVRFKTt9ZWxzZSBuW3FdLl9fY2xhc3NfbmFtZT1x O319ZnVuY3Rpb24gYyhxLHMpe2RlbGV0ZSBxLl9fY2xhc3NfZXh0ZW5kaW5nO3M9 dHlwZW9mIHM9PSdzdHJpbmcnP25bc106czt2YXIgdD1nKHMsMCk7dmFyIHI9Zyhx LHQucHJvdG90eXBlLl9fbGV2ZWwrMSk7ci5wYXJlbnQ9dDtpZighIXEuX19jbGFz c19uYW1lKWEuaW5mb3JtKGEuRlVOQ1RJT05fRVhURU5TSU9OKycvJytxLl9fY2xh c3NfbmFtZSx0cnVlLGEuQkVIQVZJT1JfU1RBVEUpO31mdW5jdGlvbiBnKHMscSl7 aWYocy5fbWV0YXByb3RvdHlwZSlyZXR1cm4gcy5fbWV0YXByb3RvdHlwZTt2YXIg cj1uZXcgRnVuY3Rpb24oKTtyLmNvbnN0cnVjdD1lO3IucHJvdG90eXBlLmNvbnN0 cnVjdD1rKHMscSx0cnVlKTtyLnByb3RvdHlwZS5fX2xldmVsPXE7ci5iYXNlPXM7 cy5wcm90b3R5cGUucGFyZW50PXI7cy5fbWV0YXByb3RvdHlwZT1yO3JldHVybiBy O31mdW5jdGlvbiBlKHEpe2YocS5wYXJlbnQpO3ZhciB0PVtdO3ZhciBzPXE7d2hp bGUocy5wYXJlbnQpe3ZhciByPW5ldyBzLnBhcmVudCgpO3QucHVzaChyKTtyLl9f aW5zdGFuY2U9cTtzPXMucGFyZW50O31xLnBhcmVudD10WzFdO3QucmV2ZXJzZSgp O3QucG9wKCk7cS5fX3BhcmVudHM9dDtxLl9faW5zdGFuY2U9cTtyZXR1cm4gcS5w YXJlbnQuY29uc3RydWN0LmFwcGx5KHEucGFyZW50LGFyZ3VtZW50cyk7fWZ1bmN0 aW9uIGYodCl7aWYodC5pbml0aWFsaXplZClyZXR1cm47dmFyIHE9dC5iYXNlLnBy b3RvdHlwZTtpZih0LnBhcmVudCl7Zih0LnBhcmVudCk7dmFyIHU9dC5wYXJlbnQu cHJvdG90eXBlO2Zvcih2YXIgciBpbiB1KWlmKHIhPSdfX2xldmVsJyYmciE9J2Nv bnN0cnVjdCcmJnFbcl09PT11bmRlZmluZWQpcVtyXT10LnByb3RvdHlwZVtyXT11 W3JdO310LmluaXRpYWxpemVkPXRydWU7dmFyIHM9dC5wcm90b3R5cGUuX19sZXZl bDtmb3IodmFyIHIgaW4gcSlpZihyIT0ncGFyZW50JylxW3JdPXQucHJvdG90eXBl W3JdPWsocVtyXSxzKTt9ZnVuY3Rpb24gayhzLHIsdCl7aWYodHlwZW9mIHMhPSdm dW5jdGlvbid8fHMuX19wcm90b3R5cGVkKXJldHVybiBzO3ZhciBxPWZ1bmN0aW9u KCl7dmFyIHc9dGhpcy5fX2luc3RhbmNlO2lmKHcpe3ZhciB4PXcucGFyZW50O3cu cGFyZW50PXI/dy5fX3BhcmVudHNbci0xXTpudWxsO3ZhciB1PWFyZ3VtZW50cztp Zih0KXt1PVtdO2Zvcih2YXIgdj0xO3Y8YXJndW1lbnRzLmxlbmd0aDt2KyspdS5w dXNoKGFyZ3VtZW50c1t2XSk7fXZhciB5PXMuYXBwbHkodyx1KTt3LnBhcmVudD14 O3JldHVybiB5O31lbHNlIHJldHVybiBzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9 O3EuX19wcm90b3R5cGVkPXRydWU7cmV0dXJuIHE7fW4uQ2xhc3M9by5leHBvcnRz PWI7fSwzKTsKKHdpbmRvdy5fX2MmJiF3aW5kb3cuX19jLnN0dWIpfHxmdW5jdGlv bigpe2Z1bmN0aW9uIGEoZixjKXt2YXIgZT0odHlwZW9mIGMhPT0ndW5kZWZpbmVk Jyk/ZltjXTpmO2lmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09 PSdbb2JqZWN0IEFycmF5XScpe2Zvcih2YXIgYj0wO2I8ZS5sZW5ndGg7YisrKWEo ZSxiKTt9ZWxzZSBpZih0eXBlb2YgZT09J29iamVjdCcpaWYoZS5fX20pe2ZbY109 cmVxdWlyZShlLl9fbSk7fWVsc2UgaWYoZS5fX2Upe2ZbY109ZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoZS5fX2UpO31lbHNlIGZvcih2YXIgZCBpbiBlKWEoZSxkKTt9 d2luZG93Ll9fYz1mdW5jdGlvbihlLGQsYyxiKXtyZXF1aXJlLmVuc3VyZShbZV0u Y29uY2F0KGN8fFtdKSxmdW5jdGlvbihmKXtiJiZhKGIpO2QmJmZbZF0uYXBwbHko ZixiKTt9KTt9O3dpbmRvdy5fX2Y9ZnVuY3Rpb24oZCxjLGIpe2RlZmluZShkLGMs ZnVuY3Rpb24oZSl7YShiKTtyZXR1cm4gZS5mcm9tSlNPTi5hcHBseShudWxsLGIp O30pO307fSgpOwpfX2UoImRlZmVyVW50aWwiLFtdLGZ1bmN0aW9uKGMsZSxkLGIp e2Z1bmN0aW9uIGEoaCxnLGwsZixtKXt2YXIgaj1nKCk7aWYoail7aChqKTtyZXR1 cm4gbnVsbDt9dmFyIGs9RGF0ZS5ub3coKTt2YXIgaT1zZXRJbnRlcnZhbChmdW5j dGlvbigpe2o9ZygpO2lmKCFqKXtpZighbHx8KGw8bmV3IERhdGUoKS1rKSlyZXR1 cm47bSYmbSgpO31jbGVhckludGVydmFsKGkpO2goaik7fSwyMCxmKTtyZXR1cm4g aTt9ZC5leHBvcnRzPWE7fSk7Cl9fZSgiZnVuY3Rpb24tdXRpbHMiLFsiRnVuY3Rp b25VdGlscyIsImRlZmVyVW50aWwiXSxmdW5jdGlvbihiLGMpe3ZhciBhPWMoJ0Z1 bmN0aW9uVXRpbHMnKTtiLmRlYm91bmNlPWEuZGVib3VuY2U7Yi50aHJvdHRsZT1h LnRocm90dGxlO2IuZGVmZXJfdW50aWw9YygnZGVmZXJVbnRpbCcpO30sMyk7CiFm dW5jdGlvbigpe3ZhciBiPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDt2YXIgYT1m dW5jdGlvbihjKXtjPWN8fHdpbmRvdy5ldmVudDt2YXIgZD1jLnRhcmdldHx8Yy5z cmNFbGVtZW50O3ZhciBmPWQuZ2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicpO2lm KGYpe3ZhciBlPVBhcmVudC5ieUNsYXNzKGQsJ2ZvY3VzX3RhcmdldCcpO2lmKCdm b2N1cyc9PWMudHlwZXx8J2ZvY3VzaW4nPT1jLnR5cGUpe2lmKGQudmFsdWU9PWYm JkNTUy5oYXNDbGFzcyhkLCdET01Db250cm9sX3BsYWNlaG9sZGVyJykpe2QudmFs dWU9Jyc7Q1NTLnJlbW92ZUNsYXNzKGQsJ0RPTUNvbnRyb2xfcGxhY2Vob2xkZXIn KTt9aWYoZSl7Q1NTLmFkZENsYXNzKGUsJ2NoaWxkX2lzX2FjdGl2ZScpO0NTUy5h ZGRDbGFzcyhlLCdjaGlsZF9pc19mb2N1c2VkJyk7Q1NTLmFkZENsYXNzKGUsJ2No aWxkX3dhc19mb2N1c2VkJyk7QXJiaXRlci5pbmZvcm0oJ3JlZmxvdycpO319ZWxz ZXtpZihkLnZhbHVlPT0nJyl7Q1NTLmFkZENsYXNzKGQsJ0RPTUNvbnRyb2xfcGxh Y2Vob2xkZXInKTtkLnZhbHVlPWY7ZSYmQ1NTLnJlbW92ZUNsYXNzKGUsJ2NoaWxk X2lzX2FjdGl2ZScpO2Quc3R5bGUuZGlyZWN0aW9uPScnO31lJiZDU1MucmVtb3Zl Q2xhc3MoZSwnY2hpbGRfaXNfZm9jdXNlZCcpO319fTtpZihiLmFkZEV2ZW50TGlz dGVuZXIpe2IuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLGEsdHJ1ZSk7Yi5hZGRF dmVudExpc3RlbmVyKCdibHVyJyxhLHRydWUpO31lbHNlIGIub25mb2N1c2luPWIu b25mb2N1c291dD1hO30oKTsKX19lKCJnb1VSSSIsW10sZnVuY3Rpb24oYixlLGQs YSl7ZnVuY3Rpb24gYyhnLGYpe2c9Zy50b1N0cmluZygpO2lmKCFmJiZiLlBhZ2VU cmFuc2l0aW9ucyYmUGFnZVRyYW5zaXRpb25zLmlzSW5pdGlhbGl6ZWQoKSl7UGFn ZVRyYW5zaXRpb25zLmdvKGcpO31lbHNlIGlmKHdpbmRvdy5sb2NhdGlvbi5ocmVm PT1nKXt3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7fWVsc2Ugd2luZG93LmxvY2F0 aW9uLmhyZWY9Zzt9ZC5leHBvcnRzPWM7fSk7Cl9fZSgicHJlbHVkZS11dGlscyIs WyJnb1VSSSIsImludm9rZUNhbGxiYWNrcyJdLGZ1bmN0aW9uKGEsYil7YS5nb1VS ST1iKCdnb1VSSScpO2EuaW52b2tlX2NhbGxiYWNrcz1iKCdpbnZva2VDYWxsYmFj a3MnKTt9LDMpOwpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub25rZXlkb3duPWZ1 bmN0aW9uKGEpe2E9YXx8d2luZG93LmV2ZW50O3ZhciBiPWEudGFyZ2V0fHxhLnNy Y0VsZW1lbnQ7dmFyIGM9YS5rZXlDb2RlPT0xMyYmIWEuYWx0S2V5JiYhYS5jdHJs S2V5JiYhYS5tZXRhS2V5JiYhYS5zaGlmdEtleSYmQ1NTLmhhc0NsYXNzKGIsJ2Vu dGVyX3N1Ym1pdCcpO2lmKGMpe0Jvb3Rsb2FkZXIubG9hZENvbXBvbmVudHMoWydk b20nLCdpbnB1dC1tZXRob2RzJ10sZnVuY3Rpb24oKXtpZighSW5wdXQuaXNFbXB0 eShiKSl7dmFyIGQ9RE9NLnNjcnkoYi5mb3JtLCcuZW50ZXJfc3VibWl0X3Rhcmdl dCcpWzBdfHxET00uc2NyeShiLmZvcm0sJ1t0eXBlPSJzdWJtaXQiXScpWzBdO2Qm JmQuY2xpY2soKTt9fSk7cmV0dXJuIGZhbHNlO319OwpmdW5jdGlvbiBmY19jbGlj ayhhLGIpe3VzZXJfYWN0aW9uKCd1ZmknLGEpO2ZjX2V4cGFuZChhLGIpO31mdW5j dGlvbiBmY19leHBhbmQoYSxiKXt2YXIgYz1QYXJlbnQuYnlUYWcoYSwnZm9ybScp O2ZjX3VuY29sbGFwc2UoYyk7Q1NTLnJlbW92ZUNsYXNzKGMsJ2hpZGRlbl9hZGRf Y29tbWVudCcpO2lmKGIhPT1mYWxzZSkoYy5hZGRfY29tbWVudF90ZXh0X3RleHR8 fGMuYWRkX2NvbW1lbnRfdGV4dCkuZm9jdXMoKTtyZXR1cm4gZmFsc2U7fWZ1bmN0 aW9uIGZjX3VuY29sbGFwc2UoYSl7Q1NTLnJlbW92ZUNsYXNzKGEsJ2NvbGxhcHNl ZF9jb21tZW50cycpO30Kdm9pZCgwKTs= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=iJQHHQCJH9X.js Content-Type: application/x-javascript; charset=utf-8; name=iJQHHQCJH9X.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v1/yW/r/iJQHHQCJH9X.js Content-Transfer-Encoding: Base64 LyoxMzIzOTEyMTU4LDE2OTc3NTgxMyovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbImplM1c3Il0pOyB9CgpfX2Uo Ik9iamVjdFV0aWxzIixbImNvcHlQcm9wZXJ0aWVzIiwiaGFzQXJyYXlOYXR1cmUi XSxmdW5jdGlvbihkLGcsZixjKXt2YXIgYj1nKCJjb3B5UHJvcGVydGllcyIpO3Zh ciBlPWcoImhhc0FycmF5TmF0dXJlIik7dmFyIGE9e29iamVjdDpmdW5jdGlvbihp KXt2YXIgaD1uZXcgRnVuY3Rpb24oKTtoLnByb3RvdHlwZT1pO3JldHVybiBuZXcg aCgpO30saXNTY2FsYXI6ZnVuY3Rpb24oaCl7cmV0dXJuICgvc3RyaW5nfG51bWJl cnxib29sZWFuLykudGVzdCh0eXBlb2YgaCk7fSxnZXRLZXlzOmZ1bmN0aW9uKGop e3ZhciBpPVtdO2Zvcih2YXIgaCBpbiBqKWkucHVzaChoKTtyZXR1cm4gaTt9LGdl dFZhbHVlczpmdW5jdGlvbihpKXt2YXIgaj1bXTtmb3IodmFyIGggaW4gaSlqLnB1 c2goaVtoXSk7cmV0dXJuIGo7fSxjb3VudEtleXM6ZnVuY3Rpb24oail7dmFyIGg9 MDtmb3IodmFyIGkgaW4gailoKys7cmV0dXJuIGg7fSxhcmVFcXVhbDpmdW5jdGlv bihoLGkpe3JldHVybiBKU09OLnN0cmluZ2lmeShoKT09SlNPTi5zdHJpbmdpZnko aSk7fSxtZXJnZTpmdW5jdGlvbigpe3ZhciBpPXt9O2Zvcih2YXIgaD0wO2g8YXJn dW1lbnRzLmxlbmd0aDtoKyspYihpLGFyZ3VtZW50c1toXSk7cmV0dXJuIGk7fSxj b2FsZXNjZTpmdW5jdGlvbigpe2Zvcih2YXIgaD0wO2g8YXJndW1lbnRzLmxlbmd0 aDsrK2gpaWYoYXJndW1lbnRzW2hdIT1udWxsKXJldHVybiBhcmd1bWVudHNbaF07 cmV0dXJuIG51bGw7fSxjcmVhdGVGcm9tOmZ1bmN0aW9uKGosbCl7dmFyIGs9e307 dmFyIGk9ZShsKTtpZih0eXBlb2YgbD09J3VuZGVmaW5lZCcpbD10cnVlO2Zvcih2 YXIgaD1qLmxlbmd0aDtoLS07KWtbaltoXV09aT9sW2hdOmw7cmV0dXJuIGs7fX07 Zi5leHBvcnRzPWE7fSk7Cl9fZSgib2JqZWN0LWV4dGVuc2lvbnMiLFsiT2JqZWN0 VXRpbHMiXSxmdW5jdGlvbihjLGUsZCxiKXt2YXIgYT1lKCdPYmplY3RVdGlscycp O2MuYXJlX2VxdWFsPWEuYXJlRXF1YWw7Yy5jb2FsZXNjZT1hLmNvYWxlc2NlO2Mu Y291bnQ9YS5jb3VudEtleXM7Yy5pc19zY2FsYXI9YS5pc1NjYWxhcjtjLmtleXM9 YS5nZXRLZXlzO2MubWVyZ2U9YS5tZXJnZTtjLm9iamVjdD1hLm9iamVjdDtjLnZh bHVlcz1hLmdldFZhbHVlcztPYmplY3QuZnJvbT1hLmNyZWF0ZUZyb207fSwzKTsK X19lKCJ1YSIsW10sZnVuY3Rpb24oYixkLGMsYSl7dmFyIGU9e2llOmZ1bmN0aW9u KCl7cmV0dXJuIGUuX3BvcHVsYXRlKCl8fHRoaXMuX2llO30saWU2NDpmdW5jdGlv bigpe3JldHVybiBlLmllKCkmJnRoaXMuX3dpbjY0O30sZmlyZWZveDpmdW5jdGlv bigpe3JldHVybiBlLl9wb3B1bGF0ZSgpfHx0aGlzLl9maXJlZm94O30sb3BlcmE6 ZnVuY3Rpb24oKXtyZXR1cm4gZS5fcG9wdWxhdGUoKXx8dGhpcy5fb3BlcmE7fSxz YWZhcmk6ZnVuY3Rpb24oKXtyZXR1cm4gZS5fcG9wdWxhdGUoKXx8dGhpcy5fc2Fm YXJpO30sY2hyb21lOmZ1bmN0aW9uKCl7cmV0dXJuIGUuX3BvcHVsYXRlKCl8fHRo aXMuX2Nocm9tZTt9LHdpbmRvd3M6ZnVuY3Rpb24oKXtyZXR1cm4gZS5fcG9wdWxh dGUoKXx8dGhpcy5fd2luZG93czt9LG9zeDpmdW5jdGlvbigpe3JldHVybiBlLl9w b3B1bGF0ZSgpfHx0aGlzLl9vc3g7fSxsaW51eDpmdW5jdGlvbigpe3JldHVybiBl Ll9wb3B1bGF0ZSgpfHx0aGlzLl9saW51eDt9LGlwaG9uZTpmdW5jdGlvbigpe3Jl dHVybiBlLl9wb3B1bGF0ZSgpfHx0aGlzLl9pcGhvbmU7fSxfcG9wdWxhdGVkOmZh bHNlLF9wb3B1bGF0ZTpmdW5jdGlvbigpe2lmKGUuX3BvcHVsYXRlZClyZXR1cm47 ZS5fcG9wdWxhdGVkPXRydWU7dmFyIGk9bmF2aWdhdG9yLnVzZXJBZ2VudDt2YXIg Zj0vKD86TVNJRS4oXGQrXC5cZCspKXwoPzooPzpGaXJlZm94fEdyYW5QYXJhZGlz b3xJY2V3ZWFzZWwpLihcZCtcLlxkKykpfCg/Ok9wZXJhKD86LitWZXJzaW9uLnwu KShcZCtcLlxkKykpfCg/OkFwcGxlV2ViS2l0LihcZCsoPzpcLlxkKyk/KSkvLmV4 ZWMoaSk7dmFyIGg9LyhNYWMgT1MgWCl8KFdpbmRvd3MpfChMaW51eCkvLmV4ZWMo aSk7dmFyIGc9L1xiKGlQaG9uZXxpUFthb11kKS8uZXhlYyhpKTtlLl93aW42ND0h ISgvV2luNjQvLmV4ZWMoaSkpO2lmKGYpe2UuX2llPWZbMV0/cGFyc2VGbG9hdChm WzFdKTpOYU47aWYoZS5faWUmJmRvY3VtZW50LmRvY3VtZW50TW9kZSllLl9pZT1k b2N1bWVudC5kb2N1bWVudE1vZGU7ZS5fZmlyZWZveD1mWzJdP3BhcnNlRmxvYXQo ZlsyXSk6TmFOO2UuX29wZXJhPWZbM10/cGFyc2VGbG9hdChmWzNdKTpOYU47ZS5f c2FmYXJpPWZbNF0/cGFyc2VGbG9hdChmWzRdKTpOYU47aWYoZS5fc2FmYXJpKXtm PS8oPzpDaHJvbWVcLyhcZCtcLlxkKykpLy5leGVjKGkpO2UuX2Nocm9tZT1mJiZm WzFdP3BhcnNlRmxvYXQoZlsxXSk6TmFOO31lbHNlIGUuX2Nocm9tZT1OYU47fWVs c2UgZS5faWU9ZS5fZmlyZWZveD1lLl9vcGVyYT1lLl9jaHJvbWU9ZS5fc2FmYXJp PU5hTjtpZihoKXtpZihoWzFdKXt2YXIgaj0vKD86TWFjIE9TIFggKFxkKyg/Olsu X11cZCspPykpLy5leGVjKGkpO2UuX29zeD1qP3BhcnNlRmxvYXQoalsxXS5yZXBs YWNlKCdfJywnLicpKTp0cnVlO31lbHNlIGUuX29zeD1mYWxzZTtlLl93aW5kb3dz PSEhaFsyXTtlLl9saW51eD0hIWhbM107fWVsc2UgZS5fb3N4PWUuX3dpbmRvd3M9 ZS5fbGludXg9ZmFsc2U7ZS5faXBob25lPWc7fX07Yi51YT1jLmV4cG9ydHM9ZTt9 LDMpOwpfX2UoIlN5c3RlbUV2ZW50cyIsWyJhcmJpdGVyIiwiRW52IiwidWEiLCJ1 dGlsIiwiY29weVByb3BlcnRpZXMiXSxmdW5jdGlvbihyLHYsdCxxKXt2YXIgYT12 KCdhcmJpdGVyJyk7dmFyIGM9dignRW52Jyk7dmFyIHg9digndWEnKTt2YXIgZT12 KCd1dGlsJyk7dmFyIHA9dignY29weVByb3BlcnRpZXMnKTt2YXIgZD1uZXcgYSgp O3ZhciBmPVtdLGI9MTAwMDtzZXRJbnRlcnZhbChmdW5jdGlvbigpe2Zvcih2YXIg eT0wO3k8Zi5sZW5ndGg7eSsrKWZbeV0oKTt9LGIsZmFsc2UpO2Z1bmN0aW9uIGgo KXtyZXR1cm4gKC9jX3VzZXI9KFxkKykvLnRlc3QoZG9jdW1lbnQuY29va2llKSYm UmVnRXhwLiQxKXx8MDt9dmFyIGw9Yy51c2VyO3ZhciBrPW5hdmlnYXRvci5vbkxp bmU7Zi5wdXNoKGZ1bmN0aW9uKCl7dmFyIHk9bmF2aWdhdG9yLm9uTGluZTtpZihr IT15KXtkLmluZm9ybShkLk9OTElORSx5LGEuQkVIQVZJT1JfU1RBVEUpO2s9eTt9 fSk7dmFyIG89bDtmLnB1c2goZnVuY3Rpb24oKXt2YXIgeT1oKCk7aWYobyE9eSl7 ZC5pbmZvcm0oZC5VU0VSLHksYS5CRUhBVklPUl9TVEFURSk7bz15O319KTt2YXIg bT1EYXRlLm5vdygpO2YucHVzaChmdW5jdGlvbigpe3ZhciB6PURhdGUubm93KCk7 dmFyIHk9ei1tLWI7aWYoeT4xMDAwMClkLmluZm9ybShkLkFXQUtFLHkpO209ejt9 KTtmdW5jdGlvbiB1KHkpe3ZhciB6PXk/e2xpbmU6eS5saW5lTnVtYmVyfHx5Lmxp bmUsbWVzc2FnZTp5Lm1lc3NhZ2UsbmFtZTp5Lm5hbWUsc2NyaXB0OnkuZmlsZU5h bWV8fHkuc291cmNlVVJMLHN0YWNrOnkuc3RhY2tUcmFjZXx8eS5zdGFja306e307 aWYoeC5jaHJvbWUoKSYmeS5zdGFjayYmLyhcd3szLDV9OlwvXC9bXjpdKyk6KFxk KykvLnRlc3QoeS5zdGFjaykpe3ouc2NyaXB0PVJlZ0V4cC4kMTt6LmxpbmU9cGFy c2VJbnQoUmVnRXhwLiQyLDEwKTt9Zm9yKHZhciB6YSBpbiB6KWlmKHpbemFdPT1u dWxsKWRlbGV0ZSB6W3phXTtyZXR1cm4gejt9dmFyIGc9bnVsbDt2YXIgbj1mYWxz ZTtmdW5jdGlvbiB3KHoseSl7aWYoeC5pZSgpKXJldHVybiB6O3JldHVybiBmdW5j dGlvbigpe2lmKG4pcmV0dXJuIHouYXBwbHkodGhpcyxhcmd1bWVudHMpO3RyeXtu PXRydWU7dmFyIHJlcz16LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtuPWZhbHNlO3Jl dHVybiByZXM7fWNhdGNoKHphKXtuPWZhbHNlO2c9ZC5ub3JtYWxpemVFcnJvcih6 YSk7aWYoeSl5KGcpO3Rocm93IHphO319O31mdW5jdGlvbiBzKHkpe2lmKHkgaW5z dGFuY2VvZiBFcnJvcil5PXUoeSk7ZC5pbmZvcm0oZC5FUlJPUix5KTt9ZnVuY3Rp b24gaSh6YSx6Yix6KXt2YXIgeT1nfHx7bWVzc2FnZTp6YSxzY3JpcHQ6emIsbGlu ZTp6fTtnPW51bGw7eS5zY3JpcHQ9eS5zY3JpcHR8fHpiO3kubGluZT15LmxpbmV8 fHo7cyh5KTt9ZnVuY3Rpb24gaigpe3dpbmRvdy5vbmVycm9yPWk7fWEuc2V0RXJy b3JIYW5kbGVyKGQuaW5mb3JtRXJyb3IpO2ooKTtmLnB1c2goaik7ci5TeXN0ZW1F dmVudHM9dC5leHBvcnRzPXAoZCx7VVNFUjonU3lzdGVtRXZlbnRzL1VTRVInLE9O TElORTonU3lzdGVtRXZlbnRzL09OTElORScsQVdBS0U6J1N5c3RlbUV2ZW50cy9B V0FLRScsRVJST1I6J1N5c3RlbUV2ZW50cy9FUlJPUicsdHJhcEVycm9yOncsbm9y bWFsaXplRXJyb3I6dSxpbmZvcm1FcnJvcjpzLGlzUGFnZU93bmVyOmZ1bmN0aW9u KHkpe3JldHVybiB5fHxoKCk9PWw7fX0pO30sMyk7CmZ1bmN0aW9uIF9vbmxvYWRI b29rKCl7IXdpbmRvdy5sb2FkZWQmJndpbmRvdy5DYXZhbHJ5TG9nZ2VyJiZDYXZh bHJ5TG9nZ2VyLmdldEluc3RhbmNlKCkuc2V0VGltZVN0YW1wKCd0X3ByZWhvb2tz Jyk7X3J1bkhvb2tzKCdvbmxvYWRob29rcycpOyF3aW5kb3cubG9hZGVkJiZ3aW5k b3cuQ2F2YWxyeUxvZ2dlciYmQ2F2YWxyeUxvZ2dlci5nZXRJbnN0YW5jZSgpLnNl dFRpbWVTdGFtcCgndF9ob29rcycpO3dpbmRvdy5sb2FkZWQ9dHJ1ZTtBcmJpdGVy LmluZm9ybSgndWlwYWdlX29ubG9hZCcsdHJ1ZSxBcmJpdGVyLkJFSEFWSU9SX1NU QVRFKTt9ZnVuY3Rpb24gX29uYWZ0ZXJsb2FkSG9vaygpe19ydW5Ib29rcygnb25h ZnRlcmxvYWRob29rcycpO3dpbmRvdy5hZnRlcmxvYWRlZD10cnVlO31mdW5jdGlv biBfcnVuSG9vayhiLGMpe3RyeXtyZXR1cm4gYigpO31jYXRjaChhKXt2YXIgZXJy PVN5c3RlbUV2ZW50cy5ub3JtYWxpemVFcnJvcihhKTtlcnIuZXZlbnRfdHlwZT1j O2Vyci5jYXRlZ29yeT0ncnVuaG9vayc7U3lzdGVtRXZlbnRzLmluZm9ybUVycm9y KGVycik7fX1mdW5jdGlvbiBfcnVuSG9va3MoYil7dmFyIGQ9Yj09J29uYmVmb3Jl bGVhdmVob29rcyd8fGI9PSdvbmJlZm9yZXVubG9hZGhvb2tzJzt2YXIgZT1udWxs O2Rve3ZhciBhPXdpbmRvd1tiXTtpZighZCl3aW5kb3dbYl09bnVsbDtpZighYSli cmVhaztmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihkKXtlPWV8fF9ydW5I b29rKGFbY10sYik7fWVsc2UgX3J1bkhvb2soYVtjXSxiKTtpZihkKWJyZWFrO313 aGlsZSh3aW5kb3dbYl0pO2lmKGQmJmUpcmV0dXJuIGU7fWZ1bmN0aW9uIGtlZXBf d2luZG93X3NldF9hc19sb2FkZWQoKXtpZih3aW5kb3cubG9hZGVkPT1mYWxzZSl7 d2luZG93LmxvYWRlZD10cnVlO19ydW5Ib29rcygnb25sb2FkaG9va3MnKTt9aWYo d2luZG93LmFmdGVybG9hZGVkPT1mYWxzZSl7d2luZG93LmFmdGVybG9hZGVkPXRy dWU7X3J1bkhvb2tzKCdvbmFmdGVybG9hZGhvb2tzJyk7fX1BcmJpdGVyLnJlZ2lz dGVyQ2FsbGJhY2soX29ubG9hZEhvb2ssW09ubG9hZEV2ZW50Lk9OTE9BRF9ET01D T05URU5UX0NBTExCQUNLLEluaXRpYWxKU0xvYWRlci5JTklUSUFMX0pTX1JFQURZ XSk7QXJiaXRlci5yZWdpc3RlckNhbGxiYWNrKF9vbmFmdGVybG9hZEhvb2ssW09u bG9hZEV2ZW50Lk9OTE9BRF9ET01DT05URU5UX0NBTExCQUNLLE9ubG9hZEV2ZW50 Lk9OTE9BRF9DQUxMQkFDSyxJbml0aWFsSlNMb2FkZXIuSU5JVElBTF9KU19SRUFE WV0pO0FyYml0ZXIuc3Vic2NyaWJlKE9ubG9hZEV2ZW50Lk9OQkVGT1JFVU5MT0FE LGZ1bmN0aW9uKGIsYSl7YS53YXJuPV9ydW5Ib29rcygnb25iZWZvcmVsZWF2ZWhv b2tzJyl8fF9ydW5Ib29rcygnb25iZWZvcmV1bmxvYWRob29rcycpO2lmKCFhLndh cm4pe3dpbmRvdy5sb2FkZWQ9ZmFsc2U7d2luZG93LmFmdGVybG9hZGVkPWZhbHNl O319LEFyYml0ZXIuU1VCU0NSSUJFX05FVyk7QXJiaXRlci5zdWJzY3JpYmUoT25s b2FkRXZlbnQuT05VTkxPQUQsZnVuY3Rpb24oYixhKXtfcnVuSG9va3MoJ29udW5s b2FkaG9va3MnKTt9LEFyYml0ZXIuU1VCU0NSSUJFX05FVyk7CnZvaWQoMCk7Cl9f ZSgiQXN5bmNSZXNwb25zZSIsWyJFbnYiLCJjb3B5UHJvcGVydGllcyIsInR4Il0s ZnVuY3Rpb24oZSxnLGYsZCl7dmFyIGI9ZygiRW52Iik7dmFyIGM9ZygiY29weVBy b3BlcnRpZXMiKTtlLnR4PWcoInR4Iik7ZnVuY3Rpb24gYShpLGgpe2ModGhpcyx7 ZXJyb3I6MCxlcnJvclN1bW1hcnk6bnVsbCxlcnJvckRlc2NyaXB0aW9uOm51bGws b25sb2FkOm51bGwscmVwbGF5OmZhbHNlLHBheWxvYWQ6aHx8bnVsbCxyZXF1ZXN0 Oml8fG51bGwsc2lsZW50RXJyb3I6ZmFsc2UsaXNfbGFzdDp0cnVlfSk7cmV0dXJu IHRoaXM7fWMoYSx7ZGVmYXVsdEVycm9ySGFuZGxlcjpmdW5jdGlvbihpKXt0cnl7 aWYoIWkuc2lsZW50RXJyb3Ipe2EudmVyYm9zZUVycm9ySGFuZGxlcihpKTt9ZWxz ZSBpLmxvZ0Vycm9yQnlHcm91cCgnc2lsZW50JywxMCk7fWNhdGNoKGgpe2FsZXJ0 KGkpO319LHZlcmJvc2VFcnJvckhhbmRsZXI6ZnVuY3Rpb24oaSl7dHJ5e3ZhciBz dW1tYXJ5PWkuZ2V0RXJyb3JTdW1tYXJ5KCk7dmFyIGRlc2M9aS5nZXRFcnJvckRl c2NyaXB0aW9uKCk7aS5sb2dFcnJvckJ5R3JvdXAoJ3BvcHVwJywxMCk7aWYoaS5z aWxlbnRFcnJvciYmZGVzYz09JycpZGVzYz0iQmlyIHNvcnVuIG9sdVx1MDE1ZnR1 LiBCdW51IGVuIGtcdTAxMzFzYSBzXHUwMGZjcmVkZSBkXHUwMGZjemVsdG1leWUg XHUwMGU3YWxcdTAxMzFcdTAxNWZcdTAxMzF5b3J1ei4gVGVrcmFyIGRlbmV5ZWJp bGlyc2luLiI7Qm9vdGxvYWRlci5sb2FkQ29tcG9uZW50cygnZGlhbG9nJyxmdW5j dGlvbigpe25ldyBEaWFsb2coKS5zZXRUaXRsZShzdW1tYXJ5KS5zZXRCb2R5KGRl c2MpLnNldEJ1dHRvbnMoW0RpYWxvZy5PS10pLnNldE1vZGFsKHRydWUpLnNldENh dXNhbEVsZW1lbnQodGhpcy5yZWxhdGl2ZVRvKS5zaG93KCk7fSk7fWNhdGNoKGgp e2FsZXJ0KGkpO319fSk7YyhhLnByb3RvdHlwZSx7Z2V0UmVxdWVzdDpmdW5jdGlv bigpe3JldHVybiB0aGlzLnJlcXVlc3Q7fSxnZXRQYXlsb2FkOmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMucGF5bG9hZDt9LGdldEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuZXJyb3I7fSxnZXRFcnJvclN1bW1hcnk6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5lcnJvclN1bW1hcnk7fSxzZXRFcnJvclN1bW1hcnk6ZnVuY3Rpb24oaCl7 aD0oaD09PXVuZGVmaW5lZD9udWxsOmgpO3RoaXMuZXJyb3JTdW1tYXJ5PWg7cmV0 dXJuIHRoaXM7fSxnZXRFcnJvckRlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuZXJyb3JEZXNjcmlwdGlvbjt9LGdldEVycm9ySXNXYXJuaW5nOmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuZXJyb3JJc1dhcm5pbmc7fSxsb2dFcnJvcjpmdW5j dGlvbihoLGope2lmKHdpbmRvdy5zZW5kX2Vycm9yX3NpZ25hbCl7dmFyIGk9e2Vy cl9jb2RlOnRoaXMuZXJyb3IsdmlwOihiLnZpcHx8Jy0nKX07aWYoaiE9PXVuZGVm aW5lZCl7aS5kdXJhdGlvbj1qLmR1cmF0aW9uO2kueGZiX2lwPWoueGZiX2lwO312 YXIgaz10aGlzLnJlcXVlc3QuZ2V0VVJJKCk7aS5wYXRoPWt8fCctJztpLmFpZD10 aGlzLnJlcXVlc3QudXNlckFjdGlvbklEO2lmKGsmJmsuaW5kZXhPZignc2NyaWJl X2VuZHBvaW50LnBocCcpIT0tMSloPSdhc3luY19lcnJvcl9kb3VibGUnO3NlbmRf ZXJyb3Jfc2lnbmFsKGgsSlNPTi5zdHJpbmdpZnkoaSkpO319LGxvZ0Vycm9yQnlH cm91cDpmdW5jdGlvbihpLGgpe2lmKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpo KT09MClpZih0aGlzLmVycm9yPT0xMzU3MDEwfHx0aGlzLmVycm9yPDE1MDAwKXt0 aGlzLmxvZ0Vycm9yKCdhc3luY19lcnJvcl9vb3BzXycraSk7fWVsc2UgdGhpcy5s b2dFcnJvcignYXN5bmNfZXJyb3JfbG9naWNfJytpKTt9fSk7Zi5leHBvcnRzPWE7 fSk7Cl9fZSgiY29va2llIixbIkVudiJdLGZ1bmN0aW9uKGQsZixlLGMpe3ZhciBi PWYoJ0VudicpO3ZhciBhPXtzZXQ6ZnVuY3Rpb24oZyxoLGosayxsKXtpZihiLm5v X2Nvb2tpZXMmJmchPSd0cGEnKXJldHVybjt2YXIgaTtpZihqKXt2YXIgbT1uZXcg RGF0ZSgpO2k9bmV3IERhdGUoKTtpLnNldFRpbWUobS5nZXRUaW1lKCkraik7fWRv Y3VtZW50LmNvb2tpZT1nKyI9IitlbmNvZGVVUklDb21wb25lbnQoaCkrIjsgIiso aj8iZXhwaXJlcz0iK2kudG9HTVRTdHJpbmcoKSsiOyAiOiIiKSsicGF0aD0iKyhr fHwnLycpKyI7IGRvbWFpbj0iK3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZS5yZXBs YWNlKC9eLiooXC5mYWNlYm9va1wuLiopJC9pLCckMScpKyhsPyI7IHNlY3VyZSI6 IiIpO30sY2xlYXI6ZnVuY3Rpb24oZyl7ZG9jdW1lbnQuY29va2llPWcrIj07IGV4 cGlyZXM9VGh1LCAwMS1KYW4tMTk3MCAwMDowMDowMSBHTVQ7ICIrInBhdGg9Lzsg ZG9tYWluPSIrd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLnJlcGxhY2UoL14uKihc LmZhY2Vib29rXC4uKikkL2ksJyQxJyk7fSxnZXQ6ZnVuY3Rpb24oail7dmFyIGs9 aisiPSI7dmFyIGg9ZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7Zm9yKHZhciBp PTA7aTxoLmxlbmd0aDtpKyspe3ZhciBnPWhbaV07d2hpbGUoZy5jaGFyQXQoMCk9 PScgJylnPWcuc3Vic3RyaW5nKDEsZy5sZW5ndGgpO2lmKGcuaW5kZXhPZihrKT09 PTApcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChnLnN1YnN0cmluZyhrLmxlbmd0 aCxnLmxlbmd0aCkpO31yZXR1cm4gbnVsbDt9fTtlLmV4cG9ydHM9YTtkLmdldENv b2tpZT1hLmdldDtkLnNldENvb2tpZT1hLnNldDtkLmNsZWFyQ29va2llPWEuY2xl YXI7fSwzKTsKX19lKCJzdHJpbmctZXh0ZW5zaW9ucyIsWyJhcmJpdGVyIl0sZnVu Y3Rpb24oYyxlLGQsYil7dmFyIGE9ZSgnYXJiaXRlcicpO1N0cmluZy5wcm90b3R5 cGUudHJpbT1mdW5jdGlvbigpe2lmKHRoaXM9PXdpbmRvdylyZXR1cm4gbnVsbDty ZXR1cm4gdGhpcy5yZXBsYWNlKC9eXHMqfFxzKiQvZywnJyk7fTtiLnRyaW09Yy50 cmltPWZ1bmN0aW9uKGcpe3RyeXtyZXR1cm4gU3RyaW5nKGcudG9TdHJpbmcoKSku dHJpbSgpO31jYXRjaChmKXtyZXR1cm4gJyc7fX07U3RyaW5nLnByb3RvdHlwZS5z dGFydHNXaXRoPWZ1bmN0aW9uKGYpe2lmKHRoaXM9PXdpbmRvdylyZXR1cm4gbnVs bDtyZXR1cm4gdGhpcy5zdWJzdHJpbmcoMCxmLmxlbmd0aCk9PWY7fTtTdHJpbmcu cHJvdG90eXBlLmVuZHNXaXRoPWZ1bmN0aW9uKGYpe2lmKHRoaXM9PXdpbmRvdyly ZXR1cm4gbnVsbDtyZXR1cm4gdGhpcy5sZW5ndGg+PWYubGVuZ3RoJiZ0aGlzLnN1 YnN0cmluZyh0aGlzLmxlbmd0aC1mLmxlbmd0aCk9PWY7fTtTdHJpbmcucHJvdG90 eXBlLnNwbGl0PShmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24obSxqKXt2YXIg Zz0iIjtpZihtPT09bnVsbHx8aj09PW51bGwpe3JldHVybiBbXTt9ZWxzZSBpZih0 eXBlb2YgbT09J3N0cmluZycpe3JldHVybiBmLmNhbGwodGhpcyxtLGopO31lbHNl IGlmKG09PT11bmRlZmluZWQpe3JldHVybiBbdGhpcy50b1N0cmluZygpXTt9ZWxz ZSBpZihtIGluc3RhbmNlb2YgUmVnRXhwKXtpZighbS5fMnx8IW0uXzEpe2c9bS50 b1N0cmluZygpLnJlcGxhY2UoL15bXFNcc10rXC8vLCIiKTtpZighbS5fMSlpZigh bS5nbG9iYWwpe20uXzE9bmV3IFJlZ0V4cChtLnNvdXJjZSwiZyIrZyk7fWVsc2Ug bS5fMT0xO31zZXBhcmF0b3IxPW0uXzE9PT0xP206bS5fMTt2YXIgbj0obS5fMj9t Ll8yOm0uXzI9bmV3IFJlZ0V4cCgiXiIrc2VwYXJhdG9yMS5zb3VyY2UrIiQiLGcp KTtpZihqPT09dW5kZWZpbmVkfHxqPDApe2o9ZmFsc2U7fWVsc2V7aj1NYXRoLmZs b29yKGopO2lmKCFqKXJldHVybiBbXTt9dmFyIGssbD1bXSxpPTAsaD0wO3doaWxl KChqP2grKzw9ajp0cnVlKSYmKGs9c2VwYXJhdG9yMS5leGVjKHRoaXMpKSl7aWYo KGtbMF0ubGVuZ3RoPT09MCkmJihzZXBhcmF0b3IxLmxhc3RJbmRleD5rLmluZGV4 KSlzZXBhcmF0b3IxLmxhc3RJbmRleC0tO2lmKHNlcGFyYXRvcjEubGFzdEluZGV4 Pmkpe2lmKGsubGVuZ3RoPjEpa1swXS5yZXBsYWNlKG4sZnVuY3Rpb24oKXtmb3Io dmFyIG89MTtvPGFyZ3VtZW50cy5sZW5ndGgtMjtvKyspaWYoYXJndW1lbnRzW29d PT09dW5kZWZpbmVkKWtbb109dW5kZWZpbmVkO30pO2w9bC5jb25jYXQodGhpcy5z dWJzdHJpbmcoaSxrLmluZGV4KSwoay5pbmRleD09PXRoaXMubGVuZ3RoP1tdOmsu c2xpY2UoMSkpKTtpPXNlcGFyYXRvcjEubGFzdEluZGV4O31pZihrWzBdLmxlbmd0 aD09PTApc2VwYXJhdG9yMS5sYXN0SW5kZXgrKzt9cmV0dXJuIChpPT09dGhpcy5s ZW5ndGgpPyhzZXBhcmF0b3IxLnRlc3QoIiIpP2w6bC5jb25jYXQoIiIpKTooaj9s OmwuY29uY2F0KHRoaXMuc3Vic3RyaW5nKGkpKSk7fWVsc2UgcmV0dXJuIGYuY2Fs bCh0aGlzLG0saik7fTt9KShTdHJpbmcucHJvdG90eXBlLnNwbGl0KTthLmluZm9y bSgnZmJqcy9wcm90b3R5cGVzJyk7fSwzKTsKX19lKCJldmFsLWdsb2JhbCIsW10s ZnVuY3Rpb24oYyxlLGQsYil7ZnVuY3Rpb24gYShoKXtpZignc3RyaW5nJyE9dHlw ZW9mKGgpKXt0aHJvdyBuZXcgRXJyb3IoJ0pTIHNlbnQgdG8gZXZhbF9nbG9iYWwg aXMgbm90IGEgc3RyaW5nLiAgT25seSBzdHJpbmdzICcrJ2FyZSBwZXJtaXR0ZWQu Jyk7fWVsc2UgaWYoJyc9PWgpcmV0dXJuO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoJ3NjcmlwdCcpO2kudHlwZT0ndGV4dC9qYXZhc2NyaXB0Jzt0cnl7aS5h cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShoKSk7fWNhdGNoKGYp e2kudGV4dD1oO312YXIgZz0oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo ImhlYWQiKVswXXx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtnLmFwcGVuZENo aWxkKGkpO2cucmVtb3ZlQ2hpbGQoaSk7fWMuZXZhbF9nbG9iYWw9Yi5ldmFsX2ds b2JhbD1hO30sMyk7Cl9fZSgiZG9tLWh0bWwiLFsiZnVuY3Rpb24tZXh0ZW5zaW9u cyIsInN0cmluZy1leHRlbnNpb25zIiwiQXJyYXlVdGlscyIsInVhIiwiY29weVBy b3BlcnRpZXMiLCJldmFsLWdsb2JhbCJdLGZ1bmN0aW9uKGUsZyxmLGQpe2coJ2Z1 bmN0aW9uLWV4dGVuc2lvbnMnKTtnKCdzdHJpbmctZXh0ZW5zaW9ucycpO3ZhciBh PWcoJ0FycmF5VXRpbHMnKTt2YXIgaD1nKCd1YScpO3ZhciBjPWcoJ2NvcHlQcm9w ZXJ0aWVzJyk7ZnVuY3Rpb24gYihpKXtpZihpJiZpLl9faHRtbClpPWkuX19odG1s O2lmKCEodGhpcyBpbnN0YW5jZW9mIGIpKXtpZihpIGluc3RhbmNlb2YgYilyZXR1 cm4gaTtyZXR1cm4gbmV3IGIoaSk7fXRoaXMuX2NvbnRlbnQ9aTt0aGlzLl9kZWZl cj1mYWxzZTt0aGlzLl9leHRyYV9hY3Rpb249Jyc7dGhpcy5fbm9kZXM9bnVsbDt0 aGlzLl9pbmxpbmVfanM9YmFnb2Zob2xkaW5nO3RoaXMuX2llX2Nsb25lX2J1Zz1m YWxzZTtyZXR1cm4gdGhpczt9Yi5pc0hUTUw9ZnVuY3Rpb24oaSl7cmV0dXJuIGkm JihpIGluc3RhbmNlb2YgYnx8aS5fX2h0bWwhPT11bmRlZmluZWQpO307Yi5yZXBs YWNlSlNPTldyYXBwZXI9ZnVuY3Rpb24oaSl7cmV0dXJuIGkmJmkuX19odG1sIT09 dW5kZWZpbmVkP25ldyBiKGkuX19odG1sKTppO307YyhiLnByb3RvdHlwZSx7dG9T dHJpbmc6ZnVuY3Rpb24oKXt2YXIgaT10aGlzLl9jb250ZW50fHwnJztpZih0aGlz Ll9leHRyYV9hY3Rpb24paSs9JzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0 Ij4nK3RoaXMuX2V4dHJhX2FjdGlvbisnPC9zY3InKydpcHQ+JztyZXR1cm4gaTt9 LHNldEFjdGlvbjpmdW5jdGlvbihpKXt0aGlzLl9leHRyYV9hY3Rpb249aTtyZXR1 cm4gdGhpczt9LGdldEFjdGlvbjpmdW5jdGlvbigpe3RoaXMuX2ZpbGxDYWNoZSgp O3ZhciBpPWZ1bmN0aW9uKCl7dGhpcy5faW5saW5lX2pzKCk7dmFyIGo9ZygnZXZh bC1nbG9iYWwnKS5ldmFsX2dsb2JhbDtqKHRoaXMuX2V4dHJhX2FjdGlvbik7fS5i aW5kKHRoaXMpO2lmKHRoaXMuZ2V0RGVmZXJyZWQoKSl7cmV0dXJuIGkuZGVmZXIu YmluZChpKTt9ZWxzZSByZXR1cm4gaTt9LHNldERlZmVycmVkOmZ1bmN0aW9uKGkp e3RoaXMuX2RlZmVyPSEhaTtyZXR1cm4gdGhpczt9LGdldERlZmVycmVkOmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmVyO30sZ2V0Q29udGVudDpmdW5jdGlvbigp e3JldHVybiB0aGlzLl9jb250ZW50O30sZ2V0Tm9kZXM6ZnVuY3Rpb24oKXt0aGlz Ll9maWxsQ2FjaGUoKTtyZXR1cm4gdGhpcy5fbm9kZXM7fSxnZXRSb290Tm9kZTpm dW5jdGlvbigpe3JldHVybiB0aGlzLmdldE5vZGVzKClbMF07fSxpZUNsb25lQnVn OmZ1bmN0aW9uKCl7dGhpcy5fZmlsbENhY2hlKCk7cmV0dXJuIHRoaXMuX2llX2Ns b25lX2J1Zzt9LF9maWxsQ2FjaGU6ZnVuY3Rpb24oKXtpZihudWxsIT09dGhpcy5f bm9kZXMpcmV0dXJuO3ZhciBsPXRoaXMuX2NvbnRlbnQ7aWYoIWwpe3RoaXMuX25v ZGVzPVtdO3JldHVybjt9bD1sLnJlcGxhY2UoLyg8KFx3KylbXj5dKj8pXC8+L2cs ZnVuY3Rpb24odCx1LHYpe3JldHVybiB2Lm1hdGNoKC9eKGFiYnJ8YnJ8Y29sfGlt Z3xpbnB1dHxsaW5rfG1ldGF8cGFyYW18aHJ8YXJlYXxlbWJlZCkkL2kpP3Q6dSsn PjwvJyt2Kyc+Jzt9KTt2YXIgcD1sLnRyaW0oKS50b0xvd2VyQ2FzZSgpLHM9ZG9j dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyksaj1mYWxzZTt2YXIgcj0oIXAuaW5k ZXhPZignPG9wdCcpJiZbMSwnPHNlbGVjdCBtdWx0aXBsZT0ibXVsdGlwbGUiIGNs YXNzPSJfX1dSQVBQRVIiPicsJzwvc2VsZWN0PiddKXx8KCFwLmluZGV4T2YoJzxs ZWcnKSYmWzEsJzxmaWVsZHNldCBjbGFzcz0iX19XUkFQUEVSIj4nLCc8L2ZpZWxk c2V0PiddKXx8KHAubWF0Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2Fw KS8pJiZbMSwnPHRhYmxlIGNsYXNzPSJfX1dSQVBQRVIiPicsJzwvdGFibGU+J10p fHwoIXAuaW5kZXhPZignPHRyJykmJlsyLCc8dGFibGU+PHRib2R5IGNsYXNzPSJf X1dSQVBQRVIiPicsJzwvdGJvZHk+PC90YWJsZT4nXSl8fCgoIXAuaW5kZXhPZign PHRkJyl8fCFwLmluZGV4T2YoJzx0aCcpKSYmWzMsJzx0YWJsZT48dGJvZHk+PHRy IGNsYXNzPSJfX1dSQVBQRVIiPicsJzwvdHI+PC90Ym9keT48L3RhYmxlPiddKXx8 KCFwLmluZGV4T2YoJzxjb2wnKSYmWzIsJzx0YWJsZT48dGJvZHk+PC90Ym9keT48 Y29sZ3JvdXAgY2xhc3M9Il9fV1JBUFBFUiI+JywnPC9jb2xncm91cD48L3RhYmxl PiddKXx8bnVsbDtpZihudWxsPT09cil7cy5jbGFzc05hbWU9J19fV1JBUFBFUic7 aWYoaC5pZSgpKXtyPVswLCc8c3BhbiBzdHlsZT0iZGlzcGxheTpub25lIj4mbmJz cDs8L3NwYW4+JywnJ107aj10cnVlO31lbHNlIHI9WzAsJycsJyddO31zLmlubmVy SFRNTD1yWzFdK2wrclsyXTt3aGlsZShyWzBdLS0pcz1zLmxhc3RDaGlsZDtpZihq KXMucmVtb3ZlQ2hpbGQocy5maXJzdENoaWxkKTtzLmNsYXNzTmFtZSE9J19fV1JB UFBFUic7aWYoMCE9PXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ29wdGlvbicpLmxl bmd0aHx8MCE9PXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ29iamVjdCcpLmxlbmd0 aCl0aGlzLl9pZV9jbG9uZV9idWc9dHJ1ZTtpZihoLmllKCkpe3ZhciBxO2lmKCFw LmluZGV4T2YoJzx0YWJsZScpJiYtMT09cC5pbmRleE9mKCc8dGJvZHknKSl7cT1z LmZpcnN0Q2hpbGQmJnMuZmlyc3RDaGlsZC5jaGlsZE5vZGVzO31lbHNlIGlmKHJb MV09PSc8dGFibGU+JyYmLTE9PXAuaW5kZXhPZignPHRib2R5Jykpe3E9cy5jaGls ZE5vZGVzO31lbHNlIHE9W107Zm9yKHZhciBuPXEubGVuZ3RoLTE7bj49MDstLW4p aWYocVtuXS5ub2RlTmFtZSYmcVtuXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT0n dGJvZHknJiZxW25dLmNoaWxkTm9kZXMubGVuZ3RoPT0wKXFbbl0ucGFyZW50Tm9k ZS5yZW1vdmVDaGlsZChxW25dKTt9dmFyIG89cy5nZXRFbGVtZW50c0J5VGFnTmFt ZSgnc2NyaXB0Jyk7dmFyIGk9W107Zm9yKHZhciBtPTA7bTxvLmxlbmd0aDttKysp aWYob1ttXS5zcmMpe2kucHVzaChCb290bG9hZGVyLnJlcXVlc3RSZXNvdXJjZS5i aW5kKEJvb3Rsb2FkZXIsJ2pzJyxvW21dLnNyYykpO31lbHNlIGkucHVzaChldmFs X2dsb2JhbC5iaW5kKG51bGwsb1ttXS5pbm5lckhUTUwpKTtmb3IodmFyIG09by5s ZW5ndGgtMTttPj0wO20tLSlvW21dLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob1tt XSk7dmFyIGs9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PGkubGVuZ3RoO3QrKylp W3RdKCk7fTt0aGlzLl9ub2Rlcz1hLmNyZWF0ZUZyb20ocy5jaGlsZE5vZGVzKTt0 aGlzLl9pbmxpbmVfanM9azt9fSk7ZS5IVE1MPWYuZXhwb3J0cz1iO30sMyk7Cl9f ZSgiZG9tIixbIkFycmF5VXRpbHMiLCJjc3MtY29yZSIsImRvbS1odG1sIiwiT2Jq ZWN0VXRpbHMiLCJkb20tY29yZSIsImNvcHlQcm9wZXJ0aWVzIiwidHgiLCJfdHgi XSxmdW5jdGlvbihtLG8sbixrKXt2YXIgYz1vKCdBcnJheVV0aWxzJyk7dmFyIGQ9 bygnY3NzLWNvcmUnKTt2YXIgZj1vKCdkb20taHRtbCcpO3ZhciBnPW8oJ09iamVj dFV0aWxzJyk7dmFyIGE9bygnZG9tLWNvcmUnKS4kO3ZhciBqPW8oJ2NvcHlQcm9w ZXJ0aWVzJyk7dmFyIGw9bygnZG9tLWNvcmUnKS5nZTt2YXIgcD1vKCd0eCcpO3Zh ciBoPW8oJ190eCcpO2Z1bmN0aW9uIGkocSl7ZnVuY3Rpb24gcihzKXtyZXR1cm4g ZS5jcmVhdGUoJ2Rpdicse30scykuaW5uZXJIVE1MO31yZXR1cm4gZnVuY3Rpb24o dixzKXt2YXIgdD17fTtpZihzKWZvcih2YXIgdSBpbiBzKXRbdV09cihzW3VdKTty ZXR1cm4gZihxKHYsdCkpO307fXZhciBlPXtmaW5kOmZ1bmN0aW9uKHEscyl7dmFy IHI9ZS5zY3J5KHEscyk7cmV0dXJuIHJbMF07fSxzY3J5OmZ1bmN0aW9uKHosemwp e2lmKCF6KXJldHVybiBbXTt2YXIgem09emwuc3BsaXQoJyAnKTt2YXIgdD1bel07 dmFyIHk9ej09PWRvY3VtZW50O2Zvcih2YXIgemM9MDt6Yzx6bS5sZW5ndGg7emMr Kyl7aWYodC5sZW5ndGg9PTApYnJlYWs7aWYoem1bemNdPT0nJyljb250aW51ZTt2 YXIgems9em1bemNdO3ZhciB6aT1bXTt2YXIgenQ9ZmFsc2U7aWYoemsuY2hhckF0 KDApPT0nXicpaWYoemM9PTApe3p0PXRydWU7ems9emsuc2xpY2UoMSk7fWVsc2Ug cmV0dXJuIFtdO3prPXprLnJlcGxhY2UoL1wuL2csJyAuJyk7ems9emsucmVwbGFj ZSgvXCMvZywnICMnKTt6az16ay5yZXBsYWNlKC9cWy9nLCcgWycpO3ZhciB6cD16 ay5zcGxpdCgnICcpO3ZhciB6cT16cFswXXx8JyonO3ZhciB6ZD16cFsxXSYmenBb MV0uY2hhckF0KDApPT0nIyc7aWYoemQpe3ZhciB4PWwoenBbMV0uc2xpY2UoMSks dHJ1ZSk7aWYoeCYmKCcqJz09enF8fHgudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT16 cSkpZm9yKHZhciB6Zz0wO3pnPHQubGVuZ3RoO3pnKyspaWYoenQmJmUuY29udGFp bnMoeCx0W3pnXSkpe3ppPVt4XTticmVhazt9ZWxzZSBpZihkb2N1bWVudD09dFt6 Z118fGUuY29udGFpbnModFt6Z10seCkpe3ppPVt4XTticmVhazt9fWVsc2V7dmFy IHpzPVtdO3ZhciBzPXQubGVuZ3RoO2Zvcih2YXIgemU9MDt6ZTxzO3plKyspe2lm KHp0KXt2YXIgemE9W107dmFyIHc9dFt6ZV0ucGFyZW50Tm9kZTt2YXIgcT16cT09 JyonO3doaWxlKGUuaXNFbGVtZW50Tm9kZSh3KSl7aWYocXx8dy50YWdOYW1lLnRv TG93ZXJDYXNlKCk9PXpxKXphLnB1c2godyk7dz13LnBhcmVudE5vZGU7fX1lbHNl IHZhciB6YT10W3plXS5nZXRFbGVtZW50c0J5VGFnTmFtZSh6cSk7dmFyIHpiPXph Lmxlbmd0aDtmb3IodmFyIHpoPTA7emg8emI7emgrKyl6cy5wdXNoKHphW3poXSk7 fWZvcih2YXIgem49MTt6bjx6cC5sZW5ndGg7em4rKyl7dmFyIHpvPXpwW3puXTt2 YXIgemY9em8uY2hhckF0KDApPT0nLic7dmFyIHU9em8uc3Vic3RyaW5nKDEpO2Zv cih2YXIgemU9MDt6ZTx6cy5sZW5ndGg7emUrKyl7dmFyIHpyPXpzW3plXTtpZigh enIpY29udGludWU7aWYoemYpe2lmKCFkLmhhc0NsYXNzKHpyLHUpKWRlbGV0ZSB6 c1t6ZV07Y29udGludWU7fWVsc2V7dmFyIHY9em8uc2xpY2UoMSx6by5sZW5ndGgt MSk7aWYodi5pbmRleE9mKCc9Jyk9PS0xKXtpZih6ci5nZXRBdHRyaWJ1dGUodik9 PT1udWxsKXtkZWxldGUgenNbemVdO2NvbnRpbnVlO319ZWxzZXt2YXIgemo9di5z cGxpdCgnPScpO3ZhciByPXpqWzBdO3ZhciB6dT16alsxXTt6dT16dS5zbGljZSgx LHp1Lmxlbmd0aC0xKTtpZih6ci5nZXRBdHRyaWJ1dGUocikhPXp1KXtkZWxldGUg enNbemVdO2NvbnRpbnVlO319fX19Zm9yKHZhciB6ZT0wO3plPHpzLmxlbmd0aDt6 ZSsrKWlmKHpzW3plXSl7emkucHVzaCh6c1t6ZV0pO2lmKHp0KWJyZWFrO319dD16 aTt9cmV0dXJuIHQ7fSxnZXRUZXh0OihmdW5jdGlvbigpe3ZhciBxPWRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLHI9cS50ZXh0Q29udGVudCE9bnVsbD8ndGV4 dENvbnRlbnQnOidpbm5lclRleHQnO3JldHVybiBmdW5jdGlvbihzKXtpZighcyl7 cmV0dXJuICcnO31lbHNlIGlmKGUuaXNUZXh0Tm9kZShzKSl7cmV0dXJuIHMuZGF0 YTt9ZWxzZSByZXR1cm4gc1tyXTt9O30pKCksZ2V0U2VsZWN0aW9uOmZ1bmN0aW9u KCl7dmFyIHI9d2luZG93LmdldFNlbGVjdGlvbixxPWRvY3VtZW50LnNlbGVjdGlv bjtpZihyKXtyZXR1cm4gcigpKycnO31lbHNlIGlmKHEpcmV0dXJuIHEuY3JlYXRl UmFuZ2UoKS50ZXh0O3JldHVybiBudWxsO30sY3JlYXRlOmZ1bmN0aW9uKHMscSxy KXtzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocyk7aWYocSl7cT1qKHt9LHEpO2lm KHEuc3R5bGUpe2oocy5zdHlsZSxxLnN0eWxlKTtkZWxldGUgcS5zdHlsZTt9Zm9y KHZhciB0IGluIHEpaWYodC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ29uJyk9PTAp e2lmKCEodHlwZW9mIHFbdF0hPSdmdW5jdGlvbicpKWlmKHdpbmRvdy5FdmVudCYm RXZlbnQubGlzdGVuKXtFdmVudC5saXN0ZW4ocyx0LnN1YnN0cigyKSxxW3RdKTt9 ZWxzZSBzW3RdPXFbdF07ZGVsZXRlIHFbdF07fWoocyxxKTt9aWYociE9dW5kZWZp bmVkKWUuc2V0Q29udGVudChzLHIpO3JldHVybiBzO30scHJlcGVuZENvbnRlbnQ6 ZnVuY3Rpb24ocyxyKXtpZighZS5pc05vZGUocykpdGhyb3cgbmV3IEVycm9yKCdE T00ucHJlcGVuZENvbnRlbnQ6IHJlZmVyZW5jZSBlbGVtZW50IGlzIG5vdCBhIG5v ZGUnKTt2YXIgcT1mdW5jdGlvbih0KXtpZihzLmZpcnN0Q2hpbGQpe3MuaW5zZXJ0 QmVmb3JlKHQscy5maXJzdENoaWxkKTt9ZWxzZSBzLmFwcGVuZENoaWxkKHQpO307 cmV0dXJuIGUuX2FkZENvbnRlbnQocixxLHMpO30saW5zZXJ0QWZ0ZXI6ZnVuY3Rp b24ocyxyKXtpZighZS5pc05vZGUocyl8fCFzLnBhcmVudE5vZGUpdGhyb3cgbmV3 IEVycm9yKCdET00uaW5zZXJ0QWZ0ZXI6IHJlZmVyZW5jZSBlbGVtZW50IGlzIG5v dCBhIG5vZGUnKTt2YXIgcT1mdW5jdGlvbih0KXtpZihzLm5leHRTaWJsaW5nKXtz LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQscy5uZXh0U2libGluZyk7fWVsc2Ug cy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHQpO307cmV0dXJuIGUuX2FkZENvbnRl bnQocixxLHMucGFyZW50Tm9kZSk7fSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24ocixz KXtpZighZS5pc05vZGUocyl8fCFzLnBhcmVudE5vZGUpdGhyb3cgbmV3IEVycm9y KCdET00uaW5zZXJ0QmVmb3JlOiByZWZlcmVuY2UgZWxlbWVudCBpcyBub3QgYSBu b2RlIG9yICcrJ2RvZXMgbm90IGhhdmUgYSBwYXJlbnQuJyk7dmFyIHE9ZnVuY3Rp b24odCl7cy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LHMpO307cmV0dXJuIGUu X2FkZENvbnRlbnQocixxLHMucGFyZW50Tm9kZSk7fSxzZXRDb250ZW50OmZ1bmN0 aW9uKHIscSl7aWYoIWUuaXNOb2RlKHIpKXRocm93IG5ldyBFcnJvcignRE9NLnNl dENvbnRlbnQ6IHJlZmVyZW5jZSBlbGVtZW50IGlzIG5vdCBhIG5vZGUnKTtlLmVt cHR5KHIpO3JldHVybiBlLmFwcGVuZENvbnRlbnQocixxKTt9LGFwcGVuZENvbnRl bnQ6ZnVuY3Rpb24ocyxyKXtpZighZS5pc05vZGUocykpdGhyb3cgbmV3IEVycm9y KCdET00uYXBwZW5kQ29udGVudDogcmVmZXJlbmNlIGVsZW1lbnQgaXMgbm90IGEg bm9kZScpO3ZhciBxPWZ1bmN0aW9uKHQpe3MuYXBwZW5kQ2hpbGQodCk7fTtyZXR1 cm4gZS5fYWRkQ29udGVudChyLHEscyk7fSxyZXBsYWNlOmZ1bmN0aW9uKHMscil7 aWYoIWUuaXNOb2RlKHMpfHwhcy5wYXJlbnROb2RlKXRocm93IG5ldyBFcnJvcign RE9NLnJlcGxhY2U6IHJlZmVyZW5jZSBlbGVtZW50IG11c3QgYmUgYSBub2RlIHdp dGggYScrJyBwYXJlbnQnKTt2YXIgcT1mdW5jdGlvbih0KXtzLnBhcmVudE5vZGUu cmVwbGFjZUNoaWxkKHQscyk7fTtyZXR1cm4gZS5fYWRkQ29udGVudChyLHEscy5w YXJlbnROb2RlKTt9LHJlbW92ZTpmdW5jdGlvbihxKXtxPWEocSk7aWYocS5wYXJl bnROb2RlKXEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChxKTt9LGVtcHR5OmZ1bmN0 aW9uKHEpe3E9YShxKTt3aGlsZShxLmZpcnN0Q2hpbGQpZS5yZW1vdmUocS5maXJz dENoaWxkKTt9LGNvbnRhaW5zOmZ1bmN0aW9uKHIscSl7cj1sKHIpO3E9bChxKTtp Zighcnx8IXEpe3JldHVybiBmYWxzZTt9ZWxzZSBpZihyPT09cSl7cmV0dXJuIHRy dWU7fWVsc2UgaWYoZS5pc1RleHROb2RlKHIpKXtyZXR1cm4gZmFsc2U7fWVsc2Ug aWYoZS5pc1RleHROb2RlKHEpKXtyZXR1cm4gZS5jb250YWlucyhyLHEucGFyZW50 Tm9kZSk7fWVsc2UgaWYoci5jb250YWlucyl7cmV0dXJuIHIuY29udGFpbnMocSk7 fWVsc2UgaWYoci5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbil7cmV0dXJuICEhKHIu Y29tcGFyZURvY3VtZW50UG9zaXRpb24ocSkmMTYpO31lbHNlIHJldHVybiBmYWxz ZTt9LGdldFJvb3RFbGVtZW50OmZ1bmN0aW9uKCl7dmFyIHE9bnVsbDtpZih3aW5k b3cuUXVpY2tsaW5nJiZRdWlja2xpbmcuaXNBY3RpdmUoKSlxPWwoJ2NvbnRlbnQn KTtyZXR1cm4gcXx8ZG9jdW1lbnQuYm9keTt9LGlzTm9kZTpmdW5jdGlvbihxKXty ZXR1cm4gISEocSYmKHR5cGVvZiBOb2RlPT0nb2JqZWN0Jz9xIGluc3RhbmNlb2Yg Tm9kZTp0eXBlb2YgcT09Im9iamVjdCImJnR5cGVvZiBxLm5vZGVUeXBlPT0nbnVt YmVyJyYmdHlwZW9mIHEubm9kZU5hbWU9PSdzdHJpbmcnKSk7fSxpc05vZGVPZlR5 cGU6ZnVuY3Rpb24ocixzKXt2YXIgdD1jLmNyZWF0ZUZyb20ocykuam9pbignfCcp LnRvVXBwZXJDYXNlKCkuc3BsaXQoJ3wnKTt2YXIgcT1nLmNyZWF0ZUZyb20odCk7 cmV0dXJuIGUuaXNOb2RlKHIpJiZyLm5vZGVOYW1lIGluIHE7fSxpc0VsZW1lbnRO b2RlOmZ1bmN0aW9uKHEpe3JldHVybiBlLmlzTm9kZShxKSYmcS5ub2RlVHlwZT09 MTt9LGlzVGV4dE5vZGU6ZnVuY3Rpb24ocSl7cmV0dXJuIGUuaXNOb2RlKHEpJiZx Lm5vZGVUeXBlPT0zO30sX2FkZENvbnRlbnQ6ZnVuY3Rpb24odCxxLHpjKXt0PWYu cmVwbGFjZUpTT05XcmFwcGVyKHQpO2lmKHQgaW5zdGFuY2VvZiBmJiYtMT09dC50 b1N0cmluZygpLmluZGV4T2YoJzxzY3InKydpcHQnKSYmJyc9PXpjLmlubmVySFRN TCl7dmFyIHc9dWEuaWUoKTtpZighd3x8KHc+NyYmIWUuaXNOb2RlT2ZUeXBlKHpj LFsndGFibGUnLCd0Ym9keScsJ3RoZWFkJywndGZvb3QnLCd0cicsJ3NlbGVjdCcs J2ZpZWxkc2V0J10pKSl7dmFyIHg9dz8iPGVtIHN0eWxlPVwiZGlzcGxheTpub25l O1wiPiZuYnNwOzwvZW0+IjoiIjt6Yy5pbm5lckhUTUw9eCt0O3cmJnpjLnJlbW92 ZUNoaWxkKHpjLmZpcnN0Q2hpbGQpO3JldHVybiBjLmNyZWF0ZUZyb20oemMuY2hp bGROb2Rlcyk7fX1lbHNlIGlmKGUuaXNUZXh0Tm9kZSh6Yykpe3pjLmRhdGE9dDty ZXR1cm4gW3RdO312YXIgeix1PVtdLHI9W107dmFyIHY9ZG9jdW1lbnQuY3JlYXRl RG9jdW1lbnRGcmFnbWVudCgpO2lmKCEodCBpbnN0YW5jZW9mIEFycmF5KSl0PVt0 XTtmb3IodmFyIHk9MDt5PHQubGVuZ3RoO3krKyl7ej1mLnJlcGxhY2VKU09OV3Jh cHBlcih0W3ldKTtpZih6IGluc3RhbmNlb2YgZil7ci5wdXNoKHouZ2V0QWN0aW9u KCkpO3ZhciB6Yj16LmdldE5vZGVzKCkscztmb3IodmFyIHphPTA7emE8emIubGVu Z3RoO3phKyspe3M9KHVhLnNhZmFyaSgpfHwodWEuaWUoKSYmei5pZUNsb25lQnVn KCkpKT96Ylt6YV06emJbemFdLmNsb25lTm9kZSh0cnVlKTt1LnB1c2gocyk7di5h cHBlbmRDaGlsZChzKTt9fWVsc2UgaWYoZy5pc1NjYWxhcih6KSl7dmFyIHpkPWRv Y3VtZW50LmNyZWF0ZVRleHROb2RlKHopO3UucHVzaCh6ZCk7di5hcHBlbmRDaGls ZCh6ZCk7fWVsc2UgaWYoZS5pc05vZGUoeikpe3UucHVzaCh6KTt2LmFwcGVuZENo aWxkKHopO31lbHNlIGlmKCEoeiBpbnN0YW5jZW9mIEFycmF5KSl6IT09bnVsbDt9 cSh2KTtmb3IodmFyIHk9MDt5PHIubGVuZ3RoO3krKylyW3ldKCk7cmV0dXJuIHU7 fSx0eDppKHApLF90eDppKGgpfTtmdW5jdGlvbiBiKHMscSxyKXtpZih0eXBlb2Yg cSE9J29iamVjdCd8fGUuaXNOb2RlKHEpfHxxIGluc3RhbmNlb2YgQXJyYXl8fGYu aXNIVE1MKHEpKXtyPXE7cT1udWxsO31yZXR1cm4gZS5jcmVhdGUocyxxLHIpO31t LiROPWUuJE49YjttLkRPTT1uLmV4cG9ydHM9ZTt9LDMpOwpfX2UoInVyaSIsWyJk b20iLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGUsZyxmLGQpe3ZhciBhPWco J2RvbScpO3ZhciBjPWcoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rpb24gYihoKXtp ZighKHRoaXMgaW5zdGFuY2VvZiBiKSlyZXR1cm4gbmV3IGIoaHx8d2luZG93Lmxv Y2F0aW9uLmhyZWYpO3RoaXMucGFyc2UoaHx8JycpO31jKGIse2dldFJlcXVlc3RV Ukk6ZnVuY3Rpb24oaCxpKXtoPWg9PT11bmRlZmluZWR8fGg7aWYoaCYmd2luZG93 LlBhZ2VUcmFuc2l0aW9ucyYmUGFnZVRyYW5zaXRpb25zLmlzSW5pdGlhbGl6ZWQo KSl7cmV0dXJuIFBhZ2VUcmFuc2l0aW9ucy5nZXRDdXJyZW50VVJJKCEhaSkuZ2V0 UXVhbGlmaWVkVVJJKCk7fWVsc2UgcmV0dXJuIG5ldyBiKHdpbmRvdy5sb2NhdGlv bi5ocmVmKTt9LGdldE1vc3RSZWNlbnRVUkk6ZnVuY3Rpb24oKXtpZih3aW5kb3cu UGFnZVRyYW5zaXRpb25zJiZQYWdlVHJhbnNpdGlvbnMuaXNJbml0aWFsaXplZCgp KXtyZXR1cm4gUGFnZVRyYW5zaXRpb25zLmdldE1vc3RSZWNlbnRVUkkoKS5nZXRR dWFsaWZpZWRVUkkoKTt9ZWxzZSByZXR1cm4gbmV3IGIod2luZG93LmxvY2F0aW9u LmhyZWYpO30sZ2V0TmV4dFVSSTpmdW5jdGlvbigpe2lmKHdpbmRvdy5QYWdlVHJh bnNpdGlvbnMmJlBhZ2VUcmFuc2l0aW9ucy5pc0luaXRpYWxpemVkKCkpe3JldHVy biBQYWdlVHJhbnNpdGlvbnMuZ2V0TmV4dFVSSSgpLmdldFF1YWxpZmllZFVSSSgp O31lbHNlIHJldHVybiBuZXcgYih3aW5kb3cubG9jYXRpb24uaHJlZik7fSxleHBy ZXNzaW9uOi8oKChcdyspOlwvXC8pKFteXC86XSopKDooXGQrKSk/KT8oW14jP10q KShcPyhbXiNdKikpPygjKC4qKSk/LyxhcnJheVF1ZXJ5RXhwcmVzc2lvbjovXihc dyspKCg/OlxbXHcqXF0pKyk9PyguKikvLGV4cGxvZGVRdWVyeTpmdW5jdGlvbihu KXtpZighbilyZXR1cm4ge307dmFyIG89e307bj1uLnJlcGxhY2UoLyU1Qi9pZywn WycpLnJlcGxhY2UoLyU1RC9pZywnXScpO249bi5zcGxpdCgnJicpO2Zvcih2YXIg aT0wLGs9bi5sZW5ndGg7aTxrO2krKyl7dmFyIGw9bltpXS5tYXRjaChiLmFycmF5 UXVlcnlFeHByZXNzaW9uKTtpZighbCl7dmFyIHE9bltpXS5zcGxpdCgnPScpO29b Yi5kZWNvZGVDb21wb25lbnQocVswXSldPXFbMV09PT11bmRlZmluZWQ/bnVsbDpi LmRlY29kZUNvbXBvbmVudChxWzFdKTt9ZWxzZXt2YXIgaj1sWzJdLnNwbGl0KC9c XVxbfFxbfFxdLykuc2xpY2UoMCwtMSk7dmFyIG09bFsxXTt2YXIgcj1iLmRlY29k ZUNvbXBvbmVudChsWzNdfHwnJyk7alswXT1tO3ZhciBwPW87Zm9yKHZhciBoPTA7 aDxqLmxlbmd0aC0xO2grKylpZihqW2hdKXtpZihwW2pbaF1dPT09dW5kZWZpbmVk KWlmKGpbaCsxXSYmIWpbaCsxXS5tYXRjaCgvXGQrJC8pKXtwW2pbaF1dPXt9O31l bHNlIHBbaltoXV09W107cD1wW2pbaF1dO31lbHNle2lmKGpbaCsxXSYmIWpbaCsx XS5tYXRjaCgvXGQrJC8pKXtwLnB1c2goe30pO31lbHNlIHAucHVzaChbXSk7cD1w W3AubGVuZ3RoLTFdO31pZihwIGluc3RhbmNlb2YgQXJyYXkmJmpbai5sZW5ndGgt MV09PScnKXtwLnB1c2gocik7fWVsc2UgcFtqW2oubGVuZ3RoLTFdXT1yO319cmV0 dXJuIG87fSxpbXBsb2RlUXVlcnk6ZnVuY3Rpb24obSxsLGgpe2w9bHx8Jyc7aWYo aD09PXVuZGVmaW5lZCloPXRydWU7dmFyIG49W107aWYobT09PW51bGx8fG09PT11 bmRlZmluZWQpe24ucHVzaChoP2IuZW5jb2RlQ29tcG9uZW50KGwpOmwpO31lbHNl IGlmKG0gaW5zdGFuY2VvZiBBcnJheSl7Zm9yKHZhciBqPTA7ajxtLmxlbmd0aDsr K2opdHJ5e2lmKG1bal0hPT11bmRlZmluZWQpbi5wdXNoKGIuaW1wbG9kZVF1ZXJ5 KG1bal0sbD8obCsnWycraisnXScpOmopKTt9Y2F0Y2goaSl7fX1lbHNlIGlmKHR5 cGVvZihtKT09J29iamVjdCcpe2lmKGEuaXNOb2RlKG0pKXtuLnB1c2goJ3tub2Rl fScpO31lbHNlIGZvcih2YXIgayBpbiBtKXRyeXtpZihtW2tdIT09dW5kZWZpbmVk KW4ucHVzaChiLmltcGxvZGVRdWVyeShtW2tdLGw/KGwrJ1snK2srJ10nKTprKSk7 fWNhdGNoKGkpe319ZWxzZSBpZihoKXtuLnB1c2goYi5lbmNvZGVDb21wb25lbnQo bCkrJz0nK2IuZW5jb2RlQ29tcG9uZW50KG0pKTt9ZWxzZSBuLnB1c2gobCsnPScr bSk7cmV0dXJuIG4uam9pbignJicpO30sZW5jb2RlQ29tcG9uZW50OmZ1bmN0aW9u KGspe3ZhciBqPVN0cmluZyhrKS5zcGxpdCgvKFtcW1xdXSkvKTtmb3IodmFyIGg9 MCxpPWoubGVuZ3RoO2g8aTtoKz0yKWpbaF09ZW5jb2RlVVJJQ29tcG9uZW50KGpb aF0pO3JldHVybiBqLmpvaW4oJycpO30sZGVjb2RlQ29tcG9uZW50OmZ1bmN0aW9u KGgpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoaC5yZXBsYWNlKC9cKy9nLCcg JykpO30sSU5WQUxJRF9ET01BSU46J2ludmFsaWQuaW52YWxpZCcsc2FuaXRpemVE b21haW46ZnVuY3Rpb24oaCl7dmFyIGk9bmV3IFJlZ0V4cCgnW1xceDAwLVxceDJj XFx4MmZcXHgzYi1cXHg0MFxceDVjXFx4NWVcXHg2MFxceDdiLVxceDdmJysnXFx1 RkREMC1cXHVGREVGXFx1RkZGMC1cXHVGRkZGJysnXFx1MjA0N1xcdTIwNDhcXHVG RTU2XFx1RkU1RlxcdUZGMDNcXHVGRjBGXFx1RkYxRl0nKTtpZihpLnRlc3QoaCkp e3JldHVybiBiLklOVkFMSURfRE9NQUlOO31lbHNlIHJldHVybiBoO319KTtjKGIu cHJvdG90eXBlLHtwYXJzZTpmdW5jdGlvbihpKXt2YXIgaD1pLnRvU3RyaW5nKCku bWF0Y2goYi5leHByZXNzaW9uKTtjKHRoaXMse3Byb3RvY29sOmhbM118fCcnLGRv bWFpbjpiLnNhbml0aXplRG9tYWluKGhbNF18fCcnKSxwb3J0OmhbNl18fCcnLHBh dGg6aFs3XXx8JycscXVlcnlfczpoWzldfHwnJyxmcmFnbWVudDpoWzExXXx8Jyd9 KTtyZXR1cm4gdGhpczt9LHNldFByb3RvY29sOmZ1bmN0aW9uKGgpe3RoaXMucHJv dG9jb2w9aDtyZXR1cm4gdGhpczt9LGdldFByb3RvY29sOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMucHJvdG9jb2w7fSxzZXRRdWVyeURhdGE6ZnVuY3Rpb24oaCl7dGhp cy5xdWVyeV9zPWIuaW1wbG9kZVF1ZXJ5KGgpO3JldHVybiB0aGlzO30sYWRkUXVl cnlEYXRhOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnNldFF1ZXJ5RGF0YShjKHRo aXMuZ2V0UXVlcnlEYXRhKCksaCkpO30scmVtb3ZlUXVlcnlEYXRhOmZ1bmN0aW9u KGkpe2lmKCEoaSBpbnN0YW5jZW9mIEFycmF5KSlpPVtpXTt2YXIgaz10aGlzLmdl dFF1ZXJ5RGF0YSgpO2Zvcih2YXIgaD0wLGo9aS5sZW5ndGg7aDxqOysraClkZWxl dGUga1tpW2hdXTtyZXR1cm4gdGhpcy5zZXRRdWVyeURhdGEoayk7fSxnZXRRdWVy eURhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gYi5leHBsb2RlUXVlcnkodGhpcy5xdWVy eV9zKTt9LHNldEZyYWdtZW50OmZ1bmN0aW9uKGgpe3RoaXMuZnJhZ21lbnQ9aDty ZXR1cm4gdGhpczt9LGdldEZyYWdtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu ZnJhZ21lbnQ7fSxzZXREb21haW46ZnVuY3Rpb24oaCl7dGhpcy5kb21haW49Yi5z YW5pdGl6ZURvbWFpbihoKTtyZXR1cm4gdGhpczt9LGdldERvbWFpbjpmdW5jdGlv bigpe3JldHVybiB0aGlzLmRvbWFpbjt9LHNldFBvcnQ6ZnVuY3Rpb24oaCl7dGhp cy5wb3J0PWg7cmV0dXJuIHRoaXM7fSxnZXRQb3J0OmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMucG9ydDt9LHNldFBhdGg6ZnVuY3Rpb24oaCl7dGhpcy5wYXRoPWg7cmV0 dXJuIHRoaXM7fSxnZXRQYXRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGF0aC5y ZXBsYWNlKC9eXC8rLywnLycpO30saXNFbXB0eTpmdW5jdGlvbigpe3JldHVybiAh KHRoaXMucGF0aHx8dGhpcy5wcm90b2NvbHx8dGhpcy5kb21haW58fHRoaXMucG9y dHx8dGhpcy5xdWVyeV9zfHx0aGlzLmZyYWdtZW50KTt9LHRvU3RyaW5nOmZ1bmN0 aW9uKCl7dmFyIGg9Jyc7dGhpcy5wcm90b2NvbCYmKGgrPXRoaXMucHJvdG9jb2wr JzovLycpO3RoaXMuZG9tYWluJiYoaCs9dGhpcy5kb21haW4pO3RoaXMucG9ydCYm KGgrPSc6Jyt0aGlzLnBvcnQpO2lmKHRoaXMuZG9tYWluJiYhdGhpcy5wYXRoKWgr PScvJzt0aGlzLnBhdGgmJihoKz10aGlzLnBhdGgpO3RoaXMucXVlcnlfcyYmKGgr PSc/Jyt0aGlzLnF1ZXJ5X3MpO3RoaXMuZnJhZ21lbnQmJihoKz0nIycrdGhpcy5m cmFnbWVudCk7cmV0dXJuIGg7fSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMudG9TdHJpbmcoKTt9LGlzRmFjZWJvb2tVUkk6ZnVuY3Rpb24oKXtpZighYi5f ZmFjZWJvb2tVUklSZWdleCliLl9mYWNlYm9va1VSSVJlZ2V4PW5ldyBSZWdFeHAo JyhefFxcLilmYWNlYm9va1xcLmNvbShbXi5dKikkJywnaScpO3JldHVybiAoIXRo aXMuZG9tYWlufHxiLl9mYWNlYm9va1VSSVJlZ2V4LnRlc3QodGhpcy5kb21haW4p KTt9LGlzUXVpY2tsaW5nRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiB3aW5kb3cu UXVpY2tsaW5nJiZRdWlja2xpbmcuaXNBY3RpdmUoKSYmUXVpY2tsaW5nLmlzUGFn ZUFjdGl2ZSh0aGlzKTt9LGdldFJlZ2lzdGVyZWREb21haW46ZnVuY3Rpb24oKXtp ZighdGhpcy5kb21haW4pcmV0dXJuICcnO2lmKCF0aGlzLmlzRmFjZWJvb2tVUkko KSlyZXR1cm4gbnVsbDt2YXIgaT10aGlzLmRvbWFpbi5zcGxpdCgnLicpO3ZhciBo PWkuaW5kZXhPZignZmFjZWJvb2snKTtyZXR1cm4gaS5zbGljZShoKS5qb2luKCcu Jyk7fSxnZXRVbnF1YWxpZmllZFVSSTpmdW5jdGlvbigpe3JldHVybiBuZXcgYih0 aGlzKS5zZXRQcm90b2NvbChudWxsKS5zZXREb21haW4obnVsbCkuc2V0UG9ydChu dWxsKTt9LGdldFF1YWxpZmllZFVSSTpmdW5jdGlvbigpe3ZhciBpPW5ldyBiKHRo aXMpO2lmKCFpLmdldERvbWFpbigpKXt2YXIgaD1iKCk7aS5zZXRQcm90b2NvbCho LmdldFByb3RvY29sKCkpLnNldERvbWFpbihoLmdldERvbWFpbigpKS5zZXRQb3J0 KGguZ2V0UG9ydCgpKTt9cmV0dXJuIGk7fSxpc1NhbWVPcmlnaW46ZnVuY3Rpb24o aCl7dmFyIGk9aHx8d2luZG93LmxvY2F0aW9uLmhyZWY7aWYoIShpIGluc3RhbmNl b2YgYikpaT1uZXcgYihpLnRvU3RyaW5nKCkpO2lmKHRoaXMuZ2V0UHJvdG9jb2wo KSYmdGhpcy5nZXRQcm90b2NvbCgpIT1pLmdldFByb3RvY29sKCkpcmV0dXJuIGZh bHNlO2lmKHRoaXMuZ2V0RG9tYWluKCkmJnRoaXMuZ2V0RG9tYWluKCkhPWkuZ2V0 RG9tYWluKCkpcmV0dXJuIGZhbHNlO3JldHVybiB0cnVlO30sZ286ZnVuY3Rpb24o aCl7Z29VUkkodGhpcyxoKTt9LHNldFN1YmRvbWFpbjpmdW5jdGlvbihpKXt2YXIg aj1uZXcgYih0aGlzKS5nZXRRdWFsaWZpZWRVUkkoKTt2YXIgaD1qLmdldERvbWFp bigpLnNwbGl0KCcuJyk7aWYoaC5sZW5ndGg8PTIpe2gudW5zaGlmdChpKTt9ZWxz ZSBoWzBdPWk7cmV0dXJuIGouc2V0RG9tYWluKGguam9pbignLicpKTt9LGdldFN1 YmRvbWFpbjpmdW5jdGlvbigpe2lmKCF0aGlzLmdldERvbWFpbigpKXJldHVybiAn Jzt2YXIgaD10aGlzLmdldERvbWFpbigpLnNwbGl0KCcuJyk7aWYoaC5sZW5ndGg8 PTIpe3JldHVybiAnJzt9ZWxzZSByZXR1cm4gaFswXTt9LHNldFNlY3VyZTpmdW5j dGlvbihoKXtyZXR1cm4gdGhpcy5zZXRQcm90b2NvbChoPydodHRwcyc6J2h0dHAn KTt9LGlzU2VjdXJlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UHJvdG9jb2wo KT09J2h0dHBzJzt9fSk7ZS5VUkk9Zi5leHBvcnRzPWI7fSwzKTsKX19lKCJBc3lu Y1JlcXVlc3QiLFsiYXJyYXktZXh0ZW5zaW9ucyIsImpzb24iLCJBc3luY1Jlc3Bv bnNlIiwiYm9vdGxvYWRlciIsImNvb2tpZSIsImNzcy1jb3JlIiwiZG9tIiwiRW52 IiwiSlNDQyIsInBhcmVudCIsInVyaSIsInV0aWwiLCJiaW5kIiwiY29weVByb3Bl cnRpZXMiLCJnb1VSSSIsImludm9rZUNhbGxiYWNrcyIsImlzRW1wdHkiLCJldmFs LWdsb2JhbCJdLGZ1bmN0aW9uKGdsb2JhbCxyZXF1aXJlLG1vZHVsZSxleHBvcnRz KXtyZXF1aXJlKCJhcnJheS1leHRlbnNpb25zIik7cmVxdWlyZSgianNvbiIpO3Zh ciBBc3luY1Jlc3BvbnNlPXJlcXVpcmUoIkFzeW5jUmVzcG9uc2UiKTt2YXIgQm9v dGxvYWRlcj1yZXF1aXJlKCJib290bG9hZGVyIik7dmFyIENvb2tpZT1yZXF1aXJl KCJjb29raWUiKTt2YXIgQ1NTPXJlcXVpcmUoImNzcy1jb3JlIik7dmFyIERPTT1y ZXF1aXJlKCJkb20iKTt2YXIgRW52PXJlcXVpcmUoIkVudiIpO3ZhciBKU0NDPXJl cXVpcmUoIkpTQ0MiKTt2YXIgUGFyZW50PXJlcXVpcmUoInBhcmVudCIpO3ZhciBV Ukk9cmVxdWlyZSgidXJpIik7dmFyIFV0aWw9cmVxdWlyZSgidXRpbCIpO3ZhciBi aW5kPXJlcXVpcmUoImJpbmQiKTt2YXIgY29weVByb3BlcnRpZXM9cmVxdWlyZSgi Y29weVByb3BlcnRpZXMiKTt2YXIgZ29VUkk9cmVxdWlyZSgiZ29VUkkiKTt2YXIg aW52b2tlQ2FsbGJhY2tzPXJlcXVpcmUoImludm9rZUNhbGxiYWNrcyIpO3ZhciBp c0VtcHR5PXJlcXVpcmUoImlzRW1wdHkiKTtmdW5jdGlvbiBBc3luY1JlcXVlc3Qo dXJpKXt2YXIgZGlzcGF0Y2hSZXNwb25zZT1iaW5kKHRoaXMsZnVuY3Rpb24oYXN5 bmNSZXNwb25zZSl7dHJ5e3RoaXMuY2xlYXJTdGF0dXNJbmRpY2F0b3IoKTtpZigh dGhpcy5pc1JlbGV2YW50KCkpe2ludm9rZUVycm9ySGFuZGxlcigxMDEwKTtyZXR1 cm47fWlmKHRoaXMuaW5pdGlhbEhhbmRsZXIoYXN5bmNSZXNwb25zZSkhPT1mYWxz ZSl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO2FzeW5jUmVzcG9uc2UuanNjYyYm aW52b2tlQ2FsbGJhY2tzKFthc3luY1Jlc3BvbnNlLmpzY2NdKTtpZihhc3luY1Jl c3BvbnNlLmpzY2NfbWFwKXt2YXIganNjY19tYXA9ZXZhbChhc3luY1Jlc3BvbnNl LmpzY2NfbWFwKTtKU0NDLmluaXQoanNjY19tYXApO31pZih0aGlzLmhhbmRsZXIp dHJ5e3ZhciBzdXBwcmVzc19vbmxvYWQ9dGhpcy5oYW5kbGVyKGFzeW5jUmVzcG9u c2UpO31jYXRjaChleGNlcHRpb24pe2FzeW5jUmVzcG9uc2UuaXNfbGFzdCYmdGhp cy5maW5hbGx5SGFuZGxlcihhc3luY1Jlc3BvbnNlKTt0aHJvdyBleGNlcHRpb247 fWlmKHN1cHByZXNzX29ubG9hZCE9PUFzeW5jUmVxdWVzdC5zdXBwcmVzc09ubG9h ZFRva2VuKXt2YXIgb25sb2FkPWFzeW5jUmVzcG9uc2Uub25sb2FkO2lmKG9ubG9h ZClmb3IodmFyIGlpPTA7aWk8b25sb2FkLmxlbmd0aDtpaSsrKXRyeXsobmV3IEZ1 bmN0aW9uKG9ubG9hZFtpaV0pKS5hcHBseSh0aGlzKTt9Y2F0Y2goZXhjZXB0aW9u KXt9aWYodGhpcy5saWQpQXJiaXRlci5pbmZvcm0oJ3R0aV9hamF4Jyx7czp0aGlz LmxpZCxkOlt0aGlzLl9zZW5kVGltZVN0YW1wfHwwLCh0aGlzLl9zZW5kVGltZVN0 YW1wJiZ0aGlzLl9yZXNwb25zZVRpbWUpPyh0aGlzLl9yZXNwb25zZVRpbWUtdGhp cy5fc2VuZFRpbWVTdGFtcCk6MF19LEFyYml0ZXIuQkVIQVZJT1JfRVZFTlQpO3Zh ciBvbmFmdGVybG9hZD1hc3luY1Jlc3BvbnNlLm9uYWZ0ZXJsb2FkO2lmKG9uYWZ0 ZXJsb2FkKWZvcih2YXIgaWk9MDtpaTxvbmFmdGVybG9hZC5sZW5ndGg7aWkrKyl0 cnl7KG5ldyBGdW5jdGlvbihvbmFmdGVybG9hZFtpaV0pKS5hcHBseSh0aGlzKTt9 Y2F0Y2goZXhjZXB0aW9uKXt9fWFzeW5jUmVzcG9uc2UuaXNfbGFzdCYmdGhpcy5m aW5hbGx5SGFuZGxlcihhc3luY1Jlc3BvbnNlKTt9fWNhdGNoKGV4Y2VwdGlvbil7 fX0pO3ZhciBkaXNwYXRjaEVycm9yUmVzcG9uc2U9YmluZCh0aGlzLGZ1bmN0aW9u KGFzeW5jUmVzcG9uc2UsaXNUcmFuc3BvcnQpe3RyeXt0aGlzLmNsZWFyU3RhdHVz SW5kaWNhdG9yKCk7dmFyIGFzeW5jX2Vycm9yPWFzeW5jUmVzcG9uc2UuZ2V0RXJy b3IoKTtpZih0aGlzLl9zZW5kVGltZVN0YW1wKXt2YXIgX2R1cmF0aW9uPURhdGUu bm93KCktdGhpcy5fc2VuZFRpbWVTdGFtcDt2YXIgeGZiX2lwPXRoaXMuX3hGYlNl cnZlcnx8Jy0nO2FzeW5jUmVzcG9uc2UubG9nRXJyb3IoJ2FzeW5jX2Vycm9yJyx7 ZHVyYXRpb246X2R1cmF0aW9uLHhmYl9pcDp4ZmJfaXB9KTt9ZWxzZSBhc3luY1Jl c3BvbnNlLmxvZ0Vycm9yKCdhc3luY19lcnJvcicpO2lmKCghdGhpcy5pc1JlbGV2 YW50KCkpfHxhc3luY19lcnJvcj09PTEwMTApcmV0dXJuO2lmKGFzeW5jX2Vycm9y PT0xMzU3MDA4fHxhc3luY19lcnJvcj09MTM1NzAwN3x8YXN5bmNfZXJyb3I9PTE0 NDIwMDJ8fGFzeW5jX2Vycm9yPT0xMzU3MDAxKXt2YXIgaXNfY29uZmlybWF0aW9u PWZhbHNlO2lmKGFzeW5jX2Vycm9yPT0xMzU3MDA4fHxhc3luY19lcnJvcj09MTM1 NzAwNylpc19jb25maXJtYXRpb249dHJ1ZTt2YXIgcGF5bG9hZD1hc3luY1Jlc3Bv bnNlLmdldFBheWxvYWQoKTt0aGlzLl9kaXNwbGF5U2VydmVyRGlhbG9nKHBheWxv YWQuX19kaWFsb2csaXNfY29uZmlybWF0aW9uKTt9ZWxzZSBpZih0aGlzLmluaXRp YWxIYW5kbGVyKGFzeW5jUmVzcG9uc2UpIT09ZmFsc2Upe2NsZWFyVGltZW91dCh0 aGlzLnRpbWVyKTt0cnl7aWYoaXNUcmFuc3BvcnQpe3RoaXMudHJhbnNwb3J0RXJy b3JIYW5kbGVyKGFzeW5jUmVzcG9uc2UpO31lbHNlIHRoaXMuZXJyb3JIYW5kbGVy KGFzeW5jUmVzcG9uc2UpO31jYXRjaChleGNlcHRpb24pe3RoaXMuZmluYWxseUhh bmRsZXIoYXN5bmNSZXNwb25zZSk7dGhyb3cgZXhjZXB0aW9uO310aGlzLmZpbmFs bHlIYW5kbGVyKGFzeW5jUmVzcG9uc2UpO319Y2F0Y2goZXhjZXB0aW9uKXt9fSk7 dmFyIF9pbnRlcnByZXRUcmFuc3BvcnRSZXNwb25zZT1iaW5kKHRoaXMsZnVuY3Rp b24oKXtpZih0aGlzLmdldE9wdGlvbignc3VwcHJlc3NFdmFsdWF0aW9uJykpe3Zh ciByPW5ldyBBc3luY1Jlc3BvbnNlKHRoaXMsdGhpcy50cmFuc3BvcnQpO3JldHVy biB7YXN5bmNSZXNwb25zZTpyfTt9dmFyIF9zZW5kRXJyb3I9ZnVuY3Rpb24ocCxl cnJvcl9jb2RlLHN0cil7aWYoIXdpbmRvdy5zZW5kX2Vycm9yX3NpZ25hbClyZXR1 cm47aWYodGhpcy5feEZiU2VydmVyKXtlcnJvcl9jb2RlPScxMDA4XycrZXJyb3Jf Y29kZTt9ZWxzZSBlcnJvcl9jb2RlPScxMDEyXycrZXJyb3JfY29kZTtzZW5kX2Vy cm9yX3NpZ25hbCgnYXN5bmNfeHBvcnRfcmVzcCcsZXJyb3JfY29kZSsnOicrKHRo aXMuX3hGYlNlcnZlcnx8Jy0nKSsnOicrcC5nZXRVUkkoKSsnOicrc3RyLmxlbmd0 aCsnOicrc3RyLnN1YnN0cigwLDE2MDApKTt9O3ZhciBzaGllbGQ9ImZvciAoOzsp OyI7dmFyIHNoaWVsZGxlbj1zaGllbGQubGVuZ3RoO3ZhciB0ZXh0PXRoaXMudHJh bnNwb3J0LnJlc3BvbnNlVGV4dDtpZih0ZXh0Lmxlbmd0aDw9c2hpZWxkbGVuKXtf c2VuZEVycm9yKHRoaXMsJ2VtcHR5Jyx0ZXh0KTtyZXR1cm4ge3RyYW5zcG9ydEVy cm9yOidSZXNwb25zZSB0b28gc2hvcnQgb24gYXN5bmMgdG8gJyt0aGlzLmdldFVS SSgpfTt9dmFyIG9mZnNldD0wO3doaWxlKHRleHQuY2hhckF0KG9mZnNldCk9PSIg Inx8dGV4dC5jaGFyQXQob2Zmc2V0KT09IlxuIilvZmZzZXQrKztvZmZzZXQmJnRl eHQuc3Vic3RyaW5nKG9mZnNldCxvZmZzZXQrc2hpZWxkbGVuKT09c2hpZWxkO3Zh ciBzYWZlUmVzcG9uc2U9dGV4dC5zdWJzdHJpbmcob2Zmc2V0K3NoaWVsZGxlbik7 dHJ5e3ZhciByZXNwb25zZT1ldmFsKCcoJytzYWZlUmVzcG9uc2UrJyknKTt9Y2F0 Y2goZXhjZXB0aW9uKXtfc2VuZEVycm9yKHRoaXMsJ2V4Y2VwJyx0ZXh0KTtyZXR1 cm4ge3RyYW5zcG9ydEVycm9yOidldmFsKCkgZmFpbGVkIG9uIGFzeW5jIHRvICcr dGhpcy5nZXRVUkkoKX07fXJldHVybiBpbnRlcnByZXRSZXNwb25zZShyZXNwb25z ZSk7fSk7dmFyIGludGVycHJldFJlc3BvbnNlPWJpbmQodGhpcyxmdW5jdGlvbihy ZXNwb25zZSl7aWYocmVzcG9uc2UucmVkaXJlY3QpcmV0dXJuIHtyZWRpcmVjdDpy ZXNwb25zZS5yZWRpcmVjdH07dmFyIHI9bmV3IEFzeW5jUmVzcG9uc2UodGhpcyk7 aWYocmVzcG9uc2UuX19hciE9MSl7ci5wYXlsb2FkPXJlc3BvbnNlO31lbHNle2Nv cHlQcm9wZXJ0aWVzKHIscmVzcG9uc2UpO2lmKHJlc3BvbnNlLnRwbHRzKWlmKHdp bmRvdy5EeW5hVGVtcGxhdGUpRHluYVRlbXBsYXRlLnJlZ2lzdGVyVGVtcGxhdGVz KHJlc3BvbnNlLnRwbHRzKTt9cmV0dXJuIHthc3luY1Jlc3BvbnNlOnJ9O30pO3Zh ciBpbnZva2VSZXNwb25zZUhhbmRsZXI9YmluZCh0aGlzLGZ1bmN0aW9uKGludGVy cCl7aWYodHlwZW9mKGludGVycC5yZWRpcmVjdCkhPSd1bmRlZmluZWQnKXsoZnVu Y3Rpb24oKXt0aGlzLnNldFVSSShpbnRlcnAucmVkaXJlY3QpLnNlbmQoKTt9KS5i aW5kKHRoaXMpLmRlZmVyKCk7cmV0dXJuO31pZih0aGlzLmhhbmRsZXJ8fHRoaXMu ZXJyb3JIYW5kbGVyfHx0aGlzLnRyYW5zcG9ydEVycm9ySGFuZGxlcilpZih0eXBl b2YoaW50ZXJwLmFzeW5jUmVzcG9uc2UpIT0ndW5kZWZpbmVkJyl7dmFyIHI9aW50 ZXJwLmFzeW5jUmVzcG9uc2U7aWYoIXRoaXMuaXNSZWxldmFudCgpKXtpbnZva2VF cnJvckhhbmRsZXIoMTAxMCk7cmV0dXJuO31pZihyLmlubGluZWpzKXt2YXIgZXZh bF9nbG9iYWw9cmVxdWlyZSgiZXZhbC1nbG9iYWwiKS5ldmFsX2dsb2JhbDtldmFs X2dsb2JhbChyLmlubGluZWpzKTt9aWYoci5saWQpe3RoaXMuX3Jlc3BvbnNlVGlt ZT1EYXRlLm5vdygpO2lmKHdpbmRvdy5DYXZhbHJ5TG9nZ2VyKXRoaXMuY2F2YWxy eT1DYXZhbHJ5TG9nZ2VyLmdldEluc3RhbmNlKHIubGlkKTt0aGlzLmxpZD1yLmxp ZDt9aWYoci5nZXRFcnJvcigpJiYhci5nZXRFcnJvcklzV2FybmluZygpKXt2YXIg Zm49ZGlzcGF0Y2hFcnJvclJlc3BvbnNlO31lbHNlIHZhciBmbj1kaXNwYXRjaFJl c3BvbnNlO0Jvb3Rsb2FkZXIuc2V0UmVzb3VyY2VNYXAoci5yZXNvdXJjZV9tYXAp O2lmKHIuYm9vdGxvYWRhYmxlKUJvb3Rsb2FkZXIuZW5hYmxlQm9vdGxvYWQoci5i b290bG9hZGFibGUpO2ZuPWZuLnNoaWVsZChudWxsLHIpO2ZuPWZuLmRlZmVyLmJp bmQoZm4pO3ZhciBpc190cmFuc2l0aW9uYWw9ZmFsc2U7aWYodGhpcy5wcmVCb290 bG9hZEhhbmRsZXIpaXNfdHJhbnNpdGlvbmFsPXRoaXMucHJlQm9vdGxvYWRIYW5k bGVyKHIpO3IuY3NzPXIuY3NzfHxbXTtyLmpzPXIuanN8fFtdO0Jvb3Rsb2FkZXIu bG9hZFJlc291cmNlcyhyLmNzcy5jb25jYXQoci5qcyksZm4saXNfdHJhbnNpdGlv bmFsLHRoaXMuZ2V0VVJJKCkpO31lbHNlIGlmKHR5cGVvZihpbnRlcnAudHJhbnNw b3J0RXJyb3IpIT0ndW5kZWZpbmVkJyl7aWYodGhpcy5feEZiU2VydmVyKXtpbnZv a2VFcnJvckhhbmRsZXIoMTAwOCk7fWVsc2UgaW52b2tlRXJyb3JIYW5kbGVyKDEw MTIpO31lbHNlIGludm9rZUVycm9ySGFuZGxlcigxMDA3KTt9KTt2YXIgaW52b2tl RXJyb3JIYW5kbGVyPWJpbmQodGhpcyxmdW5jdGlvbihleHBsaWNpdEVycm9yKXt0 cnl7aWYoIXdpbmRvdy5sb2FkZWQmJiF0aGlzLmdldE9wdGlvbignaGFuZGxlRXJy b3JBZnRlclVubG9hZCcpKXJldHVybjt9Y2F0Y2goZXgpe3JldHVybjt9dmFyIHI9 bmV3IEFzeW5jUmVzcG9uc2UodGhpcyk7dmFyIGVycjt0cnl7ZXJyPWV4cGxpY2l0 RXJyb3J8fHRoaXMudHJhbnNwb3J0LnN0YXR1c3x8MTAwNDt9Y2F0Y2goZXgpe2Vy cj0xMDA1O31pZih0aGlzLl9yZXF1ZXN0QWJvcnRlZCllcnI9MTAxMTt0cnl7aWYo dGhpcy5yZXNwb25zZVRleHQ9PScnKWVycj0xMDAyO31jYXRjaChpZ25vcmUpe31p Zih0aGlzLnRyYW5zcG9ydEVycm9ySGFuZGxlcil7dmFyIGRlc2Msc3VtbWFyeTt2 YXIgc2lsZW50PXRydWU7aWYoZmFsc2U9PT1uYXZpZ2F0b3Iub25MaW5lKXtzdW1t YXJ5PSJBXHUwMTFmIGJhXHUwMTFmbGFudFx1MDEzMXNcdTAxMzEgeW9rIjtkZXNj PSJUYXJheVx1MDEzMWNcdTAxMzFuXHUwMTMxeiBcdTAwZTdldnJpbWRcdTAxMzFc dTAxNWZcdTAxMzEgZ1x1MDBmNnJcdTAwZmNuXHUwMGZjeW9yLiBMXHUwMGZjdGZl biBpbnRlcm5ldCBiYVx1MDExZmxhbnRcdTAxMzFuXHUwMTMxelx1MDEzMSBrb250 cm9sIGVkaXAgdGVrcmFyIGRlbmV5aW5pei4iO2Vycj0xMDA2O31lbHNlIGlmKGVy cj49MzAwJiZlcnI8PTM5OSl7c3VtbWFyeT0iWVx1MDBmNm5sZW5kaXJtZSI7ZGVz Yz0iRmFjZWJvb2snYSBlcmlcdTAxNWZpbWluIFx1MDBmY1x1MDBlN1x1MDBmY25j XHUwMGZjIFx1MDE1ZmFoXHUwMTMxc2xhciB0YXJhZlx1MDEzMW5kYW4gYmFcdTAx NWZrYSB5ZXJlIHlcdTAwZjZubGVuZGlyaWxkaSB2ZXlhIGVuZ2VsbGVuZGkuIExc dTAwZmN0ZmVuIGludGVybmV0IHNlcnZpcyBzYVx1MDExZmxheVx1MDEzMWNcdTAx MzFubGEgaWxldGlcdTAxNWZpbWUgZ2VcdTAwZTcgdmV5YSBzYXlmYXlcdTAxMzEg eWVuaWxlLiI7cmVkaXJfdXJsPXRoaXMudHJhbnNwb3J0LmdldFJlc3BvbnNlSGVh ZGVyKCJMb2NhdGlvbiIpO2lmKHJlZGlyX3VybClnb1VSSShyZWRpcl91cmwsdHJ1 ZSk7c2lsZW50PXRydWU7fWVsc2V7c3VtbWFyeT0iSGF5IEFrc2kiO2Rlc2M9IkJp ciBzb3J1biBvbHVcdTAxNWZ0dS4gQnVudSBlbiBrXHUwMTMxc2Egc1x1MDBmY3Jl ZGUgZFx1MDBmY3plbHRtZXllIFx1MDBlN2FsXHUwMTMxXHUwMTVmXHUwMTMxeW9y dXouIFRla3JhciBkZW5leWViaWxpcnNpbi4iO30hdGhpcy5nZXRPcHRpb24oJ3N1 cHByZXNzRXJyb3JBbGVydHMnKTtjb3B5UHJvcGVydGllcyhyLHtlcnJvcjplcnIs ZXJyb3JTdW1tYXJ5OnN1bW1hcnksZXJyb3JEZXNjcmlwdGlvbjpkZXNjLHNpbGVu dEVycm9yOnNpbGVudH0pO2Rpc3BhdGNoRXJyb3JSZXNwb25zZShyLHRydWUpO319 KTt2YXIgaGFuZGxlUmVzcG9uc2U9ZnVuY3Rpb24ocmVzcG9uc2Upe3ZhciBhc3lu Y1Jlc3BvbnNlPXRoaXMuaW50ZXJwcmV0UmVzcG9uc2UocmVzcG9uc2UpO3RoaXMu aW52b2tlUmVzcG9uc2VIYW5kbGVyKGFzeW5jUmVzcG9uc2UpO307dmFyIG9uU3Rh dGVDaGFuZ2U9ZnVuY3Rpb24oKXt0cnl7aWYodGhpcy50cmFuc3BvcnQucmVhZHlT dGF0ZT09NCl7QXN5bmNSZXF1ZXN0Ll9pbmZsaWdodFB1cmdlKCk7dHJ5e2lmKHR5 cGVvZih0aGlzLnRyYW5zcG9ydC5nZXRSZXNwb25zZUhlYWRlcikhPSd1bmRlZmlu ZWQnJiZ0aGlzLnRyYW5zcG9ydC5nZXRSZXNwb25zZUhlYWRlcignWC1GQi1TZXJ2 ZXInKSl0aGlzLl94RmJTZXJ2ZXI9dGhpcy50cmFuc3BvcnQuZ2V0UmVzcG9uc2VI ZWFkZXIoJ1gtRkItU2VydmVyJyk7fWNhdGNoKGV4KXt9aWYodGhpcy50cmFuc3Bv cnQuc3RhdHVzPj0yMDAmJnRoaXMudHJhbnNwb3J0LnN0YXR1czwzMDApe2ludm9r ZVJlc3BvbnNlSGFuZGxlcihfaW50ZXJwcmV0VHJhbnNwb3J0UmVzcG9uc2UoKSk7 fWVsc2UgaWYodWEuc2FmYXJpKCkmJih0eXBlb2YodGhpcy50cmFuc3BvcnQuc3Rh dHVzKT09J3VuZGVmaW5lZCcpKXtpbnZva2VFcnJvckhhbmRsZXIoMTAwMik7fWVs c2UgaWYod2luZG93LkVudiYmd2luZG93LkVudi5yZXRyeV9hamF4X29uX25ldHdv cmtfZXJyb3ImJnRoaXMudHJhbnNwb3J0LnN0YXR1cyBpbiB7MDoxLDEyMDI5OjEs MTIwMzA6MSwxMjAzMToxLDEyMTUyOjF9JiZ0aGlzLnJlbWFpbmluZ1JldHJpZXM+ MCl7LS10aGlzLnJlbWFpbmluZ1JldHJpZXM7ZGVsZXRlIHRoaXMudHJhbnNwb3J0 O3RoaXMuc2VuZCh0cnVlKTtyZXR1cm47fWVsc2UgaW52b2tlRXJyb3JIYW5kbGVy KCk7aWYodGhpcy5nZXRPcHRpb24oJ2FzeW5jaHJvbm91cycpIT09ZmFsc2UpZGVs ZXRlIHRoaXMudHJhbnNwb3J0O319Y2F0Y2goZXhjZXB0aW9uKXt0cnl7aWYoIXdp bmRvdy5sb2FkZWQpcmV0dXJuO31jYXRjaChleCl7cmV0dXJuO31kZWxldGUgdGhp cy50cmFuc3BvcnQ7aWYodGhpcy5yZW1haW5pbmdSZXRyaWVzPjApey0tdGhpcy5y ZW1haW5pbmdSZXRyaWVzO3RoaXMuc2VuZCh0cnVlKTt9ZWxzZXshdGhpcy5nZXRP cHRpb24oJ3N1cHByZXNzRXJyb3JBbGVydHMnKTtpZih3aW5kb3cuc2VuZF9lcnJv cl9zaWduYWwpc2VuZF9lcnJvcl9zaWduYWwoJ2FzeW5jX3hwb3J0X3Jlc3AnLCcx MDA3OicrKHRoaXMuX3hGYlNlcnZlcnx8Jy0nKSsnOicrdGhpcy5nZXRVUkkoKSsn OicrZXhjZXB0aW9uLm1lc3NhZ2UpO2ludm9rZUVycm9ySGFuZGxlcigxMDA3KTt9 fX07dmFyIG9uSlNPTlBSZXNwb25zZT1mdW5jdGlvbihkYXRhLG1vcmVfY2h1bmtl ZF9yZXNwb25zZSl7dmFyIGlzX2ZpcnN0PSh0aGlzLmlzX2ZpcnN0PT09dW5kZWZp bmVkKTt0aGlzLmlzX2ZpcnN0PWlzX2ZpcnN0O2lmKHRoaXMudHJhbnNwb3J0SWZy YW1lJiYhbW9yZV9jaHVua2VkX3Jlc3BvbnNlKXtpZih0aGlzLmNhdmFscnkpdGhp cy5jYXZhbHJ5LmNvbGxlY3RCcm93c2VyVGltaW5nKHRoaXMudHJhbnNwb3J0SWZy YW1lLmNvbnRlbnRXaW5kb3cpOyhmdW5jdGlvbih4KXtkb2N1bWVudC5ib2R5LnJl bW92ZUNoaWxkKHgpO30pLmJpbmQobnVsbCx0aGlzLnRyYW5zcG9ydElmcmFtZSku ZGVmZXIoKTt9aWYodWEuaWUoKT49OSYmd2luZG93LkpTT04pZGF0YT13aW5kb3cu SlNPTi5wYXJzZSh3aW5kb3cuSlNPTi5zdHJpbmdpZnkoZGF0YSkpO3ZhciByPXRo aXMuaW50ZXJwcmV0UmVzcG9uc2UoZGF0YSk7ci5hc3luY1Jlc3BvbnNlLmlzX2Zp cnN0PWlzX2ZpcnN0O3IuYXN5bmNSZXNwb25zZS5pc19sYXN0PSFtb3JlX2NodW5r ZWRfcmVzcG9uc2U7dGhpcy5pbnZva2VSZXNwb25zZUhhbmRsZXIocik7cmV0dXJu IG1vcmVfY2h1bmtlZF9yZXNwb25zZTt9O2NvcHlQcm9wZXJ0aWVzKHRoaXMse29u c3RhdGVjaGFuZ2U6b25TdGF0ZUNoYW5nZSxvbmpzb25wcmVzcG9uc2U6b25KU09O UFJlc3BvbnNlLGludm9rZVJlc3BvbnNlSGFuZGxlcjppbnZva2VSZXNwb25zZUhh bmRsZXIsaW50ZXJwcmV0UmVzcG9uc2U6aW50ZXJwcmV0UmVzcG9uc2UsaGFuZGxl UmVzcG9uc2U6aGFuZGxlUmVzcG9uc2UsdHJhbnNwb3J0Om51bGwsbWV0aG9kOidQ T1NUJyx1cmk6JycsdGltZW91dDpudWxsLHRpbWVyOm51bGwsaW5pdGlhbEhhbmRs ZXI6YmFnb2Zob2xkaW5nLGhhbmRsZXI6bnVsbCxlcnJvckhhbmRsZXI6bnVsbCx0 cmFuc3BvcnRFcnJvckhhbmRsZXI6bnVsbCx0aW1lb3V0SGFuZGxlcjpudWxsLGZp bmFsbHlIYW5kbGVyOmJhZ29maG9sZGluZyxzZXJ2ZXJEaWFsb2dDYW5jZWxIYW5k bGVyOmJhZ29maG9sZGluZyxyZWxhdGl2ZVRvOm51bGwsc3RhdHVzRWxlbWVudDpu dWxsLHN0YXR1c0NsYXNzOicnLGRhdGE6e30sZmlsZTpudWxsLGNvbnRleHQ6e30s cmVhZE9ubHk6ZmFsc2Usd3JpdGVSZXF1aXJlZFBhcmFtczpbJ3Bvc3RfZm9ybV9p ZCddLHJlbWFpbmluZ1JldHJpZXM6MCxvcHRpb246e2FzeW5jaHJvbm91czp0cnVl LHN1cHByZXNzRXJyb3JIYW5kbGVyV2FybmluZzpmYWxzZSxzdXBwcmVzc0V2YWx1 YXRpb246ZmFsc2Usc3VwcHJlc3NFcnJvckFsZXJ0czpmYWxzZSxyZXRyaWVzOjAs anNvbnA6ZmFsc2UsYnVuZGxlOmZhbHNlLHVzZUlmcmFtZVRyYW5zcG9ydDpmYWxz ZSx0ZmJFbmRwb2ludDp0cnVlLGhhbmRsZUVycm9yQWZ0ZXJVbmxvYWQ6ZmFsc2V9 LHVzZXJBY3Rpb25JRDonLSd9KTt0aGlzLmVycm9ySGFuZGxlcj1Bc3luY1Jlc3Bv bnNlLmRlZmF1bHRFcnJvckhhbmRsZXI7dGhpcy50cmFuc3BvcnRFcnJvckhhbmRs ZXI9YmluZCh0aGlzLCdlcnJvckhhbmRsZXInKTtpZih1cmkhPXVuZGVmaW5lZCl0 aGlzLnNldFVSSSh1cmkpO3JldHVybiB0aGlzO31BcmJpdGVyLnN1YnNjcmliZSgi cGFnZV90cmFuc2l0aW9uIixmdW5jdGlvbih0eXBlLG1lc3NhZ2Upe0FzeW5jUmVx dWVzdC5faWRfdGhyZXNob2xkPW1lc3NhZ2UuaWQ7fSk7Y29weVByb3BlcnRpZXMo QXN5bmNSZXF1ZXN0LHtyZWNlaXZlSlNPTlBSZXNwb25zZTpmdW5jdGlvbihpZCxk YXRhLG1vcmVfY2h1bmtlZF9yZXNwb25zZSl7aWYodGhpcy5fSlNPTlBSZWNlaXZl cnNbaWRdKXtpZighdGhpcy5fSlNPTlBSZWNlaXZlcnNbaWRdKGRhdGEsbW9yZV9j aHVua2VkX3Jlc3BvbnNlKSlkZWxldGUgdGhpcy5fSlNPTlBSZWNlaXZlcnNbaWRd O31lbHNlIGlmKHdpbmRvdy5sb2dKU0Vycm9yJiYhbW9yZV9jaHVua2VkX3Jlc3Bv bnNlKXt2YXIgdXJpPShkYXRhLnBheWxvYWQmJmRhdGEucGF5bG9hZC51cmkpfHwn Jztsb2dKU0Vycm9yKCdhamF4Jyx7ZXJyb3I6J1VuZXhwZWN0ZWRKc29uUmVzcG9u c2UnLGV4dHJhOntpZDppZCx1cmk6dXJpfX0pO319LF9idW5kbGVSZXF1ZXN0OmZ1 bmN0aW9uKHJlcXVlc3Qpe2lmKHJlcXVlc3QuZ2V0T3B0aW9uKCdqc29ucCcpfHxy ZXF1ZXN0LmdldE9wdGlvbigndXNlSWZyYW1lVHJhbnNwb3J0Jykpe3JlcXVlc3Qu c2V0T3B0aW9uKCdidW5kbGUnLGZhbHNlKTtyZXR1cm4gZmFsc2U7fWVsc2UgaWYo IXJlcXVlc3QudXJpLmlzRmFjZWJvb2tVUkkoKSl7cmVxdWVzdC5zZXRPcHRpb24o J2J1bmRsZScsZmFsc2UpO3JldHVybiBmYWxzZTt9ZWxzZSBpZighcmVxdWVzdC5n ZXRPcHRpb24oJ2FzeW5jaHJvbm91cycpKXtyZXF1ZXN0LnNldE9wdGlvbignYnVu ZGxlJyxmYWxzZSk7cmV0dXJuIGZhbHNlO312YXIgcGF0aD1yZXF1ZXN0LnVyaS5n ZXRQYXRoKCk7aWYoIUFzeW5jUmVxdWVzdC5fYnVuZGxlVGltZXIpQXN5bmNSZXF1 ZXN0Ll9idW5kbGVUaW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7QXN5bmNSZXF1 ZXN0Ll9zZW5kQnVuZGxlZFJlcXVlc3RzKCk7fSwwKTtBc3luY1JlcXVlc3QuX2Fs bEJ1bmRsZWRSZXF1ZXN0cy5wdXNoKFtwYXRoLHJlcXVlc3RdKTtyZXR1cm4gdHJ1 ZTt9LF9zZW5kQnVuZGxlZFJlcXVlc3RzOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0 KEFzeW5jUmVxdWVzdC5fYnVuZGxlVGltZXIpO0FzeW5jUmVxdWVzdC5fYnVuZGxl VGltZXI9bnVsbDt2YXIgYnVuZGxlZF9yZXF1ZXN0cz1Bc3luY1JlcXVlc3QuX2Fs bEJ1bmRsZWRSZXF1ZXN0cztBc3luY1JlcXVlc3QuX2FsbEJ1bmRsZWRSZXF1ZXN0 cz1bXTtpZihidW5kbGVkX3JlcXVlc3RzLmxlbmd0aD09MSl7dmFyIHJlcXVlc3Q9 YnVuZGxlZF9yZXF1ZXN0c1swXVsxXTtyZXF1ZXN0LnNldE9wdGlvbignYnVuZGxl JyxmYWxzZSkuc2VuZCgpO3JldHVybiByZXF1ZXN0O31pZihidW5kbGVkX3JlcXVl c3RzLmxlbmd0aD09PTApcmV0dXJuIG51bGw7dmFyIGRhdGE9W107Zm9yKHZhciBp aT0wO2lpPGJ1bmRsZWRfcmVxdWVzdHMubGVuZ3RoO2lpKyspZGF0YS5wdXNoKFti dW5kbGVkX3JlcXVlc3RzW2lpXVswXSxVUkkuaW1wbG9kZVF1ZXJ5KGJ1bmRsZWRf cmVxdWVzdHNbaWldWzFdLmRhdGEpXSk7dmFyIHF1ZXJ5X2RhdGE9e2RhdGE6ZGF0 YX07dmFyIHJlcXVlc3Q9bmV3IEFzeW5jUmVxdWVzdCgpO3JlcXVlc3Quc2V0VVJJ KCcvYWpheC9wcm94eS5waHAnKS5zZXREYXRhKHF1ZXJ5X2RhdGEpLnNldE1ldGhv ZCgnUE9TVCcpLnNldEluaXRpYWxIYW5kbGVyKGJhZ29mKHRydWUpKS5zZXRBbGxv d0Nyb3NzUGFnZVRyYW5zaXRpb24odHJ1ZSkuc2V0SGFuZGxlcihmdW5jdGlvbihy KXt2YXIgcGF5bG9hZD1yLmdldFBheWxvYWQoKTt2YXIgcmVzcG9uc2VzPXBheWxv YWQucmVzcG9uc2VzO2lmKHJlc3BvbnNlcy5sZW5ndGghPWJ1bmRsZWRfcmVxdWVz dHMubGVuZ3RoKXtyZXR1cm47fWVsc2UgZm9yKHZhciBpaT0wO2lpPGJ1bmRsZWRf cmVxdWVzdHMubGVuZ3RoO2lpKyspe3ZhciBwYXRoPWJ1bmRsZWRfcmVxdWVzdHNb aWldWzBdO3ZhciByZXF1ZXN0PWJ1bmRsZWRfcmVxdWVzdHNbaWldWzFdO3JlcXVl c3QuaWQ9dGhpcy5pZDtpZihyZXNwb25zZXNbaWldWzBdIT1wYXRoKXtyZXF1ZXN0 Lmludm9rZVJlc3BvbnNlSGFuZGxlcih7dHJhbnNwb3J0RXJyb3I6J1dyb25nIHJl c3BvbnNlIG9yZGVyIGluIGJ1bmRsZWQgcmVxdWVzdCB0byAnK3BhdGh9KTtjb250 aW51ZTt9dmFyIGFzeW5jUmVzcG9uc2U9cmVxdWVzdC5pbnRlcnByZXRSZXNwb25z ZShyZXNwb25zZXNbaWldWzFdKTtyZXF1ZXN0Lmludm9rZVJlc3BvbnNlSGFuZGxl cihhc3luY1Jlc3BvbnNlKTt9fSkuc2V0VHJhbnNwb3J0RXJyb3JIYW5kbGVyKGZ1 bmN0aW9uKHJlc3BvbnNlKXt2YXIgcGF0aHM9W107dmFyIGludGVycD17dHJhbnNw b3J0RXJyb3I6cmVzcG9uc2UuZXJyb3JEZXNjcmlwdGlvbn07Zm9yKHZhciBpaT0w O2lpPGJ1bmRsZWRfcmVxdWVzdHMubGVuZ3RoO2lpKyspe3ZhciBwYXRoPWJ1bmRs ZWRfcmVxdWVzdHNbaWldWzBdO3ZhciByZXF1ZXN0PWJ1bmRsZWRfcmVxdWVzdHNb aWldWzFdO3BhdGhzLnB1c2gocGF0aCk7cmVxdWVzdC5pZD10aGlzLmlkO3JlcXVl c3QuaW52b2tlUmVzcG9uc2VIYW5kbGVyKGludGVycCk7fX0pLnNlbmQoKTtyZXR1 cm4gcmVxdWVzdDt9LGJvb3RzdHJhcDpmdW5jdGlvbihocmVmLGVsZW0saXNfcG9z dCl7dmFyIG1ldGhvZD0nR0VUJzt2YXIgcmVhZG9ubHk9dHJ1ZTt2YXIgZGF0YT17 fTtpZihpc19wb3N0fHxlbGVtJiYoZWxlbS5yZWw9PSdhc3luYy1wb3N0J3x8ZWxl bS5nZXRBdHRyaWJ1dGUmJmVsZW0uZ2V0QXR0cmlidXRlKCdmb3JjZW1ldGhvZCcp PT0ncG9zdCcpKXttZXRob2Q9J1BPU1QnO3JlYWRvbmx5PWZhbHNlO2lmKGhyZWYp e2hyZWY9VVJJKGhyZWYpO2RhdGE9aHJlZi5nZXRRdWVyeURhdGEoKTtocmVmLnNl dFF1ZXJ5RGF0YSh7fSk7fX12YXIgc3RhdHVzX2VsZW09UGFyZW50LmJ5Q2xhc3Mo ZWxlbSwnc3RhdF9lbGVtJyl8fGVsZW07aWYoc3RhdHVzX2VsZW0mJkNTUy5oYXND bGFzcyhzdGF0dXNfZWxlbSwnYXN5bmNfc2F2aW5nJykpcmV0dXJuIGZhbHNlO3Zh ciBhc3luYz1uZXcgQXN5bmNSZXF1ZXN0KGhyZWYpLnNldFJlYWRPbmx5KHJlYWRv bmx5KS5zZXRNZXRob2QobWV0aG9kKS5zZXREYXRhKGRhdGEpLnNldE5lY3Rhck1v ZHVsZURhdGFTYWZlKGVsZW0pLnNldFJlbGF0aXZlVG8oZWxlbSk7aWYoc3RhdHVz X2VsZW0pe2FzeW5jLnNldFN0YXR1c0VsZW1lbnQoc3RhdHVzX2VsZW0pO3ZhciBz dGF0dXNfY2xhc3M9c3RhdHVzX2VsZW0uZ2V0QXR0cmlidXRlKCdkYXRhLXN0YXR1 cy1jbGFzcycpO3N0YXR1c19jbGFzcyYmYXN5bmMuc2V0U3RhdHVzQ2xhc3Moc3Rh dHVzX2NsYXNzKTt9YXN5bmMuc2VuZCgpO3JldHVybiBmYWxzZTt9LHBvc3Q6ZnVu Y3Rpb24oaHJlZixkYXRhKXtuZXcgQXN5bmNSZXF1ZXN0KGhyZWYpLnNldFJlYWRP bmx5KGZhbHNlKS5zZXRNZXRob2QoJ1BPU1QnKS5zZXREYXRhKGRhdGEpLnNlbmQo KTtyZXR1cm4gZmFsc2U7fSxnZXRMYXN0SWQ6ZnVuY3Rpb24oKXtyZXR1cm4gQXN5 bmNSZXF1ZXN0Ll9sYXN0X2lkO30sX0pTT05QUmVjZWl2ZXJzOnt9LF9hbGxCdW5k bGVkUmVxdWVzdHM6W10sX2J1bmRsZVRpbWVyOm51bGwsc3VwcHJlc3NPbmxvYWRU b2tlbjp7fSxfbGFzdF9pZDoyLF9pZF90aHJlc2hvbGQ6MixfaW5mbGlnaHQ6W10s X2luZmxpZ2h0QWRkOmJhZ29maG9sZGluZyxfaW5mbGlnaHRQdXJnZTpiYWdvZmhv bGRpbmcsX2luZmxpZ2h0RW5hYmxlOmZ1bmN0aW9uKCl7aWYodWEuaWUoKSl7Y29w eVByb3BlcnRpZXMoQXN5bmNSZXF1ZXN0LHtfaW5mbGlnaHRBZGQ6ZnVuY3Rpb24o YXIpe3RoaXMuX2luZmxpZ2h0LnB1c2goYXIpO30sX2luZmxpZ2h0UHVyZ2U6ZnVu Y3Rpb24oKXtBc3luY1JlcXVlc3QuX2luZmxpZ2h0PUFzeW5jUmVxdWVzdC5faW5m bGlnaHQuZmlsdGVyKGZ1bmN0aW9uKGFyKXtyZXR1cm4gYXIudHJhbnNwb3J0JiZh ci50cmFuc3BvcnQucmVhZHlTdGF0ZTw0O30pO319KTtvbnVubG9hZFJlZ2lzdGVy KGZ1bmN0aW9uKCl7QXN5bmNSZXF1ZXN0Ll9pbmZsaWdodC5lYWNoKGZ1bmN0aW9u KGFyKXtpZihhci50cmFuc3BvcnQmJmFyLnRyYW5zcG9ydC5yZWFkeVN0YXRlPDQp e2FyLnRyYW5zcG9ydC5hYm9ydCgpO2RlbGV0ZSBhci50cmFuc3BvcnQ7fX0pO30p O319fSk7Y29weVByb3BlcnRpZXMoQXN5bmNSZXF1ZXN0LnByb3RvdHlwZSx7c2V0 TWV0aG9kOmZ1bmN0aW9uKG0pe3RoaXMubWV0aG9kPW0udG9TdHJpbmcoKS50b1Vw cGVyQ2FzZSgpO3JldHVybiB0aGlzO30sZ2V0TWV0aG9kOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMubWV0aG9kO30sc2V0RGF0YTpmdW5jdGlvbihvYmope3RoaXMuZGF0 YT1vYmo7cmV0dXJuIHRoaXM7fSxzZXRGaWxlOmZ1bmN0aW9uKGZpbGUpe3RoaXMu ZmlsZT1maWxlO3JldHVybiB0aGlzO30sZ2V0RGF0YTpmdW5jdGlvbigpe3JldHVy biB0aGlzLmRhdGE7fSxzZXRDb250ZXh0RGF0YTpmdW5jdGlvbihrZXksdmFsdWUs ZW5hYmxlZCl7ZW5hYmxlZD1lbmFibGVkPT09dW5kZWZpbmVkP3RydWU6ZW5hYmxl ZDtpZihlbmFibGVkKXRoaXMuY29udGV4dFsnX2xvZ18nK2tleV09dmFsdWU7cmV0 dXJuIHRoaXM7fSxfc2V0VXNlckFjdGlvbklEOmZ1bmN0aW9uKCl7dmFyIHVlPXdp bmRvdy5BcmJpdGVyTW9uaXRvciYmQXJiaXRlck1vbml0b3IuZ2V0VUUoKXx8Jy0n O3RoaXMudXNlckFjdGlvbklEPSh3aW5kb3cuRWFnbGVFeWUmJkVhZ2xlRXllLmdl dFNlc3Npb25JRCgpfHwnLScpKycvJyt1ZTt9LHNldFVSSTpmdW5jdGlvbih1cmkp e3ZhciB1cmlfb2JqPVVSSSh1cmkpO2lmKHRoaXMuZ2V0T3B0aW9uKCd1c2VJZnJh bWVUcmFuc3BvcnQnKSYmIXVyaV9vYmouaXNGYWNlYm9va1VSSSgpKXJldHVybiB0 aGlzO2lmKCF0aGlzLmdldE9wdGlvbignanNvbnAnKSYmIXRoaXMuZ2V0T3B0aW9u KCd1c2VJZnJhbWVUcmFuc3BvcnQnKSYmIXVyaV9vYmouaXNTYW1lT3JpZ2luKCkp cmV0dXJuIHRoaXM7dGhpcy5fc2V0VXNlckFjdGlvbklEKCk7aWYoIXVyaXx8dXJp X29iai5pc0VtcHR5KCkpe2lmKHdpbmRvdy5zZW5kX2Vycm9yX3NpZ25hbCYmd2lu ZG93LmdldF9lcnJvcl9zdGFjayl7dmFyIGRhdGE9e2Vycl9jb2RlOjEwMTMsdmlw OictJyxkdXJhdGlvbjowLHhmYl9pcDonLScscGF0aDp3aW5kb3cubG9jYXRpb24u aHJlZixhaWQ6dGhpcy51c2VyQWN0aW9uSUR9O3NlbmRfZXJyb3Jfc2lnbmFsKCdh c3luY19lcnJvcicsSlNPTi5zdHJpbmdpZnkoZGF0YSkpO3NlbmRfZXJyb3Jfc2ln bmFsKCdhc3luY194cG9ydF9zdGFjaycsJzEwMTM6Jyt3aW5kb3cubG9jYXRpb24u aHJlZisnOjonK2dldF9lcnJvcl9zdGFjaygpKTt9cmV0dXJuIHRoaXM7fXRoaXMu dXJpPXVyaV9vYmo7cmV0dXJuIHRoaXM7fSxnZXRVUkk6ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy51cmkudG9TdHJpbmcoKTt9LHNldEluaXRpYWxIYW5kbGVyOmZ1bmN0 aW9uKGZuKXt0aGlzLmluaXRpYWxIYW5kbGVyPWZuO3JldHVybiB0aGlzO30sc2V0 SGFuZGxlcjpmdW5jdGlvbihmbil7aWYoISh0eXBlb2YoZm4pIT0nZnVuY3Rpb24n KSl0aGlzLmhhbmRsZXI9Zm47cmV0dXJuIHRoaXM7fSxnZXRIYW5kbGVyOmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuaGFuZGxlcjt9LHNldEVycm9ySGFuZGxlcjpmdW5j dGlvbihmbil7aWYoISh0eXBlb2YoZm4pIT0nZnVuY3Rpb24nKSl0aGlzLmVycm9y SGFuZGxlcj1mbjtyZXR1cm4gdGhpczt9LHNldFRyYW5zcG9ydEVycm9ySGFuZGxl cjpmdW5jdGlvbihmbil7dGhpcy50cmFuc3BvcnRFcnJvckhhbmRsZXI9Zm47cmV0 dXJuIHRoaXM7fSxnZXRFcnJvckhhbmRsZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5lcnJvckhhbmRsZXI7fSxnZXRUcmFuc3BvcnRFcnJvckhhbmRsZXI6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy50cmFuc3BvcnRFcnJvckhhbmRsZXI7fSxzZXRUaW1l b3V0SGFuZGxlcjpmdW5jdGlvbih0aW1lb3V0LGZuKXtpZighKHR5cGVvZihmbikh PSdmdW5jdGlvbicpKXt0aGlzLnRpbWVvdXQ9dGltZW91dDt0aGlzLnRpbWVvdXRI YW5kbGVyPWZuO31yZXR1cm4gdGhpczt9LHJlc2V0VGltZW91dDpmdW5jdGlvbih0 aW1lb3V0KXtpZighKHRoaXMudGltZW91dEhhbmRsZXI9PT1udWxsKSlpZih0aW1l b3V0PT09bnVsbCl7dGhpcy50aW1lb3V0PW51bGw7Y2xlYXJUaW1lb3V0KHRoaXMu dGltZXIpO3RoaXMudGltZXI9bnVsbDt9ZWxzZXt2YXIgY2xlYXJfb25fcXVpY2ts aW5nX2V2ZW50PSF0aGlzLl9hbGxvd0Nyb3NzUGFnZVRyYW5zaXRpb247dGhpcy50 aW1lb3V0PXRpbWVvdXQ7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO3RoaXMudGlt ZXI9dGhpcy5faGFuZGxlVGltZW91dC5iaW5kKHRoaXMpLmRlZmVyKHRoaXMudGlt ZW91dCxjbGVhcl9vbl9xdWlja2xpbmdfZXZlbnQpO31yZXR1cm4gdGhpczt9LF9o YW5kbGVUaW1lb3V0OmZ1bmN0aW9uKCl7dGhpcy5hYmFuZG9uKCk7dGhpcy50aW1l b3V0SGFuZGxlcih0aGlzKTt9LHNldE5ld1NlcmlhbDpmdW5jdGlvbigpe3RoaXMu aWQ9KytBc3luY1JlcXVlc3QuX2xhc3RfaWQ7cmV0dXJuIHRoaXM7fSxzZXRGaW5h bGx5SGFuZGxlcjpmdW5jdGlvbihmbil7dGhpcy5maW5hbGx5SGFuZGxlcj1mbjty ZXR1cm4gdGhpczt9LHNldFNlcnZlckRpYWxvZ0NhbmNlbEhhbmRsZXI6ZnVuY3Rp b24oZm4pe3RoaXMuc2VydmVyRGlhbG9nQ2FuY2VsSGFuZGxlcj1mbjtyZXR1cm4g dGhpczt9LHNldFByZUJvb3Rsb2FkSGFuZGxlcjpmdW5jdGlvbihmbil7dGhpcy5w cmVCb290bG9hZEhhbmRsZXI9Zm47cmV0dXJuIHRoaXM7fSxzZXRSZWFkT25seTpm dW5jdGlvbihyZWFkT25seSl7aWYoISh0eXBlb2YocmVhZE9ubHkpIT0nYm9vbGVh bicpKXRoaXMucmVhZE9ubHk9cmVhZE9ubHk7cmV0dXJuIHRoaXM7fSxzZXRGQk1M Rm9ybTpmdW5jdGlvbigpe3RoaXMud3JpdGVSZXF1aXJlZFBhcmFtcz1bImZiX3Np ZyJdO3JldHVybiB0aGlzO30sZ2V0UmVhZE9ubHk6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5yZWFkT25seTt9LHNldFJlbGF0aXZlVG86ZnVuY3Rpb24oZWxlbWVudCl7 dGhpcy5yZWxhdGl2ZVRvPWVsZW1lbnQ7cmV0dXJuIHRoaXM7fSxnZXRSZWxhdGl2 ZVRvOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVsYXRpdmVUbzt9LHNldFN0YXR1 c0NsYXNzOmZ1bmN0aW9uKGMpe3RoaXMuc3RhdHVzQ2xhc3M9YztyZXR1cm4gdGhp czt9LHNldFN0YXR1c0VsZW1lbnQ6ZnVuY3Rpb24oZWxlbWVudCl7dGhpcy5zdGF0 dXNFbGVtZW50PWVsZW1lbnQ7cmV0dXJuIHRoaXM7fSxnZXRTdGF0dXNFbGVtZW50 OmZ1bmN0aW9uKCl7cmV0dXJuIGdlKHRoaXMuc3RhdHVzRWxlbWVudCk7fSxpc1Jl bGV2YW50OmZ1bmN0aW9uKCl7aWYodGhpcy5fYWxsb3dDcm9zc1BhZ2VUcmFuc2l0 aW9uKXJldHVybiB0cnVlO2lmKCF0aGlzLmlkKXJldHVybiB0cnVlO3JldHVybiB0 aGlzLmlkPkFzeW5jUmVxdWVzdC5faWRfdGhyZXNob2xkO30sY2xlYXJTdGF0dXNJ bmRpY2F0b3I6ZnVuY3Rpb24oKXt2YXIgc3RhdHVzRWxlbT10aGlzLmdldFN0YXR1 c0VsZW1lbnQoKTtpZihzdGF0dXNFbGVtKXtDU1MucmVtb3ZlQ2xhc3Moc3RhdHVz RWxlbSwnYXN5bmNfc2F2aW5nJyk7Q1NTLnJlbW92ZUNsYXNzKHN0YXR1c0VsZW0s dGhpcy5zdGF0dXNDbGFzcyk7fX0sYWRkU3RhdHVzSW5kaWNhdG9yOmZ1bmN0aW9u KCl7dmFyIHN0YXR1c0VsZW09dGhpcy5nZXRTdGF0dXNFbGVtZW50KCk7aWYoc3Rh dHVzRWxlbSl7Q1NTLmFkZENsYXNzKHN0YXR1c0VsZW0sJ2FzeW5jX3NhdmluZycp O0NTUy5hZGRDbGFzcyhzdGF0dXNFbGVtLHRoaXMuc3RhdHVzQ2xhc3MpO319LHNw ZWNpZmllc1dyaXRlUmVxdWlyZWRQYXJhbXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy53cml0ZVJlcXVpcmVkUGFyYW1zLmV2ZXJ5KGZ1bmN0aW9uKHBhcmFtKXt0aGlz LmRhdGFbcGFyYW1dPXRoaXMuZGF0YVtwYXJhbV18fEVudltwYXJhbV18fChnZShw YXJhbSl8fHt9KS52YWx1ZTtpZih0aGlzLmRhdGFbcGFyYW1dIT09dW5kZWZpbmVk KXJldHVybiB0cnVlO3JldHVybiBmYWxzZTt9LHRoaXMpO30sc2V0T3B0aW9uOmZ1 bmN0aW9uKG9wdCx2KXtpZih0eXBlb2YodGhpcy5vcHRpb25bb3B0XSkhPSd1bmRl ZmluZWQnKXRoaXMub3B0aW9uW29wdF09djtyZXR1cm4gdGhpczt9LGdldE9wdGlv bjpmdW5jdGlvbihvcHQpe3R5cGVvZih0aGlzLm9wdGlvbltvcHRdKT09J3VuZGVm aW5lZCc7cmV0dXJuIHRoaXMub3B0aW9uW29wdF07fSxhYm9ydDpmdW5jdGlvbigp e2lmKHRoaXMudHJhbnNwb3J0KXt2YXIgb2xkX2hhbmRsZXI9dGhpcy5nZXRUcmFu c3BvcnRFcnJvckhhbmRsZXIoKTt0aGlzLnNldE9wdGlvbignc3VwcHJlc3NFcnJv ckFsZXJ0cycsdHJ1ZSk7dGhpcy5zZXRUcmFuc3BvcnRFcnJvckhhbmRsZXIoYmFn b2Zob2xkaW5nKTt0aGlzLl9yZXF1ZXN0QWJvcnRlZD0xO3RoaXMudHJhbnNwb3J0 LmFib3J0KCk7dGhpcy5zZXRUcmFuc3BvcnRFcnJvckhhbmRsZXIob2xkX2hhbmRs ZXIpO319LGFiYW5kb246ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy50aW1l cik7dGhpcy5zZXRPcHRpb24oJ3N1cHByZXNzRXJyb3JBbGVydHMnLHRydWUpLnNl dEhhbmRsZXIoYmFnb2Zob2xkaW5nKS5zZXRFcnJvckhhbmRsZXIoYmFnb2Zob2xk aW5nKS5zZXRUcmFuc3BvcnRFcnJvckhhbmRsZXIoYmFnb2Zob2xkaW5nKTtpZih0 aGlzLnRyYW5zcG9ydCl7dGhpcy5fcmVxdWVzdEFib3J0ZWQ9MTt0aGlzLnRyYW5z cG9ydC5hYm9ydCgpO319LHNldE5lY3RhckRhdGE6ZnVuY3Rpb24obmN0clBhcmFt cyl7aWYobmN0clBhcmFtcyl7aWYodGhpcy5kYXRhLm5jdHI9PT11bmRlZmluZWQp dGhpcy5kYXRhLm5jdHI9e307Y29weVByb3BlcnRpZXModGhpcy5kYXRhLm5jdHIs bmN0clBhcmFtcyk7fXJldHVybiB0aGlzO30sc2V0TmVjdGFyTW9kdWxlRGF0YVNh ZmU6ZnVuY3Rpb24oZWxlbSl7aWYodGhpcy5zZXROZWN0YXJNb2R1bGVEYXRhKXRo aXMuc2V0TmVjdGFyTW9kdWxlRGF0YShlbGVtKTtyZXR1cm4gdGhpczt9LHNldE5l Y3RhckltcHJlc3Npb25JZFNhZmU6ZnVuY3Rpb24oKXtpZih0aGlzLnNldE5lY3Rh ckltcHJlc3Npb25JZCl0aGlzLnNldE5lY3RhckltcHJlc3Npb25JZCgpO3JldHVy biB0aGlzO30sc2V0QWxsb3dDcm9zc1BhZ2VUcmFuc2l0aW9uOmZ1bmN0aW9uKGFs bG93KXt0aGlzLl9hbGxvd0Nyb3NzUGFnZVRyYW5zaXRpb249ISFhbGxvdztpZih0 aGlzLnRpbWVyKXRoaXMucmVzZXRUaW1lb3V0KHRoaXMudGltZW91dCk7cmV0dXJu IHRoaXM7fSxzZW5kOmZ1bmN0aW9uKGlzUmV0cnkpe2lzUmV0cnk9aXNSZXRyeXx8 ZmFsc2U7aWYoIXRoaXMudXJpKXJldHVybiBmYWxzZTshdGhpcy5lcnJvckhhbmRs ZXImJiF0aGlzLmdldE9wdGlvbignc3VwcHJlc3NFcnJvckhhbmRsZXJXYXJuaW5n Jyk7aWYodGhpcy5nZXRPcHRpb24oJ2pzb25wJykmJnRoaXMubWV0aG9kIT0nR0VU Jyl0aGlzLnNldE1ldGhvZCgnR0VUJyk7aWYodGhpcy5nZXRPcHRpb24oJ3VzZUlm cmFtZVRyYW5zcG9ydCcpJiZ0aGlzLm1ldGhvZCE9J0dFVCcpdGhpcy5zZXRNZXRo b2QoJ0dFVCcpO3RoaXMudGltZW91dEhhbmRsZXIhPT1udWxsJiYodGhpcy5nZXRP cHRpb24oJ2pzb25wJyl8fHRoaXMuZ2V0T3B0aW9uKCd1c2VJZnJhbWVUcmFuc3Bv cnQnKSk7aWYoIXRoaXMuZ2V0UmVhZE9ubHkoKSl7dGhpcy5zcGVjaWZpZXNXcml0 ZVJlcXVpcmVkUGFyYW1zKCk7aWYodGhpcy5tZXRob2QhPSdQT1NUJylyZXR1cm4g ZmFsc2U7fWlmKHRoaXMubWV0aG9kPT0nUE9TVCcmJnRoaXMuZ2V0T3B0aW9uKCd0 ZmJFbmRwb2ludCcpKXt0aGlzLmRhdGEuZmJfZHRzZz1FbnYuZmJfZHRzZzt0aGlz LmRhdGEubHNkPWdldENvb2tpZSgnbHNkJyk7fWlmKCFpc0VtcHR5KHRoaXMuY29u dGV4dCkmJnRoaXMuZ2V0T3B0aW9uKCd0ZmJFbmRwb2ludCcpKXtjb3B5UHJvcGVy dGllcyh0aGlzLmRhdGEsdGhpcy5jb250ZXh0KTt0aGlzLmRhdGEuYWpheF9sb2c9 MTt9aWYod2luZG93LkVudiYmRW52LmZvcmNlX3BhcmFtKWNvcHlQcm9wZXJ0aWVz KHRoaXMuZGF0YSxFbnYuZm9yY2VfcGFyYW0pO2lmKCF0aGlzLmdldFJlYWRPbmx5 KCkmJnRoaXMuZ2V0T3B0aW9uKCd0ZmJFbmRwb2ludCcpJiZ0aGlzLm1ldGhvZD09 J1BPU1QnJiZ0aGlzLmRhdGEucG9zdF9mb3JtX2lkX3NvdXJjZT09PXVuZGVmaW5l ZCl0aGlzLmRhdGEucG9zdF9mb3JtX2lkX3NvdXJjZT0nQXN5bmNSZXF1ZXN0Jztp Zih3aW5kb3cuRW52KXRoaXMuZGF0YS5fX3VzZXI9RW52LnVzZXI7dGhpcy5fc2V0 VXNlckFjdGlvbklEKCk7aWYodGhpcy5nZXRPcHRpb24oJ2J1bmRsZScpJiZBc3lu Y1JlcXVlc3QuX2J1bmRsZVJlcXVlc3QodGhpcykpcmV0dXJuIHRydWU7dGhpcy5z ZXROZXdTZXJpYWwoKTtpZih0aGlzLmdldE9wdGlvbigndGZiRW5kcG9pbnQnKSl7 dGhpcy51cmkuYWRkUXVlcnlEYXRhKHtfX2E6MX0pO2lmKEVudi5mYl9pc2IpdGhp cy51cmkuYWRkUXVlcnlEYXRhKHtmYl9pc2I6RW52LmZiX2lzYn0pO310aGlzLmZp bmFsbHlIYW5kbGVyPWFzeW5jX2NhbGxiYWNrKHRoaXMuZmluYWxseUhhbmRsZXIs J2ZpbmFsJyk7dmFyIHVyaV9zdHIscXVlcnk7aWYodGhpcy5tZXRob2Q9PSdHRVQn fHx0aGlzLmZpbGUpe3VyaV9zdHI9dGhpcy51cmkuYWRkUXVlcnlEYXRhKHRoaXMu ZGF0YSkudG9TdHJpbmcoKTtxdWVyeT0nJzt9ZWxzZXt1cmlfc3RyPXRoaXMudXJp LnRvU3RyaW5nKCk7cXVlcnk9VVJJLmltcGxvZGVRdWVyeSh0aGlzLmRhdGEpO31p Zih0aGlzLmdldE9wdGlvbignanNvbnAnKXx8dGhpcy5nZXRPcHRpb24oJ3VzZUlm cmFtZVRyYW5zcG9ydCcpKXt1cmlfc3RyPXRoaXMudXJpLmFkZFF1ZXJ5RGF0YSh7 X19hOnRoaXMuaWR9KS50b1N0cmluZygpO0FzeW5jUmVxdWVzdC5fSlNPTlBSZWNl aXZlcnNbdGhpcy5pZF09YXN5bmNfY2FsbGJhY2soYmluZCh0aGlzLCdvbmpzb25w cmVzcG9uc2UnKSwnanNvbicpO2lmKHRoaXMuZ2V0T3B0aW9uKCdqc29ucCcpKXso ZnVuY3Rpb24oKXtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKCROKCdzY3JpcHQn LHtzcmM6dXJpX3N0cix0eXBlOiJ0ZXh0L2phdmFzY3JpcHQifSkpO30pLmJpbmQo dGhpcykuZGVmZXIoKTt9ZWxzZXt2YXIgc3R5bGU9e3Bvc2l0aW9uOidhYnNvbHV0 ZScsdG9wOictOTk5OTk5OXB4Jyx3aWR0aDonODBweCcsaGVpZ2h0Oic4MHB4J307 dGhpcy50cmFuc3BvcnRJZnJhbWU9JE4oJ2lmcmFtZScse3NyYzoiamF2YXNjcmlw dDonJyIsc3R5bGU6c3R5bGV9KTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRo aXMudHJhbnNwb3J0SWZyYW1lKTt0aGlzLnRyYW5zcG9ydElmcmFtZS5zcmM9dXJp X3N0cjt9cmV0dXJuIHRydWU7fWlmKHRoaXMudHJhbnNwb3J0KXJldHVybiBmYWxz ZTt2YXIgdHJhbnNwb3J0PW51bGw7dHJ5e3RyYW5zcG9ydD1uZXcgWE1MSHR0cFJl cXVlc3QoKTt9Y2F0Y2goaWdub3JlZCl7fWlmKCF0cmFuc3BvcnQpdHJ5e3RyYW5z cG9ydD1uZXcgQWN0aXZlWE9iamVjdCgiTXN4bWwyLlhNTEhUVFAiKTt9Y2F0Y2go aWdub3JlZCl7fWlmKCF0cmFuc3BvcnQpdHJ5e3RyYW5zcG9ydD1uZXcgQWN0aXZl WE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKTt9Y2F0Y2goaWdub3JlZCl7fWlm KCF0cmFuc3BvcnQpcmV0dXJuIGZhbHNlO3RyYW5zcG9ydC5vbnJlYWR5c3RhdGVj aGFuZ2U9YXN5bmNfY2FsbGJhY2soYmluZCh0aGlzLCdvbnN0YXRlY2hhbmdlJyks J3hocicpO2lmKCFpc1JldHJ5KXRoaXMucmVtYWluaW5nUmV0cmllcz10aGlzLmdl dE9wdGlvbigncmV0cmllcycpO2lmKHdpbmRvdy5zZW5kX2Vycm9yX3NpZ25hbHx8 d2luZG93LkFyYml0ZXJNb25pdG9yKXRoaXMuX3NlbmRUaW1lU3RhbXA9dGhpcy5f c2VuZFRpbWVTdGFtcHx8RGF0ZS5ub3coKTt0aGlzLnRyYW5zcG9ydD10cmFuc3Bv cnQ7dHJ5e3RoaXMudHJhbnNwb3J0Lm9wZW4odGhpcy5tZXRob2QsdXJpX3N0cix0 aGlzLmdldE9wdGlvbignYXN5bmNocm9ub3VzJykpO31jYXRjaChleCl7cmV0dXJu IGZhbHNlO312YXIgc3ZuX3Jldj1FbnYuc3ZuX3JldjtpZihzdm5fcmV2KXRoaXMu dHJhbnNwb3J0LnNldFJlcXVlc3RIZWFkZXIoJ1gtU1ZOLVJldicsU3RyaW5nKHN2 bl9yZXYpKTtpZih0aGlzLm1ldGhvZD09J1BPU1QnKXRoaXMudHJhbnNwb3J0LnNl dFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsJ2FwcGxpY2F0aW9uL3gtd3d3 LWZvcm0tdXJsZW5jb2RlZCcpO3RoaXMuYWRkU3RhdHVzSW5kaWNhdG9yKCk7cXVl cnk9dGhpcy5maWxlfHxxdWVyeTt0aGlzLnRyYW5zcG9ydC5zZW5kKHF1ZXJ5KTtp Zih0aGlzLnRpbWVvdXQhPT1udWxsKXRoaXMucmVzZXRUaW1lb3V0KHRoaXMudGlt ZW91dCk7QXN5bmNSZXF1ZXN0Ll9pbmZsaWdodEFkZCh0aGlzKTtyZXR1cm4gdHJ1 ZTt9LF9kaXNwbGF5U2VydmVyRGlhbG9nOmZ1bmN0aW9uKG1vZGVsLGlzX2NvbmZp cm1hdGlvbil7Qm9vdGxvYWRlci5sb2FkQ29tcG9uZW50cygnZGlhbG9nJyxmdW5j dGlvbigpe3ZhciBkaWFsb2c9bmV3IERpYWxvZyhtb2RlbCk7aWYoaXNfY29uZmly bWF0aW9uKWRpYWxvZy5zZXRIYW5kbGVyKHRoaXMuX2Rpc3BsYXlDb25maXJtYXRp b25IYW5kbGVyLmJpbmQodGhpcyxkaWFsb2cpKTtkaWFsb2cuc2V0Q2FuY2VsSGFu ZGxlcihmdW5jdGlvbigpe3RoaXMuc2VydmVyRGlhbG9nQ2FuY2VsSGFuZGxlci5h cHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5maW5hbGx5SGFuZGxlci5hcHBseSh0 aGlzLGFyZ3VtZW50cyk7fS5iaW5kKHRoaXMpKS5zZXRDYXVzYWxFbGVtZW50KHRo aXMucmVsYXRpdmVUbykuc2V0Q2xvc2VIYW5kbGVyKHRoaXMuZmluYWxseUhhbmRs ZXIuYmluZCh0aGlzKSkuc2hvdygpO30uYmluZCh0aGlzKSk7fSxfZGlzcGxheUNv bmZpcm1hdGlvbkhhbmRsZXI6ZnVuY3Rpb24oZGlhbG9nKXt0aGlzLmRhdGEuY29u ZmlybWVkPTE7Y29weVByb3BlcnRpZXModGhpcy5kYXRhLGRpYWxvZy5nZXRGb3Jt RGF0YSgpKTt0aGlzLnNlbmQoKTt9fSk7bW9kdWxlLmV4cG9ydHM9QXN5bmNSZXF1 ZXN0O30pOwpfX2UoImFzeW5jIixbIkFzeW5jUmVxdWVzdCIsIkFzeW5jUmVzcG9u c2UiXSxmdW5jdGlvbihhLGIpe2EuQXN5bmNSZXF1ZXN0PWIoJ0FzeW5jUmVxdWVz dCcpO2EuQXN5bmNSZXNwb25zZT1iKCdBc3luY1Jlc3BvbnNlJyk7fSwzKTsKX19l KCJjc3MiLFsiZG9tIiwiY3NzLWNvcmUiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0 aW9uKGUsZyxmLGQpe3ZhciBiPWcoJ2RvbScpO3ZhciBhPWcoJ2Nzcy1jb3JlJyk7 dmFyIGM9ZygnY29weVByb3BlcnRpZXMnKTtjKGEse3Nob3duOmZ1bmN0aW9uKGgp e3JldHVybiAhYS5oYXNDbGFzcyhoLCdoaWRkZW5fZWxlbScpO30sdG9nZ2xlOmZ1 bmN0aW9uKGgpe2EuY29uZGl0aW9uU2hvdyhoLCFhLnNob3duKGgpKTt9LHNldENs YXNzOmZ1bmN0aW9uKGksaCl7JChpKS5jbGFzc05hbWU9aHx8Jyc7cmV0dXJuIGk7 fSxzZXRTdHlsZTpmdW5jdGlvbihoLGksail7c3dpdGNoKGkpe2Nhc2UgJ29wYWNp dHknOmguc3R5bGUub3BhY2l0eT1qO2guc3R5bGUuZmlsdGVyPWohPT0nJz8nYWxw aGEob3BhY2l0eT0nK2oqMTAwKycpJzonJzticmVhaztjYXNlICdmbG9hdCc6aC5z dHlsZS5jc3NGbG9hdD1oLnN0eWxlLnN0eWxlRmxvYXQ9ajticmVhaztkZWZhdWx0 Omk9aS5yZXBsYWNlKC8tKC4pL2csZnVuY3Rpb24oayxsKXtyZXR1cm4gbC50b1Vw cGVyQ2FzZSgpO30pO2guc3R5bGVbaV09ajt9cmV0dXJuIGg7fSxnZXRTdHlsZTpm dW5jdGlvbihpLGspe2k9JChpKTtrPWsucmVwbGFjZSgvLSguKS9nLGZ1bmN0aW9u KGwsbSl7cmV0dXJuIG0udG9VcHBlckNhc2UoKTt9KTtmdW5jdGlvbiBqKGwpe3Jl dHVybiBsLnJlcGxhY2UoLyhbQS1aXSkvZywnLSQxJykudG9Mb3dlckNhc2UoKTt9 aWYod2luZG93LmdldENvbXB1dGVkU3R5bGUpe3ZhciBoPXdpbmRvdy5nZXRDb21w dXRlZFN0eWxlKGksbnVsbCk7aWYoaClyZXR1cm4gaC5nZXRQcm9wZXJ0eVZhbHVl KGooaykpO31pZihkb2N1bWVudC5kZWZhdWx0VmlldyYmZG9jdW1lbnQuZGVmYXVs dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSl7dmFyIGg9ZG9jdW1lbnQuZGVmYXVsdFZp ZXcuZ2V0Q29tcHV0ZWRTdHlsZShpLG51bGwpO2lmKGgpcmV0dXJuIGguZ2V0UHJv cGVydHlWYWx1ZShqKGspKTtpZihrPT0iZGlzcGxheSIpcmV0dXJuICJub25lIjt9 aWYoaS5jdXJyZW50U3R5bGUpcmV0dXJuIGkuY3VycmVudFN0eWxlW2tdO3JldHVy biBpLnN0eWxlJiZpLnN0eWxlW2tdO30sZ2V0U3R5bGVGbG9hdDpmdW5jdGlvbiho LGkpe3JldHVybiBwYXJzZUZsb2F0KGEuZ2V0U3R5bGUoaCxpKSwxMCk7fSxnZXRP cGFjaXR5OmZ1bmN0aW9uKGgpe2g9JChoKTt2YXIgaT1hLmdldFN0eWxlKGgsJ2Zp bHRlcicpO3ZhciBqPW51bGw7aWYoaSYmKGo9LyhcZCsoPzpcLlxkKyk/KS8uZXhl YyhpKSkpe3JldHVybiBwYXJzZUZsb2F0KGoucG9wKCkpLzEwMDt9ZWxzZSBpZihp PWEuZ2V0U3R5bGUoaCwnb3BhY2l0eScpKXtyZXR1cm4gcGFyc2VGbG9hdChpKTt9 ZWxzZSByZXR1cm4gMTt9LGlzRml4ZWQ6ZnVuY3Rpb24oaCl7d2hpbGUoaCYmaCE9 PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCl7aWYoYS5nZXRTdHlsZShoLCdwb3Np dGlvbicpPT09J2ZpeGVkJylyZXR1cm4gdHJ1ZTtoPWgucGFyZW50Tm9kZTt9cmV0 dXJuIGZhbHNlO30sZ2V0U2Nyb2xsUGFyZW50OihmdW5jdGlvbigpe2Z1bmN0aW9u IGgoaSxrKXt2YXIgaj1hLmdldFN0eWxlKGksayk7cmV0dXJuIChqPT09J2F1dG8n fHxqPT09J3Njcm9sbCcpO31yZXR1cm4gZnVuY3Rpb24oaSl7aWYoIWkpcmV0dXJu IG51bGw7d2hpbGUoaSE9PWRvY3VtZW50LmJvZHkpe2lmKGgoaSwnb3ZlcmZsb3cn KXx8aChpLCdvdmVyZmxvd1knKXx8aChpLCdvdmVyZmxvd1gnKSlyZXR1cm4gaTtp PWkucGFyZW50Tm9kZTt9cmV0dXJuIHdpbmRvdzt9O30pKCl9KTtmLmV4cG9ydHM9 YTt9LDMpOwpfX2UoIkRhdGFTdG9yZSIsW10sZnVuY3Rpb24oaSxrLGosaCl7dmFy IGY9e307dmFyIGM9e307dmFyIGc9MTt2YXIgYj0xO2Z1bmN0aW9uIGQobCl7dmFy IG07aWYodHlwZW9mIGw9PSdzdHJpbmcnKXttPSdzdHJfJytsO31lbHNle209J2Vs ZW1fJysobC5fX0ZCX1RPS0VOfHwobC5fX0ZCX1RPS0VOPVtnKytdKSlbMF07Y1tt XT1sO31yZXR1cm4gZlttXXx8KGZbbV09e30pO31mdW5jdGlvbiBlKGwpe2lmKCFs Lm5vZGVOYW1lKXJldHVybiBmYWxzZTt0cnl7aWYobnVsbCE9bC5vZmZzZXRQYXJl bnQpcmV0dXJuIGZhbHNlO31jYXRjaChtKXt9aWYoZG9jdW1lbnQuZG9jdW1lbnRF bGVtZW50LmNvbnRhaW5zKXtyZXR1cm4gIWRvY3VtZW50LmRvY3VtZW50RWxlbWVu dC5jb250YWlucyhsKTt9ZWxzZSByZXR1cm4gKGRvY3VtZW50LmRvY3VtZW50RWxl bWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihsKSZiKTt9dmFyIGE9e3NldDpm dW5jdGlvbihuLG0sbyl7dmFyIGw9ZChuKTtsW21dPW87cmV0dXJuIG47fSxnZXQ6 ZnVuY3Rpb24ocCxvLG4pe3ZhciBtPWQocCkscT1tW29dO2lmKHR5cGVvZiBxPT09 J3VuZGVmaW5lZCcmJnAuZ2V0QXR0cmlidXRlKXt2YXIgbD1wLmdldEF0dHJpYnV0 ZSgnZGF0YS0nK28pO3E9KG51bGw9PT1sKT91bmRlZmluZWQ6bDt9aWYoKG4hPT11 bmRlZmluZWQpJiYocT09PXVuZGVmaW5lZCkpcT1tW29dPW47cmV0dXJuIHE7fSxy ZW1vdmU6ZnVuY3Rpb24obixtKXt2YXIgbD1kKG4pLG89bFttXTtkZWxldGUgbFtt XTtyZXR1cm4gbzt9LGNsZWFudXA6ZnVuY3Rpb24oKXt2YXIgbSxsO2ZvcihtIGlu IGMpe2w9Y1ttXTtpZihlKGwpKXtkZWxldGUgZlttXTtkZWxldGUgY1ttXTt9fX19 O2ouZXhwb3J0cz1hO30pOwpfX2UoImRhdGEtc3RvcmUiLFsiRGF0YVN0b3JlIl0s ZnVuY3Rpb24oYSxiKXthLkRhdGFTdG9yZT1hLkRhdGFTdG9yZXx8YignRGF0YVN0 b3JlJyk7fSwzKTsKZnVuY3Rpb24gRW11Q29udHJvbGxlcihhLGIpe3RoaXMuaW1w cmVzc2lvbj1iO3RoaXMuY29udGFpbmVySWQ9YTtEYXRhU3RvcmUuc2V0KCQoYSks J2VtdUNvbnRyb2xsZXInLHRoaXMpO3JldHVybiB0aGlzO31jb3B5X3Byb3BlcnRp ZXMoRW11Q29udHJvbGxlcix7ZnJvbUNvbnRhaW5lcjpmdW5jdGlvbihhKXt2YXIg Yj1nZShhKTtpZighYilyZXR1cm4gbnVsbDtyZXR1cm4gRGF0YVN0b3JlLmdldChi LCdlbXVDb250cm9sbGVyJyk7fSxnZXRFdmVudENsYXNzOmZ1bmN0aW9uKGEpe3Jl dHVybiAiZW11RXZlbnQiK1N0cmluZyhhKS50cmltKCk7fX0pO2NvcHlfcHJvcGVy dGllcyhFbXVDb250cm9sbGVyLnByb3RvdHlwZSx7RVZFTlRfSEFORExFUl9QQVRI OicvYWpheC9lbXUvZW5kLnBocCcsQ0xJQ0s6MSxGQU46ImZhZF9mYW4iLGV2ZW50 OmZ1bmN0aW9uKGMsYixkLGEpe3ZhciBlPXtlaWQ6dGhpcy5pbXByZXNzaW9uLGY6 MCx1aTp0aGlzLmNvbnRhaW5lcklkLGVuOmMsYToxfTtpZihiKWUuZWQ9SlNPTi5z dHJpbmdpZnkoYik7aWYoIWEpdmFyIGE9YmFnb2Zob2xkaW5nO3ZhciBmPW5ldyBB c3luY1JlcXVlc3QoKS5zZXRVUkkodGhpcy5FVkVOVF9IQU5ETEVSX1BBVEgpLnNl dERhdGEoZSkuc2V0RXJyb3JIYW5kbGVyKGEpO2lmKGQpZi5zZXRIYW5kbGVyKGQp O2Yuc2VuZCgpO30scmVkaXJlY3Q6ZnVuY3Rpb24oKXt2YXIgYT17ZWlkOnRoaXMu aW1wcmVzc2lvbixmOjAsdWk6dGhpcy5jb250YWluZXJJZCxlbjp0aGlzLkNMSUNL LGE6MCxzaWc6TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjY1NTM1KSs2NTUzNn07 dmFyIGI9bmV3IFVSSSh0aGlzLkVWRU5UX0hBTkRMRVJfUEFUSCk7Yi5zZXRRdWVy eURhdGEoYSk7Z29VUkkoYik7fX0pOwp2YXIgU2hvcnRDbGlja0hhbmRsZXJzPXtF VkVOVF9OQU1FX0NBTUVfQkFDSzonY2FtZWJhY2snLG9uY2xpY2tlZDpmdW5jdGlv bihhKXtpZih0aGlzLm9uc2l0ZSlyZXR1cm47aWYoYS5idXR0b24hPT0wfHxhLmdl dE1vZGlmaWVycygpLmFueSlyZXR1cm47dGhpcy5jbGlja190cz0oK25ldyBEYXRl KCkpO2lmKHRoaXMubGlzdGVuZXJzIT09dW5kZWZpbmVkKWZvcih2YXIgYiBpbiB0 aGlzLmxpc3RlbmVycyl0aGlzLmxpc3RlbmVyc1tiXS5yZW1vdmUoKTt0aGlzLmxp c3RlbmVycz17Zm9jdXM6RXZlbnQubGlzdGVuKHdpbmRvdywnZm9jdXMnLFNob3J0 Q2xpY2tIYW5kbGVycy5vbmNhbWViYWNrLmJpbmQodGhpcykpfTt9LG9uY2FtZWJh Y2s6ZnVuY3Rpb24oYyl7dmFyIGI9KCtuZXcgRGF0ZSgpKS10aGlzLmNsaWNrX3Rz O3RoaXMubGlzdGVuZXJzW2MudHlwZV0ucmVtb3ZlKCk7dmFyIGE9e2NsaWNrX3Rz OnRoaXMuY2xpY2tfdHMsbGVuZ3RoOmIsdHJpZ2dlcjpjLnR5cGV9O3RoaXMuc2Vu ZERhdGEoU2hvcnRDbGlja0hhbmRsZXJzLkVWRU5UX05BTUVfQ0FNRV9CQUNLLGEp O319OwpmdW5jdGlvbiBFbXVUcmFja2VyKGEsYyl7dGhpcy5iYXNlPUVtdUNvbnRy b2xsZXIuZnJvbUNvbnRhaW5lcihhKTshdGhpcy5iYXNlO3RoaXMub25zaXRlPWM7 dmFyIGI9RE9NLnNjcnkoJChhKSwiYS4iK0VtdUNvbnRyb2xsZXIuZ2V0RXZlbnRD bGFzcyhFbXVUcmFja2VyLkVWRU5UX0NMSUNLKSk7Yi5lYWNoKGZ1bmN0aW9uKGQp e0V2ZW50Lmxpc3RlbihkLCdjbGljaycsU2hvcnRDbGlja0hhbmRsZXJzLm9uY2xp Y2tlZC5iaW5kKHRoaXMpKTt9LmJpbmQodGhpcykpO3JldHVybiB0aGlzO31jb3B5 X3Byb3BlcnRpZXMoRW11VHJhY2tlcix7RVZFTlRfQ0xJQ0s6MX0pO2NvcHlfcHJv cGVydGllcyhFbXVUcmFja2VyLnByb3RvdHlwZSx7c2VuZERhdGE6ZnVuY3Rpb24o YixhKXt0aGlzLmJhc2UuZXZlbnQoYixhKTt9fSk7Cl9fZSgiRG9jdW1lbnRUaXRs ZSIsWyJhcnJheS1leHRlbnNpb25zIiwiYXJiaXRlciJdLGZ1bmN0aW9uKGosbCxr LGkpe2woJ2FycmF5LWV4dGVuc2lvbnMnKTt2YXIgYT1sKCdhcmJpdGVyJyk7dmFy IG09ZG9jdW1lbnQudGl0bGU7dmFyIGI9MTUwMDt2YXIgaD1bXTt2YXIgZz0wO3Zh ciBlPW51bGw7dmFyIGY9dHJ1ZTtmdW5jdGlvbiBkKCl7aWYoaC5sZW5ndGg+MCl7 aWYoZil7Yy5zZXQoaFtnXS50aXRsZSx0cnVlKTtnPSsrZyVoLmxlbmd0aDtmPWZh bHNlO31lbHNlIGMucmVzZXQoKTt9ZWxzZXtjbGVhckludGVydmFsKGUpO2U9bnVs bDtjLnJlc2V0KCk7fX12YXIgYz17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG07fSxz ZXQ6ZnVuY3Rpb24obixvKXtkb2N1bWVudC50aXRsZT1uO2lmKCFvKXttPW47YS5p bmZvcm0oJ3VwZGF0ZV90aXRsZScsbik7fX0scmVzZXQ6ZnVuY3Rpb24oKXtjLnNl dChjLmdldCgpLHRydWUpO2Y9dHJ1ZTt9LGJsaW5rOmZ1bmN0aW9uKG8pe3ZhciBu PXt0aXRsZTpvfTtoLnB1c2gobik7aWYoZT09PW51bGwpZT1zZXRJbnRlcnZhbChk LGIpO3JldHVybiB7c3RvcDpmdW5jdGlvbigpe3ZhciBwPWguaW5kZXhPZihuKTtp ZihwPj0wKXtoLnNwbGljZShwLDEpO2lmKGc+cCl7Zy0tO31lbHNlIGlmKGc9PXAm Jmc9PWgubGVuZ3RoKWc9MDt9fX07fX07ai5Eb2N1bWVudFRpdGxlPWsuZXhwb3J0 cz1jO30sMyk7Cl9fZSgibm90aWZpY2F0aW9ucy1jb3VudGVyIixbImFyYml0ZXIi LCJEb2N1bWVudFRpdGxlIiwiSlNMb2dnZXIiXSxmdW5jdGlvbihmLGgsZyxlKXt2 YXIgYT1oKCdhcmJpdGVyJyk7dmFyIGI9aCgnRG9jdW1lbnRUaXRsZScpO3ZhciBj PWgoJ0pTTG9nZ2VyJyk7dmFyIGQ9e21lc3NhZ2VzOjAsbm90aWZpY2F0aW9uczow LHJlcXVlc3RzOjB9O2YuTm90aWZpY2F0aW9uQ291bnRlcj1nLmV4cG9ydHM9e2lu aXQ6ZnVuY3Rpb24oKXthLnN1YnNjcmliZSgndXBkYXRlX3RpdGxlJyx0aGlzLl9o YW5kbGVVcGRhdGUuYmluZCh0aGlzKSk7YS5zdWJzY3JpYmUoJ2pld2VsL2NvdW50 LXVwZGF0ZWQnLHRoaXMuX2hhbmRsZUNvdW50VXBkYXRlLmJpbmQodGhpcykpO30s Z2V0Q291bnQ6ZnVuY3Rpb24oKXt2YXIgaj0wO2Zvcih2YXIgayBpbiBkKXt2YXIg aT1OdW1iZXIoZFtrXSk7aWYodHlwZW9mIGRba109PSdzdHJpbmcnJiZpc05hTihp KSlyZXR1cm4gZFtrXTtpZihpc05hTihpKXx8aTwwKXtjLmNyZWF0ZSgnamV3ZWxz JykuZXJyb3IoJ2JhZF9jb3VudCcse2pld2VsOmssY291bnQ6ZFtrXX0pO2NvbnRp bnVlO31qKz1pO31yZXR1cm4gajt9LHVwZGF0ZVRpdGxlOmZ1bmN0aW9uKCl7dmFy IGo9dGhpcy5nZXRDb3VudCgpO3ZhciBpPWIuZ2V0KCk7aT1qPycoJytqKycpICcr aTppO2Iuc2V0KGksdHJ1ZSk7fSxfaGFuZGxlQ291bnRVcGRhdGU6ZnVuY3Rpb24o aixpKXtkW2kuamV3ZWxdPWkuY291bnQ7dGhpcy51cGRhdGVUaXRsZSgpO30sX2hh bmRsZVVwZGF0ZTpmdW5jdGlvbihqLGkpe3RoaXMudXBkYXRlVGl0bGUoKTt9fTt9 LDMpOwpfX2UoIkFqYXhSZXF1ZXN0IixbImFycmF5LWV4dGVuc2lvbnMiLCJqc29u IiwiU3lzdGVtRXZlbnRzIiwidWEiLCJ1cmkiXSxmdW5jdGlvbihoLGosaSxnKXtq KCdhcnJheS1leHRlbnNpb25zJyk7aignanNvbicpO3ZhciBiPWooJ1N5c3RlbUV2 ZW50cycpO3ZhciBrPWooJ3VhJyk7dmFyIGM9aigndXJpJyk7dmFyIGY9ZmFsc2U7 ZnVuY3Rpb24gYShsLG4sbSl7aWYod2luZG93LlhNTEh0dHBSZXF1ZXN0KXt0aGlz Lnhocj1uZXcgWE1MSHR0cFJlcXVlc3QoKTt9ZWxzZSBpZih3aW5kb3cuQWN0aXZl WE9iamVjdCl0aGlzLnhocj1uZXcgQWN0aXZlWE9iamVjdCgnTVNYTUwyLlhNTEhU VFAuMy4wJyk7aWYoIShuIGluc3RhbmNlb2YgYykpbj1uZXcgYyhuKTtpZihtJiZs PT0nR0VUJyl7bi5zZXRRdWVyeURhdGEobSk7fWVsc2UgdGhpcy5fcGFyYW1zPW07 dGhpcy5tZXRob2Q9bDt0aGlzLnVyaT1uO3RoaXMueGhyLm9wZW4obCxuKTt9YS5j b3JzRW5hYmxlZD13aW5kb3cuWE1MSHR0cFJlcXVlc3QmJignd2l0aENyZWRlbnRp YWxzJyBpbiBuZXcgWE1MSHR0cFJlcXVlc3QoKSk7YS5FUlJPUj0nYXI6ZXJyb3In O2EuVElNRU9VVD0nYXI6dGltZW91dCc7YS5QUk9YWV9FUlJPUj0nYXI6cHJveHkg ZXJyb3InO2EuVFJBTlNQT1JUX0VSUk9SPSdhcjp0cmFuc3BvcnQgZXJyb3InO2Eu U0VSVkVSX0VSUk9SPSdhcjpodHRwIGVycm9yJzthLlBBUlNFX0VSUk9SPSdhcjpw YXJzZSBlcnJvcic7YS5faW5mbGlnaHQ9W107ZnVuY3Rpb24gZCgpe3ZhciBsPWEu X2luZmxpZ2h0O2EuX2luZmxpZ2h0PVtdO2wuZWFjaChmdW5jdGlvbihtKXttLmFi b3J0KCk7fSk7fWZ1bmN0aW9uIGUobCl7bC5vblJlc3BvbnNlPWwub25FcnJvcj1s Lm9uU3VjY2Vzcz1udWxsO2NsZWFyVGltZW91dChsLl90aW1lcik7aWYobC54aHIm JmwueGhyLnJlYWR5U3RhdGU8NCl7bC54aHIuYWJvcnQoKTtsLnhocj1udWxsO31h Ll9pbmZsaWdodD1hLl9pbmZsaWdodC5maWx0ZXIoZnVuY3Rpb24obSl7cmV0dXJu IG0mJm0hPWwmJm0ueGhyJiZtLnhoci5yZWFkeVN0YXRlPDQ7fSk7fWEucHJvdG90 eXBlPXt0aW1lb3V0OjYwMDAwLHByZWx1ZGU6L15mb3IgXCg7O1wpOy8sX2NhbGw6 ZnVuY3Rpb24obCxtKXtpZih0aGlzW2xdKXRoaXNbbF0odGhpcyk7fSxfcGFyc2VT dGF0dXM6ZnVuY3Rpb24oKXt2YXIgbixtO3RyeXtuPXRoaXMueGhyLnN0YXR1cztt PXRoaXMueGhyLnN0YXR1c1RleHQ7fWNhdGNoKGwpe3RoaXMuZXJyb3JUeXBlPWEu VFJBTlNQT1JUX0VSUk9SO3RoaXMuZXJyb3JUZXh0PWwrJyc7cmV0dXJuO31pZihu PT09MCYmISgvXihmaWxlfGZ0cCkvLnRlc3QodGhpcy51cmkpKSl7dGhpcy5lcnJv clR5cGU9YS5UUkFOU1BPUlRfRVJST1I7fWVsc2UgaWYobj49MTAwJiZuPDIwMCl7 dGhpcy5lcnJvclR5cGU9YS5QUk9YWV9FUlJPUjt9ZWxzZSBpZihuPj0yMDAmJm48 MzAwKXtyZXR1cm47fWVsc2UgaWYobj49MzAwJiZuPDQwMCl7dGhpcy5lcnJvclR5 cGU9YS5QUk9YWV9FUlJPUjt9ZWxzZSBpZihuPj00MDAmJm48NTAwKXt0aGlzLmVy cm9yVHlwZT1hLlNFUlZFUl9FUlJPUjt9ZWxzZSBpZihuPj01MDAmJm48NjAwKXt0 aGlzLmVycm9yVHlwZT1hLlBST1hZX0VSUk9SO31lbHNlIGlmKG49PTEyMjMpe3Jl dHVybjt9ZWxzZSBpZihuPj0xMjAwMSYmbjw9MTIxNTYpe3RoaXMuZXJyb3JUeXBl PWEuVFJBTlNQT1JUX0VSUk9SO31lbHNle209J3VucmVjb2duaXplZCBzdGF0dXMg Y29kZTogJytuO3RoaXMuZXJyb3JUeXBlPWEuRVJST1I7fWlmKCF0aGlzLmVycm9y VHlwZSl0aGlzLmVycm9yVGV4dD1tO30sX3BhcnNlQ29udGVudDpmdW5jdGlvbigp e3ZhciBtO3RyeXttPXRoaXMueGhyLnJlc3BvbnNlVGV4dHx8Jyc7fWNhdGNoKGwp e3RoaXMuZXJyb3JUeXBlPWEuRVJST1I7dGhpcy5lcnJvclRleHQ9J3Jlc3BvbnNl VGV4dCBub3QgYXZhaWxhYmxlIC0gJytsLm1lc3NhZ2U7fXRyeXtpZih0aGlzLnBy ZWx1ZGUpe2lmKCF0aGlzLnByZWx1ZGUudGVzdChtKSl0aHJvdyBuZXcgRXJyb3Io J01pc3NpbmcgcHJlbHVkZSAtIHBvc3NpYmxlIFhTUyB2dWxuZXJhYmlsaXR5ISkn KTttPW0ucmVwbGFjZSh0aGlzLnByZWx1ZGUsJycpO310aGlzLmpzb249SlNPTi5w YXJzZShtKTt9Y2F0Y2gobCl7dGhpcy5lcnJvclR5cGU9YS5QQVJTRV9FUlJPUjt0 aGlzLmVycm9yVGV4dD0nZXhjZXB0aW9uIHBhcnNpbmcgSlNPTiAtICcrbC5tZXNz YWdlO31pZighdGhpcy5lcnJvclR5cGUmJiF0aGlzLmpzb24pe3RoaXMuZXJyb3JU eXBlPWEuUEFSU0VfRVJST1I7dGhpcy5lcnJvclRleHQ9J2VtcHR5IEpTT04nO319 LF9vblJlYWR5U3RhdGU6ZnVuY3Rpb24oKXtpZighdGhpcy54aHJ8fHRoaXMueGhy LnJlYWR5U3RhdGU8NHx8ZilyZXR1cm47dGhpcy5fY2FsbCgnb25SZXNwb25zZScp O3RoaXMuX3BhcnNlU3RhdHVzKCk7aWYoIXRoaXMuZXJyb3JUeXBlKXRoaXMuX3Bh cnNlQ29udGVudCgpO3RoaXMuX2NhbGwoIXRoaXMuZXJyb3JUeXBlPydvblN1Y2Nl c3MnOidvbkVycm9yJyx0cnVlKTtlKHRoaXMpO30sc2VuZDpmdW5jdGlvbihsKXt0 aGlzLnhoci5vbnJlYWR5c3RhdGVjaGFuZ2U9Yi50cmFwRXJyb3IodGhpcy5fb25S ZWFkeVN0YXRlLmJpbmQodGhpcykpO3ZhciBtPXRoaXMudGltZW91dDtpZihtKXRo aXMuX3RpbWVyPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dGhpcy5lcnJvclR5cGU9 YS5USU1FT1VUO3RoaXMuZXJyb3JUZXh0PSd0aW1lb3V0IGFmdGVyICcrbSsnIG1z Jzt0aGlzLl9jYWxsKCdvbkVycm9yJyx0cnVlKTtlKHRoaXMpO30pLmJpbmQodGhp cyksbSxmYWxzZSk7YS5faW5mbGlnaHQucHVzaCh0aGlzKTtpZih0aGlzLm1ldGhv ZD09J1BPU1QnKXRoaXMueGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlw ZScsJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpO3RoaXMueGhy LnNlbmQobD9jLmltcGxvZGVRdWVyeShsKTonJyk7fSxhYm9ydDpmdW5jdGlvbigp e2UodGhpcyk7fSx0b1N0cmluZzpmdW5jdGlvbigpe3ZhciBsPSdbQWpheFJlcXVl c3QgcmVhZHlTdGF0ZT0nK3RoaXMueGhyLnJlYWR5U3RhdGU7aWYodGhpcy5lcnJv clR5cGUpbCs9JyBlcnJvclR5cGU9Jyt0aGlzLmVycm9yVHlwZSsnICgnK3RoaXMu ZXJyb3JUZXh0KycpJztyZXR1cm4gbCsnXSc7fSx0b0pTT046ZnVuY3Rpb24oKXty ZXR1cm4ge2pzb246dGhpcy5qc29uLGVycm9yVHlwZTp0aGlzLmVycm9yVHlwZSxl cnJvclRleHQ6dGhpcy5lcnJvclRleHR9O319O2lmKHdpbmRvdy5hZGRFdmVudExp c3RlbmVyKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJyxm dW5jdGlvbigpe2Y9dHJ1ZTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zj1mYWxzZTt9 KTt9LGZhbHNlKTtpZihrLmZpcmVmb3goKSl3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l cigna2V5ZG93bicsZnVuY3Rpb24oZXZlbnQpe2lmKGV2ZW50LmtleUNvZGU9PT1L RVlTLkVTQylldmVudC5wcmV2ZW50KCk7fSxmYWxzZSk7fWlmKHdpbmRvdy5hdHRh Y2hFdmVudCl3aW5kb3cuYXR0YWNoRXZlbnQoJ29udW5sb2FkJyxkKTtpLmV4cG9y dHM9YTt9KTsKX19lKCJDaGFubmVsQ29uc3RhbnRzIixbXSxmdW5jdGlvbihkLGYs ZSxjKXt2YXIgYT0ncHJlc2VuY2UvJzt2YXIgYj17T05fQ09OTkVDVDphKydjb25u ZWN0JyxPTl9JRExFOmErJ2lkbGUnLE9OX1NIVVRET1dOOmErJ3NodXRkb3duJyxP Tl9JTlZBTElEX0hJU1RPUlk6YSsnaW52YWxpZF9oaXN0b3J5JyxPTl9DT05GSUc6 YSsnY29uZmlnJyxPTl9FTlRFUl9TVEFURTphKydlbnRlcl9zdGF0ZScsT05fRVhJ VF9TVEFURTphKydleGl0X3N0YXRlJyxPSzonb2snLEVSUk9SOidlcnJvcicsRVJS T1JfTUFYOidlcnJvcl9tYXgnLEVSUk9SX01JU1NJTkc6J2Vycm9yX21pc3Npbmcn LEVSUk9SX01TR19UWVBFOidlcnJvcl9tc2dfdHlwZScsRVJST1JfU0hVVERPV046 J2Vycm9yX3NodXRkb3duJyxISU5UX0FVVEg6J3NodXRkb3duIGF1dGgnLEhJTlRf Q09OTjonc2h1dGRvd24gY29ubicsSElOVF9ESVNBQkxFRDonc2h1dGRvd24gZGlz YWJsZWQnLEhJTlRfSU5WQUxJRF9TVEFURTonc2h1dGRvd24gaW52YWxpZCBzdGF0 ZScsSElOVF9NQUlOVDonc2h1dGRvd24gbWFpbnQnLEhJTlRfVU5TVVBQT1JURUQ6 J3NodXRkb3duIHVuc3VwcG9ydGVkJyxyZWFzb25fVW5rbm93bjowLHJlYXNvbl9B c3luY0Vycm9yOjEscmVhc29uX1Rvb0xvbmc6MixyZWFzb25fUmVmcmVzaDozLHJl YXNvbl9SZWZyZXNoRGVsYXk6NCxyZWFzb25fVUlSZXN0YXJ0OjUscmVhc29uX05l ZWRTZXE6NixyZWFzb25fUHJldkZhaWxlZDo3LHJlYXNvbl9JRnJhbWVMb2FkR2l2 ZVVwOjgscmVhc29uX0lGcmFtZUxvYWRSZXRyeTo5LHJlYXNvbl9JRnJhbWVMb2Fk UmV0cnlXb3JrZWQ6MTAscmVhc29uX1BhZ2VUcmFuc2l0aW9uUmV0cnk6MTEscmVh c29uX0lGcmFtZUxvYWRNYXhTdWJkb21haW46MTIscmVhc29uX05vQ2hhbm5lbElu Zm86MTMscmVhc29uX05vQ2hhbm5lbEhvc3Q6MTQsZ2V0QXJiaXRlclR5cGU6ZnVu Y3Rpb24oZyl7cmV0dXJuIGErJ21lc3NhZ2U6JytnO319O2UuZXhwb3J0cz1iO30p OwpfX2UoImV2ZW50LWV4dGVuc2lvbnMiLFsiZXZlbnQtZm9ybS1idWJibGluZyIs IkRhdGFTdG9yZSIsIk9iamVjdFV0aWxzIiwicGFyZW50IiwiY29weVByb3BlcnRp ZXMiLCJ1c2VyQWN0aW9uIiwiU3lzdGVtRXZlbnRzIl0sZnVuY3Rpb24oaixwLG4s aSl7cCgnZXZlbnQtZm9ybS1idWJibGluZycpO3ZhciBiPXAoJ0RhdGFTdG9yZScp O3ZhciBkPXAoJ09iamVjdFV0aWxzJyk7dmFyIGU9cCgncGFyZW50Jyk7dmFyIGg9 cCgnY29weVByb3BlcnRpZXMnKTt2YXIgcj1wKCd1c2VyQWN0aW9uJyk7dmFyIGY9 cCgnU3lzdGVtRXZlbnRzJyk7RXZlbnQuREFUQVNUT1JFX0tFWT0nRXZlbnQubGlz dGVuZXJzJztpZighRXZlbnQucHJvdG90eXBlKUV2ZW50LnByb3RvdHlwZT17fTtm dW5jdGlvbiBhKHMpe3M9c3x8d2luZG93LmV2ZW50fHx7fTtpZighcy5faW5oZXJp dHNfZnJvbV9wcm90b3R5cGUpZm9yKHZhciB1IGluIEV2ZW50LnByb3RvdHlwZSl0 cnl7c1t1XT1FdmVudC5wcm90b3R5cGVbdV07fWNhdGNoKHQpe31yZXR1cm4gczt9 aChFdmVudC5wcm90b3R5cGUse19pbmhlcml0c19mcm9tX3Byb3RvdHlwZTp0cnVl LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbEJ1YmJsZT10cnVlO3RoaXMuc3Rv cFByb3BhZ2F0aW9uJiZ0aGlzLnN0b3BQcm9wYWdhdGlvbigpO3JldHVybiB0aGlz O30scHJldmVudDpmdW5jdGlvbigpe3RoaXMucmV0dXJuVmFsdWU9ZmFsc2U7dGhp cy5wcmV2ZW50RGVmYXVsdCYmdGhpcy5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiB0 aGlzO30sa2lsbDpmdW5jdGlvbigpe3RoaXMuc3RvcCgpLnByZXZlbnQoKTtyZXR1 cm4gZmFsc2U7fSxnZXRUYXJnZXQ6ZnVuY3Rpb24oKXt2YXIgcz10aGlzLnRhcmdl dHx8dGhpcy5zcmNFbGVtZW50O3JldHVybiBzPyQocyk6bnVsbDt9LGdldFJlbGF0 ZWRUYXJnZXQ6ZnVuY3Rpb24oKXt2YXIgcz10aGlzLnJlbGF0ZWRUYXJnZXR8fCh0 aGlzLmZyb21FbGVtZW50PT09dGhpcy5zcmNFbGVtZW50P3RoaXMudG9FbGVtZW50 OnRoaXMuZnJvbUVsZW1lbnQpO3JldHVybiBzPyQocyk6bnVsbDt9LGdldE1vZGlm aWVyczpmdW5jdGlvbigpe3ZhciBzPXtjb250cm9sOiEhdGhpcy5jdHJsS2V5LHNo aWZ0OiEhdGhpcy5zaGlmdEtleSxhbHQ6ISF0aGlzLmFsdEtleSxtZXRhOiEhdGhp cy5tZXRhS2V5fTtzLmFjY2Vzcz11YS5vc3goKT9zLmNvbnRyb2w6cy5hbHQ7cy5h bnk9cy5jb250cm9sfHxzLnNoaWZ0fHxzLmFsdHx8cy5tZXRhO3JldHVybiBzO319 KTtoKEV2ZW50LHtsaXN0ZW46ZnVuY3Rpb24odCx6Yyx2LHope2lmKHR5cGVvZiB0 PT0nc3RyaW5nJyl0PSQodCk7aWYodHlwZW9mIHo9PSd1bmRlZmluZWQnKXo9RXZl bnQuUHJpb3JpdHkuTk9STUFMO2lmKHR5cGVvZiB6Yz09J29iamVjdCcpe3ZhciB1 PXt9O2Zvcih2YXIgemIgaW4gemMpdVt6Yl09RXZlbnQubGlzdGVuKHQsemIsemNb emJdLHopO3JldHVybiB1O31pZih6Yy5tYXRjaCgvXm9uL2kpKXRocm93IG5ldyBU eXBlRXJyb3IoIkJhZCBldmVudCBuYW1lIGAiK2V2ZW50KyInOiB1c2UgYGNsaWNr Jywgbm90IGBvbmNsaWNrJy4iKTtpZih0Lm5vZGVOYW1lPT0nTEFCRUwnJiZ6Yz09 J2NsaWNrJyl7dmFyIHk9dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTt0 PXkubGVuZ3RoPT0xP3lbMF06dDt9dmFyIHc9Yi5nZXQodCxrLHt9KTtpZihxW3pj XSl7dmFyIHM9cVt6Y107emM9cy5iYXNlO3Y9cy53cmFwKHYpO31nKHQsemMpO3Zh ciB6ZD13W3pjXTtpZighKHogaW4gemQpKXpkW3pdPVtdO3ZhciB4PXpkW3pdLmxl bmd0aCx6YT1uZXcgYyh2LHpkW3pdLHgpO3pkW3pdLnB1c2goemEpO3JldHVybiB6 YTt9LHN0b3A6ZnVuY3Rpb24ocyl7cmV0dXJuIGEocykuc3RvcCgpO30scHJldmVu dDpmdW5jdGlvbihzKXtyZXR1cm4gYShzKS5wcmV2ZW50KCk7fSxraWxsOmZ1bmN0 aW9uKHMpe3JldHVybiBhKHMpLmtpbGwoKTt9LGdldEtleUNvZGU6ZnVuY3Rpb24o ZXZlbnQpe2V2ZW50PWEoZXZlbnQpO2lmKCFldmVudClyZXR1cm4gZmFsc2U7c3dp dGNoKGV2ZW50LmtleUNvZGUpe2Nhc2UgNjMyMzI6cmV0dXJuIDM4O2Nhc2UgNjMy MzM6cmV0dXJuIDQwO2Nhc2UgNjMyMzQ6cmV0dXJuIDM3O2Nhc2UgNjMyMzU6cmV0 dXJuIDM5O2Nhc2UgNjMyNzI6Y2FzZSA2MzI3MzpjYXNlIDYzMjc1OnJldHVybiBu dWxsO2Nhc2UgNjMyNzY6cmV0dXJuIDMzO2Nhc2UgNjMyNzc6cmV0dXJuIDM0O31p ZihldmVudC5zaGlmdEtleSlzd2l0Y2goZXZlbnQua2V5Q29kZSl7Y2FzZSAzMzpj YXNlIDM0OmNhc2UgMzc6Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6cmV0dXJuIG51 bGw7fXJldHVybiBldmVudC5rZXlDb2RlO30sZ2V0UHJpb3JpdGllczpmdW5jdGlv bigpe2lmKCFvKXt2YXIgcz1kLmdldFZhbHVlcyhFdmVudC5Qcmlvcml0eSk7cy5z b3J0KGZ1bmN0aW9uKHQsdSl7cmV0dXJuIHQtdTt9KTtvPXM7fXJldHVybiBvO30s X19maXJlOmZ1bmN0aW9uKHMsdSxldmVudCl7dmFyIHQ9RXZlbnQuX19nZXRIYW5k bGVyKHMsdSk7aWYodClyZXR1cm4gdChhKGV2ZW50KSk7fSxfX2dldEhhbmRsZXI6 ZnVuY3Rpb24ocyx0KXtyZXR1cm4gYi5nZXQocyxFdmVudC5EQVRBU1RPUkVfS0VZ K3QpO319KTt2YXIgbz1udWxsLGs9RXZlbnQuREFUQVNUT1JFX0tFWTt2YXIgbD1m dW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoIURPTS5jb250YWlucyh0 aGlzLHQuZ2V0UmVsYXRlZFRhcmdldCgpKSlyZXR1cm4gcy5jYWxsKHRoaXMsdCk7 fTt9O3ZhciBxPXttb3VzZWVudGVyOntiYXNlOidtb3VzZW92ZXInLHdyYXA6bH0s bW91c2VsZWF2ZTp7YmFzZTonbW91c2VvdXQnLHdyYXA6bH19O3ZhciBnPWZ1bmN0 aW9uKHMseSl7dmFyIHQ9J29uJyt5O3ZhciB3PW0uYmluZChzKTt2YXIgdj1iLmdl dChzLGspO2lmKHkgaW4gdilyZXR1cm47dlt5XT17fTtpZihzLmFkZEV2ZW50TGlz dGVuZXIpe3MuYWRkRXZlbnRMaXN0ZW5lcih5LHcsZmFsc2UpO31lbHNlIGlmKHMu YXR0YWNoRXZlbnQpcy5hdHRhY2hFdmVudCh0LHcpO2Iuc2V0KHMsayt5LHcpO2lm KHNbdF0pe3ZhciB4PXM9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ/RXZlbnQu UHJpb3JpdHkuX0JVQkJMRTpFdmVudC5Qcmlvcml0eS5UUkFESVRJT05BTDt2YXIg dT1zW3RdO3NbdF09bnVsbDtFdmVudC5saXN0ZW4ocyx5LHUseCk7fWlmKHMubm9k ZU5hbWU9PT0nRk9STScmJnk9PT0nc3VibWl0JylFdmVudC5saXN0ZW4ocyx5LEV2 ZW50Ll9fYnViYmxlU3VibWl0LmN1cnJ5KHMpLEV2ZW50LlByaW9yaXR5Ll9CVUJC TEUpO307dmFyIG09ZnVuY3Rpb24oZXZlbnQpe2V2ZW50PWEoZXZlbnQpO3ZhciB6 PWV2ZW50LnR5cGU7aWYoIWIuZ2V0KHRoaXMsaykpdGhyb3cgbmV3IEVycm9yKCJC YWQgbGlzdGVuSGFuZGxlciBjb250ZXh0LiIpO3ZhciB6YT1iLmdldCh0aGlzLGsp W3pdO2lmKCF6YSl0aHJvdyBuZXcgRXJyb3IoIk5vIHJlZ2lzdGVyZWQgaGFuZGxl cnMgZm9yIGAiK3orIicuIik7aWYoej09J2NsaWNrJyl7dmFyIHU9ZS5ieVRhZyhl dmVudC5nZXRUYXJnZXQoKSwnYScpO3ZhciB6Yj1yKCdjbGljaycsdSxldmVudCku c2V0X25hbWVzcGFjZSgnZXZ0X2V4dCcpO2lmKHdpbmRvdy5BcmJpdGVyTW9uaXRv cilBcmJpdGVyTW9uaXRvci5pbml0VUEoemIsW3VdKTt9dmFyIHc9RXZlbnQuZ2V0 UHJpb3JpdGllcygpO2Zvcih2YXIgdj0wO3Y8dy5sZW5ndGg7disrKXt2YXIgeD13 W3ZdO2lmKHggaW4gemEpe3ZhciBzPXphW3hdO2Zvcih2YXIgdD0wO3Q8cy5sZW5n dGg7dCsrKXtpZighc1t0XSljb250aW51ZTt2YXIgeT1zW3RdLmZpcmUodGhpcyxl dmVudCk7aWYoeT09PWZhbHNlKXtyZXR1cm4gZXZlbnQua2lsbCgpO31lbHNlIGlm KGV2ZW50LmNhbmNlbEJ1YmJsZSlldmVudC5zdG9wKCk7fX19cmV0dXJuIGV2ZW50 LnJldHVyblZhbHVlO307RXZlbnQuUHJpb3JpdHk9e1VSR0VOVDotMjAsVFJBRElU SU9OQUw6LTEwLE5PUk1BTDowLF9CVUJCTEU6MTAwMH07ZnVuY3Rpb24gYyh0LHMs dSl7dGhpcy5faGFuZGxlcj10O3RoaXMuX2NvbnRhaW5lcj1zO3RoaXMuX2luZGV4 PXU7fWMucHJvdG90eXBlPXtyZW1vdmU6ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5f aGFuZGxlcjtkZWxldGUgdGhpcy5fY29udGFpbmVyW3RoaXMuX2luZGV4XTt9LGZp cmU6ZnVuY3Rpb24ocyxldmVudCl7dmFyIHQ9Zi50cmFwRXJyb3IodGhpcy5faGFu ZGxlcixmdW5jdGlvbih1KXt1LmV2ZW50X3R5cGU9ZXZlbnQudHlwZTt1LmRvbV9l bGVtZW50PXMubmFtZXx8cy5pZDt1LmNhdGVnb3J5PSdldmVudGhhbmRsZXInO30p O3JldHVybiB0LmNhbGwocyxldmVudCk7fX07ai4kRT1pLiRFPWE7fSwzKTsKX19l KCJVc2VyQWN0aXZpdHkiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsImFyYml0ZXIiLCJG dW5jdGlvblV0aWxzIl0sZnVuY3Rpb24oZixoLGcsZSl7aCgiZXZlbnQtZXh0ZW5z aW9ucyIpO3ZhciBhPWgoImFyYml0ZXIiKTt2YXIgYj1oKCJGdW5jdGlvblV0aWxz Iik7dmFyIGQ9RGF0ZS5ub3coKTt2YXIgYz17REVGQVVMVF9JRExFX01TOjUwMDAs RVZFTlRfSU5URVJWQUxfTVM6NTAwLHN1YnNjcmliZU9uY2U6ZnVuY3Rpb24oail7 dmFyIGs9Yy5zdWJzY3JpYmUoZnVuY3Rpb24oKXtjLnVuc3Vic2NyaWJlKGspO2oo KTt9KTt9LHN1YnNjcmliZTpmdW5jdGlvbihqKXtyZXR1cm4gYS5zdWJzY3JpYmUo J3VzZXJhY3Rpdml0eS9hY3Rpdml0eScsaik7fSx1bnN1YnNjcmliZTpmdW5jdGlv bihqKXthLnVuc3Vic2NyaWJlKGopO30saXNBY3RpdmU6ZnVuY3Rpb24oail7cmV0 dXJuIChuZXcgRGF0ZSgpLWQ8KGp8fGMuREVGQVVMVF9JRExFX01TKSk7fX07dmFy IGk9Yi50aHJvdHRsZShmdW5jdGlvbihldmVudCl7ZD1EYXRlLm5vdygpO2EuaW5m b3JtKCd1c2VyYWN0aXZpdHkvYWN0aXZpdHknLGV2ZW50KTt9LGMuRVZFTlRfSU5U RVJWQUxfTVMsZmFsc2UpO0V2ZW50Lmxpc3Rlbihkb2N1bWVudC5kb2N1bWVudEVs ZW1lbnQse21vdXNlb3ZlcjppLGtleWRvd246aSxjbGljazppfSk7Zy5leHBvcnRz PWM7fSk7Cl9fZSgiTW92aW5nU3RhdCIsW10sZnVuY3Rpb24oYyxlLGQsYil7ZnVu Y3Rpb24gYShrKXtrPWt8fDYwMDAwO3ZhciBnPXt0Om5ldyBEYXRlKCksY291bnQ6 MCx2OjB9O3ZhciBoPWcsaj0wLGY9MDtmdW5jdGlvbiBpKCl7dmFyIGw9bmV3IERh dGUoKS1rO3doaWxlKGgmJmgubmV4dCYmaC50PGwpe2otPWgudjtmLT1oLmNvdW50 O2g9aC5uZXh0O319dGhpcy5hZGQ9ZnVuY3Rpb24obSl7ais9bTtmKys7dmFyIGw9 bmV3IERhdGUoKTtpZihsLWcudDwxMDAwKXtnLnYrPW07Zy5jb3VudCsrO31lbHNl e2cubmV4dD17dDpsLHY6bSxjb3VudDoxfTtnPWcubmV4dDtpKCk7fX07dGhpcy50 YWxseT1mdW5jdGlvbihsKXtsPWx8fDEwMDA7aSgpO3JldHVybiB7c3VtOmosY291 bnQ6Zix0aW1lQXZlcmFnZTpqKmwva307fTt9ZC5leHBvcnRzPWE7fSk7Cl9fZSgi RkJBamF4UmVxdWVzdCIsWyJkb20tY29yZSIsIkVudiIsIkFqYXhSZXF1ZXN0Il0s ZnVuY3Rpb24oZixoLGcsZSl7dmFyIGE9aCgnZG9tLWNvcmUnKS4kO3ZhciBjPWgo J0VudicpO3ZhciBiPWgoJ0FqYXhSZXF1ZXN0Jyk7ZnVuY3Rpb24gZChqLG0sayl7 az1rfHx7fTtrLl9fYT0xO2suX191c2VyPWMudXNlcjtrLnBvc3RfZm9ybV9pZD1h KCdwb3N0X2Zvcm1faWQnKS52YWx1ZTt2YXIgbD1uZXcgYihqLG0sayk7dmFyIGk9 bC5fcGFyc2VDb250ZW50O2wuX3BhcnNlQ29udGVudD1mdW5jdGlvbigpe2kuYXBw bHkodGhpcyk7dmFyIG49dGhpcy5qc29uO2lmKG4pe2lmKG4uZXJyb3Ipe3RoaXMu ZXJyb3JUeXBlPWIuU0VSVkVSX0VSUk9SO3RoaXMuZXJyb3JUZXh0PSdBc3luY1Jl c3BvbnNlIGVycm9yOiAnK24uZXJyb3I7fXRoaXMuanNvbj1uLnBheWxvYWQ7fX07 cmV0dXJuIGw7fWcuZXhwb3J0cz1kO30pOwpfX2UoIm1hdGgtZXh0ZW5zaW9ucyIs WyJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGQsZixlLGMpe3ZhciBiPWYoJ2Nv cHlQcm9wZXJ0aWVzJyk7dmFyIGE9ZS5leHBvcnRzPXtyYW5kMzI6ZnVuY3Rpb24o KXtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjQyOTQ5NjcyOTUpO30s dmVyaWZ5TnVtYmVyOmZ1bmN0aW9uKGcpe2lmKHR5cGVvZiBnPT0ndW5kZWZpbmVk J3x8aXNOYU4oZyl8fGc9PU51bWJlci5QT1NJVElWRV9JTkZJTklUWXx8Zz09TnVt YmVyLk5FR0FUSVZFX0lORklOSVRZKWc9MDtyZXR1cm4gZzt9LG1vZDpmdW5jdGlv bihnLGgpe3ZhciBpPWclaDtpZihpKmg8MClpKz1oO3JldHVybiBpO30sY2xpcDpm dW5jdGlvbihpLGgsZyl7cmV0dXJuIE1hdGgubWF4KGgsTWF0aC5taW4oaSxnKSk7 fX07YihkLGEpO30sMyk7Cl9fZSgiRG9jUlBDIixbImFycmF5LWV4dGVuc2lvbnMi LCJqc29uIl0sZnVuY3Rpb24oYyxlLGQsYil7ZSgnYXJyYXktZXh0ZW5zaW9ucycp O2UoJ2pzb24nKTt2YXIgYT17X2FwaXM6e30sb3JpZ2luOmxvY2F0aW9uLm9yaWdp bnx8KGxvY2F0aW9uKycnKS5yZXBsYWNlKC8oW146XC9dKVwvLiovLCckMScpLG9y aWdpbkZpbHRlcjovXC5mYWNlYm9va1wuY29tKDpcZCspPyQvLF9pbml0OmZ1bmN0 aW9uKCl7dmFyIGY9ZnVuY3Rpb24oZXZlbnQpe2V2ZW50PWV2ZW50fHx3aW5kb3cu ZXZlbnQ7dmFyIGc9ZXZlbnQuZG9tYWlufHxldmVudC5vcmlnaW47aWYoYS5vcmln aW5GaWx0ZXIudGVzdChnKSlhLl9kaXNwYXRjaChldmVudC5kYXRhKTt9O2lmKHdp bmRvdy5wb3N0TWVzc2FnZSlpZih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7d2lu ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLGYsZmFsc2UpO31lbHNlIHdp bmRvdy5vbm1lc3NhZ2U9Zjt0aGlzLl9pbml0PWZ1bmN0aW9uKCl7fTt9LF9kaXNw YXRjaDpmdW5jdGlvbihnKXtnPUpTT04ucGFyc2UoZyk7dmFyIGY9SlNPTi5zdHJp bmdpZnkoZy5wYXJhbXMpO2lmKGEuX2FwaXMuaGFzT3duUHJvcGVydHkoZy5hcGkp KXt2YXIgaD1hLl9hcGlzW2cuYXBpXTtpZihoW2cubWV0aG9kXSloW2cubWV0aG9k XS5hcHBseShoLGcucGFyYW1zKTt9fSxwdWJsaXNoOmZ1bmN0aW9uKGcsZil7YS5f aW5pdCgpO2EuX2FwaXNbZl09Zzt9LHByb3h5OmZ1bmN0aW9uKGwsZyxpLGope2Eu X2luaXQoKTt2YXIgaz17X3Byb3h5SWQ6TWF0aC5yYW5kb20oKS50b1N0cmluZygz NiksX3NlcTowfTtmdW5jdGlvbiBmKG0pe2tbbV09ZnVuY3Rpb24oKXt2YXIgbz17 YXBpOmcsbWV0aG9kOm0scGFyYW1zOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs KGFyZ3VtZW50cyl9O3ZhciBuPUpTT04uc3RyaW5naWZ5KG8ucGFyYW1zKTtvPUpT T04uc3RyaW5naWZ5KG8pO2lmKGwucG9zdE1lc3NhZ2Upe2wucG9zdE1lc3NhZ2Uo byxqKTt9ZWxzZSBpZihsLkRvY1JQQylsLkRvY1JQQy5fZGlzcGF0Y2gobyk7fTt9 Zm9yKHZhciBoPTA7aDxpLmxlbmd0aDtoKyspZihpW2hdKTtyZXR1cm4gazt9fTtk LmV4cG9ydHM9Yy5Eb2NSUEM9YTt9LDMpOwpfX2UoIkNoYW5uZWxUcmFuc3BvcnQi LFsiY29weVByb3BlcnRpZXMiLCJiaW5kIiwidXRpbCIsIkFqYXhSZXF1ZXN0Iiwi dXJpIiwiSlNMb2dnZXIiLCJEb2NSUEMiLCJDaGFubmVsQ29uc3RhbnRzIl0sZnVu Y3Rpb24ocCxyLHEsbil7dmFyIG09cignY29weVByb3BlcnRpZXMnKTt2YXIgaz1y KCdiaW5kJyk7dmFyIGo9cigndXRpbCcpO3ZhciBhPXIoJ0FqYXhSZXF1ZXN0Jyk7 dmFyIGk9cigndXJpJyk7dmFyIGc9cignSlNMb2dnZXInKTt2YXIgZD1yKCdEb2NS UEMnKTt2YXIgYz1yKCdDaGFubmVsQ29uc3RhbnRzJyk7ZnVuY3Rpb24gbCgpe3Jl dHVybiAoMTA0ODU3NipNYXRoLnJhbmRvbSgpfDApLnRvU3RyaW5nKDM2KTt9ZnVu Y3Rpb24gbyh1LHYpe3ZhciB3PXUuc3ViZG9tYWluO3c9dz09PW51bGw/Jyc6KHcr Jy0nKTt2YXIgeD1uZXcgaSh2KS5zZXREb21haW4odyt1Lmhvc3QrJy5mYWNlYm9v ay5jb20nKS5zZXRQb3J0KHUucG9ydCkuc2V0U2VjdXJlKGkoKS5pc1NlY3VyZSgp KTtyZXR1cm4geDt9ZnVuY3Rpb24gcyh2LHgsdyl7dmFyIHphO3ZhciB1PWZ1bmN0 aW9uKHpjKXtpZih6YSl7emE9bnVsbDtyZXR1cm4gemM/eCgpOncoKTt9fTt2YXIg eT17Y2I6bCgpfTt2YXIgemI9byh2LCcvcGluZycpLnNldFF1ZXJ5RGF0YSh5KTt2 YXIgej1uZXcgSW1hZ2UoKTt6Lm9ubG9hZD11LmJpbmQobnVsbCx0cnVlKTt6Lm9u ZXJyb3I9dS5iaW5kKG51bGwsZmFsc2UpO3phPXNldFRpbWVvdXQoei5vbmVycm9y LDEwMDAwLGZhbHNlKTt6LmFib3J0PWZ1bmN0aW9uKCl7aWYoemEpe2NsZWFyVGlt ZW91dCh6YSk7emE9bnVsbDt9ei5vbmxvYWQ9ei5vbmVycm9yPW51bGw7fTt6LnNy Yz1vKHYsJy9waW5nJyk7cmV0dXJuIHo7fWZ1bmN0aW9uIHQodSx4LHcpe3ZhciB2 PShuZXcgRGF0ZSgpLXUudXNlckFjdGl2ZSkvMTAwMHwwO3ZhciB5PXtjaGFubmVs OnUudXNlcl9jaGFubmVsLHNlcTp1LnNlcSxjbGllbnRpZDp1LnNlc3Npb25JRCxj YjpsKCksaWRsZTp2fTtpZih2PDYwKXkuc3RhdGU9J2FjdGl2ZSc7dmFyIHphPW8o dSwnL3B1bGwnKS5zZXRRdWVyeURhdGEoeSk7dmFyIHo9bmV3IGEoJ0dFVCcsemEp O2lmKGEuY29yc0VuYWJsZWQpei54aHIud2l0aENyZWRlbnRpYWxzPXRydWU7ei5v blN1Y2Nlc3M9eDt6Lm9uRXJyb3I9dzt6LnNlbmQoKTtyZXR1cm4gejt9ZnVuY3Rp b24gaCh1KXt0aGlzLm1hbmFnZXI9dTsodGhpcy5pbml0JiZ0aGlzLmluaXQoKSk7 fWZ1bmN0aW9uIGIodSl7aC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7fWIucHJvdG90 eXBlPXtsb2dOYW1lOidDT1JTJyxlbnRlclN0YXRlOmZ1bmN0aW9uKHcsdSl7aWYo dGhpcy5fcmVxdWVzdCl7dGhpcy5fcmVxdWVzdC5hYm9ydCh0cnVlKTt0aGlzLl9y ZXF1ZXN0PW51bGw7fWlmKHc9PSdpbml0JylzZXRUaW1lb3V0KGsodGhpcy5tYW5h Z2VyLCdleGl0U3RhdGUnLGMuT0spLDMwMDAsZmFsc2UpO2lmKCEvcHVsbHxwaW5n Ly50ZXN0KHcpKXJldHVybjt2YXIgdj10aGlzLm1hbmFnZXI7aWYodz09J3Bpbmcn KXt0aGlzLl9yZXF1ZXN0PXModSxrKHYsJ2V4aXRTdGF0ZScsYy5PSyksayh2LCdl eGl0U3RhdGUnLGMuRVJST1IpKTt9ZWxzZSBpZih3PT0ncHVsbCcpdGhpcy5fcmVx dWVzdD10KHUsayh2LCdfcHJvY2Vzc1RyYW5zcG9ydERhdGEnKSxrKHYsJ2V4aXRT dGF0ZScsYy5FUlJPUikpO319O2Z1bmN0aW9uIGYodSl7aC5hcHBseSh0aGlzLGFy Z3VtZW50cyk7dGhpcy5faWZyYW1lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lm cmFtZScpO3RoaXMuX2lmcmFtZS5zdHlsZS5kaXNwbGF5PSdub25lJztkb2N1bWVu dC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX2lmcmFtZSk7ZC5wdWJsaXNoKHRoaXMs J291dGVyVHJhbnNwb3J0Jyk7fWYucHJvdG90eXBlPXtsb2dOYW1lOidpZnJhbWUn LF9pbml0SWZyYW1lOmZ1bmN0aW9uKHUpe3dpbmRvdy5vbmNoYW5uZWxpZnJhbWVy ZWFkeT1mdW5jdGlvbigpe2cuY3JlYXRlKCdjaGFubmVsJykubG9nKCdpZnJhbWVf cmVzb3VyY2VzJyk7cmV0dXJuIHUucmVzb3VyY2VzO307aWYodSl7dGhpcy5faWZy YW1lVVJJPW8odSx1LnBhdGgpO2lmKHUuYnVzdElmcmFtZSl0aGlzLl9pZnJhbWVV Ukkuc2V0UXVlcnlEYXRhKHtjYjpsKCl9KTt9ZWxzZSB0aGlzLl9pZnJhbWVVUkk9 J2Fib3V0OmJsYW5rJzt0aGlzLl9pZnJhbWVQcm94eT1udWxsO3RyeXt0aGlzLl9p ZnJhbWUuY29udGVudFdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHRoaXMuX2lmcmFt ZVVSSSk7fWNhdGNoKHYpe3RoaXMuZXhpdFN0YXRlKGMuRVJST1IsdisnJyk7fX0s ZW50ZXJTdGF0ZTpmdW5jdGlvbih2LHUpe2lmKHY9PSdpbml0Jyl7dGhpcy5faW5p dElmcmFtZSh1KTt9ZWxzZSBpZigvaWRsZXxwaW5nfHB1bGwvLnRlc3Qodikpe2lm KHRoaXMuX2lmcmFtZVByb3h5KXt0aGlzLl9pZnJhbWVQcm94eS5lbnRlclN0YXRl LmFwcGx5KHRoaXMuX2lmcmFtZVByb3h5LGFyZ3VtZW50cyk7fWVsc2UgaWYodiE9 J2lkbGUnKXRoaXMuZXhpdFN0YXRlKGMuRVJST1IsJ2lmcmFtZSBub3QgeWV0IGxv YWRlZCcpO31lbHNlIGlmKHY9PSdzaHV0ZG93bicpdGhpcy5faW5pdElmcmFtZSgp O30sX3Byb2Nlc3NUcmFuc3BvcnREYXRhOmZ1bmN0aW9uKCl7dGhpcy5tYW5hZ2Vy Ll9wcm9jZXNzVHJhbnNwb3J0RGF0YS5hcHBseSh0aGlzLm1hbmFnZXIsYXJndW1l bnRzKTt9LGV4aXRTdGF0ZTpmdW5jdGlvbih1KXtpZih0aGlzLm1hbmFnZXIuc3Rh dGU9PSdpbml0JyYmdT09Yy5PSyl0aGlzLl9pZnJhbWVQcm94eT1kLnByb3h5KHRo aXMuX2lmcmFtZS5jb250ZW50V2luZG93LCdpbm5lclRyYW5zcG9ydCcsWydlbnRl clN0YXRlJ10sKHRoaXMuX2lmcmFtZVVSSSsnJykucmVwbGFjZSgvaWZyYW1lLiov LCcnKSk7aWYoL3Bpbmd8cHVsbC8udGVzdCh0aGlzLm1hbmFnZXIuc3RhdGUpJiYh dGhpcy5faWZyYW1lUHJveHkpcmV0dXJuO3RoaXMubWFuYWdlci5leGl0U3RhdGUu YXBwbHkodGhpcy5tYW5hZ2VyLGFyZ3VtZW50cyk7fX07ZnVuY3Rpb24gZSgpe3Ro aXMuaW5pdD10aGlzLmluaXQuYmluZCh0aGlzKTtoLmFwcGx5KHRoaXMsYXJndW1l bnRzKTt9ZS5wcm90b3R5cGU9e2xvZ05hbWU6J2lmcmFtZShpbm5lciknLGluaXQ6 ZnVuY3Rpb24oKXtkLnB1Ymxpc2godGhpcywnaW5uZXJUcmFuc3BvcnQnKTt0cnl7 dmFyIHByb3h5PWQucHJveHkod2luZG93LnBhcmVudCwnb3V0ZXJUcmFuc3BvcnQn LFsnX3Byb2Nlc3NUcmFuc3BvcnREYXRhJywnZXhpdFN0YXRlJ10sdG9wLkRvY1JQ Qy5vcmlnaW4pO20odGhpcyxwcm94eSk7dGhpcy5leGl0U3RhdGUoYy5PSyk7fWNh dGNoKHUpe319LGVudGVyU3RhdGU6ZnVuY3Rpb24odix1KXtpZih0aGlzLl9yZXF1 ZXN0KXt0aGlzLl9yZXF1ZXN0LmFib3J0KCk7dGhpcy5fcmVxdWVzdD1udWxsO31p Zih2PT0ncGluZycpe3RoaXMuX3JlcXVlc3Q9cyh1LGsodGhpcywnZXhpdFN0YXRl JyxjLk9LKSxrKHRoaXMsJ2V4aXRTdGF0ZScsYy5FUlJPUikpO31lbHNlIGlmKHY9 PSdwdWxsJyl0aGlzLl9yZXF1ZXN0PXQodSxrKHRoaXMsJ19wcm9jZXNzVHJhbnNw b3J0RGF0YScpLGsodGhpcywnZXhpdFN0YXRlJyxjLkVSUk9SKSk7fX07aWYod2lu ZG93IT09d2luZG93LnBhcmVudCYmL2lmcmFtZS8udGVzdCh3aW5kb3cubG9jYXRp b24pKXAudHJhbnNwb3J0PW5ldyBlKCk7cS5leHBvcnRzPXtnZXRVUkk6byxUcmFu c3BvcnQ6aCxDT1JTVHJhbnNwb3J0OmIsSWZyYW1lVHJhbnNwb3J0OmYsSWZyYW1l SW5uZXJUcmFuc3BvcnQ6ZX07fSk7Cl9fZSgiQ2hhbm5lbE1hbmFnZXIiLFsianNv biIsIm9ubG9hZCIsImFycmF5LWV4dGVuc2lvbnMiLCJmdW5jdGlvbi1leHRlbnNp b25zIiwiY29weVByb3BlcnRpZXMiLCJBcnJheVV0aWxzIiwiRnVuY3Rpb25VdGls cyIsImFyYml0ZXIiLCJTeXN0ZW1FdmVudHMiLCJ1cmkiLCJVc2VyQWN0aXZpdHki LCJNb3ZpbmdTdGF0IiwiSlNMb2dnZXIiLCJBamF4UmVxdWVzdCIsIkZCQWpheFJl cXVlc3QiLCJBc3luY1JlcXVlc3QiLCJQcmVzZW5jZVV0aWwiLCJQcmVzZW5jZVN0 YXRlIiwicHJlc2VuY2UtY29va2llLW1hbmFnZXIiLCJDaGFubmVsQ29uc3RhbnRz IiwiQ2hhbm5lbFRyYW5zcG9ydCIsIkNoYW5uZWxJbml0aWFsRGF0YSJdLGZ1bmN0 aW9uKHphLHplLHpjLHope3plKCdqc29uJyk7emUoJ29ubG9hZCcpO3plKCdhcnJh eS1leHRlbnNpb25zJyk7emUoJ2Z1bmN0aW9uLWV4dGVuc2lvbnMnKTt2YXIgeT16 ZSgnY29weVByb3BlcnRpZXMnKTt2YXIgYz16ZSgnQXJyYXlVdGlscycpO3ZhciBq PXplKCdGdW5jdGlvblV0aWxzJyk7dmFyIGI9emUoJ2FyYml0ZXInKTt2YXIgbT16 ZSgnb25sb2FkJyk7dmFyIHE9emUoJ1N5c3RlbUV2ZW50cycpO3ZhciByPXplKCd1 cmknKTt2YXIgcz16ZSgnVXNlckFjdGl2aXR5Jyk7dmFyIGw9emUoJ01vdmluZ1N0 YXQnKTt2YXIgaz16ZSgnSlNMb2dnZXInKTt2YXIgYT16ZSgnQWpheFJlcXVlc3Qn KTt2YXIgaT16ZSgnRkJBamF4UmVxdWVzdCcpO3ZhciBkPXplKCdBc3luY1JlcXVl c3QnKTt2YXIgbz16ZSgnUHJlc2VuY2VVdGlsJyk7dmFyIG49emUoJ1ByZXNlbmNl U3RhdGUnKTt2YXIgemQ9emUoJ3ByZXNlbmNlLWNvb2tpZS1tYW5hZ2VyJyk7dmFy IGU9emUoJ0NoYW5uZWxDb25zdGFudHMnKTt2YXIgaD16ZSgnQ2hhbm5lbFRyYW5z cG9ydCcpO3ZhciBnPXplKCdDaGFubmVsSW5pdGlhbERhdGEnKTt2YXIgdz1rLmNy ZWF0ZSgnY2hhbm5lbCcpO3ZhciBwPXtpZGxlOntvazonaW5pdCEnfSxpbml0Ontv azoncHVsbCEnLGVycm9yOidyZWNvbm5lY3QnfSxwdWxsOntvazoncHVsbCEnLGVy cm9yOidwaW5nJyxlcnJvcl9taXNzaW5nOidwdWxsJyxlcnJvcl9tc2dfdHlwZTon cHVsbCcscmVmcmVzaF8wOidyZWNvbm5lY3QnLHJlZnJlc2hfMTEwOidyZWNvbm5l Y3QnLHJlZnJlc2hfMTExOidwdWxsJyxyZWZyZXNoXzExMjoncHVsbCcscmVmcmVz aF8xMTM6J3B1bGwnLHJlZnJlc2hfMTE3OidyZWNvbm5lY3QnfSxwaW5nOntvazon cHVsbCEnLGVycm9yOidwaW5nJ30scmVjb25uZWN0OntvazonaW5pdCEnLGVycm9y OidyZWNvbm5lY3QnfSxzaHV0ZG93bjp7fSxfYWxsOntlcnJvcl9tYXg6J3NodXRk b3duIScsZXJyb3Jfc2h1dGRvd246J3NodXRkb3duISd9fTt2YXIgdT17dXNlckFj dGl2ZTpEYXRlLm5vdygpLHNlc3Npb25JRDooTWF0aC5yYW5kb20oKSoyMTQ3NDgz NjQ4fDApLnRvU3RyaW5nKDE2KX07ZnVuY3Rpb24gemYoemcpe3JldHVybiB6Zy50 b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teMC05YS16XSsvZywnXycpO31mdW5jdGlv biB6Yih6Zyl7dy5sb2coemYoJ2FyYml0ZXJfJyt6ZykpO2IuaW5mb3JtLmFwcGx5 KGIsYXJndW1lbnRzKTt9dmFyIHQ9ZmFsc2U7ZnVuY3Rpb24geCgpe2lmKHUuc3Vi ZG9tYWluPT1udWxsKXt2YXIgemc9MDt2YXIgemg9emQuZ2V0U3ViQ29va2llKCdj aCcpO2lmKHpoJiZ6aC5zdWIpe2Zvcih2YXIgemk9MDt6aTx6aC5zdWIubGVuZ3Ro O3ppKyspaWYoIXpoLnN1Ylt6aV0pe3pnPXppO2JyZWFrO31pZih6aT09emguc3Vi Lmxlbmd0aClpZih6aT09ZS5NQVhfU1VCRE9NQUlOUyYmcigpLmlzU2VjdXJlKCkp e3pnPW51bGw7ay5jcmVhdGUoJ2NoYW5uZWxfY29va2llJykuZXJyb3IoJ2lmcmFt ZV9tYXhfc3ViZG9tYWluc19yZWFjaGVkJyk7fWVsc2Ugemc9emguc3ViLmxlbmd0 aDt9dS5zdWJkb21haW49emc7fX1mdW5jdGlvbiB2KCl7dmFyIHpoPXt9O2lmKGYu Z2V0Q29uZmlnKCdob3N0Jykpe2lmKHUuX3N1YmRvbWFpbiE9bnVsbCl7dmFyIHpn PXpkLmdldFN1YkNvb2tpZSgnY2gnKTt2YXIgemo9KHpnJiZ6Zy5zdWIpP3pnLnN1 YjpbXTt2YXIgemk9emoubGVuZ3RoO3pqW3UuX3N1YmRvbWFpbl09dD8wOjE7emgu c3ViPXpqLm1hcChmdW5jdGlvbih6ayl7cmV0dXJuIHprPzE6MDt9KTt9emhbZi5n ZXRDb25maWcoJ3VzZXJfY2hhbm5lbCcpXT1mLmdldENvbmZpZygnc2VxJywwKTt9 cmV0dXJuIHpoO312YXIgZj17TUFYX1NVQkRPTUFJTlM6NixzdGF0ZTonaWRsZScs X2J1bXBzOjAsX2ZhaWxzOnt9LF9jb25uZWN0czowLF9jb25uZWN0U3RhdGU6bnVs bCxfY29uZmlnOnUsaW5pdDpmdW5jdGlvbih6aSl7dGhpcy5pbml0PWZ1bmN0aW9u KCl7fTtpZih0eXBlb2YocykhPSd1bmRlZmluZWQnKXMuc3Vic2NyaWJlKGZ1bmN0 aW9uKCl7dGhpcy5fY29uZmlnLnVzZXJBY3RpdmU9RGF0ZS5ub3coKTt9LmJpbmQo dGhpcykpO3pkLnJlZ2lzdGVyKCdjaCcsdik7dmFyIHprPWZ1bmN0aW9uKCl7dD10 cnVlO24uZG9TeW5jKHRydWUpO307aWYodHlwZW9mIHdpbmRvdy5vbnBhZ2VzaG93 IT0ndW5kZWZpbmVkJyl7RXZlbnQubGlzdGVuKHdpbmRvdywncGFnZWhpZGUnLHpr KTt9ZWxzZSBtLnJ1bk9ubG9hZCh6ayk7dmFyIHpnO2Iuc3Vic2NyaWJlKGUuT05f RU5URVJfU1RBVEUsZnVuY3Rpb24oem0semwpe3pnPURhdGUubm93KCk7fSk7dmFy IHpoPShmdW5jdGlvbigpe2lmKHRoaXMuaXNTaHV0ZG93bigpKXJldHVybjt2YXIg em49RGF0ZS5ub3coKSx6bT16Z3x8em47dmFyIHpsPXpuLXptO2lmKHRoaXMuc3Rh dGU9PSdwdWxsJyYmemw+OTAwMDApe3pnPW51bGw7dGhpcy5nZXRMb2dnZXIoKS5s b2coJ2p1bXBzdGFydCcse3N0YXRlOnRoaXMuc3RhdGUsZG9ybWFudDp6bH0pO3Ro aXMuZW50ZXJTdGF0ZSgnaW5pdCcpO319KS5iaW5kKHRoaXMpO3NldEludGVydmFs KHpoLDEwMDAwLGZhbHNlKTt0aGlzLl90cmFuc3BvcnRSYXRlPW5ldyBsKDMwMDAw KTt2YXIgemo9KGEuY29yc0VuYWJsZWQmJiF1LmZvcmNlSWZyYW1lKT8nQ09SU1Ry YW5zcG9ydCc6J0lmcmFtZVRyYW5zcG9ydCc7dGhpcy50cmFuc3BvcnQ9bmV3IGhb empdKHRoaXMpO2lmKHppKXRoaXMuZW50ZXJTdGF0ZS5hcHBseSh0aGlzLGFyZ3Vt ZW50cyk7bi5kb1N5bmMoKTtiLnN1YnNjcmliZShrLkRVTVBfRVZFTlQsZnVuY3Rp b24oZXZlbnQsemwpe3psLnRyYW5zcG9ydFJhdGU9dGhpcy5fdHJhbnNwb3J0UmF0 ZS50YWxseSgpO3psLnRyYW5zcG9ydFR5cGU9emo7emwudHJhbnNwb3J0VmVyc2lv bj0yO30uYmluZCh0aGlzKSk7dGhpcy5faW5pdENoYW5uZWxFdmVudHMoKTt0aGlz Ll9pbml0Q29ubmVjdGl2aXR5TW9uaXRvcmluZygpO30sZ2V0TG9nZ2VyOmZ1bmN0 aW9uKHpnKXt6Zz16Z3x8J2NoYW5uZWwnO3JldHVybiBrLmNyZWF0ZSh6Zyk7fSxj b25maWd1cmU6ZnVuY3Rpb24oKXtjLmNyZWF0ZUZyb20oYXJndW1lbnRzKS5lYWNo KHkuYmluZChudWxsLHRoaXMuX2NvbmZpZykpO2IuaW5mb3JtKGUuT05fQ09ORklH LHRoaXMpO30sZ2V0Q29uZmlnOmZ1bmN0aW9uKHpoLHpnKXtyZXR1cm4gemggaW4g dGhpcy5fY29uZmlnP3RoaXMuX2NvbmZpZ1t6aF06emc7fSxpc1NodXRkb3duOmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGU9PSdzaHV0ZG93bic7fSxfaW5pdENo YW5uZWxFdmVudHM6ZnVuY3Rpb24oKXt2YXIgemksemg7dmFyIHpnPWouZGVib3Vu Y2UoZnVuY3Rpb24oKXt6aT16aDtpZih6aCl7Yi5pbmZvcm0oZS5PTl9DT05ORUNU KTt9ZWxzZSBpZighdGhpcy5pc1NodXRkb3duKCkpYi5pbmZvcm0oZS5PTl9JRExF KTt9LmJpbmQodGhpcyksNTAwMCxmYWxzZSk7Yi5zdWJzY3JpYmUoZS5PTl9FTlRF Ul9TVEFURSxmdW5jdGlvbih6aix6ayl7emg9emsuc3RhdGU9PSdwdWxsJztpZih6 aSE9emgpe3pnKCk7fWVsc2UgemcucmVzZXQoKTt9KTt9LF9pbml0Q29ubmVjdGl2 aXR5TW9uaXRvcmluZzpmdW5jdGlvbigpe3ZhciB6bD1uZXcgRGF0ZSgpO3ZhciB6 Zz0xO2Z1bmN0aW9uIHprKCl7c2V0VGltZW91dCh6ayx6ZyoxMDAwLGZhbHNlKTtp ZihuYXZpZ2F0b3Iub25MaW5lKXt3LmJ1bXAoJ2Nvbm5fdCcsemcpO2lmKGYuc3Rh dGU9PSdwdWxsJyl3LmJ1bXAoJ2Nvbm5fdF9wdWxsJyx6Zyk7fX16aygpO3ZhciB6 bT1bMTUsMzAsNjAsMTIwLDI0MF07dmFyIHppPWZhbHNlLHpqPWZhbHNlO2Z1bmN0 aW9uIHpoKHpuKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dy5yYXRlKCdwdWxsZW50 ZXJfJyt6bix6aSk7dy5yYXRlKCdwdWxsZXhpdF8nK3puLHpqKTt9LHpuKjEwMDAs ZmFsc2UpO313aGlsZSh6bS5sZW5ndGgpemgoem0uc2hpZnQoKSk7Yi5zdWJzY3Jp YmUoZS5PTl9FTlRFUl9TVEFURSxmdW5jdGlvbih6bix6byl7aWYoem8uc3RhdGU9 PSdwdWxsJyl6aT10cnVlO3psPW5ldyBEYXRlKCk7fSk7Yi5zdWJzY3JpYmUoZS5P Tl9FWElUX1NUQVRFLGZ1bmN0aW9uKHpuLHpvKXtpZih6by5zdGF0ZT09J3B1bGwn JiZ6bCl7dmFyIHpwPXpvLnN0YXR1cz09ZS5PSz9lLk9LOih6byYmem8uZXJyb3JU eXBlKTtzd2l0Y2goenApe2Nhc2UgZS5PSzp6aj10cnVlO3pwPSdvayc7YnJlYWs7 Y2FzZSBhLkVSUk9SOnpwPSdlcnJvcic7YnJlYWs7Y2FzZSBhLlRJTUVPVVQ6enA9 J3RpbWVvdXQnO2JyZWFrO2Nhc2UgYS5QUk9YWV9FUlJPUjp6cD0ncHJveHknO2Jy ZWFrO2Nhc2UgYS5UUkFOU1BPUlRfRVJST1I6enA9J3RyYW5zcG9ydCc7YnJlYWs7 Y2FzZSBhLlNFUlZFUl9FUlJPUjp6cD0naHR0cCc7YnJlYWs7Y2FzZSBhLlBBUlNF X0VSUk9SOnpwPSdwYXJzZSc7YnJlYWs7ZGVmYXVsdDp6cD0nb3RoZXInO2JyZWFr O312YXIgenE9KG5ldyBEYXRlKCktemwpLzEwMDA7aWYoenE8MCl7cmV0dXJuO31l bHNlIGlmKHpxPjM2MDApenE9MzYwMDt3LmJ1bXAoJ2Nvbm5fbnVtJyk7dy5idW1w KCdjb25uX2V4aXQnLHpxKTt3LmJ1bXAoJ2Nvbm5fbnVtXycrenApO3cuYnVtcCgn Y29ubl9leGl0XycrenAsenEpO319KTt9LF9zZW5kSWZyYW1lRXJyb3I6ZnVuY3Rp b24oemgpe3ZhciB6Zz1uZXcgZCgpLnNldFVSSSgnL2FqYXgvcHJlc2VuY2UvcmVj b25uZWN0LnBocCcpLnNldERhdGEoe3JlYXNvbjp6aCxpZnJhbWVfbG9hZGVkOnRo aXMuaWZyYW1lRXZlckxvYWRlZH0pLnNldE9wdGlvbignc3VwcHJlc3NFcnJvckhh bmRsZXJXYXJuaW5nJyx0cnVlKS5zZXRPcHRpb24oJ3JldHJpZXMnLDEpLnNldE1l dGhvZCgnR0VUJykuc2V0UmVhZE9ubHkodHJ1ZSkuc2V0QWxsb3dDcm9zc1BhZ2VU cmFuc2l0aW9uKHRydWUpO3pnLnNwZWNpZmllc1dyaXRlUmVxdWlyZWRQYXJhbXMo KSYmemcuc2VuZCgpO30sX2J1bXBEZWxheTpmdW5jdGlvbih6Zyl7aWYoemcpe3Ro aXMuX2J1bXBzPTA7dGhpcy5fZmFpbHM9e307fWVsc2UgdGhpcy5fYnVtcHMrKzt9 LF9nZXREZWxheTpmdW5jdGlvbigpe3ZhciB6aT1mLmdldENvbmZpZygnTUlOX1JF VFJZX0lOVEVSVkFMJywxMDAwMCk7dmFyIHpoPWYuZ2V0Q29uZmlnKCdNQVhfUkVU UllfSU5URVJWQUwnLDYwMDAwKTt2YXIgemc9TWF0aC5taW4oemkqTWF0aC5wb3co MixNYXRoLm1heCgwLHRoaXMuX2J1bXBzLTEpKSx6aCk7cmV0dXJuIHpnKiguNzUr TWF0aC5yYW5kb20oKS8yKXwwO30sZW50ZXJTdGF0ZTpmdW5jdGlvbigpe2lmKHRo aXMuX2luRW50ZXJTdGF0ZSl0aHJvdyBuZXcgRXJyb3IoJ2VudGVyU3RhdGUoKSBt YXkgbm90IGJlIG5lc3RlZCcpO3RoaXMuX2luRW50ZXJTdGF0ZT10cnVlO3RyeXt0 aGlzLl9lbnRlclN0YXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLl9pbkVu dGVyU3RhdGU9ZmFsc2U7fWNhdGNoKHpnKXt0aGlzLl9pbkVudGVyU3RhdGU9ZmFs c2U7dGhyb3cgemc7fX0sX2VudGVyU3RhdGU6ZnVuY3Rpb24oem4pe3ZhciB6aD0w O3ZhciB6az1udWxsO3ZhciB6Zz1jLmNyZWF0ZUZyb20oYXJndW1lbnRzKTtpZih0 aGlzLmlzU2h1dGRvd24oKSlyZXR1cm47Y2xlYXJUaW1lb3V0KHRoaXMuX2RlZmVy cmVkVHJhbnNpdGlvbik7dGhpcy5fZGVmZXJyZWRUcmFuc2l0aW9uPW51bGw7dGhp cy50cmFuc3BvcnQuZW50ZXJTdGF0ZSgnaWRsZScpO3RoaXMuc3RhdGU9J2lkbGUn O2lmKC8hJC8udGVzdCh6bikpe3ZhciB6bT10aGlzLl90cmFuc3BvcnRSYXRlLnRh bGx5KCkudGltZUF2ZXJhZ2U7dmFyIHpsPWYuZ2V0Q29uZmlnKCdNQVhfQ0hBTk5F TF9TVEFURVNfUEVSX1NFQycsMSk7aWYoem0+PXpsKXpoPTEwMDAvemw7fWVsc2Ug aWYoISgvIyQvLnRlc3Qoem4pKSl6aD10aGlzLl9nZXREZWxheSgpO3puPXpuLnJl cGxhY2UoL1xXKiQvLCcnKTtpZighcFt6bl0pdGhyb3cgbmV3IEVycm9yKCdpbnZh bGlkIHN0YXRlOicrem4pO3ZhciB6aTtpZih6aDw9MCl7emk9e3N0YXRlOnpufTt0 aGlzLl90cmFuc3BvcnRSYXRlLmFkZCgxKTt0aGlzLnN0YXRlPXpuO3ZhciB6aj10 aGlzWydfZW50ZXJfJyt0aGlzLnN0YXRlXTtpZih6ail7emcuc2hpZnQoKTt6ai5h cHBseSh0aGlzLHpnKTt9aWYoL2luaXR8aWRsZXxwdWxsfHBpbmcvLnRlc3QodGhp cy5zdGF0ZSkpe3goKTt0aGlzLnRyYW5zcG9ydC5lbnRlclN0YXRlKHRoaXMuc3Rh dGUsdSk7fX1lbHNle3RoaXMuc3RhdGU9J2lkbGUnO3ppPXtzdGF0ZTp0aGlzLnN0 YXRlLGRlbGF5OnpoLG5leHRTdGF0ZTp6bn07emdbMF09em4rJyMnO3RoaXMuX2Rl ZmVycmVkVHJhbnNpdGlvbj0oZnVuY3Rpb24oKXt0aGlzLl9kZWZlcnJlZFRyYW5z aXRpb249bnVsbDt0aGlzLmVudGVyU3RhdGUuYXBwbHkodGhpcyx6Zyk7fSkuYmlu ZCh0aGlzKS5kZWZlcih6aCxmYWxzZSk7fXcubG9nKCdlbnRlcl8nK3RoaXMuc3Rh dGUsemkpO2IuaW5mb3JtKGUuT05fRU5URVJfU1RBVEUsemkpO30sZXhpdFN0YXRl OmZ1bmN0aW9uKHpuLHpqKXtpZih0aGlzLmlzU2h1dGRvd24oKSlyZXR1cm47dmFy IHpnPWMuY3JlYXRlRnJvbShhcmd1bWVudHMpLHptPXRoaXMuc3RhdGU7dmFyIHpo PXtzdGF0ZTp6bSxzdGF0dXM6em59O2lmKHpqJiZ6ai5lcnJvclR5cGUpe3poLmVy cm9yVHlwZT16ai5lcnJvclR5cGU7emguZXJyb3JUZXh0PXpqLmVycm9yVGV4dDt9 aWYoemomJnpqLmpzb24pe2lmKHpqLmpzb24udCl6aC50PXpqLmpzb24udDtpZih6 ai5qc29uLnJlYXNvbil6aC5yZWFzb249emouanNvbi5yZWFzb247aWYoemouanNv bi5zZXEpemguc2VxPXpqLmpzb24uc2VxO313LmxvZygnZXhpdF8nK3ptLHpoKTti LmluZm9ybShlLk9OX0VYSVRfU1RBVEUsemgpO3ZhciB6aT10aGlzWydfZXhpdF8n K3ptXTtpZih6aSl6bj16aS5hcHBseSh0aGlzLHpnKXx8em47aWYoem4hPWUuT0sp e3RoaXMuX2J1bXBEZWxheSgpO3RoaXMuX2ZhaWxzW3ptXT0odGhpcy5fZmFpbHNb em1dfHwwKSsxO312YXIgemw9cFt6bV1bem5dfHxwLl9hbGxbem5dO3ZhciB6az16 bCYmemwucmVwbGFjZSgvISokLywnJyk7aWYoIXprKXt3LmVycm9yKCd0ZXJtaW5h bF90cmFuc2l0aW9uJyx6aCk7dGhpcy5fc2h1dGRvd25IaW50PWUuSElOVF9JTlZB TElEX1NUQVRFO3psPSdzaHV0ZG93biEnO310aGlzLl9sYXN0U3RhdGU9em07dGhp cy5fbGFzdFN0YXR1cz16bjt0aGlzLmVudGVyU3RhdGUoemwpO30sX3Byb2Nlc3NU cmFuc3BvcnREYXRhOmZ1bmN0aW9uKHpuKXt2YXIgemk9em4uanNvbix6cD16aS50 O2lmKCdzJyBpbiB6aSl7emkuc2VxPXppLnM7ZGVsZXRlIHppLnM7fXZhciB6aD11 O3ZhciB6az16aC5zZXE7aWYoJ3NlcScgaW4gemkpe3poLnNlcT16aS5zZXE7bi5k b1N5bmMoKTt9aWYoenA9PSdjb250aW51ZScpe3RoaXMuX2J1bXBEZWxheSh0cnVl KTtyZXR1cm4gdGhpcy5leGl0U3RhdGUoZS5PSyk7fWVsc2UgaWYoenA9PSdyZWZy ZXNoJ3x8enA9PSdyZWZyZXNoRGVsYXknKXtyZXR1cm4gdGhpcy5leGl0U3RhdGUo J3JlZnJlc2hfJysoemkucmVhc29ufHwwKSx6bik7fWVsc2UgaWYoenA9PSdmdWxs UmVsb2FkJyl7emQuY2xlYXIoKTt3LmxvZyh6ZignYXJiaXRlcl8nK2UuT05fSU5W QUxJRF9ISVNUT1JZKSk7emIoZS5PTl9JTlZBTElEX0hJU1RPUlkpO3JldHVybiB0 aGlzLmV4aXRTdGF0ZShlLkVSUk9SX01JU1NJTkcsem4pO31lbHNlIGlmKHpwPT0n bXNnJyl7dmFyIHpqLHpsLHpvLHpnO2lmKHppLm1zZ3Mpe3psPXppLm1zZ3M7dmFy IHptPTA7Zm9yKHpqPTA7emo8emwubGVuZ3RoO3pqKyspaWYoemxbempdLnNlcSE9 PS0xKXptKys7em89dS5zZXEtem07Zm9yKHpqPTA7emo8emwubGVuZ3RoO3pqKysp e2lmKHpvPj16ayl7emc9emxbempdLm1zZztpZih6Zy50eXBlKXpiKGUuZ2V0QXJi aXRlclR5cGUoemcudHlwZSkse29iajp6Z30pO31lbHNlIHcud2Fybignc2VxX3Jl Z3Jlc3Npb24nLHtzZXE6em8sbGFzdF9zZXE6emssbm9uX3RyYW5zaWVudDp6bSxt ZXNzYWdlczp6bC5sZW5ndGh9KTtpZih6bFt6al0uc2VxIT09LTEpem8rKzt9fWVs c2V7emw9emkubXM7em89dS5zZXEtemwubGVuZ3RoO2Zvcih6aj0wO3pqPHpsLmxl bmd0aDt6aisrLHpvKyspaWYoem8+PXprKXt6Zz16bFt6al07aWYoemcudHlwZSl6 YihlLmdldEFyYml0ZXJUeXBlKHpnLnR5cGUpLHtvYmo6emd9KTt9ZWxzZSB3Lndh cm4oJ3NlcV9yZWdyZXNzaW9uJyx7c2VxOnpvLGxhc3Rfc2VxOnprLG1lc3NhZ2Vz OnpsLmxlbmd0aH0pO310aGlzLl9idW1wRGVsYXkodHJ1ZSk7cmV0dXJuIHRoaXMu ZXhpdFN0YXRlKGUuT0spO31yZXR1cm4gdGhpcy5leGl0U3RhdGUoZS5FUlJPUl9N U0dfVFlQRSwndHlwZSA9ICcrenApO30sX2VudGVyX2luaXQ6ZnVuY3Rpb24oKXtp Zih0aGlzLl9mYWlscy5pbml0Pj0yKXJldHVybiB0aGlzLmV4aXRTdGF0ZS5iaW5k KHRoaXMsZS5FUlJPUl9NQVgpLmRlZmVyKCk7dGhpcy5faW5pdFRpbWVyPXRoaXMu ZXhpdFN0YXRlLmJpbmQodGhpcyxlLkVSUk9SLCd0aW1lb3V0JykuZGVmZXIoZi5n ZXRDb25maWcoJ0lGUkFNRV9MT0FEX1RJTUVPVVQnLDMwMDAwKSxmYWxzZSk7fSxf ZW50ZXJfcmVjb25uZWN0OmZ1bmN0aW9uKHpnKXtpZighby5oYXNVc2VyQ29va2ll KCkpe3cud2Fybignbm9fdXNlcl9jb29raWUnKTsoZnVuY3Rpb24oKXtmLl9zaHV0 ZG93bkhpbnQ9ZS5ISU5UX0FVVEg7Zi5leGl0U3RhdGUoZS5FUlJPUl9TSFVURE9X Tik7fSkuZGVmZXIoKTtyZXR1cm47fXZhciB6aD1uZXcgaSgnR0VUJywnL2FqYXgv cHJlc2VuY2UvcmVjb25uZWN0LnBocCcse3JlYXNvbjp6ZyxpZnJhbWVfbG9hZGVk OnRoaXMuaWZyYW1lRXZlckxvYWRlZH0pO3poLm9uU3VjY2Vzcz0oZnVuY3Rpb24o KXtmLmNvbmZpZ3VyZShudWxsLHpoLmpzb24pO3pkLnN0b3JlKCk7dGhpcy5leGl0 U3RhdGUoZS5PSyk7fSkuYmluZCh0aGlzKTt6aC5vbkVycm9yPShmdW5jdGlvbigp e3ZhciB6aT16aC5qc29uJiZ6aC5qc29uLmVycm9yO2lmKHpoLmVycm9yVHlwZT09 YS5UUkFOU1BPUlRfRVJST1J8fHpoLmVycm9yVHlwZT09YS5QUk9YWV9FUlJPUil0 aGlzLl9zaHV0ZG93bkhpbnQ9ZS5ISU5UX0NPTk47aWYoemkmJnppPT0xMzU2MDA3 KXt0aGlzLl9zaHV0ZG93bkhpbnQ9ZS5ISU5UX01BSU5UO31lbHNlIGlmKHppPT0x MzU3MDAxfHx6aT09MTM1NzAwNHx8emk9PTEzNDgwMDkpe3RoaXMuX3NodXRkb3du SGludD1lLkhJTlRfQVVUSDt9ZWxzZSB0aGlzLl9zaHV0ZG93bkhpbnQ9bnVsbDt0 aGlzLmV4aXRTdGF0ZSh0aGlzLl9zaHV0ZG93bkhpbnQ/ZS5FUlJPUl9TSFVURE9X TjplLkVSUk9SLHpoKTt9KS5iaW5kKHRoaXMpO3poLnNlbmQoKTt9LF9lbnRlcl9z aHV0ZG93bjpmdW5jdGlvbigpe3piKGUuT05fU0hVVERPV04se3JlYXNvbjp0aGlz Ll9zaHV0ZG93bkhpbnR9KTt9LF9leGl0X2luaXQ6ZnVuY3Rpb24oemcpe2lmKHRo aXMuX2luaXRUaW1lcil0aGlzLl9pbml0VGltZXI9Y2xlYXJUaW1lb3V0KHRoaXMu X2luaXRUaW1lcik7aWYoemc9PWUuT0spe3RoaXMuaWZyYW1lRXZlckxvYWRlZD10 cnVlO31lbHNlIGlmKHpnPT1lLkVSUk9SX01BWCl0aGlzLl9zZW5kSWZyYW1lRXJy b3IoZS5yZWFzb25fSUZyYW1lTG9hZEdpdmVVcCk7fX07emMuZXhwb3J0cz1mO2lm KGcuc2VydmVySW5pdGlhbGl6ZWQ9PW51bGwpe2YuY29uZmlndXJlKGcuY2hhbm5l bENvbmZpZyk7aWYoL3NodXRkb3duLy50ZXN0KGcuc3RhdGUpKXtmLl9zaHV0ZG93 bkhpbnQ9ZVtnLnJlYXNvbl07fWVsc2UgZy5yZWNvbm5lY3RSZWFzb247Zi5pbml0 KGcuc3RhdGUsZy5yZWFzb24pO319KTsKX19lKCJDaGFubmVsQ29ubmVjdGlvbiIs WyJhcmJpdGVyIiwiY29weVByb3BlcnRpZXMiLCJDaGF0Q29uZmlnIiwiU3lzdGVt RXZlbnRzIiwiQ2hhbm5lbENvbnN0YW50cyIsIkNoYW5uZWxNYW5hZ2VyIl0sZnVu Y3Rpb24ocSxzLHIscCl7dmFyIGE9cygnYXJiaXRlcicpO3ZhciBvPXMoJ2NvcHlQ cm9wZXJ0aWVzJyk7dmFyIGU9cygnQ2hhdENvbmZpZycpO3ZhciBmPXMoJ1N5c3Rl bUV2ZW50cycpO3ZhciBjPXMoJ0NoYW5uZWxDb25zdGFudHMnKTt2YXIgZD1zKCdD aGFubmVsTWFuYWdlcicpO3ZhciBtPW51bGw7dmFyIGs9bnVsbDt2YXIgaD1mYWxz ZTt2YXIgYj1vKG5ldyBhKCkse0NPTk5FQ1RFRDonY2hhdC1jb25uZWN0aW9uL2Nv bm5lY3RlZCcsUkVDT05ORUNUSU5HOidjaGF0LWNvbm5lY3Rpb24vcmVjb25uZWN0 aW5nJyxTSFVURE9XTjonY2hhdC1jb25uZWN0aW9uL3NodXRkb3duJyxNVVRFX1dB Uk5JTkc6J2NoYXQtY29ubmVjdGlvbi9tdXRlJyxVTk1VVEVfV0FSTklORzonY2hh dC1jb25uZWN0aW9uL3VubXV0ZSd9KTtmdW5jdGlvbiBnKCl7aWYoayl7Y2xlYXJU aW1lb3V0KGspO2s9bnVsbDt9fWZ1bmN0aW9uIG4oKXtnKCk7Yi5pbmZvcm0oYi5V Tk1VVEVfV0FSTklORyk7fWZ1bmN0aW9uIGoodCl7ZygpO2s9bi5kZWZlcih0LGZh bHNlKTtiLmluZm9ybShiLk1VVEVfV0FSTklORyk7fWZ1bmN0aW9uIGkodSx0KXtp Zih1PT09Yy5PTl9FTlRFUl9TVEFURSYmKHQuc3RhdGU9PT0ncHVsbCd8fHQubmV4 dFN0YXRlPT09J3B1bGwnKSl7aWYoaCl7aD1mYWxzZTtiLmluZm9ybShiLkNPTk5F Q1RFRCk7fX1lbHNlIGlmKHU9PT1jLk9OX0VOVEVSX1NUQVRFJiYodC5zdGF0ZT09 PSdwaW5nJ3x8dC5uZXh0U3RhdGU9PT0ncGluZycpKXtoPXRydWU7Yi5pbmZvcm0o Yi5SRUNPTk5FQ1RJTkcsdC5kZWxheSk7fWVsc2UgaWYodT09PWMuT05fU0hVVERP V04pe2g9dHJ1ZTtiLmluZm9ybShiLlNIVVRET1dOLHQucmVhc29uKTt9fWZ1bmN0 aW9uIGwodCl7aWYoZC5zdGF0ZT09PSdwaW5nJ3x8ZC5pc1NodXRkb3duKCkpcmV0 dXJuO2IuaW5mb3JtKGIuUkVDT05ORUNUSU5HLDApO2lmKCEhdCl7aWYobSE9PW51 bGwpe2NsZWFyVGltZW91dChtKTttPW51bGw7fWQuZW50ZXJTdGF0ZSgncGluZyEn KTt9ZWxzZSBpZighbSltPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtkLmVudGVyU3Rh dGUoJ3BpbmchJyk7bT1udWxsO30sZS5nZXQoJ2NoYW5uZWxfbWFudWFsX3JlY29u bmVjdF9kZWZlcl9tc2VjJyksZmFsc2UpO31hLnN1YnNjcmliZShbYy5PTl9FTlRF Ul9TVEFURSxjLk9OX1NIVVRET1dOXSxpKTtmLnN1YnNjcmliZShmLkFXQUtFLGZ1 bmN0aW9uKCl7bCgpO2ooZS5nZXQoJ211dGVfd2FybmluZ190aW1lX21zZWMnKSk7 fSk7byhiLHtkaXNjb25uZWN0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gaCYmIWs7fSxy ZWNvbm5lY3Q6bCx1bm11dGVXYXJuaW5nOm59KTtyLmV4cG9ydHM9Yjt9KTsKX19l KCJjaGFubmVsX2NvbnN0YW50cyIsWyJDaGFubmVsQ29uc3RhbnRzIl0sZnVuY3Rp b24oYixjKXt2YXIgYT1jKCdDaGFubmVsQ29uc3RhbnRzJyk7Yi5jaGFubmVsX2Nv bnN0YW50cz1iLmNoYW5uZWxfY29uc3RhbnRzfHxhO30sMyk7Cl9fZSgiQnV0dG9u IixbImV2ZW50LWV4dGVuc2lvbnMiLCJjc3MiLCJEYXRhU3RvcmUiLCJkb20iLCJw YXJlbnQiXSxmdW5jdGlvbihnLGksaCxmKXtpKCdldmVudC1leHRlbnNpb25zJyk7 dmFyIGI9aSgnY3NzJyk7dmFyIGQ9aSgnRGF0YVN0b3JlJyk7dmFyIGM9aSgnZG9t Jyk7dmFyIGU9aSgncGFyZW50Jyk7dmFyIGE9KGZ1bmN0aW9uKCl7dmFyIGs9J3Vp QnV0dG9uRGlzYWJsZWQnO3ZhciBqPSd1aUJ1dHRvbkRlcHJlc3NlZCc7dmFyIG09 J2J1dHRvbjpibG9ja2VyJzt2YXIgbD0naHJlZic7ZnVuY3Rpb24gbihzLHIpe3Zh ciBxPWQuZ2V0KHMsbSk7aWYocil7aWYocSl7cS5yZW1vdmUoKTtkLnJlbW92ZShz LG0pO319ZWxzZSBpZighcSlkLnNldChzLG0sRXZlbnQubGlzdGVuKHMsJ2NsaWNr JyxiYWdvZihmYWxzZSksRXZlbnQuUHJpb3JpdHkuVVJHRU5UKSk7fWZ1bmN0aW9u IG8ocSl7dmFyIHI9ZS5ieUNsYXNzKHEsJ3VpQnV0dG9uJyk7aWYoIXIpdGhyb3cg bmV3IEVycm9yKCdpbnZhbGlkIHVzZSBjYXNlJyk7cmV0dXJuIHI7fWZ1bmN0aW9u IHAocSl7cmV0dXJuIGMuaXNOb2RlT2ZUeXBlKHEsJ2EnKTt9cmV0dXJuIHtnZXRJ bnB1dEVsZW1lbnQ6ZnVuY3Rpb24ocSl7cT1vKHEpO2lmKHAocSkpdGhyb3cgbmV3 IEVycm9yKCdpbnZhbGlkIHVzZSBjYXNlJyk7cmV0dXJuIGMuZmluZChxLCdpbnB1 dCcpO30saXNFbmFibGVkOmZ1bmN0aW9uKHEpe3JldHVybiAhYi5oYXNDbGFzcyhv KHEpLGspO30sc2V0RW5hYmxlZDpmdW5jdGlvbih0LHEpe3Q9byh0KTtiLmNvbmRp dGlvbkNsYXNzKHQsaywhcSk7aWYocCh0KSl7dmFyIHI9dC5ocmVmO3ZhciB1PWQu Z2V0KHQsbCwnIycpO2lmKHEpe2lmKCFyKXQuaHJlZj11O31lbHNle2lmKHImJnIh PT11KWQuc2V0KHQsbCxyKTt0LnJlbW92ZUF0dHJpYnV0ZSgnaHJlZicpO31uKHQs cSk7fWVsc2V7dmFyIHM9YS5nZXRJbnB1dEVsZW1lbnQodCk7cy5kaXNhYmxlZD0h cTtuKHMscSk7fX0sc2V0RGVwcmVzc2VkOmZ1bmN0aW9uKHIscSl7Yi5jb25kaXRp b25DbGFzcyhvKHIpLGoscSk7fSxpc0RlcHJlc3NlZDpmdW5jdGlvbihxKXtyZXR1 cm4gYi5oYXNDbGFzcyhvKHEpLGopO30sc2V0TGFiZWw6ZnVuY3Rpb24ocixxKXty PW8ocik7aWYocChyKSl7dmFyIHM9Yy5maW5kKHIsJ3NwYW4udWlCdXR0b25UZXh0 Jyk7Yy5zZXRDb250ZW50KHMscSk7fWVsc2UgYS5nZXRJbnB1dEVsZW1lbnQociku dmFsdWU9cTtiLmNvbmRpdGlvbkNsYXNzKHIsJ3VpQnV0dG9uTm9UZXh0JywhcSk7 fSxzZXRJY29uOmZ1bmN0aW9uKHIscSl7aWYoIWMuaXNOb2RlKHEpKXJldHVybjti LmFkZENsYXNzKHEsJ2N1c3RvbWltZycpO3I9byhyKTt2YXIgcz1jLnNjcnkociwn LmltZycpWzBdO2lmKHMhPXEpaWYocyl7Yy5yZXBsYWNlKHMscSk7fWVsc2UgYy5w cmVwZW5kQ29udGVudChyLHEpO319O30pKCk7Zy5CdXR0b249aC5leHBvcnRzPWE7 fSwzKTsKX19lKCJjb250cm9sLWRvbSIsWyJEYXRhU3RvcmUiLCJkb20tY29yZSJd LGZ1bmN0aW9uKGUsZyxmLGQpe3ZhciBjPWcoJ0RhdGFTdG9yZScpO3ZhciBhPWco J2RvbS1jb3JlJykuJDtmdW5jdGlvbiBiKGgpe3RoaXMucm9vdD1hKGgpO3RoaXMu dXBkYXRpbmc9ZmFsc2U7Yy5zZXQoaCwnRE9NQ29udHJvbCcsdGhpcyk7fWIucHJv dG90eXBlPXtnZXRSb290OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm9vdDt9LGJl Z2luVXBkYXRlOmZ1bmN0aW9uKCl7aWYodGhpcy51cGRhdGluZylyZXR1cm4gZmFs c2U7dGhpcy51cGRhdGluZz10cnVlO3JldHVybiB0cnVlO30sZW5kVXBkYXRlOmZ1 bmN0aW9uKCl7dGhpcy51cGRhdGluZz1mYWxzZTt9LHVwZGF0ZTpmdW5jdGlvbiho KXtpZighdGhpcy5iZWdpblVwZGF0ZSgpKXJldHVybiB0aGlzO3RoaXMub251cGRh dGUoaCk7dGhpcy5lbmRVcGRhdGUoKTt9LG9udXBkYXRlOmZ1bmN0aW9uKGgpe319 O2IuZ2V0SW5zdGFuY2U9ZnVuY3Rpb24oaCl7cmV0dXJuIGMuZ2V0KGgsJ0RPTUNv bnRyb2wnKTt9O2UuRE9NQ29udHJvbD1mLmV4cG9ydHM9Yjt9LDMpOwpfX2UoImlu cHV0LW1ldGhvZHMiLFsiYm9vdGxvYWRlciIsImNzcy1jb3JlIiwiZG9tIiwiY29u dHJvbC1kb20iLCJvYmplY3QtY29yZS11dGlscyJdLGZ1bmN0aW9uKGcsaSxoLGYp e3ZhciBhPWkoJ2Jvb3Rsb2FkZXInKTt2YXIgYj1pKCdjc3MtY29yZScpO3ZhciBj PWkoJ2RvbScpO3ZhciBkPWkoJ2NvbnRyb2wtZG9tJyk7dmFyIGU9ZnVuY3Rpb24o ail7dmFyIGs9ai5nZXRBdHRyaWJ1dGUoJ21heGxlbmd0aCcpO2lmKGsmJms+MClh LmxvYWRDb21wb25lbnRzKCdtYXhsZW5ndGgtZm9ybS1saXN0ZW5lcicsZnVuY3Rp b24oKXtJbnB1dC5lbmZvcmNlTWF4TGVuZ3RoKGosayk7fSk7fTtoLmV4cG9ydHM9 e2ZvY3VzOmZ1bmN0aW9uKGope3RyeXtqLmZvY3VzKCk7fWNhdGNoKGspe319LGlz RW1wdHk6ZnVuY3Rpb24oail7cmV0dXJuICEoL1xTLykudGVzdChqLnZhbHVlfHwn Jyl8fGIuaGFzQ2xhc3MoaiwnRE9NQ29udHJvbF9wbGFjZWhvbGRlcicpO30sZ2V0 VmFsdWU6ZnVuY3Rpb24oail7cmV0dXJuIElucHV0LmlzRW1wdHkoaik/Jyc6ai52 YWx1ZTt9LHNldFZhbHVlOmZ1bmN0aW9uKGssbCl7Yi5yZW1vdmVDbGFzcyhrLCdE T01Db250cm9sX3BsYWNlaG9sZGVyJyk7ay52YWx1ZT1sfHwnJztlKGspO3ZhciBq PWQuZ2V0SW5zdGFuY2Uoayk7aiYmai5yZXNldEhlaWdodCYmai5yZXNldEhlaWdo dCgpO30sc2V0UGxhY2Vob2xkZXI6ZnVuY3Rpb24oaixrKXtqLnNldEF0dHJpYnV0 ZSgndGl0bGUnLGspO2ouc2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicsayk7aWYo aj09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudClyZXR1cm47aWYoSW5wdXQuaXNFbXB0 eShqKSl7Yi5jb25kaXRpb25DbGFzcyhqLCdET01Db250cm9sX3BsYWNlaG9sZGVy JyxrKTtqLnZhbHVlPWt8fCcnO319LHJlc2V0OmZ1bmN0aW9uKGope3ZhciBrPWoh PT1kb2N1bWVudC5hY3RpdmVFbGVtZW50PyhqLmdldEF0dHJpYnV0ZSgncGxhY2Vo b2xkZXInKXx8JycpOicnO2oudmFsdWU9aztiLmNvbmRpdGlvbkNsYXNzKGosJ0RP TUNvbnRyb2xfcGxhY2Vob2xkZXInLGspO2ouc3R5bGUuaGVpZ2h0PScnO30sc2V0 U3VibWl0T25FbnRlcjpmdW5jdGlvbihqLGspe2IuY29uZGl0aW9uQ2xhc3Moaiwn ZW50ZXJfc3VibWl0JyxrKTt9LGdldFN1Ym1pdE9uRW50ZXI6ZnVuY3Rpb24oail7 cmV0dXJuIGIuaGFzQ2xhc3MoaiwnZW50ZXJfc3VibWl0Jyk7fSxzZXRNYXhMZW5n dGg6ZnVuY3Rpb24oaixrKXtpZihrPjApe2ouc2V0QXR0cmlidXRlKCdtYXhsZW5n dGgnLGspO2Uoaik7fWVsc2Ugai5yZW1vdmVBdHRyaWJ1dGUoJ21heGxlbmd0aCcp O319O2koJ29iamVjdC1jb3JlLXV0aWxzJykuYWRkX3Byb3BlcnRpZXMoJ0lucHV0 JyxoLmV4cG9ydHMpO30sMyk7Cl9fZSgiRm9ybSIsWyJBcnJheVV0aWxzIiwiQXN5 bmNSZXF1ZXN0IiwiRGF0YVN0b3JlIiwiZG9tIiwiRW52IiwiaW5wdXQtbWV0aG9k cyIsInBhcmVudCIsInVyaSIsInRyYWNrUmVmZXJyZXIiXSxmdW5jdGlvbihrLG0s bCxqKXt2YXIgYT1tKCJBcnJheVV0aWxzIik7dmFyIGI9bSgiQXN5bmNSZXF1ZXN0 Iik7dmFyIGQ9bSgiRGF0YVN0b3JlIik7dmFyIGM9bSgiZG9tIik7dmFyIGU9bSgi RW52Iik7dmFyIGc9bSgiaW5wdXQtbWV0aG9kcyIpO3ZhciBoPW0oInBhcmVudCIp O3ZhciBpPW0oInVyaSIpO3ZhciBuPW0oInRyYWNrUmVmZXJyZXIiKTt2YXIgZj17 Z2V0SW5wdXRzOmZ1bmN0aW9uKG8pe289b3x8ZG9jdW1lbnQ7cmV0dXJuIFtdLmNv bmNhdChhLmNyZWF0ZUZyb20oYy5zY3J5KG8sJ2lucHV0JykpLGEuY3JlYXRlRnJv bShjLnNjcnkobywnc2VsZWN0JykpLGEuY3JlYXRlRnJvbShjLnNjcnkobywndGV4 dGFyZWEnKSksYS5jcmVhdGVGcm9tKGMuc2NyeShvLCdidXR0b24nKSkpO30sZ2V0 U2VsZWN0VmFsdWU6ZnVuY3Rpb24obyl7cmV0dXJuIG8ub3B0aW9uc1tvLnNlbGVj dGVkSW5kZXhdLnZhbHVlO30sc2V0U2VsZWN0VmFsdWU6ZnVuY3Rpb24ocCxxKXtm b3IodmFyIG89MDtvPHAub3B0aW9ucy5sZW5ndGg7KytvKWlmKHAub3B0aW9uc1tv XS52YWx1ZT09cSl7cC5zZWxlY3RlZEluZGV4PW87YnJlYWs7fX0sZ2V0UmFkaW9W YWx1ZTpmdW5jdGlvbihwKXtmb3IodmFyIG89MDtvPHAubGVuZ3RoO28rKylpZihw W29dLmNoZWNrZWQpcmV0dXJuIHBbb10udmFsdWU7cmV0dXJuIG51bGw7fSxnZXRF bGVtZW50czpmdW5jdGlvbihvKXtyZXR1cm4gYS5jcmVhdGVGcm9tKG8udGFnTmFt ZT09J0ZPUk0nP28uZWxlbWVudHM6Zi5nZXRJbnB1dHMobykpO30sZ2V0QXR0cmli dXRlOmZ1bmN0aW9uKHAsbyl7cmV0dXJuIChwLmdldEF0dHJpYnV0ZU5vZGUobyl8 fHt9KS52YWx1ZXx8bnVsbDt9LHNldERpc2FibGVkOmZ1bmN0aW9uKHAsbyl7Zi5n ZXRFbGVtZW50cyhwKS5mb3JFYWNoKGZ1bmN0aW9uKHEpe2lmKHEuZGlzYWJsZWQh PXVuZGVmaW5lZCl7dmFyIHI9ZC5nZXQocSwnb3JpZ0Rpc2FibGVkU3RhdGUnKTtp ZihvKXtpZihyPT09dW5kZWZpbmVkKWQuc2V0KHEsJ29yaWdEaXNhYmxlZFN0YXRl JyxxLmRpc2FibGVkKTtxLmRpc2FibGVkPW87fWVsc2V7aWYociE9PXRydWUpcS5k aXNhYmxlZD1mYWxzZTtkLnJlbW92ZShxLCdvcmlnRGlzYWJsZWRTdGF0ZScpO319 fSk7fSxib290c3RyYXA6ZnVuY3Rpb24ocixzKXt2YXIgdD0oZi5nZXRBdHRyaWJ1 dGUociwnbWV0aG9kJyl8fCdHRVQnKS50b1VwcGVyQ2FzZSgpO3M9aC5ieVRhZyhz LCdidXR0b24nKXx8czt2YXIgdj1oLmJ5Q2xhc3Mocywnc3RhdF9lbGVtJyl8fHI7 aWYoQ1NTLmhhc0NsYXNzKHYsJ2FzeW5jX3NhdmluZycpKXJldHVybjtpZihzJiYo cy5mb3JtIT09cnx8KHMubm9kZU5hbWUhPSdJTlBVVCcmJnMubm9kZU5hbWUhPSdC VVRUT04nKXx8cy50eXBlIT0nc3VibWl0Jykpe3ZhciB3PWMuc2NyeShyLCcuZW50 ZXJfc3VibWl0X3RhcmdldCcpWzBdO3ZhciBwPXM7dyYmKHM9dyk7fXZhciBxPWYu c2VyaWFsaXplKHIscyk7Zi5zZXREaXNhYmxlZChyLHRydWUpO3ZhciBvPWYuZ2V0 QXR0cmlidXRlKHIsJ2FqYXhpZnknKXx8Zi5nZXRBdHRyaWJ1dGUociwnYWN0aW9u Jyk7bihyLG8pO3ZhciB1PW5ldyBiKG8pO3Uuc2V0RGF0YShxKS5zZXROZWN0YXJN b2R1bGVEYXRhU2FmZShyKS5zZXRSZWFkT25seSh0PT0nR0VUJykuc2V0TWV0aG9k KHQpLnNldFJlbGF0aXZlVG8ocikuc2V0U3RhdHVzRWxlbWVudCh2KS5zZXRJbml0 aWFsSGFuZGxlcihmLnNldERpc2FibGVkLmN1cnJ5KHIsZmFsc2UpKS5zZXRGaW5h bGx5SGFuZGxlcihmLnNldERpc2FibGVkLmN1cnJ5KHIsZmFsc2UpKS5zZW5kKCk7 fSxzZXJpYWxpemU6ZnVuY3Rpb24ocCxxKXt2YXIgbz17fTtmLmdldEVsZW1lbnRz KHApLmZvckVhY2goZnVuY3Rpb24ocil7aWYoci5uYW1lJiYhci5kaXNhYmxlZCYm ci50eXBlIT0nc3VibWl0JylpZighci50eXBlfHwoKHIudHlwZT09J3JhZGlvJ3x8 ci50eXBlPT0nY2hlY2tib3gnKSYmci5jaGVja2VkKXx8ci50eXBlPT0ndGV4dCd8 fHIudHlwZT09J3Bhc3N3b3JkJ3x8ci50eXBlPT0naGlkZGVuJ3x8ci50YWdOYW1l PT0nVEVYVEFSRUEnKXt2YXIgdjtpZihyLm5hbWU9PSdwb3N0X2Zvcm1faWQnKXY9 ZS5wb3N0X2Zvcm1faWQ7Zi5fc2VyaWFsaXplSGVscGVyKG8sci5uYW1lLHZ8fGcu Z2V0VmFsdWUocikpO31lbHNlIGlmKHIudGFnTmFtZT09J1NFTEVDVCcpZm9yKHZh ciBzPTAsdD1yLm9wdGlvbnMubGVuZ3RoO3M8dDsrK3Mpe3ZhciB1PXIub3B0aW9u c1tzXTtpZih1LnNlbGVjdGVkKWYuX3NlcmlhbGl6ZUhlbHBlcihvLHIubmFtZSx1 LnZhbHVlKTt9fSk7aWYocSYmcS5uYW1lJiYnc3VibWl0Jz09cS50eXBlJiZjLmNv bnRhaW5zKHAscSkmJmMuaXNOb2RlT2ZUeXBlKHEsWydpbnB1dCcsJ2J1dHRvbidd KSlmLl9zZXJpYWxpemVIZWxwZXIobyxxLm5hbWUscS52YWx1ZSk7cmV0dXJuIGYu X3NlcmlhbGl6ZUZpeChvKTt9LF9zZXJpYWxpemVIZWxwZXI6ZnVuY3Rpb24obyxy LHMpe3ZhciBxPS8oW15cXV0rKVxbKFteXF1dKilcXSguKikvLmV4ZWMocik7aWYo cSl7b1txWzFdXT1vW3FbMV1dfHx7fTtpZihxWzJdPT0nJyl7dmFyIHA9MDt3aGls ZShvW3FbMV1dW3BdIT11bmRlZmluZWQpcCsrO31lbHNlIHA9cVsyXTtpZihxWzNd PT0nJyl7b1txWzFdXVtwXT1zO31lbHNlIGYuX3NlcmlhbGl6ZUhlbHBlcihvW3Fb MV1dLHAuY29uY2F0KHFbM10pLHMpO31lbHNlIG9bcl09czt9LF9zZXJpYWxpemVG aXg6ZnVuY3Rpb24obyl7dmFyIHM9W107Zm9yKHZhciBwIGluIG8pe2lmKG9bcF0g aW5zdGFuY2VvZiBPYmplY3Qpb1twXT1mLl9zZXJpYWxpemVGaXgob1twXSk7cy5w dXNoKHApO31pZihzLmxlbmd0aD4wKXt2YXIgcj0wLHE9dHJ1ZTtzLnNvcnQoKS5l YWNoKGZ1bmN0aW9uKHUpe2lmKHUhPXIrKylxPWZhbHNlO30pO2lmKHEpe3ZhciB0 PVtdO3MuZWFjaChmdW5jdGlvbih1KXt0W3VdPW9bdV07fSk7cmV0dXJuIHQ7fX1y ZXR1cm4gbzt9LHBvc3Q6ZnVuY3Rpb24ocixwLHEpe3ZhciBvPWRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoJ2Zvcm0nKTtvLmFjdGlvbj1yLnRvU3RyaW5nKCk7by5tZXRo b2Q9J1BPU1QnO28uc3R5bGUuZGlzcGxheT0nbm9uZSc7aWYocSlvLnRhcmdldD1x O2lmKGdlKCdwb3N0X2Zvcm1faWQnKSlwLnBvc3RfZm9ybV9pZD0kKCdwb3N0X2Zv cm1faWQnKS52YWx1ZTtwLmZiX2R0c2c9ZS5mYl9kdHNnO3AucG9zdF9mb3JtX2lk X3NvdXJjZT0nZHluYW1pY19wb3N0JztmLmNyZWF0ZUhpZGRlbklucHV0cyhwLG8p O2MuZ2V0Um9vdEVsZW1lbnQoKS5hcHBlbmRDaGlsZChvKTtvLnN1Ym1pdCgpO3Jl dHVybiBmYWxzZTt9LGNyZWF0ZUhpZGRlbklucHV0czpmdW5jdGlvbih1LG8scix0 KXtyPXJ8fHt9O3ZhciBxO3ZhciB2PWkuaW1wbG9kZVF1ZXJ5KHUsJycsZmFsc2Up O3ZhciB3PXYuc3BsaXQoJyYnKTtmb3IodmFyIHA9MDtwPHcubGVuZ3RoO3ArKylp Zih3W3BdKXt2YXIgeD13W3BdLnNwbGl0KCc9Jyk7dmFyIHM9eFswXTt2YXIgeT14 WzFdO2lmKHM9PT11bmRlZmluZWR8fHk9PT11bmRlZmluZWQpY29udGludWU7eT1p LmRlY29kZUNvbXBvbmVudCh5KTtpZihyW3NdJiZ0KXtyW3NdLnZhbHVlPXk7fWVs c2V7cT0kTignaW5wdXQnLHt0eXBlOidoaWRkZW4nLG5hbWU6cyx2YWx1ZTp5fSk7 cltzXT1xO28uYXBwZW5kQ2hpbGQocSk7fX1yZXR1cm4gcjt9LGdldEZpcnN0RWxl bWVudDpmdW5jdGlvbihwLHUpe3U9dXx8WydpbnB1dFt0eXBlPSJ0ZXh0Il0nLCd0 ZXh0YXJlYScsJ2lucHV0W3R5cGU9InBhc3N3b3JkIl0nLCdpbnB1dFt0eXBlPSJi dXR0b24iXScsJ2lucHV0W3R5cGU9InN1Ym1pdCJdJ107dmFyIHQ9W107Zm9yKHZh ciByPTA7cjx1Lmxlbmd0aDtyKyspe3Q9Yy5zY3J5KHAsdVtyXSk7Zm9yKHZhciBx PTA7cTx0Lmxlbmd0aDtxKyspe3ZhciBzPXRbcV07dHJ5e2lmKGVsZW1lbnRZKHMp PjAmJmVsZW1lbnRYKHMpPjApcmV0dXJuIHM7fWNhdGNoKG8pe319fXJldHVybiBu dWxsO30sZm9jdXNGaXJzdDpmdW5jdGlvbihwKXt2YXIgbz1mLmdldEZpcnN0RWxl bWVudChwKTtpZihvKXtvLmZvY3VzKCk7cmV0dXJuIHRydWU7fXJldHVybiBmYWxz ZTt9fTtsLmV4cG9ydHM9Zjt9KTsKX19lKCJkb20tZm9ybSIsWyJGb3JtIl0sZnVu Y3Rpb24oYSxiKXthLkZvcm09YignRm9ybScpO30sMyk7CmZ1bmN0aW9uIFVSTFNj cmFwZXIoYSl7dGhpcy5pbnB1dD1hO3RoaXMuZW5hYmxlKCk7fUNsYXNzLm1peGlu KFVSTFNjcmFwZXIsJ0FyYml0ZXInLHtyZXNldDpmdW5jdGlvbigpe3RoaXMubGFz dE1hdGNoPW51bGw7fSxlbmFibGU6ZnVuY3Rpb24oKXtpZih0aGlzLmV2ZW50cyly ZXR1cm47dmFyIGE9ZnVuY3Rpb24oYil7c2V0VGltZW91dCh0aGlzLmNoZWNrLmJp bmQodGhpcyxiKSwzMCk7fTt0aGlzLmV2ZW50cz1FdmVudC5saXN0ZW4odGhpcy5p bnB1dCx7cGFzdGU6YS5iaW5kKHRoaXMsZmFsc2UpLGtleWRvd246YS5iaW5kKHRo aXMsdHJ1ZSl9KTt9LGRpc2FibGU6ZnVuY3Rpb24oKXtpZighdGhpcy5ldmVudHMp cmV0dXJuO2Zvcih2YXIgZXZlbnQgaW4gdGhpcy5ldmVudHMpdGhpcy5ldmVudHNb ZXZlbnRdLnJlbW92ZSgpO3RoaXMuZXZlbnRzPW51bGw7fSxjaGVjazpmdW5jdGlv bihiKXt2YXIgYz10aGlzLmlucHV0LnZhbHVlO2lmKGImJlVSTFNjcmFwZXIudHJp Z2dlcihjKSlyZXR1cm47dmFyIGE9VVJMU2NyYXBlci5tYXRjaChjKTtpZihhJiZh IT10aGlzLmxhc3RNYXRjaCl7dGhpcy5sYXN0TWF0Y2g9YTt0aGlzLmluZm9ybSgn bWF0Y2gnLHt1cmw6YX0pO319fSk7KGZ1bmN0aW9uKCl7dmFyIGE9JyEiIyUmXCco KSosLS4vOjs8Pj9AW1xcXV5fYHt8fScscj0nXHUyMDAwLVx1MjA2Rlx1MDBhYlx1 MDBiYic7dmFyIG89Jyg/Oig/Omh0fGYpdHBzPyk6Ly8nLGc9Jyg/Oig/OlxcZHsx LDN9Wy5dKXszfVxcZHsxLDN9KScscz0nKD86XFxiKXd3d1xcZHswLDN9Wy5dJyxq PSdbXlxccycrYStyKyddJyxoPScoPzooPzpbLjpcXC1fJUBdfCcraisnKSonK2or JyknLHA9Jyg/OlsuXVthLXpdezIsNH0pJyxuPScoPzo6XFxkKyl7MCwxfScsZD0n KD89W1wvPyNdKSc7dmFyIGY9Jyg/OicrJyg/OicrbytoK24rJyl8JysnKD86Jytn K24rJyl8JysnKD86JytzK2grcCtuKycpfCcrJyg/OicraCtwK24rZCsnKScrJykn O3ZhciBlPSdbXC8jP10nLGM9J1xcKFteXFxzKCk8Pl0rXFwpJyxsPSdbXlxccygp PD5dKycsaz0nW15cXHMnK2ErcisnXSc7dmFyIG09Jyg/OicrJyg/OicrZSsnKScr Jyg/OicrJyg/OicrYysnfCcrbCsnKSonKycoPzonK2MrJ3wnK2srJyknKycpKicr JykqJzt2YXIgaT1uZXcgUmVnRXhwKCcoJysnKD86JytmKycpJysnKD86JyttKycp JysnKScsJ2ltJyk7dmFyIGI9bmV3IFJlZ0V4cCgnKCcrJyg/OicrbytoK24rJyl8 JysnKD86JytzK2grcCtuKycpJysnKScpO3ZhciBxPS9bXHMnIjtdLztVUkxTY3Jh cGVyLm1hdGNoPWZ1bmN0aW9uKHUpe3ZhciB0PShpLmV4ZWModSl8fFtdKVsxXXx8 bnVsbDtpZih0JiZ0LmluZGV4T2YoJ0AnKSE9LTEpe3JldHVybiAoYi5leGVjKHQp KT90Om51bGw7fWVsc2UgcmV0dXJuIHQ7fTtVUkxTY3JhcGVyLnRyaWdnZXI9ZnVu Y3Rpb24odCl7cmV0dXJuICFxLnRlc3QodC5jaGFyQXQodC5sZW5ndGgtMSkpO307 fSkoKTsKKGZ1bmN0aW9uKCl7dmFyIGI9MSxhPTI7dmFyIGY9e307dmFyIGU9ZnVu Y3Rpb24oKXt2YXIgaD1ET00uc2NyeSh0aGlzLnJvb3QsJ3NwYW4ubGlua0F0dGFj aG1lbnQnKVswXTtpZighaCYmdGhpcy5pc01ldGFDb21wb3NlciloPURPTS5zY3J5 KHRoaXMucm9vdCwnc3Bhbi5hdHRhY2htZW50QWNjZXB0c0xpbmsnKVswXTtpZigh aClyZXR1cm47dmFyIGc9UGFyZW50LmJ5VGFnKGgsJ2Zvcm0nKTt0aGlzLnNjcmFw ZXI9bmV3IFVSTFNjcmFwZXIodGhpcy5pbnB1dCk7dGhpcy5zY3JhcGVyLnN1YnNj cmliZSgnbWF0Y2gnLGZ1bmN0aW9uKGksail7aWYodGhpcy5pc01ldGFDb21wb3Nl cil7dmFyIGs9dGhpcy5mb3JtLnhocGNfdGFyZ2V0aWQ7dmFyIGw9bmV3IFVSSSgn L2FqYXgvbWV0YWNvbXBvc2VyL2F0dGFjaG1lbnQvbGluay9zY3JhcGVyLnBocCcp O2wuYWRkUXVlcnlEYXRhKHtzY3JhcGVfdXJsOmVuY29kZVVSSUNvbXBvbmVudChq LnVybCksdGFyZ2V0aWQ6ay52YWx1ZX0pO2cuYWN0aW9uPWwudG9TdHJpbmcoKTt9 ZWxzZXtDU1Muc2hvdyhoKTtnLmFjdGlvbj0nL2FqYXgvY29tcG9zZXIvYXR0YWNo bWVudC9saW5rL3NjcmFwZXIucGhwP3NjcmFwZV91cmw9JytlbmNvZGVVUklDb21w b25lbnQoai51cmwpO31nLnhocGMudmFsdWU9aC5pZDtnLnhocGMuZGlzYWJsZWQ9 ZmFsc2U7Zy54aHBjLmNsaWNrKCk7fS5iaW5kKHRoaXMpKTt0aGlzLmlzTWV0YUNv bXBvc2VyJiZ0aGlzLnNjcmFwZXIuY2hlY2soKTt9O3ZhciBkPWZ1bmN0aW9uKCl7 dmFyIGg9dGhpcy5mb3JtLnhocGNfdGFyZ2V0aWQ7dmFyIGk9aC52YWx1ZTt2YXIg Zz1BcmJpdGVyLnN1YnNjcmliZSgnQ29tcG9zZXJBdWRpZW5jZVNlbGVjdG9yL2dy b3VwJyxmdW5jdGlvbihrLGwpe2gudmFsdWU9bC5ncm91cDt9KTt2YXIgaj1BcmJp dGVyLnN1YnNjcmliZSgnQ29tcG9zZXJBdWRpZW5jZVNlbGVjdG9yL25vbmdyb3Vw JyxmdW5jdGlvbigpe2gudmFsdWU9aTt9KTtvbnVubG9hZFJlZ2lzdGVyKEFyYml0 ZXIudW5zdWJzY3JpYmUuY3VycnkoZykpO29udW5sb2FkUmVnaXN0ZXIoQXJiaXRl ci51bnN1YnNjcmliZS5jdXJyeShqKSk7fTt2YXIgYz1mdW5jdGlvbihnKXtpZih0 aGlzLmluZm9ybSgnc3VibWl0Jyk9PT1mYWxzZSl7Zy5raWxsKCk7cmV0dXJuIGZh bHNlO31pZih0aGlzLnN1Ym1pdEhhbmRsZXIpcmV0dXJuIChuZXcgRnVuY3Rpb24o dGhpcy5zdWJtaXRIYW5kbGVyKSkuYXBwbHkodGhpcy5mb3JtKTt9O3dpbmRvdy5D b21wb3Nlcj1mdW5jdGlvbihqLGksaCxnKXtmW2ouaWRdPXRoaXM7dGhpcy5yb290 PWo7dGhpcy5yZXNldENmZz1pO3RoaXMuZGF0YVNvdXJjZT1nO3RoaXMubGF6eUVu ZHBvaW50PXRoaXMucmVzZXRDZmcmJnRoaXMucmVzZXRDZmcubGF6eUVuZHBvaW50 O0Jvb3Rsb2FkZXIubG9hZENvbXBvbmVudHMoJ2RvbScsZnVuY3Rpb24oKXt0aGlz LmZvY3VzPURPTS5maW5kKGosJ2Rpdi5mb2N1c190YXJnZXQnKTt0aGlzLmZvcm09 RE9NLmZpbmQoaiwnZm9ybS5hdHRhY2htZW50Rm9ybScpO3RoaXMuY29udGVudD1E T00uZmluZChqLCdkaXYuYXR0YWNobWVudENvbnRlbnQnKTt0aGlzLmlzTWV0YUNv bXBvc2VyPWg7aWYodGhpcy5pc01ldGFDb21wb3Nlcil7dGhpcy5tZXNzYWdlQm94 PURPTS5maW5kKGosJ2Rpdi51aU1ldGFDb21wb3Nlck1lc3NhZ2VCb3gnKTt0aGlz Lm1ldGFBcmVhPURPTS5maW5kKGosJ2Rpdi5hdHRhY2htZW50TWV0YUFyZWEnKTt0 aGlzLmJvdHRvbUFyZWE9RE9NLmZpbmQoaiwnZGl2LmF0dGFjaG1lbnRCb3R0b21B cmVhJyk7dGhpcy5iYXJBcmVhPURPTS5maW5kKGosJ2Rpdi5hdHRhY2htZW50QmFy QXJlYScpO3RoaXMuYmx1cmI9RE9NLmZpbmQoaiwnZGl2LnVpTWV0YUNvbXBvc2Vy TWVzc2FnZUJveCBkaXYudGV4dEJsdXJiJyk7dGhpcy5pbnB1dD1ET00uZmluZChq LCdkaXYudWlNZXRhQ29tcG9zZXJNZXNzYWdlQm94IHRleHRhcmVhLmlucHV0Jyk7 dGhpcy5idXR0b249RE9NLmZpbmQoaiwnZGl2LnVpTWV0YUNvbXBvc2VyTWVzc2Fn ZUJveCBsYWJlbC5zdWJtaXRCdG4nKTt0aGlzLnByaXZhY3k9RE9NLmZpbmQoaiwn ZGl2LnVpTWV0YUNvbXBvc2VyTWVzc2FnZUJveCBsaS5wcml2YWN5V2lkZ2V0Jyk7 fWVsc2V7dGhpcy5ibHVyYj1ET00uZmluZChqLCdkaXYudWlDb21wb3Nlck1lc3Nh Z2VCb3ggZGl2LnRleHRCbHVyYicpO3RoaXMuaW5wdXQ9RE9NLmZpbmQoaiwnZGl2 LnVpQ29tcG9zZXJNZXNzYWdlQm94IHRleHRhcmVhLmlucHV0Jyk7dGhpcy5idXR0 b249RE9NLmZpbmQoaiwnZGl2LnVpQ29tcG9zZXJNZXNzYWdlQm94IGxhYmVsLnN1 Ym1pdEJ0bicpO3RoaXMucHJpdmFjeT1ET00uZmluZChqLCdkaXYudWlDb21wb3Nl ck1lc3NhZ2VCb3ggbGkucHJpdmFjeVdpZGdldCcpO31FdmVudC5saXN0ZW4odGhp cy5mb3JtLCdzdWJtaXQnLGMuYmluZCh0aGlzKSk7aWYodGhpcy5pc01ldGFDb21w b3Nlcil7RXZlbnQubGlzdGVuKHRoaXMuaW5wdXQsJ2ZvY3VzJyx0aGlzLm9uRm9j dXMuYmluZCh0aGlzKSk7aWYoUGFyZW50LmJ5Q2xhc3ModGhpcy5pbnB1dCwnY2hp bGRfd2FzX2ZvY3VzZWQnKSl0aGlzLm9uRm9jdXMuYmluZCh0aGlzKS5kZWZlcigp O31BcmJpdGVyLmluZm9ybSgneGhwYy9jb25zdHJ1Y3QvJytqLmlkLHRoaXMsQXJi aXRlci5CRUhBVklPUl9TVEFURSk7fS5iaW5kKHRoaXMpKTt9O0NsYXNzLm1peGlu KENvbXBvc2VyLCdBcmJpdGVyJyx7aW5pdDpmdW5jdGlvbihnKXt0aGlzLm1lbnRp b25zSW5wdXQ9ZztpZih0aGlzLm1lbnRpb25zSW5wdXQpe3RoaXMubWVudGlvbnNJ bnB1dC5zdWJzY3JpYmUoJ2luaXQnLGZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5tZW50 aW9uc0lucHV0LmdldFR5cGVhaGVhZCgpLmdldFZpZXcoKTtoLnN1YnNjcmliZShb J3Jlc2V0JywncmVuZGVyJ10sZnVuY3Rpb24oaSl7Q1NTLmNvbmRpdGlvbkNsYXNz KHRoaXMucm9vdCwndWlDb21wb3Nlck1lbnRpb24nLChpPT0ncmVuZGVyJykpO30u YmluZCh0aGlzKSk7fS5iaW5kKHRoaXMpKTt0aGlzLm1lbnRpb25zSW5wdXQuc3Vi c2NyaWJlKCd1cGRhdGUnLGZ1bmN0aW9uKGksaCl7QXJiaXRlci5pbmZvcm0oJ0Nv bXBvc2VyL21lbnRpb25zJyxrZXlzKGgubWVudGlvbmVkKSk7fSk7fWUuY2FsbCh0 aGlzKTtpZih0aGlzLmlzTWV0YUNvbXBvc2VyKWQuY2FsbCh0aGlzKTt0aGlzLmlu Zm9ybSgnaW5pdCcsbnVsbCxBcmJpdGVyLkJFSEFWSU9SX1BFUlNJU1RFTlQpO29u YmVmb3JldW5sb2FkUmVnaXN0ZXIodGhpcy5faGFuZGxlVW5zYXZlZENoYW5nZXMu YmluZCh0aGlzKSk7fSxzZXRCbHVyYjpmdW5jdGlvbihnKXtET00uc2V0Q29udGVu dCh0aGlzLmJsdXJiLGcpO30sc2V0RW5hYmxlZDpmdW5jdGlvbihnKXtCdXR0b24u c2V0RW5hYmxlZCh0aGlzLmJ1dHRvbixnKTt9LHNldExvYWRpbmc6ZnVuY3Rpb24o Zyl7Q1NTLmNvbmRpdGlvbkNsYXNzKHRoaXMucm9vdCwnYXN5bmNfc2F2aW5nJywh IWcpO30sc2V0Q29udGVudFZpc2libGU6ZnVuY3Rpb24oZyl7Q1NTLmNvbmRpdGlv bkNsYXNzKHRoaXMucm9vdCwndWlDb21wb3NlckhpZGVDb250ZW50JywhZyk7fSxz ZXRNZXNzYWdlQm94VmlzaWJsZTpmdW5jdGlvbihnKXtDU1MuY29uZGl0aW9uQ2xh c3ModGhpcy5yb290LCd1aUNvbXBvc2VySGlkZU1lc3NhZ2VCb3gnLCFnKTt9LHNl dElucHV0VmlzaWJsZTpmdW5jdGlvbihnKXtDU1MuY29uZGl0aW9uQ2xhc3ModGhp cy5yb290LCd1aUNvbXBvc2VySGlkZUlucHV0JywhZyk7fSxzZXRUb3BpY1RhZ2dl clZpc2libGU6ZnVuY3Rpb24oZyl7Q1NTLmNvbmRpdGlvbkNsYXNzKHRoaXMucm9v dCwndWlUYWdDb21wb3NlckhpZGRlbicsIWcpO30sbXV0YXRlOmZ1bmN0aW9uKGkp e3ZhciBoPWdlKGkueGhwYyk7aWYoaCl7dmFyIGo9RE9NLnNjcnkodGhpcy5yb290 LCcudWlDb21wb3NlckF0dGFjaG1lbnRTZWxlY3RlZCcpWzBdO2lmKGkuY29uZmly bUF1Z21lbnRhdGlvbiYmaiE9PWgpcmV0dXJuO2omJkNTUy5yZW1vdmVDbGFzcyhq LCd1aUNvbXBvc2VyQXR0YWNobWVudFNlbGVjdGVkJyk7Q1NTLmFkZENsYXNzKGgs J3VpQ29tcG9zZXJBdHRhY2htZW50U2VsZWN0ZWQnKTtpZighaS5kaXNhYmxlQ2Fj aGUpRXZlbnQubGlzdGVuKGgsJ2NsaWNrJyxmdW5jdGlvbihrKXskRShrKS5zdG9w KCk7aS5kaXNhYmxlQ2FjaGU9dHJ1ZTt0aGlzLm11dGF0ZShpKTt9LmJpbmQodGhp cykpO31pZighaS5rZWVwQ29udGVudEFyZWFzKXt0aGlzLnNldENvbnRlbnRWaXNp YmxlKGZhbHNlKTtET00uZW1wdHkodGhpcy5jb250ZW50KTtpZih0aGlzLmlzTWV0 YUNvbXBvc2VyKXt0aGlzLm1lbnRpb25zSW5wdXQmJnRoaXMubWVudGlvbnNJbnB1 dC5zZXRBdXhDb250ZW50KG51bGwpO0RPTS5lbXB0eSh0aGlzLm1ldGFBcmVhKTtE T00uZW1wdHkodGhpcy5ib3R0b21BcmVhKTtET00uZW1wdHkodGhpcy5iYXJBcmVh KTt9fWlmKGkuY29udGVudCl7RE9NLnNldENvbnRlbnQodGhpcy5jb250ZW50LEhU TUwoaS5jb250ZW50KSk7dGhpcy5zZXRDb250ZW50VmlzaWJsZSh0cnVlKTt9aWYo dGhpcy5pc01ldGFDb21wb3Nlcil7aS5tZXRhQ29udGVudCYmRE9NLnNldENvbnRl bnQodGhpcy5tZXRhQXJlYSxIVE1MKGkubWV0YUNvbnRlbnQpKTtpLmJvdHRvbUNv bnRlbnQmJkRPTS5zZXRDb250ZW50KHRoaXMuYm90dG9tQXJlYSxIVE1MKGkuYm90 dG9tQ29udGVudCkpO2kuYmFyQ29udGVudCYmRE9NLnNldENvbnRlbnQodGhpcy5i YXJBcmVhLEhUTUwoaS5iYXJDb250ZW50KSk7fXRoaXMuc2V0TWVzc2FnZUJveFZp c2libGUoIWkubWVzc2FnZUJveEhpZGRlbik7Q1NTLmNvbmRpdGlvbkNsYXNzKHRo aXMucm9vdCwndWlDb21wb3NlcldoaXRlTWVzc2FnZUJveCcsIWkubWVzc2FnZUJv eEhpZGRlbiYmIWkuaW5wdXRIaWRkZW4mJiFpLmNvbnRlbnQpO3RoaXMuc2V0SW5w dXRWaXNpYmxlKCFpLmlucHV0SGlkZGVuKTtDU1MuY29uZGl0aW9uU2hvdyh0aGlz LnByaXZhY3ksIWkucHJpdmFjeVdpZGdldEhpZGRlbik7SW5wdXQuc2V0UGxhY2Vo b2xkZXIodGhpcy5pbnB1dCxpLnBsYWNlaG9sZGVyKTtCdXR0b24uc2V0TGFiZWwo dGhpcy5idXR0b24saS5idXR0b25MYWJlbCk7dGhpcy5zZXRCbHVyYihIVE1MKGku Ymx1cmIpKTtpZihpLmF1dG9zY3JhcGUpe3RoaXMuc2NyYXBlciYmdGhpcy5zY3Jh cGVyLmVuYWJsZSgpO31lbHNlIHRoaXMuc2NyYXBlciYmdGhpcy5zY3JhcGVyLmRp c2FibGUoKTt0aGlzLnNldEVuYWJsZWQoIWkuZGlzYWJsZWQpO3RoaXMuc2V0VG9w aWNUYWdnZXJWaXNpYmxlKCFpLmhpZGVUb3BpY1RhZ2dlcik7dGhpcy5mb3JtLnNl dEF0dHJpYnV0ZSgnYWN0aW9uJyxpLmVuZHBvaW50KTtpZihpLmZvcm1UeXBlPT1i KXt0aGlzLmZvcm0uc2V0QXR0cmlidXRlKCdyZWwnLCdhc3luYycpO31lbHNlIHRo aXMuZm9ybS5yZW1vdmVBdHRyaWJ1dGUoJ3JlbCcpO2lmKGkuZm9ybVR5cGU9PWEp e3RoaXMuZm9ybS50YXJnZXQ9aS5pZnJhbWVOYW1lO3RoaXMuZm9ybS5lbmN0eXBl PXRoaXMuZm9ybS5lbmNvZGluZz0nbXVsdGlwYXJ0L2Zvcm0tZGF0YSc7fWVsc2V7 dGhpcy5mb3JtLnJlbW92ZUF0dHJpYnV0ZSgndGFyZ2V0Jyk7dGhpcy5mb3JtLnJl bW92ZUF0dHJpYnV0ZSgnZW5jdHlwZScpO3RoaXMuZm9ybS5yZW1vdmVBdHRyaWJ1 dGUoJ2VuY29kaW5nJyk7fXRoaXMuc3VibWl0SGFuZGxlcj1pLnN1Ym1pdEhhbmRs ZXI7dGhpcy5sYXp5RW5kcG9pbnQ9aS5sYXp5RW5kcG9pbnQ7aS5hdHRhY2htZW50 SlMmJihuZXcgRnVuY3Rpb24oaS5hdHRhY2htZW50SlMpKS5hcHBseSh0aGlzKTtD U1MuYWRkQ2xhc3ModGhpcy5yb290LCd1aUNvbXBvc2VySW50ZXJhY3RlZCcpO0NT Uy5hZGRDbGFzcyh0aGlzLnJvb3QsJ3VpQ29tcG9zZXJPcGVuJyk7aWYoaS5tZXNz YWdlQm94Rm9jdXNlZCl7dmFyIGc9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtpZihn PT09ZG9jdW1lbnQuYm9keXx8UGFyZW50LmJ5Q2xhc3MoZywnYXR0YWNobWVudExp bmsnKSl0aGlzLmZvY3VzSW5wdXQuYmluZCh0aGlzKS5kZWZlcigpO31BcmJpdGVy LmluZm9ybSgnY29tcG9zZXIvbXV0YXRlJyx0aGlzKTt9LHN1YnNjcmliZVRvTXV0 YXRlOmZ1bmN0aW9uKGcpe3JldHVybiBBcmJpdGVyLnN1YnNjcmliZSgnY29tcG9z ZXIvbXV0YXRlJyxmdW5jdGlvbihoLGkpe2lmKGk9PT10aGlzKWcoKTt9LmJpbmQo dGhpcykpO30scmVzZXQ6ZnVuY3Rpb24oaCxnKXtpZighaCl7SW5wdXQucmVzZXQo dGhpcy5pbnB1dCk7dGhpcy5tZW50aW9uc0lucHV0JiZ0aGlzLm1lbnRpb25zSW5w dXQucmVzZXQoKTt9aWYodGhpcy5pc01ldGFDb21wb3Nlcil7RE9NLmVtcHR5KHRo aXMubWV0YUFyZWEpO0RPTS5lbXB0eSh0aGlzLmJvdHRvbUFyZWEpO0RPTS5lbXB0 eSh0aGlzLmJhckFyZWEpO31pZih0aGlzLnJlc2V0Q2ZnKXt0aGlzLm11dGF0ZSh0 aGlzLnJlc2V0Q2ZnKTt9ZWxzZXt2YXIgaT1ET00uc2NyeSh0aGlzLnJvb3QsJy51 aUNvbXBvc2VyQXR0YWNobWVudFNlbGVjdGVkJylbMF07aWYoaSlDU1MucmVtb3Zl Q2xhc3MoaSwndWlDb21wb3NlckF0dGFjaG1lbnRTZWxlY3RlZCcpO31DU1MucmVt b3ZlQ2xhc3ModGhpcy5yb290LCd1aUNvbXBvc2VySW50ZXJhY3RlZCcpO0NTUy5z ZXRDbGFzcyh0aGlzLmZvY3VzLCdmb2N1c190YXJnZXQnKTt0aGlzLnNldExvYWRp bmcoZmFsc2UpO2lmKGcpe3ZhciBqPURPTS5zY3J5KHRoaXMucm9vdCwnLndpZGdl dCcpWzBdO2omJkRPTS5yZXBsYWNlKGosZyk7fUFyYml0ZXIuaW5mb3JtKCdjb21w b3Nlci9yZXNldCcpO30sb25Gb2N1czpmdW5jdGlvbigpe2lmKHRoaXMubGF6eUVu ZHBvaW50KXt2YXIgZz1ET00uZmluZCh0aGlzLnJvb3QsJ2Zvcm0uYXR0YWNobWVu dFNlbGVjdEZvcm0nKTt2YXIgaT1uZXcgVVJJKHRoaXMubGF6eUVuZHBvaW50KTtp LnNldFF1ZXJ5RGF0YSh7aXNBdWdtZW50YXRpb246dHJ1ZX0pO2cuYWN0aW9uPWku dG9TdHJpbmcoKTt2YXIgaD1ET00uc2NyeSh0aGlzLnJvb3QsJy51aUNvbXBvc2Vy QXR0YWNobWVudFNlbGVjdGVkJylbMF07Zy54aHBjLnZhbHVlPWgmJmguaWQ7Zy54 aHBjLmNsaWNrKCk7Q1NTLnJlbW92ZUNsYXNzLmN1cnJ5KHRoaXMucm9vdCwnYXN5 bmNfc2F2aW5nJykuZGVmZXIoKTt9dGhpcy5pbmZvcm0oJ2ZvY3VzJyk7fSxmb2N1 c0lucHV0OmZ1bmN0aW9uKCl7SW5wdXQuZm9jdXModGhpcy5pbnB1dCk7fSxnZXRJ bnB1dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0O30sdXBkYXRlRGF0YVNv dXJjZVRva2VuOmZ1bmN0aW9uKGcpe2lmKHRoaXMuZGF0YVNvdXJjZSl0aGlzLmRh dGFTb3VyY2UudXBkYXRlVG9rZW4oZyk7fSxfaGFuZGxlVW5zYXZlZENoYW5nZXM6 ZnVuY3Rpb24oKXt2YXIgZz1QYWdlVHJhbnNpdGlvbnMuZ2V0TmV4dFVSSSgpO2lm KGcuZ2V0UXVlcnlEYXRhKCkuaGFzT3duUHJvcGVydHkoJ3RoZWF0ZXInKSlyZXR1 cm47aWYodGhpcy5pbnB1dC5vZmZzZXRQYXJlbnQhPT1udWxsJiYhSW5wdXQuaXNF bXB0eSh0aGlzLmlucHV0KSYmISh3aW5kb3cuRGlhbG9nJiZEaWFsb2cuZ2V0Q3Vy cmVudCgpKSlyZXR1cm4gIllvdSBoYXZlbid0IGZpbmlzaGVkIHlvdXIgcG9zdCB5 ZXQuIERvIHlvdSB3YW50IHRvIGxlYXZlIHdpdGhvdXQgZmluaXNoaW5nPyI7fX0p O2NvcHlfcHJvcGVydGllcyhDb21wb3Nlcix7cHVibGlzaDpmdW5jdGlvbihoLGcp e2c9Z3x8e307Zy5jb21wb3Nlcj1Db21wb3Nlci5nZXRJbnN0YW5jZSgkKGgpKTtn LmNvbXBvc2VyLnJlc2V0KGZhbHNlLGcuYXVkaWVuY2VNYXJrdXApO2cuYXVkaWVu Y2VNYXJrdXA9bnVsbDtpZihnLnN0cmVhbU1hcmt1cClnLnN0cmVhbVN0b3J5PUhU TUwoZy5zdHJlYW1NYXJrdXApLmdldFJvb3ROb2RlKCk7QXJiaXRlci5pbmZvcm0o J2NvbXBvc2VyL3B1Ymxpc2gnLGcpO30sZ2V0SW5zdGFuY2U6ZnVuY3Rpb24oZyl7 dmFyIGg9UGFyZW50LmJ5Q2xhc3MoJChnKSwndWlDb21wb3NlcicpO3JldHVybiBo P2ZbaC5pZF06bnVsbDt9fSk7fSkoKTsKZnVuY3Rpb24gTWV0YUNvbXBvc2VyTWVz c2FnZUJveCgpe31NZXRhQ29tcG9zZXJNZXNzYWdlQm94LnByb3RvdHlwZT17aW5p dDpmdW5jdGlvbihiLGEpe3RoaXMuaW5wdXRDb250YWluZXI9RE9NLnNjcnkoYiwn ZGl2LmlucHV0Q29udGFpbmVyJylbMF07dGhpcy50ZXh0SW5wdXQ9RE9NLnNjcnko YiwndGV4dGFyZWEubWVudGlvbnNUZXh0YXJlYScpWzBdO3RoaXMubWV0YUFyZWE9 RE9NLnNjcnkoYiwnZGl2LmF0dGFjaG1lbnRNZXRhQXJlYScpWzBdO3RoaXMuYm90 dG9tQXJlYT1ET00uc2NyeShiLCdkaXYuYXR0YWNobWVudEJvdHRvbUFyZWEnKVsw XTt0aGlzLmJhckFyZWE9RE9NLnNjcnkoYiwnZGl2LmF0dGFjaG1lbnRCYXJBcmVh JylbMF07RXZlbnQubGlzdGVuKHRoaXMuaW5wdXRDb250YWluZXIsJ2NsaWNrJyxm dW5jdGlvbihjKXt2YXIgZD1jLmdldFRhcmdldCgpO2lmKCFET00uY29udGFpbnMo dGhpcy5tZXRhQXJlYSxkKSYmZCE9PXRoaXMudGV4dElucHV0KXRoaXMudGV4dElu cHV0LmZvY3VzKCk7fS5iaW5kKHRoaXMpKTt9fTsKX19lKCJYRCIsWyJmdW5jdGlv bi1leHRlbnNpb25zIiwiY29weVByb3BlcnRpZXMiLCJ1YSIsInVyaSIsImFyYml0 ZXIiXSxmdW5jdGlvbihnLGksaCxmKXtpKCJmdW5jdGlvbi1leHRlbnNpb25zIik7 dmFyIGU9aSgiY29weVByb3BlcnRpZXMiKTt2YXIgaj1pKCJ1YSIpO3ZhciBiPWko InVyaSIpO3ZhciBhPWkoImFyYml0ZXIiKTt2YXIgZD17X2NhbGxiYWNrczpbXSxf b3B0czp7YXV0b1Jlc2l6ZTpmYWxzZSxhbGxvd1Nocmluazp0cnVlLGNoYW5uZWxV cmw6bnVsbCxoaWRlT3ZlcmZsb3c6ZmFsc2UsbmV3UmVzaXplTWV0aG9kOmZhbHNl LHJlc2l6ZVRpbWVvdXQ6MTAwLHJlc2l6ZVdpZHRoOmZhbHNlLGV4cGVjdFJlc2l6 ZUFjazpmYWxzZSxyZXNpemVBY2tUaW1lb3V0OjYwMDB9LF9sYXN0UmVzaXplQWNr SWQ6MCxfcmVzaXplQ291bnQ6MCxfcmVzaXplVGltZXN0YW1wOjAsaW5pdDpmdW5j dGlvbihrKXt0aGlzLl9vcHRzPWUoZSh7fSx0aGlzLl9vcHRzKSxrKTtpZih0aGlz Ll9vcHRzLmF1dG9SZXNpemUpdGhpcy5fc3RhcnRSZXNpemVNb25pdG9yKCk7YS5z dWJzY3JpYmUoJ0Nvbm5lY3QuVW5zYWZlLnJlc2l6ZS5hY2snLGZ1bmN0aW9uKG0s bCl7aWYoIWwuaWQpbC5pZD10aGlzLl9yZXNpemVDb3VudDtpZihsLmlkPnRoaXMu X2xhc3RSZXNpemVBY2tJZCl0aGlzLl9sYXN0UmVzaXplQWNrSWQ9bC5pZDt9LmJp bmQodGhpcykpO30sc2VuZDpmdW5jdGlvbihsLGspe2s9a3x8dGhpcy5fb3B0cy5j aGFubmVsVXJsO2lmKCFrKXJldHVybjtpZihrLnN1YnN0cigwLDQpIT0naHR0cCcp cmV0dXJuO3ZhciBzPWsrJyYnK2IuaW1wbG9kZVF1ZXJ5KGwpLG89J2YnKyhNYXRo LnJhbmRvbSgpKigxPDwzMCkpLnRvU3RyaW5nKDE2KS5yZXBsYWNlKCcuJywnJyks bT1kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l bnQoJ2RpdicpKSxyPWZhbHNlO20uc3R5bGUucG9zaXRpb249J2Fic29sdXRlJztt LnN0eWxlLnRvcD0nLTEwMDAwcHgnO20uc3R5bGUud2lkdGg9JzFweCc7bS5zdHls ZS5oZWlnaHQ9JzFweCc7ZC5fY2FsbGJhY2tzW29dPWZ1bmN0aW9uKCl7aWYocil7 KGZ1bmN0aW9uKCl7bS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG0pO30pLmRlZmVy KDMwMDApO2RlbGV0ZSBkLl9jYWxsYmFja3Nbb107fX07aWYoai5pZSgpKXt2YXIg cCxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3A9JzxpZnJhbWUgb25s b2FkPSJYRC5fY2FsbGJhY2tzLicrbysnKCkiPjwvaWZyYW1lPic7bi5pbm5lckhU TUw9cDtuLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCdzcmMnLHMpO3A9bi5pbm5l ckhUTUw7bS5pbm5lckhUTUw9JzxpZnJhbWUgc3JjPSJqYXZhc2NyaXB0OmZhbHNl Ij48L2lmcmFtZT4nO3I9dHJ1ZTsoZnVuY3Rpb24oKXttLmlubmVySFRNTD1wO30p LmRlZmVyKCk7fWVsc2V7dmFyIHE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZy YW1lJyk7cS5vbmxvYWQ9ZC5fY2FsbGJhY2tzW29dO20uYXBwZW5kQ2hpbGQocSk7 cj10cnVlO3Euc3JjPXM7fX0sX2NvbXB1dGVTaXplOmZ1bmN0aW9uKCl7cmV0dXJu IHt3aWR0aDp0aGlzLl9vcHRzLnJlc2l6ZVdpZHRoP3RoaXMuX2NhbGNXaWR0aChk LmZvcmNlZF9taW5fd2lkdGgpOjAsaGVpZ2h0OnRoaXMuX2NhbGNIZWlnaHQodGhp cy5fb3B0cy5uZXdSZXNpemVNZXRob2QpfTt9LF9jYWxjSGVpZ2h0OmZ1bmN0aW9u KG4pe3ZhciBrPWRvY3VtZW50LmJvZHksbD1kb2N1bWVudC5kb2N1bWVudEVsZW1l bnQsbT0wO2lmKG4pe209TWF0aC5tYXgoTWF0aC5tYXgoay5vZmZzZXRIZWlnaHQs ay5zY3JvbGxIZWlnaHQpK2sub2Zmc2V0VG9wLE1hdGgubWF4KGwub2Zmc2V0SGVp Z2h0LGwuc2Nyb2xsSGVpZ2h0KStsLm9mZnNldFRvcCk7fWVsc2V7aWYoai5pZSgp KXttPU1hdGgubWF4KGsub2Zmc2V0SGVpZ2h0LGsuc2Nyb2xsSGVpZ2h0KStrLm9m ZnNldFRvcDt9ZWxzZSBtPWwub2Zmc2V0SGVpZ2h0K2wub2Zmc2V0VG9wO2lmKHdp bmRvdy5EaWFsb2cpbT1NYXRoLm1heChtLERpYWxvZy5tYXhfYm90dG9tKTt9cmV0 dXJuIG07fSxfY2FsY1dpZHRoOmZ1bmN0aW9uKHEpe3ZhciBrPWRvY3VtZW50LmJv ZHksbz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscj0wO2lmKGsub2Zmc2V0V2lk dGg8ay5zY3JvbGxXaWR0aCl7cj1rLnNjcm9sbFdpZHRoK2sub2Zmc2V0TGVmdDt9 ZWxzZXt2YXIgbj1rLmNoaWxkTm9kZXM7Zm9yKHZhciBwPTA7cDxuLmxlbmd0aDtw Kyspe3ZhciBsPW5bcF07dmFyIG09bC5vZmZzZXRXaWR0aCtsLm9mZnNldExlZnQ7 aWYobT5yKXI9bTt9fWlmKHEpcj1NYXRoLm1heChyLHEpO2lmKG8uY2xpZW50TGVm dD4wKXIrPShvLmNsaWVudExlZnQqMik7aWYoby5jbGllbnRUb3A+MCloZWlnaHQr PShvLmNsaWVudFRvcCoyKTtyZXR1cm4gcjt9LF9zdGFydFJlc2l6ZU1vbml0b3I6 ZnVuY3Rpb24oKXt2YXIgbCxrPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtpZih0 aGlzLl9vcHRzLmhpZGVPdmVyZmxvdyl7ay5zdHlsZS5vdmVyZmxvdz0naGlkZGVu Jztkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSdoaWRkZW4nO31zZXRJbnRl cnZhbCgoZnVuY3Rpb24oKXt2YXIgcD10aGlzLl9jb21wdXRlU2l6ZSgpO3ZhciBx PURhdGUubm93KCk7dmFyIG09dGhpcy5fbGFzdFJlc2l6ZUFja0lkPHRoaXMuX3Jl c2l6ZUNvdW50JiYocS10aGlzLl9yZXNpemVUaW1lc3RhbXApPnRoaXMuX29wdHMu cmVzaXplQWNrVGltZW91dDtpZighbHx8KHRoaXMuX29wdHMuZXhwZWN0UmVzaXpl QWNrJiZtKXx8KHRoaXMuX29wdHMuYWxsb3dTaHJpbmsmJmwud2lkdGghPXAud2lk dGgpfHwoIXRoaXMuX29wdHMuYWxsb3dTaHJpbmsmJmwud2lkdGg8cC53aWR0aCl8 fCh0aGlzLl9vcHRzLmFsbG93U2hyaW5rJiZsLmhlaWdodCE9cC5oZWlnaHQpfHwo IXRoaXMuX29wdHMuYWxsb3dTaHJpbmsmJmwuaGVpZ2h0PHAuaGVpZ2h0KSl7bD1w O3RoaXMuX3Jlc2l6ZUNvdW50Kys7dGhpcy5fcmVzaXplVGltZXN0YW1wPXE7dmFy IG89e3R5cGU6J3Jlc2l6ZScsaGVpZ2h0OnAuaGVpZ2h0LGFja0RhdGE6e2lkOnRo aXMuX3Jlc2l6ZUNvdW50fX07aWYocC53aWR0aCYmcC53aWR0aCE9MClvLndpZHRo PXAud2lkdGg7dHJ5e2lmKGIoZG9jdW1lbnQucmVmZXJyZXIpLmlzRmFjZWJvb2tV UkkoKSYmd2luZG93LnBhcmVudCE9d2luZG93JiZ3aW5kb3cubmFtZSYmd2luZG93 LnBhcmVudC5sb2NhdGlvbiYmd2luZG93LnBhcmVudC5sb2NhdGlvbi50b1N0cmlu ZyYmYih3aW5kb3cucGFyZW50LmxvY2F0aW9uKS5pc0ZhY2Vib29rVVJJKCkpe3Zh ciBpZnJhbWVzPXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh Z05hbWUoJ2lmcmFtZScpO2Zvcih2YXIgaT0wO2k8aWZyYW1lcy5sZW5ndGg7aT1p KzEpaWYoaWZyYW1lc1tpXS5uYW1lPT13aW5kb3cubmFtZSl7aWYodGhpcy5fb3B0 cy5yZXNpemVXaWR0aClpZnJhbWVzW2ldLnN0eWxlLndpZHRoPW8ud2lkdGgrJ3B4 JztpZnJhbWVzW2ldLnN0eWxlLmhlaWdodD1vLmhlaWdodCsncHgnO319dGhpcy5z ZW5kKG8pO31jYXRjaChuKXt0aGlzLnNlbmQobyk7fX19KS5iaW5kKHRoaXMpLHRo aXMuX29wdHMucmVzaXplVGltZW91dCk7fX07dmFyIGM9ZSh7fSxkKTtoLmV4cG9y dHMuVW52ZXJpZmllZFhEPWM7aC5leHBvcnRzLlhEPWQ7Zy5VbnZlcmlmaWVkWEQ9 YztnLlhEPWQ7fSk7Cl9fZSgiY29ubmVjdC14ZCIsWyJYRCJdLGZ1bmN0aW9uKGEs Yil7YS5VbnZlcmlmaWVkWEQ9YignWEQnKS5VbnZlcmlmaWVkWEQ7YS5YRD1iKCdY RCcpLlhEO30sMyk7CndpbmRvdy5fX1VJQ29udHJvbGxlclJlZ2lzdHJ5PXdpbmRv dy5fX1VJQ29udHJvbGxlclJlZ2lzdHJ5fHx7fTsKX19lKCJhbmltYXRpb24iLFsi Y3NzIl0sZnVuY3Rpb24oZCxmLGUsYyl7dmFyIGE9ZignY3NzJyk7ZnVuY3Rpb24g YihnKXtpZihnPT11bmRlZmluZWQpcmV0dXJuO2lmKGQ9PXRoaXMpe3JldHVybiBu ZXcgYihnKTt9ZWxzZXt0aGlzLm9iaj1nO3RoaXMuX3Jlc2V0X3N0YXRlKCk7dGhp cy5xdWV1ZT1bXTt0aGlzLmxhc3RfYXR0cj1udWxsO319Yi5yZXNvbHV0aW9uPTIw O2Iub2Zmc2V0PTA7Yi5wcm90b3R5cGUuX3Jlc2V0X3N0YXRlPWZ1bmN0aW9uKCl7 dGhpcy5zdGF0ZT17YXR0cnM6e30sZHVyYXRpb246NTAwfTt9O2IucHJvdG90eXBl LnN0b3A9ZnVuY3Rpb24oKXt0aGlzLl9yZXNldF9zdGF0ZSgpO3RoaXMucXVldWU9 W107cmV0dXJuIHRoaXM7fTtiLnByb3RvdHlwZS5fYnVpbGRfY29udGFpbmVyPWZ1 bmN0aW9uKCl7aWYodGhpcy5jb250YWluZXJfZGl2KXt0aGlzLl9yZWZyZXNoX2Nv bnRhaW5lcigpO3JldHVybjt9aWYodGhpcy5vYmouZmlyc3RDaGlsZCYmdGhpcy5v YmouZmlyc3RDaGlsZC5fX2FuaW1hdGlvbl9yZWZzKXt0aGlzLmNvbnRhaW5lcl9k aXY9dGhpcy5vYmouZmlyc3RDaGlsZDt0aGlzLmNvbnRhaW5lcl9kaXYuX19hbmlt YXRpb25fcmVmcysrO3RoaXMuX3JlZnJlc2hfY29udGFpbmVyKCk7cmV0dXJuO312 YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtoLnN0eWxlLnBhZGRp bmc9JzBweCc7aC5zdHlsZS5tYXJnaW49JzBweCc7aC5zdHlsZS5ib3JkZXI9JzBw eCc7aC5fX2FuaW1hdGlvbl9yZWZzPTE7dmFyIGc9dGhpcy5vYmouY2hpbGROb2Rl czt3aGlsZShnLmxlbmd0aCloLmFwcGVuZENoaWxkKGdbMF0pO3RoaXMub2JqLmFw cGVuZENoaWxkKGgpO3RoaXMuX29yaWdfb3ZlcmZsb3c9dGhpcy5vYmouc3R5bGUu b3ZlcmZsb3c7dGhpcy5vYmouc3R5bGUub3ZlcmZsb3c9J2hpZGRlbic7dGhpcy5j b250YWluZXJfZGl2PWg7dGhpcy5fcmVmcmVzaF9jb250YWluZXIoKTt9O2IucHJv dG90eXBlLl9yZWZyZXNoX2NvbnRhaW5lcj1mdW5jdGlvbigpe3RoaXMuY29udGFp bmVyX2Rpdi5zdHlsZS5oZWlnaHQ9J2F1dG8nO3RoaXMuY29udGFpbmVyX2Rpdi5z dHlsZS53aWR0aD0nYXV0byc7dGhpcy5jb250YWluZXJfZGl2LnN0eWxlLmhlaWdo dD10aGlzLmNvbnRhaW5lcl9kaXYub2Zmc2V0SGVpZ2h0KydweCc7dGhpcy5jb250 YWluZXJfZGl2LnN0eWxlLndpZHRoPXRoaXMuY29udGFpbmVyX2Rpdi5vZmZzZXRX aWR0aCsncHgnO307Yi5wcm90b3R5cGUuX2Rlc3Ryb3lfY29udGFpbmVyPWZ1bmN0 aW9uKCl7aWYoIXRoaXMuY29udGFpbmVyX2RpdilyZXR1cm47aWYoIS0tdGhpcy5j b250YWluZXJfZGl2Ll9fYW5pbWF0aW9uX3JlZnMpe3ZhciBnPXRoaXMuY29udGFp bmVyX2Rpdi5jaGlsZE5vZGVzO3doaWxlKGcubGVuZ3RoKXRoaXMub2JqLmFwcGVu ZENoaWxkKGdbMF0pO3RoaXMub2JqLnJlbW92ZUNoaWxkKHRoaXMuY29udGFpbmVy X2Rpdik7fXRoaXMuY29udGFpbmVyX2Rpdj1udWxsO3RoaXMub2JqLnN0eWxlLm92 ZXJmbG93PXRoaXMuX29yaWdfb3ZlcmZsb3c7fTtiLkFUVFJfVE89MTtiLkFUVFJf Qlk9MjtiLkFUVFJfRlJPTT0zO2IucHJvdG90eXBlLl9hdHRyPWZ1bmN0aW9uKGcs aixpKXtnPWcucmVwbGFjZSgvLVthLXpdL2dpLGZ1bmN0aW9uKGspe3JldHVybiBr LnN1YnN0cmluZygxKS50b1VwcGVyQ2FzZSgpO30pO3ZhciBoPWZhbHNlO3N3aXRj aChnKXtjYXNlICdiYWNrZ3JvdW5kJzp0aGlzLl9hdHRyKCdiYWNrZ3JvdW5kQ29s b3InLGosaSk7cmV0dXJuIHRoaXM7Y2FzZSAnbWFyZ2luJzpqPWIucGFyc2VfZ3Jv dXAoaik7dGhpcy5fYXR0cignbWFyZ2luQm90dG9tJyxqWzBdLGkpO3RoaXMuX2F0 dHIoJ21hcmdpbkxlZnQnLGpbMV0saSk7dGhpcy5fYXR0cignbWFyZ2luUmlnaHQn LGpbMl0saSk7dGhpcy5fYXR0cignbWFyZ2luVG9wJyxqWzNdLGkpO3JldHVybiB0 aGlzO2Nhc2UgJ3BhZGRpbmcnOmo9Yi5wYXJzZV9ncm91cChqKTt0aGlzLl9hdHRy KCdwYWRkaW5nQm90dG9tJyxqWzBdLGkpO3RoaXMuX2F0dHIoJ3BhZGRpbmdMZWZ0 JyxqWzFdLGkpO3RoaXMuX2F0dHIoJ3BhZGRpbmdSaWdodCcsalsyXSxpKTt0aGlz Ll9hdHRyKCdwYWRkaW5nVG9wJyxqWzNdLGkpO3JldHVybiB0aGlzO2Nhc2UgJ2Jh Y2tncm91bmRDb2xvcic6Y2FzZSAnYm9yZGVyQ29sb3InOmNhc2UgJ2NvbG9yJzpq PWIucGFyc2VfY29sb3Ioaik7YnJlYWs7Y2FzZSAnb3BhY2l0eSc6aj1wYXJzZUZs b2F0KGosMTApO2JyZWFrO2Nhc2UgJ2hlaWdodCc6Y2FzZSAnd2lkdGgnOmlmKGo9 PSdhdXRvJyl7aD10cnVlO31lbHNlIGo9cGFyc2VJbnQoaiwxMCk7YnJlYWs7Y2Fz ZSAnYm9yZGVyV2lkdGgnOmNhc2UgJ2xpbmVIZWlnaHQnOmNhc2UgJ2ZvbnRTaXpl JzpjYXNlICdtYXJnaW5Cb3R0b20nOmNhc2UgJ21hcmdpbkxlZnQnOmNhc2UgJ21h cmdpblJpZ2h0JzpjYXNlICdtYXJnaW5Ub3AnOmNhc2UgJ3BhZGRpbmdCb3R0b20n OmNhc2UgJ3BhZGRpbmdMZWZ0JzpjYXNlICdwYWRkaW5nUmlnaHQnOmNhc2UgJ3Bh ZGRpbmdUb3AnOmNhc2UgJ2JvdHRvbSc6Y2FzZSAnbGVmdCc6Y2FzZSAncmlnaHQn OmNhc2UgJ3RvcCc6Y2FzZSAnc2Nyb2xsVG9wJzpjYXNlICdzY3JvbGxMZWZ0Jzpq PXBhcnNlSW50KGosMTApO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGcr JyBpcyBub3QgYSBzdXBwb3J0ZWQgYXR0cmlidXRlIScpO31pZih0aGlzLnN0YXRl LmF0dHJzW2ddPT09dW5kZWZpbmVkKXRoaXMuc3RhdGUuYXR0cnNbZ109e307aWYo aCl0aGlzLnN0YXRlLmF0dHJzW2ddLmF1dG89dHJ1ZTtzd2l0Y2goaSl7Y2FzZSBi LkFUVFJfRlJPTTp0aGlzLnN0YXRlLmF0dHJzW2ddLnN0YXJ0PWo7YnJlYWs7Y2Fz ZSBiLkFUVFJfQlk6dGhpcy5zdGF0ZS5hdHRyc1tnXS5ieT10cnVlO2Nhc2UgYi5B VFRSX1RPOnRoaXMuc3RhdGUuYXR0cnNbZ10udmFsdWU9ajticmVhazt9fTtiLl9n ZXRfYm94X3dpZHRoPWZ1bmN0aW9uKGkpe3ZhciBqPXBhcnNlSW50KGEuZ2V0U3R5 bGUoaSwncGFkZGluZ0xlZnQnKSwxMCksaz1wYXJzZUludChhLmdldFN0eWxlKGks J3BhZGRpbmdSaWdodCcpLDEwKSxnPXBhcnNlSW50KGEuZ2V0U3R5bGUoaSwnYm9y ZGVyTGVmdFdpZHRoJyksMTApLGg9cGFyc2VJbnQoYS5nZXRTdHlsZShpLCdib3Jk ZXJSaWdodFdpZHRoJyksMTApO3JldHVybiBpLm9mZnNldFdpZHRoLShqP2o6MCkt KGs/azowKS0oZz9nOjApLShoP2g6MCk7fTtiLl9nZXRfYm94X2hlaWdodD1mdW5j dGlvbihpKXt2YXIgaz1wYXJzZUludChhLmdldFN0eWxlKGksJ3BhZGRpbmdUb3An KSwxMCksaj1wYXJzZUludChhLmdldFN0eWxlKGksJ3BhZGRpbmdCb3R0b20nKSwx MCksZz1wYXJzZUludChhLmdldFN0eWxlKGksJ2JvcmRlclRvcFdpZHRoJyksMTAp LGg9cGFyc2VJbnQoYS5nZXRTdHlsZShpLCdib3JkZXJCb3R0b21XaWR0aCcpLDEw KTtyZXR1cm4gaS5vZmZzZXRIZWlnaHQtKGs/azowKS0oaj9qOjApLShnP2c6MCkt KGg/aDowKTt9O2IucHJvdG90eXBlLnRvPWZ1bmN0aW9uKGcsaCl7aWYoaD09PXVu ZGVmaW5lZCl7dGhpcy5fYXR0cih0aGlzLmxhc3RfYXR0cixnLGIuQVRUUl9UTyk7 fWVsc2V7dGhpcy5fYXR0cihnLGgsYi5BVFRSX1RPKTt0aGlzLmxhc3RfYXR0cj1n O31yZXR1cm4gdGhpczt9O2IucHJvdG90eXBlLmJ5PWZ1bmN0aW9uKGcsaCl7aWYo aD09PXVuZGVmaW5lZCl7dGhpcy5fYXR0cih0aGlzLmxhc3RfYXR0cixnLGIuQVRU Ul9CWSk7fWVsc2V7dGhpcy5fYXR0cihnLGgsYi5BVFRSX0JZKTt0aGlzLmxhc3Rf YXR0cj1nO31yZXR1cm4gdGhpczt9O2IucHJvdG90eXBlLmZyb209ZnVuY3Rpb24o ZyxoKXtpZihoPT09dW5kZWZpbmVkKXt0aGlzLl9hdHRyKHRoaXMubGFzdF9hdHRy LGcsYi5BVFRSX0ZST00pO31lbHNle3RoaXMuX2F0dHIoZyxoLGIuQVRUUl9GUk9N KTt0aGlzLmxhc3RfYXR0cj1nO31yZXR1cm4gdGhpczt9O2IucHJvdG90eXBlLmR1 cmF0aW9uPWZ1bmN0aW9uKGcpe3RoaXMuc3RhdGUuZHVyYXRpb249Zz9nOjA7cmV0 dXJuIHRoaXM7fTtiLnByb3RvdHlwZS5jaGVja3BvaW50PWZ1bmN0aW9uKGgsZyl7 aWYoaD09PXVuZGVmaW5lZCloPTE7dGhpcy5zdGF0ZS5jaGVja3BvaW50PWg7dGhp cy5xdWV1ZS5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuX3Jlc2V0X3N0YXRlKCk7dGhp cy5zdGF0ZS5jaGVja3BvaW50Y2I9ZztyZXR1cm4gdGhpczt9O2IucHJvdG90eXBl LmJsaW5kPWZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5ibGluZD10cnVlO3JldHVybiB0 aGlzO307Yi5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe3RoaXMuc3RhdGUuaGlk ZT10cnVlO3JldHVybiB0aGlzO307Yi5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigp e3RoaXMuc3RhdGUuc2hvdz10cnVlO3JldHVybiB0aGlzO307Yi5wcm90b3R5cGUu ZWFzZT1mdW5jdGlvbihnKXt0aGlzLnN0YXRlLmVhc2U9ZztyZXR1cm4gdGhpczt9 O2IucHJvdG90eXBlLmdvPWZ1bmN0aW9uKCl7dmFyIGg9KG5ldyBEYXRlKCkpLmdl dFRpbWUoKTt0aGlzLnF1ZXVlLnB1c2godGhpcy5zdGF0ZSk7Zm9yKHZhciBnPTA7 Zzx0aGlzLnF1ZXVlLmxlbmd0aDtnKyspe3RoaXMucXVldWVbZ10uc3RhcnQ9aC1i Lm9mZnNldDtpZih0aGlzLnF1ZXVlW2ddLmNoZWNrcG9pbnQpaCs9dGhpcy5xdWV1 ZVtnXS5jaGVja3BvaW50KnRoaXMucXVldWVbZ10uZHVyYXRpb247fWIucHVzaCh0 aGlzKTtyZXR1cm4gdGhpczt9O2IucHJvdG90eXBlLl9zaG93PWZ1bmN0aW9uKCl7 YS5zaG93KHRoaXMub2JqKTt9O2IucHJvdG90eXBlLl9oaWRlPWZ1bmN0aW9uKCl7 YS5oaWRlKHRoaXMub2JqKTt9O2IucHJvdG90eXBlLl9mcmFtZT1mdW5jdGlvbihz KXt2YXIgaT10cnVlO3ZhciByPWZhbHNlO3ZhciB1PWZhbHNlO3ZhciB0O2Z1bmN0 aW9uIGoodil7cmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFt2XXx8ZG9j dW1lbnQuYm9keVt2XTt9Zm9yKHZhciBrPTA7azx0aGlzLnF1ZXVlLmxlbmd0aDtr Kyspe3ZhciBoPXRoaXMucXVldWVba107aWYoaC5zdGFydD5zKXtpPWZhbHNlO2Nv bnRpbnVlO31pZihoLmNoZWNrcG9pbnRjYil7dGhpcy5fY2FsbGJhY2soaC5jaGVj a3BvaW50Y2Iscy1oLnN0YXJ0KTtoLmNoZWNrcG9pbnRjYj1udWxsO31pZihoLnN0 YXJ0ZWQ9PT11bmRlZmluZWQpe2lmKGguc2hvdyl0aGlzLl9zaG93KCk7Zm9yKHZh ciBnIGluIGguYXR0cnMpe2lmKGguYXR0cnNbZ10uc3RhcnQhPT11bmRlZmluZWQp Y29udGludWU7c3dpdGNoKGcpe2Nhc2UgJ2JhY2tncm91bmRDb2xvcic6Y2FzZSAn Ym9yZGVyQ29sb3InOmNhc2UgJ2NvbG9yJzp0PWIucGFyc2VfY29sb3IoYS5nZXRT dHlsZSh0aGlzLm9iaixnPT0nYm9yZGVyQ29sb3InPydib3JkZXJMZWZ0Q29sb3In OmcpKTtpZihoLmF0dHJzW2ddLmJ5KXtoLmF0dHJzW2ddLnZhbHVlWzBdPU1hdGgu bWluKDI1NSxNYXRoLm1heCgwLGguYXR0cnNbZ10udmFsdWVbMF0rdFswXSkpO2gu YXR0cnNbZ10udmFsdWVbMV09TWF0aC5taW4oMjU1LE1hdGgubWF4KDAsaC5hdHRy c1tnXS52YWx1ZVsxXSt0WzFdKSk7aC5hdHRyc1tnXS52YWx1ZVsyXT1NYXRoLm1p bigyNTUsTWF0aC5tYXgoMCxoLmF0dHJzW2ddLnZhbHVlWzJdK3RbMl0pKTt9YnJl YWs7Y2FzZSAnb3BhY2l0eSc6dD1hLmdldE9wYWNpdHkodGhpcy5vYmopO2lmKGgu YXR0cnNbZ10uYnkpaC5hdHRyc1tnXS52YWx1ZT1NYXRoLm1pbigxLE1hdGgubWF4 KDAsaC5hdHRyc1tnXS52YWx1ZSt0KSk7YnJlYWs7Y2FzZSAnaGVpZ2h0Jzp0PWIu X2dldF9ib3hfaGVpZ2h0KHRoaXMub2JqKTtpZihoLmF0dHJzW2ddLmJ5KWguYXR0 cnNbZ10udmFsdWUrPXQ7YnJlYWs7Y2FzZSAnd2lkdGgnOnQ9Yi5fZ2V0X2JveF93 aWR0aCh0aGlzLm9iaik7aWYoaC5hdHRyc1tnXS5ieSloLmF0dHJzW2ddLnZhbHVl Kz10O2JyZWFrO2Nhc2UgJ3Njcm9sbExlZnQnOmNhc2UgJ3Njcm9sbFRvcCc6dD0o dGhpcy5vYmo9PT1kb2N1bWVudC5ib2R5KT9qKGcpOnRoaXMub2JqW2ddO2lmKGgu YXR0cnNbZ10uYnkpaC5hdHRyc1tnXS52YWx1ZSs9dDtoWydsYXN0JytnXT10O2Jy ZWFrO2RlZmF1bHQ6dD1wYXJzZUludChhLmdldFN0eWxlKHRoaXMub2JqLGcpLDEw KXx8MDtpZihoLmF0dHJzW2ddLmJ5KWguYXR0cnNbZ10udmFsdWUrPXQ7YnJlYWs7 fWguYXR0cnNbZ10uc3RhcnQ9dDt9aWYoKGguYXR0cnMuaGVpZ2h0JiZoLmF0dHJz LmhlaWdodC5hdXRvKXx8KGguYXR0cnMud2lkdGgmJmguYXR0cnMud2lkdGguYXV0 bykpe2lmKHVhLmZpcmVmb3goKTwzKXU9dHJ1ZTt0aGlzLl9kZXN0cm95X2NvbnRh aW5lcigpO2Zvcih2YXIgZyBpbiB7aGVpZ2h0OjEsd2lkdGg6MSxmb250U2l6ZTox LGJvcmRlckxlZnRXaWR0aDoxLGJvcmRlclJpZ2h0V2lkdGg6MSxib3JkZXJUb3BX aWR0aDoxLGJvcmRlckJvdHRvbVdpZHRoOjEscGFkZGluZ0xlZnQ6MSxwYWRkaW5n UmlnaHQ6MSxwYWRkaW5nVG9wOjEscGFkZGluZ0JvdHRvbToxfSlpZihoLmF0dHJz W2ddKXRoaXMub2JqLnN0eWxlW2ddPWguYXR0cnNbZ10udmFsdWUrKHR5cGVvZiBo LmF0dHJzW2ddLnZhbHVlPT0nbnVtYmVyJz8ncHgnOicnKTtpZihoLmF0dHJzLmhl aWdodCYmaC5hdHRycy5oZWlnaHQuYXV0byloLmF0dHJzLmhlaWdodC52YWx1ZT1i Ll9nZXRfYm94X2hlaWdodCh0aGlzLm9iaik7aWYoaC5hdHRycy53aWR0aCYmaC5h dHRycy53aWR0aC5hdXRvKWguYXR0cnMud2lkdGgudmFsdWU9Yi5fZ2V0X2JveF93 aWR0aCh0aGlzLm9iaik7fWguc3RhcnRlZD10cnVlO2lmKGguYmxpbmQpdGhpcy5f YnVpbGRfY29udGFpbmVyKCk7fXZhciBvPShzLWguc3RhcnQpL2guZHVyYXRpb247 aWYobz49MSl7bz0xO2lmKGguaGlkZSl0aGlzLl9oaWRlKCk7fWVsc2UgaT1mYWxz ZTt2YXIgcT1oLmVhc2U/aC5lYXNlKG8pOm87aWYoIXImJm8hPTEmJmguYmxpbmQp cj10cnVlO2lmKHUmJnRoaXMub2JqLnBhcmVudE5vZGUpe3ZhciBwPXRoaXMub2Jq LnBhcmVudE5vZGU7dmFyIG49dGhpcy5vYmoubmV4dFNpYmxpbmc7cC5yZW1vdmVD aGlsZCh0aGlzLm9iaik7fWZvcih2YXIgZyBpbiBoLmF0dHJzKXN3aXRjaChnKXtj YXNlICdiYWNrZ3JvdW5kQ29sb3InOmNhc2UgJ2JvcmRlckNvbG9yJzpjYXNlICdj b2xvcic6dGhpcy5vYmouc3R5bGVbZ109J3JnYignK2IuY2FsY190d2VlbihxLGgu YXR0cnNbZ10uc3RhcnRbMF0saC5hdHRyc1tnXS52YWx1ZVswXSx0cnVlKSsnLCcr Yi5jYWxjX3R3ZWVuKHEsaC5hdHRyc1tnXS5zdGFydFsxXSxoLmF0dHJzW2ddLnZh bHVlWzFdLHRydWUpKycsJytiLmNhbGNfdHdlZW4ocSxoLmF0dHJzW2ddLnN0YXJ0 WzJdLGguYXR0cnNbZ10udmFsdWVbMl0sdHJ1ZSkrJyknO2JyZWFrO2Nhc2UgJ29w YWNpdHknOmEuc2V0U3R5bGUodGhpcy5vYmosJ29wYWNpdHknLGIuY2FsY190d2Vl bihxLGguYXR0cnNbZ10uc3RhcnQsaC5hdHRyc1tnXS52YWx1ZSkpO2JyZWFrO2Nh c2UgJ2hlaWdodCc6Y2FzZSAnd2lkdGgnOnRoaXMub2JqLnN0eWxlW2ddPXE9PTEm JmguYXR0cnNbZ10uYXV0bz8nYXV0byc6Yi5jYWxjX3R3ZWVuKHEsaC5hdHRyc1tn XS5zdGFydCxoLmF0dHJzW2ddLnZhbHVlLHRydWUpKydweCc7YnJlYWs7Y2FzZSAn c2Nyb2xsTGVmdCc6Y2FzZSAnc2Nyb2xsVG9wJzp2YXIgbD10aGlzLm9iaj09PWRv Y3VtZW50LmJvZHk7dD1sP2ooZyk6dGhpcy5vYmpbZ107aWYoaFsnbGFzdCcrZ10h PT10KXtkZWxldGUgaC5hdHRyc1tnXTt9ZWxzZXt2YXIgbT1iLmNhbGNfdHdlZW4o cSxoLmF0dHJzW2ddLnN0YXJ0LGguYXR0cnNbZ10udmFsdWUsdHJ1ZSk7aWYoIWwp e209dGhpcy5vYmpbZ109bTt9ZWxzZXtpZihnPT0nc2Nyb2xsTGVmdCcpe2Quc2Ny b2xsVG8obSxqKCdzY3JvbGxUb3AnKSk7fWVsc2UgZC5zY3JvbGxUbyhqKCdzY3Jv bGxMZWZ0JyksbSk7bT1qKGcpO31oWydsYXN0JytnXT1tO31icmVhaztkZWZhdWx0 OnRoaXMub2JqLnN0eWxlW2ddPWIuY2FsY190d2VlbihxLGguYXR0cnNbZ10uc3Rh cnQsaC5hdHRyc1tnXS52YWx1ZSx0cnVlKSsncHgnO2JyZWFrO31pZihvPT0xKXt0 aGlzLnF1ZXVlLnNwbGljZShrLS0sMSk7dGhpcy5fY2FsbGJhY2soaC5vbmRvbmUs cy1oLnN0YXJ0LWguZHVyYXRpb24pO319aWYodSlwW24/J2luc2VydEJlZm9yZSc6 J2FwcGVuZENoaWxkJ10odGhpcy5vYmosbik7aWYoIXImJnRoaXMuY29udGFpbmVy X2Rpdil0aGlzLl9kZXN0cm95X2NvbnRhaW5lcigpO3JldHVybiAhaTt9O2IucHJv dG90eXBlLm9uZG9uZT1mdW5jdGlvbihnKXt0aGlzLnN0YXRlLm9uZG9uZT1nO3Jl dHVybiB0aGlzO307Yi5wcm90b3R5cGUuX2NhbGxiYWNrPWZ1bmN0aW9uKGcsaCl7 aWYoZyl7Yi5vZmZzZXQ9aDtnLmNhbGwodGhpcyk7Yi5vZmZzZXQ9MDt9fTtiLmNh bGNfdHdlZW49ZnVuY3Rpb24oZyxoLGksail7cmV0dXJuIChqP3BhcnNlSW50OnBh cnNlRmxvYXQpKChpLWgpKmcraCwxMCk7fTtiLnBhcnNlX2NvbG9yPWZ1bmN0aW9u KGcpe3ZhciBoPS9eIyhbYS1mMC05XXsxLDJ9KShbYS1mMC05XXsxLDJ9KShbYS1m MC05XXsxLDJ9KSQvaS5leGVjKGcpO2lmKGgpe3JldHVybiBbcGFyc2VJbnQoaFsx XS5sZW5ndGg9PTE/aFsxXStoWzFdOmhbMV0sMTYpLHBhcnNlSW50KGhbMl0ubGVu Z3RoPT0xP2hbMl0raFsyXTpoWzJdLDE2KSxwYXJzZUludChoWzNdLmxlbmd0aD09 MT9oWzNdK2hbM106aFszXSwxNildO31lbHNle3ZhciBpPS9ecmdiYT8gKlwoKFsw LTldKyksICooWzAtOV0rKSwgKihbMC05XSspKD86LCAqKFswLTldKykpP1wpJC8u ZXhlYyhnKTtpZihpKXtpZihpWzRdPT09JzAnKXtyZXR1cm4gWzI1NSwyNTUsMjU1 XTt9ZWxzZSByZXR1cm4gW3BhcnNlSW50KGlbMV0sMTApLHBhcnNlSW50KGlbMl0s MTApLHBhcnNlSW50KGlbM10sMTApXTt9ZWxzZSBpZihnPT0ndHJhbnNwYXJlbnQn KXtyZXR1cm4gWzI1NSwyNTUsMjU1XTt9ZWxzZSB0aHJvdyAnTmFtZWQgY29sb3Ig YXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZC4nO319O2IucGFyc2VfZ3JvdXA9 ZnVuY3Rpb24oZyl7Zz10cmltKGcpLnNwbGl0KC8gKy8pO2lmKGcubGVuZ3RoPT00 KXtyZXR1cm4gZzt9ZWxzZSBpZihnLmxlbmd0aD09Myl7cmV0dXJuIFtnWzBdLGdb MV0sZ1syXSxnWzFdXTt9ZWxzZSBpZihnLmxlbmd0aD09Mil7cmV0dXJuIFtnWzBd LGdbMV0sZ1swXSxnWzFdXTt9ZWxzZSByZXR1cm4gW2dbMF0sZ1swXSxnWzBdLGdb MF1dO307Yi5wdXNoPWZ1bmN0aW9uKGcpe2lmKCFiLmFjdGl2ZSliLmFjdGl2ZT1b XTtiLmFjdGl2ZS5wdXNoKGcpO2lmKGIuYWN0aXZlLmxlbmd0aD09PTEpe2lmKCFi LnJlcXVlc3RBbmltYXRpb25GcmFtZSl7dmFyIGg9ZC5yZXF1ZXN0QW5pbWF0aW9u RnJhbWV8fGQud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxkLm1velJlcXVl c3RBbmltYXRpb25GcmFtZTtpZihoKWIucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWgu YmluZChkKTt9aWYoYi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpe2IucmVxdWVzdEFu aW1hdGlvbkZyYW1lKGIuX2FuaW1hdGUpO31lbHNlIGIudGltZW91dD1zZXRJbnRl cnZhbChiLl9hbmltYXRlLGIucmVzb2x1dGlvbixmYWxzZSk7fWlmKGIucmVxdWVz dEFuaW1hdGlvbkZyYW1lKWIuX3VwZGF0ZUVuZGluZ1RpbWVyKCk7Yi5fYW5pbWF0 ZShEYXRlLm5vdygpLHRydWUpO307Yi5fdXBkYXRlRW5kaW5nVGltZXI9ZnVuY3Rp b24oKXtpZighYi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpdGhyb3cgbmV3IEVycm9y KCdFbmRpbmcgdGltZXIgb25seSB2YWxpZCB3aXRoIHJlcXVlc3RBbmltYXRpb25G cmFtZScpO3ZhciBqPTA7Zm9yKHZhciBnPTA7ZzxiLmFjdGl2ZS5sZW5ndGg7Zysr KXt2YXIgbD1iLmFjdGl2ZVtnXTtmb3IodmFyIGs9MDtrPGwucXVldWUubGVuZ3Ro O2srKyl7dmFyIGg9bC5xdWV1ZVtrXS5zdGFydCtsLnF1ZXVlW2tdLmR1cmF0aW9u O2lmKGg+ailqPWg7fX1pZihiLnRpbWVvdXQpe2NsZWFyVGltZW91dChiLnRpbWVv dXQpO2RlbGV0ZSBiLnRpbWVvdXQ7fXZhciBpPURhdGUubm93KCk7aWYoaj5pKWIu dGltZW91dD1zZXRUaW1lb3V0KGIuX2FuaW1hdGUuc2hpZWxkKCksai1pLGZhbHNl KTt9O2IuX2FuaW1hdGU9ZnVuY3Rpb24oaixpKXtqPWp8fERhdGUubm93KCk7Zm9y KHZhciBoPShpPT09dHJ1ZSk/Yi5hY3RpdmUubGVuZ3RoLTE6MDtoPGIuYWN0aXZl Lmxlbmd0aDtoKyspdHJ5e2lmKCFiLmFjdGl2ZVtoXS5fZnJhbWUoaikpYi5hY3Rp dmUuc3BsaWNlKGgtLSwxKTt9Y2F0Y2goZyl7Yi5hY3RpdmUuc3BsaWNlKGgtLSwx KTt9aWYoYi5hY3RpdmUubGVuZ3RoPT09MCl7aWYoYi50aW1lb3V0KXtpZihiLnJl cXVlc3RBbmltYXRpb25GcmFtZSl7Y2xlYXJUaW1lb3V0KGIudGltZW91dCk7fWVs c2UgY2xlYXJJbnRlcnZhbChiLnRpbWVvdXQpO2RlbGV0ZSBiLnRpbWVvdXQ7fX1l bHNlIGlmKGIucmVxdWVzdEFuaW1hdGlvbkZyYW1lKWIucmVxdWVzdEFuaW1hdGlv bkZyYW1lKGIuX2FuaW1hdGUpO307Yi5lYXNlPXt9O2IuZWFzZS5iZWdpbj1mdW5j dGlvbihnKXtyZXR1cm4gTWF0aC5zaW4oTWF0aC5QSS8yKihnLTEpKSsxO307Yi5l YXNlLmVuZD1mdW5jdGlvbihnKXtyZXR1cm4gTWF0aC5zaW4oLjUqTWF0aC5QSSpn KTt9O2IuZWFzZS5ib3RoPWZ1bmN0aW9uKGcpe3JldHVybiAuNSpNYXRoLnNpbihN YXRoLlBJKihnLS41KSkrLjU7fTtiLnByZXBlbmRJbnNlcnQ9ZnVuY3Rpb24oaCxn KXtiLmluc2VydChoLGcsRE9NLnByZXBlbmRDb250ZW50KTt9O2IuYXBwZW5kSW5z ZXJ0PWZ1bmN0aW9uKGgsZyl7Yi5pbnNlcnQoaCxnLERPTS5hcHBlbmRDb250ZW50 KTt9O2IuaW5zZXJ0PWZ1bmN0aW9uKGksZyxoKXthLnNldFN0eWxlKGcsJ29wYWNp dHknLDApO2goaSxnKTtiKGcpLmZyb20oJ29wYWNpdHknLDApLnRvKCdvcGFjaXR5 JywxKS5kdXJhdGlvbig0MDApLmdvKCk7fTtkLmFuaW1hdGlvbj1lLmV4cG9ydHM9 Yjt9LDMpOwpfX2UoImNzcy1zdXBwb3J0IixbImNzcy1jb3JlIiwiY29weVByb3Bl cnRpZXMiXSxmdW5jdGlvbihkLGYsZSxjKXt2YXIgYT1mKCdjc3MtY29yZScpO3Zh ciBiPWYoJ2NvcHlQcm9wZXJ0aWVzJyk7YihhLHtzdXBwb3J0c0JvcmRlclJhZGl1 czpmdW5jdGlvbigpe3ZhciBpPVsnS2h0bWxCb3JkZXJSYWRpdXMnLCdPQm9yZGVy UmFkaXVzJywnTW96Qm9yZGVyUmFkaXVzJywnV2Via2l0Qm9yZGVyUmFkaXVzJywn bXNCb3JkZXJSYWRpdXMnLCdib3JkZXJSYWRpdXMnXTt2YXIgaj1mYWxzZSxnPWRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO2Zvcih2YXIgaD1pLmxlbmd0aDto Pj0wO2gtLSlpZihqPWcuc3R5bGVbaVtoXV0hPT11bmRlZmluZWQpYnJlYWs7YS5z dXBwb3J0c0JvcmRlclJhZGl1cz1iYWdvZihqKTtyZXR1cm4gajt9fSk7ZS5leHBv cnRzPWE7fSwzKTsKX19lKCJMb2NhbGUiLFsiY3NzIl0sZnVuY3Rpb24oZCxmLGUs Yyl7dmFyIGE9ZigiY3NzIik7dmFyIGI9e2lzUlRMOmZ1bmN0aW9uKCl7cmV0dXJu ICdydGwnPT09YS5nZXRTdHlsZShkb2N1bWVudC5ib2R5LCdkaXJlY3Rpb24nKTt9 fTtlLmV4cG9ydHM9Yjt9KTsKX19lKCJ2ZWN0b3IiLFsiZXZlbnQtZXh0ZW5zaW9u cyIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oZyxpLGgsZil7dmFyIGE9aSgn ZXZlbnQtZXh0ZW5zaW9ucycpLiRFO3ZhciBjPWkoJ2NvcHlQcm9wZXJ0aWVzJyk7 ZnVuY3Rpb24gYihrLGwsail7Yyh0aGlzLHt4OnBhcnNlRmxvYXQoaykseTpwYXJz ZUZsb2F0KGwpLGRvbWFpbjpqfHwncHVyZSd9KTt9YyhiLnByb3RvdHlwZSx7dG9T dHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gJygnK3RoaXMueCsnLCAnK3RoaXMueSsn KSc7fSxhZGQ6ZnVuY3Rpb24obCxtKXtpZihhcmd1bWVudHMubGVuZ3RoPT0xKXtp ZihsLmRvbWFpbiE9J3B1cmUnKWw9bC5jb252ZXJ0VG8odGhpcy5kb21haW4pO3Jl dHVybiB0aGlzLmFkZChsLngsbC55KTt9dmFyIGo9cGFyc2VGbG9hdChsKTt2YXIg az1wYXJzZUZsb2F0KG0pO3JldHVybiBuZXcgYih0aGlzLngraix0aGlzLnkrayx0 aGlzLmRvbWFpbik7fSxtdWw6ZnVuY3Rpb24oaixrKXtpZih0eXBlb2Yoayk9PSJ1 bmRlZmluZWQiKWs9ajtyZXR1cm4gbmV3IGIodGhpcy54KmosdGhpcy55KmssdGhp cy5kb21haW4pO30sc3ViOmZ1bmN0aW9uKGosayl7aWYoYXJndW1lbnRzLmxlbmd0 aD09MSl7cmV0dXJuIHRoaXMuYWRkKGoubXVsKC0xKSk7fWVsc2UgcmV0dXJuIHRo aXMuYWRkKC1qLC1rKTt9LGRpc3RhbmNlVG86ZnVuY3Rpb24oail7cmV0dXJuIHRo aXMuc3ViKGopLm1hZ25pdHVkZSgpO30sbWFnbml0dWRlOmZ1bmN0aW9uKCl7cmV0 dXJuIE1hdGguc3FydCgodGhpcy54KnRoaXMueCkrKHRoaXMueSp0aGlzLnkpKTt9 LGNvbnZlcnRUbzpmdW5jdGlvbihqKXtpZihqIT0ncHVyZScmJmohPSd2aWV3cG9y dCcmJmohPSdkb2N1bWVudCcpcmV0dXJuIG5ldyBiKDAsMCk7aWYoaj09dGhpcy5k b21haW4pcmV0dXJuIG5ldyBiKHRoaXMueCx0aGlzLnksdGhpcy5kb21haW4pO2lm KGo9PSdwdXJlJylyZXR1cm4gbmV3IGIodGhpcy54LHRoaXMueSk7aWYodGhpcy5k b21haW49PSdwdXJlJylyZXR1cm4gbmV3IGIoMCwwKTt2YXIgaz1iLmdldFNjcm9s bFBvc2l0aW9uKCdkb2N1bWVudCcpO3ZhciBsPXRoaXMueCxtPXRoaXMueTtpZih0 aGlzLmRvbWFpbj09J2RvY3VtZW50Jyl7bC09ay54O20tPWsueTt9ZWxzZXtsKz1r Lng7bSs9ay55O31yZXR1cm4gbmV3IGIobCxtLGopO30sc2V0RWxlbWVudFBvc2l0 aW9uOmZ1bmN0aW9uKGope3ZhciBrPXRoaXMuY29udmVydFRvKCdkb2N1bWVudCcp O2ouc3R5bGUubGVmdD1wYXJzZUludChrLngpKydweCc7ai5zdHlsZS50b3A9cGFy c2VJbnQoay55KSsncHgnO3JldHVybiB0aGlzO30sc2V0RWxlbWVudERpbWVuc2lv bnM6ZnVuY3Rpb24oail7cmV0dXJuIHRoaXMuc2V0RWxlbWVudFdpZHRoKGopLnNl dEVsZW1lbnRIZWlnaHQoaik7fSxzZXRFbGVtZW50V2lkdGg6ZnVuY3Rpb24oail7 ai5zdHlsZS53aWR0aD1wYXJzZUludCh0aGlzLngsMTApKydweCc7cmV0dXJuIHRo aXM7fSxzZXRFbGVtZW50SGVpZ2h0OmZ1bmN0aW9uKGope2ouc3R5bGUuaGVpZ2h0 PXBhcnNlSW50KHRoaXMueSwxMCkrJ3B4JztyZXR1cm4gdGhpczt9LHNjcm9sbEVs ZW1lbnRCeTpmdW5jdGlvbihqKXtpZihqPT1kb2N1bWVudC5ib2R5KXt3aW5kb3cu c2Nyb2xsQnkodGhpcy54LHRoaXMueSk7fWVsc2V7ai5zY3JvbGxMZWZ0Kz10aGlz Lng7ai5zY3JvbGxUb3ArPXRoaXMueTt9cmV0dXJuIHRoaXM7fX0pO2MoYix7Z2V0 RXZlbnRQb3NpdGlvbjpmdW5jdGlvbihrLGope2o9anx8J2RvY3VtZW50JztrPWEo ayk7dmFyIG09ay5wYWdlWHx8KGsuY2xpZW50WCsoZG9jdW1lbnQuZG9jdW1lbnRF bGVtZW50LnNjcm9sbExlZnR8fGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCkpO3Zh ciBuPWsucGFnZVl8fChrLmNsaWVudFkrKGRvY3VtZW50LmRvY3VtZW50RWxlbWVu dC5zY3JvbGxUb3B8fGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSk7dmFyIGw9bmV3 IGIobSxuLCdkb2N1bWVudCcpO3JldHVybiBsLmNvbnZlcnRUbyhqKTt9LGdldFNj cm9sbFBvc2l0aW9uOmZ1bmN0aW9uKGope2o9anx8J2RvY3VtZW50Jzt2YXIgaz1k b2N1bWVudC5ib2R5LnNjcm9sbExlZnR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVu dC5zY3JvbGxMZWZ0O3ZhciBsPWRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wfHxkb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO3JldHVybiBuZXcgYihrLGws J2RvY3VtZW50JykuY29udmVydFRvKGopO30sZ2V0RWxlbWVudFBvc2l0aW9uOmZ1 bmN0aW9uKGwsayl7az1rfHwnZG9jdW1lbnQnO2lmKCFsKXJldHVybjtpZighKCdn ZXRCb3VuZGluZ0NsaWVudFJlY3QnIGluIGwpKXJldHVybiBuZXcgYigwLDAsJ2Rv Y3VtZW50Jyk7dmFyIG49bC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxqPWRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudCxtPU1hdGgucm91bmQobi5sZWZ0KS1qLmNsaWVu dExlZnQsbz1NYXRoLnJvdW5kKG4udG9wKS1qLmNsaWVudFRvcDtyZXR1cm4gbmV3 IGIobSxvLCd2aWV3cG9ydCcpLmNvbnZlcnRUbyhrKTt9LGdldEVsZW1lbnREaW1l bnNpb25zOmZ1bmN0aW9uKGope3JldHVybiBuZXcgYihqLm9mZnNldFdpZHRofHww LGoub2Zmc2V0SGVpZ2h0fHwwKTt9LGdldFZpZXdwb3J0RGltZW5zaW9uczpmdW5j dGlvbigpe3ZhciBqPSh3aW5kb3cmJndpbmRvdy5pbm5lcldpZHRoKXx8KGRvY3Vt ZW50JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50 RWxlbWVudC5jbGllbnRXaWR0aCl8fChkb2N1bWVudCYmZG9jdW1lbnQuYm9keSYm ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCl8fDA7dmFyIGs9KHdpbmRvdyYmd2lu ZG93LmlubmVySGVpZ2h0KXx8KGRvY3VtZW50JiZkb2N1bWVudC5kb2N1bWVudEVs ZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpfHwo ZG9jdW1lbnQmJmRvY3VtZW50LmJvZHkmJmRvY3VtZW50LmJvZHkuY2xpZW50SGVp Z2h0KXx8MDtyZXR1cm4gbmV3IGIoaixrLCd2aWV3cG9ydCcpO30sZ2V0RG9jdW1l bnREaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIGo9KGRvY3VtZW50JiZkb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3Jv bGxXaWR0aCl8fChkb2N1bWVudCYmZG9jdW1lbnQuYm9keSYmZG9jdW1lbnQuYm9k eS5zY3JvbGxXaWR0aCl8fDA7dmFyIGs9KGRvY3VtZW50JiZkb2N1bWVudC5kb2N1 bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWln aHQpfHwoZG9jdW1lbnQmJmRvY3VtZW50LmJvZHkmJmRvY3VtZW50LmJvZHkuc2Ny b2xsSGVpZ2h0KXx8MDtyZXR1cm4gbmV3IGIoaixrLCdkb2N1bWVudCcpO30sZGVz ZXJpYWxpemU6ZnVuY3Rpb24oayl7dmFyIGo9ay5zcGxpdCgnLCcpO3JldHVybiBu ZXcgYihqWzBdLGpbMV0pO319KTtmdW5jdGlvbiBkKGope3JldHVybiBiLmdldEVs ZW1lbnRQb3NpdGlvbihqLCdkb2N1bWVudCcpLng7fWZ1bmN0aW9uIGUoail7cmV0 dXJuIGIuZ2V0RWxlbWVudFBvc2l0aW9uKGosJ2RvY3VtZW50JykueTt9Zy5lbGVt ZW50WT1lO2cuZWxlbWVudFg9ZDtnLlZlY3RvcjI9aC5leHBvcnRzPWI7fSwzKTsK X19lKCJnZXRPdmVybGF5WkluZGV4IixbImNzcyJdLGZ1bmN0aW9uKGQsZixlLGIp e3ZhciBhPWYoImNzcyIpO2Z1bmN0aW9uIGMoaSxrKXtrPWt8fGRvY3VtZW50LmJv ZHk7dmFyIGg9W107d2hpbGUoaSYmaSE9PWspe2gucHVzaChpKTtpPWkucGFyZW50 Tm9kZTt9aWYoaSE9PWspcmV0dXJuIDA7Zm9yKHZhciBqPWgubGVuZ3RoLTE7aj49 MDtqLS0pe3ZhciBnPWhbal07aWYoYS5nZXRTdHlsZShnLCdwb3NpdGlvbicpIT0n c3RhdGljJyl7dmFyIGw9cGFyc2VJbnQoYS5nZXRTdHlsZShnLCd6LWluZGV4Jyks MTApO2lmKCFpc05hTihsKSlyZXR1cm4gbDt9fXJldHVybiAwO31lLmV4cG9ydHM9 Yzt9KTsKX19lKCJrZXktZXZlbnQtY29uc3RhbnRzIixbXSxmdW5jdGlvbihjLGUs ZCxiKXt2YXIgYT17QkFDS1NQQUNFOjgsVEFCOjksUkVUVVJOOjEzLEVTQzoyNyxT UEFDRTozMixQQUdFX1VQOjMzLFBBR0VfRE9XTjozNCxMRUZUOjM3LFVQOjM4LFJJ R0hUOjM5LERPV046NDAsREVMRVRFOjQ2LENPTU1BOjE4OH07Yy5LRVlTPWQuZXhw b3J0cz1hO30sMyk7Cl9fZSgiRGlhbG9nIixbImFycmF5LWV4dGVuc2lvbnMiLCJl dmVudC1leHRlbnNpb25zIiwiYW5pbWF0aW9uIiwiYXJiaXRlciIsIkFycmF5VXRp bHMiLCJBc3luY1JlcXVlc3QiLCJCdXR0b24iLCJjc3Mtc3VwcG9ydCIsImRvbSIs IkZvcm0iLCJMb2NhbGUiLCJPYmplY3RVdGlscyIsIm9ubG9hZCIsInVhIiwidXJp IiwidmVjdG9yIiwiY29weVByb3BlcnRpZXMiLCJnZXRPdmVybGF5WkluZGV4Iiwi dHgiLCJrZXktZXZlbnQtY29uc3RhbnRzIl0sZnVuY3Rpb24oZ2xvYmFsLHJlcXVp cmUsbW9kdWxlLGV4cG9ydHMpe3JlcXVpcmUoImFycmF5LWV4dGVuc2lvbnMiKTty ZXF1aXJlKCJldmVudC1leHRlbnNpb25zIik7dmFyIGFuaW1hdGlvbj1yZXF1aXJl KCJhbmltYXRpb24iKTt2YXIgQXJiaXRlcj1yZXF1aXJlKCJhcmJpdGVyIik7dmFy IEFycmF5VXRpbHM9cmVxdWlyZSgiQXJyYXlVdGlscyIpO3ZhciBBc3luY1JlcXVl c3Q9cmVxdWlyZSgiQXN5bmNSZXF1ZXN0Iik7dmFyIEJ1dHRvbj1yZXF1aXJlKCJC dXR0b24iKTt2YXIgQ1NTPXJlcXVpcmUoImNzcy1zdXBwb3J0Iik7dmFyIERPTT1y ZXF1aXJlKCJkb20iKTt2YXIgRm9ybT1yZXF1aXJlKCJGb3JtIik7dmFyIExvY2Fs ZT1yZXF1aXJlKCJMb2NhbGUiKTt2YXIgT2JqZWN0VXRpbHM9cmVxdWlyZSgiT2Jq ZWN0VXRpbHMiKTt2YXIgT25sb2FkPXJlcXVpcmUoIm9ubG9hZCIpO3ZhciB1YT1y ZXF1aXJlKCJ1YSIpO3ZhciBVUkk9cmVxdWlyZSgidXJpIik7dmFyIFZlY3RvcjI9 cmVxdWlyZSgidmVjdG9yIik7dmFyIGNvcHlQcm9wZXJ0aWVzPXJlcXVpcmUoImNv cHlQcm9wZXJ0aWVzIik7dmFyIGdldE92ZXJsYXlaSW5kZXg9cmVxdWlyZSgiZ2V0 T3ZlcmxheVpJbmRleCIpO2dsb2JhbC50eD1yZXF1aXJlKCJ0eCIpO3ZhciBLRVlT PXJlcXVpcmUoImtleS1ldmVudC1jb25zdGFudHMiKTtmdW5jdGlvbiBEaWFsb2co bW9kZWwpe3RoaXMuX3Nob3dfbG9hZGluZz10cnVlO3RoaXMuX2F1dG9fZm9jdXM9 dHJ1ZTt0aGlzLl9zdWJtaXRfb25fZW50ZXI9ZmFsc2U7dGhpcy5fZmFkZV9lbmFi bGVkPXRydWU7dGhpcy5fb25sb2FkX2hhbmRsZXJzPVtdO3RoaXMuX3RvcD0xMjU7 dGhpcy5fdW5pcXVlSUQ9J2RpYWxvZ18nK0RpYWxvZy5fZ2xvYmFsQ291bnQrKzt0 aGlzLl9jb250ZW50PW51bGw7dGhpcy5fb2JqPW51bGw7dGhpcy5fcG9wdXA9bnVs bDt0aGlzLl9vdmVybGF5PW51bGw7dGhpcy5fc2hpbT1udWxsO3RoaXMuX2NhdXNh bF9lbGVtPW51bGw7dGhpcy5fcHJldmlvdXNfZm9jdXM9bnVsbDt0aGlzLl9idXR0 b25zPVtdO3RoaXMuX2J1aWxkRGlhbG9nKCk7aWYobW9kZWwpdGhpcy5fc2V0RnJv bU1vZGVsKG1vZGVsKTtEaWFsb2cuX2luaXQoKTt9Y29weVByb3BlcnRpZXMoRGlh bG9nLHtPSzp7bmFtZTonb2snLGxhYmVsOiJUYW1hbSJ9LENBTkNFTDp7bmFtZTon Y2FuY2VsJyxsYWJlbDoiXHUwMTMwcHRhbCIsY2xhc3NOYW1lOidpbnB1dGF1eCd9 LENMT1NFOntuYW1lOidjbG9zZScsbGFiZWw6IkthcGF0In0sTkVYVDp7bmFtZTon bmV4dCcsbGFiZWw6IlNvbnJha2kifSxTQVZFOntuYW1lOidzYXZlJyxsYWJlbDoi S2F5ZGV0In0sU1VCTUlUOntuYW1lOidzdWJtaXQnLGxhYmVsOiJHXHUwMGY2bmRl ciJ9LENPTkZJUk06e25hbWU6J2NvbmZpcm0nLGxhYmVsOiJPbmF5bGEifSxERUxF VEU6e25hbWU6J2RlbGV0ZScsbGFiZWw6IlNpbCJ9LF9nbG9iYWxDb3VudDowLF9i b3R0b21zOlswXSxtYXhfYm90dG9tOjAsX3VwZGF0ZU1heEJvdHRvbTpmdW5jdGlv bigpe0RpYWxvZy5tYXhfYm90dG9tPU1hdGgubWF4LmFwcGx5KE1hdGgsRGlhbG9n Ll9ib3R0b21zKTt9fSk7Y29weVByb3BlcnRpZXMoRGlhbG9nLHtPS19BTkRfQ0FO Q0VMOltEaWFsb2cuT0ssRGlhbG9nLkNBTkNFTF0sX1NUQU5EQVJEX0JVVFRPTlM6 W0RpYWxvZy5PSyxEaWFsb2cuQ0FOQ0VMLERpYWxvZy5DTE9TRSxEaWFsb2cuU0FW RSxEaWFsb2cuU1VCTUlULERpYWxvZy5DT05GSVJNLERpYWxvZy5ERUxFVEVdLFNJ WkU6e1dJREU6NTU1LFNUQU5EQVJEOjQ0NX0sX0hBTE9fV0lEVEg6MTAsX0JPUkRF Ul9XSURUSDoxLF9QQURESU5HX1dJRFRIOjEwLF9QQUdFX01BUkdJTjo0MCxfc3Rh Y2s6W10sX2lzVXNpbmdDU1NCb3JkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIENTUy5z dXBwb3J0c0JvcmRlclJhZGl1cygpfHx1YS5pZSgpPDc7fSxuZXdCdXR0b246ZnVu Y3Rpb24obmFtZSxsYWJlbCxjbGFzc05hbWUsaGFuZGxlcil7dmFyIGJ1dHRvbj17 bmFtZTpuYW1lLGxhYmVsOmxhYmVsfTtpZihjbGFzc05hbWUpYnV0dG9uLmNsYXNz TmFtZT1jbGFzc05hbWU7aWYoaGFuZGxlcilidXR0b24uaGFuZGxlcj1oYW5kbGVy O3JldHVybiBidXR0b247fSxnZXRDdXJyZW50OmZ1bmN0aW9uKCl7dmFyIHN0YWNr PURpYWxvZy5fc3RhY2s7cmV0dXJuIHN0YWNrLmxlbmd0aD9zdGFja1tzdGFjay5s ZW5ndGgtMV06bnVsbDt9LGJvb3RzdHJhcDpmdW5jdGlvbih1cmksZGF0YSxyZWFk X29ubHksbWV0aG9kLG1vZGVsLGVsZW0pe2RhdGE9ZGF0YXx8e307dmFyIHVzZV9w aXBlPWVsZW0mJmVsZW0ucmVsPT0nZGlhbG9nLXBpcGUnO2NvcHlQcm9wZXJ0aWVz KGRhdGEsbmV3IFVSSSh1cmkpLmdldFF1ZXJ5RGF0YSgpKTttZXRob2Q9bWV0aG9k fHwocmVhZF9vbmx5PydHRVQnOidQT1NUJyk7dmFyIHN0YXR1c19lbGVtPVBhcmVu dC5ieUNsYXNzKGVsZW0sJ3N0YXRfZWxlbScpfHxlbGVtO2lmKHN0YXR1c19lbGVt JiZDU1MuaGFzQ2xhc3Moc3RhdHVzX2VsZW0sJ2FzeW5jX3NhdmluZycpKXJldHVy biBmYWxzZTt2YXIgcmVxdWVzdDtpZih1c2VfcGlwZSl7cmVxdWVzdD1uZXcgQWph eFBpcGVSZXF1ZXN0KCk7fWVsc2UgcmVxdWVzdD1uZXcgQXN5bmNSZXF1ZXN0KCku c2V0UmVhZE9ubHkoISFyZWFkX29ubHkpLnNldE1ldGhvZChtZXRob2QpLnNldFJl bGF0aXZlVG8oZWxlbSkuc2V0U3RhdHVzRWxlbWVudChzdGF0dXNfZWxlbSk7cmVx dWVzdC5zZXRVUkkodXJpKS5zZXROZWN0YXJNb2R1bGVEYXRhU2FmZShlbGVtKS5z ZXREYXRhKGRhdGEpO3ZhciBkaWFsb2c9bmV3IERpYWxvZyhtb2RlbCkuc2V0Q2F1 c2FsRWxlbWVudChlbGVtKS5zZXRBc3luYyhyZXF1ZXN0LHVzZV9waXBlKTtkaWFs b2cuc2hvdygpO3JldHVybiBmYWxzZTt9LF9pbml0OmZ1bmN0aW9uKCl7dGhpcy5f aW5pdD1iYWdvZmhvbGRpbmc7T25sb2FkLnJ1bk9ubGVhdmUoRGlhbG9nLl90ZWFy RG93bi5zaGllbGQobnVsbCxmYWxzZSkpO0FyYml0ZXIuc3Vic2NyaWJlKCdwYWdl X3RyYW5zaXRpb24nLERpYWxvZy5fdGVhckRvd24uc2hpZWxkKG51bGwsdHJ1ZSkp O0V2ZW50Lmxpc3Rlbihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJ2tleWRvd24n LGZ1bmN0aW9uKGV2ZW50KXtpZihFdmVudC5nZXRLZXlDb2RlKGV2ZW50KT09S0VZ Uy5FU0MmJiFldmVudC5nZXRNb2RpZmllcnMoKS5hbnkpe2lmKERpYWxvZy5fZXNj YXBlKCkpZXZlbnQua2lsbCgpO31lbHNlIGlmKEV2ZW50LmdldEtleUNvZGUoZXZl bnQpPT1LRVlTLlJFVFVSTiYmIWV2ZW50LmdldE1vZGlmaWVycygpLmFueSlpZihE aWFsb2cuX2VudGVyKCkpZXZlbnQua2lsbCgpO30pO0V2ZW50Lmxpc3Rlbih3aW5k b3csJ3Jlc2l6ZScsZnVuY3Rpb24oZXZlbnQpe3ZhciBkaWFsb2c9RGlhbG9nLmdl dEN1cnJlbnQoKTtkaWFsb2cmJmRpYWxvZy5fcmVzZXREaWFsb2dPYmooKTt9KTt9 LF9maW5kQnV0dG9uOmZ1bmN0aW9uKGJ1dHRvbnMsbmFtZSl7aWYoYnV0dG9ucylm b3IodmFyIGk9MDtpPGJ1dHRvbnMubGVuZ3RoOysraSlpZihidXR0b25zW2ldLm5h bWU9PW5hbWUpcmV0dXJuIGJ1dHRvbnNbaV07cmV0dXJuIG51bGw7fSxfdGVhckRv d246ZnVuY3Rpb24oaXNfcGFnZV90cmFuc2l0aW9uKXt2YXIgc3RhY2s9RGlhbG9n Ll9zdGFjay5zbGljZSgpO2Zvcih2YXIgaWk9c3RhY2subGVuZ3RoLTE7aWk+PTA7 aWktLSlpZighKGlzX3BhZ2VfdHJhbnNpdGlvbiYmc3RhY2tbaWldLl9jcm9zc190 cmFuc2l0aW9uKSlzdGFja1tpaV0uaGlkZSgpO30sX2VzY2FwZTpmdW5jdGlvbigp e3ZhciBkaWFsb2c9RGlhbG9nLmdldEN1cnJlbnQoKTtpZighZGlhbG9nKXJldHVy biBmYWxzZTt2YXIgc2VtaV9tb2RhbD1kaWFsb2cuX3NlbWlfbW9kYWw7dmFyIGJ1 dHRvbnM9ZGlhbG9nLl9idXR0b25zO2lmKCFidXR0b25zLmxlbmd0aCYmIXNlbWlf bW9kYWwpcmV0dXJuIGZhbHNlO2lmKHNlbWlfbW9kYWwmJiFidXR0b25zLmxlbmd0 aCl7ZGlhbG9nLmhpZGUoKTtyZXR1cm4gdHJ1ZTt9dmFyIGJ1dHRvbl90b19zaW11 bGF0ZTt2YXIgY2FuY2VsX2J1dHRvbj1EaWFsb2cuX2ZpbmRCdXR0b24oYnV0dG9u cywnY2FuY2VsJyk7aWYoZGlhbG9nLl9jYW5jZWxIYW5kbGVyKXtkaWFsb2cuY2Fu Y2VsKCk7cmV0dXJuIHRydWU7fWVsc2UgaWYoY2FuY2VsX2J1dHRvbil7YnV0dG9u X3RvX3NpbXVsYXRlPWNhbmNlbF9idXR0b247fWVsc2UgaWYoYnV0dG9ucy5sZW5n dGg9PTEpe2J1dHRvbl90b19zaW11bGF0ZT1idXR0b25zWzBdO31lbHNlIHJldHVy biBmYWxzZTtkaWFsb2cuX2hhbmRsZUJ1dHRvbihidXR0b25fdG9fc2ltdWxhdGUp O3JldHVybiB0cnVlO30sX2VudGVyOmZ1bmN0aW9uKCl7dmFyIGRpYWxvZz1EaWFs b2cuZ2V0Q3VycmVudCgpO2lmKCFkaWFsb2d8fCFkaWFsb2cuX3N1Ym1pdF9vbl9l bnRlcilyZXR1cm4gZmFsc2U7aWYoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9ZGlh bG9nLl9mcmFtZSlyZXR1cm4gZmFsc2U7dmFyIGJ1dHRvbnM9ZGlhbG9nLl9idXR0 b25zO2lmKCFidXR0b25zKXJldHVybiBmYWxzZTtkaWFsb2cuX2hhbmRsZUJ1dHRv bihidXR0b25zWzBdKTtyZXR1cm4gdHJ1ZTt9LGNhbGxfb3JfZXZhbDpmdW5jdGlv bihvYmosZnVuYyxhcmdzKXtpZighZnVuYylyZXR1cm4gdW5kZWZpbmVkO2FyZ3M9 YXJnc3x8e307aWYodHlwZW9mKGZ1bmMpPT0nc3RyaW5nJyl7dmFyIHBhcmFtcz1P YmplY3RVdGlscy5nZXRLZXlzKGFyZ3MpLmpvaW4oJywgJyk7ZnVuYz1ldmFsKCco e2Y6IGZ1bmN0aW9uKCcrcGFyYW1zKycpIHsgJytmdW5jKyd9fSknKS5mO31yZXR1 cm4gZnVuYy5hcHBseShvYmosT2JqZWN0VXRpbHMuZ2V0VmFsdWVzKGFyZ3MpKTt9 fSk7Y29weVByb3BlcnRpZXMoRGlhbG9nLnByb3RvdHlwZSx7X2Nyb3NzX3RyYW5z aXRpb246ZmFsc2UsX2xvYWRpbmc6ZmFsc2UsX3Nob3dpbmc6ZmFsc2Usc2hvdzpm dW5jdGlvbigpe2lmKHRoaXMuX2FzeW5jX3JlcXVlc3QmJnRoaXMuX3Nob3dfbG9h ZGluZyl7dGhpcy5zaG93TG9hZGluZygpO31lbHNle3RoaXMuX3Nob3dpbmc9dHJ1 ZTt0aGlzLl91cGRhdGUoKTt9cmV0dXJuIHRoaXM7fSxzaG93TG9hZGluZzpmdW5j dGlvbigpe3RoaXMuX2xvYWRpbmc9dHJ1ZTtDU1MuYWRkQ2xhc3ModGhpcy5fZnJh bWUsJ2RpYWxvZ19sb2FkaW5nX3Nob3duJyk7dGhpcy5fcmVuZGVyRGlhbG9nKCk7 cmV0dXJuIHRoaXM7fSxoaWRlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX3Nob3dpbmcm JiF0aGlzLl9sb2FkaW5nKXJldHVybiB0aGlzO3RoaXMuX3Nob3dpbmc9ZmFsc2U7 aWYodGhpcy5fYXV0b2hpZGVfdGltZW91dCl7Y2xlYXJUaW1lb3V0KHRoaXMuX2F1 dG9oaWRlX3RpbWVvdXQpO3RoaXMuX2F1dG9oaWRlX3RpbWVvdXQ9bnVsbDt9aWYo dGhpcy5fZmFkZV9lbmFibGVkJiZEaWFsb2cuX3N0YWNrLmxlbmd0aDw9MSl7dGhp cy5fZmFkZU91dCgpO31lbHNlIHRoaXMuX2hpZGUoKTtyZXR1cm4gdGhpczt9LGNh bmNlbDpmdW5jdGlvbigpe2lmKCF0aGlzLl9jYW5jZWxIYW5kbGVyfHx0aGlzLl9j YW5jZWxIYW5kbGVyKCkhPT1mYWxzZSl0aGlzLmhpZGUoKTt9LGdldFJvb3Q6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fb2JqO30sZ2V0Qm9keTpmdW5jdGlvbigpe3Jl dHVybiBET00uc2NyeSh0aGlzLl9vYmosJ2Rpdi5kaWFsb2dfYm9keScpWzBdO30s Z2V0QnV0dG9uRWxlbWVudDpmdW5jdGlvbihidXR0b24pe2lmKHR5cGVvZiBidXR0 b249PSdzdHJpbmcnKWJ1dHRvbj1EaWFsb2cuX2ZpbmRCdXR0b24odGhpcy5fYnV0 dG9ucyxidXR0b24pO2lmKCFidXR0b258fCFidXR0b24ubmFtZSlyZXR1cm4gbnVs bDt2YXIgaW5wdXRzPURPTS5zY3J5KHRoaXMuX3BvcHVwLCdpbnB1dCcpO3ZhciBu YW1lX2ZpbHRlcj1mdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5uYW1lPT1idXR0 b24ubmFtZTt9O3JldHVybiBpbnB1dHMuZmlsdGVyKG5hbWVfZmlsdGVyKVswXXx8 bnVsbDt9LGdldENvbnRlbnROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIERPTS5maW5k KHRoaXMuX2NvbnRlbnQsJ2Rpdi5kaWFsb2dfY29udGVudCcpO30sZ2V0Rm9ybURh dGE6ZnVuY3Rpb24oKXtyZXR1cm4gRm9ybS5zZXJpYWxpemUodGhpcy5nZXRDb250 ZW50Tm9kZSgpKTt9LHNldEFsbG93Q3Jvc3NQYWdlVHJhbnNpdGlvbjpmdW5jdGlv bihhbGxvdyl7dGhpcy5fY3Jvc3NfdHJhbnNpdGlvbj1hbGxvdztyZXR1cm4gdGhp czt9LHNldFNob3dpbmc6ZnVuY3Rpb24oKXt0aGlzLnNob3coKTtyZXR1cm4gdGhp czt9LHNldEhpZGluZzpmdW5jdGlvbigpe3RoaXMuaGlkZSgpO3JldHVybiB0aGlz O30sc2V0VGl0bGU6ZnVuY3Rpb24odGl0bGUpe3ZhciBub2RlPXRoaXMuX25vZGVz LnRpdGxlO3ZhciBpbm5lcl9ub2RlPXRoaXMuX25vZGVzLnRpdGxlX2lubmVyO3Zh ciBjb250ZW50X25vZGU9dGhpcy5fbm9kZXMuY29udGVudDtET00uc2V0Q29udGVu dChpbm5lcl9ub2RlLHRoaXMuX2Zvcm1hdCh0aXRsZXx8JycpKTtDU1MuY29uZGl0 aW9uU2hvdyhub2RlLCEhdGl0bGUpO0NTUy5jb25kaXRpb25DbGFzcyhjb250ZW50 X25vZGUsJ2RpYWxvZ19jb250ZW50X3RpdGxlbGVzcycsIXRpdGxlKTtyZXR1cm4g dGhpczt9LHNldEJvZHk6ZnVuY3Rpb24oYm9keSl7RE9NLnNldENvbnRlbnQodGhp cy5fbm9kZXMuYm9keSx0aGlzLl9mb3JtYXQoYm9keSkpO3JldHVybiB0aGlzO30s c2V0RXh0cmFEYXRhOmZ1bmN0aW9uKGRhdGEpe3RoaXMuX2V4dHJhX2RhdGE9ZGF0 YTtyZXR1cm4gdGhpczt9LHNldFJldHVybkRhdGE6ZnVuY3Rpb24oZGF0YSl7dGhp cy5fcmV0dXJuX2RhdGE9ZGF0YTtyZXR1cm4gdGhpczt9LHNldFNob3dMb2FkaW5n OmZ1bmN0aW9uKHNob3cpe3RoaXMuX3Nob3dfbG9hZGluZz1zaG93O3JldHVybiB0 aGlzO30sc2V0RnVsbEJsZWVkOmZ1bmN0aW9uKGlzX2Z1bGxfYmxlZWQpe3RoaXMu X2Z1bGxfYmxlZWQ9aXNfZnVsbF9ibGVlZDt0aGlzLl91cGRhdGVXaWR0aCgpO0NT Uy5jb25kaXRpb25DbGFzcyh0aGlzLl9vYmosJ2Z1bGxfYmxlZWQnLGlzX2Z1bGxf YmxlZWQpO3JldHVybiB0aGlzO30sc2V0Q2F1c2FsRWxlbWVudDpmdW5jdGlvbihl bGVtKXt0aGlzLl9jYXVzYWxfZWxlbT1lbGVtO3JldHVybiB0aGlzO30sc2V0VXNl ckRhdGE6ZnVuY3Rpb24oZGF0YSl7dGhpcy5fdXNlcl9kYXRhPWRhdGE7cmV0dXJu IHRoaXM7fSxnZXRVc2VyRGF0YTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl91c2Vy X2RhdGE7fSxzZXRBdXRvaGlkZTpmdW5jdGlvbihhdXRvaGlkZSl7aWYoYXV0b2hp ZGUpe2lmKHRoaXMuX3Nob3dpbmcpe3RoaXMuX2F1dG9oaWRlX3RpbWVvdXQ9c2V0 VGltZW91dCh0aGlzLmhpZGUuc2hpZWxkKHRoaXMpLGF1dG9oaWRlKTt9ZWxzZSB0 aGlzLl9hdXRvaGlkZT1hdXRvaGlkZTt9ZWxzZXt0aGlzLl9hdXRvaGlkZT1udWxs O2lmKHRoaXMuX2F1dG9oaWRlX3RpbWVvdXQpe2NsZWFyVGltZW91dCh0aGlzLl9h dXRvaGlkZV90aW1lb3V0KTt0aGlzLl9hdXRvaGlkZV90aW1lb3V0PW51bGw7fX1y ZXR1cm4gdGhpczt9LHNldFN1bW1hcnk6ZnVuY3Rpb24oc3VtbWFyeSl7dmFyIG5v ZGU9dGhpcy5fbm9kZXMuc3VtbWFyeTtET00uc2V0Q29udGVudChub2RlLHRoaXMu X2Zvcm1hdChzdW1tYXJ5fHwnJykpO0NTUy5jb25kaXRpb25TaG93KG5vZGUsISFz dW1tYXJ5KTtyZXR1cm4gdGhpczt9LHNldEJ1dHRvbnM6ZnVuY3Rpb24oYil7dmFy IGJ1dHRvbnMsYnV0dG9uO2lmKCEoYiBpbnN0YW5jZW9mIEFycmF5KSl7YnV0dG9u cz1BcnJheVV0aWxzLmNyZWF0ZUZyb20oYXJndW1lbnRzKTt9ZWxzZSBidXR0b25z PWI7Zm9yKHZhciBpPTA7aTxidXR0b25zLmxlbmd0aDsrK2kpaWYodHlwZW9mIGJ1 dHRvbnNbaV09PSdzdHJpbmcnKXtidXR0b249RGlhbG9nLl9maW5kQnV0dG9uKERp YWxvZy5fU1RBTkRBUkRfQlVUVE9OUyxidXR0b25zW2ldKTtidXR0b25zW2ldPWJ1 dHRvbjt9dGhpcy5fYnV0dG9ucz1idXR0b25zO3ZhciBidXR0b25fY29udGVudD1b XTtpZihidXR0b25zJiZidXR0b25zLmxlbmd0aD4wKWZvcih2YXIgaWk9MDtpaTxi dXR0b25zLmxlbmd0aDtpaSsrKXtidXR0b249YnV0dG9uc1tpaV07dmFyIGJ1dHRv bl9pbnB1dD0kTignaW5wdXQnLHt0eXBlOididXR0b24nLG5hbWU6YnV0dG9uLm5h bWV8fCcnLHZhbHVlOmJ1dHRvbi5sYWJlbH0pO3ZhciBidXR0b25fbm9kZT0kTign bGFiZWwnLHtjbGFzc05hbWU6J3VpQnV0dG9uIHVpQnV0dG9uTGFyZ2UgdWlCdXR0 b25Db25maXJtJ30sYnV0dG9uX2lucHV0KTtpZihidXR0b24uY2xhc3NOYW1lKXti dXR0b24uY2xhc3NOYW1lLnNwbGl0KC9ccysvKS5lYWNoKGZ1bmN0aW9uKGUpe0NT Uy5hZGRDbGFzcyhidXR0b25fbm9kZSxlKTt9KTtpZihDU1MuaGFzQ2xhc3MoYnV0 dG9uX25vZGUsJ2lucHV0YXV4Jykpe0NTUy5yZW1vdmVDbGFzcyhidXR0b25fbm9k ZSwnaW5wdXRhdXgnKTtDU1MucmVtb3ZlQ2xhc3MoYnV0dG9uX25vZGUsJ3VpQnV0 dG9uQ29uZmlybScpO31pZihDU1MuaGFzQ2xhc3MoYnV0dG9uX25vZGUsJ3VpQnV0 dG9uU3BlY2lhbCcpKUNTUy5yZW1vdmVDbGFzcyhidXR0b25fbm9kZSwndWlCdXR0 b25Db25maXJtJyk7fWlmKGJ1dHRvbi5pY29uKURPTS5wcmVwZW5kQ29udGVudChi dXR0b25fbm9kZSwkTignaW1nJyx7c3JjOmJ1dHRvbi5pY29uLGNsYXNzTmFtZTon aW1nIG1ycyd9KSk7aWYoYnV0dG9uLmRpc2FibGVkKUJ1dHRvbi5zZXRFbmFibGVk KGJ1dHRvbl9ub2RlLGZhbHNlKTtFdmVudC5saXN0ZW4oYnV0dG9uX2lucHV0LCdj bGljaycsdGhpcy5faGFuZGxlQnV0dG9uLmJpbmQodGhpcyxidXR0b24ubmFtZSkp O2Zvcih2YXIgYXR0ciBpbiBidXR0b24paWYoYXR0ci5pbmRleE9mKCdkYXRhLScp PT09MCYmYXR0ci5sZW5ndGg+NSlidXR0b25faW5wdXQuc2V0QXR0cmlidXRlKGF0 dHIsYnV0dG9uW2F0dHJdKTtidXR0b25fY29udGVudC5wdXNoKGJ1dHRvbl9ub2Rl KTt9RE9NLnNldENvbnRlbnQodGhpcy5fbm9kZXMuYnV0dG9ucyxidXR0b25fY29u dGVudCk7dGhpcy5fdXBkYXRlQnV0dG9uVmlzaWJpbGl0eSgpO3JldHVybiB0aGlz O30sc2V0QnV0dG9uc01lc3NhZ2U6ZnVuY3Rpb24obWVzc2FnZSl7RE9NLnNldENv bnRlbnQodGhpcy5fbm9kZXMuYnV0dG9uX21lc3NhZ2UsdGhpcy5fZm9ybWF0KG1l c3NhZ2V8fCcnKSk7dGhpcy5faGFzX2J1dHRvbl9tZXNzYWdlPSEhbWVzc2FnZTt0 aGlzLl91cGRhdGVCdXR0b25WaXNpYmlsaXR5KCk7cmV0dXJuIHRoaXM7fSxfdXBk YXRlQnV0dG9uVmlzaWJpbGl0eTpmdW5jdGlvbigpe3ZhciBzaG93PXRoaXMuX2J1 dHRvbnMubGVuZ3RoPjB8fHRoaXMuX2hhc19idXR0b25fbWVzc2FnZTtDU1MuY29u ZGl0aW9uU2hvdyh0aGlzLl9ub2Rlcy5idXR0b25fd3JhcHBlcixzaG93KTtDU1Mu Y29uZGl0aW9uQ2xhc3ModGhpcy5fb2JqLCdvbWl0RGlhbG9nRm9vdGVyJywhc2hv dyk7fSxzZXRDbGlja0J1dHRvbk9uRW50ZXI6ZnVuY3Rpb24oaW5wdXRfaWQsYnV0 dG9uKXt0aGlzLl9jbGlja09uRW50ZXJUYXJnZXQ9aW5wdXRfaWQ7aWYoIXRoaXMu X2NsaWNrT25FbnRlckxpc3RlbmVyKXRoaXMuX2NsaWNrT25FbnRlckxpc3RlbmVy PUV2ZW50Lmxpc3Rlbih0aGlzLl9ub2Rlcy5ib2R5LCdrZXlwcmVzcycsZnVuY3Rp b24oZXZlbnQpe3ZhciB0YXJnZXQ9ZXZlbnQuZ2V0VGFyZ2V0KCk7aWYodGFyZ2V0 JiZ0YXJnZXQuaWQ9PT10aGlzLl9jbGlja09uRW50ZXJUYXJnZXQpaWYoRXZlbnQu Z2V0S2V5Q29kZShldmVudCk9PUtFWVMuUkVUVVJOKXt0aGlzLl9oYW5kbGVCdXR0 b24oYnV0dG9uKTtldmVudC5raWxsKCk7fXJldHVybiB0cnVlO30uYmluZCh0aGlz KSk7cmV0dXJuIHRoaXM7fSxzZXRTdGFja2FibGU6ZnVuY3Rpb24oc3RhY2thYmxl LHNob3duKXt0aGlzLl9pc19zdGFja2FibGU9c3RhY2thYmxlO3RoaXMuX3Nob3du X3doaWxlX3N0YWNrZWQ9c3RhY2thYmxlJiZzaG93bjtyZXR1cm4gdGhpczt9LHNl dEhhbmRsZXI6ZnVuY3Rpb24oaGFuZGxlcil7dGhpcy5faGFuZGxlcj1oYW5kbGVy O3JldHVybiB0aGlzO30sc2V0Q2FuY2VsSGFuZGxlcjpmdW5jdGlvbihjYW5jZWxI YW5kbGVyKXt0aGlzLl9jYW5jZWxIYW5kbGVyPURpYWxvZy5jYWxsX29yX2V2YWwu YmluZChudWxsLHRoaXMsY2FuY2VsSGFuZGxlcik7cmV0dXJuIHRoaXM7fSxzZXRD bG9zZUhhbmRsZXI6ZnVuY3Rpb24oY2xvc2VfaGFuZGxlcil7dGhpcy5fY2xvc2Vf aGFuZGxlcj1EaWFsb2cuY2FsbF9vcl9ldmFsLmJpbmQobnVsbCx0aGlzLGNsb3Nl X2hhbmRsZXIpO3JldHVybiB0aGlzO30sY2xlYXJIYW5kbGVyOmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuc2V0SGFuZGxlcihudWxsKTt9LHNldFBvc3RVUkk6ZnVuY3Rp b24ocG9zdF91cmksYXN5bmNocm9ub3VzKXtpZihhc3luY2hyb25vdXM9PT11bmRl ZmluZWQpYXN5bmNocm9ub3VzPXRydWU7aWYoYXN5bmNocm9ub3VzKXt0aGlzLnNl dEhhbmRsZXIodGhpcy5fc3VibWl0Rm9ybS5iaW5kKHRoaXMsJ1BPU1QnLHBvc3Rf dXJpKSk7fWVsc2UgdGhpcy5zZXRIYW5kbGVyKGZ1bmN0aW9uKCl7Rm9ybS5wb3N0 KHBvc3RfdXJpLHRoaXMuZ2V0Rm9ybURhdGEoKSk7dGhpcy5oaWRlKCk7fS5iaW5k KHRoaXMpKTtyZXR1cm4gdGhpczt9LHNldEdldFVSSTpmdW5jdGlvbihnZXRfdXJp KXt0aGlzLnNldEhhbmRsZXIodGhpcy5fc3VibWl0Rm9ybS5iaW5kKHRoaXMsJ0dF VCcsZ2V0X3VyaSkpO3JldHVybiB0aGlzO30sc2V0TW9kYWw6ZnVuY3Rpb24obW9k YWwpe3RoaXMuX21vZGFsPW1vZGFsO0NTUy5jb25kaXRpb25DbGFzcyh0aGlzLl9v YmosJ2dlbmVyaWNfZGlhbG9nX21vZGFsJyxtb2RhbCk7cmV0dXJuIHRoaXM7fSxz ZXRTZW1pTW9kYWw6ZnVuY3Rpb24oY2xpY2tvdXQpe2lmKGNsaWNrb3V0KXt0aGlz LnNldE1vZGFsKHRydWUpO3RoaXMuX3NlbWlNb2RhbExpc3RlbmVyPUV2ZW50Lmxp c3Rlbih0aGlzLl9vYmosJ2NsaWNrJyxmdW5jdGlvbihlKXtpZighRE9NLmNvbnRh aW5zKHRoaXMuX3BvcHVwLGUuZ2V0VGFyZ2V0KCkpKXRoaXMuaGlkZSgpO30uYmlu ZCh0aGlzKSk7fWVsc2UgdGhpcy5fc2VtaU1vZGFsTGlzdGVuZXImJnRoaXMuX3Nl bWlNb2RhbExpc3RlbmVyLnJlbW92ZSgpO3RoaXMuX3NlbWlfbW9kYWw9Y2xpY2tv dXQ7cmV0dXJuIHRoaXM7fSxzZXRXaWRlRGlhbG9nOmZ1bmN0aW9uKGlzX3dpZGUp e3RoaXMuX3dpZGVfZGlhbG9nPWlzX3dpZGU7dGhpcy5fdXBkYXRlV2lkdGgoKTty ZXR1cm4gdGhpczt9LHNldENvbnRlbnRXaWR0aDpmdW5jdGlvbih3aWR0aCl7dGhp cy5fY29udGVudF93aWR0aD13aWR0aDt0aGlzLl91cGRhdGVXaWR0aCgpO3JldHVy biB0aGlzO30sc2V0VGl0bGVMb2FkaW5nOmZ1bmN0aW9uKGxvYWRpbmcpe2lmKGxv YWRpbmc9PT11bmRlZmluZWQpbG9hZGluZz10cnVlO3ZhciBoZWFkZXI9RE9NLmZp bmQodGhpcy5fcG9wdXAsJ2gyLmRpYWxvZ190aXRsZScpO2lmKGhlYWRlcilDU1Mu Y29uZGl0aW9uQ2xhc3MoaGVhZGVyLCdsb2FkaW5nJyxsb2FkaW5nKTtyZXR1cm4g dGhpczt9LHNldFNlY3VyZTpmdW5jdGlvbihpc19zZWN1cmUpe0NTUy5jb25kaXRp b25DbGFzcyh0aGlzLl9ub2Rlcy50aXRsZSwnc2VjdXJlJyxpc19zZWN1cmUpO3Jl dHVybiB0aGlzO30sc2V0Q2xhc3NOYW1lOmZ1bmN0aW9uKGNsYXNzX25hbWUpe0NT Uy5hZGRDbGFzcyh0aGlzLl9vYmosY2xhc3NfbmFtZSk7cmV0dXJuIHRoaXM7fSxz ZXRGYWRlRW5hYmxlZDpmdW5jdGlvbihlbmFibGVkKXt0aGlzLl9mYWRlX2VuYWJs ZWQ9ZW5hYmxlZDtyZXR1cm4gdGhpczt9LHNldEZvb3RlcjpmdW5jdGlvbihmb290 ZXIpe3ZhciBub2RlPXRoaXMuX25vZGVzLmZvb3RlcjtET00uc2V0Q29udGVudChu b2RlLHRoaXMuX2Zvcm1hdChmb290ZXJ8fCcnKSk7Q1NTLmNvbmRpdGlvblNob3co bm9kZSwhIWZvb3Rlcik7cmV0dXJuIHRoaXM7fSxzZXRBdXRvRm9jdXM6ZnVuY3Rp b24oZm9jdXMpe3RoaXMuX2F1dG9fZm9jdXM9Zm9jdXM7cmV0dXJuIHRoaXM7fSxz ZXRUb3A6ZnVuY3Rpb24odG9wKXt0aGlzLl90b3A9dG9wO3RoaXMuX3Jlc2V0RGlh bG9nT2JqKCk7cmV0dXJuIHRoaXM7fSxvbmxvYWRSZWdpc3RlcjpmdW5jdGlvbiho YW5kbGVyKXtBcnJheVV0aWxzLmNyZWF0ZUZyb20oaGFuZGxlcikuZm9yRWFjaChm dW5jdGlvbihpKXtpZih0eXBlb2YgaT09J3N0cmluZycpaT1uZXcgRnVuY3Rpb24o aSk7dGhpcy5fb25sb2FkX2hhbmRsZXJzLnB1c2goaS5iaW5kKHRoaXMpKTt9LmJp bmQodGhpcykpO3JldHVybiB0aGlzO30sc2V0QXN5bmNVUkw6ZnVuY3Rpb24odXJs KXtyZXR1cm4gdGhpcy5zZXRBc3luYyhuZXcgQXN5bmNSZXF1ZXN0KHVybCkpO30s c2V0QXN5bmM6ZnVuY3Rpb24oYXN5bmNfcmVxdWVzdCx1c2VfcGlwZSl7dmFyIGhh bmRsZXI9ZnVuY3Rpb24ocmVzcG9uc2Upe2lmKHRoaXMuX2FzeW5jX3JlcXVlc3Qh PWFzeW5jX3JlcXVlc3QpcmV0dXJuO3RoaXMuX2FzeW5jX3JlcXVlc3Q9bnVsbDt2 YXIgcGF5bG9hZD1yZXNwb25zZS5nZXRQYXlsb2FkKCk7dmFyIGRpYWxvZz1wYXls b2FkO3ZhciBmbj1mdW5jdGlvbigpe2lmKHRoaXMuX2xvYWRpbmcpdGhpcy5fc2hv d2luZz10cnVlO2lmKHR5cGVvZiBkaWFsb2c9PSdzdHJpbmcnKXt0aGlzLnNldEJv ZHkoZGlhbG9nKTt9ZWxzZSB0aGlzLl9zZXRGcm9tTW9kZWwoZGlhbG9nKTt0aGlz Ll91cGRhdGUoKTt9LmJpbmQodGhpcyk7aWYodXNlX3BpcGUpe2RpYWxvZz1wYXls b2FkLmRpYWxvZztCb290bG9hZGVyLnNldFJlc291cmNlTWFwKHBheWxvYWQucmVz b3VyY2VfbWFwKTtCb290bG9hZGVyLmxvYWRSZXNvdXJjZXMocGF5bG9hZC5jc3Ms Zm4pO31lbHNlIGZuKCk7fS5iaW5kKHRoaXMpO3ZhciBkYXRhPWFzeW5jX3JlcXVl c3QuZ2V0RGF0YSgpO2RhdGEuX19kPTE7YXN5bmNfcmVxdWVzdC5zZXREYXRhKGRh dGEpO3ZhciByZXF1ZXN0O2lmKHVzZV9waXBlKXthc3luY19yZXF1ZXN0LnNldEZp cnN0UmVzcG9uc2VIYW5kbGVyKGhhbmRsZXIpO3JlcXVlc3Q9YXN5bmNfcmVxdWVz dC5nZXRBc3luY1JlcXVlc3QoKTt9ZWxzZXt2YXIgb3JpZ19oYW5kbGVyPWFzeW5j X3JlcXVlc3QuZ2V0SGFuZGxlcigpfHxiYWdvZmhvbGRpbmc7YXN5bmNfcmVxdWVz dC5zZXRIYW5kbGVyKGZ1bmN0aW9uKHJlc3BvbnNlKXtvcmlnX2hhbmRsZXIocmVz cG9uc2UpO2hhbmRsZXIocmVzcG9uc2UpO30pO3JlcXVlc3Q9YXN5bmNfcmVxdWVz dDt9dmFyIG9yaWdfZXJyb3JfaGFuZGxlcj1yZXF1ZXN0LmdldEVycm9ySGFuZGxl cigpfHxiYWdvZmhvbGRpbmc7dmFyIG9yaWdfdHJhbnNfZXJyb3JfaGFuZGxlcj1y ZXF1ZXN0LmdldFRyYW5zcG9ydEVycm9ySGFuZGxlcigpfHxiYWdvZmhvbGRpbmc7 dmFyIGhhbmRsZV9lcnJvcj1mdW5jdGlvbigpe3RoaXMuX2FzeW5jX3JlcXVlc3Q9 bnVsbDtpZih0aGlzLl9zaG93aW5nKXt0aGlzLl91cGRhdGUoKTt9ZWxzZSB0aGlz Ll9oaWRlKCk7fS5iaW5kKHRoaXMpO3JlcXVlc3Quc2V0QWxsb3dDcm9zc1BhZ2VU cmFuc2l0aW9uKHRoaXMuX2Nyb3NzX3RyYW5zaXRpb24pLnNldEVycm9ySGFuZGxl cihmdW5jdGlvbihyZXNwb25zZSl7aGFuZGxlX2Vycm9yKCk7b3JpZ19lcnJvcl9o YW5kbGVyKHJlc3BvbnNlKTt9KS5zZXRUcmFuc3BvcnRFcnJvckhhbmRsZXIoZnVu Y3Rpb24ocmVzcG9uc2Upe2hhbmRsZV9lcnJvcigpO29yaWdfdHJhbnNfZXJyb3Jf aGFuZGxlcihyZXNwb25zZSk7fSk7YXN5bmNfcmVxdWVzdC5zZW5kKCk7dGhpcy5f YXN5bmNfcmVxdWVzdD1hc3luY19yZXF1ZXN0O3RoaXMuX3VwZGF0ZSgpO3JldHVy biB0aGlzO30sX2Zvcm1hdDpmdW5jdGlvbihjb250ZW50KXtpZih0eXBlb2YgY29u dGVudD09J3N0cmluZycpe2NvbnRlbnQ9SFRNTChjb250ZW50KTt9ZWxzZSBjb250 ZW50PUhUTUwucmVwbGFjZUpTT05XcmFwcGVyKGNvbnRlbnQpO2lmKGNvbnRlbnQg aW5zdGFuY2VvZiBIVE1MKWNvbnRlbnQuc2V0RGVmZXJyZWQodHJ1ZSk7cmV0dXJu IGNvbnRlbnQ7fSxfdXBkYXRlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX3Nob3dpbmcp cmV0dXJuO2lmKHRoaXMuX2F1dG9oaWRlJiYhdGhpcy5fYXN5bmNfcmVxdWVzdCYm IXRoaXMuX2F1dG9oaWRlX3RpbWVvdXQpdGhpcy5fYXV0b2hpZGVfdGltZW91dD1z ZXRUaW1lb3V0KGJpbmQodGhpcywnaGlkZScpLHRoaXMuX2F1dG9oaWRlKTtpZih0 aGlzLl9hc3luY19yZXF1ZXN0JiZ0aGlzLl9zaG93X2xvYWRpbmcpe3RoaXMuc2hv d0xvYWRpbmcoKTt9ZWxzZXtDU1MucmVtb3ZlQ2xhc3ModGhpcy5fZnJhbWUsJ2Rp YWxvZ19sb2FkaW5nX3Nob3duJyk7dGhpcy5fbG9hZGluZz1mYWxzZTt0aGlzLl9y ZW5kZXJEaWFsb2coKTt0aGlzLl9ydW5PbmxvYWRzKCk7dGhpcy5fcHJldmlvdXNf Zm9jdXM9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtJbnB1dC5mb2N1cyh0aGlzLl9m cmFtZSk7fX0sX3J1bk9ubG9hZHM6ZnVuY3Rpb24oKXtmb3IodmFyIGk9MDtpPHRo aXMuX29ubG9hZF9oYW5kbGVycy5sZW5ndGg7KytpKXRyeXt0aGlzLl9vbmxvYWRf aGFuZGxlcnNbaV0oKTt9Y2F0Y2goZXgpe310aGlzLl9vbmxvYWRfaGFuZGxlcnM9 W107fSxfdXBkYXRlV2lkdGg6ZnVuY3Rpb24oKXt2YXIgZGlhbG9nX3dpZHRoPTIq RGlhbG9nLl9CT1JERVJfV0lEVEg7aWYoRGlhbG9nLl9pc1VzaW5nQ1NTQm9yZGVy cygpKWRpYWxvZ193aWR0aCs9MipEaWFsb2cuX0hBTE9fV0lEVEg7aWYodGhpcy5f Y29udGVudF93aWR0aCl7ZGlhbG9nX3dpZHRoKz10aGlzLl9jb250ZW50X3dpZHRo O2lmKCF0aGlzLl9mdWxsX2JsZWVkKWRpYWxvZ193aWR0aCs9MipEaWFsb2cuX1BB RERJTkdfV0lEVEg7fWVsc2UgaWYodGhpcy5fd2lkZV9kaWFsb2cpe2RpYWxvZ193 aWR0aCs9RGlhbG9nLlNJWkUuV0lERTt9ZWxzZSBkaWFsb2dfd2lkdGgrPURpYWxv Zy5TSVpFLlNUQU5EQVJEO3RoaXMuX3BvcHVwLnN0eWxlLndpZHRoPWRpYWxvZ193 aWR0aCsncHgnO30sX3JlbmRlckRpYWxvZzpmdW5jdGlvbigpe3RoaXMuX3Nob3dE aWFsb2coKTt0aGlzLl9zdWJtaXRfb25fZW50ZXI9ZmFsc2U7aWYodGhpcy5fYXV0 b19mb2N1cyl7dmFyIGlucHV0PUZvcm0uZ2V0Rmlyc3RFbGVtZW50KHRoaXMuX2Nv bnRlbnQsWydpbnB1dFt0eXBlPSJ0ZXh0Il0nLCd0ZXh0YXJlYScsJ2lucHV0W3R5 cGU9InBhc3N3b3JkIl0nXSk7aWYoaW5wdXQpe0Zvcm0uZm9jdXNGaXJzdC5iaW5k KHRoaXMsdGhpcy5fY29udGVudCkuZGVmZXIoKTt9ZWxzZSB0aGlzLl9zdWJtaXRf b25fZW50ZXI9dHJ1ZTt9dmFyIGJvdHRvbT1WZWN0b3IyLmdldEVsZW1lbnREaW1l bnNpb25zKHRoaXMuX2NvbnRlbnQpLnkrVmVjdG9yMi5nZXRFbGVtZW50UG9zaXRp b24odGhpcy5fY29udGVudCkueTtEaWFsb2cuX2JvdHRvbXMucHVzaChib3R0b20p O3RoaXMuX2JvdHRvbT1ib3R0b207RGlhbG9nLl91cGRhdGVNYXhCb3R0b20oKTty ZXR1cm4gdGhpczt9LF9idWlsZERpYWxvZzpmdW5jdGlvbigpe3RoaXMuX29iaj0k TignZGl2Jyx7Y2xhc3NOYW1lOidnZW5lcmljX2RpYWxvZycsaWQ6dGhpcy5fdW5p cXVlSUR9KTt0aGlzLl9vYmouc3R5bGUuZGlzcGxheT0nbm9uZSc7ZG9jdW1lbnQu Ym9keS5hcHBlbmRDaGlsZCh0aGlzLl9vYmopO2lmKCF0aGlzLl9wb3B1cCl0aGlz Ll9wb3B1cD0kTignZGl2Jyx7Y2xhc3NOYW1lOidnZW5lcmljX2RpYWxvZ19wb3B1 cCd9KTt0aGlzLl9wb3B1cC5zdHlsZS5sZWZ0PXRoaXMuX3BvcHVwLnN0eWxlLnRv cD0nJzt0aGlzLl9vYmouYXBwZW5kQ2hpbGQodGhpcy5fcG9wdXApO2lmKHVhLmll KCk8NyYmIXRoaXMuX3NoaW0pQm9vdGxvYWRlci5sb2FkQ29tcG9uZW50cygnaWZy YW1lLXNoaW0nLGZ1bmN0aW9uKCl7dGhpcy5fc2hpbT1uZXcgSWZyYW1lU2hpbSh0 aGlzLl9wb3B1cCk7fSk7dGhpcy5fYnVpbGREaWFsb2dDb250YWluZXIoKTt0aGlz Ll9idWlsZERpYWxvZ0NvbnRlbnQoKTt9LF9zaG93RGlhbG9nOmZ1bmN0aW9uKCl7 aWYoIXRoaXMuX2hhc1NldFpJbmRleCYmdGhpcy5fY2F1c2FsX2VsZW0pe3ZhciB6 X2luZGV4PWdldE92ZXJsYXlaSW5kZXgodGhpcy5fY2F1c2FsX2VsZW0pO3RoaXMu X2hhc1NldFpJbmRleD16X2luZGV4Pih0aGlzLl9tb2RhbD8zMDA6MjAwKTtDU1Mu c2V0U3R5bGUodGhpcy5fb2JqLCd6LWluZGV4Jyx0aGlzLl9oYXNTZXRaSW5kZXg/ el9pbmRleDonJyk7fXRoaXMuX3B1c2hPbnRvU3RhY2soKTt0aGlzLl9vYmouc3R5 bGUuaGVpZ2h0PSh0aGlzLl9tb2RhbCYmdWEuaWUoKTw3KT9WZWN0b3IyLmdldERv Y3VtZW50RGltZW5zaW9ucygpLnkrJ3B4JzpudWxsO2lmKHRoaXMuX29iaiYmdGhp cy5fb2JqLnN0eWxlLmRpc3BsYXkpe3RoaXMuX29iai5zdHlsZS52aXNpYmlsaXR5 PSdoaWRkZW4nO3RoaXMuX29iai5zdHlsZS5kaXNwbGF5PScnO3RoaXMucmVzZXRE aWFsb2dQb3NpdGlvbigpO3RoaXMuX29iai5zdHlsZS52aXNpYmlsaXR5PScnO3Ro aXMuX29iai5kaWFsb2c9dGhpczt9ZWxzZSB0aGlzLnJlc2V0RGlhbG9nUG9zaXRp b24oKTtjbGVhckludGVydmFsKHRoaXMuYWN0aXZlX2hpZGluZyk7dGhpcy5hY3Rp dmVfaGlkaW5nPXNldEludGVydmFsKHRoaXMuX2FjdGl2ZVJlc2l6ZS5iaW5kKHRo aXMpLDUwMCk7cmV0dXJuIHRoaXM7fSxfdXBkYXRlU2hpbTpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9zaGltJiZ0aGlzLl9zaGltLnNob3coKTt9LF9hY3RpdmVSZXNp emU6ZnVuY3Rpb24oKXtpZih0aGlzLmxhc3Rfb2Zmc2V0X2hlaWdodCE9dGhpcy5f Y29udGVudC5vZmZzZXRIZWlnaHQpe3RoaXMubGFzdF9vZmZzZXRfaGVpZ2h0PXRo aXMuX2NvbnRlbnQub2Zmc2V0SGVpZ2h0O3RoaXMucmVzZXREaWFsb2dQb3NpdGlv bigpO319LF9idWlsZERpYWxvZ0NvbnRhaW5lcjpmdW5jdGlvbigpe0NTUy5hZGRD bGFzcyh0aGlzLl9vYmosJ3BvcF9kaWFsb2cnKTtpZihMb2NhbGUuaXNSVEwoKSlD U1MuYWRkQ2xhc3ModGhpcy5fb2JqLCdwb3BfZGlhbG9nX3J0bCcpO3ZhciBtYXJr dXA7aWYoRGlhbG9nLl9pc1VzaW5nQ1NTQm9yZGVycygpKXttYXJrdXA9JzxkaXYg Y2xhc3M9InBvcF9jb250YWluZXJfYWR2YW5jZWQiPicrJzxkaXYgY2xhc3M9InBv cF9jb250ZW50IiBpZD0icG9wX2NvbnRlbnQiPjwvZGl2PicrJzwvZGl2Pic7fWVs c2UgbWFya3VwPSc8ZGl2IGNsYXNzPSJwb3BfY29udGFpbmVyIj4nKyc8ZGl2IGNs YXNzPSJwb3BfdmVydGljYWxzbGFiIj48L2Rpdj4nKyc8ZGl2IGNsYXNzPSJwb3Bf aG9yaXpvbnRhbHNsYWIiPjwvZGl2PicrJzxkaXYgY2xhc3M9InBvcF90b3BsZWZ0 Ij48L2Rpdj4nKyc8ZGl2IGNsYXNzPSJwb3BfdG9wcmlnaHQiPjwvZGl2PicrJzxk aXYgY2xhc3M9InBvcF9ib3R0b21yaWdodCI+PC9kaXY+JysnPGRpdiBjbGFzcz0i cG9wX2JvdHRvbWxlZnQiPjwvZGl2PicrJzxkaXYgY2xhc3M9InBvcF9jb250ZW50 IHBvcF9jb250ZW50X29sZCIgaWQ9InBvcF9jb250ZW50Ij48L2Rpdj4nKyc8L2Rp dj4nO0RPTS5zZXRDb250ZW50KHRoaXMuX3BvcHVwLEhUTUwobWFya3VwKSk7dmFy IGZyYW1lPURPTS5maW5kKHRoaXMuX3BvcHVwLCdkaXYucG9wX2NvbnRlbnQnKTtm cmFtZS5zZXRBdHRyaWJ1dGUoJ3RhYkluZGV4JywnMCcpO2ZyYW1lLnNldEF0dHJp YnV0ZSgncm9sZScsJ2FsZXJ0ZGlhbG9nJyk7dGhpcy5fZnJhbWU9dGhpcy5fY29u dGVudD1mcmFtZTt9LF9idWlsZERpYWxvZ0NvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIg bG9hZGluZz0kTignZGl2Jyx7Y2xhc3NOYW1lOidkaWFsb2dfbG9hZGluZyd9LCJZ XHUwMGZja2xlbml5b3IuLi4iKTt2YXIgdGl0bGVfaW5uZXI9JE4oJ3NwYW4nKTt2 YXIgdGl0bGU9JE4oJ2gyJyx7Y2xhc3NOYW1lOidkaWFsb2dfdGl0bGUgaGlkZGVu X2VsZW0nLGlkOid0aXRsZV8nK3RoaXMuX3VuaXF1ZUlEfSx0aXRsZV9pbm5lcik7 dmFyIHN1bW1hcnk9JE4oJ2Rpdicse2NsYXNzTmFtZTonZGlhbG9nX3N1bW1hcnkg aGlkZGVuX2VsZW0nfSk7dmFyIGJvZHk9JE4oJ2Rpdicse2NsYXNzTmFtZTonZGlh bG9nX2JvZHknfSk7dmFyIGJ1dHRvbnM9JE4oJ2RpdicpO3ZhciBidXR0b25fbWVz c2FnZT0kTignZGl2Jyx7Y2xhc3NOYW1lOidkaWFsb2dfYnV0dG9uc19tc2cnfSk7 dmFyIGJ1dHRvbl93cmFwcGVyPSROKCdkaXYnLHtjbGFzc05hbWU6J2RpYWxvZ19i dXR0b25zIGNsZWFyZml4IGhpZGRlbl9lbGVtJ30sW2J1dHRvbl9tZXNzYWdlLGJ1 dHRvbnNdKTt2YXIgZm9vdGVyPSROKCdkaXYnLHtjbGFzc05hbWU6J2RpYWxvZ19m b290ZXIgaGlkZGVuX2VsZW0nfSk7dmFyIGNvbnRlbnQ9JE4oJ2Rpdicse2NsYXNz TmFtZTonZGlhbG9nX2NvbnRlbnQnfSxbc3VtbWFyeSxib2R5LGJ1dHRvbl93cmFw cGVyLGZvb3Rlcl0pO3RoaXMuX25vZGVzPXtzdW1tYXJ5OnN1bW1hcnksYm9keTpi b2R5LGJ1dHRvbnM6YnV0dG9ucyxidXR0b25fbWVzc2FnZTpidXR0b25fbWVzc2Fn ZSxidXR0b25fd3JhcHBlcjpidXR0b25fd3JhcHBlcixmb290ZXI6Zm9vdGVyLGNv bnRlbnQ6Y29udGVudCx0aXRsZTp0aXRsZSx0aXRsZV9pbm5lcjp0aXRsZV9pbm5l cn07RE9NLnNldENvbnRlbnQodGhpcy5fZnJhbWUsW3RpdGxlLGNvbnRlbnQsbG9h ZGluZ10pO30scmVzZXREaWFsb2dQb3NpdGlvbjpmdW5jdGlvbigpe2lmKCF0aGlz Ll9wb3B1cClyZXR1cm47dGhpcy5fcmVzZXREaWFsb2dPYmooKTt0aGlzLl91cGRh dGVTaGltKCk7fSxfcmVzZXREaWFsb2dPYmo6ZnVuY3Rpb24oKXt2YXIgdG90YWxf bWFyZ2luPTIqRGlhbG9nLl9QQUdFX01BUkdJTjt2YXIgdmlld3BvcnRfZGltZW5z aW9ucz1WZWN0b3IyLmdldFZpZXdwb3J0RGltZW5zaW9ucygpO3ZhciB2aWV3cG9y dF93aWR0aD12aWV3cG9ydF9kaW1lbnNpb25zLngtdG90YWxfbWFyZ2luO3ZhciB2 aWV3cG9ydF9oZWlnaHQ9dmlld3BvcnRfZGltZW5zaW9ucy55LXRvdGFsX21hcmdp bjt2YXIgdG90YWxfaGFsb193aWR0aD0yKkRpYWxvZy5fSEFMT19XSURUSDt2YXIg Y29udGVudF9kaW1lbnNpb25zPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnMo dGhpcy5fY29udGVudCk7dmFyIGNvbnRlbnRfd2lkdGg9Y29udGVudF9kaW1lbnNp b25zLngrdG90YWxfaGFsb193aWR0aDt2YXIgY29udGVudF9oZWlnaHQ9Y29udGVu dF9kaW1lbnNpb25zLnkrdG90YWxfaGFsb193aWR0aDt2YXIgdG9wPXRoaXMuX3Rv cDt2YXIgZW1wdHlfaG9yaXpfc3BhY2U9dmlld3BvcnRfd2lkdGgtY29udGVudF93 aWR0aDt2YXIgZW1wdHlfdmVydGljYWxfc3BhY2U9dmlld3BvcnRfaGVpZ2h0LWNv bnRlbnRfaGVpZ2h0O2lmKGVtcHR5X3ZlcnRpY2FsX3NwYWNlPDApe3RvcD1EaWFs b2cuX1BBR0VfTUFSR0lOO31lbHNlIGlmKHRvcD5lbXB0eV92ZXJ0aWNhbF9zcGFj ZSl0b3A9RGlhbG9nLl9QQUdFX01BUkdJTisoTWF0aC5tYXgoZW1wdHlfdmVydGlj YWxfc3BhY2UsMCkvMik7dmFyIHNjcm9sbD1lbXB0eV9ob3Jpel9zcGFjZTwwfHxl bXB0eV92ZXJ0aWNhbF9zcGFjZTwwO0NTUy5jb25kaXRpb25DbGFzcyh0aGlzLl9v YmosJ2dlbmVyaWNfZGlhbG9nX2ZpeGVkX292ZXJmbG93JyxzY3JvbGwpO0NTUy5j b25kaXRpb25DbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJ2dlbmVyaWNf ZGlhbG9nX292ZXJmbG93X21vZGUnLHNjcm9sbCk7Q1NTLnNldFN0eWxlKHRoaXMu X3BvcHVwLCd0b3AnLHRvcCsncHgnKTtpZih0b3AtVmVjdG9yMi5nZXRFbGVtZW50 UG9zaXRpb24odGhpcy5fcG9wdXAsJ3ZpZXdwb3J0JykueT4xKXt0b3ArPVZlY3Rv cjIuZ2V0U2Nyb2xsUG9zaXRpb24oKS55O0NTUy5zZXRTdHlsZSh0aGlzLl9wb3B1 cCwndG9wJyx0b3ArJ3B4Jyk7fX0sX2ZhZGVPdXQ6ZnVuY3Rpb24odGVtcG9yYXJ5 KXtpZighdGhpcy5fcG9wdXApcmV0dXJuO3RyeXthbmltYXRpb24odGhpcy5fb2Jq KS5kdXJhdGlvbigwKS5jaGVja3BvaW50KCkudG8oJ29wYWNpdHknLDApLmhpZGUo KS5kdXJhdGlvbigyNTApLm9uZG9uZSh0aGlzLl9oaWRlLmJpbmQodGhpcyx0ZW1w b3JhcnkpKS5nbygpO31jYXRjaChlKXt0aGlzLl9oaWRlKHRlbXBvcmFyeSk7fX0s X2hpZGU6ZnVuY3Rpb24odGVtcG9yYXJ5KXtpZih0aGlzLl9vYmopdGhpcy5fb2Jq LnN0eWxlLmRpc3BsYXk9J25vbmUnO0NTUy5yZW1vdmVDbGFzcyhkb2N1bWVudC5k b2N1bWVudEVsZW1lbnQsJ2dlbmVyaWNfZGlhbG9nX292ZXJmbG93X21vZGUnKTt0 aGlzLl91cGRhdGVTaGltKCk7Y2xlYXJJbnRlcnZhbCh0aGlzLmFjdGl2ZV9oaWRp bmcpO2lmKHRoaXMuX2JvdHRvbSl7dmFyIGJzPURpYWxvZy5fYm90dG9tczticy5z cGxpY2UoYnMuaW5kZXhPZih0aGlzLl9ib3R0b20pLDEpO0RpYWxvZy5fdXBkYXRl TWF4Qm90dG9tKCk7fWlmKHRoaXMuX3ByZXZpb3VzX2ZvY3VzJiZkb2N1bWVudC5h Y3RpdmVFbGVtZW50JiZET00uY29udGFpbnModGhpcy5fb2JqLGRvY3VtZW50LmFj dGl2ZUVsZW1lbnQpKUlucHV0LmZvY3VzKHRoaXMuX3ByZXZpb3VzX2ZvY3VzKTtp Zih0ZW1wb3JhcnkpcmV0dXJuO3RoaXMuZGVzdHJveSgpO30sZGVzdHJveTpmdW5j dGlvbigpe3RoaXMuX3BvcEZyb21TdGFjaygpO2lmKHRoaXMuX29iail7RE9NLnJl bW92ZSh0aGlzLl9vYmopO3RoaXMuX29iaj1udWxsO3RoaXMuX3NoaW0mJnRoaXMu X3NoaW0uaGlkZSgpO3RoaXMuX3NoaW09bnVsbDt9dGhpcy5fY2xpY2tPbkVudGVy TGlzdGVuZXImJnRoaXMuX2NsaWNrT25FbnRlckxpc3RlbmVyLnJlbW92ZSgpO2lm KHRoaXMuX2Nsb3NlX2hhbmRsZXIpdGhpcy5fY2xvc2VfaGFuZGxlcih7cmV0dXJu X2RhdGE6dGhpcy5fcmV0dXJuX2RhdGF9KTt9LF9oYW5kbGVCdXR0b246ZnVuY3Rp b24oYnV0dG9uKXtpZih0eXBlb2YgYnV0dG9uPT0nc3RyaW5nJylidXR0b249RGlh bG9nLl9maW5kQnV0dG9uKHRoaXMuX2J1dHRvbnMsYnV0dG9uKTt2YXIgdmFsdWU9 RGlhbG9nLmNhbGxfb3JfZXZhbChidXR0b24sYnV0dG9uLmhhbmRsZXIpO2lmKHZh bHVlPT09ZmFsc2UpcmV0dXJuO2lmKGJ1dHRvbi5uYW1lPT0nY2FuY2VsJyl7dGhp cy5jYW5jZWwoKTt9ZWxzZSBpZihEaWFsb2cuY2FsbF9vcl9ldmFsKHRoaXMsdGhp cy5faGFuZGxlcix7YnV0dG9uOmJ1dHRvbn0pIT09ZmFsc2UpdGhpcy5oaWRlKCk7 fSxfc3VibWl0Rm9ybTpmdW5jdGlvbihtZXRob2QsdXJpLGJ1dHRvbil7dmFyIGRh dGE9dGhpcy5nZXRGb3JtRGF0YSgpO2lmKGJ1dHRvbilkYXRhW2J1dHRvbi5uYW1l XT1idXR0b24ubGFiZWw7aWYodGhpcy5fZXh0cmFfZGF0YSljb3B5UHJvcGVydGll cyhkYXRhLHRoaXMuX2V4dHJhX2RhdGEpO3ZhciBhc3luY19yZXF1ZXN0PW5ldyBB c3luY1JlcXVlc3QoKS5zZXRVUkkodXJpKS5zZXREYXRhKGRhdGEpLnNldE1ldGhv ZChtZXRob2QpLnNldE5lY3Rhck1vZHVsZURhdGFTYWZlKHRoaXMuX2NhdXNhbF9l bGVtKS5zZXRSZWFkT25seShtZXRob2Q9PSdHRVQnKTt0aGlzLnNldEFzeW5jKGFz eW5jX3JlcXVlc3QpO3JldHVybiBmYWxzZTt9LF9zZXRGcm9tTW9kZWw6ZnVuY3Rp b24ob3JpZ2luYWxfbW9kZWwpe3ZhciBtb2RlbD17fTtjb3B5UHJvcGVydGllcyht b2RlbCxvcmlnaW5hbF9tb2RlbCk7Zm9yKHZhciBwcm9wZXJ0eU5hbWUgaW4gbW9k ZWwpe2lmKHByb3BlcnR5TmFtZT09J29ubG9hZFJlZ2lzdGVyJyl7dGhpcy5vbmxv YWRSZWdpc3Rlcihtb2RlbFtwcm9wZXJ0eU5hbWVdKTtjb250aW51ZTt9dmFyIG11 dGF0b3I9dGhpc1snc2V0Jytwcm9wZXJ0eU5hbWUuc3Vic3RyKDAsMSkudG9VcHBl ckNhc2UoKStwcm9wZXJ0eU5hbWUuc3Vic3RyKDEpXTttdXRhdG9yLmFwcGx5KHRo aXMsQXJyYXlVdGlscy5jcmVhdGVGcm9tKG1vZGVsW3Byb3BlcnR5TmFtZV0pKTt9 fSxfdXBkYXRlQm90dG9tOmZ1bmN0aW9uKCl7dmFyIGJvdHRvbT1WZWN0b3IyLmdl dEVsZW1lbnREaW1lbnNpb25zKHRoaXMuX2NvbnRlbnQpLnkrVmVjdG9yMi5nZXRF bGVtZW50UG9zaXRpb24odGhpcy5fY29udGVudCkueTtEaWFsb2cuX2JvdHRvbXNb RGlhbG9nLl9ib3R0b21zLmxlbmd0aC0xXT1ib3R0b207RGlhbG9nLl91cGRhdGVN YXhCb3R0b20oKTt9LF9wdXNoT250b1N0YWNrOmZ1bmN0aW9uKCl7dmFyIHN0YWNr PURpYWxvZy5fc3RhY2s7aWYoIXN0YWNrLmxlbmd0aClBcmJpdGVyLmluZm9ybSgn bGF5ZXJfc2hvd24nLHt0eXBlOidEaWFsb2cnfSk7c3RhY2sucmVtb3ZlKHRoaXMp O3N0YWNrLnB1c2godGhpcyk7Zm9yKHZhciBpPXN0YWNrLmxlbmd0aC0yO2k+PTA7 aS0tKXt2YXIgcHJldl9kaWFsb2c9c3RhY2tbaV07aWYoIXByZXZfZGlhbG9nLl9p c19zdGFja2FibGUmJiFwcmV2X2RpYWxvZy5fYXN5bmNfcmVxdWVzdCl7cHJldl9k aWFsb2cuX2hpZGUoKTt9ZWxzZSBpZighcHJldl9kaWFsb2cuX3Nob3duX3doaWxl X3N0YWNrZWQpcHJldl9kaWFsb2cuX2hpZGUodHJ1ZSk7fX0sX3BvcEZyb21TdGFj azpmdW5jdGlvbigpe3ZhciBzdGFjaz1EaWFsb2cuX3N0YWNrO3ZhciB3YXNfdG9w PShzdGFja1tzdGFjay5sZW5ndGgtMV09PT10aGlzKTtzdGFjay5yZW1vdmUodGhp cyk7aWYoc3RhY2subGVuZ3RoKXtpZih3YXNfdG9wKXN0YWNrW3N0YWNrLmxlbmd0 aC0xXS5fc2hvd0RpYWxvZygpO31lbHNlIEFyYml0ZXIuaW5mb3JtKCdsYXllcl9o aWRkZW4nLHt0eXBlOidEaWFsb2cnfSk7fX0pO21vZHVsZS5leHBvcnRzPURpYWxv Zzt9KTsKX19lKCJkaWFsb2ciLFsiRGlhbG9nIl0sZnVuY3Rpb24oYixjKXt2YXIg YT1jKCdEaWFsb2cnKTtiLkRpYWxvZz1hO30sMyk7CmZ1bmN0aW9uIENvbnRleHR1 YWxEaWFsb2coYil7dmFyIGE9bmV3IERpYWxvZygpO2NvcHlfcHJvcGVydGllcyhh LENvbnRleHR1YWxEaWFsb2cucHJvdG90eXBlKTthLl9idWlsZERpYWxvZygpO2Eu X3NldEZyb21Nb2RlbChiKTtyZXR1cm4gYTt9Q29udGV4dHVhbERpYWxvZy5wcm90 b3R5cGU9e3NldENvbnRleHQ6ZnVuY3Rpb24oYSl7dGhpcy5fY29udGV4dD1hO3Ro aXMucmVzZXREaWFsb2dQb3NpdGlvbigpO3JldHVybiB0aGlzO30sX2J1aWxkRGlh bG9nQ29udGFpbmVyOmZ1bmN0aW9uKCl7Q1NTLmFkZENsYXNzKHRoaXMuX29iaiwn Y29udGV4dHVhbF9kaWFsb2cnKTt0aGlzLl9jb250ZW50PXRoaXMuX2ZyYW1lPSRO KCdkaXYnLHtjbGFzc05hbWU6J2NvbnRleHR1YWxfZGlhbG9nX2NvbnRlbnQnfSk7 dGhpcy5fYXJyb3c9JE4oJ2Rpdicse2NsYXNzTmFtZTonYXJyb3cnfSk7RE9NLnNl dENvbnRlbnQodGhpcy5fcG9wdXAsW3RoaXMuX2NvbnRlbnQsdGhpcy5fYXJyb3dd KTt9LF9yZXNldERpYWxvZ09iajpmdW5jdGlvbigpe2lmKCF0aGlzLl9jb250ZXh0 fHwhdGhpcy5fc2hvd2luZylyZXR1cm47dmFyIGc9VmVjdG9yMi5nZXRFbGVtZW50 UG9zaXRpb24odGhpcy5fY29udGV4dCk7dmFyIGs9dGhpcy5fY29udGV4dC5vZmZz ZXRXaWR0aCxoPXRoaXMuX2NvbnRleHQub2Zmc2V0SGVpZ2h0O3ZhciBsPWcueCxt PWcueStoO3ZhciBpPVZlY3RvcjIuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCkueDt2 YXIgaj1WZWN0b3IyLmdldFNjcm9sbFBvc2l0aW9uKCkueDt2YXIgZT1WZWN0b3Iy LmdldERvY3VtZW50RGltZW5zaW9ucygpLng7dmFyIGQ9VmVjdG9yMi5nZXRFbGVt ZW50RGltZW5zaW9ucyh0aGlzLl9wb3B1cCkueDt2YXIgZj0wO3ZhciBjO2lmKGs8 NjQpe2M9bCtrLzI7fWVsc2UgYz1sKzMyO2lmKGU+MCYmZTxkKXtmPS1sO31lbHNl e2lmKGk+MCYmbCtkPmoraSl7Zj0oaitpLWQpLWw7aWYobCtmPGopZj1qLWw7fWlm KGU+MCYmbCtkPmUpZj0oZS1kKS1sO31sKz1mO2lmKGMtbDwzMil7bD1jLTMyO2lm KGw8MClsPTA7fXZhciBiPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnModGhp cy5fYXJyb3cpLng7dmFyIGE9Yy1sLWIvMjtpZihhPDApYT0wO2lmKGE+ZC0zMilh PWQtMzI7Q1NTLnNldFN0eWxlKHRoaXMuX2Fycm93LCdtYXJnaW5MZWZ0JyxhKydw eCcpO25ldyBWZWN0b3IyKGwsbSwnZG9jdW1lbnQnKS5zZXRFbGVtZW50UG9zaXRp b24odGhpcy5fcG9wdXApO30sX3JlbmRlckRpYWxvZzpmdW5jdGlvbihhKXtpZih3 aW5kb3chPXRvcCl0aGlzLl9hdXRvX2ZvY3VzPWZhbHNlO0RpYWxvZy5wcm90b3R5 cGUuX3JlbmRlckRpYWxvZy5jYWxsKHRoaXMsYSk7fX07CihmdW5jdGlvbigpe3Zh ciBhPSdmYWNlYm9vay5kZXNrdG9wcGx1Z2luJztGYkRlc2t0b3BEZXRlY3Q9e21p bWVUeXBlOidhcHBsaWNhdGlvbi94LWZhY2Vib29rLWRlc2t0b3AtMScsaXNQbHVn aW5JbnN0YWxsZWQ6ZnVuY3Rpb24oKXt2YXIgZj1udWxsO2lmKHdpbmRvdy5BY3Rp dmVYT2JqZWN0KXt0cnl7Zj1uZXcgQWN0aXZlWE9iamVjdChhKTtpZihmKXJldHVy biB0cnVlO31jYXRjaChiKXt9fWVsc2UgaWYobmF2aWdhdG9yLnBsdWdpbnMpe25h dmlnYXRvci5wbHVnaW5zLnJlZnJlc2goZmFsc2UpO2Zvcih2YXIgYz0wLGQ9bmF2 aWdhdG9yLnBsdWdpbnMubGVuZ3RoO2M8ZDtjKyspe2Y9bmF2aWdhdG9yLnBsdWdp bnNbY107dmFyIGU9ZlswXTtpZihlJiZlLnR5cGU9PT10aGlzLm1pbWVUeXBlKXJl dHVybiB0cnVlO319cmV0dXJuIGZhbHNlO30scGF0Y2hMb2dpbkZvcm06ZnVuY3Rp b24oKXtpZih0aGlzLmlzUGx1Z2luSW5zdGFsbGVkKCkpe25ldyBBc3luY1JlcXVl c3QoJy9hamF4L2Rlc2t0b3AvbG9naW5tZXNzYWdlJykuc2VuZCgpO3ZhciBiPSQo J3BlcnNpc3RfYm94Jyk7aWYoYiliLmNoZWNrZWQ9dHJ1ZTt9fSxzZXRDb250ZXh0 dWFsRGlhbG9nOmZ1bmN0aW9uKGIpe3ZhciBkPSQoJ3BlcnNpc3RfYm94Jyk7aWYo IWQuY2hlY2tlZCl0aGlzLnRvZ2dsZVdhcm5pbmcoYik7dmFyIGM9ZnVuY3Rpb24o KXtkLmNoZWNrZWQ/Yi5oaWRlKCk6Yi5zaG93KCk7fTtFdmVudC5saXN0ZW4oZCwn Y2xpY2snLGMpO0V2ZW50Lmxpc3RlbihkLCdrZXlkb3duJyxjKTt9fTt9KSgpOwoo ZnVuY3Rpb24oKXtGYkRlc2t0b3BQbHVnaW49e19wbHVnaW46J19ub3RfY2hlY2tl ZCcsZ2V0UGx1Z2luOmZ1bmN0aW9uKCl7aWYodGhpcy5fcGx1Z2luPT09J19ub3Rf Y2hlY2tlZCcpe3RoaXMuX3BsdWdpbj1udWxsO2lmKEZiRGVza3RvcERldGVjdC5p c1BsdWdpbkluc3RhbGxlZCgpKXt2YXIgYT1ET00uY3JlYXRlKCdkaXYnKTtkb2N1 bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO0RPTS5zZXRDb250ZW50KGEsSFRNTCgn PG9iamVjdCBpZD0ia2l3aV9wbHVnaW4iICcrJ3R5cGU9IicrRmJEZXNrdG9wRGV0 ZWN0Lm1pbWVUeXBlKyciIHdpZHRoPSIwIiBoZWlnaHQ9IjAiPicrJzwvb2JqZWN0 PicpKTt0aGlzLl9wbHVnaW49JCgna2l3aV9wbHVnaW4nKTt9fXJldHVybiB0aGlz Ll9wbHVnaW47fSxsb2dvdXQ6ZnVuY3Rpb24oYil7Yj1ifHwiMCI7dmFyIGE9dGhp cy5nZXRQbHVnaW4oKTtpZihhKWEubG9nb3V0KGIpO30sc2hvdWxkU3VwcHJlc3NC ZWVwZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldFBsdWdpbigpO3JldHVybiBh JiYnaXNBcHBSdW5uaW5nJyBpbiBhJiZhLmlzQXBwUnVubmluZygpO30sc2hvdWxk U3VwcHJlc3NTaWRlYmFyOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRQbHVnaW4o KTtyZXR1cm4gYSYmJ2lzQXBwRG9ja2VkJyBpbiBhJiZhLmlzQXBwRG9ja2VkKCk7 fSx0cmFuc2ZlckF1dGhUb2tlbjpmdW5jdGlvbihiLGMpe2lmKGImJmIubGVuZ3Ro PjApe3ZhciBhPXRoaXMuZ2V0UGx1Z2luKCk7aWYoYSlhLnNldEFjY2Vzc1Rva2Vu KGIsYyk7fWlmKHRoaXMucmVkaXJlY3RIb21lKXdpbmRvdy5sb2NhdGlvbi5ocmVm PVVSSSgpLnNldFBhdGgoKS50b1N0cmluZygpO319O30pKCk7Cl9fZSgiYXN5bmMt c2lnbmFsIixbIkVudiJdLGZ1bmN0aW9uKGQsZixlLGMpe3ZhciBiPWYoJ0Vudicp O2Z1bmN0aW9uIGEoaCxnKXt0aGlzLmRhdGE9Z3x8e307aWYoYi50cmFja2luZ19k b21haW4mJmguY2hhckF0KDApPT0nLycpaD1iLnRyYWNraW5nX2RvbWFpbitoO3Ro aXMudXJpPWg7dGhpcy5oYW5kbGVyPW51bGw7fWEucHJvdG90eXBlLnNldEhhbmRs ZXI9ZnVuY3Rpb24oZyl7dGhpcy5oYW5kbGVyPWc7cmV0dXJuIHRoaXM7fTthLnBy b3RvdHlwZS5zZW5kPWZ1bmN0aW9uKCl7dmFyIGk9dGhpcy5oYW5kbGVyLGg9dGhp cy5kYXRhLG09dGhpcy51cmksbD1bXSxqPW5ldyBJbWFnZSgpLGc9ZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ3Bvc3RfZm9ybV9pZCcpO2guYXN5bmNTaWduYWw9TWF0 aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMDAwKSsxO2lmKGcpaC5wb3N0X2Zvcm1f aWQ9Zy52YWx1ZTtoLl9fdXNlcj1iLnVzZXI7aWYoYi5mYl9pc2IpaC5mYl9pc2I9 Yi5mYl9pc2I7Zm9yKHZhciBrIGluIGgpbC5wdXNoKGVuY29kZVVSSUNvbXBvbmVu dChrKSsnPScrZW5jb2RlVVJJQ29tcG9uZW50KGhba10pKTtpZihtLmluZGV4T2Yo Jz8nKT09LTEpbSs9Jz8nO20rPWwuam9pbignJicpO2lmKGkpai5vbmxvYWQ9ai5v bmVycm9yPShmdW5jdGlvbihvLG4pe3JldHVybiBmdW5jdGlvbigpe24oKG8uaGVp Z2h0PT0xKSk7fTt9KShqLGkpO2ouc3JjPW07cmV0dXJuIHRoaXM7fTtkLkFzeW5j U2lnbmFsPWUuZXhwb3J0cz1hO30sMyk7CmZ1bmN0aW9uIGRldGVjdF9icm9rZW5f cHJveHlfY2FjaGUoZCxhKXt2YXIgYj1nZXRDb29raWUoYSk7aWYoKGIhPWQpJiYo YiE9bnVsbCkmJihkIT0nMCcpKXt2YXIgYz17Yzonc2lfZGV0ZWN0X2Jyb2tlbl9w cm94eV9jYWNoZScsbTphKycgJytkKycgJytifTt2YXIgZT1uZXcgVVJJKCcvY29t bW9uL3NjcmliZV9lbmRwb2ludC5waHAnKS5nZXRRdWFsaWZpZWRVUkkoKS50b1N0 cmluZygpO25ldyBBc3luY1NpZ25hbChlLGMpLnNlbmQoKTt9fQpfX2UoImFqYXhw aXBlIixbImFyYml0ZXIiLCJBc3luY1JlcXVlc3QiLCJiaWctcGlwZSIsImRvbSIs IkVudiIsImNvcHlQcm9wZXJ0aWVzIl0sZnVuY3Rpb24oaSxrLGosaCl7dmFyIGI9 aygnYXJiaXRlcicpO3ZhciBjPWsoJ0FzeW5jUmVxdWVzdCcpO3ZhciBkPWsoJ2Jp Zy1waXBlJyk7dmFyIGU9aygnZG9tJyk7dmFyIGY9aygnRW52Jyk7dmFyIGc9aygn Y29weVByb3BlcnRpZXMnKTtmdW5jdGlvbiBhKG0sbCl7dGhpcy5fdXJpPW07dGhp cy5fcXVlcnlfZGF0YT1sO3RoaXMuX3JlcXVlc3Q9bmV3IGMoKTt0aGlzLl9jYW52 YXNfaWQ9bnVsbDt0aGlzLl9hbGxvd19jcm9zc19wYWdlX3RyYW5zaXRpb249dHJ1 ZTt9ZyhhLnByb3RvdHlwZSx7c2V0Q2FudmFzSWQ6ZnVuY3Rpb24obCl7dGhpcy5f Y2FudmFzX2lkPWw7cmV0dXJuIHRoaXM7fSxzZXRVUkk6ZnVuY3Rpb24obCl7dGhp cy5fdXJpPWw7cmV0dXJuIHRoaXM7fSxzZXREYXRhOmZ1bmN0aW9uKGwpe3RoaXMu X3F1ZXJ5X2RhdGE9bDtyZXR1cm4gdGhpczt9LGdldERhdGE6ZnVuY3Rpb24obCl7 cmV0dXJuIHRoaXMuX3F1ZXJ5X2RhdGE7fSxzZXRBbGxvd0Nyb3NzUGFnZVRyYW5z aXRpb246ZnVuY3Rpb24obCl7dGhpcy5fYWxsb3dfY3Jvc3NfcGFnZV90cmFuc2l0 aW9uPWw7cmV0dXJuIHRoaXM7fSxzZXRBcHBlbmQ6ZnVuY3Rpb24obCl7dGhpcy5f YXBwZW5kPWw7cmV0dXJuIHRoaXM7fSxzZW5kOmZ1bmN0aW9uKCl7dGhpcy5fcmVx dWVzdC5zZXRPcHRpb24oJ3VzZUlmcmFtZVRyYW5zcG9ydCcsdHJ1ZSkuc2V0VVJJ KHRoaXMuX3VyaSkuc2V0RGF0YShnKHthamF4cGlwZToxLGFqYXhwaXBlX3Rva2Vu OmYuYWpheHBpcGVfdG9rZW59LHRoaXMuX3F1ZXJ5X2RhdGEpKS5zZXRQcmVCb290 bG9hZEhhbmRsZXIodGhpcy5fcHJlQm9vdGxvYWRIYW5kbGVyLmJpbmQodGhpcykp LnNldEluaXRpYWxIYW5kbGVyKHRoaXMuX29uSW5pdGlhbFJlc3BvbnNlLmJpbmQo dGhpcykpLnNldEhhbmRsZXIodGhpcy5fb25SZXNwb25zZS5iaW5kKHRoaXMpKS5z ZXRNZXRob2QoJ0dFVCcpLnNldFJlYWRPbmx5KHRydWUpLnNldEFsbG93Q3Jvc3NQ YWdlVHJhbnNpdGlvbih0aGlzLl9hbGxvd19jcm9zc19wYWdlX3RyYW5zaXRpb24p O2EuX2N1cnJlbnRfcmVxdWVzdD10aGlzLl9yZXF1ZXN0O3RoaXMuX3JlcXVlc3Qu c2VuZCgpO3JldHVybiB0aGlzO30sX3ByZUJvb3Rsb2FkRmlyc3RSZXNwb25zZTpm dW5jdGlvbihsKXtyZXR1cm4gZmFsc2U7fSxfZmlyZURvbUNvbnRlbnRDYWxsYmFj azpmdW5jdGlvbigpe3RoaXMuX2FyYml0ZXIuaW5mb3JtKCdhamF4cGlwZS9kb21j b250ZW50X2NhbGxiYWNrJyx0cnVlLGIuQkVIQVZJT1JfU1RBVEUpO30sX2ZpcmVP bmxvYWRDYWxsYmFjazpmdW5jdGlvbigpe3RoaXMuX2FyYml0ZXIuaW5mb3JtKCdh amF4cGlwZS9vbmxvYWRfY2FsbGJhY2snLHRydWUsYi5CRUhBVklPUl9TVEFURSk7 fSxfaXNSZWxldmFudDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5fcmVxdWVzdD09 YS5fY3VycmVudF9yZXF1ZXN0fHx0aGlzLl9qc05vbkJsb2NrO30sX3ByZUJvb3Rs b2FkSGFuZGxlcjpmdW5jdGlvbihtKXt2YXIgbD1tLmdldFBheWxvYWQoKTtpZigh bHx8bC5yZWRpcmVjdHx8IXRoaXMuX2lzUmVsZXZhbnQobSkpcmV0dXJuIGZhbHNl O3ZhciBuPWZhbHNlO2lmKG0uaXNfZmlyc3QpeyF0aGlzLl9hcHBlbmQmJiF0aGlz Ll9kaXNwbGF5Q2FsbGJhY2smJmEuY2xlYXJDYW52YXModGhpcy5fY2FudmFzX2lk LHRoaXMuX2NvbnN0SGVpZ2h0KTt0aGlzLl9hcmJpdGVyPW5ldyBiKCk7bj10aGlz Ll9wcmVCb290bG9hZEZpcnN0UmVzcG9uc2UobSk7dGhpcy5waXBlPW5ldyBkKHth cmJpdGVyOnRoaXMuX2FyYml0ZXIscm9vdE5vZGVJRDp0aGlzLl9jYW52YXNfaWQs bGlkOnRoaXMuX3JlcXVlc3QubGlkLHJyRW5hYmxlZDptLnBheWxvYWQucm9hZHJ1 bm5lcl9lbmFibGVkLGlzQWpheDp0cnVlLGRvbUNvbnRlbnRDYWxsYmFjazp0aGlz Ll9maXJlRG9tQ29udGVudENhbGxiYWNrLmJpbmQodGhpcyksb25sb2FkQ2FsbGJh Y2s6dGhpcy5fZmlyZU9ubG9hZENhbGxiYWNrLmJpbmQodGhpcyksZG9tQ29udGVu dEV2dDonYWpheHBpcGUvZG9tY29udGVudF9jYWxsYmFjaycsb25sb2FkRXZ0Oidh amF4cGlwZS9vbmxvYWRfY2FsbGJhY2snLGpzTm9uQmxvY2s6dGhpcy5fanNOb25C bG9jayxkaXNwbGF5Q2FsbGJhY2s6dGhpcy5fZGlzcGxheUNhbGxiYWNrfSk7fXJl dHVybiBuO30sX3JlZGlyZWN0OmZ1bmN0aW9uKG0pe2lmKG0ucmVkaXJlY3Qpe2lm KG0uZm9yY2V8fCF0aGlzLmlzUGFnZUFjdGl2ZShtLnJlZGlyZWN0KSl7dmFyIGw9 WydhamF4cGlwZScsJ2FqYXhwaXBlX3Rva2VuJ10uY29uY2F0KHRoaXMuZ2V0U2Fu aXRpemVkUGFyYW1ldGVycygpKTtnb19vcl9yZXBsYWNlKHdpbmRvdy5sb2NhdGlv bixVUkkobS5yZWRpcmVjdCkucmVtb3ZlUXVlcnlEYXRhKGwpLHRydWUpO31lbHNl IFBhZ2VUcmFuc2l0aW9ucy5nbyhtLnJlZGlyZWN0LHRydWUpO3JldHVybiB0cnVl O31lbHNlIHJldHVybiBmYWxzZTt9LGlzUGFnZUFjdGl2ZTpmdW5jdGlvbihsKXty ZXR1cm4gdHJ1ZTt9LGdldFNhbml0aXplZFBhcmFtZXRlcnM6ZnVuY3Rpb24oKXty ZXR1cm4gW107fSxfdmVyc2lvbkNoZWNrOmZ1bmN0aW9uKGwpe3JldHVybiB0cnVl O30sX29uSW5pdGlhbFJlc3BvbnNlOmZ1bmN0aW9uKG0pe3ZhciBsPW0uZ2V0UGF5 bG9hZCgpO2lmKCF0aGlzLl9pc1JlbGV2YW50KG0pKXJldHVybiBmYWxzZTtpZigh bClyZXR1cm4gdHJ1ZTtpZih0aGlzLl9yZWRpcmVjdChsKXx8IXRoaXMuX3ZlcnNp b25DaGVjayhsKSlyZXR1cm4gZmFsc2U7cmV0dXJuIHRydWU7fSxfcHJvY2Vzc0Zp cnN0UmVzcG9uc2U6ZnVuY3Rpb24obSl7dmFyIGw9bS5nZXRQYXlsb2FkKCk7aWYo Z2UodGhpcy5fY2FudmFzX2lkKSYmbC5jYW52YXNfY2xhc3MhPT1udWxsKUNTUy5z ZXRDbGFzcyh0aGlzLl9jYW52YXNfaWQsbC5jYW52YXNfY2xhc3MpO30sc2V0Rmly c3RSZXNwb25zZUNhbGxiYWNrOmZ1bmN0aW9uKGwpe3RoaXMuX2ZpcnN0UmVzcG9u c2VDYWxsYmFjaz1sO3JldHVybiB0aGlzO30sc2V0Rmlyc3RSZXNwb25zZUhhbmRs ZXI6ZnVuY3Rpb24obCl7dGhpcy5fcHJvY2Vzc0ZpcnN0UmVzcG9uc2U9bDtyZXR1 cm4gdGhpczt9LF9vblJlc3BvbnNlOmZ1bmN0aW9uKG0pe3ZhciBsPW0ucGF5bG9h ZDtpZighdGhpcy5faXNSZWxldmFudChtKSlyZXR1cm4gYy5zdXBwcmVzc09ubG9h ZFRva2VuO2lmKG0uaXNfZmlyc3Qpe3RoaXMuX3Byb2Nlc3NGaXJzdFJlc3BvbnNl KG0pO3RoaXMuX2ZpcnN0UmVzcG9uc2VDYWxsYmFjayYmdGhpcy5fZmlyc3RSZXNw b25zZUNhbGxiYWNrKCk7bC5wcm92aWRlcz1sLnByb3ZpZGVzfHxbXTtsLnByb3Zp ZGVzLnB1c2goJ3VpcGFnZV9vbmxvYWQnKTtpZih0aGlzLl9hcHBlbmQpbC5hcHBl bmQ9dGhpcy5fY2FudmFzX2lkO31pZihsKXtpZignY29udGVudCcgaW4gbC5jb250 ZW50JiZ0aGlzLl9jYW52YXNfaWQhPT1udWxsJiZ0aGlzLl9jYW52YXNfaWQhPSdj b250ZW50Jyl7bC5jb250ZW50W3RoaXMuX2NhbnZhc19pZF09bC5jb250ZW50LmNv bnRlbnQ7ZGVsZXRlIGwuY29udGVudC5jb250ZW50O31kLnBhZ2VsZXRfaWRzW2wu aWRdPTE7dGhpcy5waXBlLm9uUGFnZWxldEFycml2ZShsKTt9aWYobS5pc19sYXN0 KWEucmVzdG9yZUNhbnZhcyh0aGlzLl9jYW52YXNfaWQsdGhpcy5fY29uc3RIZWln aHQpO3JldHVybiBjLnN1cHByZXNzT25sb2FkVG9rZW47fSxzZXROZWN0YXJNb2R1 bGVEYXRhU2FmZTpmdW5jdGlvbihsKXt0aGlzLl9yZXF1ZXN0LnNldE5lY3Rhck1v ZHVsZURhdGFTYWZlKGwpO3JldHVybiB0aGlzO30sc2V0RmluYWxseUhhbmRsZXI6 ZnVuY3Rpb24obCl7dGhpcy5fcmVxdWVzdC5zZXRGaW5hbGx5SGFuZGxlcihsKTty ZXR1cm4gdGhpczt9LHNldEVycm9ySGFuZGxlcjpmdW5jdGlvbihsKXt0aGlzLl9y ZXF1ZXN0LnNldEVycm9ySGFuZGxlcihsKTtyZXR1cm4gdGhpczt9LGFib3J0OmZ1 bmN0aW9uKCl7dGhpcy5fcmVxdWVzdC5hYm9ydCgpO2lmKGEuX2N1cnJlbnRfcmVx dWVzdD09dGhpcy5fcmVxdWVzdClhLl9jdXJyZW50X3JlcXVlc3Q9bnVsbDt0aGlz Ll9yZXF1ZXN0PW51bGw7cmV0dXJuIHRoaXM7fSxzZXRKU05vbkJsb2NrOmZ1bmN0 aW9uKGwpe3RoaXMuX2pzTm9uQmxvY2s9bDtyZXR1cm4gdGhpczt9LHNldERpc3Bs YXlDYWxsYmFjazpmdW5jdGlvbihsKXt0aGlzLl9kaXNwbGF5Q2FsbGJhY2s9bDty ZXR1cm4gdGhpczt9LHNldENvbnN0SGVpZ2h0OmZ1bmN0aW9uKGwpe3RoaXMuX2Nv bnN0SGVpZ2h0PWw7cmV0dXJuIHRoaXM7fSxnZXRBc3luY1JlcXVlc3Q6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5fcmVxdWVzdDt9fSk7ZyhhLHtjbGVhckNhbnZhczpm dW5jdGlvbihsLG0pe3ZhciBuPWdlKGwpO2lmKG4pe2lmKCFtKW4uc3R5bGUubWlu SGVpZ2h0PSc2MDBweCc7ZS5lbXB0eShuKTt9fSxyZXN0b3JlQ2FudmFzOmZ1bmN0 aW9uKGwsbSl7dmFyIG49Z2UobCk7aWYobilpZighbSluLnN0eWxlLm1pbkhlaWdo dD0nMTAwcHgnO30sZ2V0Q3VycmVudFJlcXVlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4g YS5fY3VycmVudF9yZXF1ZXN0O30sc2V0Q3VycmVudFJlcXVlc3Q6ZnVuY3Rpb24o bCl7YS5fY3VycmVudF9yZXF1ZXN0PWw7fSxpc0FjdGl2ZU9uUGFnZTpmdW5jdGlv bihsKXtyZXR1cm4gZi5hamF4cGlwZV9lbmFibGVkO319KTtpLkFqYXhQaXBlUmVx dWVzdD1qLmV4cG9ydHM9YTt9LDMpOwpfX2UoImdvT3JSZXBsYWNlIixbInVyaSJd LGZ1bmN0aW9uKGMsZixlLGIpe3ZhciBhPWYoInVyaSIpO2Z1bmN0aW9uIGQoZyxq LGkpe3ZhciBrPW5ldyBhKGopO2lmKGcucGF0aG5hbWU9PScvJyYmay5nZXRQYXRo KCkhPScvJyYmay5pc1F1aWNrbGluZ0VuYWJsZWQoKSl7dmFyIGg9Zy5zZWFyY2g/ e306e3E6Jyd9O2s9bmV3IGEoKS5zZXRQYXRoKCcvJykuc2V0UXVlcnlEYXRhKGgp LnNldEZyYWdtZW50KGsuZ2V0VW5xdWFsaWZpZWRVUkkoKSkudG9TdHJpbmcoKTtq PWsudG9TdHJpbmcoKTt9aWYoaSYmISh1YS5pZSgpPDgpKXtnLnJlcGxhY2Uoaik7 fWVsc2UgaWYoZy5ocmVmPT1qKXtnLnJlbG9hZCgpO31lbHNlIGcuaHJlZj1qO31l LmV4cG9ydHM9ZDt9KTsKX19lKCJjb21wdXRlUmVsYXRpdmVVUkkiLFsiYXJyYXkt ZXh0ZW5zaW9ucyIsInVyaSIsInV0aWwiLCJpc0VtcHR5Il0sZnVuY3Rpb24oZixp LGgsZSl7aSgiYXJyYXktZXh0ZW5zaW9ucyIpO3ZhciBhPWkoInVyaSIpO3ZhciBi PWkoInV0aWwiKTt2YXIgZz1pKCJpc0VtcHR5Iik7ZnVuY3Rpb24gYyhrLGope2lm KCFqKXJldHVybiBrO2lmKGouY2hhckF0KDApPT0nLycpcmV0dXJuIGo7dmFyIGw9 ay5zcGxpdCgnLycpLnNsaWNlKDAsLTEpO2xbMF0hPT0nJztqLnNwbGl0KCcvJyku Zm9yRWFjaChmdW5jdGlvbihtKXtpZighKG09PScuJykpaWYobT09Jy4uJyl7aWYo bC5sZW5ndGg+MSlsPWwuc2xpY2UoMCwtMSk7fWVsc2UgbC5wdXNoKG0pO30pO3Jl dHVybiBsLmpvaW4oJy8nKTt9ZnVuY3Rpb24gZChtLGspe3ZhciBuPW5ldyBhKCks bD1rO209bmV3IGEobSk7az1uZXcgYShrKTtpZihrLmdldERvbWFpbigpJiYhay5p c0ZhY2Vib29rVVJJKCkpcmV0dXJuIGw7dmFyIG89bTt2YXIgaj1bJ1Byb3RvY29s JywnRG9tYWluJywnUG9ydCcsJ1BhdGgnLCdRdWVyeURhdGEnLCdGcmFnbWVudCdd O2ouZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgcD1xPT0nUGF0aCcmJm89PT1tO2lm KHApbi5zZXRQYXRoKGMobS5nZXRQYXRoKCksay5nZXRQYXRoKCkpKTtpZighZyhr WydnZXQnK3FdKCkpKW89aztpZighcCluWydzZXQnK3FdKG9bJ2dldCcrcV0oKSk7 fSk7cmV0dXJuIG47fWguZXhwb3J0cz1kO30pOwpfX2UoIkhpc3RvcnlNYW5hZ2Vy IixbImV2ZW50LWV4dGVuc2lvbnMiLCJmdW5jdGlvbi1leHRlbnNpb25zIiwiY29v a2llIiwiRW52IiwidWEiLCJ1cmkiLCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9u KGcsaSxoLGYpe2koImV2ZW50LWV4dGVuc2lvbnMiKTtpKCJmdW5jdGlvbi1leHRl bnNpb25zIik7dmFyIGE9aSgiY29va2llIik7dmFyIGI9aSgiRW52Iik7dmFyIGo9 aSgidWEiKTt2YXIgZD1pKCJ1cmkiKTt2YXIgZT1pKCJjb3B5UHJvcGVydGllcyIp O3ZhciBjPXtfSUZSQU1FX0JBU0VfVVJJOidodHRwOi8vc3RhdGljLmFrLmZhY2Vi b29rLmNvbS9jb21tb24vaGlzdG9yeV9tYW5hZ2VyLnBocCcsaGlzdG9yeTpudWxs LGN1cnJlbnQ6MCxmcmFnbWVudDpudWxsLF9zZXRJZnJhbWVTcmNGcmFnbWVudDpm dW5jdGlvbihsKXtsPWwudG9TdHJpbmcoKTt2YXIgaz1jLmhpc3RvcnkubGVuZ3Ro LTE7Yy5pZnJhbWUuc3JjPWMuX0lGUkFNRV9CQVNFX1VSSSsnP3xpbmRleD0nK2sr JyMnK2VuY29kZVVSSUNvbXBvbmVudChsKTtyZXR1cm4gYzt9LGdldElmcmFtZVNy Y0ZyYWdtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChk KGMuaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQubG9jYXRpb24uaHJlZiku Z2V0RnJhZ21lbnQoKSk7fSxuZXh0ZnJhbWU6ZnVuY3Rpb24oayxsKXtpZihsKXtj Ll9zZXRJZnJhbWVTcmNGcmFnbWVudChrKTtyZXR1cm47fWlmKGshPT11bmRlZmlu ZWQpe2MuaWZyYW1lUXVldWUucHVzaChrKTt9ZWxzZXtjLmlmcmFtZVF1ZXVlLnNw bGljZSgwLDEpO2MuaWZyYW1lVGltZW91dD1udWxsO2MuY2hlY2tVUkkoKTt9aWYo Yy5pZnJhbWVRdWV1ZS5sZW5ndGgmJiFjLmlmcmFtZVRpbWVvdXQpe3ZhciBtPWMu aWZyYW1lUXVldWVbMF07Yy5pZnJhbWVUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rp b24oKXtjLl9zZXRJZnJhbWVTcmNGcmFnbWVudChtKTt9LDEwMCxmYWxzZSk7fX0s aXNJbml0aWFsaXplZDpmdW5jdGlvbigpe3JldHVybiAhIWMuX2luaXRpYWxpemVk O30saW5pdDpmdW5jdGlvbigpe2lmKCFiLkFMTE9XX1RSQU5TSVRJT05fSU5fSUZS QU1FJiZ3aW5kb3chPXdpbmRvdy50b3ApcmV0dXJuO2lmKGMuX2luaXRpYWxpemVk KXJldHVybiBjO3ZhciBsPWQoKTt2YXIgaz1sLmdldEZyYWdtZW50KCl8fCcnO2lm KGsuY2hhckF0KDApPT09JyEnKXtrPWsuc3Vic3RyKDEpO2wuc2V0RnJhZ21lbnQo ayk7fWlmKGQuZ2V0UmVxdWVzdFVSSShmYWxzZSkuZ2V0UHJvdG9jb2woKS50b0xv d2VyQ2FzZSgpPT0naHR0cHMnKWMuX0lGUkFNRV9CQVNFX1VSST0naHR0cHM6Ly9z LXN0YXRpYy5hay5mYWNlYm9vay5jb20vY29tbW9uL2hpc3RvcnlfbWFuYWdlci5w aHAnO2UoYyx7X2luaXRpYWxpemVkOnRydWUsZnJhZ21lbnQ6ayxvcmlnX2ZyYWdt ZW50OmssaGlzdG9yeTpbbF0sY2FsbGJhY2tzOltdLGxhc3RDaGFuZ2VkOkRhdGUu bm93KCksY2Fub25pY2FsOmQoJyMnKSxmcmFnbWVudFRpbWVvdXQ6bnVsbCx1c2Vy OjAsaWZyYW1lVGltZW91dDpudWxsLGlmcmFtZVF1ZXVlOltdLGVuYWJsZWQ6dHJ1 ZSxkZWJ1ZzpiYWdvZmhvbGRpbmd9KTtpZih3aW5kb3cuaGlzdG9yeSYmaGlzdG9y eS5wdXNoU3RhdGUpe3RoaXMubGFzdFVSST1kb2N1bWVudC5VUkw7d2luZG93Lmhp c3RvcnkucmVwbGFjZVN0YXRlKHRoaXMubGFzdFVSSSxudWxsKTtFdmVudC5saXN0 ZW4od2luZG93LCdwb3BzdGF0ZScsZnVuY3Rpb24obSl7aWYobSYmbS5zdGF0ZSYm Yy5sYXN0VVJJIT1tLnN0YXRlKXtjLmxhc3RVUkk9bS5zdGF0ZTtjLmxhc3RDaGFu Z2VkPURhdGUubm93KCk7Yy5ub3RpZnkoZChtLnN0YXRlKS5nZXRVbnF1YWxpZmll ZFVSSSgpLnRvU3RyaW5nKCkpO319LmJpbmQoYykpO2lmKGouc2FmYXJpKCk8NTM0 fHxqLmNocm9tZSgpPD0xMyl7c2V0SW50ZXJ2YWwoYy5jaGVja1VSSSw0MixmYWxz ZSk7Yy5fdXBkYXRlUmVmZXJlclVSSSh0aGlzLmxhc3RVUkkpO31yZXR1cm4gYzt9 Yy5fdXBkYXRlUmVmZXJlclVSSShkLmdldFJlcXVlc3RVUkkoZmFsc2UpKTtpZihq LnNhZmFyaSgpPDUwMHx8ai5maXJlZm94KCk8Mil7Yy5lbmFibGVkPWZhbHNlO3Jl dHVybiBjO31pZihqLmllKCk8OCl7Yy5pZnJhbWU9ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnaWZyYW1lJyk7ZShjLmlmcmFtZS5zdHlsZSx7d2lkdGg6JzAnLGhlaWdo dDonMCcsZnJhbWVib3JkZXI6JzAnLGxlZnQ6JzAnLHRvcDonMCcscG9zaXRpb246 J2Fic29sdXRlJ30pO2MuX3NldElmcmFtZVNyY0ZyYWdtZW50KGspO2RvY3VtZW50 LmJvZHkuaW5zZXJ0QmVmb3JlKGMuaWZyYW1lLGRvY3VtZW50LmJvZHkuZmlyc3RD aGlsZCk7fWVsc2UgaWYoJ29uaGFzaGNoYW5nZScgaW4gd2luZG93KXtFdmVudC5s aXN0ZW4od2luZG93LCdoYXNoY2hhbmdlJyxmdW5jdGlvbigpe2MuY2hlY2tVUkku YmluZChjKS5kZWZlcigpO30pO31lbHNlIHNldEludGVydmFsKGMuY2hlY2tVUkks NDIsZmFsc2UpO3JldHVybiBjO30scmVnaXN0ZXJVUklIYW5kbGVyOmZ1bmN0aW9u KGspe2MuY2FsbGJhY2tzLnB1c2goayk7cmV0dXJuIGM7fSxzZXRDYW5vbmljYWxM b2NhdGlvbjpmdW5jdGlvbihrKXtjLmNhbm9uaWNhbD1kKGspO3JldHVybiBjO30s bm90aWZ5OmZ1bmN0aW9uKG0pe2lmKG09PWMub3JpZ19mcmFnbWVudCltPWMuY2Fu b25pY2FsLmdldEZyYWdtZW50KCk7Zm9yKHZhciBsPTA7bDxjLmNhbGxiYWNrcy5s ZW5ndGg7bCsrKXRyeXtpZihjLmNhbGxiYWNrc1tsXShtKSlyZXR1cm4gdHJ1ZTt9 Y2F0Y2goayl7fXJldHVybiBmYWxzZTt9LGNoZWNrVVJJOmZ1bmN0aW9uKCl7aWYo RGF0ZS5ub3coKS1jLmxhc3RDaGFuZ2VkPDQwMClyZXR1cm47aWYod2luZG93Lmhp c3RvcnkmJmhpc3RvcnkucHVzaFN0YXRlKXt2YXIgbj1kKGRvY3VtZW50LlVSTCku cmVtb3ZlUXVlcnlEYXRhKCdyZWYnKS50b1N0cmluZygpO3ZhciBtPWQoYy5sYXN0 VVJJKS5yZW1vdmVRdWVyeURhdGEoJ3JlZicpLnRvU3RyaW5nKCk7aWYobiE9bSl7 Yy5sYXN0Q2hhbmdlZD1EYXRlLm5vdygpO2MubGFzdFVSST1uO2lmKGouc2FmYXJp KCk8NTM0KWMuX3VwZGF0ZVJlZmVyZXJVUkkobik7Yy5ub3RpZnkoZChuKS5nZXRV bnF1YWxpZmllZFVSSSgpLnRvU3RyaW5nKCkpO31yZXR1cm47fWlmKGouaWUoKTw4 JiZjLmlmcmFtZVF1ZXVlLmxlbmd0aClyZXR1cm47aWYoai5zYWZhcmkoKSYmd2lu ZG93Lmhpc3RvcnkubGVuZ3RoPT0yMDApe2lmKCFjLndhcm5lZCljLndhcm5lZD10 cnVlO3JldHVybjt9dmFyIGs9ZCgpLmdldEZyYWdtZW50KCk7aWYoay5jaGFyQXQo MCk9PSchJylrPWsuc3Vic3RyKDEpO2lmKGouaWUoKTw4KWs9Yy5nZXRJZnJhbWVT cmNGcmFnbWVudCgpO2s9ay5yZXBsYWNlKC8lMjMvZywnIycpO2lmKGshPWMuZnJh Z21lbnQucmVwbGFjZSgvJTIzL2csJyMnKSl7Yy5kZWJ1ZyhbaywnIHZzICcsYy5m cmFnbWVudCwnd2hsOiAnLHdpbmRvdy5oaXN0b3J5Lmxlbmd0aCwnUUhMOiAnLGMu aGlzdG9yeS5sZW5ndGhdLmpvaW4oJyAnKSk7Zm9yKHZhciBsPWMuaGlzdG9yeS5s ZW5ndGgtMTtsPj0wOy0tbClpZihjLmhpc3RvcnlbbF0uZ2V0RnJhZ21lbnQoKS5y ZXBsYWNlKC8lMjMvZywnIycpPT1rKWJyZWFrOysrYy51c2VyO2lmKGw+PTApe2Mu Z28obC1jLmN1cnJlbnQpO31lbHNlIGMuZ28oJyMnK2spOy0tYy51c2VyO319LF91 cGRhdGVSZWZlcmVyVVJJOmZ1bmN0aW9uKG8pe289by50b1N0cmluZygpO2lmKG8u Y2hhckF0KDApIT0nLycmJm8uaW5kZXhPZignLy8nKT09LTEpcmV0dXJuO3ZhciBu PW5ldyBkKHdpbmRvdy5sb2NhdGlvbik7aWYobi5pc0ZhY2Vib29rVVJJKCkpe3Zh ciBrPW4uZ2V0UGF0aCgpK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2g7fWVsc2UgdmFy IGs9Jyc7dmFyIG09ZChvKS5nZXRRdWFsaWZpZWRVUkkoKS5zZXRGcmFnbWVudChr KS50b1N0cmluZygpO3ZhciBsPTIwNDg7aWYobS5sZW5ndGg+bCltPW0uc3Vic3Ry aW5nKDAsbCkrJy4uLic7YS5zZXQoJ3gtcmVmZXJlcicsbSk7fSxnbzpmdW5jdGlv bihtLG8scCl7aWYod2luZG93Lmhpc3RvcnkmJmhpc3RvcnkucHVzaFN0YXRlKXtv fHx0eXBlb2YobSk9PSdudW1iZXInO3ZhciByPWQobSkucmVtb3ZlUXVlcnlEYXRh KCdyZWYnKS50b1N0cmluZygpO2MubGFzdENoYW5nZWQ9RGF0ZS5ub3coKTt0aGlz Lmxhc3RVUkk9cjtpZihwKXt3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobSxu dWxsLHIpO31lbHNlIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShtLG51bGwscik7 aWYoai5zYWZhcmkoKTw1MzQpYy5fdXBkYXRlUmVmZXJlclVSSShtKTtyZXR1cm4g ZmFsc2U7fWMuZGVidWcoJ2dvOiAnK20pO2lmKG89PT11bmRlZmluZWQpbz10cnVl O2lmKCFjLmVuYWJsZWQpaWYoIW8pcmV0dXJuIGZhbHNlO2lmKHR5cGVvZihtKT09 J251bWJlcicpe2lmKCFtKXJldHVybiBmYWxzZTt2YXIgbD1tK2MuY3VycmVudDt2 YXIgbj1NYXRoLm1heCgwLE1hdGgubWluKGMuaGlzdG9yeS5sZW5ndGgtMSxsKSk7 Yy5jdXJyZW50PW47bD1jLmhpc3Rvcnlbbl0uZ2V0RnJhZ21lbnQoKXx8Yy5vcmln X2ZyYWdtZW50O2w9ZChsKS5yZW1vdmVRdWVyeURhdGEoJ3JlZicpLmdldFVucXVh bGlmaWVkVVJJKCkudG9TdHJpbmcoKTtjLmZyYWdtZW50PWw7Yy5sYXN0Q2hhbmdl ZD1EYXRlLm5vdygpO2lmKGouaWUoKTw4KXtpZihjLmZyYWdtZW50VGltZW91dClj bGVhclRpbWVvdXQoYy5mcmFnbWVudFRpbWVvdXQpO2MuX3RlbXBvcmFyeV9mcmFn bWVudD1sO2MuZnJhZ21lbnRUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXt3 aW5kb3cubG9jYXRpb24uaGFzaD0nIyEnK2w7ZGVsZXRlIGMuX3RlbXBvcmFyeV9m cmFnbWVudDt9LDc1MCxmYWxzZSk7aWYoIWMudXNlciljLm5leHRmcmFtZShsLHAp O31lbHNlIGlmKCFjLnVzZXIpZ29fb3JfcmVwbGFjZSh3aW5kb3cubG9jYXRpb24s d2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJyMnKVswXSsnIyEnK2wscCk7aWYo byljLm5vdGlmeShsKTtjLl91cGRhdGVSZWZlcmVyVVJJKGwpO3JldHVybiBmYWxz ZTt9bT1kKG0pO2lmKG0uZ2V0RG9tYWluKCk9PWQoKS5nZXREb21haW4oKSltPWQo JyMnK20uZ2V0VW5xdWFsaWZpZWRVUkkoKSk7dmFyIGs9Yy5oaXN0b3J5W2MuY3Vy cmVudF0uZ2V0RnJhZ21lbnQoKTt2YXIgcT1tLmdldEZyYWdtZW50KCk7aWYocT09 a3x8KGs9PWMub3JpZ19mcmFnbWVudCYmcT09Yy5jYW5vbmljYWwuZ2V0RnJhZ21l bnQoKSkpe2lmKG8pYy5ub3RpZnkocSk7Yy5fdXBkYXRlUmVmZXJlclVSSShxKTty ZXR1cm4gZmFsc2U7fWlmKHApYy5jdXJyZW50LS07dmFyIHM9KGMuaGlzdG9yeS5s ZW5ndGgtYy5jdXJyZW50KS0xO2MuaGlzdG9yeS5zcGxpY2UoYy5jdXJyZW50KzEs cyk7Yy5oaXN0b3J5LnB1c2goZChtKSk7cmV0dXJuIGMuZ28oMSxvLHApO30sZ2V0 Q3VycmVudEZyYWdtZW50OmZ1bmN0aW9uKCl7dmFyIGs9Yy5fdGVtcG9yYXJ5X2Zy YWdtZW50IT09dW5kZWZpbmVkP2MuX3RlbXBvcmFyeV9mcmFnbWVudDpkLmdldFJl cXVlc3RVUkkoZmFsc2UpLmdldEZyYWdtZW50KCk7cmV0dXJuIGs9PWMub3JpZ19m cmFnbWVudD9jLmNhbm9uaWNhbC5nZXRGcmFnbWVudCgpOms7fX07aC5leHBvcnRz PWM7fSk7Cl9fZSgiZG9tLXNjcm9sbCIsWyJkb20iLCJ2ZWN0b3IiLCJib290bG9h ZGVyIiwiZG9tLWNvcmUiLCJjc3MiXSxmdW5jdGlvbihoLGosaSxmKXt2YXIgYT1q KCdkb20nKS4kTjt2YXIgZT1qKCd2ZWN0b3InKTt2YXIgYj1qKCdib290bG9hZGVy Jyk7dmFyIGc9aignZG9tLWNvcmUnKS5nZTt2YXIgYz1qKCdjc3MnKTt2YXIgZD17 Z2V0U2Nyb2xsU3RhdGU6ZnVuY3Rpb24oKXt2YXIgbj1lLmdldFZpZXdwb3J0RGlt ZW5zaW9ucygpO3ZhciBrPWUuZ2V0RG9jdW1lbnREaW1lbnNpb25zKCk7dmFyIGw9 KGsueD5uLngpO3ZhciBtPShrLnk+bi55KTtsKz0wO20rPTA7cmV0dXJuIG5ldyBl KGwsbSk7fSxfc2Nyb2xsYmFyU2l6ZTpudWxsLF9pbml0U2Nyb2xsYmFyU2l6ZTpm dW5jdGlvbigpe3ZhciBrPWEoJ3AnKTtrLnN0eWxlLndpZHRoPScxMDAlJztrLnN0 eWxlLmhlaWdodD0nMjAwcHgnO3ZhciBsPWEoJ2RpdicpO2wuc3R5bGUucG9zaXRp b249J2Fic29sdXRlJztsLnN0eWxlLnRvcD0nMHB4JztsLnN0eWxlLmxlZnQ9JzBw eCc7bC5zdHlsZS52aXNpYmlsaXR5PSdoaWRkZW4nO2wuc3R5bGUud2lkdGg9JzIw MHB4JztsLnN0eWxlLmhlaWdodD0nMTUwcHgnO2wuc3R5bGUub3ZlcmZsb3c9J2hp ZGRlbic7bC5hcHBlbmRDaGlsZChrKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk KGwpO3ZhciBtPWsub2Zmc2V0V2lkdGg7bC5zdHlsZS5vdmVyZmxvdz0nc2Nyb2xs Jzt2YXIgbj1rLm9mZnNldFdpZHRoO2lmKG09PW4pbj1sLmNsaWVudFdpZHRoO2Rv Y3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobCk7ZC5fc2Nyb2xsYmFyU2l6ZT1tLW47 fSxnZXRTY3JvbGxiYXJTaXplOmZ1bmN0aW9uKCl7aWYoZC5fc2Nyb2xsYmFyU2l6 ZT09PW51bGwpZC5faW5pdFNjcm9sbGJhclNpemUoKTtyZXR1cm4gZC5fc2Nyb2xs YmFyU2l6ZTt9LHNjcm9sbFRvOmZ1bmN0aW9uKHAsayxuLGwsbSl7aWYodHlwZW9m IGs9PSd1bmRlZmluZWQnfHxrPT09dHJ1ZSlrPTc1MDtpZighKHAgaW5zdGFuY2Vv ZiBlKSl7dmFyIHE9ZS5nZXRTY3JvbGxQb3NpdGlvbigpLng7dmFyIHI9ZS5nZXRF bGVtZW50UG9zaXRpb24oJChwKSkueTtwPW5ldyBlKHEsciwnZG9jdW1lbnQnKTtp ZighbCl7dmFyIG89ZygnYmx1ZUJhcicpO2lmKG8mJmMuaXNGaXhlZChvKSlwLnkt PWUuZ2V0RWxlbWVudERpbWVuc2lvbnMobykueS8obj8yOjEpO319aWYobil7cC55 LT1lLmdldFZpZXdwb3J0RGltZW5zaW9ucygpLnkvMjt9ZWxzZSBpZihsKXtwLnkt PWUuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCkueTtwLnkrPWw7fXA9cC5jb252ZXJ0 VG8oJ2RvY3VtZW50Jyk7aWYoayl7Yi5sb2FkQ29tcG9uZW50cygnYW5pbWF0aW9u JyxmdW5jdGlvbigpe3ZhciBzPWRvY3VtZW50LmJvZHk7YW5pbWF0aW9uKHMpLnRv KCdzY3JvbGxUb3AnLHAueSkudG8oJ3Njcm9sbExlZnQnLHAueCkuZWFzZShhbmlt YXRpb24uZWFzZS5lbmQpLmR1cmF0aW9uKGspLm9uZG9uZShtKS5nbygpO30pO31l bHNlIGlmKHdpbmRvdy5zY3JvbGxUbyl7d2luZG93LnNjcm9sbFRvKHAueCxwLnkp O20mJm0oKTt9fX07aC5ET01TY3JvbGw9aS5leHBvcnRzPWQ7fSwzKTsKX19lKCJs aW5rLWNvbnRyb2xsZXIiLFsiZXZlbnQtZXh0ZW5zaW9ucyIsIkRhdGFTdG9yZSIs InBhcmVudCIsInRyYWNrUmVmZXJyZXIiXSxmdW5jdGlvbihqLGwsayxpKXtsKCdl dmVudC1leHRlbnNpb25zJyk7dmFyIGE9bCgnRGF0YVN0b3JlJyk7dmFyIGI9bCgn cGFyZW50Jyk7dmFyIG09bCgndHJhY2tSZWZlcnJlcicpO3ZhciBjPSdMaW5rQ29u dHJvbGxlckhhbmRsZXInO3ZhciBnPVtdO3ZhciBlPVtdO2Z1bmN0aW9uIGQoZXZl bnQpe3ZhciBwPWIuYnlUYWcoZXZlbnQuZ2V0VGFyZ2V0KCksJ2EnKTt2YXIgbj1w JiZwLmdldEF0dHJpYnV0ZSgnaHJlZicsMik7aWYoIW58fHAucmVsfHwhaChuKXx8 YS5nZXQocCxjKSlyZXR1cm47dmFyIG89RXZlbnQubGlzdGVuKHAsJ2NsaWNrJyxm dW5jdGlvbihxKXtpZihuLmNoYXJBdChuLmxlbmd0aC0xKT09JyMnKXtxLnByZXZl bnQoKTtyZXR1cm47fW0ocCxuKTtmKHAscSk7fSk7YS5zZXQocCxjLG8pO31mdW5j dGlvbiBmKHEsZXZlbnQpe2lmKHEudGFyZ2V0fHxldmVudC5nZXRNb2RpZmllcnMo KS5hbnl8fChldmVudC53aGljaCYmZXZlbnQud2hpY2ghPTEpKXJldHVybjt2YXIg bj1nLmNvbmNhdChlKTtmb3IodmFyIG89MCxwPW4ubGVuZ3RoO288cDtvKyspaWYo bltvXShxLGV2ZW50KT09PWZhbHNlKXJldHVybiBldmVudC5raWxsKCk7fWZ1bmN0 aW9uIGgobil7dmFyIG89bi5tYXRjaCgvXihcdyspOi8pO3JldHVybiAhb3x8b1sx XS5tYXRjaCgvXmh0dHAvaSk7fWouTGlua0NvbnRyb2xsZXI9ay5leHBvcnRzPXty ZWdpc3RlckhhbmRsZXI6ZnVuY3Rpb24obil7Zy5wdXNoKG4pO30scmVnaXN0ZXJG YWxsYmFja0hhbmRsZXI6ZnVuY3Rpb24obil7ZS5wdXNoKG4pO319O0V2ZW50Lmxp c3Rlbihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJ21vdXNlZG93bicsZCk7RXZl bnQubGlzdGVuKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwna2V5ZG93bicsZCk7 fSwzKTsKX19lKCJQYWdlVHJhbnNpdGlvbnMiLFsiZXZlbnQtZXh0ZW5zaW9ucyIs ImZ1bmN0aW9uLWV4dGVuc2lvbnMiLCJzdHJpbmctZXh0ZW5zaW9ucyIsImFyYml0 ZXIiLCJEaWFsb2ciLCJkb20iLCJkb20tc2Nyb2xsIiwiRW52IiwiRm9ybSIsIkhp c3RvcnlNYW5hZ2VyIiwibGluay1jb250cm9sbGVyIiwiT2JqZWN0VXRpbHMiLCJ1 YSIsInVyaSIsInV0aWwiLCJ2ZWN0b3IiLCJjb21wdXRlUmVsYXRpdmVVUkkiLCJj b3B5UHJvcGVydGllcyIsImRvbS1jb3JlIiwiZ29PclJlcGxhY2UiLCJ1c2VyQWN0 aW9uIiwidHgiXSxmdW5jdGlvbihzLHYsdSxxKXt2KCJldmVudC1leHRlbnNpb25z Iik7digiZnVuY3Rpb24tZXh0ZW5zaW9ucyIpO3YoInN0cmluZy1leHRlbnNpb25z Iik7dmFyIGE9digiYXJiaXRlciIpO3ZhciBkPXYoIkRpYWxvZyIpO3ZhciBiPXYo ImRvbSIpO3ZhciBjPXYoImRvbS1zY3JvbGwiKTt2YXIgZT12KCJFbnYiKTt2YXIg Zj12KCJGb3JtIik7dmFyIGc9digiSGlzdG9yeU1hbmFnZXIiKTt2YXIgaD12KCJs aW5rLWNvbnRyb2xsZXIiKTt2YXIgaT12KCJPYmplY3RVdGlscyIpO3ZhciB3PXYo InVhIik7dmFyIGs9digidXJpIik7dmFyIGw9digidXRpbCIpO3ZhciBtPXYoInZl Y3RvciIpO3ZhciBvPXYoImNvbXB1dGVSZWxhdGl2ZVVSSSIpO3ZhciBwPXYoImNv cHlQcm9wZXJ0aWVzIik7dmFyIHI9digiZG9tLWNvcmUiKS5nZTt2YXIgdD12KCJn b09yUmVwbGFjZSIpO3ZhciB4PXYoInVzZXJBY3Rpb24iKTtzLnR4PXYoInR4Iik7 dmFyIGo9e190cmFuc2l0aW9uX2hhbmRsZXJzOltdLF9zY3JvbGxfcG9zaXRpb25z Ont9LF9zY3JvbGxfbG9ja2VkOmZhbHNlLGlzSW5pdGlhbGl6ZWQ6ZnVuY3Rpb24o KXtyZXR1cm4gISFqLl9pbml0aWFsaXplZDt9LF9pbml0OmZ1bmN0aW9uKCl7aWYo IWUuQUxMT1dfVFJBTlNJVElPTl9JTl9JRlJBTUUmJndpbmRvdyE9d2luZG93LnRv cClyZXR1cm47aWYoai5faW5pdGlhbGl6ZWQpcmV0dXJuIGo7ai5faW5pdGlhbGl6 ZWQ9dHJ1ZTt2YXIgemI9ay5nZXRSZXF1ZXN0VVJJKGZhbHNlKTt2YXIgeT16Yi5n ZXRVbnF1YWxpZmllZFVSSSgpO3ZhciB6Yz1rKHkpLnNldEZyYWdtZW50KG51bGwp O3ZhciB6YT15LmdldEZyYWdtZW50KCk7aWYoemEuY2hhckF0KDApPT09JyEnJiZ6 Yy50b1N0cmluZygpPT09emEuc3Vic3RyKDEpKXk9emM7cChqLHtfY3VycmVudF91 cmk6eSxfbW9zdF9yZWNlbnRfdXJpOnksX25leHRfdXJpOnl9KTt2YXIgejtpZih6 Yi5nZXRGcmFnbWVudCgpLnN0YXJ0c1dpdGgoJy8nKSl7ej16Yi5nZXRGcmFnbWVu dCgpO31lbHNlIHo9eTtnLmluaXQoKS5zZXRDYW5vbmljYWxMb2NhdGlvbignIycr eikucmVnaXN0ZXJVUklIYW5kbGVyKGouX2hpc3RvcnlNYW5hZ2VySGFuZGxlcik7 aC5yZWdpc3RlckZhbGxiYWNrSGFuZGxlcihqLl9yZXdyaXRlSHJlZik7aC5yZWdp c3RlckZhbGxiYWNrSGFuZGxlcihqLl9vbmxpbmtjbGljayk7RXZlbnQubGlzdGVu KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwnc3VibWl0JyxqLl9vbmZvcm1zdWJt aXQpO0V2ZW50Lmxpc3Rlbih3aW5kb3csJ3Njcm9sbCcsZnVuY3Rpb24oKXtpZigh ai5fc2Nyb2xsX2xvY2tlZClqLl9zY3JvbGxfcG9zaXRpb25zW2ouX2N1cnJlbnRf dXJpXT1tLmdldFNjcm9sbFBvc2l0aW9uKCk7fSk7cmV0dXJuIGo7fSxyZWdpc3Rl ckhhbmRsZXI6ZnVuY3Rpb24oeix5KXtqLl9pbml0KCk7eT15fHw1O2lmKCFqLl90 cmFuc2l0aW9uX2hhbmRsZXJzW3ldKWouX3RyYW5zaXRpb25faGFuZGxlcnNbeV09 W107ai5fdHJhbnNpdGlvbl9oYW5kbGVyc1t5XS5wdXNoKHopO30sZ2V0Q3VycmVu dFVSSTpmdW5jdGlvbih5KXtpZighai5fY3VycmVudF91cmkmJiF5KXJldHVybiBu ZXcgayhqLl9tb3N0X3JlY2VudF91cmkpO3JldHVybiBuZXcgayhqLl9jdXJyZW50 X3VyaSk7fSxnZXRNb3N0UmVjZW50VVJJOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBr KGouX21vc3RfcmVjZW50X3VyaSk7fSxnZXROZXh0VVJJOmZ1bmN0aW9uKCl7cmV0 dXJuIG5ldyBrKGouX25leHRfdXJpKTt9LF9yZXdyaXRlSHJlZjpmdW5jdGlvbih5 KXt2YXIgemE9eS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTt2YXIgej1vKGouX21vc3Rf cmVjZW50X3VyaS5nZXRRdWFsaWZpZWRVUkkoKSx6YSkudG9TdHJpbmcoKTtpZih6 YSE9eil5LnNldEF0dHJpYnV0ZSgnaHJlZicseik7fSxfb25saW5rY2xpY2s6ZnVu Y3Rpb24oeSl7bi5sb29rQnVzeSh5KTtqLmdvKHkuZ2V0QXR0cmlidXRlKCdocmVm JykpO3JldHVybiBmYWxzZTt9LF9vbmZvcm1zdWJtaXQ6ZnVuY3Rpb24oZXZlbnQp e3ZhciB6PWV2ZW50LmdldFRhcmdldCgpO2lmKGYuZ2V0QXR0cmlidXRlKHosJ3Jl bCcpfHxmLmdldEF0dHJpYnV0ZSh6LCd0YXJnZXQnKSlyZXR1cm47dmFyIHk9eCgn Zm9ybScseixldmVudCkuc2V0X25hbWVzcGFjZSgncGFnZV90cmFuc2l0aW9uJyk7 aWYod2luZG93LkFyYml0ZXJNb25pdG9yKUFyYml0ZXJNb25pdG9yLmluaXRVQSh5 LFt6XSk7dmFyIHpiPW5ldyBrKGYuZ2V0QXR0cmlidXRlKHosJ2FjdGlvbicpfHwn Jyk7dmFyIHphPW8oai5fbW9zdF9yZWNlbnRfdXJpLHpiKTt6LnNldEF0dHJpYnV0 ZSgnYWN0aW9uJyx6YS50b1N0cmluZygpKTtpZigoZi5nZXRBdHRyaWJ1dGUoeiwn bWV0aG9kJyl8fCdHRVQnKS50b1VwcGVyQ2FzZSgpPT09J0dFVCcpe2ouZ28oemEu YWRkUXVlcnlEYXRhKGYuc2VyaWFsaXplKHopKSk7ZXZlbnQua2lsbCgpO319LGdv OmZ1bmN0aW9uKHpiLHope3ZhciB5PW5ldyBrKHpiKS5yZW1vdmVRdWVyeURhdGEo J3F1aWNrbGluZycpLmdldFF1YWxpZmllZFVSSSgpO3ZhciB6YT15LmdldFVucXVh bGlmaWVkVVJJKCk7ZGVsZXRlIGouX3Njcm9sbF9wb3NpdGlvbnNbemFdOyF6JiZ4 KCd1cmknLHtocmVmOnkudG9TdHJpbmcoKX0sbnVsbCwnSU5ESVJFQ1QnKTtuLmxv b2tCdXN5KCk7ai5fbG9hZFBhZ2UoeSxmdW5jdGlvbih6Yyl7aWYoemMpe2cuZ28o eS50b1N0cmluZygpLGZhbHNlLHopO31lbHNlIHQod2luZG93LmxvY2F0aW9uLHks eik7fSk7fSxfaGlzdG9yeU1hbmFnZXJIYW5kbGVyOmZ1bmN0aW9uKHkpe2lmKHku Y2hhckF0KDApIT0nLycpcmV0dXJuIGZhbHNlO3goJ2gnLHtocmVmOnl9LG51bGwp O2ouX2xvYWRQYWdlKG5ldyBrKHkpLGZ1bmN0aW9uKHope2lmKCF6KXQod2luZG93 LmxvY2F0aW9uLHksdHJ1ZSk7fSk7cmV0dXJuIHRydWU7fSxfbG9hZFBhZ2U6ZnVu Y3Rpb24oemMsemEpe2lmKGsoemMpLmdldEZyYWdtZW50KCkmJmkuYXJlRXF1YWwo ayh6Yykuc2V0RnJhZ21lbnQobnVsbCkuZ2V0UXVhbGlmaWVkVVJJKCksayhqLl9j dXJyZW50X3VyaSkuc2V0RnJhZ21lbnQobnVsbCkuZ2V0UXVhbGlmaWVkVVJJKCkp KXtqLl9jdXJyZW50X3VyaT1qLl9tb3N0X3JlY2VudF91cmk9emM7ai5yZXN0b3Jl U2Nyb2xsUG9zaXRpb24oKTtuLnN0b3BMb29raW5nQnVzeSgpO3JldHVybjt9dmFy IHpiPWouX3Njcm9sbF9wb3NpdGlvbnNbai5fY3VycmVudF91cmldO2ouX2N1cnJl bnRfdXJpPW51bGw7ai5fbmV4dF91cmk9emM7aWYoemIpYy5zY3JvbGxUbyh6Yixm YWxzZSk7dmFyIHo9ZnVuY3Rpb24oKXtqLl9zY3JvbGxfbG9ja2VkPXRydWU7dmFy IHpkPWouX2hhbmRsZVRyYW5zaXRpb24oemMpO3phJiZ6YSh6ZCk7fTt2YXIgeT1f cnVuSG9va3MoJ29uYmVmb3JlbGVhdmVob29rcycpO2lmKHkpe24uc3RvcExvb2tp bmdCdXN5KCk7ai5fd2FybkJlZm9yZUxlYXZpbmcoeSx6KTt9ZWxzZSB6KCk7fSxf aGFuZGxlVHJhbnNpdGlvbjpmdW5jdGlvbih6ZSl7d2luZG93Lm9uYmVmb3JlbGVh dmVob29rcz11bmRlZmluZWQ7bi5sb29rQnVzeSgpO2lmKCF6ZS5pc1NhbWVPcmln aW4oKSlyZXR1cm4gZmFsc2U7dmFyIHpkPXdpbmRvdy5Bc3luY1JlcXVlc3QmJndp bmRvdy5Bc3luY1JlcXVlc3QuZ2V0TGFzdElkKCk7YS5pbmZvcm0oInByZV9wYWdl X3RyYW5zaXRpb24iLHtmcm9tOmouZ2V0TW9zdFJlY2VudFVSSSgpLHRvOnplfSk7 Zm9yKHZhciB6YT1qLl90cmFuc2l0aW9uX2hhbmRsZXJzLmxlbmd0aC0xO3phPj0w Oy0temEpe3ZhciB6PWouX3RyYW5zaXRpb25faGFuZGxlcnNbemFdO2lmKCF6KWNv bnRpbnVlO2Zvcih2YXIgemI9ei5sZW5ndGgtMTt6Yj49MDstLXpiKWlmKHpbemJd KHplKT09PXRydWUpe3ZhciB6Yz17c2VuZGVyOnRoaXMsdXJpOnplLGlkOnpkfTt0 cnl7YS5pbmZvcm0oInBhZ2VfdHJhbnNpdGlvbiIsemMpO31jYXRjaCh5KXt9cmV0 dXJuIHRydWU7fWVsc2Ugei5zcGxpY2UoemIsMSk7fXJldHVybiBmYWxzZTt9LHVu aWZ5VVJJOmZ1bmN0aW9uKCl7ai5fY3VycmVudF91cmk9ai5fbW9zdF9yZWNlbnRf dXJpPWouX25leHRfdXJpO30sdHJhbnNpdGlvbkNvbXBsZXRlOmZ1bmN0aW9uKHkp e2ouX2V4ZWN1dGVDb21wbGV0aW9uQ2FsbGJhY2soKTtuLnN0b3BMb29raW5nQnVz eSgpO2oudW5pZnlVUkkoKTtpZigheSlqLnJlc3RvcmVTY3JvbGxQb3NpdGlvbigp O3RyeXtpZihkb2N1bWVudC5hY3RpdmVFbGVtZW50JiZkb2N1bWVudC5hY3RpdmVF bGVtZW50Lm5vZGVOYW1lPT09J0EnKWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1 cigpO31jYXRjaCh6KXt9fSxfZXhlY3V0ZUNvbXBsZXRpb25DYWxsYmFjazpmdW5j dGlvbigpe2lmKGouX2NvbXBsZXRpb25DYWxsYmFjaylqLl9jb21wbGV0aW9uQ2Fs bGJhY2soKTtqLl9jb21wbGV0aW9uQ2FsbGJhY2s9bnVsbDt9LHNldENvbXBsZXRp b25DYWxsYmFjazpmdW5jdGlvbih5KXtqLl9jb21wbGV0aW9uQ2FsbGJhY2s9eTt9 LHJld3JpdGVDdXJyZW50VVJJOmZ1bmN0aW9uKHoseSl7ai5yZWdpc3RlckhhbmRs ZXIoZnVuY3Rpb24oKXtpZih6PT1qLmdldE1vc3RSZWNlbnRVUkkoKS5nZXRVbnF1 YWxpZmllZFVSSSgpLnRvU3RyaW5nKCkpe2oudHJhbnNpdGlvbkNvbXBsZXRlKCk7 cmV0dXJuIHRydWU7fX0pO2ouZ28oeSx0cnVlKTt9LF93YXJuQmVmb3JlTGVhdmlu ZzpmdW5jdGlvbih6LHkpe25ldyBkKCkuc2V0VGl0bGUoIkJ1IHNheWZhZGFuIGF5 clx1MDEzMWxtYWsgaXN0ZWRpXHUwMTFmaW5kZW4gZW1pbiBtaXNpbj8iKS5zZXRC b2R5KGh0bWxpemUoeikpLnNldEJ1dHRvbnMoW3tuYW1lOidsZWF2ZV9wYWdlJyxs YWJlbDoiQnUgU2F5ZmFkYW4gQXlyXHUwMTMxbCIsaGFuZGxlcjp5fSx7bmFtZTon Y29udGludWVfZWRpdGluZycsbGFiZWw6IkJ1IFNheWZhZGEgS2FsIixjbGFzc05h bWU6J2lucHV0YXV4J31dKS5zZXRNb2RhbCh0cnVlKS5zaG93KCk7fSxyZXN0b3Jl U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oKXtqLl9zY3JvbGxfbG9ja2VkPWZhbHNl O3ZhciB6YT1qLl9jdXJyZW50X3VyaTt2YXIgemM9ai5fc2Nyb2xsX3Bvc2l0aW9u c1t6YV07aWYoemMpe2Muc2Nyb2xsVG8oemMsZmFsc2UpO3JldHVybjt9ZnVuY3Rp b24gemIoemQpe3JldHVybiAoemR8fG51bGwpJiYoYi5zY3J5KGRvY3VtZW50LmJv ZHksImFbbmFtZT0nIitlc2NhcGVfanNfcXVvdGVzKHpkKSsiJ10iKVswXXx8cih6 ZCkpO312YXIgeT16YihrKHphKS5nZXRGcmFnbWVudCgpKTtpZih5KXt2YXIgej1t LmdldEVsZW1lbnRQb3NpdGlvbih5KTt6Lng9MDtjLnNjcm9sbFRvKHopO319fTt2 YXIgbj13aW5kb3cuX0J1c3lVSU1hbmFnZXJ8fHtfbG9va2luZ19idXN5OmZhbHNl LF9vcmlnaW5hbF9jdXJzb3JzOltdLGxvb2tCdXN5OmZ1bmN0aW9uKHkpe2lmKHkp bi5fZ2l2ZVByb2dyZXNzQ3Vyc29yKHkpO2lmKG4uX2xvb2tpbmdfYnVzeSlyZXR1 cm47bi5fbG9va2luZ19idXN5PXRydWU7bi5fZ2l2ZVByb2dyZXNzQ3Vyc29yKGRv Y3VtZW50LmRvY3VtZW50RWxlbWVudCk7fSxzdG9wTG9va2luZ0J1c3k6ZnVuY3Rp b24oKXtpZighbi5fbG9va2luZ19idXN5KXJldHVybjtuLl9sb29raW5nX2J1c3k9 ZmFsc2U7d2hpbGUobi5fb3JpZ2luYWxfY3Vyc29ycy5sZW5ndGgpe3ZhciB6YT1u Ll9vcmlnaW5hbF9jdXJzb3JzLnBvcCgpO3ZhciB6PXphWzBdO3ZhciB5PXphWzFd O2lmKHouc3R5bGUpei5zdHlsZS5jdXJzb3I9eXx8Jyc7fX0sX2dpdmVQcm9ncmVz c0N1cnNvcjpmdW5jdGlvbih5KXtpZighdy5zYWZhcmkoKSl7bi5fb3JpZ2luYWxf Y3Vyc29ycy5wdXNoKFt5LHkuc3R5bGUuY3Vyc29yXSk7eS5zdHlsZS5jdXJzb3I9 J3Byb2dyZXNzJzt9fX07dS5leHBvcnRzPWo7fSk7Cl9fZSgicGFnZS10cmFuc2l0 aW9ucyIsWyJnb09yUmVwbGFjZSIsImNvbXB1dGVSZWxhdGl2ZVVSSSIsIkhpc3Rv cnlNYW5hZ2VyIiwiUGFnZVRyYW5zaXRpb25zIl0sZnVuY3Rpb24oYSxiKXthLmdv X29yX3JlcGxhY2U9YignZ29PclJlcGxhY2UnKTthLmNvbXB1dGVSZWxhdGl2ZVVS ST1iKCdjb21wdXRlUmVsYXRpdmVVUkknKTthLkhpc3RvcnlNYW5hZ2VyPWEuSGlz dG9yeU1hbmFnZXJ8fGIoJ0hpc3RvcnlNYW5hZ2VyJyk7YS5QYWdlVHJhbnNpdGlv bnM9YS5QYWdlVHJhbnNpdGlvbnN8fGIoJ1BhZ2VUcmFuc2l0aW9ucycpO30sMyk7 CnZhciBOYXZpZ2F0aW9uTWVzc2FnZT17TkFWSUdBVElPTl9CRUdJTjonTmF2aWdh dGlvbk1lc3NhZ2UvbmF2aWdhdGlvbkJlZ2luJyxOQVZJR0FUSU9OX1NFTEVDVDon TmF2aWdhdGlvbk1lc3NhZ2UvbmF2aWdhdGlvblNlbGVjdCcsTkFWSUdBVElPTl9G SVJTVF9SRVNQT05TRTonTmF2aWdhdGlvbk1lc3NhZ2UvbmF2aWdhdGlvbkZpcnN0 UmVzcG9uc2UnLE5BVklHQVRJT05fQ09NUExFVEVEOidOYXZpZ2F0aW9uTWVzc2Fn ZS9uYXZpZ2F0aW9uQ29tcGxldGVkJyxOQVZJR0FUSU9OX0ZBSUxFRDonTmF2aWdh dGlvbk1lc3NhZ2UvbmF2aWdhdGlvbkZhaWxlZCcsTkFWSUdBVElPTl9DT1VOVF9V UERBVEU6J05hdmlnYXRpb25NZXNzYWdlL25hdmlnYXRpb25Db3VudCcsTkFWSUdB VElPTl9GQVZPUklURV9VUERBVEU6J05hdmlnYXRpb25NZXNzYWdlL25hdmlnYXRp b25GYXZvcml0ZVVwZGF0ZScsTkFWSUdBVElPTl9JVEVNX1JFTU9WRUQ6J05hdmln YXRpb25NZXNzYWdlL25hdmlnYXRpb25JdGVtUmVtb3ZlZCcsTkFWSUdBVElPTl9J VEVNX0hJRERFTjonTmF2aWdhdGlvbk1lc3NhZ2UvbmF2aWdhdGlvbkl0ZW1IaWRk ZW4nLElOVEVSTkFMX0xPQURJTkdfQkVHSU46J05hdmlnYXRpb25NZXNzYWdlL2lu dGVybmFsTG9hZGluZ0JlZ2luJyxJTlRFUk5BTF9MT0FESU5HX0NPTVBMRVRFRDon TmF2aWdhdGlvbk1lc3NhZ2UvaW50ZXJuYWxMb2FkaW5nQ29tcGxldGVkJ307CmZ1 bmN0aW9uIEFzeW5jTGF5b3V0KCl7fUFzeW5jTGF5b3V0LnByb3RvdHlwZT17aW5p dDpmdW5jdGlvbihhKXt0aGlzLmNhbnZhc19pZD1hO2lmKGdlKCdyaWdodENvbCcp KXRoaXMuYXV4aWxpYXJ5X2lkPSdyaWdodENvbCc7aWYoZ2UoJ2hlYWRlckFyZWEn KSl0aGlzLmhlYWRlcl9pZD0naGVhZGVyQXJlYSc7aWYoZ2UoJ3Rvb2xiYXJDb250 YWluZXInKSl0aGlzLnRvb2xiYXJfaWQ9J3Rvb2xiYXJDb250YWluZXInO3RoaXMu d2FpdGluZ0ZvckF1eD1mYWxzZTtQYWdlVHJhbnNpdGlvbnMucmVnaXN0ZXJIYW5k bGVyKHRoaXMuY2F0Y2hQYWdlVHJhbnNpdGlvbi5iaW5kKHRoaXMpKTt0aGlzLnN1 YnNjcmlwdGlvbj1BcmJpdGVyLnN1YnNjcmliZShOYXZpZ2F0aW9uTWVzc2FnZS5O QVZJR0FUSU9OX0JFR0lOLHRoaXMub25OYXZpZ2F0ZS5iaW5kKHRoaXMpKTtyZXR1 cm4gdGhpczt9LGNhdGNoUGFnZVRyYW5zaXRpb246ZnVuY3Rpb24oYSl7QXJiaXRl ci51bnN1YnNjcmliZSh0aGlzLnN1YnNjcmlwdGlvbik7cmV0dXJuIGZhbHNlO30s Z2V0Q2FudmFzSUQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY3VzdG9tQ2FudmFz SUQ/dGhpcy5jdXN0b21DYW52YXNJRDooYS5zaWRlY29sPydjb250ZW50Q29sJzon Y29udGVudEFyZWEnKTt9LG9uTmF2aWdhdGU6ZnVuY3Rpb24oYyxhKXt2YXIgZD1h LnVzZUFqYXhQaXBlJiZBamF4UGlwZVJlcXVlc3QuaXNBY3RpdmVPblBhZ2UoYS5w YXJhbXMuZW5kcG9pbnQpO2E9YS5wYXJhbXM7aWYoYS5lbmRwb2ludCl7aWYodGhp cy5yZXF1ZXN0KXt0aGlzLnJlcXVlc3Quc2V0RmluYWxseUhhbmRsZXIoYmFnb2Zo b2xkaW5nKTt0aGlzLnJlcXVlc3QuYWJvcnQoKTt9aWYodGhpcy5zaWRlUmVxdWVz dCl0aGlzLnNpZGVSZXF1ZXN0LmFib3J0KCk7aWYoZCl7dGhpcy5yZXF1ZXN0PW5l dyBBamF4UGlwZVJlcXVlc3QoKS5zZXRVUkkoYS5lbmRwb2ludCkuc2V0RGF0YShh KS5zZXRDYW52YXNJZCh0aGlzLmdldENhbnZhc0lEKGEpKS5zZXRGaW5hbGx5SGFu ZGxlcih0aGlzLmZpbmFsbHlIYW5kbGVyLmJpbmQodGhpcykpLnNldEVycm9ySGFu ZGxlcih0aGlzLmVycm9ySGFuZGxlci5iaW5kKHRoaXMpKS5zZXRGaXJzdFJlc3Bv bnNlQ2FsbGJhY2sodGhpcy5maXJzdFJlc3BvbnNlQ2FsbGJhY2suYmluZCh0aGlz KSkuc2VuZCgpO31lbHNle2EuaGFuZGxlZD10cnVlO3RoaXMud2FpdGluZ0ZvckF1 eD1hLnNpZGVjb2w7dmFyIGU9ISFhLmlmcmFtZTt2YXIgYj1uZXcgQXN5bmNSZXF1 ZXN0KCkuc2V0T3B0aW9uKCd1c2VJZnJhbWVUcmFuc3BvcnQnLGUpLnNldFVSSShu ZXcgVVJJKGEuZW5kcG9pbnQpKS5zZXRSZWFkT25seSh0cnVlKS5zZXRNZXRob2Qo J0dFVCcpLnNldERhdGEoYSkuc2V0SGFuZGxlcih0aGlzLm9uUmVzcG9uc2UuYmlu ZCh0aGlzKSkuc2V0RXJyb3JIYW5kbGVyKHRoaXMuZXJyb3JIYW5kbGVyLmJpbmQo dGhpcykpLnNldEZpbmFsbHlIYW5kbGVyKHRoaXMuZmluYWxseUhhbmRsZXIuYmlu ZCh0aGlzKSk7dGhpcy5yZXF1ZXN0PWI7Yi5zZW5kKCk7fX19LG9uU2lkZVJlc3Bv bnNlOmZ1bmN0aW9uKGIpe3ZhciBhPWIuZ2V0UGF5bG9hZCgpO2lmKGEmJnRoaXMu YXV4aWxpYXJ5X2lkKXRoaXMucmVjZWl2ZWRBdXgoYSk7fSxyZWNlaXZlZEF1eDpm dW5jdGlvbihhKXshdGhpcy53YWl0aW5nRm9yQXV4O3RoaXMud2FpdGluZ0ZvckF1 eD1mYWxzZTtET00uc2V0Q29udGVudCgkKHRoaXMuYXV4aWxpYXJ5X2lkKSxIVE1M KGEpKTt9LG9uUmVzcG9uc2U6ZnVuY3Rpb24oZSl7dmFyIGQ9ZS5nZXRQYXlsb2Fk KCk7aWYoZC5yZWRpcmVjdCl7Z29VUkkoZC5yZWRpcmVjdCk7fWVsc2V7dmFyIGM9 ZC5odG1sfHxkO0RPTS5zZXRDb250ZW50KCQodGhpcy5jYW52YXNfaWQpLEhUTUwo YykpO2lmKGQuc2lkZV9odG1sJiZ0aGlzLmF1eGlsaWFyeV9pZCl0aGlzLnJlY2Vp dmVkQXV4KGQuc2lkZV9odG1sKTtpZih0aGlzLmhlYWRlcl9pZCYmIWQua2VlcF9o ZWFkZXIpe3ZhciBiPSQodGhpcy5oZWFkZXJfaWQpO0RPTS5zZXRDb250ZW50KGIs SFRNTChkLmhlYWRlcl9odG1sfHwnJykpO0NTUy5jb25kaXRpb25TaG93KGIsZC5o ZWFkZXJfaHRtbCk7fWlmKGQudG9vbGJhcl9odG1sJiZ0aGlzLnRvb2xiYXJfaWQp RE9NLnNldENvbnRlbnQoJCh0aGlzLnRvb2xiYXJfaWQpLEhUTUwoZC50b29sYmFy X2h0bWwpKTtpZihkLmpzKShuZXcgRnVuY3Rpb24oZC5qcykpKCk7Q1NTLmNvbmRp dGlvbkNsYXNzKCdjb250ZW50Q29sJywnaGFzUmlnaHRDb2wnLHRoaXMuYXV4aWxp YXJ5X2lkJiYhZC5ub1JpZ2h0U2lkZSk7dmFyIGY9Z2UoJ3JpZ2h0Q29sJyk7aWYo ZiYmZC5ub1JpZ2h0U2lkZSlET00uZW1wdHkoZik7fXZhciBhPWUuZ2V0UmVxdWVz dCgpLmdldERhdGEoKTtBcmJpdGVyLmluZm9ybShOYXZpZ2F0aW9uTWVzc2FnZS5O QVZJR0FUSU9OX0NPTVBMRVRFRCxhLmtleSk7fSxlcnJvckhhbmRsZXI6ZnVuY3Rp b24oYSl7QXN5bmNSZXNwb25zZS52ZXJib3NlRXJyb3JIYW5kbGVyKGEpO0FyYml0 ZXIuaW5mb3JtKE5hdmlnYXRpb25NZXNzYWdlLk5BVklHQVRJT05fRkFJTEVEKTt0 aGlzLnJlcXVlc3Q9bnVsbDt9LGZpcnN0UmVzcG9uc2VDYWxsYmFjazpmdW5jdGlv bihhKXt3aW5kb3cuc2Nyb2xsVG8oMCwwKTtBcmJpdGVyLmluZm9ybShOYXZpZ2F0 aW9uTWVzc2FnZS5OQVZJR0FUSU9OX0ZJUlNUX1JFU1BPTlNFKTt9LGZpbmFsbHlI YW5kbGVyOmZ1bmN0aW9uKGEpe3RoaXMucmVxdWVzdD1udWxsO1BhZ2VUcmFuc2l0 aW9ucy50cmFuc2l0aW9uQ29tcGxldGUodHJ1ZSk7QXJiaXRlci5pbmZvcm0oTmF2 aWdhdGlvbk1lc3NhZ2UuTkFWSUdBVElPTl9DT01QTEVURUQpO319OwpfX2UoIlVJ UGFnZWxldCIsWyJqc29uIiwiZG9tIiwiYWpheHBpcGUiLCJBc3luY1JlcXVlc3Qi LCJjb3B5UHJvcGVydGllcyJdLGZ1bmN0aW9uKGcsaSxoLGYpe2koJ2pzb24nKTt2 YXIgYz1pKCdkb20nKTt2YXIgYT1pKCdhamF4cGlwZScpO3ZhciBiPWkoJ0FzeW5j UmVxdWVzdCcpO3ZhciBlPWkoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rpb24gZChs LG0saixrKXt0aGlzLl9pZD1sfHxudWxsO3RoaXMuX2VsZW1lbnQ9Z2UobHx8Yy4k TignZGl2JykpO3RoaXMuX3NyYz1tfHxudWxsO3RoaXMuX2NvbnRleHRfZGF0YT1q fHx7fTt0aGlzLl9kYXRhPWt8fHt9O3RoaXMuX2hhbmRsZXI9YmFnb2Zob2xkaW5n O3RoaXMuX3JlcXVlc3Q9bnVsbDt0aGlzLl91c2VfYWpheHBpcGU9ZmFsc2U7dGhp cy5faXNfYnVuZGxlPXRydWU7dGhpcy5fYWxsb3dfY3Jvc3NfcGFnZV90cmFuc2l0 aW9uPWZhbHNlO3RoaXMuX2FwcGVuZD1mYWxzZTtyZXR1cm4gdGhpczt9ZC5sb2Fk RnJvbUVuZHBvaW50PWZ1bmN0aW9uKGwscCxqLG0pe209bXx8e307dmFyIGs9Jy9h amF4L3BhZ2VsZXQvZ2VuZXJpYy5waHAvJztpZihtLmludGVybilrPScvaW50ZXJu JytrO3ZhciBvPShrK2wpLnJlcGxhY2UoL1wvKy9nLCcvJyk7aWYobS5zdWJkb21h aW4pbz1VUkkobykuc2V0U3ViZG9tYWluKG0uc3ViZG9tYWluKTt2YXIgbj1uZXcg ZChwLG8saikuc2V0VXNlQWpheFBpcGUobS51c2VQaXBlKS5zZXRCdW5kbGVPcHRp b24obC5zdWJzdHJpbmcoMCw4KSE9Jy9pbnRlcm4vJyYmbS5idW5kbGUhPT1mYWxz ZSkuc2V0QXBwZW5kKG0uYXBwZW5kKS5zZXRKU05vbkJsb2NrKG0uanNOb25ibG9j aykuc2V0RGlzcGxheUNhbGxiYWNrKG0uZGlzcGxheUNhbGxiYWNrKS5zZXRDb25z dEhlaWdodChtLmNvbnN0SGVpZ2h0KS5zZXRBbGxvd0Nyb3NzUGFnZVRyYW5zaXRp b24obS5jcm9zc1BhZ2UpO20uaGFuZGxlciYmbi5zZXRIYW5kbGVyKG0uaGFuZGxl cik7bi5nbygpO3JldHVybiBuO307ZShkLnByb3RvdHlwZSx7Z2V0RWxlbWVudDpm dW5jdGlvbihqKXtqPWp8fGZhbHNlO2lmKGopdGhpcy5fZWxlbWVudD1nZSh0aGlz Ll9pZCk7cmV0dXJuIHRoaXMuX2VsZW1lbnQ7fSxzZXRIYW5kbGVyOmZ1bmN0aW9u KGope3RoaXMuX2hhbmRsZXI9ajtyZXR1cm4gdGhpczt9LGdvOmZ1bmN0aW9uKGss ail7aWYoYXJndW1lbnRzLmxlbmd0aD49Mnx8dHlwZW9mIGs9PSdzdHJpbmcnKXt0 aGlzLl9zcmM9azt0aGlzLl9kYXRhPWp8fHt9O31lbHNlIGlmKGFyZ3VtZW50cy5s ZW5ndGg9PTEpdGhpcy5fZGF0YT1rO3RoaXMucmVmcmVzaCgpO3JldHVybiB0aGlz O30sc2V0QWxsb3dDcm9zc1BhZ2VUcmFuc2l0aW9uOmZ1bmN0aW9uKGope3RoaXMu X2FsbG93X2Nyb3NzX3BhZ2VfdHJhbnNpdGlvbj1qO3JldHVybiB0aGlzO30sc2V0 QnVuZGxlT3B0aW9uOmZ1bmN0aW9uKGope3RoaXMuX2lzX2J1bmRsZT1qO3JldHVy biB0aGlzO30scmVmcmVzaDpmdW5jdGlvbihrKXt2YXIgaj1mdW5jdGlvbihtKXt0 aGlzLl9yZXF1ZXN0PW51bGw7aWYoayYmdGhpcy5faWQpdGhpcy5fZWxlbWVudD1n ZSh0aGlzLl9pZCk7dmFyIGw9SFRNTChtLmdldFBheWxvYWQoKSk7aWYodGhpcy5f YXBwZW5kKXtjLmFwcGVuZENvbnRlbnQodGhpcy5fZWxlbWVudCxsKTt9ZWxzZSBj LnNldENvbnRlbnQodGhpcy5fZWxlbWVudCxsKTt0aGlzLl9oYW5kbGVyKCk7fS5i aW5kKHRoaXMpO2lmKHRoaXMuX3VzZV9hamF4cGlwZSl7dGhpcy5fcmVxdWVzdD1u ZXcgYSgpO3RoaXMuX3JlcXVlc3Quc2V0Q2FudmFzSWQodGhpcy5faWQpLnNldEFw cGVuZCh0aGlzLl9hcHBlbmQpLnNldENvbnN0SGVpZ2h0KHRoaXMuX2NvbnN0SGVp Z2h0KS5zZXRKU05vbkJsb2NrKHRoaXMuX2pzTm9uYmxvY2spLnNldERpc3BsYXlD YWxsYmFjayh0aGlzLl9kaXNwbGF5Q2FsbGJhY2spO31lbHNlIHRoaXMuX3JlcXVl c3Q9bmV3IGIoKS5zZXRNZXRob2QoJ0dFVCcpLnNldFJlYWRPbmx5KHRydWUpLnNl dE9wdGlvbignYnVuZGxlJyx0aGlzLl9pc19idW5kbGUpLnNldEhhbmRsZXIoZnVu Y3Rpb24obCl7aWYodGhpcy5fZGlzcGxheUNhbGxiYWNrKXt0aGlzLl9kaXNwbGF5 Q2FsbGJhY2soai5jdXJyeShsKSk7fWVsc2UgaihsKTt9KTt0aGlzLl9yZXF1ZXN0 LnNldFVSSSh0aGlzLl9zcmMpLnNldEFsbG93Q3Jvc3NQYWdlVHJhbnNpdGlvbih0 aGlzLl9hbGxvd19jcm9zc19wYWdlX3RyYW5zaXRpb24pLnNldERhdGEoe2RhdGE6 SlNPTi5zdHJpbmdpZnkobWVyZ2UodGhpcy5fY29udGV4dF9kYXRhLHRoaXMuX2Rh dGEpKX0pLnNlbmQoKTtyZXR1cm4gdGhpczt9LGNhbmNlbDpmdW5jdGlvbigpe2lm KHRoaXMuX3JlcXVlc3QpdGhpcy5fcmVxdWVzdC5hYm9ydCgpO30sc2V0VXNlQWph eFBpcGU6ZnVuY3Rpb24oail7dGhpcy5fdXNlX2FqYXhwaXBlPSEhajtyZXR1cm4g dGhpczt9LHNldEFwcGVuZDpmdW5jdGlvbihqKXt0aGlzLl9hcHBlbmQ9ISFqO3Jl dHVybiB0aGlzO30sc2V0SlNOb25CbG9jazpmdW5jdGlvbihqKXt0aGlzLl9qc05v bmJsb2NrPSEhajtyZXR1cm4gdGhpczt9LHNldERpc3BsYXlDYWxsYmFjazpmdW5j dGlvbihqKXt0aGlzLl9kaXNwbGF5Q2FsbGJhY2s9ajtyZXR1cm4gdGhpczt9LHNl dENvbnN0SGVpZ2h0OmZ1bmN0aW9uKGope3RoaXMuX2NvbnN0SGVpZ2h0PSEhajty ZXR1cm4gdGhpczt9fSk7Zy5VSVBhZ2VsZXQ9aC5leHBvcnRzPWQ7fSwzKTsKZnVu Y3Rpb24gRnV0dXJlU2lkZU5hdigpe0Z1dHVyZVNpZGVOYXYuaW5zdGFuY2UmJkZ1 dHVyZVNpZGVOYXYuaW5zdGFuY2UudW5pbnN0YWxsKCk7RnV0dXJlU2lkZU5hdi5p bnN0YW5jZT10aGlzO31GdXR1cmVTaWRlTmF2Lmluc3RhbmNlPW51bGw7RnV0dXJl U2lkZU5hdi5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVybiBGdXR1cmVTaWRl TmF2Lmluc3RhbmNlfHxuZXcgRnV0dXJlU2lkZU5hdigpO307RnV0dXJlU2lkZU5h di5wcm90b3R5cGU9e2luaXQ6ZnVuY3Rpb24oYyxiLGEpe3RoaXMucm9vdD1jO3Ro aXMuaXRlbXM9e307dGhpcy5zZWN0aW9ucz17fTt0aGlzLmVkaXRvcj1udWxsO3Ro aXMuZWRpdGluZz1mYWxzZTt0aGlzLnNlbGVjdGVkPW51bGw7dGhpcy5sb2FkaW5n PW51bGw7dGhpcy5rZXlQYXJhbT0nc2snO3RoaXMuZGVmYXVsdEtleT1iO3RoaXMu dXJpPVVSSS5nZXRSZXF1ZXN0VVJJKCk7dGhpcy5hamF4UGlwZT1hO3RoaXMuYWph eFBpcGVFbmRwb2ludHM9e307dGhpcy5zaWRlY29sPXRydWU7dGhpcy5faW5zdGFs bGVkPXRydWU7dGhpcy5faGFuZGxlUGFnZVRyYW5zaXRpb25zPXRydWU7UGFnZVRy YW5zaXRpb25zLnJlZ2lzdGVySGFuZGxlcihmdW5jdGlvbihkKXtyZXR1cm4gdGhp cy5faGFuZGxlUGFnZVRyYW5zaXRpb25zJiZ0aGlzLmhhbmRsZVBhZ2VUcmFuc2l0 aW9uKGQpO30uYmluZCh0aGlzKSk7dGhpcy5fZXZlbnRIYW5kbGVycz1bXTt0aGlz Ll9hcmJpdGVyU3Vic2NyaXB0aW9ucz1bQXJiaXRlci5zdWJzY3JpYmUoTmF2aWdh dGlvbk1lc3NhZ2UuTkFWSUdBVElPTl9DT01QTEVURUQsdGhpcy5uYXZpZ2F0aW9u Q29tcGxldGUuYmluZCh0aGlzKSksQXJiaXRlci5zdWJzY3JpYmUoTmF2aWdhdGlv bk1lc3NhZ2UuTkFWSUdBVElPTl9GQUlMRUQsdGhpcy5uYXZpZ2F0aW9uRmFpbGVk LmJpbmQodGhpcykpLEFyYml0ZXIuc3Vic2NyaWJlKE5hdmlnYXRpb25NZXNzYWdl Lk5BVklHQVRJT05fQ09VTlRfVVBEQVRFLHRoaXMubmF2aWdhdGlvbkNvdW50VXBk YXRlLmJpbmQodGhpcykpLEFyYml0ZXIuc3Vic2NyaWJlKE5hdmlnYXRpb25NZXNz YWdlLk5BVklHQVRJT05fU0VMRUNULHRoaXMubmF2aWdhdGlvblNlbGVjdC5iaW5k KHRoaXMpKSxBcmJpdGVyLnN1YnNjcmliZShQcmVzZW5jZU1lc3NhZ2UuZ2V0QXJi aXRlck1lc3NhZ2VUeXBlKCduYXZfdXBkYXRlX2NvdW50cycpLHRoaXMubmF2aWdh dGlvbkNvdW50VXBkYXRlRnJvbVByZXNlbmNlLmJpbmQodGhpcykpXTt0aGlzLl9l eHBsaWNpdEhvdmVyPVtdO3RoaXMuX2Vuc3VyZUhvdmVyKCdzaWRlTmF2SXRlbScp O3RoaXMuX2V2ZW50SGFuZGxlcnMucHVzaChFdmVudC5saXN0ZW4od2luZG93LCdy ZXNpemUnLHRoaXMuX2hhbmRsZVJlc2l6ZS5iaW5kKHRoaXMpKSk7dGhpcy5fY2hl Y2tOYXJyb3coKTt3aW5kb3cuU2VsZWN0b3ImJnRoaXMuX2FyYml0ZXJTdWJzY3Jp cHRpb25zLnB1c2goU2VsZWN0b3Iuc3Vic2NyaWJlKFsnb3BlbicsJ2Nsb3NlJ10s ZnVuY3Rpb24oZixkKXt2YXIgZT1QYXJlbnQuYnlDbGFzcyhkLnNlbGVjdG9yLCdz aWRlTmF2SXRlbScpO2UmJkNTUy5jb25kaXRpb25DbGFzcyhlLCdlZGl0TWVudU9w ZW5lZCcsZj09PSdvcGVuJyk7fSkpO29ubGVhdmVSZWdpc3Rlcih0aGlzLnVuaW5z dGFsbC5iaW5kKHRoaXMpKTt9LF9oYW5kbGVSZXNpemU6KGZ1bmN0aW9uKCl7dmFy IGE7cmV0dXJuIGZ1bmN0aW9uKCl7YSYmY2xlYXJUaW1lb3V0KGEpO2E9dGhpcy5f Y2hlY2tOYXJyb3cuYmluZCh0aGlzKS5kZWZlcigyMDApO307fSkoKSxfY2hlY2tO YXJyb3c6ZnVuY3Rpb24oKXtDU1MuY29uZGl0aW9uQ2xhc3ModGhpcy5yb290LCd1 aU5hcnJvd1NpZGVOYXYnLFZlY3RvcjIuZ2V0RWxlbWVudFBvc2l0aW9uKHRoaXMu cm9vdCkueDwyMCk7fSxfZW5zdXJlSG92ZXI6ZnVuY3Rpb24oYSl7aWYodWEuaWUo KTw4KUJvb3Rsb2FkZXIubG9hZENvbXBvbmVudHMoJ2V4cGxpY2l0LWhvdmVyJyxm dW5jdGlvbigpe3RoaXMuX2V4cGxpY2l0SG92ZXIucHVzaChuZXcgRXhwbGljaXRI b3Zlcih0aGlzLnJvb3QsYSkpO30uYmluZCh0aGlzKSk7fSx1bmluc3RhbGw6ZnVu Y3Rpb24oKXtpZih0aGlzLl9pbnN0YWxsZWQpe3RoaXMuX2luc3RhbGxlZD1mYWxz ZTt0aGlzLl9oYW5kbGVQYWdlVHJhbnNpdGlvbnM9ZmFsc2U7dGhpcy5fYXJiaXRl clN1YnNjcmlwdGlvbnMuZm9yRWFjaChBcmJpdGVyLnVuc3Vic2NyaWJlKTt0aGlz Ll9ldmVudEhhbmRsZXJzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5yZW1vdmUoKTt9 KTt0aGlzLl9leHBsaWNpdEhvdmVyLmZvckVhY2goZnVuY3Rpb24oYSl7YS51bmlu c3RhbGwoKTt9KTt9fSxpbml0U2VjdGlvbjpmdW5jdGlvbihiLGEpe3RoaXMuX2lu aXRJdGVtcyhhKTt0aGlzLl9pbml0U2VjdGlvbihiKTt9LGFkZEl0ZW06ZnVuY3Rp b24oYSxiKXt0aGlzLl9pbml0SXRlbShhLGIpO30sX2luaXRJdGVtczpmdW5jdGlv bihiKXt2YXIgYT1mdW5jdGlvbihjLGUpe3ZhciBkPXRoaXMuX2luaXRJdGVtKGMs ZSk7JChjLmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe2EoZixkKTt9KTt9 LmJpbmQodGhpcyk7JEEoYikuZm9yRWFjaChmdW5jdGlvbihjKXthKGMsbnVsbCk7 fSk7fSxfaW5pdEl0ZW06ZnVuY3Rpb24oYSxkKXt2YXIgYj10aGlzLml0ZW1zW2Eu aWRdPXRoaXMuX2NvbnN0cnVjdEl0ZW0oYSxkKTtpZihiLmVxdWFscyh0aGlzLnNl bGVjdGVkKXx8YS5zZWxlY3RlZCl0aGlzLnNldFNlbGVjdGVkKGIpO3ZhciBjPWIu Z2V0TGlua05vZGUoKTtjJiZ0aGlzLl9ldmVudEhhbmRsZXJzLnB1c2goRXZlbnQu bGlzdGVuKGMsJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7cmV0dXJuICF0aGlzLmVk aXRpbmc7fS5iaW5kKHRoaXMpKSk7cmV0dXJuIGI7fSxfaW5pdFNlY3Rpb246ZnVu Y3Rpb24oYSl7dmFyIGI9dGhpcy5zZWN0aW9uc1thLmlkXT10aGlzLl9jb25zdHJ1 Y3RTZWN0aW9uKGEpO3RoaXMuX2V2ZW50SGFuZGxlcnMucHVzaChFdmVudC5saXN0 ZW4oYi5ub2RlLCdjbGljaycsdGhpcy5oYW5kbGVTZWN0aW9uQ2xpY2suYmluZCh0 aGlzLGIpKSk7RE9NLnNjcnkoYi5ub2RlLCdkaXYuYm9va21hcmtzTWVudUJ1dHRv bicpLmZvckVhY2goQ1NTLnNob3cpO3JldHVybiBiO30sX2NvbnN0cnVjdEl0ZW06 ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IEZ1dHVyZVNpZGVOYXZJdGVtKGEsYik7 fSxfY29uc3RydWN0U2VjdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IEZ1dHVy ZVNpZGVOYXZTZWN0aW9uKGEpO30saGFuZGxlU2VjdGlvbkNsaWNrOmZ1bmN0aW9u KGMsZXZlbnQpe3ZhciBiPXRoaXMuX2dldEV2ZW50VGFyZ2V0KGV2ZW50LCdhJyk7 dmFyIGE9dGhpcy5fZ2V0SXRlbUZvck5vZGUoYik7aWYoIWIpe3JldHVybjt9ZWxz ZSBpZihDU1MuaGFzQ2xhc3MoYi5wYXJlbnROb2RlLCd1aU1lbnVJdGVtJykpe3Ro aXMuX2hhbmRsZU1lbnVDbGljayhjLGEsYi5wYXJlbnROb2RlLGV2ZW50KTt9ZWxz ZSB0aGlzLl9oYW5kbGVMaW5rQ2xpY2soYyxiLGV2ZW50KTt9LF9nZXRFdmVudFRh cmdldDpmdW5jdGlvbihldmVudCxhKXt2YXIgYj1ldmVudC5nZXRUYXJnZXQoKTtp ZihiLnRhZ05hbWUhPT1hLnRvVXBwZXJDYXNlKCkpe3JldHVybiBQYXJlbnQuYnlU YWcoYixhKTt9ZWxzZSByZXR1cm4gYjt9LF9oYW5kbGVNZW51Q2xpY2s6ZnVuY3Rp b24oYyxhLGIsZXZlbnQpe2lmKENTUy5oYXNDbGFzcyhiLCdyZWFycmFuZ2UnKSl0 aGlzLmJlZ2luRWRpdChjKTt9LF9oYW5kbGVMaW5rQ2xpY2s6ZnVuY3Rpb24oYixh LGV2ZW50KXtpZihDU1MuaGFzQ2xhc3MoYSwnbmF2RWRpdERvbmUnKSl7dGhpcy5l ZGl0aW5nP3RoaXMuZW5kRWRpdCgpOnRoaXMuYmVnaW5FZGl0KGIpO2V2ZW50Lmtp bGwoKTt9fSxnZXRJdGVtOmZ1bmN0aW9uKGEpe2lmKHRoaXMuX2lzQ3VycmVudFBh dGgoYSkpe3JldHVybiB0aGlzLl9nZXRJdGVtRm9yS2V5KHRoaXMuX2dldEtleShh LmdldFF1ZXJ5RGF0YSgpKXx8dGhpcy5kZWZhdWx0S2V5KTt9ZWxzZSByZXR1cm4g dGhpcy5fZ2V0SXRlbUZvclBhdGgoYS5nZXRQYXRoKCkpO30sZ2V0Tm9kZUZvcktl eTpmdW5jdGlvbihiKXt2YXIgYT10aGlzLl9nZXRJdGVtRm9yS2V5KGIpO2lmKGEp cmV0dXJuIGEubm9kZTt9LF9pc0N1cnJlbnRQYXRoOmZ1bmN0aW9uKGEpe3JldHVy biBhLmdldERvbWFpbigpPT09dGhpcy51cmkuZ2V0RG9tYWluKCkmJmEuZ2V0UGF0 aCgpPT09dGhpcy51cmkuZ2V0UGF0aCgpO30sX2dldEtleTpmdW5jdGlvbihhKXty ZXR1cm4gYVt0aGlzLmtleVBhcmFtXTt9LF9nZXRJdGVtRm9yTm9kZTpmdW5jdGlv bihhKXthPVBhcmVudC5ieUNsYXNzKGEsJ3NpZGVOYXZJdGVtJyk7cmV0dXJuIGEm JnRoaXMuaXRlbXNbYS5pZF07fSxfZ2V0SXRlbUZvcktleTpmdW5jdGlvbihhKXty ZXR1cm4gdGhpcy5fZmluZEl0ZW0oZnVuY3Rpb24oYil7cmV0dXJuIGIubWF0Y2hL ZXkoYSk7fSk7fSxfZ2V0SXRlbUZvclBhdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIHRo aXMuX2ZpbmRJdGVtKGZ1bmN0aW9uKGIpe3JldHVybiBiLm1hdGNoUGF0aChhKTt9 KTt9LF9maW5kSXRlbTpmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gdGhpcy5pdGVt cylpZihhKHRoaXMuaXRlbXNbYl0pKXJldHVybiB0aGlzLml0ZW1zW2JdO30scmVt b3ZlSXRlbTpmdW5jdGlvbihhKXtpZihhJiZ0aGlzLml0ZW1zW2EuaWRdKXtET00u cmVtb3ZlKGEubm9kZSk7ZGVsZXRlIHRoaXMuaXRlbXNbYS5pZF07fX0scmVtb3Zl SXRlbUJ5S2V5OmZ1bmN0aW9uKGEpe3RoaXMucmVtb3ZlSXRlbSh0aGlzLl9nZXRJ dGVtRm9yS2V5KGEpKTt9LG1vdmVJdGVtOmZ1bmN0aW9uKGQsYixjKXt2YXIgYT1E T00uZmluZChkLm5vZGUsJ3VsLnVpU2lkZU5hdicpOyhjP0RPTS5wcmVwZW5kQ29u dGVudDpET00uYXBwZW5kQ29udGVudCkoYSxiLm5vZGUpO30sc2V0TG9hZGluZzpm dW5jdGlvbihhKXt0aGlzLmxvYWRpbmcmJnRoaXMubG9hZGluZy5oaWRlTG9hZGlu ZygpO3RoaXMubG9hZGluZz1hO3RoaXMubG9hZGluZyYmdGhpcy5sb2FkaW5nLnNo b3dMb2FkaW5nKCk7fSxzZXRTZWxlY3RlZDpmdW5jdGlvbihhKXt0aGlzLnNldExv YWRpbmcobnVsbCk7aWYodGhpcy5zZWxlY3RlZCl7dGhpcy5zZWxlY3RlZC5oaWRl U2VsZWN0ZWQoKTt0aGlzLnNlbGVjdGVkLmdldFRvcCgpLmhpZGVDaGlsZHJlbigp O310aGlzLnNlbGVjdGVkPWE7aWYodGhpcy5zZWxlY3RlZCl7dGhpcy5zZWxlY3Rl ZC5zaG93U2VsZWN0ZWQoKTt0aGlzLnNlbGVjdGVkLmdldFRvcCgpLnNob3dDaGls ZHJlbigpO319LGhhbmRsZVBhZ2VUcmFuc2l0aW9uOmZ1bmN0aW9uKGMpe3ZhciBh PXRoaXMuZ2V0SXRlbShjKTt2YXIgYj1hJiZhLmVuZHBvaW50JiZ0aGlzLl9kb1Bh Z2VUcmFuc2l0aW9uKGEsYyk7cmV0dXJuIGI7fSxfZG9QYWdlVHJhbnNpdGlvbjpm dW5jdGlvbihhLGIpe3RoaXMuc2V0TG9hZGluZyhhKTt0aGlzLl9zZW5kUGFnZVRy YW5zaXRpb24oYS5lbmRwb2ludCxjb3B5X3Byb3BlcnRpZXModGhpcy5fZ2V0VHJh bnNpdGlvbkRhdGEoYSxiKSxiLmdldFF1ZXJ5RGF0YSgpKSk7cmV0dXJuIHRydWU7 fSxfc2VuZFBhZ2VUcmFuc2l0aW9uOmZ1bmN0aW9uKGIsYSl7YS5lbmRwb2ludD1i O0FyYml0ZXIuaW5mb3JtKE5hdmlnYXRpb25NZXNzYWdlLk5BVklHQVRJT05fQkVH SU4se3VzZUFqYXhQaXBlOnRoaXMuX3VzZUFqYXhQaXBlKGIpLHBhcmFtczphfSk7 fSxfZ2V0VHJhbnNpdGlvbkRhdGE6ZnVuY3Rpb24oYixjKXt2YXIgYT17fTthLnNp ZGVjb2w9dGhpcy5zaWRlY29sO2EucGF0aD1jLmdldFBhdGgoKTthW3RoaXMua2V5 UGFyYW1dPWIudGV4dEtleTthLmtleT1iLnRleHRLZXk7cmV0dXJuIGE7fSxfdXNl QWpheFBpcGU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWpheFBpcGV8fHRoaXMu YWpheFBpcGVFbmRwb2ludHNbYV07fSxuYXZpZ2F0aW9uQ29tcGxldGU6ZnVuY3Rp b24oKXt0aGlzLmxvYWRpbmcmJnRoaXMuc2V0U2VsZWN0ZWQodGhpcy5sb2FkaW5n KTt9LG5hdmlnYXRpb25GYWlsZWQ6ZnVuY3Rpb24oKXt0aGlzLnNldExvYWRpbmco bnVsbCk7fSxuYXZpZ2F0aW9uU2VsZWN0OmZ1bmN0aW9uKGMsYSl7dmFyIGI9dGhp cy5fZ2V0SXRlbUZvcktleSh0aGlzLl9nZXRLZXkoYSkpO2lmKGEuYXNMb2FkaW5n KXt0aGlzLnNldExvYWRpbmcoYik7fWVsc2UgdGhpcy5zZXRTZWxlY3RlZChiKTt9 LG5hdmlnYXRpb25Db3VudFVwZGF0ZTpmdW5jdGlvbihjLGEpe3ZhciBiPXRoaXMu X2dldEl0ZW1Gb3JLZXkoYSYmYS5rZXkpO2lmKGIpaWYodHlwZW9mIGEuY291bnQh PT0idW5kZWZpbmVkIil7Yi5zZXRDb3VudChhLmNvdW50LGEuaGlkZSk7fWVsc2Ug aWYodHlwZW9mIGEuaW5jcmVtZW50IT09InVuZGVmaW5lZCIpYi5pbmNyZW1lbnRD b3VudChhLmluY3JlbWVudCxhLmhpZGUpO30sbmF2aWdhdGlvbkNvdW50VXBkYXRl RnJvbVByZXNlbmNlOmZ1bmN0aW9uKGMsYSl7YT1hLm9iajtpZihhKWlmKCFhLmNs YXNzX25hbWV8fGEuY2xhc3NfbmFtZSYmQ1NTLmhhc0NsYXNzKHRoaXMucm9vdCxh LmNsYXNzX25hbWUpKWlmKGEuaXRlbXMpZm9yKHZhciBiPTA7YjxhLml0ZW1zLmxl bmd0aDtiKyspdGhpcy5uYXZpZ2F0aW9uQ291bnRVcGRhdGUoYyxhLml0ZW1zW2Jd KTt9LGJlZ2luRWRpdDpmdW5jdGlvbihhKXtpZighdGhpcy5lZGl0aW5nKXt0aGlz LmVkaXRpbmc9dHJ1ZTtDU1MuYWRkQ2xhc3ModGhpcy5yb290LCdlZGl0TW9kZScp O3RoaXMuX3VwZGF0ZVRyYWNraW5nRGF0YSgpO0Jvb3Rsb2FkZXIubG9hZENvbXBv bmVudHMoJ3NvcnRhYmxlLXNpZGUtbmF2LWpzJyx0aGlzLl9pbml0RWRpdG9yLmJp bmQodGhpcyxhKSk7fX0sZW5kRWRpdDpmdW5jdGlvbigpe2lmKHRoaXMuZWRpdGlu Zyl7Q1NTLnJlbW92ZUNsYXNzKHRoaXMucm9vdCwnZWRpdE1vZGUnKTt0aGlzLmVk aXRvci5lbmRFZGl0KCk7dGhpcy5lZGl0b3I9bnVsbDt0aGlzLmVkaXRpbmc9ZmFs c2U7dGhpcy5fdXBkYXRlVHJhY2tpbmdEYXRhKCk7fX0sX3VwZGF0ZVRyYWNraW5n RGF0YTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLnJvb3QuZ2V0QXR0cmlidXRlKCdk YXRhLWd0Jyl8fCJ7fSI7dHJ5e2M9SlNPTi5wYXJzZShjKTtpZih0aGlzLmVkaXRp bmcpe2MuZWRpdGluZz10cnVlO31lbHNlIGRlbGV0ZSBjLmVkaXRpbmc7dGhpcy5y b290LnNldEF0dHJpYnV0ZSgnZGF0YS1ndCcsSlNPTi5zdHJpbmdpZnkoYykpO31j YXRjaChiKXt9fSxfaW5pdEVkaXRvcjpmdW5jdGlvbihhKXt0aGlzLmVkaXRvcj1h LmdldEVkaXRvcigpO3RoaXMuZWRpdG9yLmJlZ2luRWRpdCgpO319O2Z1bmN0aW9u IEZ1dHVyZVNpZGVOYXZTZWN0aW9uKGEpe3RoaXMuaWQ9YS5pZDt0aGlzLm5vZGU9 dGhpcy5ub2RlfHwkKGEuaWQpO3RoaXMuZWRpdEVuZHBvaW50PWEuZWRpdEVuZHBv aW50O31GdXR1cmVTaWRlTmF2U2VjdGlvbi5wcm90b3R5cGU9e2VxdWFsczpmdW5j dGlvbihhKXtyZXR1cm4gYSYmYS5pZD09PXRoaXMuaWQ7fSxnZXRFZGl0b3I6ZnVu Y3Rpb24oKXtyZXR1cm4gbmV3IFNvcnRhYmxlU2lkZU5hdihET00uZmluZCh0aGlz Lm5vZGUsJ3VsLnVpU2lkZU5hdicpLHRoaXMuZWRpdEVuZHBvaW50KTt9fTtmdW5j dGlvbiBGdXR1cmVTaWRlTmF2SXRlbShhLGMpe3RoaXMuaWQ9YS5pZDt0aGlzLnVw PWM7dGhpcy5lbmRwb2ludD1hLmVuZHBvaW50O3RoaXMudHlwZT1hLnR5cGU7dGhp cy5ub2RlPWEubm9kZXx8JChhLmlkKTt0aGlzLnBhdGhzPWEucGF0aD8kQShhLnBh dGgpOltdO3RoaXMua2V5cz1hLmtleT8kQShhLmtleSk6W107dmFyIGI9dGhpcy5f ZmluZEtleXModGhpcy5rZXlzKTt0aGlzLm51bWVyaWNLZXk9Yi5udW1lcmljfHx0 aGlzLmtleXNbMF07dGhpcy50ZXh0S2V5PWIudGV4dHx8dGhpcy5rZXlzWzBdO3Ro aXMuX3BhdGhQYXR0ZXJuPXRoaXMuX2J1aWxkUmVnZXgodGhpcy5wYXRocyk7dGhp cy5fa2V5UGF0dGVybj10aGlzLl9idWlsZFJlZ2V4KHRoaXMua2V5cyk7dGhpcy5o aWRlTG9hZGluZygpO3RoaXMuaGlkZVNlbGVjdGVkKCk7fUZ1dHVyZVNpZGVOYXZJ dGVtLnByb3RvdHlwZT17ZXF1YWxzOmZ1bmN0aW9uKGEpe3JldHVybiBhJiZhLmlk PT09dGhpcy5pZDt9LGdldExpbmtOb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIChET00u c2NyeSh0aGlzLm5vZGUsJ2EuaXRlbScpWzBdfHxET00uc2NyeSh0aGlzLm5vZGUs J2Euc3ViaXRlbScpWzBdKTt9LG1hdGNoUGF0aDpmdW5jdGlvbihhKXtyZXR1cm4g dGhpcy5fbWF0Y2hJbnB1dCh0aGlzLl9wYXRoUGF0dGVybixhKTt9LG1hdGNoS2V5 OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9tYXRjaElucHV0KHRoaXMuX2tleVBh dHRlcm4sYSk7fSxfbWF0Y2hJbnB1dDpmdW5jdGlvbihjLGEpe3ZhciBiPWMmJmMu ZXhlYyhhKTtyZXR1cm4gYiYmYi5zbGljZSgxKTt9LGdldFRvcDpmdW5jdGlvbigp e3JldHVybiB0aGlzLmlzVG9wKCk/dGhpczp0aGlzLnVwLmdldFRvcCgpO30saXNU b3A6ZnVuY3Rpb24oYSl7cmV0dXJuICF0aGlzLnVwO30sc2V0Q291bnQ6ZnVuY3Rp b24oYSxiKXtyZXR1cm4gdGhpcy5fdXBkYXRlQ291bnQoYSx0cnVlKTt9LGluY3Jl bWVudENvdW50OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuX3VwZGF0ZUNvdW50 KGEsZmFsc2UpO30sX3VwZGF0ZUNvdW50OmZ1bmN0aW9uKGEsaCxlKXt2YXIgYz1E T00uc2NyeSh0aGlzLm5vZGUsJ3NwYW4uY291bnQnKVswXTt2YXIgZD1jJiZET00u c2NyeShjLCdzcGFuLmNvdW50VmFsdWUnKVswXTtpZihkKXt2YXIgYj1oPzA6cGFy c2VJbnQoRE9NLmdldFRleHQoZCksMTApO3ZhciBpPU1hdGgubWF4KDAsYithKTt2 YXIgZj10aGlzLmlzVG9wKCk/J2hpZGRlbic6J2hpZGRlblN1Yml0ZW0nO0RPTS5z ZXRDb250ZW50KGQsaSk7ZSYmQ1NTLmNvbmRpdGlvbkNsYXNzKHRoaXMubm9kZSxm LCFpKTtDU1MuY29uZGl0aW9uQ2xhc3MoYywnaGlkZGVuX2VsZW0nLCFpKTtpZih0 aGlzLmlzVG9wKCkpe3ZhciBnPURPTS5zY3J5KHRoaXMubm9kZSwnZGl2LmxpbmtX cmFwJylbMF07aWYoZyl7Q1NTLmNvbmRpdGlvbkNsYXNzKGcsJ25vQ291bnQnLCFp KTtDU1MuY29uZGl0aW9uQ2xhc3MoZywnaGFzQ291bnQnLGkpO319fX0sc2hvd0xv YWRpbmc6ZnVuY3Rpb24oKXtDU1MuYWRkQ2xhc3ModGhpcy5ub2RlLCdsb2FkaW5n Jyk7fSxoaWRlTG9hZGluZzpmdW5jdGlvbigpe0NTUy5yZW1vdmVDbGFzcyh0aGlz Lm5vZGUsJ2xvYWRpbmcnKTt9LHNob3dTZWxlY3RlZDpmdW5jdGlvbigpe0NTUy5h ZGRDbGFzcyh0aGlzLm5vZGUsJ3NlbGVjdGVkSXRlbScpO0NTUy5oYXNDbGFzcyh0 aGlzLm5vZGUsJ2hpZGVyJykmJkNTUy5hZGRDbGFzcyh0aGlzLl9nZXRFeHBhbmRl clBhcmVudCgpLCdleHBhbmRlZE1vZGUnKTt9LGhpZGVTZWxlY3RlZDpmdW5jdGlv bigpe0NTUy5yZW1vdmVDbGFzcyh0aGlzLm5vZGUsJ3NlbGVjdGVkSXRlbScpO30s c2hvd0NoaWxkcmVuOmZ1bmN0aW9uKCl7Q1NTLmFkZENsYXNzKHRoaXMubm9kZSwn b3BlbicpO30saGlkZUNoaWxkcmVuOmZ1bmN0aW9uKCl7Q1NTLnJlbW92ZUNsYXNz KHRoaXMubm9kZSwnb3BlbicpO30sX2dldEV4cGFuZGVyUGFyZW50OmZ1bmN0aW9u KCl7cmV0dXJuIFBhcmVudC5ieUNsYXNzKHRoaXMubm9kZSwnZXhwYW5kYWJsZVNp ZGVOYXYnKTt9LF9idWlsZFJlZ2V4OmZ1bmN0aW9uKGEpe2lmKGEubGVuZ3RoKXt2 YXIgYj1hLm1hcChmdW5jdGlvbihjKXtpZih0eXBlb2YgYz09PSJzdHJpbmciKXty ZXR1cm4gYy5yZXBsYWNlKC8oW15hLXowLTlfXSkvaWcsJ1xcJDEnKTt9ZWxzZSBp ZihjJiZjLnJlZ2V4KXJldHVybiBjLnJlZ2V4O30pO3JldHVybiBuZXcgUmVnRXhw KCdeKD86JytiLmpvaW4oJ3wnKSsnKSQnKTt9fSxfZmluZEtleXM6ZnVuY3Rpb24o Yyl7dmFyIGU9L14oYXBwfGdyb3VwfGZsKV8vO3ZhciBhPXt9O2Zvcih2YXIgYj0w O2I8Yy5sZW5ndGg7YisrKXt2YXIgZD1lLnRlc3QoY1tiXSk7aWYoZCYmIWEubnVt ZXJpYyl7YS5udW1lcmljPWNbYl07fWVsc2UgaWYoIWQmJiFhLnRleHQpYS50ZXh0 PWNbYl07aWYoYS5udW1lcmljJiZhLnRleHQpYnJlYWs7fXJldHVybiBhO319Owp2 YXIgTmV3SGlnaD17cmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmluaXRpYWxpemVkPWZh bHNlO30sZW5zdXJlSW5pdGlhbGl6ZWQ6ZnVuY3Rpb24oKXtpZih0aGlzLmluaXRp YWxpemVkKXJldHVybjt0aGlzLmJ1dHRvbj1ET00uc2NyeShkb2N1bWVudC5ib2R5 LCdhLnN0cmVhbV9oZWFkZXJfYnV0dG9uJylbMF07dGhpcy5jb21wb3Nlcj1ET00u c2NyeShkb2N1bWVudC5ib2R5LCdkaXYuVUlDb21wb3NlcicpWzBdO3RoaXMuYnV0 dG9uQXJlYT1ET00uc2NyeSh0aGlzLmNvbXBvc2VyLCdkaXYuVUlDb21wb3Nlcl9C dXR0b25BcmVhJylbMF07dGhpcy5pbml0aWFsaXplZD10cnVlO30sc2hvd0NvbXBv c2VyOmZ1bmN0aW9uKGEpe3RoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtpZih0aGlz LmNvbXBvc2VyKXtDU1Muc2hvdyh0aGlzLmNvbXBvc2VyKTtVSUNvbXBvc2VyLmZv Y3VzSW5zdGFuY2UodGhpcy5jb21wb3Nlci5pZCk7dmFyIGI9VUlDb21wb3Nlci5n ZXRJbnN0YW5jZSh0aGlzLmNvbXBvc2VyLmlkKTtiJiZiLmxvYWRBdHRhY2htZW50 KHBhcnNlSW50KGEsMTApKTt9dGhpcy5idXR0b24mJkNTUy5oaWRlKHRoaXMuYnV0 dG9uKTt9LGhpZGVDb21wb3NlcjpmdW5jdGlvbihiKXt0aGlzLmVuc3VyZUluaXRp YWxpemVkKCk7aWYodGhpcy5jb21wb3Nlcil7dmFyIGE9VUlDb21wb3Nlci5nZXRJ bnN0YW5jZSh0aGlzLmNvbXBvc2VyLmlkKTtpZighYil7YSYmYS5pbml0aWFsaXpl ZCYmYS5ibHVyKCk7Q1NTLmhpZGUodGhpcy5jb21wb3Nlcik7dGhpcy5idXR0b24m JkNTUy5zaG93KHRoaXMuYnV0dG9uKTt9ZWxzZXthJiZhLmluaXRpYWxpemVkJiZh LmxvYWRBdHRhY2htZW50KDApO0NTUy5zaG93KHRoaXMuY29tcG9zZXIpO3RoaXMu YnV0dG9uQXJlYSYmQ1NTLmhpZGUodGhpcy5idXR0b25BcmVhKTt9fX19Owp2YXIg QmFzZTY0PShmdW5jdGlvbigpe3ZhciBjPSdBQkNERUZHSElKS0xNTk9QUVJTVFVW V1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJztmdW5j dGlvbiBkKGUpe2U9KGUuY2hhckNvZGVBdCgwKTw8MTYpfChlLmNoYXJDb2RlQXQo MSk8PDgpfGUuY2hhckNvZGVBdCgyKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29k ZShjLmNoYXJDb2RlQXQoZT4+PjE4KSxjLmNoYXJDb2RlQXQoKGU+Pj4xMikmNjMp LGMuY2hhckNvZGVBdCgoZT4+PjYpJjYzKSxjLmNoYXJDb2RlQXQoZSY2MykpO312 YXIgYT0nPl9fXz80NTY3ODk6Ozw9X19fX19fXycrJ1wwXDFcMlwzXDRcNVw2XDdc Ylx0XG5cMTNcZlxyXDE2XDE3XDIwXDIxXDIyXDIzXDI0XDI1XDI2XDI3XDMwXDMx JysnX19fX19fXDMyXDMzXDM0XDM1XDM2XDM3ICEiIyQlJlwnKCkqKywtLi8wMTIz JztmdW5jdGlvbiBiKGUpe2U9KGEuY2hhckNvZGVBdChlLmNoYXJDb2RlQXQoMCkt NDMpPDwxOCl8KGEuY2hhckNvZGVBdChlLmNoYXJDb2RlQXQoMSktNDMpPDwxMil8 KGEuY2hhckNvZGVBdChlLmNoYXJDb2RlQXQoMiktNDMpPDw2KXxhLmNoYXJDb2Rl QXQoZS5jaGFyQ29kZUF0KDMpLTQzKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29k ZShlPj4+MTYsKGU+Pj44KSYyNTUsZSYyNTUpO31yZXR1cm4ge2VuY29kZTpmdW5j dGlvbihmKXtmPXVuZXNjYXBlKGVuY29kZVVSSShmKSk7dmFyIGU9KGYubGVuZ3Ro KzIpJTM7Zj0oZisnXDBcMCcuc2xpY2UoZSkpLnJlcGxhY2UoL1tcc1xTXXszfS9n LGQpO3JldHVybiBmLnNsaWNlKDAsZi5sZW5ndGgrZS0yKSsnPT0nLnNsaWNlKGUp O30sZGVjb2RlOmZ1bmN0aW9uKGcpe2c9Zy5yZXBsYWNlKC9bXkEtWmEtejAtOStc L10vZywnJyk7dmFyIGY9KGcubGVuZ3RoKzMpJjM7Zz0oZysnQUFBJy5zbGljZShm KSkucmVwbGFjZSgvLi4uLi9nLGIpO2c9Zy5zbGljZSgwLGcubGVuZ3RoK2YtMyk7 dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGcpKTt9Y2F0Y2go ZSl7dGhyb3cgbmV3IEVycm9yKCdOb3QgdmFsaWQgVVRGLTgnKTt9fSxlbmNvZGVP YmplY3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJp bmdpZnkoZSkpO30sZGVjb2RlT2JqZWN0OmZ1bmN0aW9uKGUpe3JldHVybiBKU09O LnBhcnNlKEJhc2U2NC5kZWNvZGUoZSkpO30sZW5jb2RlTnVtczpmdW5jdGlvbihl KXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZS5tYXAo ZnVuY3Rpb24oZil7cmV0dXJuIGMuY2hhckNvZGVBdCgoZnwtKGY+NjMpKSYtKGY+ MCkmNjMpO30pKTt9fTt9KSgpOwpfX2UoIkNvbnRleHR1YWxUaGluZyIsWyJkb20i XSxmdW5jdGlvbihlLGcsZixkKXt2YXIgYj1nKCJkb20iKTt2YXIgYz1bXTt2YXIg YT17cmVnaXN0ZXI6ZnVuY3Rpb24oaSxoKXthLnJlbW92ZShpKTtjLnB1c2goe25v ZGU6aSxjb250ZXh0Omh9KTt9LHJlbW92ZTpmdW5jdGlvbihpKXtmb3IodmFyIGg9 MDtoPGMubGVuZ3RoO2grKylpZihjW2hdLm5vZGU9PT1pKXtjLnNwbGljZShoLDEp O2gtLTt9fSxnZXRDb250ZXh0OmZ1bmN0aW9uKGkpe3ZhciBoPW51bGw7Yy5mb3JF YWNoKGZ1bmN0aW9uKGope2lmKGIuY29udGFpbnMoai5ub2RlLGkpKWg9ai5jb250 ZXh0O30pO3JldHVybiBoO30sY29udGFpbnNJbmNsdWRpbmdMYXllcnM6ZnVuY3Rp b24oaSxoKXt3aGlsZShoKXtpZihiLmNvbnRhaW5zKGksaCkpcmV0dXJuIHRydWU7 aD1hLmdldENvbnRleHQoaCk7fXJldHVybiBmYWxzZTt9fTtmLmV4cG9ydHM9YTt9 KTsKX19lKCJjb250ZXh0dWFsLXRoaW5nIixbIkNvbnRleHR1YWxUaGluZyJdLGZ1 bmN0aW9uKGEsYil7YS5Db250ZXh0dWFsVGhpbmc9YS5Db250ZXh0dWFsVGhpbmd8 fGIoJ0NvbnRleHR1YWxUaGluZycpO30sMyk7Cl9fZSgiaW50bC1sb2NhbGUiLFsi TG9jYWxlIl0sZnVuY3Rpb24oYSxiKXthLmludGxfbG9jYWxlX2lzX3J0bD1iKCdM b2NhbGUnKS5pc1JUTDt9LDMpOwpfX2UoIkxheWVyIixbImFyYml0ZXIiLCJDbGFz cyIsImNzcy1jb3JlIiwiZG9tIiwiZG9tLWh0bWwiLCJnZXRPdmVybGF5WkluZGV4 Il0sZnVuY3Rpb24oaSxrLGosZyl7dmFyIGE9aygiYXJiaXRlciIpO3ZhciBjPWso IkNsYXNzIik7dmFyIGI9aygiY3NzLWNvcmUiKTt2YXIgZD1rKCJkb20iKTt2YXIg ZT1rKCJkb20taHRtbCIpO3ZhciBoPWsoImdldE92ZXJsYXlaSW5kZXgiKTtmdW5j dGlvbiBmKCl7fWMubWl4aW4oZiwnQXJiaXRlcicse19yb290Om51bGwsX3Nob3du OmZhbHNlLF90cmFuc2l0aW9uU3Vic2NyaXB0aW9uOm51bGwsaW5pdDpmdW5jdGlv bihsKXt0aGlzLl9pbnNlcnRQYXJlbnQ9ZG9jdW1lbnQuYm9keTt0aGlzLl90cmFu c2l0aW9uU3Vic2NyaXB0aW9uPWEuc3Vic2NyaWJlKCdwYWdlX3RyYW5zaXRpb24n LHRoaXMuaGlkZS5zaGllbGQodGhpcyksYS5TVUJTQ1JJQkVfTkVXKTtpZihsKXt2 YXIgbj1kLmlzTm9kZShsKTt2YXIgbT10eXBlb2YgbD09PSdzdHJpbmcnfHxlLmlz SFRNTChsKTtpZihtKWw9ZShsKS5nZXRSb290Tm9kZSgpO310aGlzLl9yb290PXRo aXMuX2J1aWxkV3JhcHBlcihsKTtyZXR1cm4gdGhpczt9LF9idWlsZFdyYXBwZXI6 ZnVuY3Rpb24obCl7cmV0dXJuIGw7fSxzZXRQYXJlbnQ6ZnVuY3Rpb24obCl7bD1s fHxkb2N1bWVudC5ib2R5O2lmKGwhPXRoaXMuX2luc2VydFBhcmVudCl7dGhpcy5f aW5zZXJ0UGFyZW50PWw7aWYodGhpcy5fc2hvd24pe2QuYXBwZW5kQ29udGVudCh0 aGlzLl9pbnNlcnRQYXJlbnQsdGhpcy5fcm9vdCk7dGhpcy51cGRhdGVQb3NpdGlv bigpO319cmV0dXJuIHRoaXM7fSxfc3RhY2tPblRvcE9mOmZ1bmN0aW9uKGwpe2lm KGwpe3ZhciBtPWgobCx0aGlzLl9pbnNlcnRQYXJlbnQpO2Iuc2V0U3R5bGUodGhp cy5fcm9vdCwnei1pbmRleCcsbT4yMDA/bTonJyk7fX0sc2hvdzpmdW5jdGlvbigp e2IuYWRkQ2xhc3ModGhpcy5fcm9vdCwnaW52aXNpYmxlX2VsZW0nKTtkLmFwcGVu ZENvbnRlbnQodGhpcy5faW5zZXJ0UGFyZW50LHRoaXMuX3Jvb3QpO2lmKHRoaXMu dXBkYXRlUG9zaXRpb24oKSE9PWZhbHNlKXt0aGlzLmluZm9ybSgnc2hvdycpO3Ro aXMuX3Nob3duPXRydWU7fWVsc2UgZC5yZW1vdmUodGhpcy5fcm9vdCk7Yi5yZW1v dmVDbGFzcyh0aGlzLl9yb290LCdpbnZpc2libGVfZWxlbScpO3JldHVybiB0aGlz O30saGlkZTpmdW5jdGlvbigpe2QucmVtb3ZlKHRoaXMuX3Jvb3QpO3RoaXMuaW5m b3JtKCdoaWRlJyk7dGhpcy5fc2hvd249ZmFsc2U7cmV0dXJuIHRoaXM7fSx1cGRh dGVQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiB0cnVlO30sZGVzdHJveTpmdW5j dGlvbigpe3RoaXMuaGlkZSgpO3RoaXMuaW5mb3JtKCdkZXN0cm95Jyk7dGhpcy5f cm9vdD1udWxsO2EudW5zdWJzY3JpYmUodGhpcy5fdHJhbnNpdGlvblN1YnNjcmlw dGlvbik7dGhpcy5fdHJhbnNpdGlvblN1YnNjcmlwdGlvbj1udWxsO319KTtqLmV4 cG9ydHM9Zjt9KTsKX19lKCJsYXllciIsWyJMYXllciJdLGZ1bmN0aW9uKGEsYil7 YS5MYXllcj1iKCdMYXllcicpO30sMyk7CmZ1bmN0aW9uIE92ZXJsYXkoKXtyZXR1 cm4gdGhpcy5wYXJlbnQuY29uc3RydWN0KHRoaXMpO31DbGFzcy5leHRlbmQoT3Zl cmxheSwnTGF5ZXInKTshZnVuY3Rpb24oKXt2YXIgYT1udWxsO2Z1bmN0aW9uIGIo ZCxlKXt2YXIgYztkLnN1YnNjcmliZSgnc2hvdycsZnVuY3Rpb24oKXtjPUV2ZW50 Lmxpc3Rlbihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJ2tleWRvd24nLGZ1bmN0 aW9uKGV2ZW50KXtpZihldmVudC5rZXlDb2RlPT1LRVlTLkVTQyYmKGRvY3VtZW50 LmFjdGl2ZUVsZW1lbnQ9PWRvY3VtZW50LmJvZHl8fERPTS5jb250YWlucyhlLGRv Y3VtZW50LmFjdGl2ZUVsZW1lbnQpKSlkLmhpZGUoKTt9KTt9KTtkLnN1YnNjcmli ZSgnaGlkZScsZnVuY3Rpb24oKXtjLnJlbW92ZSgpO2M9bnVsbDt9KTt9Y29weV9w cm9wZXJ0aWVzKE92ZXJsYXkse2dldEluc3RhbmNlOmZ1bmN0aW9uKGMpe3ZhciBk PVBhcmVudC5ieUNsYXNzKGMsJ3VpT3ZlcmxheScpO3JldHVybiBkP0RhdGFTdG9y ZS5nZXQoZCwnb3ZlcmxheScpOm51bGw7fSxBUlJPV19PRkZTRVQ6MTUsQVJST1df TEVOR1RIOjE2LEFSUk9XX0NMQVNTOntib3R0b206J3VpT3ZlcmxheUFycm93Qm90 dG9tJyx0b3A6J3VpT3ZlcmxheUFycm93VG9wJyxyaWdodDondWlPdmVybGF5QXJy b3dSaWdodCcsbGVmdDondWlPdmVybGF5QXJyb3dMZWZ0J319KTtPdmVybGF5LnBy b3RvdHlwZT17X3Nob3VsZEJ1aWxkV3JhcHBlcjp0cnVlLF9oaWRlT25TdWJtaXQ6 ZmFsc2UsX2hpZGVPblN1Y2Nlc3M6dHJ1ZSxfZmFkZU9uU2hvdzp0cnVlLF9mYWRl T25IaWRlOnRydWUsX2hhc0Zvb3RlcjpmYWxzZSxkZXN0cm95T25IaWRlOnRydWUs aW5pdDpmdW5jdGlvbihjKXt0aGlzLnBhcmVudC5pbml0KGMpO3RoaXMuX2Fycm93 PURPTS5zY3J5KHRoaXMuX3Jvb3QsJy51aU92ZXJsYXlBcnJvdycpWzBdfHxudWxs O3RoaXMuX292ZXJsYXk9RE9NLnNjcnkodGhpcy5fcm9vdCwnZGl2LnVpT3Zlcmxh eScpWzBdfHx0aGlzLl9yb290O0NTUy5oaWRlKHRoaXMuX3Jvb3QpO0RPTS5hcHBl bmRDb250ZW50KHRoaXMuX2luc2VydFBhcmVudCx0aGlzLl9yb290KTtEYXRhU3Rv cmUuc2V0KHRoaXMuX292ZXJsYXksJ292ZXJsYXknLHRoaXMpO3ZhciBkPURhdGFT dG9yZS5nZXQodGhpcy5fb3ZlcmxheSwnd2lkdGgnKTtkJiZ0aGlzLnNldFdpZHRo KGQpO3RoaXMuc2V0SGlkZU9uU3VibWl0KERhdGFTdG9yZS5nZXQodGhpcy5fb3Zl cmxheSwnaGlkZW9uc3VibWl0Jyk9PSd0cnVlJyk7dGhpcy5zZXRIaWRlT25TdWNj ZXNzKERhdGFTdG9yZS5nZXQodGhpcy5fb3ZlcmxheSwnaGlkZW9uc3VjY2Vzcycp IT0nZmFsc2UnKTt0aGlzLnNldEZhZGVPblNob3coRGF0YVN0b3JlLmdldCh0aGlz Ll9vdmVybGF5LCdmYWRlb25zaG93JykhPSdmYWxzZScpO3RoaXMuc2V0RmFkZU9u SGlkZShEYXRhU3RvcmUuZ2V0KHRoaXMuX292ZXJsYXksJ2ZhZGVvbmhpZGUnKSE9 J2ZhbHNlJyk7dGhpcy5zZXRIaWRlT25CbHVyKERhdGFTdG9yZS5nZXQodGhpcy5f b3ZlcmxheSwnaGlkZW9uYmx1cicpPT0ndHJ1ZScpO3RoaXMuc2V0RGVzdHJveU9u SGlkZShEYXRhU3RvcmUuZ2V0KHRoaXMuX292ZXJsYXksJ2Rlc3Ryb3lvbmhpZGUn KSE9J2ZhbHNlJyk7dGhpcy5zZXRGaXhlZChEYXRhU3RvcmUuZ2V0KHRoaXMuX292 ZXJsYXksJ2ZpeGVkJyk9PSd0cnVlJyk7dGhpcy5faGFzRm9vdGVyPURhdGFTdG9y ZS5nZXQodGhpcy5fb3ZlcmxheSwnaGFzZm9vdGVyJyxmYWxzZSk7RXZlbnQubGlz dGVuKHRoaXMuX292ZXJsYXkse2NsaWNrOnRoaXMuY2xpY2suYmluZCh0aGlzKSxz dWJtaXQ6dGhpcy5zdWJtaXQuYmluZCh0aGlzKSxtb3VzZWVudGVyOnRoaXMuX29u TW91c2VFbnRlci5iaW5kKHRoaXMpLG1vdXNlbGVhdmU6dGhpcy5fb25Nb3VzZUxl YXZlLmJpbmQodGhpcyl9KTtBcmJpdGVyLnN1YnNjcmliZSgnT3ZlcmxheS9zaG93 JyxmdW5jdGlvbihlLGYpe2lmKGYub3ZlcmxheS5nZXRDb250ZXh0KXRoaXMuX29u TGF5ZXJTaG93KGYub3ZlcmxheS5nZXRDb250ZXh0KCkpO30uYmluZCh0aGlzKSk7 QXJiaXRlci5zdWJzY3JpYmUoJ092ZXJsYXkvaGlkZScsZnVuY3Rpb24oZSxmKXtp ZihmLm92ZXJsYXkuZ2V0Q29udGV4dCl0aGlzLl9vbkxheWVySGlkZShmLm92ZXJs YXkuZ2V0Q29udGV4dCgpKTt9LmJpbmQodGhpcykpO2IodGhpcyx0aGlzLl9yb290 KTtyZXR1cm4gdGhpczt9LGluaXRXaXRob3V0QnVpbGRpbmdXcmFwcGVyOmZ1bmN0 aW9uKCl7dGhpcy5fc2hvdWxkQnVpbGRXcmFwcGVyPWZhbHNlO3JldHVybiB0aGlz LmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO30sX2J1aWxkV3JhcHBlcjpmdW5j dGlvbihjKXtjPXRoaXMucGFyZW50Ll9idWlsZFdyYXBwZXIoYyk7aWYoIXRoaXMu X3Nob3VsZEJ1aWxkV3JhcHBlcilyZXR1cm4gYzt2YXIgZD0kTignZGl2Jyx7Y2xh c3NOYW1lOid1aU92ZXJsYXlDb250ZW50J30sYyk7cmV0dXJuICROKCdkaXYnLHtj bGFzc05hbWU6J3VpT3ZlcmxheSd9LGQpO30sc2V0SGlkZU9uQmx1cjpmdW5jdGlv bihjKXtpZighYyYmdGhpcy5faGlkZU9uQmx1clRva2VuKXt0aGlzLl9yZW1vdmVI aWRlT25CbHVyTGlzdGVuZXIoKTt0aGlzLnVuc3Vic2NyaWJlKHRoaXMuX2hpZGVP bkJsdXJUb2tlbik7dGhpcy5faGlkZU9uQmx1clRva2VuPW51bGw7fWVsc2UgaWYo YyYmIXRoaXMuX2hpZGVPbkJsdXJUb2tlbil7dmFyIGQ9dGhpczt2YXIgZT1mdW5j dGlvbigpeyhmdW5jdGlvbigpe2QuX2hpZGVPbkJsdXJMaXN0ZW5lcj1FdmVudC5s aXN0ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdjbGljaycsZnVuY3Rpb24o ZXZlbnQpe2lmKCFDb250ZXh0dWFsVGhpbmcuY29udGFpbnNJbmNsdWRpbmdMYXll cnMoZC5fb3ZlcmxheSxldmVudC5nZXRUYXJnZXQoKSkpZC5zZXRGYWRlT25IaWRl KGZhbHNlKS5oaWRlKCk7fSk7fSkuZGVmZXIoKTt9O3RoaXMuc3Vic2NyaWJlKCdo aWRlJyx0aGlzLl9yZW1vdmVIaWRlT25CbHVyTGlzdGVuZXIuYmluZCh0aGlzKSk7 dGhpcy5faGlkZU9uQmx1clRva2VuPXRoaXMuc3Vic2NyaWJlKCdzaG93JyxlKTt0 aGlzLl9zaG93biYmZSgpO31yZXR1cm4gdGhpczt9LF9yZW1vdmVIaWRlT25CbHVy TGlzdGVuZXI6ZnVuY3Rpb24oKXt0aGlzLl9oaWRlT25CbHVyTGlzdGVuZXImJnRo aXMuX2hpZGVPbkJsdXJMaXN0ZW5lci5yZW1vdmUoKTt0aGlzLl9oaWRlT25CbHVy TGlzdGVuZXI9bnVsbDt9LHNldERlc3Ryb3lPbkhpZGU6ZnVuY3Rpb24oYyl7dGhp cy5kZXN0cm95T25IaWRlPWM7cmV0dXJuIHRoaXM7fSxzZXRIaWRlT25TdWJtaXQ6 ZnVuY3Rpb24oYyl7dGhpcy5faGlkZU9uU3VibWl0PWM7cmV0dXJuIHRoaXM7fSxz ZXRIaWRlT25TdWNjZXNzOmZ1bmN0aW9uKGMpe3RoaXMuX2hpZGVPblN1Y2Nlc3M9 YztyZXR1cm4gdGhpczt9LHNldEZhZGVPblNob3c6ZnVuY3Rpb24oYyl7dGhpcy5f ZmFkZU9uU2hvdz1jO3JldHVybiB0aGlzO30sc2V0RmFkZU9uSGlkZTpmdW5jdGlv bihjKXt0aGlzLl9mYWRlT25IaWRlPWM7cmV0dXJuIHRoaXM7fSxzZXRXaWR0aDpm dW5jdGlvbihjKXt0aGlzLndpZHRoPXBhcnNlSW50KGMsMTApO3JldHVybiB0aGlz O30sc2V0Rml4ZWQ6ZnVuY3Rpb24oYyl7dGhpcy5maXhlZD1jO3JldHVybiB0aGlz O30sZ2V0T3ZlcmxheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vdmVybGF5O30s c2hvdzpmdW5jdGlvbigpe2lmKCF0aGlzLl9zaG93bil7Q1NTLnNob3codGhpcy5f cm9vdCk7aWYodGhpcy5fZmFkZU9uU2hvdyE9PWZhbHNlKXtDU1Muc2V0U3R5bGUo dGhpcy5fb3ZlcmxheSwnb3BhY2l0eScsMCk7dGhpcy5wYXJlbnQuc2hvdygpO2Fu aW1hdGlvbih0aGlzLl9vdmVybGF5KS5mcm9tKCdvcGFjaXR5JywwKS50bygnb3Bh Y2l0eScsMSkuZHVyYXRpb24oMTAwKS5vbmRvbmUoQ1NTLnNldFN0eWxlLmN1cnJ5 KHRoaXMuX292ZXJsYXksJ29wYWNpdHknLCcnKSkuZ28oKTt9ZWxzZSB0aGlzLnBh cmVudC5zaG93KCk7QXJiaXRlci5pbmZvcm0oJ2xheWVyX3Nob3duJyx7dHlwZTon T3ZlcmxheSd9KTtBcmJpdGVyLmluZm9ybSgnT3ZlcmxheS9zaG93Jyx7b3Zlcmxh eTp0aGlzfSk7fXJldHVybiB0aGlzO30sdXBkYXRlUG9zaXRpb246ZnVuY3Rpb24o KXtpZih0aGlzLndpZHRoKUNTUy5zZXRTdHlsZSh0aGlzLl9vdmVybGF5LCd3aWR0 aCcsdGhpcy53aWR0aCsncHgnKTtyZXR1cm4gdHJ1ZTt9LGhpZGU6ZnVuY3Rpb24o KXtpZighdGhpcy5fc2hvd258fHRoaXMuaW5mb3JtKCdiZWZvcmVoaWRlJyk9PT1m YWxzZSlyZXR1cm4gdGhpczt0aGlzLl9zaG93bj1mYWxzZTtpZih0aGlzLl9mYWRl T25IaWRlIT09ZmFsc2Upe2FuaW1hdGlvbih0aGlzLl9vdmVybGF5KS5mcm9tKCdv cGFjaXR5JywxKS50bygnb3BhY2l0eScsMCkuZHVyYXRpb24oMjUwKS5vbmRvbmUo dGhpcy5fZmluaXNoSGlkZS5iaW5kKHRoaXMpKS5nbygpO31lbHNlIHRoaXMuX2Zp bmlzaEhpZGUoKTtyZXR1cm4gdGhpczt9LF9maW5pc2hIaWRlOmZ1bmN0aW9uKCl7 dGhpcy5wYXJlbnQuaGlkZSgpO0FyYml0ZXIuaW5mb3JtKCdsYXllcl9oaWRkZW4n LHt0eXBlOidPdmVybGF5J30pO0FyYml0ZXIuaW5mb3JtKCdPdmVybGF5L2hpZGUn LHtvdmVybGF5OnRoaXN9KTt0aGlzLmRlc3Ryb3lPbkhpZGUmJnRoaXMuZGVzdHJv eSgpO30scmVuZGVyQXJyb3c6ZnVuY3Rpb24oZixkKXtmb3IodmFyIGUgaW4gT3Zl cmxheS5BUlJPV19DTEFTUylDU1MuY29uZGl0aW9uQ2xhc3ModGhpcy5fb3Zlcmxh eSxPdmVybGF5LkFSUk9XX0NMQVNTW2VdLGY9PWUpO0NTUy5jb25kaXRpb25DbGFz cyh0aGlzLl9vdmVybGF5LCd1aU92ZXJsYXlXaXRoRm9vdGVyQXJyb3dCb3R0b20n LGY9PSdib3R0b20nJiZ0aGlzLl9oYXNGb290ZXIpO2lmKGY9PSdub25lJylyZXR1 cm47aWYoIXRoaXMuX2Fycm93KXt0aGlzLl9hcnJvdz0kTignaScse2NsYXNzTmFt ZTondWlPdmVybGF5QXJyb3cnfSk7RE9NLmFwcGVuZENvbnRlbnQodGhpcy5fb3Zl cmxheSx0aGlzLl9hcnJvdyk7fUNTUy5zZXRTdHlsZSh0aGlzLl9hcnJvdywndG9w JywnJyk7Q1NTLnNldFN0eWxlKHRoaXMuX2Fycm93LCdsZWZ0JywnJyk7Q1NTLnNl dFN0eWxlKHRoaXMuX2Fycm93LCdyaWdodCcsJycpO0NTUy5zZXRTdHlsZSh0aGlz Ll9hcnJvdywnbWFyZ2luJywnJyk7dmFyIGg9Zj09J3RvcCd8fGY9PSdib3R0b20n O3ZhciBnPWg/KGludGxfbG9jYWxlX2lzX3J0bCgpPydyaWdodCc6J2xlZnQnKTon dG9wJztkPWR8fDA7Q1NTLnNldFN0eWxlKHRoaXMuX2Fycm93LGcsZCsnJScpO3Zh ciBjPU92ZXJsYXkuQVJST1dfTEVOR1RIK092ZXJsYXkuQVJST1dfT0ZGU0VUKjI7 Q1NTLnNldFN0eWxlKHRoaXMuX2Fycm93LCdtYXJnaW4tJytnLC0oYypkLzEwMC1P dmVybGF5LkFSUk9XX09GRlNFVCkrJ3B4Jyk7fSxkZXN0cm95OmZ1bmN0aW9uKCl7 RGF0YVN0b3JlLnJlbW92ZSh0aGlzLl9yb290LCdvdmVybGF5Jyk7dGhpcy5wYXJl bnQuZGVzdHJveSgpO30sY2xpY2s6ZnVuY3Rpb24oZCl7dmFyIGU9ZC5nZXRUYXJn ZXQoKTt2YXIgYz1QYXJlbnQuYnlUYWcoZSwnaW5wdXQnKXx8UGFyZW50LmJ5VGFn KGUsJ2J1dHRvbicpfHxQYXJlbnQuYnlUYWcoZSwnYScpO2lmKGMpe2E9YztpZihD U1MuaGFzQ2xhc3MoYywndWlPdmVybGF5Q2FuY2VsQnV0dG9uJykpe2lmKHRoaXMu aW5mb3JtKCdjYW5jZWwnKSE9PWZhbHNlKXRoaXMuaGlkZSgpO2QucHJldmVudCgp O319fSxzdWJtaXQ6ZnVuY3Rpb24oZSl7dmFyIGY9ZS5nZXRUYXJnZXQoKTtpZih0 aGlzLmluZm9ybSgnc3VibWl0Jyk9PT1mYWxzZSl7ZS5raWxsKCk7cmV0dXJuO312 YXIgZz1mdW5jdGlvbigpe2lmKHRoaXMuaW5mb3JtKCdzdWNjZXNzJykhPT1mYWxz ZSYmdGhpcy5faGlkZU9uU3VjY2Vzcyl0aGlzLmhpZGUoKTt9LmJpbmQodGhpcyk7 aWYoRm9ybS5nZXRBdHRyaWJ1dGUoZiwncmVsJyk9PT0nYXN5bmMnKXt2YXIgaD0o Rm9ybS5nZXRBdHRyaWJ1dGUoZiwnbWV0aG9kJyl8fCdHRVQnKS50b1VwcGVyQ2Fz ZSgpO3ZhciBkPUZvcm0uc2VyaWFsaXplKGYsYSk7Rm9ybS5zZXREaXNhYmxlZChm LHRydWUpO3ZhciBpPVBhcmVudC5ieUNsYXNzKGEsJ3N0YXRfZWxlbScpfHxmO3Zh ciBjPUZvcm0uZ2V0QXR0cmlidXRlKGYsJ2FqYXhpZnknKXx8Rm9ybS5nZXRBdHRy aWJ1dGUoZiwnYWN0aW9uJyk7dHJhY2tSZWZlcnJlcihmLGMpO2lmKHRoaXMuX2hp ZGVPblN1Ym1pdCl7ZygpO2c9YmFnb2Zob2xkaW5nO31uZXcgQXN5bmNSZXF1ZXN0 KGMpLnNldERhdGEoZCkuc2V0TmVjdGFyTW9kdWxlRGF0YVNhZmUoZikuc2V0UmVh ZE9ubHkoaD09J0dFVCcpLnNldE1ldGhvZChoKS5zZXRTdGF0dXNFbGVtZW50KGkp LnNldFJlbGF0aXZlVG8oZikuc2V0SW5pdGlhbEhhbmRsZXIoRm9ybS5zZXREaXNh YmxlZC5jdXJyeShmLGZhbHNlKSkuc2V0SGFuZGxlcihnKS5zZXRFcnJvckhhbmRs ZXIoZnVuY3Rpb24oail7aWYodGhpcy5pbmZvcm0oJ2Vycm9yJyx7cmVzcG9uc2U6 an0pIT09ZmFsc2UpQXN5bmNSZXNwb25zZS5kZWZhdWx0RXJyb3JIYW5kbGVyKGop O30uYmluZCh0aGlzKSkuc2VuZCgpO2Uua2lsbCgpO31lbHNlIGcoKTt9LF9vbk1v dXNlRW50ZXI6ZnVuY3Rpb24oKXt0aGlzLl9maXJlTW91c2VMZWF2ZU9uTGF5ZXJI aWRlPWZhbHNlO2lmKCF0aGlzLl9sYXllck5vZGUpdGhpcy5pbmZvcm0oJ21vdXNl ZW50ZXInKTt9LF9vbk1vdXNlTGVhdmU6ZnVuY3Rpb24oKXtpZighdGhpcy5fbGF5 ZXJOb2RlKXRoaXMuaW5mb3JtKCdtb3VzZWxlYXZlJyk7dGhpcy5fZmlyZU1vdXNl TGVhdmVPbkxheWVySGlkZT0hIXRoaXMuX2xheWVyTm9kZTt9LF9vbkxheWVyU2hv dzpmdW5jdGlvbihjKXtpZihjJiZET00uY29udGFpbnModGhpcy5fcm9vdCxjKSl0 aGlzLl9sYXllck5vZGU9Yzt9LF9vbkxheWVySGlkZTpmdW5jdGlvbihjKXtpZihj JiZ0aGlzLl9sYXllck5vZGU9PT1jKXt0aGlzLl9sYXllck5vZGU9bnVsbDtpZih0 aGlzLl9maXJlTW91c2VMZWF2ZU9uTGF5ZXJIaWRlKXRoaXMuX29uTW91c2VMZWF2 ZS5iaW5kKHRoaXMpLmRlZmVyKCk7fX19O30oKTsKZnVuY3Rpb24gQ29udGV4dHVh bERpYWxvZ1goKXt0aGlzLnBhcmVudC5jb25zdHJ1Y3QodGhpcyk7cmV0dXJuIHRo aXM7fUNsYXNzLmV4dGVuZChDb250ZXh0dWFsRGlhbG9nWCwnT3ZlcmxheScpO2Nv cHlfcHJvcGVydGllcyhDb250ZXh0dWFsRGlhbG9nWCx7QVJST1dfSU5TRVQ6MjIs VE9QX01BUkdJTjo4LEJPVFRPTV9NQVJHSU46MzAsSEFMT19XSURUSDowLFBPU0lU SU9OX1RPX0NMQVNTOnthYm92ZTondWlDb250ZXh0dWFsRGlhbG9nQWJvdmUnLGJl bG93Oid1aUNvbnRleHR1YWxEaWFsb2dCZWxvdycsbGVmdDondWlDb250ZXh0dWFs RGlhbG9nTGVmdCcscmlnaHQ6J3VpQ29udGV4dHVhbERpYWxvZ1JpZ2h0J30sUklH SFRfQUxJR05FRF9DTEFTUzondWlDb250ZXh0dWFsRGlhbG9nUmlnaHRBbGlnbmVk JyxQT1NJVElPTl9UT19BUlJPVzp7YWJvdmU6J2JvdHRvbScsYmVsb3c6J3RvcCcs bGVmdDoncmlnaHQnLHJpZ2h0OidsZWZ0J30sZ2V0SW5zdGFuY2U6ZnVuY3Rpb24o Yil7dmFyIGE9RGF0YVN0b3JlLmdldChiLCdDb250ZXh0dWFsRGlhbG9nWCcpO2lm KCFhKXt2YXIgYz1QYXJlbnQuYnlDbGFzcyhiLCd1aUNvbnRleHR1YWxEaWFsb2cn KTthPWMmJk92ZXJsYXkuZ2V0SW5zdGFuY2UoYyk7fXJldHVybiBhO319KTtDb250 ZXh0dWFsRGlhbG9nWC5wcm90b3R5cGU9e19zY3JvbGxMaXN0ZW5lcjpudWxsLGlu aXQ6ZnVuY3Rpb24oYyl7dGhpcy5wYXJlbnQuaW5pdChjKTt2YXIgYj1EYXRhU3Rv cmUuZ2V0LmN1cnJ5KHRoaXMuX3Jvb3QpO3RoaXMuc2V0QWxpZ25IKGIoJ2FsaWdu aCcsJ2xlZnQnKSk7dGhpcy5zZXRPZmZzZXRYKGIoJ29mZnNldHgnLDApKTt0aGlz LnNldE9mZnNldFkoYignb2Zmc2V0eScsMCkpO3RoaXMuc2V0UG9zaXRpb24oYign cG9zaXRpb24nLCdhYm92ZScpKTt2YXIgYT1iKCdjb250ZXh0Jyk7aWYoYSl7dGhp cy5zZXRDb250ZXh0KCQoYSkpO31lbHNle2E9YignY29udGV4dHNlbGVjdG9yJyk7 aWYoYSl0aGlzLnNldENvbnRleHQoRE9NLmZpbmQoZG9jdW1lbnQsYSkpO310aGlz Ll9jb250ZW50PURPTS5zY3J5KHRoaXMuX3Jvb3QsJy51aUNvbnRleHR1YWxEaWFs b2dDb250ZW50JylbMF07dmFyIGU9bnVsbDt2YXIgZD1udWxsO3RoaXMuc3Vic2Ny aWJlKCdzaG93JyxmdW5jdGlvbigpe3ZhciBmPXRoaXMudXBkYXRlUG9zaXRpb24u c2hpZWxkKHRoaXMpO2U9RXZlbnQubGlzdGVuKHdpbmRvdywncmVzaXplJyxmKTtk PUFyYml0ZXIuc3Vic2NyaWJlKCdyZWZsb3cnLGYpO3RoaXMuX3NldHVwU2Nyb2xs TGlzdGVuZXIodGhpcy5fc2Nyb2xsUGFyZW50KTtDb250ZXh0dWFsVGhpbmcucmVn aXN0ZXIodGhpcy5fcm9vdCx0aGlzLmNvbnRleHQpO30uYmluZCh0aGlzKSk7dGhp cy5zdWJzY3JpYmUoJ2hpZGUnLGZ1bmN0aW9uKCl7ZS5yZW1vdmUoKTtBcmJpdGVy LnVuc3Vic2NyaWJlKGQpO3RoaXMuX3RlYXJkb3duU2Nyb2xsTGlzdGVuZXIoKTtD b250ZXh0dWFsVGhpbmcucmVtb3ZlKHRoaXMuX3Jvb3QpO30uYmluZCh0aGlzKSk7 QXJiaXRlci5zdWJzY3JpYmUoJ0hvdmVyY2FyZC9oaWRlJyxmdW5jdGlvbihmLGcp e2lmKEhvdmVyY2FyZC5jb250YWlucyh0aGlzLmdldENvbnRleHQoKSkpdGhpcy5o aWRlKCk7fS5iaW5kKHRoaXMpKTtyZXR1cm4gdGhpczt9LF9idWlsZFdyYXBwZXI6 ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5wYXJlbnQuX2J1aWxkV3JhcHBlcihhKTtp ZighdGhpcy5fc2hvdWxkQnVpbGRXcmFwcGVyKXJldHVybiBiO0NTUy5hZGRDbGFz cyhiLCd1aUNvbnRleHR1YWxEaWFsb2cnKTtyZXR1cm4gJE4oJ2Rpdicse2NsYXNz TmFtZTondWlDb250ZXh0dWFsRGlhbG9nUG9zaXRpb25lcid9LGIpO30sc2V0QWxp Z25IOmZ1bmN0aW9uKGEpe3RoaXMuYWxpZ25IPWE7dGhpcy5fdXBkYXRlQWxpZ25t ZW50Q2xhc3MoKTt0aGlzLl9zaG93biYmdGhpcy51cGRhdGVQb3NpdGlvbigpO3Ro aXMucG9zaXRpb24mJnRoaXMuX3VwZGF0ZUFycm93KCk7cmV0dXJuIHRoaXM7fSxn ZXRDb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnQ7fSxnZXRD b250ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGV4dDt9LHNldENvbnRl eHQ6ZnVuY3Rpb24oYSl7YT0kKGEpO2lmKHRoaXMuY29udGV4dCYmdGhpcy5jb250 ZXh0IT1hKURhdGFTdG9yZS5yZW1vdmUodGhpcy5jb250ZXh0LCdDb250ZXh0dWFs RGlhbG9nWCcpO3RoaXMuY29udGV4dD1hO3ZhciBiPVBhcmVudC5ieUNsYXNzKGEs J2ZiUGhvdG9Tbm93Ym94Jyk7dGhpcy5zZXRQYXJlbnQoYnx8ZG9jdW1lbnQuYm9k eSk7aWYodGhpcy5fc2Nyb2xsTGlzdGVuZXImJnRoaXMuX3Njcm9sbFBhcmVudCE9 PWIpe3RoaXMuX3RlYXJkb3duU2Nyb2xsTGlzdGVuZXIoKTt0aGlzLl9zZXR1cFNj cm9sbExpc3RlbmVyKGIpO310aGlzLl9zY3JvbGxQYXJlbnQ9Yjt0aGlzLl9zdGFj a09uVG9wT2YodGhpcy5jb250ZXh0KTtEYXRhU3RvcmUuc2V0KHRoaXMuY29udGV4 dCwnQ29udGV4dHVhbERpYWxvZ1gnLHRoaXMpO3JldHVybiB0aGlzO30sbGlzdGVu OmZ1bmN0aW9uKGIsYSl7cmV0dXJuIEV2ZW50Lmxpc3Rlbih0aGlzLl9yb290LGIs YSk7fSxzZXRGaXhlZDpmdW5jdGlvbihhKXtDU1MuY29uZGl0aW9uQ2xhc3ModGhp cy5fcm9vdCwndWlDb250ZXh0dWFsRGlhbG9nRml4ZWQnLGEpO3JldHVybiB0aGlz LnBhcmVudC5zZXRGaXhlZChhKTt9LHNldE9mZnNldFg6ZnVuY3Rpb24oYSl7dGhp cy5vZmZzZXRYPXBhcnNlSW50KGEsMTApfHwwO3RoaXMuX3Nob3duJiZ0aGlzLnVw ZGF0ZVBvc2l0aW9uKCk7cmV0dXJuIHRoaXM7fSxzZXRPZmZzZXRZOmZ1bmN0aW9u KGEpe3RoaXMub2Zmc2V0WT1wYXJzZUludChhLDEwKXx8MDt0aGlzLl9zaG93biYm dGhpcy51cGRhdGVQb3NpdGlvbigpO3JldHVybiB0aGlzO30sc2V0UG9zaXRpb246 ZnVuY3Rpb24oYil7dGhpcy5wb3NpdGlvbj1iO2Zvcih2YXIgYSBpbiBDb250ZXh0 dWFsRGlhbG9nWC5QT1NJVElPTl9UT19DTEFTUylDU1MuY29uZGl0aW9uQ2xhc3Mo dGhpcy5fcm9vdCxDb250ZXh0dWFsRGlhbG9nWC5QT1NJVElPTl9UT19DTEFTU1th XSxiPT1hKTt0aGlzLl91cGRhdGVBbGlnbm1lbnRDbGFzcygpO3RoaXMuX3Nob3du JiZ0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7dGhpcy5fdXBkYXRlQXJyb3coKTtyZXR1 cm4gdGhpczt9LHVwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXMuY29u dGV4dClyZXR1cm4gZmFsc2U7dGhpcy5wYXJlbnQudXBkYXRlUG9zaXRpb24oKTt2 YXIgYz10aGlzLmZpeGVkPyd2aWV3cG9ydCc6J2RvY3VtZW50Jzt2YXIgZz1WZWN0 b3IyLmdldEVsZW1lbnRQb3NpdGlvbih0aGlzLmNvbnRleHQsYyk7dmFyIGg9dGhp cy5fc2Nyb2xsUGFyZW50O2lmKGgpZz1nLnN1YihWZWN0b3IyLmdldEVsZW1lbnRQ b3NpdGlvbihoLCdkb2N1bWVudCcpKS5hZGQoaC5zY3JvbGxMZWZ0LGguc2Nyb2xs VG9wKTt2YXIgYT1WZWN0b3IyLmdldEVsZW1lbnREaW1lbnNpb25zKHRoaXMuY29u dGV4dCk7dmFyIGs9dGhpcy5wb3NpdGlvbj09J2Fib3ZlJ3x8dGhpcy5wb3NpdGlv bj09J2JlbG93Jzt2YXIgZD1pbnRsX2xvY2FsZV9pc19ydGwoKTtpZigodGhpcy5w b3NpdGlvbj09J3JpZ2h0J3x8KGsmJnRoaXMuYWxpZ25IPT0ncmlnaHQnKSkhPWQp Zz1nLmFkZChhLngsMCk7aWYodGhpcy5wb3NpdGlvbj09J2JlbG93JylnPWcuYWRk KDAsYS55KTt2YXIgZj1uZXcgVmVjdG9yMigwLDApO3ZhciBiPXRoaXMud2lkdGgr MipDb250ZXh0dWFsRGlhbG9nWC5IQUxPX1dJRFRIO2lmKGsmJnRoaXMuYWxpZ25I PT0nY2VudGVyJyl7Zj1mLmFkZCgoYS54LWIpLzIsMCk7fWVsc2V7Zj1mLnN1Yihr P0NvbnRleHR1YWxEaWFsb2dYLkhBTE9fV0lEVEg6MCxrPzA6Q29udGV4dHVhbERp YWxvZ1guSEFMT19XSURUSCk7dmFyIGo9az9hLng6YS55O3ZhciBlPTIqKENvbnRl eHR1YWxEaWFsb2dYLkFSUk9XX0lOU0VUK0NvbnRleHR1YWxEaWFsb2dYLkhBTE9f V0lEVEgpO2lmKGo8ZSl7dmFyIGk9ai8yLUNvbnRleHR1YWxEaWFsb2dYLkFSUk9X X0lOU0VUO2Y9Zi5hZGQoaz9pOjAsaz8wOmkpO319Zj1mLmFkZCh0aGlzLm9mZnNl dFgsdGhpcy5vZmZzZXRZKTtpZihkKWY9Zi5tdWwoLTEsMSk7Zz1nLmFkZChmKTtp Zih0aGlzLmZpeGVkKWc9bmV3IFZlY3RvcjIoZy54LGcueSwnZG9jdW1lbnQnKTtn LnNldEVsZW1lbnRQb3NpdGlvbih0aGlzLl9yb290KTt0aGlzLl9hZGp1c3RWZXJ0 aWNhbFBvc2l0aW9uKCk7cmV0dXJuIHRydWU7fSxzY3JvbGxUbzpmdW5jdGlvbigp e2lmKHRoaXMuY29udGV4dClCb290bG9hZGVyLmxvYWRDb21wb25lbnRzKCdkb20t c2Nyb2xsJyxmdW5jdGlvbigpe0RPTVNjcm9sbC5zY3JvbGxUbyh0aGlzLmNvbnRl eHQsdHJ1ZSx0cnVlKTt9LmJpbmQodGhpcykpO30sZGVzdHJveTpmdW5jdGlvbigp e3RoaXMuY29udGV4dCYmRGF0YVN0b3JlLnJlbW92ZSh0aGlzLmNvbnRleHQsJ0Nv bnRleHR1YWxEaWFsb2dYJyk7dGhpcy5wYXJlbnQuZGVzdHJveSgpO30sX2FkanVz dFZlcnRpY2FsUG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzLnBvc2l0aW9uIT0n bGVmdCcmJnRoaXMucG9zaXRpb24hPSdyaWdodCcpe0NTUy5zZXRTdHlsZSh0aGlz Ll9vdmVybGF5LCd0b3AnLCcnKTtyZXR1cm47fXZhciBjPVZlY3RvcjIuZ2V0RWxl bWVudFBvc2l0aW9uKHRoaXMuX3Jvb3QsJ3ZpZXdwb3J0JykueTt2YXIgYT1WZWN0 b3IyLmdldEVsZW1lbnREaW1lbnNpb25zKHRoaXMuX292ZXJsYXkpLnk7dmFyIGU9 VmVjdG9yMi5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKS55O3ZhciBkPUNvbnRleHR1 YWxEaWFsb2dYLlRPUF9NQVJHSU47dmFyIGI9TWF0aC5taW4oTWF0aC5tYXgoMCxj K2ErQ29udGV4dHVhbERpYWxvZ1guQk9UVE9NX01BUkdJTi1lKSxNYXRoLm1heCgt ZCxjLWQpLGEtMipDb250ZXh0dWFsRGlhbG9nWC5BUlJPV19JTlNFVC0yKkNvbnRl eHR1YWxEaWFsb2dYLkhBTE9fV0lEVEgpO0NTUy5zZXRTdHlsZSh0aGlzLl9vdmVy bGF5LCd0b3AnLCgtMSpiKSsncHgnKTtDU1Muc2V0U3R5bGUodGhpcy5fYXJyb3cs J3RvcCcsT3ZlcmxheS5BUlJPV19PRkZTRVQrJ3B4Jyk7Q1NTLnNldFN0eWxlKHRo aXMuX2Fycm93LCdtYXJnaW5Ub3AnLGIrJ3B4Jyk7fSxfdXBkYXRlQXJyb3c6ZnVu Y3Rpb24oKXt2YXIgYT0wO2lmKHRoaXMucG9zaXRpb249PSdhYm92ZSd8fHRoaXMu cG9zaXRpb249PSdiZWxvdycpc3dpdGNoKHRoaXMuYWxpZ25IKXtjYXNlICdjZW50 ZXInOmE9NTA7YnJlYWs7Y2FzZSAncmlnaHQnOmE9MTAwO2JyZWFrO310aGlzLnJl bmRlckFycm93KENvbnRleHR1YWxEaWFsb2dYLlBPU0lUSU9OX1RPX0FSUk9XW3Ro aXMucG9zaXRpb25dLGEpO30sX3VwZGF0ZUFsaWdubWVudENsYXNzOmZ1bmN0aW9u KCl7Q1NTLmNvbmRpdGlvbkNsYXNzKHRoaXMuX3Jvb3QsQ29udGV4dHVhbERpYWxv Z1guUklHSFRfQUxJR05FRF9DTEFTUywodGhpcy5wb3NpdGlvbj09J2Fib3ZlJ3x8 dGhpcy5wb3NpdGlvbj09J2JlbG93JykmJnRoaXMuYWxpZ25IPT0ncmlnaHQnKTt9 LF9zZXR1cFNjcm9sbExpc3RlbmVyOmZ1bmN0aW9uKGEpe3RoaXMuX3Njcm9sbExp c3RlbmVyPUV2ZW50Lmxpc3RlbihhfHx3aW5kb3csJ3Njcm9sbCcsdGhpcy5fYWRq dXN0VmVydGljYWxQb3NpdGlvbi5zaGllbGQodGhpcykpO30sX3RlYXJkb3duU2Ny b2xsTGlzdGVuZXI6ZnVuY3Rpb24oKXt0aGlzLl9zY3JvbGxMaXN0ZW5lci5yZW1v dmUoKTt0aGlzLl9zY3JvbGxMaXN0ZW5lcj1udWxsO319OwppZighd2luZG93LlRv Z2dsZXIpe3dpbmRvdy5Ub2dnbGVyPWZ1bmN0aW9uKCl7dGhpcy5pbml0KCk7fTso ZnVuY3Rpb24oKXt2YXIgZT1bXTt2YXIgYztmdW5jdGlvbiBkKCl7ZD1iYWdvZmhv bGRpbmc7RXZlbnQubGlzdGVuKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwnY2xp Y2snLGZ1bmN0aW9uKGV2ZW50KXt2YXIgZj1ldmVudC5nZXRUYXJnZXQoKTtlLmVh Y2goZnVuY3Rpb24oZyl7Zy5hY3RpdmUmJiFnLnN0aWNreSYmIUNvbnRleHR1YWxU aGluZy5jb250YWluc0luY2x1ZGluZ0xheWVycyhnLmdldEFjdGl2ZSgpLGYpJiYh Zy5pblRhcmdldEZseW91dChmKSYmZy5pbkFjdGl2ZURpYWxvZygpJiZnLmhpZGUo KTt9KTt9LEV2ZW50LlByaW9yaXR5LlVSR0VOVCk7fWZ1bmN0aW9uIGEoZyxmKXtp ZihnIGluc3RhbmNlb2YgVG9nZ2xlcilyZXR1cm4gZztyZXR1cm4gVG9nZ2xlci5n ZXRJbnN0YW5jZShmKTt9ZnVuY3Rpb24gYihnKXt2YXIgZj1ET00uc2NyeShnLCdh W3JlbD0idG9nZ2xlIl0nKTtpZihmLmxlbmd0aD4wJiZmWzBdLmdldEF0dHJpYnV0 ZSgnZGF0YS10YXJnZXQnKSlyZXR1cm4gZ2UoZlswXS5nZXRBdHRyaWJ1dGUoJ2Rh dGEtdGFyZ2V0JykpO31DbGFzcy5taXhpbihUb2dnbGVyLCdBcmJpdGVyJyx7aW5p dDpmdW5jdGlvbigpe3RoaXMuYWN0aXZlPW51bGw7dGhpcy50b2dnbGVycz17fTt0 aGlzLnNldFN0aWNreShmYWxzZSk7ZS5wdXNoKHRoaXMpO3RoaXMuc3Vic2NyaWJl KFsnc2hvdycsJ2hpZGUnXSxUb2dnbGVyLmluZm9ybS5iaW5kKFRvZ2dsZXIpKTtk KCk7fSxzaG93OmZ1bmN0aW9uKGgpe3ZhciBmPWEodGhpcyxoKTt2YXIgaT1mLmFj dGl2ZTtpZihoIT09aSl7aSYmZi5oaWRlKCk7Zi5hY3RpdmU9aDtDU1MuYWRkQ2xh c3MoaCwnb3BlblRvZ2dsZXInKTt2YXIgZz1ET00uc2NyeShoLCdhW3JlbD0idG9n Z2xlIl0nKTtpZihnLmxlbmd0aD4wJiZnWzBdLmdldEF0dHJpYnV0ZSgnZGF0YS10 YXJnZXQnKSlDU1MucmVtb3ZlQ2xhc3MoZ2UoZ1swXS5nZXRBdHRyaWJ1dGUoJ2Rh dGEtdGFyZ2V0JykpLCd0b2dnbGVUYXJnZXRDbG9zZWQnKTtET00uYXBwZW5kQ29u dGVudChoLGYuZ2V0VG9nZ2xlcignbmV4dCcpKTtET00ucHJlcGVuZENvbnRlbnQo aCxmLmdldFRvZ2dsZXIoJ3ByZXYnKSk7Zi5pbmZvcm0oJ3Nob3cnLGYpO319LGhp ZGU6ZnVuY3Rpb24oaSl7dmFyIGc9YSh0aGlzLGkpO3ZhciBmPWcuYWN0aXZlO2lm KGYmJighaXx8aT09PWYpKXtDU1MucmVtb3ZlQ2xhc3MoZiwnb3BlblRvZ2dsZXIn KTt2YXIgaD1ET00uc2NyeShmLCdhW3JlbD0idG9nZ2xlIl0nKTtpZihoLmxlbmd0 aD4wJiZoWzBdLmdldEF0dHJpYnV0ZSgnZGF0YS10YXJnZXQnKSlDU1MuYWRkQ2xh c3MoZ2UoaFswXS5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGFyZ2V0JykpLCd0b2dnbGVU YXJnZXRDbG9zZWQnKTt2YWx1ZXMoZy50b2dnbGVycykuZWFjaChET00ucmVtb3Zl KTtnLmluZm9ybSgnaGlkZScsZyk7Zy5hY3RpdmU9bnVsbDt9fSx0b2dnbGU6ZnVu Y3Rpb24oZyl7dmFyIGY9YSh0aGlzLGcpO2lmKGYuYWN0aXZlPT09Zyl7Zi5oaWRl KCk7fWVsc2UgZi5zaG93KGcpO30sZ2V0QWN0aXZlOmZ1bmN0aW9uKCl7cmV0dXJu IGEodGhpcykuYWN0aXZlO30saW5UYXJnZXRGbHlvdXQ6ZnVuY3Rpb24oZyl7dmFy IGY9Yih0aGlzLmdldEFjdGl2ZSgpKTtyZXR1cm4gZiYmQ29udGV4dHVhbFRoaW5n LmNvbnRhaW5zSW5jbHVkaW5nTGF5ZXJzKGYsZyk7fSxpbkFjdGl2ZURpYWxvZzpm dW5jdGlvbigpe3ZhciBmPURpYWxvZy5nZXRDdXJyZW50KCk7cmV0dXJuICFmfHxE T00uY29udGFpbnMoZi5nZXRSb290KCksdGhpcy5nZXRBY3RpdmUoKSk7fSxnZXRU b2dnbGVyOmZ1bmN0aW9uKGcpe3ZhciBmPWEodGhpcyk7aWYoIWYudG9nZ2xlcnNb Z10pZi50b2dnbGVyc1tnXT0kTignYnV0dG9uJyx7Y2xhc3NOYW1lOidoaWRlVG9n Z2xlcicsb25mb2N1czpmdW5jdGlvbigpe3ZhciBoPURPTS5zY3J5KGYuYWN0aXZl LCdhW3JlbD0idG9nZ2xlIl0nKVswXTtoJiZoLmZvY3VzKCk7Zi5oaWRlKCk7fX0p O3JldHVybiB0aGlzLnRvZ2dsZXJzW2ddO30sc2V0U3RpY2t5OmZ1bmN0aW9uKGcp e3ZhciBmPWEodGhpcyk7Zz1nIT09ZmFsc2U7aWYoZyE9PWYuc3RpY2t5KXtmLnN0 aWNreT1nO2lmKGcpe2YuX3B0JiZBcmJpdGVyLnVuc3Vic2NyaWJlKGYuX3B0KTt9 ZWxzZSBmLl9wdD1BcmJpdGVyLnN1YnNjcmliZSgncGFnZV90cmFuc2l0aW9uJyxm LmhpZGUuYmluZChmLG51bGwpKTt9cmV0dXJuIGY7fX0pO2NvcHlfcHJvcGVydGll cyhUb2dnbGVyLFRvZ2dsZXIucHJvdG90eXBlKTtjb3B5X3Byb3BlcnRpZXMoVG9n Z2xlcix7Ym9vdHN0cmFwOmZ1bmN0aW9uKGYpe3ZhciBnPWYucGFyZW50Tm9kZTtU b2dnbGVyLmdldEluc3RhbmNlKGcpLnRvZ2dsZShnKTt9LGNyZWF0ZUluc3RhbmNl OmZ1bmN0aW9uKGcpe3ZhciBmPW5ldyBUb2dnbGVyKCkuc2V0U3RpY2t5KHRydWUp O0RhdGFTdG9yZS5zZXQoZywndG9nZ2xlcicsZik7cmV0dXJuIGY7fSxnZXRJbnN0 YW5jZTpmdW5jdGlvbihnKXt3aGlsZShnKXt2YXIgZj1EYXRhU3RvcmUuZ2V0KGcs J3RvZ2dsZXInKTtpZihmKXJldHVybiBmO2lmKENTUy5oYXNDbGFzcyhnLCd1aVRv Z2dsZUNvbnRleHQnKSlyZXR1cm4gVG9nZ2xlci5jcmVhdGVJbnN0YW5jZShnKTtn PWcucGFyZW50Tm9kZTt9cmV0dXJuIChjPWN8fG5ldyBUb2dnbGVyKCkpO30sbGlz dGVuOmZ1bmN0aW9uKGgsZyxmKXtyZXR1cm4gVG9nZ2xlci5zdWJzY3JpYmUoJEEo aCksZnVuY3Rpb24oaixpKXtpZihpLmdldEFjdGl2ZSgpPT09ZylyZXR1cm4gZihq LGkpO30pO30sc3Vic2NyaWJlOihmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24o aCxnKXtoPSRBKGgpO2lmKGguY29udGFpbnMoJ3Nob3cnKSllLmVhY2goZnVuY3Rp b24oaSl7aWYoaS5nZXRBY3RpdmUoKSlnLmN1cnJ5KCdzaG93JyxpKS5kZWZlcigp O30pO3JldHVybiBmKGgsZyk7fTt9KShUb2dnbGVyLnN1YnNjcmliZS5iaW5kKFRv Z2dsZXIpKX0pO30pKCk7fQpmdW5jdGlvbiBGdXR1cmVIb21lU2lkZU5hdigpe3Ro aXMucGFyZW50LmNvbnN0cnVjdCh0aGlzKTt9Q2xhc3MuZXh0ZW5kKEZ1dHVyZUhv bWVTaWRlTmF2LCdGdXR1cmVTaWRlTmF2Jyk7RnV0dXJlSG9tZVNpZGVOYXYucHJv dG90eXBlPXtpbml0OmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnQuaW5pdC5hcHBseSh0 aGlzLGFyZ3VtZW50cyk7dGhpcy5hamF4UGlwZT10cnVlO3RoaXMuc2VlQWxsRW5k cG9pbnQ9Ii9hamF4L2hvbWUvZ2VuZXJpYy5waHAiO3RoaXMudHlwZVNlY3Rpb25z PXtmYXZvcml0ZXM6J3Bpbm5lZE5hdicscHJvZmlsZXM6J3Bpbm5lZE5hdicsYXBw czonYXBwc05hdicsZ3JvdXBzOidncm91cHNOYXYnLHBhZ2VzOidwYWdlc05hdics bGlzdHM6J2xpc3RzTmF2Jyxjb25uZWN0X2FwcHM6J2Nvbm5lY3ROYXYnfTt0aGlz LnN3aXRjaGluZ0Zyb21UaXRhbkZpeGVkRnJhbWU9ZmFsc2U7dGhpcy5fYXJiaXRl clN1YnNjcmlwdGlvbnMucHVzaChBcmJpdGVyLnN1YnNjcmliZSgndGl0YW5fZml4 ZWRfZnJhbWVfY2hhbmdlZCcsdGhpcy5oYW5kbGVGaXhlZEZyYW1lQ2hhbmdlZC5i aW5kKHRoaXMpKSxBcmJpdGVyLnN1YnNjcmliZShOYXZpZ2F0aW9uTWVzc2FnZS5O QVZJR0FUSU9OX0ZBVk9SSVRFX1VQREFURSx0aGlzLnVwZGF0ZUZhdm9yaXRlLmJp bmQodGhpcykpLEFyYml0ZXIuc3Vic2NyaWJlKE5hdmlnYXRpb25NZXNzYWdlLk5B VklHQVRJT05fRklSU1RfUkVTUE9OU0UsdGhpcy5uYXZpZ2F0aW9uRmlyc3RSZXNw b25zZS5iaW5kKHRoaXMpKSk7dGhpcy5fZW5zdXJlSG92ZXIoJ2hvbWVTaWRlTmF2 Jyk7fSxpbml0TW9yZUxpbms6ZnVuY3Rpb24oYSl7dGhpcy5fZXZlbnRIYW5kbGVy cy5wdXNoKEV2ZW50Lmxpc3RlbihhLCdjbGljaycsdGhpcy5fc2hvd01vcmVTZWN0 aW9ucy5iaW5kKHRoaXMsYSkpKTt9LF9zaG93TW9yZVNlY3Rpb25zOmZ1bmN0aW9u KGIpe3ZhciBhPURPTS5zY3J5KHRoaXMucm9vdCwnZGl2LmJlbG93VGhyZXNob2xk Jyk7Q1NTLmhpZGUoYik7YS5mb3JFYWNoKGZ1bmN0aW9uKGMpe0NTUy5yZW1vdmVD bGFzcyhjLCdiZWxvd1RocmVzaG9sZCcpO30pO30saGFuZGxlRml4ZWRGcmFtZUNo YW5nZWQ6ZnVuY3Rpb24oZCxhLGMpe2lmKGEpe3ZhciBiPWZ1bmN0aW9uKGUsZil7 VUlQYWdlbGV0LmxvYWRGcm9tRW5kcG9pbnQoZSxmLHtmaXhlZF9mcmFtZTphLHNl bGVjdGVkX2tleTpjfSk7fTtiKCdQaW5uZWROYXZpZ2F0aW9uUGFnZWxldCcsJ3Bh Z2VsZXRfcGlubmVkX25hdicpO2IoJ0Jvb2ttYXJrTmF2aWdhdGlvblBhZ2VsZXQn LCdwYWdlbGV0X2Jvb2ttYXJrX25hdicpO2lmKGdlKCdjaGF0RnJpZW5kc09ubGlu ZScpKUNTUy5oaWRlKGdlKCdjaGF0RnJpZW5kc09ubGluZScpKTt9ZWxzZSB0aGlz LnN3aXRjaGluZ0Zyb21UaXRhbkZpeGVkRnJhbWU9dHJ1ZTt9LGhhbmRsZVBhZ2VU cmFuc2l0aW9uOmZ1bmN0aW9uKGEpe2lmKHRoaXMuc3dpdGNoaW5nRnJvbVRpdGFu Rml4ZWRGcmFtZSl7dGhpcy5zd2l0Y2hpbmdGcm9tVGl0YW5GaXhlZEZyYW1lPWZh bHNlO3JldHVybiBmYWxzZTt9ZWxzZSByZXR1cm4gdGhpcy5wYXJlbnQuaGFuZGxl UGFnZVRyYW5zaXRpb24oYSk7fSxfaW5pdFNlY3Rpb246ZnVuY3Rpb24oYSl7dmFy IGQ9dGhpcy5wYXJlbnQuX2luaXRTZWN0aW9uKGEpO2Zvcih2YXIgZSBpbiB0aGlz LnR5cGVTZWN0aW9ucyl7dmFyIGM9dGhpcy50eXBlU2VjdGlvbnNbZV07aWYoZC5p ZD09Yyl7dmFyIGI9RE9NLnNjcnkoZC5ub2RlLCdkaXYubmF2SGVhZGVyJylbMF07 aWYoYil7dmFyIGY9J1wvYm9va21hcmtzXC8oJytlKycpKFwvKT8nO2Quc2VlYWxs PXRoaXMuX2luaXRJdGVtKHtub2RlOmIsaWQ6ZC5pZCxlbmRwb2ludDp0aGlzLnNl ZUFsbEVuZHBvaW50LGtleTpbJ2Jvb2ttYXJrcyddLHBhdGg6W3tyZWdleDpmfV19 KTt9fX1yZXR1cm4gZDt9LF9jb25zdHJ1Y3RJdGVtOmZ1bmN0aW9uKGEsYil7cmV0 dXJuIG5ldyBGdXR1cmVIb21lU2lkZU5hdkl0ZW0oYSxiKTt9LF9jb25zdHJ1Y3RT ZWN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgRnV0dXJlSG9tZVNpZGVOYXZT ZWN0aW9uKGEpO30sZ2V0U2VjdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy50 eXBlU2VjdGlvbnNbYV0mJnRoaXMuc2VjdGlvbnNbdGhpcy50eXBlU2VjdGlvbnNb YV1dO30sX2dldEl0ZW1Gb3JLZXk6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5wYXJl bnQuX2dldEl0ZW1Gb3JLZXkoIm5mIik7aWYoYiYmYi5tYXRjaEtleShhKSl7cmV0 dXJuIGI7fWVsc2UgcmV0dXJuIHRoaXMucGFyZW50Ll9nZXRJdGVtRm9yS2V5KGEp O30sX2lzQ3VycmVudFBhdGg6ZnVuY3Rpb24oYSl7cmV0dXJuICgoYS5nZXREb21h aW4oKT09PXRoaXMudXJpLmdldERvbWFpbigpKSYmKGEuZ2V0UGF0aCgpPT09Jy8n fHxhLmdldFBhdGgoKT09PScvaG9tZS5waHAnKSk7fSxfaGFuZGxlTWVudUNsaWNr OmZ1bmN0aW9uKGMsYSxiLGV2ZW50KXtpZihDU1MuaGFzQ2xhc3MoYiwnZmF2b3Jp dGUnKSl7QXJiaXRlci5pbmZvcm0oTmF2aWdhdGlvbk1lc3NhZ2UuTkFWSUdBVElP Tl9GQVZPUklURV9VUERBVEUse2tleTphLm51bWVyaWNLZXksZmF2b3JpdGU6IWMu ZXF1YWxzKHRoaXMuZ2V0U2VjdGlvbigiZmF2b3JpdGVzIikpfSk7fWVsc2UgdGhp cy5wYXJlbnQuX2hhbmRsZU1lbnVDbGljayhjLGEsYixldmVudCk7fSxyZW1vdmVJ dGVtQnlLZXk6ZnVuY3Rpb24oYSl7QXJiaXRlci5pbmZvcm0oTmF2aWdhdGlvbk1l c3NhZ2UuTkFWSUdBVElPTl9JVEVNX1JFTU9WRUQsYSk7dGhpcy5wYXJlbnQucmVt b3ZlSXRlbUJ5S2V5KGEpO30sdG9nZ2xlSXRlbUJ5S2V5OmZ1bmN0aW9uKGIsZCl7 dmFyIGM9dGhpcy5nZXROb2RlRm9yS2V5KGIpO2lmKCFkKXtBcmJpdGVyLmluZm9y bShOYXZpZ2F0aW9uTWVzc2FnZS5OQVZJR0FUSU9OX0lURU1fSElEREVOLGIpO2Mm JkNTUy5oaWRlKGMpO31lbHNlIGMmJkNTUy5zaG93KGMpO3ZhciBhPXRoaXMuX2dl dEl0ZW1Gb3JLZXkoYik7dGhpcy5nZXRTZWN0aW9uKGEudHlwZSkucmVmcmVzaCgp O30scmVtb3ZlSXRlbTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmdldFNlY3Rpb24o YS50eXBlKTt0aGlzLnBhcmVudC5yZW1vdmVJdGVtKGEpO2IucmVmcmVzaCgpO30s dXBkYXRlRmF2b3JpdGU6ZnVuY3Rpb24oZyxiKXt2YXIgZj10aGlzLl9maW5kSXRl bShmdW5jdGlvbihoKXtyZXR1cm4gaC5tYXRjaEtleShiLmtleSkmJmguY2FuRmF2 b3JpdGUoKTt9KTt2YXIgZD10aGlzLmdldFNlY3Rpb24oImZhdm9yaXRlcyIpO3Zh ciBhPWJhZ29maG9sZGluZzt2YXIgYz1iLmZhdm9yaXRlP2QuYWRkRW5kcG9pbnQ6 ZC5yZW1vdmVFbmRwb2ludDtpZighZil7aWYoYi5mYXZvcml0ZSl7YT1mdW5jdGlv bigpe1VJUGFnZWxldC5sb2FkRnJvbUVuZHBvaW50KCdQaW5uZWROYXZpZ2F0aW9u UGFnZWxldCcsJ3BhZ2VsZXRfcGlubmVkX25hdicpO307fWVsc2UgYT1mdW5jdGlv bigpe1VJUGFnZWxldC5sb2FkRnJvbUVuZHBvaW50KCdCb29rbWFya05hdmlnYXRp b25QYWdlbGV0JywncGFnZWxldF9ib29rbWFya19uYXYnKTt9O31lbHNle3ZhciBl PXRoaXMuZ2V0U2VjdGlvbihmLnR5cGUpO2lmKGIuZmF2b3JpdGUpe0NTUy5zaG93 KGYubm9kZSk7dGhpcy5tb3ZlSXRlbShkLGYpO2Yuc2hvd0Zhdm9yaXRlKCk7fWVs c2UgaWYoIWUuZXF1YWxzKGQpKXt0aGlzLm1vdmVJdGVtKGUsZik7Zi5oaWRlRmF2 b3JpdGUoKTt9ZWxzZSB0aGlzLnJlbW92ZUl0ZW0oZik7ZS5yZWZyZXNoKCk7ZC5y ZWZyZXNoKCk7Yi5rZXk9Zi5udW1lcmljS2V5O31uZXcgQXN5bmNSZXF1ZXN0KCku c2V0VVJJKGMpLnNldERhdGEoe2lkOmIua2V5fSkuc2V0SGFuZGxlcihhKS5zZW5k KCk7fSxfZG9QYWdlVHJhbnNpdGlvbjpmdW5jdGlvbihhLGMpe3RoaXMuX3VubG9h ZFN0cmVhbXMoKTt2YXIgYj10aGlzLnBhcmVudC5fZG9QYWdlVHJhbnNpdGlvbihh LGMpO2lmKGImJihhLnR5cGU9PSdncm91cHMnfHxhLnR5cGU9PSdsaXN0cycpKXth LnNldENvdW50KDApO2EuaGlkZVVucmVhZEZhY2UoKTt9cmV0dXJuIGI7fSxfdW5s b2FkU3RyZWFtczpmdW5jdGlvbigpe3ZhciBhPVVJSW50ZW50aW9uYWxTdHJlYW0m JlVJSW50ZW50aW9uYWxTdHJlYW0uaW5zdGFuY2VzO3ZhciBiPVsnbmlsZScsJ2ds b2JhbCcsJ2ZyaWVuZHMnLCdibGFkZSddO2EmJmIuZm9yRWFjaChmdW5jdGlvbihj KXthW2NdJiZhW2NdLnVubG9hZCgpO30pO30sbmF2aWdhdGlvbkZpcnN0UmVzcG9u c2U6ZnVuY3Rpb24oKXt0aGlzLnNldFNlbGVjdGVkKHRoaXMubG9hZGluZyk7fX07 ZnVuY3Rpb24gRnV0dXJlSG9tZVNpZGVOYXZTZWN0aW9uKGEpe3RoaXMucGFyZW50 LmNvbnN0cnVjdCh0aGlzLGEpO3RoaXMuZWRpdEVuZHBvaW50PScvYWpheC9ib29r bWFyay9lZGl0Lyc7dGhpcy5hZGRFbmRwb2ludD0nL2FqYXgvYm9va21hcmsvYWRk Lyc7dGhpcy5yZW1vdmVFbmRwb2ludD0nL2FqYXgvYm9va21hcmsvZGVsZXRlLyc7 fUNsYXNzLmV4dGVuZChGdXR1cmVIb21lU2lkZU5hdlNlY3Rpb24sJ0Z1dHVyZVNp ZGVOYXZTZWN0aW9uJyk7RnV0dXJlSG9tZVNpZGVOYXZTZWN0aW9uLnByb3RvdHlw ZT17cmVmcmVzaDpmdW5jdGlvbigpe3ZhciBiPURPTS5zY3J5KHRoaXMubm9kZSwn bGkuc2lkZU5hdkl0ZW0nKTt2YXIgYT1ET00uc2NyeSh0aGlzLm5vZGUsJ2Rpdi5h Y3Rpb25MaW5rcycpO3ZhciBjPWIuc29tZShDU1Muc2hvd24pO0NTUy5jb25kaXRp b25TaG93KERPTS5maW5kKHRoaXMubm9kZSwnZGl2Lm5hdkhlYWRlcicpLGMpO2Eu bGVuZ3RoJiZDU1MuY29uZGl0aW9uU2hvdyhhWzBdLGMpO319O2Z1bmN0aW9uIEZ1 dHVyZUhvbWVTaWRlTmF2SXRlbShhLGIpe3RoaXMucGFyZW50LmNvbnN0cnVjdCh0 aGlzLGEsYik7fUNsYXNzLmV4dGVuZChGdXR1cmVIb21lU2lkZU5hdkl0ZW0sJ0Z1 dHVyZVNpZGVOYXZJdGVtJyk7RnV0dXJlSG9tZVNpZGVOYXZJdGVtLnByb3RvdHlw ZT17Y2FuRmF2b3JpdGU6ZnVuY3Rpb24oKXtyZXR1cm4gISF0aGlzLl9nZXRGYXZv cml0ZUxhYmVsKCk7fSxzaG93RmF2b3JpdGU6ZnVuY3Rpb24oKXtET00uc2V0Q29u dGVudCh0aGlzLl9nZXRGYXZvcml0ZUxhYmVsKCksIlNcdTAxMzFrIEt1bGxhblx1 MDEzMWxhbmxhcmRhbiBLYWxkXHUwMTMxciIpO30saGlkZUZhdm9yaXRlOmZ1bmN0 aW9uKCl7RE9NLnNldENvbnRlbnQodGhpcy5fZ2V0RmF2b3JpdGVMYWJlbCgpLCJT XHUwMTMxayBLdWxsYW5cdTAxMzFsYW5sYXJhIEVrbGUiKTt9LGhpZGVVbnJlYWRG YWNlOmZ1bmN0aW9uKCl7dmFyIGE9RE9NLnNjcnkodGhpcy5ub2RlLCdpbWcudW5y ZWFkUHJvZmlsZUltZycpWzBdO2EmJkNTUy5oaWRlKGEpO30sX2dldEZhdm9yaXRl TGFiZWw6ZnVuY3Rpb24oKXtyZXR1cm4gRE9NLnNjcnkodGhpcy5ub2RlLCdsaS5m YXZvcml0ZSBzcGFuLml0ZW1MYWJlbCcpWzBdO319OwpmdW5jdGlvbiBGdXR1cmVQ cm9maWxlU2lkZU5hdigpe3RoaXMucGFyZW50LmNvbnN0cnVjdCh0aGlzKTt9Q2xh c3MuZXh0ZW5kKEZ1dHVyZVByb2ZpbGVTaWRlTmF2LCdGdXR1cmVTaWRlTmF2Jyk7 RnV0dXJlUHJvZmlsZVNpZGVOYXYucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKCl7 dGhpcy5wYXJlbnQuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5hamF4 UGlwZT10cnVlO3RoaXMuYWx0S2V5UGFyYW09J3YnO3RoaXMuc2lkZWNvbD1mYWxz ZTt9LF9jb25zdHJ1Y3RJdGVtOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBGdXR1 cmVQcm9maWxlU2lkZU5hdkl0ZW0oYSxiKTt9LF9kb1BhZ2VUcmFuc2l0aW9uOmZ1 bmN0aW9uKGEsYil7aWYoIXRoaXMuX3Byb2ZpbGVDaGFuZ2VkKGIpJiYhdGhpcy5f c2NvcGVDaGFuZ2VkKGEpKXJldHVybiB0aGlzLnBhcmVudC5fZG9QYWdlVHJhbnNp dGlvbihhLGIpO30sX3Byb2ZpbGVDaGFuZ2VkOmZ1bmN0aW9uKGMpe3ZhciBiPWMu Z2V0UXVlcnlEYXRhKCk7dmFyIGE9dGhpcy51cmkuZ2V0UXVlcnlEYXRhKCk7cmV0 dXJuIChiLmlkIT09YS5pZHx8Yi52aWV3YXMhPT1hLnZpZXdhc3x8Yi5hbmQhPT1h LmFuZCk7fSxfc2NvcGVDaGFuZ2VkOmZ1bmN0aW9uKGEpe3JldHVybiAoIXRoaXMu c2VsZWN0ZWR8fGEubGF5b3V0VHlwZSE9PXRoaXMuc2VsZWN0ZWQubGF5b3V0VHlw ZSk7fSxfZ2V0S2V5OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnBhcmVudC5fZ2V0 S2V5KGEpfHxhW3RoaXMuYWx0S2V5UGFyYW1dO319O2Z1bmN0aW9uIEZ1dHVyZVBy b2ZpbGVTaWRlTmF2SXRlbShhLGIpe3RoaXMucGFyZW50LmNvbnN0cnVjdCh0aGlz LGEsYik7dGhpcy5sYXlvdXRUeXBlPWEubGF5b3V0dHlwZTt9Q2xhc3MuZXh0ZW5k KEZ1dHVyZVByb2ZpbGVTaWRlTmF2SXRlbSwnRnV0dXJlU2lkZU5hdkl0ZW0nKTsK ZnVuY3Rpb24gdXNlRmFjZWJvb2tSZWZlcmVyKGIsYSxmKXt2YXIgZD1mYWxzZTtm dW5jdGlvbiBlKCl7aWYoZClyZXR1cm47ZD10cnVlO2IuY29udGVudFdpbmRvdy5k b2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbj0wO2EoKTt9dmFyIGM9KFVSSSgpLmlz U2VjdXJlKCk/J2h0dHBzOi8vcy1zdGF0aWMuYWsuZmFjZWJvb2suY29tJzonaHR0 cDovL3N0YXRpYy5hay5mYWNlYm9vay5jb20nKSsnL2NvbW1vbi9yZWZlcmVyX2Zy YW1lLnBocCc7aWYoZiljKz0nP2ZiX3NvdXJjZT0nK2Y7RXZlbnQubGlzdGVuKGIs J2xvYWQnLGUpO2Iuc3JjPWM7fWZ1bmN0aW9uIHVzZUZhY2Vib29rUmVmZXJlckh0 bWwoYixhLGMpe3VzZUZhY2Vib29rUmVmZXJlcihiLGZ1bmN0aW9uKCl7Yi5jb250 ZW50V2luZG93LmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MPWE7fSxjKTt9CmZ1bmN0 aW9uIGh0bWxzcGVjaWFsY2hhcnMoYSl7aWYodHlwZW9mKGEpPT0ndW5kZWZpbmVk J3x8YT09PW51bGx8fCFhLnRvU3RyaW5nKXJldHVybiAnJztpZihhPT09ZmFsc2Up e3JldHVybiAnMCc7fWVsc2UgaWYoYT09PXRydWUpcmV0dXJuICcxJztyZXR1cm4g YS50b1N0cmluZygpLnJlcGxhY2UoLyYvZywnJmFtcDsnKS5yZXBsYWNlKC8iL2cs JyZxdW90OycpLnJlcGxhY2UoLycvZywnJiMwMzk7JykucmVwbGFjZSgvPC9nLCcm bHQ7JykucmVwbGFjZSgvPi9nLCcmZ3Q7Jyk7fWZ1bmN0aW9uIGh0bWxpemUoYSl7 cmV0dXJuIGh0bWxzcGVjaWFsY2hhcnMoYSkucmVwbGFjZSgvXHJcbi9nLCc8YnIg Lz4nKS5yZXBsYWNlKC9bXHJcbl0vZywnPGJyIC8+Jyk7fWZ1bmN0aW9uIGVzY2Fw ZV9qc19xdW90ZXMoYSl7aWYodHlwZW9mKGEpPT0ndW5kZWZpbmVkJ3x8IWEudG9T dHJpbmcpcmV0dXJuICcnO3JldHVybiBhLnRvU3RyaW5nKCkucmVwbGFjZSgvXFwv ZywnXFxcXCcpLnJlcGxhY2UoL1xuL2csJ1xcbicpLnJlcGxhY2UoL1xyL2csJ1xc cicpLnJlcGxhY2UoLyIvZywnXFx4MjInKS5yZXBsYWNlKC8nL2csJ1xcXCcnKS5y ZXBsYWNlKC88L2csJ1xceDNjJykucmVwbGFjZSgvPi9nLCdcXHgzZScpLnJlcGxh Y2UoLyYvZywnXFx4MjYnKTt9CmlmKHR5cGVvZiBkZWNvbmNlcHQ9PSJ1bmRlZmlu ZWQiKXZhciBkZWNvbmNlcHQ9e307aWYodHlwZW9mIGRlY29uY2VwdC51dGlsPT0i dW5kZWZpbmVkIilkZWNvbmNlcHQudXRpbD17fTtpZih0eXBlb2YgZGVjb25jZXB0 LlNXRk9iamVjdFV0aWw9PSJ1bmRlZmluZWQiKWRlY29uY2VwdC5TV0ZPYmplY3RV dGlsPXt9O2RlY29uY2VwdC5TV0ZPYmplY3Q9ZnVuY3Rpb24oaCxkLGosYyxpLGEs ZixsLGcsYil7aWYoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKXJldHVybjt0aGlz LkRFVEVDVF9LRVk9Yj9iOidkZXRlY3RmbGFzaCc7dGhpcy5za2lwRGV0ZWN0PWRl Y29uY2VwdC51dGlsLmdldFJlcXVlc3RQYXJhbWV0ZXIodGhpcy5ERVRFQ1RfS0VZ KTt0aGlzLnBhcmFtcz17fTt0aGlzLnZhcmlhYmxlcz17fTt0aGlzLmF0dHJpYnV0 ZXM9W107dGhpcy5mYWxsYmFja19odG1sPScnO3RoaXMuZmFsbGJhY2tfanNfZmNu PWZ1bmN0aW9uKCl7fTtpZihoKXRoaXMuc2V0QXR0cmlidXRlKCdzd2YnLGgpO2lm KGQpdGhpcy5zZXRBdHRyaWJ1dGUoJ2lkJyxkKTtpZihqKXRoaXMuc2V0QXR0cmli dXRlKCd3aWR0aCcsaik7aWYoYyl0aGlzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyxj KTt0aGlzLmluc3RhbGxlZFZlcj1kZWNvbmNlcHQuU1dGT2JqZWN0VXRpbC5nZXRQ bGF5ZXJWZXJzaW9uKCk7aWYoaSl7aWYoIShpIGluc3RhbmNlb2YgQXJyYXkpKWk9 W2ldO3ZhciBrO2kuZWFjaChmdW5jdGlvbihuKXtrPW5ldyBkZWNvbmNlcHQuUGxh eWVyVmVyc2lvbihuLnRvU3RyaW5nKCkuc3BsaXQoJy4nKSk7aWYoay5tYWpvcj09 dGhpcy5pbnN0YWxsZWRWZXIubWFqb3Ipe3RoaXMuc2V0QXR0cmlidXRlKCd2ZXJz aW9uJyxrKTtyZXR1cm47fWVsc2UgaWYoIXRoaXMuZ2V0QXR0cmlidXRlKCd2ZXJz aW9uJyl8fGsubWFqb3I8dGhpcy5nZXRBdHRyaWJ1dGUoJ3ZlcnNpb24nKS5tYWpv cil0aGlzLnNldEF0dHJpYnV0ZSgndmVyc2lvbicsayk7fS5iaW5kKHRoaXMpKTt9 aWYoIXdpbmRvdy5vcGVyYSYmZG9jdW1lbnQuYWxsJiZ0aGlzLmluc3RhbGxlZFZl ci5tYWpvcj43KWlmKCFkZWNvbmNlcHQudW5sb2FkU2V0KXtkZWNvbmNlcHQuU1dG T2JqZWN0VXRpbC5wcmVwVW5sb2FkPWZ1bmN0aW9uKCl7X19mbGFzaF91bmxvYWRI YW5kbGVyPWZ1bmN0aW9uKCl7fTtfX2ZsYXNoX3NhdmVkVW5sb2FkSGFuZGxlcj1m dW5jdGlvbigpe307d2luZG93LmF0dGFjaEV2ZW50KCJvbnVubG9hZCIsZGVjb25j ZXB0LlNXRk9iamVjdFV0aWwuY2xlYW51cFNXRnMpO307d2luZG93LmF0dGFjaEV2 ZW50KCJvbmJlZm9yZXVubG9hZCIsZGVjb25jZXB0LlNXRk9iamVjdFV0aWwucHJl cFVubG9hZCk7ZGVjb25jZXB0LnVubG9hZFNldD10cnVlO31pZihhKXRoaXMuYWRk UGFyYW0oJ2JnY29sb3InLGEpO3ZhciBlPWY/ZjonaGlnaCc7dGhpcy5hZGRQYXJh bSgncXVhbGl0eScsZSk7dGhpcy5zZXRBdHRyaWJ1dGUoJ3VzZUV4cHJlc3NJbnN0 YWxsJyxmYWxzZSk7dGhpcy5zZXRBdHRyaWJ1dGUoJ2RvRXhwcmVzc0luc3RhbGwn LGZhbHNlKTt2YXIgbT0obCk/bDp3aW5kb3cubG9jYXRpb247dGhpcy5zZXRBdHRy aWJ1dGUoJ3hpUmVkaXJlY3RVcmwnLG0pO3RoaXMuc2V0QXR0cmlidXRlKCdyZWRp cmVjdFVybCcsJycpO2lmKGcpdGhpcy5zZXRBdHRyaWJ1dGUoJ3JlZGlyZWN0VXJs JyxnKTt0aGlzLnNldEF0dHJpYnV0ZSgndXNlSWZyYW1lJyxmYWxzZSk7fTtkZWNv bmNlcHQuU1dGT2JqZWN0LmllV29ya2Fyb3VuZEFwcGxpZWQ9ZmFsc2U7ZGVjb25j ZXB0LlNXRk9iamVjdC5lbnN1cmVJRVdvcmthcm91bmRBdHRhY2hlZD1mdW5jdGlv bigpe2lmKCFkZWNvbmNlcHQuU1dGT2JqZWN0LmllV29ya2Fyb3VuZEFwcGxpZWQm JmRvY3VtZW50LmF0dGFjaEV2ZW50KXtkZWNvbmNlcHQuU1dGT2JqZWN0LmllV29y a2Fyb3VuZEFwcGxpZWQ9dHJ1ZTtkb2N1bWVudC5hdHRhY2hFdmVudCgnb25wcm9w ZXJ0eWNoYW5nZScsZGVjb25jZXB0LlNXRk9iamVjdC5vbkRvY3VtZW50UHJvcGVy dHlDaGFuZ2UpO319O2RlY29uY2VwdC5TV0ZPYmplY3Qub25Eb2N1bWVudFByb3Bl cnR5Q2hhbmdlPWZ1bmN0aW9uKGV2ZW50KXtpZihldmVudC5wcm9wZXJ0eU5hbWU9 PSJ0aXRsZSIpe3ZhciBhPWRvY3VtZW50LnRpdGxlO2lmKGEhPW51bGwmJmEuaW5k ZXhPZignIyEnKSE9LTEpe2E9YS5zdWJzdHJpbmcoMCxhLmluZGV4T2YoJyMhJykp O2RvY3VtZW50LnRpdGxlPWE7fX19O2RlY29uY2VwdC5TV0ZPYmplY3QucHJvdG90 eXBlPXt1c2VFeHByZXNzSW5zdGFsbDpmdW5jdGlvbihhKXt0aGlzLnhpU1dGUGF0 aD0hYT8iL3N3Zi9leHByZXNzaW5zdGFsbC5zd2YiOmE7dGhpcy5zZXRBdHRyaWJ1 dGUoJ3VzZUV4cHJlc3NJbnN0YWxsJyx0cnVlKTt9LHNldEF0dHJpYnV0ZTpmdW5j dGlvbihhLGIpe3RoaXMuYXR0cmlidXRlc1thXT1iO30sZ2V0QXR0cmlidXRlOmZ1 bmN0aW9uKGEpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbYV18fCIiO30sYWRkUGFy YW06ZnVuY3Rpb24oYSxiKXt0aGlzLnBhcmFtc1thXT1iO30sZ2V0UGFyYW1zOmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyYW1zO30sYWRkVmFyaWFibGU6ZnVuY3Rp b24oYSxiKXt0aGlzLnZhcmlhYmxlc1thXT1iO30sZ2V0VmFyaWFibGU6ZnVuY3Rp b24oYSl7cmV0dXJuIHRoaXMudmFyaWFibGVzW2FdfHwiIjt9LGdldFZhcmlhYmxl czpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhcmlhYmxlczt9LGdldFZhcmlhYmxl UGFpcnM6ZnVuY3Rpb24oKXt2YXIgYj1bXTt2YXIgYTt2YXIgYz10aGlzLmdldFZh cmlhYmxlcygpO2ZvcihhIGluIGMpYltiLmxlbmd0aF09YSsiPSIrY1thXTtyZXR1 cm4gYi5qb2luKCcmJyk7fSxnZXRTV0ZIVE1MOmZ1bmN0aW9uKCl7dmFyIGYsZCxh O2lmKG5hdmlnYXRvci5wbHVnaW5zJiZuYXZpZ2F0b3IubWltZVR5cGVzJiZuYXZp Z2F0b3IubWltZVR5cGVzLmxlbmd0aCl7aWYodGhpcy5nZXRBdHRyaWJ1dGUoImRv RXhwcmVzc0luc3RhbGwiKSl7dGhpcy5hZGRWYXJpYWJsZSgiTU1wbGF5ZXJUeXBl IiwiUGx1Z0luIik7dGhpcy5zZXRBdHRyaWJ1dGUoJ3N3ZicsdGhpcy54aVNXRlBh dGgpO31kPXt0eXBlOidhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcsc3Jj OnRoaXMuZ2V0QXR0cmlidXRlKCdzd2YnKSx3aWR0aDp0aGlzLmdldEF0dHJpYnV0 ZSgnd2lkdGgnKSxoZWlnaHQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ2hlaWdodCcpLHN0 eWxlOnRoaXMuZ2V0QXR0cmlidXRlKCdzdHlsZScpfHwnJyxpZDp0aGlzLmdldEF0 dHJpYnV0ZSgnaWQnKSxuYW1lOnRoaXMuZ2V0QXR0cmlidXRlKCdpZCcpfTt2YXIg Yz10aGlzLmdldFBhcmFtcygpO2Zvcih2YXIgYiBpbiBjKWRbYl09Y1tiXTthPXRo aXMuZ2V0VmFyaWFibGVQYWlycygpO2lmKGEpZC5mbGFzaHZhcnM9YTtmPXJlbmRl cl90YWdfYXNfaHRtbHN0cmluZygnZW1iZWQnLGQsbnVsbCk7fWVsc2V7aWYodGhp cy5nZXRBdHRyaWJ1dGUoImRvRXhwcmVzc0luc3RhbGwiKSl7dGhpcy5hZGRWYXJp YWJsZSgiTU1wbGF5ZXJUeXBlIiwiQWN0aXZlWCIpO3RoaXMuc2V0QXR0cmlidXRl KCdzd2YnLHRoaXMueGlTV0ZQYXRoKTt9ZD17aWQ6dGhpcy5nZXRBdHRyaWJ1dGUo J2lkJyksY2xhc3NpZDonY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0 NTUzNTQwMDAwJyx3aWR0aDp0aGlzLmdldEF0dHJpYnV0ZSgnd2lkdGgnKSxoZWln aHQ6dGhpcy5nZXRBdHRyaWJ1dGUoJ2hlaWdodCcpLHN0eWxlOnRoaXMuZ2V0QXR0 cmlidXRlKCdzdHlsZScpfHwnJ307dmFyIGU9cmVuZGVyX3RhZ19hc19odG1sc3Ry aW5nKCdwYXJhbScse25hbWU6J21vdmllJyx2YWx1ZTp0aGlzLmdldEF0dHJpYnV0 ZSgnc3dmJyl9LG51bGwpO3ZhciBjPXRoaXMuZ2V0UGFyYW1zKCk7Zm9yKHZhciBi IGluIGMpZSs9cmVuZGVyX3RhZ19hc19odG1sc3RyaW5nKCdwYXJhbScse25hbWU6 Yix2YWx1ZTpjW2JdfSxudWxsKTthPXRoaXMuZ2V0VmFyaWFibGVQYWlycygpO2lm KGEpZSs9cmVuZGVyX3RhZ19hc19odG1sc3RyaW5nKCdwYXJhbScse25hbWU6J2Zs YXNodmFycycsdmFsdWU6YX0sbnVsbCk7Zj1yZW5kZXJfdGFnX2FzX2h0bWxzdHJp bmcoJ29iamVjdCcsZCxlKTt9cmV0dXJuIGY7fSx3cml0ZTpmdW5jdGlvbihhKXtp Zih0aGlzLmdldEF0dHJpYnV0ZSgndXNlRXhwcmVzc0luc3RhbGwnKSl7dmFyIGI9 bmV3IGRlY29uY2VwdC5QbGF5ZXJWZXJzaW9uKFs2LDAsNjVdKTtpZih0aGlzLmlu c3RhbGxlZFZlci52ZXJzaW9uSXNWYWxpZChiKSYmIXRoaXMuaW5zdGFsbGVkVmVy LnZlcnNpb25Jc1ZhbGlkKHRoaXMuZ2V0QXR0cmlidXRlKCd2ZXJzaW9uJykpKXt0 aGlzLnNldEF0dHJpYnV0ZSgnZG9FeHByZXNzSW5zdGFsbCcsdHJ1ZSk7dGhpcy5h ZGRWYXJpYWJsZSgiTU1yZWRpcmVjdFVSTCIsZXNjYXBlKHRoaXMuZ2V0QXR0cmli dXRlKCd4aVJlZGlyZWN0VXJsJykpKTtkb2N1bWVudC50aXRsZT1kb2N1bWVudC50 aXRsZS5zbGljZSgwLDQ3KSsiIC0gRmxhc2ggUGxheWVyIEluc3RhbGxhdGlvbiI7 dGhpcy5hZGRWYXJpYWJsZSgiTU1kb2N0aXRsZSIsZG9jdW1lbnQudGl0bGUpO319 dmFyIGM9KHR5cGVvZiBhPT0nc3RyaW5nJyk/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoYSk6YTtpZighYylyZXR1cm4gZmFsc2U7Q1NTLmFkZENsYXNzKGMsJ3N3Zk9i amVjdCcpO2Muc2V0QXR0cmlidXRlKCdkYXRhLXN3ZmlkJyx0aGlzLmdldEF0dHJp YnV0ZSgnaWQnKSk7aWYodGhpcy5za2lwRGV0ZWN0fHx0aGlzLmdldEF0dHJpYnV0 ZSgnZG9FeHByZXNzSW5zdGFsbCcpfHx0aGlzLmluc3RhbGxlZFZlci52ZXJzaW9u SXNWYWxpZCh0aGlzLmdldEF0dHJpYnV0ZSgndmVyc2lvbicpKSl7aWYoIXRoaXMu Z2V0QXR0cmlidXRlKCd1c2VJZnJhbWUnKSl7ZGVjb25jZXB0LlNXRk9iamVjdC5l bnN1cmVJRVdvcmthcm91bmRBdHRhY2hlZCgpO2MuaW5uZXJIVE1MPXRoaXMuZ2V0 U1dGSFRNTCgpO31lbHNlIHRoaXMuX2NyZWF0ZUlmcmFtZShjKTtyZXR1cm4gdHJ1 ZTt9ZWxzZXtpZih0aGlzLmdldEF0dHJpYnV0ZSgncmVkaXJlY3RVcmwnKSE9IiIp ZG9jdW1lbnQubG9jYXRpb24ucmVwbGFjZSh0aGlzLmdldEF0dHJpYnV0ZSgncmVk aXJlY3RVcmwnKSk7bmVlZF92ZXJzaW9uPXRoaXMuZ2V0QXR0cmlidXRlKCd2ZXJz aW9uJykubWFqb3IrJy4nK3RoaXMuZ2V0QXR0cmlidXRlKCd2ZXJzaW9uJykubWlu b3IrJy4nK3RoaXMuZ2V0QXR0cmlidXRlKCd2ZXJzaW9uJykucmV2O2hhdmVfdmVy c2lvbj10aGlzLmluc3RhbGxlZFZlci5tYWpvcisnLicrdGhpcy5pbnN0YWxsZWRW ZXIubWlub3IrJy4nK3RoaXMuaW5zdGFsbGVkVmVyLnJldjt0aGlzLmZhbGxiYWNr X2pzX2ZjbihoYXZlX3ZlcnNpb24sbmVlZF92ZXJzaW9uKTtjLmlubmVySFRNTD10 aGlzLmZhbGxiYWNrX2h0bWw7fXJldHVybiBmYWxzZTt9LF9jcmVhdGVJZnJhbWU6 ZnVuY3Rpb24oYil7dmFyIGE9JE4oJ2lmcmFtZScse3dpZHRoOnRoaXMuZ2V0QXR0 cmlidXRlKCd3aWR0aCcpLGhlaWdodDp0aGlzLmdldEF0dHJpYnV0ZSgnaGVpZ2h0 JyksZnJhbWVCb3JkZXI6MH0pO0RPTS5lbXB0eShiKTtiLmFwcGVuZENoaWxkKGEp O3VzZUZhY2Vib29rUmVmZXJlckh0bWwuYmluZChudWxsLGEsdGhpcy5nZXRTV0ZI VE1MKCksdGhpcy5nZXRBdHRyaWJ1dGUoJ2lmcmFtZVNvdXJjZScpKS5kZWZlcigp O319O2RlY29uY2VwdC5TV0ZPYmplY3RVdGlsLmdldFBsYXllclZlcnNpb249ZnVu Y3Rpb24oKXt2YXIgYT1uZXcgZGVjb25jZXB0LlBsYXllclZlcnNpb24oWzAsMCww XSk7aWYobmF2aWdhdG9yLnBsdWdpbnMmJm5hdmlnYXRvci5taW1lVHlwZXMubGVu Z3RoKXtmb3IodmFyIGc9MDtnPG5hdmlnYXRvci5wbHVnaW5zLmxlbmd0aDtnKysp dHJ5e3ZhciB4PW5hdmlnYXRvci5wbHVnaW5zW2ddO2lmKHgubmFtZT09J1Nob2Nr d2F2ZSBGbGFzaCcpe1BsYXllclZlcnNpb25fdG1wPW5ldyBkZWNvbmNlcHQuUGxh eWVyVmVyc2lvbih4LmRlc2NyaXB0aW9uLnJlcGxhY2UoLyhbYS16QS1aXXxccykr LywiIikucmVwbGFjZSgvKFxzKyhyfGQpfFxzK2JbMC05XSspLywiLiIpLnNwbGl0 KCIuIikpO2lmKHR5cGVvZiBhPT0ndW5kZWZpbmVkJ3x8UGxheWVyVmVyc2lvbl90 bXAubWFqb3I+YS5tYWpvcnx8KFBsYXllclZlcnNpb25fdG1wLm1ham9yPT1hLm1h am9yJiYoUGxheWVyVmVyc2lvbl90bXAubWlub3I+YS5taW5vcnx8KFBsYXllclZl cnNpb25fdG1wLm1pbm9yPT1hLm1pbm9yJiZQbGF5ZXJWZXJzaW9uX3RtcC5yZXY+ YS5yZXYpKSkpYT1QbGF5ZXJWZXJzaW9uX3RtcDt9fWNhdGNoKGYpe319ZWxzZSBp ZihuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4 T2YoIldpbmRvd3MgQ0UiKT49MCl7dmFyIGI9MTt2YXIgYz0zO3doaWxlKGIpdHJ5 e2MrKztiPW5ldyBBY3RpdmVYT2JqZWN0KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dh dmVGbGFzaC4iK2MpO2E9bmV3IGRlY29uY2VwdC5QbGF5ZXJWZXJzaW9uKFtjLDAs MF0pO31jYXRjaChkKXtiPW51bGw7fX1lbHNle3RyeXt2YXIgYj1uZXcgQWN0aXZl WE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guNyIpO31jYXRj aChlKXt0cnl7dmFyIGI9bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNo LlNob2Nrd2F2ZUZsYXNoLjYiKTthPW5ldyBkZWNvbmNlcHQuUGxheWVyVmVyc2lv bihbNiwwLDIxXSk7Yi5BbGxvd1NjcmlwdEFjY2Vzcz0iYWx3YXlzIjt9Y2F0Y2go ZTIpe2lmKGEubWFqb3I9PTYpcmV0dXJuIGE7fXRyeXtiPW5ldyBBY3RpdmVYT2Jq ZWN0KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaCIpO31jYXRjaChlMyl7 fX1pZihiIT1udWxsKWE9bmV3IGRlY29uY2VwdC5QbGF5ZXJWZXJzaW9uKGIuR2V0 VmFyaWFibGUoIiR2ZXJzaW9uIikuc3BsaXQoIiAiKVsxXS5zcGxpdCgiLCIpKTt9 cmV0dXJuIGE7fTtkZWNvbmNlcHQuUGxheWVyVmVyc2lvbj1mdW5jdGlvbihhKXt0 aGlzLm1ham9yPWFbMF0hPW51bGw/cGFyc2VJbnQoYVswXSk6MDt0aGlzLm1pbm9y PWFbMV0hPW51bGw/cGFyc2VJbnQoYVsxXSk6MDt0aGlzLnJldj1hWzJdIT1udWxs P3BhcnNlSW50KGFbMl0pOjA7fTtkZWNvbmNlcHQuUGxheWVyVmVyc2lvbi5wcm90 b3R5cGUudmVyc2lvbklzVmFsaWQ9ZnVuY3Rpb24oYSl7aWYodGhpcy5tYWpvcjxh Lm1ham9yKXJldHVybiBmYWxzZTtpZih0aGlzLm1ham9yPmEubWFqb3IpcmV0dXJu IHRydWU7aWYodGhpcy5taW5vcjxhLm1pbm9yKXJldHVybiBmYWxzZTtpZih0aGlz Lm1pbm9yPmEubWlub3IpcmV0dXJuIHRydWU7aWYodGhpcy5yZXY8YS5yZXYpcmV0 dXJuIGZhbHNlO3JldHVybiB0cnVlO307ZGVjb25jZXB0LnV0aWw9e2dldFJlcXVl c3RQYXJhbWV0ZXI6ZnVuY3Rpb24oYyl7dmFyIGQ9ZG9jdW1lbnQubG9jYXRpb24u c2VhcmNofHxkb2N1bWVudC5sb2NhdGlvbi5oYXNoO2lmKGM9PW51bGwpcmV0dXJu IGQ7aWYoZCl7dmFyIGI9ZC5zdWJzdHJpbmcoMSkuc3BsaXQoIiYiKTtmb3IodmFy IGE9MDthPGIubGVuZ3RoO2ErKylpZihiW2FdLnN1YnN0cmluZygwLGJbYV0uaW5k ZXhPZigiPSIpKT09YylyZXR1cm4gYlthXS5zdWJzdHJpbmcoKGJbYV0uaW5kZXhP ZigiPSIpKzEpKTt9cmV0dXJuICIiO319O2RlY29uY2VwdC5TV0ZPYmplY3RVdGls LmNsZWFudXBTV0ZzPWZ1bmN0aW9uKCl7dmFyIGI9ZG9jdW1lbnQuZ2V0RWxlbWVu dHNCeVRhZ05hbWUoIk9CSkVDVCIpO2Zvcih2YXIgYT1iLmxlbmd0aC0xO2E+PTA7 YS0tKXtiW2FdLnN0eWxlLmRpc3BsYXk9J25vbmUnO2Zvcih2YXIgYyBpbiBiW2Fd KWlmKHR5cGVvZiBiW2FdW2NdPT0nZnVuY3Rpb24nKWJbYV1bY109ZnVuY3Rpb24o KXt9O319O2lmKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCYmZG9jdW1lbnQuYWxs KWRvY3VtZW50LmdldEVsZW1lbnRCeUlkPWZ1bmN0aW9uKGEpe3JldHVybiBkb2N1 bWVudC5hbGxbYV07fTt2YXIgZ2V0UXVlcnlQYXJhbVZhbHVlPWRlY29uY2VwdC51 dGlsLmdldFJlcXVlc3RQYXJhbWV0ZXI7dmFyIEZsYXNoT2JqZWN0PWRlY29uY2Vw dC5TV0ZPYmplY3Q7dmFyIFNXRk9iamVjdD1kZWNvbmNlcHQuU1dGT2JqZWN0O2Z1 bmN0aW9uIHNwYXduX2ZsYXNoX3VwZGF0ZV9kaWFsb2coKXtuZXcgQXN5bmNSZXF1 ZXN0KCkuc2V0VVJJKCcvYWpheC9mbGFzaF91cGRhdGVfZGlhbG9nLnBocCcpLnNl dE1ldGhvZCgnR0VUJykuc2V0UmVhZE9ubHkodHJ1ZSkuc2VuZCgpO31mdW5jdGlv biBzZXRGbGFzaEZhbGxiYWNrKGQsZyl7dmFyIGI9Z2UoZCk7dmFyIGE9ZGVjb25j ZXB0LlNXRk9iamVjdFV0aWwuZ2V0UGxheWVyVmVyc2lvbigpO3ZhciBlO2cuZWFj aChmdW5jdGlvbihoKXtoPW5ldyBkZWNvbmNlcHQuUGxheWVyVmVyc2lvbihoLnRv U3RyaW5nKCkuc3BsaXQoJy4nKSk7aWYoaC5tYWpvcj09YS5tYWpvcil7ZT1oO3Jl dHVybjt9ZWxzZSBpZih0eXBlb2YgZT09J3VuZGVmaW5lZCd8fGgubWFqb3I8ZS5t YWpvcillPWg7fS5iaW5kKHRoaXMpKTtpZihiJiZhLm1ham9yPjApe3ZhciBjPWEu bWFqb3IrJy4nK2EubWlub3IrJy4nK2EucmV2O3ZhciBmPWUubWFqb3IrJy4nK2Uu bWlub3IrJy4nK2UucmV2O2IuaW5uZXJIVE1MPV90eCgiQnUgaVx1MDBlN2VyaVx1 MDExZmkgZ1x1MDBmNnJcdTAwZmNudFx1MDBmY2xlbWVrIGlcdTAwZTdpbiBGbGFz aCB7cmVxdWlyZWQtdmVyc2lvbn0gZ2VyZWtpeW9yLiBNZXZjdXQgRmxhc2ggdmVy c2l5b251biB7Y3VycmVudC12ZXJzaW9ufS4gTFx1MDBmY3RmZW4gRmxhc2ggUGxh eWVyJ1x1MDEzMW4gZW4gZ1x1MDBmY25jZWwgc1x1MDBmY3JcdTAwZmNtXHUwMGZj blx1MDBmYyBpbmRpci4iLHsncmVxdWlyZWQtdmVyc2lvbic6ZiwnY3VycmVudC12 ZXJzaW9uJzpjfSk7fX1mdW5jdGlvbiBzaG93Rmxhc2hFcnJvckRpYWxvZyhiLGEp e0Jvb3Rsb2FkZXIubG9hZENvbXBvbmVudHMoJ2Vycm9yLWRpYWxvZycsZnVuY3Rp b24oKXtFcnJvckRpYWxvZy5zaG93KGIsYSk7fSk7fWZ1bmN0aW9uIHJlbmRlcl90 YWdfYXNfaHRtbHN0cmluZyhmLGIsYyl7dmFyIGE9L15bQS1aYS16MC05XC1dKyQv O2lmKCFmLm1hdGNoKGEpKXRocm93IG5ldyBFcnJvcignSW52YWxpZCB0YWcgJytm KTt2YXIgZT0nPCcrZjtmb3IodmFyIGQgaW4gYil7aWYoIWQubWF0Y2goYSkpdGhy b3cgbmV3IEVycm9yKCdJbnZhbGlkIGF0dHIgJytkKTtlKz0nICcrZCsnPSInK2h0 bWxzcGVjaWFsY2hhcnMoYltkXSkrJyInO31pZihjPT09bnVsbCl7cmV0dXJuIGUr Jy8+Jzt9ZWxzZSByZXR1cm4gZSsnPicrYysnPC8nK2YrJz4nO30KZnVuY3Rpb24g Rmxhc2goKXt9Y29weV9wcm9wZXJ0aWVzKEZsYXNoLHtJTklUOidmbGFzaC9pbml0 JyxSRUFEWTonZmxhc2gvcmVhZHknLEZBSUxFRDonZmxhc2gvZmFpbGVkJ30pOwp3 aW5kb3cuU3Vic2NyaXB0aW9uTGV2ZWxzPXtBTEw6JzE2MjMxODgxMDUxNDY3OScs REVGQVVMVDonMjcxNjcwODkyODU4Njk2JyxUT1A6JzI2NjE1Njg3MzQwMzc1NSd9 O3dpbmRvdy5FZGl0U3Vic2NyaXB0aW9ucz13aW5kb3cuRWRpdFN1YnNjcmlwdGlv bnN8fChmdW5jdGlvbigpe3ZhciBhPTEzO3ZhciBiPVtTdWJzY3JpcHRpb25MZXZl bHMuQUxMLFN1YnNjcmlwdGlvbkxldmVscy5ERUZBVUxULFN1YnNjcmlwdGlvbkxl dmVscy5UT1BdO3ZhciBkPXt9O3ZhciBnPXt9O3ZhciB0PXt9O3ZhciBzPXt9O3Zh ciBmPXt9O3ZhciBlPXt9O3ZhciByPSIvYWpheC9mb2xsb3cvZm9sbG93X3Byb2Zp bGUucGhwIjt2YXIgdz0iL2FqYXgvZm9sbG93L3VuZm9sbG93X3Byb2ZpbGUucGhw IjtmdW5jdGlvbiBuKHkpe3JldHVybiBiLmNvbnRhaW5zKHkpO31mdW5jdGlvbiBq KHksemIseix6Yyl7dmFyIHphPVBhcmVudC5ieUNsYXNzKHpjLCd1aU1lbnVJdGVt Jyk7aWYoIXphfHwhRE9NLmNvbnRhaW5zKHksemEpKXtyZXR1cm47fWVsc2UgaWYo Q1NTLmhhc0NsYXNzKHphLCdTdWJzY3JpYmVNZW51VG9nZ2xlJykpe0NTUy50b2dn bGVDbGFzcyh5LCdzaG93U3Vic2NyaXB0aW9uTWVudScpO3JldHVybiBmYWxzZTt9 ZWxzZSBpZihDU1MuaGFzQ2xhc3MoemEsJ1N1YnNjcmliZU1lbnVTdWJzY3JpYmUn KSl7Q1NTLnRvZ2dsZUNsYXNzKHksJ3Nob3dTdWJzY3JpcHRpb25NZW51Jyk7bCh5 LHpiKTtyZXR1cm4gZmFsc2U7fWVsc2UgaWYoQ1NTLmhhc0NsYXNzKHphLCdTdWJz Y3JpYmVNZW51VW5zdWJzY3JpYmUnKSl7Q1NTLnRvZ2dsZUNsYXNzKHksJ3Nob3dT dWJzY3JpcHRpb25NZW51Jyk7bSh5LHpiKTtyZXR1cm4gZmFsc2U7fWVsc2UgaWYo Q1NTLmhhc0NsYXNzKHphLCdTdWJzY3JpcHRpb25NZW51SXRlbScpKXtrKHksemIs eix6YSk7cmV0dXJuIGZhbHNlO319ZnVuY3Rpb24gayh5LHpiLHosemEpe2lmKENT Uy5oYXNDbGFzcyh6YSwnU3Vic2NyaXB0aW9uTWVudUxldmVsJykpe2lmKE1lbnUu aXNJdGVtQ2hlY2tlZCh6YSkpcmV0dXJuO28oeSx6YixpKHphKSx0cnVlLHopO31l bHNlIGlmKENTUy5oYXNDbGFzcyh6YSwnU3Vic2NyaXB0aW9uTWVudUNhdGVnb3J5 JykpeCh6Yix6YSwhTWVudS5pc0l0ZW1DaGVja2VkKHphKSx0cnVlLHopO31mdW5j dGlvbiBsKHksemEpe3ZhciB6PXtwcm9maWxlX2lkOnphfTtBcmJpdGVyLmluZm9y bSgnRm9sbG93VXNlcicseik7Q1NTLnJlbW92ZUNsYXNzKHksJ2lzVW5zdWJzY3Jp YmVkJyk7bmV3IEFzeW5jUmVxdWVzdCgpLnNldFVSSShyKS5zZXRNZXRob2QoJ1BP U1QnKS5zZXREYXRhKHtwcm9maWxlX2lkOnphLGxvY2F0aW9uOmF9KS5zZXRFcnJv ckhhbmRsZXIoQXJiaXRlci5pbmZvcm0uY3VycnkoJ0ZvbGxvd1VzZXJGYWlsJyx6 KSkuc2VuZCgpO31mdW5jdGlvbiBtKHksemEpe3ZhciB6PXtwcm9maWxlX2lkOnph fTtBcmJpdGVyLmluZm9ybSgnVW5mb2xsb3dpbmdVc2VyJyx6KTtDU1MuYWRkQ2xh c3MoeSwnaXNVbnN1YnNjcmliZWQnKTtuZXcgQXN5bmNSZXF1ZXN0KCkuc2V0VVJJ KHcpLnNldE1ldGhvZCgnUE9TVCcpLnNldERhdGEoe3Byb2ZpbGVfaWQ6emEsbG9j YXRpb246YX0pLnNldEVycm9ySGFuZGxlcihBcmJpdGVyLmluZm9ybS5jdXJyeSgn VW5mb2xsb3dVc2VyRmFpbCcseikpLnNlbmQoKTt9ZnVuY3Rpb24gcCh6YSx6Yix6 KXt2YXIgeT17cHJvZmlsZV9pZDp6YSxsZXZlbDp0W3phXSxjdXN0b21fY2F0ZWdv cmllczpzW3phXSxsb2NhdGlvbjp6fTtuZXcgQXN5bmNSZXF1ZXN0KCkuc2V0VVJJ KCcvYWpheC9mb2xsb3cvbWFuYWdlX3N1YnNjcmlwdGlvbnMucGhwJykuc2V0RGF0 YSh5KS5zZW5kKCk7fWZ1bmN0aW9uIHUoeix6Yil7dmFyIHk9c1t6Yl18fFtdO3Zh ciB6YT1NZW51LmdldEl0ZW1zKHopO3phLmZvckVhY2goZnVuY3Rpb24oemQpe2lm KENTUy5oYXNDbGFzcyh6ZCwnU3Vic2NyaXB0aW9uTWVudUNhdGVnb3J5Jykpe3Zh ciB6Yz1pKHpkKTtpZih5LmNvbnRhaW5zKHpjKSl7Yyh6ZCk7fWVsc2Ugdih6ZCk7 fX0pO28oeix6Yix0W3piXSxmYWxzZSk7fWZ1bmN0aW9uIGkoeil7dmFyIHk9RE9N LnNjcnkoeiwnaW5wdXQnKVswXTtyZXR1cm4geSYmeS52YWx1ZTt9ZnVuY3Rpb24g aCh5KXtyZXR1cm4gRE9NLmZpbmQoeSwnYS5pdGVtQW5jaG9yJyk7fWZ1bmN0aW9u IGMoeSl7Q1NTLmFkZENsYXNzKHksJ2NoZWNrZWQnKTtoKHkpLnNldEF0dHJpYnV0 ZSgnYXJpYS1jaGVja2VkJyx0cnVlKTt9ZnVuY3Rpb24gdih5KXtDU1MucmVtb3Zl Q2xhc3MoeSwnY2hlY2tlZCcpO2goeSkuc2V0QXR0cmlidXRlKCdhcmlhLWNoZWNr ZWQnLGZhbHNlKTt9ZnVuY3Rpb24geCh6Yyx6YSx5LHpkLHpiKXtpZih5KXtjKHph KTt9ZWxzZSB2KHphKTt2YXIgemU9aSh6YSk7aWYobih6ZSkpe3kmJnEoemMsemUp O31lbHNlIGlmKHkpe2lmKCFzW3pjXS5jb250YWlucyh6ZSkpc1t6Y10ucHVzaCh6 ZSk7fWVsc2V7dmFyIHo9c1t6Y10uaW5kZXhPZih6ZSk7aWYoeiE9PS0xKXNbemNd LnNwbGljZSh6LDEpO31pZih6ZClwKHpjLHplLHpiKTt9ZnVuY3Rpb24gcSh6LHkp e3Rbel09eTtBcmJpdGVyLmluZm9ybSgnU3Vic2NyaXB0aW9uTGV2ZWxVcGRhdGVk Jyx7cHJvZmlsZV9pZDp6LGxldmVsOnl9KTt9ZnVuY3Rpb24gbyh5LHpjLHosemUs emIpe3ZhciB6YT1ET00uc2NyeSh5LCcuU3Vic2NyaXB0aW9uTWVudUxldmVsJyk7 dmFyIHpkPW51bGw7emEuZm9yRWFjaChmdW5jdGlvbih6Zil7aWYoaSh6Zik9PXop e3pkPXpmO31lbHNlIGlmKE1lbnUuaXNJdGVtQ2hlY2tlZCh6ZikpeCh6Yyx6Zixm YWxzZSxmYWxzZSk7fSk7emQmJngoemMsemQsdHJ1ZSx6ZSx6Yik7fUFyYml0ZXIu c3Vic2NyaWJlKCdVbmZvbGxvd1VzZXInLGZ1bmN0aW9uKHkseil7aWYoZlt6LnBy b2ZpbGVfaWRdKXtxKHoucHJvZmlsZV9pZCxmW3oucHJvZmlsZV9pZF0pO3Nbei5w cm9maWxlX2lkXT1lW3oucHJvZmlsZV9pZF0uc2xpY2UoKTt9fSk7QXJiaXRlci5z dWJzY3JpYmUoJ1VwZGF0ZVN1YnNjcmlwdGlvbkxldmVsJyxmdW5jdGlvbih5LHpi KXt2YXIgemQ9emIucHJvZmlsZV9pZCsnJzt2YXIgemM9emIubGV2ZWwrJyc7cSh6 ZCx6Yyk7dmFyIHphO2Zvcih6YSBpbiBkKWlmKGRbemFdPT09emQpe3ZhciB6PWdl KHphKTt6JiZvKHosemQsemMsZmFsc2UpO319KTtyZXR1cm4ge2luaXQ6ZnVuY3Rp b24oeSx6Yix6YSl7dmFyIHo9eS5pZDtpZighZFt6XSlFdmVudC5saXN0ZW4oeSwn Y2xpY2snLGZ1bmN0aW9uKHpjKXtyZXR1cm4gaih5LGRbel0semEsemMuZ2V0VGFy Z2V0KCkpO30pO2lmKHRbemJdKXUoeSx6Yik7ZFt6XT16YjtDU1MuY29uZGl0aW9u Q2xhc3MoeSwnTm9uRnJpZW5kU3Vic2NyaXB0aW9uTWVudScsIWdbemJdKTt9LGdl dFN1YnNjcmlwdGlvbnM6ZnVuY3Rpb24oeSl7cmV0dXJuIHtsZXZlbDp0W3ldLGN1 c3RvbV9jYXRlZ29yaWVzOnNbeV19O30sc2V0U3Vic2NyaXB0aW9uczpmdW5jdGlv bih6Yix6YSx6ZCx6Yyx6LHkpe3EoemIsemQrJycpO2dbemJdPXphO2ZbemJdPXor Jyc7c1t6Yl09emMubWFwKFN0cmluZyk7ZVt6Yl09eS5tYXAoU3RyaW5nKTt9fTt9 KSgpOwpmdW5jdGlvbiBIb3ZlckZseW91dChhKXt0aGlzLl9mbHlvdXQ9YTt0aGlz Ll9zaG93RGVsYXk9MDt0aGlzLl9oaWRlRGVsYXk9MTAwO3RoaXMuX3Nob3dUaW1l b3V0PW51bGw7dGhpcy5faGlkZVRpbWVvdXQ9bnVsbDt0aGlzLl9mbHlvdXRTdWJz Y3JpcHRpb25zPVt0aGlzLl9mbHlvdXQuc3Vic2NyaWJlKCdtb3VzZWVudGVyJyx0 aGlzLl9vbkZseW91dE1vdXNlRW50ZXIuYmluZCh0aGlzKSksdGhpcy5fZmx5b3V0 LnN1YnNjcmliZSgnbW91c2VsZWF2ZScsdGhpcy5oaWRlRmx5b3V0LnNoaWVsZCh0 aGlzKSldO3RoaXMuX25vZGVzPVtdO3RoaXMuX2RhdGFTdG9yZVVuaXF1ZT0nSG92 ZXJGbHlvdXRfJytEYXRlLm5vdygpO31DbGFzcy5taXhpbihIb3ZlckZseW91dCwn QXJiaXRlcicse2luaXROb2RlOmZ1bmN0aW9uKGEpe3RoaXMuX25vZGVzLnB1c2go YSk7RGF0YVN0b3JlLnNldChhLHRoaXMuX2RhdGFTdG9yZVVuaXF1ZSsnX2xpc3Rl bmVycycsW0V2ZW50Lmxpc3RlbihhLCdtb3VzZWVudGVyJyx0aGlzLl9vbk5vZGVN b3VzZUVudGVyLmJpbmQodGhpcyxhKSksRXZlbnQubGlzdGVuKGEsJ21vdXNlbGVh dmUnLHRoaXMuaGlkZUZseW91dC5zaGllbGQodGhpcykpXSk7cmV0dXJuIHRoaXM7 fSxkZWFjdGl2YXRlTm9kZTpmdW5jdGlvbihhKXt2YXIgYj1EYXRhU3RvcmUuZ2V0 KGEsdGhpcy5fZGF0YVN0b3JlVW5pcXVlKydfbGlzdGVuZXJzJyk7aWYoYil3aGls ZShiLmxlbmd0aCliLnBvcCgpLnJlbW92ZSgpO3RoaXMuX25vZGVzLnJlbW92ZShh KTt9LHNldFNob3dEZWxheTpmdW5jdGlvbihhKXt0aGlzLl9zaG93RGVsYXk9YTty ZXR1cm4gdGhpczt9LHNldEhpZGVEZWxheTpmdW5jdGlvbihhKXt0aGlzLl9oaWRl RGVsYXk9YTtyZXR1cm4gdGhpczt9LHNob3dGbHlvdXQ6ZnVuY3Rpb24oYSxiKXt0 aGlzLnNldEFjdGl2ZU5vZGUoYSk7aWYoYil7dGhpcy5fZmx5b3V0LnNldENvbnRl eHQoYSkuc2hvdygpO3RoaXMuaW5mb3JtKCdzaG93JyxhKTt9ZWxzZSB0aGlzLl9z aG93VGltZW91dD10aGlzLnNob3dGbHlvdXQuYmluZCh0aGlzLGEsdHJ1ZSkuZGVm ZXIodGhpcy5fc2hvd0RlbGF5KTtyZXR1cm4gdGhpczt9LGhpZGVGbHlvdXQ6ZnVu Y3Rpb24oYSl7Y2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dUaW1lb3V0KTtpZihhKXt0 aGlzLl9mbHlvdXQuaGlkZSgpO3RoaXMuaW5mb3JtKCdoaWRlJyx0aGlzLl9hY3Rp dmVOb2RlKTt0aGlzLl9hY3RpdmVOb2RlPW51bGw7fWVsc2UgdGhpcy5faGlkZVRp bWVvdXQ9dGhpcy5oaWRlRmx5b3V0LmJpbmQodGhpcyx0cnVlKS5kZWZlcih0aGlz Ll9oaWRlRGVsYXkpO30sZ2V0QWN0aXZlTm9kZTpmdW5jdGlvbigpe3JldHVybiB0 aGlzLl9hY3RpdmVOb2RlO30sc2V0QWN0aXZlTm9kZTpmdW5jdGlvbihhKXtjbGVh clRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXQpO2lmKHRoaXMuX2FjdGl2ZU5vZGUm JnRoaXMuX2FjdGl2ZU5vZGUhPT1hKXRoaXMuaGlkZUZseW91dCh0cnVlKTt0aGlz Ll9hY3RpdmVOb2RlPWE7cmV0dXJuIHRoaXM7fSxkZXN0cm95OmZ1bmN0aW9uKCl7 d2hpbGUodGhpcy5fZmx5b3V0U3Vic2NyaXB0aW9ucy5sZW5ndGgpdGhpcy5fZmx5 b3V0LnVuc3Vic2NyaWJlKHRoaXMuX2ZseW91dFN1YnNjcmlwdGlvbnMucG9wKCkp O2Zvcih2YXIgYT0wO2E8dGhpcy5fbm9kZXMubGVuZ3RoO2ErKyl7dmFyIGI9RGF0 YVN0b3JlLmdldCh0aGlzLl9ub2Rlc1thXSx0aGlzLl9kYXRhU3RvcmVVbmlxdWUr J19saXN0ZW5lcnMnKTtpZihiKXdoaWxlKGIubGVuZ3RoKWIucG9wKCkucmVtb3Zl KCk7fX0sX29uTm9kZU1vdXNlRW50ZXI6ZnVuY3Rpb24oYSl7aWYodGhpcy5fYWN0 aXZlTm9kZT09PWEpe2NsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dCk7fWVs c2UgdGhpcy5zaG93Rmx5b3V0KGEpO30sX29uRmx5b3V0TW91c2VFbnRlcjpmdW5j dGlvbigpe2NsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dCk7fX0pOwp2YXIg U3Vic2NyaXB0aW9uRmx5b3V0Q29udHJvbGxlcj0oZnVuY3Rpb24oKXt2YXIgZD1u dWxsO3ZhciBjO3ZhciBlO3ZhciBiO2Z1bmN0aW9uIGEoKXt2YXIgaT1FZGl0U3Vi c2NyaXB0aW9ucy5nZXRTdWJzY3JpcHRpb25zKGIpO2lmKGkpe3ZhciBoPWkuY3Vz dG9tX2NhdGVnb3JpZXM7aWYoaCYmaC5sZW5ndGg9PT0wKUFyYml0ZXIuaW5mb3Jt KCdVbmZvbGxvd1VzZXInLHtwcm9maWxlX2lkOmIsZnJvbV9oaWRlX2ZseW91dDp0 cnVlfSk7fX1mdW5jdGlvbiBnKGgsail7Yj1EYXRhU3RvcmUuZ2V0KGosJ3Byb2Zp bGVfaWQnKTt2YXIgaT1EYXRhU3RvcmUuZ2V0KGosJ2xvYycpO0VkaXRTdWJzY3Jp cHRpb25zLmluaXQoZSxiLGkpO0NTUy5hZGRDbGFzcyhqLCdzZWxlY3RlZCcpO0NT Uy5hZGRDbGFzcyhqLCd1aUJ1dHRvbkhvdmVyJyk7aWYoRGF0YVN0b3JlLmdldChq LCdvbmNsb3NlJykpY2xlYXJUaW1lb3V0KERhdGFTdG9yZS5yZW1vdmUoaiwnb25j bG9zZXRpbWVvdXQnKSk7fWZ1bmN0aW9uIGYoaCxpKXtiPW51bGw7Q1NTLnJlbW92 ZUNsYXNzKGksJ3NlbGVjdGVkJyk7Q1NTLnJlbW92ZUNsYXNzKGksJ3VpQnV0dG9u SG92ZXInKTtpZihEYXRhU3RvcmUuZ2V0KGksJ29uY2xvc2UnKSlEYXRhU3RvcmUu c2V0KGksJ29uY2xvc2V0aW1lb3V0JyxmdW5jdGlvbigpe3ZhciBqPURhdGFTdG9y ZS5yZW1vdmUoaSwnb25jbG9zZScpO2omJmooKTt9LmRlZmVyKDE1MDApKTt9cmV0 dXJuIHtpbml0OmZ1bmN0aW9uKGgsaSl7U3Vic2NyaXB0aW9uRmx5b3V0Q29udHJv bGxlci5pbml0PWJhZ29maG9sZGluZztjPWg7ZT1pO2Q9bmV3IEhvdmVyRmx5b3V0 KGgpO2Quc2V0U2hvd0RlbGF5KDEwMCkuc2V0SGlkZURlbGF5KDE1MCk7ZC5zdWJz Y3JpYmUoJ3Nob3cnLGcpO2Quc3Vic2NyaWJlKCdoaWRlJyxmKTtBcmJpdGVyLnN1 YnNjcmliZShbJ1VuZm9sbG93VXNlcicsJ1VuZm9sbG93aW5nVXNlciddLGZ1bmN0 aW9uKGosayl7aWYoIWsuZnJvbV9oaWRlX2ZseW91dCYmay5wcm9maWxlX2lkPT1i KXtpZih3aW5kb3cuSG92ZXJjYXJkJiZIb3ZlcmNhcmQuY29udGFpbnMmJmMpaWYo SG92ZXJjYXJkLmNvbnRhaW5zKGMuZ2V0Q29udGV4dCgpKSlIb3ZlcmNhcmQuaGlk ZSgpO2QuaGlkZUZseW91dCh0cnVlKTt9fSk7fSxpbml0Tm9kZTpmdW5jdGlvbihp LGosaCl7RGF0YVN0b3JlLnNldChpLCdwcm9maWxlX2lkJyxqKTtEYXRhU3RvcmUu c2V0KGksJ2xvYycsaCk7ZC5pbml0Tm9kZShpKTt9LHNldEFjdGl2ZU5vZGU6ZnVu Y3Rpb24oaCl7ZC5zZXRBY3RpdmVOb2RlKGgpO30sc2hvdzpmdW5jdGlvbihoKXtk LnNob3dGbHlvdXQoaCx0cnVlKTt9LHNldENsb3NlTGlzdGVuZXI6ZnVuY3Rpb24o aSxoKXtpZihkLmdldEFjdGl2ZU5vZGUoKSE9PWkpe2goKTt9ZWxzZSBEYXRhU3Rv cmUuc2V0KGksJ29uY2xvc2UnLGgpO319O30pKCk7CkZyaWVuZFJlcXVlc3RNZXNz YWdlPXtTVEFUVVM6J0ZyaWVuZFJlcXVlc3QvY2hhbmdlJyxVTkZSSUVORDonRnJp ZW5kUmVxdWVzdC91bmZyaWVuZCcsQ0FOQ0VMOidGcmllbmRSZXF1ZXN0L2NhbmNl bCcsQ0FOQ0VMTElORzonRnJpZW5kUmVxdWVzdC9jYW5jZWxsaW5nJyxDQU5DRUxf RkFJTDonRnJpZW5kUmVxdWVzdC9jYW5jZWxGYWlsJyxTRU5UOidGcmllbmRSZXF1 ZXN0L3NlbnQnLFNFTkRJTkc6J0ZyaWVuZFJlcXVlc3Qvc2VuZGluZycsU0VORF9G QUlMOidGcmllbmRSZXF1ZXN0L3NlbmRGYWlsJyxDT05GSVJNOidGcmllbmRSZXF1 ZXN0L2NvbmZpcm0nLENPTkZJUk1JTkc6J0ZyaWVuZFJlcXVlc3QvY29uZmlybWlu ZycsQ09ORklSTV9GQUlMOidGcmllbmRSZXF1ZXN0L2NvbmZpcm1GYWlsJ307ZnVu Y3Rpb24gRnJpZW5kU3RhdHVzKGEsYyxiKXt0aGlzLmlkPWE7dGhpcy51cGRhdGUo YyxiKTt9RnJpZW5kU3RhdHVzLnByb3RvdHlwZT17dXBkYXRlOmZ1bmN0aW9uKGIs YSl7YiYmKHRoaXMuc3RhdHVzPWIpO2lmKGEpe3RoaXMubGlzdHM9JEEoYSkubWFw KFN0cmluZyk7dGhpcy5faW5mb3JtTGlzdENoYW5nZSgpO319LGlzQ29tcGxldGU6 ZnVuY3Rpb24oKXtyZXR1cm4gISF0aGlzLmxpc3RzO30sYWRkVG9MaXN0OmZ1bmN0 aW9uKGEpe2lmKHRoaXMubGlzdHMmJiF0aGlzLmxpc3RzLmNvbnRhaW5zKGEpKXRo aXMubGlzdHMucHVzaChhKTt0aGlzLl9pbmZvcm1MaXN0Q2hhbmdlKCk7fSxyZW1v dmVGcm9tTGlzdDpmdW5jdGlvbihiKXtpZih0aGlzLmxpc3RzKXt2YXIgYT10aGlz Lmxpc3RzLmluZGV4T2YoYik7YSE9PS0xJiZ0aGlzLmxpc3RzLnNwbGljZShhLDEp O310aGlzLl9pbmZvcm1MaXN0Q2hhbmdlKCk7fSx1cGRhdGVMaXN0OmZ1bmN0aW9u KGIsYSl7YT90aGlzLmFkZFRvTGlzdChiKTp0aGlzLnJlbW92ZUZyb21MaXN0KGIp O30sX2luZm9ybUxpc3RDaGFuZ2U6ZnVuY3Rpb24oKXtBcmJpdGVyLmluZm9ybSgn RnJpZW5kTGlzdE1lbWJlcnNoaXBDaGFuZ2UnLHt1aWQ6dGhpcy5pZCxsaXN0czp0 aGlzLmxpc3RzfSk7fX07Y29weV9wcm9wZXJ0aWVzKEZyaWVuZFN0YXR1cyx7QVJF X0ZSSUVORFM6MSxJTkNPTUlOR19SRVFVRVNUOjIsT1VUR09JTkdfUkVRVUVTVDoz LENBTl9SRVFVRVNUOjR9KTsoZnVuY3Rpb24oKXt2YXIgYT17fTt2YXIgYj17fTtm dW5jdGlvbiBjKGYsZCxlKXtpZighYVtlLnVpZF0pe2FbZS51aWRdPW5ldyBGcmll bmRTdGF0dXMoZS51aWQsZik7fWVsc2UgYVtlLnVpZF0udXBkYXRlKGYpO0FyYml0 ZXIuaW5mb3JtKEZyaWVuZFJlcXVlc3RNZXNzYWdlLlNUQVRVUyx7dWlkOmUudWlk LHN0YXR1czpmfSk7fW9ubG9hZFJlZ2lzdGVyKGZ1bmN0aW9uKCl7QXJiaXRlci5z dWJzY3JpYmUoW0ZyaWVuZFJlcXVlc3RNZXNzYWdlLkNBTkNFTCxGcmllbmRSZXF1 ZXN0TWVzc2FnZS5VTkZSSUVORCxGcmllbmRSZXF1ZXN0TWVzc2FnZS5TRU5EX0ZB SUxdLGMuY3VycnkoRnJpZW5kU3RhdHVzLkNBTl9SRVFVRVNUKSk7QXJiaXRlci5z dWJzY3JpYmUoW0ZyaWVuZFJlcXVlc3RNZXNzYWdlLkNPTkZJUk1fRkFJTF0sYy5j dXJyeShGcmllbmRTdGF0dXMuSU5DT01JTkdfUkVRVUVTVCkpO0FyYml0ZXIuc3Vi c2NyaWJlKFtGcmllbmRSZXF1ZXN0TWVzc2FnZS5DQU5DRUxfRkFJTCxGcmllbmRS ZXF1ZXN0TWVzc2FnZS5TRU5ULEZyaWVuZFJlcXVlc3RNZXNzYWdlLlNFTkRJTkdd LGMuY3VycnkoRnJpZW5kU3RhdHVzLk9VVEdPSU5HX1JFUVVFU1QpKTtBcmJpdGVy LnN1YnNjcmliZShbRnJpZW5kUmVxdWVzdE1lc3NhZ2UuQ09ORklSTSxGcmllbmRS ZXF1ZXN0TWVzc2FnZS5DT05GSVJNSU5HXSxjLmN1cnJ5KEZyaWVuZFN0YXR1cy5B UkVfRlJJRU5EUykpO30pO2NvcHlfcHJvcGVydGllcyhGcmllbmRTdGF0dXMse0NM T1NFX0ZSSUVORFM6bnVsbCxBQ1FVQUlOVEFOQ0VTOm51bGwsZ2V0RnJpZW5kOmZ1 bmN0aW9uKGQsZSl7aWYoYVtkXSYmYVtkXS5pc0NvbXBsZXRlKCkpe2UoYVtkXSk7 fWVsc2UgaWYoYltkXSl7YltkXS5wdXNoKGUpO31lbHNle2JbZF09W2VdO25ldyBB c3luY1JlcXVlc3QoKS5zZXRVUkkoIi9hamF4L2ZyaWVuZHMvc3RhdHVzLnBocCIp LnNldERhdGEoe2ZyaWVuZDpkfSkuc2V0SGFuZGxlcihmdW5jdGlvbihnKXt2YXIg Zj1nLmdldFBheWxvYWQoKTtGcmllbmRTdGF0dXMuaW5pdEZyaWVuZChkLGYuc3Rh dHVzLGYubGlzdHMpO30pLnNlbmQoKTt9fSxpbml0RnJpZW5kOmZ1bmN0aW9uKGUs ZyxmKXt2YXIgZD1hW2VdfHxuZXcgRnJpZW5kU3RhdHVzKGUpO2QudXBkYXRlKGQu c3RhdHVzfHxnLGQubGlzdHN8fGYpO2FbZV09ZDtiW2VdJiZiW2VdLmZvckVhY2go ZnVuY3Rpb24oaCl7aChkKTt9KTtiW2VdPW51bGw7fSxzZXRTcGVjaWFsTGlzdHM6 ZnVuY3Rpb24oZCl7RnJpZW5kU3RhdHVzLkNMT1NFX0ZSSUVORFM9ZC5jbG9zZSsn JztGcmllbmRTdGF0dXMuQUNRVUFJTlRBTkNFUz1kLmFjcSsnJzt9fSk7fSkoKTsK X19lKCJlbnYiLFsiRW52Il0sZnVuY3Rpb24oYixjKXt2YXIgYT1jKCdFbnYnKTti LkVudj1hO30sMyk7Cm9ubG9hZFJlZ2lzdGVyKGZ1bmN0aW9uKCl7Y29weV9wcm9w ZXJ0aWVzKEFzeW5jUmVxdWVzdC5wcm90b3R5cGUse3NldE5lY3Rhck1vZHVsZURh dGE6ZnVuY3Rpb24oYyl7aWYodGhpcy5tZXRob2Q9PSdQT1NUJyl7dmFyIGQ9RW52 Lm1vZHVsZTtpZihjJiZkPT09dW5kZWZpbmVkKXt2YXIgYj17ZmJwYWdlX2Zhbl9j b25maXJtOjF9O3ZhciBlPW51bGw7Zm9yKHZhciBhPWM7YSYmYSE9ZG9jdW1lbnQu Ym9keTthPWEucGFyZW50Tm9kZSl7aWYoIWEuaWR8fHR5cGVvZiBhLmlkIT09J3N0 cmluZycpY29udGludWU7aWYoYS5pZC5zdGFydHNXaXRoKCdwYWdlbGV0XycpKXtk PWEuaWQ7YnJlYWs7fWlmKCFlJiZiW2EuaWRdKWU9YS5pZDt9aWYoZD09PXVuZGVm aW5lZCYmZSlkPWU7fWlmKGQhPT11bmRlZmluZWQpe2lmKHRoaXMuZGF0YS5uY3Ry PT09dW5kZWZpbmVkKXRoaXMuZGF0YS5uY3RyPXt9O3RoaXMuZGF0YS5uY3RyLl9t b2Q9ZDt9fX0sc2V0TmVjdGFySW1wcmVzc2lvbklkOmZ1bmN0aW9uKCl7aWYodGhp cy5tZXRob2Q9PSdQT1NUJyl7dmFyIGE9RW52LmltcGlkO2lmKGEhPT11bmRlZmlu ZWQpe2lmKHRoaXMuZGF0YS5uY3RyPT09dW5kZWZpbmVkKXRoaXMuZGF0YS5uY3Ry PXt9O3RoaXMuZGF0YS5uY3RyLl9pbXBpZD1hO319fX0pO30pOwpmdW5jdGlvbiBm YnBhZ2Vfc2V0X2Zhbl9zdGF0dXMoYyxmLGEsaCxnLGQsZSl7Zz1nP2c6ZnVuY3Rp b24oail7X2ZicGFnZV9zaG93X2NoYW5nZV9zdGF0dXNfZmVlZGJhY2soYyxqLmdl dFBheWxvYWQoKSk7fTt2YXIgYj17ZmJwYWdlX2lkOmYsYWRkOmEscmVsb2FkOmh9 O2lmKGUhPW51bGwpY29weV9wcm9wZXJ0aWVzKGIsZSk7dmFyIGk9bmV3IEFzeW5j UmVxdWVzdCgpLnNldFVSSSgnL2FqYXgvcGFnZXMvZmFuX3N0YXR1cy5waHAnKS5z ZXREYXRhKGIpLnNldE5lY3Rhck1vZHVsZURhdGFTYWZlKGMpLnNldEhhbmRsZXIo Zyk7aWYoZClpLnNldEVycm9ySGFuZGxlcihkKTtpLnNlbmQoKTtyZXR1cm4gZmFs c2U7fWZ1bmN0aW9uIGZicGFnZV9zZXRfZmF2b3JpdGVfc3RhdHVzKGQsZSxhKXt2 YXIgZj1mdW5jdGlvbigpe19mYnBhZ2Vfc2hvd19jaGFuZ2Vfc3RhdHVzX2ZlZWRi YWNrKGQsdGhpcy5nZXRVc2VyRGF0YSgpKTt9O3ZhciBjPXtmYnBhZ2VfaWQ6ZSxh ZGQ6YX07dmFyIGI9bmV3IEFzeW5jUmVxdWVzdCgpLnNldE1ldGhvZCgnUE9TVCcp LnNldFVSSSgnL2FqYXgvcGFnZXMvZmF2b3JpdGVfc3RhdHVzLnBocCcpLnNldERh dGEoYyk7bmV3IERpYWxvZygpLnNldEFzeW5jKGIpLnNldENsb3NlSGFuZGxlcihm KS5zaG93KCk7cmV0dXJuIGZhbHNlO31mdW5jdGlvbiBfZmJwYWdlX3Nob3dfY2hh bmdlX3N0YXR1c19mZWVkYmFjayhiLGEpe2lmKCFhfHwhYilyZXR1cm47aWYoYS5y ZWxvYWQpe2ZicGFnZV9yZWxvYWRfb25fZmFuX3N0YXR1c19jaGFuZ2VkKGEucHJl c2VydmVfdGFiKTt9ZWxzZSBmYnBhZ2VfcmVkcmF3X29uX2Zhbl9zdGF0dXNfY2hh bmdlZChiLGEuZmVlZGJhY2spO31mdW5jdGlvbiBmYnBhZ2VfcmVsb2FkX29uX2Zh bl9zdGF0dXNfY2hhbmdlZChhKXt2YXIgYz1VUkkuZ2V0UmVxdWVzdFVSSSgpO2lm KGEpe3ZhciBiPUZ1dHVyZVNpZGVOYXYuZ2V0SW5zdGFuY2UoKS5zZWxlY3RlZC50 ZXh0S2V5O2lmKCFjLmdldFF1ZXJ5RGF0YSgpLnNrJiZiKWMuYWRkUXVlcnlEYXRh KHtzazpifSk7fXdpbmRvdy5sb2NhdGlvbi5ocmVmPWM7fWZ1bmN0aW9uIGZicGFn ZV9yZWRyYXdfb25fZmFuX3N0YXR1c19jaGFuZ2VkKGEsYil7aWYoIWIpcmV0dXJu O3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtkLmlubmVySFRN TD1iO0NTUy5zZXRDbGFzcyhkLCdmYW5fc3RhdHVzX2luYWN0aXZlJyk7YS5wYXJl bnROb2RlLnJlcGxhY2VDaGlsZChkLGEpO3ZhciBjPWZ1bmN0aW9uKCl7aWYoZGF0 YS5jYW5fcmVwZWF0X2FjdGlvbilkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGEs ZCk7fTthbmltYXRpb24oZCkuZHVyYXRpb24oMzAwMCkuY2hlY2twb2ludCgpLnRv KCdiYWNrZ3JvdW5kQ29sb3InLCcjRkZGRkZGJykuZHVyYXRpb24oMTAwMCkub25k b25lKGMpLmdvKCk7fQpmdW5jdGlvbiBTaW1wbGVEcmFnKGEpe0V2ZW50Lmxpc3Rl bihhLCdtb3VzZWRvd24nLHRoaXMuX3N0YXJ0LmJpbmQodGhpcykpO31DbGFzcy5t aXhpbihTaW1wbGVEcmFnLCdBcmJpdGVyJyx7X3N0YXJ0OmZ1bmN0aW9uKGV2ZW50 KXt0aGlzLmluZm9ybSgnc3RhcnQnLGV2ZW50KTt2YXIgYj11YS5pZSgpPDk/ZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50OndpbmRvdzt2YXIgYT1FdmVudC5saXN0ZW4o Yix7c2VsZWN0c3RhcnQ6RXZlbnQucHJldmVudCxtb3VzZW1vdmU6dGhpcy5pbmZv cm0uYmluZCh0aGlzLCd1cGRhdGUnKSxtb3VzZXVwOmZ1bmN0aW9uKGV2ZW50KXtm b3IodmFyIGMgaW4gYSlhW2NdLnJlbW92ZSgpO3RoaXMuaW5mb3JtKCdlbmQnLGV2 ZW50KTt9LmJpbmQodGhpcyl9KTtyZXR1cm4gZmFsc2U7fX0pOwpmdW5jdGlvbiBT Y3JvbGxhYmxlQXJlYSgpe31jb3B5X3Byb3BlcnRpZXMoU2Nyb2xsYWJsZUFyZWEs e2dldEluc3RhbmNlOmZ1bmN0aW9uKGEpe3ZhciBiPVBhcmVudC5ieUNsYXNzKGEs J3VpU2Nyb2xsYWJsZUFyZWEnKTtyZXR1cm4gYj9EYXRhU3RvcmUuZ2V0KGIsJ1Nj cm9sbGFibGVBcmVhJyk6bnVsbDt9LHBva2U6ZnVuY3Rpb24oYil7dmFyIGE9U2Ny b2xsYWJsZUFyZWEuZ2V0SW5zdGFuY2UoYik7YSYmYS5wb2tlKCk7fX0pO1Njcm9s bGFibGVBcmVhLnByb3RvdHlwZT17aW5pdDpmdW5jdGlvbihhLGIpe2I9Ynx8e307 dGhpcy5fZWxlbT1hO3RoaXMuX3dyYXA9RE9NLmZpbmQoYSwnZGl2LnVpU2Nyb2xs YWJsZUFyZWFXcmFwJyk7dGhpcy5fYm9keT1ET00uZmluZCh0aGlzLl93cmFwLCdk aXYudWlTY3JvbGxhYmxlQXJlYUJvZHknKTt0aGlzLl90cmFjaz1ET00uZmluZChh LCdkaXYudWlTY3JvbGxhYmxlQXJlYVRyYWNrJyk7dGhpcy5fZ3JpcHBlcj1ET00u ZmluZCh0aGlzLl90cmFjaywnZGl2LnVpU2Nyb2xsYWJsZUFyZWFHcmlwcGVyJyk7 dGhpcy5fb3B0aW9ucz1iO3RoaXMuYWRqdXN0R3JpcHBlcigpO3RoaXMuX2xpc3Rl bmVycz1bRXZlbnQubGlzdGVuKHRoaXMuX3dyYXAsJ3Njcm9sbCcsdGhpcy5faGFu ZGxlU2Nyb2xsLmJpbmQodGhpcykpXTtpZihiLmZhZGUhPT1mYWxzZSl0aGlzLl9s aXN0ZW5lcnMucHVzaChFdmVudC5saXN0ZW4oYSwnbW91c2VlbnRlcicsdGhpcy5h ZGp1c3RHcmlwcGVyLnNoaWVsZCh0aGlzKSksRXZlbnQubGlzdGVuKGEsJ21vdXNl ZW50ZXInLHRoaXMuc2hvd1Njcm9sbGJhci5zaGllbGQodGhpcykpLEV2ZW50Lmxp c3RlbihhLCdtb3VzZW1vdmUnLHRoaXMuX2hhbmRsZU1vdXNlbW92ZS5iaW5kKHRo aXMpKSxFdmVudC5saXN0ZW4oYSwnbW91c2VvdXQnLHRoaXMuaGlkZVNjcm9sbGJh ci5zaGllbGQodGhpcykpKTt0aGlzLmluaXREcmFnKCk7RGF0YVN0b3JlLnNldCh0 aGlzLl9lbGVtLCdTY3JvbGxhYmxlQXJlYScsdGhpcyk7aWYoIWIucGVyc2lzdGVu dClvbmxlYXZlUmVnaXN0ZXIodGhpcy5kZXN0cm95LmJpbmQodGhpcykpO30saW5p dERyYWc6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgU2ltcGxlRHJhZyh0aGlzLl9ncmlw cGVyKTthLnN1YnNjcmliZSgnc3RhcnQnLGZ1bmN0aW9uKGIsZXZlbnQpe2lmKCEo KGV2ZW50LndoaWNoJiZldmVudC53aGljaD09PTEpfHwoZXZlbnQuYnV0dG9uJiZl dmVudC5idXR0b249PT0xKSkpcmV0dXJuO3ZhciBkPXRoaXMuX2dldFBhZ2VZKGV2 ZW50KTt2YXIgZT10aGlzLl9ncmlwcGVyLm9mZnNldFRvcDt2YXIgZj1hLnN1YnNj cmliZSgndXBkYXRlJyxmdW5jdGlvbihnLGV2ZW50KXt2YXIgaj10aGlzLl9nZXRQ YWdlWShldmVudCktZDt2YXIgaT10aGlzLl9lbGVtLmNsaWVudEhlaWdodDt2YXIg aD10aGlzLl9ib2R5Lm9mZnNldEhlaWdodDt2YXIgcD10aGlzLl90cmFjay5vZmZz ZXRIZWlnaHQ7dmFyIGs9aS9oKnA7dmFyIG09aC10aGlzLl93cmFwLm9mZnNldEhl aWdodDt2YXIgbD1lK2o7dmFyIG49cC1rO2w9TWF0aC5tYXgoTWF0aC5taW4obCxu KSwwKTt2YXIgbz1sL24qbTt0aGlzLl93cmFwLnNjcm9sbFRvcD1vO30uYmluZCh0 aGlzKSk7dmFyIGM9YS5zdWJzY3JpYmUoJ2VuZCcsZnVuY3Rpb24oKXthLnVuc3Vi c2NyaWJlKGYpO2EudW5zdWJzY3JpYmUoYyk7fSk7fS5iaW5kKHRoaXMpKTt9LGFk anVzdEdyaXBwZXI6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLl9lbGVtLmNsaWVudEhl aWdodDt2YXIgYT10aGlzLl9ib2R5Lm9mZnNldEhlaWdodDt2YXIgZT10aGlzLl90 cmFjay5vZmZzZXRIZWlnaHQ7dmFyIGM9Yi9hKmU7aWYoYzxlKXtDU1Muc2V0U3R5 bGUodGhpcy5fZ3JpcHBlciwnaGVpZ2h0JyxjKydweCcpO3ZhciBkPXRoaXMuX3dy YXAuc2Nyb2xsVG9wL2EqZTtDU1Muc2V0U3R5bGUodGhpcy5fZ3JpcHBlciwndG9w JyxkKydweCcpO0NTUy5zaG93KHRoaXMuX2dyaXBwZXIpO31lbHNlIENTUy5oaWRl KHRoaXMuX2dyaXBwZXIpO3RoaXMuX2NoZWNrQ29udGVudEJvdW5kYXJpZXMoKTty ZXR1cm4gdGhpczt9LF9jaGVja0NvbnRlbnRCb3VuZGFyaWVzOmZ1bmN0aW9uKCl7 dmFyIGE9dGhpcy5fd3JhcC5zY3JvbGxUb3A7dmFyIGI9dGhpcy5fd3JhcC5zY3Jv bGxIZWlnaHQtdGhpcy5fd3JhcC5jbGllbnRIZWlnaHQ7Q1NTLmNvbmRpdGlvbkNs YXNzKHRoaXMuX2VsZW0sJ2NvbnRlbnRCZWZvcmUnLGE+MCk7Q1NTLmNvbmRpdGlv bkNsYXNzKHRoaXMuX2VsZW0sJ2NvbnRlbnRBZnRlcicsYTxiKTt9LGRlc3Ryb3k6 ZnVuY3Rpb24oKXt0aGlzLl9saXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbihhKXth LnJlbW92ZSgpO30pO3RoaXMuX2xpc3RlbmVycy5sZW5ndGg9MDt9LF9nZXRQYWdl WDpmdW5jdGlvbihldmVudCl7cmV0dXJuIGV2ZW50LnBhZ2VYIT1udWxsP2V2ZW50 LnBhZ2VYOmV2ZW50LmNsaWVudFgrZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0O30s X2dldFBhZ2VZOmZ1bmN0aW9uKGV2ZW50KXtyZXR1cm4gZXZlbnQucGFnZVkhPW51 bGw/ZXZlbnQucGFnZVk6ZXZlbnQuY2xpZW50WStkb2N1bWVudC5ib2R5LnNjcm9s bFRvcDt9LF9oYW5kbGVNb3VzZW1vdmU6ZnVuY3Rpb24oZXZlbnQpe3ZhciBhPVZl Y3RvcjIuZ2V0RWxlbWVudFBvc2l0aW9uKHRoaXMuX3RyYWNrKS54O3ZhciBiPVZl Y3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5fdHJhY2spLng7aWYoTWF0 aC5hYnMoYStiLzItdGhpcy5fZ2V0UGFnZVgoZXZlbnQpKTwyNSl7dGhpcy5zaG93 U2Nyb2xsYmFyKGZhbHNlKTt9ZWxzZSB0aGlzLmhpZGVTY3JvbGxiYXIoKTt9LF9o YW5kbGVTY3JvbGw6ZnVuY3Rpb24oZXZlbnQpe3RoaXMuYWRqdXN0R3JpcHBlcigp O2lmKHRoaXMuX29wdGlvbnMuZmFkZSE9PWZhbHNlKXRoaXMuc2hvd1Njcm9sbGJh cigpO30saGlkZVNjcm9sbGJhcjpmdW5jdGlvbigpe2lmKCF0aGlzLl9zY3JvbGxi YXJWaXNpYmxlKXJldHVybiB0aGlzO3RoaXMuX3Njcm9sbGJhclZpc2libGU9ZmFs c2U7aWYodGhpcy5faGlkZVRpbWVvdXQpe2NsZWFyVGltZW91dCh0aGlzLl9oaWRl VGltZW91dCk7dGhpcy5faGlkZVRpbWVvdXQ9bnVsbDt9dGhpcy5faGlkZVRpbWVv dXQ9ZnVuY3Rpb24oKXtpZih0aGlzLl9zY3JvbGxiYXJBbmltYXRpb24pe3RoaXMu X3Njcm9sbGJhckFuaW1hdGlvbi5zdG9wKCk7dGhpcy5fc2Nyb2xsYmFyQW5pbWF0 aW9uPW51bGw7fXRoaXMuX3Njcm9sbGJhckFuaW1hdGlvbj1hbmltYXRpb24odGhp cy5fdHJhY2spLmZyb20oJ29wYWNpdHknLDEpLnRvKCdvcGFjaXR5JywwKS5kdXJh dGlvbigyNTApLm9uZG9uZShDU1MuYWRkQ2xhc3MuY3VycnkodGhpcy5fdHJhY2ss J2ludmlzaWJsZV9lbGVtJykpLmdvKCk7fS5iaW5kKHRoaXMpLmRlZmVyKDc1MCk7 cmV0dXJuIHRoaXM7fSxzaG93U2Nyb2xsYmFyOmZ1bmN0aW9uKGEpe2lmKHRoaXMu X3Njcm9sbGJhclZpc2libGUpcmV0dXJuIHRoaXM7dGhpcy5fc2Nyb2xsYmFyVmlz aWJsZT10cnVlO2lmKHRoaXMuX2hpZGVUaW1lb3V0KXtjbGVhclRpbWVvdXQodGhp cy5faGlkZVRpbWVvdXQpO3RoaXMuX2hpZGVUaW1lb3V0PW51bGw7fWlmKHRoaXMu X3Njcm9sbGJhckFuaW1hdGlvbil7dGhpcy5fc2Nyb2xsYmFyQW5pbWF0aW9uLnN0 b3AoKTt0aGlzLl9zY3JvbGxiYXJBbmltYXRpb249bnVsbDt9Q1NTLnNldFN0eWxl KHRoaXMuX3RyYWNrLCdvcGFjaXR5JywxKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5f dHJhY2ssJ2ludmlzaWJsZV9lbGVtJyk7aWYoYSE9PWZhbHNlKXRoaXMuaGlkZVNj cm9sbGJhcigpO3JldHVybiB0aGlzO30sc2Nyb2xsVG9Cb3R0b206ZnVuY3Rpb24o KXthbmltYXRpb24odGhpcy5fd3JhcCkudG8oJ3Njcm9sbFRvcCcsdGhpcy5fd3Jh cC5zY3JvbGxIZWlnaHQpLmVhc2UoYW5pbWF0aW9uLmVhc2UuZW5kKS5nbygpO30s cG9rZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3dyYXAuc2Nyb2xsVG9wO3RoaXMu X3dyYXAuc2Nyb2xsVG9wKz0xO3RoaXMuX3dyYXAuc2Nyb2xsVG9wLT0xO3RoaXMu X3dyYXAuc2Nyb2xsVG9wPWE7cmV0dXJuIHRoaXMuc2hvd1Njcm9sbGJhcihmYWxz ZSk7fX07CnZhciBEeW5hbWljRnJpZW5kTGlzdEVkdWNhdGlvbj0oZnVuY3Rpb24o KXt2YXIgaDt2YXIgZTt2YXIgZDt2YXIgYzt2YXIgYTt2YXIgaTt2YXIgZz1mdW5j dGlvbigpe2QmJmQuaGlkZSgpO2MmJmMuaGlkZSgpO307dmFyIGY9ZnVuY3Rpb24o ail7ZS5yZW1vdmUoaik7ZygpO2Eoe2FjY2VwdF90YWdfZWR1Y2F0aW9uOnRydWV9 KTt9O3ZhciBiPWZ1bmN0aW9uKCl7ZygpO2Eoe251eF9jYW5jZWw6dHJ1ZX0pO307 cmV0dXJuIHtpbml0OmZ1bmN0aW9uKGssail7aD1rO2U9JEEoaikubWFwKFN0cmlu Zyk7UGFnZVRyYW5zaXRpb25zLnJlZ2lzdGVySGFuZGxlcihmdW5jdGlvbigpe2co KTtoPWZhbHNlO2E9dW5kZWZpbmVkO2U9W107fSk7fSxzaG93RGlhbG9nOmZ1bmN0 aW9uKGssbCxqKXtpZihoJiZlLmNvbnRhaW5zKGspKXtnKCk7QXJiaXRlci5pbmZv cm0oJ0R5bmFtaWNGcmllbmRMaXN0RWR1Y2F0aW9uL2RpYWxvZ09wZW4nLHt1aWQ6 bCxmbGlkOmt9KTthPWo7ZD1uZXcgRGlhbG9nKCkuc2V0QXN5bmMobmV3IEFzeW5j UmVxdWVzdCgnL2FqYXgvZnJpZW5kcy9saXN0cy9zbWFydF9saXN0X2VkdWNhdGlv bi5waHAnKS5zZXRNZXRob2QoJ0dFVCcpLnNldERhdGEoe2ZsaWQ6ayx1aWQ6bH0p LnNldFJlYWRPbmx5KHRydWUpKS5zZXRIYW5kbGVyKGYuYmluZCh0aGlzLGspKS5z ZXRDbG9zZUhhbmRsZXIoZnVuY3Rpb24oKXtBcmJpdGVyLmluZm9ybSgnRHluYW1p Y0ZyaWVuZExpc3RFZHVjYXRpb24vZGlhbG9nQ2xvc2VkJyx7dWlkOmwsZmxpZDpr fSk7fSkuc2V0Q2FuY2VsSGFuZGxlcihmdW5jdGlvbigpe0FyYml0ZXIuaW5mb3Jt KCdEeW5hbWljRnJpZW5kTGlzdEVkdWNhdGlvbi9kaWFsb2dDYW5jZWwnLHt1aWQ6 bCxmbGlkOmt9KTt9KS5zaG93KCk7fWVsc2UgaigpO30sc2hvd0NvbnRleHR1YWxE aWFsb2c6ZnVuY3Rpb24oayxtLGwsail7aWYoaCYmZS5jb250YWlucyhrKSl7Zygp O2k9bDthPWo7bmV3IEFzeW5jUmVxdWVzdCgnL2FqYXgvZnJpZW5kcy9saXN0cy9z bWFydF9saXN0X2NvbnRleHR1YWxfZWR1Y2F0aW9uLnBocCcpLnNldE1ldGhvZCgn R0VUJykuc2V0RGF0YSh7ZmxpZDprLHVpZDptfSkuc2V0UmVhZE9ubHkodHJ1ZSku c2VuZCgpO31lbHNlIGooKTt9LHNldENvbnRleHR1YWxEaWFsb2c6ZnVuY3Rpb24o bCxqLGssbSl7Yz1sO2Muc2V0Q29udGV4dChpKTtjLnNob3coKTtFdmVudC5saXN0 ZW4oaiwnY2xpY2snLGYuYmluZCh0aGlzLG0pKTtFdmVudC5saXN0ZW4oaywnY2xp Y2snLGIpO319O30pKCk7CnZhciBGcmllbmRFZGl0TGlzdHM9KGZ1bmN0aW9uKCl7 dmFyIGE9Nzt2YXIgYz17fTt2YXIgbT0iL2FqYXgvcHJvZmlsZS9yZW1vdmVmcmll bmRjb25maXJtLnBocCI7dmFyIGI9Ii9mcmllbmRzL2FqYXgvcmVtb3ZlX2ZyaWVu ZC5waHA/dHlwZT1mcmllbmQmZmJ4PTEiO3ZhciBoO2Z1bmN0aW9uIGoocCxxLG8p e3ZhciByPWNbcC5pZF07dmFyIG49ZnVuY3Rpb24odSl7dmFyIHQ9e2FjdGlvbjpv PydhZGRfbGlzdCc6J2RlbF9saXN0Jyx0b19mcmllbmQ6ci5pZCxmcmllbmRsaXN0 czpbcV0sc291cmNlOmh9O2lmKHUpY29weV9wcm9wZXJ0aWVzKHQsdSk7ci51cGRh dGVMaXN0KHEsbyk7dmFyIHY7aWYobyYmcT09RnJpZW5kU3RhdHVzLkNMT1NFX0ZS SUVORFMpe3Y9ZShwLEZyaWVuZFN0YXR1cy5BQ1FVQUlOVEFOQ0VTKTtpZihNZW51 LmlzSXRlbUNoZWNrZWQodikpe01lbnUudG9nZ2xlSXRlbSh2KTtqKHAsRnJpZW5k U3RhdHVzLkFDUVVBSU5UQU5DRVMsZmFsc2UpO319ZWxzZSBpZihvJiZxPT1Gcmll bmRTdGF0dXMuQUNRVUFJTlRBTkNFUyl7dj1lKHAsRnJpZW5kU3RhdHVzLkNMT1NF X0ZSSUVORFMpO2lmKE1lbnUuaXNJdGVtQ2hlY2tlZCh2KSl7TWVudS50b2dnbGVJ dGVtKHYpO2oocCxGcmllbmRTdGF0dXMuQ0xPU0VfRlJJRU5EUyxmYWxzZSk7fX12 YXIgdz17ZmxpZDpxLHVpZDpyLmlkfTt2YXIgcz1vPydGcmllbmRMaXN0SG92ZXJj YXJkL2FkZCc6J0ZyaWVuZExpc3RIb3ZlcmNhcmQvcmVtb3ZlJztBcmJpdGVyLmlu Zm9ybShzLHcpO25ldyBBc3luY1JlcXVlc3QoKS5zZXRVUkkoJy9hamF4L2FkZF9m cmllbmQvYWN0aW9uLnBocCcpLnNldERhdGEodCkuc2VuZCgpO307aWYobyl7RHlu YW1pY0ZyaWVuZExpc3RFZHVjYXRpb24uc2hvd0RpYWxvZyhxLHIuaWQsbik7fWVs c2UgbigpO31mdW5jdGlvbiBkKG8pe3ZhciBuPURPTS5zY3J5KG8sJ2lucHV0Jylb MF07cmV0dXJuIG4mJm4udmFsdWU7fWZ1bmN0aW9uIGYobixwLHEpe3ZhciBvPXt1 aWQ6cC5pZH07bmV3IEFzeW5jUmVxdWVzdCgpLnNldFVSSShiKS5zZXRNZXRob2Qo J1BPU1QnKS5zZXREYXRhKHtmcmllbmQ6cC5pZH0pLnNldEhhbmRsZXIoQXJiaXRl ci5pbmZvcm0uYmluZChBcmJpdGVyLEZyaWVuZFJlcXVlc3RNZXNzYWdlLkNBTkNF TCxvKSkuc2V0RXJyb3JIYW5kbGVyKEFyYml0ZXIuaW5mb3JtLmJpbmQoQXJiaXRl cixGcmllbmRSZXF1ZXN0TWVzc2FnZS5DQU5DRUxfRkFJTCxvKSkuc2V0U3RhdHVz RWxlbWVudChxKS5zZW5kKCk7fWZ1bmN0aW9uIGUobixvKXt2YXIgcT1NZW51Lmdl dEl0ZW1zKG4pO2Zvcih2YXIgcD0wO3A8cS5sZW5ndGg7cCsrKWlmKGQocVtwXSk9 PW8pcmV0dXJuIHFbcF07cmV0dXJuIG51bGw7fWZ1bmN0aW9uIGsobixvKXt2YXIg cD1NZW51LmdldEl0ZW1zKG4pO3AuZm9yRWFjaChmdW5jdGlvbihzKXt2YXIgcj1k KHMpO3ZhciBxPW8ubGlzdHMuY29udGFpbnMocik7aWYoTWVudS5pc0l0ZW1DaGVj a2VkKHMpIT09cSlNZW51LnRvZ2dsZUl0ZW0ocyk7fSk7fWZ1bmN0aW9uIGkobyl7 dmFyIHA9TWVudS5nZXRJdGVtcyhvKTt2YXIgcj0hQ1NTLmhhc0NsYXNzKG8sJ2Zv bGxvd0J1dHRvbkZseW91dCcpJiYhQ1NTLmhhc0NsYXNzKG8sJ2xpa2VCdXR0b25G bHlvdXQnKTt2YXIgbj1bXTt2YXIgdD1bXTt2YXIgdj0wO3ZhciB1PTA7cC5mb3JF YWNoKGZ1bmN0aW9uKHkpe2lmKENTUy5oYXNDbGFzcyh5LCduZXZlckhpZGUnKSl7 Q1NTLnJlbW92ZUNsYXNzKHksJ3VuZGVyU2hvd01vcmUnKTt2Kys7fWVsc2UgaWYo TWVudS5pc0l0ZW1DaGVja2VkKHkpKXtuLnB1c2goeSk7fWVsc2UgaWYoQ1NTLmhh c0NsYXNzKHksJ25ldmVyU2hvdycpfHxDU1MuaGFzQ2xhc3MoeSwnRnJpZW5kTGlz dENyZWF0ZVRyaWdnZXInKXx8KCFyJiZDU1MuaGFzQ2xhc3MoeSwnZnJpZW5kT3B0 aW9uc09ubHknKSkpe0NTUy5hZGRDbGFzcyh5LCd1bmRlclNob3dNb3JlJyk7dSsr O31lbHNlIHQucHVzaCh5KTt9KTt2YXIgeD1hLXY7dmFyIHM9bi5jb25jYXQodCk7 dmFyIHE9dTtzLmZvckVhY2goZnVuY3Rpb24oeSl7aWYoQ1NTLmhhc0NsYXNzKHks J1Nob3dNb3JlSXRlbScpKXt4LS07cmV0dXJuO31pZih4KXtDU1MucmVtb3ZlQ2xh c3MoeSwndW5kZXJTaG93TW9yZScpO3gtLTt9ZWxzZXtDU1MuYWRkQ2xhc3MoeSwn dW5kZXJTaG93TW9yZScpO3E9dHJ1ZTt9fSk7Q1NTLmNvbmRpdGlvbkNsYXNzKG8s J2hhc01vcmVGcmllbmRMaXN0SXRlbXMnLHEpO3ZhciB3PURPTS5zY3J5KG8sJy5G cmllbmRMaXN0TWVudVNob3dNb3JlJyk7dy5mb3JFYWNoKGZ1bmN0aW9uKHkpe0NT Uy5yZW1vdmVDbGFzcyh5LCdGcmllbmRMaXN0TWVudVNob3dNb3JlJyk7fSk7fWZ1 bmN0aW9uIGwobyxwKXt2YXIgcT1ET00uc2NyeShvLCcuRnJpZW5kTGlzdFVuZnJp ZW5kJylbMF07dmFyIG49RE9NLnNjcnkobywnLkZyaWVuZExpc3RDYW5jZWwnKVsw XTtpZihuKUNTUy5jb25kaXRpb25TaG93KG4scC5zdGF0dXM9PUZyaWVuZFN0YXR1 cy5PVVRHT0lOR19SRVFVRVNUKTtpZihxKXtDU1MuY29uZGl0aW9uU2hvdyhxLHAu c3RhdHVzPT1GcmllbmRTdGF0dXMuQVJFX0ZSSUVORFMpO0RPTS5maW5kKHEsJ2En KS5zZXRBdHRyaWJ1dGUoJ2FqYXhpZnknLFVSSShtKS5hZGRRdWVyeURhdGEoe3Vp ZDpwLmlkfSkudG9TdHJpbmcoKSk7fX12YXIgZz1mdW5jdGlvbigpe2c9YmFnb2Zo b2xkaW5nO0FyYml0ZXIuc3Vic2NyaWJlKEZyaWVuZFJlcXVlc3RNZXNzYWdlLlNU QVRVUyxmdW5jdGlvbihyLHEpe2Zvcih2YXIgcCBpbiBjKXt2YXIgbj1nZShwKTt2 YXIgbz1jW3BdO2lmKG4mJm8mJm8uaWQ9PXEudWlkKXtrKG4sbyk7bChuLG8pO2ko bik7fX19KTtNZW51LnN1YnNjcmliZSgnc2VsZWN0JyxmdW5jdGlvbihuLG8pe2lm KENTUy5oYXNDbGFzcyhvLml0ZW0sJ1Nob3dNb3JlSXRlbScpJiZDU1MuaGFzQ2xh c3Moby5tZW51LCdGcmllbmRMaXN0TWVudScpKXtDU1MuYWRkQ2xhc3Moby5tZW51 LCdGcmllbmRMaXN0TWVudVNob3dNb3JlJyk7U2Nyb2xsYWJsZUFyZWEucG9rZShv Lml0ZW0pO319KTt9O3JldHVybiB7aW5pdDpmdW5jdGlvbihuLG8scCl7bj0kKG4p O2g9cDtnKCk7aWYoIWNbbi5pZF0pTWVudS5zdWJzY3JpYmUoJ3NlbGVjdCcsZnVu Y3Rpb24ocSxyKXtpZihET00uY29udGFpbnMobixyLml0ZW0pKWlmKFBhcmVudC5i eUNsYXNzKHIuaXRlbSwnRnJpZW5kTGlzdEl0ZW0nKSl7TWVudS50b2dnbGVJdGVt KHIuaXRlbSk7dmFyIHM9ZChyLml0ZW0pO2oobixzLE1lbnUuaXNJdGVtQ2hlY2tl ZChyLml0ZW0pKTt9ZWxzZSBpZihQYXJlbnQuYnlDbGFzcyhyLml0ZW0sJ0ZyaWVu ZExpc3RDYW5jZWwnKSl7ZihuLGNbbi5pZF0sci5pdGVtKTt9ZWxzZSBpZihQYXJl bnQuYnlDbGFzcyhyLml0ZW0sJ0ZyaWVuZExpc3RVbmZyaWVuZCcpKUZyaWVuZExp c3RGbHlvdXRDb250cm9sbGVyLmhpZGUoZmFsc2UpO30pO0NTUy5hZGRDbGFzcyhu LCdhc3luY19zYXZpbmcnKTtGcmllbmRTdGF0dXMuZ2V0RnJpZW5kKG8sZnVuY3Rp b24ocSl7ayhuLHEpO2wobixxKTtjW24uaWRdPXE7aShuKTtDU1MucmVtb3ZlQ2xh c3MobiwnYXN5bmNfc2F2aW5nJyk7fS5iaW5kKHRoaXMpKTt9fTt9KSgpOwp2YXIg UGFnZUxpa2VCdXR0b249d2luZG93LlBhZ2VMaWtlQnV0dG9ufHwoZnVuY3Rpb24o KXtmdW5jdGlvbiBhKGgsZyxkLGYsZSl7ZmJwYWdlX3NldF9mYW5fc3RhdHVzKGU/ ZDpmLGgsZSxmYWxzZSxudWxsLChmdW5jdGlvbigpe2MoZCxmLCFlKTt9KS5iaW5k KHRoaXMpLHtmYW5fb3JpZ2luOmd9KTt9ZnVuY3Rpb24gYyhkLGYsZSl7Q1NTLmNv bmRpdGlvblNob3coZCwhZSk7Q1NTLmNvbmRpdGlvblNob3coZixlKTt9ZnVuY3Rp b24gYihkKXtpZihDU1MuaGFzQ2xhc3MoZCwnZW5hYmxlRnJpZW5kTGlzdEZseW91 dCcpKXtGcmllbmRMaXN0Rmx5b3V0Q29udHJvbGxlci5zaG93KGQpO31lbHNlIEZy aWVuZExpc3RGbHlvdXRDb250cm9sbGVyLmhpZGUoKTt9cmV0dXJuIHtMSUtFRDon bGlrZWQnLFVOTElLRUQ6J3VubGlrZWQnLGluaXQ6ZnVuY3Rpb24oaCxkLGUsZyxm KXtBcmJpdGVyLnN1YnNjcmliZShQYWdlTGlrZUJ1dHRvbi5MSUtFRCxmdW5jdGlv bihpLGope2lmKGc9PT1qLnByb2ZpbGVfaWQpe2MoZCxlLHRydWUpO2EoZyxmLGQs ZSx0cnVlKTt9fSk7QXJiaXRlci5zdWJzY3JpYmUoUGFnZUxpa2VCdXR0b24uVU5M SUtFRCxmdW5jdGlvbihpLGope2lmKGc9PT1qLnByb2ZpbGVfaWQpe2MoZCxlLGZh bHNlKTthKGcsZixkLGUsZmFsc2UpO319KTtFdmVudC5saXN0ZW4oZCwnY2xpY2sn LGZ1bmN0aW9uKCl7QXJiaXRlci5pbmZvcm0oUGFnZUxpa2VCdXR0b24uTElLRUQs e3Byb2ZpbGVfaWQ6Z30pO2IoZSk7fSk7fSxpbml0TWVudTpmdW5jdGlvbihkLGYs ZSl7RXZlbnQubGlzdGVuKGQsJ2NsaWNrJyxmdW5jdGlvbihnKXt2YXIgaD1QYXJl bnQuYnlDbGFzcyhnLmdldFRhcmdldCgpLCd1aU1lbnVJdGVtJyk7aWYoQ1NTLmhh c0NsYXNzKGgsJ1BhZ2VNZW51VW5saWtlJykpQXJiaXRlci5pbmZvcm0oUGFnZUxp a2VCdXR0b24uVU5MSUtFRCx7cHJvZmlsZV9pZDpmfSk7fSk7fX07fSkoKTsKdmFy IEZyaWVuZExpc3RGbHlvdXRDb250cm9sbGVyPShmdW5jdGlvbigpe3ZhciBkO3Zh ciBlO3ZhciBtPW51bGw7dmFyIG89bnVsbDt2YXIgYTt2YXIgbjt2YXIgdjt2YXIg azt2YXIgczt2YXIgZjt2YXIgYz0xNTAwO2Z1bmN0aW9uIHEoKXtjbGVhclRpbWVv dXQoayk7fWZ1bmN0aW9uIHAoKXtpZihhKXtDU1MucmVtb3ZlQ2xhc3MoYSwnc2Vs ZWN0ZWQnKTtDU1MucmVtb3ZlQ2xhc3MoYSwndWlCdXR0b25Ib3ZlcicpO2lmKERh dGFTdG9yZS5nZXQoYSwnZmxmY2xvc2VsaXN0ZW5lcicpKXt2YXIgeD1hO0RhdGFT dG9yZS5zZXQoYSwnZmxmY2xvc2VsaXN0ZW5lcnRpbWVvdXQnLGcuY3VycnkoeCku ZGVmZXIoYykpO319ZT1mYWxzZTtiKCk7YT1udWxsO31mdW5jdGlvbiBoKHgpe2lm KERPTS5pc05vZGVPZlR5cGUoeCwnbGFiZWwnKSYmQ1NTLmhhc0NsYXNzKHgsJ3Vp QnV0dG9uJykpeD1CdXR0b24uZ2V0SW5wdXRFbGVtZW50KHgpO3JldHVybiBEYXRh U3RvcmUuZ2V0KHgsJ3Byb2ZpbGVpZCcpO31mdW5jdGlvbiBiKCl7biYmbi5yZW1v dmUoKTtuPW51bGw7cyYmQXJiaXRlci51bnN1YnNjcmliZShzKTtzPW51bGw7ayYm Y2xlYXJUaW1lb3V0KGspO2s9bnVsbDt9ZnVuY3Rpb24gbCh5KXt2YXIgej1oKHkp O3ZhciB4PURhdGFTdG9yZS5nZXQoeSwnZmxsb2MnKTtGcmllbmRFZGl0TGlzdHMu aW5pdChtLHoseCk7RWRpdFN1YnNjcmlwdGlvbnMuaW5pdChtLHoseCk7UGFnZUxp a2VCdXR0b24uaW5pdE1lbnUobSx6LHgpO0NTUy5jb25kaXRpb25DbGFzcyhtLCdm b2xsb3dCdXR0b25GbHlvdXQnLENTUy5oYXNDbGFzcyh5LCdwcm9maWxlRm9sbG93 QnV0dG9uJykpO0NTUy5jb25kaXRpb25DbGFzcyhtLCdmcmllbmRCdXR0b25GbHlv dXQnLENTUy5oYXNDbGFzcyh5LCdGcmllbmRSZXF1ZXN0RnJpZW5kcycpfHxDU1Mu aGFzQ2xhc3MoeSwnRnJpZW5kUmVxdWVzdEluY29taW5nJyl8fENTUy5oYXNDbGFz cyh5LCdGcmllbmRSZXF1ZXN0T3V0Z29pbmcnKSk7Q1NTLmNvbmRpdGlvbkNsYXNz KG0sJ2xpa2VCdXR0b25GbHlvdXQnLENTUy5oYXNDbGFzcyh5LCdwcm9maWxlTGlr ZUJ1dHRvbicpKTt2YXIgemE9RE9NLnNjcnkobSwnZGl2LnVpU2Nyb2xsYWJsZUFy ZWEnKVswXTt6YSYmU2Nyb2xsYWJsZUFyZWEucG9rZSh6YSk7fWZ1bmN0aW9uIHUo eCl7aWYoIWR8fGUpcmV0dXJuO2Quc2V0Q29udGV4dCh4KTtDU1MuYWRkQ2xhc3Mo eCwnc2VsZWN0ZWQnKTtDU1MuYWRkQ2xhc3MoeCwndWlCdXR0b25Ib3ZlcicpO2Qu c2V0Rml4ZWQoQ1NTLmlzRml4ZWQoeCkpLnNob3coKTthPXg7ZT10cnVlO2lmKG0p e2woeCk7fWVsc2UgbmV3IEFzeW5jUmVxdWVzdCgpLnNldFVSSSgnL2FqYXgvZnJp ZW5kcy9saXN0cy9mbHlvdXRfY29udGVudC5waHAnKS5zZXRTdGF0dXNFbGVtZW50 KGQuZ2V0T3ZlcmxheSgpKS5zZW5kKCk7YigpO249RXZlbnQubGlzdGVuKHgsJ21v dXNlbGVhdmUnLGkpO3M9QXJiaXRlci5zdWJzY3JpYmUoJ092ZXJsYXkvc2hvdycs aik7aWYoRGF0YVN0b3JlLmdldCh4LCdmbGZjbG9zZWxpc3RlbmVyJykpY2xlYXJU aW1lb3V0KERhdGFTdG9yZS5yZW1vdmUoeCwnZmxmY2xvc2VsaXN0ZW5lcnRpbWVv dXQnKSk7dmFyIHk9aCh4KTtGcmllbmRTdGF0dXMuZ2V0RnJpZW5kKHksZnVuY3Rp b24oeil7aWYoIW8pcmV0dXJuO2lmKHouc3RhdHVzPT1GcmllbmRTdGF0dXMuT1VU R09JTkdfUkVRVUVTVCl7Q1NTLnNob3cobyk7QXN5bmNSZXF1ZXN0LmJvb3RzdHJh cCgnL2FqYXgvZnJpZW5kcy9saXN0cy9udXhfZmx5b3V0LnBocCcsbnVsbCx0cnVl KTt9ZWxzZSBDU1MuaGlkZShvKTt9KTt9ZnVuY3Rpb24gdCh4KXthPXg7dj11LmN1 cnJ5KHgpLmRlZmVyKDEwMCk7bj1FdmVudC5saXN0ZW4oeCwnbW91c2VsZWF2ZScs ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodik7YT1udWxsO24mJm4ucmVtb3ZlKCk7 fSk7fWZ1bmN0aW9uIGkoKXtrPWouZGVmZXIoMTUwKTt9ZnVuY3Rpb24gdygpe3Zh ciB5PURpYWxvZy5nZXRDdXJyZW50KCk7dmFyIHg9eSYmeS5nZXRCb2R5KCk7cmV0 dXJuICEhKHgmJkRPTS5zY3J5KHgsJy5mcmllbmRMaXN0RGlhbG9nVG91ckNhcm91 c2VsJylbMF0pO31mdW5jdGlvbiBqKCl7aWYoZnx8dygpKXJldHVybjt1YS5pZSgp PDgmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5mb2N1cygpO2QmJmQuaGlkZSgp O31mdW5jdGlvbiByKGV2ZW50KXt2YXIgeD1QYXJlbnQuYnlUYWcoZXZlbnQuZ2V0 VGFyZ2V0KCksJ2EnKTtpZih4JiZDU1MuaGFzQ2xhc3MoeCwnRnJpZW5kTGlzdEFj dGlvbkl0ZW0nKSlpKCk7fWZ1bmN0aW9uIGcoeSl7dmFyIHg9RGF0YVN0b3JlLnJl bW92ZSh5LCdmbGZjbG9zZWxpc3RlbmVyJyk7eCYmeCgpO31yZXR1cm4ge2luaXQ6 ZnVuY3Rpb24oeCl7RnJpZW5kTGlzdEZseW91dENvbnRyb2xsZXIuaW5pdD1iYWdv ZmhvbGRpbmc7ZD14O2Quc3Vic2NyaWJlKCdtb3VzZWVudGVyJyxxKTtkLnN1YnNj cmliZSgnbW91c2VsZWF2ZScsaSk7ZC5zdWJzY3JpYmUoJ2hpZGUnLHApO2lmKG0p RE9NLnNldENvbnRlbnQoZC5nZXRDb250ZW50KCksW20sb10pO0V2ZW50Lmxpc3Rl bihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJ21vdXNlb3ZlcicsZnVuY3Rpb24o eSl7dmFyIHo9UGFyZW50LmJ5Q2xhc3MoeS5nZXRUYXJnZXQoKSwnZW5hYmxlRnJp ZW5kTGlzdEZseW91dCcpO2lmKHopaWYoYT09PXope2NsZWFyVGltZW91dChrKTt9 ZWxzZXtlJiZqKCk7dCh6KTt9fSk7QXJiaXRlci5zdWJzY3JpYmUoJ0R5bmFtaWNG cmllbmRMaXN0RWR1Y2F0aW9uL2RpYWxvZ09wZW4nLGZ1bmN0aW9uKCl7Zj10cnVl O30pO0FyYml0ZXIuc3Vic2NyaWJlKCdEeW5hbWljRnJpZW5kTGlzdEVkdWNhdGlv bi9kaWFsb2dDbG9zZWQnLGZ1bmN0aW9uKCl7Zj1mYWxzZTtpKCk7fSk7fSxpbml0 Q29udGVudDpmdW5jdGlvbih5KXt2YXIgeD15LmdldFJvb3ROb2RlKCk7RE9NLmFw cGVuZENvbnRlbnQoZG9jdW1lbnQuYm9keSx4KTsoZnVuY3Rpb24oKXtpZighbSl7 bT14O2QmJkRPTS5zZXRDb250ZW50KGQuZ2V0Q29udGVudCgpLFttLG9dKTtDU1Mu c2hvdyhtKTtFdmVudC5saXN0ZW4obSwnY2xpY2snLHIpO2UmJmwoYSk7fWVsc2V7 RE9NLnJlbW92ZSh4KTt4PW51bGw7fX0pLmRlZmVyKCk7fSxpbml0TnV4OmZ1bmN0 aW9uKHgpe2lmKG8pcmV0dXJuO289eC5nZXRSb290Tm9kZSgpO2QmJkRPTS5zZXRD b250ZW50KGQuZ2V0Q29udGVudCgpLFttLG9dKTt9LHNob3c6ZnVuY3Rpb24oeCl7 dSh4KTt9LGhpZGU6ZnVuY3Rpb24oeCl7eD09PWZhbHNlP2ooKTppKCk7fSxzZXRB Y3RpdmVOb2RlOmZ1bmN0aW9uKHgpe2UmJmooKTthPXg7bj1FdmVudC5saXN0ZW4o eCwnbW91c2VsZWF2ZScsZnVuY3Rpb24oKXthPW51bGw7biYmbi5yZW1vdmUoKTt9 KTt9LHNldENsb3NlTGlzdGVuZXI6ZnVuY3Rpb24oeSx4KXtEYXRhU3RvcmUuc2V0 KHksJ2ZsZmNsb3NlbGlzdGVuZXInLHgpO2lmKGEhPXkpRGF0YVN0b3JlLnNldCh5 LCdmbGZjbG9zZWxpc3RlbmVydGltZW91dCcsZy5jdXJyeSh5KS5kZWZlcihjKSk7 fSxzZXRDbG9zZUxpc3RlbmVyVGltZW91dDpmdW5jdGlvbih4KXtjPXg7fX07fSko KTsKdmFyIEZvbGxvd0J1dHRvbj13aW5kb3cuRm9sbG93QnV0dG9ufHwoZnVuY3Rp b24oKXt2YXIgYT0xNDtmdW5jdGlvbiBkKGUsZyxmKXtDU1MuY29uZGl0aW9uU2hv dyhnLGYpO0NTUy5jb25kaXRpb25TaG93KGUsIWYpO31mdW5jdGlvbiBjKGUpe2lm KENTUy5oYXNDbGFzcyhlLCdlbmFibGVGcmllbmRMaXN0Rmx5b3V0Jykpe0ZyaWVu ZExpc3RGbHlvdXRDb250cm9sbGVyLnNob3coZSk7fWVsc2UgRnJpZW5kTGlzdEZs eW91dENvbnRyb2xsZXIuaGlkZSgpO31mdW5jdGlvbiBiKGksaixoKXt2YXIgZj1E T00uc2NyeShpLCcubG93SWNvbicpWzBdO3ZhciBnPURPTS5zY3J5KGksJy5tZWRJ Y29uJylbMF07dmFyIGU9RE9NLnNjcnkoaSwnLmhpZ2hJY29uJylbMF07aWYoIWZ8 fCFnfHwhZSlyZXR1cm47QXJiaXRlci5zdWJzY3JpYmUoJ1N1YnNjcmlwdGlvbkxl dmVsVXBkYXRlZCcsZnVuY3Rpb24oayxsKXtpZihoPT09bC5wcm9maWxlX2lkKXN3 aXRjaChsLmxldmVsKXtjYXNlIFN1YnNjcmlwdGlvbkxldmVscy5BTEw6QnV0dG9u LnNldEljb24oaixlKTticmVhaztjYXNlIFN1YnNjcmlwdGlvbkxldmVscy5ERUZB VUxUOkJ1dHRvbi5zZXRJY29uKGosZyk7YnJlYWs7Y2FzZSBTdWJzY3JpcHRpb25M ZXZlbHMuVE9QOkJ1dHRvbi5zZXRJY29uKGosZik7YnJlYWs7fX0pO31yZXR1cm4g e2luaXQ6ZnVuY3Rpb24oayxnLGwsaixpLGgpe2lmKCFDU1MuaGFzQ2xhc3MobCwn ZW5hYmxlRnJpZW5kTGlzdEZseW91dCcpKVN1YnNjcmlwdGlvbkZseW91dENvbnRy b2xsZXIuaW5pdE5vZGUobCxqLGkpO2lmKGk9PWEmJkNTUy5zaG93bihsKSlTdWJz Y3JpcHRpb25GbHlvdXRDb250cm9sbGVyLnNob3cobCk7RXZlbnQubGlzdGVuKGcs J2NsaWNrJyxmdW5jdGlvbigpe2QoZyxsLHRydWUpO1N1YnNjcmlwdGlvbkZseW91 dENvbnRyb2xsZXIuc2V0QWN0aXZlTm9kZShsKTt2YXIgbT1uZXcgVVJJKGcuZ2V0 QXR0cmlidXRlKCdhamF4aWZ5JykpO3ZhciBuPXtwcm9maWxlX2lkOmosbG9jYXRp b246aSxzb3VyY2U6J2ZvbGxvdy1idXR0b24nLHN1YnNjcmliZWRfYnV0dG9uX2lk OmwuaWQseGlkczptLmdldFF1ZXJ5RGF0YSgpLnhpZHN9O25ldyBBc3luY1JlcXVl c3QoKS5zZXRVUkkoaCkuc2V0RGF0YShuKS5zZXRSZWxhdGl2ZVRvKGwpLnNlbmQo KTt9KTtrJiZiKGssbCxqKTtBcmJpdGVyLnN1YnNjcmliZShbJ0ZvbGxvd1VzZXIn LCdVbmZvbGxvd1VzZXInXSxmdW5jdGlvbihuLG0peyhtLnByb2ZpbGVfaWQ9PWop JiZkKGcsbCxuPT0nRm9sbG93VXNlcicpO2MobCk7fSk7dmFyIGY9ZmFsc2U7QXJi aXRlci5zdWJzY3JpYmUoJ1VuZm9sbG93aW5nVXNlcicsZnVuY3Rpb24obSxuKXtp ZihuLnByb2ZpbGVfaWQ9PWope2Y9Q1NTLnNob3duKGwpO2YmJmQoZyxsLGZhbHNl KTt9fSk7QXJiaXRlci5zdWJzY3JpYmUoJ1VuZm9sbG93VXNlckZhaWwnLGZ1bmN0 aW9uKG0sbil7aWYobi5wcm9maWxlX2lkPT1qJiZmKWQoZyxsLHRydWUpO30pO0Fy Yml0ZXIuc3Vic2NyaWJlKCdGb2xsb3dVc2VyRmFpbCcsZnVuY3Rpb24obSxuKXtp ZihuLnByb2ZpbGVfaWQ9PWomJmYpZChnLGwsZmFsc2UpO30pO3ZhciBlPWZhbHNl O0FyYml0ZXIuc3Vic2NyaWJlKFtGcmllbmRSZXF1ZXN0TWVzc2FnZS5TRU5ESU5H LEZyaWVuZFJlcXVlc3RNZXNzYWdlLkNPTkZJUk1JTkddLGZ1bmN0aW9uKG0sbil7 aWYobi51aWQ9PWope2U9Q1NTLnNob3duKGcpO2UmJmQoZyxsLHRydWUpO319KTtB cmJpdGVyLnN1YnNjcmliZShbRnJpZW5kUmVxdWVzdE1lc3NhZ2UuU0VORF9GQUlM LEZyaWVuZFJlcXVlc3RNZXNzYWdlLkNPTkZJUk1fRkFJTF0sZnVuY3Rpb24obSxu KXtpZihuLnVpZD09aiYmZSlkKGcsbCxmYWxzZSk7fSk7QXJiaXRlci5zdWJzY3Jp YmUoRnJpZW5kUmVxdWVzdE1lc3NhZ2UuVU5GUklFTkQsZnVuY3Rpb24obSxuKXso bi51aWQ9PWopJiZkKGcsbCxmYWxzZSk7fSk7fX07fSkoKTsKdmFyIEFkZEZyaWVu ZEJ1dHRvbj17RVJST1JfQUxSRUFEWV9BRERFRDoxNDMxMDA1LGluaXQ6ZnVuY3Rp b24ocyxxLHQsayxyLGwsbixvLGgsail7dmFyIGc9bnVsbDt2YXIgZj1ET00uc2Ny eShzLCcuYWRkQnV0dG9uJylbMF07dmFyIHA9RE9NLnNjcnkocywnLm91dGdvaW5n QnV0dG9uJylbMF07dmFyIG09RE9NLnNjcnkocywnLmluY29taW5nQnV0dG9uJylb MF07dmFyIGk9RE9NLnNjcnkocywnLmZyaWVuZEJ1dHRvbicpWzBdO2Z1bmN0aW9u IGIodSx4LHcpe3ZhciB2PW5ldyBVUkkoZi5nZXRBdHRyaWJ1dGUoJ2FqYXhpZnkn KSk7dmFyIHk9Jyc7dmFyIHo9Z2UoJ2ZiUmVxdWVzdHNVbndhbnRlZCcpO2lmKHop e3k9ei52YWx1ZTt6LnZhbHVlPScnO31uZXcgQXN5bmNSZXF1ZXN0KCkuc2V0VVJJ KGwpLnNldERhdGEoe3RvX2ZyaWVuZDpxLGFjdGlvbjp1LGhvd19mb3VuZDprLHJl Zl9wYXJhbTpyLG91dGdvaW5nX2lkOnAuaWQseGlkczp2LmdldFF1ZXJ5RGF0YSgp LnhpZHMsdW53YW50ZWQ6eSxsb2dnaW5nX2xvY2F0aW9uOm4sbm9fZmx5b3V0X29u X2NsaWNrOm8sZWdvX2xvZ19kYXRhOmh9KS5zZXRFcnJvckhhbmRsZXIoeCkuc2V0 U2VydmVyRGlhbG9nQ2FuY2VsSGFuZGxlcih3KS5zZXRSZWxhdGl2ZVRvKHApLnNl bmQoKTt9ZnVuY3Rpb24gZSh1LHYpe2YmJkNTUy5oaWRlKGYpO3AmJkNTUy5oaWRl KHApO20mJkNTUy5oaWRlKG0pO2kmJkNTUy5oaWRlKGkpO2lmKHUpQ1NTLnNob3co dSk7aWYoJ091dGdvaW5nJz09diYmZyE9diYmailhbmltYXRpb24odSkuZnJvbSgn YmFja2dyb3VuZENvbG9yJywnI0ZGRjhDQycpLnRvKCdiYWNrZ3JvdW5kQ29sb3In LCcjRkZGRkZGJykuZnJvbSgnYm9yZGVyQ29sb3InLCcjRkZFMjIyJykudG8oJ2Jv cmRlckNvbG9yJywnI0ZGRkZGRicpLmR1cmF0aW9uKDIwMDApLmdvKCk7ZyYmQ1NT LnJlbW92ZUNsYXNzKHMsJ2ZTdGF0dXMnK2cpO2c9djtDU1MuYWRkQ2xhc3Mocywn ZlN0YXR1cycrdik7fWZ1bmN0aW9uIGModSl7aWYoQ1NTLmhhc0NsYXNzKHUsJ2Vu YWJsZUZyaWVuZExpc3RGbHlvdXQnKSl7RnJpZW5kTGlzdEZseW91dENvbnRyb2xs ZXIuc2hvdyh1KTt9ZWxzZSBGcmllbmRMaXN0Rmx5b3V0Q29udHJvbGxlci5oaWRl KCk7fXZhciBkPUFyYml0ZXIuc3Vic2NyaWJlKEZyaWVuZFJlcXVlc3RNZXNzYWdl LlNUQVRVUyxmdW5jdGlvbih2LHUpe2lmKHUudWlkIT1xKXJldHVybjtzd2l0Y2go dS5zdGF0dXMpe2Nhc2UgRnJpZW5kU3RhdHVzLkFSRV9GUklFTkRTOnJldHVybiBl KGksJ0ZyaWVuZHMnKTtjYXNlIEZyaWVuZFN0YXR1cy5JTkNPTUlOR19SRVFVRVNU OnJldHVybiBlKG0sJ0luY29taW5nJyk7Y2FzZSBGcmllbmRTdGF0dXMuT1VUR09J TkdfUkVRVUVTVDpyZXR1cm4gZShwLCdPdXRnb2luZycpO2Nhc2UgRnJpZW5kU3Rh dHVzLkNBTl9SRVFVRVNUOnJldHVybiBlKGYsJ1JlcXVlc3RhYmxlJyk7fX0pO3Zh ciBhO2lmKHQpYT1BcmJpdGVyLnN1YnNjcmliZShGcmllbmRSZXF1ZXN0TWVzc2Fn ZS5DT05GSVJNLGZ1bmN0aW9uKHUsdil7di51aWQ9PXEmJmdvVVJJKHQpO30pO2Ym JkV2ZW50Lmxpc3RlbihmLCdjbGljaycsZnVuY3Rpb24oKXtBcmJpdGVyLmluZm9y bShGcmllbmRSZXF1ZXN0TWVzc2FnZS5TRU5ESU5HLHt1aWQ6cX0pO2lmKG8pe0Zy aWVuZExpc3RGbHlvdXRDb250cm9sbGVyLnNldEFjdGl2ZU5vZGUocCk7fWVsc2Ug YyhwKTtiKCJhZGRfZnJpZW5kIixmdW5jdGlvbih2KXt2YXIgdT12LmVycm9yPT1B ZGRGcmllbmRCdXR0b24uRVJST1JfQUxSRUFEWV9BRERFRD9GcmllbmRSZXF1ZXN0 TWVzc2FnZS5TRU5UOkZyaWVuZFJlcXVlc3RNZXNzYWdlLlNFTkRfRkFJTDtBcmJp dGVyLmluZm9ybSh1LHt1aWQ6cX0pO0ZyaWVuZExpc3RGbHlvdXRDb250cm9sbGVy LmhpZGUoKTtBc3luY1Jlc3BvbnNlLmRlZmF1bHRFcnJvckhhbmRsZXIodik7fSxm dW5jdGlvbih1KXtBcmJpdGVyLmluZm9ybShGcmllbmRSZXF1ZXN0TWVzc2FnZS5T RU5EX0ZBSUwse3VpZDpxfSk7RnJpZW5kTGlzdEZseW91dENvbnRyb2xsZXIuaGlk ZSgpO30pO30pO1BhZ2VUcmFuc2l0aW9ucy5yZWdpc3RlckhhbmRsZXIoZnVuY3Rp b24oKXtBcmJpdGVyLnVuc3Vic2NyaWJlKGQpO2EmJkFyYml0ZXIudW5zdWJzY3Jp YmUoYSk7fSk7fX07CnZhciBGcmllbmRCdXR0b25JY29uPXtpbml0OmZ1bmN0aW9u KGIsZSxmKXt2YXIgZD1ET00uZmluZChlLCcuZGVmYXVsdEljb24nKTt2YXIgYz1E T00uZmluZChlLCcuY2xvc2VJY29uJyk7dmFyIGE9RE9NLmZpbmQoZSwnLmFjcUlj b24nKTtBcmJpdGVyLnN1YnNjcmliZSgnRnJpZW5kTGlzdE1lbWJlcnNoaXBDaGFu Z2UnLGZ1bmN0aW9uKGcsaCl7aWYoaC51aWQ9PWYpe3ZhciBqPWgubGlzdHMuY29u dGFpbnMoRnJpZW5kU3RhdHVzLkNMT1NFX0ZSSUVORFMpO3ZhciBpPWgubGlzdHMu Y29udGFpbnMoRnJpZW5kU3RhdHVzLkFDUVVBSU5UQU5DRVMpO2lmKGomJiFpKXtC dXR0b24uc2V0SWNvbihiLGMpO31lbHNlIGlmKGkmJiFqKXtCdXR0b24uc2V0SWNv bihiLGEpO31lbHNlIEJ1dHRvbi5zZXRJY29uKGIsZCk7fX0pO319Owp2YXIgTWVu dT1mdW5jdGlvbigpe3ZhciBpPSdtZW51Om1vdXNlb3Zlcic7dmFyIGE9bnVsbDtm dW5jdGlvbiBiKGspe3JldHVybiBQYXJlbnQuYnlDbGFzcyhrLCd1aU1lbnUnKTt9 ZnVuY3Rpb24gYyhrKXtyZXR1cm4gUGFyZW50LmJ5Q2xhc3MoaywndWlNZW51SXRl bScpO31mdW5jdGlvbiBkKGspe2lmKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpe3Zh ciBsPWMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7cmV0dXJuIGsuaW5kZXhPZihs KTt9cmV0dXJuIC0xO31mdW5jdGlvbiBlKGspe3JldHVybiBET00uZmluZChrLCdh Lml0ZW1BbmNob3InKTt9ZnVuY3Rpb24gZihrKXtyZXR1cm4gQ1NTLmhhc0NsYXNz KGssJ2NoZWNrZWQnKTt9ZnVuY3Rpb24gZyhrKXtyZXR1cm4gIUNTUy5oYXNDbGFz cyhrLCdkaXNhYmxlZCcpO31mdW5jdGlvbiBoKGV2ZW50KXt2YXIgaz1kb2N1bWVu dC5hY3RpdmVFbGVtZW50O2lmKCFrfHwhUGFyZW50LmJ5Q2xhc3MoaywndWlNZW51 Jyl8fCFET00uaXNOb2RlT2ZUeXBlKGssWydpbnB1dCcsJ3RleHRhcmVhJ10pKXt2 YXIgbD1jKGV2ZW50LmdldFRhcmdldCgpKTtsJiZNZW51LmZvY3VzSXRlbShsKTt9 fWZ1bmN0aW9uIGooayl7TWVudS5pbmZvcm0oJ3NlbGVjdCcse21lbnU6YihrKSxp dGVtOmt9KTt9b25sb2FkUmVnaXN0ZXIoZnVuY3Rpb24oKXt2YXIgaz17fTtrLmNs aWNrPWZ1bmN0aW9uKGV2ZW50KXt2YXIgbj1jKGV2ZW50LmdldFRhcmdldCgpKTtp ZihuJiZnKG4pKXtqKG4pO3ZhciBsPWUobik7dmFyIG09bC5ocmVmO3ZhciBvPWwu Z2V0QXR0cmlidXRlKCdyZWwnKTtyZXR1cm4gKG8mJm8hPT0naWdub3JlJyl8fCht JiZtLmNoYXJBdChtLmxlbmd0aC0xKSE9PScjJyk7fX07ay5rZXlkb3duPWZ1bmN0 aW9uKGV2ZW50KXt2YXIgdT1ldmVudC5nZXRUYXJnZXQoKTtpZihldmVudC5nZXRN b2RpZmllcnMoKS5hbnkpcmV0dXJuO2lmKCFhfHxET00uaXNOb2RlT2ZUeXBlKHUs WydpbnB1dCcsJ3RleHRhcmVhJ10pKXJldHVybjt2YXIgcT1FdmVudC5nZXRLZXlD b2RlKGV2ZW50KTtzd2l0Y2gocSl7Y2FzZSBLRVlTLlVQOmNhc2UgS0VZUy5ET1dO OnZhciBtPU1lbnUuZ2V0RW5hYmxlZEl0ZW1zKGEpO3ZhciBvPWQobSk7TWVudS5m b2N1c0l0ZW0obVtvKyhxPT09S0VZUy5VUD8tMToxKV0pO3JldHVybiBmYWxzZTtj YXNlIEtFWVMuU1BBQ0U6dmFyIHQ9Yyh1KTtpZih0KXtqKHQpO2V2ZW50LnByZXZl bnQoKTt9YnJlYWs7ZGVmYXVsdDp2YXIgbD1TdHJpbmcuZnJvbUNoYXJDb2RlKHEp LnRvTG93ZXJDYXNlKCk7dmFyIHA9TWVudS5nZXRFbmFibGVkSXRlbXMoYSk7dmFy IG89ZChwKTt2YXIgbj1vO3ZhciByPXAubGVuZ3RoO3doaWxlKCh+byYmKG49Kytu JXIpIT09byl8fCghfm8mJisrbjxyKSl7dmFyIHM9TWVudS5nZXRJdGVtTGFiZWwo cFtuXSk7aWYocyYmcy5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKT09PWwpe01lbnUu Zm9jdXNJdGVtKHBbbl0pO3JldHVybiBmYWxzZTt9fX19O0V2ZW50Lmxpc3Rlbihk b2N1bWVudC5ib2R5LGspO30pO3JldHVybiBjb3B5X3Byb3BlcnRpZXMobmV3IEFy Yml0ZXIoKSx7Zm9jdXNJdGVtOmZ1bmN0aW9uKGspe2lmKGsmJmcoaykpe3RoaXMu X3JlbW92ZVNlbGVjdGVkKGIoaykpO0NTUy5hZGRDbGFzcyhrLCdzZWxlY3RlZCcp O2UoaykuZm9jdXMoKTt9fSxnZXRFbmFibGVkSXRlbXM6ZnVuY3Rpb24oayl7cmV0 dXJuIE1lbnUuZ2V0SXRlbXMoaykuZmlsdGVyKGcpO30sZ2V0Q2hlY2tlZEl0ZW1z OmZ1bmN0aW9uKGspe3JldHVybiBNZW51LmdldEl0ZW1zKGspLmZpbHRlcihmKTt9 LGdldEl0ZW1zOmZ1bmN0aW9uKGspe3JldHVybiBET00uc2NyeShrLCdsaS51aU1l bnVJdGVtJyk7fSxnZXRJdGVtTGFiZWw6ZnVuY3Rpb24oayl7cmV0dXJuIGsuZ2V0 QXR0cmlidXRlKCdkYXRhLWxhYmVsJywyKXx8Jyc7fSxpc0l0ZW1DaGVja2VkOmZ1 bmN0aW9uKGspe3JldHVybiBDU1MuaGFzQ2xhc3MoaywnY2hlY2tlZCcpO30scmVn aXN0ZXI6ZnVuY3Rpb24oayxsKXtrPWIoayk7aWYoIURhdGFTdG9yZS5nZXQoayxp KSlEYXRhU3RvcmUuc2V0KGssaSxFdmVudC5saXN0ZW4oaywnbW91c2VvdmVyJyxo KSk7aWYobCE9PWZhbHNlKWE9azt9LHNldEl0ZW1FbmFibGVkOmZ1bmN0aW9uKGws ayl7aWYoIWsmJiFET00uc2NyeShsLCdzcGFuLmRpc2FibGVkQW5jaG9yJylbMF0p RE9NLmFwcGVuZENvbnRlbnQobCwkTignc3Bhbicse2NsYXNzTmFtZTpET00uZmlu ZChsLCdhJykuY2xhc3NOYW1lKycgZGlzYWJsZWRBbmNob3InfSxIVE1MKGUobCku aW5uZXJIVE1MKSkpO0NTUy5jb25kaXRpb25DbGFzcyhsLCdkaXNhYmxlZCcsIWsp O30sdG9nZ2xlSXRlbTpmdW5jdGlvbihsKXt2YXIgaz0hTWVudS5pc0l0ZW1DaGVj a2VkKGwpO01lbnUuc2V0SXRlbUNoZWNrZWQobCxrKTt9LHNldEl0ZW1DaGVja2Vk OmZ1bmN0aW9uKGwsayl7Q1NTLmNvbmRpdGlvbkNsYXNzKGwsJ2NoZWNrZWQnLGsp O2UobCkuc2V0QXR0cmlidXRlKCdhcmlhLWNoZWNrZWQnLGspO30sdW5yZWdpc3Rl cjpmdW5jdGlvbihsKXtsPWIobCk7dmFyIGs9RGF0YVN0b3JlLnJlbW92ZShsLGkp O2smJmsucmVtb3ZlKCk7YT1udWxsO3RoaXMuX3JlbW92ZVNlbGVjdGVkKGwpO30s X3JlbW92ZVNlbGVjdGVkOmZ1bmN0aW9uKGspe01lbnUuZ2V0SXRlbXMoaykuZmls dGVyKGZ1bmN0aW9uKGwpe3JldHVybiBDU1MuaGFzQ2xhc3MobCwnc2VsZWN0ZWQn KTt9KS5lYWNoKGZ1bmN0aW9uKGwpe0NTUy5yZW1vdmVDbGFzcyhsLCdzZWxlY3Rl ZCcpO30pO319KTt9KCk7CnZhciBGcmllbmRMaXN0TWVudT17aW5pdDpmdW5jdGlv bihjKXtNZW51LnJlZ2lzdGVyKGMsZmFsc2UpO3ZhciBkPURPTS5maW5kKGMsJy5G cmllbmRMaXN0Q3JlYXRlVHJpZ2dlcicpO3ZhciBiPURPTS5maW5kKGMsJy5DcmVh dGVMaXN0SW5wdXRJdGVtJyk7dmFyIGE9RE9NLmZpbmQoYiwnLmNyZWF0ZUxpc3RJ bnB1dCcpO01lbnUuc3Vic2NyaWJlKCdzZWxlY3QnLGZ1bmN0aW9uKGUsZil7aWYo Zi5pdGVtPT1kKXtDU1MuYWRkQ2xhc3MoYywnRnJpZW5kTGlzdE1lbnVDcmVhdGUn KTtJbnB1dC5mb2N1cyhhKTt9fSk7RXZlbnQubGlzdGVuKGEsJ2JsdXInLGZ1bmN0 aW9uKGUpe2lmKElucHV0LmlzRW1wdHkoYSkpQ1NTLnJlbW92ZUNsYXNzKGMsJ0Zy aWVuZExpc3RNZW51Q3JlYXRlJyk7fSk7RXZlbnQubGlzdGVuKGEsJ2tleWRvd24n LGZ1bmN0aW9uKGUpe2lmKEV2ZW50LmdldEtleUNvZGUoZSk9PUtFWVMuUkVUVVJO JiYvW15cc10vLnRlc3QoYS52YWx1ZSkpbmV3IEFzeW5jUmVxdWVzdCgpLnNldFVS SSgnL2FqYXgvZnJpZW5kcy9saXN0cy9jcmVhdGUucGhwJykuc2V0RGF0YSh7bmFt ZTphLnZhbHVlLGlkOmMuaWR9KS5zZXRIYW5kbGVyKGZ1bmN0aW9uKCl7SW5wdXQu cmVzZXQoYSk7Q1NTLnJlbW92ZUNsYXNzKGMsJ0ZyaWVuZExpc3RNZW51Q3JlYXRl Jyk7fSkuc2VuZCgpO30pO0FyYml0ZXIuc3Vic2NyaWJlKCdmcmllbmQtbGlzdC9u ZXcnLGZ1bmN0aW9uKGgsZSl7dmFyIGc9SFRNTChlLm5ld19saSkuZ2V0Um9vdE5v ZGUoKTtET00uaW5zZXJ0QmVmb3JlKGcsZCk7dmFyIGY9RE9NLmZpbmQoZywnaW5w dXQnKTtpZihlLmlkPT09Yy5pZCl7TWVudS5mb2N1c0l0ZW0oZyk7TWVudS5pbmZv cm0oJ3NlbGVjdCcse21lbnU6UGFyZW50LmJ5Q2xhc3MoZywndWlNZW51JyksaXRl bTpnfSk7fWVsc2UgTWVudS50b2dnbGVJdGVtKGcpO30pO319Owp2YXIgUmVzdHJp Y3RlZEZyaWVuZExpc3RFZHVjYXRpb249KGZ1bmN0aW9uKCl7dmFyIGI7dmFyIGE7 ZnVuY3Rpb24gYyhlLGQpe2lmKGQuZmxpZD09YilpZihlPT0nRnJpZW5kTGlzdEhv dmVyY2FyZC9hZGQnKXtpZihhKXJldHVybjthPXRydWU7bmV3IEFzeW5jUmVxdWVz dCgpLnNldFVSSSgnL2FqYXgvZnJpZW5kcy9saXN0cy9yZXN0cmljdGVkX2VkdS5w aHAnKS5zZXREYXRhKHt0YXJnZXQ6ZC51aWQsZmxpZDpkLmZsaWR9KS5zZW5kKCk7 fWVsc2UgaWYoZT09J1Jlc3RyaWN0ZWRMaXN0TlVYL29rYXknKW5ldyBBc3luY1Jl cXVlc3QoKS5zZXRVUkkoJy9hamF4L2ZyaWVuZHMvbGlzdHMvbnV4X2xvZy5waHAn KS5zZXREYXRhKGQpLnNlbmQoKTtyZXR1cm4gdHJ1ZTt9cmV0dXJuIHtpbml0OmZ1 bmN0aW9uKGQpe2I9ZDtBcmJpdGVyLnN1YnNjcmliZShbJ0ZyaWVuZExpc3RIb3Zl cmNhcmQvYWRkJywnUmVzdHJpY3RlZExpc3ROVVgvb2theSddLGMpO319O30pKCk7 CmZ1bmN0aW9uIFJlbmRlck1hbmFnZXIoYSl7Y29weV9wcm9wZXJ0aWVzKHRoaXMs e19pc0RpcnR5OmZhbHNlLF9vYmo6YX0pO31jb3B5X3Byb3BlcnRpZXMoUmVuZGVy TWFuYWdlci5wcm90b3R5cGUse2RpcnR5OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2lz RGlydHkpe3RoaXMuX2lzRGlydHk9dHJ1ZTtiaW5kKHRoaXMsdGhpcy5kb1BhaW50 KS5kZWZlcigpO319LGRvUGFpbnQ6ZnVuY3Rpb24oKXt0aGlzLl9pc0RpcnR5PWZh bHNlO3RoaXMuX29iai5wYWludCgpO319KTsKZnVuY3Rpb24gQ291bnRlckRpc3Bs YXkoYSxnLGgsZSxkLGIpe2NvcHlfcHJvcGVydGllcyh0aGlzLHtfbmFtZTphLF92 YWx1ZU5vZGU6JChnKSxfd3JhcHBlck5vZGU6JChoKXx8bnVsbCxfc3RhdHVzQ2xh c3M6ZCxfcm06bmV3IFJlbmRlck1hbmFnZXIodGhpcyksX2FyYml0ZXJTdWJzY3Jp cHRpb246bnVsbCxfY291bnQ6MH0pO3ZhciBjPXRoaXMuX3ZhbHVlTm9kZS5maXJz dENoaWxkO2lmKGMpe3ZhciBmPXBhcnNlSW50KGMubm9kZVZhbHVlLDEwKTtpZigh aXNOYU4oZikpdGhpcy5fY291bnQ9Zjt9dGhpcy5fc3RhdHVzTm9kZT1lPyQoZSk6 bnVsbDt0aGlzLl9zdWJzY3JpYmVBbGwoKTtDb3VudGVyRGlzcGxheS5pbnN0YW5j ZXMucHVzaCh0aGlzKTtpZighYilvbmxlYXZlUmVnaXN0ZXIodGhpcy5fZGVzdHJv eS5iaW5kKHRoaXMpLHRydWUpO31jb3B5X3Byb3BlcnRpZXMoQ291bnRlckRpc3Bs YXkse0VWRU5UX1RZUEVfQURKVVNUOidDb3VudGVyRGlzcGxheS9hZGp1c3QnLEVW RU5UX1RZUEVfVVBEQVRFOidDb3VudGVyRGlzcGxheS91cGRhdGUnLGluc3RhbmNl czpbXSxhZGp1c3RDb3VudDpmdW5jdGlvbihhLGIpe0FyYml0ZXIuaW5mb3JtKENv dW50ZXJEaXNwbGF5LkVWRU5UX1RZUEVfQURKVVNUKycvJythLGIpO30sc2V0Q291 bnQ6ZnVuY3Rpb24oYSxiKXtBcmJpdGVyLmluZm9ybShDb3VudGVyRGlzcGxheS5F VkVOVF9UWVBFX1VQREFURSsnLycrYSxiKTt9fSk7Q2xhc3MubWl4aW4oQ291bnRl ckRpc3BsYXkse19kZXN0cm95OmZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuX3ZhbHVl Tm9kZTtkZWxldGUgdGhpcy5fd3JhcHBlck5vZGU7aWYodGhpcy5fYXJiaXRlclN1 YnNjcmlwdGlvbil7QXJiaXRlci51bnN1YnNjcmliZSh0aGlzLl9hcmJpdGVyU3Vi c2NyaXB0aW9uKTtkZWxldGUgdGhpcy5fYXJiaXRlclN1YnNjcmlwdGlvbjt9Q291 bnRlckRpc3BsYXkuaW5zdGFuY2VzLnJlbW92ZSh0aGlzKTt9LGFkanVzdENvdW50 OmZ1bmN0aW9uKGEpe3RoaXMuX2NvdW50PU1hdGgubWF4KDAsdGhpcy5fY291bnQr YSk7dGhpcy5fcm0uZGlydHkoKTtyZXR1cm4gdGhpczt9LHNldENvdW50OmZ1bmN0 aW9uKGEpe3RoaXMuX2NvdW50PU1hdGgubWF4KDAsYSk7dGhpcy5fcm0uZGlydHko KTtyZXR1cm4gdGhpczt9LHBhaW50OmZ1bmN0aW9uKCl7RE9NLnNldENvbnRlbnQo dGhpcy5fdmFsdWVOb2RlLHRoaXMuX2NvdW50KTt0aGlzLl90b2dnbGVOb2Rlcygp O30sX3RvZ2dsZU5vZGVzOmZ1bmN0aW9uKCl7aWYodGhpcy5fd3JhcHBlck5vZGUp Q1NTLmNvbmRpdGlvbkNsYXNzKHRoaXMuX3dyYXBwZXJOb2RlLCdoaWRkZW5fZWxl bScsdGhpcy5fY291bnQ8PTApO2lmKHRoaXMuX3N0YXR1c0NsYXNzJiZ0aGlzLl9z dGF0dXNOb2RlKUNTUy5jb25kaXRpb25DbGFzcyh0aGlzLl9zdGF0dXNOb2RlLHRo aXMuX3N0YXR1c0NsYXNzLHRoaXMuX2NvdW50PjApO30sX3N1YnNjcmliZUFsbDpm dW5jdGlvbigpe3ZhciBhPVtDb3VudGVyRGlzcGxheS5FVkVOVF9UWVBFX0FESlVT VCsnLycrdGhpcy5fbmFtZSxDb3VudGVyRGlzcGxheS5FVkVOVF9UWVBFX1VQREFU RSsnLycrdGhpcy5fbmFtZV07dGhpcy5fYXJiaXRlclN1YnNjcmlwdGlvbj1BcmJp dGVyLnN1YnNjcmliZShhLHRoaXMuX29uSW5mb3JtLmJpbmQodGhpcyksQXJiaXRl ci5TVUJTQ1JJQkVfTkVXKTt9LF9vbkluZm9ybTpmdW5jdGlvbihhLGIpe2I9cGFy c2VJbnQoYik7aWYoaXNOYU4oYikpcmV0dXJuO2lmKGEuaW5kZXhPZihDb3VudGVy RGlzcGxheS5FVkVOVF9UWVBFX0FESlVTVCkhPS0xKXt0aGlzLmFkanVzdENvdW50 KGIpO31lbHNlIGlmKGEuaW5kZXhPZihDb3VudGVyRGlzcGxheS5FVkVOVF9UWVBF X1VQREFURSkhPS0xKXt0aGlzLnNldENvdW50KGIpO31lbHNlIHJldHVybjtyZXR1 cm47fX0pOwpmdW5jdGlvbiBNZW51YmFyTWVzc2FnZUNvbnRyb2xsZXIoYixhKXt9 Y29weV9wcm9wZXJ0aWVzKE1lbnViYXJNZXNzYWdlQ29udHJvbGxlcix7ZW5zdXJl SW5pdGlhbGl6ZWQ6ZnVuY3Rpb24oYyxiLGEpe2lmKE1lbnViYXJNZXNzYWdlQ29u dHJvbGxlci5pbml0aWFsaXplZHx8IWdlKGIpKXJldHVybiBmYWxzZTt2YXIgZD1u ZXcgTWVudWJhck1lc3NhZ2VDb250cm9sbGVyKGMsYik7TWVudWJhck1lc3NhZ2VD b250cm9sbGVyLmluc3RhbmNlPWQ7ZC5lbnN1cmVJbml0aWFsaXplZChjLGIsYSk7 TWVudWJhck1lc3NhZ2VDb250cm9sbGVyLmluaXRpYWxpemVkPXRydWU7fX0pO2Nv cHlfcHJvcGVydGllcyhNZW51YmFyTWVzc2FnZUNvbnRyb2xsZXIucHJvdG90eXBl LHtlbnN1cmVJbml0aWFsaXplZDpmdW5jdGlvbihkLGMsYSxiKXt0aGlzLm1lbnU9 Z2UoYyk7dGhpcy5mZXRjaE9uSG92ZXI9Yjt2YXIgZT1bQ291bnRlckRpc3BsYXku RVZFTlRfVFlQRV9BREpVU1QrJy9tZXNzYWdlc191bnJlYWQnLENvdW50ZXJEaXNw bGF5LkVWRU5UX1RZUEVfVVBEQVRFKycvbWVzc2FnZXNfdW5yZWFkJ107QXJiaXRl ci5zdWJzY3JpYmUoZSx0aGlzLm9uQ291bnRlclVwZGF0ZS5iaW5kKHRoaXMpLEFy Yml0ZXIuU1VCU0NSSUJFX05FVyk7QXJiaXRlci5zdWJzY3JpYmUoUHJlc2VuY2VN ZXNzYWdlLmdldEFyYml0ZXJNZXNzYWdlVHlwZSgnbWVzc2FnZXNfc2VlbicpLGZ1 bmN0aW9uKCl7QXJiaXRlci5pbmZvcm0oJ2pld2VsL2NvdW50LXVwZGF0ZWQnLHtq ZXdlbDonbWVzc2FnZXMnLGNvdW50OjB9LEFyYml0ZXIuQkVIQVZJT1JfU1RBVEUp O30pO3RoaXMuX2RpcnR5PWE7aWYoYil0aGlzLm1vdXNlT3Zlckxpc3RlbmVyPUV2 ZW50Lmxpc3RlbigkKGQpLCdtb3VzZW92ZXInLHRoaXMuZG9SZWZldGNoLmJpbmQo dGhpcykpO30sZG9SZWZldGNoOmZ1bmN0aW9uKCl7aWYodGhpcy5fZGlydHkpe3Ro aXMuX2RpcnR5PWZhbHNlO3RoaXMuX2ZldGNoKCk7fX0sX2ZldGNoOmZ1bmN0aW9u KCl7fSxvbkZldGNoQ29tcGxldGU6ZnVuY3Rpb24oYSl7aWYodGhpcy5tZW51KURP TS5zZXRDb250ZW50KHRoaXMubWVudSxIVE1MKGEucGF5bG9hZCkpO30sb25Db3Vu dGVyVXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fZGlydHk9dHJ1ZTt9LG1hcmtTZWVu OmZ1bmN0aW9uKGEpe25ldyBBc3luY1NpZ25hbCgnL2FqYXgvZ2lnYWJveHgvZW5k cG9pbnQvVXBkYXRlTGFzdFNlZW5UaW1lLnBocCcse2ZvbGRlcjphfSkuc2VuZCgp O319KTsKdmFyIFVJSW50ZW50aW9uYWxTdHJlYW1NZXNzYWdlPXtJTklUSUFMSVpF X0NPTVBMRVRFOidVSUludGVudGlvbmFsU3RyZWFtL2luaXRpYWxpemVDb21wbGV0 ZScsU0VUX0FVVE9fSU5TRVJUOidVSUludGVudGlvbmFsU3RyZWFtL3NldEF1dG9J bnNlcnQnLFVQREFURV9TVFJFQU06J1VJSW50ZW50aW9uYWxTdHJlYW1SZWZyZXNo L3VwZGF0ZVN0cmVhbScsUkVGUkVTSF9TVFJFQU06J1VJSW50ZW50aW9uYWxTdHJl YW1SZWZyZXNoL3JlZnJlc2hTdHJlYW0nLFVQREFURV9BVVRPUkVGUkVTSF9DT05G SUc6J1VJSW50ZW50aW9uYWxTdHJlYW0vdXBkYXRlQXV0b1JlZnJlc2hDb25maWcn LFVQREFURV9IVE1MX0NPTlRFTlQ6J1VJSW50ZW50aW9uYWxTdHJlYW0vdXBkYXRl SHRtbENvbnRlbnQnLFVQREFURV9MQVNUX1JFRlJFU0hfVElNRTonVUlJbnRlbnRp b25hbFN0cmVhbS91cGRhdGVMYXN0UmVmcmVzaFRpbWUnLElOU0VSVF9TVE9SSUVT OidVSUludGVudGlvbmFsU3RyZWFtL3VwZGF0ZUxhc3RSZWZyZXNoVGltZSd9Owpf X2UoImFycmF5LXV0aWxzIixbIkFycmF5VXRpbHMiLCJoYXNBcnJheU5hdHVyZSJd LGZ1bmN0aW9uKGEsYil7YS4kQT1iKCdBcnJheVV0aWxzJykuY3JlYXRlRnJvbTth Lmhhc0FycmF5TmF0dXJlPWIoJ2hhc0FycmF5TmF0dXJlJyk7fSwzKTsKZnVuY3Rp b24gc2hvdygpe2Zvcih2YXIgYj0wO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspe3Zh ciBhPWdlKGFyZ3VtZW50c1tiXSk7aWYoYSYmYS5zdHlsZSlhLnN0eWxlLmRpc3Bs YXk9Jyc7fXJldHVybiBmYWxzZTt9ZnVuY3Rpb24gaGlkZSgpe2Zvcih2YXIgYj0w O2I8YXJndW1lbnRzLmxlbmd0aDtiKyspe3ZhciBhPWdlKGFyZ3VtZW50c1tiXSk7 aWYoYSYmYS5zdHlsZSlhLnN0eWxlLmRpc3BsYXk9J25vbmUnO31yZXR1cm4gZmFs c2U7fWZ1bmN0aW9uIHNob3duKGEpe2E9Z2UoYSk7cmV0dXJuIChhLnN0eWxlLmRp c3BsYXkhPSdub25lJyYmIShhLnN0eWxlLmRpc3BsYXk9PScnJiZhLm9mZnNldFdp ZHRoPT0wKSk7fWZ1bmN0aW9uIHRvZ2dsZSgpe2Zvcih2YXIgYj0wO2I8YXJndW1l bnRzLmxlbmd0aDtiKyspe3ZhciBhPSQoYXJndW1lbnRzW2JdKTthLnN0eWxlLmRp c3BsYXk9Q1NTLmdldFN0eWxlKGEsImRpc3BsYXkiKT09J2Jsb2NrJz8nbm9uZSc6 J2Jsb2NrJzt9cmV0dXJuIGZhbHNlO31mdW5jdGlvbiB0b2dnbGVEaXNwbGF5Tm9u ZSgpe2Zvcih2YXIgYj0wO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspe3ZhciBhPSQo YXJndW1lbnRzW2JdKTtpZihzaG93bihhKSl7aGlkZShhKTt9ZWxzZSBzaG93KGEp O31yZXR1cm4gZmFsc2U7fQpmdW5jdGlvbiBVbnRydXN0ZWRMaW5rKGEsZCxiLGMp e3RoaXMuZG9tPWE7dGhpcy51cmw9YS5ocmVmO3RoaXMuaGFzaD1kO3RoaXMuZnVu Y19nZXRfcGFyYW1zPWN8fGZ1bmN0aW9uKCl7cmV0dXJuIHt9O307RXZlbnQubGlz dGVuKHRoaXMuZG9tLCdjbGljaycsdGhpcy5vbmNsaWNrLmJpbmQodGhpcykpO0V2 ZW50Lmxpc3Rlbih0aGlzLmRvbSwnbW91c2Vkb3duJyx0aGlzLm9ubW91c2Vkb3du LmJpbmQodGhpcykpO0V2ZW50Lmxpc3Rlbih0aGlzLmRvbSwnbW91c2V1cCcsdGhp cy5vbm1vdXNldXAuYmluZCh0aGlzKSk7RXZlbnQubGlzdGVuKHRoaXMuZG9tLCdt b3VzZW91dCcsdGhpcy5vbm1vdXNlb3V0LmJpbmQodGhpcykpO3RoaXMub25tb3Vz ZWRvd24oJEUoYikpO31VbnRydXN0ZWRMaW5rLmJvb3RzdHJhcD1mdW5jdGlvbihh LGQsYixjKXtpZihhLl9fdW50cnVzdGVkKXJldHVybjthLl9fdW50cnVzdGVkPXRy dWU7bmV3IFVudHJ1c3RlZExpbmsoYSxkLGIsYyk7fTtVbnRydXN0ZWRMaW5rLnBy b3RvdHlwZS5nZXRSZXdyaXR0ZW5VUkk9ZnVuY3Rpb24oKXt2YXIgYT1jb3B5X3By b3BlcnRpZXMoe3U6dGhpcy51cmwsaDp0aGlzLmhhc2h9LHRoaXMuZnVuY19nZXRf cGFyYW1zKHRoaXMuZG9tKSk7dmFyIGI9bmV3IFVSSSgnL2wucGhwJyk7cmV0dXJu IGIuc2V0UXVlcnlEYXRhKGEpLnNldFN1YmRvbWFpbignd3d3Jykuc2V0UHJvdG9j b2woJ2h0dHAnKTt9O1VudHJ1c3RlZExpbmsucHJvdG90eXBlLm9uY2xpY2s9ZnVu Y3Rpb24oKXsoZnVuY3Rpb24oKXt0aGlzLmRvbS5ocmVmPXRoaXMudXJsO30pLmJp bmQodGhpcykuZGVmZXIoMTAwKTt0aGlzLmRvbS5ocmVmPXRoaXMuZ2V0UmV3cml0 dGVuVVJJKCk7fTtVbnRydXN0ZWRMaW5rLnByb3RvdHlwZS5vbm1vdXNlZG93bj1m dW5jdGlvbihhKXtpZihhLmJ1dHRvbj09Mil0aGlzLmRvbS5ocmVmPXRoaXMuZ2V0 UmV3cml0dGVuVVJJKCk7fTtVbnRydXN0ZWRMaW5rLnByb3RvdHlwZS5vbm1vdXNl dXA9ZnVuY3Rpb24oKXt0aGlzLmRvbS5ocmVmPXRoaXMuZ2V0UmV3cml0dGVuVVJJ KCk7fTtVbnRydXN0ZWRMaW5rLnByb3RvdHlwZS5vbm1vdXNlb3V0PWZ1bmN0aW9u KCl7dGhpcy5kb20uaHJlZj10aGlzLnVybDt9OwpmdW5jdGlvbiBodG1sX2h5cGVy bGluayhnLGgsaSxlKXtpZih0eXBlb2YgZz09PSd1bmRlZmluZWQnfHwhZy50b1N0 cmluZylyZXR1cm4gJyc7aWYodHlwZW9mIGghPT0nZnVuY3Rpb24nKWg9aHRtbGl6 ZTtpZih0eXBlb2YgaSE9PSdmdW5jdGlvbicpaT1odG1saXplO3ZhciBnPWcudG9T dHJpbmcoKTt2YXIgZj1bXTt2YXIgYjt3aGlsZSgoYj1VUkxTY3JhcGVyLm1hdGNo KGcpKSl7dmFyIGQ9Zy5pbmRleE9mKGIpO2lmKGQ+PTApZi5wdXNoKGgoZy5zdWJz dHJpbmcoMCxkKSkpO3ZhciBhPWkoYik7dmFyIGM9Yi5yZXBsYWNlKC8iL2csJyUy MicpO2lmKCEoL15bYS16XVthLXowLTlcLSsuXSs6XC9cLy9pLnRlc3QoYikpKWM9 J2h0dHA6Ly8nK2M7Zi5wdXNoKCc8YSB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2Zv bGxvdyIgaHJlZj0iJytjKyciJyk7aWYoZSlmLnB1c2goJyBvbm1vdXNlZG93bj0i VW50cnVzdGVkTGluay5ib290c3RyYXAodGhpcywgXCcnK0Vudi5saHNoKydcJywg ZXZlbnQpIicpO2YucHVzaCgnPicrYSsnPC9hPicpO2c9Zy5zdWJzdHJpbmcoZCti Lmxlbmd0aCk7fWcmJmYucHVzaChoKGcpKTtyZXR1cm4gZi5qb2luKCcnKTt9ZnVu Y3Rpb24gbmwyYnIoYSl7aWYodHlwZW9mKGEpPT0ndW5kZWZpbmVkJ3x8IWEudG9T dHJpbmcpcmV0dXJuICcnO3JldHVybiBhLnRvU3RyaW5nKCkucmVwbGFjZSgvXG4v ZywnPGJyIC8+Jyk7fWZ1bmN0aW9uIGlzX2VtYWlsKGEpe3JldHVybiAvXihbXHch LiUrXC1dKStAKFtcd1wtXSkrKD86XC5bXHdcLV0rKSskLy50ZXN0KGEpO30KZnVu Y3Rpb24gWEhQVGVtcGxhdGUoYSl7dGhpcy5fbW9kZWw9YTt9WEhQVGVtcGxhdGUu cHJvdG90eXBlPXtyZW5kZXI6ZnVuY3Rpb24oKXtpZihIVE1MLmlzSFRNTCh0aGlz Ll9tb2RlbCkpdGhpcy5fbW9kZWw9RE9NLnNldENvbnRlbnQoZG9jdW1lbnQuY3Jl YXRlRG9jdW1lbnRGcmFnbWVudCgpLHRoaXMuX21vZGVsKVswXTtyZXR1cm4gdGhp cy5fbW9kZWwuY2xvbmVOb2RlKHRydWUpO30sYnVpbGQ6ZnVuY3Rpb24oKXtyZXR1 cm4gbmV3IFhIUFRlbXBsYXRlSW5zdGFuY2UodGhpcy5yZW5kZXIoKSk7fX07Y29w eV9wcm9wZXJ0aWVzKFhIUFRlbXBsYXRlLHtnZXROb2RlOmZ1bmN0aW9uKGIsYSl7 cmV0dXJuIFhIUFRlbXBsYXRlLmdldE5vZGVzKGIpW2FdO30sZ2V0Tm9kZXM6ZnVu Y3Rpb24oZCl7dmFyIGM9RGF0YVN0b3JlLmdldChkLCdYSFBUZW1wbGF0ZTpub2Rl cycpO2lmKCFjKXtjPXt9O3ZhciBlPURPTS5zY3J5KGQsJ1tkYXRhLWpzaWRdJyk7 ZS5wdXNoKGQpO3ZhciBhPWUubGVuZ3RoO3doaWxlKGEtLSl7dmFyIGI9ZVthXTtj W2IuZ2V0QXR0cmlidXRlKCdkYXRhLWpzaWQnKV09YjtiLnJlbW92ZUF0dHJpYnV0 ZSgnZGF0YS1qc2lkJyk7fURhdGFTdG9yZS5zZXQoZCwnWEhQVGVtcGxhdGU6bm9k ZXMnLGMpO31yZXR1cm4gYzt9fSk7ZnVuY3Rpb24gWEhQVGVtcGxhdGVJbnN0YW5j ZShhKXt0aGlzLl9yb290PWE7dGhpcy5fcG9wdWxhdGVOb2RlcygpO31YSFBUZW1w bGF0ZUluc3RhbmNlLnByb3RvdHlwZT17X3BvcHVsYXRlTm9kZXM6ZnVuY3Rpb24o KXt0aGlzLl9ub2Rlcz17fTt0aGlzLl9sZWF2ZXM9e307dmFyIGU9dGhpcy5fcm9v dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpO2Zvcih2YXIgYT0wLGM9ZS5sZW5n dGg7YTxjO2ErKyl7dmFyIGQ9ZVthXTt2YXIgYj1kLmdldEF0dHJpYnV0ZSgnZGF0 YS1qc2lkJyk7aWYoYil7ZC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtanNpZCcpO3Ro aXMuX25vZGVzW2JdPWQ7dGhpcy5fbGVhdmVzW2JdPSFkLmNoaWxkTm9kZXMubGVu Z3RoO319fSxnZXRSb290OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jvb3Q7fSxn ZXROb2RlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9ub2Rlc1thXTt9LHNldE5v ZGVQcm9wZXJ0eTpmdW5jdGlvbihjLGEsYil7dGhpcy5nZXROb2RlKGMpW2FdPWI7 cmV0dXJuIHRoaXM7fSxzZXROb2RlQ29udGVudDpmdW5jdGlvbihiLGEpe2lmKCF0 aGlzLl9sZWF2ZXNbYl0pdGhyb3cgbmV3IEVycm9yKCJDYW4ndCBzZXRDb250ZW50 IG9uIG5vbi1sZWFmIG5vZGU6ICIrYik7RE9NLnNldENvbnRlbnQodGhpcy5nZXRO b2RlKGIpLGEpO3JldHVybiB0aGlzO319Owp2YXIgVUZJT3B0aW1pc3RpYz17Q09N TUVOVF9TRU5EX0VWRU5UOid1ZmkvY29tbWVudCcsX2NvbW1lbnRTZXFObzowLGlu aXQ6ZnVuY3Rpb24oYSl7dGhpcy5fY29tbWVudFRlbXBsYXRlPWE7aWYoIXRoaXMu X2xvYWRlZCl7RXZlbnQubGlzdGVuKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwn Y2xpY2snLHRoaXMuX2NsaWNrSGFuZGxlci5iaW5kKHRoaXMpLEV2ZW50LlByaW9y aXR5LlVSR0VOVCk7dGhpcy5fbG9hZGVkPXRydWU7fX0sX2NsaWNrSGFuZGxlcjpm dW5jdGlvbihldmVudCl7dmFyIGk9ZXZlbnQuZ2V0VGFyZ2V0KCk7dmFyIGw9aS5u YW1lPT0nY29tbWVudCcmJmkucGFyZW50Tm9kZSYmUGFyZW50LmJ5Q2xhc3MoaSwn b3B0aW1pc3RpY19zdWJtaXQnKTtpZighbClyZXR1cm4gdHJ1ZTt2YXIgZT1pLmZv cm07dmFyIGs9RE9NLmZpbmQoZSwndGV4dGFyZWEnKTtpZihJbnB1dC5pc0VtcHR5 KGspKXJldHVybiB0cnVlO2ZjX3VuY29sbGFwc2UoZSk7dmFyIGE9dGhpcy5fY29t bWVudFRlbXBsYXRlLnJlbmRlcigpO3ZhciBqPVhIUFRlbXBsYXRlLmdldE5vZGUo YSwndGV4dCcpO0RPTS5zZXRDb250ZW50KGosSFRNTChodG1saXplKHRyaW0oay52 YWx1ZSkpKSk7dmFyIGM9RE9NLnNjcnkoZSwndWwuY29tbWVudExpc3QnKVswXTtp ZighYylyZXR1cm4gdHJ1ZTtDU1Muc2hvdyhjLnBhcmVudE5vZGUpO2MuYXBwZW5k Q2hpbGQoYSk7dmFyIGI9Yy5sYXN0Q2hpbGQ7dmFyIGc9cmFuZDMyKCk7Yi5pZD0n b3B0aW1pc3RpY19jb21tZW50XycrZysnXycrdGhpcy5fY29tbWVudFNlcU5vKys7 dmFyIGQ9Rm9ybS5zZXJpYWxpemUoZSk7ZC5jb21tZW50X3JlcGxhY2U9Yi5pZDtk LmNvbW1lbnQ9MTtmdW5jdGlvbiBoKCl7bmV3IEFzeW5jUmVxdWVzdChGb3JtLmdl dEF0dHJpYnV0ZShlLCdhY3Rpb24nKSkuc2V0RGF0YShkKS5zZXRSZWxhdGl2ZVRv KGUpLnNldEVycm9ySGFuZGxlcihmdW5jdGlvbihtKXtDU1MuYWRkQ2xhc3MoYiwn dWlVZmlDb21tZW50RmFpbGVkJyk7QXN5bmNSZXNwb25zZS5kZWZhdWx0RXJyb3JI YW5kbGVyKG0pO30pLnNlbmQoKTt9RXZlbnQubGlzdGVuKFhIUFRlbXBsYXRlLmdl dE5vZGUoYSwncmV0cnlfbGluaycpLCdjbGljaycsaCk7aCgpO2sudmFsdWU9ay5z dHlsZS5oZWlnaHQ9Jyc7ay5mb2N1cygpO3ZhciBmPXdpbmRvdy5NZW50aW9uc0lu cHV0JiZNZW50aW9uc0lucHV0LmdldEluc3RhbmNlKGspO2YmJmYucmVzZXQoKTtB cmJpdGVyLmluZm9ybShVRklPcHRpbWlzdGljLkNPTU1FTlRfU0VORF9FVkVOVCx7 Zm9ybTplfSk7cmV0dXJuIGZhbHNlO319OwpfX2UoInVzZXItYWN0aXZpdHkiLFsi VXNlckFjdGl2aXR5Il0sZnVuY3Rpb24oYSxiKXthLlVzZXJBY3Rpdml0eT1hLlVz ZXJBY3Rpdml0eXx8YignVXNlckFjdGl2aXR5Jyk7fSwzKTsKZnVuY3Rpb24gVGlj a2VyQ29udHJvbGxlcigpe30hZnVuY3Rpb24oKXt2YXIgYz0xO3ZhciBiPTI7dmFy IGE9Mzt2YXIgZD00O2NvcHlfcHJvcGVydGllcyhUaWNrZXJDb250cm9sbGVyLHtf aW5zdGFuY2VzOnt9LF9hY3RpdmVJbnN0YW5jZTpudWxsLF9wbGFjZWhvbGRlcnM6 e30sX2xvZ1Bvc2l0aW9uQ2hhbmdlOmZhbHNlLGdldEluc3RhbmNlOmZ1bmN0aW9u KGUpe3ZhciBmPVBhcmVudC5ieUNsYXNzKCQoZSksJ2ZiRmVlZFRpY2tlcicpO3Jl dHVybiBmP1RpY2tlckNvbnRyb2xsZXIuX2luc3RhbmNlc1tmLmlkXTpudWxsO30s aXNMb2FkZWQ6ZnVuY3Rpb24oZSl7dmFyIGY9VGlja2VyQ29udHJvbGxlci5fcGxh Y2Vob2xkZXJzW2UuaWRdO3JldHVybiAhZnx8Zi5zdGF0dXM9PWE7fSxzaG93OmZ1 bmN0aW9uKGksZSl7ZT1lfHxiYWdvZmhvbGRpbmc7Zm9yKHZhciBnIGluIFRpY2tl ckNvbnRyb2xsZXIuX2luc3RhbmNlcyl7dmFyIGs9Z2UoZyk7aWYoIWt8fGsucGFy ZW50Tm9kZS5pZD09aS5pZCljb250aW51ZTtUaWNrZXJDb250cm9sbGVyLmhpZGUo ay5wYXJlbnROb2RlKTt9VGlja2VyQ29udHJvbGxlci5fZG9Qb3NpdGlvbkNoYW5n ZShpKTtDU1Muc2hvdyhpKTt2YXIgaj1UaWNrZXJDb250cm9sbGVyLl9wbGFjZWhv bGRlcnNbaS5pZF07aWYoaiYmai5zdGF0dXM9PWMpe1RpY2tlckNvbnRyb2xsZXIu X2ZldGNoVGlja2VyRm9yUGxhY2Vob2xkZXIoaSxlKTt9ZWxzZXt2YXIgZj1ET00u c2NyeShpLCcuZmJGZWVkVGlja2VyJylbMF07dmFyIGg9ZiYmVGlja2VyQ29udHJv bGxlci5nZXRJbnN0YW5jZShmKTtUaWNrZXJDb250cm9sbGVyLl9hY3RpdmVJbnN0 YW5jZT1oO2gmJmguX3BvbGwoKTtUaWNrZXJDb250cm9sbGVyLl9wbGFjZWhvbGRl cnNbaS5pZF09e3N0YXR1czpkLGNhbGxiYWNrOmV9O2UoKTt9fSxfZG9Qb3NpdGlv bkNoYW5nZTpmdW5jdGlvbihlKXtpZighVGlja2VyQ29udHJvbGxlci5fbG9nUG9z aXRpb25DaGFuZ2V8fENTUy5zaG93bihlKSlyZXR1cm47bmV3IEFzeW5jU2lnbmFs KCcvY29tbW9uL29kc19lbmRwb2ludC5waHAnLHtrOid0aWNrZXIucmVuZGVyLnN3 aXRjaC4nK2UuaWR9KS5zZW5kKCk7fSxoaWRlOmZ1bmN0aW9uKGYpe3ZhciBlPURP TS5zY3J5KGYsJy5mYkZlZWRUaWNrZXInKVswXTt2YXIgZz1lJiZUaWNrZXJDb250 cm9sbGVyLmdldEluc3RhbmNlKGUpO2cmJmcuaGlkZUFjdGl2ZVN0b3J5KCk7Q1NT LmhpZGUoZik7fSxoaWRlU3Rvcmllc0J5Q2xhc3M6ZnVuY3Rpb24oZSl7Zm9yKHZh ciBmIGluIFRpY2tlckNvbnRyb2xsZXIuX2luc3RhbmNlcylET00uc2NyeSgkKGYp LGUpLmZvckVhY2goQ1NTLmhpZGUpO30saGlkZVN0b3J5OmZ1bmN0aW9uKGUpe3Zh ciBmPWUmJlRpY2tlckNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoZSk7ZiYmZi5oaWRl U3RvcnkoZSk7fSx1bmRvSGlkZVN0b3J5OmZ1bmN0aW9uKGUpe3ZhciBmPWUmJlRp Y2tlckNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoZSk7ZiYmZi51bmRvSGlkZVN0b3J5 KGUpO30sX2ZldGNoVGlja2VyRm9yUGxhY2Vob2xkZXI6ZnVuY3Rpb24oZyxlKXt2 YXIgZj17aGFuZGxlcjpmdW5jdGlvbigpe1RpY2tlckNvbnRyb2xsZXIuX3BsYWNl aG9sZGVyc1tnLmlkXS5zdGF0dXM9YTtlKCk7fX07VUlQYWdlbGV0LmxvYWRGcm9t RW5kcG9pbnQoJ1RpY2tlclBhZ2VsZXQnLGcuaWQsVGlja2VyQ29udHJvbGxlci5f cGxhY2Vob2xkZXJzW2cuaWRdLnBhZ2VsZXREYXRhLGYpO1RpY2tlckNvbnRyb2xs ZXIuX3BsYWNlaG9sZGVyc1tnLmlkXS5zdGF0dXM9Yjt9LHJlZ2lzdGVyU3RvcnlE aWFsb2c6ZnVuY3Rpb24oZixlKXtBcmJpdGVyLnN1YnNjcmliZSgndGlja2VyL2lu aXQnLGZ1bmN0aW9uKCl7dmFyIGc9Z2UoZik7dmFyIGg9ZyYmVGlja2VyQ29udHJv bGxlci5nZXRJbnN0YW5jZShnKTtoJiZoLnJlZ2lzdGVyU3RvcnlEaWFsb2coZyxl KTt9LEFyYml0ZXIuU1VCU0NSSUJFX0FMTCk7fSxyZWdpc3RlclBsYWNlaG9sZGVy OmZ1bmN0aW9uKGcsZil7dmFyIGU9VGlja2VyQ29udHJvbGxlci5fcGxhY2Vob2xk ZXJzW2ddO1RpY2tlckNvbnRyb2xsZXIuX3BsYWNlaG9sZGVyc1tnXT17c3RhdHVz OmMscGFnZWxldERhdGE6Zn07aWYoZSYmZS5zdGF0dXM9PWQpe1RpY2tlckNvbnRy b2xsZXIuc2hvdygkKGcpKTtlLmNhbGxiYWNrKCk7fX19KTt9KCk7VGlja2VyQ29u dHJvbGxlci5wcm90b3R5cGU9e0FEU19JRExFX01TOjMwMDAwMCxGTFlPVVRfTUFY X0hFSUdIVDo0NTAsRkxZT1VUX09GRlNFVF9USFJFU0hPTEQ6MjAsRkxZT1VUX0NP TU1FTlRfT0ZGU0VUOjE1LEZMWU9VVF9WSUVXUE9SVF9QQURESU5HOjc1LEZMWU9V VF9UQVJHRVRfSEVJR0hUX09GRlNFVDoyNSxpbml0OmZ1bmN0aW9uKGQsZSxhKXtU aWNrZXJDb250cm9sbGVyLl9pbnN0YW5jZXNbZC5pZF09dGhpcztUaWNrZXJDb250 cm9sbGVyLl9hY3RpdmVJbnN0YW5jZT10aGlzO3RoaXMuX3Jvb3Q9ZDt0aGlzLl9j b250ZW50PURPTS5maW5kKGQsJy50aWNrZXJfc3RyZWFtJyk7dGhpcy5fc3Rvcmll cz1ET00uZmluZCh0aGlzLl9yb290LCcudGlja2VyQWN0aXZpdHlTdG9yaWVzJyk7 dGhpcy5fc2Nyb2xsYWJsZUFyZWE9ZTt0aGlzLl9jb250YWluZXI9RE9NLmZpbmQo ZCwnZGl2LnVpU2Nyb2xsYWJsZUFyZWFXcmFwJyk7dGhpcy5fc3RvcnlJRHM9W107 dGhpcy5fb2JqZWN0SURzPVtdO3RoaXMuX2ZldGNoZWRTdG9yaWVzPXt9O3RoaXMu X3JlbW92ZWRTdG9yeUlEcz1bXTt2YXIgYj1EYXRlLm5vdygpO3RoaXMuX2luaXRU aW1lPWI7dGhpcy5fbGFzdFVwZGF0ZT1iO3RoaXMuX2xhc3RQdWxsPWI7dGhpcy5f bGFzdEluc2VydD1iO3RoaXMuX2xhc3RDdXN0b21TdG9yeT0wO3RoaXMuX3BvbGxP bmx5PWZhbHNlO3RoaXMuX25lZWROb25DdXN0b21TdG9yeU51bT0wO3RoaXMuX2Rv Q3VzdG9tVXBkYXRlPXRydWU7dGhpcy5fYXV0b2xvYWRTdG9yeUluZGV4PTE7dGhp cy5fc2Nyb2xsVG9wVGhyZXNob2xkPTEwMDt0aGlzLl9zY3JvbGxUb3BQcm9tcHQ9 RE9NLmZpbmQodGhpcy5fcm9vdCwnLnNjcm9sbFRvcFByb21wdCcpO3RoaXMuX3Nj cm9sbFRvcFByb21wdFZpc2libGU9ZmFsc2U7dGhpcy5fbWF4U3Rvcmllc1RvS2Vl cD01MDt0aGlzLl9taW5TdG9yaWVzVG9LZWVwPTI1O3RoaXMuX3RpY2tlckluU2lk ZWJhck1vZGU9ISFQYXJlbnQuYnlDbGFzcyh0aGlzLl9yb290LCdmYkNoYXRTaWRl YmFyJyk7dGhpcy5fdWE9e2ZseW91dDp1c2VyX2FjdGlvbigndGlja2VyX2ZseW91 dCcpLnNldF9uYW1lc3BhY2UoJ3RpY2tlcicpLnNldF91YV9pZCgnZmx5b3V0Jyks Zmx5b3V0X3ByZWZldGNoOnVzZXJfYWN0aW9uKCd0aWNrZXJfZmx5b3V0X3ByZWZl dGNoJykuc2V0X25hbWVzcGFjZSgndGlja2VyJykuc2V0X3VhX2lkKCdmbHlvdXRf cHJlZmV0Y2gnKSxmbHlvdXRfbG9hZHRpbWU6dXNlcl9hY3Rpb24oJ3RpY2tlcl9m bHlvdXRfbG9hZHRpbWUnKS5zZXRfbmFtZXNwYWNlKCd0aWNrZXInKS5zZXRfdWFf aWQoJ2ZseW91dF9sb2FkdGltZScpLHN0cmVhbTp1c2VyX2FjdGlvbigndGlja2Vy X3N0cmVhbScpLnNldF9uYW1lc3BhY2UoJ3RpY2tlcicpLnNldF91YV9pZCgnc3Ry ZWFtJyl9O3RoaXMuX3VhQ3VyU3RvcnlJREZldGNoPW51bGw7dGhpcy5fdWFDdXJT dG9yeUlEUHJlZmV0Y2g9bnVsbDt2YXIgYz0kTignZGl2Jyx7Y2xhc3NOYW1lOidz dG9yeVF1ZXVlIGhpZGRlbl9lbGVtJ30pO3RoaXMuX3N0b3J5UXVldWU9YztET00u YXBwZW5kQ29udGVudCh0aGlzLl9yb290LGMpO3RoaXMuX2luaXRPYmplY3RJRHMo KTt0aGlzLl9pbml0UGFnZWxldENhY2hlKGEpO3RoaXMuX2luaXRDb25maWcoYSk7 dGhpcy5fcmVzZXRNb3JlUGFnZXIoKTt0aGlzLl9pbml0TGlzdGVuZXJzKCk7dGhp cy5faW5pdFN1YnNjcmlwdGlvbnMoYSk7QXJiaXRlci5pbmZvcm0oJ3RpY2tlci9p bml0Jyx0aGlzLEFyYml0ZXIuQkVIQVZJT1JfUEVSU0lTVEVOVCk7dGhpcy5fcG9s bCgpO2lmKHRoaXMuX3ByZWZldGNoQWZ0ZXJMb2FkKXt0aGlzLl9sb2dVc2VyRXZl bnQoJ3N0cmVhbScsJ3ByZWZldGNoJyk7dGhpcy5fZmV0Y2hTdG9yaWVzKHRoaXMu X2dldEluc2VydGVkU3RvcmllcygpLnNsaWNlKDAsNSkpO319LF9pbml0UGFnZWxl dENhY2hlOmZ1bmN0aW9uKGEpe2lmKHdpbmRvdy5QYWdlbGV0Q2FjaGVDb250cm9s bGVyKXt0aGlzLl9jYWNoZT1QYWdlbGV0Q2FjaGVDb250cm9sbGVyLnJlZ2lzdGVy Q29udHJvbGxlcih0aGlzLl9yb290LnBhcmVudE5vZGUuaWQsdGhpcyk7aWYodGhp cy5fY2FjaGUpe2NvcHlfcHJvcGVydGllcyhhLHRoaXMuX2NhY2hlLmxvYWREYXRh KCkpO3RoaXMuX2NhY2hlLnJlZ2lzdGVyQ2xlYW51cCgnVGlja2VyL2NsZWFudXAn KTt9fX0sX2luaXRDb25maWc6ZnVuY3Rpb24oYSl7Y29weV9wcm9wZXJ0aWVzKHRo aXMse19uZXdlc3Q6YS5uZXdlc3QsX3BhZ2VfbmV3ZXN0OmEubmV3ZXN0LF90aW1l b3V0OmEudGltZW91dCxfaGVhcnRiZWF0VGltZW91dDpNYXRoLm1heCgxNTAwMCxh LmhlYXJ0YmVhdFRpbWVvdXQpLF9wdWxsVGltZW91dDpNYXRoLm1heCgzMDAwMCxh LnB1bGxUaW1lb3V0KSxfaW5zZXJ0VGltZW91dDphLmluc2VydFRpbWVvdXQsX2Zy aWVuZENvdW50OmEuZnJpZW5kQ291bnQsX21heFF1ZXVlTGVuZ3RoOmEubWF4UXVl dWVMZW5ndGgsX2hlYXJ0YmVhdEVuZHBvaW50OmEuaGVhcnRiZWF0RW5kcG9pbnQs X21heEN1c3RvbVF1ZXVlTGVuZ3RoOmEubWF4Q3VzdG9tUXVldWVMZW5ndGgsX2N1 c3RvbVN0b3J5SW5zZXJ0VGltZW91dDpNYXRoLm1heCg1MDAwLGEuY3VzdG9tU3Rv cnlJbnNlcnRUaW1lb3V0KSxfbm9uQ3VzdG9tVG9DdXN0b21TdG9yeVJhdGlvOmEu bm9uQ3VzdG9tVG9DdXN0b21TdG9yeVJhdGlvLF9taW5Gb3JjZVVwZGF0ZUludGVy dmFsOk1hdGgubWF4KGEuaW5zZXJ0VGltZW91dCxhLm1pbkZvcmNlVXBkYXRlSW50 ZXJ2YWwpLF9wb3B1cE9uSG92ZXI6YS5wb3B1cE9uSG92ZXIsX3ByaW9yaXR5QXBw SWQ6YS5wcmlvcml0eUFwcElkLF9wcmVmZXRjaE9uSG92ZXI6YS5wcmVmZXRjaFN0 b3JpZXNPbkhvdmVyLF9kYXJrOmEuZGFyayxfdXNlcklkbGVUaW1lb3V0OmEudXNl cklkbGVUaW1lb3V0LF9maXJzdEN1c3RvbVN0b3J5RGVsYXk6YS5maXJzdEN1c3Rv bVN0b3J5RGVsYXksX3BvbGxPbmx5OmEucG9sbE9ubHksX3RpY2tlckRlYnVnOmEu dGlja2VyRGVidWcsX3RpY2tlclNvdXJjZTphLnRpY2tlclNvdXJjZSxfcHJlZmV0 Y2hBZnRlckxvYWQ6YS5wcmVmZXRjaEFmdGVyTG9hZCxfbG9nRmx5b3V0czphLmxv Z0ZseW91dHN9KTt0aGlzLl9xdWV1ZUN1c3RvbVN0b3JpZXMoYS5jdXN0b21TdG9y aWVzKTt9LF9pbml0TGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fbGlzdGVuZXJz PUV2ZW50Lmxpc3Rlbih0aGlzLl9yb290LHtjbGljazp0aGlzLl9oYW5kbGVDbGlj ay5iaW5kKHRoaXMpLGtleWRvd246dGhpcy5faGFuZGxlS2V5ZG93bi5iaW5kKHRo aXMpLG1vdXNlb3V0OnRoaXMuX2hhbmRsZU1vdXNlb3V0LmJpbmQodGhpcyksbW91 c2VvdmVyOnRoaXMuX2hhbmRsZU1vdXNlb3Zlci5iaW5kKHRoaXMpLG1vdXNlZG93 bjp0aGlzLl90aWNrZXJEZUNsaWNrZXIuYmluZCh0aGlzKSxtb3VzZXVwOnRoaXMu X2hhbmRsZU1vdXNldXAuYmluZCh0aGlzKX0pO3RoaXMuX2xpc3RlbmVycy5zY3Jv bGw9RXZlbnQubGlzdGVuKHRoaXMuX2NvbnRhaW5lciwnc2Nyb2xsJyx0aGlzLl9o YW5kbGVTY3JvbGwuYmluZCh0aGlzKSk7dGhpcy5faW5pdEluZmluaXRlU2Nyb2xs TGlzdGVuZXIuYmluZCh0aGlzKS5kZWZlcigpO30sX2luaXRTdWJzY3JpcHRpb25z OmZ1bmN0aW9uKGEpe29ubGVhdmVSZWdpc3Rlcih0aGlzLl9jbGVhbnVwLmJpbmQo dGhpcykpO3RoaXMuX3N1YnNjcmlwdGlvbnM9W0FyYml0ZXIuc3Vic2NyaWJlKE5h dmlnYXRpb25NZXNzYWdlLk5BVklHQVRJT05fQkVHSU4sdGhpcy5fb25OYXZIYW5k bGVyLmJpbmQodGhpcykpLEFyYml0ZXIuc3Vic2NyaWJlKFByZXNlbmNlTWVzc2Fn ZS5nZXRBcmJpdGVyTWVzc2FnZVR5cGUoJ3RpY2tlcl91cGRhdGUnKSx0aGlzLl9o YW5kbGVUaWNrZXJQdXNoLmJpbmQodGhpcykpLEFyYml0ZXIuc3Vic2NyaWJlKCdj b21wb3Nlci9wdWJsaXNoJyx0aGlzLl9oYW5kbGVDb21wb3NlclB1Ymxpc2guYmlu ZCh0aGlzKSksQXJiaXRlci5zdWJzY3JpYmUoJ1RpY2tlci9zdG9yaWVzSW5zZXJ0 ZWQnLHRoaXMuX2hhbmRsZVN0b3JpZXNJbnNlcnRlZC5iaW5kKHRoaXMpKSxBcmJp dGVyLnN1YnNjcmliZSgnVGlja2VyL2ZpeGVkJyx0aGlzLl9zZXRGaXhlZC5iaW5k KHRoaXMsdHJ1ZSkpLEFyYml0ZXIuc3Vic2NyaWJlKCdUaWNrZXIvdW5maXhlZCcs dGhpcy5fc2V0Rml4ZWQuYmluZCh0aGlzLGZhbHNlKSksQXJiaXRlci5zdWJzY3Jp YmUoJ1RpY2tlci9yZXNpemVkJyx0aGlzLl9jaGVja0luZmluaXRlU2Nyb2xsLmJp bmQodGhpcykpLEFyYml0ZXIuc3Vic2NyaWJlKFVGSU9wdGltaXN0aWMuQ09NTUVO VF9TRU5EX0VWRU5ULHRoaXMuX3Njcm9sbERpYWxvZ1RvQm90dG9tLmJpbmQodGhp cykpLEFyYml0ZXIuc3Vic2NyaWJlKCdUaWNrZXIvY2hhdE9wZW5lZCcsdGhpcy5f aGFuZGxlQ2hhdE9wZW5lZC5iaW5kKHRoaXMpKV07aWYoYS5wdXNoQ2hhbm5lbCl0 aGlzLnNldFB1c2hDaGFubmVsKGEucHVzaENoYW5uZWwpO30sX2hhbmRsZUNsaWNr OmZ1bmN0aW9uKGV2ZW50KXt2YXIgYz1ldmVudC5nZXRUYXJnZXQoKTtpZih0aGlz Ll9nZXRCdXR0b25Gcm9tTm9kZShjKSl7dGhpcy5fbG9nVXNlckFjdGlvbihjLCdj bGljaycsZXZlbnQpO3RoaXMuX2hhbmRsZUFjdGlvbkJ1dHRvbihldmVudCk7cmV0 dXJuO312YXIgYj10aGlzLl9nZXRTdG9yeUZyb21Ob2RlKGMpO3ZhciBhPVBhcmVu dC5ieUNsYXNzKGMsJ3RpY2tlclN0b3J5QWxsb3dDbGljaycpO2lmKCFifHxiPT10 aGlzLl9zZWxlY3RlZFN0b3J5fHxhKXJldHVybjtpZih0aGlzLl9zdG9yeUlzSGlk ZGVuKGIpKXJldHVybjtpZihiPT10aGlzLl9hY3RpdmVTdG9yeSYmIXRoaXMuX3Nl bGVjdGVkU3RvcnkpdGhpcy5fc2VsZWN0aW5nPXRydWU7dGhpcy5fY2xlYXJOdXgo KTt0aGlzLl9sb2dVc2VyRXZlbnQoJ2ZseW91dCcsJ2NsaWNrJyk7dGhpcy5fbG9n VXNlckV2ZW50KCdmbHlvdXRfbG9hZHRpbWUnLCdvcGVuJyk7aWYodGhpcy5fc3Rv cnlDYW5PcGVuRXh0ZXJuYWxseShiKSl7dGhpcy5fbG9nVXNlckFjdGlvbihjLCdj bGljaycsZXZlbnQpO3RoaXMuX29wZW5TdG9yeUV4dGVybmFsbHkoYixldmVudCk7 cmV0dXJuO310aGlzLl9sb2dVc2VyQWN0aW9uKGMsJ2ZseW91dCcsZXZlbnQpO3Ro aXMuX2FjdGl2YXRlU3RvcnkoYiwnY2xpY2snKTt0aGlzLl9zZWxlY3RTdG9yeShi KTt9LF9oYW5kbGVNb3VzZW92ZXI6ZnVuY3Rpb24oZXZlbnQpe2V2ZW50LmtpbGwo KTt0aGlzLl9zZXRMb2NrZWQodHJ1ZSk7dmFyIGQ9ZXZlbnQuZ2V0VGFyZ2V0KCk7 dmFyIGM9dGhpcy5fZ2V0T3BlbmFibGVTdG9yeShkKTtpZighYylyZXR1cm47aWYo dGhpcy5fcHJlZmV0Y2hPbkhvdmVyfHx0aGlzLl9wb3B1cE9uSG92ZXIpe2lmKCEo Yy5pZCBpbiB0aGlzLl9mZXRjaGVkU3Rvcmllcykpe3RoaXMuX2xvZ1VzZXJFdmVu dCgnZmx5b3V0X3ByZWZldGNoJywncHJlZmV0Y2hfb25faG92ZXInKTt0aGlzLl91 YUN1clN0b3J5SURQcmVmZXRjaD1jLmlkO310aGlzLl9mZXRjaFN0b3J5KGMpO31p Zih0aGlzLl9zZWxlY3RlZFN0b3J5KXJldHVybjtpZih0aGlzLl9wb3B1cE9uSG92 ZXIpe3RoaXMuX2NsZWFySG92ZXJUaW1lb3V0cygpO3ZhciBiPXRoaXMuX3N0b3J5 Q2FuT3BlbkV4dGVybmFsbHkoYyk/NTAwOjEwMDA7dmFyIGE9dGhpcy5fYWN0aXZl U3Rvcnk/NzU6YjtpZighd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJmRvY3VtZW50 LmNyZWF0ZUV2ZW50T2JqZWN0KWV2ZW50PWRvY3VtZW50LmNyZWF0ZUV2ZW50T2Jq ZWN0KGV2ZW50KTt0aGlzLl9ob3ZlclNob3dUaW1lb3V0PXRoaXMuX3NldFRpbWVv dXQoZnVuY3Rpb24oKXt0aGlzLl9sb2dVc2VyRXZlbnQoJ2ZseW91dCcsJ2hvdmVy JyxhKTt0aGlzLl9sb2dVc2VyRXZlbnQoJ2ZseW91dF9sb2FkdGltZScsJ29wZW4n KTt0aGlzLl9hY3RpdmF0ZVN0b3J5KGMsJ2hvdmVyJyk7dGhpcy5fbG9nVXNlckFj dGlvbihkLCdmbHlvdXQnLGV2ZW50KTt9LmJpbmQodGhpcyksYSk7fX0sX2hhbmRs ZU1vdXNlb3V0OmZ1bmN0aW9uKGV2ZW50KXt2YXIgYz1ldmVudC5nZXRUYXJnZXQo KTt0aGlzLl9zZXRMb2NrZWQoZmFsc2UpO2lmKGM9PXRoaXMuX2dldFN0b3J5RnJv bU5vZGUoYykpe3ZhciBiPURPTS5zY3J5KGMucGFyZW50Tm9kZSwnLm9wZW5Ub2dn bGVyJyk7Zm9yKHZhciBhPTA7YTxiLmxlbmd0aDthKyspU2VsZWN0b3IudG9nZ2xl KGJbYV0pO310aGlzLl9jbGVhckNsaWNrZWRTdG9yeSgpO3RoaXMuX3NjaGVkdWxl SGlkZSgpO30sX2hhbmRsZUtleWRvd246ZnVuY3Rpb24oZXZlbnQpe3RoaXMuX3Rp Y2tlckRlQ2xpY2tlcihldmVudCk7dmFyIGQ9dGhpcy5fYWN0aXZlU3Rvcnk7aWYo IWQpcmV0dXJuO3ZhciBhPUV2ZW50LmdldEtleUNvZGUoZXZlbnQpO3N3aXRjaChh KXtjYXNlIEtFWVMuVVA6Y2FzZSBLRVlTLkRPV046dmFyIGM9dGhpcy5fZ2V0SW5z ZXJ0ZWRTdG9yaWVzKCk7dmFyIGI7aWYoZXZlbnQuZ2V0TW9kaWZpZXJzKCkuYW55 KXtiPWE9PT1LRVlTLlVQPzA6Yy5sZW5ndGgtMTt9ZWxzZSBiPWMuaW5kZXhPZihk KSsoYT09PUtFWVMuVVA/LTE6MSk7ZD1jW2JdO2JyZWFrO2Nhc2UgS0VZUy5FU0M6 dGhpcy5fZGVhY3RpdmF0ZVN0b3J5KHRydWUpO3JldHVybjtkZWZhdWx0OnJldHVy bjt9aWYoIWQpcmV0dXJuO2V2ZW50LmtpbGwoKTt0aGlzLl9hY3RpdmF0ZVN0b3J5 KGQsJ2tleXByZXNzJyk7dGhpcy5fc2VsZWN0U3RvcnkoZCk7fSxfaGFuZGxlU2Ny b2xsOmZ1bmN0aW9uKCl7IXRoaXMuX3ByZXZlbnRTY3JvbGxEaXNtaXNzJiZ0aGlz Ll9kZWFjdGl2YXRlU3RvcnkodHJ1ZSk7dGhpcy5fY2hlY2tJbmZpbml0ZVNjcm9s bCgpO2lmKCF0aGlzLl9zY3JvbGxMb2dnZWQpe3RoaXMuX3Njcm9sbExvZ2dlZD10 cnVlO3ZhciBiPXRoaXMuX3N0b3JpZXMuY2hpbGROb2Rlcy5sZW5ndGg7dmFyIGM9 dGhpcy5fc3Rvcmllcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtZ3QnKTt2YXIgYT17dGlj a2VyX3Njcm9sbDoxLG51bWJlcl9zdG9yaWVzOmIsc291cmNlOmN9O3JlcG9ydF9k YXRhKCdzY3JvbGwnLHtndDphfSk7fX0sX2hhbmRsZVN0b3JpZXNJbnNlcnRlZDpm dW5jdGlvbigpe3RoaXMuX2luaXRJbmZpbml0ZVNjcm9sbExpc3RlbmVyKCk7dGhp cy5fc2Nyb2xsYWJsZUFyZWEuYWRqdXN0R3JpcHBlcigpO3RoaXMuX2xvZ1VzZXJF dmVudCgnc3RyZWFtJywnaW5zZXJ0Jyk7fSxfaGFuZGxlQWN0aW9uQnV0dG9uOmZ1 bmN0aW9uKGV2ZW50KXt2YXIgZD1ldmVudC5nZXRUYXJnZXQoKTt2YXIgYT10aGlz Ll9nZXRCdXR0b25Gcm9tTm9kZShkKTt2YXIgYz10aGlzLl9nZXRPcGVuYWJsZVN0 b3J5KGQpO3ZhciBiPXRoaXMuX2dldFN0b3J5RGlhbG9nKGMpO2lmKGIpdmFyIGU9 Yi5zdWJzY3JpYmUoJ2JlZm9yZWhpZGUnLGZ1bmN0aW9uKCl7Yi51bnN1YnNjcmli ZShlKTtyZXR1cm4gZmFsc2U7fSk7fSxfaGFuZGxlU2Nyb2xsVG9Ub3BDbGljazpm dW5jdGlvbigpe3RoaXMuX3Njcm9sbFRvVG9wKHRoaXMuX3BvbGwuYmluZCh0aGlz KSk7fSxfc2Nyb2xsVG9Ub3A6ZnVuY3Rpb24oYSl7YW5pbWF0aW9uKHRoaXMuX2Nv bnRhaW5lcikudG8oJ3Njcm9sbFRvcCcsMCkuZWFzZShhbmltYXRpb24uZWFzZS5l bmQpLm9uZG9uZShhKS5nbygpO30sX2NsZWFySG92ZXJUaW1lb3V0czpmdW5jdGlv bigpe2NsZWFyVGltZW91dCh0aGlzLl9ob3ZlclNob3dUaW1lb3V0KTtjbGVhclRp bWVvdXQodGhpcy5faG92ZXJIaWRlVGltZW91dCk7fSxfZ2V0QWxsU3Rvcmllczpm dW5jdGlvbigpe3JldHVybiBET00uc2NyeSh0aGlzLl9yb290LCdkaXYuZmJGZWVk VGlja2VyU3RvcnknKTt9LF9nZXRJbnNlcnRlZFN0b3JpZXM6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5fZ2V0QWxsU3RvcmllcygpLmZpbHRlcihmdW5jdGlvbihhKXty ZXR1cm4gIUNTUy5oYXNDbGFzcyhhLCdxdWV1ZWRTdG9yeScpJiYhQ1NTLmhhc0Ns YXNzKGEsJ2N1c3RvbVN0b3J5Jyk7fSk7fSxfZ2V0UXVldWVkU3RvcmllczpmdW5j dGlvbigpe3JldHVybiBET00uc2NyeSh0aGlzLl9zdG9yeVF1ZXVlLCcuZmJGZWVk VGlja2VyU3RvcnkucXVldWVkU3RvcnknKTt9LF9nZXRRdWV1ZWRDdXN0b21TdG9y aWVzOmZ1bmN0aW9uKCl7cmV0dXJuIERPTS5zY3J5KHRoaXMuX3N0b3J5UXVldWUs Jy5mYkZlZWRUaWNrZXJTdG9yeS5jdXN0b21TdG9yeScpO30sX2dldEJ1dHRvbkZy b21Ob2RlOmZ1bmN0aW9uKGEpe3JldHVybiBQYXJlbnQuYnlDbGFzcyhhLCd0aWNr ZXJJbmxpbmVPdmVybGF5Jyk7fSxfZ2V0U3RvcnlGcm9tTm9kZTpmdW5jdGlvbihh KXtyZXR1cm4gUGFyZW50LmJ5Q2xhc3MoYSwnZmJGZWVkVGlja2VyU3RvcnknKTt9 LF9nZXRBY3Rpb25CdXR0b25Gcm9tU3Rvcnk6ZnVuY3Rpb24oYSl7cmV0dXJuIERP TS5zY3J5KGEsJy50aWNrZXJJbmxpbmVBY3Rpb25CdXR0b24nKVswXTt9LF9nZXRP cGVuYWJsZVN0b3J5OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX2dldFN0b3J5RnJv bU5vZGUoYSk7cmV0dXJuIHRoaXMuX3N0b3J5Q2FuT3BlbkRpYWxvZyhiKT9iOm51 bGw7fSxfZ2V0U3RvcnlEaWFsb2c6ZnVuY3Rpb24oYSl7cmV0dXJuIHdpbmRvdy5D b250ZXh0dWFsRGlhbG9nWCYmQ29udGV4dHVhbERpYWxvZ1guZ2V0SW5zdGFuY2Uo YSl8fG51bGw7fSxfZ2V0U3RvcnlEaWFsb2dFbmRwb2ludDpmdW5jdGlvbihhKXty ZXR1cm4gYSYmYS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVsJyk9PSdhc3luYycmJmEu Z2V0QXR0cmlidXRlKCdkYXRhLWFqYXhpZnknKXx8bnVsbDt9LF9zdG9yeUNhbk9w ZW5EaWFsb2c6ZnVuY3Rpb24oYSl7cmV0dXJuICEhdGhpcy5fZ2V0U3RvcnlEaWFs b2dFbmRwb2ludChhKSYmIXRoaXMuX3N0b3J5SXNIaWRkZW4oYSk7fSxfc3RvcnlD YW5PcGVuRXh0ZXJuYWxseTpmdW5jdGlvbihhKXtyZXR1cm4gISFhLmdldEF0dHJp YnV0ZSgnZGF0YS1ocmVmJyl8fCF0aGlzLl9zdG9yeUNhbk9wZW5EaWFsb2coYSk7 fSxfc3RvcnlJc0hpZGRlbjpmdW5jdGlvbihhKXtyZXR1cm4gQ1NTLmhhc0NsYXNz KGEsJ3RpY2tlclN0b3J5SGlkZGVuJyk7fSxoaWRlQWN0aXZlU3Rvcnk6ZnVuY3Rp b24oKXt0aGlzLl9hY3RpdmVTdG9yeSYmdGhpcy5oaWRlU3RvcnkodGhpcy5fYWN0 aXZlU3RvcnkpO30saGlkZVN0b3J5OmZ1bmN0aW9uKGEpe3RoaXMuX2RlYWN0aXZh dGVTdG9yeSgpO0NTUy5hZGRDbGFzcyhhLCd0aWNrZXJTdG9yeUhpZGRlbicpO0NT Uy5yZW1vdmVDbGFzcyhhLCd0aWNrZXJTdG9yeUNsaWNrYWJsZScpO30sdW5kb0hp ZGVTdG9yeTpmdW5jdGlvbihhKXtDU1MuYWRkQ2xhc3MoYSwndGlja2VyU3RvcnlD bGlja2FibGUnKTtDU1MucmVtb3ZlQ2xhc3MoYSwndGlja2VyU3RvcnlIaWRkZW4n KTt9LF9zY2hlZHVsZUhpZGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9wb3B1cE9uSG92 ZXImJiF0aGlzLl9zZWxlY3RlZFN0b3J5KXt0aGlzLl9jbGVhckhvdmVyVGltZW91 dHMoKTt0aGlzLl9ob3ZlckhpZGVUaW1lb3V0PXRoaXMuX3NldFRpbWVvdXQodGhp cy5fZGVhY3RpdmF0ZVN0b3J5LmJpbmQodGhpcyksMTAwKTt9fSxfc2V0U2Nyb2xs VG9wUHJvbXB0VmlzaWJsZTpmdW5jdGlvbihhKXt0aGlzLl9zY3JvbGxUb3BQcm9t cHRWaXNpYmxlPWE7Q1NTLmNvbmRpdGlvblNob3codGhpcy5fc2Nyb2xsVG9wUHJv bXB0LGEpO2lmKGEmJiF0aGlzLl9saXN0ZW5lcnMuc2Nyb2xsVG9wKXt0aGlzLl9s aXN0ZW5lcnMuc2Nyb2xsVG9wPUV2ZW50Lmxpc3Rlbih0aGlzLl9zY3JvbGxUb3BQ cm9tcHQse2NsaWNrOnRoaXMuX2hhbmRsZVNjcm9sbFRvVG9wQ2xpY2suYmluZCh0 aGlzKX0pO31lbHNlIGlmKCFhJiZ0aGlzLl9saXN0ZW5lcnMuc2Nyb2xsVG9wKXt0 aGlzLl9saXN0ZW5lcnMuc2Nyb2xsVG9wLmNsaWNrLnJlbW92ZSgpO3RoaXMuX2xp c3RlbmVycy5zY3JvbGxUb3A9bnVsbDt9fSxfaXNVc2VySWRsZTpmdW5jdGlvbigp e3JldHVybiAhVXNlckFjdGl2aXR5LmlzQWN0aXZlKHRoaXMuX3VzZXJJZGxlVGlt ZW91dCk7fSxfc2NoZWR1bGVQb2xsOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRo aXMuX3BvbGxUb2tlbik7dGhpcy5fcG9sbFRva2VuPXRoaXMuX3NldFRpbWVvdXQo dGhpcy5fcG9sbC5iaW5kKHRoaXMpLHRoaXMuX3RpbWVvdXQpO30sX3BvbGw6ZnVu Y3Rpb24oKXt0aGlzLl9kZWJ1ZygncG9sbCcpO2lmKCF0aGlzLl9pc1RpY2tlclZp c2libGUoKSl7dGhpcy5fZGVidWcoJ25vdCBwb2xsaW5nOiB0aWNrZXIgbm90IHZp c2libGUnKTtyZXR1cm47fWlmKHRoaXMuX2lzVXNlcklkbGUoKSl7dGhpcy5fZGVi dWcoJ25vdCBwb2xsaW5nOiBpZGxlJyk7cmV0dXJuIFVzZXJBY3Rpdml0eS5zdWJz Y3JpYmVPbmNlKHRoaXMuX3BvbGwuYmluZCh0aGlzKSk7fXZhciBlPSF0aGlzLl9p c1Njcm9sbGVkVG9Ub3AoKSYmdGhpcy5fZ2V0UXVldWVkU3RvcmllcygpLmxlbmd0 aDt0aGlzLl9zZXRTY3JvbGxUb3BQcm9tcHRWaXNpYmxlKGUpO3ZhciBkPURhdGUu bm93KCk7dmFyIGo9ZC10aGlzLl9sYXN0SW5zZXJ0O2lmKGo8dGhpcy5faW5zZXJ0 VGltZW91dHx8dGhpcy5faXNMb2NrZWQoKSlyZXR1cm4gdGhpcy5fc2NoZWR1bGVQ b2xsKCk7dmFyIGc9dGhpcy5fZ2V0UXVldWVkU3RvcmllcygpO3ZhciBhPXRoaXMu X2dldFF1ZXVlZEN1c3RvbVN0b3JpZXMoKTt2YXIgaT1nLmxlbmd0aD4wO3ZhciBo PWEubGVuZ3RoPjAmJihkLXRoaXMuX2luaXRUaW1lPnRoaXMuX2ZpcnN0Q3VzdG9t U3RvcnlEZWxheSkmJih0aGlzLl9uZWVkTm9uQ3VzdG9tU3RvcnlOdW09PT0wfHwo IWkmJihkLXRoaXMuX2xhc3RDdXN0b21TdG9yeSk+dGhpcy5fY3VzdG9tU3RvcnlJ bnNlcnRUaW1lb3V0KSk7aWYoaCl7dGhpcy5pbnNlcnRTdG9yeShhLnNoaWZ0KCkp O3RoaXMuX2xhc3RDdXN0b21TdG9yeT1kO3RoaXMuX25lZWROb25DdXN0b21TdG9y eU51bT10aGlzLl9ub25DdXN0b21Ub0N1c3RvbVN0b3J5UmF0aW87dGhpcy5fZGVi dWcoJ25vdCBwb2xsaW5nOiBzaG91bGQgaW5zZXJ0IGN1c3RvbSBzdG9yeScpO3Jl dHVybiB0aGlzLl9zY2hlZHVsZVBvbGwoKTt9aWYoaSl7dGhpcy5pbnNlcnRTdG9y eShnLnNoaWZ0KCkpO3RoaXMuX25lZWROb25DdXN0b21TdG9yeU51bS0tO2lmKHRo aXMuX25lZWROb25DdXN0b21TdG9yeU51bTwwKXRoaXMuX25lZWROb25DdXN0b21T dG9yeU51bT0wO3RoaXMuX2RlYnVnKCdub3QgcG9sbGluZzogc2hvdWxkIGluc2Vy dCBzdG9yeScpO3JldHVybiB0aGlzLl9zY2hlZHVsZVBvbGwoKTt9dmFyIGM9YS5s ZW5ndGg9PT0wJiZ0aGlzLl9uZWVkTm9uQ3VzdG9tU3RvcnlOdW09PT0wJiZ0aGlz Ll9ub25DdXN0b21Ub0N1c3RvbVN0b3J5UmF0aW8+MCYmVXNlckFjdGl2aXR5Lmlz QWN0aXZlKHRoaXMuQURTX0lETEVfTVMpJiYoKGQtdGhpcy5fbGFzdFVwZGF0ZSk+ dGhpcy5fbWluRm9yY2VVcGRhdGVJbnRlcnZhbCk7dmFyIGI9ZC10aGlzLl9sYXN0 VXBkYXRlPnRoaXMuX2hlYXJ0YmVhdFRpbWVvdXQ7aWYoKGMmJnRoaXMuX2RvQ3Vz dG9tVXBkYXRlKXx8Yil7aWYoYyl0aGlzLl9kb0N1c3RvbVVwZGF0ZT1mYWxzZTt2 YXIgZj1mYWxzZTtpZihiJiYhdGhpcy5fcG9sbE9ubHkpZj0oZC10aGlzLl9sYXN0 UHVsbD50aGlzLl9wdWxsVGltZW91dCk7dGhpcy5fZGVidWcoJ3BvbGxpbmcgZm9y IG5ldyBzdG9yaWVzJyk7dGhpcy51cGRhdGUoe2hlYXJ0YmVhdDpiLHB1bGw6Zixm dWxscG9sbDp0aGlzLl9wb2xsT25seSxuZWVkY3VzdG9tc3Rvcnk6Y30pO3JldHVy bjt9dGhpcy5fc2NoZWR1bGVQb2xsKCk7fSx1cGRhdGU6ZnVuY3Rpb24oYil7dmFy IGE9e25ld2VzdDooYi5mdWxscG9sbHx8Yi5jYWNoZV91cGRhdGUpP3RoaXMuX25l d2VzdDp0aGlzLl9wYWdlX25ld2VzdCxzdG9yeWlkczp0aGlzLl9zdG9yeUlEcyxm cmllbmRjb3VudDp0aGlzLl9mcmllbmRDb3VudCxwcmlvcml0eWFwcGlkOnRoaXMu X3ByaW9yaXR5QXBwSWQsc291cmNlOnRoaXMuX3RpY2tlclNvdXJjZX07Y29weV9w cm9wZXJ0aWVzKGEsYik7bmV3IEFzeW5jUmVxdWVzdCgpLnNldFVSSSh0aGlzLl9o ZWFydGJlYXRFbmRwb2ludCkuc2V0UmVhZE9ubHkodHJ1ZSkuc2V0T3B0aW9uKCdy ZXRyaWVzJywwKS5zZXREYXRhKGEpLnNldEhhbmRsZXIodGhpcy5faGFuZGxlUmVz cG9uc2UuYmluZCh0aGlzKSkuc2V0RmluYWxseUhhbmRsZXIodGhpcy5fcG9sbC5i aW5kKHRoaXMpKS5zZXRBbGxvd0Nyb3NzUGFnZVRyYW5zaXRpb24odHJ1ZSkuc2Vu ZCgpO3RoaXMuX2xhc3RVcGRhdGU9RGF0ZS5ub3coKTtpZihhLnB1bGwpdGhpcy5f bGFzdFB1bGw9dGhpcy5fbGFzdFVwZGF0ZTt0aGlzLl9zdG9yeUlEcz1bXTt9LGlu c2VydFN0b3J5OmZ1bmN0aW9uKGQsYSxjKXtpZih0aGlzLl9kYXJrKXJldHVybjt0 aGlzLl9sYXN0SW5zZXJ0PURhdGUubm93KCk7d2luZG93LkxpdmVUaW1lciYmTGl2 ZVRpbWVyLmFkZFRpbWVTdGFtcHMoZCk7Q1NTLnJlbW92ZUNsYXNzKGQsJ3F1ZXVl ZFN0b3J5Jyk7Q1NTLnJlbW92ZUNsYXNzKGQsJ2N1c3RvbVN0b3J5Jyk7aWYoYSE9 PWZhbHNlKXt2YXIgYj1jP3RoaXMuX2ZhZGVTdG9yeUluOnRoaXMuX2ZseVN0b3J5 SW47aWYodGhpcy5faXNTY3JvbGxlZFRvVG9wKCkpe3RoaXMuX3Njcm9sbFRvVG9w KGIuYmluZCh0aGlzLGQpKTt9ZWxzZSBiLmNhbGwodGhpcyxkKTt9ZWxzZSBET00u cHJlcGVuZENvbnRlbnQodGhpcy5fc3RvcmllcyxkKTt0aGlzLl9yZW1vdmVPbGRT dG9yaWVzKCk7fSxfcmVtb3ZlT2xkU3RvcmllczpmdW5jdGlvbigpe3ZhciBiPXRo aXMuX2dldEluc2VydGVkU3RvcmllcygpO2lmKGIubGVuZ3RoPD10aGlzLl9tYXhT dG9yaWVzVG9LZWVwKXJldHVybjt2YXIgYT10aGlzLl9taW5TdG9yaWVzVG9LZWVw O2Iuc2xpY2UoYSkuZWFjaChET00ucmVtb3ZlKTt0aGlzLl9yZXNldE1vcmVQYWdl cigpO30sX3Jlc2V0TW9yZVBhZ2VyOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5fZ2V0 SW5zZXJ0ZWRTdG9yaWVzKCk7aWYoIWJ8fCFiLmxlbmd0aClyZXR1cm47dmFyIGM9 YltiLmxlbmd0aC0xXS5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGlja2VyLXRpbWVzdGFt cCcpO3ZhciBhPURPTS5zY3J5KHRoaXMuX3Jvb3QsJy50aWNrZXJNb3JlUGFnZXIg YScpWzBdO2lmKCFhfHwhYylyZXR1cm47dmFyIGQ9bmV3IFVSSShhLmdldEF0dHJp YnV0ZSgnYWpheGlmeScpKTtkLmFkZFF1ZXJ5RGF0YSh7b2xkZXN0OmN9KTthLnNl dEF0dHJpYnV0ZSgnYWpheGlmeScsZCk7fSxfc2V0TG9ja2VkOmZ1bmN0aW9uKGEp e3RoaXMuX2xvY2tlZD1hO30sX2lzTG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuICEh KHRoaXMuX3Njcm9sbFRvcFByb21wdFZpc2libGV8fHRoaXMuX2xvY2tlZHx8dGhp cy5fYWN0aXZlU3RvcnkpO30saW5mb3JtQW5kUmVtb3ZlU3Rvcnk6ZnVuY3Rpb24o YSxkLGUpe3ZhciBiPXRoaXMuX2dldFN0b3J5RnJvbU5vZGUoYSk7dmFyIGM9Yi5n ZXRBdHRyaWJ1dGUoJ2RhdGEtc3Rvcnkta2V5Jyk7RE9NLnNldENvbnRlbnQoYixk KTtDU1MuYWRkQ2xhc3MoYiwnaGlnaGxpZ2h0ZWRTdG9yeScpO3RoaXMuX3NldFRp bWVvdXQodGhpcy5yZW1vdmVTdG9yeS5iaW5kKHRoaXMsYyksZXx8NjAwMCk7fSxf Z2V0U3RvcnlCeVN0b3J5S2V5OmZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMuX2dldEFs bFN0b3JpZXMoKTtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGQ9Y1th XTtpZihkLmdldEF0dHJpYnV0ZSgnZGF0YS1zdG9yeS1rZXknKT09YilyZXR1cm4g ZDt9cmV0dXJuIG51bGw7fSxyZW1vdmVTdG9yeTpmdW5jdGlvbihjKXt0aGlzLl9y ZW1vdmVkU3RvcnlJRHNbY109dHJ1ZTt2YXIgYj10aGlzLl9nZXRTdG9yeUJ5U3Rv cnlLZXkoYyk7aWYoIWIpcmV0dXJuO2lmKGI9PXRoaXMuX2FjdGl2ZVN0b3J5KXRo aXMuX2RlYWN0aXZhdGVTdG9yeSgpO3ZhciBhPXRoaXMuX2dldFN0b3J5RGlhbG9n KGIpO2EmJmEuZGVzdHJveSgpO3RoaXMuX2FuaW1hdGVTdG9yeU91dChiKTt9LF9p c1Njcm9sbGVkVG9Ub3A6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGFpbmVy LnNjcm9sbFRvcDw9dGhpcy5fc2Nyb2xsVG9wVGhyZXNob2xkO30sX2ZseVN0b3J5 SW46ZnVuY3Rpb24oYil7dmFyIGM9JE4oJ2Rpdicse3N0eWxlOnttYXJnaW5Ub3A6 Jy0xMDAwcHgnfX0sYik7Q1NTLnNldFN0eWxlKGMsJ29wYWNpdHknLDApO0RPTS5w cmVwZW5kQ29udGVudCh0aGlzLl9zdG9yaWVzLGMpO3ZhciBhPVZlY3RvcjIuZ2V0 RWxlbWVudERpbWVuc2lvbnMoYykueTtDU1Muc2V0U3R5bGUoYywnbWFyZ2luVG9w JywnLScrYSsncHgnKTthbmltYXRpb24oYykudG8oJ21hcmdpblRvcCcsMCkuZWFz ZShhbmltYXRpb24uZWFzZS5lbmQpLmNoZWNrcG9pbnQoLjUpLnRvKCdvcGFjaXR5 JywxKS5vbmRvbmUoZnVuY3Rpb24oKXtET00ucmVwbGFjZShjLGIpO3RoaXMuX2Fm dGVySW5zZXJ0KGIpO30uYmluZCh0aGlzKSkuZ28oKTt9LF9mYWRlU3RvcnlJbjpm dW5jdGlvbihhKXthbmltYXRpb24odGhpcy5fc3RvcmllcykudG8oJ29wYWNpdHkn LC41KS5vbmRvbmUoZnVuY3Rpb24oKXtET00ucHJlcGVuZENvbnRlbnQodGhpcy5f c3RvcmllcyxhKTthbmltYXRpb24odGhpcy5fc3RvcmllcykudG8oJ29wYWNpdHkn LDEpLm9uZG9uZShmdW5jdGlvbigpe3RoaXMuX2FmdGVySW5zZXJ0KGEpO30uYmlu ZCh0aGlzKSkuZ28oKTt9LmJpbmQodGhpcykpLmdvKCk7fSxfYW5pbWF0ZVN0b3J5 T3V0OmZ1bmN0aW9uKGEpe3ZhciBiPSROKCdkaXYnLHtzdHlsZTp7b3ZlcmZsb3c6 J2hpZGRlbicscG9zaXRpb246J3JlbGF0aXZlJ319KTtET00uaW5zZXJ0QmVmb3Jl KGIsYSk7RE9NLmFwcGVuZENvbnRlbnQoYixhKTthbmltYXRpb24oYikudG8oJ3Rv cCcsMjApLnRvKCdoZWlnaHQnLDApLnRvKCdvcGFjaXR5JywwKS5lYXNlKGFuaW1h dGlvbi5lYXNlLmVuZCkub25kb25lKGZ1bmN0aW9uKCl7RE9NLnJlbW92ZS5jdXJy eShiKTtBcmJpdGVyLmluZm9ybSgnVGlja2VyL2FuaW1hdGVPdXQnKTt9LmJpbmQo dGhpcykpLmdvKCk7fSxfYWZ0ZXJJbnNlcnQ6ZnVuY3Rpb24oYSl7QXJiaXRlci5p bmZvcm0oJ1RpY2tlci9hZnRlckluc2VydCcpO2lmKGEmJkNTUy5oYXNDbGFzcyhh LCd0aWNrZXJTcG9uc29yZWRTdG9yeScpKXthZD1ET00uc2NyeShhLCcuZmJFbXVT dHJlYW1TdG9yeScpWzBdO2FkJiZhZC5pZCYmQXJiaXRlci5pbmZvcm0oJ3RpY2tl cmFkXycrYWQuaWQpO319LHNldFB1c2hDaGFubmVsOmZ1bmN0aW9uKGEpe3RoaXMu X3B1c2hTdWJzY3JpcHRpb24mJkFyYml0ZXIudW5zdWJzY3JpYmUodGhpcy5fcHVz aFN1YnNjcmlwdGlvbik7dGhpcy5fcHVzaFN1YnNjcmlwdGlvbj1BcmJpdGVyLnN1 YnNjcmliZShQcmVzZW5jZU1lc3NhZ2UuZ2V0QXJiaXRlck1lc3NhZ2VUeXBlKGEp LHRoaXMuX2hhbmRsZVRpY2tlclB1c2guYmluZCh0aGlzKSk7cmVxdWlyZS5lbnN1 cmUoWydDaGF0Q29uZmlnJywnQ2hhbm5lbENvbm5lY3Rpb24nXSxmdW5jdGlvbihj LGIpe2lmKGMuZ2V0KCdjaGFubmVsX2Rpc2Nvbm5lY3Rfd2FybmluZycpKXt0aGlz Ll9jaGFubmVsQ29ubmVjdGlvbj1iO3RoaXMuX2NoZWNrQ2hhbm5lbENvbm5lY3Rp b24oKTt0aGlzLl9jaGFubmVsQ29ubmVjdGlvblN1YnNjcmlwdGlvbj10aGlzLl9j aGFubmVsQ29ubmVjdGlvbi5zdWJzY3JpYmUoW3RoaXMuX2NoYW5uZWxDb25uZWN0 aW9uLkNPTk5FQ1RFRCx0aGlzLl9jaGFubmVsQ29ubmVjdGlvbi5SRUNPTk5FQ1RJ TkcsdGhpcy5fY2hhbm5lbENvbm5lY3Rpb24uU0hVVERPV04sdGhpcy5fY2hhbm5l bENvbm5lY3Rpb24uTVVURV9XQVJOSU5HLHRoaXMuX2NoYW5uZWxDb25uZWN0aW9u LlVOTVVURV9XQVJOSU5HXSx0aGlzLl9oYW5kbGVDaGFubmVsQ29ubmVjdGlvbi5i aW5kKHRoaXMpKTt9fS5iaW5kKHRoaXMpKTt9LF9jaGVja0NoYW5uZWxDb25uZWN0 aW9uOmZ1bmN0aW9uKCl7Q1NTLmNvbmRpdGlvbkNsYXNzKHRoaXMuX3Jvb3QsJ2Rp c2Nvbm5lY3RlZCcsdGhpcy5fY2hhbm5lbENvbm5lY3Rpb24uZGlzY29ubmVjdGVk KCkpO30sc2V0Q3VycmVudEFwcElkOmZ1bmN0aW9uKGEpe3RoaXMuX3ByaW9yaXR5 QXBwSWQ9YTt9LF9oYW5kbGVUaWNrZXJQdXNoOmZ1bmN0aW9uKGUsYSl7aWYodGhp cy5faXNVc2VySWRsZSgpKXt0aGlzLl9kZWJ1ZygnZGlzY2FyZGluZyBzdG9yeTog dXNlciBpcyBpZGxlJyk7cmV0dXJuO312YXIgYz1hLm9iajtpZihjLmRlbGV0ZV9p ZCl7dGhpcy5yZW1vdmVTdG9yeShjLmRlbGV0ZV9pZCk7cmV0dXJuO312YXIgYj1j LnN0b3J5X3hocDtpZighYil7dGhpcy5fZGVidWcoJ2Rpc2NhcmRpbmcgc3Rvcnk6 IG5vIG1hcmt1cCcpO3JldHVybjt9dGhpcy5fbmV3ZXN0PWMuc3RvcnlfdGltZTt2 YXIgZD1IVE1MKGIpLmdldFJvb3ROb2RlKCk7dGhpcy5xdWV1ZVN0b3J5KGQsYy5m bHlvdXRfanNfY21kcyk7fSxfaGFuZGxlQ29tcG9zZXJQdWJsaXNoOmZ1bmN0aW9u KGIsYSl7YS50aWNrZXJNYXJrdXAmJnRoaXMuaW5zZXJ0U3RvcnkoYS50aWNrZXJN YXJrdXApO30sX2NsZWFyTnV4OmZ1bmN0aW9uKCl7dmFyIGE9RE9NLnNjcnkoZG9j dW1lbnQuYm9keSwnZGl2LnRpY2tlck5VWENvbnRhaW5lcicpO2lmKGEubGVuZ3Ro KXthLmVhY2goZnVuY3Rpb24oYyl7dmFyIGI9Q29udGV4dHVhbERpYWxvZ1guZ2V0 SW5zdGFuY2UoYyk7YiYmYi5oaWRlKCk7fSk7bmV3IEFzeW5jUmVxdWVzdCgpLnNl dFVSSSgnL2FqYXgvZmVlZC90aWNrZXIvbnV4LnBocCcpLnNlbmQoKTt9dGhpcy5f Y2xlYXJOdXg9YmFnb2Zob2xkaW5nO30sX2xvZ1JlbmRlcjpmdW5jdGlvbigpe2lm KHRoaXMuX2xvZ2dlZFJlbmRlcilyZXR1cm47dmFyIGE9dGhpcy5fdGlja2VySW5T aWRlYmFyTW9kZTtpZihhfHxQYXJlbnQuYnlDbGFzcyh0aGlzLl9jb250ZW50LCdo b21lX3JpZ2h0X2NvbHVtbicpKXtuZXcgQXN5bmNTaWduYWwoJy9hamF4L2xvZ190 aWNrZXJfcmVuZGVyLnBocCcse3NpZGViYXJfbW9kZTphfSkuc2VuZCgpO3RoaXMu X2xvZ2dlZFJlbmRlcj10cnVlO319LF9pc1RpY2tlclZpc2libGU6ZnVuY3Rpb24o KXt2YXIgYT0oVGlja2VyQ29udHJvbGxlci5fYWN0aXZlSW5zdGFuY2U9PXRoaXMp O2EmJnRoaXMuX2xvZ1JlbmRlcigpO3JldHVybiBhO30sX2hhbmRsZVJlc3BvbnNl OmZ1bmN0aW9uKGMpe3ZhciBiPWMuZ2V0UGF5bG9hZCgpO2lmKGIubmV3ZXN0KXRo aXMuX25ld2VzdD10aGlzLl9wYWdlX25ld2VzdD1iLm5ld2VzdDtpZihiLmNvbnRl bnQpaWYoYi5jYWNoZV91cGRhdGUmJnRoaXMuX2NhY2hlKXt0aGlzLl9jYWNoZS5p bnNlcnRTdG9yeShiLmNvbnRlbnQpO31lbHNlIGlmKGIuY29udGVudCBpbnN0YW5j ZW9mIEFycmF5KXtmb3IodmFyIGE9MDthPGIuY29udGVudC5sZW5ndGg7YSsrKXRo aXMucXVldWVTdG9yeU1hcmt1cChiLmNvbnRlbnRbYV0pO31lbHNlIHRoaXMucXVl dWVTdG9yeU1hcmt1cChiLmNvbnRlbnQpO2lmKGIuY3VzdG9tX3N0b3JpZXMmJmIu Y3VzdG9tX3N0b3JpZXMubGVuZ3RoKXt0aGlzLl9xdWV1ZUN1c3RvbVN0b3JpZXMo Yi5jdXN0b21fc3Rvcmllcyk7dGhpcy5fZG9DdXN0b21VcGRhdGU9dHJ1ZTt9fSxx dWV1ZVN0b3J5TWFya3VwOmZ1bmN0aW9uKGEpe3ZhciBiPUhUTUwoYSkuZ2V0Um9v dE5vZGUoKTt0aGlzLnF1ZXVlU3RvcnkoYik7fSxkZWR1cGVTdG9yeTpmdW5jdGlv bihjKXt2YXIgYj1jLmdldEF0dHJpYnV0ZSgnZGF0YS1zdG9yeS1rZXknKTt2YXIg YT1iJiYoISF0aGlzLl9vYmplY3RJRHNbYl18fCEhdGhpcy5fcmVtb3ZlZFN0b3J5 SURzW2JdKTtpZihhKXRoaXMuX2RlYnVnKCdkaXNjYXJkaW5nIHN0b3J5OiBkdXBs aWNhdGVkIG9iamVjdCBpZCcpO2ImJih0aGlzLl9vYmplY3RJRHNbYl09dHJ1ZSk7 cmV0dXJuIGE7fSxxdWV1ZVN0b3J5OmZ1bmN0aW9uKGQsYSl7aWYodGhpcy5fZGFy aylyZXR1cm47aWYodGhpcy5kZWR1cGVTdG9yeShkKSlyZXR1cm47Q1NTLmFkZENs YXNzKGQsJ3F1ZXVlZFN0b3J5Jyk7RE9NLmFwcGVuZENvbnRlbnQodGhpcy5fc3Rv cnlRdWV1ZSxkKTt2YXIgYj1hJiZhLmxlbmd0aDtpZihiKWEuZWFjaChmdW5jdGlv bihlKXtuZXcgRnVuY3Rpb24oZSkuYXBwbHkoKTt9KTtkLnNldEF0dHJpYnV0ZSgn aWQnLGQuaWQrJ18nK3RoaXMuX3Jvb3QuaWQpO3ZhciBjPXRoaXMuX2dldFF1ZXVl ZFN0b3JpZXMoKTtjLnNsaWNlKDAsLXRoaXMuX21heFF1ZXVlTGVuZ3RoKS5lYWNo KERPTS5yZW1vdmUpO2lmKGIpdGhpcy5fZmV0Y2hlZFN0b3JpZXNbZC5pZF09dHJ1 ZTt9LF9xdWV1ZUN1c3RvbVN0b3JpZXM6ZnVuY3Rpb24oYil7d2hpbGUoYi5sZW5n dGgpe3ZhciBjPWIuc2hpZnQoKTtjPUhUTUwoYykuZ2V0Um9vdE5vZGUoKTt2YXIg ZD1jLmdldEF0dHJpYnV0ZSgnZGF0YS1zdG9yeS1rZXknKTtpZih0aGlzLmRlZHVw ZVN0b3J5KGMpKWNvbnRpbnVlO0NTUy5hZGRDbGFzcyhjLCdjdXN0b21TdG9yeScp O0RPTS5hcHBlbmRDb250ZW50KHRoaXMuX3N0b3J5UXVldWUsYyk7fXZhciBhPXRo aXMuX2dldFF1ZXVlZEN1c3RvbVN0b3JpZXMoKTthLnNsaWNlKDAsLXRoaXMuX21h eFF1ZXVlTGVuZ3RoKS5lYWNoKERPTS5yZW1vdmUpO30sX2NsZWFudXA6ZnVuY3Rp b24oKXtUaWNrZXJDb250cm9sbGVyLl9wbGFjZWhvbGRlcnMucGFnZWxldF9yaGNf dGlja2VyPW51bGw7aWYoIVBhcmVudC5ieUNsYXNzKHRoaXMuX2NvbnRlbnQsJ2hh c1JpZ2h0Q29sJykpcmV0dXJuO3RoaXMuX29iamVjdElEcz1bXTt0aGlzLl9zdWJz Y3JpcHRpb25zLmVhY2goQXJiaXRlci51bnN1YnNjcmliZSk7dGhpcy5fY2hhbm5l bENvbm5lY3Rpb25TdWJzY3JpcHRpb24mJnRoaXMuX2NoYW5uZWxDb25uZWN0aW9u LnVuc3Vic2NyaWJlKHRoaXMuX2NoYW5uZWxDb25uZWN0aW9uU3Vic2NyaXB0aW9u KTt0aGlzLl9wdXNoU3Vic2NyaXB0aW9uJiZBcmJpdGVyLnVuc3Vic2NyaWJlKHRo aXMuX3B1c2hTdWJzY3JpcHRpb24pO2Zvcih2YXIgYSBpbiB0aGlzLl9saXN0ZW5l cnMpdGhpcy5fbGlzdGVuZXJzW2FdJiZ0aGlzLl9saXN0ZW5lcnNbYV0ucmVtb3Zl KCk7Y2xlYXJUaW1lb3V0KHRoaXMuX3BvbGxUb2tlbik7dGhpcy5fcG9sbFRva2Vu PW51bGw7dGhpcy5fY2xlYW51cElucHV0Rm9jdXNMaXN0ZW5lcigpO3RoaXMuX2Ns ZWFudXBDb250ZW50UmVzaXplTGlzdGVuZXIoKTtBcmJpdGVyLmluZm9ybSgnVGlj a2VyL2NsZWFudXAnKTt9LF9vbk5hdkhhbmRsZXI6ZnVuY3Rpb24oYyxhKXt2YXIg Yj1hLnBhcmFtcy5rZXk7aWYoYiE9J2xmJyYmYiE9J2gnKXRoaXMuX2NsZWFudXAo KTt9LHJlZ2lzdGVyU3RvcnlEaWFsb2c6ZnVuY3Rpb24oYixhKXtpZih0aGlzLl91 YUN1clN0b3J5SURGZXRjaD09Yi5pZCl7dGhpcy5fdWFDdXJTdG9yeUlERmV0Y2g9 bnVsbDt0aGlzLl9sb2dVc2VyRXZlbnQoJ2ZseW91dCcsJ2ZldGNoX3N1Y2Nlc3Mn KTt9aWYodGhpcy5fdWFDdXJTdG9yeUlEUHJlZmV0Y2g9PWIuaWQpe3RoaXMuX3Vh Q3VyU3RvcnlJRFByZWZldGNoPW51bGw7dGhpcy5fbG9nVXNlckV2ZW50KCdmbHlv dXRfcHJlZmV0Y2gnLCdwcmVmZXRjaF9zdWNjZXNzJyk7fXRoaXMuX2ZldGNoZWRT dG9yaWVzW2IuaWRdPXRydWU7YS5zZXRDb250ZXh0KGIpO2Euc3Vic2NyaWJlKCdo aWRlJyx0aGlzLl9kZWFjdGl2YXRlU3RvcnkuYmluZCh0aGlzLHRydWUpKTthLnN1 YnNjcmliZSgnc3VjY2VzcycsdGhpcy5fZm9jdXNTdG9yeS5iaW5kKHRoaXMsYikp O2Euc3Vic2NyaWJlKCdiZWZvcmVoaWRlJyxmdW5jdGlvbigpe2lmKHRoaXMuX3Nl bGVjdGluZyl7dGhpcy5fc2VsZWN0aW5nPWZhbHNlO3JldHVybiBmYWxzZTt9fS5i aW5kKHRoaXMpKTtpZih0aGlzLl9wb3B1cE9uSG92ZXIpe2Euc3Vic2NyaWJlKCdt b3VzZWVudGVyJyx0aGlzLl9jbGVhckhvdmVyVGltZW91dHMuYmluZCh0aGlzKSk7 YS5zdWJzY3JpYmUoJ21vdXNlbGVhdmUnLHRoaXMuX3NjaGVkdWxlSGlkZS5iaW5k KHRoaXMpKTthLnN1YnNjcmliZSgnc2hvdycsZnVuY3Rpb24oKXt0aGlzLl9oaWdo bGlnaHREaWFsb2dTY3JvbGxiYXIuYmluZCh0aGlzLGEpLmRlZmVyKCk7dmFyIGM9 RXZlbnQubGlzdGVuKGEuZ2V0Q29udGVudCgpLCdjbGljaycsZnVuY3Rpb24oKXt0 aGlzLl9zZWxlY3RTdG9yeShiKTtjLnJlbW92ZSgpO30uYmluZCh0aGlzKSk7fS5i aW5kKHRoaXMpKTt9aWYoYj09dGhpcy5fYWN0aXZlU3Rvcnkpe3RoaXMuX2xvZ1Vz ZXJFdmVudCgnZmx5b3V0X2xvYWR0aW1lJywnc2hvd19mZXRjaGVkJyk7dGhpcy5f bG9nVXNlckV2ZW50KCdmbHlvdXQnLCdzaG93Jyk7dGhpcy5fb3BlbkRpYWxvZyhh KTt9fSxfaGlnaGxpZ2h0RGlhbG9nU2Nyb2xsYmFyOmZ1bmN0aW9uKGEpe3ZhciBi PURPTS5zY3J5KGEuZ2V0Q29udGVudCgpLCcudWlTY3JvbGxhYmxlQXJlYScpWzBd O2ImJlNjcm9sbGFibGVBcmVhLnBva2UoYik7fSxfb3BlblN0b3J5RXh0ZXJuYWxs eTpmdW5jdGlvbihkLGV2ZW50KXt2YXIgYT1kLmdldEF0dHJpYnV0ZSgnZGF0YS1o cmVmJyk7aWYoIWF8fGE9PScjJylyZXR1cm47dmFyIGM9ZC5nZXRBdHRyaWJ1dGUo J2RhdGEtc3RvcnktcmVsJyk7c3dpdGNoKGMpe2Nhc2UgJ3RoZWF0ZXInOnRoaXMu X2RlYWN0aXZhdGVBbmRDbGVhclN0b3J5KCk7Qm9vdGxvYWRlci5sb2FkQ29tcG9u ZW50cygnUGhvdG9Tbm93Ym94JyxmdW5jdGlvbigpe1Bob3RvU25vd2JveC5ib290 c3RyYXAoYSxkKTt9KTtyZXR1cm47Y2FzZSAnYXN5bmMnOnRoaXMuX2RlYWN0aXZh dGVBbmRDbGVhclN0b3J5KCk7Qm9vdGxvYWRlci5sb2FkQ29tcG9uZW50cygnYXN5 bmMnLGZ1bmN0aW9uKCl7QXN5bmNSZXF1ZXN0LmJvb3RzdHJhcChhLGQpO30pO3Jl dHVybjt9dmFyIGU9ZC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGFyZ2V0Jyk7dmFyIGI9 KGV2ZW50LndoaWNoIT0xfHxldmVudC5nZXRNb2RpZmllcnMoKS5hbnl8fGU9PSdf YmxhbmsnKTtiP3dpbmRvdy5vcGVuKGEsJ19ibGFuaycpOmdvVVJJKGEpO30sX2Rl YWN0aXZhdGVBbmRDbGVhclN0b3J5OmZ1bmN0aW9uKCl7dGhpcy5fY2xlYXJIb3Zl clRpbWVvdXRzKCk7dGhpcy5fZGVhY3RpdmF0ZVN0b3J5KCk7fSxfZm9jdXNTdG9y eTpmdW5jdGlvbihhKXtjbGVhclRpbWVvdXQodGhpcy5fc2Nyb2xsRGlzbWlzc2Fs KTt0aGlzLl9wcmV2ZW50U2Nyb2xsRGlzbWlzcz10cnVlO3RoaXMuX3Njcm9sbERp c21pc3NhbD10aGlzLl9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5fcHJldmVu dFNjcm9sbERpc21pc3M9ZmFsc2U7fS5iaW5kKHRoaXMpLDEwMCk7YS5mb2N1cygp O30sX3NlbGVjdFN0b3J5OmZ1bmN0aW9uKGEpe3RoaXMuX3NlbGVjdGVkU3Rvcnk9 YTtDU1MuYWRkQ2xhc3MoYSwndGlja2VyU3RvcnlTZWxlY3RlZCcpO0NTUy5hZGRD bGFzcyh0aGlzLl9yb290LCd0aWNrZXJDaGlsZFNlbGVjdGVkJyk7fSxfYWN0aXZh dGVTdG9yeTpmdW5jdGlvbihjLGIpe3RoaXMuX2NsZWFySG92ZXJUaW1lb3V0cygp O2lmKGM9PXRoaXMuX2FjdGl2ZVN0b3J5fHwhdGhpcy5fc3RvcnlDYW5PcGVuRGlh bG9nKGMpKXJldHVybjt0aGlzLl9kZWFjdGl2YXRlU3RvcnkoKTt0aGlzLl9mb2N1 c1N0b3J5KGMpO3RoaXMuX2FjdGl2ZVN0b3J5PWM7Q1NTLmFkZENsYXNzKGMsJ3Rp Y2tlclN0b3J5QWN0aXZlJyk7d2luZG93LlRvZ2dsZXImJlRvZ2dsZXIuaGlkZSgp O2lmKHRoaXMuX2xvZ0ZseW91dHMpe2I9Ynx8J3Vua25vd24nO25ldyBBc3luY1Np Z25hbCgnL2FqYXgvZmVlZC90aWNrZXIvZmx5b3V0LnBocCcse3NyYzpifSkuc2Vu ZCgpO312YXIgYT10aGlzLl9nZXRTdG9yeURpYWxvZyhjKTtpZihhKXt0aGlzLl9s b2dVc2VyRXZlbnQoJ2ZseW91dF9sb2FkdGltZScsJ3Nob3dfcHJlZmV0Y2hlZCcp O3RoaXMuX2xvZ1VzZXJFdmVudCgnZmx5b3V0Jywnc2hvdycpO3RoaXMuX29wZW5E aWFsb2coYSk7cmV0dXJuO31pZighKGMuaWQgaW4gdGhpcy5fZmV0Y2hlZFN0b3Jp ZXMpKXt0aGlzLl91YUN1clN0b3J5SURGZXRjaD1jLmlkO3RoaXMuX2xvZ1VzZXJF dmVudCgnZmx5b3V0JywnZmV0Y2gnKTt9dGhpcy5fZmV0Y2hTdG9yeShjKTt9LF9k ZWFjdGl2YXRlU3Rvcnk6ZnVuY3Rpb24oYSl7aWYodGhpcy5fYWN0aXZlU3Rvcnk9 PT10aGlzLl9kZWFjdGl2YXRpbmdTdG9yeSlyZXR1cm47dGhpcy5fZGVhY3RpdmF0 aW5nU3Rvcnk9dGhpcy5fYWN0aXZlU3Rvcnk7aWYodGhpcy5fZGlhbG9nKXt0aGlz Ll9kaWFsb2cuc2V0RmFkZU9uSGlkZShhPT09dHJ1ZSkuaGlkZSgpO3RoaXMuX2xv Z1VzZXJFdmVudCgnZmx5b3V0JywnY2xvc2UnKTt9aWYodGhpcy5fYWN0aXZlU3Rv cnkpe0NTUy5yZW1vdmVDbGFzcyh0aGlzLl9hY3RpdmVTdG9yeSwndGlja2VyU3Rv cnlBY3RpdmUnKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5fYWN0aXZlU3RvcnksJ3Rp Y2tlclN0b3J5U2VsZWN0ZWQnKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5fcm9vdCwn dGlja2VyQ2hpbGRTZWxlY3RlZCcpO310aGlzLl9kaWFsb2c9dGhpcy5fc2VsZWN0 ZWRTdG9yeT10aGlzLl9hY3RpdmVTdG9yeT1udWxsO3RoaXMuX2NsZWFudXBJbnB1 dEZvY3VzTGlzdGVuZXIoKTt0aGlzLl9jbGVhbnVwQ29udGVudFJlc2l6ZUxpc3Rl bmVyKCk7dGhpcy5fZGVhY3RpdmF0aW5nU3Rvcnk9bnVsbDtkb2N1bWVudC5hY3Rp dmVFbGVtZW50LmJsdXIoKTt9LF9sb2dVc2VyQWN0aW9uOmZ1bmN0aW9uKGEsYixl dmVudCl7dXNlcl9hY3Rpb24oYixhLGV2ZW50LCdGT1JDRScsbnVsbCk7fSxfbG9n VXNlckV2ZW50OmZ1bmN0aW9uKGEsZXZlbnQpe2lmKHRoaXMuX3VhW2FdKXRoaXMu X3VhW2FdLmFkZF9ldmVudChldmVudCk7fSxfZmV0Y2hTdG9yeTpmdW5jdGlvbihk KXtjbGVhclRpbWVvdXQodGhpcy5fZmV0Y2hUb2tlbik7dmFyIGM9W107dmFyIGE9 dGhpcy5fZ2V0SW5zZXJ0ZWRTdG9yaWVzKCk7dmFyIGI9YS5pbmRleE9mKGQpO1st MiwtMSwwLDEsMl0uZWFjaChmdW5jdGlvbihmKXt2YXIgZT1hW2IrZl07ZSYmYy5w dXNoKGUpO30sdGhpcyk7dGhpcy5fZmV0Y2hUb2tlbj1zZXRUaW1lb3V0KHRoaXMu X2ZldGNoU3Rvcmllcy5iaW5kKHRoaXMsYyksMTAwKTt9LF9mZXRjaFN0b3JpZXM6 ZnVuY3Rpb24oYyl7dmFyIGE9W107dmFyIGQ7dmFyIGI9ZnVuY3Rpb24oZSl7Y2xl YXJUaW1lb3V0KGQpO2MuZWFjaChmdW5jdGlvbihmKXtDU1MuY29uZGl0aW9uQ2xh c3MoZiwndGlja2VyU3RvcnlGZXRjaGluZycsZSk7fSk7fTtjPWMuZmlsdGVyKGZ1 bmN0aW9uKGYpe2lmKGYuaWQgaW4gdGhpcy5fZmV0Y2hlZFN0b3JpZXMpcmV0dXJu IGZhbHNlO3RoaXMuX2ZldGNoZWRTdG9yaWVzW2YuaWRdPXRydWU7dmFyIGU9dGhp cy5fZ2V0U3RvcnlEaWFsb2dFbmRwb2ludChmKTt2YXIgZz1VUkkoZSkuZ2V0UXVl cnlEYXRhKCk7aWYoIWV8fCFnKXJldHVybiBmYWxzZTtnLnVuaXFfaWQ9Zi5nZXRB dHRyaWJ1dGUoJ2lkJyk7Zy5yZWZlcnJlcj10aGlzLl90aWNrZXJTb3VyY2U7YS5w dXNoKGcpO3JldHVybiB0cnVlO30sdGhpcyk7aWYoIWEubGVuZ3RoKXJldHVybjtk PXRoaXMuX3NldFRpbWVvdXQoYi5jdXJyeSh0cnVlKSw1MDApO25ldyBBc3luY1Jl cXVlc3QoJy9hamF4L2ZlZWQvdGlja2VyL211bHRpX3N0b3J5Jykuc2V0RmluYWxs eUhhbmRsZXIoYi5jdXJyeShmYWxzZSkpLnNldEVycm9ySGFuZGxlcihiYWdvZmhv bGRpbmcpLnNldERhdGEoe3N0b3JpZXM6YX0pLnNldEFsbG93Q3Jvc3NQYWdlVHJh bnNpdGlvbih0aGlzLl90aWNrZXJJblNpZGViYXJNb2RlKS5zZW5kKCk7fSxfdGlj a2VyRGVDbGlja2VyOmZ1bmN0aW9uKGV2ZW50KXt2YXIgZj1ldmVudC5nZXRUYXJn ZXQoKTt2YXIgZD1QYXJlbnQuYnlUYWcoZiwnYScpO3ZhciBlPXRoaXMuX2dldFN0 b3J5RnJvbU5vZGUoZik7dmFyIGI9dGhpcy5fZ2V0QnV0dG9uRnJvbU5vZGUoZik7 aWYoZSYmZCYmIWImJkNTUy5oYXNDbGFzcyhlLCd0aWNrZXJTdG9yeUNsaWNrYWJs ZScpJiYhQ1NTLmhhc0NsYXNzKGQsJ3RpY2tlclN0b3J5QWxsb3dDbGljaycpJiYh dGhpcy5fc3RvcnlJc0hpZGRlbihlKSl7ZC5zZXRBdHRyaWJ1dGUoJ3JlbCcsJ2ln bm9yZScpO2QucmVtb3ZlQXR0cmlidXRlKCdvbmNsaWNrJyk7ZC5yZW1vdmVBdHRy aWJ1dGUoJ2FqYXhpZnknKTtkLnJlbW92ZUF0dHJpYnV0ZSgnaHJlZicpO312YXIg Yz0oZXZlbnQuYnV0dG9uPT0yKTt2YXIgYT10aGlzLl9nZXRBY3Rpb25CdXR0b25G cm9tU3RvcnkoZSk7aWYoIWMmJmEpdGhpcy5fc2V0Q2xpY2tlZFN0b3J5KGUpO30s X2hhbmRsZU1vdXNldXA6ZnVuY3Rpb24oZXZlbnQpe3RoaXMuX2NsZWFyQ2xpY2tl ZFN0b3J5KCk7fSxfc2V0Q2xpY2tlZFN0b3J5OmZ1bmN0aW9uKGEpe3RoaXMuX2Ns ZWFyQ2xpY2tlZFN0b3J5KCk7Q1NTLmFkZENsYXNzKGEsJ3RpY2tlclN0b3J5Q2xp Y2tlZCcpO3RoaXMuX2NsaWNrZWRTdG9yeT1hO30sX2NsZWFyQ2xpY2tlZFN0b3J5 OmZ1bmN0aW9uKCl7aWYodGhpcy5fY2xpY2tlZFN0b3J5KXtDU1MucmVtb3ZlQ2xh c3ModGhpcy5fY2xpY2tlZFN0b3J5LCd0aWNrZXJTdG9yeUNsaWNrZWQnKTt0aGlz Ll9jbGlja2VkU3Rvcnk9bnVsbDt9fSxfaW5pdEluZmluaXRlU2Nyb2xsTGlzdGVu ZXI6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLl9nZXRJbnNlcnRlZFN0b3JpZXMoKTt2 YXIgYT1NYXRoLm1heCgwLGIubGVuZ3RoLXRoaXMuX2F1dG9sb2FkU3RvcnlJbmRl eCk7dGhpcy5faW5maW5pdGVTY3JvbGxTdG9yeT1iW2FdO3RoaXMuX2NoZWNrSW5m aW5pdGVTY3JvbGwoKTt9LF9jaGVja0luZmluaXRlU2Nyb2xsOmZ1bmN0aW9uKCl7 aWYodGhpcy5faW5maW5pdGVTY3JvbGxTdG9yeSl7dmFyIGI9VmVjdG9yMi5nZXRF bGVtZW50UG9zaXRpb24odGhpcy5faW5maW5pdGVTY3JvbGxTdG9yeSkueTt2YXIg ZT1WZWN0b3IyLmdldEVsZW1lbnRQb3NpdGlvbih0aGlzLl9jb250YWluZXIpLnkr VmVjdG9yMi5nZXRFbGVtZW50RGltZW5zaW9ucyh0aGlzLl9jb250YWluZXIpLnk7 aWYoYjxlKXt2YXIgYz1ET00uc2NyeSh0aGlzLl9yb290LCcudGlja2VyTW9yZVBh Z2VyIGEnKVswXTtpZihjKXt2YXIgZD1QYXJlbnQuYnlDbGFzcyhjLCdzdGF0X2Vs ZW0nKXx8Yzt2YXIgYT1uZXcgQXN5bmNSZXF1ZXN0KGMuZ2V0QXR0cmlidXRlKCdh amF4aWZ5JykpLnNldFJlYWRPbmx5KHRydWUpLnNldFJlbGF0aXZlVG8oYykuc2V0 U3RhdHVzRWxlbWVudChkKS5zZXRBbGxvd0Nyb3NzUGFnZVRyYW5zaXRpb24odHJ1 ZSkuc2VuZCgpO3RoaXMuX2xvZ1VzZXJFdmVudCgnc3RyZWFtJywnc2Nyb2xsJyk7 fXRoaXMuX2luZmluaXRlU2Nyb2xsU3Rvcnk9bnVsbDt0aGlzLl9hdXRvbG9hZFN0 b3J5SW5kZXg9NTt9fX0sX3NldEZpeGVkOmZ1bmN0aW9uKGIpe2lmKCF0aGlzLl9z ZWxlY3RlZFN0b3J5KXJldHVybjt2YXIgYT10aGlzLl9nZXRTdG9yeURpYWxvZyh0 aGlzLl9zZWxlY3RlZFN0b3J5KTtpZihhKXthLnNldEZpeGVkKGIpO2EudXBkYXRl UG9zaXRpb24oKTt9fSxfc2V0VGltZW91dDpmdW5jdGlvbihiLGEpe3JldHVybiBz ZXRUaW1lb3V0KGIsYSwhdGhpcy5fdGlja2VySW5TaWRlYmFyTW9kZSk7fSxfc2Ny b2xsRGlhbG9nVG9Cb3R0b206ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9kaWFsb2cm JnRoaXMuX2RpYWxvZy5nZXRDb250ZW50KCk7dmFyIGM9YSYmRE9NLnNjcnkoYSwn LnVpU2Nyb2xsYWJsZUFyZWFXcmFwJylbMF07dmFyIGI9YyYmU2Nyb2xsYWJsZUFy ZWEuZ2V0SW5zdGFuY2UoYyk7YiYmYi5zY3JvbGxUb0JvdHRvbSgpO30sX29wZW5E aWFsb2c6ZnVuY3Rpb24oYSl7dGhpcy5fZGlhbG9nPWEuc2hvdygpO3RoaXMuX3Vw ZGF0ZURpYWxvZ1Bvc2l0aW9uKCk7dGhpcy5fd3JpdGVTd2ZGcmFtZShhKTt0aGlz Ll9pbml0Q29tbWVudEZvY3VzTGlzdGVuZXIuYmluZCh0aGlzKS5kZWZlcigpO3Ro aXMuX2luaXRDb250ZW50UmVzaXplTGlzdGVuZXIuYmluZCh0aGlzKS5kZWZlcigp O3RoaXMuX3N0dXBpZElFN1ZpZGVvUmVzaXplSGFjayhhKTt9LF9zdHVwaWRJRTdW aWRlb1Jlc2l6ZUhhY2s6ZnVuY3Rpb24oYSl7aWYodWEuaWUoKT09PTcpe3ZhciBi PURPTS5zY3J5KGEuZ2V0Q29udGVudCgpLCcudWlWaWRlb1RodW1iIC5pbWcnKTti LmVhY2goZnVuY3Rpb24oYyl7Q1NTLnNldFN0eWxlKGMsJ3dpZHRoJywnJyk7fSk7 fX0sX3VwZGF0ZURpYWxvZ1Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5f dGlja2VySW5TaWRlYmFyTW9kZXx8ISFQYXJlbnQuYnlDbGFzcyh0aGlzLl9yb290 LCdmaXhlZF9lbGVtJyk7dGhpcy5fZGlhbG9nLnNldEZpeGVkKGEpO3RoaXMuX2Fk anVzdEZseW91dENvbnRlbnRIZWlnaHQoKTt0aGlzLl9kaWFsb2cudXBkYXRlUG9z aXRpb24oKTt9LF93cml0ZVN3ZkZyYW1lOmZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMu X2RpYWxvZyYmdGhpcy5fZGlhbG9nLmdldENvbnRlbnQoKTt2YXIgZT1ET00uc2Ny eShhLCcuc3dmT2JqZWN0JylbMF07aWYoIWUpcmV0dXJuO3ZhciBkPWUuZ2V0QXR0 cmlidXRlKCdkYXRhLXN3ZmlkJyk7aWYoZCYmd2luZG93W2RdKXt2YXIgYz13aW5k b3dbZF07Yy53cml0ZShlKTt9fSxfaW5pdENvbW1lbnRGb2N1c0xpc3RlbmVyOmZ1 bmN0aW9uKCl7dmFyIGE9dGhpcy5fZGlhbG9nJiZ0aGlzLl9kaWFsb2cuZ2V0Q29u dGVudCgpO3ZhciBiPWEmJkRPTS5zY3J5KGEsJy50aWNrZXJEaWFsb2dGb290ZXIg dGV4dGFyZWEnKVswXTtpZighYilyZXR1cm47dGhpcy5fbGlzdGVuZXJzLmlucHV0 Rm9jdXM9RXZlbnQubGlzdGVuKGIsJ2ZvY3VzJyx0aGlzLl9zY3JvbGxEaWFsb2dU b0JvdHRvbS5iaW5kKHRoaXMpKTt9LF9jbGVhbnVwSW5wdXRGb2N1c0xpc3RlbmVy OmZ1bmN0aW9uKCl7aWYodGhpcy5fbGlzdGVuZXJzLmlucHV0Rm9jdXMpe3RoaXMu X2xpc3RlbmVycy5pbnB1dEZvY3VzLnJlbW92ZSgpO3RoaXMuX2xpc3RlbmVycy5p bnB1dEZvY3VzPW51bGw7fX0sX2luaXRDb250ZW50UmVzaXplTGlzdGVuZXI6ZnVu Y3Rpb24oKXt2YXIgYT10aGlzLl9kaWFsb2cmJnRoaXMuX2RpYWxvZy5nZXRDb250 ZW50KCk7aWYoIWEpcmV0dXJuO3RoaXMuX2xpc3RlbmVycy5jb250ZW50UmVzaXpl PUV2ZW50Lmxpc3RlbihhLCdjbGljaycsZnVuY3Rpb24oKXt0aGlzLl9kaWFsb2cu dXBkYXRlUG9zaXRpb24uYmluZCh0aGlzLl9kaWFsb2cpLmRlZmVyKCk7fS5iaW5k KHRoaXMpKTt9LF9jbGVhbnVwQ29udGVudFJlc2l6ZUxpc3RlbmVyOmZ1bmN0aW9u KCl7aWYodGhpcy5fbGlzdGVuZXJzLmNvbnRlbnRSZXNpemUpe3RoaXMuX2xpc3Rl bmVycy5jb250ZW50UmVzaXplLnJlbW92ZSgpO3RoaXMuX2xpc3RlbmVycy5jb250 ZW50UmVzaXplPW51bGw7fX0sX2FkanVzdEZseW91dENvbnRlbnRIZWlnaHQ6ZnVu Y3Rpb24oKXt2YXIgZT10aGlzLl9kaWFsb2cmJnRoaXMuX2RpYWxvZy5nZXRDb250 ZW50KCk7dmFyIGk9ZSYmRE9NLnNjcnkoZSwnLnVpU2Nyb2xsYWJsZUFyZWFXcmFw JylbMF07aWYoIWkpcmV0dXJuO3ZhciBqPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVu c2lvbnMoaSk7dmFyIGQ9VmVjdG9yMi5nZXRFbGVtZW50UG9zaXRpb24oaSk7dmFy IGw9RE9NLnNjcnkoaSwnLnVpVWZpIC51aVVmaUNvbW1lbnQnKTt2YXIgZj1WZWN0 b3IyLmdldFZpZXdwb3J0RGltZW5zaW9ucygpLnktdGhpcy5GTFlPVVRfVklFV1BP UlRfUEFERElORzt2YXIgaD1NYXRoLm1pbih0aGlzLkZMWU9VVF9NQVhfSEVJR0hU LGYpO3ZhciBrPWgtdGhpcy5GTFlPVVRfVEFSR0VUX0hFSUdIVF9PRkZTRVQ7Zm9y KHZhciBnPTA7ZzxsLmxlbmd0aDtnKyspe3ZhciBhPWxbZ107dmFyIGM9VmVjdG9y Mi5nZXRFbGVtZW50UG9zaXRpb24oYSk7dmFyIGI9Yy55LWQueTtpZihNYXRoLmFi cyhiLWspPD10aGlzLkZMWU9VVF9PRkZTRVRfVEhSRVNIT0xEKXtrPWIrdGhpcy5G TFlPVVRfQ09NTUVOVF9PRkZTRVQ7YnJlYWs7fX1pZihqLnk+ayl7Q1NTLnNldFN0 eWxlKGksJ2hlaWdodCcsaysncHgnKTtDU1Muc2V0U3R5bGUoaSwnbWF4LWhlaWdo dCcsbnVsbCk7fWVsc2V7Q1NTLnNldFN0eWxlKGksJ21heC1oZWlnaHQnLGgrJ3B4 Jyk7Q1NTLnNldFN0eWxlKGksJ2hlaWdodCcsbnVsbCk7fX0sX2luaXRPYmplY3RJ RHM6ZnVuY3Rpb24oKXtzdG9yaWVzPXRoaXMuX2dldEFsbFN0b3JpZXMoKTtmb3Io dmFyIGI9MDtiPHN0b3JpZXMubGVuZ3RoOysrYil7dmFyIGE9c3Rvcmllc1tiXS5n ZXRBdHRyaWJ1dGUoJ2RhdGEtc3Rvcnkta2V5Jyk7YSYmKHRoaXMuX29iamVjdElE c1thXT10cnVlKTt9fSxfaGFuZGxlQ2hhdE9wZW5lZDpmdW5jdGlvbigpe3RoaXMu X2RlYWN0aXZhdGVTdG9yeSh0cnVlKTt9LF9oYW5kbGVDaGFubmVsQ29ubmVjdGlv bjpmdW5jdGlvbigpe3RoaXMuX2NoZWNrQ2hhbm5lbENvbm5lY3Rpb24oKTt9LF9k ZWJ1ZzpmdW5jdGlvbihhKXt0aGlzLl90aWNrZXJEZWJ1ZyYmY29uc29sZS5sb2co J3RpY2tlcjogJyxhKTt9LGdldE5ld2VzdDpmdW5jdGlvbigpe3JldHVybiB0aGlz Ll9uZXdlc3Q7fX07CmZ1bmN0aW9uIEhvbWVBZEZpcnN0UmlnaHRDb2x1bW5Db250 cm9sbGVyKCl7fUhvbWVBZEZpcnN0UmlnaHRDb2x1bW5Db250cm9sbGVyLnByb3Rv dHlwZT17aW5pdDpmdW5jdGlvbihhKXtjb3B5X3Byb3BlcnRpZXModGhpcyx7X2Vu YWJsZVNpZGViYXI6YS5lbmFibGVTaWRlYmFyLF90aWNrZXJIZWlnaHRPZmZzZXQ6 MjAwLGNvbnRlbnRDb2w6JCgnY29udGVudENvbCcpLGJsdWVCYXI6JCgnYmx1ZUJh cicpLF90aWNrZXJNYXhIZWlnaHQ6KGEudGlja2VyTWF4SGVpZ2h0fHw1MDApLF9s aXN0ZW5lcnM6W10sX3N1YnNjcmlwdGlvbnM6W119KTt0aGlzLl90b3BPZmZzZXQ9 MDt0aGlzLlBBRERJTkdfVElDS0VSX1RPX1RPUD01O3RoaXMuUEFERElOR19SSENf VE9fQk9UVE9NPTYwO3RoaXMuX3NpZGViYXJJc0hpZGRlbj10cnVlO3RoaXMuX2xp c3RlbmVycy5wdXNoKEV2ZW50Lmxpc3Rlbih3aW5kb3csJ3Jlc2l6ZScsdGhpcy5o YW5kbGVSZXNpemUuYmluZCh0aGlzKSkpO3RoaXMuX2JsdWVCYXJIZWlnaHQ9VmVj dG9yMi5nZXRFbGVtZW50RGltZW5zaW9ucyh0aGlzLmJsdWVCYXIpLnk7dGhpcy5y ZWxvYWRSaWdodENvbCgpO3RoaXMuX2luaXRTdWJzY3JpcHRpb25zKCk7b251bmxv YWRSZWdpc3Rlcih0aGlzLmNsZWFudXAuYmluZCh0aGlzKSk7dGhpcy5fbGlzdGVu ZXJzLnB1c2goRXZlbnQubGlzdGVuKHdpbmRvdywnc2Nyb2xsJyx0aGlzLl9oYW5k bGVTY3JvbGwuYmluZCh0aGlzKSkpO2lmKCFDU1MuaGFzQ2xhc3MoZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50LCdzaWRlYmFyTW9kZScpKXt0aGlzLl9vblNpZGViYXJI aWRlKCk7fWVsc2UgaWYodGhpcy5fZW5hYmxlU2lkZWJhcil0aGlzLl9vblNpZGVi YXJTaG93KCk7dGhpcy5oYW5kbGVSZXNpemUoKTt9LF9pbml0U3Vic2NyaXB0aW9u czpmdW5jdGlvbigpe3RoaXMuX3N1YnNjcmlwdGlvbnM9W0FyYml0ZXIuc3Vic2Ny aWJlKCdUaWNrZXIvc3Rvcmllc0luc2VydGVkJyx0aGlzLmhhbmRsZVJlc2l6ZS5i aW5kKHRoaXMpKSxBcmJpdGVyLnN1YnNjcmliZSgnY29uY2llcmdlL2xvYWQnLHRo aXMuaGFuZGxlUmVzaXplLmJpbmQodGhpcykpLEFyYml0ZXIuc3Vic2NyaWJlKFVJ SW50ZW50aW9uYWxTdHJlYW1NZXNzYWdlLklOU0VSVF9TVE9SSUVTLHRoaXMuaGFu ZGxlUmVzaXplLmJpbmQodGhpcykpXTtpZih0aGlzLl9lbmFibGVTaWRlYmFyKXt0 aGlzLl9zdWJzY3JpcHRpb25zLnB1c2goQXJiaXRlci5zdWJzY3JpYmUoJ3NpZGVi YXIvaGlkZScsdGhpcy5fb25TaWRlYmFySGlkZS5iaW5kKHRoaXMpKSk7dGhpcy5f c3Vic2NyaXB0aW9ucy5wdXNoKEFyYml0ZXIuc3Vic2NyaWJlKCdzaWRlYmFyL3No b3cnLHRoaXMuX29uU2lkZWJhclNob3cuYmluZCh0aGlzKSkpO319LF9vbk5hdkhh bmRsZXI6ZnVuY3Rpb24oYyxhKXt2YXIgYj1hLnBhcmFtcy5rZXk7aWYoYiE9J2xm JyYmYiE9J2gnKXRoaXMuY2xlYW51cCgpO30scmVsb2FkUmlnaHRDb2w6ZnVuY3Rp b24oKXt0aGlzLmZpeGVkU2Nyb2xsaW5nQ29udGFpbmVyPWdlKCdmaXhlZF9zY3Jv bGxpbmdfY29udGFpbmVyJyk7dGhpcy5maXhlZFNjcm9sbGluZ1dyYXBwZXI9RE9N LnNjcnkodGhpcy5maXhlZFNjcm9sbGluZ0NvbnRhaW5lciwnLmZpeGVkX3Njcm9s bGluZ193cmFwcGVyJylbMF07dGhpcy50aWNrZXJQYWdlbGV0PWdlKCdwYWdlbGV0 X3JoY190aWNrZXInKTt0aGlzLnRpY2tlckNvbnRhaW5lcj1ET00uc2NyeSh0aGlz LnRpY2tlclBhZ2VsZXQsJy50aWNrZXJfY29udGFpbmVyJylbMF07dGhpcy50aWNr ZXJTdHJlYW09RE9NLnNjcnkodGhpcy50aWNrZXJQYWdlbGV0LCcudGlja2VyX3N0 cmVhbScpWzBdO3JldHVybiB0aGlzLnRpY2tlckNvbnRhaW5lciYmdGhpcy50aWNr ZXJTdHJlYW07fSxjbGVhbnVwOmZ1bmN0aW9uKCl7dGhpcy5fc3Vic2NyaXB0aW9u cy5lYWNoKEFyYml0ZXIudW5zdWJzY3JpYmUpO3RoaXMuX3N1YnNjcmlwdGlvbnM9 W107dGhpcy5fbGlzdGVuZXJzLmVhY2goZnVuY3Rpb24oYSl7YS5yZW1vdmUoKTt9 KTt0aGlzLl9saXN0ZW5lcnM9W107fSxfaGFuZGxlU2Nyb2xsOmZ1bmN0aW9uKCl7 aWYoIXRoaXMuX3NpZGViYXJJc0hpZGRlbnx8IXRoaXMudGlja2VyU3RyZWFtKXJl dHVybjt0aGlzLl90b3BPZmZzZXQ9dGhpcy5QQURESU5HX1RJQ0tFUl9UT19UT1Ar dGhpcy5fYmx1ZUJhckhlaWdodDt2YXIgYj1DU1MuaGFzQ2xhc3MoZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50LCd0aW55Vmlld3BvcnQnKTt2YXIgYz1WZWN0b3IyLmdl dEVsZW1lbnRQb3NpdGlvbih0aGlzLmZpeGVkU2Nyb2xsaW5nQ29udGFpbmVyLCd2 aWV3cG9ydCcpLnk7dmFyIGE9IWImJmM8dGhpcy5fdG9wT2Zmc2V0O2lmKGEhPT1D U1MuaGFzQ2xhc3ModGhpcy5maXhlZFNjcm9sbGluZ1dyYXBwZXIsJ2ZpeGVkX2Vs ZW0nKSl0aGlzLl9zZXRGaXhlZFJpZ2h0Q29sKGEpO30sX3NldEZpeGVkUmlnaHRD b2w6ZnVuY3Rpb24oYSl7dmFyIGM9YT90aGlzLl90b3BPZmZzZXQrJ3B4JzonJztD U1Muc2V0U3R5bGUodGhpcy5maXhlZFNjcm9sbGluZ1dyYXBwZXIsJ3RvcCcsYyk7 Q1NTLmNvbmRpdGlvbkNsYXNzKHRoaXMuZml4ZWRTY3JvbGxpbmdXcmFwcGVyLCdm aXhlZF9lbGVtJyxhKTt2YXIgYj1hPydUaWNrZXIvZml4ZWQnOidUaWNrZXIvdW5m aXhlZCc7QXJiaXRlci5pbmZvcm0oYik7fSxoYW5kbGVSZXNpemU6ZnVuY3Rpb24o KXtpZighdGhpcy5fc2lkZWJhcklzSGlkZGVufHwhdGhpcy50aWNrZXJTdHJlYW18 fENTUy5oYXNDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJ3RpbnlWaWV3 cG9ydCcpKXJldHVybjt0aGlzLl9oYW5kbGVTY3JvbGwoKTt2YXIgZT1WZWN0b3Iy LmdldFZpZXdwb3J0RGltZW5zaW9ucygpLnk7dmFyIGI9VmVjdG9yMi5nZXRFbGVt ZW50RGltZW5zaW9ucyh0aGlzLmZpeGVkU2Nyb2xsaW5nV3JhcHBlcikueS1WZWN0 b3IyLmdldEVsZW1lbnREaW1lbnNpb25zKHRoaXMudGlja2VyQ29udGFpbmVyKS55 O3ZhciBhPWUtdGhpcy5fdG9wT2Zmc2V0LWItdGhpcy5QQURESU5HX1JIQ19UT19C T1RUT007dmFyIGQ9VmVjdG9yMi5nZXRFbGVtZW50RGltZW5zaW9ucyh0aGlzLnRp Y2tlclN0cmVhbSkueTt2YXIgYz1NYXRoLm1pbihhLGQsdGhpcy5fdGlja2VyTWF4 SGVpZ2h0KTtDU1Muc2V0U3R5bGUodGhpcy50aWNrZXJDb250YWluZXIsJ2hlaWdo dCcsYysncHgnKTt9LF9vblNpZGViYXJIaWRlOmZ1bmN0aW9uKCl7dGhpcy5fc2lk ZWJhcklzSGlkZGVuPXRydWU7dmFyIGE9ZnVuY3Rpb24oKXtpZih0aGlzLnJlbG9h ZFJpZ2h0Q29sKCkpdGhpcy5oYW5kbGVSZXNpemUoKTt9O1RpY2tlckNvbnRyb2xs ZXIuc2hvdyh0aGlzLnRpY2tlclBhZ2VsZXQsYS5iaW5kKHRoaXMpKTt9LF9vblNp ZGViYXJTaG93OmZ1bmN0aW9uKCl7dGhpcy5fc2lkZWJhcklzSGlkZGVuPWZhbHNl O3RoaXMuX3NldEZpeGVkUmlnaHRDb2woZmFsc2UpO1RpY2tlckNvbnRyb2xsZXIu aGlkZSh0aGlzLnRpY2tlclBhZ2VsZXQpO319OwpmdW5jdGlvbiBIb21lVGlja2Vy Rmlyc3RSaWdodENvbHVtbkNvbnRyb2xsZXIoKXt9SG9tZVRpY2tlckZpcnN0Umln aHRDb2x1bW5Db250cm9sbGVyLnByb3RvdHlwZT17X2lzRml4ZWQ6ZmFsc2UsX2Zv cmNlZFN0YXRpYzpmYWxzZSxfUEFERElOR19SSENfVE9fQk9UVE9NOjc1LF9yZWZy ZXNoT246ZmFsc2UsaW5pdDpmdW5jdGlvbihhKXtjb3B5X3Byb3BlcnRpZXModGhp cyx7X2Fkc1JlZnJlc2hJbnRlcnZhbDphLmFkc1JlZnJlc2hJbnRlcnZhbCxfYWRz UmVmcmVzaE9ubW92ZTphLmFkc1JlZnJlc2hPbm1vdmUsX2VuYWJsZVNpZGViYXI6 YS5lbmFibGVTaWRlYmFyLGNvbnRlbnRDb2w6JCgnY29udGVudENvbCcpLGJsdWVC YXI6JCgnYmx1ZUJhcicpLF90aWNrZXJNYXhIZWlnaHQ6KGEudGlja2VyTWF4SGVp Z2h0fHw0MjUpLF90aWNrZXJNaW5IZWlnaHQ6KGEudGlja2VyTWluSGVpZ2h0fHwy MjUpLF90aWNrZXJBYnNNaW5IZWlnaHQ6KGEudGlja2VyQWJzTWluSGVpZ2h0fHwx MjApLF9saXN0ZW5lcnM6W10sX3N1YnNjcmlwdGlvbnM6W119KTt0aGlzLl9saXN0 ZW5lcnMucHVzaChFdmVudC5saXN0ZW4od2luZG93LCdyZXNpemUnLHRocm90dGxl KHRoaXMuaGFuZGxlUmVzaXplLmJpbmQodGhpcykpKSk7dGhpcy5ibHVlQmFySGVp Z2h0PVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5ibHVlQmFyKS55 O3RoaXMucmVsb2FkUmlnaHRDb2woKTt0aGlzLl9pbml0U3Vic2NyaXB0aW9ucygp O29udW5sb2FkUmVnaXN0ZXIodGhpcy5jbGVhbnVwLmJpbmQodGhpcykpO3RoaXMu X2xpc3RlbmVycy5wdXNoKEV2ZW50Lmxpc3Rlbih3aW5kb3csJ3Njcm9sbCcsdGhy b3R0bGUodGhpcy5faGFuZGxlU2Nyb2xsLmJpbmQodGhpcykpKSk7aWYodGhpcy5f YWRzUmVmcmVzaE9ubW92ZSl0aGlzLl9saXN0ZW5lcnMucHVzaChFdmVudC5saXN0 ZW4od2luZG93LCdtb3VzZW1vdmUnLHRocm90dGxlKHRoaXMuX2hhbmRsZU1vdmUu YmluZCh0aGlzKSkpKTtpZighQ1NTLmhhc0NsYXNzKGRvY3VtZW50LmRvY3VtZW50 RWxlbWVudCwnc2lkZWJhck1vZGUnKSl7dGhpcy5fb25TaWRlYmFySGlkZSgpO31l bHNlIGlmKHRoaXMuX2VuYWJsZVNpZGViYXIpdGhpcy5fb25TaWRlYmFyU2hvdygp O3RoaXMuaGFuZGxlUmVzaXplKCk7dGhpcy5fbGFzdEFkTG9hZFRpbWU9RGF0ZS5u b3coKTt9LF9pbml0U3Vic2NyaXB0aW9uczpmdW5jdGlvbigpe3RoaXMuX3N1YnNj cmlwdGlvbnM9W0FyYml0ZXIuc3Vic2NyaWJlKCdUaWNrZXIvc3Rvcmllc0luc2Vy dGVkJyx0aGlzLmhhbmRsZVJlc2l6ZS5iaW5kKHRoaXMpKSxBcmJpdGVyLnN1YnNj cmliZSgnY29uY2llcmdlL2xvYWQnLHRoaXMuaGFuZGxlUmVzaXplLmJpbmQodGhp cykpLEFyYml0ZXIuc3Vic2NyaWJlKFVJSW50ZW50aW9uYWxTdHJlYW1NZXNzYWdl LklOU0VSVF9TVE9SSUVTLHRoaXMuaGFuZGxlUmVzaXplLmJpbmQodGhpcykpXTtp Zih0aGlzLl9lbmFibGVTaWRlYmFyKXt0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2go QXJiaXRlci5zdWJzY3JpYmUoJ3NpZGViYXIvaGlkZScsdGhpcy5fb25TaWRlYmFy SGlkZS5iaW5kKHRoaXMpKSk7dGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKEFyYml0 ZXIuc3Vic2NyaWJlKCdzaWRlYmFyL3Nob3cnLHRoaXMuX29uU2lkZWJhclNob3cu YmluZCh0aGlzKSkpO319LHJlbG9hZFJpZ2h0Q29sOmZ1bmN0aW9uKCl7dGhpcy5y aWdodENvbHVtbj1ET00uc2NyeShnZSgncmlnaHRDb2wnKSwnZGl2LmhvbWVfcmln aHRfY29sdW1uJylbMF07dGhpcy5yaWdodENvbHVtbldyYXBwZXI9RE9NLmZpbmQo dGhpcy5yaWdodENvbHVtbiwnZGl2LnJpZ2h0Q29sdW1uV3JhcHBlcicpO3RoaXMu ZWdvUGFnZWxldD1nZSgncGFnZWxldF9lZ29fcGFuZV93Jyk7aWYoIXRoaXMuZWdv UGFnZWxldCl0aGlzLmVnb1BhZ2VsZXQ9Z2UoJ3BhZ2VsZXRfZWdvX3BhbmVfbScp O3RoaXMuX3JlZnJlc2hPbj10aGlzLmNvbnRhaW5zTWFya2V0KCk7dGhpcy50aWNr ZXJQYWdlbGV0PWdlKCdwYWdlbGV0X3JoY190aWNrZXInKTt0aGlzLnRpY2tlckNv bnRhaW5lcj1ET00uc2NyeSh0aGlzLnRpY2tlclBhZ2VsZXQsJy50aWNrZXJfY29u dGFpbmVyJylbMF07dGhpcy50aWNrZXJTdHJlYW09RE9NLnNjcnkodGhpcy50aWNr ZXJQYWdlbGV0LCcudGlja2VyX3N0cmVhbScpWzBdO3JldHVybiB0aGlzLnRpY2tl ckNvbnRhaW5lciYmdGhpcy50aWNrZXJTdHJlYW07fSxjb250YWluc01hcmtldDpm dW5jdGlvbigpe2lmKHRoaXMuZWdvUGFnZWxldCl7dmFyIGE9RE9NLnNjcnkodGhp cy5lZ29QYWdlbGV0LCcuZmJNYXJrZXQnKTtyZXR1cm4gYS5sZW5ndGg+MDt9cmV0 dXJuIGZhbHNlO30sY2xlYW51cDpmdW5jdGlvbigpe3RoaXMuX3N1YnNjcmlwdGlv bnMuZWFjaChBcmJpdGVyLnVuc3Vic2NyaWJlKTt0aGlzLl9zdWJzY3JpcHRpb25z PVtdO3RoaXMuX2xpc3RlbmVycy5lYWNoKGZ1bmN0aW9uKGEpe2EucmVtb3ZlKCk7 fSk7dGhpcy5fbGlzdGVuZXJzPVtdO30sX2hhbmRsZVNjcm9sbDpmdW5jdGlvbigp e2lmKHRoaXMuX2ZvcmNlZFN0YXRpY3x8IXRoaXMudGlja2VyU3RyZWFtKXJldHVy bjt0aGlzLl90b3BPZmZzZXQ9dGhpcy5ibHVlQmFySGVpZ2h0K1ZlY3RvcjIuZ2V0 RWxlbWVudFBvc2l0aW9uKHRoaXMuYmx1ZUJhciwndmlld3BvcnQnKS55O3ZhciBi PXRoaXMuX3RvcE9mZnNldDt2YXIgYz1WZWN0b3IyLmdldEVsZW1lbnRQb3NpdGlv bih0aGlzLnJpZ2h0Q29sdW1uLCd2aWV3cG9ydCcpLnk7dmFyIGE9Yzw9YjtpZihh IT09dGhpcy5faXNGaXhlZCl0aGlzLl9zZXRGaXhlZChhKTt0aGlzLl9yZWxvYWRB ZHNJZk5lZWRlZCgpO30sX2hhbmRsZU1vdmU6ZnVuY3Rpb24oKXtpZih0aGlzLl9h ZHNSZWZyZXNoT25tb3ZlKXRoaXMuX3JlbG9hZEFkc0lmTmVlZGVkKCk7fSxfcmVs b2FkQWRzSWZOZWVkZWQ6ZnVuY3Rpb24oKXt2YXIgYT1EYXRlLm5vdygpO2lmKHRo aXMuX3JlZnJlc2hPbiYmdGhpcy5fYWRzUmVmcmVzaEludGVydmFsPjAmJmEtdGhp cy5fbGFzdEFkTG9hZFRpbWU+PXRoaXMuX2Fkc1JlZnJlc2hJbnRlcnZhbCl7dGhp cy5fbGFzdEFkTG9hZFRpbWU9YTtVSVBhZ2VsZXQubG9hZEZyb21FbmRwb2ludCgn V2ViRWdvUGFuZScsdGhpcy5lZ29QYWdlbGV0LHtwaWQ6MjcsZGF0YTp7b3JnYW5p Y19vbmx5OmZhbHNlLGFkc19vbmx5OmZhbHNlLGlzX3JlZnJlc2g6dHJ1ZX19LHtj cm9zc1BhZ2U6ZmFsc2V9KTt9fSxfc2V0Rml4ZWQ6ZnVuY3Rpb24oYSl7dGhpcy5f aXNGaXhlZD1hO3ZhciBjPWE/dGhpcy5fdG9wT2Zmc2V0KydweCc6Jyc7Q1NTLnNl dFN0eWxlKHRoaXMucmlnaHRDb2x1bW5XcmFwcGVyLCd0b3AnLGMpO0NTUy5jb25k aXRpb25DbGFzcyh0aGlzLnJpZ2h0Q29sdW1uV3JhcHBlciwnZml4ZWRfZWxlbScs YSk7dmFyIGI9YT8nVGlja2VyL2ZpeGVkJzonVGlja2VyL3VuZml4ZWQnO0FyYml0 ZXIuaW5mb3JtKGIpO30saGFuZGxlUmVzaXplOmZ1bmN0aW9uKCl7aWYoIXRoaXMu X3NpZGViYXJJc0hpZGRlbnx8IXRoaXMudGlja2VyU3RyZWFtfHxDU1MuaGFzQ2xh c3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCd0aW55Vmlld3BvcnQnKSlyZXR1 cm47dGhpcy5faGFuZGxlU2Nyb2xsKCk7dmFyIGg9VmVjdG9yMi5nZXRWaWV3cG9y dERpbWVuc2lvbnMoKS55O3ZhciBjPTYxO3ZhciBmPVZlY3RvcjIuZ2V0RWxlbWVu dERpbWVuc2lvbnModGhpcy5yaWdodENvbHVtbldyYXBwZXIpLnktVmVjdG9yMi5n ZXRFbGVtZW50RGltZW5zaW9ucyh0aGlzLnRpY2tlckNvbnRhaW5lcikueTt2YXIg Zz1WZWN0b3IyLmdldEVsZW1lbnREaW1lbnNpb25zKHRoaXMudGlja2VyU3RyZWFt KS55O3ZhciBiPWgtZi10aGlzLl9QQURESU5HX1JIQ19UT19CT1RUT00tdGhpcy5f dG9wT2Zmc2V0LWM7dmFyIGE9dGhpcy5fdGlja2VyQWJzTWluSGVpZ2h0O3ZhciBl PXRoaXMuX3RpY2tlck1pbkhlaWdodDt0aGlzLl9mb3JjZWRTdGF0aWM9ZmFsc2U7 aWYoYjxhKXt0aGlzLl9mb3JjZWRTdGF0aWM9dHJ1ZTt0aGlzLl9zZXRGaXhlZChm YWxzZSk7Yj1hO31lbHNlIGlmKGI8ZSlpZihiPihlLWMpKXtiPWU7fWVsc2UgYis9 Yzt2YXIgZD1NYXRoLm1pbihiLGcsdGhpcy5fdGlja2VyTWF4SGVpZ2h0KTtDU1Mu c2V0U3R5bGUodGhpcy50aWNrZXJDb250YWluZXIsJ2hlaWdodCcsZCsncHgnKTt9 LF9vblNpZGViYXJIaWRlOmZ1bmN0aW9uKCl7dGhpcy5fc2lkZWJhcklzSGlkZGVu PXRydWU7dmFyIGE9ZnVuY3Rpb24oKXtpZih0aGlzLnJlbG9hZFJpZ2h0Q29sKCkp e3RoaXMuX2ZvcmNlZFN0YXRpYz1mYWxzZTt0aGlzLl9oYW5kbGVTY3JvbGwoKTt0 aGlzLmhhbmRsZVJlc2l6ZSgpO319O1RpY2tlckNvbnRyb2xsZXIuc2hvdyh0aGlz LnRpY2tlclBhZ2VsZXQsYS5iaW5kKHRoaXMpKTt9LF9vblNpZGViYXJTaG93OmZ1 bmN0aW9uKCl7dGhpcy5fc2lkZWJhcklzSGlkZGVuPWZhbHNlO3RoaXMuX2ZvcmNl ZFN0YXRpYz10cnVlO3RoaXMuX3NldEZpeGVkKGZhbHNlKTtUaWNrZXJDb250cm9s bGVyLmhpZGUodGhpcy50aWNrZXJQYWdlbGV0KTt9fTsKZnVuY3Rpb24gYWRqdXN0 SW1hZ2UoZSxnKXtpZighZyl7dmFyIGE9ZS5wYXJlbnROb2RlO3doaWxlKGEucGFy ZW50Tm9kZSYmKENTUy5nZXRTdHlsZShhLCdkaXNwbGF5JykhPSdibG9jayd8fGEu b2Zmc2V0V2lkdGg9PTApKWE9YS5wYXJlbnROb2RlO2c9YS5vZmZzZXRXaWR0aDt9 dmFyIGM9ZS5vZmZzZXRXaWR0aDtpZihjPT0wKXt2YXIgZD1lLm5leHRTaWJsaW5n LGY9ZS5wYXJlbnROb2RlO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7Yz1l Lm9mZnNldFdpZHRoO2lmKGQpe2YuaW5zZXJ0QmVmb3JlKGUsZCk7fWVsc2UgZi5h cHBlbmRDaGlsZChlKTt9aWYoYz5nKXRyeXtpZih1YS5pZSgpPDgpe3ZhciBpbWdf ZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO2ltZ19kaXYuc3R5bGUu ZmlsdGVyPSdwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJ bWFnZUxvYWRlcihzcmM9IicrZS5zcmMucmVwbGFjZSgnIicsJyUyMicpKyciLCBz aXppbmdNZXRob2Q9InNjYWxlIiknO2ltZ19kaXYuc3R5bGUud2lkdGg9ZysncHgn O2ltZ19kaXYuc3R5bGUuaGVpZ2h0PU1hdGguZmxvb3IoKChnL2Uub2Zmc2V0V2lk dGgpKmUub2Zmc2V0SGVpZ2h0KSkrJ3B4JztpZihlLnBhcmVudE5vZGUudGFnTmFt ZT09J0EnKWltZ19kaXYuc3R5bGUuY3Vyc29yPSdwb2ludGVyJztlLnBhcmVudE5v ZGUuaW5zZXJ0QmVmb3JlKGltZ19kaXYsZSk7ZS5wYXJlbnROb2RlLnJlbW92ZUNo aWxkKGUpO31lbHNlIHRocm93IDE7fWNhdGNoKGIpe2Uuc3R5bGUud2lkdGg9Zysn cHgnO31DU1MucmVtb3ZlQ2xhc3MoZSwnaW1nX2xvYWRpbmcnKTt9ZnVuY3Rpb24g aW1hZ2VDb25zdHJhaW5TaXplKGUsYixjLGQpe3ZhciBhPW5ldyBJbWFnZSgpO2Eu b25sb2FkPWZ1bmN0aW9uKCl7aWYoYS53aWR0aD4wJiZhLmhlaWdodD4wKXt2YXIg az1hLndpZHRoO3ZhciBoPWEuaGVpZ2h0O2lmKGs+Ynx8aD5jKXt2YXIgZz1jL2I7 dmFyIGY9aC9rO2lmKGY+Zyl7az1rKihjL2gpO2g9Yzt9ZWxzZXtoPWgqKGIvayk7 az1iO319dmFyIGo9Z2UoZCk7aWYoail7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnaW1nJyk7aS5zcmM9ZTtpLndpZHRoPWs7aS5oZWlnaHQ9aDtqLnBhcmVu dE5vZGUuaW5zZXJ0QmVmb3JlKGksaik7ai5wYXJlbnROb2RlLnJlbW92ZUNoaWxk KGopO319fTthLnNyYz1lO31mdW5jdGlvbiBpbWFnZV9oYXNfbG9hZGVkKGEpe2lm KGEubmF0dXJhbFdpZHRoIT09dW5kZWZpbmVkKXtyZXR1cm4gYS5jb21wbGV0ZSYm YS53aWR0aCE9MDt9ZWxzZSBpZihhLmhlaWdodD09MjAmJmEud2lkdGg9PTIwJiZh LmNvbXBsZXRlKXtyZXR1cm4gZmFsc2U7fWVsc2UgaWYoYS5jb21wbGV0ZT09PXVu ZGVmaW5lZCYmdWEuc2FmYXJpKCk8NTAwKXt2YXIgYj1uZXcgSW1hZ2UoKTtiLnNy Yz1hLnNyYztyZXR1cm4gYi5jb21wbGV0ZTt9cmV0dXJuIGEuY29tcGxldGU7fWZ1 bmN0aW9uIGltYWdlX2hhc19mYWlsZWQoYSl7aWYoKGEuY29tcGxldGU9PW51bGwm JmEud2lkdGg9PTIwJiZhLmhlaWdodD09MjApfHwoYS5taW1lVHlwZSE9bnVsbCYm YS5jb21wbGV0ZSYmYS5taW1lVHlwZT09JycpfHwoYS5uYXR1cmFsSGVpZ2h0IT1u dWxsJiZhLmNvbXBsZXRlJiZhLm5hdHVyYWxIZWlnaHQ9PTApKXJldHVybiB0cnVl O30KaWYoIXdpbmRvdy5KZXdlbFgpe3dpbmRvdy5KZXdlbFg9ZnVuY3Rpb24oKXt9 O2NvcHlfcHJvcGVydGllcyhKZXdlbFgse19pbnN0YW5jZXNCeU5hbWU6e30sX3Jl c2l6ZUxpc3RlbmVyOm51bGx9KTtDbGFzcy5taXhpbihKZXdlbFgsJ0FyYml0ZXIn LHtpbml0OmZ1bmN0aW9uKGIsYSl7dGhpcy5uYW1lPWEubmFtZTt0aGlzLnJvb3Q9 Yjt0aGlzLmNvdW50TmV3PTA7dGhpcy5pbml0aWFsQ291bnQ9MDt0aGlzLmRpc2Fi bGVNYXJrQWxsUmVhZD1hLmRpc2FibGVNYXJrQWxsUmVhZHx8ZmFsc2U7SmV3ZWxY Ll9pbnN0YW5jZXNCeU5hbWVbdGhpcy5uYW1lXT10aGlzO1RvZ2dsZXIubGlzdGVu KFsnc2hvdycsJ2hpZGUnXSx0aGlzLnJvb3QsZnVuY3Rpb24oZCl7dmFyIGM9ZD09 PSdzaG93JztjJiZ0aGlzLl9sb2dGaXJzdENsaWNrKCk7aWYoIXRoaXMuZGlzYWJs ZU1hcmtBbGxSZWFkKXt0aGlzLmhhc05ldygpJiZ0aGlzLm1hcmtTZWVuKCk7dGhp cy5yZXNldCgpO310aGlzLmluZm9ybShjPydvcGVuZWQnOidjbG9zZWQnKTtBcmJp dGVyLmluZm9ybShjPydsYXllcl9zaG93bic6J2xheWVyX2hpZGRlbicse3R5cGU6 J0pld2VsJ30pO30uYmluZCh0aGlzKSk7QXJiaXRlci5zdWJzY3JpYmUoJ2pld2Vs L2NvdW50LXVwZGF0ZWQnLGZ1bmN0aW9uKGMsZCl7ZC5qZXdlbD09dGhpcy5uYW1l JiZ0aGlzLnVwZGF0ZShkKTt9LmJpbmQodGhpcykpO0FyYml0ZXIuc3Vic2NyaWJl KCdqZXdlbC9jb3VudC1pbml0aWFsJyxmdW5jdGlvbihjLGQpe2QuamV3ZWw9PXRo aXMubmFtZSYmdGhpcy5zZXRJbml0aWFsKGQpO30uYmluZCh0aGlzKSk7QXJiaXRl ci5zdWJzY3JpYmUoJ2pld2VsL3Jlc2V0JyxmdW5jdGlvbihjLGQpe2QuamV3ZWw9 PXRoaXMubmFtZSYmdGhpcy5yZXNldCgpO30uYmluZCh0aGlzKSk7SmV3ZWxYLl9y ZXNpemVMaXN0ZW5lcj1KZXdlbFguX3Jlc2l6ZUxpc3RlbmVyfHwoZnVuY3Rpb24o KXt2YXIgYz1udWxsO3JldHVybiBFdmVudC5saXN0ZW4od2luZG93LCdyZXNpemUn LGZ1bmN0aW9uKGV2ZW50KXtjbGVhclRpbWVvdXQoYyk7Yz1BcmJpdGVyLmluZm9y bS5iaW5kKEFyYml0ZXIsJ2pld2VsL3Jlc2l6ZScsZXZlbnQpLmRlZmVyKDEwMCxm YWxzZSk7fSk7fSkoKTt9LGdldFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5y b290O30saGFzTmV3OmZ1bmN0aW9uKCl7cmV0dXJuIENTUy5oYXNDbGFzcyh0aGlz LnJvb3QsJ2hhc05ldycpO30saXNPcGVuOmZ1bmN0aW9uKCl7cmV0dXJuIENTUy5o YXNDbGFzcyh0aGlzLnJvb3QsJ29wZW5Ub2dnbGVyJyk7fSxyZXNldDpmdW5jdGlv bigpe0NTUy5yZW1vdmVDbGFzcyh0aGlzLnJvb3QsJ2hhc05ldycpO30sc2V0Q29u dGVudDpmdW5jdGlvbihiKXt2YXIgYT1ET00uZmluZCh0aGlzLnJvb3QsJ3VsLmpl d2VsSXRlbUxpc3QnKTtET00uc2V0Q29udGVudChhLEhUTUwoYikpO30sdXBkYXRl OmZ1bmN0aW9uKGIpe3RoaXMuY291bnROZXc9Yi5jb3VudDt2YXIgYT1ET00uZmlu ZCh0aGlzLnJvb3QsJ3NwYW4uamV3ZWxDb3VudCBzcGFuJyk7RE9NLnNldENvbnRl bnQoYSx0aGlzLmNvdW50TmV3KTt2YXIgYz1pc05hTih0aGlzLmNvdW50TmV3KXx8 dGhpcy5jb3VudE5ldz4wO0NTUy5jb25kaXRpb25DbGFzcyh0aGlzLnJvb3QsJ2hh c05ldycsYyk7dGhpcy5pbmZvcm0oJ3VwZGF0ZWQnLGIpO30sc2V0SW5pdGlhbDpm dW5jdGlvbihhKXt0aGlzLmluaXRpYWxDb3VudD1hO30sbWFya1NlZW46ZnVuY3Rp b24oKXtBcmJpdGVyLmluZm9ybSgnamV3ZWwvY291bnQtdXBkYXRlZCcse2pld2Vs OnRoaXMubmFtZSxjb3VudDowfSxBcmJpdGVyLkJFSEFWSU9SX1NUQVRFKTt0aGlz LmluZm9ybSgnbWFya2VkLXNlZW4nKTt9LF9sb2dGaXJzdENsaWNrOmZ1bmN0aW9u KCl7dGhpcy5fbG9nRmlyc3RDbGljaz1iYWdvZmhvbGRpbmc7cmVwb3J0X2RhdGEo J2pld2VsX2NsaWNrJyx7Z3Q6e2NvdW50OnRoaXMuY291bnROZXcsaW5pdGlhbDp0 aGlzLmluaXRpYWxDb3VudCxqZXdlbDp0aGlzLm5hbWV9fSk7fX0pO30KX19lKCJN ZXNzYWdpbmdFdmVudHMiLFsiYXJyYXktZXh0ZW5zaW9ucyIsImFyYml0ZXIiLCJj b3B5UHJvcGVydGllcyIsImlzRW1wdHkiXSxmdW5jdGlvbihnLGosaSxmKXtqKCdh cnJheS1leHRlbnNpb25zJyk7dmFyIGE9aignYXJiaXRlcicpO3ZhciBlPWooJ2Nv cHlQcm9wZXJ0aWVzJyk7dmFyIGg9aignaXNFbXB0eScpO3ZhciBkPXt9O3ZhciBi PW5ldyBhKCk7ZnVuY3Rpb24gYyhrKXtpZighaChkKSlyZXR1cm47Zm9yKHZhciBs IGluIGspYi5pbmZvcm0oJ2NvdW50LycrbCxrW2xdKTt9Yi5zdWJzY3JpYmUoJ21h cmstYXMtcmVhZCcsZnVuY3Rpb24oayxsKXsobC50aWRzfHxsLmNoYXRfaWRzfHxb XSkuZm9yRWFjaChmdW5jdGlvbihuKXtuPScnK247aWYoIShuIGluIGQpKXtkW25d PXRydWU7dmFyIG89ZnVuY3Rpb24oKXtiLnVuc3Vic2NyaWJlKHApO2NsZWFyVGlt ZW91dChtKTtkZWxldGUgZFtuXTt9O3ZhciBwPWIuc3Vic2NyaWJlKCdyZWFkJyxm dW5jdGlvbihxLHIpe2lmKChyLnRpZHN8fFtdKS5jb250YWlucyhuKXx8KHIuY2hh dF9pZHN8fFtdKS5jb250YWlucyhuKSlvKCk7fSk7dmFyIG09by5kZWZlcig2MDAw MCk7fX0pO30pO2Euc3Vic2NyaWJlKCdwcmVzZW5jZS9tZXNzYWdlOm1lc3NhZ2lu ZycsZnVuY3Rpb24oayxtKXt2YXIgbj1lKHt9LG0ub2JqKTt2YXIgZXZlbnQ9bi5l dmVudHx8Jyc7ZGVsZXRlIG4udHlwZTtkZWxldGUgbi5ldmVudDtiLmluZm9ybShl dmVudCxuKTtpZigndW5yZWFkX2NvdW50cycgaW4gbil7dmFyIGw9bi51bnJlYWRf Y291bnRzO2Moe3VucmVhZDpsLmluYm94LG90aGVyX3Vuc2VlbjpsLm90aGVyfSk7 fX0pO2Euc3Vic2NyaWJlKCdwcmVzZW5jZS9tZXNzYWdlOmluYm94JyxmdW5jdGlv bihrLGwpe3ZhciBtPWUobC5vYmopO2RlbGV0ZSBtLnR5cGU7YyhtKTt9KTtnLk1l c3NhZ2luZ0V2ZW50cz1pLmV4cG9ydHM9Yjt9LDMpOwpmdW5jdGlvbiBNZXNzYWdl c0pld2VsKCl7fU1lc3NhZ2VzSmV3ZWwucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9u KGMsYil7dGhpcy5qZXdlbD1jO3RoaXMuamV3ZWxGbHlvdXRDYXNlPWdlKCdqZXdl bEZseW91dENvbnRhaW5lcicpO3RoaXMuamV3ZWxGbHlvdXQ9Z2UoJ2ZiTWVzc2Fn ZXNGbHlvdXQnKTt0aGlzLm5ld0NvdW50U3Bhbj1nZSgnbmV3TWVzc2FnZUNvdW50 Jyk7dGhpcy5mb2xkZXI9Yjt2YXIgYT1nZSgnbWVzc2FnZXNNYXJrUmVhZEJ1dHRv bicpO2lmKGEpRXZlbnQubGlzdGVuKGEsJ2NsaWNrJyx0aGlzLl9tYXJrUmVhZC5z aGllbGQodGhpcyx0cnVlKSk7dGhpcy5qZXdlbC5zdWJzY3JpYmUoJ21hcmtlZC1z ZWVuJyx0aGlzLl9tYXJrU2VlbkNhbGxiYWNrLnNoaWVsZCh0aGlzKSk7dGhpcy5q ZXdlbC5zdWJzY3JpYmUoJ3VwZGF0ZWQnLHRoaXMuX3VwZGF0ZUNvdW50LmJpbmQo dGhpcykpO3RoaXMuamV3ZWwuc3Vic2NyaWJlKCdvcGVuZWQnLHRoaXMuX292ZXJm bG93SGFuZGxlci5iaW5kKHRoaXMpKTtBcmJpdGVyLnN1YnNjcmliZSgnamV3ZWwv cmVzaXplJyx0aGlzLl9vdmVyZmxvd0hhbmRsZXIuYmluZCh0aGlzKSk7QXJiaXRl ci5zdWJzY3JpYmUoJ2pld2VsL21lc3NhZ2VzL2ZldGNoZWQnLHRoaXMuX292ZXJm bG93SGFuZGxlci5iaW5kKHRoaXMpKTtNZXNzYWdpbmdFdmVudHMuc3Vic2NyaWJl KCdjb3VudC91bnJlYWQnLHRoaXMuX3VwZGF0ZUluYm94VW5yZWFkQ291bnQuYmlu ZCh0aGlzKSk7TWVzc2FnaW5nRXZlbnRzLnN1YnNjcmliZSgnY291bnQvdW5zZWVu Jyx0aGlzLl91cGRhdGVJbmJveFVuc2VlbkNvdW50LmJpbmQodGhpcykpO01lc3Nh Z2luZ0V2ZW50cy5zdWJzY3JpYmUoJ2NvdW50L290aGVyX3Vuc2VlbicsdGhpcy5f dXBkYXRlSW5ib3hPdGhlclVuc2VlbkNvdW50LmJpbmQodGhpcykpO30sX21hcmtS ZWFkOmZ1bmN0aW9uKGEsYil7QXJiaXRlci5pbmZvcm0oJ2pld2VsL2NvdW50LXVw ZGF0ZWQnLHtqZXdlbDonbWVzc2FnZXMnLGNvdW50OjB9KTt9LF9tYXJrU2VlbkNh bGxiYWNrOmZ1bmN0aW9uKGEsYil7TWVudWJhck1lc3NhZ2VDb250cm9sbGVyLmlu c3RhbmNlLm1hcmtTZWVuKHRoaXMuZm9sZGVyKTt9LF91cGRhdGVDb3VudDpmdW5j dGlvbihhLGIpe3RoaXMuY291bnROZXc9Yi5jb3VudDtDU1MuY29uZGl0aW9uQ2xh c3ModGhpcy5qZXdlbEZseW91dCwnYmVlcGVyVW5yZWFkJyx0aGlzLmNvdW50TmV3 PjApO0NTUy5jb25kaXRpb25DbGFzcyh0aGlzLmpld2VsRmx5b3V0Q2FzZSwnc2hv d01lc3NhZ2VzJyx0aGlzLmNvdW50TmV3PjApO2lmKHRoaXMubmV3Q291bnRTcGFu KXt2YXIgYz10aGlzLmNvdW50TmV3PT0xP190eCgie251bX0gWUVOXHUwMTMwIE1F U0FKIix7bnVtOnRoaXMuY291bnROZXd9KTpfdHgoIntudW19IFlFTlx1MDEzMCBN RVNBSiIse251bTp0aGlzLmNvdW50TmV3fSk7RE9NLnNldENvbnRlbnQodGhpcy5u ZXdDb3VudFNwYW4sYyk7fX0sX292ZXJmbG93SGFuZGxlcjpmdW5jdGlvbigpe3dp bmRvdy5VbmliZWVwZXImJlVuaWJlZXBlci5oaWRlT3ZlcmZsb3coRE9NLnNjcnko JCgnZmJNZXNzYWdlc0l0ZW1MaXN0JyksJ2xpJyksRE9NLmZpbmQodGhpcy5qZXdl bEZseW91dCwnLmpld2VsRm9vdGVyJykpO30sX3VwZGF0ZUluYm94T3RoZXJVbnNl ZW5Db3VudDpmdW5jdGlvbihhLGIpe0NvdW50ZXJEaXNwbGF5LnNldENvdW50KCdv dGhlcl91bnNlZW4nLGIpO30sX3VwZGF0ZUluYm94VW5yZWFkQ291bnQ6ZnVuY3Rp b24oYSxiKXtDb3VudGVyRGlzcGxheS5zZXRDb3VudCgnbWVzc2FnZXNfdW5yZWFk JyxiKTt9LF91cGRhdGVJbmJveFVuc2VlbkNvdW50OmZ1bmN0aW9uKGEsYil7Q291 bnRlckRpc3BsYXkuc2V0Q291bnQoJ21lc3NhZ2VzX3Vuc2VlbicsYik7QXJiaXRl ci5pbmZvcm0oJ2pld2VsL2NvdW50LXVwZGF0ZWQnLHtqZXdlbDonbWVzc2FnZXMn LGNvdW50OmJ9LEFyYml0ZXIuQkVIQVZJT1JfU1RBVEUpO319OwpmdW5jdGlvbiBP blZpc2libGUoYixjLGUsYSxkKXt0aGlzLmVsZW1lbnQ9Yjt0aGlzLmhhbmRsZXI9 Yzt0aGlzLnN0cmljdD1lO3RoaXMuYnVmZmVyPWNvYWxlc2NlKGEsMzAwKTt0aGlz Lm9wdGlvbnM9ZHx8e307dGhpcy5sYXN0WT1WZWN0b3IyLmdldFNjcm9sbFBvc2l0 aW9uKCkueTt0aGlzLmxhc3RUaW1lPURhdGUubm93KCk7dGhpcy5yZXNldCgpO29u bGVhdmVSZWdpc3Rlcih0aGlzLnJlbW92ZS5iaW5kKHRoaXMpKTt9Y29weV9wcm9w ZXJ0aWVzKE9uVmlzaWJsZS5wcm90b3R5cGUse3Jlc2V0OmZ1bmN0aW9uKCl7aWYo dGhpcy5zY3JvbGxMaXN0ZW5lcilyZXR1cm47dmFyIGE9dGhyb3R0bGUoZnVuY3Rp b24oKXt2YXIgYz1WZWN0b3IyLmdldEVsZW1lbnRQb3NpdGlvbih0aGlzLmVsZW1l bnQpO2lmKCFjKXt0aGlzLnJlbW92ZSgpO3JldHVybjt9dGhpcy50YXJnZXRZPWMu eTt2YXIgaD1WZWN0b3IyLmdldFNjcm9sbFBvc2l0aW9uKCkueTt2YXIgZj1WZWN0 b3IyLmdldFZpZXdwb3J0RGltZW5zaW9ucygpLnk7dmFyIGc9aCtmK3RoaXMuYnVm ZmVyO2lmKGc+dGhpcy50YXJnZXRZKXt2YXIgZT0hdGhpcy5zdHJpY3R8fChoLXRo aXMuYnVmZmVyPCh0aGlzLnRhcmdldFkrVmVjdG9yMi5nZXRFbGVtZW50RGltZW5z aW9ucyh0aGlzLmVsZW1lbnQpLnkpKTtpZihlKXt0aGlzLnJlbW92ZSgpO2lmKHRo aXMub3B0aW9ucy5kZXRlY3Rfc3BlZWQpe3ZhciBiPShoLXRoaXMubGFzdFkpO3Zh ciBkPWIvKERhdGUubm93KCktdGhpcy5sYXN0VGltZSsxKTtpZigoZD5mLzEwMCl8 fChnPj1WZWN0b3IyLmdldERvY3VtZW50RGltZW5zaW9ucygpLnkmJmI+MTAwMCkp cmV0dXJuIHRydWU7fXRoaXMuaGFuZGxlcigpO319aWYodGhpcy5vcHRpb25zLmRl dGVjdF9zcGVlZCl7dGhpcy5sYXN0WT1oO3RoaXMubGFzdFRpbWU9RGF0ZS5ub3co KTt9cmV0dXJuIHRydWU7fS5iaW5kKHRoaXMpLDEwMCk7dGhpcy5zY3JvbGxMaXN0 ZW5lcj1FdmVudC5saXN0ZW4od2luZG93LCdzY3JvbGwnLGEpO3RoaXMucmVzaXpl TGlzdGVuZXI9RXZlbnQubGlzdGVuKHdpbmRvdywncmVzaXplJyxhKTthKCk7fSxy ZW1vdmU6ZnVuY3Rpb24oKXtpZih0aGlzLnNjcm9sbExpc3RlbmVyKXt0aGlzLnNj cm9sbExpc3RlbmVyLnJlbW92ZSgpO3RoaXMucmVzaXplTGlzdGVuZXIucmVtb3Zl KCk7dGhpcy5zY3JvbGxMaXN0ZW5lcj10aGlzLnJlc2l6ZUxpc3RlbmVyPW51bGw7 fX19KTsKZnVuY3Rpb24gUmVxdWVzdHNKZXdlbCgpe31SZXF1ZXN0c0pld2VsLnBy b3RvdHlwZT17aW5pdDpmdW5jdGlvbihkLGMsYil7dGhpcy5jb3VudE5ldz0wO3Ro aXMuamV3ZWw9ZDt0aGlzLmpld2VsRmx5b3V0Q2FzZT1nZSgnamV3ZWxGbHlvdXRD b250YWluZXInKTt0aGlzLmpld2VsRmx5b3V0PWdlKCdmYlJlcXVlc3RzRmx5b3V0 Jyk7dGhpcy5uZXdDb3VudFNwYW49Z2UoJ25ld1JlcXVlc3RDb3VudCcpO3RoaXMu Zm9sZGVyPWM7dGhpcy5kb05ld01hcmtSZWFkPWI7dGhpcy5fcmVxdWVzdExpc3Q9 e307dGhpcy5fcmVxdWVzdENvdW50PTA7dmFyIGE9Z2UoJ3JlcXVlc3RzTWFya1Jl YWRCdXR0b24nKTtpZihhKUV2ZW50Lmxpc3RlbihhLCdjbGljaycsdGhpcy5fbWFy a1JlYWQuc2hpZWxkKHRoaXMpKTt0aGlzLmpld2VsLnN1YnNjcmliZSgnbWFya2Vk LXNlZW4nLHRoaXMuX21hcmtTZWVuQ2FsbGJhY2suc2hpZWxkKHRoaXMpKTt0aGlz Lmpld2VsLnN1YnNjcmliZSgnY2xvc2VkJyx0aGlzLl9jbGVhck5ld0l0ZW1zLnNo aWVsZCh0aGlzKSk7dGhpcy5qZXdlbC5zdWJzY3JpYmUoJ3VwZGF0ZWQnLHRoaXMu X3VwZGF0ZUNvdW50LmJpbmQodGhpcykpO3RoaXMuamV3ZWwuc3Vic2NyaWJlKCdv cGVuZWQnLHRoaXMuX29wZW5IYW5kbGVyLmJpbmQodGhpcykpO0FyYml0ZXIuc3Vi c2NyaWJlKCdqZXdlbC9yZXNpemUnLHRoaXMuX292ZXJmbG93SGFuZGxlci5iaW5k KHRoaXMpKTt3aW5kb3cuVW5pYmVlcGVyJiZBcmJpdGVyLnN1YnNjcmliZShQcmVz ZW5jZU1lc3NhZ2UuZ2V0QXJiaXRlck1lc3NhZ2VUeXBlKCdqZXdlbC9yZXF1ZXN0 cy9oYW5kbGVkJyksdGhpcy5fcmVtb3ZlUmVxdWVzdC5iaW5kKHRoaXMpKTtMaW5r Q29udHJvbGxlci5yZWdpc3RlckhhbmRsZXIodGhpcy5faGFuZGxlTGluay5iaW5k KHRoaXMpKTtBcmJpdGVyLnN1YnNjcmliZShQcmVzZW5jZU1lc3NhZ2UuZ2V0QXJi aXRlck1lc3NhZ2VUeXBlKCdqZXdlbC9yZXF1ZXN0cy9hZGQnKSx0aGlzLl9hZGRS ZXF1ZXN0LmJpbmQodGhpcykpO0FyYml0ZXIuc3Vic2NyaWJlKFByZXNlbmNlTWVz c2FnZS5nZXRBcmJpdGVyTWVzc2FnZVR5cGUoJ2pld2VsL3JlcXVlc3RzL3JlbW92 ZV9vbGQnKSx0aGlzLl9yZW1vdmVPbGRSZXF1ZXN0LmJpbmQodGhpcykpO0V2ZW50 Lmxpc3Rlbih0aGlzLmpld2VsRmx5b3V0LCdzdWJtaXQnLGZ1bmN0aW9uKGYpe3Zh ciBnPVBhcmVudC5ieUNsYXNzKGYuZ2V0VGFyZ2V0KCksJ29iamVjdExpc3RJdGVt Jyk7aWYoZyl7Q1NTLnJlbW92ZUNsYXNzKGcsJ2pld2VsSXRlbU5ldycpO0NTUy5h ZGRDbGFzcyhnLCdqZXdlbEl0ZW1SZXNwb25kZWQnKTt9fS5iaW5kKHRoaXMpKTt2 YXIgZT1ET00uc2NyeSh0aGlzLmpld2VsRmx5b3V0LCcudWlTY3JvbGxhYmxlQXJl YVdyYXAnKVswXTtpZihlKXt0aGlzLl9zY3JvbGxhYmxlV3JhcD1lO3RoaXMuX2xh c3RMaW5rUG9zaXRpb249MDt0aGlzLl9zY3JvbGxMaXN0ZW5lcj1FdmVudC5saXN0 ZW4oZSwnc2Nyb2xsJyx0aGlzLl9oYW5kbGVTY3JvbGwuYmluZCh0aGlzKSk7fXJl dHVybiB0aGlzO30sZnJvbURvbTpmdW5jdGlvbigpe0RPTS5zY3J5KHRoaXMuamV3 ZWxGbHlvdXQsJy5qZXdlbEl0ZW1MaXN0IGxpLm9iamVjdExpc3RJdGVtJykuZWFj aChmdW5jdGlvbihjKXt2YXIgYj1jLmdldEF0dHJpYnV0ZSgnaWQnKTt2YXIgYT1i JiZwYXJzZUludCh0aGlzLl9wYXJzZUlEKGIpLnJlcXVlc3RlciwxMCk7aWYoYSYm IWlzTmFOKGEpKXt0aGlzLl9yZXF1ZXN0TGlzdFthXT1iOysrdGhpcy5fcmVxdWVz dENvdW50O319LmJpbmQodGhpcykpO3RoaXMuX2NvbmRpdGlvblNob3dFbXB0eU1l c3NhZ2UoKTt9LF9wYXJzZUlEOmZ1bmN0aW9uKGEpe3ZhciBiPWEubWF0Y2goL14o XGQrKV8oXGQrKS8pO3JldHVybiAoYik/e3JlcXVlc3RlcjpiWzFdLHR5cGU6Ylsy XX06dW5kZWZpbmVkO30sX2hhbmRsZUxpbms6ZnVuY3Rpb24oYixldmVudCl7dmFy IGM9UGFyZW50LmJ5Q2xhc3MoYiwnamV3ZWxJdGVtTmV3Jyk7aWYoYyYmUGFyZW50 LmJ5Q2xhc3MoYywnZmJSZXF1ZXN0TGlzdCcpJiZQYXJlbnQuYnlDbGFzcyhjLCdi ZWVwZXJFbmFibGVkJykpe3ZhciBhPXRoaXMuX3BhcnNlSUQoYy5pZCk7YSYmdGhp cy5fbWFya1NlZW5DYWxsYmFjayhhLnJlcXVlc3RlcixhLnR5cGUpO0FyYml0ZXIu aW5mb3JtKCdqZXdlbC9jb3VudC11cGRhdGVkJyx7amV3ZWw6J3JlcXVlc3RzJyxj b3VudDotLXRoaXMuY291bnROZXd9KTtDU1MucmVtb3ZlQ2xhc3MoYywnamV3ZWxJ dGVtTmV3Jyk7fXJldHVybiB0cnVlO30sX2hhbmRsZVNjcm9sbDpmdW5jdGlvbigp e3ZhciBiPURPTS5zY3J5KHRoaXMuX3Njcm9sbGFibGVXcmFwLCcudWlNb3JlUGFn ZXIgYScpWzBdO2lmKGIpe3ZhciBjPVZlY3RvcjIuZ2V0RWxlbWVudFBvc2l0aW9u KGIsJ3ZpZXdwb3J0JykueTtpZihjPT10aGlzLl9sYXN0TGlua1Bvc2l0aW9uKXJl dHVybjt2YXIgYT1WZWN0b3IyLmdldEVsZW1lbnRQb3NpdGlvbih0aGlzLl9zY3Jv bGxhYmxlV3JhcCwndmlld3BvcnQnKS55K1ZlY3RvcjIuZ2V0RWxlbWVudERpbWVu c2lvbnModGhpcy5fc2Nyb2xsYWJsZVdyYXApLnk7aWYoYy0zMDA8YSYmYz4wKXt0 aGlzLl9sYXN0TGlua1Bvc2l0aW9uPWM7dmFyIGQ9Yi5nZXRBdHRyaWJ1dGUoJ2Fq YXhpZnknKTtpZihkKXtuZXcgQXN5bmNSZXF1ZXN0KGQpLnNldFJlbGF0aXZlVG8o Yikuc2V0U3RhdHVzRWxlbWVudChQYXJlbnQuYnlDbGFzcyhiLCdzdGF0X2VsZW0n KSkuc2VuZCgpO31lbHNlIEZyaWVuZEJyb3dzZXJDaGVja2JveENvbnRyb2xsZXIu Z2V0SW5zdGFuY2UoJ2pld2VsJykuc2hvd01vcmUoKTt9fX0sX2FkZFJlcXVlc3Q6 ZnVuY3Rpb24oYSxiKXtpZighYnx8dGhpcy5fcmVxdWVzdExpc3RbYi5vYmouZnJv bV0pcmV0dXJuO3ZhciBjPURPTS5maW5kKHRoaXMuamV3ZWxGbHlvdXQsJy5qZXdl bEl0ZW1MaXN0Jyk7ZWxlbT1ET00ucHJlcGVuZENvbnRlbnQoYyxiLm9iai5tYXJr dXApWzBdO0NTUy5oaWRlKERPTS5maW5kKGMsJ2ltZy5sb2FkaW5nSW5kaWNhdG9y JykpO3ZhciBkPXtqZXdlbDoncmVxdWVzdHMnLGNvdW50OisrdGhpcy5jb3VudE5l d307QXJiaXRlci5pbmZvcm0oJ2pld2VsL2NvdW50LXVwZGF0ZWQnLGQpO3RoaXMu X3JlcXVlc3RMaXN0W2Iub2JqLmZyb21dPWVsZW0uaWQ7Kyt0aGlzLl9yZXF1ZXN0 Q291bnQ7dGhpcy5fY29uZGl0aW9uU2hvd0VtcHR5TWVzc2FnZSgpO30sX3JlbW92 ZU9sZFJlcXVlc3Q6ZnVuY3Rpb24oYSxiKXtpZighYilyZXR1cm47dmFyIGQ9dGhp cy5fcmVxdWVzdExpc3RbYi5vYmouZnJvbV07dmFyIGM9ZCYmZ2UoZCk7aWYoYyl7 Q1NTLmhhc0NsYXNzKGMsJ2pld2VsSXRlbU5ldycpJiZBcmJpdGVyLmluZm9ybSgn amV3ZWwvY291bnQtdXBkYXRlZCcse2pld2VsOidyZXF1ZXN0cycsY291bnQ6LS10 aGlzLmNvdW50TmV3fSk7aWYoIUNTUy5oYXNDbGFzcyhjLCdqZXdlbEl0ZW1SZXNw b25kZWQnKSl7RE9NLnJlbW92ZShjKTtkZWxldGUgdGhpcy5fcmVxdWVzdExpc3Rb ZF07LS10aGlzLl9yZXF1ZXN0Q291bnQ7dGhpcy5fY29uZGl0aW9uU2hvd0VtcHR5 TWVzc2FnZSgpO319fSxfbWFya1JlYWQ6ZnVuY3Rpb24oKXt0aGlzLmpld2VsLm1h cmtTZWVuKCk7dGhpcy5fY2xlYXJOZXdJdGVtcygpO30sX21hcmtTZWVuQ2FsbGJh Y2s6ZnVuY3Rpb24oYixjKXtuZXcgQXN5bmNTaWduYWwoJy9hamF4L2dpZ2Fib3h4 L2VuZHBvaW50L1VwZGF0ZUxhc3RTZWVuVGltZS5waHAnLHtmb2xkZXI6dGhpcy5m b2xkZXJ9KS5zZW5kKCk7dmFyIGE9dHlwZW9mIGIhPSd1bmRlZmluZWQnJiZ0eXBl b2YgYyE9J3VuZGVmaW5lZCc/e3JlcXVlc3RlcjpiLHR5cGU6Y306e307dGhpcy5k b05ld01hcmtSZWFkJiZuZXcgQXN5bmNTaWduYWwoJy9hamF4L3JlcXVlc3RzL21h cmtfcmVhZC8nLGEpLnNlbmQoKTt9LF9yZW1vdmVSZXF1ZXN0OmZ1bmN0aW9uKGEs Yil7dmFyIGM9Yi5vYmouaXRlbV9pZDtpZihjKXt2YXIgZD1nZShjKTt2YXIgZT1k JiZDU1MuaGFzQ2xhc3MoZCwnamV3ZWxJdGVtTmV3Jyk7ZD9ET00ucmVtb3ZlKGQp OmZhbHNlO2UmJkFyYml0ZXIuaW5mb3JtKCdqZXdlbC9jb3VudC11cGRhdGVkJyx7 amV3ZWw6J3JlcXVlc3RzJyxjb3VudDotLXRoaXMuY291bnROZXd9KTt9fSxfY2xl YXJOZXdJdGVtczpmdW5jdGlvbihhLGIpe0RPTS5zY3J5KHRoaXMuamV3ZWwucm9v dCwnbGkuamV3ZWxJdGVtTmV3JykuZWFjaChmdW5jdGlvbihjKXtDU1MucmVtb3Zl Q2xhc3MoYywnamV3ZWxJdGVtTmV3Jyk7fSk7fSxfdXBkYXRlQ291bnQ6ZnVuY3Rp b24oYSxiKXt0aGlzLmNvdW50TmV3PWIuY291bnQ7Q1NTLmNvbmRpdGlvbkNsYXNz KHRoaXMuamV3ZWxGbHlvdXQsJ2JlZXBlclVucmVhZCcsdGhpcy5jb3VudE5ldz4w KTtDU1MuY29uZGl0aW9uQ2xhc3ModGhpcy5qZXdlbEZseW91dENhc2UsJ3Nob3dS ZXF1ZXN0cycsdGhpcy5jb3VudE5ldz4wKTtpZih0aGlzLm5ld0NvdW50U3Bhbil7 dmFyIGM9dGhpcy5jb3VudE5ldz09MT9fdHgoIntudW19IFlFTlx1MDEzMCBcdTAx MzBTVEVLIix7bnVtOnRoaXMuY291bnROZXd9KTpfdHgoIntudW19IFlFTlx1MDEz MCBcdTAxMzBTVEVLIix7bnVtOnRoaXMuY291bnROZXd9KTtET00uc2V0Q29udGVu dCh0aGlzLm5ld0NvdW50U3BhbixjKTt9fSxfY29uZGl0aW9uU2hvd0VtcHR5TWVz c2FnZTpmdW5jdGlvbigpe0RPTS5zY3J5KHRoaXMuamV3ZWxGbHlvdXQsJ2xpLmVt cHR5JykuZWFjaChmdW5jdGlvbihhKXtDU1MuY29uZGl0aW9uU2hvdyhhLHRoaXMu X3JlcXVlc3RDb3VudDw9MCk7fS5iaW5kKHRoaXMpKTt9LF9vcGVuSGFuZGxlcjpm dW5jdGlvbigpe3ZhciBhPURPTS5zY3J5KHRoaXMuamV3ZWxGbHlvdXQsJy51aVNj cm9sbGFibGVBcmVhJylbMF07YSYmU2Nyb2xsYWJsZUFyZWEucG9rZShhKTt0aGlz Ll9vdmVyZmxvd0hhbmRsZXIoKTt9LF9vdmVyZmxvd0hhbmRsZXI6ZnVuY3Rpb24o KXt3aW5kb3cuVW5pYmVlcGVyJiZVbmliZWVwZXIuaGlkZU92ZXJmbG93KERPTS5z Y3J5KCQoJ2ZiUmVxdWVzdHNMaXN0JyksJ2xpJyksRE9NLmZpbmQodGhpcy5qZXdl bEZseW91dCwnLmpld2VsRm9vdGVyJykpO319OwpmdW5jdGlvbiBUZXh0SW5wdXRD b250cm9sKGIpe3RoaXMucGFyZW50LmNvbnN0cnVjdCh0aGlzLGIpO3ZhciBhPXRo aXMuZ2V0Um9vdCgpO3ZhciBjPWZ1bmN0aW9uKCl7dGhpcy51cGRhdGUuYmluZCh0 aGlzKS5kZWZlcigpO30uYmluZCh0aGlzKTtFdmVudC5saXN0ZW4oYSx7a2V5ZG93 bjpjLHBhc3RlOmN9KTt9Q2xhc3MuZXh0ZW5kKFRleHRJbnB1dENvbnRyb2wsJ0RP TUNvbnRyb2wnKTtUZXh0SW5wdXRDb250cm9sLnByb3RvdHlwZT17c2V0TWF4TGVu Z3RoOmZ1bmN0aW9uKGEpe0lucHV0LnNldE1heExlbmd0aCh0aGlzLmdldFJvb3Qo KSxhKTtyZXR1cm4gdGhpczt9LGdldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIElu cHV0LmdldFZhbHVlKHRoaXMuZ2V0Um9vdCgpKTt9LGlzRW1wdHk6ZnVuY3Rpb24o KXtyZXR1cm4gSW5wdXQuaXNFbXB0eSh0aGlzLmdldFJvb3QoKSk7fSxzZXRWYWx1 ZTpmdW5jdGlvbihhKXtJbnB1dC5zZXRWYWx1ZSh0aGlzLmdldFJvb3QoKSxhKTt0 aGlzLnVwZGF0ZSgpO3JldHVybiB0aGlzO30sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5zZXRWYWx1ZSgnJyk7fSxzZXRQbGFjZWhvbGRlclRleHQ6ZnVuY3Rp b24oYSl7SW5wdXQuc2V0UGxhY2Vob2xkZXIodGhpcy5nZXRSb290KCksYSk7cmV0 dXJuIHRoaXM7fX07CmZ1bmN0aW9uIFRleHRNZXRyaWNzKGEpe3RoaXMuX25vZGU9 YTt2YXIgYj10aGlzLl9zaGFkb3c9JE4oJ3RleHRhcmVhJyx7Y2xhc3NOYW1lOid0 ZXh0TWV0cmljcyd9KTt2YXIgYz1bJ2ZvbnRTaXplJywnZm9udFN0eWxlJywnZm9u dFdlaWdodCcsJ2ZvbnRGYW1pbHknLCdsaW5lSGVpZ2h0Jywnd29yZFdyYXAnXTtj LmVhY2goZnVuY3Rpb24oZCl7Q1NTLnNldFN0eWxlKGIsZCxDU1MuZ2V0U3R5bGUo YSxkKSk7fSk7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiKTt9VGV4dE1ldHJp Y3MucHJvdG90eXBlPXttZWFzdXJlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fbm9k ZTt2YXIgYj10aGlzLl9zaGFkb3c7dmFyIGM9YS5jbGllbnRXaWR0aC1DU1MuZ2V0 U3R5bGVGbG9hdChhLCdwYWRkaW5nTGVmdCcpLUNTUy5nZXRTdHlsZUZsb2F0KGEs J3BhZGRpbmdSaWdodCcpO0NTUy5zZXRTdHlsZShiLCd3aWR0aCcsYysncHgnKTti LnZhbHVlPWEudmFsdWUrJy4uLic7cmV0dXJuIHt3aWR0aDpiLnNjcm9sbFdpZHRo LGhlaWdodDpiLnNjcm9sbEhlaWdodH07fSxkZXN0cm95OmZ1bmN0aW9uKCl7RE9N LnJlbW92ZSh0aGlzLl9zaGFkb3cpO319OwpmdW5jdGlvbiBUZXh0QXJlYUNvbnRy b2woYSl7dGhpcy5hdXRvZ3Jvdz1mYWxzZTt0aGlzLnBhcmVudC5jb25zdHJ1Y3Qo dGhpcyxhKTt0aGlzLndpZHRoPW51bGw7RXZlbnQubGlzdGVuKGEse2ZvY3VzOnRo aXMuX2hhbmRsZUZvY3VzLmJpbmQodGhpcyl9KTt9Q2xhc3MuZXh0ZW5kKFRleHRB cmVhQ29udHJvbCwnVGV4dElucHV0Q29udHJvbCcpO0NsYXNzLm1peGluKFRleHRB cmVhQ29udHJvbCwnQXJiaXRlcicse3NldEF1dG9ncm93OmZ1bmN0aW9uKGEpe3Ro aXMuYXV0b2dyb3c9YTtyZXR1cm4gdGhpczt9LG9udXBkYXRlOmZ1bmN0aW9uKCl7 dGhpcy5wYXJlbnQub251cGRhdGUoKTtpZih0aGlzLmF1dG9ncm93KXt2YXIgZD10 aGlzLmdldFJvb3QoKTtpZighdGhpcy5tZXRyaWNzKXRoaXMubWV0cmljcz1uZXcg VGV4dE1ldHJpY3MoZCk7aWYodHlwZW9mIHRoaXMubWluSGVpZ2h0PT09J3VuZGVm aW5lZCcpe3ZhciBjPUNTUy5nZXRTdHlsZUZsb2F0KGQsJ2hlaWdodCcpO3RoaXMu bWluSGVpZ2h0PWM+MD9jOmQub2Zmc2V0SGVpZ2h0LTg7fWlmKHR5cGVvZiB0aGlz LmlzQm9yZGVyQm94PT09J3VuZGVmaW5lZCcpaWYoQ1NTLmdldFN0eWxlKGQsJ2Jv eC1zaXppbmcnKT09J2JvcmRlci1ib3gnfHxDU1MuZ2V0U3R5bGUoZCwnLW1vei1i b3gtc2l6aW5nJyk9PSdib3JkZXItYm94J3x8Q1NTLmdldFN0eWxlKGQsJy13ZWJr aXQtYm94LXNpemluZycpPT0nYm9yZGVyLWJveCcpe3RoaXMuaXNCb3JkZXJCb3g9 dHJ1ZTt0aGlzLmJvcmRlckJveE9mZnNldD1DU1MuZ2V0U3R5bGVGbG9hdChkLCdw YWRkaW5nLXRvcCcpK0NTUy5nZXRTdHlsZUZsb2F0KGQsJ3BhZGRpbmctYm90dG9t JykrQ1NTLmdldFN0eWxlRmxvYXQoZCwnYm9yZGVyLXRvcC13aWR0aCcpK0NTUy5n ZXRTdHlsZUZsb2F0KGQsJ2JvcmRlci1ib3R0b20td2lkdGgnKTt9ZWxzZSB0aGlz LmlzQm9yZGVyQm94PWZhbHNlO3ZhciBiPXRoaXMubWV0cmljcy5tZWFzdXJlKCk7 dmFyIGE9TWF0aC5tYXgodGhpcy5taW5IZWlnaHQsYi5oZWlnaHQpO2lmKHRoaXMu aXNCb3JkZXJCb3gpYSs9dGhpcy5ib3JkZXJCb3hPZmZzZXQ7aWYoYSE9dGhpcy5o ZWlnaHQpe0NTUy5zZXRTdHlsZShkLCdoZWlnaHQnLGErJ3B4Jyk7dGhpcy5oZWln aHQ9YTtBcmJpdGVyLmluZm9ybSgncmVmbG93Jyk7dGhpcy5pbmZvcm0oJ3Jlc2l6 ZScpO319ZWxzZSBpZih0aGlzLm1ldHJpY3Mpe3RoaXMubWV0cmljcy5kZXN0cm95 KCk7dGhpcy5tZXRyaWNzPW51bGw7fX0scmVzZXRIZWlnaHQ6ZnVuY3Rpb24oKXt0 aGlzLmhlaWdodD0tMTt0aGlzLnVwZGF0ZSgpO30sX2hhbmRsZUZvY3VzOmZ1bmN0 aW9uKCl7dGhpcy53aWR0aD1udWxsO319KTtUZXh0QXJlYUNvbnRyb2wuZ2V0SW5z dGFuY2U9ZnVuY3Rpb24oYil7dmFyIGE9RE9NQ29udHJvbC5nZXRJbnN0YW5jZShi KTtpZighYSl7YT1uZXcgVGV4dEFyZWFDb250cm9sKGIpO0NTUy5oYXNDbGFzcyhi LCd1aVRleHRhcmVhQXV0b2dyb3cnKSYmYS5zZXRBdXRvZ3Jvdyh0cnVlKTtiLl9o YXNfY29udHJvbD10cnVlO31yZXR1cm4gYTt9OwpmdW5jdGlvbiBLZXlFdmVudENv bnRyb2xsZXIoKXt0aGlzLmhhbmRsZXJzPXt9O2RvY3VtZW50Lm9ua2V5dXA9dGhp cy5vbmtleWV2ZW50LmJpbmQodGhpcywnb25rZXl1cCcpO2RvY3VtZW50Lm9ua2V5 ZG93bj10aGlzLm9ua2V5ZXZlbnQuYmluZCh0aGlzLCdvbmtleWRvd24nKTtkb2N1 bWVudC5vbmtleXByZXNzPXRoaXMub25rZXlldmVudC5iaW5kKHRoaXMsJ29ua2V5 cHJlc3MnKTt9Y29weV9wcm9wZXJ0aWVzKEtleUV2ZW50Q29udHJvbGxlcix7aW5z dGFuY2U6bnVsbCxnZXRJbnN0YW5jZTpmdW5jdGlvbigpe3JldHVybiBLZXlFdmVu dENvbnRyb2xsZXIuaW5zdGFuY2V8fChLZXlFdmVudENvbnRyb2xsZXIuaW5zdGFu Y2U9bmV3IEtleUV2ZW50Q29udHJvbGxlcigpKTt9LGRlZmF1bHRGaWx0ZXI6ZnVu Y3Rpb24oZXZlbnQsYSl7ZXZlbnQ9JEUoZXZlbnQpO3JldHVybiBLZXlFdmVudENv bnRyb2xsZXIuZmlsdGVyRXZlbnRUeXBlcyhldmVudCxhKSYmS2V5RXZlbnRDb250 cm9sbGVyLmZpbHRlckV2ZW50VGFyZ2V0cyhldmVudCxhKSYmS2V5RXZlbnRDb250 cm9sbGVyLmZpbHRlckV2ZW50TW9kaWZpZXJzKGV2ZW50LGEpO30sZmlsdGVyRXZl bnRUeXBlczpmdW5jdGlvbihldmVudCxhKXtpZihhPT09J29ua2V5ZG93bicpcmV0 dXJuIHRydWU7cmV0dXJuIGZhbHNlO30sZmlsdGVyRXZlbnRUYXJnZXRzOmZ1bmN0 aW9uKGV2ZW50LGIpe3ZhciBhPWV2ZW50LmdldFRhcmdldCgpO3JldHVybiAhRE9N LmlzTm9kZU9mVHlwZShhLEtleUV2ZW50Q29udHJvbGxlci5faW50ZXJhY3RpdmVF bGVtZW50cyl8fChhLnR5cGUgaW4gS2V5RXZlbnRDb250cm9sbGVyLl91bmludGVy ZXN0aW5nVHlwZXMpfHwoRE9NLmlzTm9kZU9mVHlwZShhLFsnaW5wdXQnLCd0ZXh0 YXJlYSddKSYmYS52YWx1ZS5sZW5ndGg9PT0wJiZldmVudC5rZXlDb2RlIGluIEtl eUV2ZW50Q29udHJvbGxlci5fY29udHJvbEtleXMpO30sZmlsdGVyRXZlbnRNb2Rp ZmllcnM6ZnVuY3Rpb24oZXZlbnQsYSl7aWYoZXZlbnQuY3RybEtleXx8ZXZlbnQu YWx0S2V5fHxldmVudC5tZXRhS2V5fHxldmVudC5yZXBlYXQpcmV0dXJuIGZhbHNl O3JldHVybiB0cnVlO30scmVnaXN0ZXJLZXk6ZnVuY3Rpb24oZixhLGQsZyl7aWYo ZD09PXVuZGVmaW5lZClkPUtleUV2ZW50Q29udHJvbGxlci5kZWZhdWx0RmlsdGVy O3ZhciBiPUtleUV2ZW50Q29udHJvbGxlci5nZXRJbnN0YW5jZSgpO3ZhciBjPWIu bWFwS2V5KGYpO2lmKGlzX2VtcHR5KGIuaGFuZGxlcnMpKW9ubGVhdmVSZWdpc3Rl cihiLnJlc2V0SGFuZGxlcnMuYmluZChiKSk7Zm9yKHZhciBlPTA7ZTxjLmxlbmd0 aDtlKyspe2Y9Y1tlXTtpZighYi5oYW5kbGVyc1tmXXx8ZyliLmhhbmRsZXJzW2Zd PVtdO2IuaGFuZGxlcnNbZl0ucHVzaCh7Y2FsbGJhY2s6YSxmaWx0ZXI6ZH0pO319 LGtleUNvZGVNYXA6e0JBQ0tTUEFDRTpbOF0sVEFCOls5XSxSRVRVUk46WzEzXSxF U0NBUEU6WzI3XSxMRUZUOlszNyw2MzIzNF0sVVA6WzM4LDYzMjMyXSxSSUdIVDpb MzksNjMyMzVdLERPV046WzQwLDYzMjMzXSxERUxFVEU6WzQ2XSxDT01NQTpbMTg4 XSxQRVJJT0Q6WzE5MF0sJ2AnOlsxOTJdLCdbJzpbMjE5XSwnXSc6WzIyMV19LF9p bnRlcmFjdGl2ZUVsZW1lbnRzOlsnaW5wdXQnLCdzZWxlY3QnLCd0ZXh0YXJlYScs J29iamVjdCcsJ2VtYmVkJ10sX3VuaW50ZXJlc3RpbmdUeXBlczp7Y2hlY2tib3g6 MSxyYWRpbzoxLHN1Ym1pdDoxfSxfY29udHJvbEtleXM6ezg6MSw5OjEsMTM6MSwy NzoxLDM3OjEsNjMyMzQ6MSwzODoxLDYzMjMyOjEsMzk6MSw2MzIzNToxLDQwOjEs NjMyMzM6MSw0NjoxfX0pO2NvcHlfcHJvcGVydGllcyhLZXlFdmVudENvbnRyb2xs ZXIucHJvdG90eXBlLHttYXBLZXk6ZnVuY3Rpb24oYSl7aWYoYT49MCYmYTw9OSl7 aWYodHlwZW9mKGEpIT0nbnVtYmVyJylhPWEuY2hhckNvZGVBdCgwKS00ODtyZXR1 cm4gWzQ4K2EsOTYrYV07fXZhciBiPUtleUV2ZW50Q29udHJvbGxlci5rZXlDb2Rl TWFwW2EudG9VcHBlckNhc2UoKV07aWYoYilyZXR1cm4gYjtyZXR1cm4gW2EudG9V cHBlckNhc2UoKS5jaGFyQ29kZUF0KDApXTt9LG9ua2V5ZXZlbnQ6ZnVuY3Rpb24o aSxjKXtjPSRFKGMpO3ZhciBkPW51bGw7dmFyIGc9dGhpcy5oYW5kbGVyc1tjLmtl eUNvZGVdO3ZhciBiLGYsYTtpZihnKWZvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsr KXtiPWdbaF0uY2FsbGJhY2s7Zj1nW2hdLmZpbHRlcjt0cnl7aWYoIWZ8fGYoYyxp KSl7YT1iKGMsaSk7aWYoYT09PWZhbHNlKXJldHVybiBFdmVudC5raWxsKGMpO319 Y2F0Y2goZSl7fX1yZXR1cm4gdHJ1ZTt9LHJlc2V0SGFuZGxlcnM6ZnVuY3Rpb24o KXt0aGlzLmhhbmRsZXJzPXt9O319KTsKX19lKCJpbnB1dC1zZWxlY3Rpb24iLFsi ZG9tIiwiaW5wdXQtbWV0aG9kcyIsIm9iamVjdC1jb3JlLXV0aWxzIl0sZnVuY3Rp b24oZCxmLGUsYyl7dmFyIGE9ZignZG9tJyk7dmFyIGI9ZignaW5wdXQtbWV0aG9k cycpO2MuZ2V0PWZ1bmN0aW9uKGgpe2lmKCFkb2N1bWVudC5zZWxlY3Rpb24pcmV0 dXJuIHtzdGFydDpoLnNlbGVjdGlvblN0YXJ0LGVuZDpoLnNlbGVjdGlvbkVuZH07 dmFyIGo9ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7aWYoai5wYXJl bnRFbGVtZW50KCkhPT1oKXJldHVybiB7c3RhcnQ6MCxlbmQ6MH07dmFyIGk9aC52 YWx1ZS5sZW5ndGg7aWYoYS5pc05vZGVPZlR5cGUoaCwnaW5wdXQnKSl7cmV0dXJu IHtzdGFydDotai5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsLWkpLGVuZDotai5tb3Zl RW5kKCdjaGFyYWN0ZXInLC1pKX07fWVsc2V7dmFyIGs9ai5kdXBsaWNhdGUoKTtr Lm1vdmVUb0VsZW1lbnRUZXh0KGgpO2suc2V0RW5kUG9pbnQoJ1N0YXJ0VG9FbmQn LGopO3ZhciBnPWktay50ZXh0Lmxlbmd0aDtrLnNldEVuZFBvaW50KCdTdGFydFRv U3RhcnQnLGopO3JldHVybiB7c3RhcnQ6aS1rLnRleHQubGVuZ3RoLGVuZDpnfTt9 fTtjLnNldD1mdW5jdGlvbihqLGwsaSl7aWYodHlwZW9mIGk9PSd1bmRlZmluZWQn KWk9bDtpZihkb2N1bWVudC5zZWxlY3Rpb24pe2lmKGoudGFnTmFtZT09J1RFWFRB UkVBJyl7dmFyIGc9KGoudmFsdWUuc2xpY2UoMCxsKS5tYXRjaCgvXHIvZyl8fFtd KS5sZW5ndGg7dmFyIGg9KGoudmFsdWUuc2xpY2UobCxpKS5tYXRjaCgvXHIvZyl8 fFtdKS5sZW5ndGg7bC09ZztpLT1nK2g7fXZhciBrPWouY3JlYXRlVGV4dFJhbmdl KCk7ay5jb2xsYXBzZSh0cnVlKTtrLm1vdmVTdGFydCgnY2hhcmFjdGVyJyxsKTtr Lm1vdmVFbmQoJ2NoYXJhY3RlcicsaS1sKTtrLnNlbGVjdCgpO31lbHNle2ouc2Vs ZWN0aW9uU3RhcnQ9bDtqLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihpLGoudmFsdWUu bGVuZ3RoKTtiLmZvY3VzKGopO319O2YoJ29iamVjdC1jb3JlLXV0aWxzJykuYWRk X3Byb3BlcnRpZXMoJ0lucHV0Jyx7Z2V0U2VsZWN0aW9uOmMuZ2V0LHNldFNlbGVj dGlvbjpjLnNldH0pO30sMyk7Cl9fZSgicmVjdCIsWyJ2ZWN0b3IiLCJjb3B5UHJv cGVydGllcyJdLGZ1bmN0aW9uKGUsZyxmLGQpe3ZhciBiPWcoJ3ZlY3RvcicpO3Zh ciBjPWcoJ2NvcHlQcm9wZXJ0aWVzJyk7ZnVuY3Rpb24gYShsLGssaCxqLGkpe2lm KGFyZ3VtZW50cy5sZW5ndGg9PT0xKXtpZihsIGluc3RhbmNlb2YgYSlyZXR1cm4g bDtpZihsIGluc3RhbmNlb2YgYilyZXR1cm4gbmV3IGEobC55LGwueCxsLnksbC54 LGwuZG9tYWluKTtyZXR1cm4gYS5nZXRFbGVtZW50Qm91bmRzKCQobCkpO31jKHRo aXMse3Q6bCxyOmssYjpoLGw6aixkb21haW46aXx8J3B1cmUnfSk7fWMoYS5wcm90 b3R5cGUse3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yLXRoaXMubDt9LGg6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5iLXRoaXMudDt9LHRvU3RyaW5nOmZ1bmN0aW9u KCl7cmV0dXJuICcoKCcrdGhpcy5sKycsICcrdGhpcy50KycpLCAoJyt0aGlzLnIr JywgJyt0aGlzLmIrJykpJzt9LGNvbnRhaW5zOmZ1bmN0aW9uKGkpe2k9bmV3IGEo aSkuY29udmVydFRvKHRoaXMuZG9tYWluKTt2YXIgaD10aGlzO3JldHVybiAoaC5s PD1pLmwmJmgucj49aS5yJiZoLnQ8PWkudCYmaC5iPj1pLmIpO30sYWRkOmZ1bmN0 aW9uKGosayl7aWYoYXJndW1lbnRzLmxlbmd0aD09MSl7aWYoai5kb21haW4hPSdw dXJlJylqPWouY29udmVydFRvKHRoaXMuZG9tYWluKTtyZXR1cm4gdGhpcy5hZGQo ai54LGoueSk7fXZhciBoPXBhcnNlRmxvYXQoaik7dmFyIGk9cGFyc2VGbG9hdChr KTtyZXR1cm4gbmV3IGEodGhpcy50K2ksdGhpcy5yK2gsdGhpcy5iK2ksdGhpcy5s K2gsdGhpcy5kb21haW4pO30sc3ViOmZ1bmN0aW9uKGgsaSl7aWYoYXJndW1lbnRz Lmxlbmd0aD09MSl7cmV0dXJuIHRoaXMuYWRkKGgubXVsKC0xKSk7fWVsc2UgcmV0 dXJuIHRoaXMuYWRkKC1oLC1pKTt9LGJvdW5kV2l0aGluOmZ1bmN0aW9uKGgpe3Zh ciBpPTAsaj0wO2lmKHRoaXMubDxoLmwpe2k9aC5sLXRoaXMubDt9ZWxzZSBpZih0 aGlzLnI+aC5yKWk9aC5yLXRoaXMucjtpZih0aGlzLnQ8aC50KXtqPWgudC10aGlz LnQ7fWVsc2UgaWYodGhpcy5iPmguYilqPWguYi10aGlzLmI7cmV0dXJuIHRoaXMu YWRkKGksaik7fSxnZXRDZW50ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGIodGhp cy5sK3RoaXMudygpLzIsdGhpcy50K3RoaXMuaCgpLzIsdGhpcy5kb21haW4pO30s Z2V0UG9zaXRpb25WZWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGIodGhpcy5s LHRoaXMudCx0aGlzLmRvbWFpbik7fSxnZXREaW1lbnNpb25WZWN0b3I6ZnVuY3Rp b24oKXtyZXR1cm4gbmV3IGIodGhpcy53KCksdGhpcy5oKCksJ3B1cmUnKTt9LGNv bnZlcnRUbzpmdW5jdGlvbihoKXtpZih0aGlzLmRvbWFpbj09aClyZXR1cm4gdGhp cztpZihoPT0ncHVyZScpcmV0dXJuIG5ldyBhKHRoaXMudCx0aGlzLnIsdGhpcy5i LHRoaXMubCwncHVyZScpO2lmKHRoaXMuZG9tYWluPT0ncHVyZScpcmV0dXJuIG5l dyBhKDAsMCwwLDApO3ZhciBpPW5ldyBiKHRoaXMubCx0aGlzLnQsdGhpcy5kb21h aW4pLmNvbnZlcnRUbyhoKTtyZXR1cm4gbmV3IGEoaS55LGkueCt0aGlzLncoKSxp LnkrdGhpcy5oKCksaS54LGgpO319KTtjKGEse2Rlc2VyaWFsaXplOmZ1bmN0aW9u KGkpe3ZhciBoPWkuc3BsaXQoJzonKTtyZXR1cm4gbmV3IGEoaFsxXSxoWzJdLGhb M10saFswXSk7fSxuZXdGcm9tVmVjdG9yczpmdW5jdGlvbihpLGgpe3JldHVybiBu ZXcgYShpLnksaS54K2gueCxpLnkraC55LGkueCxpLmRvbWFpbik7fSxnZXRFbGVt ZW50Qm91bmRzOmZ1bmN0aW9uKGgpe3JldHVybiBhLm5ld0Zyb21WZWN0b3JzKGIu Z2V0RWxlbWVudFBvc2l0aW9uKGgpLGIuZ2V0RWxlbWVudERpbWVuc2lvbnMoaCkp O30sZ2V0Vmlld3BvcnRCb3VuZHM6ZnVuY3Rpb24oKXtyZXR1cm4gYS5uZXdGcm9t VmVjdG9ycyhiLmdldFNjcm9sbFBvc2l0aW9uKCksYi5nZXRWaWV3cG9ydERpbWVu c2lvbnMoKSk7fSxtaW5pbXVtQm91bmRpbmdCb3g6ZnVuY3Rpb24oayl7dmFyIGg9 bmV3IGEoTWF0aC5taW4oKSxNYXRoLm1heCgpLE1hdGgubWF4KCksTWF0aC5taW4o KSk7dmFyIGo7Zm9yKHZhciBpPTA7aTxrLmxlbmd0aDtpKyspe2o9a1tpXTtoLnQ9 TWF0aC5taW4oaC50LGoudCk7aC5yPU1hdGgubWF4KGgucixqLnIpO2guYj1NYXRo Lm1heChoLmIsai5iKTtoLmw9TWF0aC5taW4oaC5sLGoubCk7fXJldHVybiBoO319 KTtlLlJlY3Q9Zi5leHBvcnRzPWE7fSwzKTsKaWYod2luZG93PT13aW5kb3cudG9w KSFmdW5jdGlvbigpe3ZhciBhPWZ1bmN0aW9uKCl7dmFyIGI9MDtyZXR1cm4gZnVu Y3Rpb24oKXtpZighYil7Yj0xO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtiPTA7dmFy IGM9VmVjdG9yMi5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKTtzZXRDb29raWUoJ3dk JyxjLngrJ3gnK2MueSk7aWYod2luZG93LkFzeW5jU2lnbmFsJiZNYXRoLnJhbmRv bSgpPC4wMSluZXcgQXN5bmNTaWduYWwoJy9hamF4L2RpbWVuc2lvbl9jb250ZXh0 LnBocCcseyd4JzpjLngsJ3knOmMueX0pLnNlbmQoKTt9LDEwMCk7fX07fSgpO29u bG9hZFJlZ2lzdGVyKGEpO29ubG9hZFJlZ2lzdGVyKGZ1bmN0aW9uKCl7RXZlbnQu bGlzdGVuKHdpbmRvdywncmVzaXplJyxhKTt9KTtvbmxvYWRSZWdpc3RlcihmdW5j dGlvbigpe0V2ZW50Lmxpc3Rlbih3aW5kb3csJ2ZvY3VzJyxhKTt9KTt9KCk7Cl9f ZSgiRXJyb3JEaWFsb2ciLFsiRGlhbG9nIl0sZnVuY3Rpb24oZCxmLGUsYyl7dmFy IGE9ZigiRGlhbG9nIik7dmFyIGI9e3Nob3dBc3luY0Vycm9yOmZ1bmN0aW9uKGgp e3RyeXtyZXR1cm4gYi5zaG93KGguZ2V0RXJyb3JTdW1tYXJ5KCksaC5nZXRFcnJv ckRlc2NyaXB0aW9uKCkpO31jYXRjaChnKXthbGVydChoKTt9fSxzaG93OmZ1bmN0 aW9uKGosaSxoLGcpe3JldHVybiAobmV3IGEoKSkuc2V0VGl0bGUoaikuc2V0Qm9k eShpKS5zZXRCdXR0b25zKFthLk9LXSkuc2V0U3RhY2thYmxlKHRydWUpLnNldE1v ZGFsKHRydWUpLnNldEhhbmRsZXIoaHx8YmFnb2Zob2xkaW5nKS5zZXRCdXR0b25z TWVzc2FnZShnfHwnJykuc2hvdygpO319O2UuZXhwb3J0cz1iO30pOwpfX2UoImVy cm9yLWRpYWxvZyIsWyJFcnJvckRpYWxvZyJdLGZ1bmN0aW9uKGIsYyl7dmFyIGE9 YygnRXJyb3JEaWFsb2cnKTtiLkVycm9yRGlhbG9nPWE7fSwzKTsKSG92ZXJjYXJk PXdpbmRvdy5Ib3ZlcmNhcmR8fHtSRVNFUlZFRF9XSURUSDoyOTcsUkVTRVJWRURf SEVJR0hUOjIzNyxkaWFsb2dzOnt9LGFjdGl2ZTp7fSxjb250ZXh0RWxlbTpudWxs LGhvdmVyRWxlbTpudWxsLHNob3dpbmdEaWFsb2c6bnVsbCxmZXRjaERlbGF5OjE1 MCxzaG93RGVsYXk6NzAwLGxvYWRpbmdEZWxheToxMDAwLGhpZGVEZWxheToyNTAs ZmV0Y2hUaW1lcjpudWxsLHNob3dUaW1lcjpudWxsLGxvYWRpbmdUaW1lcjpudWxs LGhpZGVUaW1lcjpudWxsLGluaXQ6ZnVuY3Rpb24oKXtpZih1YS5pZSgpPDcpcmV0 dXJuO0V2ZW50Lmxpc3Rlbihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJ21vdXNl b3ZlcicsdGhpcy5oYW5kbGUuYmluZCh0aGlzKSk7RXZlbnQubGlzdGVuKHdpbmRv dywnc2Nyb2xsJyxiaW5kKHRoaXMsJ2hpZGUnLHRydWUpKTtBcmJpdGVyLnN1YnNj cmliZSgncGFnZV90cmFuc2l0aW9uJyxmdW5jdGlvbigpe3RoaXMuYWJvcnQoKTt0 aGlzLmRpcnR5QWxsKCk7fS5iaW5kKHRoaXMpLEFyYml0ZXIuU1VCU0NSSUJFX05F Vyk7QXJiaXRlci5zdWJzY3JpYmUoJ2xheWVyX3Nob3duJyxmdW5jdGlvbihhLGIp e2IudHlwZSE9J0hvdmVyY2FyZCcmJmIudHlwZSE9J092ZXJsYXknJiZ0aGlzLmFi b3J0KCk7fS5iaW5kKHRoaXMpLEFyYml0ZXIuU1VCU0NSSUJFX05FVyk7dGhpcy5p bml0PWJhZ29maG9sZGluZzt9LGhhbmRsZTpmdW5jdGlvbihldmVudCl7dmFyIGE9 UGFyZW50LmJ5VGFnKGV2ZW50LmdldFRhcmdldCgpLCdhJyk7aWYoYSYmdGhpcy5z ZXRBY3RpdmUoYSkpe3RoaXMucHJvY2VzcyhhKTtldmVudC5zdG9wKCk7fX0sc2V0 QWN0aXZlOmZ1bmN0aW9uKGIpe3RoaXMuaG92ZXJFbGVtPWI7aWYoIXRoaXMuaXNB Y3RpdmUoYikpe3ZhciBhO2lmKCFifHwhKGE9dGhpcy5nZXRFbmRwb2ludChiKSkp e3RoaXMuYWN0aXZlLm1vdmVUb2tlbiYmdGhpcy5hY3RpdmUubW92ZVRva2VuLnJl bW92ZSgpO3RoaXMuYWN0aXZlPXt9O3JldHVybiBmYWxzZTt9aWYodGhpcy5hY3Rp dmUubm9kZSE9Yil7dGhpcy5hY3RpdmUubW92ZVRva2VuJiZ0aGlzLmFjdGl2ZS5t b3ZlVG9rZW4ucmVtb3ZlKCk7dGhpcy5hY3RpdmU9e25vZGU6YixlbmRwb2ludDph LHBvczpudWxsfTt9fXJldHVybiB0cnVlO30saXNBY3RpdmU6ZnVuY3Rpb24oYSl7 cmV0dXJuIGEmJnRoaXMuY29udGV4dEVsZW0mJnRoaXMuYWN0aXZlLm5vZGU9PWE7 fSxnZXRFbmRwb2ludDpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUo J2RhdGEtaG92ZXJjYXJkJyk7fSxwcm9jZXNzOmZ1bmN0aW9uKGIpe3ZhciBkPUV2 ZW50Lmxpc3RlbihiLCdtb3VzZW91dCcsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQo dGhpcy5mZXRjaFRpbWVyKTtjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZXIpO2Qu cmVtb3ZlKCk7dGhpcy5ob3ZlckVsZW09bnVsbDt0aGlzLmhpZGUoKTt9LmJpbmQo dGhpcykpO2lmKCF0aGlzLmFjdGl2ZS5tb3ZlVG9rZW4pdGhpcy5hY3RpdmUubW92 ZVRva2VuPUV2ZW50Lmxpc3RlbihiLCdtb3VzZW1vdmUnLGZ1bmN0aW9uKGV2ZW50 KXt0aGlzLmFjdGl2ZS5wb3M9VmVjdG9yMi5nZXRFdmVudFBvc2l0aW9uKGV2ZW50 KTt9LmJpbmQodGhpcykpO2NsZWFyVGltZW91dCh0aGlzLmZldGNoVGltZXIpO2Ns ZWFyVGltZW91dCh0aGlzLnNob3dUaW1lcik7Y2xlYXJUaW1lb3V0KHRoaXMuaGlk ZVRpbWVyKTt2YXIgYT10aGlzLmZldGNoRGVsYXk7dmFyIGM9dGhpcy5jb250ZXh0 RWxlbT90aGlzLmhpZGVEZWxheTp0aGlzLnNob3dEZWxheTtpZihiLmdldEF0dHJp YnV0ZSgnZGF0YS1ob3ZlcmNhcmQtaW5zdGFudCcpKWE9Yz01MDt0aGlzLmZldGNo VGltZXI9c2V0VGltZW91dCh0aGlzLmZldGNoLmJpbmQodGhpcyxiKSxhKTt0aGlz LnNob3dUaW1lcj1zZXRUaW1lb3V0KHRoaXMuc2hvdy5iaW5kKHRoaXMsYiksYyk7 fSxzaG93OmZ1bmN0aW9uKGMsYil7aWYodGhpcy5hY3RpdmUubm9kZSE9YylyZXR1 cm47dmFyIGE9dGhpcy5kaWFsb2dzW3RoaXMuZ2V0RW5kcG9pbnQoYyldO2lmKGEp e3RoaXMuc2hvd0RpYWxvZyhhKTt9ZWxzZSBpZihiKXt0aGlzLnNob3dEaWFsb2co dGhpcy5fZ2V0TG9hZGluZ0RpYWxvZygpKTt9ZWxzZXt2YXIgZD10aGlzLmNvbnRl eHRFbGVtP3RoaXMuaGlkZURlbGF5OnRoaXMuc2hvd0RlbGF5O3RoaXMubG9hZGlu Z1RpbWVyPXNldFRpbWVvdXQodGhpcy5zaG93LmJpbmQodGhpcyxjLHRydWUpLHRo aXMubG9hZGluZ0RlbGF5LWQpO319LGhpZGU6ZnVuY3Rpb24oYSl7aWYoIXRoaXMu Y29udGV4dEVsZW0pcmV0dXJuO2lmKGEpe2lmKHRoaXMuc2hvd2luZ0RpYWxvZyl7 QXJiaXRlci5pbmZvcm0oJ2xheWVyX2hpZGRlbicse3R5cGU6J0hvdmVyY2FyZCd9 KTtBcmJpdGVyLmluZm9ybSgnSG92ZXJjYXJkL2hpZGUnLHtub2RlOnRoaXMuY29u dGV4dEVsZW19KTt0aGlzLnNob3dpbmdEaWFsb2cuaGlkZSgpO310aGlzLmhvdmVy RWxlbT1udWxsO3RoaXMuY29udGV4dEVsZW09bnVsbDt0aGlzLnNob3dpbmdEaWFs b2c9bnVsbDt9ZWxzZSB0aGlzLmhpZGVUaW1lcj1zZXRUaW1lb3V0KHRoaXMuaGlk ZS5iaW5kKHRoaXMsdHJ1ZSksdGhpcy5oaWRlRGVsYXkpO30sYWJvcnQ6ZnVuY3Rp b24oKXt0aGlzLmhpZGUodHJ1ZSk7Y2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVy KTt9LHNob3dEaWFsb2c6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5hY3RpdmUubm9k ZTt2YXIgZT10aGlzLmNvbnRleHRFbGVtO3ZhciBjPWUhPWI7aWYodGhpcy5jb250 ZXh0RWxlbSl7dmFyIGQ9Q29udGV4dHVhbERpYWxvZ1guZ2V0SW5zdGFuY2UodGhp cy5jb250ZXh0RWxlbSk7ZCYmZC5oaWRlKCk7fWlmKCFET00uY29udGFpbnMoZG9j dW1lbnQuYm9keSxiKSl7dGhpcy5oaWRlKHRydWUpO3JldHVybjt9dGhpcy5jb250 ZXh0RWxlbT1iO3RoaXMuc2hvd2luZ0RpYWxvZz1hO3RoaXMucG9zaXRpb24oKTth LnNldENvbnRleHQoYikuc2hvdygpO2lmKGMpeyhmdW5jdGlvbigpe25ldyBBc3lu Y1NpZ25hbCgnL2FqYXgvaG92ZXJjYXJkL3Nob3duLnBocCcpLnNlbmQoKTt1c2Vy X2FjdGlvbignaGltcCcsdGhpcy5jb250ZXh0RWxlbSxudWxsLCdGT1JDRScse2Z0 OntldnQ6Mzl9fSk7fS5iaW5kKHRoaXMpKS5kZWZlcigpO2lmKGUpe0FyYml0ZXIu aW5mb3JtKCdIb3ZlcmNhcmQvaGlkZScse25vZGU6ZX0pO31lbHNlIEFyYml0ZXIu aW5mb3JtKCdsYXllcl9zaG93bicse3R5cGU6J0hvdmVyY2FyZCd9KTtBcmJpdGVy LmluZm9ybSgnSG92ZXJjYXJkL3Nob3cnLHtub2RlOmJ9KTt9fSxwb3NpdGlvbjpm dW5jdGlvbigpe3ZhciBqPVZlY3RvcjIuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCk7 dmFyIGM9VmVjdG9yMi5nZXRFbGVtZW50UG9zaXRpb24odGhpcy5jb250ZXh0RWxl bSwndmlld3BvcnQnKTt2YXIgZD1jLmNvbnZlcnRUbygnZG9jdW1lbnQnKTt2YXIg Yj10aGlzLmdldEJvdW5kcyh0aGlzLmNvbnRleHRFbGVtKTt2YXIgaT0nYWJvdmUn O3ZhciBhPSdsZWZ0Jzt2YXIgZz10aGlzLmNhbGNPZmZzZXRZKGQsYiwnYWJvdmUn KTtpZihjLnkrZzw9dGhpcy5SRVNFUlZFRF9IRUlHSFQpe3ZhciBoPXRoaXMuY2Fs Y09mZnNldFkoZCxiLCdiZWxvdycpO2lmKGMueStoK3RoaXMuY29udGV4dEVsZW0u b2Zmc2V0SGVpZ2h0K3RoaXMuUkVTRVJWRURfSEVJR0hUPGoueSl7aT0nYmVsb3cn O2c9aDt9fXZhciBrPWoueDt3aW5kb3cuQ2hhdFNpZGViYXImJihrLT1DaGF0U2lk ZWJhci5nZXRWaXNpYmxlV2lkdGgoKSk7dmFyIGU9dGhpcy5jYWxjT2Zmc2V0WChk LGIsJ2xlZnQnKTtpZihjLngrZSt0aGlzLlJFU0VSVkVEX1dJRFRIPj1rKXt2YXIg Zj10aGlzLmNhbGNPZmZzZXRYKGQsYiwncmlnaHQnKTtpZihjLngrZit0aGlzLmNv bnRleHRFbGVtLm9mZnNldFdpZHRoPnRoaXMuUkVTRVJWRURfV0lEVEgpe2E9J3Jp Z2h0JztlPWY7fX10aGlzLnNob3dpbmdEaWFsb2cuc2V0UG9zaXRpb24oaSkuc2V0 QWxpZ25IKGEpLnNldE9mZnNldFgoZSkuc2V0T2Zmc2V0WShnKTt9LGNhbGNPZmZz ZXRYOmZ1bmN0aW9uKGMsYixhKXtpZihhPT0nbGVmdCcpcmV0dXJuIGIubC1jLng7 cmV0dXJuIGIuci0oYy54K3RoaXMuY29udGV4dEVsZW0ub2Zmc2V0V2lkdGgpO30s Y2FsY09mZnNldFk6ZnVuY3Rpb24oYixhLGMpe2lmKGM9PSdhYm92ZScpcmV0dXJu IGEudC1iLnk7cmV0dXJuIGEuYi0oYi55K3RoaXMuY29udGV4dEVsZW0ub2Zmc2V0 SGVpZ2h0KTt9LGdldEJvdW5kczpmdW5jdGlvbihlKXt2YXIgYT10aGlzLmFjdGl2 ZS5wb3M7dmFyIGg9ZS5nZXRDbGllbnRSZWN0cygpO2lmKCFhfHxoLmxlbmd0aD09 PTApcmV0dXJuIFJlY3QuZ2V0RWxlbWVudEJvdW5kcyhlKTt2YXIgYjt2YXIgYz1m YWxzZTtmb3IodmFyIGQ9MDtkPGgubGVuZ3RoO2QrKyl7dmFyIGc9bmV3IFJlY3Qo TWF0aC5yb3VuZChoW2RdLnRvcCksTWF0aC5yb3VuZChoW2RdLnJpZ2h0KSxNYXRo LnJvdW5kKGhbZF0uYm90dG9tKSxNYXRoLnJvdW5kKGhbZF0ubGVmdCksJ3ZpZXdw b3J0JykuY29udmVydFRvKCdkb2N1bWVudCcpO3ZhciBmPWcuZ2V0UG9zaXRpb25W ZWN0b3IoKTt2YXIgaT1mLmFkZChnLmdldERpbWVuc2lvblZlY3RvcigpKTtpZigh Ynx8KGYueDw9Yi5sJiZmLnk+Yi50KSl7aWYoYylicmVhaztiPW5ldyBSZWN0KGYu eSxpLngsaS55LGYueCwnZG9jdW1lbnQnKTt9ZWxzZXtiLnQ9TWF0aC5taW4oYi50 LGYueSk7Yi5iPU1hdGgubWF4KGIuYixpLnkpO2Iucj1pLng7fWlmKGcuY29udGFp bnMoYSkpYz10cnVlO31yZXR1cm4gYjt9LGZldGNoOmZ1bmN0aW9uKGMpe2lmKGMu aWQmJnRoaXMuZGlhbG9nc1tjLmlkXSE9bnVsbClyZXR1cm47dmFyIGE9dGhpcy5n ZXRFbmRwb2ludChjKTtpZih0aGlzLmRpYWxvZ3NbYV0hPW51bGwpcmV0dXJuO3Ro aXMuc2V0RmV0Y2hJblByb2dyZXNzKGEpO3ZhciBiPWZ1bmN0aW9uKCl7dGhpcy5k aXJ0eShhKTt0aGlzLmFib3J0KCk7fS5iaW5kKHRoaXMpO25ldyBBc3luY1JlcXVl c3QoYSkuc2V0RGF0YSh7ZW5kcG9pbnQ6YX0pLnNldE1ldGhvZCgnR0VUJykuc2V0 UmVhZE9ubHkodHJ1ZSkuc2V0RXJyb3JIYW5kbGVyKGIpLnNldFRyYW5zcG9ydEVy cm9ySGFuZGxlcihiKS5zZW5kKCk7fSxzZXRGZXRjaEluUHJvZ3Jlc3M6ZnVuY3Rp b24oYSl7dGhpcy5kaWFsb2dzW2FdPWZhbHNlO30sX2dldExvYWRpbmdEaWFsb2c6 ZnVuY3Rpb24oKXt2YXIgYT1uZXcgQ29udGV4dHVhbERpYWxvZ1goKTthLmluaXQo JE4oJ2Rpdicse2NsYXNzTmFtZTonSG92ZXJjYXJkTG9hZGluZyd9LCJZXHUwMGZj a2xlbml5b3IuLi4iKSkuc2V0RGVzdHJveU9uSGlkZShmYWxzZSkuc2V0RmFkZU9u U2hvdyhmYWxzZSkuc2V0RmFkZU9uSGlkZShmYWxzZSk7dGhpcy5faW5pdERpYWxv Z1N1YnNjcmlwdGlvbnMoYSk7dGhpcy5fZ2V0TG9hZGluZ0RpYWxvZz1iYWdvZihh KTtyZXR1cm4gYTt9LHNldERpYWxvZzpmdW5jdGlvbihiLGEpe3RoaXMuZGlhbG9n c1tiXT1hO3RoaXMuX2luaXREaWFsb2dTdWJzY3JpcHRpb25zKGEpO2lmKHRoaXMu YWN0aXZlLmVuZHBvaW50PT1iJiZ0aGlzLmhvdmVyRWxlbT09dGhpcy5hY3RpdmUu bm9kZSl0aGlzLnNob3dEaWFsb2coYSk7fSxfaW5pdERpYWxvZ1N1YnNjcmlwdGlv bnM6ZnVuY3Rpb24oYSl7YS5zdWJzY3JpYmUoJ21vdXNlZW50ZXInLGZ1bmN0aW9u KCl7Y2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVyKTt0aGlzLmhvdmVyRWxlbT10 aGlzLmFjdGl2ZS5ub2RlO30uYmluZCh0aGlzKSk7YS5zdWJzY3JpYmUoJ21vdXNl bGVhdmUnLGZ1bmN0aW9uKCl7dGhpcy5oaWRlKGZhbHNlKTt0aGlzLmhvdmVyRWxl bT1udWxsO30uYmluZCh0aGlzKSk7fSxjb250YWluczpmdW5jdGlvbihhKXtpZih0 aGlzLnNob3dpbmdEaWFsb2cpcmV0dXJuIERPTS5jb250YWlucyh0aGlzLnNob3dp bmdEaWFsb2cuZ2V0T3ZlcmxheSgpLGEpO3JldHVybiBmYWxzZTt9LGRpcnR5OmZ1 bmN0aW9uKGIpe3ZhciBhPXRoaXMuZGlhbG9nc1tiXTtpZihhKXthLmRlc3Ryb3ko KTtkZWxldGUgdGhpcy5kaWFsb2dzW2JdO319LGRpcnR5QWxsOmZ1bmN0aW9uKCl7 Zm9yKHZhciBiIGluIHRoaXMuZGlhbG9ncyl7dmFyIGE9dGhpcy5kaWFsb2dzW2Jd O2EmJnRoaXMuZGlydHkoYik7fX19O29ubG9hZFJlZ2lzdGVyKEhvdmVyY2FyZC5p bml0LmJpbmQoSG92ZXJjYXJkKSk7CmZ1bmN0aW9uIERvdWJseUxpbmtlZExpc3RN YXAoKXt0aGlzLl9oZWFkPW51bGw7dGhpcy5fdGFpbD1udWxsO3RoaXMuX25vZGVz PXt9O31Eb3VibHlMaW5rZWRMaXN0TWFwLnByb3RvdHlwZT17Z2V0OmZ1bmN0aW9u KGEpe3JldHVybiB0aGlzLl9ub2Rlc1thXT90aGlzLl9ub2Rlc1thXS5kYXRhOm51 bGw7fSxfaW5zZXJ0OmZ1bmN0aW9uKGMsYSxmLGIpe2YmJiF0aGlzLl9ub2Rlc1tm XSYmKGY9bnVsbCk7dmFyIGQ9KGYmJnRoaXMuX25vZGVzW2ZdKXx8KGI/dGhpcy5f aGVhZDp0aGlzLl90YWlsKSxlPXtkYXRhOmEsa2V5OmMsbmV4dDpudWxsLHByZXY6 bnVsbH07aWYoZCl7dGhpcy5yZW1vdmUoYyk7aWYoYil7ZS5wcmV2PWQucHJldjtk LnByZXYmJihkLnByZXYubmV4dD1lKTtkLnByZXY9ZTtlLm5leHQ9ZDt9ZWxzZXtl Lm5leHQ9ZC5uZXh0O2QubmV4dCYmKGQubmV4dC5wcmV2PWUpO2QubmV4dD1lO2Uu cHJldj1kO319ZS5wcmV2PT09bnVsbCYmKHRoaXMuX2hlYWQ9ZSk7ZS5uZXh0PT09 bnVsbCYmKHRoaXMuX3RhaWw9ZSk7dGhpcy5fbm9kZXNbY109ZTtyZXR1cm4gdGhp czt9LGluc2VydEJlZm9yZTpmdW5jdGlvbihiLGEsYyl7cmV0dXJuIHRoaXMuX2lu c2VydChiLGEsYyx0cnVlKTt9LGluc2VydEFmdGVyOmZ1bmN0aW9uKGIsYSxjKXty ZXR1cm4gdGhpcy5faW5zZXJ0KGIsYSxjLGZhbHNlKTt9LHByZXBlbmQ6ZnVuY3Rp b24oYixhKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUoYixhLHRoaXMuX2hlYWQm JnRoaXMuX2hlYWQua2V5KTt9LGFwcGVuZDpmdW5jdGlvbihiLGEpe3JldHVybiB0 aGlzLmluc2VydEFmdGVyKGIsYSx0aGlzLl90YWlsJiZ0aGlzLl90YWlsLmtleSk7 fSxyZW1vdmU6ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy5fbm9kZXNbYl07aWYoYSl7 dmFyIGM9YS5uZXh0LGQ9YS5wcmV2O2MmJihjLnByZXY9ZCk7ZCYmKGQubmV4dD1j KTt0aGlzLl9oZWFkPT09YSYmKHRoaXMuX2hlYWQ9Yyk7dGhpcy5fdGFpbD09PWEm Jih0aGlzLl90YWlsPWQpO2RlbGV0ZSB0aGlzLl9ub2Rlc1tiXTt9cmV0dXJuIHRo aXM7fSxmaW5kOmZ1bmN0aW9uKGIpe2Zvcih2YXIgYT10aGlzLl9oZWFkO2E7YT1h Lm5leHQpaWYoYihhLmRhdGEpKXJldHVybiBhLmtleTtyZXR1cm4gbnVsbDt9LHJl ZHVjZTpmdW5jdGlvbihiLGEpe2Zvcih2YXIgYz10aGlzLl9oZWFkO2M7Yz1jLm5l eHQpYT1iKGMuZGF0YSxhKTtyZXR1cm4gYTt9LGV4aXN0czpmdW5jdGlvbihhKXty ZXR1cm4gISF0aGlzLl9ub2Rlc1thXTt9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1 cm4gIXRoaXMuX2hlYWQ7fX07Cl9fZSgiUG9sbGVyIixbIkFzeW5jUmVxdWVzdCIs ImNvb2tpZSIsImNvcHlQcm9wZXJ0aWVzIiwiRW52IiwidXRpbCJdLGZ1bmN0aW9u KGgsaixpLGcpe3ZhciBhPWooJ0FzeW5jUmVxdWVzdCcpO3ZhciBiPWooJ2Nvb2tp ZScpO3ZhciBmPWooJ2NvcHlQcm9wZXJ0aWVzJyk7dmFyIGM9aignRW52Jyk7dmFy IGU9aigndXRpbCcpO2Z1bmN0aW9uIGQobSxsLGspe3RoaXMuX2NsZWFyT25RdWlj a2xpbmdFdmVudD0hazt0aGlzLl9yZXF1ZXN0Q2FsbGJhY2s9bDt0aGlzLnNldFRp bWVQZXJpb2QobSk7fWQuTUlOX1RJTUVfUEVSSU9EPTIwMDA7ZihkLnByb3RvdHlw ZSx7c3RvcDpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLl90b2tlbik7dGhp cy5fdG9rZW49bnVsbDt0aGlzLl9jYW5jZWxSZXF1ZXN0KCk7fSxzY2hlZHVsZVJl cXVlc3Q6ZnVuY3Rpb24oKXt0aGlzLnN0b3AoKTtpZih0aGlzLl90aW1lUGVyaW9k KXRoaXMuX3Rva2VuPXRoaXMuX21ha2VSZXF1ZXN0LmJpbmQodGhpcykuZGVmZXIo dGhpcy5fdGltZVBlcmlvZCx0aGlzLl9jbGVhck9uUXVpY2tsaW5nRXZlbnQpO30s cmVxdWVzdE5vdzpmdW5jdGlvbigpe3RoaXMuc3RvcCgpO3RoaXMuX21ha2VSZXF1 ZXN0KCk7fSxfdGltZVBlcmlvZDpudWxsLHNldFRpbWVQZXJpb2Q6ZnVuY3Rpb24o ayl7az1rfHxudWxsO2lmKGsmJihpc05hTihrKXx8azxkLk1JTl9USU1FX1BFUklP RCkpcmV0dXJuO2lmKGsmJnRoaXMuX3RpbWVQZXJpb2Q9PW51bGwpdGhpcy5fdG9r ZW49dGhpcy5fbWFrZVJlcXVlc3QuYmluZCh0aGlzKS5kZWZlcihrLHRoaXMuX2Ns ZWFyT25RdWlja2xpbmdFdmVudHMpO3RoaXMuX3RpbWVQZXJpb2Q9azt9LF9tYWtl UmVxdWVzdDpmdW5jdGlvbigpe3RoaXMuX2NhbmNlbFJlcXVlc3QoKTtpZighdGhp cy5faXNMb2FkVXNlcigpKXJldHVybjt2YXIgbD1uZXcgYSgpO3ZhciBrPXRydWU7 bC5zZXRJbml0aWFsSGFuZGxlcihmdW5jdGlvbigpe3JldHVybiBrO30pO3RoaXMu X2NhbmNlbFJlcXVlc3Q9ZnVuY3Rpb24oKXtrPWZhbHNlO307bC5zZXRGaW5hbGx5 SGFuZGxlcih0aGlzLnNjaGVkdWxlUmVxdWVzdC5iaW5kKHRoaXMpKTtsLnNldElu aXRpYWxIYW5kbGVyPWJhZ29maG9sZGluZztsLnNldEZpbmFsbHlIYW5kbGVyPWJh Z29maG9sZGluZzt0aGlzLl9yZXF1ZXN0Q2FsbGJhY2sobCk7aWYoaylsLnNlbmQo KTt9LF9pc0xvYWRVc2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGMudXNlcj09Z2V0Q29v a2llKCdjX3VzZXInKTt9LF9jYW5jZWxSZXF1ZXN0OmJhZ29maG9sZGluZyxnZXRU aW1lUGVyaW9kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RpbWVQZXJpb2Q7fX0p O2guUG9sbGVyPWkuZXhwb3J0cz1kO30sMyk7Cl9fZSgiY29uc3RydWN0b3ItY2Fj aGUiLFsiSlNDQyJdLGZ1bmN0aW9uKGIsYyl7dmFyIGE9YygnSlNDQycpO2IuSlND Qz1hO30sMyk7Cl9fZSgiUXVpY2tsaW5nIixbInN0cmluZy1leHRlbnNpb25zIiwi YWpheHBpcGUiLCJhcmJpdGVyIiwiZG9tIiwiUGFnZVRyYW5zaXRpb25zIiwiRGF0 YVN0b3JlIiwiRG9jdW1lbnRUaXRsZSIsImNvcHlQcm9wZXJ0aWVzIiwiaXNFbXB0 eSJdLGZ1bmN0aW9uKGssbixtLGope24oInN0cmluZy1leHRlbnNpb25zIik7dmFy IGE9bigiYWpheHBpcGUiKTt2YXIgYj1uKCJhcmJpdGVyIik7dmFyIGM9bigiZG9t Iik7dmFyIGY9bigiUGFnZVRyYW5zaXRpb25zIik7dmFyIGQ9bigiRGF0YVN0b3Jl Iik7dmFyIGU9bigiRG9jdW1lbnRUaXRsZSIpO3ZhciBpPW4oImNvcHlQcm9wZXJ0 aWVzIik7dmFyIGw9bigiaXNFbXB0eSIpO3ZhciBoPXtpc0FjdGl2ZTpmdW5jdGlv bigpe3JldHVybiBoLl9pc19hY3RpdmV8fGZhbHNlO30saW5pdDpmdW5jdGlvbihx LHAsbyl7aWYoaC5faXNfaW5pdGlhbGl6ZWQpcmV0dXJuO2koaCx7X2lzX2luaXRp YWxpemVkOnRydWUsX2lzX2FjdGl2ZTp0cnVlLF9zZXNzaW9uX2xlbmd0aDpwLF9p c19pbl90cmFuc2l0aW9uOmZhbHNlLF90aXRsZV9pbnRlcnZhbDpmYWxzZSxfaWVf Y2FjaGVfdGl0bGU6JycsX3ZlcnNpb246cX0pO2guX2luc3RydW1lbnRUaW1lb3V0 RnVuYygnc2V0SW50ZXJ2YWwnKTtoLl9pbnN0cnVtZW50VGltZW91dEZ1bmMoJ3Nl dFRpbWVvdXQnKTtoLl9pbmFjdGl2ZVBhZ2VSZWdleD1uZXcgUmVnRXhwKG8pO2Yu cmVnaXN0ZXJIYW5kbGVyKGguX3RyYW5zaXRpb25IYW5kbGVyLDEpO30sX3N0YXJ0 UXVpY2tsaW5nVHJhbnNpdGlvbjpmdW5jdGlvbigpe2guX2lzX2luX3RyYW5zaXRp b249dHJ1ZTt9LF9zdG9wUXVpY2tsaW5nVHJhbnNpdGlvbjpmdW5jdGlvbigpeyhm dW5jdGlvbigpe2guX2lzX2luX3RyYW5zaXRpb249ZmFsc2U7fSkuZGVmZXIoKTt9 LGlzUGFnZUFjdGl2ZTpmdW5jdGlvbihyKXtpZihyPT0nIycpcmV0dXJuIGZhbHNl O3I9bmV3IFVSSShyKTtpZihyLmdldERvbWFpbigpJiZyLmdldERvbWFpbigpIT1V UkkoKS5nZXREb21haW4oKSlyZXR1cm4gZmFsc2U7aWYoci5nZXRQYXRoKCk9PScv bC5waHAnKXt2YXIgcD1yLmdldFF1ZXJ5RGF0YSgpLnU7aWYocCl7cD1VUkkodW5l c2NhcGUocCkpLmdldERvbWFpbigpO2lmKHAmJnAhPVVSSSgpLmdldERvbWFpbigp KXJldHVybiBmYWxzZTt9fXZhciBxPXIuZ2V0UGF0aCgpO3ZhciBvPXIuZ2V0UXVl cnlEYXRhKCk7aWYoIWwobykpcSs9Jz8nK1VSSS5pbXBsb2RlUXVlcnkobyk7cmV0 dXJuICFoLl9pbmFjdGl2ZVBhZ2VSZWdleC50ZXN0KHEpO30sX3NldEhUTUw6ZnVu Y3Rpb24obyxwKXtpZih1YS5pZSgpPD02KXtvLmlubmVySFRNTD1wO31lbHNlIGMu c2V0Q29udGVudChvLEhUTUwocCkuc2V0RGVmZXJyZWQodHJ1ZSkpO30sX3RyYW5z aXRpb25IYW5kbGVyOmZ1bmN0aW9uKG8pe2Euc2V0Q3VycmVudFJlcXVlc3QobnVs bCk7aWYoaC5faXNUaW1lVG9SZWZyZXNoKCkpcmV0dXJuIGZhbHNlO2lmKCFoLmlz UGFnZUFjdGl2ZShvKSlyZXR1cm4gZmFsc2U7d2luZG93LkV4aXRUaW1lPShuZXcg RGF0ZSgpKS5nZXRUaW1lKCk7cmVtb3ZlSG9vaygnb25hZnRlcmxvYWRob29rcycp O3JlbW92ZUhvb2soJ29ubG9hZGhvb2tzJyk7X3J1bkhvb2tzKCdvbmxlYXZlaG9v a3MnKTtiLmluZm9ybSgnb25sb2FkL2V4aXQnLHRydWUpO2guX3N0YXJ0UXVpY2ts aW5nVHJhbnNpdGlvbigpO25ldyBnKG8pLnNldENhbnZhc0lkKCdjb250ZW50Jyku c2VuZCgpO3JldHVybiB0cnVlO30sX2NoYW5nZVBhZ2VUaXRsZTpmdW5jdGlvbihv KXtvPW98fCdGYWNlYm9vayc7ZS5zZXQobyk7aWYodWEuaWUoKSl7aC5faWVfY2Fj aGVfdGl0bGU9bztpZighaC5fdGl0bGVfaW50ZXJ2YWwpaC5fdGl0bGVfaW50ZXJ2 YWw9d2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCl7dmFyIHA9aC5faWVfY2Fj aGVfdGl0bGU7dmFyIHE9ZS5nZXQoKTtpZihwIT1xKWUuc2V0KHApO30sNTAwMCxm YWxzZSk7fX0sX3JlcGxhY2VTeW5kaWNhdGlvbkxpbmtzOmZ1bmN0aW9uKHIpe3Zh ciBxPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdsaW5rJyk7Zm9yKHZh ciBwPTA7cDxxLmxlbmd0aDsrK3Ape2lmKHFbcF0ucmVsIT0nYWx0ZXJuYXRlJylj b250aW51ZTtjLnJlbW92ZShxW3BdKTt9aWYoci5sZW5ndGgpe3ZhciBvPWMuZmlu ZChkb2N1bWVudCwnaGVhZCcpO28mJmMuYXBwZW5kQ29udGVudChvLEhUTUwoclsw XSkpO319LF9pc1RpbWVUb1JlZnJlc2g6ZnVuY3Rpb24oKXtoLl9sb2FkX2NvdW50 PShoLl9sb2FkX2NvdW50fHwwKSsxO3JldHVybiBoLl9sb2FkX2NvdW50Pj1oLl9z ZXNzaW9uX2xlbmd0aDt9LF9pbnN0cnVtZW50VGltZW91dEZ1bmM6ZnVuY3Rpb24o byl7d2luZG93W28rJ19uYXRpdmUnXT0oZnVuY3Rpb24ocSl7dmFyIHA9ZnVuY3Rp b24gcChzLHIpe3JldHVybiBxKHMscik7fTtyZXR1cm4gcDt9KSh3aW5kb3dbb10p O3dpbmRvd1tvXT1mdW5jdGlvbiBfc2V0VGltZW91dChyLHEscCl7dmFyIHM9d2lu ZG93W28rJ19uYXRpdmUnXShyLHEpO2lmKHE+MClpZihwIT09ZmFsc2Upb25sZWF2 ZVJlZ2lzdGVyKGZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChzKTt9KTtyZXR1cm4g czt9O319O2Z1bmN0aW9uIGcocCl7dmFyIG89e3ZlcnNpb246aC5fdmVyc2lvbn07 dGhpcy5wYXJlbnQuY29uc3RydWN0KHRoaXMscCx7cXVpY2tsaW5nOm99KTt9Q2xh c3MuZXh0ZW5kKGcsJ0FqYXhQaXBlUmVxdWVzdCcpO2cucHJvdG90eXBlPXtfcHJl Qm9vdGxvYWRGaXJzdFJlc3BvbnNlOmZ1bmN0aW9uKG8pe3JldHVybiB0cnVlO30s X2ZpcmVEb21Db250ZW50Q2FsbGJhY2s6ZnVuY3Rpb24oKXt0aGlzLl9yZXF1ZXN0 LmNhdmFscnkmJnRoaXMuX3JlcXVlc3QuY2F2YWxyeS5zZXRUaW1lU3RhbXAoJ3Rf ZG9tY29udGVudCcpO2guX3N0b3BRdWlja2xpbmdUcmFuc2l0aW9uKCk7Zi50cmFu c2l0aW9uQ29tcGxldGUoKTt0aGlzLl9vblBhZ2VEaXNwbGF5ZWQmJnRoaXMuX29u UGFnZURpc3BsYXllZCh0aGlzLnBpcGUpO3RoaXMucGFyZW50Ll9maXJlRG9tQ29u dGVudENhbGxiYWNrKCk7fSxfZmlyZU9ubG9hZENhbGxiYWNrOmZ1bmN0aW9uKCl7 aWYodGhpcy5fcmVxdWVzdC5jYXZhbHJ5KXt0aGlzLl9yZXF1ZXN0LmNhdmFscnku c2V0VGltZVN0YW1wKCd0X2hvb2tzJyk7dGhpcy5fcmVxdWVzdC5jYXZhbHJ5LnNl dFRpbWVTdGFtcCgndF9sYXlvdXQnKTt0aGlzLl9yZXF1ZXN0LmNhdmFscnkuc2V0 VGltZVN0YW1wKCd0X29ubG9hZCcpO310aGlzLnBhcmVudC5fZmlyZU9ubG9hZENh bGxiYWNrKCk7fSxpc1BhZ2VBY3RpdmU6ZnVuY3Rpb24obyl7cmV0dXJuIGguaXNQ YWdlQWN0aXZlKG8pO30sX3ZlcnNpb25DaGVjazpmdW5jdGlvbihvKXtpZihvLnZl cnNpb24hPWguX3ZlcnNpb24pe3ZhciBwPVsncXVpY2tsaW5nJywnYWpheHBpcGUn LCdhamF4cGlwZV90b2tlbiddO2dvX29yX3JlcGxhY2Uod2luZG93LmxvY2F0aW9u LFVSSShvLnVyaSkucmVtb3ZlUXVlcnlEYXRhKHApLHRydWUpO3JldHVybiBmYWxz ZTt9ZWxzZSByZXR1cm4gdHJ1ZTt9LF9wcm9jZXNzRmlyc3RSZXNwb25zZTpmdW5j dGlvbihxKXt2YXIgcD1xLmdldFBheWxvYWQoKTtoLl9jaGFuZ2VQYWdlVGl0bGUo cC50aXRsZSk7aC5fcmVwbGFjZVN5bmRpY2F0aW9uTGlua3MocC5zeW5kaWNhdGlv bnx8W10pO3dpbmRvdy5zY3JvbGxUbygwLDApO3ZhciBvPXAuYm9keV9jbGFzc3x8 Jyc7Q1NTLnNldENsYXNzKGRvY3VtZW50LmJvZHksbyk7fSxnZXRTYW5pdGl6ZWRQ YXJhbWV0ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIFsncXVpY2tsaW5nJ107fX07bS5l eHBvcnRzPWg7fSk7Cl9fZSgicXVpY2tsaW5nIixbIlF1aWNrbGluZyJdLGZ1bmN0 aW9uKGEsYil7YS5RdWlja2xpbmc9YS5RdWlja2xpbmd8fGIoJ1F1aWNrbGluZycp O30sMyk7Cm9ubG9hZFJlZ2lzdGVyKGZ1bmN0aW9uKCl7RXZlbnQubGlzdGVuKGRv Y3VtZW50LmRvY3VtZW50RWxlbWVudCwna2V5dXAnLGZ1bmN0aW9uKGV2ZW50KXt2 YXIgYz1ldmVudC5nZXRUYXJnZXQoKTtpZighRE9NLmlzTm9kZU9mVHlwZShjLFsn aW5wdXQnLCd0ZXh0YXJlYSddKSlyZXR1cm47aWYoRE9NLmlzTm9kZU9mVHlwZShj LCdpbnB1dCcpJiZjLnR5cGU9PSdwYXNzd29yZCcpcmV0dXJuO2lmKGMuZ2V0QXR0 cmlidXRlKCdkYXRhLXByZXZlbnQtYXV0by1mbGlwJykpcmV0dXJuO3ZhciBmPUlu cHV0LmdldFZhbHVlKGMpO3ZhciBiPShjLnN0eWxlJiZjLnN0eWxlLmRpcmVjdGlv bik7aWYoIWIpe2Zvcih2YXIgZD0wO2Q8Zi5sZW5ndGg7ZCsrKXt2YXIgYT1mLmNo YXJDb2RlQXQoZCk7aWYoYT49NDgpe3ZhciBlPShhPj0xNDcwJiZhPD0xOTIwKTtD U1Muc2V0U3R5bGUoYywnZGlyZWN0aW9uJyxlPydydGwnOidsdHInKTtyZXR1cm47 fX19ZWxzZSBpZihmLmxlbmd0aD09PTApQ1NTLnNldFN0eWxlKGMsJ2RpcmVjdGlv bicsJycpO30pO30pOwpfX2UoIm1heGxlbmd0aC1mb3JtLWxpc3RlbmVyIixbImV2 ZW50LWV4dGVuc2lvbnMiLCJmdW5jdGlvbi1leHRlbnNpb25zIiwiZG9tIiwiaW5w dXQtbWV0aG9kcyIsImlucHV0LXNlbGVjdGlvbiIsIm9iamVjdC1jb3JlLXV0aWxz Il0sZnVuY3Rpb24oZSxoLGcsZCl7aCgnZXZlbnQtZXh0ZW5zaW9ucycpO2goJ2Z1 bmN0aW9uLWV4dGVuc2lvbnMnKTt2YXIgYT1oKCdkb20nKTt2YXIgYj1oKCdpbnB1 dC1tZXRob2RzJyk7dmFyIGM9aCgnaW5wdXQtc2VsZWN0aW9uJyk7ZC5lbmZvcmNl PWZ1bmN0aW9uKGssbSl7dmFyIHE9Yi5nZXRWYWx1ZShrKTt2YXIgbD1xLmxlbmd0 aDt2YXIgbj1sLW07aWYobj4wKXt2YXIgbzt2YXIgaTt0cnl7bz1jLmdldChrKTtp PW8uZW5kO31jYXRjaChqKXtvPW51bGw7aT0wO31pZihpPj1uKWw9aTt2YXIgcD1s LW47aWYocCYmKHEuY2hhckNvZGVBdChwLTEpJjY0NTEyKT09PTU1Mjk2KXAtLTtp PU1hdGgubWluKGkscCk7Yi5zZXRWYWx1ZShrLHEuc2xpY2UoMCxwKStxLnNsaWNl KGwpKTtpZihvKWMuc2V0KGssTWF0aC5taW4oby5zdGFydCxpKSxpKTt9fTtmdW5j dGlvbiBmKGV2ZW50KXt2YXIgaT1ldmVudC5nZXRUYXJnZXQoKTt2YXIgaj1pLmdl dEF0dHJpYnV0ZSYmcGFyc2VJbnQoaS5nZXRBdHRyaWJ1dGUoJ21heGxlbmd0aCcp LDEwKTtpZihqPjAmJmEuaXNOb2RlT2ZUeXBlKGksWydpbnB1dCcsJ3RleHRhcmVh J10pKWQuZW5mb3JjZS5iaW5kKG51bGwsaSxqKS5kZWZlcigpO31FdmVudC5saXN0 ZW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHtrZXlkb3duOmYscGFzdGU6Zn0p O2goJ29iamVjdC1jb3JlLXV0aWxzJykuYWRkX3Byb3BlcnRpZXMoJ0lucHV0Jyx7 ZW5mb3JjZU1heExlbmd0aDpkLmVuZm9yY2V9KTt9LDMpOwpvbmxvYWRSZWdpc3Rl cihmdW5jdGlvbigpe0V2ZW50Lmxpc3Rlbihkb2N1bWVudC5kb2N1bWVudEVsZW1l bnQsJ3N1Ym1pdCcsZnVuY3Rpb24oYil7dmFyIGE9Yi5nZXRUYXJnZXQoKS5nZXRF bGVtZW50c0J5VGFnTmFtZSgnKicpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7Yysr KWlmKGFbY10uZ2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicpJiZJbnB1dC5pc0Vt cHR5KGFbY10pKUlucHV0LnNldFZhbHVlKGFbY10sJycpO30pO30pOwpvbmxvYWRS ZWdpc3RlcihmdW5jdGlvbigpe0V2ZW50Lmxpc3Rlbihkb2N1bWVudC5kb2N1bWVu dEVsZW1lbnQsJ3N1Ym1pdCcsZnVuY3Rpb24oYil7dmFyIGE9Yi5nZXRUYXJnZXQo KS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpO2Zvcih2YXIgYz0wO2M8YS5sZW5n dGg7YysrKWlmKGFbY10uZ2V0QXR0cmlidXRlKCdyZXF1aXJlZCcpJiZJbnB1dC5p c0VtcHR5KGFbY10pKXthW2NdLmZvY3VzKCk7cmV0dXJuIGZhbHNlO319LEV2ZW50 LlByaW9yaXR5LlVSR0VOVCk7fSk7CnZhciBMaXZlPXtsb2dBbGw6ZmFsc2Usc3Rh cnR1cDpmdW5jdGlvbigpe0xpdmUuc3RhcnR1cD1iYWdvZmhvbGRpbmc7QXJiaXRl ci5zdWJzY3JpYmUoUHJlc2VuY2VNZXNzYWdlLmdldEFyYml0ZXJNZXNzYWdlVHlw ZSgnbGl2ZScpLExpdmUuaGFuZGxlTWVzc2FnZS5iaW5kKExpdmUpKTt9LGxvb2t1 cExpdmVOb2RlOmZ1bmN0aW9uKGIsYSl7dmFyIGM9RE9NLnNjcnkoZG9jdW1lbnQu Ym9keSwnLmxpdmVfJytiKydfJythKTtjLmZvckVhY2goZnVuY3Rpb24oZSl7aWYo RGF0YVN0b3JlLmdldChlLCdzZXFudW0nKT09PXVuZGVmaW5lZCl7dmFyIGQ9SlNP Ti5wYXJzZShlLmdldEF0dHJpYnV0ZSgnZGF0YS1saXZlJykpO0RhdGFTdG9yZS5z ZXQoZSwnc2VxbnVtJyxkLnNlcSk7fX0pO3JldHVybiBjO30saGFuZGxlTWVzc2Fn ZTpmdW5jdGlvbihmLGIpe3ZhciBkPWIub2JqO3ZhciBjPWQuZmJpZDt2YXIgYT1k LmFzc29jO3ZhciBlPXRoaXMubG9va3VwTGl2ZU5vZGUoYyxhKTtpZighZSlyZXR1 cm4gZmFsc2U7ZS5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciBrPXtnZXRSZWxhdGl2 ZVRvOmZ1bmN0aW9uKCl7cmV0dXJuIGw7fX07aWYoZC5leHBzZXEpe3ZhciBpPURh dGFTdG9yZS5nZXQobCwnc2VxbnVtJyk7dmFyIGc9RGF0YVN0b3JlLmdldChsLCdt ZXNzYWdlX2J1ZmZlcicpO2lmKGc9PT11bmRlZmluZWQpe2c9e307RGF0YVN0b3Jl LnNldChsLCdtZXNzYWdlX2J1ZmZlcicsZyk7fXZhciBoPXtvYmo6ZH07Z1tkLmV4 cHNlcV09aDtpZihkLmV4cHNlcSE9aSl7TGl2ZS5sb2coJ21pc21hdGNoJyxkLmZi aWQsZC5leHBzZXEsaSk7cmV0dXJuIGZhbHNlO313aGlsZSh0cnVlKXtpPURhdGFT dG9yZS5nZXQobCwnc2VxbnVtJyk7dmFyIGo9Z1tpXTtpZihqKXtMaXZlLl9hcHBs eVVwZGF0ZXMoai5vYmoudXBkYXRlcyxrKTtMaXZlLmxvZygnc2VxbWF0Y2gnLGQu ZmJpZCwnZXhwJyxkLmV4cHNlcSwnY3VyJyxpKTtkZWxldGUgZ1tpXTt9ZWxzZSBi cmVhazt9fWVsc2UgTGl2ZS5fYXBwbHlVcGRhdGVzKGQudXBkYXRlcyxrKTt9KTt9 LF9hcHBseVVwZGF0ZXM6ZnVuY3Rpb24oYyxiKXt0cnl7JEEoYykuZWFjaChmdW5j dGlvbihkKXtuZXcgRnVuY3Rpb24oZCkuYXBwbHkoYik7fSk7fWNhdGNoKGEpe319 LGxvZzpmdW5jdGlvbigpe2lmKExpdmUubG9nQWxsKXt2YXIgYT0kQShhcmd1bWVu dHMpLmpvaW4oIjoiKTtuZXcgQXN5bmNTaWduYWwoJy9jb21tb24vc2NyaWJlX2Vu ZHBvaW50LnBocCcse2M6J2xpdmVfc2VxdWVuY2UnLG06YX0pLnNlbmQoKTt9fX07 Cl9fZSgiTGl2ZVRpbWVyIixbImNzcyIsImRvbSIsInVhIl0sZnVuY3Rpb24oZCxm LGUsYyl7dmFyIGE9ZigiY3NzIik7dmFyIGI9ZigiZG9tIik7dmFyIGc9ZigidWEi KTtlLmV4cG9ydHM9ZC5MaXZlVGltZXJ8fHtyZXN0YXJ0OmZ1bmN0aW9uKGgpe3Ro aXMuc2VydmVyVGltZT1oO3RoaXMubG9jYWxTdGFydFRpbWU9RGF0ZS5ub3coKS8x MDAwO3RoaXMudXBkYXRlVGltZVN0YW1wcygpO30sdXBkYXRlVGltZVN0YW1wczpm dW5jdGlvbigpe0xpdmVUaW1lci50aW1lc3RhbXBzPWIuc2NyeShkb2N1bWVudC5i b2R5LCdhYmJyLmxpdmV0aW1lc3RhbXAnKTtMaXZlVGltZXIuc3RhcnRMb29wKDIw MDAwKTt9LGFkZFRpbWVTdGFtcHM6ZnVuY3Rpb24oaCl7aWYoIWh8fCFMaXZlVGlt ZXIudGltZXN0YW1wcylyZXR1cm47aWYoYi5pc05vZGVPZlR5cGUoaCwnYWJicicp JiZhLmhhc0NsYXNzKGgsJ2xpdmV0aW1lc3RhbXAnKSl7TGl2ZVRpbWVyLnRpbWVz dGFtcHMucHVzaChoKTt9ZWxzZXt2YXIgaj1iLnNjcnkoaCwnYWJici5saXZldGlt ZXN0YW1wJyk7Zm9yKHZhciBpPTA7aTxqLmxlbmd0aDsrK2kpTGl2ZVRpbWVyLnRp bWVzdGFtcHMucHVzaChqW2ldKTt9TGl2ZVRpbWVyLnN0YXJ0TG9vcCgwKTt9LHN0 YXJ0TG9vcDpmdW5jdGlvbihoKXt0aGlzLnN0b3AoKTt0aGlzLnRpbWVvdXQ9c2V0 VGltZW91dChmdW5jdGlvbigpe0xpdmVUaW1lci5sb29wKCk7fSxoKTt9LHN0b3A6 ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTt9LHVwZGF0ZU5v ZGU6ZnVuY3Rpb24oaCxpKXtMaXZlVGltZXIudXBkYXRlTm9kZT0oZy5pZSgpPDcp P2Z1bmN0aW9uKGosayl7ai5uZXh0U2libGluZy5ub2RlVmFsdWU9azt9OmZ1bmN0 aW9uKGosayl7ai5maXJzdENoaWxkLm5vZGVWYWx1ZT1rO307TGl2ZVRpbWVyLnVw ZGF0ZU5vZGUoaCxpKTt9LGxvb3A6ZnVuY3Rpb24oayl7aWYoaylMaXZlVGltZXIu dXBkYXRlVGltZVN0YW1wcygpO3ZhciBqPU1hdGguZmxvb3IoRGF0ZS5ub3coKS8x MDAwLUxpdmVUaW1lci5sb2NhbFN0YXJ0VGltZSk7dmFyIGg9LTE7TGl2ZVRpbWVy LnRpbWVzdGFtcHMmJkxpdmVUaW1lci50aW1lc3RhbXBzLmVhY2goZnVuY3Rpb24o bil7dmFyIG09bi5nZXRBdHRyaWJ1dGUoJ2RhdGEtdXRpbWUnKTt2YXIgbD1MaXZl VGltZXIucmVuZGVyUmVsYXRpdmVUaW1lKExpdmVUaW1lci5zZXJ2ZXJUaW1lK2os bSk7aWYobC50ZXh0KUxpdmVUaW1lci51cGRhdGVOb2RlKG4sbC50ZXh0KTtpZihs Lm5leHQhPS0xJiYobC5uZXh0PGh8fGg9PS0xKSloPWwubmV4dDt9KTtpZihoIT0t MSl7dmFyIGk9TWF0aC5tYXgoMjAwMDAsaCoxMDAwKTtMaXZlVGltZXIudGltZW91 dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TGl2ZVRpbWVyLmxvb3AoKTt9LGkpO319 LHJlbmRlclJlbGF0aXZlVGltZTpmdW5jdGlvbihqLGspe3ZhciBsPXt0ZXh0OiIi LG5leHQ6LTF9O2lmKGotaz4oMTIqMzYwMCl8fChuZXcgRGF0ZShqKjEwMDApLmdl dERheSgpIT1uZXcgRGF0ZShrKjEwMDApLmdldERheSgpKSlyZXR1cm4gbDt2YXIg bT1qLWssaT1NYXRoLmZsb29yKG0vNjApLGg9TWF0aC5mbG9vcihpLzYwKTtpZihp PDEpe2wudGV4dD0iYmlya2FcdTAwZTcgc2FuaXllIFx1MDBmNm5jZSI7bC5uZXh0 PTYwLW0lNjA7cmV0dXJuIGw7fWlmKGg8MSl7aWYoaT09MSl7bC50ZXh0PSJ5YWts YVx1MDE1Zlx1MDEzMWsgYmlyIGRha2lrYSBcdTAwZjZuY2UiO31lbHNlIGwudGV4 dD1fdHgoIntudW1iZXJ9IGRha2lrYSBcdTAwZjZuY2UiLHtudW1iZXI6aX0pO2wu bmV4dD02MC1tJTYwO3JldHVybiBsO31pZihoIT0xMSlsLm5leHQ9MzYwMC1tJTM2 MDA7aWYoaD09MSl7bC50ZXh0PSJ5YWtsYVx1MDE1Zlx1MDEzMWsgYmlyIHNhYXQg XHUwMGY2bmNlIjtyZXR1cm4gbDt9bC50ZXh0PV90eCgie251bWJlcn0gc2FhdCBc dTAwZjZuY2UiLHtudW1iZXI6aH0pO3JldHVybiBsO319O30pOwpfX2UoImxpdmUt dGltZXIiLFsiTGl2ZVRpbWVyIl0sZnVuY3Rpb24oYSxiKXthLkxpdmVUaW1lcj1i KCdMaXZlVGltZXInKTt9LDMpOwp2YXIgTWVnYXBob25lSGVscGVyPXtoaWRlU3Rv cnk6ZnVuY3Rpb24oZyxmLGUsYixhKXt2YXIgYz17bXBfaWQ6Zyxsb2NhdGlvbjpm LGNvbnRleHQ6Yn07bmV3IEFzeW5jUmVxdWVzdCgpLnNldFVSSSgnL2FqYXgvbWVn YXBob25lL21lZ2FwaG9uZV9oaWRlLnBocCcpLnNldE1ldGhvZCgnUE9TVCcpLnNl dERhdGEoYykuc2V0SGFuZGxlcihmdW5jdGlvbihoKXthJiZhKGgpO30pLnNlbmQo KTt2YXIgZD1nZShlKTtpZihkKWFuaW1hdGlvbihkKS50bygnaGVpZ2h0JywwKS5k dXJhdGlvbig1MDApLmhpZGUoKS5nbygpO30sY3JlYXRlTW9kYWxTdG9yeTpmdW5j dGlvbihlLGYsZCxiKXt2YXIgYztpZighZS5idXR0b25zfHwhZS5idXR0b25zLmxl bmd0aCl7ZS5idXR0b25zPURpYWxvZy5DTE9TRTtjPXRoaXMuaGlkZVN0b3J5LmJp bmQodGhpcyxmLGQsYixudWxsKTt9dmFyIGE9bmV3IERpYWxvZyhlKTtpZihjKWEu c2V0SGFuZGxlcihjKTthLnNob3coKTt9LGJ1dHRvbk9uQ2xpY2s6ZnVuY3Rpb24o ZyxmLGMsZSxiLGQpe3ZhciBhPWZ1bmN0aW9uKCl7aWYoYil7bmV3IEFzeW5jUmVx dWVzdCgpLnNldFVSSShlKS5zZW5kKCk7fWVsc2UgZG9jdW1lbnQubG9jYXRpb24u aHJlZj1lO307aWYoZCl7dGhpcy5oaWRlU3RvcnkoZyxmLCcnLGMsZnVuY3Rpb24o KXthKCk7fSk7fWVsc2UgYSgpO319Owp2YXIgTWVzc2FnaW5nQ29uc3Q9e0FQUF9J RDozMTM3ODUwNDAzMzAsWERfTUVTU0FHRTp7U0FOREJPWF9SRUFEWTonc2FuZGJv eF9yZWFkeScsU0VUX0NPTlRFTlQ6J3NldF9jb250ZW50JyxIVE1MX1NJWkU6J2h0 bWxfc2l6ZScsUkVGUkVTSF9TSVpFOidyZWZyZXNoX3NpemUnfSxTSElOR0xFX1ND Uk9MTF9UUklHR0VSOjUsRVZFTlRTOntNRVNTQUdFX1NFTlQ6J21lc3NhZ2luZy9t ZXNzYWdlX3NlbnQnfX07CmZ1bmN0aW9uIE1lc3NhZ2luZ0pld2VsTWVudWJhckNv bnRyb2xsZXIoYixhKXt0aGlzLnBhcmVudC5jb25zdHJ1Y3QodGhpcyk7dGhpcy5f Y29udGVudD1nZShhKTt0aGlzLl9vcGVuPWZhbHNlO3RoaXMuX3VhPW5ldyBVc2Vy Tm9PcCgpO0FyYml0ZXIuc3Vic2NyaWJlKFtNZXNzYWdpbmdDb25zdC5FVkVOVFMu TUVTU0FHRV9TRU5ULCdjaGF0L21lc3NhZ2Utc2VudCddLHRoaXMuX29uU2VuZC5i aW5kKHRoaXMpKTtUb2dnbGVyLmxpc3RlbihbJ3Nob3cnLCdoaWRlJ10sJChiKSx0 aGlzLl9vblRvZ2dsZS5iaW5kKHRoaXMpKTt0aGlzLl9pbml0KCk7fUNsYXNzLmV4 dGVuZChNZXNzYWdpbmdKZXdlbE1lbnViYXJDb250cm9sbGVyLCdNZW51YmFyTWVz c2FnZUNvbnRyb2xsZXInKTtjb3B5X3Byb3BlcnRpZXMoTWVzc2FnaW5nSmV3ZWxN ZW51YmFyQ29udHJvbGxlcix7RkVUQ0hfVVJJOicvYWpheC9tZXNzYWdpbmcvamV3 ZWxfZmV0Y2gucGhwJyxNQVJLX1NFRU5fVVJJOicvYWpheC9tZXNzYWdpbmcvamV3 ZWxfbWFya19zZWVuLnBocCcsVVNFUl9BQ1RJT05fQ09OVEVYVDonamV3ZWwnLFVT RVJfQUNUSU9OX05BTUVTUEFDRTonbWVzc2FnaW5nJyxlbnN1cmVJbml0aWFsaXpl ZDpmdW5jdGlvbihkLGMsYSxiKXtpZihNZXNzYWdpbmdKZXdlbE1lbnViYXJDb250 cm9sbGVyLmluaXRpYWxpemVkfHwhZ2UoYykpcmV0dXJuIGZhbHNlO3ZhciBlPW5l dyBNZXNzYWdpbmdKZXdlbE1lbnViYXJDb250cm9sbGVyKGQsYyk7TWVzc2FnaW5n SmV3ZWxNZW51YmFyQ29udHJvbGxlci5pbnN0YW5jZT1lO01lbnViYXJNZXNzYWdl Q29udHJvbGxlci5pbnN0YW5jZT1lO2UuZW5zdXJlSW5pdGlhbGl6ZWQoZCxjLGEs Yik7TWVzc2FnaW5nSmV3ZWxNZW51YmFyQ29udHJvbGxlci5pbml0aWFsaXplZD10 cnVlO319KTtjb3B5X3Byb3BlcnRpZXMoTWVzc2FnaW5nSmV3ZWxNZW51YmFyQ29u dHJvbGxlci5wcm90b3R5cGUse191YTpudWxsLF9pbml0OmZ1bmN0aW9uKCl7dGhp cy5pbml0aWFsaXplRXZlbnRzKCk7fSxpbml0aWFsaXplRXZlbnRzOmZ1bmN0aW9u KCl7dmFyIGE9bnVsbDtFdmVudC5saXN0ZW4odGhpcy5fY29udGVudCx7bW91c2Vv dmVyOmZ1bmN0aW9uKGV2ZW50KXt2YXIgYj1ldmVudC5nZXRUYXJnZXQoKTthPVBh cmVudC5ieVRhZyhiLCdsaScpO2lmKGEmJmEhPWIpQ1NTLmFkZENsYXNzKGEsJ3Nl bGVjdGVkJyk7fSxtb3VzZW91dDpmdW5jdGlvbihldmVudCl7YSYmQ1NTLnJlbW92 ZUNsYXNzKGEsJ3NlbGVjdGVkJyk7YT1udWxsO319KTt9LF9mZXRjaDpmdW5jdGlv bigpe25ldyBBc3luY1JlcXVlc3QoKS5zZXRVUkkoTWVzc2FnaW5nSmV3ZWxNZW51 YmFyQ29udHJvbGxlci5GRVRDSF9VUkkpLnNldE1ldGhvZCgnR0VUJykuc2V0RGF0 YSh7YWN0aW9uOidqZXdlbFByZXZpZXcnLHNlZW46IXRoaXMuZmV0Y2hPbkhvdmVy fSkuc2V0UmVhZE9ubHkodHJ1ZSkuc2V0SGFuZGxlcih0aGlzLl9vbkZldGNoU3Vj Y2Vzcy5iaW5kKHRoaXMpKS5zZXRBbGxvd0Nyb3NzUGFnZVRyYW5zaXRpb24odHJ1 ZSkuc2VuZCgpO30sX29uRmV0Y2hTdWNjZXNzOmZ1bmN0aW9uKCl7dGhpcy5fdWEu YWRkX2V2ZW50KCdmZXRjaF9zdWNjZXNzJyk7QXJiaXRlci5pbmZvcm0uYmluZChB cmJpdGVyLCdqZXdlbC9tZXNzYWdlcy9mZXRjaGVkJykuZGVmZXIoMTAwKTt9LF9v blNlbmQ6ZnVuY3Rpb24oKXt0aGlzLl9kaXJ0eT10cnVlO30sb25Db3VudGVyVXBk YXRlOmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnQub25Db3VudGVyVXBkYXRlKCk7aWYo dGhpcy5fb3Blbil0aGlzLmRvUmVmZXRjaCgpO30sX29uVG9nZ2xlOmZ1bmN0aW9u KGIsYSl7dGhpcy5fb3Blbj0oYj09InNob3ciKTt0aGlzLl91YT11c2VyX2FjdGlv bihNZXNzYWdpbmdKZXdlbE1lbnViYXJDb250cm9sbGVyLlVTRVJfQUNUSU9OX0NP TlRFWFQpLnNldF9uYW1lc3BhY2UoTWVzc2FnaW5nSmV3ZWxNZW51YmFyQ29udHJv bGxlci5VU0VSX0FDVElPTl9OQU1FU1BBQ0UpLnNldF91YV9pZCgnamV3ZWxfbWVu dScpLmFkZF9ldmVudChiKTtpZih0aGlzLl9vcGVuKXRoaXMuZG9SZWZldGNoKCk7 fSxtYXJrU2VlbjpmdW5jdGlvbigpe2lmKHRoaXMuZmV0Y2hPbkhvdmVyKW5ldyBB c3luY1NpZ25hbChNZXNzYWdpbmdKZXdlbE1lbnViYXJDb250cm9sbGVyLk1BUktf U0VFTl9VUkkse2FjdGlvbjonbWFya1NlZW4nfSkuc2VuZCgpO319KTsKb25sb2Fk UmVnaXN0ZXIoZnVuY3Rpb24oKXthZGRfcHJvcGVydGllcygnX19iZWhhdmlvcnMn LHt9KTtpZihfX2JlaGF2aW9ycy5UaW55Vmlld3BvcnQpcmV0dXJuO19fYmVoYXZp b3JzLlRpbnlWaWV3cG9ydD10cnVlO3ZhciBhPWRvY3VtZW50LmRvY3VtZW50RWxl bWVudDt2YXIgYj1kZWJvdW5jZShmdW5jdGlvbigpe3ZhciBjPWEuY2xpZW50SGVp Z2h0PDQwMHx8YS5jbGllbnRXaWR0aDxhLnNjcm9sbFdpZHRoO0NTUy5jb25kaXRp b25DbGFzcyhhLCd0aW55Vmlld3BvcnQnLGMpO0NTUy5jb25kaXRpb25DbGFzcyhh LCdjYW5IYXZlRml4ZWRFbGVtZW50cycsIWMpO30pO0V2ZW50Lmxpc3Rlbih3aW5k b3csJ3Jlc2l6ZScsYik7YigpO30pOwpfX2UoIkNvbnRleHR1YWxMYXllciIsWyJl dmVudC1leHRlbnNpb25zIiwiQ2xhc3MiLCJDb250ZXh0dWFsVGhpbmciLCJjc3Mi LCJkb20iLCJMYXllciIsIkxvY2FsZSIsInJlY3QiLCJ2ZWN0b3IiLCJjb3B5UHJv cGVydGllcyIsImRvbS1jb3JlIiwiZ2V0T3ZlcmxheVpJbmRleCJdLGZ1bmN0aW9u KHEscyxyLG4pe3MoImV2ZW50LWV4dGVuc2lvbnMiKTt2YXIgYz1zKCJDbGFzcyIp O3ZhciBlPXMoIkNvbnRleHR1YWxUaGluZyIpO3ZhciBiPXMoImNzcyIpO3ZhciBm PXMoImRvbSIpO3ZhciBnPXMoIkxheWVyIik7dmFyIGg9cygiTG9jYWxlIik7dmFy IGk9cygicmVjdCIpO3ZhciBqPXMoInZlY3RvciIpO3ZhciBhPWYuJE47dmFyIG09 cygiY29weVByb3BlcnRpZXMiKTt2YXIgbz1zKCJkb20tY29yZSIpLmdlO3ZhciBw PXMoImdldE92ZXJsYXlaSW5kZXgiKTtmdW5jdGlvbiBkKCl7cmV0dXJuIHRoaXMu cGFyZW50LmNvbnN0cnVjdCh0aGlzKTt9Yy5leHRlbmQoZCxnKTttKGQse09QUE9T SVRFOnthYm92ZTonYmVsb3cnLGJlbG93OidhYm92ZScsbGVmdDoncmlnaHQnLHJp Z2h0OidsZWZ0J319KTt2YXIgbD1mdW5jdGlvbigpe3ZhciB0PW8oJ2JsdWVCYXIn KTt2YXIgdT10P3Qub2Zmc2V0SGVpZ2h0OjA7bD1iYWdvZih1KTtyZXR1cm4gdTt9 O2Z1bmN0aW9uIGsoKXtyZXR1cm4gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aC0o d2luZG93LkNoYXRTaWRlYmFyJiZDaGF0U2lkZWJhci5nZXRWaXNpYmxlV2lkdGgo KXx8MCk7fW0oZC5wcm90b3R5cGUse19jb250ZW50V3JhcHBlcjpudWxsLF9jb250 ZW50Om51bGwsX2NvbnRleHQ6bnVsbCxfcHJlZmVycmVkUG9zaXRpb246J2Fib3Zl JyxfcHJlZmVycmVkQWxpZ25tZW50OidsZWZ0JyxfcG9zaXRpb246J2Fib3ZlJyxf YWxpZ25tZW50OidsZWZ0Jyxfb2Zmc2V0WDowLF9vZmZzZXRZOjAsX2F1dG9GbGlw OnRydWUsaW5pdDpmdW5jdGlvbih0KXt0aGlzLl9jb250ZW50PXQ7dGhpcy5wYXJl bnQuaW5pdCh0aGlzLl9jb250ZW50KTt0aGlzLl91cGRhdGVXcmFwcGVyUG9zaXRp b24oKTtyZXR1cm4gdGhpczt9LF9idWlsZFdyYXBwZXI6ZnVuY3Rpb24odCl7dmFy IHU9dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbkNsYXNzKHRoaXMuX3Bvc2l0aW9uLHRo aXMuX2FsaWdubWVudCk7dGhpcy5fY29udGVudFdyYXBwZXI9YSgnZGl2Jyx7Y2xh c3NOYW1lOid1aUNvbnRleHR1YWxMYXllciAnK3V9LHQpO3JldHVybiBhKCdkaXYn LHtjbGFzc05hbWU6J3VpQ29udGV4dHVhbExheWVyUG9zaXRpb25lcid9LHRoaXMu X2NvbnRlbnRXcmFwcGVyKTt9LHNldENvbnRlbnQ6ZnVuY3Rpb24odCl7dGhpcy5f Y29udGVudD10O2Yuc2V0Q29udGVudCh0aGlzLl9jb250ZW50V3JhcHBlcix0aGlz Ll9jb250ZW50KTt0aGlzLl9zaG93biYmdGhpcy51cGRhdGVQb3NpdGlvbigpO3Jl dHVybiB0aGlzO30sc2V0Q29udGV4dDpmdW5jdGlvbih0KXt0aGlzLl9jb250ZXh0 PXQ7aWYodGhpcy5fc2hvd24pe2UucmVnaXN0ZXIodGhpcy5fcm9vdCx0aGlzLl9j b250ZXh0KTt0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7fXJldHVybiB0aGlzO30sc2V0 UG9zaXRpb246ZnVuY3Rpb24odCl7dGhpcy5fcHJlZmVycmVkUG9zaXRpb249dHx8 J2Fib3ZlJzt0aGlzLl9zaG93biYmdGhpcy51cGRhdGVQb3NpdGlvbigpO3JldHVy biB0aGlzO30sc2V0QWxpZ25tZW50OmZ1bmN0aW9uKHQpe3RoaXMuX3ByZWZlcnJl ZEFsaWdubWVudD10fHwnbGVmdCc7dGhpcy5fc2hvd24mJnRoaXMudXBkYXRlUG9z aXRpb24oKTtyZXR1cm4gdGhpczt9LHNldE9mZnNldFg6ZnVuY3Rpb24odCl7dGhp cy5fb2Zmc2V0WD10fHwwO3RoaXMuX3Nob3duJiZ0aGlzLnVwZGF0ZVBvc2l0aW9u KCk7cmV0dXJuIHRoaXM7fSxzZXRPZmZzZXRZOmZ1bmN0aW9uKHQpe3RoaXMuX29m ZnNldFk9dHx8MDt0aGlzLl9zaG93biYmdGhpcy51cGRhdGVQb3NpdGlvbigpO3Jl dHVybiB0aGlzO30sc2V0QXV0b0ZsaXA6ZnVuY3Rpb24odCl7dGhpcy5fYXV0b0Zs aXA9ISF0O3RoaXMuX3Nob3duJiZ0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7cmV0dXJu IHRoaXM7fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnQuc2hvdygpO2lmKHRo aXMuX3Nob3duKXtlLnJlZ2lzdGVyKHRoaXMuX3Jvb3QsdGhpcy5fY29udGV4dCk7 dGhpcy5fcmVzaXplTGlzdGVuZXI9RXZlbnQubGlzdGVuKHdpbmRvdywncmVzaXpl Jyx0aGlzLnVwZGF0ZVBvc2l0aW9uLmJpbmQodGhpcykpO31yZXR1cm4gdGhpczt9 LGhpZGU6ZnVuY3Rpb24oKXtlLnJlbW92ZSh0aGlzLl9yb290KTt0aGlzLl9yZXNp emVMaXN0ZW5lciYmdGhpcy5fcmVzaXplTGlzdGVuZXIucmVtb3ZlKCk7dGhpcy5f cmVzaXplTGlzdGVuZXI9bnVsbDtyZXR1cm4gdGhpcy5wYXJlbnQuaGlkZSgpO30s dXBkYXRlUG9zaXRpb246ZnVuY3Rpb24oKXtpZighdGhpcy5fY29udGV4dClyZXR1 cm4gZmFsc2U7aWYodGhpcy5fYXV0b0ZsaXApdGhpcy5fYWRqdXN0UG9zaXRpb24o KTtpZighdGhpcy5fcG9zaXRpb24pcmV0dXJuIGZhbHNlO3RoaXMuX3VwZGF0ZVdy YXBwZXJQb3NpdGlvbigpO3ZhciB2PWIuaXNGaXhlZCh0aGlzLl9jb250ZXh0KSYm Yi5nZXRTY3JvbGxQYXJlbnQodGhpcy5fY29udGV4dCk9PT13aW5kb3c7Yi5jb25k aXRpb25DbGFzcyh0aGlzLl9yb290LCd1aUNvbnRleHR1YWxMYXllclBvc2l0aW9u ZXJGaXhlZCcsdik7dmFyIHUsemE7aWYodil7dT0ndmlld3BvcnQnO3phPW5ldyBq KDAsMCk7fWVsc2V7dT0nZG9jdW1lbnQnO3ZhciB5PXRoaXMuX3Jvb3Qub2Zmc2V0 UGFyZW50O2lmKCF5KXJldHVybiBmYWxzZTt6YT1qLmdldEVsZW1lbnRQb3NpdGlv bih5LHUpO2lmKHkhPT1kb2N1bWVudC5ib2R5KXphPXphLnN1YihuZXcgaih5LnNj cm9sbExlZnQseS5zY3JvbGxUb3ApKTt9dmFyIHQ9ai5nZXRFbGVtZW50UG9zaXRp b24odGhpcy5fY29udGV4dCx1KTt2YXIgeD10LngtemEueDt2YXIgemI9dC55LXph Lnk7dmFyIHo9dGhpcy5fZ2V0T2Zmc2V0WCh0aGlzLl9wb3NpdGlvbix0aGlzLl9h bGlnbm1lbnQpO2lmKHRoaXMuX3Bvc2l0aW9uPT0nYmVsb3cnKXpiKz10aGlzLl9j b250ZXh0Lm9mZnNldEhlaWdodDt2YXIgdz10aGlzLl9wb3NpdGlvbj09J2Fib3Zl J3x8dGhpcy5fcG9zaXRpb249PSdiZWxvdyc7aWYoKHRoaXMuX3Bvc2l0aW9uPT0n cmlnaHQnfHwodyYmdGhpcy5fYWxpZ25tZW50PT0ncmlnaHQnKSkhPWludGxfbG9j YWxlX2lzX3J0bCgpKXgrPXRoaXMuX2NvbnRleHQub2Zmc2V0V2lkdGg7aWYodyYm dGhpcy5fYWxpZ25tZW50PT0nY2VudGVyJyl6Kz0odGhpcy5fY29udGV4dC5vZmZz ZXRXaWR0aC10aGlzLl9jb250ZW50Lm9mZnNldFdpZHRoKS8yO2Iuc2V0U3R5bGUo dGhpcy5fcm9vdCwnbGVmdCcsKHgrKGludGxfbG9jYWxlX2lzX3J0bCgpPy0xOjEp KnopKydweCcpO2Iuc2V0U3R5bGUodGhpcy5fcm9vdCwndG9wJywoemIrdGhpcy5f Z2V0T2Zmc2V0WSh0aGlzLl9wb3NpdGlvbix0aGlzLl9hbGlnbm1lbnQpKSsncHgn KTt0aGlzLl9zdGFja09uVG9wT2YodGhpcy5fY29udGV4dCk7cmV0dXJuIHRydWU7 fSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnQuZGVzdHJveSgpO3RoaXMu X2NvbnRlbnRXcmFwcGVyPW51bGw7dGhpcy5fY29udGVudD1udWxsO3JldHVybiB0 aGlzO30sX3VwZGF0ZVdyYXBwZXJQb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXMu X3Bvc2l0aW9uPT0nYWJvdmUnKXtiLnNldFN0eWxlKHRoaXMuX2NvbnRlbnRXcmFw cGVyLCdib3R0b20nLCcwJyk7fWVsc2UgYi5zZXRTdHlsZSh0aGlzLl9jb250ZW50 V3JhcHBlciwnYm90dG9tJywnJyk7dmFyIHQ9aW50bF9sb2NhbGVfaXNfcnRsKCk/ J2xlZnQnOidyaWdodCc7dmFyIHU9dGhpcy5fcG9zaXRpb249PSdhYm92ZSd8fHRo aXMuX3Bvc2l0aW9uPT0nYmVsb3cnO2lmKHRoaXMuX3Bvc2l0aW9uPT0nbGVmdCd8 fCh1JiZ0aGlzLl9hbGlnbm1lbnQ9PSdyaWdodCcpKXtiLnNldFN0eWxlKHRoaXMu X2NvbnRlbnRXcmFwcGVyLHQsJzAnKTt9ZWxzZSBiLnNldFN0eWxlKHRoaXMuX2Nv bnRlbnRXcmFwcGVyLHQsJycpO3RoaXMuX2FkZFBvc2l0aW9uQ2xhc3ModGhpcy5f cG9zaXRpb24sdGhpcy5fYWxpZ25tZW50KTt9LF9hZGp1c3RQb3NpdGlvbjpmdW5j dGlvbigpe3RoaXMuX3JlbW92ZVBvc2l0aW9uQ2xhc3ModGhpcy5fcG9zaXRpb24s dGhpcy5fYWxpZ25tZW50KTt0aGlzLl9wb3NpdGlvbj1udWxsO3ZhciB3PWIuZ2V0 U2Nyb2xsUGFyZW50KHRoaXMuX2NvbnRleHQpO3ZhciB1PW8oJ2dsb2JhbENvbnRh aW5lcicpO3ZhciB0PSh1JiZmLmNvbnRhaW5zKHUsdGhpcy5fY29udGV4dCkpfHxw KHRoaXMuX2NvbnRleHQpPDMwMDt2YXIgeT1uZXcgaSh0P2woKTowLHQ/aygpOmRv Y3VtZW50LmJvZHkub2Zmc2V0V2lkdGgsai5nZXRWaWV3cG9ydERpbWVuc2lvbnMo KS55LDApO3ZhciB4PWZ1bmN0aW9uKHphLHope2lmKHRoaXMuX2NhblNlZUNvbnRl eHRFZGdlKHcsemEpKXt0aGlzLl9wb3NpdGlvbj16YTtpZih0aGlzLl93aWxsRWxl bWVudEZpdCh5LHphLHopKXt0aGlzLl9hbGlnbm1lbnQ9ejtyZXR1cm4gdHJ1ZTt9 fXJldHVybiBmYWxzZTt9LmJpbmQodGhpcyk7aWYoeCh0aGlzLl9wcmVmZXJyZWRQ b3NpdGlvbix0aGlzLl9wcmVmZXJyZWRBbGlnbm1lbnQpKXJldHVybjtpZih4KGQu T1BQT1NJVEVbdGhpcy5fcHJlZmVycmVkUG9zaXRpb25dLHRoaXMuX3ByZWZlcnJl ZEFsaWdubWVudCkpcmV0dXJuO2lmKHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9uPT0n YWJvdmUnfHx0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbj09J2JlbG93Jyl7dmFyIHY9 dGhpcy5fcHJlZmVycmVkQWxpZ25tZW50PT0nbGVmdCc/J3JpZ2h0JzonbGVmdCc7 aWYoeCh0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbix2KSlyZXR1cm47fX0sX2NhblNl ZUNvbnRleHRFZGdlOmZ1bmN0aW9uKHcsdil7dmFyIHk7aWYodz09PXdpbmRvdyl7 eT1sKCk7fWVsc2UgeT1qLmdldEVsZW1lbnRQb3NpdGlvbih3LCd2aWV3cG9ydCcp Lnk7dmFyIHU9ai5nZXRFbGVtZW50UG9zaXRpb24odGhpcy5fY29udGV4dCwndmll d3BvcnQnKS55O2lmKHYhPSdiZWxvdycpe3JldHVybiB1Pj15O31lbHNle3ZhciB4 O2lmKHc9PT13aW5kb3cpe3g9ai5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKS55O31l bHNlIHg9eSt3Lm9mZnNldEhlaWdodDt2YXIgdD11K3RoaXMuX2NvbnRleHQub2Zm c2V0SGVpZ2h0O3JldHVybiB0PD14O319LF93aWxsRWxlbWVudEZpdDpmdW5jdGlv bih6LHgsdCl7dmFyIHY9ai5nZXRFbGVtZW50UG9zaXRpb24odGhpcy5fY29udGV4 dCwndmlld3BvcnQnKTt2YXIgeT12LnkrdGhpcy5fZ2V0T2Zmc2V0WSh4LHQpO2lm KHg9PSdhYm92ZScpe3ktPXRoaXMuX2NvbnRlbnQub2Zmc2V0SGVpZ2h0O31lbHNl IGlmKHg9PSdiZWxvdycpeSs9dGhpcy5fY29udGV4dC5vZmZzZXRIZWlnaHQ7dmFy IHU9eSt0aGlzLl9jb250ZW50Lm9mZnNldEhlaWdodDt2YXIgdz12LngrdGhpcy5f Z2V0T2Zmc2V0WCh4LHQpO2lmKHg9PSdyaWdodCcpe3crPXRoaXMuX2NvbnRleHQu b2Zmc2V0V2lkdGg7fWVsc2UgaWYoeD09J2xlZnQnKXt3LT10aGlzLl9jb250ZW50 Lm9mZnNldFdpZHRoO31lbHNlIGlmKHQ9PSdyaWdodCcpdys9dGhpcy5fY29udGV4 dC5vZmZzZXRXaWR0aC10aGlzLl9jb250ZW50Lm9mZnNldFdpZHRoO3JpZ2h0PXcr dGhpcy5fY29udGVudC5vZmZzZXRXaWR0aDtyZXR1cm4gei5jb250YWlucyhuZXcg aSh5LHJpZ2h0LHUsdykpO30sX2dldE9mZnNldFg6ZnVuY3Rpb24odSx0KXtpZih1 PT0nbGVmdCd8fHU9PSdyaWdodCcpe2lmKHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9u IT11KXJldHVybiAtdGhpcy5fb2Zmc2V0WDt9ZWxzZSBpZih0aGlzLl9wcmVmZXJy ZWRBbGlnbm1lbnQhPXQpcmV0dXJuIC10aGlzLl9vZmZzZXRYO3JldHVybiB0aGlz Ll9vZmZzZXRYO30sX2dldE9mZnNldFk6ZnVuY3Rpb24odCl7aWYoKHQ9PSdhYm92 ZSd8fHQ9PSdiZWxvdycpJiZ0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbiE9dClyZXR1 cm4gLXRoaXMuX29mZnNldFk7cmV0dXJuIHRoaXMuX29mZnNldFk7fSxfZ2VuZXJh dGVQb3NpdGlvbkNsYXNzOmZ1bmN0aW9uKHUsdCl7aWYodT09J2Fib3ZlJ3x8dT09 J2JlbG93JylyZXR1cm4gdSt0O3JldHVybiB1O30sX3JlbW92ZVBvc2l0aW9uQ2xh c3M6ZnVuY3Rpb24odSx0KXtiLnJlbW92ZUNsYXNzKHRoaXMuX2NvbnRlbnRXcmFw cGVyLHRoaXMuX2dlbmVyYXRlUG9zaXRpb25DbGFzcyh1LHQpKTt9LF9hZGRQb3Np dGlvbkNsYXNzOmZ1bmN0aW9uKHUsdCl7Yi5hZGRDbGFzcyh0aGlzLl9jb250ZW50 V3JhcHBlcix0aGlzLl9nZW5lcmF0ZVBvc2l0aW9uQ2xhc3ModSx0KSk7fX0pO3Iu ZXhwb3J0cz1kO30pOwpfX2UoIlBvcHVwV2luZG93IixbImNvcHlQcm9wZXJ0aWVz IiwidWEiLCJ2ZWN0b3IiXSxmdW5jdGlvbihlLGcsZixkKXt2YXIgYz1nKCJjb3B5 UHJvcGVydGllcyIpO3ZhciBoPWcoInVhIik7dmFyIGI9ZygidmVjdG9yIik7dmFy IGE9e19vcHRzOnthbGxvd1Nocmluazp0cnVlLHRpbWVvdXQ6MTAwfSxpbml0OmZ1 bmN0aW9uKGkpe2NvcHlfcHJvcGVydGllcyhhLl9vcHRzLGkpO3NldEludGVydmFs KGEuX3Jlc2l6ZUNoZWNrLGEuX29wdHMudGltZW91dCk7fSxfcmVzaXplQ2hlY2s6 ZnVuY3Rpb24oKXt2YXIgbT1iLmdldFZpZXdwb3J0RGltZW5zaW9ucygpLGk9YS5f Z2V0RG9jdW1lbnRTaXplKCksaz1pLnktbS55LGw9aS54LW0ueDtpZihsPDApbD0w O2lmKCFhLl9vcHRzLmFsbG93U2hyaW5rJiZrPDApaz0wO2lmKGt8fGwpdHJ5e2lm KHdpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5maXJlYnVnKWNvbnNvbGUu bG9nKCdSZXNpemluZyB3aWxsIG5vdCB3b3JrIGluIGZpcmVmb3ggd2l0aCBmaXJl YnVnIGVuYWJsZWQuICcrJ1NlZSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3Jn L3Nob3dfYnVnLmNnaT9pZD02OTE2OTMnKTt3aW5kb3cucmVzaXplQnkobCxrKTtp ZihsKXdpbmRvdy5tb3ZlQnkobC8tMiwwKTt9Y2F0Y2goail7fX0sX2dldERvY3Vt ZW50U2l6ZTpmdW5jdGlvbigpe3ZhciBpPXt4OmguZmlyZWZveCgpP2RvY3VtZW50 LmRvY3VtZW50RWxlbWVudC5zY3JvbGxXaWR0aDpkb2N1bWVudC5ib2R5LnNjcm9s bFdpZHRoLHk6ZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHR9O2lmKGkueDw9MHx8 aS54PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxXaWR0aClpLng9ZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFdpZHRoO2lmKGkueTw9MHx8aS55 PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpaS55PWRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQ7aWYod2luZG93LkRpYWxv ZyYmRGlhbG9nLm1heF9ib3R0b20mJkRpYWxvZy5tYXhfYm90dG9tPmkueSlpLnk9 RGlhbG9nLm1heF9ib3R0b207cmV0dXJuIGk7fSxvcGVuOmZ1bmN0aW9uKHEsaixy KXt2YXIgbj10eXBlb2Ygd2luZG93LnNjcmVlblghPSd1bmRlZmluZWQnP3dpbmRv dy5zY3JlZW5YOndpbmRvdy5zY3JlZW5MZWZ0LG89dHlwZW9mIHdpbmRvdy5zY3Jl ZW5ZIT0ndW5kZWZpbmVkJz93aW5kb3cuc2NyZWVuWTp3aW5kb3cuc2NyZWVuVG9w LG09dHlwZW9mIHdpbmRvdy5vdXRlcldpZHRoIT0ndW5kZWZpbmVkJz93aW5kb3cu b3V0ZXJXaWR0aDpkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLGw9dHlwZW9mIHdp bmRvdy5vdXRlckhlaWdodCE9J3VuZGVmaW5lZCc/d2luZG93Lm91dGVySGVpZ2h0 Oihkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodC0yMiksaz1wYXJzZUludChuKygo bS1yKS8yKSwxMCkscD1wYXJzZUludChvKygobC1qKS8yLjUpLDEwKSxpPSgnd2lk dGg9JytyKycsaGVpZ2h0PScraisnLGxlZnQ9JytrKycsdG9wPScrcCk7cmV0dXJu IHdpbmRvdy5vcGVuKHEsJ19ibGFuaycsaSk7fX07Zi5leHBvcnRzPWE7fSk7CnZh ciBNdXNpY0V2ZW50cz1uZXcgQXJiaXRlcigpO3ZhciBNdXNpY1Byb3ZpZGVycz17 U1BPVElGWTonb3Blbi5zcG90aWZ5LmNvbSd9O3ZhciBNdXNpY0NvbnN0YW50cz13 aW5kb3cuTXVzaWNDb25zdGFudHN8fHtERUJVRzpmYWxzZSxzYW1lVVJMczpmdW5j dGlvbihhLGIpe3ZhciBjPS9cLyQvO3JldHVybiBhJiZiJiZhLnJlcGxhY2UoYywn Jyk9PWIucmVwbGFjZShjLCcnKTt9LE9QOntSRVNVTUU6J1JFU1VNRScsUEFVU0U6 J1BBVVNFJyxQTEFZOidQTEFZJyxWRVJTSU9OOidWRVJTSU9OJ30sU1RBVFVTX0NI QU5HRV9PUDp7U1RBVFVTOidTVEFUVVMnLExPR0lOOidMT0dJTicsUkVJTkZPUk06 J1JFSU5GT1JNJ30sU1RBVFVTX0NIQU5HRV9FVkVOVDp7cGxheWluZzonUExBWV9T VEFURV9DSEFOR0VEJyx0cmFjazonVFJBQ0tfQ0hBTkdFRCd9LERJQUdOT1NUSUNf RVZFTlQ6e0FMTF9QQVVTRUQ6J0FMTF9QQVVTRUQnLEFMTF9PRkZMSU5FOidBTExf T0ZGTElORScsT0ZGTElORTonT0ZGTElORScsT05MSU5FOidPTkxJTkUnLFNFQVJD SElORzonU0VBUkNISU5HJyxISVQ6J0hJVCcsTUlTUzonTUlTUycsUkVTSUdOOidS RVNJR04nLElGUkFNRV9QT0xMSU5HOidJRlJBTUVfUE9MTElORycsUkVMQVVOQ0g6 J1JFTEFVTkNIJyxTVEFURV9DSEFOR0U6J1NUQVRFX0NIQU5HRScsV1JPTkdfVkVS U0lPTjonV1JPTkdfVkVSU0lPTicsU0VSVklDRV9FUlJPUjonU0VSVklDRV9FUlJP Uid9LEFMTE9XRURfU1RBVFVTX1BBUkFNUzp7cGxheWluZzoncGxheWluZycsdHJh Y2s6J3RyYWNrJyxjb250ZXh0Oidjb250ZXh0JyxjbGllbnRfdmVyc2lvbjonY2xp ZW50X3ZlcnNpb24nLHN0YXJ0X3RpbWU6J3N0YXJ0X3RpbWUnLGV4cGlyZXNfaW46 J2V4cGlyZXNfaW4nLG9wZW5fZ3JhcGhfc3RhdGU6J29wZW5fZ3JhcGhfc3RhdGUn fSxBTExPV0VEX0VYVEVSTkFMX0NPTlRFWFRfUEFSQU1TOnt1cmk6dHJ1ZSxzb25n OnRydWUscmFkaW9fc3RhdGlvbjp0cnVlLGFsYnVtOnRydWUscGxheWxpc3Q6dHJ1 ZSxtdXNpY2lhbjp0cnVlLHNvbmdfbGlzdDp0cnVlLG9mZnNldDp0cnVlLHRpdGxl OnRydWUscmVxdWVzdF9pZDp0cnVlLGxpc3Rlbl93aXRoX2ZyaWVuZHM6dHJ1ZSxu ZWVkc190b3M6dHJ1ZX0sTElWRV9MSVNURU5fT1A6e05PV19MRUFESU5HOidOT1df TEVBRElORycsTk9XX0xJU1RFTklORzonTk9XX0xJU1RFTklORycsRU5EX1NFU1NJ T046J0VORF9TRVNTSU9OJyxTT05HX1BMQVlJTkc6J1NPTkdfUExBWUlORycsTElT VEVORVJfVVBEQVRFOidMSVNURU5FUl9VUERBVEUnLFFVRVVFX1NFU1NJT046J1FV RVVFX1NFU1NJT04nLFBMQVlfRVJST1I6J1BMQVlfRVJST1InLFNFU1NJT05fVVBE QVRFRDonU0VTU0lPTl9VUERBVEVEJyxRVUVVSU5HX1NFU1NJT046J1FVRVVJTkdf U0VTU0lPTid9LE1VU0lDX0JVVFRPTjp7QUNUSVZBVEU6J0FDVElWQVRFJ30sRVJS T1I6ezE6J1NFUlZJQ0VfVU5BVkFJTEFCTEVfV0lUSE9VVF9QUkVNSVVNJywyOidT RVJWSUNFX1VOQVZBSUxBQkxFX1dJVEhPVVRfUFJFTUlVTV9PUl9XQUlUJywzOidT RVJWSUNFX1VOQVZBSUxBQkxFX0JJTExJTkdfSVNTVUUnLDQ6J1NFUlZJQ0VfVU5B VkFJTEFCTEVfVEVDSE5JQ0FMX0lTU1VFJyw1OidBVURJT19BRF9QTEFZSU5HJyw5 OTonU0VSVklDRV9URU1QT1JBUklMWV9VTkFWQUlMQUJMRScsMTAxOidTT05HX1VO QVZBSUxBQkxFX1dJVEhPVVRfUFVSQ0hBU0UnLDEwMjonU09OR19VTkFWQUlMQUJM RV9XSVRIT1VUX1BSRU1JVU0nLDEwMzonU09OR19VTkFWQUlMQUJMRV9JTkRFRklO SVRFTFknfX07Cl9fZSgiY29udGV4dHVhbC1sYXllciIsWyJDb250ZXh0dWFsTGF5 ZXIiXSxmdW5jdGlvbihhLGIpe2EuQ29udGV4dHVhbExheWVyPWIoJ0NvbnRleHR1 YWxMYXllcicpO30sMyk7CnZhciBUb29sdGlwPXdpbmRvdy5Ub29sdGlwfHwoZnVu Y3Rpb24oKXt2YXIgYT1udWxsO3ZhciBmPW51bGw7dmFyIGI9bnVsbDt2YXIgZT1b XTtvbmxvYWRSZWdpc3RlcihmdW5jdGlvbigpe0V2ZW50Lmxpc3Rlbihkb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQsJ21vdXNlb3ZlcicsZnVuY3Rpb24oZXZlbnQpe3Zh ciBnPVBhcmVudC5ieUF0dHJpYnV0ZShldmVudC5nZXRUYXJnZXQoKSwndG9vbHRp cCcpO2lmKGcpe2lmKGchPT1hKXt2YXIgaj1nLmdldEF0dHJpYnV0ZSgndG9vbHRp cC11cmknKTtpZihqKXtnLnJlbW92ZUF0dHJpYnV0ZSgndG9vbHRpcC11cmknKTtu ZXcgQXN5bmNSZXF1ZXN0KGopLnNldEhhbmRsZXIoZnVuY3Rpb24oayl7VG9vbHRp cC5zZXQoZyxrLmdldFBheWxvYWQoKSk7fSkuc2V0RXJyb3JIYW5kbGVyKGJhZ29m aG9sZGluZykuc2VuZCgpO312YXIgaT1nLmdldEF0dHJpYnV0ZSgndGl0bGUnKTtp ZihpKXtnLnNldEF0dHJpYnV0ZSgndGl0bGUnLCcnKTt2YXIgaD1jKGcpOyFoLmNv bnRlbnQmJlRvb2x0aXAuc2V0KGcsaSk7fVRvb2x0aXAuc2hvdyhnKTt9fWVsc2Ug aWYoYSlUb29sdGlwLmhpZGUoKTt9KTtFdmVudC5saXN0ZW4od2luZG93LCdzY3Jv bGwnLGZ1bmN0aW9uKCl7VG9vbHRpcC5oaWRlKCk7fSk7fSk7ZnVuY3Rpb24gZCgp e2lmKCFmKXtiPSROKCdkaXYnLHtjbGFzc05hbWU6J2NvbnRlbnQnfSk7dmFyIGc9 JE4oJ2knLHtjbGFzc05hbWU6J2Fycm93J30pO3ZhciBoPSROKCdkaXYnLHtjbGFz c05hbWU6J3VpVG9vbHRpcFgnfSxbYixnXSk7Zj1uZXcgQ29udGV4dHVhbExheWVy KCk7Zi5pbml0KGgpO319ZnVuY3Rpb24gYyhnKXtyZXR1cm4gY29weV9wcm9wZXJ0 aWVzKHtwb3NpdGlvbjpnLmdldEF0dHJpYnV0ZSgndG9vbHRpcC1wb3NpdGlvbicp fHwnYWJvdmUnLGFsaWduSDpnLmdldEF0dHJpYnV0ZSgndG9vbHRpcC1hbGlnbmgn KXx8J2xlZnQnfSxEYXRhU3RvcmUuZ2V0KGcsJ3Rvb2x0aXAnKSk7fXJldHVybiB7 cmVtb3ZlOmZ1bmN0aW9uKGcpe0RhdGFTdG9yZS5yZW1vdmUoZywndG9vbHRpcCcp O2cucmVtb3ZlQXR0cmlidXRlKCd0b29sdGlwJyk7Zy5yZW1vdmVBdHRyaWJ1dGUo J3Rvb2x0aXAtcG9zaXRpb24nKTtnLnJlbW92ZUF0dHJpYnV0ZSgndG9vbHRpcC1h bGlnbmgnKTtnPT09YSYmVG9vbHRpcC5oaWRlKCk7fSxoaWRlOmZ1bmN0aW9uKCl7 aWYoYSl7Zi5oaWRlKCk7YT1udWxsO3doaWxlKGUubGVuZ3RoKWUucG9wKCkucmVt b3ZlKCk7fX0sc2V0OmZ1bmN0aW9uKGksaCxqLGcpe3ZhciBrPWMoaSk7RGF0YVN0 b3JlLnNldChpLCd0b29sdGlwJyxjb3B5X3Byb3BlcnRpZXMoayx7Y29udGVudDpo LHBvc2l0aW9uOmp8fGsucG9zaXRpb24sYWxpZ25IOmd8fGsuYWxpZ25IfSkpO2ku c2V0QXR0cmlidXRlKCd0b29sdGlwJywxKTtpPT09YSYmVG9vbHRpcC5zaG93KGkp O30sc2hvdzpmdW5jdGlvbihnKXtkKCk7VG9vbHRpcC5oaWRlKCk7dmFyIG09Yyhn KTtpZighbS5jb250ZW50KXJldHVybjt2YXIgaj0wO3ZhciBrPTA7aWYobS5wb3Np dGlvbj09PSdsZWZ0J3x8bS5wb3NpdGlvbj09PSdyaWdodCcpe2s9KGcub2Zmc2V0 SGVpZ2h0LTIwKS8yO31lbHNlIGlmKG0uYWxpZ25IIT09J2NlbnRlcicpe3ZhciBv PWcub2Zmc2V0V2lkdGg7aWYobzwxOClqPShvLTE4KS8yKihtLmFsaWduSD09PSdy aWdodCc/LTE6MSk7fWYuc2V0Q29udGV4dChnKS5zZXRPZmZzZXRYKGopLnNldE9m ZnNldFkoaykuc2V0UG9zaXRpb24obS5wb3NpdGlvbikuc2V0QWxpZ25tZW50KG0u YWxpZ25IKTt2YXIgaD1nZSgnZ2xvYmFsQ29udGFpbmVyJyk7aWYoaClmLnNldFBh cmVudChET00uY29udGFpbnMoaCxnKT9oOmRvY3VtZW50LmJvZHkpO2lmKHR5cGVv ZiBtLmNvbnRlbnQ9PT0nc3RyaW5nJyl7Q1NTLmFkZENsYXNzKGYsJ2ludmlzaWJs ZV9lbGVtJyk7dmFyIGk9JE4oJ3NwYW4nLEhUTUwoaHRtbGl6ZShtLmNvbnRlbnQp KSk7dmFyIGw9JE4oJ2Rpdicse2NsYXNzTmFtZTondG9vbHRpcFRleHQnfSxpKTtE T00uc2V0Q29udGVudChiLGwpO2Yuc2hvdygpO2lmKGwub2Zmc2V0V2lkdGg8aS5v ZmZzZXRXaWR0aCl7Q1NTLmFkZENsYXNzKGwsJ3Rvb2x0aXBXcmFwJyk7Zi51cGRh dGVQb3NpdGlvbigpO31DU1MucmVtb3ZlQ2xhc3MoZiwnaW52aXNpYmxlX2VsZW0n KTt9ZWxzZXtET00uc2V0Q29udGVudChiLG0uY29udGVudCk7Zi5zaG93KCk7fXZh ciBuPUNTUy5nZXRTY3JvbGxQYXJlbnQoZyk7aWYobiE9PXdpbmRvdyllLnB1c2go RXZlbnQubGlzdGVuKG4sJ3Njcm9sbCcsVG9vbHRpcC5oaWRlKSk7ZS5wdXNoKEV2 ZW50Lmxpc3RlbihnLCdjbGljaycsVG9vbHRpcC5oaWRlKSk7YT1nO319O30pKCk7 CnZhciBNdXNpY0J1dHRvbj1mdW5jdGlvbihkLGEsZixiLGMsZSl7dGhpcy5wcm92 aWRlcj1kO3RoaXMuYnV0dG9uRWxlbT1hO3RoaXMudXJsPWY7dGhpcy5jb250ZXh0 PWJ8fHt9O3RoaXMubWVkaWFUeXBlPWM7dGhpcy5zZXRTdGF0ZSh0aGlzLlNUQVRF Uy5PRkZMSU5FKTt0aGlzLnRvb2x0aXA9ZXx8Jyc7TXVzaWNFdmVudHMuc3Vic2Ny aWJlKE11c2ljQ29uc3RhbnRzLk1VU0lDX0JVVFRPTi5BQ1RJVkFURSx0aGlzLnBy b2Nlc3NDbGljay5iaW5kKHRoaXMpKTt9O2NvcHlfcHJvcGVydGllcyhNdXNpY0J1 dHRvbix7dHJhY2tzZXRhYmxlVHlwZXM6W119KTtjb3B5X3Byb3BlcnRpZXMoTXVz aWNCdXR0b24ucHJvdG90eXBlLHtTSE9XX0xPQURJTkdfVElNRU9VVDo1MDAsSElE RV9MT0FESU5HX1RJTUVPVVQ6NDAwMCxSRUNFTlRMWV9PTkxJTkVfVElNRU9VVDo2 MDAwLFNUQVRFUzp7UExBWUlORzonbXVzaWNfcGxheWluZycsUEFVU0VEOidtdXNp Y19wYXVzZWQnLExPQURJTkc6J211c2ljX2xvYWRpbmcnLERJU0FCTEVEOidtdXNp Y19kaXNhYmxlZCcsT0ZGTElORTonbXVzaWNfb2ZmbGluZSd9LHNldFN0YXRlOmZ1 bmN0aW9uKGEpe2lmKGEhPT10aGlzLlNUQVRFUy5MT0FESU5HKXt0aGlzLnJlc2V0 TG9hZGluZ1RpbWVycygpO3RoaXMucHJldmlvdXNTdGF0ZT10aGlzLnN0YXRlfHxh O31pZihhPT09dGhpcy5TVEFURVMuUExBWUlORyl7VG9vbHRpcC5zZXQodGhpcy5i dXR0b25FbGVtLHRoaXMudG9vbHRpcCk7fWVsc2UgVG9vbHRpcC5zZXQodGhpcy5i dXR0b25FbGVtLCcnKTt2YXIgYj10aGlzLmJ1dHRvbkVsZW0ucGFyZW50Tm9kZTt0 aGlzLnN0YXRlJiZDU1MucmVtb3ZlQ2xhc3MoYix0aGlzLnN0YXRlKTt0aGlzLnN0 YXRlPWE7Q1NTLmFkZENsYXNzKGIsdGhpcy5zdGF0ZSk7fSxpc1RyYWNrc2V0YWJs ZTpmdW5jdGlvbihhKXtyZXR1cm4gTXVzaWNCdXR0b24udHJhY2tzZXRhYmxlVHlw ZXMuaW5kZXhPZih0aGlzLm1lZGlhVHlwZSkhPT0tMTt9LGhhbmRsZUluY29taW5n RXZlbnQ6ZnVuY3Rpb24oZCxiKXtjbGVhclRpbWVvdXQodGhpcy5fc2hvd0xvYWRp bmdUaW1lcik7aWYoYiYmYi5wcm92aWRlciYmYi5wcm92aWRlciE9dGhpcy5wcm92 aWRlcilyZXR1cm47c3dpdGNoKGQpe2Nhc2UgTXVzaWNDb25zdGFudHMuRElBR05P U1RJQ19FVkVOVC5PTkxJTkU6Y2FzZSBNdXNpY0NvbnN0YW50cy5TVEFUVVNfQ0hB TkdFX0VWRU5ULnRyYWNrOmNhc2UgTXVzaWNDb25zdGFudHMuU1RBVFVTX0NIQU5H RV9FVkVOVC5wbGF5aW5nOnZhciBjPWImJmIudHJhY2smJmIudHJhY2sudXJpO3Zh ciBhPWImJmIuY29udGV4dCYmYi5jb250ZXh0LnVyaTtpZihiJiZiLnBsYXlpbmcm JihNdXNpY0NvbnN0YW50cy5zYW1lVVJMcyhjLHRoaXMudXJsKXx8TXVzaWNDb25z dGFudHMuc2FtZVVSTHMoYSx0aGlzLnVybCkpKXt0aGlzLnNldFN0YXRlKHRoaXMu U1RBVEVTLlBMQVlJTkcpO31lbHNlIGlmKHRoaXMuc3RhdGU9PT10aGlzLlNUQVRF Uy5MT0FESU5HJiYodGhpcy5wcmV2aW91c1N0YXRlPT09dGhpcy5TVEFURVMuUEFV U0VEfHx0aGlzLnByZXZpb3VzU3RhdGU9PT10aGlzLlNUQVRFUy5PRkZMSU5FKSl7 Y2xlYXJUaW1lb3V0KHRoaXMuX2F0dGVtcHRpbmdQbGF5VGltZXIpO3RoaXMuX2F0 dGVtcHRpbmdQbGF5VGltZXI9dGhpcy5zZXRTdGF0ZS5iaW5kKHRoaXMsdGhpcy5T VEFURVMuUEFVU0VEKS5kZWZlcih0aGlzLlJFQ0VOVExZX09OTElORV9USU1FT1VU LGZhbHNlKTt9ZWxzZSBpZighdGhpcy5fYXR0ZW1wdGluZ1BsYXlUaW1lcil0aGlz LnNldFN0YXRlKHRoaXMuU1RBVEVTLlBBVVNFRCk7YnJlYWs7Y2FzZSBNdXNpY0Nv bnN0YW50cy5ESUFHTk9TVElDX0VWRU5ULk9GRkxJTkU6dGhpcy5zZXRTdGF0ZSh0 aGlzLlNUQVRFUy5PRkZMSU5FKTticmVhaztjYXNlIE11c2ljQ29uc3RhbnRzLkRJ QUdOT1NUSUNfRVZFTlQuQUxMX09GRkxJTkU6dGhpcy5zZXRTdGF0ZSh0aGlzLlNU QVRFUy5PRkZMSU5FKTticmVhazt9fSxwcm9jZXNzQ2xpY2s6ZnVuY3Rpb24oYSxn KXtpZihnIT10aGlzLmJ1dHRvbkVsZW0pe2lmKHRoaXMuc3RhdGU9PT10aGlzLlNU QVRFUy5MT0FESU5HKXRoaXMucHJldmlvdXNTdGF0ZSYmdGhpcy5zZXRTdGF0ZSh0 aGlzLnByZXZpb3VzU3RhdGUpO3JldHVybjt9dmFyIGQ9dGhpcy5pc1RyYWNrc2V0 YWJsZSgpJiZQYXJlbnQuYnlDbGFzcyh0aGlzLmJ1dHRvbkVsZW0sJ211c2ljX3Ry YWNrc2V0X2NvbnRhaW5lcicpO3ZhciBrPVtdO2lmKGQpe3ZhciBqPWQuZ2V0QXR0 cmlidXRlKCdkYXRhLXRyYWNrc2V0LXRpdGxlJyk7dmFyIGY9dGhpcy5wcm92aWRl cjt2YXIgZT1ET00uc2NyeShkLCcubXVzaWNfYnV0dG9uJyk7Zm9yKHZhciBoPTA7 aDxlLmxlbmd0aDtoKyspe3ZhciBjPU11c2ljQnV0dG9uTWFuYWdlci5nZXRCdXR0 b24oW2VbaF0uaWRdKTtpZihjJiZjLnByb3ZpZGVyPT1mJiZjLmlzVHJhY2tzZXRh YmxlKCkpay5wdXNoKGMudXJsKTt9fXZhciBpPWZ1bmN0aW9uKCl7cmV0dXJuIChk JiZrLmxlbmd0aD4xKT9NdXNpYy5wbGF5UGF1c2VTb25nTGlzdCh0aGlzLnByb3Zp ZGVyLHRoaXMudXJsLGssaix0aGlzLmNvbnRleHQpOk11c2ljLnBsYXlQYXVzZVNv bmcodGhpcy5wcm92aWRlcix0aGlzLnVybCx0aGlzLmNvbnRleHQpO30uYmluZCh0 aGlzKTtpZighd2luZG93Lk11c2ljKXt0aGlzLnNob3dMb2FkaW5nKHRydWUpO0Jv b3Rsb2FkZXIubG9hZENvbXBvbmVudHMoJ011c2ljJyxpKTtyZXR1cm47fXZhciBi PWkoKTt0aGlzLnNob3dMb2FkaW5nKCFiKTt9LHNob3dMb2FkaW5nOmZ1bmN0aW9u KGEpe3RoaXMucmVzZXRMb2FkaW5nVGltZXJzKCk7dGhpcy5faGlkZUxvYWRpbmdU aW1lcj10aGlzLl90aW1lb3V0LmJpbmQodGhpcyxhKS5kZWZlcih0aGlzLkhJREVf TE9BRElOR19USU1FT1VULGZhbHNlKTt0aGlzLl9zaG93TG9hZGluZ1RpbWVyPXRo aXMuc2V0U3RhdGUuYmluZCh0aGlzLHRoaXMuU1RBVEVTLkxPQURJTkcpLmRlZmVy KHRoaXMuU0hPV19MT0FESU5HX1RJTUVPVVQsZmFsc2UpO30scmVzZXRMb2FkaW5n VGltZXJzOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVMb2FkaW5n VGltZXIpO2NsZWFyVGltZW91dCh0aGlzLl9zaG93TG9hZGluZ1RpbWVyKTtjbGVh clRpbWVvdXQodGhpcy5fYXR0ZW1wdGluZ1BsYXlUaW1lcik7dGhpcy5fYXR0ZW1w dGluZ1BsYXlUaW1lcj1udWxsO30sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMucmVz ZXRMb2FkaW5nVGltZXJzKCk7dGhpcy5idXR0b25FbGVtPW51bGw7fSxfdGltZW91 dDpmdW5jdGlvbihhKXt3aW5kb3cuTXVzaWMmJk11c2ljLnJlSW5mb3JtKFt0aGlz LnByb3ZpZGVyXSk7aWYoIWEmJnRoaXMuc3RhdGU9PT10aGlzLlNUQVRFUy5MT0FE SU5HKXRoaXMuc2V0U3RhdGUodGhpcy5TVEFURVMuUEFVU0VEKTt9fSk7CnZhciBN dXNpY0J1dHRvbk1hbmFnZXI9KGZ1bmN0aW9uKCl7dmFyIGc9bnVsbDt2YXIgYj17 fTt2YXIgYT17fTtmdW5jdGlvbiBjKGV2ZW50KXt2YXIgaj0kRShldmVudCkuZ2V0 VGFyZ2V0KCk7dmFyIGk9UGFyZW50LmJ5Q2xhc3MoaiwnbXVzaWNfYnV0dG9uJyk7 aT1pfHwoIWV2ZW50LmdldE1vZGlmaWVycygpLmFueSYmZChqKSk7aWYoIWkpcmV0 dXJuO3JldHVybiBmKGksZXZlbnQpO31mdW5jdGlvbiBkKGspe3ZhciBqPVBhcmVu dC5ieUNsYXNzKGssJ211c2ljX2J1dHRvbl90cmlnZ2VyJykmJlBhcmVudC5ieUNs YXNzKGssJ211c2ljX2J1dHRvbl90cmlnZ2VyX2dyb3VwJyk7aWYoail7dmFyIGk9 RE9NLnNjcnkoaiwnLm11c2ljX2J1dHRvbicpO2lmKGkubGVuZ3RoKXJldHVybiBp WzBdO31yZXR1cm4gbnVsbDt9ZnVuY3Rpb24gZihpLGV2ZW50KXtldmVudCYmJEUo ZXZlbnQpLnN0b3AoKTtNdXNpY0V2ZW50cy5pbmZvcm0oTXVzaWNDb25zdGFudHMu TVVTSUNfQlVUVE9OLkFDVElWQVRFLGkpO3JldHVybiBmYWxzZTt9ZnVuY3Rpb24g aChpKXt3aW5kb3cuTXVzaWMmJk11c2ljLnJlSW5mb3JtKGkpO31mdW5jdGlvbiBl KGssail7Zm9yKHZhciBpIGluIGIpaWYoYltpXS5ub0dDfHxnZShpKSl7YltpXS5o YW5kbGVJbmNvbWluZ0V2ZW50KGssaik7fWVsc2UgTXVzaWNCdXR0b25NYW5hZ2Vy LnJlbW92ZUJ1dHRvbihpKTt9cmV0dXJuIHtpbml0OmZ1bmN0aW9uKGkpe2lmKGcp cmV0dXJuO2c9dHJ1ZTtNdXNpY0J1dHRvbi50cmFja3NldGFibGVUeXBlcz1pfHxb XTtFdmVudC5saXN0ZW4oZG9jdW1lbnQuYm9keSwnY2xpY2snLGMpO011c2ljRXZl bnRzLnN1YnNjcmliZShbTXVzaWNDb25zdGFudHMuU1RBVFVTX0NIQU5HRV9FVkVO VC5wbGF5aW5nLE11c2ljQ29uc3RhbnRzLlNUQVRVU19DSEFOR0VfRVZFTlQudHJh Y2ssTXVzaWNDb25zdGFudHMuRElBR05PU1RJQ19FVkVOVC5PRkZMSU5FLE11c2lj Q29uc3RhbnRzLkRJQUdOT1NUSUNfRVZFTlQuQUxMX09GRkxJTkUsTXVzaWNDb25z dGFudHMuRElBR05PU1RJQ19FVkVOVC5PTkxJTkVdLGUpO30sZ2V0QnV0dG9uOmZ1 bmN0aW9uKGkpe3JldHVybiBiW2ldO30sYWRkQnV0dG9uOmZ1bmN0aW9uKG0saSxu LGosbCxvKXtnfHxNdXNpY0J1dHRvbk1hbmFnZXIuaW5pdCgpO2lmKCFnZShpKSly ZXR1cm47YltpXTtiW2ldPW5ldyBNdXNpY0J1dHRvbihtLCQoaSksbixjb3B5X3By b3BlcnRpZXMoe2J1dHRvbl9pZDppfSxqKSxsLG8pO3ZhciBrPVBhcmVudC5ieUNs YXNzKCQoaSksJ3VpT3ZlcmxheScpO2lmKGspe2JbaV0ubm9HQz10cnVlO092ZXJs YXkuZ2V0SW5zdGFuY2Uoaykuc3Vic2NyaWJlKCdkZXN0cm95JyxNdXNpY0J1dHRv bk1hbmFnZXIucmVtb3ZlQnV0dG9uLmN1cnJ5KGkpKTt9aWYobSYmIWFbbV0pYVtt XT1mdW5jdGlvbigpe3ZhciBwPWtleXMoYSk7cC5sZW5ndGgmJmgocCk7YT17fTt9 LmRlZmVyKCk7cmV0dXJuIGJbaV07fSxyZW1vdmVCdXR0b246ZnVuY3Rpb24oaSl7 YltpXSYmYltpXS5yZXNldExvYWRpbmdUaW1lcnMoKTtkZWxldGUgYltpXTt9fTt9 KSgpOwpmdW5jdGlvbiBOb3RpZmljYXRpb25MaXN0KGEsYil7dGhpcy5fbGlzdD1u ZXcgRG91Ymx5TGlua2VkTGlzdE1hcCgpO3RoaXMudW5yZWFkQ291bnQ9MDt0aGlz LmNvbnRlbnRSb290PWE7dGhpcy5ub0l0ZW1zRWxlbWVudD1udWxsO3RoaXMuSVRF TV9UQUc9J2xpJzt0aGlzLklURU1fQ0xBU1M9J25vdGlmaWNhdGlvbic7dGhpcy5O T19JVEVNU19JRD0namV3ZWxOb05vdGlmaWNhdGlvbnMnO3RoaXMuTk9fSVRFTVNf Q0xBU1M9J2VtcHR5Jzt0aGlzLmNvbXBhcmU9Yi5jb21wYXJlfHx0aGlzLmNvbXBh cmU7fWNvcHlfcHJvcGVydGllcyhOb3RpZmljYXRpb25MaXN0LHtJVEVNX1VOUkVB RF9DTEFTUzonamV3ZWxJdGVtTmV3JyxNQVJLX1JFQURfVFlQRTonbWFya19yZWFk JyxVTlJFQURfQ09VTlRfQ0hBTkdFX1RZUEU6J3VucmVhZF9jb3VudF9jaGFuZ2Un LGdldElkRnJvbURvbTpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUo J2lkJykucmVwbGFjZSgnbm90aWZpY2F0aW9uXycsJycpO30sbG9jYWxpemVVcmxz OmZ1bmN0aW9uKGEpe0RPTS5zY3J5KGEsJ2EnKS5lYWNoKGZ1bmN0aW9uKGIpe1VS SShiLmhyZWYpLmlzRmFjZWJvb2tVUkkoKSYmKGIuaHJlZj1VUkkoYi5ocmVmKS5n ZXRVbnF1YWxpZmllZFVSSSgpLmdldFF1YWxpZmllZFVSSSgpLnNldFN1YmRvbWFp bihVUkkoYi5ocmVmKS5nZXRTdWJkb21haW4oKSkudG9TdHJpbmcoKSk7fSk7fX0p O0NsYXNzLm1peGluKE5vdGlmaWNhdGlvbkxpc3QsJ0FyYml0ZXInLHtfZ2V0Rmll bGQ6ZnVuY3Rpb24oYyxiKXt2YXIgYT10aGlzLl9saXN0LmdldChjKTtyZXR1cm4g YSYmYVtiXTt9LGdldERvbU9iajpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fZ2V0 RmllbGQoYSwnb2JqJyk7fSxmcm9tRG9tOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5J VEVNX1RBRysnLicrdGhpcy5JVEVNX0NMQVNTO3ZhciBjPURPTS5zY3J5KHRoaXMu Y29udGVudFJvb3QsZSk7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDsrK2Qpe3ZhciBi PWNbZF07dmFyIGE9Tm90aWZpY2F0aW9uTGlzdC5nZXRJZEZyb21Eb20oYik7dGhp cy5pbnNlcnQoYSxiLmdldEF0dHJpYnV0ZSgnZGF0YS1ub3RpZnRpbWUnKSxudWxs KTt9fSxjb21wYXJlOmZ1bmN0aW9uKGIsYSl7cmV0dXJuIGIudGltZTw9YS50aW1l O30saW5zZXJ0OmZ1bmN0aW9uKGMsZSxkLGksYil7dmFyIGg9dHJ1ZSxnPTA7aWYo dGhpcy5fbGlzdC5leGlzdHMoYykpaWYoIShpJiZkKSl7cmV0dXJuIGZhbHNlO31l bHNle2g9dGhpcy5fZ2V0RmllbGQoYywndW5yZWFkJyk7Zz10aGlzLl9nZXRGaWVs ZChjLCd0aW1lJyk7aWYoZz5lKXJldHVybiBmYWxzZTt0aGlzLnJlbW92ZShjKTt9 dmFyIGY9KGQmJkhUTUwoZCkuZ2V0Um9vdE5vZGUoKSl8fCQoJ25vdGlmaWNhdGlv bl8nK2MpLGo9TWF0aC5tYXgoZSxnKSxrPUNTUy5oYXNDbGFzcyhmLE5vdGlmaWNh dGlvbkxpc3QuSVRFTV9VTlJFQURfQ0xBU1MpLGE9e2lkOmMsb2JqOmYsdGltZTpq LHVucmVhZDprfTt0aGlzLl9pbnNlcnQoYSk7Tm90aWZpY2F0aW9uTGlzdC5sb2Nh bGl6ZVVybHMoZik7aGlkZSh0aGlzLk5PX0lURU1TX0lEKTtpZihrKXt0aGlzLnVu cmVhZENvdW50PXRoaXMuZ2V0VW5yZWFkSWRzKCkubGVuZ3RoO3RoaXMuaW5mb3Jt KE5vdGlmaWNhdGlvbkxpc3QuVU5SRUFEX0NPVU5UX0NIQU5HRV9UWVBFKTtiJiYh aCYmdGhpcy5tYXJrUmVhZChbY10pO31BcmJpdGVyLmluZm9ybSgnbm90aWYvaW5z ZXJ0Jyx7aWQ6YyxvYmo6Zn0pO3JldHVybiB0cnVlO30sc2hvd05vTm90aWZpY2F0 aW9uczpmdW5jdGlvbigpe2lmKG51bGw9PXRoaXMubm9JdGVtc0VsZW1lbnQpdGhp cy5ub0l0ZW1zRWxlbWVudD1nZSh0aGlzLk5PX0lURU1TX0lEKTtpZihudWxsPT10 aGlzLm5vSXRlbXNFbGVtZW50KXt0aGlzLm5vSXRlbXNFbGVtZW50PSROKHRoaXMu SVRFTV9UQUcse2lkOnRoaXMuTk9fSVRFTVNfSUQsY2xhc3NOYW1lOnRoaXMuTk9f SVRFTVNfQ0xBU1N9LCJZZW5pIGJpbGRpcmltIHlvay4iKTtET00uYXBwZW5kQ29u dGVudCh0aGlzLmNvbnRlbnRSb290LHRoaXMubm9JdGVtc0VsZW1lbnQpO31DU1Mu c2hvdyh0aGlzLk5PX0lURU1TX0lEKTt9LF9pbnNlcnQ6ZnVuY3Rpb24oYSl7dGhp cy5fbGlzdC5yZW1vdmUoYS5pZCk7dmFyIGM9bnVsbDt0aGlzLl9saXN0LmZpbmQo ZnVuY3Rpb24oZCl7dmFyIGU9dGhpcy5jb21wYXJlKGQsYSk7IWUmJihjPWQuaWQp O3JldHVybiBlO30uYmluZCh0aGlzKSk7dmFyIGI9dGhpcy5nZXREb21PYmooYyk7 aWYoYil7dGhpcy5fbGlzdC5pbnNlcnRBZnRlcihhLmlkLGEsYyk7RE9NLmluc2Vy dEFmdGVyKGIsYS5vYmopO31lbHNle3RoaXMuX2xpc3QucHJlcGVuZChhLmlkLGEp O0RPTS5wcmVwZW5kQ29udGVudCh0aGlzLmNvbnRlbnRSb290LGEub2JqKTt9fSxy ZW1vdmU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fZ2V0RmllbGQoYSwnb2JqJyk7 aWYoIWIpcmV0dXJuIGZhbHNlO3RoaXMubWFya1JlYWQoW2FdKTt0aGlzLl9saXN0 LnJlbW92ZShhKTtET00ucmVtb3ZlKGIpO3RoaXMuX2xpc3QuaXNFbXB0eSgpJiZ0 aGlzLnNob3dOb05vdGlmaWNhdGlvbnMoKTtyZXR1cm4gdHJ1ZTt9LGdldFVucmVh ZElkczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9saXN0LnJlZHVjZShmdW5jdGlv bihhLGIpe2EudW5yZWFkJiZiLnB1c2goYS5pZCk7cmV0dXJuIGI7fSxbXSk7fSxp c1VucmVhZElkOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9nZXRGaWVsZChhLCd1 bnJlYWQnKTt9LG1hcmtSZWFkOmZ1bmN0aW9uKGEpe2E9YT9hLmZpbHRlcih0aGlz LmlzVW5yZWFkSWQuYmluZCh0aGlzKSk6dGhpcy5nZXRVbnJlYWRJZHMoKTtmb3Io dmFyIGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGM9dGhpcy5fbGlzdC5nZXQoYVti XSk7aWYoYyl7dGhpcy5pbmZvcm0oTm90aWZpY2F0aW9uTGlzdC5NQVJLX1JFQURf VFlQRSxjLm9iaik7Yy51bnJlYWQ9ZmFsc2U7dGhpcy5faW5zZXJ0KGMpO319aWYo YS5sZW5ndGgpe3RoaXMudW5yZWFkQ291bnQ9dGhpcy5nZXRVbnJlYWRJZHMoKS5s ZW5ndGg7dGhpcy5pbmZvcm0oTm90aWZpY2F0aW9uTGlzdC5VTlJFQURfQ09VTlRf Q0hBTkdFX1RZUEUpO319LGluc2VydE1hbnk6ZnVuY3Rpb24oZCxhKXtpZignb2Jq ZWN0Jz09dHlwZW9mIGQmJiFpc19lbXB0eShkKSl7Zm9yKHZhciBjIGluIGQpe3Zh ciBiPWRbY107dGhpcy5pbnNlcnQoYyxiLnRpbWUsYi5tYXJrdXAsdHJ1ZSxhKTt9 aGlkZSh0aGlzLk5PX0lURU1TX0lEKTt9ZWxzZSB0aGlzLmlzRW1wdHkoKSYmdGhp cy5zaG93Tm9Ob3RpZmljYXRpb25zKCk7fSxpc0VtcHR5OmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuX2xpc3QuaXNFbXB0eSgpO319KTtmdW5jdGlvbiBOb3RpZmljYXRp b25zKGEpe3RoaXMudXBkYXRlVGltZT1hLnVwZGF0ZVRpbWV8fERhdGUubm93KCk7 dGhpcy51c2VyPUVudi51c2VyO3RoaXMuY2FjaGVfdmVyc2lvbj1hLmNhY2hlVmVy c2lvbnx8MDt0aGlzLmFsbG93RGVza3RvcE5vdGlmaWNhdGlvbnM9YS5hbGxvd0Rl c2t0b3BOb3RpZmljYXRpb25zfHxmYWxzZTt0aGlzLmxhdGVzdF9ub3RpZl90aW1l PWEubGF0ZXN0Tm90aWZ8fDA7dGhpcy5sYXRlc3RfcmVhZF9ub3RpZl90aW1lPWEu bGF0ZXN0UmVhZE5vdGlmfHwwO3RoaXMudXBkYXRlX3BlcmlvZD1hLnVwZGF0ZVBl cmlvZHx8NjAwMDA7dGhpcy5ub3RpZlJlY2VpdmVkVHlwZT1hLm5vdGlmUmVjZWl2 ZWRUeXBlfHwnbm90aWZpY2F0aW9uJzt0aGlzLndyYXBwZXJJRD1hLndyYXBwZXJJ RHx8J25vdGlmaWNhdGlvbnNXcmFwcGVyJzt0aGlzLmNvbnRlbnRJRD1hLmNvbnRl bnRJRHx8J2pld2VsTm90aWZzJzt0aGlzLnRpbWVFbGVtZW50PSdzbWFsbC50aW1l Jzt0aGlzLnVhPW5ldyBVc2VyTm9PcCgpO3RoaXMuX2luaXQoKTt9Tm90aWZpY2F0 aW9ucy5CRUVQU19FWFBJUkVEPSdiZWVwZXIvYmVlcHNfZXhwaXJlZCc7Tm90aWZp Y2F0aW9ucy5wcm90b3R5cGU9e19pbml0OmZ1bmN0aW9uKCl7dGhpcy5jb29raWVO YW1lPSdub3RpZmljYXRpb25zXycrdGhpcy51c2VyO3RoaXMuYmVlcHNFeHBpcmVk VG9rZW49bnVsbDt0aGlzLnVwZGF0ZUNoZWNrQ291bnQ9MDt0aGlzLm5lZWRNYXJr UmVhZD1mYWxzZTt0aGlzLmN1cnJlbnRGZXRjaFJlcXVlc3Q9bnVsbDt0aGlzLndy YXBwZXI9Z2UodGhpcy53cmFwcGVySUQpO3RoaXMuY29udGVudD1nZSh0aGlzLmNv bnRlbnRJRCk7dGhpcy5qZXdlbEZseW91dD1nZSgnZmJOb3RpZmljYXRpb25zRmx5 b3V0Jyk7dGhpcy5sb2FkaW5nSW5kaWNhdG9yPWdlKHRoaXMuY29udGVudElEKydf bG9hZGluZ19pbmRpY2F0b3InKTtOb3RpZmljYXRpb25Db3VudGVyLmluaXQoKTt0 aGlzLmFsZXJ0TGlzdD1uZXcgTm90aWZpY2F0aW9uTGlzdCh0aGlzLmNvbnRlbnQs dGhpcy5fZ2V0TGlzdFBhcmFtcygpKTt0aGlzLl91cGRhdGVDb3VudCgpO3dpbmRv dy5NaW5Ob3RpZmljYXRpb25zJiZNaW5Ob3RpZmljYXRpb25zLmZldGNoZWQoKSYm KHRoaXMuZmV0Y2g9YmFnb2Zob2xkaW5nKTtBcmJpdGVyLnN1YnNjcmliZShQcmVz ZW5jZU1lc3NhZ2UuZ2V0QXJiaXRlck1lc3NhZ2VUeXBlKHRoaXMubm90aWZSZWNl aXZlZFR5cGUpLHRoaXMuX2hhbmRsZU5vdGlmaWNhdGlvbk1zZy5iaW5kKHRoaXMp KTtBcmJpdGVyLnN1YnNjcmliZShQcmVzZW5jZU1lc3NhZ2UuZ2V0QXJiaXRlck1l c3NhZ2VUeXBlKCdub3RpZmljYXRpb25zX3JlYWQnKSx0aGlzLl9oYW5kbGVOb3Rp ZmljYXRpb25zUmVhZE1zZy5iaW5kKHRoaXMpKTt0aGlzLmFsZXJ0TGlzdC5zdWJz Y3JpYmUoTm90aWZpY2F0aW9uTGlzdC5VTlJFQURfQ09VTlRfQ0hBTkdFX1RZUEUs dGhpcy5fdXBkYXRlQ291bnQuYmluZCh0aGlzKSk7dGhpcy5fcG9sbGVyPW5ldyBQ b2xsZXIodGhpcy51cGRhdGVfcGVyaW9kLHRoaXMuX3VwZGF0ZS5iaW5kKHRoaXMp LHRydWUpO2lmKHRoaXMud3JhcHBlcil0aGlzLmNvdW50U3Bhbj1ET00uZmluZCh0 aGlzLndyYXBwZXIsJ3NwYW4uamV3ZWxDb3VudCBzcGFuJyk7dGhpcy5pbml0aWFs aXplRXZlbnRzKCk7dGhpcy5mcm9tRG9tKCk7fSxfZ2V0TGlzdFBhcmFtczpmdW5j dGlvbigpe3JldHVybiB7fTt9LGZyb21Eb206ZnVuY3Rpb24oKXt0aGlzLmFsZXJ0 TGlzdC5mcm9tRG9tKCk7fSxpbml0aWFsaXplRXZlbnRzOmZ1bmN0aW9uKCl7dmFy IGE9bnVsbDtFdmVudC5saXN0ZW4odGhpcy5jb250ZW50LHttb3VzZW92ZXI6ZnVu Y3Rpb24oZXZlbnQpe3ZhciBiPWV2ZW50LmdldFRhcmdldCgpO2E9UGFyZW50LmJ5 VGFnKGIsJ2xpJyk7aWYoYSYmYiE9YSlDU1MuYWRkQ2xhc3MoYSwnc2VsZWN0ZWQn KTt9LG1vdXNlb3V0OmZ1bmN0aW9uKGV2ZW50KXthJiZDU1MucmVtb3ZlQ2xhc3Mo YSwnc2VsZWN0ZWQnKTthPW51bGw7fX0pO0V2ZW50Lmxpc3Rlbih0aGlzLndyYXBw ZXIsJ21vdXNlb3ZlcicsdGhpcy5vbk1vdXNlT3Zlci5iaW5kKHRoaXMpKTtUb2dn bGVyLmxpc3Rlbignc2hvdycsdGhpcy53cmFwcGVyLHRoaXMub25DbGljay5iaW5k KHRoaXMpKTtUb2dnbGVyLmxpc3RlbignaGlkZScsdGhpcy53cmFwcGVyLHRoaXMu b25IaWRlLmJpbmQodGhpcykpO30sb25Nb3VzZU92ZXI6ZnVuY3Rpb24oZXZlbnQp e3RoaXMudWE9dXNlcl9hY3Rpb24oJ2pld2VsJyxldmVudC50YXJnZXQsZXZlbnQp LnNldF9uYW1lc3BhY2UoJ25vdGlmcycpLnNldF91YV9pZCgncHJlZmV0Y2gnKS5h ZGRfZXZlbnQoJ2hvdmVyJyk7dGhpcy5mZXRjaCgpO30sb25DbGljazpmdW5jdGlv bigpe3dpbmRvdy5BcmJpdGVyTW9uaXRvciYmdGhpcy5mZXRjaCE9YmFnb2Zob2xk aW5nJiZBcmJpdGVyLnJlZ2lzdGVyQ2FsbGJhY2soYmFnb2Zob2xkaW5nLFsnbm90 aWZzL2ZldGNoZWQnXSk7dGhpcy51YS5hZGRfZXZlbnQoJ3Nob3cnKTt0aGlzLmZl dGNoKCk7dGhpcy5tYXJrUmVhZCh0cnVlKTt9LG9uSGlkZTpmdW5jdGlvbigpe3Ro aXMudWEuYWRkX2V2ZW50KCdoaWRlJyk7fSxzaWduYWxNYXJrUmVhZDpmdW5jdGlv bihhKXthPWF8fFtdO2lmKGEubGVuZ3RoPT09MCYmdGhpcy5jdXJyZW50RmV0Y2hS ZXF1ZXN0KXt0aGlzLm5lZWRNYXJrUmVhZD10cnVlO3JldHVybjt9ZGF0YT17fTtm b3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYilkYXRhWydhbGVydF9pZHNbJytiKydd J109YVtiXTtuZXcgQXN5bmNTaWduYWwoJy9hamF4L25vdGlmaWNhdGlvbnMvbWFy a19yZWFkLnBocCcsZGF0YSkuc2VuZCgpO30sbWFya1JlYWQ6ZnVuY3Rpb24oYixh KXtpZih0aGlzLmFsZXJ0TGlzdC51bnJlYWRDb3VudD09PTApcmV0dXJuO2ImJnRo aXMuc2lnbmFsTWFya1JlYWQoYSk7dGhpcy5hbGVydExpc3QubWFya1JlYWQoYSk7 dGhpcy5fdXBkYXRlQ291bnQoKTt9LF91cGRhdGVFcnJvckhhbmRsZXI6ZnVuY3Rp b24oYSl7fSxfdXBkYXRlVVJJOicvYWpheC9wcmVzZW5jZS91cGRhdGUucGhwJyxf dXBkYXRlOmZ1bmN0aW9uKGEpe2Euc2V0SGFuZGxlcih0aGlzLl9oYW5kbGVVcGRh dGUuYmluZCh0aGlzKSkuc2V0T3B0aW9uKCdzdXBwcmVzc0Vycm9yQWxlcnRzJyx0 cnVlKS5zZXRFcnJvckhhbmRsZXIodGhpcy5fdXBkYXRlRXJyb3JIYW5kbGVyLmJp bmQodGhpcykpLnNldERhdGEoe3VzZXI6dGhpcy51c2VyLG5vdGlmX2xhdGVzdDp0 aGlzLmxhdGVzdF9ub3RpZl90aW1lLG5vdGlmX2xhdGVzdF9yZWFkOnRoaXMubGF0 ZXN0X3JlYWRfbm90aWZfdGltZX0pLnNldFVSSSh0aGlzLl91cGRhdGVVUkkpLnNl dEFsbG93Q3Jvc3NQYWdlVHJhbnNpdGlvbih0cnVlKTt9LF9oYW5kbGVVcGRhdGU6 ZnVuY3Rpb24oYil7dmFyIGE9Yi5wYXlsb2FkLm5vdGlmaWNhdGlvbnM7aWYoIWEu bm9fY2hhbmdlKXt0aGlzLnVwZGF0ZVRpbWU9Yi5wYXlsb2FkLnRpbWU7dGhpcy5s YXRlc3Rfbm90aWZfdGltZT1hLmxhdGVzdF9ub3RpZjt0aGlzLmxhdGVzdF9yZWFk X25vdGlmX3RpbWU9YS5sYXRlc3RfcmVhZF9ub3RpZjt0aGlzLl91cGRhdGVEaXNw bGF5RGVsYXllZCgpO3RoaXMuYWxlcnRMaXN0Lmluc2VydE1hbnkoYS5ub3RpZmlj YXRpb25zKTt9fSxfdXBkYXRlRGlzcGxheURlbGF5ZWQ6ZnVuY3Rpb24oKXtpZih0 eXBlb2YgQmVlcGVyIT0ndW5kZWZpbmVkJyl7dGhpcy5iZWVwc0V4cGlyZWRUb2tl bj1BcmJpdGVyLnN1YnNjcmliZShOb3RpZmljYXRpb25zLkJFRVBTX0VYUElSRUQs dGhpcy5fdXBkYXRlRGlzcGxheS5iaW5kKHRoaXMpKTt9ZWxzZSB0aGlzLl91cGRh dGVEaXNwbGF5KCk7fSxfdXBkYXRlRGlzcGxheTpmdW5jdGlvbigpe2lmKCF0aGlz LmNvbnRlbnQpcmV0dXJuO3RoaXMuX3VwZGF0ZUNvdW50KCk7aWYodGhpcy5iZWVw c0V4cGlyZWRUb2tlbilBcmJpdGVyLnVuc3Vic2NyaWJlKHRoaXMuYmVlcHNFeHBp cmVkVG9rZW4pO30sX3VwZGF0ZUNvdW50OmZ1bmN0aW9uKCl7QXJiaXRlci5pbmZv cm0oJ2pld2VsL2NvdW50LXVwZGF0ZWQnLHtqZXdlbDonbm90aWZpY2F0aW9ucycs Y291bnQ6dGhpcy5hbGVydExpc3QudW5yZWFkQ291bnR9LEFyYml0ZXIuQkVIQVZJ T1JfU1RBVEUpO30sZmV0Y2g6ZnVuY3Rpb24oKXt2YXIgYT1VUkkoJy9hamF4L25v dGlmaWNhdGlvbnMvZ2V0LnBocCcpO2lmKHRoaXMuY3VycmVudEZldGNoUmVxdWVz dClyZXR1cm4gdHJ1ZTt0aGlzLnVhLmFkZF9ldmVudCgnZmV0Y2gnKTthLnNldFF1 ZXJ5RGF0YSh7dGltZTp0aGlzLmxhdGVzdF9ub3RpZl90aW1lLHVzZXI6dGhpcy51 c2VyLHZlcnNpb246dGhpcy5jYWNoZV92ZXJzaW9uLGxvY2FsZTpFbnYubG9jYWxl fSk7dGhpcy5jdXJyZW50RmV0Y2hSZXF1ZXN0PW5ldyBBc3luY1JlcXVlc3QoKS5z ZXRVUkkoYSkuc2V0U3RhdHVzRWxlbWVudCh0aGlzLmxvYWRpbmdJbmRpY2F0b3Ip LnNldE1ldGhvZCgnR0VUJykuc2V0UmVhZE9ubHkodHJ1ZSkuc2V0VGltZW91dEhh bmRsZXIoMzAwMDAsdGhpcy5mZXRjaEVycm9ySGFuZGxlci5iaW5kKHRoaXMpKS5z ZXRIYW5kbGVyKHRoaXMuZmV0Y2hIYW5kbGVyLmJpbmQodGhpcykpLnNldEVycm9y SGFuZGxlcih0aGlzLmZldGNoRXJyb3JIYW5kbGVyLmJpbmQodGhpcykpLnNldEFs bG93Q3Jvc3NQYWdlVHJhbnNpdGlvbih0cnVlKTshdGhpcy5jdXJyZW50RmV0Y2hS ZXF1ZXN0LnNlbmQoKSYmdGhpcy5mZXRjaEVycm9ySGFuZGxlcigpO3JldHVybiB0 cnVlO30sZmV0Y2hFcnJvckhhbmRsZXI6ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50 RmV0Y2hSZXF1ZXN0PW51bGw7dGhpcy51YS5hZGRfZXZlbnQoJ2ZldGNoX2Vycm9y Jyk7fSxmZXRjaEhhbmRsZXI6ZnVuY3Rpb24oYil7dGhpcy51YS5hZGRfZXZlbnQo J2ZldGNoX3N1Y2Nlc3MnKTt2YXIgYT1iLmdldFBheWxvYWQoKTt0aGlzLmFsZXJ0 TGlzdC5pbnNlcnRNYW55KGEubm90aWZpY2F0aW9ucyx0cnVlKTt0aGlzLmxvYWRp bmdJbmRpY2F0b3ImJkNTUy5oaWRlKHRoaXMubG9hZGluZ0luZGljYXRvcik7dGhp cy5sb2FkaW5nSW5kaWNhdG9yPW51bGw7dGhpcy5jdXJyZW50RmV0Y2hSZXF1ZXN0 PW51bGw7dGhpcy5mZXRjaD1iYWdvZmhvbGRpbmc7aWYodGhpcy5uZWVkTWFya1Jl YWQpe3RoaXMubmVlZE1hcmtSZWFkPWZhbHNlO3RoaXMuc2lnbmFsTWFya1JlYWQo KTt9d2luZG93LkFyYml0ZXJNb25pdG9yJiZBcmJpdGVyLmluZm9ybSgnbm90aWZz L2ZldGNoZWQnLCcnLEFyYml0ZXIuQkVIQVZJT1JfU1RBVEUpO30sX21lcmdlTm90 aWZpY2F0aW9uOmZ1bmN0aW9uKGIsZCxjKXt2YXIgYT0hdGhpcy5hbGVydExpc3Qu aXNVbnJlYWRJZChiKTt0aGlzLmFsZXJ0TGlzdC5pbnNlcnQoYixkLGMsdHJ1ZSk7 dGhpcy5sYXRlc3Rfbm90aWZfdGltZT0wO2lmKGEpdGhpcy5fdXBkYXRlQ291bnQo KTtpZih0aGlzLmlzVGFiT3BlbigpKXRoaXMuX21lcmdlZF9tb3VzZW92ZXJfaGFu ZGxlcj1FdmVudC5saXN0ZW4odGhpcy5jb250ZW50LCdtb3VzZW92ZXInLChmdW5j dGlvbigpe3RoaXMuX21lcmdlZF9tb3VzZW92ZXJfaGFuZGxlci5yZW1vdmUoKTt0 aGlzLm1hcmtSZWFkKHRydWUpO30pLmJpbmQodGhpcykpO30sX2hhbmRsZU5vdGlm aWNhdGlvbk1zZzpmdW5jdGlvbihkLGEpe3ZhciBiPWEub2JqO2lmKHR5cGVvZiB0 aGlzLnVzZURlc2t0b3BOb3RpZmljYXRpb25zPT0ndW5kZWZpbmVkJyl7dmFyIGM7 dGhpcy51c2VEZXNrdG9wTm90aWZpY2F0aW9ucz10aGlzLmFsbG93RGVza3RvcE5v dGlmaWNhdGlvbnMmJndpbmRvdy53ZWJraXROb3RpZmljYXRpb25zJiZ3aW5kb3cu d2Via2l0Tm90aWZpY2F0aW9ucy5jaGVja1Blcm1pc3Npb24oKT09PTA7fWlmKHRo aXMudXNlRGVza3RvcE5vdGlmaWNhdGlvbnMpQm9vdGxvYWRlci5sb2FkQ29tcG9u ZW50cygnZGVza3RvcC1ub3RpZmljYXRpb25zJyxmdW5jdGlvbigpe0Rlc2t0b3BO b3RpZmljYXRpb25zLmFkZE5vdGlmaWNhdGlvbihiLmFsZXJ0X2lkKTt9KTtiLnRp bWU9Yi50aW1lfHxEYXRlLm5vdygpO2lmKGIubWFya3VwKXt0aGlzLl9tZXJnZU5v dGlmaWNhdGlvbihiLmFsZXJ0X2lkLGIudGltZSxiLm1hcmt1cCk7fWVsc2UgdGhp cy5fcG9sbGVyLnJlcXVlc3ROb3coKTt9LF9oYW5kbGVOb3RpZmljYXRpb25zUmVh ZE1zZzpmdW5jdGlvbihjLGEpe3ZhciBiPWEub2JqO2lmKHR5cGVvZiBCZWVwZXIh PSd1bmRlZmluZWQnKUJlZXBlci5nZXRJbnN0YW5jZSgpLm1hcmtSZWFkKGZhbHNl LGIuYWxlcnRfaWRzKTt0aGlzLm1hcmtSZWFkKGZhbHNlLGIuYWxlcnRfaWRzKTt9 LGlzVGFiT3BlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLndyYXBwZXImJkNTUy5o YXNDbGFzcyh0aGlzLndyYXBwZXIsJ29wZW5Ub2dnbGVyJyk7fX07CmZ1bmN0aW9u IE9yaWdpbmFsTm90aWZpY2F0aW9ucyhhKXt0aGlzLnBhcmVudC5jb25zdHJ1Y3Qo dGhpcyxhKTt9Q2xhc3MuZXh0ZW5kKE9yaWdpbmFsTm90aWZpY2F0aW9ucywnTm90 aWZpY2F0aW9ucycpO2NvcHlfcHJvcGVydGllcyhPcmlnaW5hbE5vdGlmaWNhdGlv bnMucHJvdG90eXBlLHtfaW5pdDpmdW5jdGlvbigpe3RoaXMucGFyZW50Ll9pbml0 KCk7dGhpcy5hbGVydExpc3Quc3Vic2NyaWJlKE5vdGlmaWNhdGlvbkxpc3QuTUFS S19SRUFEX1RZUEUsdGhpcy5fYW5pbWF0ZU1hcmtSZWFkLmJpbmQodGhpcykpO0Fy Yml0ZXIuc3Vic2NyaWJlKCdqZXdlbC9yZXNpemUnLHRoaXMuX2hpZGVPdmVyZmxv dy5zaGllbGQodGhpcykpO30sZmV0Y2hIYW5kbGVyOmZ1bmN0aW9uKGMpe3RoaXMu cGFyZW50LmZldGNoSGFuZGxlcihjKTt2YXIgYj1jLmdldFBheWxvYWQoKTt2YXIg ZD1iLmdlbmVyYXRlZDt2YXIgYT1NYXRoLnJvdW5kKChuZXcgRGF0ZSgpKS5nZXRU aW1lKCkvMTAwMCk7aWYoYS1kPjE1KWQ9YTtCb290bG9hZGVyLmxvYWRDb21wb25l bnRzKCdsaXZlLXRpbWVyJyxmdW5jdGlvbigpe0xpdmVUaW1lci5yZXN0YXJ0KGQp O0xpdmVUaW1lci5zdGFydExvb3AoMCk7fSk7dGhpcy5faGlkZU92ZXJmbG93KCk7 fSxfbWVyZ2VOb3RpZmljYXRpb246ZnVuY3Rpb24oYSxjLGIpe3RoaXMucGFyZW50 Ll9tZXJnZU5vdGlmaWNhdGlvbihhLGMsYik7dmFyIGQ9dGhpcy5hbGVydExpc3Qu Z2V0RG9tT2JqKGEpO2lmKGQpQm9vdGxvYWRlci5sb2FkQ29tcG9uZW50cygnbGl2 ZS10aW1lcicsZnVuY3Rpb24oKXtMaXZlVGltZXIuYWRkVGltZVN0YW1wcyhkKTt9 KTt9LF9hbmltYXRlTWFya1JlYWQ6ZnVuY3Rpb24oYSxiKXthbmltYXRpb24oYiku ZHVyYXRpb24oNTAwMCkuY2hlY2twb2ludCgpLmZyb20oJ2JhY2tncm91bmRDb2xv cicsJyNFRkYxRjcnKS50bygnYmFja2dyb3VuZENvbG9yJywnI0ZGRkZGRicpLmR1 cmF0aW9uKDIyNTApLm9uZG9uZShDU1MucmVtb3ZlQ2xhc3MuYmluZChudWxsLGIs Tm90aWZpY2F0aW9uTGlzdC5JVEVNX1VOUkVBRF9DTEFTUykpLmdvKCk7fSxvbkNs aWNrOmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnQub25DbGljaygpO3RoaXMuX2hpZGVP dmVyZmxvdygpO30sX3VwZGF0ZUNvdW50OmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnQu X3VwZGF0ZUNvdW50KCk7dGhpcy5faGlkZU92ZXJmbG93KCk7fSxfaGlkZU92ZXJm bG93OmZ1bmN0aW9uKGEsZCl7YT1hfHxET00uZmluZCh0aGlzLmpld2VsRmx5b3V0 LCcuamV3ZWxGb290ZXInKTtkPWR8fERPTS5zY3J5KCQoJ2ZiTm90aWZpY2F0aW9u c0xpc3QnKSwnLm5vdGlmaWNhdGlvbicpO2lmKCFkLmxlbmd0aHx8KENTUy5oYXND bGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJ3RpbnlWaWV3cG9ydCcpJiYh Q1NTLmhhc0NsYXNzKGRvY3VtZW50LmJvZHksJ2ZpeGVkQm9keScpKSl7ZC5lYWNo KENTUy5zaG93KTtyZXR1cm47fXZhciBiPVZlY3RvcjIuZ2V0Vmlld3BvcnREaW1l bnNpb25zKCkueS1WZWN0b3IyLmdldEVsZW1lbnRQb3NpdGlvbihkWzBdLCd2aWV3 cG9ydCcpLnktVmVjdG9yMi5nZXRFbGVtZW50RGltZW5zaW9ucyhhKS55LGM9MDtm b3IoO2M8ZC5sZW5ndGgmJmI+MDsrK2Mpe0NTUy5zaG93KGRbY10pO2ItPVZlY3Rv cjIuZ2V0RWxlbWVudERpbWVuc2lvbnMoZFtjXSkueTt9YjwwJiYtLWM7Zm9yKDtj PGQubGVuZ3RoOysrYylDU1MuaGlkZShkW2NdKTt9fSk7CnZhciBQaG90b3NDb25z dD17VklFV0VSX1BFUk1BTElOSzowLFZJRVdFUl9USEVBVEVSOjEsVklFV0VSX1NO T1dCT1g6MixCVUxLX0VESVRPUjozLEZMQVNIX1VQTE9BREVSOjQsaW5DZW50ZXJT dGFnZTpmdW5jdGlvbihhKXtyZXR1cm4gYT09UGhvdG9zQ29uc3QuVklFV0VSX1RI RUFURVJ8fGE9PVBob3Rvc0NvbnN0LlZJRVdFUl9TTk9XQk9YO30sU0laRV9OT1JN QUw6J24nfTsKZnVuY3Rpb24gQWxidW1TY3JvbGxlcigpe31BbGJ1bVNjcm9sbGVy LnByb3RvdHlwZT17aW5pdDpmdW5jdGlvbihkLGUpe3RoaXMucGhvdG9Hcm91cHM9 e307dGhpcy5zY3JvbGxMaXN0ZW5lcj17fTtpZihkLmxlbmd0aCl7dmFyIGI9ZC5z aGlmdCgpLGY9YixhPTAsYz1iLmlkO3doaWxlKGYpe2lmKCF0aGlzLnBob3RvR3Jv dXBzW2NdKXRoaXMucGhvdG9Hcm91cHNbY109W107dmFyIGc9RE9NLnNjcnkoZiwn YS51aVNjcm9sbGFibGVUaHVtYicpO2lmKGcubGVuZ3RoPjApdGhpcy5waG90b0dy b3Vwc1tjXS5wdXNoKGdbMF0pO2Y9dGhpcy5nZXROZXh0UGhvdG9DZWxsKGYpO2lm KCsrYSVlPT0wKXt0aGlzLnNjcm9sbExpc3RlbmVyW2NdPW5ldyBPblZpc2libGUo Yix0aGlzLnNob3dQYWdlLmJpbmQodGhpcyxiKSk7Yj1kLnNoaWZ0KCk7aWYoYilj PWIuaWQ7fX1pZihiKXRoaXMuc2Nyb2xsTGlzdGVuZXJbY109bmV3IE9uVmlzaWJs ZShiLHRoaXMuc2hvd1BhZ2UuYmluZCh0aGlzLGIpKTt9fSxzaG93UGFnZTpmdW5j dGlvbihhKXt2YXIgYj10aGlzLnBob3RvR3JvdXBzW2EuaWRdO2lmKGIpZm9yKHZh ciBjPTAsZD1iLmxlbmd0aDtjPGQ7YysrKURPTS5maW5kKGJbY10sJ2knKS5zdHls ZS5iYWNrZ3JvdW5kSW1hZ2U9J3VybCgnK2JbY10uZ2V0QXR0cmlidXRlKCdkYXRh LXNyYycpKycpJzt9LGdldE5leHRQaG90b0NlbGw6ZnVuY3Rpb24oYSl7dmFyIGI9 bnVsbDtpZihhLm5leHRTaWJsaW5nKXtiPWEubmV4dFNpYmxpbmc7fWVsc2UgaWYo YS5wYXJlbnROb2RlLm5leHRTaWJsaW5nKWI9YS5wYXJlbnROb2RlLm5leHRTaWJs aW5nLmZpcnN0Q2hpbGQ7aWYoYiYmYi5jaGlsZEVsZW1lbnRDb3VudCE9PTApcmV0 dXJuIGI7cmV0dXJuIG51bGw7fX07CnZhciBQaG90b0lubGluZUNhcHRpb25FZGl0 b3I9ZnVuY3Rpb24oYSl7dGhpcy5pbnN0YW5jZUlkPWE7UGhvdG9JbmxpbmVDYXB0 aW9uRWRpdG9yLmluc3RhbmNlc1thXT10aGlzO307Y29weV9wcm9wZXJ0aWVzKFBo b3RvSW5saW5lQ2FwdGlvbkVkaXRvcix7aW5zdGFuY2VzOnt9LGdldEluc3RhbmNl OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmluc3RhbmNlc1thXTt9fSk7UGhvdG9J bmxpbmVDYXB0aW9uRWRpdG9yLnByb3RvdHlwZT17aW5pdDpmdW5jdGlvbihhKXt0 aGlzLmVsZW1lbnQ9YTtFdmVudC5saXN0ZW4oYSwnY2xpY2snLHRoaXMuaGFuZGxl Q2xpY2suYmluZCh0aGlzKSk7dmFyIGI9RE9NLnNjcnkoYSwnaW5wdXRbbmFtZT0i Y2FwdGlvbl9pZCJdJyk7aWYoYi5sZW5ndGgpYlswXS52YWx1ZT10aGlzLmluc3Rh bmNlSWQ7dGhpcy5pbnB1dFN0cj0nJzt2YXIgYz1ET00uc2NyeSh0aGlzLmVsZW1l bnQsJ3RleHRhcmVhLmZiUGhvdG9DYXB0aW9uSW5wdXQnKVswXTtpZihjKXRoaXMu aW5wdXRTdHI9SW5wdXQuZ2V0VmFsdWUoYyk7fSxoYW5kbGVDbGljazpmdW5jdGlv bihldmVudCl7dmFyIGE9ZXZlbnQuZ2V0VGFyZ2V0KCk7aWYoUGFyZW50LmJ5Q2xh c3MoYSwnZWRpdEljb24nKXx8UGFyZW50LmJ5Q2xhc3MoYSwnbm9DYXB0aW9uJykp e3RoaXMudG9nZ2xlRWRpdERlc2NyaXB0aW9uKHRydWUpO31lbHNlIGlmKFBhcmVu dC5ieUNsYXNzKGEsJ2NhbmNlbEVkaXQnKSl7SW5wdXQuc2V0VmFsdWUoRE9NLmZp bmQodGhpcy5lbGVtZW50LCd0ZXh0YXJlYS5mYlBob3RvQ2FwdGlvbklucHV0Jyks dGhpcy5pbnB1dFN0cik7dGhpcy50b2dnbGVFZGl0RGVzY3JpcHRpb24oZmFsc2Up O319LHNldENhcHRpb246ZnVuY3Rpb24oYSl7RE9NLnNldENvbnRlbnQoRE9NLmZp bmQodGhpcy5lbGVtZW50LCcuZmJQaG90b0NhcHRpb25UZXh0JyksYSk7dGhpcy50 b2dnbGVFZGl0RGVzY3JpcHRpb24oZmFsc2UpO3RoaXMuaW5wdXRTdHI9SW5wdXQu Z2V0VmFsdWUoRE9NLmZpbmQodGhpcy5lbGVtZW50LCd0ZXh0YXJlYS5mYlBob3Rv Q2FwdGlvbklucHV0JykpO30sZ2V0Q2FwdGlvbjpmdW5jdGlvbigpe3JldHVybiBE T00uZ2V0VGV4dChET00uZmluZCh0aGlzLmVsZW1lbnQsJy5mYlBob3RvQ2FwdGlv blRleHQnKSk7fSx0b2dnbGVFZGl0RGVzY3JpcHRpb246ZnVuY3Rpb24oYyl7aWYo IWMpRE9NLmZpbmQodGhpcy5lbGVtZW50LCd0ZXh0YXJlYS5mYlBob3RvQ2FwdGlv bklucHV0JykuYmx1cigpO0NTUy5jb25kaXRpb25DbGFzcyh0aGlzLmVsZW1lbnQs J2ZiUGhvdG9JbmxpbmVDYXB0aW9uRWRpdG9yRWRpdE1vZGUnLCEhYyk7aWYoYyl7 dmFyIGI9RE9NLmZpbmQodGhpcy5lbGVtZW50LCd0ZXh0YXJlYS5mYlBob3RvQ2Fw dGlvbklucHV0Jyk7dmFyIGE9RE9NQ29udHJvbC5nZXRJbnN0YW5jZShiKTthJiZh LnVwZGF0ZSgpO2IuZm9jdXMoKTt9ZWxzZXtDU1MuY29uZGl0aW9uQ2xhc3MoRE9N LmZpbmQodGhpcy5lbGVtZW50LCcubm9DYXB0aW9uJyksJ2hpZGRlbl9lbGVtJyx0 aGlzLmdldENhcHRpb24oKS5sZW5ndGgpO0NTUy5jb25kaXRpb25DbGFzcyhET00u ZmluZCh0aGlzLmVsZW1lbnQsJy53aXRoQ2FwdGlvbicpLCdoaWRkZW5fZWxlbScs IXRoaXMuZ2V0Q2FwdGlvbigpLmxlbmd0aCk7fX19OwpmdW5jdGlvbiBQaG90b3NU YWdnaW5nV2F0ZXJmYWxsKGEpe1Bob3Rvc1RhZ2dpbmdXYXRlcmZhbGwuX3F1ZXVl TmFtZT1hfHxQaG90b3NUYWdnaW5nV2F0ZXJmYWxsLl9xdWV1ZU5hbWU7fWNvcHlf cHJvcGVydGllcyhQaG90b3NUYWdnaW5nV2F0ZXJmYWxsLHtCRUdJTjoiYmVnaW4i LFRBR19GQUNFOiJ0YWdfZmFjZSIsQUREX05BTUU6ImFkZF9uYW1lIixUQUdfQ09O RklSTUVEOiJ0YWdfY29uZmlybWVkIixGSU5JU0g6ImZpbmlzaCIsVFlQRV9OQU1F Oid0eXBlX25hbWUnLFNFTEVDVF9OQU1FOidzZWxlY3RfbmFtZScsX3F1ZXVlTmFt ZTpudWxsLHNlbmRTaWduYWw6ZnVuY3Rpb24oYixhKXtuZXcgQXN5bmNTaWduYWwo Jy9hamF4L3Bob3Rvcy90YWdfd2F0ZXJmYWxsLnBocCcse2RhdGE6SlNPTi5zdHJp bmdpZnkoYil9KS5zZXRIYW5kbGVyKGEpLnNlbmQoKTt9fSk7CmZ1bmN0aW9uIFR5 cGVhaGVhZChiLGQsYSxjKXt0aGlzLmFyZ3M9e2RhdGE6Yix2aWV3OmQsY29yZTph fTtEYXRhU3RvcmUuc2V0KGMsJ1R5cGVhaGVhZCcsdGhpcyk7dGhpcy5lbGVtZW50 PWM7fVR5cGVhaGVhZC5nZXRJbnN0YW5jZT1mdW5jdGlvbihhKXt2YXIgYj1QYXJl bnQuYnlDbGFzcyhhLCd1aVR5cGVhaGVhZCcpO3JldHVybiBiP0RhdGFTdG9yZS5n ZXQoYiwnVHlwZWFoZWFkJyk6bnVsbDt9O0NsYXNzLm1peGluKFR5cGVhaGVhZCwn QXJiaXRlcicse2luaXQ6ZnVuY3Rpb24oYSl7dGhpcy5pbml0PWJhZ29maG9sZGlu Zzt0aGlzLmdldENvcmUoKTt0aGlzLnByb3h5RXZlbnRzKCk7dGhpcy5pbml0QmVo YXZpb3JzKGF8fFtdKTt0aGlzLmluZm9ybSgnaW5pdCcsdGhpcyk7dGhpcy5kYXRh LmJvb3RzdHJhcCgpO3RoaXMuY29yZS5mb2N1cygpO30sZ2V0RGF0YTpmdW5jdGlv bigpe2lmKCF0aGlzLmRhdGEpe3ZhciBhPXRoaXMuYXJncy5kYXRhO3RoaXMuZGF0 YT1hO3RoaXMuZGF0YS5pbml0KCk7fXJldHVybiB0aGlzLmRhdGE7fSxnZXRWaWV3 OmZ1bmN0aW9uKCl7aWYoIXRoaXMudmlldyl7dmFyIGE9dGhpcy5hcmdzLnZpZXc7 dmFyIGI9Z2UoYS5ub2RlX2lkKTtpZighYil7Yj0kTignZGl2Jyx7Y2xhc3NOYW1l Oid1aVR5cGVhaGVhZFZpZXcnfSk7RE9NLmFwcGVuZENvbnRlbnQodGhpcy5lbGVt ZW50LGIpO310aGlzLnZpZXc9bmV3IHdpbmRvd1thLmN0b3JdKGIsYS5vcHRpb25z fHx7fSk7dGhpcy52aWV3LmluaXQoKTt9cmV0dXJuIHRoaXMudmlldzt9LGdldENv cmU6ZnVuY3Rpb24oKXtpZighdGhpcy5jb3JlKXt2YXIgYT10aGlzLmFyZ3MuY29y ZTt0aGlzLmNvcmU9bmV3IHdpbmRvd1thLmN0b3JdKGEub3B0aW9uc3x8e30pO3Ro aXMuY29yZS5pbml0KHRoaXMuZ2V0RGF0YSgpLHRoaXMuZ2V0VmlldygpLHRoaXMu Z2V0RWxlbWVudCgpKTt9cmV0dXJuIHRoaXMuY29yZTt9LGdldEVsZW1lbnQ6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50O30sc3dhcERhdGE6ZnVuY3Rpb24o Yil7dmFyIGE9dGhpcy5jb3JlO3RoaXMuZGF0YT10aGlzLmFyZ3MuZGF0YT1iO2Iu aW5pdCgpO2lmKGEpe2EuZGF0YT1iO2EuaW5pdERhdGEoKTthLnJlc2V0KCk7fWIu Ym9vdHN0cmFwKCk7cmV0dXJuIGI7fSxwcm94eUV2ZW50czpmdW5jdGlvbigpe1t0 aGlzLmRhdGEsdGhpcy52aWV3LHRoaXMuY29yZV0uZWFjaChmdW5jdGlvbihhKXth LnN1YnNjcmliZShhLmV2ZW50cyx0aGlzLmluZm9ybS5iaW5kKHRoaXMpKTt9LHRo aXMpO30saW5pdEJlaGF2aW9yczpmdW5jdGlvbihhKXtpZih3aW5kb3cuVHlwZWFo ZWFkQmVoYXZpb3JzKWEuZWFjaChmdW5jdGlvbihiKXsoVHlwZWFoZWFkQmVoYXZp b3JzW2JdfHxiYWdvZmhvbGRpbmcpKHRoaXMpO30sdGhpcyk7fX0pOwp2YXIgVHlw ZWFoZWFkVXRpbD0oZnVuY3Rpb24oKXt2YXIgYj0vWyBdKy9nO3ZhciBjPS9bXiBd Ky9nO3ZhciBhPS9bLiwrKj8kfCN7fSgpXF5cLVxbXF1cXFwvIUAlJyJ+PTw+Xzo7 XHUyMDEwXHUyMDExXHUyMDEyXHUyMDEzXHUyMDE0XHUyMDE1XHUzMGZiXS9nO3Zh ciBkPXt9O3ZhciByPXthOiJcdTA0MzAgXHUwMGUwIFx1MDBlMSBcdTAwZTIgXHUw MGUzIFx1MDBlNCBcdTAwZTUiLGI6Ilx1MDQzMSIsYzoiXHUwNDQ2IFx1MDBlNyBc dTAxMGQiLGQ6Ilx1MDQzNCBcdTAwZjAgXHUwMTBmIFx1MDExMSIsZToiXHUwNDRk IFx1MDQzNSBcdTAwZTggXHUwMGU5IFx1MDBlYSBcdTAwZWIgXHUwMTFiIixmOiJc dTA0NDQiLGc6Ilx1MDQzMyBcdTAxMWYiLGg6Ilx1MDQ0NSBcdTAxMjciLGk6Ilx1 MDQzOCBcdTAwZWMgXHUwMGVkIFx1MDBlZSBcdTAwZWYgXHUwMTMxIixqOiJcdTA0 MzkiLGs6Ilx1MDQzYSBcdTAxMzgiLGw6Ilx1MDQzYiBcdTAxM2UgXHUwMTNhIFx1 MDE0MCBcdTAxNDIiLG06Ilx1MDQzYyIsbjoiXHUwNDNkIFx1MDBmMSBcdTAxNDgg XHUwMTQ5IFx1MDE0YiIsbzoiXHUwNDNlIFx1MDBmOCBcdTAwZjYgXHUwMGY1IFx1 MDBmNCBcdTAwZjMgXHUwMGYyIixwOiJcdTA0M2YiLHI6Ilx1MDQ0MCBcdTAxNTkg XHUwMTU1IixzOiJcdTA0NDEgXHUwMTVmIFx1MDE2MSBcdTAxN2YiLHQ6Ilx1MDQ0 MiBcdTAxNjUgXHUwMTY3IFx1MDBmZSIsdToiXHUwNDQzIFx1MDQ0ZSBcdTAwZmMg XHUwMGZiIFx1MDBmYSBcdTAwZjkgXHUwMTZmIix2OiJcdTA0MzIiLHk6Ilx1MDQ0 YiBcdTAwZmYgXHUwMGZkIix6OiJcdTA0MzcgXHUwMTdlIixhZToiXHUwMGU2Iixv ZToiXHUwMTUzIix0czoiXHUwNDQ2IixjaDoiXHUwNDQ3IixpajoiXHUwMTMzIixz aDoiXHUwNDQ4IixzczoiXHUwMGRmIix5YToiXHUwNDRmIn07Zm9yKHZhciBtIGlu IHIpe3ZhciBmPXJbbV0uc3BsaXQoJyAnKTtmb3IodmFyIGg9MDtoPGYubGVuZ3Ro O2grKylkW2ZbaF1dPW07fXZhciBwPXt9O2Z1bmN0aW9uIGUocyl7cmV0dXJuIHM/ cy5yZXBsYWNlKGEsJyAnKTonJzt9ZnVuY3Rpb24gZyh2KXt2PSgnJyt2KS50b0xv d2VyQ2FzZSgpO3ZhciB1PScnO3ZhciBzPScnO2Zvcih2YXIgdD12Lmxlbmd0aDt0 LS07KXtzPXYuY2hhckF0KHQpO3U9KGRbc118fHMpK3U7fXJldHVybiB1LnJlcGxh Y2UoYiwnICcpO31mdW5jdGlvbiBxKHQpe3ZhciB1PVtdO3ZhciBzPWMuZXhlYyh0 KTt3aGlsZShzKXtzPXNbMF07dS5wdXNoKHMpO3M9Yy5leGVjKHQpO31yZXR1cm4g dTt9ZnVuY3Rpb24gbyh2LHUpe3Y9JycrdjtpZighcC5oYXNPd25Qcm9wZXJ0eSh2 KSl7dmFyIHQ9Zyh2KTt2YXIgcz1lKHQpO3Bbdl09e3ZhbHVlOnYsZmxhdFZhbHVl OnQsdG9rZW5zOnEocyksaXNQcmVmaXhRdWVyeTpzJiZzW3MubGVuZ3RoLTFdIT0n ICd9O31pZih1JiZ0eXBlb2YgcFt2XS5zb3J0ZWRUb2tlbnM9PSd1bmRlZmluZWQn KXtwW3ZdLnNvcnRlZFRva2Vucz1jb3B5X3Byb3BlcnRpZXMoW10scFt2XS50b2tl bnMpO3Bbdl0uc29ydGVkVG9rZW5zLnNvcnQoZnVuY3Rpb24odyx4KXtyZXR1cm4g eC5sZW5ndGgtdy5sZW5ndGg7fSk7fXJldHVybiBwW3ZdO31mdW5jdGlvbiBqKHQs eix2KXt2YXIgeT1vKHosdD09J3ByZWZpeCcpO3ZhciB6YT10PT0ncHJlZml4Jz95 LnNvcnRlZFRva2Vuczp5LnRva2Vuczt2YXIgdz1vKHYpLnRva2Vuczt2YXIgdT17 fTt2YXIgeD15LmlzUHJlZml4UXVlcnkmJnQ9PSdxdWVyeSc/emEubGVuZ3RoLTE6 bnVsbDt2YXIgcz1mdW5jdGlvbih6ZCx6Yyl7Zm9yKHZhciB6Yj0wO3piPHcubGVu Z3RoOysremIpe3ZhciB6ZT13W3piXTtpZighdVt6Yl0mJih6ZT09emR8fCgodD09 J3F1ZXJ5JyYmemM9PT14fHx0PT0ncHJlZml4JykmJnplLmluZGV4T2YoemQpPT09 MCkpKXJldHVybiAodVt6Yl09dHJ1ZSk7fXJldHVybiBmYWxzZTt9O3JldHVybiB6 YS5sZW5ndGgmJnphLmV2ZXJ5KHMpO312YXIgaT1qLmN1cnJ5KCdleGFjdCcpO3Zh ciBsPWouY3VycnkoJ3F1ZXJ5Jyk7dmFyIGs9ai5jdXJyeSgncHJlZml4Jyk7dmFy IG49e3BhcnNlOm8saXNFeGFjdE1hdGNoOmksaXNRdWVyeU1hdGNoOmwsaXNQcmVm aXhNYXRjaDprfTtyZXR1cm4gbjt9KSgpOwpmdW5jdGlvbiBEYXRhU291cmNlKGEp e3RoaXMuX21heFJlc3VsdHM9YS5tYXhSZXN1bHRzfHwxMDt0aGlzLnRva2VuPWEu dG9rZW47dGhpcy5xdWVyeURhdGE9YS5xdWVyeURhdGF8fHt9O3RoaXMucXVlcnlF bmRwb2ludD1hLnF1ZXJ5RW5kcG9pbnR8fCcnO3RoaXMuYm9vdHN0cmFwRGF0YT1h LmJvb3RzdHJhcERhdGF8fHt9O3RoaXMuYm9vdHN0cmFwRW5kcG9pbnQ9YS5ib290 c3RyYXBFbmRwb2ludHx8Jyc7dGhpcy5fZXhjbHVzaW9ucz1hLmV4Y2x1c2lvbnN8 fFtdO3RoaXMuX2luZGV4ZWRGaWVsZHM9YS5pbmRleGVkRmllbGRzfHxbJ3RleHQn LCd0b2tlbnMnXTt0aGlzLl9hbHdheXNQcmVmaXhNYXRjaD1hLmFsd2F5c1ByZWZp eE1hdGNofHxmYWxzZTt0aGlzLl9taW5FeGFjdE1hdGNoTGVuZ3RoPTQ7fUNsYXNz Lm1peGluKERhdGFTb3VyY2UsJ0FyYml0ZXInLHtldmVudHM6WydhY3Rpdml0eScs J2Jvb3RzdHJhcCcsJ3F1ZXJ5JywncmVzcG9uZCddLGluaXQ6ZnVuY3Rpb24oKXt0 aGlzLmluaXQ9YmFnb2Zob2xkaW5nO3RoaXMuX2ZpZWxkcz1PYmplY3QuZnJvbSh0 aGlzLl9pbmRleGVkRmllbGRzKTt0aGlzLl9hY3RpdmVRdWVyaWVzPTA7dGhpcy5k aXJ0eSgpO30sZGlydHk6ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPScnO3RoaXMuX2Jv b3RzdHJhcHBlZD1mYWxzZTt0aGlzLl9ib290c3RyYXBwaW5nPWZhbHNlO3RoaXMu X2RhdGE9e307dGhpcy5sb2NhbENhY2hlPXt9O3RoaXMucXVlcnlDYWNoZT17fTt0 aGlzLmluZm9ybSgnZGlydHknLHt9KTt9LGJvb3RzdHJhcDpmdW5jdGlvbigpe2lm KHRoaXMuX2Jvb3RzdHJhcHBlZClyZXR1cm47dGhpcy5ib290c3RyYXBXaXRob3V0 VG9rZW4oKTt0aGlzLl9ib290c3RyYXBwZWQ9dHJ1ZTt0aGlzLl9ib290c3RyYXBw aW5nPXRydWU7dGhpcy5pbmZvcm0oJ2Jvb3RzdHJhcCcse2Jvb3RzdHJhcHBpbmc6 dHJ1ZX0pO30sYm9vdHN0cmFwV2l0aG91dFRva2VuOmZ1bmN0aW9uKCl7dGhpcy5m ZXRjaCh0aGlzLmJvb3RzdHJhcEVuZHBvaW50LHRoaXMuYm9vdHN0cmFwRGF0YSx7 Ym9vdHN0cmFwOnRydWUsdG9rZW46dGhpcy50b2tlbn0pO30sYm9vdHN0cmFwV2l0 aFRva2VuOmZ1bmN0aW9uKCl7dmFyIGE9Y29weV9wcm9wZXJ0aWVzKHt9LHRoaXMu Ym9vdHN0cmFwRGF0YSk7YS50b2tlbj10aGlzLnRva2VuO3RoaXMuZmV0Y2godGhp cy5ib290c3RyYXBFbmRwb2ludCxhLHtib290c3RyYXA6dHJ1ZSxyZXBsYWNlQ2Fj aGU6dHJ1ZX0pO30scXVlcnk6ZnVuY3Rpb24oZixjLGEpe3RoaXMuaW5mb3JtKCdi ZWZvcmVRdWVyeScse3ZhbHVlOmZ9KTt2YXIgZT10aGlzLmJ1aWxkVWlkcyhmLFtd LGEpO3ZhciBkPXRoaXMucmVzcG9uZChmLGUpO3RoaXMudmFsdWU9Zjt0aGlzLmlu Zm9ybSgncXVlcnknLHt2YWx1ZTpmLHJlc3VsdHM6ZH0pO3ZhciBiPVR5cGVhaGVh ZFV0aWwucGFyc2UoZikuZmxhdFZhbHVlO2lmKGN8fCFifHwhdGhpcy5xdWVyeUVu ZHBvaW50fHx0aGlzLmdldFF1ZXJ5Q2FjaGUoKS5oYXNPd25Qcm9wZXJ0eShiKXx8 IXRoaXMuc2hvdWxkRmV0Y2hNb3JlUmVzdWx0cyhkKSlyZXR1cm4gZmFsc2U7dGhp cy5pbmZvcm0oJ3F1ZXJ5RW5kcG9pbnQnLHt2YWx1ZTpmfSk7dGhpcy5mZXRjaCh0 aGlzLnF1ZXJ5RW5kcG9pbnQsdGhpcy5nZXRRdWVyeURhdGEoZixlKSx7dmFsdWU6 ZixleGNsdXNpb25zOmF9KTtyZXR1cm4gdHJ1ZTt9LHNob3VsZEZldGNoTW9yZVJl c3VsdHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RoPHRoaXMuX21heFJlc3Vs dHM7fSxnZXRRdWVyeURhdGE6ZnVuY3Rpb24oYyxiKXt2YXIgYT1jb3B5X3Byb3Bl cnRpZXMoe3ZhbHVlOmN9LHRoaXMucXVlcnlEYXRhfHx7fSk7Yj1ifHxbXTtpZihi Lmxlbmd0aClhLmV4aXN0aW5nX2lkcz1iLmpvaW4oJywnKTtpZih0aGlzLl9ib290 c3RyYXBwaW5nKWEuYnNwPXRydWU7cmV0dXJuIGE7fSxzZXRRdWVyeURhdGE6ZnVu Y3Rpb24oYSxiKXtpZihiKXRoaXMucXVlcnlEYXRhPXt9O2NvcHlfcHJvcGVydGll cyh0aGlzLnF1ZXJ5RGF0YSxhKTtyZXR1cm4gdGhpczt9LHNldEJvb3RzdHJhcERh dGE6ZnVuY3Rpb24oYSxiKXtpZihiKXRoaXMuYm9vdHN0cmFwRGF0YT17fTtjb3B5 X3Byb3BlcnRpZXModGhpcy5ib290c3RyYXBEYXRhLGEpO3JldHVybiB0aGlzO30s Z2V0RXhjbHVzaW9uczpmdW5jdGlvbigpe3JldHVybiAkQSh0aGlzLl9leGNsdXNp b25zKTt9LHNldEV4Y2x1c2lvbnM6ZnVuY3Rpb24oYSl7dGhpcy5fZXhjbHVzaW9u cz1hfHxbXTt9LHNldEZpbHRlcjpmdW5jdGlvbihhKXt0aGlzLmZpbHRlcj1hO30s cmVzcG9uZDpmdW5jdGlvbihkLGMsYSl7dmFyIGI9dGhpcy5idWlsZERhdGEoYyk7 dGhpcy5pbmZvcm0oJ3Jlc3BvbmQnLHt2YWx1ZTpkLHJlc3VsdHM6Yixpc0FzeW5j OiEhYX0pO3JldHVybiBiO30sYXN5bmNFcnJvckhhbmRsZXI6YmFnb2Zob2xkaW5n LGZldGNoOmZ1bmN0aW9uKGMsYixkKXtpZighYylyZXR1cm47dmFyIGE9bmV3IEFz eW5jUmVxdWVzdCgpLnNldFVSSShjKS5zZXREYXRhKGIpLnNldE1ldGhvZCgnR0VU Jykuc2V0UmVhZE9ubHkodHJ1ZSkuc2V0SGFuZGxlcihmdW5jdGlvbihlKXt0aGlz LmZldGNoSGFuZGxlcihlLGR8fHt9KTt9LmJpbmQodGhpcykpO2lmKGM9PT10aGlz LnF1ZXJ5RW5kcG9pbnQpYS5zZXRGaW5hbGx5SGFuZGxlcihmdW5jdGlvbigpe3Ro aXMuX2FjdGl2ZVF1ZXJpZXMtLTtpZighdGhpcy5fYWN0aXZlUXVlcmllcyl0aGlz LmluZm9ybSgnYWN0aXZpdHknLHthY3Rpdml0eTpmYWxzZX0pO30uYmluZCh0aGlz KSk7YS5zZXRFcnJvckhhbmRsZXIodGhpcy5hc3luY0Vycm9ySGFuZGxlcik7dGhp cy5pbmZvcm0oJ2JlZm9yZUZldGNoJyx7cmVxdWVzdDphLGZldGNoX2NvbnRleHQ6 ZH0pO2Euc2VuZCgpO2lmKGM9PT10aGlzLnF1ZXJ5RW5kcG9pbnQpe2lmKCF0aGlz Ll9hY3RpdmVRdWVyaWVzKXRoaXMuaW5mb3JtKCdhY3Rpdml0eScse2FjdGl2aXR5 OnRydWV9KTt0aGlzLl9hY3RpdmVRdWVyaWVzKys7fX0sZmV0Y2hIYW5kbGVyOmZ1 bmN0aW9uKGQsYil7dmFyIGU9Yi52YWx1ZTt2YXIgYT1iLmV4Y2x1c2lvbnM7aWYo IWUmJmIucmVwbGFjZUNhY2hlKXRoaXMubG9jYWxDYWNoZT17fTt0aGlzLmFkZEVu dHJpZXMoZC5nZXRQYXlsb2FkKCkuZW50cmllcyxlKTt0aGlzLmluZm9ybSgnZmV0 Y2hDb21wbGV0ZScse3Jlc3BvbnNlOmQsdmFsdWU6ZSxmZXRjaF9jb250ZXh0OmJ9 KTt2YXIgYz0oIWUmJnRoaXMudmFsdWUpP3RoaXMudmFsdWU6ZTt0aGlzLnJlc3Bv bmQoYyx0aGlzLmJ1aWxkVWlkcyhjLFtdLGEpLHRydWUpO2lmKCFlKXtpZih0aGlz Ll9ib290c3RyYXBwaW5nKXt0aGlzLl9ib290c3RyYXBwaW5nPWZhbHNlO3RoaXMu aW5mb3JtKCdib290c3RyYXAnLHtib290c3RyYXBwaW5nOmZhbHNlfSk7fWlmKGIu dG9rZW4mJmQuZ2V0UGF5bG9hZCgpLnRva2VuIT09Yi50b2tlbil0aGlzLmJvb3Rz dHJhcFdpdGhUb2tlbigpO319LGFkZEVudHJpZXM6ZnVuY3Rpb24oYixlKXt2YXIg Yz10aGlzLnByb2Nlc3NFbnRyaWVzKCRBKGJ8fFtdKSxlKTt2YXIgYT10aGlzLmJ1 aWxkVWlkcyhlLGMpO2lmKGUpe3ZhciBkPXRoaXMuZ2V0UXVlcnlDYWNoZSgpO2Rb VHlwZWFoZWFkVXRpbC5wYXJzZShlKS5mbGF0VmFsdWVdPWE7fWVsc2UgdGhpcy5m aWxsQ2FjaGUoYSk7fSxwcm9jZXNzRW50cmllczpmdW5jdGlvbihhLGIpe3JldHVy biBhLm1hcChmdW5jdGlvbihlLGQpe3ZhciBmPShlLnVpZD1lLnVpZCsnJyk7dmFy IGM9dGhpcy5nZXRFbnRyeShmKTtpZighYyl7Yz1lO2MucXVlcnk9Yjt0aGlzLnNl dEVudHJ5KGYsYyk7fWVsc2UgY29weV9wcm9wZXJ0aWVzKGMsZSk7Yy5pbmRleD09 PXVuZGVmaW5lZCYmKGMuaW5kZXg9ZCk7cmV0dXJuIGY7fSx0aGlzKTt9LGdldEFs bEVudHJpZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YXx8e307fSxnZXRF bnRyeTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fZGF0YVthXXx8bnVsbDt9LHNl dEVudHJ5OmZ1bmN0aW9uKGIsYSl7dGhpcy5fZGF0YVtiXT1hO30sZmlsbENhY2hl OmZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMubG9jYWxDYWNoZTtiLmVhY2goZnVuY3Rp b24oZyl7dmFyIGQ9dGhpcy5nZXRFbnRyeShnKTtpZighZClyZXR1cm47ZC5ib290 c3RyYXBwZWQ9dHJ1ZTt2YXIgZj1UeXBlYWhlYWRVdGlsLnBhcnNlKHRoaXMuZ2V0 VGV4dFRvSW5kZXgoZCkpLnRva2Vucztmb3IodmFyIGM9MCxlPWYubGVuZ3RoO2M8 ZTsrK2Mpe3ZhciBoPWZbY107aWYoIWEuaGFzT3duUHJvcGVydHkoaCkpYVtoXT17 fTthW2hdW2ddPXRydWU7fX0sdGhpcyk7fSxnZXRUZXh0VG9JbmRleDpmdW5jdGlv bihjKXtpZihjLnRleHRUb0luZGV4KXJldHVybiBjLnRleHRUb0luZGV4O3ZhciBk PVtdO2Zvcih2YXIgYiBpbiB0aGlzLl9maWVsZHMpe3ZhciBhPWNbYl07aWYoYSlk LnB1c2goYS5qb2luP2Euam9pbignICcpOmEpO31yZXR1cm4gKGMudGV4dFRvSW5k ZXg9ZC5qb2luKCcgJykpO30sbWVyZ2VVaWRzOmZ1bmN0aW9uKGEsYyxiLGUpe3Zh ciBkPWZ1bmN0aW9uKGYsZyl7dmFyIGg9dGhpcy5nZXRFbnRyeShmKTt2YXIgaT10 aGlzLmdldEVudHJ5KGcpO2lmKGguZXh0ZW5kZWRfbWF0Y2ghPT1pLmV4dGVuZGVk X21hdGNoKXJldHVybiBoLmV4dGVuZGVkX21hdGNoPzE6LTE7aWYoaC5pbmRleCE9 PWkuaW5kZXgpcmV0dXJuIGguaW5kZXgtaS5pbmRleDtpZihoLnRleHQubGVuZ3Ro IT09aS50ZXh0Lmxlbmd0aClyZXR1cm4gaC50ZXh0Lmxlbmd0aC1pLnRleHQubGVu Z3RoO3JldHVybiBoLnVpZDxpLnVpZDt9LmJpbmQodGhpcyk7dGhpcy5fY2hlY2tF eHRlbmRlZE1hdGNoKGUsYSk7cmV0dXJuIGEuc29ydChkKS5jb25jYXQoYyxiKTt9 LF9jaGVja0V4dGVuZGVkTWF0Y2g6ZnVuY3Rpb24oZSxkKXt2YXIgYj10aGlzLl9h bHdheXNQcmVmaXhNYXRjaD9UeXBlYWhlYWRVdGlsLmlzUHJlZml4TWF0Y2g6VHlw ZWFoZWFkVXRpbC5pc1F1ZXJ5TWF0Y2g7Zm9yKHZhciBhPTA7YTxkLmxlbmd0aDsr K2Epe3ZhciBjPXRoaXMuZ2V0RW50cnkoZFthXSk7Yy5leHRlbmRlZF9tYXRjaD1j LnRva2Vucz8hYihlLGMudGV4dCk6ZmFsc2U7fX0sYnVpbGRVaWRzOmZ1bmN0aW9u KGgsZCxhKXtpZighZClkPVtdO2lmKCFoKXJldHVybiBkO2lmKCFhKWE9W107dmFy IGI9dGhpcy5idWlsZENhY2hlUmVzdWx0cyhoLHRoaXMubG9jYWxDYWNoZSk7dmFy IGY9dGhpcy5idWlsZFF1ZXJ5UmVzdWx0cyhoKTt2YXIgZT10aGlzLm1lcmdlVWlk cyhiLGYsZCxoKTt2YXIgZz1PYmplY3QuZnJvbShhLmNvbmNhdCh0aGlzLl9leGNs dXNpb25zKSk7dmFyIGM9ZS5maWx0ZXIoZnVuY3Rpb24oaSl7aWYoZy5oYXNPd25Q cm9wZXJ0eShpKXx8IXRoaXMuZ2V0RW50cnkoaSkpcmV0dXJuIGZhbHNlO2lmKHRo aXMuZmlsdGVyJiYhdGhpcy5maWx0ZXIodGhpcy5nZXRFbnRyeShpKSkpcmV0dXJu IGZhbHNlO3JldHVybiAoZ1tpXT10cnVlKTt9LHRoaXMpO3JldHVybiB0aGlzLnVp ZHNJbmNsdWRpbmdFeGFjdChoLGMsZyk7fSx1aWRzSW5jbHVkaW5nRXhhY3Q6ZnVu Y3Rpb24oZyxkLGYpe3ZhciBlPWQubGVuZ3RoO2lmKGcubGVuZ3RoPHRoaXMuX21p bkV4YWN0TWF0Y2hMZW5ndGh8fGU8PXRoaXMuX21heFJlc3VsdHMpcmV0dXJuIGQ7 Zm9yKHZhciBjPTA7YzxlOysrYyl7dmFyIGE9dGhpcy5nZXRFbnRyeShkW2NdKTth LnRleHRfbG93ZXJ8fChhLnRleHRfbG93ZXI9YS50ZXh0LnRvTG93ZXJDYXNlKCkp O2lmKGEudGV4dF9sb3dlcj09PVR5cGVhaGVhZFV0aWwucGFyc2UoZykuZmxhdFZh bHVlKXtpZihjPj10aGlzLl9tYXhSZXN1bHRzKXt2YXIgYj1kLnNwbGljZShjLDEp O2Quc3BsaWNlKHRoaXMuX21heFJlc3VsdHMtMSwwLGIpO31icmVhazt9fXJldHVy biBkO30sYnVpbGREYXRhOmZ1bmN0aW9uKGQpe3ZhciBjPVtdO3ZhciBiPU1hdGgu bWluKGQubGVuZ3RoLHRoaXMuX21heFJlc3VsdHMpO2Zvcih2YXIgYT0wO2E8Yjsr K2EpYy5wdXNoKHRoaXMuZ2V0RW50cnkoZFthXSkpO3JldHVybiBjO30sZmluZFF1 ZXJ5Q2FjaGU6ZnVuY3Rpb24oZSl7dmFyIGI9MDt2YXIgYT1udWxsO3ZhciBkPXRo aXMuZ2V0UXVlcnlDYWNoZSgpO2Zvcih2YXIgYyBpbiBkKWlmKGUuaW5kZXhPZihj KT09MCYmYy5sZW5ndGg+Yil7Yj1jLmxlbmd0aDthPWM7fXJldHVybiBkW2FdfHxb XTt9LGJ1aWxkUXVlcnlSZXN1bHRzOmZ1bmN0aW9uKGMpe3ZhciBhPVR5cGVhaGVh ZFV0aWwucGFyc2UoYykuZmxhdFZhbHVlO3ZhciBiPXRoaXMuZmluZFF1ZXJ5Q2Fj aGUoYSk7aWYodGhpcy5nZXRRdWVyeUNhY2hlKCkuaGFzT3duUHJvcGVydHkoYSkp cmV0dXJuIGI7cmV0dXJuIHRoaXMuZmlsdGVyUXVlcnlSZXN1bHRzKGMsYik7fSxm aWx0ZXJRdWVyeVJlc3VsdHM6ZnVuY3Rpb24oYyxiKXt2YXIgYT10aGlzLl9hbHdh eXNQcmVmaXhNYXRjaD9UeXBlYWhlYWRVdGlsLmlzUHJlZml4TWF0Y2g6VHlwZWFo ZWFkVXRpbC5pc1F1ZXJ5TWF0Y2g7cmV0dXJuIGIuZmlsdGVyKGZ1bmN0aW9uKGQp e3JldHVybiBhKGMsdGhpcy5nZXRUZXh0VG9JbmRleCh0aGlzLmdldEVudHJ5KGQp KSk7fSx0aGlzKTt9LGJ1aWxkQ2FjaGVSZXN1bHRzOmZ1bmN0aW9uKHIsYSl7dmFy IGs9VHlwZWFoZWFkVXRpbC5wYXJzZShyLHRoaXMuX2Fsd2F5c1ByZWZpeE1hdGNo KTt2YXIgbD10aGlzLl9hbHdheXNQcmVmaXhNYXRjaD9rLnNvcnRlZFRva2Vuczpr LnRva2Vuczt2YXIgaD1sLmxlbmd0aDt2YXIgaT1rLmlzUHJlZml4UXVlcnk/aC0x Om51bGw7dmFyIGU9e307dmFyIGo9e307dmFyIG89e307dmFyIGY9W107dmFyIGM9 ZmFsc2U7dmFyIHE9e307dmFyIHA9MDtmb3IodmFyIGQ9MDtkPGg7KytkKXt2YXIg bT1sW2RdO2lmKCFxLmhhc093blByb3BlcnR5KG0pKXtwKys7cVttXT10cnVlO31l bHNlIGNvbnRpbnVlO2Zvcih2YXIgZyBpbiBhKWlmKCghZS5oYXNPd25Qcm9wZXJ0 eShnKSYmZz09PW0pfHwoKHRoaXMuX2Fsd2F5c1ByZWZpeE1hdGNofHxpPT09ZCkm JmcuaW5kZXhPZihtKT09PTApKXtpZihnPT09bSl7aWYoai5oYXNPd25Qcm9wZXJ0 eShnKSljPXRydWU7ZVtnXT10cnVlO31lbHNle2lmKGUuaGFzT3duUHJvcGVydHko Zyl8fGouaGFzT3duUHJvcGVydHkoZykpYz10cnVlO2pbZ109dHJ1ZTt9Zm9yKHZh ciBuIGluIGFbZ10paWYoZD09PTB8fChvLmhhc093blByb3BlcnR5KG4pJiZvW25d PT1wLTEpKW9bbl09cDt9fWZvcih2YXIgYiBpbiBvKWlmKG9bYl09PXApZi5wdXNo KGIpO2lmKGN8fHA8aClmPXRoaXMuZmlsdGVyUXVlcnlSZXN1bHRzKHIsZik7cmV0 dXJuIGY7fSxnZXRRdWVyeUNhY2hlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVl cnlDYWNoZTt9LHNldE1heFJlc3VsdHM6ZnVuY3Rpb24oYSl7dGhpcy5fbWF4UmVz dWx0cz1hO3RoaXMudmFsdWUmJnRoaXMucmVzcG9uZCh0aGlzLnZhbHVlLHRoaXMu YnVpbGRVaWRzKHRoaXMudmFsdWUpKTt9LHVwZGF0ZVRva2VuOmZ1bmN0aW9uKGEp e3RoaXMudG9rZW49YTt0aGlzLmRpcnR5KCk7cmV0dXJuIHRoaXM7fX0pOwpmdW5j dGlvbiBwaG90b3Nfdmlld2VyX3ZlcnNpb24oKXtpZihDU1MuaGFzQ2xhc3MoZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LCd0aGVhdGVyTW9kZScpKXtyZXR1cm4gUGhv dG9zQ29uc3QuVklFV0VSX1NOT1dCT1g7fWVsc2UgcmV0dXJuIFBob3Rvc0NvbnN0 LlZJRVdFUl9QRVJNQUxJTks7fQpmdW5jdGlvbiBQaG90b1RhZ2dlcihhKXt0aGlz LnZlcnNpb249YTtQaG90b1RhZ2dlci5pbnN0YW5jZXNbYV09dGhpczt9UGhvdG9U YWdnZXIuaW5zdGFuY2VzPXt9O1Bob3RvVGFnZ2VyLkFDVElWQVRFX1RBR0dJTkc9 J1Bob3RvVGFnZ2VyLkFDVElWQVRFX1RBR0dJTkcnO1Bob3RvVGFnZ2VyLmdldElu c3RhbmNlPWZ1bmN0aW9uKGEpe3JldHVybiBQaG90b1RhZ2dlci5pbnN0YW5jZXNb YV07fTtjb3B5X3Byb3BlcnRpZXMoUGhvdG9UYWdnZXIucHJvdG90eXBlLHtUQUdf Qk9YX1NJWkU6MTAwLGRhdGFzb3VyY2VzOnt9LHBob3RvRGF0YTp7fSxlbGVtTmFt ZXM6ezE6e3RhZ2dlcjonZGl2LnRoZWF0ZXJUYWdnZXInLGFkZFRhZ0xpbms6J2Rp di5mYlBob3Rvc1RoZWF0ZXJBY3Rpb25zJyxvdmVybGF5QWN0aW9uczonZGl2LmZi UGhvdG9UaGVhdGVyQnV0dG9ucycsdGFnQWN0aW9uOidmYlBob3Rvc1RoZWF0ZXJB Y3Rpb25zVGFnJyxpbWFnZTonZGl2LnN0YWdlIGltZy5zcG90bGlnaHQnfSwyOnt0 YWdnZXI6J2Rpdi5zbm93Ym94VGFnZ2VyJyxhZGRUYWdMaW5rOidkaXYuZmJQaG90 b3NQaG90b0FjdGlvbnMnLG92ZXJsYXlBY3Rpb25zOidkaXYuZmJQaG90b3NQaG90 b0J1dHRvbnMnLHRhZ0FjdGlvbjonZmJQaG90b3NQaG90b0FjdGlvbnNUYWcnLGlt YWdlOidkaXYuc3RhZ2UgaW1nLnNwb3RsaWdodCd9fSx1c2VyQWN0aW9uRGF0YTp7 YWN0aW9uOid0YWdnaW5nJyxuYW1lc3BhY2U6J3Nub3dib3gnfSxpbml0OmZ1bmN0 aW9uKGEsYil7dGhpcy5zZXR1cFVzZXJBY3Rpb25Mb2dnaW5nKCk7dGhpcy5yb290 PWE7dGhpcy50b2tlbml6ZXI9Yjt0aGlzLl9xbj1udWxsO3RoaXMudHlwZWFoZWFk PWIuZ2V0VHlwZWFoZWFkKCk7dGhpcy5jbGlja1N0YXRlPURPTS5maW5kKHRoaXMu cm9vdCwnZGl2LnN0YWdlQWN0aW9ucycpO3RoaXMudGFnZ2VyPURPTS5maW5kKHRo aXMuY2xpY2tTdGF0ZSx0aGlzLmVsZW1OYW1lc1t0aGlzLnZlcnNpb25dLnRhZ2dl cik7dGhpcy5mYWNlQm94PURPTS5maW5kKHRoaXMudGFnZ2VyLCdkaXYuZmFjZUJv eCcpO3RoaXMubmV3VGFnQm94PURPTS5maW5kKHRoaXMuY2xpY2tTdGF0ZSwnZGl2 Lm5ld1RhZ0JveCcpO3RoaXMuYWRkVGFnTGluaz1ET00uZmluZCh0aGlzLnJvb3Qs dGhpcy5lbGVtTmFtZXNbdGhpcy52ZXJzaW9uXS5hZGRUYWdMaW5rKTt0aGlzLm92 ZXJsYXlBY3Rpb25zPURPTS5maW5kKHRoaXMucm9vdCx0aGlzLmVsZW1OYW1lc1t0 aGlzLnZlcnNpb25dLm92ZXJsYXlBY3Rpb25zKTt0aGlzLnNldHVwSGFuZGxlcnMo KTt0aGlzLmhpZGVOZXdUYWdUaW1lcj1udWxsO3RoaXMuZmV0Y2hUYWdnaW5nU3Vn Z2VzdGlvbnMoe293bmVyOnRoaXMucGhvdG9EYXRhLm93bmVyfSk7dGhpcy5zZXRE YXRhU291cmNlKHRoaXMudHlwZWFoZWFkLmdldERhdGEoKSk7cmV0dXJuIHRoaXM7 fSxzZXR1cFVzZXJBY3Rpb25Mb2dnaW5nOmZ1bmN0aW9uKCl7dGhpcy51YT11c2Vy X2FjdGlvbih0aGlzLnVzZXJBY3Rpb25EYXRhLmFjdGlvbikuc2V0X25hbWVzcGFj ZSh0aGlzLnVzZXJBY3Rpb25EYXRhLm5hbWVzcGFjZSkuc2V0X3VhX2lkKCd0YWdn aW5nJykuYWRkX2V2ZW50KCdpbml0Jyk7fSxsb2dVc2VyQWN0aW9uRXZlbnQ6ZnVu Y3Rpb24oYSl7dGhpcy51YS5hZGRfZXZlbnQoYSk7fSxmZXRjaFRhZ2dpbmdTdWdn ZXN0aW9uczpmdW5jdGlvbihiKXt0aGlzLmxvZ1VzZXJBY3Rpb25FdmVudCgnc3Vn Z19mZXRjaCcpO25ldyBBc3luY1JlcXVlc3QoKS5zZXRVUkkoJy9hamF4L3Bob3Rv cy90aGVhdGVyL3RhZ3NfaW5pdC5waHAnKS5zZXREYXRhKGIpLnNldE9wdGlvbign cmV0cmllcycsMSkuc2V0SGFuZGxlcihmdW5jdGlvbihjKXt0aGlzLnR5cGVhaGVh ZC5nZXRWaWV3KCkuc2V0U3VnZ2VzdGlvbnMoYy5nZXRQYXlsb2FkKCkudGFnZ2Vl cyk7dGhpcy5sb2dVc2VyQWN0aW9uRXZlbnQoJ3N1Z2dfZmV0Y2hfZG9uZScpO30u YmluZCh0aGlzKSkuc2VuZCgpO3ZhciBhPXRoaXMudHlwZWFoZWFkLnN1YnNjcmli ZSgnYm9vdHN0cmFwJyxmdW5jdGlvbihjLGQpe2lmKGQmJiFkLmJvb3RzdHJhcHBp bmcpe3RoaXMudXBkYXRlV2l0aFN1Z2dlc3Rpb25zKCk7dGhpcy50eXBlYWhlYWQu dW5zdWJzY3JpYmUoYSk7dGhpcy50eXBlYWhlYWQuc3Vic2NyaWJlKCdmb2N1cycs dGhpcy51cGRhdGVXaXRoU3VnZ2VzdGlvbnMuYmluZCh0aGlzKSk7dGhpcy50b2tl bml6ZXIuc3Vic2NyaWJlKCdyZW1vdmVUb2tlbicsdGhpcy51cGRhdGVXaXRoU3Vn Z2VzdGlvbnMuYmluZCh0aGlzKSk7dGhpcy50b2tlbml6ZXIuc3Vic2NyaWJlKCdh ZGRUb2tlbicsdGhpcy5hZGRTdWdnZXN0aW9uLmJpbmQodGhpcykpO3RoaXMudHlw ZWFoZWFkLnN1YnNjcmliZSgncmVzcG9uZCcsZnVuY3Rpb24oZSxmKXtpZihmJiYh Zi5yZXN1bHRzLmxlbmd0aCl0aGlzLnVwZGF0ZVdpdGhTdWdnZXN0aW9ucygpO30u YmluZCh0aGlzKSk7fX0uYmluZCh0aGlzKSk7fSxzZXR1cEhhbmRsZXJzOmZ1bmN0 aW9uKCl7dGhpcy5oYW5kbGVycz1bRXZlbnQubGlzdGVuKHRoaXMuY2xpY2tTdGF0 ZSwnY2xpY2snLHRoaXMuYWRkVGFnLmJpbmQodGhpcykpLEV2ZW50Lmxpc3Rlbih3 aW5kb3csJ3Jlc2l6ZScsdGhpcy5oaWRlVGFnZ2VyLmJpbmQodGhpcykpLEV2ZW50 Lmxpc3Rlbih0aGlzLmFkZFRhZ0xpbmssJ2NsaWNrJyx0aGlzLmNoZWNrQWN0aW9u cy5iaW5kKHRoaXMpKSxFdmVudC5saXN0ZW4odGhpcy5vdmVybGF5QWN0aW9ucywn Y2xpY2snLHRoaXMuY2hlY2tBY3Rpb25zLmJpbmQodGhpcykpXTtpZih0aGlzLnZl cnNpb249PVBob3Rvc0NvbnN0LlZJRVdFUl9USEVBVEVSKXt0aGlzLnN1YnNjcmlw dGlvbnM9W0FyYml0ZXIuc3Vic2NyaWJlKFBob3RvVGhlYXRlci5QQUdFLHRoaXMu cmVzdGFydFRhZ2dpbmcuYmluZCh0aGlzKSksQXJiaXRlci5zdWJzY3JpYmUoUGhv dG9UaGVhdGVyLkRBVEFfQ0hBTkdFLHRoaXMuc2V0UGhvdG9EYXRhLmJpbmQodGhp cykpLEFyYml0ZXIuc3Vic2NyaWJlKFBob3RvVGhlYXRlci5DTE9TRSx0aGlzLmRl YWN0aXZhdGVUYWdnaW5nLmJpbmQodGhpcykpXTt9ZWxzZSBpZih0aGlzLnZlcnNp b249PVBob3Rvc0NvbnN0LlZJRVdFUl9TTk9XQk9YKXRoaXMuc3Vic2NyaXB0aW9u cz1bQXJiaXRlci5zdWJzY3JpYmUoUGhvdG9Tbm93Ym94LlBBR0UsdGhpcy5yZXN0 YXJ0VGFnZ2luZy5iaW5kKHRoaXMpKSxBcmJpdGVyLnN1YnNjcmliZShQaG90b1Nu b3dib3guREFUQV9DSEFOR0UsdGhpcy5zZXRQaG90b0RhdGEuYmluZCh0aGlzKSks QXJiaXRlci5zdWJzY3JpYmUoUGhvdG9Tbm93Ym94LkNMT1NFLHRoaXMuZGVhY3Rp dmF0ZVRhZ2dpbmcuYmluZCh0aGlzKSldO3RoaXMudG9rZW5pemVyLnN1YnNjcmli ZSgnYWRkVG9rZW4nLHRoaXMuc2F2ZVRhZy5iaW5kKHRoaXMpKTt0aGlzLnRva2Vu aXplci5zdWJzY3JpYmUoJ3JlbW92ZVRva2VuJyx0aGlzLnJlbW92ZVRhZy5iaW5k KHRoaXMpKTt0aGlzLnRva2VuaXplci5zdWJzY3JpYmUoJ21hcmtUYWdBc1NwYW0n LHRoaXMubWFya1RhZ0FzU3BhbS5iaW5kKHRoaXMpKTt9LGdldFRhZ2dpbmdTb3Vy Y2U6ZnVuY3Rpb24oKXtpZih0aGlzLnZlcnNpb249PVBob3Rvc0NvbnN0LlZJRVdF Ul9TTk9XQk9YKXtyZXR1cm4gJ3Nub3dib3gnO31lbHNlIGlmKHRoaXMudmVyc2lv bj09UGhvdG9zQ29uc3QuVklFV0VSX1RIRUFURVIpe3JldHVybiAnY2VudGVyX3N0 YWdlJzt9ZWxzZSByZXR1cm4gbnVsbDt9LHVwZGF0ZVdpdGhTdWdnZXN0aW9uczpm dW5jdGlvbihhLGMpe3ZhciBlPXRoaXMudHlwZWFoZWFkLmdldERhdGEoKS5idWls ZFVpZHMoJyAnLHRoaXMudHlwZWFoZWFkLmdldFZpZXcoKS5nZXRTdWdnZXN0aW9u cygpLHRoaXMudHlwZWFoZWFkLmdldENvcmUoKS5nZXRFeGNsdXNpb25zKCkpO2lm KCFlLmxlbmd0aClyZXR1cm47dmFyIGQ9dGhpcy50eXBlYWhlYWQuZ2V0RGF0YSgp LnJlc3BvbmQoJycsZSk7Zm9yKHZhciBiPTA7YjxkLmxlbmd0aDtiKyspZFtiXS5p bmRleD0tMTAwMCtiO30sYWRkU3VnZ2VzdGlvbjpmdW5jdGlvbihhLGIpe3ZhciBj PWIuaW5mbyYmYi5pbmZvLnVpZDtpZihjKXRoaXMudHlwZWFoZWFkLmdldFZpZXco KS5hZGRTdWdnZXN0aW9uKGMpO30sc2V0UXVldWVOYW1lOmZ1bmN0aW9uKGEpe3Ro aXMuX3FuPWE7cmV0dXJuIHRoaXM7fSxfc2VuZFdhdGVyZmFsbExvZ1NpZ25hbDpm dW5jdGlvbihhKXtQaG90b3NUYWdnaW5nV2F0ZXJmYWxsLnNlbmRTaWduYWwoe3Fu OnRoaXMuX3FuLHNvdXJjZTp0aGlzLmdldFRhZ2dpbmdTb3VyY2UoKSxzdGVwOmEs cGlkOnRoaXMucGhvdG9EYXRhLnBpZH0pO30sX2J1bXBRdWV1ZU5hbWU6ZnVuY3Rp b24oKXtpZih0aGlzLl9xbil0aGlzLl9xbis9MTt9LGFjdGl2YXRlVGFnZ2luZzpm dW5jdGlvbigpe3RoaXMubG9nVXNlckFjdGlvbkV2ZW50KCdhY3RpdmF0ZScpO0Fy Yml0ZXIuaW5mb3JtKFBob3RvVGFnZ2VyLkFDVElWQVRFX1RBR0dJTkcpO2lmKHRo aXMuZ2V0RGF0YVNvdXJjZSgpKXt0aGlzLmRhdGFTb3VyY2VGZXRjaGVkKHRoaXMu Z2V0RGF0YVNvdXJjZSgpKTt9ZWxzZSBuZXcgQXN5bmNSZXF1ZXN0KCcvYWpheC9w aG90b3MvdGhlYXRlci9mZXRjaF9kYXRhc291cmNlLnBocCcpLnNldERhdGEoe2Zi aWQ6dGhpcy5waG90b0RhdGEuZmJpZCx2ZXJzaW9uOnRoaXMudmVyc2lvbn0pLnNl bmQoKTt9LHJlc3RhcnRUYWdnaW5nOmZ1bmN0aW9uKCl7dGhpcy5oaWRlTmV3VGFn KCk7dGhpcy5oaWRlVGFnZ2VyKCk7aWYodGhpcy50YWdnaW5nTW9kZT09PXRydWUp dGhpcy5hY3RpdmF0ZVRhZ2dpbmcoKTt9LGdldERhdGFTb3VyY2U6ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5kYXRhc291cmNlc1t0aGlzLmdldERhdGFTb3VyY2VLZXko KV07fSxnZXREYXRhU291cmNlS2V5OmZ1bmN0aW9uKCl7aWYodGhpcy5waG90b0Rh dGEub3duZXJ0eXBlPT0ndXNlcicmJiF0aGlzLnBob3RvRGF0YS5vYmpfaWQpcmV0 dXJuICdmcmllbmRzJztyZXR1cm4gdGhpcy5waG90b0RhdGEub2JqX2lkfHx0aGlz LnBob3RvRGF0YS5vd25lcjt9LHNldERhdGFTb3VyY2U6ZnVuY3Rpb24oYSl7aWYo dGhpcy50eXBlYWhlYWQuZ2V0RGF0YSgpIT1hKXRoaXMudHlwZWFoZWFkLnN3YXBE YXRhKGEpO3RoaXMuZGF0YXNvdXJjZXNbdGhpcy5nZXREYXRhU291cmNlS2V5KCld PWE7fSxkYXRhU291cmNlRmV0Y2hlZDpmdW5jdGlvbihhKXt0aGlzLnRhZ2dpbmdN b2RlPXRydWU7Q1NTLmFkZENsYXNzKHRoaXMucm9vdCwndGFnZ2luZ01vZGUnKTt0 aGlzLl9idW1wUXVldWVOYW1lKCk7dGhpcy5fc2VuZFdhdGVyZmFsbExvZ1NpZ25h bChQaG90b3NUYWdnaW5nV2F0ZXJmYWxsLkJFR0lOKTt0aGlzLnNldERhdGFTb3Vy Y2UoYSk7fSxkZWFjdGl2YXRlVGFnZ2luZzpmdW5jdGlvbigpe3RoaXMubG9nVXNl ckFjdGlvbkV2ZW50KCdkZWFjdGl2YXRlJyk7aWYodGhpcy50YWdnaW5nTW9kZT09 PXRydWUpdGhpcy5fc2VuZFdhdGVyZmFsbExvZ1NpZ25hbChQaG90b3NUYWdnaW5n V2F0ZXJmYWxsLkZJTklTSCk7dGhpcy50YWdnaW5nTW9kZT1mYWxzZTt0aGlzLmhp ZGVOZXdUYWcoKTt0aGlzLmhpZGVUYWdnZXIoKTtDU1MucmVtb3ZlQ2xhc3ModGhp cy5yb290LCd0YWdnaW5nTW9kZScpO30sY2hlY2tBY3Rpb25zOmZ1bmN0aW9uKGV2 ZW50KXt2YXIgYT1ldmVudC5nZXRUYXJnZXQoKTtpZihQYXJlbnQuYnlDbGFzcyhh LHRoaXMuZWxlbU5hbWVzW3RoaXMudmVyc2lvbl0udGFnQWN0aW9uKSl0aGlzLnRh Z2dpbmdNb2RlP3RoaXMuZGVhY3RpdmF0ZVRhZ2dpbmcoKTp0aGlzLmFjdGl2YXRl VGFnZ2luZygpO30saGlkZVRhZ2dlcjpmdW5jdGlvbigpe0NTUy5oaWRlKHRoaXMu dGFnZ2VyKTt9LHNob3dUYWdnZXI6ZnVuY3Rpb24oKXtDU1Muc2hvdyh0aGlzLnRh Z2dlcik7dmFyIGE9RE9NLmZpbmQodGhpcy50YWdnZXIsJ2lucHV0LnRleHRJbnB1 dCcpO0lucHV0LnJlc2V0KGEpO2EuZm9jdXMoKTt0aGlzLnVwZGF0ZVdpdGhTdWdn ZXN0aW9ucygpO3RoaXMuaGlkZU5ld1RhZygpO30sc2hvd05ld1RhZzpmdW5jdGlv bihhKXtpZighdGhpcy5uZXdUYWdCb3gpcmV0dXJuO0RPTS5zZXRDb250ZW50KERP TS5maW5kKHRoaXMubmV3VGFnQm94LCdkaXYudGFnTmFtZScpLCROKCdzcGFuJyxu dWxsLGEpKTtDU1Muc2hvdyh0aGlzLm5ld1RhZ0JveCk7dGhpcy5oaWRlTmV3VGFn VGltZXI9c2V0VGltZW91dCh0aGlzLmhpZGVOZXdUYWcuYmluZCh0aGlzKSwzMDAw KTt9LGhpZGVOZXdUYWc6ZnVuY3Rpb24oKXtpZighdGhpcy5uZXdUYWdCb3gpcmV0 dXJuO2lmKHRoaXMuaGlkZU5ld1RhZ1RpbWVyIT09bnVsbCl7Y2xlYXJUaW1lb3V0 KHRoaXMuaGlkZU5ld1RhZ1RpbWVyKTt0aGlzLmhpZGVOZXdUYWdUaW1lcj1udWxs O31DU1MuaGlkZSh0aGlzLm5ld1RhZ0JveCk7fSxnZXRUYWdnZXJQb3NpdGlvbmlu Z09yaWdpbjpmdW5jdGlvbigpe3JldHVybiBWZWN0b3IyLmdldEVsZW1lbnRQb3Np dGlvbih0aGlzLmNsaWNrU3RhdGUsJ2RvY3VtZW50Jyk7fSxhZGRUYWc6ZnVuY3Rp b24oZXZlbnQpe3ZhciBkPWV2ZW50LmdldFRhcmdldCgpO2lmKCF0aGlzLnRhZ2dp bmdNb2RlfHxQYXJlbnQuYnlDbGFzcyhkLCdmYlBob3Rvc1Bob3RvQnV0dG9ucycp fHxQYXJlbnQuYnlDbGFzcyhkLCdwaG90b1RhZ1R5cGVhaGVhZCcpKXJldHVybjt2 YXIgYj10aGlzLmdldFBob3RvT25TdGFnZSgpO3ZhciBhPVZlY3RvcjIuZ2V0RXZl bnRQb3NpdGlvbihldmVudCk7dmFyIGM9dGhpcy5jYWxjVGFnZ2VyUG9zaXRpb24o YixhKTt0aGlzLmNhbGNDbGlja1BvaW50KGIsYSk7aWYoIWMpe3RoaXMuaGlkZVRh Z2dlcigpO3JldHVybjt9Yy5zZXRFbGVtZW50UG9zaXRpb24odGhpcy50YWdnZXIp O2lmKHRoaXMubmV3VGFnQm94KWMuc2V0RWxlbWVudFBvc2l0aW9uKHRoaXMubmV3 VGFnQm94KTt0aGlzLnNob3dUYWdnZXIoKTt0aGlzLl9zZW5kV2F0ZXJmYWxsTG9n U2lnbmFsKFBob3Rvc1RhZ2dpbmdXYXRlcmZhbGwuVEFHX0ZBQ0UpO30sZ2V0UGhv dG9PblN0YWdlOmZ1bmN0aW9uKCl7cmV0dXJuIERPTS5maW5kKHRoaXMucm9vdCx0 aGlzLmVsZW1OYW1lc1t0aGlzLnZlcnNpb25dLmltYWdlKTt9LGNhbGNUYWdnZXJQ b3NpdGlvbjpmdW5jdGlvbihoLGIpe3ZhciBlPVZlY3RvcjIuZ2V0RWxlbWVudFBv c2l0aW9uKGgpO3ZhciBkPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnMoaCk7 dmFyIGE9bmV3IFZlY3RvcjIodGhpcy5UQUdfQk9YX1NJWkUvMix0aGlzLlRBR19C T1hfU0laRS8yKTt2YXIgZz1iLnN1YihlKTtmb3IodmFyIGMgaW4gZyl7aWYoYltj XTxlW2NdfHxiW2NdPmVbY10rZFtjXSlyZXR1cm4gbnVsbDtpZihnW2NdPCh0aGlz LlRBR19CT1hfU0laRS8yKSl7YVtjXT1nW2NdO31lbHNlIGlmKGRbY108Z1tjXSso dGhpcy5UQUdfQk9YX1NJWkUvMikpYVtjXT10aGlzLlRBR19CT1hfU0laRS0oZFtj XS1nW2NdKTt9dmFyIGY9Yi5zdWIodGhpcy5nZXRUYWdnZXJQb3NpdGlvbmluZ09y aWdpbigpKTtyZXR1cm4gZi5zdWIoYS54LGEueSk7fSxjYWxjQ2xpY2tQb2ludDpm dW5jdGlvbihkLGIpe3ZhciBjPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnMo ZCk7dmFyIGE9VmVjdG9yMi5nZXRFbGVtZW50UG9zaXRpb24oZCk7dmFyIGU9Yi5z dWIoYSk7dGhpcy5jbGlja1BvaW50PXt4OmUueC9jLngseTplLnkvYy55fTt9LHNh dmVUYWc6ZnVuY3Rpb24oYSxjKXt2YXIgYj10aGlzLmdldFRhZ2dpbmdEYXRhKCdh ZGQnLGMuaXNGcmVlZm9ybSgpPycnOmMuZ2V0VmFsdWUoKSxjLmdldFRleHQoKSk7 Yi54PXRoaXMuY2xpY2tQb2ludC54KjEwMDtiLnk9dGhpcy5jbGlja1BvaW50Lnkq MTAwO3RoaXMubG9nVXNlckFjdGlvbkV2ZW50KCdzYXZlJyk7bmV3IEFzeW5jUmVx dWVzdCgpLnNldFVSSSgnL2FqYXgvcGhvdG9fdGFnZ2luZ19hamF4LnBocCcpLnNl dE1ldGhvZCgnUE9TVCcpLnNldERhdGEoYikuc2V0QWxsb3dDcm9zc1BhZ2VUcmFu c2l0aW9uKHRydWUpLnNldEhhbmRsZXIoZnVuY3Rpb24oZCl7dGhpcy50YWdzQ2hh bmdlSGFuZGxlcihkKTt0aGlzLmxvZ1VzZXJBY3Rpb25FdmVudCgnc2F2ZV9kb25l Jyk7fS5iaW5kKHRoaXMpKS5zZXRFcnJvckhhbmRsZXIodGhpcy5jaGVja0Vycm9y LmJpbmQodGhpcyxjKSkuc2VuZCgpO3RoaXMuc2hvd05ld1RhZyhjLmdldFRleHQo KSk7dGhpcy5oaWRlVGFnZ2VyKCk7fSxnZXRUYWdnaW5nRGF0YTpmdW5jdGlvbihh LGMsYil7cmV0dXJuIHtjc192ZXI6dGhpcy52ZXJzaW9uLHBpZDp0aGlzLnBob3Rv RGF0YS5waWQsaWQ6dGhpcy5waG90b0RhdGEub3duZXIsc3ViamVjdDpjLG5hbWU6 YixhY3Rpb246YSxzb3VyY2U6dGhpcy5nZXRUYWdnaW5nU291cmNlKCkscW46dGhp cy5fcW4scG9zaXRpb246dGhpcy5nZXRQb3NpdGlvbigpfTt9LGdldFBvc2l0aW9u OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRQaG90b1ZpZXdlck9iaigpO3JldHVy biBhJiZhLnBvc2l0aW9uO30sZ2V0UGhvdG9WaWV3ZXJPYmo6ZnVuY3Rpb24oKXtp Zih0aGlzLnZlcnNpb249PVBob3Rvc0NvbnN0LlZJRVdFUl9USEVBVEVSKXtyZXR1 cm4gd2luZG93LlBob3RvVGhlYXRlcjt9ZWxzZSBpZih0aGlzLnZlcnNpb249PVBo b3Rvc0NvbnN0LlZJRVdFUl9TTk9XQk9YKXJldHVybiB3aW5kb3cuUGhvdG9Tbm93 Ym94O3JldHVybiBudWxsO30sdGFnc0NoYW5nZUhhbmRsZXI6ZnVuY3Rpb24oYil7 dmFyIGE9dGhpcy5nZXRQaG90b1ZpZXdlck9iaigpO2lmKGEmJmEuaXNPcGVuKWEu c2F2ZVRhZ0NvbXBsZXRlKGIpO30sY2hlY2tFcnJvcjpmdW5jdGlvbihiLGEpe2lm KGEuZ2V0UGF5bG9hZCgpJiZhLmdldFBheWxvYWQoKS5jbGVhcl90YWcpe2IuYWxy ZWFkeV91bnRhZ2dlZD10cnVlO3RoaXMudG9rZW5pemVyLnJlbW92ZVRva2VuKGIp O31FcnJvckRpYWxvZy5zaG93QXN5bmNFcnJvcihhKTt9LHJlbW92ZVRhZzpmdW5j dGlvbihhLGMpe2lmKGMuYWxyZWFkeV91bnRhZ2dlZClyZXR1cm47dmFyIGI9J3Jl bW92ZSc7aWYoRE9NLnNjcnkoYy5lbGVtZW50LCdhLnBlbmRpbmcnKVswXSliPSdy ZXRyYWN0JztpZihjLmJsb2NrVXNlciliPSdyZW1vdmVfYmxvY2snO3RoaXMubG9n VXNlckFjdGlvbkV2ZW50KCdzYXZlJyk7bmV3IEFzeW5jUmVxdWVzdCgpLnNldFVS SSgnL2FqYXgvcGhvdG9fdGFnZ2luZ19hamF4LnBocCcpLnNldE1ldGhvZCgnUE9T VCcpLnNldERhdGEodGhpcy5nZXRUYWdnaW5nRGF0YShiLGMuaXNGcmVlZm9ybSgp PycnOmMuZ2V0SW5mbygpLnVpZCxjLmdldEluZm8oKS50ZXh0KSkuc2V0SGFuZGxl cihmdW5jdGlvbihkKXt0aGlzLnRhZ3NDaGFuZ2VIYW5kbGVyKGQpO3RoaXMubG9n VXNlckFjdGlvbkV2ZW50KCdzYXZlX2RvbmUnKTt9LmJpbmQodGhpcykpLnNldEFs bG93Q3Jvc3NQYWdlVHJhbnNpdGlvbih0cnVlKS5zZW5kKCk7fSxyZW1vdmVUYWdC eUlEOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy50b2tlbml6ZXIudG9rZW5zO2Zv cih2YXIgYT0wO2E8ZC5sZW5ndGg7YSsrKWlmKGRbYV0uaW5mby51aWQ9PWMpcmV0 dXJuIHRoaXMucmVtb3ZlVGFnKG51bGwsZFthXSk7fSxzZXRQaG90b0RhdGE6ZnVu Y3Rpb24oYSxiKXt0aGlzLnBob3RvRGF0YT1iO3JldHVybiB0aGlzO30sbWFya1Rh Z0FzU3BhbTpmdW5jdGlvbihhLGIpe25ldyBBc3luY1JlcXVlc3QoKS5zZXRVUkko Jy9hamF4L3Bob3RvX3RhZ2dpbmdfYWpheC5waHAnKS5zZXRNZXRob2QoJ1BPU1Qn KS5zZXREYXRhKHRoaXMuZ2V0VGFnZ2luZ0RhdGEoJ21hcmtfYXNfc3BhbScsYixu dWxsKSkuc2VuZCgpO319KTsKZnVuY3Rpb24gUGhvdG9TZXNzaW9uTG9nKCl7fWNv cHlfcHJvcGVydGllcyhQaG90b1Nlc3Npb25Mb2cse1VOS05PV046MCxFU0M6MSxY OjIsT1VUU0lERTozLFVOTE9BRDo0LE5BVklHQVRFOjUsQUdHUkVHQVRFOjYsTEVB VkU6NyxTTk9XQk9YOjAsUEVSTUFMSU5LOjEsQUdHUkVHQVRJT05fQ09VTlQ6MjAs c2V0Om51bGwsdGltZTpudWxsLHZpZXdzOjAsZmJpZExpc3Q6W10sZGV0YWlsczp7 fSx3aWR0aDowLGhlaWdodDowLGZpcnN0OmZhbHNlLGxhc3Q6ZmFsc2UsbG9nSWRz OmZhbHNlLHZlcnNpb246bnVsbCxpbml0TG9nZ2luZzpmdW5jdGlvbihiKXt0aGlz LnNldD1udWxsO3RoaXMudGltZT1uZXcgRGF0ZSgpO3RoaXMudmlld3M9MDt0aGlz LmZpcnN0PXRydWU7dGhpcy5sYXN0PWZhbHNlO3RoaXMubG9nSWRzPWZhbHNlO3Ro aXMudmVyc2lvbj1iO2lmKGI9PT1QaG90b1Nlc3Npb25Mb2cuU05PV0JPWCl7dmFy IGE9VmVjdG9yMi5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKTt0aGlzLndpZHRoPWEu eDt0aGlzLmhlaWdodD1hLnk7fX0sc2V0TG9nRmJpZHM6ZnVuY3Rpb24oYSl7dGhp cy5sb2dJZHM9YTt9LHNldFBob3RvU2V0OmZ1bmN0aW9uKGEpe3RoaXMuc2V0PWE7 fSxhZGRQaG90b1ZpZXc6ZnVuY3Rpb24oYSl7aWYodGhpcy5sb2dJZHMmJnRoaXMu dmlld3M+PXRoaXMuQUdHUkVHQVRJT05fQ09VTlQpdGhpcy5sb2dQaG90b1ZpZXdz KHRoaXMuQUdHUkVHQVRFKTt0aGlzLnZpZXdzKys7aWYoYSl0aGlzLmZiaWRMaXN0 LnB1c2goW2EuZmJpZCxhLm93bmVyLERhdGUubm93KCldKTt9LGFkZERldGFpbERh dGE6ZnVuY3Rpb24oYixhKXtpZighdGhpcy5kZXRhaWxzW2JdKXRoaXMuZGV0YWls c1tiXT17dDphLm51bV90YWdzLGw6YS5oYXNfbG9jYXRpb24sYzphLmhhc19jYXB0 aW9uLGNtOmEuY29tbWVudF9jb3VudCxsazphLmxpa2VfY291bnQsdzphLndpZHRo LGg6YS5oZWlnaHR9O30sbG9nUGhvdG9WaWV3czpmdW5jdGlvbihhKXtpZigoIXRo aXMudmlld3MpfHwoKHRoaXMudmVyc2lvbj09PVBob3RvU2Vzc2lvbkxvZy5TTk9X Qk9YKSYmKGE9PVBob3RvU2Vzc2lvbkxvZy5MRUFWRSkpKXJldHVybjtpZihhIT10 aGlzLkFHR1JFR0FURSl0aGlzLmxhc3Q9dHJ1ZTt2YXIgYj17c2V0OnRoaXMuc2V0 LHRpbWU6bmV3IERhdGUoKS10aGlzLnRpbWUsZmJpZHM6dGhpcy5sb2dJZHM/dGhp cy5mYmlkTGlzdDpbXSxkZXRhaWxzOnRoaXMubG9nSWRzP3RoaXMuZGV0YWlsczp7 fSxmaXJzdDp0aGlzLmZpcnN0LGxhc3Q6dGhpcy5sYXN0LGNsb3NlOmE/YTp0aGlz LlVOS05PV04sdmVyc2lvbjp0aGlzLnZlcnNpb259O2lmKHRoaXMudmVyc2lvbj09 PVBob3RvU2Vzc2lvbkxvZy5TTk9XQk9YKXt2YXIgYz1WZWN0b3IyLmdldFZpZXdw b3J0RGltZW5zaW9ucygpO2Iud2lkdGg9Yy54fHx0aGlzLndpZHRoO2IuaGVpZ2h0 PWMueXx8dGhpcy5oZWlnaHQ7fW5ldyBBc3luY1JlcXVlc3QoKS5zZXRVUkkoJy9h amF4L3Bob3Rvcy9sb2dnaW5nL3Nlc3Npb25fbG9nZ2luZy5waHAnKS5zZXRBbGxv d0Nyb3NzUGFnZVRyYW5zaXRpb24odHJ1ZSkuc2V0T3B0aW9uKCdhc3luY2hyb25v dXMnLChhIT1QaG90b1Nlc3Npb25Mb2cuVU5MT0FEKSkuc2V0T3B0aW9uKCdzdXBw cmVzc0Vycm9ySGFuZGxlcldhcm5pbmcnLHRydWUpLnNldERhdGEoYikuc2VuZCgp O3RoaXMudmlld3M9MDt0aGlzLmZiaWRMaXN0PVtdO3RoaXMuZGV0YWlscz17fTt0 aGlzLmZpcnN0PWZhbHNlO2lmKHRoaXMubGFzdCl7dGhpcy5zZXQ9bnVsbDt0aGlz LmxvZ0lkcz1mYWxzZTt9fX0pO29udW5sb2FkUmVnaXN0ZXIoZnVuY3Rpb24oKXtQ aG90b1Nlc3Npb25Mb2cubG9nUGhvdG9WaWV3cyhQaG90b1Nlc3Npb25Mb2cuVU5M T0FEKTt9KTtvbmxlYXZlUmVnaXN0ZXIoZnVuY3Rpb24oKXtQaG90b1Nlc3Npb25M b2cubG9nUGhvdG9WaWV3cyhQaG90b1Nlc3Npb25Mb2cuTEVBVkUpO30pOwpmdW5j dGlvbiBQaG90b3NVdGlscygpe31QaG90b3NVdGlscy5nZXROZWFyZXN0Qm94PWZ1 bmN0aW9uKGUsbCxrLGosYyxhKXt2YXIgZj1lLnN1YihsKTt2YXIgZD1rLm1hZ25p dHVkZSgpO3ZhciBnPW51bGw7Zm9yKHZhciBiIGluIGEpe3ZhciBoPWFbYl07dmFy IGk9bmV3IFJlY3QoaC50LzEwMCprLnkqaixoLnIvMTAwKmsueCpqLGguYi8xMDAq ay55KmosaC5sLzEwMCprLngqaik7dmFyIG09aS5nZXRDZW50ZXIoKS5zdWIoZik7 aWYoTWF0aC5hYnMobS54KTw9YyYmTWF0aC5hYnMobS55KTw9YyYmbS5tYWduaXR1 ZGUoKTw9ZCl7ZD1tLm1hZ25pdHVkZSgpO2c9YjtpZigwPT09ZClicmVhazt9fXJl dHVybiBnO307CmZ1bmN0aW9uIFBob3RvU3RyZWFtQ2FjaGUoKXt9Y29weV9wcm9w ZXJ0aWVzKFBob3RvU3RyZWFtQ2FjaGUse0VSUk9SOidlcnJvcicsSFRNTDonaHRt bCcsSU1BR0VfREFUQTonaW1hZ2UnLEVYVFJBOidleHRyYScsQlVGRkVSX1NJWkU6 MyxJTklUX0JVQ0tFVF9TSVpFOjQsRlVMTF9CVUNLRVRfU0laRToxMixFUlJPUl9J RDotMX0pO2NvcHlfcHJvcGVydGllcyhQaG90b1N0cmVhbUNhY2hlLnByb3RvdHlw ZSx7aW5pdDpmdW5jdGlvbihhKXt0aGlzLnZlcnNpb249YTt0aGlzLmJ1ZmZlclNp emU9UGhvdG9TdHJlYW1DYWNoZS5CVUZGRVJfU0laRTt0aGlzLmluaXRCdWNrZXRT aXplPVBob3RvU3RyZWFtQ2FjaGUuSU5JVF9CVUNLRVRfU0laRTt0aGlzLmZ1bGxC dWNrZXRTaXplPVBob3RvU3RyZWFtQ2FjaGUuRlVMTF9CVUNLRVRfU0laRTt0aGlz LmluaXRFcnJvcj1mYWxzZTt0aGlzLmlzQWN0aXZlPXRydWU7dGhpcy5sZWZ0TG9j az1mYWxzZTt0aGlzLnJpZ2h0TG9jaz1mYWxzZTt0aGlzLnJlc2V0KCk7fSxyZXNl dDpmdW5jdGlvbigpe3RoaXMuY2FjaGU9e2ltYWdlOnt9LGV4dHJhOnt9LGh0bWw6 e319O3RoaXMuZmJpZExpc3Q9W107dGhpcy5sb2FkZWQ9ZmFsc2U7dGhpcy5hbGxM b2FkZWQ9ZmFsc2U7dGhpcy5wZXJtYWxpbmtNYXA9e307dGhpcy5wb3NpdGlvbj0w O3RoaXMudG90YWxDb3VudD1udWxsO3RoaXMuZmlyc3RDdXJzb3I9bnVsbDt0aGlz LmZpcnN0Q3Vyc29ySW5kZXg9bnVsbDt9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlz LnJlc2V0KCk7dGhpcy5pc0FjdGl2ZT1mYWxzZTt9LGlzTG9hZGVkOmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMubG9hZGVkO30sY2FuUGFnZTpmdW5jdGlvbigpe2lmKHRo aXMudG90YWxDb3VudCE9PW51bGwpcmV0dXJuIHRoaXMudG90YWxDb3VudD4xO3Jl dHVybiB0aGlzLmdldExlbmd0aCgpPjE7fSxlcnJvckluQ3VycmVudDpmdW5jdGlv bigpe2lmKHRoaXMuaW5pdEVycm9yKXtyZXR1cm4gdHJ1ZTt9ZWxzZSBpZighdGhp cy5pc0xvYWRlZCgpKXJldHVybiBmYWxzZTtyZXR1cm4gdGhpcy5jaGVja0Vycm9y QXQodGhpcy5nZXRDdXJzb3IoKSk7fSxnZXRMZW5ndGg6ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5mYmlkTGlzdC5sZW5ndGg7fSxnZXRQaG90b1NldDpmdW5jdGlvbigp e3JldHVybiB0aGlzLnBob3RvU2V0UXVlcnkuc2V0O30sZ2V0Q3VycmVudEltYWdl RGF0YTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEltYWdlRGF0YSh0aGlzLmdl dEN1cnNvcigpKTt9LGdldEltYWdlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhp cy5nZXRDYWNoZUNvbnRlbnQoYSxQaG90b1N0cmVhbUNhY2hlLklNQUdFX0RBVEEp O30sZ2V0Q3VycmVudEh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRDYWNo ZUNvbnRlbnQodGhpcy5nZXRDdXJzb3IoKSxQaG90b1N0cmVhbUNhY2hlLkhUTUwp O30sZ2V0Q3VycmVudEV4dHJhRGF0YTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdl dENhY2hlQ29udGVudCh0aGlzLmdldEN1cnNvcigpLFBob3RvU3RyZWFtQ2FjaGUu RVhUUkEpO30sZ2V0Q2FjaGVDb250ZW50OmZ1bmN0aW9uKGEsYil7aWYoIWF8fGE9 PT1QaG90b1N0cmVhbUNhY2hlLkVSUk9SX0lEKXJldHVybiBudWxsO3JldHVybiB0 aGlzLmNhY2hlW2JdW2FdO30sZ2V0Q3Vyc29yUG9zOmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMucG9zaXRpb247fSxnZXRDdXJzb3I6ZnVuY3Rpb24oKXtpZih0aGlzLnBv c2l0aW9uPj0wJiZ0aGlzLnBvc2l0aW9uPHRoaXMuZ2V0TGVuZ3RoKCkpcmV0dXJu IHRoaXMuZmJpZExpc3RbdGhpcy5wb3NpdGlvbl07cmV0dXJuIG51bGw7fSxnZXRD dXJzb3JGb3JVUkk6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucGVybWFsaW5rTWFw W2FdO30sY2FsY3VsYXRlUG9zaXRpb25Gb3JNb3ZlbWVudDpmdW5jdGlvbihhKXt2 YXIgYj10aGlzLnBvc2l0aW9uK2E7aWYodGhpcy5hbGxMb2FkZWQpe3ZhciBjPXRo aXMuZ2V0TGVuZ3RoKCk7Yj0oYytiJWMpJWM7fXJldHVybiBiO30saXNWYWxpZE1v dmVtZW50OmZ1bmN0aW9uKGEpe2lmKCF0aGlzLmlzTG9hZGVkKCl8fCF0aGlzLmNh blBhZ2UoKSlyZXR1cm4gZmFsc2U7dmFyIGI9dGhpcy5jYWxjdWxhdGVQb3NpdGlv bkZvck1vdmVtZW50KGEpO3JldHVybiB0aGlzLmdldEN1cnNvcigpPjB8fChiPj0w JiZiPHRoaXMuZ2V0TGVuZ3RoKCkpO30sbW92ZUN1cnNvcjpmdW5jdGlvbihhKXtp ZighdGhpcy5pc1ZhbGlkTW92ZW1lbnQoYSkpcmV0dXJuO3RoaXMucG9zaXRpb249 dGhpcy5jYWxjdWxhdGVQb3NpdGlvbkZvck1vdmVtZW50KGEpO2lmKGEhPT0wKXRo aXMubG9hZE1vcmVJZk5lY2Nlc3NhcnkoYT4wKTt9LGNoZWNrRXJyb3JBdDpmdW5j dGlvbihhKXtpZighdGhpcy5pc0xvYWRlZCgpKXJldHVybiBmYWxzZTtpZihhPT09 UGhvdG9TdHJlYW1DYWNoZS5FUlJPUl9JRClyZXR1cm4gdHJ1ZTtyZXR1cm4gZmFs c2U7fSxnZXRSZWxhdGl2ZU1vdmVtZW50OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0w O2I8dGhpcy5nZXRMZW5ndGgoKTtiKyspaWYodGhpcy5mYmlkTGlzdFtiXT09YSly ZXR1cm4gYi10aGlzLnBvc2l0aW9uO3JldHVybiBudWxsO30scHJlbG9hZEltYWdl czpmdW5jdGlvbigpe3ZhciBlLGM7dmFyIGY9dGhpcy5nZXRMZW5ndGgoKTt2YXIg Yj10aGlzLmNhY2hlLmltYWdlO3ZhciBhPVBob3RvU3RyZWFtQ2FjaGUuQlVGRkVS X1NJWkU7aWYoZj5hKjIpe2U9KHRoaXMucG9zaXRpb24rZi1hJWYpJWY7Yz0odGhp cy5wb3NpdGlvbithKSVmO31lbHNle2U9MDtjPWYtMTt9d2hpbGUoZSE9Yyl7dmFy IGQ9dGhpcy5mYmlkTGlzdFtlXTtpZihiW2RdJiYhYltkXS5yZXNvdXJjZSYmYltk XS51cmwpe2JbZF0ucmVzb3VyY2U9bmV3IEltYWdlKCk7YltkXS5yZXNvdXJjZS5z cmM9YltkXS51cmw7fWU9KGUrMSklZjt9fSxsb2FkTW9yZUlmTmVjY2Vzc2FyeTpm dW5jdGlvbihjKXtpZih0aGlzLmFsbExvYWRlZHx8KGMmJnRoaXMucmlnaHRMb2Nr KXx8KCFjJiZ0aGlzLmxlZnRMb2NrKSlyZXR1cm47dmFyIGQ9Yz8xOi0xO3ZhciBh PXRoaXMuZnVsbEJ1Y2tldFNpemUqZDt2YXIgYj10aGlzLnBvc2l0aW9uK3RoaXMu YnVmZmVyU2l6ZSpkO2lmKGI8MCYmIXRoaXMuY2hlY2tFcnJvckF0KHRoaXMuZ2V0 RW5kQ3Vyc29yKGZhbHNlKSkpe3RoaXMubGVmdExvY2s9dHJ1ZTt0aGlzLmZldGNo KHRoaXMuZnVsbEJ1Y2tldFNpemUsZmFsc2UpO31lbHNlIGlmKGI+dGhpcy5nZXRM ZW5ndGgoKSYmIXRoaXMuY2hlY2tFcnJvckF0KHRoaXMuZ2V0RW5kQ3Vyc29yKHRy dWUpKSl7dGhpcy5yaWdodExvY2s9dHJ1ZTt0aGlzLmZldGNoKHRoaXMuZnVsbEJ1 Y2tldFNpemUsdHJ1ZSk7fX0sZ2V0RW5kQ3Vyc29yOmZ1bmN0aW9uKGEpe3JldHVy biBhP3RoaXMuZmJpZExpc3RbdGhpcy5nZXRMZW5ndGgoKS0xXTp0aGlzLmZiaWRM aXN0WzBdO30sY2FsY3VsYXRlUmVsYXRpdmVJbmRleDpmdW5jdGlvbihjLGEsZCl7 aWYoIXRoaXMudG90YWxDb3VudClyZXR1cm4gbnVsbDt2YXIgYj10aGlzLmZiaWRM aXN0LmluZGV4T2YoYSk7dmFyIGU9dGhpcy5mYmlkTGlzdC5pbmRleE9mKGQpO2lm KGI9PT0tMXx8ZT09PS0xKXJldHVybiBudWxsO3ZhciBmPWUtYjtyZXR1cm4gKGMr Zit0aGlzLnRvdGFsQ291bnQpJXRoaXMudG90YWxDb3VudDt9LGZldGNoOmZ1bmN0 aW9uKGEsZCl7dmFyIGM9dGhpcy5nZXRFbmRDdXJzb3IoZCk7dmFyIGI9Y29weV9w cm9wZXJ0aWVzKHtjdXJzb3I6Yyx2ZXJzaW9uOnRoaXMudmVyc2lvbixlbmQ6dGhp cy5nZXRFbmRDdXJzb3IoIWQpLGZldGNoU2l6ZTpkP2E6LTEqYX0sdGhpcy5waG90 b1NldFF1ZXJ5KTtpZih0aGlzLnRvdGFsQ291bnQmJnRoaXMuZmlyc3RDdXJzb3JJ bmRleCE9PW51bGwpe2IudG90YWw9dGhpcy50b3RhbENvdW50O2IuY3Vyc29ySW5k ZXg9dGhpcy5jYWxjdWxhdGVSZWxhdGl2ZUluZGV4KHRoaXMuZmlyc3RDdXJzb3JJ bmRleCx0aGlzLmZpcnN0Q3Vyc29yLGMpO31VSVBhZ2VsZXQubG9hZEZyb21FbmRw b2ludCgnUGhvdG9WaWV3ZXJQYWdlbGV0JyxudWxsLGIse3VzZVBpcGU6dHJ1ZSxq c05vbmJsb2NrOnRydWUsY3Jvc3NQYWdlOnRydWV9KTt9LHN0b3JlVG9DYWNoZTpm dW5jdGlvbihhKXt2YXIgYj17fTtpZighdGhpcy5pc0FjdGl2ZSlyZXR1cm4gYjtp ZignZXJyb3InIGluIGEpe3RoaXMucHJvY2Vzc0Vycm9yUmVzdWx0KGEuZXJyb3Ip O2IuZXJyb3I9dHJ1ZTtyZXR1cm4gYjt9aWYoJ2luaXQnIGluIGEpe3RoaXMucHJv Y2Vzc0luaXRSZXN1bHQoYS5pbml0KTtiLmluaXQ9e2xvZ2lkczphLmluaXQubG9n aWRzLGZiaWQ6YS5pbml0LmZiaWQsbG9nZ2VkaW46YS5pbml0LmxvZ2dlZGluLGZy b21hZDphLmluaXQuZnJvbWFkfTt9aWYoJ2ltYWdlJyBpbiBhKXt0aGlzLnByb2Nl c3NJbWFnZVJlc3VsdChhLmltYWdlKTtiLmltYWdlPXRydWU7fWlmKCdkYXRhJyBp biBhKXt0aGlzLnByb2Nlc3NEYXRhUmVzdWx0KGEuZGF0YSk7Yi5kYXRhPXRydWU7 fXJldHVybiBiO30scHJvY2Vzc0luaXRSZXN1bHQ6ZnVuY3Rpb24oYSl7aWYodGhp cy5sb2FkZWQpcmV0dXJuO3RoaXMubG9hZGVkPXRydWU7dGhpcy5waG90b1NldFF1 ZXJ5PWEucXVlcnk7aWYoYS5idWZmZXJTaXplKXRoaXMuYnVmZmVyU2l6ZT1hLmJ1 ZmZlclNpemU7aWYoYS5pbml0QnVja2V0U2l6ZSE9PXVuZGVmaW5lZCYmYS5pbml0 QnVja2V0U2l6ZSE9PW51bGwpdGhpcy5pbml0QnVja2V0U2l6ZT1hLmluaXRCdWNr ZXRTaXplO2lmKGEuZnVsbEJ1Y2tldFNpemUpdGhpcy5mdWxsQnVja2V0U2l6ZT1h LmZ1bGxCdWNrZXRTaXplO3RoaXMuZmJpZExpc3QucHVzaChhLmZiaWQpO3RoaXMu Zmlyc3RDdXJzb3I9YS5mYmlkO2lmKCdpbml0SW5kZXgnIGluIGEmJid0b3RhbENv dW50JyBpbiBhKXt0aGlzLmZpcnN0Q3Vyc29ySW5kZXg9YS5pbml0SW5kZXg7dGhp cy50b3RhbENvdW50PWEudG90YWxDb3VudDt9dGhpcy5yaWdodExvY2s9dHJ1ZTtp Zih0aGlzLmluaXRCdWNrZXRTaXplKXRoaXMuZmV0Y2godGhpcy5pbml0QnVja2V0 U2l6ZSx0cnVlKTt9LHByb2Nlc3NJbWFnZVJlc3VsdDpmdW5jdGlvbihiKXtmb3Io dmFyIGEgaW4gYil7dGhpcy5jYWNoZS5pbWFnZVthXT1iW2FdO2lmKGJbYV0uZGlt ZW5zaW9ucyl0aGlzLmNhY2hlLmltYWdlW2FdLmRpbWVuc2lvbnM9VmVjdG9yMi5k ZXNlcmlhbGl6ZShiW2FdLmRpbWVuc2lvbnMpO3RoaXMucGVybWFsaW5rTWFwW1VS SShiW2FdLmluZm8ucGVybWFsaW5rKS5nZXRVbnF1YWxpZmllZFVSSSgpLnRvU3Ry aW5nKCldPWE7fX0sYXR0YWNoVG9GYmlkc0xpc3Q6ZnVuY3Rpb24oZCxlLGEpe2lm KHRoaXMuYWxsTG9hZGVkKXJldHVybjtpZihlPT09LTEpe2Zvcih2YXIgYj1kLmxl bmd0aC0xO2I+PTA7Yi0tKXt0aGlzLmZiaWRMaXN0LnVuc2hpZnQoZFtiXSk7dGhp cy5wb3NpdGlvbisrO310aGlzLmxlZnRMb2NrPWZhbHNlO31lbHNle2Zvcih2YXIg Yz0wO2M8ZC5sZW5ndGg7YysrKXRoaXMuZmJpZExpc3QucHVzaChkW2NdKTt0aGlz LnJpZ2h0TG9jaz1mYWxzZTt9aWYoYSl0aGlzLnNldEFsbExvYWRlZCgpO30sc2V0 QWxsTG9hZGVkOmZ1bmN0aW9uKCl7dGhpcy5hbGxMb2FkZWQ9dHJ1ZTtpZih0aGlz LmdldEN1cnNvcigpPT09bnVsbCl0aGlzLnBvc2l0aW9uPXRoaXMuY2FsY3VsYXRl UG9zaXRpb25Gb3JNb3ZlbWVudCgwKTt9LHByb2Nlc3NEYXRhUmVzdWx0OmZ1bmN0 aW9uKGEpe2Zvcih2YXIgYiBpbiBhKXtpZighdGhpcy5jYWNoZS5odG1sW2JdKXRo aXMuY2FjaGUuaHRtbFtiXT17fTtmb3IodmFyIGQgaW4gYVtiXS5odG1sKXt2YXIg Yz1IVE1MKGFbYl0uaHRtbFtkXSkuZ2V0Um9vdE5vZGUoKTt0aGlzLmNhY2hlLmh0 bWxbYl1bZF09JEEoYy5jaGlsZE5vZGVzKTt9aWYoISgnZXh0cmEnIGluIGFbYl0p KXt0aGlzLmNhY2hlLmV4dHJhW2JdPW51bGw7Y29udGludWU7fXRoaXMuY2FjaGUu ZXh0cmFbYl09e3RhZ1JlY3RzOnt9fTtpZihhW2JdLmV4dHJhLnRhZ1JlY3RzKWZv cih2YXIgZSBpbiBhW2JdLmV4dHJhLnRhZ1JlY3RzKWlmKGFbYl0uZXh0cmEudGFn UmVjdHNbZV0pdGhpcy5jYWNoZS5leHRyYVtiXS50YWdSZWN0c1tlXT1SZWN0LmRl c2VyaWFsaXplKGFbYl0uZXh0cmEudGFnUmVjdHNbZV0pO319LHByb2Nlc3NFcnJv clJlc3VsdDpmdW5jdGlvbihiKXtpZighdGhpcy5pc0xvYWRlZCgpKXt0aGlzLmlu aXRFcnJvcj10cnVlO3JldHVybjt9dmFyIGM9Yi5zaWRlO3ZhciBhPVtQaG90b1N0 cmVhbUNhY2hlLkVSUk9SX0lEXTt0aGlzLmF0dGFjaFRvRmJpZHNMaXN0KGEsYyk7 fSxzZXRUb3RhbENvdW50OmZ1bmN0aW9uKGEpe3RoaXMudG90YWxDb3VudD1hO30s c2V0Rmlyc3RDdXJzb3JJbmRleDpmdW5jdGlvbihhKXt0aGlzLmZpcnN0Q3Vyc29y SW5kZXg9YTt9fSk7CmZ1bmN0aW9uIFBob3RvSW5saW5lRWRpdG9yKGEpe3RoaXMu dmVyc2lvbj1hO1Bob3RvSW5saW5lRWRpdG9yLmluc3RhbmNlc1thXT10aGlzO31Q aG90b0lubGluZUVkaXRvci5DQU5DRUxfSU5MSU5FX0VESVRJTkc9J0NBTkNFTF9J TkxJTkVfRURJVElORyc7UGhvdG9JbmxpbmVFZGl0b3IuaW5zdGFuY2VzPXt9O1Bo b3RvSW5saW5lRWRpdG9yLmdldEluc3RhbmNlPWZ1bmN0aW9uKGEpe3JldHVybiBQ aG90b0lubGluZUVkaXRvci5pbnN0YW5jZXNbYV07fTtjb3B5X3Byb3BlcnRpZXMo UGhvdG9JbmxpbmVFZGl0b3IucHJvdG90eXBlLHtjYW5jZWw6ZnVuY3Rpb24oYSl7 dmFyIGI9UGFyZW50LmJ5Q2xhc3MoYSwncGhvdG9VZmlDb250YWluZXInKTtpZigh YilyZXR1cm47dGhpcy5zZXRWaXNpYmxlKGIsJy5mYlBob3Rvc1Bob3RvQ2FwdGlv bicsdHJ1ZSk7dGhpcy5zZXRWaXNpYmxlKGIsJy5mYlBob3RvVGFnTGlzdCcsdHJ1 ZSk7dGhpcy5zZXRWaXNpYmxlKGIsJy5mYlBob3Rvc1Bob3RvRWRpdCcsdHJ1ZSk7 dGhpcy5zZXRWaXNpYmxlKGIsJy5mYlBob3Rvc1Bob3RvRGlzYWJsZWRFZGl0Jyxm YWxzZSk7dGhpcy5zZXRWaXNpYmxlKGIsJy5mYlBob3RvSW5saW5lRWRpdG9yJyxm YWxzZSk7QXJiaXRlci51bnN1YnNjcmliZSh0aGlzLmFyYml0ZXJUb2tlbik7QXJi aXRlci5pbmZvcm0oUGhvdG9JbmxpbmVFZGl0b3IuQ0FOQ0VMX0lOTElORV9FRElU SU5HKTt9LHNldFZpc2libGU6ZnVuY3Rpb24oYyxhLGQpe3ZhciBiPURPTS5zY3J5 KGMsYSlbMF07YiYmQ1NTW2Q/J3Nob3cnOidoaWRlJ10oYik7fSxzdWJzY3JpYmVD YW5jZWw6ZnVuY3Rpb24oYSl7dmFyIGI9W1Bob3RvU25vd2JveC5QQUdFLFBob3Rv U25vd2JveC5DTE9TRSxQaG90b1Nub3dib3guT1BFTixQaG90b1RhZ2dlci5BQ1RJ VkFURV9UQUdHSU5HXTt0aGlzLmFyYml0ZXJUb2tlbj1BcmJpdGVyLnN1YnNjcmli ZShiLHRoaXMuY2FuY2VsLmJpbmQodGhpcyxhKSxBcmJpdGVyLlNVQlNDUklCRV9O RVcpO319KTsKdmFyIFBob3RvU25vd2JveD13aW5kb3cuUGhvdG9Tbm93Ym94fHx7 U1RBVEVfRVJST1I6J2Vycm9yJyxTVEFURV9IVE1MOidodG1sJyxTVEFURV9JTUFH RV9QSVhFTFM6J2ltYWdlX3BpeGVscycsU1RBVEVfSU1BR0VfREFUQTonaW1hZ2Un LENMT1NFOidQaG90b1Nub3dib3guQ0xPU0UnLERBVEFfQ0hBTkdFOidQaG90b1Nu b3dib3guREFUQV9DSEFOR0UnLEdPOidQaG90b1Nub3dib3guR08nLE9QRU46J1Bo b3RvU25vd2JveC5PUEVOJyxQQUdFOidQaG90b1Nub3dib3guUEFHRScsUkVTRVRf SEVMUDonUGhvdG9Tbm93Ym94LlJFU0VUX0hFTFAnLExPQURJTkdfVElNRU9VVDoy MDAwLFNUQUdFX01BWDp7eDo5NjAseTo5NjB9LFNUQUdFX01JTjp7eDo3MjAseTo0 MDJ9LFNUQUdFX0NIUk9NRTp7eDoyMjUseToxMTd9LFRJTUVMSU5FX1NUUkVUQ0hf V0lEVEg6ODQzLFRJTUVMSU5FX1NUUkVUQ0hfTUlOOjQ4MCxXSURFX0FEUzo4NTUs TUlOX1RBR19ESVNUQU5DRTo4MyxBRFNfUkVGUkVTSF9SQVRFOjMwMDAwLHN3aXRj aFRpbWVyOm51bGwsaW1hZ2VSZWZyZXNoVGltZXI6bnVsbCxpbWFnZUxvYWRpbmdU aW1lcjpudWxsLGxhc3RQYWdlOjAsY3VycmVudE1pblNpemU6bnVsbCxleHRyYUNs YXNzOm51bGwsbm9ybWFsU2l6ZTpudWxsLHJlc2V0VXJpU3RhY2s6dHJ1ZSx0aHVt YlNyYzpudWxsLHNob3VsZFN0cmV0Y2g6ZmFsc2UsdWE6bnVsbCxib290c3RyYXA6 ZnVuY3Rpb24oYixhKXt0aGlzLnJlc2V0VXJpU3RhY2s9dHJ1ZTtpZih0aGlzLmlz T3BlbilpZih0aGlzLm9wZW5FeHBsaWNpdGx5KXt0aGlzLmNsb3NlQ2xlYW51cCgp O3RoaXMucmVzZXRVcmlTdGFjaz1mYWxzZTt9ZWxzZSByZXR1cm47dGhpcy51YT11 c2VyX2FjdGlvbignc25vd2JveCcsYSxudWxsKS5zZXRfbmFtZXNwYWNlKHRoaXMu cGlwZUxvYWQ/J3Nub3dib3gnOidzbm93Ym94UCcpLnNldF91YV9pZCgnb3Blbicp O3RoaXMucmV0dXJuaW5nVG9TdGFydD1mYWxzZTt0aGlzLmxvYWRpbmcmJkNTUy5y ZW1vdmVDbGFzcyh0aGlzLmxvYWRpbmcsJ2xvYWRpbmcnKTtpZihhKXtDU1MuYWRk Q2xhc3MoKHRoaXMubG9hZGluZz1hKSwnbG9hZGluZycpO3RoaXMuZ2V0VGh1bWJB bmRTaXplKGEpO31lbHNlIHRoaXMubG9hZGluZz1udWxsO0FyYml0ZXIuaW5mb3Jt KFBob3RvU25vd2JveC5HTyxiLEFyYml0ZXIuQkVIQVZJT1JfU1RBVEUpO3RoaXMu bG9hZEZyYW1lSWZVbmluaXRpYWxpemVkKCk7fSxnZXRUaHVtYkFuZFNpemU6ZnVu Y3Rpb24oYil7dGhpcy5ub3JtYWxTaXplPW51bGw7dGhpcy50aHVtYlNyYz1udWxs O3ZhciBlPVVSSShiLmdldEF0dHJpYnV0ZSgnYWpheGlmeScpKS5nZXRRdWVyeURh dGEoKTtpZighZS5zaXplKXJldHVybjt2YXIgYT1WZWN0b3IyLmRlc2VyaWFsaXpl KGUuc2l6ZSk7aWYoIWEueHx8IWEueSlyZXR1cm47dGhpcy5ub3JtYWxTaXplPWE7 aWYoIUNTUy5oYXNDbGFzcyhiLCd1aU1lZGlhVGh1bWInKSYmIUNTUy5oYXNDbGFz cyhiLCd1aVBob3RvVGh1bWInKSYmIUNTUy5oYXNDbGFzcyhiLCd1aVNjYWxlZFRo dW1iJykpcmV0dXJuO3ZhciBkPURPTS5zY3J5KGIsJ2ltZycpWzBdO3ZhciBjPURP TS5zY3J5KGIsJ2knKVswXTt2YXIgZj1QYXJlbnQuYnlBdHRyaWJ1dGUoYiwnZGF0 YS1zaXplJyk7dGhpcy5zaG91bGRTdHJldGNoPWYmJnRoaXMubm9ybWFsU2l6ZSYm ZCYmZi5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2l6ZScpPT09IjIiJiZ0aGlzLm5vcm1h bFNpemUueD50aGlzLm5vcm1hbFNpemUueSYmdGhpcy5ub3JtYWxTaXplLng8PVBo b3RvU25vd2JveC5USU1FTElORV9TVFJFVENIX1dJRFRIJiZkLm9mZnNldFdpZHRo PT09UGhvdG9Tbm93Ym94LlRJTUVMSU5FX1NUUkVUQ0hfV0lEVEg7aWYoZCl7dGh1 bWJTcmM9ZC5zcmM7fWVsc2UgaWYoYyl7dGh1bWJTcmM9Q1NTLmdldFN0eWxlKGMs J2JhY2tncm91bmRJbWFnZScpLnJlcGxhY2UoLy4qdXJsXCgiPyhbXiJdKikiP1wp LiovLCckMScpO31lbHNlIHJldHVybjt0aGlzLnRodW1iU3JjPXRodW1iU3JjO30s bG9hZEZyYW1lSWZVbmluaXRpYWxpemVkOmZ1bmN0aW9uKCl7aWYodGhpcy5yb290 KXJldHVybjtuZXcgQXN5bmNSZXF1ZXN0KCcvYWpheC9waG90b3Mvc25vd2JveC9p bml0LnBocCcpLnNldEFsbG93Q3Jvc3NQYWdlVHJhbnNpdGlvbih0cnVlKS5zZXRN ZXRob2QoJ0dFVCcpLnNldFJlYWRPbmx5KHRydWUpLnNlbmQoKTt9LGluaXQ6ZnVu Y3Rpb24oYSxiKXt0aGlzLnBpcGVMb2FkPWI7dmFyIGM9Z2UoJ2ZiUGhvdG9Tbm93 Ym94Jyk7aWYoIWMpe2M9RE9NLmFwcGVuZENvbnRlbnQoZG9jdW1lbnQuYm9keSxh KVswXTt0aGlzLmluaXRpYWxMb2FkPWZhbHNlO31pZih0aGlzLnJvb3Q9PWMpcmV0 dXJuO3RoaXMuaW5pdGlhbGl6ZU5vZGVzKGMpO2lmKCF0aGlzLnN1YnNjcmlwdGlv bil7TGlua0NvbnRyb2xsZXIucmVnaXN0ZXJIYW5kbGVyKHRoaXMuaGFuZGxlTmF2 aWdhdGVBd2F5LmJpbmQodGhpcykpO3RoaXMuc3Vic2NyaXB0aW9uPUFyYml0ZXIu c3Vic2NyaWJlKFBob3RvU25vd2JveC5HTyxmdW5jdGlvbihkLGUpe3RoaXMub3Bl bkV4cGxpY2l0bHk9dHJ1ZTt0aGlzLmxvYWRpbmcmJkNTUy5yZW1vdmVDbGFzcyh0 aGlzLmxvYWRpbmcsJ2xvYWRpbmcnKTt0aGlzLm9wZW4oZSk7fS5iaW5kKHRoaXMp KTt9dGhpcy50cmFuc2l0aW9uSGFuZGxlclJlZ2lzdGVyZWQ9ZmFsc2U7dGhpcy5y ZXR1cm5pbmdUb1N0YXJ0PWZhbHNlO1BhZ2VUcmFuc2l0aW9ucy5yZWdpc3Rlckhh bmRsZXIodGhpcy5vcGVuSGFuZGxlci5iaW5kKHRoaXMpKTt0aGlzLm9wZW5IYW5k bGVyUmVnaXN0ZXJlZD10cnVlO0FyYml0ZXIuc3Vic2NyaWJlKCdQaG90b1RhZ0Fw cHJvdmFsLkhJTElURV9UQUcnLHRoaXMub25IaWxpdGVUYWcuYmluZCh0aGlzKSk7 QXJiaXRlci5zdWJzY3JpYmUoJ1Bob3RvVGFnQXBwcm92YWwuVVBEQVRFX1RBR19C T1gnLHRoaXMub25VcGRhdGVUYWdCb3guYmluZCh0aGlzKSk7fSxpbml0aWFsaXpl Tm9kZXM6ZnVuY3Rpb24oYSl7dGhpcy5yb290PWE7dGhpcy5jbG9zZVRoZWF0ZXI9 RE9NLmZpbmQoYSwnYS5jbG9zZVRoZWF0ZXInKTt0aGlzLmNvbnRhaW5lcj1ET00u ZmluZChhLCdkaXYuY29udGFpbmVyJyk7dGhpcy5pbmZvV3JhcHBlcj1ET00uZmlu ZChhLCdkaXYucGhvdG9JbmZvV3JhcHBlcicpO3RoaXMuc3RhZ2VXcmFwcGVyPURP TS5maW5kKGEsJ2Rpdi5zdGFnZVdyYXBwZXInKTt0aGlzLmVycm9yQm94PURPTS5m aW5kKHRoaXMuc3RhZ2VXcmFwcGVyLCdkaXYuc3RhZ2VFcnJvcicpO3RoaXMuaW1h Z2U9RE9NLmZpbmQodGhpcy5zdGFnZVdyYXBwZXIsJ2ltZy5zcG90bGlnaHQnKTt0 aGlzLnBpdm90QmFyPURPTS5maW5kKHRoaXMuc3RhZ2VXcmFwcGVyLCdkaXYucGl2 b3RXcmFwcGVyJyk7dGhpcy5zdGFnZT1ET00uZmluZCh0aGlzLnN0YWdlV3JhcHBl ciwnZGl2LnN0YWdlJyk7dGhpcy52aWRlb1N0YWdlPURPTS5maW5kKHRoaXMuc3Rh Z2VXcmFwcGVyLCdkaXYudmlkZW9TdGFnZScpO3RoaXMuc3RhZ2VQYWdlcnM9RE9N LmZpbmQoYSwnZGl2LnN0YWdlUGFnZXJzJyk7dGhpcy5zdGFnZUFjdGlvbnM9RE9N LmZpbmQoYSwnZGl2LnN0YWdlQWN0aW9ucycpO3RoaXMuYnV0dG9uQWN0aW9ucz1E T00uZmluZCh0aGlzLnN0YWdlQWN0aW9ucywnZGl2LmZiUGhvdG9zUGhvdG9CdXR0 b25zJyk7dGhpcy5hY3Rpb25MaXN0PSQoJ2ZiUGhvdG9Tbm93Ym94QWN0aW9ucycp O3RoaXMuc2lkZUFkVW5pdD0kKCdmYlBob3RvU25vd2JveEFkc1NpZGUnKTt0aGlz LmJvdHRvbUFkVW5pdD0kKCdmYlBob3RvU25vd2JveEFkc0JvdHRvbScpO3RoaXMu c2lkZUFkRGl2PURPTS5maW5kKGEsJ2Rpdi5mYlBob3RvU25vd2JveEFkc1NpZGUn KTt0aGlzLmJvdHRvbUFkRGl2PURPTS5maW5kKGEsJ2Rpdi5mYlBob3RvU25vd2Jv eEFkc0JvdHRvbScpO30sZ2V0Um9vdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJv b3Q7fSxvcGVuSGFuZGxlcjpmdW5jdGlvbihhKXtpZih0aGlzLmlzT3Blbnx8YS5n ZXRQYXRoKCkhPScvcGhvdG8ucGhwJ3x8dGhpcy5yZXR1cm5pbmdUb1N0YXJ0fHxh LmdldFF1ZXJ5RGF0YSgpLmNsb3NlVGhlYXRlcnx8YS5nZXRRdWVyeURhdGEoKS5w ZXJtUGFnZXx8YS5nZXRRdWVyeURhdGEoKS5tYWtlcHJvZmlsZSl7dGhpcy5vcGVu SGFuZGxlclJlZ2lzdGVyZWQ9ZmFsc2U7cmV0dXJuIGZhbHNlO310aGlzLm9wZW4o YSk7dGhpcy5fdXJpU3RhY2sucHVzaChVUkkoYSkuZ2V0UXVhbGlmaWVkVVJJKCku dG9TdHJpbmcoKSk7UGFnZVRyYW5zaXRpb25zLnRyYW5zaXRpb25Db21wbGV0ZSgp O3JldHVybiB0cnVlO30sb3BlbjpmdW5jdGlvbihjKXt2YXIgYT1VUkkoYykuZ2V0 UXVlcnlEYXRhKCk7dmFyIGI9YS5zcmM7aWYoYilkZWxldGUgYS5zcmM7aWYodGhp cy5yZXNldFVyaVN0YWNrKXRoaXMuX3VyaVN0YWNrPVtdO2lmKCF0aGlzLmluaXRp YWxMb2FkKXthLmZpcnN0TG9hZD10cnVlO3RoaXMuaW5pdGlhbExvYWQ9dHJ1ZTt9 dGhpcy5sb2FkUXVlcnk9YTt0aGlzLmlzT3Blbj10cnVlO3RoaXMucGFnZXJzU2hv d249ZmFsc2U7dGhpcy5yZWZyZXNoT25DbG9zZT1mYWxzZTt0aGlzLmhpbGl0ZWRU YWc9bnVsbDt0aGlzLmxhc3RBZHNMb2FkPTA7dGhpcy5sb2FkaW5nU3RhdGVzPXtp bWFnZTpmYWxzZSxodG1sOmZhbHNlfTt0aGlzLnJlcGxhY2VVcmw9ZmFsc2U7dGhp cy5zdHJlYW09bmV3IFBob3RvU3RyZWFtQ2FjaGUoKTt0aGlzLnN0cmVhbS5pbml0 KFBob3Rvc0NvbnN0LlZJRVdFUl9TTk9XQk9YKTt0aGlzLmZldGNoSW5pdGlhbERh dGEoKTt0aGlzLnNldExvYWRpbmdTdGF0ZShQaG90b1Nub3dib3guU1RBVEVfSFRN TCx0cnVlKTtLZXlFdmVudENvbnRyb2xsZXIucmVnaXN0ZXJLZXkoJ0VTQ0FQRScs dGhpcy5jbG9zZUxpc3RlbmVyLmJpbmQodGhpcykpO0Jvb3Rsb2FkZXIubG9hZENv bXBvbmVudHMoWydmYi1waG90b3MtcGhvdG8tY3NzJywnZmItcGhvdG9zLXNub3di b3gtY3NzJ10sZnVuY3Rpb24oKXt0aGlzLl9vcGVuKGMsYik7fS5iaW5kKHRoaXMp KTt9LF9vcGVuOmZ1bmN0aW9uKGQsYyl7dGhpcy5jcmVhdGVMb2FkZXIoYyk7Q1NT LnNob3codGhpcy5yb290KTsoZnVuY3Rpb24oKXt2YXIgZT1WZWN0b3IyLmdldFNj cm9sbFBvc2l0aW9uKCk7Q1NTLmFkZENsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxl bWVudCwndGhlYXRlck1vZGUnKTt2YXIgZj1ET01TY3JvbGwuZ2V0U2Nyb2xsYmFy U2l6ZSgpO2lmKGY9PT0wKXt0aGlzLmV4dHJhQ2xhc3M9J3plcm9TY3JvbGxiYXIn O31lbHNlIGlmKGY9PT0yMCl7dGhpcy5leHRyYUNsYXNzPSdzY3JvbGxiYXIyMCc7 fWVsc2UgdGhpcy5leHRyYUNsYXNzPSdkZWZhdWx0U2Nyb2xsYmFyJztDU1MuYWRk Q2xhc3MoZG9jdW1lbnQuYm9keSx0aGlzLmV4dHJhQ2xhc3MpO0NTUy5hZGRDbGFz cyhkb2N1bWVudC5ib2R5LCdjaGF0Rml4Tm9PcCcpO0RPTVNjcm9sbC5zY3JvbGxU byhlLDApO30pLmRlZmVyKCk7dGhpcy51YSYmdGhpcy51YS5hZGRfZXZlbnQoJ2Zy YW1lJyk7QXJiaXRlci5pbmZvcm0oJ2xheWVyX3Nob3duJyx7dHlwZTonUGhvdG9T bm93Ym94J30pO0FyYml0ZXIuaW5mb3JtKFBob3RvU25vd2JveC5PUEVOKTtCb290 bG9hZGVyLmxvYWRDb21wb25lbnRzKFsnSG92ZXJjYXJkJywnbGl2ZS1qcycsJ3Bo b3RvY3JvcDInLCdQaG90b1RhZycsJ1Bob3RvVGFnZ2VyJywnVGFnVG9rZW4nLCdU YWdUb2tlbml6ZXInLCd1aS11ZmktY3NzJ10pO3RoaXMuc3RhZ2VIYW5kbGVycz1b RXZlbnQubGlzdGVuKHdpbmRvdywncmVzaXplJyx0aGlzLmFkanVzdEZvclJlc2l6 ZS5iaW5kKHRoaXMpKSxFdmVudC5saXN0ZW4odGhpcy5yb290LCdjbGljaycsdGhp cy5jbG9zZUxpc3RlbmVyLmJpbmQodGhpcykpLEV2ZW50Lmxpc3Rlbih0aGlzLnN0 YWdlV3JhcHBlciwnY2xpY2snLHRoaXMuYnV0dG9uTGlzdGVuZXIuYmluZCh0aGlz KSksRXZlbnQubGlzdGVuKHRoaXMuYWN0aW9uTGlzdCwnY2xpY2snLHRoaXMucm90 YXRlTGlzdGVuZXIuYmluZCh0aGlzKSldO3ZhciBhPWdlKCdmYlBob3RvU25vd2Jv eEZlZWRiYWNrJyk7aWYoYSl0aGlzLnN0YWdlSGFuZGxlcnMucHVzaChFdmVudC5s aXN0ZW4oYSwnY2xpY2snLGZ1bmN0aW9uKGV2ZW50KXtpZihQYXJlbnQuYnlDbGFz cyhldmVudC5nZXRUYXJnZXQoKSwnbGlrZV9saW5rJykpQ1NTLnRvZ2dsZUNsYXNz KERPTS5maW5kKHRoaXMuYnV0dG9uQWN0aW9ucywnZGl2Lmxpa2VDb21tZW50R3Jv dXAnKSwndmlld2VyTGlrZXNUaGlzJyk7fS5iaW5kKHRoaXMpKSk7dmFyIGI9Z2Uo J2ZiUGhvdG9Tbm93Ym94T25Qcm9maWxlJyk7aWYoYil0aGlzLnN0YWdlSGFuZGxl cnMucHVzaChFdmVudC5saXN0ZW4oYiwnY2xpY2snLGZ1bmN0aW9uKGV2ZW50KXtp ZihQYXJlbnQuYnlDbGFzcyhldmVudC5nZXRUYXJnZXQoKSwnZmJQaG90b1JlbW92 ZUZyb21Qcm9maWxlTGluaycpKXRoaXMucmVmcmVzaE9uQ2xvc2U9dHJ1ZTt9LmJp bmQodGhpcykpKTtpZih0aGlzLnJlc2V0VXJpU3RhY2spdGhpcy5zdGFydGluZ1VS ST1VUkkuZ2V0TW9zdFJlY2VudFVSSSgpLmFkZFF1ZXJ5RGF0YSh7Y2xvc2VUaGVh dGVyOjF9KS5nZXRVbnF1YWxpZmllZFVSSSgpO2lmKCFjKXRoaXMuc2V0TG9hZGlu Z1N0YXRlKFBob3RvU25vd2JveC5TVEFURV9JTUFHRV9EQVRBLHRydWUpO2lmKCF0 aGlzLnRyYW5zaXRpb25IYW5kbGVyUmVnaXN0ZXJlZCl7UGFnZVRyYW5zaXRpb25z LnJlZ2lzdGVySGFuZGxlcih0aGlzLnRyYW5zaXRpb25IYW5kbGVyLmJpbmQodGhp cykpO3RoaXMudHJhbnNpdGlvbkhhbmRsZXJSZWdpc3RlcmVkPXRydWU7fVBob3Rv U2Vzc2lvbkxvZy5pbml0TG9nZ2luZyhQaG90b1Nlc3Npb25Mb2cuU05PV0JPWCk7 dWEuZmlyZWZveCgpJiZ0aGlzLnR1cm5GbGFzaEF1dG9wbGF5T2ZmLmRlZmVyKCk7 KGZ1bmN0aW9uKCl7dGhpcy5hZGp1c3RGb3JSZXNpemUoKTtpZih1YS5pZSgpKXt0 aGlzLmNvbnRhaW5lci5mb2N1cygpO31lbHNlIHRoaXMucm9vdC5mb2N1cygpO30p LmJpbmQodGhpcykuZGVmZXIoKTt9LGdldFN0cmVhbTpmdW5jdGlvbigpe3JldHVy biB0aGlzLnN0cmVhbTt9LGZldGNoSW5pdGlhbERhdGE6ZnVuY3Rpb24oKXt0aGlz LnVhJiZ0aGlzLnVhLmFkZF9ldmVudCgnaW5pdF9kYXRhJyk7aWYodGhpcy5waXBl TG9hZCl7VUlQYWdlbGV0LmxvYWRGcm9tRW5kcG9pbnQoJ1Bob3RvVmlld2VySW5p dFBhZ2VsZXQnLG51bGwsdGhpcy5sb2FkUXVlcnkse3VzZVBpcGU6dHJ1ZSxqc05v bmJsb2NrOnRydWUsY3Jvc3NQYWdlOnRydWV9KTt9ZWxzZSBuZXcgQXN5bmNSZXF1 ZXN0KCcvYWpheC9waG90b3Mvc25vd2JveC9sb2FkLnBocCcpLnNldEFsbG93Q3Jv c3NQYWdlVHJhbnNpdGlvbih0cnVlKS5zZXREYXRhKHRoaXMubG9hZFF1ZXJ5KS5z ZXRIYW5kbGVyKHRoaXMuc3RvcmVGcm9tUmVzcG9uc2UuYmluZCh0aGlzKSkuc2V0 TWV0aG9kKCdHRVQnKS5zZXRSZWFkT25seSh0cnVlKS5zZW5kKCk7fSx0dXJuRmxh c2hBdXRvcGxheU9mZjpmdW5jdGlvbigpe0RPTS5zY3J5KGRvY3VtZW50LCdkaXYu c3dmT2JqZWN0JykuZWFjaChmdW5jdGlvbihkKXt2YXIgYj1kLmdldEF0dHJpYnV0 ZSgnZGF0YS1zd2ZpZCcpO2lmKGImJndpbmRvd1tiXSl7dmFyIGM9d2luZG93W2Jd O2MuYWRkUGFyYW0oJ2F1dG9zdGFydCcsJ2ZhbHNlJyk7Yy5hZGRQYXJhbSgnYXV0 b3BsYXknLCdmYWxzZScpO2MuYWRkUGFyYW0oJ3BsYXknLCdmYWxzZScpO2MuYWRk VmFyaWFibGUoJ3ZpZGVvX2F1dG9wbGF5JywnMCcpO2MuYWRkVmFyaWFibGUoJ2F1 dG9wbGF5JywnMCcpO2MuYWRkVmFyaWFibGUoJ3BsYXknLCcwJyk7dmFyIGE9VVJJ KGMuZ2V0QXR0cmlidXRlKCdzd2YnKSk7YS5hZGRRdWVyeURhdGEoe2F1dG9wbGF5 OicwJ30pO2Euc2V0UGF0aChhLmdldFBhdGgoKS5yZXBsYWNlKCdhdXRvcGxheT0x JywnYXV0b3BsYXk9MCcpKTtjLnNldEF0dHJpYnV0ZSgnc3dmJyxhLnRvU3RyaW5n KCkpO2Mud3JpdGUoZCk7fX0pO30sY2xvc2VIYW5kbGVyOmZ1bmN0aW9uKCl7aWYo IXRoaXMuaXNPcGVuKXJldHVybjtpZihVUkkuZ2V0TW9zdFJlY2VudFVSSSgpLmFk ZFF1ZXJ5RGF0YSh7Y2xvc2VUaGVhdGVyOjF9KS5nZXRVbnF1YWxpZmllZFVSSSgp LnRvU3RyaW5nKCk9PXRoaXMuc3RhcnRpbmdVUkkudG9TdHJpbmcoKSl7dGhpcy5j bG9zZSgpO3JldHVybjt9dGhpcy5jbG9zZSgpO3RoaXMucmV0dXJuVG9TdGFydGlu Z1VSSSh0aGlzLnJlZnJlc2hPbkNsb3NlKTt9LHJldHVyblRvU3RhcnRpbmdVUkk6 ZnVuY3Rpb24oZCxiKXtpZighZClpZihiKXt0aGlzLnNxdWFzaE5leHRUcmFuc2l0 aW9uKGdvVVJJLmN1cnJ5KGIpKTt9ZWxzZSB0aGlzLnNxdWFzaE5leHRUcmFuc2l0 aW9uKCk7dGhpcy5yZXR1cm5pbmdUb1N0YXJ0PXRydWU7dmFyIGU9QXJiaXRlci5z dWJzY3JpYmUoJ3BhZ2VfdHJhbnNpdGlvbicsZnVuY3Rpb24oKXt0aGlzLnJldHVy bmluZ1RvU3RhcnQ9ZmFsc2U7QXJiaXRlci51bnN1YnNjcmliZShlKTt9KTt2YXIg YT1kfHxpc05hTih1YS5vcGVyYSgpKTt2YXIgZz10aGlzLl91cmlTdGFjay5sZW5n dGg7aWYoYSYmZzx3aW5kb3cuaGlzdG9yeS5sZW5ndGgpe3dpbmRvdy5oaXN0b3J5 LmdvKC1nKTt9ZWxzZXt2YXIgZj1QaG90b1Nub3dib3guc3RhcnRpbmdVUkk7dmFy IGM9bmV3IFVSSShmKS5yZW1vdmVRdWVyeURhdGEoJ2Nsb3NlVGhlYXRlcicpO2lm KGYuZ2V0UXVlcnlEYXRhKCkuc2s9PSdhcHByb3ZlJyYmZi5nZXRQYXRoKCk9PScv cHJvZmlsZS5waHAnKXtjLnJlbW92ZVF1ZXJ5RGF0YSgnaGlnaGxpZ2h0Jyk7Yy5y ZW1vdmVRdWVyeURhdGEoJ25vdGlmX3QnKTt9Z29VUkkoYyk7fX0sc3F1YXNoTmV4 dFRyYW5zaXRpb246ZnVuY3Rpb24oYSl7UGhvdG9Tbm93Ym94LnNxdWFzaE5leHQ9 dHJ1ZTtQYWdlVHJhbnNpdGlvbnMucmVnaXN0ZXJIYW5kbGVyKGZ1bmN0aW9uIF9z cXVhc2goKXtpZihQaG90b1Nub3dib3guc3F1YXNoTmV4dCl7UGhvdG9Tbm93Ym94 LnNxdWFzaE5leHQ9ZmFsc2U7aWYoYSlhLmRlZmVyKCk7UGFnZVRyYW5zaXRpb25z LnRyYW5zaXRpb25Db21wbGV0ZSgpO3JldHVybiB0cnVlO31yZXR1cm4gZmFsc2U7 fSk7fSxoYW5kbGVOYXZpZ2F0ZUF3YXk6ZnVuY3Rpb24oYil7dmFyIGE9Y29tcHV0 ZVJlbGF0aXZlVVJJKHdpbmRvdy5QYWdlVHJhbnNpdGlvbnMuX21vc3RfcmVjZW50 X3VyaS5nZXRRdWFsaWZpZWRVUkkoKSxiLmdldEF0dHJpYnV0ZSgnaHJlZicpKTtp Zih0aGlzLmlzT3BlbiYmKGEgaW5zdGFuY2VvZiBVUkkpJiZhLmdldFVucXVhbGlm aWVkVVJJKCkudG9TdHJpbmcoKSE9dGhpcy5zdGFydGluZ1VSSS50b1N0cmluZygp JiZhLmdldFBhdGgoKSE9Jy9waG90by5waHAnKXtpZighdGhpcy5jbG9zaW5nQWN0 aW9uKXRoaXMuY2xvc2luZ0FjdGlvbj1QaG90b1Nlc3Npb25Mb2cuTkFWSUdBVEU7 dGhpcy5jbG9zZSgpO3RoaXMucmV0dXJuVG9TdGFydGluZ1VSSShmYWxzZSxhKTty ZXR1cm4gZmFsc2U7fXJldHVybiB0cnVlO30sY2xvc2VMaXN0ZW5lcjpmdW5jdGlv bihldmVudCl7aWYodGhpcy5pc09wZW4mJiEod2luZG93LkRpYWxvZyYmRGlhbG9n LmdldEN1cnJlbnQoKSkpe3ZhciBjPWV2ZW50LmdldFRhcmdldCgpO3ZhciBhPVBh cmVudC5ieUNsYXNzKGMsJ2Nsb3NlVGhlYXRlcicpO3ZhciBiPShhfHxjPT10aGlz LnJvb3R8fGM9PXRoaXMuaW5mb1dyYXBwZXIpO2lmKGIpe2lmKGEpe3RoaXMuY2xv c2luZ0FjdGlvbj1QaG90b1Nlc3Npb25Mb2cuWDt9ZWxzZSB0aGlzLmNsb3NpbmdB Y3Rpb249UGhvdG9TZXNzaW9uTG9nLk9VVFNJREU7RXZlbnQua2lsbChldmVudCk7 dGhpcy5jbG9zZUhhbmRsZXIoKTt9ZWxzZSBpZihFdmVudC5nZXRLZXlDb2RlKGV2 ZW50KT09S0VZUy5FU0Mpe3RoaXMuY2xvc2luZ0FjdGlvbj1QaG90b1Nlc3Npb25M b2cuRVNDO0V2ZW50LmtpbGwoZXZlbnQpO3RoaXMuY2xvc2VIYW5kbGVyKCk7fX19 LGNsb3NlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNPcGVuKXJldHVybjtDU1MuaGlk ZSh0aGlzLnJvb3QpO3RoaXMub3BlbkV4cGxpY2l0bHk9ZmFsc2U7dGhpcy5jbG9z ZUNsZWFudXAuYmluZCh0aGlzKS5kZWZlcigpO30sY2xvc2VDbGVhbnVwOmZ1bmN0 aW9uKCl7dmFyIGI9VmVjdG9yMi5nZXRTY3JvbGxQb3NpdGlvbigpO0NTUy5yZW1v dmVDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJ3RoZWF0ZXJNb2RlJyk7 Q1NTLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksdGhpcy5leHRyYUNsYXNzKTtD U1MucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwnY2hhdEZpeE5vT3AnKTtDU1Mu cmVtb3ZlQ2xhc3ModGhpcy5yb290LCdkYXRhTG9hZGVkJyk7RE9NU2Nyb2xsLnNj cm9sbFRvKGIsMCk7S2V5RXZlbnRDb250cm9sbGVyLmdldEluc3RhbmNlKCkucmVz ZXRIYW5kbGVycygpO1Bob3RvU2Vzc2lvbkxvZy5sb2dQaG90b1ZpZXdzKHRoaXMu Y2xvc2luZ0FjdGlvbik7dGhpcy5kZXN0cm95KCk7Q1NTLmhpZGUodGhpcy5lcnJv ckJveCk7Q1NTLmhpZGUodGhpcy5pbWFnZSk7dGhpcy5ub3JtYWxTaXplPW51bGw7 dGhpcy50aHVtYlNyYz1udWxsO3RoaXMuc2hvdWxkU3RyZXRjaD1mYWxzZTt0aGlz LnJlc2V0VXJpU3RhY2s9dHJ1ZTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5zdGFnZVdy YXBwZXIsJ3Nob3dWaWRlbycpO0RPTS5lbXB0eSh0aGlzLnZpZGVvU3RhZ2UpO3Ro aXMuY3VycmVudE1pblNpemU9bnVsbDt0aGlzLnBpblBhZ2Vycz1mYWxzZTtDU1Mu cmVtb3ZlQ2xhc3ModGhpcy5zdGFnZVBhZ2VycywncGFnaW5nUmVhZHknKTt0aGlz LnJlY2FjaGVEYXRhKCk7RE9NLmVtcHR5KHRoaXMuc2lkZUFkVW5pdCk7RE9NLmVt cHR5KHRoaXMuYm90dG9tQWRVbml0KTt0aGlzLnN0cmVhbS5kZXN0cm95KCk7dmFy IGE9dGhpcy5jbG9zaW5nQWN0aW9uPT09UGhvdG9TZXNzaW9uTG9nLk5BVklHQVRF O3RoaXMuY2xvc2luZ0FjdGlvbj1udWxsO2lmKCF0aGlzLm9wZW5IYW5kbGVyUmVn aXN0ZXJlZCl7UGFnZVRyYW5zaXRpb25zLnJlZ2lzdGVySGFuZGxlcih0aGlzLm9w ZW5IYW5kbGVyLmJpbmQodGhpcykpO3RoaXMub3BlbkhhbmRsZXJSZWdpc3RlcmVk PXRydWU7fUFyYml0ZXIuaW5mb3JtKCdsYXllcl9oaWRkZW4nLHt0eXBlOidQaG90 b1Nub3dib3gnfSk7QXJiaXRlci5pbmZvcm0oUGhvdG9Tbm93Ym94LkNMT1NFLGEp O3RoaXMucm9vdC5zZXRBdHRyaWJ1dGUoJ2FyaWEtYnVzeScsJ3RydWUnKTt0aGlz LmlzT3Blbj1mYWxzZTt9LGNyZWF0ZUxvYWRlcjpmdW5jdGlvbihiKXtpZih0aGlz LnRodW1iU3JjIT09bnVsbCYmdGhpcy5ub3JtYWxTaXplIT09bnVsbCl7dmFyIGE9 dGhpcy5nZXRNYXhJbWFnZVNpemUodGhpcy5ub3JtYWxTaXplKTt0aGlzLnVzZUlt YWdlKCROKCdpbWcnLHtjbGFzc05hbWU6J3Nwb3RsaWdodCcsYWx0OicnLHNyYzp0 aGlzLnRodW1iU3JjLHN0eWxlOnt3aWR0aDphLngrJ3B4JyxoZWlnaHQ6YS55Kydw eCd9fSksYSxmYWxzZSk7fXRoaXMuc2V0TG9hZGluZ1N0YXRlKHRoaXMuU1RBVEVf SU1BR0VfUElYRUxTLHRydWUpO2lmKGIpKGZ1bmN0aW9uKCl7dmFyIGM9bmV3IElt YWdlKCk7Yy5vbmxvYWQ9YXN5bmNfY2FsbGJhY2soZnVuY3Rpb24oKXtpZighdGhp cy5zdHJlYW18fCF0aGlzLnN0cmVhbS5lcnJvckluQ3VycmVudCgpKXt0aGlzLnN3 aXRjaEltYWdlKGIsdGhpcy5ub3JtYWxTaXplKTt0aGlzLnVhJiZ0aGlzLnVhLmFk ZF9ldmVudCgnaW1hZ2UnKTt9fS5iaW5kKHRoaXMpLCdwaG90b190aGVhdGVyJyk7 Yy5zcmM9Yjt9KS5iaW5kKHRoaXMpLmRlZmVyKCk7Q1NTLmhpZGUodGhpcy5zdGFn ZUFjdGlvbnMpO0NTUy5hZGRDbGFzcyh0aGlzLnN0YWdlUGFnZXJzLCdwYWdpbmdE aXNhYmxlZCcpO30saW5pdERhdGFGZXRjaGVkOmZ1bmN0aW9uKGEpe1Bob3RvU2Vz c2lvbkxvZy5zZXRQaG90b1NldCh0aGlzLnN0cmVhbS5nZXRQaG90b1NldCgpKTtQ aG90b1Nlc3Npb25Mb2cuc2V0TG9nRmJpZHMoYS5sb2dpZHMpO1Bob3RvU2Vzc2lv bkxvZy5hZGRQaG90b1ZpZXcodGhpcy5zdHJlYW0uZ2V0Q3VycmVudEltYWdlRGF0 YSgpLmluZm8pO3RoaXMucG9zaXRpb249dGhpcy5zdHJlYW0uZ2V0Q3Vyc29yKCk7 dmFyIGI9e2NsaWNrOnRoaXMucGFnZUxpc3RlbmVyLmJpbmQodGhpcyksbW91c2Vs ZWF2ZTp0aGlzLm1vdXNlTGVhdmVMaXN0ZW5lci5iaW5kKHRoaXMpLG1vdXNlbW92 ZTp0aGlzLm1vdXNlTW92ZUxpc3RlbmVyLmJpbmQodGhpcyl9O2lmKCF0aGlzLnBh Z2VIYW5kbGVycyl7dGhpcy5wYWdlSGFuZGxlcnM9dmFsdWVzKEV2ZW50Lmxpc3Rl bih0aGlzLnJvb3QsYikpO0tleUV2ZW50Q29udHJvbGxlci5yZWdpc3RlcktleSgn TEVGVCcsdGhpcy5wYWdlTGlzdGVuZXIuYmluZCh0aGlzKSk7S2V5RXZlbnRDb250 cm9sbGVyLnJlZ2lzdGVyS2V5KCdSSUdIVCcsdGhpcy5wYWdlTGlzdGVuZXIuYmlu ZCh0aGlzKSk7fUNTUy5zaG93KHRoaXMuc3RhZ2VBY3Rpb25zKTt0aGlzLnJvb3Qu c2V0QXR0cmlidXRlKCdhcmlhLWJ1c3knLCdmYWxzZScpO3RoaXMuaXNMb2dnZWRJ blZpZXdlcj1hLmxvZ2dlZGluO3RoaXMuZGlzYWJsZUFkcz0hdGhpcy5pc0xvZ2dl ZEluVmlld2VyfHxhLmZyb21hZDt0aGlzLmxvYWRBZHMoKTt9LGFkanVzdEZvclJl c2l6ZTpmdW5jdGlvbigpe3RoaXMuY3VycmVudE1pblNpemU9bnVsbDt0aGlzLnBp blBhZ2Vycz1mYWxzZTt0aGlzLmFkanVzdFN0YWdlU2l6ZSgpO3RoaXMuYWRqdXN0 Rm9yTmV3RGF0YSgpO30sZ2V0TWF4SW1hZ2VTaXplOmZ1bmN0aW9uKGMpe3ZhciBm PVZlY3RvcjIuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCk7dmFyIGU9Zi5zdWIobmV3 IFZlY3RvcjIoUGhvdG9Tbm93Ym94LlNUQUdFX0NIUk9NRS54LFBob3RvU25vd2Jv eC5TVEFHRV9DSFJPTUUueSkpO3ZhciBhPW5ldyBWZWN0b3IyKE1hdGgubWluKGMu eCxlLngsUGhvdG9Tbm93Ym94LlNUQUdFX01BWC54KSxNYXRoLm1pbihjLnksZS55 LFBob3RvU25vd2JveC5TVEFHRV9NQVgueSkpO2lmKGEueD09PTAmJmEueT09PTAp cmV0dXJuIG5ldyBWZWN0b3IyKDAsMCk7dmFyIGQ9Yy54L2MueTt2YXIgYj1hLngv YS55O2lmKGI8ZClyZXR1cm4gbmV3IFZlY3RvcjIoYS54LE1hdGgucm91bmQoYS54 L2QpKTtyZXR1cm4gbmV3IFZlY3RvcjIoTWF0aC5yb3VuZChhLnkqZCksYS55KTt9 LGFkanVzdFN0YWdlU2l6ZTpmdW5jdGlvbihjKXt2YXIgYTt2YXIgYj10aGlzLnN0 cmVhbSYmdGhpcy5zdHJlYW0uZ2V0Q3VycmVudEltYWdlRGF0YSgpO2lmKGMpe2E9 Yzt9ZWxzZSBpZihiJiZiLmRpbWVuc2lvbnMpe2E9Yi5kaW1lbnNpb25zO31lbHNl IGlmKHRoaXMuaW1hZ2UmJnRoaXMuaW1hZ2Uuc3JjJiZpbWFnZV9oYXNfbG9hZGVk KHRoaXMuaW1hZ2UpKXthPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnModGhp cy5pbWFnZSk7fWVsc2UgcmV0dXJuO2lmKHRoaXMuc2hvdWxkU3RyZXRjaCYmIXRo aXMuZ2V0VmlkZW9PblN0YWdlKCkmJmEueD5hLnkmJmEueDw9UGhvdG9Tbm93Ym94 LlRJTUVMSU5FX1NUUkVUQ0hfV0lEVEgmJmEueD49UGhvdG9Tbm93Ym94LlRJTUVM SU5FX1NUUkVUQ0hfTUlOKXthLnk9TWF0aC5yb3VuZChhLnkqUGhvdG9Tbm93Ym94 LlRJTUVMSU5FX1NUUkVUQ0hfV0lEVEgvYS54KTthLng9UGhvdG9Tbm93Ym94LlRJ TUVMSU5FX1NUUkVUQ0hfV0lEVEg7Q1NTLnNldFN0eWxlKHRoaXMuaW1hZ2UsJ2hl aWdodCcsYS55KydweCcpO0NTUy5zZXRTdHlsZSh0aGlzLmltYWdlLCd3aWR0aCcs J2F1dG8nKTt9dmFyIGQ9dGhpcy5nZXRNYXhJbWFnZVNpemUoYSk7aWYoIXRoaXMu Y3VycmVudE1pblNpemUpe3RoaXMuY3VycmVudE1pblNpemU9bmV3IFZlY3RvcjIo TWF0aC5tYXgoZC54LFBob3RvU25vd2JveC5TVEFHRV9NSU4ueCksTWF0aC5tYXgo ZC55LFBob3RvU25vd2JveC5TVEFHRV9NSU4ueSkpO31lbHNlIHRoaXMuY3VycmVu dE1pblNpemU9bmV3IFZlY3RvcjIoTWF0aC5tYXgoZC54LHRoaXMuY3VycmVudE1p blNpemUueCksTWF0aC5tYXgoZC55LFBob3RvU25vd2JveC5TVEFHRV9NSU4ueSkp O0NTUy5zZXRTdHlsZSh0aGlzLmNvbnRhaW5lciwnd2lkdGgnLHRoaXMuY3VycmVu dE1pblNpemUueCsncHgnKTtDU1Muc2V0U3R5bGUodGhpcy5zdGFnZVdyYXBwZXIs J2hlaWdodCcsdGhpcy5jdXJyZW50TWluU2l6ZS55KydweCcpO0NTUy5zZXRTdHls ZSh0aGlzLnN0YWdlLCdsaW5lSGVpZ2h0Jyx0aGlzLmN1cnJlbnRNaW5TaXplLnkr J3B4Jyk7Q1NTLnNldFN0eWxlKHRoaXMudmlkZW9TdGFnZSwnbGluZUhlaWdodCcs dGhpcy5jdXJyZW50TWluU2l6ZS55KydweCcpO0NTUy5jb25kaXRpb25DbGFzcyh0 aGlzLmNvbnRhaW5lciwnYWRzT25TaWRlJyx0aGlzLmN1cnJlbnRNaW5TaXplLng+ PVBob3RvU25vd2JveC5XSURFX0FEUyk7dGhpcy5hZGp1c3RGb3JBZFVuaXQoKTtp ZighdGhpcy5waW5QYWdlcnMpQ1NTLnNldFN0eWxlKHRoaXMuc3RhZ2VQYWdlcnMs J2hlaWdodCcsdGhpcy5jdXJyZW50TWluU2l6ZS55LzIrJ3B4Jyk7dGhpcy5waW5Q YWdlcnM9dHJ1ZTt9LGFkanVzdEZvck5ld0RhdGE6ZnVuY3Rpb24oKXtpZighdGhp cy5pbWFnZSlyZXR1cm47dmFyIGM9RE9NLnNjcnkodGhpcy5zdGFnZSwnZGl2LnRh Z3NXcmFwcGVyJylbMF07dmFyIGE9VmVjdG9yMi5nZXRFbGVtZW50RGltZW5zaW9u cyh0aGlzLmltYWdlKTtpZihjKXtDU1Muc2V0U3R5bGUoYywnd2lkdGgnLGEueCsn cHgnKTtDU1Muc2V0U3R5bGUoYywnaGVpZ2h0JyxhLnkrJ3B4Jyk7aWYodWEuaWUo KTw9Nyl7dmFyIGI9RE9NLnNjcnkodGhpcy5yb290LCdkaXYudGFnQ29udGFpbmVy JylbMF07aWYoYilDU1MuY29uZGl0aW9uQ2xhc3MoYywnaWU3VmVydGljYWxGaXgn LFZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnMoYikueT5hLnkpO319fSxzZXRM b2FkaW5nU3RhdGU6ZnVuY3Rpb24oYixhKXtzd2l0Y2goYil7Y2FzZSBQaG90b1Nu b3dib3guU1RBVEVfSU1BR0VfUElYRUxTOkNTUy5jb25kaXRpb25DbGFzcyh0aGlz LnJvb3QsJ2ltYWdlUGl4ZWxzTG9hZGluZycsYSk7YnJlYWs7Y2FzZSBQaG90b1Nu b3dib3guU1RBVEVfSU1BR0VfREFUQTp0aGlzLmxvYWRpbmdTdGF0ZXNbYl09YTtD U1MuY29uZGl0aW9uQ2xhc3ModGhpcy5yb290LCdpbWFnZUxvYWRpbmcnLGEpO2Jy ZWFrO2Nhc2UgUGhvdG9Tbm93Ym94LlNUQVRFX0hUTUw6dGhpcy5sb2FkaW5nU3Rh dGVzW2JdPWE7Q1NTLmNvbmRpdGlvbkNsYXNzKHRoaXMucm9vdCwnZGF0YUxvYWRp bmcnLGEpO0NTUy5jb25kaXRpb25DbGFzcyh0aGlzLnJvb3QsJ2RhdGFMb2FkZWQn LCFhKTt0aGlzLmluZm9XcmFwcGVyLnNldEF0dHJpYnV0ZSgnYXJpYS1idXN5Jyxh Pyd0cnVlJzonZmFsc2UnKTticmVhazt9fSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhp cy5zdGFnZUhhbmRsZXJzLmVhY2goZnVuY3Rpb24oYSl7YS5yZW1vdmUoKTt9KTtp Zih0aGlzLnBhZ2VIYW5kbGVycyl7dGhpcy5wYWdlSGFuZGxlcnMuZWFjaChmdW5j dGlvbihhKXthLnJlbW92ZSgpO30pO3RoaXMucGFnZUhhbmRsZXJzPW51bGw7fX0s Y2hlY2tTdGF0ZTpmdW5jdGlvbihiKXtpZihiIT1QaG90b1Nub3dib3guU1RBVEVf RVJST1ImJiF0aGlzLmxvYWRpbmdTdGF0ZXNbYl0pcmV0dXJuO3N3aXRjaChiKXtj YXNlIFBob3RvU25vd2JveC5TVEFURV9JTUFHRV9EQVRBOnZhciBhPXRoaXMuc3Ry ZWFtLmdldEN1cnJlbnRJbWFnZURhdGEoKTtpZihhKXtpZihhLnVybCl7dGhpcy5z d2l0Y2hJbWFnZShhLnVybCxudWxsLHRydWUpO31lbHNlIGlmKGEudmlkZW8pdGhp cy5zd2l0Y2hWaWRlbyhhLnZpZGVvLHRydWUpO3RoaXMuc2V0TG9hZGluZ1N0YXRl KGIsZmFsc2UpO31icmVhaztjYXNlIFBob3RvU25vd2JveC5TVEFURV9IVE1MOmlm KHRoaXMuc3RyZWFtLmdldEN1cnJlbnRIdG1sKCkpe3RoaXMuc3dhcERhdGEoKTt0 aGlzLnNldExvYWRpbmdTdGF0ZShiLGZhbHNlKTt9YnJlYWs7ZGVmYXVsdDppZih0 aGlzLnN0cmVhbS5lcnJvckluQ3VycmVudCgpKXtDU1MuaGlkZSh0aGlzLmltYWdl KTtDU1Muc2hvdyh0aGlzLmVycm9yQm94KTt9YnJlYWs7fX0sYnV0dG9uTGlzdGVu ZXI6ZnVuY3Rpb24oZXZlbnQpe3ZhciBiPWV2ZW50LmdldFRhcmdldCgpO3ZhciBh PURhdGUubm93KCk7aWYoUGFyZW50LmJ5Q2xhc3MoYiwnZmJQaG90b1RhZ0FwcHJv dmFsQm94JykpcmV0dXJuO2lmKGEtdGhpcy5sYXN0UGFnZTwzNTApcmV0dXJuO2lm KFBhcmVudC5ieUNsYXNzKGIsJ2xpa2VCdXR0b24nKSl7RE9NLmZpbmQoJCgnZmJQ aG90b1Nub3dib3hGZWVkYmFjaycpLCdidXR0b24ubGlrZV9saW5rJykuY2xpY2so KTt9ZWxzZSBpZihQYXJlbnQuYnlDbGFzcyhiLCdjb21tZW50QnV0dG9uJykpe0RP TS5maW5kKHRoaXMucm9vdCwnZGl2LmNvbW1lbnRCb3ggdGV4dGFyZWEnKS5mb2N1 cygpO3RoaXMucm9vdC5zY3JvbGxUb3A9dGhpcy5yb290LnNjcm9sbEhlaWdodDt9 ZWxzZSBpZihQYXJlbnQuYnlDbGFzcyhiLCd0YWdBcHByb3ZlSWdub3JlJykpdGhp cy51cGRhdGVUYWdCb3goZXZlbnQsYik7fSxyb3RhdGVMaXN0ZW5lcjpmdW5jdGlv bihldmVudCl7dmFyIGE9ZXZlbnQuZ2V0VGFyZ2V0KCk7aWYoUGFyZW50LmJ5Q2xh c3MoYSwncm90YXRlUmlnaHQnKSl7dGhpcy5yb3RhdGUoJ3JpZ2h0Jyk7fWVsc2Ug aWYoUGFyZW50LmJ5Q2xhc3MoYSwncm90YXRlTGVmdCcpKXRoaXMucm90YXRlKCds ZWZ0Jyk7fSx1cGRhdGVUYWdCb3g6ZnVuY3Rpb24oYixhKXt0aGlzLnVuaGlsaXRl QWxsVGFncygpO3ZhciBjPWdlKGIpO2lmKCFjKXJldHVybjtDU1MuYWRkQ2xhc3Mo YywndGFnQm94IHRhZ0JveFBlbmRpbmdSZXNwb25zZScpO0NTUy5yZW1vdmVDbGFz cyhjLCd0YWdCb3hQZW5kaW5nJyk7Q1NTLmhpZGUoRE9NLmZpbmQoYywnc3Bhbi50 YWdGb3JtJykpO2lmKGEpe0NTUy5zaG93KERPTS5maW5kKGMsJ3NwYW4udGFnQXBw cm92ZWQnKSk7fWVsc2UgQ1NTLnNob3coRE9NLmZpbmQoYywnc3Bhbi50YWdJZ25v cmVkJykpO30scm90YXRlOmZ1bmN0aW9uKGMpe3ZhciBkPXRoaXMuc3RyZWFtLmdl dEN1cnNvcigpO2lmKHRoaXMuZ2V0VmlkZW9PblN0YWdlKCkpe3ZhciBiPShjPT0n bGVmdCcpPzI3MDo5MDtCb290bG9hZGVyLmxvYWRDb21wb25lbnRzKFsndmlkZW8t cm90YXRlLXNub3dib3gnXSxuZXcgVmlkZW9Sb3RhdGUoZCx0aGlzLmFjdGlvbkxp c3QpLm1vdGlvblJvdGF0ZShiKSk7cmV0dXJuO312YXIgYT17ZmJpZDpkLGNzX3Zl cjpQaG90b3NDb25zdC5WSUVXRVJfU05PV0JPWH07YVtjXT0xO3RoaXMuc2V0TG9h ZGluZ1N0YXRlKFBob3RvU25vd2JveC5TVEFURV9JTUFHRV9EQVRBLHRydWUpO3Ro aXMuc2V0TG9hZGluZ1N0YXRlKHRoaXMuU1RBVEVfSU1BR0VfUElYRUxTLHRydWUp O0NTUy5oaWRlKHRoaXMuaW1hZ2UpO25ldyBBc3luY1JlcXVlc3QoJy9hamF4L3Bo b3Rvcy9waG90by9yb3RhdGUvJykuc2V0QWxsb3dDcm9zc1BhZ2VUcmFuc2l0aW9u KHRydWUpLnNldERhdGEoYSkuc2V0RXJyb3JIYW5kbGVyKHRoaXMucm90YXRpb25F cnJvci5iaW5kKHRoaXMsZCkpLnNldEhhbmRsZXIodGhpcy5yb3RhdGlvbkNvbXBs ZXRlLmJpbmQodGhpcyxkKSkuc2V0TWV0aG9kKCdQT1NUJykuc2V0UmVhZE9ubHko ZmFsc2UpLnNlbmQoKTt9LHJvdGF0aW9uQ29tcGxldGU6ZnVuY3Rpb24oYSxiKXt0 aGlzLnN0b3JlUmVzcG9uc2VGb3JSb3RhdGUoYSxiKTtpZihhPT10aGlzLnN0cmVh bS5nZXRDdXJzb3IoKSl7dGhpcy5zZXRMb2FkaW5nU3RhdGUoUGhvdG9Tbm93Ym94 LlNUQVRFX0lNQUdFX0RBVEEsZmFsc2UpO3RoaXMuc3dpdGNoSW1hZ2UodGhpcy5z dHJlYW0uZ2V0Q3VycmVudEltYWdlRGF0YSgpLnVybCk7dGhpcy5zd2FwRGF0YSgp O310aGlzLnJlZnJlc2hPbkNsb3NlPXRydWU7fSxzdG9yZVJlc3BvbnNlRm9yUm90 YXRlOmZ1bmN0aW9uKGEsYyl7dGhpcy5zdG9yZUZyb21SZXNwb25zZShjKTt2YXIg Yj10aGlzLnN0cmVhbS5nZXRJbWFnZURhdGEoYSk7Yi51cmw9Yy5nZXRQYXlsb2Fk KCkubmV3X3VybHNbUGhvdG9zQ29uc3QuU0laRV9OT1JNQUxdO2IuZGltZW5zaW9u cz1WZWN0b3IyLmRlc2VyaWFsaXplKGMuZ2V0UGF5bG9hZCgpLmRpbWVuc2lvbnMp O30scm90YXRpb25FcnJvcjpmdW5jdGlvbihhLGIpe2lmKGE9PXRoaXMuc3RyZWFt LmdldEN1cnNvcigpKXt0aGlzLnNldExvYWRpbmdTdGF0ZShQaG90b1Nub3dib3gu U1RBVEVfSU1BR0VfREFUQSxmYWxzZSk7dGhpcy5zd2l0Y2hJbWFnZSh0aGlzLnN0 cmVhbS5nZXRDdXJyZW50SW1hZ2VEYXRhKCkudXJsKTtBc3luY1Jlc3BvbnNlLmRl ZmF1bHRFcnJvckhhbmRsZXIoYik7fX0sc2F2ZVRhZ0NvbXBsZXRlOmZ1bmN0aW9u KGEpe3RoaXMuc2F2ZVRhZ3NGcm9tUGF5bG9hZChhLmdldFBheWxvYWQoKSk7fSxz YXZlVGFnc0Zyb21QYXlsb2FkOmZ1bmN0aW9uKGEpe3RoaXMucmVmcmVzaE9uQ2xv c2U9dHJ1ZTt0aGlzLnN0b3JlRnJvbURhdGEoYSk7aWYoJ2RhdGEnIGluIGEmJnRo aXMuc3RyZWFtLmdldEN1cnNvcigpIGluIGEuZGF0YSl0aGlzLnN3YXBEYXRhKCk7 fSxtb3VzZUxlYXZlTGlzdGVuZXI6ZnVuY3Rpb24oZXZlbnQpe3RoaXMudW5oaWxp dGVBbGxUYWdzKCk7dGhpcy5yZUhpbGl0ZVBlbmRpbmdUYWcoKTt9LG1vdXNlTW92 ZUxpc3RlbmVyOmZ1bmN0aW9uKGV2ZW50KXt2YXIgYj1ldmVudC5nZXRUYXJnZXQo KTt2YXIgYT0oUGFyZW50LmJ5Q2xhc3MoYiwnc3RhZ2VBY3Rpb25zJyl8fFBhcmVu dC5ieUNsYXNzKGIsJ3N0YWdlV3JhcHBlcicpKTtpZighYSlDU1MuaGlkZSh0aGlz LnBpdm90QmFyKTtpZih0aGlzLmhhc1Bpdm90RGF0YSgpJiYhdGhpcy5sb2FkaW5n U3RhdGVzLmh0bWwpQ1NTLnNob3codGhpcy5waXZvdEJhcik7dGhpcy5oaWxpdGVU YWdzT25Nb3VzZU1vdmUoZXZlbnQpO30saGFzUGl2b3REYXRhOmZ1bmN0aW9uKCl7 dmFyIGE9dGhpcy5zdHJlYW0uZ2V0Q3VycmVudEh0bWwoKTtyZXR1cm4gYSYmYS5m YlBob3RvU25vd2JveFBpdm90czt9LHVuaGlsaXRlQWxsVGFnczpmdW5jdGlvbigp e0RPTS5zY3J5KHRoaXMuc3RhZ2UsJ2Rpdi50YWdzV3JhcHBlciBkaXYuaG92ZXIn KS5lYWNoKGZ1bmN0aW9uKGEpe0NTUy5yZW1vdmVDbGFzcyhhLCdob3ZlcicpO30p O3RoaXMuaGlsaXRlZFRhZz1udWxsO30sc3dpdGNoSGlsaXRlZFRhZ3M6ZnVuY3Rp b24oYixjKXtpZih0aGlzLnN3aXRjaFRpbWVyIT09bnVsbCl7Y2xlYXJUaW1lb3V0 KHRoaXMuc3dpdGNoVGltZXIpO3RoaXMuc3dpdGNoVGltZXI9bnVsbDt9dGhpcy51 bmhpbGl0ZUFsbFRhZ3MoKTt2YXIgYT1nZShiKTtpZihhKXt0aGlzLmhpbGl0ZWRU YWc9YjtDU1MuYWRkQ2xhc3MoYSwnaG92ZXInKTtpZihDU1MuaGFzQ2xhc3MoYSwn dGFnQm94UGVuZGluZycpJiYhQ1NTLmhhc0NsYXNzKGEsJ3Nob3dQZW5kaW5nVGFn TmFtZScpJiZjPT09dHJ1ZSl7RE9NLnNjcnkodGhpcy5zdGFnZSwnZGl2LnRhZ3NX cmFwcGVyIGRpdi5zaG93UGVuZGluZ1RhZ05hbWUnKS5lYWNoKGZ1bmN0aW9uKGQp e0NTUy5yZW1vdmVDbGFzcyhkLCdzaG93UGVuZGluZ1RhZ05hbWUnKTt9KTtDU1Mu YWRkQ2xhc3MoYSwnc2hvd1BlbmRpbmdUYWdOYW1lJyk7fX19LHJlSGlsaXRlUGVu ZGluZ1RhZzpmdW5jdGlvbigpe3ZhciBhPWdlKHRoaXMuaGlsaXRlZFRhZyk7aWYo YSYmQ1NTLmhhc0NsYXNzKGEsJ3Nob3dQZW5kaW5nVGFnTmFtZScpKXJldHVybjt2 YXIgYj1ET00uc2NyeSh0aGlzLnN0YWdlLCdkaXYudGFnc1dyYXBwZXIgZGl2LnNo b3dQZW5kaW5nVGFnTmFtZScpWzBdO2lmKGIpdGhpcy5zd2l0Y2hIaWxpdGVkVGFn cyhiLmlkKTt9LGhpbGl0ZVRhZ3NPbk1vdXNlTW92ZTpmdW5jdGlvbihldmVudCl7 aWYoIXRoaXMuc3RyZWFtLmdldEN1cnJlbnRFeHRyYURhdGEoKXx8dGhpcy5nZXRW aWRlb09uU3RhZ2UoKSlyZXR1cm47aWYodGhpcy5zd2l0Y2hUaW1lciE9PW51bGwp cmV0dXJuO3ZhciBtPWV2ZW50LmdldFRhcmdldCgpO2lmKFBhcmVudC5ieUNsYXNz KG0sJ2ZiUGhvdG9Tbm93Ym94VGFnQXBwcm92YWwnKSlyZXR1cm47dmFyIGk9UGFy ZW50LmJ5Q2xhc3MobSwndGFnQm94UGVuZGluZycpO3ZhciBkPSh0aGlzLmhpbGl0 ZWRUYWcmJkNTUy5oYXNDbGFzcygkKHRoaXMuaGlsaXRlZFRhZyksJ3RhZ0JveFBl bmRpbmcnKSk7dmFyIGw9KCghdGhpcy5oaWxpdGVkVGFnJiZpKXx8KCFkJiZpKSk7 aWYobCl7dGhpcy5zd2l0Y2hIaWxpdGVkVGFncyhpLmlkKTtyZXR1cm47fWlmKGkm JihpLmlkPT10aGlzLmhpbGl0ZWRUYWcpKXJldHVybjt2YXIgYT0yNTA7dmFyIGg9 VmVjdG9yMi5nZXRFdmVudFBvc2l0aW9uKGV2ZW50KTt2YXIgZj1WZWN0b3IyLmdl dEVsZW1lbnRQb3NpdGlvbih0aGlzLmltYWdlKTt2YXIgZT1WZWN0b3IyLmdldEVs ZW1lbnREaW1lbnNpb25zKHRoaXMuaW1hZ2UpO3ZhciBqPXRoaXMuc3RyZWFtLmdl dEN1cnJlbnRJbWFnZURhdGEoKS5kaW1lbnNpb25zO3ZhciBrPWUueC9qLng7dmFy IGc9UGhvdG9zVXRpbHMuZ2V0TmVhcmVzdEJveChoLGYsaixrLFBob3RvU25vd2Jv eC5NSU5fVEFHX0RJU1RBTkNFKmssdGhpcy5zdHJlYW0uZ2V0Q3VycmVudEV4dHJh RGF0YSgpLnRhZ1JlY3RzKTtpZighZyl7aWYoIWQpe3RoaXMudW5oaWxpdGVBbGxU YWdzKCk7dGhpcy5yZUhpbGl0ZVBlbmRpbmdUYWcoKTt9cmV0dXJuO312YXIgYj1u dWxsO2lmKGQpe3ZhciBjPXt9O2NbdGhpcy5oaWxpdGVkVGFnXT10aGlzLnN0cmVh bS5nZXRDdXJyZW50RXh0cmFEYXRhKCkudGFnUmVjdHNbdGhpcy5oaWxpdGVkVGFn XTtiPVBob3Rvc1V0aWxzLmdldE5lYXJlc3RCb3goaCxmLGosayxQaG90b1Nub3di b3guTUlOX1RBR19ESVNUQU5DRSprLGMpO31pZihiIT09bnVsbCYmZClyZXR1cm47 aWYodGhpcy5oaWxpdGVkVGFnIT1nKWlmKGQpe3RoaXMuc3dpdGNoVGltZXI9dGhp cy5zd2l0Y2hIaWxpdGVkVGFncy5iaW5kKHRoaXMsZykuZGVmZXIoYSk7fWVsc2Ug dGhpcy5zd2l0Y2hIaWxpdGVkVGFncyhnKTt9LGdldFZpZGVvT25TdGFnZTpmdW5j dGlvbigpe3ZhciBhPXRoaXMuc3RyZWFtJiZ0aGlzLnN0cmVhbS5nZXRDdXJyZW50 SW1hZ2VEYXRhKCk7cmV0dXJuIGEmJmEudmlkZW87fSxzaG91bGRHb0ZvcndhcmQ6 ZnVuY3Rpb24oYSxjKXt2YXIgZD0oYT09S0VZUy5SSUdIVHx8UGFyZW50LmJ5Q2xh c3MoYywnbmV4dCcpKTtpZihkKXJldHVybiB0cnVlO3ZhciBiPSh0aGlzLmdldFZp ZGVvT25TdGFnZSgpfHxDU1MuaGFzQ2xhc3ModGhpcy5yb290LCd0YWdnaW5nTW9k ZScpfHxQYXJlbnQuYnlDbGFzcyhjLCd0YWdCb3hQZW5kaW5nJyl8fFBhcmVudC5i eUNsYXNzKGMsJ3RhZ0JveFBlbmRpbmdSZXNwb25zZScpfHxQYXJlbnQuYnlDbGFz cyhjLCdmYlBob3RvVGFnQXBwcm92YWxCb3gnKSk7aWYoYilyZXR1cm4gZmFsc2U7 cmV0dXJuIERPTS5pc05vZGUoYykmJlBhcmVudC5ieUNsYXNzKGMsJ3N0YWdlJyk7 fSxwYWdlTGlzdGVuZXI6ZnVuY3Rpb24oZXZlbnQpe3ZhciBhPUV2ZW50LmdldEtl eUNvZGUoZXZlbnQpO3ZhciBiPWV2ZW50LmdldFRhcmdldCgpO2lmKGE9PUtFWVMu TEVGVHx8UGFyZW50LmJ5Q2xhc3MoYiwncHJldicpKXt0aGlzLnBhZ2UoLTEpO3Vz ZXJfYWN0aW9uKCdhJyxiLGV2ZW50KTtyZXR1cm47fWlmKHRoaXMuc2hvdWxkR29G b3J3YXJkKGEsYikpe3RoaXMucGFnZSgxKTt1c2VyX2FjdGlvbignYScsYixldmVu dCk7fX0scGFnZTpmdW5jdGlvbihjLGIpe2lmKCF0aGlzLnN0cmVhbS5pc1ZhbGlk TW92ZW1lbnQoYykpcmV0dXJuO3RoaXMubGFzdFBhZ2U9RGF0ZS5ub3coKTt0aGlz LnVuaGlsaXRlQWxsVGFncygpO3ZhciBkPXRoaXMuZ2V0VmlkZW9PblN0YWdlKCk7 aWYoZCl0aGlzLnN3aXRjaFZpZGVvKGQsZmFsc2UpO0FyYml0ZXIuaW5mb3JtKFBo b3RvU25vd2JveC5QQUdFKTt0aGlzLnJlY2FjaGVEYXRhKCk7dGhpcy5zdHJlYW0u bW92ZUN1cnNvcihjKTtDU1MuaGlkZSh0aGlzLmltYWdlKTtpZih0aGlzLnN0cmVh bS5lcnJvckluQ3VycmVudCgpKXt0aGlzLnNldExvYWRpbmdTdGF0ZShQaG90b1Nu b3dib3guU1RBVEVfSFRNTCx0cnVlKTtDU1Muc2hvdyh0aGlzLmVycm9yQm94KTty ZXR1cm47fXZhciBhPXRoaXMuc3RyZWFtLmdldEN1cnJlbnRJbWFnZURhdGEoKTtp ZihhKXtpZihhLnVybCl7dGhpcy5zd2l0Y2hJbWFnZShhLnVybCxudWxsLHRydWUp O31lbHNlIGlmKGEudmlkZW8pdGhpcy5zd2l0Y2hWaWRlbyhhLnZpZGVvLHRydWUp O2lmKCFiKXt0aGlzLnJlcGxhY2VVcmw9dHJ1ZTtnb1VSSShhLmluZm8ucGVybWFs aW5rKTt9fWVsc2V7dGhpcy5zZXRMb2FkaW5nU3RhdGUoUGhvdG9Tbm93Ym94LlNU QVRFX0lNQUdFX1BJWEVMUyx0cnVlKTt0aGlzLnNldExvYWRpbmdTdGF0ZShQaG90 b1Nub3dib3guU1RBVEVfSU1BR0VfREFUQSx0cnVlKTt9aWYodGhpcy5zdHJlYW0u Z2V0Q3VycmVudEh0bWwoKSl7dGhpcy5zd2FwRGF0YSgpO31lbHNlIHRoaXMuc2V0 TG9hZGluZ1N0YXRlKFBob3RvU25vd2JveC5TVEFURV9IVE1MLHRydWUpO3RoaXMu ZGlzYWJsZUFkcz0hdGhpcy5pc0xvZ2dlZEluVmlld2VyO3RoaXMubG9hZEFkcygp O30sbG9nSW1wcmVzc2lvbkRldGFpbHNGb3JQaG90bzpmdW5jdGlvbigpe3ZhciBi PVtdLmNvbmNhdChET00uc2NyeSgkKCdmYlBob3RvU25vd2JveFRhZ0xpc3QnKSwn aW5wdXQucGhvdG9JbXByZXNzaW9uRGV0YWlscycpLERPTS5zY3J5KCQoJ2ZiUGhv dG9Tbm93Ym94RmVlZGJhY2snKSwnaW5wdXQucGhvdG9JbXByZXNzaW9uRGV0YWls cycpKTtpZihiLmxlbmd0aD09PTApcmV0dXJuO3ZhciBhPXt9O2Zvcih2YXIgYz0w O2M8Yi5sZW5ndGg7YysrKWFbYltjXS5uYW1lXT1iW2NdLnZhbHVlO2lmKHRoaXMu Z2V0VmlkZW9PblN0YWdlKCkpe2Eud2lkdGg9MDthLmhlaWdodD0wO31lbHNle2Eu d2lkdGg9dGhpcy5zdHJlYW0uZ2V0Q3VycmVudEltYWdlRGF0YSgpLmRpbWVuc2lv bnMueDthLmhlaWdodD10aGlzLnN0cmVhbS5nZXRDdXJyZW50SW1hZ2VEYXRhKCku ZGltZW5zaW9ucy55O31QaG90b1Nlc3Npb25Mb2cuYWRkRGV0YWlsRGF0YSh0aGlz LnN0cmVhbS5nZXRDdXJzb3IoKSxhKTt9LGxvYWRBZHM6ZnVuY3Rpb24oKXtpZih0 aGlzLmRpc2FibGVBZHMpcmV0dXJuO3ZhciBhPURhdGUubm93KCk7aWYoYS10aGlz Lmxhc3RBZHNMb2FkPlBob3RvU25vd2JveC5BRFNfUkVGUkVTSF9SQVRFKXtVSVBh Z2VsZXQubG9hZEZyb21FbmRwb2ludCgnV2ViRWdvUGFuZScsJ2ZiUGhvdG9Tbm93 Ym94QWRzU2lkZScse3BpZDozNCxkYXRhOlt0aGlzLmxvYWRRdWVyeS5zZXRdfSx7 Y3Jvc3NQYWdlOnRydWV9KTt0aGlzLmxhc3RBZHNMb2FkPWE7fX0sYWRqdXN0Rm9y QWRVbml0OmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5zaWRlQWRVbml0LmNoaWxkTm9k ZXM7dmFyIGE9dGhpcy5ib3R0b21BZFVuaXQuY2hpbGROb2RlcztpZihDU1MuaGFz Q2xhc3ModGhpcy5jb250YWluZXIsJ2Fkc09uU2lkZScpKXtpZihhLmxlbmd0aD4w JiZiLmxlbmd0aD09PTApRE9NLnNldENvbnRlbnQodGhpcy5zaWRlQWRVbml0LCRB KGEpKTtET00uZW1wdHkodGhpcy5ib3R0b21BZFVuaXQpO31lbHNlIGlmKGIubGVu Z3RoPjApe0RPTS5zZXRDb250ZW50KHRoaXMuYm90dG9tQWRVbml0LCRBKGIpKTtE T00uZW1wdHkodGhpcy5zaWRlQWRVbml0KTt9Q1NTLmNvbmRpdGlvbkNsYXNzKHRo aXMuc2lkZUFkRGl2LCdmYlBob3RvU25vd2JveEFkc05vbmUnLGIubGVuZ3RoPT09 MCk7Q1NTLmNvbmRpdGlvbkNsYXNzKHRoaXMuYm90dG9tQWREaXYsJ2ZiUGhvdG9T bm93Ym94QWRzTm9uZScsYS5sZW5ndGg9PT0wKTt9LHRyYW5zaXRpb25IYW5kbGVy OmZ1bmN0aW9uKGMpe2lmKGMuZ2V0UXVlcnlEYXRhKCkuY2xvc2VUaGVhdGVyfHxj LmdldFF1ZXJ5RGF0YSgpLnBlcm1QYWdlfHxjLmdldFF1ZXJ5RGF0YSgpLm1ha2Vw cm9maWxlfHx0aGlzLnJldHVybmluZ1RvU3RhcnQpe2lmKHRoaXMuaXNPcGVuKXRo aXMuY2xvc2UoKTt0aGlzLnRyYW5zaXRpb25IYW5kbGVyUmVnaXN0ZXJlZD1mYWxz ZTtyZXR1cm4gZmFsc2U7fWlmKHRoaXMucmVwbGFjZVVybCl7dGhpcy5yZXBsYWNl VXJsPWZhbHNlO3RoaXMuX3VyaVN0YWNrLnB1c2goYy5nZXRRdWFsaWZpZWRVUkko KS50b1N0cmluZygpKTtQYWdlVHJhbnNpdGlvbnMudHJhbnNpdGlvbkNvbXBsZXRl KCk7cmV0dXJuIHRydWU7fXZhciBkPXRoaXMuX3VyaVN0YWNrLmxlbmd0aDtpZihk Pj0yJiZ0aGlzLl91cmlTdGFja1tkLTJdPT1jLmdldFF1YWxpZmllZFVSSSgpLnRv U3RyaW5nKCkpdGhpcy5fdXJpU3RhY2sucG9wKCk7dmFyIGE9dGhpcy5zdHJlYW0u Z2V0Q3Vyc29yRm9yVVJJKGMuZ2V0VW5xdWFsaWZpZWRVUkkoKS50b1N0cmluZygp KTtpZihhKXt2YXIgYj10aGlzLnN0cmVhbS5nZXRSZWxhdGl2ZU1vdmVtZW50KGEp O3RoaXMucGFnZShiLHRydWUpO1BhZ2VUcmFuc2l0aW9ucy50cmFuc2l0aW9uQ29t cGxldGUoKTtyZXR1cm4gdHJ1ZTt9aWYodGhpcy5pc09wZW4pe3RoaXMuY2xvc2Uo KTtQYWdlVHJhbnNpdGlvbnMudHJhbnNpdGlvbkNvbXBsZXRlKCk7cmV0dXJuIHRy dWU7fXRoaXMudHJhbnNpdGlvbkhhbmRsZXJSZWdpc3RlcmVkPWZhbHNlO3JldHVy biBmYWxzZTt9LHJlY2FjaGVEYXRhOmZ1bmN0aW9uKCl7aWYoIXRoaXMubG9hZGlu Z1N0YXRlcy5odG1sKXt2YXIgYT10aGlzLnN0cmVhbS5nZXRDdXJyZW50SHRtbCgp O2Zvcih2YXIgYiBpbiBhKXthW2JdPSRBKCQoYikuY2hpbGROb2Rlcyk7RE9NLmVt cHR5KCQoYikpO319fSxyZWxvYWRJZlRpbWVvdXQ6ZnVuY3Rpb24oKXtpZighaW1h Z2VfaGFzX2xvYWRlZCh0aGlzLmltYWdlKSl7dmFyIGE9dGhpcy5tYWtlTmV3SW1h Z2UodGhpcy5pbWFnZS5zcmMsdHJ1ZSk7RXZlbnQubGlzdGVuKGEsJ2xvYWQnLHRo aXMudXNlSW1hZ2UuYmluZCh0aGlzLGEsbnVsbCx0cnVlKSk7fX0sdXNlSW1hZ2U6 ZnVuY3Rpb24oYyxhLGIpe2lmKGImJmltYWdlX2hhc19sb2FkZWQodGhpcy5pbWFn ZSkpcmV0dXJuO0RPTS5yZXBsYWNlKHRoaXMuaW1hZ2UsYyk7dGhpcy5pbWFnZT1j O3RoaXMuYWRqdXN0U3RhZ2VTaXplKGEpO30sbWFrZU5ld0ltYWdlOmZ1bmN0aW9u KGMsYSl7aWYodGhpcy5pbWFnZUxvYWRpbmdUaW1lcil7Y2xlYXJUaW1lb3V0KHRo aXMuaW1hZ2VMb2FkaW5nVGltZXIpO3RoaXMuaW1hZ2VMb2FkaW5nVGltZXI9bnVs bDt9ZWxzZSBpZighYSl0aGlzLmltYWdlUmVmcmVzaFRpbWVyPXNldFRpbWVvdXQo dGhpcy5yZWxvYWRJZlRpbWVvdXQuYmluZCh0aGlzKSxQaG90b1Nub3dib3guTE9B RElOR19USU1FT1VUKTt2YXIgYj0kTignaW1nJyx7Y2xhc3NOYW1lOidzcG90bGln aHQnLGFsdDonJ30pO2Iuc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jywn ZmJQaG90b3NTbm93Ym94Q2FwdGlvbicpO2Iuc2V0QXR0cmlidXRlKCdhcmlhLWJ1 c3knLCd0cnVlJyk7RXZlbnQubGlzdGVuKGIsJ2xvYWQnLGFzeW5jX2NhbGxiYWNr KGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuaW1hZ2VSZWZyZXNoVGltZXIp O3RoaXMuaW1hZ2Uuc2V0QXR0cmlidXRlKCdhcmlhLWJ1c3knLCdmYWxzZScpO3Ro aXMuc2V0TG9hZGluZ1N0YXRlKHRoaXMuU1RBVEVfSU1BR0VfUElYRUxTLGZhbHNl KTsoZnVuY3Rpb24oKXt0aGlzLmFkanVzdFN0YWdlU2l6ZSgpO3RoaXMuYWRqdXN0 Rm9yTmV3RGF0YSgpO30pLmJpbmQodGhpcykuZGVmZXIoKTt9LmJpbmQodGhpcyks J3Bob3RvX3RoZWF0ZXInKSk7Yi5zcmM9YztyZXR1cm4gYjt9LHN3aXRjaEltYWdl OmZ1bmN0aW9uKGQsYixjKXtDU1MuaGlkZSh0aGlzLmltYWdlKTtDU1MuaGlkZSh0 aGlzLmVycm9yQm94KTt0aGlzLnNldExvYWRpbmdTdGF0ZSh0aGlzLlNUQVRFX0lN QUdFX1BJWEVMUyx0cnVlKTt2YXIgYT10aGlzLnN0cmVhbSYmdGhpcy5zdHJlYW0u Z2V0Q3VycmVudEltYWdlRGF0YSgpO2lmKGEpUGhvdG9TZXNzaW9uTG9nLmFkZFBo b3RvVmlldyhhLmluZm8pO3RoaXMudXNlSW1hZ2UodGhpcy5tYWtlTmV3SW1hZ2Uo ZCxmYWxzZSksYixmYWxzZSk7aWYoYyl0aGlzLnN0cmVhbS5wcmVsb2FkSW1hZ2Vz KCk7fSxzd2l0Y2hWaWRlbzpmdW5jdGlvbihjLGEpe3ZhciBiPSdzd2ZfJytjO2lm KGEpe0NTUy5hZGRDbGFzcyh0aGlzLnN0YWdlV3JhcHBlciwnc2hvd1ZpZGVvJyk7 dGhpcy52aWRlb1N0YWdlLmlkPWM7aWYod2luZG93W2JdJiYhZ2UoYikpd2luZG93 W2JdLndyaXRlKGMpO3RoaXMuYWRqdXN0U3RhZ2VTaXplRm9yVmlkZW8uYmluZCh0 aGlzLGIpLmRlZmVyKCk7fWVsc2V7dGhpcy52aWRlb1N0YWdlLmlkPSdmYlZpZGVv U3RhZ2UnO3dpbmRvd1tiXSYmd2luZG93W2JdLmFkZFZhcmlhYmxlKCd2aWRlb19h dXRvcGxheScsMCk7dGhpcy52aWRlb0xvYWRUaW1lciYmY2xlYXJUaW1lb3V0KHRo aXMudmlkZW9Mb2FkVGltZXIpO0RPTS5lbXB0eSh0aGlzLnZpZGVvU3RhZ2UpO0NT Uy5yZW1vdmVDbGFzcyh0aGlzLnN0YWdlV3JhcHBlciwnc2hvd1ZpZGVvJyk7fX0s Y2hlY2tWaWRlb1N0YXR1czpmdW5jdGlvbihhKXtpZih0aGlzLnZpZGVvTG9hZFRp bWVyKWNsZWFyVGltZW91dCh0aGlzLnZpZGVvTG9hZFRpbWVyKTt2aWRlbz10aGlz LmdldFZpZGVvT25TdGFnZSgpO2lmKCF2aWRlbyl7cmV0dXJuO31lbHNle2N1cnJl bnRTd2ZJRD0nc3dmXycrdmlkZW87aWYoYSE9PWN1cnJlbnRTd2ZJRClyZXR1cm47 dGhpcy5hZGp1c3RTdGFnZVNpemVGb3JWaWRlbyhhKTt9fSxhZGp1c3RTdGFnZVNp emVGb3JWaWRlbzpmdW5jdGlvbihhKXt2YXIgYj1nZShhKTtpZighYil7dGhpcy52 aWRlb0xvYWRUaW1lcj1zZXRUaW1lb3V0KHRoaXMuY2hlY2tWaWRlb1N0YXR1cy5i aW5kKHRoaXMsYSksMjAwKTt9ZWxzZSB0aGlzLmFkanVzdFN0YWdlU2l6ZShuZXcg VmVjdG9yMihiLndpZHRoLGIuaGVpZ2h0KSk7fSxzZXRFcnJvckJveENvbnRlbnQ6 ZnVuY3Rpb24oYSl7RE9NLnNldENvbnRlbnQodGhpcy5lcnJvckJveCxhKTt9LHN3 YXBEYXRhOmZ1bmN0aW9uKCl7dmFyIGIsYz10aGlzLnN0cmVhbS5nZXRDdXJyZW50 SHRtbCgpO2lmKGMpe3RoaXMuc2V0TG9hZGluZ1N0YXRlKFBob3RvU25vd2JveC5T VEFURV9IVE1MLGZhbHNlKTtmb3IodmFyIGQgaW4gYyl7Yj1nZShkKTtiJiZET00u c2V0Q29udGVudChiLGNbZF0pO312YXIgYT1ET00uc2NyeSgkKCdmYlBob3RvU25v d2JveENhcHRpb24nKSwnZGl2LmZiUGhvdG9JbmxpbmVDYXB0aW9uRWRpdG9yJyk7 aWYoYS5sZW5ndGgpbmV3IFBob3RvSW5saW5lQ2FwdGlvbkVkaXRvcignc25vd2Jv eCcpLmluaXQoYVswXSk7QXJiaXRlci5pbmZvcm0oUGhvdG9Tbm93Ym94LkRBVEFf Q0hBTkdFLHRoaXMuc3RyZWFtLmdldEN1cnJlbnRJbWFnZURhdGEoKS5pbmZvLEFy Yml0ZXIuQkVIQVZJT1JfU1RBVEUpO3RoaXMucG9zaXRpb249dGhpcy5zdHJlYW0u Z2V0Q3Vyc29yKCk7fXRoaXMuYWRqdXN0Rm9yTmV3RGF0YSgpO3RoaXMubG9nSW1w cmVzc2lvbkRldGFpbHNGb3JQaG90bygpO30sdXBkYXRlVG90YWxDb3VudDpmdW5j dGlvbihjLGIsYSl7ZWxlbWVudD1nZSgnZmJQaG90b1Nub3dib3hQb3NpdGlvbkFu ZENvdW50Jyk7ZWxlbWVudCYmRE9NLnNldENvbnRlbnQoZWxlbWVudCxhKTt0aGlz LnN0cmVhbS5zZXRUb3RhbENvdW50KGMpO3RoaXMuc3RyZWFtLnNldEZpcnN0Q3Vy c29ySW5kZXgoYik7fSxhZGRQaG90b0ZiaWRzOmZ1bmN0aW9uKGIsYyxhKXt2YXIg ZD10aGlzLnN0cmVhbS5nZXRDdXJzb3IoKT09PW51bGw7dGhpcy5zdHJlYW0uYXR0 YWNoVG9GYmlkc0xpc3QoYixjLGEpO2lmKGEmJmQpdGhpcy5wYWdlKDAsdHJ1ZSk7 aWYoIXRoaXMucGFnZXJzU2hvd24mJnRoaXMuc3RyZWFtLmNhblBhZ2UoKSl0aGlz LnNldFN0YWdlUGFnZXJzUmVhZHkoKTt9LHN0b3JlRnJvbVJlc3BvbnNlOmZ1bmN0 aW9uKGEpe3dpbmRvdy5BcmJpdGVyTW9uaXRvciYmQXJiaXRlck1vbml0b3Iuc3Rv cFR0aU1lYXN1cmVtZW50KCk7dGhpcy5zdG9yZUZyb21EYXRhKGEuZ2V0UGF5bG9h ZCgpKTt9LHN0b3JlRnJvbURhdGE6ZnVuY3Rpb24oYSl7aWYoIXRoaXMuaXNPcGVu KXJldHVybjt2YXIgYj10aGlzLnN0cmVhbS5zdG9yZVRvQ2FjaGUoYSk7aWYoJ2Vy cm9yJyBpbiBiKXt0aGlzLmNoZWNrU3RhdGUoUGhvdG9Tbm93Ym94LlNUQVRFX0VS Uk9SKTtyZXR1cm47fWlmKCdpbml0JyBpbiBiKXt0aGlzLmluaXREYXRhRmV0Y2hl ZChiLmluaXQpO2lmKHRoaXMub3BlbkV4cGxpY2l0bHkpe3RoaXMucmVwbGFjZVVy bD10cnVlO2dvVVJJKHRoaXMuc3RyZWFtLmdldEN1cnJlbnRJbWFnZURhdGEoKS5p bmZvLnBlcm1hbGluayk7fWlmKHRoaXMuc3RyZWFtLmNhblBhZ2UoKSl0aGlzLnNl dFN0YWdlUGFnZXJzUmVhZHkoKTt0aGlzLnVhJiZ0aGlzLnVhLmFkZF9ldmVudCgn dWZpJyk7fWlmKCdpbWFnZScgaW4gYil0aGlzLmNoZWNrU3RhdGUoUGhvdG9Tbm93 Ym94LlNUQVRFX0lNQUdFX0RBVEEpO2lmKCdkYXRhJyBpbiBiKXRoaXMuY2hlY2tT dGF0ZShQaG90b1Nub3dib3guU1RBVEVfSFRNTCk7fSxzZXRTdGFnZVBhZ2Vyc1Jl YWR5OmZ1bmN0aW9uKCl7Q1NTLnJlbW92ZUNsYXNzKHRoaXMuc3RhZ2VQYWdlcnMs J3BhZ2luZ0Rpc2FibGVkJyk7Q1NTLmFkZENsYXNzKHRoaXMuc3RhZ2VQYWdlcnMs J3BhZ2luZ1JlYWR5Jyk7dGhpcy5wYWdlcnNTaG93bj10cnVlO3RoaXMudWEmJnRo aXMudWEuYWRkX2V2ZW50KCdhcnJvd3MnKTt9LGRlbGV0ZVBob3RvOmZ1bmN0aW9u KGEpe3RoaXMuY2xvc2VSZWZyZXNoKCk7fSxjbG9zZVJlZnJlc2g6ZnVuY3Rpb24o KXt0aGlzLnJlZnJlc2hPbkNsb3NlPXRydWU7dGhpcy5jbG9zZUhhbmRsZXIoKTt9 LG9uSGlsaXRlVGFnOmZ1bmN0aW9uKGEsYil7aWYoYi52ZXJzaW9uIT1QaG90b3ND b25zdC5WSUVXRVJfU05PV0JPWClyZXR1cm47aWQ9Yi50YWc7aWYoaWQpe3RoaXMu c3dpdGNoSGlsaXRlZFRhZ3MoaWQsdHJ1ZSk7fWVsc2UgdGhpcy51bmhpbGl0ZUFs bFRhZ3MoKTt9LG9uVXBkYXRlVGFnQm94OmZ1bmN0aW9uKGEsYil7aWYoYi52ZXJz aW9uPT1QaG90b3NDb25zdC5WSUVXRVJfU05PV0JPWCl0aGlzLnVwZGF0ZVRhZ0Jv eChiLmlkLGIuYXBwcm92ZSk7fX07Cl9fZSgicG9wdXAtcmVzaXplciIsWyJQb3B1 cFdpbmRvdyJdLGZ1bmN0aW9uKGEsYil7YS5Qb3B1cFJlc2l6ZXI9YignUG9wdXBX aW5kb3cnKTt9LDMpOwp2YXIgVG9vbHRpcExpbms9e3NldFRvb2x0aXBUZXh0OmZ1 bmN0aW9uKGEsYil7YT1QYXJlbnQuYnlDbGFzcyhhLCd1aVRvb2x0aXAnKTtpZihh KURPTS5zZXRDb250ZW50KERPTS5maW5kKGEsJ3NwYW4udWlUb29sdGlwVGV4dCcp LGIpO319Owp2YXIgU2VsZWN0b3I9ZnVuY3Rpb24oKXt2YXIgYTt2YXIgaz1mYWxz ZTt2YXIgbDt2YXIgbT1bXTt2YXIgYjtmdW5jdGlvbiBjKG8pe3JldHVybiBQYXJl bnQuYnlDbGFzcyhvLCd1aVNlbGVjdG9yJyk7fWZ1bmN0aW9uIGQobyl7cmV0dXJu IFBhcmVudC5ieUNsYXNzKG8sJ3VpU2VsZWN0b3JCdXR0b24nKTt9ZnVuY3Rpb24g ZSgpe2lmKCFsKWw9bmV3IENvbnRleHR1YWxMYXllcigpLmluaXQoKS5zZXRQb3Np dGlvbignYmVsb3cnKTtyZXR1cm4gbDt9ZnVuY3Rpb24gZyhvKXtyZXR1cm4gRE9N LnNjcnkobywnc2VsZWN0JylbMF07fWZ1bmN0aW9uIGYobyl7cmV0dXJuIERPTS5m aW5kKG8sJ2Rpdi51aVNlbGVjdG9yTWVudVdyYXBwZXInKTt9ZnVuY3Rpb24gaCgp e2g9YmFnb2Zob2xkaW5nO01lbnUuc3Vic2NyaWJlKCdzZWxlY3QnLGZ1bmN0aW9u KG8scSl7aWYoIWF8fCFxfHxxLm1lbnUhPT1TZWxlY3Rvci5nZXRTZWxlY3Rvck1l bnUoYSkpcmV0dXJuO3ZhciByPWkoYSk7dmFyIHQ9aihxLml0ZW0pO2lmKHQpe3Zh ciBwPWE7dmFyIHM9U2VsZWN0b3IuaXNPcHRpb25TZWxlY3RlZChxLml0ZW0pO3Zh ciB1PVNlbGVjdG9yLmluZm9ybSgnc2VsZWN0Jyx7c2VsZWN0b3I6cCxvcHRpb246 cS5pdGVtfSk7aWYodT09PWZhbHNlKXJldHVybjtpZihyfHwhcyl7U2VsZWN0b3Iu c2V0U2VsZWN0ZWQocCxTZWxlY3Rvci5nZXRPcHRpb25WYWx1ZShxLml0ZW0pLCFz KTtTZWxlY3Rvci5pbmZvcm0oJ3RvZ2dsZScse3NlbGVjdG9yOnAsb3B0aW9uOnEu aXRlbX0pO1NlbGVjdG9yLmluZm9ybSgnY2hhbmdlJyx7c2VsZWN0b3I6cH0pO0Fy Yml0ZXIuaW5mb3JtKCdGb3JtL2NoYW5nZScse25vZGU6cH0pO2lmKG4ocCkpRGF0 YVN0b3JlLnNldChwLCdkaXJ0eScsdHJ1ZSk7fX1pZighcnx8IXQpYSYmU2VsZWN0 b3IudG9nZ2xlKGEpO30pO31mdW5jdGlvbiBpKG8pe3JldHVybiAhIW8uZ2V0QXR0 cmlidXRlKCdkYXRhLW11bHRpcGxlJyk7fWZ1bmN0aW9uIGoobyl7cmV0dXJuIENT Uy5oYXNDbGFzcyhvLCd1aVNlbGVjdG9yT3B0aW9uJyk7fWZ1bmN0aW9uIG4obyl7 cmV0dXJuICEhby5nZXRBdHRyaWJ1dGUoJ2RhdGEtYXV0b3N1Ym1pdCcpO31vbmxv YWRSZWdpc3RlcihmdW5jdGlvbigpe3ZhciBvPXt9O28ua2V5ZG93bj1mdW5jdGlv bihldmVudCl7dmFyIHE9ZXZlbnQuZ2V0VGFyZ2V0KCk7aWYoRE9NLmlzTm9kZU9m VHlwZShxLFsnaW5wdXQnLCd0ZXh0YXJlYSddKSlyZXR1cm47c3dpdGNoKEV2ZW50 LmdldEtleUNvZGUoZXZlbnQpKXtjYXNlIEtFWVMuRE9XTjpjYXNlIEtFWVMuU1BB Q0U6Y2FzZSBLRVlTLlVQOms9dHJ1ZTtpZihkKHEpKXt2YXIgcD1jKHEpO1NlbGVj dG9yLnRvZ2dsZShwKTtyZXR1cm4gZmFsc2U7fWJyZWFrO2Nhc2UgS0VZUy5FU0M6 az10cnVlO2lmKGEpe1NlbGVjdG9yLnRvZ2dsZShhKTtyZXR1cm4gZmFsc2U7fWJy ZWFrO2Nhc2UgS0VZUy5SRVRVUk46az10cnVlO2JyZWFrO319O28ua2V5dXA9ZnVu Y3Rpb24oKXshZnVuY3Rpb24oKXtrPWZhbHNlO30uZGVmZXIoKTt9O0V2ZW50Lmxp c3Rlbihkb2N1bWVudC5ib2R5LG8pO1RvZ2dsZXIuc3Vic2NyaWJlKFsnc2hvdycs J2hpZGUnXSxmdW5jdGlvbih6LHkpe3ZhciB2PWMoeS5nZXRBY3RpdmUoKSk7aWYo dil7aCgpO3ZhciBwPVNlbGVjdG9yLmdldFNlbGVjdG9yQnV0dG9uKHYpO3ZhciBx PVNlbGVjdG9yLmdldFNlbGVjdG9yTWVudSh2KTt2YXIgdz16PT09J3Nob3cnO2lm KHcpe2E9djtpZihDU1MuaGFzQ2xhc3MocCwndWlCdXR0b25EaXNhYmxlZCcpKXtT ZWxlY3Rvci5zZXRFbmFibGVkKHYsZmFsc2UpO3JldHVybiBmYWxzZTt9cT1xfHxT ZWxlY3Rvci5sb2FkTWVudSh2KTt2YXIgdD1DU1MuZ2V0U2Nyb2xsUGFyZW50KHYp O3ZhciB1PXQhPT13aW5kb3c7aWYodXx8Q1NTLmhhc0NsYXNzKHYsJ3VpU2VsZWN0 b3JVc2VMYXllcicpKXtpZih1KW0ucHVzaChFdmVudC5saXN0ZW4odCwnc2Nyb2xs JyxmdW5jdGlvbigpe3kuaGlkZSgpO30pKTtiPXYuY2xvbmVOb2RlKHRydWUpO0NT Uy5hZGRDbGFzcyhiLCdpbnZpc2libGVfZWxlbScpO0RPTS5yZXBsYWNlKHYsYik7 dmFyIHM9Q1NTLmhhc0NsYXNzKHYsJ3VpU2VsZWN0b3JSaWdodCcpO2UoKS5zZXRD b250ZXh0KGIpLnNldENvbnRlbnQodikuc2V0QWxpZ25tZW50KHM/J3JpZ2h0Jzon bGVmdCcpLnNob3coKTt9TWVudS5yZWdpc3RlcihxKTtpZihrKXt2YXIgcj1NZW51 LmdldENoZWNrZWRJdGVtcyhxKTtpZighci5sZW5ndGgpcj1NZW51LmdldEVuYWJs ZWRJdGVtcyhxKTtNZW51LmZvY3VzSXRlbShyWzBdKTt9fWVsc2V7YT1udWxsO2lm KGIpe3doaWxlKG0ubGVuZ3RoKW0ucG9wKCkucmVtb3ZlKCk7RE9NLnJlcGxhY2Uo Yix2KTtlKCkuaGlkZSgpO2I9bnVsbDt9cSYmTWVudS51bnJlZ2lzdGVyKHEpO2sm JklucHV0LmZvY3VzKHApO2lmKG4odikmJkRhdGFTdG9yZS5nZXQodiwnZGlydHkn KSl7dmFyIHg9RE9NLnNjcnkodiwnaW5wdXQuc3VibWl0QnV0dG9uJylbMF07eCYm eC5jbGljaygpO0RhdGFTdG9yZS5yZW1vdmUodiwnZGlydHknKTt9fUNTUy5jb25k aXRpb25DbGFzcyhTZWxlY3Rvci5nZXRTZWxlY3RvckJ1dHRvbih2KSwnc2VsZWN0 ZWQnLHcpO1NlbGVjdG9yLmluZm9ybSh3PydvcGVuJzonY2xvc2UnLHtzZWxlY3Rv cjp2fSk7fX0pO30pO3JldHVybiBjb3B5X3Byb3BlcnRpZXMobmV3IEFyYml0ZXIo KSx7YXR0YWNoTWVudTpmdW5jdGlvbihzLG8scSl7cz1jKHMpO2lmKHMpe2EmJk1l bnUudW5yZWdpc3RlcihTZWxlY3Rvci5nZXRTZWxlY3Rvck1lbnUoYSkpO0RPTS5z ZXRDb250ZW50KGYocyksbyk7YSYmTWVudS5yZWdpc3RlcihTZWxlY3Rvci5nZXRT ZWxlY3Rvck1lbnUocykpO2ImJmUoKS51cGRhdGVQb3NpdGlvbigpO2lmKHEpe3Zh ciBwPXMuZ2V0QXR0cmlidXRlKCdkYXRhLW5hbWUnKTtwJiZxLnNldEF0dHJpYnV0 ZSgnbmFtZScscCk7aWYoIWkocykpcS5zZXRBdHRyaWJ1dGUoJ211bHRpcGxlJyxm YWxzZSk7dmFyIHI9ZyhzKTtpZihyKXtET00ucmVwbGFjZShyLHEpO31lbHNlIERP TS5pbnNlcnRBZnRlcihzLmZpcnN0Q2hpbGQscSk7fXJldHVybiB0cnVlO319LGdl dE9wdGlvbjpmdW5jdGlvbihxLHIpe3ZhciBwPVNlbGVjdG9yLmdldE9wdGlvbnMo cSksbz1wLmxlbmd0aDt3aGlsZShvLS0paWYocj09PVNlbGVjdG9yLmdldE9wdGlv blZhbHVlKHBbb10pKXJldHVybiBwW29dO3JldHVybiBudWxsO30sZ2V0T3B0aW9u czpmdW5jdGlvbihwKXt2YXIgbz1NZW51LmdldEl0ZW1zKFNlbGVjdG9yLmdldFNl bGVjdG9yTWVudShwKSk7cmV0dXJuIG8uZmlsdGVyKGopO30sZ2V0RW5hYmxlZE9w dGlvbnM6ZnVuY3Rpb24ocCl7dmFyIG89TWVudS5nZXRFbmFibGVkSXRlbXMoU2Vs ZWN0b3IuZ2V0U2VsZWN0b3JNZW51KHApKTtyZXR1cm4gby5maWx0ZXIoaik7fSxn ZXRTZWxlY3RlZE9wdGlvbnM6ZnVuY3Rpb24obyl7cmV0dXJuIE1lbnUuZ2V0Q2hl Y2tlZEl0ZW1zKFNlbGVjdG9yLmdldFNlbGVjdG9yTWVudShvKSk7fSxnZXRPcHRp b25UZXh0OmZ1bmN0aW9uKG8pe3JldHVybiBNZW51LmdldEl0ZW1MYWJlbChvKTt9 LGdldE9wdGlvblZhbHVlOmZ1bmN0aW9uKHApe3ZhciByPWMocCk7dmFyIHE9Zyhy KTt2YXIgbz1TZWxlY3Rvci5nZXRPcHRpb25zKHIpLmluZGV4T2YocCk7cmV0dXJu IG8+PTA/cS5vcHRpb25zW28rMV0udmFsdWU6Jyc7fSxnZXRTZWxlY3RvckJ1dHRv bjpmdW5jdGlvbihvKXtyZXR1cm4gRE9NLmZpbmQobywnYS51aVNlbGVjdG9yQnV0 dG9uJyk7fSxnZXRTZWxlY3Rvck1lbnU6ZnVuY3Rpb24obyl7cmV0dXJuIERPTS5z Y3J5KG8sJ2Rpdi51aVNlbGVjdG9yTWVudScpWzBdO30sZ2V0VmFsdWU6ZnVuY3Rp b24ocyl7dmFyIHE9ZyhzKTtpZighcSlyZXR1cm4gbnVsbDtpZighaShzKSlyZXR1 cm4gcS52YWx1ZTt2YXIgdD1bXTt2YXIgcD1xLm9wdGlvbnM7Zm9yKHZhciBvPTEs cj1wLmxlbmd0aDtvPHI7bysrKWlmKHBbb10uc2VsZWN0ZWQpdC5wdXNoKHBbb10u dmFsdWUpO3JldHVybiB0O30saXNPcHRpb25TZWxlY3RlZDpmdW5jdGlvbihvKXty ZXR1cm4gTWVudS5pc0l0ZW1DaGVja2VkKG8pO30sbGlzdGVuOmZ1bmN0aW9uKHAs cSxvKXtyZXR1cm4gdGhpcy5zdWJzY3JpYmUocSxmdW5jdGlvbihzLHIpe2lmKHIu c2VsZWN0b3I9PT1wKXJldHVybiBvKHIscyk7fSk7fSxsb2FkTWVudTpmdW5jdGlv bihyKXt2YXIgcT1TZWxlY3Rvci5nZXRTZWxlY3Rvck1lbnUocik7aWYoIXEpe3Zh ciBwPVNlbGVjdG9yLmdldFNlbGVjdG9yQnV0dG9uKHIpO3ZhciBvPXAuZ2V0QXR0 cmlidXRlKCdhamF4aWZ5Jyk7aWYobyl7Qm9vdGxvYWRlci5sb2FkQ29tcG9uZW50 cygnYXN5bmMnLGZ1bmN0aW9uKCl7QXN5bmNSZXF1ZXN0LmJvb3RzdHJhcChvLHAp O30pO3ZhciBzPUhUTUwoJzxkaXYgY2xhc3M9InVpU2VsZWN0b3JNZW51V3JhcHBl ciB1aVRvZ2dsZUZseW91dCI+JysnPGRpdiBjbGFzcz0idWlNZW51IHVpU2VsZWN0 b3JNZW51IGxvYWRpbmciPicrJzx1bCBjbGFzcz0idWlNZW51SW5uZXIiPicrJzxs aT48c3Bhbj48L3NwYW4+PC9saT4nKyc8L3VsPicrJzwvZGl2PicrJzwvZGl2Picp O0RPTS5hcHBlbmRDb250ZW50KHAucGFyZW50Tm9kZSxzKTtxPVNlbGVjdG9yLmdl dFNlbGVjdG9yTWVudShyKTtwLnJlbW92ZUF0dHJpYnV0ZSgnb25tb3VzZW92ZXIn KTt9fXJldHVybiBxO30sc2V0QnV0dG9uTGFiZWw6ZnVuY3Rpb24ocixwKXt2YXIg bz1TZWxlY3Rvci5nZXRTZWxlY3RvckJ1dHRvbihyKTt2YXIgcT1wYXJzZUludChv LmdldEF0dHJpYnV0ZSgnZGF0YS1sZW5ndGgnKSwxMCk7cD1wfHxvLmdldEF0dHJp YnV0ZSgnZGF0YS1sYWJlbCcpfHwnJztCdXR0b24uc2V0TGFiZWwobyxwKTtpZih0 eXBlb2YgcD09PSdzdHJpbmcnKXtDU1MuY29uZGl0aW9uQ2xhc3MobywndWlTZWxl Y3RvckJpZ0J1dHRvbkxhYmVsJyxwLmxlbmd0aD5xKTtpZihxJiZwLmxlbmd0aD5x KXtvLnNldEF0dHJpYnV0ZSgndGl0bGUnLHApO31lbHNlIG8ucmVtb3ZlQXR0cmli dXRlKCd0aXRsZScpO319LHNldEJ1dHRvblRvb2x0aXA6ZnVuY3Rpb24ocSxwKXt2 YXIgbz1TZWxlY3Rvci5nZXRTZWxlY3RvckJ1dHRvbihxKTtUb29sdGlwTGluay5z ZXRUb29sdGlwVGV4dChvLHB8fG8uZ2V0QXR0cmlidXRlKCdkYXRhLXRvb2x0aXAn KXx8JycpO30sc2V0RW5hYmxlZDpmdW5jdGlvbihwLG8pe2lmKCFvJiZhJiZjKHAp PT09YSlTZWxlY3Rvci50b2dnbGUocCk7QnV0dG9uLnNldEVuYWJsZWQoU2VsZWN0 b3IuZ2V0U2VsZWN0b3JCdXR0b24ocCksbyk7fSxzZXRPcHRpb25FbmFibGVkOmZ1 bmN0aW9uKHAsbyl7TWVudS5zZXRJdGVtRW5hYmxlZChwLG8pO30sc2V0U2VsZWN0 ZWQ6ZnVuY3Rpb24ocyx0LHEpe3E9cSE9PWZhbHNlO3ZhciBwPVNlbGVjdG9yLmdl dE9wdGlvbihzLHQpO2lmKCFwKXJldHVybjt2YXIgbz1TZWxlY3Rvci5pc09wdGlv blNlbGVjdGVkKHApO2lmKHEhPT1vKXtpZighaShzKSYmIW8pe3ZhciByPVNlbGVj dG9yLmdldFNlbGVjdGVkT3B0aW9ucyhzKVswXTtyJiZNZW51LnRvZ2dsZUl0ZW0o cik7fU1lbnUudG9nZ2xlSXRlbShwKTtTZWxlY3Rvci51cGRhdGVTZWxlY3Rvcihz KTt9fSx0b2dnbGU6ZnVuY3Rpb24obyl7VG9nZ2xlci50b2dnbGUoRE9NLnNjcnko YyhvKSwnZGl2LndyYXAnKVswXSk7fSx1cGRhdGVTZWxlY3RvcjpmdW5jdGlvbih6 KXt2YXIgdz1TZWxlY3Rvci5nZXRPcHRpb25zKHopO3ZhciB5PVNlbGVjdG9yLmdl dFNlbGVjdGVkT3B0aW9ucyh6KTt2YXIgdD1nKHopLm9wdGlvbnM7dmFyIHY9W107 dmFyIHpiPVtdO2Zvcih2YXIgcz0wLHU9dy5sZW5ndGg7czx1O3MrKyl7dmFyIHg9 eS5jb250YWlucyh3W3NdKTt0W3MrMV0uc2VsZWN0ZWQ9eDtpZih4KXt2YXIgemE9 U2VsZWN0b3IuZ2V0T3B0aW9uVGV4dCh3W3NdKTt2LnB1c2goemEpO3piLnB1c2go d1tzXS5nZXRBdHRyaWJ1dGUoJ2RhdGEtdG9vbHRpcCcpfHx6YSk7fX10WzBdLnNl bGVjdGVkPSF5Lmxlbmd0aDt2YXIgcT1DU1MuaGFzQ2xhc3MoeiwndWlTZWxlY3Rv ckR5bmFtaWNMYWJlbCcpO3ZhciByPUNTUy5oYXNDbGFzcyh6LCd1aVNlbGVjdG9y RHluYW1pY1Rvb2x0aXAnKTtpZihxfHxyKXt2YXIgcD0nJztpZihpKHopKXt2YXIg bz1TZWxlY3Rvci5nZXRTZWxlY3RvckJ1dHRvbih6KTtwPW8uZ2V0QXR0cmlidXRl KCdkYXRhLWRlbGltaXRlcicpfHwnLCAnO312PXYuam9pbihwKTt6Yj16Yi5qb2lu KHApO3EmJlNlbGVjdG9yLnNldEJ1dHRvbkxhYmVsKHosdik7ciYmU2VsZWN0b3Iu c2V0QnV0dG9uVG9vbHRpcCh6LHpiKTt9fX0pO30oKTsKdmFyIER5bmFtaWNJY29u U2VsZWN0b3I9ZnVuY3Rpb24oKXtvbmxvYWRSZWdpc3RlcihmdW5jdGlvbigpe1Nl bGVjdG9yLnN1YnNjcmliZSgnY2hhbmdlJyxmdW5jdGlvbihhLGIpe3ZhciBjPWIu c2VsZWN0b3I7aWYoQ1NTLmhhc0NsYXNzKGMsJ2R5bmFtaWNJY29uU2VsZWN0b3In KSlEeW5hbWljSWNvblNlbGVjdG9yLnN3YXBJY29uKGMpO30pO30pO3JldHVybiB7 c3dhcEljb246ZnVuY3Rpb24oZSl7dmFyIGQ9U2VsZWN0b3IuZ2V0U2VsZWN0ZWRP cHRpb25zKGUpWzBdO3ZhciBjPWQmJkRPTS5zY3J5KGQsJy5pdGVtSWNvbicpWzBd O3ZhciBhPVNlbGVjdG9yLmdldFNlbGVjdG9yQnV0dG9uKGUpO2lmKGMpe0J1dHRv bi5zZXRJY29uKGEsYy5jbG9uZU5vZGUodHJ1ZSkpO31lbHNle3ZhciBiPURPTS5z Y3J5KGEsJy5pbWcnKVswXTtiJiZET00ucmVtb3ZlKGIpO31DU1MuY29uZGl0aW9u Q2xhc3MoYSwndWlTZWxlY3RvckNoZXZyb25Pbmx5JywhYyk7fX07fSgpOwp2YXIg UHJpdmFjeUJhc2VWYWx1ZT17RlJJRU5EU19NSU5VU19BQ1FVQUlOVEFOQ0VTOjEy NyxGQUNFQk9PS19FTVBMT1lFRVM6MTEyLENVU1RPTToxMTEsRVZFUllPTkU6ODAs TkVUV09SS1NfRlJJRU5EU19PRl9GUklFTkRTOjYwLE5FVFdPUktTX0ZSSUVORFM6 NTUsRlJJRU5EU19PRl9GUklFTkRTOjUwLEFMTF9GUklFTkRTOjQwLFNFTEY6MTAs Tk9CT0RZOjB9O3ZhciBQcml2YWN5RnJpZW5kc1ZhbHVlPXtFVkVSWU9ORTo4MCxO RVRXT1JLU19GUklFTkRTOjU1LEZSSUVORFNfT0ZfRlJJRU5EUzo1MCxBTExfRlJJ RU5EUzo0MCxTT01FX0ZSSUVORFM6MzAsU0VMRjoxMCxOT19GUklFTkRTOjB9O3Zh ciBQcml2YWN5U3BlY2lhbFByZXNldD17T05MWV9DT1JQX05FVFdPUks6MjAwLENP TExFR0VfTkVUV09SS19GUklFTkRTX09GX0ZSSUVORFM6MjAxLENPTExFR0VfTkVU V09SS19GUklFTkRTOjIwMn07dmFyIFByaXZhY3lOZXR3b3JrVHlwZXM9e1RZUEVf Q09MTEVHRToxLFRZUEVfSFM6MixUWVBFX0NPUlA6MyxUWVBFX0dFTzo0LFRZUEVf TUFOQUdFRDoxNCxUWVBFX1RFU1Q6NTB9O3ZhciBQcml2YWN5TmV0d29ya3NBbGw9 MTtjb3B5X3Byb3BlcnRpZXMoUHJpdmFjeUJhc2VWYWx1ZSxQcml2YWN5U3BlY2lh bFByZXNldCk7ZnVuY3Rpb24gUHJpdmFjeU1vZGVsKCl7dGhpcy52YWx1ZT1Qcml2 YWN5QmFzZVZhbHVlLkFMTF9GUklFTkRTO3RoaXMuZnJpZW5kcz1Qcml2YWN5RnJp ZW5kc1ZhbHVlLk5PX0ZSSUVORFM7dGhpcy5uZXR3b3Jrcz1bXTt0aGlzLm9iamVj dHM9W107dGhpcy5saXN0cz1bXTt0aGlzLmxpc3RzX3g9W107dGhpcy5saXN0X2Fu b249MDt0aGlzLmlkc19hbm9uPVtdO3RoaXMubGlzdF94X2Fub249MDt0aGlzLmlk c194X2Fub249W107dGhpcy50ZGF0YT17fTtyZXR1cm4gdGhpczt9Y29weV9wcm9w ZXJ0aWVzKFByaXZhY3lNb2RlbC5wcm90b3R5cGUse2luaXQ6ZnVuY3Rpb24oayxh LGgsaSxmLGcsZCxiLGUsYyxqKXt0aGlzLnZhbHVlPWs7dGhpcy5mcmllbmRzPWE7 dGhpcy5uZXR3b3Jrcz1oLnNsaWNlKCk7dGhpcy5vYmplY3RzPWkuc2xpY2UoKTt0 aGlzLmxpc3RzPWYuc2xpY2UoKTt0aGlzLmxpc3RzX3g9Zy5zbGljZSgpO3RoaXMu bGlzdF9hbm9uPWQ7dGhpcy5pZHNfYW5vbj1iLnNsaWNlKCk7dGhpcy5saXN0X3hf YW5vbj1lO3RoaXMuaWRzX3hfYW5vbj1jLnNsaWNlKCk7aj1qfHx7fTtjb3B5X3By b3BlcnRpZXModGhpcy50ZGF0YSxqKTt9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGE9 bmV3IFByaXZhY3lNb2RlbCgpO2EuaW5pdCh0aGlzLnZhbHVlLHRoaXMuZnJpZW5k cyx0aGlzLm5ldHdvcmtzLHRoaXMub2JqZWN0cyx0aGlzLmxpc3RzLHRoaXMubGlz dHNfeCx0aGlzLmxpc3RfYW5vbix0aGlzLmlkc19hbm9uLHRoaXMubGlzdF94X2Fu b24sdGhpcy5pZHNfeF9hbm9uLHRoaXMudGRhdGEpO3JldHVybiBhO30sZ2V0RGF0 YTpmdW5jdGlvbigpe3ZhciBiPVsndmFsdWUnLCdmcmllbmRzJywnbmV0d29ya3Mn LCdvYmplY3RzJywnbGlzdHMnLCdsaXN0c194JywnbGlzdF9hbm9uJywnaWRzX2Fu b24nLCdsaXN0X3hfYW5vbicsJ2lkc194X2Fub24nXTt2YXIgZD17fTtmb3IodmFy IGM9MDtjPGIubGVuZ3RoOysrYyl7dmFyIGE9YltjXTtkW2FdPXRoaXNbYV07fXJl dHVybiBkO319KTsKdmFyIEF1ZGllbmNlU2VsZWN0b3I9ZnVuY3Rpb24oKXtvbmxv YWRSZWdpc3RlcihmdW5jdGlvbigpe1NlbGVjdG9yLnN1YnNjcmliZSgnc2VsZWN0 JyxmdW5jdGlvbihhLGIpe2lmKCFDU1MuaGFzQ2xhc3MoYi5zZWxlY3RvciwnYXVk aWVuY2VTZWxlY3RvcicpKXJldHVybjt2YXIgZT1TZWxlY3Rvci5nZXRPcHRpb25W YWx1ZShiLm9wdGlvbik7aWYoZT09UHJpdmFjeUJhc2VWYWx1ZS5DVVNUT00pe1Nl bGVjdG9yLnRvZ2dsZShiLnNlbGVjdG9yKTtyZXR1cm4gZmFsc2U7fWlmKENTUy5o YXNDbGFzcyhiLnNlbGVjdG9yLCdkYXRhVG9vbHRpcCcpKXt2YXIgYz1ET00uZmlu ZChiLm9wdGlvbiwnLml0ZW1BbmNob3InKS5nZXRBdHRyaWJ1dGUoJ2RhdGEtdG9v bHRpcCcpO1NlbGVjdG9yLnNldEJ1dHRvblRvb2x0aXAoYi5zZWxlY3RvcixjfHxu dWxsKTt9aWYoIUNTUy5oYXNDbGFzcyhiLm9wdGlvbiwnc3BlY2lhbE9wdGlvbicp KXJldHVybjt2YXIgZD1ET00uZmluZChiLm9wdGlvbiwnYScpLmdldEF0dHJpYnV0 ZSgnZGF0YS10eXBlJyk7aWYoQ1NTLmhhc0NsYXNzKGIub3B0aW9uLCdtb3JlT3B0 aW9uJykpe0NTUy5hZGRDbGFzcyhiLnNlbGVjdG9yLGQpO0NTUy5hZGRDbGFzcyhi LnNlbGVjdG9yLCdzaG93U2Vjb25kYXJ5T3B0aW9ucycpO3JldHVybiBmYWxzZTt9 ZWxzZSBpZihDU1MuaGFzQ2xhc3MoYi5vcHRpb24sJ3JldHVybk9wdGlvbicpKXtD U1MucmVtb3ZlQ2xhc3MoYi5zZWxlY3Rvciwnc2hvd1NlY29uZGFyeU9wdGlvbnMn KTtDU1MucmVtb3ZlQ2xhc3MoYi5zZWxlY3RvciwnZnJpZW5kTGlzdCcpO3JldHVy biBmYWxzZTt9fSk7QXJiaXRlci5zdWJzY3JpYmUoJ0N1c3RvbVByaXZhY3lPcHRp b24vdXBkYXRlJyxmdW5jdGlvbihhLGIpe2lmKCFDU1MuaGFzQ2xhc3MoYi5zZWxl Y3RvciwnYXVkaWVuY2VTZWxlY3RvcicpKXJldHVybjtTZWxlY3Rvci5zZXRTZWxl Y3RlZChiLnNlbGVjdG9yLFNlbGVjdG9yLmdldE9wdGlvblZhbHVlKGIub3B0aW9u KSk7RHluYW1pY0ljb25TZWxlY3Rvci5zd2FwSWNvbihiLnNlbGVjdG9yKTtTZWxl Y3Rvci5zZXRCdXR0b25Ub29sdGlwKGIuc2VsZWN0b3IsYi50b29sdGlwKTtBcmJp dGVyLmluZm9ybSgnQXVkaWVuY2VTZWxlY3Rvci91cGRhdGUnLGIuc2VsZWN0b3Ip O30pO30pO30oKTsKdmFyIEZCWExvYWRNb3JlRXhwZXJpZW5jZXM9e3JldmVhbDpm dW5jdGlvbihiLGEpe3ZhciBjPWIub2Zmc2V0SGVpZ2h0O2E9RE9NLnJlcGxhY2Uo YixhKVswXTthbmltYXRpb24oYSkuZnJvbSgnaGVpZ2h0JyxjKS50bygnaGVpZ2h0 JywnYXV0bycpLmR1cmF0aW9uKDQwMCkuYmxpbmQoKS5lYXNlKGFuaW1hdGlvbi5l YXNlLmJvdGgpLmdvKCk7fX07CmZ1bmN0aW9uIFR5cGVhaGVhZFZpZXcoYSxiKXt0 aGlzLmVsZW1lbnQ9dGhpcy5jb250ZW50PSQoYSk7Y29weV9wcm9wZXJ0aWVzKHRo aXMsYik7fUNsYXNzLm1peGluKFR5cGVhaGVhZFZpZXcsJ0FyYml0ZXInLHtldmVu dHM6WydoaWdobGlnaHQnLCdyZW5kZXInLCdyZXNldCcsJ3NlbGVjdCddLHJlbmRl cmVyOidiYXNpYycsYXV0b1NlbGVjdDpmYWxzZSxpbml0OmZ1bmN0aW9uKCl7dGhp cy5pbml0PWJhZ29maG9sZGluZzt0aGlzLmluaXRpYWxpemVFdmVudHMoKTt0aGlz LnJlc2V0KCk7fSxpbml0aWFsaXplRXZlbnRzOmZ1bmN0aW9uKCl7RXZlbnQubGlz dGVuKHRoaXMuZWxlbWVudCx7bW91c2V1cDp0aGlzLm1vdXNldXAuYmluZCh0aGlz KSxtb3VzZW92ZXI6dGhpcy5tb3VzZW92ZXIuYmluZCh0aGlzKX0pO30sZ2V0RWxl bWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnQ7fSxtb3VzZXVwOmZ1 bmN0aW9uKGV2ZW50KXtpZihldmVudC5idXR0b24hPTIpe3RoaXMuc2VsZWN0KHRy dWUpO2V2ZW50LmtpbGwoKTt9fSxtb3VzZW92ZXI6ZnVuY3Rpb24oZXZlbnQpe2lm KHRoaXMudmlzaWJsZSl0aGlzLmhpZ2hsaWdodCh0aGlzLmdldEluZGV4KGV2ZW50 KSk7fSxyZXNldDpmdW5jdGlvbihhKXtpZighYSl0aGlzLmRpc2FibGVBdXRvU2Vs ZWN0PWZhbHNlO3RoaXMuaW5kZXg9LTE7dGhpcy5pdGVtcz1bXTt0aGlzLnJlc3Vs dHM9W107dGhpcy52YWx1ZT0nJzt0aGlzLmNvbnRlbnQuaW5uZXJIVE1MPScnO3Ro aXMuaW5mb3JtKCdyZXNldCcpO3JldHVybiB0aGlzO30sZ2V0SW5kZXg6ZnVuY3Rp b24oZXZlbnQpe3JldHVybiB0aGlzLml0ZW1zLmluZGV4T2YoUGFyZW50LmJ5VGFn KGV2ZW50LmdldFRhcmdldCgpLCdsaScpKTt9LGdldFNlbGVjdGlvbjpmdW5jdGlv bigpe3ZhciBhPXRoaXMucmVzdWx0c1t0aGlzLmluZGV4XXx8bnVsbDtyZXR1cm4g dGhpcy52aXNpYmxlP2E6bnVsbDt9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4g IXRoaXMucmVzdWx0cy5sZW5ndGg7fSxpc1Zpc2libGU6ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy52aXNpYmxlO30sc2hvdzpmdW5jdGlvbigpe0NTUy5zaG93KHRoaXMu ZWxlbWVudCk7dGhpcy52aXNpYmxlPXRydWU7cmV0dXJuIHRoaXM7fSxoaWRlOmZ1 bmN0aW9uKCl7Q1NTLmhpZGUodGhpcy5lbGVtZW50KTt0aGlzLnZpc2libGU9ZmFs c2U7cmV0dXJuIHRoaXM7fSxyZW5kZXI6ZnVuY3Rpb24oaCxlLGYpe3RoaXMudmFs dWU9aDtpZighZS5sZW5ndGgpe3RoaXMucmVzZXQodHJ1ZSk7cmV0dXJuO312YXIg Yz17cmVzdWx0czplLHZhbHVlOmh9O3RoaXMuaW5mb3JtKCdiZWZvcmVSZW5kZXIn LGMpO2U9Yy5yZXN1bHRzO3ZhciBkPXRoaXMuZ2V0RGVmYXVsdEluZGV4KGUpO2lm KHRoaXMuaW5kZXg+MCYmdGhpcy5pbmRleCE9PXRoaXMuZ2V0RGVmYXVsdEluZGV4 KHRoaXMucmVzdWx0cykpe3ZhciBhPXRoaXMucmVzdWx0c1t0aGlzLmluZGV4XTtm b3IodmFyIGI9MCxnPWUubGVuZ3RoO2I8ZzsrK2IpaWYoYS51aWQ9PWVbYl0udWlk KXtkPWI7YnJlYWs7fX10aGlzLnJlc3VsdHM9ZTtET00uc2V0Q29udGVudCh0aGlz LmNvbnRlbnQsdGhpcy5idWlsZFJlc3VsdHMoZSkpO3RoaXMuaXRlbXM9dGhpcy5n ZXRJdGVtcygpO3RoaXMuaGlnaGxpZ2h0KGQsZmFsc2UpO3RoaXMuaW5mb3JtKCdy ZW5kZXInLGUpO30sZ2V0SXRlbXM6ZnVuY3Rpb24oKXtyZXR1cm4gRE9NLnNjcnko dGhpcy5jb250ZW50LCdsaScpO30sYnVpbGRSZXN1bHRzOmZ1bmN0aW9uKGQpe3Zh ciBjO3ZhciBhPW51bGw7aWYodHlwZW9mIHRoaXMucmVuZGVyZXI9PSdmdW5jdGlv bicpe2M9dGhpcy5yZW5kZXJlcjt9ZWxzZXtjPVR5cGVhaGVhZFJlbmRlcmVyc1t0 aGlzLnJlbmRlcmVyXTthPXRoaXMucmVuZGVyZXI7fWM9Yy5iaW5kKHRoaXMpO3Zh ciBiPWQubWFwKGZ1bmN0aW9uKGUsZil7cmV0dXJuIGUubm9kZXx8YyhlLGYpO30p O3JldHVybiAkTigndWwnLHtjbGFzc05hbWU6YX0sYik7fSxnZXREZWZhdWx0SW5k ZXg6ZnVuY3Rpb24oYil7dmFyIGE9KHRoaXMuYXV0b1NlbGVjdCYmIXRoaXMuZGlz YWJsZUF1dG9TZWxlY3QpO3JldHVybiB0aGlzLmluZGV4PDAmJiFhPy0xOjA7fSxu ZXh0OmZ1bmN0aW9uKCl7dGhpcy5oaWdobGlnaHQodGhpcy5pbmRleCsxKTt9LHBy ZXY6ZnVuY3Rpb24oKXt0aGlzLmhpZ2hsaWdodCh0aGlzLmluZGV4LTEpO30saGln aGxpZ2h0OmZ1bmN0aW9uKGEsYil7dGhpcy5zZWxlY3RlZCYmQ1NTLnJlbW92ZUNs YXNzKHRoaXMuc2VsZWN0ZWQsJ3NlbGVjdGVkJyk7aWYoYT50aGlzLml0ZW1zLmxl bmd0aC0xKXthPS0xO31lbHNlIGlmKGE8LTEpYT10aGlzLml0ZW1zLmxlbmd0aC0x O2lmKGE+PTAmJmE8dGhpcy5pdGVtcy5sZW5ndGgpe3RoaXMuc2VsZWN0ZWQ9dGhp cy5pdGVtc1thXTtDU1MuYWRkQ2xhc3ModGhpcy5zZWxlY3RlZCwnc2VsZWN0ZWQn KTt9dGhpcy5pbmRleD1hO3RoaXMuZGlzYWJsZUF1dG9TZWxlY3Q9KGE9PS0xKTtp ZihiIT09ZmFsc2UpdGhpcy5pbmZvcm0oJ2hpZ2hsaWdodCcse2luZGV4OmEsc2Vs ZWN0ZWQ6dGhpcy5yZXN1bHRzW2FdfSk7fSxzZWxlY3Q6ZnVuY3Rpb24oYSl7dmFy IGI9dGhpcy5pbmRleDt2YXIgYz10aGlzLnJlc3VsdHNbYl07aWYoYyl7dGhpcy5p bmZvcm0oJ3NlbGVjdCcse2luZGV4OmIsY2xpY2tlZDohIWEsc2VsZWN0ZWQ6Y30p O3RoaXMuaW5mb3JtKCdhZnRlclNlbGVjdCcpO319fSk7CmZ1bmN0aW9uIEh1YnNU eXBlYWhlYWRWaWV3KGEsYil7dGhpcy5wYXJlbnQuY29uc3RydWN0KHRoaXMsYSxi KTt9Q2xhc3MuZXh0ZW5kKEh1YnNUeXBlYWhlYWRWaWV3LCdUeXBlYWhlYWRWaWV3 Jyk7SHVic1R5cGVhaGVhZFZpZXcucHJvdG90eXBlPXtyZW5kZXI6ZnVuY3Rpb24o ZixkLGUpe2lmKHRoaXMuYWx3YXlzUmVuZGVyJiZmIT09Jycpe3ZhciBjPWYudG9M b3dlckNhc2UoKS50cmltKCk7dmFyIGE9ZmFsc2U7Zm9yKHZhciBiPTA7YjxkLmxl bmd0aDtiKyspaWYoYz09ZFtiXS50ZXh0LnRvTG93ZXJDYXNlKCkpe2E9dHJ1ZTti cmVhazt9aWYoIWEpZC5wdXNoKHt0ZXh0OmYsdHlwZTonY2FsbHRvYWN0aW9uJ30p O31yZXR1cm4gdGhpcy5wYXJlbnQucmVuZGVyKGYsZCxlKTt9fTsKdmFyIFF1ZXN0 aW9uc09waW5pb25Qb2xsRm9ybT17cmVwbGFjZVJvdzpmdW5jdGlvbihjLGIsYSl7 dmFyIGQ9Jy5wb2xsUm93XycrYjtET00uc2NyeShjLGQpLm1hcChmdW5jdGlvbihl KXtET00ucmVwbGFjZShlLGEpO30pO319OwpmdW5jdGlvbiBTY3JvbGxpbmdQYWdl cihkLGMsYSxiKXt0aGlzLnNjcm9sbF9sb2FkZXJfaWQ9ZDt0aGlzLnBhZ2VsZXRf c3JjPWM7dGhpcy5kYXRhPWE7dGhpcy5vcHRpb25zPWJ8fHt9O2lmKHRoaXMub3B0 aW9ucy50YXJnZXRfaWQpe3RoaXMudGFyZ2V0X2lkPXRoaXMub3B0aW9ucy50YXJn ZXRfaWQ7dGhpcy5vcHRpb25zLmFwcGVuZD10cnVlO31lbHNlIHRoaXMudGFyZ2V0 X2lkPWQ7dGhpcy5oYW5kbGVyPW51bGw7fWNvcHlfcHJvcGVydGllcyhTY3JvbGxp bmdQYWdlcix7X2luc3RhbmNlczp7fSxnZXRJbnN0YW5jZTpmdW5jdGlvbihhKXty ZXR1cm4gU2Nyb2xsaW5nUGFnZXIuX2luc3RhbmNlc1thXTt9fSk7U2Nyb2xsaW5n UGFnZXIucHJvdG90eXBlPXtyZWdpc3RlcjpmdW5jdGlvbigpe3RoaXMub252aXNp YmxlPW5ldyBPblZpc2libGUoJCh0aGlzLnNjcm9sbF9sb2FkZXJfaWQpLHRoaXMu Z2V0SGFuZGxlcigpLGZhbHNlLHRoaXMub3B0aW9ucy5idWZmZXIsdGhpcy5vcHRp b25zKTtTY3JvbGxpbmdQYWdlci5faW5zdGFuY2VzW3RoaXMuc2Nyb2xsX2xvYWRl cl9pZF09dGhpczt9LGdldEluc3RhbmNlOmZ1bmN0aW9uKGEpe3JldHVybiBTY3Jv bGxpbmdQYWdlci5faW5zdGFuY2VzW2FdO30sZ2V0SGFuZGxlcjpmdW5jdGlvbigp e2lmKHRoaXMuaGFuZGxlcilyZXR1cm4gdGhpcy5oYW5kbGVyO2Z1bmN0aW9uIGEo KXt2YXIgYz1nZSh0aGlzLnNjcm9sbF9sb2FkZXJfaWQpO2lmKCFjKXt0aGlzLm9u dmlzaWJsZS5yZW1vdmUoKTtyZXR1cm47fUNTUy5hZGRDbGFzcyhjLmZpcnN0Q2hp bGQsJ2FzeW5jX3NhdmluZycpO3ZhciBiPXRoaXMub3B0aW9ucy5oYW5kbGVyO3Ro aXMub3B0aW9ucy5oYW5kbGVyPWZ1bmN0aW9uKCl7QXJiaXRlci5pbmZvcm0oJ1Nj cm9sbGluZ1BhZ2VyL2xvYWRpbmdDb21wbGV0ZScpO2ImJmIuYXBwbHkobnVsbCxh cmd1bWVudHMpO307VUlQYWdlbGV0LmxvYWRGcm9tRW5kcG9pbnQodGhpcy5wYWdl bGV0X3NyYyx0aGlzLnRhcmdldF9pZCx0aGlzLmRhdGEsdGhpcy5vcHRpb25zKTt9 cmV0dXJuIGEuYmluZCh0aGlzKTt9LHNldEhhbmRsZXI6ZnVuY3Rpb24oYSl7dGhp cy5oYW5kbGVyPWE7fSxyZW1vdmVPblZpc2libGU6ZnVuY3Rpb24oKXt0aGlzLm9u dmlzaWJsZS5yZW1vdmUoKTt9fTsKZnVuY3Rpb24gU2VhcmNoRGF0YVNvdXJjZShi KXt0aGlzLl90b2tlbj1iLnRva2VufHwnJzt0aGlzLl9sYXp5b25sb2FkPWIubGF6 eW9ubG9hZD09PWZhbHNlP2ZhbHNlOnRydWU7dGhpcy5fbGVhbk9uQWxsVHlwZXM9 Yi5sZWFuT25BbGxUeXBlczt0aGlzLl9leHRyYVR5cGVzPWIuZXh0cmFUeXBlczt0 aGlzLl9idWNrZXRzPWIuYnVja2V0czt0aGlzLl9ub011bHRpRmV0Y2g9Yi5ub011 bHRpRmV0Y2h8fGZhbHNlO3ZhciBhPWIubWF4UmVzdWx0c3x8ODt0aGlzLnBhcmVu dC5jb25zdHJ1Y3QodGhpcyxiKTt0aGlzLl9udW1SZXN1bHRzPXttaW46MyxtYXg6 YX07dGhpcy5fZ2VuVGltZT1iLmdlblRpbWU7fUNsYXNzLmV4dGVuZChTZWFyY2hE YXRhU291cmNlLCdEYXRhU291cmNlJyk7U2VhcmNoRGF0YVNvdXJjZS5wcm90b3R5 cGU9e2luaXQ6ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5pbml0KCk7dGhpcy5fbGVh blBheWxvYWQ9bnVsbDt0aGlzLl9ib290c3RyYXBSZXF1ZXN0c1BlbmRpbmc9MDt0 aGlzLl9jcml0aWNhbE9ubHk9dHJ1ZTt0aGlzLl91cGRhdGVNYXhSZXN1bHRzKCk7 RXZlbnQubGlzdGVuKHdpbmRvdywncmVzaXplJyx0aGlzLl91cGRhdGVNYXhSZXN1 bHRzLmJpbmQodGhpcykpO30sZGlydHk6ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5k aXJ0eSgpO3RoaXMuX2ZldGNoT25Vc2VSZXF1ZXN0cz1bXTt9LGFzeW5jRXJyb3JI YW5kbGVyOmZ1bmN0aW9uKGEpe2lmKHdpbmRvdy5EaWFsb2cmJkRpYWxvZy5nZXRD dXJyZW50KCk9PW51bGwmJmEuZ2V0RXJyb3IoKT09MTQwMDAwMylBc3luY1Jlc3Bv bnNlLnZlcmJvc2VFcnJvckhhbmRsZXIoYSk7fSxmZXRjaDpmdW5jdGlvbihiLGEs Yyl7Yz1jfHx7fTtjLmZldGNoX3N0YXJ0PURhdGUubm93KCk7dGhpcy5wYXJlbnQu ZmV0Y2goYixhLGMpO30sZmV0Y2hIYW5kbGVyOmZ1bmN0aW9uKGUsYyl7dmFyIGQ9 ZS5nZXRQYXlsb2FkKCk7dmFyIGY9Y29weV9wcm9wZXJ0aWVzKHtmZXRjaF9lbmQ6 RGF0ZS5ub3coKX0sYyk7dmFyIGI9Zi52YWx1ZT9BcmJpdGVyLkJFSEFWSU9SX0VW RU5UOkFyYml0ZXIuQkVIQVZJT1JfUEVSU0lTVEVOVDtpZihjLnR5cGU9PSdsZWFu Jyl7dGhpcy5fbGVhblBheWxvYWQ9ZDt0aGlzLl9wcm9jZXNzTGVhbigpO31lbHNl e3RoaXMucGFyZW50LmZldGNoSGFuZGxlcihlLGMpO2lmKGMuYm9vdHN0cmFwJiYh ZS5nZXRSZXF1ZXN0KCkuZ2V0RGF0YSgpLm5vX2NhY2hlKWYuYnJvd3NlckNhY2hl SGl0PShkLnRpbWVzdGFtcDx0aGlzLl9nZW5UaW1lKTtpZihjLmJvb3RzdHJhcCYm IWQubm9fZGF0YSYmdGhpcy5fYm9vdHN0cmFwUmVxdWVzdHNQZW5kaW5nPjApe2Mu Ym9vdHN0cmFwPWZhbHNlOy0tdGhpcy5fYm9vdHN0cmFwUmVxdWVzdHNQZW5kaW5n OyF0aGlzLl9ib290c3RyYXBSZXF1ZXN0c1BlbmRpbmcmJnRoaXMuX2Jvb3RzdHJh cFBvc3RQcm9jZXNzKCk7fWlmKGQubm9fZGF0YXx8ZC50b2tlbiE9PXRoaXMuX3Rv a2VuKXt2YXIgYT1jb3B5X3Byb3BlcnRpZXMoe30sZS5nZXRSZXF1ZXN0KCkuZ2V0 RGF0YSgpKTtpZihhLmxhenkpe2RlbGV0ZSBhLmxhenk7YS50b2tlbj10aGlzLl90 b2tlbjt0aGlzLl9mZXRjaE9uVXNlKGEsYyk7fX19dGhpcy5pbmZvcm0oJ2VuZHBv aW50U3RhdHMnLGYsYik7fSxfYm9vdHN0cmFwUG9zdFByb2Nlc3M6ZnVuY3Rpb24o KXt2YXIgYT17dGltZTpEYXRlLm5vdygpfTt0aGlzLmluZm9ybSgnYm9vdHN0cmFw cGVkJyxhLEFyYml0ZXIuQkVIQVZJT1JfUEVSU0lTVEVOVCk7dGhpcy5fcHJvY2Vz c0xlYW4oKTt9LF9wcm9jZXNzTGVhbjpmdW5jdGlvbigpe2lmKHRoaXMuX2xlYW5Q YXlsb2FkKXt2YXIgYjt2YXIgYT10aGlzLl9sZWFuUGF5bG9hZC5lbnRyaWVzO2Zv cih2YXIgYyBpbiBhKXtiPXRoaXMuZ2V0RW50cnkoYyk7YiYmKGIuaW5kZXg9YVtj XSk7fXRoaXMuc2V0RXhjbHVzaW9ucyh0aGlzLl9sZWFuUGF5bG9hZC5ibG9ja2Vk KTt0aGlzLl9sZWFuUGF5bG9hZD1udWxsO319LF91cGRhdGVNYXhSZXN1bHRzOmZ1 bmN0aW9uKCl7dmFyIGE9d2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1 bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O3RoaXMuc2V0TWF4UmVzdWx0cyhNYXRo Lm1heCh0aGlzLl9udW1SZXN1bHRzLm1pbixNYXRoLm1pbih0aGlzLl9udW1SZXN1 bHRzLm1heCxNYXRoLmNlaWwoMisoKGEtMzcwKS81NikpKSkpO30sX2Jvb3RzdHJh cEZldGNoOmZ1bmN0aW9uKGMsYil7dmFyIGE9Y29weV9wcm9wZXJ0aWVzKGIsdGhp cy5ib290c3RyYXBEYXRhKTtpZih0aGlzLl9jcml0aWNhbE9ubHkmJnRoaXMuX2xh enlvbmxvYWQpYS5sYXp5PTE7dGhpcy5mZXRjaCh0aGlzLmJvb3RzdHJhcEVuZHBv aW50LGEse2Jvb3RzdHJhcDp0cnVlLHR5cGU6Y30pOysrdGhpcy5fYm9vdHN0cmFw UmVxdWVzdHNQZW5kaW5nO30sX2ZldGNoT25Vc2U6ZnVuY3Rpb24oYSxiKXtmb3Io dmFyIGMgaW4gdGhpcy5ib290c3RyYXBEYXRhKSFhLmhhc093blByb3BlcnR5KGMp JiYoYVtjXT10aGlzLmJvb3RzdHJhcERhdGFbY10pO2lmKHRoaXMuX2NyaXRpY2Fs T25seSl7dGhpcy5fZmV0Y2hPblVzZVJlcXVlc3RzLnB1c2goe2FyZ3M6YSxjdHg6 Yn0pO31lbHNlIHRoaXMuZmV0Y2godGhpcy5ib290c3RyYXBFbmRwb2ludCxhLGIp O30sX2ZldGNoTGVhbjpmdW5jdGlvbigpe3ZhciBhPXtmaWx0ZXI6Wyd1c2VyJ10s bm9fY2FjaGU6MX07aWYodGhpcy5fbGVhbk9uQWxsVHlwZXMpYT17bm9fY2FjaGU6 MX07YS5vcHRpb25zPSRBKGEub3B0aW9ucyk7YS5vcHRpb25zLnB1c2goJ2xlYW4n KTt0aGlzLl9mZXRjaE9uVXNlKGEse3R5cGU6J2xlYW4nfSk7fSxib290c3RyYXA6 ZnVuY3Rpb24oYil7aWYoIWIpe3RoaXMuX2NyaXRpY2FsT25seT1mYWxzZTt0aGlz Ll9mbHVzaEZldGNoT25Vc2VSZXF1ZXN0cygpO31pZih0aGlzLl9ib290c3RyYXBw ZWQpcmV0dXJuO3ZhciBjPXtmaWx0ZXI6WydldmVudCddLG5vX2NhY2hlOjF9O3Ro aXMuX2ZldGNoT25Vc2UoYyx7dHlwZTonZXZlbnQnfSk7dmFyIGQ9WydhcHAnLCdw YWdlJywnZ3JvdXAnLCdmcmllbmRsaXN0J107ZD1kLmNvbmNhdCh0aGlzLl9leHRy YVR5cGVzfHxbXSk7aWYodGhpcy5fbm9NdWx0aUZldGNoKXtkLnB1c2goJ3VzZXIn KTt0aGlzLl9ib290c3RyYXBGZXRjaCgndXNlcicse2ZpbHRlcjpkfSk7fWVsc2V7 dGhpcy5fYm9vdHN0cmFwRmV0Y2goJ290aGVyJyx7ZmlsdGVyOmR9KTtpZih0aGlz Ll9idWNrZXRzKXtmb3IodmFyIGU9MDtlPHRoaXMuX2J1Y2tldHMubGVuZ3RoOysr ZSl7dmFyIGE9e2ZpbHRlcjpbJ3VzZXInXSxidWNrZXRzOnRoaXMuX2J1Y2tldHNb ZV19O3RoaXMuX2Jvb3RzdHJhcEZldGNoKCd1c2VyJyxhKTt9fWVsc2UgdGhpcy5f Ym9vdHN0cmFwRmV0Y2goJ3VzZXInLHtmaWx0ZXI6Wyd1c2VyJ119KTt9dGhpcy5f ZmV0Y2hMZWFuKCk7dGhpcy5fYm9vdHN0cmFwcGVkPXRydWU7fSxfZmx1c2hGZXRj aE9uVXNlUmVxdWVzdHM6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLl9mZXRjaE9uVXNl UmVxdWVzdHMubGVuZ3RoO2Zvcih2YXIgYj0wO2I8YzsrK2Ipe3ZhciBhPXRoaXMu X2ZldGNoT25Vc2VSZXF1ZXN0c1tiXTt0aGlzLmZldGNoKHRoaXMuYm9vdHN0cmFw RW5kcG9pbnQsYS5hcmdzLGEuY3R4KTt9dGhpcy5fZmV0Y2hPblVzZVJlcXVlc3Rz PVtdO30sb25Mb2FkOmZ1bmN0aW9uKGEsYil7dGhpcy5pbmZvcm0oJ29ubG9hZCcs e3RpbWU6RGF0ZS5ub3coKX0sQXJiaXRlci5CRUhBVklPUl9QRVJTSVNURU5UKTtp ZihhKXRoaXMuYm9vdHN0cmFwLmJpbmQodGhpcyxiKS5kZWZlcigpO319OwpmdW5j dGlvbiBUeXBlYWhlYWRDb3JlKGEpe2NvcHlfcHJvcGVydGllcyh0aGlzLGEpO31D bGFzcy5taXhpbihUeXBlYWhlYWRDb3JlLCdBcmJpdGVyJyx7ZXZlbnRzOlsnYmx1 cicsJ2ZvY3VzJywndW5zZWxlY3QnXSxrZWVwRm9jdXNlZDp0cnVlLHJlc2V0T25T ZWxlY3Q6ZmFsc2UscmVzZXRPbktleXVwOnRydWUsc2V0VmFsdWVPblNlbGVjdDpm YWxzZSxxdWVyeVRpbWVvdXQ6MjUwLHByZXZlbnRGb2N1c0NoYW5nZU9uVGFiOmZh bHNlLGluaXQ6ZnVuY3Rpb24oYSxjLGIpe3RoaXMuaW5pdD1iYWdvZmhvbGRpbmc7 dGhpcy5kYXRhPWE7dGhpcy52aWV3PWM7dGhpcy5yb290PWI7dGhpcy5pbml0SW5w dXQoKTt0aGlzLmlucHV0V3JhcD1ET00uZmluZChiLCdkaXYud3JhcCcpO3RoaXMu aGlkZGVuSW5wdXQ9RE9NLmZpbmQoYiwnaW5wdXQuaGlkZGVuSW5wdXQnKTt0aGlz LnZhbHVlPScnO3RoaXMubmV4dFF1ZXJ5PW51bGw7dGhpcy5zZWxlY3RlZFRleHQ9 bnVsbDtpZih0aGlzLnNldFZhbHVlT25TZWxlY3QmJkNTUy5oYXNDbGFzcyh0aGlz LmlucHV0V3JhcCwnc2VsZWN0ZWQnKSl0aGlzLnNlbGVjdGVkVGV4dD10aGlzLmdl dFZhbHVlKCk7dGhpcy5pbml0VmlldygpO3RoaXMuaW5pdERhdGEoKTt0aGlzLmlu aXRFdmVudHMoKTt0aGlzLmluaXRUb2dnbGUoKTt0aGlzLl9leGNsdXNpb25zPVtd O30saW5pdElucHV0OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50PURPTS5maW5kKHRo aXMucm9vdCwnLnRleHRJbnB1dCcpO3ZhciBhPURPTS5zY3J5KHRoaXMuZWxlbWVu dCwnaW5wdXQnKVswXTtpZihhKXRoaXMuZWxlbWVudD1hO30saW5pdFZpZXc6ZnVu Y3Rpb24oKXt0aGlzLnZpZXcuc3Vic2NyaWJlKCdoaWdobGlnaHQnLGZ1bmN0aW9u KCl7dGhpcy5lbGVtZW50LmZvY3VzKCk7fS5iaW5kKHRoaXMpKTt0aGlzLnZpZXcu c3Vic2NyaWJlKCdzZWxlY3QnLGZ1bmN0aW9uKGEsYil7dGhpcy5zZWxlY3QoYi5z ZWxlY3RlZCk7fS5iaW5kKHRoaXMpKTt0aGlzLnZpZXcuc3Vic2NyaWJlKCdhZnRl clNlbGVjdCcsZnVuY3Rpb24oKXt0aGlzLmFmdGVyU2VsZWN0KCk7fS5iaW5kKHRo aXMpKTt9LGluaXREYXRhOmZ1bmN0aW9uKCl7dGhpcy5kYXRhLnN1YnNjcmliZSgn cmVzcG9uZCcsZnVuY3Rpb24oYSxiKXtpZihiLmZvcmNlRGlzcGxheXx8Yi52YWx1 ZT09dGhpcy5nZXRWYWx1ZSgpJiYhdGhpcy5lbGVtZW50LmRpc2FibGVkKXRoaXMu dmlldy5yZW5kZXIoYi52YWx1ZSxiLnJlc3VsdHMsYi5pc0FzeW5jKTt9LmJpbmQo dGhpcykpO3RoaXMuZGF0YS5zdWJzY3JpYmUoJ2FjdGl2aXR5JyxmdW5jdGlvbihh LGIpe3RoaXMuZmV0Y2hpbmc9Yi5hY3Rpdml0eTtpZighdGhpcy5mZXRjaGluZyl0 aGlzLm5leHRRdWVyeSYmdGhpcy5wZXJmb3JtUXVlcnkoKTt9LmJpbmQodGhpcykp O30saW5pdEV2ZW50czpmdW5jdGlvbigpe0V2ZW50Lmxpc3Rlbih0aGlzLnZpZXcu Z2V0RWxlbWVudCgpLHttb3VzZXVwOnRoaXMudmlld01vdXNldXAuYmluZCh0aGlz KSxtb3VzZWRvd246dGhpcy52aWV3TW91c2Vkb3duLmJpbmQodGhpcyl9KTt2YXIg YT17Ymx1cjpiaW5kKHRoaXMsJ2JsdXInKSxmb2N1czpiaW5kKHRoaXMsJ2ZvY3Vz JyksY2xpY2s6YmluZCh0aGlzLCdjbGljaycpLGtleXVwOmJpbmQodGhpcywna2V5 dXAnKSxrZXlkb3duOmJpbmQodGhpcywna2V5ZG93bicpfTtpZih1YS5maXJlZm94 KCkpYS50ZXh0PWEua2V5dXA7aWYodWEuZmlyZWZveCgpPDQpe2Eua2V5cHJlc3M9 YS5rZXlkb3duO2RlbGV0ZSBhLmtleWRvd247fUV2ZW50Lmxpc3Rlbih0aGlzLmVs ZW1lbnQsYSk7RXZlbnQubGlzdGVuKHRoaXMuZWxlbWVudCwna2V5cHJlc3MnLGJp bmQodGhpcywna2V5cHJlc3MnKSk7fSxpbml0VG9nZ2xlOmZ1bmN0aW9uKCl7dmFy IGI9dGhpcy5yb290LnBhcmVudE5vZGU7dmFyIGQ9Q1NTLmdldFN0eWxlKGIsJ3Bv c2l0aW9uJykhPSdzdGF0aWMnP2I6dGhpcy5yb290O3ZhciBjPXRoaXMudmlldzt2 YXIgYT0ndWlUeXBlYWhlYWRGb2N1c2VkJzt0aGlzLnN1YnNjcmliZSgnZm9jdXMn LGZ1bmN0aW9uKCl7Yy5zaG93KCk7Q1NTLmFkZENsYXNzKGQsYSk7fSk7dGhpcy5z dWJzY3JpYmUoJ2JsdXInLGZ1bmN0aW9uKCl7Yy5oaWRlKCk7Q1NTLnJlbW92ZUNs YXNzKGQsYSk7fSk7fSx2aWV3TW91c2Vkb3duOmZ1bmN0aW9uKCl7dGhpcy5zZWxl Y3Rpbmc9dHJ1ZTt9LHZpZXdNb3VzZXVwOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rp bmc9ZmFsc2U7fSxibHVyOmZ1bmN0aW9uKCl7aWYodGhpcy5zZWxlY3Rpbmcpe3Ro aXMuc2VsZWN0aW5nPWZhbHNlO3JldHVybjt9dGhpcy5pbmZvcm0oJ2JsdXInKTt9 LGNsaWNrOmZ1bmN0aW9uKCl7dmFyIGE9SW5wdXQuZ2V0U2VsZWN0aW9uKHRoaXMu ZWxlbWVudCk7aWYoYS5zdGFydD09YS5lbmQpdGhpcy5lbGVtZW50LnNlbGVjdCgp O30sZm9jdXM6ZnVuY3Rpb24oKXt0aGlzLmNoZWNrVmFsdWUoKTt0aGlzLmluZm9y bSgnZm9jdXMnKTt9LGtleXVwOmZ1bmN0aW9uKCl7aWYodGhpcy5yZXNldE9uS2V5 dXAmJiF0aGlzLmdldFZhbHVlKCkpdGhpcy52aWV3LnJlc2V0KCk7dGhpcy5jaGVj a1ZhbHVlKCk7fSxrZXlkb3duOmZ1bmN0aW9uKGV2ZW50KXtpZighdGhpcy52aWV3 LmlzVmlzaWJsZSgpfHx0aGlzLnZpZXcuaXNFbXB0eSgpKXt0aGlzLmNoZWNrVmFs dWUuYmluZCh0aGlzKS5kZWZlcigpO3JldHVybjt9c3dpdGNoKEV2ZW50LmdldEtl eUNvZGUoZXZlbnQpKXtjYXNlIEtFWVMuVEFCOnRoaXMuaGFuZGxlVGFiKGV2ZW50 KTtyZXR1cm47Y2FzZSBLRVlTLlVQOnRoaXMudmlldy5wcmV2KCk7YnJlYWs7Y2Fz ZSBLRVlTLkRPV046dGhpcy52aWV3Lm5leHQoKTticmVhaztjYXNlIEtFWVMuRVND OnRoaXMudmlldy5yZXNldCgpO2JyZWFrO2RlZmF1bHQ6dGhpcy5jaGVja1ZhbHVl LmJpbmQodGhpcykuZGVmZXIoKTtyZXR1cm47fWV2ZW50LmtpbGwoKTt9LGtleXBy ZXNzOmZ1bmN0aW9uKGV2ZW50KXtpZih0aGlzLnZpZXcuZ2V0U2VsZWN0aW9uKCkm JkV2ZW50LmdldEtleUNvZGUoZXZlbnQpPT1LRVlTLlJFVFVSTil7dGhpcy52aWV3 LnNlbGVjdCgpO2V2ZW50LmtpbGwoKTt9fSxoYW5kbGVUYWI6ZnVuY3Rpb24oZXZl bnQpe3RoaXMudmlldy5zZWxlY3QoKTt0aGlzLnByZXZlbnRGb2N1c0NoYW5nZU9u VGFiJiZldmVudC5raWxsKCk7fSxzZWxlY3Q6ZnVuY3Rpb24oYSl7aWYoYSYmdGhp cy5zZXRWYWx1ZU9uU2VsZWN0KXt0aGlzLnNldFZhbHVlKGEudGV4dCk7dGhpcy5z ZXRIaWRkZW5WYWx1ZShhLnVpZCk7dGhpcy5zZWxlY3RlZFRleHQ9YS50ZXh0O0NT Uy5hZGRDbGFzcyh0aGlzLmlucHV0V3JhcCwnc2VsZWN0ZWQnKTt9fSxhZnRlclNl bGVjdDpmdW5jdGlvbigpe3RoaXMua2VlcEZvY3VzZWQ/dGhpcy5lbGVtZW50LmZv Y3VzKCk6dGhpcy5lbGVtZW50LmJsdXIoKTt0aGlzLnJlc2V0T25TZWxlY3Q/dGhp cy5yZXNldCgpOnRoaXMudmlldy5yZXNldCgpO30sdW5zZWxlY3Q6ZnVuY3Rpb24o KXtpZih0aGlzLnNldFZhbHVlT25TZWxlY3Qpe3RoaXMuc2VsZWN0ZWRUZXh0PW51 bGw7Q1NTLnJlbW92ZUNsYXNzKHRoaXMuaW5wdXRXcmFwLCdzZWxlY3RlZCcpO310 aGlzLnNldEhpZGRlblZhbHVlKCk7dGhpcy5pbmZvcm0oJ3Vuc2VsZWN0Jyx0aGlz KTt9LHNldEVuYWJsZWQ6ZnVuY3Rpb24oYil7dmFyIGE9Yj09PWZhbHNlO3RoaXMu ZWxlbWVudC5kaXNhYmxlZD1hO0NTUy5jb25kaXRpb25DbGFzcyh0aGlzLnJvb3Qs J3VpVHlwZWFoZWFkRGlzYWJsZWQnLGEpO30scmVzZXQ6ZnVuY3Rpb24oKXt0aGlz LnVuc2VsZWN0KCk7dGhpcy5zZXRWYWx1ZSgpOyF0aGlzLmtlZXBGb2N1c2VkJiZJ bnB1dC5yZXNldCh0aGlzLmVsZW1lbnQpO3RoaXMudmlldy5yZXNldCgpO3RoaXMu aW5mb3JtKCdyZXNldCcpO30sZ2V0RWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0 aGlzLmVsZW1lbnQ7fSxzZXRFeGNsdXNpb25zOmZ1bmN0aW9uKGEpe3RoaXMuX2V4 Y2x1c2lvbnM9YTt9LGdldEV4Y2x1c2lvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5fZXhjbHVzaW9uczt9LHNldFZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMudmFsdWU9 dGhpcy5uZXh0UXVlcnk9YXx8Jyc7SW5wdXQuc2V0VmFsdWUodGhpcy5lbGVtZW50 LHRoaXMudmFsdWUpO30sc2V0SGlkZGVuVmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5o aWRkZW5JbnB1dC52YWx1ZT0oYXx8YT09PTApP2E6Jyc7QXJiaXRlci5pbmZvcm0o J0Zvcm0vY2hhbmdlJyx7bm9kZTp0aGlzLmhpZGRlbklucHV0fSk7fSxnZXRWYWx1 ZTpmdW5jdGlvbigpe3JldHVybiBJbnB1dC5nZXRWYWx1ZSh0aGlzLmVsZW1lbnQp O30sZ2V0SGlkZGVuVmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWRkZW5J bnB1dC52YWx1ZXx8Jyc7fSxjaGVja1ZhbHVlOmZ1bmN0aW9uKCl7dmFyIGM9dGhp cy5nZXRWYWx1ZSgpO2lmKGM9PXRoaXMudmFsdWUpcmV0dXJuO2lmKHRoaXMuc2Vs ZWN0ZWRUZXh0JiZ0aGlzLnNlbGVjdGVkVGV4dCE9Yyl0aGlzLnVuc2VsZWN0KCk7 dmFyIGI9RGF0ZS5ub3coKTt2YXIgYT1iLXRoaXMudGltZTt0aGlzLnRpbWU9Yjt0 aGlzLnZhbHVlPXRoaXMubmV4dFF1ZXJ5PWM7dGhpcy5wZXJmb3JtUXVlcnkoYSk7 fSxwZXJmb3JtUXVlcnk6ZnVuY3Rpb24oYSl7aWYodGhpcy5zZWxlY3RlZFRleHQp cmV0dXJuO2E9YXx8MDtpZih0aGlzLmZldGNoaW5nJiZhPHRoaXMucXVlcnlUaW1l b3V0KXt0aGlzLmRhdGEucXVlcnkodGhpcy5uZXh0UXVlcnksdHJ1ZSx0aGlzLl9l eGNsdXNpb25zKTt9ZWxzZXt0aGlzLmRhdGEucXVlcnkodGhpcy5uZXh0UXVlcnks ZmFsc2UsdGhpcy5fZXhjbHVzaW9ucyk7dGhpcy5uZXh0UXVlcnk9bnVsbDt9fX0p OwpmdW5jdGlvbiBTZWFyY2hUeXBlYWhlYWRDb3JlKGEpe3RoaXMucGFyZW50LmNv bnN0cnVjdCh0aGlzLGEpO31DbGFzcy5leHRlbmQoU2VhcmNoVHlwZWFoZWFkQ29y ZSwnVHlwZWFoZWFkQ29yZScpO1NlYXJjaFR5cGVhaGVhZENvcmUucHJvdG90eXBl PXtpbml0OmZ1bmN0aW9uKGEsZixkKXt0aGlzLnBhcmVudC5pbml0KGEsZixkKTt2 YXIgYj1QYXJlbnQuYnlUYWcoZCwnZm9ybScpLGM9dGhpcy5yZXNldC5iaW5kKHRo aXMpO2lmKGIpe3ZhciBlPURPTS5maW5kKGIsJ2lucHV0LnNlYXJjaF9zaWRfaW5w dXQnKTtFdmVudC5saXN0ZW4oYiwnc3VibWl0JyxmdW5jdGlvbigpe2lmKHRoaXMu ZGF0YSYmdGhpcy5kYXRhLnF1ZXJ5RGF0YSllLnZhbHVlPXRoaXMuZGF0YS5xdWVy eURhdGEuc2lkO2MuZGVmZXIoKTt9LmJpbmQodGhpcyksRXZlbnQuUHJpb3JpdHku VVJHRU5UKTt9fSxzZWxlY3Q6ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KCk7dGhpcy5l bGVtZW50LmZvY3VzKCk7KGZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmJsdXIoKTt9 KS5iaW5kKHRoaXMpLmRlZmVyKCk7fSxoYW5kbGVUYWI6ZnVuY3Rpb24oZXZlbnQp e3ZhciBhPXRoaXMudmlldy5nZXRRdWVyeVN1Z2dlc3Rpb24odGhpcy52YWx1ZSk7 aWYoYSl7SW5wdXQuc2V0VmFsdWUodGhpcy5lbGVtZW50LGEpO3RoaXMuY2hlY2tW YWx1ZSgpO2V2ZW50LmtpbGwoKTt9ZWxzZSB0aGlzLnBhcmVudC5oYW5kbGVUYWIo ZXZlbnQpO319OwpmdW5jdGlvbiBTZWFyY2hUeXBlYWhlYWRSZWNvcmRlcihhKXt0 aGlzLmluaXQoYSk7dGhpcy5pbml0RXZlbnRzKCk7fVNlYXJjaFR5cGVhaGVhZFJl Y29yZGVyLnByb3RvdHlwZT17X2VuZFBvaW50OicvYWpheC90eXBlYWhlYWQvcmVj b3JkX21ldHJpY3MucGhwJyxpbml0OmZ1bmN0aW9uKGEpe3RoaXMuY29yZT1hLmdl dENvcmUoKTt0aGlzLmRhdGE9YS5nZXREYXRhKCk7dGhpcy52aWV3PWEuZ2V0Vmll dygpO3RoaXMuZWxlbWVudD10aGlzLmNvcmUuZ2V0RWxlbWVudCgpO3RoaXMuaW5p dFRpbWU9RGF0ZS5ub3coKTt0aGlzLl9vbmxvYWRUaW1lPTA7dGhpcy5pbml0U3Rh cnRUaW1lPSQoJ3NlYXJjaF9maXJzdF9mb2N1cycpLnZhbHVlO3RoaXMuYm9vdHN0 cmFwU3RhdHM9e2Jvb3RzdHJhcHBlZDowfTt0aGlzLl9yZXNldCgpO30sX3Jlc2V0 OmZ1bmN0aW9uKCl7dGhpcy5zdGF0cz17fTt0aGlzLmF2Z1N0YXRzPXt9O3RoaXMu YXBwZW5kU3RhdHM9e307dGhpcy5fYmFja3NwYWNpbmc9ZmFsc2U7dGhpcy5faW5m bGlnaHRSZXF1ZXN0cz17fTt2YXIgYT1NYXRoLnJhbmRvbSgpO3RoaXMuZGF0YS5z ZXRRdWVyeURhdGEoe3NpZDphfSk7dGhpcy52aWV3LnNldFNpZChhKTt0aGlzLnJl Y29yZFN0YXQoJ3NpZCcsYSk7fSxpbml0RXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5j b3JlLnN1YnNjcmliZSgnZm9jdXMnLGZ1bmN0aW9uKGV2ZW50KXtpZighdGhpcy5z dGF0c1snc2Vzc2lvbl9zdGFydF90aW1lJ10pdGhpcy5yZWNvcmRTdGF0KCdzZXNz aW9uX3N0YXJ0X3RpbWUnLERhdGUubm93KCkpO30uYmluZCh0aGlzKSk7dGhpcy5j b3JlLnN1YnNjcmliZSgnYmx1cicsZnVuY3Rpb24oZXZlbnQpe3ZhciBiPURhdGUu bm93KCk7Zm9yKHZhciBkIGluIHRoaXMuX2luZmxpZ2h0UmVxdWVzdHMpe3ZhciBj PXRoaXMuX2luZmxpZ2h0UmVxdWVzdHNbZF07dmFyIGE9Yi1jO3RoaXMucmVjb3Jk QXZnU3RhdCgnc2VhcmNoX2VuZHBvaW50X21zX2Zyb21fanMnLGEpO310aGlzLnJl Y29yZFN0YXQoJ3Nlc3Npb25fZW5kX3RpbWUnLGIpO3RoaXMuc3VibWl0KCk7fS5i aW5kKHRoaXMpKTt0aGlzLnZpZXcuc3Vic2NyaWJlKCdzZWxlY3QnLGZ1bmN0aW9u KGEsYil7dGhpcy5yZWNvcmRTZWxlY3RJbmZvKGIpO30uYmluZCh0aGlzKSk7dGhp cy52aWV3LnN1YnNjcmliZSgncmVuZGVyJyxmdW5jdGlvbihhLGIpe3RoaXMucmVj b3JkUmVuZGVyKGIpO30uYmluZCh0aGlzKSk7dGhpcy5kYXRhLnN1YnNjcmliZSgn YWN0aXZpdHknLGZ1bmN0aW9uKGEsYil7dGhpcy5yZWNvcmRTdGF0KCdwZW5kaW5n X3JlcXVlc3QnLGIuYWN0aXZpdHkpO30uYmluZCh0aGlzKSk7dGhpcy5kYXRhLnN1 YnNjcmliZSgnYmVmb3JlUXVlcnknLGZ1bmN0aW9uKGEsYil7aWYoIWIudmFsdWUp cmV0dXJuO2lmKCF0aGlzLnN0YXRzLmZpcnN0X3F1ZXJ5X3RpbWUpdGhpcy5yZWNv cmRTdGF0KCdmaXJzdF9xdWVyeV90aW1lJyxEYXRlLm5vdygpKTt0aGlzLnF1ZXJ5 PWIudmFsdWU7dGhpcy5yZWNvcmRDb3VudFN0YXQoJ251bV9xdWVyaWVzJyk7fS5i aW5kKHRoaXMpKTt0aGlzLmRhdGEuc3Vic2NyaWJlKCdxdWVyeUVuZHBvaW50Jyxm dW5jdGlvbihhLGIpe3RoaXMucmVjb3JkQ291bnRTdGF0KCdudW1fc2VhcmNoX2Fq YXhfcmVxdWVzdHMnKTt0aGlzLnJlY29yZEF2Z1N0YXQoJ2VuZHBvaW50X3F1ZXJ5 X2xlbmd0aCcsYi52YWx1ZS5sZW5ndGgpO3RoaXMuX2luZmxpZ2h0UmVxdWVzdHNb Yi52YWx1ZV09RGF0ZS5ub3coKTt9LmJpbmQodGhpcykpO3RoaXMuZGF0YS5zdWJz Y3JpYmUoJ29ubG9hZCcsZnVuY3Rpb24oYSxiKXt0aGlzLl9vbmxvYWRUaW1lPWIu dGltZTt9LmJpbmQodGhpcykpO3RoaXMuZGF0YS5zdWJzY3JpYmUoJ2Jvb3RzdHJh cHBlZCcsZnVuY3Rpb24oYSxiKXt0aGlzLmJvb3RzdHJhcFN0YXRzLmVuZFRpbWU9 Yi50aW1lO3RoaXMuYm9vdHN0cmFwU3RhdHMuYm9vdHN0cmFwcGVkPTE7fS5iaW5k KHRoaXMpKTt0aGlzLmRhdGEuc3Vic2NyaWJlKCdlbmRwb2ludFN0YXRzJyxmdW5j dGlvbihhLGMpe3ZhciBiPWMuZmV0Y2hfZW5kLWMuZmV0Y2hfc3RhcnQ7aWYoYy52 YWx1ZSl7dGhpcy5yZWNvcmRBdmdTdGF0KCdzZWFyY2hfZW5kcG9pbnRfbXNfZnJv bV9qcycsYik7fWVsc2UgdGhpcy5ib290c3RyYXBTdGF0c1tjLnR5cGVdPWI7aWYo dHlwZW9mIGMuYnJvd3NlckNhY2hlSGl0IT0ndW5kZWZpbmVkJyl0aGlzLnJlY29y ZENvdW50U3RhdChjLmJyb3dzZXJDYWNoZUhpdD8nYm9vdHN0cmFwX2NhY2hlaGl0 cyc6J2Jvb3RzdHJhcF9jYWNoZW1pc3NlcycpO2lmKHRoaXMuX2luZmxpZ2h0UmVx dWVzdHNbYy52YWx1ZV0pZGVsZXRlIHRoaXMuX2luZmxpZ2h0UmVxdWVzdHNbYy52 YWx1ZV07fS5iaW5kKHRoaXMpKTt0aGlzLmRhdGEuc3Vic2NyaWJlKCdxdWVyeScs ZnVuY3Rpb24oYSxiKXt0aGlzLnJlY29yZEF2Z1N0YXQoJ251bV9yZXN1bHRzX2Zy b21fY2FjaGUnLGIucmVzdWx0cy5sZW5ndGgpO30uYmluZCh0aGlzKSk7RXZlbnQu bGlzdGVuKHRoaXMuZWxlbWVudCwna2V5ZG93bicsZnVuY3Rpb24oZXZlbnQpe2lm KEV2ZW50LmdldEtleUNvZGUoZXZlbnQpPT1LRVlTLkJBQ0tTUEFDRSl7aWYoIXRo aXMuX2JhY2tzcGFjaW5nKXt0aGlzLl9iYWNrc3BhY2luZz10cnVlO3RoaXMucmVj b3JkQXBwZW5kU3RhdCgnYmVmb3JlX2JhY2tzcGFjZV9xdWVyaWVzJyx0aGlzLnF1 ZXJ5KTt9fWVsc2UgdGhpcy5fYmFja3NwYWNpbmc9ZmFsc2U7fS5iaW5kKHRoaXMp KTt9LHJlY29yZFN0YXQ6ZnVuY3Rpb24oYSxiKXt0aGlzLnN0YXRzW2FdPWI7fSxy ZWNvcmRDb3VudFN0YXQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5zdGF0c1thXTt0 aGlzLnN0YXRzW2FdPWI/YisxOjE7fSxyZWNvcmRBdmdTdGF0OmZ1bmN0aW9uKGEs Yil7aWYodGhpcy5hdmdTdGF0c1thXSl7dGhpcy5hdmdTdGF0c1thXVswXSs9Yjsr K3RoaXMuYXZnU3RhdHNbYV1bMV07fWVsc2UgdGhpcy5hdmdTdGF0c1thXT1bYiwx XTt9LHJlY29yZEFwcGVuZFN0YXQ6ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5hcHBl bmRTdGF0cy5oYXNPd25Qcm9wZXJ0eShhKSl0aGlzLmFwcGVuZFN0YXRzW2FdPVtd O3RoaXMuYXBwZW5kU3RhdHNbYV0ucHVzaChiKTt9LHJlY29yZFJlbmRlcjpmdW5j dGlvbihhKXt0aGlzLnJlc3VsdHM9YS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJu IGIudWlkIT0nc2VhcmNoJyYmYi50eXBlIT0naGVhZGVyJzt9KTtpZih0aGlzLnJl c3VsdHMubGVuZ3RoPjAmJiF0aGlzLnN0YXRzLmZpcnN0X3Jlc3VsdF90aW1lKXRo aXMucmVjb3JkU3RhdCgnZmlyc3RfcmVzdWx0X3RpbWUnLERhdGUubm93KCkpO30s cmVjb3JkU2VsZWN0SW5mbzpmdW5jdGlvbihjKXt2YXIgZj1jLnNlbGVjdGVkO3Zh ciBiPWMuaW5kZXgtZi5ncm91cEluZGV4LTE7dmFyIGQ9e2hyZWY6Zi5wYXRofTt2 YXIgYT1mLmRhdGFHVD97Z3Q6SlNPTi5wYXJzZShmLmRhdGFHVCl9Ont9O3VzZXJf YWN0aW9uKCdjbGljaycsZCxudWxsLG51bGwsYSk7aWYoZi51aWQ9PSdzZWFyY2gn KXt0aGlzLnJlY29yZFN0YXQoJ3NlbGVjdGVkX3NlYXJjaCcsMSk7fWVsc2V7dmFy IGc9Zi5yYW5rVHlwZXx8Zi5yZW5kZXJfdHlwZXx8Zi50eXBlO3ZhciBlPShnPT0n ZnJpZW5kJz8ndXNlcic6Zyk7dGhpcy5yZWNvcmRTdGF0KCdzZWxlY3RlZF8nK2Us MSk7dGhpcy5yZWNvcmRTdGF0KCdzZWxlY3RlZF9wb3NpdGlvbicsYik7dGhpcy5y ZWNvcmRTdGF0KCdzZWxlY3RlZF90eXBlJyxnKTt0aGlzLnJlY29yZFN0YXQoJ3Nl bGVjdGVkX25hbWVfbGVuZ3RoJyxmLnRleHQubGVuZ3RoKTt0aGlzLnJlY29yZFN0 YXQoJ3NlbGVjdGVkX2lkJyxmLnVpZCk7dGhpcy5yZWNvcmRTdGF0KCdzZWxlY3Rl ZF9kZWdyZWUnLGYuYm9vdHN0cmFwcGVkPzE6Mik7fXRoaXMucmVjb3JkU3RhdCgn c2VsZWN0ZWRfd2l0aF9tb3VzZScsYy5jbGlja2VkPzE6MCk7fSxfZGF0YVRvU3Vi bWl0OmZ1bmN0aW9uKCl7dGhpcy5yZWNvcmRTdGF0KCdjYW5kaWRhdGVfcmVzdWx0 cycsdGhpcy5idWlsZFJlc3VsdHMoKSk7dGhpcy5yZWNvcmRTdGF0KCdxdWVyeScs dGhpcy5xdWVyeSk7dGhpcy5yZWNvcmRTdGF0KCdpbml0X3RpbWUnLHRoaXMuaW5p dFRpbWUpO2lmKHRoaXMuaW5pdFN0YXJ0VGltZSl7dGhpcy5yZWNvcmRTdGF0KCdp bml0X3N0YXJ0X3RpbWUnLHRoaXMuaW5pdFN0YXJ0VGltZSk7dGhpcy5yZWNvcmRT dGF0KCdvbmxvYWRfdGltZScsdGhpcy5fb25sb2FkVGltZSk7dGhpcy5pbml0U3Rh cnRUaW1lPTA7fXRoaXMucmVjb3JkU3RhdCgnYm9vdHN0cmFwcGVkJyx0aGlzLmJv b3RzdHJhcFN0YXRzLmJvb3RzdHJhcHBlZCk7aWYodGhpcy5ib290c3RyYXBTdGF0 cy5lbmRUaW1lKXt0aGlzLnJlY29yZFN0YXQoJ2Jvb3RzdHJhcHBlZF90aW1lJyx0 aGlzLmJvb3RzdHJhcFN0YXRzLmVuZFRpbWUpO3RoaXMucmVjb3JkU3RhdCgndXNl cl9ib290c3RyYXBfbXMnLHRoaXMuYm9vdHN0cmFwU3RhdHMudXNlcik7dGhpcy5y ZWNvcmRTdGF0KCdvdGhlcl9ib290c3RyYXBfbXMnLHRoaXMuYm9vdHN0cmFwU3Rh dHMub3RoZXIpO3RoaXMuYm9vdHN0cmFwU3RhdHMuZW5kVGltZT0wO310aGlzLnJl Y29yZFN0YXQoJ21heF9yZXN1bHRzJyx0aGlzLmRhdGEuX21heFJlc3VsdHMpO3Zh ciBiPXRoaXMuc3RhdHM7Zm9yKHZhciBkIGluIHRoaXMuYXZnU3RhdHMpe3ZhciBj PXRoaXMuYXZnU3RhdHNbZF07YltkXT1jWzBdL2NbMV07fWZvcih2YXIgYSBpbiB0 aGlzLmFwcGVuZFN0YXRzKWJbYV09SlNPTi5zdHJpbmdpZnkodGhpcy5hcHBlbmRT dGF0c1thXSk7cmV0dXJuIGI7fSxidWlsZFJlc3VsdHM6ZnVuY3Rpb24oKXt2YXIg YT0odGhpcy5yZXN1bHRzfHxbXSkubWFwKGZ1bmN0aW9uKGQsYyl7dmFyIGU9ZC5y YW5rVHlwZXx8ZC5yZW5kZXJfdHlwZXx8ZC50eXBlO3ZhciBiPWQuYm9vdHN0cmFw cGVkPzE6MDtpZih0eXBlb2YgZC5ncm91cEluZGV4PT0nbnVtYmVyJylyZXR1cm4g W2QuZ3JvdXBJbmRleCxkLmluZGV4SW5Hcm91cCxkLnVpZCxlLGJdO3JldHVybiBb MCxjLGQudWlkLGUsYl07fSk7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGEpO30sc3Vi bWl0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fZGF0YVRvU3VibWl0KCk7aWYoY291 bnQoYSk+MCluZXcgQXN5bmNSZXF1ZXN0KCkuc2V0VVJJKHRoaXMuX2VuZFBvaW50 KS5zZXRNZXRob2QoJ1BPU1QnKS5zZXREYXRhKHtzdGF0czphfSkuc2V0T3B0aW9u KCdoYW5kbGVFcnJvckFmdGVyVW5sb2FkJyx0cnVlKS5zZXRFcnJvckhhbmRsZXIo ZnVuY3Rpb24oYil7YS5yZXRyeT10cnVlO25ldyBBc3luY1JlcXVlc3QoKS5zZXRV UkkodGhpcy5fZW5kUG9pbnQpLnNldE1ldGhvZCgnUE9TVCcpLnNldERhdGEoe3N0 YXRzOmF9KS5zZXRPcHRpb24oJ2FzeW5jaHJvbm91cycsZmFsc2UpLnNlbmQoKTt9 LmJpbmQodGhpcykpLnNlbmQoKTt0aGlzLl9yZXNldCgpO319OwpmdW5jdGlvbiBC dWNrZXRlZFR5cGVhaGVhZFZpZXcoYSxiKXt0aGlzLnBhcmVudC5jb25zdHJ1Y3Qo dGhpcyxhLGIpO31DbGFzcy5leHRlbmQoQnVja2V0ZWRUeXBlYWhlYWRWaWV3LCdU eXBlYWhlYWRWaWV3Jyk7QnVja2V0ZWRUeXBlYWhlYWRWaWV3LnByb3RvdHlwZT17 cmVuZGVyOmZ1bmN0aW9uKGMsYSxiKXthPXRoaXMuYnVpbGRCdWNrZXRzKGMsYSk7 cmV0dXJuIHRoaXMucGFyZW50LnJlbmRlcihjLGEsYik7fSxoaWdobGlnaHQ6ZnVu Y3Rpb24oYSxiKXtpZihhPT0tMSYmdGhpcy5pbmRleCE9PTApYT10aGlzLmluZGV4 O2lmKGE+PTAmJmE8dGhpcy5pdGVtcy5sZW5ndGgmJnRoaXMucmVzdWx0c1thXS50 eXBlPT0naGVhZGVyJylhPWErMTt0aGlzLnBhcmVudC5oaWdobGlnaHQoYSxiKTt9 LGJ1aWxkQnVja2V0czpmdW5jdGlvbihpLGYpe2lmKCF0aGlzLnR5cGVPYmplY3Rz KXJldHVybiBmO3ZhciBiPVtdO3ZhciBoPXt9O2Zvcih2YXIgZD0wO2Q8Zi5sZW5n dGg7KytkKXt2YXIgYz1mW2RdO3ZhciBnPWMucmVuZGVyX3R5cGV8fGMudHlwZTtp ZighaC5oYXNPd25Qcm9wZXJ0eShnKSl7aFtnXT1iLmxlbmd0aDtiLnB1c2goW3Ro aXMuYnVpbGRCdWNrZXRIZWFkZXIoZyldKTt9Yy5jbGFzc05hbWVzPWc7Yy5ncm91 cEluZGV4PWhbZ107Yy5pbmRleEluR3JvdXA9YltjLmdyb3VwSW5kZXhdLmxlbmd0 aC0xO2JbYy5ncm91cEluZGV4XS5wdXNoKGMpO312YXIgYT1bXTtmb3IodmFyIGU9 MDtlPGIubGVuZ3RoOysrZSlhPWEuY29uY2F0KGJbZV0pO3JldHVybiBhO30sYnVp bGRCdWNrZXRIZWFkZXI6ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy50eXBlT2JqZWN0 c1tiXTtpZihhLm1hcmt1cCl7YS50ZXh0PWEubWFya3VwO2RlbGV0ZSBhLm1hcmt1 cDt9cmV0dXJuIHRoaXMudHlwZU9iamVjdHNbYl07fSxidWlsZFJlc3VsdHM6ZnVu Y3Rpb24oYil7dmFyIGE9dGhpcy5wYXJlbnQuYnVpbGRSZXN1bHRzKGIpO3JldHVy biAkTignZGl2Jyx7Y2xhc3NOYW1lOididWNrZXRlZCd9LFthXSk7fSxzZWxlY3Q6 ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5yZXN1bHRzW3RoaXMuaW5kZXhdO2lmKGIm JmIudHlwZSE9J2hlYWRlcicpdGhpcy5wYXJlbnQuc2VsZWN0KGEpO30sZ2V0RGVm YXVsdEluZGV4OmZ1bmN0aW9uKGMpe3ZhciBhPSh0aGlzLmF1dG9TZWxlY3QmJiF0 aGlzLmRpc2FibGVBdXRvU2VsZWN0KTt2YXIgYj1jLmxlbmd0aD09PTA/LTE6KGNb MF0udHlwZT09J2hlYWRlcic/MTowKTtyZXR1cm4gdGhpcy5pbmRleDwwJiYhYT8t MTpiO30scHJldjpmdW5jdGlvbigpe3ZhciBhPXRoaXMucmVzdWx0c1t0aGlzLmlu ZGV4LTFdO2lmKGEmJmEudHlwZT09J2hlYWRlcicpdGhpcy5pbmRleC0tO3JldHVy biB0aGlzLnBhcmVudC5wcmV2KCk7fSxuZXh0OmZ1bmN0aW9uKCl7dmFyIGE9dGhp cy5yZXN1bHRzW3RoaXMuaW5kZXgrMV07aWYoYSYmYS50eXBlPT0naGVhZGVyJyl0 aGlzLmluZGV4Kys7cmV0dXJuIHRoaXMucGFyZW50Lm5leHQoKTt9fTsKZnVuY3Rp b24gU2VhcmNoVHlwZWFoZWFkVmlldyhhLGIpe3RoaXMucGFyZW50LmNvbnN0cnVj dCh0aGlzLGEsYik7fUNsYXNzLmV4dGVuZChTZWFyY2hUeXBlYWhlYWRWaWV3LCdC dWNrZXRlZFR5cGVhaGVhZFZpZXcnKTtTZWFyY2hUeXBlYWhlYWRWaWV3LnByb3Rv dHlwZT17aWdub3JlQ2xpY2s6ZnVuY3Rpb24oZXZlbnQpe2V2ZW50LnByZXZlbnQo KTt9LHNob3VsZFNob3dTZWVNb3JlOnRydWUscXVlcnlEYXRhOntpbml0OidxdWlj ayd9LGJ1aWxkQnVja2V0czpmdW5jdGlvbihjLGIpe3ZhciBhPWIubGVuZ3RoO2I9 dGhpcy5wYXJlbnQuYnVpbGRCdWNrZXRzKGMsYik7aWYoYyYmdGhpcy5zaG91bGRT aG93U2VlTW9yZSliLnB1c2godGhpcy5idWlsZFNlZU1vcmUoYyxhKSk7cmV0dXJu IGI7fSxidWlsZFNlZU1vcmU6ZnVuY3Rpb24oZSxjKXt2YXIgZD1jPjA/X3R4KCJ7 cXVlcnl9IGlcdTAwZTdpbiBkYWhhIGZhemxhIHNvbnVcdTAwZTcgZ1x1MDBmNnIi LHtxdWVyeTplfSk6X3R4KCJ7cXVlcnl9IGlcdTAwZTdpbiBzb251XHUwMGU3bGFy XHUwMTMxIGdcdTAwZjZyIix7cXVlcnk6ZX0pO3ZhciBhPWM9PTE/IkVuIHlha1x1 MDEzMW4gc29udVx1MDBlNyBnXHUwMGY2c3RlcmlsaXlvciI6X3R4KCJFbiB5YWtc dTAxMzFuIHtudW1iZXJ9IHNvbnVcdTAwZTcgZ1x1MDBmNnN0ZXJpbGl5b3IiLHtu dW1iZXI6Y30pO3ZhciBiPSROKCdsaScse2NsYXNzTmFtZTonY2FsbHRvYWN0aW9u J30sWyROKCdhJyx7aHJlZjp0aGlzLmdldEVuZHBvaW50KGUpLHJlbDonaWdub3Jl J30sWyROKCdzcGFuJyx7Y2xhc3NOYW1lOid0ZXh0J30sWyROKCdzcGFuJyx7Y2xh c3NOYW1lOidzZWVNb3JlJ30sW2QsJE4oJ3NwYW4nLHtjbGFzc05hbWU6J2Fycm93 J30pXSksJE4oJ3NwYW4nLHtjbGFzc05hbWU6J3N1YnRleHQnfSxbYV0pXSldKV0p O3JldHVybiB7dWlkOidzZWFyY2gnLG5vZGU6YixzZWFyY2g6dHJ1ZX07fSxzZWFy Y2hQYWdlUXVlcnlEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiBjb3B5X3Byb3BlcnRp ZXMoe3E6YX0sdGhpcy5xdWVyeURhdGF8fHt9KTt9LHNlbGVjdDpmdW5jdGlvbihi KXt2YXIgZD10aGlzLmluZGV4O3ZhciBlPXRoaXMucmVzdWx0c1tkXTtpZighZXx8 ZS50eXBlPT0naGVhZGVyJylyZXR1cm47dmFyIGM9dGhpcy5pdGVtc1tkXTt2YXIg YT1ET00uc2NyeShjLCdhJylbMF07aWYoZS5zb25nKXtpZihhKU11c2ljRXZlbnRz LmluZm9ybShNdXNpY0NvbnN0YW50cy5NVVNJQ19CVVRUT04uQUNUSVZBVEUsYSk7 YiYmdGhpcy5pbmZvcm0oJ2hpZ2hsaWdodCcse2luZGV4OmQsc2VsZWN0ZWQ6ZX0p O31lbHNle3RoaXMucGFyZW50LnNlbGVjdChiKTtpZihhJiZhLmhyZWYpaWYoYS50 YXJnZXQ9PSdfYmxhbmsnKXt3aW5kb3cub3BlbihhLmhyZWYpO31lbHNlIGdvVVJJ KGEuaHJlZik7fX0sc2V0U2lkOmZ1bmN0aW9uKGEpe3RoaXMucXVlcnlEYXRhLnRh cz1hO30sZ2V0RW5kcG9pbnQ6ZnVuY3Rpb24oYyl7dmFyIGI9UGFyZW50LmJ5VGFn KHRoaXMuZWxlbWVudCwnZm9ybScpO3ZhciBhPUZvcm0uZ2V0QXR0cmlidXRlKGIs J2FjdGlvbicpO3JldHVybiBVUkkoYSkuYWRkUXVlcnlEYXRhKHRoaXMuc2VhcmNo UGFnZVF1ZXJ5RGF0YShjKSkrJyc7fSxzaG93OmZ1bmN0aW9uKCl7QXJiaXRlci5p bmZvcm0oJ2xheWVyX3Nob3duJyx7dHlwZTonU2VhcmNoVHlwZWFoZWFkJ30pO3Ro aXMucGFyZW50LnNob3coKTt9LGhpZGU6ZnVuY3Rpb24oKXtBcmJpdGVyLmluZm9y bSgnbGF5ZXJfaGlkZGVuJyx7dHlwZTonU2VhcmNoVHlwZWFoZWFkJ30pO3RoaXMu cGFyZW50LmhpZGUoKTt9LGdldFF1ZXJ5U3VnZ2VzdGlvbjpmdW5jdGlvbihjKXt2 YXIgYT10aGlzLnJlc3VsdHNbdGhpcy5pbmRleF07dmFyIGI9YSYmYS50eXBlIT0n aGVhZGVyJz9hLnRleHQudG9Mb3dlckNhc2UoKTonJztyZXR1cm4gYj09Yy50b0xv d2VyQ2FzZSgpPycnOmI7fX07CmFkZF9wcm9wZXJ0aWVzKCdUeXBlYWhlYWRCZWhh dmlvcnMnLHtidWlsZEJlc3RBdmFpbGFibGVOYW1lczpmdW5jdGlvbihhKXt2YXIg Yj1hLmdldFZpZXcoKTtiLnN1YnNjcmliZSgnYmVmb3JlUmVuZGVyJyxmdW5jdGlv bihjLGUpe3ZhciBoPWUudmFsdWU7Zm9yKHZhciBkPTA7ZDxlLnJlc3VsdHMubGVu Z3RoOysrZCl7dmFyIGc9ZS5yZXN1bHRzW2RdO2lmKGcuYWx0ZXJuYXRlX25hbWVz PT1udWxsKWNvbnRpbnVlO2lmKFR5cGVhaGVhZFV0aWwuaXNRdWVyeU1hdGNoKGgs Zy5kZWZhdWx0X25hbWUpKXtnLnRleHQ9Zy5kZWZhdWx0X25hbWU7cmV0dXJuO31m b3IodmFyIGY9MDtmPGcuYWx0ZXJuYXRlX25hbWVzLmxlbmd0aDtmKyspaWYoVHlw ZWFoZWFkVXRpbC5pc1F1ZXJ5TWF0Y2goaCxnLmFsdGVybmF0ZV9uYW1lc1tmXSkp e2cudGV4dD1nLmFsdGVybmF0ZV9uYW1lc1tmXTtyZXR1cm47fWcudGV4dD1nLmRl ZmF1bHRfbmFtZTt9fSk7fX0pOwphZGRfcHJvcGVydGllcygnVHlwZWFoZWFkQmVo YXZpb3JzJyx7aW5pdEZpbHRlcnM6ZnVuY3Rpb24oYSl7QXJiaXRlci5zdWJzY3Jp YmUoJ3NlYXJjaC90eXBlYWhlYWQvdXBkYXRlRmlsdGVyJyxmdW5jdGlvbihjLGIp e2EuZ2V0VmlldygpLnF1ZXJ5RGF0YS50eXBlPWIuZmlsdGVyX3R5cGU7fSk7QXJi aXRlci5zdWJzY3JpYmUoJ3BhZ2VfdHJhbnNpdGlvbicsZnVuY3Rpb24oYyxiKXtk ZWxldGUgYS5nZXRWaWV3KCkucXVlcnlEYXRhLnR5cGU7fSxBcmJpdGVyLlNVQlND UklCRV9ORVcpO319KTsKYWRkX3Byb3BlcnRpZXMoJ1R5cGVhaGVhZEJlaGF2aW9y cycse3NlYXJjaFJlY29yZGVyQmFzaWM6ZnVuY3Rpb24oYSl7YS5zdWJzY3JpYmUo J2luaXQnLGZ1bmN0aW9uKGIsYyl7bmV3IFNlYXJjaFR5cGVhaGVhZFJlY29yZGVy KGEpO30pO319KTsKZnVuY3Rpb24gU3RyZWFtUHJvZmlsZUNvbXBvc2VyKCl7fVN0 cmVhbVByb2ZpbGVDb21wb3Nlci5wcm90b3R5cGU9e2luaXQ6ZnVuY3Rpb24oYSl7 dmFyIGI9JChhKTtBcmJpdGVyLnN1YnNjcmliZSgnY29tcG9zZXIvcHVibGlzaCcs ZnVuY3Rpb24oZXZlbnQsYyl7aWYoYy5zdHJlYW1TdG9yeSlhbmltYXRpb24ucHJl cGVuZEluc2VydChiLGMuc3RyZWFtU3RvcnkpO30pO319OwpmdW5jdGlvbiBVSUlu dGVudGlvbmFsU3RyZWFtKGosZSxoLGksYyxtLG4sZCxnLGIsZixhLGssbCl7aWYo IWopdGhyb3cgbmV3IEVycm9yKCdVSUludGVudGlvbmFsU3RyZWFtIGluc3RhbnRp YXRlZCB3aXRoIG5vIHJvb3QuJyk7Y29weV9wcm9wZXJ0aWVzKHRoaXMse2lkOmou aWQscm9vdDpqLGluc3RhbmNlTmFtZTplLG5ld2VzdDpoLG9sZGVzdDppLG9sZGVz dE1SOmksZmlyc3RMb2FkSURzOmQsc2hvdWxkU2hvd0hpZGRlbjpmYWxzZSxkZWZh dWx0RmlsdGVyOmMsY3VycmVudEZpbHRlcktleTpiLHNvdXJjZVR5cGU6bSxzdHJl YW1TdG9yeUNvdW50Om4sbWF4VW5zZWVuU3RvcnlDb3VudDpnLGxhc3RTZWVuVGlt ZTpmLGhhc1BlbmRpbmdSZWZyZXNoOmZhbHNlLHBhdXNlQXV0b0luc2VydDpmYWxz ZSx1bnNlZW5TdG9yeUNvdW50OjAsc3RyZWFtSGVhZGVyOmdlKCdwYWdlbGV0X3N0 cmVhbV9oZWFkZXInKSxlcnJvcjpET00uc2NyeShqLCdkaXYuVUlJbnRlbnRpb25h bFN0cmVhbV9FcnJvcicpWzBdLHBhZ2VyOkRPTS5zY3J5KGosJ2Rpdi51aU1vcmVQ YWdlcicpWzBdLGZpbHRlck51bGxTdGF0ZTpET00uc2NyeShqLCdkaXYuZnJpZW5k TGlzdEZpbHRlck51bGxTdGF0ZScpWzBdLHN0cmVhbUNvbnRlbnQ6RE9NLmZpbmQo aiwnLlVJSW50ZW50aW9uYWxTdHJlYW1fQ29udGVudCcpLHJlcXVlc3ROdW06MCxz Y3JvbGxMb2FkQ291bnQ6MSxtYXhTY3JvbGxMb2FkQ291bnQ6MSxib3VsZGVyRmVl ZDphLHNjcm9sbFBvc2l0aW9uOmssbGFzdFZpZXdTdGF0ZUlEOjAsc2hvdWxkUmVu ZGVyQ291bnQ6bCxzY3JvbGxMaXN0ZW5lcjpudWxsLGNvbm93aW5nb0NvdW50OjAs Y29ub3dpbmdvTmV3ZXN0OjB9KTt0aGlzLnNldFVwU3RyZWFtSGVhZGVyKCk7aWYo dGhpcy5zdHJlYW1TdG9yeUNvdW50PjApdGhpcy51cGRhdGVMaXZlRmVlZENvdW50 KHRoaXMuc3RyZWFtU3RvcnlDb3VudCk7b25sZWF2ZVJlZ2lzdGVyKHRoaXMudW5s b2FkLmJpbmQodGhpcykpO2lmKCFVSUludGVudGlvbmFsU3RyZWFtLmluc3RhbmNl cylVSUludGVudGlvbmFsU3RyZWFtLmluc3RhbmNlcz17fTtVSUludGVudGlvbmFs U3RyZWFtLmluc3RhbmNlc1tlXT10aGlzO1VJSW50ZW50aW9uYWxTdHJlYW0uaW5z dGFuY2U9dGhpczt0aGlzLnNldHVwQXV0b0luc2VydCgpO3RoaXMuc2V0dXBTdWJz Y3JpcHRpb25zKCk7QXJiaXRlci5pbmZvcm0oVUlJbnRlbnRpb25hbFN0cmVhbU1l c3NhZ2UuSU5JVElBTElaRV9DT01QTEVURSx7fSxBcmJpdGVyLkJFSEFWSU9SX1BF UlNJU1RFTlQpO31VSUludGVudGlvbmFsU3RyZWFtLmlzSGlnaGxpZ2h0c0ZpbHRl cj1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gZmFsc2U7dmFyIGI9YS5zdGFydHNX aXRoKFVJSW50ZW50aW9uYWxTdHJlYW0uRkVFRF9GSUxURVJfS0VZX05FV19ISUdI TElHSFRTKTtyZXR1cm4gYjt9O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBl LnN1YnNjcmliZVRvQ29tcG9zZXJQdWJsaXNoPWZ1bmN0aW9uKCl7dGhpcy5zdWJz Y3JpcHRpb25zLnB1c2goQXJiaXRlci5zdWJzY3JpYmUoJ2NvbXBvc2VyL3B1Ymxp c2gnLGZ1bmN0aW9uKGV2ZW50LGEpe2lmKGEuc3RyZWFtU3RvcnkpdGhpcy5hZGRD b21wb3NlckNvbnRlbnQoYS5zdHJlYW1TdG9yeSw1MDApO30uYmluZCh0aGlzKSkp O307VUlJbnRlbnRpb25hbFN0cmVhbS5wcm90b3R5cGUuc2V0dXBTdWJzY3JpcHRp b25zPWZ1bmN0aW9uKCl7dGhpcy5zdWJzY3JpcHRpb25zPVtdO3RoaXMuc3Vic2Ny aWJlVG9Db21wb3NlclB1Ymxpc2goKTt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChB cmJpdGVyLnN1YnNjcmliZShVSUludGVudGlvbmFsU3RyZWFtTWVzc2FnZS5VUERB VEVfU1RSRUFNLHRoaXMudXBkYXRlU3RyZWFtLmJpbmQodGhpcykpKTt0aGlzLnN1 YnNjcmlwdGlvbnMucHVzaChBcmJpdGVyLnN1YnNjcmliZShVSUludGVudGlvbmFs U3RyZWFtTWVzc2FnZS5SRUZSRVNIX1NUUkVBTSx0aGlzLnJlZnJlc2hTdHJlYW0u YmluZCh0aGlzKSkpO2lmKHRoaXMuYm91bGRlckZlZWQpe3RoaXMuc2Nyb2xsTGlz dGVuZXI9RXZlbnQubGlzdGVuKHdpbmRvdywnc2Nyb2xsJyx0aGlzLmNoZWNrU2Ny b2xsLmJpbmQodGhpcykpO3RoaXMuY2hlY2tTY3JvbGwoKTt9fTtVSUludGVudGlv bmFsU3RyZWFtLnByb3RvdHlwZS50ZWFyRG93blN1YnNjcmlwdGlvbnM9ZnVuY3Rp b24oKXtpZighdGhpcy5zdWJzY3JpcHRpb25zKXJldHVybjt0aGlzLnN1YnNjcmlw dGlvbnMuZm9yRWFjaChBcmJpdGVyLnVuc3Vic2NyaWJlKTt0aGlzLnN1YnNjcmlw dGlvbnM9bnVsbDtpZih0aGlzLnNjcm9sbExpc3RlbmVyKXt0aGlzLnNjcm9sbExp c3RlbmVyLnJlbW92ZSgpO3RoaXMuc2Nyb2xsTGlzdGVuZXI9bnVsbDt9fTtVSUlu dGVudGlvbmFsU3RyZWFtLnByb3RvdHlwZS51bmxvYWQ9ZnVuY3Rpb24oKXt0aGlz LnRlYXJEb3duU3Vic2NyaXB0aW9ucygpO1VJSW50ZW50aW9uYWxTdHJlYW0uaW5z dGFuY2U9bnVsbDtVSUludGVudGlvbmFsU3RyZWFtLmluc3RhbmNlc1t0aGlzLmlu c3RhbmNlTmFtZV09bnVsbDt0aGlzLmNsZWFyU2Nyb2xsTG9hZGVyKHRydWUpO3dp bmRvdy5kaXNhYmxlU2Nyb2xsTG9hZD1udWxsO1VJSW50ZW50aW9uYWxTdHJlYW1S ZWZyZXNoLmluc3RhbmNlJiZVSUludGVudGlvbmFsU3RyZWFtUmVmcmVzaC5pbnN0 YW5jZS51bmxvYWQoKTt9O1VJSW50ZW50aW9uYWxTdHJlYW0uZ2V0SW5zdGFuY2U9 ZnVuY3Rpb24oYSl7cmV0dXJuIFVJSW50ZW50aW9uYWxTdHJlYW0uaW5zdGFuY2Vz W2FdO307VUlJbnRlbnRpb25hbFN0cmVhbS5wcm90b3R5cGUuX2dldFVwZGF0ZUlu c2VydFR5cGU9ZnVuY3Rpb24oKXtpZih0aGlzLmlzT25OZXdIaWdobGlnaHRzKCkm JighdGhpcy5ib3VsZGVyRmVlZHx8dGhpcy5zaG91bGRSZW5kZXJDb3VudCkpcmV0 dXJuIFVJSW50ZW50aW9uYWxTdHJlYW0uUkVGUkVTSF9DT1VOVDtyZXR1cm4gVUlJ bnRlbnRpb25hbFN0cmVhbS5SRUZSRVNIX1BSRVBFTkQ7fTtVSUludGVudGlvbmFs U3RyZWFtLnByb3RvdHlwZS51cGRhdGVTdHJlYW09ZnVuY3Rpb24oYSl7aWYoYSE9 VUlJbnRlbnRpb25hbFN0cmVhbU1lc3NhZ2UuVVBEQVRFX1NUUkVBTXx8dGhpcy5o YXNQZW5kaW5nUmVmcmVzaHx8dGhpcy5pc0F1dG9SZWZyZXNoUGF1c2VkKCkpcmV0 dXJuO3RoaXMubG9hZE5ld2VyKHtzaG93TG9hZGVyOmZhbHNlLGlnbm9yZVNlbGY6 dHJ1ZSxpbnNlcnRUeXBlOnRoaXMuX2dldFVwZGF0ZUluc2VydFR5cGUoKX0pO307 VUlJbnRlbnRpb25hbFN0cmVhbS5wcm90b3R5cGUuY2xlYXJTY3JvbGxMb2FkZXI9 ZnVuY3Rpb24oYSl7aWYodGhpcy5jdXJyZW50U2Nyb2xsTGlzdGVuZXIpe3RoaXMu Y3VycmVudFNjcm9sbExpc3RlbmVyLnJlbW92ZSgpO3RoaXMuY3VycmVudFNjcm9s bExpc3RlbmVyPW51bGw7fWlmKGF8fHRoaXMuc2Nyb2xsTG9hZENvdW50Pj10aGlz Lm1heFNjcm9sbExvYWRDb3VudCl3aW5kb3cuZGlzYWJsZVNjcm9sbExvYWQ9dHJ1 ZTt9O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBlLmxvYWRPbGRlclBvc3Rz PWZ1bmN0aW9uKGIpe3ZhciBhPXtmaWx0ZXI6dGhpcy5nZXRDdXJyZW50RmlsdGVy S2V5KCksb2xkZXN0OnRoaXMub2xkZXN0LG9sZGVzdE1SOnRoaXMub2xkZXN0TVIs bGFzdF9zZWVuX3RpbWU6dGhpcy5sYXN0U2VlblRpbWUsc2Nyb2xsX2NvdW50OnRo aXMuc2Nyb2xsTG9hZENvdW50LHNjcm9sbF9wb3NpdGlvbjp0aGlzLnNjcm9sbFBv c2l0aW9uLGxhc3Rfdmlld3N0YXRlX2lkOnRoaXMubGFzdFZpZXdTdGF0ZUlEfTth PW1lcmdlKGEsYik7dGhpcy5sb2FkV2l0aFBhcmFtcyhhKTt9O1VJSW50ZW50aW9u YWxTdHJlYW0ucHJvdG90eXBlLmxvYWRXaXRoUGFyYW1zPWZ1bmN0aW9uKGEpe3Zh ciBiPURPTS5zY3J5KHRoaXMucm9vdCwnZGl2LmZiU3RyZWFtUGFnZXIuaGFzTW9y ZVBvc3RzJylbMF07aWYoYil7aWYoQ1NTLmhhc0NsYXNzKGIsJ2FzeW5jX3Nhdmlu ZycpKXJldHVybjtDU1MuYWRkQ2xhc3MoYiwnYXN5bmNfc2F2aW5nJyk7fVVJUGFn ZWxldC5sb2FkRnJvbUVuZHBvaW50KCdNb3JlU3Rvcmllc1BhZ2VsZXQnLCdob21l X3N0cmVhbScsYSx7dXNlUGlwZTp0cnVlLGFwcGVuZDp0cnVlfSk7fTtVSUludGVu dGlvbmFsU3RyZWFtLnByb3RvdHlwZS5zZXRTY3JvbGxMb2FkQ291bnQ9ZnVuY3Rp b24oYSl7dGhpcy5tYXhTY3JvbGxMb2FkQ291bnQ9YTt9O1VJSW50ZW50aW9uYWxT dHJlYW0ucHJvdG90eXBlLmxvYWRNb3JlT25TY3JvbGw9ZnVuY3Rpb24oYixhLGMp e2lmKHdpbmRvdy5kaXNhYmxlU2Nyb2xsTG9hZClyZXR1cm47dmFyIGU9ZnVuY3Rp b24oKXtpZih3aW5kb3cuZGlzYWJsZVNjcm9sbExvYWQpcmV0dXJuO2lmKHdpbmRv dy5BcmJpdGVyTW9uaXRvcil7dmFyIGg9dXNlcl9hY3Rpb24oJ3Njcm9sbCcsbnVs bCxudWxsLCdGT1JDRScse2d0Ont1YV9pZDonc3RyZWFtOnNjcm9sbDphdXRvJ319 KTtoLnNldF9uYW1lc3BhY2UoJ3N0cmVhbScpO0FyYml0ZXJNb25pdG9yLmluaXRV QShoKTt9dmFyIGc9e2RlbGF5X2xvYWRfY291bnQ6YX07aWYoIXRoaXMuYm91bGRl ckZlZWQmJnRoaXMuc2Nyb2xsTG9hZENvdW50PT0xJiZ0aGlzLmZpcnN0TG9hZElE cyYmdGhpcy5maXJzdExvYWRJRHMubGVuZ3RoPjApZz1tZXJnZShnLHtmaXJzdF9s b2FkX2lkczp0aGlzLmZpcnN0TG9hZElEcyxzaG93X2hpZGRlbjp0aGlzLnNob3Vs ZFNob3dIaWRkZW4scXVlcnlfdGltZTpjfSk7dGhpcy5sb2FkT2xkZXJQb3N0cyhn KTt9LmJpbmQodGhpcyk7dmFyIGY9RE9NLnNjcnkodGhpcy5yb290LCd1bC51aVN0 cmVhbSBsaS5nZW5lcmljU3RyZWFtU3RvcnknKTtpZighZi5sZW5ndGgpcmV0dXJu O3ZhciBkPWZbZi5sZW5ndGgtYi0xXTtpZihkKXt0aGlzLmN1cnJlbnRTY3JvbGxM aXN0ZW5lcj1uZXcgT25WaXNpYmxlKGQsZSxudWxsLDAse2RldGVjdF9zcGVlZDp0 aGlzLnNjcm9sbExvYWRDb3VudD4xfSk7fWVsc2UgZSgpO307VUlJbnRlbnRpb25h bFN0cmVhbS5wcm90b3R5cGUudXBkYXRlVGltZVJhbmdlPWZ1bmN0aW9uKGEsYil7 aWYoIXRoaXMubmV3ZXN0fHx0aGlzLm5ld2VzdDxhKXRoaXMubmV3ZXN0PWE7aWYo IXRoaXMub2xkZXN0fHwoYiYmKGI8dGhpcy5vbGRlc3QpKSl0aGlzLm9sZGVzdD1i O307VUlJbnRlbnRpb25hbFN0cmVhbS5wcm90b3R5cGUudXBkYXRlT2xkZXN0TVI9 ZnVuY3Rpb24oYSl7aWYoIXRoaXMub2xkZXN0TVJ8fGE8dGhpcy5vbGRlc3RNUil0 aGlzLm9sZGVzdE1SPWE7fTtVSUludGVudGlvbmFsU3RyZWFtLnByb3RvdHlwZS5n ZXRJRD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkO307VUlJbnRlbnRpb25hbFN0 cmVhbS5wcm90b3R5cGUuZ2V0Q3VycmVudEZpbHRlcktleT1mdW5jdGlvbigpe2lm KHRoaXMuY3VycmVudEZpbHRlcktleSlyZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVy S2V5O3ZhciBhPVVSSS5nZXRNb3N0UmVjZW50VVJJKCkuZ2V0UXVlcnlEYXRhKCk7 aWYoYSYmYS5zayl7dGhpcy5jdXJyZW50RmlsdGVyS2V5PWEuc2s7fWVsc2UgaWYo YSYmYS5maWx0ZXIpe3RoaXMuY3VycmVudEZpbHRlcktleT1hLmZpbHRlcjt9ZWxz ZSBpZih0aGlzLmRlZmF1bHRGaWx0ZXIpdGhpcy5jdXJyZW50RmlsdGVyS2V5PXRo aXMuZGVmYXVsdEZpbHRlcjtyZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyS2V5O307 VUlJbnRlbnRpb25hbFN0cmVhbS5wcm90b3R5cGUucmVzZXRGaWx0ZXJLZXk9ZnVu Y3Rpb24oYSl7dGhpcy5jdXJyZW50RmlsdGVyS2V5PWE7fTtVSUludGVudGlvbmFs U3RyZWFtLnByb3RvdHlwZS5sb2FkT2xkZXI9ZnVuY3Rpb24oYSl7YT1hfHx7fTtp ZighdGhpcy5vbGRlc3QpcmV0dXJuO3ZhciBiPXRoaXMuZ2V0Q3VycmVudFBhcmFt cygpO2Iub2xkZXN0PXRoaXMub2xkZXN0O3RoaXMucmVmcmVzaChVSUludGVudGlv bmFsU3RyZWFtLlJFRlJFU0hfQVBQRU5ELGIsYSk7cmV0dXJuIHRoaXM7fTtVSUlu dGVudGlvbmFsU3RyZWFtLnByb3RvdHlwZS5sb2FkTmV3ZXI9ZnVuY3Rpb24oYil7 aWYoIXRoaXMubmV3ZXN0KXJldHVybjtiPWJ8fHt9O3ZhciBhPXRoaXMuZ2V0Q3Vy cmVudFBhcmFtcygpO2EubmV3ZXN0PXRoaXMubmV3ZXN0O2lmKGIuaWdub3JlU2Vs ZilhLmlnbm9yZV9zZWxmPXRydWU7YS5sb2FkX25ld2VyPXRydWU7dmFyIGM9Y29h bGVzY2UoYi5pbnNlcnRUeXBlLFVJSW50ZW50aW9uYWxTdHJlYW0uUkVGUkVTSF9Q UkVQRU5EKTt0aGlzLnJlZnJlc2goYyxhLGIpO3JldHVybiB0aGlzO307VUlJbnRl bnRpb25hbFN0cmVhbS5wcm90b3R5cGUuZXhwYW5kUmVjZW50U3Rvcmllcz1mdW5j dGlvbigpe2lmKCF0aGlzLnNob3VsZFJlbmRlckNvdW50KXJldHVybjt0aGlzLnNo b3VsZFJlbmRlckNvdW50PWZhbHNlO3ZhciBjPURPTS5maW5kKCQoJ3BhZ2VsZXRf aG9tZV9zdHJlYW0nKSwndWwuZmJTdHJlYW1SZWNlbnRTdG9yaWVzQ29udGFpbmVy Jyk7dmFyIGI9dGhpcy5nZXRDdXJyZW50UGFyYW1zKCk7Yi5uZXdlc3Q9dGhpcy5u ZXdlc3Q7Yi5hY3RpdmVfbW9kZT10cnVlO2IucGFnZXJfY291bnQ9dGhpcy5jb25v d2luZ29Db3VudDtpZih0aGlzLmNvbm93aW5nb05ld2VzdD50aGlzLm5ld2VzdCl0 aGlzLm5ld2VzdD10aGlzLmNvbm93aW5nb05ld2VzdDt2YXIgZT1iYWdvZmhvbGRp bmc7dmFyIGQ9RE9NLmZpbmQoJCgncGFnZWxldF9ob21lX3N0cmVhbScpLCdkaXYu ZmJTdHJlYW1SZWNlbnRTdG9yaWVzUGFnZXInKTtDU1MuYWRkQ2xhc3MoZCwnYXN5 bmNfc2F2aW5nJyk7dmFyIGE9Yy5jaGlsZE5vZGVzLmxlbmd0aDtpZih0aGlzLmNv bm93aW5nb0NvdW50PT1hKXtlPWZ1bmN0aW9uKCl7Q1NTLmhpZGUoZCk7dGhpcy5z aGlmdFByZWZldGNoU3RvcmllcygpO30uYmluZCh0aGlzKTt9ZWxzZSBpZih0aGlz LmNvbm93aW5nb0NvdW50PjIwKWIucmVwbGFjZV9wYWdlcj10cnVlO3RoaXMuc2xp ZGVJbihjLGQsZSk7dGhpcy5yZWZyZXNoKFVJSW50ZW50aW9uYWxTdHJlYW0uUkVG UkVTSF9CVUJCTEUsYix7fSk7fTtVSUludGVudGlvbmFsU3RyZWFtLnByb3RvdHlw ZS5zaG93UmVjZW50U3Rvcmllc1BhZ2VyPWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVy bjt0aGlzLnZlcmlmeVBhZ2VyU3R5bGluZygpO2FuaW1hdGlvbihhKS5mcm9tKCdv cGFjaXR5JywwKS50bygnb3BhY2l0eScsMSkuc2hvdygpLm9uZG9uZShmdW5jdGlv bigpe0FyYml0ZXIuaW5mb3JtKCdyZWZsb3cnKTt9KS5nbygpO25ldyBBc3luY1Np Z25hbCgnL2FqYXgvZmVlZC9zaG93X3BhZ2VyLnBocCcse2NvdW50OnRoaXMuY29u b3dpbmdvQ291bnR9KS5zZW5kKCk7fTtVSUludGVudGlvbmFsU3RyZWFtLnByb3Rv dHlwZS52ZXJpZnlQYWdlclN0eWxpbmc9ZnVuY3Rpb24oKXtpZighdGhpcy5zaG91 bGRSZW5kZXJDb3VudClyZXR1cm47RE9NLnByZXBlbmRDb250ZW50KHRoaXMuc3Ry ZWFtQ29udGVudCwkTignbGknKSk7fTtVSUludGVudGlvbmFsU3RyZWFtLnByb3Rv dHlwZS5zbGlkZUluPWZ1bmN0aW9uKGYsZSxhKXt2YXIgZz1mLnBhcmVudE5vZGU7 dmFyIGM9JE4oJ2Rpdicse3N0eWxlOnttYXJnaW5Ub3A6Jy0xMDAwMHB4J319LGYp O3ZhciBkPSROKCdkaXYnLHtzdHlsZTp7b3ZlcmZsb3c6J2hpZGRlbid9fSxjKTtD U1Muc2V0U3R5bGUoYywnb3BhY2l0eScsMCk7Q1NTLnNob3coZik7RE9NLnByZXBl bmRDb250ZW50KGcsZCk7dmFyIGI9VmVjdG9yMi5nZXRFbGVtZW50RGltZW5zaW9u cyhjKS55O0NTUy5zZXRTdHlsZShjLCdtYXJnaW5Ub3AnLCctJytiKydweCcpO2Fu aW1hdGlvbihlKS5mcm9tKCdvcGFjaXR5JywxKS50bygnb3BhY2l0eScsMCkub25k b25lKGZ1bmN0aW9uKCl7dmFyIGg9ZS5vZmZzZXRIZWlnaHQ7Q1NTLnNldFN0eWxl KGMsJ3BhZGRpbmdCb3R0b20nLGgrJ3B4Jyk7Q1NTLmhpZGUoZSk7YW5pbWF0aW9u KGMpLmR1cmF0aW9uKDEwMDApLnRvKCdtYXJnaW5Ub3AnLDApLnRvKCdwYWRkaW5n Qm90dG9tJywwKS50bygnb3BhY2l0eScsMSkuZWFzZShhbmltYXRpb24uZWFzZS5i b3RoKS5vbmRvbmUoZnVuY3Rpb24oKXtET00ucmVwbGFjZShkLGYpO2EoKTt9KS5n bygpO30pLmdvKCk7fTtVSUludGVudGlvbmFsU3RyZWFtLnByb3RvdHlwZS5zaGlm dFByZWZldGNoU3Rvcmllcz1mdW5jdGlvbigpe3ZhciBhPURPTS5maW5kKCQoJ3Bh Z2VsZXRfaG9tZV9zdHJlYW0nKSwndWwuZmJTdHJlYW1SZWNlbnRTdG9yaWVzQ29u dGFpbmVyJyk7aWYoIWEuY2hpbGROb2Rlcy5sZW5ndGgpcmV0dXJuO0RPTS5wcmVw ZW5kQ29udGVudCh0aGlzLnN0cmVhbUNvbnRlbnQsJEEoYS5jaGlsZE5vZGVzKSk7 Q1NTLmhpZGUoYSk7dmFyIGI9RE9NLmZpbmQoJCgncGFnZWxldF9ob21lX3N0cmVh bScpLCdkaXYuZmJTdHJlYW1SZWNlbnRTdG9yaWVzUGFnZXInKTtDU1MucmVtb3Zl Q2xhc3MoYiwnYXN5bmNfc2F2aW5nJyk7QXJiaXRlci5pbmZvcm0oJ3JlZmxvdycp O307VUlJbnRlbnRpb25hbFN0cmVhbS5wcm90b3R5cGUuY2hlY2tTY3JvbGw9ZnVu Y3Rpb24oKXtpZih0aGlzLnNjcm9sbExpc3RlbmVyJiZWZWN0b3IyLmdldFNjcm9s bFBvc2l0aW9uKCkueT4wKXtuZXcgQXN5bmNTaWduYWwoJy9hamF4L2ZlZWQvc2Ny b2xsX2RldGVjdC5waHAnKS5zZW5kKCk7dGhpcy5zY3JvbGxMaXN0ZW5lci5yZW1v dmUoKTt0aGlzLnNjcm9sbExpc3RlbmVyPW51bGw7fX07VUlJbnRlbnRpb25hbFN0 cmVhbS5wcm90b3R5cGUuZ2V0Q3VycmVudFBhcmFtcz1mdW5jdGlvbigpe3ZhciBh PXt9O3ZhciBiPVVSSS5nZXRNb3N0UmVjZW50VVJJKCkuZ2V0UXVlcnlEYXRhKCk7 Yi5maWx0ZXI9dGhpcy5nZXRDdXJyZW50RmlsdGVyS2V5KCk7dmFyIGM9dGhpcy5n ZXRWYWxpZFBhcmFtcygpO2lmKGMpe2MuZm9yRWFjaChmdW5jdGlvbihkKXthW2Rd PWJbZF07fSk7fWVsc2UgYT1iO3JldHVybiBhO307VUlJbnRlbnRpb25hbFN0cmVh bS5wcm90b3R5cGUuc2V0SG9tZUZpbHRlcj1mdW5jdGlvbihhKXt0aGlzLl9ob21l RmlsdGVyPWE7fTtVSUludGVudGlvbmFsU3RyZWFtLnByb3RvdHlwZS5zZXRIb21l RmlsdGVyTG9hZGluZz1mdW5jdGlvbihhKXtpZih0aGlzLl9ob21lRmlsdGVyKXRo aXMuX2hvbWVGaWx0ZXIuc2V0TG9hZGluZyhhKTt9O1VJSW50ZW50aW9uYWxTdHJl YW0ucHJvdG90eXBlLnNldENvbm93aW5nb0NvdW50PWZ1bmN0aW9uKGEpe3RoaXMu Y29ub3dpbmdvQ291bnQ9YTt0aGlzLnNob3VsZFJlbmRlckNvdW50PSEhdGhpcy5j b25vd2luZ29Db3VudDt9O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBlLnNl dENvbm93aW5nb05ld2VzdD1mdW5jdGlvbihhKXtpZihhPnRoaXMuY29ub3dpbmdv TmV3ZXN0KXRoaXMuY29ub3dpbmdvTmV3ZXN0PWE7fTtVSUludGVudGlvbmFsU3Ry ZWFtLnByb3RvdHlwZS51cGRhdGVSZWNlbnRTdG9yeUNvdW50PWZ1bmN0aW9uKGIp e3RoaXMuc2V0Q29ub3dpbmdvQ291bnQoYik7aWYodGhpcy5ib3VsZGVyRmVlZCl7 dmFyIGM9RE9NLmZpbmQoJCgncGFnZWxldF9ob21lX3N0cmVhbScpLCdkaXYuZmJT dHJlYW1SZWNlbnRTdG9yaWVzUGFnZXInKTtpZih0aGlzLnNob3VsZFJlbmRlckNv dW50KXt2YXIgZD1ET00uZmluZChjLCdzcGFuLmZiU3RyZWFtUmVjZW50U3Rvcmll c1RleHQnKTt2YXIgYTtpZih0aGlzLmNvbm93aW5nb0NvdW50PT0xKXthPV90eCgi e2NvdW50fSBZRU5cdTAxMzAgSEFCRVIiLHtjb3VudDpifSk7fWVsc2UgaWYoYjw9 MTAwKXthPV90eCgie2NvdW50fSBZRU5cdTAxMzAgSEFCRVIiLHtjb3VudDpifSk7 fWVsc2UgYT0iMTAwKyBZRU5cdTAxMzAgSEFCRVIiO0RPTS5zZXRDb250ZW50KGQs YSk7aWYoQ1NTLmhhc0NsYXNzKGMsJ2hpZGRlbl9lbGVtJykpdGhpcy5zaG93UmVj ZW50U3Rvcmllc1BhZ2VyKGMpO31lbHNlIENTUy5oaWRlKGMpO319O1VJSW50ZW50 aW9uYWxTdHJlYW0ucHJvdG90eXBlLnVwZGF0ZVJlbmRlcmVkU3Rvcmllcz1mdW5j dGlvbihiKXtpZih0aGlzLmJvdWxkZXJGZWVkJiZ0aGlzLnNob3VsZFJlbmRlckNv dW50KXt2YXIgYT1ET00uZmluZCgkKCdwYWdlbGV0X2hvbWVfc3RyZWFtJyksJ3Vs LmZiU3RyZWFtUmVjZW50U3Rvcmllc0NvbnRhaW5lcicpO0RPTS5zZXRDb250ZW50 KGEsSFRNTChiKSk7fX07VUlJbnRlbnRpb25hbFN0cmVhbS5wcm90b3R5cGUuaW5j cmVtZW50VHJhbnNpdGlvbmFsTnV4PWZ1bmN0aW9uKGEpe2lmKHRoaXMuaW5jcmVt ZW50ZWRUcmFuc2l0aW9uYWxOdXgpcmV0dXJuO3RoaXMuaW5jcmVtZW50ZWRUcmFu c2l0aW9uYWxOdXg9dHJ1ZTt2YXIgYz0nL2FqYXgvZmVlZC9udXgvdHJhbnNpdGlv bmFsX2luY3JlbWVudCc7dmFyIGI9e2xvY2F0aW9uOmF9O25ldyBBc3luY1NpZ25h bChjLGIpLnNlbmQoKTt9O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBlLnJl ZnJlc2g9ZnVuY3Rpb24oaixhLGYpe0FyYml0ZXIuaW5mb3JtKFVJSW50ZW50aW9u YWxTdHJlYW1NZXNzYWdlLlVQREFURV9MQVNUX1JFRlJFU0hfVElNRSk7dGhpcy5j dXJyZW50RmlsdGVyS2V5PWEuZmlsdGVyO2lmKGEuZmlsdGVyPT1VSUludGVudGlv bmFsU3RyZWFtLkZFRURfRklMVEVSX0tFWV9EVUFMX05FV1NfRkVFRCl7dGhpcy5j dXJyZW50RmlsdGVyS2V5PXRoaXMuZGVmYXVsdEZpbHRlcjt9ZWxzZSBpZihVSUlu dGVudGlvbmFsU3RyZWFtLmlzSGlnaGxpZ2h0c0ZpbHRlcihhLmZpbHRlcil8fGEu ZmlsdGVyPT09VUlJbnRlbnRpb25hbFN0cmVhbS5GRUVEX0ZJTFRFUl9LRVlfTkVX U19GRUVEKXRoaXMuZGVmYXVsdEZpbHRlcj10aGlzLmN1cnJlbnRGaWx0ZXJLZXk7 Zj1mfHx7fTt2YXIgaD0rK3RoaXMucmVxdWVzdE51bTt2YXIgaT1jb2FsZXNjZShm LnNob3dMb2FkZXIsdHJ1ZSk7dmFyIGU9dGhpcy5pbnN0YW5jZU5hbWU7dmFyIGQ9 ZnVuY3Rpb24oayl7VUlJbnRlbnRpb25hbFN0cmVhbS5nZXRJbnN0YW5jZShlKS5o YW5kbGVSZXNwb25zZShoLGosayxmKTt9O3ZhciBiPWZ1bmN0aW9uKGspe1VJSW50 ZW50aW9uYWxTdHJlYW0uZ2V0SW5zdGFuY2UoZSkuaGFuZGxlRXJyb3IoaCxqLGss Zik7fTt2YXIgYz1mdW5jdGlvbihrKXtVSUludGVudGlvbmFsU3RyZWFtLmdldElu c3RhbmNlKGUpLmhhbmRsZUZpbmFsbHkoaixhLmZpbHRlcixrKTt9O2lmKCEoYS5y ZXF1ZXN0X3R5cGU9aikpYS5yZXF1ZXN0X3R5cGU9J25vbmUnO2lmKGEuZmlsdGVy KXtmLnNob3dfaGlkZGVuPWEuc2hvd19oaWRkZW4/YS5zaG93X2hpZGRlbjpmYWxz ZTt9ZWxzZSBmLnNob3dfaGlkZGVuPXRoaXMuc2hvdWxkU2hvd0hpZGRlbjthPWNv cHlfcHJvcGVydGllcyh0aGlzLmdldEN1cnJlbnRQYXJhbXMoKSxhKTt0aGlzLmhh c1BlbmRpbmdSZWZyZXNoPXRydWU7dmFyIGc7aWYoaj09VUlJbnRlbnRpb25hbFN0 cmVhbS5SRUZSRVNIX0FQUEVORCYmaSlnPXRoaXMucGFnZXI7bmV3IEFzeW5jUmVx dWVzdCgpLnNldFVSSSh0aGlzLmdldEVuZHBvaW50KCkpLnNldFJlYWRPbmx5KHRy dWUpLnNldE9wdGlvbigncmV0cmllcycsMCkuc2V0TWV0aG9kKHRoaXMuZ2V0UmVm cmVzaE1ldGhvZCgpKS5zZXREYXRhKGEpLnNldEhhbmRsZXIoZCkuc2V0U3RhdHVz RWxlbWVudChnKS5zZXRFcnJvckhhbmRsZXIoYikuc2V0RmluYWxseUhhbmRsZXIo Yykuc2VuZCgpO2lmKGo9PVVJSW50ZW50aW9uYWxTdHJlYW0uUkVGUkVTSF9UUkFO U0lUSU9OKXtoaWRlKHRoaXMucGFnZXIpO3RoaXMuY2xlYXJTY3JvbGxMb2FkZXIo dHJ1ZSk7dGhpcy5vbGRlc3Q9dGhpcy5uZXdlc3Q9bnVsbDt9aWYoaSl0aGlzLnNl dEhvbWVGaWx0ZXJMb2FkaW5nKHRydWUpO307VUlJbnRlbnRpb25hbFN0cmVhbS5w cm90b3R5cGUuYWRkQ29tcG9zZXJDb250ZW50PWZ1bmN0aW9uKGEsYil7aWYodGhp cy5ib3VsZGVyRmVlZCYmdGhpcy5pc09uTmV3c0ZlZWRGaWx0ZXIoKSl7Q1NTLmFk ZENsYXNzKGEsJ3VpU3RyZWFtQm91bGRlckhpZ2hsaWdodCcpO31lbHNlIENTUy5y ZW1vdmVDbGFzcyhhLCd1aVN0cmVhbUJvdWxkZXJTdHlsZScpO3RoaXMuYWRkQ29u dGVudFByZXBlbmQoYSxiKTt9O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBl LmFkZENvbnRlbnRQcmVwZW5kPWZ1bmN0aW9uKGEsYil7aWYoYS5sZW5ndGgpeyRB KGEpLnJldmVyc2UoKS5mb3JFYWNoKGZ1bmN0aW9uKGgpe3RoaXMuYWRkQ29udGVu dFByZXBlbmQoaCxiKTt9LmJpbmQodGhpcykpO3JldHVybjt9dmFyIGQ7dmFyIGY9 VmVjdG9yMi5nZXRTY3JvbGxQb3NpdGlvbigpLnk7dmFyIGM9VmVjdG9yMi5nZXRF bGVtZW50UG9zaXRpb24odGhpcy5zdHJlYW1Db250ZW50KS55O3ZhciBnPXRoaXMu c2Nyb2xsT25QcmVwZW5kJiZmPj1jO2lmKGcpe3ZhciBlPWZ1bmN0aW9uKGgpe3Zh ciBpPURPTS5maW5kKGgsJ15saS51aVN0cmVhbVN0b3J5Jyk7aWYoIWkpcmV0dXJu O0RhdGFTdG9yZS5zZXQoaSwnb3JpZ0hlaWdodCcsaS5vZmZzZXRIZWlnaHQpO0V2 ZW50Lmxpc3RlbihoLCdsb2FkJyxmdW5jdGlvbigpe3ZhciBqPURhdGFTdG9yZS5n ZXQoaSwnb3JpZ0hlaWdodCcpO2lmKGkub2Zmc2V0SGVpZ2h0IT1qKXt3aW5kb3cu c2Nyb2xsQnkoMCxpLm9mZnNldEhlaWdodC1qKTtEYXRhU3RvcmUuc2V0KGksJ29y aWdIZWlnaHQnLGkub2Zmc2V0SGVpZ2h0KTt9fSk7fTtkPWFuaW1hdGlvbi5pbnNl cnQuY3VycnkodGhpcy5zdHJlYW1Db250ZW50LGEsKGZ1bmN0aW9uKGksaCl7RE9N LnByZXBlbmRDb250ZW50KHRoaXMuc3RyZWFtQ29udGVudCxoKTtBcmJpdGVyLmlu Zm9ybSgncmVmbG93Jyk7d2luZG93LnNjcm9sbEJ5KDAsaC5vZmZzZXRIZWlnaHQp O0RPTS5zY3J5KGgsJ2ltZycpLmZvckVhY2goZSk7fSkuYmluZCh0aGlzKSk7fWVs c2UgZD0oZnVuY3Rpb24oKXtDU1Muc2V0U3R5bGUoYSwnb3BhY2l0eScsMCk7RE9N LnByZXBlbmRDb250ZW50KHRoaXMuc3RyZWFtQ29udGVudCxhKTtBcmJpdGVyLmlu Zm9ybSgncmVmbG93Jyk7YW5pbWF0aW9uKGEpLmZyb20oJ29wYWNpdHknLDApLnRv KCdvcGFjaXR5JywxKS5kdXJhdGlvbig0MDApLmdvKCk7fSkuYmluZCh0aGlzKTtp ZihiKXtzZXRUaW1lb3V0KGQsYik7fWVsc2UgZCgpO307VUlJbnRlbnRpb25hbFN0 cmVhbS5wcm90b3R5cGUuYWRkQ29udGVudEFwcGVuZD1mdW5jdGlvbihhKXtET00u YXBwZW5kQ29udGVudCh0aGlzLnN0cmVhbUNvbnRlbnQsYSk7fTtVSUludGVudGlv bmFsU3RyZWFtLmdldFN0b3JpZXNCeUFzc29jPWZ1bmN0aW9uKGEpe3JldHVybiBE T00uc2NyeShVSUludGVudGlvbmFsU3RyZWFtLmluc3RhbmNlLnJvb3QsJ2Rpdi5h aWRfJythKTt9O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBlLmhhbmRsZVJl c3BvbnNlPWZ1bmN0aW9uKGUsaCxmLGMpe2M9Y3x8e307dmFyIGQ9Zi5nZXRQYXls b2FkKCk7dGhpcy5maWx0ZXJOdWxsU3RhdGUmJkRPTS5yZW1vdmUodGhpcy5maWx0 ZXJOdWxsU3RhdGUpO2lmKGlzX2VtcHR5KGQpKXJldHVybjtpZihkLnN0cmVhbUhl YWRlciYmdGhpcy5zdHJlYW1IZWFkZXIpe0RPTS5zZXRDb250ZW50KHRoaXMuc3Ry ZWFtSGVhZGVyLEhUTUwoZC5zdHJlYW1IZWFkZXIpKTtpZih0aGlzLmlzT25OZXdz RmVlZEZpbHRlcigpKXRoaXMuc2V0VXBTdHJlYW1IZWFkZXIoKTtOZXdIaWdoLnJl c2V0KCk7fWlmKGQuYXV0b1JlZnJlc2hDb25maWcpQXJiaXRlci5pbmZvcm0oVUlJ bnRlbnRpb25hbFN0cmVhbU1lc3NhZ2UuVVBEQVRFX0FVVE9SRUZSRVNIX0NPTkZJ RyxkLmF1dG9SZWZyZXNoQ29uZmlnKTt0aGlzLnNldEhvbWVGaWx0ZXJMb2FkaW5n KGZhbHNlKTtpZihoPT1VSUludGVudGlvbmFsU3RyZWFtLlJFRlJFU0hfRVhQQU5E KXt2YXIgZz1ET00uZmluZCgkKGMuZXhwYW5kU3RvcnlJRCksJ2Rpdi5VSUludGVu dGlvbmFsU3RvcnlfQ29sbGFwc2VkU3RvcmllcycpO0NTUy5oaWRlKGcpO0NTUy5y ZW1vdmVDbGFzcyhnLCdVSUludGVudGlvbmFsU3RvcnlfQ29sbGFwc2VkU3Rvcmll c0xvYWRpbmcnKTt9aWYodGhpcy5lcnJvciloaWRlKHRoaXMuZXJyb3IpO2lmKGUh PXRoaXMucmVxdWVzdE51bSlyZXR1cm47aWYoJ3Nob3dfaGlkZGVuJyBpbiBjKXRo aXMuc2hvdWxkU2hvd0hpZGRlbj1jLnNob3dfaGlkZGVuO2lmKCduZXdlc3RTdG9y eVRpbWUnIGluIGQmJmQubmV3ZXN0U3RvcnlUaW1lPnRoaXMubmV3ZXN0KXRoaXMu bmV3ZXN0PWQubmV3ZXN0U3RvcnlUaW1lO2lmKCdvbGRlc3RTdG9yeVRpbWUnIGlu IGQmJighdGhpcy5vbGRlc3R8fGQub2xkZXN0U3RvcnlUaW1lPHRoaXMub2xkZXN0 KSl0aGlzLm9sZGVzdD1kLm9sZGVzdFN0b3J5VGltZTtpZignc3RyZWFtU3RvcnlD b3VudCcgaW4gZCl0aGlzLnVwZGF0ZUxpdmVGZWVkQ291bnQoZC5zdHJlYW1TdG9y eUNvdW50KTtpZih0aGlzLmJvdWxkZXJGZWVkJiYnY29ub3dpbmdvQ291bnQnIGlu IGQpe3RoaXMudXBkYXRlUmVjZW50U3RvcnlDb3VudChkLmNvbm93aW5nb0NvdW50 KTtpZignY29ub3dpbmdvSFRNTCcgaW4gZCl0aGlzLnVwZGF0ZVJlbmRlcmVkU3Rv cmllcyhkLmNvbm93aW5nb0hUTUwpO2lmKCdjb25vd2luZ29OZXdlc3QnIGluIGQp dGhpcy5zZXRDb25vd2luZ29OZXdlc3QoZC5jb25vd2luZ29OZXdlc3QpO31lbHNl IGlmKGQuc3RvcnlDb3VudCYmIXRoaXMuYm91bGRlckZlZWQpdGhpcy51cGRhdGVM aXZlRmVlZENvdW50KGQuc3RvcnlDb3VudCx0cnVlKTtpZighZC5odG1sKXtpZiho PT1VSUludGVudGlvbmFsU3RyZWFtLlJFRlJFU0hfQlVCQkxFKXRoaXMuc2hpZnRQ cmVmZXRjaFN0b3JpZXMoKTt9ZWxzZXt2YXIgYT1IVE1MKGQuaHRtbCkuZ2V0Tm9k ZXMoKTtzd2l0Y2goaCl7Y2FzZSBVSUludGVudGlvbmFsU3RyZWFtLlJFRlJFU0hf QlVCQkxFOmlmKGQucmVwbGFjZUN1cnJlbnRTdG9yaWVzKXtET00uZW1wdHkodGhp cy5zdHJlYW1Db250ZW50KTt0aGlzLnNjcm9sbFBvc2l0aW9uPWQuc2Nyb2xsUG9z aXRpb247dGhpcy5sYXN0Vmlld1N0YXRlSUQ9ZC5sYXN0Vmlld1N0YXRlSUQ7dGhp cy5vbGRlc3Q9ZC5vbGRlc3Q7fXRoaXMuYWRkQ29udGVudFByZXBlbmQoYSk7dGhp cy5zaGlmdFByZWZldGNoU3RvcmllcygpO2JyZWFrO2Nhc2UgVUlJbnRlbnRpb25h bFN0cmVhbS5SRUZSRVNIX0NPVU5UOmNhc2UgVUlJbnRlbnRpb25hbFN0cmVhbS5S RUZSRVNIX1BSRVBFTkQ6dGhpcy5hZGRDb250ZW50UHJlcGVuZChhKTticmVhaztj YXNlIFVJSW50ZW50aW9uYWxTdHJlYW0uUkVGUkVTSF9BUFBFTkQ6dGhpcy5hZGRD b250ZW50QXBwZW5kKGEpO3RoaXMuY2xlYXJTY3JvbGxMb2FkZXIodHJ1ZSk7YnJl YWs7Y2FzZSBVSUludGVudGlvbmFsU3RyZWFtLlJFRlJFU0hfVFJBTlNJVElPTjpE T00uc2V0Q29udGVudCh0aGlzLnN0cmVhbUNvbnRlbnQsYSk7dmFyIGI9dGhpcy5z dHJlYW1Db250ZW50LmZpcnN0Q2hpbGQ7aWYoIWMubm9TY3JvbGwpRE9NU2Nyb2xs LnNjcm9sbFRvKG5ldyBWZWN0b3IyKDAsMCwiZG9jdW1lbnQiKSxmYWxzZSk7YnJl YWs7Y2FzZSBVSUludGVudGlvbmFsU3RyZWFtLlJFRlJFU0hfRVhQQU5EOkRPTS5p bnNlcnRBZnRlcigkKGMuZXhwYW5kU3RvcnlJRCksYSk7YnJlYWs7Y2FzZSBVSUlu dGVudGlvbmFsU3RyZWFtLkRFTEFZRURfU1RSRUFNOnRoaXMuYWRkQ29udGVudEFw cGVuZChhKTticmVhazt9dGhpcy52ZXJpZnlQYWdlclN0eWxpbmcoKTtBcmJpdGVy LmluZm9ybShVSUludGVudGlvbmFsU3RyZWFtTWVzc2FnZS5VUERBVEVfSFRNTF9D T05URU5UKTt9fTtVSUludGVudGlvbmFsU3RyZWFtLnByb3RvdHlwZS51cGRhdGVM aXZlRmVlZENvdW50PWZ1bmN0aW9uKGMsYil7dmFyIGQ9KHRoaXMudW5zZWVuU3Rv cnlDb3VudD09MHx8IWIpO2lmKGIpe3RoaXMudW5zZWVuU3RvcnlDb3VudCs9Yzt9 ZWxzZSB0aGlzLnVuc2VlblN0b3J5Q291bnQ9YztpZih0aGlzLnVuc2VlblN0b3J5 Q291bnQ+MCYmdGhpcy5saXZlRmVlZENvdW50KXt2YXIgYT0nJztpZih0aGlzLnVu c2VlblN0b3J5Q291bnQ+dGhpcy5tYXhVbnNlZW5TdG9yeUNvdW50KXthPXRoaXMu bWF4VW5zZWVuU3RvcnlDb3VudCsnKyc7fWVsc2UgYT10aGlzLnVuc2VlblN0b3J5 Q291bnQudG9TdHJpbmcoKTtET00uc2V0Q29udGVudCh0aGlzLmxpdmVGZWVkQ291 bnQsSFRNTChhKSk7aWYoZClDU1Muc2hvdyh0aGlzLmxpdmVGZWVkQnViYmxlKTt9 fTtVSUludGVudGlvbmFsU3RyZWFtLnByb3RvdHlwZS5oYW5kbGVFcnJvcj1mdW5j dGlvbihjLGYsZCxiKXtpZihjIT10aGlzLnJlcXVlc3ROdW0pcmV0dXJuO3RoaXMu c2V0SG9tZUZpbHRlckxvYWRpbmcoZmFsc2UpO3ZhciBhPWQuZ2V0RXJyb3IoKTtp ZihhPT0xMzU3MDAxKUFzeW5jUmVzcG9uc2UuZGVmYXVsdEVycm9ySGFuZGxlcihk KTtpZihmPT1VSUludGVudGlvbmFsU3RyZWFtLlJFRlJFU0hfRVhQQU5EKXt2YXIg ZT1ET00uZmluZCgkKGIuZXhwYW5kU3RvcnlJRCksJ2Rpdi5VSUludGVudGlvbmFs U3RvcnlfQ29sbGFwc2VkU3RvcmllcycpO0NTUy5yZW1vdmVDbGFzcyhlLCdVSUlu dGVudGlvbmFsU3RvcnlfQ29sbGFwc2VkU3Rvcmllc0xvYWRpbmcnKTt9aWYoIWIu ZGVsYXlMb2FkQ291bnQmJmYhPVVJSW50ZW50aW9uYWxTdHJlYW0uUkVGUkVTSF9Q UkVQRU5EJiZ0aGlzLmVycm9yKUNTUy5zZXRTdHlsZSh0aGlzLmVycm9yLCdkaXNw bGF5JywnYmxvY2snKTt9O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBlLmhh bmRsZUZpbmFsbHk9ZnVuY3Rpb24oYixhKXtpZihiPT1VSUludGVudGlvbmFsU3Ry ZWFtLlJFRlJFU0hfVFJBTlNJVElPTil7UGFnZVRyYW5zaXRpb25zLnRyYW5zaXRp b25Db21wbGV0ZSgpO0FyYml0ZXIuaW5mb3JtKE5hdmlnYXRpb25NZXNzYWdlLk5B VklHQVRJT05fQ09NUExFVEVEKTt9dGhpcy5oYXNQZW5kaW5nUmVmcmVzaD1mYWxz ZTt9O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBlLmdldFZhbGlkUGFyYW1z PWZ1bmN0aW9uKCl7cmV0dXJuIFVJSW50ZW50aW9uYWxTdHJlYW0uVkFMSURfUEFS QU1TO307VUlJbnRlbnRpb25hbFN0cmVhbS5wcm90b3R5cGUuZ2V0RW5kcG9pbnQ9 ZnVuY3Rpb24oKXtyZXR1cm4gVUlJbnRlbnRpb25hbFN0cmVhbS5FTkRQT0lOVDt9 O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBlLmdldFJlZnJlc2hNZXRob2Q9 ZnVuY3Rpb24oKXtyZXR1cm4gVUlJbnRlbnRpb25hbFN0cmVhbS5SRUZSRVNIX01F VEhPRDt9O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBlLmlzT25OZXdIaWdo bGlnaHRzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRDdXJyZW50RmlsdGVyS2V5 KCk7cmV0dXJuIChVSUludGVudGlvbmFsU3RyZWFtLmlzSGlnaGxpZ2h0c0ZpbHRl cihhKXx8KGE9PVVJSW50ZW50aW9uYWxTdHJlYW0uRkVFRF9GSUxURVJfS0VZX0RV QUxfTkVXU19GRUVEJiZVSUludGVudGlvbmFsU3RyZWFtLmlzSGlnaGxpZ2h0c0Zp bHRlcih0aGlzLmRlZmF1bHRGaWx0ZXIpKSk7fTtVSUludGVudGlvbmFsU3RyZWFt LnByb3RvdHlwZS5pc0xpdmVTdHJlYW1Cb3g9ZnVuY3Rpb24oKXt2YXIgYT10aGlz LmdldEN1cnJlbnRGaWx0ZXJLZXkoKTtyZXR1cm4gYSYmYS5pbmRleE9mKFVJSW50 ZW50aW9uYWxTdHJlYW0uRkVFRF9GSUxURVJfS0VZX0xJVkVfU1RSRUFNX0JPWCk9 PTA7fTtVSUludGVudGlvbmFsU3RyZWFtLnByb3RvdHlwZS5pc09uTmV3c0ZlZWRG aWx0ZXI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEN1cnJlbnRGaWx0ZXJLZXko KTtyZXR1cm4gKGE9PVVJSW50ZW50aW9uYWxTdHJlYW0uRkVFRF9GSUxURVJfS0VZ X05FV1NfRkVFRHx8VUlJbnRlbnRpb25hbFN0cmVhbS5pc0hpZ2hsaWdodHNGaWx0 ZXIoYSl8fGE9PVVJSW50ZW50aW9uYWxTdHJlYW0uRkVFRF9GSUxURVJfS0VZX0RV QUxfTkVXU19GRUVEKTt9O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBlLnNl dHVwQXV0b0luc2VydD1mdW5jdGlvbigpe0FyYml0ZXIuc3Vic2NyaWJlKFVJSW50 ZW50aW9uYWxTdHJlYW1NZXNzYWdlLlNFVF9BVVRPX0lOU0VSVCxVSUludGVudGlv bmFsU3RyZWFtLnNldEF1dG9JbnNlcnQpO307VUlJbnRlbnRpb25hbFN0cmVhbS5z ZXRBdXRvSW5zZXJ0PWZ1bmN0aW9uKGIsYSl7aWYoYiE9VUlJbnRlbnRpb25hbFN0 cmVhbU1lc3NhZ2UuU0VUX0FVVE9fSU5TRVJUKXJldHVybjt2YXIgYz1VSUludGVu dGlvbmFsU3RyZWFtLmluc3RhbmNlO2lmKGMpYy5wYXVzZUF1dG9JbnNlcnQ9YS5w YXVzZTt9O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBlLmlzQXV0b1JlZnJl c2hQYXVzZWQ9ZnVuY3Rpb24oKXtpZih0aGlzLmlzT25OZXdIaWdobGlnaHRzKCl8 fHRoaXMuaXNMaXZlU3RyZWFtQm94KCkpcmV0dXJuIGZhbHNlO3JldHVybiB0aGlz LnBhdXNlQXV0b0luc2VydDt9O1VJSW50ZW50aW9uYWxTdHJlYW0ucHJvdG90eXBl LnNldFVwU3RyZWFtSGVhZGVyPWZ1bmN0aW9uKCl7aWYoIXRoaXMuc3RyZWFtSGVh ZGVyKXJldHVybjt0aGlzLmxpdmVGZWVkQnViYmxlPURPTS5zY3J5KHRoaXMuc3Ry ZWFtSGVhZGVyLCdzcGFuLnVpQnViYmxlQ291bnQnKVswXTtpZighdGhpcy5saXZl RmVlZEJ1YmJsZSlyZXR1cm47dGhpcy5saXZlRmVlZENvdW50PURPTS5zY3J5KHRo aXMubGl2ZUZlZWRCdWJibGUsJ3NwYW4ubnVtYmVyJylbMF07aWYoIXRoaXMubWF4 VW5zZWVuU3RvcnlDb3VudCl0aGlzLm1heFVuc2VlblN0b3J5Q291bnQ9VUlJbnRl bnRpb25hbFN0cmVhbS5NQVhfVU5TRUVOX1NUT1JZX0NPVU5UO307VUlJbnRlbnRp b25hbFN0cmVhbS5wcm90b3R5cGUucmVmcmVzaFN0cmVhbT1mdW5jdGlvbihlLGEp e2lmKGUhPVVJSW50ZW50aW9uYWxTdHJlYW1NZXNzYWdlLlJFRlJFU0hfU1RSRUFN KXJldHVybjt2YXIgYz10aGlzLmdldEN1cnJlbnRGaWx0ZXJLZXkoKTtpZih0aGlz LmlzT25OZXdzRmVlZEZpbHRlcigpJiZhLnNob3VsZE92ZXJyaWRlKWM9VUlJbnRl bnRpb25hbFN0cmVhbS5GRUVEX0ZJTFRFUl9LRVlfTkVXX0hJR0hMSUdIVFM7dmFy IGY9VUlJbnRlbnRpb25hbFN0cmVhbS5pc0hpZ2hsaWdodHNGaWx0ZXIoYyk7dmFy IGI9e2ZpbHRlcjpjfTtpZihmKWIucGVuZGluZz1mO3ZhciBkPXtmaWx0ZXI6Y307 YS5ub1Njcm9sbCYmKGQubm9TY3JvbGw9MSk7dGhpcy5yZWZyZXNoKFVJSW50ZW50 aW9uYWxTdHJlYW0uUkVGUkVTSF9UUkFOU0lUSU9OLGIsZCk7fTtjb3B5X3Byb3Bl cnRpZXMoVUlJbnRlbnRpb25hbFN0cmVhbSx7QU5JTUFUSU9OX0RVUkFUSU9OOjMw MCxSRUZSRVNIX01FVEhPRDonR0VUJyxSRUZSRVNIX1RSQU5TSVRJT046MSxSRUZS RVNIX1BSRVBFTkQ6MixSRUZSRVNIX0FQUEVORDozLFJFRlJFU0hfQ09VTlQ6NCxS RUZSRVNIX0VYUEFORDo1LERFTEFZRURfU1RSRUFNOjYsUkVGUkVTSF9CVUJCTEU6 NyxGRUVEX0ZJTFRFUl9LRVlfTkVXX0hJR0hMSUdIVFM6J2gnLEZFRURfRklMVEVS X0tFWV9ORVdTX0ZFRUQ6J2xmJyxGRUVEX0ZJTFRFUl9LRVlfRFVBTF9ORVdTX0ZF RUQ6J25mJyxGRUVEX0ZJTFRFUl9LRVlfTElWRV9TVFJFQU1fQk9YOidwdWInLFZB TElEX1BBUkFNUzpbJ2ZpbHRlcicsJ3Nob3dfaGlkZGVuJ10sRU5EUE9JTlQ6Jy9h amF4L2ludGVudC5waHAnLE1BWF9VTlNFRU5fU1RPUllfQ09VTlQ6MzAwfSk7CmZ1 bmN0aW9uIFVJSW50ZW50aW9uYWxTdHJlYW1SZWZyZXNoKGEsYil7Y29weV9wcm9w ZXJ0aWVzKHRoaXMse2lzQXV0b1JlZnJlc2hpbmc6ZmFsc2UsbGFzdFJlZnJlc2g6 RGF0ZS5ub3coKX0pO1VJSW50ZW50aW9uYWxTdHJlYW1SZWZyZXNoLmluc3RhbmNl PXRoaXM7dGhpcy5zZXRBdXRvUmVmcmVzaENvbmZpZyhhKTt0aGlzLnVwZGF0ZUNv bmZpZ0hhbmRsZXI9QXJiaXRlci5zdWJzY3JpYmUoVUlJbnRlbnRpb25hbFN0cmVh bU1lc3NhZ2UuVVBEQVRFX0FVVE9SRUZSRVNIX0NPTkZJRyx0aGlzLnVwZGF0ZUF1 dG9SZWZyZXNoQ29uZmlnLmJpbmQodGhpcykpO3RoaXMudXBkYXRlUmVmcmVzaFRp bWVIYW5kbGVyPUFyYml0ZXIuc3Vic2NyaWJlKFVJSW50ZW50aW9uYWxTdHJlYW1N ZXNzYWdlLlVQREFURV9MQVNUX1JFRlJFU0hfVElNRSx0aGlzLnVwZGF0ZUxhc3RS ZWZyZXNoVGltZS5iaW5kKHRoaXMpKTtvbmxlYXZlUmVnaXN0ZXIodGhpcy51bmxv YWQuYmluZCh0aGlzKSk7dGhpcy51c2VyQWN0aXZpdHkoKTt0aGlzLnVhVG9rZW49 VXNlckFjdGl2aXR5LnN1YnNjcmliZSh0aGlzLnVzZXJBY3Rpdml0eS5iaW5kKHRo aXMpKTt0aGlzLmF1dG9SZWZyZXNoSW50ZXJ2YWw9c2V0SW50ZXJ2YWwodGhpcy5j aGVja0F1dG9QYWdlUmVmcmVzaC5iaW5kKHRoaXMpLHRoaXMuY2hlY2tBdXRvUmVm cmVzaFRpbWVJbnRlcnZhbCk7dGhpcy5hY3RpdmVSZWZyZXNoSW50ZXJ2YWw9c2V0 SW50ZXJ2YWwodGhpcy5jaGVja0FjdGl2ZVJlZnJlc2guYmluZCh0aGlzKSx0aGlz LmNoZWNrQWN0aXZlUmVmcmVzaFRpbWVJbnRlcnZhbCk7dGhpcy5lbmFibGVBdXRv UmVmcmVzaChiKTtBcmJpdGVyLnN1YnNjcmliZShVSUludGVudGlvbmFsU3RyZWFt TWVzc2FnZS5VUERBVEVfU1RSRUFNLExpdmVUaW1lci5sb29wLmJpbmQoTGl2ZVRp bWVyLHRydWUpKTtBcmJpdGVyLnN1YnNjcmliZShVSUludGVudGlvbmFsU3RyZWFt TWVzc2FnZS5SRUZSRVNIX1NUUkVBTSxMaXZlVGltZXIubG9vcC5iaW5kKExpdmVU aW1lcix0cnVlKSk7aWYodGhpcy51c2VQcmVzZW5jZSlVSUludGVudGlvbmFsU3Ry ZWFtUmVmcmVzaC5wcmVzZW5jZVJlZ2lzdGVyKCk7fWNvcHlfcHJvcGVydGllcyhV SUludGVudGlvbmFsU3RyZWFtUmVmcmVzaCx7X3ByZXNlbmNlSW5pdDpmYWxzZSxE SVNBQkxFX0FVVE9SRUZSRVNIX1RJTUU6NCo2MCoxMDAwLENIRUNLX0FVVE9SRUZS RVNIX0lOVEVSVkFMOjUqNjAqMTAwMCxBVVRPUkVGUkVTSF9JTkFDVElWRV9USU1F OjMwKjYwKjEwMDAsSElHSExJR0hUU19PVkVSUklERV9USU1FOjM2MCo2MCoxMDAw LENIRUNLX0FDVElWRV9SRUZSRVNIX1RJTUU6NSo2MCoxMDAwLEFDVElWRV9SRUZS RVNIX1RJTUU6MzAqMTAwMH0pO1VJSW50ZW50aW9uYWxTdHJlYW1SZWZyZXNoLnBy ZXNlbmNlUmVnaXN0ZXI9ZnVuY3Rpb24oKXtpZihVSUludGVudGlvbmFsU3RyZWFt UmVmcmVzaC5fcHJlc2VuY2VJbml0KXJldHVybiB0cnVlO0FyYml0ZXIuc3Vic2Ny aWJlKFByZXNlbmNlTWVzc2FnZS5nZXRBcmJpdGVyTWVzc2FnZVR5cGUoJ2ZlZWRw dWInKSxVSUludGVudGlvbmFsU3RyZWFtUmVmcmVzaC5oYW5kbGVOZXdTdG9yeU1l c3NhZ2UpO1VJSW50ZW50aW9uYWxTdHJlYW1SZWZyZXNoLl9wcmVzZW5jZUluaXQ9 dHJ1ZTt9O1VJSW50ZW50aW9uYWxTdHJlYW1SZWZyZXNoLnByb3RvdHlwZS51cGRh dGVBdXRvUmVmcmVzaENvbmZpZz1mdW5jdGlvbihiLGEpe2lmKGI9PVVJSW50ZW50 aW9uYWxTdHJlYW1NZXNzYWdlLlVQREFURV9BVVRPUkVGUkVTSF9DT05GSUcpdGhp cy5zZXRBdXRvUmVmcmVzaENvbmZpZyhhKTt9O1VJSW50ZW50aW9uYWxTdHJlYW1S ZWZyZXNoLnByb3RvdHlwZS51cGRhdGVMYXN0UmVmcmVzaFRpbWU9ZnVuY3Rpb24o YSl7aWYoYT09VUlJbnRlbnRpb25hbFN0cmVhbU1lc3NhZ2UuVVBEQVRFX0xBU1Rf UkVGUkVTSF9USU1FKXRoaXMubGFzdFJlZnJlc2g9RGF0ZS5ub3coKTt9O1VJSW50 ZW50aW9uYWxTdHJlYW1SZWZyZXNoLnByb3RvdHlwZS5zZXRBdXRvUmVmcmVzaENv bmZpZz1mdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPTI0KjYwKjYwKjEwMDA7aWYo IXRoaXMuc3RvcnlJbnRlcnZhbCl0aGlzLnN0b3J5SW50ZXJ2YWw9Y29hbGVzY2Uo YS5zdG9yeV9pbnRlcnZhbCxudWxsKTt0aGlzLmFsbG93QXV0b1JlZnJlc2g9Y29h bGVzY2UoYS5hbGxvd19hdXRvX3JlZnJlc2gsZmFsc2UpO3RoaXMuaW5hY3RpdmVU aHJlc2hvbGQ9Y29hbGVzY2UoYS5pbmFjdGl2ZV90aHJlc2hvbGQsMCk7dGhpcy5h Y3RpdmVSZWZyZXNoVGltZT1jb2FsZXNjZShhLmZhc3RfcmVmcmVzaF9yYXRlLGIp O3RoaXMuaW5hY3RpdmVSZWZyZXNoVGltZT1jb2FsZXNjZShhLnNsb3dfcmVmcmVz aF9yYXRlLGIpO3RoaXMuYWxsb3dQb2xsaW5nPWNvYWxlc2NlKGEuYWxsb3dfcG9s bGluZyxmYWxzZSk7dGhpcy5yZWZyZXNoRmFjdG9yPWNvYWxlc2NlKGEucmVmcmVz aF9mYWN0b3IsMTApO3RoaXMubWluUmVmcmVzaEludGVydmFsPWNvYWxlc2NlKGEu bWluX3JlZnJlc2hfaW50ZXJ2YWwsNjAqMTAwMCk7dGhpcy51c2VQcmVzZW5jZT1j b2FsZXNjZShhLnVzZV9wcmVzZW5jZSxmYWxzZSk7dGhpcy5hY3RpdmVSZWZyZXNo PWNvYWxlc2NlKGEuYWN0aXZlX3JlZnJlc2gsZmFsc2UpO3RoaXMuY2hlY2tBY3Rp dmVSZWZyZXNoVGltZUludGVydmFsPWNvYWxlc2NlKGEuY2hlY2tfYWN0aXZlX3Jl ZnJlc2hfaW50ZXJ2YWwsVUlJbnRlbnRpb25hbFN0cmVhbVJlZnJlc2guQ0hFQ0tf QUNUSVZFX1JFRlJFU0hfVElNRSk7dGhpcy5hY3RpdmVSZWZyZXNoVGltZUludGVy dmFsPWNvYWxlc2NlKGEuYWN0aXZlX3JlZnJlc2hfaW50ZXJ2YWwsVUlJbnRlbnRp b25hbFN0cmVhbVJlZnJlc2guQUNUSVZFX1JFRlJFU0hfVElNRSk7dGhpcy5kaXNh YmxlQXV0b1JlZnJlc2hUaW1lPWNvYWxlc2NlKGEuZGlzYWJsZV9hdXRvcmVmcmVz aF90aW1lLFVJSW50ZW50aW9uYWxTdHJlYW1SZWZyZXNoLkRJU0FCTEVfQVVUT1JF RlJFU0hfVElNRSk7dGhpcy5jaGVja0F1dG9SZWZyZXNoVGltZUludGVydmFsPWNv YWxlc2NlKGEuY2hlY2tfYXV0b3JlZnJlc2hfdGltZV9pbnRlcnZhbCxVSUludGVu dGlvbmFsU3RyZWFtUmVmcmVzaC5DSEVDS19BVVRPUkVGUkVTSF9JTlRFUlZBTCk7 dGhpcy5hdXRvUmVmcmVzaEluYWN0aXZlVGltZT1jb2FsZXNjZShhLmF1dG9yZWZy ZXNoX2luYWN0aXZlX3RpbWUsVUlJbnRlbnRpb25hbFN0cmVhbVJlZnJlc2guQVVU T1JFRlJFU0hfSU5BQ1RJVkVfVElNRSk7dGhpcy5oaWdobGlnaHRzT3ZlcnJpZGVU aW1lPWNvYWxlc2NlKGEuaGlnaGxpZ2h0c19vdmVycmlkZV90aW1lLFVJSW50ZW50 aW9uYWxTdHJlYW1SZWZyZXNoLkhJR0hMSUdIVFNfT1ZFUlJJREVfVElNRSk7cmV0 dXJuIHRoaXM7fTtVSUludGVudGlvbmFsU3RyZWFtUmVmcmVzaC5wcm90b3R5cGUu dW5sb2FkPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVBdXRvUmVmcmVzaChmYWxzZSk7 dGhpcy5jbGVhbnVwUmVmcmVzaEludGVydmFsKCk7VXNlckFjdGl2aXR5LnVuc3Vi c2NyaWJlKHRoaXMudWFUb2tlbik7dGhpcy51cGRhdGVDb25maWdIYW5kbGVyJiZB cmJpdGVyLnVuc3Vic2NyaWJlKHRoaXMudXBkYXRlQ29uZmlnSGFuZGxlcik7dGhp cy51cGRhdGVSZWZyZXNoVGltZUhhbmRsZXImJkFyYml0ZXIudW5zdWJzY3JpYmUo dGhpcy51cGRhdGVSZWZyZXNoVGltZUhhbmRsZXIpO307VUlJbnRlbnRpb25hbFN0 cmVhbVJlZnJlc2gucHJvdG90eXBlLnVzZXJBY3Rpdml0eT1mdW5jdGlvbigpe3Zh ciBhPXRoaXMuaXNJbmFjdGl2ZSgpO3RoaXMubGFzdEFjdGl2aXR5PURhdGUubm93 KCk7dGhpcy5pc0F1dG9SZWZyZXNoaW5nPXRydWU7aWYoYSYmdGhpcy5jYW5BdXRv UmVmcmVzaCgpKXRoaXMucnVuQXV0b1JlZnJlc2goKTtyZXR1cm4gdHJ1ZTt9O1VJ SW50ZW50aW9uYWxTdHJlYW1SZWZyZXNoLnByb3RvdHlwZS5pc0luYWN0aXZlPWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TVNTaW5jZUxhc3RBY3Rpdml0eSgpPnRo aXMuaW5hY3RpdmVUaHJlc2hvbGQ7fTtVSUludGVudGlvbmFsU3RyZWFtUmVmcmVz aC5wcm90b3R5cGUuZ2V0TVNTaW5jZUxhc3RBY3Rpdml0eT1mdW5jdGlvbigpe3Jl dHVybiBEYXRlLm5vdygpLXRoaXMubGFzdEFjdGl2aXR5O307VUlJbnRlbnRpb25h bFN0cmVhbVJlZnJlc2gucHJvdG90eXBlLmdldE1TU2luY2VMYXN0UmVmcmVzaD1m dW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygpLXRoaXMubGFzdFJlZnJlc2g7fTtV SUludGVudGlvbmFsU3RyZWFtUmVmcmVzaC5wcm90b3R5cGUuZ2V0UmVmcmVzaElu dGVydmFsPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0luYWN0aXZlKCkpe3JldHVybiB0 aGlzLmluYWN0aXZlUmVmcmVzaFRpbWU7fWVsc2UgaWYodGhpcy5zdG9yeUludGVy dmFsIT1udWxsKXt2YXIgYT10aGlzLnN0b3J5SW50ZXJ2YWwqdGhpcy5yZWZyZXNo RmFjdG9yO3JldHVybiBNYXRoLm1heChhLHRoaXMuYWN0aXZlUmVmcmVzaFRpbWUp O31lbHNlIHJldHVybiB0aGlzLmFjdGl2ZVJlZnJlc2hUaW1lO307VUlJbnRlbnRp b25hbFN0cmVhbVJlZnJlc2gucHJvdG90eXBlLmNhbkF1dG9SZWZyZXNoPWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuaXNBdXRvUmVmcmVzaGluZyYmdGhpcy5hbGxvd0F1 dG9SZWZyZXNoO307VUlJbnRlbnRpb25hbFN0cmVhbVJlZnJlc2guaGFuZGxlTmV3 U3RvcnlNZXNzYWdlPWZ1bmN0aW9uKGIsYSl7aWYoYiE9UHJlc2VuY2VNZXNzYWdl LmdldEFyYml0ZXJNZXNzYWdlVHlwZSgnZmVlZHB1YicpKXJldHVybjtBcmJpdGVy LmluZm9ybShVSUludGVudGlvbmFsU3RyZWFtTWVzc2FnZS5VUERBVEVfU1RSRUFN KTt9O1VJSW50ZW50aW9uYWxTdHJlYW1SZWZyZXNoLnByb3RvdHlwZS5jYW5jZWxV cGRhdGU9ZnVuY3Rpb24oKXtpZih0aGlzLnVwZGF0ZVRhc2spe2NsZWFyVGltZW91 dCh0aGlzLnVwZGF0ZVRhc2spO3RoaXMudXBkYXRlVGFzaz1udWxsO319O1VJSW50 ZW50aW9uYWxTdHJlYW1SZWZyZXNoLnByb3RvdHlwZS5ydW5VcGRhdGVQb2xsPWZ1 bmN0aW9uKCl7dGhpcy51cGRhdGVUYXNrPW51bGw7aWYodGhpcy5jYW5BdXRvUmVm cmVzaCgpKXRoaXMucnVuQXV0b1JlZnJlc2goKTt9O1VJSW50ZW50aW9uYWxTdHJl YW1SZWZyZXNoLnByb3RvdHlwZS5ydW5BdXRvUmVmcmVzaD1mdW5jdGlvbigpe3Zh ciBhPTUwO2lmKHRoaXMuZ2V0TVNTaW5jZUxhc3RSZWZyZXNoKCk+PXRoaXMubWlu UmVmcmVzaEludGVydmFsLWEpQXJiaXRlci5pbmZvcm0oVUlJbnRlbnRpb25hbFN0 cmVhbU1lc3NhZ2UuVVBEQVRFX1NUUkVBTSk7dGhpcy5zY2hlZHVsZVBvbGwodGhp cy5nZXRSZWZyZXNoSW50ZXJ2YWwoKSk7fTtVSUludGVudGlvbmFsU3RyZWFtUmVm cmVzaC5wcm90b3R5cGUuc2NoZWR1bGVQb2xsPWZ1bmN0aW9uKGEpe3RoaXMuY2Fu Y2VsVXBkYXRlKCk7aWYodGhpcy5hbGxvd1BvbGxpbmcpdGhpcy51cGRhdGVUYXNr PXNldFRpbWVvdXQodGhpcy5ydW5VcGRhdGVQb2xsLmJpbmQodGhpcyksYSk7fTtV SUludGVudGlvbmFsU3RyZWFtUmVmcmVzaC5wcm90b3R5cGUuZW5hYmxlQXV0b1Jl ZnJlc2g9ZnVuY3Rpb24oYixjKXt0aGlzLmlzQXV0b1JlZnJlc2hpbmc9YjtpZihi KXt2YXIgYT1jPzA6dGhpcy5nZXRSZWZyZXNoSW50ZXJ2YWwoKTt0aGlzLnNjaGVk dWxlUG9sbChhKTt9ZWxzZSB0aGlzLmNhbmNlbFVwZGF0ZSgpO307VUlJbnRlbnRp b25hbFN0cmVhbVJlZnJlc2gucHJvdG90eXBlLmNoZWNrQXV0b1BhZ2VSZWZyZXNo PWZ1bmN0aW9uKCl7aWYoIXRoaXMuYWxsb3dBdXRvUmVmcmVzaClyZXR1cm47aWYo dGhpcy5pc0F1dG9SZWZyZXNoaW5nJiYodGhpcy5nZXRNU1NpbmNlTGFzdEFjdGl2 aXR5KCk+dGhpcy5kaXNhYmxlQXV0b1JlZnJlc2hUaW1lKSl0aGlzLmlzQXV0b1Jl ZnJlc2hpbmc9ZmFsc2U7aWYodGhpcy5nZXRNU1NpbmNlTGFzdFJlZnJlc2goKTx0 aGlzLmF1dG9SZWZyZXNoSW5hY3RpdmVUaW1lKXJldHVybjt2YXIgYT10aGlzLmdl dE1TU2luY2VMYXN0QWN0aXZpdHkoKTtpZihhPnRoaXMuYXV0b1JlZnJlc2hJbmFj dGl2ZVRpbWUpe3ZhciBiPShhPnRoaXMuaGlnaGxpZ2h0c092ZXJyaWRlVGltZSk7 QXJiaXRlci5pbmZvcm0oVUlJbnRlbnRpb25hbFN0cmVhbU1lc3NhZ2UuUkVGUkVT SF9TVFJFQU0se3Nob3VsZE92ZXJyaWRlOmJ9KTt9fTtVSUludGVudGlvbmFsU3Ry ZWFtUmVmcmVzaC5wcm90b3R5cGUuY2hlY2tBY3RpdmVSZWZyZXNoPWZ1bmN0aW9u KCl7aWYoIXRoaXMuYWxsb3dBdXRvUmVmcmVzaClyZXR1cm47aWYodGhpcy5nZXRN U1NpbmNlTGFzdFJlZnJlc2goKTx0aGlzLmFjdGl2ZVJlZnJlc2hUaW1lSW50ZXJ2 YWwpcmV0dXJuO2lmKHRoaXMuZ2V0TVNTaW5jZUxhc3RBY3Rpdml0eSgpPHRoaXMu YWN0aXZlUmVmcmVzaFRpbWVJbnRlcnZhbClBcmJpdGVyLmluZm9ybShVSUludGVu dGlvbmFsU3RyZWFtTWVzc2FnZS5VUERBVEVfU1RSRUFNKTt9O1VJSW50ZW50aW9u YWxTdHJlYW1SZWZyZXNoLnByb3RvdHlwZS5jbGVhbnVwUmVmcmVzaEludGVydmFs PWZ1bmN0aW9uKCl7aWYodGhpcy5hdXRvUmVmcmVzaEludGVydmFsKXtjbGVhcklu dGVydmFsKHRoaXMuYXV0b1JlZnJlc2hJbnRlcnZhbCk7dGhpcy5hdXRvUmVmcmVz aEludGVydmFsPW51bGw7fX07CmZ1bmN0aW9uIHR6X2NhbGN1bGF0ZShmKXt2YXIg YT1uZXcgRGF0ZSgpO3ZhciBiPWEuZ2V0VGltZXpvbmVPZmZzZXQoKS8zMDt2YXIg ZT1hLmdldFRpbWUoKS8xMDAwO3ZhciBkPU1hdGgucm91bmQoKGYtZSkvMTgwMCk7 dmFyIGM9TWF0aC5yb3VuZChiK2QpJTQ4O2lmKGM9PTApe3JldHVybiAwO31lbHNl IGlmKGM+MjQpe2MtPU1hdGguY2VpbChjLzQ4KSo0ODt9ZWxzZSBpZihjPC0yOClj Kz1NYXRoLmNlaWwoYy8tNDgpKjQ4O3JldHVybiBjKjMwO31mdW5jdGlvbiB0el9h dXRvc2V0KGQsYyl7aWYoIWR8fHVuZGVmaW5lZD09YylyZXR1cm47aWYod2luZG93 LnR6X2F1dG9zZXQuY2FsY3VsYXRlZClyZXR1cm47d2luZG93LnR6X2F1dG9zZXQu Y2FsY3VsYXRlZD10cnVlO3ZhciBiPS10el9jYWxjdWxhdGUoZCk7aWYoYiE9Yyl7 dmFyIGE9Jy9hamF4L2F1dG9zZXRfdGltZXpvbmVfYWpheC5waHAnO25ldyBBc3lu Y1JlcXVlc3QoKS5zZXRVUkkoYSkuc2V0RGF0YSh7Z210X29mZjpifSkuc2V0RXJy b3JIYW5kbGVyKGJhZ29maG9sZGluZykuc2V0VHJhbnNwb3J0RXJyb3JIYW5kbGVy KGJhZ29maG9sZGluZykuc2V0T3B0aW9uKCdzdXBwcmVzc0Vycm9yQWxlcnRzJyx0 cnVlKS5zZW5kKCk7fX0KZnVuY3Rpb24gdWZpX2FkZF9mdF9oaWRkZW5fbm9kZShj KXtpZihjLmxpbmtfZGF0YSlyZXR1cm47dmFyIGE9Y29sbGVjdF9kYXRhX2F0dHJp YnMoYyxbJ2Z0J10pLmZ0O2lmKGNvdW50KGEpKXt2YXIgYj0kTignaW5wdXQnLHt0 eXBlOidoaWRkZW4nLG5hbWU6J2xpbmtfZGF0YScsdmFsdWU6SlNPTi5zdHJpbmdp ZnkoYSl9KTtjLmFwcGVuZENoaWxkKGIpO319ZnVuY3Rpb24gdWZpX2FkZF9hbGxf bGlua19kYXRhKCl7Qm9vdGxvYWRlci5sb2FkQ29tcG9uZW50cygnZG9tLWNvbGxl Y3QnLGZ1bmN0aW9uKCl7RE9NLnNjcnkoZG9jdW1lbnQuYm9keSwnZm9ybS5jb21t ZW50YWJsZV9pdGVtJykuZm9yRWFjaCh1ZmlfYWRkX2Z0X2hpZGRlbl9ub2RlKTt9 KTt9Cm9ubG9hZFJlZ2lzdGVyKGZ1bmN0aW9uKCl7U2VsZWN0b3Iuc3Vic2NyaWJl KCdjbG9zZScsZnVuY3Rpb24oYSxiKXtpZihDU1MuaGFzQ2xhc3MoYi5zZWxlY3Rv ciwnY29tbWVudEhpZGVTZWxlY3RvcicpKXt2YXIgYz1TZWxlY3Rvci5nZXRWYWx1 ZShiLnNlbGVjdG9yKTtjJiZTZWxlY3Rvci5zZXRTZWxlY3RlZC5jdXJyeShiLnNl bGVjdG9yLGMsZmFsc2UpLmRlZmVyKCk7fX0pO30pOwpvbmxvYWRSZWdpc3Rlcihm dW5jdGlvbigpe2FkZF9wcm9wZXJ0aWVzKCdfX2JlaGF2aW9ycycse30pO2lmKF9f YmVoYXZpb3JzLlNjcm9sbGFibGUpcmV0dXJuO19fYmVoYXZpb3JzLlNjcm9sbGFi bGU9dHJ1ZTt2YXIgYz0nc2Nyb2xsYWJsZSc7dmFyIGI9ZnVuY3Rpb24oZXZlbnQp e3ZhciBqPVBhcmVudC5ieUNsYXNzKGV2ZW50LmdldFRhcmdldCgpLGMpO2lmKCFq KXJldHVybjtpZigodHlwZW9mIGV2ZW50LmF4aXMhPT0ndW5kZWZpbmVkJyYmZXZl bnQuYXhpcz09PWV2ZW50LkhPUklaT05UQUxfQVhJUyl8fChldmVudC53aGVlbERl bHRhWCYmIWV2ZW50LndoZWVsRGVsdGFZKSl7ZXZlbnQucHJldmVudCgpO3JldHVy bjt9dmFyIGU9ZXZlbnQud2hlZWxEZWx0YT9ldmVudC53aGVlbERlbHRhOi1ldmVu dC5kZXRhaWw7dmFyIGg9ai5zY3JvbGxIZWlnaHQ7dmFyIGQ9ai5jbGllbnRIZWln aHQ7aWYoaD5kKXt2YXIgaT1qLnNjcm9sbFRvcDtpZigoZT4wJiZpPT09MCl8fChl PDAmJmk+PWgtZCkpe2V2ZW50LnByZXZlbnQoKTt9ZWxzZSBpZih1YS5pZSgpPDkp e3ZhciBnPUNTUy5nZXRTdHlsZShqLCdmb250LXNpemUnKTtpZihnLmluZGV4T2Yo J3B4Jyk8MCl7dmFyIGY9JE4oJ2RpdicpO2Yuc3R5bGUuZm9udFNpemU9ZztmLnN0 eWxlLmhlaWdodD0nMWVtJztnPWYuc3R5bGUucGl4ZWxIZWlnaHQ7fWVsc2UgZz1w YXJzZUludChnLDEwKTtqLnNjcm9sbFRvcD1pLU1hdGgucm91bmQoZS8xMjAqZyk7 ZXZlbnQucHJldmVudCgpO319fTt2YXIgYT1kb2N1bWVudC5kb2N1bWVudEVsZW1l bnQ7aWYodWEuZmlyZWZveCgpKXthLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU1vdXNl U2Nyb2xsJyxiLGZhbHNlKTt9ZWxzZSBFdmVudC5saXN0ZW4oYSwnbW91c2V3aGVl bCcsYik7fSk7CmZ1bmN0aW9uIE1lbnRpb25zSW5wdXQoYSl7RGF0YVN0b3JlLnNl dChhLCdNZW50aW9uc0lucHV0Jyx0aGlzKTt0aGlzLl9yb290PWE7fU1lbnRpb25z SW5wdXQuZ2V0SW5zdGFuY2U9ZnVuY3Rpb24oYSl7dmFyIGI9UGFyZW50LmJ5Q2xh c3MoYSwndWlNZW50aW9uc0lucHV0Jyk7cmV0dXJuIGI/RGF0YVN0b3JlLmdldChi LCdNZW50aW9uc0lucHV0Jyk6bnVsbDt9OyhmdW5jdGlvbigpe3ZhciBmPVsnQCcs J1xcdWZmMjAnLCcrJywnXFx1ZmYwYiddLmpvaW4oJycpO3ZhciBkPScuLCo/JHwj e30oKVxcXlxcLVxcW1xcXVxcXFxcLyElJlwnIn49PD5fOjsnO3ZhciBjPSdcXGJb QS1aXVteIEEtWicrZCsnXSc7dmFyIGU9JyhbXicrZitkKyddfFsnK2QrJ11bXiAn K2QrJ10pJzt2YXIgYj0nKD86XnxcXHMpKD86WycrZisnXSgnK2UrJ3swLDIwfSkp Jzt2YXIgYT0nKD86KD86JytjKycrKXwnK2IrJyknO3ZhciBnPScoPzonK2MrJ3s0 LH0pJztNZW50aW9uc0lucHV0LnByb3RvdHlwZT17X3RyaWdnZXJzOm5ldyBSZWdF eHAoJ1snK2YrJ10kJyksX21hdGNoZXI6bmV3IFJlZ0V4cChiKyckJyksX2F1dG9N YXRjaGVyOm5ldyBSZWdFeHAoYSsnJCcpLF91c2VyTWF0Y2hlcjpuZXcgUmVnRXhw KGcrJyQnKX07fSkoKTtDbGFzcy5taXhpbihNZW50aW9uc0lucHV0LCdBcmJpdGVy Jyx7aW5pdDpmdW5jdGlvbihhLGIsYyl7dGhpcy5pbml0PWJhZ29maG9sZGluZzt0 aGlzLl9pbml0aWFsaXplZD10cnVlO3RoaXMuX3R5cGVhaGVhZD1UeXBlYWhlYWQu Z2V0SW5zdGFuY2UoRE9NLmZpbmQodGhpcy5fcm9vdCwnLm1lbnRpb25zVHlwZWFo ZWFkJykpO3RoaXMuX2hpZ2hsaWdodGVyPURPTS5maW5kKHRoaXMuX3Jvb3QsJy5o aWdobGlnaHRlcicpO3RoaXMuX2hpZ2hsaWdodGVySW5uZXI9dGhpcy5faGlnaGxp Z2h0ZXIuZmlyc3RDaGlsZDt0aGlzLl9oaWdobGlnaHRlckNvbnRlbnQ9RE9NLmZp bmQodGhpcy5fcm9vdCwnLmhpZ2hsaWdodGVyQ29udGVudCcpO3RoaXMuX2hpZGRl bklucHV0PURPTS5maW5kKHRoaXMuX3Jvb3QsJy5tZW50aW9uc0hpZGRlbicpO3Ro aXMuX2lucHV0PXRoaXMuX3R5cGVhaGVhZC5nZXRDb3JlKCkuZ2V0RWxlbWVudCgp O3RoaXMuX3BsYWNlaG9sZGVyPXRoaXMuX2lucHV0LmdldEF0dHJpYnV0ZSgncGxh Y2Vob2xkZXInKXx8Jyc7dGhpcy5fbWF4TWVudGlvbnM9YS5tYXh8fDY7dGhpcy5f bWV0cmljcz1jO2lmKHVhLmZpcmVmb3goKTw0KXt0aGlzLl9pbnB1dC5ibHVyKCk7 c2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuX2lucHV0LmZvY3VzKCk7fS5iaW5k KHRoaXMpKTt9aWYoIXRoaXMuX2hpZGRlbklucHV0Lm5hbWUpe3ZhciBkPXRoaXMu X2lucHV0Lm5hbWU7dGhpcy5faW5wdXQubmFtZT1kKydfdGV4dCc7dGhpcy5faGlk ZGVuSW5wdXQubmFtZT1kO310aGlzLl9pbml0RXZlbnRzKCk7dGhpcy5faW5pdFR5 cGVhaGVhZCgpO3RoaXMucmVzZXQoYik7dGhpcy5pbmZvcm0oJ2luaXQnLG51bGws QXJiaXRlci5CRUhBVklPUl9TVEFURSk7fSxyZXNldDpmdW5jdGlvbihiKXtpZigh dGhpcy5faW5pdGlhbGl6ZWQpcmV0dXJuO3RoaXMuX21lbnRpb25lZD17fTt0aGlz Ll9vcmRlcmVkVUlEcz1bXTt0aGlzLl9udW1NZW50aW9uZWQ9MDt0aGlzLl9maWx0 ZXJEYXRhPW51bGw7dGhpcy5faGlkZGVuSW5wdXQmJih0aGlzLl9oaWRkZW5JbnB1 dC52YWx1ZT0nJyk7dGhpcy5faGlnaGxpZ2h0ZXJDb250ZW50JiZET00uZW1wdHko dGhpcy5faGlnaGxpZ2h0ZXJDb250ZW50KTt0aGlzLl9oaWdobGlnaHRlckF1eENv bnRlbnQmJkRPTS5yZW1vdmUodGhpcy5faGlnaGxpZ2h0ZXJBdXhDb250ZW50KTt0 aGlzLl9oaWdobGlnaHRlckF1eENvbnRlbnQ9bnVsbDtJbnB1dC5zZXRQbGFjZWhv bGRlcih0aGlzLl9pbnB1dCx0aGlzLl9wbGFjZWhvbGRlcik7Q1NTLnNldFN0eWxl KHRoaXMuX3R5cGVhaGVhZC5nZXRFbGVtZW50KCksJ2hlaWdodCcsJ2F1dG8nKTtp ZihiKXtJbnB1dC5zZXRWYWx1ZSh0aGlzLl9pbnB1dCxiLmZsYXR0ZW5lZCk7Zm9y KHZhciBhIGluIGIubWVudGlvbl9kYXRhKXRoaXMuX2FkZFRva2VuKHt1aWQ6YSx0 ZXh0OmIubWVudGlvbl9kYXRhW2FdLHR5cGU6J3Vua25vd24nfSk7fXRoaXMuX3Vw ZGF0ZVR5cGVhaGVhZCgpO3RoaXMuX3VwZGF0ZVdpZHRoKCk7dGhpcy5fdXBkYXRl KCk7fSxnZXRSYXdWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBJbnB1dC5nZXRWYWx1 ZSh0aGlzLl9oaWRkZW5JbnB1dCk7fSxjaGVja1ZhbHVlOmZ1bmN0aW9uKCl7dmFy IGE9dGhpcy5fdHlwZWFoZWFkLmdldENvcmUoKS5nZXRWYWx1ZSgpO2lmKHRoaXMu X3RyaWdnZXJzLmV4ZWMoYSl8fGE9PT0nJyl0aGlzLmluZm9ybSgnc2Vzc2lvbkVu ZCcse30pO30sZ2V0VHlwZWFoZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3R5 cGVhaGVhZDt9LF9pbml0RXZlbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdXBk YXRlLmJpbmQodGhpcyk7RXZlbnQubGlzdGVuKHRoaXMuX2lucHV0LHtpbnB1dDph LGtleXVwOmEsY2hhbmdlOmEsZm9jdXM6dGhpcy5fdXBkYXRlV2lkdGguYmluZCh0 aGlzKX0pO2lmKHRoaXMuX21ldHJpY3Mpe3RoaXMuX21ldHJpY3MuX3Jlc2V0KCk7 dGhpcy5fbWV0cmljcy5iaW5kU2Vzc2lvblN0YXJ0KHRoaXMuX3R5cGVhaGVhZCwn cmVuZGVyJyx0cnVlKTt0aGlzLl9tZXRyaWNzLmJpbmRTZXNzaW9uRW5kKHRoaXMu X3R5cGVhaGVhZC5nZXRWaWV3KCksJ3NlbGVjdCcsdHJ1ZSk7dGhpcy5fbWV0cmlj cy5iaW5kU2Vzc2lvbkVuZCh0aGlzLCdzZXNzaW9uRW5kJyxmYWxzZSk7RXZlbnQu bGlzdGVuKHRoaXMuX2lucHV0LCdrZXl1cCcsZnVuY3Rpb24oZXZlbnQpe3RoaXMu Y2hlY2tWYWx1ZS5iaW5kKHRoaXMpLmRlZmVyKCk7fS5iaW5kKHRoaXMpKTt9fSxf aW5pdFR5cGVhaGVhZDpmdW5jdGlvbigpe3RoaXMuX3R5cGVhaGVhZC5zdWJzY3Jp YmUoJ3NlbGVjdCcsZnVuY3Rpb24oZSxmKXt2YXIgZz1mLnNlbGVjdGVkO3RoaXMu X2FkZFRva2VuKHt1aWQ6Zy51aWQsdGV4dDpnLnRleHQsdHlwZTpnLnR5cGV9KTt0 aGlzLnVwZGF0ZVZhbHVlKCk7fS5iaW5kKHRoaXMpKTt2YXIgYj10aGlzLl9pbnB1 dDt2YXIgZD1udWxsO3ZhciBhPWZ1bmN0aW9uKCl7aWYoZD09PW51bGwpe2Q9SW5w dXQuZ2V0U3VibWl0T25FbnRlcihiKTtJbnB1dC5zZXRTdWJtaXRPbkVudGVyKGIs ZmFsc2UpO319O3ZhciBjPWZ1bmN0aW9uKCl7aWYoZCE9PW51bGwpe0lucHV0LnNl dFN1Ym1pdE9uRW50ZXIoYixkKTtkPW51bGw7fX07dGhpcy5fdHlwZWFoZWFkLnN1 YnNjcmliZSgncmVuZGVyJyxhKTt0aGlzLl90eXBlYWhlYWQuc3Vic2NyaWJlKCdy ZXNldCcsYyk7dGhpcy5fdHlwZWFoZWFkLnN1YnNjcmliZSgnaGlnaGxpZ2h0Jyxm dW5jdGlvbihlLGYpe2YuaW5kZXg+PTA/YSgpOmMoKTt9KTt0aGlzLl90eXBlYWhl YWQuc3Vic2NyaWJlKCdxdWVyeScsZnVuY3Rpb24oKXt0aGlzLl9maWx0ZXJEYXRh PW51bGw7fS5iaW5kKHRoaXMpKTt0aGlzLl90eXBlYWhlYWQuZ2V0Q29yZSgpLnN1 ZmZpeD0nJzt0aGlzLl90eXBlYWhlYWQuZ2V0RGF0YSgpLnNldEZpbHRlcih0aGlz Ll9maWx0ZXJSZXN1bHRzLmJpbmQodGhpcykpO30sX2ZpbHRlclJlc3VsdHM6ZnVu Y3Rpb24oZCl7aWYodGhpcy5fZmlsdGVyRGF0YT09PW51bGwpe3ZhciBhPUlucHV0 LmdldFNlbGVjdGlvbih0aGlzLl9pbnB1dCkuc3RhcnR8fDA7Zm9yKHZhciBjPTA7 Yzx0aGlzLl9vZmZzZXRzLmxlbmd0aDtjKyspe3ZhciBlPXRoaXMuX29mZnNldHNb Y107aWYoYT5lWzBdJiZhPD1lWzFdKXt0aGlzLl9maWx0ZXJEYXRhPXtjYXJldElz SW5zaWRlTWVudGlvbjp0cnVlfTtyZXR1cm4gZmFsc2U7fX12YXIgYj10aGlzLl90 eXBlYWhlYWQuZ2V0Q29yZSgpO3RoaXMuX2ZpbHRlckRhdGE9e3ZhbHVlOmIuZ2V0 VmFsdWUoKSxyYXdWYWx1ZTpiLmdldFJhd1ZhbHVlKCl9O31pZih0aGlzLl9maWx0 ZXJEYXRhLmNhcmV0SXNJbnNpZGVNZW50aW9uKXJldHVybiBmYWxzZTtpZih0aGlz Ll9tYXRjaGVyLnRlc3QodGhpcy5fZmlsdGVyRGF0YS5yYXdWYWx1ZSkpcmV0dXJu IHRydWU7aWYoZC50eXBlIT0ndXNlcicpcmV0dXJuIGZhbHNlO2lmKHRoaXMuX3Vz ZXJNYXRjaGVyLnRlc3QodGhpcy5fZmlsdGVyRGF0YS52YWx1ZSkpcmV0dXJuIHRy dWU7cmV0dXJuIFR5cGVhaGVhZFV0aWwuaXNFeGFjdE1hdGNoKHRoaXMuX2ZpbHRl ckRhdGEudmFsdWUsdGhpcy5fdHlwZWFoZWFkLmdldERhdGEoKS5nZXRUZXh0VG9J bmRleChkKSk7fSxfYWRkVG9rZW46ZnVuY3Rpb24oYSl7dmFyIGI9YS51aWQ7aWYo IXRoaXMuX21lbnRpb25lZC5oYXNPd25Qcm9wZXJ0eShiKSl7dGhpcy5fbWVudGlv bmVkW2JdPWE7dGhpcy5fb3JkZXJlZFVJRHMucHVzaChiKTt0aGlzLl9udW1NZW50 aW9uZWQrKzt0aGlzLl91cGRhdGVUeXBlYWhlYWQoKTt9fSxfcmVtb3ZlVG9rZW46 ZnVuY3Rpb24oYSl7aWYodGhpcy5fbWVudGlvbmVkLmhhc093blByb3BlcnR5KGEp KXtkZWxldGUgdGhpcy5fbWVudGlvbmVkW2FdO3RoaXMuX29yZGVyZWRVSURzLnJl bW92ZShhKTt0aGlzLl9udW1NZW50aW9uZWQtLTt0aGlzLl91cGRhdGVUeXBlYWhl YWQoKTt9fSxfcmVkdWNlVG9rZW46ZnVuY3Rpb24oZixkKXt2YXIgZT1kLnNwbGl0 KCcgJyk7dmFyIGI9W107Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspaWYoZi5p bmRleE9mKGVbYV0pIT0tMSliLnB1c2goZVthXSk7ZT1iO2ZvcihhPTE7YTxlLmxl bmd0aDthKyspZm9yKHZhciBjPTE7YzxlW2EtMV0ubGVuZ3RoKzE7YysrKWlmKGYu aW5kZXhPZihlW2EtMV0uc3Vic3RyKDAsYykrZVthXSkhPS0xKWUuc3BsaWNlKGEt MSwxKTt3aGlsZShmLmluZGV4T2YoZS5qb2luKCcgJykpPT0tMSllLnNwbGljZSgw LDEpO3JldHVybiBlLmpvaW4oJyAnKTt9LF91cGRhdGU6ZnVuY3Rpb24oKXt2YXIg YT1JbnB1dC5nZXRWYWx1ZSh0aGlzLl9pbnB1dCk7aWYoYT09dGhpcy5fdmFsdWUp cmV0dXJuO3RoaXMuX3VwZGF0ZVRva2VucygpO3RoaXMudXBkYXRlVmFsdWUoKTt0 aGlzLl91cGRhdGVEaXJlY3Rpb24oKTt9LF91cGRhdGVUb2tlbnM6ZnVuY3Rpb24o KXt2YXIgZz1JbnB1dC5nZXRWYWx1ZSh0aGlzLl9pbnB1dCk7dmFyIGM9ZmFsc2U7 Zm9yKHZhciBhPTA7YTx0aGlzLl9vcmRlcmVkVUlEcy5sZW5ndGg7KythKXt2YXIg Zj10aGlzLl9vcmRlcmVkVUlEc1thXTt2YXIgYj10aGlzLl9tZW50aW9uZWRbZl07 dmFyIGU9Yi50ZXh0O3ZhciBkO2lmKGIudHlwZT09J3VzZXInJiYoZD10aGlzLl9y ZWR1Y2VUb2tlbihnLGUpKSE9PScnKXtpZihkPT1lLnN1YnN0cmluZygwLGUubGFz dEluZGV4T2YoJyAnKSkmJmc9PXRoaXMuX3ZhbHVlLnN1YnN0cmluZygwLHRoaXMu X3ZhbHVlLmxlbmd0aC0xKSl7Zz1nLnN1YnN0cmluZygwLGcubGFzdEluZGV4T2Yo JyAnKSk7Yz10cnVlO31iLnRleHQ9ZDt9ZWxzZSBpZighZXx8Zy5pbmRleE9mKGUp PT0tMXx8dHlwZW9mIGUhPT0nc3RyaW5nJyl0aGlzLl9yZW1vdmVUb2tlbihmKTt9 dGhpcy5fdmFsdWU9ZztpZihjKUlucHV0LnNldFZhbHVlKHRoaXMuX2lucHV0LGcp O30sdXBkYXRlVmFsdWU6ZnVuY3Rpb24oKXt2YXIgZz1JbnB1dC5nZXRWYWx1ZSh0 aGlzLl9pbnB1dCk7dmFyIGY9dGhpcy5fb3JkZXJlZFVJRHM7dmFyIGM9W107dmFy IGEsZCxlLGI7Zm9yKGI9MDtiPGYubGVuZ3RoOysrYil7ZD10aGlzLl9tZW50aW9u ZWRbZltiXV0udGV4dDtnPWcucmVwbGFjZShkLGZ1bmN0aW9uKGgsaSl7Yy5wdXNo KFtpLGkrZC5sZW5ndGhdKTtyZXR1cm4gZDt9KTt9Zm9yKGI9MDtiPGYubGVuZ3Ro OysrYil7ZT1mW2JdO2Q9dGhpcy5fbWVudGlvbmVkW2VdLnRleHQ7Zz1nLnJlcGxh Y2UoZCwnQFsnK2UrJzpdJyk7fWE9aHRtbGl6ZShnKTtmb3IoYj0wO2I8Zi5sZW5n dGg7KytiKXtlPWZbYl07ZD10aGlzLl9tZW50aW9uZWRbZV0udGV4dDthPWEucmVw bGFjZSgnQFsnK2UrJzpdJywnPGI+JytodG1saXplKGQpKyc8L2I+Jyk7ZD1kLnJl cGxhY2UoL1tcXFxdOl0vZyxmdW5jdGlvbihoKXtyZXR1cm4gJ1xcJytoO30pO2c9 Zy5yZXBsYWNlKCdAWycrZSsnOl0nLCdAWycrZSsnOicrZCsnXScpO31pZih1YS5p ZSgpKWE9YS5yZXBsYWNlKC8gezJ9L2csJyZuYnNwOyAnKTt0aGlzLl9vZmZzZXRz PWM7dGhpcy5faGlkZGVuSW5wdXQudmFsdWU9ZztET00uc2V0Q29udGVudCh0aGlz Ll9oaWdobGlnaHRlckNvbnRlbnQsSFRNTChhKSk7dGhpcy5fdXBkYXRlSGVpZ2h0 KCk7fSxfdXBkYXRlRGlyZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9Q1NTLmdldFN0 eWxlKHRoaXMuX2lucHV0LCdkaXJlY3Rpb24nKTtpZihhPT10aGlzLl9kaXIpcmV0 dXJuO3RoaXMuX2Rpcj1hO0NTUy5zZXRTdHlsZSh0aGlzLl9oaWdobGlnaHRlciwn ZGlyZWN0aW9uJyxhKTtpZihhPT0ncnRsJyl7Q1NTLnNldFN0eWxlKHRoaXMuX2hp Z2hsaWdodGVyLCd0ZXh0LWFsaWduJywncmlnaHQnKTt9ZWxzZSBDU1Muc2V0U3R5 bGUodGhpcy5faGlnaGxpZ2h0ZXIsJ3RleHQtYWxpZ24nLCdsZWZ0Jyk7fSxfdXBk YXRlV2lkdGg6ZnVuY3Rpb24oKXt2YXIgYT1DU1MuZ2V0U3R5bGVGbG9hdC5jdXJy eSh0aGlzLl9pbnB1dCk7dmFyIGI9dGhpcy5faW5wdXQub2Zmc2V0V2lkdGgtYSgn cGFkZGluZ0xlZnQnKS1hKCdwYWRkaW5nUmlnaHQnKS1hKCdib3JkZXJMZWZ0V2lk dGgnKS1hKCdib3JkZXJSaWdodFdpZHRoJyk7aWYodWEuZmlyZWZveCgpKWItPTI7 aWYodWEuaWUoKTw9Nyl7Yi09Q1NTLmdldFN0eWxlRmxvYXQodGhpcy5faGlnaGxp Z2h0ZXJJbm5lciwncGFkZGluZ0xlZnQnKTt0aGlzLl9oaWdobGlnaHRlci5zdHls ZS56b29tPTE7fXRoaXMuX2hpZ2hsaWdodGVySW5uZXIuc3R5bGUud2lkdGg9TWF0 aC5tYXgoYiwwKSsncHgnO30sX3VwZGF0ZUhlaWdodDpmdW5jdGlvbigpe2lmKHRo aXMuX2hpZ2hsaWdodGVyQXV4Q29udGVudCl7dmFyIGE9dGhpcy5faGlnaGxpZ2h0 ZXIub2Zmc2V0SGVpZ2h0O3ZhciBiPXRoaXMuX3R5cGVhaGVhZC5nZXRFbGVtZW50 KCk7aWYoYT5iLm9mZnNldEhlaWdodCl7Q1NTLnNldFN0eWxlKGIsJ2hlaWdodCcs YSsncHgnKTtBcmJpdGVyLmluZm9ybSgncmVmbG93Jyk7fX19LF91cGRhdGVUeXBl YWhlYWQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90eXBlYWhlYWQuZ2V0Q29yZSgp O3ZhciBiPW51bGw7aWYoIXRoaXMuX21heE1lbnRpb25zfHx0aGlzLl9udW1NZW50 aW9uZWQ8dGhpcy5fbWF4TWVudGlvbnMpYj10aGlzLl9hdXRvTWF0Y2hlcjthLm1h dGNoZXI9YjthLnNldEV4Y2x1c2lvbnModGhpcy5fb3JkZXJlZFVJRHMpO3RoaXMu aW5mb3JtKCd1cGRhdGUnLHttZW50aW9uZWQ6dGhpcy5fbWVudGlvbmVkfSk7fSxz ZXRBdXhDb250ZW50OmZ1bmN0aW9uKGEpe2lmKHRoaXMuX2hpZ2hsaWdodGVyQ29u dGVudCl7aWYoIXRoaXMuX2hpZ2hsaWdodGVyQXV4Q29udGVudCl7dGhpcy5faGln aGxpZ2h0ZXJBdXhDb250ZW50PSROKCdzcGFuJyx7Y2xhc3NOYW1lOidoaWdobGln aHRlckF1eENvbnRlbnQnfSk7RE9NLmluc2VydEFmdGVyKHRoaXMuX2hpZ2hsaWdo dGVyQ29udGVudCx0aGlzLl9oaWdobGlnaHRlckF1eENvbnRlbnQpO31ET00uc2V0 Q29udGVudCh0aGlzLl9oaWdobGlnaHRlckF1eENvbnRlbnQsYSk7aWYoYSl7SW5w dXQuc2V0UGxhY2Vob2xkZXIodGhpcy5faW5wdXQsJycpO31lbHNlIElucHV0LnNl dFBsYWNlaG9sZGVyKHRoaXMuX2lucHV0LHRoaXMuX3BsYWNlaG9sZGVyKTt0aGlz Ll91cGRhdGVIZWlnaHQoKTt9fSxnZXRBdXhDb250ZW50Um9vdDpmdW5jdGlvbigp e3JldHVybiB0aGlzLl9oaWdobGlnaHRlckF1eENvbnRlbnQ7fSxhZGRNZW50aW9u OmZ1bmN0aW9uKGEpe3ZhciBiPUlucHV0LmdldFZhbHVlKHRoaXMuX2lucHV0KTtJ bnB1dC5zZXRWYWx1ZSh0aGlzLl9pbnB1dCxiKyIgIithLnRleHQpO3RoaXMuX2Fk ZFRva2VuKGEpO3RoaXMuX3VwZGF0ZSgpO30sZ2V0TWVudGlvbnM6ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5fbWVudGlvbmVkO319KTsKZnVuY3Rpb24gTXVsdGlCb290 c3RyYXBEYXRhU291cmNlKGEpe3RoaXMuX2Jvb3RzdHJhcEVuZHBvaW50cz1hLmJv b3RzdHJhcEVuZHBvaW50czt0aGlzLnBhcmVudC5jb25zdHJ1Y3QodGhpcyxhKTt9 Q2xhc3MuZXh0ZW5kKE11bHRpQm9vdHN0cmFwRGF0YVNvdXJjZSwnRGF0YVNvdXJj ZScpO011bHRpQm9vdHN0cmFwRGF0YVNvdXJjZS5wcm90b3R5cGU9e2Jvb3RzdHJh cFdpdGhvdXRUb2tlbjpmdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8dGhpcy5fYm9v dHN0cmFwRW5kcG9pbnRzLmxlbmd0aDthKyspdGhpcy5mZXRjaCh0aGlzLl9ib290 c3RyYXBFbmRwb2ludHNbYV0uZW5kcG9pbnQsdGhpcy5fYm9vdHN0cmFwRW5kcG9p bnRzW2FdLmRhdGF8fHt9KTt9fTsKZnVuY3Rpb24gVHlwZWFoZWFkQXJlYUNvcmUo YSl7dGhpcy5wYXJlbnQuY29uc3RydWN0KHRoaXMsYSk7dGhpcy5tYXRjaGVyPW5l dyBSZWdFeHAodGhpcy5tYXRjaGVyKyckJyk7dGhpcy5wcmV2ZW50Rm9jdXNDaGFu Z2VPblRhYj10cnVlO31DbGFzcy5leHRlbmQoVHlwZWFoZWFkQXJlYUNvcmUsJ1R5 cGVhaGVhZENvcmUnKTtUeXBlYWhlYWRBcmVhQ29yZS5wcm90b3R5cGU9e3ByZWZp eDonJyxzdWZmaXg6JywgJyxtYXRjaGVyOiJcXGJbXixdKiIsY2xpY2s6YmFnb2Zo b2xkaW5nLHNlbGVjdDpmdW5jdGlvbihhKXt0aGlzLnBhcmVudC5zZWxlY3QoYSk7 dmFyIGU9dGhpcy5lbGVtZW50LnZhbHVlO3ZhciBkPXRoaXMucHJlZml4K2EudGV4 dCt0aGlzLnN1ZmZpeDt0aGlzLmV4cGFuZEJvdW5kcyhlLGQpO3ZhciBiPWUuc3Vi c3RyaW5nKDAsdGhpcy5zdGFydCk7dmFyIGM9ZS5zdWJzdHJpbmcodGhpcy5lbmQp O3RoaXMuZWxlbWVudC52YWx1ZT1iK2QrYztJbnB1dC5zZXRTZWxlY3Rpb24odGhp cy5lbGVtZW50LGIubGVuZ3RoK2QubGVuZ3RoKTt9LGV4cGFuZEJvdW5kczpmdW5j dGlvbihnLGYpe2c9Zy50b0xvd2VyQ2FzZSgpLnRyaW0oKTtmPWYudG9Mb3dlckNh c2UoKTt2YXIgYixlLGMsZDt2YXIgYT0vXHMvO2U9Zy5zdWJzdHJpbmcodGhpcy5z dGFydCx0aGlzLmVuZCk7Yz1mLmluZGV4T2YoZSk7Yj10aGlzLnN0YXJ0O3doaWxl KGI+PTAmJmM+PTApe2Q9Zy5jaGFyQXQoYi0xKTtpZighZHx8YS50ZXN0KGQpKXRo aXMuc3RhcnQ9YjtlPWQrZTtjPWYuaW5kZXhPZihlKTtiLS07fWU9Zy5zdWJzdHJp bmcodGhpcy5zdGFydCx0aGlzLmVuZCk7Yz1mLmluZGV4T2YoZSk7Yj10aGlzLmVu ZDt3aGlsZShiPD1nLmxlbmd0aCYmYz49MCl7ZD1nLmNoYXJBdChiKTtpZighZHx8 YS50ZXN0KGQpKXRoaXMuZW5kPWI7ZT1lK2Q7Yz1mLmluZGV4T2YoZSk7YisrO319 LGdldFJhd1ZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9SW5wdXQuZ2V0U2VsZWN0aW9u KHRoaXMuZWxlbWVudCkuc3RhcnR8fDA7cmV0dXJuIHRoaXMucGFyZW50LmdldFZh bHVlKCkuc3Vic3RyaW5nKDAsYSk7fSxnZXRWYWx1ZTpmdW5jdGlvbigpe3ZhciBh PXRoaXMubWF0Y2hlciYmdGhpcy5tYXRjaGVyLmV4ZWModGhpcy5nZXRSYXdWYWx1 ZSgpKTtpZighYSlyZXR1cm4gJyc7dmFyIGU9YVswXTt2YXIgZD1hLmluZGV4K2Uu bGVuZ3RoO2U9ZS5yZXBsYWNlKC9eXHMvLCcnKTt2YXIgYj1lLmxlbmd0aDtlPWUu cmVwbGFjZSgvXHMkLywnJyk7dmFyIGM9Yi1lLmxlbmd0aDt0aGlzLnN0YXJ0PWQt Yjt0aGlzLmVuZD1kK2M7cmV0dXJuIGFbMV18fGFbMF07fX07CmFkZF9wcm9wZXJ0 aWVzKCdUeXBlYWhlYWRCZWhhdmlvcnMnLHtob2lzdEZyaWVuZHM6ZnVuY3Rpb24o YSl7dmFyIGI9YS5nZXRWaWV3KCk7Yi5zdWJzY3JpYmUoJ2JlZm9yZVJlbmRlcics ZnVuY3Rpb24oYyxmKXt2YXIgZz1bXTt2YXIgZD1bXTtmb3IodmFyIGU9MDtlPGYu cmVzdWx0cy5sZW5ndGg7KytlKXt2YXIgaD1mLnJlc3VsdHNbZV07aWYoaC50eXBl PT0ndXNlcicmJmguYm9vdHN0cmFwcGVkKXtkLnB1c2goaCk7fWVsc2UgZy5wdXNo KGgpO31mLnJlc3VsdHM9ZC5jb25jYXQoZyk7fSk7fX0pOwphZGRfcHJvcGVydGll cygnVHlwZWFoZWFkQmVoYXZpb3JzJyx7c2V0UGhvdG9PblNlbGVjdDpmdW5jdGlv bihlKXt2YXIgYz1ET00uc2NyeShlLmdldEVsZW1lbnQoKSwnLnBob3RvJylbMF07 aWYoYyl7aWYoIURPTS5pc05vZGVPZlR5cGUoYywnaW1nJykpe3ZhciBiPURPTS5j cmVhdGUoJ2ltZycse2NsYXNzTmFtZTpjLmNsYXNzTmFtZX0pO0RPTS5yZXBsYWNl KGMsYik7Yz1iO312YXIgYT1DU1MuaGlkZS5jdXJyeShjKTt2YXIgZD1DU1Muc2hv dy5jdXJyeShjKTtFdmVudC5saXN0ZW4oYyx7bG9hZDpkLGVycm9yOmEsYWJvcnQ6 YX0pO2Uuc3Vic2NyaWJlKCdzZWxlY3QnLGZ1bmN0aW9uKGYsZyl7dmFyIGg9Zy5z ZWxlY3RlZC5waG90b3x8ZS52aWV3LmZhbGxiYWNrUGhvdG87aD9jLnNldEF0dHJp YnV0ZSgnc3JjJyxoKTphKCk7fSk7fX19KTsKYWRkX3Byb3BlcnRpZXMoJ1R5cGVh aGVhZEJlaGF2aW9ycycse3Nob3dMb2FkaW5nSW5kaWNhdG9yOmZ1bmN0aW9uKGEp e2Euc3Vic2NyaWJlKCdhY3Rpdml0eScsZnVuY3Rpb24oYixjKXtDU1MuY29uZGl0 aW9uQ2xhc3MoYS5nZXRFbGVtZW50KCksJ3R5cGVhaGVhZExvYWRpbmcnLGMuYWN0 aXZpdHkpO30pO319KTsKYWRkX3Byb3BlcnRpZXMoJ1R5cGVhaGVhZFJlbmRlcmVy cycse2Jhc2ljOmZ1bmN0aW9uKGEsYil7dmFyIGM9W107aWYoYS5pY29uKWMucHVz aCgkTignaW1nJyx7YWx0OicnLHNyYzphLmljb259KSk7aWYoYS50ZXh0KWMucHVz aCgkTignc3Bhbicse2NsYXNzTmFtZTondGV4dCd9LFthLnRleHRdKSk7aWYoYS5z dWJ0ZXh0KWMucHVzaCgkTignc3Bhbicse2NsYXNzTmFtZTonc3VidGV4dCd9LFth LnN1YnRleHRdKSk7cmV0dXJuICROKCdsaScse2NsYXNzTmFtZTphLnR5cGV8fCcn fSxjKTt9fSk7CmFkZF9wcm9wZXJ0aWVzKCdUeXBlYWhlYWRSZW5kZXJlcnMnLHtj b21wYWN0OmZ1bmN0aW9uKGMsZCl7dmFyIGU9W107dmFyIGY9Yy5waG90bztpZihm KXtpZihmIGluc3RhbmNlb2YgQXJyYXkpe3ZhciBnPVskTignc3Bhbicse2NsYXNz TmFtZTonc3BsaXRwaWMgbGVmdHBpYyd9LFskTignaW1nJyx7YWx0OicnLHNyYzpm WzBdfSldKSwkTignc3Bhbicse2NsYXNzTmFtZTonc3BsaXRwaWMnKyhmWzJdPycg dG9wcGljJzonJyl9LFskTignaW1nJyx7YWx0OicnLHNyYzpmWzFdfSldKV07aWYo ZlsyXSlnLnB1c2goJE4oJ3NwYW4nLHtjbGFzc05hbWU6J3NwbGl0cGljIGJvdHRv bXBpYyd9LFskTignaW1nJyx7YWx0OicnLHNyYzpmWzJdfSldKSk7Zj0kTignc3Bh bicse2NsYXNzTmFtZTonc3BsaXRwaWNzIGNsZWFyZml4J30sZyk7fWVsc2UgZj0k TignaW1nJyx7YWx0OicnLHNyYzpmfSk7ZS5wdXNoKGYpO31pZihjLnRleHQpZS5w dXNoKCROKCdzcGFuJyx7Y2xhc3NOYW1lOid0ZXh0J30sW2MudGV4dF0pKTt2YXIg aD1jLnN1YnRleHQ7dmFyIGE9Yy5jYXRlZ29yeTtpZihofHxhKXt2YXIgYj1bXTto JiZiLnB1c2goaCk7aCYmYSYmYi5wdXNoKCIgXHUwMGI3ICIpO2EmJmIucHVzaChh KTtlLnB1c2goJE4oJ3NwYW4nLHtjbGFzc05hbWU6J3N1YnRleHQnfSxiKSk7fXJl dHVybiAkTignbGknLHtjbGFzc05hbWU6Yy50eXBlfHwnJ30sZSk7fX0pOwphZGRf cHJvcGVydGllcygnVHlwZWFoZWFkUmVuZGVyZXJzJyx7c2VhcmNoOmZ1bmN0aW9u KGQsZil7dmFyIGg9W107aWYoZC5waG90byl7aC5wdXNoKCROKCdpbWcnLHtjbGFz c05hbWU6J3Bob3RvJyxhbHQ6Jycsc3JjOmQucGhvdG99KSk7aWYoZC5zb25nKXto LnB1c2goJE4oJ3NwYW4nLHtjbGFzc05hbWU6J3BsYXlCdXR0b24nfSkpO2gucHVz aCgkTignc3Bhbicse2NsYXNzTmFtZToncGxheUxvYWRlcid9KSk7fX1pZihkLnRl eHQpe3ZhciBhPWQuYWxpYXM7dmFyIGw9dGhpcy52YWx1ZTt2YXIgaj1kLnRleHQ7 dmFyIGs9W2pdO2lmKGEmJlR5cGVhaGVhZFV0aWwuaXNRdWVyeU1hdGNoKGwsYSkm JiFUeXBlYWhlYWRVdGlsLmlzUXVlcnlNYXRjaChsLGopKWsucHVzaCgkTignc3Bh bicse2NsYXNzTmFtZTonYWxpYXMnfSxbJyBceEI3ICcrYV0pKTtoLnB1c2goJE4o J3NwYW4nLHtjbGFzc05hbWU6J3RleHQnfSxrKSk7fWlmKGQuY2F0ZWdvcnkpe3Zh ciBiPVtkLmNhdGVnb3J5XTtpZihkLmlzX2V4dGVybmFsKWIucHVzaCgkTignc3Bh bicse2NsYXNzTmFtZTonYXJyb3cnfSkpO2gucHVzaCgkTignc3Bhbicse2NsYXNz TmFtZTonY2F0ZWdvcnknfSxiKSk7fWlmKGQuc3VidGV4dCloLnB1c2goJE4oJ3Nw YW4nLHtjbGFzc05hbWU6J3N1YnRleHQnfSxbZC5zdWJ0ZXh0XSkpO3ZhciBjPWQu Y2xhc3NOYW1lc3x8ZC50eXBlfHwnJzt2YXIgaT1kLmlzX2V4dGVybmFsPydfYmxh bmsnOicnO3ZhciBlPSFkLnNvbmcmJmQucGF0aHx8Jyc7aWYoZSl7aWYoISgvXmh0 dHBzP1w6XC9cLy8pLnRlc3QoZSkpZT1FbnYud3d3X2Jhc2UrZS5zdWJzdHIoMSk7 ZSs9KGUuaW5kZXhPZignPycpPjA/JyYnOic/JykrJ3JlZj10cyc7fXZhciBnPSRO KCdhJyx7aHJlZjplLHJlbDonaWdub3JlJyx0YXJnZXQ6aX0saCk7aWYoZC5zb25n KXtnLmlkPSdtYl8nKyhNYXRoLnJhbmRvbSgpKjFlKzA2fDApO011c2ljQnV0dG9u TWFuYWdlci5hZGRCdXR0b24uY3VycnkoZC5zb25nLnByb3ZpZGVyLGcuaWQsZC5z b25nLnVybCxkLnNvbmcuY29udGV4dCxkLnNvbmcubWVkaWFfdHlwZSkuZGVmZXIo KTtnLm9uY2xpY2s9dGhpcy5pZ25vcmVDbGljazt9cmV0dXJuICROKCdsaScse2Ns YXNzTmFtZTpjfSxbZ10pO319KTsKV2luZG93Q29tbT17X2NhbGxiYWNrczp7fSxt YWtlSGFuZGxlcjpmdW5jdGlvbihhLGMpe2M9Y3x8J29wZW5lcic7dmFyIGI9J2Yn KyhNYXRoLnJhbmRvbSgpKigxPDwzMCkpLnRvU3RyaW5nKDE2KS5yZXBsYWNlKCcu JywnJyk7V2luZG93Q29tbS5fY2FsbGJhY2tzW2JdPWE7cmV0dXJuIG5ldyBVUkko Jy9jb25uZWN0L3dpbmRvd19jb21tLnBocCcpLnNldFF1ZXJ5RGF0YSh7X2lkOmIs X3JlbGF0aW9uOmN9KS5nZXRRdWFsaWZpZWRVUkkoKS50b1N0cmluZygpO30sX3Jl Y3Y6ZnVuY3Rpb24oYil7dmFyIGE9bmV3IFVSSShiKS5nZXRRdWVyeURhdGEoKTtX aW5kb3dDb21tLl9jYWxsYmFja3NbYS5faWRdKGEpO319Ow== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=krQJf0_j8Hr.js Content-Type: application/x-javascript; charset=utf-8; name=krQJf0_j8Hr.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v1/y7/r/krQJf0_j8Hr.js Content-Transfer-Encoding: Base64 LyoxMzIzOTAzODk0LDE2OTc3NjMxOSovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIjV2WmhtIl0pOyB9CgpfX2Uo IkNoYXRDb25maWciLFsiQ2hhdENvbmZpZ0luaXRpYWxEYXRhIiwiY29weVByb3Bl cnRpZXMiXSxmdW5jdGlvbihmLGgsZyxlKXt2YXIgYj1oKCdDaGF0Q29uZmlnSW5p dGlhbERhdGEnKTt2YXIgZD1oKCdjb3B5UHJvcGVydGllcycpO3ZhciBjPXt9O3Zh ciBhPWcuZXhwb3J0cz17Z2V0OmZ1bmN0aW9uKGosaSl7cmV0dXJuIGogaW4gYz9j W2pdOmk7fSxzZXQ6ZnVuY3Rpb24oaSl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXt2 YXIgaj17fTtqW2ldPWFyZ3VtZW50c1sxXTtpPWo7fWQoYyxpKTt9LGdldERlYnVn SW5mbzpmdW5jdGlvbigpe3JldHVybiBjO319O2Euc2V0KGIpO30sMyk7Cl9fZSgi UHJlc2VuY2VVdGlsIixbImNvb2tpZSIsIkVudiIsIm1hdGgtZXh0ZW5zaW9ucyIs InR4Il0sZnVuY3Rpb24oZixoLGcsZSl7dmFyIGE9aCgnY29va2llJyk7dmFyIGI9 aCgnRW52Jyk7dmFyIGM9aCgnbWF0aC1leHRlbnNpb25zJyk7Zi50eD1oKCd0eCcp O3ZhciBkPWMucmFuZDMyKCkrMTtmLlByZXNlbmNlVXRpbD1nLmV4cG9ydHM9e2No ZWNrTWFpbnRlbmFuY2VFcnJvcjpmdW5jdGlvbihpKXtpZihpLmdldEVycm9yKCk9 PTEzNTYwMDcpcmV0dXJuIHRydWU7cmV0dXJuIGZhbHNlO30sZ2V0RXJyb3JEZXNj cmlwdGlvbjpmdW5jdGlvbihpKXt2YXIgaz1pLmdldEVycm9yKCk7dmFyIGo9aS5n ZXRFcnJvckRlc2NyaXB0aW9uKCk7aWYoIWopaj0iQmlyIGhhdGEgb2x1XHUwMTVm dHUuIjtpZihrPT0xMzU3MDAxKWo9Ik90dXJ1bXVuIHphbWFuIGFcdTAxNWZcdTAx MzFtXHUwMTMxbmEgdVx1MDExZnJhZFx1MDEzMS4gTFx1MDBmY3RmZW4gZ2lyaVx1 MDE1ZiB5YXAuIjtyZXR1cm4gajt9LGdldFNlc3Npb25JRDpmdW5jdGlvbigpe3Jl dHVybiBkO30saGFzVXNlckNvb2tpZTpmdW5jdGlvbigpe3JldHVybiBiLnVzZXI9 PT1hLmdldCgnY191c2VyJyk7fX07fSwzKTsKX19lKCJkY29kZSIsW10sZnVuY3Rp b24oZCxmLGUsYyl7dmFyIGEsZz17fSxiPXtfOiclJyxBOiclMicsQjonMDAwJyxD OiclN2QnLEQ6JyU3YiUyMicsRTonJTJjJTIyJyxGOiclMjIlM2EnLEc6JyUyYyUy MnV0JTIyJTNhMScsSDonJTJjJTIyYmxzJTIyJTNhJyxJOiclMmMlMjJuJTIyJTNh JTIyJScsSjonJTIyJTNhJTdiJTIyaSUyMiUzYTAlN2QnLEs6JyUyYyUyMnB0JTIy JTNhMCUyYyUyMnZpcyUyMiUzYScsTDonJTJjJTIyY2glMjIlM2ElN2IlMjJoJTIy JTNhJTIyJyxNOiclN2IlMjJ2JTIyJTNhMiUyYyUyMnRpbWUlMjIlM2ExJyxOOicu Y2hhbm5lbCUyMiUyYyUyMnN1YiUyMiUzYSU1YicsTzonJTJjJTIyc2IlMjIlM2Ex JTJjJTIydCUyMiUzYSU1YicsUDonJTJjJTIydWQlMjIlM2ExMDAlMmMlMjJsYyUy MiUzYTAnLFE6JyU1ZCUyYyUyMmYlMjIlM2FudWxsJTJjJTIydWN0JTIyJTNhJyxS OicuY2hhbm5lbCUyMiUyYyUyMnN1YiUyMiUzYSU1YjElNWQnLFM6JyUyMiUyYyUy Mm0lMjIlM2EwJTdkJTJjJTdiJTIyaSUyMiUzYScsVDonJTJjJTIyYmxjJTIyJTNh MSUyYyUyMnNuZCUyMiUzYTElMmMlMjJjdCUyMiUzYScsVTonJTJjJTIyYmxjJTIy JTNhMCUyYyUyMnNuZCUyMiUzYTElMmMlMjJjdCUyMiUzYScsVjonJTJjJTIyYmxj JTIyJTNhMCUyYyUyMnNuZCUyMiUzYTAlMmMlMjJjdCUyMiUzYScsVzonJTJjJTIy cyUyMiUzYTAlMmMlMjJibG8lMjIlM2EwJTdkJTJjJTIyYmwlMjIlM2ElN2IlMjJh YyUyMiUzYScsWDonJTJjJTIycmklMjIlM2EwJTdkJTJjJTIyc3RhdGUlMjIlM2El N2IlMjJwJTIyJTNhMCUyYyUyMnV0JTIyJTNhMScsWTonJTJjJTIycHQlMjIlM2Ew JTJjJTIydmlzJTIyJTNhMSUyYyUyMmJscyUyMiUzYTAlMmMlMjJibGMlMjIlM2Ew JTJjJTIyc25kJTIyJTNhMSUyYyUyMmN0JTIyJTNhJyxaOiclMmMlMjJzYiUyMiUz YTElMmMlMjJ0JTIyJTNhJTViJTVkJTJjJTIyZiUyMiUzYW51bGwlMmMlMjJ1Y3Ql MjIlM2EwJTJjJTIycyUyMiUzYTAlMmMlMjJibG8lMjIlM2EwJTdkJTJjJTIyYmwl MjIlM2ElN2IlMjJhYyUyMiUzYSd9OyhmdW5jdGlvbigpe3ZhciBpPVtdO2Zvcih2 YXIgaCBpbiBiKXtnW2JbaF1dPWg7aS5wdXNoKGJbaF0pO31pLnJldmVyc2UoKTth PW5ldyBSZWdFeHAoaS5qb2luKCJ8IiksJ2cnKTt9KSgpO2QuRGNvZGU9ZS5leHBv cnRzPXtlbmNvZGU6ZnVuY3Rpb24oaCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVu dChoKS5yZXBsYWNlKC8oW19BLVpdKXwlLi4vZyxmdW5jdGlvbihqLGkpe3JldHVy biBpPyclJytpLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpOmo7fSkudG9Mb3dl ckNhc2UoKS5yZXBsYWNlKGEsZnVuY3Rpb24oaSl7cmV0dXJuIGdbaV07fSk7fSxk ZWNvZGU6ZnVuY3Rpb24oaCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChoLnJl cGxhY2UoL1tfQS1aXS9nLGZ1bmN0aW9uKGkpe3JldHVybiBiW2ldO30pKTt9fTt9 LDMpOwpfX2UoInByZXNlbmNlLWNvb2tpZS1tYW5hZ2VyIixbImNvb2tpZSIsImRj b2RlIiwiSlNMb2dnZXIiLCJqc29uIiwiUHJlc2VuY2VJbml0aWFsRGF0YSIsIlBy ZXNlbmNlVXRpbCIsInVyaSJdLGZ1bmN0aW9uKHEscyxyLHApe3EuQ29va2llTWFu YWdlcj1mdW5jdGlvbigpe307dmFyIGE9cygnY29va2llJyk7dmFyIGI9cygnZGNv ZGUnKTt2YXIgYz1zKCdKU0xvZ2dlcicpO3MoJ2pzb24nKTt2YXIgZD1zKCdQcmVz ZW5jZUluaXRpYWxEYXRhJyk7dmFyIGU9cygnUHJlc2VuY2VVdGlsJyk7dmFyIGY9 cygndXJpJyk7dmFyIG89ZC5jb29raWVWZXJzaW9uO3ZhciBoPWQuZGljdEVuY29k ZTt2YXIgZz0ncHJlc2VuY2UnO3ZhciBuPXt9O3ZhciBrPW51bGw7dmFyIGw9bnVs bDt2YXIgaj1jLmNyZWF0ZSgncHJlc2VuY2VfY29va2llJyk7ZnVuY3Rpb24gaSgp e3RyeXt2YXIgZGF0YT1hLmdldChnKTtpZihrPT09ZGF0YSl7cmV0dXJuIGw7fWVs c2V7az1kYXRhO2w9bnVsbDt9aWYoZGF0YSYmZGF0YS5jaGFyQXQoMCk9PSdFJylk YXRhPWIuZGVjb2RlKGRhdGEuc3Vic3RyaW5nKDEpKTtpZihkYXRhKXtsPUpTT04u cGFyc2UoZGF0YSk7cmV0dXJuIGw7fX1jYXRjaCh0KXtqLndhcm4oJ2dldGNvb2tp ZV9lcnJvcicpO31yZXR1cm4gbnVsbDt9ZnVuY3Rpb24gbSgpe3JldHVybiBwYXJz ZUludChuZXcgRGF0ZSgpLmdldFRpbWUoKS8xMDAwLDEwKTt9cS5wcmVzZW5jZUNv b2tpZU1hbmFnZXI9ci5leHBvcnRzPXtyZWdpc3RlcjpmdW5jdGlvbih1LHQpe25b dV09dDt9LHN0b3JlOmZ1bmN0aW9uKCl7dmFyIHQ9aSgpO2lmKHQmJnQudiYmbzx0 LnYpcmV0dXJuO3ZhciB1PXt2Om8sdGltZTptKCl9O2Zvcih2YXIgeCBpbiBuKXVb eF09blt4XSgpO3ZhciB3PUpTT04uc3RyaW5naWZ5KHUpO2lmKGgpdz0nRScrYi5l bmNvZGUodyk7aWYoZS5oYXNVc2VyQ29va2llKCkpe3ZhciB2PWYuZ2V0UmVxdWVz dFVSSShmYWxzZSkuaXNTZWN1cmUoKSYmISFhLmdldCgnY3NtJyk7YS5zZXQoZyx3 LG51bGwsbnVsbCx2KTt9fSxjbGVhcjpmdW5jdGlvbigpe2EuY2xlYXIoZyk7fSxn ZXRTdWJDb29raWU6ZnVuY3Rpb24odSl7dmFyIHQ9aSgpO2lmKCF0KXJldHVybiBu dWxsO3JldHVybiB0W3VdO319O30sMyk7Cl9fZSgiUHJlc2VuY2VTdGF0ZSIsWyJK U0xvZ2dlciIsIm1hdGgtZXh0ZW5zaW9ucyIsInByZXNlbmNlLWNvb2tpZS1tYW5h Z2VyIl0sZnVuY3Rpb24ocix1LHMscSl7dmFyIGI9dSgnSlNMb2dnZXInKTt2YXIg Yz11KCdtYXRoLWV4dGVuc2lvbnMnKTt2YXIgdD11KCdwcmVzZW5jZS1jb29raWUt bWFuYWdlcicpO3ZhciBhPTIwMDA7dmFyIG09W107dmFyIGw9W107dmFyIHA9bnVs bDt2YXIgZD1udWxsO3ZhciBrPW51bGw7dmFyIG49MDt2YXIgZz1udWxsO3ZhciBv PTA7dmFyIGg9Yi5jcmVhdGUoJ3ByZXNlbmNlX3N0YXRlJyk7ZnVuY3Rpb24gZSgp e2NsZWFyVGltZW91dChwKTtwPW51bGw7bj1EYXRlLm5vdygpO3Quc3RvcmUoKTtp KGspO31mdW5jdGlvbiBmKCl7dmFyIHg9e3V0Om59O2Zvcih2YXIgdj0wLHc9bS5s ZW5ndGg7djx3O3YrKyl4PW1bdl0oeCk7az14O3JldHVybiBrO31mdW5jdGlvbiBp KHcpe28rKzt0cnl7bj1jLnZlcmlmeU51bWJlcih3LnV0KTtpZighZClkPXNldElu dGVydmFsKGosYSk7az13O2lmKGc9PT1udWxsKWc9dztmb3IodmFyIGk9MDtpPGwu bGVuZ3RoO2krKylsW2ldKHcpO31jYXRjaCh2KXtvLS07dGhyb3cgdjt9by0tO31m dW5jdGlvbiBqKCl7dmFyIHY9dC5nZXRTdWJDb29raWUoJ3N0YXRlJyk7aWYoIXYp cmV0dXJuO2lmKHYudXQ+bil7aSh2KTtyZXR1cm47fX10LnJlZ2lzdGVyKCdzdGF0 ZScsZik7KGZ1bmN0aW9uKCl7dmFyIHc9dC5nZXRTdWJDb29raWUoJ3N0YXRlJyk7 aWYoIXcpe2guZGVidWcoJ251bGxfc3RhdGUnKTtpKGYoKSk7cmV0dXJuO310cnl7 aSh3KTt9Y2F0Y2godil7aC5lcnJvcignbG9hZF9leGNlcHRpb24nLHtlOnYudG9T dHJpbmcoKX0pO2koZigpKTt9fSkoKTtyLlByZXNlbmNlU3RhdGU9cy5leHBvcnRz PXtkb1N5bmM6ZnVuY3Rpb24odil7aWYobylyZXR1cm47aWYodil7ZSgpO31lbHNl IGlmKCFwKXA9ZS5kZWZlcigpO30scmVnaXN0ZXJTdGF0ZVN0b3JlcjpmdW5jdGlv bih2KXttLnB1c2godik7fSxyZWdpc3RlclN0YXRlTG9hZGVyOmZ1bmN0aW9uKHYp e2wucHVzaCh2KTt9LGdldDpmdW5jdGlvbigpe3JldHVybiBrO30sZ2V0SW5pdGlh bDpmdW5jdGlvbigpe3JldHVybiBnO319O30sMyk7Cl9fZSgicHJlc2VuY2UtYXJi aXRlci1tZXNzYWdlIixbXSxmdW5jdGlvbihiLGQsYyxhKXtiLlByZXNlbmNlTWVz c2FnZT1jLmV4cG9ydHM9e1NUQVJURUQ6J3ByZXNlbmNlL3N0YXJ0ZWQnLFNIVVRE T1dOOidwcmVzZW5jZS9zaHV0ZG93bicsUkVTVEFSVEVEOidwcmVzZW5jZS9yZXN0 YXJ0ZWQnLFdJTkRPV19SRVNJWkVEOidwcmVzZW5jZS93aW5kb3ctcmVzaXplZCcs VEFCX0NMT1NFRDoncHJlc2VuY2UvdGFiLWNsb3NlZCcsVEFCX09QRU5FRDoncHJl c2VuY2UvdGFiLW9wZW5lZCcsUFJFU0VOQ0VfVVBEQVRFUl9SRUFEWToncHJlc2Vu Y2UvdXBkYXRlci1yZWFkeScsZ2V0QXBwTWVzc2FnZVR5cGU6ZnVuY3Rpb24oZSxm KXtyZXR1cm4gJ3ByZXNlbmNlL2FwcF9tZXNzYWdlOicrZSsnOicrZjt9LGdldEFy Yml0ZXJNZXNzYWdlVHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gJ3ByZXNlbmNlL21l c3NhZ2U6JytlO319O30sMyk7Cl9fZSgiUHJlc2VuY2VQcml2YWN5IixbImFyYml0 ZXIiLCJBc3luY1JlcXVlc3QiLCJDaGFubmVsQ29uc3RhbnRzIiwiY29weVByb3Bl cnRpZXMiLCJFbnYiLCJKU0xvZ2dlciIsIk1lcmN1cnlSZXF1aXJlRW5zdXJlIiwi cHJlc2VuY2UtYXJiaXRlci1tZXNzYWdlIiwiUHJlc2VuY2VVdGlsIl0sZnVuY3Rp b24oemYsem4semgsemUpe3ZhciBhPXpuKCdhcmJpdGVyJyk7dmFyIGI9em4oJ0Fz eW5jUmVxdWVzdCcpO3ZhciBjPXpuKCdDaGFubmVsQ29uc3RhbnRzJyk7dmFyIHpj PXpuKCdjb3B5UHJvcGVydGllcycpO3ZhciBkPXpuKCdFbnYnKTt2YXIgZT16bign SlNMb2dnZXInKTt2YXIgZj16bignTWVyY3VyeVJlcXVpcmVFbnN1cmUnKTt2YXIg Zz16bigncHJlc2VuY2UtYXJiaXRlci1tZXNzYWdlJyk7dmFyIGk9em4oJ1ByZXNl bmNlVXRpbCcpO2lmKHpmLlByZXNlbmNlUHJpdmFjeSl7emguZXhwb3J0cz16Zi5Q cmVzZW5jZVByaXZhY3k7fWVsc2V7dmFyIG09Jy9hamF4L2NoYXQvcHJpdmFjeS9z ZXR0aW5ncy5waHAnO3ZhciBuPScvYWpheC9jaGF0L3ByaXZhY3kvb25saW5lX3Bv bGljeS5waHAnO3ZhciBvPScvYWpheC9jaGF0L3ByaXZhY3kvdmlzaWJpbGl0eS5w aHAnO3ZhciBqPSdmcmllbmRfdmlzaWJpbGl0eSc7dmFyIGw9J3Zpc2liaWxpdHkn O3ZhciBrPSdvbmxpbmVfcG9saWN5Jzt2YXIgemc9e307dmFyIHpvO3ZhciB6aj17 fTt2YXIgems7dmFyIHpkO3ZhciB6aTt2YXIgem09W107dmFyIHpsPWZhbHNlO2Z1 bmN0aW9uIHAoKXtyZXR1cm4gZS5jcmVhdGUoJ2JsYWNrYmlyZCcpO312YXIgaD16 YyhuZXcgYSgpLHtXSElURUxJU1RFRDoxLEJMQUNLTElTVEVEOi0xLFVOTElTVEVE OjAsT05MSU5FOjEsT0ZGTElORTowLE9OTElORV9UT19XSElURUxJU1Q6MCxPTkxJ TkVfVE9fQkxBQ0tMSVNUOjF9KTtmdW5jdGlvbiB4KHpxKXt2YXIgenA7Zm9yKHpw IGluIHpxKXt2YXIgenI9enFbenBdO2lmKHpwPT1kLnVzZXIpe3AoKS5lcnJvcign c2V0X3ZpZXdlcl92aXNpYmlsaXR5Jyk7dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlk IHRvIHNldCBjdXJyZW50IHVzZXIncyB2aXNpYmlsaXR5Iik7fXN3aXRjaCh6cil7 Y2FzZSBoLldISVRFTElTVEVEOmNhc2UgaC5CTEFDS0xJU1RFRDpjYXNlIGguVU5M SVNURUQ6YnJlYWs7ZGVmYXVsdDpwKCkuZXJyb3IoJ3NldF9pbnZhbGlkX2ZyaWVu ZF92aXNpYmlsaXR5Jyx7aWQ6enAsdmFsdWU6enJ9KTt0aHJvdyBuZXcgRXJyb3Io IkludmFsaWQgc3RhdGU6ICIrenIpO319Zm9yKHpwIGluIHpxKXpnW3pwXT16cVt6 cF07aC5pbmZvcm0oJ3ByaXZhY3ktY2hhbmdlZCcpO31mdW5jdGlvbiB5KHpwLHpy KXt2YXIgenE9e307enFbenBdPXpyO3goenEpO31mdW5jdGlvbiB6YSh6cCl7c3dp dGNoKHpwKXtjYXNlIGguT05MSU5FOmNhc2UgaC5PRkZMSU5FOmJyZWFrO2RlZmF1 bHQ6cCgpLmVycm9yKCdzZXRfaW52YWxpZF92aXNpYmlsaXR5Jyx7dmFsdWU6enB9 KTt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmlzaWJpbGl0eTogIit6cCk7fXpv PXpwO2guaW5mb3JtKCdwcml2YWN5LWNoYW5nZWQnKTtoLmluZm9ybSgncHJpdmFj eS11c2VyLXByZXNlbmNlLWNoYW5nZWQnKTthLmluZm9ybSgnY2hhdC92aXNpYmls aXR5LWNoYW5nZWQnLHtzZW5kZXI6dGhpc30pO31mdW5jdGlvbiB6KHpwKXtzd2l0 Y2goenApe2Nhc2UgaC5PTkxJTkVfVE9fV0hJVEVMSVNUOmNhc2UgaC5PTkxJTkVf VE9fQkxBQ0tMSVNUOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZh bGlkIGRlZmF1bHQgb25saW5lIHBvbGljeTogIit6cCk7fXpkPXpwO2guaW5mb3Jt KCdwcml2YWN5LXVzZXItcHJlc2VuY2UtY2hhbmdlZCcpO2guaW5mb3JtKCdwcml2 YWN5LWNoYW5nZWQnKTt9ZnVuY3Rpb24gemIoenEsenApe3psPXRydWU7enEuc2Vu ZCgpO31mdW5jdGlvbiB3KHpxLHpwKXt6bS5wdXNoKHtyZXF1ZXN0OnpxLGRhdGE6 enB9KTtpZighemwpe25leHQ9em0uc2hpZnQoKTt6YihuZXh0LnJlcXVlc3QsbmV4 dC5kYXRhKTt9fWZ1bmN0aW9uIHUoenAsenEpe3ZhciB6cj16cC50eXBlO2lmKHpy PT09ail7dmFyIHp0PXpxLnBheWxvYWQudXNlcl9hdmFpbGFiaWxpdGllcztoLmlu Zm9ybSgncHJpdmFjeS1hdmFpbGFiaWxpdHktY2hhbmdlZCcse3VzZXJfYXZhaWxh YmlsaXRpZXM6enR9KTtmb3IodmFyIHpzIGluIHpwLnNldHRpbmdzKXpqW3pzXT16 cC5zZXR0aW5nc1t6c107fWVsc2V7aWYoenI9PT1sKXt6az16cC52aXNpYmlsaXR5 O31lbHNlIGlmKHpyPT09ayl6aT16cC5vbmxpbmVfcG9saWN5O2guaW5mb3JtKCdw cml2YWN5LXVzZXItcHJlc2VuY2UtcmVzcG9uc2UnKTt9cCgpLmxvZygnc2V0X3Vw ZGF0ZV9yZXNwb25zZScse2RhdGE6enAscmVzcG9uc2U6enF9KTt9ZnVuY3Rpb24g cih6cCx6cSl7aWYoem8hPT16ayl6YSh6ayk7aWYoemQhPT16aSl6KHppKTt6Yyh6 Zyx6aik7aC5pbmZvcm0oJ3ByaXZhY3ktY2hhbmdlZCcpO3ptPVtdO3AoKS5sb2co J3NldF9lcnJvcl9yZXNwb25zZScse2RhdGE6enAscmVzcG9uc2U6enF9KTt9ZnVu Y3Rpb24gcyh6cCl7emw9ZmFsc2U7aWYoem0ubGVuZ3RoPjApe25leHQ9em0uc2hp ZnQoKTt6YihuZXh0LnJlcXVlc3QsbmV4dC5kYXRhKTt9fWZ1bmN0aW9uIHYoenIs enEpe2lmKGkhPW51bGwpe3ZhciB6cD16ci5nZXREYXRhKCk7enAud2luZG93X2lk PWkuZ2V0U2Vzc2lvbklEKCk7enIuc2V0RGF0YSh6cCk7fXpyLnNldEhhbmRsZXIo dS5iaW5kKHRoaXMsenEpKS5zZXRFcnJvckhhbmRsZXIoci5iaW5kKHRoaXMsenEp KS5zZXRUcmFuc3BvcnRFcnJvckhhbmRsZXIoci5iaW5kKHRoaXMsenEpKS5zZXRG aW5hbGx5SGFuZGxlcihzLmJpbmQodGhpcykpLnNldEFsbG93Q3Jvc3NQYWdlVHJh bnNpdGlvbih0cnVlKTtyZXR1cm4genI7fWZ1bmN0aW9uIHEoenIsenAsenEpe3Jl dHVybiB2KG5ldyBiKHpyKS5zZXREYXRhKHpwKSx6cSk7fWZ1bmN0aW9uIHQoenQs enApe3ZhciB6cz16cC5vYmo7aWYoenMudmlld2VyX2lkIT1kLnVzZXIpe3AoKS5l cnJvcignaW52YWxpZF92aWV3ZXJfZm9yX2NoYW5uZWxfbWVzc2FnZScse3R5cGU6 enQsZGF0YTp6cH0pO3Rocm93IG5ldyBFcnJvcigiVmlld2VyIGdvdCBmcm9tIHRo ZSBjaGFubmVsIGlzIG5vdCB0aGUgcmVhbCB2aWV3ZXIiKTt9aWYoenMud2luZG93 X2lkPT09aS5nZXRTZXNzaW9uSUQoKSlyZXR1cm47dmFyIHpxPXpzLmRhdGE7aWYo enMuZXZlbnQ9PSdhY2Nlc3NfY29udHJvbF9lbnRyeScpe3pxLnRhcmdldF9pZHMu Zm9yRWFjaChmdW5jdGlvbih6dSl7eSh6dSx6cS5zZXR0aW5nKTt6alt6dV09enEu c2V0dGluZzt9KTt9ZWxzZXtpZih6cy5ldmVudD09J3Zpc2liaWxpdHlfdXBkYXRl Jyl7dmFyIHpyPSEhenEudmlzaWJpbGl0eT9oLk9OTElORTpoLk9GRkxJTkU7emEo enIpO3prPXpyO31lbHNlIGlmKHpzLmV2ZW50PT0nb25saW5lX3BvbGljeV91cGRh dGUnKXt6KHpxLm9ubGluZV9wb2xpY3kpO3ppPXpxLm9ubGluZV9wb2xpY3k7fWgu aW5mb3JtKCdwcml2YWN5LXVzZXItcHJlc2VuY2UtcmVzcG9uc2UnKTt9cCgpLmxv ZygnY2hhbm5lbF9tZXNzYWdlX3JlY2VpdmVkJyx7ZGF0YTp6cC5vYmp9KTt9Zi5l bnN1cmUoWydQcmVzZW5jZVByaXZhY3lJbml0aWFsRGF0YSddLGZ1bmN0aW9uKHpw KXtoLmluaXQuYmluZChoLHpwLnZpc2liaWxpdHksenAub25saW5lUG9saWN5LHpw LnByaXZhY3lEYXRhKS5kZWZlcigpO30pO3pjKGgse1dISVRFTElTVEVEOjEsQkxB Q0tMSVNURUQ6LTEsVU5MSVNURUQ6MCxPTkxJTkU6MSxPRkZMSU5FOjAsT05MSU5F X1RPX1dISVRFTElTVDowLE9OTElORV9UT19CTEFDS0xJU1Q6MSxpbml0OmZ1bmN0 aW9uKHpyLHpwLHpxKXt6bz16az16cjt6ZD16aT16cDt6Zz16Yyh7fSx6cSk7emo9 emMoe30senEpO3psPWZhbHNlO3RoaXMuaW5mb3JtKCdpbml0aWFsaXplZCcsdGhp cyxhLkJFSEFWSU9SX1BFUlNJU1RFTlQpO3RoaXMuaW5mb3JtKCdwcml2YWN5LWNo YW5nZWQnKTt0aGlzLmluZm9ybSgncHJpdmFjeS11c2VyLXByZXNlbmNlLWNoYW5n ZWQnKTtwKCkubG9nKCdpbml0aWFsaXplZCcse3Zpc2liaWxpdHk6enIscG9saWN5 OnpwfSk7YS5pbmZvcm0oJ2NoYXQtdmlzaWJpbGl0eS9pbml0aWFsaXplZCcsdGhp cyxhLkJFSEFWSU9SX1BFUlNJU1RFTlQpO2Euc3Vic2NyaWJlKGcuZ2V0QXJiaXRl ck1lc3NhZ2VUeXBlKCdwcml2YWN5X2NoYW5nZWQnKSx0LmJpbmQodGhpcykpO2Eu c3Vic2NyaWJlKGMuT05fQ09ORklHLGZ1bmN0aW9uKHp0LHpzKXt2YXIgenY9enMu Z2V0Q29uZmlnKCd2aXNpYmlsaXR5JyxudWxsKTtpZih6diE9PW51bGwmJnR5cGVv Zih6dikhPT0ndW5kZWZpbmVkJyl7dmFyIHp1PXp2P2guT05MSU5FOmguT0ZGTElO RTt6YSh6dSk7cCgpLmxvZygnY29uZmlnX3Zpc2liaWxpdHknLHt2aXM6enV9KTt9 fS5iaW5kKHRoaXMpKTthLnN1YnNjcmliZSgnY2hhbm5lbC92aXNpYmlsaXR5LWNv bmZpZycsZnVuY3Rpb24oenMsenQpe3ZhciB6dT16dD9oLk9OTElORTpoLk9GRkxJ TkU7aWYoenUhPXpvKXt6YSh6dSk7cCgpLmxvZygnY29uZmlnX3Zpc2liaWxpdHlf b2xkX2NoYW5uZWwnLHt2aXM6enV9KTt9fS5iaW5kKHRoaXMpKTt9LHNldFZpc2li aWxpdHk6ZnVuY3Rpb24oenMpe3prPXpvO3phKHpzKTt2YXIgenA9e3Zpc2liaWxp dHk6enN9O3ZhciB6cT17dHlwZTpsLHZpc2liaWxpdHk6enN9O3ZhciB6cj1xKG8s enAsenEpO3coenIsenEpO3AoKS5sb2coJ3NldF92aXNpYmlsaXR5Jyx7ZGF0YTp6 cH0pO3JldHVybiB6czt9LGdldFZpc2liaWxpdHk6ZnVuY3Rpb24oKXtyZXR1cm4g em87fSxzZXRPbmxpbmVQb2xpY3k6ZnVuY3Rpb24oenMpe3ppPXpkO3ooenMpO3Zh ciB6cD17b25saW5lX3BvbGljeTp6c307dmFyIHpxPXt0eXBlOmssb25saW5lX3Bv bGljeTp6c307dmFyIHpyPXEobix6cCx6cSk7dyh6cix6cSk7cCgpLmxvZygnc2V0 X29ubGluZV9wb2xpY3knLHtkYXRhOnpwfSk7cmV0dXJuIHpzO30sZ2V0T25saW5l UG9saWN5OmZ1bmN0aW9uKCl7cmV0dXJuIHpkO30sc2V0RGVmYXVsdE9ubGluZVBv bGljeTpmdW5jdGlvbih6cCl7cmV0dXJuIHRoaXMuc2V0T25saW5lUG9saWN5KHpw KTt9LGdldERlZmF1bHRPbmxpbmVQb2xpY3k6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5nZXRPbmxpbmVQb2xpY3koKTt9LGdldEZyaWVuZFZpc2liaWxpdHk6ZnVuY3Rp b24oenApe3JldHVybiB6Z1t6cF18fGguVU5MSVNURUQ7fSxhbGxvd3M6ZnVuY3Rp b24oenApe2lmKHRoaXMuZ2V0VmlzaWJpbGl0eSgpPT09aC5PRkZMSU5FKXJldHVy biBmYWxzZTt2YXIgenE9dGhpcy5nZXRPbmxpbmVQb2xpY3koKTtyZXR1cm4genE9 PT1oLk9OTElORV9UT19XSElURUxJU1Q/emdbenBdPT1oLldISVRFTElTVEVEOnpn W3pwXSE9aC5CTEFDS0xJU1RFRDt9LHNldEZyaWVuZHNWaXNpYmlsaXR5OmZ1bmN0 aW9uKHp0LHp4KXtpZih6dC5sZW5ndGg+MCl7dmFyIHp3PXt9O2Zvcih2YXIgenI9 MDt6cjx6dC5sZW5ndGg7enIrKyl7dmFyIHpzPXp0W3pyXTt6alt6c109emdbenNd O3p3W3pzXT16eDt9eCh6dyk7dmFyIHp2PXp4O2lmKHp2PT1oLlVOTElTVEVEKXp2 PXpqW3p0WzBdXTt2YXIgenA9e3VzZXJzOnp0LHNldHRpbmc6engsc2V0dGluZ190 eXBlOnp2fTt2YXIgenE9e3R5cGU6aixzZXR0aW5nczp6d307dmFyIHp1PXEobSx6 cCx6cSk7dyh6dSx6cSk7cCgpLmxvZygnc2V0X2ZyaWVuZF92aXNpYmlsaXR5Jyx7 ZGF0YTp6cH0pO31yZXR1cm4geng7fSxzZXRGcmllbmRWaXNpYmlsaXR5TWFwOmZ1 bmN0aW9uKHpyLHpzKXtmb3IodmFyIHpxIGluIHpyKXpqW3pxXT16Z1t6cV07eCh6 cik7dmFyIHpwPXt0eXBlOmosc2V0dGluZ3M6enJ9O3codih6cyx6cCksenApO3Ao KS5sb2coJ3NldF9mcmllbmRfdmlzaWJpbGl0eV9mcm9tX21hcCcse2RhdGE6enJ9 KTt9LGFsbG93OmZ1bmN0aW9uKHpwKXtpZih0aGlzLmFsbG93cyh6cCkpe3AoKS5l cnJvcignYWxsb3dfYWxyZWFkeV9hbGxvd2VkJyk7dGhyb3cgbmV3IEVycm9yKCJh bGxvdygpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmb3IgdXNlcnMgdGhhdCAiKyJh cmUgbm90IGFscmVhZHkgYWxsb3dlZCIpO31pZih0aGlzLmdldFZpc2liaWxpdHko KT09PWguT0ZGTElORSl7cCgpLmVycm9yKCdhbGxvd19jYWxsZWRfd2hpbGVfb2Zm bGluZScpO3Rocm93IG5ldyBFcnJvcigiYWxsb3coKSBzaG91bGQgb25seSBiZSBj YWxsZWQgd2hlbiB0aGUgdXNlciBpcyBhbHJlYWR5IG9ubGluZSIpO312YXIgenE9 dGhpcy5nZXRPbmxpbmVQb2xpY3koKT09PWguT05MSU5FX1RPX1dISVRFTElTVD9o LldISVRFTElTVEVEOmguVU5MSVNURUQ7cmV0dXJuIHRoaXMuc2V0RnJpZW5kc1Zp c2liaWxpdHkoW3pwXSx6cSk7fSxkaXNhbGxvdzpmdW5jdGlvbih6cCl7aWYoIXRo aXMuYWxsb3dzKHpwKSl7cCgpLmVycm9yKCdkaXNhbGxvd19hbHJlYWR5X2Rpc2Fs bG93ZWQnKTt0aHJvdyBuZXcgRXJyb3IoImRpc2FsbG93KCkgc2hvdWxkIG9ubHkg YmUgY2FsbGVkIGZvciB1c2VycyB0aGF0ICIrImFyZSBub3QgYWxyZWFkeSBkaXNh bGxvd2VkIik7fWlmKHRoaXMuZ2V0VmlzaWJpbGl0eSgpPT09aC5PRkZMSU5FKXtw KCkuZXJyb3IoJ2Rpc2FsbG93X2NhbGxlZF93aGlsZV9vZmZsaW5lJyk7dGhyb3cg bmV3IEVycm9yKCJkaXNhbGxvdygpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVu IHRoZSB1c2VyIGlzIGFscmVhZHkgb25saW5lIik7fXZhciB6cT10aGlzLmdldE9u bGluZVBvbGljeSgpPT09aC5PTkxJTkVfVE9fQkxBQ0tMSVNUP2guQkxBQ0tMSVNU RUQ6aC5VTkxJU1RFRDtyZXR1cm4gdGhpcy5zZXRGcmllbmRzVmlzaWJpbGl0eShb enBdLHpxKTt9LGdldEJsYWNrbGlzdDpmdW5jdGlvbigpe3ZhciB6cT1bXTtmb3Io dmFyIHpwIGluIHpnKWlmKHpnW3pwXT09PWguQkxBQ0tMSVNURUQpenEucHVzaCh6 cCk7cmV0dXJuIHpxO30sZ2V0V2hpdGVsaXN0OmZ1bmN0aW9uKCl7dmFyIHpxPVtd O2Zvcih2YXIgenAgaW4gemcpaWYoemdbenBdPT09aC5XSElURUxJU1RFRCl6cS5w dXNoKHpwKTtyZXR1cm4genE7fSxnZXRNYXBGb3JUZXN0OmZ1bmN0aW9uKCl7cmV0 dXJuIHpnO30sc2V0TWFwRm9yVGVzdDpmdW5jdGlvbih6cCl7emc9enA7fX0pO3pm LlByZXNlbmNlUHJpdmFjeT16aC5leHBvcnRzPWg7fX0sMyk7Cl9fZSgiQ2hhdFRh Yk1vZGVsIixbIkFycmF5VXRpbHMiLCJKU0xvZ2dlciIsIm1hdGgtZXh0ZW5zaW9u cyIsIk1lcmN1cnlBc3NlcnQiLCJQcmVzZW5jZVN0YXRlIiwiT2JqZWN0VXRpbHMi LCJjb3B5UHJvcGVydGllcyIsImFyYml0ZXIiXSxmdW5jdGlvbih6YSx6Yyx6Yix6 KXt2YXIgYj16YygnQXJyYXlVdGlscycpO3ZhciBjPXpjKCdKU0xvZ2dlcicpO3Zh ciBkPXpjKCdtYXRoLWV4dGVuc2lvbnMnKTt2YXIgZT16YygnTWVyY3VyeUFzc2Vy dCcpO3ZhciBnPXpjKCdQcmVzZW5jZVN0YXRlJyk7dmFyIGY9emMoJ09iamVjdFV0 aWxzJyk7dmFyIHk9emMoJ2NvcHlQcm9wZXJ0aWVzJyk7dmFyIHc9W107dmFyIHQ9 bnVsbDt2YXIgbT0wO3ZhciBwPTIwO3ZhciBsPWMuY3JlYXRlKCdjaGF0X3RhYl9t b2RlbCcpO3ZhciB1PWZhbHNlO2Z1bmN0aW9uIHYoemQpe3pkLnQyPVtdO3pkLnVj dDI9bTt6ZC5sbTI9dDt3LmZvckVhY2goZnVuY3Rpb24oemYpe2lmKCF6Zi5mcmFn aWxlKXt2YXIgemU9e2k6emYuaWR9O2lmKHpmLnJhaXNlZCl6ZS5yPTE7emQudDIu cHVzaCh6ZSk7fX0pO3JldHVybiB6ZDt9ZnVuY3Rpb24gbih6ZSl7aWYoemUmJnpl LnQyKXt2YXIgemY9ZC52ZXJpZnlOdW1iZXIoemUudWN0Mik7aWYoemY+bSl7bT16 ZjtsLmxvZygnbG9hZF9jb29raWVfdGFicycse3RhYnM6emUudDIscHJvbW90ZWQ6 emUubG0yfSk7dmFyIHpkPXplLnQyO28oemQsemUubG0yfHxudWxsKTt9fX1mdW5j dGlvbiBvKHplLHpkKXtpZih4KHplLHpkKSl7dz16ZS5tYXAoZnVuY3Rpb24oemcp e3ZhciB6Zj17aWQ6emcuaX07aWYoemcucil6Zi5yYWlzZWQ9dHJ1ZTtpZih6Zi5p ZD09emQpdD16Zi5pZDtyZXR1cm4gemY7fSk7aigpO3EoKTt9fWZ1bmN0aW9uIHgo emcsemYpe2lmKHpmIT10KXJldHVybiB0cnVlO2lmKHpnLmxlbmd0aCE9dy5sZW5n dGgpcmV0dXJuIHRydWU7Zm9yKHZhciB6ZD0wLHplPXpnLmxlbmd0aDt6ZDx6ZTt6 ZCsrKWlmKCFmLmFyZUVxdWFsKHpnW3pkXSx3W3pkXSkpcmV0dXJuIHRydWU7cmV0 dXJuIGZhbHNlO31mdW5jdGlvbiBxKCl7aWYodSlDaGF0VGFiTW9kZWwuaW5mb3Jt KCdjaGF0L3RhYnMtY2hhbmdlZCcsQ2hhdFRhYk1vZGVsLmdldCgpKTt9ZnVuY3Rp b24gaSgpe209TWF0aC5mbG9vcihEYXRlLm5vdygpKi4wMDEpO2cuZG9TeW5jKCk7 cSgpO31mdW5jdGlvbiBqKCl7dmFyIHpkPXcubGVuZ3RoLXA7aWYoemQ+MCl3PXcu ZmlsdGVyKGZ1bmN0aW9uKHplKXtyZXR1cm4gemUucmFpc2VkfHx6ZC0tPD0wO30p O31mdW5jdGlvbiBrKHplKXtmb3IodmFyIHpkPTA7emQ8dy5sZW5ndGg7emQrKylp Zih3W3pkXS5pZD09emUpcmV0dXJuIHpkO3JldHVybiAtMTt9ZnVuY3Rpb24gcih6 ZCl7aWYoayh6ZCk9PT0tMSl7dy5wdXNoKHtpZDp6ZCxmcmFnaWxlOnRydWV9KTty ZXR1cm4gdHJ1ZTt9cmV0dXJuIGZhbHNlO31mdW5jdGlvbiBzKHplKXt2YXIgemY9 ayh6ZSk7aWYoemYhPS0xKWlmKHdbemZdLmZyYWdpbGUpe3cuc3BsaWNlKHpmLDEp O31lbHNlIHJldHVybiBmYWxzZTtmb3IodmFyIHpkPTA7emQ8PXcubGVuZ3RoO3pk KyspaWYoemQ9PXcubGVuZ3RofHx3W3pkXS5mcmFnaWxlKXt3LnNwbGljZSh6ZCww LHtpZDp6ZX0pO2ooKTtyZXR1cm4gdHJ1ZTt9fWZ1bmN0aW9uIGgoemQpe3ZhciB6 ZT1rKHpkKTtpZih6ZSE9LTEpe3cuc3BsaWNlKHplLDEpO3JldHVybiB0cnVlO31y ZXR1cm4gZmFsc2U7fWcucmVnaXN0ZXJTdGF0ZVN0b3Jlcih2KTtnLnJlZ2lzdGVy U3RhdGVMb2FkZXIobik7dmFyIGE9emMoJ2FyYml0ZXInKTt6Yi5leHBvcnRzPUNo YXRUYWJNb2RlbD15KG5ldyBhKCkse2luZGV4T2Y6ZnVuY3Rpb24oemQpe3JldHVy biBrKHpkKTt9LGNsb3NlQWxsVGFiczpmdW5jdGlvbigpe2lmKHcubGVuZ3RoKXt3 PVtdO3Q9bnVsbDtpKCk7fX0sY2xvc2VGcmFnaWxlVGFiczpmdW5jdGlvbigpe2Zv cih2YXIgemQ9MDt6ZDx3Lmxlbmd0aDt6ZCsrKWlmKHdbemRdLmZyYWdpbGUpe3cu c3BsaWNlKHpkKTtxKCk7YnJlYWs7fX0sY2xvc2VUYWI6ZnVuY3Rpb24oemQpe2Uu aXNUaHJlYWRJRCh6ZCk7aWYoaCh6ZCkpe2lmKHQ9PXpkKXQ9bnVsbDtpKCk7fX0s cmFpc2VUYWI6ZnVuY3Rpb24oemUpe2UuaXNUaHJlYWRJRCh6ZSk7dmFyIHpkPXMo emUpO3ZhciB6Zj1rKHplKTtpZighd1t6Zl0ucmFpc2VkKXt3W3pmXS5yYWlzZWQ9 dHJ1ZTtpKCk7fX0sZ2V0OmZ1bmN0aW9uKCl7dmFyIHpkPXcubWFwKGZ1bmN0aW9u KHplKXt2YXIgemY9eSh7fSx6ZSk7ZGVsZXRlIHpmLmZyYWdpbGU7cmV0dXJuIHpm O30pO3JldHVybiB7dGFiczp6ZCxwcm9tb3RlZDp0fTt9LG9wZW5GcmFnaWxlVGFi OmZ1bmN0aW9uKHpkKXtlLmlzVGhyZWFkSUQoemQpO2lmKHIoemQpKXEoKTt9LG9w ZW5UYWI6ZnVuY3Rpb24oemQpe2UuaXNUaHJlYWRJRCh6ZCk7aWYocyh6ZCkpaSgp O30sbG93ZXJUYWI6ZnVuY3Rpb24oemQpe2UuaXNUaHJlYWRJRCh6ZCk7dmFyIHpl PWsoemQpO2lmKHplIT0tMSYmd1t6ZV0ucmFpc2VkKXtkZWxldGUgd1t6ZV0ucmFp c2VkO2koKTt9fSxyYWlzZUFuZFByb21vdGVUYWI6ZnVuY3Rpb24oemQpe2UuaXNU aHJlYWRJRCh6ZCk7cyh6ZCk7dmFyIHplPWsoemQpO2lmKCF3W3plXS5yYWlzZWR8 fHQhPXpkKXt3W3plXS5yYWlzZWQ9dHJ1ZTt0PXpkO2koKTt9fX0pO24oZy5nZXQo KSx0cnVlKTt1PXRydWU7fSk7Cl9fZSgiQ2hhdENvbnRyb2xsZXIiLFsiQ2hhdFRh Yk1vZGVsIiwiTWVyY3VyeVRocmVhZHMiXSxmdW5jdGlvbihkLGYsZSxjKXt2YXIg YT1mKCdDaGF0VGFiTW9kZWwnKTt2YXIgYj1mKCdNZXJjdXJ5VGhyZWFkcycpO2Uu ZXhwb3J0cz17cmFpc2VGcmFnaWxlR3JvdXBUYWI6ZnVuY3Rpb24oZyl7Yi5nZXRD YW5vbmljYWxUaHJlYWRUb0dyb3VwKGcsZnVuY3Rpb24oaCl7YS5vcGVuRnJhZ2ls ZVRhYihoLnRocmVhZF9pZCk7fSk7fSxyYWlzZUdyb3VwVGFiOmZ1bmN0aW9uKGcp e2IuZ2V0Q2Fub25pY2FsVGhyZWFkVG9Hcm91cChnLGZ1bmN0aW9uKGgpe2EucmFp c2VUYWIoaC50aHJlYWRfaWQpO30pO319O30pOwpmdW5jdGlvbiBDaGF0T3B0aW9u cyhiLGEpe3RoaXMuX2pzbG9nPUpTTG9nZ2VyLmNyZWF0ZSgnY2hhdF9vcHRpb25z Jyk7dGhpcy5fanNsb2cubG9nKCdzZXJ2ZXInLHt2aXM6Yn0pO3RoaXMudmlzaWJp bGl0eT0hIWI7dGhpcy5fbGFzdFZpc2liaWxpdHlDaGFuZ2VUaW1lPTA7dGhpcy5z ZXR0aW5ncz1hO31DaGF0T3B0aW9ucy5wcm90b3R5cGU9e2xvYWQ6ZnVuY3Rpb24o KXtyZXF1aXJlLmVuc3VyZShbJ0NoYXRDb25maWcnLCdQcmVzZW5jZVV0aWwnLCdQ cmVzZW5jZVN0YXRlJ10sZnVuY3Rpb24oYSxjLGIpe3RoaXMuX2NoYXRDb25maWc9 YTt0aGlzLl9wcmVzZW5jZVN0YXRlPWI7Yi5yZWdpc3RlclN0YXRlU3RvcmVyKHRo aXMuX3N0b3JlU3RhdGUuYmluZCh0aGlzKSk7Yi5yZWdpc3RlclN0YXRlTG9hZGVy KHRoaXMuX2xvYWRTdGF0ZS5iaW5kKHRoaXMpKTtpZighYS5nZXQoJ2JsYWNrYmly ZCcpKXtBcmJpdGVyLnN1YnNjcmliZSh3aW5kb3cuY2hhbm5lbC5PTl9DT05GSUcs ZnVuY3Rpb24oZSxkKXt2YXIgZj1kLmdldENvbmZpZygndmlzaWJpbGl0eScpO3Ro aXMuX2pzbG9nLmxvZygndmlzX2NoYW5fY29uZmlnJyx7bmV3X3ZpczpmfSk7dGhp cy5zZXRWaXNpYmlsaXR5KGYpO30uYmluZCh0aGlzKSk7QXJiaXRlci5zdWJzY3Jp YmUoJ2NoYW5uZWwvdmlzaWJpbGl0eS1jb25maWcnLGZ1bmN0aW9uKGQsZSl7dGhp cy5fanNsb2cubG9nKCd2aXNfY2hhbl9jb25maWcnLHtuZXdfdmlzOmV9KTt0aGlz LnNldFZpc2liaWxpdHkoZSk7fS5iaW5kKHRoaXMpKTt9QXJiaXRlci5zdWJzY3Jp YmUoUHJlc2VuY2VNZXNzYWdlLmdldEFyYml0ZXJNZXNzYWdlVHlwZSgndmlzaWJp bGl0eScpLGZ1bmN0aW9uKGQsZSl7dmFyIGY9ZS5vYmo7aWYoZi53aW5kb3dfaWQ9 PT1jLmdldFNlc3Npb25JRCgpKXJldHVybjt0aGlzLl9qc2xvZy5sb2coJ3Zpc19j aGFuX21lc3NhZ2UnLHtuZXdfdmlzOmYudmlzaWJpbGl0eSx3aW5kb3dfaWQ6Zi53 aW5kb3dfaWR9KTt0aGlzLnNldFZpc2liaWxpdHkoZi52aXNpYmlsaXR5KTt9LmJp bmQodGhpcykpO0FyYml0ZXIuc3Vic2NyaWJlKFByZXNlbmNlTWVzc2FnZS5nZXRB cmJpdGVyTWVzc2FnZVR5cGUoJ3NldHRpbmcnKSxmdW5jdGlvbihkLGUpe3ZhciBm PWUub2JqO2lmKGYud2luZG93X2lkPT09Yy5nZXRTZXNzaW9uSUQoKSlyZXR1cm47 dGhpcy5zZXRTZXR0aW5nKGYuc2V0dGluZywhIWYudmFsdWUpO30uYmluZCh0aGlz KSk7QXJiaXRlci5pbmZvcm0oJ2NoYXQtb3B0aW9ucy9pbml0aWFsaXplZCcsdGhp cyxBcmJpdGVyLkJFSEFWSU9SX1BFUlNJU1RFTlQpO2lmKCFhLmdldCgnYmxhY2ti aXJkJykpe3RoaXMuX2pzbG9nLmxvZygnZGVmaW5lX3Zpc19pbml0Jyx0aGlzLnZp c2liaWxpdHkpO0FyYml0ZXIuaW5mb3JtKCdjaGF0LXZpc2liaWxpdHkvaW5pdGlh bGl6ZWQnLHRoaXMsQXJiaXRlci5CRUhBVklPUl9QRVJTSVNURU5UKTt9fS5iaW5k KHRoaXMpKTt9LF9zdG9yZVN0YXRlOmZ1bmN0aW9uKGEpe2EudmlzPXRoaXMudmlz aWJpbGl0eT8xOjA7YS52Y3Q9dGhpcy5fbGFzdFZpc2liaWxpdHlDaGFuZ2VUaW1l O2EuYmxzPXRoaXMuZ2V0U2V0dGluZygnc3RpY2t5X2J1ZGR5bGlzdCcpO2EuYmxj PXRoaXMuZ2V0U2V0dGluZygnY29tcGFjdF9idWRkeWxpc3QnKTthLnNuZD10aGlz LmdldFNldHRpbmcoJ3NvdW5kJyk7cmV0dXJuIGE7fSxfbG9hZFN0YXRlOmZ1bmN0 aW9uKGIpe2lmKCF0aGlzLl9jaGF0Q29uZmlnLmdldCgnYmxhY2tiaXJkJykpe3Zh ciBhPXZlcmlmeU51bWJlcihiLnZjdCk7dmFyIGM9TWF0aC5tYXgoRW52LnJlcF9s YWcsdGhpcy5fY2hhdENvbmZpZy5nZXQoJ3ByZXNlbmNlX2Nvb2tpZV9zZXR0aW5n X2NhY2hlX3dpbmRvdycpKTtpZihuZXcgRGF0ZSgpLWE8YyYmdGhpcy5fbGFzdFZp c2liaWxpdHlDaGFuZ2VUaW1lPGEpe2lmKGIudmlzIT10aGlzLnZpc2liaWxpdHkp e3RoaXMuX2pzbG9nLmxvZygndmlzX2xvYWQnLHtuZXdfdmlzOmIudmlzfSk7dGhp cy5zZXRWaXNpYmlsaXR5KCEhYi52aXMpO310aGlzLl9sYXN0VmlzaWJpbGl0eUNo YW5nZVRpbWU9YTt9fXRoaXMuc2V0U2V0dGluZygnc3RpY2t5X2J1ZGR5bGlzdCcs Yi5ibHMpO3RoaXMuc2V0U2V0dGluZygnY29tcGFjdF9idWRkeWxpc3QnLGIuYmxj KTt0aGlzLnNldFNldHRpbmcoJ3NvdW5kJyxiLnNuZCk7fSxzZXRWaXNpYmlsaXR5 OmZ1bmN0aW9uKGEpe2lmKGE9PT10aGlzLnZpc2liaWxpdHkpcmV0dXJuO3RoaXMu dmlzaWJpbGl0eT1hO3RoaXMuX2xhc3RWaXNpYmlsaXR5Q2hhbmdlVGltZT1EYXRl Lm5vdygpO0FyYml0ZXIuaW5mb3JtKCdjaGF0L3Zpc2liaWxpdHktY2hhbmdlZCcs e3NlbmRlcjp0aGlzfSk7dGhpcy5fcHJlc2VuY2VTdGF0ZS5kb1N5bmMoKTt9LF9v blZpc2liaWxpdHlSZXNwb25zZTpmdW5jdGlvbihhKXt0aGlzLl9qc2xvZy5sb2co J3Zpc19zZW5kX3N1Y2Nlc3MnLHtuZXdfdmlzOmF9KTtpZihhKXRoaXMuc2V0Vmlz aWJpbGl0eShhKTt9LF9vblZpc2liaWxpdHlFcnJvcjpmdW5jdGlvbihhKXt0aGlz Ll9qc2xvZy5sb2coJ3Zpc19zZW5kX2Vycm9yJyx7b2xkX3ZpczphfSk7dGhpcy5z ZXRWaXNpYmlsaXR5KGEpO30sdG9nZ2xlVmlzaWJpbGl0eTpmdW5jdGlvbigpe3Ro aXMuc2VuZFZpc2liaWxpdHkoIXRoaXMudmlzaWJpbGl0eSk7fSxzZW5kVmlzaWJp bGl0eTpmdW5jdGlvbihhKXtyZXF1aXJlLmVuc3VyZShbJ1ByZXNlbmNlVXRpbCdd LGZ1bmN0aW9uKGIpe3RoaXMuX2pzbG9nLmxvZygndmlzX3NlbmQnLHtvbGRfdmlz OnRoaXMudmlzaWJpbGl0eSxuZXdfdmlzOmF9KTtpZih0aGlzLnZpc2liaWxpdHk9 PWEpcmV0dXJuO3ZhciBjPXt2aXNpYmlsaXR5OmEsbm90aWZ5X2lkczpDaGF0Lmdl dEFjdGl2ZUZyaWVuZENoYXRzKCksd2luZG93X2lkOmIuZ2V0U2Vzc2lvbklEKCl9 O2lmKCFhKXRoaXMuc2V0VmlzaWJpbGl0eShhKTtuZXcgQXN5bmNSZXF1ZXN0KGNo YXREaXNwbGF5LnZpc2liaWxpdHlVUkwpLnNldEhhbmRsZXIodGhpcy5fb25WaXNp YmlsaXR5UmVzcG9uc2Uuc2hpZWxkKHRoaXMsYSkpLnNldEVycm9ySGFuZGxlcih0 aGlzLl9vblZpc2liaWxpdHlFcnJvci5zaGllbGQodGhpcywhYSkpLnNldERhdGEo Yykuc2V0QWxsb3dDcm9zc1BhZ2VUcmFuc2l0aW9uKHRydWUpLnNlbmQoKTtBcmJp dGVyLmluZm9ybShhPydjaGF0L2Nvbm5lY3QnOidjaGF0L2Rpc2Nvbm5lY3QnKTt9 LmJpbmQodGhpcykpO30sZ2V0U2V0dGluZzpmdW5jdGlvbihhKXtyZXR1cm4gdGhp cy5zZXR0aW5nc1thXTt9LHNldFNldHRpbmc6ZnVuY3Rpb24oYSxiKXtpZih0aGlz LmdldFNldHRpbmcoYSk9PWIpcmV0dXJuO3RoaXMuc2V0dGluZ3NbYV09YjtBcmJp dGVyLmluZm9ybSgnY2hhdC9vcHRpb24tY2hhbmdlZCcse25hbWU6YSx2YWx1ZTpi fSk7fX07Cl9fZSgiQ2hhdFZpc2liaWxpdHkiLFsiYXJiaXRlciIsIkNoYXRDb25m aWciLCJKU0xvZ2dlciIsIlByZXNlbmNlUHJpdmFjeSJdLGZ1bmN0aW9uKGcsaSxo LGYpe3ZhciBhPWkoJ2FyYml0ZXInKTt2YXIgYj1pKCdDaGF0Q29uZmlnJyk7dmFy IGQ9aSgnSlNMb2dnZXInKTt2YXIgZT1pKCdQcmVzZW5jZVByaXZhY3knKTt2YXIg Yz17aXNPbmxpbmU6ZnVuY3Rpb24oKXtpZihiLmdldCgnYmxhY2tiaXJkJykpcmV0 dXJuIGUuZ2V0VmlzaWJpbGl0eSgpPT09ZS5PTkxJTkU7cmV0dXJuIHdpbmRvdy5j aGF0T3B0aW9ucyYmd2luZG93LmNoYXRPcHRpb25zLnZpc2liaWxpdHk7fSxnb09u bGluZTpmdW5jdGlvbihqKXtpZihiLmdldCgnYmxhY2tiaXJkJykpe2Uuc3Vic2Ny aWJlKCdpbml0aWFsaXplZCcsZnVuY3Rpb24oKXtpZihlLmdldFZpc2liaWxpdHko KT09PWUuT0ZGTElORSl7ZC5jcmVhdGUoJ2JsYWNrYmlyZCcpLmxvZygnY2hhdF9n b19vbmxpbmUnKTtlLnNldFZpc2liaWxpdHkoZS5PTkxJTkUpO31qJiZqKCk7fSk7 cmV0dXJuO31hLnN1YnNjcmliZSgnY2hhdC1vcHRpb25zL2luaXRpYWxpemVkJyxm dW5jdGlvbihldmVudCxrKXtpZihrLnZpc2liaWxpdHkpe2omJmooKTt9ZWxzZXtp ZihqKXZhciBsPWEuc3Vic2NyaWJlKCdjaGF0L3Zpc2liaWxpdHktY2hhbmdlZCcs ZnVuY3Rpb24oKXthLnVuc3Vic2NyaWJlKGwpO2ooKTt9KTtrLnNlbmRWaXNpYmls aXR5KHRydWUpO319KTt9LGdvT2ZmbGluZTpmdW5jdGlvbigpe2lmKGIuZ2V0KCdi bGFja2JpcmQnKSl7ZS5zdWJzY3JpYmUoJ2luaXRpYWxpemVkJyxmdW5jdGlvbigp e2lmKGUuZ2V0VmlzaWJpbGl0eSgpPT09ZS5PTkxJTkUpe2QuY3JlYXRlKCdibGFj a2JpcmQnKS5sb2coJ2NoYXRfZ29fb2ZmbGluZScpO2Uuc2V0VmlzaWJpbGl0eShl Lk9GRkxJTkUpO319KTtyZXR1cm47fWEuc3Vic2NyaWJlKCdjaGF0LW9wdGlvbnMv aW5pdGlhbGl6ZWQnLGZ1bmN0aW9uKGV2ZW50LGope2lmKGoudmlzaWJpbGl0eSlq LnNlbmRWaXNpYmlsaXR5KGZhbHNlKTt9KTt9LHRvZ2dsZVZpc2liaWxpdHk6ZnVu Y3Rpb24oKXtpZihjLmlzT25saW5lKCkpe2MuZ29PZmZsaW5lKCk7fWVsc2UgYy5n b09ubGluZSgpO319O2cuQ2hhdFZpc2liaWxpdHk9aC5leHBvcnRzPWM7fSwzKTsK X19lKCJDaGF0IixbImFyYml0ZXIiLCJhc3luYy1zaWduYWwiLCJKU0xvZ2dlciIs Ik9iamVjdFV0aWxzIiwiUHJlc2VuY2VQcml2YWN5Il0sZnVuY3Rpb24oayxtLGws ail7dmFyIGE9bSgnYXJiaXRlcicpO3ZhciBiPW0oJ2FzeW5jLXNpZ25hbCcpO3Zh ciBkPW0oJ0pTTG9nZ2VyJyk7dmFyIGU9bSgnT2JqZWN0VXRpbHMnKTt2YXIgZj1t KCdQcmVzZW5jZVByaXZhY3knKTtmdW5jdGlvbiBoKG8scCl7aWYocCYmcD09J29y ZGVyZWRfbGlzdCd8fHA9PSdtb3JlX29ubGluZV9mcmllbmRzJ3x8cD09J29ubGlu ZV9mcmllbmRzJ3x8cD09J3R5cGVhaGVhZCcpe3ZhciBuPXt0YXJnZXQ6byxzb3Vy Y2U6cH07bmV3IGIoJy9hamF4L2NoYXQvY3QucGhwJyxuKS5zZW5kKCk7fX12YXIg Zz17Y2hhdERpc3BsYXk6J2NoYXQtZGlzcGxheS9sb2FkZWQnLGJ1ZGR5TGlzdERp c3BsYXk6J2J1ZGR5bGlzdC1kaXNwbGF5L2luaXRpYWxpemVkJyxidWRkeUxpc3RO dWI6J2J1ZGR5bGlzdC1udWIvaW5pdGlhbGl6ZWQnLHNpZGViYXI6J3NpZGViYXIv aW5pdGlhbGl6ZWQnfTtmdW5jdGlvbiBpKG8sbil7YS5zdWJzY3JpYmUoZ1tvXSxm dW5jdGlvbihldmVudCxwKXtuKHApO30pO312YXIgYz17b3BlblRhYjpmdW5jdGlv bihuLG8scSxwKXtpZih3aW5kb3cuRXh0ZXJuYWwmJndpbmRvdy5FeHRlcm5hbC5D aGF0JiZ3aW5kb3cuRXh0ZXJuYWwuQ2hhdC5vcGVuV2luZG93KXdpbmRvdy5FeHRl cm5hbC5DaGF0Lm9wZW5XaW5kb3cobik7aChuLHApO2koJ2NoYXREaXNwbGF5Jyxm dW5jdGlvbihyKXtyLmZvY3VzVGFiKG4sdHJ1ZSxvLG8scSk7fSk7fSxvcGVuTXVs dGljaGF0VGFiOmZ1bmN0aW9uKHEsbyxuLHIscyxwKXtpKCdjaGF0RGlzcGxheScs ZnVuY3Rpb24odCl7dC5jcmVhdGVNdWx0aWNoYXRUYWIocSxvLG4scixzLHRydWUs cCk7fSk7fSxsb2FkVGFiRnJhZ2lsZTpmdW5jdGlvbihvLHAsbixxKXttLmVuc3Vy ZShbJ0NoYXRDb25maWcnXSxmdW5jdGlvbihyKXtpZihyLmdldCgnbWVyY3VyeV9p bnRlZ3JhdGlvbicpKXttLmVuc3VyZShbJ0NoYXRDb250cm9sbGVyJ10sZnVuY3Rp b24ocyl7cy5yYWlzZUZyYWdpbGVHcm91cFRhYihvKTt9KTt9ZWxzZSBpKCdjaGF0 RGlzcGxheScsZnVuY3Rpb24ocyl7cy5sb2FkVGFiRnJhZ2lsZShvLHAsbixxKTt9 KTt9KTt9LG9wZW5CdWRkeUxpc3Q6ZnVuY3Rpb24oKXtpKCdidWRkeUxpc3ROdWIn LGZ1bmN0aW9uKG4pe24uc2hvdygpO30pO30sY2xvc2VCdWRkeUxpc3Q6ZnVuY3Rp b24oKXtpKCdidWRkeUxpc3ROdWInLGZ1bmN0aW9uKG4pe24uaGlkZSgpO30pO30s dG9nZ2xlU2lkZWJhcjpmdW5jdGlvbigpe2koJ3NpZGViYXInLGZ1bmN0aW9uKG4p e24udG9nZ2xlKCk7fSk7fSxnb09ubGluZTpmdW5jdGlvbihuKXttLmVuc3VyZShb J0NoYXRWaXNpYmlsaXR5J10sZnVuY3Rpb24obyl7by5nb09ubGluZShuKTt9KTt9 LGlzT25saW5lOmZ1bmN0aW9uKCl7dmFyIG49bnVsbDttLmVuc3VyZShbJ0NoYXRW aXNpYmlsaXR5J10sZnVuY3Rpb24obyl7bj1vO30pO3JldHVybiBuJiZuLmlzT25s aW5lKCk7fSxzcXVlbGNoVGFiOmZ1bmN0aW9uKG4sbyl7aSgnY2hhdERpc3BsYXkn LGZ1bmN0aW9uKHApe3Auc2V0U3F1ZWxjaGVkVGFiKG4sdHJ1ZSk7cC5jbG9zZVRh YihuKTt9KTt9LHVuc3F1ZWxjaFRhYjpmdW5jdGlvbihuKXtpKCdjaGF0RGlzcGxh eScsZnVuY3Rpb24obyl7by5zZXRTcXVlbGNoZWRUYWIobixmYWxzZSk7fSk7fSxn ZXRBY3RpdmVDaGF0czpmdW5jdGlvbigpe2lmKCF3aW5kb3cuY2hhdERpc3BsYXkp cmV0dXJuIFtdO3JldHVybiBlLmdldEtleXMod2luZG93LmNoYXREaXNwbGF5LnRh YnMpO30saGFzRm9jdXNlZENoYXQ6ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmNo YXREaXNwbGF5JiZ3aW5kb3cuY2hhdERpc3BsYXkuaGFzRm9jdXNlZFRhYigpO30s Z2V0QWN0aXZlRnJpZW5kQ2hhdHM6ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmdldEFj dGl2ZUNoYXRzKCk7cmV0dXJuIG4uZmlsdGVyKGZ1bmN0aW9uKG8pe3JldHVybiB3 aW5kb3cuY2hhdERpc3BsYXkmJndpbmRvdy5jaGF0RGlzcGxheS50YWJzW29dJiZ3 aW5kb3cuY2hhdERpc3BsYXkudGFic1tvXS5nZXRQb3N0VHlwZSgpPT0nZnJpZW5k Jzt9KTt9LGdldExvZ2dlcjpmdW5jdGlvbihuKXtyZXR1cm4gZC5jcmVhdGUobik7 fX07ay5DaGF0PWwuZXhwb3J0cz1jO30sMyk7Cl9fZSgiU2VydmVyVGltZSIsWyJQ cmVzZW5jZUluaXRpYWxEYXRhIl0sZnVuY3Rpb24oZSxnLGYsZCl7dmFyIGE9Zygn UHJlc2VuY2VJbml0aWFsRGF0YScpO3ZhciBiO2Z1bmN0aW9uIGMoaCl7Yj1EYXRl Lm5vdygpLWg7fWMoYS5zZXJ2ZXJUaW1lKTtlLlNlcnZlclRpbWU9Zi5leHBvcnRz PXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKS1iO30sZ2V0U2tldzpm dW5jdGlvbigpe3JldHVybiBiO30sdXBkYXRlOmZ1bmN0aW9uKGgpe2MoaCk7fX07 fSwzKTsKX19lKCJTaG9ydFByb2ZpbGVzIixbImFyYml0ZXIiLCJBcnJheVV0aWxz IiwiSlNMb2dnZXIiLCJPYmplY3RVdGlscyIsIkFzeW5jUmVxdWVzdCIsIkVudiIs InV0aWwiLCJjb3B5UHJvcGVydGllcyIsIk1lcmN1cnlSZXF1aXJlRW5zdXJlIl0s ZnVuY3Rpb24oemEsemMsemIseil7dmFyIGE9emMoJ2FyYml0ZXInKTt2YXIgYj16 YygnQXJyYXlVdGlscycpO3ZhciBlPXpjKCdKU0xvZ2dlcicpO3ZhciBnPXpjKCdP YmplY3RVdGlscycpO3ZhciBjPXpjKCdBc3luY1JlcXVlc3QnKTt2YXIgZD16Yygn RW52Jyk7dmFyIGs9emMoJ3V0aWwnKTt2YXIgeT16YygnY29weVByb3BlcnRpZXMn KTt2YXIgZj16YygnTWVyY3VyeVJlcXVpcmVFbnN1cmUnKTt2YXIgdz17fTt2YXIg bD1uZXcgYSgpO3ZhciBtPVtdO3ZhciBxPWZhbHNlO3ZhciBzPWZhbHNlO3ZhciB0 PWUuY3JlYXRlKCdzaG9ydF9wcm9maWxlcycpO2Z1bmN0aW9uIG4oKXtpZighbS5s ZW5ndGh8fHEpcmV0dXJuO3E9dHJ1ZTtvLmRlZmVyKCk7fWZ1bmN0aW9uIHgoemQp e3ZhciB6ZT1bXTtiLmNyZWF0ZUZyb20oemQpLmZvckVhY2goZnVuY3Rpb24oemYp e3ZhciB6bD17fTtmb3IodmFyIHppPTAsems9emYuaWRzLmxlbmd0aDt6aTx6azt6 aSsrKXt2YXIgemo9emYuaWRzW3ppXTtpZih3W3pqXSl7emxbempdPXdbempdO31l bHNle3psPW51bGw7YnJlYWs7fX1pZih6bCl7dmFyIHptPXt9O2Zvcih2YXIgemcg aW4gemwpem1bemddPXkoe30semxbemddKTt0cnl7emYuZnVuKHptKTt9Y2F0Y2go emgpe3QuZXJyb3IoJ2NhbGxiYWNrX2Vycm9yJyx7bWVzc2FnZTp6aC5tZXNzYWdl LHN0YWNrOnpoLnN0YWNrfSk7fX1lbHNlIHplLnB1c2goemYpO30pO3JldHVybiB6 ZTt9ZnVuY3Rpb24gcigpe3E9ZmFsc2U7bigpO312YXIgaT0nL2FqYXgvY2hhdC91 c2VyX2luZm8ucGhwJzt2YXIgaj0nL2FqYXgvY2hhdC91c2VyX2luZm9fYWxsLnBo cCc7ZnVuY3Rpb24gbyh6ZSl7bC5pbmZvcm0oJ2ZldGNoJyk7dmFyIHpkPXgobSk7 bT1bXTtpZighemQubGVuZ3RoKXtyKCk7cmV0dXJuO312YXIgemc9e307emQuZm9y RWFjaChmdW5jdGlvbih6aCl7emguaWRzLmZvckVhY2goZnVuY3Rpb24oemkpe2lm KCF3W3ppXSl6Z1t6aV09dHJ1ZTt9KTt9KTt2YXIgemY9Zy5nZXRLZXlzKHpnKTtu ZXcgYyhpKS5zZXREYXRhKHtpZHM6emZ9KS5zZXRIYW5kbGVyKGZ1bmN0aW9uKHpo KXt2KHpoLHpkKTt9KS5zZXRFcnJvckhhbmRsZXIodSkuc2V0QWxsb3dDcm9zc1Bh Z2VUcmFuc2l0aW9uKHRydWUpLnNldE1ldGhvZCgnR0VUJykuc2V0UmVhZE9ubHko dHJ1ZSkuc2VuZCgpO31mdW5jdGlvbiB2KHpmLHpkKXtmb3IodmFyIHplIGluIHpm LnBheWxvYWQpe3ZhciB6aD16Zi5wYXlsb2FkW3plXTtpZighemgudHlwZSl6aC50 eXBlPSdmcmllbmQnO3dbemVdPXpoO31pZih6ZCl4KHpkKTttPXgobSk7cigpO2wu aW5mb3JtKCd1cGRhdGVkJyk7dmFyIHpnPXpmLmdldFJlcXVlc3QoKS51cmkuZ2V0 UGF0aCgpO2lmKHpnPT1pKXt0LmxvZygnZmV0Y2hfcmVzcG9uc2UnKTt9ZWxzZSBp Zih6Zz09ail0LmxvZygnZmV0Y2hfcmVzcG9uc2VfYWxsJyk7fWZ1bmN0aW9uIHUo KXt0LmVycm9yKCdmZXRjaF9lcnJvcicpO3IoKTt9ZnVuY3Rpb24gcCgpe2lmKCFz KXt0LmxvZygnZmV0Y2hfYWxsJyk7cz10cnVlO25ldyBjKGopLnNldERhdGEoe3Zp ZXdlcjpkLnVzZXJ9KS5zZXRIYW5kbGVyKHYpLnNldEFsbG93Q3Jvc3NQYWdlVHJh bnNpdGlvbih0cnVlKS5zZXRNZXRob2QoJ0dFVCcpLnNldFJlYWRPbmx5KHRydWUp LnNlbmQoKTt9fXZhciBoPXkobCx7Z2V0OmZ1bmN0aW9uKHplLHpkKXt0aGlzLmdl dE11bHRpKFt6ZV0sZnVuY3Rpb24oemYpe3pkKHpmW3plXSx6ZSk7fSk7fSxnZXRN dWx0aTpmdW5jdGlvbih6Zix6ZSl7dmFyIHpkPXtpZHM6emYsZnVuOnplfTt2YXIg emc9eChbemRdKTtpZih6Zy5sZW5ndGgpe20ucHVzaCh6ZCk7bigpO319LGdldE5v dzpmdW5jdGlvbih6ZCl7dmFyIHplPXdbemRdO2lmKHplKXJldHVybiB5KHt9LHpl KTtyZXR1cm4gbnVsbDt9LGdldENhY2hlZFByb2ZpbGVJRHM6ZnVuY3Rpb24oKXty ZXR1cm4ga2V5cyh3KTt9LGhhc0FsbDpmdW5jdGlvbigpe3JldHVybiBzO30sZmV0 Y2hBbGw6ZnVuY3Rpb24oKXtwKCk7fSxzZXQ6ZnVuY3Rpb24oemQsemUpe3ZhciB6 Zj13W3pkXTtpZih6ZiYmKHpmLm5hbWUhPXplLm5hbWV8fHpmLmZpcnN0TmFtZSE9 emUuZmlyc3ROYW1lfHx6Zi50aHVtYlNyYyE9emUudGh1bWJTcmMpKXQud2Fybign Y2hhbmdlZCcse29sZEluZm86emYsbmV3SW5mbzp6ZX0pO3dbemRdPXkoe30semUp O30sc2V0TXVsdGk6ZnVuY3Rpb24oemQpe2Zvcih2YXIgemUgaW4gemQpdGhpcy5z ZXQoemUsemRbemVdKTt9fSk7Zi5lbnN1cmUoWydJbml0aWFsQ2hhdFVzZXJJbmZv cyddLGZ1bmN0aW9uKHpkKXtoLnNldE11bHRpKHpkKTt9KTt6YS5TaG9ydFByb2Zp bGVzPXpiLmV4cG9ydHM9aDt9LDMpOwpfX2UoIkF2YWlsYWJsZUxpc3QiLFsiYXJi aXRlciIsIkF2YWlsYWJsZUxpc3RDb25zdGFudHMiLCJDaGFubmVsQ29ubmVjdGlv biIsIkNoYW5uZWxNYW5hZ2VyIiwiQ2hhdCIsIkNoYXRDb25maWciLCJjb3B5UHJv cGVydGllcyIsIkVudiIsImlzRW1wdHkiLCJKU0xvZ2dlciIsIk9iamVjdFV0aWxz IiwiUG9sbGVyIiwicHJlc2VuY2UtY29va2llLW1hbmFnZXIiLCJQcmVzZW5jZVBy aXZhY3kiLCJQcmVzZW5jZVN0YXRlIiwiUHJlc2VuY2VVdGlsIiwiU2VydmVyVGlt ZSIsIlNob3J0UHJvZmlsZXMiLCJBdmFpbGFibGVMaXN0SW5pdGlhbERhdGEiXSxm dW5jdGlvbih6aCx6emQsenIsemUpe3ZhciBhPXp6ZCgnYXJiaXRlcicpO3ZhciBj PXp6ZCgnQXZhaWxhYmxlTGlzdENvbnN0YW50cycpO3ZhciBlPXp6ZCgnQ2hhbm5l bENvbm5lY3Rpb24nKTt2YXIgZj16emQoJ0NoYW5uZWxNYW5hZ2VyJyk7dmFyIGc9 enpkKCdDaGF0Jyk7dmFyIGg9enpkKCdDaGF0Q29uZmlnJyk7dmFyIHpkPXp6ZCgn Y29weVByb3BlcnRpZXMnKTt2YXIgaT16emQoJ0VudicpO3ZhciB6bD16emQoJ2lz RW1wdHknKTt2YXIgaz16emQoJ0pTTG9nZ2VyJyk7dmFyIHA9enpkKCdPYmplY3RV dGlscycpO3ZhciBxPXp6ZCgnUG9sbGVyJyk7dmFyIHp6PXp6ZCgncHJlc2VuY2Ut Y29va2llLW1hbmFnZXInKTt2YXIgcj16emQoJ1ByZXNlbmNlUHJpdmFjeScpO3Zh ciBzPXp6ZCgnUHJlc2VuY2VTdGF0ZScpO3ZhciB0PXp6ZCgnUHJlc2VuY2VVdGls Jyk7dmFyIHY9enpkKCdTZXJ2ZXJUaW1lJyk7dmFyIHc9enpkKCdTaG9ydFByb2Zp bGVzJyk7dmFyIGw9NTt2YXIgbz02MDAwMDt2YXIgdT0nL2FqYXgvY2hhdC9idWRk eV9saXN0LnBocCc7dmFyIG49NTAwMDt2YXIgbT0xODAwMDAwO3ZhciBkPS4wMDU7 dmFyIHp6ZT0wO3ZhciB6emo9ZmFsc2U7dmFyIHpzPTA7dmFyIHp6Yz1mYWxzZTt2 YXIgenk9bnVsbDt2YXIgenA9bnVsbDt2YXIgemM9bnVsbDt2YXIgem89MDt2YXIg em49MDt2YXIgenpiPWZhbHNlO3ZhciB6emE9e307dmFyIHptPWZhbHNlO3ZhciB6 dj17fTt2YXIgeng9e307dmFyIHp3PXt9O3ZhciB6cT17fTt2YXIgeD1rLmNyZWF0 ZSgnYXZhaWxhYmxlX2xpc3QnKTt2YXIgYj16ZCh7fSxjKTtmdW5jdGlvbiB6Zygp e3JldHVybiBnLmlzT25saW5lKCk/KHp6aj96eTp6cCk6bnVsbDt9ZnVuY3Rpb24g eSh6em4senpsKXt2YXIgenptPW51bGw7c3dpdGNoKHp6bil7Y2FzZSBjLk9GRkxJ TkU6enptPSdvZmZsaW5lJzticmVhaztjYXNlIGMuSURMRTp6em09J2lkbGUnO2Jy ZWFrO2Nhc2UgYy5BQ1RJVkU6enptPSdhY3RpdmUnO2JyZWFrO2Nhc2UgYy5NT0JJ TEU6enptPSdtb2JpbGUnO2JyZWFrO314LnJhdGUoenptLHp6bCk7fWZ1bmN0aW9u IHp6Zigpe3pjPW51bGw7YS5pbmZvcm0oYy5PTl9BVkFJTEFCSUxJVFlfQ0hBTkdF RCk7fWZ1bmN0aW9uIHphKHp6bCx6enEsenptLHp6byx6enApe2lmKHp6bD09aS51 c2VyKXJldHVybjtzd2l0Y2goenpxKXtjYXNlIGMuT0ZGTElORTpjYXNlIGMuSURM RTpjYXNlIGMuQUNUSVZFOmNhc2UgYy5NT0JJTEU6YnJlYWs7ZGVmYXVsdDpyZXR1 cm47fXZhciB6em49Yi5nZXQoenpsKSE9enpxO2lmKHp6bSl7aWYoenpiKXt6eFt6 emxdPXYuZ2V0KCk7endbenpsXT16enA7enphW3p6bF09enpxO31lbHNle3p2W3p6 bF09enpxO3p4W3p6bF09enpvfHwodi5nZXQoKStvKTt6d1t6emxdPXp6cDtkZWxl dGUgenphW3p6bF07fX1lbHNlIHp6YVt6emxdPXp6cTtpZih6em4pe3p6ZSsrO2lm KCF6Yyl6Yz16emYuZGVmZXIoKTt5KHp6cSx6em0pO319ZnVuY3Rpb24genpoKHp6 bCl7em49bmV3IERhdGUoKTt6cT1PYmplY3QuZnJvbSh6emwpO31mdW5jdGlvbiB6 emsoKXtpZihiLmhhdmVGdWxsTGlzdClhLmluZm9ybShjLk9OX1VQREFURUQsYik7 fWZ1bmN0aW9uIHp0KHp6bCl7aWYodC5jaGVja01haW50ZW5hbmNlRXJyb3Ioenps KSlyZXR1cm47enMrKzt6emM9ZmFsc2U7aWYoenM+PWwpYS5pbmZvcm0oYy5PTl9V UERBVEVfRVJST1IpO31mdW5jdGlvbiB6dSh6em8pe3ZhciB6em49enpvLmdldFBh eWxvYWQoKTt2YXIgenpsPXp6bi5idWRkeV9saXN0O2lmKCF6emwpe3p0KHp6byk7 cmV0dXJuO312LnVwZGF0ZSh6em4udGltZSk7Yi51cGRhdGVUaW1lPXYuZ2V0KCk7 enM9MDt6emM9ZmFsc2U7aWYoenpsLmZvcmNlZFJlbmRlciliLmhhdmVGdWxsTGlz dD10cnVlO2lmKHp6bC5tb2JpbGVfZnJpZW5kcyE9bnVsbCl6emgoenpsLm1vYmls ZV9mcmllbmRzKTt2YXIgenpxPXp6bC51c2VySW5mb3M7aWYoenpxKXcuc2V0TXVs dGkoenpxKTt2YXIgenptPXp6bC5ub3dBdmFpbGFibGVMaXN0O3ZhciB6enI9W107 Zm9yKHZhciB6enAgaW4genphKWlmKGIuZ2V0KHp6cCkhPT1iLk9GRkxJTkUpenpy LnB1c2goenpwKTt6enIuZm9yRWFjaChmdW5jdGlvbih6enMpe3p6YVt6enNdPWIu T0ZGTElORTt9KTt6bT16emwudXNlcklzSWRsZTt6em0mJmIuYWRkTGVnYWN5QXZh aWxhYmxlTGlzdCh6em0pO2lmKHp6Yil7eng9e307enc9e307fWlmKHp6bC5uZXdB dmFpbGFibGVMaXN0KXtiLnByZXNlbmNlRGF0YT16emwubmV3QXZhaWxhYmxlTGlz dDtiLmhhdmVGdWxsTGlzdD10cnVlO316emYoKTt6emsoKTt6ei5zdG9yZSgpO31m dW5jdGlvbiB6emcoenpuKXtpZihmLmlzU2h1dGRvd24oKXx8IWcuaXNPbmxpbmUo KSl7Yi5fcG9sbGVyLnN0b3AoKTtyZXR1cm47fXpvPW5ldyBEYXRlKCk7dmFyIHp6 bT1mYWxzZTtpZihuZXcgRGF0ZSgpLXpuPm0penptPXRydWU7enpjPXRydWU7dmFy IHp6bD13LmdldENhY2hlZFByb2ZpbGVJRHMoKTt6em4uc2V0SGFuZGxlcih6dSku c2V0RXJyb3JIYW5kbGVyKHp0KS5zZXRPcHRpb24oJ3N1cHByZXNzRXJyb3JBbGVy dHMnLHRydWUpLnNldE9wdGlvbigncmV0cmllcycsMSkuc2V0RGF0YSh7dXNlcjpp LnVzZXIsYXZhaWxhYmxlX3VzZXJfaW5mb19pZHM6enpsLGZldGNoX21vYmlsZTp6 em19KS5zZXRVUkkodSkuc2V0QWxsb3dDcm9zc1BhZ2VUcmFuc2l0aW9uKHRydWUp O31mdW5jdGlvbiB6Yih6emwsenpuKXtmb3IodmFyIHp6bSBpbiB6emwpe3ZhciB6 enE7dmFyIHp6bzt2YXIgenpwO2lmKHp6bil7enpxPWMubGVnYWN5U3RhdHVzTWFw W3p6bFt6em1dLm9sXTt6em89enpsW3p6bV0uZXhwO3p6cD16emxbenptXS5zO31l bHNlIGlmKCF6emxbenptXSl7enpxPWMuT0ZGTElORTt9ZWxzZSBpZih6emxbenpt XS5pKXt6enE9Yy5JRExFO31lbHNlIGlmKHp6bFt6em1dLm0pe3p6cT1jLk1PQklM RTt9ZWxzZSB6enE9Yy5BQ1RJVkU7emEoenptLHp6cSx6em4senpvLHp6cCk7fX1m dW5jdGlvbiB6emkoKXtiLl9wb2xsZXImJmIuX3BvbGxlci5zZXRUaW1lUGVyaW9k KHpnKCkpO31mdW5jdGlvbiB6KCl7Yi5oYXZlRnVsbExpc3Q9ZmFsc2U7em89MDt6 bj0wO3p6YT17fTt6dj17fTt6eD17fTt6cT17fTt6emUrKzt6emYoKTt9ZnVuY3Rp b24gemsoKXt6emkoKTtpZihnLmlzT25saW5lKCkpe2IudXBkYXRlKCk7fWVsc2Ug eigpO31mdW5jdGlvbiB6aSgpe3p6aSgpO2lmKGIuX2NoYW5uZWxDb25uZWN0aW9u LmRpc2Nvbm5lY3RlZCgpKXt6KCk7fWVsc2UgaWYoIWIuaGF2ZUZ1bGxsaXN0KWIu dXBkYXRlKCk7fWZ1bmN0aW9uIHpmKCl7dmFyIHp6bD17fTtpZighenpiKXt2YXIg enptPWIuZ2V0TGVnYWN5T3ZlcmxheSgpO2lmKCF6bCh6em0pKXp6bC51bz16em07 fXJldHVybiB6emw7fWZ1bmN0aW9uIHpqKHp6bSx6emwpe3p6bC5jaGF0X2NvbmZp Zz1oLmdldERlYnVnSW5mbygpO3p6bC5hdmFpbGFibGVfbGlzdF9kZWJ1Z19pbmZv PXt9O2IuZ2V0QXZhaWxhYmxlSURzKCkuZm9yRWFjaChmdW5jdGlvbih6em4pe3p6 bC5hdmFpbGFibGVfbGlzdF9kZWJ1Z19pbmZvW3p6bl09Yi5nZXREZWJ1Z0luZm8o enpuKTt9KTt9emQoYix7aGF2ZUZ1bGxMaXN0OmZhbHNlLGluaXQ6ZnVuY3Rpb24o enpzLHp6bix6enIsenpxLHp6byx6emwsenptLHp6cCl7dGhpcy5fY2hhdENvbmZp Zz1oO3RoaXMuX2NoYW5uZWxDb25uZWN0aW9uPWU7dGhpcy5fcHJlc2VuY2VTdGF0 ZT1zO3p6Yj10aGlzLl9jaGF0Q29uZmlnJiZ0aGlzLl9jaGF0Q29uZmlnLmdldCgn Y2hhdF9yZW1vdmVfb3ZlcmxheScpO2IudXBkYXRlVGltZT16enM7Yi5oYXZlRnVs bExpc3Q9enpuO2lmKHp6biYmenpwKXp6aCh6enApO3piKHp6cix0cnVlKTtiLmFk ZExlZ2FjeUF2YWlsYWJsZUxpc3QoenpsKTt6eT16enE7enA9enpvO2IuX3BvbGxl cj1uZXcgcSh6ZygpLHp6Zyx0cnVlKTthLnN1YnNjcmliZSgnY2hhdC12aXNpYmls aXR5L2luaXRpYWxpemVkJyxmdW5jdGlvbih6enQpe3gubG9nKCd2aXNpYmlsaXR5 X2luaXQnLHp6dCk7enppKCk7fSk7YS5zdWJzY3JpYmUoay5EVU1QX0VWRU5ULHpq KTthLnN1YnNjcmliZSgncHJlc2VuY2UvcmVzdGFydGVkJyxiLnVwZGF0ZSk7enou cmVnaXN0ZXIoJ2JsJyx6Zik7aWYoaC5nZXQoJ2JsYWNrYmlyZCcpKXtyLnN1YnNj cmliZSgncHJpdmFjeS1jaGFuZ2VkJyx6emYpO3Iuc3Vic2NyaWJlKCdwcml2YWN5 LWF2YWlsYWJpbGl0eS1jaGFuZ2VkJyxmdW5jdGlvbih6enUsenp0KXtmb3IodmFy IHp6diBpbiB6enQudXNlcl9hdmFpbGFiaWxpdGllcyl0aGlzLnNldCh6enYsenp0 LnVzZXJfYXZhaWxhYmlsaXRpZXNbenp2XSk7fS5iaW5kKHRoaXMpKTtyLnN1YnNj cmliZSgncHJpdmFjeS11c2VyLXByZXNlbmNlLXJlc3BvbnNlJyxiLnVwZGF0ZSk7 fWVsc2UgYS5zdWJzY3JpYmUoJ2NoYXQvdmlzaWJpbGl0eS1jaGFuZ2VkJyx6ayk7 aWYoaC5nZXQoJ2NoYW5uZWxfZGlzY29ubmVjdF93YXJuaW5nJykpdGhpcy5fY2hh bm5lbENvbm5lY3Rpb24uc3Vic2NyaWJlKFt0aGlzLl9jaGFubmVsQ29ubmVjdGlv bi5DT05ORUNURUQsdGhpcy5fY2hhbm5lbENvbm5lY3Rpb24uUkVDT05ORUNUSU5H LHRoaXMuX2NoYW5uZWxDb25uZWN0aW9uLlNIVVRET1dOLHRoaXMuX2NoYW5uZWxD b25uZWN0aW9uLk1VVEVfV0FSTklORyx0aGlzLl9jaGFubmVsQ29ubmVjdGlvbi5V Tk1VVEVfV0FSTklOR10semkpO2lmKGIuaGF2ZUZ1bGxMaXN0KXt6bz1uZXcgRGF0 ZSgpO31lbHNlIGlmKHp6ailiLnVwZGF0ZSgpO2EuaW5mb3JtLmJpbmQoYSxjLk9O X0lOSVRJQUxJWkVELGIsYS5CRUhBVklPUl9QRVJTSVNURU5UKS5kZWZlcigpO3Ro aXMuaW5pdD1iYWdvZmhvbGRpbmc7fSxnZXQ6ZnVuY3Rpb24oenpsKXtpZih6emw9 PWkudXNlcilyZXR1cm4gYy5BQ1RJVkU7dmFyIHp6bT1jLk9GRkxJTkU7aWYoenps IGluIHp2JiYodi5nZXQoKTx6eFt6emxdfHwhKHp6bCBpbiB6emEpKSl7enptPXp2 W3p6bF07fWVsc2UgaWYoenpsIGluIHp6YSl6em09enphW3p6bF07aWYodGhpcy5f Y2hhdENvbmZpZyYmdGhpcy5fY2hhdENvbmZpZy5nZXQoJ2JsYWNrYmlyZCcpJiYh ci5hbGxvd3MoenpsKSl6em09Yy5PRkZMSU5FO2lmKHp6bT09Yy5PRkZMSU5FKWlm KHpxW3p6bF0penptPWMuTU9CSUxFO3JldHVybiB6em07fSxpc1VzZXJJZGxlOmZ1 bmN0aW9uKCl7cmV0dXJuIHptO30saXNSZWFkeTpmdW5jdGlvbigpe3JldHVybiBi LmhhdmVGdWxsTGlzdDt9LHNldDpmdW5jdGlvbih6emwsenpuLHp6bSl7emEoenps LHp6bix0cnVlLG51bGwsenptKTt0aGlzLl9wcmVzZW5jZVN0YXRlJiZ0aGlzLl9w cmVzZW5jZVN0YXRlLmRvU3luYygpO30sdXBkYXRlOmZ1bmN0aW9uKCl7aWYobmV3 IERhdGUoKS16bzxuKXshenpjJiZ6emsuZGVmZXIoKTtyZXR1cm47fXp6aj10cnVl O3p6aSgpO2IuX3BvbGxlciYmYi5fcG9sbGVyLnJlcXVlc3ROb3coKTt9LGdldFJl djpmdW5jdGlvbigpe3JldHVybiB6emU7fSxpc0lkbGU6ZnVuY3Rpb24oenpsKXty ZXR1cm4gYi5nZXQoenpsKT09Yy5JRExFO30sZ2V0T25saW5lSURzOmZ1bmN0aW9u KCl7dmFyIHp6bCx6em09W107Zm9yKHp6bCBpbiB6emEpaWYoYi5nZXQoenpsKT09 PWMuQUNUSVZFKXp6bS5wdXNoKHp6bCk7Zm9yKHp6bCBpbiB6dil7aWYoenpsIGlu IHp6YSljb250aW51ZTtpZihiLmdldCh6emwpPT09Yy5BQ1RJVkUpenptLnB1c2go enpsKTt9cmV0dXJuIHp6bTt9LGdldEF2YWlsYWJsZUlEczpmdW5jdGlvbigpe3Zh ciB6emw9Yi5nZXRPbmxpbmVJRHMoKTtmb3IoaWQgaW4genEpe2lmKGlkIGluIHp6 YXx8aWQgaW4genYpY29udGludWU7enpsLnB1c2goaWQpO31yZXR1cm4genpsO30s Z2V0T25saW5lQ291bnQ6ZnVuY3Rpb24oenpsKXtpZih6emwmJiFiLmhhdmVGdWxs TGlzdClyZXR1cm4gMDtyZXR1cm4gYi5nZXRPbmxpbmVJRHMoKS5sZW5ndGg7fSxn ZXRMZWdhY3lPdmVybGF5OmZ1bmN0aW9uKCl7dmFyIHp6bT17fTtpZighenpiKXt2 YXIgenpuPXYuZ2V0KCk7Zm9yKHZhciB6emwgaW4genYpaWYoenhbenpsXT56em4p enptW3p6bF09e2V4cDp6eFt6emxdLG9sOmMucmV2ZXJzZUxlZ2FjeVN0YXR1c01h cFt6dlt6emxdXX07fXJldHVybiB6em07fSxhZGRMZWdhY3lPdmVybGF5OmZ1bmN0 aW9uKHp6bCl7emIoenpsLHRydWUpO3RoaXMuX3ByZXNlbmNlU3RhdGUmJnRoaXMu X3ByZXNlbmNlU3RhdGUuZG9TeW5jKCk7fSxhZGRMZWdhY3lBdmFpbGFibGVMaXN0 OmZ1bmN0aW9uKHp6bCl7emIoenpsLGZhbHNlKTt9LGdldERlYnVnSW5mbzpmdW5j dGlvbih6emwpe3ZhciB6em07aWYod2luZG93LlNob3J0UHJvZmlsZXMpe3ZhciB6 em49dy5nZXROb3coenpsKTtpZih6em4penptPXp6bi5uYW1lO31yZXR1cm4ge2lk Onp6bCxwcmVzZW5jZTp6emFbenpsXSxvdmVybGF5Onp2W3p6bF0sb3ZlcmxheVRp bWU6enhbenpsXSxvdmVybGF5U291cmNlOnp3W3p6bF0sbW9iaWxlOnpxW3p6bF0s bmFtZTp6em19O319KTtpZih6aC5BdmFpbGFibGVMaXN0KXt6ci5leHBvcnRzPXpo LkF2YWlsYWJsZUxpc3Q7fWVsc2V7dmFyIGo9enpkKCdBdmFpbGFibGVMaXN0SW5p dGlhbERhdGEnKTtiLmluaXQoai51cGRhdGVUaW1lLHRydWUsai51cGRhdGVPdmVy bGF5LGoucG9sbEludGVydmFsLGoubGF6eVBvbGxJbnRlcnZhbCxqLmF2YWlsYWJs ZUxpc3Qsai5hdmFpbGFibGVDb3VudCxqLm1vYmlsZUZyaWVuZHMpO3poLkF2YWls YWJsZUxpc3Q9enIuZXhwb3J0cz1iO319KTsKdmFyIENoYXRRdWlldExpbmtzPXtz aWxlbmNlOmZ1bmN0aW9uKGIpe2lmKHVhLmZpcmVmb3goKT49NHx8dWEuY2hyb21l KCkpdmFyIGE9RXZlbnQubGlzdGVuKGRvY3VtZW50LCdtb3VzZW1vdmUnLGZ1bmN0 aW9uKCl7dGhpcy5fcmVtb3ZlTGlua0hyZWZzKGIpO2EucmVtb3ZlKCk7fS5iaW5k KHRoaXMpKTt9LF9yZW1vdmVMaW5rSHJlZnM6ZnVuY3Rpb24oZCl7dmFyIGM9RE9N LnNjcnkoZCwnYScpO2Zvcih2YXIgYj0wO2I8Yy5sZW5ndGg7YisrKXt2YXIgYT1j W2JdLmdldEF0dHJpYnV0ZSgnaHJlZicpO2lmKCFhfHxhLmNoYXJBdCgwKT09JyMn KWNbYl0ucmVtb3ZlQXR0cmlidXRlKCdocmVmJyk7fX19Owp2YXIgT3JkZXJlZEZy aWVuZHNMaXN0PXdpbmRvdy5PcmRlcmVkRnJpZW5kc0xpc3R8fChmdW5jdGlvbigp e3ZhciBhPVtdO3ZhciBiPXt9O3ZhciBjPWZhbHNlO3JldHVybiBjb3B5X3Byb3Bl cnRpZXMobmV3IEFyYml0ZXIoKSx7aW5pdDpmdW5jdGlvbihkKXt0aGlzLmluaXQ9 YmFnb2Zob2xkaW5nO2E9ZDthLmZvckVhY2goZnVuY3Rpb24oZixlKXtiW2ZdPWU7 fSk7Yz10cnVlO3RoaXMuaW5mb3JtKCdpbml0aWFsaXplZCcse30sQXJiaXRlci5C RUhBVklPUl9QRVJTSVNURU5UKTt9LGNvbnRhaW5zOmZ1bmN0aW9uKGQpe3JldHVy biBkIGluIGI7fSxjb21wYXJlOmZ1bmN0aW9uKGQsZSl7dmFyIGo9T3JkZXJlZEZy aWVuZHNMaXN0LmdldFJhbmsoZCk7dmFyIGs9T3JkZXJlZEZyaWVuZHNMaXN0Lmdl dFJhbmsoZSk7aWYoaiE9PWspcmV0dXJuIGotazt2YXIgaD13aW5kb3cuU2hvcnRQ cm9maWxlcyYmd2luZG93LlNob3J0UHJvZmlsZXMuZ2V0Tm93KGQpO3ZhciBpPXdp bmRvdy5TaG9ydFByb2ZpbGVzJiZ3aW5kb3cuU2hvcnRQcm9maWxlcy5nZXROb3co ZSk7dmFyIGY9KChofHx7fSkubmFtZXx8J34nKS50b0xvd2VyQ2FzZSgpO3ZhciBn PSgoaXx8e30pLm5hbWV8fCd+JykudG9Mb3dlckNhc2UoKTtpZihmIT09ZylyZXR1 cm4gZjxnPy0xOjE7cmV0dXJuIDA7fSxnZXRMaXN0OmZ1bmN0aW9uKCl7dmFyIGQ9 JEEoYSk7ZD1kLmZpbHRlcihmdW5jdGlvbihlKXt2YXIgZj13aW5kb3cuU2hvcnRQ cm9maWxlcyYmU2hvcnRQcm9maWxlcy5nZXROb3coZSk7cmV0dXJuICFmfHxmLnR5 cGU9PSJmcmllbmQiO30pO3JldHVybiBkO30sZ2V0UmFuazpmdW5jdGlvbihkKXty ZXR1cm4gZCBpbiBiP2JbZF06YS5sZW5ndGg7fSxpc1JlYWR5OmZ1bmN0aW9uKCl7 cmV0dXJuIGM7fX0pO30pKCk7CnZhciBDaGF0U2lkZWJhcj13aW5kb3cuQ2hhdFNp ZGViYXJ8fChmdW5jdGlvbigpe3ZhciBjPW51bGw7dmFyIGE9bnVsbDt2YXIgYj1u dWxsO3ZhciBlO3ZhciBsPWZhbHNlO3ZhciBtPWZhbHNlO3ZhciBvPWZhbHNlO3Zh ciBuPWZhbHNlO3ZhciBzO3ZhciByO3ZhciB1O3ZhciB5O3ZhciB6O3ZhciBxO3Zh ciBmPW51bGw7dmFyIHc9bnVsbDt2YXIgemE9bnVsbDt2YXIgcD1KU0xvZ2dlci5j cmVhdGUoJ2JsYWNrYmlyZCcpO3ZhciBkPTMyO2Z1bmN0aW9uIGgoemIpe3N3aXRj aCh6Yil7Y2FzZSBiLkhJTlRfQVVUSDpyZXR1cm4gIk90dXJ1bXVuIHphbWFuIGFc dTAxNWZcdTAxMzFtXHUwMTMxbmEgdVx1MDExZnJhZFx1MDEzMS4gTFx1MDBmY3Rm ZW4gZ2lyaVx1MDE1ZiB5YXAuIjtjYXNlIGIuSElOVF9DT05OOnJldHVybiBfdHgo IkZhY2Vib29rIHtDaGF0fSBpcyBjdXJyZW50bHkgdW5hdmFpbGFibGUuIix7Q2hh dDoiU29oYmV0In0pO2Nhc2UgYi5ISU5UX01BSU5UOnJldHVybiBfdHgoIkZhY2Vi b29rIHtDaGF0fSBpcyBjdXJyZW50bHkgZG93biBmb3IgbWFpbnRlbmFuY2UuIix7 Q2hhdDoiU29oYmV0In0pO2RlZmF1bHQ6cmV0dXJuIF90eCgiRmFjZWJvb2sge0No YXR9IGlzIGN1cnJlbnRseSB1bmF2YWlsYWJsZS4iLHtDaGF0OiJTb2hiZXQifSk7 fX1mdW5jdGlvbiBnKHpjKXt2YXIgemQ7aWYoemM+Yy5nZXQoJ3dhcm5pbmdfY291 bnRkb3duX3RocmVzaG9sZF9tc2VjJykpe3ZhciB6Yj0kTignYScse2hyZWY6JyMn LGNsYXNzTmFtZTonZmJDaGF0UmVjb25uZWN0TGluayd9LCJUZWtyYXIgZGVuZSIp O3pkPURPTS5fdHgoIlNvaGJldGUgYmFcdTAxMWZsYW5cdTAxMzFsYW1hZFx1MDEz MS4ge3RyeS1hZ2Fpbi1saW5rfS4iLHsndHJ5LWFnYWluLWxpbmsnOnpifSk7fWVs c2UgaWYoemM+MTAwMCl7emQ9X3R4KCJTb2hiZXRlIGJhXHUwMTFmbGFuXHUwMTMx bGFtYWRcdTAxMzEuIHtzZWNvbmRzfSBzYW5peWUgc29ucmEgdGVrcmFyIGRlbmVu ZWNlay4uLiIse3NlY29uZHM6TWF0aC5mbG9vcih6Yy8xMDAwKX0pO31lbHNlIHpk PSJTb2hiZXRlIGJhXHUwMTFmbGFuXHUwMTMxbGFtYWRcdTAxMzEuIFRla3JhciBk ZW5lbml5b3IuLi4iO3JldHVybiB6ZDt9ZnVuY3Rpb24gaSh6ZCx6Yil7aWYodyl7 Y2xlYXJUaW1lb3V0KHcpO3c9bnVsbDt9aWYoemQ9PT1hLlNIVVRET1dOKXtmPWgo emIpO31lbHNlIGlmKHpkPT09YS5DT05ORUNURUQpe2Y9bnVsbDt9ZWxzZSBpZih6 ZD09PWEuUkVDT05ORUNUSU5HKXt2YXIgemM9emI7Zj1nKHpjKTtpZih6Yz4xMDAw KXtpZih6Yz5jLmdldCgnd2FybmluZ19jb3VudGRvd25fdGhyZXNob2xkX21zZWMn KSl7aWYoemEpe3phLnJlbW92ZSgpO3phPW51bGw7fXphPUV2ZW50Lmxpc3Rlbihy LCdjbGljaycsZnVuY3Rpb24oZXZlbnQpe2lmKENTUy5oYXNDbGFzcyhldmVudC5n ZXRUYXJnZXQoKSwnZmJDaGF0UmVjb25uZWN0TGluaycpKXthLnJlY29ubmVjdCgp O3JldHVybiBmYWxzZTt9fSk7fXc9c2V0VGltZW91dChiaW5kKG51bGwsaSx6ZCx6 Yy0xMDAwKSwxMDAwLGZhbHNlKTt9fWooKTt9ZnVuY3Rpb24gaigpe3ZhciB6Zj1j LmdldCgnYmxhY2tiaXJkJyk/UHJlc2VuY2VQcml2YWN5LmdldFZpc2liaWxpdHko KT09PVByZXNlbmNlUHJpdmFjeS5PTkxJTkU6Q2hhdC5pc09ubGluZSgpO3ZhciB6 Yj1mYWxzZTtpZighemYpe3ZhciB6Yz0nZmJDaGF0R29PbmxpbmVMaW5rJzt2YXIg emU9Yy5nZXQoJ2JsYWNrYmlyZCcpPyJcdTAwYzdldnJpbWlcdTAwZTdpIG9sIjoi bVx1MDBmY3NhaXQiO3ZhciB6ZD0kTignYScse2hyZWY6JyMnLGNsYXNzTmFtZTp6 Y30semUpO3ZhciB6Zz1jLmdldCgnYmxhY2tiaXJkJyk/RE9NLl90eCgiez1HbyBv bmxpbmV9IHRvIHNlZSB3aG8ncyBvbmxpbmUgdG8gY2hhdC4iLHsnPUdvIG9ubGlu ZSc6emR9KTpET00uX3R4KCJTb2hiZXQgaVx1MDBlN2luIG1cdTAwZmNzYWl0IGRl XHUwMTFmaWxzaW4uIEFya2FkYVx1MDE1Zmxhclx1MDEzMW5cdTAxMzFuIHs9YXZh aWxhYmxlfSBvbGR1XHUwMTFmdW51IGdcdTAwZjZybWVzaW5pIGlzdGVyIG1pc2lu PyIseyc9YXZhaWxhYmxlJzp6ZH0pO0RPTS5zZXRDb250ZW50KHIsemcpO0V2ZW50 Lmxpc3RlbihyLCdjbGljaycsZnVuY3Rpb24oZXZlbnQpe2lmKENTUy5oYXNDbGFz cyhldmVudC5nZXRUYXJnZXQoKSx6Yykpe2lmKENoYXQuaXNPbmxpbmUoKSl7cC5l cnJvcignc2lkZWJhcl9nb19vbmxpbmVfd2hpbGVfb25saW5lJyk7cC5yYXRlKCdz aWRlYmFyX2dvX29ubGluZV9lcnJvcicsYy5nZXQoJ2JsYWNrYmlyZCcpKTt9cC5y YXRlKCdzaWRlYmFyX2dvX29ubGluZScsYy5nZXQoJ2JsYWNrYmlyZCcpKTtDaGF0 LmdvT25saW5lKCk7cmV0dXJuIGZhbHNlO319KTtDU1MuYWRkQ2xhc3ModSwnb2Zm bGluZScpO31lbHNle0NTUy5yZW1vdmVDbGFzcyh1LCdvZmZsaW5lJyk7RE9NLmVt cHR5KHIpO2lmKGEuZGlzY29ubmVjdGVkKCkpe0NTUy5hZGRDbGFzcyh1LCdlcnJv cicpO0RPTS5zZXRDb250ZW50KHIsZik7fWVsc2UgQ1NTLnJlbW92ZUNsYXNzKHUs J2Vycm9yJyk7fXQoKTt9ZnVuY3Rpb24gaygpe2lmKCFDaGF0U2lkZWJhci5pc1Zp c2libGUoKSYmbilyZXR1cm47bz1mYWxzZTtDU1MuaGlkZSh1KTtDU1MucmVtb3Zl Q2xhc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCdzaWRlYmFyTW9kZScpO3Mu aGlkZSgpO3kuZ2V0Q29yZSgpLnJlc2V0KCk7cC5yYXRlKCdzaWRlYmFyX2hpZGUn LG4pO0FyYml0ZXIuaW5mb3JtKCdzaWRlYmFyL2hpZGUnLENoYXRTaWRlYmFyKTt9 ZnVuY3Rpb24gdCgpe09yZGVyZWRGcmllbmRzTGlzdC5zdWJzY3JpYmUoJ2luaXRp YWxpemVkJyxmdW5jdGlvbigpe3ZhciB6Yz1DaGF0U2lkZWJhci5zaG91bGRTaG93 U2lkZWJhcigpO0NTUy5jb25kaXRpb25DbGFzcyhkb2N1bWVudC5kb2N1bWVudEVs ZW1lbnQsJ3NpZGViYXJDYXBhYmxlJyx6Yyk7aWYoQ2hhdFNpZGViYXIuaXNFbmFi bGVkKCkmJnpjKXtDU1Muc2V0U3R5bGUodSwnaGVpZ2h0Jyx6LnkrJ3B4Jyk7digp O3ZhciB6Yj16Lnk7JEEodS5jaGlsZE5vZGVzKS5mb3JFYWNoKGZ1bmN0aW9uKHpk KXtpZih6ZCE9PWUpemItPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnMoemQp Lnk7fSk7Q1NTLnNldFN0eWxlKGUsJ2hlaWdodCcsemIrJ3B4Jyk7dGhpcy5fbWF4 SXRlbXM9TWF0aC5mbG9vcigoemItOCkvZCk7cy5zZXROdW1Ub3BGcmllbmRzKHRo aXMuX21heEl0ZW1zKTt5LmdldERhdGEoKS5zZXRNYXhSZXN1bHRzKHRoaXMuX21h eEl0ZW1zKTtBcmJpdGVyLmluZm9ybSgnc2lkZWJhci9yZXNpemVkJyxDaGF0U2lk ZWJhcik7fWVsc2UgaygpO249dHJ1ZTt9KTt9ZnVuY3Rpb24gdigpe2lmKENoYXRT aWRlYmFyLmlzVmlzaWJsZSgpKXJldHVybjtvPXRydWU7Q1NTLnNob3codSk7Q1NT LmFkZENsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwnc2lkZWJhck1vZGUn KTtzLnNob3coKTtwLnJhdGUoJ3NpZGViYXJfc2hvdycsbik7QXJiaXRlci5pbmZv cm0oJ3NpZGViYXIvc2hvdycsQ2hhdFNpZGViYXIpO31mdW5jdGlvbiB4KCl7Y2hh dE9wdGlvbnMuc2V0U2V0dGluZygnc2lkZWJhcl9tb2RlJyxDaGF0U2lkZWJhci5p c0VuYWJsZWQoKSk7bmV3IEFzeW5jUmVxdWVzdCgnL2FqYXgvY2hhdC9zZXR0aW5n cy5waHAnKS5zZXRIYW5kbGVyKGJhZ29maG9sZGluZykuc2V0RXJyb3JIYW5kbGVy KGJhZ29maG9sZGluZykuc2V0RGF0YSh7c2lkZWJhcl9tb2RlOkNoYXRTaWRlYmFy LmlzRW5hYmxlZCgpfSkuc2V0QWxsb3dDcm9zc1BhZ2VUcmFuc2l0aW9uKHRydWUp LnNlbmQoKTt9cmV0dXJuIHtpbml0OmZ1bmN0aW9uKHpjLHpiLHpkKXtDaGF0U2lk ZWJhci5pbml0PWJhZ29maG9sZGluZztyZXF1aXJlLmVuc3VyZShbJ0NoYXRDb25m aWcnLCdDaGFubmVsQ29ubmVjdGlvbicsJ0NoYW5uZWxDb25zdGFudHMnXSxmdW5j dGlvbih6Zyx6ZSx6Zil7Yz16ZzthPXplO2I9emY7dT16YztzPXpiO3k9emQ7ZT1E T00uZmluZCh6YywnZGl2LmZiQ2hhdFNpZGViYXJCb2R5Jyk7cj1ET00uZmluZCh6 YywnZGl2LmZiQ2hhdFNpZGViYXJNZXNzYWdlIGRpdi5tZXNzYWdlJyk7emIuc2V0 U2Nyb2xsQ29udGFpbmVyKERPTS5maW5kKGUsJ2Rpdi51aVNjcm9sbGFibGVBcmVh V3JhcCcpKTt6Yi5zdWJzY3JpYmUoWydyZW5kZXInLCdzaG93JywnaGlkZSddLGRl Ym91bmNlKGZ1bmN0aW9uKCl7dmFyIHpoPXpiLmdldFJvb3QoKTt2YXIgemk9U2Ny b2xsYWJsZUFyZWEuZ2V0SW5zdGFuY2UoemgpO3ppJiZ6aS5hZGp1c3RHcmlwcGVy KCk7fSkpO0NoYXRRdWlldExpbmtzLnNpbGVuY2UoemMpO0V2ZW50Lmxpc3Rlbih3 aW5kb3csJ3Jlc2l6ZScsdCk7QXJiaXRlci5zdWJzY3JpYmUoJ2NoYXQvb3B0aW9u LWNoYW5nZWQnLGZ1bmN0aW9uKHppLHpoKXtpZih6aC5uYW1lPT0ic2lkZWJhcl9t b2RlIil7bD0hIWNoYXRPcHRpb25zLmdldFNldHRpbmcoJ3NpZGViYXJfbW9kZScp O3QoKTt9fSk7emQuc3Vic2NyaWJlKFsncmVzcG9uZCcsJ3Jlc2V0J10sZnVuY3Rp b24oemgsemkpe2lmKG8paWYoemkmJnppLnZhbHVlJiZ6aS52YWx1ZT09PXpkLmdl dENvcmUoKS5nZXRWYWx1ZSgpJiZ6ZC5nZXRWaWV3KCkuaXNWaXNpYmxlKCkpe3Mu aGlkZSgpO31lbHNlIHMuc2hvdygpO30pO3pkLmdldERhdGEoKS5zdWJzY3JpYmUo J2JlZm9yZVF1ZXJ5Jyx0KTthLnN1YnNjcmliZShbYS5DT05ORUNURUQsYS5TSFVU RE9XTl0saSk7aWYoYy5nZXQoJ2NoYW5uZWxfZGlzY29ubmVjdF93YXJuaW5nJykp e2Euc3Vic2NyaWJlKGEuUkVDT05ORUNUSU5HLGkpO2Euc3Vic2NyaWJlKFthLk1V VEVfV0FSTklORyxhLlVOTVVURV9XQVJOSU5HXSxqKTt9QXJiaXRlci5zdWJzY3Jp YmUoJ2J1ZGR5bGlzdC1udWIvaW5pdGlhbGl6ZWQnLGZ1bmN0aW9uKHpoLHppKXtF dmVudC5saXN0ZW4oemkuZ2V0QnV0dG9uKCksJ2NsaWNrJyxmdW5jdGlvbihldmVu dCl7Q2hhdFNpZGViYXIuZW5hYmxlKCk7cmV0dXJuICFDaGF0U2lkZWJhci5zaG91 bGRTaG93U2lkZWJhcigpO30pO30pO0FyYml0ZXIuc3Vic2NyaWJlKCdjaGF0LW9w dGlvbnMvaW5pdGlhbGl6ZWQnLGZ1bmN0aW9uKHpoLHppKXtsPSEhemkuZ2V0U2V0 dGluZygnc2lkZWJhcl9tb2RlJyk7QXJiaXRlci5zdWJzY3JpYmUoJ2NoYXQtdmlz aWJpbGl0eS9pbml0aWFsaXplZCcsZnVuY3Rpb24oemope3AucmF0ZSgnc2lkZWJh cl92aXNfaW5pdCcsYy5nZXQoJ2JsYWNrYmlyZCcpKTtqKCk7QXJiaXRlci5zdWJz Y3JpYmUoJ2NoYXQvdmlzaWJpbGl0eS1jaGFuZ2VkJyxqKTtpZihjLmdldCgnYmxh Y2tiaXJkJykpUHJlc2VuY2VQcml2YWN5LnN1YnNjcmliZSgncHJpdmFjeS11c2Vy LXByZXNlbmNlLWNoYW5nZWQnLGopO0FyYml0ZXIuaW5mb3JtKCdzaWRlYmFyL2lu aXRpYWxpemVkJyxDaGF0U2lkZWJhcixBcmJpdGVyLkJFSEFWSU9SX1BFUlNJU1RF TlQpO30pO30pO30pO30sZGlzYWJsZTpmdW5jdGlvbigpe2lmKCFDaGF0U2lkZWJh ci5pc0VuYWJsZWQoKSlyZXR1cm47bD1mYWxzZTt4KCk7aygpO30sZW5hYmxlOmZ1 bmN0aW9uKCl7aWYoQ2hhdFNpZGViYXIuaXNFbmFibGVkKCkpcmV0dXJuO2w9dHJ1 ZTt4KCk7dCgpOyFmdW5jdGlvbigpe2lmKENoYXRTaWRlYmFyLmlzVmlzaWJsZSgp KXkuZ2V0Q29yZSgpLmdldEVsZW1lbnQoKS5mb2N1cygpO30uZGVmZXIoKTt9LGhp ZGU6ZnVuY3Rpb24oKXttPXRydWU7aygpO30sdW5oaWRlOmZ1bmN0aW9uKCl7bT1m YWxzZTt0KCk7fSxnZXRCb2R5OmZ1bmN0aW9uKCl7cmV0dXJuIGU7fSxnZXRSb290 OmZ1bmN0aW9uKCl7cmV0dXJuIHU7fSxnZXRWaXNpYmxlV2lkdGg6ZnVuY3Rpb24o KXtyZXR1cm4gdSYmdS5vZmZzZXRXaWR0aHx8MDt9LGlzRW5hYmxlZDpmdW5jdGlv bigpe3JldHVybiBsO30saXNWaWV3cG9ydENhcGFibGU6ZnVuY3Rpb24oKXt6PVZl Y3RvcjIuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCk7cmV0dXJuIHoueD5jLmdldCgn c2lkZWJhci5taW5pbXVtX3dpZHRoJyk7fSxzaG91bGRTaG93U2lkZWJhcjpmdW5j dGlvbigpe3JldHVybiBDaGF0U2lkZWJhci5pc1ZpZXdwb3J0Q2FwYWJsZSgpJiYh bSYmT3JkZXJlZEZyaWVuZHNMaXN0LmdldExpc3QoKS5sZW5ndGg+Yy5nZXQoJ3Np ZGViYXIubWluX2ZyaWVuZHMnKSYmIUZiRGVza3RvcFBsdWdpbi5zaG91bGRTdXBw cmVzc1NpZGViYXIoKTt9LGlzVmlzaWJsZTpmdW5jdGlvbigpe3JldHVybiBvO30s cmVzaXplOnQsdG9nZ2xlOmZ1bmN0aW9uKCl7Q2hhdFNpZGViYXIuaXNFbmFibGVk KCk/Q2hhdFNpZGViYXIuZGlzYWJsZSgpOkNoYXRTaWRlYmFyLmVuYWJsZSgpO319 O30pKCk7CmZ1bmN0aW9uIFZpZGVvRXZlbnRzKCl7fUZ1bmN0aW9uLm1peGluKFZp ZGVvRXZlbnRzLCdBcmJpdGVyJyx7QUNUSVZBVElORzondmlkZW9jaGF0L2FjdGl2 YXRpbmcnLExPR0dJTkdfSU46J3ZpZGVvY2hhdC9sb2dnaW5nX2luJyxHRVRUSU5H X1RPS0VOOid2aWRlb2NoYXQvZ2V0dGluZ190b2tlbicsQ09OTkVDVElORzondmlk ZW9jaGF0L2Nvbm5lY3RpbmcnLFNMT1dfQ09ORElUSU9OUzondmlkZW9jaGF0L3Ns b3dfY29uZGl0aW9ucycsQ0FMTF9JTkNPTUlORzondmlkZW9jaGF0L2NhbGxfaW5j b21pbmcnLENBTExfQ09OTkVDVEVEOid2aWRlb2NoYXQvY2FsbF9jb25uZWN0ZWQn LEdPVF9DQUxMRUU6J3ZpZGVvY2hhdC9nb3RfY2FsbGVlJyxDQUxMX0hBTkRMRUQ6 J3ZpZGVvY2hhdC9jYWxsX2hhbmRsZWQnLENBTExFRV9BTlNXRVJJTkc6J3ZpZGVv Y2hhdC9jYWxsZWVfYW5zd2VyaW5nJyxGQVRBTF9FUlJPUjondmlkZW9jaGF0L2Zh dGFsX2Vycm9yJyxDQUxMX0lOX1BST0dSRVNTOid2aWRlb2NoYXQvY2FsbF9pbl9w cm9ncmVzcycsTk9UX0FWQUlMQUJMRTondmlkZW9jaGF0L25vdF9hdmFpbGFibGUn LFNFUlZFUl9FUlJPUjondmlkZW9jaGF0L3NlcnZlcl9lcnJvcicsQUNUSVZBVEVf RkFJTEVEOid2aWRlb2NoYXQvYWN0aXZhdGVfZmFpbGVkJyxBQ1RJVkFURV9USU1F RF9PVVQ6J3ZpZGVvY2hhdC9hY3RpdmF0ZV9mYWlsZWRfdGltZScsV1JPTkdfVkVS U0lPTl9FUlJPUjondmlkZW9jaGF0L3dyb25nX3ZlcnNpb24nLEZBVEFMX1BMVUdJ Tl9FUlJPUjondmlkZW9jaGF0L3BsdWdpbl9mYXRhbGl0eScsU0lMRU5UX1BMVUdJ Tl9FUlJPUjondmlkZW9jaGF0L3BsdWdpbl9zaWxlbnRfZmF0YWxpdHknLFNUQVJU X0NBTExfVUk6J3ZpZGVvY2hhdC9zdGFydF9jYWxsX3VpJyxTVEFSVF9DQUxMOid2 aWRlb2NoYXQvc3RhcnRfY2FsbCcsQU5TV0VSX0NBTEw6J3ZpZGVvY2hhdC9hbnN3 ZXJfY2FsbCcsSUdOT1JFX0NBTEw6J3ZpZGVvY2hhdC9pZ25vcmVfY2FsbCcsQ0FO Q0VMX0NBTEw6J3ZpZGVvY2hhdC9jYW5jZWxfY2FsbCcsSU5TVEFMTF9TVEFSVEVE Oid2aWRlb2NoYXQvaW5zdGFsbF9zdGFydGVkJyxJTlNUQUxMX0NPTVBMRVRFRDon dmlkZW9jaGF0L2luc3RhbGxfY29tcGxldGVkJyxsb2c6ZnVuY3Rpb24oYSl7d2lu ZG93LmNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZyhhKTt9LHdhcm46 ZnVuY3Rpb24oYSl7d2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29s ZS53YXJuKGEpO30sZXJyb3I6ZnVuY3Rpb24oYSl7d2luZG93LmNvbnNvbGUmJmNv bnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoYSk7fX0pOwp2YXIgVmlkZW9DaGF0 UGx1Z2luPWZ1bmN0aW9uKCl7fTtGdW5jdGlvbi5taXhpbihWaWRlb0NoYXRQbHVn aW4sJ0FyYml0ZXInLHtJTlNUQUxMX1RZUEVTOntKQVZBOjAsTUFOVUFMOjF9LGlz U3VwcG9ydGVkOmZ1bmN0aW9uKCl7dmFyIGI9dWEud2luZG93cygpJiYoKHVhLmll KCk+PTcmJiF1YS5pZTY0KCkpfHx1YS5maXJlZm94KCk+PTMuNnx8dWEuY2hyb21l KCk+PTUpO3ZhciBhPSh1YS5vc3goKT4xMC40KSYmKHVhLmZpcmVmb3goKT49My42 fHx1YS5jaHJvbWUoKT49NXx8dWEuc2FmYXJpKCk+PTUwMCk7cmV0dXJuIChifHxh KTt9LG5vdGlmeUZyb21BcHBsZXQ6ZnVuY3Rpb24oYixhKXtBcmJpdGVyLmluZm9y bShTdHJpbmcoYikse2FyZ3M6U3RyaW5nKGEpfSk7fSxpc0luc3RhbGxlZDpmdW5j dGlvbigpe3ZhciBhPWZhbHNlO2lmKFZpZGVvQ2hhdFBsdWdpbi5pc1N1cHBvcnRl ZCgpKWlmKFZpZGVvQ2hhdFBsdWdpbi51c2VzQWN0aXZlWCgpKXt2YXIgYz1udWxs O3RyeXtjPW5ldyBBY3RpdmVYT2JqZWN0KCdTa3lwZUxpbWl0ZWQuU2t5cGVXZWJQ bHVnaW4nKTthPSEhYzt9Y2F0Y2goYil7fWM9bnVsbDt9ZWxzZSBhPVZpZGVvQ2hh dFBsdWdpbi5fZ2V0SW5zdGFsbGVkVmVyc2lvbigpO3JldHVybiBhO30sdXNlc0Fj dGl2ZVg6ZnVuY3Rpb24oKXtyZXR1cm4gdWEuaWUoKSYmdWEud2luZG93cygpJiYh dWEub3BlcmEoKTt9LHNldExvZ2dlcjpmdW5jdGlvbihhKXtWaWRlb0NoYXRQbHVn aW4ubG9nPWF8fGJhZ29maG9sZGluZzt9LGVtYmVkOmZ1bmN0aW9uKGEpe0Jvb3Rs b2FkZXIubG9hZENvbXBvbmVudHMoJ1ZpZGVvQ2hhdFBsdWdpbkNvcmUnLGZ1bmN0 aW9uKCl7VmlkZW9DaGF0UGx1Z2luLmVtYmVkKGEpO30pO30scmVtb3ZlOmJhZ29m aG9sZGluZyxfZ2V0SW5zdGFsbGVkVmVyc2lvbjpmdW5jdGlvbigpe2lmKCFuYXZp Z2F0b3IpcmV0dXJuIG51bGw7bmF2aWdhdG9yLnBsdWdpbnMucmVmcmVzaChmYWxz ZSk7bWltZUhhbmRsZXI9bmF2aWdhdG9yLm1pbWVUeXBlc1snYXBwbGljYXRpb24v c2t5cGVzZGstcGx1Z2luJ107cmV0dXJuIG1pbWVIYW5kbGVyJiZtaW1lSGFuZGxl ci5lbmFibGVkUGx1Z2luO319KTsKdmFyIFZpZGVvQ2hhdFZpZXc9e1JJTkdUT05F X1BBVEg6Jy9zb3VuZC9ibGluZy5tcDMnLFdJTkRPV19OQU1FX0NPT0tJRV9LRVk6 J3ZjcHduJyxUQVJHRVRfSURfQ09PS0lFX0tFWTondmN0aWQnLGluSW5jb21pbmdD YWxsOmZhbHNlLGluT3V0Z29pbmdDYWxsOmZhbHNlLGluTWFudWFsSW5zdGFsbDpm YWxzZSx0b2tlbnM6W10saW5pdDpmdW5jdGlvbigpe1ZpZGVvQ2hhdFZpZXcuc3Vi c2NyaWJlKFZpZGVvRXZlbnRzLkNBTExfSU5DT01JTkcsVmlkZW9DaGF0Vmlldy5f b25JbmNvbWluZ0NhbGwpO1ZpZGVvQ2hhdFZpZXcuc3Vic2NyaWJlKFZpZGVvRXZl bnRzLlNUQVJUX0NBTExfVUksZnVuY3Rpb24oYSxiKXtpZighVmlkZW9DaGF0Vmll dy5pbk91dGdvaW5nQ2FsbCl7VmlkZW9DaGF0Vmlldy5pbk91dGdvaW5nQ2FsbD10 cnVlO2lmKFZpZGVvQ2hhdFBsdWdpbi5pc0luc3RhbGxlZCgpKXtWaWRlb0NoYXRW aWV3Lm9uT3V0Z29pbmdDYWxsKGIuaWRUYXJnZXQpO31lbHNlIFZpZGVvQ2hhdFZp ZXcuX2ludm9rZUNvcmUoJ3Byb21wdEluc3RhbGwnLGIuaWRUYXJnZXQpO319KTtp ZihWaWRlb0NoYXRQbHVnaW4uaXNTdXBwb3J0ZWQoKSlDU1MuYWRkQ2xhc3MoZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LCd2aWRlb0NhbGxFbmFibGVkJyk7b25iZWZv cmV1bmxvYWRSZWdpc3RlcihmdW5jdGlvbigpe2lmKChWaWRlb0NoYXRWaWV3Lmlu SW5jb21pbmdDYWxsfHxWaWRlb0NoYXRWaWV3LmluT3V0Z29pbmdDYWxsKSYmIVZp ZGVvQ2hhdFZpZXcuaW5NYW51YWxJbnN0YWxsKXJldHVybiAiQnUgc2F5ZmFkYW4g XHUwMGU3XHUwMTMxa2Fyc2FuIGFyYW1hbiBzb25hIGVyZXIuIjt9KTtvbmxlYXZl UmVnaXN0ZXIoZnVuY3Rpb24oKXtpZihWaWRlb0NoYXRWaWV3LmluSW5jb21pbmdD YWxsfHxWaWRlb0NoYXRWaWV3LmluT3V0Z29pbmdDYWxsKXtWaWRlb0V2ZW50cy5p bmZvcm0oVmlkZW9FdmVudHMuQ0FOQ0VMX0NBTEwse2NhdXNlOidsZWF2ZTpwYWdl J30pO1ZpZGVvQ2hhdFZpZXcuaW5JbmNvbWluZ0NhbGw9ZmFsc2U7VmlkZW9DaGF0 Vmlldy5pbk91dGdvaW5nQ2FsbD1mYWxzZTt9fSk7VmlkZW9DaGF0Vmlldy5fY2hl Y2tQcmlvclN0YXRlKCk7fSxzdWJzY3JpYmU6ZnVuY3Rpb24oYixhKXtWaWRlb0No YXRWaWV3LnRva2Vucy5wdXNoKFZpZGVvRXZlbnRzLnN1YnNjcmliZShiLGEpKTt9 LG9uUHJvZmlsZUJ1dHRvbkNsaWNrOmZ1bmN0aW9uKGEpe1ZpZGVvQ2hhdFZpZXcu X2ludm9rZUNvcmUoJ29uUHJvZmlsZUJ1dHRvbkNsaWNrJyxhKTt9LHVubG9hZDpm dW5jdGlvbigpe3doaWxlKFZpZGVvQ2hhdFZpZXcudG9rZW5zLmxlbmd0aClWaWRl b0V2ZW50cy51bnN1YnNjcmliZShWaWRlb0NoYXRWaWV3LnRva2Vucy5wb3AoKSk7 fSxtaWdodFJlbG9hZFBvc3RJbnN0YWxsOmZ1bmN0aW9uKCl7cmV0dXJuIHVhLndp bmRvd3MoKTt9LF9zaG93RGlhbG9nOmZ1bmN0aW9uKGIsYSl7bmV3IERpYWxvZygp LnNldEFsbG93Q3Jvc3NQYWdlVHJhbnNpdGlvbih0cnVlKS5zZXRUb3AoYT84NTox MjUpLnNldEFzeW5jKG5ldyBBc3luY1JlcXVlc3QoYikpLnNob3coKTt9LF9vbklu Y29taW5nQ2FsbDpmdW5jdGlvbihhLGIpe1ZpZGVvQ2hhdFZpZXcuaW5JbmNvbWlu Z0NhbGw9dHJ1ZTtWaWRlb0NoYXRWaWV3Ll9zaG93RGlhbG9nKFVSSSgnL2FqYXgv Y2hhdC92aWRlby9pbmNvbWluZ19jYWxsLnBocCcpLnNldFF1ZXJ5RGF0YSh7aWRU YXJnZXQ6Yi5pZFRhcmdldCxjYWxsSWQ6Yi5jYWxsSWR9KSx0cnVlKTt9LG9uT3V0 Z29pbmdDYWxsOmZ1bmN0aW9uKGEpe1ZpZGVvQ2hhdFZpZXcuaW5PdXRnb2luZ0Nh bGw9dHJ1ZTtWaWRlb0NoYXRWaWV3Ll9zaG93RGlhbG9nKCcvYWpheC9jaGF0L3Zp ZGVvL291dGdvaW5nX2NhbGwucGhwP2lkVGFyZ2V0PScrYSk7fSxfY2hlY2tQcmlv clN0YXRlOmZ1bmN0aW9uKCl7aWYoVmlkZW9DaGF0Vmlldy5taWdodFJlbG9hZFBv c3RJbnN0YWxsKCkpe3ZhciBhPWdldENvb2tpZShWaWRlb0NoYXRWaWV3LldJTkRP V19OQU1FX0NPT0tJRV9LRVkpO2lmKGEpe2NsZWFyQ29va2llKFZpZGVvQ2hhdFZp ZXcuV0lORE9XX05BTUVfQ09PS0lFX0tFWSk7dmFyIGI9Z2V0Q29va2llKFZpZGVv Q2hhdFZpZXcuVEFSR0VUX0lEX0NPT0tJRV9LRVkpO2lmKGIpe2NsZWFyQ29va2ll KFZpZGVvQ2hhdFZpZXcuVEFSR0VUX0lEX0NPT0tJRV9LRVkpO2lmKGdldENvb2tp ZShWaWRlb0NoYXRWaWV3LlRBUkdFVF9JRF9DT09LSUVfS0VZKSlyZXR1cm47aWYo VmlkZW9DaGF0UGx1Z2luLmlzSW5zdGFsbGVkKCkpVmlkZW9DaGF0Vmlldy5vbk91 dGdvaW5nQ2FsbChiKTt9fX19LF9pbnZva2VDb3JlOmZ1bmN0aW9uKGIpe3ZhciBh PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtCb290bG9h ZGVyLmxvYWRDb21wb25lbnRzKCdWaWRlb0NoYXRWaWV3Q29yZScsZnVuY3Rpb24o KXtWaWRlb0NoYXRWaWV3LmluaXRDb3JlKCk7VmlkZW9DaGF0Vmlld1tiXS5hcHBs eShWaWRlb0NoYXRWaWV3LGEpO30pO319OwpmdW5jdGlvbiBQcmVzZW5jZUluZGlj YXRvcigpe31QcmVzZW5jZUluZGljYXRvci5wcm90b3R5cGU9e2luaXQ6ZnVuY3Rp b24oYixhLGQpe3RoaXMuX2lkPWI7dGhpcy5fZmlyc3RuYW1lPWE7dGhpcy5fdG9v bHRpcD1kO3RoaXMuX2ltYWdlPURPTS5zY3J5KHRoaXMuX3Rvb2x0aXAsJ2knKVsw XTt0aGlzLl9wcmV2aW91c0F2YWlsPW51bGw7dGhpcy5fanNsb2c9SlNMb2dnZXIu Y3JlYXRlKCdwcmVzZW5jZV9pbmRpY2F0b3InKTtBcmJpdGVyLnN1YnNjcmliZSgn Y2hhdC12aXNpYmlsaXR5L2luaXRpYWxpemVkJyxmdW5jdGlvbihlKXt0aGlzLl9q c2xvZy5sb2coJ3Zpc19pbml0JyxlKTt0aGlzLl91cGRhdGVWaXNpYmlsaXR5KCk7 fS5iaW5kKHRoaXMpKTt0aGlzLl9zdWJzY3JpcHRpb25zPVtBcmJpdGVyLnN1YnNj cmliZShbQXZhaWxhYmxlTGlzdENvbnN0YW50cy5PTl9BVkFJTEFCSUxJVFlfQ0hB TkdFRF0sdGhpcy5fdXBkYXRlQXZhaWxhYmlsaXR5LmJpbmQodGhpcykpLEFyYml0 ZXIuc3Vic2NyaWJlKFsnY2hhdC92aXNpYmlsaXR5LWNoYW5nZWQnXSx0aGlzLl91 cGRhdGVWaXNpYmlsaXR5LmJpbmQodGhpcykpXTt0aGlzLl91cGRhdGVBdmFpbGFi aWxpdHkuYmluZCh0aGlzKS5kZWZlcigpO3ZhciBjPUV2ZW50Lmxpc3Rlbih0aGlz Ll90b29sdGlwLCdjbGljaycsZnVuY3Rpb24oKXtyZXF1aXJlLmVuc3VyZShbJ0F2 YWlsYWJsZUxpc3QnXSxmdW5jdGlvbihlKXtpZih0aGlzLl9wcmV2aW91c0F2YWls IT1BdmFpbGFibGVMaXN0Q29uc3RhbnRzLk9GRkxJTkUpQ2hhdC5vcGVuVGFiKHRo aXMuX2lkKTt9LmJpbmQodGhpcykpO30uYmluZCh0aGlzKSk7b25sZWF2ZVJlZ2lz dGVyKGZ1bmN0aW9uKCl7Yy5yZW1vdmUoKTt3aGlsZSh0aGlzLl9zdWJzY3JpcHRp b25zLmxlbmd0aClBcmJpdGVyLnVuc3Vic2NyaWJlKHRoaXMuX3N1YnNjcmlwdGlv bnMucG9wKCkpO30uYmluZCh0aGlzKSk7fSxfdXBkYXRlQXZhaWxhYmlsaXR5OmZ1 bmN0aW9uKCl7cmVxdWlyZS5lbnN1cmUoWydBdmFpbGFibGVMaXN0JywnQ2hhdENv bmZpZyddLGZ1bmN0aW9uKGEsYil7aWYoIWEuaXNSZWFkeSgpKXJldHVybjt2YXIg ZTt2YXIgZDt2YXIgYz1hLmdldCh0aGlzLl9pZCk7aWYoYz09PXRoaXMuX3ByZXZp b3VzQXZhaWwpcmV0dXJuO3RoaXMuX3ByZXZpb3VzQXZhaWw9Yztzd2l0Y2goYyl7 Y2FzZSBBdmFpbGFibGVMaXN0Q29uc3RhbnRzLk9GRkxJTkU6ZT1iLmdldCgnYmxh Y2tiaXJkJyk/X3R4KCJ7bmFtZX0gXHUwMGU3ZXZyaW1kXHUwMTMxXHUwMTVmXHUw MTMxIix7bmFtZTp0aGlzLl9maXJzdG5hbWV9KTpfdHgoIntuYW1lfSB1eWd1biBk ZVx1MDExZmlsIix7bmFtZTp0aGlzLl9maXJzdG5hbWV9KTtkPSdvZmZsaW5lJzti cmVhaztjYXNlIEF2YWlsYWJsZUxpc3RDb25zdGFudHMuSURMRTplPV90eCgie25h bWV9IGhhcmVrZXRzaXoiLHtuYW1lOnRoaXMuX2ZpcnN0bmFtZX0pO2Q9J2lkbGUn O2JyZWFrO2Nhc2UgQXZhaWxhYmxlTGlzdENvbnN0YW50cy5BQ1RJVkU6ZT1iLmdl dCgnYmxhY2tiaXJkJyk/X3R4KCJ7bmFtZX0gXHUwMGU3ZXZyaW1pXHUwMGU3aSIs e25hbWU6dGhpcy5fZmlyc3RuYW1lfSk6X3R4KCJ7bmFtZX0gdXlndW4iLHtuYW1l OnRoaXMuX2ZpcnN0bmFtZX0pO2Q9J29ubGluZSc7YnJlYWs7Y2FzZSBBdmFpbGFi bGVMaXN0Q29uc3RhbnRzLk1PQklMRTplPV90eCgie25hbWV9Jyh5KWUgY2VwIHRl bGVmb251bmRhbiB1bGFcdTAxNWZcdTAxMzFsYWJpbGl5b3IiLHtuYW1lOnRoaXMu X2ZpcnN0bmFtZX0pO2Q9J21vYmlsZSc7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcg RXJyb3IoJ0ludmFsaWQgYXZhaWxhYmlsaXR5Jyk7fVRvb2x0aXBMaW5rLnNldFRv b2x0aXBUZXh0KHRoaXMuX3Rvb2x0aXAsZSk7Q1NTLnNldENsYXNzKHRoaXMuX2lt YWdlLGQpO30uYmluZCh0aGlzKSk7fSxfdXBkYXRlVmlzaWJpbGl0eTpmdW5jdGlv bigpe2lmKENoYXQuaXNPbmxpbmUoKSl7Q1NTLnNob3codGhpcy5fdG9vbHRpcCk7 fWVsc2UgQ1NTLmhpZGUodGhpcy5fdG9vbHRpcCk7fX07CmZ1bmN0aW9uIExpdmVN ZXNzYWdlUmVjZWl2ZXIoYSl7dGhpcy5ldmVudE5hbWU9YTt0aGlzLnN1YnM9bnVs bDt0aGlzLmhhbmRsZXI9YmFnb2Zob2xkaW5nO3RoaXMuc2h1dGRvd25IYW5kbGVy PW51bGw7dGhpcy5yZXN0YXJ0SGFuZGxlcj1udWxsO3RoaXMucmVnaXN0ZXJlZD1m YWxzZTt0aGlzLmFwcElkPTE7fUxpdmVNZXNzYWdlUmVjZWl2ZXIucHJvdG90eXBl LnNldEFwcElkPWZ1bmN0aW9uKGEpe3RoaXMuYXBwSWQ9YTtyZXR1cm4gdGhpczt9 O0xpdmVNZXNzYWdlUmVjZWl2ZXIucHJvdG90eXBlLnNldEhhbmRsZXI9ZnVuY3Rp b24oYSl7dGhpcy5oYW5kbGVyPWE7dGhpcy5fZGlydHkoKTtyZXR1cm4gdGhpczt9 O0xpdmVNZXNzYWdlUmVjZWl2ZXIucHJvdG90eXBlLnNldFJlc3RhcnRIYW5kbGVy PWZ1bmN0aW9uKGEpe3RoaXMucmVzdGFydEhhbmRsZXI9YS5zaGllbGQoKTt0aGlz Ll9kaXJ0eSgpO3JldHVybiB0aGlzO307TGl2ZU1lc3NhZ2VSZWNlaXZlci5wcm90 b3R5cGUuc2V0U2h1dGRvd25IYW5kbGVyPWZ1bmN0aW9uKGEpe3RoaXMuc2h1dGRv d25IYW5kbGVyPWEuc2hpZWxkKCk7dGhpcy5fZGlydHkoKTtyZXR1cm4gdGhpczt9 O0xpdmVNZXNzYWdlUmVjZWl2ZXIucHJvdG90eXBlLl9kaXJ0eT1mdW5jdGlvbigp e2lmKHRoaXMucmVnaXN0ZXJlZCl7dGhpcy51bnJlZ2lzdGVyKCk7dGhpcy5yZWdp c3RlcigpO319O0xpdmVNZXNzYWdlUmVjZWl2ZXIucHJvdG90eXBlLnJlZ2lzdGVy PWZ1bmN0aW9uKCl7dmFyIGI9ZnVuY3Rpb24oZCxjKXtyZXR1cm4gdGhpcy5oYW5k bGVyKGMpO30uYmluZCh0aGlzKTt2YXIgYT1QcmVzZW5jZU1lc3NhZ2UuZ2V0QXBw TWVzc2FnZVR5cGUodGhpcy5hcHBJZCx0aGlzLmV2ZW50TmFtZSk7dGhpcy5zdWJz PXt9O3RoaXMuc3Vicy5tYWluPUFyYml0ZXIuc3Vic2NyaWJlKGEsYik7aWYodGhp cy5zaHV0ZG93bkhhbmRsZXIpdGhpcy5zdWJzLnNodXQ9QXJiaXRlci5zdWJzY3Jp YmUoY2hhbm5lbC5PTl9TSFVURE9XTix0aGlzLnNodXRkb3duSGFuZGxlcik7aWYo dGhpcy5yZXN0YXJ0SGFuZGxlcil0aGlzLnN1YnMucmVzdGFydD1BcmJpdGVyLnN1 YnNjcmliZShQcmVzZW5jZU1lc3NhZ2UuUkVTVEFSVEVELHRoaXMucmVzdGFydEhh bmRsZXIpO3RoaXMucmVnaXN0ZXJlZD10cnVlO3JldHVybiB0aGlzO307TGl2ZU1l c3NhZ2VSZWNlaXZlci5wcm90b3R5cGUudW5yZWdpc3Rlcj1mdW5jdGlvbigpe2lm KCF0aGlzLnN1YnMpcmV0dXJuIHRoaXM7Zm9yKHZhciBhIGluIHRoaXMuc3Vicylp Zih0aGlzLnN1YnNbYV0pQXJiaXRlci51bnN1YnNjcmliZSh0aGlzLnN1YnNbYV0p O3RoaXMuc3Vicz1udWxsO3RoaXMucmVnaXN0ZXJlZD1mYWxzZTtyZXR1cm4gdGhp czt9O0xpdmVNZXNzYWdlUmVjZWl2ZXIucm91dGU9ZnVuY3Rpb24oYil7dmFyIGE9 ZnVuY3Rpb24oYyl7dmFyIGQ9UHJlc2VuY2VNZXNzYWdlLmdldEFwcE1lc3NhZ2VU eXBlKGIuYXBwX2lkLGIuZXZlbnRfbmFtZSk7QXJiaXRlci5pbmZvcm0oZCxjLEFy Yml0ZXIuQkVIQVZJT1JfUEVSU0lTVEVOVCk7fTtpZihiLmhhc0NhcHR1cmUpe25l dyBBc3luY1JlcXVlc3QoKS5zZXRIYW5kbGVyKGZ1bmN0aW9uKGMpe2EoYy5nZXRQ YXlsb2FkKCkpO30pLnNldEFsbG93Q3Jvc3NQYWdlVHJhbnNpdGlvbih0cnVlKS5o YW5kbGVSZXNwb25zZShiLnJlc3BvbnNlKTt9ZWxzZSBhKGIucmVzcG9uc2UpO307 dmFyIGluaXRfbGl2ZV9tZXNzYWdlX3JlY2VpdmU9d2luZG93LmluaXRfbGl2ZV9t ZXNzYWdlX3JlY2VpdmV8fGZ1bmN0aW9uKCl7aW5pdF9saXZlX21lc3NhZ2VfcmVj ZWl2ZT1iYWdvZmhvbGRpbmc7QXJiaXRlci5zdWJzY3JpYmUoUHJlc2VuY2VNZXNz YWdlLmdldEFyYml0ZXJNZXNzYWdlVHlwZSgnYXBwX21zZycpLGZ1bmN0aW9uKGEs Yil7aWYoYi5vYmouZXZlbnRfbmFtZT09J2JlZXBfZXZlbnQnKXtCb290bG9hZGVy LmxvYWRDb21wb25lbnRzKCdiZWVwZXInLGZ1bmN0aW9uKCl7QmVlcGVyLmVuc3Vy ZUluaXRpYWxpemVkKCk7TGl2ZU1lc3NhZ2VSZWNlaXZlci5yb3V0ZShiLm9iaik7 fSk7fWVsc2UgTGl2ZU1lc3NhZ2VSZWNlaXZlci5yb3V0ZShiLm9iaik7fSk7fTs= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=Lp7u9OuYUmp.js Content-Type: application/x-javascript; charset=utf-8; name=Lp7u9OuYUmp.js Content-Location: http://static.ak.fbcdn.net/rsrc.php/v1/yv/r/Lp7u9OuYUmp.js Content-Transfer-Encoding: Base64 LyoxMzIzOTI2NTk4LDE3NjgzMzk3NiovCgppZiAod2luZG93LkNhdmFscnlMb2dn ZXIpIHsgQ2F2YWxyeUxvZ2dlci5zdGFydF9qcyhbIjkzZHNOIl0pOyB9CgpXaWRn ZXRBcmJpdGVyPXtfZmluZFNpYmxpbmdzOmZ1bmN0aW9uKCl7aWYoV2lkZ2V0QXJi aXRlci5fc2libGluZ3MpcmV0dXJuO1dpZGdldEFyYml0ZXIuX3NpYmxpbmdzPVtd O2Zvcih2YXIgYj1wYXJlbnQuZnJhbWVzLmxlbmd0aC0xO2I+PTA7Yi0tKXRyeXtp ZihwYXJlbnQuZnJhbWVzW2JdJiZwYXJlbnQuZnJhbWVzW2JdLkFyYml0ZXImJnBh cmVudC5mcmFtZXNbYl0uQXJiaXRlci5pbmZvcm0pV2lkZ2V0QXJiaXRlci5fc2li bGluZ3MucHVzaChwYXJlbnQuZnJhbWVzW2JdLkFyYml0ZXIpO31jYXRjaChhKXt9 fSxpbmZvcm06ZnVuY3Rpb24oKXtXaWRnZXRBcmJpdGVyLl9maW5kU2libGluZ3Mo KTt2YXIgYT0kQShhcmd1bWVudHMpO1dpZGdldEFyYml0ZXIuX3NpYmxpbmdzLmVh Y2goZnVuY3Rpb24oYil7Yi5pbmZvcm0uYXBwbHkoYixhKTt9KTt9fTsKdmFyIFBs YXRmb3JtT3B0SW5Qb3B1cD1mdW5jdGlvbigpe307Y29weV9wcm9wZXJ0aWVzKFBs YXRmb3JtT3B0SW5Qb3B1cCx7RElBTE9HX1VSTDonL2Nvbm5lY3QvdWlzZXJ2ZXIu cGhwJyxESUFMT0dfV0lEVEg6NDIwLERJQUxPR19IRUlHSFQ6NDUwLEFQUF9JRDox Mjc3NjAwODcyMzc2MTAsb3BlbjpmdW5jdGlvbihkLGMsYSl7aWYoIWQpZD0nZ2Vu ZXJpYyc7aWYoIWMpYz0nb3B0LmluJzt2YXIgYj1uZXcgVVJJKFBsYXRmb3JtT3B0 SW5Qb3B1cC5ESUFMT0dfVVJMKTtiLmFkZFF1ZXJ5RGF0YSh7c29jaWFsX3BsdWdp bjpkLG1ldGhvZDpjLGRpc3BsYXk6J3BvcHVwJyxzZWN1cmU6VVJJLmdldFJlcXVl c3RVUkkoKS5pc1NlY3VyZSgpLGFwcF9pZDpQbGF0Zm9ybU9wdEluUG9wdXAuQVBQ X0lEfSk7aWYoYSliLmFkZFF1ZXJ5RGF0YShhKTtyZXR1cm4gUG9wdXBSZXNpemVy Lm9wZW4oYi50b1N0cmluZygpLFBsYXRmb3JtT3B0SW5Qb3B1cC5ESUFMT0dfV0lE VEgsUGxhdGZvcm1PcHRJblBvcHVwLkRJQUxPR19IRUlHSFQpO319KTsKZnVuY3Rp b24gQ29ubmVjdFNvY2lhbFdpZGdldChhLGIpe0Nvbm5lY3RTb2NpYWxXaWRnZXQu c2V0SW5zdGFuY2UoYix0aGlzKTtDb25uZWN0U29jaWFsV2lkZ2V0LmRlbGF5VW50 aWxEaXNwbGF5ZWQoZnVuY3Rpb24oKXt0aGlzLmluaXRpYWxpemVPYmplY3QuY2Fs bCh0aGlzLGEsYik7fS5iaW5kKHRoaXMpKTt9Y29weV9wcm9wZXJ0aWVzKENvbm5l Y3RTb2NpYWxXaWRnZXQse09QVF9JTl9GQUNFQk9PS19BUFBfSUQ6JzEyNzc2MDA4 NzIzNzYxMCcsVFlQRV9BQ1RJVklUWTonQScsVFlQRV9SRUNPTU1FTkRBVElPTlM6 J1InLFRZUEVfTElLRUJPWDonTCcsaW5zdGFuY2VzOnt9LHNldEluc3RhbmNlOmZ1 bmN0aW9uKGIsYSl7Q29ubmVjdFNvY2lhbFdpZGdldC5pbnN0YW5jZXNbYl09YTt9 LGdldEluc3RhbmNlOmZ1bmN0aW9uKGEpe3JldHVybiBDb25uZWN0U29jaWFsV2lk Z2V0Lmluc3RhbmNlc1thXTt9LHBvcHVwczp7fSxsb2dpbjpmdW5jdGlvbihhLGIp e0Nvbm5lY3RTb2NpYWxXaWRnZXQucG9wdXBzW2JdPXtwb3B1cDpQbGF0Zm9ybU9w dEluUG9wdXAub3BlbignbG9naW4nLCdvcHQuaW4nKX07fSxhRGVsYXllZEZ1bmN0 aW9uczpbXSxkZWxheVVudGlsRGlzcGxheWVkOmZ1bmN0aW9uKGEpe0Nvbm5lY3RT b2NpYWxXaWRnZXQuYURlbGF5ZWRGdW5jdGlvbnMucHVzaChhKTtpZihDb25uZWN0 U29jaWFsV2lkZ2V0LmFEZWxheWVkRnVuY3Rpb25zLmxlbmd0aD09PTEpe2lmKCFD b25uZWN0U29jaWFsV2lkZ2V0Lm5kVGVzdERpbSl7dmFyIGI9ZG9jdW1lbnQuY3Jl YXRlRWxlbWVudCgnZGl2JyksYz17cG9zaXRpb246J2Fic29sdXRlJyx3aWR0aDon MXB4JyxoZWlnaHQ6JzFweCcsb3ZlcmZsb3c6J2hpZGRlbicsdG9wOicwcHgnfTtm b3IodmFyIGQgaW4gYylpZih0eXBlb2YgY1tkXT09PSdzdHJpbmcnKUNTUy5zZXRT dHlsZShiLGQsY1tkXSk7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiKTtDb25u ZWN0U29jaWFsV2lkZ2V0Lm5kVGVzdERpbT1iO31Db25uZWN0U29jaWFsV2lkZ2V0 LnRlc3RGb3JEaXNwbGF5KCk7fX0sdGVzdEZvckRpc3BsYXk6ZnVuY3Rpb24oKXt2 YXIgYT1WZWN0b3IyLmdldEVsZW1lbnREaW1lbnNpb25zKENvbm5lY3RTb2NpYWxX aWRnZXQubmRUZXN0RGltKS55O2lmKGEhPT0wKXtDb25uZWN0U29jaWFsV2lkZ2V0 LmFEZWxheWVkRnVuY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oYil7YigpO30pO0Nv bm5lY3RTb2NpYWxXaWRnZXQuYURlbGF5ZWRGdW5jdGlvbnM9W107fWVsc2UgQ29u bmVjdFNvY2lhbFdpZGdldC50ZXN0Rm9yRGlzcGxheS5kZWZlcigxMDApO30sbGlz dGVuRm9yTG9naW46ZnVuY3Rpb24oKXtpZighQ29ubmVjdFNvY2lhbFdpZGdldC5s aXN0ZW5lckF0dGFjaGVkKXtBcmJpdGVyLnN1YnNjcmliZSgncGxhdGZvcm0vc29j aWFscGx1Z2lucy9sb2dpbicsZnVuY3Rpb24oYSl7aWYoYS51c2VyIT09RW52LnVz ZXIpZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKCk7fSk7Q29ubmVjdFNvY2lhbFdp ZGdldC5saXN0ZW5lckF0dGFjaGVkPXRydWU7fX19KTtjb3B5X3Byb3BlcnRpZXMo Q29ubmVjdFNvY2lhbFdpZGdldC5wcm90b3R5cGUse2luaXRpYWxpemVPYmplY3Q6 ZnVuY3Rpb24oZSxnKXt2YXIgZD1ET00uc2NyeShkb2N1bWVudC5ib2R5LGUuc092 ZXJmbG93Q29udGFpbmVyU2VsZWN0b3IpWzBdLGM9RE9NLnNjcnkoZCwnLmZiQ29u bmVjdFdpZGdldEZvb3RlcicpWzBdLGE9Yz9WZWN0b3IyLmdldEVsZW1lbnREaW1l bnNpb25zKGMpLnk6MCxmPWUuc092ZXJmbG93SXRlbXNTZWxlY3RvcixiPURPTS5z Y3J5KGRvY3VtZW50LmJvZHksZS5zU3RyZWFtQ29udGFpbmVyU2VsZWN0b3IpWzBd O3RoaXMuZlJlbW92ZU92ZXJmbG93RWxlbWVudHM9dGhpcy5yZW1vdmVPdmVyZmxv d0VsZW1lbnRzLmJpbmQodGhpcyxkLGIsZiwtYSk7Y29weV9wcm9wZXJ0aWVzKHRo aXMse2JJbml0aWFsaXplZDp0cnVlLHNXaWRnZXRJZDpnLGlGb290ZXJIZWlnaHQ6 YSxuZFRvcDpkLG5kRm9vdGVyOmMsbmRDb250ZW50Q29udGFpbmVyOmIsb1F1ZXJ5 UGFyYW1zOm5ldyBVUkkod2luZG93LmxvY2F0aW9uLmhyZWYpLmdldFF1ZXJ5RGF0 YSgpLGJDb21ib01vZGU6ZS5iQ29tYm9Nb2RlLHNPdmVyZmxvd0l0ZW1zU2VsZWN0 b3I6Zn0pO2NvcHlfcHJvcGVydGllcyh0aGlzLm9RdWVyeVBhcmFtcyx7cG9zdF9m b3JtX2lkOkVudi5wb3N0X2Zvcm1faWQsdXNlcjpFbnYudXNlcn0pO3RoaXMuZlJl bW92ZU92ZXJmbG93RWxlbWVudHMoKTtDU1Muc2V0U3R5bGUoYiwndmlzaWJpbGl0 eScsJ3Zpc2libGUnKTthbmltYXRpb24oYikuZnJvbSgnb3BhY2l0eScsMCkudG8o J29wYWNpdHknLDEpLmR1cmF0aW9uKDIwMCkuZ28oKTtDb25uZWN0U29jaWFsV2lk Z2V0Lmxpc3RlbkZvckxvZ2luKCk7bmV3IENsaWNrVGhyb3VnaE1vbml0b3Ioe25k VG9wOnRoaXMubmRDb250ZW50Q29udGFpbmVyLGZWYWxpZGF0ZUxpbms6dGhpcy5n ZXRFbGVtZW50VG9wLmJpbmQodGhpcyksZkdldE1vbml0b3JEYXRhOmZ1bmN0aW9u KGgpe3ZhciBpPXtzaXRlOnRoaXMub1F1ZXJ5UGFyYW1zLnNpdGUsdHlwZTp0aGlz LmdldExpbmtUeXBlKCkscGx1Z2luOnRoaXMuZ2V0UGx1Z2luVHlwZSgpLHNvY2lh bDooRE9NLnNjcnkoaCwnXmRpdi5mYlNvY2lhbCcpLmxlbmd0aD4wKSxwb3M6dGhp cy5nZXRJdGVtUG9zaXRpb24odGhpcy5nZXRFbGVtZW50VG9wKGgpKSxzaWduYXR1 cmU6dGhpcy5nZXRJdGVtU2lnbmF0dXJlKHRoaXMuZ2V0RWxlbWVudFRvcChoKSl9 O2lmKHRoaXMub1F1ZXJ5UGFyYW1zLmFwaV9rZXkpaS5hcGlfa2V5PXRoaXMub1F1 ZXJ5UGFyYW1zLmFwaV9rZXk7cmV0dXJuIGk7fS5iaW5kKHRoaXMpfSk7fSxnZXRF bGVtZW50VG9wOmZ1bmN0aW9uKGIpe3ZhciBhPURPTS5zY3J5KGIsJ14nK3RoaXMu c092ZXJmbG93SXRlbXNTZWxlY3Rvcik7cmV0dXJuIGFbMF07fSxnZXRJdGVtUG9z aXRpb246ZnVuY3Rpb24oZCl7dmFyIGE9RE9NLnNjcnkodGhpcy5uZENvbnRlbnRD b250YWluZXIsdGhpcy5zT3ZlcmZsb3dJdGVtc1NlbGVjdG9yKSxjPWEubGVuZ3Ro LGI9YS5pbmRleE9mKGQpKzE7cmV0dXJuIGIrJy8nK2M7fSxnZXRJdGVtU2lnbmF0 dXJlOmZ1bmN0aW9uKGMpe3ZhciBhPWMuY2xhc3NOYW1lLnNwbGl0KCcgJyk7Zm9y KHZhciBiPTA7YjxhLmxlbmd0aDtiKyspaWYoYVtiXS5zdGFydHNXaXRoKCJSRVNf IikpcmV0dXJuIGFbYl0uc3Vic3RyaW5nKDQpO3JldHVybiAnJzt9LHJlbW92ZU92 ZXJmbG93RWxlbWVudHM6ZnVuY3Rpb24oaCxnLGksZCxlKXt2YXIgZixhPWk/RE9N LnNjcnkoZyxpKTokQShnLmNoaWxkTm9kZXMpO2lmKCFlKXt2YXIgZD1kfHwwLGI9 VmVjdG9yMi5nZXRFbGVtZW50RGltZW5zaW9ucyhoKS55K2QsYz1WZWN0b3IyLmdl dEVsZW1lbnRQb3NpdGlvbihoKS55O2U9YitjO313aGlsZShhLmxlbmd0aD4wJiYo Zj0kKGEucG9wKCkpKSYmKFZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnMoZiku eStWZWN0b3IyLmdldEVsZW1lbnRQb3NpdGlvbihmKS55KT5lKURPTS5yZW1vdmUo Zik7fSxsb2dpbjpmdW5jdGlvbigpe0Nvbm5lY3RTb2NpYWxXaWRnZXQubG9naW4o dGhpcy5hcHBJRCx0aGlzLnNXaWRnZXRJZCk7fSx0b2dnbGVMb2dpbjpmdW5jdGlv bigpe0RPTS5zY3J5KHRoaXMubmRUb3AsJy5mYlRvZ2dsZUxvZ2luJykuZm9yRWFj aChmdW5jdGlvbihhKXtDU1MudG9nZ2xlKGEpO30pO3RoaXMuZlJlbW92ZU92ZXJm bG93RWxlbWVudHMoKTt9fSk7ZnVuY3Rpb24gQWN0aXZpdHlXaWRnZXQoYSxiKXt0 aGlzLnBhcmVudC5jb25zdHJ1Y3QodGhpcyxhLGIpO31DbGFzcy5leHRlbmQoQWN0 aXZpdHlXaWRnZXQsJ0Nvbm5lY3RTb2NpYWxXaWRnZXQnKTtBY3Rpdml0eVdpZGdl dC5SRVFVRVNUX0lOVEVSVkFMPTE1KjEwMDA7QWN0aXZpdHlXaWRnZXQuQUNUSVZJ VFlfSEVJR0hUPTQ1O0FjdGl2aXR5V2lkZ2V0Lk1BWF9JTlRFUlZBTD0zMDtBY3Rp dml0eVdpZGdldC5NQVhfSVRFTVM9MjQ7Y29weV9wcm9wZXJ0aWVzKEFjdGl2aXR5 V2lkZ2V0LnByb3RvdHlwZSx7aW5pdGlhbGl6ZU9iamVjdDpmdW5jdGlvbihhLGIp e3RoaXMucGFyZW50LmluaXRpYWxpemVPYmplY3QuY2FsbCh0aGlzLGEsYik7dGhp cy5vUXVlcnlQYXJhbXMubmJfYWN0aXZpdGllcz1NYXRoLm1pbihBY3Rpdml0eVdp ZGdldC5NQVhfSVRFTVMsTWF0aC5yb3VuZCgodGhpcy5vUXVlcnlQYXJhbXMuaGVp Z2h0fHwzMDApL0FjdGl2aXR5V2lkZ2V0LkFDVElWSVRZX0hFSUdIVCkpO3RoaXMu b1F1ZXJ5UGFyYW1zLm5ld2VzdD1hLmlOZXdlc3RTdG9yeVRpbWV8fDA7fSxnZXRM aW5rVHlwZTpmdW5jdGlvbigpe3JldHVybiBDb25uZWN0U29jaWFsV2lkZ2V0LlRZ UEVfQUNUSVZJVFk7fSxnZXRQbHVnaW5UeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIENv bm5lY3RTb2NpYWxXaWRnZXQuVFlQRV9BQ1RJVklUWTt9LHJlbW92ZU92ZXJmbG93 RWxlbWVudHM6ZnVuY3Rpb24oKXtpZih0aGlzLmJDb21ib01vZGUmJiF0aGlzLmJG aXJzdFJvdW5kKXt0aGlzLmJGaXJzdFJvdW5kPXRydWU7dmFyIGQ9VmVjdG9yMi5n ZXRFbGVtZW50UG9zaXRpb24odGhpcy5uZFRvcCkueSxiPVZlY3RvcjIuZ2V0RWxl bWVudERpbWVuc2lvbnMoZG9jdW1lbnQuYm9keSkueS0oZCt0aGlzLmlGb290ZXJI ZWlnaHQpLGM9TWF0aC5yb3VuZChiLzIpLGE9JEEoYXJndW1lbnRzKTthW2EubGVu Z3RoXT1jO0Nvbm5lY3RTb2NpYWxXaWRnZXQucHJvdG90eXBlLnJlbW92ZU92ZXJm bG93RWxlbWVudHMuYXBwbHkodGhpcyxhKTt9ZWxzZSBDb25uZWN0U29jaWFsV2lk Z2V0LnByb3RvdHlwZS5yZW1vdmVPdmVyZmxvd0VsZW1lbnRzLmFwcGx5KHRoaXMs YXJndW1lbnRzKTt9LGhhc0ZyaWVuZHNBY3Rpdml0eTpmdW5jdGlvbigpe3JldHVy biBET00uc2NyeSh0aGlzLm5kQ29udGVudENvbnRhaW5lciwnZGl2LmZiRnJpZW5k c0FjdGl2aXR5JylbMF0uY2hpbGROb2Rlcy5sZW5ndGg+MDt9LGhhc0NvbnRlbnQ6 ZnVuY3Rpb24oKXtyZXR1cm4gRE9NLnNjcnkodGhpcy5uZFRvcCx0aGlzLnNPdmVy Zmxvd0l0ZW1zU2VsZWN0b3IpLmxlbmd0aD4wO30sZ2V0RW1wdHlNZXNzYWdlOmZ1 bmN0aW9uKCl7cmV0dXJuIERPTS5maW5kKHRoaXMubmRDb250ZW50Q29udGFpbmVy LCdkaXYuZmJFbXB0eVdpZGdldCcpO30sc2hvd0VtcHR5TWVzc2FnZTpmdW5jdGlv bigpe3ZhciBhPXRoaXMuZ2V0RW1wdHlNZXNzYWdlKCk7aWYoYSlDU1Muc2hvdyhh KTt9fSk7ZnVuY3Rpb24gUmVjb21tZW5kYXRpb25zV2lkZ2V0KGEsYil7dGhpcy5w YXJlbnQuY29uc3RydWN0KHRoaXMsYSxiKTt9Q2xhc3MuZXh0ZW5kKFJlY29tbWVu ZGF0aW9uc1dpZGdldCwnQ29ubmVjdFNvY2lhbFdpZGdldCcpO2NvcHlfcHJvcGVy dGllcyhSZWNvbW1lbmRhdGlvbnNXaWRnZXQucHJvdG90eXBlLHtnZXRMaW5rVHlw ZTpmdW5jdGlvbigpe3JldHVybiBDb25uZWN0U29jaWFsV2lkZ2V0LlRZUEVfUkVD T01NRU5EQVRJT05TO30sZ2V0UGx1Z2luVHlwZTpmdW5jdGlvbigpe3JldHVybiB0 aGlzLnNBY3Rpdml0eVBhcmVudD9Db25uZWN0U29jaWFsV2lkZ2V0LlRZUEVfQUNU SVZJVFk6Q29ubmVjdFNvY2lhbFdpZGdldC5UWVBFX1JFQ09NTUVOREFUSU9OUzt9 LGluaXRpYWxpemVPYmplY3Q6ZnVuY3Rpb24oYSxiKXt0aGlzLnBhcmVudC5pbml0 aWFsaXplT2JqZWN0LmNhbGwodGhpcyxhLGIpO3RoaXMuc0FjdGl2aXR5UGFyZW50 PWEuc0FjdGl2aXR5UGFyZW50O3RoaXMuY3JvcEltYWdlcyhET00uc2NyeSh0aGlz Lm5kQ29udGVudENvbnRhaW5lciwiLmZiSW1hZ2VDb250YWluZXIgaW1nIiksUmVj b21tZW5kYXRpb25zV2lkZ2V0LklNQUdFX0hFSUdIVCx0cnVlKTt0aGlzLmNyb3BJ bWFnZXMoRE9NLnNjcnkodGhpcy5uZENvbnRlbnRDb250YWluZXIsImltZy5mYkdh bGxlcnlJbWFnZSIpLFJlY29tbWVuZGF0aW9uc1dpZGdldC5HQUxMRVJZX0lNQUdF X0hFSUdIVCxmYWxzZSk7fSxjcm9wSW1hZ2VzOmZ1bmN0aW9uKGEsZCxiKXtpZihh Lmxlbmd0aD4wKXt2YXIgYz1mdW5jdGlvbihldmVudCl7UmVjb21tZW5kYXRpb25z V2lkZ2V0LmltYWdlX3Jlc2l6ZSh7aW1hZ2U6ZXZlbnQuZ2V0VGFyZ2V0KCksZGlt ZW5zaW9uOmQsY2VudGVyaW1hZ2U6Yn0pO307YS5mb3JFYWNoKGZ1bmN0aW9uKGUp e2lmKGUuY29tcGxldGUpe1JlY29tbWVuZGF0aW9uc1dpZGdldC5pbWFnZV9yZXNp emUoe2ltYWdlOmUsZGltZW5zaW9uOmQsY2VudGVyaW1hZ2U6Yn0pO31lbHNlIEV2 ZW50Lmxpc3RlbihlLCdsb2FkJyxjKTt9KTt9fSxoYXNDb250ZW50OmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMubmRDb250ZW50Q29udGFpbmVyLmNoaWxkTm9kZXMubGVu Z3RoPjA7fSxnZXRQYXJlbnQ6ZnVuY3Rpb24oKXtpZih0aGlzLnNBY3Rpdml0eVBh cmVudClyZXR1cm4gQ29ubmVjdFNvY2lhbFdpZGdldC5nZXRJbnN0YW5jZSh0aGlz LnNBY3Rpdml0eVBhcmVudCk7fSxzaG93UmVjb21tZW5kYXRpb25zU2VwYXJhdG9y OmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5nZXRQYXJlbnQoKTtpZihiJiZiLmhhc0Nv bnRlbnQoKSl7dmFyIGE9RE9NLnNjcnkodGhpcy5uZFRvcCwnZGl2LmZiUmVjb21t ZW5kYXRpb25zU2VwYXJhdG9yJylbMF07Q1NTLnNob3coYSk7Q1NTLnNldFN0eWxl KGEsJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7fXJldHVybiB0aGlzO30scmVtb3Zl T3ZlcmZsb3dFbGVtZW50czpmdW5jdGlvbigpe0Nvbm5lY3RTb2NpYWxXaWRnZXQu cHJvdG90eXBlLnJlbW92ZU92ZXJmbG93RWxlbWVudHMuYXBwbHkodGhpcyxhcmd1 bWVudHMpO2lmKHRoaXMuc0FjdGl2aXR5UGFyZW50JiYhdGhpcy5oYXNDb250ZW50 KCkpe3ZhciBhPURPTS5zY3J5KHRoaXMubmRUb3AsJ2Rpdi5mYlJlY29tbWVuZGF0 aW9uc1NlcGFyYXRvcicpWzBdO0NTUy5oaWRlKGEpO319fSk7UmVjb21tZW5kYXRp b25zV2lkZ2V0LklNQUdFX0hFSUdIVD0zNTtSZWNvbW1lbmRhdGlvbnNXaWRnZXQu R0FMTEVSWV9JTUFHRV9IRUlHSFQ9MTA1O2Z1bmN0aW9uIExpa2VCb3hXaWRnZXQo YSxiKXt0aGlzLnBhcmVudC5jb25zdHJ1Y3QodGhpcyxhLGIpO31DbGFzcy5leHRl bmQoTGlrZUJveFdpZGdldCwnQ29ubmVjdFNvY2lhbFdpZGdldCcpO2NvcHlfcHJv cGVydGllcyhMaWtlQm94V2lkZ2V0LnByb3RvdHlwZSx7Z2V0TGlua1R5cGU6ZnVu Y3Rpb24oKXtyZXR1cm4gQ29ubmVjdFNvY2lhbFdkaWdldC5UWVBFX0xJS0VCT1g7 fSxnZXRQbHVnaW5UeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIENvbm5lY3RTb2NpYWxX aWRnZXQuVFlQRV9MSUtFQk9YO319KTtSZWNvbW1lbmRhdGlvbnNXaWRnZXQuaW1h Z2VfcmVzaXplPWZ1bmN0aW9uKGwpe3ZhciBqPWwuaW1hZ2Usaz1WZWN0b3IyLmdl dEVsZW1lbnREaW1lbnNpb25zKGopLGM9ay55LGk9ay54LGc9bC5kaW1lbnNpb24s bT1nKydweCcsYT1sLmNlbnRlcmltYWdlO2lmKGM8PTV8fGk8PTUpcmV0dXJuO3Zh ciBmPWMvaTtpZihmPC41fHxmPjIpcmV0dXJuO2lmKGM9PT1pKXtDU1Muc2V0U3R5 bGUoaiwnd2lkdGgnLG0pO31lbHNlIGlmKGM8aSl7dmFyIGU9Zy9jLGQ9LU1hdGgu cm91bmQoKGktYykqZS8yKTtDU1Muc2V0U3R5bGUoaiwnaGVpZ2h0JyxtKTthJiZD U1Muc2V0U3R5bGUoaiwnbWFyZ2luTGVmdCcsZCsncHgnKTt9ZWxzZXt2YXIgZT1n L2ksaD0tTWF0aC5yb3VuZCgoYy1pKSplLzIpO0NTUy5zZXRTdHlsZShqLCd3aWR0 aCcsbSk7YSYmQ1NTLnNldFN0eWxlKGosJ21hcmdpblRvcCcsaCsncHgnKTt9Q1NT LnNldFN0eWxlKGosJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7Q1NTLnNldFN0eWxl KGoucGFyZW50Tm9kZSwnYmFja2dyb3VuZCcsJ3RyYW5zcGFyZW50Jyk7dmFyIGI9 UGFyZW50LmJ5Q2xhc3MoaiwnZmJSZWNvbW1lbmRhdGlvbicpO2lmKGIpQ1NTLnJl bW92ZUNsYXNzKGIsJ2ludmlzaWJsZV9lbGVtJyk7fTtDbGlja1Rocm91Z2hNb25p dG9yPWZ1bmN0aW9uKGEpe2NvcHlfcHJvcGVydGllcyh0aGlzLHtuZFRvcDphLm5k VG9wfHxkb2N1bWVudC5ib2R5LGZWYWxpZGF0ZUxpbms6YS5mVmFsaWRhdGVMaW5r fHxmdW5jdGlvbigpe3JldHVybiB0cnVlO30sZkdldE1vbml0b3JEYXRhOmEuZkdl dE1vbml0b3JEYXRhfHxmdW5jdGlvbigpe3JldHVybiB7fTt9fSk7RXZlbnQubGlz dGVuKHRoaXMubmRUb3AsJ21vdXNlZG93bicsdGhpcy5vbk1vdXNlRG93bi5iaW5k KHRoaXMpKTt9O0NsaWNrVGhyb3VnaE1vbml0b3IuQ0FMTF9CQUNLX1NPQ0lBTF9Q TFVHSU5TPTI7Y29weV9wcm9wZXJ0aWVzKENsaWNrVGhyb3VnaE1vbml0b3IucHJv dG90eXBlLHtnZXRNb25pdG9yZWRMaW5rOmZ1bmN0aW9uKGV2ZW50KXt2YXIgYT1l dmVudC5nZXRUYXJnZXQoKSxiPVBhcmVudC5ieVRhZyhhLCdhJyk7aWYoYiYmQ1NT Lmhhc0NsYXNzKGIsJ2ZiTW9uaXRvcicpJiZ0aGlzLmZWYWxpZGF0ZUxpbmsoYikp e3JldHVybiBiO31lbHNlIHJldHVybiBudWxsO30sZ2V0TW9uaXRvckRhdGE6ZnVu Y3Rpb24oYSl7dmFyIGI9dGhpcy5mR2V0TW9uaXRvckRhdGEoYSk7aWYoZG9jdW1l bnQucmVmZXJyZXIhPT0nJyliLnJlZmVycmVyPWRvY3VtZW50LnJlZmVycmVyO2Iu Y2I9Q2xpY2tUaHJvdWdoTW9uaXRvci5DQUxMX0JBQ0tfU09DSUFMX1BMVUdJTlM7 cmV0dXJuIGI7fSxvbk1vdXNlRG93bjpmdW5jdGlvbihldmVudCl7dmFyIGE9dGhp cy5nZXRNb25pdG9yZWRMaW5rKGV2ZW50KTtpZihhKVVudHJ1c3RlZExpbmsuYm9v dHN0cmFwKGEsRW52Lmxoc2gsZXZlbnQsdGhpcy5nZXRNb25pdG9yRGF0YS5iaW5k KHRoaXMpKTt9fSk7CnZhciBFeHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0PWZ1bmN0 aW9uKGkpe2NvcHlfcHJvcGVydGllcyh0aGlzLHt3aWRnZXRJRDppLndpZGdldElE LHdpZGdldDokKGkud2lkZ2V0SUQpLHZpZXdlcklEOmkudmlld2VyLG5vZGVUeXBl Omkubm9kZVR5cGUsdmlld2VySXNBZG1pbjppLnZpZXdlcklzQWRtaW4mJiFpLnVz ZXJPcHRlZE91dCxhZG1pblVybDppLmFkbWluVXJsLHBvcHVwT3B0SW5QYXJhbXM6 e30sbm9kZVVyaTpuZXcgVVJJKGkubm9kZVVSTCksZXh0ZXJuYWxVcmw6aS5leHRl cm5hbFVSTCxwYWdlSWQ6aS5wYWdlSWQsbGF5b3V0OmkubGF5b3V0LGVkZ2VUeXBl OmkuZWRnZVR5cGUsZXJyb3I6aS5lcnJvcixlcnJvclVSSTpuZXcgVVJJKCcvJyks YWxyZWFkeUNvbm5lY3RlZDppLmFscmVhZHlDb25uZWN0ZWQsdXNpbmdDb25uZWN0 TGlicmFyeTohIWkuY2hhbm5lbFVSTCxjb21tZW50V2lkZ2V0TWFya3VwOmkuY29t bWVudFdpZGdldE1hcmt1cCxjb21tZW50V2lkZ2V0T3BlbjpmYWxzZSxjb21tZW50 V2lkZ2V0VmlzaWJsZTpmYWxzZSx1c2VyUHJvZmlsZTpudWxsLGNvbm5lY3RTdG9y eUZiaWQ6MCxpc0FtYmlndW91c1RleHQ6aS5pc0FtYmlndW91c1RleHQsc29jaWFs QmFyOmkuc29jaWFsYmFyLHVzZURpc2Nvbm5lY3RMaW5rOmkudXNlRGlzY29ubmVj dExpbmssc2hvd0Vycm9yOmkuc2hvd0Vycm9yLHNob3dDb25maXJtOmkuc2hvd0Nv bmZpcm0sc2hvd0ZhY2VzOmkuc2hvd0ZhY2VzLGNvbm5lY3RUZXh0OmkuY29ubmVj dFRleHQscmVmOmkucmVmLHVzZXJPcHRlZE91dDppLnVzZXJPcHRlZE91dCx1c2lu Z0lubGluZUNvbW1lbnRpbmc6aS51c2luZ0lubGluZUNvbW1lbnRpbmcsbW9iaWxl OmkubW9iaWxlLHN1cHBvcnRDb21tZW50aW5nOiFpLm1vYmlsZSYmKCEhaS5jaGFu bmVsVVJMfHxpLnVzaW5nSW5saW5lQ29tbWVudGluZyksaW5saW5lQ29tbWVudExp c3RlbmVyc0luaXRpYWxpemVkOmZhbHNlLGlubGluZUNvbW1lbnRGb2N1c2VkOmZh bHNlLGZvcmNlQ29tbWVudEhvb2tzOmkuZm9yY2VDb21tZW50SG9va3MsbnV4Omku bnV4LGlmcmFtZVJlZmVyZXI6aS5pZnJhbWVSZWZlcmVyLGlzQmxvY2tlZDppLmlz QmxvY2tlZCxpc1BlcnNvbmFsaXplZDppLmlzUGVyc29uYWxpemVkLGNvbmZpcm1l ZENvbm5lY3Q6aS5jb25maXJtZWRDb25uZWN0LGhhc1NlbmQ6aS5zZW5kLGNvbG9y U2NoZW1lOmkuY29sb3JTY2hlbWUsZ3JheU91dDppLmdyYXlPdXR9KTtpZih0aGlz LnVzaW5nQ29ubmVjdExpYnJhcnkpVW52ZXJpZmllZFhELmluaXQoe2F1dG9SZXNp emU6aS5hdXRvUmVzaXplLGNoYW5uZWxVcmw6aS5jaGFubmVsVVJMLHJlc2l6ZVdp ZHRoOmkuYXV0b1Jlc2l6ZSYmaS5sYXlvdXQhPT1FeHRlcm5hbE5vZGVDb25uZWN0 V2lkZ2V0LlNUQU5EQVJEX0xBWU9VVH0pO3RoaXMuY29ubmVjdEJ1dHRvblNsaWRl cj1ET00uc2NyeSh0aGlzLndpZGdldCwnZGl2LmNvbm5lY3RfYnV0dG9uX3NsaWRl cicpO3RoaXMuY29ubmVjdEJ1dHRvbkNvbnRhaW5lcj1udWxsO2lmKHRoaXMuY29u bmVjdEJ1dHRvblNsaWRlci5sZW5ndGgpe3RoaXMuY29ubmVjdEJ1dHRvblNsaWRl cj10aGlzLmNvbm5lY3RCdXR0b25TbGlkZXJbMF07dGhpcy5jb25uZWN0QnV0dG9u Q29udGFpbmVyPURPTS5maW5kKHRoaXMuY29ubmVjdEJ1dHRvblNsaWRlciwnZGl2 LmNvbm5lY3RfYnV0dG9uX2NvbnRhaW5lcicpO31lbHNlIHRoaXMuY29ubmVjdEJ1 dHRvblNsaWRlcj1udWxsO3RoaXMuY29ubmVjdEJ1dHRvbj1ET00uZmluZCh0aGlz LndpZGdldCwnYS5jb25uZWN0X3dpZGdldF9saWtlX2J1dHRvbicpO2lmKHRoaXMu Z3JheU91dCl0aGlzLnRvbWJzdG9uZUNyb3NzPURPTS5maW5kKHRoaXMud2lkZ2V0 LCdkaXYudG9tYnN0b25lX2Nyb3NzJyk7dGhpcy5jb25uZWN0ZWRNZXNzYWdlPURP TS5zY3J5KHRoaXMud2lkZ2V0LCdzcGFuLmNvbm5lY3Rfd2lkZ2V0X2Nvbm5lY3Rl ZF90ZXh0Jyk7dGhpcy5jb25uZWN0ZWRNZXNzYWdlPXRoaXMuY29ubmVjdGVkTWVz c2FnZS5sZW5ndGg/dGhpcy5jb25uZWN0ZWRNZXNzYWdlWzBdOm51bGw7dGhpcy5u b3RDb25uZWN0ZWRNZXNzYWdlPURPTS5zY3J5KHRoaXMud2lkZ2V0LCdzcGFuLmNv bm5lY3Rfd2lkZ2V0X25vdF9jb25uZWN0ZWRfdGV4dCcpO3RoaXMubm90Q29ubmVj dGVkTWVzc2FnZT10aGlzLm5vdENvbm5lY3RlZE1lc3NhZ2UubGVuZ3RoP3RoaXMu bm90Q29ubmVjdGVkTWVzc2FnZVswXTpudWxsO3RoaXMuYWRtaW5TcGFucz1ET00u c2NyeSh0aGlzLndpZGdldCwnc3Bhbi5jb25uZWN0X3dpZGdldF9hZG1pbl9zcGFu Jyk7aWYodGhpcy5hZG1pblNwYW5zLmxlbmd0aD4wKXt0aGlzLmFkbWluTGlua3M9 W107Zm9yKHZhciBhPTA7YTx0aGlzLmFkbWluU3BhbnMubGVuZ3RoO2ErKyl0aGlz LmFkbWluTGlua3NbYV09RE9NLmZpbmQodGhpcy5hZG1pblNwYW5zW2FdLCdhLmNv bm5lY3Rfd2lkZ2V0X2FkbWluX29wdGlvbicpO31pZih0aGlzLmxheW91dD09RXh0 ZXJuYWxOb2RlQ29ubmVjdFdpZGdldC5TVEFOREFSRF9MQVlPVVQpe3RoaXMuY29u ZmlybWF0aW9uQ2VsbD1ET00uZmluZCh0aGlzLndpZGdldCwnZGl2LmNvbm5lY3Rf Y29uZmlybWF0aW9uX2NlbGwnKTt0aGlzLnVzZXJBY3Rpb25UZXh0U3Bhbj1ET00u ZmluZCh0aGlzLmNvbmZpcm1hdGlvbkNlbGwsJ3NwYW4uY29ubmVjdF93aWRnZXRf dXNlcl9hY3Rpb24nKTt0aGlzLnN1bW1hcnlUZXh0U3Bhbj1ET00uZmluZCh0aGlz LmNvbmZpcm1hdGlvbkNlbGwsJ3NwYW4uY29ubmVjdF93aWRnZXRfc3VtbWFyeScp O3RoaXMuc3VtbWFyeVRleHQ9RE9NLmZpbmQodGhpcy5jb25maXJtYXRpb25DZWxs LCdkaXYuY29ubmVjdF93aWRnZXRfdGV4dF9zdW1tYXJ5Jyk7dmFyIGo9RE9NLnNj cnkodGhpcy53aWRnZXQsJ2Rpdi5jb25uZWN0X3dpZGdldF9zYW1wbGVfY29ubmVj dGlvbnMnKTt0aGlzLnNhbXBsZUNvbm5lY3Rpb25zPWoubGVuZ3RoPjA/alswXTpu dWxsO2lmKGkuc2hvd0ZhY2VzJiZpLnZpZXdlcj4wKXt2YXIgZT1ET00uc2NyeSh0 aGlzLndpZGdldCwnZGl2LmNvbm5lY3Rfd2lkZ2V0X2xvZ2dlZF9pbl91c2VyJyk7 dGhpcy5sb2dnZWRJblVzZXJQaG90b0Rpdj1lLmxlbmd0aD4wP2VbMF06bnVsbDt9 fWlmKHRoaXMubGF5b3V0PT09RXh0ZXJuYWxOb2RlQ29ubmVjdFdpZGdldC5TSU1Q TEVfTEFZT1VUKXt0aGlzLm9yaWdpbmFsQnV0dG9uV2lkdGg9dGhpcy5jb21wdXRl QnV0dG9uRGltZW5zaW9ucygpLndpZHRoO3RoaXMuc3VtbWFyeUluY2x1ZGluZz1E T00uZmluZCh0aGlzLndpZGdldCwndGQuY29ubmVjdF93aWRnZXRfc2ltcGxlX2lu Y2x1ZGluZycpO3RoaXMuc3VwcG9ydENvbW1lbnRpbmc9ZmFsc2U7dGhpcy51c2lu Z0lubGluZUNvbW1lbnRpbmc9ZmFsc2U7fXRoaXMuc2V0UXVlcnlEYXRhKCk7aWYo dGhpcy5wYWdlSWQpY29weV9wcm9wZXJ0aWVzKHRoaXMucG9wdXBPcHRJblBhcmFt cyx7Y29ubmVjdF9pZDp0aGlzLnBhZ2VJZH0pO3RoaXMuZXJyb3JTcGFucz1ET00u c2NyeSh0aGlzLndpZGdldCwnc3Bhbi5jb25uZWN0X3dpZGdldF9lcnJvcl9zcGFu Jyk7aWYodGhpcy5lcnJvclNwYW5zLmxlbmd0aD4wKXt0aGlzLmVycm9yTGlua3M9 W107Zm9yKHZhciBiPTA7Yjx0aGlzLmVycm9yU3BhbnMubGVuZ3RoO2IrKyl0aGlz LmVycm9yTGlua3NbYl09RE9NLmZpbmQodGhpcy5lcnJvclNwYW5zW2JdLCdhLmNv bm5lY3Rfd2lkZ2V0X2Vycm9yX3RleHQnKTt9dGhpcy5jb25maXJtU3BhbnM9RE9N LnNjcnkodGhpcy53aWRnZXQsJ3NwYW4uY29ubmVjdF93aWRnZXRfY29uZmlybV9z cGFuJyk7aWYodGhpcy5jb25maXJtU3BhbnMubGVuZ3RoPjApe3RoaXMuY29uZmly bUxpbmtzPVtdO2Zvcih2YXIgZD0wO2Q8dGhpcy5jb25maXJtU3BhbnMubGVuZ3Ro O2QrKyl0aGlzLmNvbmZpcm1MaW5rc1tkXT1ET00uZmluZCh0aGlzLmNvbmZpcm1T cGFuc1tkXSwnYS5jb25uZWN0X3dpZGdldF9jb25maXJtX2xpbmsnKTt9dGhpcy51 bmxpa2VTcGFucz1ET00uc2NyeSh0aGlzLndpZGdldCwnc3Bhbi51bmxpa2Vfc3Bh bicpO3RoaXMudW5saWtlTGlua3M9W107Zm9yKHZhciBjPTA7Yzx0aGlzLnVubGlr ZVNwYW5zLmxlbmd0aDtjKyspe3RoaXMudW5saWtlTGlua3NbY109RE9NLmZpbmQo dGhpcy51bmxpa2VTcGFuc1tjXSwnYS5jb25uZWN0X3dpZGdldF91bmxpa2VfbGlu aycpO0V2ZW50Lmxpc3Rlbih0aGlzLnVubGlrZUxpbmtzW2NdLCdjbGljaycsdGhp cy5jb25uZWN0VG9Ob2RlT25DbGljay5iaW5kKHRoaXMpKTt9dmFyIGg9RE9NLnNj cnkodGhpcy53aWRnZXQsJ2Rpdi5jb25uZWN0X3dpZGdldF9udW1iZXJfY2xvdWQn KTtpZihoLmxlbmd0aD09MSl7dGhpcy5udW1iZXJDbG91ZD1oWzBdO3RoaXMubnVt YmVyQ2xvdWROdWI9RE9NLmZpbmQodGhpcy53aWRnZXQsJ2Rpdi5jb25uZWN0X3dp ZGdldF9udW1iZXJfY2xvdWRfbnViJyk7dGhpcy5udW1iZXJDbG91ZEV4dGVuc2lv bj1ET00uZmluZCh0aGlzLm51bWJlckNsb3VkLCdkaXYuY29ubmVjdF93aWRnZXRf bnVtYmVyX2Nsb3VkX2V4dGVuc2lvbicpO3RoaXMuc2l6ZU51bWJlckNsb3VkKCk7 dGhpcy5udW1iZXJDbG91ZFVubGlrZVNwYW49RE9NLmZpbmQodGhpcy5udW1iZXJD bG91ZEV4dGVuc2lvbiwnc3Bhbi51bmxpa2Vfc3BhbicpO3RoaXMubnVtYmVyQ2xv dWRSZW1pbmRlclNwYW49RE9NLmZpbmQodGhpcy5udW1iZXJDbG91ZEV4dGVuc2lv biwnc3Bhbi5saWtlX3JlbWluZGVyJyk7dGhpcy5pbkFuaW1hdGlvbj1mYWxzZTt0 aGlzLnJlbWluZGVySXNWaXNpYmxlPUNTUy5oYXNDbGFzcyh0aGlzLm51bWJlckNs b3VkVW5saWtlU3BhbiwnaGlkZGVuX2VsZW0nKTtFdmVudC5saXN0ZW4odGhpcy5u dW1iZXJDbG91ZCwnbW91c2VsZWF2ZScsdGhpcy5yZXN0b3JlUmVtaW5kZXJTcGFu LmJpbmQodGhpcykpO0V2ZW50Lmxpc3Rlbih0aGlzLm51bWJlckNsb3VkRXh0ZW5z aW9uLCdtb3VzZWxlYXZlJyx0aGlzLnJlc3RvcmVSZW1pbmRlclNwYW4uYmluZCh0 aGlzKSk7RXZlbnQubGlzdGVuKHRoaXMubnVtYmVyQ2xvdWRFeHRlbnNpb24sJ21v dXNlZW50ZXInLHRoaXMuZXhwb3NlVW5saWtlU3Bhbi5iaW5kKHRoaXMpKTtFdmVu dC5saXN0ZW4odGhpcy5udW1iZXJDbG91ZCwnbW91c2VlbnRlcicsdGhpcy5leHBv c2VVbmxpa2VTcGFuLmJpbmQodGhpcykpO0V2ZW50Lmxpc3Rlbih0aGlzLm51bWJl ckNsb3VkRXh0ZW5zaW9uLCdtb3VzZWxlYXZlJyxmdW5jdGlvbihldmVudCl7dGhp cy5yZXF1aXJlc01vdXNlTGVhdmVFdmVudD1mYWxzZTt9LmJpbmQodGhpcykpO31p Zih0aGlzLnVzaW5nSW5saW5lQ29tbWVudGluZyYmIXRoaXMuc2hvd0ZhY2VzKXt0 aGlzLnNoYXJlQ29tbWVudFNwYW5zPURPTS5zY3J5KHRoaXMud2lkZ2V0LCdzcGFu LmNvbm5lY3Rfd2lkZ2V0X3NoYXJlX2NvbW1lbnRfc3BhbicpO2Zvcih2YXIgZj0w O2Y8dGhpcy5zaGFyZUNvbW1lbnRTcGFucy5sZW5ndGg7ZisrKXt2YXIgaz1ET00u ZmluZCh0aGlzLnNoYXJlQ29tbWVudFNwYW5zW2ZdLCdhLmNvbm5lY3Rfd2lkZ2V0 X3NoYXJlX2NvbW1lbnRfb3B0aW9uJyk7RXZlbnQubGlzdGVuKGssJ2NsaWNrJyxm dW5jdGlvbihldmVudCl7Zm9yKHZhciBsPTA7bDx0aGlzLnNoYXJlQ29tbWVudFNw YW5zLmxlbmd0aDtsKyspQ1NTLmFkZENsYXNzKHRoaXMuc2hhcmVDb21tZW50U3Bh bnNbbF0sJ2hpZGRlbl9lbGVtJyk7dGhpcy5wcmVzZW50Q29tbWVudGluZ09wdGlv bigpO30uYmluZCh0aGlzKSk7fX1pZih0aGlzLmxheW91dD09PUV4dGVybmFsTm9k ZUNvbm5lY3RXaWRnZXQuQlVUVE9OX0NPVU5UX0xBWU9VVCl7WEQuZm9yY2VkX21p bl93aWR0aD10aGlzLmdldEJ1dHRvbkNvdW50V2lkZ2V0V2lkdGgoKTt0aGlzLm51 bWJlckV4Y2x1ZGluZz1ET00uZmluZCh0aGlzLndpZGdldCwndGQuY29ubmVjdF93 aWRnZXRfYnV0dG9uX2NvdW50X2V4Y2x1ZGluZycpO3RoaXMuc3VtbWFyeUluY2x1 ZGluZz1ET00uZmluZCh0aGlzLndpZGdldCwndGQuY29ubmVjdF93aWRnZXRfYnV0 dG9uX2NvdW50X2luY2x1ZGluZycpO3RoaXMudGh1bWJzVXBJY29uPURPTS5maW5k KHRoaXMuc3VtbWFyeUluY2x1ZGluZywnZGl2LnRodW1ic191cCcpO3RoaXMudW5k b1JlZ2lvbj1ET00uZmluZCh0aGlzLnN1bW1hcnlJbmNsdWRpbmcsJ2Rpdi51bmRv Jyk7dGhpcy5vcmlnaW5hbEJ1dHRvbldpZHRoPXRoaXMuY29tcHV0ZUJ1dHRvbkRp bWVuc2lvbnMoKS53aWR0aDtFdmVudC5saXN0ZW4odGhpcy50aHVtYnNVcEljb24s J21vdXNlZW50ZXInLGZ1bmN0aW9uKGV2ZW50KXt0aGlzLnVuZG9CdXR0b249RE9N LmZpbmQodGhpcy51bmRvUmVnaW9uLCdsYWJlbC51bmRvX2J1dHRvbiBpbnB1dCcp O0V2ZW50Lmxpc3Rlbih0aGlzLnVuZG9CdXR0b24sJ2NsaWNrJyx0aGlzLmNvbm5l Y3RUb05vZGVPbkNsaWNrLmJpbmQodGhpcykpO0NTUy5hZGRDbGFzcyh0aGlzLnRo dW1ic1VwSWNvbiwnaGlkZGVuX2VsZW0nKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy51 bmRvUmVnaW9uLCdoaWRkZW5fZWxlbScpO30uYmluZCh0aGlzKSk7RXZlbnQubGlz dGVuKHRoaXMudW5kb1JlZ2lvbiwnbW91c2VsZWF2ZScsZnVuY3Rpb24oZXZlbnQp e0NTUy5yZW1vdmVDbGFzcyh0aGlzLnRodW1ic1VwSWNvbiwnaGlkZGVuX2VsZW0n KTtDU1MuYWRkQ2xhc3ModGhpcy51bmRvUmVnaW9uLCdoaWRkZW5fZWxlbScpO30u YmluZCh0aGlzKSk7fWlmKCF0aGlzLmlzQmxvY2tlZCl7RXZlbnQubGlzdGVuKHRo aXMuY29ubmVjdEJ1dHRvbiwnY2xpY2snLHRoaXMucHJpbWFyeUxpa2VCdXR0b25P bkNsaWNrLmJpbmQodGhpcykpO2lmKHRoaXMuZ3JheU91dClFdmVudC5saXN0ZW4o dGhpcy50b21ic3RvbmVDcm9zcywnY2xpY2snLHRoaXMuY29ubmVjdFRvTm9kZU9u Q2xpY2suYmluZCh0aGlzKSk7fWlmKHRoaXMuYWRtaW5MaW5rcylmb3IodmFyIGE9 MDthPHRoaXMuYWRtaW5MaW5rcy5sZW5ndGg7YSsrKUV2ZW50Lmxpc3Rlbih0aGlz LmFkbWluTGlua3NbYV0sJ2NsaWNrJyx0aGlzLnByZXNlbnRBZG1pblBhZ2UuYmlu ZCh0aGlzKSk7aWYodGhpcy5lcnJvckxpbmtzKWZvcih2YXIgYT0wO2E8dGhpcy5l cnJvckxpbmtzLmxlbmd0aDthKyspRXZlbnQubGlzdGVuKHRoaXMuZXJyb3JMaW5r c1thXSwnY2xpY2snLHRoaXMucHJlc2VudEVycm9yRGlhbG9nLmJpbmQodGhpcykp O2lmKHRoaXMuY29uZmlybUxpbmtzKWZvcih2YXIgZz0wO2c8dGhpcy5jb25maXJt TGlua3MubGVuZ3RoO2crKylFdmVudC5saXN0ZW4odGhpcy5jb25maXJtTGlua3Nb Z10sJ2NsaWNrJyx0aGlzLnByZXNlbnRDb25maXJtRGlhbG9nLmJpbmQodGhpcykp O2lmKGkuc2hvd0NhcHRjaGEpe3RoaXMuc2hvd0NhcHRjaGE9dHJ1ZTt0aGlzLmNv bm5lY3RUb05vZGUodHJ1ZSk7fWlmKHRoaXMuZm9yY2VDb21tZW50SG9va3MpdGhp cy5zZXR1cENvbW1lbnRIb29rcygkKHRoaXMuZm9yY2VDb21tZW50SG9va3MpKTt0 aGlzLnRleHRJbnB1dE1hcmdpbldpdGhCdXR0b249NTt0aGlzLndpZHRoU3luY0Fy Yml0ZXI9QXJiaXRlci5zdWJzY3JpYmUoJ3BsYXRmb3JtL3NvY2lhbHBsdWdpbnMv c2VuZC9yZXNpemUnLHRoaXMuc3luY1NlbmRXaWRnZXRXaWR0aC5iaW5kKHRoaXMp KTtBcmJpdGVyLmluZm9ybSgncGxhdGZvcm0vc29jaWFscGx1Z2lucy9saWtlL3Jl c2l6ZScse2J1dHRvbl93aWR0aDp0aGlzLmNvbXB1dGVCdXR0b25EaW1lbnNpb25z V2l0aFBhZGRpbmcoKS53aWR0aCx3aWRnZXRfd2lkdGg6VmVjdG9yMi5nZXRFbGVt ZW50RGltZW5zaW9ucyh0aGlzLndpZGdldCkueCxsYXlvdXQ6dGhpcy5sYXlvdXR9 LEFyYml0ZXIuQkVIQVZJT1JfU1RBVEUpO0FyYml0ZXIuc3Vic2NyaWJlKCdwbGF0 Zm9ybS9zb2NpYWxwbHVnaW5zL2RpYWxvZycsZnVuY3Rpb24obSxsKXtpZihsLmNv bnRyb2xsZXJJRCE9PXRoaXMud2lkZ2V0SUQpdGhpcy5vdGhlckNvbW1lbnRXaWRn ZXRPcGVuPShsLmV2ZW50PT0nb3BlbicpO30uYmluZCh0aGlzKSk7dGhpcy5zdWJz Y3JpYmVUb1N5bmMoaSk7fTtjb3B5X3Byb3BlcnRpZXMoRXh0ZXJuYWxOb2RlQ29u bmVjdFdpZGdldCx7U1RBTkRBUkRfTEFZT1VUOidzdGFuZGFyZCcsQk9YX0NPVU5U X0xBWU9VVDonYm94X2NvdW50JyxCVVRUT05fQ09VTlRfTEFZT1VUOididXR0b25f Y291bnQnLFNJTVBMRV9MQVlPVVQ6J3NpbXBsZScsQ09MT1JfREFSSzowLENPTE9S X0xJR0hUOjEsT1BUX0lOX0ZBQ0VCT09LX0FQUF9JRDonMTI3NzYwMDg3MjM3NjEw Jyx1cGRhdGVMb2dnZWRJblVzZXI6ZnVuY3Rpb24oYil7dmFyIGE9RXh0ZXJuYWxO b2RlQ29ubmVjdFdpZGdldC5jb250cm9sbGVyTWFuYWdpbmdMb2dpbjthLnNldExv Z2dlZEluKGIpO2EuY29ubmVjdFRvTm9kZSh0cnVlKTthLnVzZXJPcHRlZE91dD1m YWxzZTtkZWxldGUgRXh0ZXJuYWxOb2RlQ29ubmVjdFdpZGdldC5jb250cm9sbGVy TWFuYWdpbmdMb2dpbjtBcmJpdGVyLmluZm9ybSgncGxhdGZvcm0vc29jaWFscGx1 Z2lucy9sb2dpbicse3VzZXI6Yi51c2VyfSxBcmJpdGVyLkJFSEFWSU9SX1NUQVRF KTtXaWRnZXRBcmJpdGVyLmluZm9ybSgncGxhdGZvcm0vc29jaWFscGx1Z2lucy9s b2dpbicse3VzZXI6Yi51c2VyfSxBcmJpdGVyLkJFSEFWSU9SX1NUQVRFKTt9LG9u Q29tbWVudFdpZGdldExvYWRlZDpmdW5jdGlvbihhKXt2YXIgYj1FeHRlcm5hbE5v ZGVDb25uZWN0V2lkZ2V0LnNlbGY7ZGVsZXRlIEV4dGVybmFsTm9kZUNvbm5lY3RX aWRnZXQuc2VsZjtiLmluamVjdENvbW1lbnRXaWRnZXRNYXJrdXAoYSk7fX0pO2Nv cHlfcHJvcGVydGllcyhFeHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0LnByb3RvdHlw ZSx7Z2V0U3luY0VuZHBvaW50TmFtZTpmdW5jdGlvbigpe30sZ2V0Q29ubmVjdGlv bkVuZHBvaW50TmFtZTpmdW5jdGlvbigpe30sZ2V0UGx1Z2luTmFtZTpmdW5jdGlv bigpe30sc3Vic2NyaWJlVG9TeW5jOmZ1bmN0aW9uKGEpe0FyYml0ZXIuc3Vic2Ny aWJlKCdwbGF0Zm9ybS9zb2NpYWxwbHVnaW5zL2xvZ2luJyxmdW5jdGlvbihjLGIp e2lmKHRoaXMudmlld2VySUQmJmIudXNlciE9PXRoaXMudmlld2VySUQpZG9jdW1l bnQubG9jYXRpb24ucmVsb2FkKCk7fS5iaW5kKHRoaXMpKTtBcmJpdGVyLnN1YnNj cmliZSh0aGlzLmdldFN5bmNFbmRwb2ludE5hbWUoKSxmdW5jdGlvbihjLGIpe2lm KGIuZXh0ZXJuYWxVcmw9PWEuZXh0ZXJuYWxVUkwpe3RoaXMudXNlck9wdGVkT3V0 PWZhbHNlO3RoaXMudXBkYXRlV2lkZ2V0KGIub3B0cyx0cnVlKTt9fS5iaW5kKHRo aXMpKTt9LHNldFF1ZXJ5RGF0YTpmdW5jdGlvbigpe2NvcHlfcHJvcGVydGllcyh0 aGlzLnBvcHVwT3B0SW5QYXJhbXMse3Byb3RvY29sOndpbmRvdy5sb2NhdGlvbi5w cm90b2NvbCxleHRlcm5hbF9wYWdlX3VybDp0aGlzLmV4dGVybmFsVXJsfSk7aWYo dGhpcy5udXgpY29weV9wcm9wZXJ0aWVzKHRoaXMucG9wdXBPcHRJblBhcmFtcyx7 bnV4OnRoaXMubnV4LHJlZmVyZXI6dGhpcy5pZnJhbWVSZWZlcmVyfSk7fSx1cGRh dGVXaWRnZXQ6ZnVuY3Rpb24oZSxkLGIpe3ZhciBhPSh0aGlzLmFscmVhZHlDb25u ZWN0ZWQhPWUubm93Q29ubmVjdGVkKXx8KHRoaXMuc2hvd0NvbmZpcm0hPWUuc2hv d0NvbmZpcm0pO2lmKCFkKUFyYml0ZXIuaW5mb3JtKHRoaXMuZ2V0Q29ubmVjdGlv bkVuZHBvaW50TmFtZSgpLGUsQXJiaXRlci5CRUhBVklPUl9TVEFURSk7dGhpcy5h bHJlYWR5Q29ubmVjdGVkPWUubm93Q29ubmVjdGVkO3RoaXMudmlld2VySXNBZG1p bj1lLmlzQWRtaW47dGhpcy5zaG93RXJyb3I9ZS5zaG93RXJyb3I7dGhpcy5zaG93 Q29uZmlybT1lLnNob3dDb25maXJtO3RoaXMuYWRtaW5Vcmw9ZS5hZG1pblVybDt0 aGlzLnVzZXJQcm9maWxlPWUudXNlclByb2ZpbGU7dGhpcy5jb25uZWN0U3RvcnlG YmlkPWUuY29ubmVjdFN0b3J5RmJpZDt0aGlzLmVycm9yPWUuZXJyb3I7aWYoIWUu bm93Q29ubmVjdGVkKXRoaXMuY2xvc2VDb21tZW50V2lkZ2V0KCk7aWYoYSYmIWR8 fGIpe3ZhciBjPWUubm93Q29ubmVjdGVkPydlZGdlQ3JlYXRlZCc6J2VkZ2VSZW1v dmVkJztVbnZlcmlmaWVkWEQuc2VuZCh7dHlwZTpjfSk7fWlmKGF8fHRoaXMuZXJy b3IpdGhpcy5zeW5jV2lkZ2V0RGlzcGxheSgpO2lmKCFkfHxiKVdpZGdldEFyYml0 ZXIuaW5mb3JtKHRoaXMuZ2V0U3luY0VuZHBvaW50TmFtZSgpLHtleHRlcm5hbFVy bDp0aGlzLmV4dGVybmFsVXJsLG9wdHM6ZX0sQXJiaXRlci5CRUhBVklPUl9TVEFU RSk7fSxwcmVzZW50T3B0SW46ZnVuY3Rpb24oKXtFeHRlcm5hbE5vZGVDb25uZWN0 V2lkZ2V0LmNvbnRyb2xsZXJNYW5hZ2luZ0xvZ2luPXRoaXM7UGxhdGZvcm1PcHRJ blBvcHVwLm9wZW4odGhpcy5nZXRQbHVnaW5OYW1lKCksJ29wdC5pbmxpa2UnLHRo aXMucG9wdXBPcHRJblBhcmFtcyk7VW52ZXJpZmllZFhELnNlbmQoe3R5cGU6J2F1 dGhQcm9tcHRlZCd9KTt9LHNldExvZ2dlZEluOmZ1bmN0aW9uKGEpe3RoaXMudmll d2VySUQ9YS51c2VyO3RoaXMubmV3UHJvZmlsZVBpYz1hLnByb2ZpbGVQaWM7dGhp cy5wbGFjZUZvcm1Vc2VyQ2hlY2soYS5mb3JtVXNlckNoZWNrLGEuZmJEdHNnKTt9 LHBsYWNlRm9ybVVzZXJDaGVjazpmdW5jdGlvbihiLGEpe0Vudi5mYl9kdHNnPWE7 aWYoZ2UoJ3Bvc3RfZm9ybV9pZCcpKXtET00ucmVwbGFjZSgkKCdwb3N0X2Zvcm1f aWQnKSxIVE1MKGIpKTt9ZWxzZSBET00uYXBwZW5kQ29udGVudChET00uZmluZChk b2N1bWVudCwnYm9keScpLEhUTUwoYikpO30sc3luY1dpZGdldFdpdGhTZXJ2ZXI6 ZnVuY3Rpb24oYyl7dmFyIGI9Yy5nZXRQYXlsb2FkKCk7aWYoYi5yZXF1aXJlc19s b2dpbil7dGhpcy51cGRhdGVXaWRnZXQoe25vd0Nvbm5lY3RlZDpmYWxzZSxpc0Fk bWluOmZhbHNlfSxmYWxzZSk7dGhpcy5wcmVzZW50T3B0SW4oKTtyZXR1cm47fXZh ciBhPXtub3dDb25uZWN0ZWQ6Yi5zdWNjZXNzJiZiLmFscmVhZHlfY29ubmVjdGVk LGlzQWRtaW46Yi5pc19hZG1pbixzaG93RXJyb3I6Yi5zaG93X2Vycm9yLHNob3dD b25maXJtOmIuc2hvd19jb25maXJtLGFkbWluVXJsOmIuYWRtaW5fdXJsLHVzZXJQ cm9maWxlOmIudXNlcl9wcm9maWxlLGNvbm5lY3RTdG9yeUZiaWQ6Yi5zdG9yeV9m YmlkLGVycm9yOmIuZXJyb3JfaW5mb307dGhpcy51cGRhdGVXaWRnZXQoYSwhYi5z dWNjZXNzLGIuc3VjY2Vzcyk7aWYoYi5zdWNjZXNzJiZ0aGlzLnNob3dDYXB0Y2hh KXt3aW5kb3cub3BlbmVyLmxvY2F0aW9uLnJlbG9hZCgpO3dpbmRvdy5jbG9zZSgp O319LGdldEJ1dHRvbkNvdW50V2lkZ2V0V2lkdGg6ZnVuY3Rpb24oKXt2YXIgYT1E T00uZmluZCh0aGlzLndpZGdldCwndGFibGUuY29ubmVjdF93aWRnZXRfaW50ZXJh Y3RpdmVfYXJlYScpO3ZhciBiPUNTUy5nZXRTdHlsZShhLCd3aWR0aCcpO3JldHVy biBwYXJzZUludChiLDEwKTt9LHNpemVOdW1iZXJDbG91ZDpmdW5jdGlvbigpe3Ro aXMuY29sbGFwc2VkTnVtYmVyQ2xvdWRIZWlnaHQ9dGhpcy5nZXRDb2xsYXBzZWRO dW1iZXJDbG91ZEhlaWdodCgpO3RoaXMuZXhwYW5kZWROdW1iZXJDbG91ZEhlaWdo dD10aGlzLmNvbGxhcHNlZE51bWJlckNsb3VkSGVpZ2h0K3RoaXMuZ2V0TnVtYmVy Q2xvdWRFeHRlbnNpb25IZWlnaHQoKTtpZih0aGlzLmFscmVhZHlDb25uZWN0ZWQp Q1NTLnNldFN0eWxlKHRoaXMubnVtYmVyQ2xvdWQsJ2hlaWdodCcsdGhpcy5leHBh bmRlZE51bWJlckNsb3VkSGVpZ2h0KydweCcpO3ZhciBhPXRoaXMuY29tcHV0ZUJ1 dHRvbkRpbWVuc2lvbnNXaXRoUGFkZGluZygpLndpZHRoO1hELmZvcmNlZF9taW5f d2lkdGg9YTt2YXIgYj1pbnRsX2xvY2FsZV9pc19ydGwoKTthLT0yO0NTUy5zZXRT dHlsZSh0aGlzLm51bWJlckNsb3VkLCd3aWR0aCcsYSsncHgnKTtDU1Muc2V0U3R5 bGUodGhpcy5udW1iZXJDbG91ZCwndmlzaWJpbGl0eScsJ3Zpc2libGUnKTthbmlt YXRpb24odGhpcy5udW1iZXJDbG91ZCkuZnJvbSgnb3BhY2l0eScsMCkudG8oJ29w YWNpdHknLDEpLmR1cmF0aW9uKDEwMCkuZ28oKTt9LGdldENvbGxhcHNlZE51bWJl ckNsb3VkSGVpZ2h0OmZ1bmN0aW9uKCl7dmFyIGI9VmVjdG9yMi5nZXRFbGVtZW50 RGltZW5zaW9ucyh0aGlzLm51bWJlckNsb3VkKS55O3ZhciBkPXBhcnNlSW50KENT Uy5nZXRTdHlsZSh0aGlzLm51bWJlckNsb3VkLCdwYWRkaW5nVG9wJyksMTApO3Zh ciBjPXBhcnNlSW50KENTUy5nZXRTdHlsZSh0aGlzLm51bWJlckNsb3VkLCdwYWRk aW5nQm90dG9tJyksMTApO3ZhciBhPXBhcnNlSW50KENTUy5nZXRTdHlsZSh0aGlz Lm51bWJlckNsb3VkLCdib3JkZXInKSwxMCk7cmV0dXJuIGItZC1jLTI7fSxnZXRO dW1iZXJDbG91ZEV4dGVuc2lvbkhlaWdodDpmdW5jdGlvbigpe0NTUy5hZGRDbGFz cyh0aGlzLm51bWJlckNsb3VkRXh0ZW5zaW9uLCdjb25uZWN0X3dpZGdldF9vZmZz Y3JlZW4nKTtpZighdGhpcy5hbHJlYWR5Q29ubmVjdGVkKUNTUy5yZW1vdmVDbGFz cyh0aGlzLm51bWJlckNsb3VkRXh0ZW5zaW9uLCdoaWRkZW5fZWxlbScpO3ZhciBh PVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5udW1iZXJDbG91ZEV4 dGVuc2lvbikueTtpZighdGhpcy5hbHJlYWR5Q29ubmVjdGVkKUNTUy5hZGRDbGFz cyh0aGlzLm51bWJlckNsb3VkRXh0ZW5zaW9uLCdoaWRkZW5fZWxlbScpO0NTUy5y ZW1vdmVDbGFzcyh0aGlzLm51bWJlckNsb3VkRXh0ZW5zaW9uLCdjb25uZWN0X3dp ZGdldF9vZmZzY3JlZW4nKTtyZXR1cm4gYTt9LHJlc3RvcmVSZW1pbmRlclNwYW46 ZnVuY3Rpb24oZXZlbnQpe2lmKHRoaXMucmVtaW5kZXJJc1Zpc2libGV8fHRoaXMu aW5BbmltYXRpb24pcmV0dXJuO3RoaXMuYW5pbWF0ZVJlbWluZGVyU3BhblJlYXBw ZWFyYW5jZSgpO30sYW5pbWF0ZVJlbWluZGVyU3BhblJlYXBwZWFyYW5jZTpmdW5j dGlvbigpe2lmKHRoaXMucmVtaW5kZXJJc1Zpc2libGV8fHRoaXMuaW5BbmltYXRp b24pcmV0dXJuO3RoaXMuaW5BbmltYXRpb249dHJ1ZTtDU1MuYWRkQ2xhc3ModGhp cy5udW1iZXJDbG91ZFVubGlrZVNwYW4sJ2hpZGRlbl9lbGVtJyk7Q1NTLnNldFN0 eWxlKHRoaXMubnVtYmVyQ2xvdWRSZW1pbmRlclNwYW4sJ29wYWNpdHknLDApO0NT Uy5yZW1vdmVDbGFzcyh0aGlzLm51bWJlckNsb3VkUmVtaW5kZXJTcGFuLCdoaWRk ZW5fZWxlbScpO2FuaW1hdGlvbih0aGlzLm51bWJlckNsb3VkUmVtaW5kZXJTcGFu KS50bygnb3BhY2l0eScsMSkuZHVyYXRpb24oMTAwKS5vbmRvbmUoZnVuY3Rpb24o KXt0aGlzLmluQW5pbWF0aW9uPWZhbHNlO3RoaXMucmVtaW5kZXJJc1Zpc2libGU9 dHJ1ZTt9LmJpbmQodGhpcykpLmdvKCk7fSxleHBvc2VVbmxpa2VTcGFuOmZ1bmN0 aW9uKGV2ZW50KXtpZighdGhpcy5hbHJlYWR5Q29ubmVjdGVkfHx0aGlzLnJlcXVp cmVzTW91c2VMZWF2ZUV2ZW50fHwhdGhpcy5yZW1pbmRlcklzVmlzaWJsZXx8dGhp cy5pbkFuaW1hdGlvbilyZXR1cm47dGhpcy5pbkFuaW1hdGlvbj10cnVlO0NTUy5h ZGRDbGFzcyh0aGlzLm51bWJlckNsb3VkUmVtaW5kZXJTcGFuLCdoaWRkZW5fZWxl bScpO0NTUy5zZXRTdHlsZSh0aGlzLm51bWJlckNsb3VkVW5saWtlU3Bhbiwnb3Bh Y2l0eScsMCk7Q1NTLnJlbW92ZUNsYXNzKHRoaXMubnVtYmVyQ2xvdWRVbmxpa2VT cGFuLCdoaWRkZW5fZWxlbScpO2FuaW1hdGlvbih0aGlzLm51bWJlckNsb3VkVW5s aWtlU3BhbikudG8oJ29wYWNpdHknLDEpLmR1cmF0aW9uKDEwMCkub25kb25lKGZ1 bmN0aW9uKCl7dGhpcy5pbkFuaW1hdGlvbj1mYWxzZTt0aGlzLnJlbWluZGVySXNW aXNpYmxlPWZhbHNlO30uYmluZCh0aGlzKSkuZ28oKTt9LGNvbmRpdGlvbmFsbHlB Y3RpdmF0ZUJ1dHRvbjpmdW5jdGlvbihldmVudCl7dGhpcy5jb21tZW50QnV0dG9u SXNBY3RpdmU9dGhpcy5pbmxpbmVDb21tZW50SW5wdXQudmFsdWUudHJpbSgpLmxl bmd0aD4wO30sdXBkYXRlQ29ubmVjdGlvbldpdGhDb21tZW50OmZ1bmN0aW9uKGV2 ZW50KXtFdmVudC5raWxsKGV2ZW50KTtpZih0aGlzLmNvbW1lbnRCdXR0b25Jc0Fj dGl2ZSl7dGhpcy5wb3N0SW5saW5lQ29tbWVudCgpO3RoaXMucmVzZXRJbmxpbmVD b21tZW50KCk7dGhpcy5jbG9zZUlubGluZUNvbW1lbnQoKTt9fSxwb3N0SW5saW5l Q29tbWVudDpmdW5jdGlvbigpe3RoaXMucG9zdFVzZXJDb21tZW50KHRoaXMuaW5s aW5lQ29tbWVudElucHV0LnZhbHVlLnRyaW0oKSxmYWxzZSwnaWZyYW1lJyk7fSxy ZXNldElubGluZUNvbW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLmNvbmNlYWxDb21tZW50 QnV0dG9uKCk7dmFyIGE9dGhpcy5pbmxpbmVDb21tZW50SW5wdXQuZ2V0QXR0cmli dXRlKCdwbGFjZWhvbGRlcicpO3RoaXMuaW5saW5lQ29tbWVudElucHV0LnZhbHVl PWE7fSxzaG93SW5saW5lQ29tbWVudDpmdW5jdGlvbihldmVudCl7RXZlbnQua2ls bChldmVudCk7aWYoIXRoaXMuaW5saW5lQ29tbWVudEZseW91dE9wZW58fHRoaXMu aW5saW5lQ29tbWVudEZseW91dFZpc2libGV8fHRoaXMuc2hvd0NvbmZpcm18fHRo aXMuZXJyb3IpcmV0dXJuO3RoaXMuaW5saW5lQ29tbWVudEZseW91dFZpc2libGU9 dHJ1ZTtDU1Muc2hvdyh0aGlzLmlubGluZUNvbW1lbnRGbHlvdXQpO30saGlkZUlu bGluZUNvbW1lbnQ6ZnVuY3Rpb24oZXZlbnQpe2lmKGV2ZW50KUV2ZW50LmtpbGwo ZXZlbnQpO2lmKHRoaXMuaW5saW5lQ29tbWVudEZvY3VzZWR8fCF0aGlzLmlubGlu ZUNvbW1lbnRGbHlvdXRPcGVufHwhdGhpcy5pbmxpbmVDb21tZW50Rmx5b3V0Vmlz aWJsZSlyZXR1cm47aWYoZXZlbnQmJkRPTS5jb250YWlucyh0aGlzLmlubGluZUNv bW1lbnRGbHlvdXQsZXZlbnQuZ2V0UmVsYXRlZFRhcmdldCgpKSlyZXR1cm47dmFy IGI9dGhpcy5pbmxpbmVDb21tZW50SW5wdXQudmFsdWUudHJpbSgpO3ZhciBhPXRo aXMuaW5saW5lQ29tbWVudElucHV0LmdldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXIn KTtpZihiLmxlbmd0aD4wJiZiIT1hKXJldHVybjt0aGlzLmlubGluZUNvbW1lbnRG bHlvdXRWaXNpYmxlPWZhbHNlO0NTUy5oaWRlKHRoaXMuaW5saW5lQ29tbWVudEZs eW91dCk7fSxjbG9zZUlubGluZUNvbW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLmlubGlu ZUNvbW1lbnRGbHlvdXRWaXNpYmxlPWZhbHNlO3RoaXMuaW5saW5lQ29tbWVudEZs eW91dE9wZW49ZmFsc2U7Q1NTLmhpZGUodGhpcy5pbmxpbmVDb21tZW50Rmx5b3V0 KTt0aGlzLnJlc2V0SW5saW5lQ29tbWVudCgpO30sY29uY2VhbENvbW1lbnRCdXR0 b246ZnVuY3Rpb24oKXtDU1MuYWRkQ2xhc3ModGhpcy5pbmxpbmVDb21tZW50QnV0 dG9uLCdoaWRkZW5fZWxlbScpO0NTUy5zZXRTdHlsZSh0aGlzLmlubGluZUNvbW1l bnRJbnB1dCwnd2lkdGgnLHRoaXMudGV4dElucHV0V2lkdGhXaXRob3V0QnV0dG9u KydweCcpO0NTUy5zZXRTdHlsZSh0aGlzLmlubGluZUNvbW1lbnRJbnB1dCwnbWFy Z2luLXJpZ2h0JywwKTt9LHBvc2l0aW9uSW5saW5lQ29tbWVudEZseW91dDpmdW5j dGlvbigpe0NTUy5hZGRDbGFzcyh0aGlzLmlubGluZUNvbW1lbnRGbHlvdXQsJ2Nv bW1lbnRfd2lkZ2V0X29mZnNjcmVlbicpO0NTUy5yZW1vdmVDbGFzcyh0aGlzLmlu bGluZUNvbW1lbnRGbHlvdXQsJ2hpZGRlbl9lbGVtJyk7dmFyIGI9MDt2YXIgYT10 aGlzLmNvbXB1dGVCdXR0b25EaW1lbnNpb25zKCk7dmFyIGU9YS5oZWlnaHQ7dmFy IGQ9dGhpcy5ncmF5T3V0P2I6YisyMDt2YXIgZz1pbnRsX2xvY2FsZV9pc19ydGwo KT8ncmlnaHQnOidsZWZ0JztpZih0aGlzLnNob3dGYWNlcyl7dmFyIGs9RE9NLnNj cnkodGhpcy53aWRnZXQsJ3NwYW4uY29ubmVjdF93aWRnZXRfdGV4dCcpWzBdO3Zh ciBoPWludGxfbG9jYWxlX2lzX3J0bCgpPydwYWRkaW5nUmlnaHQnOidwYWRkaW5n TGVmdCc7dmFyIGw9Q1NTLmdldFN0eWxlKGssaCk7ZD10aGlzLmdyYXlPdXQ/Yjpi K3BhcnNlSW50KGwsMTApO3ZhciBpPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lv bnModGhpcy5zYW1wbGVDb25uZWN0aW9ucykueTtlPWktMzt9dmFyIGo9VmVjdG9y Mi5nZXRFbGVtZW50RGltZW5zaW9ucyh0aGlzLnN1bW1hcnlUZXh0KS55O2lmKGo+ MTUpZSs9MjtDU1Muc2V0U3R5bGUodGhpcy5pbmxpbmVDb21tZW50Rmx5b3V0LGcs ZCsncHgnKTtDU1Muc2V0U3R5bGUodGhpcy5pbmxpbmVDb21tZW50Rmx5b3V0LCd0 b3AnLCgtZSkrJ3B4Jyk7dmFyIG49VmVjdG9yMi5nZXRFbGVtZW50UG9zaXRpb24o dGhpcy53aWRnZXQsJ2RvY3VtZW50JykueDt2YXIgbT1WZWN0b3IyLmdldEVsZW1l bnREaW1lbnNpb25zKHRoaXMud2lkZ2V0KS54O3ZhciBvPW4rbS1kLTU7Q1NTLnNl dFN0eWxlKHRoaXMuaW5saW5lQ29tbWVudEZseW91dCwnd2lkdGgnLG8rJ3B4Jyk7 Q1NTLnJlbW92ZUNsYXNzKHRoaXMuaW5saW5lQ29tbWVudEJ1dHRvbiwnaGlkZGVu X2VsZW0nKTt2YXIgZj1WZWN0b3IyLmdldEVsZW1lbnREaW1lbnNpb25zKHRoaXMu aW5saW5lQ29tbWVudEJ1dHRvbikueDtDU1MuYWRkQ2xhc3ModGhpcy5pbmxpbmVD b21tZW50QnV0dG9uLCdoaWRkZW5fZWxlbScpO3ZhciBjPSh0aGlzLmlubGluZUNv bW1lbnRDbG9zZSk/MTU6MDt0aGlzLnRleHRJbnB1dFdpZHRoV2l0aG91dEJ1dHRv bj1vLTI0LWM7dGhpcy50ZXh0SW5wdXRXaWR0aFdpdGhCdXR0b249dGhpcy50ZXh0 SW5wdXRXaWR0aFdpdGhvdXRCdXR0b24tZi10aGlzLnRleHRJbnB1dE1hcmdpbldp dGhCdXR0b24tMTtDU1Muc2V0U3R5bGUodGhpcy5pbmxpbmVDb21tZW50SW5wdXQs J3dpZHRoJyx0aGlzLnRleHRJbnB1dFdpZHRoV2l0aG91dEJ1dHRvbisncHgnKTtD U1Muc2V0U3R5bGUodGhpcy5pbmxpbmVDb21tZW50SW5wdXQsJ21hcmdpbi1yaWdo dCcsMCk7Q1NTLnJlbW92ZUNsYXNzKHRoaXMuaW5saW5lQ29tbWVudEZseW91dCwn Y29tbWVudF93aWRnZXRfb2Zmc2NyZWVuJyk7Q1NTLmFkZENsYXNzKHRoaXMuaW5s aW5lQ29tbWVudEZseW91dCwnaGlkZGVuX2VsZW0nKTt9LHBvc3RVc2VyQ29tbWVu dDpmdW5jdGlvbihhLGMsZCl7dmFyIGI9e2hyZWY6dGhpcy5leHRlcm5hbFVybCxu b2RlX3R5cGU6dGhpcy5ub2RlVHlwZSxlZGdlX3R5cGU6dGhpcy5lZGdlVHlwZSxw YWdlX2lkOnRoaXMucGFnZUlkLGNvbm5lY3RfdGV4dDp0aGlzLmNvbm5lY3RUZXh0 LHN0b3J5X2ZiaWQ6dGhpcy5jb25uZWN0U3RvcnlGYmlkLGNvbW1lbnQ6YSx3aWRn ZXRfdHlwZTpkfHwneGZibWwnLG93bl9wcm9kdWN0OmN9O25ldyBBc3luY1JlcXVl c3QoKS5zZXRVUkkodGhpcy5nZXRDb21tZW50QWpheEVuZHBvaW50KCkpLnNldERh dGEoYikuc2V0TmVjdGFyTW9kdWxlRGF0YVNhZmUoKS5zZXROZWN0YXJJbXByZXNz aW9uSWRTYWZlKCkuc2VuZCgpO3RoaXMuY2xvc2VDb21tZW50V2lkZ2V0KCk7fSxj bG9zZUNvbW1lbnRXaWRnZXQ6ZnVuY3Rpb24oKXtpZih0aGlzLmNvbW1lbnRXaWRn ZXRPcGVuKXtkZWxldGUgdGhpcy5pbkdyYWNlUGVyaW9kO2RlbGV0ZSB0aGlzLmNv bW1lbnRXaWRnZXRJc0V4cGFuZGVkO3RoaXMuY29tbWVudFdpZGdldFZpc2libGU9 ZmFsc2U7dGhpcy5jb21tZW50V2lkZ2V0T3Blbj1mYWxzZTtVbnZlcmlmaWVkWEQu c2VuZCh7dHlwZTonZGlzbWlzc0VkZ2VDb21tZW50RGlhbG9nJ30pO319LHByZXNl bnRBZG1pblBhZ2U6ZnVuY3Rpb24oKXt2YXIgYT0nX2JsYW5rJzt3aW5kb3cub3Bl bih0aGlzLmFkbWluVXJsLnRvU3RyaW5nKCksYSk7fSxwcmVzZW50RXJyb3JEaWFs b2c6ZnVuY3Rpb24oKXtpZighdGhpcy5lcnJvci5lcnJvclVyaSlyZXR1cm47dmFy IGI9J19ibGFuayc7dmFyIGE9J3Rvb2xiYXI9MCwgc3RhdHVzPTAsIHdpZHRoPTk2 MCwgaGVpZ2h0PTMwMCc7d2luZG93Lm9wZW4odGhpcy5lcnJvci5lcnJvclVyaS50 b1N0cmluZygpLGIsYSk7fSxwcmVzZW50Q29uZmlybURpYWxvZzpmdW5jdGlvbigp e3ZhciBiPSdfYmxhbmsnO3ZhciBhPSd0b29sYmFyPTAsc3RhdHVzPTAsd2lkdGg9 NDUwLGhlaWdodD0yMDAsc2Nyb2xsYmFycz0wLGxvY2F0aW9uPTAsbWVudWJhcj0w JztpZighd2luZG93LmNvbmZpcm1EaWFsb2dSZXR1cm4pd2luZG93LmNvbmZpcm1E aWFsb2dSZXR1cm49e307d2luZG93LmNvbmZpcm1EaWFsb2dSZXR1cm5bdGhpcy53 aWRnZXRJRF09dGhpczt2YXIgYz10aGlzLmdldENvbmZpcm1VUkwoKTt3aW5kb3cu b3BlbihjLGIsYSk7fSxyZXR1cm5Gcm9tQ29uZmlybURpYWxvZzpmdW5jdGlvbihh KXtpZihhKXt0aGlzLnNob3dDb25maXJtPW51bGw7dGhpcy5jb25maXJtZWRDb25u ZWN0PWE7dGhpcy5jb25uZWN0VG9Ob2RlKCF0aGlzLmFscmVhZHlDb25uZWN0ZWQp O31lbHNlIHRoaXMudXBkYXRlV2lkZ2V0KHtub3dDb25uZWN0ZWQ6dGhpcy5hbHJl YWR5Q29ubmVjdGVkLHNob3dDb25maXJtOm51bGwsaXNBZG1pbjp0aGlzLnZpZXdl cklzQWRtaW59LGZhbHNlKTt9LHN5bmNXaWRnZXREaXNwbGF5OmZ1bmN0aW9uKCl7 dmFyIGE9dGhpcy5hbHJlYWR5Q29ubmVjdGVkO3RoaXMuc2V0QnV0dG9uU3RhdGUo YSk7dGhpcy5zaG93RWxlbWVudElmKHRoaXMuY29ubmVjdGVkTWVzc2FnZSxhKTt0 aGlzLnNob3dFbGVtZW50SWYodGhpcy5ub3RDb25uZWN0ZWRNZXNzYWdlLCFhKTtp Zih0aGlzLmFkbWluU3BhbnMpZm9yKHZhciBiPTA7Yjx0aGlzLmFkbWluU3BhbnMu bGVuZ3RoO2IrKyl0aGlzLnNob3dFbGVtZW50SWYodGhpcy5hZG1pblNwYW5zW2Jd LHRoaXMudmlld2VySXNBZG1pbik7aWYodGhpcy5lcnJvclNwYW5zKWZvcih2YXIg Yz0wO2M8dGhpcy5lcnJvclNwYW5zLmxlbmd0aDtjKyspdGhpcy5zaG93RWxlbWVu dElmKHRoaXMuZXJyb3JTcGFuc1tjXSx0aGlzLmVycm9yJiYodGhpcy52aWV3ZXJJ c0FkbWlufHx0aGlzLnNob3dFcnJvcikpO2Zvcih2YXIgZj0wO2Y8dGhpcy5jb25m aXJtU3BhbnMubGVuZ3RoO2YrKyl0aGlzLnNob3dFbGVtZW50SWYodGhpcy5jb25m aXJtU3BhbnNbZl0sIXRoaXMuYWxyZWFkeUNvbm5lY3RlZCYmdGhpcy5zaG93Q29u ZmlybSk7Zm9yKHZhciBkPTA7ZDx0aGlzLnVubGlrZVNwYW5zLmxlbmd0aDtkKysp dGhpcy5zaG93RWxlbWVudElmKHRoaXMudW5saWtlU3BhbnNbZF0sdGhpcy5hbHJl YWR5Q29ubmVjdGVkKTtpZih0aGlzLnNoYXJlQ29tbWVudFNwYW5zKWZvcih2YXIg ZT0wO2U8dGhpcy5zaGFyZUNvbW1lbnRTcGFucy5sZW5ndGg7ZSsrKXRoaXMuc2hv d0VsZW1lbnRJZih0aGlzLnNoYXJlQ29tbWVudFNwYW5zW2VdLGEpO3RoaXMuc2hv d0VsZW1lbnRJZih0aGlzLmNvbm5lY3RCdXR0b24sKCF0aGlzLnVzZURpc2Nvbm5l Y3RMaW5rfHwhYSkmJiF0aGlzLnNob3dDb25maXJtKTtpZih0aGlzLmxheW91dD09 PUV4dGVybmFsTm9kZUNvbm5lY3RXaWRnZXQuQk9YX0NPVU5UX0xBWU9VVCl7dGhp cy5tYW5hZ2VCb3hDb3VudEJ1dHRvbkFuaW1hdGlvbihhKTt9ZWxzZSBpZih0aGlz LmxheW91dD09PUV4dGVybmFsTm9kZUNvbm5lY3RXaWRnZXQuQlVUVE9OX0NPVU5U X0xBWU9VVCl7dGhpcy5tYW5hZ2VCdXR0b25Db3VudEJ1dHRvbkFuaW1hdGlvbihh KTt9ZWxzZSBpZih0aGlzLmxheW91dD09PUV4dGVybmFsTm9kZUNvbm5lY3RXaWRn ZXQuU0lNUExFX0xBWU9VVCl7dGhpcy5tYW5hZ2VTaW1wbGVCdXR0b25BbmltYXRp b24oYSk7fWVsc2UgdGhpcy5tYW5hZ2VTdGFuZGFyZEJ1dHRvbkFuaW1hdGlvbihh KTtpZighdGhpcy5sb2dnZWRJblVzZXJQaG90b0RpdilyZXR1cm47aWYoYSl7dGhp cy5zbGlkZVVzZXJQaG90b0luKHRoaXMubG9nZ2VkSW5Vc2VyUGhvdG9EaXYpO31l bHNlIHRoaXMuc2xpZGVVc2VyUGhvdG9PdXQodGhpcy5sb2dnZWRJblVzZXJQaG90 b0Rpdik7fSxtYW5hZ2VTdGFuZGFyZEJ1dHRvbkFuaW1hdGlvbjpmdW5jdGlvbihh KXtpZih0aGlzLmdyYXlPdXQpcmV0dXJuO2lmKHRoaXMuYWxyZWFkeUNvbm5lY3Rl ZHx8dGhpcy5zaG93Q29uZmlybSl7dGhpcy5oaWRlQnV0dG9uKHRydWUpO31lbHNl IHRoaXMuaGlkZUJ1dHRvbihmYWxzZSk7fSxzZXRCdXR0b25TdGF0ZTpmdW5jdGlv bihhKXtpZihhKXtDU1MucmVtb3ZlQ2xhc3ModGhpcy5jb25uZWN0QnV0dG9uLCds aWtlX2J1dHRvbl9ub19saWtlJyk7Q1NTLmFkZENsYXNzKHRoaXMuY29ubmVjdEJ1 dHRvbiwnbGlrZV9idXR0b25fbGlrZScpO3RoaXMuZml4SUVCdXR0b25Eb3VibGVM aW5lQnVnKCk7fWVsc2V7Q1NTLmFkZENsYXNzKHRoaXMuY29ubmVjdEJ1dHRvbiwn bGlrZV9idXR0b25fbm9fbGlrZScpO0NTUy5yZW1vdmVDbGFzcyh0aGlzLmNvbm5l Y3RCdXR0b24sJ2xpa2VfYnV0dG9uX2xpa2UnKTt9fSxmaXhJRUJ1dHRvbkRvdWJs ZUxpbmVCdWc6ZnVuY3Rpb24oKXtpZih0aGlzLmxheW91dD09PUV4dGVybmFsTm9k ZUNvbm5lY3RXaWRnZXQuU1RBTkRBUkRfTEFZT1VUJiZ1YS5pZSgpPD03JiYhdGhp cy5oYXNCZWVuRml4ZWQpe3ZhciBhPXRoaXMuY29tcHV0ZUJ1dHRvbkRpbWVuc2lv bnNXaXRoUGFkZGluZygpO0NTUy5zZXRTdHlsZSh0aGlzLmNvbm5lY3RCdXR0b24s J3dpZHRoJyxhLndpZHRoKzEpO3RoaXMuaGFzQmVlbkZpeGVkPXRydWU7fX0saGlk ZUJ1dHRvbjpmdW5jdGlvbihhKXtpZih0aGlzLmxheW91dCE9PSdzdGFuZGFyZCcp cmV0dXJuO2lmKHRoaXMub0FuaW1hdGVCbGluZCl0aGlzLm9BbmltYXRlQmxpbmQu c3RvcCgpO3RoaXMub0FuaW1hdGVCbGluZD1hbmltYXRpb24odGhpcy5jb25uZWN0 QnV0dG9uU2xpZGVyKS5kdXJhdGlvbigxNTApO3ZhciBjPTEsYj1pbnRsX2xvY2Fs ZV9pc19ydGwoKSxkPWI/J21hcmdpblJpZ2h0JzonbWFyZ2luTGVmdCcsZT1iPydt YXJnaW5MZWZ0JzonbWFyZ2luUmlnaHQnO2lmKGEpe0NTUy5hZGRDbGFzcyh0aGlz LmNvbm5lY3RCdXR0b25Db250YWluZXIsJ2hpZGRlbicpO3RoaXMub0FuaW1hdGVC bGluZC5vbmRvbmUoZnVuY3Rpb24oKXtDU1Muc2V0U3R5bGUodGhpcy5jb25uZWN0 QnV0dG9uQ29udGFpbmVyLGQsJzJweCcpO0NTUy5zZXRTdHlsZSh0aGlzLmNvbm5l Y3RCdXR0b25Db250YWluZXIsJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTtDU1MuYWRk Q2xhc3ModGhpcy5jb25maXJtYXRpb25DZWxsLCdjb25uZWN0X2NvbmZpcm1hdGlv bl9jZWxsX2xpa2UnKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5jb25maXJtYXRpb25D ZWxsLCdjb25uZWN0X2NvbmZpcm1hdGlvbl9jZWxsX25vX2xpa2UnKTt0aGlzLm9B bmltYXRlQmxpbmQ9bnVsbDt9LmJpbmQodGhpcykpO31lbHNle0NTUy5zZXRTdHls ZSh0aGlzLmNvbm5lY3RCdXR0b25Db250YWluZXIsZCwnMHB4Jyk7Yz1WZWN0b3Iy LmdldEVsZW1lbnREaW1lbnNpb25zKHRoaXMuY29ubmVjdEJ1dHRvbikueDt0aGlz Lm9BbmltYXRlQmxpbmQub25kb25lKGZ1bmN0aW9uKCl7Q1NTLnNldFN0eWxlKHRo aXMuY29ubmVjdEJ1dHRvblNsaWRlciwnb3ZlcmZsb3cnLCd2aXNpYmxlJyk7Q1NT LnNldFN0eWxlKHRoaXMuY29ubmVjdEJ1dHRvblNsaWRlciwnd2lkdGgnLCdhdXRv Jyk7Q1NTLnJlbW92ZUNsYXNzKHRoaXMuY29uZmlybWF0aW9uQ2VsbCwnY29ubmVj dF9jb25maXJtYXRpb25fY2VsbF9saWtlJyk7Q1NTLmFkZENsYXNzKHRoaXMuY29u ZmlybWF0aW9uQ2VsbCwnY29ubmVjdF9jb25maXJtYXRpb25fY2VsbF9ub19saWtl Jyk7Q1NTLnNldFN0eWxlKHRoaXMuY29ubmVjdEJ1dHRvbkNvbnRhaW5lciwndmlz aWJpbGl0eScsJ3Zpc2libGUnKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5jb25uZWN0 QnV0dG9uQ29udGFpbmVyLCdoaWRkZW4nKTt0aGlzLm9BbmltYXRlQmxpbmQ9bnVs bDt9LmJpbmQodGhpcykpO310aGlzLm9BbmltYXRlQmxpbmQudG8oJ3dpZHRoJyxj KS5ibGluZCgpLmdvKCk7fSxzaG93RWxlbWVudElmOmZ1bmN0aW9uKGEsYil7aWYo IWEpcmV0dXJuO2lmKGIpe0NTUy5zaG93KGEpO31lbHNlIENTUy5oaWRlKGEpO30s c2xpZGVVc2VyUGhvdG9JbjpmdW5jdGlvbihiKXtpZighQ1NTLmhhc0NsYXNzKGIs J2Nvbm5lY3Rfd2lkZ2V0X3VzZXJfbm90X2Nvbm5lY3RlZCcpKXJldHVybjt2YXIg YT1DU1MuZ2V0U3R5bGUoYiwnd2lkdGgnKTtDU1Muc2V0U3R5bGUoYiwnd2lkdGgn LDApO0NTUy5zZXRTdHlsZShiLCdvcGFjaXR5JywwKTtDU1MucmVtb3ZlQ2xhc3Mo YiwnY29ubmVjdF93aWRnZXRfdXNlcl9ub3RfY29ubmVjdGVkJyk7YW5pbWF0aW9u KGIpLnRvKCd3aWR0aCcsYSkuZHVyYXRpb24oMTAwKS5jaGVja3BvaW50KCkudG8o J29wYWNpdHknLDEpLmR1cmF0aW9uKDQwMCkuZ28oKTt9LHNsaWRlVXNlclBob3Rv T3V0OmZ1bmN0aW9uKGEpe2lmKENTUy5oYXNDbGFzcyhhLCdjb25uZWN0X3dpZGdl dF91c2VyX25vdF9jb25uZWN0ZWQnKSlyZXR1cm47YW5pbWF0aW9uKGEpLnRvKCdv cGFjaXR5JywwKS5kdXJhdGlvbigxMDApLmNoZWNrcG9pbnQoLjI1KS50bygnd2lk dGgnLDApLmR1cmF0aW9uKDEwMCkub25kb25lKGZ1bmN0aW9uKCl7Q1NTLmFkZENs YXNzKGEsJ2Nvbm5lY3Rfd2lkZ2V0X3VzZXJfbm90X2Nvbm5lY3RlZCcpO0NTUy5z ZXRTdHlsZShhLCd3aWR0aCcsbnVsbCk7fSkuZ28oKTt9LHByaW1hcnlMaWtlQnV0 dG9uT25DbGljazpmdW5jdGlvbihldmVudCl7aWYodGhpcy5ncmF5T3V0JiZ0aGlz LmFscmVhZHlDb25uZWN0ZWQmJiF0aGlzLm1vYmlsZSlyZXR1cm47dGhpcy5jb25u ZWN0VG9Ob2RlT25DbGljayhldmVudCk7aWYodGhpcy50b21ic3RvbmVDcm9zcyYm dGhpcy5hbHJlYWR5Q29ubmVjdGVkKURPTS5yZXBsYWNlKHRoaXMudG9tYnN0b25l Q3Jvc3MsSFRNTCgnPGRpdiBjbGFzcz0idG9tYnN0b25lX2Nyb3NzIHRvbWJzdG9u ZV9jcm9zc19zdGF0aWMiIC8+JykpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlz LnRvbWJzdG9uZUNyb3NzPURPTS5maW5kKHRoaXMud2lkZ2V0LCdkaXYudG9tYnN0 b25lX2Nyb3NzJyk7Q1NTLnJlbW92ZUNsYXNzKHRoaXMudG9tYnN0b25lQ3Jvc3Ms J3RvbWJzdG9uZV9jcm9zc19zdGF0aWMnKTtFdmVudC5saXN0ZW4odGhpcy50b21i c3RvbmVDcm9zcywnY2xpY2snLHRoaXMuY29ubmVjdFRvTm9kZU9uQ2xpY2suYmlu ZCh0aGlzKSk7fS5iaW5kKHRoaXMpLDEwMDApO30sX2NsaWNrTG9ja2VkOmZhbHNl LGNvbm5lY3RUb05vZGVPbkNsaWNrOmZ1bmN0aW9uKGV2ZW50KXtFdmVudC5raWxs KGV2ZW50KTtpZighdGhpcy5fY2xpY2tMb2NrZWQpe3RoaXMuX2NsaWNrTG9ja2Vk PXRydWU7c2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuX2NsaWNrTG9ja2VkPWZh bHNlO30uYmluZCh0aGlzKSwxMDAwKTtpZih0aGlzLnZpZXdlcklEPT0wfHx0aGlz LnVzZXJPcHRlZE91dCl7dGhpcy5wcmVzZW50T3B0SW4oKTt9ZWxzZSB0aGlzLmNv bm5lY3RUb05vZGUoIXRoaXMuYWxyZWFkeUNvbm5lY3RlZCk7fX0sY29ubmVjdFRv Tm9kZTpmdW5jdGlvbihkKXtpZighZCl7aWYodGhpcy5sYXlvdXQ9PT1FeHRlcm5h bE5vZGVDb25uZWN0V2lkZ2V0LlNJTVBMRV9MQVlPVVQpcmV0dXJuO2lmKHRoaXMu bGF5b3V0PT09RXh0ZXJuYWxOb2RlQ29ubmVjdFdpZGdldC5TVEFOREFSRF9MQVlP VVQmJiF0aGlzLnVzaW5nQ29ubmVjdExpYnJhcnkpe0NTUy5hZGRDbGFzcyh0aGlz LnVzZXJBY3Rpb25UZXh0U3BhbiwnaGlkZGVuX2VsZW0nKTtDU1MucmVtb3ZlQ2xh c3ModGhpcy5zdW1tYXJ5VGV4dFNwYW4sJ2hpZGRlbl9lbGVtJyk7Q1NTLnNldFN0 eWxlKHRoaXMuc3VtbWFyeVRleHRTcGFuLCdvcGFjaXR5JywxKTt9aWYodGhpcy5z aGFyZUNvbW1lbnRTcGFucylmb3IodmFyIGI9MDtiPHRoaXMuc2hhcmVDb21tZW50 U3BhbnMubGVuZ3RoO2IrKylDU1MuYWRkQ2xhc3ModGhpcy5zaGFyZUNvbW1lbnRT cGFuc1tiXSwnaGlkZGVuX2VsZW0nKTtpZih0aGlzLmNvbW1lbnRXaWRnZXRPcGVu KXt0aGlzLmNsb3NlQ29tbWVudFdpZGdldCgpO31lbHNlIGlmKHRoaXMuaW5saW5l Q29tbWVudEZseW91dE9wZW4pdGhpcy5jbG9zZUlubGluZUNvbW1lbnQoKTt9dGhp cy51cGRhdGVXaWRnZXQoe25vd0Nvbm5lY3RlZDohdGhpcy5hbHJlYWR5Q29ubmVj dGVkLGlzQWRtaW46dGhpcy52aWV3ZXJJc0FkbWlufSx0cnVlKTt2YXIgYT17aHJl Zjp0aGlzLmV4dGVybmFsVXJsLG5vZGVfdHlwZTp0aGlzLm5vZGVUeXBlLGVkZ2Vf dHlwZTp0aGlzLmVkZ2VUeXBlLHBhZ2VfaWQ6dGhpcy5wYWdlSWQsbGF5b3V0OnRo aXMubGF5b3V0LGlzX3BlcnNvbmFsaXplZDp0aGlzLmlzUGVyc29uYWxpemVkLHNo b3dfY2FwdGNoYTp0aGlzLnNob3dDYXB0Y2hhLGNvbm5lY3RfdGV4dDp0aGlzLmNv bm5lY3RUZXh0LHJlZjp0aGlzLnJlZixub3dfY29ubmVjdGVkOmQscG9zdF9mb3Jt X2lkOiQoJ3Bvc3RfZm9ybV9pZCcpLnZhbHVlLGlmcmFtZV9yZWZlcmVyOnRoaXMu aWZyYW1lUmVmZXJlcn07aWYodGhpcy5jb25maXJtZWRDb25uZWN0KWEuY29uZmly bT0xO25ldyBBc3luY1JlcXVlc3QoKS5zZXRVUkkodGhpcy5nZXRBamF4RW5kcG9p bnQoKSkuc2V0SGFuZGxlcih0aGlzLnN5bmNXaWRnZXRXaXRoU2VydmVyLmJpbmQo dGhpcykpLnNldERhdGEoYSkuc2V0TmVjdGFyTW9kdWxlRGF0YVNhZmUoKS5zZXRO ZWN0YXJJbXByZXNzaW9uSWRTYWZlKCkuc2VuZCgpO2lmKGQpe2lmKHRoaXMubGF5 b3V0PT09RXh0ZXJuYWxOb2RlQ29ubmVjdFdpZGdldC5CT1hfQ09VTlRfTEFZT1VU KXRoaXMucmVxdWlyZXNNb3VzZUxlYXZlRXZlbnQ9dHJ1ZTtpZih0aGlzLmxheW91 dD09PUV4dGVybmFsTm9kZUNvbm5lY3RXaWRnZXQuU1RBTkRBUkRfTEFZT1VUJiYh dGhpcy51c2luZ0Nvbm5lY3RMaWJyYXJ5KXtDU1Muc2V0U3R5bGUodGhpcy51c2Vy QWN0aW9uVGV4dFNwYW4sJ29wYWNpdHknLDEpO0NTUy5yZW1vdmVDbGFzcyh0aGlz LnVzZXJBY3Rpb25UZXh0U3BhbiwnaGlkZGVuX2VsZW0nKTtDU1MuYWRkQ2xhc3Mo dGhpcy5zdW1tYXJ5VGV4dFNwYW4sJ2hpZGRlbl9lbGVtJyk7RXZlbnQubGlzdGVu KHRoaXMud2lkZ2V0LCdtb3VzZWxlYXZlJyx0aGlzLnRyYW5zaXRpb25CZXR3ZWVu TWVzc2FnZXMuYmluZCh0aGlzKSk7fWlmKHRoaXMuc2hhcmVDb21tZW50U3BhbnMp e2Zvcih2YXIgYz0wO2M8dGhpcy5zaGFyZUNvbW1lbnRTcGFucztjKyspQ1NTLnJl bW92ZUNsYXNzKHRoaXMuc2hhcmVDb21tZW50U3BhbnNbY10sJ2hpZGRlbl9lbGVt Jyk7fWVsc2UgaWYodGhpcy5zdXBwb3J0Q29tbWVudGluZyl0aGlzLnByZXNlbnRD b21tZW50aW5nT3B0aW9uKCk7dGhpcy5yZXBvc2l0aW9uRmFjZXBpbGVWZXJ0aWNh bGx5KCk7fX0sdHJhbnNpdGlvbkJldHdlZW5NZXNzYWdlczpmdW5jdGlvbihldmVu dCl7aWYoIXRoaXMuYWxyZWFkeUNvbm5lY3RlZHx8Q1NTLmhhc0NsYXNzKHRoaXMu dXNlckFjdGlvblRleHRTcGFuLCdoaWRkZW5fZWxlbScpKXJldHVybjthbmltYXRp b24odGhpcy51c2VyQWN0aW9uVGV4dFNwYW4pLnRvKCdvcGFjaXR5JywwKS5kdXJh dGlvbig1MDApLm9uZG9uZShmdW5jdGlvbigpe0NTUy5hZGRDbGFzcyh0aGlzLnVz ZXJBY3Rpb25UZXh0U3BhbiwnaGlkZGVuX2VsZW0nKTtDU1Muc2V0U3R5bGUodGhp cy5zdW1tYXJ5VGV4dFNwYW4sJ29wYWNpdHknLDApO0NTUy5yZW1vdmVDbGFzcyh0 aGlzLnN1bW1hcnlUZXh0U3BhbiwnaGlkZGVuX2VsZW0nKTthbmltYXRpb24odGhp cy5zdW1tYXJ5VGV4dFNwYW4pLnRvKCdvcGFjaXR5JywxKS5kdXJhdGlvbig1MDAp Lm9uZG9uZShmdW5jdGlvbigpe3RoaXMucmVwb3NpdGlvbkZhY2VwaWxlVmVydGlj YWxseSgpO30uYmluZCh0aGlzKSkuZ28oKTt0aGlzLnBvc2l0aW9uSW5saW5lQ29t bWVudEZseW91dCgpO30uYmluZCh0aGlzKSkuZ28oKTt9LHByZXNlbnRDb21tZW50 aW5nT3B0aW9uOmZ1bmN0aW9uKCl7QXJiaXRlci5pbmZvcm0oJ3BsYXRmb3JtL3Nv Y2lhbHBsdWdpbnMvZGlhbG9nJyx7Y29udHJvbGxlcklEOnRoaXMud2lkZ2V0SUQs ZXZlbnQ6J29wZW4nfSk7aWYodGhpcy51c2luZ0Nvbm5lY3RMaWJyYXJ5KXtFeHRl cm5hbE5vZGVDb25uZWN0V2lkZ2V0LnNlbGY9dGhpczt2YXIgYT17dHlwZToncHJl c2VudEVkZ2VDb21tZW50RGlhbG9nJyxtYXN0ZXJGcmFtZU5hbWU6d2luZG93Lm5h bWUsdmVyc2lvbjoyfTtpZih0aGlzLmxheW91dD09RXh0ZXJuYWxOb2RlQ29ubmVj dFdpZGdldC5CT1hfQ09VTlRfTEFZT1VUKXthLnByZUNvbXB1dGVkV2lkdGhPZmZz ZXQ9dGhpcy5jb21wdXRlQnV0dG9uRGltZW5zaW9uc1dpdGhQYWRkaW5nKCkud2lk dGg7aWYoIWludGxfbG9jYWxlX2lzX3J0bCgpKWEucHJlQ29tcHV0ZWRXaWR0aE9m ZnNldCs9ODt9aWYodGhpcy5zb2NpYWxCYXIpe2EubGVmdD1wYXJzZUludChDU1Mu Z2V0U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2ZpbGUnKSwnd2lk dGgnKSwxMCkrMTt9ZWxzZSBpZih0aGlzLmhhc1NlbmQmJnRoaXMubGF5b3V0PT1F eHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0LlNUQU5EQVJEX0xBWU9VVClhLnByZUNv bXB1dGVkV2lkdGhPZmZzZXQ9dGhpcy5pbnZlcnRlZEJ1dHRvbnM/MDo2NTtVbnZl cmlmaWVkWEQuc2VuZChhKTt0aGlzLmNvbW1lbnRXaWRnZXRPcGVuPXRydWU7dGhp cy5jb21tZW50V2lkZ2V0VmlzaWJsZT10cnVlO3RoaXMuY29tbWVudFdpZGdldEV4 cGFuZGVkPXRydWU7fWVsc2UgaWYodGhpcy51c2luZ0lubGluZUNvbW1lbnRpbmcp aWYoIXRoaXMuaW5saW5lQ29tbWVudExpc3RlbmVyc0luaXRpYWxpemVkKXt0aGlz LnVud3JhcENvbW1lbnQoKTt0aGlzLmluaXRpYWxpemVJbmxpbmVDb21tZW50TGlz dGVuZXJzKCk7dGhpcy5vcGVuSW5saW5lQ29tbWVudEZseW91dCgpO3RoaXMucG9z aXRpb25JbmxpbmVDb21tZW50Rmx5b3V0KCk7dGhpcy5pbmxpbmVDb21tZW50TGlz dGVuZXJzSW5pdGlhbGl6ZWQ9dHJ1ZTt9ZWxzZXt0aGlzLnBvc2l0aW9uSW5saW5l Q29tbWVudEZseW91dCgpO3RoaXMub3BlbklubGluZUNvbW1lbnRGbHlvdXQoKTt9 fSx1bndyYXBDb21tZW50OmZ1bmN0aW9uKCl7aWYodGhpcy51bndyYXBDb21tZW50 LmRvbmUpcmV0dXJuO3ZhciBiPSQoJ2Nvbm5lY3Qtd2lkZ2V0LWNvbW1lbnQtYm94 LW1hcmt1cCcpLGE9RXh0ZXJuYWxOb2RlQ29ubmVjdFdpZGdldC5jb21tZW50TWFy a3VwO2IuaW5uZXJIVE1MPWE7dGhpcy51bndyYXBDb21tZW50LmRvbmU9dHJ1ZTt9 LGluaXRpYWxpemVJbmxpbmVDb21tZW50TGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhp cy5pbmxpbmVDb21tZW50Rmx5b3V0PURPTS5maW5kKHRoaXMud2lkZ2V0LCcuY29u bmVjdF93aWRnZXRfY29tbWVudF9ib3gnKTt0aGlzLmlubGluZUNvbW1lbnRJbnB1 dD1ET00uZmluZCh0aGlzLmlubGluZUNvbW1lbnRGbHlvdXQsJy5jb25uZWN0X3dp ZGdldF9jb21tZW50X3RleHRpbnB1dCcpO3RoaXMuaW5saW5lQ29tbWVudEJ1dHRv bj1ET00uZmluZCh0aGlzLmlubGluZUNvbW1lbnRGbHlvdXQsJy5jb25uZWN0X3dp ZGdldF9jb21tZW50X2J1dHRvbicpO3RoaXMuaW5saW5lQ29tbWVudENsb3NlPURP TS5zY3J5KHRoaXMuaW5saW5lQ29tbWVudEZseW91dCwnLmNvbm5lY3Rfd2lkZ2V0 X2NvbW1lbnRfY2xvc2VfYnV0dG9uJyk7aWYodGhpcy5pbmxpbmVDb21tZW50Q2xv c2UubGVuZ3RoPjApdGhpcy5pbmxpbmVDb21tZW50Q2xvc2U9dGhpcy5pbmxpbmVD b21tZW50Q2xvc2VbMF07dGhpcy5jb21tZW50QnV0dG9uSXNBY3RpdmU9ZmFsc2U7 RXZlbnQubGlzdGVuKHRoaXMuaW5saW5lQ29tbWVudElucHV0LCdrZXl1cCcsdGhp cy5jb25kaXRpb25hbGx5QWN0aXZhdGVCdXR0b24uYmluZCh0aGlzKSk7RXZlbnQu bGlzdGVuKHRoaXMuaW5saW5lQ29tbWVudElucHV0LCdmb2N1cycsZnVuY3Rpb24o KXt0aGlzLmlubGluZUNvbW1lbnRGb2N1c2VkPXRydWU7dGhpcy5leHBvc2VDb21t ZW50QnV0dG9uKCk7fS5iaW5kKHRoaXMpKTtFdmVudC5saXN0ZW4odGhpcy5pbmxp bmVDb21tZW50QnV0dG9uLCdjbGljaycsdGhpcy51cGRhdGVDb25uZWN0aW9uV2l0 aENvbW1lbnQuYmluZCh0aGlzKSk7RXZlbnQubGlzdGVuKHRoaXMuaW5saW5lQ29t bWVudElucHV0LCdibHVyJyxmdW5jdGlvbigpe3RoaXMuaW5saW5lQ29tbWVudEZv Y3VzZWQ9ZmFsc2U7dGhpcy5oaWRlSW5saW5lQ29tbWVudCgpO30uYmluZCh0aGlz KSk7RXZlbnQubGlzdGVuKHRoaXMud2lkZ2V0LCdtb3VzZW91dCcsdGhpcy5oaWRl SW5saW5lQ29tbWVudC5iaW5kKHRoaXMpKTtFdmVudC5saXN0ZW4odGhpcy53aWRn ZXQsJ21vdXNlb3ZlcicsdGhpcy5zaG93SW5saW5lQ29tbWVudC5iaW5kKHRoaXMp KTtpZih0aGlzLmlubGluZUNvbW1lbnRDbG9zZSlFdmVudC5saXN0ZW4odGhpcy5p bmxpbmVDb21tZW50Q2xvc2UsJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7Zm9yKHZh ciBhPTA7YTx0aGlzLnNoYXJlQ29tbWVudFNwYW5zLmxlbmd0aDthKyspQ1NTLnJl bW92ZUNsYXNzKHRoaXMuc2hhcmVDb21tZW50U3BhbnNbYV0sJ2hpZGRlbl9lbGVt Jyk7dGhpcy5jbG9zZUlubGluZUNvbW1lbnQoKTt9LmJpbmQodGhpcykpO30sZXhw b3NlQ29tbWVudEJ1dHRvbjpmdW5jdGlvbihldmVudCl7aWYoIUNTUy5oYXNDbGFz cyh0aGlzLmlubGluZUNvbW1lbnRCdXR0b24sJ2hpZGRlbl9lbGVtJykpcmV0dXJu O0NTUy5yZW1vdmVDbGFzcyh0aGlzLmlubGluZUNvbW1lbnRCdXR0b24sJ2hpZGRl bl9lbGVtJyk7Q1NTLnNldFN0eWxlKHRoaXMuaW5saW5lQ29tbWVudElucHV0LCd3 aWR0aCcsdGhpcy50ZXh0SW5wdXRXaWR0aFdpdGhCdXR0b24rJ3B4Jyk7Q1NTLnNl dFN0eWxlKHRoaXMuaW5saW5lQ29tbWVudElucHV0LCdtYXJnaW4tcmlnaHQnLHRo aXMudGV4dElucHV0TWFyZ2luV2l0aEJ1dHRvbisncHgnKTt9LG9wZW5JbmxpbmVD b21tZW50Rmx5b3V0OmZ1bmN0aW9uKCl7Q1NTLnNob3codGhpcy5pbmxpbmVDb21t ZW50Rmx5b3V0KTt0aGlzLmlubGluZUNvbW1lbnRGbHlvdXRPcGVuPXRydWU7dGhp cy5pbmxpbmVDb21tZW50Rmx5b3V0VmlzaWJsZT10cnVlO30sbWFuYWdlQm94Q291 bnRCdXR0b25BbmltYXRpb246ZnVuY3Rpb24oYSl7aWYoYSYmIXRoaXMuc2hvd0Nv bmZpcm0pe3RoaXMuYW5pbWF0ZUJveENvdW50QnV0dG9uRGlzYXBwZWFyYW5jZSgp O31lbHNlIHRoaXMuYW5pbWF0ZUJveENvdW50QnV0dG9uUmVhcHBlYXJhbmNlKCk7 fSxhbmltYXRlQm94Q291bnRCdXR0b25EaXNhcHBlYXJhbmNlOmZ1bmN0aW9uKCl7 aWYodGhpcy5ncmF5T3V0KXJldHVybjtDU1MuYWRkQ2xhc3ModGhpcy5jb25uZWN0 QnV0dG9uLCdoaWRkZW5fZWxlbScpO0NTUy5zZXRTdHlsZSh0aGlzLm51bWJlckNs b3VkRXh0ZW5zaW9uLCdvcGFjaXR5JywwKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5u dW1iZXJDbG91ZEV4dGVuc2lvbiwnaGlkZGVuX2VsZW0nKTtDU1MuYWRkQ2xhc3Mo dGhpcy5udW1iZXJDbG91ZE51YiwnaGlkZGVuX2VsZW0nKTtDU1MuYWRkQ2xhc3Mo dGhpcy5udW1iZXJDbG91ZFVubGlrZVNwYW4sJ2hpZGRlbl9lbGVtJyk7Q1NTLnJl bW92ZUNsYXNzKHRoaXMubnVtYmVyQ2xvdWRSZW1pbmRlclNwYW4sJ2hpZGRlbl9l bGVtJyk7YW5pbWF0aW9uKHRoaXMubnVtYmVyQ2xvdWQpLnRvKCdoZWlnaHQnLHRo aXMuZXhwYW5kZWROdW1iZXJDbG91ZEhlaWdodCkuZHVyYXRpb24oMTAwKS5vbmRv bmUoZnVuY3Rpb24oKXthbmltYXRpb24odGhpcy5udW1iZXJDbG91ZEV4dGVuc2lv bikuZnJvbSgnb3BhY2l0eScsMCkudG8oJ29wYWNpdHknLDEpLmR1cmF0aW9uKDEw MCkuZ28oKTt9LmJpbmQodGhpcykpLmdvKCk7fSxhbmltYXRlQm94Q291bnRCdXR0 b25SZWFwcGVhcmFuY2U6ZnVuY3Rpb24oKXtDU1MuYWRkQ2xhc3ModGhpcy5udW1i ZXJDbG91ZEV4dGVuc2lvbiwnaGlkZGVuX2VsZW0nKTthbmltYXRpb24odGhpcy5u dW1iZXJDbG91ZCkudG8oJ2hlaWdodCcsdGhpcy5jb2xsYXBzZWROdW1iZXJDbG91 ZEhlaWdodCkuZHVyYXRpb24oNzUpLm9uZG9uZShmdW5jdGlvbigpe2lmKHRoaXMu c2hvd0NvbmZpcm0pe2Zvcih2YXIgYT0wO2E8dGhpcy5jb25maXJtU3BhbnMubGVu Z3RoO2ErKylDU1MucmVtb3ZlQ2xhc3ModGhpcy5jb25maXJtU3BhbnNbYV0sJ2hp ZGRlbl9lbGVtJyk7fWVsc2V7Q1NTLnNldFN0eWxlKHRoaXMuY29ubmVjdEJ1dHRv biwnb3BhY2l0eScsMCk7Q1NTLnJlbW92ZUNsYXNzKHRoaXMuY29ubmVjdEJ1dHRv biwnaGlkZGVuX2VsZW0nKTthbmltYXRpb24odGhpcy5jb25uZWN0QnV0dG9uKS5m cm9tKCdvcGFjaXR5JywwKS50bygnb3BhY2l0eScsMSkuZHVyYXRpb24oNzUpLm9u ZG9uZShmdW5jdGlvbigpe0NTUy5zZXRTdHlsZSh0aGlzLm51bWJlckNsb3VkTnVi LCdvcGFjaXR5JywwKTtDU1MucmVtb3ZlQ2xhc3ModGhpcy5udW1iZXJDbG91ZE51 YiwnaGlkZGVuX2VsZW0nKTthbmltYXRpb24odGhpcy5udW1iZXJDbG91ZE51Yiku ZnJvbSgnb3BhY2l0eScsMCkudG8oJ29wYWNpdHknLDEpLmR1cmF0aW9uKDUwKS5n bygpO30uYmluZCh0aGlzKSkuZ28oKTt9fS5iaW5kKHRoaXMpKS5nbygpO30sbWFu YWdlQnV0dG9uQ291bnRCdXR0b25BbmltYXRpb246ZnVuY3Rpb24oYSl7aWYoYSYm IXRoaXMuc2hvd0NvbmZpcm0pe3RoaXMuYW5pbWF0ZUJ1dHRvbkNvdW50QnV0dG9u RGlzYXBwZWFyYW5jZSgpO31lbHNlIHRoaXMuYW5pbWF0ZUJ1dHRvbkNvdW50QnV0 dG9uUmVhcHBlYXJhbmNlKCk7aWYoIXRoaXMuZ3JheU91dCl7Q1NTLnJlbW92ZUNs YXNzKHRoaXMudGh1bWJzVXBJY29uLCdoaWRkZW5fZWxlbScpO0NTUy5hZGRDbGFz cyh0aGlzLnVuZG9SZWdpb24sJ2hpZGRlbl9lbGVtJyk7fX0sbWFuYWdlU2ltcGxl QnV0dG9uQW5pbWF0aW9uOmZ1bmN0aW9uKGEpe2lmKHRoaXMuZ3JheU91dClyZXR1 cm47aWYoYSYmIXRoaXMuc2hvd0NvbmZpcm0pe3RoaXMuYW5pbWF0ZVNpbXBsZUJ1 dHRvbkRpc2FwcGVhcmFuY2UoKTt9ZWxzZSB0aGlzLmFuaW1hdGVTaW1wbGVCdXR0 b25SZWFwcGVhcmFuY2UoKTt9LGFuaW1hdGVCdXR0b25Db3VudEJ1dHRvbkRpc2Fw cGVhcmFuY2U6ZnVuY3Rpb24oKXtpZighdGhpcy5ncmF5T3V0KWFuaW1hdGlvbih0 aGlzLmNvbm5lY3RCdXR0b24pLmZyb20oJ29wYWNpdHknLDEpLnRvKCdvcGFjaXR5 JywwKS5mcm9tKCd3aWR0aCcsdGhpcy5vcmlnaW5hbEJ1dHRvbldpZHRoKS50bygn d2lkdGgnLCcwcHgnKS5vbmRvbmUoZnVuY3Rpb24oKXtDU1MuYWRkQ2xhc3ModGhp cy5jb25uZWN0QnV0dG9uLCdoaWRkZW5fZWxlbScpO30uYmluZCh0aGlzKSkuZHVy YXRpb24oMTAwKS5nbygpO2FuaW1hdGlvbih0aGlzLm51bWJlckV4Y2x1ZGluZyku ZnJvbSgnb3BhY2l0eScsMSkudG8oJ29wYWNpdHknLDApLmR1cmF0aW9uKDEwMCku b25kb25lKGZ1bmN0aW9uKCl7Q1NTLmFkZENsYXNzKHRoaXMubnVtYmVyRXhjbHVk aW5nLCdoaWRkZW5fZWxlbScpO0NTUy5zZXRTdHlsZSh0aGlzLnN1bW1hcnlJbmNs dWRpbmcsJ29wYWNpdHknLDApO0NTUy5yZW1vdmVDbGFzcyh0aGlzLnN1bW1hcnlJ bmNsdWRpbmcsJ2hpZGRlbl9lbGVtJyk7YW5pbWF0aW9uKHRoaXMuc3VtbWFyeUlu Y2x1ZGluZykuZnJvbSgnb3BhY2l0eScsMCkudG8oJ29wYWNpdHknLDEpLmR1cmF0 aW9uKDEwMCkuZ28oKTt9LmJpbmQodGhpcykpLmdvKCk7Zm9yKHZhciBhPTA7YTx0 aGlzLmNvbmZpcm1TcGFucy5sZW5ndGg7YSsrKUNTUy5hZGRDbGFzcyh0aGlzLmNv bmZpcm1TcGFuc1thXSwnaGlkZGVuX2VsZW0nKTtpZih0aGlzLmdyYXlPdXQpQ1NT LnJlbW92ZUNsYXNzKHRoaXMuY29ubmVjdEJ1dHRvbiwnaGlkZGVuX2VsZW0nKTt9 LGFuaW1hdGVTaW1wbGVCdXR0b25EaXNhcHBlYXJhbmNlOmZ1bmN0aW9uKCl7YW5p bWF0aW9uKHRoaXMuY29ubmVjdEJ1dHRvbikuZnJvbSgnb3BhY2l0eScsMSkudG8o J29wYWNpdHknLDApLmZyb20oJ3dpZHRoJyx0aGlzLm9yaWdpbmFsQnV0dG9uV2lk dGgpLnRvKCd3aWR0aCcsJzBweCcpLm9uZG9uZShmdW5jdGlvbigpe0NTUy5hZGRD bGFzcyh0aGlzLmNvbm5lY3RCdXR0b24sJ2hpZGRlbl9lbGVtJyk7Q1NTLnNldFN0 eWxlKHRoaXMuc3VtbWFyeUluY2x1ZGluZywnb3BhY2l0eScsMCk7Q1NTLnJlbW92 ZUNsYXNzKHRoaXMuc3VtbWFyeUluY2x1ZGluZywnaGlkZGVuX2VsZW0nKTthbmlt YXRpb24odGhpcy5zdW1tYXJ5SW5jbHVkaW5nKS5mcm9tKCdvcGFjaXR5JywwKS50 bygnb3BhY2l0eScsMSkuZHVyYXRpb24oMTAwKS5nbygpO30uYmluZCh0aGlzKSku ZHVyYXRpb24oNTApLmdvKCk7Zm9yKHZhciBhPTA7YTx0aGlzLmNvbmZpcm1TcGFu cy5sZW5ndGg7YSsrKUNTUy5hZGRDbGFzcyh0aGlzLmNvbmZpcm1TcGFuc1thXSwn aGlkZGVuX2VsZW0nKTtpZih0aGlzLmdyYXlPdXQpQ1NTLnJlbW92ZUNsYXNzKHRo aXMuY29ubmVjdEJ1dHRvbiwnaGlkZGVuX2VsZW0nKTt9LGNvbXB1dGVCdXR0b25E aW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIGM9Q1NTLmhhc0NsYXNzKHRoaXMuY29u bmVjdEJ1dHRvbiwnaGlkZGVuX2VsZW0nKTtpZihjKXtDU1MuYWRkQ2xhc3ModGhp cy5jb25uZWN0QnV0dG9uLCdjb25uZWN0X3dpZGdldF9vZmZzY3JlZW4nKTtDU1Mu cmVtb3ZlQ2xhc3ModGhpcy5jb25uZWN0QnV0dG9uLCdoaWRkZW5fZWxlbScpO312 YXIgYT1WZWN0b3IyLmdldEVsZW1lbnREaW1lbnNpb25zKHRoaXMuY29ubmVjdEJ1 dHRvbik7dmFyIGQ9YS54O3ZhciBiPWEueTt2YXIgZj1wYXJzZUludChDU1MuZ2V0 U3R5bGUodGhpcy5jb25uZWN0QnV0dG9uLCdwYWRkaW5nTGVmdCcpLDEwKTt2YXIg Zz1wYXJzZUludChDU1MuZ2V0U3R5bGUodGhpcy5jb25uZWN0QnV0dG9uLCdwYWRk aW5nUmlnaHQnKSwxMCk7dmFyIGg9cGFyc2VJbnQoQ1NTLmdldFN0eWxlKHRoaXMu Y29ubmVjdEJ1dHRvbiwncGFkZGluZ1RvcCcpLDEwKTt2YXIgZT1wYXJzZUludChD U1MuZ2V0U3R5bGUodGhpcy5jb25uZWN0QnV0dG9uLCdwYWRkaW5nQm90dG9tJyks MTApO2lmKGMpe0NTUy5hZGRDbGFzcyh0aGlzLmNvbm5lY3RCdXR0b24sJ2hpZGRl bl9lbGVtJyk7Q1NTLnJlbW92ZUNsYXNzKHRoaXMuY29ubmVjdEJ1dHRvbiwnY29u bmVjdF93aWRnZXRfb2Zmc2NyZWVuJyk7fXJldHVybiB7d2lkdGg6ZC1mLWctMixo ZWlnaHQ6Yn07fSxjb21wdXRlQnV0dG9uRGltZW5zaW9uc1dpdGhQYWRkaW5nOmZ1 bmN0aW9uKCl7dmFyIGM9Q1NTLmhhc0NsYXNzKHRoaXMuY29ubmVjdEJ1dHRvbiwn aGlkZGVuX2VsZW0nKTtpZihjKXtDU1MuYWRkQ2xhc3ModGhpcy5jb25uZWN0QnV0 dG9uLCdjb25uZWN0X3dpZGdldF9vZmZzY3JlZW4nKTtDU1MucmVtb3ZlQ2xhc3Mo dGhpcy5jb25uZWN0QnV0dG9uLCdoaWRkZW5fZWxlbScpO312YXIgYT1WZWN0b3Iy LmdldEVsZW1lbnREaW1lbnNpb25zKHRoaXMuY29ubmVjdEJ1dHRvbik7dmFyIGQ9 YS54O3ZhciBiPWEueTtpZih1YS5pZSgpKWQrPTM7aWYoYyl7Q1NTLmFkZENsYXNz KHRoaXMuY29ubmVjdEJ1dHRvbiwnaGlkZGVuX2VsZW0nKTtDU1MucmVtb3ZlQ2xh c3ModGhpcy5jb25uZWN0QnV0dG9uLCdjb25uZWN0X3dpZGdldF9vZmZzY3JlZW4n KTt9cmV0dXJuIHt3aWR0aDpkLGhlaWdodDpifTt9LGFuaW1hdGVCdXR0b25Db3Vu dEJ1dHRvblJlYXBwZWFyYW5jZTpmdW5jdGlvbigpe2lmKHRoaXMuc2hvd0NvbmZp cm0pe2Zvcih2YXIgYT0wO2E8dGhpcy5jb25maXJtU3BhbnMubGVuZ3RoO2ErKylD U1MucmVtb3ZlQ2xhc3ModGhpcy5jb25maXJtU3BhbnNbYV0sJ2hpZGRlbl9lbGVt Jyk7fWVsc2UgaWYoIXRoaXMuZ3JheU91dCl7Q1NTLnJlbW92ZUNsYXNzKHRoaXMu Y29ubmVjdEJ1dHRvbiwnaGlkZGVuX2VsZW0nKTthbmltYXRpb24odGhpcy5jb25u ZWN0QnV0dG9uKS5mcm9tKCd3aWR0aCcsJzBweCcpLnRvKCd3aWR0aCcsdGhpcy5v cmlnaW5hbEJ1dHRvbldpZHRoKS5mcm9tKCdvcGFjaXR5JywwKS50bygnb3BhY2l0 eScsMSkuZHVyYXRpb24oMTAwKS5nbygpO31DU1Muc2V0U3R5bGUodGhpcy5zdW1t YXJ5SW5jbHVkaW5nLCdvcGFjaXR5JywxKTthbmltYXRpb24odGhpcy5zdW1tYXJ5 SW5jbHVkaW5nKS5mcm9tKCdvcGFjaXR5JywxKS50bygnb3BhY2l0eScsMCkuZHVy YXRpb24oMTAwKS5vbmRvbmUoZnVuY3Rpb24oKXtDU1MuYWRkQ2xhc3ModGhpcy5z dW1tYXJ5SW5jbHVkaW5nLCdoaWRkZW5fZWxlbScpO0NTUy5zZXRTdHlsZSh0aGlz Lm51bWJlckV4Y2x1ZGluZywnb3BhY2l0eScsMCk7Q1NTLnJlbW92ZUNsYXNzKHRo aXMubnVtYmVyRXhjbHVkaW5nLCdoaWRkZW5fZWxlbScpO2FuaW1hdGlvbih0aGlz Lm51bWJlckV4Y2x1ZGluZykuZnJvbSgnb3BhY2l0eScsMCkudG8oJ29wYWNpdHkn LDEpLmR1cmF0aW9uKDEwMCkuZ28oKTt9LmJpbmQodGhpcykpLmdvKCk7fSxhbmlt YXRlU2ltcGxlQnV0dG9uUmVhcHBlYXJhbmNlOmZ1bmN0aW9uKCl7aWYodGhpcy5z aG93Q29uZmlybSl7Zm9yKHZhciBhPTA7YTx0aGlzLmNvbmZpcm1TcGFucy5sZW5n dGg7YSsrKUNTUy5yZW1vdmVDbGFzcyh0aGlzLmNvbmZpcm1TcGFuc1thXSwnaGlk ZGVuX2VsZW0nKTt9ZWxzZXtDU1MucmVtb3ZlQ2xhc3ModGhpcy5jb25uZWN0QnV0 dG9uLCdoaWRkZW5fZWxlbScpO2FuaW1hdGlvbih0aGlzLmNvbm5lY3RCdXR0b24p LmZyb20oJ3dpZHRoJywnMHB4JykudG8oJ3dpZHRoJyx0aGlzLm9yaWdpbmFsQnV0 dG9uV2lkdGgpLmZyb20oJ29wYWNpdHknLDApLnRvKCdvcGFjaXR5JywxKS5kdXJh dGlvbigxMDApLmdvKCk7fUNTUy5zZXRTdHlsZSh0aGlzLnN1bW1hcnlJbmNsdWRp bmcsJ29wYWNpdHknLDEpO2FuaW1hdGlvbih0aGlzLnN1bW1hcnlJbmNsdWRpbmcp LmZyb20oJ29wYWNpdHknLDEpLnRvKCdvcGFjaXR5JywwKS5kdXJhdGlvbigxMDAp Lm9uZG9uZShmdW5jdGlvbigpe0NTUy5hZGRDbGFzcyh0aGlzLnN1bW1hcnlJbmNs dWRpbmcsJ2hpZGRlbl9lbGVtJyk7fS5iaW5kKHRoaXMpKS5nbygpO30saW5qZWN0 Q29tbWVudFdpZGdldE1hcmt1cDpmdW5jdGlvbihhKXt0aGlzLmNvbW1lbnREb2N1 bWVudD1hO3RoaXMuY29tbWVudERvY3VtZW50LmJvZHkuaW5uZXJIVE1MPXRoaXMu Y29tbWVudFdpZGdldE1hcmt1cDt0aGlzLnRyYW5zZmVyQ1NTU3R5bGVzKCk7aWYo dGhpcy5uZXdQcm9maWxlUGljKXt2YXIgYz1ET00uZmluZCh0aGlzLmNvbW1lbnRE b2N1bWVudCwnaW1nLmNvbm5lY3RfY29tbWVudF93aWRnZXRfdXNlcl9waWMnKTtj LnNyYz10aGlzLm5ld1Byb2ZpbGVQaWM7ZGVsZXRlIHRoaXMubmV3UHJvZmlsZVBp Yzt9aWYodWEuaWUoKSl7dmFyIGY9RE9NLnNjcnkodGhpcy5jb21tZW50RG9jdW1l bnQsJy5jb25uZWN0X2NvbW1lbnRfc2hhcmVfcHJldmlld19waWMnKTtpZihmLmxl bmd0aD4wKXtmPWZbMF07dmFyIGU9NTA7dmFyIGQ9VmVjdG9yMi5nZXRFbGVtZW50 RGltZW5zaW9ucyhmKTt2YXIgZz1lL2QueDtpZihnPDEpe0NTUy5zZXRTdHlsZShm LCd3aWR0aCcsZSk7Q1NTLnNldFN0eWxlKGYsJ2hlaWdodCcsZC55KmcpO319fXRo aXMuc2V0dXBDb21tZW50SG9va3ModGhpcy5jb21tZW50RG9jdW1lbnQpO3RoaXMu Y29tbWVudFdpZGdldElzRXhwYW5kZWQ9IXRoaXMuaW5saW5lVW5saWtlTGluazt2 YXIgYj10aGlzLmdldENvbW1lbnRBY3RpdmF0aW5nQ29tcG9uZW50KCk7Yi5vbm1v dXNlb3V0PXRoaXMuY29tbWVudERvY3VtZW50LmJvZHkub25tb3VzZW91dD10aGlz Lm9uQ29tbWVudE1vdXNlT3V0LmJpbmQodGhpcyk7Yi5vbm1vdXNlb3Zlcj10aGlz LmNvbW1lbnREb2N1bWVudC5ib2R5Lm9ubW91c2VvdmVyPXRoaXMub25Db21tZW50 TW91c2VPdmVyLmJpbmQodGhpcyk7dGhpcy5pbkdyYWNlUGVyaW9kPWZhbHNlO30s b25Db21tZW50TW91c2VPdXQ6ZnVuY3Rpb24oYSl7aWYodGhpcy5tb3VzZWNsaWNr VG9EaXNtaXNzKXt0aGlzLm1vdXNlT3V0c2lkZT10cnVlO3JldHVybiB0cnVlO31l bHNlIHJldHVybiB0aGlzLmhpZGVDb21tZW50V2lkZ2V0KCk7fSxvbkNvbW1lbnRN b3VzZU92ZXI6ZnVuY3Rpb24oYSl7aWYodGhpcy5tb3VzZWNsaWNrVG9EaXNtaXNz KXt0aGlzLm1vdXNlT3V0c2lkZT1mYWxzZTtyZXR1cm4gdHJ1ZTt9ZWxzZSByZXR1 cm4gdGhpcy5zaG93Q29tbWVudFdpZGdldCgpO30sc2V0dXBDb21tZW50SG9va3M6 ZnVuY3Rpb24oYSl7dGhpcy5wbGFjZWhvbGRlcklucHV0UmVnaW9uPURPTS5maW5k KGEsJ2Rpdi5jb25uZWN0X2NvbW1lbnRfd2lkZ2V0X3BsYWNlaG9sZGVyX2lucHV0 X3JlZ2lvbicpO3RoaXMucGxhY2Vob2xkZXJJbnB1dD1ET00uZmluZCh0aGlzLnBs YWNlaG9sZGVySW5wdXRSZWdpb24sJ2lucHV0LmNvbm5lY3RfY29tbWVudF93aWRn ZXRfcGxhY2Vob2xkZXJfaW5wdXQnKTt0aGlzLmZ1bGxJbnB1dFJlZ2lvbj1ET00u ZmluZChhLCdkaXYuY29ubmVjdF9jb21tZW50X3dpZGdldF9mdWxsX2lucHV0X3Jl Z2lvbicpO3RoaXMuZnVsbElucHV0VGV4dGFyZWE9RE9NLmZpbmQodGhpcy5mdWxs SW5wdXRSZWdpb24sJ3RleHRhcmVhLmNvbm5lY3RfY29tbWVudF93aWRnZXRfZnVs bF9pbnB1dF90ZXh0YXJlYScpO3RoaXMub3duUHJvZHVjdENoZWNrYm94PURPTS5z Y3J5KGEsJy5jb25uZWN0X2NvbW1lbnRfd2lkZ2V0X293bl9wcm9kdWN0X2NoZWNr Ym94Jyk7aWYodGhpcy5vd25Qcm9kdWN0Q2hlY2tib3gubGVuZ3RoPjApdGhpcy5v d25Qcm9kdWN0Q2hlY2tib3g9dGhpcy5vd25Qcm9kdWN0Q2hlY2tib3hbMF07dGhp cy53aWRnZXRCdXR0b25SZWdpb249RE9NLmZpbmQoYSwnZGl2LmNvbm5lY3RfY29t bWVudF93aWRnZXRfYnV0dG9uX3JlZ2lvbicpO3RoaXMucG9zdFRvRmFjZWJvb2tC dXR0b249RE9NLnNjcnkodGhpcy53aWRnZXRCdXR0b25SZWdpb24sJy5jb25uZWN0 X2NvbW1lbnRfd2lkZ2V0X3Bvc3RfYnV0dG9uIGlucHV0Jyk7aWYodGhpcy5wb3N0 VG9GYWNlYm9va0J1dHRvbi5sZW5ndGg+MCl7dGhpcy5wb3N0VG9GYWNlYm9va0J1 dHRvbj10aGlzLnBvc3RUb0ZhY2Vib29rQnV0dG9uWzBdO3RoaXMucG9zdFRvRmFj ZWJvb2tCdXR0b24ub25jbGljaz10aGlzLnVwZGF0ZVVzZXJDb21tZW50LmJpbmQo dGhpcyk7fXRoaXMuY2xvc2VCdXR0b249RE9NLnNjcnkodGhpcy53aWRnZXRCdXR0 b25SZWdpb24sJy5jb25uZWN0X2NvbW1lbnRfd2lkZ2V0X2Nsb3NlX2J1dHRvbiBp bnB1dCcpO2lmKHRoaXMuY2xvc2VCdXR0b24ubGVuZ3RoPjApe3RoaXMuY2xvc2VC dXR0b249dGhpcy5jbG9zZUJ1dHRvblswXTt0aGlzLmNsb3NlQnV0dG9uLm9uY2xp Y2s9dGhpcy5jbG9zZUNvbW1lbnRXaWRnZXQuYmluZCh0aGlzKTt0aGlzLnNlbmRP bkVudGVyPXRydWU7fXRoaXMubW91c2VjbGlja1RvRGlzbWlzcz1DU1MuaGFzQ2xh c3ModGhpcy53aWRnZXRCdXR0b25SZWdpb24sJ21vdXNlY2xpY2t0b2Rpc21pc3Mn KTt0aGlzLmlubGluZVVubGlrZUxpbms9RE9NLnNjcnkoYSwnYS5jb25uZWN0X2Nv bW1lbnRfd2lkZ2V0X3VubGlrZV9saW5rJyk7aWYodGhpcy5pbmxpbmVVbmxpa2VM aW5rLmxlbmd0aD4wKXt0aGlzLmlubGluZVVubGlrZUxpbms9dGhpcy5pbmxpbmVV bmxpa2VMaW5rWzBdO3RoaXMuaW5saW5lVW5saWtlTGluay5vbmNsaWNrPXRoaXMu Y29ubmVjdFRvTm9kZU9uQ2xpY2suYmluZCh0aGlzKTt9dGhpcy5kZWZhdWx0SW5w dXRUZXh0PXRoaXMucGxhY2Vob2xkZXJJbnB1dC52YWx1ZTt0aGlzLnBsYWNlaG9s ZGVySW5wdXQub25mb2N1cz10aGlzLnRyYW5zaXRpb25Ub0Z1bGxJbnB1dE1vZGUu YmluZCh0aGlzKTt0aGlzLmZ1bGxJbnB1dFRleHRhcmVhLm9uZm9jdXM9dGhpcy5y ZW1vdmVQbGFjZWhvbGRlclRleHQuYmluZCh0aGlzKTt0aGlzLmZ1bGxJbnB1dFRl eHRhcmVhLm9uYmx1cj0oZnVuY3Rpb24oYil7dGhpcy5yZXN0b3JlUGxhY2Vob2xk ZXJUZXh0KCk7aWYodGhpcy5tb3VzZWNsaWNrVG9EaXNtaXNzJiZ0aGlzLm1vdXNl T3V0c2lkZSlyZXR1cm4gdGhpcy5oaWRlQ29tbWVudFdpZGdldCgpO30pLmJpbmQo dGhpcyk7aWYodGhpcy5pbmxpbmVVbmxpa2VMaW5rKXRoaXMuaW5saW5lVW5saWtl TGluay5vbmNsaWNrPXRoaXMuY29ubmVjdFRvTm9kZU9uQ2xpY2suYmluZCh0aGlz KTtpZih0aGlzLmNsb3NlQnV0dG9uKXRoaXMuY2xvc2VCdXR0b24ub25jbGljaz10 aGlzLmNsb3NlQ29tbWVudFdpZGdldC5iaW5kKHRoaXMpO3RoaXMuc2VuZE9uRW50 ZXI9KENTUy5oYXNDbGFzcyh0aGlzLndpZGdldEJ1dHRvblJlZ2lvbiwnc2VuZG9u ZW50ZXInKXx8dGhpcy5zZW5kT25FbnRlcik7aWYodGhpcy5zZW5kT25FbnRlcil7 dGhpcy5mdWxsSW5wdXRUZXh0YXJlYS5vbmtleWRvd249KGZ1bmN0aW9uKGIpe2I9 Ynx8d2luZG93LmV2ZW50O2lmKCFiKXJldHVybiB0cnVlO2lmKHRoaXMuc2VuZE9u RW50ZXImJmIua2V5Q29kZT09MTMmJiEoYi5jdHJsS2V5fHxiLnNoaWZ0S2V5fHxi LmFsdEtleXx8Yi5tZXRhS2V5KSl7dGhpcy51cGRhdGVVc2VyQ29tbWVudCgpO3Jl dHVybiBmYWxzZTt9aWYodGhpcy5kaWRSZXNldE9uS2V5ZG93bilyZXR1cm4gdHJ1 ZTt0aGlzLnJlbW92ZVBsYWNlaG9sZGVyVGV4dCgpO3RoaXMuZGlkUmVzZXRPbktl eWRvd249dHJ1ZTtyZXR1cm4gdHJ1ZTt9KS5iaW5kKHRoaXMpO3RoaXMudHJhbnNp dGlvblRvRnVsbElucHV0TW9kZSgpO319LGdldENvbW1lbnRBY3RpdmF0aW5nQ29t cG9uZW50OmZ1bmN0aW9uKCl7aWYodGhpcy5sYXlvdXQ9PT1FeHRlcm5hbE5vZGVD b25uZWN0V2lkZ2V0LkJPWF9DT1VOVF9MQVlPVVR8fHRoaXMubGF5b3V0PT09RXh0 ZXJuYWxOb2RlQ29ubmVjdFdpZGdldC5CVVRUT05fQ09VTlRfTEFZT1VUKXtyZXR1 cm4gdGhpcy53aWRnZXQ7fWVsc2UgaWYodGhpcy5sYXlvdXQ9PT1FeHRlcm5hbE5v ZGVDb25uZWN0V2lkZ2V0LlNJTVBMRV9MQVlPVVQpe3JldHVybiB0aGlzLndpZGdl dDt9ZWxzZSBpZih0aGlzLmdyYXlPdXQpe3JldHVybiBET00uZmluZCh0aGlzLndp ZGdldCwndGFibGUuY29ubmVjdF93aWRnZXRfaW50ZXJhY3RpdmVfYXJlYScpO31l bHNlIHJldHVybiB0aGlzLmNvbmZpcm1hdGlvbkNlbGw7fSxzaG93Q29tbWVudFdp ZGdldDpmdW5jdGlvbihldmVudCl7aWYodGhpcy5vdGhlckNvbW1lbnRXaWRnZXRP cGVuKXJldHVybiBmYWxzZTt0aGlzLmluR3JhY2VQZXJpb2Q9dHJ1ZTt0aGlzLmtp bGxDbG9zZVRocmVhZCgpO2lmKHRoaXMuY29tbWVudFdpZGdldE9wZW4mJiF0aGlz LmNvbW1lbnRXaWRnZXRWaXNpYmxlKXt0aGlzLmNvbW1lbnRXaWRnZXRWaXNpYmxl PXRydWU7Q1NTLnNob3codGhpcy5jb21tZW50RG9jdW1lbnQuYm9keSk7VW52ZXJp ZmllZFhELnNlbmQoe3R5cGU6J3Nob3dFZGdlQ29tbWVudERpYWxvZyd9KTt9cmV0 dXJuIGZhbHNlO30saGlkZUNvbW1lbnRXaWRnZXQ6ZnVuY3Rpb24oZXZlbnQpe2lm KHRoaXMub3RoZXJDb21tZW50V2lkZ2V0T3BlbilyZXR1cm4gZmFsc2U7dGhpcy5p bkdyYWNlUGVyaW9kPWZhbHNlO2lmKHRoaXMuY29tbWVudFdpZGdldE9wZW4mJnRo aXMuY29tbWVudFdpZGdldFZpc2libGUpe3ZhciBhPWZ1bmN0aW9uKCl7aWYoIXRo aXMuaW5HcmFjZVBlcmlvZCYmdGhpcy5zaG91bGRIaWRlRXhwYW5kZWRXaWRnZXQo KSl7dGhpcy5mdWxsSW5wdXRUZXh0YXJlYS5ibHVyKCk7dGhpcy5jb21tZW50V2lk Z2V0VmlzaWJsZT1mYWxzZTtpZighdGhpcy5zb2NpYWxCYXIpQ1NTLmhpZGUodGhp cy5jb21tZW50RG9jdW1lbnQuYm9keSk7VW52ZXJpZmllZFhELnNlbmQoe3R5cGU6 J2hpZGVFZGdlQ29tbWVudERpYWxvZyd9KTt9dGhpcy5pbkdyYWNlUGVyaW9kPWZh bHNlO3RoaXMua2lsbENsb3NlVGhyZWFkKCk7fS5iaW5kKHRoaXMpO3RoaXMuY2xv c2VUaHJlYWRJRD1zZXRUaW1lb3V0KGEsMTAwKTt9cmV0dXJuIGZhbHNlO30sc2hv dWxkSGlkZUV4cGFuZGVkV2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuICF0aGlzLmNv bW1lbnRXaWRnZXRJc0V4cGFuZGVkfHx0aGlzLmZ1bGxJbnB1dFRleHRhcmVhLnZh bHVlPT09Jyd8fHRoaXMuZnVsbElucHV0VGV4dGFyZWEudmFsdWU9PT10aGlzLmRl ZmF1bHRJbnB1dFRleHQ7fSxraWxsQ2xvc2VUaHJlYWQ6ZnVuY3Rpb24oKXtpZih0 aGlzLmNsb3NlVGhyZWFkSUQpe2NsZWFyVGltZW91dCh0aGlzLmNsb3NlVGhyZWFk SUQpO2RlbGV0ZSB0aGlzLmNsb3NlVGhyZWFkSUQ7fX0sdHJhbnNmZXJDU1NTdHls ZXM6ZnVuY3Rpb24oKXt2YXIgZT1ET00uc2NyeSh3aW5kb3cuZG9jdW1lbnQsJ2xp bmsnKTt2YXIgZj1ET00uc2NyeSh3aW5kb3cuZG9jdW1lbnQsJ3N0eWxlJyk7dmFy IGQ9RE9NLmZpbmQod2luZG93LmRvY3VtZW50LCdodG1sJyk7dmFyIGg9RE9NLmZp bmQodGhpcy5jb21tZW50RG9jdW1lbnQsJ2h0bWwnKTt2YXIgZz1ET00uZmluZCh0 aGlzLmNvbW1lbnREb2N1bWVudCwnaGVhZCcpO2Zvcih2YXIgYj0wO2I8ZS5sZW5n dGg7YisrKWlmKGVbYl0ucmVsPT0nc3R5bGVzaGVldCcpe3ZhciBjPXRoaXMuY29t bWVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtjLnJlbD1lW2JdLnJl bDtjLmhyZWY9ZVtiXS5ocmVmO2MudHlwZT1lW2JdLnR5cGU7Zy5hcHBlbmRDaGls ZChjKTt9Zm9yKGI9MDtiPGYubGVuZ3RoO2IrKyl7dmFyIGk9dGhpcy5jb21tZW50 RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTt2YXIgYT1mW2JdLmlubmVy VGV4dHx8ZltiXS50ZXh0Q29udGVudHx8ZltiXS5pbm5lckhUTUw7aS5zZXRBdHRy aWJ1dGUoInR5cGUiLCJ0ZXh0L2NzcyIpO2cuYXBwZW5kQ2hpbGQoaSk7aWYoaS5z dHlsZVNoZWV0KXtpLnN0eWxlU2hlZXQuY3NzVGV4dD1hO31lbHNle3ZhciBqPXRo aXMuY29tbWVudERvY3VtZW50LmNyZWF0ZVRleHROb2RlKGEpO2kuYXBwZW5kQ2hp bGQoaik7fX1oLmlkPWQuaWQ7aC5jbGFzc05hbWU9ZC5jbGFzc05hbWU7dGhpcy5j b21tZW50RG9jdW1lbnQuYm9keS5jbGFzc05hbWU9d2luZG93LmRvY3VtZW50LmJv ZHkuY2xhc3NOYW1lO30sdHJhbnNpdGlvblRvRnVsbElucHV0TW9kZTpmdW5jdGlv bihldmVudCl7dGhpcy5jb21tZW50V2lkZ2V0SXNFeHBhbmRlZD10cnVlO0NTUy5o aWRlKHRoaXMucGxhY2Vob2xkZXJJbnB1dFJlZ2lvbik7Q1NTLnNob3codGhpcy5m dWxsSW5wdXRSZWdpb24pO0NTUy5zaG93KHRoaXMud2lkZ2V0QnV0dG9uUmVnaW9u KTtpZih0aGlzLmNsb3NlQnV0dG9ufHx0aGlzLnNlbmRPbkVudGVyKXt0aGlzLnJl c3RvcmVQbGFjZWhvbGRlclRleHQoKTt2YXIgYj10aGlzLmZ1bGxJbnB1dFRleHRh cmVhO2lmKGRvY3VtZW50LnNlbGVjdGlvbil7dmFyIGE9Yi5jcmVhdGVUZXh0UmFu Z2UoKTthLmNvbGxhcHNlKHRydWUpO2EubW92ZUVuZCgnY2hhcmFjdGVyJywwKTth Lm1vdmVTdGFydCgnY2hhcmFjdGVyJywwKTthLnNlbGVjdCgpO31lbHNlIGlmKGIu c2V0U2VsZWN0aW9uUmFuZ2Upe2IuZm9jdXMoKTtiLnNldFNlbGVjdGlvblJhbmdl KDAsMCk7fX1yZXR1cm4gZmFsc2U7fSxyZW1vdmVQbGFjZWhvbGRlclRleHQ6ZnVu Y3Rpb24oZXZlbnQpe2lmKENTUy5oYXNDbGFzcyh0aGlzLmZ1bGxJbnB1dFRleHRh cmVhLCdjb25uZWN0X2NvbW1lbnRfd2lkZ2V0X2Rpc2FibGVkJykpe0NTUy5yZW1v dmVDbGFzcyh0aGlzLmZ1bGxJbnB1dFRleHRhcmVhLCdjb25uZWN0X2NvbW1lbnRf d2lkZ2V0X2Rpc2FibGVkJyk7dGhpcy5mdWxsSW5wdXRUZXh0YXJlYS52YWx1ZT0n Jzt9cmV0dXJuIGZhbHNlO30scmVzdG9yZVBsYWNlaG9sZGVyVGV4dDpmdW5jdGlv bihldmVudCl7aWYodGhpcy5mdWxsSW5wdXRUZXh0YXJlYS52YWx1ZS50cmltKCk9 PScnKXt0aGlzLmZ1bGxJbnB1dFRleHRhcmVhLnZhbHVlPXRoaXMuZGVmYXVsdElu cHV0VGV4dDtDU1MuYWRkQ2xhc3ModGhpcy5mdWxsSW5wdXRUZXh0YXJlYSwnY29u bmVjdF9jb21tZW50X3dpZGdldF9kaXNhYmxlZCcpO31yZXR1cm4gZmFsc2U7fSx1 cGRhdGVVc2VyQ29tbWVudDpmdW5jdGlvbihldmVudCl7dmFyIGI9dGhpcy5mdWxs SW5wdXRUZXh0YXJlYS52YWx1ZS50cmltKCk7dmFyIGE9dGhpcy5vd25Qcm9kdWN0 Q2hlY2tib3guY2hlY2tlZDtpZihiPT09Jyd8fGI9PXRoaXMuZGVmYXVsdElucHV0 VGV4dCl7aWYoYT09PWZhbHNlKXJldHVybiBmYWxzZTtiPScnO310aGlzLnBvc3RV c2VyQ29tbWVudChiLGEpO3JldHVybiBmYWxzZTt9LGdldEFqYXhFbmRwb2ludDpm dW5jdGlvbigpe3JldHVybiAnL2FqYXgvY29ubmVjdC9leHRlcm5hbF9ub2RlX2Nv bm5lY3QucGhwJzt9LGdldENvbW1lbnRBamF4RW5kcG9pbnQ6ZnVuY3Rpb24oKXty ZXR1cm4gJy9hamF4L2Nvbm5lY3QvZXh0ZXJuYWxfZWRnZV9jb21tZW50LnBocCc7 fSxnZXRDb25maXJtVVJMOmZ1bmN0aW9uKCl7dmFyIGE9e2hyZWY6dGhpcy5leHRl cm5hbFVybCxwYWdlX2lkOnRoaXMucGFnZUlkLG5vZGVfdHlwZTp0aGlzLm5vZGVU eXBlLGVkZ2VfdHlwZTp0aGlzLmVkZ2VUeXBlLHdpZGdldF9pZDp0aGlzLndpZGdl dElEfTtpZih0aGlzLnJlZilhLnJlZj10aGlzLnJlZjtyZXR1cm4gVVJJKCcvcGx1 Z2lucy9saWtlX2NvbmZpcm0ucGhwJykuYWRkUXVlcnlEYXRhKGEpLnRvU3RyaW5n KCk7fSx1cGRhdGVMb2dnZWRJblVzZXI6ZnVuY3Rpb24oYixhKXtFeHRlcm5hbE5v ZGVDb25uZWN0V2lkZ2V0LnVwZGF0ZUxvZ2dlZEluVXNlcihiLGEpO30sc3luY1Nl bmRXaWRnZXRXaWR0aDpmdW5jdGlvbihoLGIpe3ZhciBhPXRoaXMuY29tcHV0ZUJ1 dHRvbkRpbWVuc2lvbnNXaXRoUGFkZGluZygpLndpZHRoO3ZhciBjPWIuYnV0dG9u X3dpZHRoLWE7aWYodGhpcy5sYXlvdXQ9PT1FeHRlcm5hbE5vZGVDb25uZWN0V2lk Z2V0LkJPWF9DT1VOVF9MQVlPVVQmJmM+MCYmYzw9NSl7Q1NTLnNldFN0eWxlKHRo aXMuY29ubmVjdEJ1dHRvbiwnd2lkdGgnLChiLmJ1dHRvbl93aWR0aC1wYXJzZUlu dChDU1MuZ2V0U3R5bGUodGhpcy5jb25uZWN0QnV0dG9uLCdwYWRkaW5nTGVmdCcp KS1wYXJzZUludChDU1MuZ2V0U3R5bGUodGhpcy5jb25uZWN0QnV0dG9uLCdwYWRk aW5nUmlnaHQnKSktcGFyc2VJbnQoQ1NTLmdldFN0eWxlKHRoaXMuY29ubmVjdEJ1 dHRvbiwnYm9yZGVyTGVmdFdpZHRoJykpLXBhcnNlSW50KENTUy5nZXRTdHlsZSh0 aGlzLmNvbm5lY3RCdXR0b24sJ2JvcmRlclJpZ2h0V2lkdGgnKSkpKydweCcpO3Ro aXMuc2l6ZU51bWJlckNsb3VkKCk7fWlmKHRoaXMubGF5b3V0PT09RXh0ZXJuYWxO b2RlQ29ubmVjdFdpZGdldC5TVEFOREFSRF9MQVlPVVQpe3ZhciBkPVZlY3RvcjIu Z2V0RWxlbWVudERpbWVuc2lvbnModGhpcy53aWRnZXQpLnk7Q1NTLnNldFN0eWxl KHRoaXMud2lkZ2V0LCdoZWlnaHQnLChkKzUpKydweCcpO3ZhciBlPXVhLmllKCk7 dmFyIGY9aW50bF9sb2NhbGVfaXNfcnRsKCk7dmFyIGc9Zj8ncmlnaHQnOidsZWZ0 JztpZihlJiZlPDkpe0NTUy5zZXRTdHlsZSh0aGlzLmNvbm5lY3RCdXR0b24sJ3Bv c2l0aW9uJywnYWJzb2x1dGUnKTtDU1Muc2V0U3R5bGUodGhpcy5jb25uZWN0QnV0 dG9uLGcsLShiLmJ1dHRvbl93aWR0aCsxMCkrJ3B4Jyk7fWVsc2V7Q1NTLnNldFN0 eWxlKHRoaXMuY29ubmVjdEJ1dHRvbiwncG9zaXRpb24nLCdmaXhlZCcpO0NTUy5z ZXRTdHlsZSh0aGlzLmNvbm5lY3RCdXR0b24sZywnMHB4Jyk7fWlmKGUmJnRoaXMu Y29ubmVjdEJ1dHRvblNsaWRlcil7Q1NTLnNldFN0eWxlKHRoaXMuY29ubmVjdEJ1 dHRvblNsaWRlcixnLGIuYnV0dG9uX3dpZHRoKydweCcpO2lmKGU8PTcpdGhpcy5m aXhJRUJ1dHRvbkRvdWJsZUxpbmVCdWcoKTt9Q1NTLnNldFN0eWxlKHRoaXMuY29u ZmlybWF0aW9uQ2VsbCwncG9zaXRpb24nLCdhYnNvbHV0ZScpO0NTUy5zZXRTdHls ZSh0aGlzLmNvbmZpcm1hdGlvbkNlbGwsZywoYi5idXR0b25fd2lkdGgrYSs1KSsn cHgnKTtDU1Muc2V0U3R5bGUodGhpcy5jb25maXJtYXRpb25DZWxsLCd0b3AnLCc1 cHgnKTtpZih0aGlzLnNhbXBsZUNvbm5lY3Rpb25zKXtDU1Muc2V0U3R5bGUodGhp cy5zYW1wbGVDb25uZWN0aW9ucywncG9zaXRpb24nLCdmaXhlZCcpO0NTUy5zZXRT dHlsZSh0aGlzLnNhbXBsZUNvbm5lY3Rpb25zLGcsJzAnKTt9dGhpcy5pbnZlcnRl ZEJ1dHRvbnM9dHJ1ZTt0aGlzLnJlcG9zaXRpb25GYWNlcGlsZVZlcnRpY2FsbHko KTt9fSxyZXBvc2l0aW9uRmFjZXBpbGVWZXJ0aWNhbGx5OmZ1bmN0aW9uKCl7aWYo dGhpcy5pbnZlcnRlZEJ1dHRvbnMmJnRoaXMuc2FtcGxlQ29ubmVjdGlvbnMpe3Zh ciBhPVZlY3RvcjIuZ2V0RWxlbWVudERpbWVuc2lvbnModGhpcy5zdW1tYXJ5VGV4 dCkueTtDU1Muc2V0U3R5bGUodGhpcy5zYW1wbGVDb25uZWN0aW9ucywnbWFyZ2lu LXRvcCcsKDUrYSs1KSsncHgnKTt9fX0pOwpmdW5jdGlvbiBDb25uZWN0V2lkZ2V0 KGgsZixhLGUsYil7Y29weV9wcm9wZXJ0aWVzKHRoaXMse2NoYW5uZWxfdXJsOmIs bGlrZV9tb2RlOmUscHJvZmlsZV9pZDpmLHZpZXdlcl9pZDpoLHN0YXR1czpudWxs LHBvcHVwOm51bGwsYnVzeTpmYWxzZSxuZXdfZmFuOm51bGwsdXNlcl9wcm9maWxl Om51bGx9KTt0aGlzLmZhbl9oaWRkZW49W107dGhpcy5mYW5fc2hvd249W107dmFy IGM9RE9NLnNjcnkoZG9jdW1lbnQsJ2Rpdi5jb25uZWN0aW9ucycpO2lmKGMubGVu Z3RoPjApe2M9Y1swXTt0aGlzLnVzZXJfcHJvZmlsZT1ET00uZmluZChjLCdkaXYu dXNlcl9wcm9maWxlJyk7dGhpcy5uZXdfZmFuPURPTS5maW5kKGMsJ2Rpdi5ncmlk X2l0ZW1fcGx1cycpO3RoaXMuZmFuX3Nob3duLnB1c2godGhpcy5uZXdfZmFuKTt0 aGlzLmZhbl9zaG93bi5wdXNoKERPTS5maW5kKGMsJ3NwYW4udG90YWxfcGx1cycp KTt2YXIgZz1ET00uc2NyeShjLCdzcGFuLnRvdGFsJyk7dmFyIGQ9RE9NLnNjcnko YywnZGl2LmdyaWRfaXRlbScpO2lmKGQubGVuZ3RoPjEpdGhpcy5mYW5faGlkZGVu LnB1c2goZFsxXSk7dGhpcy5mYW5faGlkZGVuLnB1c2goZ1tnLmxlbmd0aC0xXSk7 fWlmKCF0aGlzLmxpa2VfbW9kZSl7dGhpcy5idXR0b249JChhKTt0aGlzLnBvcHVw X3VyaT1uZXcgVVJJKCcvbG9naW4ucGhwJyk7dGhpcy5wb3B1cF91cmkuYWRkUXVl cnlEYXRhKHtjb25uZWN0X2lkOnRoaXMucHJvZmlsZV9pZCxwb3B1cDp0cnVlfSk7 RXZlbnQubGlzdGVuKHRoaXMuYnV0dG9uLCdjbGljaycsdGhpcy5jb25uZWN0Q2xp Y2tIYW5kbGVyLmJpbmQodGhpcykpO31lbHNlIEFyYml0ZXIuc3Vic2NyaWJlKCdw bGF0Zm9ybS9saWtlL2Nvbm5lY3Rpb24nLHRoaXMudXBkYXRlV2lkZ2V0RnJvbUxp a2UuYmluZCh0aGlzKSk7Q29ubmVjdFdpZGdldC5pbnN0YW5jZXNbYV09dGhpcztp Zih0aGlzLmNoYW5uZWxfdXJsKVhELmluaXQoe2NoYW5uZWxVcmw6dGhpcy5jaGFu bmVsX3VybH0pO31Db25uZWN0V2lkZ2V0Lmluc3RhbmNlcz17fTtDb25uZWN0V2lk Z2V0LmlzX2Nvbm5lY3Q9dHJ1ZTtDb25uZWN0V2lkZ2V0LnByb3RvdHlwZS5zZXRM b2dnZWRJbj1mdW5jdGlvbihhKXt0aGlzLnZpZXdlcl9pZD1hO3JldHVybiB0aGlz O307Q29ubmVjdFdpZGdldC5wcm90b3R5cGUuY29ubmVjdENsaWNrSGFuZGxlcj1m dW5jdGlvbihhKXthLmtpbGwoKTtpZih0aGlzLnZpZXdlcl9pZCE9MCl7dGhpcy5j b25uZWN0KCk7fWVsc2UgdGhpcy5wb3BVcExvZ2luKCk7fTtDb25uZWN0V2lkZ2V0 LnByb3RvdHlwZS5jb25uZWN0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuYnVzeSl7dGhp cy5idXN5PXRydWU7ZmJwYWdlX3NldF9mYW5fc3RhdHVzKHRoaXMuYnV0dG9uLHRo aXMucHJvZmlsZV9pZCx0cnVlLGZhbHNlLHRoaXMuY29ubmVjdERvbmVIYW5kbGVy LmJpbmQodGhpcyksdGhpcy5jb25uZWN0RXJyb3JIYW5kbGVyLmJpbmQodGhpcyks dGhpcy5nZXRBc3luY0RhdGEoKSk7fX07Q29ubmVjdFdpZGdldC5wcm90b3R5cGUu ZGlzY29ubmVjdD1mdW5jdGlvbigpe2lmKCF0aGlzLmJ1c3kpe3RoaXMuYnVzeT10 cnVlO2ZicGFnZV9zZXRfZmFuX3N0YXR1cyh0aGlzLmJ1dHRvbix0aGlzLnByb2Zp bGVfaWQsZmFsc2UsZmFsc2UsdGhpcy5jb25uZWN0VW5kb25lSGFuZGxlci5iaW5k KHRoaXMpLGZ1bmN0aW9uKCl7fSx0aGlzLmdldEFzeW5jRGF0YSgpKTt9fTtDb25u ZWN0V2lkZ2V0LnByb3RvdHlwZS5nZXRBc3luY0RhdGE9ZnVuY3Rpb24oKXt2YXIg YT17c291cmNlOidjb25uZWN0Jyxpc19jb25uZWN0OkNvbm5lY3RXaWRnZXQuaXNf Y29ubmVjdCxmYW5fb3JpZ2luOidleHRlcm5hbF9jb25uZWN0J307aWYoZ2UoJ3Bv c3RfZm9ybV9pZCcpKWEucG9zdF9mb3JtX2lkPSQoJ3Bvc3RfZm9ybV9pZCcpLnZh bHVlO2lmKEVudi5mYl9kdHNnKWEuZmJfZHRzZz1FbnYuZmJfZHRzZztyZXR1cm4g YTt9O0Nvbm5lY3RXaWRnZXQucHJvdG90eXBlLnBvcFVwTG9naW49ZnVuY3Rpb24o KXt3aW5kb3cub3Blbih0aGlzLnBvcHVwX3VyaS50b1N0cmluZygpLCdfYmxhbmsn LCd0b29sYmFyPTAsc3RhdHVzPTAsd2lkdGg9NjI2LGhlaWdodD00MDAnKTt9O0Nv bm5lY3RXaWRnZXQucHJvdG90eXBlLnVwZGF0ZVdpZGdldEZyb21MaWtlPWZ1bmN0 aW9uKGIsZil7aWYoIWYudXNlclByb2ZpbGUpcmV0dXJuO2lmKHRoaXMudXNlcl9w cm9maWxlKXt2YXIgYz1ET00uZmluZCh0aGlzLnVzZXJfcHJvZmlsZSwnaW1nJyk7 dmFyIGE9RE9NLmZpbmQodGhpcy51c2VyX3Byb2ZpbGUsJ2EnKTt2YXIgZT1ET00u ZmluZCh0aGlzLnVzZXJfcHJvZmlsZSwnZGl2Lm5hbWUnKTtjLnNyYz1mLnVzZXJQ cm9maWxlLnBpY19zcXVhcmU7YS5ocmVmPWYudXNlclByb2ZpbGUucHJvZmlsZV91 cmw7RE9NLnNldENvbnRlbnQoZSxmLnVzZXJQcm9maWxlLm5hbWUpO312YXIgZDtp ZihmLm5vd0Nvbm5lY3RlZCl7ZD0nbGlrZWJveExpa2VkJzt0aGlzLnNob3dOZXdG YW4oKTt9ZWxzZXtkPSdsaWtlYm94VW5saWtlZCc7dGhpcy5oaWRlTmV3RmFuKCk7 fWlmKHRoaXMuY2hhbm5lbF91cmwpWEQuc2VuZCh7dHlwZTpkfSk7fTtDb25uZWN0 V2lkZ2V0LnByb3RvdHlwZS5jb25uZWN0RXJyb3JIYW5kbGVyPWZ1bmN0aW9uKGIp e2lmKGIuZXJyb3I9PTEzNTcwMDEpe3RoaXMudmlld2VyX2lkPTA7dGhpcy5wb3BV cExvZ2luKCk7fWVsc2UgaWYoYi5lcnJvcj09MTM1NzAxMyl7Q1NTLmhpZGUodGhp cy5idXR0b24pO3ZhciBhPSROKCdhJyx7aHJlZjpET00uZmluZChkb2N1bWVudCwn ZGl2Lm5hbWVfYmxvY2sgYScpLmhyZWYsdGFyZ2V0OidfYmxhbmsnfSwiQmFcdTAx MWZsYW5tYWsgaVx1MDBlN2luIGRvXHUwMTFmcnVsYW1hIGdlcmVraXlvci4iKTt0 aGlzLnN0YXR1cz0kTignc3Bhbicse2NsYXNzTmFtZTonY29ubmVjdF9zcGFuJ30s YSk7RE9NLmluc2VydEFmdGVyKHRoaXMuYnV0dG9uLHRoaXMuc3RhdHVzKTt9ZWxz ZXtDU1MuaGlkZSh0aGlzLmJ1dHRvbik7aWYoYi5lcnJvcj09MTQzMTAwMSl7dGhp cy5zdGF0dXM9JE4oJ3NwYW4nLHtjbGFzc05hbWU6J2Nvbm5lY3Rfc3Bhbid9LCJC dW51IGJlXHUwMTFmZW5kaW4uIik7fWVsc2UgdGhpcy5zdGF0dXM9JE4oJ3NwYW4n LHtjbGFzc05hbWU6J2Nvbm5lY3Rfc3Bhbid9LGIuZ2V0RXJyb3JTdW1tYXJ5KCkr JzogJytiLmdldEVycm9yRGVzY3JpcHRpb24oKSk7YW5pbWF0aW9uKHRoaXMuc3Rh dHVzKS5mcm9tKCdvcGFjaXR5JywwKS50bygnb3BhY2l0eScsMSkuZ28oKTtET00u aW5zZXJ0QWZ0ZXIodGhpcy5idXR0b24sdGhpcy5zdGF0dXMpO310aGlzLmJ1c3k9 ZmFsc2U7fTtDb25uZWN0V2lkZ2V0LnByb3RvdHlwZS5jb25uZWN0RG9uZUhhbmRs ZXI9ZnVuY3Rpb24oYyl7dmFyIGI9Yy5nZXRQYXlsb2FkKCk7aWYoIWJ8fCFiLmZl ZWRiYWNrKXJldHVybjt0aGlzLnN0YXR1cz0kTignc3Bhbicse2NsYXNzTmFtZTon Y29ubmVjdF9zcGFuJ30sSFRNTChiLmZlZWRiYWNrKSk7dmFyIGQ9JE4oJ2EnLHtj bGFzc05hbWU6J3VuZG8nfSwiR2VyaSBBbCIpO0V2ZW50Lmxpc3RlbihkLCdjbGlj aycsZnVuY3Rpb24oZSl7ZS5raWxsKCk7dGhpcy5kaXNjb25uZWN0KCk7fS5iaW5k KHRoaXMpKTtET00uYXBwZW5kQ29udGVudCh0aGlzLnN0YXR1cyxkKTthbmltYXRp b24odGhpcy5zdGF0dXMpLmZyb20oJ29wYWNpdHknLDApLnRvKCdvcGFjaXR5Jywx KS5nbygpO0RPTS5pbnNlcnRBZnRlcih0aGlzLmJ1dHRvbix0aGlzLnN0YXR1cyk7 Q1NTLmhpZGUodGhpcy5idXR0b24pO2lmKHRoaXMubmV3X2ZhbiE9bnVsbCYmYi5j b25uZWN0X2Zhbl9kaXYpe3ZhciBhPSROKCdkaXYnLHt9LEhUTUwoYi5jb25uZWN0 X2Zhbl9kaXYpKTtET00uc2V0Q29udGVudCh0aGlzLm5ld19mYW4sRE9NLmZpbmQo YSwnYScpKTt9dGhpcy5zaG93TmV3RmFuKCk7dGhpcy5idXN5PWZhbHNlO307Q29u bmVjdFdpZGdldC5wcm90b3R5cGUuc2hvd05ld0Zhbj1mdW5jdGlvbigpe3RoaXMu ZmFuX3Nob3duLmZvckVhY2goZnVuY3Rpb24oYil7aWYoIUNTUy5oYXNDbGFzcyhi LCdoaWRkZW5fZWxlbScpKXJldHVybjt2YXIgYT1DU1MuZ2V0U3R5bGUoYiwnd2lk dGgnKTtDU1Muc2V0U3R5bGUoYiwnd2lkdGgnLDApO0NTUy5zZXRTdHlsZShiLCdv cGFjaXR5JywwKTtDU1Muc2hvdyhiKTthbmltYXRpb24oYikudG8oJ3dpZHRoJyxh KS5kdXJhdGlvbigxMDApLmNoZWNrcG9pbnQoKS50bygnb3BhY2l0eScsMSkuZHVy YXRpb24oNDAwKS5nbygpO30pO3RoaXMuZmFuX2hpZGRlbi5mb3JFYWNoKGZ1bmN0 aW9uKGEpe0NTUy5oaWRlKGEpO30pO307Q29ubmVjdFdpZGdldC5wcm90b3R5cGUu Y29ubmVjdFVuZG9uZUhhbmRsZXI9ZnVuY3Rpb24oYil7dmFyIGE9Yi5nZXRQYXls b2FkKCk7RE9NLnJlbW92ZSh0aGlzLnN0YXR1cyk7YW5pbWF0aW9uKHRoaXMuYnV0 dG9uKS5mcm9tKCdvcGFjaXR5JywwKS50bygnb3BhY2l0eScsMSkuZ28oKTtDU1Mu c2hvdyh0aGlzLmJ1dHRvbik7dGhpcy5oaWRlTmV3RmFuKCk7dGhpcy5idXN5PWZh bHNlO307Q29ubmVjdFdpZGdldC5wcm90b3R5cGUuaGlkZU5ld0Zhbj1mdW5jdGlv bigpe3RoaXMuZmFuX3Nob3duLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoQ1NTLmhh c0NsYXNzKGEsJ2hpZGRlbl9lbGVtJykpcmV0dXJuO2FuaW1hdGlvbihhKS50bygn b3BhY2l0eScsMCkuZHVyYXRpb24oMTAwKS5jaGVja3BvaW50KC4yNSkudG8oJ3dp ZHRoJywwKS5kdXJhdGlvbigxMDApLm9uZG9uZShmdW5jdGlvbigpe0NTUy5zZXRT dHlsZShhLCd3aWR0aCcsbnVsbCk7Q1NTLmhpZGUoYSk7dGhpcy5mYW5faGlkZGVu LmZvckVhY2goZnVuY3Rpb24oYil7Q1NTLnNob3coYik7fSk7fS5iaW5kKHRoaXMp KS5nbygpO30uYmluZCh0aGlzKSk7fTtDb25uZWN0V2lkZ2V0LmxvYWRTdHJlYW09 ZnVuY3Rpb24oYyxhLGIpe25ldyBBc3luY1JlcXVlc3QoKS5zZXRNZXRob2QoJ0dF VCcpLnNldFVSSSgnL2FqYXgvY29ubmVjdC9jb25uZWN0X3dpZGdldC5waHAnKS5z ZXREYXRhKHtpZDpjLHVuaXFpZDphLGZvcmNlX3dhbGw6Yn0pLnNldFJlYWRPbmx5 KHRydWUpLnNldEVycm9ySGFuZGxlcihiYWdvZmhvbGRpbmcpLnNlbmQoKTt9O0Nv bm5lY3RXaWRnZXQubG9nZ2VkSW49ZnVuY3Rpb24oYyxhKXtpZihnZSgncG9zdF9m b3JtX2lkJykpe0RPTS5yZXBsYWNlKCQoJ3Bvc3RfZm9ybV9pZCcpLEhUTUwoYSkp O31lbHNlIERPTS5hcHBlbmRDb250ZW50KERPTS5maW5kKGRvY3VtZW50LCdib2R5 JyksSFRNTChhKSk7Zm9yKHZhciBiIGluIENvbm5lY3RXaWRnZXQuaW5zdGFuY2Vz KXtDb25uZWN0V2lkZ2V0Lmluc3RhbmNlc1tiXS5zZXRMb2dnZWRJbihjKTtDb25u ZWN0V2lkZ2V0Lmluc3RhbmNlc1tiXS5jb25uZWN0KCk7fX07Q29ubmVjdFdpZGdl dC5zZXRJc0Nvbm5lY3Q9ZnVuY3Rpb24oYSl7Q29ubmVjdFdpZGdldC5pc19jb25u ZWN0PWE7fTsKdmFyIEV4dGVybmFsUGFnZUxpa2VXaWRnZXQ9ZnVuY3Rpb24oYSl7 YS5lZGdlVHlwZT0nbGlrZSc7dGhpcy5wYXJlbnQuY29uc3RydWN0KHRoaXMsYSk7 dGhpcy51bmFjdGlvbkxpbms9RE9NLnNjcnkodGhpcy53aWRnZXQsJ3NwYW4udW5s aWtlX2xpbmsnKVswXTtpZih0aGlzLnVuYWN0aW9uTGluaylFdmVudC5saXN0ZW4o dGhpcy51bmFjdGlvbkxpbmssJ2NsaWNrJyx0aGlzLmNvbm5lY3RUb05vZGVPbkNs aWNrLmJpbmQodGhpcykpO3RoaXMuaGFzU2hvd2VkSW5zaWdodHM9ZmFsc2U7dGhp cy5zaG93SW5zaWdodHMoKTt9O0NsYXNzLmV4dGVuZChFeHRlcm5hbFBhZ2VMaWtl V2lkZ2V0LCdFeHRlcm5hbE5vZGVDb25uZWN0V2lkZ2V0Jyk7RXh0ZXJuYWxQYWdl TGlrZVdpZGdldC5MSUtFX0VER0VfVFlQRT0wO0V4dGVybmFsUGFnZUxpa2VXaWRn ZXQuUkVDT01NRU5EX0VER0VfVFlQRT0xO2NvcHlfcHJvcGVydGllcyhFeHRlcm5h bFBhZ2VMaWtlV2lkZ2V0LnByb3RvdHlwZSx7Z2V0U3luY0VuZHBvaW50TmFtZTpm dW5jdGlvbigpe3ZhciBhPXRoaXMuY29ubmVjdFRleHQ/dGhpcy5jb25uZWN0VGV4 dDonbGlrZSc7aWYoYT09RXh0ZXJuYWxQYWdlTGlrZVdpZGdldC5SRUNPTU1FTkRf RURHRV9UWVBFKWE9J2xpa2UnO3JldHVybiAncGxhdGZvcm0vJythKycvc3luYyc7 fSxnZXRDb25uZWN0aW9uRW5kcG9pbnROYW1lOmZ1bmN0aW9uKCl7cmV0dXJuICdw bGF0Zm9ybS9saWtlL2Nvbm5lY3Rpb24nO30sZ2V0UGx1Z2luTmFtZTpmdW5jdGlv bigpe3JldHVybiAnbGlrZSc7fSxwcmVzZW50SW5zaWdodHNQYWdlOmZ1bmN0aW9u KCl7d2luZG93Lm9wZW4oJy9pbnNpZ2h0cy8/c2s9cG9fJyt0aGlzLnBhZ2VJZCwn X2JsYW5rJyk7fSxzaG93SW5zaWdodHM6ZnVuY3Rpb24oKXtpZih0aGlzLmhhc1No b3dlZEluc2lnaHRzfHwhdGhpcy5wYWdlSWQpcmV0dXJuO3ZhciBiPURPTS5zY3J5 KHRoaXMud2lkZ2V0LCdhLmNvbm5lY3Rfd2lkZ2V0X2luc2lnaHRzX2xpbmsnKTtp ZihiKWZvcih2YXIgYT0wO2E8Yi5sZW5ndGg7YSsrKXtDU1Muc2hvdyhiW2FdLnBh cmVudE5vZGUpO0V2ZW50Lmxpc3RlbihiW2FdLCdjbGljaycsdGhpcy5wcmVzZW50 SW5zaWdodHNQYWdlLmJpbmQodGhpcykpO310aGlzLmhhc1Nob3dlZEluc2lnaHRz PXRydWU7fSxyZXBvc2l0aW9uRmFjZXBpbGVWZXJ0aWNhbGx5OmZ1bmN0aW9uKCl7 dGhpcy5zaG93SW5zaWdodHMoKTt0aGlzLnBhcmVudC5yZXBvc2l0aW9uRmFjZXBp bGVWZXJ0aWNhbGx5KCk7fX0pOw== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=161900_114240998641275_5830461_q.jpg Content-Type: image/jpeg; name=161900_114240998641275_5830461_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/161900_114240998641275_5830461_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A+/P+CD37Ynwa+MX7OFp8LR4qsYPG+iRQ2d/Y6klhbajqKRQq qSgQOJLxEUBBM8SOAoVi5Uu3zp/wWi/4JbeN/ib4m8RftGfBX4eXl14q065Nxr9l pOnMR4h09jlbyMKoDXcAKpKq8yoN+N0bGT4b/wCCZv7Xvxy/Zm/aL8P+HPhj8R5N E0fxb4isbHxBCdHjvkdHlEYkETQyvuXfn90u8gYGc1/QP+0Z4i1rw1Y+FvEug6nL 9vjLBdUhkVFuEZVLo0YPKsVRu4GMelfqma4fF8K8Ve3wtrVrtJ36bp6LTpZXto90 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 SeeaKK/Mj9LEJOTzRRRQB//Z ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=UlIqmHJn-SK.gif Content-Type: image/gif; name=UlIqmHJn-SK.gif Content-Location: http://profile.ak.fbcdn.net/static-ak/rsrc.php/v1/yo/r/UlIqmHJn-SK.gif Content-Transfer-Encoding: Base64 R0lGODlhMgAyAMQAAPP1+dzh7eXp8tHY58jR4s3V5O7x9vn6/Oru9NTa6Pz9/uns 8/b4+vX2+v7+//b3+trg7MvT5MfQ4vj5+9fd6t7k7uPn8MbO4czT5PHz+NXc6dbc 6dLZ6MbP4f///8TN4CH5BAAAAAAALAAAAAAyADIAAAX/YCeOZGmeaKqubJt+cCzP dG3feK7vfF8PFcMk4ivaCIGMZ+kJGJ8xDYBJHUCNmAd164FcexWuGPHVLcToR/km QLvV61nETffGY206unGPKfViDn0wDIBogx8HhmIdg4qLWxeDE5BbjX1alUyIU5pL iH+aCohnnhODBY+eG32lnh5wcRCvSwt9A7RNfRK5HIO5RH2znraIrwSIH6GLgskB mgbJHxeaCdIfBpCj1x+QVtzLdNwwnYDjiYuX15AY3LyLGtcEmvHJGpoC0nmQfMkK nsHidLCQC0FAKBgQ5KKSwZeRDeUWUjngZIcEC/8k0lnQzsaAbBoXNaAwgwKlkKIq A3wIAQA7 ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=372305_100001897708848_1060878486_q.jpg Content-Type: image/jpeg; name=372305_100001897708848_1060878486_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-ash2/372305_100001897708848_1060878486_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A/Ozw78fPin8D/hf8R/2XLaa/s9H8Sa1FFDewAl7NWkAuokI4 BdCqlRyAc96wvGXwG+F+heEdN134a6pq8Ot7Bc2l0Q4KSq3y5+UFW3LxjkdenNL8 PrH9of8AaH8TalrngT4T217bJrdxqd3dXaEW0ly4jDJljggCNVwOnNd74c+MOn2l hqHgL4r6BBo3ifTbdwLK5hxhAOGjPoFAx1GAT3r5WpOpCdoPVbpP80fXUMLhJqba spXs2n+D0P0//wCCfvxd8V/HX9kHwN8TfHMvm6xfaU0WozkAGaWCaSBpCB0LeVuP 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 fS1j5+lv8zzHJ9TRRRXoLY9A/9k= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=49229_585119249_9537_q.jpg Content-Type: image/jpeg; name=49229_585119249_9537_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/49229_585119249_9537_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A+T9L+Ecy6bBc6vozRiayzNBF87YLOuffivzp+IXhyLwn471n wzb3EcsdlqU0MUsThldVchSCODwBX7PWttoi+ItNtLiMRqdITmVflYmRx+PIr89v +Ct/7Nfhn9nb9pa1ufBGgpY6J4n0OHUra2i3BFnBKThc9MsA2B0315eXcSRzKp7K T16H9AeJdX6/l1Gql/Df4SsvzSPlm03LKeM7lD8e3/6q7HwR4tn8EeKtF8ZQ+W9x p0jeVBMjMsvylSDjkd+a1fhR8AvGHxM0qXxn4T0gz6Zp8ssWpSXVzHCkLBAyjzHK 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 2Q== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=173903_553186323_5456258_q.jpg Content-Type: image/jpeg; name=173903_553186323_5456258_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/173903_553186323_5456258_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A8s8X6Na6NbSazDblFRGaTb0A9wT0rwKT4yxTeIjF4X8O27Rt MTNdhSrSY4wDwQuew5Ne9fHTVXh+EevTI7bl02Q7kbBA2814j+zd+zfN4r8J23iP X4JHN3EXtrZGPyqTxx79a+Iwc406Uqk9bWt8z9LjSrYzloRdluyh8W9Q8O+N7KPT kurKS9PzXNurFmQ/7vOT714b4p8HyWl8YJNFklYkiNpIiAF7nnp+FfdXw8/Yw1O+ 1aWTw/4WcPEm4ySxkLxnqTwfpXCfFz4Yf2PqFxb6zooknimzNKSGLYPC9xiqo5xC jU5OjN6/DtSdNtPU+ZfgR4l+KvwQ8WzeMvAd61jMsDRFbmPIkB5C4P3u2M5r9Iv2 d/jpqvxy+DVt40l8Om1vI08q/S5XpKBy3ynHPXHbNfnv4v8AiHb6b4tudKS1ECqm PKkiBV277gRx+FfVf/BMfxfNqHw38X6VI7PDDf29ykUg+SHzFYFQT/u+td+Pkq2E dS1pKzv5HyyoKFXkZ7pLqOprKy/ZoThiM/N/jRVaTUIPMbLJnJz8wor5v6xL+Z/c d/1en2PP/Fq+Dv8AhF9Wt/Hl5FaaZJYSRzSNk4UrjIABJPPQDNeUaH+2DcfBNdL8 NeCPh9p2pwwWqx21y90VlmRVA37WGe3TAxXonjW5i1B4NOu3BSSZVO7uM+lWviH+ y5o+qWEHjzS5IWgvwiXFvDOFnWToRtIJwT6GuqEqNKhaotG+/ke/gKdetWl7J2aN fxD/AMFHfitZ/CO38QQeEo/sdwHRFkIRWdfvKWA7eleIQ/tWeLPiHptxrus+A9JF rLIzSSxX++VQOSR7DuSK+3P2hP2bfhfc/sa+HfhNoV9HLqWjQG7mS0dWZpCpL7yT yBkjnNfNWm/se+KrfwHb+IbjT9NfTooSYVhv42cKevyZ4B+ledTq4G03y9T6uthM w5oty0t26nxn+1YPD+pXlp438GTyedOhNxHBGxAGM78jgV9I/wDBOLSPEfhj9nvV fGuv2bRt4n1RRYFgd0kUI278dwXZh77TXEfEPwHpmseNfD2kyacsq2F1LJ9jCbld UTITaOMbse1fTHwx8Dat/wAIHYpf3LRgTyTW8GMiNC+VAH0H6161XHN5ZHDxu79X 2vsfHYzKpQxU8XUklqlZLfTVmiljqEiCRZRhhkfKP8aK2BoOtqAq3L4A4wnH86K8 f2Vfsc/Oj58/aFn1vT7Q3umF1eA71KHpTPCvxo8Wf8IfYa4YpGu3UoYpYN4LnjeE bhsckZ471+gyf8E2fAmkfDzVfFvxw0fW31LRtOOox6K4EUN6gzsXIBZl3bVcAgjd jjOa/Nvxx4mvrx7u6vbY/abHXpLO8lij2BXy2CqgAIuQQF6AECvrJZTWlhJc6V4t M48BnFOhjoqL+LQ17rx78U7Qx3f/AAmV2kceC8UdocyAnJVtpwc+lb+gfGLXNV0e 8+1vNbIJABArFBk9tpPArgbvxj4cVDeHxDIsyrh4Xk+UHHp61ztr4qvLi4muLFpZ fNbKk5GT64xXz9XC+0vHlsfoDzGlHl5W9u9z2P4J+F9M8cfFS4t7/X4ILiGweaOA unnSbnA+UHnAGckdOPWvpK20oWlukEEYxGgVfmGQAK+A7TTNVfx9ZX6Tz2+pW0aT 2s0cpVpAXxJGD2IBX8z6V+h/7LPjL4CXmnr4H/ad8T/8I88rqdO8SbssyYJKMuDu PGOBnPrkV6UMr9rSjKEtbef6HxeZ5jW9u41F7q2/AzvsT/3h+VFfRqfAn9iO5QXN p8eb2SKQbopBbTYdTyD/AKnuKKX9iYr+r/5Hl/2jh/6t/mfZ37cf7j4L2UsPyMwe FmXgmNovmQ/7JwMjocCv5+9etbX+yfioPs0fy6zKV+QcES8EUUV9mv8Ada3p/kfN YX/eqXr+p5veQQNArtChOM5Kj2q9o8MI1GICJcbh/D70UV8KvgXzP1bD7ou+IFVP FmlsoAP9okZHpsFfRfiqys5/DqvPaROVuICpeMHBDCiivbyf4qXqfPcRfxZeh6Vo 0kkej2kcblVW2jCqpwANo4ooor6N7nxR/9k= ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=369951_1311456151_2128490933_q.jpg Content-Type: image/jpeg; name=369951_1311456151_2128490933_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/369951_1311456151_2128490933_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A+ZYZv2qPChsfgvp+uaXPb/2bEFs9NsJ7lrcLJlldkjIV8lic 8AMOeeKWlftMftAfCr4S6346m8Zi7uTf/YYrPUGXbYuWO4iJvmLDdtwpAXOSp7fW egfs22XgDxpe/E6z8bXV5IZXuVtL2xjYQrscGONk2kA7gec8r7mvz9/ac+NGlXvx P1vxX4u8Owapot1rhcac91JADMkca7laI5GECggk9ePUfXVIeyXNex4tBxnKzR2/ gv8AbK+MHirxPHq2u+I7hY7K3lK3EDFR5mIjuChQ+0gL8o3DDDgcV6HH8MPj5+1B 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 2Q== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=372230_747793422_825372493_q.jpg Content-Type: image/jpeg; name=372230_747793422_825372493_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/372230_747793422_825372493_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A8a/4KK/sz/tCftG/FfVZ/BXhbV9aggupY5royCZbd1blZCuY ocnkKGBwPuCvgz4tfsGftB/Dmxl8ReLfDDW+nR5L3Malyo9dq8gZ45xX9hmu/AL4 daf8P73wh4V8I2trFcyyTbIogN0rnczE9SSe9fGn7Sfwf+AvhHwJd+HfiVp2kuuq XE8NnoSxLJc6q6DMixRD5m2/xNwq9WYDJrMzP5P7mxWG8FtcyhEEgV5NpO0Z5OP6 V/YJ/wAEvP2NPgX/AME//wDgnn4f8PfAjQBZXmt6TaaprniKe1C32r3cqK6zXBYZ +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 2Q== ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=23082_100000878905897_6657_q.jpg Content-Type: image/jpeg; name=23082_100000878905897_6657_q.jpg Content-Location: http://profile.ak.fbcdn.net/hprofile-ak-snc4/23082_100000878905897_6657_q.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1 c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEB AgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwL CgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQE AAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY 2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a AAwDAQACEQMRAD8A/Xq7vRqdnD9kkUZwVJPU8ZJqBtPgUCOZmV2GQxJyPw+tZnhV BrOjPZ22omCaaJlhnIJ8s7cA9e3X+teT6x8I/izpvxC1fxN4O8GWcOpSa/5lhqVj MEJsv7HWMmRm/wBbF9q3kwONzShJDlV31+WzjGrqfXUoJtpux7dNpg1G3DRM+C6l zu2/KPX68fnVG90610nTmmMbzmIsx2JzgnoB09B9K8s1Sy/an0/xBc+JpdCimN59 htJbWO5jiQW8U1+WVGjlDoTHLayl9wPmEpyq7a522+OHxanv5PCugXlpqeqve6ha W1lcQhle4gtOIs79xVJdrsN5JXq652UOnyq0dyo0JTekk0e+2ehwrpy6jLaSRzMM hWGGUk8ZGffpSJc2tverpbXy7zGSYzjJX1x6dB+VeZ/8JL+2DLcyWv8AwiejxWT3 0qNfTRxmeO22RiOZUWYh3Bd3KEDc0JGFDKKk8J3PxiufEUnjHx/4D0qPXLaPTLbS o4CpYQztbHVchJnA2mMmM5zlR98cHJwlGN2w9la92vvO1n8NXEUzxwa1cxorEJHH bRbVGeAMp0FFbxmlBw3l5HXH/wCqio5Zd/xMrxOI+GWrSQ22Ln5FBG0KOR/kV6HP runWNuZZI3UzSxQnI6FnCA5zjkkf/rrzL4bxqH8hxyzffxkA/jXoWvy6dpugiC8s rS5S9k8gx38ypA5KsdrsVYBcKR905JAxzWuGleLsGIinM8g8W/tHaz4c+LOuxapo 2p3WgxWFjDoSwR25SSZX1E3k0bA75MLDEGUnC+WvClyX0vDXjjVrK3jTxPFNP5yW pFwWC/ZXmWFpX3HH3ZbuMBecImR905h8G/tReFrx9B03xN8PotGtdX0qG/sbm2uh Pbw2k0ET26KVjUmZmlWLyQoIYrt3h03ax+PfwK1nUG0KHVdOutLksrhrvUPtSNC2 ZYIkUBd29JftMuGyMeS5xtO4dUoy0vqb8rWns/6X6nJXH7Xem2d3d2cvgjWJZ7TT o57gpAi27MZxAyb2bK7WE7bSBlYjjJKg+qaRfLq8yalp7SwLPpqXBSRQ21WCkDcC QCOehI9+Kp3vxn+E8mpto0/xD0a3aJZTcRS3cWVEcrxOxVjwEljdSf4SvPauht4t N1u3h1PT9VtbizubYSW9xFKWWRDghlI4KkEHPTpXPKCmtLrUxqySStC39ehz41jS SAZMFv4iSOTRW8+h+H3cubeFsnOdo5/Sip+rIy9qzlvC1jbaFbxTzXBQzTBFD5OW 7da62PxNo9xBdaRp2s201xZnbcQRzqZI2bpuGcrn3qh4XeC4szAz5KsAm4A/jUeo /C/wDqOsXXiK58NxteXKsJpfNkG4NH5bHAbHKcZx2z15p06SivdZc5KUveMK++DP wo0Lwno2iR6KEsvC+nxW+nN9qYeRFC0EituzyytawtvJyTHyTyKz9G/Zz+Fljr0W uadYCC0h0uOzt9KjeRnsnDSMWSQuWTek7qy992etaGofBT4UafY/2UnhCRraeOJb qL7TO5YIf3fAcnjHb0BPSp4fgb8H7YAv4LUNJcNMz/bJss2Blid+TkdunAHYVpqu ty1V923M/wCvmUdQ+BvwPl1I3Go+E7VZLuzezj82+ly0XmvMVRd3BLyuxZcHL46V 2mg6fo+ieH7Pw3pVqsUVrYLHY2pkLkQIFVQNx3FQCgyc4yPWsmy+GPw2+1XOp2Oi rHNOygyR3LnON20gbjj7x6e3pTvD/wAMfhv4O8QJrmh6I9re7Hijc3cr5DAZ+VnI 7dxxn3NXG7i3JmVSfMrXf9fMurp+tIoTzYOBjiA0VqC7tYx5eGbbxuLnJ96Kj2a7 v7yLs4/w9x0/57f1rs4VURgBR1x0oop0+pU+hnysxunBYkZTgn3NQas7xX0KxuVD RSlgpxk+poopz2/ruKHxFrRf+PcD/pqf5CkvCUukKnGWTOO9FFVS2Yp/EaDu6uQH IAPABoooqepkf//Z ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=adnetobject11.htm Content-Type: text/html; name=adnetobject11.htm Content-Location: http://adonline.e-kolay.net/adnetobject11.asp?target=radikal_sitegeneli&ks=2&PID=2705&c=h&g=h Content-Transfer-Encoding: 8bit var adDefaultBodyText; if(adDefaultBodyText == null || adDefaultBodyText == ''){adDefaultBodyText='Bu alanda reklamınızın yayınlanmasını istiyorsanız hemen tıklayınız!';} var adDefaultHeaderText; if(adDefaultHeaderText == null || adDefaultHeaderText==''){adDefaultHeaderText='Bu Alana Reklam Verebilirsiniz!';} var adDefaultFooterText; if(adDefaultFooterText == null || adDefaultFooterText == ''){adDefaultFooterText='Siz de reklam verin.';} var Satis = 'http://www.adnet.com.tr/LandingPage.Aspx?PID=2705' document.write('');var clickurl='http://adonline.e-kolay.net/clk.asp?RID={0}&TID={1}&URL={2}&CookieEnabled={3}&tk=radikal_sitegeneli&cn=213175' var ImgUrl='http://img.adnet.com.tr/' var pID=2705,div2id=null,ks2=2,g2='h',c2='v' document.write('
');var _Adson=[{adid:31800,targetid:1077,ishealth:1,adtypeid:3,header:"Yılbaşı ÖZEL Paketi..",content1:"Heyecanı BOL Renkli Geceler İçin..",content2:"GÜÇ Kontrol Güven.Aradğınız Her Şey",imagepath:"Ad_Images/3/20111201/df05be95c0c3440583d46af73c1f8e93.jpg",visibleurl:"www.boboturkiye.com",prefix:"http://",targeturl:"www.boboturkiye.com",phone:"",hb:"a189d396"},{adid:31657,targetid:1077,ishealth:0,adtypeid:3,header:"GUARANA İnceltici Krem",content1:"Vücudun belirli bölgelerinde",content2:"incelme ve sıkılaşma için özel",imagepath:"Ad_Images/3/20111122/59ad078a889f40119a1f8dec7959b938.jpg",visibleurl:"www.herseyseninicin.com",prefix:"http://",targeturl:"www.herseyseninicin.com/ozel-urunler/GUARANA/40",phone:"",hb:"5e56f5ab"},{adid:31821,targetid:1077,ishealth:0,adtypeid:3,header:"Eğlence Gametwist.net'de",content1:"Okey, tavla ve daha birçok",content2:"oyunu oynamak için hemen kaydolun",imagepath:"Ad_Images/3/20111202/7ec8c870d5584d589df4aa5df75e23ee.gif",visibleurl:"www.gametwist.net",prefix:"http://",targeturl:"www.gametwist.net/bridge.asp?idr=20301&lang=tr&ida=0000007",phone:"",hb:"96838a73"},{adid:82400015,targetid:1077,ishealth:0,adtypeid:3,header:"GRAYBAN TÜRKİYE",content1:"Saçlarınıza Farklı ve Genç Görünümü",content2:"Kazandırın 12 Taksit 0216 4052526",imagepath:"Ad_Images/3/20111215/dbd709d64f76425.gif",visibleurl:"www.graybanturkiye.com",prefix:"http://",targeturl:"www.graybanturkiye.com/redirect.php?site=adnet&utm_source=ADnet&utm_medium=TIKLAMA&utm_campaign=ADnet_Kampanya",phone:"",hb:"45f7ba26"},{adid:87000004,targetid:1077,ishealth:0,adtypeid:3,header:"Havanızın konforu için",content1:"Klima, VRF Klima, Dış Ünitesiz Klima",content2:"tüm ihtiyaçlarınız için tıklayın.",imagepath:"Ad_Images/3/20111215/a9f20a9034284cf.gif",visibleurl:"www.klimaci.com/",prefix:"http://",targeturl:"www.klimaci.com/?utm_source=ADnet&utm_medium=TIKLAMA&utm_campaign=ADnet_Kampanya",phone:"",hb:"0c4986dd"},{adid:87601067,targetid:1077,ishealth:0,adtypeid:3,header:"Aşk Mesajı",content1:"Sevimli ayıcığın içinde aşk mesajı!",content2:"Hediyeleri sepetinde, 44,90 TL!",imagepath:"Ad_Images/3/20111215/b4771e39013e45b.gif",visibleurl:"hediyeleradasi.sanalpazar.com",prefix:"http://",targeturl:"www.sanalpazar.com/Ask-Mesajiniz-Sevimli-Ayicigin-Icinde-Hediye-Sepeti__isp1971234?utm_source=Adnet_TXT&utm_medium=hediyeleradasi&malid=ADTXT",phone:"",hb:"e8e880d7"}];function _sB(ColumnCount__,g__,c__){if(typeof(_showBanners___)!='undefined'){_showBanners___(ColumnCount__,g__,c__);}else{setTimeout('_sB("'+ColumnCount__+'","'+g__+'","'+c__+'");',250);}}_sB('2','h','h'); ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=twitter_detay.htm Content-Type: text/html; charset=ISO-8859-9; name=twitter_detay.htm Content-Location: http://www.radikal.com.tr/twitter/twitter_detay.php Content-Transfer-Encoding: 8bit ------------W3sjLlB6dNUmUe9578Qmr0 Content-Disposition: inline; filename=radikal_twitter_button.png Content-Type: image/png; name=radikal_twitter_button.png Content-Location: http://www.radikal.com.tr/twitter/radikal_twitter_button.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAGMAAAAaCAMAAACUyBKuAAAAA3NCSVQICAjb4U/g AAABRFBMVEX///+1xQe1xQe1xQe1xQe1xQe1xQe1xQe1xQe1xQe1xQe1xQfY/lLT +UrR90fP9ETN8kDK8DzI7TjK6DXE6EPE5zzD6DC95kK95jq+4yfF3yi93zG84CO6 3Di53R/C2iK42ym32xu22Cm22DG12Ri+1iC81hu01iGz1hS90Rax0TSv0g61ziG1 0BCuzzGt0Quu0B26zRCtzS23zBqszhmszg64ygywyBioyhatxSmnxjC1xQelxSCs xBKkxQmjwiqrwgyrwAehwBmlvgifvhaeuyyfvwicvSGcuSmcuhGauQiZtSSXtCGX tgiUsCiSrxiOqhGMqA6JoyGEnhmDnCN9lRh5kRJ4jht1ixd1jAtziRNxhxBugxdt gwpsgRNpfg9ofAxmewpkdxFjdhBgcwpecQhabA5YaglRYQpIVwdIVgY/TANTyl+a AAAAbHRSTlMAESIzRFVmd4iZqt3///////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////+ldFTpAAAACXBIWXMAAAsSAAALEgHS3X78AAAA HHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABZ0RVh0Q3Jl YXRpb24gVGltZQAwMy8wMi8xMesgNKEAAAJLSURBVEiJtZbvUxJRFIYXEFi0CFgh aBOMItDUEMHUJVMBC7RIDIIgJKD94fv/f+/sXqQvd5vZmfb5cPdw7jvnuewywwqC idcvhv4/ot8rPOALKec1NzhXQj6mCCq1z63LUze4rClBU7GitFqnb93iVFkhx2qt VXnjHpVVetxKs1JwE8UrBM7qdruDn8vyBrBO0gSa3OzNb36/UNgNCOLZ0Ss+A/xa 1l+BsnmtA3VetmzTJ3ZFQXxffsFngMmyJkfRJmZRJIfNluUoprn0QLSP5rQO021y pOfQLoALDUNqTliqOAG0dtHMavw5liP/nAtz6OaKHjnyQ+j5KlDVrBbmVop9aFsO /pwtcrzLp/j0cJdqQ8+mNMxpSA/31RRzUEEn+EiZW2hmUMtS32bMa9ORTfDp4o7W 6+6MjnhtHvRHIsEcVCTucUvrjH0nbFLfZozl2LR1jBNZ1RqhWg4cJ45pUdFdOtSF w+z/yyFLfMgh9aF35THGV0CfLlIJKKno066BDq0zq5Ykmfo2Y3LkOJBjfLqYxqZQ Yy91jMghm/OZw7iiTZQo04FRotCUHB9sxmTIsZOM8unQPTDYrVA/AcnoCKM9YG9x f0ZmJsl+dydRCur8MZYjHuETnwKNEQ07gdEA4pENA9vAtopv1P3OQhtUqo1I5Atd +GPIEdxZf+IMcjiJZ4KC/2A97AxyOInn/ILn8OljZ5DDQTp86BHogTh0OOOZSP+D npD8yD2kkIe9luTCLhnCmYcXEyGwtr/lBvtrAeEvXp8bLF7h/gDTsnebYItYFQAA AABJRU5ErkJggg== ------------W3sjLlB6dNUmUe9578Qmr0--