=
=
=
=
A=
r=FEiv
=
=
=
=
=
=
=
=
=
=
=
=
=
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=
=
=
=
=
=
=
=
=
=
=
=
------------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
------------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
------------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
------------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--