Demo wird geladen … Falls dieser Text bleibt, wird JavaScript auf dieser Seite blockiert oder verzögert (Caching-/Optimierungs-Plugin).
CihmdW5jdGlvbiAoKSB7CiBmdW5jdGlvbiBrelN0YXJ0KCkgewogIHZhciBob3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t6LWRjYi1kZW1vJyk7CiAgaWYgKCFob3N0IHx8IGhvc3Quc2hhZG93Um9vdCkgcmV0dXJuOwogIHRyeSB7CiAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3otZGNiLWZvbnRzJykpIHsKICAgIHZhciBsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpOwogICAgbC5pZCA9ICdrei1kY2ItZm9udHMnOyBsLnJlbCA9ICdzdHlsZXNoZWV0JzsKICAgIGwuaHJlZiA9ICdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PU1vbnRzZXJyYXQ6d2dodEA0MDA7NjAwOzcwMCZmYW1pbHk9SW50ZXI6d2dodEA0MDA7NTAwOzYwMCZmYW1pbHk9TGF0bzppdGFsLHdnaHRAMCw1MDA7MCw3MDA7MCw5MDA7MSw5MDAmZGlzcGxheT1zd2FwJzsKICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobCk7CiAgfQogIHZhciByb290ID0gaG9zdC5hdHRhY2hTaGFkb3coeyBtb2RlOiAnb3BlbicgfSk7CgogIHZhciBUID0gJyMyRTY3ODInOwogIHZhciBDU1MgPSAnOmhvc3R7YWxsOmluaXRpYWw7ZGlzcGxheTpibG9ja30qe2JveC1zaXppbmc6Ym9yZGVyLWJveH1idXR0b257Zm9udDppbmhlcml0O2N1cnNvcjpwb2ludGVyfXB7bWFyZ2luOjB9JyArCiAgICAnLnd7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzRhNWY2Yjtmb250LWZhbWlseTpNb250c2VycmF0LHN5c3RlbS11aSxzYW5zLXNlcmlmfScgKwogICAgJy5te2Rpc3BsYXk6ZmxleDtnYXA6NTZweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjI4cHggMjRweCAxMHB4O2ZsZXgtd3JhcDp3cmFwfScgKwogICAgJy5wbnttYXgtd2lkdGg6NDcwcHg7ZmxleDoxIDEgMzQwcHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MjJweH0nICsKICAgICcudG9we2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxNnB4fScgKwogICAgJy5lYntmb250OjYwMCAxNXB4LzEuMyBNb250c2VycmF0LHNhbnMtc2VyaWY7Y29sb3I6JyArIFQgKyAnfScgKwogICAgJ2gxe21hcmdpbjoxMnB4IDAgMDtmb250OjcwMCAzOHB4LzEuMTIgTW9udHNlcnJhdCxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0uMDFlbTtjb2xvcjonICsgVCArICd9JyArCiAgICAnLmxne2Rpc3BsYXk6ZmxleDtmbGV4Om5vbmU7Ym9yZGVyOjJweCBzb2xpZCAnICsgVCArICc7Ym9yZGVyLXJhZGl1czo5OTlweDtvdmVyZmxvdzpoaWRkZW59JyArCiAgICAnLmxnIGJ1dHRvbntmb250OjcwMCAxMnB4LzEgTW9udHNlcnJhdCxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4wOGVtO3BhZGRpbmc6OXB4IDE0cHg7Ym9yZGVyOjA7YmFja2dyb3VuZDojZmZmO2NvbG9yOicgKyBUICsgJ30nICsKICAgICcubGcgYnV0dG9uLm9ue2JhY2tncm91bmQ6JyArIFQgKyAnO2NvbG9yOiNmZmZ9JyArCiAgICAnLmludHJve2ZvbnQ6NDAwIDE3cHgvMS42IE1vbnRzZXJyYXQsc2Fucy1zZXJpZn0nICsKICAgICcuY2FyZHtwYWRkaW5nOjIycHggMjRweDtib3JkZXI6MXB4IHNvbGlkICNkZGU1ZTk7Ym9yZGVyLXJhZGl1czoyMHB4fScgKwogICAgJy5zaXtmb250OjYwMCAxMnB4LzEgTW9udHNlcnJhdCxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4wOGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjonICsgVCArICd9JyArCiAgICAnLnRpbnR7bWFyZ2luLXRvcDoxMnB4O3BhZGRpbmc6MTZweCAxOHB4O2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOiNlOGYxZjR9JyArCiAgICAnLnN0e2ZvbnQ6NzAwIDE5cHgvMS4yNSBNb250c2VycmF0LHNhbnMtc2VyaWY7Y29sb3I6IzFkM2E0OH0uc2x7bWFyZ2luLXRvcDo4cHg7Zm9udDo0MDAgMTVweC8xLjYgTW9udHNlcnJhdCxzYW5zLXNlcmlmfScgKwogICAgJy5kb3Rze21hcmdpbi10b3A6MTZweDtkaXNwbGF5OmZsZXg7Z2FwOjdweH0uZG90cyBidXR0b257d2lkdGg6MTJweDtoZWlnaHQ6NnB4O2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlcjowO3BhZGRpbmc6MDtiYWNrZ3JvdW5kOiNkZGU1ZTk7dHJhbnNpdGlvbjp3aWR0aCAuMnN9JyArCiAgICAnLmRvdHMgYnV0dG9uLmR7YmFja2dyb3VuZDojOGZiMGMwfS5kb3RzIGJ1dHRvbi5vbnt3aWR0aDozMHB4O2JhY2tncm91bmQ6JyArIFQgKyAnfScgKwogICAgJy5yb3d7ZGlzcGxheTpmbGV4O2dhcDo4cHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwfS5sYntmb250OjYwMCAxMXB4LzEgTW9udHNlcnJhdCxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4xZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOicgKyBUICsgJzt3aWR0aDo3MHB4fScgKwogICAgJy5zZ3tmb250OjYwMCAxM3B4LzEgTW9udHNlcnJhdCxzYW5zLXNlcmlmO3BhZGRpbmc6MTBweCAxNnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Ym9yZGVyOjJweCBzb2xpZCAjZGRlNWU5O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjonICsgVCArICd9JyArCiAgICAnLnNnLm9ue2JvcmRlci1jb2xvcjonICsgVCArICc7YmFja2dyb3VuZDonICsgVCArICc7Y29sb3I6I2ZmZn0nICsKICAgICcucGx7cGFkZGluZzoxNnB4IDI0cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtib3JkZXI6MnB4IHNvbGlkICcgKyBUICsgJztiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOicgKyBUICsgJztmb250OjcwMCAxNHB4LzEgTW9udHNlcnJhdCxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4xMmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0nICsKICAgICcucGw6aG92ZXJ7YmFja2dyb3VuZDojZThmMWY0fS5wbC5wcntiYWNrZ3JvdW5kOicgKyBUICsgJztjb2xvcjojZmZmO3BhZGRpbmc6MTZweCAzMHB4fS5wbC5wcjpob3ZlcntiYWNrZ3JvdW5kOiMyNDU0NmJ9JyArCiAgICAnLmZ0e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo2cHggMjRweDtmbGV4LXdyYXA6d3JhcDtwYWRkaW5nOjEwcHggMjRweCAyMnB4O2ZvbnQ6NDAwIDEzcHgvMS41IE1vbnRzZXJyYXQsc2Fucy1zZXJpZjt0ZXh0LWFsaWduOmNlbnRlcn0uZnQgYntjb2xvcjonICsgVCArICc7Zm9udC13ZWlnaHQ6NjAwfScgKwogICAgJy5kdntmbGV4Om5vbmU7cG9zaXRpb246cmVsYXRpdmV9LmR2aXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7dHJhbnNmb3JtLW9yaWdpbjp0b3AgbGVmdDt3aWR0aDo0MTRweDtoZWlnaHQ6ODc0cHg7cGFkZGluZzoxMnB4O2JvcmRlci1yYWRpdXM6NjJweDtiYWNrZ3JvdW5kOiMxYzFjMWU7Ym94LXNoYWRvdzowIDAgMCAycHggIzNhM2EzYywwIDMwcHggNjBweCByZ2JhKDI5LDU4LDcyLC4yNSl9JyArCiAgICAnLnNjcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDozOTBweDtoZWlnaHQ6ODUwcHg7Ym9yZGVyLXJhZGl1czo1MHB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiNmZmY7Zm9udC1mYW1pbHk6SW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6IzFhMWExZn0nICsKICAgICcuc2J7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7dG9wOjA7aGVpZ2h0OjU0cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjAgMzRweCAwIDQwcHg7Zm9udDo2MDAgMTVweCBJbnRlcixzYW5zLXNlcmlmO3otaW5kZXg6M30nICsKICAgICcuaXNse3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO3RvcDoxMXB4O3dpZHRoOjEyMnB4O2hlaWdodDozNXB4O21hcmdpbi1sZWZ0Oi02MXB4O2JvcmRlci1yYWRpdXM6MjBweDtiYWNrZ3JvdW5kOiMwMDA7ei1pbmRleDo0fScgKwogICAgJy5iYXR7d2lkdGg6MjVweDtoZWlnaHQ6MTJweDtib3JkZXI6MS41cHggc29saWQgY3VycmVudENvbG9yO2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmc6MS41cHg7b3BhY2l0eTouOX0uYmF0IGl7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDo3NSU7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7Ym9yZGVyLXJhZGl1czoxLjVweH0nICsKICAgICcuaG9tZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwJTtib3R0b206OHB4O3dpZHRoOjEzNHB4O2hlaWdodDo1cHg7bWFyZ2luLWxlZnQ6LTY3cHg7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZDojMWExYTFmO3otaW5kZXg6M30nICsKICAgICcuYm9keXtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDo1NHB4IDAgMCAwO292ZXJmbG93LXk6YXV0bztzY3JvbGxiYXItd2lkdGg6bm9uZX0uYm9keTo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lfScgKwogICAgJy5wZ3ttaW4taGVpZ2h0OjEwMCV9JyArCiAgICAnLnN0YXJze3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudCgxLjVweCAxLjVweCBhdCAxMiUgMTglLCNmZmYgNTAlLHRyYW5zcGFyZW50IDUyJSkscmFkaWFsLWdyYWRpZW50KDFweCAxcHggYXQgMjglIDYyJSwjZmZmIDUwJSx0cmFuc3BhcmVudCA1MiUpLHJhZGlhbC1ncmFkaWVudCgxLjVweCAxLjVweCBhdCA0NiUgMTIlLCNmZmYgNTAlLHRyYW5zcGFyZW50IDUyJSkscmFkaWFsLWdyYWRpZW50KDFweCAxcHggYXQgNjQlIDQ0JSwjY2ZjOGZmIDUwJSx0cmFuc3BhcmVudCA1MiUpLHJhZGlhbC1ncmFkaWVudCgycHggMnB4IGF0IDg0JSAxNiUsI2ZmZiA1MCUsdHJhbnNwYXJlbnQgNTIlKSxyYWRpYWwtZ3JhZGllbnQoMXB4IDFweCBhdCA5MiUgNTglLCNmZmYgNTAlLHRyYW5zcGFyZW50IDUyJSkscmFkaWFsLWdyYWRpZW50KDEuNXB4IDEuNXB4IGF0IDclIDgyJSwjY2ZjOGZmIDUwJSx0cmFuc3BhcmVudCA1MiUpLHJhZGlhbC1ncmFkaWVudCgxcHggMXB4IGF0IDM4JSA5MCUsI2ZmZiA1MCUsdHJhbnNwYXJlbnQgNTIlKSxyYWRpYWwtZ3JhZGllbnQoMTIwJSA5MCUgYXQgNzUlIDIwJSwjNWEyZmIwIDAlLCMyNDE2NWEgNDIlLCMwZDBhMjQgMTAwJSl9JyArCiAgICAnLnBsYXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzUlIDMwJSwjZmZjNDhhIDAlLCNlMjU3MmMgNTUlLCM1ZTFhM2EgMTAwJSk7Ym94LXNoYWRvdzowIDAgNzBweCByZ2JhKDI1NSwxMjAsNjAsLjQ1KX0nICsKICAgICcucmluZ3twb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MnB4IHNvbGlkIHJnYmEoMjU1LDIxNCwxNjAsLjU1KTt0cmFuc2Zvcm06cm90YXRlKC0xNGRlZyl9JyArCiAgICAnLmdvbGR7Zm9udC1mYW1pbHk6TGF0byxzYW5zLXNlcmlmO2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjkwMDtsaW5lLWhlaWdodDouOTtsZXR0ZXItc3BhY2luZzouMDJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCNmZmY2ZDYgMCUsI2ZmYzIzZCA1NSUsI2UwOGExMiAxMDAlKTstd2Via2l0LWJhY2tncm91bmQtY2xpcDp0ZXh0O2JhY2tncm91bmQtY2xpcDp0ZXh0O2NvbG9yOnRyYW5zcGFyZW50fScgKwogICAgJy5hcmVuYXtmb250OjcwMCAxNXB4LzEgTGF0byxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi41MmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjojY2ZjOGZmfScgKwogICAgJy5jb2lue2ZsZXg6bm9uZTtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzUlIDMwJSwjZmZmMWI4IDAlLCNmZmMyM2QgNDUlLCNkOThhMGYgMTAwJSk7Ym9yZGVyOjJweCBzb2xpZCAjYTg2ODBhO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgNHB4IHJnYmEoMjU1LDIzNiwxNzAsLjU1KSwwIDRweCAxMnB4IHJnYmEoMCwwLDAsLjM1KTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1mYW1pbHk6TGF0byxzYW5zLXNlcmlmO2ZvbnQtd2VpZ2h0OjkwMDtjb2xvcjojOWE1YzA2fScgKwogICAgJy52aXB7ZmxleDpub25lO2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsIzdiNGRmZiwjM2ExZjhmKTtib3JkZXI6MXB4IHNvbGlkICNmZmMyM2Q7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQ6aXRhbGljIDkwMCAxNHB4LzEgTGF0byxzYW5zLXNlcmlmO2NvbG9yOiNmZmMyM2R9JyArCiAgICAnLmJhcntoZWlnaHQ6OXB4O2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQ6I2VjZWNmMH0nICsKICAgICcucGt7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDt3aWR0aDoxMDAlO3BhZGRpbmc6OHB4IDEwcHggOHB4IDhweDtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNSk7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xKTtjb2xvcjojZmZmO3RleHQtYWxpZ246bGVmdH0nICsKICAgICcucGsub257YmFja2dyb3VuZDpyZ2JhKDI1NSwxOTQsNjEsLjEpO2JvcmRlci1jb2xvcjojZmZjMjNkfS5wayAubntmb250OjYwMCAxNnB4LzEuMSBJbnRlcixzYW5zLXNlcmlmfS5wayAudHtmb250OjQwMCAxMS41cHgvMS4yIEludGVyLHNhbnMtc2VyaWY7Y29sb3I6I2ZmYzIzZDttYXJnaW4tdG9wOjRweH0nICsKICAgICcucHIye3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I2ZmYzIzZDtjb2xvcjojMWExNTMwO2ZvbnQ6NjAwIDE0cHgvMSBJbnRlcixzYW5zLXNlcmlmfScgKwogICAgJy5taHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjlweDtwYWRkaW5nOjEzcHggMjBweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWNlY2YwO2ZvbnQ6NjAwIDEzcHgvMSBJbnRlcixzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4xNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0ubWggaXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2JvcmRlcjoxcHggc29saWQgI2Q1ZDdlMjtib3JkZXItcmFkaXVzOjVweH0nICsKICAgICcuZ2J0bnt3aWR0aDoxMDAlO3BhZGRpbmc6MTdweDttaW4taGVpZ2h0OjU2cHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOjFweCBzb2xpZCAjMjBBNDRCO2JhY2tncm91bmQ6cmdiYSgzMiwxNjQsNzUsLjEyKTtjb2xvcjojMGU2YjMwO2ZvbnQ6NTAwIDE2cHggSW50ZXIsc2Fucy1zZXJpZn0uZ2J0bjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMzIsMTY0LDc1LC4yMil9JyArCiAgICAnLm1idG57d2lkdGg6MTAwJTtwYWRkaW5nOjE2cHg7bWluLWhlaWdodDo1NHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbWIpO2JhY2tncm91bmQ6dmFyKC0tbWIpO2NvbG9yOiNmZmY7Zm9udDo1MDAgMTVweCBJbnRlcixzYW5zLXNlcmlmfS5tYnRuOmhvdmVye29wYWNpdHk6Ljl9JyArCiAgICAnLmNidG57d2lkdGg6MTAwJTtwYWRkaW5nOjE0cHg7bWluLWhlaWdodDo0OHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgI2RjZGNlMjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzRiNGI1NTtmb250OjQwMCAxNHB4IEludGVyLHNhbnMtc2VyaWZ9JyArCiAgICAnLm11e2NvbG9yOiM2YjZiNzZ9LmV1e3dpZHRoOjI3cHg7aGVpZ2h0OjM5cHg7Ym9yZGVyOjJweCBzb2xpZCAjOGE4YTk0O2JvcmRlci1yYWRpdXM6NHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmb250OjkwMCAxNXB4IExhdG8sc2Fucy1zZXJpZjtjb2xvcjojRTk1ODBDfScgKwogICAgJy5mbGR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtwYWRkaW5nOjE0cHggMTVweDtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiNmZmY7Zm9udDo1MDAgMThweC8xLjIgSW50ZXIsc2Fucy1zZXJpZn0uZmxkIC5jY3tjb2xvcjojOGE4YTk0fS5mbGQgLnZ7bGV0dGVyLXNwYWNpbmc6LjA4ZW19JyArCiAgICAnLmN1cnt3aWR0aDoycHg7aGVpZ2h0OjIwcHg7YW5pbWF0aW9uOmt6YiAxLjFzIHN0ZXBzKDEsZW5kKSBpbmZpbml0ZX0nICsKICAgICcua3B7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMywxZnIpO2dhcDo5cHh9LmtwIGJ1dHRvbnttaW4taGVpZ2h0OjUwcHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOjFweCBzb2xpZCAjZTBlMGU2O2JhY2tncm91bmQ6I2ZhZmFmYztjb2xvcjojMWExYTFmO2ZvbnQ6NDAwIDIwcHggSW50ZXIsc2Fucy1zZXJpZn0ua3AgYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6I2YwZjBmNH0nICsKICAgICcudGJ7ZmxleDoxO2FzcGVjdC1yYXRpbzoxLzEuMTU7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojZjZmNmY5O2JvcmRlcjoxcHggc29saWQgI2RlZGVkZjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udDo1MDAgMjRweCBJbnRlcixzYW5zLXNlcmlmfScgKwogICAgJy5rdntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjE0cHg7cGFkZGluZzoxMXB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VjZWNmMDtmb250OjQwMCAxM3B4IEludGVyLHNhbnMtc2VyaWY7dGV4dC1hbGlnbjpyaWdodH0ua3Ygc3BhbjpmaXJzdC1jaGlsZHtjb2xvcjojNmI2Yjc2O3RleHQtYWxpZ246bGVmdH0nICsKICAgICcuc3Bpbnt3aWR0aDozOHB4O2hlaWdodDozOHB4O2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoycHggc29saWQgI2UzZTNlODtib3JkZXItdG9wLWNvbG9yOnZhcigtLW1iKTthbmltYXRpb246a3pzIC45cyBsaW5lYXIgaW5maW5pdGV9JyArCiAgICAnLnNtc3twb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjEwcHg7cmlnaHQ6MTBweDt0b3A6NTJweDt6LWluZGV4OjU7ZGlzcGxheTpmbGV4O2dhcDoxMXB4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7cGFkZGluZzoxMnB4IDEzcHg7Ym9yZGVyLXJhZGl1czoyMnB4O2JhY2tncm91bmQ6cmdiYSgyNDYsMjQ2LDI0OCwuOTQpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOmJsdXIoMjBweCk7YmFja2Ryb3AtZmlsdGVyOmJsdXIoMjBweCk7Ym94LXNoYWRvdzowIDEwcHggMzBweCByZ2JhKDAsMCwwLC4yMik7Y29sb3I6IzFhMWExZjt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyOjA7d2lkdGg6YXV0bztmb250LWZhbWlseTpJbnRlcixzeXN0ZW0tdWksc2Fucy1zZXJpZn0nICsKICAgICcuc21zLmlue2FuaW1hdGlvbjprenNtcyAuNDVzIGN1YmljLWJlemllciguMiwuOSwuMywxKX0uc21zaXt3aWR0aDozOHB4O2hlaWdodDozOHB4O2ZsZXg6bm9uZTtib3JkZXItcmFkaXVzOjlweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxODBkZWcsIzVhZjU3NSwjMjBjNjNjKTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnNtc2kgaXt3aWR0aDoyMnB4O2hlaWdodDoxN3B4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I2ZmZjtkaXNwbGF5OmJsb2NrfScgKwogICAgJy5zbXNoe2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6OHB4O2ZvbnQ6NjAwIDE0cHgvMS4yIEludGVyLHNhbnMtc2VyaWZ9LnNtc2ggc3Bhbntmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjEyLjVweDtjb2xvcjojOGE4YTk0fS5zbXN0e21hcmdpbi10b3A6MnB4O2ZvbnQ6NDAwIDEzLjVweC8xLjM1IEludGVyLHNhbnMtc2VyaWY7Y29sb3I6IzJhMmEzMDtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDo1Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW59JyArCiAgICAnQGtleWZyYW1lcyBrenNtc3tmcm9te3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMzAlKTtvcGFjaXR5OjB9dG97dHJhbnNmb3JtOm5vbmU7b3BhY2l0eToxfX0nICsKICAgICdAa2V5ZnJhbWVzIGt6c3t0b3t0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMga3piezAlLDEwMCV7b3BhY2l0eTouMn01MCV7b3BhY2l0eToxfX0nICsKICAgICdAbWVkaWEgKG1heC13aWR0aDo2NDBweCl7aDF7Zm9udC1zaXplOjMwcHh9Lm17Z2FwOjMycHh9fSc7CgogIHZhciBNTk9TID0gewogICAgdGVsZWtvbTogeyBuYW1lOiAnVGVsZWtvbScsIG1hcms6ICdUIMK3wrfCtycsIHJpZ2h0OiAnVGltZW91dDogMTU6MDAnLCBvZmZlckN0YTogJ1dlaXRlcicsIG1ub0N0YTogJ1phaGx1bmdzcGZsaWNodGlnIGJlc3RlbGxlbicsIHRhbkxlbjogNCwgdGFuSGludDogJ0RlciBJZGVudGlmaWthdGlvbnNjb2RlIGJlc3RlaHQgYXVzIDQgWmlmZmVybiAoei4gQi4gNDQzMikuJywgYnJhbmQ6ICcjRTIwMDc0JywgaGI6ICcjRTIwMDc0JywgaGY6ICcjZmZmJywgaGw6ICcjYzAwMDYyJywgbWs6ICcjZmZmJyB9LAogICAgdm9kYWZvbmU6IHsgbmFtZTogJ1ZvZGFmb25lJywgbWFyazogJ3ZvZGFmb25lJywgcmlnaHQ6ICcwMTYyIDY1OSAzNzQ0Jywgb2ZmZXJDdGE6ICdaYWhsdW5nc3BmbGljaHRpZyBiZXN0ZWxsZW4nLCBtbm9DdGE6ICdaYWhsdW5nc3BmbGljaHRpZyBiZXN0ZWxsZW4nLCB0YW5MZW46IDQsIHRhbkhpbnQ6ICdCZWlzcGllbDogMTIzNCcsIGJyYW5kOiAnI0U2MDAwMCcsIGhiOiAnI2ZmZicsIGhmOiAnIzFhMWExZicsIGhsOiAnI2VjZWNmMCcsIG1rOiAnI0U2MDAwMCcgfSwKICAgIG8yOiB7IG5hbWU6ICdvMicsIG1hcms6ICdPMicsIHJpZ2h0OiAnMDE3NiA2ODM4OTY5OCcsIG9mZmVyQ3RhOiAnS29zdGVucGZsaWNodGlnIGJlc3RlbGxlbicsIG1ub0N0YTogJ0Jlc3TDpHRpZ2VuJywgdGFuTGVuOiA1LCB0YW5IaW50OiAnRGllIFRyYW5zYWt0aW9uc251bW1lciBtdXNzIGF1cyA1IFppZmZlcm4gYmVzdGVoZW4uJywgYnJhbmQ6ICcjMDAxOUE1JywgaGI6ICcjMDAyRTZEJywgaGY6ICcjZmZmJywgaGw6ICcjMDAxZjRkJywgbWs6ICcjZmZmJyB9CiAgfTsKICB2YXIgRkxPV1MgPSB7CiAgICB0ZWxla29tOiB7IGNsaWNrOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAncmVkaXJlY3QnLCAnY29uZmlybScsICdhY2Nlc3MnXSwgdGFuOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAncmVkaXJlY3QnLCAndGFuJywgJ2FjY2VzcyddIH0sCiAgICB2b2RhZm9uZTogeyBjbGljazogWydhZCcsICdzaG9wJywgJ29mZmVyJywgJ3JlZGlyZWN0JywgJ2xvZ2luJywgJ2NvbmZpcm0nLCAnc3VjY2VzcycsICdhY2Nlc3MnXSwgdGFuOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAncmVkaXJlY3QnLCAndGFuJywgJ3N1Y2Nlc3MnLCAnYWNjZXNzJ10gfSwKICAgIG8yOiB7IGNsaWNrOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAncmVkaXJlY3QnLCAnY29uZmlybScsICdhY2Nlc3MnXSwgdGFuOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAncmVkaXJlY3QnLCAndGFuJywgJ2FjY2VzcyddIH0KICB9OwogIHZhciBQQUNLUyA9IFsKICAgIHsgaWQ6ICcxMDAnLCBzdWI6IGZhbHNlLCBjb2luczogJzEwMCcsIHByaWNlOiAnMCw5OSDigqwnLCB0YWc6ICdTdGFydGVycGFrZXQnLCBidG46ICcxMDAgQ29pbnMnIH0sCiAgICB7IGlkOiAnNTUwJywgc3ViOiBmYWxzZSwgY29pbnM6ICc1NTAnLCBwcmljZTogJzQsOTkg4oKsJywgdGFnOiAnQmVsaWVidCDCtyArMTAgJSBCb251cycsIGJ0bjogJzU1MCBDb2lucycgfSwKICAgIHsgaWQ6ICcxMjAwJywgc3ViOiBmYWxzZSwgY29pbnM6ICcxLjIwMCcsIHByaWNlOiAnOSw5OSDigqwnLCB0YWc6ICdCZXN0ZXIgV2VydCDCtyArMjAgJSBCb251cycsIGJ0bjogJzEuMjAwIENvaW5zJyB9LAogICAgeyBpZDogJ3ZpcHcnLCBzdWI6IHRydWUsIGNvaW5zOiAnVklQLVBhc3MgV29jaGUnLCBwcmljZTogJzIsOTkg4oKsJywgcGVyOiAnV29jaGUnLCBldmVyeTogJ3fDtmNoZW50bGljaCcsIHRhZzogJ1fDtmNoZW50bGljaCBrw7xuZGJhcicsIGJ0bjogJ1ZJUCAyLDk5IOKCrC9Xby4nIH0sCiAgICB7IGlkOiAndmlwbScsIHN1YjogdHJ1ZSwgY29pbnM6ICdWSVAtUGFzcyBNb25hdCcsIHByaWNlOiAnNyw5OSDigqwnLCBwZXI6ICdNb25hdCcsIGV2ZXJ5OiAnbW9uYXRsaWNoJywgdGFnOiAnTW9uYXRsaWNoIGvDvG5kYmFyJywgYnRuOiAnVklQIDcsOTkg4oKsL01vbi4nIH0KICBdOwogIHZhciBMSU5FUyA9IHsKICAgIGVuOiB7CiAgICAgIGFkOiBbJ1RoZSBiYW5uZXIgc3RhcnRzIGl0JywgJ0EgZ2FtZSBhZCBpbiBhIG5ld3MgZmVlZC4gT25lIHRhcCBsZWFkcyBzdHJhaWdodCBpbnRvIHRoZSBpbi1nYW1lIHNob3AsIG5vIGFjY291bnQgb3IgY2FyZCBuZWVkZWQuJ10sCiAgICAgIHNob3A6IFsnUGljayBhIHByb2R1Y3QnLCAnT25lLW9mZiBjb2luIHBhY2tzIGFuZCBhIFZJUCBzdWJzY3JpcHRpb24gc2lkZSBieSBzaWRlLiBCb3RoIGFyZSBwYWlkIGJ5IHBob25lIGJpbGwuJ10sCiAgICAgIG9mZmVyOiBbJ1lvdXIgcGFnZSwgeW91ciBwcmljZScsICdQcm9kdWN0LCBwcmljZSBhbmQgYmlsbGluZyBpbnRlcnZhbCBpbiBvbmUgdmlldy4gT25lIGJ1dHRvbiwgYW5kIHRoZSBsZWdhbCBsaW5rcyByaWdodCB1bmRlcm5lYXRoIGl0LiddLAogICAgICBvZmZlclRhbjogWydZb3VyIHBhZ2UsIHByaWNlIGFuZCBudW1iZXInLCAnT24gV2lGaSB0aGVyZSBpcyBubyBuZXR3b3JrIHRvIHJlYWQgdGhlIG51bWJlciBmcm9tLCBzbyB0aGUgdXNlciB0eXBlcyBpdCBoZXJlLCBvbiB5b3VyIG93biBwYWdlLCBiZWZvcmUgdGhlIGhhbmQtb3Zlci4gUHJpY2UsIGludGVydmFsIGFuZCBsZWdhbCBsaW5rcyBzdGF5IGluIHZpZXcuJ10sCiAgICAgIHJlZGlyZWN0OiBbJ0hMUiBsb29rdXAsIHRoZW4gaGFuZC1vdmVyJywgJ091ciBBUEkgY2hlY2tzIHdoaWNoIG9wZXJhdG9yIHRoZSBudW1iZXIgYmVsb25ncyB0byBhbmQgc2VuZHMgdGhlIHVzZXIgdG8gdGhlIHJpZ2h0IG9uZS4gT24gbW9iaWxlIGRhdGEgdGhlIG51bWJlciBpcyB0aGVuIHJlY29nbmlzZWQgYXV0b21hdGljYWxseS4nXSwKICAgICAgbG9naW46IFsnT25lLXRhcCBuZXR3b3JrIGxvZ2luJywgJ1ZvZGFmb25lIHZlcmlmaWVzIHRoZSBwaG9uZSBvdmVyIHRoZSBtb2JpbGUgbmV0d29yay4gTm90aGluZyBpcyB0eXBlZC4nXSwKICAgICAgdGFuOiBbJ1RoZSBvcGVyYXRvciBhc2tzIGZvciB0aGUgY29kZScsICdUaGUgVEFOIHNlbnQgYnkgU01TIGlzIGVudGVyZWQgb24gdGhlIG9wZXJhdG9yIHBhZ2UuIFByaWNlIGFuZCBpbnRlcnZhbCBhcmUgc2hvd24gYWdhaW4uIFRoaXMgaXMgd2hlcmUgdGhlIHNhbGUgaGFwcGVucy4nXSwKICAgICAgY29uZmlybTogWydUaGUgb3BlcmF0b3IgYXNrcycsICdDb250cmFjdCBwYXJ0bmVyLCBzZXJ2aWNlLCBwcmljZSBhbmQgdGVybSwgdGhlbiB0aGUgdXNlciBhY3RpdmVseSBjb25maXJtcy4gVGhpcyBpcyB3aGVyZSB0aGUgc2FsZSBoYXBwZW5zLiddLAogICAgICBzdWNjZXNzOiBbJ1BheW1lbnQgY29uZmlybWVkJywgJ1ZvZGFmb25lIGNvbmZpcm1zIHRoZSBhbW91bnQgYmVmb3JlIGhhbmRpbmcgdGhlIHVzZXIgYmFjay4nXSwKICAgICAgYWNjZXNzOiBbJ1N0cmFpZ2h0IGludG8gdGhlIHNlcnZpY2UnLCAnVGhlIHVzZXIgaXMgYmFjayB3aXRoIHlvdSwgb25lIHRhcCBmcm9tIGFjY2VzcywgYW5kIGNhbiB1bmRvIHRoZSBwdXJjaGFzZSBmcm9tIHRoZSBzYW1lIHNjcmVlbi4nXQogICAgfSwKICAgIGRlOiB7CiAgICAgIGFkOiBbJ0RhcyBCYW5uZXIgc3RhcnRldCBkZW4gS2F1ZicsICdFaW5lIFNwaWVsZS1BbnplaWdlIGluIGVpbmVtIE5ld3MtRmVlZC4gRWluIFRpcHAgZsO8aHJ0IGRpcmVrdCBpbiBkZW4gU2hvcCBpbSBTcGllbCwgb2huZSBLb250byB1bmQgb2huZSBLYXJ0ZS4nXSwKICAgICAgc2hvcDogWydQcm9kdWt0IHfDpGhsZW4nLCAnRWlubWFsaWdlIENvaW4tUGFrZXRlIHVuZCBlaW4gVklQLUFibyBuZWJlbmVpbmFuZGVyLiBCZWlkZXMgd2lyZCDDvGJlciBkaWUgSGFuZHlyZWNobnVuZyBiZXphaGx0LiddLAogICAgICBvZmZlcjogWydJaHJlIFNlaXRlLCBJaHIgUHJlaXMnLCAnUHJvZHVrdCwgUHJlaXMgdW5kIEFicmVjaG51bmdzaW50ZXJ2YWxsIGF1ZiBlaW5lbiBCbGljay4gRWluIEJ1dHRvbiwgZGllIFBmbGljaHRsaW5rcyBkaXJla3QgZGFydW50ZXIuJ10sCiAgICAgIG9mZmVyVGFuOiBbJ0locmUgU2VpdGUsIFByZWlzIHVuZCBOdW1tZXInLCAnSW0gV0xBTiBrYW5uIGRpZSBOdW1tZXIgbmljaHQgYXV0b21hdGlzY2ggZ2VsZXNlbiB3ZXJkZW4uIERlciBOdXR6ZXIgZ2lidCBzaWUgaGllciBhdWYgSWhyZXIgU2VpdGUgZWluLCB2b3IgZGVyIFdlaXRlcmxlaXR1bmcuIFByZWlzLCBJbnRlcnZhbGwgdW5kIFBmbGljaHRsaW5rcyBibGVpYmVuIHNpY2h0YmFyLiddLAogICAgICByZWRpcmVjdDogWydITFItQWJmcmFnZSwgZGFubiBXZWl0ZXJsZWl0dW5nJywgJ1Vuc2VyZSBBUEkgcHLDvGZ0LCB6dSB3ZWxjaGVtIE5ldHpiZXRyZWliZXIgZGllIE51bW1lciBnZWjDtnJ0LCB1bmQgbGVpdGV0IHp1bSByaWNodGlnZW4gd2VpdGVyLiBJbSBNb2JpbGZ1bmtuZXR6IHdpcmQgZGllIE51bW1lciBkYW5uIGF1dG9tYXRpc2NoIGVya2FubnQuJ10sCiAgICAgIGxvZ2luOiBbJ05ldHotTG9naW4gbWl0IGVpbmVtIFRpcHAnLCAnVm9kYWZvbmUgcHLDvGZ0IGRhcyBHZXLDpHQgw7xiZXIgZGFzIE1vYmlsZnVua25ldHouIEVzIG11c3MgbmljaHRzIGVpbmdlZ2ViZW4gd2VyZGVuLiddLAogICAgICB0YW46IFsnRGVyIE5ldHpiZXRyZWliZXIgZnJhZ3QgbmFjaCBkZW0gQ29kZScsICdEaWUgVEFOIGF1cyBkZXIgU01TIHdpcmQgYXVmIGRlciBTZWl0ZSBkZXMgTmV0emJldHJlaWJlcnMgZWluZ2VnZWJlbi4gUHJlaXMgdW5kIEludGVydmFsbCB3ZXJkZW4gZXJuZXV0IGFuZ2V6ZWlndC4gSGllciB3aXJkIGRlciBLYXVmIGF1c2dlbMO2c3QuJ10sCiAgICAgIGNvbmZpcm06IFsnRGVyIE5ldHpiZXRyZWliZXIgZnJhZ3QgbmFjaCcsICdWZXJ0cmFnc3BhcnRuZXIsIERpZW5zdCwgUHJlaXMgdW5kIExhdWZ6ZWl0LCBkYW5uIGJlc3TDpHRpZ3QgZGVyIE51dHplciBha3Rpdi4gSGllciB3aXJkIGRlciBLYXVmIGF1c2dlbMO2c3QuJ10sCiAgICAgIHN1Y2Nlc3M6IFsnWmFobHVuZyBiZXN0w6R0aWd0JywgJ1ZvZGFmb25lIGJlc3TDpHRpZ3QgZGVuIEJldHJhZywgYmV2b3IgZGVyIE51dHplciB6dXLDvGNrZ2VsZWl0ZXQgd2lyZC4nXSwKICAgICAgYWNjZXNzOiBbJ0RpcmVrdCB6dW0gRGllbnN0JywgJ0RlciBOdXR6ZXIgaXN0IHp1csO8Y2sgYmVpbSBBbmJpZXRlciwgZWluZW4gVGlwcCB2b20gWnVnYW5nIGVudGZlcm50LiddCiAgICB9CiAgfTsKICB2YXIgVUkgPSB7CiAgICBlbjogeyBlYjogJ0RpcmVjdCBDYXJyaWVyIEJpbGxpbmcgwrcgR2VybWFueScsIHRpdGxlOiAnUGF5IHdpdGggdGhlIHBob25lIGJpbGw6IHRyeSB0aGUgZmxvdycsIGludHJvOiAnQ2xpY2sgdGhyb3VnaCBhIHJlYWwgR2VybWFuIHBheW1lbnQgZmxvdywgZnJvbSBiYW5uZXIgdG8gYWNjZXNzLiBTd2l0Y2ggcHJvZHVjdCwgb3BlcmF0b3IgYW5kIG5ldHdvcmsgdG8gc2VlIGVhY2ggdmFyaWFudC4nLCBzdGVwOiAnU3RlcCAlMSBvZiAlMicsIHByb2R1Y3Q6ICdQcm9kdWN0JywgY2FycmllcjogJ0NhcnJpZXInLCBuZXR3b3JrOiAnTmV0d29yaycsIG1vYmlsZTogJ01vYmlsZSBkYXRhJywgd2lmaTogJ1dpRmkgwrcgVEFOJywgbmV4dDogJ05leHQnLCBiYWNrOiAnQmFjaycsIHJlc3RhcnQ6ICdSZXN0YXJ0JywgZm9vdDogJ1RhcCB0aGUgcGhvbmUgb3IgdXNlIE5leHQuIFRoZSBwaG9uZSBzY3JlZW5zIGFyZSBzaG93biBpbiBHZXJtYW4sIGFzIHVzZXJzIHNlZSB0aGVtLicsIG1kOiAnbW9iaWxlIGRhdGEnLCB3dDogJ1dpRmksIFdFQiBUQU4nLCBvbmVvZmY6ICdvbmUtb2ZmJywgcGVyOiB7IFdvY2hlOiAnd2VlaycsIE1vbmF0OiAnbW9udGgnIH0gfSwKICAgIGRlOiB7IGViOiAnRGlyZWN0IENhcnJpZXIgQmlsbGluZyDCtyBEZXV0c2NobGFuZCcsIHRpdGxlOiAnQmV6YWhsZW4gw7xiZXIgZGllIEhhbmR5cmVjaG51bmc6IEFibGF1ZiB0ZXN0ZW4nLCBpbnRybzogJ0tsaWNrZW4gU2llIHNpY2ggZHVyY2ggZWluZW4gZWNodGVuIGRldXRzY2hlbiBCZXphaGxhYmxhdWYsIHZvbSBCYW5uZXIgYmlzIHp1bSBadWdhbmcuIFdlY2hzZWxuIFNpZSBQcm9kdWt0LCBOZXR6YmV0cmVpYmVyIHVuZCBWZXJiaW5kdW5nLCB1bSBqZWRlIFZhcmlhbnRlIHp1IHNlaGVuLicsIHN0ZXA6ICdTY2hyaXR0ICUxIHZvbiAlMicsIHByb2R1Y3Q6ICdQcm9kdWt0JywgY2FycmllcjogJ05ldHonLCBuZXR3b3JrOiAnVmVyYmluZHVuZycsIG1vYmlsZTogJ01vYmlsZnVuaycsIHdpZmk6ICdXTEFOIMK3IFRBTicsIG5leHQ6ICdXZWl0ZXInLCBiYWNrOiAnWnVyw7xjaycsIHJlc3RhcnQ6ICdOZXUgc3RhcnRlbicsIGZvb3Q6ICdUaXBwZW4gU2llIGF1ZiBkYXMgSGFuZHkgb2RlciBudXR6ZW4gU2llIOKAnldlaXRlcuKAnC4nLCBtZDogJ01vYmlsZnVuaycsIHd0OiAnV0xBTiwgV0VCLVRBTicsIG9uZW9mZjogJ2Vpbm1hbGlnJywgcGVyOiB7IFdvY2hlOiAnV29jaGUnLCBNb25hdDogJ01vbmF0JyB9IH0KICB9OwoKICB2YXIgUyA9IHsgbGFuZzogJ2VuJywgcGFjazogJzU1MCcsIG1ubzogJ3RlbGVrb20nLCBtb2RlOiAnY2xpY2snLCBpOiAwLCBudW06ICcnLCB0YW46ICcnIH07CiAgdmFyIHRpbWVyID0gbnVsbCwgc21zVGltZXIgPSBudWxsOwogIGZ1bmN0aW9uIHNtc0lkeCgpIHsgdmFyIGwgPSBsaXN0KCksIGogPSBsLmluZGV4T2YoJ3N1Y2Nlc3MnKTsgcmV0dXJuIGogPiAtMSA/IGogOiBsLmluZGV4T2YoJ2FjY2VzcycpOyB9CgogIGZ1bmN0aW9uIGxpc3QoKSB7IHJldHVybiBGTE9XU1tTLm1ub11bUy5tb2RlXTsgfQogIGZ1bmN0aW9uIGtpbmQoKSB7IHJldHVybiBsaXN0KClbUy5pXTsgfQogIGZ1bmN0aW9uIHBrKCkgeyBmb3IgKHZhciBqID0gMDsgaiA8IFBBQ0tTLmxlbmd0aDsgaisrKSBpZiAoUEFDS1Nbal0uaWQgPT09IFMucGFjaykgcmV0dXJuIFBBQ0tTW2pdOyB9CiAgZnVuY3Rpb24gc2V0KHApIHsgZm9yICh2YXIgayBpbiBwKSBTW2tdID0gcFtrXTsgcmVuZGVyKCk7IH0KICBmdW5jdGlvbiBnbyhpKSB7CiAgICBjbGVhclRpbWVvdXQodGltZXIpOwogICAgdmFyIG4gPSBNYXRoLm1heCgwLCBNYXRoLm1pbihpLCBsaXN0KCkubGVuZ3RoIC0gMSkpOwogICAgaWYgKG4gPT09IHNtc0lkeCgpICYmIG4gPiBTLmkpIHsKICAgICAgY2xlYXJUaW1lb3V0KHNtc1RpbWVyKTsKICAgICAgUy5zbXMgPSB0cnVlOyBTLnNtc05ldyA9IHRydWU7CiAgICAgIHNtc1RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHNldCh7IHNtczogZmFsc2UgfSk7IH0sIDYwMDApOwogICAgfSBlbHNlIGlmIChuICE9PSBzbXNJZHgoKSkgeyBjbGVhclRpbWVvdXQoc21zVGltZXIpOyBTLnNtcyA9IGZhbHNlOyB9CiAgICBzZXQoeyBpOiBuIH0pOwogICAgaWYgKGxpc3QoKVtuXSA9PT0gJ3JlZGlyZWN0JykgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgZ28obiArIDEpOyB9LCAxNjAwKTsKICB9CiAgZnVuY3Rpb24gcmVzdGFydChwKSB7IGNsZWFyVGltZW91dCh0aW1lcik7IGNsZWFyVGltZW91dChzbXNUaW1lcik7IHAgPSBwIHx8IHt9OyBwLnNtcyA9IGZhbHNlOyBwLmkgPSAwOyBwLm51bSA9ICcnOyBwLnRhbiA9ICcnOyBzZXQocCk7IH0KICBmdW5jdGlvbiBudW1TdGVwKCkgeyByZXR1cm4ga2luZCgpID09PSAnb2ZmZXInICYmIFMubW9kZSA9PT0gJ3Rhbic7IH0KICBmdW5jdGlvbiBhZHZhbmNlKCkgewogICAgdmFyIGxlbiA9IE1OT1NbUy5tbm9dLnRhbkxlbjsKICAgIGlmIChudW1TdGVwKCkgJiYgUy5udW0ubGVuZ3RoIDwgMTEpIHJldHVybiBzZXQoeyBudW06ICcxNTE2NzE0MjI0MicgfSk7CiAgICBpZiAoa2luZCgpID09PSAndGFuJyAmJiBTLnRhbi5sZW5ndGggPCBsZW4pIHJldHVybiBzZXQoeyB0YW46ICc0NDMyMScuc2xpY2UoMCwgbGVuKSB9KTsKICAgIGdvKFMuaSArIDEpOwogIH0KICBmdW5jdGlvbiBwcmVzcyh2KSB7CiAgICB2YXIgbGVuID0gTU5PU1tTLm1ub10udGFuTGVuOwogICAgaWYgKGtpbmQoKSAhPT0gJ3RhbicpIHJldHVybjsKICAgIGlmICh2ID09PSAnZGVsJykgc2V0KHsgdGFuOiBTLnRhbi5zbGljZSgwLCAtMSkgfSk7CiAgICBlbHNlIGlmIChTLnRhbi5sZW5ndGggPCBsZW4pIHNldCh7IHRhbjogUy50YW4gKyB2IH0pOwogIH0KCiAgZnVuY3Rpb24gY29pbihzeikgeyByZXR1cm4gJzxzcGFuIGNsYXNzPSJjb2luIiBzdHlsZT0id2lkdGg6JyArIHN6ICsgJ3B4O2hlaWdodDonICsgc3ogKyAncHg7Zm9udC1zaXplOicgKyBNYXRoLnJvdW5kKHN6ICogLjQyKSArICdweCI+4piFPC9zcGFuPic7IH0KICBmdW5jdGlvbiBjb2lucyhzeiwgbykgeyByZXR1cm4gJzxzcGFuIHN0eWxlPSJkaXNwbGF5OmZsZXgiPicgKyBjb2luKHN6KSArICc8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6LScgKyBvICsgJ3B4O21hcmdpbi10b3A6LScgKyBNYXRoLnJvdW5kKG8gKiAuNikgKyAncHgiPicgKyBjb2luKHN6KSArICc8L3NwYW4+PHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0Oi0nICsgbyArICdweCI+JyArIGNvaW4oc3opICsgJzwvc3Bhbj48L3NwYW4+JzsgfQogIGZ1bmN0aW9uIHBsYW5ldChzeiwgciwgYikgeyByZXR1cm4gJzxzcGFuIGNsYXNzPSJwbGEiIHN0eWxlPSJyaWdodDonICsgciArICdweDtib3R0b206JyArIGIgKyAncHg7d2lkdGg6JyArIHN6ICsgJ3B4O2hlaWdodDonICsgc3ogKyAncHgiPjwvc3Bhbj48c3BhbiBjbGFzcz0icmluZyIgc3R5bGU9InJpZ2h0OicgKyAociAtIHN6ICogLjI1KSArICdweDtib3R0b206JyArIChiICsgc3ogKiAuNDIpICsgJ3B4O3dpZHRoOicgKyBzeiAqIDEuNSArICdweDtoZWlnaHQ6JyArIHN6ICogLjIyICsgJ3B4Ij48L3NwYW4+JzsgfQogIGZ1bmN0aW9uIHRpdGxlKHMpIHsgcmV0dXJuICc8c3BhbiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6JyArIE1hdGgucm91bmQocyAqIC4xMikgKyAncHgiPjxzcGFuIGNsYXNzPSJnb2xkIiBzdHlsZT0iZm9udC1zaXplOicgKyBzICsgJ3B4Ij5TdGFyZmFsbDwvc3Bhbj48c3BhbiBjbGFzcz0iYXJlbmEiIHN0eWxlPSJmb250LXNpemU6JyArIE1hdGgucm91bmQocyAqIC4zKSArICdweCI+QXJlbmE8L3NwYW4+PC9zcGFuPic7IH0KICBmdW5jdGlvbiBncnAoZCkgeyByZXR1cm4gZC5yZXBsYWNlKC8oXGR7NH0pKD89XGQpLywgJyQxICcpLnJlcGxhY2UoL14oXGR7NH0gXGR7M30pKD89XGQpLywgJyQxICcpOyB9CiAgZnVuY3Rpb24ga2V5cGFkKCkgewogICAgdmFyIGsgPSBbJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5JywgJycsICcwJywgJ2RlbCddLCBoID0gJzxkaXYgY2xhc3M9ImtwIj4nOwogICAgZm9yICh2YXIgaiA9IDA7IGogPCBrLmxlbmd0aDsgaisrKSBoICs9IGtbal0gPT09ICcnID8gJzxzcGFuPjwvc3Bhbj4nIDogJzxidXR0b24gZGF0YS1hPSJrZXkiIGRhdGEtdj0iJyArIGtbal0gKyAnIj4nICsgKGtbal0gPT09ICdkZWwnID8gJ+KMqycgOiBrW2pdKSArICc8L2J1dHRvbj4nOwogICAgcmV0dXJuIGggKyAnPC9kaXY+JzsKICB9CiAgZnVuY3Rpb24gemFobChiaWcpIHsKICAgIHJldHVybiAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OXB4Ij48ZGl2IGNsYXNzPSJldSInICsgKGJpZyA/ICcnIDogJyBzdHlsZT0id2lkdGg6MjJweDtoZWlnaHQ6MzJweDtib3JkZXItY29sb3I6I0U5NTgwQztmb250LXNpemU6MTJweCInKSArICc+4oKsPC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6TGF0byxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuMTQiPjxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OjkwMDtmb250LXNpemU6JyArIChiaWcgPyAxNyA6IDE0KSArICdweDtjb2xvcjonICsgKGJpZyA/ICcjOGE4YTk0JyA6ICcjRTk1ODBDJykgKyAnIj5aYWhsIGVpbmZhY2g8L2Rpdj48ZGl2IHN0eWxlPSJmb250LXdlaWdodDo1MDA7Zm9udC1zaXplOicgKyAoYmlnID8gMTIuNSA6IDEwLjUpICsgJ3B4O2NvbG9yOiM4YThhOTQiPnBlciBIYW5keXJlY2hudW5nPC9kaXY+PC9kaXY+PC9kaXY+JzsKICB9CgogIGZ1bmN0aW9uIHNjcmVlbigpIHsKICAgIHZhciBrID0ga2luZCgpLCBtID0gTU5PU1tTLm1ub10sIHAgPSBwaygpOwogICAgdmFyIGNoYXJnZSA9IHAuc3ViID8gcC5wcmljZSArICcgcHJvICcgKyBwLnBlciArICcgKEFib25uZW1lbnQpJyA6IHAucHJpY2UgKyAnIChFaW5tYWx6YWhsdW5nKSc7CiAgICB2YXIgcGxhaW4gPSBTLm51bS5sZW5ndGggPj0gNiA/ICcrNDkgJyArIGdycChTLm51bSkgOiAnKzQ5IDE1MTYgNzE0IDIyNDInOwogICAgaWYgKGsgPT09ICdhZCcpIHJldHVybiAnPGRpdiBjbGFzcz0icGciIHN0eWxlPSJiYWNrZ3JvdW5kOiNmM2YzZjUiPicgKwogICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjE0cHggMThweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U2ZTZlYSI+PHNwYW4gc3R5bGU9ImZvbnQ6NzAwIDE5cHgvMSBMYXRvLHNhbnMtc2VyaWYiPlRhZ2VzYmxpY2s8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQ6NDAwIDEycHggSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojOGE4YTk0Ij5TcG9ydCDCtyBLdWx0dXIgwrcgRGlnaXRhbDwvc3Bhbj48L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9InBhZGRpbmc6MThweCAxOHB4IDhweDtiYWNrZ3JvdW5kOiNmZmYiPjxkaXYgc3R5bGU9ImZvbnQ6NTAwIDEwLjVweC8xIEludGVyLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjFlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6IzhhOGE5NCI+RGlnaXRhbDwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbi10b3A6OHB4O2ZvbnQ6NjAwIDE5cHgvMS4zIEludGVyLHNhbnMtc2VyaWYiPkRpZSBtZWlzdGdlc3BpZWx0ZW4gTW9iaWxlIEdhbWVzIGltIEhlcmJzdDwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjoxNHB4IDAgNnB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjhweCI+PHNwYW4gY2xhc3M9ImJhciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJiYXIiPjwvc3Bhbj48c3BhbiBjbGFzcz0iYmFyIiBzdHlsZT0id2lkdGg6NzAlIj48L3NwYW4+PC9kaXY+PC9kaXY+JyArCiAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW46MTRweCAxNHB4IDA7Ym9yZGVyLXJhZGl1czoxMnB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiMxNTEyMmI7Y29sb3I6I2ZmZjtib3gtc2hhZG93OjAgNnB4IDIwcHggcmdiYSgyMSwxOCw0MywuMTgpIj4nICsKICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjhweCAxMnB4O2ZvbnQ6NTAwIDkuNXB4LzEgSW50ZXIsc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzouMTJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6I2E5YTNkNiI+PHNwYW4+QW56ZWlnZTwvc3Bhbj48c3Bhbj5TdGFyZmFsbCBBcmVuYTwvc3Bhbj48L2Rpdj4nICsKICAgICAgJzxkaXYgY2xhc3M9InN0YXJzIiBzdHlsZT0iYXNwZWN0LXJhdGlvOjYvNTtwYWRkaW5nOjIycHggMjBweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIj4nICsgcGxhbmV0KDE5MCwgLTUwLCAtNjApICsgdGl0bGUoNTApICsKICAgICAgJzxzcGFuIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxOHB4O3RvcDoyMHB4O3RyYW5zZm9ybTpyb3RhdGUoOGRlZyk7cGFkZGluZzoxMHB4IDEycHg7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6I2ZmYzIzZDtjb2xvcjojMWExNTMwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDozcHg7Ym94LXNoYWRvdzowIDZweCAxOHB4IHJnYmEoMCwwLDAsLjQpIj48c3BhbiBzdHlsZT0iZm9udDo5MDAgMjBweC8xIExhdG8sc2Fucy1zZXJpZiI+NTUwPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250OjcwMCAxMHB4LzEgTGF0byxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4xNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSI+Q29pbnM8L3NwYW4+PC9zcGFuPicgKwogICAgICAnPHNwYW4gc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LWVuZDtnYXA6MTRweCI+JyArIGNvaW5zKDQ0LCAxNikgKyAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjVweCI+PHNwYW4gc3R5bGU9ImZvbnQ6NzAwIDExcHgvMSBMYXRvLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjE2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOiNjZmM4ZmYiPk5ldTogVklQLVBhc3M8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQ6OTAwIDE3cHgvMS4xIExhdG8sc2Fucy1zZXJpZiI+YWIgMiw5OSDigqwgcHJvIFdvY2hlPC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9kaXY+JyArCiAgICAgICc8ZGl2IHN0eWxlPSJwYWRkaW5nOjE0cHggMTRweCAxNnB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEwcHgiPjxkaXYgc3R5bGU9ImZvbnQ6NjAwIDE3cHgvMS4yNSBJbnRlcixzYW5zLXNlcmlmIj41NTAgQ29pbnMgZsO8ciA0LDk5IOKCrDwvZGl2PjxkaXYgc3R5bGU9ImZvbnQ6NDAwIDEyLjVweC8xLjQ1IEludGVyLHNhbnMtc2VyaWY7Y29sb3I6I2M5YzVlYSI+Q29pbnMgb2RlciBWSVAtUGFzcywgb2huZSBLcmVkaXRrYXJ0ZS4gRWluZmFjaCDDvGJlciBkaWUgSGFuZHlyZWNobnVuZyBiZXphaGxlbi48L2Rpdj4nICsKICAgICAgJzxidXR0b24gZGF0YS1hPSJuZXh0IiBzdHlsZT0icGFkZGluZzoxNHB4O21pbi1oZWlnaHQ6NTBweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MDtiYWNrZ3JvdW5kOiNmZmMyM2Q7Y29sb3I6IzFhMTUzMDtmb250OjYwMCAxNXB4IEludGVyLHNhbnMtc2VyaWYiPkpldHp0IENvaW5zIGhvbGVuPC9idXR0b24+PC9kaXY+PC9kaXY+JyArCiAgICAgICc8ZGl2IHN0eWxlPSJwYWRkaW5nOjE4cHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4Ij48c3BhbiBjbGFzcz0iYmFyIiBzdHlsZT0iYmFja2dyb3VuZDojZTNlM2U4Ij48L3NwYW4+PHNwYW4gY2xhc3M9ImJhciIgc3R5bGU9ImJhY2tncm91bmQ6I2UzZTNlODt3aWR0aDo4MiUiPjwvc3Bhbj48L2Rpdj48L2Rpdj4nOwoKICAgIGlmIChrID09PSAnc2hvcCcpIHsKICAgICAgdmFyIGMgPSAnJywgdiA9ICcnOwogICAgICBQQUNLUy5mb3JFYWNoKGZ1bmN0aW9uIChxKSB7CiAgICAgICAgdmFyIG9uID0gcS5pZCA9PT0gcC5pZCA/ICcgb24nIDogJyc7CiAgICAgICAgaWYgKCFxLnN1YikgYyArPSAnPGJ1dHRvbiBjbGFzcz0icGsnICsgb24gKyAnIiBkYXRhLWE9InBpY2siIGRhdGEtdj0iJyArIHEuaWQgKyAnIj48c3BhbiBzdHlsZT0id2lkdGg6NDZweDtoZWlnaHQ6NDZweDtmbGV4Om5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6cmdiYSgyNTUsMTk0LDYxLC4xKTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXIiPicgKyBjb2luKDMwKSArICc8L3NwYW4+PHNwYW4gc3R5bGU9ImZsZXg6MSI+PGRpdiBjbGFzcz0ibiI+JyArIHEuY29pbnMgKyAnIENvaW5zPC9kaXY+PGRpdiBjbGFzcz0idCI+JyArIHEudGFnICsgJzwvZGl2Pjwvc3Bhbj48c3BhbiBjbGFzcz0icHIyIj4nICsgcS5wcmljZSArICc8L3NwYW4+PC9idXR0b24+JzsKICAgICAgICBlbHNlIHYgKz0gJzxidXR0b24gY2xhc3M9InBrJyArIG9uICsgJyIgZGF0YS1hPSJwaWNrIiBkYXRhLXY9IicgKyBxLmlkICsgJyI+PHNwYW4gY2xhc3M9InZpcCIgc3R5bGU9IndpZHRoOjQ2cHg7aGVpZ2h0OjQ2cHgiPlZJUDwvc3Bhbj48c3BhbiBzdHlsZT0iZmxleDoxIj48ZGl2IGNsYXNzPSJuIj4nICsgcS5jb2lucyArICc8L2Rpdj48ZGl2IGNsYXNzPSJ0Ij4nICsgcS50YWcgKyAnPC9kaXY+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcjIiPicgKyBxLnByaWNlICsgJy8nICsgKHEucGVyID09PSAnV29jaGUnID8gJ1dvLicgOiAnTW9uLicpICsgJzwvc3Bhbj48L2J1dHRvbj4nOwogICAgICB9KTsKICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJwZyIgc3R5bGU9ImJhY2tncm91bmQ6IzE1MTIyYjtjb2xvcjojZmZmIj4nICsKICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjEzcHggMThweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4wOCkiPjxzcGFuIHN0eWxlPSJmb250OjcwMCAxNnB4LzEgTGF0byxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4wNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSI+U3RhcmZhbGwgQXJlbmE8L3NwYW4+PHNwYW4gc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtwYWRkaW5nOjZweCAxMHB4O2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE5NCw2MSwuMTQpO2ZvbnQ6NjAwIDEyLjVweC8xIEludGVyLHNhbnMtc2VyaWY7Y29sb3I6I2ZmYzIzZCI+PHNwYW4gc3R5bGU9IndpZHRoOjEwcHg7aGVpZ2h0OjEwcHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDojZmZjMjNkIj48L3NwYW4+MTIwPC9zcGFuPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJzdGFycyIgc3R5bGU9ImFzcGVjdC1yYXRpbzoxNi83O3BhZGRpbmc6MThweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyIj4nICsgcGxhbmV0KDEzMCwgLTMwLCAtNTApICsgdGl0bGUoMzQpICsgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJwYWRkaW5nOjE2cHggMTZweCAyMnB4Ij48ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4iPjxzcGFuIHN0eWxlPSJmb250OjYwMCAxNnB4IEludGVyLHNhbnMtc2VyaWYiPkNvaW5zPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250OjQwMCAxMS41cHggSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojYTlhM2Q2Ij5FaW5tYWx6YWhsdW5nPC9zcGFuPjwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjEwcHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4Ij4nICsgYyArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiI+PHNwYW4gc3R5bGU9ImZvbnQ6NjAwIDE2cHggSW50ZXIsc2Fucy1zZXJpZiI+VklQLVBhc3M8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQ6NDAwIDExLjVweCBJbnRlcixzYW5zLXNlcmlmO2NvbG9yOiNhOWEzZDYiPkFibywgamVkZXJ6ZWl0IGvDvG5kYmFyPC9zcGFuPjwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjEwcHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4Ij4nICsgdiArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6OHB4O2ZvbnQ6NDAwIDExLjVweCBJbnRlcixzYW5zLXNlcmlmO2NvbG9yOiNhOWEzZDYiPjxzcGFuIHN0eWxlPSJ3aWR0aDoxNnB4O2hlaWdodDoyMnB4O2JvcmRlcjoxLjVweCBzb2xpZCAjYTlhM2Q2O2JvcmRlci1yYWRpdXM6M3B4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmb250OjkwMCAxMHB4IExhdG8sc2Fucy1zZXJpZjtjb2xvcjojZmZjMjNkIj7igqw8L3NwYW4+QmV6YWhsdW5nIHBlciBIYW5keXJlY2hudW5nPC9kaXY+PC9kaXY+PC9kaXY+JzsKICAgIH0KCiAgICBpZiAoayA9PT0gJ29mZmVyJykgewogICAgICB2YXIgYXNrID0gbnVtU3RlcCgpOwogICAgICByZXR1cm4gJzxkaXYgY2xhc3M9InBnIj48ZGl2IGNsYXNzPSJtaCI+PGk+PC9pPlN0YXJmYWxsIEFyZW5hPC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9InN0YXJzIiBzdHlsZT0iYXNwZWN0LXJhdGlvOjE2LzEwO3BhZGRpbmc6MjBweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIj4nICsgcGxhbmV0KDE3MCwgLTQ2LCAtNjApICsgdGl0bGUoMzApICsKICAgICAgICAnPHNwYW4gc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjE0cHgiPicgKyAocC5zdWIgPyAnPHNwYW4gY2xhc3M9InZpcCIgc3R5bGU9IndpZHRoOjcwcHg7aGVpZ2h0OjcwcHg7Ym9yZGVyLXJhZGl1czoxNnB4O2JvcmRlci13aWR0aDoycHg7Zm9udC1zaXplOjIycHg7Ym94LXNoYWRvdzowIDZweCAxOHB4IHJnYmEoMCwwLDAsLjQpIj5WSVA8L3NwYW4+JyA6IGNvaW5zKDUyLCAyMCkpICsKICAgICAgICAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjVweCI+PHNwYW4gc3R5bGU9ImZvbnQ6OTAwIDI2cHgvMSBMYXRvLHNhbnMtc2VyaWY7Y29sb3I6I2ZmZjt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2UiPicgKyAocC5zdWIgPyAnVklQLVBhc3MnIDogcC5jb2lucyArICcgQ29pbnMnKSArICc8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQ6NzAwIDExcHgvMSBMYXRvLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjE2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOiNmZmMyM2QiPicgKyAocC5zdWIgPyBwLnByaWNlICsgJyBwcm8gJyArIHAucGVyIDogJ0Vpbm1hbGlnICcgKyBwLnByaWNlKSArICc8L3NwYW4+PC9zcGFuPjwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAnPGRpdiBzdHlsZT0icGFkZGluZzoyMnB4IDIwcHggMzRweCI+PGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxkaXYgc3R5bGU9ImZvbnQ6NjAwIDE5cHgvMS4yNSBJbnRlcixzYW5zLXNlcmlmIj4nICsgKHAuc3ViID8gJ051ciAnICsgcC5wcmljZSArICcgcHJvICcgKyBwLnBlciA6IHAuY29pbnMgKyAnIENvaW5zIGbDvHIgJyArIHAucHJpY2UpICsgJzwvZGl2PjxkaXYgY2xhc3M9Im11IiBzdHlsZT0ibWFyZ2luLXRvcDozcHg7Zm9udDo0MDAgMTQuNXB4LzEuNCBJbnRlcixzYW5zLXNlcmlmIj4nICsgKHAuc3ViID8gcC5ldmVyeSArICcga8O8bmRiYXIsIGtlaW5lIE1pbmRlc3RsYXVmemVpdCcgOiAnRWlubWFsemFobHVuZywga2VpbiBBYm8nKSArICc8L2Rpdj48L2Rpdj4nICsKICAgICAgICAoYXNrID8gJzxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MThweDtwYWRkaW5nOjE2cHg7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6I2ZhZmFmYztib3JkZXI6MXB4IHNvbGlkICNlNmU2ZWMiPjxkaXYgc3R5bGU9ImZvbnQ6NTAwIDEzLjVweC8xLjMgSW50ZXIsc2Fucy1zZXJpZiI+SGFuZHludW1tZXIgZWluZ2ViZW48L2Rpdj48cCBjbGFzcz0ibXUiIHN0eWxlPSJtYXJnaW46NnB4IDAgMTJweDtmb250OjQwMCAxMS41cHgvMS41IEludGVyLHNhbnMtc2VyaWYiPlNpZSBiZWZpbmRlbiBzaWNoIGltIFdMQU4sIGRhaGVyIGthbm4gSWhyZSBNb2JpbGZ1bmtudW1tZXIgbmljaHQgYXV0b21hdGlzY2ggZXJrYW5udCB3ZXJkZW4uIFNpZSBlcmhhbHRlbiBhbnNjaGxpZcOfZW5kIGVpbmUgVEFOIHBlciBTTVMuPC9wPjxkaXYgY2xhc3M9ImZsZCIgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgIzIwQTQ0QiI+PHNwYW4gY2xhc3M9ImNjIj4rNDk8L3NwYW4+PHNwYW4gY2xhc3M9InYiPicgKyBncnAoUy5udW0pICsgJzwvc3Bhbj48c3BhbiBjbGFzcz0iY3VyIiBzdHlsZT0iYmFja2dyb3VuZDojMjBBNDRCIj48L3NwYW4+PC9kaXY+PC9kaXY+JyA6ICcnKSArCiAgICAgICAgJzxidXR0b24gY2xhc3M9ImdidG4iIGRhdGEtYT0ibmV4dCIgc3R5bGU9Im1hcmdpbjoyMHB4IDAgMTRweDtvcGFjaXR5OicgKyAoYXNrICYmIFMubnVtLmxlbmd0aCA8IDYgPyAuNDUgOiAxKSArICciPicgKyBtLm9mZmVyQ3RhICsgJzwvYnV0dG9uPicgKwogICAgICAgICc8cCBjbGFzcz0ibXUiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjI0cHg7Zm9udDo0MDAgMTJweC8xLjYgSW50ZXIsc2Fucy1zZXJpZjt0ZXh0LWFsaWduOmNlbnRlciI+RXMgZ2VsdGVuIHVuc2VyZSA8dSBzdHlsZT0iY29sb3I6IzBlNmIzMCI+QUdCPC91Pi4gSWhuZW4gc3RlaHQgZWluIGdlc2V0emxpY2hlcyA8dSBzdHlsZT0iY29sb3I6IzBlNmIzMCI+V2lkZXJydWZzcmVjaHQ8L3U+IHp1LjwvcD4nICsKICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEzcHg7cGFkZGluZy10b3A6MjBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZWNlY2YwIj4nICsgemFobCh0cnVlKSArCiAgICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6MTZweDtmbGV4LXdyYXA6d3JhcDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQ6NzAwIDEycHggTGF0byxzYW5zLXNlcmlmIj48c3BhbiBzdHlsZT0iY29sb3I6I0UyMDA3NCI+VCDCt8K3wrc8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNFNjAwMDAiPnZvZGFmb25lPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojMDAxOUE1Ij5UZWxlZsOzbmljYTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzZhOWUyMiI+ZnJlZW5ldDwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nOwogICAgfQoKICAgIGlmIChrID09PSAncmVkaXJlY3QnKSByZXR1cm4gJzxkaXYgY2xhc3M9InBnIiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6MThweDtwYWRkaW5nOjAgNDBweDt0ZXh0LWFsaWduOmNlbnRlcjttaW4taGVpZ2h0Ojc2MHB4Ij48ZGl2IGNsYXNzPSJzcGluIj48L2Rpdj48ZGl2IHN0eWxlPSJmb250OjUwMCAxNnB4LzEuMyBJbnRlcixzYW5zLXNlcmlmIj5XZWl0ZXJsZWl0dW5nIHp1ICcgKyBtLm5hbWUgKyAnPC9kaXY+PHAgY2xhc3M9Im11IiBzdHlsZT0iZm9udDo0MDAgMTIuNXB4LzEuNTUgSW50ZXIsc2Fucy1zZXJpZiI+JyArIChTLm1vZGUgPT09ICdjbGljaycgPyAnSWhyZSBNb2JpbGZ1bmtudW1tZXIgd2lyZCB2b20gTmV0eiBhdXRvbWF0aXNjaCBlcmthbm50LiBCaXR0ZSBzY2hsaWXDn2VuIFNpZSBkaWVzZXMgRmVuc3RlciBuaWNodC4nIDogJ1NpZSB3ZXJkZW4genVyIFNlaXRlIElocmVzIE1vYmlsZnVua2FuYmlldGVycyB3ZWl0ZXJnZWxlaXRldCwgdW0gZGllIFRBTiBhdXMgZGVyIFNNUyBlaW56dWdlYmVuLicpICsgJzwvcD48L2Rpdj4nOwoKICAgIGlmIChrID09PSAnYWNjZXNzJykgcmV0dXJuICc8ZGl2IGNsYXNzPSJwZyIgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4iPjxkaXYgY2xhc3M9Im1oIj48aT48L2k+U3RhcmZhbGwgQXJlbmE8L2Rpdj4nICsKICAgICAgJzxkaXYgY2xhc3M9InN0YXJzIiBzdHlsZT0iYXNwZWN0LXJhdGlvOjE2LzEwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjEycHgiPicgKyBwbGFuZXQoMTUwLCAtNTAsIC02MCkgKyAnPHNwYW4gc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlO2ZvbnQ6NzAwIDExcHgvMSBMYXRvLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6I2NmYzhmZiI+U3RhcmZhbGwgQXJlbmE8L3NwYW4+PHNwYW4gY2xhc3M9ImdvbGQiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6NDBweCI+JyArIChwLnN1YiA/ICdWSVAgYWt0aXYnIDogJysnICsgcC5jb2lucyArICcgQ29pbnMnKSArICc8L3NwYW4+PC9kaXY+JyArCiAgICAgICc8ZGl2IHN0eWxlPSJwYWRkaW5nOjI0cHggMjBweCAzMHB4O3RleHQtYWxpZ246Y2VudGVyIj48ZGl2IHN0eWxlPSJmb250OjYwMCAxOHB4LzEuMzUgSW50ZXIsc2Fucy1zZXJpZiI+SGVyemxpY2hlbiBHbMO8Y2t3dW5zY2guPGJyPklociBLYXVmIHdhciBlcmZvbGdyZWljaC48L2Rpdj48cCBjbGFzcz0ibXUiIHN0eWxlPSJtYXJnaW46MTJweCAwIDIwcHg7Zm9udDo0MDAgMTNweC8xLjU1IEludGVyLHNhbnMtc2VyaWYiPicgKwogICAgICAocC5zdWIgPyAnSWhyIFZJUC1QYXNzIGlzdCBha3RpdiB1bmQgdmVybMOkbmdlcnQgc2ljaCAnICsgcC5ldmVyeSArICcgZsO8ciAnICsgcC5wcmljZSArICcsIGJpcyBTaWUga8O8bmRpZ2VuLiBLbGlja2VuIFNpZSBhdWYg4oCeWnVtIFNwaWVs4oCcLCB1bSB3ZWl0ZXJ6dXNwaWVsZW4uJyA6ICdJaHJlICcgKyBwLmNvaW5zICsgJyBDb2lucyB3ZXJkZW4gSWhyZW0gU3BpZWxlcmtvbnRvIGd1dGdlc2NocmllYmVuLiBLbGlja2VuIFNpZSBhdWYg4oCeWnVtIFNwaWVs4oCcLCB1bSB3ZWl0ZXJ6dXNwaWVsZW4uJykgKyAnPC9wPicgKwogICAgICAnPGJ1dHRvbiBjbGFzcz0iZ2J0biIgZGF0YS1hPSJyZXNldCIgc3R5bGU9ImZvbnQtc2l6ZToxN3B4Ij5adW0gU3BpZWw8L2J1dHRvbj48cCBjbGFzcz0ibXUiIHN0eWxlPSJtYXJnaW46MjJweCAwIDhweDtmb250OjQwMCAxMnB4LzEuNTUgSW50ZXIsc2Fucy1zZXJpZiI+V2VubiBTaWUgZGVuIEthdWYgcsO8Y2tnw6RuZ2lnIG1hY2hlbiBtw7ZjaHRlbiwga2xpY2tlbiBTaWUgYml0dGUgZm9sZ2VuZGVuIEJ1dHRvbi48L3A+PGJ1dHRvbiBkYXRhLWE9InJlc2V0IiBzdHlsZT0icGFkZGluZzo4cHggNHB4O2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MDtjb2xvcjojMGU2YjMwO2ZvbnQ6NDAwIDEyLjVweCBJbnRlcixzYW5zLXNlcmlmO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlN0b3JuaWVyZW48L2J1dHRvbj48L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi10b3A6YXV0bztkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZDtwYWRkaW5nOjE2cHggMjBweCAzMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNlY2VjZjA7Zm9udDo0MDAgMTEuNXB4IEludGVyLHNhbnMtc2VyaWY7Y29sb3I6IzBlNmIzMCI+PHNwYW4+SW1wcmVzc3VtPC9zcGFuPjxzcGFuPkhpbGZlPC9zcGFuPjxzcGFuPkRhdGVuc2NodXR6PC9zcGFuPjwvZGl2PjwvZGl2Pic7CgogICAgdmFyIGhyID0gayA9PT0gJ3RhbicgJiYgUy5udW0ubGVuZ3RoID49IDYgPyBwbGFpbiA6IG0ucmlnaHQsIGlubmVyID0gJyc7CiAgICBpZiAoayA9PT0gJ2xvZ2luJykgaW5uZXIgPSAnPGRpdiBzdHlsZT0icGFkZGluZzoyNnB4IDE4cHggMzBweCI+PGRpdiBzdHlsZT0iZm9udDo2MDAgMTdweCBJbnRlcixzYW5zLXNlcmlmIj5Mb2dpbjwvZGl2PjxwIHN0eWxlPSJtYXJnaW46MTJweCAwIDIycHg7Zm9udDo0MDAgMTNweC8xLjU1IEludGVyLHNhbnMtc2VyaWY7Y29sb3I6IzRiNGI1NSI+RHLDvGNrZSBkZW4gdW50ZW5zdGVoZW5kZW4gQnV0dG9uIHVtIGF1dG9tYXRpc2NoIMO8YmVyIGRhcyBOZXR6d2VyayBhdXRoZW50aWZpemllcnQgenUgd2VyZGVuLjwvcD48YnV0dG9uIGNsYXNzPSJtYnRuIiBkYXRhLWE9Im5leHQiPldlaXRlcjwvYnV0dG9uPjwvZGl2Pic7CiAgICBpZiAoayA9PT0gJ3RhbicpIHsKICAgICAgdmFyIGJveGVzID0gJyc7CiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbS50YW5MZW47IGorKykgYm94ZXMgKz0gJzxkaXYgY2xhc3M9InRiIj4nICsgKFMudGFuW2pdIHx8ICcnKSArICc8L2Rpdj4nOwogICAgICBpbm5lciA9ICc8ZGl2IHN0eWxlPSJwYWRkaW5nOjIycHggMThweCAyNHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleDoxIj48ZGl2IHN0eWxlPSJmb250OjYwMCAxOXB4LzEuMjUgSW50ZXIsc2Fucy1zZXJpZiI+QmVzdMOkdGlndW5nc2NvZGUgZWluZ2ViZW48L2Rpdj48cCBzdHlsZT0ibWFyZ2luOjhweCAwO2ZvbnQ6NDAwIDEyLjVweC8xLjU1IEludGVyLHNhbnMtc2VyaWY7Y29sb3I6IzRiNGI1NSI+V2lyIGhhYmVuIGVpbmUgU01TIG1pdCBlaW5lbSBCZXN0w6R0aWd1bmdzY29kZSBhbiBmb2xnZW5kZSBIYW5keW51bW1lciBnZXNjaGlja3Q6ICcgKyBwbGFpbiArICcuIERhbWl0IGJlc3TDpHRpZ2VuIFNpZSBkZW4gS2F1ZjogJyArIGNoYXJnZSArICcuPC9wPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTZweDtmb250OjQwMCAxMS41cHggSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojOGE4YTk0Ij4nICsgbS50YW5IaW50ICsgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjlweCI+JyArIGJveGVzICsgJzwvZGl2PjxidXR0b24gY2xhc3M9Im1idG4iIGRhdGEtYT0ibmV4dCIgc3R5bGU9Im1hcmdpbjoxNnB4IDAgOHB4O29wYWNpdHk6JyArIChTLnRhbi5sZW5ndGggPT09IG0udGFuTGVuID8gMSA6IC40NSkgKyAnIj4nICsgbS5tbm9DdGEgKyAnPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iY2J0biIgZGF0YS1hPSJyZXNldCI+QWJicmVjaGVuPC9idXR0b24+PGRpdiBzdHlsZT0ibWFyZ2luLXRvcDphdXRvO3BhZGRpbmctdG9wOjE4cHgiPicgKyBrZXlwYWQoKSArICc8L2Rpdj48L2Rpdj4nOwogICAgfQogICAgaWYgKGsgPT09ICdjb25maXJtJykgaW5uZXIgPSAnPGRpdiBzdHlsZT0icGFkZGluZzoyMnB4IDE4cHggMjhweCI+PHNwYW4gc3R5bGU9ImZvbnQ6NTAwIDExcHgvMSBJbnRlcixzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4wOGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjojNmI2Yjc2Ij5WZXJ0cmFnc3BhcnRuZXIgdW5kIExlaXN0dW5nPC9zcGFuPjxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MTRweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZWNlY2YwIj4nICsKICAgICAgJzxkaXYgY2xhc3M9Imt2Ij48c3Bhbj5BbmJpZXRlcjwvc3Bhbj48c3Bhbj5TdGFyZmFsbCBHYW1lcyBHbWJILCBIYW1idXJnPC9zcGFuPjwvZGl2PicgKwogICAgICAnPGRpdiBjbGFzcz0ia3YiPjxzcGFuPlNlcnZpY2U8L3NwYW4+PHNwYW4+JyArIChwLnN1YiA/ICdTdGFyZmFsbCBBcmVuYSAnICsgcC5jb2lucyArICcgKEFibyknIDogJ1N0YXJmYWxsIEFyZW5hIOKAkyAnICsgcC5jb2lucyArICcgQ29pbnMnKSArICc8L3NwYW4+PC9kaXY+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJrdiI+PHNwYW4+JyArIChwLnN1YiA/ICdBYm8tUHJlaXMnIDogJ1ByZWlzJykgKyAnPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo2MDAiPicgKyAocC5zdWIgPyBwLnByaWNlICsgJyBwcm8gJyArIHAucGVyICsgJyAoaW5rbC4gTXdTdC4pJyA6IHAucHJpY2UgKyAnIGVpbm1hbGlnIChpbmtsLiBNd1N0LiknKSArICc8L3NwYW4+PC9kaXY+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJrdiI+PHNwYW4+TGF1ZnplaXQ8L3NwYW4+PHNwYW4+JyArIChwLnN1YiA/ICdiaXMgYXVmIFdpZGVycnVmLCAnICsgcC5ldmVyeSA6ICdFaW5tYWxrYXVmLCBrZWluIEFib25uZW1lbnQnKSArICc8L3NwYW4+PC9kaXY+PC9kaXY+JyArCiAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7cGFkZGluZy10b3A6MTRweDtib3JkZXItdG9wOjJweCBzb2xpZCB2YXIoLS1tYikiPjxkaXYgc3R5bGU9ImZvbnQ6NTAwIDE0cHgvMS4zIEludGVyLHNhbnMtc2VyaWY7Y29sb3I6dmFyKC0tbWIpIj4xLiBJaHJlIEJlc3TDpHRpZ3VuZzwvZGl2PjxwIHN0eWxlPSJtYXJnaW4tdG9wOjEwcHg7Zm9udDo0MDAgMTIuNXB4LzEuNiBJbnRlcixzYW5zLXNlcmlmO2NvbG9yOiM0YjRiNTUiPkJlc3TDpHRpZ2VuIFNpZSBkaWUgQWJyZWNobnVuZyDDvGJlciBJaHJlIE1vYmlsZnVua251bW1lciBkdXJjaCBLbGljayBhdWYg4oCeJyArIG0ubW5vQ3RhICsgJ+KAnDogPHN0cm9uZz4nICsgY2hhcmdlICsgJzwvc3Ryb25nPi48L3A+PC9kaXY+JyArCiAgICAgICc8YnV0dG9uIGNsYXNzPSJtYnRuIiBkYXRhLWE9Im5leHQiIHN0eWxlPSJtYXJnaW46MThweCAwIDlweCI+JyArIG0ubW5vQ3RhICsgJzwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImNidG4iIGRhdGEtYT0icmVzZXQiPkFiYnJlY2hlbjwvYnV0dG9uPjwvZGl2Pic7CiAgICBpZiAoayA9PT0gJ3N1Y2Nlc3MnKSBpbm5lciA9ICc8ZGl2IHN0eWxlPSJmbGV4OjE7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6MTJweDtwYWRkaW5nOjQwcHggMzBweDt0ZXh0LWFsaWduOmNlbnRlciI+PGRpdiBzdHlsZT0id2lkdGg6NTZweDtoZWlnaHQ6NTZweDtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1iKTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udDo0MDAgMjRweCBJbnRlcixzYW5zLXNlcmlmO2NvbG9yOnZhcigtLW1iKSI+4pyTPC9kaXY+PGRpdiBzdHlsZT0iZm9udDo2MDAgMjFweC8xLjI1IEludGVyLHNhbnMtc2VyaWYiPlphaGx1bmcgZXJmb2xncmVpY2g8L2Rpdj48cCBjbGFzcz0ibXUiIHN0eWxlPSJmb250OjQwMCAxM3B4LzEuNTUgSW50ZXIsc2Fucy1zZXJpZiI+V2lyIGhhYmVuIERlaW5lIFphaGx1bmcgw7xiZXIgJyArIHAucHJpY2UgKyAnIGVyaGFsdGVuLjwvcD48YnV0dG9uIGNsYXNzPSJtYnRuIiBkYXRhLWE9Im5leHQiIHN0eWxlPSJtYXJnaW4tdG9wOjE4cHg7Ym9yZGVyLXJhZGl1czoyNnB4Ij5XZWl0ZXI8L2J1dHRvbj48L2Rpdj4nOwogICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJwZyIgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4iPjxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7cGFkZGluZzoxM3B4IDE4cHg7YmFja2dyb3VuZDonICsgbS5oYiArICc7Y29sb3I6JyArIG0uaGYgKyAnO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICcgKyBtLmhsICsgJyI+PHNwYW4gc3R5bGU9ImZvbnQ6NzAwIDE3cHgvMSBMYXRvLHNhbnMtc2VyaWY7Y29sb3I6JyArIG0ubWsgKyAnIj4nICsgbS5tYXJrICsgJzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udDo1MDAgMTIuNXB4LzEgSW50ZXIsc2Fucy1zZXJpZiI+JyArIGhyICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjlweDtwYWRkaW5nOjEzcHggMThweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWNlY2YwIj4nICsgemFobChmYWxzZSkgKyAnPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OmF1dG87Zm9udDo0MDAgMTBweCBJbnRlcixzYW5zLXNlcmlmO2NvbG9yOiM5YTlhYTQiPlNlaXRlIGRlcyBOZXR6YmV0cmVpYmVyczwvc3Bhbj48L2Rpdj4nICsgaW5uZXIgKyAnPC9kaXY+JzsKICB9CgogIGZ1bmN0aW9uIHJlbmRlcigpIHsKICAgIHZhciB1ID0gVUlbUy5sYW5nXSwgTCA9IExJTkVTW1MubGFuZ10sIGsgPSBraW5kKCksIG0gPSBNTk9TW1MubW5vXSwgcCA9IHBrKCksIGxzID0gbGlzdCgpOwogICAgdmFyIGxuID0gKGsgPT09ICdvZmZlcicgJiYgUy5tb2RlID09PSAndGFuJykgPyBMLm9mZmVyVGFuIDogTFtrXTsKICAgIGlmIChTLmkgPT09IHNtc0lkeCgpKSBsbiA9IFtsblswXSwgbG5bMV0gKyAoUy5sYW5nID09PSAnZGUnID8gJyBHbGVpY2h6ZWl0aWcgdmVyc2NoaWNrdCBkZXIgTmV0emJldHJlaWJlciBhdXRvbWF0aXNjaCBlaW5lIEJlc3TDpHRpZ3VuZ3MtU01TLicgOiAnIEF0IHRoZSBzYW1lIHRpbWUgdGhlIG9wZXJhdG9yIGF1dG9tYXRpY2FsbHkgc2VuZHMgYSBjb25maXJtYXRpb24gU01TLicpXTsKICAgIHZhciBzbXNUeHQgPSBwLnN1YiA/ICdJaHIgQWJvOiBTdGFyZmFsbCBBcmVuYSAnICsgcC5jb2lucyArICcsICcgKyBwLnByaWNlICsgJyBwcm8gJyArIHAucGVyICsgJywgYmlzIGF1ZiBXaWRlcnJ1Zi4gQWJyZWNobnVuZyDDvGJlciBJaHJlIE1vYmlsZnVua3JlY2hudW5nLiBLw7xuZGlndW5nOiBteS5rYW56YXJvby5jb20nIDogJ0lociBLYXVmOiBTdGFyZmFsbCBBcmVuYSDigJMgJyArIHAuY29pbnMgKyAnIENvaW5zIGbDvHIgJyArIHAucHJpY2UgKyAnIChlaW5tYWxpZykuIEFicmVjaG51bmcgw7xiZXIgSWhyZSBNb2JpbGZ1bmtyZWNobnVuZy4gRnJhZ2VuOiBoZWxwQGthbnphcm9vLmNvbSc7CiAgICB2YXIgc21zSHRtbCA9IFMuc21zID8gJzxidXR0b24gY2xhc3M9InNtcycgKyAoUy5zbXNOZXcgPyAnIGluJyA6ICcnKSArICciIGRhdGEtYT0ic21zeCI+PHNwYW4gY2xhc3M9InNtc2kiPjxpPjwvaT48L3NwYW4+PHNwYW4gc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MCI+PHNwYW4gY2xhc3M9InNtc2giPicgKyBtLm5hbWUgKyAnPHNwYW4+amV0enQ8L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJzbXN0Ij4nICsgc21zVHh0ICsgJzwvc3Bhbj48L3NwYW4+PC9idXR0b24+JyA6ICcnOwogICAgUy5zbXNOZXcgPSBmYWxzZTsKICAgIHZhciBzYyA9IE1hdGgubWF4KDAuNTUsIE1hdGgubWluKDEsICh3aW5kb3cuaW5uZXJIZWlnaHQgLSA3MCkgLyA4NzQpKTsKICAgIHZhciBkb3RzID0gJyc7CiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxzLmxlbmd0aDsgaisrKSBkb3RzICs9ICc8YnV0dG9uIGRhdGEtYT0iZ28iIGRhdGEtdj0iJyArIGogKyAnIiBjbGFzcz0iJyArIChqID09PSBTLmkgPyAnb24nIDogaiA8IFMuaSA/ICdkJyA6ICcnKSArICciPjwvYnV0dG9uPic7CiAgICB2YXIgcGFja3MgPSAnJzsKICAgIFBBQ0tTLmZvckVhY2goZnVuY3Rpb24gKHEpIHsgcGFja3MgKz0gJzxidXR0b24gY2xhc3M9InNnJyArIChxLmlkID09PSBTLnBhY2sgPyAnIG9uJyA6ICcnKSArICciIGRhdGEtYT0icGFjayIgZGF0YS12PSInICsgcS5pZCArICciPicgKyBxLmJ0biArICc8L2J1dHRvbj4nOyB9KTsKICAgIHZhciBzZyA9IGZ1bmN0aW9uIChhLCB2LCBvbiwgdCkgeyByZXR1cm4gJzxidXR0b24gY2xhc3M9InNnJyArIChvbiA/ICcgb24nIDogJycpICsgJyIgZGF0YS1hPSInICsgYSArICciIGRhdGEtdj0iJyArIHYgKyAnIj4nICsgdCArICc8L2J1dHRvbj4nOyB9OwogICAgdmFyIGRhcmsgPSBrID09PSAnc2hvcCc7CiAgICB2YXIga2VlcCA9IHJvb3QucXVlcnlTZWxlY3RvcignLmJvZHknKSwgc3QgPSBrZWVwICYmIGtlZXAuZGF0YXNldC5rID09PSBrID8ga2VlcC5zY3JvbGxUb3AgOiAwOwogICAgcm9vdC5pbm5lckhUTUwgPSAnPHN0eWxlPicgKyBDU1MgKyAnPC9zdHlsZT48ZGl2IGNsYXNzPSJ3Ij48ZGl2IGNsYXNzPSJtIj48ZGl2IGNsYXNzPSJwbiI+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJ0b3AiPjxkaXY+PGRpdiBjbGFzcz0iZWIiPicgKyB1LmViICsgJzwvZGl2PjxoMT4nICsgdS50aXRsZSArICc8L2gxPjwvZGl2PjxkaXYgY2xhc3M9ImxnIj48YnV0dG9uIGRhdGEtYT0ibGFuZyIgZGF0YS12PSJlbiIgY2xhc3M9IicgKyAoUy5sYW5nID09PSAnZW4nID8gJ29uJyA6ICcnKSArICciPkVOPC9idXR0b24+PGJ1dHRvbiBkYXRhLWE9ImxhbmciIGRhdGEtdj0iZGUiIGNsYXNzPSInICsgKFMubGFuZyA9PT0gJ2RlJyA/ICdvbicgOiAnJykgKyAnIj5ERTwvYnV0dG9uPjwvZGl2PjwvZGl2PicgKwogICAgICAnPHAgY2xhc3M9ImludHJvIj4nICsgdS5pbnRybyArICc8L3A+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJzaSI+JyArIHUuc3RlcC5yZXBsYWNlKCclMScsIFMuaSArIDEpLnJlcGxhY2UoJyUyJywgbHMubGVuZ3RoKSArICc8L2Rpdj48ZGl2IGNsYXNzPSJ0aW50Ij48ZGl2IGNsYXNzPSJzdCI+JyArIGxuWzBdICsgJzwvZGl2PjxwIGNsYXNzPSJzbCI+JyArIGxuWzFdICsgJzwvcD48L2Rpdj48ZGl2IGNsYXNzPSJkb3RzIj4nICsgZG90cyArICc8L2Rpdj48L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEycHgiPjxkaXYgY2xhc3M9InJvdyI+PHNwYW4gY2xhc3M9ImxiIj4nICsgdS5wcm9kdWN0ICsgJzwvc3Bhbj4nICsgcGFja3MgKyAnPC9kaXY+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJyb3ciPjxzcGFuIGNsYXNzPSJsYiI+JyArIHUuY2FycmllciArICc8L3NwYW4+JyArIHNnKCdtbm8nLCAndGVsZWtvbScsIFMubW5vID09PSAndGVsZWtvbScsICdUZWxla29tJykgKyBzZygnbW5vJywgJ3ZvZGFmb25lJywgUy5tbm8gPT09ICd2b2RhZm9uZScsICdWb2RhZm9uZScpICsgc2coJ21ubycsICdvMicsIFMubW5vID09PSAnbzInLCAnbzInKSArICc8L2Rpdj4nICsKICAgICAgJzxkaXYgY2xhc3M9InJvdyI+PHNwYW4gY2xhc3M9ImxiIj4nICsgdS5uZXR3b3JrICsgJzwvc3Bhbj4nICsgc2coJ21vZGUnLCAnY2xpY2snLCBTLm1vZGUgPT09ICdjbGljaycsIHUubW9iaWxlKSArIHNnKCdtb2RlJywgJ3RhbicsIFMubW9kZSA9PT0gJ3RhbicsIHUud2lmaSkgKyAnPC9kaXY+PC9kaXY+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJyb3ciIHN0eWxlPSJnYXA6MTBweCI+PGJ1dHRvbiBjbGFzcz0icGwgcHIiIGRhdGEtYT0ibmV4dCI+JyArIHUubmV4dCArICc8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJwbCIgZGF0YS1hPSJwcmV2Ij4nICsgdS5iYWNrICsgJzwvYnV0dG9uPjxidXR0b24gY2xhc3M9InBsIiBkYXRhLWE9InJlc2V0Ij4nICsgdS5yZXN0YXJ0ICsgJzwvYnV0dG9uPjwvZGl2PjwvZGl2PicgKwogICAgICAnPGRpdiBjbGFzcz0iZHYiIHN0eWxlPSJ3aWR0aDonICsgTWF0aC5yb3VuZCg0MTQgKiBzYykgKyAncHg7aGVpZ2h0OicgKyBNYXRoLnJvdW5kKDg3NCAqIHNjKSArICdweCI+PGRpdiBjbGFzcz0iZHZpIiBzdHlsZT0idHJhbnNmb3JtOnNjYWxlKCcgKyBzYy50b0ZpeGVkKDMpICsgJykiPjxkaXYgY2xhc3M9InNjciIgc3R5bGU9Ii0tbWI6JyArIG0uYnJhbmQgKyAnO2JhY2tncm91bmQ6JyArIChkYXJrID8gJyMxNTEyMmInIDogJyNmZmYnKSArICciPicgKwogICAgICAnPGRpdiBjbGFzcz0ic2IiIHN0eWxlPSJjb2xvcjonICsgKGRhcmsgPyAnI2ZmZicgOiAnIzFhMWExZicpICsgJyI+PHNwYW4+OTo0MTwvc3Bhbj48c3BhbiBjbGFzcz0iYmF0Ij48aT48L2k+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImlzbCI+PC9kaXY+JyArIHNtc0h0bWwgKwogICAgICAnPGRpdiBjbGFzcz0iYm9keSIgZGF0YS1rPSInICsgayArICciPicgKyBzY3JlZW4oKSArICc8L2Rpdj48ZGl2IGNsYXNzPSJob21lIiBzdHlsZT0iYmFja2dyb3VuZDonICsgKGRhcmsgPyAnI2ZmZicgOiAnIzFhMWExZicpICsgJyI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJmdCI+PGI+JyArIG0ubmFtZSArICcgwrcgJyArIChTLm1vZGUgPT09ICdjbGljaycgPyB1Lm1kIDogdS53dCkgKyAnIMK3ICcgKyAocC5zdWIgPyBwLmNvaW5zICsgJyDCtyAnICsgcC5wcmljZSArICcgLyAnICsgdS5wZXJbcC5wZXJdIDogcC5jb2lucyArICcgQ29pbnMgwrcgJyArIHAucHJpY2UgKyAnICcgKyB1Lm9uZW9mZikgKyAnPC9iPjxzcGFuPicgKyB1LmZvb3QgKyAnPC9zcGFuPjwvZGl2PjwvZGl2Pic7CiAgICB2YXIgbmIgPSByb290LnF1ZXJ5U2VsZWN0b3IoJy5ib2R5Jyk7IGlmIChuYiAmJiBzdCkgbmIuc2Nyb2xsVG9wID0gc3Q7CiAgICB2YXIgY3VyID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuY3VyJyk7IGlmIChjdXIgJiYgUy5tb2RlID09PSAndGFuJyAmJiBrID09PSAnb2ZmZXInKSBjdXIuc3R5bGUuZGlzcGxheSA9IFMubnVtLmxlbmd0aCA+PSAxMSA/ICdub25lJyA6ICcnOwogIH0KCiAgcm9vdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICB2YXIgYiA9IGUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWFdJyk7IGlmICghYikgcmV0dXJuOwogICAgdmFyIGEgPSBiLmdldEF0dHJpYnV0ZSgnZGF0YS1hJyksIHYgPSBiLmdldEF0dHJpYnV0ZSgnZGF0YS12Jyk7CiAgICBpZiAoYSA9PT0gJ25leHQnKSBhZHZhbmNlKCk7CiAgICBlbHNlIGlmIChhID09PSAncHJldicpIGdvKFMuaSAtIDEpOwogICAgZWxzZSBpZiAoYSA9PT0gJ3Jlc2V0JykgcmVzdGFydCgpOwogICAgZWxzZSBpZiAoYSA9PT0gJ2dvJykgZ28oK3YpOwogICAgZWxzZSBpZiAoYSA9PT0gJ2xhbmcnKSBzZXQoeyBsYW5nOiB2IH0pOwogICAgZWxzZSBpZiAoYSA9PT0gJ3BhY2snKSBzZXQoeyBwYWNrOiB2IH0pOwogICAgZWxzZSBpZiAoYSA9PT0gJ3BpY2snKSB7IFMucGFjayA9IHY7IGdvKFMuaSArIDEpOyB9CiAgICBlbHNlIGlmIChhID09PSAnbW5vJykgcmVzdGFydCh7IG1ubzogdiB9KTsKICAgIGVsc2UgaWYgKGEgPT09ICdtb2RlJykgcmVzdGFydCh7IG1vZGU6IHYgfSk7CiAgICBlbHNlIGlmIChhID09PSAna2V5JykgcHJlc3Modik7CiAgICBlbHNlIGlmIChhID09PSAnc21zeCcpIHsgY2xlYXJUaW1lb3V0KHNtc1RpbWVyKTsgc2V0KHsgc21zOiBmYWxzZSB9KTsgfQogIH0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZW5kZXIpOwogIGhvc3QudGFiSW5kZXggPSAwOwogIGhvc3QuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7CiAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1JpZ2h0JykgYWR2YW5jZSgpOwogICAgaWYgKGUua2V5ID09PSAnQXJyb3dMZWZ0JykgZ28oUy5pIC0gMSk7CiAgfSk7CiAgcmVuZGVyKCk7CiAgfSBjYXRjaCAoZXJyKSB7CiAgICB2YXIgbXNnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t6LWRjYi1tc2cnKTsKICAgIGlmIChtc2cpIG1zZy50ZXh0Q29udGVudCA9ICdEZW1vLUZlaGxlcjogJyArIChlcnIgJiYgZXJyLm1lc3NhZ2UgPyBlcnIubWVzc2FnZSA6IGVycik7CiAgfQogfQogaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGt6U3RhcnQpOyBlbHNlIGt6U3RhcnQoKTsKfSkoKTsK