1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-11-26 22:41:17 +02:00
Files
joplin/packages/app-mobile/pluginAssets/abc/abcjs-basic-min.js.base64.js
Joplin Bot 9573bb6af7 Doc: Auto-update documentation
Auto-updated using release-website.sh
2025-11-15 12:46:15 +00:00

1 line
635 KiB
JavaScript

module.exports = `LyohIGFiY2pzX2Jhc2ljIHY2LjUuMiBDb3B5cmlnaHQgwqkgMjAwOS0yMDI0IFBhdWwgUm9zZW4gYW5kIEdyZWdvcnkgRHlrZSAoaHR0cHM6Ly9hYmNqcy5uZXQpICovCi8qISBGb3IgbGljZW5zZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIGFiY2pzX2Jhc2ljLkxJQ0VOU0UgKi8KIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuYWJjanM9dCgpOmUuQUJDSlM9dCgpfSh0aGlzLChmdW5jdGlvbigpe3JldHVybiBlPXsxMDQ1OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExODUpLGE9cig2MzA2KSxpPXIoMTU5Mikscz1yKDEwMjgpLG89cig1NjMzKSxjPXt9O2Muc2lnbmF0dXJlPSJhYmNqcy1iYXNpYyB2IituLE9iamVjdC5rZXlzKGEpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2NbZV09YVtlXX0pKSxPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtjW2VdPWlbZV19KSksYy5yZW5kZXJBYmM9cig2ODU5KSxjLnR1bmVNZXRyaWNzPXIoOTk4OSksYy5UaW1pbmdDYWxsYmFja3M9cig1NjgxKTt2YXIgbD1yKDYwMjApO2Muc2V0R2x5cGg9bC5zZXRTeW1ib2wsYy5zdHJUcmFuc3Bvc2U9bzt2YXIgaD1yKDU1OTQpLHU9cig4NDcxKSxkPXIoNTIyKSxmPXIoMjAyOSkscD1yKDYzMTMpLG09cig1MjgxKSxnPXIoODcwMiksdj1yKDUwNDkpLGI9cig0NzE4KSx5PXIoMzQ1MCkseD1yKDU2Miksaz1yKDk5OTEpO2Muc3ludGg9e0NyZWF0ZVN5bnRoOmgsaW5zdHJ1bWVudEluZGV4VG9OYW1lOnUscGl0Y2hUb05vdGVOYW1lOmQsU3ludGhDb250cm9sbGVyOnksU3ludGhTZXF1ZW5jZTpmLENyZWF0ZVN5bnRoQ29udHJvbDpwLHJlZ2lzdGVyQXVkaW9Db250ZXh0Om0sYWN0aXZlQXVkaW9Db250ZXh0Omcsc3VwcG9ydHNBdWRpbzp2LHBsYXlFdmVudDpiLGdldE1pZGlGaWxlOngsc2VxdWVuY2U6cyxtaWRpUmVuZGVyZXI6a30sYy5FZGl0b3I9cig1Mjk0KSxjLkVkaXRBcmVhPXIoMjk0NSksZS5leHBvcnRzPWN9LDYzMDY6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTY4MSksYT17fTshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGUsdDthLnN0YXJ0QW5pbWF0aW9uPWZ1bmN0aW9uKHIsYSxpKXtmdW5jdGlvbiBzKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcj1lW3RdO3IuY2xhc3NMaXN0LmNvbnRhaW5zKCJhYmNqcy1iYXIiKXx8KHIuc3R5bGUuZGlzcGxheT0ibm9uZSIpfX12YXIgbztmdW5jdGlvbiBjKGUpe2kuaGlkZUN1cnJlbnRNZWFzdXJlP2Z1bmN0aW9uKGUpe3Moci5xdWVyeVNlbGVjdG9yQWxsKGUpKX0oZSk6aS5oaWRlRmluaXNoZWRNZWFzdXJlcyYmZnVuY3Rpb24oZSl7byYmcyhyLnF1ZXJ5U2VsZWN0b3JBbGwobykpLG89ZX0oZSl9ZSYmKGUuc3RvcCgpLGU9dm9pZCAwKSxpLnNob3dDdXJzb3ImJigodD1yLnF1ZXJ5U2VsZWN0b3IoIi5hYmNqcy1jdXJzb3IiKSl8fCgodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSkuY2xhc3NOYW1lPSJhYmNqcy1jdXJzb3IgY3Vyc29yIix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsci5hcHBlbmRDaGlsZCh0KSxyLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpKSwoZT1uZXcgbihhLHtxcG06aS5icG0sZXZlbnRDYWxsYmFjazpmdW5jdGlvbihyKXtpZihyKXtpZihyLm1lYXN1cmVTdGFydCl7dmFyIG49Ii5hYmNqcy1sIisoYT1yKS5saW5lKyIuYWJjanMtbSIrYS5tZWFzdXJlTnVtYmVyO24mJmMobil9dCYmKHQuc3R5bGUubGVmdD1yLmxlZnQrInB4Iix0LnN0eWxlLnRvcD1yLnRvcCsicHgiLHQuc3R5bGUud2lkdGg9ci53aWR0aCsicHgiLHQuc3R5bGUuaGVpZ2h0PXIuaGVpZ2h0KyJweCIpfWVsc2UgZS5zdG9wKCksZT12b2lkIDA7dmFyIGF9fSkpLnN0YXJ0KCl9LGEucGF1c2VBbmltYXRpb249ZnVuY3Rpb24odCl7ZSYmKHQ/ZS5wYXVzZSgpOmUuc3RhcnQoKSl9LGEuc3RvcEFuaW1hdGlvbj1mdW5jdGlvbigpe2UmJihlLnN0b3AoKSxlPXZvaWQgMCl9fSgpLGUuZXhwb3J0cz1hfSw1NjgxOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXM7aWYodHx8KHQ9e30pLHIucXBtPXQucXBtP3BhcnNlSW50KHQucXBtLDEwKTpudWxsLCFyLnFwbSl7dmFyIG49ZS5tZXRhVGV4dD9lLm1ldGFUZXh0LnRlbXBvOm51bGw7ci5xcG09ZS5nZXRCcG0obil9ci5leHRyYU1lYXN1cmVzQXRCZWdpbm5pbmc9dC5leHRyYU1lYXN1cmVzQXRCZWdpbm5pbmc/cGFyc2VJbnQodC5leHRyYU1lYXN1cmVzQXRCZWdpbm5pbmcsMTApOjAsci5iZWF0Q2FsbGJhY2s9dC5iZWF0Q2FsbGJhY2ssci5ldmVudENhbGxiYWNrPXQuZXZlbnRDYWxsYmFjayxyLmxpbmVFbmRDYWxsYmFjaz10LmxpbmVFbmRDYWxsYmFjayxyLmxpbmVFbmRBbnRpY2lwYXRpb249dC5saW5lRW5kQW50aWNpcGF0aW9uP3BhcnNlSW50KHQubGluZUVuZEFudGljaXBhdGlvbiwxMCk6MCxyLmJlYXRTdWJkaXZpc2lvbnM9dC5iZWF0U3ViZGl2aXNpb25zP3BhcnNlSW50KHQuYmVhdFN1YmRpdmlzaW9ucywxMCk6MSxyLmpvZ2dlclRpbWVyPW51bGwsci5yZXBsYWNlVGFyZ2V0PWZ1bmN0aW9uKGUpe3Iubm90ZVRpbWluZ3M9ZS5zZXRUaW1pbmcoci5xcG0sci5leHRyYU1lYXN1cmVzQXRCZWdpbm5pbmcpLDA9PT1lLm5vdGVUaW1pbmdzLmxlbmd0aCYmKHIubm90ZVRpbWluZ3M9ZS5zZXRUaW1pbmcoMCwwKSksci5saW5lRW5kQ2FsbGJhY2smJihyLmxpbmVFbmRUaW1pbmdzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPVtdLG49bnVsbCxhPTA7YTxlLmxlbmd0aDthKyspe3ZhciBpPWVbYV07ImVuZCIhPT1pLnR5cGUmJmkudG9wIT09biYmKHIucHVzaCh7bWVhc3VyZU51bWJlcjppLm1lYXN1cmVOdW1iZXIsbWlsbGlzZWNvbmRzOmkubWlsbGlzZWNvbmRzLXQsdG9wOmkudG9wLGJvdHRvbTppLnRvcCtpLmhlaWdodH0pLG49aS50b3ApfXJldHVybiByfShlLm5vdGVUaW1pbmdzLHIubGluZUVuZEFudGljaXBhdGlvbikpLHIuc3RhcnRUaW1lPW51bGwsci5jdXJyZW50QmVhdD0wLHIuY3VycmVudEV2ZW50PTAsci5jdXJyZW50TGluZT0wLHIuY3VycmVudFRpbWU9MCxyLmlzUGF1c2VkPSExLHIuaXNSdW5uaW5nPSExLHIucGF1c2VkUGVyY2VudD1udWxsLHIuanVzdFVucGF1c2VkPSExLHIubmV3U2Vla1BlcmNlbnQ9MCxyLmxhc3RUaW1lc3RhbXA9MCwwIT09ci5ub3RlVGltaW5ncy5sZW5ndGgmJihyLm1pbGxpc2Vjb25kc1BlckJlYXQ9MWUzLyhyLnFwbS82MCkvci5iZWF0U3ViZGl2aXNpb25zLHIubGFzdE1vbWVudD1yLm5vdGVUaW1pbmdzW3Iubm90ZVRpbWluZ3MubGVuZ3RoLTFdLm1pbGxpc2Vjb25kcyxyLnRvdGFsQmVhdHM9TWF0aC5yb3VuZChyLmxhc3RNb21lbnQvci5taWxsaXNlY29uZHNQZXJCZWF0KSl9LHIucmVwbGFjZVRhcmdldChlKSxyLmRvVGltaW5nPWZ1bmN0aW9uKGUpe2lmKHIubGFzdFRpbWVzdGFtcCE9PWUmJihyLmxhc3RUaW1lc3RhbXA9ZSxyLnN0YXJ0VGltZXx8KHIuc3RhcnRUaW1lPWUpLCFyLmlzUGF1c2VkJiZyLmlzUnVubmluZykpe2ZvcihyLmN1cnJlbnRUaW1lPWUtci5zdGFydFRpbWUsci5jdXJyZW50VGltZSs9MTY7ci5ub3RlVGltaW5ncy5sZW5ndGg+ci5jdXJyZW50RXZlbnQmJnIubm90ZVRpbWluZ3Nbci5jdXJyZW50RXZlbnRdLm1pbGxpc2Vjb25kczxyLmN1cnJlbnRUaW1lOyl7aWYoci5ldmVudENhbGxiYWNrJiYiZXZlbnQiPT09ci5ub3RlVGltaW5nc1tyLmN1cnJlbnRFdmVudF0udHlwZSl7dmFyIHQ9ci5zdGFydFRpbWU7ci5ldmVudENhbGxiYWNrKHIubm90ZVRpbWluZ3Nbci5jdXJyZW50RXZlbnRdKSx0IT09ci5zdGFydFRpbWUmJihyLmN1cnJlbnRUaW1lPWUtci5zdGFydFRpbWUpfXIuY3VycmVudEV2ZW50Kyt9aWYoci5saW5lRW5kQ2FsbGJhY2smJnIubGluZUVuZFRpbWluZ3MubGVuZ3RoPnIuY3VycmVudExpbmUmJnIubGluZUVuZFRpbWluZ3Nbci5jdXJyZW50TGluZV0ubWlsbGlzZWNvbmRzPHIuY3VycmVudFRpbWUmJnIuY3VycmVudEV2ZW50PHIubm90ZVRpbWluZ3MubGVuZ3RoKXt2YXIgbj1yLm5vdGVUaW1pbmdzW3IuY3VycmVudEV2ZW50XS5taWxsaXNlY29uZHM9PT1yLmN1cnJlbnRUaW1lP3Iubm90ZVRpbWluZ3Nbci5jdXJyZW50RXZlbnRdOnIubm90ZVRpbWluZ3Nbci5jdXJyZW50RXZlbnQtMV07ci5saW5lRW5kQ2FsbGJhY2soci5saW5lRW5kVGltaW5nc1tyLmN1cnJlbnRMaW5lXSxuLHtsaW5lOnIuY3VycmVudExpbmUsZW5kVGltaW5nczpyLmxpbmVFbmRUaW1pbmdzLGN1cnJlbnRUaW1lOnIuY3VycmVudFRpbWV9KSxyLmN1cnJlbnRMaW5lKyt9aWYoci5jdXJyZW50VGltZTxyLmxhc3RNb21lbnQpe2lmKHJlcXVlc3RBbmltYXRpb25GcmFtZShyLmRvVGltaW5nKSxyLmN1cnJlbnRCZWF0KnIubWlsbGlzZWNvbmRzUGVyQmVhdDxyLmN1cnJlbnRUaW1lKXt2YXIgYT1yLmRvQmVhdENhbGxiYWNrKGUpO251bGwhPT1hJiYoci5jdXJyZW50VGltZT1hKX19ZWxzZSBpZihyLmN1cnJlbnRCZWF0PD1yLnRvdGFsQmVhdHMmJnIuYmVhdENhbGxiYWNrKXt2YXIgaT1yLmRvQmVhdENhbGxiYWNrKGUpO251bGwhPT1pJiYoci5jdXJyZW50VGltZT1pKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoci5kb1RpbWluZyl9aWYoci5jdXJyZW50VGltZT49ci5sYXN0TW9tZW50KWlmKHIuZXZlbnRDYWxsYmFjayl7dmFyIHM9ci5ldmVudENhbGxiYWNrKG51bGwpO3Iuc2hvdWxkU3RvcChzKS50aGVuKChmdW5jdGlvbihlKXtlJiZyLnN0b3AoKX0pKX1lbHNlIHIuc3RvcCgpfX0sci5zaG91bGRTdG9wPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7cmV0dXJuIGU/ImNvbnRpbnVlIj09PWU/dCghMSk6dm9pZChlLnRoZW4mJmUudGhlbigoZnVuY3Rpb24oZSl7dCgiY29udGludWUiIT09ZSl9KSkpOnQoITApfSkpfSxyLmRvQmVhdENhbGxiYWNrPWZ1bmN0aW9uKGUpe2lmKHIuYmVhdENhbGxiYWNrKXtmb3IodmFyIHQsbixhPXIuY3VycmVudEV2ZW50O2E8ci5ub3RlVGltaW5ncy5sZW5ndGgmJm51bGw9PT1yLm5vdGVUaW1pbmdzW2FdLmxlZnQ7KWErKztpZihhPHIubm90ZVRpbWluZ3MubGVuZ3RoKXtmb3IodD1yLm5vdGVUaW1pbmdzW2FdLm1pbGxpc2Vjb25kcyxhPU1hdGgubWF4KDAsci5jdXJyZW50RXZlbnQtMSk7YT49MCYmbnVsbD09PXIubm90ZVRpbWluZ3NbYV0ubGVmdDspYS0tO249ci5ub3RlVGltaW5nc1thXX12YXIgaT17fSxzPXt9O2lmKG4pe2kudG9wPW4udG9wLGkuaGVpZ2h0PW4uaGVpZ2h0O3ZhciBvPU1hdGgubWF4KDAsZS1yLnN0YXJ0VGltZS1uLm1pbGxpc2Vjb25kcyksYz10LW4ubWlsbGlzZWNvbmRzLGw9bi5lbmRYLW4ubGVmdCxoPWM/bypsL2M6MDtpLmxlZnQ9bi5sZWZ0K2gsMD09PXIuY3VycmVudEV2ZW50JiZuLm1pbGxpc2Vjb25kcz5lLXIuc3RhcnRUaW1lJiYoaS5sZWZ0PXZvaWQgMCkscz17dGltZXN0YW1wOmUsc3RhcnRUaW1lOnIuc3RhcnRUaW1lLGV2Om4sZW5kTXM6dCxvZmZNczpvLG9mZlB4OmgsZ2FwTXM6YyxnYXBQeDpsfX1lbHNlIHM9e3RpbWVzdGFtcDplLHN0YXJ0VGltZTpyLnN0YXJ0VGltZX07dmFyIHU9ci5zdGFydFRpbWU7aWYoci5iZWF0Q2FsbGJhY2soci5jdXJyZW50QmVhdC9yLmJlYXRTdWJkaXZpc2lvbnMsci50b3RhbEJlYXRzL3IuYmVhdFN1YmRpdmlzaW9ucyxyLmxhc3RNb21lbnQsaSxzKSx1IT09ci5zdGFydFRpbWUpcmV0dXJuIGUtci5zdGFydFRpbWU7ci5jdXJyZW50QmVhdCsrfXJldHVybiBudWxsfSxyLmFuaW1hdGlvbkpvZ2dlcj1mdW5jdGlvbigpe3IuaXNSdW5uaW5nJiYoci5kb1RpbWluZyhwZXJmb3JtYW5jZS5ub3coKSksci5qb2dnZXJUaW1lcj1zZXRUaW1lb3V0KHIuYW5pbWF0aW9uSm9nZ2VyLDYwKSl9LHIuc3RhcnQ9ZnVuY3Rpb24oZSx0KXtpZihyLmlzUnVubmluZz0hMCxyLmlzUGF1c2VkJiYoci5pc1BhdXNlZD0hMSx2b2lkIDA9PT1lJiYoci5qdXN0VW5wYXVzZWQ9ITApKSxlKXIuc2V0UHJvZ3Jlc3MoZSx0KTtlbHNlIGlmKDA9PT1lKXIucmVzZXQoKTtlbHNlIGlmKG51bGwhPT1yLnBhdXNlZFBlcmNlbnQpe3ZhciBuPXBlcmZvcm1hbmNlLm5vdygpO3IuY3VycmVudFRpbWU9ci5sYXN0TW9tZW50KnIucGF1c2VkUGVyY2VudCxyLnN0YXJ0VGltZT1uLXIuY3VycmVudFRpbWUsci5wYXVzZWRQZXJjZW50PW51bGwsci5yZXBvcnROZXh0PSEwfXJlcXVlc3RBbmltYXRpb25GcmFtZShyLmRvVGltaW5nKSxyLmpvZ2dlclRpbWVyPXNldFRpbWVvdXQoci5hbmltYXRpb25Kb2dnZXIsNjApfSxyLnBhdXNlPWZ1bmN0aW9uKCl7ci5pc1BhdXNlZD0hMDt2YXIgZT1wZXJmb3JtYW5jZS5ub3coKTtyLnBhdXNlZFBlcmNlbnQ9KGUtci5zdGFydFRpbWUpL3IubGFzdE1vbWVudCxyLmlzUnVubmluZz0hMSxyLmpvZ2dlclRpbWVyJiYoY2xlYXJUaW1lb3V0KHIuam9nZ2VyVGltZXIpLHIuam9nZ2VyVGltZXI9bnVsbCl9LHIuY3VycmVudE1pbGxpc2Vjb25kPWZ1bmN0aW9uKCl7cmV0dXJuIHIuY3VycmVudFRpbWV9LHIucmVzZXQ9ZnVuY3Rpb24oKXtyLmN1cnJlbnRCZWF0PTAsci5jdXJyZW50RXZlbnQ9MCxyLmN1cnJlbnRMaW5lPTAsci5zdGFydFRpbWU9bnVsbCxyLnBhdXNlZFBlcmNlbnQ9bnVsbH0sci5zdG9wPWZ1bmN0aW9uKCl7ci5wYXVzZSgpLHIucmVzZXQoKX0sci5zZXRQcm9ncmVzcz1mdW5jdGlvbihlLHQpe3ZhciBuO3N3aXRjaCh0KXtjYXNlInNlY29uZHMiOnIuY3VycmVudFRpbWU9MWUzKmUsci5jdXJyZW50VGltZTwwJiYoci5jdXJyZW50VGltZT0wKSxyLmN1cnJlbnRUaW1lPnIubGFzdE1vbWVudCYmKHIuY3VycmVudFRpbWU9ci5sYXN0TW9tZW50KSxuPXIuY3VycmVudFRpbWUvci5sYXN0TW9tZW50O2JyZWFrO2Nhc2UiYmVhdHMiOnIuY3VycmVudFRpbWU9ZSpyLm1pbGxpc2Vjb25kc1BlckJlYXQqci5iZWF0U3ViZGl2aXNpb25zLHIuY3VycmVudFRpbWU8MCYmKHIuY3VycmVudFRpbWU9MCksci5jdXJyZW50VGltZT5yLmxhc3RNb21lbnQmJihyLmN1cnJlbnRUaW1lPXIubGFzdE1vbWVudCksbj1yLmN1cnJlbnRUaW1lL3IubGFzdE1vbWVudDticmVhaztkZWZhdWx0OihuPWUpPDAmJihuPTApLG4+MSYmKG49MSksci5jdXJyZW50VGltZT1yLmxhc3RNb21lbnQqbn1yLmlzUnVubmluZ3x8KHIucGF1c2VkUGVyY2VudD1uKTt2YXIgYT1wZXJmb3JtYW5jZS5ub3coKTtmb3Ioci5zdGFydFRpbWU9YS1yLmN1cnJlbnRUaW1lLHIuY3VycmVudEV2ZW50LHIuY3VycmVudEV2ZW50PTA7ci5ub3RlVGltaW5ncy5sZW5ndGg+ci5jdXJyZW50RXZlbnQmJnIubm90ZVRpbWluZ3Nbci5jdXJyZW50RXZlbnRdLm1pbGxpc2Vjb25kczxyLmN1cnJlbnRUaW1lOylyLmN1cnJlbnRFdmVudCsrO2lmKHIubGluZUVuZENhbGxiYWNrKWZvcihyLmN1cnJlbnRMaW5lPTA7ci5saW5lRW5kVGltaW5ncy5sZW5ndGg+ci5jdXJyZW50TGluZSYmci5saW5lRW5kVGltaW5nc1tyLmN1cnJlbnRMaW5lXS5taWxsaXNlY29uZHMrci5saW5lRW5kQW50aWNpcGF0aW9uPHIuY3VycmVudFRpbWU7KXIuY3VycmVudExpbmUrKzt2YXIgaT1yLmN1cnJlbnRCZWF0O3IuY3VycmVudEJlYXQ9TWF0aC5mbG9vcihyLmN1cnJlbnRUaW1lL3IubWlsbGlzZWNvbmRzUGVyQmVhdCksci5iZWF0Q2FsbGJhY2smJmkhPT1yLmN1cnJlbnRCZWF0JiZyLmRvQmVhdENhbGxiYWNrKHIuc3RhcnRUaW1lK3IuY3VycmVudFRpbWUpLHIuZXZlbnRDYWxsYmFjayYmci5jdXJyZW50RXZlbnQ+PTAmJiJldmVudCI9PT1yLm5vdGVUaW1pbmdzW3IuY3VycmVudEV2ZW50XS50eXBlJiZyLmV2ZW50Q2FsbGJhY2soci5ub3RlVGltaW5nc1tyLmN1cnJlbnRFdmVudF0pLHIubGluZUVuZENhbGxiYWNrJiZyLmxpbmVFbmRDYWxsYmFjayhyLmxpbmVFbmRUaW1pbmdzW3IuY3VycmVudExpbmVdLHIubm90ZVRpbWluZ3Nbci5jdXJyZW50RXZlbnRdLHtsaW5lOnIuY3VycmVudExpbmUsZW5kVGltaW5nczpyLmxpbmVFbmRUaW1pbmdzfSksci5qb2dnZXJUaW1lcj1zZXRUaW1lb3V0KHIuYW5pbWF0aW9uSm9nZ2VyLDYwKX19fSwxNTkyOmZ1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfXZhciBhPXIoODkwNSksaT1yKDk1NjUpLHM9cigyNDI2KSxvPXt9OyFmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtvLm51bWJlck9mVHVuZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zcGxpdCgiXG5YOiIpLmxlbmd0aDtyZXR1cm4gMD09PXQmJih0PTEpLHR9O3ZhciBlPW8uVHVuZUJvb2s9ZnVuY3Rpb24oZSl7dmFyIHQ9aShlKTt0aGlzLmhlYWRlcj10LmhlYWRlcix0aGlzLnR1bmVzPXQudHVuZXN9O2UucHJvdG90eXBlLmdldFR1bmVCeUlkPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy50dW5lcy5sZW5ndGg7dCsrKWlmKHRoaXMudHVuZXNbdF0uaWQ9PT0iIitlKXJldHVybiB0aGlzLnR1bmVzW3RdO3JldHVybiBudWxsfSxlLnByb3RvdHlwZS5nZXRUdW5lQnlUaXRsZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMudHVuZXMubGVuZ3RoO3QrKylpZih0aGlzLnR1bmVzW3RdLnRpdGxlPT09ZSlyZXR1cm4gdGhpcy50dW5lc1t0XTtyZXR1cm4gbnVsbH0sby5wYXJzZU9ubHk9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9by5udW1iZXJPZlR1bmVzKGUpLG49W10sYT0wO2E8cjthKyspbi5wdXNoKDEpO3JldHVybiBvLnJlbmRlckVuZ2luZSgoZnVuY3Rpb24oKXt9KSxuLGUsdCl9LG8ucmVuZGVyRW5naW5lPWZ1bmN0aW9uKHQscixpLG8pe3ZhciBjPVtdO2lmKHZvaWQgMCE9PXImJnZvaWQgMCE9PWkpe3ZhciBsOyghKGw9cil8fGwucHJvcGVydHlJc0VudW1lcmFibGUoImxlbmd0aCIpfHwib2JqZWN0IiE9PW4obCl8fCJudW1iZXIiIT10eXBlb2YgbC5sZW5ndGgpJiYocj1bcl0pLHZvaWQgMD09PW8mJihvPXt9KTtmb3IodmFyIGg9by5zdGFydGluZ1R1bmU/cGFyc2VJbnQoby5zdGFydGluZ1R1bmUsMTApOjAsdT1uZXcgZShpKSxkPW5ldyBhLGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIHA9cltmXTtpZigiKiI9PT1wfHwic3RyaW5nIj09dHlwZW9mIHAmJihwPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHApKSxwKWlmKGg+PTAmJmg8dS50dW5lcy5sZW5ndGgpe2QucGFyc2UodS50dW5lc1toXS5hYmMsbyx1LnR1bmVzW2hdLnN0YXJ0UG9zLXUuaGVhZGVyLmxlbmd0aCk7dmFyIG09ZC5nZXRUdW5lKCk7by50YWJsYXR1cmUmJihtLnRhYmxhdHVyZXM9cy5wcmVwYXJlUGx1Z2lucyhtLGgsbykpO3ZhciBnPWQuZ2V0V2FybmluZ3MoKTtnJiYobS53YXJuaW5ncz1nKTt2YXIgdj10KHAsbSxmLHUudHVuZXNbaF0uYWJjKTtjLnB1c2godnx8bSl9ZWxzZSBwLmlubmVySFRNTCYmKHAuaW5uZXJIVE1MPSIiKTtoKyt9cmV0dXJuIGN9fSxvLmV4dHJhY3RNZWFzdXJlcz1mdW5jdGlvbih0KXtmb3IodmFyIHI9W10sbj1uZXcgZSh0KSxhPTA7YTxuLnR1bmVzLmxlbmd0aDthKyspe2Zvcih2YXIgaT1uLnR1bmVzW2FdLHM9aS5hYmMuc3BsaXQoIks6IiksYz1zWzFdLnNwbGl0KCJcbiIpLGw9c1swXSsiSzoiK2NbMF0rIlxuIixoPW51bGwsdT1udWxsLGQ9bnVsbCxmPVtdLHA9ITEsbT1vLnBhcnNlT25seShpLmFiYylbMF0sZz1tLmdldFBpY2t1cExlbmd0aCgpPjAsdj0wO3Y8bS5saW5lcy5sZW5ndGg7disrKXt2YXIgYj1tLmxpbmVzW3ZdO2lmKGIuc3RhZmYpZm9yKHZhciB5PTA7eTwxO3krKylmb3IodmFyIHg9Yi5zdGFmZlt5XSxrPTA7azwxO2srKylmb3IodmFyIHc9eC52b2ljZXNba10sQz0wO0M8dy5sZW5ndGg7QysrKXt2YXIgVD13W0NdO2lmKG51bGw9PT1kJiZULnN0YXJ0Q2hhcj49MCYmKGQ9VC5zdGFydENoYXIsdT12b2lkIDA9PT1ULmNob3JkP2g6bnVsbCksVC5jaG9yZCYmKGg9VCksImJhciI9PT1ULmVsX3R5cGUpe2lmKHApe3ZhciBTPXthYmM6aS5hYmMuc3Vic3RyaW5nKGQsVC5lbmRDaGFyKX07KGg9dSYmdS5jaG9yZCYmdS5jaG9yZC5sZW5ndGg+MD91LmNob3JkWzBdLm5hbWU6bnVsbCkmJihTLmxhc3RDaG9yZD1oKSxULnN0YXJ0RW5kaW5nJiYoUy5zdGFydEVuZGluZz1ULnN0YXJ0RW5kaW5nKSxULmVuZEVuZGluZyYmKFMuZW5kRW5kaW5nPVQuZW5kRW5kaW5nKSxmLnB1c2goUyksZD1udWxsLHA9ITF9fWVsc2Uibm90ZSI9PT1ULmVsX3R5cGUmJihwPSEwKX19ci5wdXNoKHtoZWFkZXI6bCxtZWFzdXJlczpmLGhhc1BpY2t1cDpnfSl9cmV0dXJuIHJ9fSgpLGUuZXhwb3J0cz1vfSw2ODU5OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE1OTIpLGE9KHIoNjc4MCkscig1MjUzKSksaT1yKDg5MDUpLHM9cigxNzU2KSxvPXt9O2Z1bmN0aW9uIGMoKXt2YXIgZT13aW5kb3cuaW5uZXJXaWR0aDtmb3IodmFyIHQgaW4gbylpZihvLmhhc093blByb3BlcnR5KHQpKXt2YXIgcj1vW3RdO2UtPTIqci5vZmZzZXRMZWZ0LHIuc3R5bGUud2lkdGg9ZSsicHgifX10cnl7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsYyksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm9yaWVudGF0aW9uQ2hhbmdlIixjKX1jYXRjaChlKXt9ZnVuY3Rpb24gbChlLHQscixuLGkpe3Iudmlld3BvcnRIb3Jpem9udGFsPyhlLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iYWJjanMtaW5uZXIiPjwvZGl2Picsci5zY3JvbGxIb3Jpem9udGFsPyhlLnN0eWxlLm92ZXJmbG93WD0iYXV0byIsZS5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiIpOmUuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsb1tlLmlkXT1lLGU9ZS5jaGlsZHJlblswXSk6ci52aWV3cG9ydFZlcnRpY2FsPyhlLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iYWJjanMtaW5uZXIgc2Nyb2xsLWFtb3VudCI+PC9kaXY+JyxlLnN0eWxlLm92ZXJmbG93WD0iaGlkZGVuIixlLnN0eWxlLm92ZXJmbG93WT0iYXV0byIsZT1lLmNoaWxkcmVuWzBdKTplLmlubmVySFRNTD0iIjt2YXIgcz1uZXcgYShlLHIpO3MuZW5ncmF2ZUFCQyh0LG4saSksdC5lbmdyYXZlcj1zLChyLnZpZXdwb3J0VmVydGljYWx8fHIudmlld3BvcnRIb3Jpem9udGFsKSYmKGUucGFyZW50Tm9kZS5zdHlsZS53aWR0aD1lLnN0eWxlLndpZHRoKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbyxjKXt2YXIgaCx1PXt9O2lmKHIpe2ZvcihoIGluIHIpci5oYXNPd25Qcm9wZXJ0eShoKSYmKHVbaF09cltoXSk7dS53YXJuaW5nc19pZCYmdS50YWJsYXR1cmUmJih1LnRhYmxhdHVyZS53YXJuaW5nX2lkPXUud2FybmluZ3NfaWQpfWlmKG8pZm9yKGggaW4gbylvLmhhc093blByb3BlcnR5KGgpJiYoImxpc3RlbmVyIj09PWg/b1toXS5oaWdobGlnaHQmJih1LmNsaWNrTGlzdGVuZXI9b1toXS5oaWdobGlnaHQpOnVbaF09b1toXSk7aWYoYylmb3IoaCBpbiBjKWMuaGFzT3duUHJvcGVydHkoaCkmJih1W2hdPWNbaF0pO3JldHVybiBuLnJlbmRlckVuZ2luZSgoZnVuY3Rpb24oZSx0LHIsbil7dmFyIG89ITE7cmV0dXJuIioiPT09ZSYmKG89ITAsKGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJ2aXNpYmlsaXR5OiBoaWRkZW47IiksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKSksIW8mJnUud3JhcCYmdS5zdGFmZndpZHRoPyh0PWZ1bmN0aW9uKGUsdCxyLG4sbyl7dmFyIGM9bmV3IGEoZSxvKS5nZXRNZWFzdXJlV2lkdGhzKHQpLGg9cy5jYWxjTGluZVdyYXBzKHQsYyxvKTtpZihoLnJlUGFyc2Upe3ZhciB1PW5ldyBpO3UucGFyc2UobixoLnJldmlzZWRQYXJhbXMpLHQ9dS5nZXRUdW5lKCk7dmFyIGQ9dS5nZXRXYXJuaW5ncygpO2QmJih0Lndhcm5pbmdzPWQpfXJldHVybiBvLmFmdGVyUGFyc2luZyYmby5hZnRlclBhcnNpbmcodCxyLG4pLGwoZSx0LGgucmV2aXNlZFBhcmFtcyxyLDApLHQuZXhwbGFuYXRpb249aC5leHBsYW5hdGlvbix0fShlLHQscixuLHUpLHQpOih1LmFmdGVyUGFyc2luZyYmdS5hZnRlclBhcnNpbmcodCxyLG4pLGwoZSx0LHUsciwwKSxvJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSksbnVsbCl9KSxlLHQsdSl9fSw5OTg5OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE1OTIpLGE9cig1MjUzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5yZW5kZXJFbmdpbmUoKGZ1bmN0aW9uKGUscixuLGkpeyhlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwidmlzaWJpbGl0eTogaGlkZGVuOyIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7dmFyIHM9bmV3IGEoZSx0KS5nZXRNZWFzdXJlV2lkdGhzKHIpO3JldHVybiBlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSkse3NlY3Rpb25zOnN9fSksIioiLGUsdCl9fSw5NDQ3OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ5MTQpLnJlbGF0aXZlTWFqb3IsYT17YWNjOiJzaGFycCIsbm90ZToiZiJ9LGk9e2FjYzoic2hhcnAiLG5vdGU6ImMifSxzPXthY2M6InNoYXJwIixub3RlOiJnIn0sbz17YWNjOiJzaGFycCIsbm90ZToiZCJ9LGM9e2FjYzoic2hhcnAiLG5vdGU6IkEifSxsPXthY2M6InNoYXJwIixub3RlOiJlIn0saD17YWNjOiJmbGF0Iixub3RlOiJCIn0sdT17YWNjOiJmbGF0Iixub3RlOiJlIn0sZD17YWNjOiJmbGF0Iixub3RlOiJBIn0sZj17YWNjOiJmbGF0Iixub3RlOiJkIn0scD17YWNjOiJmbGF0Iixub3RlOiJHIn0sbT17YWNjOiJmbGF0Iixub3RlOiJjIn0sZz17IkMjIjpbYSxpLHMsbyxjLGwse2FjYzoic2hhcnAiLG5vdGU6IkIifV0sIkYjIjpbYSxpLHMsbyxjLGxdLEI6W2EsaSxzLG8sY10sRTpbYSxpLHMsb10sQTpbYSxpLHNdLEQ6W2EsaV0sRzpbYV0sQzpbXSxGOltoXSxCYjpbaCx1XSxFYjpbaCx1LGRdLENtOltoLHUsZF0sQWI6W2gsdSxkLGZdLERiOltoLHUsZCxmLHBdLEdiOltoLHUsZCxmLHAsbV0sQ2I6W2gsdSxkLGYscCxtLHthY2M6ImZsYXQiLG5vdGU6IkYifV0sIkEjIjpbaCx1XSwiQiMiOltdLCJEIyI6W2gsdSxkXSwiRSMiOltoXSwiRyMiOltoLHUsZCxmXSxub25lOltdfTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9Z1tuKGUpXTtyZXR1cm4gdD9KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKTpudWxsfX0sNDkxNDpmdW5jdGlvbihlKXt2YXIgdD17Qzp7bW9kZXM6WyJDTWFqIiwiQW1pbiIsIkFtIiwiR01peCIsIkREb3IiLCJFUGhyIiwiRkx5ZCIsIkJMb2MiXSxzdGVwc0Zyb21DOjB9LERiOnttb2RlczpbIkRiTWFqIiwiQmJtaW4iLCJCYm0iLCJBYk1peCIsIkViRG9yIiwiRlBociIsIkdiTHlkIiwiQ0xvYyJdLHN0ZXBzRnJvbUM6MX0sRDp7bW9kZXM6WyJETWFqIiwiQm1pbiIsIkJtIiwiQU1peCIsIkVEb3IiLCJGI1BociIsIkdMeWQiLCJDI0xvYyJdLHN0ZXBzRnJvbUM6Mn0sRWI6e21vZGVzOlsiRWJNYWoiLCJDbWluIiwiQ20iLCJCYk1peCIsIkZEb3IiLCJHUGhyIiwiQWJMeWQiLCJETG9jIl0sc3RlcHNGcm9tQzozfSxFOnttb2RlczpbIkVNYWoiLCJDI21pbiIsIkMjbSIsIkJNaXgiLCJGI0RvciIsIkcjUGhyIiwiQUx5ZCIsIkQjTG9jIl0sc3RlcHNGcm9tQzo0fSxGOnttb2RlczpbIkZNYWoiLCJEbWluIiwiRG0iLCJDTWl4IiwiR0RvciIsIkFQaHIiLCJCYkx5ZCIsIkVMb2MiXSxzdGVwc0Zyb21DOjV9LEdiOnttb2RlczpbIkdiTWFqIiwiRWJtaW4iLCJFYm0iLCJEYk1peCIsIkFiRG9yIiwiQmJQaHIiLCJDYkx5ZCIsIkZMb2MiXSxzdGVwc0Zyb21DOjZ9LEc6e21vZGVzOlsiR01haiIsIkVtaW4iLCJFbSIsIkRNaXgiLCJBRG9yIiwiQlBociIsIkNMeWQiLCJGI0xvYyJdLHN0ZXBzRnJvbUM6N30sQWI6e21vZGVzOlsiQWJNYWoiLCJGbWluIiwiRm0iLCJFYk1peCIsIkJiRG9yIiwiQ1BociIsIkRiTHlkIiwiR0xvYyJdLHN0ZXBzRnJvbUM6OH0sQTp7bW9kZXM6WyJBTWFqIiwiRiNtaW4iLCJGI20iLCJFTWl4IiwiQkRvciIsIkMjUGhyIiwiREx5ZCIsIkcjTG9jIl0sc3RlcHNGcm9tQzo5fSxCYjp7bW9kZXM6WyJCYk1haiIsIkdtaW4iLCJHbSIsIkZNaXgiLCJDRG9yIiwiRFBociIsIkViTHlkIiwiQUxvYyJdLHN0ZXBzRnJvbUM6MTB9LEI6e21vZGVzOlsiQk1haiIsIkcjbWluIiwiRyNtIiwiRiNNaXgiLCJDI0RvciIsIkQjUGhyIiwiRUx5ZCIsIkEjTG9jIl0sc3RlcHNGcm9tQzoxMX0sIkMjIjp7bW9kZXM6WyJDI01haiIsIkEjbWluIiwiQSNtIiwiRyNNaXgiLCJEI0RvciIsIkUjUGhyIiwiRiNMeWQiLCJCI0xvYyJdLHN0ZXBzRnJvbUM6MX0sIkYjIjp7bW9kZXM6WyJGI01haiIsIkQjbWluIiwiRCNtIiwiQyNNaXgiLCJHI0RvciIsIkEjUGhyIiwiQkx5ZCIsIkUjTG9jIl0sc3RlcHNGcm9tQzo2fSxDYjp7bW9kZXM6WyJDYk1haiIsIkFibWluIiwiQWJtIiwiR2JNaXgiLCJEYkRvciIsIkViUGhyIiwiRmJMeWQiLCJCYkxvYyJdLHN0ZXBzRnJvbUM6MTF9fSxyPW51bGw7ZS5leHBvcnRzPXtyZWxhdGl2ZU1ham9yOmZ1bmN0aW9uKGUpe3J8fGZ1bmN0aW9uKCl7cj17fTtmb3IodmFyIGU9T2JqZWN0LmtleXModCksbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgYT10W2Vbbl1dO3JbZVtuXS50b0xvd2VyQ2FzZSgpXT1lW25dO2Zvcih2YXIgaT0wO2k8YS5tb2Rlcy5sZW5ndGg7aSsrKXt2YXIgcz1hLm1vZGVzW2ldLnRvTG93ZXJDYXNlKCk7cltzXT1lW25dfX19KCk7dmFyIG49ZS50b0xvd2VyQ2FzZSgpLm1hdGNoKC8oW2EtZ11bYiNdPykobWFqfG1pbnxtaXh8ZG9yfHBocnxseWR8bG9jfG0pPy8pO2lmKCFufHwhblsyXSlyZXR1cm4gZTtuPW5bMV0rblsyXTt2YXIgYT1yW25dO3JldHVybiBhfHxlfSxyZWxhdGl2ZU1vZGU6ZnVuY3Rpb24oZSxyKXt2YXIgbj10W2VdO2lmKCFuKXJldHVybiBlO2lmKCIiPT09cilyZXR1cm4gZTt2YXIgYT1yLnRvTG93ZXJDYXNlKCkubWF0Y2goL14obWFqfG1pbnxtaXh8ZG9yfHBocnxseWR8bG9jfG0pLyk7aWYoIWEpcmV0dXJuIGU7Zm9yKHZhciBpPWFbMV0scz0wO3M8bi5tb2Rlcy5sZW5ndGg7cysrKXt2YXIgbz1uLm1vZGVzW3NdLGM9by50b0xvd2VyQ2FzZSgpLmluZGV4T2YoaSk7aWYoLTEhPT1jJiZjPT09by5sZW5ndGgtaS5sZW5ndGgpcmV0dXJuIG8uc3Vic3RyaW5nKDAsby5sZW5ndGgtaS5sZW5ndGgpfXJldHVybiBlfSx0cmFuc3Bvc2VLZXk6ZnVuY3Rpb24oZSxyKXt2YXIgbj10W2VdO2lmKCFuKXJldHVybiBlO2Zvcig7cjwwOylyKz0xMjtmb3IodmFyIGE9KG4uc3RlcHNGcm9tQytyKSUxMixpPTA7aTxPYmplY3Qua2V5cyh0KS5sZW5ndGg7aSsrKXt2YXIgcz1PYmplY3Qua2V5cyh0KVtpXTtpZih0W3NdLnN0ZXBzRnJvbUM9PT1hKXJldHVybiBzfXJldHVybiBlfX19LDY3ODA6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTAwOCksYT1yKDQzMzEpLGk9cigxMDI4KSxzPXIoOTcxNiksbz1yKDM1MSk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQscixuKXtmb3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErKyllW3JdW25bYV1dPXRbcl1bblthXV19ZnVuY3Rpb24gdChlLHQpe2Zvcig7dDxlLmxlbmd0aCYmbnVsbD09PWVbdF0ubGVmdDspdCsrO3JldHVybiBlW3RdfXRoaXMucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnZlcnNpb249IjEuMS4wIix0aGlzLm1lZGlhPSJzY3JlZW4iLHRoaXMubWV0YVRleHQ9e30sdGhpcy5tZXRhVGV4dEluZm89e30sdGhpcy5mb3JtYXR0aW5nPXt9LHRoaXMubGluZXM9W10sdGhpcy5zdGFmZk51bT0wLHRoaXMudm9pY2VOdW09MCx0aGlzLmxpbmVOdW09MCx0aGlzLnJ1bm5pbmdGb250cz17fSxkZWxldGUgdGhpcy52aXN1YWxUcmFuc3Bvc2V9LHRoaXMucmVzZXQoKSx0aGlzLmNvcHlUb3BJbmZvPWZ1bmN0aW9uKHQpe3ZhciByPVsidGVtcG8iLCJ0aXRsZSIsImhlYWRlciIsInJoeXRobSIsIm9yaWdpbiIsImNvbXBvc2VyIiwiYXV0aG9yIiwicGFydE9yZGVyIl07ZSh0aGlzLHQsIm1ldGFUZXh0IixyKSxlKHRoaXMsdCwibWV0YVRleHRJbmZvIixyKX0sdGhpcy5jb3B5Qm90dG9tSW5mbz1mdW5jdGlvbih0KXt2YXIgcj1bInVuYWxpZ25lZFdvcmRzIiwiYm9vayIsInNvdXJjZSIsImRpc2NvZ3JhcGh5Iiwibm90ZXMiLCJ0cmFuc2NyaXB0aW9uIiwiaGlzdG9yeSIsImFiYy1jb3B5cmlnaHQiLCJhYmMtY3JlYXRvciIsImFiYy1lZGl0ZWQtYnkiLCJmb290ZXIiXTtlKHRoaXMsdCwibWV0YVRleHQiLHIpLGUodGhpcyx0LCJtZXRhVGV4dEluZm8iLHIpfSx0aGlzLmdldEJlYXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldE1ldGVyRnJhY3Rpb24oKSx0PTE7cmV0dXJuKDY9PT1lLm51bXx8OT09PWUubnVtfHwxMj09PWUubnVtfHwzPT09ZS5udW0mJjg9PT1lLmRlbikmJih0PTMpLHQvZS5kZW59LHRoaXMuZ2V0UGlja3VwTGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRCYXJMZW5ndGgoKSx0PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj0wO248ZS5sZW5ndGg7bisrKWlmKGVbbl0uc3RhZmYpZm9yKHZhciBhPTA7YTxlW25dLnN0YWZmLmxlbmd0aDthKyspZm9yKHZhciBpPTA7aTxlW25dLnN0YWZmW2FdLnZvaWNlcy5sZW5ndGg7aSsrKWZvcih2YXIgcz1lW25dLnN0YWZmW2FdLnZvaWNlc1tpXSxvPTEsYz0wO2M8cy5sZW5ndGg7YysrKXt2YXIgbD1zW2NdLnJlc3QmJiJzcGFjZXIiPT09c1tjXS5yZXN0LnR5cGU7aWYoc1tjXS5zdGFydFRyaXBsZXQmJihvPXNbY10udHJpcGxldE11bHRpcGxpZXIpLHNbY10uZHVyYXRpb24mJiFsJiYidGVtcG8iIT09c1tjXS5lbF90eXBlJiYocis9c1tjXS5kdXJhdGlvbipvKSxzW2NdLmVuZFRyaXBsZXQmJihvPTEpLHI+PXQmJihyLT10KSwiYmFyIj09PXNbY10uZWxfdHlwZSlyZXR1cm4gcn1yZXR1cm4gcn0odGhpcy5saW5lcyxlKTtyZXR1cm4gdDwxZS04fHxlLXQ8MWUtOD8wOnR9LHRoaXMuZ2V0QmFyTGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRNZXRlckZyYWN0aW9uKCk7cmV0dXJuIGUubnVtL2UuZGVufSx0aGlzLmdldFRvdGFsVGltZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvdGFsVGltZX0sdGhpcy5nZXRUb3RhbEJlYXRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG90YWxCZWF0c30sdGhpcy5taWxsaXNlY29uZHNQZXJNZWFzdXJlPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKGUpdD1lO2Vsc2V7dmFyIHI9dGhpcy5tZXRhVGV4dD90aGlzLm1ldGFUZXh0LnRlbXBvOm51bGw7dD10aGlzLmdldEJwbShyKX1yZXR1cm4gdDw9MCYmKHQ9MSksdGhpcy5nZXRCZWF0c1Blck1lYXN1cmUoKS90KjZlNH0sdGhpcy5nZXRCZWF0c1Blck1lYXN1cmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldEJlYXRMZW5ndGgoKTtyZXR1cm4gdGhpcy5nZXRCYXJMZW5ndGgoKS9lfSx0aGlzLmdldE1ldGVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmxpbmVzLmxlbmd0aDtlKyspe3ZhciB0PXRoaXMubGluZXNbZV07aWYodC5zdGFmZilmb3IodmFyIHI9MDtyPHQuc3RhZmYubGVuZ3RoO3IrKyl7dmFyIG49dC5zdGFmZltyXS5tZXRlcjtpZihuKXJldHVybiBufX1yZXR1cm57dHlwZToiY29tbW9uX3RpbWUifX0sdGhpcy5nZXRNZXRlckZyYWN0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRNZXRlcigpLHQ9NCxyPTQ7cmV0dXJuIGUmJigic3BlY2lmaWVkIj09PWUudHlwZT8odD1wYXJzZUludChlLnZhbHVlWzBdLm51bSwxMCkscj1wYXJzZUludChlLnZhbHVlWzBdLmRlbiwxMCkpOiJjdXRfdGltZSI9PT1lLnR5cGU/KHQ9MixyPTIpOiJjb21tb25fdGltZSI9PT1lLnR5cGUmJih0PTQscj00KSksdGhpcy5tZXRlcj17bnVtOnQsZGVuOnJ9LHRoaXMubWV0ZXJ9LHRoaXMuZ2V0S2V5U2lnbmF0dXJlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmxpbmVzLmxlbmd0aDtlKyspe3ZhciB0PXRoaXMubGluZXNbZV07aWYodC5zdGFmZilmb3IodmFyIHI9MDtyPHQuc3RhZmYubGVuZ3RoO3IrKylpZih0LnN0YWZmW3JdLmtleSlyZXR1cm4gdC5zdGFmZltyXS5rZXl9cmV0dXJue319LHRoaXMuZ2V0RWxlbWVudEZyb21DaGFyPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5saW5lcy5sZW5ndGg7dCsrKXt2YXIgcj10aGlzLmxpbmVzW3RdO2lmKHIuc3RhZmYpZm9yKHZhciBuPTA7bjxyLnN0YWZmLmxlbmd0aDtuKyspZm9yKHZhciBhPXIuc3RhZmZbbl0saT0wO2k8YS52b2ljZXMubGVuZ3RoO2krKylmb3IodmFyIHM9YS52b2ljZXNbaV0sbz0wO288cy5sZW5ndGg7bysrKXt2YXIgYz1zW29dO2lmKGMuc3RhcnRDaGFyJiZjLmVuZENoYXImJmMuc3RhcnRDaGFyPD1lJiZjLmVuZENoYXI+ZSlyZXR1cm4gY319cmV0dXJuIG51bGx9LHRoaXMuYWRkRWxlbWVudFRvRXZlbnRzPWZ1bmN0aW9uKGUsdCxyLGEsaSxzLG8sYyxsLGgpe2lmKHQuaGludClyZXR1cm57aXNUaWVkU3RhdGU6dm9pZCAwLGR1cmF0aW9uOjB9O3ZhciB1PXQuZHVyYXRpb25DbGFzcz90LmR1cmF0aW9uQ2xhc3M6dC5kdXJhdGlvbjtpZih0LmFiY2VsZW0ucmVzdCYmInNwYWNlciI9PT10LmFiY2VsZW0ucmVzdC50eXBlJiYodT0wKSx1PjApe2Zvcih2YXIgZD1bXSxmPTA7Zjx0LmVsZW1zZXQubGVuZ3RoO2YrKyludWxsIT09dC5lbGVtc2V0W2ZdJiZkLnB1c2godC5lbGVtc2V0W2ZdKTt2YXIgcD10LnN0YXJ0VGllO2lmKHZvaWQgMCE9PWwpZVsiZXZlbnQiK2xdLmVsZW1lbnRzLnB1c2goZCksaCYmKGVbImV2ZW50IityXXx8KGVbImV2ZW50IityXT17dHlwZToiZXZlbnQiLG1pbGxpc2Vjb25kczpyLGxpbmU6cyxtZWFzdXJlTnVtYmVyOm8sdG9wOmEsaGVpZ2h0OmksbGVmdDpudWxsLHdpZHRoOjAsZWxlbWVudHM6W10sc3RhcnRDaGFyOm51bGwsZW5kQ2hhcjpudWxsLHN0YXJ0Q2hhckFycmF5OltdLGVuZENoYXJBcnJheTpbXX0pLGVbImV2ZW50IityXS5tZWFzdXJlU3RhcnQ9ITAsaD0hMSkscHx8KGw9dm9pZCAwKTtlbHNle2lmKGVbImV2ZW50IityXSl7aWYoZVsiZXZlbnQiK3JdLmxlZnQ/ZVsiZXZlbnQiK3JdLmxlZnQ9TWF0aC5taW4oZVsiZXZlbnQiK3JdLmxlZnQsdC54KTplWyJldmVudCIrcl0ubGVmdD10LngsZVsiZXZlbnQiK3JdLmVsZW1lbnRzLnB1c2goZCksZVsiZXZlbnQiK3JdLnN0YXJ0Q2hhckFycmF5LnB1c2godC5hYmNlbGVtLnN0YXJ0Q2hhciksZVsiZXZlbnQiK3JdLmVuZENoYXJBcnJheS5wdXNoKHQuYWJjZWxlbS5lbmRDaGFyKSxudWxsPT09ZVsiZXZlbnQiK3JdLnN0YXJ0Q2hhciYmKGVbImV2ZW50IityXS5zdGFydENoYXI9dC5hYmNlbGVtLnN0YXJ0Q2hhciksbnVsbD09PWVbImV2ZW50IityXS5lbmRDaGFyJiYoZVsiZXZlbnQiK3JdLmVuZENoYXI9dC5hYmNlbGVtLmVuZENoYXIpLHQuYWJjZWxlbS5taWRpUGl0Y2hlcyYmdC5hYmNlbGVtLm1pZGlQaXRjaGVzLmxlbmd0aClmb3IoZVsiZXZlbnQiK3JdLm1pZGlQaXRjaGVzfHwoZVsiZXZlbnQiK3JdLm1pZGlQaXRjaGVzPVtdKSxmPTA7Zjx0LmFiY2VsZW0ubWlkaVBpdGNoZXMubGVuZ3RoO2YrKyllWyJldmVudCIrcl0ubWlkaVBpdGNoZXMucHVzaCh0LmFiY2VsZW0ubWlkaVBpdGNoZXNbZl0pO2lmKHQuYWJjZWxlbS5taWRpR3JhY2VOb3RlUGl0Y2hlcyYmdC5hYmNlbGVtLm1pZGlHcmFjZU5vdGVQaXRjaGVzLmxlbmd0aCl7ZVsiZXZlbnQiK3JdLm1pZGlHcmFjZU5vdGVQaXRjaGVzfHwoZVsiZXZlbnQiK3JdLm1pZGlHcmFjZU5vdGVQaXRjaGVzPVtdKTtmb3IodmFyIG09MDttPHQuYWJjZWxlbS5taWRpR3JhY2VOb3RlUGl0Y2hlcy5sZW5ndGg7bSsrKWVbImV2ZW50IityXS5taWRpR3JhY2VOb3RlUGl0Y2hlcy5wdXNoKHQuYWJjZWxlbS5taWRpR3JhY2VOb3RlUGl0Y2hlc1ttXSl9fWVsc2UgZVsiZXZlbnQiK3JdPXt0eXBlOiJldmVudCIsbWlsbGlzZWNvbmRzOnIsbGluZTpzLG1lYXN1cmVOdW1iZXI6byx0b3A6YSxoZWlnaHQ6aSxsZWZ0OnQueCx3aWR0aDp0LncsZWxlbWVudHM6W2RdLHN0YXJ0Q2hhcjp0LmFiY2VsZW0uc3RhcnRDaGFyLGVuZENoYXI6dC5hYmNlbGVtLmVuZENoYXIsc3RhcnRDaGFyQXJyYXk6W3QuYWJjZWxlbS5zdGFydENoYXJdLGVuZENoYXJBcnJheTpbdC5hYmNlbGVtLmVuZENoYXJdLG1pZGlQaXRjaGVzOnQuYWJjZWxlbS5taWRpUGl0Y2hlcz9uLmNsb25lQXJyYXkodC5hYmNlbGVtLm1pZGlQaXRjaGVzKTpbXX0sdC5hYmNlbGVtLm1pZGlHcmFjZU5vdGVQaXRjaGVzJiYoZVsiZXZlbnQiK3JdLm1pZGlHcmFjZU5vdGVQaXRjaGVzPW4uY2xvbmVBcnJheSh0LmFiY2VsZW0ubWlkaUdyYWNlTm90ZVBpdGNoZXMpKTtoJiYoZVsiZXZlbnQiK3JdLm1lYXN1cmVTdGFydD0hMCxoPSExKX19cmV0dXJue2lzVGllZFN0YXRlOmwsZHVyYXRpb246dS9jLG5leHRJc0JhcjpofHwiYmFyIj09PXQudHlwZX19LHRoaXMubWFrZVZvaWNlc0FycmF5PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9W10scj17fSxuPTA7bjx0aGlzLmVuZ3JhdmVyLnN0YWZmZ3JvdXBzLmxlbmd0aDtuKyspe3ZhciBpPXRoaXMuZW5ncmF2ZXIuc3RhZmZncm91cHNbbl07aWYoaSYmaS5zdGFmZnMmJmkuc3RhZmZzLmxlbmd0aD4wKWZvcih2YXIgcz1pLnN0YWZmc1swXSxvPXMuYWJzb2x1dGVZLGM9by1zLnRvcCphLlNURVAsbD1pLnN0YWZmc1tpLnN0YWZmcy5sZW5ndGgtMV0saD0obz1sLmFic29sdXRlWSktbC5ib3R0b20qYS5TVEVQLWMsdT1pLnZvaWNlcyxkPTA7ZDx1Lmxlbmd0aDtkKyspaWYoIXVbZF0uc3RhZmZ8fCF1W2RdLnN0YWZmLmlzVGFiU3RhZmYpe3ZhciBmPSExO2VbZF18fChlW2RdPVtdKSx2b2lkIDA9PT10W2RdJiYodFtkXT0wKTtmb3IodmFyIHA9dVtkXS5jaGlsZHJlbixtPTA7bTxwLmxlbmd0aDttKyspInRlbXBvIj09PXBbbV0udHlwZSYmKHJbdFtkXV09dGhpcy5nZXRCcG0ocFttXS5hYmNlbGVtKSksZVtkXS5wdXNoKHt0b3A6YyxoZWlnaHQ6aCxsaW5lOmkubGluZSxtZWFzdXJlTnVtYmVyOnRbZF0sZWxlbTpwW21dfSksImJhciI9PT1wW21dLnR5cGUmJmYmJnRbZF0rKywibm90ZSIhPT1wW21dLnR5cGUmJiJyZXN0IiE9PXBbbV0udHlwZXx8KGY9ITApfX1yZXR1cm4gdGhpcy50ZW1wb0xvY2F0aW9ucz1yLGV9LHRoaXMuc2V0dXBFdmVudHM9ZnVuY3Rpb24oZSxyLG4sYSl7YXx8KGE9MSk7Zm9yKHZhciBpLHM9W10sbz17fSxjPWUsbD0hMCxoPXRoaXMubWFrZVZvaWNlc0FycmF5KCksdT0wLGQ9MDtkPGgubGVuZ3RoO2QrKyl7dmFyIGY9YyxwPU1hdGgucm91bmQoMWUzKmYpLG09MCxnPS0xLHY9aFtkXSxiPW47cj10aGlzLmdldEJlYXRMZW5ndGgoKSpiLzYwO2Zvcih2YXIgeT0tMSx4PTA7eDx2Lmxlbmd0aDt4Kyspe3ZhciBrPXZbeF0ubWVhc3VyZU51bWJlcjt5IT09ayYmdGhpcy50ZW1wb0xvY2F0aW9uc1trXSYmKGI9dGhpcy50ZW1wb0xvY2F0aW9uc1trXSxyPWEqdGhpcy5nZXRCZWF0TGVuZ3RoKCkqYi82MCx5PWspO3ZhciB3LEM9dlt4XS5lbGVtLFQ9dGhpcy5hZGRFbGVtZW50VG9FdmVudHMobyxDLHAsdlt4XS50b3Asdlt4XS5oZWlnaHQsdlt4XS5saW5lLHZbeF0ubWVhc3VyZU51bWJlcixyLGksbCk7aWYoaT1ULmlzVGllZFN0YXRlLGw9VC5uZXh0SXNCYXIsZis9VC5kdXJhdGlvbixDLmR1cmF0aW9uPjAmJm9bImV2ZW50IitwXSYmKHc9ImV2ZW50IitwKSxwPU1hdGgucm91bmQoMWUzKmYpLCJiYXIiPT09Qy50eXBlKXt2YXIgUz1DLmFiY2VsZW0udHlwZSxfPSJiYXJfcmlnaHRfcmVwZWF0Ij09PVN8fCJiYXJfZGJsX3JlcGVhdCI9PT1TLEU9IjEiPT09Qy5hYmNlbGVtLnN0YXJ0RW5kaW5nLE09ImJhcl9sZWZ0X3JlcGVhdCI9PT1TfHwiYmFyX2RibF9yZXBlYXQiPT09U3x8ImJhcl9yaWdodF9yZXBlYXQiPT09UztpZihfKXt4PjAmJihvW3ddLmVuZFg9Qy54KSwtMT09PWcmJihnPXgpO3ZhciBBPTA7eT0tMTtmb3IodmFyIE49bTtOPGc7TisrKXt5IT09KGs9dltOXS5tZWFzdXJlTnVtYmVyKSYmdGhpcy50ZW1wb0xvY2F0aW9uc1trXSYmKGI9dGhpcy50ZW1wb0xvY2F0aW9uc1trXSxyPWEqdGhpcy5nZXRCZWF0TGVuZ3RoKCkqYi82MCx5PWspO3ZhciBCPXZbTl0uZWxlbTtpPShUPXRoaXMuYWRkRWxlbWVudFRvRXZlbnRzKG8sQixwLHZbTl0udG9wLHZbTl0uaGVpZ2h0LHZbTl0ubGluZSx2W05dLm1lYXN1cmVOdW1iZXIscixpLGwpKS5pc1RpZWRTdGF0ZSxsPVQubmV4dElzQmFyLGYrPVQuZHVyYXRpb24sQT1wLHA9TWF0aC5yb3VuZCgxZTMqZil9b1siZXZlbnQiK0FdJiYob1siZXZlbnQiK0FdLmVuZFg9dltnXS5lbGVtLngpLGw9ITAsZz0tMX1FJiYoZz14KSxNJiYobT14KX19dT1NYXRoLm1heCh1LHApfXJldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQscixuLGEsaT1lLmxlbmd0aC0xO2k+PTA7aS0tKXt2YXIgcz1lW2ldOyJiYXIiPT09cy50eXBlPyhzLnRvcD1uLHMubmV4dFRvcD10LHQ9bixzLmJvdHRvbT1hLHMubmV4dEJvdHRvbT1yLHI9YSk6ImV2ZW50Ij09PXMudHlwZSYmKG49cy50b3AsYT1zLnRvcCtzLmhlaWdodCl9fShzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJnQucHVzaChlW3JdKTtyZXR1cm4gdC5zb3J0KChmdW5jdGlvbihlLHQpe3ZhciByPWUubWlsbGlzZWNvbmRzLXQubWlsbGlzZWNvbmRzO3JldHVybiAwIT09cj9yOiJiYXIiPT09ZS50eXBlPy0xOjF9KSl9KG8pKSxmdW5jdGlvbihlLHIpe2lmKCEoci5sZW5ndGg8MSkpe2Zvcih2YXIgbj0wO248ci5sZW5ndGgtMTtuKyspe3ZhciBhPXJbbl0saT10KHIsbisxKTtpZihudWxsIT09YS5sZWZ0KXt2YXIgcz1pJiZhLnRvcD09PWkudG9wP2kubGVmdDplW2EubGluZV0uc3RhZmZHcm91cC53O3ZvaWQgMCE9PWEuZW5kWD9zPmEubGVmdCYmKGEuZW5kWD1NYXRoLm1pbihhLmVuZFgscykpOmEuZW5kWD1zfX12YXIgbz1yW3IubGVuZ3RoLTFdO28uZW5kWD1lW28ubGluZV0uc3RhZmZHcm91cC53fX0odGhpcy5saW5lcyxzKSxzLnB1c2goe3R5cGU6ImVuZCIsbWlsbGlzZWNvbmRzOnV9KSx0aGlzLmFkZFVzZWZ1bENhbGxiYWNrSW5mbyhzLGIqYSksc30sdGhpcy5hZGRVc2VmdWxDYWxsYmFja0luZm89ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9dGhpcy5taWxsaXNlY29uZHNQZXJNZWFzdXJlKHQpLG49MDtuPGUubGVuZ3RoO24rKyllW25dLm1pbGxpc2Vjb25kc1Blck1lYXN1cmU9cn0sdGhpcy5nZXRCcG09ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZXx8KGU9dGhpcy5tZXRhVGV4dD90aGlzLm1ldGFUZXh0LnRlbXBvOm51bGwpLGUpe3Q9ZS5icG07dmFyIHI9dGhpcy5nZXRCZWF0TGVuZ3RoKCk7dD10KihlLmR1cmF0aW9uJiZlLmR1cmF0aW9uLmxlbmd0aD4wP2UuZHVyYXRpb25bMF06cikvcn1pZighdCl7dD0xODA7dmFyIG49dGhpcy5nZXRNZXRlckZyYWN0aW9uKCk7biYmMyE9PW4ubnVtJiZuLm51bSUzPT0wJiYodD0xMjApfXJldHVybiB0fSx0aGlzLnNldFRpbWluZz1mdW5jdGlvbihlLHQpe2lmKHQ9dHx8MCwhdGhpcy5lbmdyYXZlcnx8IXRoaXMuZW5ncmF2ZXIuc3RhZmZncm91cHMpcmV0dXJuIGNvbnNvbGUubG9nKCJzZXRUaW1pbmcgY2Fubm90IGJlIGNhbGxlZCBiZWZvcmUgdGhlIHR1bmUgaXMgZHJhd24uIiksdGhpcy5ub3RlVGltaW5ncz1bXSx0aGlzLm5vdGVUaW1pbmdzO3ZhciByPXRoaXMubWV0YVRleHQ/dGhpcy5tZXRhVGV4dC50ZW1wbzpudWxsLG49dGhpcy5nZXRCcG0ociksYT0xO2U/ciYmKGE9ZS9uKTplPW47dmFyIGk9dGhpcy5nZXRCZWF0TGVuZ3RoKCkscz1lLzYwLG89dGhpcy5nZXRCYXJMZW5ndGgoKS9pKnQvcztvJiYoby09dGhpcy5nZXRQaWNrdXBMZW5ndGgoKS9pL3MpO3ZhciBjPWkqcztyZXR1cm4gdGhpcy5ub3RlVGltaW5ncz10aGlzLnNldHVwRXZlbnRzKG8sYyxlLGEpLHRoaXMubm90ZVRpbWluZ3MubGVuZ3RoPjA/KHRoaXMudG90YWxUaW1lPXRoaXMubm90ZVRpbWluZ3NbdGhpcy5ub3RlVGltaW5ncy5sZW5ndGgtMV0ubWlsbGlzZWNvbmRzLzFlMyx0aGlzLnRvdGFsQmVhdHM9dGhpcy50b3RhbFRpbWUqcyk6KHRoaXMudG90YWxUaW1lPXZvaWQgMCx0aGlzLnRvdGFsQmVhdHM9dm9pZCAwKSx0aGlzLm5vdGVUaW1pbmdzfSx0aGlzLnNldFVwQXVkaW89ZnVuY3Rpb24oZSl7ZXx8KGU9e30pO3ZhciB0PWkodGhpcyxlKTtyZXR1cm4gcyh0LGUsdGhpcy5mb3JtYXR0aW5nLnBlcmNtYXAsdGhpcy5mb3JtYXR0aW5nLm1pZGkpfSx0aGlzLmRlbGluZT1mdW5jdGlvbihlKXtyZXR1cm4gbyh0aGlzLmxpbmVzLGUpfSx0aGlzLmZpbmRTZWxlY3RhYmxlRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lbmdyYXZlciYmdGhpcy5lbmdyYXZlci5zZWxlY3RhYmxlcz90aGlzLmVuZ3JhdmVyLmZpbmRTZWxlY3RhYmxlRWxlbWVudChlKTpudWxsfSx0aGlzLmdldFNlbGVjdGFibGVBcnJheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZ3JhdmVyJiZ0aGlzLmVuZ3JhdmVyLnNlbGVjdGFibGVzP3RoaXMuZW5ncmF2ZXIuc2VsZWN0YWJsZXM6W119fX0sMzUxOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtyZXR1cm4iYWJzZWxlbSI9PT1lPyJhYnNlbGVtIjp0fWZ1bmN0aW9uIHIoZSx0KXtlLmVsX3R5cGU9Im1ldGVyIixlLnN0YXJ0Q2hhcj0tMSxlLmVuZENoYXI9LTE7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdFtyXS51bnNoaWZ0KGUpfWZ1bmN0aW9uIG4oZSx0KXtlLmVsX3R5cGU9ImtleSIsZS5zdGFydENoYXI9LTEsZS5lbmRDaGFyPS0xO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXRbcl0udW5zaGlmdChlKX1mdW5jdGlvbiBhKGUsdCl7ZS5lbF90eXBlPSJjbGVmIixlLnN0YXJ0Q2hhcj0tMSxlLmVuZENoYXI9LTE7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdFtyXS51bnNoaWZ0KGUpfWZ1bmN0aW9uIGkoZSx0LHIpe2UuZWxfdHlwZT0iZm9udCIsZS50eXBlPXIsZS5zdGFydENoYXI9LTEsZS5lbmRDaGFyPS0xO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRbbl0udW5zaGlmdChlKX1mdW5jdGlvbiBzKGUscil7cmV0dXJuIWV8fEpTT04uc3RyaW5naWZ5KGUsdCk9PT1KU09OLnN0cmluZ2lmeShyLHQpfWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0PXt9LHI9T2JqZWN0LmtleXMoZSksbj0wO248ci5sZW5ndGg7bisrKWlmKCJzdGFmZiIhPT1yW25dKXRbcltuXV09ZVtyW25dXTtlbHNle3Quc3RhZmY9W107Zm9yKHZhciBhPTA7YTxlLnN0YWZmLmxlbmd0aDthKyspe2Zvcih2YXIgaT17fSxzPU9iamVjdC5rZXlzKGUuc3RhZmZbYV0pLG89MDtvPHMubGVuZ3RoO28rKylpZigidm9pY2VzIiE9PXNbb10paVtzW29dXT1lLnN0YWZmW2FdW3Nbb11dO2Vsc2V7aS52b2ljZXM9W107Zm9yKHZhciBjPTA7YzxlLnN0YWZmW2FdLnZvaWNlcy5sZW5ndGg7YysrKWkudm9pY2VzLnB1c2goW10uY29uY2F0KGUuc3RhZmZbYV0udm9pY2VzW2NdKSl9dC5zdGFmZi5wdXNoKGkpfX1yZXR1cm4gdH1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0fHwodD17fSk7Zm9yKHZhciBjPSEhdC5saW5lQnJlYWtzLGw9W10saD0hMSx1PVtdLGQ9W10sZj1bXSxwPVtdLG09W10sZz1bXSx2PVtdLGI9MDtiPGUubGVuZ3RoO2IrKyl7dmFyIHk9ZVtiXTtpZih5LnN0YWZmKXtpZihoJiYheS52c2tpcClmb3IodmFyIHg9bFtsLmxlbmd0aC0xXSxrPTA7azx4LnN0YWZmLmxlbmd0aDtrKyspe3ZhciB3PXkuc3RhZmZba10sQz14LnN0YWZmW2tdO2lmKHcmJihzKHcubWV0ZXIsdVtrXSl8fChyKHcubWV0ZXIsdy52b2ljZXMpLHVba109dy5tZXRlcixkZWxldGUgdy5tZXRlcikscyh3LmtleSxkW2tdKXx8KG4ody5rZXksdy52b2ljZXMpLGRba109dy5rZXksZGVsZXRlIHcua2V5KSx3LnRpdGxlJiYoQy5hYmJyZXZUaXRsZT13LnRpdGxlKSxzKHcuY2xlZixmW2tdKXx8KGEody5jbGVmLHcudm9pY2VzKSxmW2tdPXcuY2xlZixkZWxldGUgdy5jbGVmKSxzKHcudm9jYWxmb250LHBba10pfHwoaSh3LnZvY2FsZm9udCx3LnZvaWNlcywidm9jYWxmb250IikscFtrXT13LnZvY2FsZm9udCxkZWxldGUgdy52b2NhbGZvbnQpLHMody5nY2hvcmRmb250LG1ba10pfHwoaSh3LmdjaG9yZGZvbnQsdy52b2ljZXMsImdjaG9yZGZvbnQiKSxtW2tdPXcuZ2Nob3JkZm9udCxkZWxldGUgdy5nY2hvcmRmb250KSxzKHcudHJpcGxldGZvbnQsZ1trXSl8fChpKHcudHJpcGxldGZvbnQsdy52b2ljZXMsInRyaXBsZXRmb250IiksZ1trXT13LnRyaXBsZXRmb250LGRlbGV0ZSB3LnRyaXBsZXRmb250KSxzKHcuYW5ub3RhdGlvbmZvbnQsdltrXSl8fChpKHcuYW5ub3RhdGlvbmZvbnQsdy52b2ljZXMsImFubm90YXRpb25mb250IiksdltrXT13LmFubm90YXRpb25mb250LGRlbGV0ZSB3LmFubm90YXRpb25mb250KSksdylmb3IodmFyIFQ9MDtUPEMudm9pY2VzLmxlbmd0aDtUKyspe3ZhciBTPUMudm9pY2VzW1RdLF89dy52b2ljZXNbVF07YyYmUy5wdXNoKHtlbF90eXBlOiJicmVhayJ9KSxfJiYoQy52b2ljZXNbVF09Uy5jb25jYXQoXykpfX1lbHNle2Zvcih2YXIgRT0wO0U8eS5zdGFmZi5sZW5ndGg7RSsrKWRbRV09eS5zdGFmZltFXS5rZXksdVtFXT15LnN0YWZmW0VdLm1ldGVyLGZbRV09eS5zdGFmZltFXS5jbGVmO2wucHVzaChvKHkpKX1oPSEwfWVsc2UgaD0hMSxsLnB1c2goeSl9cmV0dXJuIGx9fSwyOTQ1OmZ1bmN0aW9uKGUpe3RyeXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygd2luZG93LkN1c3RvbUV2ZW50KXt2YXIgdD1mdW5jdGlvbihlLHQpe3Q9dHx8e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMSxkZXRhaWw6dm9pZCAwfTt2YXIgcj1kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKTtyZXR1cm4gci5pbml0Q3VzdG9tRXZlbnQoZSx0LmJ1YmJsZXMsdC5jYW5jZWxhYmxlLHQuZGV0YWlsKSxyfTt0LnByb3RvdHlwZT13aW5kb3cuRXZlbnQucHJvdG90eXBlLHdpbmRvdy5DdXN0b21FdmVudD10fX1jYXRjaChlKXt9dmFyIHI9ZnVuY3Rpb24oZSl7dGhpcy5pc0VkaXRBcmVhPSEwLCJzdHJpbmciPT10eXBlb2YgZT8odGhpcy50ZXh0YXJlYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKSx0aGlzLnRleHRhcmVhfHwodGhpcy50ZXh0YXJlYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpKSk6dGhpcy50ZXh0YXJlYT1lLHRoaXMuaW5pdGlhbFRleHQ9dGhpcy50ZXh0YXJlYS52YWx1ZSx0aGlzLmlzRHJhZ2dpbmc9ITF9O3IucHJvdG90eXBlLmFkZFNlbGVjdGlvbkxpc3RlbmVyPWZ1bmN0aW9uKGUpe3RoaXMudGV4dGFyZWEub25tb3VzZW1vdmU9ZnVuY3Rpb24odCl7dGhpcy5pc0RyYWdnaW5nJiZlLmZpcmVTZWxlY3Rpb25DaGFuZ2VkKCl9fSxyLnByb3RvdHlwZS5hZGRDaGFuZ2VMaXN0ZW5lcj1mdW5jdGlvbihlKXt0aGlzLmNoYW5nZWxpc3RlbmVyPWUsdGhpcy50ZXh0YXJlYS5vbmtleXVwPWZ1bmN0aW9uKCl7ZS5maXJlQ2hhbmdlZCgpfSx0aGlzLnRleHRhcmVhLm9ubW91c2Vkb3duPWZ1bmN0aW9uKCl7dGhpcy5pc0RyYWdnaW5nPSEwLGUuZmlyZVNlbGVjdGlvbkNoYW5nZWQoKX0sdGhpcy50ZXh0YXJlYS5vbm1vdXNldXA9ZnVuY3Rpb24oKXt0aGlzLmlzRHJhZ2dpbmc9ITEsZS5maXJlQ2hhbmdlZCgpfSx0aGlzLnRleHRhcmVhLm9uY2hhbmdlPWZ1bmN0aW9uKCl7ZS5maXJlQ2hhbmdlZCgpfX0sci5wcm90b3R5cGUuZ2V0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJue3N0YXJ0OnRoaXMudGV4dGFyZWEuc2VsZWN0aW9uU3RhcnQsZW5kOnRoaXMudGV4dGFyZWEuc2VsZWN0aW9uRW5kfX0sci5wcm90b3R5cGUuc2V0U2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy50ZXh0YXJlYS5zZXRTZWxlY3Rpb25SYW5nZSl0aGlzLnRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdlKGUsdCk7ZWxzZSBpZih0aGlzLnRleHRhcmVhLmNyZWF0ZVRleHRSYW5nZSl7dmFyIHI9dGhpcy50ZXh0YXJlYS5jcmVhdGVUZXh0UmFuZ2UoKTtyLmNvbGxhcHNlKCEwKSxyLm1vdmVFbmQoImNoYXJhY3RlciIsdCksci5tb3ZlU3RhcnQoImNoYXJhY3RlciIsZSksci5zZWxlY3QoKX10aGlzLnRleHRhcmVhLmZvY3VzKCl9LHIucHJvdG90eXBlLmdldFN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHRhcmVhLnZhbHVlfSxyLnByb3RvdHlwZS5zZXRTdHJpbmc9ZnVuY3Rpb24oZSl7dGhpcy50ZXh0YXJlYS52YWx1ZT1lLHRoaXMuaW5pdGlhbFRleHQ9dGhpcy5nZXRTdHJpbmcoKSx0aGlzLmNoYW5nZWxpc3RlbmVyJiZ0aGlzLmNoYW5nZWxpc3RlbmVyLmZpcmVDaGFuZ2VkKCl9LHIucHJvdG90eXBlLmdldEVsZW09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0YXJlYX0sZS5leHBvcnRzPXJ9LDUyOTQ6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTAwOCksYT1yKDM0NTApLGk9cig1MDQ5KSxzPXIoNjg1OSksbz1yKDI5NDUpLGM9ZnVuY3Rpb24oZSx0KXt0aGlzLmFiY2pzUGFyYW1zPWZ1bmN0aW9uKGUpe3ZhciB0LHI9e307aWYoZS5hYmNqc1BhcmFtcylmb3IodCBpbiBlLmFiY2pzUGFyYW1zKWUuYWJjanNQYXJhbXMuaGFzT3duUHJvcGVydHkodCkmJihyW3RdPWUuYWJjanNQYXJhbXNbdF0pO2lmKGUubWlkaV9vcHRpb25zKWZvcih0IGluIGUubWlkaV9vcHRpb25zKWUubWlkaV9vcHRpb25zLmhhc093blByb3BlcnR5KHQpJiYoclt0XT1lLm1pZGlfb3B0aW9uc1t0XSk7aWYoZS5wYXJzZXJfb3B0aW9ucylmb3IodCBpbiBlLnBhcnNlcl9vcHRpb25zKWUucGFyc2VyX29wdGlvbnMuaGFzT3duUHJvcGVydHkodCkmJihyW3RdPWUucGFyc2VyX29wdGlvbnNbdF0pO2lmKGUucmVuZGVyX29wdGlvbnMpZm9yKHQgaW4gZS5yZW5kZXJfb3B0aW9ucyllLnJlbmRlcl9vcHRpb25zLmhhc093blByb3BlcnR5KHQpJiYoclt0XT1lLnJlbmRlcl9vcHRpb25zW3RdKTtyZXR1cm4gci50YWJsYXR1cmUmJmUud2FybmluZ3NfaWQmJihyLnRhYmxhdHVyZS53YXJuaW5nc19pZD1lLndhcm5pbmdzX2lkKSxyfSh0KSx0LmluZGljYXRlX2NoYW5nZWQmJih0aGlzLmluZGljYXRlX2NoYW5nZWQ9ITApLCJzdHJpbmciPT10eXBlb2YgZT90aGlzLmVkaXRhcmVhPW5ldyBvKGUpOmUuaXNFZGl0QXJlYT90aGlzLmVkaXRhcmVhPWU6dGhpcy5lZGl0YXJlYT1uZXcgbyhlKSx0aGlzLmVkaXRhcmVhLmFkZFNlbGVjdGlvbkxpc3RlbmVyKHRoaXMpLHRoaXMuZWRpdGFyZWEuYWRkQ2hhbmdlTGlzdGVuZXIodGhpcyksdC5jYW52YXNfaWQ/dGhpcy5kaXY9dC5jYW52YXNfaWQ6dC5wYXBlcl9pZD90aGlzLmRpdj10LnBhcGVyX2lkOih0aGlzLmRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSx0aGlzLmVkaXRhcmVhLmdldEVsZW0oKS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmRpdix0aGlzLmVkaXRhcmVhLmdldEVsZW0oKSkpLCJzdHJpbmciPT10eXBlb2YgdGhpcy5kaXYmJih0aGlzLmRpdj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmRpdikpLHQuc2VsZWN0aW9uQ2hhbmdlQ2FsbGJhY2smJih0aGlzLnNlbGVjdGlvbkNoYW5nZUNhbGxiYWNrPXQuc2VsZWN0aW9uQ2hhbmdlQ2FsbGJhY2spLHRoaXMuY2xpZW50Q2xpY2tMaXN0ZW5lcj10aGlzLmFiY2pzUGFyYW1zLmNsaWNrTGlzdGVuZXIsdGhpcy5hYmNqc1BhcmFtcy5jbGlja0xpc3RlbmVyPXRoaXMuaGlnaGxpZ2h0LmJpbmQodGhpcyksdC5zeW50aCYmaSgpJiYodGhpcy5zeW50aD17ZWw6dC5zeW50aC5lbCxjdXJzb3JDb250cm9sOnQuc3ludGguY3Vyc29yQ29udHJvbCxvcHRpb25zOnQuc3ludGgub3B0aW9uc30pLHQuZ2VuZXJhdGVfbWlkaSYmKHRoaXMuZ2VuZXJhdGVfbWlkaT10LmdlbmVyYXRlX21pZGksdGhpcy5hYmNqc1BhcmFtcy5nZW5lcmF0ZURvd25sb2FkJiYoInN0cmluZyI9PXR5cGVvZiB0Lm1pZGlfZG93bmxvYWRfaWQ/dGhpcy5kb3dubG9hZE1pZGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodC5taWRpX2Rvd25sb2FkX2lkKTp0Lm1pZGlfZG93bmxvYWRfaWQmJih0aGlzLmRvd25sb2FkTWlkaT10Lm1pZGlfZG93bmxvYWRfaWQpKSwhMSE9PXRoaXMuYWJjanNQYXJhbXMuZ2VuZXJhdGVJbmxpbmUmJigic3RyaW5nIj09dHlwZW9mIHQubWlkaV9pZD90aGlzLmlubGluZU1pZGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodC5taWRpX2lkKTp0Lm1pZGlfaWQmJih0aGlzLmlubGluZU1pZGk9dC5taWRpX2lkKSkpLHQud2FybmluZ3NfaWQ/InN0cmluZyI9PXR5cGVvZiB0Lndhcm5pbmdzX2lkP3RoaXMud2FybmluZ3NkaXY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodC53YXJuaW5nc19pZCk6dGhpcy53YXJuaW5nc2Rpdj10Lndhcm5pbmdzX2lkOnQuZ2VuZXJhdGVfd2FybmluZ3MmJih0aGlzLndhcm5pbmdzZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZGl2LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMud2FybmluZ3NkaXYsdGhpcy5kaXYpKSx0aGlzLm9uY2hhbmdlQ2FsbGJhY2s9dC5vbmNoYW5nZSx0aGlzLnJlZHJhd0NhbGxiYWNrPXQucmVkcmF3Q2FsbGJhY2ssdGhpcy5jdXJyZW50QWJjPSIiLHRoaXMudHVuZXM9W10sdGhpcy5iUmVlbnRyeT0hMSx0aGlzLnBhcnNlQUJDKCksdGhpcy5tb2RlbENoYW5nZWQoKSx0aGlzLmFkZENsYXNzTmFtZT1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciByPWUuY2xhc3NOYW1lO3JldHVybiByLmxlbmd0aD4wJiYocj09PXR8fG5ldyBSZWdFeHAoIihefFxccykiK3QrIihcXHN8JCkiKS50ZXN0KHIpKX0oZSx0KXx8KGUuY2xhc3NOYW1lKz0oZS5jbGFzc05hbWU/IiAiOiIiKSt0KSxlfSx0aGlzLnJlbW92ZUNsYXNzTmFtZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLmNsYXNzTmFtZT1uLnN0cmlwKGUuY2xhc3NOYW1lLnJlcGxhY2UobmV3IFJlZ0V4cCgiKF58XFxzKykiK3QrIihcXHMrfCQpIiksIiAiKSksZX0sdGhpcy5zZXRSZWFkT25seT1mdW5jdGlvbihlKXt2YXIgdD0iYWJjX3RleHRhcmVhX3JlYWRvbmx5IixyPXRoaXMuZWRpdGFyZWEuZ2V0RWxlbSgpO2U/KHIuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsInllcyIpLHRoaXMuYWRkQ2xhc3NOYW1lKHIsdCkpOihyLnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKSx0aGlzLnJlbW92ZUNsYXNzTmFtZShyLHQpKX19O2MucHJvdG90eXBlLnJlZHJhd01pZGk9ZnVuY3Rpb24oKXtpZih0aGlzLmdlbmVyYXRlX21pZGkmJiF0aGlzLm1pZGlQYXVzZSl7dmFyIGU9bmV3IHdpbmRvdy5DdXN0b21FdmVudCgiZ2VuZXJhdGVNaWRpIix7ZGV0YWlsOnt0dW5lczp0aGlzLnR1bmVzLGFiY2pzUGFyYW1zOnRoaXMuYWJjanNQYXJhbXMsZG93bmxvYWRNaWRpRWw6dGhpcy5kb3dubG9hZE1pZGksaW5saW5lTWlkaUVsOnRoaXMuaW5saW5lTWlkaSxlbmdyYXZpbmdFbDp0aGlzLmRpdn19KTt3aW5kb3cuZGlzcGF0Y2hFdmVudChlKX1pZih0aGlzLnN5bnRoKXt2YXIgdD10aGlzLnN5bnRoLnN5bnRoQ29udHJvbDt0aGlzLnN5bnRoLnN5bnRoQ29udHJvbHx8KHRoaXMuc3ludGguc3ludGhDb250cm9sPW5ldyBhLHRoaXMuc3ludGguc3ludGhDb250cm9sLmxvYWQodGhpcy5zeW50aC5lbCx0aGlzLnN5bnRoLmN1cnNvckNvbnRyb2wsdGhpcy5zeW50aC5vcHRpb25zKSksdGhpcy5zeW50aC5zeW50aENvbnRyb2wuc2V0VHVuZSh0aGlzLnR1bmVzWzBdLHQsdGhpcy5zeW50aC5vcHRpb25zKX19LGMucHJvdG90eXBlLm1vZGVsQ2hhbmdlZD1mdW5jdGlvbigpe2lmKCF0aGlzLmJSZWVudHJ5KXt0aGlzLmJSZWVudHJ5PSEwO3RyeXt0aGlzLnRpbWVySWQ9bnVsbCx0aGlzLnJlZHJhd0NhbGxiYWNrJiZ0aGlzLnJlZHJhd0NhbGxiYWNrKCEwKSx0aGlzLnN5bnRoJiZ0aGlzLnN5bnRoLnN5bnRoQ29udHJvbCYmdGhpcy5zeW50aC5zeW50aENvbnRyb2wuZGlzYWJsZSghMCksdGhpcy50dW5lcz1zKHRoaXMuZGl2LHRoaXMuY3VycmVudEFiYyx0aGlzLmFiY2pzUGFyYW1zKSx0aGlzLnR1bmVzLmxlbmd0aD4wJiYodGhpcy53YXJuaW5ncz10aGlzLnR1bmVzWzBdLndhcm5pbmdzKSx0aGlzLnJlZHJhd01pZGkoKSx0aGlzLnJlZHJhd0NhbGxiYWNrJiZ0aGlzLnJlZHJhd0NhbGxiYWNrKCExKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKCJBQkNKUyBlcnJvcjogIixlKSx0aGlzLndhcm5pbmdzfHwodGhpcy53YXJuaW5ncz1bXSksdGhpcy53YXJuaW5ncy5wdXNoKGUubWVzc2FnZSl9dGhpcy53YXJuaW5nc2RpdiYmKHRoaXMud2FybmluZ3NkaXYuaW5uZXJIVE1MPXRoaXMud2FybmluZ3M/dGhpcy53YXJuaW5ncy5qb2luKCI8YnIgLz4iKToiTm8gZXJyb3JzIiksdGhpcy51cGRhdGVTZWxlY3Rpb24oKSx0aGlzLmJSZWVudHJ5PSExfX0sYy5wcm90b3R5cGUucGFyYW1DaGFuZ2VkPWZ1bmN0aW9uKGUpe2lmKGUpZm9yKHZhciB0IGluIGUpZS5oYXNPd25Qcm9wZXJ0eSh0KSYmKHRoaXMuYWJjanNQYXJhbXNbdF09ZVt0XSk7dGhpcy5jdXJyZW50QWJjPSIiLHRoaXMuZmlyZUNoYW5nZWQoKX0sYy5wcm90b3R5cGUuZ2V0VHVuZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50dW5lc30sYy5wcm90b3R5cGUuc3ludGhQYXJhbUNoYW5nZWQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5zeW50aCl7aWYodGhpcy5zeW50aC5vcHRpb25zPXt9LGUpZm9yKHZhciB0IGluIGUpZS5oYXNPd25Qcm9wZXJ0eSh0KSYmKHRoaXMuc3ludGgub3B0aW9uc1t0XT1lW3RdKTt0aGlzLmN1cnJlbnRBYmM9IiIsdGhpcy5maXJlQ2hhbmdlZCgpfX0sYy5wcm90b3R5cGUucGFyc2VBQkM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmVkaXRhcmVhLmdldFN0cmluZygpO3JldHVybiBlPT09dGhpcy5jdXJyZW50QWJjPyh0aGlzLnVwZGF0ZVNlbGVjdGlvbigpLCExKToodGhpcy5jdXJyZW50QWJjPWUsITApfSxjLnByb3RvdHlwZS51cGRhdGVTZWxlY3Rpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmVkaXRhcmVhLmdldFNlbGVjdGlvbigpO3RyeXt0aGlzLnR1bmVzLmxlbmd0aD4wJiZ0aGlzLnR1bmVzWzBdLmVuZ3JhdmVyJiZ0aGlzLnR1bmVzWzBdLmVuZ3JhdmVyLnJhbmdlSGlnaGxpZ2h0KGUuc3RhcnQsZS5lbmQpfWNhdGNoKGUpe310aGlzLnNlbGVjdGlvbkNoYW5nZUNhbGxiYWNrJiZ0aGlzLnNlbGVjdGlvbkNoYW5nZUNhbGxiYWNrKGUuc3RhcnQsZS5lbmQpfSxjLnByb3RvdHlwZS5maXJlU2VsZWN0aW9uQ2hhbmdlZD1mdW5jdGlvbigpe3RoaXMudXBkYXRlU2VsZWN0aW9uKCl9LGMucHJvdG90eXBlLnNldERpcnR5U3R5bGU9ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09dGhpcy5pbmRpY2F0ZV9jaGFuZ2VkKXt2YXIgdCxyLGE9ImFiY190ZXh0YXJlYV9kaXJ0eSIsaT10aGlzLmVkaXRhcmVhLmdldEVsZW0oKTtlP2Z1bmN0aW9uKGUsdCl7dmFyIHI9ZS5jbGFzc05hbWU7cmV0dXJuIHIubGVuZ3RoPjAmJihyPT09dHx8bmV3IFJlZ0V4cCgiKF58XFxzKSIrdCsiKFxcc3wkKSIpLnRlc3QocikpfSh0PWkscj1hKXx8KHQuY2xhc3NOYW1lKz0odC5jbGFzc05hbWU/IiAiOiIiKStyKTpmdW5jdGlvbihlLHQpe2UuY2xhc3NOYW1lPW4uc3RyaXAoZS5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCIoXnxcXHMrKSIrdCsiKFxccyt8JCkiKSwiICIpKX0oaSxhKX19LGMucHJvdG90eXBlLmZpcmVDaGFuZ2VkPWZ1bmN0aW9uKCl7aWYoIXRoaXMuYklzUGF1c2VkJiZ0aGlzLnBhcnNlQUJDKCkpe3ZhciBlPXRoaXM7dGhpcy50aW1lcklkJiZjbGVhclRpbWVvdXQodGhpcy50aW1lcklkKSx0aGlzLnRpbWVySWQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLm1vZGVsQ2hhbmdlZCgpfSksMzAwKTt2YXIgdD10aGlzLmlzRGlydHkoKTt0aGlzLndhc0RpcnR5IT09dCYmKHRoaXMud2FzRGlydHk9dCx0aGlzLnNldERpcnR5U3R5bGUodCkpLHRoaXMub25jaGFuZ2VDYWxsYmFjayYmdGhpcy5vbmNoYW5nZUNhbGxiYWNrKHRoaXMpfX0sYy5wcm90b3R5cGUuc2V0Tm90RGlydHk9ZnVuY3Rpb24oKXt0aGlzLmVkaXRhcmVhLmluaXRpYWxUZXh0PXRoaXMuZWRpdGFyZWEuZ2V0U3RyaW5nKCksdGhpcy53YXNEaXJ0eT0hMSx0aGlzLnNldERpcnR5U3R5bGUoITEpfSxjLnByb3RvdHlwZS5pc0RpcnR5PWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuaW5kaWNhdGVfY2hhbmdlZCYmdGhpcy5lZGl0YXJlYS5pbml0aWFsVGV4dCE9PXRoaXMuZWRpdGFyZWEuZ2V0U3RyaW5nKCl9LGMucHJvdG90eXBlLmhpZ2hsaWdodD1mdW5jdGlvbihlLHQscixuLGEsaSl7dGhpcy5lZGl0YXJlYS5zZXRTZWxlY3Rpb24oZS5zdGFydENoYXIsZS5lbmRDaGFyKSx0aGlzLnNlbGVjdGlvbkNoYW5nZUNhbGxiYWNrJiZ0aGlzLnNlbGVjdGlvbkNoYW5nZUNhbGxiYWNrKGUuc3RhcnRDaGFyLGUuZW5kQ2hhciksdGhpcy5jbGllbnRDbGlja0xpc3RlbmVyJiZ0aGlzLmNsaWVudENsaWNrTGlzdGVuZXIoZSx0LHIsbixhLGkpfSxjLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbihlKXt0aGlzLmJJc1BhdXNlZD1lLGV8fHRoaXMuZmlyZUNoYW5nZWQoKX0sYy5wcm90b3R5cGUubWlsbGlzZWNvbmRzUGVyTWVhc3VyZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN5bnRoJiZ0aGlzLnN5bnRoLnN5bnRoQ29udHJvbCYmdGhpcy5zeW50aC5zeW50aENvbnRyb2wudmlzdWFsT2JqP3RoaXMuc3ludGguc3ludGhDb250cm9sLnZpc3VhbE9iai5taWxsaXNlY29uZHNQZXJNZWFzdXJlKCk6MH0sYy5wcm90b3R5cGUucGF1c2VNaWRpPWZ1bmN0aW9uKGUpe3RoaXMubWlkaVBhdXNlPWUsZXx8dGhpcy5yZWRyYXdNaWRpKCl9LGUuZXhwb3J0cz1jfSwzMjg0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhPXIoOTk5MSk7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUoZSx0LHIpe2Zvcih2YXIgbj1PYmplY3Qua2V5cyh0KSxhPTA7YTxuLmxlbmd0aDthKyspblthXT1wYXJzZUZsb2F0KG5bYV0pO24uc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSkpO2Zvcih2YXIgaT0wLHM9MDtzPG4ubGVuZ3RoO3MrKyl7dmFyIG89dFtuW3NdXTtpZihuW3NdPmkpe3ZhciBjPShuW3NdLWkpKnI7ZS5hZGRSZXN0KGMpLGk9bltzXX1mb3IodmFyIGw9MDtsPG8ubGVuZ3RoO2wrKyl7dmFyIGg9b1tsXTtoLnZvbHVtZT9lLnN0YXJ0Tm90ZShoLnBpdGNoLGgudm9sdW1lLGguY2VudHMpOmUuZW5kTm90ZShoLnBpdGNoKX19fW49ZnVuY3Rpb24odCxyKXt2b2lkIDA9PT1yJiYocj17fSk7dmFyIG49dC5zZXRVcEF1ZGlvKHIpLGk9YSgpLHM9dC5tZXRhVGV4dD90Lm1ldGFUZXh0LnRpdGxlOnZvaWQgMDtzJiZzLmxlbmd0aD4xMjgmJihzPXMuc3Vic3RyaW5nKDAsMTI0KSsiLi4uIik7dmFyIG89dC5nZXRLZXlTaWduYXR1cmUoKSxjPXQuZ2V0TWV0ZXJGcmFjdGlvbigpLGw9bi50ZW1wbyxoPWwvNjA7OD09Yy5kZW4mJihoPShsPTZlNC8odC5taWxsaXNlY29uZHNQZXJNZWFzdXJlKCkvYy5udW0pLzIpLzYwKSxpLnNldEdsb2JhbEluZm8obCxzLG8sYyk7Zm9yKHZhciB1PTA7dTxuLnRyYWNrcy5sZW5ndGg7dSsrKXtpLnN0YXJ0VHJhY2soKTtmb3IodmFyIGQ9e30sZj0wO2Y8bi50cmFja3NbdV0ubGVuZ3RoO2YrKyl7dmFyIHA9bi50cmFja3NbdV1bZl07c3dpdGNoKHAuY21kKXtjYXNlInRleHQiOmkuc2V0VGV4dChwLnR5cGUscC50ZXh0KTticmVhaztjYXNlInByb2dyYW0iOnZhciBtPTA7ci5wYW4mJnIucGFuLmxlbmd0aD51JiYobT1yLnBhblt1XSksMTI4PT09cC5pbnN0cnVtZW50PyhpLnNldENoYW5uZWwoOSxtKSxpLnNldEluc3RydW1lbnQoMCkpOihpLnNldENoYW5uZWwocC5jaGFubmVsLG0pLGkuc2V0SW5zdHJ1bWVudChwLmluc3RydW1lbnQpKTticmVhaztjYXNlIm5vdGUiOnZhciBnPXAuZ2FwKmgsdj1wLnN0YXJ0LGI9ditwLmR1cmF0aW9uLWc7ZFt2XXx8KGRbdl09W10pLGRbdl0ucHVzaCh7cGl0Y2g6cC5waXRjaCx2b2x1bWU6cC52b2x1bWUsY2VudHM6cC5jZW50c30pLGRbYl18fChkW2JdPVtdKSxkW2JdLnB1c2goe3BpdGNoOnAucGl0Y2gsdm9sdW1lOjB9KTticmVhaztkZWZhdWx0OmNvbnNvbGUubG9nKCJNSURJIGNyZWF0ZSBVbmtub3duOiAiK3AuY21kKX19ZShpLGQsMTkyMCksaS5lbmRUcmFjaygpfXJldHVybiBpLmdldERhdGEoKX19KCksZS5leHBvcnRzPW59LDUwMDg6ZnVuY3Rpb24oZSl7dmFyIHQ9e2Nsb25lQXJyYXk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoO3IrKyl0LnB1c2goT2JqZWN0LmFzc2lnbih7fSxlW3JdKSk7cmV0dXJuIHR9LGNsb25lSGFzaE9mSGFzaDpmdW5jdGlvbihlKXt2YXIgdD17fTtmb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1PYmplY3QuYXNzaWduKHt9LGVbcl0pKTtyZXR1cm4gdH0sY2xvbmVIYXNoT2ZBcnJheU9mSGFzaDpmdW5jdGlvbihlKXt2YXIgcj17fTtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYocltuXT10LmNsb25lQXJyYXkoZVtuXSkpO3JldHVybiByfSxzdHJpcDpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9eXHMrLywiIikucmVwbGFjZSgvXHMrJC8sIiIpfSxzdGFydHNXaXRoOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT1lLmluZGV4T2YodCl9LGVuZHNXaXRoOmZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5sZW5ndGgtdC5sZW5ndGg7cmV0dXJuIHI+PTAmJmUubGFzdEluZGV4T2YodCk9PT1yfSxsYXN0OmZ1bmN0aW9uKGUpe3JldHVybiAwPT09ZS5sZW5ndGg/bnVsbDplW2UubGVuZ3RoLTFdfX07ZS5leHBvcnRzPXR9LDg5MDU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTAwOCksYT1yKDgzNjApLGk9cig5OTI4KSxzPXIoNjQ3Niksbz1yKDE4ODEpLGM9cigxNzU2KSxsPXIoNjc4MCksaD1yKDU3NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlLHQ9bmV3IGwscj1uZXcgaCh0KSx1PSIiLGQ9IiI7ZnVuY3Rpb24gZihlLHQscil7ZS5wb3NpdGlvbmluZ3x8KGUucG9zaXRpb25pbmc9e30pLGUucG9zaXRpb25pbmdbdF09cn1mdW5jdGlvbiBwKGUsdCxyKXtlLmZvbnRzfHwoZS5mb250cz17fSksZS5mb250c1t0XT1yfXRoaXMuZ2V0VHVuZT1mdW5jdGlvbigpe3ZhciBlPXtmb3JtYXR0aW5nOnQuZm9ybWF0dGluZyxsaW5lczp0LmxpbmVzLG1lZGlhOnQubWVkaWEsbWV0YVRleHQ6dC5tZXRhVGV4dCxtZXRhVGV4dEluZm86dC5tZXRhVGV4dEluZm8sdmVyc2lvbjp0LnZlcnNpb24sYWRkRWxlbWVudFRvRXZlbnRzOnQuYWRkRWxlbWVudFRvRXZlbnRzLGFkZFVzZWZ1bENhbGxiYWNrSW5mbzp0LmFkZFVzZWZ1bENhbGxiYWNrSW5mbyxnZXRUb3RhbFRpbWU6dC5nZXRUb3RhbFRpbWUsZ2V0VG90YWxCZWF0czp0LmdldFRvdGFsQmVhdHMsZ2V0QmFyTGVuZ3RoOnQuZ2V0QmFyTGVuZ3RoLGdldEJlYXRMZW5ndGg6dC5nZXRCZWF0TGVuZ3RoLGdldEJlYXRzUGVyTWVhc3VyZTp0LmdldEJlYXRzUGVyTWVhc3VyZSxnZXRCcG06dC5nZXRCcG0sZ2V0TWV0ZXI6dC5nZXRNZXRlcixnZXRNZXRlckZyYWN0aW9uOnQuZ2V0TWV0ZXJGcmFjdGlvbixnZXRQaWNrdXBMZW5ndGg6dC5nZXRQaWNrdXBMZW5ndGgsZ2V0S2V5U2lnbmF0dXJlOnQuZ2V0S2V5U2lnbmF0dXJlLGdldEVsZW1lbnRGcm9tQ2hhcjp0LmdldEVsZW1lbnRGcm9tQ2hhcixtYWtlVm9pY2VzQXJyYXk6dC5tYWtlVm9pY2VzQXJyYXksbWlsbGlzZWNvbmRzUGVyTWVhc3VyZTp0Lm1pbGxpc2Vjb25kc1Blck1lYXN1cmUsc2V0dXBFdmVudHM6dC5zZXR1cEV2ZW50cyxzZXRUaW1pbmc6dC5zZXRUaW1pbmcsc2V0VXBBdWRpbzp0LnNldFVwQXVkaW8sZGVsaW5lOnQuZGVsaW5lLGZpbmRTZWxlY3RhYmxlRWxlbWVudDp0LmZpbmRTZWxlY3RhYmxlRWxlbWVudCxnZXRTZWxlY3RhYmxlQXJyYXk6dC5nZXRTZWxlY3RhYmxlQXJyYXl9O3JldHVybiB0LmxpbmVCcmVha3MmJihlLmxpbmVCcmVha3M9dC5saW5lQnJlYWtzKSx0LnZpc3VhbFRyYW5zcG9zZSYmKGUudmlzdWFsVHJhbnNwb3NlPXQudmlzdWFsVHJhbnNwb3NlKSxlfTt2YXIgbSxnLHY9e3Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIHRoaXMpdGhpcy5oYXNPd25Qcm9wZXJ0eShlKSYmImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXNbZV0mJmRlbGV0ZSB0aGlzW2VdO3RoaXMuaUNoYXI9MCx0aGlzLmtleT17YWNjaWRlbnRhbHM6W10scm9vdDoibm9uZSIsYWNjOiIiLG1vZGU6IiJ9LHRoaXMubWV0ZXI9bnVsbCx0aGlzLm9yaWdNZXRlcj1udWxsLHRoaXMuaGFzTWFpblRpdGxlPSExLHRoaXMuZGVmYXVsdF9sZW5ndGg9LjEyNSx0aGlzLmNsZWY9e3R5cGU6InRyZWJsZSIsdmVydGljYWxQb3M6MH0sdGhpcy5vY3RhdmU9MCx0aGlzLm5leHRfbm90ZV9kdXJhdGlvbj0wLHRoaXMuc3RhcnRfbmV3X2xpbmU9ITAsdGhpcy5pc19pbl9oZWFkZXI9ITAsdGhpcy5wYXJ0Rm9yTmV4dExpbmU9e30sdGhpcy50ZW1wb0Zvck5leHRMaW5lPVtdLHRoaXMuaGF2ZW50X3NldF9sZW5ndGg9ITAsdGhpcy52b2ljZXM9e30sdGhpcy5zdGF2ZXM9W10sdGhpcy5tYWNyb3M9e30sdGhpcy5jdXJyQmFyTnVtYmVyPTEsdGhpcy5iYXJDb3VudGVyPXt9LHRoaXMuaWdub3JlZERlY29yYXRpb25zPVtdLHRoaXMuc2NvcmVfaXNfcHJlc2VudD0hMSx0aGlzLmluRW5kaW5nPSExLHRoaXMuaW5UaWU9W10sdGhpcy5pblRpZUNob3JkPXt9LHRoaXMudm9jYWxQb3NpdGlvbj0iYXV0byIsdGhpcy5keW5hbWljUG9zaXRpb249ImF1dG8iLHRoaXMuY2hvcmRQb3NpdGlvbj0iYXV0byIsdGhpcy5vcm5hbWVudFBvc2l0aW9uPSJhdXRvIix0aGlzLnZvbHVtZVBvc2l0aW9uPSJhdXRvIix0aGlzLm9wZW5TbHVycz1bXSx0aGlzLmZyZWVnY2hvcmQ9ITEsdGhpcy5lbmRpbmdIb2xkT3Zlcj17fX0sZGlmZmVyZW50Rm9udDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzW2VdLmRlY29yYXRpb24hPT10W2VdLmRlY29yYXRpb258fHRoaXNbZV0uZmFjZSE9PXRbZV0uZmFjZXx8dGhpc1tlXS5zaXplIT09dFtlXS5zaXplfHx0aGlzW2VdLnN0eWxlIT09dFtlXS5zdHlsZXx8dGhpc1tlXS53ZWlnaHQhPT10W2VdLndlaWdodH0sYWRkRm9ybWF0dGluZ09wdGlvbnM6ZnVuY3Rpb24oZSx0LHIpeyJub3RlIj09PXI/KCJhdXRvIiE9PXRoaXMudm9jYWxQb3NpdGlvbiYmZihlLCJ2b2NhbFBvc2l0aW9uIix0aGlzLnZvY2FsUG9zaXRpb24pLCJhdXRvIiE9PXRoaXMuZHluYW1pY1Bvc2l0aW9uJiZmKGUsImR5bmFtaWNQb3NpdGlvbiIsdGhpcy5keW5hbWljUG9zaXRpb24pLCJhdXRvIiE9PXRoaXMuY2hvcmRQb3NpdGlvbiYmZihlLCJjaG9yZFBvc2l0aW9uIix0aGlzLmNob3JkUG9zaXRpb24pLCJhdXRvIiE9PXRoaXMub3JuYW1lbnRQb3NpdGlvbiYmZihlLCJvcm5hbWVudFBvc2l0aW9uIix0aGlzLm9ybmFtZW50UG9zaXRpb24pLCJhdXRvIiE9PXRoaXMudm9sdW1lUG9zaXRpb24mJmYoZSwidm9sdW1lUG9zaXRpb24iLHRoaXMudm9sdW1lUG9zaXRpb24pLHRoaXMuZGlmZmVyZW50Rm9udCgiYW5ub3RhdGlvbmZvbnQiLHQpJiZwKGUsImFubm90YXRpb25mb250Iix0aGlzLmFubm90YXRpb25mb250KSx0aGlzLmRpZmZlcmVudEZvbnQoImdjaG9yZGZvbnQiLHQpJiZwKGUsImdjaG9yZGZvbnQiLHRoaXMuZ2Nob3JkZm9udCksdGhpcy5kaWZmZXJlbnRGb250KCJ2b2NhbGZvbnQiLHQpJiZwKGUsInZvY2FsZm9udCIsdGhpcy52b2NhbGZvbnQpLHRoaXMuZGlmZmVyZW50Rm9udCgidHJpcGxldGZvbnQiLHQpJiZwKGUsInRyaXBsZXRmb250Iix0aGlzLnRyaXBsZXRmb250KSk6ImJhciI9PT1yJiYoImF1dG8iIT09dGhpcy5keW5hbWljUG9zaXRpb24mJmYoZSwiZHluYW1pY1Bvc2l0aW9uIix0aGlzLmR5bmFtaWNQb3NpdGlvbiksImF1dG8iIT09dGhpcy5jaG9yZFBvc2l0aW9uJiZmKGUsImNob3JkUG9zaXRpb24iLHRoaXMuY2hvcmRQb3NpdGlvbiksImF1dG8iIT09dGhpcy5vcm5hbWVudFBvc2l0aW9uJiZmKGUsIm9ybmFtZW50UG9zaXRpb24iLHRoaXMub3JuYW1lbnRQb3NpdGlvbiksImF1dG8iIT09dGhpcy52b2x1bWVQb3NpdGlvbiYmZihlLCJ2b2x1bWVQb3NpdGlvbiIsdGhpcy52b2x1bWVQb3NpdGlvbiksdGhpcy5kaWZmZXJlbnRGb250KCJtZWFzdXJlZm9udCIsdCkmJnAoZSwibWVhc3VyZWZvbnQiLHRoaXMubWVhc3VyZWZvbnQpLHRoaXMuZGlmZmVyZW50Rm9udCgicmVwZWF0Zm9udCIsdCkmJnAoZSwicmVwZWF0Zm9udCIsdGhpcy5yZXBlYXRmb250KSl9LGR1cGxpY2F0ZVN0YXJ0RW5kaW5nSG9sZE92ZXJzOmZ1bmN0aW9uKCl7dGhpcy5lbmRpbmdIb2xkT3Zlcj17aW5UaWU6W10saW5UaWVDaG9yZDp7fX07Zm9yKHZhciBlPTA7ZTx0aGlzLmluVGllLmxlbmd0aDtlKyspaWYodGhpcy5lbmRpbmdIb2xkT3Zlci5pblRpZS5wdXNoKFtdKSx0aGlzLmluVGllW2VdKWZvcih2YXIgdD0wO3Q8dGhpcy5pblRpZVtlXS5sZW5ndGg7dCsrKXRoaXMuZW5kaW5nSG9sZE92ZXIuaW5UaWVbZV0ucHVzaCh0aGlzLmluVGllW2VdW3RdKTtmb3IodmFyIHIgaW4gdGhpcy5pblRpZUNob3JkKXRoaXMuaW5UaWVDaG9yZC5oYXNPd25Qcm9wZXJ0eShyKSYmKHRoaXMuZW5kaW5nSG9sZE92ZXIuaW5UaWVDaG9yZFtyXT10aGlzLmluVGllQ2hvcmRbcl0pfSxyZXN0b3JlU3RhcnRFbmRpbmdIb2xkT3ZlcnM6ZnVuY3Rpb24oKXtpZih0aGlzLmVuZGluZ0hvbGRPdmVyLmluVGllKXt0aGlzLmluVGllPVtdLHRoaXMuaW5UaWVDaG9yZD17fTtmb3IodmFyIGU9MDtlPHRoaXMuZW5kaW5nSG9sZE92ZXIuaW5UaWUubGVuZ3RoO2UrKyl7dGhpcy5pblRpZS5wdXNoKFtdKTtmb3IodmFyIHQ9MDt0PHRoaXMuZW5kaW5nSG9sZE92ZXIuaW5UaWVbZV0ubGVuZ3RoO3QrKyl0aGlzLmluVGllW2VdLnB1c2godGhpcy5lbmRpbmdIb2xkT3Zlci5pblRpZVtlXVt0XSl9Zm9yKHZhciByIGluIHRoaXMuZW5kaW5nSG9sZE92ZXIuaW5UaWVDaG9yZCl0aGlzLmVuZGluZ0hvbGRPdmVyLmluVGllQ2hvcmQuaGFzT3duUHJvcGVydHkocikmJih0aGlzLmluVGllQ2hvcmRbcl09dGhpcy5lbmRpbmdIb2xkT3Zlci5pblRpZUNob3JkW3JdKX19fSxiPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSgvXHgxMi9nLCIgIik7cmV0dXJuKHQ9KHQ9dC5yZXBsYWNlKC8mL2csIiZhbXA7IikpLnJlcGxhY2UoLzwvZywiJmx0OyIpKS5yZXBsYWNlKC8+L2csIiZndDsiKX0seT1mdW5jdGlvbih0LHIsbil7cnx8KHI9IiAiKTt2YXIgYT1yW25dOyIgIiE9PWEmJmF8fChhPSJTUEFDRSIpO3ZhciBpLHM9YihyLnN1YnN0cmluZyhuLTY0LG4pKSsnPHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Zm9udC1zaXplOjEuM2VtO2ZvbnQtd2VpZ2h0OmJvbGQ7Ij4nK2ErIjwvc3Bhbj4iK2Ioci5zdWJzdHJpbmcobisxKS5zdWJzdHJpbmcoMCw2NCkpOyFmdW5jdGlvbihlKXt2Lndhcm5pbmdzfHwodi53YXJuaW5ncz1bXSksdi53YXJuaW5ncy5wdXNoKGUpfSgiTXVzaWMgTGluZToiK2UubGluZUluZGV4KyI6IisobisxKSsiOiAiK3QrIjogICIrcyksaT17bWVzc2FnZTp0LGxpbmU6cixzdGFydENoYXI6di5pQ2hhcituLGNvbHVtbjpufSx2Lndhcm5pbmdPYmplY3RzfHwodi53YXJuaW5nT2JqZWN0cz1bXSksdi53YXJuaW5nT2JqZWN0cy5wdXNoKGkpfTt0aGlzLmdldFdhcm5pbmdzPWZ1bmN0aW9uKCl7cmV0dXJuIHYud2FybmluZ3N9LHRoaXMuZ2V0V2FybmluZ09iamVjdHM9ZnVuY3Rpb24oKXtyZXR1cm4gdi53YXJuaW5nT2JqZWN0c307dmFyIHg9ZnVuY3Rpb24odCxyKXtpZihyLmluZGV4T2YoIhIiKT49MCl1Kz1yO2Vsc2UgaWYocj11K3IsdT0iIix0KXsiLSIhPT0ocj1uLnN0cmlwKHIpKVtyLmxlbmd0aC0xXSYmKHIrPSIgIik7Zm9yKHZhciBhPVtdLGk9MCxzPSExLG89ZnVuY3Rpb24odCl7dmFyIG89bi5zdHJpcChyLnN1YnN0cmluZyhpLHQpKTtpZihvPW8ucmVwbGFjZSgvXFwoWy1fKnx+XSkvZywiJDEiKSxpPXQrMSxvLmxlbmd0aD4wKXtzJiYobz1vLnJlcGxhY2UoL34vZywiICIpKTt2YXIgYz1yW3RdO3JldHVybiJfIiE9PWMmJiItIiE9PWMmJihjPSIgIiksYS5wdXNoKHtzeWxsYWJsZTplLnRyYW5zbGF0ZVN0cmluZyhvKSxkaXZpZGVyOmN9KSxzPSExLCEwfXJldHVybiExfSxjPSExLGw9MDtsPHIubGVuZ3RoO2wrKyl7c3dpdGNoKHJbbF0pe2Nhc2UiICI6Y2FzZSISIjpvKGwpO2JyZWFrO2Nhc2UiLSI6IWMmJiFvKGwpJiZhLmxlbmd0aD4wJiYobi5sYXN0KGEpLmRpdmlkZXI9Ii0iLGEucHVzaCh7c2tpcDohMCx0bzoibmV4dCJ9KSk7YnJlYWs7Y2FzZSJfIjpjfHwobyhsKSxhLnB1c2goe3NraXA6ITAsdG86InNsdXIifSkpO2JyZWFrO2Nhc2UiKiI6Y3x8KG8obCksYS5wdXNoKHtza2lwOiEwLHRvOiJuZXh0In0pKTticmVhaztjYXNlInwiOmN8fChvKGwpLGEucHVzaCh7c2tpcDohMCx0bzoiYmFyIn0pKTticmVhaztjYXNlIn4iOmN8fChzPSEwKX1jPSJcXCI9PT1yW2xdfXQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoMCE9PWEubGVuZ3RoKWlmKGFbMF0uc2tpcCl7c3dpdGNoKGFbMF0udG8pe2Nhc2UibmV4dCI6Y2FzZSJzbHVyIjoibm90ZSI9PT1lLmVsX3R5cGUmJm51bGwhPT1lLnBpdGNoZXMmJmEuc2hpZnQoKTticmVhaztjYXNlImJhciI6ImJhciI9PT1lLmVsX3R5cGUmJmEuc2hpZnQoKX0iYmFyIiE9PWUuZWxfdHlwZSYmKHZvaWQgMD09PWUubHlyaWM/ZS5seXJpYz1be3N5bGxhYmxlOiIiLGRpdmlkZXI6IiAifV06ZS5seXJpYy5wdXNoKHtzeWxsYWJsZToiIixkaXZpZGVyOiIgIn0pKX1lbHNlIGlmKCJub3RlIj09PWUuZWxfdHlwZSYmdm9pZCAwPT09ZS5yZXN0KXt2YXIgdD1hLnNoaWZ0KCk7dC5zeWxsYWJsZSYmKHQuc3lsbGFibGU9dC5zeWxsYWJsZS5yZXBsYWNlKC8gKy9nLCLCoCIpKSx2b2lkIDA9PT1lLmx5cmljP2UubHlyaWM9W3RdOmUubHlyaWMucHVzaCh0KX19KSl9ZWxzZSB5KCJDYW4ndCBhZGQgd29yZHMgYmVmb3JlIHRoZSBmaXJzdCBsaW5lIG9mIG11c2ljIix0LDApfSxrPWZ1bmN0aW9uKHQscil7aWYoci5pbmRleE9mKCISIik+PTApZCs9cjtlbHNlIGlmKHI9ZCtyLGQ9IiIsdCl7Ii0iIT09KHI9bi5zdHJpcChyKSlbci5sZW5ndGgtMV0mJihyKz0iICIpO2Zvcih2YXIgYT1bXSxpPTAscz0hMSxvPWZ1bmN0aW9uKHQpe3ZhciBvPW4uc3RyaXAoci5zdWJzdHJpbmcoaSx0KSk7aWYoaT10KzEsby5sZW5ndGg+MCl7cyYmKG89by5yZXBsYWNlKC9+L2csIiAiKSk7dmFyIGM9clt0XTtyZXR1cm4iXyIhPT1jJiYiLSIhPT1jJiYoYz0iICIpLGEucHVzaCh7c3lsbGFibGU6ZS50cmFuc2xhdGVTdHJpbmcobyksZGl2aWRlcjpjfSkscz0hMSwhMH1yZXR1cm4hMX0sYz0wO2M8ci5sZW5ndGg7YysrKXN3aXRjaChyW2NdKXtjYXNlIiAiOmNhc2UiEiI6byhjKTticmVhaztjYXNlIi0iOiFvKGMpJiZhLmxlbmd0aD4wJiYobi5sYXN0KGEpLmRpdmlkZXI9Ii0iLGEucHVzaCh7c2tpcDohMCx0bzoibmV4dCJ9KSk7YnJlYWs7Y2FzZSJfIjpvKGMpLGEucHVzaCh7c2tpcDohMCx0bzoic2x1ciJ9KTticmVhaztjYXNlIioiOm8oYyksYS5wdXNoKHtza2lwOiEwLHRvOiJuZXh0In0pO2JyZWFrO2Nhc2UifCI6byhjKSxhLnB1c2goe3NraXA6ITAsdG86ImJhciJ9KTticmVhaztjYXNlIn4iOnM9ITB9dC5mb3JFYWNoKChmdW5jdGlvbihlKXtpZigwIT09YS5sZW5ndGgpaWYoYVswXS5za2lwKXN3aXRjaChhWzBdLnRvKXtjYXNlIm5leHQiOmNhc2Uic2x1ciI6Im5vdGUiPT09ZS5lbF90eXBlJiZudWxsIT09ZS5waXRjaGVzJiZhLnNoaWZ0KCk7YnJlYWs7Y2FzZSJiYXIiOiJiYXIiPT09ZS5lbF90eXBlJiZhLnNoaWZ0KCl9ZWxzZSBpZigibm90ZSI9PT1lLmVsX3R5cGUmJnZvaWQgMD09PWUucmVzdCl7dmFyIHQ9YS5zaGlmdCgpO3ZvaWQgMD09PWUubHlyaWM/ZS5seXJpYz1bdF06ZS5seXJpYy5wdXNoKHQpfX0pKX1lbHNlIHkoIkNhbid0IGFkZCBzeW1ib2xzIGJlZm9yZSB0aGUgZmlyc3QgbGluZSBvZiBtdXNpYyIsdCwwKX0sdz1mdW5jdGlvbihlKXtpZihuLnN0YXJ0c1dpdGgoZSwiJSUiKSl7dmFyIHQ9YS5hZGREaXJlY3RpdmUoZS5zdWJzdHJpbmcoMikpO3QmJnkodCxlLDIpfWVsc2V7dmFyIGk9ZS5pbmRleE9mKCIlIik7aWYoaT49MCYmKGU9ZS5zdWJzdHJpbmcoMCxpKSksMCE9PShlPWUucmVwbGFjZSgvXHMrJC8sIiIpKS5sZW5ndGgpaWYodSl4KHIuZ2V0Q3VycmVudFZvaWNlKCksZS5zdWJzdHJpbmcoMikpO2Vsc2UgaWYoZClrKHIuZ2V0Q3VycmVudFZvaWNlKCksZS5zdWJzdHJpbmcoMikpO2Vsc2UgaWYoZS5sZW5ndGg8Mnx8IjoiIT09ZVsxXXx8Zy5saW5lQ29udGludWF0aW9uKWcucGFyc2VNdXNpYyhlKTtlbHNle3ZhciBzPW0ucGFyc2VIZWFkZXIoZSk7cy5yZWd1bGFyJiZnLnBhcnNlTXVzaWMoZSkscy5uZXdsaW5lJiZnLnN0YXJ0TmV3TGluZSgpLHMud29yZHMmJngoci5nZXRDdXJyZW50Vm9pY2UoKSxlLnN1YnN0cmluZygyKSkscy5zeW1ib2xzJiZrKHIuZ2V0Q3VycmVudFZvaWNlKCksZS5zdWJzdHJpbmcoMikpfX19O2Z1bmN0aW9uIEMoZSx0KXtlLnB1c2goe2VsX3R5cGU6ImhpbnQifSk7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl0sYT1PYmplY3QuYXNzaWduKHt9LG4pO2lmKGUucHVzaChhKSwiYmFyIj09PW4uZWxfdHlwZSlyZXR1cm59fWZ1bmN0aW9uIFQoZSx0KXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXSxhPXRbcl07aWYoYSlmb3IodmFyIGk9MDtpPGEudm9pY2VzLmxlbmd0aDtpKyspe3ZhciBzPWEudm9pY2VzW2ldLG89bi52b2ljZXNbaV07byYmQyhvLHMpfX19dGhpcy5wYXJzZT1mdW5jdGlvbihsLGgsZil7aHx8KGg9e30pLGZ8fChmPTApLHQucmVzZXQoKTt2YXIgcD0obD1sLnJlcGxhY2UoL1xyXG4/L2csIlxuIikrIlxuIikuc3BsaXQoIlxuXFwiKTtpZihwLmxlbmd0aD4xKXtmb3IodmFyIGI9MTtiPHAubGVuZ3RoO2IrKylmb3IoO3BbYl0ubGVuZ3RoPjAmJiJcbiIhPT1wW2JdWzBdOylwW2JdPXBbYl0uc3Vic3RyKDEpLHBbYi0xXSs9IiAiO2w9cC5qb2luKCIgICIpfXZhciBDPShsPWwucmVwbGFjZSgvXFwoWyBcdF0qKSglLiopKlxuL2csKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdCsiEiIrKHI/QXJyYXkoci5sZW5ndGgrMSkuam9pbigiICIpOiIiKSsiXG4ifSkpKS5zcGxpdCgiXG4iKTswPT09bi5sYXN0KEMpLmxlbmd0aCYmQy5wb3AoKSxlPW5ldyBvKEMsdiksbT1uZXcgaShlLHksdix0LHIpLGc9bmV3IHMoZSx5LHYsdCxyLG0pLGgucHJpbnQmJih0Lm1lZGlhPSJwcmludCIpLHYucmVzZXQoKSx2LmlDaGFyPWYsaC52aXN1YWxUcmFuc3Bvc2U/KHYuZ2xvYmFsVHJhbnNwb3NlPXBhcnNlSW50KGgudmlzdWFsVHJhbnNwb3NlKSwwPT09di5nbG9iYWxUcmFuc3Bvc2U/di5nbG9iYWxUcmFuc3Bvc2U9dm9pZCAwOnIuc2V0VmlzdWFsVHJhbnNwb3NlKGgudmlzdWFsVHJhbnNwb3NlKSk6di5nbG9iYWxUcmFuc3Bvc2U9dm9pZCAwLGgubGluZUJyZWFrcyYmKHYubGluZUJyZWFrcz1oLmxpbmVCcmVha3MpLG0ucmVzZXQoZSx5LHYsdCk7dHJ5e2guZm9ybWF0JiZhLmdsb2JhbEZvcm1hdHRpbmcoaC5mb3JtYXQpO2Zvcih2YXIgUz1lLm5leHRMaW5lKCk7Uzspe2lmKGguaGVhZGVyX29ubHkmJiExPT09di5pc19pbl9oZWFkZXIpdGhyb3cibm9ybWFsX2Fib3J0IjtpZihoLnN0b3Bfb25fd2FybmluZyYmdi53YXJuaW5ncyl0aHJvdyJub3JtYWxfYWJvcnQiO3ZhciBfPXYuaXNfaW5faGVhZGVyO3coUyksXyYmIXYuaXNfaW5faGVhZGVyJiYoci5zZXRSdW5uaW5nRm9udCgiYW5ub3RhdGlvbmZvbnQiLHYuYW5ub3RhdGlvbmZvbnQpLHIuc2V0UnVubmluZ0ZvbnQoImdjaG9yZGZvbnQiLHYuZ2Nob3JkZm9udCksci5zZXRSdW5uaW5nRm9udCgidHJpcGxldGZvbnQiLHYudHJpcGxldGZvbnQpLHIuc2V0UnVubmluZ0ZvbnQoInZvY2FsZm9udCIsdi52b2NhbGZvbnQpKSxTPWUubmV4dExpbmUoKX11JiZ4KHIuZ2V0Q3VycmVudFZvaWNlKCksIiIpLGQmJmsoci5nZXRDdXJyZW50Vm9pY2UoKSwiIiksdi5vcGVuU2x1cnM9ci5jbGVhblVwKHYuYmFyc3BlcnN0YWZmLHYuc3RhZmZub25vdGUsdi5vcGVuU2x1cnMpfWNhdGNoKGUpe2lmKCJub3JtYWxfYWJvcnQiIT09ZSl0aHJvdyBlfXZhciBFPTc5MixNPTYxMjtzd2l0Y2godi5wYXBlcnNpemUpe2Nhc2UibGVnYWwiOkU9MTAwOCxNPTYxMjticmVhaztjYXNlIkE0IjpFPTg0Mi40LE09NTk3LjZ9aWYodi5sYW5kc2NhcGUpe3ZhciBBPUU7RT1NLE09QX10LmZvcm1hdHRpbmcucGFnZXdpZHRofHwodC5mb3JtYXR0aW5nLnBhZ2V3aWR0aD1NKSx0LmZvcm1hdHRpbmcucGFnZWhlaWdodHx8KHQuZm9ybWF0dGluZy5wYWdlaGVpZ2h0PUUpLGguaGludF9tZWFzdXJlcyYmZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHQubGluZXMubGVuZ3RoO2UrKyl7dmFyIHI9dC5saW5lc1tlXS5zdGFmZjtpZihyKXtmb3IodmFyIG49ZSsxO248dC5saW5lcy5sZW5ndGgmJnZvaWQgMD09PXQubGluZXNbbl0uc3RhZmY7KW4rKztuPHQubGluZXMubGVuZ3RoJiZUKHIsdC5saW5lc1tuXS5zdGFmZil9fX0oKSxjLndyYXBMaW5lcyh0LHYubGluZUJyZWFrcyx2LmJhck51bWJlcnMpfX19LDk1NjU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTAwOCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijtmb3IodmFyIHQ9IiIscj1lLm1hdGNoKC8oXHMqKS8pLGE9KGU9bi5zdHJpcChlKSkuc3BsaXQoIlxuWDoiKSxpPTE7aTxhLmxlbmd0aDtpKyspYVtpXT0iWDoiK2FbaV07dmFyIHM9cj9yWzBdLmxlbmd0aDowLG89W107YS5mb3JFYWNoKChmdW5jdGlvbihlKXtvLnB1c2goe2FiYzplLHN0YXJ0UG9zOnN9KSxzKz1lLmxlbmd0aCsxfSkpLG8ubGVuZ3RoPjEmJiFuLnN0YXJ0c1dpdGgob1swXS5hYmMsIlg6IikmJm8uc2hpZnQoKS5hYmMuc3BsaXQoIlxuIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bi5zdGFydHNXaXRoKGUsIiUlIikmJih0Kz1lKyJcbiIpfSkpO3ZhciBjPXQ7cmV0dXJuIG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9ZS5hYmMuaW5kZXhPZigiXG5cbiIpO3I+MCYmKGUuYWJjPWUuYWJjLnN1YnN0cmluZygwLHIpKSxlLnB1cmU9ZS5hYmMsZS5hYmM9dCtlLmFiYyxlLnRpdGxlPSIiO3ZhciBhPWUucHVyZS5zcGxpdCgiVDoiKTthLmxlbmd0aD4xJiYoYT1hWzFdLnNwbGl0KCJcbiIpLGUudGl0bGU9bi5zdHJpcChhWzBdKSk7dmFyIGk9ZS5wdXJlLnN1YnN0cmluZygyLGUucHVyZS5pbmRleE9mKCJcbiIpKTtlLmlkPW4uc3RyaXAoaSl9KSkse2hlYWRlcjpjLHR1bmVzOm99fX0sODM2MDpmdW5jdGlvbihlLHQscil7dmFyIG49cig1MDA4KSxhPXt9OyFmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgZSx0LHIsaSxzO2EuaW5pdGlhbGl6ZT1mdW5jdGlvbihuLGEsbyxjLGwpe2U9bix0PWEsaT1jLHM9bCwocj1vKS5hbm5vdGF0aW9uZm9udD17ZmFjZToiSGVsdmV0aWNhIixzaXplOjEyLHdlaWdodDoibm9ybWFsIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn0sci5nY2hvcmRmb250PXtmYWNlOiJIZWx2ZXRpY2EiLHNpemU6MTIsd2VpZ2h0OiJub3JtYWwiLHN0eWxlOiJub3JtYWwiLGRlY29yYXRpb246Im5vbmUifSxyLmhpc3Rvcnlmb250PXtmYWNlOiciVGltZXMgTmV3IFJvbWFuIicsc2l6ZToxNix3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Im5vcm1hbCIsZGVjb3JhdGlvbjoibm9uZSJ9LHIuaW5mb2ZvbnQ9e2ZhY2U6JyJUaW1lcyBOZXcgUm9tYW4iJyxzaXplOjE0LHdlaWdodDoibm9ybWFsIixzdHlsZToiaXRhbGljIixkZWNvcmF0aW9uOiJub25lIn0sci5tZWFzdXJlZm9udD17ZmFjZTonIlRpbWVzIE5ldyBSb21hbiInLHNpemU6MTQsd2VpZ2h0OiJub3JtYWwiLHN0eWxlOiJpdGFsaWMiLGRlY29yYXRpb246Im5vbmUifSxyLnBhcnRzZm9udD17ZmFjZTonIlRpbWVzIE5ldyBSb21hbiInLHNpemU6MTUsd2VpZ2h0OiJub3JtYWwiLHN0eWxlOiJub3JtYWwiLGRlY29yYXRpb246Im5vbmUifSxyLnJlcGVhdGZvbnQ9e2ZhY2U6JyJUaW1lcyBOZXcgUm9tYW4iJyxzaXplOjEzLHdlaWdodDoibm9ybWFsIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn0sci50ZXh0Zm9udD17ZmFjZTonIlRpbWVzIE5ldyBSb21hbiInLHNpemU6MTYsd2VpZ2h0OiJub3JtYWwiLHN0eWxlOiJub3JtYWwiLGRlY29yYXRpb246Im5vbmUifSxyLnRyaXBsZXRmb250PXtmYWNlOiJUaW1lcyIsc2l6ZToxMSx3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Iml0YWxpYyIsZGVjb3JhdGlvbjoibm9uZSJ9LHIudm9jYWxmb250PXtmYWNlOiciVGltZXMgTmV3IFJvbWFuIicsc2l6ZToxMyx3ZWlnaHQ6ImJvbGQiLHN0eWxlOiJub3JtYWwiLGRlY29yYXRpb246Im5vbmUifSxyLndvcmRzZm9udD17ZmFjZTonIlRpbWVzIE5ldyBSb21hbiInLHNpemU6MTYsd2VpZ2h0OiJub3JtYWwiLHN0eWxlOiJub3JtYWwiLGRlY29yYXRpb246Im5vbmUifSxpLmZvcm1hdHRpbmcuY29tcG9zZXJmb250PXtmYWNlOiciVGltZXMgTmV3IFJvbWFuIicsc2l6ZToxNCx3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Iml0YWxpYyIsZGVjb3JhdGlvbjoibm9uZSJ9LGkuZm9ybWF0dGluZy5zdWJ0aXRsZWZvbnQ9e2ZhY2U6JyJUaW1lcyBOZXcgUm9tYW4iJyxzaXplOjE2LHdlaWdodDoibm9ybWFsIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn0saS5mb3JtYXR0aW5nLnRlbXBvZm9udD17ZmFjZTonIlRpbWVzIE5ldyBSb21hbiInLHNpemU6MTUsd2VpZ2h0OiJib2xkIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn0saS5mb3JtYXR0aW5nLnRpdGxlZm9udD17ZmFjZTonIlRpbWVzIE5ldyBSb21hbiInLHNpemU6MjAsd2VpZ2h0OiJub3JtYWwiLHN0eWxlOiJub3JtYWwiLGRlY29yYXRpb246Im5vbmUifSxpLmZvcm1hdHRpbmcuZm9vdGVyZm9udD17ZmFjZTonIlRpbWVzIE5ldyBSb21hbiInLHNpemU6MTIsd2VpZ2h0OiJub3JtYWwiLHN0eWxlOiJub3JtYWwiLGRlY29yYXRpb246Im5vbmUifSxpLmZvcm1hdHRpbmcuaGVhZGVyZm9udD17ZmFjZTonIlRpbWVzIE5ldyBSb21hbiInLHNpemU6MTIsd2VpZ2h0OiJub3JtYWwiLHN0eWxlOiJub3JtYWwiLGRlY29yYXRpb246Im5vbmUifSxpLmZvcm1hdHRpbmcudm9pY2Vmb250PXtmYWNlOiciVGltZXMgTmV3IFJvbWFuIicsc2l6ZToxMyx3ZWlnaHQ6ImJvbGQiLHN0eWxlOiJub3JtYWwiLGRlY29yYXRpb246Im5vbmUifSxpLmZvcm1hdHRpbmcudGFibGFiZWxmb250PXtmYWNlOiciVHJlYnVjaGV0IE1TIicsc2l6ZToxNix3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Im5vcm1hbCIsZGVjb3JhdGlvbjoibm9uZSJ9LGkuZm9ybWF0dGluZy50YWJudW1iZXJmb250PXtmYWNlOiciQXJpYWwiJyxzaXplOjExLHdlaWdodDoibm9ybWFsIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn0saS5mb3JtYXR0aW5nLnRhYmdyYWNlZm9udD17ZmFjZTonIkFyaWFsIicsc2l6ZTo4LHdlaWdodDoibm9ybWFsIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn0saS5mb3JtYXR0aW5nLmFubm90YXRpb25mb250PXIuYW5ub3RhdGlvbmZvbnQsaS5mb3JtYXR0aW5nLmdjaG9yZGZvbnQ9ci5nY2hvcmRmb250LGkuZm9ybWF0dGluZy5oaXN0b3J5Zm9udD1yLmhpc3Rvcnlmb250LGkuZm9ybWF0dGluZy5pbmZvZm9udD1yLmluZm9mb250LGkuZm9ybWF0dGluZy5tZWFzdXJlZm9udD1yLm1lYXN1cmVmb250LGkuZm9ybWF0dGluZy5wYXJ0c2ZvbnQ9ci5wYXJ0c2ZvbnQsaS5mb3JtYXR0aW5nLnJlcGVhdGZvbnQ9ci5yZXBlYXRmb250LGkuZm9ybWF0dGluZy50ZXh0Zm9udD1yLnRleHRmb250LGkuZm9ybWF0dGluZy50cmlwbGV0Zm9udD1yLnRyaXBsZXRmb250LGkuZm9ybWF0dGluZy52b2NhbGZvbnQ9ci52b2NhbGZvbnQsaS5mb3JtYXR0aW5nLndvcmRzZm9udD1yLndvcmRzZm9udH07dmFyIG89e2djaG9yZGZvbnQ6ITAsbWVhc3VyZWZvbnQ6ITAscGFydHNmb250OiEwLGFubm90YXRpb25mb250OiEwLGNvbXBvc2VyZm9udDohMCxoaXN0b3J5Zm9udDohMCxpbmZvZm9udDohMCxzdWJ0aXRsZWZvbnQ6ITAsdGV4dGZvbnQ6ITAsdGl0bGVmb250OiEwLHZvaWNlZm9udDohMH0sYz1mdW5jdGlvbihlLHIsbixhLGkpe2Z1bmN0aW9uIHMoKXt2YXIgcz1wYXJzZUludChlWzBdLnRva2VuKTtyZXR1cm4gZS5zaGlmdCgpLHI/MD09PWUubGVuZ3RoP3tmYWNlOnIuZmFjZSx3ZWlnaHQ6ci53ZWlnaHQsc3R5bGU6ci5zdHlsZSxkZWNvcmF0aW9uOnIuZGVjb3JhdGlvbixzaXplOnN9OjE9PT1lLmxlbmd0aCYmImJveCI9PT1lWzBdLnRva2VuJiZvW2ldP3tmYWNlOnIuZmFjZSx3ZWlnaHQ6ci53ZWlnaHQsc3R5bGU6ci5zdHlsZSxkZWNvcmF0aW9uOnIuZGVjb3JhdGlvbixzaXplOnMsYm94OiEwfToodCgiRXh0cmEgcGFyYW1ldGVycyBpbiBmb250IGRlZmluaXRpb24uIixuLGEpLHtmYWNlOnIuZmFjZSx3ZWlnaHQ6ci53ZWlnaHQsc3R5bGU6ci5zdHlsZSxkZWNvcmF0aW9uOnIuZGVjb3JhdGlvbixzaXplOnN9KToodCgiQ2FuJ3Qgc2V0IGp1c3QgdGhlIHNpemUgb2YgdGhlIGZvbnQgc2luY2UgdGhlcmUgaXMgbm8gZGVmYXVsdCB2YWx1ZS4iLG4sYSkse2ZhY2U6JyJUaW1lcyBOZXcgUm9tYW4iJyx3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Im5vcm1hbCIsZGVjb3JhdGlvbjoibm9uZSIsc2l6ZTpzfSl9aWYoIioiPT09ZVswXS50b2tlbil7aWYoZS5zaGlmdCgpLCJudW1iZXIiPT09ZVswXS50eXBlKXJldHVybiBzKCk7dCgiRXhwZWN0ZWQgZm9udCBzaXplIG51bWJlciBhZnRlciAqLiIsbixhKX1pZigibnVtYmVyIj09PWVbMF0udHlwZSlyZXR1cm4gcygpO2Zvcih2YXIgYyxsPVtdLGg9Im5vcm1hbCIsdT0ibm9ybWFsIixkPSJub25lIixmPSExLHA9ImZhY2UiLG09ITE7ZS5sZW5ndGg7KXt2YXIgZz1lLnNoaWZ0KCksdj1nLnRva2VuLnRvTG93ZXJDYXNlKCk7c3dpdGNoKHApe2Nhc2UiZmFjZSI6bXx8InV0ZiIhPT12JiYibnVtYmVyIiE9PWcudHlwZSYmImJvbGQiIT09diYmIml0YWxpYyIhPT12JiYidW5kZXJsaW5lIiE9PXYmJiJib3giIT09dj9sLmxlbmd0aD4wJiYiLSI9PT1nLnRva2VuPyhtPSEwLGxbbC5sZW5ndGgtMV09bFtsLmxlbmd0aC0xXStnLnRva2VuKTptPyhtPSExLGxbbC5sZW5ndGgtMV09bFtsLmxlbmd0aC0xXStnLnRva2VuKTpsLnB1c2goZy50b2tlbik6Im51bWJlciI9PT1nLnR5cGU/KGM/dCgiRm9udCBzaXplIHNwZWNpZmllZCB0d2ljZSBpbiBmb250IGRlZmluaXRpb24uIixuLGEpOmM9Zy50b2tlbixwPSJtb2RpZmllciIpOiJib2xkIj09PXY/aD0iYm9sZCI6Iml0YWxpYyI9PT12P3U9Iml0YWxpYyI6InVuZGVybGluZSI9PT12P2Q9InVuZGVybGluZSI6ImJveCI9PT12PyhvW2ldP2Y9ITA6dCgnVGhpcyBmb250IHN0eWxlIGRvZXNuXCd0IHN1cHBvcnQgImJveCInLG4sYSkscD0iZmluaXNoZWQiKToidXRmIj09PXY/KGc9ZS5zaGlmdCgpLHA9InNpemUiKTp0KCJVbmtub3duIHBhcmFtZXRlciAiK2cudG9rZW4rIiBpbiBmb250IGRlZmluaXRpb24uIixuLGEpO2JyZWFrO2Nhc2Uic2l6ZSI6Im51bWJlciI9PT1nLnR5cGU/Yz90KCJGb250IHNpemUgc3BlY2lmaWVkIHR3aWNlIGluIGZvbnQgZGVmaW5pdGlvbi4iLG4sYSk6Yz1nLnRva2VuOnQoIkV4cGVjdGVkIGZvbnQgc2l6ZSBpbiBmb250IGRlZmluaXRpb24uIixuLGEpLHA9Im1vZGlmaWVyIjticmVhaztjYXNlIm1vZGlmaWVyIjoiYm9sZCI9PT12P2g9ImJvbGQiOiJpdGFsaWMiPT09dj91PSJpdGFsaWMiOiJ1bmRlcmxpbmUiPT09dj9kPSJ1bmRlcmxpbmUiOiJib3giPT09dj8ob1tpXT9mPSEwOnQoJ1RoaXMgZm9udCBzdHlsZSBkb2VzblwndCBzdXBwb3J0ICJib3giJyxuLGEpLHA9ImZpbmlzaGVkIik6dCgiVW5rbm93biBwYXJhbWV0ZXIgIitnLnRva2VuKyIgaW4gZm9udCBkZWZpbml0aW9uLiIsbixhKTticmVhaztjYXNlImZpbmlzaGVkIjp0KCdFeHRyYSBjaGFyYWN0ZXJzIGZvdW5kIGFmdGVyICJib3giIGluIGZvbnQgZGVmaW5pdGlvbi4nLG4sYSl9fXZvaWQgMD09PWM/cj9jPXIuc2l6ZToodCgiTXVzdCBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBmb250IHNpbmNlIHRoZXJlIGlzIG5vIGRlZmF1bHQgdmFsdWUuIixuLGEpLGM9MTIpOmM9cGFyc2VGbG9hdChjKSwiIj09PShsPWwuam9pbigiICIpKSYmKHI/bD1yLmZhY2U6KHQoIk11c3Qgc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgZm9udCBzaW5jZSB0aGVyZSBpcyBubyBkZWZhdWx0IHZhbHVlLiIsbixhKSxsPSJzYW5zLXNlcmlmIikpO3ZhciBiPWZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIkFyaWFsLUl0YWxpYyI6cmV0dXJue2ZhY2U6IkFyaWFsIix3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Iml0YWxpYyIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiQXJpYWwtQm9sZCI6cmV0dXJue2ZhY2U6IkFyaWFsIix3ZWlnaHQ6ImJvbGQiLHN0eWxlOiJub3JtYWwiLGRlY29yYXRpb246Im5vbmUifTtjYXNlIkJvb2ttYW4tRGVtaSI6cmV0dXJue2ZhY2U6IkJvb2ttYW4sc2VyaWYiLHdlaWdodDoiYm9sZCIsc3R5bGU6Im5vcm1hbCIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiQm9va21hbi1EZW1pSXRhbGljIjpyZXR1cm57ZmFjZToiQm9va21hbixzZXJpZiIsd2VpZ2h0OiJib2xkIixzdHlsZToiaXRhbGljIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJCb29rbWFuLUxpZ2h0IjpyZXR1cm57ZmFjZToiQm9va21hbixzZXJpZiIsd2VpZ2h0OiJub3JtYWwiLHN0eWxlOiJub3JtYWwiLGRlY29yYXRpb246Im5vbmUifTtjYXNlIkJvb2ttYW4tTGlnaHRJdGFsaWMiOnJldHVybntmYWNlOiJCb29rbWFuLHNlcmlmIix3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Iml0YWxpYyIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiQ291cmllciI6cmV0dXJue2ZhY2U6JyJDb3VyaWVyIE5ldyInLHdlaWdodDoibm9ybWFsIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJDb3VyaWVyLU9ibGlxdWUiOnJldHVybntmYWNlOiciQ291cmllciBOZXciJyx3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Iml0YWxpYyIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiQ291cmllci1Cb2xkIjpyZXR1cm57ZmFjZTonIkNvdXJpZXIgTmV3Iicsd2VpZ2h0OiJib2xkIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJDb3VyaWVyLUJvbGRPYmxpcXVlIjpyZXR1cm57ZmFjZTonIkNvdXJpZXIgTmV3Iicsd2VpZ2h0OiJib2xkIixzdHlsZToiaXRhbGljIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJBdmFudEdhcmRlLUJvb2siOnJldHVybntmYWNlOiJBdmFudEdhcmRlLEFyaWFsIix3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Im5vcm1hbCIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiQXZhbnRHYXJkZS1Cb29rT2JsaXF1ZSI6cmV0dXJue2ZhY2U6IkF2YW50R2FyZGUsQXJpYWwiLHdlaWdodDoibm9ybWFsIixzdHlsZToiaXRhbGljIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJBdmFudEdhcmRlLURlbWkiOmNhc2UiQXZhbnQtR2FyZGUtRGVtaSI6cmV0dXJue2ZhY2U6IkF2YW50R2FyZGUsQXJpYWwiLHdlaWdodDoiYm9sZCIsc3R5bGU6Im5vcm1hbCIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiQXZhbnRHYXJkZS1EZW1pT2JsaXF1ZSI6cmV0dXJue2ZhY2U6IkF2YW50R2FyZGUsQXJpYWwiLHdlaWdodDoiYm9sZCIsc3R5bGU6Iml0YWxpYyIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiSGVsdmV0aWNhLU9ibGlxdWUiOnJldHVybntmYWNlOiJIZWx2ZXRpY2EiLHdlaWdodDoibm9ybWFsIixzdHlsZToiaXRhbGljIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJIZWx2ZXRpY2EtQm9sZCI6cmV0dXJue2ZhY2U6IkhlbHZldGljYSIsd2VpZ2h0OiJib2xkIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiOnJldHVybntmYWNlOiJIZWx2ZXRpY2EiLHdlaWdodDoiYm9sZCIsc3R5bGU6Iml0YWxpYyIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiSGVsdmV0aWNhLU5hcnJvdyI6cmV0dXJue2ZhY2U6JyJIZWx2ZXRpY2EgTmFycm93IixIZWx2ZXRpY2EnLHdlaWdodDoibm9ybWFsIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJIZWx2ZXRpY2EtTmFycm93LU9ibGlxdWUiOnJldHVybntmYWNlOiciSGVsdmV0aWNhIE5hcnJvdyIsSGVsdmV0aWNhJyx3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Iml0YWxpYyIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiSGVsdmV0aWNhLU5hcnJvdy1Cb2xkIjpyZXR1cm57ZmFjZTonIkhlbHZldGljYSBOYXJyb3ciLEhlbHZldGljYScsd2VpZ2h0OiJib2xkIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJIZWx2ZXRpY2EtTmFycm93LUJvbGRPYmxpcXVlIjpyZXR1cm57ZmFjZTonIkhlbHZldGljYSBOYXJyb3ciLEhlbHZldGljYScsd2VpZ2h0OiJib2xkIixzdHlsZToiaXRhbGljIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJQYWxhdGluby1Sb21hbiI6cmV0dXJue2ZhY2U6IlBhbGF0aW5vIix3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Im5vcm1hbCIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiUGFsYXRpbm8tSXRhbGljIjpyZXR1cm57ZmFjZToiUGFsYXRpbm8iLHdlaWdodDoibm9ybWFsIixzdHlsZToiaXRhbGljIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJQYWxhdGluby1Cb2xkIjpyZXR1cm57ZmFjZToiUGFsYXRpbm8iLHdlaWdodDoiYm9sZCIsc3R5bGU6Im5vcm1hbCIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiUGFsYXRpbm8tQm9sZEl0YWxpYyI6cmV0dXJue2ZhY2U6IlBhbGF0aW5vIix3ZWlnaHQ6ImJvbGQiLHN0eWxlOiJpdGFsaWMiLGRlY29yYXRpb246Im5vbmUifTtjYXNlIk5ld0NlbnR1cnlTY2hsYmstUm9tYW4iOnJldHVybntmYWNlOiciTmV3IENlbnR1cnkiLHNlcmlmJyx3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Im5vcm1hbCIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiTmV3Q2VudHVyeVNjaGxiay1JdGFsaWMiOnJldHVybntmYWNlOiciTmV3IENlbnR1cnkiLHNlcmlmJyx3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Iml0YWxpYyIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiTmV3Q2VudHVyeVNjaGxiay1Cb2xkIjpyZXR1cm57ZmFjZTonIk5ldyBDZW50dXJ5IixzZXJpZicsd2VpZ2h0OiJib2xkIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJOZXdDZW50dXJ5U2NobGJrLUJvbGRJdGFsaWMiOnJldHVybntmYWNlOiciTmV3IENlbnR1cnkiLHNlcmlmJyx3ZWlnaHQ6ImJvbGQiLHN0eWxlOiJpdGFsaWMiLGRlY29yYXRpb246Im5vbmUifTtjYXNlIlRpbWVzIjpjYXNlIlRpbWVzLVJvbWFuIjpjYXNlIlRpbWVzLU5hcnJvdyI6Y2FzZSJUaW1lcy1Db3VyaWVyIjpjYXNlIlRpbWVzLU5ldy1Sb21hbiI6cmV0dXJue2ZhY2U6JyJUaW1lcyBOZXcgUm9tYW4iJyx3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Im5vcm1hbCIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiVGltZXMtSXRhbGljIjpjYXNlIlRpbWVzLUl0YWxpY3MiOnJldHVybntmYWNlOiciVGltZXMgTmV3IFJvbWFuIicsd2VpZ2h0OiJub3JtYWwiLHN0eWxlOiJpdGFsaWMiLGRlY29yYXRpb246Im5vbmUifTtjYXNlIlRpbWVzLUJvbGQiOnJldHVybntmYWNlOiciVGltZXMgTmV3IFJvbWFuIicsd2VpZ2h0OiJib2xkIixzdHlsZToibm9ybWFsIixkZWNvcmF0aW9uOiJub25lIn07Y2FzZSJUaW1lcy1Cb2xkSXRhbGljIjpyZXR1cm57ZmFjZTonIlRpbWVzIE5ldyBSb21hbiInLHdlaWdodDoiYm9sZCIsc3R5bGU6Iml0YWxpYyIsZGVjb3JhdGlvbjoibm9uZSJ9O2Nhc2UiWmFwZkNoYW5jZXJ5LU1lZGl1bUl0YWxpYyI6cmV0dXJue2ZhY2U6JyJaYXBmIENoYW5jZXJ5IixjdXJzaXZlLHNlcmlmJyx3ZWlnaHQ6Im5vcm1hbCIsc3R5bGU6Im5vcm1hbCIsZGVjb3JhdGlvbjoibm9uZSJ9O2RlZmF1bHQ6cmV0dXJuIG51bGx9fShsKSx5PXt9O3JldHVybiBiPyh5LmZhY2U9Yi5mYWNlLHkud2VpZ2h0PWIud2VpZ2h0LHkuc3R5bGU9Yi5zdHlsZSx5LmRlY29yYXRpb249Yi5kZWNvcmF0aW9uLHkuc2l6ZT1jLGYmJih5LmJveD0hMCkseSk6KHkuZmFjZT1sLHkud2VpZ2h0PWgseS5zdHlsZT11LHkuZGVjb3JhdGlvbj1kLHkuc2l6ZT1jLGYmJih5LmJveD0hMCkseSl9LGw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAwPT09dC5sZW5ndGg/J0RpcmVjdGl2ZSAiJytlKyciIHJlcXVpcmVzIGEgZm9udCBhcyBhIHBhcmFtZXRlci4nOihyW2VdPWModCxyW2VdLG4sMCxlKSxyLmlzX2luX2hlYWRlciYmKGkuZm9ybWF0dGluZ1tlXT1yW2VdKSxudWxsKX0saD1mdW5jdGlvbihlLHQpe3ZhciByPSIiO3QuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cis9ZS50b2tlbn0pKTt2YXIgbj1wYXJzZUZsb2F0KHIpO2lmKGlzTmFOKG4pfHwwPT09bilyZXR1cm4nRGlyZWN0aXZlICInK2UrJyIgcmVxdWlyZXMgYSBudW1iZXIgYXMgYSBwYXJhbWV0ZXIuJztpLmZvcm1hdHRpbmcuc2NhbGU9bn0sdT1bImFjb3VzdGljLWJhc3MtZHJ1bSIsImJhc3MtZHJ1bS0xIiwic2lkZS1zdGljayIsImFjb3VzdGljLXNuYXJlIiwiaGFuZC1jbGFwIiwiZWxlY3RyaWMtc25hcmUiLCJsb3ctZmxvb3ItdG9tIiwiY2xvc2VkLWhpLWhhdCIsImhpZ2gtZmxvb3ItdG9tIiwicGVkYWwtaGktaGF0IiwibG93LXRvbSIsIm9wZW4taGktaGF0IiwibG93LW1pZC10b20iLCJoaS1taWQtdG9tIiwiY3Jhc2gtY3ltYmFsLTEiLCJoaWdoLXRvbSIsInJpZGUtY3ltYmFsLTEiLCJjaGluZXNlLWN5bWJhbCIsInJpZGUtYmVsbCIsInRhbWJvdXJpbmUiLCJzcGxhc2gtY3ltYmFsIiwiY293YmVsbCIsImNyYXNoLWN5bWJhbC0yIiwidmlicmFzbGFwIiwicmlkZS1jeW1iYWwtMiIsImhpLWJvbmdvIiwibG93LWJvbmdvIiwibXV0ZS1oaS1jb25nYSIsIm9wZW4taGktY29uZ2EiLCJsb3ctY29uZ2EiLCJoaWdoLXRpbWJhbGUiLCJsb3ctdGltYmFsZSIsImhpZ2gtYWdvZ28iLCJsb3ctYWdvZ28iLCJjYWJhc2EiLCJtYXJhY2FzIiwic2hvcnQtd2hpc3RsZSIsImxvbmctd2hpc3RsZSIsInNob3J0LWd1aXJvIiwibG9uZy1ndWlybyIsImNsYXZlcyIsImhpLXdvb2QtYmxvY2siLCJsb3ctd29vZC1ibG9jayIsIm11dGUtY3VpY2EiLCJvcGVuLWN1aWNhIiwibXV0ZS10cmlhbmdsZSIsIm9wZW4tdHJpYW5nbGUiXSxkPWZ1bmN0aW9uKGUsdCxuLGEsaSl7aWYoMSE9PW4ubGVuZ3RofHwibnVtYmVyIiE9PW5bMF0udHlwZSlyZXR1cm4nRGlyZWN0aXZlICInK3QrJyIgcmVxdWlyZXMgYSBudW1iZXIgYXMgYSBwYXJhbWV0ZXIuJzt2YXIgcz1uWzBdLmludHQ7cmV0dXJuIHZvaWQgMCE9PWEmJnM8YT8nRGlyZWN0aXZlICInK3QrJyIgcmVxdWlyZXMgYSBudW1iZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICcrYSsiIGFzIGEgcGFyYW1ldGVyLiI6dm9pZCAwIT09aSYmcz5pPydEaXJlY3RpdmUgIicrdCsnIiByZXF1aXJlcyBhIG51bWJlciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJytpKyIgYXMgYSBwYXJhbWV0ZXIuIjoocltlXT1zLG51bGwpfSxmPWZ1bmN0aW9uKGUsdCxuKXtpZigxPT09bi5sZW5ndGgmJigidHJ1ZSI9PT1uWzBdLnRva2VufHwiZmFsc2UiPT09blswXS50b2tlbikpcmV0dXJuIHJbZV09InRydWUiPT09blswXS50b2tlbixudWxsO3ZhciBhPWQoZSx0LG4sMCwxKTtyZXR1cm4gbnVsbCE9PWE/YToocltlXT0xPT09cltlXSxudWxsKX0scD1mdW5jdGlvbihlLHQsbixhKXtpZigxIT09bi5sZW5ndGgpcmV0dXJuJ0RpcmVjdGl2ZSAiJyt0KyciIHJlcXVpcmVzIG9uZSBvZiBbICcrYS5qb2luKCIsICIpKyIgXSBhcyBhIHBhcmFtZXRlci4iO2Zvcih2YXIgaT1uWzBdLnRva2VuLHM9ITEsbz0wOyFzJiZvPGEubGVuZ3RoO28rKylhW29dPT09aSYmKHM9ITApO3JldHVybiBzPyhyW2VdPWksbnVsbCk6J0RpcmVjdGl2ZSAiJyt0KyciIHJlcXVpcmVzIG9uZSBvZiBbICcrYS5qb2luKCIsICIpKyIgXSBhcyBhIHBhcmFtZXRlci4ifSxtPVsibm9iYXJsaW5lcyIsImJhcmxpbmVzIiwiYmVhdGFjY2VudHMiLCJub2JlYXRhY2NlbnRzIiwiZHJvbmVvbiIsImRyb25lb2ZmIiwiZHJ1bW9uIiwiZHJ1bW9mZiIsImZlcm1hdGFmaXhlZCIsImZlcm1hdGFwcm9wb3J0aW9uYWwiLCJnY2hvcmRvbiIsImdjaG9yZG9mZiIsImNvbnRyb2xjb21ibyIsInRlbXBlcmFtZW50bm9ybWFsIiwibm9wb3J0YW1lbnRvIl0sZz1bImdjaG9yZCIsInB0c3RyZXNzIiwiYmVhdHN0cmluZyJdLHY9WyJiYXNzdm9sIiwiY2hvcmR2b2wiLCJjIiwiY2hhbm5lbCIsImJlYXRtb2QiLCJkZWx0YWxvdWRuZXNzIiwiZHJ1bWJhcnMiLCJncmFjZWRpdmlkZXIiLCJtYWtlY2hvcmRjaGFubmVscyIsInJhbmRvbWNob3JkYXR0YWNrIiwiY2hvcmRhdHRhY2siLCJzdHJlc3Ntb2RlbCIsInRyYW5zcG9zZSIsInJ0cmFuc3Bvc2UiLCJ2b2wiLCJ2b2xpbmMiLCJnY2hvcmRiYXJzIl0sYj1bInByb2dyYW0iXSx5PVsicmF0aW8iLCJzbnQiLCJiZW5kdmVsb2NpdHkiLCJwaXRjaGJlbmQiLCJjb250cm9sIiwidGVtcGVyYW1lbnRsaW5lYXIiXSx4PVsiYmVhdCJdLGs9WyJkcm9uZSJdLHc9WyJwb3J0YW1lbnRvIl0sQz1bImV4cGFuZCIsImdyYWNlIiwidHJpbSJdLFQ9WyJkcnVtIiwiY2hvcmRuYW1lIl0sUz1bImJhc3Nwcm9nIiwiY2hvcmRwcm9nIl07YS5wYXJzZUZvbnRDaGFuZ2VMaW5lPWZ1bmN0aW9uKGUpe3ZhciB0PShlPWUucmVwbGFjZSgvXCRcJC9nLCIDIikpLnNwbGl0KCIkIik7aWYodC5sZW5ndGg+MSYmci5zZXRmb250KXt2YXIgbj1bXTsiIiE9PXRbMF0mJm4ucHVzaCh7dGV4dDp0WzBdfSk7Zm9yKHZhciBhPTE7YTx0Lmxlbmd0aDthKyspaWYoIjAiPT09dFthXVswXSluLnB1c2goe3RleHQ6dFthXS5zdWJzdHJpbmcoMSkucmVwbGFjZSgvXHgwMy9nLCIkJCIpfSk7ZWxzZXt2YXIgaT1wYXJzZUludCh0W2FdWzBdLDEwKTtyLnNldGZvbnRbaV0/bi5wdXNoKHtmb250OnIuc2V0Zm9udFtpXSx0ZXh0OnRbYV0uc3Vic3RyaW5nKDEpLnJlcGxhY2UoL1x4MDMvZywiJCQiKX0pOm5bbi5sZW5ndGgtMV0udGV4dCs9IiQiK3RbYV0ucmVwbGFjZSgvXHgwMy9nLCIkJCIpfXJldHVybiBufXJldHVybiBlLnJlcGxhY2UoL1x4MDMvZywiJCQiKX07dmFyIF89WyJhdXRvIiwiYWJvdmUiLCJiZWxvdyIsImhpZGRlbiJdO2Z1bmN0aW9uIEUoZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybnt2YWx1ZToxfTtpZigxPT09ZS5sZW5ndGgpaWYoIm51bWJlciI9PT1lWzBdLnR5cGUpe2lmKGVbMF0uZmxvYXR0Pj0wfHxlWzBdLmZsb2F0dDw9MSlyZXR1cm57dmFsdWU6ZVswXS5mbG9hdHR9fWVsc2V7aWYoImZhbHNlIj09PWVbMF0udG9rZW4pcmV0dXJue3ZhbHVlOjB9O2lmKCJ0cnVlIj09PWVbMF0udG9rZW4pcmV0dXJue3ZhbHVlOjF9fXJldHVybntlcnJvcjoiRGlyZWN0aXZlIHN0cmV0Y2hsYXN0IHJlcXVpcmVzIHplcm8gb3Igb25lIHBhcmFtZXRlcjogZmFsc2UsIHRydWUsIG9yIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEgKHJlY2VpdmVkICIrZVswXS50b2tlbisiKSJ9fWEuYWRkRGlyZWN0aXZlPWZ1bmN0aW9uKG8pe3ZhciBNPWUudG9rZW5pemUobywwLG8ubGVuZ3RoKTtpZigwPT09TS5sZW5ndGh8fCJhbHBoYSIhPT1NWzBdLnR5cGUpcmV0dXJuIG51bGw7dmFyIEE9by5zdWJzdHJpbmcoby5pbmRleE9mKE1bMF0udG9rZW4pK01bMF0udG9rZW4ubGVuZ3RoKTtBPWUuc3RyaXBDb21tZW50KEEpO3ZhciBOLEI9TS5zaGlmdCgpLnRva2VuLnRvTG93ZXJDYXNlKCksUD0iIjtzd2l0Y2goQil7Y2FzZSJiYWdwaXBlcyI6aS5mb3JtYXR0aW5nLmJhZ3BpcGVzPSEwO2JyZWFrO2Nhc2UiZmxhdGJlYW1zIjppLmZvcm1hdHRpbmcuZmxhdGJlYW1zPSEwO2JyZWFrO2Nhc2UiamF6emNob3JkcyI6aS5mb3JtYXR0aW5nLmphenpjaG9yZHM9ITA7YnJlYWs7Y2FzZSJhY2NlbnRBYm92ZSI6aS5mb3JtYXR0aW5nLmFjY2VudEFib3ZlPSEwO2JyZWFrO2Nhc2UiZ2VybWFuQWxwaGFiZXQiOmkuZm9ybWF0dGluZy5nZXJtYW5BbHBoYWJldD0hMDticmVhaztjYXNlImxhbmRzY2FwZSI6ci5sYW5kc2NhcGU9ITA7YnJlYWs7Y2FzZSJwYXBlcnNpemUiOnIucGFwZXJzaXplPUE7YnJlYWs7Y2FzZSJncmFjZXNsdXJzIjppZigxIT09TS5sZW5ndGgpcmV0dXJuIkRpcmVjdGl2ZSBncmFjZXNsdXJzIHJlcXVpcmVzIG9uZSBwYXJhbWV0ZXI6IDAgb3IgMSI7aWYoIjAiPT09TVswXS50b2tlbnx8ImZhbHNlIj09PU1bMF0udG9rZW4paS5mb3JtYXR0aW5nLmdyYWNlU2x1cnM9ITE7ZWxzZXtpZigiMSIhPT1NWzBdLnRva2VuJiYidHJ1ZSIhPT1NWzBdLnRva2VuKXJldHVybiJEaXJlY3RpdmUgZ3JhY2VzbHVycyByZXF1aXJlcyBvbmUgcGFyYW1ldGVyOiAwIG9yIDEgKHJlY2VpdmVkICIrTVswXS50b2tlbisiKSI7aS5mb3JtYXR0aW5nLmdyYWNlU2x1cnM9ITB9YnJlYWs7Y2FzZSJsaW5lVGhpY2tuZXNzIjp2YXIgTD1FKE0pO2lmKHZvaWQgMCE9PUwudmFsdWUmJihpLmZvcm1hdHRpbmcubGluZVRoaWNrbmVzcz1MLnZhbHVlKSxMLmVycm9yKXJldHVybiBMLmVycm9yO2JyZWFrO2Nhc2Uic3RyZXRjaGxhc3QiOnZhciBPPUUoTSk7aWYodm9pZCAwIT09Ty52YWx1ZSYmKGkuZm9ybWF0dGluZy5zdHJldGNobGFzdD1PLnZhbHVlKSxPLmVycm9yKXJldHVybiBPLmVycm9yO2JyZWFrO2Nhc2UidGl0bGVjYXBzIjpyLnRpdGxlY2Fwcz0hMDticmVhaztjYXNlInRpdGxlbGVmdCI6aS5mb3JtYXR0aW5nLnRpdGxlbGVmdD0hMDticmVhaztjYXNlIm1lYXN1cmVib3giOmkuZm9ybWF0dGluZy5tZWFzdXJlYm94PSEwO2JyZWFrO2Nhc2Uidm9jYWwiOnJldHVybiBwKCJ2b2NhbFBvc2l0aW9uIixCLE0sXyk7Y2FzZSJkeW5hbWljIjpyZXR1cm4gcCgiZHluYW1pY1Bvc2l0aW9uIixCLE0sXyk7Y2FzZSJnY2hvcmQiOnJldHVybiBwKCJjaG9yZFBvc2l0aW9uIixCLE0sXyk7Y2FzZSJvcm5hbWVudCI6cmV0dXJuIHAoIm9ybmFtZW50UG9zaXRpb24iLEIsTSxfKTtjYXNlInZvbHVtZSI6cmV0dXJuIHAoInZvbHVtZVBvc2l0aW9uIixCLE0sXyk7Y2FzZSJib3RtYXJnaW4iOmNhc2UiYm90c3BhY2UiOmNhc2UiY29tcG9zZXJzcGFjZSI6Y2FzZSJpbmRlbnQiOmNhc2UibGVmdG1hcmdpbiI6Y2FzZSJsaW5lc2VwIjpjYXNlIm11c2ljc3BhY2UiOmNhc2UicGFydHNzcGFjZSI6Y2FzZSJwYWdlaGVpZ2h0IjpjYXNlInBhZ2V3aWR0aCI6Y2FzZSJyaWdodG1hcmdpbiI6Y2FzZSJzdGFmZnRvcG1hcmdpbiI6Y2FzZSJzdGFmZnNlcCI6Y2FzZSJzdGFmZndpZHRoIjpjYXNlInN1YnRpdGxlc3BhY2UiOmNhc2Uic3lzc3RhZmZzZXAiOmNhc2Uic3lzdGVtc2VwIjpjYXNlInRleHRzcGFjZSI6Y2FzZSJ0aXRsZXNwYWNlIjpjYXNlInRvcG1hcmdpbiI6Y2FzZSJ0b3BzcGFjZSI6Y2FzZSJ2b2NhbHNwYWNlIjpjYXNlIndvcmRzc3BhY2UiOnJldHVybiBmdW5jdGlvbih0LHIpe3ZhciBuPWUuZ2V0TWVhc3VyZW1lbnQocik7cmV0dXJuIDA9PT1uLnVzZWR8fDAhPT1yLmxlbmd0aD8nRGlyZWN0aXZlICInK3QrJyIgcmVxdWlyZXMgYSBtZWFzdXJlbWVudCBhcyBhIHBhcmFtZXRlci4nOihpLmZvcm1hdHRpbmdbdF09bi52YWx1ZSxudWxsKX0oQixNKTtjYXNlInZvaWNlc2NhbGUiOmlmKDEhPT1NLmxlbmd0aHx8Im51bWJlciIhPT1NWzBdLnR5cGUpcmV0dXJuInZvaWNlc2NhbGUgcmVxdWlyZXMgb25lIGZsb2F0IGFzIGEgcGFyYW1ldGVyIjt2YXIgSD1NLnNoaWZ0KCk7cmV0dXJuIHIuY3VycmVudFZvaWNlJiYoci5jdXJyZW50Vm9pY2Uuc2NhbGU9SC5mbG9hdHQscy5jaGFuZ2VWb2ljZVNjYWxlKHIuY3VycmVudFZvaWNlLnNjYWxlKSksbnVsbDtjYXNlInZvaWNlY29sb3IiOmlmKDEhPT1NLmxlbmd0aClyZXR1cm4idm9pY2Vjb2xvciByZXF1aXJlcyBvbmUgc3RyaW5nIGFzIGEgcGFyYW1ldGVyIjt2YXIgej1NLnNoaWZ0KCk7cmV0dXJuIHIuY3VycmVudFZvaWNlJiYoci5jdXJyZW50Vm9pY2UuY29sb3I9ei50b2tlbixzLmNoYW5nZVZvaWNlQ29sb3Ioci5jdXJyZW50Vm9pY2UuY29sb3IpKSxudWxsO2Nhc2UidnNraXAiOnZhciBEPU1hdGgucm91bmQoZnVuY3Rpb24odCxyKXt2YXIgbj1lLmdldE1lYXN1cmVtZW50KHIpO3JldHVybiAwPT09bi51c2VkfHwwIT09ci5sZW5ndGg/e2Vycm9yOidEaXJlY3RpdmUgIicrdCsnIiByZXF1aXJlcyBhIG1lYXN1cmVtZW50IGFzIGEgcGFyYW1ldGVyLid9Om4udmFsdWV9KEIsTSkpO3JldHVybiBELmVycm9yP0QuZXJyb3I6KHMuYWRkU3BhY2luZyhEKSxudWxsKTtjYXNlInNjYWxlIjpoKEIsTSk7YnJlYWs7Y2FzZSJzZXAiOmlmKDA9PT1NLmxlbmd0aClzLmFkZFNlcGFyYXRvcigxNCwxNCw4NSx7c3RhcnRDaGFyOnIuaUNoYXIsZW5kQ2hhcjpyLmlDaGFyKzV9KTtlbHNle3ZhciBGPWUuZ2V0TWVhc3VyZW1lbnQoTSk7aWYoMD09PUYudXNlZClyZXR1cm4nRGlyZWN0aXZlICInK0IrJyIgcmVxdWlyZXMgMyBudW1iZXJzOiBzcGFjZSBhYm92ZSwgc3BhY2UgYmVsb3csIGxlbmd0aCBvZiBsaW5lJzt2YXIgaj1GLnZhbHVlO2lmKDA9PT0oRj1lLmdldE1lYXN1cmVtZW50KE0pKS51c2VkKXJldHVybidEaXJlY3RpdmUgIicrQisnIiByZXF1aXJlcyAzIG51bWJlcnM6IHNwYWNlIGFib3ZlLCBzcGFjZSBiZWxvdywgbGVuZ3RoIG9mIGxpbmUnO3ZhciBJPUYudmFsdWU7aWYoMD09PShGPWUuZ2V0TWVhc3VyZW1lbnQoTSkpLnVzZWR8fDAhPT1NLmxlbmd0aClyZXR1cm4nRGlyZWN0aXZlICInK0IrJyIgcmVxdWlyZXMgMyBudW1iZXJzOiBzcGFjZSBhYm92ZSwgc3BhY2UgYmVsb3csIGxlbmd0aCBvZiBsaW5lJzt2YXIgVj1GLnZhbHVlO3MuYWRkU2VwYXJhdG9yKGosSSxWLHtzdGFydENoYXI6ci5pQ2hhcixlbmRDaGFyOnIuaUNoYXIrQS5sZW5ndGh9KX1icmVhaztjYXNlImJhcnNwZXJzdGFmZiI6aWYobnVsbCE9PShQPWQoImJhcnNwZXJzdGFmZiIsQixNKSkpcmV0dXJuIFA7YnJlYWs7Y2FzZSJzdGFmZm5vbm90ZSI6aWYoMSE9PU0ubGVuZ3RoKXJldHVybiJEaXJlY3RpdmUgc3RhZmZub25vdGUgcmVxdWlyZXMgb25lIHBhcmFtZXRlcjogMCBvciAxIjtpZigiMCI9PT1NWzBdLnRva2VuKXIuc3RhZmZub25vdGU9ITA7ZWxzZXtpZigiMSIhPT1NWzBdLnRva2VuKXJldHVybiJEaXJlY3RpdmUgc3RhZmZub25vdGUgcmVxdWlyZXMgb25lIHBhcmFtZXRlcjogMCBvciAxIChyZWNlaXZlZCAiK01bMF0udG9rZW4rIikiO3Iuc3RhZmZub25vdGU9ITF9YnJlYWs7Y2FzZSJwcmludHRlbXBvIjppZihudWxsIT09KFA9ZigicHJpbnRUZW1wbyIsQixNKSkpcmV0dXJuIFA7YnJlYWs7Y2FzZSJwYXJ0c2JveCI6aWYobnVsbCE9PShQPWYoInBhcnRzQm94IixCLE0pKSlyZXR1cm4gUDtyLnBhcnRzZm9udC5ib3g9ci5wYXJ0c0JveDticmVhaztjYXNlImZyZWVnY2hvcmQiOmlmKG51bGwhPT0oUD1mKCJmcmVlZ2Nob3JkIixCLE0pKSlyZXR1cm4gUDticmVhaztjYXNlIm1lYXN1cmVuYiI6Y2FzZSJiYXJudW1iZXJzIjppZihudWxsIT09KFA9ZCgiYmFyTnVtYmVycyIsQixNKSkpcmV0dXJuIFA7YnJlYWs7Y2FzZSJzZXRiYXJuYiI6aWYoMSE9PU0ubGVuZ3RofHwibnVtYmVyIiE9PU1bMF0udHlwZSlyZXR1cm4iRGlyZWN0aXZlIHNldGJhcm5iIHJlcXVpcmVzIGEgbnVtYmVyIGFzIGEgcGFyYW1ldGVyLiI7ci5jdXJyQmFyTnVtYmVyPXMuc2V0QmFyTnVtYmVySW1tZWRpYXRlKE1bMF0uaW50dCk7YnJlYWs7Y2FzZSJrZXl3YXJuIjppZigxIT09TS5sZW5ndGh8fCJudW1iZXIiIT09TVswXS50eXBlfHwxIT09TVswXS5pbnR0JiYwIT09TVswXS5pbnR0KXJldHVybiJEaXJlY3RpdmUgIitCKyIgcmVxdWlyZXMgMCBvciAxIGFzIGEgcGFyYW1ldGVyLiI7cltCXT0xPT09TVswXS5pbnR0O2JyZWFrO2Nhc2UiYmVnaW50ZXh0Ijp2YXIgWT0iIjtmb3IoTj1lLm5leHRMaW5lKCk7TiYmMCE9PU4uaW5kZXhPZigiJSVlbmR0ZXh0Iik7KXtpZihuLnN0YXJ0c1dpdGgoTiwiJSUiKSl7dmFyIEc9Ti5zdWJzdHJpbmcoMik7WSs9Rz1HLnRyaW0oKSsiXG4ifWVsc2UgWSs9Ti50cmltKCkrIlxuIjtOPWUubmV4dExpbmUoKX1zLmFkZFRleHQoWSx7c3RhcnRDaGFyOnIuaUNoYXIsZW5kQ2hhcjpyLmlDaGFyK1kubGVuZ3RoKzd9KTticmVhaztjYXNlImNvbnRpbnVlYWxsIjpyLmNvbnRpbnVlYWxsPSEwO2JyZWFrO2Nhc2UiYmVnaW5wcyI6Zm9yKE49ZS5uZXh0TGluZSgpO04mJjAhPT1OLmluZGV4T2YoIiUlZW5kcHMiKTspZS5uZXh0TGluZSgpO3QoIlBvc3RzY3JpcHQgaWdub3JlZCIsbywwKTticmVhaztjYXNlImRlY28iOkEubGVuZ3RoPjAmJnIuaWdub3JlZERlY29yYXRpb25zLnB1c2goQS5zdWJzdHJpbmcoMCxBLmluZGV4T2YoIiAiKSkpLHQoIkRlY29yYXRpb24gcmVkZWZpbml0aW9uIGlnbm9yZWQiLG8sMCk7YnJlYWs7Y2FzZSJ0ZXh0Ijp2YXIgcT1lLnRyYW5zbGF0ZVN0cmluZyhBKTtzLmFkZFRleHQoYS5wYXJzZUZvbnRDaGFuZ2VMaW5lKHEpLHtzdGFydENoYXI6ci5pQ2hhcixlbmRDaGFyOnIuaUNoYXIrQS5sZW5ndGgrN30pO2JyZWFrO2Nhc2UiY2VudGVyIjp2YXIgVz1lLnRyYW5zbGF0ZVN0cmluZyhBKTtzLmFkZENlbnRlcmVkKGEucGFyc2VGb250Q2hhbmdlTGluZShXKSk7YnJlYWs7Y2FzZSJmb250IjpicmVhaztjYXNlInNldGZvbnQiOnZhciBSPWUudG9rZW5pemUoQSwwLEEubGVuZ3RoKTtpZihSLmxlbmd0aD49NCYmIi0iPT09UlswXS50b2tlbiYmIm51bWJlciI9PT1SWzFdLnR5cGUpe3ZhciBYPXBhcnNlSW50KFJbMV0udG9rZW4pO1g+PTEmJlg8PTkmJihyLnNldGZvbnR8fChyLnNldGZvbnQ9W10pLFIuc2hpZnQoKSxSLnNoaWZ0KCksci5zZXRmb250W1hdPWMoUixyLnNldGZvbnRbWF0sbywwLCJzZXRmb250IikpfWJyZWFrO2Nhc2UiZ2Nob3JkZm9udCI6Y2FzZSJwYXJ0c2ZvbnQiOmNhc2UidHJpcGxldGZvbnQiOmNhc2Uidm9jYWxmb250IjpjYXNlInRleHRmb250IjpjYXNlImFubm90YXRpb25mb250IjpjYXNlImhpc3Rvcnlmb250IjpjYXNlImluZm9mb250IjpjYXNlIm1lYXN1cmVmb250IjpjYXNlInJlcGVhdGZvbnQiOmNhc2Uid29yZHNmb250IjpyZXR1cm4gbChCLE0sbyk7Y2FzZSJjb21wb3NlcmZvbnQiOmNhc2Uic3VidGl0bGVmb250IjpjYXNlInRlbXBvZm9udCI6Y2FzZSJ0aXRsZWZvbnQiOmNhc2Uidm9pY2Vmb250IjpjYXNlImZvb3RlcmZvbnQiOmNhc2UiaGVhZGVyZm9udCI6cmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gMD09PXQubGVuZ3RoPydEaXJlY3RpdmUgIicrZSsnIiByZXF1aXJlcyBhIGZvbnQgYXMgYSBwYXJhbWV0ZXIuJzooaS5mb3JtYXR0aW5nW2VdPWModCxpLmZvcm1hdHRpbmdbZV0sciwwLGUpLG51bGwpfShCLE0sbyk7Y2FzZSJiYXJsYWJlbGZvbnQiOmNhc2UiYmFybnVtYmVyZm9udCI6Y2FzZSJiYXJudW1mb250IjpyZXR1cm4gbCgibWVhc3VyZWZvbnQiLE0sbyk7Y2FzZSJzdGF2ZXMiOmNhc2Uic2NvcmUiOnIuc2NvcmVfaXNfcHJlc2VudD0hMDtmb3IodmFyIFUsSz1mdW5jdGlvbihlLHQsYSxpLHMpeyh0fHwwPT09ci5zdGF2ZXMubGVuZ3RoKSYmci5zdGF2ZXMucHVzaCh7aW5kZXg6ci5zdGF2ZXMubGVuZ3RoLG51bVZvaWNlczowfSk7dmFyIG89bi5sYXN0KHIuc3RhdmVzKTt2b2lkIDAhPT1hJiZ2b2lkIDA9PT1vLmJyYWNrZXQmJihvLmJyYWNrZXQ9YSksdm9pZCAwIT09aSYmdm9pZCAwPT09by5icmFjZSYmKG8uYnJhY2U9aSkscyYmKG8uY29ubmVjdEJhckxpbmVzPSJlbmQiKSx2b2lkIDA9PT1yLnZvaWNlc1tlXSYmKHIudm9pY2VzW2VdPXtzdGFmZk51bTpvLmluZGV4LGluZGV4Om8ubnVtVm9pY2VzfSxvLm51bVZvaWNlcysrKX0sJD0hMSxRPSExLEo9ITEsWj0hMSxlZT0hMSx0ZT0hMSxyZT0hMSxuZT1mdW5jdGlvbigpe2lmKHJlPSEwLFUpe3ZhciBlPSJzdGFydCI7VS5zdGFmZk51bT4wJiYoInN0YXJ0IiE9PXIuc3RhdmVzW1Uuc3RhZmZOdW0tMV0uY29ubmVjdEJhckxpbmVzJiYiY29udGludWUiIT09ci5zdGF2ZXNbVS5zdGFmZk51bS0xXS5jb25uZWN0QmFyTGluZXN8fChlPSJjb250aW51ZSIpKSxyLnN0YXZlc1tVLnN0YWZmTnVtXS5jb25uZWN0QmFyTGluZXM9ZX19O00ubGVuZ3RoOyl7dmFyIGFlPU0uc2hpZnQoKTtzd2l0Y2goYWUudG9rZW4pe2Nhc2UiKCI6JD90KCJDYW4ndCBuZXN0IHBhcmVudGhlc2lzIGluICUlc2NvcmUiLG8sYWUuc3RhcnQpOigkPSEwLFo9ITApO2JyZWFrO2Nhc2UiKSI6ISR8fFo/dCgiVW5leHBlY3RlZCBjbG9zZSBwYXJlbnRoZXNpcyBpbiAlJXNjb3JlIixvLGFlLnN0YXJ0KTokPSExO2JyZWFrO2Nhc2UiWyI6UT90KCJDYW4ndCBuZXN0IGJyYWNrZXRzIGluICUlc2NvcmUiLG8sYWUuc3RhcnQpOihRPSEwLGVlPSEwKTticmVhaztjYXNlIl0iOiFRfHxlZT90KCJVbmV4cGVjdGVkIGNsb3NlIGJyYWNrZXQgaW4gJSVzY29yZSIsbyxhZS5zdGFydCk6KFE9ITEsci5zdGF2ZXNbVS5zdGFmZk51bV0uYnJhY2tldD0iZW5kIik7YnJlYWs7Y2FzZSJ7IjpKP3QoIkNhbid0IG5lc3QgYnJhY2VzIGluICUlc2NvcmUiLG8sYWUuc3RhcnQpOihKPSEwLHRlPSEwKTticmVhaztjYXNlIn0iOiFKfHx0ZT90KCJVbmV4cGVjdGVkIGNsb3NlIGJyYWNlIGluICUlc2NvcmUiLG8sYWUuc3RhcnQpOihKPSExLHIuc3RhdmVzW1Uuc3RhZmZOdW1dLmJyYWNlPSJlbmQiKTticmVhaztjYXNlInwiOm5lKCk7YnJlYWs7ZGVmYXVsdDpmb3IodmFyIGllPSIiOygiYWxwaGEiPT09YWUudHlwZXx8Im51bWJlciI9PT1hZS50eXBlKSYmKGllKz1hZS50b2tlbixhZS5jb250aW51ZUlkKTspYWU9TS5zaGlmdCgpO0soaWUsISR8fFosZWU/InN0YXJ0IjpRPyJjb250aW51ZSI6dm9pZCAwLHRlPyJzdGFydCI6Sj8iY29udGludWUiOnZvaWQgMCxyZSksWj0hMSxlZT0hMSx0ZT0hMSxyZT0hMSxVPXIudm9pY2VzW2llXSwic3RhdmVzIj09PUImJm5lKCl9fWJyZWFrO2Nhc2UibWF4c3RhdmVzIjp2YXIgc2U9ZS5nZXRJbnQoQSk7MD09PXNlLmRpZ2l0cz90KCJFeHBlY3RlZCBudW1iZXIgb2Ygc3RhdmVzIGluIG1heHN0YXZlcyIpOnNlLnZhbHVlPjAmJihpLmZvcm1hdHRpbmcubWF4U3RhdmVzPXNlLnZhbHVlKTticmVhaztjYXNlIm5ld3BhZ2UiOnZhciBvZT1lLmdldEludChBKTtzLmFkZE5ld1BhZ2UoMD09PW9lLmRpZ2l0cz8tMTpvZS52YWx1ZSk7YnJlYWs7Y2FzZSJhYmMiOnZhciBjZT1BLnNwbGl0KCIgIik7c3dpdGNoKGNlWzBdKXtjYXNlIi1jb3B5cmlnaHQiOmNhc2UiLWNyZWF0b3IiOmNhc2UiLWVkaXRlZC1ieSI6Y2FzZSItdmVyc2lvbiI6Y2FzZSItY2hhcnNldCI6dmFyIGxlPWNlLnNoaWZ0KCk7cy5hZGRNZXRhVGV4dChCK2xlLGNlLmpvaW4oIiAiKSx7c3RhcnRDaGFyOnIuaUNoYXIsZW5kQ2hhcjpyLmlDaGFyK0EubGVuZ3RoKzV9KTticmVhaztkZWZhdWx0OnJldHVybiJVbmtub3duIGRpcmVjdGl2ZTogIitCK2NlWzBdfWJyZWFrO2Nhc2UiaGVhZGVyIjpjYXNlImZvb3RlciI6dmFyIGhlPWUuZ2V0TWVhdChBLDAsQS5sZW5ndGgpOyciJz09PShoZT1BLnN1YnN0cmluZyhoZS5zdGFydCxoZS5lbmQpKVswXSYmJyInPT09aGVbaGUubGVuZ3RoLTFdJiYoaGU9aGUuc3Vic3RyaW5nKDEsaGUubGVuZ3RoLTEpKTt2YXIgdWU9aGUuc3BsaXQoIlx0IiksZGU9e307ZGU9MT09PXVlLmxlbmd0aD97bGVmdDoiIixjZW50ZXI6dWVbMF0scmlnaHQ6IiJ9OjI9PT11ZS5sZW5ndGg/e2xlZnQ6dWVbMF0sY2VudGVyOnVlWzFdLHJpZ2h0OiIifTp7bGVmdDp1ZVswXSxjZW50ZXI6dWVbMV0scmlnaHQ6dWVbMl19LHVlLmxlbmd0aD4zJiZ0KCJUb28gbWFueSB0YWJzIGluICIrQisiOiAiK3VlLmxlbmd0aCsiIGZvdW5kLiIsQSwwKSxzLmFkZE1ldGFUZXh0T2JqKEIsZGUse3N0YXJ0Q2hhcjpyLmlDaGFyLGVuZENoYXI6ci5pQ2hhcitvLmxlbmd0aH0pO2JyZWFrO2Nhc2UibWlkaSI6dmFyIGZlPWUudG9rZW5pemUoQSwwLEEubGVuZ3RoLCEwKTtmZS5sZW5ndGg+MCYmIj0iPT09ZmVbMF0udG9rZW4mJmZlLnNoaWZ0KCksMD09PWZlLmxlbmd0aD90KCJFeHBlY3RlZCBtaWRpIGNvbW1hbmQiLEEsMCk6ZnVuY3Rpb24oZSxyLG4pe3ZhciBhPWUuc2hpZnQoKS50b2tlbixpPVtdO2lmKG0uaW5kZXhPZihhKT49MCkwIT09ZS5sZW5ndGgmJnQoIlVuZXhwZWN0ZWQgcGFyYW1ldGVyIGluIE1JREkgIithLG4sMCk7ZWxzZSBpZihnLmluZGV4T2YoYSk+PTApMSE9PWUubGVuZ3RoP3QoIkV4cGVjdGVkIG9uZSBwYXJhbWV0ZXIgaW4gTUlESSAiK2EsbiwwKTppLnB1c2goZVswXS50b2tlbik7ZWxzZSBpZih2LmluZGV4T2YoYSk+PTApMSE9PWUubGVuZ3RoP3QoIkV4cGVjdGVkIG9uZSBwYXJhbWV0ZXIgaW4gTUlESSAiK2EsbiwwKToibnVtYmVyIiE9PWVbMF0udHlwZT90KCJFeHBlY3RlZCBvbmUgaW50ZWdlciBwYXJhbWV0ZXIgaW4gTUlESSAiK2EsbiwwKTppLnB1c2goZVswXS5pbnR0KTtlbHNlIGlmKGIuaW5kZXhPZihhKT49MCkxIT09ZS5sZW5ndGgmJjIhPT1lLmxlbmd0aD90KCJFeHBlY3RlZCBvbmUgb3IgdHdvIHBhcmFtZXRlcnMgaW4gTUlESSAiK2EsbiwwKToibnVtYmVyIiE9PWVbMF0udHlwZXx8Mj09PWUubGVuZ3RoJiYibnVtYmVyIiE9PWVbMV0udHlwZT90KCJFeHBlY3RlZCBpbnRlZ2VyIHBhcmFtZXRlciBpbiBNSURJICIrYSxuLDApOihpLnB1c2goZVswXS5pbnR0KSwyPT09ZS5sZW5ndGgmJmkucHVzaChlWzFdLmludHQpKTtlbHNlIGlmKHkuaW5kZXhPZihhKT49MCkyIT09ZS5sZW5ndGg/dCgiRXhwZWN0ZWQgdHdvIHBhcmFtZXRlcnMgaW4gTUlESSAiK2EsbiwwKToibnVtYmVyIiE9PWVbMF0udHlwZXx8Im51bWJlciIhPT1lWzFdLnR5cGU/dCgiRXhwZWN0ZWQgdHdvIGludGVnZXIgcGFyYW1ldGVycyBpbiBNSURJICIrYSxuLDApOihpLnB1c2goZVswXS5pbnR0KSxpLnB1c2goZVsxXS5pbnR0KSk7ZWxzZSBpZih3LmluZGV4T2YoYSk+PTApMiE9PWUubGVuZ3RoP3QoIkV4cGVjdGVkIHR3byBwYXJhbWV0ZXJzIGluIE1JREkgIithLG4sMCk6ImFscGhhIiE9PWVbMF0udHlwZXx8Im51bWJlciIhPT1lWzFdLnR5cGU/dCgiRXhwZWN0ZWQgb25lIHN0cmluZyBhbmQgb25lIGludGVnZXIgcGFyYW1ldGVycyBpbiBNSURJICIrYSxuLDApOihpLnB1c2goZVswXS50b2tlbiksaS5wdXNoKGVbMV0uaW50dCkpO2Vsc2UgaWYoImRydW1tYXAiPT09YSkyPT09ZS5sZW5ndGgmJiJhbHBoYSI9PT1lWzBdLnR5cGUmJiJudW1iZXIiPT09ZVsxXS50eXBlPyhyLmZvcm1hdHRpbmd8fChyLmZvcm1hdHRpbmc9e30pLHIuZm9ybWF0dGluZy5taWRpfHwoci5mb3JtYXR0aW5nLm1pZGk9e30pLHIuZm9ybWF0dGluZy5taWRpLmRydW1tYXB8fChyLmZvcm1hdHRpbmcubWlkaS5kcnVtbWFwPXt9KSxyLmZvcm1hdHRpbmcubWlkaS5kcnVtbWFwW2VbMF0udG9rZW5dPWVbMV0uaW50dCxpPXIuZm9ybWF0dGluZy5taWRpLmRydW1tYXApOjM9PT1lLmxlbmd0aCYmInB1bmN0Ij09PWVbMF0udHlwZSYmImFscGhhIj09PWVbMV0udHlwZSYmIm51bWJlciI9PT1lWzJdLnR5cGU/KHIuZm9ybWF0dGluZ3x8KHIuZm9ybWF0dGluZz17fSksci5mb3JtYXR0aW5nLm1pZGl8fChyLmZvcm1hdHRpbmcubWlkaT17fSksci5mb3JtYXR0aW5nLm1pZGkuZHJ1bW1hcHx8KHIuZm9ybWF0dGluZy5taWRpLmRydW1tYXA9e30pLHIuZm9ybWF0dGluZy5taWRpLmRydW1tYXBbZVswXS50b2tlbitlWzFdLnRva2VuXT1lWzJdLmludHQsaT1yLmZvcm1hdHRpbmcubWlkaS5kcnVtbWFwKTp0KCJFeHBlY3RlZCBvbmUgbm90ZSBuYW1lIGFuZCBvbmUgaW50ZWdlciBwYXJhbWV0ZXIgaW4gTUlESSAiK2EsbiwwKTtlbHNlIGlmKEMuaW5kZXhPZihhKT49MCkzIT09ZS5sZW5ndGh8fCJudW1iZXIiIT09ZVswXS50eXBlfHwiLyIhPT1lWzFdLnRva2VufHwibnVtYmVyIiE9PWVbMl0udHlwZT90KCJFeHBlY3RlZCBmcmFjdGlvbiBwYXJhbWV0ZXIgaW4gTUlESSAiK2EsbiwwKTooaS5wdXNoKGVbMF0uaW50dCksaS5wdXNoKGVbMl0uaW50dCkpO2Vsc2UgaWYoeC5pbmRleE9mKGEpPj0wKTQhPT1lLmxlbmd0aD90KCJFeHBlY3RlZCBmb3VyIHBhcmFtZXRlcnMgaW4gTUlESSAiK2EsbiwwKToibnVtYmVyIiE9PWVbMF0udHlwZXx8Im51bWJlciIhPT1lWzFdLnR5cGV8fCJudW1iZXIiIT09ZVsyXS50eXBlfHwibnVtYmVyIiE9PWVbM10udHlwZT90KCJFeHBlY3RlZCBmb3VyIGludGVnZXIgcGFyYW1ldGVycyBpbiBNSURJICIrYSxuLDApOihpLnB1c2goZVswXS5pbnR0KSxpLnB1c2goZVsxXS5pbnR0KSxpLnB1c2goZVsyXS5pbnR0KSxpLnB1c2goZVszXS5pbnR0KSk7ZWxzZSBpZihrLmluZGV4T2YoYSk+PTApNSE9PWUubGVuZ3RoP3QoIkV4cGVjdGVkIGZpdmUgcGFyYW1ldGVycyBpbiBNSURJICIrYSxuLDApOiJudW1iZXIiIT09ZVswXS50eXBlfHwibnVtYmVyIiE9PWVbMV0udHlwZXx8Im51bWJlciIhPT1lWzJdLnR5cGV8fCJudW1iZXIiIT09ZVszXS50eXBlfHwibnVtYmVyIiE9PWVbNF0udHlwZT90KCJFeHBlY3RlZCBmaXZlIGludGVnZXIgcGFyYW1ldGVycyBpbiBNSURJICIrYSxuLDApOihpLnB1c2goZVswXS5pbnR0KSxpLnB1c2goZVsxXS5pbnR0KSxpLnB1c2goZVsyXS5pbnR0KSxpLnB1c2goZVszXS5pbnR0KSxpLnB1c2goZVs0XS5pbnR0KSk7ZWxzZSBpZihiLmluZGV4T2YoYSk+PTApMSE9PWUubGVuZ3RofHw0IT09ZS5sZW5ndGg/dCgiRXhwZWN0ZWQgb25lIG9yIHR3byBwYXJhbWV0ZXJzIGluIE1JREkgIithLG4sMCk6Im51bWJlciIhPT1lWzBdLnR5cGU/dCgiRXhwZWN0ZWQgaW50ZWdlciBwYXJhbWV0ZXIgaW4gTUlESSAiK2EsbiwwKTo0PT09ZS5sZW5ndGg/KCJvY3RhdmUiIT09ZVsxXS50b2tlbiYmdCgiRXhwZWN0ZWQgb2N0YXZlIHBhcmFtZXRlciBpbiBNSURJICIrYSxuLDApLCI9IiE9PWVbMl0udG9rZW4mJnQoIkV4cGVjdGVkIG9jdGF2ZSBwYXJhbWV0ZXIgaW4gTUlESSAiK2EsbiwwKSwibnVtYmVyIiE9PWVbM10udHlwZSYmdCgiRXhwZWN0ZWQgaW50ZWdlciBwYXJhbWV0ZXIgZm9yIG9jdGF2ZSBpbiBNSURJICIrYSxuLDApKTooaS5wdXNoKGVbMF0uaW50dCksND09PWUubGVuZ3RoJiZpLnB1c2goZVszXS5pbnR0KSk7ZWxzZSBpZihULmluZGV4T2YoYSk+PTApaWYoZS5sZW5ndGg8Mil0KCJFeHBlY3RlZCBzdHJpbmcgcGFyYW1ldGVyIGFuZCBhdCBsZWFzdCBvbmUgaW50ZWdlciBwYXJhbWV0ZXIgaW4gTUlESSAiK2EsbiwwKTtlbHNlIGlmKCJhbHBoYSIhPT1lWzBdLnR5cGUpdCgiRXhwZWN0ZWQgc3RyaW5nIHBhcmFtZXRlciBhbmQgYXQgbGVhc3Qgb25lIGludGVnZXIgcGFyYW1ldGVyIGluIE1JREkgIithLG4sMCk7ZWxzZXt2YXIgbz1lLnNoaWZ0KCk7Zm9yKGkucHVzaChvLnRva2VuKTtlLmxlbmd0aD4wOykibnVtYmVyIiE9PShvPWUuc2hpZnQoKSkudHlwZSYmdCgiRXhwZWN0ZWQgaW50ZWdlciBwYXJhbWV0ZXIgaW4gTUlESSAiK2EsbiwwKSxpLnB1c2goby5pbnR0KX1lbHNlIGlmKFMuaW5kZXhPZihhKT49MClpZigxIT09ZS5sZW5ndGgmJjIhPT1lLmxlbmd0aCl0KCJFeHBlY3RlZCBvbmUgb3IgdHdvIHBhcmFtZXRlcnMgaW4gTUlESSAiK2EsbiwwKTtlbHNlIGlmKCJudW1iZXIiIT09ZVswXS50eXBlKXQoIkV4cGVjdGVkIGludGVnZXIgcGFyYW1ldGVyIGluIE1JREkgIithLG4sMCk7ZWxzZSBpZigyPT09ZS5sZW5ndGgmJiJhbHBoYSIhPT1lWzFdLnR5cGUpdCgiRXhwZWN0ZWQgYWxwaGEgcGFyYW1ldGVyIGluIE1JREkgIithLG4sMCk7ZWxzZSBpZihpLnB1c2goZVswXS5pbnR0KSwyPT09ZS5sZW5ndGgpe3ZhciBjPWVbMV0udG9rZW47LTEhPWMuaW5kZXhPZigib2N0YXZlPSIpPyhjPWMucmVwbGFjZSgib2N0YXZlPSIsIiIpLGM9cGFyc2VJbnQoYyksaXNOYU4oYyk/dCgiRXhwZWN0ZWQgb2N0YXZlIHZhbHVlIGluIE1JREkiK2EpOihjPC0xJiYodCgiRXhwZWN0ZWQgb2N0YXZlPSBpbiBNSURJICIrYSsiIHRvIGJlID49IC0xIChyZWN2OiIrYysiKSIpLGM9LTEpLGM+MyYmKHQoIkV4cGVjdGVkIG9jdGF2ZT0gaW4gTUlESSAiK2ErIiB0byBiZSA8PSAzIChyZWN2OiIrYysiKSIpLGM9MyksaS5wdXNoKGMpKSk6dCgiRXhwZWN0ZWQgb2N0YXZlPSBpbiBNSURJIithKX1zLmhhc0JlZ2luTXVzaWMoKT9zLmFwcGVuZEVsZW1lbnQoIm1pZGkiLC0xLC0xLHtjbWQ6YSxwYXJhbXM6aX0pOih2b2lkIDA9PT1yLmZvcm1hdHRpbmcubWlkaSYmKHIuZm9ybWF0dGluZy5taWRpPXt9KSxyLmZvcm1hdHRpbmcubWlkaVthXT1pKX0oZmUsaSxBKTticmVhaztjYXNlInBlcmNtYXAiOnZhciBwZT1mdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KC9ccysvKTtpZigyIT09dC5sZW5ndGgmJjMhPT10Lmxlbmd0aClyZXR1cm57ZXJyb3I6J0V4cGVjdGVkIHBhcmFtZXRlcnMgImFiYy1ub3RlIiwgImRydW0tc291bmQiLCBhbmQgb3B0aW9uYWxseSAibm90ZS1oZWFkIid9O3ZhciByPXRbMF0sbj1wYXJzZUludCh0WzFdLDEwKTtpZigoaXNOYU4obil8fG48MzV8fG4+ODEpJiZ0WzFdJiYobj11LmluZGV4T2YodFsxXS50b0xvd2VyQ2FzZSgpKSszNSksaXNOYU4obil8fG48MzV8fG4+ODEpcmV0dXJue2Vycm9yOidFeHBlY3RlZCBkcnVtIG5hbWUsIHJlY2VpdmVkICInK3RbMV0rJyInfTt2YXIgYT17c291bmQ6bn07cmV0dXJuIDM9PT10Lmxlbmd0aCYmKGEubm90ZUhlYWQ9dFsyXSkse2tleTpyLHZhbHVlOmF9fShBKTtwZS5lcnJvcj90KHBlLmVycm9yLG8sOCk6KGkuZm9ybWF0dGluZy5wZXJjbWFwfHwoaS5mb3JtYXR0aW5nLnBlcmNtYXA9e30pLGkuZm9ybWF0dGluZy5wZXJjbWFwW3BlLmtleV09cGUudmFsdWUpO2JyZWFrO2Nhc2UidmlzdWFsdHJhbnNwb3NlIjp2YXIgbWU9ZS5nZXRJbnQoQSk7MD09PW1lLmRpZ2l0cz90KCJFeHBlY3RlZCBudW1iZXIgb2YgaGFsZiBzdGVwcyBpbiB2aXN1YWxUcmFuc3Bvc2UiKTpyLmdsb2JhbFRyYW5zcG9zZT1tZS52YWx1ZTticmVhaztjYXNlIm1hcCI6Y2FzZSJwbGF5dGVtcG8iOmNhc2UiYXVxdWFsaXR5IjpjYXNlImNvbnRpbnVvdXMiOmNhc2Uibm9iYXJjaGVjayI6aS5mb3JtYXR0aW5nW0JdPUE7YnJlYWs7ZGVmYXVsdDpyZXR1cm4iVW5rbm93biBkaXJlY3RpdmU6ICIrQn1yZXR1cm4gbnVsbH0sYS5nbG9iYWxGb3JtYXR0aW5nPWZ1bmN0aW9uKG4pe2Zvcih2YXIgYSBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkoYSkpe3ZhciBzLG89IiIrblthXSxjPWUudG9rZW5pemUobywwLG8ubGVuZ3RoKTtzd2l0Y2goYSl7Y2FzZSJ0aXRsZWZvbnQiOmNhc2UiZ2Nob3JkZm9udCI6Y2FzZSJjb21wb3NlcmZvbnQiOmNhc2UiZm9vdGVyZm9udCI6Y2FzZSJoZWFkZXJmb250IjpjYXNlImhpc3Rvcnlmb250IjpjYXNlImluZm9mb250IjpjYXNlIm1lYXN1cmVmb250IjpjYXNlInBhcnRzZm9udCI6Y2FzZSJyZXBlYXRmb250IjpjYXNlInN1YnRpdGxlZm9udCI6Y2FzZSJ0ZW1wb2ZvbnQiOmNhc2UidGV4dGZvbnQiOmNhc2Uidm9pY2Vmb250IjpjYXNlInRyaXBsZXRmb250IjpjYXNlInZvY2FsZm9udCI6Y2FzZSJ3b3Jkc2ZvbnQiOmNhc2UiYW5ub3RhdGlvbmZvbnQiOmNhc2UidGFibGFiZWxmb250IjpjYXNlInRhYm51bWJlcmZvbnQiOmNhc2UidGFiZ3JhY2Vmb250IjpsKGEsYyxvKTticmVhaztjYXNlInNjYWxlIjpoKGEsYyk7YnJlYWs7Y2FzZSJwYXJ0c2JveCI6bnVsbCE9PShzPWYoInBhcnRzQm94IixhLGMpKSYmdChzKSxyLnBhcnRzZm9udC5ib3g9ci5wYXJ0c0JveDticmVhaztjYXNlImZyZWVnY2hvcmQiOm51bGwhPT0ocz1mKCJmcmVlZ2Nob3JkIixhLGMpKSYmdChzKTticmVhaztjYXNlImZvbnRib3hwYWRkaW5nIjoxPT09Yy5sZW5ndGgmJiJudW1iZXIiPT09Y1swXS50eXBlfHx0KCdEaXJlY3RpdmUgIicrYSsnIiByZXF1aXJlcyBhIG51bWJlciBhcyBhIHBhcmFtZXRlci4nKSxpLmZvcm1hdHRpbmcuZm9udGJveHBhZGRpbmc9Y1swXS5mbG9hdHQ7YnJlYWs7Y2FzZSJzdGFmZnRvcG1hcmdpbiI6MT09PWMubGVuZ3RoJiYibnVtYmVyIj09PWNbMF0udHlwZXx8dCgnRGlyZWN0aXZlICInK2ErJyIgcmVxdWlyZXMgYSBudW1iZXIgYXMgYSBwYXJhbWV0ZXIuJyksaS5mb3JtYXR0aW5nLnN0YWZmdG9wbWFyZ2luPWNbMF0uZmxvYXR0O2JyZWFrO2Nhc2Uic3RyZXRjaGxhc3QiOnZhciB1PUUoYyk7aWYodm9pZCAwIT09dS52YWx1ZSYmKGkuZm9ybWF0dGluZy5zdHJldGNobGFzdD11LnZhbHVlKSx1LmVycm9yKXJldHVybiB1LmVycm9yO2JyZWFrO2RlZmF1bHQ6dCgiRm9ybWF0dGluZyBkaXJlY3RpdmUgdW5yZWNvZ25pemVkOiAiLGEsMCl9fX19KCksZS5leHBvcnRzPWF9LDk5Mjg6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTAwOCksYT1yKDgzNjApLGk9cig5NzA4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIscyxvKXt0aGlzLnJlc2V0PWZ1bmN0aW9uKGUsdCxyLG4pe2kuaW5pdGlhbGl6ZShlLHQscixuLG8pLGEuaW5pdGlhbGl6ZShlLHQscixuLG8pfSx0aGlzLnJlc2V0KGUsdCxyLHMpLHRoaXMuc2V0VGl0bGU9ZnVuY3Rpb24oZSx0KXtyLmhhc01haW5UaXRsZT9vLmFkZFN1YnRpdGxlKGUse3N0YXJ0Q2hhcjpyLmlDaGFyLGVuZENoYXI6ci5pQ2hhcit0KzJ9KTooby5hZGRNZXRhVGV4dCgidGl0bGUiLGUse3N0YXJ0Q2hhcjpyLmlDaGFyLGVuZENoYXI6ci5pQ2hhcit0KzJ9KSxyLmhhc01haW5UaXRsZT0hMCl9LHRoaXMuc2V0TWV0ZXI9ZnVuY3Rpb24obil7aWYoIkMiPT09KG49ZS5zdHJpcENvbW1lbnQobikpKXJldHVybiEwPT09ci5oYXZlbnRfc2V0X2xlbmd0aCYmKHIuZGVmYXVsdF9sZW5ndGg9LjEyNSxyLmhhdmVudF9zZXRfbGVuZ3RoPSExKSx7dHlwZToiY29tbW9uX3RpbWUifTtpZigiQ3wiPT09bilyZXR1cm4hMD09PXIuaGF2ZW50X3NldF9sZW5ndGgmJihyLmRlZmF1bHRfbGVuZ3RoPS4xMjUsci5oYXZlbnRfc2V0X2xlbmd0aD0hMSkse3R5cGU6ImN1dF90aW1lIn07aWYoIm8iPT09bilyZXR1cm4hMD09PXIuaGF2ZW50X3NldF9sZW5ndGgmJihyLmRlZmF1bHRfbGVuZ3RoPS4xMjUsci5oYXZlbnRfc2V0X2xlbmd0aD0hMSkse3R5cGU6InRlbXB1c19wZXJmZWN0dW0ifTtpZigiYyI9PT1uKXJldHVybiEwPT09ci5oYXZlbnRfc2V0X2xlbmd0aCYmKHIuZGVmYXVsdF9sZW5ndGg9LjEyNSxyLmhhdmVudF9zZXRfbGVuZ3RoPSExKSx7dHlwZToidGVtcHVzX2ltcGVyZmVjdHVtIn07aWYoIm8uIj09PW4pcmV0dXJuITA9PT1yLmhhdmVudF9zZXRfbGVuZ3RoJiYoci5kZWZhdWx0X2xlbmd0aD0uMTI1LHIuaGF2ZW50X3NldF9sZW5ndGg9ITEpLHt0eXBlOiJ0ZW1wdXNfcGVyZmVjdHVtX3Byb2xhdGlvIn07aWYoImMuIj09PW4pcmV0dXJuITA9PT1yLmhhdmVudF9zZXRfbGVuZ3RoJiYoci5kZWZhdWx0X2xlbmd0aD0uMTI1LHIuaGF2ZW50X3NldF9sZW5ndGg9ITEpLHt0eXBlOiJ0ZW1wdXNfaW1wZXJmZWN0dW1fcHJvbGF0aW8ifTtpZigwPT09bi5sZW5ndGh8fCJub25lIj09PW4udG9Mb3dlckNhc2UoKSlyZXR1cm4hMD09PXIuaGF2ZW50X3NldF9sZW5ndGgmJihyLmRlZmF1bHRfbGVuZ3RoPS4xMjUsci5oYXZlbnRfc2V0X2xlbmd0aD0hMSksbnVsbDt2YXIgYT1lLnRva2VuaXplKG4sMCxuLmxlbmd0aCk7dHJ5e3ZhciBpPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt2YXIgZT17dmFsdWU6MCxudW06IiJ9LHQ9YS5zaGlmdCgpO2ZvcigiKCI9PT10LnRva2VuJiYodD1hLnNoaWZ0KCkpOzspe2lmKCJudW1iZXIiIT09dC50eXBlKXRocm93IkV4cGVjdGVkIHRvcCBudW1iZXIgb2YgbWV0ZXIiO2lmKGUudmFsdWUrPXBhcnNlSW50KHQudG9rZW4pLGUubnVtKz10LnRva2VuLDA9PT1hLmxlbmd0aHx8Ii8iPT09YVswXS50b2tlbilyZXR1cm4gZTtpZigiKSI9PT0odD1hLnNoaWZ0KCkpLnRva2VuKXtpZigwPT09YS5sZW5ndGh8fCIvIj09PWFbMF0udG9rZW4pcmV0dXJuIGU7dGhyb3ciVW5leHBlY3RlZCBwYXJlbiBpbiBtZXRlciJ9aWYoIi4iIT09dC50b2tlbiYmIisiIT09dC50b2tlbil0aHJvdyJFeHBlY3RlZCB0b3AgbnVtYmVyIG9mIG1ldGVyIjtpZihlLm51bSs9dC50b2tlbiwwPT09YS5sZW5ndGgpdGhyb3ciRXhwZWN0ZWQgdG9wIG51bWJlciBvZiBtZXRlciI7dD1hLnNoaWZ0KCl9cmV0dXJuIGV9KCk7aWYoMD09PWEubGVuZ3RoKXJldHVybiBlO3ZhciB0PWEuc2hpZnQoKTtpZigiLyIhPT10LnRva2VuKXRocm93IkV4cGVjdGVkIHNsYXNoIGluIG1ldGVyIjtpZigibnVtYmVyIiE9PSh0PWEuc2hpZnQoKSkudHlwZSl0aHJvdyJFeHBlY3RlZCBib3R0b20gbnVtYmVyIG9mIG1ldGVyIjtyZXR1cm4gZS5kZW49dC50b2tlbixlLnZhbHVlPWUudmFsdWUvcGFyc2VJbnQoZS5kZW4pLGV9O2lmKDA9PT1hLmxlbmd0aCl0aHJvdyJFeHBlY3RlZCBtZXRlciBkZWZpbml0aW9uIGluIE06IGxpbmUiO2Zvcih2YXIgcz17dHlwZToic3BlY2lmaWVkIix2YWx1ZTpbXX0sbz0wOzspe3ZhciBjPWkoKTtvKz1jLnZhbHVlO3ZhciBsPXtudW06Yy5udW19O2lmKHZvaWQgMCE9PWMuZGVuJiYobC5kZW49Yy5kZW4pLHMudmFsdWUucHVzaChsKSwwPT09YS5sZW5ndGgpYnJlYWt9cmV0dXJuITA9PT1yLmhhdmVudF9zZXRfbGVuZ3RoJiYoci5kZWZhdWx0X2xlbmd0aD1vPC43NT8uMDYyNTouMTI1LHIuaGF2ZW50X3NldF9sZW5ndGg9ITEpLHN9Y2F0Y2goZSl7dChlLG4sMCl9cmV0dXJuIG51bGx9LHRoaXMuY2FsY1RlbXBvPWZ1bmN0aW9uKGUpe3ZhciB0PTEvNDtyLm1ldGVyJiYic3BlY2lmaWVkIj09PXIubWV0ZXIudHlwZT90PTEvcGFyc2VJbnQoci5tZXRlci52YWx1ZVswXS5kZW4pOnIub3JpZ01ldGVyJiYic3BlY2lmaWVkIj09PXIub3JpZ01ldGVyLnR5cGUmJih0PTEvcGFyc2VJbnQoci5vcmlnTWV0ZXIudmFsdWVbMF0uZGVuKSk7Zm9yKHZhciBuPTA7bjxlLmR1cmF0aW9uO24rKyllLmR1cmF0aW9uW25dPXQqZS5kdXJhdGlvbltuXTtyZXR1cm4gZX0sdGhpcy5yZXNvbHZlVGVtcG89ZnVuY3Rpb24oKXtyLnRlbXBvJiYodGhpcy5jYWxjVGVtcG8oci50ZW1wbykscy5tZXRhVGV4dC50ZW1wbz1yLnRlbXBvLGRlbGV0ZSByLnRlbXBvKX0sdGhpcy5hZGRVc2VyRGVmaW5pdGlvbj1mdW5jdGlvbihlLGEsaSl7dmFyIHM9ZS5pbmRleE9mKCI9IixhKTtpZigtMSE9PXMpe3ZhciBvPW4uc3RyaXAoZS5zdWJzdHJpbmcoYSxzKSksYz1uLnN0cmlwKGUuc3Vic3RyaW5nKHMrMSkpOzE9PT1vLmxlbmd0aD8tMSE9PSJISUpLTE1OT1BRUlNUVVZXWFloaWprbG1ub3BxcnN0dXZ3fiIuaW5kZXhPZihvKT8wIT09Yy5sZW5ndGg/KHZvaWQgMD09PXIubWFjcm9zJiYoci5tYWNyb3M9e30pLHIubWFjcm9zW29dPWMpOnQoIk1pc3NpbmcgbWFjcm8gZGVmaW5pdGlvbiIsZSxhKTp0KCJNYWNybyBkZWZpbml0aW9ucyBtdXN0IGJlIEgtWSwgaC13LCBvciB0aWxkZSIsZSxhKTp0KCJNYWNybyBkZWZpbml0aW9ucyBjYW4gb25seSBiZSBvbmUgY2hhcmFjdGVyIixlLGEpfWVsc2UgdCgiTmVlZCBhbiA9IGluIGEgbWFjcm8gZGVmaW5pdGlvbiIsZSxhKX0sdGhpcy5zZXREZWZhdWx0TGVuZ3RoPWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1lLnN1YnN0cmluZyh0LG4pLnJlcGxhY2UoLyAvZywiIikuc3BsaXQoIi8iKTtpZigyPT09YS5sZW5ndGgpe3ZhciBpPXBhcnNlSW50KGFbMF0pLHM9cGFyc2VJbnQoYVsxXSk7cz4wJiYoci5kZWZhdWx0X2xlbmd0aD1pL3Msci5oYXZlbnRfc2V0X2xlbmd0aD0hMSl9ZWxzZSAxPT09YS5sZW5ndGgmJiIxIj09PWFbMF0mJihyLmRlZmF1bHRfbGVuZ3RoPTEsci5oYXZlbnRfc2V0X2xlbmd0aD0hMSl9O3ZhciBjPXtsYXJnaGlzc2ltbzoyMCxhZGFnaXNzaW1vOjI0LHNvc3RlbnV0bzoyOCxncmF2ZTozMixsYXJnbzo0MCxsZW50bzo1MCxsYXJnaGV0dG86NjAsYWRhZ2lvOjY4LGFkYWdpZXR0bzo3NCxhbmRhbnRlOjgwLGFuZGFudGlubzo4OCwibWFyY2lhIG1vZGVyYXRvIjo4NCwiYW5kYW50ZSBtb2RlcmF0byI6MTAwLG1vZGVyYXRvOjExMixhbGxlZ3JldHRvOjExNiwiYWxsZWdybyBtb2RlcmF0byI6MTIwLGFsbGVncm86MTI2LGFuaW1hdG86MTMyLGFnaXRhdG86MTQwLHZlbG9jZToxNDgsIm1vc3NvIHZpdm8iOjE1Nix2aXZhY2U6MTY0LHZpdmFjaXNzaW1vOjE3MixhbGxlZ3Jpc3NpbW86MTc2LHByZXN0bzoxODQscHJlc3Rpc3NpbW86MjEwfTt0aGlzLnNldFRlbXBvPWZ1bmN0aW9uKG4sYSxpLHMpe3RyeXt2YXIgbz1lLnRva2VuaXplKG4sYSxpKTtpZigwPT09by5sZW5ndGgpdGhyb3ciTWlzc2luZyBwYXJhbWV0ZXIgaW4gUTogZmllbGQiO3ZhciBsPXtzdGFydENoYXI6cythLTIsZW5kQ2hhcjpzK2l9LGg9ITAsdT1vLnNoaWZ0KCk7aWYoInF1b3RlIj09PXUudHlwZSYmKGwucHJlU3RyaW5nPXUudG9rZW4sdT1vLnNoaWZ0KCksMD09PW8ubGVuZ3RoKSlyZXR1cm4gY1tsLnByZVN0cmluZy50b0xvd2VyQ2FzZSgpXSYmKGwuYnBtPWNbbC5wcmVTdHJpbmcudG9Mb3dlckNhc2UoKV0sbC5zdXBwcmVzc0JwbT0hMCkse3R5cGU6ImltbWVkaWF0ZSIsdGVtcG86bH07aWYoImFscGhhIj09PXUudHlwZSYmIkMiPT09dS50b2tlbil7aWYoMD09PW8ubGVuZ3RoKXRocm93Ik1pc3NpbmcgdGVtcG8gYWZ0ZXIgQyBpbiBROiBmaWVsZCI7aWYoInB1bmN0Ij09PSh1PW8uc2hpZnQoKSkudHlwZSYmIj0iPT09dS50b2tlbil7aWYoMD09PW8ubGVuZ3RoKXRocm93Ik1pc3NpbmcgdGVtcG8gYWZ0ZXIgPSBpbiBROiBmaWVsZCI7aWYoIm51bWJlciIhPT0odT1vLnNoaWZ0KCkpLnR5cGUpdGhyb3ciRXhwZWN0ZWQgbnVtYmVyIGFmdGVyID0gaW4gUTogZmllbGQiO2wuZHVyYXRpb249WzFdLGwuYnBtPXBhcnNlSW50KHUudG9rZW4pfWVsc2V7aWYoIm51bWJlciIhPT11LnR5cGUpdGhyb3ciRXhwZWN0ZWQgbnVtYmVyIG9yIGVxdWFsIGFmdGVyIEMgaW4gUTogZmllbGQiO2lmKGwuZHVyYXRpb249W3BhcnNlSW50KHUudG9rZW4pXSwwPT09by5sZW5ndGgpdGhyb3ciTWlzc2luZyA9IGFmdGVyIGR1cmF0aW9uIGluIFE6IGZpZWxkIjtpZigicHVuY3QiIT09KHU9by5zaGlmdCgpKS50eXBlfHwiPSIhPT11LnRva2VuKXRocm93IkV4cGVjdGVkID0gYWZ0ZXIgZHVyYXRpb24gaW4gUTogZmllbGQiO2lmKDA9PT1vLmxlbmd0aCl0aHJvdyJNaXNzaW5nIHRlbXBvIGFmdGVyID0gaW4gUTogZmllbGQiO2lmKCJudW1iZXIiIT09KHU9by5zaGlmdCgpKS50eXBlKXRocm93IkV4cGVjdGVkIG51bWJlciBhZnRlciA9IGluIFE6IGZpZWxkIjtsLmJwbT1wYXJzZUludCh1LnRva2VuKX19ZWxzZXtpZigibnVtYmVyIiE9PXUudHlwZSl0aHJvdyJVbmtub3duIHZhbHVlIGluIFE6IGZpZWxkIjt2YXIgZD1wYXJzZUludCh1LnRva2VuKTtpZigwPT09by5sZW5ndGh8fCJxdW90ZSI9PT1vWzBdLnR5cGUpbC5kdXJhdGlvbj1bMV0sbC5icG09ZDtlbHNle2lmKGg9ITEsInB1bmN0IiE9PSh1PW8uc2hpZnQoKSkudHlwZSYmIi8iIT09dS50b2tlbil0aHJvdyJFeHBlY3RlZCBmcmFjdGlvbiBpbiBROiBmaWVsZCI7aWYoIm51bWJlciIhPT0odT1vLnNoaWZ0KCkpLnR5cGUpdGhyb3ciRXhwZWN0ZWQgZnJhY3Rpb24gaW4gUTogZmllbGQiO3ZhciBmPXBhcnNlSW50KHUudG9rZW4pO2ZvcihsLmR1cmF0aW9uPVtkL2ZdO28ubGVuZ3RoPjAmJiI9IiE9PW9bMF0udG9rZW4mJiJxdW90ZSIhPT1vWzBdLnR5cGU7KXtpZigibnVtYmVyIiE9PSh1PW8uc2hpZnQoKSkudHlwZSl0aHJvdyJFeHBlY3RlZCBmcmFjdGlvbiBpbiBROiBmaWVsZCI7aWYoZD1wYXJzZUludCh1LnRva2VuKSwicHVuY3QiIT09KHU9by5zaGlmdCgpKS50eXBlJiYiLyIhPT11LnRva2VuKXRocm93IkV4cGVjdGVkIGZyYWN0aW9uIGluIFE6IGZpZWxkIjtpZigibnVtYmVyIiE9PSh1PW8uc2hpZnQoKSkudHlwZSl0aHJvdyJFeHBlY3RlZCBmcmFjdGlvbiBpbiBROiBmaWVsZCI7Zj1wYXJzZUludCh1LnRva2VuKSxsLmR1cmF0aW9uLnB1c2goZC9mKX1pZigicHVuY3QiIT09KHU9by5zaGlmdCgpKS50eXBlJiYiPSIhPT11LnRva2VuKXRocm93IkV4cGVjdGVkID0gaW4gUTogZmllbGQiO2lmKCJudW1iZXIiIT09KHU9by5zaGlmdCgpKS50eXBlKXRocm93IkV4cGVjdGVkIHRlbXBvIGluIFE6IGZpZWxkIjtsLmJwbT1wYXJzZUludCh1LnRva2VuKX19aWYoMCE9PW8ubGVuZ3RoJiYoInF1b3RlIj09PSh1PW8uc2hpZnQoKSkudHlwZSYmKGwucG9zdFN0cmluZz11LnRva2VuLHU9by5zaGlmdCgpKSwwIT09by5sZW5ndGgpKXRocm93IlVuZXhwZWN0ZWQgc3RyaW5nIGF0IGVuZCBvZiBROiBmaWVsZCI7cmV0dXJuITE9PT1yLnByaW50VGVtcG8mJihsLnN1cHByZXNzPSEwKSx7dHlwZTpoPyJkZWxheVNldCI6ImltbWVkaWF0ZSIsdGVtcG86bH19Y2F0Y2goZSl7cmV0dXJuIHQoZSxuLGEpLHt0eXBlOiJub25lIn19fSx0aGlzLmxldHRlcl90b19pbmxpbmVfaGVhZGVyPWZ1bmN0aW9uKG4sYyxsKXt2YXIgaD0hMSx1PWUuZWF0V2hpdGVTcGFjZShuLGMpO2lmKGMrPXUsbi5sZW5ndGg+PWMrNSYmIlsiPT09bltjXSYmIjoiPT09bltjKzJdKXt2YXIgZD1uLmluZGV4T2YoIl0iLGMpLGY9ci5pQ2hhcitjLHA9ci5pQ2hhcitkKzE7c3dpdGNoKG4uc3Vic3RyaW5nKGMsYyszKSl7Y2FzZSJbSToiOnZhciBtPWEuYWRkRGlyZWN0aXZlKG4uc3Vic3RyaW5nKGMrMyxkKSk7cmV0dXJuIG0mJnQobSxuLGMpLFtkLWMrMSt1XTtjYXNlIltNOiI6dmFyIGc9dGhpcy5zZXRNZXRlcihuLnN1YnN0cmluZyhjKzMsZCkpO3JldHVybiBvLmhhc0JlZ2luTXVzaWMoKSYmZz9vLmFwcGVuZFN0YXJ0aW5nRWxlbWVudCgibWV0ZXIiLGYscCxnKTpyLm1ldGVyPWcsW2QtYysxK3VdO2Nhc2UiW0s6Ijp2YXIgdj1pLnBhcnNlS2V5KG4uc3Vic3RyaW5nKGMrMyxkKSwhMCk7cmV0dXJuIHYuZm91bmRDbGVmJiZvLmhhc0JlZ2luTXVzaWMoKSYmby5hcHBlbmRTdGFydGluZ0VsZW1lbnQoImNsZWYiLGYscCxyLmNsZWYpLHYuZm91bmRLZXkmJm8uaGFzQmVnaW5NdXNpYygpJiZvLmFwcGVuZFN0YXJ0aW5nRWxlbWVudCgia2V5IixmLHAsaS5maXhLZXkoci5jbGVmLHIua2V5KSksW2QtYysxK3VdO2Nhc2UiW1A6Ijp2YXIgYj1hLnBhcnNlRm9udENoYW5nZUxpbmUobi5zdWJzdHJpbmcoYyszLGQpKTtyZXR1cm4gbHx8cy5saW5lcy5sZW5ndGg8PXMubGluZU51bT9yLnBhcnRGb3JOZXh0TGluZT17dGl0bGU6YixzdGFydENoYXI6ZixlbmRDaGFyOnB9Om8uYXBwZW5kRWxlbWVudCgicGFydCIsZixwLHt0aXRsZTpifSksW2QtYysxK3VdO2Nhc2UiW0w6IjpyZXR1cm4gdGhpcy5zZXREZWZhdWx0TGVuZ3RoKG4sYyszLGQpLFtkLWMrMSt1XTtjYXNlIltROiI6aWYoZD4wKXt2YXIgeT10aGlzLnNldFRlbXBvKG4sYyszLGQsci5pQ2hhcik7cmV0dXJuImRlbGF5U2V0Ij09PXkudHlwZT9vLmhhc0JlZ2luTXVzaWMoKT9vLmFwcGVuZEVsZW1lbnQoInRlbXBvIixmLHAsdGhpcy5jYWxjVGVtcG8oeS50ZW1wbykpOnIudGVtcG9Gb3JOZXh0TGluZT1bInRlbXBvIixmLHAsdGhpcy5jYWxjVGVtcG8oeS50ZW1wbyldOiJpbW1lZGlhdGUiPT09eS50eXBlJiYoIWwmJm8uaGFzQmVnaW5NdXNpYygpP28uYXBwZW5kRWxlbWVudCgidGVtcG8iLGYscCx5LnRlbXBvKTpyLnRlbXBvRm9yTmV4dExpbmU9WyJ0ZW1wbyIsZixwLHkudGVtcG9dKSxbZC1jKzErdSxuW2MrMV0sbi5zdWJzdHJpbmcoYyszLGQpXX1icmVhaztjYXNlIltWOiI6aWYoZD4wKXJldHVybiBoPWkucGFyc2VWb2ljZShuLGMrMyxkKSxbZC1jKzErdSxuW2MrMV0sbi5zdWJzdHJpbmcoYyszLGQpLGhdO2JyZWFrO2Nhc2UiW3I6IjpyZXR1cm5bZC1jKzErdV19fXJldHVyblswXX0sdGhpcy5sZXR0ZXJfdG9fYm9keV9oZWFkZXI9ZnVuY3Rpb24oZSxzKXt2YXIgYz0hMTtpZihlLmxlbmd0aD49cyszKXN3aXRjaChlLnN1YnN0cmluZyhzLHMrMikpe2Nhc2UiSToiOnZhciBsPWEuYWRkRGlyZWN0aXZlKGUuc3Vic3RyaW5nKHMrMikpO3JldHVybiBsJiZ0KGwsZSxzKSxbZS5sZW5ndGhdO2Nhc2UiTToiOnZhciBoPXRoaXMuc2V0TWV0ZXIoZS5zdWJzdHJpbmcocysyKSk7cmV0dXJuIG8uaGFzQmVnaW5NdXNpYygpJiZoJiZvLmFwcGVuZFN0YXJ0aW5nRWxlbWVudCgibWV0ZXIiLHIuaUNoYXIrcyxyLmlDaGFyK2UubGVuZ3RoLGgpLFtlLmxlbmd0aF07Y2FzZSJLOiI6dmFyIHU9aS5wYXJzZUtleShlLnN1YnN0cmluZyhzKzIpLG8uaGFzQmVnaW5NdXNpYygpKTtyZXR1cm4gdS5mb3VuZENsZWYmJm8uaGFzQmVnaW5NdXNpYygpJiYhMSE9PXIua2V5d2FybiYmby5hcHBlbmRTdGFydGluZ0VsZW1lbnQoImNsZWYiLHIuaUNoYXIrcyxyLmlDaGFyK2UubGVuZ3RoLHIuY2xlZiksdS5mb3VuZEtleSYmby5oYXNCZWdpbk11c2ljKCkmJiExIT09ci5rZXl3YXJuJiZvLmFwcGVuZFN0YXJ0aW5nRWxlbWVudCgia2V5IixyLmlDaGFyK3Msci5pQ2hhcitlLmxlbmd0aCxpLmZpeEtleShyLmNsZWYsci5rZXkpKSxbZS5sZW5ndGhdO2Nhc2UiUDoiOnJldHVybiBvLmhhc0JlZ2luTXVzaWMoKSYmby5hcHBlbmRFbGVtZW50KCJwYXJ0IixyLmlDaGFyK3Msci5pQ2hhcitlLmxlbmd0aCx7dGl0bGU6ZS5zdWJzdHJpbmcocysyKX0pLFtlLmxlbmd0aF07Y2FzZSJMOiI6cmV0dXJuIHRoaXMuc2V0RGVmYXVsdExlbmd0aChlLHMrMixlLmxlbmd0aCksW2UubGVuZ3RoXTtjYXNlIlE6Ijp2YXIgZD1lLmluZGV4T2YoIhIiLHMrMik7LTE9PT1kJiYoZD1lLmxlbmd0aCk7dmFyIGY9dGhpcy5zZXRUZW1wbyhlLHMrMixkLHIuaUNoYXIpO3JldHVybiJkZWxheVNldCI9PT1mLnR5cGU/by5hcHBlbmRFbGVtZW50KCJ0ZW1wbyIsci5pQ2hhcitzLHIuaUNoYXIrZS5sZW5ndGgsdGhpcy5jYWxjVGVtcG8oZi50ZW1wbykpOiJpbW1lZGlhdGUiPT09Zi50eXBlJiZvLmFwcGVuZEVsZW1lbnQoInRlbXBvIixyLmlDaGFyK3Msci5pQ2hhcitlLmxlbmd0aCxmLnRlbXBvKSxbZCxlW3NdLG4uc3RyaXAoZS5zdWJzdHJpbmcocysyKSldO2Nhc2UiVjoiOnJldHVybiBjPWkucGFyc2VWb2ljZShlLHMrMixlLmxlbmd0aCksW2UubGVuZ3RoLGVbc10sbi5zdHJpcChlLnN1YnN0cmluZyhzKzIpKSxjXX1yZXR1cm5bMF19O3ZhciBsPXtBOiJhdXRob3IiLEI6ImJvb2siLEM6ImNvbXBvc2VyIixEOiJkaXNjb2dyYXBoeSIsRjoidXJsIixHOiJncm91cCIsSToiaW5zdHJ1Y3Rpb24iLE46Im5vdGVzIixPOiJvcmlnaW4iLFI6InJoeXRobSIsUzoic291cmNlIixXOiJ1bmFsaWduZWRXb3JkcyIsWjoidHJhbnNjcmlwdGlvbiJ9O3RoaXMucGFyc2VIZWFkZXI9ZnVuY3Rpb24obil7dmFyIGM9bFtuWzBdXSxoPW4ubGVuZ3RoLTIsdT1lLnRyYW5zbGF0ZVN0cmluZyhlLnN0cmlwQ29tbWVudChuLnN1YnN0cmluZygyKSkpO2lmKCJ1bmFsaWduZWRXb3JkcyI9PT1jfHwibm90ZXMiPT09YylvLmFkZE1ldGFUZXh0QXJyYXkoYyxhLnBhcnNlRm9udENoYW5nZUxpbmUodSkse3N0YXJ0Q2hhcjpyLmlDaGFyLGVuZENoYXI6ci5pQ2hhcituLmxlbmd0aH0pO2Vsc2UgaWYodm9pZCAwIT09YylvLmFkZE1ldGFUZXh0KGMsYS5wYXJzZUZvbnRDaGFuZ2VMaW5lKHUpLHtzdGFydENoYXI6ci5pQ2hhcixlbmRDaGFyOnIuaUNoYXIrbi5sZW5ndGh9KTtlbHNle3ZhciBkPXIuaUNoYXIsZj1kK24ubGVuZ3RoO3N3aXRjaChuWzBdKXtjYXNlIkgiOmZvcihvLmFkZE1ldGFUZXh0QXJyYXkoImhpc3RvcnkiLGEucGFyc2VGb250Q2hhbmdlTGluZSh1KSx7c3RhcnRDaGFyOnIuaUNoYXIsZW5kQ2hhcjpyLmlDaGFyK24ubGVuZ3RofSksbj1lLnBlZWtMaW5lKCk7biYmIjoiIT09blsxXTspZS5uZXh0TGluZSgpLG8uYWRkTWV0YVRleHRBcnJheSgiaGlzdG9yeSIsYS5wYXJzZUZvbnRDaGFuZ2VMaW5lKGUudHJhbnNsYXRlU3RyaW5nKGUuc3RyaXBDb21tZW50KG4pKSkse3N0YXJ0Q2hhcjpyLmlDaGFyLGVuZENoYXI6ci5pQ2hhcituLmxlbmd0aH0pLG49ZS5wZWVrTGluZSgpO2JyZWFrO2Nhc2UiSyI6dGhpcy5yZXNvbHZlVGVtcG8oKTt2YXIgcD1pLnBhcnNlS2V5KG4uc3Vic3RyaW5nKDIpLCExKTshci5pc19pbl9oZWFkZXImJm8uaGFzQmVnaW5NdXNpYygpJiYhMSE9PXIua2V5d2FybiYmKHAuZm91bmRDbGVmJiZvLmFwcGVuZFN0YXJ0aW5nRWxlbWVudCgiY2xlZiIsZCxmLHIuY2xlZikscC5mb3VuZEtleSYmby5hcHBlbmRTdGFydGluZ0VsZW1lbnQoImtleSIsZCxmLGkuZml4S2V5KHIuY2xlZixyLmtleSkpKSxyLmlzX2luX2hlYWRlcj0hMTticmVhaztjYXNlIkwiOnRoaXMuc2V0RGVmYXVsdExlbmd0aChuLDIsbi5sZW5ndGgpO2JyZWFrO2Nhc2UiTSI6ci5vcmlnTWV0ZXI9ci5tZXRlcj10aGlzLnNldE1ldGVyKG4uc3Vic3RyaW5nKDIpKTticmVhaztjYXNlIlAiOnIuaXNfaW5faGVhZGVyP28uYWRkTWV0YVRleHQoInBhcnRPcmRlciIsYS5wYXJzZUZvbnRDaGFuZ2VMaW5lKHUpLHtzdGFydENoYXI6ci5pQ2hhcixlbmRDaGFyOnIuaUNoYXIrbi5sZW5ndGh9KTpyLnBhcnRGb3JOZXh0TGluZT17dGl0bGU6dSxzdGFydENoYXI6ZCxlbmRDaGFyOmZ9O2JyZWFrO2Nhc2UiUSI6dmFyIG09dGhpcy5zZXRUZW1wbyhuLDIsbi5sZW5ndGgsci5pQ2hhcik7ImRlbGF5U2V0Ij09PW0udHlwZT9yLnRlbXBvPW0udGVtcG86ImltbWVkaWF0ZSI9PT1tLnR5cGUmJihzLm1ldGFUZXh0LnRlbXBvP3IudGVtcG9Gb3JOZXh0TGluZT1bInRlbXBvIixkLGYsbS50ZW1wb106cy5tZXRhVGV4dC50ZW1wbz1tLnRlbXBvKTticmVhaztjYXNlIlQiOnIudGl0bGVjYXBzJiYodT11LnRvVXBwZXJDYXNlKCkpLHRoaXMuc2V0VGl0bGUoYS5wYXJzZUZvbnRDaGFuZ2VMaW5lKGUudGhlUmV2ZXJzZXIodSkpLGgpO2JyZWFrO2Nhc2UiVSI6dGhpcy5hZGRVc2VyRGVmaW5pdGlvbihuLDIsbi5sZW5ndGgpO2JyZWFrO2Nhc2UiViI6aWYoaS5wYXJzZVZvaWNlKG4sMixuLmxlbmd0aCksIXIuaXNfaW5faGVhZGVyKXJldHVybntuZXdsaW5lOiEwfTticmVhaztjYXNlInMiOnJldHVybntzeW1ib2xzOiEwfTtjYXNlInciOnJldHVybnt3b3JkczohMH07Y2FzZSJYIjpicmVhaztjYXNlIkUiOmNhc2UibSI6dCgiSWdub3JlZCBoZWFkZXIiLG4sMCk7YnJlYWs7ZGVmYXVsdDpyZXR1cm57cmVndWxhcjohMH19fXJldHVybnt9fX19LDk3MDg6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoODM2MCksYT1yKDI4MjEpLGk9e307IWZ1bmN0aW9uKCl7dmFyIGUsdCxyLHM7aS5pbml0aWFsaXplPWZ1bmN0aW9uKG4sYSxpLG8sYyl7ZT1uLHQ9YSxyPWkscz1jfSxpLnN0YW5kYXJkS2V5PWZ1bmN0aW9uKGUsdCxuLGkpe3JldHVybiBhLmtleVNpZ25hdHVyZShyLGUsdCxuLGkpfTt2YXIgbz17dHJlYmxlOntjbGVmOiJ0cmVibGUiLHBpdGNoOjQsbWlkOjB9LCJ0cmVibGUrOCI6e2NsZWY6InRyZWJsZSs4IixwaXRjaDo0LG1pZDowfSwidHJlYmxlLTgiOntjbGVmOiJ0cmVibGUtOCIscGl0Y2g6NCxtaWQ6MH0sInRyZWJsZV44Ijp7Y2xlZjoidHJlYmxlKzgiLHBpdGNoOjQsbWlkOjB9LHRyZWJsZV84OntjbGVmOiJ0cmVibGUtOCIscGl0Y2g6NCxtaWQ6MH0sdHJlYmxlMTp7Y2xlZjoidHJlYmxlIixwaXRjaDoyLG1pZDoyfSx0cmVibGUyOntjbGVmOiJ0cmVibGUiLHBpdGNoOjQsbWlkOjB9LHRyZWJsZTM6e2NsZWY6InRyZWJsZSIscGl0Y2g6NixtaWQ6LTJ9LHRyZWJsZTQ6e2NsZWY6InRyZWJsZSIscGl0Y2g6OCxtaWQ6LTR9LHRyZWJsZTU6e2NsZWY6InRyZWJsZSIscGl0Y2g6MTAsbWlkOi02fSxwZXJjOntjbGVmOiJwZXJjIixwaXRjaDo2LG1pZDowfSxub25lOntjbGVmOiJub25lIixtaWQ6MH0sYmFzczp7Y2xlZjoiYmFzcyIscGl0Y2g6OCxtaWQ6LTEyfSwiYmFzcys4Ijp7Y2xlZjoiYmFzcys4IixwaXRjaDo4LG1pZDotMTJ9LCJiYXNzLTgiOntjbGVmOiJiYXNzLTgiLHBpdGNoOjgsbWlkOi0xMn0sImJhc3NeOCI6e2NsZWY6ImJhc3MrOCIscGl0Y2g6OCxtaWQ6LTEyfSxiYXNzXzg6e2NsZWY6ImJhc3MtOCIscGl0Y2g6OCxtaWQ6LTEyfSwiYmFzcysxNiI6e2NsZWY6ImJhc3MiLHBpdGNoOjgsbWlkOi0xMn0sImJhc3MtMTYiOntjbGVmOiJiYXNzIixwaXRjaDo4LG1pZDotMTJ9LCJiYXNzXjE2Ijp7Y2xlZjoiYmFzcyIscGl0Y2g6OCxtaWQ6LTEyfSxiYXNzXzE2OntjbGVmOiJiYXNzIixwaXRjaDo4LG1pZDotMTJ9LGJhc3MxOntjbGVmOiJiYXNzIixwaXRjaDoyLG1pZDotNn0sYmFzczI6e2NsZWY6ImJhc3MiLHBpdGNoOjQsbWlkOi04fSxiYXNzMzp7Y2xlZjoiYmFzcyIscGl0Y2g6NixtaWQ6LTEwfSxiYXNzNDp7Y2xlZjoiYmFzcyIscGl0Y2g6OCxtaWQ6LTEyfSxiYXNzNTp7Y2xlZjoiYmFzcyIscGl0Y2g6MTAsbWlkOi0xNH0sdGVub3I6e2NsZWY6ImFsdG8iLHBpdGNoOjgsbWlkOi04fSx0ZW5vcjE6e2NsZWY6ImFsdG8iLHBpdGNoOjIsbWlkOi0yfSx0ZW5vcjI6e2NsZWY6ImFsdG8iLHBpdGNoOjQsbWlkOi00fSx0ZW5vcjM6e2NsZWY6ImFsdG8iLHBpdGNoOjYsbWlkOi02fSx0ZW5vcjQ6e2NsZWY6ImFsdG8iLHBpdGNoOjgsbWlkOi04fSx0ZW5vcjU6e2NsZWY6ImFsdG8iLHBpdGNoOjEwLG1pZDotMTB9LGFsdG86e2NsZWY6ImFsdG8iLHBpdGNoOjYsbWlkOi02fSxhbHRvMTp7Y2xlZjoiYWx0byIscGl0Y2g6MixtaWQ6LTJ9LGFsdG8yOntjbGVmOiJhbHRvIixwaXRjaDo0LG1pZDotNH0sYWx0bzM6e2NsZWY6ImFsdG8iLHBpdGNoOjYsbWlkOi02fSxhbHRvNDp7Y2xlZjoiYWx0byIscGl0Y2g6OCxtaWQ6LTh9LGFsdG81OntjbGVmOiJhbHRvIixwaXRjaDoxMCxtaWQ6LTEwfSwiYWx0bys4Ijp7Y2xlZjoiYWx0bys4IixwaXRjaDo2LG1pZDotNn0sImFsdG8tOCI6e2NsZWY6ImFsdG8tOCIscGl0Y2g6NixtaWQ6LTZ9LCJhbHRvXjgiOntjbGVmOiJhbHRvKzgiLHBpdGNoOjYsbWlkOi02fSxhbHRvXzg6e2NsZWY6ImFsdG8tOCIscGl0Y2g6NixtaWQ6LTZ9fSxjPWZ1bmN0aW9uKGUsdCl7dmFyIHI9b1tlXTtyZXR1cm4ocj9yLm1pZDowKSt0fTtpLmZpeENsZWY9ZnVuY3Rpb24oZSl7dmFyIHQ9b1tlLnR5cGVdO3QmJihlLmNsZWZQb3M9dC5waXRjaCxlLnR5cGU9dC5jbGVmKX0saS5kZWVwQ29weUtleT1mdW5jdGlvbihlKXt2YXIgdD17YWNjaWRlbnRhbHM6W10scm9vdDplLnJvb3QsYWNjOmUuYWNjLG1vZGU6ZS5tb2RlfTtyZXR1cm4gZS5hY2NpZGVudGFscy5mb3JFYWNoKChmdW5jdGlvbihlKXt0LmFjY2lkZW50YWxzLnB1c2goT2JqZWN0LmFzc2lnbih7fSxlKSl9KSksdH07dmFyIGw9e0E6NSxCOjYsQzowLEQ6MSxFOjIsRjozLEc6NCxhOjEyLGI6MTMsYzo3LGQ6OCxlOjksZjoxMCxnOjExfTtpLmFkZFBvc1RvS2V5PWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS52ZXJ0aWNhbFBvczt0LmFjY2lkZW50YWxzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWxbZS5ub3RlXTt0LT1yLGUudmVydGljYWxQb3M9dH0pKSx0LmltcGxpZWROYXR1cmFscyYmdC5pbXBsaWVkTmF0dXJhbHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9bFtlLm5vdGVdO3QtPXIsZS52ZXJ0aWNhbFBvcz10fSkpLHI8LTEwPyh0LmFjY2lkZW50YWxzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UudmVydGljYWxQb3MtPTcsKGUudmVydGljYWxQb3M+PTExfHwxMD09PWUudmVydGljYWxQb3MmJiJmbGF0Ij09PWUuYWNjKSYmKGUudmVydGljYWxQb3MtPTcpLCJBIj09PWUubm90ZSYmInNoYXJwIj09PWUuYWNjJiYoZS52ZXJ0aWNhbFBvcy09NyksIkciIT09ZS5ub3RlJiYiRiIhPT1lLm5vdGV8fCJmbGF0IiE9PWUuYWNjfHwoZS52ZXJ0aWNhbFBvcy09Nyl9KSksdC5pbXBsaWVkTmF0dXJhbHMmJnQuaW1wbGllZE5hdHVyYWxzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UudmVydGljYWxQb3MtPTcsKGUudmVydGljYWxQb3M+PTExfHwxMD09PWUudmVydGljYWxQb3MmJiJmbGF0Ij09PWUuYWNjKSYmKGUudmVydGljYWxQb3MtPTcpLCJBIj09PWUubm90ZSYmInNoYXJwIj09PWUuYWNjJiYoZS52ZXJ0aWNhbFBvcy09NyksIkciIT09ZS5ub3RlJiYiRiIhPT1lLm5vdGV8fCJmbGF0IiE9PWUuYWNjfHwoZS52ZXJ0aWNhbFBvcy09Nyl9KSkpOnI8LTQ/KHQuYWNjaWRlbnRhbHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS52ZXJ0aWNhbFBvcy09NywtOCE9PXJ8fCJmIiE9PWUubm90ZSYmImciIT09ZS5ub3RlfHwic2hhcnAiIT09ZS5hY2N8fChlLnZlcnRpY2FsUG9zLT03KX0pKSx0LmltcGxpZWROYXR1cmFscyYmdC5pbXBsaWVkTmF0dXJhbHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS52ZXJ0aWNhbFBvcy09NywtOCE9PXJ8fCJmIiE9PWUubm90ZSYmImciIT09ZS5ub3RlfHwic2hhcnAiIT09ZS5hY2N8fChlLnZlcnRpY2FsUG9zLT03KX0pKSk6cj49NyYmKHQuYWNjaWRlbnRhbHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS52ZXJ0aWNhbFBvcys9N30pKSx0LmltcGxpZWROYXR1cmFscyYmdC5pbXBsaWVkTmF0dXJhbHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS52ZXJ0aWNhbFBvcys9N30pKSl9LGkuZml4S2V5PWZ1bmN0aW9uKGUsdCl7dmFyIHI9T2JqZWN0LmFzc2lnbih7fSx0KTtyZXR1cm4gaS5hZGRQb3NUb0tleShlLHIpLHJ9O3ZhciBoPWZ1bmN0aW9uKGUpe3ZhciB0PTAscj1lW3QrK107Il4iIT09ciYmIl8iIT09cnx8KHI9ZVt0KytdKTt2YXIgbj1sW3JdO2Zvcih2b2lkIDA9PT1uJiYobj02KTt0PGUubGVuZ3RoO3QrKylpZigiLCI9PT1lW3RdKW4tPTc7ZWxzZXtpZigiJyIhPT1lW3RdKWJyZWFrO24rPTd9cmV0dXJue21pZDpuLTYsc3RyOmUuc3Vic3RyaW5nKHQpfX07aS5wYXJzZUtleT1mdW5jdGlvbihhLHMpezA9PT1hLmxlbmd0aCYmKGE9Im5vbmUiKTt2YXIgbz1lLnRva2VuaXplKGEsMCxhLmxlbmd0aCksbD17fTtpZigwPT09by5sZW5ndGgpcmV0dXJuIHQoIk11c3QgcGFzcyBpbiBrZXkgc2lnbmF0dXJlLiIsYSwwKSxsO3N3aXRjaChvWzBdLnRva2VuKXtjYXNlIkhQIjpuLmFkZERpcmVjdGl2ZSgiYmFncGlwZXMiKSxyLmtleT17cm9vdDoiSFAiLGFjY2lkZW50YWxzOltdLGFjYzoiIixtb2RlOiIifSxsLmZvdW5kS2V5PSEwLG8uc2hpZnQoKTticmVhaztjYXNlIkhwIjpuLmFkZERpcmVjdGl2ZSgiYmFncGlwZXMiKSxyLmtleT17cm9vdDoiSHAiLGFjY2lkZW50YWxzOlt7YWNjOiJuYXR1cmFsIixub3RlOiJnIn0se2FjYzoic2hhcnAiLG5vdGU6ImYifSx7YWNjOiJzaGFycCIsbm90ZToiYyJ9XSxhY2M6IiIsbW9kZToiIn0sbC5mb3VuZEtleT0hMCxvLnNoaWZ0KCk7YnJlYWs7Y2FzZSJub25lIjpyLmtleT17cm9vdDoibm9uZSIsYWNjaWRlbnRhbHM6W10sYWNjOiIiLG1vZGU6IiJ9LGwuZm91bmRLZXk9ITAsby5zaGlmdCgpO2JyZWFrO2RlZmF1bHQ6dmFyIGg9ZS5nZXRLZXlQaXRjaChvWzBdLnRva2VuKTtpZihoLmxlbj4wKXtsLmZvdW5kS2V5PSEwO3ZhciB1PSIiLGQ9IiI7b1swXS50b2tlbi5sZW5ndGg+MT9vWzBdLnRva2VuPW9bMF0udG9rZW4uc3Vic3RyaW5nKDEpOm8uc2hpZnQoKTt2YXIgZj1oLnRva2VuO2lmKG8ubGVuZ3RoPjApe3ZhciBwPWUuZ2V0U2hhcnBGbGF0KG9bMF0udG9rZW4pO2lmKHAubGVuPjAmJihvWzBdLnRva2VuLmxlbmd0aD4xP29bMF0udG9rZW49b1swXS50b2tlbi5zdWJzdHJpbmcoMSk6by5zaGlmdCgpLGYrPXAudG9rZW4sdT1wLnRva2VuKSxvLmxlbmd0aD4wKXt2YXIgbT1lLmdldE1vZGUob1swXS50b2tlbik7bS5sZW4+MCYmKG8uc2hpZnQoKSxmKz1tLnRva2VuLGQ9bS50b2tlbil9aWYodm9pZCAwPT09aS5zdGFuZGFyZEtleShmLGgudG9rZW4sdSwwKSlyZXR1cm4gdCgiVW5zdXBwb3J0ZWQga2V5IHNpZ25hdHVyZTogIitmLGEsMCksbH12YXIgZyx2PWkuZGVlcENvcHlLZXkoci5rZXkpLGI9IXMmJnIuZ2xvYmFsVHJhbnNwb3NlPy1yLmdsb2JhbFRyYW5zcG9zZTowO2lmKHMmJihnPXIuZ2xvYmFsVHJhbnNwb3NlT3JpZ0tleVNpZyksci5rZXk9aS5kZWVwQ29weUtleShpLnN0YW5kYXJkS2V5KGYsaC50b2tlbix1LGIpKSxzJiYoci5nbG9iYWxUcmFuc3Bvc2VPcmlnS2V5U2lnPWcpLHIua2V5Lm1vZGU9ZCx2JiYhMSE9PXIua2V5d2Fybil7Zm9yKHZhciB5LHg9MDt4PHIua2V5LmFjY2lkZW50YWxzLmxlbmd0aDt4KyspZm9yKHk9MDt5PHYuYWNjaWRlbnRhbHMubGVuZ3RoO3krKyl2LmFjY2lkZW50YWxzW3ldLm5vdGUmJnIua2V5LmFjY2lkZW50YWxzW3hdLm5vdGUudG9Mb3dlckNhc2UoKT09PXYuYWNjaWRlbnRhbHNbeV0ubm90ZS50b0xvd2VyQ2FzZSgpJiYodi5hY2NpZGVudGFsc1t5XS5ub3RlPW51bGwpO2Zvcih5PTA7eTx2LmFjY2lkZW50YWxzLmxlbmd0aDt5Kyspdi5hY2NpZGVudGFsc1t5XS5ub3RlJiYoci5rZXkuaW1wbGllZE5hdHVyYWxzfHwoci5rZXkuaW1wbGllZE5hdHVyYWxzPVtdKSxyLmtleS5pbXBsaWVkTmF0dXJhbHMucHVzaCh7YWNjOiJuYXR1cmFsIixub3RlOnYuYWNjaWRlbnRhbHNbeV0ubm90ZX0pKX19fWlmKDA9PT1vLmxlbmd0aClyZXR1cm4gbDtpZigiZXhwIj09PW9bMF0udG9rZW4mJm8uc2hpZnQoKSwwPT09by5sZW5ndGgpcmV0dXJuIGw7aWYoIm9jdCI9PT1vWzBdLnRva2VuJiZvLnNoaWZ0KCksMD09PW8ubGVuZ3RoKXJldHVybiBsO3ZhciBrLHc9ZS5nZXRLZXlBY2NpZGVudGFsczIobyk7aWYody53YXJuJiZ0KHcud2FybixhLDApLHcuYWNjcyl7bC5mb3VuZEtleXx8KGwuZm91bmRLZXk9ITAsci5rZXk9e3Jvb3Q6Im5vbmUiLGFjYzoiIixtb2RlOiIiLGFjY2lkZW50YWxzOltdfSksZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspImIiPT09ZVt0XS5ub3RlP2VbdF0ubm90ZT0iQiI6ImEiPT09ZVt0XS5ub3RlP2VbdF0ubm90ZT0iQSI6IkYiPT09ZVt0XS5ub3RlP2VbdF0ubm90ZT0iZiI6IkUiPT09ZVt0XS5ub3RlP2VbdF0ubm90ZT0iZSI6IkQiPT09ZVt0XS5ub3RlP2VbdF0ubm90ZT0iZCI6IkMiPT09ZVt0XS5ub3RlP2VbdF0ubm90ZT0iYyI6IkciPT09ZVt0XS5ub3RlJiYic2hhcnAiPT09ZVt0XS5hY2M/ZVt0XS5ub3RlPSJnIjoiZyI9PT1lW3RdLm5vdGUmJiJmbGF0Ij09PWVbdF0uYWNjJiYoZVt0XS5ub3RlPSJHIil9KHcuYWNjcyk7Zm9yKHZhciBDPTA7Qzx3LmFjY3MubGVuZ3RoO0MrKyl7Zm9yKHZhciBUPSExLFM9MDtTPHIua2V5LmFjY2lkZW50YWxzLmxlbmd0aCYmIVQ7UysrKXIua2V5LmFjY2lkZW50YWxzW1NdLm5vdGU9PT13LmFjY3NbQ10ubm90ZSYmKFQ9ITAsci5rZXkuYWNjaWRlbnRhbHNbU10uYWNjIT09dy5hY2NzW0NdLmFjYyYmKHIua2V5LmFjY2lkZW50YWxzW1NdLmFjYz13LmFjY3NbQ10uYWNjLHIua2V5LmV4cGxpY2l0QWNjaWRlbnRhbHN8fChyLmtleS5leHBsaWNpdEFjY2lkZW50YWxzPVtdKSxyLmtleS5leHBsaWNpdEFjY2lkZW50YWxzLnB1c2gody5hY2NzW0NdKSkpO2lmKCFUJiYoci5rZXkuZXhwbGljaXRBY2NpZGVudGFsc3x8KHIua2V5LmV4cGxpY2l0QWNjaWRlbnRhbHM9W10pLHIua2V5LmV4cGxpY2l0QWNjaWRlbnRhbHMucHVzaCh3LmFjY3NbQ10pLHIua2V5LmFjY2lkZW50YWxzLnB1c2gody5hY2NzW0NdKSxyLmtleS5pbXBsaWVkTmF0dXJhbHMpKWZvcih2YXIgXz0wO188ci5rZXkuaW1wbGllZE5hdHVyYWxzLmxlbmd0aDtfKyspci5rZXkuaW1wbGllZE5hdHVyYWxzW19dLm5vdGU9PT13LmFjY3NbQ10ubm90ZSYmci5rZXkuaW1wbGllZE5hdHVyYWxzLnNwbGljZShfLDEpfX1mb3IoO28ubGVuZ3RoPjA7KXN3aXRjaChvWzBdLnRva2VuKXtjYXNlIm0iOmNhc2UibWlkZGxlIjppZihvLnNoaWZ0KCksMD09PW8ubGVuZ3RoKXJldHVybiB0KCJFeHBlY3RlZCA9IGFmdGVyIG1pZGRsZSIsYSwwKSxsO2lmKCI9IiE9PShrPW8uc2hpZnQoKSkudG9rZW4pe3QoIkV4cGVjdGVkID0gYWZ0ZXIgbWlkZGxlIixhLGsuc3RhcnQpO2JyZWFrfWlmKDA9PT1vLmxlbmd0aClyZXR1cm4gdCgiRXhwZWN0ZWQgcGFyYW1ldGVyIGFmdGVyIG1pZGRsZT0iLGEsMCksbDt2YXIgRT1lLmdldFBpdGNoRnJvbVRva2VucyhvKTtFLndhcm4mJnQoRS53YXJuLGEsMCksRS5wb3NpdGlvbiYmKHIuY2xlZi52ZXJ0aWNhbFBvcz1FLnBvc2l0aW9uLTYpO2JyZWFrO2Nhc2UidHJhbnNwb3NlIjppZihvLnNoaWZ0KCksMD09PW8ubGVuZ3RoKXJldHVybiB0KCJFeHBlY3RlZCA9IGFmdGVyIHRyYW5zcG9zZSIsYSwwKSxsO2lmKCI9IiE9PShrPW8uc2hpZnQoKSkudG9rZW4pe3QoIkV4cGVjdGVkID0gYWZ0ZXIgdHJhbnNwb3NlIixhLGsuc3RhcnQpO2JyZWFrfWlmKDA9PT1vLmxlbmd0aClyZXR1cm4gdCgiRXhwZWN0ZWQgcGFyYW1ldGVyIGFmdGVyIHRyYW5zcG9zZT0iLGEsMCksbDtpZigibnVtYmVyIiE9PW9bMF0udHlwZSl7dCgiRXhwZWN0ZWQgbnVtYmVyIGFmdGVyIHRyYW5zcG9zZSIsYSxvWzBdLnN0YXJ0KTticmVha31yLmNsZWYudHJhbnNwb3NlPW9bMF0uaW50dCxvLnNoaWZ0KCk7YnJlYWs7Y2FzZSJzdGFmZmxpbmVzIjppZihvLnNoaWZ0KCksMD09PW8ubGVuZ3RoKXJldHVybiB0KCJFeHBlY3RlZCA9IGFmdGVyIHN0YWZmbGluZXMiLGEsMCksbDtpZigiPSIhPT0oaz1vLnNoaWZ0KCkpLnRva2VuKXt0KCJFeHBlY3RlZCA9IGFmdGVyIHN0YWZmbGluZXMiLGEsay5zdGFydCk7YnJlYWt9aWYoMD09PW8ubGVuZ3RoKXJldHVybiB0KCJFeHBlY3RlZCBwYXJhbWV0ZXIgYWZ0ZXIgc3RhZmZsaW5lcz0iLGEsMCksbDtpZigibnVtYmVyIiE9PW9bMF0udHlwZSl7dCgiRXhwZWN0ZWQgbnVtYmVyIGFmdGVyIHN0YWZmbGluZXMiLGEsb1swXS5zdGFydCk7YnJlYWt9ci5jbGVmLnN0YWZmbGluZXM9b1swXS5pbnR0LG8uc2hpZnQoKTticmVhaztjYXNlInN0YWZmc2NhbGUiOmlmKG8uc2hpZnQoKSwwPT09by5sZW5ndGgpcmV0dXJuIHQoIkV4cGVjdGVkID0gYWZ0ZXIgc3RhZmZzY2FsZSIsYSwwKSxsO2lmKCI9IiE9PShrPW8uc2hpZnQoKSkudG9rZW4pe3QoIkV4cGVjdGVkID0gYWZ0ZXIgc3RhZmZzY2FsZSIsYSxrLnN0YXJ0KTticmVha31pZigwPT09by5sZW5ndGgpcmV0dXJuIHQoIkV4cGVjdGVkIHBhcmFtZXRlciBhZnRlciBzdGFmZnNjYWxlPSIsYSwwKSxsO2lmKCJudW1iZXIiIT09b1swXS50eXBlKXt0KCJFeHBlY3RlZCBudW1iZXIgYWZ0ZXIgc3RhZmZzY2FsZSIsYSxvWzBdLnN0YXJ0KTticmVha31yLmNsZWYuc3RhZmZzY2FsZT1vWzBdLmZsb2F0dCxvLnNoaWZ0KCk7YnJlYWs7Y2FzZSJvY3RhdmUiOmlmKG8uc2hpZnQoKSwwPT09by5sZW5ndGgpcmV0dXJuIHQoIkV4cGVjdGVkID0gYWZ0ZXIgb2N0YXZlIixhLDApLGw7aWYoIj0iIT09KGs9by5zaGlmdCgpKS50b2tlbil7dCgiRXhwZWN0ZWQgPSBhZnRlciBvY3RhdmUiLGEsay5zdGFydCk7YnJlYWt9aWYoMD09PW8ubGVuZ3RoKXJldHVybiB0KCJFeHBlY3RlZCBwYXJhbWV0ZXIgYWZ0ZXIgb2N0YXZlPSIsYSwwKSxsO2lmKCJudW1iZXIiIT09b1swXS50eXBlKXt0KCJFeHBlY3RlZCBudW1iZXIgYWZ0ZXIgb2N0YXZlIixhLG9bMF0uc3RhcnQpO2JyZWFrfXIub2N0YXZlPW9bMF0uaW50dCxvLnNoaWZ0KCk7YnJlYWs7Y2FzZSJzdHlsZSI6aWYoby5zaGlmdCgpLDA9PT1vLmxlbmd0aClyZXR1cm4gdCgiRXhwZWN0ZWQgPSBhZnRlciBzdHlsZSIsYSwwKSxsO2lmKCI9IiE9PShrPW8uc2hpZnQoKSkudG9rZW4pe3QoIkV4cGVjdGVkID0gYWZ0ZXIgc3R5bGUiLGEsay5zdGFydCk7YnJlYWt9aWYoMD09PW8ubGVuZ3RoKXJldHVybiB0KCJFeHBlY3RlZCBwYXJhbWV0ZXIgYWZ0ZXIgc3R5bGU9IixhLDApLGw7c3dpdGNoKG9bMF0udG9rZW4pe2Nhc2Uibm9ybWFsIjpjYXNlImhhcm1vbmljIjpjYXNlInJoeXRobSI6Y2FzZSJ4IjpjYXNlInRyaWFuZ2xlIjpyLnN0eWxlPW9bMF0udG9rZW4sby5zaGlmdCgpO2JyZWFrO2RlZmF1bHQ6dCgiZXJyb3IgcGFyc2luZyBzdHlsZSBlbGVtZW50OiAiK29bMF0udG9rZW4sYSxvWzBdLnN0YXJ0KX1icmVhaztjYXNlImNsZWYiOmlmKG8uc2hpZnQoKSwwPT09by5sZW5ndGgpcmV0dXJuIHQoIkV4cGVjdGVkID0gYWZ0ZXIgY2xlZiIsYSwwKSxsO2lmKCI9IiE9PShrPW8uc2hpZnQoKSkudG9rZW4pe3QoIkV4cGVjdGVkID0gYWZ0ZXIgY2xlZiIsYSxrLnN0YXJ0KTticmVha31pZigwPT09by5sZW5ndGgpcmV0dXJuIHQoIkV4cGVjdGVkIHBhcmFtZXRlciBhZnRlciBjbGVmPSIsYSwwKSxsO2Nhc2UidHJlYmxlIjpjYXNlImJhc3MiOmNhc2UiYWx0byI6Y2FzZSJ0ZW5vciI6Y2FzZSJwZXJjIjpjYXNlIm5vbmUiOnZhciBNPW8uc2hpZnQoKTtzd2l0Y2goTS50b2tlbil7Y2FzZSJ0cmVibGUiOmNhc2UidGVub3IiOmNhc2UiYWx0byI6Y2FzZSJiYXNzIjpjYXNlInBlcmMiOmNhc2Uibm9uZSI6YnJlYWs7Y2FzZSJDIjpjYXNlImMiOk0udG9rZW49ImFsdG8iO2JyZWFrO2Nhc2UiRiI6Y2FzZSJmIjpNLnRva2VuPSJiYXNzIjticmVhaztjYXNlIkciOmNhc2UiZyI6TS50b2tlbj0idHJlYmxlIjticmVhaztkZWZhdWx0OnQoIkV4cGVjdGVkIGNsZWYgbmFtZS4gRm91bmQgIitNLnRva2VuLGEsTS5zdGFydCl9by5sZW5ndGg+MCYmIm51bWJlciI9PT1vWzBdLnR5cGUmJihNLnRva2VuKz1vWzBdLnRva2VuLG8uc2hpZnQoKSksby5sZW5ndGg+MSYmKCItIj09PW9bMF0udG9rZW58fCIrIj09PW9bMF0udG9rZW58fCJeIj09PW9bMF0udG9rZW58fCJfIj09PW9bMF0udG9rZW4pJiYiOCI9PT1vWzFdLnRva2VuJiYoTS50b2tlbis9b1swXS50b2tlbitvWzFdLnRva2VuLG8uc2hpZnQoKSxvLnNoaWZ0KCkpLHIuY2xlZj17dHlwZTpNLnRva2VuLHZlcnRpY2FsUG9zOmMoTS50b2tlbiwwKX0sci5jdXJyZW50Vm9pY2UmJnZvaWQgMCE9PXIuY3VycmVudFZvaWNlLnRyYW5zcG9zZSYmKHIuY2xlZi50cmFuc3Bvc2U9ci5jdXJyZW50Vm9pY2UudHJhbnNwb3NlKSxsLmZvdW5kQ2xlZj0hMDticmVhaztkZWZhdWx0OnQoIlVua25vd24gcGFyYW1ldGVyOiAiK29bMF0udG9rZW4sYSxvWzBdLnN0YXJ0KSxvLnNoaWZ0KCl9cmV0dXJuIGx9LGkucGFyc2VWb2ljZT1mdW5jdGlvbihuLGEsaSl7dmFyIG89ZS5nZXRNZWF0KG4sYSxpKSxsPW8uc3RhcnQsdT1vLmVuZCxkPWUuZ2V0VG9rZW4obixsLHUpO2lmKDAhPT1kLmxlbmd0aCl7dmFyIGY9ITE7dm9pZCAwPT09ci52b2ljZXNbZF0mJihyLnZvaWNlc1tkXT17fSxmPSEwLHIuc2NvcmVfaXNfcHJlc2VudCYmdCgiQ2FuJ3QgaGF2ZSBhbiB1bmtub3duIFY6IGlkIHdoZW4gdGhlICVzY29yZSBkaXJlY3RpdmUgaXMgcHJlc2VudCIsbixsKSksbCs9ZC5sZW5ndGgsbCs9ZS5lYXRXaGl0ZVNwYWNlKG4sbCk7Zm9yKHZhciBwPXtzdGFydFN0YWZmOmZ9LG09ZnVuY3Rpb24ocil7dmFyIGE9ZS5nZXRWb2ljZVRva2VuKG4sbCx1KTt2b2lkIDAhPT1hLndhcm4/dCgiRXhwZWN0ZWQgdmFsdWUgZm9yICIrcisiIGluIHZvaWNlOiAiK2Eud2FybixuLGwpOnZvaWQgMCE9PWEuZXJyP3QoIkV4cGVjdGVkIHZhbHVlIGZvciAiK3IrIiBpbiB2b2ljZTogIithLmVycixuLGwpOjA9PT1hLnRva2VuLmxlbmd0aCYmJyInIT09bltsXT90KCJFeHBlY3RlZCB2YWx1ZSBmb3IgIityKyIgaW4gdm9pY2UiLG4sbCk6cFtyXT1hLnRva2VuLGwrPWEubGVufSxnPWZ1bmN0aW9uKGEsaSxzKXt2YXIgbz1lLmdldFZvaWNlVG9rZW4obixsLHUpO3ZvaWQgMCE9PW8ud2Fybj90KCJFeHBlY3RlZCB2YWx1ZSBmb3IgIitpKyIgaW4gdm9pY2U6ICIrby53YXJuLG4sbCk6dm9pZCAwIT09by5lcnI/dCgiRXhwZWN0ZWQgdmFsdWUgZm9yICIraSsiIGluIHZvaWNlOiAiK28uZXJyLG4sbCk6MD09PW8udG9rZW4ubGVuZ3RoJiYnIichPT1uW2xdP3QoIkV4cGVjdGVkIHZhbHVlIGZvciAiK2krIiBpbiB2b2ljZSIsbixsKTooIm51bWJlciI9PT1zJiYoby50b2tlbj1wYXJzZUZsb2F0KG8udG9rZW4pKSxyLnZvaWNlc1thXVtpXT1vLnRva2VuKSxsKz1vLmxlbn0sdj1mdW5jdGlvbihyLGEpe3ZhciBpPWUuZ2V0Vm9pY2VUb2tlbihuLGwsdSk7aWYodm9pZCAwIT09aS53YXJuKXQoIkV4cGVjdGVkIHZhbHVlIGZvciAiK3IrIiBpbiB2b2ljZTogIitpLndhcm4sbixsKTtlbHNlIGlmKHZvaWQgMCE9PWkuZXJyKXQoIkV4cGVjdGVkIHZhbHVlIGZvciAiK3IrIiBpbiB2b2ljZTogIitpLmVycixuLGwpO2Vsc2V7aWYoMCE9PWkudG9rZW4ubGVuZ3RofHwnIic9PT1uW2xdKXJldHVybiJudW1iZXIiPT09YSYmKGkudG9rZW49cGFyc2VGbG9hdChpLnRva2VuKSksaS50b2tlbjt0KCJFeHBlY3RlZCB2YWx1ZSBmb3IgIityKyIgaW4gdm9pY2UiLG4sbCl9bCs9aS5sZW59LGI9ZnVuY3Rpb24oYSxpKXt2YXIgcz1lLmdldFZvaWNlVG9rZW4obixsLHUpO2lmKHZvaWQgMCE9PXMud2Fybil0KCJFeHBlY3RlZCBvbmUgb2YgKF9CLCBfRSwgX2IsIF9lKSBmb3IgIitpKyIgaW4gdm9pY2U6ICIrcy53YXJuLG4sbCk7ZWxzZSBpZigwPT09cy50b2tlbi5sZW5ndGgmJiciJyE9PW5bbF0pdCgiRXhwZWN0ZWQgb25lIG9mIChfQiwgX0UsIF9iLCBfZSkgZm9yICIraSsiIGluIHZvaWNlIixuLGwpO2Vsc2V7dmFyIG89e19COjIsX0U6OSxfYjotMTAsX2U6LTN9W3MudG9rZW5dO28/ci52b2ljZXNbYV1baV09bzp0KCJFeHBlY3RlZCBvbmUgb2YgKF9CLCBfRSwgX2IsIF9lKSBmb3IgIitpKyIgaW4gdm9pY2UiLG4sbCl9bCs9cy5sZW59O2w8dTspe3ZhciB5PWUuZ2V0Vm9pY2VUb2tlbihuLGwsdSk7aWYobCs9eS5sZW4seS53YXJuKXQoIkVycm9yIHBhcnNpbmcgdm9pY2U6ICIreS53YXJuLG4sbCk7ZWxzZXt2YXIgeD1udWxsO3N3aXRjaCh5LnRva2VuKXtjYXNlImNsZWYiOmNhc2UiY2wiOm0oImNsZWYiKTt2YXIgaz0wO3ZvaWQgMCE9PXAuY2xlZiYmKHAuY2xlZj1wLmNsZWYucmVwbGFjZSgvWycsXS9nLCIiKSwtMSE9PXAuY2xlZi5pbmRleE9mKCIrMTYiKSYmKGsrPTE0LHAuY2xlZj1wLmNsZWYucmVwbGFjZSgiKzE2IiwiIikpLHAudmVydGljYWxQb3M9YyhwLmNsZWYsaykpO2JyZWFrO2Nhc2UidHJlYmxlIjpjYXNlImJhc3MiOmNhc2UidGVub3IiOmNhc2UiYWx0byI6Y2FzZSJwZXJjIjpjYXNlIm5vbmUiOmNhc2UidHJlYmxlJyI6Y2FzZSJiYXNzJyI6Y2FzZSJ0ZW5vciciOmNhc2UiYWx0byciOmNhc2Uibm9uZSciOmNhc2UidHJlYmxlJyciOmNhc2UiYmFzcycnIjpjYXNlInRlbm9yJyciOmNhc2UiYWx0bycnIjpjYXNlIm5vbmUnJyI6Y2FzZSJ0cmVibGUsIjpjYXNlImJhc3MsIjpjYXNlInRlbm9yLCI6Y2FzZSJhbHRvLCI6Y2FzZSJub25lLCI6Y2FzZSJ0cmVibGUsLCI6Y2FzZSJiYXNzLCwiOmNhc2UidGVub3IsLCI6Y2FzZSJhbHRvLCwiOmNhc2Uibm9uZSwsIjpjYXNlInRyZWJsZSs4IjpjYXNlInRyZWJsZS04IjpjYXNlInRyZWJsZV44IjpjYXNlInRyZWJsZV84IjpjYXNlInRyZWJsZTEiOmNhc2UidHJlYmxlMiI6Y2FzZSJ0cmVibGUzIjpjYXNlInRyZWJsZTQiOmNhc2UidHJlYmxlNSI6Y2FzZSJiYXNzKzgiOmNhc2UiYmFzcy04IjpjYXNlImJhc3NeOCI6Y2FzZSJiYXNzXzgiOmNhc2UiYmFzcysxNiI6Y2FzZSJiYXNzLTE2IjpjYXNlImJhc3NeMTYiOmNhc2UiYmFzc18xNiI6Y2FzZSJiYXNzMSI6Y2FzZSJiYXNzMiI6Y2FzZSJiYXNzMyI6Y2FzZSJiYXNzNCI6Y2FzZSJiYXNzNSI6Y2FzZSJ0ZW5vcjEiOmNhc2UidGVub3IyIjpjYXNlInRlbm9yMyI6Y2FzZSJ0ZW5vcjQiOmNhc2UidGVub3I1IjpjYXNlImFsdG8xIjpjYXNlImFsdG8yIjpjYXNlImFsdG8zIjpjYXNlImFsdG80IjpjYXNlImFsdG81IjpjYXNlImFsdG8rOCI6Y2FzZSJhbHRvLTgiOmNhc2UiYWx0b144IjpjYXNlImFsdG9fOCI6cC5jbGVmPXkudG9rZW4ucmVwbGFjZSgvWycsXS9nLCIiKSxwLnZlcnRpY2FsUG9zPWMocC5jbGVmLDApLHIudm9pY2VzW2RdLmNsZWY9eS50b2tlbjticmVhaztjYXNlInN0YXZlcyI6Y2FzZSJzdGF2ZSI6Y2FzZSJzdHYiOm0oInN0YXZlcyIpO2JyZWFrO2Nhc2UiYnJhY2UiOmNhc2UiYnJjIjptKCJicmFjZSIpO2JyZWFrO2Nhc2UiYnJhY2tldCI6Y2FzZSJicmsiOm0oImJyYWNrZXQiKTticmVhaztjYXNlIm5hbWUiOmNhc2Uibm0iOm0oIm5hbWUiKTticmVhaztjYXNlInN1Ym5hbWUiOmNhc2Uic25hbWUiOmNhc2Uic25tIjptKCJzdWJuYW1lIik7YnJlYWs7Y2FzZSJtZXJnZSI6cC5zdGFydFN0YWZmPSExO2JyZWFrO2Nhc2Uic3RlbSI6Y2FzZSJzdGVtcyI6dm9pZCAwIT09KHg9ZS5nZXRWb2ljZVRva2VuKG4sbCx1KSkud2Fybj90KCJFeHBlY3RlZCB2YWx1ZSBmb3Igc3RlbXMgaW4gdm9pY2U6ICIreC53YXJuLG4sbCk6dm9pZCAwIT09eC5lcnI/dCgiRXhwZWN0ZWQgdmFsdWUgZm9yIHN0ZW1zIGluIHZvaWNlOiAiK3guZXJyLG4sbCk6InVwIj09PXgudG9rZW58fCJkb3duIj09PXgudG9rZW4/ci52b2ljZXNbZF0uc3RlbT14LnRva2VuOnQoIkV4cGVjdGVkIHVwIG9yIGRvd24gZm9yIHZvaWNlIHN0ZW0iLG4sbCksbCs9eC5sZW47YnJlYWs7Y2FzZSJ1cCI6Y2FzZSJkb3duIjpyLnZvaWNlc1tkXS5zdGVtPXkudG9rZW47YnJlYWs7Y2FzZSJtaWRkbGUiOmNhc2UibSI6bSgidmVydGljYWxQb3MiKSxwLnZlcnRpY2FsUG9zPWgocC52ZXJ0aWNhbFBvcykubWlkO2JyZWFrO2Nhc2UiZ2Nob3JkcyI6Y2FzZSJnY2giOnIudm9pY2VzW2RdLnN1cHByZXNzQ2hvcmRzPSEwLCIwIj09PSh4PWUuZ2V0Vm9pY2VUb2tlbihuLGwsdSkpLnRva2VuJiYobCs9eC5sZW4pO2JyZWFrO2Nhc2Uic3BhY2UiOmNhc2Uic3BjIjptKCJzcGFjaW5nIik7YnJlYWs7Y2FzZSJzY2FsZSI6ZyhkLCJzY2FsZSIsIm51bWJlciIpO2JyZWFrO2Nhc2Uic2NvcmUiOmIoZCwic2NvcmVUcmFuc3Bvc2UiKTticmVhaztjYXNlInRyYW5zcG9zZSI6ZyhkLCJ0cmFuc3Bvc2UiLCJudW1iZXIiKTticmVhaztjYXNlInN0YWZmbGluZXMiOmcoZCwic3RhZmZsaW5lcyIsIm51bWJlciIpO2JyZWFrO2Nhc2Uic3RhZmZzY2FsZSI6ZyhkLCJzdGFmZnNjYWxlIiwibnVtYmVyIik7YnJlYWs7Y2FzZSJvY3RhdmUiOmcoZCwib2N0YXZlIiwibnVtYmVyIik7YnJlYWs7Y2FzZSJ2b2x1bWUiOmcoZCwidm9sdW1lIiwibnVtYmVyIik7YnJlYWs7Y2FzZSJjdWUiOnZhciB3PXYoImN1ZSIsInN0cmluZyIpO3Iudm9pY2VzW2RdLnNjYWxlPSJvbiI9PT13Py42OjE7YnJlYWs7Y2FzZSJzdHlsZSI6dm9pZCAwIT09KHg9ZS5nZXRWb2ljZVRva2VuKG4sbCx1KSkud2Fybj90KCJFeHBlY3RlZCB2YWx1ZSBmb3Igc3R5bGUgaW4gdm9pY2U6ICIreC53YXJuLG4sbCk6dm9pZCAwIT09eC5lcnI/dCgiRXhwZWN0ZWQgdmFsdWUgZm9yIHN0eWxlIGluIHZvaWNlOiAiK3guZXJyLG4sbCk6Im5vcm1hbCI9PT14LnRva2VufHwiaGFybW9uaWMiPT09eC50b2tlbnx8InJoeXRobSI9PT14LnRva2VufHwieCI9PT14LnRva2VufHwidHJpYW5nbGUiPT09eC50b2tlbj9yLnZvaWNlc1tkXS5zdHlsZT14LnRva2VuOnQoIkV4cGVjdGVkIG9uZSBvZiBbbm9ybWFsLCBoYXJtb25pYywgcmh5dGhtLCB4LCB0cmlhbmdsZV0gZm9yIHZvaWNlIHN0eWxlIixuLGwpLGwrPXgubGVufX1sKz1lLmVhdFdoaXRlU3BhY2UobixsKX1pZigocC5zdGFydFN0YWZmfHwwPT09ci5zdGF2ZXMubGVuZ3RoKSYmKHIuc3RhdmVzLnB1c2goe2luZGV4OnIuc3RhdmVzLmxlbmd0aCxtZXRlcjpyLm9yaWdNZXRlcn0pLHIuc2NvcmVfaXNfcHJlc2VudHx8KHIuc3RhdmVzW3Iuc3RhdmVzLmxlbmd0aC0xXS5udW1Wb2ljZXM9MCkpLHZvaWQgMD09PXIudm9pY2VzW2RdLnN0YWZmTnVtKXtyLnZvaWNlc1tkXS5zdGFmZk51bT1yLnN0YXZlcy5sZW5ndGgtMTt2YXIgQz0wO2Zvcih2YXIgVCBpbiByLnZvaWNlcylyLnZvaWNlcy5oYXNPd25Qcm9wZXJ0eShUKSYmci52b2ljZXNbVF0uc3RhZmZOdW09PT1yLnZvaWNlc1tkXS5zdGFmZk51bSYmQysrO3Iudm9pY2VzW2RdLmluZGV4PUMtMX12YXIgUz1yLnN0YXZlc1tyLnZvaWNlc1tkXS5zdGFmZk51bV07cmV0dXJuIHIuc2NvcmVfaXNfcHJlc2VudHx8Uy5udW1Wb2ljZXMrKyxwLmNsZWYmJihTLmNsZWY9e3R5cGU6cC5jbGVmLHZlcnRpY2FsUG9zOnAudmVydGljYWxQb3N9KSxwLnNwYWNpbmcmJihTLnNwYWNpbmdfYmVsb3dfb2Zmc2V0PXAuc3BhY2luZykscC52ZXJ0aWNhbFBvcyYmKFMudmVydGljYWxQb3M9cC52ZXJ0aWNhbFBvcykscC5uYW1lJiYoUy5uYW1lP1MubmFtZS5wdXNoKHAubmFtZSk6Uy5uYW1lPVtwLm5hbWVdKSxwLnN1Ym5hbWUmJihTLnN1Ym5hbWU/Uy5zdWJuYW1lLnB1c2gocC5zdWJuYW1lKTpTLnN1Ym5hbWU9W3Auc3VibmFtZV0pLGZ1bmN0aW9uKGUpe3ZhciB0PXIudm9pY2VzW2VdO2lmKCFyLmN1cnJlbnRWb2ljZXx8ci5jdXJyZW50Vm9pY2UuaW5kZXghPT10LmluZGV4fHxyLmN1cnJlbnRWb2ljZS5zdGFmZk51bSE9PXQuc3RhZmZOdW0pcmV0dXJuIHIuY3VycmVudFZvaWNlPXQscy5zZXRDdXJyZW50Vm9pY2UodC5zdGFmZk51bSx0LmluZGV4LGUpfShkKX10KCJFeHBlY3RlZCBhIHZvaWNlIGlkIixuLGwpfX0oKSxlLmV4cG9ydHM9aX0sNjQ3NjpmdW5jdGlvbihlLHQscil7dmFyIG4sYSxpLHMsbyxjLGw9cig5NzA4KSxoPXIoMjgyMSksdT1yKDI1MzkpLGQ9dS5sZWdhbEFjY2VudHMsZj11LnZvbHVtZURlY29yYXRpb25zLHA9dS5keW5hbWljRGVjb3JhdGlvbnMsbT11LmFjY2VudFBzZXVkb255bXMsZz11LmFjY2VudER5bmFtaWNQc2V1ZG9ueW1zLHY9dS5ub25EZWNvcmF0aW9ucyxiPXUuZHVyYXRpb25zLHk9dS5waXRjaGVzLHg9dS5yZXN0cyxrPXUuYWNjTWFwLHc9dS50cmlwbGV0USxDPWZ1bmN0aW9uKGUsdCxyLGwsaCx1KXtuPWUsYT10LGk9cixzPWwsbz1oLGM9dSx0aGlzLmxpbmVDb250aW51YXRpb249ITF9LFQ9ZnVuY3Rpb24oZSx0LHIpe2lmKHZvaWQgMD09PWUuaW5UaWVbdF0pcmV0dXJuITE7dmFyIG49ZS5jdXJyZW50Vm9pY2U/MTAwKmUuY3VycmVudFZvaWNlLnN0YWZmTnVtK2UuY3VycmVudFZvaWNlLmluZGV4OjA7cmV0dXJuISghZS5pblRpZVt0XVtuXXx8dm9pZCAwPT09ci5waXRjaGVzJiYic3BhY2VyIj09PXIucmVzdC50eXBlKX0sUz17fTtDLnByb3RvdHlwZS5wYXJzZU11c2ljPWZ1bmN0aW9uKGUpe2MucmVzb2x2ZVRlbXBvKCksaS5pc19pbl9oZWFkZXI9ITE7Zm9yKHZhciB0PTAscj1pLmlDaGFyO24uaXNXaGl0ZVNwYWNlKGVbdF0pJiZ0PGUubGVuZ3RoOyl0Kys7aWYodCE9PWUubGVuZ3RoJiYiJSIhPT1lW3RdKXt2YXIgbD1pLnN0YXJ0X25ld19saW5lO3ZvaWQgMD09PWkuY29udGludWVhbGw/aS5zdGFydF9uZXdfbGluZT0hMDppLnN0YXJ0X25ld19saW5lPSExO3ZhciBoPTAsdT1jLmxldHRlcl90b19ib2R5X2hlYWRlcihlLHQpO3VbMF0+MCYmKHQrPXVbMF0sIlYiPT09dVsxXSYmdGhpcy5zdGFydE5ld0xpbmUoKSk7Zm9yKHZhciBkPTA7dDxlLmxlbmd0aDspe3ZhciBmPXQ7aWYoIiUiPT09ZVt0XSlicmVhazt2YXIgcD1jLmxldHRlcl90b19pbmxpbmVfaGVhZGVyKGUsdCxsKTtpZihwWzBdPjApdCs9cFswXSwiViI9PT1wWzFdJiYobD0hMCk7ZWxzZXt2YXIgbTtmb3IoKCFvLmhhc0JlZ2luTXVzaWMoKXx8bCYmIXRoaXMubGluZUNvbnRpbnVhdGlvbikmJih0aGlzLnN0YXJ0TmV3TGluZSgpLGw9ITEpOzspaWYoKG09bi5lYXRXaGl0ZVNwYWNlKGUsdCkpPjAmJih0Kz1tKSx0PjAmJiISIj09PWVbdC0xXSYmKG09Yy5sZXR0ZXJfdG9fYm9keV9oZWFkZXIoZSx0KSlbMF0+MCYmKCJWIj09PW1bMV0mJnRoaXMuc3RhcnROZXdMaW5lKCksdD1tWzBdLGkuc3RhcnRfbmV3X2xpbmU9ITEpLChtPVAoZSx0KSlbMF0+MCYmKHQrPW1bMF0pLChtPUUoZSx0KSlbMF0+MCl7Uy5jaG9yZHx8KFMuY2hvcmQ9W10pO3ZhciBnPW4udHJhbnNsYXRlU3RyaW5nKG1bMV0pO2c9Zy5yZXBsYWNlKC87L2csIlxuIik7Zm9yKHZhciB5PSExLHg9MDt4PFMuY2hvcmQubGVuZ3RoO3grKylTLmNob3JkW3hdLnBvc2l0aW9uPT09bVsyXSYmKHk9ITAsUy5jaG9yZFt4XS5uYW1lKz0iXG4iK2cpOyExPT09eSYmKG51bGw9PT1tWzJdJiZtWzNdP1MuY2hvcmQucHVzaCh7bmFtZTpnLHJlbF9wb3NpdGlvbjptWzNdfSk6Uy5jaG9yZC5wdXNoKHtuYW1lOmcscG9zaXRpb246bVsyXX0pKSx0Kz1tWzBdO3ZhciBrPW4uc2tpcFdoaXRlU3BhY2UoZS5zdWJzdHJpbmcodCkpO2s+MCYmKFMuZm9yY2VfZW5kX2JlYW1fbGFzdD0hMCksdCs9a31lbHNlIGlmKChtPS0xPT09di5pbmRleE9mKGVbdF0pP0IoZSx0KTpbMF0pWzBdPjApbnVsbD09PW1bMV0/dCsxPGUubGVuZ3RoJiZ0aGlzLnN0YXJ0TmV3TGluZSgpOm1bMV0ubGVuZ3RoPjAmJigwPT09bVsxXS5pbmRleE9mKCJzdHlsZT0iKT9TLnN0eWxlPW1bMV0uc3Vic3RyKDYpOih2b2lkIDA9PT1TLmRlY29yYXRpb24mJihTLmRlY29yYXRpb249W10pLCJiZWFtYnIxIj09PW1bMV0/Uy5iZWFtYnI9MToiYmVhbWJyMiI9PT1tWzFdP1MuYmVhbWJyPTI6Uy5kZWNvcmF0aW9uLnB1c2gobVsxXSkpKSx0Kz1tWzBdO2Vsc2V7aWYoISgobT1NKGUsdCkpWzBdPjApKWJyZWFrO1MuZ3JhY2Vub3Rlcz1tWzFdLHQrPW1bMF19aWYoKG09TChlLHQpKVswXT4wKXtkPTAsdm9pZCAwIT09Uy5ncmFjZW5vdGVzJiYoUy5yZXN0PXt0eXBlOiJzcGFjZXIifSxTLmR1cmF0aW9uPS4xMjUsaS5hZGRGb3JtYXR0aW5nT3B0aW9ucyhTLHMuZm9ybWF0dGluZywibm90ZSIpLG8uYXBwZW5kRWxlbWVudCgibm90ZSIscit0LHIrdCttWzBdLFMpLGkubWVhc3VyZU5vdEVtcHR5PSEwLFM9e30pO3ZhciB3PXt0eXBlOm1bMV19OzA9PT13LnR5cGUubGVuZ3RoP2EoIlVua25vd24gYmFyIHR5cGUiLGUsdCk6KGkuaW5FbmRpbmcmJiJiYXJfdGhpbiIhPT13LnR5cGUmJih3LmVuZEVuZGluZz0hMCxpLmluRW5kaW5nPSExKSxtWzJdJiYody5zdGFydEVuZGluZz1tWzJdLGkuaW5FbmRpbmcmJih3LmVuZEVuZGluZz0hMCksaS5pbkVuZGluZz0hMCwiYmFyX3JpZ2h0X3JlcGVhdCI9PT1tWzFdP2kucmVzdG9yZVN0YXJ0RW5kaW5nSG9sZE92ZXJzKCk6aS5kdXBsaWNhdGVTdGFydEVuZGluZ0hvbGRPdmVycygpKSx2b2lkIDAhPT1TLmRlY29yYXRpb24mJih3LmRlY29yYXRpb249Uy5kZWNvcmF0aW9uKSx2b2lkIDAhPT1TLmNob3JkJiYody5jaG9yZD1TLmNob3JkKSx3LnN0YXJ0RW5kaW5nJiZ2b2lkIDA9PT1pLmJhckZpcnN0RW5kaW5nTnVtP2kuYmFyRmlyc3RFbmRpbmdOdW09aS5jdXJyQmFyTnVtYmVyOncuc3RhcnRFbmRpbmcmJncuZW5kRW5kaW5nJiZpLmJhckZpcnN0RW5kaW5nTnVtP2kuY3VyckJhck51bWJlcj1pLmJhckZpcnN0RW5kaW5nTnVtOncuZW5kRW5kaW5nJiYoaS5iYXJGaXJzdEVuZGluZ051bT12b2lkIDApLCJiYXJfaW52aXNpYmxlIiE9PXcudHlwZSYmaS5tZWFzdXJlTm90RW1wdHkmJkYoKSYmKGkuY3VyckJhck51bWJlcisrLGkuYmFyTnVtYmVycyYmaS5jdXJyQmFyTnVtYmVyJWkuYmFyTnVtYmVycz09MCYmKHcuYmFyTnVtYmVyPWkuY3VyckJhck51bWJlcikpLGkuYWRkRm9ybWF0dGluZ09wdGlvbnMoUyxzLmZvcm1hdHRpbmcsImJhciIpLG8uYXBwZW5kRWxlbWVudCgiYmFyIixyK2Yscit0K21bMF0sdyksaS5tZWFzdXJlTm90RW1wdHk9ITEsUz17fSksdCs9bVswXX1lbHNlIGlmKCImIj09PWVbdF0pKG09QShlLHQpKVswXT4wJiYoby5hcHBlbmRFbGVtZW50KCJvdmVybGF5IixyLHIrMSx7fSksdCs9MSxkKyspO2Vsc2V7aWYoKG09TyhlLHQpKS5jb25zdW1lZD4wJiYodm9pZCAwIT09bS5zdGFydFNsdXImJihTLnN0YXJ0U2x1cj1tLnN0YXJ0U2x1ciksbS5kb3R0ZWRTbHVyJiYoUy5kb3R0ZWRTbHVyPSEwKSx2b2lkIDAhPT1tLnRyaXBsZXQmJihoPjA/YSgiQ2FuJ3QgbmVzdCB0cmlwbGV0cyIsZSx0KTooUy5zdGFydFRyaXBsZXQ9bS50cmlwbGV0LFMudHJpcGxldE11bHRpcGxpZXI9bS50cmlwbGV0US9tLnRyaXBsZXQsUy50cmlwbGV0Uj1tLm51bV9ub3RlcyxoPXZvaWQgMD09PW0ubnVtX25vdGVzP20udHJpcGxldDptLm51bV9ub3RlcykpLHQrPW0uY29uc3VtZWQpLCJbIj09PWVbdF0pe3QrKztmb3IodmFyIEM9bnVsbCxqPSExLEk9ITE7IUk7KXt2YXIgVj1CKGUsdCk7VlswXT4wJiYodCs9VlswXSk7dmFyIFk9eihlLHQse30sITEpO2lmKG51bGwhPT1ZJiZ2b2lkIDAhPT1ZLnBpdGNoKVZbMF0+MCYmMCE9PVZbMV0uaW5kZXhPZigic3R5bGU9IikmJih2b2lkIDA9PT1TLmRlY29yYXRpb24mJihTLmRlY29yYXRpb249W10pLFMuZGVjb3JhdGlvbi5wdXNoKFZbMV0pKSxZLmVuZF9iZWFtJiYoUy5lbmRfYmVhbT0hMCxkZWxldGUgWS5lbmRfYmVhbSksdm9pZCAwPT09Uy5waXRjaGVzPyhTLmR1cmF0aW9uPVkuZHVyYXRpb24sUy5waXRjaGVzPVtZXSk6Uy5waXRjaGVzLnB1c2goWSksZGVsZXRlIFkuZHVyYXRpb24sVlswXT4wJiYwPT09VlsxXS5pbmRleE9mKCJzdHlsZT0iKSYmKFMucGl0Y2hlc1tTLnBpdGNoZXMubGVuZ3RoLTFdLnN0eWxlPVZbMV0uc3Vic3RyKDYpKSxpLmluVGllQ2hvcmRbUy5waXRjaGVzLmxlbmd0aF0mJihZLmVuZFRpZT0hMCxpLmluVGllQ2hvcmRbUy5waXRjaGVzLmxlbmd0aF09dm9pZCAwKSxZLnN0YXJ0VGllJiYoaS5pblRpZUNob3JkW1MucGl0Y2hlcy5sZW5ndGhdPSEwKSx0PVkuZW5kQ2hhcixkZWxldGUgWS5lbmRDaGFyO2Vsc2UgaWYoIiAiPT09ZVt0XSlhKCJTcGFjZXMgYXJlIG5vdCBhbGxvd2VkIGluIGNob3JkcyIsZSx0KSx0Kys7ZWxzZXtpZih0PGUubGVuZ3RoJiYiXSI9PT1lW3RdKXt0KyssMCE9PWkubmV4dF9ub3RlX2R1cmF0aW9uJiYoUy5kdXJhdGlvbj1TLmR1cmF0aW9uKmkubmV4dF9ub3RlX2R1cmF0aW9uLGkubmV4dF9ub3RlX2R1cmF0aW9uPTApLFQoaSxkLFMpJiYoUy5waXRjaGVzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuZW5kVGllPSEwfSkpLF8oaSxkLCExKSksaD4wJiYoIVMucmVzdHx8InNwYWNlciIhPT1TLnJlc3QudHlwZSkmJjA9PS0taCYmKFMuZW5kVHJpcGxldD0hMCk7Zm9yKHZhciBHPSExO3Q8ZS5sZW5ndGgmJiFHOyl7c3dpdGNoKGVbdF0pe2Nhc2UiICI6Y2FzZSJcdCI6SChTKTticmVhaztjYXNlIikiOnZvaWQgMD09PVMuZW5kU2x1cj9TLmVuZFNsdXI9MTpTLmVuZFNsdXIrKzticmVhaztjYXNlIi0iOlMucGl0Y2hlcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnN0YXJ0VGllPXt9fSkpLF8oaSxkLCEwKTticmVhaztjYXNlIj4iOmNhc2UiPCI6dmFyIHE9RChlLHQpO3QrPXFbMF0tMSxpLm5leHRfbm90ZV9kdXJhdGlvbj1xWzJdLEM/Qyo9cVsxXTpDPXFbMV07YnJlYWs7Y2FzZSIxIjpjYXNlIjIiOmNhc2UiMyI6Y2FzZSI0IjpjYXNlIjUiOmNhc2UiNiI6Y2FzZSI3IjpjYXNlIjgiOmNhc2UiOSI6Y2FzZSIvIjp2YXIgVz1uLmdldEZyYWN0aW9uKGUsdCk7Qz1XLnZhbHVlO3ZhciBSPWVbdD1XLmluZGV4XTsiICI9PT1SJiYoaj0hMCksIi0iPT09Unx8IikiPT09Unx8IiAiPT09Unx8IjwiPT09Unx8Ij4iPT09Uj90LS06Rz0hMDticmVhaztjYXNlIjAiOkM9MDticmVhaztkZWZhdWx0Okc9ITB9R3x8dCsrfX1lbHNlIGEoIkV4cGVjdGVkICddJyB0byBlbmQgdGhlIGNob3JkcyIsZSx0KTt2b2lkIDAhPT1TLnBpdGNoZXMmJihudWxsIT09QyYmKFMuZHVyYXRpb249Uy5kdXJhdGlvbipDLGomJkgoUykpLGkuYWRkRm9ybWF0dGluZ09wdGlvbnMoUyxzLmZvcm1hdHRpbmcsIm5vdGUiKSxvLmFwcGVuZEVsZW1lbnQoIm5vdGUiLHIrZixyK3QsUyksaS5tZWFzdXJlTm90RW1wdHk9ITAsUz17fSksST0hMH19fWVsc2V7dmFyIFg9e30sVT16KGUsdCxYLCEwKTt2b2lkIDAhPT1YLmVuZFRpZSYmXyhpLGQsITApLG51bGwhPT1VJiYodm9pZCAwIT09VS5waXRjaD8oUy5waXRjaGVzPVt7fV0sdm9pZCAwIT09VS5hY2NpZGVudGFsJiYoUy5waXRjaGVzWzBdLmFjY2lkZW50YWw9VS5hY2NpZGVudGFsKSxTLnBpdGNoZXNbMF0ucGl0Y2g9VS5waXRjaCxTLnBpdGNoZXNbMF0ubmFtZT1VLm5hbWUsKFUubWlkaXBpdGNofHwwPT09VS5taWRpcGl0Y2gpJiYoUy5waXRjaGVzWzBdLm1pZGlwaXRjaD1VLm1pZGlwaXRjaCksdm9pZCAwIT09VS5lbmRTbHVyJiYoUy5waXRjaGVzWzBdLmVuZFNsdXI9VS5lbmRTbHVyKSx2b2lkIDAhPT1VLmVuZFRpZSYmKFMucGl0Y2hlc1swXS5lbmRUaWU9VS5lbmRUaWUpLHZvaWQgMCE9PVUuc3RhcnRTbHVyJiYoUy5waXRjaGVzWzBdLnN0YXJ0U2x1cj1VLnN0YXJ0U2x1ciksdm9pZCAwIT09Uy5zdGFydFNsdXImJihTLnBpdGNoZXNbMF0uc3RhcnRTbHVyPVMuc3RhcnRTbHVyKSx2b2lkIDAhPT1TLmRvdHRlZFNsdXImJihTLnBpdGNoZXNbMF0uZG90dGVkU2x1cj0hMCksdm9pZCAwIT09VS5zdGFydFRpZSYmKFMucGl0Y2hlc1swXS5zdGFydFRpZT1VLnN0YXJ0VGllKSx2b2lkIDAhPT1TLnN0YXJ0VGllJiYoUy5waXRjaGVzWzBdLnN0YXJ0VGllPVMuc3RhcnRUaWUpKTooUy5yZXN0PVUucmVzdCwibXVsdGltZWFzdXJlIj09PVUucmVzdC50eXBlJiZGKCkmJihpLmN1cnJCYXJOdW1iZXIrPVUucmVzdC50ZXh0LTEpLHZvaWQgMCE9PVUuZW5kU2x1ciYmKFMuZW5kU2x1cj1VLmVuZFNsdXIpLHZvaWQgMCE9PVUuZW5kVGllJiYoUy5yZXN0LmVuZFRpZT1VLmVuZFRpZSksdm9pZCAwIT09VS5zdGFydFNsdXImJihTLnN0YXJ0U2x1cj1VLnN0YXJ0U2x1ciksdm9pZCAwIT09VS5zdGFydFRpZSYmKFMucmVzdC5zdGFydFRpZT1VLnN0YXJ0VGllKSx2b2lkIDAhPT1TLnN0YXJ0VGllJiYoUy5yZXN0LnN0YXJ0VGllPVMuc3RhcnRUaWUpKSx2b2lkIDAhPT1VLmNob3JkJiYoUy5jaG9yZD1VLmNob3JkKSx2b2lkIDAhPT1VLmR1cmF0aW9uJiYoUy5kdXJhdGlvbj1VLmR1cmF0aW9uKSx2b2lkIDAhPT1VLmRlY29yYXRpb24mJihTLmRlY29yYXRpb249VS5kZWNvcmF0aW9uKSx2b2lkIDAhPT1VLmdyYWNlTm90ZXMmJihTLmdyYWNlTm90ZXM9VS5ncmFjZU5vdGVzKSxkZWxldGUgUy5zdGFydFNsdXIsZGVsZXRlIFMuZG90dGVkU2x1cixUKGksZCxTKSYmKHZvaWQgMCE9PVMucGl0Y2hlcz9TLnBpdGNoZXNbMF0uZW5kVGllPSEwOiJzcGFjZXIiIT09Uy5yZXN0LnR5cGUmJihTLnJlc3QuZW5kVGllPSEwKSxfKGksZCwhMSkpLChVLnN0YXJ0VGllfHxTLnN0YXJ0VGllKSYmXyhpLGQsITApLHQ9VS5lbmRDaGFyLGg+MCYmKCFVLnJlc3R8fCJzcGFjZXIiIT09VS5yZXN0LnR5cGUpJiYwPT0tLWgmJihTLmVuZFRyaXBsZXQ9ITApLFUuZW5kX2JlYW0mJkgoUyksUy5yZXN0JiYicmVzdCI9PT1TLnJlc3QudHlwZSYmMT09PVMuZHVyYXRpb24mJk4oaSk8PTEmJihTLnJlc3QudHlwZT0id2hvbGUiLFMuZHVyYXRpb249TihpKSksUy5kdXJhdGlvbjwxJiYtMT09PWIuaW5kZXhPZihTLmR1cmF0aW9uKSYmMCE9PVMuZHVyYXRpb24mJihTLnJlc3QmJiJzcGFjZXIiPT09Uy5yZXN0LnR5cGV8fGEoIkR1cmF0aW9uIG5vdCByZXByZXNlbnRhYmxlOiAiK2Uuc3Vic3RyaW5nKGYsdCksZSx0KSksaS5hZGRGb3JtYXR0aW5nT3B0aW9ucyhTLHMuZm9ybWF0dGluZywibm90ZSIpLG8uYXBwZW5kRWxlbWVudCgibm90ZSIscitmLHIrdCxTKXx8KHRoaXMuc3RhcnROZXdMaW5lKCksby5hcHBlbmRFbGVtZW50KCJub3RlIixyK2Yscit0LFMpKSxpLm1lYXN1cmVOb3RFbXB0eT0hMCxTPXt9KX10PT09ZiYmKCIgIiE9PWVbdF0mJiJgIiE9PWVbdF0mJmEoIlVua25vd24gY2hhcmFjdGVyIGlnbm9yZWQiLGUsdCksdCsrKX19fXRoaXMubGluZUNvbnRpbnVhdGlvbj1lLmluZGV4T2YoIhIiKT49MHx8dVswXT4wLHRoaXMubGluZUNvbnRpbnVhdGlvbnx8KFM9e30pfX07dmFyIF89ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUuY3VycmVudFZvaWNlPzEwMCplLmN1cnJlbnRWb2ljZS5zdGFmZk51bStlLmN1cnJlbnRWb2ljZS5pbmRleDowO3ZvaWQgMD09PWUuaW5UaWVbdF0mJihlLmluVGllW3RdPVtdKSxlLmluVGllW3RdW25dPXJ9LEU9ZnVuY3Rpb24oZSx0KXtpZignIic9PT1lW3RdKXt2YXIgcj1uLmdldEJyYWNrZXR0ZWRTdWJzdHJpbmcoZSx0LDUpO2lmKHJbMl18fGEoIk1pc3NpbmcgdGhlIGNsb3NpbmcgcXVvdGUgd2hpbGUgcGFyc2luZyB0aGUgY2hvcmQgc3ltYm9sIixlLHQpLHJbMF0+MCYmclsxXS5sZW5ndGg+MCYmIl4iPT09clsxXVswXSlyWzFdPXJbMV0uc3Vic3RyaW5nKDEpLHJbMl09ImFib3ZlIjtlbHNlIGlmKHJbMF0+MCYmclsxXS5sZW5ndGg+MCYmIl8iPT09clsxXVswXSlyWzFdPXJbMV0uc3Vic3RyaW5nKDEpLHJbMl09ImJlbG93IjtlbHNlIGlmKHJbMF0+MCYmclsxXS5sZW5ndGg+MCYmIjwiPT09clsxXVswXSlyWzFdPXJbMV0uc3Vic3RyaW5nKDEpLHJbMl09ImxlZnQiO2Vsc2UgaWYoclswXT4wJiZyWzFdLmxlbmd0aD4wJiYiPiI9PT1yWzFdWzBdKXJbMV09clsxXS5zdWJzdHJpbmcoMSksclsyXT0icmlnaHQiO2Vsc2UgaWYoclswXT4wJiZyWzFdLmxlbmd0aD4wJiYiQCI9PT1yWzFdWzBdKXtyWzFdPXJbMV0uc3Vic3RyaW5nKDEpO3ZhciBzPW4uZ2V0RmxvYXQoclsxXSk7aWYoMD09PXMuZGlnaXRzKXJldHVybiBhKCJNaXNzaW5nIGZpcnN0IHBvc2l0aW9uIGluIGFic29sdXRlbHkgcG9zaXRpb25lZCBhbm5vdGF0aW9uLiIsZSx0KSxyWzFdPXJbMV0ucmVwbGFjZSgiQCIsIiIpLHJbMl09ImFib3ZlIixyO2lmKHJbMV09clsxXS5zdWJzdHJpbmcocy5kaWdpdHMpLCIsIiE9PXJbMV1bMF0pcmV0dXJuIGEoIk1pc3NpbmcgY29tbWEgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGFubm90YXRpb24uIixlLHQpLHJbMV09clsxXS5yZXBsYWNlKCJAIiwiIiksclsyXT0iYWJvdmUiLHI7clsxXT1yWzFdLnN1YnN0cmluZygxKTt2YXIgbz1uLmdldEZsb2F0KHJbMV0pO2lmKDA9PT1vLmRpZ2l0cylyZXR1cm4gYSgiTWlzc2luZyBzZWNvbmQgcG9zaXRpb24gaW4gYWJzb2x1dGVseSBwb3NpdGlvbmVkIGFubm90YXRpb24uIixlLHQpLHJbMV09clsxXS5yZXBsYWNlKCJAIiwiIiksclsyXT0iYWJvdmUiLHI7clsxXT1yWzFdLnN1YnN0cmluZyhvLmRpZ2l0cyk7dmFyIGM9bi5za2lwV2hpdGVTcGFjZShyWzFdKTtyWzFdPXJbMV0uc3Vic3RyaW5nKGMpLHJbMl09bnVsbCxyWzNdPXt4OnMudmFsdWUseTpvLnZhbHVlfX1lbHNlITAhPT1pLmZyZWVnY2hvcmQmJihyWzFdPXJbMV0ucmVwbGFjZSgvKFtBQkNERUZHMC05XSliL2csIiQx4pmtIiksclsxXT1yWzFdLnJlcGxhY2UoLyhbQUJDREVGRzAtOV0pIy9nLCIkMeKZryIpLHJbMV09clsxXS5yZXBsYWNlKC9eKFtBQkNERUZHXSkoW+KZr+KZrV0/KW8oW15BLVphLXpdKS9nLCIkMSQywrAkMyIpLHJbMV09clsxXS5yZXBsYWNlKC9eKFtBQkNERUZHXSkoW+KZr+KZrV0/KW8kL2csIiQxJDLCsCIpLHJbMV09clsxXS5yZXBsYWNlKC9eKFtBQkNERUZHXSkoW+KZr+KZrV0/KTAoW15BLVphLXpdKS9nLCIkMSQyw7gkMyIpLHJbMV09clsxXS5yZXBsYWNlKC9eKFtBQkNERUZHXSkoW+KZr+KZrV0/KVxeKFteQS1aYS16XSkvZywiJDEkMuKIhiQzIikpLHJbMl09ImRlZmF1bHQiLHJbMV09aC5jaG9yZE5hbWUoaSxyWzFdKTtyZXR1cm4gcn1yZXR1cm5bMCwiIl19LE09ZnVuY3Rpb24oZSx0KXtpZigieyI9PT1lW3RdKXt2YXIgcj1uLmdldEJyYWNrZXR0ZWRTdWJzdHJpbmcoZSx0LDEsIn0iKTtyWzJdfHxhKCJNaXNzaW5nIHRoZSBjbG9zaW5nICd9JyB3aGlsZSBwYXJzaW5nIGdyYWNlIG5vdGUiLGUsdCksIikiPT09ZVt0K3JbMF1dJiYoclswXSsrLHJbMV0rPSIpIik7Zm9yKHZhciBzPVtdLG89MCxjPSExO288clsxXS5sZW5ndGg7KXt2YXIgbD0hMTsiLyI9PT1yWzFdW29dJiYobD0hMCxvKyspO3ZhciBoPXooclsxXSxvLHt9LCExKTtudWxsIT09aD8oaC5kdXJhdGlvbj1oLmR1cmF0aW9uLyg4KmkuZGVmYXVsdF9sZW5ndGgpLGwmJihoLmFjY2lhY2NhdHVyYT0hMCksaC5yZXN0P2EoIlJlc3RzIG5vdCBhbGxvd2VkIGFzIGdyYWNlIG5vdGVzICciK3JbMV1bb10rIicgd2hpbGUgcGFyc2luZyBncmFjZSBub3RlIixlLHQpOnMucHVzaChoKSxjJiYoaC5lbmRUaWU9ITAsYz0hMSksaC5zdGFydFRpZSYmKGM9ITApLG89aC5lbmRDaGFyLGRlbGV0ZSBoLmVuZENoYXIsaC5lbmRfYmVhbSYmKGguZW5kQmVhbT0hMCxkZWxldGUgaC5lbmRfYmVhbSkpOigiICI9PT1yWzFdW29dP3MubGVuZ3RoPjAmJihzW3MubGVuZ3RoLTFdLmVuZEJlYW09ITApOmEoIlVua25vd24gY2hhcmFjdGVyICciK3JbMV1bb10rIicgd2hpbGUgcGFyc2luZyBncmFjZSBub3RlIixlLHQpLG8rKyl9aWYocy5sZW5ndGgpcmV0dXJuW3JbMF0sc119cmV0dXJuWzBdfTtmdW5jdGlvbiBBKGUsdCl7aWYoIiYiPT09ZVt0XSl7Zm9yKHZhciByPXQ7ZVt0XSYmIjoiIT09ZVt0XSYmInwiIT09ZVt0XTspdCsrO3JldHVyblt0LXIsZS5zdWJzdHJpbmcocisxLHQpXX1yZXR1cm5bMF19ZnVuY3Rpb24gTihlKXt2YXIgdD1lLm9yaWdNZXRlcjtyZXR1cm4gdCYmInNwZWNpZmllZCI9PT10LnR5cGUmJnQudmFsdWUmJjAhPT10LnZhbHVlLmxlbmd0aD9wYXJzZUludCh0LnZhbHVlWzBdLm51bSwxMCkvcGFyc2VJbnQodC52YWx1ZVswXS5kZW4sMTApOjF9dmFyIEI9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLm1hY3Jvc1tlW3RdXTtpZih2b2lkIDAhPT1yKXJldHVybiIhIiE9PXJbMF0mJiIrIiE9PXJbMF18fChyPXIuc3Vic3RyaW5nKDEpKSwiISIhPT1yW3IubGVuZ3RoLTFdJiYiKyIhPT1yW3IubGVuZ3RoLTFdfHwocj1yLnN1YnN0cmluZygwLHIubGVuZ3RoLTEpKSxkLmluY2x1ZGVzKHIpP1sxLHJdOmYuaW5jbHVkZXMocik/KCJoaWRkZW4iPT09aS52b2x1bWVQb3NpdGlvbiYmKHI9IiIpLFsxLHJdKTpwLmluY2x1ZGVzKHIpPygiaGlkZGVuIj09PWkuZHluYW1pY1Bvc2l0aW9uJiYocj0iIiksWzEscl0pOihpLmlnbm9yZWREZWNvcmF0aW9ucy5pbmNsdWRlcyhyKXx8YSgiVW5rbm93biBtYWNybzogIityLGUsdCksWzEsIiJdKTtzd2l0Y2goZVt0XSl7Y2FzZSIuIjppZigiKCI9PT1lW3QrMV18fCItIj09PWVbdCsxXSlicmVhaztyZXR1cm5bMSwic3RhY2NhdG8iXTtjYXNlInUiOnJldHVyblsxLCJ1cGJvdyJdO2Nhc2UidiI6cmV0dXJuWzEsImRvd25ib3ciXTtjYXNlIn4iOnJldHVyblsxLCJpcmlzaHJvbGwiXTtjYXNlIiEiOmNhc2UiKyI6dmFyIHM9bi5nZXRCcmFja2V0dGVkU3Vic3RyaW5nKGUsdCw1KTtpZihzWzFdLmxlbmd0aD4xJiYoIl4iPT09c1sxXVswXXx8Il8iPT09c1sxXVswXSkmJihzWzFdPXNbMV0uc3Vic3RyaW5nKDEpKSxkLmluY2x1ZGVzKHNbMV0pKXJldHVybiBzO2lmKGYuaW5jbHVkZXMoc1sxXSkpcmV0dXJuImhpZGRlbiI9PT1pLnZvbHVtZVBvc2l0aW9uJiYoc1sxXT0iIikscztpZihwLmluY2x1ZGVzKHNbMV0pKXJldHVybiJoaWRkZW4iPT09aS5keW5hbWljUG9zaXRpb24mJihzWzFdPSIiKSxzO3ZhciBvPW0uZmluZEluZGV4KChmdW5jdGlvbihlKXtyZXR1cm4gc1sxXT09PWVbMF19KSk7cmV0dXJuIG8+PTA/KHNbMV09bVtvXVsxXSxzKToobz1nLmZpbmRJbmRleCgoZnVuY3Rpb24oZSl7cmV0dXJuIHNbMV09PT1lWzBdfSkpKT49MD8oc1sxXT1nW29dWzFdLCJoaWRkZW4iPT09aS5keW5hbWljUG9zaXRpb24mJihzWzFdPSIiKSxzKToiISIhPT1lW3RdfHwxIT09c1swXSYmIiEiPT09ZVt0K3NbMF0tMV0/KGEoIlVua25vd24gZGVjb3JhdGlvbjogIitzWzFdLGUsdCksc1sxXT0iIixzKTpbMSxudWxsXTtjYXNlIkgiOnJldHVyblsxLCJmZXJtYXRhIl07Y2FzZSJKIjpyZXR1cm5bMSwic2xpZGUiXTtjYXNlIkwiOnJldHVyblsxLCJhY2NlbnQiXTtjYXNlIk0iOnJldHVyblsxLCJtb3JkZW50Il07Y2FzZSJPIjpyZXR1cm5bMSwiY29kYSJdO2Nhc2UiUCI6cmV0dXJuWzEsInByYWxsdHJpbGxlciJdO2Nhc2UiUiI6cmV0dXJuWzEsInJvbGwiXTtjYXNlIlMiOnJldHVyblsxLCJzZWdubyJdO2Nhc2UiVCI6cmV0dXJuWzEsInRyaWxsIl07Y2FzZSJ0IjpyZXR1cm5bMSwidHJpbGxoIl19cmV0dXJuWzAsMF19LFA9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9dDtuLmlzV2hpdGVTcGFjZShlW3RdKTspdCsrO3JldHVyblt0LXJdfSxMPWZ1bmN0aW9uKGUsdCl7dmFyIHI9bi5nZXRCYXJMaW5lKGUsdCk7aWYoMD09PXIubGVuKXJldHVyblswLCIiXTtpZihyLndhcm4pcmV0dXJuIGEoci53YXJuLGUsdCksW3IubGVuLCIiXTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoJiYiICI9PT1lW3Qrci5sZW4raV07aSsrKTt2YXIgcz1yLmxlbjtpZigiWyI9PT1lW3Qrci5sZW4raV0mJihyLmxlbis9aSsxKSwnIic9PT1lW3Qrci5sZW5dJiYiWyI9PT1lW3Qrci5sZW4tMV0pe3ZhciBvPW4uZ2V0QnJhY2tldHRlZFN1YnN0cmluZyhlLHQrci5sZW4sNSk7cmV0dXJuW3IubGVuK29bMF0sci50b2tlbixvWzFdXX12YXIgYz1uLmdldFRva2VuT2YoZS5zdWJzdHJpbmcodCtyLmxlbiksIjEyMzQ1Njc4OTAtLCIpO3JldHVybiAwPT09Yy5sZW58fCItIj09PWMudG9rZW5bMF0/W3Msci50b2tlbl06W3IubGVuK2MubGVuLHIudG9rZW4sYy50b2tlbl19LE89ZnVuY3Rpb24oZSx0KXt2YXIgcj17fSxpPXQ7Zm9yKCIuIj09PWVbdF0mJiIoIj09PWVbdCsxXSYmKHIuZG90dGVkU2x1cj0hMCx0KyspOyIoIj09PWVbdF18fG4uaXNXaGl0ZVNwYWNlKGVbdF0pOykiKCI9PT1lW3RdJiYodCsxPGUubGVuZ3RoJiZlW3QrMV0+PSIyIiYmZVt0KzFdPD0iOSI/KHZvaWQgMCE9PXIudHJpcGxldD9hKCJDYW4ndCBuZXN0IHRyaXBsZXRzIixlLHQpOihyLnRyaXBsZXQ9ZVt0KzFdLSIwIixyLnRyaXBsZXRRPXdbci50cmlwbGV0XSxyLm51bV9ub3Rlcz1yLnRyaXBsZXQsdCsyPGUubGVuZ3RoJiYiOiI9PT1lW3QrMl0mJih0KzM8ZS5sZW5ndGgmJiI6Ij09PWVbdCszXT90KzQ8ZS5sZW5ndGgmJmVbdCs0XT49IjEiJiZlW3QrNF08PSI5Ij8oci5udW1fbm90ZXM9ZVt0KzRdLSIwIix0Kz0zKTphKCJleHBlY3RlZCBudW1iZXIgYWZ0ZXIgdGhlIHR3byBjb2xvbnMgYWZ0ZXIgdGhlIHRyaXBsZXQgdG8gbWFyayB0aGUgZHVyYXRpb24iLGUsdCk6dCszPGUubGVuZ3RoJiZlW3QrM10+PSIxIiYmZVt0KzNdPD0iOSI/KHIudHJpcGxldFE9ZVt0KzNdLSIwIix0KzQ8ZS5sZW5ndGgmJiI6Ij09PWVbdCs0XT90KzU8ZS5sZW5ndGgmJmVbdCs1XT49IjEiJiZlW3QrNV08PSI5IiYmKHIubnVtX25vdGVzPWVbdCs1XS0iMCIsdCs9NCk6dCs9Mik6YSgiZXhwZWN0ZWQgbnVtYmVyIGFmdGVyIHRoZSB0cmlwbGV0IHRvIG1hcmsgdGhlIGR1cmF0aW9uIixlLHQpKSksdCsrKTp2b2lkIDA9PT1yLnN0YXJ0U2x1cj9yLnN0YXJ0U2x1cj0xOnIuc3RhcnRTbHVyKyspLHQrKztyZXR1cm4gci5jb25zdW1lZD10LWkscn07Qy5wcm90b3R5cGUuc3RhcnROZXdMaW5lPWZ1bmN0aW9uKCl7dmFyIGU9e3N0YXJ0Q2hhcjotMSxlbmRDaGFyOi0xfTtpLnBhcnRGb3JOZXh0TGluZS50aXRsZSYmKGUucGFydD1pLnBhcnRGb3JOZXh0TGluZSksZS5jbGVmPWkuY3VycmVudFZvaWNlJiZ2b2lkIDAhPT1pLnN0YXZlc1tpLmN1cnJlbnRWb2ljZS5zdGFmZk51bV0uY2xlZj9PYmplY3QuYXNzaWduKHt9LGkuc3RhdmVzW2kuY3VycmVudFZvaWNlLnN0YWZmTnVtXS5jbGVmKTpPYmplY3QuYXNzaWduKHt9LGkuY2xlZik7dmFyIHQ9aS5jdXJyZW50Vm9pY2U/aS5jdXJyZW50Vm9pY2Uuc2NvcmVUcmFuc3Bvc2U6MDtpZihlLmtleT1sLnN0YW5kYXJkS2V5KGkua2V5LnJvb3QraS5rZXkuYWNjK2kua2V5Lm1vZGUsaS5rZXkucm9vdCxpLmtleS5hY2MsdCksZS5rZXkubW9kZT1pLmtleS5tb2RlLGkua2V5LmltcGxpZWROYXR1cmFscyYmKGUua2V5LmltcGxpZWROYXR1cmFscz1pLmtleS5pbXBsaWVkTmF0dXJhbHMpLGkua2V5LmV4cGxpY2l0QWNjaWRlbnRhbHMpZm9yKHZhciByPTA7cjxpLmtleS5leHBsaWNpdEFjY2lkZW50YWxzLmxlbmd0aDtyKyspe2Zvcih2YXIgbj0hMSxhPTA7YTxlLmtleS5hY2NpZGVudGFscy5sZW5ndGg7YSsrKWUua2V5LmFjY2lkZW50YWxzW2FdLm5vdGU9PT1pLmtleS5leHBsaWNpdEFjY2lkZW50YWxzW3JdLm5vdGUmJihlLmtleS5hY2NpZGVudGFsc1thXS5hY2M9aS5rZXkuZXhwbGljaXRBY2NpZGVudGFsc1tyXS5hY2Msbj0hMCk7bnx8ZS5rZXkuYWNjaWRlbnRhbHMucHVzaChpLmtleS5leHBsaWNpdEFjY2lkZW50YWxzW3JdKX1pZihpLnRhcmdldEtleT1lLmtleSxlLmtleS5leHBsaWNpdEFjY2lkZW50YWxzJiZkZWxldGUgZS5rZXkuZXhwbGljaXRBY2NpZGVudGFscyxsLmFkZFBvc1RvS2V5KGUuY2xlZixlLmtleSksbnVsbCE9PWkubWV0ZXI/KGkuY3VycmVudFZvaWNlPyhpLnN0YXZlcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLm1ldGVyPWkubWV0ZXJ9KSksZS5tZXRlcj1pLnN0YXZlc1tpLmN1cnJlbnRWb2ljZS5zdGFmZk51bV0ubWV0ZXIsaS5zdGF2ZXNbaS5jdXJyZW50Vm9pY2Uuc3RhZmZOdW1dLm1ldGVyPW51bGwpOmUubWV0ZXI9aS5tZXRlcixpLm1ldGVyPW51bGwpOmkuY3VycmVudFZvaWNlJiZpLnN0YXZlc1tpLmN1cnJlbnRWb2ljZS5zdGFmZk51bV0ubWV0ZXImJihlLm1ldGVyPWkuc3RhdmVzW2kuY3VycmVudFZvaWNlLnN0YWZmTnVtXS5tZXRlcixpLnN0YXZlc1tpLmN1cnJlbnRWb2ljZS5zdGFmZk51bV0ubWV0ZXI9bnVsbCksaS5jdXJyZW50Vm9pY2UmJmkuY3VycmVudFZvaWNlLm5hbWUmJihlLm5hbWU9aS5jdXJyZW50Vm9pY2UubmFtZSksaS52b2NhbGZvbnQmJihlLnZvY2FsZm9udD1pLnZvY2FsZm9udCksaS50cmlwbGV0Zm9udCYmKGUudHJpcGxldGZvbnQ9aS50cmlwbGV0Zm9udCksaS5nY2hvcmRmb250JiYoZS5nY2hvcmRmb250PWkuZ2Nob3JkZm9udCksaS5zdHlsZSYmKGUuc3R5bGU9aS5zdHlsZSksaS5jdXJyZW50Vm9pY2Upe3ZhciBzPWkuc3RhdmVzW2kuY3VycmVudFZvaWNlLnN0YWZmTnVtXTtzLmJyYWNlJiYoZS5icmFjZT1zLmJyYWNlKSxzLmJyYWNrZXQmJihlLmJyYWNrZXQ9cy5icmFja2V0KSxzLmNvbm5lY3RCYXJMaW5lcyYmKGUuY29ubmVjdEJhckxpbmVzPXMuY29ubmVjdEJhckxpbmVzKSxzLm5hbWUmJihlLm5hbWU9cy5uYW1lW2kuY3VycmVudFZvaWNlLmluZGV4XSkscy5zdWJuYW1lJiYoZS5zdWJuYW1lPXMuc3VibmFtZVtpLmN1cnJlbnRWb2ljZS5pbmRleF0pLGkuY3VycmVudFZvaWNlLnN0ZW0mJihlLnN0ZW09aS5jdXJyZW50Vm9pY2Uuc3RlbSksaS5jdXJyZW50Vm9pY2Uuc3RhZmZsaW5lcyYmKGUuc3RhZmZsaW5lcz1pLmN1cnJlbnRWb2ljZS5zdGFmZmxpbmVzKSxpLmN1cnJlbnRWb2ljZS5zdGFmZnNjYWxlJiYoZS5zdGFmZnNjYWxlPWkuY3VycmVudFZvaWNlLnN0YWZmc2NhbGUpLGkuY3VycmVudFZvaWNlLnNjYWxlJiYoZS5zY2FsZT1pLmN1cnJlbnRWb2ljZS5zY2FsZSksaS5jdXJyZW50Vm9pY2UuY29sb3ImJihlLmNvbG9yPWkuY3VycmVudFZvaWNlLmNvbG9yKSxpLmN1cnJlbnRWb2ljZS5zdHlsZSYmKGUuc3R5bGU9aS5jdXJyZW50Vm9pY2Uuc3R5bGUpLGkuY3VycmVudFZvaWNlLnRyYW5zcG9zZSYmKGUuY2xlZi50cmFuc3Bvc2U9aS5jdXJyZW50Vm9pY2UudHJhbnNwb3NlKSxlLmN1cnJlbnRWb2ljZT1pLmN1cnJlbnRWb2ljZTtmb3IodmFyIGM9T2JqZWN0LmtleXMoaS52b2ljZXMpLGg9MDtoPGMubGVuZ3RoO2grKyllLmN1cnJlbnRWb2ljZS5zdGFmZk51bT09PWkudm9pY2VzW2NbaF1dLnN0YWZmTnVtJiZlLmN1cnJlbnRWb2ljZS5pbmRleD09PWkudm9pY2VzW2NbaF1dLmluZGV4JiYoZS5jdXJyZW50Vm9pY2VOYW1lPWNbaF0pfTA9PT1pLmJhck51bWJlcnMmJkYoKSYmMSE9PWkuY3VyckJhck51bWJlciYmKGUuYmFyTnVtYmVyPWkuY3VyckJhck51bWJlciksby5zdGFydE5ld0xpbmUoZSksaS5rZXkuaW1wbGllZE5hdHVyYWxzJiZkZWxldGUgaS5rZXkuaW1wbGllZE5hdHVyYWxzLGkucGFydEZvck5leHRMaW5lPXt9LDQ9PT1pLnRlbXBvRm9yTmV4dExpbmUubGVuZ3RoJiZvLmFwcGVuZEVsZW1lbnQoaS50ZW1wb0Zvck5leHRMaW5lWzBdLGkudGVtcG9Gb3JOZXh0TGluZVsxXSxpLnRlbXBvRm9yTmV4dExpbmVbMl0saS50ZW1wb0Zvck5leHRMaW5lWzNdKSxpLnRlbXBvRm9yTmV4dExpbmU9W119O3ZhciBIPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lLmR1cmF0aW9uJiZlLmR1cmF0aW9uPC4yNSYmKGUuZW5kX2JlYW09ITApLGV9LHo9ZnVuY3Rpb24oZSx0LHIsYSl7dmFyIGMsbD1mdW5jdGlvbihlKXtyZXR1cm4ib2N0YXZlIj09PWV8fCJkdXJhdGlvbiI9PT1lfHwiWmR1cmF0aW9uIj09PWV8fCJicm9rZW5fcmh5dGhtIj09PWV8fCJlbmRfc2x1ciI9PT1lfTsiLiI9PT1lW3RdJiYiLSI9PT1lW3QrMV0mJihjPSEwLHQrKyk7Zm9yKHZhciB1PSJzdGFydFNsdXIiLGQ9ITE7Oyl7c3dpdGNoKGVbdF0pe2Nhc2UiKCI6aWYoInN0YXJ0U2x1ciIhPT11KXJldHVybiBsKHUpPyhyLmVuZENoYXI9dCxyKTpudWxsO3ZvaWQgMD09PXIuc3RhcnRTbHVyP3Iuc3RhcnRTbHVyPTE6ci5zdGFydFNsdXIrKzticmVhaztjYXNlIikiOmlmKCFsKHUpKXJldHVybiBudWxsO3ZvaWQgMD09PXIuZW5kU2x1cj9yLmVuZFNsdXI9MTpyLmVuZFNsdXIrKzticmVhaztjYXNlIl4iOmlmKCJzdGFydFNsdXIiPT09dSlyLmFjY2lkZW50YWw9InNoYXJwIix1PSJzaGFycDIiO2Vsc2V7aWYoInNoYXJwMiIhPT11KXJldHVybiBsKHUpPyhyLmVuZENoYXI9dCxyKTpudWxsO3IuYWNjaWRlbnRhbD0iZGJsc2hhcnAiLHU9InBpdGNoIn1icmVhaztjYXNlIl8iOmlmKCJzdGFydFNsdXIiPT09dSlyLmFjY2lkZW50YWw9ImZsYXQiLHU9ImZsYXQyIjtlbHNle2lmKCJmbGF0MiIhPT11KXJldHVybiBsKHUpPyhyLmVuZENoYXI9dCxyKTpudWxsO3IuYWNjaWRlbnRhbD0iZGJsZmxhdCIsdT0icGl0Y2gifWJyZWFrO2Nhc2UiPSI6aWYoInN0YXJ0U2x1ciIhPT11KXJldHVybiBsKHUpPyhyLmVuZENoYXI9dCxyKTpudWxsO3IuYWNjaWRlbnRhbD0ibmF0dXJhbCIsdT0icGl0Y2giO2JyZWFrO2Nhc2UiQSI6Y2FzZSJCIjpjYXNlIkMiOmNhc2UiRCI6Y2FzZSJFIjpjYXNlIkYiOmNhc2UiRyI6Y2FzZSJhIjpjYXNlImIiOmNhc2UiYyI6Y2FzZSJkIjpjYXNlImUiOmNhc2UiZiI6Y2FzZSJnIjppZigic3RhcnRTbHVyIiE9PXUmJiJzaGFycDIiIT09dSYmImZsYXQyIiE9PXUmJiJwaXRjaCIhPT11KXJldHVybiBsKHUpPyhyLmVuZENoYXI9dCxyKTpudWxsO2lmKHIucGl0Y2g9eVtlW3RdXSxyLnBpdGNoKz03KihpLmN1cnJlbnRWb2ljZSYmdm9pZCAwIT09aS5jdXJyZW50Vm9pY2Uub2N0YXZlP2kuY3VycmVudFZvaWNlLm9jdGF2ZTppLm9jdGF2ZSksci5uYW1lPWVbdF0sci5hY2NpZGVudGFsJiYoci5uYW1lPWtbci5hY2NpZGVudGFsXStyLm5hbWUpLGgubm90ZShpLHIpLHU9Im9jdGF2ZSIsYSYmMCE9PWkubmV4dF9ub3RlX2R1cmF0aW9uPyhyLmR1cmF0aW9uPWkuZGVmYXVsdF9sZW5ndGgqaS5uZXh0X25vdGVfZHVyYXRpb24saS5uZXh0X25vdGVfZHVyYXRpb249MCxkPSEwKTpyLmR1cmF0aW9uPWkuZGVmYXVsdF9sZW5ndGgsaS5jbGVmJiYicGVyYyI9PT1pLmNsZWYudHlwZXx8aS5jdXJyZW50Vm9pY2UmJiJwZXJjIj09PWkuY3VycmVudFZvaWNlLmNsZWYpe3ZhciBmPWVbdF07ci5hY2NpZGVudGFsJiYoZj1rW3IuYWNjaWRlbnRhbF0rZikscy5mb3JtYXR0aW5nJiZzLmZvcm1hdHRpbmcubWlkaSYmcy5mb3JtYXR0aW5nLm1pZGkuZHJ1bW1hcCYmKHIubWlkaXBpdGNoPXMuZm9ybWF0dGluZy5taWRpLmRydW1tYXBbZl0pfWJyZWFrO2Nhc2UiLCI6aWYoIm9jdGF2ZSIhPT11KXJldHVybiBsKHUpPyhyLmVuZENoYXI9dCxyKTpudWxsO3IucGl0Y2gtPTcsci5uYW1lKz0iLCI7YnJlYWs7Y2FzZSInIjppZigib2N0YXZlIiE9PXUpcmV0dXJuIGwodSk/KHIuZW5kQ2hhcj10LHIpOm51bGw7ci5waXRjaCs9NyxyLm5hbWUrPSInIjticmVhaztjYXNlIngiOmNhc2UiWCI6Y2FzZSJ5IjpjYXNlInoiOmNhc2UiWiI6aWYoInN0YXJ0U2x1ciIhPT11KXJldHVybiBsKHUpPyhyLmVuZENoYXI9dCxyKTpudWxsO3IucmVzdD17dHlwZTp4W2VbdF1dfSxkZWxldGUgci5hY2NpZGVudGFsLGRlbGV0ZSByLnN0YXJ0U2x1cixkZWxldGUgci5zdGFydFRpZSxkZWxldGUgci5lbmRTbHVyLGRlbGV0ZSByLmVuZFRpZSxkZWxldGUgci5lbmRfYmVhbSxkZWxldGUgci5ncmFjZV9ub3RlcyxyLnJlc3QudHlwZS5pbmRleE9mKCJtdWx0aW1lYXN1cmUiKT49MD8oci5kdXJhdGlvbj1zLmdldEJhckxlbmd0aCgpLHIucmVzdC50ZXh0PTEsdT0iWmR1cmF0aW9uIik6KGEmJjAhPT1pLm5leHRfbm90ZV9kdXJhdGlvbj8oci5kdXJhdGlvbj1pLmRlZmF1bHRfbGVuZ3RoKmkubmV4dF9ub3RlX2R1cmF0aW9uLGkubmV4dF9ub3RlX2R1cmF0aW9uPTAsZD0hMCk6ci5kdXJhdGlvbj1pLmRlZmF1bHRfbGVuZ3RoLHU9ImR1cmF0aW9uIik7YnJlYWs7Y2FzZSIxIjpjYXNlIjIiOmNhc2UiMyI6Y2FzZSI0IjpjYXNlIjUiOmNhc2UiNiI6Y2FzZSI3IjpjYXNlIjgiOmNhc2UiOSI6Y2FzZSIwIjpjYXNlIi8iOmlmKCJvY3RhdmUiPT09dXx8ImR1cmF0aW9uIj09PXUpe3ZhciBwPW4uZ2V0RnJhY3Rpb24oZSx0KTtmb3Ioci5kdXJhdGlvbj1yLmR1cmF0aW9uKnAudmFsdWUsci5lbmRDaGFyPXAuaW5kZXg7cC5pbmRleDxlLmxlbmd0aCYmKG4uaXNXaGl0ZVNwYWNlKGVbcC5pbmRleF0pfHwiLSI9PT1lW3AuaW5kZXhdKTspIi0iPT09ZVtwLmluZGV4XT9yLnN0YXJ0VGllPXt9OnI9SChyKSxwLmluZGV4Kys7dD1wLmluZGV4LTEsdT0iYnJva2VuX3JoeXRobSJ9ZWxzZSBpZigic2hhcnAyIj09PXUpci5hY2NpZGVudGFsPSJxdWFydGVyc2hhcnAiLHU9InBpdGNoIjtlbHNle2lmKCJmbGF0MiIhPT11KXtpZigiWmR1cmF0aW9uIj09PXUpe3ZhciBtPW4uZ2V0TnVtYmVyKGUsdCk7cmV0dXJuIHIuZHVyYXRpb249bS5udW0qcy5nZXRCYXJMZW5ndGgoKSxyLnJlc3QudGV4dD1tLm51bSxyLmVuZENoYXI9bS5pbmRleCxyfXJldHVybiBudWxsfXIuYWNjaWRlbnRhbD0icXVhcnRlcmZsYXQiLHU9InBpdGNoIn1icmVhaztjYXNlIi0iOmlmKCJzdGFydFNsdXIiPT09dSlvLmFkZFRpZVRvTGFzdE5vdGUoYyksci5lbmRUaWU9ITA7ZWxzZXtpZigib2N0YXZlIiE9PXUmJiJkdXJhdGlvbiIhPT11JiYiZW5kX3NsdXIiIT09dSlyZXR1cm4iYnJva2VuX3JoeXRobSI9PT11PyhyLmVuZENoYXI9dCxyKTpudWxsO2lmKHIuc3RhcnRUaWU9e30sZHx8IWEpcmV0dXJuIG4uaXNXaGl0ZVNwYWNlKGVbdCsxXSkmJkgociksci5lbmRDaGFyPXQrMSxyO3U9ImJyb2tlbl9yaHl0aG0ifWJyZWFrO2Nhc2UiICI6Y2FzZSJcdCI6aWYoIWwodSkpcmV0dXJuIG51bGw7ci5lbmRfYmVhbT0hMCxjPSExO2RveyIuIj09PWVbdF0mJiItIj09PWVbdCsxXSYmKGM9ITAsdCsrKSwiLSI9PT1lW3RdJiYoci5zdGFydFRpZT17fSxjJiYoci5zdGFydFRpZS5zdHlsZT0iZG90dGVkIikpLHQrK313aGlsZSh0PGUubGVuZ3RoJiYobi5pc1doaXRlU3BhY2UoZVt0XSl8fCItIj09PWVbdF0pfHwiLiI9PT1lW3RdJiYiLSI9PT1lW3QrMV0pO2lmKHIuZW5kQ2hhcj10LGR8fCFhfHwiPCIhPT1lW3RdJiYiPiIhPT1lW3RdKXJldHVybiByO3QtLSx1PSJicm9rZW5fcmh5dGhtIjticmVhaztjYXNlIj4iOmNhc2UiPCI6aWYoIWwodSkpcmV0dXJuIG51bGw7aWYoIWEpcmV0dXJuIHIuZW5kQ2hhcj10LHI7dmFyIGc9RChlLHQpO3QrPWdbMF0tMSxpLm5leHRfbm90ZV9kdXJhdGlvbj1nWzJdLHIuZHVyYXRpb249Z1sxXSpyLmR1cmF0aW9uLHU9ImVuZF9zbHVyIjticmVhaztkZWZhdWx0OnJldHVybiBsKHUpPyhyLmVuZENoYXI9dCxyKTpudWxsfWlmKCsrdD09PWUubGVuZ3RoKXJldHVybiBsKHUpPyhyLmVuZENoYXI9dCxyKTpudWxsfXJldHVybiBudWxsfSxEPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGVbdF0pe2Nhc2UiPiI6cmV0dXJuIHQ8ZS5sZW5ndGgtMiYmIj4iPT09ZVt0KzFdJiYiPiI9PT1lW3QrMl0/WzMsMS44NzUsLjEyNV06dDxlLmxlbmd0aC0xJiYiPiI9PT1lW3QrMV0/WzIsMS43NSwuMjVdOlsxLDEuNSwuNV07Y2FzZSI8IjpyZXR1cm4gdDxlLmxlbmd0aC0yJiYiPCI9PT1lW3QrMV0mJiI8Ij09PWVbdCsyXT9bMywuMTI1LDEuODc1XTp0PGUubGVuZ3RoLTEmJiI8Ij09PWVbdCsxXT9bMiwuMjUsMS43NV06WzEsLjUsMS41XX1yZXR1cm4gbnVsbH07ZnVuY3Rpb24gRigpe3JldHVybiB2b2lkIDA9PT1pLmN1cnJlbnRWb2ljZXx8MD09PWkuY3VycmVudFZvaWNlLnN0YWZmTnVtJiYwPT09aS5jdXJyZW50Vm9pY2UuaW5kZXh9ZS5leHBvcnRzPUN9LDI1Mzk6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzLmxlZ2FsQWNjZW50cz1bInRyaWxsIiwidHJpbGxoIiwibG93ZXJtb3JkZW50IiwidXBwZXJtb3JkZW50IiwibW9yZGVudCIsInByYWxsdHJpbGxlciIsImFjY2VudCIsImZlcm1hdGEiLCJpbnZlcnRlZGZlcm1hdGEiLCJ0ZW51dG8iLCIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCIrIiwid2VkZ2UiLCJvcGVuIiwidGh1bWIiLCJzbmFwIiwidHVybiIsInJvbGwiLCJicmVhdGgiLCJzaG9ydHBocmFzZSIsIm1lZGl1bXBocmFzZSIsImxvbmdwaHJhc2UiLCJzZWdubyIsImNvZGEiLCJELlMuIiwiRC5DLiIsImZpbmUiLCJiZWFtYnIxIiwiYmVhbWJyMiIsInNsaWRlIiwibWFyY2F0byIsInVwYm93IiwiZG93bmJvdyIsIi8iLCIvLyIsIi8vLyIsIi8vLy8iLCJ0cmVtMSIsInRyZW0yIiwidHJlbTMiLCJ0cmVtNCIsInR1cm54IiwiaW52ZXJ0ZWR0dXJuIiwiaW52ZXJ0ZWR0dXJueCIsInRyaWxsKCIsInRyaWxsKSIsImFycGVnZ2lvIiwieHN0ZW0iLCJtYXJrIiwidW1hcmNhdG8iLCJzdHlsZT1ub3JtYWwiLCJzdHlsZT1oYXJtb25pYyIsInN0eWxlPXJoeXRobSIsInN0eWxlPXgiLCJzdHlsZT10cmlhbmdsZSIsIkQuQy5hbGNvZGEiLCJELkMuYWxmaW5lIiwiRC5TLmFsY29kYSIsIkQuUy5hbGZpbmUiLCJlZGl0b3JpYWwiLCJjb3VydGVzeSJdLGUuZXhwb3J0cy52b2x1bWVEZWNvcmF0aW9ucz1bInAiLCJwcCIsImYiLCJmZiIsIm1mIiwibXAiLCJwcHAiLCJwcHBwIiwiZmZmIiwiZmZmZiIsInNmeiJdLGUuZXhwb3J0cy5keW5hbWljRGVjb3JhdGlvbnM9WyJjcmVzY2VuZG8oIiwiY3Jlc2NlbmRvKSIsImRpbWludWVuZG8oIiwiZGltaW51ZW5kbykiLCJnbGlzc2FuZG8oIiwiZ2xpc3NhbmRvKSIsIn4oIiwifikiXSxlLmV4cG9ydHMuYWNjZW50UHNldWRvbnltcz1bWyI8IiwiYWNjZW50Il0sWyI+IiwiYWNjZW50Il0sWyJ0ciIsInRyaWxsIl0sWyJwbHVzIiwiKyJdLFsiZW1waGFzaXMiLCJhY2NlbnQiXSxbIl4iLCJ1bWFyY2F0byJdLFsibWFyY2F0byIsInVtYXJjYXRvIl1dLGUuZXhwb3J0cy5hY2NlbnREeW5hbWljUHNldWRvbnltcz1bWyI8KCIsImNyZXNjZW5kbygiXSxbIjwpIiwiY3Jlc2NlbmRvKSJdLFsiPigiLCJkaW1pbnVlbmRvKCJdLFsiPikiLCJkaW1pbnVlbmRvKSJdXSxlLmV4cG9ydHMubm9uRGVjb3JhdGlvbnM9IkFCQ0RFRkdhYmNkZWZneHl6WltdfF5feyIsZS5leHBvcnRzLmR1cmF0aW9ucz1bLjUsLjc1LC44NzUsLjkzNzUsLjk2ODc1LC45ODQzNzUsLjI1LC4zNzUsLjQzNzUsLjQ2ODc1LC40ODQzNzUsLjQ5MjE4NzUsLjEyNSwuMTg3NSwuMjE4NzUsLjIzNDM3NSwuMjQyMTg3NSwuMjQ2MDkzNzUsLjA2MjUsLjA5Mzc1LC4xMDkzNzUsLjExNzE4NzUsLjEyMTA5Mzc1LC4xMjMwNDY4NzUsLjAzMTI1LC4wNDY4NzUsLjA1NDY4NzUsLjA1ODU5Mzc1LC4wNjA1NDY4NzUsLjA2MTUyMzQzNzUsLjAxNTYyNSwuMDIzNDM3NSwuMDI3MzQzNzUsLjAyOTI5Njg3NSwuMDMwMjczNDM3NSwuMDMwNzYxNzE4NzVdLGUuZXhwb3J0cy5waXRjaGVzPXtBOjUsQjo2LEM6MCxEOjEsRToyLEY6MyxHOjQsYToxMixiOjEzLGM6NyxkOjgsZTo5LGY6MTAsZzoxMX0sZS5leHBvcnRzLnJlc3RzPXt4OiJpbnZpc2libGUiLFg6ImludmlzaWJsZS1tdWx0aW1lYXN1cmUiLHk6InNwYWNlciIsejoicmVzdCIsWjoibXVsdGltZWFzdXJlIn0sZS5leHBvcnRzLmFjY01hcD17ZGJsZmxhdDoiX18iLGZsYXQ6Il8iLG5hdHVyYWw6Ij0iLHNoYXJwOiJeIixkYmxzaGFycDoiXl4iLHF1YXJ0ZXJmbGF0OiJfLyIscXVhcnRlcnNoYXJwOiJeLyJ9LGUuZXhwb3J0cy50cmlwbGV0UT17MjozLDM6Miw0OjMsNToyLDY6Miw3OjIsODozLDk6Mn19LDE4ODE6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTAwOCksYT1mdW5jdGlvbihlLHQpe3RoaXMubGluZUluZGV4PTAsdGhpcy5saW5lcz1lLHRoaXMubXVsdGlsaW5lVmFycz10LHRoaXMuc2tpcFdoaXRlU3BhY2U9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspaWYoIXRoaXMuaXNXaGl0ZVNwYWNlKGVbdF0pKXJldHVybiB0O3JldHVybiBlLmxlbmd0aH07dmFyIHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD49ZS5sZW5ndGh9O3RoaXMuZWF0V2hpdGVTcGFjZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10O3I8ZS5sZW5ndGg7cisrKWlmKCF0aGlzLmlzV2hpdGVTcGFjZShlW3JdKSlyZXR1cm4gci10O3JldHVybiByLXR9LHRoaXMuZ2V0S2V5UGl0Y2g9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5za2lwV2hpdGVTcGFjZShlKTtpZihyKGUsdCkpcmV0dXJue2xlbjowfTtzd2l0Y2goZVt0XSl7Y2FzZSJBIjpyZXR1cm57bGVuOnQrMSx0b2tlbjoiQSJ9O2Nhc2UiQiI6cmV0dXJue2xlbjp0KzEsdG9rZW46IkIifTtjYXNlIkMiOnJldHVybntsZW46dCsxLHRva2VuOiJDIn07Y2FzZSJEIjpyZXR1cm57bGVuOnQrMSx0b2tlbjoiRCJ9O2Nhc2UiRSI6cmV0dXJue2xlbjp0KzEsdG9rZW46IkUifTtjYXNlIkYiOnJldHVybntsZW46dCsxLHRva2VuOiJGIn07Y2FzZSJHIjpyZXR1cm57bGVuOnQrMSx0b2tlbjoiRyJ9fXJldHVybntsZW46MH19LHRoaXMuZ2V0U2hhcnBGbGF0PWZ1bmN0aW9uKGUpe2lmKCJiYXNzIj09PWUpcmV0dXJue2xlbjowfTtzd2l0Y2goZVswXSl7Y2FzZSIjIjpyZXR1cm57bGVuOjEsdG9rZW46IiMifTtjYXNlImIiOnJldHVybntsZW46MSx0b2tlbjoiYiJ9fXJldHVybntsZW46MH19LHRoaXMuZ2V0TW9kZT1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe2Zvcig7dDxlLmxlbmd0aCYmKGVbdF0+PSJhIiYmZVt0XTw9InoifHxlW3RdPj0iQSImJmVbdF08PSJaIik7KXQrKztyZXR1cm4gdH0sbj10aGlzLnNraXBXaGl0ZVNwYWNlKGUpO2lmKHIoZSxuKSlyZXR1cm57bGVuOjB9O3ZhciBhPWUuc3Vic3RyaW5nKG4sbiszKS50b0xvd2VyQ2FzZSgpO3N3aXRjaCgoYS5sZW5ndGg+MSYmIiAiPT09YVsxXXx8Il4iPT09YVsxXXx8Il8iPT09YVsxXXx8Ij0iPT09YVsxXSkmJihhPWFbMF0pLGEpe2Nhc2UibWl4IjpyZXR1cm57bGVuOnQoZSxuKSx0b2tlbjoiTWl4In07Y2FzZSJkb3IiOnJldHVybntsZW46dChlLG4pLHRva2VuOiJEb3IifTtjYXNlInBociI6cmV0dXJue2xlbjp0KGUsbiksdG9rZW46IlBociJ9O2Nhc2UibHlkIjpyZXR1cm57bGVuOnQoZSxuKSx0b2tlbjoiTHlkIn07Y2FzZSJsb2MiOnJldHVybntsZW46dChlLG4pLHRva2VuOiJMb2MifTtjYXNlImFlbyI6Y2FzZSJtaW4iOmNhc2UibSI6cmV0dXJue2xlbjp0KGUsbiksdG9rZW46Im0ifTtjYXNlIm1haiI6Y2FzZSJpb24iOnJldHVybntsZW46dChlLG4pLHRva2VuOiIifX1yZXR1cm57bGVuOjB9fSx0aGlzLmdldENsZWY9ZnVuY3Rpb24oZSx0KXt2YXIgYT1lLGk9dGhpcy5za2lwV2hpdGVTcGFjZShlKTtpZihyKGUsaSkpcmV0dXJue2xlbjowfTt2YXIgcz0hMSxvPWUuc3Vic3RyaW5nKGkpO2lmKG4uc3RhcnRzV2l0aChvLCJjbGVmPSIpJiYocz0hMCxvPW8uc3Vic3RyaW5nKDUpLGkrPTUpLDA9PT1vLmxlbmd0aCYmcylyZXR1cm57bGVuOmkrNSx3YXJuOiJObyBjbGVmIHNwZWNpZmllZDogIithfTt2YXIgYz10aGlzLnNraXBXaGl0ZVNwYWNlKG8pO2lmKHIobyxjKSlyZXR1cm57bGVuOjB9O2M+MCYmKGkrPWMsbz1vLnN1YnN0cmluZyhjKSk7dmFyIGw9bnVsbDtpZihuLnN0YXJ0c1dpdGgobywidHJlYmxlIikpbD0idHJlYmxlIjtlbHNlIGlmKG4uc3RhcnRzV2l0aChvLCJiYXNzMyIpKWw9ImJhc3MzIjtlbHNlIGlmKG4uc3RhcnRzV2l0aChvLCJiYXNzIikpbD0iYmFzcyI7ZWxzZSBpZihuLnN0YXJ0c1dpdGgobywidGVub3IiKSlsPSJ0ZW5vciI7ZWxzZSBpZihuLnN0YXJ0c1dpdGgobywiYWx0bzIiKSlsPSJhbHRvMiI7ZWxzZSBpZihuLnN0YXJ0c1dpdGgobywiYWx0bzEiKSlsPSJhbHRvMSI7ZWxzZSBpZihuLnN0YXJ0c1dpdGgobywiYWx0byIpKWw9ImFsdG8iO2Vsc2UgaWYoIXQmJnMmJm4uc3RhcnRzV2l0aChvLCJub25lIikpbD0ibm9uZSI7ZWxzZSBpZihuLnN0YXJ0c1dpdGgobywicGVyYyIpKWw9InBlcmMiO2Vsc2UgaWYoIXQmJnMmJm4uc3RhcnRzV2l0aChvLCJDIikpbD0idGVub3IiO2Vsc2UgaWYoIXQmJnMmJm4uc3RhcnRzV2l0aChvLCJGIikpbD0iYmFzcyI7ZWxzZXtpZih0fHwhc3x8IW4uc3RhcnRzV2l0aChvLCJHIikpcmV0dXJue2xlbjppKzUsd2FybjoiVW5rbm93biBjbGVmIHNwZWNpZmllZDogIithfTtsPSJ0cmVibGUifXJldHVybiBvPW8uc3Vic3RyaW5nKGwubGVuZ3RoKSwoYz10aGlzLmlzTWF0Y2gobywiKzgiKSk+MD9sKz0iKzgiOihjPXRoaXMuaXNNYXRjaChvLCItOCIpKT4wJiYobCs9Ii04Iikse2xlbjppK2wubGVuZ3RoLHRva2VuOmwsZXhwbGljaXQ6c319LHRoaXMuZ2V0QmFyTGluZT1mdW5jdGlvbihlLHQpe3N3aXRjaChlW3RdKXtjYXNlIl0iOnN3aXRjaChlWysrdF0pe2Nhc2UifCI6cmV0dXJue2xlbjoyLHRva2VuOiJiYXJfdGhpY2tfdGhpbiJ9O2Nhc2UiWyI6cmV0dXJuIGVbKyt0XT49IjEiJiZlW3RdPD0iOSJ8fCciJz09PWVbdF0/e2xlbjoyLHRva2VuOiJiYXJfaW52aXNpYmxlIn06e2xlbjoxLHdhcm46IlVua25vd24gYmFyIHN5bWJvbCJ9O2RlZmF1bHQ6cmV0dXJue2xlbjoxLHRva2VuOiJiYXJfaW52aXNpYmxlIn19YnJlYWs7Y2FzZSI6Ijpzd2l0Y2goZVsrK3RdKXtjYXNlIjoiOnJldHVybntsZW46Mix0b2tlbjoiYmFyX2RibF9yZXBlYXQifTtjYXNlInwiOnN3aXRjaChlWysrdF0pe2Nhc2UiXSI6cmV0dXJuInwiPT09ZVsrK3RdJiYiOiI9PT1lWysrdF0/e2xlbjo1LHRva2VuOiJiYXJfZGJsX3JlcGVhdCJ9OntsZW46Myx0b2tlbjoiYmFyX3JpZ2h0X3JlcGVhdCJ9O2Nhc2UifCI6cmV0dXJuIjoiPT09ZVsrK3RdP3tsZW46NCx0b2tlbjoiYmFyX2RibF9yZXBlYXQifTp7bGVuOjMsdG9rZW46ImJhcl9yaWdodF9yZXBlYXQifTtkZWZhdWx0OnJldHVybntsZW46Mix0b2tlbjoiYmFyX3JpZ2h0X3JlcGVhdCJ9fWJyZWFrO2RlZmF1bHQ6cmV0dXJue2xlbjoxLHdhcm46IlVua25vd24gYmFyIHN5bWJvbCJ9fWJyZWFrO2Nhc2UiWyI6aWYoInwiIT09ZVsrK3RdKXJldHVybiBlW3RdPj0iMSImJmVbdF08PSI5Inx8JyInPT09ZVt0XT97bGVuOjEsdG9rZW46ImJhcl9pbnZpc2libGUifTp7bGVuOjB9O3N3aXRjaChlWysrdF0pe2Nhc2UiOiI6cmV0dXJue2xlbjozLHRva2VuOiJiYXJfbGVmdF9yZXBlYXQifTtjYXNlIl0iOnJldHVybntsZW46Myx0b2tlbjoiYmFyX2ludmlzaWJsZSJ9O2RlZmF1bHQ6cmV0dXJue2xlbjoyLHRva2VuOiJiYXJfdGhpY2tfdGhpbiJ9fWJyZWFrO2Nhc2UifCI6c3dpdGNoKGVbKyt0XSl7Y2FzZSJdIjpyZXR1cm57bGVuOjIsdG9rZW46ImJhcl90aGluX3RoaWNrIn07Y2FzZSJ8IjpyZXR1cm4iOiI9PT1lWysrdF0/e2xlbjozLHRva2VuOiJiYXJfbGVmdF9yZXBlYXQifTp7bGVuOjIsdG9rZW46ImJhcl90aGluX3RoaW4ifTtjYXNlIjoiOmZvcih2YXIgcj0wOyI6Ij09PWVbdCtyXTspcisrO3JldHVybntsZW46MStyLHRva2VuOiJiYXJfbGVmdF9yZXBlYXQifTtkZWZhdWx0OnJldHVybntsZW46MSx0b2tlbjoiYmFyX3RoaW4ifX19cmV0dXJue2xlbjowfX0sdGhpcy5nZXRUb2tlbk9mPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspaWYodC5pbmRleE9mKGVbcl0pPDApcmV0dXJue2xlbjpyLHRva2VuOmUuc3Vic3RyaW5nKDAscil9O3JldHVybntsZW46cix0b2tlbjplfX0sdGhpcy5nZXRUb2tlbj1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPXQ7bjxyJiYhdGhpcy5pc1doaXRlU3BhY2UoZVtuXSk7KW4rKztyZXR1cm4gZS5zdWJzdHJpbmcodCxuKX0sdGhpcy5pc01hdGNoPWZ1bmN0aW9uKGUsdCl7dmFyIGE9dGhpcy5za2lwV2hpdGVTcGFjZShlKTtyZXR1cm4gcihlLGEpPzA6bi5zdGFydHNXaXRoKGUuc3Vic3RyaW5nKGEpLHQpP2ErdC5sZW5ndGg6MH0sdGhpcy5nZXRQaXRjaEZyb21Ub2tlbnM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307aWYodC5wb3NpdGlvbj17QTo1LEI6NixDOjAsRDoxLEU6MixGOjMsRzo0LGE6MTIsYjoxMyxjOjcsZDo4LGU6OSxmOjEwLGc6MTF9W2VbMF0udG9rZW5dLHZvaWQgMD09PXQucG9zaXRpb24pcmV0dXJue3dhcm46IlBpdGNoIGV4cGVjdGVkLiBGb3VuZDogIitlWzBdLnRva2VufTtmb3IoZS5zaGlmdCgpO2UubGVuZ3RoOylzd2l0Y2goZVswXS50b2tlbil7Y2FzZSIsIjp0LnBvc2l0aW9uLT03LGUuc2hpZnQoKTticmVhaztjYXNlIiciOnQucG9zaXRpb24rPTcsZS5zaGlmdCgpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHR9cmV0dXJuIHR9LHRoaXMuZ2V0S2V5QWNjaWRlbnRhbHMyPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdDtlLmxlbmd0aD4wOyl7dmFyIHI7aWYoIl4iPT09ZVswXS50b2tlbil7aWYocj0ic2hhcnAiLGUuc2hpZnQoKSwwPT09ZS5sZW5ndGgpcmV0dXJue2FjY3M6dCx3YXJuOiJFeHBlY3RlZCBub3RlIG5hbWUgYWZ0ZXIgIityfTtzd2l0Y2goZVswXS50b2tlbil7Y2FzZSJeIjpyPSJkYmxzaGFycCIsZS5zaGlmdCgpO2JyZWFrO2Nhc2UiLyI6cj0icXVhcnRlcnNoYXJwIixlLnNoaWZ0KCl9fWVsc2UgaWYoIj0iPT09ZVswXS50b2tlbilyPSJuYXR1cmFsIixlLnNoaWZ0KCk7ZWxzZXtpZigiXyIhPT1lWzBdLnRva2VuKXJldHVybnthY2NzOnR9O2lmKHI9ImZsYXQiLGUuc2hpZnQoKSwwPT09ZS5sZW5ndGgpcmV0dXJue2FjY3M6dCx3YXJuOiJFeHBlY3RlZCBub3RlIG5hbWUgYWZ0ZXIgIityfTtzd2l0Y2goZVswXS50b2tlbil7Y2FzZSJfIjpyPSJkYmxmbGF0IixlLnNoaWZ0KCk7YnJlYWs7Y2FzZSIvIjpyPSJxdWFydGVyZmxhdCIsZS5zaGlmdCgpfX1pZigwPT09ZS5sZW5ndGgpcmV0dXJue2FjY3M6dCx3YXJuOiJFeHBlY3RlZCBub3RlIG5hbWUgYWZ0ZXIgIityfTtzd2l0Y2goZVswXS50b2tlblswXSl7Y2FzZSJhIjpjYXNlImIiOmNhc2UiYyI6Y2FzZSJkIjpjYXNlImUiOmNhc2UiZiI6Y2FzZSJnIjpjYXNlIkEiOmNhc2UiQiI6Y2FzZSJDIjpjYXNlIkQiOmNhc2UiRSI6Y2FzZSJGIjpjYXNlIkciOnZvaWQgMD09PXQmJih0PVtdKSx0LnB1c2goe2FjYzpyLG5vdGU6ZVswXS50b2tlblswXX0pLDE9PT1lWzBdLnRva2VuLmxlbmd0aD9lLnNoaWZ0KCk6ZVswXS50b2tlbj1lWzBdLnRva2VuLnN1YnN0cmluZygxKTticmVhaztkZWZhdWx0OnJldHVybnthY2NzOnQsd2FybjoiRXhwZWN0ZWQgbm90ZSBuYW1lIGFmdGVyICIrcisiIEZvdW5kOiAiK2VbMF0udG9rZW59fX1yZXR1cm57YWNjczp0fX0sdGhpcy5nZXRLZXlBY2NpZGVudGFsPWZ1bmN0aW9uKGUpe3ZhciB0PXsiXiI6InNoYXJwIiwiXl4iOiJkYmxzaGFycCIsIj0iOiJuYXR1cmFsIixfOiJmbGF0IixfXzoiZGJsZmxhdCIsIl8vIjoicXVhcnRlcmZsYXQiLCJeLyI6InF1YXJ0ZXJzaGFycCJ9LG49dGhpcy5za2lwV2hpdGVTcGFjZShlKTtpZihyKGUsbikpcmV0dXJue2xlbjowfTt2YXIgYT1udWxsO3N3aXRjaChlW25dKXtjYXNlIl4iOmNhc2UiXyI6Y2FzZSI9IjphPWVbbl07YnJlYWs7ZGVmYXVsdDpyZXR1cm57bGVuOjB9fWlmKG4rKyxyKGUsbikpcmV0dXJue2xlbjoxLHdhcm46IkV4cGVjdGVkIG5vdGUgbmFtZSBhZnRlciBhY2NpZGVudGFsIn07c3dpdGNoKGVbbl0pe2Nhc2UiYSI6Y2FzZSJiIjpjYXNlImMiOmNhc2UiZCI6Y2FzZSJlIjpjYXNlImYiOmNhc2UiZyI6Y2FzZSJBIjpjYXNlIkIiOmNhc2UiQyI6Y2FzZSJEIjpjYXNlIkUiOmNhc2UiRiI6Y2FzZSJHIjpyZXR1cm57bGVuOm4rMSx0b2tlbjp7YWNjOnRbYV0sbm90ZTplW25dfX07Y2FzZSJeIjpjYXNlIl8iOmNhc2UiLyI6aWYoYSs9ZVtuXSxuKysscihlLG4pKXJldHVybntsZW46Mix3YXJuOiJFeHBlY3RlZCBub3RlIG5hbWUgYWZ0ZXIgYWNjaWRlbnRhbCJ9O3N3aXRjaChlW25dKXtjYXNlImEiOmNhc2UiYiI6Y2FzZSJjIjpjYXNlImQiOmNhc2UiZSI6Y2FzZSJmIjpjYXNlImciOmNhc2UiQSI6Y2FzZSJCIjpjYXNlIkMiOmNhc2UiRCI6Y2FzZSJFIjpjYXNlIkYiOmNhc2UiRyI6cmV0dXJue2xlbjpuKzEsdG9rZW46e2FjYzp0W2FdLG5vdGU6ZVtuXX19O2RlZmF1bHQ6cmV0dXJue2xlbjoyLHdhcm46IkV4cGVjdGVkIG5vdGUgbmFtZSBhZnRlciBhY2NpZGVudGFsIn19YnJlYWs7ZGVmYXVsdDpyZXR1cm57bGVuOjEsd2FybjoiRXhwZWN0ZWQgbm90ZSBuYW1lIGFmdGVyIGFjY2lkZW50YWwifX19LHRoaXMuaXNXaGl0ZVNwYWNlPWZ1bmN0aW9uKGUpe3JldHVybiIgIj09PWV8fCJcdCI9PT1lfHwiEiI9PT1lfSx0aGlzLmdldE1lYXQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUuaW5kZXhPZigiJSIsdCk7Zm9yKG4+PTAmJm48ciYmKHI9bik7dDxyJiYoIiAiPT09ZVt0XXx8Ilx0Ij09PWVbdF18fCISIj09PWVbdF0pOyl0Kys7Zm9yKDt0PHImJigiICI9PT1lW3ItMV18fCJcdCI9PT1lW3ItMV18fCISIj09PWVbci0xXSk7KXItLTtyZXR1cm57c3RhcnQ6dCxlbmQ6cn19O3ZhciBhPWZ1bmN0aW9uKGUpe3JldHVybiBlPj0iQSImJmU8PSJaInx8ZT49ImEiJiZlPD0ieiJ9LGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PSIwIiYmZTw9IjkifTt0aGlzLnRva2VuaXplPWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBzPXRoaXMuZ2V0TWVhdChlLHQscik7dD1zLnN0YXJ0LHI9cy5lbmQ7Zm9yKHZhciBvLGM9W107dDxyOyl7aWYoJyInPT09ZVt0XSl7Zm9yKG89dCsxO288ciYmJyInIT09ZVtvXTspbysrO2MucHVzaCh7dHlwZToicXVvdGUiLHRva2VuOmUuc3Vic3RyaW5nKHQrMSxvKSxzdGFydDp0KzEsZW5kOm99KSxvKyt9ZWxzZSBpZihhKGVbdF0pKXtpZihvPXQrMSxuKWZvcig7bzxyJiYhdGhpcy5pc1doaXRlU3BhY2UoZVtvXSk7KW8rKztlbHNlIGZvcig7bzxyJiZhKGVbb10pOylvKys7Yy5wdXNoKHt0eXBlOiJhbHBoYSIsdG9rZW46ZS5zdWJzdHJpbmcodCxvKSxjb250aW51ZUlkOmkoZVtvXSksc3RhcnQ6dCxlbmQ6b30pLHQ9bysxfWVsc2UgaWYoIi4iPT09ZVt0XSYmaShlW28rMV0pKXtvPXQrMTtmb3IodmFyIGw7bzxyJiZpKGVbb10pOylvKys7bD1wYXJzZUZsb2F0KGUuc3Vic3RyaW5nKHQsbykpLGMucHVzaCh7dHlwZToibnVtYmVyIix0b2tlbjplLnN1YnN0cmluZyh0LG8pLGludHQ6bnVsbCxmbG9hdHQ6bCxjb250aW51ZUlkOmEoZVtvXSksc3RhcnQ6dCxlbmQ6b30pLHQ9bysxfWVsc2UgaWYoaShlW3RdKXx8Ii0iPT09ZVt0XSYmaShlW28rMV0pKXtvPXQrMTtmb3IodmFyIGgsdT1udWxsO288ciYmaShlW29dKTspbysrO2lmKCIuIj09PWVbb10mJmkoZVtvKzFdKSlmb3IobysrO288ciYmaShlW29dKTspbysrO2Vsc2UgdT1wYXJzZUludChlLnN1YnN0cmluZyh0LG8pKTtoPXBhcnNlRmxvYXQoZS5zdWJzdHJpbmcodCxvKSksYy5wdXNoKHt0eXBlOiJudW1iZXIiLHRva2VuOmUuc3Vic3RyaW5nKHQsbyksaW50dDp1LGZsb2F0dDpoLGNvbnRpbnVlSWQ6YShlW29dKSxzdGFydDp0LGVuZDpvfSksdD1vKzF9ZWxzZSIgIj09PWVbdF18fCJcdCI9PT1lW3RdfHxjLnB1c2goe3R5cGU6InB1bmN0Iix0b2tlbjplW3RdLHN0YXJ0OnQsZW5kOnQrMX0pLG89dCsxO3Q9b31yZXR1cm4gY30sdGhpcy5nZXRWb2ljZVRva2VuPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49dDtuPHImJnRoaXMuaXNXaGl0ZVNwYWNlKGVbbl0pfHwiPSI9PT1lW25dOyluKys7aWYoJyInPT09ZVtuXSl7dmFyIGE9ZS5pbmRleE9mKCciJyxuKzEpO3JldHVybi0xPT09YXx8YT49cj97bGVuOjEsZXJyOiJNaXNzaW5nIGNsb3NlIHF1b3RlIn06e2xlbjphLXQrMSx0b2tlbjp0aGlzLnRyYW5zbGF0ZVN0cmluZyhlLnN1YnN0cmluZyhuKzEsYSkpfX1mb3IodmFyIGk9bjtpPHImJiF0aGlzLmlzV2hpdGVTcGFjZShlW2ldKSYmIj0iIT09ZVtpXTspaSsrO3JldHVybntsZW46aS10KzEsdG9rZW46ZS5zdWJzdHJpbmcobixpKX19O3ZhciBzPXsiYGEiOiLDoCIsIidhIjoiw6EiLCJeYSI6IsOiIiwifmEiOiLDoyIsJyJhJzoiw6QiLG9hOiLDpSIsYWE6IsOlIiwiPWEiOiLEgSIsdWE6IsSDIiwiO2EiOiLEhSIsImBlIjoiw6giLCInZSI6IsOpIiwiXmUiOiLDqiIsJyJlJzoiw6siLCI9ZSI6IsSTIix1ZToixJUiLCI7ZSI6IsSZIiwiLmUiOiLElyIsImBpIjoiw6wiLCInaSI6IsOtIiwiXmkiOiLDriIsJyJpJzoiw68iLCI9aSI6IsSrIix1aToixK0iLCI7aSI6IsSvIiwiYG8iOiLDsiIsIidvIjoiw7MiLCJebyI6IsO0Iiwifm8iOiLDtSIsJyJvJzoiw7YiLCI9byI6IsWNIix1bzoixY8iLCIvbyI6IsO4IiwiYHUiOiLDuSIsIid1Ijoiw7oiLCJedSI6IsO7IiwifnUiOiLFqSIsJyJ1Jzoiw7wiLG91OiLFryIsIj11IjoixasiLHV1OiLFrSIsIjt1IjoixbMiLCJgQSI6IsOAIiwiJ0EiOiLDgSIsIl5BIjoiw4IiLCJ+QSI6IsODIiwnIkEnOiLDhCIsb0E6IsOFIixBQToiw4UiLCI9QSI6IsSAIix1QToixIIiLCI7QSI6IsSEIiwiYEUiOiLDiCIsIidFIjoiw4kiLCJeRSI6IsOKIiwnIkUnOiLDiyIsIj1FIjoixJIiLHVFOiLElCIsIjtFIjoixJgiLCIuRSI6IsSWIiwiYEkiOiLDjCIsIidJIjoiw40iLCJeSSI6IsOOIiwifkkiOiLEqCIsJyJJJzoiw48iLCI9SSI6IsSqIix1SToixKwiLCI7SSI6IsSuIiwiLkkiOiLEsCIsImBPIjoiw5IiLCInTyI6IsOTIiwiXk8iOiLDlCIsIn5PIjoiw5UiLCciTyc6IsOWIiwiPU8iOiLFjCIsdU86IsWOIiwiL08iOiLDmCIsImBVIjoiw5kiLCInVSI6IsOaIiwiXlUiOiLDmyIsIn5VIjoixagiLCciVSc6IsOcIixvVToixa4iLCI9VSI6IsWqIix1VToixawiLCI7VSI6IsWyIixhZToiw6YiLEFFOiLDhiIsb2U6IsWTIixPRToixZIiLHNzOiLDnyIsIidjIjoixIciLCJeYyI6IsSJIix1YzoixI0iLGNjOiLDpyIsIi5jIjoixIsiLGNDOiLDhyIsIidDIjoixIYiLCJeQyI6IsSIIix1QzoixIwiLCIuQyI6IsSKIiwifk4iOiLDkSIsIn5uIjoiw7EiLCI9cyI6IsWhIix2czoixaEiLERIOiLDkCIsZGg6IsOwIixITzoixZAiLEhvOiLFkSIsSFU6IsWwIixIdToixbEiLCInWSI6IsOdIiwiJ3kiOiLDvSIsIl5ZIjoixbYiLCJeeSI6IsW3IiwnIlknOiLFuCIsJyJ5Jzoiw78iLHZTOiLFoCIsdlo6IsW9Iix2ejoixb4ifSxvPXsiIyI6IuKZryIsYjoi4pmtIiwiPSI6IuKZriJ9LGM9ezIwMToi4pmvIiwyMDI6IuKZrSIsMjAzOiLima4iLDI0MToiwqEiLDI0MjoiwqIiLDI1MjoiYSIsMjYyOiIyIiwyNzI6Im8iLDMwMjoiw4IiLDMxMjoiw4oiLDMyMjoiw5IiLDMzMjoiw5oiLDM0Mjoiw6IiLDM1Mjoiw6oiLDM2Mjoiw7IiLDM3Mjoiw7oiLDI0MzoiwqMiLDI1MzoiwqsiLDI2MzoiMyIsMjczOiLCuyIsMzAzOiLDgyIsMzEzOiLDiyIsMzIzOiLDkyIsMzMzOiLDmyIsMzQzOiLDoyIsMzUzOiLDqyIsMzYzOiLDsyIsMzczOiLDuyIsMjQ0OiLCpCIsMjU0OiLCrCIsMjY0OiIgIMyBIiwyNzQ6IjHigYQ0IiwzMDQ6IsOEIiwzMTQ6IsOMIiwzMjQ6IsOUIiwzMzQ6IsOcIiwzNDQ6IsOkIiwzNTQ6IsOsIiwzNjQ6IsO0IiwzNzQ6IsO8IiwyNDU6IsKlIiwyNTU6Ii0iLDI2NToizrwiLDI3NToiMeKBhDIiLDMwNToiw4UiLDMxNToiw40iLDMyNToiw5UiLDMzNToiw50iLDM0NToiw6UiLDM1NToiw60iLDM2NToiw7UiLDM3NToiw70iLDI0NjoiwqYiLDI1Njoiwq4iLDI2NjoiwrYiLDI3NjoiM+KBhDQiLDMwNjoiw4YiLDMxNjoiw44iLDMyNjoiw5YiLDMzNjoiw54iLDM0Njoiw6YiLDM1Njoiw64iLDM2Njoiw7YiLDM3Njoiw74iLDI0NzoiwqciLDI1NzoiIMyEIiwyNjc6IsK3IiwyNzc6IsK/IiwzMDc6IsOHIiwzMTc6IsOPIiwzMjc6IsOXIiwzMzc6IsOfIiwzNDc6IsOnIiwzNTc6IsOvIiwzNjc6IsO3IiwzNzc6IsO/IiwyNTA6IiDMiCIsMjYwOiLCsCIsMjcwOiIgzKciLDMwMDoiw4AiLDMxMDoiw4giLDMyMDoiw5AiLDMzMDoiw5giLDM0MDoiw6AiLDM1MDoiw6giLDM2MDoiw7AiLDM3MDoiw7giLDI1MToiwqkiLDI2MToiwrEiLDI3MToiMSIsMzAxOiLDgSIsMzExOiLDiSIsMzIxOiLDkSIsMzMxOiLDmSIsMzQxOiLDoSIsMzUxOiLDqSIsMzYxOiLDsSIsMzcxOiLDuSJ9O2Z1bmN0aW9uIGwoZSl7dmFyIHQ9L14oXGQrKVwuLy5leGVjKGUpO3JldHVybiB0P3RbMV06bnVsbH10aGlzLnRyYW5zbGF0ZVN0cmluZz1mdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KCJcXCIpO2lmKDE9PT10Lmxlbmd0aClyZXR1cm4gZTt2YXIgcj1udWxsO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKG51bGw9PT1yKXI9ZTtlbHNle3ZhciB0PXNbZS5zdWJzdHJpbmcoMCwyKV07dm9pZCAwIT09dD9yKz10K2Uuc3Vic3RyaW5nKDIpOnZvaWQgMCE9PSh0PWNbZS5zdWJzdHJpbmcoMCwzKV0pP3IrPXQrZS5zdWJzdHJpbmcoMyk6KHQ9b1tlLnN1YnN0cmluZygwLDEpXSxyKz12b2lkIDAhPT10P3QrZS5zdWJzdHJpbmcoMSk6IlxcIitlKX19KSkscn0sdGhpcy5nZXROdW1iZXI9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDt0PGUubGVuZ3RoOylzd2l0Y2goZVt0XSl7Y2FzZSIwIjpyKj0xMCx0Kys7YnJlYWs7Y2FzZSIxIjpyPTEwKnIrMSx0Kys7YnJlYWs7Y2FzZSIyIjpyPTEwKnIrMix0Kys7YnJlYWs7Y2FzZSIzIjpyPTEwKnIrMyx0Kys7YnJlYWs7Y2FzZSI0IjpyPTEwKnIrNCx0Kys7YnJlYWs7Y2FzZSI1IjpyPTEwKnIrNSx0Kys7YnJlYWs7Y2FzZSI2IjpyPTEwKnIrNix0Kys7YnJlYWs7Y2FzZSI3IjpyPTEwKnIrNyx0Kys7YnJlYWs7Y2FzZSI4IjpyPTEwKnIrOCx0Kys7YnJlYWs7Y2FzZSI5IjpyPTEwKnIrOSx0Kys7YnJlYWs7ZGVmYXVsdDpyZXR1cm57bnVtOnIsaW5kZXg6dH19cmV0dXJue251bTpyLGluZGV4OnR9fSx0aGlzLmdldEZyYWN0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIHI9MSxuPTE7aWYoIi8iIT09ZVt0XSl7dmFyIGE9dGhpcy5nZXROdW1iZXIoZSx0KTtyPWEubnVtLHQ9YS5pbmRleH1pZigiLyI9PT1lW3RdKXtpZigiLyI9PT1lWysrdF0pe2Zvcih2YXIgaT0uNTsiLyI9PT1lW3QrK107KWkvPTI7cmV0dXJue3ZhbHVlOnIqaSxpbmRleDp0LTF9fXZhciBzPXQsbz10aGlzLmdldE51bWJlcihlLHQpOzA9PT1vLm51bSYmcz09PXQmJihvLm51bT0yKSwwIT09by5udW0mJihuPW8ubnVtKSx0PW8uaW5kZXh9cmV0dXJue3ZhbHVlOnIvbixpbmRleDp0fX07dmFyIGg9W3ttYXRjaDovLFxzKlRoZSQvLHJlcGxhY2U6IlRoZSAifSx7bWF0Y2g6Lyxccyp0aGUkLyxyZXBsYWNlOiJ0aGUgIn0se21hdGNoOi8sXHMqQSQvLHJlcGxhY2U6IkEgIn0se21hdGNoOi8sXHMqYSQvLHJlcGxhY2U6ImEgIn0se21hdGNoOi8sXHMqQW4kLyxyZXBsYWNlOiJBbiAifSx7bWF0Y2g6LyxccyphbiQvLHJlcGxhY2U6ImFuICJ9LHttYXRjaDovLFxzKkRhJC8scmVwbGFjZToiRGEgIn0se21hdGNoOi8sXHMqTGEkLyxyZXBsYWNlOiJMYSAifSx7bWF0Y2g6LyxccypMZSQvLHJlcGxhY2U6IkxlICJ9LHttYXRjaDovLFxzKkxlcyQvLHJlcGxhY2U6IkxlcyAifSx7bWF0Y2g6LyxccypZZSQvLHJlcGxhY2U6IlllICJ9XTt0aGlzLnRoZVJldmVyc2VyPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8aC5sZW5ndGg7dCsrKXt2YXIgcj1oW3RdLG49ZS5tYXRjaChyLm1hdGNoKTtpZihuKXt2YXIgYT1sKGUpO2EmJihlPShlPWUucmVwbGFjZShhKyIuIiwiIikpLnRyaW0oKSk7dmFyIGk9blswXS5sZW5ndGgscz1yLnJlcGxhY2UrZS5zdWJzdHJpbmcoMCxlLmxlbmd0aC1pKTtyZXR1cm4gYSYmKHM9YSsiLiAiK3MpLHN9fXJldHVybiBlfSx0aGlzLnN0cmlwQ29tbWVudD1mdW5jdGlvbihlKXt2YXIgdD1lLmluZGV4T2YoIiUiKTtyZXR1cm4gdD49MD9uLnN0cmlwKGUuc3Vic3RyaW5nKDAsdCkpOm4uc3RyaXAoZSl9LHRoaXMuZ2V0SW50PWZ1bmN0aW9uKGUpe3ZhciB0PXBhcnNlSW50KGUpO2lmKGlzTmFOKHQpKXJldHVybntkaWdpdHM6MH07dmFyIHI9IiIrdDtyZXR1cm57dmFsdWU6dCxkaWdpdHM6ZS5pbmRleE9mKHIpK3IubGVuZ3RofX0sdGhpcy5nZXRGbG9hdD1mdW5jdGlvbihlKXt2YXIgdD1wYXJzZUZsb2F0KGUpO2lmKGlzTmFOKHQpKXJldHVybntkaWdpdHM6MH07dmFyIHI9IiIrdDtyZXR1cm57dmFsdWU6dCxkaWdpdHM6ZS5pbmRleE9mKHIpK3IubGVuZ3RofX0sdGhpcy5nZXRNZWFzdXJlbWVudD1mdW5jdGlvbihlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJue3VzZWQ6MH07dmFyIHQ9MSxyPSIiO2lmKCItIj09PWVbMF0udG9rZW4pZS5zaGlmdCgpLHI9Ii0iLHQrKztlbHNlIGlmKCJudW1iZXIiIT09ZVswXS50eXBlKXJldHVybnt1c2VkOjB9O2lmKHIrPWUuc2hpZnQoKS50b2tlbiwwPT09ZS5sZW5ndGgpcmV0dXJue3VzZWQ6MSx2YWx1ZTpwYXJzZUludChyKX07dmFyIG49ZS5zaGlmdCgpO2lmKCIuIj09PW4udG9rZW4pe2lmKHQrKywwPT09ZS5sZW5ndGgpcmV0dXJue3VzZWQ6dCx2YWx1ZTpwYXJzZUludChyKX07aWYoIm51bWJlciI9PT1lWzBdLnR5cGUmJihyPXIrIi4iKyhuPWUuc2hpZnQoKSkudG9rZW4sdCsrLDA9PT1lLmxlbmd0aCkpcmV0dXJue3VzZWQ6dCx2YWx1ZTpwYXJzZUZsb2F0KHIpfTtuPWUuc2hpZnQoKX1zd2l0Y2gobi50b2tlbil7Y2FzZSJwdCI6Y2FzZSJweCI6cmV0dXJue3VzZWQ6dCsxLHZhbHVlOnBhcnNlRmxvYXQocil9O2Nhc2UiY20iOnJldHVybnt1c2VkOnQrMSx2YWx1ZTpwYXJzZUZsb2F0KHIpLzIuNTQqNzJ9O2Nhc2UiaW4iOnJldHVybnt1c2VkOnQrMSx2YWx1ZTo3MipwYXJzZUZsb2F0KHIpfTtkZWZhdWx0OnJldHVybiBlLnVuc2hpZnQobikse3VzZWQ6dCx2YWx1ZTpwYXJzZUZsb2F0KHIpfX19O3ZhciB1PWZ1bmN0aW9uKGUpe3JldHVybiBlPShlPWUucmVwbGFjZSgvXFxuL2csIlxuIikpLnJlcGxhY2UoL1xcIi9nLCciJyl9O3RoaXMuZ2V0QnJhY2tldHRlZFN1YnN0cmluZz1mdW5jdGlvbihlLHQscixuKXtmb3IodmFyIGE9bnx8ZVt0XSxpPXQrMSxzPSExO2k8ZS5sZW5ndGgmJihzfHxlW2ldIT09YSk7KXM9IlxcIj09PWVbaV0sKytpO3JldHVybiBlW2ldPT09YT9baS10KzEsdShlLnN1YnN0cmluZyh0KzEsaSkpLCEwXTooKGk9dCtyKT5lLmxlbmd0aC0xJiYoaT1lLmxlbmd0aC0xKSxbaS10KzEsdShlLnN1YnN0cmluZyh0KzEsaSkpLCExXSl9fTthLnByb3RvdHlwZS5wZWVrTGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxpbmVzW3RoaXMubGluZUluZGV4XX0sYS5wcm90b3R5cGUubmV4dExpbmU9ZnVuY3Rpb24oKXtpZih0aGlzLmxpbmVJbmRleD4wJiYodGhpcy5tdWx0aWxpbmVWYXJzLmlDaGFyKz10aGlzLmxpbmVzW3RoaXMubGluZUluZGV4LTFdLmxlbmd0aCsxKSx0aGlzLmxpbmVJbmRleDx0aGlzLmxpbmVzLmxlbmd0aCl7dmFyIGU9dGhpcy5saW5lc1t0aGlzLmxpbmVJbmRleF07cmV0dXJuIHRoaXMubGluZUluZGV4KyssZX1yZXR1cm4gbnVsbH0sZS5leHBvcnRzPWF9LDI4MjE6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoODY3KSxhPXIoNDIwOCksaT1yKDk0NDcpLHM9e30sbz17QzowLCJDIyI6MSxEYjoxLEQ6MiwiRCMiOjMsRWI6MyxFOjQsRjo1LCJGIyI6NixHYjo2LEc6NywiRyMiOjgsQWI6OCxBOjksIkEjIjoxMCxCYjoxMCxCOjExfSxjPVsiQyIsIkRiIiwiRCIsIkViIiwiRSIsIkYiLCJGIyIsIkciLCJBYiIsIkEiLCJCYiIsIkIiXSxsPVsiQyIsIkMjIiwiRCIsIkQjIiwiRSIsIkYiLCJGIyIsIkciLCJHIyIsIkEiLCJCYiIsIkIiXTtzLmtleVNpZ25hdHVyZT1mdW5jdGlvbihlLHQscixuLGEpe2lmKCJwZXJjIj09PWUuY2xlZi50eXBlfHwibm9uZSI9PT1lLmNsZWYudHlwZSlyZXR1cm57YWNjaWRlbnRhbHM6aSh0KSxyb290OnIsYWNjOm59O2F8fChhPTApLGUubG9jYWxUcmFuc3Bvc2VWZXJ0aWNhbE1vdmVtZW50PTAsZS5sb2NhbFRyYW5zcG9zZVByZWZlckZsYXRzPSExO3ZhciBzPWkodCk7aWYoIXMpcmV0dXJuIGUua2V5O2lmKGUubG9jYWxUcmFuc3Bvc2U9KGUuZ2xvYmFsVHJhbnNwb3NlP2UuZ2xvYmFsVHJhbnNwb3NlOjApK2EsIWUubG9jYWxUcmFuc3Bvc2UpcmV0dXJue2FjY2lkZW50YWxzOnMscm9vdDpyLGFjYzpufTtpZihlLmdsb2JhbFRyYW5zcG9zZU9yaWdLZXlTaWc9cyxlLmxvY2FsVHJhbnNwb3NlJTEyPT0wKXJldHVybiBlLmxvY2FsVHJhbnNwb3NlVmVydGljYWxNb3ZlbWVudD1lLmxvY2FsVHJhbnNwb3NlLzEyKjcse2FjY2lkZW50YWxzOnMscm9vdDpyLGFjYzpufTt2YXIgaD10WzBdOyJiIj09PXRbMV18fCIjIj09PXRbMV0/KGgrPXRbMV0sdD10LnN1YnN0cigyKSk6dD10LnN1YnN0cigxKTt2YXIgdT1vW2hdLGQ9dm9pZCAwIT09dTtkfHwodT0wLGg9IkMiLHQ9IiIpO2Zvcih2YXIgZj11K2UubG9jYWxUcmFuc3Bvc2U7ZjwwOylmKz0xMjtmPjExJiYoZiU9MTIpO3ZhciBwPSJtIj09PXRbMF0/bFtmXTpjW2ZdLG09cCt0LGc9aShtKTswIT09Zy5sZW5ndGgmJiJmbGF0IiE9PWdbMF0uYWNjfHwoZS5sb2NhbFRyYW5zcG9zZVByZWZlckZsYXRzPSEwKTt2YXIgdj1tLmNoYXJDb2RlQXQoMCktaC5jaGFyQ29kZUF0KDApO3JldHVybiBlLmxvY2FsVHJhbnNwb3NlPjA/djwwP3YrPTc6MD09PXYmJigiIyIhPT1oWzFdJiYiYiIhPT1tWzFdfHwodis9NykpOmUubG9jYWxUcmFuc3Bvc2U8MCYmKHY+MD92LT03OjA9PT12JiYoImIiIT09aFsxXSYmIiMiIT09bVsxXXx8KHYtPTcpKSksZS5sb2NhbFRyYW5zcG9zZT4wP2UubG9jYWxUcmFuc3Bvc2VWZXJ0aWNhbE1vdmVtZW50PXYrNypNYXRoLmZsb29yKGUubG9jYWxUcmFuc3Bvc2UvMTIpOmUubG9jYWxUcmFuc3Bvc2VWZXJ0aWNhbE1vdmVtZW50PXYrNypNYXRoLmNlaWwoZS5sb2NhbFRyYW5zcG9zZS8xMiksZD97YWNjaWRlbnRhbHM6Zyxyb290OnBbMF0sYWNjOnAubGVuZ3RoPjE/cFsxXToiIn06e2FjY2lkZW50YWxzOltdLHJvb3Q6cixhY2M6bn19LHMuY2hvcmROYW1lPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEodCxlLmxvY2FsVHJhbnNwb3NlLGUubG9jYWxUcmFuc3Bvc2VQcmVmZXJGbGF0cyxlLmZyZWVnY2hvcmQpfTt2YXIgaD1bImMiLCJkIiwiZSIsImYiLCJnIiwiYSIsImIiXSx1PXtkYmxmbGF0Oi0yLGZsYXQ6LTEsbmF0dXJhbDowLHNoYXJwOjEsZGJsc2hhcnA6Mn0sZD17Ii0yIjoiZGJsZmxhdCIsIi0xIjoiZmxhdCIsMDoibmF0dXJhbCIsMToic2hhcnAiLDI6ImRibHNoYXJwIn0sZj17Ii0yIjoiX18iLCItMSI6Il8iLDA6Ij0iLDE6Il4iLDI6Il5eIn07cy5ub3RlPWZ1bmN0aW9uKGUsdCl7aWYoZS5sb2NhbFRyYW5zcG9zZSYmInBlcmMiIT09ZS5jbGVmLnR5cGUpe3ZhciByPXQucGl0Y2g7aWYoZS5sb2NhbFRyYW5zcG9zZVZlcnRpY2FsTW92ZW1lbnQmJih0LnBpdGNoPXQucGl0Y2grZS5sb2NhbFRyYW5zcG9zZVZlcnRpY2FsTW92ZW1lbnQsdC5uYW1lKSl7dmFyIGE9dC5hY2NpZGVudGFsP3QubmFtZS5zdWJzdHJpbmcoMSk6dC5uYW1lLGk9dC5hY2NpZGVudGFsP3QubmFtZVswXToiIixzPW4ucGl0Y2hJbmRleChhKTt0Lm5hbWU9aStuLm5vdGVOYW1lKHMrZS5sb2NhbFRyYW5zcG9zZVZlcnRpY2FsTW92ZW1lbnQpfWlmKHQuYWNjaWRlbnRhbCl7dmFyIG89ZnVuY3Rpb24oZSx0LHIsbixhKXtmb3IodmFyIGk9aFsoZSs0OSklN10scz0wLG89MDtvPG4ubGVuZ3RoO28rKyluW29dLm5vdGUudG9Mb3dlckNhc2UoKT09PWkmJihzPXVbbltvXS5hY2NdKTtmb3IodmFyIGM9dVtyXS1zLGw9aFsodCs0OSklN10sZD0wLGY9MDtmPGEuYWNjaWRlbnRhbHMubGVuZ3RoO2YrKylhLmFjY2lkZW50YWxzW2ZdLm5vdGUudG9Mb3dlckNhc2UoKT09PWwmJihkPXVbYS5hY2NpZGVudGFsc1tmXS5hY2NdKTt2YXIgcD1jK2Q7cmV0dXJuIHA8LTImJih0LS0scCs9ImMiPT09bHx8ImYiPT09bD8xOjIpLHA+MiYmKHQrKyxwLT0iYiI9PT1sfHwiZSI9PT1sPzE6MiksW3QscF19KHIsdC5waXRjaCx0LmFjY2lkZW50YWwsZS5nbG9iYWxUcmFuc3Bvc2VPcmlnS2V5U2lnLGUudGFyZ2V0S2V5KTt0LnBpdGNoPW9bMF0sdC5hY2NpZGVudGFsPWRbb1sxXV0sdC5uYW1lJiYodC5uYW1lPWZbb1sxXV0rdC5uYW1lLnJlcGxhY2UoL1tfXj1dL2csIiIpKX19fSxlLmV4cG9ydHM9c30sODY3OmZ1bmN0aW9uKGUpe3ZhciB0PXt9LHI9WyJDLCwsIiwiRCwsLCIsIkUsLCwiLCJGLCwsIiwiRywsLCIsIkEsLCwiLCJCLCwsIiwiQywsIiwiRCwsIiwiRSwsIiwiRiwsIiwiRywsIiwiQSwsIiwiQiwsIiwiQywiLCJELCIsIkUsIiwiRiwiLCJHLCIsIkEsIiwiQiwiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkEiLCJCIiwiYyIsImQiLCJlIiwiZiIsImciLCJhIiwiYiIsImMnIiwiZCciLCJlJyIsImYnIiwiZyciLCJhJyIsImInIiwiYycnIiwiZCcnIiwiZScnIiwiZicnIiwiZycnIiwiYScnIiwiYicnIiwiYycnJyIsImQnJyciLCJlJycnIiwiZicnJyIsImcnJyciLCJhJycnIiwiYicnJyJdO3QucGl0Y2hJbmRleD1mdW5jdGlvbihlKXtyZXR1cm4gci5pbmRleE9mKGUpfSx0Lm5vdGVOYW1lPWZ1bmN0aW9uKGUpe3JldHVybiByW2VdfSxlLmV4cG9ydHM9dH0sNDIwODpmdW5jdGlvbihlKXt2YXIgdD1bIkMiLCJD4pmvIiwiRCIsIkTima8iLCJFIiwiRiIsIkbima8iLCJHIiwiR+KZryIsIkEiLCJB4pmvIiwiQiJdLHI9WyJDIiwiROKZrSIsIkQiLCJF4pmtIiwiRSIsIkYiLCJH4pmtIiwiRyIsIkHima0iLCJBIiwiQuKZrSIsIkIiXSxuPVsiQyIsIkMjIiwiRCIsIkQjIiwiRSIsIkYiLCJGIyIsIkciLCJHIyIsIkEiLCJBIyIsIkIiXSxhPVsiQyIsIkRiIiwiRCIsIkViIiwiRSIsIkYiLCJHYiIsIkciLCJBYiIsIkEiLCJCYiIsIkIiXTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSxpLHMsbyl7aWYoIWl8fGklMTI9PTApcmV0dXJuIGU7Zm9yKDtpPDA7KWkrPTEyO2k+MTEmJihpJT0xMik7dmFyIGM9ZS5tYXRjaCgvXihbQS1HXVtiI+KZreKZr10/KShbXlwvXSspP1wvPyhbQS1HXVtiI+KZreKZr10/KT8oLispPy8pO2lmKCFjKXJldHVybiBlO3ZhciBsPWNbMV0saD1jWzJdLHU9Y1szXSxkPWNbNF07aWYoKGY9dC5pbmRleE9mKGwpKTwwJiYoZj1yLmluZGV4T2YobCkpLGY8MCYmKGY9bi5pbmRleE9mKGwpKSxmPDAmJihmPWEuaW5kZXhPZihsKSksZjwwKXJldHVybiBlO2YrPWksZiU9MTIsZT1zP28/YVtmXTpyW2ZdOm8/bltmXTp0W2ZdO3ZhciBmLHA9aCYmKGguaW5kZXhPZigiZGltIik+PTB8fGguaW5kZXhPZigiwrAiKT49MCk7cmV0dXJuIHAmJiJBIyI9PT1lJiYoZT0iQmIiKSxwJiYiRCMiPT09ZSYmKGU9IkViIikscCYmIkHima8iPT09ZSYmKGU9IkLima0iKSxwJiYiROKZryI9PT1lJiYoZT0iReKZrSIpLGgmJihlKz1oKSx1JiYoKGY9dC5pbmRleE9mKHUpKTwwJiYoZj1yLmluZGV4T2YodSkpLGY8MCYmKGY9bi5pbmRleE9mKHUpKSxmPDAmJihmPWEuaW5kZXhPZih1KSksZSs9Ii8iLGY+PTA/KGYrPWksZiU9MTIsZSs9cz9vP2FbZl06cltmXTpvP25bZl06dFtmXSk6ZSs9dSksZCYmKGUrPWQpLGV9fSw1NzU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOTcwOCk7ZnVuY3Rpb24gYShlKXtpZighZSlyZXR1cm4hMTtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuITE7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspaWYoInN0cmluZyIhPXR5cGVvZiBlW3RdKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGkoZSl7Zm9yKHZhciB0PSExLHI9W10sbj0wO248ZS5saW5lcy5sZW5ndGg7bisrKXt2YXIgYT1lLmxpbmVzW25dO2lmKGEuc3RhZmYpZm9yKHZhciBpPTA7aTxhLnN0YWZmLmxlbmd0aDtpKyspe2Zvcih2YXIgbz1hLnN0YWZmW2ldLGM9W10sbD0wO2w8by52b2ljZXMubGVuZ3RoO2wrKyl7dmFyIGg9by52b2ljZXNbbF07Yy5wdXNoKHtoYXNPdmVybGF5OiExLHZvaWNlOltdLHNuaXA6W119KSxyW25dPTA7Zm9yKHZhciB1PTAsZD0hMSxmPTAscD0tMSxtPTA7bTxoLmxlbmd0aDttKyspe3ZhciBnPWhbbV07aWYoIm92ZXJsYXkiIT09Zy5lbF90eXBlfHxkKSJiYXIiPT09Zy5lbF90eXBlPyhkPyhkPSExLGNbbF0uc25pcC5wdXNoKHtzdGFydDpwLGxlbjptLXB9KSxjW2xdLnZvaWNlLnB1c2goZykpOih1PjAmJmNbbF0udm9pY2UucHVzaCh7ZWxfdHlwZToibm90ZSIsZHVyYXRpb246dSxyZXN0Ont0eXBlOiJpbnZpc2libGUifSxzdGFydENoYXI6Zy5zdGFydENoYXIsZW5kQ2hhcjpnLmVuZENoYXJ9KSxjW2xdLnZvaWNlLnB1c2goZykpLHU9MCk6Im5vdGUiPT09Zy5lbF90eXBlP2Q/Y1tsXS52b2ljZS5wdXNoKGcpOih1Kz1nLmR1cmF0aW9uLHJbbl0rPWcuZHVyYXRpb24pOiJzY2FsZSIhPT1nLmVsX3R5cGUmJiJzdGVtIiE9PWcuZWxfdHlwZSYmIm92ZXJsYXkiIT09Zy5lbF90eXBlJiYic3R5bGUiIT09Zy5lbF90eXBlJiYidHJhbnNwb3NlIiE9PWcuZWxfdHlwZSYmImNvbG9yIiE9PWcuZWxfdHlwZXx8Y1tsXS52b2ljZS5wdXNoKGcpO2Vsc2V7dD0hMCxkPSEwLHA9bSxjW2xdLmhhc092ZXJsYXk9ITAsMD09PWYmJihmPXJbbl0pO2Zvcih2YXIgdj0wO3Y8bjt2Kyspclt2XSYmZS5saW5lc1t2XS5zdGFmZiYmby52b2ljZXMubGVuZ3RoPj1lLmxpbmVzW3ZdLnN0YWZmWzBdLnZvaWNlcy5sZW5ndGgmJmUubGluZXNbdl0uc3RhZmZbMF0udm9pY2VzLnB1c2goW3tlbF90eXBlOiJub3RlIixkdXJhdGlvbjpyW3ZdLHJlc3Q6e3R5cGU6ImludmlzaWJsZSJ9LHN0YXJ0Q2hhcjpnLnN0YXJ0Q2hhcixlbmRDaGFyOmcuZW5kQ2hhcn1dKX19Y1tsXS5oYXNPdmVybGF5JiYwPT09Y1tsXS5zbmlwLmxlbmd0aCYmY1tsXS5zbmlwLnB1c2goe3N0YXJ0OnAsbGVuOmgubGVuZ3RoLXB9KX1mb3IobD0wO2w8Yy5sZW5ndGg7bCsrKXt2YXIgYj1jW2xdO2lmKGIuaGFzT3ZlcmxheSl7Yi52b2ljZS5zcGxpY2UoMCwwLHtlbF90eXBlOiJzdGVtIixkaXJlY3Rpb246ImRvd24ifSksby52b2ljZXMucHVzaChiLnZvaWNlKTtmb3IodmFyIHk9Yi5zbmlwLmxlbmd0aC0xO3k+PTA7eS0tKXt2YXIgeD1iLnNuaXBbeV07by52b2ljZXNbbF0uc3BsaWNlKHguc3RhcnQseC5sZW4pLG8udm9pY2VzW2xdLnNwbGljZSh4LnN0YXJ0KzEsMCx7ZWxfdHlwZToic3RlbSIsZGlyZWN0aW9uOiJhdXRvIn0pO3ZhciBrPXMoby52b2ljZXNbbF0seC5zdGFydCk7by52b2ljZXNbbF0uc3BsaWNlKGssMCx7ZWxfdHlwZToic3RlbSIsZGlyZWN0aW9uOiJ1cCJ9KX1mb3IoeT0wO3k8by52b2ljZXNbby52b2ljZXMubGVuZ3RoLTFdLmxlbmd0aDt5Kyspe28udm9pY2VzW28udm9pY2VzLmxlbmd0aC0xXVt5XT1PYmplY3QuYXNzaWduKHt9LG8udm9pY2VzW28udm9pY2VzLmxlbmd0aC0xXVt5XSk7dmFyIHc9by52b2ljZXNbby52b2ljZXMubGVuZ3RoLTFdW3ldOyJiYXIiPT09dy5lbF90eXBlJiZ3LnN0YXJ0RW5kaW5nJiZkZWxldGUgdy5zdGFydEVuZGluZywiYmFyIj09PXcuZWxfdHlwZSYmdy5lbmRFbmRpbmcmJmRlbGV0ZSB3LmVuZEVuZGluZ319fX19cmV0dXJuIHR9ZnVuY3Rpb24gcyhlLHQpe2Zvcih2YXIgcj10LTE7cj4wJiYiYmFyIiE9PWVbcl0uZWxfdHlwZTtyLS0pO3JldHVybiByfWZ1bmN0aW9uIG8oZSx0LHIsbil7dmFyIGE7blt0XXx8KG5bdF09W10pLG5bdF1bcl18fChuW3RdW3JdPVtdKTtmb3IodmFyIGk9ZnVuY3Rpb24oZSxpLHMpe2lmKHZvaWQgMD09PW5bdF1bcl1bc10pe2ZvcihhPTA7YTxuW3RdW3JdLmxlbmd0aDthKyspaWYodm9pZCAwIT09blt0XVtyXVthXSl7cz1hO2JyZWFrfWlmKHZvaWQgMD09PW5bdF1bcl1bc10pe3ZhciBvPTEwMCpzKzE7ZS5lbmRTbHVyLmZvckVhY2goKGZ1bmN0aW9uKGUpe289PT1lJiYtLW99KSksblt0XVtyXVtzXT1bb119fWZvcih2YXIgYyxsPTA7bDxpO2wrKyljPW5bdF1bcl1bc10ucG9wKCksZS5lbmRTbHVyLnB1c2goYyk7cmV0dXJuIDA9PT1uW3RdW3JdW3NdLmxlbmd0aCYmZGVsZXRlIG5bdF1bcl1bc10sY30scz1mdW5jdGlvbihlLGEsaSxzKXtlLnN0YXJ0U2x1cj1bXSx2b2lkIDA9PT1uW3RdW3JdW2ldJiYoblt0XVtyXVtpXT1bXSk7Zm9yKHZhciBvPTEwMCppKzEsYz0wO2M8YTtjKyspcyYmKHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bz09PWUmJisrb30pKSxzLmZvckVhY2goKGZ1bmN0aW9uKGUpe289PT1lJiYrK299KSkscy5mb3JFYWNoKChmdW5jdGlvbihlKXtvPT09ZSYmKytvfSkpKSxuW3RdW3JdW2ldLmZvckVhY2goKGZ1bmN0aW9uKGUpe289PT1lJiYrK299KSksblt0XVtyXVtpXS5mb3JFYWNoKChmdW5jdGlvbihlKXtvPT09ZSYmKytvfSkpLG5bdF1bcl1baV0ucHVzaChvKSxlLnN0YXJ0U2x1ci5wdXNoKHtsYWJlbDpvfSksZS5kb3R0ZWRTbHVyJiYoZS5zdGFydFNsdXJbZS5zdGFydFNsdXIubGVuZ3RoLTFdLnN0eWxlPSJkb3R0ZWQiLGRlbGV0ZSBlLmRvdHRlZFNsdXIpLG8rK30sbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgYz1lW29dO2lmKCJub3RlIj09PWMuZWxfdHlwZSl7aWYoYy5ncmFjZW5vdGVzKWZvcih2YXIgbD0wO2w8Yy5ncmFjZW5vdGVzLmxlbmd0aDtsKyspe2lmKGMuZ3JhY2Vub3Rlc1tsXS5lbmRTbHVyKXt2YXIgaD1jLmdyYWNlbm90ZXNbbF0uZW5kU2x1cjtjLmdyYWNlbm90ZXNbbF0uZW5kU2x1cj1bXTtmb3IodmFyIHU9MDt1PGg7dSsrKWkoYy5ncmFjZW5vdGVzW2xdLDEsMjApfWMuZ3JhY2Vub3Rlc1tsXS5zdGFydFNsdXImJihhPWMuZ3JhY2Vub3Rlc1tsXS5zdGFydFNsdXIscyhjLmdyYWNlbm90ZXNbbF0sYSwyMCkpfWlmKGMuZW5kU2x1ciYmKGE9Yy5lbmRTbHVyLGMuZW5kU2x1cj1bXSxpKGMsYSwwKSksYy5zdGFydFNsdXImJnMoYyxhPWMuc3RhcnRTbHVyLDApLGMucGl0Y2hlcyl7Zm9yKHZhciBkPVtdLGY9MDtmPGMucGl0Y2hlcy5sZW5ndGg7ZisrKWlmKGMucGl0Y2hlc1tmXS5lbmRTbHVyKXt2YXIgcD1jLnBpdGNoZXNbZl0uZW5kU2x1cjtjLnBpdGNoZXNbZl0uZW5kU2x1cj1bXTtmb3IodmFyIG09MDttPHA7bSsrKXt2YXIgZz1pKGMucGl0Y2hlc1tmXSwxLGYrMSk7ZC5wdXNoKGcpfX1mb3IoZj0wO2Y8Yy5waXRjaGVzLmxlbmd0aDtmKyspYy5waXRjaGVzW2ZdLnN0YXJ0U2x1ciYmKGE9Yy5waXRjaGVzW2ZdLnN0YXJ0U2x1cixzKGMucGl0Y2hlc1tmXSxhLGYrMSxkKSk7Yy5ncmFjZW5vdGVzJiZjLnBpdGNoZXNbMF0uZW5kU2x1ciYmMTAwPT09Yy5waXRjaGVzWzBdLmVuZFNsdXJbMF0mJmMucGl0Y2hlc1swXS5zdGFydFNsdXImJihjLmdyYWNlbm90ZXNbMF0uZW5kU2x1cj9jLmdyYWNlbm90ZXNbMF0uZW5kU2x1ci5wdXNoKGMucGl0Y2hlc1swXS5zdGFydFNsdXJbMF0ubGFiZWwpOmMuZ3JhY2Vub3Rlc1swXS5lbmRTbHVyPVtjLnBpdGNoZXNbMF0uc3RhcnRTbHVyWzBdLmxhYmVsXSwxPT09Yy5waXRjaGVzWzBdLmVuZFNsdXIubGVuZ3RoP2RlbGV0ZSBjLnBpdGNoZXNbMF0uZW5kU2x1cjoxMDA9PT1jLnBpdGNoZXNbMF0uZW5kU2x1clswXT9jLnBpdGNoZXNbMF0uZW5kU2x1ci5zaGlmdCgpOjEwMD09PWMucGl0Y2hlc1swXS5lbmRTbHVyW2MucGl0Y2hlc1swXS5lbmRTbHVyLmxlbmd0aC0xXSYmYy5waXRjaGVzWzBdLmVuZFNsdXIucG9wKCksMT09PW5bdF1bcl1bMV0ubGVuZ3RoP2RlbGV0ZSBuW3RdW3JdWzFdOm5bdF1bcl1bMV0ucG9wKCkpfX19fWZ1bmN0aW9uIGMoZSx0KXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKylpZih2b2lkIDAhPT1lW3JdLnN0YWZmKWZvcih2YXIgbj0wO248ZVtyXS5zdGFmZi5sZW5ndGg7bisrKWZvcih2YXIgYT1bXSxpPTA7aTxlW3JdLnN0YWZmW25dLnZvaWNlcy5sZW5ndGg7aSsrKWZvcih2YXIgcz1lW3JdLnN0YWZmW25dLnZvaWNlc1tpXSxvPTAsYz0wO2M8cy5sZW5ndGg7YysrKWlmKCJiYXIiPT09c1tjXS5lbF90eXBlKXtpZigrK28+PXQmJmM8cy5sZW5ndGgtMSl7dmFyIGg9bChlLHIpO2lmKCFoKXt2YXIgdT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGVbcl0pKTtlLnB1c2goT2JqZWN0LmFzc2lnbih7fSx1KSksaD1lW2UubGVuZ3RoLTFdO2Zvcih2YXIgZD0wO2Q8aC5zdGFmZi5sZW5ndGg7ZCsrKWZvcih2YXIgZj0wO2Y8aC5zdGFmZltkXS52b2ljZXMubGVuZ3RoO2YrKyloLnN0YWZmW2RdLnZvaWNlc1tmXT1bXX12YXIgcD1jKzEsbT1lW3JdLnN0YWZmW25dLnZvaWNlc1tpXS5zbGljZShwKTtyZXR1cm4gZVtyXS5zdGFmZltuXS52b2ljZXNbaV09ZVtyXS5zdGFmZltuXS52b2ljZXNbaV0uc2xpY2UoMCxwKSxoLnN0YWZmW25dLnZvaWNlc1tpXT1hLmNvbmNhdChtLmNvbmNhdChoLnN0YWZmW25dLnZvaWNlc1tpXSkpLCEwfX1lbHNlIHNbY10uZHVyYXRpb258fGEucHVzaChzW2NdKTtyZXR1cm4hMX1mdW5jdGlvbiBsKGUsdCl7Zm9yKHQrKztlLmxlbmd0aD50Oyl7aWYoZVt0XS5zdGFmZilyZXR1cm4gZVt0XTt0Kyt9cmV0dXJuIG51bGx9ZnVuY3Rpb24gaChlKXtlLnBvdGVudGlhbFN0YXJ0QmVhbSYmZS5wb3RlbnRpYWxFbmRCZWFtJiYoZS5wb3RlbnRpYWxTdGFydEJlYW0uc3RhcnRCZWFtPSEwLGUucG90ZW50aWFsRW5kQmVhbS5lbmRCZWFtPSEwKSxkZWxldGUgZS5wb3RlbnRpYWxTdGFydEJlYW0sZGVsZXRlIGUucG90ZW50aWFsRW5kQmVhbX1mdW5jdGlvbiB1KGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKCJub3RlIj09PWVbdF0uZWxfdHlwZXx8ImJhciI9PT1lW3RdLmVsX3R5cGUpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gZChlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylpZigibm90ZSI9PT1lW3RdLmVsX3R5cGUmJih2b2lkIDA9PT1lW3RdLnJlc3R8fHZvaWQgMCE9PWVbdF0uY2hvcmQpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGYoZSx0KXtlLnZza2lwUGVuZGluZyYmKHQudnNraXA9ZS52c2tpcFBlbmRpbmcsZGVsZXRlIGUudnNraXBQZW5kaW5nKSxlLmxpbmVzLnB1c2godCl9ZnVuY3Rpb24gcChlKXt2b2lkIDAhPT1lLnBvdGVudGlhbFN0YXJ0QmVhbSYmdm9pZCAwIT09ZS5wb3RlbnRpYWxFbmRCZWFtJiYoZS5wb3RlbnRpYWxTdGFydEJlYW0uc3RhcnRCZWFtPSEwLGUucG90ZW50aWFsRW5kQmVhbS5lbmRCZWFtPSEwKSxkZWxldGUgZS5wb3RlbnRpYWxTdGFydEJlYW0sZGVsZXRlIGUucG90ZW50aWFsRW5kQmVhbX1mdW5jdGlvbiBtKGUsdCxyKXtpZihlLnJ1bm5pbmdGb250c1t0XSl7Zm9yKHZhciBuPSExLGE9T2JqZWN0LmtleXMociksaT0wO2k8YS5sZW5ndGg7aSsrKWUucnVubmluZ0ZvbnRzW3RdW2FbaV1dIT09clthW2ldXSYmKG49ITApO24mJihlLmxpbmVzW2UubGluZU51bV0uc3RhZmZbZS5zdGFmZk51bV1bdF09cil9ZS5ydW5uaW5nRm9udHNbdF09cn1mdW5jdGlvbiBnKGUsdCxyKXt2YXIgbj10LmxpbmVzW3QubGluZU51bV0uc3RhZmZbdC5zdGFmZk51bV07aWYobi52b2ljZXNbdC52b2ljZU51bV09W10sbi50aXRsZXx8KG4udGl0bGU9W10pLG4udGl0bGVbdC52b2ljZU51bV09e25hbWU6ci5uYW1lLHN1Ym5hbWU6ci5zdWJuYW1lfSxyLnN0eWxlJiZlLmFwcGVuZEVsZW1lbnQoInN0eWxlIixudWxsLG51bGwse2hlYWQ6ci5zdHlsZX0pLHIuc3RlbSllLmFwcGVuZEVsZW1lbnQoInN0ZW0iLG51bGwsbnVsbCx7ZGlyZWN0aW9uOnIuc3RlbX0pO2Vsc2UgaWYodC52b2ljZU51bT4wKXtpZih2b2lkIDAhPT1uLnZvaWNlc1swXSl7Zm9yKHZhciBhPSExLGk9MDtpPG4udm9pY2VzWzBdLmxlbmd0aDtpKyspInN0ZW0iPT09bi52b2ljZXNbMF0uZWxfdHlwZSYmKGE9ITApO2F8fG4udm9pY2VzWzBdLnNwbGljZSgwLDAse2VsX3R5cGU6InN0ZW0iLGRpcmVjdGlvbjoidXAifSl9ZS5hcHBlbmRFbGVtZW50KCJzdGVtIixudWxsLG51bGwse2RpcmVjdGlvbjoiZG93biJ9KX1yLnNjYWxlJiZlLmFwcGVuZEVsZW1lbnQoInNjYWxlIixudWxsLG51bGwse3NpemU6ci5zY2FsZX0pLHIuY29sb3ImJmUuYXBwZW5kRWxlbWVudCgiY29sb3IiLG51bGwsbnVsbCx7Y29sb3I6ci5jb2xvcn0pfWZ1bmN0aW9uIHYoZSx0LHIpe3Iua2V5JiZyLmtleS5pbXBsaWVkTmF0dXJhbHMmJihyLmtleS5hY2NpZGVudGFscz1yLmtleS5hY2NpZGVudGFscy5jb25jYXQoci5rZXkuaW1wbGllZE5hdHVyYWxzKSxkZWxldGUgci5rZXkuaW1wbGllZE5hdHVyYWxzKSx0LmxpbmVzW3QubGluZU51bV0uc3RhZmZbdC5zdGFmZk51bV09e3ZvaWNlczpbXSxjbGVmOnIuY2xlZixrZXk6ci5rZXksd29ya2luZ0NsZWY6ci5jbGVmfTt2YXIgbj10LmxpbmVzW3QubGluZU51bV0uc3RhZmZbdC5zdGFmZk51bV07dm9pZCAwIT09ci5zdGFmZmxpbmVzJiYobi5jbGVmLnN0YWZmbGluZXM9ci5zdGFmZmxpbmVzLG4ud29ya2luZ0NsZWYuc3RhZmZsaW5lcz1yLnN0YWZmbGluZXMpLHIuc3RhZmZzY2FsZSYmKG4uc3RhZmZzY2FsZT1yLnN0YWZmc2NhbGUpLHIuYW5ub3RhdGlvbmZvbnQmJm0odCwiYW5ub3RhdGlvbmZvbnQiLHIuYW5ub3RhdGlvbmZvbnQpLHIuZ2Nob3JkZm9udCYmbSh0LCJnY2hvcmRmb250IixyLmdjaG9yZGZvbnQpLHIudHJpcGxldGZvbnQmJm0odCwidHJpcGxldGZvbnQiLHIudHJpcGxldGZvbnQpLHIudm9jYWxmb250JiZtKHQsInZvY2FsZm9udCIsci52b2NhbGZvbnQpLHIuYnJhY2tldCYmKG4uYnJhY2tldD1yLmJyYWNrZXQpLHIuYnJhY2UmJihuLmJyYWNlPXIuYnJhY2UpLHIuY29ubmVjdEJhckxpbmVzJiYobi5jb25uZWN0QmFyTGluZXM9ci5jb25uZWN0QmFyTGluZXMpLHIuYmFyTnVtYmVyJiYobi5iYXJOdW1iZXI9ci5iYXJOdW1iZXIpLGcoZSx0LHIpLHIucGFydCYmZS5hcHBlbmRFbGVtZW50KCJwYXJ0IixyLnBhcnQuc3RhcnRDaGFyLHIucGFydC5lbmRDaGFyLHt0aXRsZTpyLnBhcnQudGl0bGV9KSx2b2lkIDAhPT1yLm1ldGVyJiYobi5tZXRlcj1yLm1ldGVyKSx0LnZza2lwUGVuZGluZyYmKHQubGluZXNbdC5saW5lTnVtXS52c2tpcD10LnZza2lwUGVuZGluZyxkZWxldGUgdC52c2tpcFBlbmRpbmcpfWUuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9e30scz0iIjtlLnJlc2V0KCksdGhpcy5zZXRWaXN1YWxUcmFuc3Bvc2U9ZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmKGUudmlzdWFsVHJhbnNwb3NlPXQpfSx0aGlzLmNsZWFuVXA9ZnVuY3Rpb24odCxyLHMpe2goZSksZGVsZXRlIGUucnVubmluZ0ZvbnRzLGZ1bmN0aW9uKGUpe2EoZS5tZXRhVGV4dC5ub3RlcykmJihlLm1ldGFUZXh0Lm5vdGVzPWUubWV0YVRleHQubm90ZXMuam9pbigiXG4iKSksYShlLm1ldGFUZXh0Lmhpc3RvcnkpJiYoZS5tZXRhVGV4dC5oaXN0b3J5PWUubWV0YVRleHQuaGlzdG9yeS5qb2luKCJcbiIpKX0oZSksZS5tZXRhVGV4dC50ZW1wbyYmZS5tZXRhVGV4dC50ZW1wby5icG0mJiFlLm1ldGFUZXh0LnRlbXBvLmR1cmF0aW9uJiYoZS5tZXRhVGV4dC50ZW1wby5kdXJhdGlvbj1bZS5nZXRCZWF0TGVuZ3RoKCldKTt2YXIgZixwLG09ITE7Zm9yKGI9MDtiPGUubGluZXMubGVuZ3RoO2IrKylpZih2b2lkIDAhPT1lLmxpbmVzW2JdLnN0YWZmKXt2YXIgZz0hMTtmb3IoZj0wO2Y8ZS5saW5lc1tiXS5zdGFmZi5sZW5ndGg7ZisrKWlmKHZvaWQgMD09PWUubGluZXNbYl0uc3RhZmZbZl0pbT0hMCxlLmxpbmVzW2JdLnN0YWZmW2ZdPW51bGw7ZWxzZSBmb3IocD0wO3A8ZS5saW5lc1tiXS5zdGFmZltmXS52b2ljZXMubGVuZ3RoO3ArKyl2b2lkIDA9PT1lLmxpbmVzW2JdLnN0YWZmW2ZdLnZvaWNlc1twXT9lLmxpbmVzW2JdLnN0YWZmW2ZdLnZvaWNlc1twXT1bXTp1KGUubGluZXNbYl0uc3RhZmZbZl0udm9pY2VzW3BdKSYmKGc9ITApO2d8fChlLmxpbmVzW2JdPW51bGwsbT0hMCl9aWYobSYmKGUubGluZXM9ZS5saW5lcy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pKSxlLmxpbmVzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uuc3RhZmYmJihlLnN0YWZmPWUuc3RhZmYuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hIWV9KSkpfSkpKSx0KWZvcig7YyhlLmxpbmVzLHQpOyk7aWYocil7Zm9yKG09ITEsYj0wO2I8ZS5saW5lcy5sZW5ndGg7YisrKWlmKHZvaWQgMCE9PWUubGluZXNbYl0uc3RhZmYpZm9yKGY9MDtmPGUubGluZXNbYl0uc3RhZmYubGVuZ3RoO2YrKyl7dmFyIHY9ITE7Zm9yKHA9MDtwPGUubGluZXNbYl0uc3RhZmZbZl0udm9pY2VzLmxlbmd0aDtwKyspZChlLmxpbmVzW2JdLnN0YWZmW2ZdLnZvaWNlc1twXSkmJih2PSEwKTt2fHwobT0hMCxlLmxpbmVzW2JdLnN0YWZmW2ZdPW51bGwpfW0mJmUubGluZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5zdGFmZiYmKGUuc3RhZmY9ZS5zdGFmZi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pKSl9KSl9Zm9yKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0hMCxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07aWYobi5zdGFmZil7Zm9yKHZhciBhPTA7YTxuLnN0YWZmLmxlbmd0aDthKyspe3ZhciBpPW4uc3RhZmZbYV07aWYoaS50aXRsZSl7Zm9yKHZhciBzPSExLG89MDtvPGkudGl0bGUubGVuZ3RoO28rKylpLnRpdGxlW29dPyhpLnRpdGxlW29dPXQ/aS50aXRsZVtvXS5uYW1lOmkudGl0bGVbb10uc3VibmFtZSxpLnRpdGxlW29dP3M9ITA6aS50aXRsZVtvXT0iIik6aS50aXRsZVtvXT0iIjtzfHxkZWxldGUgaS50aXRsZX19dD0hMX19fShlLmxpbmVzKSxiPTA7YjxlLmxpbmVzLmxlbmd0aDtiKyspaWYoZS5saW5lc1tiXS5zdGFmZilmb3IoZj0wO2Y8ZS5saW5lc1tiXS5zdGFmZi5sZW5ndGg7ZisrKWRlbGV0ZSBlLmxpbmVzW2JdLnN0YWZmW2ZdLndvcmtpbmdDbGVmO2Zvcig7aShlKTspO2Zvcih2YXIgYj0wO2I8ZS5saW5lcy5sZW5ndGg7YisrKXt2YXIgeT1lLmxpbmVzW2JdLnN0YWZmO2lmKHkpZm9yKGUuc3RhZmZOdW09MDtlLnN0YWZmTnVtPHkubGVuZ3RoO2Uuc3RhZmZOdW0rKylmb3IoeVtlLnN0YWZmTnVtXS5jbGVmJiZuLmZpeENsZWYoeVtlLnN0YWZmTnVtXS5jbGVmKSxlLnZvaWNlTnVtPTA7ZS52b2ljZU51bTx5W2Uuc3RhZmZOdW1dLnZvaWNlcy5sZW5ndGg7ZS52b2ljZU51bSsrKXt2YXIgeD15W2Uuc3RhZmZOdW1dLnZvaWNlc1tlLnZvaWNlTnVtXTtvKHgsZS5zdGFmZk51bSxlLnZvaWNlTnVtLHMpO2Zvcih2YXIgaz0wO2s8eC5sZW5ndGg7aysrKSJjbGVmIj09PXhba10uZWxfdHlwZSYmbi5maXhDbGVmKHhba10pO2lmKHgubGVuZ3RoPjAmJnhbeC5sZW5ndGgtMV0uYmFyTnVtYmVyKXt2YXIgdz1sKGUubGluZXMsYik7dyYmKHcuc3RhZmZbMF0uYmFyTnVtYmVyPXhbeC5sZW5ndGgtMV0uYmFyTnVtYmVyKSxkZWxldGUgeFt4Lmxlbmd0aC0xXS5iYXJOdW1iZXJ9fX1yZXR1cm4gZGVsZXRlIGUuc3RhZmZOdW0sZGVsZXRlIGUudm9pY2VOdW0sZGVsZXRlIGUubGluZU51bSxkZWxldGUgZS5wb3RlbnRpYWxTdGFydEJlYW0sZGVsZXRlIGUucG90ZW50aWFsRW5kQmVhbSxkZWxldGUgZS52c2tpcFBlbmRpbmcsc30sdGhpcy5hZGRUaWVUb0xhc3ROb3RlPWZ1bmN0aW9uKHQpe3ZhciByPWZ1bmN0aW9uKGUpe2lmKCFlLmxpbmVzW2UubGluZU51bV0pcmV0dXJuIG51bGw7aWYoIWUubGluZXNbZS5saW5lTnVtXS5zdGFmZilyZXR1cm4gbnVsbDtpZighZS5saW5lc1tlLmxpbmVOdW1dLnN0YWZmW2Uuc3RhZmZOdW1dKXJldHVybiBudWxsO3ZhciB0PWUubGluZXNbZS5saW5lTnVtXS5zdGFmZltlLnN0YWZmTnVtXS52b2ljZXNbZS52b2ljZU51bV07aWYoIXQpcmV0dXJuIG51bGw7Zm9yKHZhciByPXQubGVuZ3RoLTE7cj49MDtyLS0pe3ZhciBuPXRbcl07aWYoIm5vdGUiPT09bi5lbF90eXBlKXJldHVybiBufXJldHVybiBudWxsfShlKTtyZXR1cm4hIShyJiZyLnBpdGNoZXMmJnIucGl0Y2hlcy5sZW5ndGg+MCkmJihyLnBpdGNoZXNbMF0uc3RhcnRUaWU9e30sdCYmKHIucGl0Y2hlc1swXS5zdGFydFRpZS5zdHlsZT0iZG90dGVkIiksITApfSx0aGlzLmFwcGVuZEVsZW1lbnQ9ZnVuY3Rpb24obixhLGksbyl7dmFyIGM7cmV0dXJuIG8uZWxfdHlwZT1uLG51bGwhPT1hJiYoby5zdGFydENoYXI9YSksbnVsbCE9PWkmJihvLmVuZENoYXI9aSksIm5vdGUiPT09bj8oKGM9bykuZHVyYXRpb24/Yy5kdXJhdGlvbjowKT49LjI1fHxvLmZvcmNlX2VuZF9iZWFtX2xhc3QmJnZvaWQgMCE9PWUucG90ZW50aWFsU3RhcnRCZWFtP3AoZSk6by5lbmRfYmVhbSYmdm9pZCAwIT09ZS5wb3RlbnRpYWxTdGFydEJlYW0/dm9pZCAwPT09by5yZXN0P2Z1bmN0aW9uKGUsdCl7dC5wb3RlbnRpYWxTdGFydEJlYW0uc3RhcnRCZWFtPSEwLGUuZW5kQmVhbT0hMCxkZWxldGUgdC5wb3RlbnRpYWxTdGFydEJlYW0sZGVsZXRlIHQucG90ZW50aWFsRW5kQmVhbX0obyxlKTpwKGUpOnZvaWQgMD09PW8ucmVzdCYmKHZvaWQgMD09PWUucG90ZW50aWFsU3RhcnRCZWFtP28uZW5kX2JlYW18fChlLnBvdGVudGlhbFN0YXJ0QmVhbT1vLGRlbGV0ZSBlLnBvdGVudGlhbEVuZEJlYW0pOmUucG90ZW50aWFsRW5kQmVhbT1vKTpwKGUpLGRlbGV0ZSBvLmVuZF9iZWFtLGRlbGV0ZSBvLmZvcmNlX2VuZF9iZWFtX2xhc3Qsby5yZXN0JiYiaW52aXNpYmxlIj09PW8ucmVzdC50eXBlJiZkZWxldGUgby5kZWNvcmF0aW9uLCEoZS5saW5lcy5sZW5ndGg8PWUubGluZU51bXx8ZS5saW5lc1tlLmxpbmVOdW1dLnN0YWZmLmxlbmd0aDw9ZS5zdGFmZk51bXx8KGZ1bmN0aW9uKGUsdCxyLG4sYSl7dmFyIGk9dC5saW5lc1t0LmxpbmVOdW1dLnN0YWZmW3Quc3RhZmZOdW1dO2lmKHZvaWQgMCE9PXIucGl0Y2hlcyl7dmFyIHM9aS53b3JraW5nQ2xlZi52ZXJ0aWNhbFBvcztyLnBpdGNoZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS52ZXJ0aWNhbFBvcz1lLnBpdGNoLXN9KSl9aWYodm9pZCAwIT09ci5ncmFjZW5vdGVzKXt2YXIgbz1pLndvcmtpbmdDbGVmLnZlcnRpY2FsUG9zO3IuZ3JhY2Vub3Rlcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnZlcnRpY2FsUG9zPWUucGl0Y2gtb30pKX1pLnZvaWNlcy5sZW5ndGg8PXQudm9pY2VOdW0mJihuW2FdfHwoblthXT17fSksZyhlLHQsblthXSkpLGkudm9pY2VzW3Qudm9pY2VOdW1dLnB1c2gocil9KHQsZSxvLHIscyksMCkpfSx0aGlzLmFwcGVuZFN0YXJ0aW5nRWxlbWVudD1mdW5jdGlvbih0LHIsbixhKXt2YXIgaTtoKGUpLCJrZXkiPT09dCYmKGk9YS5pbXBsaWVkTmF0dXJhbHMsZGVsZXRlIGEuaW1wbGllZE5hdHVyYWxzLGRlbGV0ZSBhLmV4cGxpY2l0QWNjaWRlbnRhbHMpO3ZhciBzPU9iamVjdC5hc3NpZ24oe30sYSk7aWYoZS5saW5lc1tlLmxpbmVOdW1dKXt2YXIgbz1lLmxpbmVzW2UubGluZU51bV0uc3RhZmY7aWYobyl7by5sZW5ndGg8PWUuc3RhZmZOdW0mJihvW2Uuc3RhZmZOdW1dPXt9LG9bZS5zdGFmZk51bV0uY2xlZj1PYmplY3QuYXNzaWduKHt9LG9bMF0uY2xlZiksb1tlLnN0YWZmTnVtXS5rZXk9T2JqZWN0LmFzc2lnbih7fSxvWzBdLmtleSksb1swXS5tZXRlciYmKG9bZS5zdGFmZk51bV0ubWV0ZXI9T2JqZWN0LmFzc2lnbih7fSxvWzBdLm1ldGVyKSksb1tlLnN0YWZmTnVtXS53b3JraW5nQ2xlZj1PYmplY3QuYXNzaWduKHt9LG9bMF0ud29ya2luZ0NsZWYpLG9bZS5zdGFmZk51bV0udm9pY2VzPVtbXV0pLCJjbGVmIj09PXQmJihvW2Uuc3RhZmZOdW1dLndvcmtpbmdDbGVmPXMpO2Zvcih2YXIgYz1vW2Uuc3RhZmZOdW1dLnZvaWNlc1tlLnZvaWNlTnVtXSxsPTA7bDxjLmxlbmd0aDtsKyspe2lmKCJub3RlIj09PWNbbF0uZWxfdHlwZXx8ImJhciI9PT1jW2xdLmVsX3R5cGUpcmV0dXJuIHMuZWxfdHlwZT10LHMuc3RhcnRDaGFyPXIscy5lbmRDaGFyPW4saSYmKHMuYWNjaWRlbnRhbHM9aS5jb25jYXQocy5hY2NpZGVudGFscykpLHZvaWQgYy5wdXNoKHMpO2lmKGNbbF0uZWxfdHlwZT09PXQpcmV0dXJuIHMuZWxfdHlwZT10LHMuc3RhcnRDaGFyPXIscy5lbmRDaGFyPW4saSYmKHMuYWNjaWRlbnRhbHM9aS5jb25jYXQocy5hY2NpZGVudGFscykpLHZvaWQoY1tsXT1zKX1vW2Uuc3RhZmZOdW1dW3RdPWF9fX0sdGhpcy5hZGRTdWJ0aXRsZT1mdW5jdGlvbih0LHIpe2YoZSx7c3VidGl0bGU6e3RleHQ6dCxzdGFydENoYXI6ci5zdGFydENoYXIsZW5kQ2hhcjpyLmVuZENoYXJ9fSl9LHRoaXMuYWRkU3BhY2luZz1mdW5jdGlvbih0KXtlLnZza2lwUGVuZGluZz10fSx0aGlzLmFkZE5ld1BhZ2U9ZnVuY3Rpb24odCl7ZihlLHtuZXdwYWdlOnR9KX0sdGhpcy5hZGRTZXBhcmF0b3I9ZnVuY3Rpb24odCxyLG4sYSl7ZihlLHtzZXBhcmF0b3I6e3NwYWNlQWJvdmU6TWF0aC5yb3VuZCh0KSxzcGFjZUJlbG93Ok1hdGgucm91bmQociksbGluZUxlbmd0aDpNYXRoLnJvdW5kKG4pLHN0YXJ0Q2hhcjphLnN0YXJ0Q2hhcixlbmRDaGFyOmEuZW5kQ2hhcn19KX0sdGhpcy5hZGRUZXh0PWZ1bmN0aW9uKHQscil7ZihlLHt0ZXh0Ont0ZXh0OnQsc3RhcnRDaGFyOnIuc3RhcnRDaGFyLGVuZENoYXI6ci5lbmRDaGFyfX0pfSx0aGlzLmFkZENlbnRlcmVkPWZ1bmN0aW9uKHQpe2YoZSx7dGV4dDpbe3RleHQ6dCxjZW50ZXI6ITB9XX0pfSx0aGlzLmNoYW5nZVZvaWNlU2NhbGU9ZnVuY3Rpb24oZSl7dC5hcHBlbmRFbGVtZW50KCJzY2FsZSIsbnVsbCxudWxsLHtzaXplOmV9KX0sdGhpcy5jaGFuZ2VWb2ljZUNvbG9yPWZ1bmN0aW9uKGUpe3QuYXBwZW5kRWxlbWVudCgiY29sb3IiLG51bGwsbnVsbCx7Y29sb3I6ZX0pfSx0aGlzLnN0YXJ0TmV3TGluZT1mdW5jdGlvbihuKXtoKGUpLG4uY3VycmVudFZvaWNlTmFtZSYmKHM9bi5jdXJyZW50Vm9pY2VOYW1lLHJbbi5jdXJyZW50Vm9pY2VOYW1lXT1uKSx2b2lkIDA9PT1lLmxpbmVzW2UubGluZU51bV0/ZnVuY3Rpb24oZSx0LHIpe3QubGluZXNbdC5saW5lTnVtXT17c3RhZmY6W119LHYoZSx0LHIpfSh0LGUsbik6dm9pZCAwPT09ZS5saW5lc1tlLmxpbmVOdW1dLnN0YWZmPyhlLmxpbmVOdW0rKyx0aGlzLnN0YXJ0TmV3TGluZShuKSk6dm9pZCAwPT09ZS5saW5lc1tlLmxpbmVOdW1dLnN0YWZmW2Uuc3RhZmZOdW1dP3YodCxlLG4pOnZvaWQgMD09PWUubGluZXNbZS5saW5lTnVtXS5zdGFmZltlLnN0YWZmTnVtXS52b2ljZXNbZS52b2ljZU51bV0/Zyh0LGUsbik6dShlLmxpbmVzW2UubGluZU51bV0uc3RhZmZbZS5zdGFmZk51bV0udm9pY2VzW2Uudm9pY2VOdW1dKT8oZS5saW5lTnVtKyssdGhpcy5zdGFydE5ld0xpbmUobikpOm4ucGFydCYmdC5hcHBlbmRFbGVtZW50KCJwYXJ0IixuLnBhcnQuc3RhcnRDaGFyLG4ucGFydC5lbmRDaGFyLHt0aXRsZTpuLnBhcnQudGl0bGV9KX0sdGhpcy5zZXRSdW5uaW5nRm9udD1mdW5jdGlvbih0LHIpe2UucnVubmluZ0ZvbnRzW3RdPXJ9LHRoaXMuc2V0QmFyTnVtYmVySW1tZWRpYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0Q3VycmVudFZvaWNlKCk7aWYodCYmdC5sZW5ndGg+MCl7dmFyIHI9dFt0Lmxlbmd0aC0xXTtpZigiYmFyIiE9PXIuZWxfdHlwZSlyZXR1cm4gZS0xO3ZvaWQgMCE9PXIuYmFyTnVtYmVyJiYoci5iYXJOdW1iZXI9ZSl9cmV0dXJuIGV9LHRoaXMuaGFzQmVnaW5NdXNpYz1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8ZS5saW5lcy5sZW5ndGg7dCsrKWlmKGUubGluZXNbdF0uc3RhZmYpcmV0dXJuITA7cmV0dXJuITF9LHRoaXMuaXNGaXJzdExpbmU9ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQtMTtyPj0wO3ItLSlpZih2b2lkIDAhPT1lLmxpbmVzW3JdLnN0YWZmKXJldHVybiExO3JldHVybiEwfSx0aGlzLmdldEN1cnJlbnRWb2ljZT1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoZS5sZW5ndGg8PXQpcmV0dXJuIG51bGw7Zm9yKDt0Pj0wOyl7aWYoZVt0XS5zdGFmZilyZXR1cm4gZVt0XTt0LS19cmV0dXJuIG51bGx9KGUubGluZXMsZS5saW5lTnVtKTtpZighdClyZXR1cm4gbnVsbDt2YXIgcj10LnN0YWZmW2Uuc3RhZmZOdW1dO3JldHVybiByJiZ2b2lkIDAhPT1yLnZvaWNlc1tlLnZvaWNlTnVtXT9yLnZvaWNlc1tlLnZvaWNlTnVtXTpudWxsfSx0aGlzLnNldEN1cnJlbnRWb2ljZT1mdW5jdGlvbih0LHIsbil7ZS5zdGFmZk51bT10LGUudm9pY2VOdW09cixzPW47Zm9yKHZhciBhPTA7YTxlLmxpbmVzLmxlbmd0aDthKyspaWYoZS5saW5lc1thXS5zdGFmZiYmKHZvaWQgMD09PWUubGluZXNbYV0uc3RhZmZbdF18fHZvaWQgMD09PWUubGluZXNbYV0uc3RhZmZbdF0udm9pY2VzW3JdfHwhdShlLmxpbmVzW2FdLnN0YWZmW3RdLnZvaWNlc1tyXSkpKXJldHVybiBlLmxpbmVOdW09YSwhKGUubGluZXNbYV0uc3RhZmZbdF0mJiFlLmxpbmVzW2FdLnN0YWZmW3RdLnZvaWNlc1tyXSk7cmV0dXJuIGUubGluZU51bT1hLCExfSx0aGlzLmFkZE1ldGFUZXh0PWZ1bmN0aW9uKHQscixuKXt2b2lkIDA9PT1lLm1ldGFUZXh0W3RdPyhlLm1ldGFUZXh0W3RdPXIsZS5tZXRhVGV4dEluZm9bdF09bik6KCJzdHJpbmciPT10eXBlb2YgZS5tZXRhVGV4dFt0XSYmInN0cmluZyI9PXR5cGVvZiByP2UubWV0YVRleHRbdF0rPSJcbiIrcjooInN0cmluZyI9PT1lLm1ldGFUZXh0W3RdJiYoZS5tZXRhVGV4dFt0XT1be3RleHQ6ZS5tZXRhVGV4dFt0XX1dKSwic3RyaW5nIj09dHlwZW9mIHImJihyPVt7dGV4dDpyfV0pLGUubWV0YVRleHRbdF09ZS5tZXRhVGV4dFt0XS5jb25jYXQocikpLGUubWV0YVRleHRJbmZvW3RdLmVuZENoYXI9bi5lbmRDaGFyKX0sdGhpcy5hZGRNZXRhVGV4dEFycmF5PWZ1bmN0aW9uKHQscixuKXt2b2lkIDA9PT1lLm1ldGFUZXh0W3RdPyhlLm1ldGFUZXh0W3RdPVtyXSxlLm1ldGFUZXh0SW5mb1t0XT1uKTooZS5tZXRhVGV4dFt0XS5wdXNoKHIpLGUubWV0YVRleHRJbmZvW3RdLmVuZENoYXI9bi5lbmRDaGFyKX0sdGhpcy5hZGRNZXRhVGV4dE9iaj1mdW5jdGlvbih0LHIsbil7ZS5tZXRhVGV4dFt0XT1yLGUubWV0YVRleHRJbmZvW3RdPW59fX0sMTc1NjpmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7Zm9yKHZhciByPVtdLG49W10sYT0wLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIHM9ZVtpXSxvPWErcztvPHQ/YT1vOnQtYTxvLXQmJmE+MD8oci5wdXNoKGktMSksbi5wdXNoKE1hdGgucm91bmQoYS1zKSksYT1zKTppPGUubGVuZ3RoLTEmJihyLnB1c2goaSksbi5wdXNoKE1hdGgucm91bmQoYSkpLGE9MCl9cmV0dXJuIG4ucHVzaChNYXRoLnJvdW5kKGEpKSx7bGluZUJyZWFrczpyLHRvdGFsczpufX1mdW5jdGlvbiByKGUpe2Zvcih2YXIgdD1bXSxyPTA7cjxlLmxlbmd0aDtyKyspdC5wdXNoKGVbcl0pO3JldHVybiB0fWZ1bmN0aW9uIG4oZSx0LG4sYSxpLHMsbyxjLGwsaCx1KXtmb3IodmFyIGQ9aDtkPGUubGVuZ3RoO2QrKyl7dmFyIGY9ZVtkXTtuKz1mLGErPWY7dmFyIHA9TWF0aC5hYnMobi10W2NdKTtpZihNYXRoLmFicyhwLXMpPHRbMF0vMTApaWYocDxzKXt2YXIgbT1yKGkpLGc9cihsKTtnLnB1c2goZC0xKSxtLnB1c2goYS1mKSx1LnB1c2goe2FjY3VtdWxhdG9yOm4sbGluZUFjY3VtdWxhdG9yOmYsbGluZVdpZHRoczptLGxhc3RWYXJpYW5jZTpNYXRoLmFicyhuLXRbYysxXSksaGlnaGVzdFZhcmlhbmNlOk1hdGgubWF4KG8scyksY3VyckxpbmU6YysxLGxpbmVCcmVha3M6ZyxzdGFydEluZGV4OmQrMX0pfWVsc2UgcD5zJiZkPGUubGVuZ3RoLTEmJihtPXIoaSksZz1yKGwpLHUucHVzaCh7YWNjdW11bGF0b3I6bixsaW5lQWNjdW11bGF0b3I6YSxsaW5lV2lkdGhzOm0sbGFzdFZhcmlhbmNlOnAsaGlnaGVzdFZhcmlhbmNlOk1hdGgubWF4KG8scCksY3VyckxpbmU6YyxsaW5lQnJlYWtzOmcsc3RhcnRJbmRleDpkKzF9KSk7cD5zPyhsLnB1c2goZC0xKSxjKyssbz1NYXRoLm1heChvLHMpLHM9TWF0aC5hYnMobi10W2NdKSxpLnB1c2goYS1mKSxhPWYpOnM9cH1pLnB1c2goYSl9ZnVuY3Rpb24gYShlLHQscixhKXtmb3IodmFyIGk9TWF0aC5jZWlsKGUudG90YWwvdCkscz1NYXRoLmZsb29yKGUudG90YWwvaSksbz1bXSxjPTA7YzxpO2MrKylvLnB1c2gocyooYysxKSk7dmFyIGw9W107bC5wdXNoKHthY2N1bXVsYXRvcjowLGxpbmVBY2N1bXVsYXRvcjowLGxpbmVXaWR0aHM6W10sbGFzdFZhcmlhbmNlOjk5OTk5OSxoaWdoZXN0VmFyaWFuY2U6MCxjdXJyTGluZTowLGxpbmVCcmVha3M6W10sc3RhcnRJbmRleDowfSk7Zm9yKHZhciBoPTA7aDxsLmxlbmd0aDspbihlLm1lYXN1cmVXaWR0aHMsbyxsW2hdLmFjY3VtdWxhdG9yLGxbaF0ubGluZUFjY3VtdWxhdG9yLGxbaF0ubGluZVdpZHRocyxsW2hdLmxhc3RWYXJpYW5jZSxsW2hdLmhpZ2hlc3RWYXJpYW5jZSxsW2hdLmN1cnJMaW5lLGxbaF0ubGluZUJyZWFrcyxsW2hdLnN0YXJ0SW5kZXgsbCksaCsrO2ZvcihjPTA7YzxsLmxlbmd0aDtjKyspe3ZhciB1PWxbY107dS52YXJpYW5jZXM9W10sdS5hdmVWYXJpYW5jZT0wO2Zvcih2YXIgZD0wO2Q8dS5saW5lV2lkdGhzLmxlbmd0aDtkKyspe3ZhciBmPXUubGluZVdpZHRoc1tkXTt1LnZhcmlhbmNlcy5wdXNoKGYtb1swXSksdS5hdmVWYXJpYW5jZSs9TWF0aC5hYnMoZi1vWzBdKX11LmF2ZVZhcmlhbmNlPXUuYXZlVmFyaWFuY2UvdS5saW5lV2lkdGhzLmxlbmd0aCxhLmF0dGVtcHRzLnB1c2goe3R5cGU6Im9wdGltaXplTGluZVdpZHRocyIsbGluZUJyZWFrczp1LmxpbmVCcmVha3MsdmFyaWFuY2VzOnUudmFyaWFuY2VzLGF2ZVZhcmlhbmNlOnUuYXZlVmFyaWFuY2Usd2lkdGhzOmUubWVhc3VyZVdpZHRoc30pfXZhciBwPTk5OTk5OTksbT0tMTtmb3IoYz0wO2M8bC5sZW5ndGg7YysrKSh1PWxbY10pLmF2ZVZhcmlhbmNlPHAmJihwPXUuYXZlVmFyaWFuY2UsbT1jKTtyZXR1cm57ZmFpbGVkOiExLGxpbmVCcmVha3M6bFttXS5saW5lQnJlYWtzLHZhcmlhbmNlOmxbbV0uaGlnaGVzdFZhcmlhbmNlfX1mdW5jdGlvbiBpKGUsdCxyKXtmb3IodmFyIG49W10sYT1bXSxpPTAscz0hMSxvPTA7bzxlLmxlbmd0aDtvKyspKGkrPWVbb10pPnQmJihzPSEwKSxvJXI9PXItMSYmKG8hPT1lLmxlbmd0aC0xJiZuLnB1c2gobyksYS5wdXNoKE1hdGgucm91bmQoaSkpLGk9MCk7cmV0dXJue2ZhaWxlZDpzLHRvdGFsczphLGxpbmVCcmVha3M6bn19ZS5leHBvcnRzPXt3cmFwTGluZXM6ZnVuY3Rpb24oZSx0LHIpe2lmKHQmJjAhPT1lLmxpbmVzLmxlbmd0aCl7dmFyIG49ZS5kZWxpbmUoe2xpbmVCcmVha3M6ITF9KSxhPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPVtdLG49MCxhPTAsaT0wLHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIG89ZVtzXTtpZihvLnN0YWZmKXt2YXIgYz1hLGw9dFtuXTtuKys7Zm9yKHZhciBoPTA7aDxvLnN0YWZmLmxlbmd0aDtoKyspZm9yKHZhciB1PW8uc3RhZmZbaF0sZD0wO2Q8dS52b2ljZXMubGVuZ3RoO2QrKyl7aT1jO2Zvcih2YXIgZj0wLHA9MCxtPXUudm9pY2VzW2RdLGc9MCx2PTA7djxtLmxlbmd0aDt2KyspImJhciI9PT1tW3ZdLmVsX3R5cGUmJihsW3BdPT09ZiYmKHIucHVzaCh7b2dMaW5lOnMsbGluZTppLHN0YWZmOmgsdm9pY2U6ZCxzdGFydDpnLGVuZDp2fSksZz12KzEsaSsrLGE9TWF0aC5tYXgoYSxpKSxwKyspLGYrKyk7ci5wdXNoKHtvZ0xpbmU6cyxsaW5lOmksc3RhZmY6aCx2b2ljZTpkLHN0YXJ0OmcsZW5kOm0ubGVuZ3RofSksaSsrLGE9TWF0aC5tYXgoYSxpKX19ZWxzZSByLnB1c2goe29nTGluZTpzLGxpbmU6aX0pLGkrKyxhPU1hdGgubWF4KGEsaSl9cmV0dXJuIHJ9KG4sdCk7ZS5saW5lcz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPVtdLGE9W10saT1bXSxzPTEsbz0wO288dC5sZW5ndGg7bysrKXt2YXIgYz10W29dO2lmKGVbYy5vZ0xpbmVdLnN0YWZmKXt2YXIgbD1lW2Mub2dMaW5lXS5zdGFmZltjLnN0YWZmXTtpZihuW2MubGluZV18fChuW2MubGluZV09e3N0YWZmOltdfSksIW5bYy5saW5lXS5zdGFmZltjLnN0YWZmXSl7bltjLmxpbmVdLnN0YWZmW2Muc3RhZmZdPXt2b2ljZXM6W119LHZvaWQgMCE9PXImJjA9PT1jLnN0YWZmJiZjLmxpbmU+MCYmKG5bYy5saW5lXS5zdGFmZltjLnN0YWZmXS5iYXJOdW1iZXI9cyk7Zm9yKHZhciBoPU9iamVjdC5rZXlzKGwpLHU9MDt1PGgubGVuZ3RoO3UrKyl7dmFyIGQ9InZvaWNlcyI9PT1oW3VdOyJtZXRlciI9PT1oW3VdJiYwIT09Yy5saW5lJiYoZD0hMCksZHx8KG5bYy5saW5lXS5zdGFmZltjLnN0YWZmXVtoW3VdXT1sW2hbdV1dKX1hW2Muc3RhZmZdJiYobltjLmxpbmVdLnN0YWZmW2Muc3RhZmZdLmtleT1hW2Muc3RhZmZdKX1uW2MubGluZV0uc3RhZmZbYy5zdGFmZl0udm9pY2VzW2Mudm9pY2VdfHwobltjLmxpbmVdLnN0YWZmW2Muc3RhZmZdLnZvaWNlc1tjLnZvaWNlXT1bXSksbltjLmxpbmVdLnN0YWZmW2Muc3RhZmZdLnZvaWNlc1tjLnZvaWNlXT1lW2Mub2dMaW5lXS5zdGFmZltjLnN0YWZmXS52b2ljZXNbYy52b2ljZV0uc2xpY2UoYy5zdGFydCxjLmVuZCsxKSxpWzEwKmMuc3RhZmYrYy52b2ljZV0mJm5bYy5saW5lXS5zdGFmZltjLnN0YWZmXS52b2ljZXNbYy52b2ljZV0udW5zaGlmdCh7ZWxfdHlwZToic3RlbSIsZGlyZWN0aW9uOmlbMTAqYy5zdGFmZitjLnZvaWNlXS5kaXJlY3Rpb259KTtmb3IodmFyIGY9bltjLmxpbmVdLnN0YWZmW2Muc3RhZmZdLnZvaWNlc1tjLnZvaWNlXSxwPWYubGVuZ3RoLTE7cD49MDtwLS0paWYoImtleSI9PT1mW3BdLmVsX3R5cGUpe2FbYy5zdGFmZl09e3Jvb3Q6ZltwXS5yb290LGFjYzpmW3BdLmFjYyxtb2RlOmZbcF0ubW9kZSxhY2NpZGVudGFsczpmW3BdLmFjY2lkZW50YWxzLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIm5hdHVyYWwiIT09ZS5hY2N9KSl9O2JyZWFrfWZvcihwPWYubGVuZ3RoLTE7cD49MDtwLS0paWYoInN0ZW0iPT09ZltwXS5lbF90eXBlKXtpWzEwKmMuc3RhZmYrYy52b2ljZV09e2RpcmVjdGlvbjpmW3BdLmRpcmVjdGlvbn07YnJlYWt9aWYodm9pZCAwIT09ciYmMD09PWMuc3RhZmYmJjA9PT1jLnZvaWNlKWZvcihwPTA7cDxmLmxlbmd0aDtwKyspImJhciI9PT1mW3BdLmVsX3R5cGUmJihzKysscD09PWYubGVuZ3RoLTE/ZGVsZXRlIGZbcF0uYmFyTnVtYmVyOmZbcF0uYmFyTnVtYmVyPXMpfWVsc2UgbltjLmxpbmVdPWVbYy5vZ0xpbmVdfWZvcih2YXIgbT0wO208bi5sZW5ndGg7bSsrKW5bbV0uc3RhZmYmJihuW21dLnN0YWZmPW5bbV0uc3RhZmYuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZX0pKSk7cmV0dXJuIG59KG4sYSxyKSxlLmxpbmVCcmVha3M9YX19LGNhbGNMaW5lV3JhcHM6ZnVuY3Rpb24oZSxyLG4pe2lmKDA9PT1yLmxlbmd0aHx8bi5zdGFmZndpZHRoPHJbMF0ubGVmdClyZXR1cm57cmVQYXJzZTohMSxleHBsYW5hdGlvbjoiU3RhZmYgd2lkdGggaXMgbmFycm93ZXIgdGhhbiB0aGUgbWFyZ2luIixyZXZpc2VkUGFyYW1zOm59O3ZhciBzPW4uc2NhbGU/TWF0aC5tYXgobi5zY2FsZSwuMSk6MSxvPW4ud3JhcC5taW5TcGFjaW5nP01hdGgubWF4KHBhcnNlRmxvYXQobi53cmFwLm1pblNwYWNpbmcpLDEpOjEsYz1uLndyYXAubWluU3BhY2luZ0xpbWl0P01hdGgubWF4KHBhcnNlRmxvYXQobi53cmFwLm1pblNwYWNpbmdMaW1pdCksMSk6by0uMSxsPW4ud3JhcC5tYXhTcGFjaW5nP01hdGgubWF4KHBhcnNlRmxvYXQobi53cmFwLm1heFNwYWNpbmcpLDEpOnZvaWQgMDtuLndyYXAubGFzdExpbmVMaW1pdCYmIWwmJihsPU1hdGgubWF4KHBhcnNlRmxvYXQobi53cmFwLmxhc3RMaW5lTGltaXQpLDEpKTtmb3IodmFyIGg9bi53cmFwLnByZWZlcnJlZE1lYXN1cmVzUGVyTGluZT9NYXRoLm1heChwYXJzZUludChuLndyYXAucHJlZmVycmVkTWVhc3VyZXNQZXJMaW5lLDEwKSwwKTp2b2lkIDAsdT1bXSxkPVtdLGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIHA9cltmXSxtPW4uc3RhZmZ3aWR0aC1wLmxlZnQsZz1tL28vcyx2PW0vYy9zLGI9e3dpZHRoczpwLGxpbmVCcmVha1BvaW50OmcsbWluTGluZVNpemU6bS9sL3MsYXR0ZW1wdHM6W10sc3RhZmZXaWR0aDpuLnN0YWZmd2lkdGgsbWluV2lkdGg6TWF0aC5yb3VuZCh2KX0seT1udWxsO2lmKGgpe3ZhciB4PWkocC5tZWFzdXJlV2lkdGhzLGcsaCk7Yi5hdHRlbXB0cy5wdXNoKHt0eXBlOiJGaXhlZCBNZWFzdXJlcyBQZXIgTGluZSIscHJlZmVycmVkTWVhc3VyZXNQZXJMaW5lOmgsbGluZUJyZWFrczp4LmxpbmVCcmVha3MsZmFpbGVkOnguZmFpbGVkLHRvdGFsczp4LnRvdGFsc30pLHguZmFpbGVkfHwoeT14LmxpbmVCcmVha3MpfWlmKCF5KXt2YXIgaz10KHAubWVhc3VyZVdpZHRocyxnKTtiLmF0dGVtcHRzLnB1c2goe3R5cGU6IkZyZWUgRm9ybSIsbGluZUJyZWFrczprLmxpbmVCcmVha3MsdG90YWxzOmsudG90YWxzfSksKHk9ay5saW5lQnJlYWtzKS5sZW5ndGg+MCYmcC5tZWFzdXJlV2lkdGhzLmxlbmd0aDwyNSYmKGs9YShwLGcsMCxiKSxiLmF0dGVtcHRzLnB1c2goe3R5cGU6Ik9wdGltaXplIixmYWlsZWQ6ay5mYWlsZWQscmVhc29uOmsucmVhc29uLGxpbmVCcmVha3M6ay5saW5lQnJlYWtzLHRvdGFsczprLnRvdGFsc30pLGsuZmFpbGVkfHwoeT1rLmxpbmVCcmVha3MpKX11LnB1c2goeSksZC5wdXNoKGIpfXZhciB3PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj17bGluZUJyZWFrczplLHN0YWZmd2lkdGg6dH07Zm9yKHZhciBhIGluIHIpci5oYXNPd25Qcm9wZXJ0eShhKSYmIndyYXAiIT09YSYmInN0YWZmd2lkdGgiIT09YSYmKG5bYV09clthXSk7cmV0dXJue3JldmlzZWRQYXJhbXM6bn19KHUsbi5zdGFmZndpZHRoLG4pO3JldHVybiB3LmV4cGxhbmF0aW9uPWQsdy5yZVBhcnNlPSEwLHd9fX0sNTYzMzpmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbihlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9ZnVuY3Rpb24oZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGEoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09cnx8IlNldCI9PT1yP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9hKGUsdCk6dm9pZCAwfX0oZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGk9ZnVuY3Rpb24oKXt9O3JldHVybntzOmksbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOml9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgcyxvPSEwLGM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBvPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe2M9ITAscz1lfSxmOmZ1bmN0aW9uKCl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYoYyl0aHJvdyBzfX19fWZ1bmN0aW9uIGEoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn12YXIgaSxzPXIoOTQ0Nyksbz1yKDQ5MTQpLGM9by5yZWxhdGl2ZU1ham9yLGw9by50cmFuc3Bvc2VLZXksaD1vLnJlbGF0aXZlTW9kZSx1PXIoNDIwOCk7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUoZSxyLG4pe3ZhciBhPVtdLGk9ci5nZXRLZXlTaWduYXR1cmUoKTtpZigiSHAiPT09aS5yb290fHwiSFAiPT09aS5yb290KXJldHVybiBhO2E9YS5jb25jYXQoZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9W10sbj1lLnNwbGl0KCJLOiIpLGE9blswXS5sZW5ndGgsaT0xO2k8bi5sZW5ndGg7aSsrKXt2YXIgcz1uW2ldLG89cy5tYXRjaCgvXiggKikoW0EtR10pKFsjYl0/KSggPykoXHcqKS8pO2lmKG8pe3ZhciBjPWErMitvWzFdLmxlbmd0aCxsPW9bMl0rb1szXStvWzRdK29bNV0saD1wKHtyb290Om9bMl0sYWNjOm9bM10sbW9kZTpvWzVdfSx0KSx1PWgucm9vdCtoLmFjYytvWzRdK2gubW9kZTtyLnB1c2goe3N0YXJ0OmMsZW5kOmMrbC5sZW5ndGgsbm90ZTp1fSl9YSs9cy5sZW5ndGgrMn1yZXR1cm4gcn0oZSxuKSk7Zm9yKHZhciBzPTA7czxyLmxpbmVzLmxlbmd0aDtzKyspe3ZhciBvPXIubGluZXNbc10uc3RhZmY7aWYobylmb3IodmFyIGM9MDtjPG8ubGVuZ3RoO2MrKyl7dmFyIGw9b1tjXTsicGVyYyIhPT1sLmNsZWYudHlwZSYmKGE9YS5jb25jYXQodChlLGwudm9pY2VzLGwua2V5LG4pKSl9fXJldHVybiBhfWZ1bmN0aW9uIHQoZSx0LG4sYSl7Zm9yKHZhciBpPVtdLHM9cChuLGEpLGM9MDtjPHQubGVuZ3RoO2MrKylpPWkuY29uY2F0KG8oZSx0W2NdLG4ucm9vdCxyKG4pLHMsYSkpO3JldHVybiBpfWZ1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PXt9LHI9MDtyPGUuYWNjaWRlbnRhbHMubGVuZ3RoO3IrKyl7dmFyIG49ZS5hY2NpZGVudGFsc1tyXTsiZmxhdCI9PT1uLmFjYz90W24ubm90ZS50b1VwcGVyQ2FzZSgpXT0iXyI6InNoYXJwIj09PW4uYWNjJiYodFtuLm5vdGUudG9VcHBlckNhc2UoKV09Il4iKX1yZXR1cm4gdH1mdW5jdGlvbiBhKGUsdCxyKXt2YXIgbj1kLmluZGV4T2YoZS5yb290KS1kLmluZGV4T2YodCk7cmV0dXJuIm5vbmUiPT09dCYmKG49ZC5pbmRleE9mKGUucm9vdCkpLDA9PT1uP3I+Mj9uKz03Oi0xMj09PXImJihuLT03KTpyPjAmJm48MD9uKz03OnI8MCYmbj4wJiYobi09Nykscj4xMj9uKz03OnI8LTEyJiYobi09Nyksbn1mdW5jdGlvbiBvKGUsdCxuLGkscyxvKXtmb3IodmFyIGM9W10sbD1hKHMsbixvKSxoPXt9LGQ9e30sZj0wO2Y8dC5sZW5ndGg7ZisrKXt2YXIgZz10W2ZdO2lmKGcuY2hvcmQpZm9yKHZhciB2PTA7djxnLmNob3JkLmxlbmd0aDt2Kyspe3ZhciBiPWcuY2hvcmRbdl07aWYoImRlZmF1bHQiPT09Yi5wb3NpdGlvbil7dmFyIHk9cy5hY2NpZGVudGFscy5sZW5ndGgmJiJmbGF0Ij09PXMuYWNjaWRlbnRhbHNbMF0uYWNjLFQ9dShiLm5hbWUsbyx5LCEwKTsoVD1ULnJlcGxhY2UoL+KZrS9nLCJiIikucmVwbGFjZSgv4pmvL2csIiMiKSkhPT1iLm5hbWUmJmMucHVzaChDKGUsZy5zdGFydENoYXIsZy5lbmRDaGFyLFQpKX19aWYoIm5vdGUiPT09Zy5lbF90eXBlJiZnLnBpdGNoZXMpe2Zvcih2YXIgUz0wO1M8Zy5waXRjaGVzLmxlbmd0aDtTKyspe3ZhciBfPXgoZy5waXRjaGVzW1NdLm5hbWUsbixpLGgpO18uYWNjJiYoaFtfLm5hbWUudG9VcHBlckNhc2UoKV09Xy5hY2MpO3ZhciBFPW0oXyxzLGwsZCk7RS5hY2MmJihkW0UudXBwZXJdPUUuYWNjKSxjLnB1c2goayhlLGcuc3RhcnRDaGFyLGcuZW5kQ2hhcixFLmFjYytFLm5hbWUsUykpfWlmKGcuZ3JhY2Vub3Rlcylmb3IodmFyIE09MDtNPGcuZ3JhY2Vub3Rlcy5sZW5ndGg7TSsrKXt2YXIgQT14KGcuZ3JhY2Vub3Rlc1tNXS5uYW1lLG4saSxoKTtBLmFjYyYmKGhbQS5uYW1lLnRvVXBwZXJDYXNlKCldPUEuYWNjKTt2YXIgTj1tKEEscyxsLGgpO04uYWNjJiYoZFtOLnVwcGVyXT1OLmFjYyksYy5wdXNoKHcoZSxnLnN0YXJ0Q2hhcixnLmVuZENoYXIsTi5hY2MrTi5uYW1lLE0pKX19ZWxzZSJiYXIiPT09Zy5lbF90eXBlPyhoPXt9LGQ9e30pOiJrZXlTaWduYXR1cmUiPT09Zy5lbF90eXBlJiYobj1nLnJvb3QsaT1yKGcpLGw9YShzPXAoZyxvKSxuLG8pKX1yZXR1cm4gY31pPWZ1bmN0aW9uKHQscixuKXtpZigiVEVTVCI9PT1yKXJldHVybntrZXlBY2NpZGVudGFsczpzLHJlbGF0aXZlTWFqb3I6Yyx0cmFuc3Bvc2VLZXk6bCxyZWxhdGl2ZU1vZGU6aCx0cmFuc3Bvc2VDaG9yZE5hbWU6dX07bj1wYXJzZUludChuLDEwKTt2YXIgYSxpPVtdO2ZvcihhPTA7YTxyLmxlbmd0aDthKyspaT1pLmNvbmNhdChlKHQsclthXSxuKSk7aT1pLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuc3RhcnQtZS5zdGFydH0pKTt2YXIgbz10LnNwbGl0KCIiKTtmb3IoYT0wO2E8aS5sZW5ndGg7YSsrKXt2YXIgZD1pW2FdO28uc3BsaWNlKGQuc3RhcnQsZC5lbmQtZC5zdGFydCxkLm5vdGUpfXJldHVybiBvLmpvaW4oIiIpfTt2YXIgZD0iQ0RFRkdBQiIsZj1bIiwsLCwiLCIsLCwiLCIsLCIsIiwiLCIiLCInIiwiJyciLCInJyciLCInJycnIl07ZnVuY3Rpb24gcChlLHQpe2lmKCJub25lIj09PWUucm9vdClyZXR1cm57cm9vdDpsKCJDIix0KSxtb2RlOiIiLGFjYzoiIixhY2NpZGVudGFsczpbXX07dmFyIHI9YyhlLnJvb3QrZS5hY2MrZS5tb2RlKSxuPWwocix0KSxhPWgobixlLm1vZGUpLGk9cyhuKTtyZXR1cm57cm9vdDphWzBdLG1vZGU6ZS5tb2RlLGFjYzphLmxlbmd0aD4xP2FbMV06IiIsYWNjaWRlbnRhbHM6aX19ZnVuY3Rpb24gbShlLHQscixuKXtmb3IodmFyIGE9ZS5waXRjaCxpPWQuaW5kZXhPZihlLm5hbWUpLHM9KGQuaW5kZXhPZih0LnJvb3QpK2EpJTcsbz1pK3IsYz1lLm9jdDtvPjY7KWMrKyxvLT03O2Zvcig7bzwwOyljLS0sbys9Nztmb3IodmFyIGw9ZFtzXSxoPSIiLHU9ZS5hZGosZj0iPSIscD0wO3A8dC5hY2NpZGVudGFscy5sZW5ndGg7cCsrKWlmKHQuYWNjaWRlbnRhbHNbcF0ubm90ZS50b0xvd2VyQ2FzZSgpPT09bC50b0xvd2VyQ2FzZSgpKXt1Kz0iZmxhdCI9PT10LmFjY2lkZW50YWxzW3BdLmFjYz8tMToxLGY9ImZsYXQiPT09dC5hY2NpZGVudGFsc1twXS5hY2M/Il8iOiJeIjticmVha31zd2l0Y2godSl7Y2FzZS0yOmg9Il9fIjticmVhaztjYXNlLTE6aD0iXyI7YnJlYWs7Y2FzZSAwOmg9Ij0iO2JyZWFrO2Nhc2UgMTpoPSJeIjticmVhaztjYXNlIDI6aD0iXl4iO2JyZWFrO2Nhc2UtMzpyZXR1cm4oZz17fSkucGl0Y2g9ZS5waXRjaC0xLGcub2N0PWUub2N0LGcubmFtZT1kW2QuaW5kZXhPZihlLm5hbWUpLTFdLGcubmFtZXx8KGcubmFtZT0iQiIsZy5vY3QtLSksIkIiPT09Zy5uYW1lfHwiRSI9PT1nLm5hbWU/Zy5hZGo9ZS5hZGorMTpnLmFkaj1lLmFkaisyLG0oZyx0LHIrMSxuKTtjYXNlIDM6dmFyIGc7cmV0dXJuKGc9e30pLnBpdGNoPWUucGl0Y2grMSxnLm9jdD1lLm9jdCxnLm5hbWU9ZFtkLmluZGV4T2YoZS5uYW1lKSsxXSxnLm5hbWV8fChnLm5hbWU9IkMiLGcub2N0KyspLCJDIj09PWcubmFtZXx8IkYiPT09Zy5uYW1lP2cuYWRqPWUuYWRqLTE6Zy5hZGo9ZS5hZGotMixtKGcsdCxyKzEsbil9c3dpdGNoKG5bbF0hPT1oJiYobltsXXx8aCE9PWYpfHxlLmNvdXJ0ZXN5fHwoaD0iIiksYyl7Y2FzZSAwOmwrPSIsLCwiO2JyZWFrO2Nhc2UgMTpsKz0iLCwiO2JyZWFrO2Nhc2UgMjpsKz0iLCI7YnJlYWs7Y2FzZSA0Omw9bC50b0xvd2VyQ2FzZSgpO2JyZWFrO2Nhc2UgNTpsPWwudG9Mb3dlckNhc2UoKSsiJyI7YnJlYWs7Y2FzZSA2Omw9bC50b0xvd2VyQ2FzZSgpKyInJyI7YnJlYWs7Y2FzZSA3Omw9bC50b0xvd2VyQ2FzZSgpKyInJyciO2JyZWFrO2Nhc2UgODpsPWwudG9Mb3dlckNhc2UoKSsiJycnJyJ9cmV0dXJuIGM+NCYmKGw9bC50b0xvd2VyQ2FzZSgpKSx7YWNjOmgsbmFtZTpsLHVwcGVyOmwudG9VcHBlckNhc2UoKX19dmFyIGc9LyhbX149XSopKFtBLUdhLWddKShbLCddKikvLHY9LyhbX149XSpbQS1HYS1nXVssJ10qKShcZCpcLypcZCopKFtcPlw8XC1cKVwuXHNcXF0qKS8sYj0vKFtfXj1dKltBLUdhLWddWywnXSopPyhcZCpcLypcZCopPyhbXD5cPFwtXCldKik/Lyx5PS8oXHMqKSQvO2Z1bmN0aW9uIHgoZSx0LHIsbil7dmFyIGE9Im5vbmUiPT09dD8wOmQuaW5kZXhPZih0KSxpPWUubWF0Y2goZykscz1pWzJdLnRvVXBwZXJDYXNlKCksbz1kLmluZGV4T2YocyktYTtvPDAmJihvKz03KTt2YXIgYz1mLmluZGV4T2YoaVszXSk7cz09PWlbMl0mJmMtLTt2YXIgbD1uW3NdfHxyW3NdfHwiPSI7cmV0dXJue2FjYzppWzFdLG5hbWU6cyxwaXRjaDpvLG9jdDpjLGFkajpUKGlbMV0scltzXSxuW3NdKSxjb3VydGVzeTppWzFdPT09bH19ZnVuY3Rpb24gayhlLHQscixhLGkpe3ZhciBzPWUuc3Vic3RyaW5nKHQsciksbz1zLm1hdGNoKG5ldyBSZWdFeHAodi5zb3VyY2UreS5zb3VyY2UpKTtpZihvKXt2YXIgYz1vWzFdLmxlbmd0aCxsPW9bMl0ubGVuZ3RoK29bM10ubGVuZ3RoK29bNF0ubGVuZ3RoO3QrPXItdC1jLWwsci09bH1lbHNle3ZhciBoPW5ldyBSZWdFeHAoLyhbXlxbXSopLy5zb3VyY2UrL1xbLy5zb3VyY2UrIig/OiIrYi5zb3VyY2UrIlxccyopezEsOH0iKy9cLT9dKFxkKlwvKlxkKik/KFtcPlw8XC1cKV0qKS8uc291cmNlK3kuc291cmNlKTtpZihvPXMubWF0Y2goaCkpe3ZhciB1LGQ9b1sxXS5sZW5ndGgrMSxmPXMuc2xpY2Uob1sxXS5sZW5ndGgrMSxzLmxhc3RJbmRleE9mKCJdIikpLHA9W10sbT1uZXcgUmVnRXhwKGIuc291cmNlKyJcXHMqIiwiZyIpLGc9bihmLm1hdGNoQWxsKG0pKTt0cnl7Zm9yKGcucygpOyEodT1nLm4oKSkuZG9uZTspe3ZhciB4PXUudmFsdWUsaz14WzBdLnRyaW0oKTsiIiE9PWsmJnAucHVzaCh7dGV4dDprLGluZGV4OnguaW5kZXh9KX19Y2F0Y2goZSl7Zy5lKGUpfWZpbmFsbHl7Zy5mKCl9aWYoaT49cC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJDaG9yZCBpbmRleCBvdXQgb2YgcmFuZ2UgZm9yIGNob3JkOiAiK3MpO3ZhciB3PXBbaV0sQz13LnRleHQubWF0Y2goL14oLis/KShcZCtcLz9cZCopPygtKT8kLyk7Qz9DWzFdOncudGV4dCxhPWErKEMmJkNbMl0/Q1syXToiIikrKEMmJkNbM10/Q1szXToiIikscj0odCs9ZCt3LmluZGV4KSt3LnRleHQubGVuZ3RofX1yZXR1cm57c3RhcnQ6dCxlbmQ6cixub3RlOmF9fWZ1bmN0aW9uIHcoZSx0LHIsbixhKXt2YXIgaT0vKFwvKikvLHM9ZS5zdWJzdHJpbmcodCxyKS5tYXRjaChuZXcgUmVnRXhwKC8oW15ce10qKS8uc291cmNlKy9cey8uc291cmNlK2kuc291cmNlK2Iuc291cmNlK2kuc291cmNlK2Iuc291cmNlK2kuc291cmNlK2Iuc291cmNlK2kuc291cmNlK2Iuc291cmNlK2kuc291cmNlK2Iuc291cmNlK2kuc291cmNlK2Iuc291cmNlK2kuc291cmNlK2Iuc291cmNlK2kuc291cmNlK2Iuc291cmNlKy9cfS8uc291cmNlKSk7aWYocyl7Zm9yKHZhciBvPTErc1sxXS5sZW5ndGgsYz0wO2M8YTtjKyspc1szKmMrMl0mJihvKz1zWzMqYysyXS5sZW5ndGgpLHNbMypjKzNdJiYobys9c1szKmMrM10ubGVuZ3RoKSxzWzMqYys0XSYmKG8rPXNbMypjKzRdLmxlbmd0aCksc1szKmMrNV0mJihvKz1zWzMqYys1XS5sZW5ndGgpO3NbMyphKzJdJiYobys9c1szKmMrMl0ubGVuZ3RoKSx0Kz1vO3ZhciBsPXNbMyphKzNdP3NbMyphKzNdLmxlbmd0aDowO2wrPXNbMyphKzRdP3NbMyphKzRdLmxlbmd0aDowLHI9dCsobCs9c1szKmErNV0/c1szKmErNV0ubGVuZ3RoOjApfXJldHVybntzdGFydDp0LGVuZDpyLG5vdGU6bn19ZnVuY3Rpb24gQyhlLHQscixuKXt2YXIgYT1lLnN1YnN0cmluZyh0LHIpLm1hdGNoKC8oW14iXSspPygiLisiKSsvKTtyZXR1cm4gYVsxXSYmKHQrPWFbMV0ubGVuZ3RoKSx7c3RhcnQ6dCsxLGVuZDoocj10K2FbMl0ubGVuZ3RoKS0xLG5vdGU6bn19ZnVuY3Rpb24gVChlLHQscil7aWYoIWUmJnImJihlPXIpLCFlKXJldHVybiAwO3N3aXRjaCh0KXtjYXNlIHZvaWQgMDpzd2l0Y2goZSl7Y2FzZSJfXyI6cmV0dXJuLTI7Y2FzZSJfIjpyZXR1cm4tMTtjYXNlIj0iOmRlZmF1bHQ6cmV0dXJuIDA7Y2FzZSJeIjpyZXR1cm4gMTtjYXNlIl5eIjpyZXR1cm4gMn1jYXNlIl8iOnN3aXRjaChlKXtjYXNlIl9fIjpyZXR1cm4tMTtjYXNlIl8iOmRlZmF1bHQ6cmV0dXJuIDA7Y2FzZSI9IjpyZXR1cm4gMTtjYXNlIl4iOnJldHVybiAyO2Nhc2UiXl4iOnJldHVybiAzfWNhc2UiXiI6c3dpdGNoKGUpe2Nhc2UiX18iOnJldHVybi0zO2Nhc2UiXyI6cmV0dXJuLTI7Y2FzZSI9IjpyZXR1cm4tMTtjYXNlIl4iOmRlZmF1bHQ6cmV0dXJuIDA7Y2FzZSJeXiI6cmV0dXJuIDF9fXJldHVybiAwfX0oKSxlLmV4cG9ydHM9aX0sOTcxNjpmdW5jdGlvbihlLHQscil7dmFyIG4sYT1yKDcyMDcpLGk9cig1MDU4KTshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGUsdCxyLHMsbyxjLGwsaCx1LGQsZixwLG0sZyx2LGIseSx4LGs9MSx3PXtudW06NCxkZW46NH0sQz0xMjgsVD0hMCxTPTEwNSxfPTk1LEU9ODUsTT1bW1MsXyxFXV0sQT0uMjUsTj0wLEI9e30sUD0wO2Z1bmN0aW9uIEwoZSl7Zm9yKHZhciB0PXUubGVuZ3RoLTE7dD49MDt0LS0paWYoInByb2dyYW0iPT09dVt0XS5jbWQpcmV0dXJuIHZvaWQodVt0XS5jaGFubmVsPWUpfWZ1bmN0aW9uIE8oZSl7cmV0dXJuIGUvMWU2fWZ1bmN0aW9uIEgoZSl7cmV0dXJuIE1hdGgucm91bmQoZSprKjFlNikvMWU2fWZ1bmN0aW9uIHooZSl7c3dpdGNoKHBhcnNlSW50KGUuZGVuLDEwKSl7Y2FzZSAyOnJldHVybi41O2Nhc2UgNDpyZXR1cm4uMjU7Y2FzZSA4OnJldHVybiBlLm51bSUzPT0wPy4zNzU6LjEyNTtjYXNlIDE2OnJldHVybi4xMjV9cmV0dXJuLjI1fWZ1bmN0aW9uIEQoZSx0LHIpe2lmKHQpcmV0dXJuIDA7dmFyIG4sYSxpLHM9UyxvPV8sYz1FO2lmKHZvaWQgMCE9PXImJk0ubGVuZ3RoPj1yKzEmJihzPU1bcl1bMF0sbz1NW3JdWzFdLGM9TVtyXVsyXSksdm9pZCAwIT09ZyluPWcsZz12b2lkIDA7ZWxzZSBpZihUKWlmKFA+ZSluPWM7ZWxzZXt2YXIgbD0oYT1tLGk9eih3KSwoZS1hKS9pKTtuPTA9PT1sP3M6cGFyc2VJbnQobCwxMCk9PT1sP286Y31lbHNlIG49bztyZXR1cm4gdiYmKG4rPXYsdj12b2lkIDApLG48MCYmKG49MCksbj4xMjcmJihuPTEyNyksdD8wOm59ZnVuY3Rpb24gRihlLHQpe3ZhciByPXQuc3RhcnQsbj10LmR1cmF0aW9uLGE9SCgxLzMyKTtzd2l0Y2goZSl7Y2FzZSJ0cmlsbCI6Zm9yKHZhciBpPTI7bj4wOyl1LnB1c2goe2NtZDoibm90ZSIscGl0Y2g6dC5waXRjaCtpLHZvbHVtZTp0LnZvbHVtZSxzdGFydDpyLGR1cmF0aW9uOmEsZ2FwOjAsaW5zdHJ1bWVudDpoLHN0eWxlOiJkZWNvcmF0aW9uIn0pLGk9Mj09PWk/MDoyLG4tPWEscis9YTticmVhaztjYXNlInRyaWxsaCI6Zm9yKGk9MTtuPjA7KXUucHVzaCh7Y21kOiJub3RlIixwaXRjaDp0LnBpdGNoK2ksdm9sdW1lOnQudm9sdW1lLHN0YXJ0OnIsZHVyYXRpb246YSxnYXA6MCxpbnN0cnVtZW50Omgsc3R5bGU6ImRlY29yYXRpb24ifSksaT0xPT09aT8wOjEsbi09YSxyKz1hO2JyZWFrO2Nhc2UicHJhbGx0cmlsbGVyIjp1LnB1c2goe2NtZDoibm90ZSIscGl0Y2g6dC5waXRjaCx2b2x1bWU6dC52b2x1bWUsc3RhcnQ6cixkdXJhdGlvbjphLGdhcDowLGluc3RydW1lbnQ6aCxzdHlsZToiZGVjb3JhdGlvbiJ9KSxuLT1hLHIrPWEsdS5wdXNoKHtjbWQ6Im5vdGUiLHBpdGNoOnQucGl0Y2grMix2b2x1bWU6dC52b2x1bWUsc3RhcnQ6cixkdXJhdGlvbjphLGdhcDowLGluc3RydW1lbnQ6aCxzdHlsZToiZGVjb3JhdGlvbiJ9KSxuLT1hLHIrPWEsdS5wdXNoKHtjbWQ6Im5vdGUiLHBpdGNoOnQucGl0Y2gsdm9sdW1lOnQudm9sdW1lLHN0YXJ0OnIsZHVyYXRpb246bixnYXA6MCxpbnN0cnVtZW50Omh9KTticmVhaztjYXNlIm1vcmRlbnQiOmNhc2UibG93ZXJtb3JkZW50Ijp1LnB1c2goe2NtZDoibm90ZSIscGl0Y2g6dC5waXRjaCx2b2x1bWU6dC52b2x1bWUsc3RhcnQ6cixkdXJhdGlvbjphLGdhcDowLGluc3RydW1lbnQ6aCxzdHlsZToiZGVjb3JhdGlvbiJ9KSxuLT1hLHIrPWEsdS5wdXNoKHtjbWQ6Im5vdGUiLHBpdGNoOnQucGl0Y2gtMix2b2x1bWU6dC52b2x1bWUsc3RhcnQ6cixkdXJhdGlvbjphLGdhcDowLGluc3RydW1lbnQ6aCxzdHlsZToiZGVjb3JhdGlvbiJ9KSxuLT1hLHIrPWEsdS5wdXNoKHtjbWQ6Im5vdGUiLHBpdGNoOnQucGl0Y2gsdm9sdW1lOnQudm9sdW1lLHN0YXJ0OnIsZHVyYXRpb246bixnYXA6MCxpbnN0cnVtZW50Omh9KTticmVhaztjYXNlInR1cm4iOmE9dC5kdXJhdGlvbi80LHUucHVzaCh7Y21kOiJub3RlIixwaXRjaDp0LnBpdGNoKzIsdm9sdW1lOnQudm9sdW1lLHN0YXJ0OnIsZHVyYXRpb246YSxnYXA6MCxpbnN0cnVtZW50Omgsc3R5bGU6ImRlY29yYXRpb24ifSksdS5wdXNoKHtjbWQ6Im5vdGUiLHBpdGNoOnQucGl0Y2gsdm9sdW1lOnQudm9sdW1lLHN0YXJ0OnIrYSxkdXJhdGlvbjphLGdhcDowLGluc3RydW1lbnQ6aCxzdHlsZToiZGVjb3JhdGlvbiJ9KSx1LnB1c2goe2NtZDoibm90ZSIscGl0Y2g6dC5waXRjaC0xLHZvbHVtZTp0LnZvbHVtZSxzdGFydDpyKzIqYSxkdXJhdGlvbjphLGdhcDowLGluc3RydW1lbnQ6aCxzdHlsZToiZGVjb3JhdGlvbiJ9KSx1LnB1c2goe2NtZDoibm90ZSIscGl0Y2g6dC5waXRjaCx2b2x1bWU6dC52b2x1bWUsc3RhcnQ6ciszKmEsZHVyYXRpb246YSxnYXA6MCxpbnN0cnVtZW50Omgsc3R5bGU6ImRlY29yYXRpb24ifSk7YnJlYWs7Y2FzZSJyb2xsIjpmb3IoO24+MDspdS5wdXNoKHtjbWQ6Im5vdGUiLHBpdGNoOnQucGl0Y2gsdm9sdW1lOnQudm9sdW1lLHN0YXJ0OnIsZHVyYXRpb246YSxnYXA6MCxpbnN0cnVtZW50Omgsc3R5bGU6ImRlY29yYXRpb24ifSksbi09MiphLHIrPTIqYX19ZnVuY3Rpb24gaihlLHQpe3ZhciByLG49RChPKGUudGltZSksdCk7aWYocC5wcm9jZXNzQ2hvcmQoZSksZS5ncmFjZW5vdGVzJiZlLnBpdGNoZXMmJmUucGl0Y2hlcy5sZW5ndGg+MCYmZS5waXRjaGVzWzBdJiYocj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuPTAsYT1bXSxzPTA7czxlLmxlbmd0aDtzKyspbis9KHI9ZVtzXSkuZHVyYXRpb247dmFyIG89dC8yL247Zm9yKHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIGM9VihyPWVbc10pO2lmKGg9PT1DJiZ4KXt2YXIgbD1pKHIpO2wmJnhbbF0mJihjPXhbbF0uc291bmQpfXZhciB1PXtwaXRjaDpjLGR1cmF0aW9uOnIuZHVyYXRpb24qb307dT1HKHUpLGEucHVzaCh1KX1yZXR1cm4gYX0oZS5ncmFjZW5vdGVzLGUucGl0Y2hlc1swXS5kdXJhdGlvbiksZS5lbGVtJiYoZS5lbGVtLm1pZGlHcmFjZU5vdGVQaXRjaGVzPWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBhPVtdO3I9TWF0aC5yb3VuZChyKTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIHM9ZVtpXTt1LnB1c2goe2NtZDoibm90ZSIscGl0Y2g6cy5waXRjaCx2b2x1bWU6cixzdGFydDp0LGR1cmF0aW9uOnMuZHVyYXRpb24sZ2FwOjAsaW5zdHJ1bWVudDpuLHN0eWxlOiJncmFjZSJ9KSxhLnB1c2goe3BpdGNoOnMucGl0Y2gsZHVyYXRpb25Jbk1lYXN1cmVzOnMuZHVyYXRpb24sdm9sdW1lOnIsaW5zdHJ1bWVudDpufSksdCs9cy5kdXJhdGlvbn1yZXR1cm4gYX0ocixPKGUudGltZSksMipuLzMsaCkpKSxlLmVsZW0pe3ZhciBhPU8oZS50aW1lKSxzPWEvQS9vKjYwKjFlMztpZih2b2lkIDA9PT1lLmVsZW0uY3VycmVudFRyYWNrTWlsbGlzZWNvbmRzKWUuZWxlbS5jdXJyZW50VHJhY2tNaWxsaXNlY29uZHM9cyxlLmVsZW0uY3VycmVudFRyYWNrV2hvbGVOb3Rlcz1hO2Vsc2UgaWYodm9pZCAwPT09ZS5lbGVtLmN1cnJlbnRUcmFja01pbGxpc2Vjb25kcy5sZW5ndGgpZS5lbGVtLmN1cnJlbnRUcmFja01pbGxpc2Vjb25kcyE9PXMmJihlLmVsZW0uY3VycmVudFRyYWNrTWlsbGlzZWNvbmRzPVtlLmVsZW0uY3VycmVudFRyYWNrTWlsbGlzZWNvbmRzLHNdLGUuZWxlbS5jdXJyZW50VHJhY2tXaG9sZU5vdGVzPVtlLmVsZW0uY3VycmVudFRyYWNrV2hvbGVOb3RlcyxhXSk7ZWxzZXtmb3IodmFyIGM9ITEsbD0wO2w8ZS5lbGVtLmN1cnJlbnRUcmFja01pbGxpc2Vjb25kcy5sZW5ndGg7bCsrKWUuZWxlbS5jdXJyZW50VHJhY2tNaWxsaXNlY29uZHNbbF09PT1zJiYoYz0hMCk7Y3x8KGUuZWxlbS5jdXJyZW50VHJhY2tNaWxsaXNlY29uZHMucHVzaChzKSxlLmVsZW0uY3VycmVudFRyYWNrV2hvbGVOb3Rlcy5wdXNoKGEpKX19aWYoZS5waXRjaGVzKXt2YXIgZD0iIixtPWZ1bmN0aW9uKGUsdCl7dmFyIHI9e307aWYoZS5kZWNvcmF0aW9uKWZvcih2YXIgbj0wO248ZS5kZWNvcmF0aW9uLmxlbmd0aDtuKyspInN0YWNjYXRvIj09PWUuZGVjb3JhdGlvbltuXT9yLnRoaXNCcmVha0JldHdlZW5Ob3Rlcz0ic3RhY2NhdG8iOiJ0ZW51dG8iPT09ZS5kZWNvcmF0aW9uW25dP3IudGhpc0JyZWFrQmV0d2Vlbk5vdGVzPSJ0ZW51dG8iOiJhY2NlbnQiPT09ZS5kZWNvcmF0aW9uW25dP3IudmVsb2NpdHk9TWF0aC5taW4oMTI3LDEuNSp0KToidHJpbGwiPT09ZS5kZWNvcmF0aW9uW25dP3Iubm90ZU1vZGlmaWNhdGlvbj0idHJpbGwiOiJsb3dlcm1vcmRlbnQiPT09ZS5kZWNvcmF0aW9uW25dP3Iubm90ZU1vZGlmaWNhdGlvbj0ibG93ZXJtb3JkZW50IjoidXBwZXJtb3JkZW50Ij09PWUuZGVjb3JhdGlvbltuXT9yLm5vdGVNb2RpZmljYXRpb249InByYWxsdHJpbGxlciI6Im1vcmRlbnQiPT09ZS5kZWNvcmF0aW9uW25dP3Iubm90ZU1vZGlmaWNhdGlvbj0ibW9yZGVudCI6InR1cm4iPT09ZS5kZWNvcmF0aW9uW25dP3Iubm90ZU1vZGlmaWNhdGlvbj0idHVybiI6InJvbGwiPT09ZS5kZWNvcmF0aW9uW25dP3Iubm90ZU1vZGlmaWNhdGlvbj0icm9sbCI6InByYWxsdHJpbGxlciI9PT1lLmRlY29yYXRpb25bbl0/ci5ub3RlTW9kaWZpY2F0aW9uPSJwcmFsbHRyaWxsZXIiOiJ0cmlsbGgiPT09ZS5kZWNvcmF0aW9uW25dJiYoci5ub3RlTW9kaWZpY2F0aW9uPSJ0cmlsbGgiKTtyZXR1cm4gcn0oZSxuKTttLnRoaXNCcmVha0JldHdlZW5Ob3RlcyYmKGQ9bS50aGlzQnJlYWtCZXR3ZWVuTm90ZXMpLG0udmVsb2NpdHkmJihuPW0udmVsb2NpdHkpO3ZhciBnPWUucGl0Y2hlczsicmh5dGhtIj09PWUuc3R5bGUmJihnPXAuc2V0Umh5dGhtSGVhZCghMCxlKSksZS5lbGVtJiYoZS5lbGVtLm1pZGlQaXRjaGVzPVtdKTtmb3IodmFyIHY9MDt2PGcubGVuZ3RoO3YrKyl7dmFyIGI9bjshbS52ZWxvY2l0eSYmQXJyYXkuaXNBcnJheShlLmRlY29yYXRpb24pJiZlLmRlY29yYXRpb24ubGVuZ3RoPnYmJihiPUQoTyhlLnRpbWUpLHQsdikpO3ZhciB5PWdbdl07aWYoeSl7eS5zdGFydFNsdXImJihOKz15LnN0YXJ0U2x1ci5sZW5ndGgpLHkuZW5kU2x1ciYmKE4tPXkuZW5kU2x1ci5sZW5ndGgpO3ZhciBrPXkuYWN0dWFsUGl0Y2g/eS5hY3R1YWxQaXRjaDpWKHkpO2lmKGg9PT1DJiZ4KXt2YXIgdz1pKHkpO3cmJnhbd10mJihrPXhbd10uc291bmQpfXZhciBUPXtjbWQ6Im5vdGUiLHBpdGNoOmssdm9sdW1lOmIsc3RhcnQ6TyhlLnRpbWUpLGR1cmF0aW9uOkgoeS5kdXJhdGlvbiksaW5zdHJ1bWVudDpoLHN0YXJ0Q2hhcjplLmVsZW0uc3RhcnRDaGFyLGVuZENoYXI6ZS5lbGVtLmVuZENoYXJ9O2lmKFQ9RyhUKSxlLmdyYWNlbm90ZXMmJihULmR1cmF0aW9uPVQuZHVyYXRpb24vMixULnN0YXJ0PVQuc3RhcnQrVC5kdXJhdGlvbiksZS5lbGVtJiZlLmVsZW0ubWlkaVBpdGNoZXMucHVzaChUKSxtLm5vdGVNb2RpZmljYXRpb24pRihtLm5vdGVNb2RpZmljYXRpb24sVCk7ZWxzZXtzd2l0Y2goTj4wP1QuZW5kVHlwZT0idGVudXRvIjpkJiYoVC5lbmRUeXBlPWQpLFQuZW5kVHlwZSl7Y2FzZSJ0ZW51dG8iOlQuZ2FwPS0uMDAxO2JyZWFrO2Nhc2Uic3RhY2NhdG8iOnZhciBTPS40KlQuZHVyYXRpb247VC5nYXA9by82MCpTO2JyZWFrO2RlZmF1bHQ6VC5nYXA9MH11LnB1c2goVCl9fX11Lmxlbmd0aH12YXIgXz1mdW5jdGlvbihlKXtyZXR1cm4gZS5waXRjaGVzJiZlLnBpdGNoZXMubGVuZ3RoPjAmJmUucGl0Y2hlc1swXT9lLnBpdGNoZXNbMF0uZHVyYXRpb246ZS5lbGVtP2UuZWxlbS5kdXJhdGlvbjplLmR1cmF0aW9ufShlKTtmPU1hdGgubWF4KGYsTyhlLnRpbWUpK0goXykpfW49ZnVuY3Rpb24obixpLEMsSCl7aXx8KGk9e30pLEh8fChIPXt9KSxlPVtdLHQ9WzAsMCwwLDAsMCwwLDBdLHM9W10sbz1pLnFwbSxjPXZvaWQgMCxrPTEsbD12b2lkIDAsaD12b2lkIDAsdT12b2lkIDAsZD12b2lkIDAsZj0wLHg9Qyx3PXtudW06NCxkZW46NH0sVD0hMCxTPTEwNSxfPTk1LEU9ODUsTT1bXSxBPS4yNSxnPXZvaWQgMCx2PXZvaWQgMCxOPTAsYj1bXSxCPXt9LHk9MSxuLmxlbmd0aD4wJiZuWzBdLmxlbmd0aD4wJiYoUD1uWzBdWzBdLnBpY2t1cExlbmd0aCksdm9pZCAwPT09aS5iYXNzcHJvZ3x8SC5iYXNzcHJvZ3x8KEguYmFzc3Byb2c9W2kuYmFzc3Byb2ddKSx2b2lkIDA9PT1pLmJhc3N2b2x8fEguYmFzc3ZvbHx8KEguYmFzc3ZvbD1baS5iYXNzdm9sXSksdm9pZCAwPT09aS5jaG9yZHByb2d8fEguY2hvcmRwcm9nfHwoSC5jaG9yZHByb2c9W2kuY2hvcmRwcm9nXSksdm9pZCAwPT09aS5jaG9yZHZvbHx8SC5jaG9yZHZvbHx8KEguY2hvcmR2b2w9W2kuY2hvcmR2b2xdKSx2b2lkIDA9PT1pLmdjaG9yZHx8SC5nY2hvcmR8fChILmdjaG9yZD1baS5nY2hvcmRdKSxwPW5ldyBhKG4ubGVuZ3RoLGkuY2hvcmRzT2ZmLEgsdyksZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7Zm9yKHZhciBuPWVbcl0sYT17fSxpPXQucXBtLHM9MCxvPTEsYz0wO2M8bi5sZW5ndGg7YysrKXt2YXIgbD1uW2NdO2lmKCJ0ZW1wbyIhPT1sLmVsX3R5cGUpe2wudGltZT1zO3ZhciBoPWwuZHVyYXRpb24/bC5kdXJhdGlvbjowO2lmKHMrPU1hdGgucm91bmQoaCpvKjFlNiksbC5waXRjaGVzKXtmb3IodmFyIHU9MDt1PGwucGl0Y2hlcy5sZW5ndGg7dSsrKXt2YXIgZD1sLnBpdGNoZXNbdV07aWYoZClpZihkLmR1cmF0aW9uPWwuZHVyYXRpb24sZC5zdGFydFRpZSl2b2lkIDA9PT1hW2QucGl0Y2hdP2FbZC5waXRjaF09e2VsOmMscGl0Y2g6dX06KG5bYVtkLnBpdGNoXS5lbF0ucGl0Y2hlc1thW2QucGl0Y2hdLnBpdGNoXS5kdXJhdGlvbis9ZC5kdXJhdGlvbixsLnBpdGNoZXNbdV09bnVsbCk7ZWxzZSBpZihkLmVuZFRpZSl7dmFyIGY9YVtkLnBpdGNoXTtpZihmKXt2YXIgcD1kLmR1cmF0aW9uO2RlbGV0ZSBuW2YuZWxdLnBpdGNoZXNbZi5waXRjaF0uc3RhcnRUaWUsbltmLmVsXS5waXRjaGVzW2YucGl0Y2hdLmR1cmF0aW9uKz1wLGwucGl0Y2hlc1t1XT1udWxsLGRlbGV0ZSBhW2QucGl0Y2hdfWVsc2UgZGVsZXRlIGQuZW5kVGllfX1kZWxldGUgbC5kdXJhdGlvbn19ZWxzZSBpP289bC5xcG0/aS9sLnFwbToxOmk9bC5xcG19Zm9yKHZhciBtIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShtKSl7dmFyIGc9YVttXTtkZWxldGUgbltnLmVsXS5waXRjaGVzW2cucGl0Y2hdLnN0YXJ0VGllfX19KG4saSk7Zm9yKHZhciBEPTA7RDxuLmxlbmd0aDtEKyspe3I9MCxwLnNldFRyYW5zcG9zZShyKTt2YXIgRj1uW0RdO3U9W3tjbWQ6InByb2dyYW0iLGNoYW5uZWw6RCxpbnN0cnVtZW50Omx9XSxkPXZvaWQgMCxtPTAscC5zZXRMYXN0QmFyVGltZSgwKTt2YXIgST0hMTsoITA9PT1pLnZvaWNlc09mZnx8aS52b2ljZXNPZmYmJmkudm9pY2VzT2ZmLmxlbmd0aCYmaS52b2ljZXNPZmYuaW5kZXhPZihEKT49MCkmJihJPSEwKTtmb3IodmFyIFY9MDtWPEYubGVuZ3RoO1YrKyl7dmFyIEc9RltWXTtzd2l0Y2goRy5lbF90eXBlKXtjYXNlIm5hbWUiOmQ9e2NtZDoidGV4dCIsdHlwZToibmFtZSIsdGV4dDpHLnRyYWNrTmFtZX07YnJlYWs7Y2FzZSJub3RlIjpqKEcsSSk7YnJlYWs7Y2FzZSJrZXkiOnQ9WShHKTticmVhaztjYXNlIm1ldGVyIjpjfHwoYz1HKSx3PUcscC5zZXRNZXRlcih3KSxBPXoodyksUigpO2JyZWFrO2Nhc2UidGVtcG8iOm8/az1HLnFwbT9vL0cucXBtOjE6bz1HLnFwbSxwLnNldFRlbXBvQ2hhbmdlRmFjdG9yKGspO2JyZWFrO2Nhc2UidHJhbnNwb3NlIjpyPUcudHJhbnNwb3NlLHAuc2V0VHJhbnNwb3NlKHIpO2JyZWFrO2Nhc2UiYmFyIjpwLmJhckVuZChHKSxlPVtdLDA9PT1EJiZYKG4ubGVuZ3RoKzEpLHAuc2V0Umh5dGhtSGVhZCghMSksbT1PKEcudGltZSkscC5zZXRMYXN0QmFyVGltZShtKTticmVhaztjYXNlImJhZ3BpcGVzIjpicmVhaztjYXNlImluc3RydW1lbnQiOmlmKHZvaWQgMD09PWwmJihsPUcucHJvZ3JhbSksaD1HLnByb2dyYW0sdS5sZW5ndGg+MCYmInByb2dyYW0iPT09dVt1Lmxlbmd0aC0xXS5jbWQpdVt1Lmxlbmd0aC0xXS5pbnN0cnVtZW50PUcucHJvZ3JhbTtlbHNle3ZhciBxO2ZvcihxPXUubGVuZ3RoLTE7cT49MCYmInByb2dyYW0iIT09dVtxXS5jbWQ7cS0tKTsocTwwfHx1W3FdLmluc3RydW1lbnQhPT1HLnByb2dyYW0pJiZ1LnB1c2goe2NtZDoicHJvZ3JhbSIsY2hhbm5lbDowLGluc3RydW1lbnQ6Ry5wcm9ncmFtfSl9YnJlYWs7Y2FzZSJjaGFubmVsIjpMKEcuY2hhbm5lbCk7YnJlYWs7Y2FzZSJkcnVtIjpCPVcoRy5wYXJhbXMpLFIoKTticmVhaztjYXNlImdjaG9yZE9uIjpwLmdDaG9yZE9uKEcpO2JyZWFrO2Nhc2UiYmVhdCI6Uz1HLmJlYXRzWzBdLF89Ry5iZWF0c1sxXSxFPUcuYmVhdHNbMl0sTT1HLnZvbHVtZXNQZXJOb3RlUGl0Y2g/Ry52b2x1bWVzUGVyTm90ZVBpdGNoOltdO2JyZWFrO2Nhc2Uidm9sIjpnPUcudm9sdW1lO2JyZWFrO2Nhc2Uidm9saW5jIjp2PUcudm9sdW1lO2JyZWFrO2Nhc2UiYmVhdGFjY2VudHMiOlQ9Ry52YWx1ZTticmVhaztjYXNlImdjaG9yZCI6Y2FzZSJiYXNzcHJvZyI6Y2FzZSJjaG9yZHByb2ciOmNhc2UiYmFzc3ZvbCI6Y2FzZSJjaG9yZHZvbCI6Y2FzZSJnY2hvcmRiYXJzIjpwLnBhcmFtQ2hhbmdlKEcpO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5sb2coIk1JREkgY3JlYXRpb24uIFVua25vd24gZWxfdHlwZTogIitHLmVsX3R5cGUrIlxuIil9fXZvaWQgMD09PXVbMF0uaW5zdHJ1bWVudCYmKHVbMF0uaW5zdHJ1bWVudD1sfHwwKSxkJiZ1LnVuc2hpZnQoZCkscy5wdXNoKHUpLHAuZmluaXNoKCksYi5sZW5ndGh9cmV0dXJuIGkuZGV0dW5lT2N0YXZlJiZmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj17fSxuPTA7bjxlLmxlbmd0aDtuKyspZm9yKHZhciBhPTA7YTxlW25dLmxlbmd0aDthKyspe3ZhciBpPWVbbl1bYV07Im5vdGUiPT09aS5jbWQmJih2b2lkIDA9PT1yW2kuc3RhcnRdJiYocltpLnN0YXJ0XT1bXSkscltpLnN0YXJ0XS5wdXNoKHt0cmFjazpuLGV2ZW50OmEscGl0Y2g6aS5waXRjaH0pKX12YXIgcz1PYmplY3Qua2V5cyhyKTtmb3Iobj0wO248cy5sZW5ndGg7bisrKXt2YXIgbz1yW3Nbbl1dO2lmKG8ubGVuZ3RoPjEpe3ZhciBjPShvPW8uc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5waXRjaC10LnBpdGNofSkpKVtvLmxlbmd0aC0xXSxsPWMucGl0Y2glMTIsaD0hMTtmb3IoYT0wOyFoJiZhPG8ubGVuZ3RoLTE7YSsrKW9bYV0ucGl0Y2glMTI9PT1sJiYoaD0hMCk7aWYoaCl7dmFyIHU9ZVtjLnRyYWNrXVtjLmV2ZW50XTt1LmNlbnRzfHwodS5jZW50cz0wKSx1LmNlbnRzKz10fX19fShzLHBhcnNlSW50KGkuZGV0dW5lT2N0YXZlLDEwKSkscC5hZGRUcmFjayhzKSxiLmxlbmd0aD4wJiZzLnB1c2goYikse3RlbXBvOm8saW5zdHJ1bWVudDpsLHRyYWNrczpzLHRvdGFsRHVyYXRpb246Zn19O3ZhciBJPVswLDIsNCw1LDcsOSwxMV07ZnVuY3Rpb24gVihuKXtpZih2b2lkIDAhPT1uLm1pZGlwaXRjaClyZXR1cm4gbi5taWRpcGl0Y2g7dmFyIGE9bi5waXRjaDtpZihuLmFjY2lkZW50YWwpc3dpdGNoKG4uYWNjaWRlbnRhbCl7Y2FzZSJzaGFycCI6ZVthXT0xO2JyZWFrO2Nhc2UiZmxhdCI6ZVthXT0tMTticmVhaztjYXNlIm5hdHVyYWwiOmVbYV09MDticmVhaztjYXNlImRibHNoYXJwIjplW2FdPTI7YnJlYWs7Y2FzZSJkYmxmbGF0IjplW2FdPS0yO2JyZWFrO2Nhc2UicXVhcnRlcnNoYXJwIjplW2FdPS4yNTticmVhaztjYXNlInF1YXJ0ZXJmbGF0IjplW2FdPS0uMjV9dmFyIGk9MTIqZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZmxvb3IoZS83KX0oYSkrSVtxKGEpXSs2MDtyZXR1cm4gdm9pZCAwIT09ZVthXT9pKz1lW2FdOmkrPXRbcShhKV0saSs9cn1mdW5jdGlvbiBZKGUpe3ZhciB0PVswLDAsMCwwLDAsMCwwXTtpZighZS5hY2NpZGVudGFscylyZXR1cm4gdDtmb3IodmFyIHI9MDtyPGUuYWNjaWRlbnRhbHMubGVuZ3RoO3IrKyl7dmFyIG4sYT1lLmFjY2lkZW50YWxzW3JdO3N3aXRjaChhLmFjYyl7Y2FzZSJmbGF0IjpuPS0xO2JyZWFrO2Nhc2UicXVhcnRlcmZsYXQiOm49LS4yNTticmVhaztjYXNlInNoYXJwIjpuPTE7YnJlYWs7Y2FzZSJxdWFydGVyc2hhcnAiOm49LjI1O2JyZWFrO2RlZmF1bHQ6bj0wfXRbcShhLm5vdGUudG9Mb3dlckNhc2UoKS5jaGFyQ29kZUF0KDApLSJjIi5jaGFyQ29kZUF0KDApKV0rPW59cmV0dXJuIHR9ZnVuY3Rpb24gRyhlKXt2YXIgdD0iIitlLnBpdGNoO3JldHVybiB0LmluZGV4T2YoIi43NSIpPj0wPyhlLnBpdGNoPU1hdGgucm91bmQoZS5waXRjaCksZS5jZW50cz0tNTApOnQuaW5kZXhPZigiLjI1Iik+PTAmJihlLnBpdGNoPU1hdGgucm91bmQoZS5waXRjaCksZS5jZW50cz01MCksZX1mdW5jdGlvbiBxKGUpe3JldHVybihlJT03KTwwJiYoZSs9NyksZX1mdW5jdGlvbiBXKGUpe2lmKDA9PT1lLnBhdHRlcm4ubGVuZ3RofHwhMT09PWUub24pcmV0dXJue29uOiExfTtmb3IodmFyIHQ9ZS5wYXR0ZXJuWzBdLHI9W10sbj0iIixhPTAsaT0wO2k8dC5sZW5ndGg7aSsrKWlmKCJkIj09PXRbaV0mJmErKywiZCI9PT10W2ldfHwieiI9PT10W2ldKTAhPT1uLmxlbmd0aD8oci5wdXNoKG4pLG49dFtpXSk6bis9dFtpXTtlbHNle2lmKDA9PT1uLmxlbmd0aClyZXR1cm57b246ITF9O24rPXRbaV19aWYoMCE9PW4ubGVuZ3RoJiZyLnB1c2gobiksZS5wYXR0ZXJuLmxlbmd0aCE9PTIqYSsxKXJldHVybntvbjohMX07Zm9yKHZhciBzPXtvbjohMCxiYXJzOmUuYmFycyxwYXR0ZXJuOltdfSxvPXoodyksYz0wLGw9MDtsPHIubGVuZ3RoO2wrKyl7bj1yW2xdO2Zvcih2YXIgaD0xLHU9ITEsZD0wLGY9MTtmPG4ubGVuZ3RoO2YrKylzd2l0Y2gobltmXSl7Y2FzZSIvIjowIT09ZCYmKGgqPWQpLGQ9MCx1PSEwO2JyZWFrO2Nhc2UiMSI6Y2FzZSIyIjpjYXNlIjMiOmNhc2UiNCI6Y2FzZSI1IjpjYXNlIjYiOmNhc2UiNyI6Y2FzZSI4IjpjYXNlIjkiOmQ9MTAqZCtuW2ZdO2JyZWFrO2RlZmF1bHQ6cmV0dXJue29uOiExfX11PygwPT09ZCYmKGQ9MiksaC89ZCk6ZCYmKGgqPWQpLCJkIj09PW5bMF0/KHMucGF0dGVybi5wdXNoKHtsZW46aCpvLHBpdGNoOmUucGF0dGVyblsxK2NdLHZlbG9jaXR5OmUucGF0dGVyblsxK2MrYV19KSxjKyspOnMucGF0dGVybi5wdXNoKHtsZW46aCpvLHBpdGNoOm51bGx9KX1yZXR1cm4geT1lLmJhcnM/ZS5iYXJzOjEsc31mdW5jdGlvbiBSKCl7aWYoQiYmQi5wYXR0ZXJuKXtmb3IodmFyIGU9Qix0PTAscj13Lm51bS93LmRlbixuPTA7bjxlLnBhdHRlcm4ubGVuZ3RoO24rKyl0Kz1lLnBhdHRlcm5bbl0ubGVuO3ZhciBhPXQveS9yO2ZvcihuPTA7bjxlLnBhdHRlcm4ubGVuZ3RoO24rKyllLnBhdHRlcm5bbl0ubGVuPWUucGF0dGVybltuXS5sZW4vYTtCPWV9fWZ1bmN0aW9uIFgoZSl7aWYoMCE9PWIubGVuZ3RofHxCLm9uKXt2YXIgdD13Lm51bS93LmRlbjtpZigwPT09Yi5sZW5ndGgpe2lmKGY8dClyZXR1cm47Yi5wdXNoKHtjbWQ6InByb2dyYW0iLGNoYW5uZWw6ZSxpbnN0cnVtZW50OkN9KX1pZihCLm9uKWZvcih2YXIgcj1tLG49MDtuPEIucGF0dGVybi5sZW5ndGg7bisrKXt2YXIgYT1IKEIucGF0dGVybltuXS5sZW4pO0IucGF0dGVybltuXS5waXRjaCYmYi5wdXNoKHtjbWQ6Im5vdGUiLHBpdGNoOkIucGF0dGVybltuXS5waXRjaCx2b2x1bWU6Qi5wYXR0ZXJuW25dLnZlbG9jaXR5LHN0YXJ0OnIsZHVyYXRpb246YSxnYXA6MCxpbnN0cnVtZW50OkN9KSxyKz1hfX19fSgpLGUuZXhwb3J0cz1ufSw5OTkxOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhPXIoMjcxMCk7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiZlLnNldEF0dHJpYnV0ZShyLHRbcl0pO3JldHVybiBlfWZ1bmN0aW9uIHQoKXt0aGlzLnRyYWNrc3RyaW5ncz0iIix0aGlzLnRyYWNrY291bnQ9MCx0aGlzLm5vdGVPbkFuZENoYW5uZWw9IiU5MCIsdGhpcy5ub3RlT2ZmQW5kQ2hhbm5lbD0iJTgwIn1mdW5jdGlvbiByKGUsdCl7Zm9yKHZhciByPSIiLG49MDtuPGUubGVuZ3RoO24rKylyKz1pKGUuY2hhckNvZGVBdChuKSwyKTtyZXR1cm4iJTAwJUZGIit0K2koci5sZW5ndGgvMywyKStyfWZ1bmN0aW9uIGkoZSx0KXt2YXIgcj1lLnRvU3RyaW5nKDE2KTtmb3Iocj1yLnNwbGl0KCIuIilbMF07ci5sZW5ndGg8dDspcj0iMCIrcjtyZXR1cm4gci5sZW5ndGg+dCYmKHI9ci5zdWJzdHJpbmcoMCx0KSksZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSIiLHI9MDtyPGUubGVuZ3RoO3IrPTIpdCs9IiUiLHQrPWUuc3Vic3RyKHIsMik7cmV0dXJuIHR9KHIpfWZ1bmN0aW9uIHMoZSl7dmFyIHQ9KGU9TWF0aC5yb3VuZChlKSklMTI4O3JldHVybiBpKDIqKGUtdCkrdCw0KX1mdW5jdGlvbiBvKGUpe3ZhciB0PTAscj1bXTtmb3IoZT1NYXRoLnJvdW5kKGUpOzAhPT1lOylyLnB1c2goMTI3JmUpLGU+Pj03O2Zvcih2YXIgbj1yLmxlbmd0aC0xO24+PTA7bi0tKXt0PDw9ODt2YXIgYT1yW25dOzAhPT1uJiYoYXw9MTI4KSx0fD1hfXZhciBzPXQudG9TdHJpbmcoMTYpLmxlbmd0aDtyZXR1cm4gaSh0LHMrPXMlMil9dC5wcm90b3R5cGUuc2V0VGVtcG89ZnVuY3Rpb24oZSl7MD09PXRoaXMudHJhY2tjb3VudCYmKHRoaXMuc3RhcnRUcmFjaygpLHRoaXMudHJhY2srPSIlMDAlRkYlNTElMDMiK2koTWF0aC5yb3VuZCg2ZTcvZSksNiksdGhpcy5lbmRUcmFjaygpKX0sdC5wcm90b3R5cGUuc2V0R2xvYmFsSW5mbz1mdW5jdGlvbihlLHQsbixhKXtpZigwPT09dGhpcy50cmFja2NvdW50KXt0aGlzLnN0YXJ0VHJhY2soKTt2YXIgcz1NYXRoLnJvdW5kKDZlNy9lKTt0aGlzLnRyYWNrKz0iJTAwJUZGJTUxJTAzIitpKHMsNiksbiYmKHRoaXMudHJhY2srPWZ1bmN0aW9uKGUpe2lmKCFlfHwhZS5hY2NpZGVudGFscylyZXR1cm4iIjtmb3IodmFyIHQ9IiUwMCVGRiU1OSUwMiIscj0wLG49MjU2LGE9MDthPGUuYWNjaWRlbnRhbHMubGVuZ3RoO2ErKykic2hhcnAiPT09ZS5hY2NpZGVudGFsc1thXS5hY2M/cisrOiJmbGF0Ij09PWUuYWNjaWRlbnRhbHNbYV0uYWNjJiZuLS07dmFyIHM9aSgyNTYhPT1uP246ciwyKSxvPSJtIj09PWUubW9kZT8iJTAxIjoiJTAwIjtyZXR1cm4gdCtzK299KG4pKSxhJiYodGhpcy50cmFjays9ZnVuY3Rpb24oZSl7dmFyIHQscj0iJTAwJUZGJTU4JTA0IitpKGUubnVtLDIpLG49ezE6MCwyOjEsNDoyLDg6MywxNjo0LDMyOjV9W2UuZGVuXTtpZighbilyZXR1cm4iIjtzd2l0Y2gocis9aShuLDIpLGUubnVtKyIvIitlLmRlbil7Y2FzZSIyLzQiOmNhc2UiMy80IjpjYXNlIjQvNCI6Y2FzZSI1LzQiOnQ9MjQ7YnJlYWs7Y2FzZSI2LzQiOnQ9NzI7YnJlYWs7Y2FzZSIyLzIiOmNhc2UiMy8yIjpjYXNlIjQvMiI6dD00ODticmVhaztjYXNlIjMvOCI6Y2FzZSI2LzgiOmNhc2UiOS84IjpjYXNlIjEyLzgiOnQ9MzZ9cmV0dXJuIHQ/KHIrPWkodCwyKSkrIiUwOCI6IiJ9KGEpKSx0JiYodGhpcy50cmFjays9cih0LCIlMDEiKSksdGhpcy5lbmRUcmFjaygpfX0sdC5wcm90b3R5cGUuc3RhcnRUcmFjaz1mdW5jdGlvbigpe3RoaXMubm90ZVdhcnBlZD17fSx0aGlzLnRyYWNrPSIiLHRoaXMudHJhY2tOYW1lPSIiLHRoaXMudHJhY2tJbnN0cnVtZW50PSIiLHRoaXMuc2lsZW5jZWxlbmd0aD0wLHRoaXMudHJhY2tjb3VudCsrLHRoaXMuaW5zdHJ1bWVudCYmdGhpcy5zZXRJbnN0cnVtZW50KHRoaXMuaW5zdHJ1bWVudCl9LHQucHJvdG90eXBlLmVuZFRyYWNrPWZ1bmN0aW9uKCl7dGhpcy50cmFjaz10aGlzLnRyYWNrTmFtZSt0aGlzLnRyYWNrSW5zdHJ1bWVudCt0aGlzLnRyYWNrO3ZhciBlPWkodGhpcy50cmFjay5sZW5ndGgvMys0LDgpO3RoaXMudHJhY2s9Ik1UcmsiK2UrdGhpcy50cmFjaysiJTAwJUZGJTJGJTAwIix0aGlzLnRyYWNrc3RyaW5ncys9dGhpcy50cmFja30sdC5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlvbihlLHQpeyJuYW1lIj09PWUmJih0aGlzLnRyYWNrTmFtZT1yKHQsIiUwMyIpKX0sdC5wcm90b3R5cGUuc2V0SW5zdHJ1bWVudD1mdW5jdGlvbihlKXt0aGlzLnRyYWNrSW5zdHJ1bWVudD0iJTAwJUMwIitpKGUsMiksdGhpcy5pbnN0cnVtZW50PWV9LHQucHJvdG90eXBlLnNldENoYW5uZWw9ZnVuY3Rpb24oZSx0KXt0aGlzLmNoYW5uZWw9ZTt2YXIgcj0iJTAwJUIiK3RoaXMuY2hhbm5lbC50b1N0cmluZygxNik7dGhpcy50cmFjays9cisiJTc5JTAwIix0aGlzLnRyYWNrKz1yKyIlNDAlMDAiLHRoaXMudHJhY2srPXIrIiU1QiUzMCIsdHx8KHQ9MCksdD1NYXRoLnJvdW5kKDY0Kih0KzEpKSx0aGlzLnRyYWNrKz1yKyIlMEEiK2kodCwyKSx0aGlzLnRyYWNrKz1yKyIlMDclNjQiLHRoaXMubm90ZU9uQW5kQ2hhbm5lbD0iJTkiK3RoaXMuY2hhbm5lbC50b1N0cmluZygxNiksdGhpcy5ub3RlT2ZmQW5kQ2hhbm5lbD0iJTgiK3RoaXMuY2hhbm5lbC50b1N0cmluZygxNil9LHQucHJvdG90eXBlLnN0YXJ0Tm90ZT1mdW5jdGlvbihlLHQscil7aWYodGhpcy50cmFjays9byh0aGlzLnNpbGVuY2VsZW5ndGgpLHRoaXMuc2lsZW5jZWxlbmd0aD0wLHIpe3RoaXMudHJhY2srPSIlZSIrdGhpcy5jaGFubmVsLnRvU3RyaW5nKDE2KTt2YXIgbj1NYXRoLnJvdW5kKDQwOTYqYShyKSk7dGhpcy50cmFjays9cyg4MTkyK24pLHRoaXMudHJhY2srPW8oMCksdGhpcy5ub3RlV2FycGVkW2VdPSEwfXRoaXMudHJhY2srPXRoaXMubm90ZU9uQW5kQ2hhbm5lbCx0aGlzLnRyYWNrKz0iJSIrZS50b1N0cmluZygxNikraSh0LDIpfSx0LnByb3RvdHlwZS5lbmROb3RlPWZ1bmN0aW9uKGUpe3RoaXMudHJhY2srPW8odGhpcy5zaWxlbmNlbGVuZ3RoKSx0aGlzLnNpbGVuY2VsZW5ndGg9MCx0aGlzLm5vdGVXYXJwZWRbZV0mJih0aGlzLnRyYWNrKz0iJWUiK3RoaXMuY2hhbm5lbC50b1N0cmluZygxNiksdGhpcy50cmFjays9cyg4MTkyKSx0aGlzLnRyYWNrKz1vKDApLHRoaXMubm90ZVdhcnBlZFtlXT0hMSksdGhpcy50cmFjays9dGhpcy5ub3RlT2ZmQW5kQ2hhbm5lbCx0aGlzLnRyYWNrKz0iJSIrZS50b1N0cmluZygxNikrIiUwMCJ9LHQucHJvdG90eXBlLmFkZFJlc3Q9ZnVuY3Rpb24oZSl7dGhpcy5zaWxlbmNlbGVuZ3RoKz1lLHRoaXMuc2lsZW5jZWxlbmd0aDwwJiYodGhpcy5zaWxlbmNlbGVuZ3RoPTApfSx0LnByb3RvdHlwZS5nZXREYXRhPWZ1bmN0aW9uKCl7cmV0dXJuImRhdGE6YXVkaW8vbWlkaSxNVGhkJTAwJTAwJTAwJTA2JTAwJTAxIitpKHRoaXMudHJhY2tjb3VudCw0KSsiJTAxJWUwIit0aGlzLnRyYWNrc3RyaW5nc30sdC5wcm90b3R5cGUuZW1iZWQ9ZnVuY3Rpb24odCxyKXt2YXIgbj10aGlzLmdldERhdGEoKSxhPWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLHtocmVmOm59KTtpZihhLmlubmVySFRNTD0iZG93bmxvYWQgbWlkaSIsdC5pbnNlcnRCZWZvcmUoYSx0LmZpcnN0Q2hpbGQpLCFyKXt2YXIgaT1lKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImVtYmVkIikse3NyYzpuLHR5cGU6InZpZGVvL3F1aWNrdGltZSIsY29udHJvbGxlcjoidHJ1ZSIsYXV0b3BsYXk6ImZhbHNlIixsb29wOiJmYWxzZSIsZW5hYmxlamF2YXNjcmlwdDoidHJ1ZSIsc3R5bGU6ImRpc3BsYXk6YmxvY2s7IGhlaWdodDogMjBweDsifSk7dC5pbnNlcnRCZWZvcmUoaSx0LmZpcnN0Q2hpbGQpfX0sbj1mdW5jdGlvbigpe3JldHVybiBuZXcgdH19KCksZS5leHBvcnRzPW59LDEwMjg6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGE9cig1MDA4KTshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9MSx0PTEyODtmdW5jdGlvbiByKGUsdCxyKXtmb3IodmFyIG49MCxhPXQrMTthPGUubGVuZ3RoO2ErKylpZigibm90ZSI9PT1lW2FdLmVsX3R5cGUmJm4rKyxlW2FdLmRlY29yYXRpb24mJmVbYV0uZGVjb3JhdGlvbi5pbmRleE9mKHIpPj0wKXJldHVybiBuO3JldHVybiBufWZ1bmN0aW9uIGkoZSx0LHIpe2Zvcih2YXIgbj1NYXRoLm1pbihlLmxlbmd0aCx0KzMpLGE9dDthPG47YSsrKWlmKCJub3RlIj09PWVbYV0uZWxfdHlwZSYmZVthXS5kZWNvcmF0aW9uKWZvcih2YXIgaT0wO2k8ZVthXS5kZWNvcmF0aW9uLmxlbmd0aDtpKyspaWYoci5pbmRleE9mKGVbYV0uZGVjb3JhdGlvbltpXSk+PTApcmV0dXJuIGVbYV0uZGVjb3JhdGlvbltpXTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWZvcih2YXIgcj1lW3RdLG49ci5sZW5ndGgtMTtuPj0wJiYiYmFyIiE9PXJbbl0uZWxfdHlwZTspcltuXS5ub0Nob3JkVm9pY2U9ITAsbi0tfWZ1bmN0aW9uIG8oZSx0KXtpZihlJiYhKGUubGVuZ3RoPD10KSYmZVt0XS50aXRsZSlyZXR1cm4gZVt0XS50aXRsZS5qb2luKCIgIil9ZnVuY3Rpb24gYyhlLHQpe3ZhciByPTEvNDtlLmR1cmF0aW9uJiYocj1lLmR1cmF0aW9uWzBdKTt2YXIgbj02MDtyZXR1cm4gZS5icG0mJihuPWUuYnBtKSxyKm4vdH1mdW5jdGlvbiBsKHQpe3ZhciByO3N3aXRjaCh0LnR5cGUpe2Nhc2UiY29tbW9uX3RpbWUiOnI9e2VsX3R5cGU6Im1ldGVyIixudW06NCxkZW46NH07YnJlYWs7Y2FzZSJjdXRfdGltZSI6cj17ZWxfdHlwZToibWV0ZXIiLG51bToyLGRlbjoyfTticmVhaztjYXNlInNwZWNpZmllZCI6cj17ZWxfdHlwZToibWV0ZXIiLG51bTp0LnZhbHVlWzBdLm51bSxkZW46dC52YWx1ZVswXS5kZW59O2JyZWFrO2RlZmF1bHQ6cj17ZWxfdHlwZToibWV0ZXIifX1yZXR1cm4gZT1yLm51bS9yLmRlbixyfWZ1bmN0aW9uIGgoZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoO3IrKykibmF0dXJhbCIhPT1lW3JdLmFjYyYmdC5wdXNoKGVbcl0pO3JldHVybiB0fWZ1bmN0aW9uIHUoZSx0KXtmKGUsIkhQIj09PXQucm9vdD97ZWxfdHlwZToia2V5IixhY2NpZGVudGFsczpbe2FjYzoibmF0dXJhbCIsbm90ZToiZyJ9LHthY2M6InNoYXJwIixub3RlOiJmIn0se2FjYzoic2hhcnAiLG5vdGU6ImMifV19OntlbF90eXBlOiJrZXkiLGFjY2lkZW50YWxzOmgodC5hY2NpZGVudGFscyl9KX1mdW5jdGlvbiBkKGUsdCl7ZihlLGwodCkpfWZ1bmN0aW9uIGYoZSx0KXtmb3IodmFyIHI9ZS5sZW5ndGgtMTtyPj0wO3ItLSlpZihlW3JdLmVsX3R5cGU9PT10LmVsX3R5cGUpcmV0dXJuIHZvaWQoSlNPTi5zdHJpbmdpZnkoZVtyXSkhPT1KU09OLnN0cmluZ2lmeSh0KSYmZS5wdXNoKHQpKTtlLnB1c2godCl9bj1mdW5jdGlvbihuLGgpe3ZhciBwLG09KGg9aHx8e30pLnByb2dyYW18fDAsZz1oLm1pZGlUcmFuc3Bvc2V8fDA7bi52aXN1YWxUcmFuc3Bvc2UmJihnLT1uLnZpc3VhbFRyYW5zcG9zZSk7dmFyIHY9aC5jaGFubmVsfHwwLGI9ITEseT1oLmRydW18fCIiLHg9aC5kcnVtQmFyc3x8MSxrPWguZHJ1bUludHJvfHwwLHc9IiIhPT15LEM9ISFoLmRydW1PZmYsVD1bXTttPXBhcnNlSW50KG0sMTApLGc9cGFyc2VJbnQoZywxMCksMTA9PT0odj1wYXJzZUludCh2LDEwKSkmJihtPXQpLHk9eS5zcGxpdCgiICIpLHg9cGFyc2VJbnQoeCwxMCksaz1wYXJzZUludChrLDEwKTt2YXIgUz1uLmZvcm1hdHRpbmcuYmFncGlwZXM7UyYmKG09NzEpO3ZhciBfPVtdO2lmKG4uZm9ybWF0dGluZy5taWRpKXt2YXIgRT1uLmZvcm1hdHRpbmcubWlkaTtFLnByb2dyYW0mJkUucHJvZ3JhbS5sZW5ndGg+MCYmKG09RS5wcm9ncmFtWzBdLEUucHJvZ3JhbS5sZW5ndGg+MSYmKG09RS5wcm9ncmFtWzFdLHY9RS5wcm9ncmFtWzBdKSxiPSEwKSxFLnRyYW5zcG9zZSYmKGc9RS50cmFuc3Bvc2VbMF0pLEUuY2hhbm5lbCYmKHY9RS5jaGFubmVsWzBdLGI9ITApLEUuZHJ1bSYmKHk9RS5kcnVtKSxFLmRydW1iYXJzJiYoeD1FLmRydW1iYXJzWzBdKSxFLmRydW1vbiYmKHc9ITApLDEwPT09diYmKG09dCksRS5iZWF0JiZfLnB1c2goe2VsX3R5cGU6ImJlYXQiLGJlYXRzOkUuYmVhdH0pLEUubm9iZWF0YWNjZW50cyYmXy5wdXNoKHtlbF90eXBlOiJiZWF0YWNjZW50cyIsdmFsdWU6ITF9KX1wPWgucXBtP3BhcnNlSW50KGgucXBtLDEwKTpuLm1ldGFUZXh0LnRlbXBvP2Mobi5tZXRhVGV4dC50ZW1wbyxuLmdldEJlYXRMZW5ndGgoKSk6aC5kZWZhdWx0UXBtP2guZGVmYXVsdFFwbToxODA7dmFyIE09W107UyYmTS5wdXNoKHtlbF90eXBlOiJiYWdwaXBlcyJ9KSxNLnB1c2goe2VsX3R5cGU6Imluc3RydW1lbnQiLHByb2dyYW06bX0pLHYmJk0ucHVzaCh7ZWxfdHlwZToiY2hhbm5lbCIsY2hhbm5lbDp2fSksZyYmTS5wdXNoKHtlbF90eXBlOiJ0cmFuc3Bvc2UiLHRyYW5zcG9zZTpnfSksTS5wdXNoKHtlbF90eXBlOiJ0ZW1wbyIscXBtOnB9KTtmb3IodmFyIEE9MDtBPF8ubGVuZ3RoO0ErKylNLnB1c2goX1tBXSk7dmFyIE4sQj1bXSxQPVtdLEw9W10sTz1bXSxIPVswXSx6PXt9O3pbMF09e2VsX3R5cGU6InRlbXBvIixxcG06cCx0aW1pbmc6MH07Zm9yKHZhciBEPVtdLEY9W10saj0hMSxJPW4ubGluZXMsVj0wO1Y8SS5sZW5ndGg7VisrKXt2YXIgWT1JW1ZdO2lmKFkuc3RhZmYpZm9yKHZhciBHPWZ1bmN0aW9uKGUpe3ZhciB0LG49e3BwcHA6WzE1LDEwLDUsMV0scHBwOlszMCwyMCwxMCwxXSxwcDpbNDUsMzUsMjAsMV0scDpbNjAsNTAsMzUsMV0sbXA6Wzc1LDY1LDUwLDFdLG1mOls5MCw4MCw2NSwxXSxmOlsxMDUsOTUsODAsMV0sZmY6WzEyMCwxMTAsOTUsMV0sZmZmOlsxMjcsMTI1LDExMCwxXSxmZmZmOlsxMjcsMTI1LDExMCwxXX07aWYoZS5kZWNvcmF0aW9uKXtpZihlLmRlY29yYXRpb24uaW5kZXhPZigicHBwcCIpPj0wP3Q9InBwcHAiOmUuZGVjb3JhdGlvbi5pbmRleE9mKCJwcHAiKT49MD90PSJwcHAiOmUuZGVjb3JhdGlvbi5pbmRleE9mKCJwcCIpPj0wP3Q9InBwIjplLmRlY29yYXRpb24uaW5kZXhPZigicCIpPj0wP3Q9InAiOmUuZGVjb3JhdGlvbi5pbmRleE9mKCJtcCIpPj0wP3Q9Im1wIjplLmRlY29yYXRpb24uaW5kZXhPZigibWYiKT49MD90PSJtZiI6ZS5kZWNvcmF0aW9uLmluZGV4T2YoImYiKT49MD90PSJmIjplLmRlY29yYXRpb24uaW5kZXhPZigiZmYiKT49MD90PSJmZiI6ZS5kZWNvcmF0aW9uLmluZGV4T2YoImZmZiIpPj0wP3Q9ImZmZiI6ZS5kZWNvcmF0aW9uLmluZGV4T2YoImZmZmYiKT49MCYmKHQ9ImZmZmYiKSx0KXt2YXIgYT1bTj1uW3RdLnNsaWNlKDApXTtBcnJheS5pc0FycmF5KGUuZGVjb3JhdGlvbikmJihhPVtdLGUuZGVjb3JhdGlvbi5mb3JFYWNoKChmdW5jdGlvbihlKXtlIGluIG4mJmEucHVzaChuW2VdLnNsaWNlKDApKX0pKSksQltXXS5wdXNoKHtlbF90eXBlOiJiZWF0IixiZWF0czpOLnNsaWNlKDApLHZvbHVtZXNQZXJOb3RlUGl0Y2g6YX0pLExbVV09ITEsT1tVXT0hMX1pZihlLmRlY29yYXRpb24uaW5kZXhPZigiY3Jlc2NlbmRvKCIpPj0wKXt2YXIgcz1yKEsscmUsImNyZXNjZW5kbykiKSxvPU1hdGgubWluKDEyNyxOWzBdKzUwKSxjPWkoSyxyZStzKzEsT2JqZWN0LmtleXMobikpO2MmJihvPW5bY11bMF0pLExbVV09cz4wJiZNYXRoLmZsb29yKChvLU5bMF0pL3MpLE9bVV09ITF9ZWxzZSBpZihlLmRlY29yYXRpb24uaW5kZXhPZigiY3Jlc2NlbmRvKSIpPj0wKUxbVV09ITE7ZWxzZSBpZihlLmRlY29yYXRpb24uaW5kZXhPZigiZGltaW51ZW5kbygiKT49MCl7dmFyIGw9cihLLHJlLCJkaW1pbnVlbmRvKSIpLGg9TWF0aC5tYXgoMTUsTlswXS01MCksdT1pKEsscmUrbCsxLE9iamVjdC5rZXlzKG4pKTt1JiYoaD1uW3VdWzBdKSxMW1VdPSExLE9bVV09bD4wJiZNYXRoLmZsb29yKChoLU5bMF0pL2wpfWVsc2UgZS5kZWNvcmF0aW9uLmluZGV4T2YoImRpbWludWVuZG8pIik+PTAmJihPW1VdPSExKX19LHE9WS5zdGFmZixXPTAsUj0wO1I8cS5sZW5ndGg7UisrKXt2YXIgWD1xW1JdO2lmKCFYLmNsZWZ8fCJUQUIiIT09WC5jbGVmLnR5cGUpZm9yKHZhciBVPTA7VTxYLnZvaWNlcy5sZW5ndGg7VSsrKXt2YXIgSz1YLnZvaWNlc1tVXTtpZighQltXXSl7QltXXT1bXS5jb25jYXQoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShNKSkpO3ZhciAkPW8oWS5zdGFmZixXKTskJiZCW1ddLnVuc2hpZnQoe2VsX3R5cGU6Im5hbWUiLHRyYWNrTmFtZTokfSl9aWYoZyYmInBlcmMiPT09WC5jbGVmLnR5cGUmJkJbV10ucHVzaCh7ZWxfdHlwZToidHJhbnNwb3NlIix0cmFuc3Bvc2U6MH0pLFguY2xlZiYmInBlcmMiPT09WC5jbGVmLnR5cGUmJiFiKWZvcih2YXIgUT0wO1E8QltXXS5sZW5ndGg7USsrKSJpbnN0cnVtZW50Ij09PUJbV11bUV0uZWxfdHlwZSYmKEJbV11bUV0ucHJvZ3JhbT10KTtlbHNlIFgua2V5JiZ1KEJbV10sWC5rZXkpO1gubWV0ZXImJmQoQltXXSxYLm1ldGVyKSwhaiYmdyYmKEJbV10ucHVzaCh7ZWxfdHlwZToiZHJ1bSIscGFyYW1zOntwYXR0ZXJuOnksYmFyczp4LG9uOncsaW50cm86a319KSxqPSEwKSxYLmNsZWYmJiJwZXJjIiE9PVguY2xlZi50eXBlJiZYLmNsZWYudHJhbnNwb3NlJiYoWC5jbGVmLmVsX3R5cGU9ImNsZWYiLEJbV10ucHVzaCh7ZWxfdHlwZToidHJhbnNwb3NlIix0cmFuc3Bvc2U6WC5jbGVmLnRyYW5zcG9zZX0pLFBbV109ITEpLFguY2xlZiYmWC5jbGVmLnR5cGUmJihYLmNsZWYudHlwZS5pbmRleE9mKCItOCIpPj0wPyhCW1ddLnB1c2goe2VsX3R5cGU6InRyYW5zcG9zZSIsdHJhbnNwb3NlOi0xMn0pLFBbV109ITApOlguY2xlZi50eXBlLmluZGV4T2YoIis4Iik+PTA/KEJbV10ucHVzaCh7ZWxfdHlwZToidHJhbnNwb3NlIix0cmFuc3Bvc2U6MTJ9KSxQW1ddPSEwKTpQW1ddJiYoQltXXS5wdXNoKHtlbF90eXBlOiJ0cmFuc3Bvc2UiLHRyYW5zcG9zZTowfSksUFtXXT0hMSkpLG4uZm9ybWF0dGluZy5taWRpJiZuLmZvcm1hdHRpbmcubWlkaS5kcnVtb2ZmJiYoQltXXS5wdXNoKHtlbF90eXBlOiJiYXIifSksQltXXS5wdXNoKHtlbF90eXBlOiJkcnVtIixwYXJhbXM6e3BhdHRlcm46IiIsb246ITF9fSkpO3ZhciBKPTAsWj0wLGVlPTAsdGU9MDtOPVsxMDUsOTUsODUsMV07Zm9yKHZhciByZT0wO3JlPEsubGVuZ3RoO3JlKyspe3ZhciBuZT1LW3JlXTtzd2l0Y2gobmUuZWxfdHlwZSl7Y2FzZSJub3RlIjppZihMW1VdJiYoTlswXSs9TFtVXSxOWzFdKz1MW1VdLE5bMl0rPUxbVV0sQltXXS5wdXNoKHtlbF90eXBlOiJiZWF0IixiZWF0czpOLnNsaWNlKDApfSkpLE9bVV0mJihOWzBdKz1PW1VdLE5bMV0rPU9bVV0sTlsyXSs9T1tVXSxCW1ddLnB1c2goe2VsX3R5cGU6ImJlYXQiLGJlYXRzOk4uc2xpY2UoMCl9KSksRyhuZSksIW5lLnJlc3R8fCJzcGFjZXIiIT09bmUucmVzdC50eXBlKXt2YXIgYWU9e2VsZW06bmUsZWxfdHlwZToibm90ZSIsdGltaW5nOkhbV119O2lmKG5lLnN0eWxlP2FlLnN0eWxlPW5lLnN0eWxlOlRbV10mJihhZS5zdHlsZT1UW1ddKSxhZS5kdXJhdGlvbj0wPT09bmUuZHVyYXRpb24/LjI1Om5lLmR1cmF0aW9uLG5lLnN0YXJ0VHJpcGxldCl7aWYoWj1uZS50cmlwbGV0TXVsdGlwbGllcixlZT1uZS5zdGFydFRyaXBsZXQqWipuZS5kdXJhdGlvbixuZS5zdGFydFRyaXBsZXQhPT1uZS50cmlwbGV0UiYmcmUrbmUudHJpcGxldFI8PUsubGVuZ3RoKXtmb3IodmFyIGllPTAsc2U9cmU7c2U8cmUrbmUudHJpcGxldFI7c2UrKylpZSs9S1tzZV0uZHVyYXRpb247ZWU9WippZX1hZS5kdXJhdGlvbj1hZS5kdXJhdGlvbipaLGFlLmR1cmF0aW9uPU1hdGgucm91bmQoMWU2KmFlLmR1cmF0aW9uKS8xZTYsdGU9YWUuZHVyYXRpb259ZWxzZSBaJiYobmUuZW5kVHJpcGxldD8oWj0wLGFlLmR1cmF0aW9uPU1hdGgucm91bmQoMWU2KihlZS10ZSkpLzFlNik6KGFlLmR1cmF0aW9uPWFlLmR1cmF0aW9uKlosYWUuZHVyYXRpb249TWF0aC5yb3VuZCgxZTYqYWUuZHVyYXRpb24pLzFlNix0ZSs9YWUuZHVyYXRpb24pKTtuZS5yZXN0JiYoYWUucmVzdD1uZS5yZXN0KSxuZS5kZWNvcmF0aW9uJiYoYWUuZGVjb3JhdGlvbj1uZS5kZWNvcmF0aW9uLnNsaWNlKDApKSxuZS5waXRjaGVzJiYoYWUucGl0Y2hlcz1hLmNsb25lQXJyYXkobmUucGl0Y2hlcykpLG5lLmdyYWNlbm90ZXMmJihhZS5ncmFjZW5vdGVzPWEuY2xvbmVBcnJheShuZS5ncmFjZW5vdGVzKSksbmUuY2hvcmQmJihhZS5jaG9yZD1hLmNsb25lQXJyYXkobmUuY2hvcmQpKSxCW1ddLnB1c2goYWUpLCJyaHl0aG0iPT09bmUuc3R5bGUmJnMoQiksSisrLEhbV10rPWFlLmR1cmF0aW9ufWJyZWFrO2Nhc2Uia2V5IjpjYXNlImtleVNpZ25hdHVyZSI6dShCW1ddLG5lKTticmVhaztjYXNlIm1ldGVyIjpkKEJbV10sbmUpO2JyZWFrO2Nhc2UiY2xlZiI6bmUudHJhbnNwb3NlJiZCW1ddLnB1c2goe2VsX3R5cGU6InRyYW5zcG9zZSIsdHJhbnNwb3NlOm5lLnRyYW5zcG9zZX0pLG5lLnR5cGUmJihuZS50eXBlLmluZGV4T2YoIi04Iik+PTA/QltXXS5wdXNoKHtlbF90eXBlOiJ0cmFuc3Bvc2UiLHRyYW5zcG9zZTotMTJ9KTpuZS50eXBlLmluZGV4T2YoIis4Iik+PTAmJkJbV10ucHVzaCh7ZWxfdHlwZToidHJhbnNwb3NlIix0cmFuc3Bvc2U6MTJ9KSk7YnJlYWs7Y2FzZSJ0ZW1wbyI6cD1jKG5lLG4uZ2V0QmVhdExlbmd0aCgpKSxCW1ddLnB1c2goe2VsX3R5cGU6InRlbXBvIixxcG06cCx0aW1pbmc6SFtXXX0pLHpbIiIrSFtXXV09e2VsX3R5cGU6InRlbXBvIixxcG06cCx0aW1pbmc6SFtXXX07YnJlYWs7Y2FzZSJiYXIiOko+MCYmQltXXS5wdXNoKHtlbF90eXBlOiJiYXIifSksRyhuZSksSj0wO3ZhciBvZT0iYmFyX3JpZ2h0X3JlcGVhdCI9PT1uZS50eXBlfHwiYmFyX2RibF9yZXBlYXQiPT09bmUudHlwZSxjZT0iMSI9PT1uZS5zdGFydEVuZGluZyxsZT0iYmFyX2xlZnRfcmVwZWF0Ij09PW5lLnR5cGV8fCJiYXJfZGJsX3JlcGVhdCI9PT1uZS50eXBlfHwiYmFyX3JpZ2h0X3JlcGVhdCI9PT1uZS50eXBlO2lmKG9lKXt2YXIgaGU9RFtXXTtoZXx8KGhlPTApO3ZhciB1ZT1GW1ddO3VlfHwodWU9QltXXS5sZW5ndGgpO2Zvcih2YXIgZGU9aGU7ZGU8dWU7ZGUrKyl7dmFyIGZlPU9iamVjdC5hc3NpZ24oe30sQltXXVtkZV0pO2ZlLnBpdGNoZXMmJihmZS5waXRjaGVzPWEuY2xvbmVBcnJheShmZS5waXRjaGVzKSksQltXXS5wdXNoKGZlKX1GW1ddPXZvaWQgMCxEW1ddPXZvaWQgMH1jZSYmKEZbV109QltXXS5sZW5ndGgpLGxlJiYoRFtXXT1CW1ddLmxlbmd0aCk7YnJlYWs7Y2FzZSJzdHlsZSI6VFtXXT1uZS5oZWFkO2JyZWFrO2Nhc2UidGltZVNpZ25hdHVyZSI6QltXXS5wdXNoKGwobmUpKTticmVhaztjYXNlInBhcnQiOmNhc2Uic3RlbSI6Y2FzZSJzY2FsZSI6Y2FzZSJicmVhayI6Y2FzZSJmb250IjpicmVhaztjYXNlIm1pZGkiOnZhciBwZT0hMTtzd2l0Y2gobmUuY21kKXtjYXNlImRydW1vbiI6dz0hMCxwZT0hMDticmVhaztjYXNlImRydW1vZmYiOnc9ITEscGU9ITA7YnJlYWs7Y2FzZSJkcnVtIjp5PW5lLnBhcmFtcyxwZT0hMDticmVhaztjYXNlImRydW1iYXJzIjp4PW5lLnBhcmFtc1swXSxwZT0hMDticmVhaztjYXNlImRydW1tYXAiOmJyZWFrO2Nhc2UiY2hhbm5lbCI6MTA9PT1uZS5wYXJhbXNbMF0mJkJbV10ucHVzaCh7ZWxfdHlwZToiaW5zdHJ1bWVudCIscHJvZ3JhbTp0fSk7YnJlYWs7Y2FzZSJwcm9ncmFtIjpmKEJbV10se2VsX3R5cGU6Imluc3RydW1lbnQiLHByb2dyYW06bmUucGFyYW1zWzBdfSksYj0hMDticmVhaztjYXNlInRyYW5zcG9zZSI6QltXXS5wdXNoKHtlbF90eXBlOiJ0cmFuc3Bvc2UiLHRyYW5zcG9zZTpuZS5wYXJhbXNbMF19KTticmVhaztjYXNlImdjaG9yZG9mZiI6QltXXS5wdXNoKHtlbF90eXBlOiJnY2hvcmRPbiIsdGFjZXQ6ITB9KTticmVhaztjYXNlImdjaG9yZG9uIjpCW1ddLnB1c2goe2VsX3R5cGU6ImdjaG9yZE9uIix0YWNldDohMX0pO2JyZWFrO2Nhc2UiYmVhdCI6QltXXS5wdXNoKHtlbF90eXBlOiJiZWF0IixiZWF0czpuZS5wYXJhbXN9KTticmVhaztjYXNlIm5vYmVhdGFjY2VudHMiOkJbV10ucHVzaCh7ZWxfdHlwZToiYmVhdGFjY2VudHMiLHZhbHVlOiExfSk7YnJlYWs7Y2FzZSJiZWF0YWNjZW50cyI6QltXXS5wdXNoKHtlbF90eXBlOiJiZWF0YWNjZW50cyIsdmFsdWU6ITB9KTticmVhaztjYXNlInZvbCI6Y2FzZSJ2b2xpbmMiOkJbV10ucHVzaCh7ZWxfdHlwZTpuZS5jbWQsdm9sdW1lOm5lLnBhcmFtc1swXX0pO2JyZWFrO2Nhc2Uic3dpbmciOmNhc2UiZ2Nob3JkIjpjYXNlImJhc3N2b2wiOmNhc2UiY2hvcmR2b2wiOmNhc2UiZ2Nob3JkYmFycyI6QltXXS5wdXNoKHtlbF90eXBlOm5lLmNtZCxwYXJhbTpuZS5wYXJhbXNbMF19KTticmVhaztjYXNlImJhc3Nwcm9nIjpjYXNlImNob3JkcHJvZyI6QltXXS5wdXNoKHtlbF90eXBlOm5lLmNtZCx2YWx1ZTpuZS5wYXJhbXNbMF0sb2N0YXZlU2hpZnQ6bmUucGFyYW1zWzFdfSk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmxvZygiTUlESSBzZXE6IG1pZGkgY21kIG5vdCBoYW5kbGVkOiAiLG5lLmNtZCxuZSl9cGUmJihCWzBdLnB1c2goe2VsX3R5cGU6ImRydW0iLHBhcmFtczp7cGF0dGVybjp5LGJhcnM6eCxpbnRybzprLG9uOnd9fSksaj0hMCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmxvZygiTUlESTogZWxlbWVudCB0eXBlICIrbmUuZWxfdHlwZSsiIG5vdCBoYW5kbGVkLiIpfX1IWysrV118fChIW1ddPTApfX19aWYoZnVuY3Rpb24oZSx0KXtpZih0JiYwIT09dC5sZW5ndGgpZm9yKHZhciByPU9iamVjdC5rZXlzKHQpLG49MDtuPGUubGVuZ3RoO24rKylmb3IodmFyIGE9ZVtuXSxpPXRbMF0/dFswXS5xcG06MCxzPTA7czxhLmxlbmd0aDtzKyspe3ZhciBvPWFbc107InRlbXBvIj09PW8uZWxfdHlwZSYmKGk9by5xcG0pLHIuaW5kZXhPZigiIitvLnRpbWluZyk+PTAmJmkhPT10WyIiK28udGltaW5nXS5xcG0mJihpPXRbIiIrby50aW1pbmddLnFwbSwidGVtcG8iPT09by5lbF90eXBlPyhvLnFwbT10WyIiK28udGltaW5nXS5xcG0scysrKTooZVtuXS5zcGxpY2UocywwLHtlbF90eXBlOiJ0ZW1wbyIscXBtOnRbIiIrby50aW1pbmddLnFwbSx0aW1pbmc6by50aW1pbmd9KSxzKz0yKSl9fShCLHopLGspZm9yKHZhciBtZT1uLmdldFBpY2t1cExlbmd0aCgpLGdlPTA7Z2U8Qi5sZW5ndGg7Z2UrKyl7Zm9yKHZhciB2ZT0wOyJub3RlIiE9PUJbZ2VdW3ZlXS5lbF90eXBlJiZCW2dlXS5sZW5ndGg+dmU7KXZlKys7aWYoQltnZV0ubGVuZ3RoPnZlKXtmb3Ioc2U9MDtzZTxrO3NlKyspMD09PW1lfHxzZTxrLTE/KEJbZ2VdLnNwbGljZSh2ZSwwLHtlbF90eXBlOiJub3RlIixyZXN0Ont0eXBlOiJyZXN0In0sZHVyYXRpb246ZX0se2VsX3R5cGU6ImJhciJ9KSx2ZSs9Mik6QltnZV0uc3BsaWNlKHZlKyssMCx7ZWxfdHlwZToibm90ZSIscmVzdDp7dHlwZToicmVzdCJ9LGR1cmF0aW9uOmUtbWV9KTtDJiYodz0hMSxCW2dlXS5zcGxpY2UodmUrKywwLHtlbF90eXBlOiJkcnVtIixwYXJhbXM6e3BhdHRlcm46eSxiYXJzOngsaW50cm86ayxvbjp3fX0pLEM9ITEpfX1yZXR1cm4gQi5sZW5ndGg+MCYmQlswXS5sZW5ndGg+MCYmKEJbMF1bMF0ucGlja3VwTGVuZ3RoPW4uZ2V0UGlja3VwTGVuZ3RoKCkpLEJ9fSgpLGUuZXhwb3J0cz1ufSw4NzAyOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDUyODEpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cuYWJjanNBdWRpb0NvbnRleHR8fG4oKSx3aW5kb3cuYWJjanNBdWRpb0NvbnRleHR9fSwyNzEwOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3coMixlLzEyMDApfX0sNzIwNzpmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQscixuKXt0aGlzLmNob3JkVHJhY2s9W10sdGhpcy5jaG9yZFRyYWNrRmluaXNoZWQ9ITEsdGhpcy5jaG9yZENoYW5uZWw9ZSx0aGlzLmN1cnJlbnRDaG9yZHM9W10sdGhpcy5sYXN0Q2hvcmQsdGhpcy5jaG9yZExhc3RCYXIsdGhpcy5jaG9yZHNPZmY9ISF0LHRoaXMuZ0Nob3JkVGFjZXQ9dGhpcy5jaG9yZHNPZmYsdGhpcy5oYXNSaHl0aG1IZWFkPSExLHRoaXMudHJhbnNwb3NlPTAsdGhpcy5sYXN0QmFyVGltZT0wLHRoaXMubWV0ZXI9bix0aGlzLnRlbXBvQ2hhbmdlRmFjdG9yPTEsdGhpcy5iYXNzSW5zdHJ1bWVudD1yLmJhc3Nwcm9nJiZyLmJhc3Nwcm9nLmxlbmd0aD49MT9yLmJhc3Nwcm9nWzBdOjAsdGhpcy5jaG9yZEluc3RydW1lbnQ9ci5jaG9yZHByb2cmJnIuY2hvcmRwcm9nLmxlbmd0aD49MT9yLmNob3JkcHJvZ1swXTowLHRoaXMuYmFzc09jdGF2ZVNoaWZ0PXIuYmFzc3Byb2cmJjI9PT1yLmJhc3Nwcm9nLmxlbmd0aD9yLmJhc3Nwcm9nWzFdOjAsdGhpcy5jaG9yZE9jdGF2ZVNoaWZ0PXIuY2hvcmRwcm9nJiYyPT09ci5jaG9yZHByb2cubGVuZ3RoP3IuY2hvcmRwcm9nWzFdOjAsdGhpcy5ib29tVm9sdW1lPXIuYmFzc3ZvbCYmMT09PXIuYmFzc3ZvbC5sZW5ndGg/ci5iYXNzdm9sWzBdOjY0LHRoaXMuY2hpY2tWb2x1bWU9ci5jaG9yZHZvbCYmMT09PXIuY2hvcmR2b2wubGVuZ3RoP3IuY2hvcmR2b2xbMF06NDgsci5nY2hvcmQmJnIuZ2Nob3JkLmxlbmd0aD4wP3RoaXMub3ZlcnJpZGVQYXR0ZXJuPWEoci5nY2hvcmRbMF0pOnRoaXMub3ZlcnJpZGVQYXR0ZXJuPXZvaWQgMH07ZnVuY3Rpb24gcihlLHQscixhKXt2YXIgaT1bXTtpZighZSlyZXR1cm4gaTt0LmluZGV4T2YoImJvb20iKT49MD9pLnB1c2gocj9lLmJvb206ZS5ib29tMik6YSYmaS5wdXNoKGUuYm9vbSk7dmFyIHM9ZS5jaGljay5sZW5ndGg7aWYodC5pbmRleE9mKCJjaGljayIpPj0wKWZvcih2YXIgbz0wO288cztvKyspaS5wdXNoKGUuY2hpY2tbb10pO3N3aXRjaCh0KXtjYXNlIkRPIjppLnB1c2goZS5jaGlja1swXSk7YnJlYWs7Y2FzZSJNSSI6aS5wdXNoKGUuY2hpY2tbMV0pO2JyZWFrO2Nhc2UiU09MIjppLnB1c2gobihlLDIpKTticmVhaztjYXNlIlRJIjppLnB1c2gobihlLDMpKTticmVhaztjYXNlIlRPUCI6aS5wdXNoKG4oZSw0KSk7YnJlYWs7Y2FzZSJkbyI6aS5wdXNoKGUuY2hpY2tbMF0rMTIpO2JyZWFrO2Nhc2UibWkiOmkucHVzaChlLmNoaWNrWzFdKzEyKTticmVhaztjYXNlInNvbCI6aS5wdXNoKG4oZSwyKSsxMik7YnJlYWs7Y2FzZSJ0aSI6aS5wdXNoKG4oZSwzKSsxMik7YnJlYWs7Y2FzZSJ0b3AiOmkucHVzaChuKGUsNCkrMTIpfXJldHVybiBpfWZ1bmN0aW9uIG4oZSx0KXt2YXIgcj1NYXRoLmZsb29yKHQvZS5jaGljay5sZW5ndGgpO3JldHVybiBlLmNoaWNrW3QlZS5jaGljay5sZW5ndGhdKzEyKnJ9ZnVuY3Rpb24gYShlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7cisrKXN3aXRjaChlW3JdKXtjYXNlInoiOmNhc2UiMiI6dC5wdXNoKCIiKTticmVhaztjYXNlImMiOnQucHVzaCgiY2hpY2siKTticmVhaztjYXNlImIiOnQucHVzaCgiYm9vbSZjaGljayIpO2JyZWFrO2Nhc2UiZiI6dC5wdXNoKCJib29tIik7YnJlYWs7Y2FzZSJHIjp0LnB1c2goIkRPIik7YnJlYWs7Y2FzZSJIIjp0LnB1c2goIk1JIik7YnJlYWs7Y2FzZSJJIjp0LnB1c2goIlNPTCIpO2JyZWFrO2Nhc2UiSiI6dC5wdXNoKCJUSSIpO2JyZWFrO2Nhc2UiSyI6dC5wdXNoKCJUT1AiKTticmVhaztjYXNlImciOnQucHVzaCgiZG8iKTticmVhaztjYXNlImgiOnQucHVzaCgibWkiKTticmVhaztjYXNlImkiOnQucHVzaCgic29sIik7YnJlYWs7Y2FzZSJqIjp0LnB1c2goInRpIik7YnJlYWs7Y2FzZSJrIjp0LnB1c2goInRvcCIpfXJldHVybiB0fWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUvMWU2fWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gTWF0aC5yb3VuZChlKnQqMWU2KS8xZTZ9dC5wcm90b3R5cGUuc2V0TWV0ZXI9ZnVuY3Rpb24oZSl7dGhpcy5tZXRlcj1lfSx0LnByb3RvdHlwZS5zZXRUZW1wb0NoYW5nZUZhY3Rvcj1mdW5jdGlvbihlKXt0aGlzLnRlbXBvQ2hhbmdlRmFjdG9yPWV9LHQucHJvdG90eXBlLnNldExhc3RCYXJUaW1lPWZ1bmN0aW9uKGUpe3RoaXMubGFzdEJhclRpbWU9ZX0sdC5wcm90b3R5cGUuc2V0VHJhbnNwb3NlPWZ1bmN0aW9uKGUpe3RoaXMudHJhbnNwb3NlPWV9LHQucHJvdG90eXBlLnNldFJoeXRobUhlYWQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmhhc1JoeXRobUhlYWQ9ZTt2YXIgcj1bXTtpZihlJiZ0aGlzLmxhc3RDaG9yZCYmdGhpcy5sYXN0Q2hvcmQuY2hpY2spZm9yKHZhciBuPTA7bjx0aGlzLmxhc3RDaG9yZC5jaGljay5sZW5ndGg7bisrKXt2YXIgYT1PYmplY3QuYXNzaWduKHt9LHQucGl0Y2hlc1swXSk7YS5hY3R1YWxQaXRjaD10aGlzLmxhc3RDaG9yZC5jaGlja1tuXSxyLnB1c2goYSl9cmV0dXJuIHJ9LHQucHJvdG90eXBlLmJhckVuZD1mdW5jdGlvbihlKXt0aGlzLmNob3JkVHJhY2subGVuZ3RoPjAmJiF0aGlzLmNob3JkVHJhY2tGaW5pc2hlZCYmKHRoaXMucmVzb2x2ZUNob3Jkcyh0aGlzLmxhc3RCYXJUaW1lLGkoZS50aW1lKSksdGhpcy5jdXJyZW50Q2hvcmRzPVtdKSx0aGlzLmNob3JkTGFzdEJhcj10aGlzLmxhc3RDaG9yZH0sdC5wcm90b3R5cGUuZ0Nob3JkT249ZnVuY3Rpb24oZSl7dGhpcy5jaG9yZHNPZmZ8fCh0aGlzLmdDaG9yZFRhY2V0PWUudGFjZXQpfSx0LnByb3RvdHlwZS5wYXJhbUNoYW5nZT1mdW5jdGlvbihlKXtzd2l0Y2goZS5lbF90eXBlKXtjYXNlImdjaG9yZCI6ZS5wYXJhbSYmZS5wYXJhbS5sZW5ndGg+MD90aGlzLm92ZXJyaWRlUGF0dGVybj1hKGUucGFyYW0pOnRoaXMub3ZlcnJpZGVQYXR0ZXJuPXZvaWQgMDticmVhaztjYXNlImJhc3Nwcm9nIjp0aGlzLmJhc3NJbnN0cnVtZW50PWUudmFsdWUsbnVsbCE9ZS5vY3RhdmVTaGlmdCYmbnVsbCE9ZS5vY3RhdmVTaGlmdD90aGlzLmJhc3NPY3RhdmVTaGlmdD1lLm9jdGF2ZVNoaWZ0OnRoaXMuYmFzc09jdGF2ZVNoaWZ0PTA7YnJlYWs7Y2FzZSJjaG9yZHByb2ciOnRoaXMuY2hvcmRJbnN0cnVtZW50PWUudmFsdWUsbnVsbCE9ZS5vY3RhdmVTaGlmdCYmbnVsbCE9ZS5vY3RhdmVTaGlmdD90aGlzLmNob3JkT2N0YXZlU2hpZnQ9ZS5vY3RhdmVTaGlmdDp0aGlzLmNob3JkT2N0YXZlU2hpZnQ9MDticmVhaztjYXNlImJhc3N2b2wiOnRoaXMuYm9vbVZvbHVtZT1lLnBhcmFtO2JyZWFrO2Nhc2UiY2hvcmR2b2wiOnRoaXMuY2hpY2tWb2x1bWU9ZS5wYXJhbTticmVhaztkZWZhdWx0OmNvbnNvbGUubG9nKCJ1bmhhbmRsZWQgbWlkaSBwYXJhbSIsZSl9fSx0LnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLmNob3JkVHJhY2tFbXB0eSgpfHwodGhpcy5jaG9yZFRyYWNrRmluaXNoZWQ9ITApfSx0LnByb3RvdHlwZS5hZGRUcmFjaz1mdW5jdGlvbihlKXt0aGlzLmNob3JkVHJhY2tFbXB0eSgpfHxlLnB1c2godGhpcy5jaG9yZFRyYWNrKX0sdC5wcm90b3R5cGUuZmluZENob3JkPWZ1bmN0aW9uKGUpe2lmKHRoaXMuZ0Nob3JkVGFjZXQpcmV0dXJuImJyZWFrIjtpZih0aGlzLmNob3JkVHJhY2tGaW5pc2hlZHx8IWUuY2hvcmR8fDA9PT1lLmNob3JkLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IodmFyIHQ9MDt0PGUuY2hvcmQubGVuZ3RoO3QrKyl7dmFyIHI9ZS5jaG9yZFt0XTtpZigiZGVmYXVsdCI9PT1yLnBvc2l0aW9uKXJldHVybiByLm5hbWU7aWYodGhpcy5icmVha1N5bm9ueW1zLmluZGV4T2Yoci5uYW1lLnRvTG93ZXJDYXNlKCkpPj0wKXJldHVybiJicmVhayJ9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLmludGVycHJldENob3JkPWZ1bmN0aW9uKGUpe2lmKDAhPT1lLmxlbmd0aCl7aWYoImJyZWFrIj09PWUpcmV0dXJue2NoaWNrOltdfTt2YXIgdD1lLnN1YnN0cmluZygwLDEpO2lmKCIoIj09PXQpe2lmKDA9PT0oZT1lLnN1YnN0cmluZygxLGUubGVuZ3RoLTEpKS5sZW5ndGgpcmV0dXJuO3Q9ZS5zdWJzdHJpbmcoMCwxKX12YXIgcj10aGlzLmJhc3Nlc1t0XTtpZihyKXtmb3IodmFyIG49dGhpcy50cmFuc3Bvc2U7bjwtODspbis9MTI7Zm9yKDtuPjg7KW4tPTEyOyhyKz1uKTwzMz9yKz0xMjpyPjQ0JiYoci09MTIpO3ZhciBhLGk9cixzPShyKz0xMip0aGlzLmJhc3NPY3RhdmVTaGlmdCktNTsxPT09ZS5sZW5ndGgmJihhPXRoaXMuY2hvcmROb3RlcyhyLCIiKSk7dmFyIG89ZS5zdWJzdHJpbmcoMSksYz1vLnN1YnN0cmluZygwLDEpOyJiIj09PWN8fCLima0iPT09Yz8oaS0tLHItLSxzLS0sbz1vLnN1YnN0cmluZygxKSk6IiMiIT09YyYmIuKZryIhPT1jfHwoaSsrLHIrKyxzKyssbz1vLnN1YnN0cmluZygxKSk7dmFyIGw9by5zcGxpdCgiLyIpO2lmKChhPXRoaXMuY2hvcmROb3RlcyhpLGxbMF0pKS5sZW5ndGg+PTMmJihzPXMrKGFbMl0tYVswXSktNyksMj09PWwubGVuZ3RoJiZ0aGlzLmJhc3Nlc1tsWzFdLnN1YnN0cmluZygwLDEpXSl7dmFyIGg9eyIjIjoxLCLima8iOjEsYjotMSwi4pmtIjotMX1bbFsxXS5zdWJzdHJpbmcoMSldfHwwO3I9dGhpcy5iYXNzZXNbbFsxXS5zdWJzdHJpbmcoMCwxKV0raCtuLHM9cis9MTIqdGhpcy5iYXNzT2N0YXZlU2hpZnR9cmV0dXJue2Jvb206cixib29tMjpzLGNoaWNrOmF9fX19LHQucHJvdG90eXBlLmNob3JkTm90ZXM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmNob3JkSW50ZXJ2YWxzW3RdO3J8fChyPSJtYSI9PT10LnNsaWNlKDAsMikudG9Mb3dlckNhc2UoKXx8Ik0iPT09dFswXT90aGlzLmNob3JkSW50ZXJ2YWxzLk06Im0iPT09dFswXXx8Ii0iPT09dFswXT90aGlzLmNob3JkSW50ZXJ2YWxzLm06dGhpcy5jaG9yZEludGVydmFscy5NKSxlKz0xMixlKz0xMip0aGlzLmNob3JkT2N0YXZlU2hpZnQ7Zm9yKHZhciBuPVtdLGE9MDthPHIubGVuZ3RoO2ErKyluLnB1c2goZStyW2FdKTtyZXR1cm4gbn0sdC5wcm90b3R5cGUud3JpdGVOb3RlPWZ1bmN0aW9uKGUsdCxyLG4sYSxpKXt2b2lkIDAhPT1lJiZ0aGlzLmNob3JkVHJhY2sucHVzaCh7Y21kOiJub3RlIixwaXRjaDplLHZvbHVtZTpyLHN0YXJ0OnRoaXMubGFzdEJhclRpbWUrbipzKHQsdGhpcy50ZW1wb0NoYW5nZUZhY3RvciksZHVyYXRpb246cyhhLHRoaXMudGVtcG9DaGFuZ2VGYWN0b3IpLGdhcDowLGluc3RydW1lbnQ6aX0pfSx0LnByb3RvdHlwZS5jaG9yZFRyYWNrRW1wdHk9ZnVuY3Rpb24oKXtmb3IodmFyIGU9ITAsdD0wO3Q8dGhpcy5jaG9yZFRyYWNrLmxlbmd0aCYmZTt0KyspIm5vdGUiPT09dGhpcy5jaG9yZFRyYWNrW3RdLmNtZCYmKGU9ITEpO3JldHVybiBlfSx0LnByb3RvdHlwZS5yZXNvbHZlQ2hvcmRzPWZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuaGFzUmh5dGhtSGVhZCl7dmFyIG49dGhpcy5tZXRlci5udW0sYT10aGlzLm1ldGVyLmRlbixpPTEvYSxzPWkvMixvPXBhcnNlSW50KG4sMTApL3BhcnNlSW50KGEsMTApLSh0LWUpL3RoaXMudGVtcG9DaGFuZ2VGYWN0b3I7TWF0aC5hYnMobyk8MWUtNSYmKG89MCksMCE9PXRoaXMuY3VycmVudENob3Jkcy5sZW5ndGgmJjA9PT10aGlzLmN1cnJlbnRDaG9yZHNbMF0uYmVhdHx8dGhpcy5jdXJyZW50Q2hvcmRzLnVuc2hpZnQoe2JlYXQ6MCxjaG9yZDp0aGlzLmNob3JkTGFzdEJhcn0pO3ZhciBjPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1bXTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG47Zm9yKHZhciBhPWVbMF0uY2hvcmQsaT0xO2k8ZS5sZW5ndGg7aSsrKXtmb3IodmFyIHM9ZVtpXTtuLmxlbmd0aDxzLmJlYXQ7KW4ucHVzaChhKTthPXMuY2hvcmR9Zm9yKDtuLmxlbmd0aDx0OyluLnB1c2goYSk7cmV0dXJuIG59KHRoaXMuY3VycmVudENob3Jkcyw4Km4vYSksbD10aGlzLm92ZXJyaWRlUGF0dGVybj90aGlzLm92ZXJyaWRlUGF0dGVybjp0aGlzLnJoeXRobVBhdHRlcm5zW24rIi8iK2FdO2lmKG8pe2w9W107Zm9yKHZhciBoPSh0LWUpL3RoaXMudGVtcG9DaGFuZ2VGYWN0b3IqOCx1PTA7dTxoLzI7dSs9MilsLnB1c2goImNoaWNrIiksbC5wdXNoKCIiKX1pZighbClmb3IobD1bXSx1PTA7dTw4Km4vYS8yO3UrKylsLnB1c2goImNoaWNrIiksbC5wdXNoKCIiKTt2YXIgZD0hMCxmPU1hdGgubWluKGwubGVuZ3RoLGMubGVuZ3RoKTtmb3IodT0wO3U8Zjt1Kyspe3U+MCYmY1t1LTFdJiZjW3VdJiZjW3UtMV0uYm9vbSE9PWNbdV0uYm9vbSYmKGQ9ITApO3ZhciBwPWxbdV0sbT1wLmluZGV4T2YoImJvb20iKT49MCxnPSFtJiYwIT09dSYmbFswXS5pbmRleE9mKCJib29tIik+PTAmJighY1t1LTFdfHxjW3UtMV0uYm9vbSE9PWNbdV0uYm9vbSksdj1yKGNbdV0scCxkLGcpO20mJihkPSExKTtmb3IodmFyIGI9MDtiPHYubGVuZ3RoO2IrKyl0aGlzLndyaXRlTm90ZSh2W2JdLC4xMjUsbXx8Zz90aGlzLmJvb21Wb2x1bWU6dGhpcy5jaGlja1ZvbHVtZSx1LHMsbXx8Zz90aGlzLmJhc3NJbnN0cnVtZW50OnRoaXMuY2hvcmRJbnN0cnVtZW50KSxnP2c9ITE6bT0hMX19fSx0LnByb3RvdHlwZS5wcm9jZXNzQ2hvcmQ9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuY2hvcmRUcmFja0ZpbmlzaGVkKXt2YXIgdCxyPXRoaXMuZmluZENob3JkKGUpO2lmKHIpe3ZhciBuPXRoaXMuaW50ZXJwcmV0Q2hvcmQocik7aWYobil7MD09PXRoaXMuY2hvcmRUcmFjay5sZW5ndGgmJnRoaXMuY2hvcmRUcmFjay5wdXNoKHtjbWQ6InByb2dyYW0iLGNoYW5uZWw6dGhpcy5jaG9yZENoYW5uZWwsaW5zdHJ1bWVudDp0aGlzLmNob3JkSW5zdHJ1bWVudH0pLHRoaXMubGFzdENob3JkPW47dmFyIGE9KHQ9dGhpcy5sYXN0QmFyVGltZSw4KihpKGUudGltZSktdCkpO3RoaXMuY3VycmVudENob3Jkcy5wdXNoKHtjaG9yZDp0aGlzLmxhc3RDaG9yZCxiZWF0OmEsc3RhcnQ6aShlLnRpbWUpfSl9fX19LHQucHJvdG90eXBlLmJyZWFrU3lub255bXM9WyJicmVhayIsIihicmVhaykiLCJubyBjaG9yZCIsIm4uYy4iLCJ0YWNldCJdLHQucHJvdG90eXBlLmJhc3Nlcz17QTozMyxCOjM1LEM6MzYsRDozOCxFOjQwLEY6NDEsRzo0M30sdC5wcm90b3R5cGUuY2hvcmRJbnRlcnZhbHM9e2RpbTpbMCwzLDZdLCLCsCI6WzAsMyw2XSwiy5oiOlswLDMsNl0sZGltNzpbMCwzLDYsOV0sIsKwNyI6WzAsMyw2LDldLCLLmjciOlswLDMsNiw5XSwiw7g3IjpbMCwzLDYsMTBdLCJtNyhiNSkiOlswLDMsNiwxMF0sbTdiNTpbMCwzLDYsMTBdLCJtN+KZrTUiOlswLDMsNiwxMF0sIi03KGI1KSI6WzAsMyw2LDEwXSwiLTdiNSI6WzAsMyw2LDEwXSwiN2I1IjpbMCw0LDYsMTBdLCI3KGI1KSI6WzAsNCw2LDEwXSwiN+KZrTUiOlswLDQsNiwxMF0sIjcoYjksYjUpIjpbMCw0LDYsMTAsMTNdLCI3YjksYjUiOlswLDQsNiwxMCwxM10sIjcoIzksYjUpIjpbMCw0LDYsMTAsMTVdLCI3IzliNSI6WzAsNCw2LDEwLDE1XSwibWFqNyhiNSkiOlswLDQsNiwxMV0sbWFqN2I1OlswLDQsNiwxMV0sIjEzKGI1KSI6WzAsNCw2LDEwLDE0LDIxXSwiMTNiNSI6WzAsNCw2LDEwLDE0LDIxXSxtOlswLDMsN10sIi0iOlswLDMsN10sbTY6WzAsMyw3LDldLCItNiI6WzAsMyw3LDldLG03OlswLDMsNywxMF0sIi03IjpbMCwzLDcsMTBdLCItKGI2KSI6WzAsMyw3LDhdLCItYjYiOlswLDMsNyw4XSwiLTYvOSI6WzAsMyw3LDksMTRdLCItNyhiOSkiOlswLDMsNywxMCwxM10sIi03YjkiOlswLDMsNywxMCwxM10sIi1tYWo3IjpbMCwzLDcsMTFdLCItOSs3IjpbMCwzLDcsMTEsMTNdLCItMTEiOlswLDMsNywxMSwxNCwxN10sbTExOlswLDMsNywxMSwxNCwxN10sIi1tYWo5IjpbMCwzLDcsMTEsMTRdLCIt4oiGOSI6WzAsMyw3LDExLDE0XSxtTTk6WzAsMyw3LDExLDE0XSxNOlswLDQsN10sNjpbMCw0LDcsOV0sIjYvOSI6WzAsNCw3LDksMTRdLCI2YWRkOSI6WzAsNCw3LDksMTRdLDY5OlswLDQsNyw5LDE0XSw3OlswLDQsNywxMF0sOTpbMCw0LDcsMTAsMTRdLDExOlswLDcsMTAsMTQsMTddLDEzOlswLDQsNywxMCwxNCwyMV0sIjdiOSI6WzAsNCw3LDEwLDEzXSwiN+KZrTkiOlswLDQsNywxMCwxM10sIjcoYjkpIjpbMCw0LDcsMTAsMTNdLCI3KCM5KSI6WzAsNCw3LDEwLDE1XSwiNyM5IjpbMCw0LDcsMTAsMTVdLCIoMTMpIjpbMCw0LDcsMTAsMTQsMjFdLCI3KDksMTMpIjpbMCw0LDcsMTAsMTQsMjFdLCI3KCM5LGIxMykiOlswLDQsNywxMCwxNSwyMF0sIjcoIzExKSI6WzAsNCw3LDEwLDE0LDE4XSwiNyMxMSI6WzAsNCw3LDEwLDE0LDE4XSwiNyhiMTMpIjpbMCw0LDcsMTAsMjBdLCI3YjEzIjpbMCw0LDcsMTAsMjBdLCI5KCMxMSkiOlswLDQsNywxMCwxNCwxOF0sIjkjMTEiOlswLDQsNywxMCwxNCwxOF0sIjEzKCMxMSkiOlswLDQsNywxMCwxOCwyMV0sIjEzIzExIjpbMCw0LDcsMTAsMTgsMjFdLG1hajc6WzAsNCw3LDExXSwi4oiGNyI6WzAsNCw3LDExXSwizpQ3IjpbMCw0LDcsMTFdLG1hajk6WzAsNCw3LDExLDE0XSwibWFqNyg5KSI6WzAsNCw3LDExLDE0XSwibWFqNygxMSkiOlswLDQsNywxMSwxN10sIm1hajcoIzExKSI6WzAsNCw3LDExLDE4XSwibWFqNygxMykiOlswLDQsNywxNCwyMV0sIm1hajcoOSwxMykiOlswLDQsNywxMSwxNCwyMV0sIjdzdXM0IjpbMCw1LDcsMTBdLG03c3VzNDpbMCwzLDcsMTAsMTddLHN1czQ6WzAsNSw3XSxzdXMyOlswLDIsN10sIjdzdXMyIjpbMCwyLDcsMTBdLCI5c3VzNCI6WzAsNSw3LDEwLDE0XSwiMTNzdXM0IjpbMCw1LDcsMTAsMTQsMjFdLGF1Zzc6WzAsNCw4LDEwXSwiKzciOlswLDQsOCwxMF0sIisiOlswLDQsOF0sIjcjNSI6WzAsNCw4LDEwXSwiN+KZrzUiOlswLDQsOCwxMF0sIjcrNSI6WzAsNCw4LDEwXSwiOSM1IjpbMCw0LDgsMTAsMTRdLCI54pmvNSI6WzAsNCw4LDEwLDE0XSwiOSs1IjpbMCw0LDgsMTAsMTRdLCItNygjNSkiOlswLDMsOCwxMF0sIi03IzUiOlswLDMsOCwxMF0sIjcoIzUpIjpbMCw0LDgsMTBdLCI3KGI5LCM1KSI6WzAsNCw4LDEwLDEzXSwiN2I5IzUiOlswLDQsOCwxMCwxM10sIm1hajcoIzUpIjpbMCw0LDgsMTFdLCJtYWo3IzUiOlswLDQsOCwxMV0sIm1hajcoIzUsIzExKSI6WzAsNCw4LDExLDE4XSwibWFqNyM1IzExIjpbMCw0LDgsMTEsMThdLCI5KCM1KSI6WzAsNCw4LDEwLDE0XSwiMTMoIzUpIjpbMCw0LDgsMTAsMTQsMjFdLCIxMyM1IjpbMCw0LDgsMTAsMTQsMjFdLDU6WzAsN10sIjUoOCkiOlswLDcsMTJdLCI1YWRkOCI6WzAsNywxMl19LHQucHJvdG90eXBlLnJoeXRobVBhdHRlcm5zPXsiMi8yIjpbImJvb20iLCIiLCIiLCIiLCJjaGljayIsIiIsIiIsIiJdLCIzLzIiOlsiYm9vbSIsIiIsIiIsIiIsImNoaWNrIiwiIiwiIiwiIiwiY2hpY2siLCIiLCIiLCIiXSwiNC8yIjpbImJvb20iLCIiLCIiLCIiLCJjaGljayIsIiIsIiIsIiIsImJvb20iLCIiLCIiLCIiLCJjaGljayIsIiIsIiIsIiJdLCIyLzQiOlsiYm9vbSIsIiIsImNoaWNrIiwiIl0sIjMvNCI6WyJib29tIiwiIiwiY2hpY2siLCIiLCJjaGljayIsIiJdLCI0LzQiOlsiYm9vbSIsIiIsImNoaWNrIiwiIiwiYm9vbSIsIiIsImNoaWNrIiwiIl0sIjUvNCI6WyJib29tIiwiIiwiY2hpY2siLCIiLCJjaGljayIsIiIsImJvb20iLCIiLCJjaGljayIsIiJdLCI2LzQiOlsiYm9vbSIsIiIsImNoaWNrIiwiIiwiYm9vbSIsIiIsImNoaWNrIiwiIiwiYm9vbSIsIiIsImNoaWNrIiwiIl0sIjMvOCI6WyJib29tIiwiIiwiY2hpY2siXSwiNS84IjpbImJvb20iLCJjaGljayIsImNoaWNrIiwiYm9vbSIsImNoaWNrIl0sIjYvOCI6WyJib29tIiwiIiwiY2hpY2siLCJib29tIiwiIiwiY2hpY2siXSwiNy84IjpbImJvb20iLCJjaGljayIsImNoaWNrIiwiYm9vbSIsImNoaWNrIiwiYm9vbSIsImNoaWNrIl0sIjkvOCI6WyJib29tIiwiIiwiY2hpY2siLCJib29tIiwiIiwiY2hpY2siLCJib29tIiwiIiwiY2hpY2siXSwiMTAvOCI6WyJib29tIiwiY2hpY2siLCJjaGljayIsImJvb20iLCJjaGljayIsImNoaWNrIiwiYm9vbSIsImNoaWNrIiwiYm9vbSIsImNoaWNrIl0sIjExLzgiOlsiYm9vbSIsImNoaWNrIiwiY2hpY2siLCJib29tIiwiY2hpY2siLCJjaGljayIsImJvb20iLCJjaGljayIsImJvb20iLCJjaGljayIsImNoaWNrIl0sIjEyLzgiOlsiYm9vbSIsIiIsImNoaWNrIiwiYm9vbSIsIiIsImNoaWNrIiwiYm9vbSIsIiIsImNoaWNrIiwiYm9vbSIsIiIsImNoaWNrIl19LGUuZXhwb3J0cz10fSw5MTQzOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDg0NzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS50cmFja3MubGVuZ3RoO3IrKyl0LnB1c2goW10pO3ZhciBhPW5bMF07cmV0dXJuIGUudHJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKGUscil7ZS5mb3JFYWNoKChmdW5jdGlvbihlKXtzd2l0Y2goZS5jbWQpe2Nhc2Uibm90ZSI6dmFyIGk9dm9pZCAwIT09ZS5pbnN0cnVtZW50P25bZS5pbnN0cnVtZW50XTphO2lmKGUuZHVyYXRpb24+MCl7dmFyIHM9ZS5nYXA/ZS5nYXA6MCxvPWUuZHVyYXRpb247cz1NYXRoLm1pbihzLDIqby8zKTt2YXIgYz17cGl0Y2g6ZS5waXRjaCxpbnN0cnVtZW50Omksc3RhcnQ6TWF0aC5yb3VuZCgxZTYqZS5zdGFydCkvMWU2LGVuZDpNYXRoLnJvdW5kKDFlNiooZS5zdGFydCtvLXMpKS8xZTYsdm9sdW1lOmUudm9sdW1lfTtlLnN0YXJ0Q2hhciYmKGMuc3RhcnRDaGFyPWUuc3RhcnRDaGFyKSxlLmVuZENoYXImJihjLmVuZENoYXI9ZS5lbmRDaGFyKSxlLnN0eWxlJiYoYy5zdHlsZT1lLnN0eWxlKSxlLmNlbnRzJiYoYy5jZW50cz1lLmNlbnRzKSx0W3JdLnB1c2goYyl9YnJlYWs7Y2FzZSJwcm9ncmFtIjphPW5bZS5pbnN0cnVtZW50XTticmVhaztjYXNlInRleHQiOmJyZWFrO2RlZmF1bHQ6Y29uc29sZS5sb2coIlVuaGFuZGxlZCBtaWRpIGV2ZW50IixlKX19KSl9KSksdH19LDYzMTM6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTA0OSksYT1yKDUyODEpLGk9cig4NzAyKSxzPXIoMTIyNSksbz1yKDk3MzMpLGM9cig1MDc1KSxsPXIoNTM0MyksaD1yKDY5ODcpO2Z1bmN0aW9uIHUoZSx0LHIscyxvKXt2YXIgYz0hMDtpZihpKCk/Yz0ic3VzcGVuZGVkIj09PWkoKS5zdGF0ZTphKCksIW4oKSl0aHJvd3tzdGF0dXM6Ik5vdFN1cHBvcnRlZCIsbWVzc2FnZToiVGhpcyBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgYXVkaW8uIn07KGN8fG8pJiZyJiZyLmNsYXNzTGlzdC5hZGQoImFiY2pzLWxvYWRpbmciKSxjP2koKS5yZXN1bWUoKS50aGVuKChmdW5jdGlvbigpe3M/cygpLnRoZW4oKGZ1bmN0aW9uKG4pe2QoZSx0LHIsbyl9KSk6ZChlLHQscixvKX0pKTpkKGUsdCxyLG8pfWZ1bmN0aW9uIGQoZSx0LHIsbil7bj9lKHQpLnRoZW4oKGZ1bmN0aW9uKCl7ciYmci5jbGFzc0xpc3QucmVtb3ZlKCJhYmNqcy1sb2FkaW5nIil9KSk6KGUodCksciYmci5jbGFzc0xpc3QucmVtb3ZlKCJhYmNqcy1sb2FkaW5nIikpfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgbj1lO2lmKCEoZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKG4pKSl0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIGVsZW1lbnQgIicrbisnIiBpbiB0aGUgRE9NLicpfWVsc2UgaWYoIShlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKXRocm93IG5ldyBFcnJvcigiVGhlIGZpcnN0IHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsaWQgZWxlbWVudCBvciBzZWxlY3RvciBpbiB0aGUgRE9NLiIpO2lmKHIucGFyZW50PWUsci5vcHRpb25zPXt9LHQmJihyLm9wdGlvbnM9T2JqZWN0LmFzc2lnbih7fSx0KSksci5vcHRpb25zLmFjJiZhKHIub3B0aW9ucy5hYyksZnVuY3Rpb24oZSx0KXt2YXIgcj0hIXQubG9vcEhhbmRsZXIsbj0hIXQucmVzdGFydEhhbmRsZXIsYT0hIXQucGxheUhhbmRsZXJ8fCEhdC5wbGF5UHJvbWlzZUhhbmRsZXIsaT0hIXQucHJvZ3Jlc3NIYW5kbGVyLHU9ISF0LndhcnBIYW5kbGVyLGQ9ITEhPT10Lmhhc0Nsb2NrLGY9JzxkaXYgY2xhc3M9ImFiY2pzLWlubGluZS1hdWRpbyI+XG4nO2lmKHIpe3ZhciBwPXQucmVwZWF0VGl0bGU/dC5yZXBlYXRUaXRsZToiQ2xpY2sgdG8gdG9nZ2xlIHBsYXkgb25jZS9yZXBlYXQuIjtmKz0nPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJhYmNqcy1taWRpLWxvb3AgYWJjanMtYnRuIiB0aXRsZT0iJytwKyciIGFyaWEtbGFiZWw9IicrKHQucmVwZWF0QXJpYT90LnJlcGVhdEFyaWE6cCkrJyI+JytzKyI8L2J1dHRvbj5cbiJ9aWYobil7dmFyIG09dC5yZXN0YXJ0VGl0bGU/dC5yZXN0YXJ0VGl0bGU6IkNsaWNrIHRvIGdvIHRvIGJlZ2lubmluZy4iO2YrPSc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImFiY2pzLW1pZGktcmVzZXQgYWJjanMtYnRuIiB0aXRsZT0iJyttKyciIGFyaWEtbGFiZWw9IicrKHQucmVzdGFydEFyaWE/dC5yZXN0YXJ0QXJpYTptKSsnIj4nK2grIjwvYnV0dG9uPlxuIn1pZihhKXt2YXIgZz10LnBsYXlUaXRsZT90LnBsYXlUaXRsZToiQ2xpY2sgdG8gcGxheS9wYXVzZS4iO2YrPSc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImFiY2pzLW1pZGktc3RhcnQgYWJjanMtYnRuIiB0aXRsZT0iJytnKyciIGFyaWEtbGFiZWw9IicrKHQucGxheUFyaWE/dC5wbGF5QXJpYTpnKSsnIj4nK28rYytsKyI8L2J1dHRvbj5cbiJ9aWYoaSl7dmFyIHY9dC5yYW5kb21UaXRsZT90LnJhbmRvbVRpdGxlOiJDbGljayB0byBjaGFuZ2UgdGhlIHBsYXliYWNrIHBvc2l0aW9uLiI7Zis9JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYWJjanMtbWlkaS1wcm9ncmVzcy1iYWNrZ3JvdW5kIiB0aXRsZT0iJyt2KyciIGFyaWEtbGFiZWw9IicrKHQucmFuZG9tQXJpYT90LnJhbmRvbUFyaWE6dikrJyI+PHNwYW4gY2xhc3M9ImFiY2pzLW1pZGktcHJvZ3Jlc3MtaW5kaWNhdG9yIj48L3NwYW4+PC9idXR0b24+XG4nfWlmKGQmJihmKz0nPHNwYW4gY2xhc3M9ImFiY2pzLW1pZGktY2xvY2siPjwvc3Bhbj5cbicpLHUpe3ZhciBiPXQud2FycFRpdGxlP3Qud2FycFRpdGxlOiJDaGFuZ2UgdGhlIHBsYXliYWNrIHNwZWVkLiI7Zis9JzxzcGFuIGNsYXNzPSJhYmNqcy10ZW1wby13cmFwcGVyIj48bGFiZWw+PGlucHV0IGNsYXNzPSJhYmNqcy1taWRpLXRlbXBvIiB0eXBlPSJudW1iZXIiIG1pbj0iMSIgbWF4PSIzMDAiIHZhbHVlPSIxMDAiIHRpdGxlPSInK2IrJyIgYXJpYS1sYWJlbD0iJysodC53YXJwQXJpYT90LndhcnBBcmlhOmIpKyciPiU8L2xhYmVsPjxzcGFuPiZuYnNwOyg8c3BhbiBjbGFzcz0iYWJjanMtbWlkaS1jdXJyZW50LXRlbXBvIj48L3NwYW4+ICcrKHQuYnBtP3QuYnBtOiJCUE0iKSsiKTwvc3Bhbj48L3NwYW4+XG4ifWYrPSc8ZGl2IGNsYXNzPSJhYmNqcy1jc3Mtd2FybmluZyIgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDtjb2xvcjpyZWQ7Ym9yZGVyOiAxcHggc29saWQgcmVkO3RleHQtYWxpZ246IGNlbnRlcjt3aWR0aDogMzAwcHg7bWFyZ2luLXRvcDogNHB4O2ZvbnQtd2VpZ2h0OiBib2xkO2JvcmRlci1yYWRpdXM6IDRweDsiPkNTUyByZXF1aXJlZDogbG9hZCBhYmNqcy1hdWRpby5jc3M8L2Rpdj4nLGYrPSI8L2Rpdj5cbiIsZS5pbm5lckhUTUw9Zn0oci5wYXJlbnQsci5vcHRpb25zKSxmdW5jdGlvbihlKXt2YXIgdD0hIWUub3B0aW9ucy5sb29wSGFuZGxlcixyPSEhZS5vcHRpb25zLnJlc3RhcnRIYW5kbGVyLG49ISFlLm9wdGlvbnMucGxheUhhbmRsZXJ8fCEhZS5vcHRpb25zLnBsYXlQcm9taXNlSGFuZGxlcixhPSEhZS5vcHRpb25zLnByb2dyZXNzSGFuZGxlcixpPSEhZS5vcHRpb25zLndhcnBIYW5kbGVyLHM9ZS5wYXJlbnQucXVlcnlTZWxlY3RvcigiLmFiY2pzLW1pZGktc3RhcnQiKTt0JiZlLnBhcmVudC5xdWVyeVNlbGVjdG9yKCIuYWJjanMtbWlkaS1sb29wIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbih0KXt1KGUub3B0aW9ucy5sb29wSGFuZGxlcix0LHMsZS5vcHRpb25zLmFmdGVyUmVzdW1lKX0pKSxyJiZlLnBhcmVudC5xdWVyeVNlbGVjdG9yKCIuYWJjanMtbWlkaS1yZXNldCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoZnVuY3Rpb24odCl7dShlLm9wdGlvbnMucmVzdGFydEhhbmRsZXIsdCxzLGUub3B0aW9ucy5hZnRlclJlc3VtZSl9KSksbiYmcy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKGZ1bmN0aW9uKHQpe3UoZS5vcHRpb25zLnBsYXlQcm9taXNlSGFuZGxlcnx8ZS5vcHRpb25zLnBsYXlIYW5kbGVyLHQscyxlLm9wdGlvbnMuYWZ0ZXJSZXN1bWUsISFlLm9wdGlvbnMucGxheVByb21pc2VIYW5kbGVyKX0pKSxhJiZlLnBhcmVudC5xdWVyeVNlbGVjdG9yKCIuYWJjanMtbWlkaS1wcm9ncmVzcy1iYWNrZ3JvdW5kIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbih0KXt1KGUub3B0aW9ucy5wcm9ncmVzc0hhbmRsZXIsdCxzLGUub3B0aW9ucy5hZnRlclJlc3VtZSl9KSksaSYmZS5wYXJlbnQucXVlcnlTZWxlY3RvcigiLmFiY2pzLW1pZGktdGVtcG8iKS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChmdW5jdGlvbih0KXt1KGUub3B0aW9ucy53YXJwSGFuZGxlcix0LHMsZS5vcHRpb25zLmFmdGVyUmVzdW1lKX0pKX0ociksci5kaXNhYmxlPWZ1bmN0aW9uKGUpe3ZhciB0PXIucGFyZW50LnF1ZXJ5U2VsZWN0b3IoIi5hYmNqcy1pbmxpbmUtYXVkaW8iKTtlP3QuY2xhc3NMaXN0LmFkZCgiYWJjanMtZGlzYWJsZWQiKTp0LmNsYXNzTGlzdC5yZW1vdmUoImFiY2pzLWRpc2FibGVkIil9LHIuc2V0V2FycD1mdW5jdGlvbihlLHQpe3IucGFyZW50LnF1ZXJ5U2VsZWN0b3IoIi5hYmNqcy1taWRpLXRlbXBvIikudmFsdWU9TWF0aC5yb3VuZCh0KSxyLnNldFRlbXBvKGUpfSxyLnNldFRlbXBvPWZ1bmN0aW9uKGUpe3ZhciB0PXIucGFyZW50LnF1ZXJ5U2VsZWN0b3IoIi5hYmNqcy1taWRpLWN1cnJlbnQtdGVtcG8iKTt0JiYodC5pbm5lckhUTUw9TWF0aC5yb3VuZChlKSl9LHIucmVzZXRBbGw9ZnVuY3Rpb24oKXtmb3IodmFyIGU9ci5wYXJlbnQucXVlcnlTZWxlY3RvckFsbCgiLmFiY2pzLXB1c2hlZCIpLHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLmNsYXNzTGlzdC5yZW1vdmUoImFiY2pzLXB1c2hlZCIpfSxyLnB1c2hQbGF5PWZ1bmN0aW9uKGUpe3ZhciB0PXIucGFyZW50LnF1ZXJ5U2VsZWN0b3IoIi5hYmNqcy1taWRpLXN0YXJ0Iik7dCYmKGU/dC5jbGFzc0xpc3QuYWRkKCJhYmNqcy1wdXNoZWQiKTp0LmNsYXNzTGlzdC5yZW1vdmUoImFiY2pzLXB1c2hlZCIpKX0sci5wdXNoTG9vcD1mdW5jdGlvbihlKXt2YXIgdD1yLnBhcmVudC5xdWVyeVNlbGVjdG9yKCIuYWJjanMtbWlkaS1sb29wIik7dCYmKGU/dC5jbGFzc0xpc3QuYWRkKCJhYmNqcy1wdXNoZWQiKTp0LmNsYXNzTGlzdC5yZW1vdmUoImFiY2pzLXB1c2hlZCIpKX0sci5zZXRQcm9ncmVzcz1mdW5jdGlvbihlLHQpe3ZhciBuPXIucGFyZW50LnF1ZXJ5U2VsZWN0b3IoIi5hYmNqcy1taWRpLXByb2dyZXNzLWJhY2tncm91bmQiKSxhPXIucGFyZW50LnF1ZXJ5U2VsZWN0b3IoIi5hYmNqcy1taWRpLXByb2dyZXNzLWluZGljYXRvciIpO2lmKG4mJmEpe3ZhciBpPW4uY2xpZW50V2lkdGgqZTthLnN0eWxlLmxlZnQ9aSsicHgiO3ZhciBzPXIucGFyZW50LnF1ZXJ5U2VsZWN0b3IoIi5hYmNqcy1taWRpLWNsb2NrIik7aWYocyl7dmFyIG89dCplLzFlMyxjPU1hdGguZmxvb3Ioby82MCksbD1NYXRoLmZsb29yKG8lNjApLGg9bDwxMD8iMCIrbDpsO3MuaW5uZXJIVE1MPWMrIjoiK2h9fX0sci5vcHRpb25zLmFmdGVyUmVzdW1lKXt2YXIgZD0hMTtyLm9wdGlvbnMuYWM/ZD0ic3VzcGVuZGVkIiE9PXIub3B0aW9ucy5hYy5zdGF0ZTppKCkmJihkPSJzdXNwZW5kZWQiIT09aSgpLnN0YXRlKSxkJiZyLm9wdGlvbnMuYWZ0ZXJSZXN1bWUoKX19fSw1NTk0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIyMjgpLGE9cig5MTQzKSxpPXIoNTI4MSkscz1yKDg3MDIpLG89cig1MDQ5KSxjPXIoNTIyKSxsPXIoODQ3MSksaD1yKDg3MyksdT1yKDQ1ODYpLGQ9cig0NzcxKSxmPSJNSURJIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyLiIscD0iaHR0cHM6Ly9wYXVscm9zZW4uZ2l0aHViLmlvL21pZGktanMtc291bmRmb250cy9hYmNqcy8iLG09Imh0dHBzOi8vcGF1bHJvc2VuLmdpdGh1Yi5pby9taWRpLWpzLXNvdW5kZm9udHMvRmx1aWRSM19HTS8iO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5hdWRpb0J1ZmZlclBvc3NpYmxlPXZvaWQgMCxlLmRpcmVjdFNvdXJjZT1bXSxlLnN0YXJ0VGltZVNlYz12b2lkIDAsZS5wYXVzZWRUaW1lU2VjPXZvaWQgMCxlLmF1ZGlvQnVmZmVycz1bXSxlLmR1cmF0aW9uPXZvaWQgMCxlLmlzUnVubmluZz0hMSxlLm9wdGlvbnM9e30sZS5waWNrdXBMZW5ndGg9MCxlLmluaXQ9ZnVuY3Rpb24odCl7dHx8KHQ9e30pLHQub3B0aW9ucyYmKGUub3B0aW9ucz10Lm9wdGlvbnMpLGkodC5hdWRpb0NvbnRleHQpO3ZhciByPXMoKS5jdXJyZW50VGltZTtpZihlLmRlYnVnQ2FsbGJhY2s9dC5kZWJ1Z0NhbGxiYWNrLGUuZGVidWdDYWxsYmFjayYmZS5kZWJ1Z0NhbGxiYWNrKCJpbml0IGNhbGxlZCIpLGUuYXVkaW9CdWZmZXJQb3NzaWJsZT1lLl9kZXZpY2VDYXBhYmxlKCksIWUuYXVkaW9CdWZmZXJQb3NzaWJsZSlyZXR1cm4gUHJvbWlzZS5yZWplY3Qoe3N0YXR1czoiTm90U3VwcG9ydGVkIixtZXNzYWdlOmZ9KTt2YXIgbj10Lm9wdGlvbnM/dC5vcHRpb25zOnt9O2Uuc291bmRGb250VXJsPW4uc291bmRGb250VXJsP24uc291bmRGb250VXJsOm0sIi8iIT09ZS5zb3VuZEZvbnRVcmxbZS5zb3VuZEZvbnRVcmwubGVuZ3RoLTFdJiYoZS5zb3VuZEZvbnRVcmwrPSIvIiksbi5zb3VuZEZvbnRWb2x1bWVNdWx0aXBsaWVyfHwwPT09bi5zb3VuZEZvbnRWb2x1bWVNdWx0aXBsaWVyP2Uuc291bmRGb250Vm9sdW1lTXVsdGlwbGllcj1uLnNvdW5kRm9udFZvbHVtZU11bHRpcGxpZXI6ZS5zb3VuZEZvbnRVcmw9PT1tfHwiaHR0cHM6Ly9wYXVscm9zZW4uZ2l0aHViLmlvL21pZGktanMtc291bmRmb250cy9NdXN5bmdLaXRlLyI9PT1lLnNvdW5kRm9udFVybD9lLnNvdW5kRm9udFZvbHVtZU11bHRpcGxpZXI9MzplLnNvdW5kRm9udFVybD09PXA/ZS5zb3VuZEZvbnRWb2x1bWVNdWx0aXBsaWVyPS40OmUuc291bmRGb250Vm9sdW1lTXVsdGlwbGllcj0xLG4ucHJvZ3JhbU9mZnNldHM/ZS5wcm9ncmFtT2Zmc2V0cz1uLnByb2dyYW1PZmZzZXRzOmUuc291bmRGb250VXJsPT09cD9lLnByb2dyYW1PZmZzZXRzPXticmlnaHRfYWNvdXN0aWNfcGlhbm86MjAsaG9ua3l0b25rX3BpYW5vOjIwLGVsZWN0cmljX3BpYW5vXzE6MzAsZWxlY3RyaWNfcGlhbm9fMjozMCxoYXJwc2ljaG9yZDo0MCxjbGF2aW5ldDoyMCxjZWxlc3RhOjIwLGdsb2NrZW5zcGllbDo0MCx2aWJyYXBob25lOjMwLG1hcmltYmE6MzUseHlsb3Bob25lOjMwLHR1YnVsYXJfYmVsbHM6MzUsZHVsY2ltZXI6MzAsZHJhd2Jhcl9vcmdhbjoyMCxwZXJjdXNzaXZlX29yZ2FuOjI1LHJvY2tfb3JnYW46MjAsY2h1cmNoX29yZ2FuOjQwLHJlZWRfb3JnYW46NDAsYWNjb3JkaW9uOjQwLGhhcm1vbmljYTo0MCxhY291c3RpY19ndWl0YXJfbnlsb246MjAsYWNvdXN0aWNfZ3VpdGFyX3N0ZWVsOjMwLGVsZWN0cmljX2d1aXRhcl9qYXp6OjI1LGVsZWN0cmljX2d1aXRhcl9jbGVhbjoxNSxlbGVjdHJpY19ndWl0YXJfbXV0ZWQ6MzUsb3ZlcmRyaXZlbl9ndWl0YXI6MjUsZGlzdG9ydGlvbl9ndWl0YXI6MjAsZ3VpdGFyX2hhcm1vbmljczozMCxlbGVjdHJpY19iYXNzX2ZpbmdlcjoxNSxlbGVjdHJpY19iYXNzX3BpY2s6MzAsZnJldGxlc3NfYmFzczo0MCx2aW9saW46MTA1LHZpb2xhOjUwLGNlbGxvOjQwLGNvbnRyYWJhc3M6NjAsdHJ1bXBldDoxMCx0cm9tYm9uZTo5MCxhbHRvX3NheDoyMCx0ZW5vcl9zYXg6MjAsY2xhcmluZXQ6MjAsZmx1dGU6NTAsYmFuam86NTAsd29vZGJsb2NrOjIwfTplLnByb2dyYW1PZmZzZXRzPXt9O3ZhciBhPXZvaWQgMCE9PW4uZmFkZUxlbmd0aD9wYXJzZUludChuLmZhZGVMZW5ndGgsMTApOk5hTjtpZihlLmZhZGVMZW5ndGg9aXNOYU4oYSk/MjAwOmEsYT12b2lkIDAhPT1uLm5vdGVFbmQ/cGFyc2VJbnQobi5ub3RlRW5kLDEwKTpOYU4sZS5ub3RlRW5kPWlzTmFOKGEpPzA6YSxlLnBhbj1uLnBhbixlLm1ldGVyU2l6ZT0xLHQudmlzdWFsT2JqKWUuZmxhdHRlbmVkPXQudmlzdWFsT2JqLnNldFVwQXVkaW8obiksdC52aXN1YWxPYmouZ2V0TWV0ZXJGcmFjdGlvbigpLmRlbiYmKGUubWV0ZXJTaXplPXQudmlzdWFsT2JqLmdldE1ldGVyRnJhY3Rpb24oKS5udW0vdC52aXN1YWxPYmouZ2V0TWV0ZXJGcmFjdGlvbigpLmRlbiksZS5waWNrdXBMZW5ndGg9dC52aXN1YWxPYmouZ2V0UGlja3VwTGVuZ3RoKCk7ZWxzZXtpZighdC5zZXF1ZW5jZSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNdXN0IHBhc3MgaW4gZWl0aGVyIGEgdmlzdWFsT2JqIG9yIGEgc2VxdWVuY2UiKSk7ZS5mbGF0dGVuZWQ9dC5zZXF1ZW5jZX1lLm1pbGxpc2Vjb25kc1Blck1lYXN1cmU9dC5taWxsaXNlY29uZHNQZXJNZWFzdXJlP3QubWlsbGlzZWNvbmRzUGVyTWVhc3VyZTp0LnZpc3VhbE9iaj90LnZpc3VhbE9iai5taWxsaXNlY29uZHNQZXJNZWFzdXJlKGUuZmxhdHRlbmVkLnRlbXBvKToxZTMsZS5iZWF0c1Blck1lYXN1cmU9dC52aXN1YWxPYmo/dC52aXN1YWxPYmouZ2V0QmVhdHNQZXJNZWFzdXJlKCk6NCxlLnNlcXVlbmNlQ2FsbGJhY2s9bi5zZXF1ZW5jZUNhbGxiYWNrLGUuY2FsbGJhY2tDb250ZXh0PW4uY2FsbGJhY2tDb250ZXh0LGUub25FbmRlZD1uLm9uRW5kZWQsZS5tZXRlckZyYWN0aW9uPXQudmlzdWFsT2JqP3QudmlzdWFsT2JqLmdldE1ldGVyRnJhY3Rpb24oKTp7ZGVuOjF9O3ZhciBvPXt9LGg9W10sdT1bXSxnPWxbMF07ZS5mbGF0dGVuZWQudHJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoInByb2dyYW0iPT09ZS5jbWQmJmxbZS5pbnN0cnVtZW50XSYmKGc9bFtlLmluc3RydW1lbnRdKSx2b2lkIDAhPT1lLnBpdGNoKXt2YXIgdD1lLnBpdGNoLHI9Y1t0XSxuPXZvaWQgMCE9PWUuaW5zdHJ1bWVudD9sW2UuaW5zdHJ1bWVudF06ZztpZihyKWlmKG9bbl18fChvW25dPXt9KSxkW25dJiZkW25dW3JdKXt2YXIgYT1uKyI6IityO2guaW5kZXhPZihhKTwwJiZoLnB1c2goYSl9ZWxzZSBvW25dW3JdPSEwO2Vsc2V7dmFyIGk9bisiOiIrcjtjb25zb2xlLmxvZygiQ2FuJ3QgZmluZCBub3RlOiAiLHQsaSksdS5pbmRleE9mKGkpPDAmJnUucHVzaChpKX19fSkpfSkpLGUuZGVidWdDYWxsYmFjayYmZS5kZWJ1Z0NhbGxiYWNrKCJub3RlIGdhdGhlcmluZyB0aW1lID0gIitNYXRoLmZsb29yKDFlMyoocygpLmN1cnJlbnRUaW1lLXIpKSsibXMiKSxyPXMoKS5jdXJyZW50VGltZTt2YXIgdj1bXTtPYmplY3Qua2V5cyhvKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3Qua2V5cyhvW2VdKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2LnB1c2goe2luc3RydW1lbnQ6ZSxub3RlOnR9KX0pKX0pKSxlLmRlYnVnQ2FsbGJhY2smJmUuZGVidWdDYWxsYmFjaygibm90ZXMgIitKU09OLnN0cmluZ2lmeSh2KSk7Zm9yKHZhciBiPVtdLHk9MDt5PHYubGVuZ3RoO3krPTI1NiliLnB1c2godi5zbGljZSh5LHkrMjU2KSk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LG4pe3ZhciBhPXtjYWNoZWQ6aCxlcnJvcjp1LGxvYWRlZDpbXX0saT0wOyFmdW5jdGlvbiBvKCl7ZS5kZWJ1Z0NhbGxiYWNrJiZlLmRlYnVnQ2FsbGJhY2soImxvYWRCYXRjaCBpZHg9IitpKyIgbGVuPSIrYi5sZW5ndGgpLGk8Yi5sZW5ndGg/ZS5fbG9hZEJhdGNoKGJbaV0sZS5zb3VuZEZvbnRVcmwscikudGhlbigoZnVuY3Rpb24odCl7ZS5kZWJ1Z0NhbGxiYWNrJiZlLmRlYnVnQ2FsbGJhY2soImxvYWRCYXRjaCB0aGVuIikscj1zKCkuY3VycmVudFRpbWUsdCYmKHQuZXJyb3ImJihhLmVycm9yPWEuZXJyb3IuY29uY2F0KHQuZXJyb3IpKSx0LmxvYWRlZCYmKGEubG9hZGVkPWEubG9hZGVkLmNvbmNhdCh0LmxvYWRlZCkpKSxpKyssbygpfSksbik6KGUuZGVidWdDYWxsYmFjayYmZS5kZWJ1Z0NhbGxiYWNrKCJyZXNvbHZlIGluaXQiKSx0KGEpKX0oKX0pKX0sZS5fbG9hZEJhdGNoPWZ1bmN0aW9uKHQscixhLGkpe3ZhciBvPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuZGVidWdDYWxsYmFjayYmZS5kZWJ1Z0NhbGxiYWNrKCJnZXROb3RlICIrdC5pbnN0cnVtZW50KyI6Iit0Lm5vdGUpLG8ucHVzaChuKHIsdC5pbnN0cnVtZW50LHQubm90ZSxzKCkpKX0pKSxQcm9taXNlLmFsbChvKS50aGVuKChmdW5jdGlvbihuKXtlLmRlYnVnQ2FsbGJhY2smJmUuZGVidWdDYWxsYmFjaygibXAzIGxvYWQgdGltZSA9ICIrTWF0aC5mbG9vcigxZTMqKHMoKS5jdXJyZW50VGltZS1hKSkrIm1zIik7Zm9yKHZhciBvPVtdLGM9W10sbD1bXSxoPVtdLHU9MDt1PG4ubGVuZ3RoO3UrKyl7dmFyIGQ9blt1XSxmPWQuaW5zdHJ1bWVudCsiOiIrZC5uYW1lOyJsb2FkZWQiPT09ZC5zdGF0dXM/by5wdXNoKGYpOiJwZW5kaW5nIj09PWQuc3RhdHVzP2wucHVzaChmKToiY2FjaGVkIj09PWQuc3RhdHVzP2MucHVzaChmKTpoLnB1c2goZisiICIrZC5tZXNzYWdlKX1pZihsLmxlbmd0aD4wKXtpZihlLmRlYnVnQ2FsbGJhY2smJmUuZGVidWdDYWxsYmFjaygicGVuZGluZyAiK0pTT04uc3RyaW5naWZ5KGwpKSxpP2kqPTI6aT01MCxpPDllNClyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsbil7c2V0VGltZW91dCgoZnVuY3Rpb24oKXt2YXIgcz1bXTtmb3IodT0wO3U8bC5sZW5ndGg7dSsrKWY9bFt1XS5zcGxpdCgiOiIpLHMucHVzaCh7aW5zdHJ1bWVudDpmWzBdLG5vdGU6ZlsxXX0pO2UuZGVidWdDYWxsYmFjayYmZS5kZWJ1Z0NhbGxiYWNrKCJyZXRyeSAiK0pTT04uc3RyaW5naWZ5KHMpKSxlLl9sb2FkQmF0Y2gocyxyLGEsaSkudGhlbigoZnVuY3Rpb24oZSl7dChlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7bihlKX0pKX0pLGkpfSkpO2Zvcih2YXIgcD1bXSxtPTA7bTx0Lmxlbmd0aDttKyspcC5wdXNoKHRbbV0uaW5zdHJ1bWVudCsiLyIrdFttXS5ub3RlKTtyZXR1cm4gZS5kZWJ1Z0NhbGxiYWNrJiZlLmRlYnVnQ2FsbGJhY2soImxvYWRCYXRjaCB0aW1lb3V0IiksUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJ0aW1lb3V0IGF0dGVtcHRpbmcgdG8gbG9hZDogIitwLmpvaW4oIiwgIikpKX1yZXR1cm4gZS5kZWJ1Z0NhbGxiYWNrJiZlLmRlYnVnQ2FsbGJhY2soImxvYWRCYXRjaCByZXNvbHZlIiksUHJvbWlzZS5yZXNvbHZlKHtsb2FkZWQ6byxjYWNoZWQ6YyxlcnJvcjpofSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe2UuZGVidWdDYWxsYmFjayYmZS5kZWJ1Z0NhbGxiYWNrKCJsb2FkQmF0Y2ggY2F0Y2ggIit0Lm1lc3NhZ2UpfSkpfSxlLnByaW1lPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5mYWRlTGVuZ3RoLzFlMztyZXR1cm4gZS5pc1J1bm5pbmc9ITEsZS5hdWRpb0J1ZmZlclBvc3NpYmxlPyhlLmRlYnVnQ2FsbGJhY2smJmUuZGVidWdDYWxsYmFjaygicHJpbWUgY2FsbGVkIiksbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbil7dHJ5e3ZhciBpPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuYXVkaW9CdWZmZXJzJiZlLmF1ZGlvQnVmZmVycy5sZW5ndGg+MD9lLmF1ZGlvQnVmZmVyc1swXS5kdXJhdGlvbjowO3JldHVybntzdGF0dXM6cygpLnN0YXRlLGR1cmF0aW9uOnR9fSxvPXMoKS5jdXJyZW50VGltZSxjPWUubWlsbGlzZWNvbmRzUGVyTWVhc3VyZS8xZTMvZS5tZXRlclNpemU7aWYoZS5kdXJhdGlvbj1lLmZsYXR0ZW5lZC50b3RhbER1cmF0aW9uKmMsZS5kdXJhdGlvbjw9MClyZXR1cm4gZS5hdWRpb0J1ZmZlcnM9W10scih7c3RhdHVzOiJlbXB0eSIsc2Vjb25kczowfSk7ZS5kdXJhdGlvbis9dDt2YXIgbD1NYXRoLmZsb29yKHMoKS5zYW1wbGVSYXRlKmUuZHVyYXRpb24pO2Uuc3RvcCgpO3ZhciBoPWEoZS5mbGF0dGVuZWQpO2Uub3B0aW9ucy5zd2luZyYmZnVuY3Rpb24oZSx0LHIsbil7aWYoISg0IT1yLmRlbiYmOCE9ci5kZW58fCh0PXBhcnNlRmxvYXQodCksaXNOYU4odCl8fHQ8PTUwKSkpe3Q+NzUmJih0PTc1KSx0PXQvNTAtMTt2YXIgYT0wLGk9LjI1Ozg9PT1yLmRlbiYmKGkvPTIpO2Zvcih2YXIgcz1pLzIsbz1zKnQsYz0wO2M8ZS5sZW5ndGg7YysrKWZvcih2YXIgbD1lW2NdLGg9MDtoPGwubGVuZ3RoO2grKyl7dmFyIHU9bFtoXTtpZigodS5zdGFydC1uKSVzPT0wJiYodS5zdGFydC1uKSVpIT0wJiYoMD09aHx8bFtoLTFdLnN0YXJ0PD1sW2hdLnN0YXJ0LXMpJiYoaD09bC5sZW5ndGgtMXx8bFtoKzFdLnN0YXJ0Pj1sW2hdLnN0YXJ0K3MpKXt2YXIgZD11LnN0YXJ0O3Uuc3RhcnQrPW8sdS52b2x1bWUqPTErYSxoPjAmJmxbaC0xXS5lbmQ9PWQmJihsW2gtMV0uZW5kPXUuc3RhcnQsbFtoLTFdLnZvbHVtZSo9MS1hKX19fX0oaCxlLm9wdGlvbnMuc3dpbmcsZS5tZXRlckZyYWN0aW9uLGUucGlja3VwTGVuZ3RoKSxlLnNlcXVlbmNlQ2FsbGJhY2smJmUuc2VxdWVuY2VDYWxsYmFjayhoLGUuY2FsbGJhY2tDb250ZXh0KTt2YXIgZD1mdW5jdGlvbihlLHQpe2lmKG51bGw9PXQpcmV0dXJuIG51bGw7dmFyIHI9W107aWYodC5sZW5ndGgpe2Zvcih2YXIgbj0wO248ZTtuKyspaWYobjx0Lmxlbmd0aCl7dmFyIGE9cGFyc2VGbG9hdCh0W25dKTthPC0xP2E9LTE6YT4xJiYoYT0xKSxyLnB1c2goYSl9ZWxzZSByLnB1c2goMCk7cmV0dXJuIHJ9dmFyIGk9cGFyc2VGbG9hdCh0KTtpZihpKihlLTEpPjIpcmV0dXJuIG51bGw7Zm9yKHZhciBzPWUlMj09MCxvPXM/MC1pLzI6MCxjPW8raSxsPTA7bDxlO2wrKykocz1sJTI9PTApPyhyLnB1c2gobyksby09aSk6KHIucHVzaChjKSxjKz1pKTtyZXR1cm4gcn0oaC5sZW5ndGgsZS5wYW4pLGY9e307aC5mb3JFYWNoKChmdW5jdGlvbih0LHIpe3ZhciBuPWQmJmQubGVuZ3RoPnI/ZFtyXTowO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9dC5pbnN0cnVtZW50KyI6Iit0LnBpdGNoKyI6Iit0LnZvbHVtZSsiOiIrTWF0aC5yb3VuZCgxZTMqKHQuZW5kLXQuc3RhcnQpKS8xZTMrIjoiK24rIjoiK2MrIjoiKyh0LmNlbnRzP3QuY2VudHM6MCk7ZS5kZWJ1Z0NhbGxiYWNrJiZlLmRlYnVnQ2FsbGJhY2soIm5vdGVNYXBUcmFjayAiK3IpLGZbcl18fChmW3JdPVtdKSxmW3JdLnB1c2godC5zdGFydCl9KSl9KSk7Zm9yKHZhciBwPVtdLG09cygpLmNyZWF0ZUJ1ZmZlcigyLGwscygpLnNhbXBsZVJhdGUpLGc9MDtnPE9iamVjdC5rZXlzKGYpLmxlbmd0aDtnKyspe3ZhciB2PU9iamVjdC5rZXlzKGYpW2ddLGI9di5zcGxpdCgiOiIpLHk9dm9pZCAwIT09Yls2XT9wYXJzZUZsb2F0KGJbNl0pOjA7Yj17aW5zdHJ1bWVudDpiWzBdLHBpdGNoOnBhcnNlSW50KGJbMV0sMTApLHZvbHVtZTpwYXJzZUludChiWzJdLDEwKSxsZW46cGFyc2VGbG9hdChiWzNdKSxwYW46cGFyc2VGbG9hdChiWzRdKSx0ZW1wb011bHRpcGxpZXI6cGFyc2VGbG9hdChiWzVdKSxjZW50czp5fSxwLnB1c2godShtLHMoKS5zYW1wbGVSYXRlLGIsZlt2XSxlLnNvdW5kRm9udFZvbHVtZU11bHRpcGxpZXIsZS5wcm9ncmFtT2Zmc2V0c1tiLmluc3RydW1lbnRdLHQsZS5ub3RlRW5kLzFlMyxlLmRlYnVnQ2FsbGJhY2spKX1lLmF1ZGlvQnVmZmVycz1bbV0sZS5kZWJ1Z0NhbGxiYWNrJiYoZS5kZWJ1Z0NhbGxiYWNrKCJzYW1wbGVSYXRlID0gIitzKCkuc2FtcGxlUmF0ZSksZS5kZWJ1Z0NhbGxiYWNrKCJ0b3RhbFNhbXBsZXMgPSAiK2wpLGUuZGVidWdDYWxsYmFjaygiY3JlYXRpb25UaW1lID0gIitNYXRoLmZsb29yKDFlMyoocygpLmN1cnJlbnRUaW1lLW8pKSsibXMiKSksUHJvbWlzZS5hbGwocCkudGhlbigoZnVuY3Rpb24oKXsic3VzcGVuZGVkIj09PXMoKS5zdGF0ZT9zKCkucmVzdW1lKCkudGhlbigoZnVuY3Rpb24oKXtyKGkoZSkpfSkpOiJpbnRlcnJ1cHRlZCI9PT1zKCkuc3RhdGU/cygpLnN1c3BlbmQoKS50aGVuKChmdW5jdGlvbigpe3MoKS5yZXN1bWUoKS50aGVuKChmdW5jdGlvbigpe3IoaShlKSl9KSl9KSk6cihpKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7bihlKX0pKX1jYXRjaChlKXtuKGUpfX0pKSk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGYpKX0sZS5zdGFydD1mdW5jdGlvbigpe2lmKCFlLmF1ZGlvQnVmZmVyUG9zc2libGUpdGhyb3cgbmV3IEVycm9yKGYpO2UuZGVidWdDYWxsYmFjayYmZS5kZWJ1Z0NhbGxiYWNrKCJzdGFydCBjYWxsZWQiKTt2YXIgdD1lLnBhdXNlZFRpbWVTZWM/ZS5wYXVzZWRUaW1lU2VjOjA7ZS5fa2lja09mZlNvdW5kKHQpLGUuc3RhcnRUaW1lU2VjPXMoKS5jdXJyZW50VGltZS10LGUucGF1c2VkVGltZVNlYz12b2lkIDAsZS5kZWJ1Z0NhbGxiYWNrJiZlLmRlYnVnQ2FsbGJhY2soIk1JREkgU1RBUlRFRCIsZS5zdGFydFRpbWVTZWMpfSxlLnBhdXNlPWZ1bmN0aW9uKCl7aWYoIWUuYXVkaW9CdWZmZXJQb3NzaWJsZSl0aHJvdyBuZXcgRXJyb3IoZik7cmV0dXJuIGUuZGVidWdDYWxsYmFjayYmZS5kZWJ1Z0NhbGxiYWNrKCJwYXVzZSBjYWxsZWQiKSxlLnBhdXNlZFRpbWVTZWM9ZS5zdG9wKCksZS5wYXVzZWRUaW1lU2VjfSxlLnJlc3VtZT1mdW5jdGlvbigpe2Uuc3RhcnQoKX0sZS5zZWVrPWZ1bmN0aW9uKHQscil7dmFyIG47c3dpdGNoKHIpe2Nhc2Uic2Vjb25kcyI6bj10O2JyZWFrO2Nhc2UiYmVhdHMiOm49dCplLm1pbGxpc2Vjb25kc1Blck1lYXN1cmUvZS5iZWF0c1Blck1lYXN1cmUvMWUzO2JyZWFrO2RlZmF1bHQ6bj0oZS5kdXJhdGlvbi1lLmZhZGVMZW5ndGgvMWUzKSp0fWlmKCFlLmF1ZGlvQnVmZmVyUG9zc2libGUpdGhyb3cgbmV3IEVycm9yKGYpO2UuZGVidWdDYWxsYmFjayYmZS5kZWJ1Z0NhbGxiYWNrKCJzZWVrIGNhbGxlZCBzZWM9IituKSxlLmlzUnVubmluZz8oZS5zdG9wKCksZS5fa2lja09mZlNvdW5kKG4pKTplLnBhdXNlZFRpbWVTZWM9bixlLnBhdXNlZFRpbWVTZWM9bn0sZS5zdG9wPWZ1bmN0aW9uKCl7cmV0dXJuIGUuaXNSdW5uaW5nPSExLGUucGF1c2VkVGltZVNlYz12b2lkIDAsZS5kaXJlY3RTb3VyY2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dHJ5e2Uuc3RvcCgpfWNhdGNoKGUpe2NvbnNvbGUubG9nKCJkaXJlY3Qgc291cmNlIGRpZG4ndCBzdG9wOiIsZSl9fSkpLGUuZGlyZWN0U291cmNlPVtdLHMoKS5jdXJyZW50VGltZS1lLnN0YXJ0VGltZVNlY30sZS5maW5pc2hlZD1mdW5jdGlvbigpe2Uuc3RhcnRUaW1lU2VjPXZvaWQgMCxlLnBhdXNlZFRpbWVTZWM9dm9pZCAwLGUuaXNSdW5uaW5nPSExfSxlLmRvd25sb2FkPWZ1bmN0aW9uKCl7cmV0dXJuIGgoZSl9LGUuZ2V0QXVkaW9CdWZmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hdWRpb0J1ZmZlcnNbMF19LGUuZ2V0SXNSdW5uaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGUuaXNSdW5uaW5nfSxlLl9kZXZpY2VDYXBhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuISFvKCl8fChjb25zb2xlLndhcm4oZiksZS5kZWJ1Z0NhbGxiYWNrJiZlLmRlYnVnQ2FsbGJhY2soZiksITEpfSxlLl9raWNrT2ZmU291bmQ9ZnVuY3Rpb24odCl7ZS5pc1J1bm5pbmc9ITAsZS5kaXJlY3RTb3VyY2U9W10sZS5hdWRpb0J1ZmZlcnMuZm9yRWFjaCgoZnVuY3Rpb24odCxyKXtlLmRpcmVjdFNvdXJjZVtyXT1zKCkuY3JlYXRlQnVmZmVyU291cmNlKCksZS5kaXJlY3RTb3VyY2Vbcl0uYnVmZmVyPXQsZS5kaXJlY3RTb3VyY2Vbcl0uY29ubmVjdChzKCkuZGVzdGluYXRpb24pfSkpLGUuZGlyZWN0U291cmNlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uuc3RhcnQoMCx0KX0pKSxlLm9uRW5kZWQmJihlLmRpcmVjdFNvdXJjZVswXS5vbmVuZGVkPWZ1bmN0aW9uKCl7ZS5vbkVuZGVkKGUuY2FsbGJhY2tDb250ZXh0KX0pfX19LDg3MzpmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbj1lWzBdLGE9bi5udW1iZXJPZkNoYW5uZWxzLGk9bi5sZW5ndGgqYSoyKzQ0LHM9bmV3IEFycmF5QnVmZmVyKGkpLG89bmV3IERhdGFWaWV3KHMpLGM9W10sbD0wLGg9MDtmb3IoZCgxMTc5MDExNDEwKSxkKGktOCksZCgxMTYzMjgwNzI3KSxkKDU0NDUwMTA5NCksZCgxNiksdSgxKSx1KGEpLGQobi5zYW1wbGVSYXRlKSxkKDIqbi5zYW1wbGVSYXRlKmEpLHUoMiphKSx1KDE2KSxkKDE2MzUwMTcwNjApLGQoaS1oLTQpLHQ9MDt0PGE7dCsrKWMucHVzaChuLmdldENoYW5uZWxEYXRhKHQpKTtmb3IoO2g8aTspe2Zvcih0PTA7dDxjLmxlbmd0aDt0Kyspcj0wfCguNSsocj1NYXRoLm1heCgtMSxNYXRoLm1pbigxLGNbdF1bbF0pKSk8MD8zMjc2OCpyOjMyNzY3KnIpLG8uc2V0SW50MTYoaCxyLCEwKSxoKz0yO2wrK31yZXR1cm4gbmV3IEJsb2IoW3NdLHt0eXBlOiJhdWRpby93YXYifSk7ZnVuY3Rpb24gdShlKXtvLnNldFVpbnQxNihoLGUsITApLGgrPTJ9ZnVuY3Rpb24gZChlKXtvLnNldFVpbnQzMihoLGUsITApLGgrPTR9fShlLmF1ZGlvQnVmZmVycykpfX0sNTYyOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE1OTIpLGE9cigzMjg0KSxpPWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBhPVsiYWJjanMtZG93bmxvYWQtbWlkaSIsImFiY2pzLW1pZGktIituXTt0LmRvd25sb2FkQ2xhc3MmJmEucHVzaCh0LmRvd25sb2FkQ2xhc3MpO3ZhciBpPSc8ZGl2IGNsYXNzPSInK2Euam9pbigiICIpKyciPic7dC5wcmVUZXh0RG93bmxvYWQmJihpKz10LnByZVRleHREb3dubG9hZCk7dmFyIHMsbyxjPWUubWV0YVRleHQmJmUubWV0YVRleHQudGl0bGU/ZS5tZXRhVGV4dC50aXRsZToiVW50aXRsZWQiO3JldHVybiBzPXQuZG93bmxvYWRMYWJlbCYmKG89dC5kb3dubG9hZExhYmVsKSYmIltvYmplY3QgRnVuY3Rpb25dIj09PXt9LnRvU3RyaW5nLmNhbGwobyk/dC5kb3dubG9hZExhYmVsKGUsbik6dC5kb3dubG9hZExhYmVsP3QuZG93bmxvYWRMYWJlbC5yZXBsYWNlKC8lVC8sYyk6J0Rvd25sb2FkIE1JREkgZm9yICInK2MrJyInLGM9Yy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLycvZywiIikucmVwbGFjZSgvXFcvZywiXyIpLnJlcGxhY2UoL19fL2csIl8iKSxpKz0nPGEgZG93bmxvYWQ9IicrKHQuZmlsZU5hbWU/dC5maWxlTmFtZTpjKyIubWlkaSIpKyciIGhyZWY9IicrcisnIj4nK3MrIjwvYT4iLHQucG9zdFRleHREb3dubG9hZCYmKGkrPXQucG9zdFRleHREb3dubG9hZCksaSsiPC9kaXY+In07ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9e307aWYodClmb3IodmFyIHMgaW4gdCl0Lmhhc093blByb3BlcnR5KHMpJiYocltzXT10W3NdKTtmdW5jdGlvbiBvKGUsdCxuKXt2YXIgcz1hKHQscik7c3dpdGNoKHIubWlkaU91dHB1dFR5cGUpe2Nhc2UiZW5jb2RlZCI6cmV0dXJuIHM7Y2FzZSJiaW5hcnkiOnZhciBvPXMucmVwbGFjZSgiZGF0YTphdWRpby9taWRpLCIsIiIpO289KG89by5yZXBsYWNlKC9NVGhkL2csIiU0ZCU1NCU2OCU2NCIpKS5yZXBsYWNlKC9NVHJrL2csIiU0ZCU1NCU3MiU2YiIpO2Zvcih2YXIgYz1uZXcgQXJyYXlCdWZmZXIoby5sZW5ndGgvMyksbD1uZXcgVWludDhBcnJheShjKSxoPTA7aDxvLmxlbmd0aC8zO2grKyl7dmFyIHU9MypoKzEsZD1wYXJzZUludChvLnN1YnN0cmluZyh1LHUrMiksMTYpO2xbaF09ZH1yZXR1cm4gbDtkZWZhdWx0OnJldHVybiBpKHQscixzLG4pfX1yZXR1cm4gci5nZW5lcmF0ZUlubGluZT0hMSwic3RyaW5nIj09dHlwZW9mIGU/bi5yZW5kZXJFbmdpbmUobywiKiIsZSxyKTpvKDAsZSwwKX19LDUzNDM6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPSdcbjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgY2xhc3M9ImFiY2pzLWxvYWRpbmctc3ZnIj5cbiAgICA8Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiBmaWxsPSJub25lIiBzdHJva2Utd2lkdGg9IjIwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTYwIDU1Ij48L2NpcmNsZT5cbjwvc3ZnPlxuJ30sMTIyNTpmdW5jdGlvbihlKXtlLmV4cG9ydHM9J1xuPHN2ZyB2ZXJzaW9uPSIxLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDcwMCA3MDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiPlxuXHQ8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDcwMCkgc2NhbGUoMC4xLC0wLjEpIiA+XG5cdDxwYXRoIGQ9Ik0zMTExIDY5ODEgYy0yMCAtMzcgLTkwIC01NSAtMzY0IC05NiAtMTIwIC0xOCAtMTkwIC0zMyAtMjQ0IC01NVxuXHQtNDIgLTE3IC0xMjQgLTQyIC0xODIgLTU2IC03OCAtMTggLTExOSAtMzQgLTE1NyAtNjAgLTI4IC0xOSAtODYgLTQ2IC0xMjhcblx0LTYwIC00MyAtMTMgLTEwNyAtNDIgLTE0NCAtNjQgLTM3IC0yMyAtODQgLTQ2IC0xMDYgLTUyIC0yMSAtNyAtNTYgLTI5IC03OVxuXHQtNTAgLTIyIC0yMiAtNjEgLTUwIC04NiAtNjMgLTI2IC0xMyAtNjcgLTQwIC05MSAtNjAgLTI0IC0yMCAtNjUgLTQ3IC05MCAtNjBcblx0LTI1IC0xMyAtNTMgLTMxIC02MSAtNDEgLTggLTkgLTMyIC0zMCAtNTQgLTQ2IC03NSAtNTQgLTQ4NiAtNDYwIC01MTIgLTUwN1xuXHQtMTUgLTI1IC00OCAtNjkgLTc1IC05OCAtMjYgLTI4IC00OCAtNTcgLTQ4IC02MyAwIC02IC0xOCAtMjkgLTM5IC01MyAtMjFcblx0LTIzIC01NiAtNzEgLTc3IC0xMDcgLTIwIC0zNiAtNTAgLTgwIC02NSAtOTcgLTE2IC0xOCAtMzMgLTUyIC00MCAtNzUgLTEyXG5cdC00NyAtNDcgLTExNSAtODQgLTE2NiAtMTMgLTE4IC0zMCAtNTYgLTM4IC04MyAtOCAtMjcgLTM0IC04MCAtNTYgLTExOCAtMzNcblx0LTUzIC00NiAtOTEgLTYyIC0xNjcgLTEyIC02MyAtMzQgLTEyNyAtNTkgLTE3OSAtNDIgLTg0IC02MCAtMTY2IC02MCAtMjcwIDBcblx0LTkwIDI2IC0xMjIgMTI1IC0xNTQgNTQgLTE3IDk2IC0xOSA0MzAgLTIwIDMwNSAtMSAzODEgMiA0MzAgMTQgODIgMjIgMTQwIDUxXG5cdDE1MyA3OCA2IDEyIDIyIDQ3IDM3IDc3IDE0IDMwIDM4IDc3IDU0IDEwMyAxNSAyNyAzNCA3MyA0MCAxMDMgNyAzMCAyOCA3OCA0OFxuXHQxMDcgMTkgMjggNDQgNzQgNTUgMTAxIDEwIDI4IDM0IDY3IDUzIDg3IDE4IDIwIDQ5IDYxIDY4IDkwIDE5IDMwIDQ0IDYzIDU3XG5cdDc0IDEzIDExIDM2IDQwIDUyIDY1IDU5IDk0IDIzMiAyNzAgMzA2IDMxMyAyMCAxMSA1NyAzNyA4MiA1OCAyNSAyMCA3MCA1MlxuXHQxMDAgNzIgMzAgMTkgNjYgNDcgNzkgNjEgMTMgMTQgNDkgMzUgODAgNDYgMzAgMTIgODAgMzcgMTExIDU2IDMxIDE5IDk1IDQ1XG5cdDE0MyA1OCA0OCAxMiAxMTAgMzcgMTM5IDU1IDYzIDQwIDEyNyA1NSAzMjMgNzYgODMgOSAyMDggMjggMjc5IDQxIDE1NiAyOVxuXHQxNjUgMjkgMzMwIDQgNDUzIC03MSA1MTQgLTg0IDYwNiAtMTMwIDMxIC0xNiA4MyAtMzYgMTE2IC00NSAzMiAtOSA4NCAtMzRcblx0MTE1IC01NiAzMSAtMjEgODIgLTQ4IDExMyAtNjAgMzIgLTExIDcyIC0zMyA4OSAtNDggMTggLTE2IDU5IC00NSA5MiAtNjUgMzNcblx0LTIxIDc0IC01MSA5MCAtNjYgMTcgLTE1IDQ5IC00MCA3MyAtNTQgNTIgLTMyIDY1IC02MSA1MCAtMTEzIC04IC0zMSAtNjEgLTkwXG5cdC0yNzcgLTMwOCAtMzAwIC0zMDMgLTM2MSAtMzgyIC0zNjkgLTQ4MSAtMiAtMjkgMCAtNjYgNiAtODEgMTMgLTQwIDg4IC0xMzhcblx0MTE1IC0xNTEgMTIgLTYgNTQgLTI2IDkyIC00NCBsNzAgLTMzIDk0NSAtMiBjNTIwIC0xIDk3NSAyIDEwMTIgNyA2NCA4IDE5MVxuXHQ1MCAyMzEgNzYgMTEgNyAzMyAzNCA1MCA2MCAyMiAzNCA0MiA1MSA2NSA1OCBsMzIgOSAwIDExMDEgMCAxMTAyIC0zMiA5IGMtMjFcblx0NyAtNDQgMjYgLTY0IDU1IC02MCA4NCAtNzcgOTcgLTE0MCAxMTAgLTQ0IDkgLTc2IDEwIC0xMjcgMiAtNTkgLTkgLTc3IC0xN1xuXHQtMTM0IC02MiAtMzcgLTI4IC0xNzIgLTE1NSAtMzAxIC0yODEgLTEyOSAtMTI3IC0yNDkgLTIzNyAtMjY3IC0yNDUgLTI1IC0xMFxuXHQtNDEgLTExIC03MSAtMiAtNTggMTUgLTExMiA0NSAtMTI0IDY5IC02IDExIC0zNSAzNSAtNjQgNTQgLTI4IDE4IC01OCA0MSAtNjZcblx0NTAgLTggOSAtNDEgMzUgLTc1IDU4IC0zMyAyMiAtNzcgNTYgLTk5IDc1IC0yMSAxOCAtNjQgNDYgLTk1IDYxIC0zMSAxNCAtNzNcblx0MzkgLTkzIDU1IC0yMCAxNSAtNzAgNDAgLTExMCA1NSAtNDAgMTUgLTk3IDQ0IC0xMjcgNjQgLTI5IDIxIC03OCA0NCAtMTA3IDUzXG5cdC0zMCA4IC03NyAzMSAtMTA1IDUxIC00MiAyOCAtNzMgMzkgLTE3MyA2MCAtNjggMTQgLTE1NCAzOSAtMTk2IDU4IC05NSA0M1xuXHQtMTMxIDUxIC0zNDMgNzYgLTIwOSAyNCAtMjQyIDMyIC0yNzkgNzAgbC0zMCAyOSAtMzI4IDAgYy0zMTIgMCAtMzMwIC0xIC0zMzlcblx0LTE5eiI+PC9wYXRoPlxuXHQ8cGF0aCBkPSJNMjU0IDI4NzUgYy04OSAtMTYgLTEwNyAtMjYgLTE0NSAtNzggLTMyIC00NCAtNjIgLTY2IC05MSAtNjcgLTE3IDBcblx0LTE4IC02MSAtMTggLTExNDAgbDAgLTExNDAgMjQgMCBjMTYgMCA0MSAtMTcgNzIgLTUwIDQwIC00MiA2MSAtNTUgMTE3IC03MlxuXHRsNjkgLTIxIDgyIDIzIGM0NCAxMiA5NiAzMCAxMTQgMzkgMTggOSAxNDggMTMyIDI5MCAyNzIgMTQxIDE0MSAyNjcgMjYxIDI3OVxuXHQyNjggNTEgMjYgODYgMTQgMTc2IC02MSAzMiAtMjYgNjIgLTQ4IDY2IC00OCA1IDAgMzYgLTI1IDcwIC01NSAzNCAtMzAgNzRcblx0LTYxIDg5IC02OSAxNSAtOCAzNyAtMjggNTAgLTQ1IDEyIC0xNyA1MCAtNDUgODQgLTYyIDM0IC0xNyA3OCAtNDQgOTggLTYwIDE5XG5cdC0xNiA2MSAtMzcgOTMgLTQ4IDMyIC0xMSA4MSAtMzcgMTA3IC01NiAyNyAtMjAgNzYgLTQ1IDEwOSAtNTYgMzMgLTEyIDc1IC0zMVxuXHQ5MyAtNDQgNjIgLTQ1IDkzIC01OCAxOTEgLTgyIDU0IC0xMiAxMzAgLTM3IDE2OCAtNTQgNjggLTI5IDE4MCAtNTggMjI2IC01OVxuXHQ2MiAwIDE4MyAtNjQgMTgzIC05NiAwIC0xMiA4OCAtMTQgNjM5IC0xNCBsNjM5IDAgMTIgMzAgYzE4IDQ0IDc2IDY2IDIzMyA4OVxuXHQ4OSAxNCAxNjAgMzAgMjAwIDQ3IDM0IDE1IDEwNiA0MiAxNTkgNjAgNTQgMTggMTEyIDQ0IDEzMCA1NyA0NyAzNSA4NSA1MiAxNDZcblx0NjcgMjkgNyA3NiAyOCAxMDUgNDggMjkgMjAgNzcgNDggMTA3IDYzIDMwIDE1IDY2IDM5IDgwIDU0IDE0IDE1IDUwIDQwIDgxIDU2XG5cdDMxIDE1IDc4IDQ2IDEwNCA2OSAyNiAyMiA2MSA0NiA3OSA1NCAxNyA3IDQzIDI2IDU2IDQyIDE0IDE2IDQxIDQxIDYwIDU2IDY0XG5cdDQ4IDM4MCAzNjIgNDA4IDQwNSAxNSAyMyA0MCA1MSA1NSA2MyAxNSAxMiAzNiAzOCA0NiA1OCAxMSAyMSAzNyA1NyA1OCA4MiAyMlxuXHQyNSA0OSA2MiA2MiA4MyAxMyAyMCAzOCA1NiA1NyA3OCAxOSAyMyA1MCA3NCA2OSAxMTMgMTkgMzkgNDYgODYgNTkgMTA0IDE0XG5cdDE4IDM0IDYyIDQ2IDk4IDEyIDM2IDMyIDc3IDQ1IDkyIDMxIDM4IDYwIDk3IDgwIDE2NyA5IDMzIDI2IDc2IDM3IDk1IDI5IDUwXG5cdDQ3IDEwMyA2OCAyMDYgMTAgNTIgMzIgMTE3IDUxIDE1NSAyOSA1NiAzMyA3NCAzNCAxNDAgMCA5NCAtMTAgMTA4IC0xMDEgMTM4XG5cdC02MSAyMCAtODMgMjEgLTQ2MyAyMSAtMjI2IDAgLTQyMSAtNCAtNDUxIC0xMCAtNjMgLTEyIC04NiAtMzAgLTExMCAtODUgLTEwXG5cdC0yMiAtMzMgLTYzIC01MiAtOTIgLTIxIC0zMSAtNDIgLTgwIC01MyAtMTIzIC0xMSAtNDQgLTMyIC05MyAtNTYgLTEyOCAtMjBcblx0LTMyIC00NyAtODMgLTU5IC0xMTUgLTEyIC0zMiAtMzcgLTc3IC01NiAtMTAwIC0xOSAtMjMgLTUwIC02NSAtNjkgLTk0IC0xOVxuXHQtMjkgLTQ0IC01NyAtNTQgLTYzIC0xMSAtNSAtMjkgLTI3IC00MiAtNDcgLTUyIC04NSAtMjM0IC0yNzcgLTMwMCAtMzE1IC0yNVxuXHQtMTUgLTUzIC0zOCAtNjIgLTUxIC05IC0xNCAtNDIgLTM5IC03NCAtNTcgLTMyIC0xOCAtNzUgLTQ4IC05NSAtNjYgLTIxIC0xOFxuXHQtNTkgLTQ0IC04NSAtNTggLTI2IC0xMyAtNzIgLTQwIC0xMDAgLTU5IC0zNSAtMjQgLTc4IC00MSAtMTI4IC01MiAtNDcgLTExXG5cdC05OSAtMzEgLTEzOSAtNTYgLTY5IC00MiAtOTQgLTQ5IC0zOTEgLTExMCAtMjQ1IC01MSAtNDI1IC02NiAtNTk1IC01MCAtMTY4XG5cdDE2IC0yMzAgMjcgLTMzMCA2MSAtNDcgMTYgLTEyMyAzNSAtMTcwIDQ0IC05OCAxNyAtMTIzIDI1IC0xNzIgNTggLTIwIDE0IC03MVxuXHQzNyAtMTE0IDUzIC00NCAxNSAtOTUgNDAgLTExNSA1NiAtMjAgMTYgLTcwIDQyIC0xMTAgNTkgLTQwIDE2IC04OCA0NSAtMTA4XG5cdDYzIC0yMCAxOSAtNTUgNDYgLTc4IDYxIC0yNCAxNCAtNDkgMzUgLTU1IDQ3IC03IDExIC0zNCAzMyAtNjAgNDkgLTUwIDMxIC02NVxuXHQ2MSAtNTMgMTAyIDQgMTMgMTMwIDE0NyAyODEgMjk4IDIzNiAyMzggMjc3IDI4MyAyOTkgMzM1IDE1IDMyIDM1IDcxIDQ2IDg2XG5cdDEyIDE4IDE5IDQ0IDE5IDc2IDAgNDIgLTggNjMgLTUzIDEzOCAtOTIgMTUxIDExIDEzOSAtMTIwNyAxNDEgLTc5OCAyIC0xMDMwXG5cdDAgLTEwODYgLTExeiI+PC9wYXRoPlxuXHQ8L2c+XG48L3N2Zz5cbid9LDUwNzU6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPSdcbjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjUgMjUiIGNsYXNzPSJhYmNqcy1wYXVzZS1zdmciPlxuICA8Zz5cbiAgICA8cmVjdCB3aWR0aD0iOC4yMyIgaGVpZ2h0PSIyNSIvPlxuICAgIDxyZWN0IHdpZHRoPSI4LjIzIiBoZWlnaHQ9IjI1IiB4PSIxNyIvPlxuICA8L2c+XG48L3N2Zz5cbid9LDk3MzM6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPSdcbjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjUgMjUiIGNsYXNzPSJhYmNqcy1wbGF5LXN2ZyI+XG4gICAgPGc+XG4gICAgPHBvbHlnb24gcG9pbnRzPSI0IDAgMjMgMTIuNSA0IDI1Ii8+XG4gICAgPC9nPlxuPC9zdmc+XG4nfSw2OTg3OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz0nXG48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI1IDI1Ij5cbiAgPGc+XG4gICAgPHBvbHlnb24gcG9pbnRzPSI1IDEyLjUgMjQgMCAyNCAyNSIvPlxuICAgIDxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjI1IiB4PSIwIiB5PSIwIi8+XG4gIDwvZz5cbjwvc3ZnPlxuJ30sODQ3MTpmdW5jdGlvbihlKXtlLmV4cG9ydHM9WyJhY291c3RpY19ncmFuZF9waWFubyIsImJyaWdodF9hY291c3RpY19waWFubyIsImVsZWN0cmljX2dyYW5kX3BpYW5vIiwiaG9ua3l0b25rX3BpYW5vIiwiZWxlY3RyaWNfcGlhbm9fMSIsImVsZWN0cmljX3BpYW5vXzIiLCJoYXJwc2ljaG9yZCIsImNsYXZpbmV0IiwiY2VsZXN0YSIsImdsb2NrZW5zcGllbCIsIm11c2ljX2JveCIsInZpYnJhcGhvbmUiLCJtYXJpbWJhIiwieHlsb3Bob25lIiwidHVidWxhcl9iZWxscyIsImR1bGNpbWVyIiwiZHJhd2Jhcl9vcmdhbiIsInBlcmN1c3NpdmVfb3JnYW4iLCJyb2NrX29yZ2FuIiwiY2h1cmNoX29yZ2FuIiwicmVlZF9vcmdhbiIsImFjY29yZGlvbiIsImhhcm1vbmljYSIsInRhbmdvX2FjY29yZGlvbiIsImFjb3VzdGljX2d1aXRhcl9ueWxvbiIsImFjb3VzdGljX2d1aXRhcl9zdGVlbCIsImVsZWN0cmljX2d1aXRhcl9qYXp6IiwiZWxlY3RyaWNfZ3VpdGFyX2NsZWFuIiwiZWxlY3RyaWNfZ3VpdGFyX211dGVkIiwib3ZlcmRyaXZlbl9ndWl0YXIiLCJkaXN0b3J0aW9uX2d1aXRhciIsImd1aXRhcl9oYXJtb25pY3MiLCJhY291c3RpY19iYXNzIiwiZWxlY3RyaWNfYmFzc19maW5nZXIiLCJlbGVjdHJpY19iYXNzX3BpY2siLCJmcmV0bGVzc19iYXNzIiwic2xhcF9iYXNzXzEiLCJzbGFwX2Jhc3NfMiIsInN5bnRoX2Jhc3NfMSIsInN5bnRoX2Jhc3NfMiIsInZpb2xpbiIsInZpb2xhIiwiY2VsbG8iLCJjb250cmFiYXNzIiwidHJlbW9sb19zdHJpbmdzIiwicGl6emljYXRvX3N0cmluZ3MiLCJvcmNoZXN0cmFsX2hhcnAiLCJ0aW1wYW5pIiwic3RyaW5nX2Vuc2VtYmxlXzEiLCJzdHJpbmdfZW5zZW1ibGVfMiIsInN5bnRoX3N0cmluZ3NfMSIsInN5bnRoX3N0cmluZ3NfMiIsImNob2lyX2FhaHMiLCJ2b2ljZV9vb2hzIiwic3ludGhfY2hvaXIiLCJvcmNoZXN0cmFfaGl0IiwidHJ1bXBldCIsInRyb21ib25lIiwidHViYSIsIm11dGVkX3RydW1wZXQiLCJmcmVuY2hfaG9ybiIsImJyYXNzX3NlY3Rpb24iLCJzeW50aF9icmFzc18xIiwic3ludGhfYnJhc3NfMiIsInNvcHJhbm9fc2F4IiwiYWx0b19zYXgiLCJ0ZW5vcl9zYXgiLCJiYXJpdG9uZV9zYXgiLCJvYm9lIiwiZW5nbGlzaF9ob3JuIiwiYmFzc29vbiIsImNsYXJpbmV0IiwicGljY29sbyIsImZsdXRlIiwicmVjb3JkZXIiLCJwYW5fZmx1dGUiLCJibG93bl9ib3R0bGUiLCJzaGFrdWhhY2hpIiwid2hpc3RsZSIsIm9jYXJpbmEiLCJsZWFkXzFfc3F1YXJlIiwibGVhZF8yX3Nhd3Rvb3RoIiwibGVhZF8zX2NhbGxpb3BlIiwibGVhZF80X2NoaWZmIiwibGVhZF81X2NoYXJhbmciLCJsZWFkXzZfdm9pY2UiLCJsZWFkXzdfZmlmdGhzIiwibGVhZF84X2Jhc3NfbGVhZCIsInBhZF8xX25ld19hZ2UiLCJwYWRfMl93YXJtIiwicGFkXzNfcG9seXN5bnRoIiwicGFkXzRfY2hvaXIiLCJwYWRfNV9ib3dlZCIsInBhZF82X21ldGFsbGljIiwicGFkXzdfaGFsbyIsInBhZF84X3N3ZWVwIiwiZnhfMV9yYWluIiwiZnhfMl9zb3VuZHRyYWNrIiwiZnhfM19jcnlzdGFsIiwiZnhfNF9hdG1vc3BoZXJlIiwiZnhfNV9icmlnaHRuZXNzIiwiZnhfNl9nb2JsaW5zIiwiZnhfN19lY2hvZXMiLCJmeF84X3NjaWZpIiwic2l0YXIiLCJiYW5qbyIsInNoYW1pc2VuIiwia290byIsImthbGltYmEiLCJiYWdwaXBlIiwiZmlkZGxlIiwic2hhbmFpIiwidGlua2xlX2JlbGwiLCJhZ29nbyIsInN0ZWVsX2RydW1zIiwid29vZGJsb2NrIiwidGFpa29fZHJ1bSIsIm1lbG9kaWNfdG9tIiwic3ludGhfZHJ1bSIsInJldmVyc2VfY3ltYmFsIiwiZ3VpdGFyX2ZyZXRfbm9pc2UiLCJicmVhdGhfbm9pc2UiLCJzZWFzaG9yZSIsImJpcmRfdHdlZXQiLCJ0ZWxlcGhvbmVfcmluZyIsImhlbGljb3B0ZXIiLCJhcHBsYXVzZSIsImd1bnNob3QiLCJwZXJjdXNzaW9uIl19LDIyMjg6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDc3MSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLGEpe25bdF18fChuW3RdPXt9KTt2YXIgaT1uW3RdO3JldHVybiBpW3JdfHwoaVtyXT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24obixpKXt2YXIgcz1uZXcgWE1MSHR0cFJlcXVlc3Qsbz1lK3QrIi1tcDMvIityKyIubXAzIjtzLm9wZW4oIkdFVCIsbywhMCkscy5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIixzLm9ubG9hZD1mdW5jdGlvbigpe2lmKDIwMD09PXMuc3RhdHVzKXt2YXIgZT1hLmRlY29kZUF1ZGlvRGF0YShzLnJlc3BvbnNlLChmdW5jdGlvbihlKXtuKHtpbnN0cnVtZW50OnQsbmFtZTpyLHN0YXR1czoibG9hZGVkIixhdWRpb0J1ZmZlcjplfSl9KSwoZnVuY3Rpb24oKXtpKEVycm9yKCJDYW4ndCBkZWNvZGUgc291bmQgYXQgIitvKSl9KSk7ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY2F0Y2gmJmUuY2F0Y2goaSl9ZWxzZSBpKEVycm9yKCJDYW4ndCBsb2FkIHNvdW5kIGF0ICIrbysiIHN0YXR1cz0iK3Muc3RhdHVzKSl9LHMub25lcnJvcj1mdW5jdGlvbigpe2koRXJyb3IoIkNhbid0IGxvYWQgc291bmQgYXQgIitvKSl9LHMuc2VuZCgpfSkpLmNhdGNoKChmdW5jdGlvbihlKXt0aHJvdyBjb25zb2xlLmVycm9yKCJEaWRuJ3QgbG9hZCBub3RlIix0LHIsIjoiLGUubWVzc2FnZSksZX0pKSksaVtyXX19LDI4NDI6ZnVuY3Rpb24oZSl7dmFyIHQ9e19fOi0yLF86LTEsIl8vIjotLjUsIj0iOjAsIiI6MCwiXi8iOi41LCJeIjoxLCJeXiI6Mn0scj1bIkMiLCItIiwiRCIsIi0iLCJFIiwiRiIsIi0iLCJHIiwiLSIsIkEiLCItIiwiQiIsImMiLCItIiwiZCIsIi0iLCJlIiwiZiIsIi0iLCJnIiwiLSIsImEiLCItIiwiYiJdO2UuZXhwb3J0cz17bm90ZVRvTWlkaTpmdW5jdGlvbihlKXt2YXIgbj1lLm1hdGNoKC8oW19eXC9dKikoW0FCQ0RFRkdhYmNkZWZnXSkoLCopKCcqKS8pO2lmKG4mJjU9PT1uLmxlbmd0aCl7dmFyIGE9dFtuWzFdXTtyZXR1cm4gNDgrci5pbmRleE9mKG5bMl0pK2ErMTIqKG5bNF0ubGVuZ3RoLW5bM10ubGVuZ3RoKX1yZXR1cm4gMH0sbWlkaVRvTm90ZTpmdW5jdGlvbihlKXtlPXBhcnNlSW50KGUsMTApO3ZhciB0PU1hdGguZmxvb3IoZS8xMiksbj1lJTEyLGE9cltuXTtpZigiLSI9PT1hJiYoYT0iXiIrcltuLTFdKSx0PjQpZm9yKGE9YS50b0xvd2VyQ2FzZSgpLHQtPTU7dD4wOylhKz0iJyIsdC0tO2Vsc2UgZm9yKDt0PDQ7KWErPSIsIix0Kys7cmV0dXJuIGF9fX0sNTIyOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz17MjE6IkEwIiwyMjoiQmIwIiwyMzoiQjAiLDI0OiJDMSIsMjU6IkRiMSIsMjY6IkQxIiwyNzoiRWIxIiwyODoiRTEiLDI5OiJGMSIsMzA6IkdiMSIsMzE6IkcxIiwzMjoiQWIxIiwzMzoiQTEiLDM0OiJCYjEiLDM1OiJCMSIsMzY6IkMyIiwzNzoiRGIyIiwzODoiRDIiLDM5OiJFYjIiLDQwOiJFMiIsNDE6IkYyIiw0MjoiR2IyIiw0MzoiRzIiLDQ0OiJBYjIiLDQ1OiJBMiIsNDY6IkJiMiIsNDc6IkIyIiw0ODoiQzMiLDQ5OiJEYjMiLDUwOiJEMyIsNTE6IkViMyIsNTI6IkUzIiw1MzoiRjMiLDU0OiJHYjMiLDU1OiJHMyIsNTY6IkFiMyIsNTc6IkEzIiw1ODoiQmIzIiw1OToiQjMiLDYwOiJDNCIsNjE6IkRiNCIsNjI6IkQ0Iiw2MzoiRWI0Iiw2NDoiRTQiLDY1OiJGNCIsNjY6IkdiNCIsNjc6Ikc0Iiw2ODoiQWI0Iiw2OToiQTQiLDcwOiJCYjQiLDcxOiJCNCIsNzI6IkM1Iiw3MzoiRGI1Iiw3NDoiRDUiLDc1OiJFYjUiLDc2OiJFNSIsNzc6IkY1Iiw3ODoiR2I1Iiw3OToiRzUiLDgwOiJBYjUiLDgxOiJBNSIsODI6IkJiNSIsODM6IkI1Iiw4NDoiQzYiLDg1OiJEYjYiLDg2OiJENiIsODc6IkViNiIsODg6IkU2Iiw4OToiRjYiLDkwOiJHYjYiLDkxOiJHNiIsOTI6IkFiNiIsOTM6IkE2Iiw5NDoiQmI2Iiw5NToiQjYiLDk2OiJDNyIsOTc6IkRiNyIsOTg6IkQ3Iiw5OToiRWI3IiwxMDA6IkU3IiwxMDE6IkY3IiwxMDI6IkdiNyIsMTAzOiJHNyIsMTA0OiJBYjciLDEwNToiQTciLDEwNjoiQmI3IiwxMDc6IkI3IiwxMDg6IkM4IiwxMDk6IkRiOCIsMTEwOiJEOCIsMTExOiJFYjgiLDExMjoiRTgiLDExMzoiRjgiLDExNDoiR2I4IiwxMTU6Ikc4IiwxMTY6IkFiOCIsMTE3OiJBOCIsMTE4OiJCYjgiLDExOToiQjgiLDEyMDoiQzkiLDEyMToiRGI5In19LDUwNTg6ZnVuY3Rpb24oZSl7dmFyIHQ9e2YwOiJfQyIsbjA6Ij1DIixzMDoiXkMiLHgwOiJDIixmMToiX0QiLG4xOiI9RCIsczE6Il5EIix4MToiRCIsZjI6Il9FIixuMjoiPUUiLHMyOiJeRSIseDI6IkUiLGYzOiJfRiIsbjM6Ij1GIixzMzoiXkYiLHgzOiJGIixmNDoiX0ciLG40OiI9RyIsczQ6Il5HIix4NDoiRyIsZjU6Il9BIixuNToiPUEiLHM1OiJeQSIseDU6IkEiLGY2OiJfQiIsbjY6Ij1CIixzNjoiXkIiLHg2OiJCIixmNzoiX2MiLG43OiI9YyIsczc6Il5jIix4NzoiYyIsZjg6Il9kIixuODoiPWQiLHM4OiJeZCIseDg6ImQiLGY5OiJfZSIsbjk6Ij1lIixzOToiXmUiLHg5OiJlIixmMTA6Il9mIixuMTA6Ij1mIixzMTA6Il5mIix4MTA6ImYiLGYxMToiX2ciLG4xMToiPWciLHMxMToiXmciLHgxMToiZyIsZjEyOiJfYSIsbjEyOiI9YSIsczEyOiJeYSIseDEyOiJhIixmMTM6Il9iIixuMTM6Ij1iIixzMTM6Il5iIix4MTM6ImIiLGYxNDoiX2MnIixuMTQ6Ij1jJyIsczE0OiJeYyciLHgxNDoiYyciLGYxNToiX2QnIixuMTU6Ij1kJyIsczE1OiJeZCciLHgxNToiZCciLGYxNjoiX2UnIixuMTY6Ij1lJyIsczE2OiJeZSciLHgxNjoiZScifTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHI9KGUuYWNjaWRlbnRhbD9lLmFjY2lkZW50YWxbMF06IngiKStlLnZlcnRpY2FsUG9zO3JldHVybiB0W3JdfX0sNDU4NjpmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzcxKSxhPXIoNTIyKSxpPXIoMjcxMCkscz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTA7bjwyO24rKylmb3IodmFyIGE9dC5nZXRDaGFubmVsRGF0YShuKSxpPWUuZ2V0Q2hhbm5lbERhdGEobikscz0wO3M8YS5sZW5ndGg7cysrKWlbcytyXSs9YVtzXX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG8sYyxsLGgsdSxkKXt2YXIgZj13aW5kb3cuT2ZmbGluZUF1ZGlvQ29udGV4dHx8d2luZG93LndlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQscD1yLmxlbipyLnRlbXBvTXVsdGlwbGllcjtsJiYocCs9bC8xZTMpLChwLT11KTwwJiYocD0uMDA1KTt2YXIgbT1uZXcgZigyLE1hdGguZmxvb3IoKHAraCkqdCksdCksZz1hW3IucGl0Y2hdO2lmKCFuW3IuaW5zdHJ1bWVudF0pcmV0dXJuIGQmJmQoInBsYWNlTm90ZSBza2lwcGVkIChpbnN0cnVtZW50IGVtcHR5KTogIityLmluc3RydW1lbnQrIjoiK2cpLFByb21pc2UucmVzb2x2ZSgpO3ZhciB2PW5bci5pbnN0cnVtZW50XVtnXTtyZXR1cm4gdj92LnRoZW4oKGZ1bmN0aW9uKG4pe3ZhciBhPW0uY3JlYXRlQnVmZmVyU291cmNlKCk7YS5idWZmZXI9bi5hdWRpb0J1ZmZlcjt2YXIgdSxmPXIudm9sdW1lLzk2KmM7cmV0dXJuIGEuZ2Fpbk5vZGU9bS5jcmVhdGVHYWluKCksci5wYW4mJm0uY3JlYXRlU3RlcmVvUGFubmVyJiYoYS5wYW5Ob2RlPW0uY3JlYXRlU3RlcmVvUGFubmVyKCksYS5wYW5Ob2RlLnBhbi5zZXRWYWx1ZUF0VGltZShyLnBhbiwwKSksYS5nYWluTm9kZS5nYWluLnZhbHVlPWYsYS5nYWluTm9kZS5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKGEuZ2Fpbk5vZGUuZ2Fpbi52YWx1ZSxwKSxhLmdhaW5Ob2RlLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoMCxwK2gpLHIuY2VudHMmJihhLnBsYXliYWNrUmF0ZS52YWx1ZT1pKHIuY2VudHMpKSxhLnBhbk5vZGU/KGEucGFuTm9kZS5jb25uZWN0KG0uZGVzdGluYXRpb24pLGEuZ2Fpbk5vZGUuY29ubmVjdChhLnBhbk5vZGUpKTphLmdhaW5Ob2RlLmNvbm5lY3QobS5kZXN0aW5hdGlvbiksYS5jb25uZWN0KGEuZ2Fpbk5vZGUpLGEuc3RhcnQoMCksYS5ub3RlT2ZmP2Eubm90ZU9mZihwK2gpOmEuc3RvcChwK2gpLG0ub25jb21wbGV0ZT1mdW5jdGlvbihuKXtpZihuLnJlbmRlcmVkQnVmZmVyJiZuLnJlbmRlcmVkQnVmZmVyLmdldENoYW5uZWxEYXRhKWZvcih2YXIgYT0wO2E8by5sZW5ndGg7YSsrKXt2YXIgaT1vW2FdKnIudGVtcG9NdWx0aXBsaWVyO2wmJihpLT1sLzFlMyksaTwwJiYoaT0wKSxpPU1hdGguZmxvb3IoaSp0KSxzKGUsbi5yZW5kZXJlZEJ1ZmZlcixpKX1kJiZkKCJwbGFjZU5vdGU6ICIrci5pbnN0cnVtZW50KyI6IitnKSx1KCl9LG0uc3RhcnRSZW5kZXJpbmcoKSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dT1lfSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gZCYmZCgicGxhY2VOb3RlIGNhdGNoOiAiK2UubWVzc2FnZSksUHJvbWlzZS5yZWplY3QoZSl9KSk6KGQmJmQoInBsYWNlTm90ZSBza2lwcGVkOiAiK3IuaW5zdHJ1bWVudCsiOiIrZyksUHJvbWlzZS5yZXNvbHZlKCkpfX0sNDcxODpmdW5jdGlvbihlLHQscil7dmFyIG49cigyMDI5KSxhPXIoNTU5NCksaT1yKDg3MDIpO2Z1bmN0aW9uIHMoZSx0LHIsbil7dmFyIGk9bmV3IGE7cmV0dXJuIGkuaW5pdCh7c2VxdWVuY2U6ZSxtaWxsaXNlY29uZHNQZXJNZWFzdXJlOnQsb3B0aW9uczp7c291bmRGb250VXJsOnJ9LGRlYnVnQ2FsbGJhY2s6bn0pLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGkucHJpbWUoKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBpLnN0YXJ0KCksUHJvbWlzZS5yZXNvbHZlKCl9KSl9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLGEsbyl7Zm9yKHZhciBjPW5ldyBuLGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGg9ZVtsXSx1PWMuYWRkVHJhY2soKTtpZihjLnNldEluc3RydW1lbnQodSxoLmluc3RydW1lbnQpLDA9PT1sJiZ0KWZvcih2YXIgZD0wO2Q8dC5sZW5ndGg7ZCsrKXt2YXIgZj10W2RdO2MuYXBwZW5kTm90ZSh1LGYucGl0Y2gsMS82NCxmLnZvbHVtZSxmLmNlbnRzKX1jLmFwcGVuZE5vdGUodSxoLnBpdGNoLGguZHVyYXRpb24saC52b2x1bWUsaC5jZW50cyl9dmFyIHA9aSgpO3JldHVybiJzdXNwZW5kZWQiPT09cC5zdGF0ZT9wLnJlc3VtZSgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHMoYyxyLGEsbyl9KSk6cyhjLHIsYSxvKX19LDUyODE6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUpd2luZG93LmFiY2pzQXVkaW9Db250ZXh0PWU7ZWxzZSBpZighd2luZG93LmFiY2pzQXVkaW9Db250ZXh0KXt2YXIgdD13aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0O2lmKCF0KXJldHVybiExO3dpbmRvdy5hYmNqc0F1ZGlvQ29udGV4dD1uZXcgdH1yZXR1cm4ic3VzcGVuZGVkIiE9PXdpbmRvdy5hYmNqc0F1ZGlvQ29udGV4dC5zdGF0ZX19LDQ3NzE6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPXt9fSw1MDQ5OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDg3MDIpO2UuZXhwb3J0cz1mdW5jdGlvbigpe2lmKCF3aW5kb3cuUHJvbWlzZSlyZXR1cm4hMTtpZighKHdpbmRvdy5BdWRpb0NvbnRleHR8fHdpbmRvdy53ZWJraXRBdWRpb0NvbnRleHR8fG5hdmlnYXRvci5tb3pBdWRpb0NvbnRleHR8fG5hdmlnYXRvci5tc0F1ZGlvQ29udGV4dCkpcmV0dXJuITE7dmFyIGU9bigpO3JldHVybiBlP3ZvaWQgMCE9PWUucmVzdW1lOnZvaWQgMH19LDM0NTA6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjMxMyksYT1yKDU1OTQpLGk9cig1NjgxKSxzPXIoODcwMik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLndhcnA9MTAwLGUuY3Vyc29yQ29udHJvbD1udWxsLGUudmlzdWFsT2JqPW51bGwsZS50aW1lcj1udWxsLGUubWlkaUJ1ZmZlcj1udWxsLGUub3B0aW9ucz1udWxsLGUuY3VycmVudFRlbXBvPW51bGwsZS5jb250cm9sPW51bGwsZS5pc0xvb3Bpbmc9ITEsZS5pc1N0YXJ0ZWQ9ITEsZS5pc0xvYWRlZD0hMSxlLmlzTG9hZGluZz0hMSxlLmxvYWQ9ZnVuY3Rpb24odCxyLGEpe2F8fChhPXt9KSx2b2lkIDA9PT1hLmRpc3BsYXlQbGF5JiYoYS5kaXNwbGF5UGxheT0hMCksdm9pZCAwPT09YS5kaXNwbGF5UHJvZ3Jlc3MmJihhLmRpc3BsYXlQcm9ncmVzcz0hMCksZS5jb250cm9sPW5ldyBuKHQse2xvb3BIYW5kbGVyOmEuZGlzcGxheUxvb3A/ZS50b2dnbGVMb29wOnZvaWQgMCxyZXN0YXJ0SGFuZGxlcjphLmRpc3BsYXlSZXN0YXJ0P2UucmVzdGFydDp2b2lkIDAscGxheVByb21pc2VIYW5kbGVyOmEuZGlzcGxheVBsYXk/ZS5wbGF5OnZvaWQgMCxwcm9ncmVzc0hhbmRsZXI6YS5kaXNwbGF5UHJvZ3Jlc3M/ZS5yYW5kb21BY2Nlc3M6dm9pZCAwLHdhcnBIYW5kbGVyOmEuZGlzcGxheVdhcnA/ZS5vbldhcnA6dm9pZCAwLGFmdGVyUmVzdW1lOmUuaW5pdH0pLGUuY3Vyc29yQ29udHJvbD1yLGUuZGlzYWJsZSghMCl9LGUuZGlzYWJsZT1mdW5jdGlvbih0KXtlLmNvbnRyb2wmJmUuY29udHJvbC5kaXNhYmxlKHQpfSxlLnNldFR1bmU9ZnVuY3Rpb24odCxyLG4pe3JldHVybiBlLnZpc3VhbE9iaj10LGUuZGlzYWJsZSghMSksZS5vcHRpb25zPW58fHt9LGUuY29udHJvbCYmKGUucGF1c2UoKSxlLnNldFByb2dyZXNzKDAsMSksZS5jb250cm9sLnJlc2V0QWxsKCksZS5yZXN0YXJ0KCksZS5pc1N0YXJ0ZWQ9ITEpLGUuaXNMb29waW5nPSExLHI/ZS5nbygpOlByb21pc2UucmVzb2x2ZSh7c3RhdHVzOiJuby1hdWRpby1jb250ZXh0In0pfSxlLmdvPWZ1bmN0aW9uKCl7ZS5pc0xvYWRpbmc9ITA7dmFyIHQscj0xMDAqZS52aXN1YWxPYmoubWlsbGlzZWNvbmRzUGVyTWVhc3VyZSgpL2Uud2FycDtyZXR1cm4gZS5jdXJyZW50VGVtcG89TWF0aC5yb3VuZChlLnZpc3VhbE9iai5nZXRCZWF0c1Blck1lYXN1cmUoKS9yKjZlNCksZS5jb250cm9sJiZlLmNvbnRyb2wuc2V0VGVtcG8oZS5jdXJyZW50VGVtcG8pLGUucGVyY2VudD0wLGUubWlkaUJ1ZmZlcnx8KGUubWlkaUJ1ZmZlcj1uZXcgYSkscygpLnJlc3VtZSgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBlLm1pZGlCdWZmZXIuaW5pdCh7dmlzdWFsT2JqOmUudmlzdWFsT2JqLG9wdGlvbnM6ZS5vcHRpb25zLG1pbGxpc2Vjb25kc1Blck1lYXN1cmU6cn0pfSkpLnRoZW4oKGZ1bmN0aW9uKHIpe3JldHVybiB0PXIsZS5taWRpQnVmZmVyLnByaW1lKCl9KSkudGhlbigoZnVuY3Rpb24oKXt2YXIgcj0xNjtyZXR1cm4gZS5jdXJzb3JDb250cm9sJiZ2b2lkIDAhPT1lLmN1cnNvckNvbnRyb2wuYmVhdFN1YmRpdmlzaW9ucyYmcGFyc2VJbnQoZS5jdXJzb3JDb250cm9sLmJlYXRTdWJkaXZpc2lvbnMsMTApPj0xJiZwYXJzZUludChlLmN1cnNvckNvbnRyb2wuYmVhdFN1YmRpdmlzaW9ucywxMCk8PTY0JiYocj1wYXJzZUludChlLmN1cnNvckNvbnRyb2wuYmVhdFN1YmRpdmlzaW9ucywxMCkpLGUudGltZXI9bmV3IGkoZS52aXN1YWxPYmose2JlYXRDYWxsYmFjazplLmJlYXRDYWxsYmFjayxldmVudENhbGxiYWNrOmUuZXZlbnRDYWxsYmFjayxsaW5lRW5kQ2FsbGJhY2s6ZS5saW5lRW5kQ2FsbGJhY2sscXBtOmUuY3VycmVudFRlbXBvLGV4dHJhTWVhc3VyZXNBdEJlZ2lubmluZzplLmN1cnNvckNvbnRyb2w/ZS5jdXJzb3JDb250cm9sLmV4dHJhTWVhc3VyZXNBdEJlZ2lubmluZzp2b2lkIDAsbGluZUVuZEFudGljaXBhdGlvbjplLmN1cnNvckNvbnRyb2w/ZS5jdXJzb3JDb250cm9sLmxpbmVFbmRBbnRpY2lwYXRpb246MCxiZWF0U3ViZGl2aXNpb25zOnJ9KSxlLmN1cnNvckNvbnRyb2wmJmUuY3Vyc29yQ29udHJvbC5vblJlYWR5JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jdXJzb3JDb250cm9sLm9uUmVhZHkmJmUuY3Vyc29yQ29udHJvbC5vblJlYWR5KGUpLGUuaXNMb2FkZWQ9ITAsZS5pc0xvYWRpbmc9ITEsUHJvbWlzZS5yZXNvbHZlKHtzdGF0dXM6ImNyZWF0ZWQiLG5vdGVzU3RhdHVzOnR9KX0pKX0sZS5kZXN0cm95PWZ1bmN0aW9uKCl7ZS50aW1lciYmKGUudGltZXIucmVzZXQoKSxlLnRpbWVyLnN0b3AoKSxlLnRpbWVyPW51bGwpLGUubWlkaUJ1ZmZlciYmKGUubWlkaUJ1ZmZlci5zdG9wKCksZS5taWRpQnVmZmVyPW51bGwpLGUuc2V0UHJvZ3Jlc3MoMCwxKSxlLmNvbnRyb2wmJmUuY29udHJvbC5yZXNldEFsbCgpfSxlLnBsYXk9ZnVuY3Rpb24oKXtyZXR1cm4gZS5ydW5XaGVuUmVhZHkoZS5fcGxheSx2b2lkIDApfSxlLnJ1bldoZW5SZWFkeT1mdW5jdGlvbih0LHIpe3JldHVybiBlLnZpc3VhbE9iaj9lLmlzTG9hZGluZz8obj01MDAsbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoZSxuKX0pKSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gZS5pc0xvYWRpbmc/ZS5ydW5XaGVuUmVhZHkodCxyKTp0KHIpfSkpOmUuaXNMb2FkZWQ/dChyKTplLmdvKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdChyKX0pKTpQcm9taXNlLnJlc29sdmUoe3N0YXR1czoibG9hZGluZyJ9KTt2YXIgbn0sZS5fcGxheT1mdW5jdGlvbigpe3JldHVybiBzKCkucmVzdW1lKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gZS5pc1N0YXJ0ZWQ9IWUuaXNTdGFydGVkLGUuaXNTdGFydGVkPyhlLmN1cnNvckNvbnRyb2wmJmUuY3Vyc29yQ29udHJvbC5vblN0YXJ0JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jdXJzb3JDb250cm9sLm9uU3RhcnQmJmUuY3Vyc29yQ29udHJvbC5vblN0YXJ0KCksZS5taWRpQnVmZmVyLnN0YXJ0KCksZS50aW1lci5zdGFydChlLnBlcmNlbnQpLGUuY29udHJvbCYmZS5jb250cm9sLnB1c2hQbGF5KCEwKSk6ZS5wYXVzZSgpLFByb21pc2UucmVzb2x2ZSh7c3RhdHVzOiJvayJ9KX0pKX0sZS5wYXVzZT1mdW5jdGlvbigpe2UudGltZXImJihlLnRpbWVyLnBhdXNlKCksZS5taWRpQnVmZmVyLnBhdXNlKCksZS5jb250cm9sJiZlLmNvbnRyb2wucHVzaFBsYXkoITEpKX0sZS50b2dnbGVMb29wPWZ1bmN0aW9uKCl7ZS5pc0xvb3Bpbmc9IWUuaXNMb29waW5nLGUuY29udHJvbCYmZS5jb250cm9sLnB1c2hMb29wKGUuaXNMb29waW5nKX0sZS5yZXN0YXJ0PWZ1bmN0aW9uKCl7ZS50aW1lciYmKGUudGltZXIuc2V0UHJvZ3Jlc3MoMCksZS5taWRpQnVmZmVyLnNlZWsoMCkpfSxlLnJhbmRvbUFjY2Vzcz1mdW5jdGlvbih0KXtyZXR1cm4gZS5ydW5XaGVuUmVhZHkoZS5fcmFuZG9tQWNjZXNzLHQpfSxlLl9yYW5kb21BY2Nlc3M9ZnVuY3Rpb24odCl7dmFyIHI9dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhYmNqcy1taWRpLXByb2dyZXNzLWluZGljYXRvciIpP3QudGFyZ2V0LnBhcmVudE5vZGU6dC50YXJnZXQsbj0odC54LXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkvci5vZmZzZXRXaWR0aDtyZXR1cm4gbjwwJiYobj0wKSxuPjEmJihuPTEpLGUuc2VlayhuKSxQcm9taXNlLnJlc29sdmUoe3N0YXR1czoib2sifSl9LGUuc2Vlaz1mdW5jdGlvbih0LHIpe2UudGltZXImJmUubWlkaUJ1ZmZlciYmKGUudGltZXIuc2V0UHJvZ3Jlc3ModCxyKSxlLm1pZGlCdWZmZXIuc2Vlayh0LHIpKX0sZS5zZXRXYXJwPWZ1bmN0aW9uKHQpe2lmKHBhcnNlSW50KHQsMTApPjApe2Uud2FycD1wYXJzZUludCh0LDEwKTt2YXIgcj1lLmlzU3RhcnRlZCxuPWUucGVyY2VudDtyZXR1cm4gZS5kZXN0cm95KCksZS5pc1N0YXJ0ZWQ9ITEsZS5nbygpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGUuc2V0UHJvZ3Jlc3MobiwxZTMqZS5taWRpQnVmZmVyLmR1cmF0aW9uKSxlLmNvbnRyb2wmJmUuY29udHJvbC5zZXRXYXJwKGUuY3VycmVudFRlbXBvLGUud2FycCkscj9lLnBsYXkoKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBlLnNlZWsobiksUHJvbWlzZS5yZXNvbHZlKCl9KSk6KGUuc2VlayhuKSxQcm9taXNlLnJlc29sdmUoKSl9KSl9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSxlLm9uV2FycD1mdW5jdGlvbih0KXt2YXIgcj10LnRhcmdldC52YWx1ZTtyZXR1cm4gZS5zZXRXYXJwKHIpfSxlLnNldFByb2dyZXNzPWZ1bmN0aW9uKHQscil7ZS5wZXJjZW50PXQsZS5jb250cm9sJiZlLmNvbnRyb2wuc2V0UHJvZ3Jlc3ModCxyKX0sZS5maW5pc2hlZD1mdW5jdGlvbigpe2lmKGUudGltZXIucmVzZXQoKSxlLmlzTG9vcGluZylyZXR1cm4gZS50aW1lci5zdGFydCgwKSxlLm1pZGlCdWZmZXIuZmluaXNoZWQoKSxlLm1pZGlCdWZmZXIuc3RhcnQoKSwiY29udGludWUiO2UudGltZXIuc3RvcCgpLGUuaXNTdGFydGVkJiYoZS5jb250cm9sJiZlLmNvbnRyb2wucHVzaFBsYXkoITEpLGUuaXNTdGFydGVkPSExLGUubWlkaUJ1ZmZlci5maW5pc2hlZCgpLGUuY3Vyc29yQ29udHJvbCYmZS5jdXJzb3JDb250cm9sLm9uRmluaXNoZWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmN1cnNvckNvbnRyb2wub25GaW5pc2hlZCYmZS5jdXJzb3JDb250cm9sLm9uRmluaXNoZWQoKSxlLnNldFByb2dyZXNzKDAsMSkpfSxlLmJlYXRDYWxsYmFjaz1mdW5jdGlvbih0LHIsbixhKXt2YXIgaT10L3I7ZS5zZXRQcm9ncmVzcyhpLG4pLGUuY3Vyc29yQ29udHJvbCYmZS5jdXJzb3JDb250cm9sLm9uQmVhdCYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY3Vyc29yQ29udHJvbC5vbkJlYXQmJmUuY3Vyc29yQ29udHJvbC5vbkJlYXQodCxyLG4sYSl9LGUuZXZlbnRDYWxsYmFjaz1mdW5jdGlvbih0KXtpZighdClyZXR1cm4gZS5maW5pc2hlZCgpO2UuY3Vyc29yQ29udHJvbCYmZS5jdXJzb3JDb250cm9sLm9uRXZlbnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmN1cnNvckNvbnRyb2wub25FdmVudCYmZS5jdXJzb3JDb250cm9sLm9uRXZlbnQodCl9LGUubGluZUVuZENhbGxiYWNrPWZ1bmN0aW9uKHQscil7ZS5jdXJzb3JDb250cm9sJiZlLmN1cnNvckNvbnRyb2wub25MaW5lRW5kJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jdXJzb3JDb250cm9sLm9uTGluZUVuZCYmZS5jdXJzb3JDb250cm9sLm9uTGluZUVuZCh0LHIpfSxlLmdldFVybD1mdW5jdGlvbigpe3JldHVybiBlLm1pZGlCdWZmZXIuZG93bmxvYWQoKX0sZS5kb3dubG9hZD1mdW5jdGlvbih0KXt2YXIgcj1lLmdldFVybCgpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobiksbi5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxuLmhyZWY9cixuLmRvd25sb2FkPXR8fCJvdXRwdXQud2F2IixuLmNsaWNrKCksd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwociksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChuKX19fSwyMDI5OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS50cmFja3M9W10sZS50b3RhbER1cmF0aW9uPTAsZS5jdXJyZW50SW5zdHJ1bWVudD1bXSxlLnN0YXJ0cz1bXSxlLmFkZFRyYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIGUudHJhY2tzLnB1c2goW10pLGUuY3VycmVudEluc3RydW1lbnQucHVzaCgwKSxlLnN0YXJ0cy5wdXNoKDApLGUudHJhY2tzLmxlbmd0aC0xfSxlLnNldEluc3RydW1lbnQ9ZnVuY3Rpb24odCxyKXtlLnRyYWNrc1t0XS5wdXNoKHtjaGFubmVsOjAsY21kOiJwcm9ncmFtIixpbnN0cnVtZW50OnJ9KSxlLmN1cnJlbnRJbnN0cnVtZW50W3RdPXJ9LGUuYXBwZW5kTm90ZT1mdW5jdGlvbih0LHIsbixhLGkpe3ZhciBzPXtjbWQ6Im5vdGUiLGR1cmF0aW9uOm4sZ2FwOjAsaW5zdHJ1bWVudDplLmN1cnJlbnRJbnN0cnVtZW50W3RdLHBpdGNoOnIsc3RhcnQ6ZS5zdGFydHNbdF0sdm9sdW1lOmF9O2kmJihzLmNlbnRzPWkpLGUudHJhY2tzW3RdLnB1c2gocyksZS5zdGFydHNbdF0rPW4sZS50b3RhbER1cmF0aW9uPU1hdGgubWF4KGUudG90YWxEdXJhdGlvbixlLnN0YXJ0c1t0XSl9fX0sMjQyNjpmdW5jdGlvbihlLHQscil7dmFyIG49cig2MDc0KSxhPXt2aW9saW46e25hbWU6IlN0cmluZ1RhYiIsZGVmYXVsdFR1bmluZzpbIkcsIiwiRCIsIkEiLCJlIl0saXNUYWJCaWc6ITEsdGFiU3ltYm9sT2Zmc2V0OjB9LGZpZGRsZTp7bmFtZToiU3RyaW5nVGFiIixkZWZhdWx0VHVuaW5nOlsiRywiLCJEIiwiQSIsImUiXSxpc1RhYkJpZzohMSx0YWJTeW1ib2xPZmZzZXQ6MH0sbWFuZG9saW46e25hbWU6IlN0cmluZ1RhYiIsZGVmYXVsdFR1bmluZzpbIkcsIiwiRCIsIkEiLCJlIl0saXNUYWJCaWc6ITEsdGFiU3ltYm9sT2Zmc2V0OjB9LGd1aXRhcjp7bmFtZToiU3RyaW5nVGFiIixkZWZhdWx0VHVuaW5nOlsiRSwiLCJBLCIsIkQiLCJHIiwiQiIsImUiXSxpc1RhYkJpZzohMCx0YWJTeW1ib2xPZmZzZXQ6MH0sZml2ZVN0cmluZzp7bmFtZToiU3RyaW5nVGFiIixkZWZhdWx0VHVuaW5nOlsiQywiLCJHLCIsIkQiLCJBIiwiZSJdLGlzVGFiQmlnOiExLHRhYlN5bWJvbE9mZnNldDotLjk1fX0saT17aW5pdGVkOiExLHBsdWdpbnM6e30scmVnaXN0ZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uYW1lLHI9ZS50YWJsYXR1cmU7dGhpcy5wbHVnaW5zW3RdPXJ9LHNldEVycm9yOmZ1bmN0aW9uKGUsdCl7ZS53YXJuaW5ncz9lLndhcm5pbmcucHVzaCh0KTplLndhcm5pbmdzPVt0XX0scHJlcGFyZVBsdWdpbnM6ZnVuY3Rpb24oZSx0LHIpe3RoaXMuaW5pdGVkfHwodGhpcy5yZWdpc3RlcihuZXcgbiksdGhpcy5pbml0ZWQ9ITApO3ZhciBpPW51bGw7aWYoci50YWJsYXR1cmUpe3ZhciBzPXIudGFibGF0dXJlO2k9W107Zm9yKHZhciBvPTA7bzxzLmxlbmd0aDtvKyspe3ZhciBjPXNbb10sbD1jLmluc3RydW1lbnQ7aWYobnVsbD09bClyZXR1cm4gdGhpcy5zZXRFcnJvcihlLCJ0YWJsYXR1cmUgJ2luc3RydW1lbnQnIGlzIG1pc3NpbmciKSxpO3ZhciBoPWFbbF0sdT1udWxsO2lmKGgmJih1PXRoaXMucGx1Z2luc1toLm5hbWVdKSx1KXswIT1yLnZpc3VhbFRyYW5zcG9zZSYmKGMudmlzdWFsVHJhbnNwb3NlPXIudmlzdWFsVHJhbnNwb3NlKSxjLmFiY1NyYz1yLnRhYmxhdHVyZS5hYmNTcmM7dmFyIGQ9e2NsYXNzejp1LHR1bmVOdW1iZXI6dCxwYXJhbXM6YyxpbnN0YW5jZTpudWxsLHRhYlR5cGU6aH07aS5wdXNoKGQpfWVsc2V7aWYoIiIhPT1sKXJldHVybiB0aGlzLnNldEVycm9yKGUsIlVuZGVmaW5lZCB0YWJsYXR1cmUgcGx1Z2luOiAiK2wpLGk7aS5wdXNoKG51bGwpfX19cmV0dXJuIGl9LGxheW91dFRhYmxhdHVyZXM6ZnVuY3Rpb24oZSx0KXt2YXIgcj10LnRhYmxhdHVyZXMsbj0wO2lmKHImJnIubGVuZ3RoPjApZm9yKHZhciBhPXIubGVuZ3RoLGk9MDtpPGE7KytpKXJbaV0mJnJbaV0ucGFyYW1zLmZpcnN0U3RhZmZPbmx5JiYocltpXS5wYXJhbXMuc3VwcHJlc3M9ITEpO2Zvcih2YXIgcz0wO3M8dC5saW5lcy5sZW5ndGg7cysrKXt2YXIgbz10LmxpbmVzW3NdO2lmKG8uc3RhZmYmJm4rKyxuPjEmJnImJnIubGVuZ3RoPjApZm9yKGE9ci5sZW5ndGgsaT0wO2k8YTsrK2kpcltpXS5wYXJhbXMuZmlyc3RTdGFmZk9ubHkmJihyW2ldLnBhcmFtcy5zdXBwcmVzcz0hMCk7dmFyIGM9by5zdGFmZjtpZihjKWZvcih2YXIgbD1jLmxlbmd0aCxoPTA7aDxjLmxlbmd0aDtoKyspaWYocltoXSYmaDxsKXt2YXIgdT1yW2hdO251bGw9PXUuaW5zdGFuY2UmJih1Lmluc3RhbmNlPW5ldyB1LmNsYXNzeix1Lmluc3RhbmNlLmluaXQodCx1LnR1bmVOdW1iZXIsdS5wYXJhbXMsdS50YWJUeXBlKSksdS5pbnN0YW5jZS5yZW5kZXIoZSxvLGgpfX19fTtlLmV4cG9ydHM9aX0sMTkyMTpmdW5jdGlvbihlLHQscil7dmFyIG49cigyODQyKS5ub3RlVG9NaWRpLGE9cig2Nzc2KSxpPXIoNjYyOSk7ZnVuY3Rpb24gcyhlLHQpe2Zvcih2YXIgcj1bXSxuPTA7bjx0Lmxlbmd0aDtuKyspaWYoIXRbbl0uZW5kVGllKXt2YXIgaT1uZXcgYSh0W25dLm5hbWUsZS5jbGVmVHJhbnNwb3NlKTtpLmNoZWNrS2V5QWNjaWRlbnRhbHMoZS5hY2NpZGVudGFscyxlLm1lYXN1cmVBY2NpZGVudGFscyk7dmFyIHM9YyhlLGkpO3IucHVzaChzKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoLTE7cisrKXt2YXIgbj10W3JdLGE9dFtyKzFdO2lmKG4uc3RyPT1hLnN0cil7aWYobi5zdHI9PWUuc3RyaW5ncy5sZW5ndGgtMSlyZXR1cm4gbi5udW09Ij8iLHZvaWQoYS5udW09Ij8iKTthLm51bTxuLm51bT8oYS5zdHIrKyxhPW8oZSxhLm5vdGUsYS5zdHIsZS5zZWNvbmRQb3MsZS5zdHJpbmdzW2Euc3RyXS5sZW5ndGgpKToobi5zdHIrKyxuPW8oZSxuLm5vdGUsbi5zdHIsZS5zZWNvbmRQb3MsZS5zdHJpbmdzW24uc3RyXS5sZW5ndGgpKSx0W3JdPW4sdFtyKzFdPWF9fX0oZSxyKSxyfWZ1bmN0aW9uIG8oZSx0LHIsbixhKXt2YXIgaT1lLnN0cmluZ3M7dC5jaGVja0tleUFjY2lkZW50YWxzKGUuYWNjaWRlbnRhbHMsZS5tZWFzdXJlQWNjaWRlbnRhbHMpLG4mJihpPW4pO3ZhciBzPXQuZW1pdE5vQWNjaWRlbnRhbHMoKSxvPWlbcl0uaW5kZXhPZihzKSxjPXQuYWNjO2lmKC0xIT1vKXtpZihuJiYobys9YSksKHQuaXNGbGF0fHwtMT09dC5hY2MpJiYwPT1vKXt2YXIgbD10LmdldEFjY2lkZW50YWxFcXVpdigpO289aVsrK3JdLmluZGV4T2YobC5lbWl0KCkpLGM9MH1yZXR1cm57bnVtOm8rYyxzdHI6cixub3RlOnR9fXJldHVybiBudWxsfWZ1bmN0aW9uIGMoZSx0KXt2YXIgcjsodC5pc0FsdGVyZWR8fHQubmF0dXJhbCkmJih0LmlzRmxhdD9yPXQuaXNEb3VibGU/Il9fIjoiXyI6dC5pc1NoYXJwP3I9dC5pc0RvdWJsZT8iXl4iOiJeIjp0Lm5hdHVyYWwmJihyPSI9IiksZS5tZWFzdXJlQWNjaWRlbnRhbHNbdC5uYW1lLnRvVXBwZXJDYXNlKCldPXIpO2Zvcih2YXIgbj1lLnN0cmluZ1BpdGNoZXMubGVuZ3RoLTE7bj49MDtuLS0paWYodC5waXRjaCt0LnBpdGNoQWx0ZXJlZD49ZS5zdHJpbmdQaXRjaGVzW25dKXt2YXIgYT10LnBpdGNoK3QucGl0Y2hBbHRlcmVkLWUuc3RyaW5nUGl0Y2hlc1tuXTtyZXR1cm4iXiI9PT10LnF1YXJ0ZXI/YS09LjU6InYiPT09dC5xdWFydGVyJiYoYSs9LjUpLHtudW06TWF0aC5yb3VuZChhKSxzdHI6ZS5zdHJpbmdQaXRjaGVzLmxlbmd0aC0xLW4sbm90ZTp0fX1yZXR1cm57bnVtOiI/IixzdHI6ZS5zdHJpbmdQaXRjaGVzLmxlbmd0aC0xLG5vdGU6dH19ZnVuY3Rpb24gbChlLHQpe3ZhciByPXtudW06Ij8iLHN0cjowLG5vdGU6dH07ZS5wdXNoKHIpLGUuZXJyb3I9dC5lbWl0KCkrIjogdW5leHBlY3RlZCBub3RlIGZvciBpbnN0cnVtZW50In1mdW5jdGlvbiBoKGUpe3ZhciB0PWUudHVuaW5nLHI9ZS5jYXBvLHM9ZS5wYXJhbXMuaGlnaGVzdE5vdGU7dGhpcy5saW5lUGl0Y2g9ZS5saW5lUGl0Y2gsdGhpcy5oaWdoZXN0Tm90ZT0iYSciLHMmJih0aGlzLmhpZ2hlc3ROb3RlPXMpLHRoaXMubWVhc3VyZUFjY2lkZW50YWxzPXt9LHRoaXMuY2Fwbz0wLHImJih0aGlzLmNhcG89cGFyc2VJbnQociwxMCkpLHRoaXMudHJhbnNwb3NlPWUudHJhbnNwb3NlP2UudHJhbnNwb3NlOjAsdGhpcy50dW5pbmc9dCx0aGlzLnN0cmluZ1BpdGNoZXM9W107Zm9yKHZhciBvPTA7bzx0aGlzLnR1bmluZy5sZW5ndGg7bysrKXt2YXIgYz1uKHRoaXMudHVuaW5nW29dKSt0aGlzLmNhcG87dGhpcy5zdHJpbmdQaXRjaGVzLnB1c2goYyl9aWYodGhpcy5jYXBvPjAmJih0aGlzLmNhcG9UdW5pbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbCxyPWUudHVuaW5nO2lmKGUuY2Fwbz4wKXt0PVtdO2Zvcih2YXIgbj0wO248ci5sZW5ndGg7bisrKXtmb3IodmFyIGk9bmV3IGEocltuXSkscz0wO3M8ZS5jYXBvO3MrKylpPWkubmV4dE5vdGUoKTt0W25dPWkuZW1pdCgpfX1yZXR1cm4gdH0odGhpcykpLHRoaXMuc3RyaW5ncz1mdW5jdGlvbihlKXt2YXIgdD1bXSxyPWUudHVuaW5nO2UuY2Fwbz4wJiYocj1lLmNhcG9UdW5pbmcpO2Zvcih2YXIgbj1yLmxlbmd0aC0xLGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIHM9ZS5oaWdoZXN0Tm90ZTthIT1yLmxlbmd0aC0xJiYocz1yW2ErMV0pO3ZhciBvPWkoclthXSxzKTtpZihvLmVycm9yKXJldHVybiBvO3Rbbi0tXT1vfXJldHVybiB0fSh0aGlzKSx0aGlzLnN0cmluZ3MuZXJyb3IpcmV0dXJuIGUuc2V0RXJyb3IodGhpcy5zdHJpbmdzLmVycm9yKSx2b2lkKGUuaW5FcnJvcj0hMCk7dGhpcy5zZWNvbmRQb3M9ZnVuY3Rpb24oZSl7dmFyIHQ9W107dFswXT1bXTtmb3IodmFyIHI9ZS5zdHJpbmdzLG49MTtuPHIubGVuZ3RoO24rKyl0W25dPXJbbi0xXTtyZXR1cm4gdH0odGhpcyl9aC5wcm90b3R5cGUuc3RyaW5nVG9QaXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gNS4zKyh0aGlzLnN0cmluZ3MubGVuZ3RoLTEtZSkqdGhpcy5saW5lUGl0Y2h9LGgucHJvdG90eXBlLm5vdGVzVG9OdW1iZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGk9bnVsbCxvPW51bGw7aWYoZSYmKG89W10sZS5sZW5ndGg+MT8obz1zKHRoaXMsZSkpLmVycm9yJiYoaT1vLmVycm9yKTplWzBdLmVuZFRpZXx8KChyPW5ldyBhKGVbMF0ubmFtZSx0aGlzLmNsZWZUcmFuc3Bvc2UpKS5jaGVja0tleUFjY2lkZW50YWxzKHRoaXMuYWNjaWRlbnRhbHMsdGhpcy5tZWFzdXJlQWNjaWRlbnRhbHMpLChuPWModGhpcyxyKSk/by5wdXNoKG4pOihsKG8sciksaT1vLmVycm9yKSkpLGkpcmV0dXJuIG87dmFyIGg9bnVsbDtpZih0KXtoPVtdO2Zvcih2YXIgdT0wO3U8dC5sZW5ndGg7dSsrKShyPW5ldyBhKHRbdV0ubmFtZSx0aGlzLmNsZWZUcmFuc3Bvc2UpKS5jaGVja0tleUFjY2lkZW50YWxzKHRoaXMuYWNjaWRlbnRhbHMsdGhpcy5tZWFzdXJlQWNjaWRlbnRhbHMpLChuPWModGhpcyxyKSk/aC5wdXNoKG4pOihsKGgsciksaT1vLmVycm9yKX1yZXR1cm57bm90ZXM6byxncmFjZXM6aCxlcnJvcjppfX0saC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8dGhpcy50dW5pbmcubGVuZ3RoO3QrKyl7dmFyIHI9dGhpcy50dW5pbmdbdF0ucmVwbGFjZUFsbCgiLCIsIiIpLnJlcGxhY2VBbGwoIiciLCIiKS50b1VwcGVyQ2FzZSgpOyJfIj09PXJbMF0/cj1yWzFdKyJiICI6Il4iPT09clswXSYmKHI9clsxXSsiIyAiKSxlLnB1c2gocil9cmV0dXJuIGUuam9pbigiIil9LGgucHJvdG90eXBlLnRhYkluZm9zPWZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyYW1zLmxhYmVsO2lmKHQpe3ZhciByPSIiO3JldHVybi0xIT10LmluZGV4T2YoIiVUIikmJihyPXRoaXMudG9TdHJpbmcoKSxlLmNhcG8+MCYmKHIrPSIgY2FwbzoiK2UuY2FwbyksdD10LnJlcGxhY2UoIiVUIixyKSksdH1yZXR1cm4iIn0saC5wcm90b3R5cGUuc3VwcHJlc3M9ZnVuY3Rpb24oZSl7cmV0dXJuISFlLnBhcmFtcy5zdXBwcmVzc30sZS5leHBvcnRzPWh9LDg5MTg6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe3RoaXMubnVtTGluZXM9ZSx0aGlzLmxpbmVTcGFjZT10LHRoaXMudmVydGljYWxTaXplPXRoaXMubnVtTGluZXMqdGhpcy5saW5lU3BhY2UsdGhpcy5iYXI9e3BpdGNoOjMscGl0Y2gyOnQqZSxoZWlnaHQ6NX19dC5wcm90b3R5cGUuYnlwYXNzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc3RhZmZHcm91cC52b2ljZXM7cmV0dXJuISEodC5sZW5ndGg+MCYmdFswXS5pc1BlcmN1c3Npb24pfSx0LnByb3RvdHlwZS5zZXRSZWxhdGl2ZT1mdW5jdGlvbihlLHQscil7c3dpdGNoKGUudHlwZSl7Y2FzZSJiYXIiOnQucGl0Y2g9dGhpcy5iYXIucGl0Y2gsdC5waXRjaDI9dGhpcy5iYXIucGl0Y2gyLHQuaGVpZ2h0PXRoaXMuaGVpZ2h0O2JyZWFrO2Nhc2Uic3ltYm9sIjp2YXIgbj10aGlzLmJhci5waXRjaDIvMjtpZigiZG90cy5kb3QiPT1lLm5hbWUpcmV0dXJuIHI/KHQucGl0Y2g9biwhMSk6KHQucGl0Y2g9bit0aGlzLmxpbmVTcGFjZSwhMCl9cmV0dXJuIHJ9LGUuZXhwb3J0cz10fSw2Nzc2OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI4NDIpLGE9bi5ub3RlVG9NaWRpLGk9bi5taWRpVG9Ob3RlO2Z1bmN0aW9uIHMoZSx0KXt2YXIgcj1hKGUpO3QmJihyKz10KTt2YXIgbixzPWkociksbz0hMSxjPSExLGw9bnVsbCxoPW51bGwsdT0hMSxkPTA7ZS5zdGFydHNXaXRoKCJfIik/KG89ITAsZD0tMSwiLyI9PWVbMV0/KG89ITEsaD0idiIsZD0wKToiXyI9PWVbMV0mJih1PSEwLGQtPTEpKTplLnN0YXJ0c1dpdGgoIl4iKT8oYz0hMCxkPTEsIi8iPT1lWzFdPyhjPSExLGg9Il4iLGQ9MCk6Il4iPT1lWzFdJiYodT0hMCxkKz0xKSk6ZS5zdGFydHNXaXRoKCI9IikmJihsPSEwLGQ9MCksKChuPW98fGN8fG51bGwhPWgpfHxsKSYmKHM9bnVsbCE9aHx8dT9lLnNsaWNlKDIpOmUuc2xpY2UoMSkpO3ZhciBmPShzLm1hdGNoKC8sL2cpfHxbXSkubGVuZ3RoLHA9KHMubWF0Y2goLycvZyl8fFtdKS5sZW5ndGg7dGhpcy5waXRjaD1yLHRoaXMucGl0Y2hBbHRlcmVkPTAsdGhpcy5uYW1lPXMsdGhpcy5hY2M9ZCx0aGlzLmlzU2hhcnA9Yyx0aGlzLmlzS2V5U2hhcnA9ITEsdGhpcy5pc0RvdWJsZT11LHRoaXMuaXNBbHRlcmVkPW4sdGhpcy5pc0ZsYXQ9byx0aGlzLmlzS2V5RmxhdD0hMSx0aGlzLm5hdHVyYWw9bCx0aGlzLnF1YXJ0ZXI9aCx0aGlzLmlzTG93ZXI9dGhpcy5uYW1lPT10aGlzLm5hbWUudG9Mb3dlckNhc2UoKSx0aGlzLm5hbWU9dGhpcy5uYW1lWzBdLnRvVXBwZXJDYXNlKCksdGhpcy5oYXNDb21tYT1mLHRoaXMuaXNRdW90ZWQ9cH1zLnByb3RvdHlwZS5zYW1lTm90ZUFzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnBpdGNoPT09dGhpcy5waXRjaH0scy5wcm90b3R5cGUuaXNMb3dlclRoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGl0Y2g+dGhpcy5waXRjaH0scy5wcm90b3R5cGUuY2hlY2tLZXlBY2NpZGVudGFscz1mdW5jdGlvbihlLHQpe2lmKCF0aGlzLmlzQWx0ZXJlZCYmIXRoaXMubmF0dXJhbClpZih0W3RoaXMubmFtZS50b1VwcGVyQ2FzZSgpXSlzd2l0Y2godFt0aGlzLm5hbWUudG9VcHBlckNhc2UoKV0pe2Nhc2UiX18iOnJldHVybiB0aGlzLmFjYz0tMix2b2lkKHRoaXMucGl0Y2hBbHRlcmVkPS0yKTtjYXNlIl8iOnJldHVybiB0aGlzLmFjYz0tMSx2b2lkKHRoaXMucGl0Y2hBbHRlcmVkPS0xKTtjYXNlIj0iOnJldHVybiB0aGlzLmFjYz0wLHZvaWQodGhpcy5waXRjaEFsdGVyZWQ9MCk7Y2FzZSJeIjpyZXR1cm4gdGhpcy5hY2M9MSx2b2lkKHRoaXMucGl0Y2hBbHRlcmVkPTEpO2Nhc2UiXl4iOnJldHVybiB0aGlzLmFjYz0yLHZvaWQodGhpcy5waXRjaEFsdGVyZWQ9Mil9ZWxzZSBpZihlKWZvcih2YXIgcj10aGlzLm5hbWUsbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgYT1lW25dO3I9PWEubm90ZS50b1VwcGVyQ2FzZSgpJiYoImZsYXQiPT1hLmFjYyYmKHRoaXMuYWNjPS0xLHRoaXMuaXNLZXlGbGF0PSEwLHRoaXMucGl0Y2hBbHRlcmVkPS0xKSwic2hhcnAiPT1hLmFjYyYmKHRoaXMuYWNjPTEsdGhpcy5pc0tleVNoYXJwPSEwLHRoaXMucGl0Y2hBbHRlcmVkPTEpKX19LHMucHJvdG90eXBlLmdldEFjY2lkZW50YWxFcXVpdj1mdW5jdGlvbigpe3ZhciBlLHQscj0oKHQ9bmV3IHMoKGU9dGhpcykubmFtZSkpLnBpdGNoPWUucGl0Y2gsdC5oYXNDb21tYT1lLmhhc0NvbW1hLHQuaXNMb3dlcj1lLmlzTG93ZXIsdC5pc1F1b3RlZD1lLmlzUXVvdGVkLHQuaXNTaGFycD1lLmlzU2hhcnAsdC5pc0tleVNoYXJwPWUuaXNLZXlTaGFycCx0LmlzRmxhdD1lLmlzRmxhdCx0LmlzS2V5RmxhdD1lLmlzS2V5RmxhdCx0KTtyZXR1cm4gci5pc1NoYXJwfHxyLmlzS2V5U2hhcnA/KChyPXIubmV4dE5vdGUoKSkuaXNGbGF0PSEwLHIuaXNTaGFycD0hMSxyLmlzS2V5U2hhcnA9ITEpOihyLmlzRmxhdHx8ci5pc0tleUZsYXQpJiYoKHI9ci5wcmV2Tm90ZSgpKS5pc1NoYXJwPSEwLHIuaXNGbGF0PSExLHIuaXNLZXlGbGF0PSExKSxyfSxzLnByb3RvdHlwZS5uZXh0Tm90ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgcyhpKHRoaXMucGl0Y2grMSt0aGlzLnBpdGNoQWx0ZXJlZCkpfSxzLnByb3RvdHlwZS5wcmV2Tm90ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgcyhpKHRoaXMucGl0Y2gtMSt0aGlzLnBpdGNoQWx0ZXJlZCkpfSxzLnByb3RvdHlwZS5lbWl0Tm9BY2NpZGVudGFscz1mdW5jdGlvbigpe3ZhciBlPXRoaXMubmFtZTt0aGlzLmlzTG93ZXImJihlPWUudG9Mb3dlckNhc2UoKSk7Zm9yKHZhciB0PTA7dDx0aGlzLmlzUXVvdGVkO3QrKyllKz0iJyI7Zm9yKHZhciByPTA7cjx0aGlzLmhhc0NvbW1hO3IrKyllKz0iLCI7cmV0dXJuIGV9LHMucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm5hbWU7KHRoaXMuaXNTaGFycHx8dGhpcy5pc0tleVNoYXJwKSYmKGU9Il4iK2UsdGhpcy5pc0RvdWJsZSYmKGU9Il4iK2UpKSwodGhpcy5pc0ZsYXR8fHRoaXMuaXNLZXlGbGF0KSYmKGU9Il8iK2UsdGhpcy5pc0RvdWJsZSYmKGU9Il8iK2UpKSx0aGlzLnF1YXJ0ZXImJihlPSJeIj09dGhpcy5xdWFydGVyPyJeLyIrZToiXy8iK2UpLHRoaXMubmF0dXJhbCYmKGU9Ij0iK2UpO2Zvcih2YXIgdD0xO3Q8PXRoaXMuaGFzQ29tbWE7dCsrKWUrPSIsIjtpZih0aGlzLmlzTG93ZXIpe2U9ZS50b0xvd2VyQ2FzZSgpO2Zvcih2YXIgcj0xO3I8PXRoaXMuaXNRdW90ZWQ7cisrKWUrPSInIn1yZXR1cm4gZX0sZS5leHBvcnRzPXN9LDY2Mjk6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjc3NiksYT1bIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciXTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uZXcgbihlKSxpPW5ldyBuKHQpO2lmKGkuaXNMb3dlclRoYW4ocikpe3ZhciBzPXIuZW1pdCgpO3JldHVybntlcnJvcjoiSW52YWxpZCBzdHJpbmcgSW5zdHJ1bWVudCB0dW5pbmcgOiAiK2kuZW1pdCgpKyIgc3RyaW5nIGxvd2VyIHRoYW4gIitzKyIgc3RyaW5nIn19dmFyIG89W10sYz1hLmluZGV4T2Yoci5uYW1lKSxsPWEuaW5kZXhPZihpLm5hbWUpO2lmKC0xPT1jfHwtMT09bClyZXR1cm4gbztmb3IodmFyIGg9ITE7IWg7KW8ucHVzaChyLmVtaXQoKSksKHI9ci5uZXh0Tm90ZSgpKS5zYW1lTm90ZUFzKGkpJiYoaD0hMCk7cmV0dXJuIG99fSw2MDc0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDg5MTgpLGE9cig0Nzg1KSxpPXIoMTkyMSk7ZnVuY3Rpb24gcygpe31zLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGUsdCxyLGEpe3RoaXMudHVuZT1lLHRoaXMucGFyYW1zPXIsdGhpcy50dW5lTnVtYmVyPXQsdGhpcy5pbkVycm9yPSExLHRoaXMuYWJjVHVuZT1lLHRoaXMubGluZVBpdGNoPTMsdGhpcy5uYkxpbmVzPWEuZGVmYXVsdFR1bmluZy5sZW5ndGgsdGhpcy5pc1RhYkJpZz1hLmlzVGFiQmlnLHRoaXMudGFiU3ltYm9sT2Zmc2V0PWEudGFiU3ltYm9sT2Zmc2V0LHRoaXMuY2Fwbz1yLmNhcG8sdGhpcy50cmFuc3Bvc2U9ci52aXN1YWxUcmFuc3Bvc2UsdGhpcy5oaWRlVGFiU3ltYm9sPXIuaGlkZVRhYlN5bWJvbCx0aGlzLnRhYmxhdHVyZT1uZXcgbih0aGlzLm5iTGluZXMsdGhpcy5saW5lUGl0Y2gpO3ZhciBzPXIudHVuaW5nO3N8fChzPWEuZGVmYXVsdFR1bmluZyksdGhpcy50dW5pbmc9cyx0aGlzLnNlbWFudGljcz1uZXcgaSh0aGlzKX0scy5wcm90b3R5cGUuc2V0RXJyb3I9ZnVuY3Rpb24oZSl7ZSYmKHRoaXMuZXJyb3I9ZSx0aGlzLmluRXJyb3I9ITAsdGhpcy50dW5lLndhcm5pbmdzP3RoaXMudHVuZS53YXJuaW5ncy5wdXNoKGUpOnRoaXMudHVuZS53YXJuaW5ncz1bZV0pfSxzLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSx0LHIpe3RoaXMuaW5FcnJvcnx8dGhpcy50YWJsYXR1cmUuYnlwYXNzKHQpfHxhKHRoaXMsZSx0LHIpfSxlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm57bmFtZToiU3RyaW5nVGFiIix0YWJsYXR1cmU6c319fSw0MjQwOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE0MDkpLGE9cig2NjU4KTtmdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKEFycmF5LmlzQXJyYXkodFtyXSl8fG51bGwhPShuPXRbcl0pJiZuLmNvbnN0cnVjdG9yPT09T2JqZWN0fHwoZVtyXT10W3JdKSk7dmFyIG59ZnVuY3Rpb24gcyhlKXt2YXIgdD1uZXcgbigiIiwwLDAsIiIsMCk7cmV0dXJuIGkodCxlKSx0LnRvcD0wLHQuYm90dG9tPS0xLGUuYWJjZWxlbSYmKHQuYWJjZWxlbT17fSxpKHQuYWJjZWxlbSxlLmFiY2VsZW0pLCJub3RlIj09PXQuYWJjZWxlbS5lbF90eXBlJiYodC5hYmNlbGVtLmVsX3R5cGU9InRhYk51bWJlciIpKSxlLmNsb25lZD10LHR9ZnVuY3Rpb24gbyhlLHQpe3ZhciByPXMoZSk7aWYodClmb3IodmFyIG49ZS5jaGlsZHJlbixvPSEwLGM9MDtjPG4ubGVuZ3RoO2MrKyl7dmFyIGw9bltjXSxoPW5ldyBhKCIiLDAsMCwwLCIiKTtpKGgsbCksbz10LnRhYmxhdHVyZS5zZXRSZWxhdGl2ZShsLGgsbyksci5jaGlsZHJlbi5wdXNoKGgpfXJldHVybiByfWZ1bmN0aW9uIGMoZSx0LHIpe3ZhciBpPSJ0YWIudGlueSIscz03LjU7ZS5pc1RhYkJpZyYmKGk9InRhYi5iaWciLHM9MTApO3ZhciBvPXtlbF90eXBlOiJ0YWIiLGljb246aSxZcG9zOnN9O2lmKHMrPWUudGFiU3ltYm9sT2Zmc2V0LCFlLmhpZGVUYWJTeW1ib2wpe3ZhciBjPW5ldyBuKG8sMCwwLCJzeW1ib2wiLDApO2MueD10O3ZhciBsPW5ldyBhKGksMCwwLDcuNSwidGFiIik7bC54PXIsYy5jaGlsZHJlbi5wdXNoKGwpLCJ0YWIiPT1jLmFiY2VsZW0uZWxfdHlwZSYmKGwucGl0Y2g9cyl9cmV0dXJuIGN9ZnVuY3Rpb24gbChlKXtpZihlLmV4dHJhKWZvcih2YXIgdD0wO3Q8ZS5leHRyYS5sZW5ndGg7dCsrKXt2YXIgcj1lLmV4dHJhW3RdO2lmKCJseXJpYyI9PXIudHlwZSlyZXR1cm57Ym90dG9tOnIuYm90dG9tLGhlaWdodDpyLmhlaWdodH19cmV0dXJuIG51bGx9ZnVuY3Rpb24gaCgpe3RoaXMuYWNjaWRlbnRhbHM9bnVsbH1mdW5jdGlvbiB1KGUsdCxyLG4saSl7dmFyIHM9bi5udW07bnVsbCE9bi5ub3RlLnF1YXJ0ZXImJihzPXMudG9TdHJpbmcoKSxzKz1uLm5vdGUucXVhcnRlcik7dmFyIG89ZS5zZW1hbnRpY3Muc3RyaW5nVG9QaXRjaChuLnN0cik7ci5ub3Rlcy5wdXNoKHtudW06cyxzdHI6bi5zdHIscGl0Y2g6bi5ub3RlLmVtaXQoKX0pO3ZhciBjPW5ldyBhKHMsMCwwLG8rLjMse3R5cGU6InRhYk51bWJlciJ9KTtyZXR1cm4gYy54PXQsYy5pc0dyYWNlPWksYy5pc0FsdGVyZWQ9bi5ub3RlLmlzQWx0ZXJlZCxjfWZ1bmN0aW9uIGQoZSx0KXt2YXIgcj0wO2lmKGUuZXh0cmEpZm9yKHZhciBuPTA7bjxlLmV4dHJhLmxlbmd0aDtuKyspaWYoZS5leHRyYVtuXS5jLmluZGV4T2YoIm5vdGVoZWFkcyIpPj0wKXtpZihyPT09dClyZXR1cm4gZS5leHRyYVtuXS54K2UuZXh0cmFbbl0udy8yO3IrK31yZXR1cm4tMX1mdW5jdGlvbiBmKGUpe2lmKGUuYWJjZWxlbSl7dmFyIHQ9ZS5hYmNlbGVtO2lmKHQucmVzdClyZXR1cm4gdC5ncmFjZW5vdGVzfXJldHVybiBudWxsfWZ1bmN0aW9uIHAoZSx0LHIpe3ZhciBuPWUuc2VtYW50aWNzLm5vdGVzVG9OdW1iZXIodCxyKTtpZihuLmVycm9yKXJldHVybiBlLnNldEVycm9yKG4uZXJyb3IpLG47aWYobi5ncmFjZXMmJm4ubm90ZXMpe3ZhciBhPW4ubm90ZXMubGVuZ3RoLTE7bi5ub3Rlc1thXS5ncmFjZXM9bi5ncmFjZXN9cmV0dXJuIG59ZnVuY3Rpb24gbShlLHQscixuLGEpe2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgcz17ZWxfdHlwZToibm90ZSIsc3RhcnRDaGFyOnIuYWJjZWxlbS5zdGFydENoYXIsZW5kQ2hhcjpyLmFiY2VsZW0uZW5kQ2hhcixub3RlczpbXSxncmFjZTohMH0sbz11KGUsZChyLGkpLHMsbltpXSwhMCk7dC5jaGlsZHJlbi5wdXNoKG8pLGEucHVzaChzKX19aC5wcm90b3R5cGUuYnVpbGQ9ZnVuY3Rpb24oZSx0LHIsbixhLGksaCl7IWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0udGFiTmFtZUluZm9zfHwwfSh0KTt2YXIgZz10W2Erbl0sdj10W2hdLGI9bnVsbCx5PW51bGw7ImNsZWYiIT1nLmNoaWxkcmVuWzBdLmFiY2VsZW0uZWxfdHlwZSYmIm5vbmUiIT1pJiZnLmNoaWxkcmVuLnNwbGljZSgwLDAsaSk7Zm9yKHZhciB4PTA7eDxnLmNoaWxkcmVuLmxlbmd0aDt4Kyspe3ZhciBrPWcuY2hpbGRyZW5beF0sdz1rLngsQz13O3N3aXRjaChrLmlzQ2xlZiYmKHYuY2hpbGRyZW4ucHVzaChjKGUsdyxDKSksay5hYmNlbGVtLnR5cGUuaW5kZXhPZigiLTgiKT49MCYmKGUuc2VtYW50aWNzLmNsZWZUcmFuc3Bvc2U9LTEyKSxrLmFiY2VsZW0udHlwZS5pbmRleE9mKCIrOCIpPj0wJiYoZS5zZW1hbnRpY3MuY2xlZlRyYW5zcG9zZT0xMikpLGsudHlwZSl7Y2FzZSJzdGFmZi1leHRyYSBrZXktc2lnbmF0dXJlIjp0aGlzLmFjY2lkZW50YWxzPWsuYWJjZWxlbS5hY2NpZGVudGFscyxlLnNlbWFudGljcy5hY2NpZGVudGFscz10aGlzLmFjY2lkZW50YWxzO2JyZWFrO2Nhc2UiYmFyIjplLnNlbWFudGljcy5tZWFzdXJlQWNjaWRlbnRhbHM9e307dmFyIFQ9ITE7eD09PWcuY2hpbGRyZW4ubGVuZ3RoLTEmJihUPSEwKTt2YXIgUz1vKGssZSk7aWYoUy5hYmNlbGVtLmJhck51bWJlcil7ZGVsZXRlIFMuYWJjZWxlbS5iYXJOdW1iZXI7Zm9yKHZhciBfPTA7XzxTLmNoaWxkcmVuLmxlbmd0aDtfKyspaWYoImJhck51bWJlciI9PT1TLmNoaWxkcmVuW19dLnR5cGUpe1MuY2hpbGRyZW4uc3BsaWNlKF8sMSk7YnJlYWt9fVMuYWJjZWxlbS5sYXN0QmFyPVQsdi5jaGlsZHJlbi5wdXNoKFMpLHIucHVzaCh7ZWxfdHlwZTprLmFiY2VsZW0uZWxfdHlwZSx0eXBlOmsuYWJjZWxlbS50eXBlLGVuZENoYXI6ay5hYmNlbGVtLmVuZENoYXIsc3RhcnRDaGFyOmsuYWJjZWxlbS5zdGFydENoYXIsYWJzZWxlbTpTfSk7YnJlYWs7Y2FzZSJyZXN0Ijp2YXIgRT1mKGspO2lmKEUpe2lmKChiPXAoZSxudWxsLEUpKS5lcnJvcilyZXR1cm47SD17ZWxfdHlwZToibm90ZSIsc3RhcnRDaGFyOmsuYWJjZWxlbS5zdGFydENoYXIsZW5kQ2hhcjprLmFiY2VsZW0uZW5kQ2hhcixub3RlczpbXSxncmFjZTohMH0sbShlLE0sayxiLmdyYWNlcyxyKX1icmVhaztjYXNlIm5vdGUiOnZhciBNPXMoayk7TS54PWsuaGVhZHNbMF0ueCtrLmhlYWRzWzBdLncvMixNLmx5cmljRGltPWwoayk7dmFyIEE9ay5hYmNlbGVtLnBpdGNoZXMsTj1rLmFiY2VsZW0uZ3JhY2Vub3RlcztpZihNLnR5cGU9InRhYk51bWJlciIsKGI9cChlLEEsTikpLmVycm9yKXJldHVybjtpZihiLmdyYWNlcyl7dmFyIEI9Yi5ub3Rlcy5sZW5ndGgtMTtiLm5vdGVzW0JdLmdyYWNlcz1iLmdyYWNlc315PXtlbF90eXBlOiJub3RlIixzdGFydENoYXI6ay5hYmNlbGVtLnN0YXJ0Q2hhcixlbmRDaGFyOmsuYWJjZWxlbS5lbmRDaGFyLG5vdGVzOltdfTtmb3IodmFyIFA9MDtQPGIubm90ZXMubGVuZ3RoO1ArKyl7dmFyIEw9Yi5ub3Rlc1tQXTtpZihMLmdyYWNlcylmb3IodmFyIE89MDtPPEwuZ3JhY2VzLmxlbmd0aDtPKyspe3ZhciBIPXtlbF90eXBlOiJub3RlIixzdGFydENoYXI6ay5hYmNlbGVtLnN0YXJ0Q2hhcixlbmRDaGFyOmsuYWJjZWxlbS5lbmRDaGFyLG5vdGVzOltdLGdyYWNlOiEwfSx6PXUoZSxkKGssTyksSCxMLmdyYWNlc1tPXSwhMCk7TS5jaGlsZHJlbi5wdXNoKHopLHIucHVzaChIKX12YXIgRD11KGUsTS54K2suaGVhZHNbUF0uZHgseSxMLCExKTtNLmNoaWxkcmVuLnB1c2goRCl9eS5ub3Rlcy5sZW5ndGg+MCYmKHkuYWJzZWxlbT1NLHIucHVzaCh5KSx2LmNoaWxkcmVuLnB1c2goTSkpfX19LGUuZXhwb3J0cz1ofSw0Nzg1OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDMxOTcpLGE9cig0MjQwKSxpPXIoNDMzMSk7ZnVuY3Rpb24gcyhlLHQscil7dmFyIG49ZS5zZW1hbnRpY3MsYT10LmNvbnRyb2xsZXIuZ2V0VGV4dFNpemUsaT1uLnRhYkluZm9zKGUpLHM9ITA7aWYobi5zdXBwcmVzcyhlKSYmKHM9ITEpLHMpe3ZhciBvPWEuY2FsYyhpLCJ0YWJsYWJlbGZvbnQiLCJ0ZXh0IGluc3RydW1lbnRuYW1lIik7cmV0dXJuIHIudGFiTmFtZUluZm9zPXt0ZXh0U2l6ZTp7aGVpZ2h0Om8uaGVpZ2h0LHdpZHRoOm8ud2lkdGh9LG5hbWU6aX0sby5oZWlnaHR9cmV0dXJuIDB9ZnVuY3Rpb24gbyhlLHQpe3JldHVybiEoIXRbZV0uaXNUYWJTdGFmZnx8ZSE9PXQubGVuZ3RoLTEmJnRbZSsxXS5pc1RhYlN0YWZmKX1mdW5jdGlvbiBjKGUsdCl7Zm9yKHZhciByPXQ7cj49MDtyLS0paWYoIWVbcl0uaXNUYWJTdGFmZilyZXR1cm4gcjtyZXR1cm4tMX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuImNsZWYiPT09ZVt0XS5jaGlsZHJlblswXS5hYmNlbGVtLmVsX3R5cGU/bnVsbDowPT10PyJub25lIjplW3QtMV0uY2hpbGRyZW5bMF19ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLGgpe3ZhciB1PW5ldyBhLGQ9e2NsZWY6e3R5cGU6IlRBQiJ9fSxmPWUubGluZVBpdGNoKmUubmJMaW5lcyxwPXIuc3RhZmY7aWYocCl7dmFyIG09cFswXTtpZihtJiZtLmNsZWYmJjA9PW0uY2xlZi5zdGFmZmxpbmVzKXJldHVybiB2b2lkIGUuc2V0RXJyb3IoIk5vIHRhYmxhdHVyZXMgd2hlbiBzdGFmZmxpbmVzPTAiKTtwLnNwbGljZShwLmxlbmd0aCwwLGQpfXZhciBnPXIuc3RhZmZHcm91cCx2PWcudm9pY2VzLGI9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAscj0wO3I8ZS5jaGlsZHJlbi5sZW5ndGg7cisrKXt2YXIgbj1lLmNoaWxkcmVuW3JdO24uc3BlY2lhbFkmJm4uc3BlY2lhbFkubHlyaWNIZWlnaHRCZWxvdz50JiYodD1uLnNwZWNpYWxZLmx5cmljSGVpZ2h0QmVsb3cpfXJldHVybiB0fSh2WzBdKSx5PWgseD1nLnN0YWZmc1t5XSxrPWYrMy14LmJvdHRvbS1iO3guaXNUYWJTdGFmZiYmKGs9eC50b3ApO3ZhciB3PXtib3R0b206LTEsaXNUYWJTdGFmZjohMCxzcGVjaWFsWTp7dGVtcG9IZWlnaHRBYm92ZTowLHBhcnRIZWlnaHRBYm92ZTowLHZvbHVtZUhlaWdodEFib3ZlOjAsZHluYW1pY0hlaWdodEFib3ZlOjAsZW5kaW5nSGVpZ2h0QWJvdmU6MCxjaG9yZEhlaWdodEFib3ZlOjAsbHlyaWNIZWlnaHRBYm92ZTowLGx5cmljSGVpZ2h0QmVsb3c6MCxjaG9yZEhlaWdodEJlbG93OjAsdm9sdW1lSGVpZ2h0QmVsb3c6MCxkeW5hbWljSGVpZ2h0QmVsb3c6MH0sbGluZXM6ZS5uYkxpbmVzLGxpbmVQaXRjaDplLmxpbmVQaXRjaCxkeTouMTUsdG9wOmt9LEM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MCxuPTAsYT0wOzspe2lmKCF0W3JdKXJldHVybi0xO2lmKHRbcl0uaXNUYWJTdGFmZnx8KGE9dFtyXS52b2ljZXMubGVuZ3RoKSx0W3JdLmlzVGFiU3RhZmYpe2lmKG4rKyxvKHIsdCkmJm48YSlyZXR1cm4gcisxfWVsc2UgaWYobj0wLHI+PWUpe2lmKHIrMT09dC5sZW5ndGgpcmV0dXJuIHIrMTtpZighdFtyKzFdLmlzVGFiU3RhZmYpcmV0dXJuIHIrMX1pZigrK3I+dC5sZW5ndGgpcmV0dXJuLTF9fShoLGcuc3RhZmZzKTtpZigtMSE9PUMpe3cucGFyZW50SW5kZXg9Qy0xLGcuc3RhZmZzLnNwbGljZShDLDAsdyksZy5oZWlnaHQrPWYrMzt2YXIgVD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10O3I+PTA7ci0tKWlmKCFlW3JdLmlzVGFiU3RhZmYpcmV0dXJuIGVbcl07cmV0dXJuIG51bGx9KGcuc3RhZmZzLEMpLFM9MTsoZnVuY3Rpb24oZSx0KXtyZXR1cm4gMT09PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdLmlzVGFiU3RhZmZ8fHQrKztyZXR1cm4gdH0oZSkmJnQudm9pY2VzLmxlbmd0aD4xfSkoZy5zdGFmZnMsVCkmJihTPVQudm9pY2VzLmxlbmd0aCksZC52b2ljZXM9W107Zm9yKHZhciBfPTA7XzxTO18rKyl7dmFyIEU9bmV3IG4oMCwwKTtfPjAmJihFLmR1cGxpY2F0ZT0hMCk7dmFyIE09cyhlLHQsRSkvaS5TVEVQO009TWF0aC5tYXgoTSwxKSxnLnN0YWZmc1toXS50b3ArPTEsZy5oZWlnaHQrPU0sRS5zdGFmZj13O3ZhciBBPXYubGVuZ3RoO3Yuc3BsaWNlKHYubGVuZ3RoLDAsRSk7dmFyIE49bCh2LF8raCk7ZC52b2ljZXNbX109W10sdS5idWlsZChlLHYsZC52b2ljZXNbX10sXyxoLE4sQSl9IWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKGVbdF0uaXNUYWJTdGFmZil7dmFyIHI9YyhlLHQpO2VbdF0uaGFzU3RhZmY9ZVtyXSxlW3JdLmhhc1RhYnx8KGVbcl0uaGFzVGFiPVtdKSxlW3JdLmhhc1RhYi5wdXNoKGVbdF0pfX0oZy5zdGFmZnMpfX19LDE4OTc6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTQwOSksYT1yKDg0OTEpLGk9cig1MjI0KSxzPXIoOTYwMCksbz1yKDM5MjMpLGM9cigyMTQzKSxsPXIoMjUyNSksaD1yKDg2NzcpLHU9cig4MjU2KSxkPXIoNjAyMCksZj1yKDY2NTgpLHA9cig0MzMxKSxtPXIoNzM5OCksZz1yKDExMDYpLHY9cig2MTgzKSxiPXIoMjA5NikseT1yKDMxOTcpLHg9cigyNjUyKSxrPXIoNTA1OCksdz1yKDUwMDgpLEM9ZnVuY3Rpb24oZSl7dmFyIHQ9MDtyZXR1cm4gZS5kdXJhdGlvbiYmKHQ9ZS5kdXJhdGlvbiksdH0sVD0hMSxTPXtyZXN0OnswOiJyZXN0cy53aG9sZSIsMToicmVzdHMuaGFsZiIsMjoicmVzdHMucXVhcnRlciIsMzoicmVzdHMuOHRoIiw0OiJyZXN0cy4xNnRoIiw1OiJyZXN0cy4zMm5kIiw2OiJyZXN0cy42NHRoIiw3OiJyZXN0cy4xMjh0aCIsbXVsdGk6InJlc3RzLm11bHRpbWVhc3VyZSJ9LG5vdGU6eyItMSI6Im5vdGVoZWFkcy5kYmwiLDA6Im5vdGVoZWFkcy53aG9sZSIsMToibm90ZWhlYWRzLmhhbGYiLDI6Im5vdGVoZWFkcy5xdWFydGVyIiwzOiJub3RlaGVhZHMucXVhcnRlciIsNDoibm90ZWhlYWRzLnF1YXJ0ZXIiLDU6Im5vdGVoZWFkcy5xdWFydGVyIiw2OiJub3RlaGVhZHMucXVhcnRlciIsNzoibm90ZWhlYWRzLnF1YXJ0ZXIiLG5vc3RlbToibm90ZWhlYWRzLnF1YXJ0ZXIifSxyaHl0aG06eyItMSI6Im5vdGVoZWFkcy5zbGFzaC53aG9sZSIsMDoibm90ZWhlYWRzLnNsYXNoLndob2xlIiwxOiJub3RlaGVhZHMuc2xhc2gud2hvbGUiLDI6Im5vdGVoZWFkcy5zbGFzaC5xdWFydGVyIiwzOiJub3RlaGVhZHMuc2xhc2gucXVhcnRlciIsNDoibm90ZWhlYWRzLnNsYXNoLnF1YXJ0ZXIiLDU6Im5vdGVoZWFkcy5zbGFzaC5xdWFydGVyIiw2OiJub3RlaGVhZHMuc2xhc2gucXVhcnRlciIsNzoibm90ZWhlYWRzLnNsYXNoLnF1YXJ0ZXIiLG5vc3RlbToibm90ZWhlYWRzLnNsYXNoLm5vc3RlbSJ9LHg6eyItMSI6Im5vdGVoZWFkcy5pbmRldGVybWluYXRlIiwwOiJub3RlaGVhZHMuaW5kZXRlcm1pbmF0ZSIsMToibm90ZWhlYWRzLmluZGV0ZXJtaW5hdGUiLDI6Im5vdGVoZWFkcy5pbmRldGVybWluYXRlIiwzOiJub3RlaGVhZHMuaW5kZXRlcm1pbmF0ZSIsNDoibm90ZWhlYWRzLmluZGV0ZXJtaW5hdGUiLDU6Im5vdGVoZWFkcy5pbmRldGVybWluYXRlIiw2OiJub3RlaGVhZHMuaW5kZXRlcm1pbmF0ZSIsNzoibm90ZWhlYWRzLmluZGV0ZXJtaW5hdGUiLG5vc3RlbToibm90ZWhlYWRzLmluZGV0ZXJtaW5hdGUifSxoYXJtb25pYzp7Ii0xIjoibm90ZWhlYWRzLmhhcm1vbmljLnF1YXJ0ZXIiLDA6Im5vdGVoZWFkcy5oYXJtb25pYy5xdWFydGVyIiwxOiJub3RlaGVhZHMuaGFybW9uaWMucXVhcnRlciIsMjoibm90ZWhlYWRzLmhhcm1vbmljLnF1YXJ0ZXIiLDM6Im5vdGVoZWFkcy5oYXJtb25pYy5xdWFydGVyIiw0OiJub3RlaGVhZHMuaGFybW9uaWMucXVhcnRlciIsNToibm90ZWhlYWRzLmhhcm1vbmljLnF1YXJ0ZXIiLDY6Im5vdGVoZWFkcy5oYXJtb25pYy5xdWFydGVyIiw3OiJub3RlaGVhZHMuaGFybW9uaWMucXVhcnRlciIsbm9zdGVtOiJub3RlaGVhZHMuaGFybW9uaWMucXVhcnRlciJ9LHRyaWFuZ2xlOnsiLTEiOiJub3RlaGVhZHMudHJpYW5nbGUucXVhcnRlciIsMDoibm90ZWhlYWRzLnRyaWFuZ2xlLnF1YXJ0ZXIiLDE6Im5vdGVoZWFkcy50cmlhbmdsZS5xdWFydGVyIiwyOiJub3RlaGVhZHMudHJpYW5nbGUucXVhcnRlciIsMzoibm90ZWhlYWRzLnRyaWFuZ2xlLnF1YXJ0ZXIiLDQ6Im5vdGVoZWFkcy50cmlhbmdsZS5xdWFydGVyIiw1OiJub3RlaGVhZHMudHJpYW5nbGUucXVhcnRlciIsNjoibm90ZWhlYWRzLnRyaWFuZ2xlLnF1YXJ0ZXIiLDc6Im5vdGVoZWFkcy50cmlhbmdsZS5xdWFydGVyIixub3N0ZW06Im5vdGVoZWFkcy50cmlhbmdsZS5xdWFydGVyIn0sdWZsYWdzOnszOiJmbGFncy51OHRoIiw0OiJmbGFncy51MTZ0aCIsNToiZmxhZ3MudTMybmQiLDY6ImZsYWdzLnU2NHRoIn0sZGZsYWdzOnszOiJmbGFncy5kOHRoIiw0OiJmbGFncy5kMTZ0aCIsNToiZmxhZ3MuZDMybmQiLDY6ImZsYWdzLmQ2NHRoIn19LF89ZnVuY3Rpb24oZSx0LHIpe3RoaXMuZGVjb3JhdGlvbj1uZXcgaCx0aGlzLmdldFRleHRTaXplPWUsdGhpcy50dW5lTnVtYmVyPXQsdGhpcy5pc0JhZ3BpcGVzPXIuYmFncGlwZXMsdGhpcy5mbGF0QmVhbXM9ci5mbGF0YmVhbXMsdGhpcy5ncmFjZVNsdXJzPXIuZ3JhY2VTbHVycyx0aGlzLnBlcmNtYXA9ci5wZXJjbWFwLHRoaXMuaW5pdGlhbENsZWY9ci5pbml0aWFsQ2xlZix0aGlzLmphenpjaG9yZHM9ISFyLmphenpjaG9yZHMsdGhpcy5hY2NlbnRBYm92ZT0hIXIuYWNjZW50QWJvdmUsdGhpcy5nZXJtYW5BbHBoYWJldD0hIXIuZ2VybWFuQWxwaGFiZXQsdGhpcy5yZXNldCgpfTtmdW5jdGlvbiBFKGUsdCl7dmFyIHI9ZVt0XTtpZigibm90ZSIhPT1yLmVsX3R5cGV8fCFyLnN0YXJ0QmVhbXx8ci5lbmRCZWFtKXJldHVybntjb3VudDoxLGVsZW06cn07Zm9yKHZhciBuPVtdO3Q8ZS5sZW5ndGgmJiJub3RlIj09PWVbdF0uZWxfdHlwZSYmKG4ucHVzaChlW3RdKSwhZVt0XS5lbmRCZWFtKTspdCsrO3JldHVybntjb3VudDpuLmxlbmd0aCxlbGVtOm59fWZ1bmN0aW9uIE0oZSl7aWYoZS5waXRjaGVzKXtBKGUpO2Zvcih2YXIgdD0wLHI9MDtyPGUucGl0Y2hlcy5sZW5ndGg7cisrKXQrPWUucGl0Y2hlc1tyXS52ZXJ0aWNhbFBvcztlLmF2ZXJhZ2VwaXRjaD10L2UucGl0Y2hlcy5sZW5ndGgsZS5taW5waXRjaD1lLnBpdGNoZXNbMF0udmVydGljYWxQb3MsZS5tYXhwaXRjaD1lLnBpdGNoZXNbZS5waXRjaGVzLmxlbmd0aC0xXS52ZXJ0aWNhbFBvc319Xy5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnNsdXJzPXt9LHRoaXMudGllcz1bXSx0aGlzLnZvaWNlU2NhbGU9MSx0aGlzLnZvaWNlQ29sb3I9dm9pZCAwLHRoaXMuc2x1cnNieXZvaWNlPXt9LHRoaXMudGllc2J5dm9pY2U9e30sdGhpcy5lbmRpbmdzYnl2b2ljZT17fSx0aGlzLnNjYWxlQnlWb2ljZT17fSx0aGlzLmNvbG9yQnlWb2ljZT17fSx0aGlzLnRyaXBsZXRtdWx0aXBsaWVyPTEsdGhpcy5hYmNsaW5lPXZvaWQgMCx0aGlzLmFjY2lkZW50YWxTbG90PXZvaWQgMCx0aGlzLmFjY2lkZW50YWxzaGlmdHg9dm9pZCAwLHRoaXMuZG90c2hpZnR4PXZvaWQgMCx0aGlzLmhhc1ZvY2Fscz0hMSx0aGlzLm1pblk9dm9pZCAwLHRoaXMucGFydHN0YXJ0ZWxlbT12b2lkIDAsdGhpcy5zdGFydGxpbWl0ZWxlbT12b2lkIDAsdGhpcy5zdGVtZGlyPXZvaWQgMH0sXy5wcm90b3R5cGUuc2V0U3RlbUhlaWdodD1mdW5jdGlvbihlKXt0aGlzLnN0ZW1IZWlnaHQ9TWF0aC5yb3VuZCgxMCplL3AuU1RFUCkvMTB9LF8ucHJvdG90eXBlLmdldEN1cnJlbnRWb2ljZUlkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuInMiK2UrInYiK3R9LF8ucHJvdG90eXBlLnB1c2hDcm9zc0xpbmVFbGVtcz1mdW5jdGlvbihlLHQpe3RoaXMuc2x1cnNieXZvaWNlW3RoaXMuZ2V0Q3VycmVudFZvaWNlSWQoZSx0KV09dGhpcy5zbHVycyx0aGlzLnRpZXNieXZvaWNlW3RoaXMuZ2V0Q3VycmVudFZvaWNlSWQoZSx0KV09dGhpcy50aWVzLHRoaXMuZW5kaW5nc2J5dm9pY2VbdGhpcy5nZXRDdXJyZW50Vm9pY2VJZChlLHQpXT10aGlzLnBhcnRzdGFydGVsZW0sdGhpcy5zY2FsZUJ5Vm9pY2VbdGhpcy5nZXRDdXJyZW50Vm9pY2VJZChlLHQpXT10aGlzLnZvaWNlU2NhbGUsdGhpcy52b2ljZUNvbG9yJiYodGhpcy5jb2xvckJ5Vm9pY2VbdGhpcy5nZXRDdXJyZW50Vm9pY2VJZChlLHQpXT10aGlzLnZvaWNlQ29sb3IpfSxfLnByb3RvdHlwZS5wb3BDcm9zc0xpbmVFbGVtcz1mdW5jdGlvbihlLHQpe3RoaXMuc2x1cnM9dGhpcy5zbHVyc2J5dm9pY2VbdGhpcy5nZXRDdXJyZW50Vm9pY2VJZChlLHQpXXx8e30sdGhpcy50aWVzPXRoaXMudGllc2J5dm9pY2VbdGhpcy5nZXRDdXJyZW50Vm9pY2VJZChlLHQpXXx8W10sdGhpcy5wYXJ0c3RhcnRlbGVtPXRoaXMuZW5kaW5nc2J5dm9pY2VbdGhpcy5nZXRDdXJyZW50Vm9pY2VJZChlLHQpXSx0aGlzLnZvaWNlU2NhbGU9dGhpcy5zY2FsZUJ5Vm9pY2VbdGhpcy5nZXRDdXJyZW50Vm9pY2VJZChlLHQpXSx2b2lkIDA9PT10aGlzLnZvaWNlU2NhbGUmJih0aGlzLnZvaWNlU2NhbGU9MSksdGhpcy52b2ljZUNvbG9yPXRoaXMuY29sb3JCeVZvaWNlW3RoaXMuZ2V0Q3VycmVudFZvaWNlSWQoZSx0KV19LF8ucHJvdG90eXBlLmNvbnRhaW5zTHlyaWNzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWZvcih2YXIgcj0wO3I8ZVt0XS52b2ljZXMubGVuZ3RoO3IrKylmb3IodmFyIG49MDtuPGVbdF0udm9pY2VzW3JdLmxlbmd0aDtuKyspe3ZhciBhPWVbdF0udm9pY2VzW3JdW25dO2lmKGEubHlyaWMpcmV0dXJuIHZvaWQoYS5wb3NpdGlvbmluZyYmImJlbG93IiE9PWEucG9zaXRpb25pbmcudm9jYWxQb3NpdGlvbnx8KHRoaXMuaGFzVm9jYWxzPSEwKSl9fSxfLnByb3RvdHlwZS5jcmVhdGVBQkNMaW5lPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLm1pblk9Mix0aGlzLmNvbnRhaW5zTHlyaWNzKGUpO3ZhciBuPW5ldyBtKHRoaXMuZ2V0VGV4dFNpemUpO3RoaXMudGVtcG9TZXQ9ITE7Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspVCYmdGhpcy5yZXN0b3JlU3RhdGUoKSxUPSExLHRoaXMuY3JlYXRlQUJDU3RhZmYobixlW2FdLHQsYSxyKTtyZXR1cm4gbn0sXy5wcm90b3R5cGUuY3JlYXRlQUJDU3RhZmY9ZnVuY3Rpb24oZSx0LHIsbixhKXtlLmdldFRleHRTaXplLnVwZGF0ZUZvbnRzKHQpO2Zvcih2YXIgYz0wO2M8dC52b2ljZXMubGVuZ3RoO2MrKyl7dmFyIGg9bmV3IHkoYyx0LnZvaWNlcy5sZW5ndGgpOzA9PT1jPyhoLmJhcmZyb209InN0YXJ0Ij09PXQuY29ubmVjdEJhckxpbmVzfHwiY29udGludWUiPT09dC5jb25uZWN0QmFyTGluZXMsaC5iYXJ0bz0iY29udGludWUiPT09dC5jb25uZWN0QmFyTGluZXN8fCJlbmQiPT09dC5jb25uZWN0QmFyTGluZXMpOmguZHVwbGljYXRlPSEwLHQudGl0bGUmJnQudGl0bGVbY10mJihoLmhlYWRlcj10LnRpdGxlW2NdLnJlcGxhY2UoL1xcbi9nLCJcbiIpLGguaGVhZGVyUG9zaXRpb249NitlLmdldFRleHRTaXplLmJhc2VsaW5lVG9DZW50ZXIoaC5oZWFkZXIsInZvaWNlZm9udCIsInN0YWZmLWV4dHJhIHZvaWNlLW5hbWUiLGMsdC52b2ljZXMubGVuZ3RoKS9wLlNURVApLHQuY2xlZiYmInBlcmMiPT09dC5jbGVmLnR5cGUmJihoLmlzUGVyY3Vzc2lvbj0hMCk7dmFyIHU9KCF0aGlzLmluaXRpYWxDbGVmfHwwPT09YSkmJnModC5jbGVmLHRoaXMudHVuZU51bWJlcik7dSYmKDA9PT1jJiZ0LmJhck51bWJlciYmdGhpcy5hZGRNZWFzdXJlTnVtYmVyKHQuYmFyTnVtYmVyLHUpLGguYWRkQ2hpbGQodSksdGhpcy5zdGFydGxpbWl0ZWxlbT11KTt2YXIgZD1vKHQua2V5LHRoaXMudHVuZU51bWJlcik7aWYoZCYmKGguYWRkQ2hpbGQoZCksdGhpcy5zdGFydGxpbWl0ZWxlbT1kKSx0Lm1ldGVyKXsic3BlY2lmaWVkIj09PXQubWV0ZXIudHlwZT90aGlzLm1lYXN1cmVMZW5ndGg9dC5tZXRlci52YWx1ZVswXS5udW0vdC5tZXRlci52YWx1ZVswXS5kZW46dGhpcy5tZWFzdXJlTGVuZ3RoPTE7dmFyIGY9bCh0Lm1ldGVyLHRoaXMudHVuZU51bWJlcik7aC5hZGRDaGlsZChmKSx0aGlzLnN0YXJ0bGltaXRlbGVtPWZ9aC5kdXBsaWNhdGUmJihoLmNoaWxkcmVuPVtdKTt2YXIgbT10LmNsZWYuc3RhZmZsaW5lc3x8MD09PXQuY2xlZi5zdGFmZmxpbmVzP3QuY2xlZi5zdGFmZmxpbmVzOjU7ZS5hZGRWb2ljZShoLG4sbSk7dmFyIGc9MT09PW07dGhpcy5jcmVhdGVBQkNWb2ljZSh0LnZvaWNlc1tjXSxyLG4sYyxnLGgpLGUuc2V0U3RhZmZMaW1pdHMoaCksMD09PWMmJigic3RhcnQiPT09dC5icmFjZXx8IWUuYnJhY2UmJnQuYnJhY2U/KGUuYnJhY2V8fChlLmJyYWNlPVtdKSxlLmJyYWNlLnB1c2gobmV3IGkoaCwiYnJhY2UiKSkpOiJlbmQiPT09dC5icmFjZSYmZS5icmFjZT9lLmJyYWNlW2UuYnJhY2UubGVuZ3RoLTFdLnNldEJvdHRvbVN0YWZmKGgpOiJjb250aW51ZSI9PT10LmJyYWNlJiZlLmJyYWNlJiZlLmJyYWNlW2UuYnJhY2UubGVuZ3RoLTFdLmNvbnRpbnVpbmcoaCksInN0YXJ0Ij09PXQuYnJhY2tldHx8IWUuYnJhY2tldCYmdC5icmFja2V0PyhlLmJyYWNrZXR8fChlLmJyYWNrZXQ9W10pLGUuYnJhY2tldC5wdXNoKG5ldyBpKGgsImJyYWNrZXQiKSkpOiJlbmQiPT09dC5icmFja2V0JiZlLmJyYWNrZXQ/ZS5icmFja2V0W2UuYnJhY2tldC5sZW5ndGgtMV0uc2V0Qm90dG9tU3RhZmYoaCk6ImNvbnRpbnVlIj09PXQuYnJhY2tldCYmZS5icmFja2V0JiZlLmJyYWNrZXRbZS5icmFja2V0Lmxlbmd0aC0xXS5jb250aW51aW5nKGgpKX19LF8ucHJvdG90eXBlLmNyZWF0ZUFCQ1ZvaWNlPWZ1bmN0aW9uKGUsdCxyLGEsaSxzKXt0aGlzLnBvcENyb3NzTGluZUVsZW1zKHIsYSksdGhpcy5zdGVtZGlyPXRoaXMuaXNCYWdwaXBlcz8iZG93biI6bnVsbCx0aGlzLmFiY2xpbmU9ZSx0aGlzLnBhcnRzdGFydGVsZW0mJih0aGlzLnBhcnRzdGFydGVsZW09bmV3IHUoIiIsbnVsbCxudWxsKSxzLmFkZE90aGVyKHRoaXMucGFydHN0YXJ0ZWxlbSkpO3ZhciBvPXMudm9pY2V0b3RhbDwyPy0xOnMudm9pY2VudW1iZXI7Zm9yKHZhciBsIGluIHRoaXMuc2x1cnMpdGhpcy5zbHVycy5oYXNPd25Qcm9wZXJ0eShsKSYmKHRoaXMuc2x1cnNbbF09bmV3IHYoe2ZvcmNlOnRoaXMuc2x1cnNbbF0uZm9yY2Usdm9pY2VOdW1iZXI6byxzdGVtRGlyOnRoaXMuc2x1cnNbbF0uc3RlbURpcixzdHlsZTp0aGlzLnNsdXJzW2xdLmRvdHRlZH0pLFQmJnRoaXMuc2x1cnNbbF0uc2V0SGludCgpLHMuYWRkT3RoZXIodGhpcy5zbHVyc1tsXSkpO2Zvcih2YXIgaD0wO2g8dGhpcy50aWVzLmxlbmd0aDtoKyspdGhpcy50aWVzW2hdPW5ldyB2KHtmb3JjZTp0aGlzLnRpZXNbaF0uZm9yY2Usc3RlbURpcjp0aGlzLnRpZXNbaF0uc3RlbURpcix2b2ljZU51bWJlcjpvLHN0eWxlOnRoaXMudGllc1toXS5kb3R0ZWR9KSxUJiZ0aGlzLnRpZXNbaF0uc2V0SGludCgpLHMuYWRkT3RoZXIodGhpcy50aWVzW2hdKTtmb3IodmFyIGQ9MDtkPHRoaXMuYWJjbGluZS5sZW5ndGg7ZCsrKU0odGhpcy5hYmNsaW5lW2RdKSx0aGlzLm1pblk9TWF0aC5taW4odGhpcy5hYmNsaW5lW2RdLm1pbnBpdGNoLHRoaXMubWluWSk7Zm9yKHZhciBmPTA9PT1yLHA9MDtwPHRoaXMuYWJjbGluZS5sZW5ndGg7KXt2YXIgbT1FKHRoaXMuYWJjbGluZSxwKSxiPXRoaXMuY3JlYXRlQUJDRWxlbWVudChmLGkscyxtLmVsZW0pO2lmKGIpZm9yKGg9MDtoPGIubGVuZ3RoO2grKyl7aWYoIXRoaXMudGVtcG9TZXQmJnQmJiF0LnN1cHByZXNzKXt0aGlzLnRlbXBvU2V0PSEwO3ZhciB5PW5ldyBuKHQsMCwwLCJ0ZW1wbyIsdGhpcy50dW5lTnVtYmVyLHt9KTt5LmFkZEZpeGVkWChuZXcgZyh0LHRoaXMudHVuZU51bWJlcixjKSkscy5hZGRDaGlsZCh5KX1zLmFkZENoaWxkKGJbaF0pfXArPW0uY291bnR9dGhpcy5wdXNoQ3Jvc3NMaW5lRWxlbXMocixhKX0sXy5wcm90b3R5cGUuc2F2ZVN0YXRlPWZ1bmN0aW9uKCl7dGhpcy50aWVzU2F2ZT13LmNsb25lQXJyYXkodGhpcy50aWVzKSx0aGlzLnNsdXJzU2F2ZT13LmNsb25lSGFzaE9mSGFzaCh0aGlzLnNsdXJzKSx0aGlzLnNsdXJzYnl2b2ljZVNhdmU9dy5jbG9uZUhhc2hPZkhhc2godGhpcy5zbHVyc2J5dm9pY2UpLHRoaXMudGllc2J5dm9pY2VTYXZlPXcuY2xvbmVIYXNoT2ZBcnJheU9mSGFzaCh0aGlzLnRpZXNieXZvaWNlKX0sXy5wcm90b3R5cGUucmVzdG9yZVN0YXRlPWZ1bmN0aW9uKCl7dGhpcy50aWVzPXcuY2xvbmVBcnJheSh0aGlzLnRpZXNTYXZlKSx0aGlzLnNsdXJzPXcuY2xvbmVIYXNoT2ZIYXNoKHRoaXMuc2x1cnNTYXZlKSx0aGlzLnNsdXJzYnl2b2ljZT13LmNsb25lSGFzaE9mSGFzaCh0aGlzLnNsdXJzYnl2b2ljZVNhdmUpLHRoaXMudGllc2J5dm9pY2U9dy5jbG9uZUhhc2hPZkFycmF5T2ZIYXNoKHRoaXMudGllc2J5dm9pY2VTYXZlKX0sXy5wcm90b3R5cGUuY3JlYXRlQUJDRWxlbWVudD1mdW5jdGlvbihlLHQscixhKXt2YXIgaT1bXTtzd2l0Y2goYS5lbF90eXBlKXtjYXNlIHZvaWQgMDppPXRoaXMuY3JlYXRlQmVhbSh0LHIsYSk7YnJlYWs7Y2FzZSJub3RlIjppWzBdPXRoaXMuY3JlYXRlTm90ZShhLCExLHQsciksdGhpcy50cmlwbGV0JiZ0aGlzLnRyaXBsZXQuaXNDbG9zZWQoKSYmKHIuYWRkT3RoZXIodGhpcy50cmlwbGV0KSx0aGlzLnRyaXBsZXQ9bnVsbCx0aGlzLnRyaXBsZXRtdWx0aXBsaWVyPTEpO2JyZWFrO2Nhc2UiYmFyIjppWzBdPXRoaXMuY3JlYXRlQmFyTGluZShyLGEsZSksci5kdXBsaWNhdGUmJmkubGVuZ3RoPjAmJihpWzBdLmludmlzaWJsZT0hMCk7YnJlYWs7Y2FzZSJtZXRlciI6aVswXT1sKGEsdGhpcy50dW5lTnVtYmVyKSx0aGlzLnN0YXJ0bGltaXRlbGVtPWlbMF0sci5kdXBsaWNhdGUmJmkubGVuZ3RoPjAmJihpWzBdLmludmlzaWJsZT0hMCk7YnJlYWs7Y2FzZSJjbGVmIjppZihpWzBdPXMoYSx0aGlzLnR1bmVOdW1iZXIpLCFpWzBdKXJldHVybiBudWxsO3IuZHVwbGljYXRlJiZpLmxlbmd0aD4wJiYoaVswXS5pbnZpc2libGU9ITApO2JyZWFrO2Nhc2Uia2V5Ijp2YXIgaD1vKGEsdGhpcy50dW5lTnVtYmVyKTtoJiYoaVswXT1oLHRoaXMuc3RhcnRsaW1pdGVsZW09aVswXSksci5kdXBsaWNhdGUmJmkubGVuZ3RoPjAmJihpWzBdLmludmlzaWJsZT0hMCk7YnJlYWs7Y2FzZSJzdGVtIjp0aGlzLnN0ZW1kaXI9ImF1dG8iPT09YS5kaXJlY3Rpb24/dm9pZCAwOmEuZGlyZWN0aW9uO2JyZWFrO2Nhc2UicGFydCI6dmFyIHU9bmV3IG4oYSwwLDAsInBhcnQiLHRoaXMudHVuZU51bWJlciksZD10aGlzLmdldFRleHRTaXplLmNhbGMoYS50aXRsZSwicGFydHNmb250IiwicGFydCIpO3UuYWRkRml4ZWRYKG5ldyBmKGEudGl0bGUsMCwwLHZvaWQgMCx7dHlwZToicGFydCIsaGVpZ2h0OmQuaGVpZ2h0L3AuU1RFUH0pKSxpWzBdPXU7YnJlYWs7Y2FzZSJ0ZW1wbyI6dmFyIG09bmV3IG4oYSwwLDAsInRlbXBvIix0aGlzLnR1bmVOdW1iZXIpO20uYWRkRml4ZWRYKG5ldyBnKGEsdGhpcy50dW5lTnVtYmVyLGMpKSxpWzBdPW07YnJlYWs7Y2FzZSJzdHlsZSI6Im5vcm1hbCI9PT1hLmhlYWQ/ZGVsZXRlIHRoaXMuc3R5bGU6dGhpcy5zdHlsZT1hLmhlYWQ7YnJlYWs7Y2FzZSJoaW50IjpUPSEwLHRoaXMuc2F2ZVN0YXRlKCk7YnJlYWs7Y2FzZSJtaWRpIjpicmVhaztjYXNlInNjYWxlIjp0aGlzLnZvaWNlU2NhbGU9YS5zaXplO2JyZWFrO2Nhc2UiY29sb3IiOnRoaXMudm9pY2VDb2xvcj1hLmNvbG9yLHIuY29sb3I9dGhpcy52b2ljZUNvbG9yO2JyZWFrO2RlZmF1bHQ6dmFyIHY9bmV3IG4oYSwwLDAsInVuc3VwcG9ydGVkIix0aGlzLnR1bmVOdW1iZXIpO3YuYWRkRml4ZWQobmV3IGYoImVsZW1lbnQgdHlwZSAiK2EuZWxfdHlwZSwwLDAsdm9pZCAwLHt0eXBlOiJkZWJ1ZyJ9KSksaVswXT12fXJldHVybiBpfSxfLnByb3RvdHlwZS5jcmVhdGVCZWFtPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1bXSxpPW5ldyBhKHRoaXMuc3RlbUhlaWdodCp0aGlzLnZvaWNlU2NhbGUsdGhpcy5zdGVtZGlyLHRoaXMuZmxhdEJlYW1zLHJbMF0pO1QmJmkuc2V0SGludCgpO2Zvcih2YXIgcz0wO3M8ci5sZW5ndGg7cysrKWkucnVubmluZ0RpcmVjdGlvbihyW3NdKTtpLnNldFN0ZW1EaXJlY3Rpb24oKTt2YXIgbz10aGlzLnN0ZW1kaXI7Zm9yKHRoaXMuc3RlbWRpcj1pLnN0ZW1zVXA/InVwIjoiZG93biIscz0wO3M8ci5sZW5ndGg7cysrKXt2YXIgYz1yW3NdLGw9dGhpcy5jcmVhdGVOb3RlKGMsITAsZSx0KTtuLnB1c2gobCksaS5hZGQobCksdGhpcy50cmlwbGV0JiZ0aGlzLnRyaXBsZXQuaXNDbG9zZWQoKSYmKHQuYWRkT3RoZXIodGhpcy50cmlwbGV0KSx0aGlzLnRyaXBsZXQ9bnVsbCx0aGlzLnRyaXBsZXRtdWx0aXBsaWVyPTEpfXJldHVybiBpLmNhbGNEaXIoKSx0LmFkZEJlYW0oaSksdGhpcy5zdGVtZGlyPW8sbn07dmFyIEE9ZnVuY3Rpb24oZSl7dmFyIHQ7ZG97dD0hMDtmb3IodmFyIHI9MDtyPGUucGl0Y2hlcy5sZW5ndGgtMTtyKyspaWYoZS5waXRjaGVzW3JdLnBpdGNoPmUucGl0Y2hlc1tyKzFdLnBpdGNoKXt0PSExO3ZhciBuPWUucGl0Y2hlc1tyXTtlLnBpdGNoZXNbcl09ZS5waXRjaGVzW3IrMV0sZS5waXRjaGVzW3IrMV09bn19d2hpbGUoIXQpfSxOPWZ1bmN0aW9uKGUsdCxyLG4sYSxpLHMsbyxjKXtmb3IodmFyIGw9cjtsPjExO2wtLSlsJTIhPTB8fG58fGUuYWRkRml4ZWQobmV3IGYobnVsbCxvLChhKzQpKmMsbCx7dHlwZToibGVkZ2VyIn0pKTtmb3IobD10O2w8MTtsKyspbCUyIT0wfHxufHxlLmFkZEZpeGVkKG5ldyBmKG51bGwsbywoYSs0KSpjLGwse3R5cGU6ImxlZGdlciJ9KSk7Zm9yKGw9MDtsPGkubGVuZ3RoO2wrKyl7dmFyIGg9YTsiZG93biI9PT1zJiYoaD0taCksZS5hZGRGaXhlZChuZXcgZihudWxsLGgrbywoYSs0KSpjLGlbbF0se3R5cGU6ImxlZGdlciJ9KSl9fTtmdW5jdGlvbiBCKGUsdCl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspaWYoSlNPTi5zdHJpbmdpZnkoZVtyXSk9PT1KU09OLnN0cmluZ2lmeSh0KSlyZXR1cm47ZS5wdXNoKHQpfV8ucHJvdG90eXBlLmFkZEdyYWNlTm90ZXM9ZnVuY3Rpb24oZSx0LHIsbixpLHMsbyl7dmFyIGw9LjY7aT1NYXRoLnJvdW5kKC43KmkpO3ZhciBoLHUscD1udWxsO2UuZ3JhY2Vub3Rlcy5sZW5ndGg+MSYmKHA9bmV3IGEoaSwiZ3JhY2UiLHMpLFQmJnAuc2V0SGludCgpLHAubWFpbk5vdGU9cik7dmFyIG09W107Zm9yKHU9ZS5ncmFjZW5vdGVzLmxlbmd0aC0xO3U+PTA7dS0tKW8rPTEwLG1bdV09byxlLmdyYWNlbm90ZXNbdV0uYWNjaWRlbnRhbCYmKG8rPTcpO2Zvcih1PTA7dTxlLmdyYWNlbm90ZXMubGVuZ3RoO3UrKyl7dmFyIGc9ZS5ncmFjZW5vdGVzW3VdLnZlcnRpY2FsUG9zO2g9cD9udWxsOlMudWZsYWdzW3M/NTozXTt2YXIgYj1jKHIsIm5vdGVoZWFkcy5xdWFydGVyIixlLmdyYWNlbm90ZXNbdV0se2RpcjoidXAiLGhlYWR4Oi1tW3VdLGV4dHJheDotbVt1XSxmbGFnOmgsc2NhbGU6bCp0aGlzLnZvaWNlU2NhbGUsYWNjaWRlbnRhbFNsb3Q6W119KTtiLm5vdGVoZWFkLmhpZ2hlc3RWZXJ0PWIubm90ZWhlYWQucGl0Y2graTt2YXIgeT1iLm5vdGVoZWFkO2lmKHRoaXMuYWRkU2x1cnNBbmRUaWVzKHIsZS5ncmFjZW5vdGVzW3VdLHksdCwidXAiLCEwKSxyLmFkZEV4dHJhKHkpLGUuZ3JhY2Vub3Rlc1t1XS5hY2NpYWNjYXR1cmEpe3ZhciB4PWUuZ3JhY2Vub3Rlc1t1XS52ZXJ0aWNhbFBvcys0LjIsaz1wPzU6NjtyLmFkZFJpZ2h0KG5ldyBmKCJmbGFncy51Z3JhY2UiLC1tW3VdK2ssMCx4LHtzY2FsZXg6bCxzY2FsZXk6bH0pKX1pZihwKXt2YXIgdz1lLmdyYWNlbm90ZXNbdV0uZHVyYXRpb24vMjtzJiYody89Mik7dmFyIEM9e2hlYWRzOlt5XSxhYmNlbGVtOnthdmVyYWdlcGl0Y2g6ZyxtaW5waXRjaDpnLG1heHBpdGNoOmcsZHVyYXRpb246d319O3AuYWRkKEMpfWVsc2V7dmFyIF89ZysxLzMqbCxFPWcrNC4yLE09eS5keCt5Lnc7ci5hZGRFeHRyYShuZXcgZihudWxsLE0sMCxfLHt0eXBlOiJzdGVtIixwaXRjaDI6RSxsaW5ld2lkdGg6LS42fSkpfU4ocixnLGcsITEsZC5nZXRTeW1ib2xXaWR0aCgibm90ZWhlYWRzLnF1YXJ0ZXIiKSxbXSwhMCx5LmR4LTEsLjYpO3ZhciBBPWUucmVzdCYmKCJzcGFjZXIiPT09ZS5yZXN0LnR5cGV8fCJpbnZpc2libGUiPT09ZS5yZXN0LnR5cGUpOzAhPT11fHxzfHwhdGhpcy5ncmFjZVNsdXJzfHxBfHx0LmFkZE90aGVyKG5ldyB2KHthbmNob3IxOnksYW5jaG9yMjpuLGlzR3JhY2U6ITB9KSl9cmV0dXJuIHAmJihwLmNhbGNEaXIoKSx0LmFkZEJlYW0ocCkpLG99LF8ucHJvdG90eXBlLmFkZE5vdGVUb0FiY0VsZW1lbnQ9ZnVuY3Rpb24oZSx0LHIsbixhLGkscyxvLGwpe3ZhciBoLHUscCxtLGcsdj0wLGI9MCx5PTAseD1bXSx3PVtdLFQ9MCxfPXQuYXZlcmFnZXBpdGNoPj02PyJkb3duIjoidXAiO2ZvcihuJiYoXz1uKSwoYT10LnN0eWxlP3Quc3R5bGU6YSkmJiJub3JtYWwiIT09YXx8KGE9Im5vdGUiKSwobT1pP1NbYV0ubm9zdGVtOlNbYV1bLXNdKXx8Y29uc29sZS5sb2coIm5vdGVTeW1ib2w6IixhLHMsaSksZz0iZG93biI9PT1fP3QucGl0Y2hlcy5sZW5ndGgtMjoxOyJkb3duIj09PV8/Zz49MDpnPHQucGl0Y2hlcy5sZW5ndGg7Zz0iZG93biI9PT1fP2ctMTpnKzEpe3ZhciBFPXQucGl0Y2hlc1siZG93biI9PT1fP2crMTpnLTFdLE09dC5waXRjaGVzW2ddLEE9ImRvd24iPT09Xz9FLnBpdGNoLU0ucGl0Y2g6TS5waXRjaC1FLnBpdGNoO0E8PTEmJiFFLnByaW50ZXJfc2hpZnQmJihNLnByaW50ZXJfc2hpZnQ9QT8iZGlmZmVyZW50Ijoic2FtZSIsKE0udmVydGljYWxQb3M+MTF8fE0udmVydGljYWxQb3M8MSkmJngucHVzaChNLnZlcnRpY2FsUG9zLU0udmVydGljYWxQb3MlMiksImRvd24iPT09Xz9iPWQuZ2V0U3ltYm9sV2lkdGgobSkrMjp2PWQuZ2V0U3ltYm9sV2lkdGgobSkrMil9dmFyIE49dC5waXRjaGVzLmxlbmd0aDtmb3IoZz0wO2c8dC5waXRjaGVzLmxlbmd0aDtnKyspe3ZhciBQLEw7aWYob3x8KFA9ImRvd24iPT09XyYmMCE9PWd8fCJ1cCI9PT1fJiZnIT09Ti0xP251bGw6U1siZG93biI9PT1fPyJkZmxhZ3MiOiJ1ZmxhZ3MiXVstc10pLHQucGl0Y2hlc1tnXS5zdHlsZSlMPVNbdC5waXRjaGVzW2ddLnN0eWxlXVstc107ZWxzZSBpZihsLmlzUGVyY3Vzc2lvbiYmdGhpcy5wZXJjbWFwKXtMPW07dmFyIE89dGhpcy5wZXJjbWFwW2sodC5waXRjaGVzW2ddKV07TyYmTy5ub3RlSGVhZCYmU1tPLm5vdGVIZWFkXSYmKEw9U1tPLm5vdGVIZWFkXVstc10pfWVsc2UgTD1tO2lmKHQucGl0Y2hlc1tnXS5oaWdoZXN0VmVydD10LnBpdGNoZXNbZ10udmVydGljYWxQb3MsKCJ1cCI9PT1ufHwidXAiPT09XykmJjA9PT1nfHwoImRvd24iPT09bnx8ImRvd24iPT09XykmJmc9PT1OLTEpe2lmKCh0LnN0YXJ0U2x1cnx8MT09PU4pJiYodC5waXRjaGVzW2ddLmhpZ2hlc3RWZXJ0PXQucGl0Y2hlc1tOLTFdLnZlcnRpY2FsUG9zLEModCk8MSYmKCJ1cCI9PT1ufHwidXAiPT09XykmJih0LnBpdGNoZXNbZ10uaGlnaGVzdFZlcnQrPTYpKSx0LnN0YXJ0U2x1cilmb3IodC5waXRjaGVzW2ddLnN0YXJ0U2x1cnx8KHQucGl0Y2hlc1tnXS5zdGFydFNsdXI9W10pLHA9MDtwPHQuc3RhcnRTbHVyLmxlbmd0aDtwKyspQih0LnBpdGNoZXNbZ10uc3RhcnRTbHVyLHQuc3RhcnRTbHVyW3BdKTtpZih0LmVuZFNsdXIpZm9yKHQucGl0Y2hlc1tnXS5oaWdoZXN0VmVydD10LnBpdGNoZXNbTi0xXS52ZXJ0aWNhbFBvcyxDKHQpPDEmJigidXAiPT09bnx8InVwIj09PV8pJiYodC5waXRjaGVzW2ddLmhpZ2hlc3RWZXJ0Kz02KSx0LnBpdGNoZXNbZ10uZW5kU2x1cnx8KHQucGl0Y2hlc1tnXS5lbmRTbHVyPVtdKSxwPTA7cDx0LmVuZFNsdXIubGVuZ3RoO3ArKylCKHQucGl0Y2hlc1tnXS5lbmRTbHVyLHQuZW5kU2x1cltwXSl9dmFyIEg9IW8mJnM8PS0xLHo9YyhlLEwsdC5waXRjaGVzW2ddLHtkaXI6XyxleHRyYXg6LWIsZmxhZzpQLGRvdDpyLGRvdHNoaWZ0eDp2LHNjYWxlOnRoaXMudm9pY2VTY2FsZSxhY2NpZGVudGFsU2xvdDp3LHNob3VsZEV4dGVuZFN0ZW06IW4scHJpbnRBY2NpZGVudGFsczohbC5pc1BlcmN1c3Npb259KTtUPU1hdGgubWF4KGQuZ2V0U3ltYm9sV2lkdGgoTCksVCksZS5leHRyYXctPXouZXh0cmFMZWZ0LChoPXoubm90ZWhlYWQpJiYodGhpcy5hZGRTbHVyc0FuZFRpZXMoZSx0LnBpdGNoZXNbZ10saCxsLEg/XzpudWxsLCExKSx0LmdyYWNlbm90ZXMmJnQuZ3JhY2Vub3Rlcy5sZW5ndGg+MCYmKGguYm90dG9tPWguYm90dG9tLTEpLGUuYWRkSGVhZChoKSksYis9ei5hY2NpZGVudGFsc2hpZnR4LHk9TWF0aC5tYXgoeSx6LmRvdHNoaWZ0eCl9aWYoSCl7dmFyIEQ9TWF0aC5yb3VuZCg3MCp0aGlzLnZvaWNlU2NhbGUpLzEwLEY9ImRvd24iPT09Xz90Lm1pbnBpdGNoLUQ6dC5taW5waXRjaCsxLzM7Rj42JiYhbiYmKEY9Nik7dmFyIGo9ImRvd24iPT09Xz90Lm1heHBpdGNoLTEvMzp0Lm1heHBpdGNoK0Q7ajw2JiYhbiYmKGo9Nik7dmFyIEk9ImRvd24iPT09X3x8MD09PWUuaGVhZHMubGVuZ3RoPzA6ZS5oZWFkc1swXS53LFY9ImRvd24iPT09Xz8xOi0xO2gmJiJub3RlaGVhZHMuc2xhc2gucXVhcnRlciI9PT1oLmMmJigiZG93biI9PT1fP2otPTE6Ris9MSksaCYmIm5vdGVoZWFkcy50cmlhbmdsZS5xdWFydGVyIj09PWguYyYmKCJkb3duIj09PV8/ai09Ljc6Ri09MS4yKSxlLmFkZFJpZ2h0KG5ldyBmKG51bGwsSSwwLEYse3R5cGU6InN0ZW0iLHBpdGNoMjpqLGxpbmV3aWR0aDpWLGJvdHRvbTpGLTF9KSksdT1NYXRoLm1pbihGLGopfXJldHVybntub3RlSGVhZDpoLHJvb21UYWtlbjpiLHJvb21UYWtlblJpZ2h0OnksbWluOnUsYWRkaXRpb25hbExlZGdlcnM6eCxkaXI6XyxzeW1ib2xXaWR0aDpUfX0sXy5wcm90b3R5cGUuYWRkTHlyaWM9ZnVuY3Rpb24oZSx0KXt2YXIgcj0iIjt0Lmx5cmljLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PSIgIj09PWUuZGl2aWRlcj8iIjplLmRpdmlkZXI7cis9ZS5zeWxsYWJsZSt0KyJcbiJ9KSk7dmFyIG49dGhpcy5nZXRUZXh0U2l6ZS5jYWxjKHIsInZvY2FsZm9udCIsImx5cmljIiksYT10LnBvc2l0aW9uaW5nP3QucG9zaXRpb25pbmcudm9jYWxQb3NpdGlvbjoiYmVsb3ciO2UuYWRkQ2VudGVyZWQobmV3IGYociwwLG4ud2lkdGgsdm9pZCAwLHt0eXBlOiJseXJpYyIscG9zaXRpb246YSxoZWlnaHQ6bi5oZWlnaHQvcC5TVEVQLGRpbTp0aGlzLmdldFRleHRTaXplLmF0dHIoInZvY2FsZm9udCIsImx5cmljIil9KSl9LF8ucHJvdG90eXBlLmNyZWF0ZU5vdGU9ZnVuY3Rpb24oZSx0LHIsYSl7dmFyIGkscz1udWxsLG89MCxsPTAsaD0wLHU9W10scD1DKGUpLG09ITE7MD09PXAmJihtPSEwLHA9LjI1LHQ9ITApO2Zvcih2YXIgZz1NYXRoLmZsb29yKE1hdGgubG9nKHApL01hdGgubG9nKDIpKSx2PTAseT1NYXRoLnBvdygyLGcpLGs9eS8yO3k8cDt2KysseSs9ayxrLz0yKTtlLnN0YXJ0VHJpcGxldCYmKHRoaXMudHJpcGxldG11bHRpcGxpZXI9ZS50cmlwbGV0TXVsdGlwbGllcik7dmFyIHc9cCp0aGlzLnRyaXBsZXRtdWx0aXBsaWVyO2UucmVzdCYmIm11bHRpbWVhc3VyZSI9PT1lLnJlc3QudHlwZSYmKHc9MSksZS5yZXN0JiYiaW52aXNpYmxlLW11bHRpbWVhc3VyZSI9PT1lLnJlc3QudHlwZSYmKHc9dGhpcy5tZWFzdXJlTGVuZ3RoKmUucmVzdC50ZXh0KTt2YXIgXz1lLnJlc3Q/InJlc3QiOiJub3RlIixFPW5ldyBuKGUsdywxLF8sdGhpcy50dW5lTnVtYmVyLHtkdXJhdGlvbkNsYXNzT3ZlcmlkZTplLmR1cmF0aW9uKnRoaXMudHJpcGxldG11bHRpcGxpZXJ9KTtpZihUJiZFLnNldEhpbnQoKSxlLnJlc3Qpe3RoaXMubWVhc3VyZUxlbmd0aD09PXAmJiJpbnZpc2libGUiIT09ZS5yZXN0LnR5cGUmJiJzcGFjZXIiIT09ZS5yZXN0LnR5cGUmJmUucmVzdC50eXBlLmluZGV4T2YoIm11bHRpbWVhc3VyZSIpPDAmJihlLnJlc3QudHlwZT0id2hvbGUiKTt2YXIgTT1mdW5jdGlvbihlLHQscixuLGEsaSxzLG8sbCl7dmFyIGgsdSxwLG0sZz03O3N3aXRjaChhJiYoImRvd24iPT09aSYmKGc9MyksInVwIj09PWkmJihnPTExKSkscyYmKGc9cjwuNXx8cjwxPzc6NSksdC5yZXN0LnR5cGUpe2Nhc2Uid2hvbGUiOmg9Uy5yZXN0WzBdLHQuYXZlcmFnZXBpdGNoPWcsdC5taW5waXRjaD1nLHQubWF4cGl0Y2g9ZyxuPTA7YnJlYWs7Y2FzZSJyZXN0IjpoPSJyaHl0aG0iPT09dC5zdHlsZT9TLnJoeXRobVstb106Uy5yZXN0Wy1vXSx0LmF2ZXJhZ2VwaXRjaD1nLHQubWlucGl0Y2g9Zyx0Lm1heHBpdGNoPWc7YnJlYWs7Y2FzZSJpbnZpc2libGUiOmNhc2UiaW52aXNpYmxlLW11bHRpbWVhc3VyZSI6Y2FzZSJzcGFjZXIiOmg9IiIsdC5hdmVyYWdlcGl0Y2g9Zyx0Lm1pbnBpdGNoPWcsdC5tYXhwaXRjaD1nO2JyZWFrO2Nhc2UibXVsdGltZWFzdXJlIjpoPVMucmVzdC5tdWx0aSx0LmF2ZXJhZ2VwaXRjaD1nLHQubWlucGl0Y2g9Zyx0Lm1heHBpdGNoPWcsbj0wO3ZhciB2PWQuZ2V0U3ltYm9sV2lkdGgoaCk7ZS5hZGRIZWFkKG5ldyBmKGgsdiwyKnYsNykpO3ZhciBiPW5ldyBmKCIiK3QucmVzdC50ZXh0LHYsdiwxNix7dHlwZToibXVsdGltZWFzdXJlLXRleHQifSk7ZS5hZGRFeHRyYShiKX1pZih0LnJlc3QudHlwZS5pbmRleE9mKCJtdWx0aW1lYXN1cmUiKTwwJiYiaW52aXNpYmxlIiE9PXQucmVzdC50eXBlKXt2YXIgeT1jKGUsaCx7dmVydGljYWxQb3M6Z30se2RvdDpuLHNjYWxlOmx9KTsodT15Lm5vdGVoZWFkKSYmKGUuYWRkSGVhZCh1KSxwPXkuYWNjaWRlbnRhbHNoaWZ0eCxtPXkuZG90c2hpZnR4KX1yZXR1cm57bm90ZUhlYWQ6dSxyb29tVGFrZW46cCxyb29tVGFrZW5SaWdodDptfX0oRSxlLHAsdixhLnZvaWNldG90YWw+MSx0aGlzLnN0ZW1kaXIscixnLHRoaXMudm9pY2VTY2FsZSk7cz1NLm5vdGVIZWFkLG89TS5yb29tVGFrZW4sbD1NLnJvb21UYWtlblJpZ2h0fWVsc2V7dmFyIEE9dGhpcy5hZGROb3RlVG9BYmNFbGVtZW50KEUsZSx2LHRoaXMuc3RlbWRpcix0aGlzLnN0eWxlLG0sZyx0LGEpO3ZvaWQgMCE9PUEubWluJiYodGhpcy5taW5ZPU1hdGgubWluKEEubWluLHRoaXMubWluWSkpLHM9QS5ub3RlSGVhZCxvPUEucm9vbVRha2VuLGw9QS5yb29tVGFrZW5SaWdodCx1PUEuYWRkaXRpb25hbExlZGdlcnMsaT1BLmRpcixoPUEuc3ltYm9sV2lkdGh9aWYodm9pZCAwIT09ZS5seXJpYyYmdGhpcy5hZGRMeXJpYyhFLGUpLHZvaWQgMCE9PWUuZ3JhY2Vub3RlcyYmKG8rPXRoaXMuYWRkR3JhY2VOb3RlcyhlLGEsRSxzLHRoaXMuc3RlbUhlaWdodCp0aGlzLnZvaWNlU2NhbGUsdGhpcy5pc0JhZ3BpcGVzLG8pKSxlLmRlY29yYXRpb24pe3ZhciBCPXQmJiJ1cCIhPT1pP01hdGgubWluKC0zLEUuYm90dG9tLTYpOkUuYm90dG9tO3RoaXMuZGVjb3JhdGlvbi5jcmVhdGVEZWNvcmF0aW9uKGEsZS5kZWNvcmF0aW9uLEUudG9wLHM/cy53OjAsRSxvLGksQixlLnBvc2l0aW9uaW5nLHRoaXMuaGFzVm9jYWxzLHRoaXMuYWNjZW50QWJvdmUpfWlmKGUuYmFyTnVtYmVyJiZFLmFkZEZpeGVkKG5ldyBmKGUuYmFyTnVtYmVyLC0xMCwwLDAse3R5cGU6ImJhck51bWJlciJ9KSksTihFLGUubWlucGl0Y2gsZS5tYXhwaXRjaCxlLnJlc3QsaCx1LGksLTIsMSksdm9pZCAwIT09ZS5jaG9yZCl7dmFyIFA9eCh0aGlzLmdldFRleHRTaXplLEUsZSxvLGwsaCx0aGlzLmphenpjaG9yZHMsdGhpcy5nZXJtYW5BbHBoYWJldCk7bz1QLnJvb21UYWtlbixsPVAucm9vbVRha2VuUmlnaHR9cmV0dXJuIGUuc3RhcnRUcmlwbGV0JiYodGhpcy50cmlwbGV0PW5ldyBiKGUuc3RhcnRUcmlwbGV0LHMse2ZsYXRCZWFtczp0aGlzLmZsYXRCZWFtc30pKSxlLmVuZFRyaXBsZXQmJnRoaXMudHJpcGxldCYmdGhpcy50cmlwbGV0LnNldENsb3NlQW5jaG9yKHMpLCF0aGlzLnRyaXBsZXR8fGUuc3RhcnRUcmlwbGV0fHxlLmVuZFRyaXBsZXR8fGUucmVzdCYmInNwYWNlciI9PT1lLnJlc3QudHlwZXx8dGhpcy50cmlwbGV0Lm1pZGRsZU5vdGUocyksRX0sXy5wcm90b3R5cGUuYWRkU2x1cnNBbmRUaWVzPWZ1bmN0aW9uKGUsdCxyLG4sYSxpKXtpZih0LmVuZFRpZSYmdGhpcy50aWVzLmxlbmd0aD4wKXtmb3IodmFyIHM9ITEsbz0wO288dGhpcy50aWVzLmxlbmd0aDtvKyspaWYodGhpcy50aWVzW29dLmFuY2hvcjEmJnRoaXMudGllc1tvXS5hbmNob3IxLnBpdGNoPT09ci5waXRjaCl7dGhpcy50aWVzW29dLnNldEVuZEFuY2hvcihyKSxuLnNldFJhbmdlKHRoaXMudGllc1tvXSksdGhpcy50aWVzLnNwbGljZShvLDEpLHM9ITA7YnJlYWt9c3x8KHRoaXMudGllc1swXS5zZXRFbmRBbmNob3Iociksbi5zZXRSYW5nZSh0aGlzLnRpZXNbMF0pLHRoaXMudGllcy5zcGxpY2UoMCwxKSl9dmFyIGMsbCxoPW4udm9pY2V0b3RhbDwyPy0xOm4udm9pY2VudW1iZXI7aWYodC5zdGFydFRpZSl7dmFyIHU9bmV3IHYoe2FuY2hvcjE6cixmb3JjZToiZG93biI9PT10aGlzLnN0ZW1kaXJ8fCJ1cCI9PT10aGlzLnN0ZW1kaXIsc3RlbURpcjp0aGlzLnN0ZW1kaXIsaXNHcmFjZTppLHZvaWNlTnVtYmVyOmgsc3R5bGU6dC5zdGFydFRpZS5zdHlsZX0pO1QmJnUuc2V0SGludCgpLHRoaXMudGllc1t0aGlzLnRpZXMubGVuZ3RoXT11LG4uYWRkT3RoZXIodSksZS5zdGFydFRpZT0hMH1pZih0LmVuZFNsdXIpZm9yKHZhciBkPTA7ZDx0LmVuZFNsdXIubGVuZ3RoO2QrKylsPXQuZW5kU2x1cltkXSx0aGlzLnNsdXJzW2xdPygoYz10aGlzLnNsdXJzW2xdKS5zZXRFbmRBbmNob3Iociksbi5zZXRSYW5nZShjKSxkZWxldGUgdGhpcy5zbHVyc1tsXSk6KGM9bmV3IHYoe2FuY2hvcjI6cixzdGVtRGlyOnRoaXMuc3RlbWRpcix2b2ljZU51bWJlcjpofSksVCYmYy5zZXRIaW50KCksbi5hZGRPdGhlcihjKSksdGhpcy5zdGFydGxpbWl0ZWxlbSYmYy5zZXRTdGFydFgodGhpcy5zdGFydGxpbWl0ZWxlbSk7ZWxzZSBpZighaSlmb3IodmFyIGYgaW4gdGhpcy5zbHVycyl0aGlzLnNsdXJzLmhhc093blByb3BlcnR5KGYpJiZ0aGlzLnNsdXJzW2ZdLmFkZEludGVybmFsTm90ZShyKTtpZih0LnN0YXJ0U2x1cilmb3IoZD0wO2Q8dC5zdGFydFNsdXIubGVuZ3RoO2QrKylsPXQuc3RhcnRTbHVyW2RdLmxhYmVsLGM9bmV3IHYoe2FuY2hvcjE6cixzdGVtRGlyOnRoaXMuc3RlbWRpcix2b2ljZU51bWJlcjpoLHN0eWxlOnQuc3RhcnRTbHVyW2RdLnN0eWxlfSksVCYmYy5zZXRIaW50KCksdGhpcy5zbHVyc1tsXT1jLG4uYWRkT3RoZXIoYyl9LF8ucHJvdG90eXBlLmFkZE1lYXN1cmVOdW1iZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmdldFRleHRTaXplLmNhbGMoZSwibWVhc3VyZWZvbnQiLCJiYXItbnVtYmVyIiksbj0wO3QuaXNDbGVmJiYobis9ci53aWR0aC8yKTt2YXIgYT1yLndpZHRoPjEwJiYidHJlYmxlIj09PXQuYWJjZWxlbS50eXBlPzEzLjU6MTE7dC5hZGRGaXhlZChuZXcgZihlLG4sci53aWR0aCxhK3IuaGVpZ2h0L3AuU1RFUCx7dHlwZToiYmFyTnVtYmVyIixkaW06dGhpcy5nZXRUZXh0U2l6ZS5hdHRyKCJtZWFzdXJlZm9udCIsImJhci1udW1iZXIiKX0pKX0sXy5wcm90b3R5cGUuY3JlYXRlQmFyTGluZT1mdW5jdGlvbihlLHQscil7dmFyIGE9bmV3IG4odCwwLDEwLCJiYXIiLHRoaXMudHVuZU51bWJlciksaT1udWxsLHM9MDt0LmJhck51bWJlciYmdGhpcy5hZGRNZWFzdXJlTnVtYmVyKHQuYmFyTnVtYmVyLGEpO3ZhciBvPSJiYXJfcmlnaHRfcmVwZWF0Ij09PXQudHlwZXx8ImJhcl9kYmxfcmVwZWF0Ij09PXQudHlwZSxjPSJiYXJfbGVmdF9yZXBlYXQiIT09dC50eXBlJiYiYmFyX3RoaWNrX3RoaW4iIT09dC50eXBlJiYiYmFyX2ludmlzaWJsZSIhPT10LnR5cGUsbD0iYmFyX3JpZ2h0X3JlcGVhdCI9PT10LnR5cGV8fCJiYXJfZGJsX3JlcGVhdCI9PT10LnR5cGV8fCJiYXJfbGVmdF9yZXBlYXQiPT09dC50eXBlfHwiYmFyX3RoaW5fdGhpY2siPT09dC50eXBlfHwiYmFyX3RoaWNrX3RoaW4iPT09dC50eXBlLGg9ImJhcl9sZWZ0X3JlcGVhdCI9PT10LnR5cGV8fCJiYXJfdGhpY2tfdGhpbiI9PT10LnR5cGV8fCJiYXJfdGhpbl90aGluIj09PXQudHlwZXx8ImJhcl9kYmxfcmVwZWF0Ij09PXQudHlwZSxkPSJiYXJfbGVmdF9yZXBlYXQiPT09dC50eXBlfHwiYmFyX2RibF9yZXBlYXQiPT09dC50eXBlO2lmKG98fGQpe2Zvcih2YXIgcCBpbiB0aGlzLnNsdXJzKXRoaXMuc2x1cnMuaGFzT3duUHJvcGVydHkocCkmJnRoaXMuc2x1cnNbcF0uc2V0RW5kWChhKTt0aGlzLnN0YXJ0bGltaXRlbGVtPWF9aWYobyYmKGEuYWRkUmlnaHQobmV3IGYoImRvdHMuZG90IixzLDEsNykpLGEuYWRkUmlnaHQobmV3IGYoImRvdHMuZG90IixzLDEsNSkpLHMrPTYpLGMmJihpPW5ldyBmKG51bGwscywxLDIse3R5cGU6ImJhciIscGl0Y2gyOjEwLGxpbmV3aWR0aDouNn0pLGEuYWRkUmlnaHQoaSkpLCJiYXJfaW52aXNpYmxlIj09PXQudHlwZSYmKGk9bmV3IGYobnVsbCxzLDEsMix7dHlwZToibm9uZSIscGl0Y2gyOjEwLGxpbmV3aWR0aDouNn0pLGEuYWRkUmlnaHQoaSkpLHQuZGVjb3JhdGlvbiYmdGhpcy5kZWNvcmF0aW9uLmNyZWF0ZURlY29yYXRpb24oZSx0LmRlY29yYXRpb24sMTIsbD8zOjEsYSwwLCJkb3duIiwyLHQucG9zaXRpb25pbmcsdGhpcy5oYXNWb2NhbHMsdGhpcy5hY2NlbnRBYm92ZSksbCYmKGk9bmV3IGYobnVsbCxzKz00LDQsMix7dHlwZToiYmFyIixwaXRjaDI6MTAsbGluZXdpZHRoOjR9KSxhLmFkZFJpZ2h0KGkpLHMrPTUpLHRoaXMucGFydHN0YXJ0ZWxlbSYmdC5lbmRFbmRpbmcmJih0aGlzLnBhcnRzdGFydGVsZW0uYW5jaG9yMj1pLHRoaXMucGFydHN0YXJ0ZWxlbT1udWxsKSxoJiYoaT1uZXcgZihudWxsLHMrPTMsMSwyLHt0eXBlOiJiYXIiLHBpdGNoMjoxMCxsaW5ld2lkdGg6LjZ9KSxhLmFkZFJpZ2h0KGkpKSxkJiYocys9MyxhLmFkZFJpZ2h0KG5ldyBmKCJkb3RzLmRvdCIscywxLDcpKSxhLmFkZFJpZ2h0KG5ldyBmKCJkb3RzLmRvdCIscywxLDUpKSksdC5zdGFydEVuZGluZyYmciYmMD09PWUudm9pY2VudW1iZXIpe3ZhciBtPXRoaXMuZ2V0VGV4dFNpemUuY2FsYyh0LnN0YXJ0RW5kaW5nLCJyZXBlYXRmb250IiwiIikud2lkdGg7YS5taW5zcGFjaW5nKz1tKzEwLHRoaXMucGFydHN0YXJ0ZWxlbT1uZXcgdSh0LnN0YXJ0RW5kaW5nLGksbnVsbCksZS5hZGRPdGhlcih0aGlzLnBhcnRzdGFydGVsZW0pfXJldHVybiBhLmV4dHJhdy09NSx2b2lkIDAhPT10LmNob3JkJiZ4KHRoaXMuZ2V0VGV4dFNpemUsYSx0LDAsMCwwLCExLHRoaXMuZ2VybWFuQWxwaGFiZXQpLGF9LGUuZXhwb3J0cz1ffSwyNjUyOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY2NTgpLGE9cig0MzMxKSxpPXIoNTgxMCk7ZnVuY3Rpb24gcyhlLHQscixzLG8sYyxsLGgsdSxkLGYscCxtLGcsdil7Zm9yKHZhciBiPWUuc3BsaXQoIlxuIikseT1iLmxlbmd0aC0xO3k+PTA7eS0tKXt2YXIgeCxrPWJbeV0sdz0wO3N8fChrPWkoayxnLHYpKTt2YXIgQz1oLmNhbGMoayxvLGMpLFQ9Qy53aWR0aCxTPUMuaGVpZ2h0L2EuU1RFUDtzd2l0Y2godCl7Y2FzZSJsZWZ0Ijp3PS0oZis9VCs3KSx4PWQuYXZlcmFnZXBpdGNoLHUuYWRkRXh0cmEobmV3IG4oayx3LFQrNCx4LHt0eXBlOiJ0ZXh0IixoZWlnaHQ6UyxkaW06bCxwb3NpdGlvbjoibGVmdCJ9KSk7YnJlYWs7Y2FzZSJyaWdodCI6dz1wKz00LHg9ZC5hdmVyYWdlcGl0Y2gsdS5hZGRSaWdodChuZXcgbihrLHcsVCs0LHgse3R5cGU6InRleHQiLGhlaWdodDpTLGRpbTpsLHBvc2l0aW9uOiJyaWdodCJ9KSk7YnJlYWs7Y2FzZSJiZWxvdyI6dS5hZGRSaWdodChuZXcgbihrLDAsMCx2b2lkIDAse3R5cGU6InRleHQiLHBvc2l0aW9uOiJiZWxvdyIsaGVpZ2h0OlMsZGltOmwscmVhbFdpZHRoOlR9KSk7YnJlYWs7Y2FzZSJhYm92ZSI6dS5hZGRSaWdodChuZXcgbihrLDAsMCx2b2lkIDAse3R5cGU6InRleHQiLHBvc2l0aW9uOiJhYm92ZSIsaGVpZ2h0OlMsZGltOmwscmVhbFdpZHRoOlR9KSk7YnJlYWs7ZGVmYXVsdDppZihyKXt2YXIgXz1yLnkrMyphLlNURVA7dS5hZGRSaWdodChuZXcgbihrLHcrci54LDAsZC5taW5waXRjaCtfL2EuU1RFUCx7cG9zaXRpb246InJlbGF0aXZlIix0eXBlOiJ0ZXh0IixoZWlnaHQ6UyxkaW06bH0pKX1lbHNle3ZhciBFPSJhYm92ZSI7ZC5wb3NpdGlvbmluZyYmZC5wb3NpdGlvbmluZy5jaG9yZFBvc2l0aW9uJiYoRT1kLnBvc2l0aW9uaW5nLmNob3JkUG9zaXRpb24pLCJoaWRkZW4iIT09RSYmdS5hZGRDZW50ZXJlZChuZXcgbihrLG0vMixULHZvaWQgMCx7dHlwZToiY2hvcmQiLHBvc2l0aW9uOkUsaGVpZ2h0OlMsZGltOmwscmVhbFdpZHRoOlR9KSl9fX1yZXR1cm57cm9vbVRha2VuOmYscm9vbVRha2VuUmlnaHQ6cH19ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4sYSxpLG8sYyl7Zm9yKHZhciBsPTA7bDxyLmNob3JkLmxlbmd0aDtsKyspe3ZhciBoLHUsZD1yLmNob3JkW2xdLnBvc2l0aW9uLGY9ci5jaG9yZFtsXS5yZWxfcG9zaXRpb24scD0ibGVmdCI9PT1kfHwicmlnaHQiPT09ZHx8ImJlbG93Ij09PWR8fCJhYm92ZSI9PT1kfHwhIWY7cD8oaD0iYW5ub3RhdGlvbmZvbnQiLHU9ImFiY2pzLWFubm90YXRpb24iKTooaD0iZ2Nob3JkZm9udCIsdT0iYWJjanMtY2hvcmQiKTt2YXIgbSxnPWUuYXR0cihoLHUpLHY9ci5jaG9yZFtsXS5uYW1lO2lmKCJzdHJpbmciPT10eXBlb2YgdiluPShtPXModixkLGYscCxoLHUsZyxlLHQscixuLGEsaSxvLGMpKS5yb29tVGFrZW4sYT1tLnJvb21UYWtlblJpZ2h0O2Vsc2UgZm9yKHZhciBiPTA7Yjx2Lmxlbmd0aDtiKyspbj0obT1zKHZbYl0udGV4dCxkLGYscCxoLHUsZyxlLHQscixuLGEsaSxvLGMpKS5yb29tVGFrZW4sYT1tLnJvb21UYWtlblJpZ2h0fXJldHVybntyb29tVGFrZW46bixyb29tVGFrZW5SaWdodDphfX19LDE3MTY6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtpZih0LnRleHQpe3QubWFyZ2luTGVmdHx8KHQubWFyZ2luTGVmdD0wKSx0LmtsYXNzfHwodC5rbGFzcz0iIiksdC5hbmNob3J8fCh0LmFuY2hvcj0ic3RhcnQiKSx0LmluZm98fCh0LmluZm89e3N0YXJ0Q2hhcjotMixlbmRDaGFyOi0yfSksdC5tYXJnaW5Ub3AmJmUucHVzaCh7bW92ZTp0Lm1hcmdpblRvcH0pO3ZhciBuPXtsZWZ0OnQubWFyZ2luTGVmdCx0ZXh0OnQudGV4dCxmb250OnQuZm9udCxhbmNob3I6dC5hbmNob3Isc3RhcnRDaGFyOnQuaW5mby5zdGFydENoYXIsZW5kQ2hhcjp0LmluZm8uZW5kQ2hhciwiZG9taW5hbnQtYmFzZWxpbmUiOnRbImRvbWluYW50LWJhc2VsaW5lIl19O3QuYWJzRWxlbVR5cGUmJihuLmFic0VsZW1UeXBlPXQuYWJzRWxlbVR5cGUpLCF0LmluR3JvdXAmJnQua2xhc3MmJihuLmtsYXNzPXQua2xhc3MpLHQubmFtZSYmKG4ubmFtZT10Lm5hbWUpLGUucHVzaChuKTt2YXIgYT1yLmNhbGMoIkEiLHQuZm9udCx0LmtsYXNzKSxpPXQudGV4dC5zcGxpdCgiXG4iKS5sZW5ndGg7aWYoIlxuIj09PXQudGV4dFt0LnRleHQubGVuZ3RoLTFdJiZpLS0sIXQubm9Nb3ZlKXt2YXIgcz0xLjEqYS5oZWlnaHQqaTtlLnB1c2goe21vdmU6TWF0aC5yb3VuZChzKX0pLHQubWFyZ2luQm90dG9tJiZlLnB1c2goe21vdmU6dC5tYXJnaW5Cb3R0b219KX19fX0sMzY2MTpmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAscj0wO3I8ZS52b2ljZXMubGVuZ3RoO3IrKyl7dmFyIG49ZS52b2ljZXNbcl0uc3RhZmY7ZS52b2ljZXNbcl0uZHVwbGljYXRlfHwodCs9bi50b3AsdCs9LW4uYm90dG9tKX1yZXR1cm4gdH19LDk2MDA6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTQwOSksYT1yKDYwMjApLGk9cig2NjU4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixzPTA7ZS5lbF90eXBlPSJjbGVmIjt2YXIgbz1uZXcgbihlLDAsMTAsInN0YWZmLWV4dHJhIGNsZWYiLHQpO3N3aXRjaChvLmlzQ2xlZj0hMCxlLnR5cGUpe2Nhc2UidHJlYmxlIjpyPSJjbGVmcy5HIjticmVhaztjYXNlInRlbm9yIjpjYXNlImFsdG8iOnI9ImNsZWZzLkMiO2JyZWFrO2Nhc2UiYmFzcyI6cj0iY2xlZnMuRiI7YnJlYWs7Y2FzZSJ0cmVibGUrOCI6cj0iY2xlZnMuRyIscz0xO2JyZWFrO2Nhc2UidGVub3IrOCI6Y2FzZSJhbHRvKzgiOnI9ImNsZWZzLkMiLHM9MTticmVhaztjYXNlImJhc3MrOCI6cj0iY2xlZnMuRiIscz0xO2JyZWFrO2Nhc2UidHJlYmxlLTgiOnI9ImNsZWZzLkciLHM9LTE7YnJlYWs7Y2FzZSJ0ZW5vci04IjpjYXNlImFsdG8tOCI6cj0iY2xlZnMuQyIscz0tMTticmVhaztjYXNlImJhc3MtOCI6cj0iY2xlZnMuRiIscz0tMTticmVhaztjYXNlIm5vbmUiOnJldHVybiBudWxsO2Nhc2UicGVyYyI6cj0iY2xlZnMucGVyYyI7YnJlYWs7ZGVmYXVsdDpvLmFkZEZpeGVkKG5ldyBpKCJjbGVmPSIrZS50eXBlLDAsMCx2b2lkIDAse3R5cGU6ImRlYnVnIn0pKX1pZihyKXt2YXIgYz1hLnN5bWJvbEhlaWdodEluUGl0Y2hlcyhyKSxsPWZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlImNsZWZzLkciOnJldHVybi01O2Nhc2UiY2xlZnMuQyI6Y2FzZSJjbGVmcy5GIjpyZXR1cm4tNDtjYXNlImNsZWZzLnBlcmMiOnJldHVybi0yO2RlZmF1bHQ6cmV0dXJuIDB9fShyKTtpZihvLmFkZFJpZ2h0KG5ldyBpKHIsNSxhLmdldFN5bWJvbFdpZHRoKHIpLGUuY2xlZlBvcyx7dG9wOmMrZS5jbGVmUG9zK2wsYm90dG9tOmUuY2xlZlBvcytsfSkpLDAhPT1zKXt2YXIgaD0yLzMsdT0oYS5nZXRTeW1ib2xXaWR0aChyKS1hLmdldFN5bWJvbFdpZHRoKCI4IikqaCkvMixkPXM+MD9vLnRvcCszOm8uYm90dG9tLTEsZj1zPjA/by50b3ArMzpvLmJvdHRvbS0zLHA9Zi0yOyJiYXNzLTgiPT09ZS50eXBlJiYoZD0zLHU9MCksby5hZGRSaWdodChuZXcgaSgiOCIsNSt1LGEuZ2V0U3ltYm9sV2lkdGgoIjgiKSpoLGQse3NjYWxleDpoLHNjYWxleTpoLHRvcDpmLGJvdHRvbTpwfSkpfX1yZXR1cm4gb319LDM5MjM6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTQwOSksYT1yKDYwMjApLGk9cig2NjU4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihlLmVsX3R5cGU9ImtleVNpZ25hdHVyZSIsIWUuYWNjaWRlbnRhbHN8fDA9PT1lLmFjY2lkZW50YWxzLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgcj1uZXcgbihlLDAsMTAsInN0YWZmLWV4dHJhIGtleS1zaWduYXR1cmUiLHQpO3IuaXNLZXlTaWc9ITA7dmFyIHM9MDtyZXR1cm4gZS5hY2NpZGVudGFscy5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdCxuPTA7c3dpdGNoKGUuYWNjKXtjYXNlInNoYXJwIjp0PSJhY2NpZGVudGFscy5zaGFycCIsbj0tMzticmVhaztjYXNlIm5hdHVyYWwiOnQ9ImFjY2lkZW50YWxzLm5hdCI7YnJlYWs7Y2FzZSJmbGF0Ijp0PSJhY2NpZGVudGFscy5mbGF0IixuPS0xLjI7YnJlYWs7Y2FzZSJxdWFydGVyc2hhcnAiOnQ9ImFjY2lkZW50YWxzLmhhbGZzaGFycCIsbj0tMi41O2JyZWFrO2Nhc2UicXVhcnRlcmZsYXQiOnQ9ImFjY2lkZW50YWxzLmhhbGZmbGF0IixuPS0xLjI7YnJlYWs7ZGVmYXVsdDp0PSJhY2NpZGVudGFscy5mbGF0In1yLmFkZFJpZ2h0KG5ldyBpKHQscyxhLmdldFN5bWJvbFdpZHRoKHQpLGUudmVydGljYWxQb3Mse3RoaWNrbmVzczphLnN5bWJvbEhlaWdodEluUGl0Y2hlcyh0KSx0b3A6ZS52ZXJ0aWNhbFBvcythLnN5bWJvbEhlaWdodEluUGl0Y2hlcyh0KStuLGJvdHRvbTplLnZlcnRpY2FsUG9zK259KSkscys9YS5nZXRTeW1ib2xXaWR0aCh0KSsyfSksdGhpcykscn19LDIxNDM6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjAyMCksYT1yKDY2NTgpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixpKXtpfHwoaT17fSk7dmFyIHMsbz12b2lkIDAhPT1pLmRpcj9pLmRpcjpudWxsLGM9dm9pZCAwIT09aS5oZWFkeD9pLmhlYWR4OjAsbD12b2lkIDAhPT1pLmV4dHJheD9pLmV4dHJheDowLGg9dm9pZCAwIT09aS5mbGFnP2kuZmxhZzpudWxsLHU9dm9pZCAwIT09aS5kb3Q/aS5kb3Q6MCxkPXZvaWQgMCE9PWkuZG90c2hpZnR4P2kuZG90c2hpZnR4OjAsZj12b2lkIDAhPT1pLnNjYWxlP2kuc2NhbGU6MSxwPXZvaWQgMCE9PWkuYWNjaWRlbnRhbFNsb3Q/aS5hY2NpZGVudGFsU2xvdDpbXSxtPXZvaWQgMCE9PWkuc2hvdWxkRXh0ZW5kU3RlbSYmaS5zaG91bGRFeHRlbmRTdGVtLGc9dm9pZCAwPT09aS5wcmludEFjY2lkZW50YWxzfHxpLnByaW50QWNjaWRlbnRhbHMsdj1yLnZlcnRpY2FsUG9zLGI9MCx5PTAseD0wO2lmKHZvaWQgMD09PXQpZS5hZGRGaXhlZChuZXcgYSgicGl0Y2ggaXMgdW5kZWZpbmVkIiwwLDAsMCx7dHlwZToiZGVidWcifSkpO2Vsc2UgaWYoIiI9PT10KXM9bmV3IGEobnVsbCwwLDAsdik7ZWxzZXt2YXIgaz1jO2lmKHIucHJpbnRlcl9zaGlmdCl7dmFyIHc9InNhbWUiPT09ci5wcmludGVyX3NoaWZ0PzE6MDtrPSJkb3duIj09PW8/LW4uZ2V0U3ltYm9sV2lkdGgodCkqZit3Om4uZ2V0U3ltYm9sV2lkdGgodCkqZi13fXZhciBDPXtzY2FsZXg6ZixzY2FsZXk6Zix0aGlja25lc3M6bi5zeW1ib2xIZWlnaHRJblBpdGNoZXModCkqZixuYW1lOnIubmFtZX07aWYoKHM9bmV3IGEodCxrLG4uZ2V0U3ltYm9sV2lkdGgodCkqZix2LEMpKS5zdGVtRGlyPW8saCl7dmFyIFQ9disoImRvd24iPT09bz8tNzo3KSpmO20mJigiZG93biI9PT1vJiZUPjYmJihUPTYpLCJ1cCI9PT1vJiZUPDYmJihUPTYpKTt2YXIgUz0iZG93biI9PT1vP2M6YytzLnctLjY7ZS5hZGRSaWdodChuZXcgYShoLFMsbi5nZXRTeW1ib2xXaWR0aChoKSpmLFQse3NjYWxleDpmLHNjYWxleTpmfSkpfWZvcih5PXMudytkLTIrNSp1O3U+MDt1LS0pe3ZhciBfPTEtTWF0aC5hYnModiklMjtlLmFkZFJpZ2h0KG5ldyBhKCJkb3RzLmRvdCIscy53K2QtMis1KnUsbi5nZXRTeW1ib2xXaWR0aCgiZG90cy5kb3QiKSx2K18pKX19aWYocyYmKHMuaGlnaGVzdFZlcnQ9ci5oaWdoZXN0VmVydCksZyYmci5hY2NpZGVudGFsKXt2YXIgRTtzd2l0Y2goci5hY2NpZGVudGFsKXtjYXNlInF1YXJ0ZXJzaGFycCI6RT0iYWNjaWRlbnRhbHMuaGFsZnNoYXJwIjticmVhaztjYXNlImRibHNoYXJwIjpFPSJhY2NpZGVudGFscy5kYmxzaGFycCI7YnJlYWs7Y2FzZSJzaGFycCI6RT0iYWNjaWRlbnRhbHMuc2hhcnAiO2JyZWFrO2Nhc2UicXVhcnRlcmZsYXQiOkU9ImFjY2lkZW50YWxzLmhhbGZmbGF0IjticmVhaztjYXNlImZsYXQiOkU9ImFjY2lkZW50YWxzLmZsYXQiO2JyZWFrO2Nhc2UiZGJsZmxhdCI6RT0iYWNjaWRlbnRhbHMuZGJsZmxhdCI7YnJlYWs7Y2FzZSJuYXR1cmFsIjpFPSJhY2NpZGVudGFscy5uYXQifWZvcih2YXIgTT0hMSxBPWwsTj0wO048cC5sZW5ndGg7TisrKWlmKHYtcFtOXVswXT49Nil7cFtOXVswXT12LEE9cFtOXVsxXSxNPSEwO2JyZWFrfSExPT09TSYmKEEtPW4uZ2V0U3ltYm9sV2lkdGgoRSkqZisyLHAucHVzaChbdixBXSksYj1uLmdldFN5bWJvbFdpZHRoKEUpKmYrMik7dmFyIEI9bi5zeW1ib2xIZWlnaHRJblBpdGNoZXMoRSk7ZS5hZGRFeHRyYShuZXcgYShFLEEsbi5nZXRTeW1ib2xXaWR0aChFKSx2LHtzY2FsZXg6ZixzY2FsZXk6Zix0b3A6ditCLzIsYm90dG9tOnYtQi8yfSkpLHg9bi5nZXRTeW1ib2xXaWR0aChFKS8yfXJldHVybntub3RlaGVhZDpzLGFjY2lkZW50YWxzaGlmdHg6Yixkb3RzaGlmdHg6eSxleHRyYUxlZnQ6eH19fSwyNTI1OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE0MDkpLGE9cig2MDIwKSxpPXIoNjY1OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ZS5lbF90eXBlPSJ0aW1lU2lnbmF0dXJlIjt2YXIgcj1uZXcgbihlLDAsMTAsInN0YWZmLWV4dHJhIHRpbWUtc2lnbmF0dXJlIix0KTtpZigic3BlY2lmaWVkIj09PWUudHlwZSlmb3IodmFyIHM9MCxvPTA7bzxlLnZhbHVlLmxlbmd0aDtvKyspaWYoMCE9PW8mJihyLmFkZFJpZ2h0KG5ldyBpKCIrIixzKzEsYS5nZXRTeW1ib2xXaWR0aCgiKyIpLDYse3RoaWNrbmVzczphLnN5bWJvbEhlaWdodEluUGl0Y2hlcygiKyIpfSkpLHMrPWEuZ2V0U3ltYm9sV2lkdGgoIisiKSsyKSxlLnZhbHVlW29dLmRlbil7Zm9yKHZhciBjPTAsbD0wO2w8ZS52YWx1ZVtvXS5udW0ubGVuZ3RoO2wrKyljKz1hLmdldFN5bWJvbFdpZHRoKGUudmFsdWVbb10ubnVtW2xdKTt2YXIgaD0wO2ZvcihsPTA7bDxlLnZhbHVlW29dLm51bS5sZW5ndGg7bCsrKWgrPWEuZ2V0U3ltYm9sV2lkdGgoZS52YWx1ZVtvXS5kZW5bbF0pO3ZhciB1PU1hdGgubWF4KGMsaCk7ci5hZGRSaWdodChuZXcgaShlLnZhbHVlW29dLm51bSxzKyh1LWMpLzIsYyw4LHt0aGlja25lc3M6YS5zeW1ib2xIZWlnaHRJblBpdGNoZXMoZS52YWx1ZVtvXS5udW1bMF0pfSkpLHIuYWRkUmlnaHQobmV3IGkoZS52YWx1ZVtvXS5kZW4scysodS1oKS8yLGgsNCx7dGhpY2tuZXNzOmEuc3ltYm9sSGVpZ2h0SW5QaXRjaGVzKGUudmFsdWVbb10uZGVuWzBdKX0pKSxzKz11fWVsc2V7Zm9yKHZhciBkPTAsZj0wO2Y8ZS52YWx1ZVtvXS5udW0ubGVuZ3RoO2YrKylkKz1hLmdldFN5bWJvbFdpZHRoKGUudmFsdWVbb10ubnVtW2ZdKTtyLmFkZFJpZ2h0KG5ldyBpKGUudmFsdWVbb10ubnVtLHMsZCw2LHt0aGlja25lc3M6YS5zeW1ib2xIZWlnaHRJblBpdGNoZXMoZS52YWx1ZVtvXS5udW1bMF0pfSkpLHMrPWR9ZWxzZSJjb21tb25fdGltZSI9PT1lLnR5cGU/ci5hZGRSaWdodChuZXcgaSgidGltZXNpZy5jb21tb24iLDAsYS5nZXRTeW1ib2xXaWR0aCgidGltZXNpZy5jb21tb24iKSw2LHt0aGlja25lc3M6YS5zeW1ib2xIZWlnaHRJblBpdGNoZXMoInRpbWVzaWcuY29tbW9uIil9KSk6ImN1dF90aW1lIj09PWUudHlwZT9yLmFkZFJpZ2h0KG5ldyBpKCJ0aW1lc2lnLmN1dCIsMCxhLmdldFN5bWJvbFdpZHRoKCJ0aW1lc2lnLmN1dCIpLDYse3RoaWNrbmVzczphLnN5bWJvbEhlaWdodEluUGl0Y2hlcygidGltZXNpZy5jdXQiKX0pKToidGVtcHVzX2ltcGVyZmVjdHVtIj09PWUudHlwZT9yLmFkZFJpZ2h0KG5ldyBpKCJ0aW1lc2lnLmltcGVyZmVjdHVtIiwwLGEuZ2V0U3ltYm9sV2lkdGgoInRpbWVzaWcuaW1wZXJmZWN0dW0iKSw2LHt0aGlja25lc3M6YS5zeW1ib2xIZWlnaHRJblBpdGNoZXMoInRpbWVzaWcuaW1wZXJmZWN0dW0iKX0pKToidGVtcHVzX2ltcGVyZmVjdHVtX3Byb2xhdGlvIj09PWUudHlwZT9yLmFkZFJpZ2h0KG5ldyBpKCJ0aW1lc2lnLmltcGVyZmVjdHVtMiIsMCxhLmdldFN5bWJvbFdpZHRoKCJ0aW1lc2lnLmltcGVyZmVjdHVtMiIpLDYse3RoaWNrbmVzczphLnN5bWJvbEhlaWdodEluUGl0Y2hlcygidGltZXNpZy5pbXBlcmZlY3R1bTIiKX0pKToidGVtcHVzX3BlcmZlY3R1bSI9PT1lLnR5cGU/ci5hZGRSaWdodChuZXcgaSgidGltZXNpZy5wZXJmZWN0dW0iLDAsYS5nZXRTeW1ib2xXaWR0aCgidGltZXNpZy5wZXJmZWN0dW0iKSw2LHt0aGlja25lc3M6YS5zeW1ib2xIZWlnaHRJblBpdGNoZXMoInRpbWVzaWcucGVyZmVjdHVtIil9KSk6InRlbXB1c19wZXJmZWN0dW1fcHJvbGF0aW8iPT09ZS50eXBlP3IuYWRkUmlnaHQobmV3IGkoInRpbWVzaWcucGVyZmVjdHVtMiIsMCxhLmdldFN5bWJvbFdpZHRoKCJ0aW1lc2lnLnBlcmZlY3R1bTIiKSw2LHt0aGlja25lc3M6YS5zeW1ib2xIZWlnaHRJblBpdGNoZXMoInRpbWVzaWcucGVyZmVjdHVtMiIpfSkpOmNvbnNvbGUubG9nKCJ0aW1lIHNpZ25hdHVyZToiLGUpO3JldHVybiByfX0sODY3NzpmdW5jdGlvbihlLHQscil7dmFyIG49cigzMTg1KSxhPXIoNjg5MSksaT1yKDg4NDQpLHM9cig2MDIwKSxvPXIoNjY1OCksYz1yKDYxODMpLGw9ZnVuY3Rpb24oKXt0aGlzLnN0YXJ0RGltaW51ZW5kb1g9dm9pZCAwLHRoaXMuc3RhcnRDcmVzY2VuZG9YPXZvaWQgMCx0aGlzLm1pblRvcD0xMix0aGlzLm1pbkJvdHRvbT0wfSxoPWZ1bmN0aW9uKGUsdCxyLG4sYSl7ZnVuY3Rpb24gaShlLHQpe3ZhciBpPSJkb3duIj09PWE/ZnVuY3Rpb24oKXtpZigwPT09bi5oZWFkcy5sZW5ndGgpcmV0dXJuIDI7Zm9yKHZhciBlPW4uaGVhZHNbMF0ucGl0Y2gsdD0xO3Q8bi5oZWFkcy5sZW5ndGg7dCsrKWU9TWF0aC5taW4oZSxuLmhlYWRzW3RdLnBpdGNoKTtyZXR1cm4gZX0oKSsxOmZ1bmN0aW9uKCl7aWYoMD09PW4uaGVhZHMubGVuZ3RoKXJldHVybiAxMDtmb3IodmFyIGU9bi5oZWFkc1swXS5waXRjaCx0PTE7dDxuLmhlYWRzLmxlbmd0aDt0KyspZT1NYXRoLm1heChlLG4uaGVhZHNbdF0ucGl0Y2gpO3JldHVybiBlfSgpKzk7ImRvd24iIT09YSYmMT09PXQmJmktLTt2YXIgYz1yLzI7Yys9ImRvd24iPT09YT8tNTozO2Zvcih2YXIgbD0wO2w8dDtsKyspaS09MSxuLmFkZEZpeGVkWChuZXcgbyhlLGMscy5nZXRTeW1ib2xXaWR0aChlKSxpKSl9Zm9yKHZhciBjPTA7YzxlLmxlbmd0aDtjKyspc3dpdGNoKGVbY10pe2Nhc2UiLyI6aSgiZmxhZ3MudWdyYWNlIiwxKTticmVhaztjYXNlIi8vIjppKCJmbGFncy51Z3JhY2UiLDIpO2JyZWFrO2Nhc2UiLy8vIjppKCJmbGFncy51Z3JhY2UiLDMpO2JyZWFrO2Nhc2UiLy8vLyI6aSgiZmxhZ3MudWdyYWNlIiw0KX19O2wucHJvdG90eXBlLmR5bmFtaWNEZWNvcmF0aW9uPWZ1bmN0aW9uKGUsdCxyLG4pe2Zvcih2YXIgcyxvLGMsbD0wO2w8dC5sZW5ndGg7bCsrKXN3aXRjaCh0W2xdKXtjYXNlImRpbWludWVuZG8oIjp0aGlzLnN0YXJ0RGltaW51ZW5kb1g9cixzPXZvaWQgMDticmVhaztjYXNlImRpbWludWVuZG8pIjpzPXtzdGFydDp0aGlzLnN0YXJ0RGltaW51ZW5kb1gsc3RvcDpyfSx0aGlzLnN0YXJ0RGltaW51ZW5kb1g9dm9pZCAwO2JyZWFrO2Nhc2UiY3Jlc2NlbmRvKCI6dGhpcy5zdGFydENyZXNjZW5kb1g9cixvPXZvaWQgMDticmVhaztjYXNlImNyZXNjZW5kbykiOm89e3N0YXJ0OnRoaXMuc3RhcnRDcmVzY2VuZG9YLHN0b3A6cn0sdGhpcy5zdGFydENyZXNjZW5kb1g9dm9pZCAwO2JyZWFrO2Nhc2UifigiOmNhc2UiZ2xpc3NhbmRvKCI6dGhpcy5zdGFydEdsaXNzYW5kb1g9cixjPXZvaWQgMDticmVhaztjYXNlIn4pIjpjYXNlImdsaXNzYW5kbykiOmM9e3N0YXJ0OnRoaXMuc3RhcnRHbGlzc2FuZG9YLHN0b3A6cn0sdGhpcy5zdGFydEdsaXNzYW5kb1g9dm9pZCAwfXMmJmUuYWRkT3RoZXIobmV3IGEocy5zdGFydCxzLnN0b3AsIj4iLG4pKSxvJiZlLmFkZE90aGVyKG5ldyBhKG8uc3RhcnQsby5zdG9wLCI8IixuKSksYyYmZS5hZGRPdGhlcihuZXcgaShjLnN0YXJ0LGMuc3RvcCkpfSxsLnByb3RvdHlwZS5jcmVhdGVEZWNvcmF0aW9uPWZ1bmN0aW9uKGUsdCxyLGEsaSxsLHUsZCxmLHAsbSl7Znx8KGY9e29ybmFtZW50UG9zaXRpb246ImFib3ZlIix2b2x1bWVQb3NpdGlvbjpwPyJhYm92ZSI6ImJlbG93IixkeW5hbWljUG9zaXRpb246cD8iYWJvdmUiOiJiZWxvdyJ9KSxmdW5jdGlvbihlLHQscixhKXtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKylzd2l0Y2godFtpXSl7Y2FzZSJwIjpjYXNlIm1wIjpjYXNlInBwIjpjYXNlInBwcCI6Y2FzZSJwcHBwIjpjYXNlImYiOmNhc2UiZmYiOmNhc2UiZmZmIjpjYXNlImZmZmYiOmNhc2Uic2Z6IjpjYXNlIm1mIjp2YXIgcz1uZXcgbihyLHRbaV0sYSk7ZS5hZGRPdGhlcihzKX19KGUsdCxpLGYudm9sdW1lUG9zaXRpb24pLHRoaXMuZHluYW1pY0RlY29yYXRpb24oZSx0LGksZi5keW5hbWljUG9zaXRpb24pLGgodCwwLGEsaSx1KTt2YXIgZz1mdW5jdGlvbihlLHQscixuLGEsaSxsLGgsdSl7Zm9yKHZhciBkLGY9MDtmPHQubGVuZ3RoO2YrKyl7aWYoInN0YWNjYXRvIj09PXRbZl18fCJ0ZW51dG8iPT09dFtmXXx8ImFjY2VudCI9PT10W2ZdJiYhdSl7dmFyIHA9InNjcmlwdHMuIit0W2ZdO2lmKCJhY2NlbnQiPT09dFtmXSYmKHA9InNjcmlwdHMuc2ZvcnphdG8iKSxkPXZvaWQgMD09PWQ/ImRvd24iPT09bD9yKzI6aC0yOiJkb3duIj09PWw/ZCsyOmQtMiwiYWNjZW50Ij09PXRbZl0pInVwIj09PWw/ZC0tOmQrKztlbHNlIHN3aXRjaChkKXtjYXNlIDI6Y2FzZSA0OmNhc2UgNjpjYXNlIDg6Y2FzZSAxMDoidXAiPT09bD9kLS06ZCsrfXI+OSYmZCsrO3ZhciBtPW4vMjsiY2VudGVyIiE9PXMuZ2V0U3ltYm9sQWxpZ24ocCkmJihtLT1zLmdldFN5bWJvbFdpZHRoKHApLzIpLGEuYWRkRml4ZWRYKG5ldyBvKHAsbSxzLmdldFN5bWJvbFdpZHRoKHApLGQpKX1pZigic2xpZGUiPT09dFtmXSYmYS5oZWFkc1swXSl7dmFyIGc9YS5oZWFkc1swXS5waXRjaCx2PW5ldyBvKCIiLC1pLTE1LDAsKGctPTIpLTEpLGI9bmV3IG8oIiIsLWktNSwwLGcrMSk7YS5hZGRGaXhlZFgodiksYS5hZGRGaXhlZFgoYiksZS5hZGRPdGhlcihuZXcgYyh7YW5jaG9yMTp2LGFuY2hvcjI6YixmaXhlZFk6ITB9KSl9fXJldHVybiB2b2lkIDA9PT1kJiYoZD1yKSx7YWJvdmU6ZCxiZWxvdzphLmJvdHRvbX19KGUsdCxyLGEsaSxsLHUsZCxtKTtnLmFib3ZlPU1hdGgubWF4KGcuYWJvdmUsdGhpcy5taW5Ub3ApLGcuYmVsb3c9TWF0aC5taW4oZy5iZWxvdyxkKSxmdW5jdGlvbihlLHQscixuLGEsaSxjLGwpe2Z1bmN0aW9uIGgoZSx0KXsiYWJvdmUiPT09ZT9uLmFib3ZlKz10Om4uYmVsb3ctPXR9ZnVuY3Rpb24gdShlKXt2YXIgdDtyZXR1cm4iYWJvdmUiPT09ZT8odD1uLmFib3ZlKTxpJiYodD1pKToodD1uLmJlbG93KT5jJiYodD1jKSx0fWZ1bmN0aW9uIGQoZSxuLGEpe3ZhciBpPXUobik7ci5hZGRGaXhlZFgobmV3IG8oZSx0LzIsMCxpKzIse3R5cGU6ImRlY29yYXRpb24iLGtsYXNzOiJvcm5hbWVudCIsdGhpY2tuZXNzOjMsYW5jaG9yOmF9KSksaChuLDUpfWZ1bmN0aW9uIGYoZSxuKXt2YXIgYT10LzI7ImNlbnRlciIhPT1zLmdldFN5bWJvbEFsaWduKGUpJiYoYS09cy5nZXRTeW1ib2xXaWR0aChlKS8yKTt2YXIgaT1zLnN5bWJvbEhlaWdodEluUGl0Y2hlcyhlKSsxLGM9dShuKTtjPSJhYm92ZSI9PT1uP2MraS8yOmMtaS8yLHIuYWRkRml4ZWRYKG5ldyBvKGUsYSxzLmdldFN5bWJvbFdpZHRoKGUpLGMse2tsYXNzOiJvcm5hbWVudCIsdGhpY2tuZXNzOnMuc3ltYm9sSGVpZ2h0SW5QaXRjaGVzKGUpLHBvc2l0aW9uOm59KSksaChuLGkpfWZvcih2YXIgcD17IisiOiJzY3JpcHRzLnN0b3BwZWQiLG9wZW46InNjcmlwdHMub3BlbiIsc25hcDoic2NyaXB0cy5zbmFwIix3ZWRnZToic2NyaXB0cy53ZWRnZSIsdGh1bWI6InNjcmlwdHMudGh1bWIiLHNob3J0cGhyYXNlOiJzY3JpcHRzLnNob3J0cGhyYXNlIixtZWRpdW1waHJhc2U6InNjcmlwdHMubWVkaXVtcGhyYXNlIixsb25ncGhyYXNlOiJzY3JpcHRzLmxvbmdwaHJhc2UiLHRyaWxsOiJzY3JpcHRzLnRyaWxsIix0cmlsbGg6InNjcmlwdHMudHJpbGwiLHJvbGw6InNjcmlwdHMucm9sbCIsaXJpc2hyb2xsOiJzY3JpcHRzLnJvbGwiLG1hcmNhdG86InNjcmlwdHMudW1hcmNhdG8iLGRtYXJjYXRvOiJzY3JpcHRzLmRtYXJjYXRvIix1bWFyY2F0bzoic2NyaXB0cy51bWFyY2F0byIsdHVybjoic2NyaXB0cy50dXJuIix1cHBlcm1vcmRlbnQ6InNjcmlwdHMucHJhbGwiLHByYWxsdHJpbGxlcjoic2NyaXB0cy5wcmFsbCIsbW9yZGVudDoic2NyaXB0cy5tb3JkZW50Iixsb3dlcm1vcmRlbnQ6InNjcmlwdHMubW9yZGVudCIsZG93bmJvdzoic2NyaXB0cy5kb3duYm93Iix1cGJvdzoic2NyaXB0cy51cGJvdyIsZmVybWF0YToic2NyaXB0cy51ZmVybWF0YSIsaW52ZXJ0ZWRmZXJtYXRhOiJzY3JpcHRzLmRmZXJtYXRhIixicmVhdGg6IiwiLGNvZGE6InNjcmlwdHMuY29kYSIsc2Vnbm86InNjcmlwdHMuc2Vnbm8ifSxtPTA7bTxlLmxlbmd0aDttKyspc3dpdGNoKGVbbV0pe2Nhc2UiMCI6Y2FzZSIxIjpjYXNlIjIiOmNhc2UiMyI6Y2FzZSI0IjpjYXNlIjUiOmNhc2UiRC5DLiI6Y2FzZSJELlMuIjpkKGVbbV0sYSwibWlkZGxlIiksITA7YnJlYWs7Y2FzZSJELkMuYWxjb2RhIjpkKCJELkMuIGFsIGNvZGEiLGEsImVuZCIpLCEwO2JyZWFrO2Nhc2UiRC5DLmFsZmluZSI6ZCgiRC5DLiBhbCBmaW5lIixhLCJlbmQiKSwhMDticmVhaztjYXNlIkQuUy5hbGNvZGEiOmQoIkQuUy4gYWwgY29kYSIsYSwiZW5kIiksITA7YnJlYWs7Y2FzZSJELlMuYWxmaW5lIjpkKCJELlMuIGFsIGZpbmUiLGEsImVuZCIpLCEwO2JyZWFrO2Nhc2UiZmluZSI6ZCgiRklORSIsYSwibWlkZGxlIiksITA7YnJlYWs7Y2FzZSIrIjpjYXNlIm9wZW4iOmNhc2Uic25hcCI6Y2FzZSJ3ZWRnZSI6Y2FzZSJ0aHVtYiI6Y2FzZSJzaG9ydHBocmFzZSI6Y2FzZSJtZWRpdW1waHJhc2UiOmNhc2UibG9uZ3BocmFzZSI6Y2FzZSJ0cmlsbCI6Y2FzZSJ0cmlsbGgiOmNhc2Uicm9sbCI6Y2FzZSJpcmlzaHJvbGwiOmNhc2UibWFyY2F0byI6Y2FzZSJkbWFyY2F0byI6Y2FzZSJ0dXJuIjpjYXNlInVwcGVybW9yZGVudCI6Y2FzZSJwcmFsbHRyaWxsZXIiOmNhc2UibW9yZGVudCI6Y2FzZSJsb3dlcm1vcmRlbnQiOmNhc2UiZG93bmJvdyI6Y2FzZSJ1cGJvdyI6Y2FzZSJmZXJtYXRhIjpjYXNlImJyZWF0aCI6Y2FzZSJ1bWFyY2F0byI6Y2FzZSJjb2RhIjpjYXNlInNlZ25vIjpmKHBbZVttXV0sYSksITA7YnJlYWs7Y2FzZSJpbnZlcnRlZGZlcm1hdGEiOmYocFtlW21dXSwiYmVsb3ciKSwhMDticmVhaztjYXNlIm1hcmsiOnIua2xhc3M9Im1hcmsiO2JyZWFrO2Nhc2UiYWNjZW50IjpsJiYoZigic2NyaXB0cy5zZm9yemF0byIsYSksITApfX0odCxhLGksZyxmLm9ybmFtZW50UG9zaXRpb24sdGhpcy5taW5Ub3AsZCxtKSxmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYoImFycGVnZ2lvIj09PWVbbl0pZm9yKHZhciBhPXQuYWJjZWxlbS5taW5waXRjaC0xO2E8PXQuYWJjZWxlbS5tYXhwaXRjaDthKz0yKXQuYWRkRXh0cmEobmV3IG8oInNjcmlwdHMuYXJwZWdnaW8iLDIqLXMuZ2V0U3ltYm9sV2lkdGgoInNjcmlwdHMuYXJwZWdnaW8iKS1yLDAsYSsyLHtrbGFzczoib3JuYW1lbnQiLHRoaWNrbmVzczpzLnN5bWJvbEhlaWdodEluUGl0Y2hlcygic2NyaXB0cy5hcnBlZ2dpbyIpfSkpfSh0LGksbCl9LGUuZXhwb3J0cz1sfSwxNDA5OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDU3NDEpLGE9cig1ODI5KSxpPWZ1bmN0aW9uKGUsdCxyLG4sYSxpKXtpfHwoaT17fSksdGhpcy50dW5lTnVtYmVyPWEsdGhpcy5hYmNlbGVtPWUsdGhpcy5kdXJhdGlvbj10LHRoaXMuZHVyYXRpb25DbGFzcz1pLmR1cmF0aW9uQ2xhc3NPdmVyaWRlP2kuZHVyYXRpb25DbGFzc092ZXJpZGU6dGhpcy5kdXJhdGlvbix0aGlzLm1pbnNwYWNpbmc9cnx8MCx0aGlzLng9MCx0aGlzLmNoaWxkcmVuPVtdLHRoaXMuaGVhZHM9W10sdGhpcy5leHRyYT1bXSx0aGlzLmV4dHJhdz0wLHRoaXMudz0wLHRoaXMucmlnaHQ9W10sdGhpcy5pbnZpc2libGU9ITEsdGhpcy5ib3R0b209dm9pZCAwLHRoaXMudG9wPXZvaWQgMCx0aGlzLnR5cGU9bix0aGlzLmZpeGVkPXt3OjAsdDp2b2lkIDAsYjp2b2lkIDB9LHRoaXMuc3BlY2lhbFk9e3RlbXBvSGVpZ2h0QWJvdmU6MCxwYXJ0SGVpZ2h0QWJvdmU6MCx2b2x1bWVIZWlnaHRBYm92ZTowLGR5bmFtaWNIZWlnaHRBYm92ZTowLGVuZGluZ0hlaWdodEFib3ZlOjAsY2hvcmRIZWlnaHRBYm92ZTowLGx5cmljSGVpZ2h0QWJvdmU6MCxseXJpY0hlaWdodEJlbG93OjAsY2hvcmRIZWlnaHRCZWxvdzowLHZvbHVtZUhlaWdodEJlbG93OjAsZHluYW1pY0hlaWdodEJlbG93OjB9fTtpLnByb3RvdHlwZS5nZXRGaXhlZENvb3Jkcz1mdW5jdGlvbigpe3JldHVybnt4OnRoaXMueCx3OnRoaXMuZml4ZWQudyx0OnRoaXMuZml4ZWQudCxiOnRoaXMuZml4ZWQuYn19LGkucHJvdG90eXBlLmFkZEV4dHJhPWZ1bmN0aW9uKGUpe3RoaXMuZml4ZWQudz1NYXRoLm1heCh0aGlzLmZpeGVkLncsZS5keCtlLncpLHZvaWQgMD09PXRoaXMuZml4ZWQudD90aGlzLmZpeGVkLnQ9ZS50b3A6dGhpcy5maXhlZC50PU1hdGgubWF4KHRoaXMuZml4ZWQudCxlLnRvcCksdm9pZCAwPT09dGhpcy5maXhlZC5iP3RoaXMuZml4ZWQuYj1lLmJvdHRvbTp0aGlzLmZpeGVkLmI9TWF0aC5taW4odGhpcy5maXhlZC5iLGUuYm90dG9tKSxlLmR4PHRoaXMuZXh0cmF3JiYodGhpcy5leHRyYXc9ZS5keCksdGhpcy5leHRyYVt0aGlzLmV4dHJhLmxlbmd0aF09ZSx0aGlzLl9hZGRDaGlsZChlKX0saS5wcm90b3R5cGUuYWRkSGVhZD1mdW5jdGlvbihlKXtlLmR4PHRoaXMuZXh0cmF3JiYodGhpcy5leHRyYXc9ZS5keCksdGhpcy5oZWFkc1t0aGlzLmhlYWRzLmxlbmd0aF09ZSx0aGlzLmFkZFJpZ2h0KGUpfSxpLnByb3RvdHlwZS5hZGRSaWdodD1mdW5jdGlvbihlKXt0aGlzLmZpeGVkLnc9TWF0aC5tYXgodGhpcy5maXhlZC53LGUuZHgrZS53KSx2b2lkIDAhPT1lLnRvcCYmKHZvaWQgMD09PXRoaXMuZml4ZWQudD90aGlzLmZpeGVkLnQ9ZS50b3A6dGhpcy5maXhlZC50PU1hdGgubWF4KHRoaXMuZml4ZWQudCxlLnRvcCkpLHZvaWQgMCE9PWUuYm90dG9tJiYodm9pZCAwPT09dGhpcy5maXhlZC5iP3RoaXMuZml4ZWQuYj1lLmJvdHRvbTp0aGlzLmZpeGVkLmI9TWF0aC5taW4odGhpcy5maXhlZC5iLGUuYm90dG9tKSksZS5keCtlLnc+dGhpcy53JiYodGhpcy53PWUuZHgrZS53KSx0aGlzLnJpZ2h0W3RoaXMucmlnaHQubGVuZ3RoXT1lLHRoaXMuX2FkZENoaWxkKGUpfSxpLnByb3RvdHlwZS5hZGRGaXhlZD1mdW5jdGlvbihlKXt0aGlzLl9hZGRDaGlsZChlKX0saS5wcm90b3R5cGUuYWRkRml4ZWRYPWZ1bmN0aW9uKGUpe3RoaXMuX2FkZENoaWxkKGUpfSxpLnByb3RvdHlwZS5hZGRDZW50ZXJlZD1mdW5jdGlvbihlKXt2YXIgdD1lLncvMjstdDx0aGlzLmV4dHJhdyYmKHRoaXMuZXh0cmF3PS10KSx0aGlzLmV4dHJhW3RoaXMuZXh0cmEubGVuZ3RoXT1lLGUuZHgrdD50aGlzLncmJih0aGlzLnc9ZS5keCt0KSx0aGlzLnJpZ2h0W3RoaXMucmlnaHQubGVuZ3RoXT1lLHRoaXMuX2FkZENoaWxkKGUpfSxpLnByb3RvdHlwZS5zZXRMaW1pdD1mdW5jdGlvbihlLHQpe3RbZV0mJih0aGlzLnNwZWNpYWxZW2VdP3RoaXMuc3BlY2lhbFlbZV09TWF0aC5tYXgodGhpcy5zcGVjaWFsWVtlXSx0W2VdKTp0aGlzLnNwZWNpYWxZW2VdPXRbZV0pfSxpLnByb3RvdHlwZS5fYWRkQ2hpbGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ITA7ImNsZWYiPT10aGlzLmFiY2VsZW0uZWxfdHlwZSYmImJhck51bWJlciI9PWUudHlwZSYmKHQ9ITEpLGUucGFyZW50PXRoaXMsdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aF09ZSx0JiZ0aGlzLnB1c2hUb3AoZS50b3ApLHRoaXMucHVzaEJvdHRvbShlLmJvdHRvbSksdGhpcy5zZXRMaW1pdCgidGVtcG9IZWlnaHRBYm92ZSIsZSksdGhpcy5zZXRMaW1pdCgicGFydEhlaWdodEFib3ZlIixlKSx0aGlzLnNldExpbWl0KCJ2b2x1bWVIZWlnaHRBYm92ZSIsZSksdGhpcy5zZXRMaW1pdCgiZHluYW1pY0hlaWdodEFib3ZlIixlKSx0aGlzLnNldExpbWl0KCJlbmRpbmdIZWlnaHRBYm92ZSIsZSksdGhpcy5zZXRMaW1pdCgiY2hvcmRIZWlnaHRBYm92ZSIsZSksdGhpcy5zZXRMaW1pdCgibHlyaWNIZWlnaHRBYm92ZSIsZSksdGhpcy5zZXRMaW1pdCgibHlyaWNIZWlnaHRCZWxvdyIsZSksdGhpcy5zZXRMaW1pdCgiY2hvcmRIZWlnaHRCZWxvdyIsZSksdGhpcy5zZXRMaW1pdCgidm9sdW1lSGVpZ2h0QmVsb3ciLGUpLHRoaXMuc2V0TGltaXQoImR5bmFtaWNIZWlnaHRCZWxvdyIsZSl9LGkucHJvdG90eXBlLnB1c2hUb3A9ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZSYmKHZvaWQgMD09PXRoaXMudG9wP3RoaXMudG9wPWU6dGhpcy50b3A9TWF0aC5tYXgoZSx0aGlzLnRvcCkpfSxpLnByb3RvdHlwZS5wdXNoQm90dG9tPWZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWUmJih2b2lkIDA9PT10aGlzLmJvdHRvbT90aGlzLmJvdHRvbT1lOnRoaXMuYm90dG9tPU1hdGgubWluKGUsdGhpcy5ib3R0b20pKX0saS5wcm90b3R5cGUuc2V0WD1mdW5jdGlvbihlKXt0aGlzLng9ZTtmb3IodmFyIHQ9MDt0PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3QrKyl0aGlzLmNoaWxkcmVuW3RdLnNldFgoZSl9LGkucHJvdG90eXBlLmNlbnRlcj1mdW5jdGlvbihlLHQpe3ZhciByPSh0LngtZS54KS8yK2UueDt0aGlzLng9ci10aGlzLncvMjtmb3IodmFyIG49MDtuPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO24rKyl0aGlzLmNoaWxkcmVuW25dLnNldFgodGhpcy54KX0saS5wcm90b3R5cGUuc2V0SGludD1mdW5jdGlvbigpe3RoaXMuaGludD0hMH0saS5wcm90b3R5cGUuaGlnaGxpZ2h0PWZ1bmN0aW9uKGUsdCl7bi5iaW5kKHRoaXMpKGUsdCl9LGkucHJvdG90eXBlLnVuaGlnaGxpZ2h0PWZ1bmN0aW9uKGUsdCl7YS5iaW5kKHRoaXMpKGUsdCl9LGUuZXhwb3J0cz1pfSw4NDkxOmZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCxyLG4pe3RoaXMudHlwZT0iQmVhbUVsZW0iLHRoaXMuaXNmbGF0PSEhcix0aGlzLmlzZ3JhY2U9ISghdHx8ImdyYWNlIiE9PXQpLHRoaXMuZm9yY2V1cD0hISh0aGlzLmlzZ3JhY2V8fHQmJiJ1cCI9PT10KSx0aGlzLmZvcmNlZG93bj0hKCF0fHwiZG93biIhPT10KSx0aGlzLmVsZW1zPVtdLHRoaXMudG90YWw9MCx0aGlzLmF2ZXJhZ2U9Nix0aGlzLmFsbHJlc3RzPSEwLHRoaXMuc3RlbUhlaWdodD1lLHRoaXMuYmVhbXM9W10sbiYmbi5kdXJhdGlvbj8odGhpcy5kdXJhdGlvbj1uLmR1cmF0aW9uLG4uc3RhcnRUcmlwbGV0JiYodGhpcy5kdXJhdGlvbio9bi50cmlwbGV0TXVsdGlwbGllciksdGhpcy5kdXJhdGlvbj1NYXRoLnJvdW5kKDFlMyp0aGlzLmR1cmF0aW9uKS8xZTMpOnRoaXMuZHVyYXRpb249MH07ZnVuY3Rpb24gcihlLHQpe3JldHVybiB0P2UvdDowfXQucHJvdG90eXBlLnNldEhpbnQ9ZnVuY3Rpb24oKXt0aGlzLmhpbnQ9ITB9LHQucHJvdG90eXBlLnJ1bm5pbmdEaXJlY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hdmVyYWdlcGl0Y2g7dm9pZCAwIT09dCYmKHRoaXMudG90YWw9TWF0aC5yb3VuZCh0aGlzLnRvdGFsK3QpLHRoaXMuY291bnR8fCh0aGlzLmNvdW50PTApLHRoaXMuY291bnQrKyl9LHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt2YXIgdD1lLmFiY2VsZW0uYXZlcmFnZXBpdGNoO3ZvaWQgMCE9PXQmJihlLmFiY2VsZW0ucmVzdHx8KHRoaXMuYWxscmVzdHM9ITEpLGUuYmVhbT10aGlzLHRoaXMuZWxlbXMucHVzaChlKSx0aGlzLnRvdGFsPU1hdGgucm91bmQodGhpcy50b3RhbCt0KSwodm9pZCAwPT09dGhpcy5taW58fGUuYWJjZWxlbS5taW5waXRjaDx0aGlzLm1pbikmJih0aGlzLm1pbj1lLmFiY2VsZW0ubWlucGl0Y2gpLCh2b2lkIDA9PT10aGlzLm1heHx8ZS5hYmNlbGVtLm1heHBpdGNoPnRoaXMubWF4KSYmKHRoaXMubWF4PWUuYWJjZWxlbS5tYXhwaXRjaCkpfSx0LnByb3RvdHlwZS5hZGRCZWFtPWZ1bmN0aW9uKGUpe3RoaXMuYmVhbXMucHVzaChlKX0sdC5wcm90b3R5cGUuc2V0U3RlbURpcmVjdGlvbj1mdW5jdGlvbigpe3RoaXMuYXZlcmFnZT1yKHRoaXMudG90YWwsdGhpcy5jb3VudCksdGhpcy5mb3JjZXVwP3RoaXMuc3RlbXNVcD0hMDp0aGlzLmZvcmNlZG93bj90aGlzLnN0ZW1zVXA9ITE6dGhpcy5zdGVtc1VwPXRoaXMuYXZlcmFnZTw2LGRlbGV0ZSB0aGlzLmNvdW50LHRoaXMudG90YWw9MH0sdC5wcm90b3R5cGUuY2FsY0Rpcj1mdW5jdGlvbigpe3RoaXMuYXZlcmFnZT1yKHRoaXMudG90YWwsdGhpcy5lbGVtcy5sZW5ndGgpLHRoaXMuZm9yY2V1cD90aGlzLnN0ZW1zVXA9ITA6dGhpcy5mb3JjZWRvd24/dGhpcy5zdGVtc1VwPSExOnRoaXMuc3RlbXNVcD10aGlzLmF2ZXJhZ2U8Njtmb3IodmFyIGU9dGhpcy5zdGVtc1VwPyJ1cCI6ImRvd24iLHQ9MDt0PHRoaXMuZWxlbXMubGVuZ3RoO3QrKylmb3IodmFyIG49MDtuPHRoaXMuZWxlbXNbdF0uaGVhZHMubGVuZ3RoO24rKyl0aGlzLmVsZW1zW3RdLmhlYWRzW25dLnN0ZW1EaXI9ZX0sZS5leHBvcnRzPXR9LDkzMTY6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTcxNiksYT1yKDY5OTQpO2Z1bmN0aW9uIGkoZSx0LHIsbixhLGkscyl7dGhpcy5yb3dzPVtdLGUudW5hbGlnbmVkV29yZHMmJmUudW5hbGlnbmVkV29yZHMubGVuZ3RoPjAmJnRoaXMudW5hbGlnbmVkV29yZHMoZS51bmFsaWduZWRXb3JkcyxuLGEsaSxzKSx0aGlzLmV4dHJhVGV4dChlLG4sYSxpLHMpLGUuZm9vdGVyJiZyJiZ0aGlzLmZvb3RlcihlLmZvb3Rlcix0LG4scyl9ZnVuY3Rpb24gcyhlLHQscixuLGkscyxvKXtyJiYodCYmKHI9InN0cmluZyI9PXR5cGVvZiByP3Qrcjpbe3RleHQ6dH1dLmNvbmNhdChyKSksYShlLHIsImhpc3Rvcnlmb250IixpPXM/ImFiY2pzLWV4dHJhLXRleHQgIitpOiIiLCJkZXNjcmlwdGlvbiIsbix7YWJzRWxlbVR5cGU6ImV4dHJhVGV4dCIsYW5jaG9yOiJzdGFydCJ9LG8pKX1mdW5jdGlvbiBvKGUsdCxyLGkscyxvLGMsbCxoLHUsZCxmKXtpZihyKXtsPWQ/ImFiY2pzLWV4dHJhLXRleHQgIitsOiIiO3ZhciBwPWYuY2FsYygiQSIscyxsKTtpZigic3RyaW5nIj09dHlwZW9mIHIpdCYmKHI9dCsiXG4iK3IpLG4oZSx7bWFyZ2luTGVmdDppLHRleHQ6cixmb250OnMsYWJzRWxlbVR5cGU6ImV4dHJhVGV4dCIsbmFtZTpoLCJkb21pbmFudC1iYXNlbGluZSI6Im1pZGRsZSIsa2xhc3M6bH0sZik7ZWxzZXtlLnB1c2goe3N0YXJ0R3JvdXA6YyxrbGFzczpsLG5hbWU6aH0pLGUucHVzaCh7bW92ZTp1LmluZm99KSx0JiYobihlLHttYXJnaW5MZWZ0OmksdGV4dDp0LGZvbnQ6cyxhYnNFbGVtVHlwZToiZXh0cmFUZXh0IixuYW1lOmgsImRvbWluYW50LWJhc2VsaW5lIjoibWlkZGxlIn0sZiksZS5wdXNoKHttb3ZlOjMqcC5oZWlnaHQvNH0pKTtmb3IodmFyIG09MDttPHIubGVuZ3RoO20rKylhKGUsclttXSxzLCIiLGgsaSx7YW5jaG9yOiJzdGFydCJ9LGYpLG08ci5sZW5ndGgtMSYmInN0cmluZyI9PXR5cGVvZiByW21dJiYic3RyaW5nIiE9dHlwZW9mIHJbbSsxXSYmZS5wdXNoKHttb3ZlOjMqcC5oZWlnaHQvNH0pO2UucHVzaCh7ZW5kR3JvdXA6YyxhYnNFbGVtVHlwZTpvLHN0YXJ0Q2hhcjotMSxlbmRDaGFyOi0xLG5hbWU6aH0pLGUucHVzaCh7bW92ZTpwLmhlaWdodH0pfX19aS5wcm90b3R5cGUudW5hbGlnbmVkV29yZHM9ZnVuY3Rpb24oZSx0LHIsbixhKXt2YXIgaT1uPyJhYmNqcy11bmFsaWduZWQtd29yZHMiOiIiLHM9IndvcmRzZm9udCIsYz1hLmNhbGMoImkiLHMsaSk7dGhpcy5yb3dzLnB1c2goe21vdmU6ci53b3Jkc30pLG8odGhpcy5yb3dzLCIiLGUsdCxzLCJ1bmFsaWduZWRXb3JkcyIsInVuYWxpZ25lZFdvcmRzIixpLCJ1bmFsaWduZWRXb3JkcyIscixuLGEpLHRoaXMucm93cy5wdXNoKHttb3ZlOmMuaGVpZ2h0fSl9LGkucHJvdG90eXBlLmV4dHJhVGV4dD1mdW5jdGlvbihlLHQscixuLGEpe3ModGhpcy5yb3dzLCJCb29rOiAiLGUuYm9vayx0LCJhYmNqcy1ib29rIixuLGEpLHModGhpcy5yb3dzLCJTb3VyY2U6ICIsZS5zb3VyY2UsdCwiYWJjanMtc291cmNlIixuLGEpLHModGhpcy5yb3dzLCJEaXNjb2dyYXBoeTogIixlLmRpc2NvZ3JhcGh5LHQsImFiY2pzLWRpc2NvZ3JhcGh5IixuLGEpLG8odGhpcy5yb3dzLCJOb3RlczoiLGUubm90ZXMsdCwiaGlzdG9yeWZvbnQiLCJleHRyYVRleHQiLCJub3RlcyIsImFiY2pzLW5vdGVzIiwiZGVzY3JpcHRpb24iLHIsbixhKSxzKHRoaXMucm93cywiVHJhbnNjcmlwdGlvbjogIixlLnRyYW5zY3JpcHRpb24sdCwiYWJjanMtdHJhbnNjcmlwdGlvbiIsbixhKSxvKHRoaXMucm93cywiSGlzdG9yeToiLGUuaGlzdG9yeSx0LCJoaXN0b3J5Zm9udCIsImV4dHJhVGV4dCIsImhpc3RvcnkiLCJhYmNqcy1oaXN0b3J5IiwiZGVzY3JpcHRpb24iLHIsbixhKSxzKHRoaXMucm93cywiQ29weXJpZ2h0OiAiLGVbImFiYy1jb3B5cmlnaHQiXSx0LCJhYmNqcy1jb3B5cmlnaHQiLG4sYSkscyh0aGlzLnJvd3MsIkNyZWF0b3I6ICIsZVsiYWJjLWNyZWF0b3IiXSx0LCJhYmNqcy1jcmVhdG9yIixuLGEpLHModGhpcy5yb3dzLCJFZGl0ZWQgQnk6ICIsZVsiYWJjLWVkaXRlZC1ieSJdLHQsImFiY2pzLWVkaXRlZC1ieSIsbixhKX0saS5wcm90b3R5cGUuZm9vdGVyPWZ1bmN0aW9uKGUsdCxyLGEpe3ZhciBpPSJoZWFkZXIgbWV0YS1ib3R0b20iLHM9ImZvb3RlcmZvbnQiO3RoaXMucm93cy5wdXNoKHtzdGFydEdyb3VwOiJmb290ZXIiLGtsYXNzOml9KSxuKHRoaXMucm93cyx7bWFyZ2luTGVmdDpyLHRleHQ6ZS5sZWZ0LGZvbnQ6cyxrbGFzczppLG5hbWU6ImZvb3RlciJ9LGEpLG4odGhpcy5yb3dzLHttYXJnaW5MZWZ0OnIrdC8yLHRleHQ6ZS5jZW50ZXIsZm9udDpzLGtsYXNzOmksYW5jaG9yOiJtaWRkbGUiLG5hbWU6ImZvb3RlciJ9LGEpLG4odGhpcy5yb3dzLHttYXJnaW5MZWZ0OnIrdCx0ZXh0OmUucmlnaHQsZm9udDpzLGtsYXNzOmksYW5jaG9yOiJlbmQiLG5hbWU6ImZvb3RlciJ9LGEpfSxlLmV4cG9ydHM9aX0sNTIyNDpmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe3RoaXMuc3RhcnRWb2ljZT1lLHRoaXMudHlwZT10fTt0LnByb3RvdHlwZS5zZXRCb3R0b21TdGFmZj1mdW5jdGlvbihlKXt0aGlzLmVuZFZvaWNlPWUsdGhpcy5zdGFydFZvaWNlLmhlYWRlciYmIXRoaXMuZW5kVm9pY2UuaGVhZGVyJiYodGhpcy5oZWFkZXI9dGhpcy5zdGFydFZvaWNlLmhlYWRlcixkZWxldGUgdGhpcy5zdGFydFZvaWNlLmhlYWRlcil9LHQucHJvdG90eXBlLmNvbnRpbnVpbmc9ZnVuY3Rpb24oZSl7dGhpcy5sYXN0Q29udGludWVkVm9pY2U9ZX0sdC5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gMTB9LHQucHJvdG90eXBlLmlzU3RhcnRWb2ljZT1mdW5jdGlvbihlKXtyZXR1cm4hISh0aGlzLnN0YXJ0Vm9pY2UmJnRoaXMuc3RhcnRWb2ljZS5zdGFmZiYmdGhpcy5zdGFydFZvaWNlLnN0YWZmLnZvaWNlcy5sZW5ndGg+MCYmdGhpcy5zdGFydFZvaWNlLnN0YWZmLnZvaWNlc1swXT09PWUpfSxlLmV4cG9ydHM9dH0sNjg5MTpmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbil7dGhpcy50eXBlPSJDcmVzY2VuZG9FbGVtIix0aGlzLmFuY2hvcjE9ZSx0aGlzLmFuY2hvcjI9dCx0aGlzLmRpcj1yLCJhYm92ZSI9PT1uP3RoaXMuZHluYW1pY0hlaWdodEFib3ZlPTY6dGhpcy5keW5hbWljSGVpZ2h0QmVsb3c9Nix0aGlzLnBpdGNoPXZvaWQgMH19LDMxODU6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLnR5cGU9IkR5bmFtaWNEZWNvcmF0aW9uIix0aGlzLmFuY2hvcj1lLHRoaXMuZGVjPXQsImJlbG93Ij09PXI/dGhpcy52b2x1bWVIZWlnaHRCZWxvdz02OnRoaXMudm9sdW1lSGVpZ2h0QWJvdmU9Nix0aGlzLnBpdGNoPXZvaWQgMH19LDgyNTY6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLnR5cGU9IkVuZGluZ0VsZW0iLHRoaXMudGV4dD1lLHRoaXMuYW5jaG9yMT10LHRoaXMuYW5jaG9yMj1yLHRoaXMuZW5kaW5nSGVpZ2h0QWJvdmU9NSx0aGlzLnBpdGNoPXZvaWQgMH19LDM3MzY6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4sYSxpKXt2YXIgcyxvPWUudGV4dDt0aGlzLnJvd3M9W10sdCYmdGhpcy5yb3dzLnB1c2goe21vdmU6dH0pO3ZhciBjPXIuY2FsYygidGV4dGZvbnQiLCJkZWZpbmVkLXRleHQiKTtpZigiIj09PW8pdGhpcy5yb3dzLnB1c2goe21vdmU6MipjLmF0dHJbImZvbnQtc2l6ZSJdfSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIG8pe3RoaXMucm93cy5wdXNoKHttb3ZlOmMuYXR0clsiZm9udC1zaXplIl0vMn0pLHRoaXMucm93cy5wdXNoKHtsZWZ0Om4sdGV4dDpvLGZvbnQ6InRleHRmb250IixrbGFzczoiZGVmaW5lZC10ZXh0IixhbmNob3I6InN0YXJ0IixzdGFydENoYXI6ZS5zdGFydENoYXIsZW5kQ2hhcjplLmVuZENoYXIsYWJzRWxlbVR5cGU6ImZyZWVUZXh0IixuYW1lOiJmcmVlLXRleHQifSk7dmFyIGw9by5yZXBsYWNlKC9eWyBcdF0qXG4vZ20sIlhcbiIpO3M9aS5jYWxjKGwsInRleHRmb250IiwiZGVmaW5lZC10ZXh0IiksdGhpcy5yb3dzLnB1c2goe21vdmU6cy5oZWlnaHR9KX1lbHNlIGlmKG8pe2Zvcih2YXIgaD0wLHU9bixkPSJ0ZXh0Zm9udCIsZj0wO2Y8by5sZW5ndGg7ZisrKWQ9b1tmXS5mb250P29bZl0uZm9udDoidGV4dGZvbnQiLHRoaXMucm93cy5wdXNoKHtsZWZ0OnUsdGV4dDpvW2ZdLnRleHQsZm9udDpkLGtsYXNzOiJkZWZpbmVkLXRleHQiLGFuY2hvcjoic3RhcnQiLHN0YXJ0Q2hhcjplLnN0YXJ0Q2hhcixlbmRDaGFyOmUuZW5kQ2hhcixhYnNFbGVtVHlwZToiZnJlZVRleHQiLG5hbWU6ImZyZWUtdGV4dCJ9KSx1Kz0ocz1pLmNhbGMob1tmXS50ZXh0LHIuY2FsYyhkLCJkZWZpbmVkLXRleHQiKS5mb250LCJkZWZpbmVkLXRleHQiKSkud2lkdGgrcy5oZWlnaHQvMixoPU1hdGgubWF4KGgscy5oZWlnaHQpO3RoaXMucm93cy5wdXNoKHttb3ZlOmh9KX1lbHNlIGlmKDE9PT1lLmxlbmd0aCl7dmFyIHA9YS8yO3RoaXMucm93cy5wdXNoKHtsZWZ0OnAsdGV4dDplWzBdLnRleHQsZm9udDoidGV4dGZvbnQiLGtsYXNzOiJkZWZpbmVkLXRleHQiLGFuY2hvcjoibWlkZGxlIixzdGFydENoYXI6ZS5zdGFydENoYXIsZW5kQ2hhcjplLmVuZENoYXIsYWJzRWxlbVR5cGU6ImZyZWVUZXh0IixuYW1lOiJmcmVlLXRleHQifSkscz1pLmNhbGMoZVswXS50ZXh0LCJ0ZXh0Zm9udCIsImRlZmluZWQtdGV4dCIpLHRoaXMucm93cy5wdXNoKHttb3ZlOnMuaGVpZ2h0fSl9fX0sODg0NDpmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0aGlzLnR5cGU9IkdsaXNzYW5kb0VsZW0iLHRoaXMuYW5jaG9yMT1lLHRoaXMuYW5jaG9yMj10fX0sNjY1ODpmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQscixuLGEpe3N3aXRjaChhPWF8fHt9LHRoaXMueD0wLHRoaXMuYz1lLHRoaXMuZHg9dCx0aGlzLnc9cix0aGlzLnBpdGNoPW4sdGhpcy5zY2FsZXg9YS5zY2FsZXh8fDEsdGhpcy5zY2FsZXk9YS5zY2FsZXl8fDEsdGhpcy50eXBlPWEudHlwZXx8InN5bWJvbCIsdGhpcy5waXRjaDI9YS5waXRjaDIsdGhpcy5saW5ld2lkdGg9YS5saW5ld2lkdGgsdGhpcy5rbGFzcz1hLmtsYXNzLHRoaXMuYW5jaG9yPWEuYW5jaG9yP2EuYW5jaG9yOiJtaWRkbGUiLHRoaXMudG9wPW4sdm9pZCAwIT09dGhpcy5waXRjaDImJnRoaXMucGl0Y2gyPnRoaXMudG9wJiYodGhpcy50b3A9dGhpcy5waXRjaDIpLHRoaXMuYm90dG9tPW4sdm9pZCAwIT09dGhpcy5waXRjaDImJnRoaXMucGl0Y2gyPHRoaXMuYm90dG9tJiYodGhpcy5ib3R0b209dGhpcy5waXRjaDIpLGEudGhpY2tuZXNzJiYodGhpcy50b3ArPWEudGhpY2tuZXNzLzIsdGhpcy5ib3R0b20tPWEudGhpY2tuZXNzLzIpLGEuc3RlbUhlaWdodCYmKGEuc3RlbUhlaWdodD4wP3RoaXMudG9wKz1hLnN0ZW1IZWlnaHQ6dGhpcy5ib3R0b20rPWEuc3RlbUhlaWdodCksYS5kaW0mJih0aGlzLmRpbT1hLmRpbSksYS5wb3NpdGlvbiYmKHRoaXMucG9zaXRpb249YS5wb3NpdGlvbiksdGhpcy5oZWlnaHQ9YS5oZWlnaHQ/YS5oZWlnaHQ6NCxhLnRvcCYmKHRoaXMudG9wPWEudG9wKSxhLmJvdHRvbSYmKHRoaXMuYm90dG9tPWEuYm90dG9tKSxhLm5hbWU/dGhpcy5uYW1lPWEubmFtZTp0aGlzLmM/dGhpcy5uYW1lPXRoaXMuYzp0aGlzLm5hbWU9dGhpcy50eXBlLGEucmVhbFdpZHRoP3RoaXMucmVhbFdpZHRoPWEucmVhbFdpZHRoOnRoaXMucmVhbFdpZHRoPXRoaXMudyx0aGlzLmNlbnRlclZlcnRpY2FsbHk9ITEsdGhpcy50eXBlKXtjYXNlImRlYnVnIjp0aGlzLmNob3JkSGVpZ2h0QWJvdmU9dGhpcy5oZWlnaHQ7YnJlYWs7Y2FzZSJseXJpYyI6YS5wb3NpdGlvbiYmImJlbG93Ij09PWEucG9zaXRpb24/dGhpcy5seXJpY0hlaWdodEJlbG93PXRoaXMuaGVpZ2h0OnRoaXMubHlyaWNIZWlnaHRBYm92ZT10aGlzLmhlaWdodDticmVhaztjYXNlImNob3JkIjphLnBvc2l0aW9uJiYiYmVsb3ciPT09YS5wb3NpdGlvbj90aGlzLmNob3JkSGVpZ2h0QmVsb3c9dGhpcy5oZWlnaHQ6dGhpcy5jaG9yZEhlaWdodEFib3ZlPXRoaXMuaGVpZ2h0O2JyZWFrO2Nhc2UidGV4dCI6dm9pZCAwPT09dGhpcy5waXRjaD9hLnBvc2l0aW9uJiYiYmVsb3ciPT09YS5wb3NpdGlvbj90aGlzLmNob3JkSGVpZ2h0QmVsb3c9dGhpcy5oZWlnaHQ6dGhpcy5jaG9yZEhlaWdodEFib3ZlPXRoaXMuaGVpZ2h0OnRoaXMuY2VudGVyVmVydGljYWxseT0hMDticmVhaztjYXNlInBhcnQiOnRoaXMucGFydEhlaWdodEFib3ZlPXRoaXMuaGVpZ2h0fX07dC5wcm90b3R5cGUuZ2V0Q2hvcmREaW09ZnVuY3Rpb24oKXtpZigiZGVidWciPT09dGhpcy50eXBlKXJldHVybiBudWxsO2lmKCF0aGlzLmNob3JkSGVpZ2h0QWJvdmUmJiF0aGlzLmNob3JkSGVpZ2h0QmVsb3cpcmV0dXJuIG51bGw7dmFyIGU9ImNob3JkIj09PXRoaXMudHlwZT90aGlzLnJlYWxXaWR0aC8yOjAsdD10aGlzLngtZS0wO3JldHVybntsZWZ0OnQscmlnaHQ6dCt0aGlzLnJlYWxXaWR0aCswfX0sdC5wcm90b3R5cGUuaW52ZXJ0TGFuZT1mdW5jdGlvbihlKXt2b2lkIDA9PT10aGlzLmxhbmUmJih0aGlzLmxhbmU9MCksdGhpcy5sYW5lPWUtdGhpcy5sYW5lLTF9LHQucHJvdG90eXBlLnB1dENob3JkSW5MYW5lPWZ1bmN0aW9uKGUpe3RoaXMubGFuZT1lLHRoaXMuY2hvcmRIZWlnaHRBYm92ZT90aGlzLmNob3JkSGVpZ2h0QWJvdmU9MS4yNSp0aGlzLmhlaWdodCp0aGlzLmxhbmU6dGhpcy5jaG9yZEhlaWdodEJlbG93PTEuMjUqdGhpcy5oZWlnaHQqdGhpcy5sYW5lfSx0LnByb3RvdHlwZS5nZXRMYW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMubGFuZT8wOnRoaXMubGFuZX0sdC5wcm90b3R5cGUuc2V0WD1mdW5jdGlvbihlKXt0aGlzLng9ZSt0aGlzLmR4fSxlLmV4cG9ydHM9dH0sNjk5NDpmdW5jdGlvbihlLHQscil7dmFyIG49cigxNzE2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsYSxpLHMsbyxjKXt2YXIgbD1jLmNhbGMoImkiLHIsYSk7aWYoIiI9PT10KWUucHVzaCh7bW92ZTpsLmhlaWdodH0pO2Vsc2V7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB2b2lkIG4oZSx7bWFyZ2luTGVmdDpzLHRleHQ6dCxmb250OnIsa2xhc3M6YSxtYXJnaW5Ub3A6by5tYXJnaW5Ub3AsYW5jaG9yOm8uYW5jaG9yLGFic0VsZW1UeXBlOm8uYWJzRWxlbVR5cGUsaW5mbzpvLmluZm8sbmFtZTppfSxjKTtvLm1hcmdpblRvcCYmZS5wdXNoKHttb3ZlOm8ubWFyZ2luVG9wfSk7dmFyIGg9MCx1PXtsZWZ0OnMsYW5jaG9yOm8uYW5jaG9yLHBocmFzZXM6W119O2EmJih1LmtsYXNzPWEpLGUucHVzaCh1KTtmb3IodmFyIGQ9MDtkPHQubGVuZ3RoO2QrKyl7dmFyIGY9dFtkXSxwPWYuZm9udD9mLmZvbnQ6Yy5hdHRyKHIsYSkuZm9udCxtPXtjb250ZW50OmYudGV4dH07cCYmKG0uYXR0cnM9eyJmb250LWZhbWlseSI6Yy5nZXRGYW1pbHkocC5mYWNlKSwiZm9udC1zaXplIjpwLnNpemUsImZvbnQtd2VpZ2h0IjpwLndlaWdodCwiZm9udC1zdHlsZSI6cC5zdHlsZSwiZm9udC1kZWNvcmF0aW9uIjpwLmRlY29yYXRpb259KSx1LnBocmFzZXMucHVzaChtKTt2YXIgZz1jLmNhbGMoZi50ZXh0LHAsYSk7aD1NYXRoLm1heChoLGcuaGVpZ2h0KSwiICI9PT1mLnRleHRbZi50ZXh0Lmxlbmd0aC0xXSYmbC53aWR0aH1lLnB1c2goe21vdmU6aH0pfX19LDU1ODg6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLnJvd3M9W10sZSYmdGhpcy5yb3dzLnB1c2goe21vdmU6ZX0pLHRoaXMucm93cy5wdXNoKHtzZXBhcmF0b3I6dCxhYnNFbGVtVHlwZToic2VwYXJhdG9yIn0pLHImJnRoaXMucm93cy5wdXNoKHttb3ZlOnJ9KX19LDczOTg6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMzY2MSksYT1mdW5jdGlvbihlKXt0aGlzLmdldFRleHRTaXplPWUsdGhpcy52b2ljZXM9W10sdGhpcy5zdGFmZnM9W10sdGhpcy5icmFjZT12b2lkIDAsdGhpcy5icmFja2V0PXZvaWQgMH07YS5wcm90b3R5cGUuc2V0TGltaXQ9ZnVuY3Rpb24oZSx0KXt0LnNwZWNpYWxZW2VdJiYodC5zdGFmZi5zcGVjaWFsWVtlXT90LnN0YWZmLnNwZWNpYWxZW2VdPU1hdGgubWF4KHQuc3RhZmYuc3BlY2lhbFlbZV0sdC5zcGVjaWFsWVtlXSk6dC5zdGFmZi5zcGVjaWFsWVtlXT10LnNwZWNpYWxZW2VdKX0sYS5wcm90b3R5cGUuYWRkVm9pY2U9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMudm9pY2VzLmxlbmd0aDt0aGlzLnZvaWNlc1tuXT1lLHRoaXMuc3RhZmZzW3RdP3RoaXMuc3RhZmZzW3RdLnZvaWNlcy5wdXNoKG4pOnRoaXMuc3RhZmZzW3RoaXMuc3RhZmZzLmxlbmd0aF09e3RvcDoxMCxib3R0b206MixsaW5lczpyLHZvaWNlczpbbl0sc3BlY2lhbFk6e3RlbXBvSGVpZ2h0QWJvdmU6MCxwYXJ0SGVpZ2h0QWJvdmU6MCx2b2x1bWVIZWlnaHRBYm92ZTowLGR5bmFtaWNIZWlnaHRBYm92ZTowLGVuZGluZ0hlaWdodEFib3ZlOjAsY2hvcmRIZWlnaHRBYm92ZTowLGx5cmljSGVpZ2h0QWJvdmU6MCxseXJpY0hlaWdodEJlbG93OjAsY2hvcmRIZWlnaHRCZWxvdzowLHZvbHVtZUhlaWdodEJlbG93OjAsZHluYW1pY0hlaWdodEJlbG93OjB9fSxlLnN0YWZmPXRoaXMuc3RhZmZzW3RdfSxhLnByb3RvdHlwZS5zZXRIZWlnaHQ9ZnVuY3Rpb24oKXt0aGlzLmhlaWdodD1uKHRoaXMpfSxhLnByb3RvdHlwZS5zZXRXaWR0aD1mdW5jdGlvbihlKXt0aGlzLnc9ZTtmb3IodmFyIHQ9MDt0PHRoaXMudm9pY2VzLmxlbmd0aDt0KyspdGhpcy52b2ljZXNbdF0uc2V0V2lkdGgoZSl9LGEucHJvdG90eXBlLnNldFN0YWZmTGltaXRzPWZ1bmN0aW9uKGUpe2Uuc3RhZmYudG9wPU1hdGgubWF4KGUuc3RhZmYudG9wLGUudG9wKSxlLnN0YWZmLmJvdHRvbT1NYXRoLm1pbihlLnN0YWZmLmJvdHRvbSxlLmJvdHRvbSksdGhpcy5zZXRMaW1pdCgidGVtcG9IZWlnaHRBYm92ZSIsZSksdGhpcy5zZXRMaW1pdCgicGFydEhlaWdodEFib3ZlIixlKSx0aGlzLnNldExpbWl0KCJ2b2x1bWVIZWlnaHRBYm92ZSIsZSksdGhpcy5zZXRMaW1pdCgiZHluYW1pY0hlaWdodEFib3ZlIixlKSx0aGlzLnNldExpbWl0KCJlbmRpbmdIZWlnaHRBYm92ZSIsZSksdGhpcy5zZXRMaW1pdCgiY2hvcmRIZWlnaHRBYm92ZSIsZSksdGhpcy5zZXRMaW1pdCgibHlyaWNIZWlnaHRBYm92ZSIsZSksdGhpcy5zZXRMaW1pdCgibHlyaWNIZWlnaHRCZWxvdyIsZSksdGhpcy5zZXRMaW1pdCgiY2hvcmRIZWlnaHRCZWxvdyIsZSksdGhpcy5zZXRMaW1pdCgidm9sdW1lSGVpZ2h0QmVsb3ciLGUpLHRoaXMuc2V0TGltaXQoImR5bmFtaWNIZWlnaHRCZWxvdyIsZSl9LGUuZXhwb3J0cz1hfSw0NzI2OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixuLGEsaSl7dGhpcy5yb3dzPVtdLGUmJnRoaXMucm93cy5wdXNoKHttb3ZlOmV9KTt2YXIgcz10LnRpdGxlbGVmdD8ic3RhcnQiOiJtaWRkbGUiLG89dC50aXRsZWxlZnQ/YTpuO3RoaXMucm93cy5wdXNoKHtsZWZ0Om8sdGV4dDpyLnRleHQsZm9udDoic3VidGl0bGVmb250IixrbGFzczoidGV4dCBzdWJ0aXRsZSIsYW5jaG9yOnMsc3RhcnRDaGFyOnIuc3RhcnRDaGFyLGVuZENoYXI6ci5lbmRDaGFyLGFic0VsZW1UeXBlOiJzdWJ0aXRsZSIsbmFtZToic3VidGl0bGUifSk7dmFyIGM9aS5jYWxjKHIudGV4dCwic3VidGl0bGVmb250IiwidGV4dCBzdWJ0aXRsZSIpO3RoaXMucm93cy5wdXNoKHttb3ZlOmMuaGVpZ2h0fSl9fSwxMTA2OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE0MDkpLGE9cig2NjU4KSxpPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLnR5cGU9IlRlbXBvRWxlbWVudCIsdGhpcy50ZW1wbz1lLHRoaXMudGVtcG8udHlwZT0idGVtcG8iLHRoaXMudHVuZU51bWJlcj10LHRoaXMudG90YWxIZWlnaHRJblBpdGNoZXM9Nix0aGlzLnRlbXBvSGVpZ2h0QWJvdmU9dGhpcy50b3RhbEhlaWdodEluUGl0Y2hlcyx0aGlzLnBpdGNoPXZvaWQgMCx0aGlzLnRlbXBvLmR1cmF0aW9uJiYhdGhpcy50ZW1wby5zdXBwcmVzc0JwbSYmKHRoaXMubm90ZT10aGlzLmNyZWF0ZU5vdGUocixlLHQpKX07aS5wcm90b3R5cGUuc2V0WD1mdW5jdGlvbihlKXt0aGlzLng9ZX0saS5wcm90b3R5cGUuY3JlYXRlTm90ZT1mdW5jdGlvbihlLHQscil7dmFyIGkscyxvLGM9Ljc1LGw9dC5kdXJhdGlvblswXSxoPW5ldyBuKHQsbCwxLCJ0ZW1wbyIscik7bDw9MS8zMj8obz0ibm90ZWhlYWRzLnF1YXJ0ZXIiLHM9ImZsYWdzLnUzMm5kIixpPTApOmw8PTEvMTY/KG89Im5vdGVoZWFkcy5xdWFydGVyIixzPSJmbGFncy51MTZ0aCIsaT0wKTpsPD0zLzMyPyhvPSJub3RlaGVhZHMucXVhcnRlciIscz0iZmxhZ3MudTE2bmQiLGk9MSk6bDw9MS84PyhvPSJub3RlaGVhZHMucXVhcnRlciIscz0iZmxhZ3MudTh0aCIsaT0wKTpsPD0zLzE2PyhvPSJub3RlaGVhZHMucXVhcnRlciIscz0iZmxhZ3MudTh0aCIsaT0xKTpsPD0xLzQ/KG89Im5vdGVoZWFkcy5xdWFydGVyIixpPTApOmw8PTMvOD8obz0ibm90ZWhlYWRzLnF1YXJ0ZXIiLGk9MSk6bDw9LjU/KG89Im5vdGVoZWFkcy5oYWxmIixpPTApOmw8PTMvND8obz0ibm90ZWhlYWRzLmhhbGYiLGk9MSk6bDw9MT8obz0ibm90ZWhlYWRzLndob2xlIixpPTApOmw8PTEuNT8obz0ibm90ZWhlYWRzLndob2xlIixpPTEpOmw8PTI/KG89Im5vdGVoZWFkcy5kYmwiLGk9MCk6KG89Im5vdGVoZWFkcy5kYmwiLGk9MSk7dmFyIHUsZD1lKGgsbyx7dmVydGljYWxQb3M6MH0se2RpcjoidXAiLGZsYWc6cyxkb3Q6aSxzY2FsZTpjfSkubm90ZWhlYWQ7aWYoaC5hZGRIZWFkKGQpLCJub3RlaGVhZHMud2hvbGUiIT09byYmIm5vdGVoZWFkcy5kYmwiIT09byl7dmFyIGY9ZC5keCtkLnc7dT1uZXcgYShudWxsLGYsMCwuMjUse3R5cGU6InN0ZW0iLHBpdGNoMjozLjc1LGxpbmV3aWR0aDotLjZ9KSxoLmFkZFJpZ2h0KHUpfXJldHVybiBofSxlLmV4cG9ydHM9aX0sNjE4MzpmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXt0aGlzLnR5cGU9IlRpZUVsZW0iLHRoaXMuYW5jaG9yMT1lLmFuY2hvcjEsdGhpcy5hbmNob3IyPWUuYW5jaG9yMixlLmlzR3JhY2UmJih0aGlzLmlzR3JhY2U9ITApLGUuZml4ZWRZJiYodGhpcy5maXhlZFk9ITApLGUuc3RlbURpciYmKHRoaXMuc3RlbURpcj1lLnN0ZW1EaXIpLHZvaWQgMCE9PWUudm9pY2VOdW1iZXImJih0aGlzLnZvaWNlTnVtYmVyPWUudm9pY2VOdW1iZXIpLHZvaWQgMCE9PWUuc3R5bGUmJih0aGlzLmRvdHRlZD0hMCksdGhpcy5pbnRlcm5hbE5vdGVzPVtdfTt0LnByb3RvdHlwZS5hZGRJbnRlcm5hbE5vdGU9ZnVuY3Rpb24oZSl7dGhpcy5pbnRlcm5hbE5vdGVzLnB1c2goZSl9LHQucHJvdG90eXBlLnNldEVuZEFuY2hvcj1mdW5jdGlvbihlKXt0aGlzLmFuY2hvcjI9ZSx0aGlzLmFuY2hvcjE/KHRoaXMudG9wPU1hdGgubWF4KHRoaXMuYW5jaG9yMS5waXRjaCx0aGlzLmFuY2hvcjIucGl0Y2gpKzQsdGhpcy5ib3R0b209TWF0aC5taW4odGhpcy5hbmNob3IxLnBpdGNoLHRoaXMuYW5jaG9yMi5waXRjaCktNCk6KHRoaXMudG9wPXRoaXMuYW5jaG9yMi5waXRjaCs0LHRoaXMuYm90dG9tPXRoaXMuYW5jaG9yMi5waXRjaC00KX0sdC5wcm90b3R5cGUuc2V0U3RhcnRYPWZ1bmN0aW9uKGUpe3RoaXMuc3RhcnRMaW1pdFg9ZX0sdC5wcm90b3R5cGUuc2V0RW5kWD1mdW5jdGlvbihlKXt0aGlzLmVuZExpbWl0WD1lfSx0LnByb3RvdHlwZS5zZXRIaW50PWZ1bmN0aW9uKCl7dGhpcy5oaW50PSEwfSx0LnByb3RvdHlwZS5jYWxjVGllRGlyZWN0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0dyYWNlKXRoaXMuYWJvdmU9ITE7ZWxzZSBpZigwPT09dGhpcy52b2ljZU51bWJlcil0aGlzLmFib3ZlPSEwO2Vsc2UgaWYodGhpcy52b2ljZU51bWJlcj4wKXRoaXMuYWJvdmU9ITE7ZWxzZXt2YXIgZTtlPXRoaXMuYW5jaG9yMT90aGlzLmFuY2hvcjEucGl0Y2g6dGhpcy5hbmNob3IyP3RoaXMuYW5jaG9yMi5waXRjaDoxNCx0aGlzLmFuY2hvcjEmJiJkb3duIj09PXRoaXMuYW5jaG9yMS5zdGVtRGlyJiZ0aGlzLmFuY2hvcjImJiJkb3duIj09PXRoaXMuYW5jaG9yMi5zdGVtRGlyP3RoaXMuYWJvdmU9ITA6dGhpcy5hbmNob3IxJiYidXAiPT09dGhpcy5hbmNob3IxLnN0ZW1EaXImJnRoaXMuYW5jaG9yMiYmInVwIj09PXRoaXMuYW5jaG9yMi5zdGVtRGlyP3RoaXMuYWJvdmU9ITE6dGhpcy5hbmNob3IxJiZ0aGlzLmFuY2hvcjI/dGhpcy5hYm92ZT1lPj02OnRoaXMuYW5jaG9yMT90aGlzLmFib3ZlPSJkb3duIj09PXRoaXMuYW5jaG9yMS5zdGVtRGlyOnRoaXMuYW5jaG9yMj90aGlzLmFib3ZlPSJkb3duIj09PXRoaXMuYW5jaG9yMi5zdGVtRGlyOnRoaXMuYWJvdmU9ZT49Nn19LHQucHJvdG90eXBlLmNhbGNTbHVyRGlyZWN0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0dyYWNlKXRoaXMuYWJvdmU9ITE7ZWxzZSBpZigwPT09dGhpcy52b2ljZU51bWJlcil0aGlzLmFib3ZlPSEwO2Vsc2UgaWYodGhpcy52b2ljZU51bWJlcj4wKXRoaXMuYWJvdmU9ITE7ZWxzZXt2YXIgZT0hMTt0aGlzLmFuY2hvcjEmJiJkb3duIj09PXRoaXMuYW5jaG9yMS5zdGVtRGlyJiYoZT0hMCksdGhpcy5hbmNob3IyJiYiZG93biI9PT10aGlzLmFuY2hvcjIuc3RlbURpciYmKGU9ITApO2Zvcih2YXIgdD0wO3Q8dGhpcy5pbnRlcm5hbE5vdGVzLmxlbmd0aDt0KyspImRvd24iPT09dGhpcy5pbnRlcm5hbE5vdGVzW3RdLnN0ZW1EaXImJihlPSEwKTt0aGlzLmFib3ZlPWV9fSx0LnByb3RvdHlwZS5jYWxjWD1mdW5jdGlvbihlLHQpe3RoaXMuYW5jaG9yMT8odGhpcy5zdGFydFg9dGhpcy5hbmNob3IxLngsdGhpcy5hbmNob3IxLnNjYWxleDwxJiYodGhpcy5zdGFydFgtPTMpKTp0aGlzLnN0YXJ0TGltaXRYP3RoaXMuc3RhcnRYPXRoaXMuc3RhcnRMaW1pdFgueCt0aGlzLnN0YXJ0TGltaXRYLnc6dGhpcy5hbmNob3IyP3RoaXMuc3RhcnRYPXRoaXMuYW5jaG9yMi54LTIwOnRoaXMuc3RhcnRYPWUsIXRoaXMuYW5jaG9yMSYmdGhpcy5kb3R0ZWQmJih0aGlzLnN0YXJ0WC09MyksdGhpcy5hbmNob3IyP3RoaXMuZW5kWD10aGlzLmFuY2hvcjIueDp0aGlzLmVuZExpbWl0WD90aGlzLmVuZFg9dGhpcy5lbmRMaW1pdFgueDp0aGlzLmVuZFg9dH0sdC5wcm90b3R5cGUuY2FsY1RpZVk9ZnVuY3Rpb24oKXt0aGlzLmFuY2hvcjE/dGhpcy5zdGFydFk9dGhpcy5hbmNob3IxLnBpdGNoOnRoaXMuYW5jaG9yMj90aGlzLnN0YXJ0WT10aGlzLmFuY2hvcjIucGl0Y2g6dGhpcy5zdGFydFk9dGhpcy5hYm92ZT8xNDowLHRoaXMuYW5jaG9yMj90aGlzLmVuZFk9dGhpcy5hbmNob3IyLnBpdGNoOnRoaXMuYW5jaG9yMT90aGlzLmVuZFk9dGhpcy5hbmNob3IxLnBpdGNoOnRoaXMuZW5kWT10aGlzLmFib3ZlPzE0OjB9LHQucHJvdG90eXBlLmNhbGNTbHVyWT1mdW5jdGlvbigpe2lmKHRoaXMuYW5jaG9yMSYmdGhpcy5hbmNob3IyKXt0aGlzLmFib3ZlJiYidXAiPT09dGhpcy5hbmNob3IxLnN0ZW1EaXImJiF0aGlzLmZpeGVkWT8odGhpcy5zdGFydFk9KHRoaXMuYW5jaG9yMS5oaWdoZXN0VmVydCt0aGlzLmFuY2hvcjEucGl0Y2gpLzIsdGhpcy5zdGFydFgrPXRoaXMuYW5jaG9yMS53LzIpOnRoaXMuc3RhcnRZPXRoaXMuYW5jaG9yMS5waXRjaDt2YXIgZT10aGlzLmFuY2hvcjIucGFyZW50LmJlYW0mJnRoaXMuYW5jaG9yMi5wYXJlbnQuYmVhbS5zdGVtc1VwJiZ0aGlzLmFuY2hvcjIucGFyZW50LmJlYW0uZWxlbXNbMF0hPT10aGlzLmFuY2hvcjIucGFyZW50LHQ9KHRoaXMuYW5jaG9yMi5oaWdoZXN0VmVydCt0aGlzLmFuY2hvcjIucGl0Y2gpLzI7aWYodGhpcy5hYm92ZSYmInVwIj09PXRoaXMuYW5jaG9yMi5zdGVtRGlyJiYhdGhpcy5maXhlZFkmJiFlJiZ0PHRoaXMuc3RhcnRZPyh0aGlzLmVuZFk9dCx0aGlzLmVuZFgrPU1hdGgucm91bmQodGhpcy5hbmNob3IyLncvMikpOnRoaXMuZW5kWT10aGlzLmFib3ZlJiZlP3RoaXMuYW5jaG9yMi5oaWdoZXN0VmVydDp0aGlzLmFuY2hvcjIucGl0Y2gsMT09PXRoaXMuYW5jaG9yMS5zY2FsZXgpe3ZhciByPSEhdGhpcy5hbmNob3IxLnBhcmVudC5iZWFtLG49ISF0aGlzLmFuY2hvcjIucGFyZW50LmJlYW07ciYmKHRoaXMuYW5jaG9yMS5wYXJlbnQ9PT10aGlzLmFuY2hvcjEucGFyZW50LmJlYW0uZWxlbXNbdGhpcy5hbmNob3IxLnBhcmVudC5iZWFtLmVsZW1zLmxlbmd0aC0xXXx8KHRoaXMuYWJvdmU/dGhpcy5zdGFydFk9dGhpcy5hbmNob3IxLnBhcmVudC5maXhlZC50OnRoaXMuc3RhcnRZPXRoaXMuYW5jaG9yMS5wYXJlbnQuZml4ZWQuYikpLG4mJih0aGlzLmFuY2hvcjIucGFyZW50PT09dGhpcy5hbmNob3IyLnBhcmVudC5iZWFtLmVsZW1zWzBdfHwodGhpcy5hYm92ZT90aGlzLmVuZFk9dGhpcy5hbmNob3IyLnBhcmVudC5maXhlZC50OnRoaXMuZW5kWT10aGlzLmFuY2hvcjIucGFyZW50LmZpeGVkLmIpKX19ZWxzZSB0aGlzLmFuY2hvcjE/dGhpcy5zdGFydFk9dGhpcy5lbmRZPXRoaXMuYW5jaG9yMS5waXRjaDp0aGlzLmFuY2hvcjI/dGhpcy5zdGFydFk9dGhpcy5lbmRZPXRoaXMuYW5jaG9yMi5waXRjaDoodGhpcy5zdGFydFk9dGhpcy5hYm92ZT8xNDowLHRoaXMuZW5kWT10aGlzLmFib3ZlPzE0OjApfSx0LnByb3RvdHlwZS5hdm9pZENvbGxpc2lvbkFib3ZlPWZ1bmN0aW9uKCl7aWYodGhpcy5hYm92ZSl7Zm9yKHZhciBlPS01MCx0PTA7dDx0aGlzLmludGVybmFsTm90ZXMubGVuZ3RoO3QrKyl0aGlzLmludGVybmFsTm90ZXNbdF0uaGlnaGVzdFZlcnQ+ZSYmKGU9dGhpcy5pbnRlcm5hbE5vdGVzW3RdLmhpZ2hlc3RWZXJ0KTtlPnRoaXMuc3RhcnRZJiZlPnRoaXMuZW5kWSYmKHRoaXMuc3RhcnRZPXRoaXMuZW5kWT1lLTEpfX0sdC5wcm90b3R5cGUuZ2V0WUJvdW5kcz1mdW5jdGlvbigpe3ZhciBlLHQ7cmV0dXJuIHRoaXMuaXNUaWU/KHRoaXMuY2FsY1RpZURpcmVjdGlvbigpLHRoaXMuY2FsY1goMTAsMWUzKSx0aGlzLmNhbGNUaWVZKCkpOih0aGlzLmNhbGNTbHVyRGlyZWN0aW9uKCksdGhpcy5jYWxjWCgxMCwxZTMpLHRoaXMuY2FsY1NsdXJZKCkpLHRoaXMuYWJvdmU/ZT0odD1NYXRoLm1pbih0aGlzLnN0YXJ0WSx0aGlzLmVuZFkpKSszOnQ9KGU9TWF0aC5taW4odGhpcy5zdGFydFksdGhpcy5lbmRZKSktMyxbZSx0XX0sZS5leHBvcnRzPXR9LDExMzQ6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTcxNiksYT1yKDY5OTQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixpLHMsbyxjLGwsaCx1KXtpZih0aGlzLnJvd3M9W10sZS5oZWFkZXImJm8pe3ZhciBkPXUuY2FsYygiWCIsImhlYWRlcmZvbnQiLCJhYmNqcy1oZWFkZXIgYWJjanMtbWV0YS10b3AiKS5oZWlnaHQ7bih0aGlzLnJvd3Mse21hcmdpbkxlZnQ6Yyx0ZXh0OmUuaGVhZGVyLmxlZnQsZm9udDoiaGVhZGVyZm9udCIsa2xhc3M6ImhlYWRlciBtZXRhLXRvcCIsbWFyZ2luVG9wOi1kLGluZm86dC5oZWFkZXIsbmFtZToiaGVhZGVyIn0sdSksbih0aGlzLnJvd3Mse21hcmdpbkxlZnQ6YytzLzIsdGV4dDplLmhlYWRlci5jZW50ZXIsZm9udDoiaGVhZGVyZm9udCIsa2xhc3M6ImhlYWRlciBtZXRhLXRvcCIsbWFyZ2luVG9wOi1kLGFuY2hvcjoibWlkZGxlIixpbmZvOnQuaGVhZGVyLG5hbWU6ImhlYWRlciJ9LHUpLG4odGhpcy5yb3dzLHttYXJnaW5MZWZ0OmMrcyx0ZXh0OmUuaGVhZGVyLnJpZ2h0LGZvbnQ6ImhlYWRlcmZvbnQiLGtsYXNzOiJoZWFkZXIgbWV0YS10b3AiLG1hcmdpblRvcDotZCxhbmNob3I6ImVuZCIsaW5mbzp0LmhlYWRlcixuYW1lOiJoZWFkZXIifSx1KX1vJiZ0aGlzLnJvd3MucHVzaCh7bW92ZTpsLnRvcH0pO3ZhciBmPXIudGl0bGVsZWZ0PyJzdGFydCI6Im1pZGRsZSIscD1yLnRpdGxlbGVmdD9jOmMrcy8yO2lmKGUudGl0bGUpe3ZhciBtPWg/ImFiY2pzLXRpdGxlIjoiIjthKHRoaXMucm93cyxlLnRpdGxlLCJ0aXRsZWZvbnQiLG0sInRpdGxlIixwLHttYXJnaW5Ub3A6bC50aXRsZSxhbmNob3I6ZixhYnNFbGVtVHlwZToidGl0bGUiLGluZm86dC50aXRsZX0sdSl9aWYoaS5sZW5ndGgpZm9yKHZhciBnPTA7ZzxpLmxlbmd0aCYmaVtnXS5zdWJ0aXRsZTspbT1oPyJhYmNqcy10ZXh0IGFiY2pzLXN1YnRpdGxlIjoiIixhKHRoaXMucm93cyxpW2ddLnN1YnRpdGxlLnRleHQsInN1YnRpdGxlZm9udCIsbSwic3VidGl0bGUiLHAse21hcmdpblRvcDpsLnN1YnRpdGxlLGFuY2hvcjpmLGFic0VsZW1UeXBlOiJzdWJ0aXRsZSIsaW5mbzppW2ddLnN1YnRpdGxlfSx1KSxnKys7aWYoZS5yaHl0aG18fGUub3JpZ2lufHxlLmNvbXBvc2VyKXtpZih0aGlzLnJvd3MucHVzaCh7bW92ZTpsLmNvbXBvc2VyfSksZS5yaHl0aG0mJmUucmh5dGhtLmxlbmd0aD4wKXt2YXIgdj0hKCFlLmNvbXBvc2VyJiYhZS5vcmlnaW4pO209aD8iYWJjanMtcmh5dGhtIjoiIixuKHRoaXMucm93cyx7bWFyZ2luTGVmdDpjLHRleHQ6ZS5yaHl0aG0sZm9udDoiaW5mb2ZvbnQiLGtsYXNzOm0sYWJzRWxlbVR5cGU6InJoeXRobSIsbm9Nb3ZlOnYsaW5mbzp0LnJoeXRobSxuYW1lOiJyaHl0aG0ifSx1KX1lLmNvbXBvc2VyJiZlLmNvbXBvc2VyLGUub3JpZ2luJiZlLm9yaWdpbjt2YXIgYj1lLmNvbXBvc2VyP2UuY29tcG9zZXI6IiI7ZS5vcmlnaW4mJigic3RyaW5nIj09dHlwZW9mIGImJiJzdHJpbmciPT10eXBlb2YgZS5vcmlnaW4/Yis9IiAoIitlLm9yaWdpbisiKSI6InN0cmluZyI9PXR5cGVvZiBiJiYic3RyaW5nIiE9dHlwZW9mIGUub3JpZ2luPygoYj1be3RleHQ6Yn1dKS5wdXNoKHt0ZXh0OiIgKCJ9KSwoYj1iLmNvbmNhdChlLm9yaWdpbikpLnB1c2goe3RleHQ6IikifSkpOihiLnB1c2goe3RleHQ6IiAoIn0pLChiPWIuY29uY2F0KGUub3JpZ2luKSkucHVzaCh7dGV4dDoiKSJ9KSkpLGImJihtPWg/ImFiY2pzLWNvbXBvc2VyIjoiIixhKHRoaXMucm93cyxiLCJjb21wb3NlcmZvbnQiLG0sImNvbXBvc2VyIixjK3Mse2FuY2hvcjoiZW5kIixhYnNFbGVtVHlwZToiY29tcG9zZXIiLGluZm86dC5jb21wb3Nlcixpbmdyb3VwOiEwfSx1KSl9ZS5hdXRob3ImJmUuYXV0aG9yLmxlbmd0aD4wJiYobT1oPyJhYmNqcy1hdXRob3IiOiIiLGEodGhpcy5yb3dzLGUuYXV0aG9yLCJjb21wb3NlcmZvbnQiLG0sImF1dGhvciIsYytzLHthbmNob3I6ImVuZCIsYWJzRWxlbVR5cGU6ImF1dGhvciIsaW5mbzp0LmF1dGhvcn0sdSkpLGUucGFydE9yZGVyJiZlLnBhcnRPcmRlci5sZW5ndGg+MCYmKG09aD8iYWJjanMtcGFydC1vcmRlciI6IiIsYSh0aGlzLnJvd3MsZS5wYXJ0T3JkZXIsInBhcnRzZm9udCIsbSwicGFydC1vcmRlciIsYyx7YWJzRWxlbVR5cGU6InBhcnRPcmRlciIsaW5mbzp0LnBhcnRPcmRlcixhbmNob3I6InN0YXJ0In0sdSkpfX0sMjA5NjpmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQscil7dGhpcy50eXBlPSJUcmlwbGV0RWxlbSIsdGhpcy5hbmNob3IxPXQsdGhpcy5udW1iZXI9ZSx0aGlzLmR1cmF0aW9uQ2xhc3M9KCJkIitNYXRoLnJvdW5kKDFlMyp0LnBhcmVudC5kdXJhdGlvbkNsYXNzKS8xZTMpLnJlcGxhY2UoL1wuLywiLSIpLHRoaXMubWlkZGxlRWxlbXM9W10sdGhpcy5mbGF0QmVhbXM9ci5mbGF0QmVhbXN9O3QucHJvdG90eXBlLmlzQ2xvc2VkPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmFuY2hvcjJ9LHQucHJvdG90eXBlLm1pZGRsZU5vdGU9ZnVuY3Rpb24oZSl7dGhpcy5taWRkbGVFbGVtcy5wdXNoKGUpfSx0LnByb3RvdHlwZS5zZXRDbG9zZUFuY2hvcj1mdW5jdGlvbihlKXt0aGlzLmFuY2hvcjI9ZSx0aGlzLmFuY2hvcjEucGFyZW50LmJlYW0mJiJ1cCIhPT10aGlzLmFuY2hvcjEuc3RlbURpcnx8KHRoaXMuZW5kaW5nSGVpZ2h0QWJvdmU9NCl9LGUuZXhwb3J0cz10fSwzMTk3OmZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7dGhpcy5jaGlsZHJlbj1bXSx0aGlzLmJlYW1zPVtdLHRoaXMub3RoZXJjaGlsZHJlbj1bXSx0aGlzLnc9MCx0aGlzLmR1cGxpY2F0ZT0hMSx0aGlzLnZvaWNlbnVtYmVyPWUsdGhpcy52b2ljZXRvdGFsPXQsdGhpcy5ib3R0b209Nyx0aGlzLnRvcD03LHRoaXMuc3BlY2lhbFk9e3RlbXBvSGVpZ2h0QWJvdmU6MCxwYXJ0SGVpZ2h0QWJvdmU6MCx2b2x1bWVIZWlnaHRBYm92ZTowLGR5bmFtaWNIZWlnaHRBYm92ZTowLGVuZGluZ0hlaWdodEFib3ZlOjAsY2hvcmRIZWlnaHRBYm92ZTowLGx5cmljSGVpZ2h0QWJvdmU6MCxseXJpY0hlaWdodEJlbG93OjAsY2hvcmRIZWlnaHRCZWxvdzowLHZvbHVtZUhlaWdodEJlbG93OjAsZHluYW1pY0hlaWdodEJlbG93OjB9fTt0LnByb3RvdHlwZS5hZGRDaGlsZD1mdW5jdGlvbihlKXtpZigiYmFyIj09PWUudHlwZSl7Zm9yKHZhciB0PSEwLHI9MDt0JiZyPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3IrKyl0aGlzLmNoaWxkcmVuW3JdLnR5cGUuaW5kZXhPZigic3RhZmYtZXh0cmEiKTwwJiYidGVtcG8iIT09dGhpcy5jaGlsZHJlbltyXS50eXBlJiYodD0hMSk7dHx8KHRoaXMuYmVhbXMucHVzaCgiYmFyIiksdGhpcy5vdGhlcmNoaWxkcmVuLnB1c2goImJhciIpKX10aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoXT1lLHRoaXMuc2V0UmFuZ2UoZSl9LHQucHJvdG90eXBlLnNldExpbWl0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dC5zcGVjaWFsWTtyfHwocj10KSxyW2VdJiYodGhpcy5zcGVjaWFsWVtlXT90aGlzLnNwZWNpYWxZW2VdPU1hdGgubWF4KHRoaXMuc3BlY2lhbFlbZV0scltlXSk6dGhpcy5zcGVjaWFsWVtlXT1yW2VdKX0sdC5wcm90b3R5cGUuYWRqdXN0UmFuZ2U9ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5ib3R0b20mJih0aGlzLmJvdHRvbT1NYXRoLm1pbih0aGlzLmJvdHRvbSxlLmJvdHRvbSkpLHZvaWQgMCE9PWUudG9wJiYodGhpcy50b3A9TWF0aC5tYXgodGhpcy50b3AsZS50b3ApKX0sdC5wcm90b3R5cGUuc2V0UmFuZ2U9ZnVuY3Rpb24oZSl7dGhpcy5hZGp1c3RSYW5nZShlKSx0aGlzLnNldExpbWl0KCJ0ZW1wb0hlaWdodEFib3ZlIixlKSx0aGlzLnNldExpbWl0KCJwYXJ0SGVpZ2h0QWJvdmUiLGUpLHRoaXMuc2V0TGltaXQoInZvbHVtZUhlaWdodEFib3ZlIixlKSx0aGlzLnNldExpbWl0KCJkeW5hbWljSGVpZ2h0QWJvdmUiLGUpLHRoaXMuc2V0TGltaXQoImVuZGluZ0hlaWdodEFib3ZlIixlKSx0aGlzLnNldExpbWl0KCJjaG9yZEhlaWdodEFib3ZlIixlKSx0aGlzLnNldExpbWl0KCJseXJpY0hlaWdodEFib3ZlIixlKSx0aGlzLnNldExpbWl0KCJseXJpY0hlaWdodEJlbG93IixlKSx0aGlzLnNldExpbWl0KCJjaG9yZEhlaWdodEJlbG93IixlKSx0aGlzLnNldExpbWl0KCJ2b2x1bWVIZWlnaHRCZWxvdyIsZSksdGhpcy5zZXRMaW1pdCgiZHluYW1pY0hlaWdodEJlbG93IixlKX0sdC5wcm90b3R5cGUuYWRkT3RoZXI9ZnVuY3Rpb24oZSl7dGhpcy5vdGhlcmNoaWxkcmVuLnB1c2goZSksdGhpcy5zZXRSYW5nZShlKX0sdC5wcm90b3R5cGUuYWRkQmVhbT1mdW5jdGlvbihlKXt0aGlzLmJlYW1zLnB1c2goZSl9LHQucHJvdG90eXBlLnNldFdpZHRoPWZ1bmN0aW9uKGUpe3RoaXMudz1lfSxlLmV4cG9ydHM9dH0sNjAyMDpmdW5jdGlvbihlLHQscil7dmFyIG49cig0MzMxKSxhPXswOntkOltbIk0iLDQuODMsLTE0Ljk3XSxbImMiLC4zMywtLjAzLDEuMTEsMCwxLjQ3LC4wNl0sWyJjIiwxLjY4LC4zNiwyLjk3LDEuNTksMy43OCwzLjZdLFsiYyIsMS4yLDIuOTcsLjgxLDYuOTYsLS45LDkuMjddLFsiYyIsLS43OCwxLjA4LC0xLjcxLDEuNzEsLTIuOTEsMS45NV0sWyJjIiwtLjQ1LC4wOSwtMS4zMiwuMDksLTEuNzcsMF0sWyJjIiwtLjgxLC0uMTgsLTEuNDcsLS41MSwtMi4wNywtMS4wMl0sWyJjIiwtMi4zNCwtMi4wNywtMy4xNSwtNi43MiwtMS43NCwtMTAuMl0sWyJjIiwuODcsLTIuMTYsMi4yOCwtMy40Miw0LjE0LC0zLjY2XSxbInoiXSxbIm0iLDEuMTEsLjg3XSxbImMiLC0uMjEsLS4wNiwtLjY5LC0uMDksLS44NywtLjA2XSxbImMiLC0uNTQsLjEyLC0uODcsLjQyLC0xLjE3LC45OV0sWyJjIiwtLjM2LC42NiwtLjUxLDEuNTYsLS42LDNdLFsiYyIsLS4wMywuNzUsLS4wMyw0LjU5LDAsNS4zMV0sWyJjIiwuMDksMS41LC4yNywyLjQsLjYsMy4wNl0sWyJjIiwuMjQsLjQ4LC41NywuNzgsLjk2LC45XSxbImMiLC4yNywuMDksLjc4LC4wOSwxLjA1LDBdLFsiYyIsLjM5LC0uMTIsLjcyLC0uNDIsLjk2LC0uOV0sWyJjIiwuMzMsLS42NiwuNTEsLTEuNTYsLjYsLTMuMDZdLFsiYyIsLjAzLC0uNzIsLjAzLC00LjU2LDAsLTUuMzFdLFsiYyIsLS4wOSwtMS40NywtLjI3LC0yLjM3LC0uNiwtMy4wM10sWyJjIiwtLjI0LC0uNDgsLS41NCwtLjc4LC0uOTMsLS45XSxbInoiXV0sdzoxMC43OCxoOjE0Ljk1OX0sMTp7ZDpbWyJNIiwzLjMsLTE1LjA2XSxbImMiLC4wNiwtLjA2LC4yMSwtLjAzLC42NiwuMTVdLFsiYyIsLjgxLC4zOSwxLjA4LC4zOSwxLjgzLC4wM10sWyJjIiwuMjEsLS4wOSwuMzksLS4xNSwuNDIsLS4xNV0sWyJjIiwuMTIsMCwuMjEsLjA5LC4yNywuMjFdLFsiYyIsLjA2LC4xMiwuMDYsLjMzLC4wNiw1Ljk0XSxbImMiLDAsMy45MywwLDUuODUsLjAzLDYuMDNdLFsiYyIsLjA2LC4zNiwuMTUsLjY5LC4yNywuOTZdLFsiYyIsLjM2LC43NSwuOTMsMS4xNywxLjY4LDEuMjZdLFsiYyIsLjMsLjAzLC4zOSwuMDksLjM5LC4zXSxbImMiLDAsLjE1LC0uMDMsLjE4LC0uMDksLjI0XSxbImMiLC0uMDYsLjA2LC0uMDksLjA2LC0uNDgsLjA2XSxbImMiLC0uNDIsMCwtLjY5LC0uMDMsLTIuMSwtLjI0XSxbImMiLC0uOSwtLjE1LC0xLjc3LC0uMTUsLTIuNjcsMF0sWyJjIiwtMS40MSwuMjEsLTEuNjgsLjI0LC0yLjEsLjI0XSxbImMiLC0uMzksMCwtLjQyLDAsLS40OCwtLjA2XSxbImMiLC0uMDYsLS4wNiwtLjA2LC0uMDksLS4wNiwtLjI0XSxbImMiLDAsLS4yMSwuMDYsLS4yNywuMzYsLS4zXSxbImMiLC43NSwtLjA5LDEuMzIsLS41MSwxLjY4LC0xLjI2XSxbImMiLC4xMiwtLjI3LC4yMSwtLjYsLjI3LC0uOTZdLFsiYyIsLjAzLC0uMTgsLjAzLC0xLjU5LC4wMywtNC4yOV0sWyJjIiwwLC0zLjg3LDAsLTQuMDUsLS4wNiwtNC4xNF0sWyJjIiwtLjA5LC0uMTUsLS4xOCwtLjI0LC0uMzksLS4yNF0sWyJjIiwtLjEyLDAsLS4xNSwuMDMsLS4yMSwuMDZdLFsiYyIsLS4wMywuMDYsLS40NSwuOTksLS45NiwyLjEzXSxbImMiLC0uNDgsMS4xNCwtLjksMi4xLC0uOTMsMi4xNl0sWyJjIiwtLjA2LC4xNSwtLjIxLC4yNCwtLjMzLC4yNF0sWyJjIiwtLjI0LDAsLS40MiwtLjE4LC0uNDIsLS4zOV0sWyJjIiwwLC0uMDYsMy4yNywtNy42MiwzLjMzLC03Ljc0XSxbInoiXV0sdzo4Ljk0LGg6MTUuMDU4fSwyOntkOltbIk0iLDQuMjMsLTE0Ljk3XSxbImMiLC41NywtLjA2LDEuNjgsMCwyLjM0LC4xOF0sWyJjIiwuNjksLjE4LDEuNSwuNTQsMi4wMSwuOV0sWyJjIiwxLjM1LC45NiwxLjk1LDIuMjUsMS43NywzLjgxXSxbImMiLC0uMTUsMS4zNSwtLjY2LDIuMzQsLTEuNjgsMy4xNV0sWyJjIiwtLjYsLjQ4LC0xLjQ0LC45MywtMy4xMiwxLjY1XSxbImMiLC0xLjMyLC41NywtMS44LC44MSwtMi4zNywxLjE0XSxbImMiLC0uNTcsLjMzLC0uNTcsLjMzLC0uMjQsLjI3XSxbImMiLC4zOSwtLjA5LDEuMjYsLS4wOSwxLjY4LDBdLFsiYyIsLjcyLC4xNSwxLjQxLC40NSwyLjEsLjldLFsiYyIsLjk5LC42MywxLjg2LC44NywyLjU1LC43NV0sWyJjIiwuMjQsLS4wNiwuNDIsLS4xNSwuNTcsLS4zXSxbImMiLC4xMiwtLjA5LC4zLC0uNDIsLjMsLS41MV0sWyJjIiwwLC0uMDksLjEyLC0uMjEsLjI0LC0uMjRdLFsiYyIsLjE4LC0uMDMsLjM5LC4xMiwuMzksLjNdLFsiYyIsMCwuMTIsLS4xNSwuNTcsLS4zLC44N10sWyJjIiwtLjU0LDEuMDIsLTEuNTYsMS43NCwtMi43OSwyLjAxXSxbImMiLC0uNDIsLjA5LC0xLjIzLC4wOSwtMS42MiwuMDNdLFsiYyIsLS44MSwtLjE4LC0xLjMyLC0uNDUsLTIuMDEsLTEuMTFdLFsiYyIsLS40NSwtLjQ1LC0uNjMsLS41NywtLjk2LC0uNjldLFsiYyIsLS44NCwtLjI3LC0xLjg5LC4xMiwtMi4yNSwuOV0sWyJjIiwtLjEyLC4yMSwtLjIxLC41NCwtLjIxLC43Ml0sWyJjIiwwLC4xMiwtLjEyLC4yMSwtLjI3LC4yNF0sWyJjIiwtLjE1LDAsLS4yNywtLjAzLC0uMzMsLS4xNV0sWyJjIiwtLjA5LC0uMjEsLjA5LC0xLjA4LC4zMywtMS43MV0sWyJjIiwuMjQsLS42NiwuNjYsLTEuMjYsMS4yOSwtMS44OV0sWyJjIiwuNDUsLS40NSwuOSwtLjgxLDEuOTIsLTEuNTZdLFsiYyIsMS4yOSwtLjkzLDEuODksLTEuNDQsMi4zNCwtMS45OF0sWyJjIiwuODcsLTEuMDUsMS4yNiwtMi4xOSwxLjIsLTMuNjNdLFsiYyIsLS4wNiwtMS4yOSwtLjM5LC0yLjMxLC0uOTYsLTIuOTFdLFsiYyIsLS4zNiwtLjMzLC0uNzIsLS41MSwtMS4xNywtLjU0XSxbImMiLC0uODQsLS4wMywtMS41MywuNDIsLTEuNTksMS4wNV0sWyJjIiwtLjAzLC4zMywuMTIsLjYsLjU3LDEuMTRdLFsiYyIsLjQ1LC41NCwuNTQsLjg3LC40MiwxLjQxXSxbImMiLC0uMTUsLjYzLC0uNTQsMS4xMSwtMS4wOCwxLjM4XSxbImMiLC0uNjMsLjMzLC0xLjIsLjMzLC0xLjgzLDBdLFsiYyIsLS4yNCwtLjEyLC0uMzMsLS4xOCwtLjU0LC0uMzldLFsiYyIsLS4xOCwtLjE4LC0uMjcsLS4zLC0uMzYsLS41MV0sWyJjIiwtLjI0LC0uNDUsLS4yNywtLjg0LC0uMjEsLTEuMzhdLFsiYyIsLjEyLC0uNzUsLjQ1LC0xLjQxLDEuMDIsLTEuOThdLFsiYyIsLjcyLC0uNzIsMS43NCwtMS4xNywyLjg1LC0xLjMyXSxbInoiXV0sdzoxMC43NjQsaDoxNC45N30sMzp7ZDpbWyJNIiwzLjc4LC0xNC45N10sWyJjIiwuMywtLjAzLDEuNDEsMCwxLjgzLC4wNl0sWyJjIiwyLjIyLC4zLDMuNTEsMS4zMiwzLjcyLDIuOTFdLFsiYyIsLjAzLC4zMywuMDMsMS4yNiwtLjAzLDEuNjVdLFsiYyIsLS4xMiwuODQsLS40OCwxLjQ3LC0xLjA1LDEuNzddLFsiYyIsLS4yNywuMTUsLS4zNiwuMjQsLS40NSwuMzldLFsiYyIsLS4wOSwuMjEsLS4wOSwuMzYsMCwuNTddLFsiYyIsLjA5LC4xNSwuMTgsLjI0LC41MSwuMzldLFsiYyIsLjc1LC40MiwxLjIzLDEuMTQsMS40MSwyLjEzXSxbImMiLC4wNiwuNDIsLjA2LDEuMzUsMCwxLjcxXSxbImMiLC0uMTgsLjgxLC0uNDgsMS4zOCwtMS4wMiwxLjk1XSxbImMiLC0uNzUsLjcyLC0xLjgsMS4yLC0zLjE4LDEuMzhdLFsiYyIsLS40MiwuMDYsLTEuNTYsLjA2LC0xLjk1LDBdLFsiYyIsLTEuODksLS4zMywtMy4xOCwtMS4yOSwtMy41MSwtMi42NF0sWyJjIiwtLjAzLC0uMTIsLS4wMywtLjMzLC0uMDMsLS42XSxbImMiLDAsLS4zNiwwLC0uNDIsLjA2LC0uNjNdLFsiYyIsLjEyLC0uMywuMjcsLS41MSwuNTEsLS43NV0sWyJjIiwuMjQsLS4yNCwuNDUsLS4zOSwuNzUsLS41MV0sWyJjIiwuMjEsLS4wNiwuMjcsLS4wNiwuNiwtLjA2XSxbImMiLC4zMywwLC4zOSwwLC42LC4wNl0sWyJjIiwuMywuMTIsLjUxLC4yNywuNzUsLjUxXSxbImMiLC4zNiwuMzMsLjU3LC43NSwuNiwxLjJdLFsiYyIsMCwuMjEsMCwuMjcsLS4wNiwuNDJdLFsiYyIsLS4wOSwuMTgsLS4xMiwuMjQsLS41NCwuNTRdLFsiYyIsLS41MSwuMzYsLS42MywuNTQsLS42LC44N10sWyJjIiwuMDYsLjU0LC41NCwuOSwxLjM4LC45OV0sWyJjIiwuMzYsLjA2LC43MiwuMDMsLjk2LC0uMDZdLFsiYyIsLjgxLC0uMjcsMS4yOSwtMS4yMywxLjQ0LC0yLjc5XSxbImMiLC4wMywtLjQ1LC4wMywtMS45NSwtLjAzLC0yLjM3XSxbImMiLC0uMDksLS43NSwtLjMzLC0xLjIzLC0uNzUsLTEuNDRdLFsiYyIsLS4zMywtLjE4LC0uNDUsLS4xOCwtMS45OCwtLjE4XSxbImMiLC0xLjM1LDAsLTEuNDEsMCwtMS41LC0uMDZdLFsiYyIsLS4xOCwtLjEyLC0uMjQsLS4zOSwtLjEyLC0uNl0sWyJjIiwuMTIsLS4xNSwuMTUsLS4xNSwxLjY4LC0uMTVdLFsiYyIsMS41LDAsMS42MiwwLDEuODksLS4xNV0sWyJjIiwuMTgsLS4wOSwuNDIsLS4zNiwuNTQsLS41N10sWyJjIiwuMTgsLS40MiwuMjcsLS45LC4zLC0xLjk1XSxbImMiLC4wMywtMS4yLC0uMDYsLTEuOCwtLjM2LC0yLjM3XSxbImMiLC0uMjQsLS40OCwtLjYzLC0uODEsLTEuMTQsLS45Nl0sWyJjIiwtLjMsLS4wNiwtMS4wOCwtLjA2LC0xLjM4LC4wM10sWyJjIiwtLjYsLjE1LC0uOSwuNDIsLS45NiwuODRdLFsiYyIsLS4wMywuMywuMDYsLjQ1LC42MywuODRdLFsiYyIsLjMzLC4yNCwuNDIsLjM5LC40NSwuNjNdLFsiYyIsLjAzLC43MiwtLjU3LDEuNSwtMS4zMiwxLjY1XSxbImMiLC0xLjA1LC4yNywtMi4xLC0uNTcsLTIuMSwtMS42NV0sWyJjIiwwLC0uNDUsLjE1LC0uOTYsLjM5LC0xLjM4XSxbImMiLC4xMiwtLjIxLC41NCwtLjYzLC44MSwtLjgxXSxbImMiLC41NywtLjQyLDEuMzgsLS42OSwyLjI1LC0uODFdLFsieiJdXSx3OjkuNzM1LGg6MTQuOTY3fSw0OntkOltbIk0iLDguNjQsLTE0Ljk0XSxbImMiLC4yNywtLjA5LC40MiwtLjEyLC41NCwtLjAzXSxbImMiLC4wOSwuMDYsLjE1LC4yMSwuMTUsLjNdLFsiYyIsLS4wMywuMDYsLTEuOTIsMi4zMSwtNC4yMyw1LjA0XSxbImMiLC0yLjMxLDIuNzMsLTQuMjMsNC45OCwtNC4yNiw1LjAxXSxbImMiLC0uMDMsLjA2LC4xMiwuMDYsMi41NSwuMDZdLFsibCIsMi42MSwwXSxbImwiLDAsLTIuMzddLFsiYyIsMCwtMi4xOSwuMDMsLTIuMzcsLjA2LC0yLjQ2XSxbImMiLC4wMywtLjA2LC4yMSwtLjE4LC41NywtLjQyXSxbImMiLDEuMDgsLS43MiwxLjM4LC0xLjA4LDEuODYsLTIuMTZdLFsiYyIsLjEyLC0uMywuMjQsLS41NCwuMjcsLS41N10sWyJjIiwuMTIsLS4xMiwuMzksLS4wNiwuNDUsLjEyXSxbImMiLC4wNiwuMDksLjA2LC41NywuMDYsMy45Nl0sWyJsIiwwLDMuOV0sWyJsIiwxLjA4LDBdLFsiYyIsMS4wNSwwLDEuMTEsMCwxLjIsLjA2XSxbImMiLC4yNCwuMTUsLjI0LC41NCwwLC42OV0sWyJjIiwtLjA5LC4wNiwtLjE1LC4wNiwtMS4yLC4wNl0sWyJsIiwtMS4wOCwwXSxbImwiLDAsLjMzXSxbImMiLDAsLjU3LC4wOSwxLjExLC4zLDEuNTNdLFsiYyIsLjM2LC43NSwuOTMsMS4xNywxLjY4LDEuMjZdLFsiYyIsLjMsLjAzLC4zOSwuMDksLjM5LC4zXSxbImMiLDAsLjE1LC0uMDMsLjE4LC0uMDksLjI0XSxbImMiLC0uMDYsLjA2LC0uMDksLjA2LC0uNDgsLjA2XSxbImMiLC0uNDIsMCwtLjY5LC0uMDMsLTIuMSwtLjI0XSxbImMiLC0uOSwtLjE1LC0xLjc3LC0uMTUsLTIuNjcsMF0sWyJjIiwtMS40MSwuMjEsLTEuNjgsLjI0LC0yLjEsLjI0XSxbImMiLC0uMzksMCwtLjQyLDAsLS40OCwtLjA2XSxbImMiLC0uMDYsLS4wNiwtLjA2LC0uMDksLS4wNiwtLjI0XSxbImMiLDAsLS4yMSwuMDYsLS4yNywuMzYsLS4zXSxbImMiLC43NSwtLjA5LDEuMzIsLS41MSwxLjY4LC0xLjI2XSxbImMiLC4yMSwtLjQyLC4zLC0uOTYsLjMsLTEuNTNdLFsibCIsMCwtLjMzXSxbImwiLC0yLjcsMF0sWyJjIiwtMi45MSwwLC0yLjg1LDAsLTMuMDksLS4xNV0sWyJjIiwtLjE4LC0uMTIsLS4zLC0uMzksLS4yNywtLjU0XSxbImMiLC4wMywtLjA2LC4xOCwtLjI0LC4zMywtLjQ1XSxbImMiLC43NSwtLjksMS41OSwtMi4wNywyLjEzLC0zLjAzXSxbImMiLC4zMywtLjU0LC44NCwtMS42MiwxLjA1LC0yLjE2XSxbImMiLC41NywtMS40MSwuODQsLTIuNjQsLjksLTQuMDVdLFsiYyIsLjAzLC0uNjMsLjA2LC0uNzIsLjI0LC0uODFdLFsibCIsLjEyLC0uMDZdLFsibCIsLjQ1LC4xMl0sWyJjIiwuNjYsLjE4LDEuMDIsLjI0LDEuNDcsLjI3XSxbImMiLC42LC4wMywxLjIzLC0uMDksMi4wMSwtLjMzXSxbInoiXV0sdzoxMS43OTUsaDoxNC45OTR9LDU6e2Q6W1siTSIsMS4wMiwtMTQuOTRdLFsiYyIsLjEyLC0uMDksLjAzLC0uMDksMS4wOCwuMDZdLFsiYyIsMi40OSwuMzYsNC4zNSwuMzYsNi45NiwtLjA2XSxbImMiLC41NywtLjA5LC42NiwtLjA2LC44MSwuMDZdLFsiYyIsLjE1LC4xOCwuMTIsLjI0LC0uMTUsLjUxXSxbImMiLC0xLjI5LDEuMjYsLTMuMjQsMi4wNCwtNS41OCwyLjMxXSxbImMiLC0uNiwuMDksLTEuMiwuMTIsLTEuNzEsLjEyXSxbImMiLC0uMzksMCwtLjQ1LDAsLS41NywuMDZdLFsiYyIsLS4wOSwuMDYsLS4xNSwuMTIsLS4yMSwuMjFdLFsibCIsLS4wNiwuMTJdLFsibCIsMCwxLjY1XSxbImwiLDAsMS42NV0sWyJsIiwuMjEsLS4yMV0sWyJjIiwuNjYsLS41NywxLjQxLC0uOTYsMi4xOSwtMS4xNF0sWyJjIiwuMzMsLS4wNiwxLjQxLC0uMDYsMS45NSwwXSxbImMiLDIuNjEsLjM2LDQuMDIsMS43NCw0LjI2LDQuMTRdLFsiYyIsLjAzLC40NSwuMDMsMS4wOCwtLjAzLDEuNDRdLFsiYyIsLS4xOCwxLjAyLC0uNzgsMi4wMSwtMS41OSwyLjddLFsiYyIsLS43MiwuNTcsLTEuNjIsMS4wMiwtMi40OSwxLjJdLFsiYyIsLTEuMzgsLjI3LC0zLjAzLC4wNiwtNC4yLC0uNTRdLFsiYyIsLTEuMDgsLS41NCwtMS43MSwtMS4zMiwtMS44NiwtMi4yOF0sWyJjIiwtLjA5LC0uNjksLjA5LC0xLjI5LC41NywtMS43NF0sWyJjIiwuMjQsLS4yNCwuNDUsLS4zOSwuNzUsLS41MV0sWyJjIiwuMjEsLS4wNiwuMjcsLS4wNiwuNiwtLjA2XSxbImMiLC4zMywwLC4zOSwwLC42LC4wNl0sWyJjIiwuMywuMTIsLjUxLC4yNywuNzUsLjUxXSxbImMiLC4zNiwuMzMsLjU3LC43NSwuNiwxLjJdLFsiYyIsMCwuMjEsMCwuMjcsLS4wNiwuNDJdLFsiYyIsLS4wOSwuMTgsLS4xMiwuMjQsLS41NCwuNTRdLFsiYyIsLS4xOCwuMTIsLS4zNiwuMywtLjQyLC4zM10sWyJjIiwtLjM2LC40MiwtLjE4LC45OSwuMzYsMS4yNl0sWyJjIiwuNTEsLjI3LDEuNDcsLjM2LDIuMDEsLjI3XSxbImMiLC45MywtLjIxLDEuNDcsLTEuMTcsMS42NSwtMi45MV0sWyJjIiwuMDYsLS40NSwuMDYsLTEuODksMCwtMi4zMV0sWyJjIiwtLjE1LC0xLjIsLS41MSwtMi4xLC0xLjA1LC0yLjU1XSxbImMiLC0uMjEsLS4xOCwtLjU0LC0uMzYsLS44MSwtLjM5XSxbImMiLC0uMywtLjA2LC0uODQsLS4wMywtMS4yNiwuMDZdLFsiYyIsLS45MywuMTgsLTEuNjUsLjYsLTIuMTYsMS4yXSxbImMiLC0uMTUsLjIxLC0uMjcsLjMsLS4zOSwuM10sWyJjIiwtLjE1LDAsLS4zLC0uMDksLS4zNiwtLjE4XSxbImMiLC0uMDYsLS4wOSwtLjA2LC0uMTUsLS4wNiwtMy42Nl0sWyJjIiwwLC0zLjM5LDAsLTMuNTcsLjA2LC0zLjY2XSxbImMiLC4wMywtLjA2LC4wOSwtLjE1LC4xNSwtLjE4XSxbInoiXV0sdzoxMC4yMTIsaDoxNC45OTd9LDY6e2Q6W1siTSIsNC45OCwtMTQuOTddLFsiYyIsLjM2LC0uMDMsMS4yLDAsMS41OSwuMDZdLFsiYyIsLjksLjE1LDEuNjgsLjUxLDIuMjUsMS4wNV0sWyJjIiwuNTcsLjUxLC44NywxLjIzLC44NCwxLjk4XSxbImMiLC0uMDMsLjUxLC0uMjEsLjksLS42LDEuMjZdLFsiYyIsLS4yNCwuMjQsLS40NSwuMzksLS43NSwuNTFdLFsiYyIsLS4yMSwuMDYsLS4yNywuMDYsLS42LC4wNl0sWyJjIiwtLjMzLDAsLS4zOSwwLC0uNiwtLjA2XSxbImMiLC0uMywtLjEyLC0uNTEsLS4yNywtLjc1LC0uNTFdLFsiYyIsLS4zOSwtLjM2LC0uNTcsLS43OCwtLjU3LC0xLjI2XSxbImMiLDAsLS4yNywwLC0uMywuMDksLS40Ml0sWyJjIiwuMDMsLS4wOSwuMTgsLS4yMSwuMywtLjNdLFsiYyIsLjEyLC0uMDksLjMsLS4yMSwuMzksLS4yN10sWyJjIiwuMDksLS4wNiwuMjEsLS4xOCwuMjcsLS4yNF0sWyJjIiwuMDYsLS4xMiwuMDksLS4xNSwuMDksLS4zM10sWyJjIiwwLC0uMTgsLS4wMywtLjI0LC0uMDksLS4zNl0sWyJjIiwtLjI0LC0uMzksLS43NSwtLjYsLTEuMzgsLS41N10sWyJjIiwtLjU0LC4wMywtLjksLjE4LC0xLjIzLC40OF0sWyJjIiwtLjgxLC43MiwtMS4wOCwyLjE2LC0uOTYsNS4zN10sWyJsIiwwLC42M10sWyJsIiwuMywtLjEyXSxbImMiLC43OCwtLjI3LDEuMjksLS4zMywyLjEsLS4yN10sWyJjIiwxLjQ3LC4xMiwyLjQ5LC41NCwzLjI3LDEuMjldLFsiYyIsLjQ4LC41MSwuODEsMS4xMSwuOTYsMS44OV0sWyJjIiwuMDYsLjI3LC4wNiwuNDIsLjA2LC45M10sWyJjIiwwLC41NCwwLC42OSwtLjA2LC45Nl0sWyJjIiwtLjE1LC43OCwtLjQ4LDEuMzgsLS45NiwxLjg5XSxbImMiLC0uNTQsLjUxLC0xLjE3LC44NywtMS45OCwxLjA4XSxbImMiLC0xLjE0LC4zLC0yLjQsLjMzLC0zLjI0LC4wM10sWyJjIiwtMS41LC0uNDgsLTIuNjQsLTEuODksLTMuMjcsLTQuMDJdLFsiYyIsLS4zNiwtMS4yMywtLjUxLC0yLjgyLC0uNDIsLTQuMDhdLFsiYyIsLjMsLTMuNjYsMi4yOCwtNi4zLDQuOTUsLTYuNjZdLFsieiJdLFsibSIsLjY2LDcuNDFdLFsiYyIsLS4yNywtLjA5LC0uODEsLS4xMiwtMS4wOCwtLjA2XSxbImMiLC0uNzIsLjE4LC0xLjA4LC42OSwtMS4yMywxLjcxXSxbImMiLC0uMDYsLjU0LC0uMDYsMywwLDMuNTRdLFsiYyIsLjE4LDEuMjYsLjcyLDEuNzcsMS44LDEuNzRdLFsiYyIsLjM5LC0uMDMsLjYzLC0uMDksLjksLS4yN10sWyJjIiwuNjYsLS40MiwuOSwtMS4zMiwuOSwtMy4yNF0sWyJjIiwwLC0yLjIyLC0uMzYsLTMuMTIsLTEuMjksLTMuNDJdLFsieiJdXSx3OjkuOTU2LGg6MTQuOTgyfSw3OntkOltbIk0iLC4yMSwtMTQuOTddLFsiYyIsLjIxLC0uMDYsLjQ1LDAsLjU0LC4xNV0sWyJjIiwuMDYsLjA5LC4wNiwuMTUsLjA2LC4zOV0sWyJjIiwwLC4yNCwwLC4zMywuMDYsLjQyXSxbImMiLC4wNiwuMTIsLjIxLC4yNCwuMjcsLjI0XSxbImMiLC4wMywwLC4xMiwtLjEyLC4yNCwtLjIxXSxbImMiLC45NiwtMS4yLDIuNTgsLTEuMzUsMy45OSwtLjQyXSxbImMiLC4xNSwuMTIsLjQyLC4zLC41NCwuNDVdLFsiYyIsLjQ4LC4zOSwuODEsLjU3LDEuMjksLjZdLFsiYyIsLjY5LC4wMywxLjUsLS4zLDIuMTMsLS44N10sWyJjIiwuMDksLS4wOSwuMjcsLS4zLC4zOSwtLjQ1XSxbImMiLC4xMiwtLjE1LC4yNCwtLjI3LC4zLC0uM10sWyJjIiwuMTgsLS4wNiwuMzksLjAzLC41MSwuMjFdLFsiYyIsLjA2LC4xOCwuMDYsLjI0LC0uMjcsLjcyXSxbImMiLC0uMTgsLjI0LC0uNTQsLjc4LC0uNzgsMS4xN10sWyJjIiwtMi4zNywzLjU0LC0zLjU0LDYuMjcsLTMuODcsOV0sWyJjIiwtLjAzLC4zMywtLjAzLC42NiwtLjAzLDEuMjZdLFsiYyIsMCwuOSwwLDEuMDgsLjE1LDEuODldLFsiYyIsLjA2LC40NSwuMDYsLjQ4LC4wMywuNl0sWyJjIiwtLjA2LC4wOSwtLjIxLC4yMSwtLjMsLjIxXSxbImMiLC0uMDMsMCwtLjI3LC0uMDYsLS41NCwtLjE1XSxbImMiLC0uODQsLS4yNywtMS4xMSwtLjMsLTEuNjUsLS4zXSxbImMiLC0uNTcsMCwtLjg0LC4wMywtMS41NiwuMjddLFsiYyIsLS42LC4xOCwtLjY5LC4yMSwtLjgxLC4xNV0sWyJjIiwtLjEyLC0uMDYsLS4yMSwtLjE4LC0uMjEsLS4zXSxbImMiLDAsLS4xNSwuNiwtMS40NCwxLjIsLTIuNjFdLFsiYyIsMS4xNCwtMi4yMiwyLjczLC00LjY4LDUuMSwtOC4wMV0sWyJjIiwuMjEsLS4yNywuMzYsLS40OCwuMzMsLS40OF0sWyJjIiwwLDAsLS4xMiwuMDYsLS4yNywuMTJdLFsiYyIsLS41NCwuMywtLjk5LC4zOSwtMS41NiwuMzldLFsiYyIsLS43NSwuMDMsLTEuMiwtLjE4LC0xLjgzLC0uNzVdLFsiYyIsLS45OSwtLjksLTEuODMsLTEuMTcsLTIuMzEsLS43Ml0sWyJjIiwtLjE4LC4xNSwtLjM2LC41MSwtLjQ1LC44NF0sWyJjIiwtLjA2LC4yNCwtLjA2LC4zMywtLjA5LDEuOThdLFsiYyIsMCwxLjYyLC0uMDMsMS43NCwtLjA2LDEuOF0sWyJjIiwtLjE1LC4yNCwtLjU0LC4yNCwtLjY5LDBdLFsiYyIsLS4wNiwtLjA5LC0uMDYsLS4xNSwtLjA2LC0zLjU3XSxbImMiLDAsLTMuNDIsMCwtMy40OCwuMDYsLTMuNTddLFsiYyIsLjAzLC0uMDYsLjA5LC0uMTIsLjE1LC0uMTVdLFsieiJdXSx3OjEwLjU2MSxoOjE1LjA5M30sODp7ZDpbWyJNIiw0Ljk4LC0xNC45N10sWyJjIiwuMzMsLS4wMywxLjAyLC0uMDMsMS4zMiwwXSxbImMiLDEuMzIsLjEyLDIuNDksLjYsMy4yMSwxLjMyXSxbImMiLC4zOSwuMzksLjY2LC44MSwuNzgsMS4yOV0sWyJjIiwuMDksLjM2LC4wOSwxLjA4LDAsMS40NF0sWyJjIiwtLjIxLC44NCwtLjY2LDEuNTksLTEuNTksMi41NV0sWyJsIiwtLjMsLjNdLFsibCIsLjI3LC4xOF0sWyJjIiwxLjQ3LC45MywyLjMxLDIuMzEsMi4yNSwzLjc1XSxbImMiLC0uMDMsLjc1LC0uMjQsMS4zNSwtLjYzLDEuOTVdLFsiYyIsLS40NSwuNjYsLTEuMDIsMS4xNCwtMS44MywxLjUzXSxbImMiLC0xLjgsLjg3LC00LjIsLjg3LC02LC4wM10sWyJjIiwtMS42MiwtLjc4LC0yLjUyLC0yLjE2LC0yLjQ2LC0zLjY2XSxbImMiLC4wNiwtLjk5LC41NCwtMS43NywxLjgsLTIuOTddLFsiYyIsLjU0LC0uNTEsLjU0LC0uNTQsLjQ4LC0uNTddLFsiYyIsLS4zOSwtLjI3LC0uOTYsLS43OCwtMS4yLC0xLjE0XSxbImMiLC0uNzUsLTEuMTEsLS44NywtMi40LC0uMywtMy42XSxbImMiLC42OSwtMS4zNSwyLjI1LC0yLjI1LDQuMiwtMi40XSxbInoiXSxbIm0iLDEuNTMsLjY5XSxbImMiLC0uNDIsLS4wOSwtMS4xMSwtLjEyLC0xLjM4LC0uMDZdLFsiYyIsLS4zLC4wNiwtLjYsLjE4LC0uODEsLjNdLFsiYyIsLS4yMSwuMTIsLS42LC41MSwtLjcyLC43Ml0sWyJjIiwtLjUxLC44NywtLjQyLDEuODksLjIxLDIuNTJdLFsiYyIsLjIxLC4yMSwuMzYsLjMsMS45NSwxLjIzXSxbImMiLC45NiwuNTQsMS43NCwuOTksMS43NywxLjAyXSxbImMiLC4wOSwwLC42MywtLjYsLjk5LC0xLjExXSxbImMiLC4yMSwtLjM2LC40OCwtLjg3LC41NywtMS4yM10sWyJjIiwuMDYsLS4yNCwuMDYsLS4zNiwuMDYsLS43Ml0sWyJjIiwwLC0uNDUsLS4wMywtLjY2LC0uMTUsLS45OV0sWyJjIiwtLjM5LC0uODEsLTEuMjksLTEuNDQsLTIuNDksLTEuNjhdLFsieiJdLFsibSIsLTEuNDQsOC4wN10sWyJsIiwtMS44OSwtMS4wOF0sWyJjIiwtLjAzLDAsLS4xOCwuMTUsLS4zOSwuMzNdLFsiYyIsLTEuMiwxLjA4LC0xLjY1LDEuOTUsLTEuNTksM10sWyJjIiwuMDksMS41OSwxLjM1LDIuODUsMy4yMSwzLjI0XSxbImMiLC4zMywuMDYsLjQ1LC4wNiwuOTMsLjA2XSxbImMiLC42MywwLC44MSwtLjAzLDEuMjksLS4yN10sWyJjIiwuOSwtLjQyLDEuNDcsLTEuNDEsMS40MSwtMi40XSxbImMiLC0uMDYsLS42NiwtLjM5LC0xLjI5LC0uOSwtMS42NV0sWyJjIiwtLjEyLC0uMDksLTEuMDUsLS42MywtMi4wNywtMS4yM10sWyJ6Il1dLHc6MTAuOTI2LGg6MTQuOTg5fSw5OntkOltbIk0iLDQuMjMsLTE0Ljk3XSxbImMiLC40MiwtLjAzLDEuMjksMCwxLjYyLC4wNl0sWyJjIiwuNTEsLjEyLC45MywuMywxLjM4LC41N10sWyJjIiwxLjUzLDEuMDIsMi41MiwzLjI0LDIuNzMsNS45NF0sWyJjIiwuMTgsMi41NSwtLjQ4LDQuOTgsLTEuODMsNi41N10sWyJjIiwtMS4wNSwxLjI2LC0yLjQsMS44OSwtMy45MywxLjgzXSxbImMiLC0xLjIzLC0uMDYsLTIuMzEsLS40NSwtMy4wMywtMS4xNF0sWyJjIiwtLjU3LC0uNTEsLS44NywtMS4yMywtLjg0LC0xLjk4XSxbImMiLC4wMywtLjUxLC4yMSwtLjksLjYsLTEuMjZdLFsiYyIsLjI0LC0uMjQsLjQ1LC0uMzksLjc1LC0uNTFdLFsiYyIsLjIxLC0uMDYsLjI3LC0uMDYsLjYsLS4wNl0sWyJjIiwuMzMsMCwuMzksMCwuNiwuMDZdLFsiYyIsLjMsLjEyLC41MSwuMjcsLjc1LC41MV0sWyJjIiwuMzksLjM2LC41NywuNzgsLjU3LDEuMjZdLFsiYyIsMCwuMjcsMCwuMywtLjA5LC40Ml0sWyJjIiwtLjAzLC4wOSwtLjE4LC4yMSwtLjMsLjNdLFsiYyIsLS4xMiwuMDksLS4zLC4yMSwtLjM5LC4yN10sWyJjIiwtLjA5LC4wNiwtLjIxLC4xOCwtLjI3LC4yNF0sWyJjIiwtLjA2LC4xMiwtLjA2LC4xNSwtLjA2LC4zM10sWyJjIiwwLC4xOCwwLC4yNCwuMDYsLjM2XSxbImMiLC4yNCwuMzksLjc1LC42LDEuMzgsLjU3XSxbImMiLC41NCwtLjAzLC45LC0uMTgsMS4yMywtLjQ4XSxbImMiLC44MSwtLjcyLDEuMDgsLTIuMTYsLjk2LC01LjM3XSxbImwiLDAsLS42M10sWyJsIiwtLjMsLjEyXSxbImMiLC0uNzgsLjI3LC0xLjI5LC4zMywtMi4xLC4yN10sWyJjIiwtMS40NywtLjEyLC0yLjQ5LC0uNTQsLTMuMjcsLTEuMjldLFsiYyIsLS40OCwtLjUxLC0uODEsLTEuMTEsLS45NiwtMS44OV0sWyJjIiwtLjA2LC0uMjcsLS4wNiwtLjQyLC0uMDYsLS45Nl0sWyJjIiwwLC0uNTEsMCwtLjY2LC4wNiwtLjkzXSxbImMiLC4xNSwtLjc4LC40OCwtMS4zOCwuOTYsLTEuODldLFsiYyIsLjE1LC0uMTIsLjMzLC0uMjcsLjQyLC0uMzZdLFsiYyIsLjY5LC0uNTEsMS42MiwtLjgxLDIuNzYsLS45M10sWyJ6Il0sWyJtIiwxLjE3LC42Nl0sWyJjIiwtLjIxLC0uMDYsLS41NywtLjA2LC0uODEsLS4wM10sWyJjIiwtLjc4LC4xMiwtMS4yNiwuNjksLTEuNDEsMS43NF0sWyJjIiwtLjEyLC42MywtLjE1LDEuOTUsLS4wOSwyLjc5XSxbImMiLC4xMiwxLjcxLC42MywyLjQsMS43NywyLjQ2XSxbImMiLDEuMDgsLjAzLDEuNjIsLS40OCwxLjgsLTEuNzRdLFsiYyIsLjA2LC0uNTQsLjA2LC0zLDAsLTMuNTRdLFsiYyIsLS4xNSwtMS4wNSwtLjUxLC0xLjUzLC0xLjI2LC0xLjY4XSxbInoiXV0sdzo5Ljk1OSxoOjE0Ljk4Nn0sInJlc3RzLm11bHRpbWVhc3VyZSI6e2Q6W1siTSIsMCwtNF0sWyJsIiwwLDE2XSxbImwiLDEsMF0sWyJsIiwwLC01XSxbImwiLDQwLDBdLFsibCIsMCw1XSxbImwiLDEsMF0sWyJsIiwwLC0xNl0sWyJsIiwtMSwwXSxbImwiLDAsNV0sWyJsIiwtNDAsMF0sWyJsIiwwLC01XSxbInoiXV0sdzo0MixoOjE4fSwicmVzdHMud2hvbGUiOntkOltbIk0iLC4wNiwuMDNdLFsibCIsLjA5LC0uMDZdLFsibCIsNS40NiwwXSxbImwiLDUuNDksMF0sWyJsIiwuMDksLjA2XSxbImwiLC4wNiwuMDldLFsibCIsMCwyLjE5XSxbImwiLDAsMi4xOV0sWyJsIiwtLjA2LC4wOV0sWyJsIiwtLjA5LC4wNl0sWyJsIiwtNS40OSwwXSxbImwiLC01LjQ2LDBdLFsibCIsLS4wOSwtLjA2XSxbImwiLC0uMDYsLS4wOV0sWyJsIiwwLC0yLjE5XSxbImwiLDAsLTIuMTldLFsieiJdXSx3OjExLjI1LGg6NC42OH0sInJlc3RzLmhhbGYiOntkOltbIk0iLC4wNiwtNC42Ml0sWyJsIiwuMDksLS4wNl0sWyJsIiw1LjQ2LDBdLFsibCIsNS40OSwwXSxbImwiLC4wOSwuMDZdLFsibCIsLjA2LC4wOV0sWyJsIiwwLDIuMTldLFsibCIsMCwyLjE5XSxbImwiLC0uMDYsLjA5XSxbImwiLC0uMDksLjA2XSxbImwiLC01LjQ5LDBdLFsibCIsLTUuNDYsMF0sWyJsIiwtLjA5LC0uMDZdLFsibCIsLS4wNiwtLjA5XSxbImwiLDAsLTIuMTldLFsibCIsMCwtMi4xOV0sWyJ6Il1dLHc6MTEuMjUsaDo0LjY4fSwicmVzdHMucXVhcnRlciI6e2Q6W1siTSIsMS44OSwtMTEuODJdLFsiYyIsLjEyLC0uMDYsLjI0LC0uMDYsLjM2LC0uMDNdLFsiYyIsLjA5LC4wNiw0Ljc0LDUuNTgsNC44Niw1LjgyXSxbImMiLC4yMSwuMzksLjE1LC43OCwtLjE1LDEuMjZdLFsiYyIsLS4yNCwuMzMsLS43MiwuODEsLTEuNjIsMS41Nl0sWyJjIiwtLjQ1LC4zNiwtLjg3LC43NSwtLjk2LC44NF0sWyJjIiwtLjkzLC45OSwtMS4xNCwyLjQ5LC0uNiwzLjYzXSxbImMiLC4xOCwuMzksLjI3LC40OCwxLjMyLDEuNjhdLFsiYyIsMS45MiwyLjI1LDEuODMsMi4xNiwxLjgzLDIuMzRdLFsiYyIsMCwuMTgsLS4xOCwuMzYsLS4zNiwuMzldLFsiYyIsLS4xNSwwLC0uMjcsLS4wNiwtLjQ4LC0uMjddLFsiYyIsLS43NSwtLjc1LC0yLjQ2LC0xLjI5LC0zLjM5LC0xLjA4XSxbImMiLC0uNDUsLjA5LC0uNjksLjI3LC0uOSwuNjldLFsiYyIsLS4xMiwuMywtLjIxLC42NiwtLjI0LDEuMTRdLFsiYyIsLS4wMywuNjYsLjA5LDEuMzUsLjMsMi4wMV0sWyJjIiwuMTUsLjQyLC4yNCwuNjYsLjQ1LC45Nl0sWyJjIiwuMTgsLjI0LC4xOCwuMzMsLjAzLC40Ml0sWyJjIiwtLjEyLC4wNiwtLjE4LC4wMywtLjQ1LC0uM10sWyJjIiwtMS4wOCwtMS4zOCwtMi4wNywtMy4zNiwtMi40LC00LjgzXSxbImMiLC0uMjcsLTEuMDUsLS4xNSwtMS43NywuMjcsLTIuMDddLFsiYyIsLjIxLC0uMTIsLjQyLC0uMTUsLjg3LC0uMTVdLFsiYyIsLjg3LC4wNiwyLjEsLjM5LDMuMywuOV0sWyJsIiwuMzksLjE4XSxbImwiLC0xLjY1LC0xLjk1XSxbImMiLC0yLjUyLC0yLjk3LC0yLjYxLC0zLjA5LC0yLjcsLTMuMjddLFsiYyIsLS4wOSwtLjI0LC0uMTIsLS40OCwtLjAzLC0uNzVdLFsiYyIsLjE1LC0uNDgsLjU3LC0uOTYsMS44MywtMi4wMV0sWyJjIiwuNDUsLS4zNiwuODQsLS43MiwuOTMsLS43OF0sWyJjIiwuNjksLS43NSwxLjAyLC0xLjgsLjksLTIuNzldLFsiYyIsLS4wNiwtLjMzLC0uMjEsLS44NCwtLjM5LC0xLjExXSxbImMiLC0uMDksLS4xNSwtLjQ1LC0uNiwtLjgxLC0xLjA1XSxbImMiLC0uMzYsLS40MiwtLjY5LC0uODEsLS43MiwtLjg3XSxbImMiLC0uMDksLS4xOCwwLC0uNDIsLjIxLC0uNTFdLFsieiJdXSx3OjcuODg4LGg6MjEuNDM1fSwicmVzdHMuOHRoIjp7ZDpbWyJNIiwxLjY4LC02LjEyXSxbImMiLC42NiwtLjA5LDEuMjMsLjA5LDEuNjgsLjUxXSxbImMiLC4yNywuMywuMzksLjU0LC41NywxLjI2XSxbImMiLC4wOSwuMzMsLjE4LC42NiwuMjEsLjcyXSxbImMiLC4xMiwuMjcsLjMzLC40NSwuNiwuNDhdLFsiYyIsLjEyLDAsLjE4LDAsLjMzLC0uMDldLFsiYyIsLjM5LC0uMTgsMS4zMiwtMS4yOSwxLjY4LC0xLjk4XSxbImMiLC4wOSwtLjIxLC4yNCwtLjMsLjM5LC0uM10sWyJjIiwuMTIsMCwuMjcsLjA5LC4zMywuMThdLFsiYyIsLjAzLC4wNiwtLjI3LDEuMTEsLTEuODYsNi40Ml0sWyJjIiwtMS4wMiwzLjQ4LC0xLjg5LDYuMzksLTEuOTIsNi40Ml0sWyJjIiwwLC4wMywtLjEyLC4xMiwtLjI0LC4xNV0sWyJjIiwtLjE4LC4wOSwtLjIxLC4wOSwtLjQ1LC4wOV0sWyJjIiwtLjI0LDAsLS4zLDAsLS40OCwtLjA2XSxbImMiLC0uMDksLS4wNiwtLjIxLC0uMTIsLS4yMSwtLjE1XSxbImMiLC0uMDYsLS4wMywuMTUsLS41NywxLjY4LC00LjkyXSxbImMiLC45NiwtMi42NywxLjc0LC00Ljg5LDEuNzEsLTQuODldLFsibCIsLS41MSwuMTVdLFsiYyIsLTEuMDgsLjM2LC0xLjc0LC40OCwtMi41NSwuNDhdLFsiYyIsLS42NiwwLC0uODQsLS4wMywtMS4zMiwtLjI3XSxbImMiLC0xLjMyLC0uNjMsLTEuNzcsLTIuMTYsLTEuMDIsLTMuM10sWyJjIiwuMzMsLS40NSwuODQsLS44MSwxLjM4LC0uOV0sWyJ6Il1dLHc6Ny41MzQsaDoxMy44ODN9LCJyZXN0cy4xNnRoIjp7ZDpbWyJNIiwzLjMzLC02LjEyXSxbImMiLC42NiwtLjA5LDEuMjMsLjA5LDEuNjgsLjUxXSxbImMiLC4yNywuMywuMzksLjU0LC41NywxLjI2XSxbImMiLC4wOSwuMzMsLjE4LC42NiwuMjEsLjcyXSxbImMiLC4xNSwuMzksLjU3LC41NywuODcsLjQyXSxbImMiLC4zOSwtLjE4LDEuMiwtMS4yMywxLjYyLC0yLjA3XSxbImMiLC4wNiwtLjE1LC4yNCwtLjI0LC4zNiwtLjI0XSxbImMiLC4xMiwwLC4yNywuMDksLjMzLC4xOF0sWyJjIiwuMDMsLjA2LC0uNDUsMS44NiwtMi42NywxMC4xN10sWyJjIiwtMS41LDUuNTUsLTIuNzMsMTAuMTQsLTIuNzYsMTAuMTddLFsiYyIsLS4wMywuMDMsLS4xMiwuMTIsLS4yNCwuMTVdLFsiYyIsLS4xOCwuMDksLS4yMSwuMDksLS40NSwuMDldLFsiYyIsLS4yNCwwLC0uMywwLC0uNDgsLS4wNl0sWyJjIiwtLjA5LC0uMDYsLS4yMSwtLjEyLC0uMjEsLS4xNV0sWyJjIiwtLjA2LC0uMDMsLjEyLC0uNTcsMS40NCwtNC45Ml0sWyJjIiwuODEsLTIuNjcsMS40NywtNC44NiwxLjQ3LC00Ljg5XSxbImMiLC0uMDMsMCwtLjI3LC4wNiwtLjU0LC4xNV0sWyJjIiwtMS4wOCwuMzYsLTEuNzcsLjQ4LC0yLjU4LC40OF0sWyJjIiwtLjY2LDAsLS44NCwtLjAzLC0xLjMyLC0uMjddLFsiYyIsLTEuMzIsLS42MywtMS43NywtMi4xNiwtMS4wMiwtMy4zXSxbImMiLC43MiwtMS4wNSwyLjIyLC0xLjIzLDMuMDYsLS40Ml0sWyJjIiwuMywuMzMsLjQyLC42LC42LDEuMzhdLFsiYyIsLjA5LC40NSwuMjEsLjc4LC4zMywuOV0sWyJjIiwuMDksLjA5LC4yNywuMTgsLjQ1LC4yMV0sWyJjIiwuMTIsMCwuMTgsMCwuMzMsLS4wOV0sWyJjIiwuMzMsLS4xNSwxLjAyLC0uOTMsMS40MSwtMS41OV0sWyJjIiwuMTIsLS4yMSwuMTgsLS4zOSwuMzksLTEuMDhdLFsiYyIsLjY2LC0yLjEsMS4xNywtMy44NCwxLjE3LC0zLjg3XSxbImMiLDAsMCwtLjIxLC4wNiwtLjQyLC4xNV0sWyJjIiwtLjUxLC4xNSwtMS4yLC4zMywtMS42OCwuNDJdLFsiYyIsLS4zMywuMDYsLS41MSwuMDYsLS45NiwuMDZdLFsiYyIsLS42NiwwLC0uODQsLS4wMywtMS4zMiwtLjI3XSxbImMiLC0xLjMyLC0uNjMsLTEuNzcsLTIuMTYsLTEuMDIsLTMuM10sWyJjIiwuMzMsLS40NSwuODQsLS44MSwxLjM4LC0uOV0sWyJ6Il1dLHc6OS43MjQsaDoyMS4zODN9LCJyZXN0cy4zMm5kIjp7ZDpbWyJNIiw0LjIzLC0xMy42Ml0sWyJjIiwuNjYsLS4wOSwxLjIzLC4wOSwxLjY4LC41MV0sWyJjIiwuMjcsLjMsLjM5LC41NCwuNTcsMS4yNl0sWyJjIiwuMDksLjMzLC4xOCwuNjYsLjIxLC43Ml0sWyJjIiwuMTIsLjI3LC4zMywuNDUsLjYsLjQ4XSxbImMiLC4xMiwwLC4xOCwwLC4yNywtLjA2XSxbImMiLC4zMywtLjIxLC45OSwtMS4xMSwxLjQ0LC0xLjk4XSxbImMiLC4wOSwtLjI0LC4yMSwtLjMzLC4zOSwtLjMzXSxbImMiLC4xMiwwLC4yNywuMDksLjMzLC4xOF0sWyJjIiwuMDMsLjA2LC0uNTcsMi42NywtMy4yMSwxMy44OV0sWyJjIiwtMS44LDcuNjIsLTMuMywxMy44OSwtMy4zLDEzLjkyXSxbImMiLC0uMDMsLjA2LC0uMTIsLjEyLC0uMjQsLjE4XSxbImMiLC0uMjEsLjA5LC0uMjQsLjA5LC0uNDgsLjA5XSxbImMiLC0uMjQsMCwtLjMsMCwtLjQ4LC0uMDZdLFsiYyIsLS4wOSwtLjA2LC0uMjEsLS4xMiwtLjIxLC0uMTVdLFsiYyIsLS4wNiwtLjAzLC4wOSwtLjU3LDEuMjMsLTQuOTJdLFsiYyIsLjY5LC0yLjY3LDEuMjYsLTQuODYsMS4yOSwtNC44OV0sWyJjIiwwLC0uMDMsLS4xMiwtLjAzLC0uNDgsLjEyXSxbImMiLC0xLjE3LC4zOSwtMi4yMiwuNTcsLTMsLjU0XSxbImMiLC0uNDIsLS4wMywtLjc1LC0uMTIsLTEuMTEsLS4zXSxbImMiLC0xLjMyLC0uNjMsLTEuNzcsLTIuMTYsLTEuMDIsLTMuM10sWyJjIiwuNzIsLTEuMDUsMi4yMiwtMS4yMywzLjA2LC0uNDJdLFsiYyIsLjMsLjMzLC40MiwuNiwuNiwxLjM4XSxbImMiLC4wOSwuNDUsLjIxLC43OCwuMzMsLjldLFsiYyIsLjEyLC4wOSwuMywuMTgsLjQ4LC4yMV0sWyJjIiwuMTIsMCwuMTgsMCwuMywtLjA5XSxbImMiLC40MiwtLjIxLDEuMjksLTEuMjksMS41NiwtMS44OV0sWyJjIiwuMDMsLS4xMiwxLjIzLC00LjU5LDEuMjMsLTQuNjVdLFsiYyIsMCwtLjAzLC0uMTgsLjAzLC0uMzksLjEyXSxbImMiLC0uNjMsLjE4LC0xLjIsLjM2LC0xLjc0LC40NV0sWyJjIiwtLjM5LC4wNiwtLjU0LC4wNiwtMS4wMiwuMDZdLFsiYyIsLS42NiwwLC0uODQsLS4wMywtMS4zMiwtLjI3XSxbImMiLC0xLjMyLC0uNjMsLTEuNzcsLTIuMTYsLTEuMDIsLTMuM10sWyJjIiwuNzIsLTEuMDUsMi4yMiwtMS4yMywzLjA2LC0uNDJdLFsiYyIsLjMsLjMzLC40MiwuNiwuNiwxLjM4XSxbImMiLC4wOSwuNDUsLjIxLC43OCwuMzMsLjldLFsiYyIsLjE4LC4xOCwuNTEsLjI3LC43MiwuMTVdLFsiYyIsLjMsLS4xMiwuNjksLS41NywxLjA4LC0xLjE3XSxbImMiLC40MiwtLjYsLjM5LC0uNTEsMS4wNSwtMy4wM10sWyJjIiwuMzMsLTEuMjYsLjYsLTIuMzEsLjYsLTIuMzRdLFsiYyIsMCwwLC0uMjEsLjAzLC0uNDUsLjEyXSxbImMiLC0uNTcsLjE4LC0xLjE0LC4zMywtMS42MiwuNDJdLFsiYyIsLS4zMywuMDYsLS41MSwuMDYsLS45NiwuMDZdLFsiYyIsLS42NiwwLC0uODQsLS4wMywtMS4zMiwtLjI3XSxbImMiLC0xLjMyLC0uNjMsLTEuNzcsLTIuMTYsLTEuMDIsLTMuM10sWyJjIiwuMzMsLS40NSwuODQsLS44MSwxLjM4LC0uOV0sWyJ6Il1dLHc6MTEuMzczLGg6MjguODgzfSwicmVzdHMuNjR0aCI6e2Q6W1siTSIsNS4xMywtMTMuNjJdLFsiYyIsLjY2LC0uMDksMS4yMywuMDksMS42OCwuNTFdLFsiYyIsLjI3LC4zLC4zOSwuNTQsLjU3LDEuMjZdLFsiYyIsLjE1LC42MywuMjEsLjgxLC4zMywuOTZdLFsiYyIsLjE4LC4yMSwuNTQsLjMsLjc1LC4xOF0sWyJjIiwuMjQsLS4xMiwuNjMsLS42NiwxLjA4LC0xLjU2XSxbImMiLC4zMywtLjY2LC4zOSwtLjcyLC42LC0uNzJdLFsiYyIsLjEyLDAsLjI3LC4wOSwuMzMsLjE4XSxbImMiLC4wMywuMDYsLS42OSwzLjY2LC0zLjU0LDE3LjY0XSxbImMiLC0xLjk1LDkuNjYsLTMuNTcsMTcuNjEsLTMuNTcsMTcuNjRdLFsiYyIsLS4wMywuMDYsLS4xMiwuMTIsLS4yNCwuMThdLFsiYyIsLS4yMSwuMDksLS4yNCwuMDksLS40OCwuMDldLFsiYyIsLS4yNCwwLC0uMywwLC0uNDgsLS4wNl0sWyJjIiwtLjA5LC0uMDYsLS4yMSwtLjEyLC0uMjEsLS4xNV0sWyJjIiwtLjA2LC0uMDMsLjA2LC0uNTcsMS4wNSwtNC45NV0sWyJjIiwuNiwtMi43LDEuMDgsLTQuODksMS4wOCwtNC45Ml0sWyJjIiwwLDAsLS4yNCwuMDYsLS41MSwuMTVdLFsiYyIsLS42NiwuMjQsLTEuMiwuMzYsLTEuNzcsLjQ4XSxbImMiLC0uNDIsLjA2LC0uNTcsLjA2LC0xLjA1LC4wNl0sWyJjIiwtLjY5LDAsLS44NywtLjAzLC0xLjM1LC0uMjddLFsiYyIsLTEuMzIsLS42MywtMS43NywtMi4xNiwtMS4wMiwtMy4zXSxbImMiLC43MiwtMS4wNSwyLjIyLC0xLjIzLDMuMDYsLS40Ml0sWyJjIiwuMywuMzMsLjQyLC42LC42LDEuMzhdLFsiYyIsLjA5LC40NSwuMjEsLjc4LC4zMywuOV0sWyJjIiwuMDksLjA5LC4yNywuMTgsLjQ1LC4yMV0sWyJjIiwuMjEsLjAzLC4zOSwtLjA5LC43MiwtLjQyXSxbImMiLC40NSwtLjQ1LDEuMDIsLTEuMjYsMS4xNywtMS42NV0sWyJjIiwuMDMsLS4wOSwuMjcsLTEuMTQsLjU0LC0yLjM0XSxbImMiLC4yNywtMS4yLC40OCwtMi4xOSwuNTEsLTIuMjJdLFsiYyIsMCwtLjAzLC0uMDksLS4wMywtLjQ4LC4xMl0sWyJjIiwtMS4xNywuMzksLTIuMjIsLjU3LC0zLC41NF0sWyJjIiwtLjQyLC0uMDMsLS43NSwtLjEyLC0xLjExLC0uM10sWyJjIiwtMS4zMiwtLjYzLC0xLjc3LC0yLjE2LC0xLjAyLC0zLjNdLFsiYyIsLjM2LC0uNTQsLjk2LC0uODcsMS42NSwtLjkzXSxbImMiLC41NCwtLjAzLDEuMDIsLjE1LDEuNDEsLjU0XSxbImMiLC4yNywuMywuMzksLjU0LC41NywxLjI2XSxbImMiLC4wOSwuMzMsLjE4LC42NiwuMjEsLjcyXSxbImMiLC4xNSwuMzksLjU3LC41NywuOSwuNDJdLFsiYyIsLjM2LC0uMTgsMS4yLC0xLjI2LDEuNDcsLTEuODldLFsiYyIsLjAzLC0uMDksLjMsLTEuMiwuNTcsLTIuNDNdLFsibCIsLjUxLC0yLjI4XSxbImwiLC0uNTQsLjE4XSxbImMiLC0xLjExLC4zNiwtMS44LC40OCwtMi42MSwuNDhdLFsiYyIsLS42NiwwLC0uODQsLS4wMywtMS4zMiwtLjI3XSxbImMiLC0xLjMyLC0uNjMsLTEuNzcsLTIuMTYsLTEuMDIsLTMuM10sWyJjIiwuMzYsLS41NCwuOTYsLS44NywxLjY1LC0uOTNdLFsiYyIsLjU0LC0uMDMsMS4wMiwuMTUsMS40MSwuNTRdLFsiYyIsLjI3LC4zLC4zOSwuNTQsLjU3LDEuMjZdLFsiYyIsLjE1LC42MywuMjEsLjgxLC4zMywuOTZdLFsiYyIsLjIxLC4yMSwuNTQsLjMsLjc1LC4xOF0sWyJjIiwuMzYsLS4xOCwuOTMsLS45MywxLjI5LC0xLjY4XSxbImMiLC4xMiwtLjI0LC4xOCwtLjQ4LC42MywtMi41NV0sWyJsIiwuNTEsLTIuMzFdLFsiYyIsMCwtLjAzLC0uMTgsLjAzLC0uMzksLjEyXSxbImMiLC0xLjE0LC4zNiwtMi4xLC41NCwtMi44MiwuNTFdLFsiYyIsLS40MiwtLjAzLC0uNzUsLS4xMiwtMS4xMSwtLjNdLFsiYyIsLTEuMzIsLS42MywtMS43NywtMi4xNiwtMS4wMiwtMy4zXSxbImMiLC4zMywtLjQ1LC44NCwtLjgxLDEuMzgsLS45XSxbInoiXV0sdzoxMi40NTMsaDozNi4zODN9LCJyZXN0cy4xMjh0aCI6e2Q6W1siTSIsNi4wMywtMjEuMTJdLFsiYyIsLjY2LC0uMDksMS4yMywuMDksMS42OCwuNTFdLFsiYyIsLjI3LC4zLC4zOSwuNTQsLjU3LDEuMjZdLFsiYyIsLjA5LC4zMywuMTgsLjY2LC4yMSwuNzJdLFsiYyIsLjEyLC4yNywuMzMsLjQ1LC42LC40OF0sWyJjIiwuMjEsMCwuMzMsLS4wNiwuNTQsLS4zNl0sWyJjIiwuMTUsLS4yMSwuNTQsLS45MywuNzgsLTEuNDddLFsiYyIsLjE1LC0uMzMsLjE4LC0uMzksLjMsLS40OF0sWyJjIiwuMTgsLS4wOSwuNDUsMCwuNTEsLjE1XSxbImMiLC4wMywuMDksLTcuMTEsNDIuNzUsLTcuMTcsNDIuODRdLFsiYyIsLS4wMywuMDMsLS4xNSwuMDksLS4yNCwuMTVdLFsiYyIsLS4xOCwuMDYsLS4yNCwuMDYsLS40NSwuMDZdLFsiYyIsLS4yNCwwLC0uMywwLC0uNDgsLS4wNl0sWyJjIiwtLjA5LC0uMDYsLS4yMSwtLjEyLC0uMjEsLS4xNV0sWyJjIiwtLjA2LC0uMDMsLjAzLC0uNTcsLjg0LC00Ljk4XSxbImMiLC41MSwtMi43LC45MywtNC45MiwuOSwtNC45Ml0sWyJjIiwwLDAsLS4xNSwuMDYsLS4zNiwuMTJdLFsiYyIsLS43OCwuMjcsLTEuNjIsLjQ4LC0yLjMxLC41N10sWyJjIiwtLjE1LC4wMywtLjU0LC4wMywtLjgxLC4wM10sWyJjIiwtLjY2LDAsLS44NCwtLjAzLC0xLjMyLC0uMjddLFsiYyIsLTEuMzIsLS42MywtMS43NywtMi4xNiwtMS4wMiwtMy4zXSxbImMiLC4zNiwtLjU0LC45NiwtLjg3LDEuNjUsLS45M10sWyJjIiwuNTQsLS4wMywxLjAyLC4xNSwxLjQxLC41NF0sWyJjIiwuMjcsLjMsLjM5LC41NCwuNTcsMS4yNl0sWyJjIiwuMDksLjMzLC4xOCwuNjYsLjIxLC43Ml0sWyJjIiwuMTIsLjI3LC4zMywuNDUsLjYzLC40OF0sWyJjIiwuMTIsMCwuMTgsMCwuMywtLjA5XSxbImMiLC40MiwtLjIxLDEuMTQsLTEuMTEsMS41LC0xLjgzXSxbImMiLC4xMiwtLjI3LC4xMiwtLjI3LC41NCwtMi41Ml0sWyJjIiwuMjQsLTEuMjMsLjQyLC0yLjI1LC4zOSwtMi4yNV0sWyJjIiwwLDAsLS4yNCwuMDYsLS41MSwuMThdLFsiYyIsLTEuMjYsLjM5LC0yLjI1LC41NywtMy4wNiwuNTRdLFsiYyIsLS40MiwtLjAzLC0uNzUsLS4xMiwtMS4xMSwtLjNdLFsiYyIsLTEuMzIsLS42MywtMS43NywtMi4xNiwtMS4wMiwtMy4zXSxbImMiLC4zNiwtLjU0LC45NiwtLjg3LDEuNjUsLS45M10sWyJjIiwuNTQsLS4wMywxLjAyLC4xNSwxLjQxLC41NF0sWyJjIiwuMjcsLjMsLjM5LC41NCwuNTcsMS4yNl0sWyJjIiwuMTUsLjYzLC4yMSwuODEsLjMzLC45Nl0sWyJjIiwuMTgsLjIxLC41MSwuMywuNzUsLjE4XSxbImMiLC4zNiwtLjE1LDEuMDUsLS45OSwxLjQxLC0xLjc3XSxbImwiLC4xNSwtLjNdLFsibCIsLjQyLC0yLjI1XSxbImMiLC4yMSwtMS4yNiwuNDIsLTIuMjgsLjM5LC0yLjI4XSxbImwiLC0uNTEsLjE1XSxbImMiLC0xLjExLC4zOSwtMS44OSwuNTEsLTIuNywuNTFdLFsiYyIsLS42NiwwLC0uODQsLS4wMywtMS4zMiwtLjI3XSxbImMiLC0xLjMyLC0uNjMsLTEuNzcsLTIuMTYsLTEuMDIsLTMuM10sWyJjIiwuMzYsLS41NCwuOTYsLS44NywxLjY1LC0uOTNdLFsiYyIsLjU0LC0uMDMsMS4wMiwuMTUsMS40MSwuNTRdLFsiYyIsLjI3LC4zLC4zOSwuNTQsLjU3LDEuMjZdLFsiYyIsLjE1LC42MywuMjEsLjgxLC4zMywuOTZdLFsiYyIsLjE4LC4xOCwuNDgsLjI3LC43MiwuMjFdLFsiYyIsLjMzLC0uMTIsMS4xNCwtMS4yNiwxLjQxLC0xLjk1XSxbImMiLDAsLS4wOSwuMjEsLTEuMTEsLjQ1LC0yLjM0XSxbImMiLC4yMSwtMS4yLC4zOSwtMi4yMiwuMzksLTIuMjhdLFsiYyIsLjAzLC0uMDMsMCwtLjAzLC0uNDUsLjEyXSxbImMiLC0uNTcsLjE4LC0xLjIsLjMzLC0xLjcxLC40Ml0sWyJjIiwtLjMsLjA2LC0uNTEsLjA2LC0uOTMsLjA2XSxbImMiLC0uNjYsMCwtLjg0LC0uMDMsLTEuMzIsLS4yN10sWyJjIiwtMS4zMiwtLjYzLC0xLjc3LC0yLjE2LC0xLjAyLC0zLjNdLFsiYyIsLjM2LC0uNTQsLjk2LC0uODcsMS42NSwtLjkzXSxbImMiLC41NCwtLjAzLDEuMDIsLjE1LDEuNDEsLjU0XSxbImMiLC4yNywuMywuMzksLjU0LC41NywxLjI2XSxbImMiLC4wOSwuMzMsLjE4LC42NiwuMjEsLjcyXSxbImMiLC4xMiwuMjcsLjMzLC40NSwuNiwuNDhdLFsiYyIsLjE4LDAsLjM2LC0uMDksLjU3LC0uMzNdLFsiYyIsLjMzLC0uMzYsLjc4LC0xLjE0LC45MywtMS41Nl0sWyJjIiwuMDMsLS4xMiwuMjQsLTEuMiwuNDUsLTIuNF0sWyJjIiwuMjQsLTEuMiwuNDIsLTIuMjIsLjQyLC0yLjI4XSxbImMiLC4wMywtLjAzLDAsLS4wMywtLjM5LC4wOV0sWyJjIiwtMS4wNSwuMzYsLTEuOCwuNDgsLTIuNTgsLjQ4XSxbImMiLC0uNjMsMCwtLjg0LC0uMDMsLTEuMjksLS4yN10sWyJjIiwtMS4zMiwtLjYzLC0xLjc3LC0yLjE2LC0xLjAyLC0zLjNdLFsiYyIsLjMzLC0uNDUsLjg0LC0uODEsMS4zOCwtLjldLFsieiJdXSx3OjEyLjk5MixoOjQzLjg4M30sImFjY2lkZW50YWxzLnNoYXJwIjp7ZDpbWyJNIiw1LjczLC0xMS4xOV0sWyJjIiwuMjEsLS4xMiwuNTQsLS4wMywuNjYsLjI0XSxbImMiLC4wNiwuMTIsLjA2LC4yMSwuMDYsMi4zMV0sWyJjIiwwLDEuMjMsMCwyLjIyLC4wMywyLjIyXSxbImMiLDAsMCwuMjcsLS4xMiwuNiwtLjI0XSxbImMiLC42OSwtLjI3LC43OCwtLjMsLjk2LC0uMTVdLFsiYyIsLjIxLC4xNSwuMjEsLjE4LC4yMSwxLjM4XSxbImMiLDAsMS4wMiwwLDEuMTEsLS4wNiwxLjJdLFsiYyIsLS4wMywuMDYsLS4wOSwuMTIsLS4xMiwuMTVdLFsiYyIsLS4wNiwuMDMsLS40MiwuMjEsLS44NCwuMzZdLFsibCIsLS43NSwuMzNdLFsibCIsLS4wMywyLjQzXSxbImMiLDAsMS4zMiwwLDIuNDMsLjAzLDIuNDNdLFsiYyIsMCwwLC4yNywtLjEyLC42LC0uMjRdLFsiYyIsLjY5LC0uMjcsLjc4LC0uMywuOTYsLS4xNV0sWyJjIiwuMjEsLjE1LC4yMSwuMTgsLjIxLDEuMzhdLFsiYyIsMCwxLjAyLDAsMS4xMSwtLjA2LDEuMl0sWyJjIiwtLjAzLC4wNiwtLjA5LC4xMiwtLjEyLC4xNV0sWyJjIiwtLjA2LC4wMywtLjQyLC4yMSwtLjg0LC4zNl0sWyJsIiwtLjc1LC4zM10sWyJsIiwtLjAzLDIuNTJdLFsiYyIsMCwyLjI4LC0uMDMsMi41NSwtLjA2LDIuNjRdLFsiYyIsLS4yMSwuMzYsLS43MiwuMzYsLS45MywwXSxbImMiLC0uMDMsLS4wOSwtLjA2LC0uMzMsLS4wNiwtMi40M10sWyJsIiwwLC0yLjMxXSxbImwiLC0xLjI5LC41MV0sWyJsIiwtMS4yNiwuNTFdLFsibCIsMCwyLjQzXSxbImMiLDAsMi41OCwwLDIuNTIsLS4xNSwyLjY3XSxbImMiLC0uMDYsLjA5LC0uMjcsLjE4LC0uMzYsLjE4XSxbImMiLC0uMTIsMCwtLjMzLC0uMDksLS4zOSwtLjE4XSxbImMiLC0uMTUsLS4xNSwtLjE1LC0uMDksLS4xNSwtMi40M10sWyJjIiwwLC0xLjIzLDAsLTIuMjIsLS4wMywtMi4yMl0sWyJjIiwwLDAsLS4yNywuMTIsLS42LC4yNF0sWyJjIiwtLjY5LC4yNywtLjc4LC4zLC0uOTYsLjE1XSxbImMiLC0uMjEsLS4xNSwtLjIxLC0uMTgsLS4yMSwtMS4zOF0sWyJjIiwwLC0xLjAyLDAsLTEuMTEsLjA2LC0xLjJdLFsiYyIsLjAzLC0uMDYsLjA5LC0uMTIsLjEyLC0uMTVdLFsiYyIsLjA2LC0uMDMsLjQyLC0uMjEsLjg0LC0uMzZdLFsibCIsLjc4LC0uMzNdLFsibCIsMCwtMi40M10sWyJjIiwwLC0xLjMyLDAsLTIuNDMsLS4wMywtMi40M10sWyJjIiwwLDAsLS4yNywuMTIsLS42LC4yNF0sWyJjIiwtLjY5LC4yNywtLjc4LC4zLC0uOTYsLjE1XSxbImMiLC0uMjEsLS4xNSwtLjIxLC0uMTgsLS4yMSwtMS4zOF0sWyJjIiwwLC0xLjAyLDAsLTEuMTEsLjA2LC0xLjJdLFsiYyIsLjAzLC0uMDYsLjA5LC0uMTIsLjEyLC0uMTVdLFsiYyIsLjA2LC0uMDMsLjQyLC0uMjEsLjg0LC0uMzZdLFsibCIsLjc4LC0uMzNdLFsibCIsMCwtMi41Ml0sWyJjIiwwLC0yLjI4LC4wMywtMi41NSwuMDYsLTIuNjRdLFsiYyIsLjIxLC0uMzYsLjcyLC0uMzYsLjkzLDBdLFsiYyIsLjAzLC4wOSwuMDYsLjMzLC4wNiwyLjQzXSxbImwiLC4wMywyLjMxXSxbImwiLDEuMjYsLS41MV0sWyJsIiwxLjI2LC0uNTFdLFsibCIsMCwtMi40M10sWyJjIiwwLC0yLjI4LDAsLTIuNDMsLjA2LC0yLjU1XSxbImMiLC4wNiwtLjEyLC4xMiwtLjE4LC4yNywtLjI0XSxbInoiXSxbIm0iLC0uMzMsMTAuNjVdLFsibCIsMCwtMi40M10sWyJsIiwtMS4yOSwuNTFdLFsibCIsLTEuMjYsLjUxXSxbImwiLDAsMi40Nl0sWyJsIiwwLDIuNDNdLFsibCIsLjA5LC0uMDNdLFsiYyIsLjA2LC0uMDMsLjYzLC0uMjcsMS4yOSwtLjUxXSxbImwiLDEuMTcsLS40OF0sWyJsIiwwLC0yLjQ2XSxbInoiXV0sdzo4LjI1LGg6MjIuNDYyfSwiYWNjaWRlbnRhbHMuaGFsZnNoYXJwIjp7ZDpbWyJNIiwyLjQzLC0xMC4wNV0sWyJjIiwuMjEsLS4xMiwuNTQsLS4wMywuNjYsLjI0XSxbImMiLC4wNiwuMTIsLjA2LC4yMSwuMDYsMi4wMV0sWyJjIiwwLDEuMDUsMCwxLjg5LC4wMywxLjg5XSxbImwiLC43MiwtLjQ4XSxbImMiLC42OSwtLjQ4LC42OSwtLjUxLC44NywtLjUxXSxbImMiLC4xNSwwLC4xOCwuMDMsLjI3LC4wOV0sWyJjIiwuMjEsLjE1LC4yMSwuMTgsLjIxLDEuNDFdLFsiYyIsMCwxLjExLC0uMDMsMS4xNCwtLjA5LDEuMjNdLFsiYyIsLS4wMywuMDMsLS40OCwuMzksLTEuMDIsLjc1XSxbImwiLC0uOTksLjY2XSxbImwiLDAsMi4zN10sWyJjIiwwLDEuMzIsMCwyLjM3LC4wMywyLjM3XSxbImwiLC43MiwtLjQ4XSxbImMiLC42OSwtLjQ4LC42OSwtLjUxLC44NywtLjUxXSxbImMiLC4xNSwwLC4xOCwuMDMsLjI3LC4wOV0sWyJjIiwuMjEsLjE1LC4yMSwuMTgsLjIxLDEuNDFdLFsiYyIsMCwxLjExLC0uMDMsMS4xNCwtLjA5LDEuMjNdLFsiYyIsLS4wMywuMDMsLS40OCwuMzksLTEuMDIsLjc1XSxbImwiLC0uOTksLjY2XSxbImwiLDAsMi4yNV0sWyJjIiwwLDEuOTUsMCwyLjI4LC0uMDYsMi4zN10sWyJjIiwtLjA2LC4xMiwtLjEyLC4yMSwtLjI0LC4yN10sWyJjIiwtLjI3LC4xMiwtLjU0LC4wMywtLjY5LC0uMjRdLFsiYyIsLS4wNiwtLjEyLC0uMDYsLS4yMSwtLjA2LC0yLjAxXSxbImMiLDAsLTEuMDUsMCwtMS44OSwtLjAzLC0xLjg5XSxbImwiLC0uNzIsLjQ4XSxbImMiLC0uNjksLjQ4LC0uNjksLjQ4LC0uODcsLjQ4XSxbImMiLC0uMTUsMCwtLjE4LDAsLS4yNywtLjA2XSxbImMiLC0uMjEsLS4xNSwtLjIxLC0uMTgsLS4yMSwtMS40MV0sWyJjIiwwLC0xLjExLC4wMywtMS4xNCwuMDksLTEuMjNdLFsiYyIsLjAzLC0uMDMsLjQ4LC0uMzksMS4wMiwtLjc1XSxbImwiLC45OSwtLjY2XSxbImwiLDAsLTIuMzddLFsiYyIsMCwtMS4zMiwwLC0yLjM3LC0uMDMsLTIuMzddLFsibCIsLS43MiwuNDhdLFsiYyIsLS42OSwuNDgsLS42OSwuNDgsLS44NywuNDhdLFsiYyIsLS4xNSwwLC0uMTgsMCwtLjI3LC0uMDZdLFsiYyIsLS4yMSwtLjE1LC0uMjEsLS4xOCwtLjIxLC0xLjQxXSxbImMiLDAsLTEuMTEsLjAzLC0xLjE0LC4wOSwtMS4yM10sWyJjIiwuMDMsLS4wMywuNDgsLS4zOSwxLjAyLC0uNzVdLFsibCIsLjk5LC0uNjZdLFsibCIsMCwtMi4yNV0sWyJjIiwwLC0yLjEzLDAsLTIuMjgsLjA2LC0yLjRdLFsiYyIsLjA2LC0uMTIsLjEyLC0uMTgsLjI3LC0uMjRdLFsieiJdXSx3OjUuMjUsaDoyMC4xNzR9LCJhY2NpZGVudGFscy5uYXQiOntkOltbIk0iLC4yMSwtMTEuNF0sWyJjIiwuMjQsLS4wNiwuNzgsMCwuOTksLjE1XSxbImMiLC4wMywuMDMsLjAzLC40OCwwLDIuNjFdLFsiYyIsLS4wMywxLjQ0LC0uMDMsMi42MSwtLjAzLDIuNjFdLFsiYyIsMCwuMDMsLjc1LC0uMDksMS42OCwtLjI0XSxbImMiLC45NiwtLjE4LDEuNzEsLS4yNywxLjc0LC0uMjddLFsiYyIsLjE1LC4wMywuMjcsLjE1LC4zNiwuM10sWyJsIiwuMDYsLjEyXSxbImwiLC4wOSw4LjY3XSxbImMiLC4wOSw2Ljk2LC4xMiw4LjY3LC4wOSw4LjY3XSxbImMiLC0uMDMsLjAzLC0uMTIsLjA2LC0uMjEsLjA5XSxbImMiLC0uMjQsLjA5LC0uNzIsLjA5LC0uOTYsMF0sWyJjIiwtLjA5LC0uMDMsLS4xOCwtLjA2LC0uMjEsLS4wOV0sWyJjIiwtLjAzLC0uMDMsLS4wMywtLjQ4LDAsLTIuNjFdLFsiYyIsLjAzLC0xLjQ0LC4wMywtMi42MSwuMDMsLTIuNjFdLFsiYyIsMCwtLjAzLC0uNzUsLjA5LC0xLjY4LC4yNF0sWyJjIiwtLjk2LC4xOCwtMS43MSwuMjcsLTEuNzQsLjI3XSxbImMiLC0uMTUsLS4wMywtLjI3LC0uMTUsLS4zNiwtLjNdLFsibCIsLS4wNiwtLjE1XSxbImwiLC0uMDksLTcuNTNdLFsiYyIsLS4wNiwtNC4xNCwtLjA5LC04LjA0LC0uMTIsLTguNjddLFsibCIsMCwtMS4xMV0sWyJsIiwuMTUsLS4wNl0sWyJjIiwuMDksLS4wMywuMjEsLS4wNiwuMjcsLS4wOV0sWyJ6Il0sWyJtIiwzLjc1LDguNF0sWyJjIiwwLC0uMzMsMCwtLjQyLC0uMDMsLS40Ml0sWyJjIiwtLjEyLDAsLTIuNzksLjQ1LC0yLjc5LC40OF0sWyJjIiwtLjAzLDAsLS4wOSw2LjMsLS4wOSw2LjMzXSxbImMiLC4wMywwLDIuNzksLS40NSwyLjgyLC0uNDhdLFsiYyIsMCwwLC4wOSwtNC41MywuMDksLTUuOTFdLFsieiJdXSx3OjUuNCxoOjIyLjh9LCJhY2NpZGVudGFscy5mbGF0Ijp7ZDpbWyJNIiwtLjM2LC0xNC4wN10sWyJjIiwuMzMsLS4wNiwuODcsMCwxLjA4LC4xNV0sWyJjIiwuMDYsLjAzLC4wNiwuMzYsLS4wMyw1LjI1XSxbImMiLC0uMDYsMi44NSwtLjA5LDUuMTksLS4wOSw1LjE5XSxbImMiLDAsLjAzLC4xMiwtLjAzLC4yNCwtLjEyXSxbImMiLC42MywtLjQyLDEuNDEsLS42NiwyLjE5LC0uNzJdLFsiYyIsLjgxLC0uMDMsMS40NywuMjEsMi4wNCwuNzhdLFsiYyIsLjU3LC41NCwuODcsMS4yNiwuOTMsMi4wNF0sWyJjIiwuMDMsLjU3LC0uMDksMS4wOCwtLjM2LDEuNjJdLFsiYyIsLS40MiwuODEsLTEuMDIsMS4zOCwtMi44MiwyLjYxXSxbImMiLC0xLjE0LC43OCwtMS40NCwxLjAyLC0xLjgsMS40NF0sWyJjIiwtLjE4LC4xOCwtLjM5LC4zOSwtLjQ1LC40Ml0sWyJjIiwtLjI3LC4xOCwtLjU3LC4xNSwtLjgxLC0uMDZdLFsiYyIsLS4wNiwtLjA5LC0uMTIsLS4xOCwtLjE1LC0uMjddLFsiYyIsLS4wMywtLjA2LC0uMDksLTMuMjcsLS4xOCwtOC4zNF0sWyJjIiwtLjA5LC00LjUzLC0uMTUsLTguNTgsLS4xOCwtOS4wM10sWyJsIiwwLC0uNzhdLFsibCIsLjEyLC0uMDZdLFsiYyIsLjA2LC0uMDMsLjE4LC0uMDksLjI3LC0uMTJdLFsieiJdLFsibSIsMy4xOCwxMS4wMV0sWyJjIiwtLjIxLC0uMTIsLS41NCwtLjE1LC0uODEsLS4wNl0sWyJjIiwtLjU0LC4xNSwtLjk5LC42MywtMS4xNywxLjI2XSxbImMiLC0uMDYsLjMsLS4xMiwyLjg4LC0uMDYsMy44N10sWyJjIiwuMDMsLjQyLC4wMywuODEsLjA2LC45XSxbImwiLC4wMywuMTJdLFsibCIsLjQ1LC0uMzldLFsiYyIsLjYzLC0uNTQsMS4yNiwtMS4xNywxLjU2LC0xLjU5XSxbImMiLC4zLC0uNDIsLjYsLS45OSwuNzIsLTEuNDFdLFsiYyIsLjE4LC0uNjksLjA5LC0xLjQ3LC0uMTgsLTIuMDddLFsiYyIsLS4xNSwtLjMsLS4zMywtLjUxLC0uNiwtLjYzXSxbInoiXV0sdzo2Ljc1LGg6MTguODAxfSwiYWNjaWRlbnRhbHMuaGFsZmZsYXQiOntkOltbIk0iLDQuODMsLTE0LjA3XSxbImMiLC4zMywtLjA2LC44NywwLDEuMDgsLjE1XSxbImMiLC4wNiwuMDMsLjA2LC42LC0uMTIsOS4wNl0sWyJjIiwtLjA5LDUuNTUsLS4xNSw5LjA2LC0uMTgsOS4xMl0sWyJjIiwtLjAzLC4wOSwtLjA5LC4xOCwtLjE1LC4yN10sWyJjIiwtLjI0LC4yMSwtLjU0LC4yNCwtLjgxLC4wNl0sWyJjIiwtLjA2LC0uMDMsLS4yNywtLjI0LC0uNDUsLS40Ml0sWyJjIiwtLjM2LC0uNDIsLS42NiwtLjY2LC0xLjgsLTEuNDRdLFsiYyIsLTEuMjMsLS44NCwtMS44MywtMS4zMiwtMi4yNSwtMS43N10sWyJjIiwtLjY2LC0uNzgsLS45NiwtMS41NiwtLjkzLC0yLjQ2XSxbImMiLC4wOSwtMS40MSwxLjExLC0yLjU4LDIuNCwtMi43OV0sWyJjIiwuMywtLjA2LC44NCwtLjAzLDEuMjMsLjA2XSxbImMiLC41NCwuMTIsMS4wOCwuMzMsMS41MywuNjNdLFsiYyIsLjEyLC4wOSwuMjQsLjE1LC4yNCwuMTJdLFsiYyIsMCwwLC0uMTIsLTguMzcsLS4xOCwtOS43NV0sWyJsIiwwLC0uNjZdLFsibCIsLjEyLC0uMDZdLFsiYyIsLjA2LC0uMDMsLjE4LC0uMDksLjI3LC0uMTJdLFsieiJdLFsibSIsLTEuNjUsMTAuOTVdLFsiYyIsLS42LC0uMTgsLTEuMDgsLjA5LC0xLjM4LC42OV0sWyJjIiwtLjI3LC42LC0uMzYsMS4zOCwtLjE4LDIuMDddLFsiYyIsLjEyLC40MiwuNDIsLjk5LC43MiwxLjQxXSxbImMiLC4zLC40MiwuOTMsMS4wNSwxLjU2LDEuNTldLFsibCIsLjQ4LC4zOV0sWyJsIiwwLC0uMTJdLFsiYyIsLjAzLC0uMDksLjAzLC0uNDgsLjA2LC0uOV0sWyJjIiwuMDMsLS41NywuMDMsLTEuMDgsMCwtMi4yMl0sWyJjIiwtLjAzLC0xLjYyLC0uMDMsLTEuNjIsLS4yNCwtMi4wN10sWyJjIiwtLjIxLC0uNDIsLS42LC0uNzUsLTEuMDIsLS44NF0sWyJ6Il1dLHc6Ni43MjgsaDoxOC44MDF9LCJhY2NpZGVudGFscy5kYmxmbGF0Ijp7ZDpbWyJNIiwtLjM2LC0xNC4wN10sWyJjIiwuMzMsLS4wNiwuODcsMCwxLjA4LC4xNV0sWyJjIiwuMDYsLjAzLC4wNiwuMzYsLS4wMyw1LjI1XSxbImMiLC0uMDYsMi44NSwtLjA5LDUuMTksLS4wOSw1LjE5XSxbImMiLDAsLjAzLC4xMiwtLjAzLC4yNCwtLjEyXSxbImMiLC42MywtLjQyLDEuNDEsLS42NiwyLjE5LC0uNzJdLFsiYyIsLjgxLC0uMDMsMS40NywuMjEsMi4wNCwuNzhdLFsiYyIsLjU3LC41NCwuODcsMS4yNiwuOTMsMi4wNF0sWyJjIiwuMDMsLjU3LC0uMDksMS4wOCwtLjM2LDEuNjJdLFsiYyIsLS40MiwuODEsLTEuMDIsMS4zOCwtMi44MiwyLjYxXSxbImMiLC0xLjE0LC43OCwtMS40NCwxLjAyLC0xLjgsMS40NF0sWyJjIiwtLjE4LC4xOCwtLjM5LC4zOSwtLjQ1LC40Ml0sWyJjIiwtLjI3LC4xOCwtLjU3LC4xNSwtLjgxLC0uMDZdLFsiYyIsLS4wNiwtLjA5LC0uMTIsLS4xOCwtLjE1LC0uMjddLFsiYyIsLS4wMywtLjA2LC0uMDksLTMuMjcsLS4xOCwtOC4zNF0sWyJjIiwtLjA5LC00LjUzLC0uMTUsLTguNTgsLS4xOCwtOS4wM10sWyJsIiwwLC0uNzhdLFsibCIsLjEyLC0uMDZdLFsiYyIsLjA2LC0uMDMsLjE4LC0uMDksLjI3LC0uMTJdLFsieiJdLFsibSIsMy4xOCwxMS4wMV0sWyJjIiwtLjIxLC0uMTIsLS41NCwtLjE1LC0uODEsLS4wNl0sWyJjIiwtLjU0LC4xNSwtLjk5LC42MywtMS4xNywxLjI2XSxbImMiLC0uMDYsLjMsLS4xMiwyLjg4LC0uMDYsMy44N10sWyJjIiwuMDMsLjQyLC4wMywuODEsLjA2LC45XSxbImwiLC4wMywuMTJdLFsibCIsLjQ1LC0uMzldLFsiYyIsLjYzLC0uNTQsMS4yNiwtMS4xNywxLjU2LC0xLjU5XSxbImMiLC4zLC0uNDIsLjYsLS45OSwuNzIsLTEuNDFdLFsiYyIsLjE4LC0uNjksLjA5LC0xLjQ3LC0uMTgsLTIuMDddLFsiYyIsLS4xNSwtLjMsLS4zMywtLjUxLC0uNiwtLjYzXSxbInoiXSxbIm0iLDMsLTExXSxbImMiLC4zMywtLjA2LC44NywwLDEuMDgsLjE1XSxbImMiLC4wNiwuMDMsLjA2LC4zNiwtLjAzLDUuMjVdLFsiYyIsLS4wNiwyLjg1LC0uMDksNS4xOSwtLjA5LDUuMTldLFsiYyIsMCwuMDMsLjEyLC0uMDMsLjI0LC0uMTJdLFsiYyIsLjYzLC0uNDIsMS40MSwtLjY2LDIuMTksLS43Ml0sWyJjIiwuODEsLS4wMywxLjQ3LC4yMSwyLjA0LC43OF0sWyJjIiwuNTcsLjU0LC44NywxLjI2LC45MywyLjA0XSxbImMiLC4wMywuNTcsLS4wOSwxLjA4LC0uMzYsMS42Ml0sWyJjIiwtLjQyLC44MSwtMS4wMiwxLjM4LC0yLjgyLDIuNjFdLFsiYyIsLTEuMTQsLjc4LC0xLjQ0LDEuMDIsLTEuOCwxLjQ0XSxbImMiLC0uMTgsLjE4LC0uMzksLjM5LC0uNDUsLjQyXSxbImMiLC0uMjcsLjE4LC0uNTcsLjE1LC0uODEsLS4wNl0sWyJjIiwtLjA2LC0uMDksLS4xMiwtLjE4LC0uMTUsLS4yN10sWyJjIiwtLjAzLC0uMDYsLS4wOSwtMy4yNywtLjE4LC04LjM0XSxbImMiLC0uMDksLTQuNTMsLS4xNSwtOC41OCwtLjE4LC05LjAzXSxbImwiLDAsLS43OF0sWyJsIiwuMTIsLS4wNl0sWyJjIiwuMDYsLS4wMywuMTgsLS4wOSwuMjcsLS4xMl0sWyJ6Il0sWyJtIiwzLjE4LDExLjAxXSxbImMiLC0uMjEsLS4xMiwtLjU0LC0uMTUsLS44MSwtLjA2XSxbImMiLC0uNTQsLjE1LC0uOTksLjYzLC0xLjE3LDEuMjZdLFsiYyIsLS4wNiwuMywtLjEyLDIuODgsLS4wNiwzLjg3XSxbImMiLC4wMywuNDIsLjAzLC44MSwuMDYsLjldLFsibCIsLjAzLC4xMl0sWyJsIiwuNDUsLS4zOV0sWyJjIiwuNjMsLS41NCwxLjI2LC0xLjE3LDEuNTYsLTEuNTldLFsiYyIsLjMsLS40MiwuNiwtLjk5LC43MiwtMS40MV0sWyJjIiwuMTgsLS42OSwuMDksLTEuNDcsLS4xOCwtMi4wN10sWyJjIiwtLjE1LC0uMywtLjMzLC0uNTEsLS42LC0uNjNdLFsieiJdXSx3OjEyLjEsaDoxOC44MDR9LCJhY2NpZGVudGFscy5kYmxzaGFycCI6e2Q6W1siTSIsLS4xOCwtMy45Nl0sWyJjIiwuMDYsLS4wMywuMTIsLS4wNiwuMTUsLS4wNl0sWyJjIiwuMDksMCwyLjc2LC4yNywyLjc5LC4zXSxbImMiLC4xMiwuMDMsLjE1LC4xMiwuMTUsLjUxXSxbImMiLC4wNiwuOTYsLjI0LDEuNTksLjU3LDIuMV0sWyJjIiwuMDYsLjA5LC4xNSwuMjEsLjE4LC4yNF0sWyJsIiwuMDksLjA2XSxbImwiLC4wOSwtLjA2XSxbImMiLC4wMywtLjAzLC4xMiwtLjE1LC4xOCwtLjI0XSxbImMiLC4zMywtLjUxLC41MSwtMS4xNCwuNTcsLTIuMV0sWyJjIiwwLC0uMzksLjAzLC0uNDUsLjEyLC0uNTFdLFsiYyIsLjAzLDAsLjY2LC0uMDksMS40NCwtLjE1XSxbImMiLDEuNDcsLS4xNSwxLjUsLS4xNSwxLjU2LC0uMDNdLFsiYyIsLjAzLC4wNiwwLC40MiwtLjA5LDEuNDRdLFsiYyIsLS4wOSwuNzIsLS4xNSwxLjM1LC0uMTUsMS4zOF0sWyJjIiwwLC4wMywtLjAzLC4wOSwtLjA2LC4xMl0sWyJjIiwtLjA2LC4wNiwtLjEyLC4wOSwtLjUxLC4wOV0sWyJjIiwtMS4wOCwuMDYsLTEuOCwuMywtMi4yOCwuNzVdLFsibCIsLS4xMiwuMDldLFsibCIsLjA5LC4wOV0sWyJjIiwuMTIsLjE1LC4zOSwuMzMsLjYzLC40NV0sWyJjIiwuNDIsLjE4LC45NiwuMjcsMS42OCwuMzNdLFsiYyIsLjM5LDAsLjQ1LC4wMywuNTEsLjA5XSxbImMiLC4wMywuMDMsLjA2LC4wOSwuMDYsLjEyXSxbImMiLDAsLjAzLC4wNiwuNjYsLjE1LDEuMzhdLFsiYyIsLjA5LDEuMDIsLjEyLDEuMzgsLjA5LDEuNDRdLFsiYyIsLS4wNiwuMTIsLS4wOSwuMTIsLTEuNTYsLS4wM10sWyJjIiwtLjc4LC0uMDYsLTEuNDEsLS4xNSwtMS40NCwtLjE1XSxbImMiLC0uMDksLS4wNiwtLjEyLC0uMTIsLS4xMiwtLjU0XSxbImMiLC0uMDYsLS45MywtLjI0LC0xLjU2LC0uNTcsLTIuMDddLFsiYyIsLS4wNiwtLjA5LC0uMTUsLS4yMSwtLjE4LC0uMjRdLFsibCIsLS4wOSwtLjA2XSxbImwiLC0uMDksLjA2XSxbImMiLC0uMDMsLjAzLC0uMTIsLjE1LC0uMTgsLjI0XSxbImMiLC0uMzMsLjUxLC0uNTEsMS4xNCwtLjU3LDIuMDddLFsiYyIsMCwuNDIsLS4wMywuNDgsLS4xMiwuNTRdLFsiYyIsLS4wMywwLC0uNjYsLjA5LC0xLjQ0LC4xNV0sWyJjIiwtMS40NywuMTUsLTEuNSwuMTUsLTEuNTYsLjAzXSxbImMiLC0uMDMsLS4wNiwwLC0uNDIsLjA5LC0xLjQ0XSxbImMiLC4wOSwtLjcyLC4xNSwtMS4zNSwuMTUsLTEuMzhdLFsiYyIsMCwtLjAzLC4wMywtLjA5LC4wNiwtLjEyXSxbImMiLC4wNiwtLjA2LC4xMiwtLjA5LC41MSwtLjA5XSxbImMiLC43MiwtLjA2LDEuMjYsLS4xNSwxLjY4LC0uMzNdLFsiYyIsLjI0LC0uMTIsLjUxLC0uMywuNjMsLS40NV0sWyJsIiwuMDksLS4wOV0sWyJsIiwtLjEyLC0uMDldLFsiYyIsLS40OCwtLjQ1LC0xLjIsLS42OSwtMi4yOCwtLjc1XSxbImMiLC0uMzksMCwtLjQ1LC0uMDMsLS41MSwtLjA5XSxbImMiLC0uMDMsLS4wMywtLjA2LC0uMDksLS4wNiwtLjEyXSxbImMiLDAsLS4wMywtLjA2LC0uNjMsLS4xMiwtMS4zOF0sWyJjIiwtLjA5LC0uNzIsLS4xNSwtMS4zNSwtLjE1LC0xLjM4XSxbInoiXV0sdzo3Ljk1LGg6Ny45Nzd9LCJkb3RzLmRvdCI6e2Q6W1siTSIsMS4zMiwtMS42OF0sWyJjIiwuMDksLS4wMywuMjcsLS4wNiwuMzksLS4wNl0sWyJjIiwuOTYsMCwxLjc0LC43OCwxLjc0LDEuNzFdLFsiYyIsMCwuOTYsLS43OCwxLjc0LC0xLjcxLDEuNzRdLFsiYyIsLS45NiwwLC0xLjc0LC0uNzgsLTEuNzQsLTEuNzFdLFsiYyIsMCwtLjc4LC41NCwtMS41LDEuMzIsLTEuNjhdLFsieiJdXSx3OjMuNDUsaDozLjQ1fSwibm90ZWhlYWRzLmRibCI6e2Q6W1siTSIsLS42OSwtNC4wMl0sWyJjIiwuMTgsLS4wOSwuMzYsLS4wOSwuNTQsMF0sWyJjIiwuMTgsLjA5LC4yNCwuMTUsLjMzLC4zXSxbImMiLC4wNiwuMTUsLjA2LC4xOCwuMDYsMS40MV0sWyJsIiwwLDEuMjNdLFsibCIsLjEyLC0uMThdLFsiYyIsLjcyLC0xLjI2LDIuNjQsLTIuMzEsNC44NiwtMi42NF0sWyJjIiwuODEsLS4xNSwxLjExLC0uMTUsMi4xMywtLjE1XSxbImMiLC45OSwwLDEuMjksMCwyLjEsLjE1XSxbImMiLC43NSwuMTIsMS4zOCwuMjcsMi4wNCwuNTRdLFsiYyIsMS4zNSwuNTEsMi4zNCwxLjI2LDIuODIsMi4xXSxbImwiLC4xMiwuMThdLFsibCIsMCwtMS4yM10sWyJjIiwwLC0xLjIsMCwtMS4yNiwuMDYsLTEuMzhdLFsiYyIsLjA5LC0uMTgsLjE1LC0uMjQsLjMzLC0uMzNdLFsiYyIsLjE4LC0uMDksLjM2LC0uMDksLjU0LDBdLFsiYyIsLjE4LC4wOSwuMjQsLjE1LC4zMywuM10sWyJsIiwuMDYsLjE1XSxbImwiLDAsMy41NF0sWyJsIiwwLDMuNTRdLFsibCIsLS4wNiwuMTVdLFsiYyIsLS4wOSwuMTgsLS4xNSwuMjQsLS4zMywuMzNdLFsiYyIsLS4xOCwuMDksLS4zNiwuMDksLS41NCwwXSxbImMiLC0uMTgsLS4wOSwtLjI0LC0uMTUsLS4zMywtLjMzXSxbImMiLC0uMDYsLS4xMiwtLjA2LC0uMTgsLS4wNiwtMS4zOF0sWyJsIiwwLC0xLjIzXSxbImwiLC0uMTIsLjE4XSxbImMiLC0uNDgsLjg0LC0xLjQ3LDEuNTksLTIuODIsMi4xXSxbImMiLC0uODQsLjMzLC0xLjcxLC41NCwtMi44NSwuNjZdLFsiYyIsLS40NSwuMDYsLTIuMTYsLjA2LC0yLjYxLDBdLFsiYyIsLTEuMTQsLS4xMiwtMi4wMSwtLjMzLC0yLjg1LC0uNjZdLFsiYyIsLTEuMzUsLS41MSwtMi4zNCwtMS4yNiwtMi44MiwtMi4xXSxbImwiLC0uMTIsLS4xOF0sWyJsIiwwLDEuMjNdLFsiYyIsMCwxLjIzLDAsMS4yNiwtLjA2LDEuMzhdLFsiYyIsLS4wOSwuMTgsLS4xNSwuMjQsLS4zMywuMzNdLFsiYyIsLS4xOCwuMDksLS4zNiwuMDksLS41NCwwXSxbImMiLC0uMTgsLS4wOSwtLjI0LC0uMTUsLS4zMywtLjMzXSxbImwiLC0uMDYsLS4xNV0sWyJsIiwwLC0zLjU0XSxbImMiLDAsLTMuNDgsMCwtMy41NCwuMDYsLTMuNjZdLFsiYyIsLjA5LC0uMTgsLjE1LC0uMjQsLjMzLC0uMzNdLFsieiJdLFsibSIsNy43MSwuNjNdLFsiYyIsLS4zNiwtLjA2LC0uOSwtLjA2LC0xLjE0LDBdLFsiYyIsLS4zLC4wMywtLjY2LC4yNCwtLjg3LC40Ml0sWyJjIiwtLjYsLjU0LC0uOSwxLjYyLC0uNzUsMi44Ml0sWyJjIiwuMTIsLjkzLC41MSwxLjY4LDEuMTEsMi4zMV0sWyJjIiwuNzUsLjcyLDEuODMsMS4yLDIuODUsMS4yNl0sWyJjIiwxLjA1LC4wNiwxLjgzLC0uNTQsMi4xLC0xLjY1XSxbImMiLC4yMSwtLjksLjEyLC0xLjk1LC0uMjQsLTIuODJdLFsiYyIsLS4zNiwtLjgxLC0xLjA4LC0xLjUzLC0xLjk1LC0xLjk1XSxbImMiLC0uMywtLjE1LC0uNzgsLS4zLC0xLjExLC0uMzldLFsieiJdXSx3OjE2LjgzLGg6OC4xNDV9LCJub3RlaGVhZHMud2hvbGUiOntkOltbIk0iLDYuNTEsLTQuMDVdLFsiYyIsLjUxLC0uMDMsMi4wMSwwLDIuNTIsLjAzXSxbImMiLDEuNDEsLjE4LDIuNjQsLjUxLDMuNzIsMS4wOF0sWyJjIiwxLjIsLjYzLDEuOTUsMS40MSwyLjE5LDIuMzFdLFsiYyIsLjA5LC4zMywuMDksLjksMCwxLjIzXSxbImMiLC0uMjQsLjksLS45OSwxLjY4LC0yLjE5LDIuMzFdLFsiYyIsLTEuMDgsLjU3LC0yLjI4LC45LC0zLjc1LDEuMDhdLFsiYyIsLS42NiwuMDYsLTIuMzEsLjA2LC0yLjk3LDBdLFsiYyIsLTEuNDcsLS4xOCwtMi42NywtLjUxLC0zLjc1LC0xLjA4XSxbImMiLC0xLjIsLS42MywtMS45NSwtMS40MSwtMi4xOSwtMi4zMV0sWyJjIiwtLjA5LC0uMzMsLS4wOSwtLjksMCwtMS4yM10sWyJjIiwuMjQsLS45LC45OSwtMS42OCwyLjE5LC0yLjMxXSxbImMiLDEuMiwtLjYzLDIuNjEsLS45OSw0LjIzLC0xLjExXSxbInoiXSxbIm0iLC41NywuNjZdLFsiYyIsLS44NywtLjE1LC0xLjUzLDAsLTIuMDQsLjUxXSxbImMiLC0uMTUsLjE1LC0uMjQsLjI3LC0uMzMsLjQ4XSxbImMiLC0uMjQsLjUxLC0uMzYsMS4wOCwtLjMzLDEuNzddLFsiYyIsLjAzLC42OSwuMTgsMS4yNiwuNDIsMS43N10sWyJjIiwuNiwxLjE3LDEuNzQsMS45OCwzLjE4LDIuMjJdLFsiYyIsMS4xMSwuMjEsMS45NSwtLjE1LDIuMzQsLS45OV0sWyJjIiwuMjQsLS41MSwuMzYsLTEuMDgsLjMzLC0xLjhdLFsiYyIsLS4wNiwtMS4xMSwtLjQ1LC0yLjA0LC0xLjE3LC0yLjc2XSxbImMiLC0uNjMsLS42MywtMS40NywtMS4wNSwtMi40LC0xLjJdLFsieiJdXSx3OjE0Ljk4NSxoOjguMDk3fSwibm90ZWhlYWRzLmhhbGYiOntkOltbIk0iLDcuNDQsLTQuMDVdLFsiYyIsLjA2LC0uMDMsLjI3LC0uMDMsLjQ4LC0uMDNdLFsiYyIsMS4wNSwwLDEuNzEsLjI0LDIuMSwuODFdLFsiYyIsLjQyLC42LC40NSwxLjM1LC4xOCwyLjRdLFsiYyIsLS40MiwxLjU5LC0xLjE0LDIuNzMsLTIuMTYsMy4zOV0sWyJjIiwtMS40MSwuOTMsLTMuMTgsMS40NCwtNS40LDEuNTNdLFsiYyIsLTEuMTcsLjAzLC0xLjg5LC0uMjEsLTIuMjgsLS44MV0sWyJjIiwtLjQyLC0uNiwtLjQ1LC0xLjM1LC0uMTgsLTIuNF0sWyJjIiwuNDIsLTEuNTksMS4xNCwtMi43MywyLjE2LC0zLjM5XSxbImMiLC42MywtLjQyLDEuMjMsLS43MiwxLjk4LC0uOTZdLFsiYyIsLjksLS4zLDEuNjUsLS40MiwzLjEyLC0uNTRdLFsieiJdLFsibSIsMS4yOSwuODddLFsiYyIsLS4yNywtLjA5LC0uNjMsLS4xMiwtLjksLS4wM10sWyJjIiwtLjcyLC4yNCwtMS41MywuNjksLTMuMjcsMS44XSxbImMiLC0yLjM0LDEuNSwtMy4zLDIuMjUsLTMuNTcsMi43OV0sWyJjIiwtLjM2LC43MiwtLjA2LDEuNSwuNjYsMS43N10sWyJjIiwuMjQsLjEyLC42OSwuMDksLjk5LDBdLFsiYyIsLjg0LC0uMywxLjkyLC0uOTMsNC4xNCwtMi4zN10sWyJjIiwxLjYyLC0xLjA4LDIuMzcsLTEuNzEsMi42MSwtMi4xOV0sWyJjIiwuMzYsLS43MiwuMDYsLTEuNSwtLjY2LC0xLjc3XSxbInoiXV0sdzoxMC4zNyxoOjguMTMyfSwibm90ZWhlYWRzLnF1YXJ0ZXIiOntkOltbIk0iLDYuMDksLTQuMDVdLFsiYyIsLjM2LC0uMDMsMS4yLDAsMS41MywuMDZdLFsiYyIsMS4xNywuMjQsMS44OSwuODQsMi4xNiwxLjgzXSxbImMiLC4wNiwuMTgsLjA2LC4zLC4wNiwuNjZdLFsiYyIsMCwuNDUsMCwuNjMsLS4xNSwxLjA4XSxbImMiLC0uNjYsMi4wNCwtMy4wNiwzLjkzLC01LjUyLDQuMzhdLFsiYyIsLS41NCwuMDksLTEuNDQsLjA5LC0xLjgzLC4wM10sWyJjIiwtMS4yMywtLjI3LC0xLjk4LC0uODcsLTIuMjUsLTEuODZdLFsiYyIsLS4wNiwtLjE4LC0uMDYsLS4zLC0uMDYsLS42Nl0sWyJjIiwwLC0uNDUsMCwtLjYzLC4xNSwtMS4wOF0sWyJjIiwuMjQsLS43OCwuNzUsLTEuNTMsMS40NCwtMi4yMl0sWyJjIiwxLjIsLTEuMiwyLjg1LC0yLjAxLDQuNDcsLTIuMjJdLFsieiJdXSx3OjkuODEsaDo4LjA5NH0sIm5vdGVoZWFkcy5zbGFzaC5ub3N0ZW0iOntkOltbIk0iLDkuMywtNy43N10sWyJjIiwuMDYsLS4wNiwuMTgsLS4wNiwxLjcxLC0uMDZdLFsibCIsMS42NSwwXSxbImwiLC4wOSwuMDldLFsiYyIsLjA2LC4wNiwuMDYsLjA5LC4wNiwuMTVdLFsiYyIsLS4wMywuMTIsLTkuMjEsMTUuMjQsLTkuMywxNS4zM10sWyJjIiwtLjA2LC4wNiwtLjE4LC4wNiwtMS43MSwuMDZdLFsibCIsLTEuNjUsMF0sWyJsIiwtLjA5LC0uMDldLFsiYyIsLS4wNiwtLjA2LC0uMDYsLS4wOSwtLjA2LC0uMTVdLFsiYyIsLjAzLC0uMTIsOS4yMSwtMTUuMjQsOS4zLC0xNS4zM10sWyJ6Il1dLHc6MTIuODEsaDoxNS42M30sIm5vdGVoZWFkcy5pbmRldGVybWluYXRlIjp7ZDpbWyJNIiwuNzgsLTQuMDVdLFsiYyIsLjEyLC0uMDMsLjI0LC0uMDMsLjM2LC4wM10sWyJjIiwuMDMsLjAzLC45MywuNzIsMS45NSwxLjU2XSxbImwiLDEuODYsMS41XSxbImwiLDEuODYsLTEuNV0sWyJjIiwxLjAyLC0uODQsMS45MiwtMS41MywxLjk1LC0xLjU2XSxbImMiLC4yMSwtLjEyLC4zMywtLjA5LC43NSwuMjRdLFsiYyIsLjMsLjI3LC4zNiwuMzYsLjM2LC41NF0sWyJjIiwwLC4wMywtLjAzLC4xMiwtLjA2LC4xOF0sWyJjIiwtLjAzLC4wNiwtLjksLjc1LC0xLjg5LDEuNTZdLFsibCIsLTEuOCwxLjQ3XSxbImMiLDAsLjAzLC44MSwuNjksMS44LDEuNV0sWyJjIiwuOTksLjgxLDEuODYsMS41LDEuODksMS41Nl0sWyJjIiwuMDMsLjA2LC4wNiwuMTUsLjA2LC4xOF0sWyJjIiwwLC4xOCwtLjA2LC4yNywtLjM2LC41NF0sWyJjIiwtLjQyLC4zMywtLjU0LC4zNiwtLjc1LC4yNF0sWyJjIiwtLjAzLC0uMDMsLS45MywtLjcyLC0xLjk1LC0xLjU2XSxbImwiLC0xLjg2LC0xLjVdLFsibCIsLTEuODYsMS41XSxbImMiLC0xLjAyLC44NCwtMS45MiwxLjUzLC0xLjk1LDEuNTZdLFsiYyIsLS4yMSwuMTIsLS4zMywuMDksLS43NSwtLjI0XSxbImMiLC0uMywtLjI3LC0uMzYsLS4zNiwtLjM2LC0uNTRdLFsiYyIsMCwtLjAzLC4wMywtLjEyLC4wNiwtLjE4XSxbImMiLC4wMywtLjA2LC45LC0uNzUsMS44OSwtMS41Nl0sWyJsIiwxLjgsLTEuNDddLFsiYyIsMCwtLjAzLC0uODEsLS42OSwtMS44LC0xLjVdLFsiYyIsLS45OSwtLjgxLC0xLjg2LC0xLjUsLTEuODksLTEuNTZdLFsiYyIsLS4wNiwtLjEyLC0uMDksLS4yMSwtLjAzLC0uMzZdLFsiYyIsLjAzLC0uMDksLjU3LC0uNTcsLjcyLC0uNjNdLFsieiJdXSx3OjkuODQzLGg6OC4xMzl9LCJzY3JpcHRzLnVmZXJtYXRhIjp7ZDpbWyJNIiwtLjc1LC0xMC43N10sWyJjIiwuMTIsMCwuNDUsLS4wMywuNjksLS4wM10sWyJjIiwyLjkxLC0uMDMsNS41NSwxLjUzLDcuNDEsNC4zNV0sWyJjIiwxLjE3LDEuNzEsMS45NSwzLjcyLDIuNDMsNi4wM10sWyJjIiwuMTIsLjUxLC4xMiwuNTcsLjAzLC42OV0sWyJjIiwtLjEyLC4yMSwtLjQ4LC4yNywtLjY5LC4xMl0sWyJjIiwtLjEyLC0uMDksLS4xOCwtLjI0LC0uMjcsLS42OV0sWyJjIiwtLjc4LC0zLjYzLC0zLjQyLC02LjU0LC02Ljc4LC03LjM4XSxbImMiLC0uNzgsLS4yMSwtMS4yLC0uMjQsLTIuMDcsLS4yNF0sWyJjIiwtLjYzLDAsLS44NCwwLC0xLjIsLjA2XSxbImMiLC0xLjgzLC4yNywtMy40MiwxLjA4LC00LjgsMi4zN10sWyJjIiwtMS40MSwxLjM1LC0yLjQsMy4yMSwtMi44NSw1LjE5XSxbImMiLC0uMDksLjQ1LC0uMTUsLjYsLS4yNywuNjldLFsiYyIsLS4yMSwuMTUsLS41NywuMDksLS42OSwtLjEyXSxbImMiLC0uMDksLS4xMiwtLjA5LC0uMTgsLjAzLC0uNjldLFsiYyIsLjMzLC0xLjYyLC43OCwtMywxLjQ3LC00LjM4XSxbImMiLDEuNzcsLTMuNTQsNC40NCwtNS42Nyw3LjU2LC01Ljk3XSxbInoiXSxbIm0iLC4zMyw3LjQ3XSxbImMiLDEuMzgsLS4zLDIuNTgsLjksMi4zMSwyLjI1XSxbImMiLC0uMTUsLjcyLC0uNzgsMS4zNSwtMS40NywxLjVdLFsiYyIsLTEuMzgsLjI3LC0yLjU4LC0uOTMsLTIuMzEsLTIuMzFdLFsiYyIsLjE1LC0uNjksLjc4LC0xLjI5LDEuNDcsLTEuNDRdLFsieiJdXSx3OjE5Ljc0OCxoOjExLjI4OX0sInNjcmlwdHMuZGZlcm1hdGEiOntkOltbIk0iLC05LjYzLC0uNDJdLFsiYyIsLjE1LC0uMDksLjM2LC0uMDYsLjUxLC4wM10sWyJjIiwuMTIsLjA5LC4xOCwuMjQsLjI3LC42Nl0sWyJjIiwuNzgsMy42NiwzLjQyLDYuNTcsNi43OCw3LjQxXSxbImMiLC43OCwuMjEsMS4yLC4yNCwyLjA3LC4yNF0sWyJjIiwuNjMsMCwuODQsMCwxLjIsLS4wNl0sWyJjIiwxLjgzLC0uMjcsMy40MiwtMS4wOCw0LjgsLTIuMzddLFsiYyIsMS40MSwtMS4zNSwyLjQsLTMuMjEsMi44NSwtNS4yMl0sWyJjIiwuMDksLS40MiwuMTUsLS41NywuMjcsLS42Nl0sWyJjIiwuMjEsLS4xNSwuNTcsLS4wOSwuNjksLjEyXSxbImMiLC4wOSwuMTIsLjA5LC4xOCwtLjAzLC42OV0sWyJjIiwtLjMzLDEuNjIsLS43OCwzLC0xLjQ3LDQuMzhdLFsiYyIsLTEuOTIsMy44NCwtNC44OSw2LC04LjMxLDZdLFsiYyIsLTMuNDIsMCwtNi4zOSwtMi4xNiwtOC4zMSwtNl0sWyJjIiwtLjQ4LC0uOTYsLS44NCwtMS45MiwtMS4xNCwtMi45N10sWyJjIiwtLjE4LC0uNjksLS40MiwtMS43NCwtLjQyLC0xLjkyXSxbImMiLDAsLS4xMiwuMDksLS4yNywuMjQsLS4zM10sWyJ6Il0sWyJtIiw5LjIxLDBdLFsiYyIsMS4yLC0uMjcsMi4zNCwuNjMsMi4zNCwxLjg2XSxbImMiLDAsLjksLS42NiwxLjY4LC0xLjUsMS44OV0sWyJjIiwtMS4zOCwuMjcsLTIuNTgsLS45MywtMi4zMSwtMi4zMV0sWyJjIiwuMTUsLS42OSwuNzgsLTEuMjksMS40NywtMS40NF0sWyJ6Il1dLHc6MTkuNzQ0LGg6MTEuMjc0fSwic2NyaXB0cy5zZm9yemF0byI6e2Q6W1siTSIsLTYuNDUsLTMuNjldLFsiYyIsLjA2LC0uMDMsLjE1LC0uMDYsLjE4LC0uMDZdLFsiYyIsLjA2LDAsMi44NSwuNzIsNi4yNCwxLjU5XSxbImwiLDYuMzMsMS42NV0sWyJjIiwuMzMsLjA2LC40NSwuMjEsLjQ1LC41MV0sWyJjIiwwLC4zLC0uMTIsLjQ1LC0uNDUsLjUxXSxbImwiLC02LjMzLDEuNjVdLFsiYyIsLTMuMzksLjg3LC02LjE4LDEuNTksLTYuMjEsMS41OV0sWyJjIiwtLjIxLDAsLS40OCwtLjI0LC0uNTEsLS40NV0sWyJjIiwwLC0uMTUsLjA2LC0uMzYsLjE4LC0uNDVdLFsiYyIsLjA5LC0uMDYsLjg3LC0uMjcsMy44NCwtMS4wNV0sWyJjIiwyLjA0LC0uNTQsMy44NCwtLjk5LDQuMDIsLTEuMDJdLFsiYyIsLjE1LC0uMDYsMS4xNCwtLjI0LDIuMjIsLS40Ml0sWyJjIiwxLjA1LC0uMTgsMS45MiwtLjM2LDEuOTIsLS4zNl0sWyJjIiwwLDAsLS44NywtLjE4LC0xLjkyLC0uMzZdLFsiYyIsLTEuMDgsLS4xOCwtMi4wNywtLjM2LC0yLjIyLC0uNDJdLFsiYyIsLS4xOCwtLjAzLC0xLjk4LC0uNDgsLTQuMDIsLTEuMDJdLFsiYyIsLTIuOTcsLS43OCwtMy43NSwtLjk5LC0zLjg0LC0xLjA1XSxbImMiLC0uMTIsLS4wOSwtLjE4LC0uMywtLjE4LC0uNDVdLFsiYyIsLjAzLC0uMTUsLjE1LC0uMywuMywtLjM5XSxbInoiXV0sdzoxMy41LGg6Ny41fSwic2NyaXB0cy5zdGFjY2F0byI6e2Q6W1siTSIsLS4zNiwtMS40N10sWyJjIiwuOTMsLS4yMSwxLjg2LC41MSwxLjg2LDEuNDddLFsiYyIsMCwuOTMsLS44NywxLjY1LC0xLjgsMS40N10sWyJjIiwtLjU0LC0uMTIsLTEuMDIsLS41NywtMS4xNCwtMS4wOF0sWyJjIiwtLjIxLC0uODEsLjI3LC0xLjY1LDEuMDgsLTEuODZdLFsieiJdXSx3OjIuOTg5LGg6My4wMDR9LCJzY3JpcHRzLnRlbnV0byI6e2Q6W1siTSIsLTQuMiwtLjQ4XSxbImwiLC4xMiwtLjA2XSxbImwiLDQuMDgsMF0sWyJsIiw0LjA4LDBdLFsibCIsLjEyLC4wNl0sWyJjIiwuMzksLjIxLC4zOSwuNzUsMCwuOTZdLFsibCIsLS4xMiwuMDZdLFsibCIsLTQuMDgsMF0sWyJsIiwtNC4wOCwwXSxbImwiLC0uMTIsLS4wNl0sWyJjIiwtLjM5LC0uMjEsLS4zOSwtLjc1LDAsLS45Nl0sWyJ6Il1dLHc6OC45ODUsaDoxLjA4fSwic2NyaXB0cy51bWFyY2F0byI6e2Q6W1siTSIsLS4xNSwtOC4xOV0sWyJjIiwuMTUsLS4xMiwuMzYsLS4wMywuNDUsLjE1XSxbImMiLC4yMSwuNDIsMy40NSw3LjY1LDMuNDUsNy43MV0sWyJjIiwwLC4xMiwtLjEyLC4yNywtLjIxLC4zXSxbImMiLC0uMDMsLjAzLC0uNTEsLjAzLC0xLjE0LC4wM10sWyJjIiwtMS4wNSwwLC0xLjA4LDAsLTEuMTcsLS4wNl0sWyJjIiwtLjA5LC0uMDYsLS4yNCwtLjM2LC0xLjE3LC0yLjRdLFsiYyIsLS41NywtMS4yOSwtMS4wNSwtMi4zNCwtMS4wOCwtMi4zNF0sWyJjIiwwLC0uMDMsLS41MSwxLjAyLC0xLjA4LDIuMzRdLFsiYyIsLS45MywyLjA3LC0xLjA4LDIuMzQsLTEuMTQsMi40XSxbImMiLC0uMDYsLjAzLC0uMTUsLjA2LC0uMTgsLjA2XSxbImMiLC0uMTUsMCwtLjMzLC0uMTgsLS4zMywtLjMzXSxbImMiLDAsLS4wNiwzLjI0LC03LjMyLDMuNDUsLTcuNzFdLFsiYyIsLjAzLC0uMDYsLjA5LC0uMTUsLjE1LC0uMTVdLFsieiJdXSx3OjcuNSxoOjguMjQ1fSwic2NyaXB0cy5kbWFyY2F0byI6e2Q6W1siTSIsLTMuNTcsLjAzXSxbImMiLC4wMywwLC41NywtLjAzLDEuMTcsLS4wM10sWyJjIiwxLjA1LDAsMS4wOCwwLDEuMTcsLjA2XSxbImMiLC4wOSwuMDYsLjI0LC4zNiwxLjE3LDIuNF0sWyJjIiwuNTcsMS4yOSwxLjA1LDIuMzQsMS4wOCwyLjM0XSxbImMiLDAsLjAzLC41MSwtMS4wMiwxLjA4LC0yLjM0XSxbImMiLC45MywtMi4wNywxLjA4LC0yLjM0LDEuMTQsLTIuNF0sWyJjIiwuMDYsLS4wMywuMTUsLS4wNiwuMTgsLS4wNl0sWyJjIiwuMTUsMCwuMzMsLjE4LC4zMywuMzNdLFsiYyIsMCwuMDksLTMuNDUsNy43NCwtMy41NCw3LjgzXSxbImMiLC0uMTIsLjEyLC0uMywuMTIsLS40MiwwXSxbImMiLC0uMDksLS4wOSwtMy41NCwtNy43NCwtMy41NCwtNy44M10sWyJjIiwwLC0uMDksLjEyLC0uMjcsLjE4LC0uM10sWyJ6Il1dLHc6Ny41LGg6OC4yNX0sInNjcmlwdHMuc3RvcHBlZCI6e2Q6W1siTSIsLS4yNywtNC4wOF0sWyJjIiwuMTgsLS4wOSwuMzYsLS4wOSwuNTQsMF0sWyJjIiwuMTgsLjA5LC4yNCwuMTUsLjMzLC4zXSxbImwiLC4wNiwuMTVdLFsibCIsMCwxLjVdLFsibCIsMCwxLjQ3XSxbImwiLDEuNDcsMF0sWyJsIiwxLjUsMF0sWyJsIiwuMTUsLjA2XSxbImMiLC4xNSwuMDksLjIxLC4xNSwuMywuMzNdLFsiYyIsLjA5LC4xOCwuMDksLjM2LDAsLjU0XSxbImMiLC0uMDksLjE4LC0uMTUsLjI0LC0uMzMsLjMzXSxbImMiLC0uMTIsLjA2LC0uMTgsLjA2LC0xLjYyLC4wNl0sWyJsIiwtMS40NywwXSxbImwiLDAsMS40N10sWyJsIiwwLDEuNDddLFsibCIsLS4wNiwuMTVdLFsiYyIsLS4wOSwuMTgsLS4xNSwuMjQsLS4zMywuMzNdLFsiYyIsLS4xOCwuMDksLS4zNiwuMDksLS41NCwwXSxbImMiLC0uMTgsLS4wOSwtLjI0LC0uMTUsLS4zMywtLjMzXSxbImwiLC0uMDYsLS4xNV0sWyJsIiwwLC0xLjQ3XSxbImwiLDAsLTEuNDddLFsibCIsLTEuNDcsMF0sWyJjIiwtMS40NCwwLC0xLjUsMCwtMS42MiwtLjA2XSxbImMiLC0uMTgsLS4wOSwtLjI0LC0uMTUsLS4zMywtLjMzXSxbImMiLC0uMDksLS4xOCwtLjA5LC0uMzYsMCwtLjU0XSxbImMiLC4wOSwtLjE4LC4xNSwtLjI0LC4zMywtLjMzXSxbImwiLC4xNSwtLjA2XSxbImwiLDEuNDcsMF0sWyJsIiwxLjQ3LDBdLFsibCIsMCwtMS40N10sWyJjIiwwLC0xLjQ0LDAsLTEuNSwuMDYsLTEuNjJdLFsiYyIsLjA5LC0uMTgsLjE1LC0uMjQsLjMzLC0uMzNdLFsieiJdXSx3OjguMjk1LGg6OC4yOTV9LCJzY3JpcHRzLnVwYm93Ijp7ZDpbWyJNIiwtNC42NSwtMTUuNTRdLFsiYyIsLjEyLC0uMDksLjM2LC0uMDYsLjQ4LC4wM10sWyJjIiwuMDMsLjAzLC4wOSwuMDksLjEyLC4xNV0sWyJjIiwuMDMsLjA2LC42NiwyLjEzLDEuNDEsNC42Ml0sWyJjIiwxLjM1LDQuNDEsMS4zOCw0LjU2LDIuMDEsNi45Nl0sWyJsIiwuNjMsMi40Nl0sWyJsIiwuNjMsLTIuNDZdLFsiYyIsLjYzLC0yLjQsLjY2LC0yLjU1LDIuMDEsLTYuOTZdLFsiYyIsLjc1LC0yLjQ5LDEuMzgsLTQuNTYsMS40MSwtNC42Ml0sWyJjIiwuMDYsLS4xNSwuMTgsLS4yMSwuMzYsLS4yNF0sWyJjIiwuMTUsMCwuMywuMDYsLjM5LC4xOF0sWyJjIiwuMTUsLjIxLC4yNCwtLjE4LC0yLjEsNy41Nl0sWyJjIiwtMS4yLDMuOTYsLTIuMjIsNy4zMiwtMi4yNSw3LjQxXSxbImMiLDAsLjEyLC0uMDYsLjI3LC0uMDksLjNdLFsiYyIsLS4xMiwuMjEsLS42LC4yMSwtLjcyLDBdLFsiYyIsLS4wMywtLjAzLC0uMDksLS4xOCwtLjA5LC0uM10sWyJjIiwtLjAzLC0uMDksLTEuMDUsLTMuNDUsLTIuMjUsLTcuNDFdLFsiYyIsLTIuMzQsLTcuNzQsLTIuMjUsLTcuMzUsLTIuMSwtNy41Nl0sWyJjIiwuMDMsLS4wMywuMDksLS4wOSwuMTUsLS4xMl0sWyJ6Il1dLHc6OS43MyxoOjE1LjYwOH0sInNjcmlwdHMuZG93bmJvdyI6e2Q6W1siTSIsLTUuNTUsLTkuOTNdLFsibCIsLjA5LC0uMDZdLFsibCIsNS40NiwwXSxbImwiLDUuNDYsMF0sWyJsIiwuMDksLjA2XSxbImwiLC4wNiwuMDldLFsibCIsMCw0Ljc3XSxbImMiLDAsNS4yOCwwLDQuODksLS4xOCw1LjAxXSxbImMiLC0uMTgsLjEyLC0uNDIsLjA2LC0uNTQsLS4xMl0sWyJjIiwtLjA2LC0uMDksLS4wNiwtLjE4LC0uMDYsLTIuOTddLFsibCIsMCwtMi44NV0sWyJsIiwtNC44MywwXSxbImwiLC00LjgzLDBdLFsibCIsMCwyLjg1XSxbImMiLDAsMi43OSwwLDIuODgsLS4wNiwyLjk3XSxbImMiLC0uMTUsLjI0LC0uNTEsLjI0LC0uNjYsMF0sWyJjIiwtLjA2LC0uMDksLS4wNiwtLjIxLC0uMDYsLTQuODldLFsibCIsMCwtNC43N10sWyJ6Il1dLHc6MTEuMjIsaDo5Ljk5Mn0sInNjcmlwdHMudHVybiI6e2Q6W1siTSIsLTQuNzcsLTMuOV0sWyJjIiwuMzYsLS4wNiwxLjA1LC0uMDYsMS40NCwuMDNdLFsiYyIsLjc4LC4xNSwxLjUsLjUxLDIuMzQsMS4xNF0sWyJjIiwuNiwuNDUsMS4wNSwuODcsMi4yMiwyLjAxXSxbImMiLDEuMTEsMS4wOCwxLjYyLDEuNSwyLjIyLDEuODZdLFsiYyIsLjYsLjM2LDEuMzIsLjU3LDEuOTIsLjU3XSxbImMiLC45LDAsMS43MSwtLjU3LDEuODksLTEuMzVdLFsiYyIsLjI0LC0uOTMsLS4zOSwtMS44OSwtMS4zNSwtMi4xXSxbImwiLC0uMTUsLS4wNl0sWyJsIiwtLjA5LC4xNV0sWyJjIiwtLjAzLC4wOSwtLjE1LC4yNCwtLjI0LC4zM10sWyJjIiwtLjcyLC43MiwtMi4wNCwuNTQsLTIuNDksLS4zNl0sWyJjIiwtLjQ4LC0uOTMsLjAzLC0xLjg2LDEuMTcsLTIuMTldLFsiYyIsLjMsLS4wOSwxLjAyLC0uMDksMS4zNSwwXSxbImMiLC45OSwuMjcsMS43NCwuODcsMi4yNSwxLjgzXSxbImMiLC42OSwxLjQxLC42MywzLC0uMjEsNC4yNl0sWyJjIiwtLjIxLC4zLC0uNjksLjgxLC0uOTksMS4wMl0sWyJjIiwtLjMsLjIxLC0uODQsLjQ1LC0xLjE3LC41NF0sWyJjIiwtMS4yMywuMzYsLTIuNDksLjE1LC0zLjcyLC0uNl0sWyJjIiwtLjc1LC0uNDgsLTEuNDEsLTEuMDIsLTIuODUsLTIuNDZdLFsiYyIsLTEuMTEsLTEuMDgsLTEuNjIsLTEuNSwtMi4yMiwtMS44Nl0sWyJjIiwtLjYsLS4zNiwtMS4zMiwtLjU3LC0xLjkyLC0uNTddLFsiYyIsLS45LDAsLTEuNzEsLjU3LC0xLjg5LDEuMzVdLFsiYyIsLS4yNCwuOTMsLjM5LDEuODksMS4zNSwyLjFdLFsibCIsLjE1LC4wNl0sWyJsIiwuMDksLS4xNV0sWyJjIiwuMDMsLS4wOSwuMTUsLS4yNCwuMjQsLS4zM10sWyJjIiwuNzIsLS43MiwyLjA0LC0uNTQsMi40OSwuMzZdLFsiYyIsLjQ4LC45MywtLjAzLDEuODYsLTEuMTcsMi4xOV0sWyJjIiwtLjMsLjA5LC0xLjAyLC4wOSwtMS4zNSwwXSxbImMiLC0uOTksLS4yNywtMS43NCwtLjg3LC0yLjI1LC0xLjgzXSxbImMiLC0uNjksLTEuNDEsLS42MywtMywuMjEsLTQuMjZdLFsiYyIsLjIxLC0uMywuNjksLS44MSwuOTksLTEuMDJdLFsiYyIsLjQ4LC0uMzMsMS4xMSwtLjU3LDEuNzQsLS42Nl0sWyJ6Il1dLHc6MTYuMzY2LGg6Ny44OTN9LCJzY3JpcHRzLnRyaWxsIjp7ZDpbWyJNIiwtLjUxLC0xNi4wMl0sWyJjIiwuMTIsLS4wOSwuMjEsLS4xOCwuMjEsLS4xOF0sWyJsIiwtLjgxLDQuMDJdLFsibCIsLS44MSw0LjAyXSxbImMiLC4wMywwLC41MSwtLjI3LDEuMDgsLS42XSxbImMiLC42LC0uMywxLjE0LC0uNjMsMS4yNiwtLjY2XSxbImMiLDEuMTQsLS41NCwyLjMxLC0uNiwzLjA5LC0uMThdLFsiYyIsLjI3LC4xNSwuNTQsLjM2LC42LC41MV0sWyJsIiwuMDYsLjEyXSxbImwiLC4yMSwtLjIxXSxbImMiLC45LC0uODEsMi4yMiwtLjk5LDMuMTIsLS40Ml0sWyJjIiwuNiwuNDIsLjksMS4xNCwuNzgsMi4wN10sWyJjIiwtLjE1LDEuMjksLTEuMDUsMi4zMSwtMS45NSwyLjI1XSxbImMiLC0uNDgsLS4wMywtLjc4LC0uMywtLjk2LC0uODFdLFsiYyIsLS4wOSwtLjI3LC0uMDksLS45LC0uMDMsLTEuMl0sWyJjIiwuMjEsLS43NSwuODEsLTEuMjMsMS41OSwtMS4zMl0sWyJsIiwuMjQsLS4wM10sWyJsIiwtLjA5LC0uMTJdLFsiYyIsLS41MSwtLjY2LC0xLjYyLC0uNjMsLTIuMzEsLjAzXSxbImMiLC0uMzksLjQyLC0uMywuMDksLTEuMjMsNC43N10sWyJsIiwtLjgxLDQuMTRdLFsiYyIsLS4wMywwLC0uMTIsLS4wMywtLjIxLC0uMDldLFsiYyIsLS4zMywtLjE1LC0uNTQsLS4xOCwtLjk5LC0uMThdLFsiYyIsLS40MiwwLC0uNjYsLjAzLC0xLjA1LC4xOF0sWyJjIiwtLjEyLC4wNiwtLjIxLC4wOSwtLjIxLC4wOV0sWyJjIiwwLC0uMDMsLjM2LC0xLjg2LC44MSwtNC4xMV0sWyJjIiwuOSwtNC40NywuODcsLTQuMjYsLjY5LC00LjUzXSxbImMiLC0uMjEsLS4zNiwtLjY2LC0uNTEsLTEuMTcsLS4zNl0sWyJjIiwtLjE1LC4wNiwtMi4yMiwxLjE0LC0yLjU4LDEuMzhdLFsiYyIsLS4xMiwuMDksLS4xMiwuMDksLS4yMSwuNl0sWyJsIiwtLjA5LC41MV0sWyJsIiwuMjEsLjI0XSxbImMiLC42MywuNzUsMS4wMiwxLjQ3LDEuMiwyLjE5XSxbImMiLC4wNiwuMjcsLjA2LC4zNiwuMDYsLjgxXSxbImMiLDAsLjQyLDAsLjU0LC0uMDYsLjc4XSxbImMiLC0uMTUsLjU0LC0uMzMsLjkzLC0uNjMsMS4zNV0sWyJjIiwtLjE4LC4yNCwtLjU3LC42MywtLjgxLC43OF0sWyJjIiwtLjI0LC4xNSwtLjYzLC4zNiwtLjg0LC40Ml0sWyJjIiwtLjI3LC4wNiwtLjY2LC4wNiwtLjg3LC4wM10sWyJjIiwtLjgxLC0uMTgsLTEuMzIsLTEuMDUsLTEuMzgsLTIuNDZdLFsiYyIsLS4wMywtLjYsLjAzLC0uOTksLjMzLC0yLjQ2XSxbImMiLC4yMSwtMS4wOCwuMjQsLTEuMzIsLjIxLC0xLjI5XSxbImMiLC0xLjIsLjQ4LC0yLjQsLjc1LC0zLjIxLC43Ml0sWyJjIiwtLjY5LC0uMDYsLTEuMTcsLS4zLC0xLjQxLC0uNzJdLFsiYyIsLS4zOSwtLjc1LC0uMTIsLTEuOCwuNjYsLTIuNDZdLFsiYyIsLjI0LC0uMTgsLjY5LC0uNDIsMS4wMiwtLjUxXSxbImMiLC42OSwtLjE4LDEuNTMsLS4xNSwyLjMxLC4wOV0sWyJjIiwuMywuMDksLjc1LC4zLC45OSwuNDVdLFsiYyIsLjEyLC4wOSwuMTUsLjA5LC4xNSwuMDNdLFsiYyIsLjAzLC0uMDMsLjMzLC0xLjU5LC43MiwtMy40NV0sWyJjIiwuMzYsLTEuODYsLjY2LC0zLjQyLC42OSwtMy40NV0sWyJjIiwwLC0uMDMsLjAzLC0uMDMsLjIxLC4wM10sWyJjIiwuMjEsLjA2LC4yNywuMDYsLjQ4LC4wNl0sWyJjIiwuNDIsLS4wMywuNzgsLS4xOCwxLjI2LC0uNDhdLFsiYyIsLjE1LC0uMTIsLjM2LC0uMjcsLjQ4LC0uMzldLFsieiJdLFsibSIsLTUuNzMsNy42OF0sWyJjIiwtLjI3LC0uMDMsLS45NiwtLjA2LC0xLjIsLS4wM10sWyJjIiwtLjgxLC4xMiwtMS4zNSwuNTcsLTEuNSwxLjJdLFsiYyIsLS4xOCwuNjYsLjEyLDEuMTQsLjc1LDEuMjldLFsiYyIsLjY2LC4xMiwxLjkyLC0uMTIsMy4xOCwtLjY2XSxbImwiLC4zMywtLjE1XSxbImwiLC4wOSwtLjM5XSxbImMiLC4wNiwtLjIxLC4wOSwtLjQyLC4wOSwtLjQ1XSxbImMiLDAsLS4wMywtLjQ1LC0uMywtLjc1LC0uNDVdLFsiYyIsLS4yNywtLjE1LC0uNjYsLS4yNywtLjk5LC0uMzZdLFsieiJdLFsibSIsNC4yOSwzLjYzXSxbImMiLC0uMjQsLS4zOSwtLjUxLC0uNzUsLS41MSwtLjY5XSxbImMiLC0uMDYsLjEyLC0uMzksMS45MiwtLjQ1LDIuMjhdLFsiYyIsLS4wOSwuNTQsLS4xMiwxLjE0LC0uMDYsMS4zOF0sWyJjIiwuMDYsLjQyLC4yMSwuNiwuNTEsLjU3XSxbImMiLC4zOSwtLjA2LC43NSwtLjQ4LC45MywtMS4xNF0sWyJjIiwuMDksLS4zMywuMDksLTEuMDUsMCwtMS4zOF0sWyJjIiwtLjA5LC0uMzksLS4yNCwtLjY5LC0uNDIsLTEuMDJdLFsieiJdXSx3OjE3Ljk2MyxoOjE2LjQ5fSwic2NyaXB0cy5zZWdubyI6e2Q6W1siTSIsLTMuNzIsLTExLjIyXSxbImMiLC43OCwtLjA5LDEuNTksLjAzLDIuMzEsLjQyXSxbImMiLDEuMiwuNiwyLjAxLDEuNzEsMi4zMSwzLjA5XSxbImMiLC4wOSwuNDIsLjA5LDEuMiwuMDMsMS41XSxbImMiLC0uMTUsLjQ1LC0uMzksLjgxLC0uNjYsLjkzXSxbImMiLC0uMzMsLjE4LC0uODQsLjIxLC0xLjIzLC4xNV0sWyJjIiwtLjgxLC0uMTgsLTEuMzIsLS45MywtMS4yNiwtMS44OV0sWyJjIiwuMDMsLS4zNiwuMDksLS41NywuMjQsLS45XSxbImMiLC4xNSwtLjMzLC40NSwtLjYsLjcyLC0uNzVdLFsiYyIsLjEyLC0uMDYsLjE4LC0uMDksLjE4LC0uMTJdLFsiYyIsMCwtLjAzLC0uMDMsLS4xNSwtLjA5LC0uMjRdLFsiYyIsLS4xOCwtLjQ1LC0uNTQsLS44NywtLjk2LC0xLjA4XSxbImMiLC0xLjExLC0uNTcsLTIuMzQsLS4xOCwtMi44OCwuOV0sWyJjIiwtLjI0LC41MSwtLjMzLDEuMTEsLS4yNCwxLjgzXSxbImMiLC4yNywxLjkyLDEuNSwzLjU0LDMuOTMsNS4xM10sWyJjIiwuNDgsLjMzLDEuMjYsLjc4LDEuMjksLjc4XSxbImMiLC4wMywwLDEuMzUsLTIuMTksMi45NCwtNC44OV0sWyJsIiwyLjg4LC00Ljg5XSxbImwiLC44NCwwXSxbImwiLC44NywwXSxbImwiLC0uMDMsLjA2XSxbImMiLC0uMTUsLjIxLC02LjE1LDEwLjQxLC02LjE1LDEwLjQ0XSxbImMiLDAsMCwuMjEsLjE1LC40OCwuMjddLFsiYyIsMi42MSwxLjQ3LDQuMzUsMy4wMyw1LjEzLDQuNjVdLFsiYyIsMS4xNCwyLjM0LC41MSw1LjA3LC0xLjQ0LDYuMzldLFsiYyIsLS42NiwuNDIsLTEuMzIsLjYzLC0yLjEzLC42OV0sWyJjIiwtMi4wMSwuMDksLTMuODEsLTEuNDEsLTQuMjYsLTMuNTRdLFsiYyIsLS4wOSwtLjQyLC0uMDksLTEuMiwtLjAzLC0xLjVdLFsiYyIsLjE1LC0uNDUsLjM5LC0uODEsLjY2LC0uOTNdLFsiYyIsLjMzLC0uMTgsLjg0LC0uMjEsMS4yMywtLjE1XSxbImMiLC44MSwuMTgsMS4zMiwuOTMsMS4yNiwxLjg5XSxbImMiLC0uMDMsLjM2LC0uMDksLjU3LC0uMjQsLjldLFsiYyIsLS4xNSwuMzMsLS40NSwuNiwtLjcyLC43NV0sWyJjIiwtLjEyLC4wNiwtLjE4LC4wOSwtLjE4LC4xMl0sWyJjIiwwLC4wMywuMDMsLjE1LC4wOSwuMjRdLFsiYyIsLjE4LC40NSwuNTQsLjg3LC45NiwxLjA4XSxbImMiLDEuMTEsLjU3LDIuMzQsLjE4LDIuODgsLS45XSxbImMiLC4yNCwtLjUxLC4zMywtMS4xMSwuMjQsLTEuODNdLFsiYyIsLS4yNywtMS45MiwtMS41LC0zLjU0LC0zLjkzLC01LjEzXSxbImMiLC0uNDgsLS4zMywtMS4yNiwtLjc4LC0xLjI5LC0uNzhdLFsiYyIsLS4wMywwLC0xLjM1LDIuMTksLTIuOTEsNC44OV0sWyJsIiwtMi44OCw0Ljg5XSxbImwiLC0uODcsMF0sWyJsIiwtLjg3LDBdLFsibCIsLjAzLC0uMDZdLFsiYyIsLjE1LC0uMjEsNi4xNSwtMTAuNDEsNi4xNSwtMTAuNDRdLFsiYyIsMCwwLC0uMjEsLS4xNSwtLjQ4LC0uM10sWyJjIiwtMi42MSwtMS40NCwtNC4zNSwtMywtNS4xMywtNC42Ml0sWyJjIiwtLjksLTEuODksLS43MiwtNC4wMiwuNDgsLTUuNTJdLFsiYyIsLjY5LC0uODQsMS42OCwtMS40MSwyLjczLC0xLjUzXSxbInoiXSxbIm0iLDguNzYsOS4wOV0sWyJjIiwuMDMsLS4wMywuMTUsLS4wMywuMjcsLS4wM10sWyJjIiwuMzMsLjAzLC41NywuMTgsLjcyLC40OF0sWyJjIiwuMDksLjE4LC4wOSwuNTcsMCwuNzVdLFsiYyIsLS4wOSwuMTgsLS4yMSwuMywtLjM2LC4zOV0sWyJjIiwtLjE1LC4wNiwtLjIxLC4wNiwtLjM5LC4wNl0sWyJjIiwtLjIxLDAsLS4yNywwLC0uMzksLS4wNl0sWyJjIiwtLjMsLS4xNSwtLjQ4LC0uNDUsLS40OCwtLjc1XSxbImMiLDAsLS4zOSwuMjQsLS43MiwuNjMsLS44NF0sWyJ6Il0sWyJtIiwtMTAuNTMsMi42MV0sWyJjIiwuMDMsLS4wMywuMTUsLS4wMywuMjcsLS4wM10sWyJjIiwuMzMsLjAzLC41NywuMTgsLjcyLC40OF0sWyJjIiwuMDksLjE4LC4wOSwuNTcsMCwuNzVdLFsiYyIsLS4wOSwuMTgsLS4yMSwuMywtLjM2LC4zOV0sWyJjIiwtLjE1LC4wNiwtLjIxLC4wNiwtLjM5LC4wNl0sWyJjIiwtLjIxLDAsLS4yNywwLC0uMzksLS4wNl0sWyJjIiwtLjMsLS4xNSwtLjQ4LC0uNDUsLS40OCwtLjc1XSxbImMiLDAsLS4zOSwuMjQsLS43MiwuNjMsLS44NF0sWyJ6Il1dLHc6MTUsaDoyMi41MDR9LCJzY3JpcHRzLmNvZGEiOntkOltbIk0iLC0uMjEsLTEwLjQ3XSxbImMiLC4xOCwtLjEyLC40MiwtLjA2LC41NCwuMTJdLFsiYyIsLjA2LC4wOSwuMDYsLjE4LC4wNiwxLjVdLFsibCIsMCwxLjM4XSxbImwiLC4xOCwwXSxbImMiLC4zOSwuMDYsLjk2LC4yNCwxLjM4LC40OF0sWyJjIiwxLjY4LC45MywyLjgyLDMuMjQsMy4wMyw2LjEyXSxbImMiLC4wMywuMjQsLjAzLC40NSwuMDMsLjQ1XSxbImMiLDAsLjAzLC42LC4wMywxLjM1LC4wM10sWyJjIiwxLjUsMCwxLjQ3LDAsMS41OSwuMThdLFsiYyIsLjA5LC4xMiwuMDksLjMsMCwuNDJdLFsiYyIsLS4xMiwuMTgsLS4wOSwuMTgsLTEuNTksLjE4XSxbImMiLC0uNzUsMCwtMS4zNSwwLC0xLjM1LC4wM10sWyJjIiwwLDAsMCwuMjEsLS4wMywuNDJdLFsiYyIsLS4yNCwzLjE1LC0xLjUzLDUuNTgsLTMuNDUsNi4zNl0sWyJjIiwtLjI3LC4xMiwtLjcyLC4yNCwtLjk2LC4yN10sWyJsIiwtLjE4LDBdLFsibCIsMCwxLjM4XSxbImMiLDAsMS4zMiwwLDEuNDEsLS4wNiwxLjVdLFsiYyIsLS4xNSwuMjQsLS41MSwuMjQsLS42NiwwXSxbImMiLC0uMDYsLS4wOSwtLjA2LC0uMTgsLS4wNiwtMS41XSxbImwiLDAsLTEuMzhdLFsibCIsLS4xOCwwXSxbImMiLC0uMzksLS4wNiwtLjk2LC0uMjQsLTEuMzgsLS40OF0sWyJjIiwtMS42OCwtLjkzLC0yLjgyLC0zLjI0LC0zLjAzLC02LjE1XSxbImMiLC0uMDMsLS4yMSwtLjAzLC0uNDIsLS4wMywtLjQyXSxbImMiLDAsLS4wMywtLjYsLS4wMywtMS4zNSwtLjAzXSxbImMiLC0xLjUsMCwtMS40NywwLC0xLjU5LC0uMThdLFsiYyIsLS4wOSwtLjEyLC0uMDksLS4zLDAsLS40Ml0sWyJjIiwuMTIsLS4xOCwuMDksLS4xOCwxLjU5LC0uMThdLFsiYyIsLjc1LDAsMS4zNSwwLDEuMzUsLS4wM10sWyJjIiwwLDAsMCwtLjIxLC4wMywtLjQ1XSxbImMiLC4yNCwtMy4xMiwxLjUzLC01LjU1LDMuNDUsLTYuMzNdLFsiYyIsLjI3LC0uMTIsLjcyLC0uMjQsLjk2LC0uMjddLFsibCIsLjE4LDBdLFsibCIsMCwtMS4zOF0sWyJjIiwwLC0xLjUzLDAsLTEuNSwuMTgsLTEuNjJdLFsieiJdLFsibSIsLS4xOCw2LjkzXSxbImMiLDAsLTIuOTcsMCwtMy4xNSwtLjA2LC0zLjE1XSxbImMiLC0uMDksMCwtLjUxLC4xNSwtLjY2LC4yMV0sWyJjIiwtLjg3LC41MSwtMS4zOCwxLjYyLC0xLjU2LDMuNTFdLFsiYyIsLS4wNiwuNTQsLS4xMiwxLjU5LC0uMTIsMi4xNl0sWyJsIiwwLC40Ml0sWyJsIiwxLjIsMF0sWyJsIiwxLjIsMF0sWyJsIiwwLC0zLjE1XSxbInoiXSxbIm0iLDEuMTcsLTMuMDZdLFsiYyIsLS4wOSwtLjAzLC0uMjEsLS4wNiwtLjI3LC0uMDldLFsibCIsLS4xMiwwXSxbImwiLDAsMy4xNV0sWyJsIiwwLDMuMTVdLFsibCIsMS4yLDBdLFsibCIsMS4yLDBdLFsibCIsMCwtLjgxXSxbImMiLC0uMDYsLTIuNCwtLjMzLC0zLjY5LC0uOTMsLTQuNTldLFsiYyIsLS4yNywtLjM5LC0uNjYsLS42OSwtMS4wOCwtLjgxXSxbInoiXSxbIm0iLC0xLjE3LDEwLjE0XSxbImwiLDAsLTMuMTVdLFsibCIsLTEuMiwwXSxbImwiLC0xLjIsMF0sWyJsIiwwLC44MV0sWyJjIiwuMDMsLjk2LC4wNiwxLjQ3LC4xNSwyLjEzXSxbImMiLC4yNCwyLjA0LC45NiwzLjEyLDIuMTMsMy4zNl0sWyJsIiwuMTIsMF0sWyJsIiwwLC0zLjE1XSxbInoiXSxbIm0iLDMuMTgsLTIuMzRdLFsibCIsMCwtLjgxXSxbImwiLC0xLjIsMF0sWyJsIiwtMS4yLDBdLFsibCIsMCwzLjE1XSxbImwiLDAsMy4xNV0sWyJsIiwuMTIsMF0sWyJjIiwxLjE3LC0uMjQsMS44OSwtMS4zMiwyLjEzLC0zLjM2XSxbImMiLC4wOSwtLjY2LC4xMiwtMS4xNywuMTUsLTIuMTNdLFsieiJdXSx3OjE2LjAzNSxoOjIxLjA2Mn0sInNjcmlwdHMuY29tbWEiOntkOltbIk0iLDEuMTQsLTQuNjJdLFsiYyIsLjMsLS4xMiwuNjksLS4wMywuOTMsLjE1XSxbImMiLC4xMiwuMTIsLjM2LC40NSwuNTEsLjc4XSxbImMiLC45LDEuNzcsLjU0LDQuMDUsLTEuMDgsNi43NV0sWyJjIiwtLjM2LC42MywtLjg3LDEuMzgsLS45NiwxLjQ0XSxbImMiLC0uMTgsLjEyLC0uNDIsLjA2LC0uNTQsLS4xMl0sWyJjIiwtLjA5LC0uMTgsLS4wOSwtLjMsLjEyLC0uNl0sWyJjIiwuOTYsLTEuNDQsMS40NCwtMi45NywxLjM4LC00LjM1XSxbImMiLC0uMDYsLS45MywtLjMsLTEuNjgsLS43OCwtMi40Nl0sWyJjIiwtLjI3LC0uMzksLS4zMywtLjYzLC0uMjQsLS45Nl0sWyJjIiwuMDksLS4yNywuMzYsLS41NCwuNjYsLS42M10sWyJ6Il1dLHc6My4wNDIsaDo5LjIzN30sInNjcmlwdHMucm9sbCI6e2Q6W1siTSIsMS45NSwtNl0sWyJjIiwuMjEsLS4wOSwuMzYsLS4wOSwuNTcsMF0sWyJjIiwuMzksLjE1LC42MywuMzksMS40NywxLjM1XSxbImMiLC42NiwuNzUsLjc4LC44NywxLjA4LDEuMDVdLFsiYyIsLjc1LC40NSwxLjY1LC40MiwyLjQsLS4wNl0sWyJjIiwuMTIsLS4wOSwuMjcsLS4yNywuNTQsLS42XSxbImMiLC40MiwtLjU0LC41MSwtLjYzLC42OSwtLjYzXSxbImMiLC4wOSwwLC4zLC4xMiwuMzYsLjIxXSxbImMiLC4wOSwuMTIsLjEyLC4zLC4wMywuNDJdLFsiYyIsLS4wNiwuMTIsLTMuMTUsMy45LC0zLjMsNC4wOF0sWyJjIiwtLjA2LC4wNiwtLjE4LC4xMiwtLjI3LC4xOF0sWyJjIiwtLjI3LC4xMiwtLjYsLjA2LC0uOTksLS4yN10sWyJjIiwtLjI3LC0uMjEsLS40MiwtLjM5LC0xLjA4LC0xLjE0XSxbImMiLC0uNjMsLS43MiwtLjgxLC0uOSwtMS4xNywtMS4wOF0sWyJjIiwtLjM2LC0uMTgsLS41NywtLjIxLC0uOTksLS4yMV0sWyJjIiwtLjM5LDAsLS42MywuMDMsLS45MywuMThdLFsiYyIsLS4zNiwuMTUsLS41MSwuMjcsLS45LC44MV0sWyJjIiwtLjI0LC4yNywtLjQ1LC41MSwtLjQ4LC41NF0sWyJjIiwtLjEyLC4wOSwtLjI3LC4wNiwtLjM5LDBdLFsiYyIsLS4yNCwtLjE1LC0uMzMsLS4zOSwtLjIxLC0uNl0sWyJjIiwuMDksLS4xMiwzLjE4LC0zLjg3LDMuMzMsLTQuMDJdLFsiYyIsLjA2LC0uMDYsLjE4LC0uMTUsLjI0LC0uMjFdLFsieiJdXSx3OjEwLjgxNyxoOjYuMTI1fSwic2NyaXB0cy5wcmFsbCI6e2Q6W1siTSIsLTQuMzgsLTMuNjldLFsiYyIsLjA2LC0uMDMsLjE4LC0uMDYsLjI0LC0uMDZdLFsiYyIsLjMsMCwuMjcsLS4wMywxLjg5LDEuOTVdLFsibCIsMS41MywxLjgzXSxbImMiLC4wMywwLC41NywtLjg0LDEuMjMsLTEuODNdLFsiYyIsMS4xNCwtMS42OCwxLjIzLC0xLjgzLDEuMzUsLTEuODldLFsiYyIsLjA2LC0uMDMsLjE4LC0uMDYsLjI0LC0uMDZdLFsiYyIsLjMsMCwuMjcsLS4wMywxLjg5LDEuOTVdLFsibCIsMS41MywxLjgzXSxbImwiLC40OCwtLjY5XSxbImMiLC41MSwtLjc4LC41NCwtLjg0LC42OSwtLjldLFsiYyIsLjQyLC0uMTgsLjg3LC4xNSwuODEsLjZdLFsiYyIsLS4wMywuMTIsLS4zLC41MSwtMS41LDIuMzddLFsiYyIsLTEuMzgsMi4wNywtMS41LDIuMjIsLTEuNjIsMi4yOF0sWyJjIiwtLjA2LC4wMywtLjE4LC4wNiwtLjI0LC4wNl0sWyJjIiwtLjMsMCwtLjI3LC4wMywtMS44OSwtMS45NV0sWyJsIiwtMS41MywtMS44M10sWyJjIiwtLjAzLDAsLS41NywuODQsLTEuMjMsMS44M10sWyJjIiwtMS4xNCwxLjY4LC0xLjIzLDEuODMsLTEuMzUsMS44OV0sWyJjIiwtLjA2LC4wMywtLjE4LC4wNiwtLjI0LC4wNl0sWyJjIiwtLjMsMCwtLjI3LC4wMywtMS44OSwtMS45NV0sWyJsIiwtMS41MywtMS44M10sWyJsIiwtLjQ4LC42OV0sWyJjIiwtLjUxLC43OCwtLjU0LC44NCwtLjY5LC45XSxbImMiLC0uNDIsLjE4LC0uODcsLS4xNSwtLjgxLC0uNl0sWyJjIiwuMDMsLS4xMiwuMywtLjUxLDEuNSwtMi4zN10sWyJjIiwxLjM4LC0yLjA3LDEuNSwtMi4yMiwxLjYyLC0yLjI4XSxbInoiXV0sdzoxNS4wMTEsaDo3LjV9LCJzY3JpcHRzLmFycGVnZ2lvIjp7ZDpbWyJNIiwxLjUsMF0sWyJjIiwxLjUsMiwxLjUsMywxLjUsM10sWyJzIiwwLDEsLTIsMS41XSxbInMiLC0uNSwzLDEsNS41XSxbImwiLDEuNSwwXSxbInMiLC0xLjc1LC0yLC0xLjksLTMuMjVdLFsicyIsMi4xNSwtLjYsMi45NSwtMS42XSxbInMiLC40NSwtMSwuNSwtMS4yNV0sWyJzIiwwLC0xLC0yLC0zLjldLFsibCIsLTEuNSwwXSxbInoiXV0sdzo1LGg6MTB9LCJzY3JpcHRzLm1vcmRlbnQiOntkOltbIk0iLC0uMjEsLTQuOTVdLFsiYyIsLjI3LC0uMTUsLjYzLDAsLjc1LC4yN10sWyJjIiwuMDYsLjEyLC4wNiwuMjQsLjA2LDEuNDRdLFsibCIsMCwxLjI5XSxbImwiLC41NywtLjg0XSxbImMiLC41MSwtLjc1LC41NywtLjg0LC42OSwtLjldLFsiYyIsLjA2LC0uMDMsLjE4LC0uMDYsLjI0LC0uMDZdLFsiYyIsLjMsMCwuMjcsLS4wMywxLjg5LDEuOTVdLFsibCIsMS41MywxLjgzXSxbImwiLC40OCwtLjY5XSxbImMiLC41MSwtLjc4LC41NCwtLjg0LC42OSwtLjldLFsiYyIsLjQyLC0uMTgsLjg3LC4xNSwuODEsLjZdLFsiYyIsLS4wMywuMTIsLS4zLC41MSwtMS41LDIuMzddLFsiYyIsLTEuMzgsMi4wNywtMS41LDIuMjIsLTEuNjIsMi4yOF0sWyJjIiwtLjA2LC4wMywtLjE4LC4wNiwtLjI0LC4wNl0sWyJjIiwtLjMsMCwtLjI3LC4wMywtMS44MywtMS44OV0sWyJjIiwtLjgxLC0uOTksLTEuNSwtMS44LC0xLjUzLC0xLjg2XSxbImMiLC0uMDYsLS4wMywtLjA2LC0uMDMsLS4xMiwuMDNdLFsiYyIsLS4wNiwuMDYsLS4wNiwuMTUsLS4wNiwyLjI4XSxbImMiLDAsMS45NSwwLDIuMjUsLS4wNiwyLjM0XSxbImMiLC0uMTgsLjQ1LC0uODEsLjQ4LC0xLjA1LC4wM10sWyJjIiwtLjAzLC0uMDYsLS4wNiwtLjI0LC0uMDYsLTEuNDFdLFsibCIsMCwtMS4zNV0sWyJsIiwtLjU3LC44NF0sWyJjIiwtLjU0LC43OCwtLjYsLjg3LC0uNzIsLjkzXSxbImMiLC0uMDYsLjAzLC0uMTgsLjA2LC0uMjQsLjA2XSxbImMiLC0uMywwLC0uMjcsLjAzLC0xLjg5LC0xLjk1XSxbImwiLC0xLjUzLC0xLjgzXSxbImwiLC0uNDgsLjY5XSxbImMiLC0uNTEsLjc4LC0uNTQsLjg0LC0uNjksLjldLFsiYyIsLS40MiwuMTgsLS44NywtLjE1LC0uODEsLS42XSxbImMiLC4wMywtLjEyLC4zLC0uNTEsMS41LC0yLjM3XSxbImMiLDEuMzgsLTIuMDcsMS41LC0yLjIyLDEuNjIsLTIuMjhdLFsiYyIsLjA2LC0uMDMsLjE4LC0uMDYsLjI0LC0uMDZdLFsiYyIsLjMsMCwuMjcsLS4wMywxLjg5LDEuOTVdLFsibCIsMS41MywxLjgzXSxbImMiLC4wMywwLC4wNiwtLjA2LC4wOSwtLjA5XSxbImMiLC4wNiwtLjEyLC4wNiwtLjE1LC4wNiwtMi4yOF0sWyJjIiwwLC0xLjkyLDAsLTIuMjIsLjA2LC0yLjMxXSxbImMiLC4wNiwtLjE1LC4xNSwtLjI0LC4zLC0uM10sWyJ6Il1dLHc6MTUuMDExLGg6MTAuMDEyfSwiZmxhZ3MudTh0aCI6e2Q6W1siTSIsLS40MiwzLjc1XSxbImwiLDAsLTMuNzVdLFsibCIsLjIxLDBdLFsibCIsLjIxLDBdLFsibCIsMCwuMThdLFsiYyIsMCwuMywuMDYsLjg0LC4xMiwxLjIzXSxbImMiLC4yNCwxLjUzLC45LDMuMTIsMi4xMyw1LjE2XSxbImwiLC45OSwxLjU5XSxbImMiLC44NywxLjQ0LDEuMzgsMi4zNCwxLjc3LDMuMDldLFsiYyIsLjgxLDEuNjgsMS4yLDMuMDYsMS4yNiw0LjUzXSxbImMiLC4wMywxLjUzLC0uMjEsMy4yNywtLjc1LDUuMDFdLFsiYyIsLS4yMSwuNjksLS41MSwxLjUsLS42LDEuNTldLFsiYyIsLS4wOSwuMTIsLS4yNywuMjEsLS40MiwuMjFdLFsiYyIsLS4xNSwwLC0uNDIsLS4xMiwtLjUxLC0uMjFdLFsiYyIsLS4xNSwtLjE4LC0uMTgsLS40MiwtLjA5LC0uNjZdLFsiYyIsLjE1LC0uMzMsLjQ1LC0xLjIsLjU3LC0xLjYyXSxbImMiLC40MiwtMS4zOCwuNiwtMi41OCwuNiwtMy45XSxbImMiLDAsLS42NiwwLC0uODEsLS4wNiwtMS4xMV0sWyJjIiwtLjM5LC0yLjA3LC0xLjgsLTQuMjYsLTQuNTksLTcuMTRdLFsibCIsLS40MiwtLjQ1XSxbImwiLC0uMjEsMF0sWyJsIiwtLjIxLDBdLFsibCIsMCwtMy43NV0sWyJ6Il1dLHc6Ni42OTIsaDoyMi41OX0sImZsYWdzLnUxNnRoIjp7ZDpbWyJNIiwtLjQyLDcuNV0sWyJsIiwwLC03LjVdLFsibCIsLjIxLDBdLFsibCIsLjIxLDBdLFsibCIsMCwuMzldLFsiYyIsLjA2LDEuMDgsLjM5LDIuMTksLjk5LDMuMzldLFsiYyIsLjQ1LC45LC44NywxLjU5LDEuOTUsMy4xMl0sWyJjIiwxLjI5LDEuODYsMS43NywyLjY0LDIuMjIsMy41N10sWyJjIiwuNDUsLjkzLC43MiwxLjgsLjg3LDIuNjRdLFsiYyIsLjA2LC41MSwuMDYsMS41LDAsMS45Ml0sWyJjIiwtLjEyLC42LC0uMywxLjIsLS41NCwxLjcxXSxbImwiLC0uMDksLjI0XSxbImwiLC4xOCwuNDVdLFsiYyIsLjUxLDEuMiwuNzIsMi4yMiwuNjksMy40Ml0sWyJjIiwtLjA2LDEuNTMsLS4zOSwzLjAzLC0uOTksNC41M10sWyJjIiwtLjMsLjc1LC0uMzYsLjgxLC0uNTcsLjldLFsiYyIsLS4xNSwuMDksLS4zMywuMDYsLS40OCwwXSxbImMiLC0uMTgsLS4wOSwtLjI3LC0uMTgsLS4zMywtLjMzXSxbImMiLC0uMDksLS4xOCwtLjA2LC0uMywuMTIsLS43NV0sWyJjIiwuNjYsLTEuNDEsMS4wMiwtMi44OCwxLjA4LC00LjMyXSxbImMiLDAsLS42LC0uMDMsLTEuMDUsLS4xOCwtMS41OV0sWyJjIiwtLjMsLTEuMiwtLjk5LC0yLjQsLTIuMjUsLTMuODddLFsiYyIsLS40MiwtLjQ4LC0xLjUzLC0xLjYyLC0yLjE5LC0yLjIyXSxbImwiLC0uNDUsLS40Ml0sWyJsIiwtLjAzLDEuMTFdLFsibCIsMCwxLjExXSxbImwiLC0uMjEsMF0sWyJsIiwtLjIxLDBdLFsibCIsMCwtNy41XSxbInoiXSxbIm0iLDEuNjUsLjA5XSxbImMiLC0uMywtLjMsLS42OSwtLjcyLC0uOSwtLjg3XSxbImwiLC0uMzMsLS4zM10sWyJsIiwwLC4xNV0sWyJjIiwwLC4zLC4wNiwuODEsLjE1LDEuMjZdLFsiYyIsLjI3LDEuMjksLjg3LDIuNjEsMi4wNCw0LjI5XSxbImMiLC4xNSwuMjQsLjYsLjg3LC45NiwxLjM4XSxbImwiLDEuMDgsMS41M10sWyJsIiwuNDIsLjYzXSxbImMiLC4wMywwLC4xMiwtLjM2LC4yMSwtLjcyXSxbImMiLC4wNiwtLjMzLC4wNiwtMS4yLDAsLTEuNjJdLFsiYyIsLS4zMywtMS43MSwtMS40NCwtMy40OCwtMy42MywtNS43XSxbInoiXV0sdzo2LjY5MyxoOjI2LjMzN30sImZsYWdzLnUzMm5kIjp7ZDpbWyJNIiwtLjQyLDExLjI1XSxbImwiLDAsLTExLjI1XSxbImwiLC4yMSwwXSxbImwiLC4yMSwwXSxbImwiLDAsLjM2XSxbImMiLC4wOSwxLjY4LC42OSwzLjI3LDIuMDcsNS40Nl0sWyJsIiwuODcsMS4zNV0sWyJjIiwxLjAyLDEuNjIsMS40NywyLjM3LDEuODYsMy4xOF0sWyJjIiwuNDgsMS4wMiwuNzgsMS45MiwuOTMsMi44OF0sWyJjIiwuMDYsLjQ4LC4wNiwxLjUsMCwxLjg5XSxbImMiLC0uMDksLjQyLC0uMjEsLjg3LC0uMzYsMS4yNl0sWyJsIiwtLjEyLC4zXSxbImwiLC4xNSwuMzldLFsiYyIsLjY5LDEuNTYsLjg0LDIuODgsLjU0LDQuMzhdLFsiYyIsLS4wOSwuNDUsLS4yNywxLjA4LC0uNDUsMS40N10sWyJsIiwtLjEyLC4yNF0sWyJsIiwuMTgsLjM2XSxbImMiLC4zMywuNzIsLjU3LDEuNTYsLjY5LDIuMzRdLFsiYyIsLjEyLDEuMDIsLS4wNiwyLjUyLC0uNDIsMy44NF0sWyJjIiwtLjI3LC45MywtLjc1LDIuMTMsLS45MywyLjMxXSxbImMiLC0uMTgsLjE1LC0uNDUsLjE4LC0uNjYsLjA5XSxbImMiLC0uMTgsLS4wOSwtLjI3LC0uMTgsLS4zMywtLjMzXSxbImMiLC0uMDksLS4xOCwtLjA2LC0uMywuMDYsLS42XSxbImMiLC4yMSwtLjM2LC40MiwtLjksLjU3LC0xLjM4XSxbImMiLC41MSwtMS40MSwuNjksLTMuMDYsLjQ4LC00LjA4XSxbImMiLC0uMTUsLS44MSwtLjU3LC0xLjY4LC0xLjIsLTIuNTVdLFsiYyIsLS43MiwtLjk5LC0xLjgzLC0yLjEzLC0zLjMsLTMuMzNdLFsibCIsLS40OCwtLjQyXSxbImwiLC0uMDMsMS41M10sWyJsIiwwLDEuNTZdLFsibCIsLS4yMSwwXSxbImwiLC0uMjEsMF0sWyJsIiwwLC0xMS4yNV0sWyJ6Il0sWyJtIiwxLjI2LC0zLjk2XSxbImMiLC0uMjcsLS4zLC0uNTQsLS42LC0uNjYsLS43Ml0sWyJsIiwtLjE4LC0uMjFdLFsibCIsMCwuNDJdLFsiYyIsLjA2LC44NywuMjQsMS43NCwuNjYsMi42N10sWyJjIiwuMzYsLjg3LC45NiwxLjg2LDEuOTIsMy4xOF0sWyJjIiwuMjEsLjMzLC42MywuODcsLjg3LDEuMjNdLFsiYyIsLjI3LC4zOSwuNiwuODQsLjc1LDEuMDhdLFsibCIsLjI3LC4zOV0sWyJsIiwuMDMsLS4xMl0sWyJjIiwuMTIsLS40NSwuMTUsLTEuMDUsLjA5LC0xLjU5XSxbImMiLC0uMjcsLTEuODYsLTEuMzgsLTMuNzgsLTMuNzUsLTYuMzNdLFsieiJdLFsibSIsLS4yNyw2LjA5XSxbImMiLC0uMjcsLS4yMSwtLjQ4LC0uNDIsLS41MSwtLjQ1XSxbImMiLC0uMDYsLS4wMywtLjA2LC0uMDMsLS4wNiwuMjFdLFsiYyIsMCwuOSwuMywyLjA0LC44MSwzLjA5XSxbImMiLC40OCwxLjAyLC45NiwxLjc3LDIuMzcsMy42M10sWyJjIiwuNiwuNzgsMS4wNSwxLjQ0LDEuMjksMS43N10sWyJjIiwuMDYsLjEyLC4xNSwuMjEsLjE1LC4xOF0sWyJjIiwuMDMsLS4wMywuMTgsLS41NywuMjQsLS44N10sWyJjIiwuMDYsLS40NSwuMDYsLTEuMzIsLS4wMywtMS43NF0sWyJjIiwtLjA5LC0uNDgsLS4yNCwtLjksLS41MSwtMS40NF0sWyJjIiwtLjY2LC0xLjM1LC0xLjgzLC0yLjcsLTMuNzUsLTQuMzhdLFsieiJdXSx3OjYuNjk3LGg6MzIuMTQ1fSwiZmxhZ3MudTY0dGgiOntkOltbIk0iLC0uNDIsMTVdLFsibCIsMCwtMTVdLFsibCIsLjIxLDBdLFsibCIsLjIxLDBdLFsibCIsMCwuMzZdLFsiYyIsLjA2LDEuMiwuMzksMi4zNywxLjAyLDMuNjZdLFsiYyIsLjM5LC44MSwuODQsMS41NiwxLjgsMy4wOV0sWyJjIiwuODEsMS4yNiwxLjA1LDEuNjgsMS4zNSwyLjIyXSxbImMiLC44NywxLjUsMS4zNSwyLjc5LDEuNTYsNC4wOF0sWyJjIiwuMDYsLjU0LC4wNiwxLjU2LC0uMDMsMi4wNF0sWyJjIiwtLjA5LC40OCwtLjIxLC45OSwtLjM2LDEuMzVdLFsibCIsLS4xMiwuMjddLFsibCIsLjEyLC4yN10sWyJjIiwuMDksLjE1LC4yMSwuNDUsLjI3LC42Nl0sWyJjIiwuNjksMS44OSwuNjMsMy42NiwtLjE4LDUuNDZdLFsibCIsLS4xOCwuMzldLFsibCIsLjE1LC4zM10sWyJjIiwuMywuNjYsLjUxLDEuNDQsLjYzLDIuMV0sWyJjIiwuMDYsLjQ4LC4wNiwxLjM1LDAsMS43MV0sWyJjIiwtLjE1LC41NywtLjQyLDEuMiwtLjc4LDEuNjhdLFsibCIsLS4yMSwuMjddLFsibCIsLjE4LC4zM10sWyJjIiwuNTcsMS4wNSwuOTMsMi4xMywxLjAyLDMuMThdLFsiYyIsLjA2LC43MiwwLDEuODMsLS4yMSwyLjc5XSxbImMiLC0uMTgsMS4wMiwtLjYzLDIuMzQsLTEuMDIsMy4wOV0sWyJjIiwtLjE1LC4zMywtLjQ4LC40NSwtLjc4LC4zXSxbImMiLC0uMTgsLS4wOSwtLjI3LC0uMTgsLS4zMywtLjMzXSxbImMiLC0uMDksLS4xOCwtLjA2LC0uMywuMDMsLS41NF0sWyJjIiwuNzUsLTEuNSwxLjIzLC0zLjQ1LDEuMTcsLTQuODldLFsiYyIsLS4wNiwtMS4wMiwtLjQyLC0yLjAxLC0xLjE3LC0zLjE1XSxbImMiLC0uNDgsLS43MiwtMS4wMiwtMS4zNSwtMS44OSwtMi4yMl0sWyJjIiwtLjU3LC0uNTcsLTEuNTYsLTEuNSwtMS45MiwtMS43N10sWyJsIiwtLjEyLC0uMDldLFsibCIsMCwxLjY4XSxbImwiLDAsMS42OF0sWyJsIiwtLjIxLDBdLFsibCIsLS4yMSwwXSxbImwiLDAsLTE1XSxbInoiXSxbIm0iLC45MywtOC4wN10sWyJjIiwtLjI3LC0uMywtLjQ4LC0uNTQsLS41MSwtLjU0XSxbImMiLDAsMCwwLC42OSwuMDMsMS4wMl0sWyJjIiwuMTUsMS40NywuNzUsMi45NCwyLjA0LDQuODNdLFsibCIsMS4wOCwxLjUzXSxbImMiLC4zOSwuNTcsLjg0LDEuMiwuOTksMS40NF0sWyJjIiwuMTUsLjI0LC4zLC40NSwuMywuNDVdLFsiYyIsMCwwLC4wMywtLjA5LC4wNiwtLjIxXSxbImMiLC4zNiwtMS41OSwtLjE1LC0zLjMzLC0xLjQ3LC01LjRdLFsiYyIsLS42MywtLjkzLC0xLjM1LC0xLjgzLC0yLjUyLC0zLjEyXSxbInoiXSxbIm0iLC4wNiw2LjcyXSxbImMiLC0uMjQsLS4yMSwtLjQ4LC0uNDIsLS41MSwtLjQ1XSxbImwiLC0uMDYsLS4wNl0sWyJsIiwwLC4zM10sWyJjIiwwLDEuMiwuMywyLjM0LC45MywzLjZdLFsiYyIsLjQ1LC45LC45NiwxLjY4LDIuMjUsMy41MV0sWyJjIiwuMzksLjU0LC44NCwxLjE3LDEuMDIsMS40NF0sWyJjIiwuMjEsLjMzLC4zMywuNTEsLjMzLC40OF0sWyJjIiwuMDYsLS4wOSwuMjEsLS42MywuMywtLjk5XSxbImMiLC4wNiwtLjMzLC4wNiwtLjQ1LC4wNiwtLjk2XSxbImMiLDAsLS42LC0uMDMsLS44NCwtLjE4LC0xLjM1XSxbImMiLC0uMywtMS4wOCwtMS4wMiwtMi4yOCwtMi4xMywtMy41N10sWyJjIiwtLjM5LC0uNDUsLTEuNDQsLTEuNDcsLTIuMDEsLTEuOThdLFsieiJdLFsibSIsMCw2LjcyXSxbImMiLC0uMjQsLS4yMSwtLjQ4LC0uMzksLS41MSwtLjQyXSxbImwiLC0uMDYsLS4wNl0sWyJsIiwwLC4zM10sWyJjIiwwLDEuNDEsLjQ1LDIuODIsMS4zOCw0LjM1XSxbImMiLC40MiwuNzIsLjcyLDEuMTQsMS44NiwyLjczXSxbImMiLC4zNiwuNDUsLjc1LC45OSwuODcsMS4yXSxbImMiLC4xNSwuMjEsLjMsLjM2LC4zLC4zNl0sWyJjIiwuMDYsMCwuMywtLjQ4LC4zOSwtLjc1XSxbImMiLC4wOSwtLjM2LC4xMiwtLjYzLC4xMiwtMS4wNV0sWyJjIiwtLjA2LC0xLjA1LC0uNDUsLTIuMDQsLTEuMiwtMy4xOF0sWyJjIiwtLjU3LC0uODcsLTEuMTEsLTEuNTMsLTIuMDcsLTIuNDldLFsiYyIsLS4zNiwtLjMzLC0uODQsLS43OCwtMS4wOCwtMS4wMl0sWyJ6Il1dLHc6Ni42ODIsaDozOS42OTR9LCJmbGFncy5kOHRoIjp7ZDpbWyJNIiw1LjY3LC0yMS42M10sWyJjIiwuMjQsLS4xMiwuNTQsLS4wNiwuNjksLjE1XSxbImMiLC4wNiwuMDYsLjIxLC4zNiwuMzksLjY2XSxbImMiLC44NCwxLjc3LDEuMjYsMy4zNiwxLjMyLDUuMV0sWyJjIiwuMDMsMS4yOSwtLjIxLDIuMzcsLS44MSwzLjYzXSxbImMiLC0uNiwxLjIzLC0xLjI2LDIuMTMsLTMuMjEsNC4zOF0sWyJjIiwtMS4zNSwxLjUzLC0xLjg2LDIuMTksLTIuNCwyLjk3XSxbImMiLC0uNjMsLjkzLC0xLjExLDEuOTIsLTEuMzgsMi43OV0sWyJjIiwtLjE1LC41NCwtLjI3LDEuMzUsLS4yNywxLjhdLFsibCIsMCwuMTVdLFsibCIsLS4yMSwwXSxbImwiLC0uMjEsMF0sWyJsIiwwLC0zLjc1XSxbImwiLDAsLTMuNzVdLFsibCIsLjIxLDBdLFsibCIsLjIxLDBdLFsibCIsLjQ4LC0uM10sWyJjIiwxLjgzLC0xLjExLDMuMTIsLTIuMSw0LjE3LC0zLjEyXSxbImMiLC43OCwtLjgxLDEuMzIsLTEuNTMsMS43MSwtMi4zMV0sWyJjIiwuNDUsLS45MywuNiwtMS43NCwuNTEsLTIuODhdLFsiYyIsLS4xMiwtMS41NiwtLjYzLC0zLjE4LC0xLjQ3LC00LjY4XSxbImMiLC0uMTIsLS4yMSwtLjE1LC0uMzMsLS4wNiwtLjUxXSxbImMiLC4wNiwtLjE1LC4xNSwtLjI0LC4zMywtLjMzXSxbInoiXV0sdzo4LjQ5MixoOjIxLjY5MX0sImZsYWdzLnVncmFjZSI6e2Q6W1siTSIsNi4wMyw2LjkzXSxbImMiLC4xNSwtLjA5LC4zMywtLjA2LC41MSwwXSxbImMiLC4xNSwuMDksLjIxLC4xNSwuMywuMzNdLFsiYyIsLjA5LC4xOCwuMDYsLjM5LC0uMDMsLjU0XSxbImMiLC0uMDYsLjE1LC0xMC44OSw4Ljg4LC0xMS4wNyw4Ljk3XSxbImMiLC0uMTUsLjA5LC0uMzMsLjA2LC0uNDgsMF0sWyJjIiwtLjE4LC0uMDksLS4yNCwtLjE1LC0uMzMsLS4zM10sWyJjIiwtLjA5LC0uMTgsLS4wNiwtLjM5LC4wMywtLjU0XSxbImMiLC4wNiwtLjE1LDEwLjg5LC04Ljg4LDExLjA3LC04Ljk3XSxbInoiXV0sdzoxMi4wMTksaDo5Ljk1NH0sImZsYWdzLmRncmFjZSI6e2Q6W1siTSIsLTYuMDYsLTE1LjkzXSxbImMiLC4xOCwtLjA5LC4zMywtLjEyLC40OCwtLjA2XSxbImMiLC4xOCwuMDksMTQuMDEsOC4wNCwxNC4xLDguMV0sWyJjIiwuMTIsLjEyLC4xOCwuMzMsLjE4LC41MV0sWyJjIiwtLjAzLC4yMSwtLjE1LC4zOSwtLjM2LC40OF0sWyJjIiwtLjE4LC4wOSwtLjMzLC4xMiwtLjQ4LC4wNl0sWyJjIiwtLjE4LC0uMDksLTE0LjAxLC04LjA0LC0xNC4xLC04LjFdLFsiYyIsLS4xMiwtLjEyLC0uMTgsLS4zMywtLjE4LC0uNTFdLFsiYyIsLjAzLC0uMjEsLjE1LC0uMzksLjM2LC0uNDhdLFsieiJdXSx3OjE1LjEyLGg6OS4yMTJ9LCJmbGFncy5kMTZ0aCI6e2Q6W1siTSIsNi44NCwtMjIuNTNdLFsiYyIsLjI3LC0uMTIsLjU3LC0uMDYsLjcyLC4xNV0sWyJjIiwuMTUsLjE1LC4zMywuODcsLjQ1LDEuNTZdLFsiYyIsLjA2LC4zMywuMDYsMS4zNSwwLDEuNjVdLFsiYyIsLS4wNiwuMzMsLS4xNSwuNzgsLS4yNywxLjExXSxbImMiLC0uMTIsLjMzLC0uNDUsLjk2LC0uNjYsMS4zMl0sWyJsIiwtLjE4LC4yN10sWyJsIiwuMDksLjE4XSxbImMiLC40OCwxLjAyLC43MiwyLjI1LC42OSwzLjNdLFsiYyIsLS4wNiwxLjIzLC0uNDIsMi4yOCwtMS4yNiwzLjQ1XSxbImMiLC0uNTcsLjg3LC0uOTksMS4zMiwtMywzLjM5XSxbImMiLC0xLjU2LDEuNTYsLTIuMjIsMi40LC0yLjc2LDMuNDVdLFsiYyIsLS40MiwuODQsLS42NiwxLjgsLS42NiwyLjU1XSxbImwiLDAsLjE1XSxbImwiLC0uMjEsMF0sWyJsIiwtLjIxLDBdLFsibCIsMCwtNy41XSxbImwiLDAsLTcuNV0sWyJsIiwuMjEsMF0sWyJsIiwuMjEsMF0sWyJsIiwwLDEuMTRdLFsibCIsMCwxLjExXSxbImwiLC4yNywtLjE1XSxbImMiLDEuMTEsLS41NywxLjc3LC0uOTksMi41MiwtMS40N10sWyJjIiwyLjM3LC0xLjU2LDMuNjksLTMuMTUsNC4wNSwtNC44M10sWyJjIiwuMDMsLS4xOCwuMDMsLS4zOSwuMDMsLS43OF0sWyJjIiwwLC0uNiwtLjAzLC0uOTMsLS4yNCwtMS41XSxbImMiLC0uMDYsLS4xOCwtLjEyLC0uMzksLS4xNSwtLjQ1XSxbImMiLC0uMDMsLS4yNCwuMTIsLS40OCwuMzYsLS42XSxbInoiXSxbIm0iLC0uNjMsNy41XSxbImMiLC0uMDYsLS4xOCwtLjE1LC0uMzYsLS4xNSwtLjM2XSxbImMiLC0uMDMsMCwtLjAzLC4wMywtLjA2LC4wNl0sWyJjIiwtLjA2LC4xMiwtLjk2LDEuMDIsLTEuOTUsMS45OF0sWyJjIiwtLjYzLC41NywtMS4yNiwxLjE3LC0xLjQ0LDEuMzVdLFsiYyIsLTEuNTMsMS42MiwtMi4yOCwyLjg1LC0yLjU1LDQuMzJdLFsiYyIsLS4wMywuMTgsLS4wMywuNTQsLS4wNiwuOTldLFsibCIsMCwuNjldLFsibCIsLjE4LC0uMDldLFsiYyIsLjkzLC0uNTQsMi4xLC0xLjI5LDIuODIsLTEuODNdLFsiYyIsLjY5LC0uNTEsMS4wMiwtLjgxLDEuNTMsLTEuMjldLFsiYyIsMS44NiwtMS44OSwyLjM3LC0zLjY2LDEuNjgsLTUuODJdLFsieiJdXSx3OjguNDc1LGg6MjIuNTkxfSwiZmxhZ3MuZDMybmQiOntkOltbIk0iLDYuODQsLTI5LjEzXSxbImMiLC4yNywtLjEyLC41NywtLjA2LC43MiwuMTVdLFsiYyIsLjEyLC4xMiwuMjcsLjYzLC4zNiwxLjExXSxbImMiLC4zMywxLjU5LC4wNiwzLjA2LC0uODEsNC40N10sWyJsIiwtLjE4LC4yN10sWyJsIiwuMDksLjE1XSxbImMiLC4xMiwuMjQsLjMzLC42OSwuNDUsMS4wNV0sWyJjIiwuNjMsMS44MywuNDUsMy41NywtLjU3LDUuMjJdLFsibCIsLS4xOCwuM10sWyJsIiwuMTUsLjI3XSxbImMiLC40MiwuODcsLjYsMS43MSwuNTcsMi42MV0sWyJjIiwtLjA2LDEuMjksLS40OCwyLjQ2LC0xLjM1LDMuNzhdLFsiYyIsLS41NCwuODEsLS45MywxLjI5LC0yLjQ2LDNdLFsiYyIsLS41MSwuNTQsLTEuMDUsMS4xNywtMS4yNiwxLjQxXSxbImMiLC0xLjU2LDEuODYsLTIuMjUsMy4zNiwtMi4zNyw1LjAxXSxbImwiLDAsLjMzXSxbImwiLC0uMjEsMF0sWyJsIiwtLjIxLDBdLFsibCIsMCwtMTEuMjVdLFsibCIsMCwtMTEuMjVdLFsibCIsLjIxLDBdLFsibCIsLjIxLDBdLFsibCIsMCwxLjM1XSxbImwiLC4wMywxLjM1XSxbImwiLC43OCwtLjM5XSxbImMiLDEuMzgsLS42OSwyLjM0LC0xLjI2LDMuMjQsLTEuOTJdLFsiYyIsMS4zOCwtMS4wMiwyLjI4LC0yLjEzLDIuNjQsLTMuMjFdLFsiYyIsLjE1LC0uNDgsLjE4LC0uNzIsLjE4LC0xLjI5XSxbImMiLDAsLS41NywtLjA2LC0uOSwtLjI0LC0xLjQ3XSxbImMiLC0uMDYsLS4xOCwtLjEyLC0uMzksLS4xNSwtLjQ1XSxbImMiLC0uMDMsLS4yNCwuMTIsLS40OCwuMzYsLS42XSxbInoiXSxbIm0iLC0uNjMsNy4yXSxbImMiLC0uMDksLS4xOCwtLjEyLC0uMjEsLS4xMiwtLjE1XSxbImMiLC0uMDMsLjA5LC0xLjAyLDEuMDgsLTIuMDQsMi4wNF0sWyJjIiwtMS4xNywxLjA4LC0xLjY1LDEuNTYsLTIuMDcsMi4wNF0sWyJjIiwtLjg0LC45NiwtMS4zOCwxLjg2LC0xLjY4LDIuNzZdLFsiYyIsLS4yMSwuNTcsLS4yNywuOTksLS4zLDEuNjVdLFsibCIsMCwuNTRdLFsibCIsLjY2LC0uMzNdLFsiYyIsMy41NywtMS44Niw1LjQ5LC0zLjY5LDUuOTQsLTUuN10sWyJjIiwuMDYsLS4zOSwuMDYsLTEuMiwtLjAzLC0xLjY1XSxbImMiLC0uMDYsLS4zOSwtLjI0LC0uOSwtLjM2LC0xLjJdLFsieiJdLFsibSIsLS4wNiw3LjJdLFsiYyIsLS4wNiwtLjE1LC0uMTIsLS4zMywtLjE1LC0uNDVdLFsibCIsLS4wNiwtLjE4XSxbImwiLC0uMTgsLjIxXSxbImwiLC0xLjgzLDEuODNdLFsiYyIsLS44NywuOSwtMS43NywxLjgsLTEuOTUsMi4wMV0sWyJjIiwtMS4wOCwxLjI5LC0xLjYyLDIuMzEsLTEuODksMy41MV0sWyJjIiwtLjA2LC4zLC0uMDYsLjUxLC0uMDksLjkzXSxbImwiLDAsLjU3XSxbImwiLC4wOSwtLjA2XSxbImMiLC43NSwtLjQ1LDEuODksLTEuMjYsMi41MiwtMS43NF0sWyJjIiwuODEsLS42NiwxLjc0LC0xLjUzLDIuMjIsLTIuMTZdLFsiYyIsMS4yNiwtMS41MywxLjY4LC0zLjA2LDEuMzIsLTQuNDddLFsieiJdXSx3OjguMzg1LGg6MjkuMTkxfSwiZmxhZ3MuZDY0dGgiOntkOltbIk0iLDcuMDgsLTMyLjg4XSxbImMiLC4zLC0uMTIsLjY2LC0uMDMsLjc4LC4yNF0sWyJjIiwuMTgsLjMzLC4yNywyLjEsLjE1LDIuNjRdLFsiYyIsLS4wOSwuMzksLS4yMSwuNzgsLS4zOSwxLjA4XSxbImwiLC0uMTUsLjNdLFsibCIsLjA5LC4yN10sWyJjIiwuMDMsLjEyLC4wOSwuNDUsLjEyLC42OV0sWyJjIiwuMjcsMS40NCwuMTgsMi41NSwtLjMsMy42XSxbImwiLC0uMTIsLjMzXSxbImwiLC4wNiwuNDJdLFsiYyIsLjI3LDEuMzUsLjMzLDIuODIsLjIxLDMuNjNdLFsiYyIsLS4xMiwuNiwtLjMsMS4yMywtLjU3LDEuOF0sWyJsIiwtLjE1LC4yN10sWyJsIiwuMDMsLjQyXSxbImMiLC4wNiwxLjAyLC4wNiwyLjcsLjAzLDMuMDZdLFsiYyIsLS4xNSwxLjQ3LC0uNjYsMi43NiwtMS43NCw0LjQxXSxbImMiLC0uNDUsLjY5LC0uNzUsMS4xMSwtMS43NCwyLjM3XSxbImMiLC0xLjA1LDEuMzgsLTEuNSwxLjk4LC0xLjk1LDIuNzNdLFsiYyIsLS45MywxLjUsLTEuMzgsMi44MiwtMS40NCw0LjJdLFsibCIsMCwuNDJdLFsibCIsLS4yMSwwXSxbImwiLC0uMjEsMF0sWyJsIiwwLC0xNV0sWyJsIiwwLC0xNV0sWyJsIiwuMjEsMF0sWyJsIiwuMjEsMF0sWyJsIiwwLDEuODZdLFsibCIsMCwxLjg5XSxbImMiLDAsMCwuMjEsLS4wMywuNDUsLS4wOV0sWyJjIiwyLjIyLC0uMzksNC4wOCwtMS4xMSw1LjE5LC0yLjAxXSxbImMiLC42MywtLjU0LDEuMDIsLTEuMTQsMS4yLC0xLjhdLFsiYyIsLjA2LC0uMywuMDYsLTEuMTQsLS4wMywtMS42NV0sWyJjIiwtLjAzLC0uMTgsLS4wNiwtLjM5LC0uMDksLS40OF0sWyJjIiwtLjAzLC0uMjQsLjEyLC0uNDgsLjM2LC0uNl0sWyJ6Il0sWyJtIiwtLjQ1LDYuMTVdLFsiYyIsLS4wMywtLjE4LC0uMDYsLS40MiwtLjA2LC0uNTRdLFsibCIsLS4wMywtLjE4XSxbImwiLC0uMzMsLjNdLFsiYyIsLS40MiwuMzYsLS44NywuNzIsLTEuNjgsMS4yOV0sWyJjIiwtMS45OCwxLjM4LC0yLjI1LDEuNTksLTIuODUsMi4xNl0sWyJjIiwtLjc1LC42OSwtMS4yMywxLjQ0LC0xLjQ3LDIuMTldLFsiYyIsLS4xNSwuNDUsLS4xOCwuNjMsLS4yMSwxLjM1XSxbImwiLDAsLjY2XSxbImwiLC4zOSwtLjE4XSxbImMiLDEuODMsLS45LDMuNDUsLTEuOTUsNC40NywtMi45MV0sWyJjIiwuOTMsLS45LDEuNTMsLTEuODMsMS43NCwtMi44Ml0sWyJjIiwuMDYsLS4zMywuMDYsLS44NywuMDMsLTEuMzJdLFsieiJdLFsibSIsLS4yNyw0Ljg2XSxbImMiLC0uMDMsLS4yMSwtLjA2LC0uMzYsLS4wNiwtLjM2XSxbImMiLDAsLS4wMywtLjEyLC4wOSwtLjI0LC4yNF0sWyJjIiwtLjM5LC40OCwtLjk5LDEuMDgsLTIuMTYsMi4xOV0sWyJjIiwtMS40NywxLjM4LC0xLjkyLDEuODMsLTIuNDYsMi40OV0sWyJjIiwtLjY2LC44NywtMS4wOCwxLjc0LC0xLjI5LDIuNThdLFsiYyIsLS4wOSwuNDIsLS4xNSwuODcsLS4xNSwxLjQ0XSxbImwiLDAsLjU0XSxbImwiLC40OCwtLjMzXSxbImMiLDEuNSwtMS4wMiwyLjU4LC0xLjg5LDMuNTEsLTIuODJdLFsiYyIsMS40NywtMS40NywyLjI1LC0yLjg1LDIuNCwtNC4yNl0sWyJjIiwuMDMsLS4zOSwuMDMsLTEuMTcsLS4wMywtMS43MV0sWyJ6Il0sWyJtIiwtLjY2LDcuNjhdLFsiYyIsLjAzLC0uMTUsLjAzLC0uNiwuMDMsLS45OV0sWyJsIiwwLC0uNzJdLFsibCIsLS4yNywuMzNdLFsibCIsLTEuNzQsMS45OF0sWyJjIiwtMS43NywxLjkyLC0yLjQzLDIuNzYsLTIuOTcsMy45XSxbImMiLC0uNTEsMS4wMiwtLjcyLDEuNzcsLS43NSwyLjkxXSxbImMiLDAsLjYzLDAsLjYzLC4wNiwuNl0sWyJjIiwuMDMsLS4wMywuMywtLjI3LC42MywtLjU0XSxbImMiLC42NiwtLjYsMS44NiwtMS44LDIuMzEsLTIuMzFdLFsiYyIsMS42NSwtMS44OSwyLjUyLC0zLjU0LDIuNywtNS4xNl0sWyJ6Il1dLHc6OC40ODUsaDozMi45MzJ9LCJjbGVmcy5DIjp7ZDpbWyJNIiwuMDYsLTE0Ljk0XSxbImwiLC4wOSwtLjA2XSxbImwiLDEuOTIsMF0sWyJsIiwxLjkyLDBdLFsibCIsLjA5LC4wNl0sWyJsIiwuMDYsLjA5XSxbImwiLDAsMTQuODVdLFsibCIsMCwxNC44Ml0sWyJsIiwtLjA2LC4wOV0sWyJsIiwtLjA5LC4wNl0sWyJsIiwtMS45MiwwXSxbImwiLC0xLjkyLDBdLFsibCIsLS4wOSwtLjA2XSxbImwiLC0uMDYsLS4wOV0sWyJsIiwwLC0xNC44Ml0sWyJsIiwwLC0xNC44NV0sWyJ6Il0sWyJtIiw1LjM3LDBdLFsiYyIsLjA5LC0uMDYsLjA5LC0uMDYsLjU3LC0uMDZdLFsiYyIsLjQ1LDAsLjQ1LDAsLjU0LC4wNl0sWyJsIiwuMDYsLjA5XSxbImwiLDAsNy4xNF0sWyJsIiwwLDcuMTFdLFsibCIsLjA5LC0uMDZdLFsiYyIsLjE4LC0uMTgsLjcyLC0uODQsLjk2LC0xLjJdLFsiYyIsLjMsLS40NSwuNjYsLTEuMTcsLjg0LC0xLjY1XSxbImMiLC4zNiwtLjksLjU3LC0xLjgzLC42LC0yLjc5XSxbImMiLC4wMywtLjQ4LC4wMywtLjU0LC4wOSwtLjYzXSxbImMiLC4xMiwtLjE4LC4zNiwtLjIxLC41NCwtLjEyXSxbImMiLC4xOCwuMDksLjIxLC4xNSwuMjQsLjY2XSxbImMiLC4wNiwuODcsLjIxLDEuNTYsLjU3LDIuMjJdLFsiYyIsLjUxLDEuMDIsMS4yNiwxLjY4LDIuMjIsMS45Ml0sWyJjIiwuMjEsLjA2LC4zMywuMDYsLjc4LC4wNl0sWyJjIiwuNDUsMCwuNTcsMCwuODQsLS4wNl0sWyJjIiwuNDUsLS4xMiwuODEsLS4zMywxLjA4LC0uNl0sWyJjIiwuNTcsLS41NywuODcsLTEuNDEsLjk5LC0yLjg4XSxbImMiLC4wNiwtLjU0LC4wNiwtMywwLC0zLjU3XSxbImMiLC0uMjEsLTIuNTgsLS44NCwtMy44NywtMi4xNiwtNC41XSxbImMiLC0uNDgsLS4yMSwtMS4xNywtLjM2LC0xLjc3LC0uMzZdLFsiYyIsLS42OSwwLC0xLjI5LC4yNywtMS41LC43Ml0sWyJjIiwtLjA2LC4xNSwtLjA2LC4yMSwtLjA2LC40Ml0sWyJjIiwwLC4yNCwwLC4zLC4wNiwuNDVdLFsiYyIsLjEyLC4yNCwuMjQsLjM5LC42MywuNjZdLFsiYyIsLjQyLC4zLC41NywuNDgsLjY5LC43Ml0sWyJjIiwuMDYsLjE1LC4wNiwuMjEsLjA2LC40OF0sWyJjIiwwLC4zOSwtLjAzLC42MywtLjIxLC45Nl0sWyJjIiwtLjMsLjYsLS44NywxLjA4LC0xLjUsMS4yNl0sWyJjIiwtLjI3LC4wNiwtLjg3LC4wNiwtMS4xNCwwXSxbImMiLC0uNzgsLS4yNCwtMS40NCwtLjg3LC0xLjY1LC0xLjY4XSxbImMiLC0uMTIsLS40MiwtLjA5LC0xLjE3LC4wOSwtMS43MV0sWyJjIiwuNTEsLTEuNjUsMS45OCwtMi44MiwzLjgxLC0zLjA5XSxbImMiLC44NCwtLjA5LDIuNDYsLjAzLDMuNTEsLjI3XSxbImMiLDIuMjIsLjU3LDMuNjksMS44LDQuNDQsMy43NV0sWyJjIiwuMzYsLjkzLC41NywyLjEzLC41NywzLjM2XSxbImMiLDAsMS40NCwtLjQ4LDIuNzMsLTEuMzgsMy44MV0sWyJjIiwtMS4yNiwxLjUsLTMuMjcsMi40MywtNS4yOCwyLjQzXSxbImMiLC0uNDgsMCwtLjUxLDAsLS43NSwtLjA5XSxbImMiLC0uMTUsLS4wMywtLjQ4LC0uMjEsLS43OCwtLjM2XSxbImMiLC0uNjksLS4zNiwtLjg3LC0uNDIsLTEuMjYsLS40Ml0sWyJjIiwtLjI3LDAsLS4zLDAsLS41MSwuMDldLFsiYyIsLS41NywuMywtLjgxLC45LC0uODEsMi4xXSxbImMiLDAsMS4yMywuMjQsMS44MywuODEsMi4xM10sWyJjIiwuMjEsLjA5LC4yNCwuMDksLjUxLC4wOV0sWyJjIiwuMzksMCwuNTcsLS4wNiwxLjI2LC0uNDJdLFsiYyIsLjMsLS4xNSwuNjMsLS4zMywuNzgsLS4zNl0sWyJjIiwuMjQsLS4wOSwuMjcsLS4wOSwuNzUsLS4wOV0sWyJjIiwyLjAxLDAsNC4wMiwuOTMsNS4yOCwyLjRdLFsiYyIsLjksMS4xMSwxLjM4LDIuNCwxLjM4LDMuODRdLFsiYyIsMCwxLjUsLS4zLDIuODgsLS44NCwzLjk2XSxbImMiLC0uNzgsMS41OSwtMi4xOSwyLjY0LC00LjE3LDMuMTVdLFsiYyIsLTEuMDUsLjI0LC0yLjY3LC4zNiwtMy41MSwuMjddLFsiYyIsLTEuODMsLS4yNywtMy4zLC0xLjQ0LC0zLjgxLC0zLjA5XSxbImMiLC0uMTgsLS41NCwtLjIxLC0xLjI5LC0uMDksLTEuNzRdLFsiYyIsLjE1LC0uNiwuNjMsLTEuMiwxLjIzLC0xLjQ3XSxbImMiLC4zNiwtLjE4LC41NywtLjIxLC45OSwtLjIxXSxbImMiLC40MiwwLC42MywuMDMsMS4wMiwuMjFdLFsiYyIsLjQyLC4yMSwuODQsLjYzLDEuMDUsMS4wNV0sWyJjIiwuMTgsLjM2LC4yMSwuNiwuMjEsLjk2XSxbImMiLDAsLjMsMCwuMzYsLS4wNiwuNTFdLFsiYyIsLS4xMiwuMjQsLS4yNywuNDIsLS42OSwuNzJdLFsiYyIsLS41NywuNDIsLS42OSwuNjMsLS42OSwxLjA4XSxbImMiLDAsLjI0LDAsLjMsLjA2LC40NV0sWyJjIiwuMTIsLjIxLC4zLC4zOSwuNTcsLjU0XSxbImMiLC40MiwuMTgsLjg3LC4yMSwxLjUzLC4xNV0sWyJjIiwxLjA4LC0uMTUsMS44LC0uNTcsMi4zNCwtMS4zMl0sWyJjIiwuNTQsLS43NSwuODQsLTEuODMsLjk5LC0zLjUxXSxbImMiLC4wNiwtLjU3LC4wNiwtMy4wMywwLC0zLjU3XSxbImMiLC0uMTIsLTEuNDcsLS40MiwtMi4zMSwtLjk5LC0yLjg4XSxbImMiLC0uMjcsLS4yNywtLjYzLC0uNDgsLTEuMDgsLS42XSxbImMiLC0uMjcsLS4wNiwtLjM5LC0uMDYsLS44NCwtLjA2XSxbImMiLC0uNDUsMCwtLjU3LDAsLS43OCwuMDZdLFsiYyIsLTEuMTQsLjI3LC0yLjAxLDEuMTcsLTIuNDYsMi40OV0sWyJjIiwtLjIxLC41NywtLjMsLjk5LC0uMzMsMS42NV0sWyJjIiwtLjAzLC41MSwtLjA2LC41NywtLjI0LC42Nl0sWyJjIiwtLjEyLC4wNiwtLjI3LC4wNiwtLjM5LDBdLFsiYyIsLS4yMSwtLjA5LC0uMjEsLS4xNSwtLjI0LC0uNzVdLFsiYyIsLS4wOSwtMS45MiwtLjc4LC0zLjcyLC0yLjAxLC01LjE5XSxbImMiLC0uMTgsLS4yMSwtLjM2LC0uNDIsLS4zOSwtLjQ1XSxbImwiLC0uMDksLS4wNl0sWyJsIiwwLDcuMTFdLFsibCIsMCw3LjE0XSxbImwiLC0uMDYsLjA5XSxbImMiLC0uMDksLjA2LC0uMDksLjA2LC0uNTQsLjA2XSxbImMiLC0uNDgsMCwtLjQ4LDAsLS41NywtLjA2XSxbImwiLC0uMDYsLS4wOV0sWyJsIiwwLC0xNC44Ml0sWyJsIiwwLC0xNC44NV0sWyJ6Il1dLHc6MjAuMzEsaDoyOS45N30sImNsZWZzLkYiOntkOltbIk0iLDYuMywtNy44XSxbImMiLC4zNiwtLjAzLDEuNjUsMCwyLjEzLC4wM10sWyJjIiwzLjYsLjQyLDYuMDMsMi4xLDYuOTMsNC44Nl0sWyJjIiwuMjcsLjg0LC4zNiwxLjUsLjM2LDIuNThdLFsiYyIsMCwuOSwtLjAzLDEuMzUsLS4xOCwyLjE2XSxbImMiLC0uNzgsMy43OCwtMy41NCw3LjA4LC04LjM3LDkuOTZdLFsiYyIsLTEuNzQsMS4wNSwtMy44NywyLjEzLC02LjE4LDMuMTJdLFsiYyIsLS4zOSwuMTgsLS43NSwuMzMsLS44MSwuMzZdLFsiYyIsLS4wNiwuMDMsLS4xNSwuMDYsLS4xOCwuMDZdLFsiYyIsLS4xNSwwLC0uMzMsLS4xOCwtLjMzLC0uMzNdLFsiYyIsMCwtLjE1LC4wNiwtLjIxLC41MSwtLjQ4XSxbImMiLDMsLTEuNzcsNS4xMywtMy4yMSw2Ljg0LC00Ljc0XSxbImMiLC41MSwtLjQ1LDEuNTksLTEuNSwxLjk1LC0xLjk1XSxbImMiLDEuODksLTIuMTksMi44OCwtNC4zMiwzLjE1LC02Ljc4XSxbImMiLC4wNiwtLjQyLC4wNiwtMS43NywwLC0yLjE5XSxbImMiLC0uMjQsLTIuMDEsLS45MywtMy42MywtMi4wNCwtNC43MV0sWyJjIiwtLjYzLC0uNjMsLTEuMjksLTEuMDIsLTIuMDcsLTEuMl0sWyJjIiwtMS42MiwtLjM5LC0zLjM2LC4xNSwtNC41NiwxLjQ0XSxbImMiLC0uNTQsLjYsLTEuMDUsMS40NywtMS4zMiwyLjIyXSxbImwiLC0uMDksLjIxXSxbImwiLC4yNCwtLjEyXSxbImMiLC4zOSwtLjIxLC42MywtLjI0LDEuMTEsLS4yNF0sWyJjIiwuMywwLC40NSwwLC42NiwuMDZdLFsiYyIsMS45MiwuNDgsMi44NSwyLjU1LDEuOTUsNC4zOF0sWyJjIiwtLjQ1LC45OSwtMS40MSwxLjYyLC0yLjQ2LDEuNzFdLFsiYyIsLTEuNDcsLjA5LC0yLjkxLC0uODcsLTMuMzksLTIuMjVdLFsiYyIsLS4xOCwtLjU3LC0uMjEsLTEuMzIsLS4wMywtMi4yOF0sWyJjIiwuMzksLTIuMjUsMS44MywtNC4yLDMuODEsLTUuMTldLFsiYyIsLjY5LC0uMzYsMS41OSwtLjYsMi4zNywtLjY5XSxbInoiXSxbIm0iLDExLjU4LDIuNTJdLFsiYyIsLjg0LC0uMjEsMS43MSwuMywxLjg5LDEuMTRdLFsiYyIsLjMsMS4xNywtLjcyLDIuMTksLTEuODksMS44OV0sWyJjIiwtLjk5LC0uMjEsLTEuNSwtMS4zMiwtMS4wMiwtMi4yNV0sWyJjIiwuMTgsLS4zOSwuNiwtLjY5LDEuMDIsLS43OF0sWyJ6Il0sWyJtIiwwLDcuNV0sWyJjIiwuODQsLS4yMSwxLjcxLC4zLDEuODksMS4xNF0sWyJjIiwuMjEsLjg3LC0uMywxLjcxLC0xLjE0LDEuODldLFsiYyIsLS44NywuMjEsLTEuNzEsLS4zLC0xLjg5LC0xLjE0XSxbImMiLC0uMjEsLS44NCwuMywtMS43MSwxLjE0LC0xLjg5XSxbInoiXV0sdzoyMC4xNTMsaDoyMy4xNDJ9LCJjbGVmcy5HIjp7ZDpbWyJNIiw5LjY5LC0zNy40MV0sWyJjIiwuMDksLS4wOSwuMjQsLS4wNiwuMzYsMF0sWyJjIiwuMTIsLjA5LC41NywuNiwuOTYsMS4xMV0sWyJjIiwxLjc3LDIuMzQsMy4yMSw1Ljg1LDMuNTcsOC43M10sWyJjIiwuMjEsMS41NiwuMDMsMy4yNywtLjQ1LDQuODZdLFsiYyIsLS42OSwyLjMxLC0xLjkyLDQuNDcsLTQuMjMsNy40NF0sWyJjIiwtLjMsLjM5LC0uNTcsLjcyLC0uNiwuNzVdLFsiYyIsLS4wMywuMDYsMCwuMTUsLjE4LC43OF0sWyJjIiwuNTQsMS42OCwxLjM4LDQuNDQsMS42OCw1LjQ5XSxbImwiLC4wOSwuNDJdLFsibCIsLjM5LDBdLFsiYyIsMS40NywuMDksMi43NiwuNTEsMy45NiwxLjI5XSxbImMiLDEuODMsMS4yMywzLjA2LDMuMjEsMy4zOSw1LjUyXSxbImMiLC4wOSwuNDUsLjEyLDEuMjksLjA2LDEuNzRdLFsiYyIsLS4wOSwxLjAyLC0uMzMsMS44MywtLjc1LDIuNzNdLFsiYyIsLS44NCwxLjcxLC0yLjI4LDMuMDYsLTQuMDIsMy43Ml0sWyJsIiwtLjMzLC4xMl0sWyJsIiwuMDMsMS4yNl0sWyJjIiwwLDEuNzQsLS4wNiwzLjYzLC0uMjEsNC42Ml0sWyJjIiwtLjQ1LDMuMDYsLTIuMTksNS40OSwtNC40Nyw2LjIxXSxbImMiLC0uNTcsLjE4LC0uOSwuMjEsLTEuNTksLjIxXSxbImMiLC0uNjksMCwtMS4wMiwtLjAzLC0xLjY1LC0uMjFdLFsiYyIsLTEuMTQsLS4yNywtMi4xMywtLjg0LC0yLjk0LC0xLjY1XSxbImMiLC0uOTksLS45OSwtMS41NiwtMi4xNiwtMS43MSwtMy41NF0sWyJjIiwtLjA5LC0uODEsLjA2LC0xLjUzLC40NSwtMi4xM10sWyJjIiwuNjMsLS45OSwxLjgzLC0xLjU2LDMsLTEuNTNdLFsiYyIsMS41LC4wOSwyLjY0LDEuMzIsMi43MywyLjk0XSxbImMiLC4wNiwxLjQ3LC0uOTMsMi43LC0yLjM3LDIuOTddLFsiYyIsLS40NSwuMDYsLS44NCwuMDMsLTEuMjksLS4wOV0sWyJsIiwtLjIxLC0uMDldLFsibCIsLjA5LC4xMl0sWyJjIiwuMzksLjU0LC43OCwuOTMsMS4zMiwxLjI2XSxbImMiLDEuMzUsLjg3LDMuMDYsMS4wMiw0LjM1LC4zNl0sWyJjIiwxLjQ0LC0uNzIsMi41MiwtMi4yOCwyLjk3LC00LjM1XSxbImMiLC4xNSwtLjY2LC4yNCwtMS41LC4zLC0zLjAzXSxbImMiLC4wMywtLjg0LC4wMywtMi45NCwwLC0zXSxbImMiLC0uMDMsMCwtLjE4LDAsLS4zNiwuMDNdLFsiYyIsLS42NiwuMTIsLS45OSwuMTIsLTEuODMsLjEyXSxbImMiLC0xLjA1LDAsLTEuNzEsLS4wNiwtMi42MSwtLjNdLFsiYyIsLTQuMDIsLS45OSwtNy4xMSwtNC4zNSwtNy44LC04LjQ2XSxbImMiLC0uMTIsLS42NiwtLjEyLC0uOTksLS4xMiwtMS44M10sWyJjIiwwLC0uODQsMCwtMS4xNCwuMTUsLTEuOTJdLFsiYyIsLjM2LC0yLjI4LDEuNDEsLTQuNjIsMy4zLC03LjI5XSxbImwiLDIuNzksLTMuNl0sWyJjIiwuNTQsLS42NiwuOTYsLTEuMiwuOTYsLTEuMjNdLFsiYyIsMCwtLjAzLC0uMDksLS4zMywtLjE4LC0uNjldLFsiYyIsLS45NiwtMy4yMSwtMS40MSwtNS4yOCwtMS41OSwtNy42OF0sWyJjIiwtLjEyLC0xLjM4LC0uMTUsLTMuMDksLS4wNiwtMy45Nl0sWyJjIiwuMzMsLTIuNjcsMS4zOCwtNS4wNywzLjEyLC03LjA4XSxbImMiLC4zNiwtLjQyLC45OSwtMS4wNSwxLjE3LC0xLjE0XSxbInoiXSxbIm0iLDIuMDEsNC43MV0sWyJjIiwtLjE1LC0uMywtLjMsLS41NCwtLjMsLS41NF0sWyJjIiwtLjAzLDAsLS4xOCwuMDksLS4zLC4yMV0sWyJjIiwtMi40LDEuNzQsLTMuODcsNC4yLC00LjI2LDcuMTFdLFsiYyIsLS4wNiwuNTQsLS4wNiwxLjQxLC0uMDMsMS44OV0sWyJjIiwuMDksMS4yOSwuNDgsMy4xMiwxLjA4LDUuMjJdLFsiYyIsLjE1LC40MiwuMjQsLjc4LC4yNCwuODFdLFsiYyIsMCwuMDMsLjg0LC0xLjExLDEuMjMsLTEuNjhdLFsiYyIsMS44OSwtMi43MywyLjg4LC01LjA3LDMuMTUsLTcuNTNdLFsiYyIsLjA5LC0uNTcsLjEyLC0xLjc0LC4wNiwtMi4zN10sWyJjIiwtLjA5LC0xLjIzLC0uMjcsLTEuOTIsLS44NywtMy4xMl0sWyJ6Il0sWyJtIiwtMi45NCwyMC43XSxbImMiLC0uMjEsLS43MiwtLjM5LC0xLjMyLC0uNDIsLTEuMzJdLFsiYyIsMCwwLC0xLjIsMS40NywtMS44NiwyLjM3XSxbImMiLC0yLjc5LDMuNjMsLTQuMDIsNi4zLC00LjM1LDkuM10sWyJjIiwtLjAzLC4yMSwtLjAzLC42OSwtLjAzLDEuMDhdLFsiYyIsMCwuNjksMCwuNzUsLjA2LDEuMTFdLFsiYyIsLjEyLC41NCwuMjcsLjk5LC41MSwxLjQ3XSxbImMiLC42OSwxLjM4LDEuODMsMi41NSwzLjQyLDMuNDJdLFsiYyIsLjk2LC41NCwyLjA3LC45LDMuMjEsMS4wOF0sWyJjIiwuNzgsLjEyLDIuMDQsLjEyLDIuOTQsLS4wM10sWyJjIiwuNTEsLS4wNiwuNDUsLS4wMywuNDIsLS4zXSxbImMiLC0uMjQsLTMuMzMsLS43MiwtNi4zMywtMS42MiwtMTAuMDhdLFsiYyIsLS4wOSwtLjM5LC0uMTgsLS43NSwtLjE4LC0uNzhdLFsiYyIsLS4wMywtLjAzLC0uNDIsMCwtLjgxLC4wOV0sWyJjIiwtLjksLjE4LC0xLjY1LC41NywtMi4yMiwxLjE0XSxbImMiLC0uNzIsLjcyLC0xLjA4LDEuNjUsLTEuMDUsMi42NF0sWyJjIiwuMDYsLjk2LC40OCwxLjgzLDEuMjMsMi41OF0sWyJjIiwuMzYsLjM2LC43MiwuNjMsMS4xNywuOV0sWyJjIiwuMzMsLjE4LC4zNiwuMjEsLjQyLC4zM10sWyJjIiwuMTgsLjQyLC0uMTgsLjksLS42LC44N10sWyJjIiwtLjE4LC0uMDMsLS44NCwtLjM2LC0xLjI2LC0uNjNdLFsiYyIsLS43OCwtLjUxLC0xLjM4LC0xLjExLC0xLjg2LC0xLjgzXSxbImMiLC0xLjc3LC0yLjcsLS45OSwtNi40MiwxLjcxLC04LjE5XSxbImMiLC4zLC0uMjEsLjgxLC0uNDgsMS4xNywtLjYzXSxbImMiLC4zLC0uMDksMS4wMiwtLjMsMS4xNCwtLjNdLFsiYyIsLjA2LDAsLjA5LDAsLjA5LC0uMDNdLFsiYyIsLjAzLC0uMDMsLS41MSwtMS45MiwtMS4yMywtNC4yNl0sWyJ6Il0sWyJtIiwzLjc4LDcuNDFdLFsiYyIsLS4xOCwtLjAzLC0uMzYsLS4wNiwtLjM5LC0uMDZdLFsiYyIsLS4wMywwLDAsLjIxLC4xOCwxLjAyXSxbImMiLC43NSwzLjE4LDEuMjYsNi4zLDEuNSw5LjA5XSxbImMiLC4wNiwuNzIsMCwuNjksLjUxLC40Ml0sWyJjIiwuNzgsLS4zNiwxLjQ0LC0uOTYsMS45OCwtMS43N10sWyJjIiwxLjA4LC0xLjYyLDEuMiwtMy42OSwuMywtNS41NV0sWyJjIiwtLjgxLC0xLjYyLC0yLjMxLC0yLjc5LC00LjA4LC0zLjE1XSxbInoiXV0sdzoxOS4wNTEsaDo1Ny4wNTd9LCJjbGVmcy5wZXJjIjp7ZDpbWyJNIiw1LjA3LC03LjQ0XSxbImwiLC4wOSwtLjA2XSxbImwiLDEuNTMsMF0sWyJsIiwxLjUzLDBdLFsibCIsLjA5LC4wNl0sWyJsIiwuMDYsLjA5XSxbImwiLDAsNy4zNV0sWyJsIiwwLDcuMzJdLFsibCIsLS4wNiwuMDldLFsibCIsLS4wOSwuMDZdLFsibCIsLTEuNTMsMF0sWyJsIiwtMS41MywwXSxbImwiLC0uMDksLS4wNl0sWyJsIiwtLjA2LC0uMDldLFsibCIsMCwtNy4zMl0sWyJsIiwwLC03LjM1XSxbInoiXSxbIm0iLDYuNjMsMF0sWyJsIiwuMDksLS4wNl0sWyJsIiwxLjUzLDBdLFsibCIsMS41MywwXSxbImwiLC4wOSwuMDZdLFsibCIsLjA2LC4wOV0sWyJsIiwwLDcuMzVdLFsibCIsMCw3LjMyXSxbImwiLC0uMDYsLjA5XSxbImwiLC0uMDksLjA2XSxbImwiLC0xLjUzLDBdLFsibCIsLTEuNTMsMF0sWyJsIiwtLjA5LC0uMDZdLFsibCIsLS4wNiwtLjA5XSxbImwiLDAsLTcuMzJdLFsibCIsMCwtNy4zNV0sWyJ6Il1dLHc6MjEsaDoxNC45N30sInRhYi5iaWciOntkOltbIk0iLDIwLjE2LC0yMS42Nl0sWyJjIiwuMjQsLS4wOSwuNjYsLjA5LC43OCwuMzZdLFsiYyIsLjA5LC4yMSwuMDksLjI0LC0uMTgsLjU0XSxbImMiLC0uNzgsLjgxLC0xLjg2LDEuNDQsLTIuOTQsMS43MV0sWyJjIiwtLjg3LC4yNCwtMS43MSwuMjQsLTIuNTUsLjAzXSxbImwiLC0uMDYsLS4wM10sWyJsIiwtLjE4LC45OV0sWyJjIiwtLjMzLDEuOTgsLS43NSw0LjI2LC0uOTYsNS4wNF0sWyJjIiwtLjQyLDEuNjUsLTEuMjYsMy4xOCwtMi4yOCw0LjE0XSxbImMiLC0uNTcsLjU3LC0xLjE3LC45LC0xLjg2LDEuMDhdLFsiYyIsLS4xOCwuMDYsLS4zMywuMDYsLS42NiwuMDZdLFsiYyIsLS41NCwwLC0uNzgsLS4wMywtMS4yMywtLjI3XSxbImMiLC0uMzksLS4xOCwtLjY2LC0uMzksLTEuMzgsLS45OV0sWyJjIiwtLjMsLS4yNCwtLjY2LC0uNTEsLS43NSwtLjU3XSxbImMiLC0uMjEsLS4xNSwtLjI3LC0uMjQsLS4yNCwtLjQ1XSxbImMiLC4wNiwtLjI3LC4zNiwtLjYsLjYsLS42Nl0sWyJjIiwuMTgsLS4wMywuMzMsLjA2LC45LC41N10sWyJjIiwuNDgsLjQyLC43MiwuNTcsLjkzLC42OV0sWyJjIiwuNjYsLjMzLDEuMzgsLjIxLDEuOTUsLS4zNl0sWyJjIiwuNjMsLS42LDEuMDUsLTEuNjIsMS4yMywtM10sWyJjIiwuMDMsLS4xOCwuMDksLS42NiwuMDksLTEuMTFdLFsiYyIsLjA5LC0xLjU2LC4zMywtMy44MSwuNTcsLTUuNDldLFsiYyIsLjA2LC0uMzMsLjA5LC0uNjMsLjA5LC0uNjNdLFsiYyIsLS4wMywtLjAzLC0uODEsLS4xMiwtMS4wMiwtLjEyXSxbImMiLC0uNTcsMCwtMS4zMiwuMTIsLTEuOCwuMzNdLFsiYyIsLS44NywuMywtMS4zNSwuNzgsLTEuNSwxLjQxXSxbImMiLC0uMTgsLjYzLC4wOSwxLjI2LC42NiwxLjY1XSxbImMiLC4xMiwuMDYsLjE1LC4xMiwuMTgsLjI0XSxbImMiLC4wOSwuMjcsLjA2LC41NywtLjA5LC43NV0sWyJjIiwtLjAzLC4wNiwtLjEyLC4wOSwtLjI3LC4xNV0sWyJjIiwtLjcyLC4yMSwtMS40NCwuMTUsLTIuMSwtLjE4XSxbImMiLC0uNTQsLS4yNywtLjk2LC0uNjYsLTEuMiwtMS4xNF0sWyJjIiwtLjM5LC0uNzUsLS4zMywtMS43NCwuMTUsLTIuNTJdLFsiYyIsLjI3LC0uNDIsLjg0LC0uOTMsMS40MSwtMS4yM10sWyJjIiwxLjE3LC0uNTcsMi44OCwtLjksNC44LC0uOV0sWyJjIiwuNjksMCwuNzgsMCwxLjA4LC4wNl0sWyJjIiwuNDUsLjA5LDEuMTEsLjMsMi4wNywuNl0sWyJjIiwxLjQ3LC40OCwxLjgzLC41NywyLjU1LC41NF0sWyJjIiwxLjAyLC0uMDYsMi4wNCwtLjQ1LDIuOTQsLTEuMTFdLFsiYyIsLjEyLC0uMDksLjI0LC0uMTgsLjI3LC0uMThdLFsieiJdLFsibSIsLTUuODgsMTMuMDVdLFsiYyIsLjIxLC0uMDMsLjgxLDAsMS4wOCwuMDZdLFsiYyIsLjQ4LC4xMiwuOSwuNDIsLjk5LC42OV0sWyJjIiwuMDMsLjA5LC4wMywuMTUsMCwuMjddLFsiYyIsMCwuMDksLS4wMywuNTcsLS4wNiwxLjA4XSxbImMiLC0uMDksMi4xOSwtLjI0LDUuNzYsLS4zOSw4LjI4XSxbImMiLC0uMDYsMS41MywtLjA2LDEuNzcsLjAzLDIuMDFdLFsiYyIsLjA5LC4xOCwuMTUsLjI0LC4zLC4zXSxbImMiLC4yNCwuMTIsLjU0LC4wNiwxLjIzLC0uMjddLFsiYyIsLjU3LC0uMjcsLjY2LC0uMywuNzUsLS4yNF0sWyJjIiwuMDksLjA2LC4xOCwuMywuMTgsLjQ1XSxbImMiLDAsLjMzLC0uMTUsLjUxLC0uNDUsLjYzXSxbImMiLC0uMTIsLjAzLC0uMzksLjE1LC0uNiwuMjddLFsiYyIsLTEuMTcsLjYsLTEuMzgsLjY5LC0xLjgsLjcyXSxbImMiLC0uNDUsLjAzLC0uNzgsLS4wOSwtMS4wOCwtLjM5XSxbImMiLC0uMzksLS40MiwtLjY2LC0xLjIsLTEuMDIsLTMuMTJdLFsiYyIsLS4yNCwtMS4yMywtLjM2LC0yLjA3LC0uNTQsLTMuNzVdLFsibCIsMCwtLjE4XSxbImwiLC0uMzYsLjQ1XSxbImMiLC0uNiwuNzUsLTEuMzIsMS41OSwtMS45NSwyLjI1XSxbImMiLC0uMTUsLjE4LC0uMjcsLjMsLS4yNywuMzNdLFsiYyIsMCwwLC4wNiwuMDksLjE1LC4xOF0sWyJjIiwuMjQsLjMzLC42LC41NywxLjA1LC42OV0sWyJjIiwuMTgsLjA2LC4zLC4wNiwuNjksLjA2XSxbImwiLC40OCwuMDNdLFsibCIsLjA2LC4xMl0sWyJjIiwuMTUsLjI3LC4wMywuNzIsLS4yMSwuOV0sWyJjIiwtLjE4LC4xMiwtLjkzLC4yNywtMS40MSwuMjddLFsiYyIsLS44NCwwLC0xLjU5LC0uMywtMS45OCwtLjg0XSxbImwiLC0uMTIsLS4xNV0sWyJsIiwtLjQ1LC40Ml0sWyJjIiwtLjk5LC44NywtMS41MywxLjMyLC0yLjE2LDEuNzRdLFsiYyIsLS43OCwuNTEsLTEuNSwuODQsLTIuMSwuOTNdLFsiYyIsLS42OSwuMTIsLTEuMiwuMDMsLTEuOTUsLS40Ml0sWyJjIiwtLjIxLC0uMTIsLS41MSwtLjI3LC0uNjYsLS4zNl0sWyJjIiwtLjI0LC0uMTIsLS4zLC0uMTgsLS4zMywtLjI0XSxbImMiLC0uMTIsLS4yNywuMTUsLS43OCwuNDUsLS45M10sWyJjIiwuMjQsLS4xMiwuMzMsLS4wOSwuOSwuMThdLFsiYyIsLjYsLjMsLjg0LC4zOSwxLjIsLjM2XSxbImMiLC44NywtLjA5LDEuNzcsLS42OSwzLjI0LC0yLjMxXSxbImMiLDIuNjcsLTIuODUsNC41OSwtNS45NCw1LjcsLTkuMTVdLFsiYyIsLjE1LC0uNDUsLjI0LC0uNjMsLjQyLC0uODFdLFsiYyIsLjIxLC0uMjQsLjYsLS40NSwuOTksLS41MV0sWyJ6Il0sWyJtIiwtMy45OSwxNi4wNV0sWyJjIiwuMTgsMCwuNjksLS4wMywxLjE3LDBdLFsiYyIsMy4yNywuMDMsNS4zNywuNzUsNiwyLjA3XSxbImMiLC40NSwuOTksLjEyLDIuNCwtLjgxLDMuNDJdLFsiYyIsLS4yNCwuMjcsLS41NywuNTcsLS44NCwuNzVdLFsiYyIsLS4wOSwuMDYsLS4xOCwuMDksLS4xOCwuMTJdLFsiYyIsMCwwLC4xOCwuMDMsLjQyLC4wOV0sWyJjIiwxLjIzLC4zLDIuMDEsLjgxLDIuMzcsMS41OV0sWyJjIiwuMjcsLjU0LC4zLDEuMzIsLjA5LDIuMV0sWyJjIiwtLjEyLC4zNiwtLjQ1LDEuMDUsLS42OSwxLjM1XSxbImMiLC0uODcsMS4xNywtMi4xLDEuOTIsLTMuNTQsMi4yNV0sWyJjIiwtLjM2LC4wNiwtLjQ4LC4wNiwtLjk2LC4wNl0sWyJjIiwtLjQ1LDAsLS42NiwwLC0uODQsLS4wM10sWyJjIiwtLjg0LC0uMTgsLTEuNDcsLS41MSwtMi4wNywtMS4xMV0sWyJjIiwtLjMzLC0uMzMsLS40NSwtLjUxLC0uNDUsLS42M10sWyJjIiwwLC0uMDYsLjAzLC0uMTUsLjA2LC0uMjRdLFsiYyIsLjE4LC0uMzMsLjY5LC0uNiwuOTMsLS40OF0sWyJjIiwuMDMsLjAzLC4xNSwuMTIsLjI3LC4yNF0sWyJjIiwuMzksLjQyLC45OSwuNTcsMS42MiwuNDVdLFsiYyIsMS4wNSwtLjIxLDEuOTgsLTEuMDIsMi4zMSwtMi4wMV0sWyJjIiwuNDgsLTEuNTMsLS40OCwtMi41NSwtMi41OCwtMi42N10sWyJjIiwtLjIxLDAsLS4zNiwtLjAzLC0uNDIsLS4wNl0sWyJjIiwtLjE1LC0uMDksLS4yMSwtLjUxLC0uMDYsLS43OF0sWyJjIiwuMTIsLS4yNywuMjQsLS4zMywuNiwtLjM2XSxbImMiLC41NywtLjA2LDEuMTEsLS40MiwxLjUsLS45OV0sWyJjIiwuNDgsLS43MiwuNTQsLTEuNTksLjE4LC0yLjMxXSxbImMiLC0uMTIsLS4yMSwtLjQ1LC0uNTQsLS42OSwtLjY5XSxbImMiLC0uMzMsLS4yMSwtLjkzLC0uNDUsLTEuMzUsLS41MV0sWyJsIiwtLjEyLC0uMDNdLFsibCIsLS4wNiwuNDhdLFsiYyIsLS41NCwyLjk0LC0xLjE0LDYuMjQsLTEuMjksNi43NV0sWyJjIiwtLjMzLDEuMzUsLS45MywyLjYxLC0xLjY1LDMuNl0sWyJjIiwtLjMsLjM2LC0uODEsLjksLTEuMTQsMS4xNF0sWyJjIiwtLjMsLjI0LC0uODQsLjQ4LC0xLjE0LC41N10sWyJjIiwtLjMzLC4wOSwtLjk2LC4wOSwtMS4yNiwuMDNdLFsiYyIsLS40NSwtLjEyLC0uODcsLS4zOSwtMS41MywtLjk2XSxbImMiLC0uMjQsLS4xNSwtLjUxLC0uMzksLS42MywtLjQ4XSxbImMiLC0uMywtLjIxLC0uMzMsLS4zMywtLjIxLC0uNjNdLFsiYyIsLjEyLC0uMTgsLjI3LC0uMzYsLjQyLC0uNDVdLFsiYyIsLjI3LC0uMTIsLjM2LC0uMDksLjg3LC4zM10sWyJjIiwuNzgsLjYsMS4wOCwuNzUsMS42NSwuNzJdLFsiYyIsLjQ1LC0uMDMsLjgxLC0uMjEsMS4xNywtLjU0XSxbImMiLC44NywtLjksMS4zOCwtMi44NSwxLjM4LC01LjM3XSxbImMiLDAsLS42LC4wMywtMS4xMSwuMTIsLTIuMDRdLFsiYyIsLjA2LC0uNjksLjI0LC0yLjAxLC4zMywtMi41OF0sWyJjIiwuMDYsLS4yNCwuMDYsLS40MiwuMDYsLS40Ml0sWyJjIiwwLDAsLS4xMiwuMDMsLS4yMSwuMDldLFsiYyIsLTEuNDQsLjU3LC0yLjE2LDEuNjUsLTEuNzQsMi41NV0sWyJjIiwuMDksLjE1LC4xOCwuMjQsLjI3LC4zM10sWyJjIiwuMjQsLjIxLC4zLC4yNywuMzMsLjM5XSxbImMiLC4wNiwuMjQsMCwuNjMsLS4xNSwuNzhdLFsiYyIsLS4wOSwuMTIsLS41NCwuMjEsLS45NiwuMjRdLFsiYyIsLTEuMDIsLjAzLC0yLjAxLC0uNDgsLTIuNDMsLTEuMzJdLFsiYyIsLS4yMSwtLjQ1LC0uMjcsLS45LC0uMTUsLTEuNDRdLFsiYyIsLjA2LC0uMjcsLjIxLC0uNjYsLjM5LC0uOTNdLFsiYyIsLjg3LC0xLjI5LDMsLTIuMjIsNS42NCwtMi40M10sWyJ6Il1dLHc6MTkuNjQzLGg6NDMuMzI1fSwidGFiLnRpbnkiOntkOltbIk0iLDE2LjAyLC0xNy4yNV0sWyJjIiwuMTIsLS4wOSwuMTUsLS4wOSwuMjcsLS4wOV0sWyJjIiwuMjEsLjAzLC41MSwuMywuNTEsLjQ1XSxbImMiLDAsLjA2LC0uMTIsLjE4LC0uMywuMzZdLFsiYyIsLTEuMTEsMS4wOCwtMi41NSwxLjU5LC0zLjg0LDEuNDFdLFsiYyIsLS4xNSwtLjAzLC0uMzMsLS4wNiwtLjM5LC0uMDldLFsiYyIsLS4wNiwtLjAzLC0uMDksLS4wMywtLjEyLC0uMDNdLFsiYyIsMCwwLC0uMDYsLjQyLC0uMTUsLjkzXSxbImMiLC0uMzMsMi4wMSwtLjY2LDMuNjksLS44NCw0LjI2XSxbImMiLC0uNDIsMS40MSwtMS4yMywyLjY3LC0yLjE2LDMuMzNdLFsiYyIsLS4yNywuMTgsLS43NSwuNDIsLS45OSwuNDhdLFsiYyIsLS4zLC4wOSwtLjcyLC4wOSwtMS4wMiwuMDZdLFsiYyIsLS40NSwtLjA5LC0uODQsLS4zMywtMS41MywtLjldLFsiYyIsLS4yMSwtLjE4LC0uNTEsLS4zOSwtLjYzLC0uNDhdLFsiYyIsLS4yNywtLjIxLC0uMywtLjI0LC0uMywtLjM2XSxbImMiLDAsLS4xMiwuMDksLS4zNiwuMTgsLS40NV0sWyJjIiwuMDksLS4wOSwuMjcsLS4xOCwuMzYsLS4xOF0sWyJjIiwuMTIsMCwuMywuMTIsLjY2LC40NV0sWyJjIiwuNTcsLjUxLC44NywuNjksMS4yMywuNzJdLFsiYyIsLjkzLC4wNiwxLjY4LC0uNzgsMS45OCwtMi4zN10sWyJjIiwuMDksLS4zOSwuMTUsLS43NSwuMTgsLTEuNTNdLFsiYyIsLjA2LC0uOTksLjI0LC0yLjc5LC40MiwtNC4wNV0sWyJjIiwuMDMsLS4zLC4wNiwtLjU3LC4wNiwtLjZdLFsiYyIsMCwtLjA2LC0uMDMsLS4wOSwtLjE1LC0uMTJdLFsiYyIsLS45LC0uMTgsLTIuMTMsLjA2LC0yLjc2LC41N10sWyJjIiwtLjM2LC4zLC0uNTEsLjYsLS41MSwxLjAyXSxbImMiLDAsLjQ1LC4xNSwuNzUsLjQ4LC45OV0sWyJjIiwuMDYsLjA2LC4xNSwuMTgsLjE4LC4yNF0sWyJjIiwuMTIsLjI0LC4wMywuNjMsLS4xNSwuNjldLFsiYyIsLS4yNCwuMTIsLS42LC4xNSwtLjksLjE1XSxbImMiLC0uMzYsLS4wMywtLjU3LC0uMDksLS44NywtLjI0XSxbImMiLC0uNzgsLS4zNiwtMS4yMywtMS4xMSwtMS4yLC0xLjkyXSxbImMiLC4xMiwtMS41MywxLjc0LC0yLjQ5LDQuNjIsLTIuN10sWyJjIiwxLjIsLS4wOSwxLjQ3LC0uMDMsMy4zMywuNTddLFsiYyIsLjksLjMsMS4xNCwuMzYsMS41NiwuMzldLFsiYyIsLjQ1LDAsLjkzLC0uMDYsMS4zOCwtLjIxXSxbImMiLC41MSwtLjE4LC44MSwtLjMzLDEuNDEsLS43NV0sWyJ6Il0sWyJtIiwtNC42OCwxMC4zOF0sWyJjIiwuMzksLS4wNiwuODQsMCwxLjIsLjE1XSxbImMiLC4yNCwuMTIsLjM2LC4yMSwuNDUsLjM2XSxbImwiLC4wOSwuMDldLFsibCIsLS4wNiwxLjQxXSxbImMiLC0uMDksMi4xOSwtLjE4LDMuOTYsLS4yNyw1LjQ5XSxbImMiLC0uMDMsLjc4LC0uMDYsMS41OSwtLjA2LDEuODZdLFsiYyIsMCwuNDIsMCwuNDgsLjA2LC41N10sWyJjIiwuMDYsLjE4LC4xOCwuMjQsLjM2LC4yN10sWyJjIiwuMTgsMCwuMzksLS4wNiwuODQsLS4yN10sWyJjIiwuNDUsLS4yMSwuNTQsLS4yNCwuNjMsLS4xOF0sWyJjIiwuMTIsLjEyLC4xNSwuNTQsLjAzLC42OV0sWyJjIiwtLjAzLC4wMywtLjE1LC4xMiwtLjI3LC4xOF0sWyJjIiwtLjE1LC4wMywtLjMsLjEyLC0uMzYsLjE1XSxbImMiLC0uODcsLjQ1LC0xLjAyLC41MSwtMS4yNiwuNTddLFsiYyIsLS4zMywuMDksLS42LC4wNiwtLjg0LC0uMDZdLFsiYyIsLS40MiwtLjE4LC0uNjMsLS42LC0uODcsLTEuNDRdLFsiYyIsLS4zLC0xLjIzLC0uNTcsLTIuOTcsLS42NiwtNC4wOF0sWyJjIiwwLC0uMTgsLS4wMywtLjMsLS4wMywtLjMzXSxbImwiLC0uMDYsLjA2XSxbImMiLC0uMTgsLjI3LC0xLjExLDEuMzgsLTEuNjgsMi4wMV0sWyJsIiwtLjMzLC4zM10sWyJsIiwuMDYsLjA5XSxbImMiLC4wNiwuMTUsLjI3LC4zMywuNDgsLjQyXSxbImMiLC4yNywuMTgsLjUxLC4yNCwuOTYsLjI3XSxbImwiLC4zOSwwXSxbImwiLC4wMywuMTJdLFsiYyIsLjEyLC4yMSwuMDMsLjU3LC0uMTUsLjY5XSxbImMiLC0uMDMsLjAzLC0uMjEsLjA5LC0uMzYsLjE1XSxbImMiLC0uMjcsLjA2LC0uMzksLjA2LC0uNzUsLjA2XSxbImMiLC0uNDgsMCwtLjc1LC0uMDMsLTEuMDgsLS4yMV0sWyJjIiwtLjIxLC0uMTIsLS41MSwtLjM2LC0uNTcsLS40OF0sWyJsIiwtLjAzLC0uMDldLFsibCIsLS4zOSwuMzZdLFsiYyIsLTEuNDcsMS4zNSwtMi40OSwxLjk4LC0zLjQyLDIuMTNdLFsiYyIsLS41NCwuMDksLS45NiwtLjAzLC0xLjYyLC0uMzldLFsiYyIsLS4yMSwtLjE1LC0uNDUsLS4yNywtLjU0LC0uM10sWyJjIiwtLjE4LC0uMDksLS4yMSwtLjIxLC0uMTIsLS40NV0sWyJjIiwuMDYsLS4yNywuMzMsLS40OCwuNTQsLS40OF0sWyJjIiwuMDMsMCwuMjcsLjA5LC40OCwuMjFdLFsiYyIsLjQ4LC4yNCwuNjksLjI3LC45OSwuMjddLFsiYyIsLjYsLS4wNiwxLjE3LC0uNDIsMi4xLC0xLjM1XSxbImMiLDIuMjIsLTIuMjIsNC4wMiwtNC45OCw0Ljk1LC03LjU5XSxbImMiLC4yMSwtLjU3LC4zLC0uNzgsLjQ4LC0uOTNdLFsiYyIsLjE1LC0uMTUsLjQyLC0uMjcsLjY2LC0uMzNdLFsieiJdLFsibSIsLTMuMDYsMTIuODRdLFsiYyIsLjI3LC0uMDMsMS42OCwwLDIuMDEsLjAzXSxbImMiLDEuOTIsLjE4LDMuMTUsLjY5LDMuNjMsMS41XSxbImMiLC4xOCwuMzMsLjI0LC41MSwuMjEsLjkzXSxbImMiLDAsLjQ1LC0uMDYsLjcyLC0uMjQsMS4xMV0sWyJjIiwtLjI0LC41MSwtLjY5LDEuMDIsLTEuMTcsMS4zNV0sWyJjIiwtLjIxLC4xNSwtLjIxLC4xNSwtLjEyLC4xOF0sWyJjIiwuNzIsLjE1LDEuMTEsLjMsMS41LC41N10sWyJjIiwuMzksLjI0LC42MywuNTcsLjc1LC45Nl0sWyJjIiwuMDksLjMsLjA5LC45NiwwLDEuMjldLFsiYyIsLS4xNSwuNTcsLS4zOSwxLjA1LC0uNzgsMS41XSxbImMiLC0uNjYsLjc1LC0xLjYyLDEuMzIsLTIuNjEsMS41M10sWyJjIiwtLjI3LC4wNiwtLjQyLC4wNiwtLjg0LC4wNl0sWyJjIiwtLjQ4LDAsLS41NywwLC0uODEsLS4wNl0sWyJjIiwtLjYsLS4xOCwtMS4wNSwtLjQyLC0xLjQ3LC0uODFdLFsiYyIsLS4zNiwtLjM5LC0uNDIsLS41MSwtLjMsLS43NV0sWyJjIiwuMTIsLS4yMSwuMzksLS4zOSwuNiwtLjM5XSxbImMiLC4wOSwwLC4xNSwuMDMsLjMzLC4xOF0sWyJjIiwuMTIsLjEyLC4yNywuMjQsLjM2LC4yN10sWyJjIiwuOTYsLjQ4LDIuNDYsLS4zMywyLjgyLC0xLjVdLFsiYyIsLjI0LC0uODEsLS4wMywtMS40NCwtLjY5LC0xLjc3XSxbImMiLC0uMzksLS4yMSwtMS4wMiwtLjMzLC0xLjUzLC0uMzNdLFsiYyIsLS4xOCwwLC0uMjEsMCwtLjI3LC0uMDldLFsiYyIsLS4wNiwtLjA5LC0uMDYsLS4zLC0uMDMsLS40OF0sWyJjIiwuMDYsLS4xOCwuMTgsLS4zNiwuMzMsLS4zNl0sWyJjIiwuMzksLS4wNiwuNTEsLS4wOSwuNzIsLS4xOF0sWyJjIiwuNjksLS4zNiwxLjExLC0xLjIzLC45OSwtMi4wMV0sWyJjIiwtLjA5LC0uNTEsLS40MiwtLjksLS45MywtMS4xN10sWyJjIiwtLjI0LC0uMTIsLS42LC0uMjcsLS44NywtLjNdLFsiYyIsLS4wOSwtLjAzLC0uMDksLS4wMywtLjEyLC4xMl0sWyJjIiwwLC4wOSwtLjIxLDEuMTEsLS40MiwyLjI1XSxbImMiLC0uNjYsMy43NSwtLjcyLDMuOTksLTEuMjYsNS4wN10sWyJjIiwtLjksMS44OSwtMi4yNSwyLjg1LC0zLjQ4LDIuNjFdLFsiYyIsLS4zOSwtLjA5LC0uNjksLS4yNywtMS4zOCwtLjg0XSxbImMiLC0uNjMsLS41MSwtLjYzLC0uNDgsLS42MywtLjZdLFsiYyIsMCwtLjE4LC4xOCwtLjQ4LC4zOSwtLjU3XSxbImMiLC4yMSwtLjEyLC4zLC0uMDksLjgxLC4zM10sWyJjIiwuMTUsLjE1LC4zOSwuMywuNTQsLjM2XSxbImMiLC4xOCwuMTIsLjI3LC4xMiwuNDgsLjE1XSxbImMiLC45OSwuMDYsMS43MSwtLjc4LDIuMDQsLTIuNDZdLFsiYyIsLjEyLC0uNjYsLjE4LC0xLjE0LC4yMSwtMi4yMl0sWyJjIiwuMDMsLTEuMjMsLjEyLC0yLjI1LC4zNiwtMy42M10sWyJjIiwuMDMsLS4yNCwuMDYsLS40NSwuMDYsLS40OF0sWyJjIiwtLjA2LC0uMDMsLS42NiwuMjcsLS45LC40Ml0sWyJjIiwtLjA2LC4wNiwtLjIxLC4xOCwtLjMzLC4zXSxbImMiLC0uNTcsLjU3LC0uNiwxLjM1LC0uMDYsMS43NF0sWyJjIiwuMTgsLjEyLC4yNCwuMjQsLjIxLC41MV0sWyJjIiwtLjAzLC4zLC0uMTUsLjQyLC0uNTcsLjQ4XSxbImMiLC0xLjExLC4yNCwtMi4yMiwtLjQyLC0yLjQzLC0xLjM4XSxbImMiLC0uMDksLS40NSwuMDMsLTEuMDIsLjMsLTEuNDddLFsiYyIsLjE4LC0uMjQsLjYsLS42MywuOSwtLjg0XSxbImMiLC45LC0uNiwyLjI4LC0xLjAyLDMuNjksLTEuMTFdLFsieiJdXSx3OjE1LjcwOSxoOjM0LjY1Nn0sInRpbWVzaWcuY29tbW9uIjp7ZDpbWyJNIiw2LjY2LC03LjgzXSxbImMiLC43MiwtLjA2LDEuNDEsLS4wMywxLjk4LC4wOV0sWyJjIiwxLjIsLjI3LDIuMzQsLjk2LDMuMDksMS45Ml0sWyJjIiwuNjMsLjgxLDEuMDgsMS44NiwxLjE0LDIuNzNdLFsiYyIsLjA2LDEuMDIsLS41MSwxLjkyLC0xLjQ0LDIuMjJdLFsiYyIsLS4yNCwuMDksLS4zLC4wOSwtLjYzLC4wOV0sWyJjIiwtLjMzLDAsLS40MiwwLC0uNjMsLS4wNl0sWyJjIiwtLjY2LC0uMjQsLTEuMTQsLS42MywtMS40MSwtMS4yXSxbImMiLC0uMTUsLS4zLC0uMjEsLS41MSwtLjI0LC0uOV0sWyJjIiwtLjA2LC0xLjA4LC41NywtMi4wNCwxLjU2LC0yLjM3XSxbImMiLC4xOCwtLjA2LC4yNywtLjA2LC42MywtLjA2XSxbImwiLC40NSwwXSxbImMiLC4wNiwuMDMsLjA5LC4wMywuMDksMF0sWyJjIiwwLDAsLS4wOSwtLjEyLC0uMjQsLS4yN10sWyJjIiwtMS4wMiwtMS4xMSwtMi41NSwtMS42OCwtNC4wOCwtMS41XSxbImMiLC0xLjI5LC4xNSwtMi4wNCwuNjksLTIuNCwxLjc0XSxbImMiLC0uMzYsLjkzLC0uNDIsMS44OSwtLjQyLDUuMzddLFsiYyIsMCwyLjk3LC4wNiwzLjk2LC4yNCw0Ljc3XSxbImMiLC4yNCwxLjA4LC42MywxLjY4LDEuNDEsMi4wN10sWyJjIiwuODEsLjM5LDIuMTYsLjQ1LDMuMTgsLjA5XSxbImMiLDEuMjksLS40NSwyLjM3LC0xLjUzLDMuMDMsLTIuOTddLFsiYyIsLjE1LC0uMzMsLjMzLC0uODcsLjM5LC0xLjE3XSxbImMiLC4wOSwtLjI0LC4xNSwtLjM2LC4zLC0uMzldLFsiYyIsLjIxLC0uMDMsLjQyLC4xNSwuMzksLjM2XSxbImMiLC0uMDYsLjM5LC0uNDIsMS4zOCwtLjY5LDEuODldLFsiYyIsLS45NiwxLjgsLTIuNDksMi45NCwtNC4yMywzLjE4XSxbImMiLC0uOTksLjEyLC0yLjU4LC0uMDYsLTMuNjMsLS40NV0sWyJjIiwtLjk2LC0uMzYsLTEuNzEsLS44NCwtMi40LC0xLjVdLFsiYyIsLTEuMTEsLTEuMTEsLTEuOCwtMi42MSwtMi4wNCwtNC41Nl0sWyJjIiwtLjA2LC0uNiwtLjA2LC0yLjAxLDAsLTIuNjFdLFsiYyIsLjI0LC0xLjk1LC45LC0zLjQ1LDIuMDEsLTQuNTZdLFsiYyIsLjY5LC0uNjYsMS40NCwtMS4xMSwyLjM3LC0xLjQ3XSxbImMiLC42MywtLjI0LDEuNDcsLS40MiwyLjIyLC0uNDhdLFsieiJdXSx3OjEzLjAzOCxoOjE1LjY4OX0sInRpbWVzaWcuY3V0Ijp7ZDpbWyJNIiw2LjI0LC0xMC40NF0sWyJjIiwuMDksLS4wNiwuMDksLS4wNiwuNDgsLS4wNl0sWyJjIiwuMzYsMCwuMzYsMCwuNDUsLjA2XSxbImwiLC4wNiwuMDldLFsibCIsMCwxLjIzXSxbImwiLDAsMS4yNl0sWyJsIiwuMjcsMF0sWyJjIiwxLjI2LDAsMi40OSwuNDUsMy40OCwxLjI5XSxbImMiLDEuMDUsLjg3LDEuOCwyLjI4LDEuODksMy40OF0sWyJjIiwuMDYsMS4wMiwtLjUxLDEuOTIsLTEuNDQsMi4yMl0sWyJjIiwtLjI0LC4wOSwtLjMsLjA5LC0uNjMsLjA5XSxbImMiLC0uMzMsMCwtLjQyLDAsLS42MywtLjA2XSxbImMiLC0uNjYsLS4yNCwtMS4xNCwtLjYzLC0xLjQxLC0xLjJdLFsiYyIsLS4xNSwtLjMsLS4yMSwtLjUxLC0uMjQsLS45XSxbImMiLC0uMDYsLTEuMDgsLjU3LC0yLjA0LDEuNTYsLTIuMzddLFsiYyIsLjE4LC0uMDYsLjI3LC0uMDYsLjYzLC0uMDZdLFsibCIsLjQ1LDBdLFsiYyIsLjA2LC4wMywuMDksLjAzLC4wOSwwXSxbImMiLDAsLS4wMywtLjQ1LC0uNTEsLS42NiwtLjY5XSxbImMiLC0uODcsLS42OSwtMS44MywtMS4wNSwtMi45NCwtMS4xMV0sWyJsIiwtLjQyLDBdLFsibCIsMCw3LjE3XSxbImwiLDAsNy4xNF0sWyJsIiwuNDIsMF0sWyJjIiwuNjksLS4wMywxLjIzLC0uMTgsMS44NiwtLjUxXSxbImMiLDEuMDUsLS41MSwxLjg5LC0xLjQ3LDIuNDYsLTIuN10sWyJjIiwuMTUsLS4zMywuMzMsLS44NywuMzksLTEuMTddLFsiYyIsLjA5LC0uMjQsLjE1LC0uMzYsLjMsLS4zOV0sWyJjIiwuMjEsLS4wMywuNDIsLjE1LC4zOSwuMzZdLFsiYyIsLS4wMywuMjQsLS4yMSwuNzgsLS4zOSwxLjJdLFsiYyIsLS45NiwyLjM3LC0yLjk0LDMuOSwtNS4xMywzLjldLFsibCIsLS4zLDBdLFsibCIsMCwxLjI2XSxbImwiLDAsMS4yM10sWyJsIiwtLjA2LC4wOV0sWyJjIiwtLjA5LC4wNiwtLjA5LC4wNiwtLjQ1LC4wNl0sWyJjIiwtLjM5LDAsLS4zOSwwLC0uNDgsLS4wNl0sWyJsIiwtLjA2LC0uMDldLFsibCIsMCwtMS4yOV0sWyJsIiwwLC0xLjI5XSxbImwiLC0uMjEsLS4wM10sWyJjIiwtMS4yMywtLjIxLC0yLjMxLC0uNjMsLTMuMjEsLTEuMjldLFsiYyIsLS4xNSwtLjA5LC0uNDUsLS4zNiwtLjY2LC0uNTddLFsiYyIsLTEuMTEsLTEuMTEsLTEuOCwtMi42MSwtMi4wNCwtNC41Nl0sWyJjIiwtLjA2LC0uNiwtLjA2LC0yLjAxLDAsLTIuNjFdLFsiYyIsLjI0LC0xLjk1LC45MywtMy40NSwyLjA0LC00LjU5XSxbImMiLC40MiwtLjM5LC43OCwtLjY2LDEuMjYsLS45M10sWyJjIiwuNzUsLS40NSwxLjY1LC0uNzUsMi42MSwtLjldLFsibCIsLjIxLC0uMDNdLFsibCIsMCwtMS4yOV0sWyJsIiwwLC0xLjI5XSxbInoiXSxbIm0iLC0uMDYsMTAuNDRdLFsiYyIsMCwtNS41OCwwLC02Ljk5LC0uMDMsLTYuOTldLFsiYyIsLS4xNSwwLC0uNjMsLjI3LC0uODcsLjQ1XSxbImMiLC0uNDUsLjM2LC0uNzUsLjkzLC0uOTMsMS43N10sWyJjIiwtLjE4LC44MSwtLjI0LDEuOCwtLjI0LDQuNzRdLFsiYyIsMCwyLjk3LC4wNiwzLjk2LC4yNCw0Ljc3XSxbImMiLC4yNCwxLjA4LC42NiwxLjY4LDEuNDEsMi4wN10sWyJjIiwuMTIsLjA2LC4zLC4xMiwuMzMsLjE1XSxbImwiLC4wOSwwXSxbImwiLDAsLTYuOTZdLFsieiJdXSx3OjEzLjAzOCxoOjIwLjk3fSwidGltZXNpZy5pbXBlcmZlY3R1bSI6e2Q6W1siTSIsMTMsLTVdLFsiYSIsOCw4LDAsMSwwLDAsMTBdXSx3OjEzLjAzOCxoOjIwLjk3fSwidGltZXNpZy5pbXBlcmZlY3R1bTIiOntkOltbIk0iLDEzLC01XSxbImEiLDgsOCwwLDEsMCwwLDEwXV0sdzoxMy4wMzgsaDoyMC45N30sInRpbWVzaWcucGVyZmVjdHVtIjp7ZDpbWyJNIiwxMywtNV0sWyJhIiw4LDgsMCwxLDAsMCwxMF1dLHc6MTMuMDM4LGg6MjAuOTd9LCJ0aW1lc2lnLnBlcmZlY3R1bTIiOntkOltbIk0iLDEzLC01XSxbImEiLDgsOCwwLDEsMCwwLDEwXV0sdzoxMy4wMzgsaDoyMC45N30sZjp7ZDpbWyJNIiw5LjkzLC0xNC4yOF0sWyJjIiwxLjUzLC0uMTgsMi44OCwuNDUsMy4xMiwxLjVdLFsiYyIsLjEyLC41MSwwLDEuMzIsLS4yNywxLjg2XSxbImMiLC0uMTUsLjMsLS40MiwuNTcsLS42MywuNjldLFsiYyIsLS42OSwuMzYsLTEuNTYsLjAzLC0xLjgzLC0uNjldLFsiYyIsLS4wOSwtLjI0LC0uMDksLS42OSwwLC0uODddLFsiYyIsLjA2LC0uMTIsLjIxLC0uMjQsLjQ1LC0uNDJdLFsiYyIsLjQyLC0uMjQsLjU3LC0uNDUsLjYsLS43Ml0sWyJjIiwuMDMsLS4zMywtLjA5LC0uMzksLS42MywtLjQyXSxbImMiLC0uMywwLC0uNDUsMCwtLjYsLjAzXSxbImMiLC0uODEsLjIxLC0xLjM1LC45MywtMS43NCwyLjQ2XSxbImMiLC0uMDYsLjI3LC0uNDgsMi4yNSwtLjQ4LDIuMzFdLFsiYyIsMCwuMDMsLjM5LC4wMywuOSwuMDNdLFsiYyIsLjcyLDAsLjksMCwuOTksLjA2XSxbImMiLC40MiwuMTUsLjQ1LC43MiwuMDMsLjldLFsiYyIsLS4xMiwuMDYsLS4yNCwuMDYsLTEuMTcsLjA2XSxbImwiLC0xLjA1LDBdLFsibCIsLS43OCwyLjU1XSxbImMiLC0uNDUsMS40MSwtLjg3LDIuNzksLS45NiwzLjA2XSxbImMiLC0uODcsMi4zNywtMi4zNyw0Ljc0LC0zLjc4LDUuOTFdLFsiYyIsLTEuMDUsLjksLTIuMDQsMS4yMywtMy4wOSwxLjA4XSxbImMiLC0xLjExLC0uMTgsLTEuODksLS43OCwtMi4wNCwtMS41OV0sWyJjIiwtLjEyLC0uNjYsLjE1LC0xLjcxLC41NCwtMi4xOV0sWyJjIiwuNjksLS43NSwxLjg2LC0uNTQsMi4yMiwuMzldLFsiYyIsLjA2LC4xNSwuMDksLjI3LC4wOSwuNDhdLFsiYyIsMCwuMjQsLS4wMywuMjcsLS4xMiwuNDJdLFsiYyIsLS4wMywuMDksLS4xNSwuMTgsLS4yNywuMjddLFsiYyIsLS4wOSwuMDYsLS4yNywuMjEsLS4zNiwuMjddLFsiYyIsLS4yNCwuMTgsLS4zNiwuMzYsLS4zOSwuNl0sWyJjIiwtLjAzLC4zMywuMDksLjM5LC42MywuNDJdLFsiYyIsLjQyLDAsLjYzLC0uMDMsLjksLS4xNV0sWyJjIiwuNiwtLjMsLjk2LC0uOTYsMS4zOCwtMi42NF0sWyJjIiwuMDksLS40MiwuNjMsLTIuNTUsMS4xNywtNC43N10sWyJsIiwxLjAyLC00LjA4XSxbImMiLDAsLS4wMywtLjM2LC0uMDMsLS44MSwtLjAzXSxbImMiLC0uNzIsMCwtLjgxLDAsLS45MywtLjA2XSxbImMiLC0uNDIsLS4xOCwtLjM5LC0uNzUsLjAzLC0uOV0sWyJjIiwuMDksLS4wNiwuMjcsLS4wNiwxLjA1LC0uMDZdLFsibCIsLjk2LDBdLFsibCIsMCwtLjA5XSxbImMiLC4wNiwtLjE4LC4zLC0uNzIsLjUxLC0xLjE3XSxbImMiLDEuMiwtMi40NiwzLjMsLTQuMjMsNS4zNCwtNC41XSxbInoiXV0sdzoxNi4xNTUsaDoxOS40NDV9LG06e2Q6W1siTSIsMi43OSwtOC45MV0sWyJjIiwuMDksMCwuMywtLjAzLC40NSwtLjAzXSxbImMiLC4yNCwuMDMsLjMsLjAzLC40NSwuMTJdLFsiYyIsLjM2LC4xNSwuNjMsLjU0LC43NSwxLjAyXSxbImwiLC4wMywuMjFdLFsibCIsLjMzLC0uM10sWyJjIiwuNjksLS42OSwxLjM4LC0xLjAyLDIuMDcsLTEuMDJdLFsiYyIsLjI3LDAsLjMzLDAsLjQ4LC4wNl0sWyJjIiwuMjEsLjA5LC40OCwuMzYsLjYzLC42XSxbImMiLC4wMywuMDksLjEyLC4yNywuMTgsLjQyXSxbImMiLC4wMywuMTUsLjA5LC4yNywuMTIsLjI3XSxbImMiLDAsMCwuMDksLS4wOSwuMTgsLS4yMV0sWyJjIiwuMzMsLS4zOSwuODcsLS44MSwxLjI5LC0uOTldLFsiYyIsLjc4LC0uMzMsMS40NywtLjIxLDIuMDEsLjMzXSxbImMiLC4zLC4zMywuNDgsLjY5LC42LDEuMTRdLFsiYyIsLjA5LC40MiwuMDYsLjU0LC0uNTQsMy4wNl0sWyJjIiwtLjMzLDEuMjksLS41NywyLjQsLS41NywyLjQzXSxbImMiLDAsLjEyLC4wOSwuMjEsLjIxLC4yMV0sWyJjIiwuMjQsMCwuNzUsLS4zLDEuMiwtLjcyXSxbImMiLC40NSwtLjM5LC42LC0uNDUsLjc4LC0uMjddLFsiYyIsLjE4LC4xOCwuMDksLjM2LC0uNDUsLjg3XSxbImMiLC0xLjA1LC45NiwtMS44MywxLjQ3LC0yLjU4LDEuNzFdLFsiYyIsLS45MywuMzMsLTEuNTMsLjIxLC0xLjgsLS4zM10sWyJjIiwtLjA2LC0uMTUsLS4wNiwtLjIxLC0uMDYsLS40NV0sWyJjIiwwLC0uMjQsLjAzLC0uNDgsLjYsLTIuODJdLFsiYyIsLjQyLC0xLjcxLC42LC0yLjY0LC42MywtMi43OV0sWyJjIiwuMDMsLS41NywtLjMsLS43NSwtLjg0LC0uNDhdLFsiYyIsLS4yNCwuMTIsLS41NCwuMzksLS42NiwuNjNdLFsiYyIsLS4wMywuMDksLS40MiwxLjM4LC0uOSwzXSxbImMiLC0uOSwzLjE1LC0uODQsMywtMS4xNCwzLjE1XSxbImwiLC0uMTUsLjA5XSxbImwiLC0uNzgsMF0sWyJjIiwtLjYsMCwtLjc4LDAsLS44NCwtLjA2XSxbImMiLC0uMDksLS4wMywtLjE4LC0uMTgsLS4xOCwtLjI3XSxbImMiLDAsLS4wMywuMzYsLTEuMzgsLjg0LC0yLjk3XSxbImMiLC41NywtMi4wNCwuODEsLTIuOTcsLjg0LC0zLjEyXSxbImMiLC4wMywtLjU0LC0uMywtLjcyLC0uODQsLS40NV0sWyJjIiwtLjI0LC4xMiwtLjU3LC40MiwtLjY2LC42M10sWyJjIiwtLjA2LC4wOSwtLjUxLDEuNDQsLTEuMDUsMi45N10sWyJjIiwtLjUxLDEuNTYsLS45OSwyLjg1LC0uOTksMi45MV0sWyJjIiwtLjA2LC4xMiwtLjIxLC4yNCwtLjM2LC4zXSxbImMiLC0uMTIsLjA2LC0uMjEsLjA2LC0uOSwuMDZdLFsiYyIsLS42LDAsLS43OCwwLC0uODQsLS4wNl0sWyJjIiwtLjA5LC0uMDMsLS4xOCwtLjE4LC0uMTgsLS4yN10sWyJjIiwwLC0uMDMsLjQ1LC0xLjM4LC45OSwtMi45N10sWyJjIiwxLjA1LC0zLjE4LDEuMDUsLTMuMTgsLjkzLC0zLjQ1XSxbImMiLC0uMTIsLS4yNywtLjM5LC0uMywtLjcyLC0uMTVdLFsiYyIsLS41NCwuMjcsLTEuMTQsMS4xNywtMS41NiwyLjRdLFsiYyIsLS4wNiwuMTUsLS4xNSwuMywtLjE4LC4zNl0sWyJjIiwtLjIxLC4yMSwtLjU3LC4yNywtLjcyLC4wOV0sWyJjIiwtLjA5LC0uMDksLS4wNiwtLjIxLC4wNiwtLjYzXSxbImMiLC40OCwtMS4yNiwxLjI2LC0yLjQ2LDIuMDEsLTMuMjFdLFsiYyIsLjU3LC0uNTQsMS4yLC0uODcsMS44MywtMS4wMl0sWyJ6Il1dLHc6MTQuNjg3LGg6OS4xMjZ9LHA6e2Q6W1siTSIsMS45MiwtOC43XSxbImMiLC4yNywtLjA5LC44MSwtLjA2LDEuMTEsLjAzXSxbImMiLC41NCwuMTgsLjkzLC41MSwxLjE3LC45OV0sWyJjIiwuMDksLjE1LC4xNSwuMzMsLjE4LC4zNl0sWyJsIiwwLC4xMl0sWyJsIiwuMywtLjI3XSxbImMiLC42NiwtLjYsMS4zNSwtMS4wMiwyLjEzLC0xLjJdLFsiYyIsLjIxLC0uMDYsLjMzLC0uMDYsLjc4LC0uMDZdLFsiYyIsLjQ1LDAsLjUxLDAsLjg0LC4wOV0sWyJjIiwxLjI5LC4zMywyLjA3LDEuMzIsMi4yNSwyLjc5XSxbImMiLC4wOSwuODEsLS4wOSwyLjAxLC0uNDUsMi43OV0sWyJjIiwtLjU0LDEuMjYsLTEuODYsMi41NSwtMy4xOCwzLjAzXSxbImMiLC0uNDUsLjE4LC0uODEsLjI0LC0xLjI5LC4yNF0sWyJjIiwtLjY5LC0uMDMsLTEuMzUsLS4xOCwtMS44NiwtLjQ1XSxbImMiLC0uMywtLjE1LC0uNTEsLS4xOCwtLjY5LC0uMDldLFsiYyIsLS4wOSwuMDMsLS4xOCwuMDksLS4xOCwuMTJdLFsiYyIsLS4wOSwuMTIsLTEuMDUsMi45NCwtMS4wNSwzLjA2XSxbImMiLDAsLjI0LC4xOCwuNDgsLjUxLC42M10sWyJjIiwuMTgsLjA2LC41NCwuMTUsLjc1LC4xNV0sWyJjIiwuMjEsMCwuMzYsLjA2LC40MiwuMThdLFsiYyIsLjEyLC4xOCwuMDYsLjQyLC0uMTIsLjU0XSxbImMiLC0uMDksLjAzLC0uMTUsLjAzLC0uNzgsMF0sWyJjIiwtMS45OCwtLjE1LC0zLjgxLC0uMTUsLTUuNzksMF0sWyJjIiwtLjYzLC4wMywtLjY5LC4wMywtLjc4LDBdLFsiYyIsLS4yNCwtLjE1LC0uMjQsLS41NywuMDMsLS42Nl0sWyJjIiwuMDYsLS4wMywuNDgsLS4wOSwuOTksLS4xMl0sWyJjIiwuODcsLS4wNiwxLjExLC0uMDksMS4zNSwtLjIxXSxbImMiLC4xOCwtLjA2LC4zMywtLjE4LC4zOSwtLjNdLFsiYyIsLjA2LC0uMTIsMy4yNCwtOS40MiwzLjI3LC05LjZdLFsiYyIsLjA2LC0uMzMsLjAzLC0uNTcsLS4xNSwtLjY5XSxbImMiLC0uMDksLS4wNiwtLjEyLC0uMDYsLS4zLC0uMDZdLFsiYyIsLS42OSwuMDYsLTEuNTMsMS4wMiwtMi4yOCwyLjYxXSxbImMiLC0uMDksLjIxLC0uMjEsLjQ1LC0uMjcsLjUxXSxbImMiLC0uMDksLjEyLC0uMzMsLjI0LC0uNDgsLjI0XSxbImMiLC0uMTgsMCwtLjM2LC0uMTUsLS4zNiwtLjNdLFsiYyIsMCwtLjI0LC43OCwtMS44MywxLjI2LC0yLjU1XSxbImMiLC43MiwtMS4xMSwxLjQ3LC0xLjc0LDIuMjgsLTEuOTJdLFsieiJdLFsibSIsNS4zNywxLjQ3XSxbImMiLC0uMjcsLS4xMiwtLjc1LC0uMDMsLTEuMTQsLjIxXSxbImMiLC0uNzUsLjQ4LC0xLjQ3LDEuNjgsLTEuODksMy4xNV0sWyJjIiwtLjQ1LDEuNDcsLS40MiwyLjM0LDAsMi43XSxbImMiLC40NSwuMzksMS4yNiwuMjEsMS44MywtLjM2XSxbImMiLC41MSwtLjUxLC45OSwtMS42OCwxLjM4LC0zLjI3XSxbImMiLC4zLC0xLjE3LC4zMywtMS43NCwuMTUsLTIuMTNdLFsiYyIsLS4wOSwtLjE1LC0uMTUsLS4yMSwtLjMzLC0uM10sWyJ6Il1dLHc6MTQuNjg5LGg6MTMuMTI3fSxyOntkOltbIk0iLDYuMzMsLTkuMTJdLFsiYyIsLjI3LC0uMDMsLjkzLDAsMS4yLC4wNl0sWyJjIiwuODQsLjIxLDEuMjMsLjgxLDEuMDIsMS41M10sWyJjIiwtLjI0LC43NSwtLjksMS4xNywtMS41NiwuOTZdLFsiYyIsLS4zMywtLjA5LC0uNTEsLS4zLC0uNjYsLS43NV0sWyJjIiwtLjAzLC0uMTIsLS4wOSwtLjI0LC0uMTIsLS4zXSxbImMiLC0uMDksLS4xNSwtLjMsLS4yNCwtLjQ4LC0uMjRdLFsiYyIsLS41NywwLC0xLjM4LC41NCwtMS42NSwxLjA4XSxbImMiLC0uMDYsLjE1LC0uMzMsMS4xNywtLjksMy4yN10sWyJjIiwtLjU3LDIuMzEsLS44MSwzLjEyLC0uODcsMy4yMV0sWyJjIiwtLjAzLC4wNiwtLjEyLC4xNSwtLjE4LC4yMV0sWyJsIiwtLjEyLC4wNl0sWyJsIiwtLjgxLC4wM10sWyJjIiwtLjY5LDAsLS44MSwwLC0uOSwtLjAzXSxbImMiLC0uMDksLS4wNiwtLjE4LC0uMjEsLS4xOCwtLjNdLFsiYyIsMCwtLjA2LC4zOSwtMS42MiwuOSwtMy41MV0sWyJjIiwuODQsLTMuMjQsLjg3LC0zLjQ1LC44NywtMy43Ml0sWyJjIiwwLC0uMjEsMCwtLjI3LC0uMDMsLS4zNl0sWyJjIiwtLjEyLC0uMTUsLS4yMSwtLjI0LC0uNDIsLS4yNF0sWyJjIiwtLjI0LDAsLS40NSwuMTUsLS43OCwuNDJdLFsiYyIsLS4zMywuMzYsLS40NSwuNTQsLS43MiwxLjE0XSxbImMiLC0uMDMsLjEyLC0uMjEsLjI0LC0uMzYsLjI3XSxbImMiLC0uMTIsMCwtLjE1LDAsLS4yNCwtLjA2XSxbImMiLC0uMTgsLS4xMiwtLjE4LC0uMjEsLS4wNiwtLjU0XSxbImMiLC4yMSwtLjU3LC40MiwtLjkzLC43OCwtMS4zMl0sWyJjIiwuNTQsLS41MSwxLjIsLS44MSwxLjk1LC0uODddLFsiYyIsLjgxLC0uMDMsMS41MywuMywxLjkyLC44N10sWyJsIiwuMTIsLjE4XSxbImwiLC4wOSwtLjA5XSxbImMiLC41NywtLjQ1LDEuNDEsLS44NCwyLjE5LC0uOTZdLFsieiJdXSx3OjkuNDEsaDo5LjEzMn0sczp7ZDpbWyJNIiw0LjQ3LC04LjczXSxbImMiLC4wOSwwLC4zNiwtLjAzLC41NywtLjAzXSxbImMiLC43NSwuMDMsMS4yOSwuMjQsMS43MSwuNjNdLFsiYyIsLjUxLC41NCwuNjYsMS4yNiwuMzYsMS44M10sWyJjIiwtLjI0LC40MiwtLjYzLC41NywtMS4xMSwuNDJdLFsiYyIsLS4zMywtLjA5LC0uNiwtLjM2LC0uNiwtLjU3XSxbImMiLDAsLS4wMywuMDYsLS4yMSwuMTUsLS4zOV0sWyJjIiwuMTIsLS4yMSwuMTUsLS4zMywuMTgsLS40OF0sWyJjIiwwLC0uMjQsLS4wNiwtLjQ4LC0uMTUsLS42XSxbImMiLC0uMTUsLS4yMSwtLjQyLC0uMjQsLS43NSwtLjE1XSxbImMiLC0uMjcsLjA2LC0uNDgsLjE4LC0uNjksLjM2XSxbImMiLC0uMzksLjM5LC0uNTEsLjk2LC0uMzMsMS4zOF0sWyJjIiwuMDksLjIxLC40MiwuNTEsLjc4LC43Ml0sWyJjIiwxLjExLC42OSwxLjU5LDEuMTEsMS44OSwxLjY4XSxbImMiLC4yMSwuMzksLjI0LC43OCwuMTUsMS4yOV0sWyJjIiwtLjE4LDEuMiwtMS4xNywyLjE2LC0yLjUyLDIuNTJdLFsiYyIsLTEuMDIsLjI0LC0xLjk1LC4xMiwtMi43LC0uNDJdLFsiYyIsLS43MiwtLjUxLC0uOTksLTEuNDcsLS42LC0yLjE5XSxbImMiLC4yNCwtLjQ4LC43MiwtLjYzLDEuMTcsLS40Ml0sWyJjIiwuMzMsLjE4LC41NCwuNDUsLjU3LC44MV0sWyJjIiwwLC4yMSwtLjAzLC4zLC0uMzMsLjUxXSxbImMiLC0uMzMsLjI0LC0uMzksLjQyLC0uMjcsLjY5XSxbImMiLC4wNiwuMTUsLjIxLC4yNywuNDUsLjMzXSxbImMiLC4zLC4wOSwuODcsLjA5LDEuMiwwXSxbImMiLC43NSwtLjIxLDEuMjMsLS43MiwxLjI5LC0xLjM1XSxbImMiLC4wMywtLjQyLC0uMTUsLS44MSwtLjU0LC0xLjJdLFsiYyIsLS4yNCwtLjI0LC0uNDgsLS40MiwtMS40MSwtMS4wMl0sWyJjIiwtLjY5LC0uNDIsLTEuMDUsLS45MywtMS4wNSwtMS40N10sWyJjIiwwLC0uMzksLjEyLC0uODcsLjMsLTEuMjNdLFsiYyIsLjI3LC0uNTcsLjc4LC0xLjA1LDEuMzgsLTEuMzVdLFsiYyIsLjI0LC0uMTIsLjYzLC0uMjcsLjksLS4zXSxbInoiXV0sdzo2LjYzMixoOjguNzU4fSx6OntkOltbIk0iLDIuNjQsLTcuOTVdLFsiYyIsLjM2LC0uMDksLjgxLC0uMDMsMS43MSwuMjddLFsiYyIsLjc4LC4yMSwuOTYsLjI3LDEuNzQsLjNdLFsiYyIsLjg3LC4wNiwxLjAyLC4wMywxLjM4LC0uMjFdLFsiYyIsLjIxLC0uMTUsLjMzLC0uMTUsLjQ4LC0uMDZdLFsiYyIsLjE1LC4wOSwuMjEsLjMsLjE1LC40NV0sWyJjIiwtLjAzLC4wNiwtMS4yNiwxLjI2LC0yLjc2LDIuNjddLFsibCIsLTIuNzMsMi41NV0sWyJsIiwuNTQsLjAzXSxbImMiLC41NCwuMDMsLjcyLC4wMywyLjAxLC4xNV0sWyJjIiwuMzYsLjAzLC45LC4wNiwxLjIsLjA5XSxbImMiLC42NiwwLC44MSwtLjAzLDEuMDIsLS4yNF0sWyJjIiwuMywtLjMsLjM5LC0uNzIsLjI3LC0xLjIzXSxbImMiLC0uMDYsLS4yNywtLjA2LC0uMjcsLS4wMywtLjM5XSxbImMiLC4xNSwtLjMsLjU0LC0uMjcsLjY5LC4wM10sWyJjIiwuMTUsLjMzLC4yNywxLjAyLC4yNywxLjVdLFsiYyIsMCwxLjQ3LC0xLjExLDIuNywtMi41MiwyLjc5XSxbImMiLC0uNTcsLjAzLC0xLjAyLC0uMDksLTIuMDEsLS41MV0sWyJjIiwtMS4wMiwtLjQyLC0xLjIzLC0uNDgsLTIuMTMsLS41NF0sWyJjIiwtLjgxLC0uMDYsLS45NiwtLjAzLC0xLjI2LC4xOF0sWyJjIiwtLjEyLC4wNiwtLjI0LC4xMiwtLjI3LC4xMl0sWyJjIiwtLjI3LDAsLS40NSwtLjMsLS4zNiwtLjUxXSxbImMiLC4wMywtLjA2LDEuMzIsLTEuMzIsMi45MSwtMi43OV0sWyJsIiwyLjg4LC0yLjczXSxbImMiLC0uMDMsMCwtLjIxLC4wMywtLjQyLC4wNl0sWyJjIiwtLjIxLC4wMywtLjc4LC4wOSwtMS4yMywuMTJdLFsiYyIsLTEuMTEsLjEyLC0xLjIzLC4xNSwtMS45NSwuMjddLFsiYyIsLS43MiwuMTUsLTEuMTcsLjE4LC0xLjI5LC4wOV0sWyJjIiwtLjI3LC0uMTgsLS4yMSwtLjc1LC4xMiwtMS4yNl0sWyJjIiwuMzksLS42LC45MywtMS4wMiwxLjU5LC0xLjJdLFsieiJdXSx3OjguNTczLGg6OC43NDN9LCIrIjp7ZDpbWyJNIiwzLjQ4LC05LjNdLFsiYyIsLjE4LC0uMDksLjM2LC0uMDksLjU0LDBdLFsiYyIsLjE4LC4wOSwuMjQsLjE1LC4zMywuM10sWyJsIiwuMDYsLjE1XSxbImwiLDAsMS4yOV0sWyJsIiwwLDEuMjldLFsibCIsMS4yOSwwXSxbImMiLDEuMjMsMCwxLjI5LDAsMS40MSwuMDZdLFsiYyIsLjA2LC4wMywuMTUsLjA5LC4xOCwuMTJdLFsiYyIsLjEyLC4wOSwuMjEsLjMzLC4yMSwuNDhdLFsiYyIsMCwuMTUsLS4wOSwuMzksLS4yMSwuNDhdLFsiYyIsLS4wMywuMDMsLS4xMiwuMDksLS4xOCwuMTJdLFsiYyIsLS4xMiwuMDYsLS4xOCwuMDYsLTEuNDEsLjA2XSxbImwiLC0xLjI5LDBdLFsibCIsMCwxLjI5XSxbImMiLDAsMS4yMywwLDEuMjksLS4wNiwxLjQxXSxbImMiLC0uMDksLjE4LC0uMTUsLjI0LC0uMywuMzNdLFsiYyIsLS4yMSwuMDksLS4zOSwuMDksLS41NywwXSxbImMiLC0uMTgsLS4wOSwtLjI0LC0uMTUsLS4zMywtLjMzXSxbImMiLC0uMDYsLS4xMiwtLjA2LC0uMTgsLS4wNiwtMS40MV0sWyJsIiwwLC0xLjI5XSxbImwiLC0xLjI5LDBdLFsiYyIsLTEuMjMsMCwtMS4yOSwwLC0xLjQxLC0uMDZdLFsiYyIsLS4xOCwtLjA5LC0uMjQsLS4xNSwtLjMzLC0uMzNdLFsiYyIsLS4wOSwtLjE4LC0uMDksLS4zNiwwLC0uNTRdLFsiYyIsLjA5LC0uMTgsLjE1LC0uMjQsLjMzLC0uMzNdLFsibCIsLjE1LC0uMDZdLFsibCIsMS4yNiwwXSxbImwiLDEuMjksMF0sWyJsIiwwLC0xLjI5XSxbImMiLDAsLTEuMjMsMCwtMS4yOSwuMDYsLTEuNDFdLFsiYyIsLjA5LC0uMTgsLjE1LC0uMjQsLjMzLC0uMzNdLFsieiJdXSx3OjcuNTA3LGg6Ny41MTV9LCIsIjp7ZDpbWyJNIiwxLjg1LC0zLjM2XSxbImMiLC41NywtLjE1LDEuMTcsLjAzLDEuNTksLjQ1XSxbImMiLC40NSwuNDUsLjYsLjk2LC41MSwxLjg5XSxbImMiLC0uMDksMS4yMywtLjQyLDIuNDYsLS45OSwzLjkzXSxbImMiLC0uMywuNzIsLS43MiwxLjYyLC0uNzgsMS42OF0sWyJjIiwtLjE4LC4yMSwtLjUxLC4xOCwtLjY2LC0uMDZdLFsiYyIsLS4wMywtLjA2LC0uMDYsLS4xNSwtLjA2LC0uMThdLFsiYyIsMCwtLjA2LC4xMiwtLjMzLC4yNCwtLjYzXSxbImMiLC44NCwtMS44LDEuMDIsLTIuNjEsLjY5LC0zLjI0XSxbImMiLC0uMTIsLS4yNCwtLjI3LC0uMzYsLS43NSwtLjZdLFsiYyIsLS4zNiwtLjE1LC0uNDIsLS4yMSwtLjYsLS4zOV0sWyJjIiwtLjY5LC0uNjksLS42OSwtMS43MSwwLC0yLjRdLFsiYyIsLjIxLC0uMjEsLjUxLC0uMzksLjgxLC0uNDVdLFsieiJdXSx3OjMuNDUyLGg6OC4xNDN9LCItIjp7ZDpbWyJNIiwuMTgsLTUuMzRdLFsiYyIsLjA5LC0uMDYsLjE1LC0uMDYsMi4zMSwtLjA2XSxbImMiLDIuNDYsMCwyLjM3LDAsMi40NiwuMjFdLFsiYyIsLjEyLC4yMSwuMDMsLjQyLC0uMTUsLjU0XSxbImMiLC0uMDksLjA2LC0uMTUsLjA2LC0yLjI4LC4wNl0sWyJjIiwtMi4xNiwwLC0yLjIyLDAsLTIuMzEsLS4wNl0sWyJjIiwtLjI3LC0uMTUsLS4yNywtLjU0LC0uMDMsLS42OV0sWyJ6Il1dLHc6NS4wMDEsaDouODF9LCIuIjp7ZDpbWyJNIiwxLjMyLC0zLjM2XSxbImMiLDEuMDUsLS4yNywyLjEsLjU3LDIuMSwxLjY1XSxbImMiLDAsMS4wOCwtMS4wNSwxLjkyLC0yLjEsMS42NV0sWyJjIiwtLjksLS4yMSwtMS41LC0xLjE0LC0xLjI2LC0yLjA0XSxbImMiLC4xMiwtLjYzLC42MywtMS4xMSwxLjI2LC0xLjI2XSxbInoiXV0sdzozLjQxMyxoOjMuNDAyfSwic2NyaXB0cy53ZWRnZSI6e2Q6W1siTSIsLTMuNjYsLTcuNDRdLFsiYyIsLjA2LC0uMDksMCwtLjA5LC44MSwuMDNdLFsiYyIsMS44NiwuMywzLjg0LC4zLDUuNzMsMF0sWyJjIiwuNzgsLS4xMiwuNzIsLS4xMiwuNzgsLS4wM10sWyJjIiwuMTUsLjE1LC4xMiwuMjQsLS4yNCwuNl0sWyJjIiwtLjkzLC45MywtMS45OCwyLjc2LC0yLjY3LDQuNjJdLFsiYyIsLS4zLC43OCwtLjUxLDEuNzEsLS41MSwyLjEzXSxbImMiLDAsLjE1LDAsLjE4LC0uMDYsLjI3XSxbImMiLC0uMTIsLjA5LC0uMjQsLjA5LC0uMzYsMF0sWyJjIiwtLjA2LC0uMDksLS4wNiwtLjEyLC0uMDYsLS4yN10sWyJjIiwwLC0uNDIsLS4yMSwtMS4zNSwtLjUxLC0yLjEzXSxbImMiLC0uNjksLTEuODYsLTEuNzQsLTMuNjksLTIuNjcsLTQuNjJdLFsiYyIsLS4zNiwtLjM2LC0uMzksLS40NSwtLjI0LC0uNl0sWyJ6Il1dLHc6Ny40OSxoOjcuNzUyfSwic2NyaXB0cy50aHVtYiI6e2Q6W1siTSIsLS41NCwtMy42OV0sWyJjIiwuMTUsLS4wMywuMzYsLS4wNiwuNTEsLS4wNl0sWyJjIiwxLjQ0LDAsMi41OCwxLjExLDIuOTQsMi44NV0sWyJjIiwuMDksLjQ4LC4wOSwxLjMyLDAsMS44XSxbImMiLC0uMjcsMS40MSwtMS4wOCwyLjQzLC0yLjE2LDIuNzNdLFsibCIsLS4xOCwuMDZdLFsibCIsMCwuMTJdLFsiYyIsLjAzLC4wNiwuMDYsLjQ1LC4wOSwuODddLFsiYyIsLjAzLC41NywuMDMsLjc4LDAsLjg0XSxbImMiLC0uMDksLjI3LC0uMzksLjQ4LC0uNjYsLjQ4XSxbImMiLC0uMjcsMCwtLjU3LC0uMjEsLS42NiwtLjQ4XSxbImMiLC0uMDMsLS4wNiwtLjAzLC0uMjcsMCwtLjg0XSxbImMiLC4wMywtLjQyLC4wNiwtLjgxLC4wOSwtLjg3XSxbImwiLDAsLS4xMl0sWyJsIiwtLjE4LC0uMDZdLFsiYyIsLTEuMDgsLS4zLC0xLjg5LC0xLjMyLC0yLjE2LC0yLjczXSxbImMiLC0uMDksLS40OCwtLjA5LC0xLjMyLDAsLTEuOF0sWyJjIiwuMTUsLS44NCwuNTEsLTEuNTMsMS4wMiwtMi4wNF0sWyJjIiwuMzksLS4zOSwuODQsLS42MywxLjM1LC0uNzVdLFsieiJdLFsibSIsMS4wNSwuOV0sWyJjIiwtLjE1LC0uMDksLS4yMSwtLjA5LC0uNDUsLS4xMl0sWyJjIiwtLjE1LDAsLS4zLC4wMywtLjM5LC4wM10sWyJjIiwtLjU3LC4xOCwtLjksLjcyLC0xLjA4LDEuNzRdLFsiYyIsLS4wNiwuNDgsLS4wNiwxLjgsMCwyLjI4XSxbImMiLC4xNSwuOSwuNDIsMS40NCwuOSwxLjY1XSxbImMiLC4xOCwuMDksLjIxLC4wOSwuNTEsLjA5XSxbImMiLC4zLDAsLjMzLDAsLjUxLC0uMDldLFsiYyIsLjQ4LC0uMjEsLjc1LC0uNzUsLjksLTEuNjVdLFsiYyIsLjAzLC0uMjcsLjAzLC0uNTQsLjAzLC0xLjE0XSxbImMiLDAsLS42LDAsLS44NywtLjAzLC0xLjE0XSxbImMiLC0uMTUsLS45LC0uNDUsLTEuNDQsLS45LC0xLjY1XSxbInoiXV0sdzo1Ljk1NSxoOjkuNzV9LCJzY3JpcHRzLm9wZW4iOntkOltbIk0iLC0uNTQsLTMuNjldLFsiYyIsLjE1LC0uMDMsLjM2LC0uMDYsLjUxLC0uMDZdLFsiYyIsMS40NCwwLDIuNTgsMS4xMSwyLjk0LDIuODVdLFsiYyIsLjA5LC40OCwuMDksMS4zMiwwLDEuOF0sWyJjIiwtLjMzLDEuNzQsLTEuNDcsMi44NSwtMi45MSwyLjg1XSxbImMiLC0xLjQ0LDAsLTIuNTgsLTEuMTEsLTIuOTEsLTIuODVdLFsiYyIsLS4wOSwtLjQ4LC0uMDksLTEuMzIsMCwtMS44XSxbImMiLC4xNSwtLjg0LC41MSwtMS41MywxLjAyLC0yLjA0XSxbImMiLC4zOSwtLjM5LC44NCwtLjYzLDEuMzUsLS43NV0sWyJ6Il0sWyJtIiwxLjExLC45XSxbImMiLC0uMjEsLS4wOSwtLjI3LC0uMDksLS41MSwtLjEyXSxbImMiLC0uMywwLC0uNDIsLjAzLC0uNjYsLjE1XSxbImMiLC0uMjQsLjEyLC0uNTEsLjM5LC0uNjYsLjYzXSxbImMiLC0uNTQsLjkzLC0uNjMsMi42NCwtLjIxLDMuODFdLFsiYyIsLjIxLC41NCwuNTEsLjksLjkzLDEuMTFdLFsiYyIsLjIxLC4wOSwuMjQsLjA5LC41NCwuMDldLFsiYyIsLjMsMCwuMzMsMCwuNTQsLS4wOV0sWyJjIiwuNDIsLS4yMSwuNzIsLS41NywuOTMsLTEuMTFdLFsiYyIsLjM2LC0uOTksLjM2LC0yLjM3LDAsLTMuMzZdLFsiYyIsLS4yMSwtLjU0LC0uNTEsLS45LC0uOSwtMS4xMV0sWyJ6Il1dLHc6NS45NTUsaDo3LjV9LCJzY3JpcHRzLmxvbmdwaHJhc2UiOntkOltbIk0iLDEuNDcsLTE1LjA5XSxbImMiLC4zNiwtLjA5LC42NiwtLjE4LC42OSwtLjE4XSxbImMiLC4wNiwwLC4wNiwuNTQsLjA2LDExLjI1XSxbImwiLDAsMTEuMjVdLFsibCIsLS42MywuMTVdLFsiYyIsLS42NiwuMTgsLTEuNDQsLjM5LC0xLjUsLjM5XSxbImMiLC0uMDMsMCwtLjAzLC0zLjM5LC0uMDMsLTExLjI1XSxbImwiLDAsLTExLjI1XSxbImwiLC4zNiwtLjA5XSxbImMiLC4yMSwtLjA2LC42NiwtLjE4LDEuMDUsLS4yN10sWyJ6Il1dLHc6Mi4xNixoOjIzLjA0fSwic2NyaXB0cy5tZWRpdW1waHJhc2UiOntkOltbIk0iLDEuNDcsLTcuNTldLFsiYyIsLjM2LC0uMDksLjY2LC0uMTgsLjY5LC0uMThdLFsiYyIsLjA2LDAsLjA2LC4zOSwuMDYsNy41XSxbImwiLDAsNy41XSxbImwiLC0uNjMsLjE1XSxbImMiLC0uNjYsLjE4LC0xLjQ0LC4zOSwtMS41LC4zOV0sWyJjIiwtLjAzLDAsLS4wMywtMi4yOCwtLjAzLC03LjVdLFsibCIsMCwtNy41XSxbImwiLC4zNiwtLjA5XSxbImMiLC4yMSwtLjA2LC42NiwtLjE4LDEuMDUsLS4yN10sWyJ6Il1dLHc6Mi4xNixoOjE1LjU0fSwic2NyaXB0cy5zaG9ydHBocmFzZSI6e2Q6W1siTSIsMS40NywtNy41OV0sWyJjIiwuMzYsLS4wOSwuNjYsLS4xOCwuNjksLS4xOF0sWyJjIiwuMDYsMCwuMDYsLjIxLC4wNiwzLjc1XSxbImwiLDAsMy43NV0sWyJsIiwtLjQyLC4wOV0sWyJjIiwtLjU3LC4xOCwtMS42NSwuNDUsLTEuNzEsLjQ1XSxbImMiLC0uMDMsMCwtLjAzLC0uNzIsLS4wMywtMy43NV0sWyJsIiwwLC0zLjc1XSxbImwiLC4zNiwtLjA5XSxbImMiLC4yMSwtLjA2LC42NiwtLjE4LDEuMDUsLS4yN10sWyJ6Il1dLHc6Mi4xNixoOjguMDR9LCJzY3JpcHRzLnNuYXAiOntkOltbIk0iLDQuNSwtMy4zOV0sWyJjIiwuMzYsLS4wMywuOTYsLS4wMywxLjM1LDBdLFsiYyIsMS41NiwuMTUsMy4xNSwuOSw0LjIsMi4wMV0sWyJjIiwuMjQsLjI3LC4zMywuNDIsLjMzLC42XSxbImMiLDAsLjI3LC4wMywuMjQsLTIuNDYsMi4yMl0sWyJjIiwtMS4yOSwxLjAyLC0yLjQsMS44NiwtMi40OSwxLjkyXSxbImMiLC0uMTgsLjA5LC0uMywuMDksLS40OCwwXSxbImMiLC0uMDksLS4wNiwtMS4yLC0uOSwtMi40OSwtMS45Ml0sWyJjIiwtMi40OSwtMS45OCwtMi40NiwtMS45NSwtMi40NiwtMi4yMl0sWyJjIiwwLC0uMTgsLjA5LC0uMzMsLjMzLC0uNl0sWyJjIiwxLjA1LC0xLjA4LDIuNjQsLTEuODYsNC4xNywtMi4wMV0sWyJ6Il0sWyJtIiwxLjI5LDEuMTddLFsiYyIsLTEuNDcsLS4xNSwtMi45NywuMywtNC4xNCwxLjJdLFsibCIsLS4xOCwuMTVdLFsibCIsLjA2LC4wOV0sWyJjIiwuMTUsLjEyLDMuNjMsMi44NSwzLjY2LDIuODVdLFsiYyIsLjAzLDAsMy41MSwtMi43MywzLjY2LC0yLjg1XSxbImwiLC4wNiwtLjA5XSxbImwiLC0uMTgsLS4xNV0sWyJjIiwtLjg0LC0uNjYsLTEuODksLTEuMDgsLTIuOTQsLTEuMl0sWyJ6Il1dLHc6MTAuMzgsaDo2Ljg0fSwibm90ZWhlYWRzLnNsYXNoLndob2xlIjp7ZDpbWyJNIiw1LC01XSxbImwiLDEsMV0sWyJsIiwtNSw1XSxbImwiLC0xLC0xXSxbInoiXSxbIm0iLDQsNl0sWyJsIiwtNSwtNV0sWyJsIiwyLC0yXSxbImwiLDUsNV0sWyJ6Il0sWyJtIiwwLC0yXSxbImwiLDEsMV0sWyJsIiwtNSw1XSxbImwiLC0xLC0xXSxbInoiXSxbIm0iLC00LDZdLFsibCIsLTUsLTVdLFsibCIsMiwtMl0sWyJsIiw1LDVdLFsieiJdXSx3OjEwLjgxLGg6MTUuNjN9LCJub3RlaGVhZHMuc2xhc2gucXVhcnRlciI6e2Q6W1siTSIsOSwtNl0sWyJsIiwwLDRdLFsibCIsLTksOV0sWyJsIiwwLC00XSxbInoiXV0sdzo5LGg6OX0sIm5vdGVoZWFkcy5oYXJtb25pYy5xdWFydGVyIjp7ZDpbWyJNIiwzLjYzLC00LjAyXSxbImMiLC4wOSwtLjA2LC4xOCwtLjA5LC4yNCwtLjAzXSxbImMiLC4wMywuMDMsLjg3LC45MywxLjgzLDIuMDFdLFsiYyIsMS41LDEuNjUsMS44LDEuOTgsMS44LDIuMDRdLFsiYyIsMCwuMDYsLS4zLC4zOSwtMS44LDIuMDRdLFsiYyIsLS45NiwxLjA4LC0xLjgsMS45OCwtMS44MywyLjAxXSxbImMiLC0uMDYsLjA2LC0uMTUsLjAzLC0uMjQsLS4wM10sWyJjIiwtLjEyLC0uMDksLTMuNTQsLTMuODQsLTMuNiwtMy45M10sWyJjIiwtLjAzLC0uMDMsLS4wMywtLjA5LC0uMDMsLS4xNV0sWyJjIiwuMDMsLS4wNiwzLjQ1LC0zLjg0LDMuNjMsLTMuOTZdLFsieiJdXSx3OjcuNSxoOjguMTY1fSwibm90ZWhlYWRzLnRyaWFuZ2xlLnF1YXJ0ZXIiOntkOltbIk0iLDAsNF0sWyJsIiw5LDBdLFsibCIsLTQuNSwtOV0sWyJ6Il1dLHc6OSxoOjl9fSxpPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTAsbj1lLmxlbmd0aDtyPG47cisrKXt0W3JdPVtdO2Zvcih2YXIgYT0wLGk9ZVtyXS5sZW5ndGg7YTxpO2ErKyl0W3JdW2FdPWVbcl1bYV19cmV0dXJuIHR9LHM9e3ByaW50U3ltYm9sOmZ1bmN0aW9uKGUsdCxyLG4scyl7aWYoIWFbcl0pcmV0dXJuIG51bGw7dmFyIG89aShhW3JdLmQpO29bMF1bMV0rPWUsb1swXVsyXSs9dDtmb3IodmFyIGM9IiIsbD0wO2w8by5sZW5ndGg7bCsrKWMrPW9bbF0uam9pbigiICIpO3JldHVybiBzLnBhdGg9YyxuLnBhdGgocyl9LGdldFBhdGhGb3JTeW1ib2w6ZnVuY3Rpb24oZSx0LHIsbixzKXtpZihuPW58fDEscz1zfHwxLCFhW3JdKXJldHVybiBudWxsO3ZhciBvPWkoYVtyXS5kKTtyZXR1cm4gMT09PW4mJjE9PT1zfHxmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXt2YXIgaSxzLG89ZVtuXTtmb3IoaT0xLHM9by5sZW5ndGg7aTxzO2krKylvW2ldKj1pJTI/dDpyfX0obyxuLHMpLG9bMF1bMV0rPWUsb1swXVsyXSs9dCxvfSxnZXRTeW1ib2xXaWR0aDpmdW5jdGlvbihlKXtyZXR1cm4gYVtlXT9hW2VdLnc6MH0sc3ltYm9sSGVpZ2h0SW5QaXRjaGVzOmZ1bmN0aW9uKGUpe3JldHVybihhW2VdP2FbZV0uaDowKS9uLlNURVB9LGdldFN5bWJvbEFsaWduOmZ1bmN0aW9uKGUpe3JldHVybiJzY3JpcHRzIj09PWUuc3Vic3RyaW5nKDAsNykmJiJzY3JpcHRzLnJvbGwiIT09ZT8iY2VudGVyIjoibGVmdCJ9LGdldFlDb3JyOmZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIjAiOmNhc2UiMSI6Y2FzZSIyIjpjYXNlIjMiOmNhc2UiNCI6Y2FzZSI1IjpjYXNlIjYiOmNhc2UiNyI6Y2FzZSI4IjpjYXNlIjkiOmNhc2UiKyI6Y2FzZSJmbGFncy5kNjR0aCI6Y2FzZSJzY3JpcHRzLnRyaWxsIjpjYXNlInNjcmlwdHMudXBib3ciOmNhc2Uic2NyaXB0cy5kb3duYm93IjpyZXR1cm4tMjtjYXNlInRpbWVzaWcuY29tbW9uIjpjYXNlInRpbWVzaWcuY3V0IjpkZWZhdWx0OnJldHVybiAwO2Nhc2UiZmxhZ3MuZDMybmQiOmNhc2UicmVzdHMuaGFsZiI6Y2FzZSJyZXN0cy44dGgiOmNhc2UicmVzdHMucXVhcnRlciI6Y2FzZSJyZXN0cy4xNnRoIjpjYXNlInJlc3RzLjMybmQiOmNhc2UicmVzdHMuNjR0aCI6Y2FzZSJzY3JpcHRzLnVmZXJtYXRhIjpjYXNlInNjcmlwdHMud2VkZ2UiOmNhc2Uic2NyaXB0cy5yb2xsIjpjYXNlInNjcmlwdHMuc2hvcnRwaHJhc2UiOmNhc2Uic2NyaXB0cy5sb25ncGhyYXNlIjpyZXR1cm4tMTtjYXNlImZsYWdzLnUzMm5kIjpjYXNlInJlc3RzLndob2xlIjpjYXNlInNjcmlwdHMuZGZlcm1hdGEiOnJldHVybiAxO2Nhc2UiZmxhZ3MudTY0dGgiOnJldHVybiAzO2Nhc2UiZiI6Y2FzZSJtIjpjYXNlInAiOmNhc2UicyI6Y2FzZSJ6IjpyZXR1cm4tNH19LHNldFN5bWJvbDpmdW5jdGlvbihlLHQpe2FbZV09dH19O2UuZXhwb3J0cz1zfSw1ODEwOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7c3dpdGNoKGUpe2Nhc2UiQiMiOnJldHVybiJIIyI7Y2FzZSJC4pmvIjpyZXR1cm4iSOKZryI7Y2FzZSJCIjpyZXR1cm4iSCI7Y2FzZSJCYiI6Y2FzZSJC4pmtIjpyZXR1cm4iQiJ9cmV0dXJuIGV9ZS5leHBvcnRzPWZ1bmN0aW9uKGUscixuKXtmb3IodmFyIGE9ZS5zcGxpdCgiXG4iKSxpPTA7aTxhLmxlbmd0aDtpKyspe3ZhciBzPWFbaV0ubWF0Y2goL14oW0FCQ0RFRkddW+KZr+KZrV0/KT8oW15cL10rKT8oXC8oW0FCQ0RFRkddWyNi4pmv4pmtXT8pKT8vKTtpZihzKXt2YXIgbz1zWzFdfHwiIixjPXNbMl18fCIiLGw9c1s0XXx8IiI7biYmKG89dChvKSxsPXQobCkpO3ZhciBoPXI/IgMiOiIiLHU9bD8iLyIrbDoiIjthW2ldPVtvLGMsdV0uam9pbihoKX19cmV0dXJuIGEuam9pbigiXG4iKX19LDQ3NTA6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMzk4NyksYT1yKDI0MzUpLGk9cig0MzMxKSxzPXIoMjE4Nyksbz1yKDg4MzIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixjLGwpe2lmKCF0LmludmlzaWJsZSl7dmFyIGg9dC5jaGlsZHJlbi5sZW5ndGg+MCYmIlRlbXBvRWxlbWVudCI9PT10LmNoaWxkcmVuWzBdLnR5cGU7dC5lbGVtc2V0PVtdLG8uYmVnaW5Hcm91cChlLnBhcGVyLGUuY29udHJvbGxlcik7Zm9yKHZhciB1PTA7dTx0LmNoaWxkcmVuLmxlbmd0aDt1Kyspe3ZhciBkPXQuY2hpbGRyZW5bdV07aWYoIlRlbXBvRWxlbWVudCI9PT1kLnR5cGUpbihlLGQpO2Vsc2V7dmFyIGY9YShlLGQscik7InN5bWJvbCI9PT1kLnR5cGUmJmQuYyYmZC5jLmluZGV4T2YoIm5vdGVoZWFkIik+PTAmJmYuc2V0QXR0cmlidXRlKCJjbGFzcyIsImFiY2pzLW5vdGVoZWFkIil9fXZhciBwPXQudHlwZTtpZigoIm5vdGUiPT09dC50eXBlfHwicmVzdCI9PT10LnR5cGUpJiYodC5jb3VudGVycz1lLmNvbnRyb2xsZXIuY2xhc3Nlcy5nZXRDdXJyZW50KCkscD0ocCs9IiBkIitNYXRoLnJvdW5kKDFlMyp0LmR1cmF0aW9uQ2xhc3MpLzFlMykucmVwbGFjZSgvXC4vZywiLSIpLHQuYWJjZWxlbS5waXRjaGVzKSlmb3IodmFyIG09MDttPHQuYWJjZWxlbS5waXRjaGVzLmxlbmd0aDttKyspcCs9IiBwIit0LmFiY2VsZW0ucGl0Y2hlc1ttXS5waXRjaDt2YXIgZz1vLmVuZEdyb3VwKHAsdC50eXBlKTtpZihnKXtpZih0LmNsb25lZCYmKHQuY2xvbmVkLm92ZXJyaWRlQ2xhc3Nlcz1nLmNsYXNzTmFtZS5iYXNlVmFsKSx0Lm92ZXJyaWRlQ2xhc3Nlcyl7dmFyIHY9Zy5jbGFzc0xpc3QmJmcuY2xhc3NMaXN0Lmxlbmd0aD4wP2cuY2xhc3NMaXN0WzBdKyIgIjoiIjtnLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHYrdC5vdmVycmlkZUNsYXNzZXMpfWlmKGgpdC5zdGFydENoYXI9dC5hYmNlbGVtLnN0YXJ0Q2hhcix0LmVuZENoYXI9dC5hYmNlbGVtLmVuZENoYXIsYy5hZGQodCxnLCExLGwpO2Vsc2V7dC5lbGVtc2V0LnB1c2goZyk7dmFyIGI9ITE7Im5vdGUiIT09dC50eXBlJiYidGFiTnVtYmVyIiE9PXQudHlwZXx8KGI9ITApLGMuYWRkKHQsZyxiLGwpfX1lbHNlIHQuZWxlbXNldC5sZW5ndGg+MCYmYy5hZGQodCx0LmVsZW1zZXRbMF0sIm5vdGUiPT09dC50eXBlLGwpO2lmKHQua2xhc3MmJnModC5lbGVtc2V0LCJtYXJrIiwiIiwiIzAwZmYwMCIpLHQuaGludCYmcyh0LmVsZW1zZXQsImFiY2pzLWhpbnQiLCIiLG51bGwpLHQuYWJjZWxlbS5hYnNlbGVtPXQsdC5oZWFkcyYmdC5oZWFkcy5sZW5ndGg+MCl7dC5ub3RlUG9zaXRpb25zPVtdO2Zvcih2YXIgeT0wO3k8dC5oZWFkcy5sZW5ndGg7eSsrKXQubm90ZVBvc2l0aW9ucy5wdXNoKHt4OnQuaGVhZHNbeV0ueCt0LmhlYWRzW3ldLncvMix5OmwuemVyby10LmhlYWRzW3ldLnBpdGNoKmkuU1RFUH0pfX19fSw3NDg5OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY0NTQpLGE9cig3MTk5KTtmdW5jdGlvbiBpKGUsdCxyLG4saSxzKXtyPWEoZS5jYWxjWShyKSksaT1hKGUuY2FsY1koaSkpLHQ9YSh0KSxuPWEobik7dmFyIG89YShyK3MpO3JldHVybiJNIit0KyIgIityKyIgTCIrbisiICIraSsiTCIrbisiICIrYShpK3MpKyIgTCIrdCsiICIrbysieiJ9ZnVuY3Rpb24gcyhlLHQscixuKXtyZXR1cm4gdCsobi1lKSpyfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKDAhPT10LmJlYW1zLmxlbmd0aCl7Zm9yKHZhciByPSIiLGE9MDthPHQuYmVhbXMubGVuZ3RoO2ErKyl7dmFyIG89dC5iZWFtc1thXTtpZihvLnNwbGl0KXtmb3IodmFyIGM9KG09by5zdGFydFgsZz1vLnN0YXJ0WSx2PW8uZW5kWCwoby5lbmRZLWcpLyh2LW0pKSxsPVtdLGg9MDtoPG8uc3BsaXQubGVuZ3RoO2grPTIpbC5wdXNoKFtvLnNwbGl0W2hdLG8uc3BsaXRbaCsxXV0pO2ZvcihoPTA7aDxsLmxlbmd0aDtoKyspe3ZhciB1PXMoby5zdGFydFgsby5zdGFydFksYyxsW2hdWzBdKSxkPXMoby5zdGFydFgsby5zdGFydFksYyxsW2hdWzFdKTtyKz1pKGUsbFtoXVswXSx1LGxbaF1bMV0sZCxvLmR5KX19ZWxzZSByKz1pKGUsby5zdGFydFgsby5zdGFydFksby5lbmRYLG8uZW5kWSxvLmR5KX12YXIgZj0oImFiY2pzLWQiK3QuZHVyYXRpb24pLnJlcGxhY2UoL1wuL2csIi0iKSxwPWUuY29udHJvbGxlci5jbGFzc2VzLmdlbmVyYXRlKCJiZWFtLWVsZW0gIitmKTtyZXR1cm5bbihlLHtwYXRoOnIsc3Ryb2tlOiJub25lIixmaWxsOmUuZm9yZWdyb3VuZENvbG9yLGNsYXNzOnB9KV19dmFyIG0sZyx2fX0sMTI5OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY3NjQpLGE9cig0MzMxKSxpPXIoNTc1OSk7ZnVuY3Rpb24gcyhlLHQscixhKXtyZXR1cm4gbigiTSAlZiAlZiBDICVmICVmICVmICVmICVmICVmIEMgJWYgJWYgJWYgJWYgJWYgJWYgeiIsZStyWzBdLHQrYVswXSxlK3JbMV0sdCthWzFdLGUrclsyXSx0K2FbMl0sZStyWzNdLHQrYVszXSxlK3JbNF0sdCthWzRdLGUrcls1XSx0K2FbNV0sZStyWzZdLHQrYVs2XSl9dmFyIG89ZnVuY3Rpb24oZSx0LHIsbyxjLGwsaCl7dmFyIHU7aWYobCl7ZS5wYXBlci5vcGVuR3JvdXAoe2tsYXNzOmUuY29udHJvbGxlci5jbGFzc2VzLmdlbmVyYXRlKCJzdGFmZi1leHRyYSB2b2ljZS1uYW1lIiksImRhdGEtbmFtZSI6Y30pO3ZhciBkPXIrKG8tcikvMjtkLT1lLmNvbnRyb2xsZXIuZ2V0VGV4dFNpemUuYmFzZWxpbmVUb0NlbnRlcihsLCJ2b2ljZWZvbnQiLCJzdGFmZi1leHRyYSB2b2ljZS1uYW1lIiwwLDEpLGkoZSx7eDplLnBhZGRpbmcubGVmdCx5OmQsdGV4dDpsLHR5cGU6InZvaWNlZm9udCIsa2xhc3M6InN0YWZmLWV4dHJhIHZvaWNlLW5hbWUiLGFuY2hvcjoic3RhcnQiLGNlbnRlclZlcnRpY2FsbHk6ITB9KX1yZXR1cm4iYnJhY2UiPT09Yz91PWZ1bmN0aW9uKGUsdCxyLG4sYSl7dmFyIGk9bi1yLG89cyh0LHIsWzcuNSwtOCwyMSwwLDE4LjUsLTEwLjUsNy41XSxbMCxpLzUuNSxpLzMuMTQsaS8yLGkvMi45MyxpLzQuODgsMF0pO3JldHVybiBvKz1zKHQscixbMCwxNy41LC03LjUsNi42LC01LDIwLDBdLFtpLzIsaS8xLjQ2LGkvMS4yMixpLGkvMS4xOSxpLzEuNDIsaS8yXSksZS5wYXBlci5wYXRoKHtwYXRoOm8sc3Ryb2tlOmUuZm9yZWdyb3VuZENvbG9yLGZpbGw6ZS5mb3JlZ3JvdW5kQ29sb3IsY2xhc3M6ZS5jb250cm9sbGVyLmNsYXNzZXMuZ2VuZXJhdGUoYSksImRhdGEtbmFtZSI6YX0pfShlLHQscixvLGMpOiJicmFja2V0Ij09PWMmJih1PWZ1bmN0aW9uKGUsdCxyLGkscyl7dCs9YS5TVEVQO3ZhciBvPS43NSphLlNURVAsYz0uNzUqYS5TVEVQLGw9aS1yLGg9bigiTSAlZiAlZiBsICVmICVmIGwgJWYgJWYgbCAlZiAlZiB6Iix0LHItYywwLGwrMipjLG8sMCwwLC0obCsyKmMpKSx1PTIqYS5TVEVQLGQ9YS5TVEVQO3JldHVybiBoKz1uKCJNICVmICVmIHEgJWYgJWYgJWYgJWYgcSAlZiAlZiAlZiAlZiB6Iix0K28sci1jLC42KnUsLjIqZCx1LC1kLC4xKi11LC4zKmQsLXUsZCthLlNURVApLGgrPW4oIk0gJWYgJWYgcSAlZiAlZiAlZiAlZiBxICVmICVmICVmICVmIHoiLHQrbyxyK2MrbCwuNip1LC4yKi1kLHUsZCwuMSotdSwuMyotZCwtdSwtZC1hLlNURVApLGUucGFwZXIucGF0aCh7cGF0aDpoLHN0cm9rZTplLmZvcmVncm91bmRDb2xvcixmaWxsOmUuZm9yZWdyb3VuZENvbG9yLGNsYXNzOmUuY29udHJvbGxlci5jbGFzc2VzLmdlbmVyYXRlKHMpLCJkYXRhLW5hbWUiOnN9KX0oZSx0LHIsbyxjKSksbCYmKHU9ZS5wYXBlci5jbG9zZUdyb3VwKCkpLGgud3JhcFN2Z0VsKHtlbF90eXBlOmMsc3RhcnRDaGFyOi0xLGVuZENoYXI6LTF9LHUpLHV9O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIG49dC5zdGFydFZvaWNlLnN0YWZmLmFic29sdXRlWS0xMCphLlNURVA7cmV0dXJuIHQuZW5kVm9pY2UmJnQuZW5kVm9pY2Uuc3RhZmY/dC5lbmRZPXQuZW5kVm9pY2Uuc3RhZmYuYWJzb2x1dGVZLTIqYS5TVEVQOnQubGFzdENvbnRpbnVlZFZvaWNlJiZ0Lmxhc3RDb250aW51ZWRWb2ljZS5zdGFmZj90LmVuZFk9dC5sYXN0Q29udGludWVkVm9pY2Uuc3RhZmYuYWJzb2x1dGVZLTIqYS5TVEVQOnQuZW5kWT10LnN0YXJ0Vm9pY2Uuc3RhZmYuYWJzb2x1dGVZLTIqYS5TVEVQLG8oZSx0Lngsbix0LmVuZFksdC50eXBlLHQuaGVhZGVyLHIpfX0sMzI0NTpmdW5jdGlvbihlLHQscil7dmFyIG49cig2NzY0KSxhPXIoNjQ1NCksaT1yKDcxOTkpLHM9ZnVuY3Rpb24oZSx0LHIscyxvLGMsbCl7dD1pKHQpLHI9aShyKSxzPWkocyksbz1pKG8pLGM9aShjKSxsPWkobCk7dmFyIGg9bigiTSAlZiAlZiBMICVmICVmIE0gJWYgJWYgTCAlZiAlZiIsYyx0LGwscixjLHMsbCxvKTtyZXR1cm4gYShlLHtwYXRoOmgsaGlnaGxpZ2h0OiJzdHJva2UiLHN0cm9rZTplLmZvcmVncm91bmRDb2xvcixjbGFzczplLmNvbnRyb2xsZXIuY2xhc3Nlcy5nZW5lcmF0ZSgiZHluYW1pY3MgZGVjb3JhdGlvbiIpLCJkYXRhLW5hbWUiOiJkeW5hbWljcyJ9KX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2b2lkIDA9PT10LnBpdGNoJiZ3aW5kb3cuY29uc29sZS5lcnJvcigiQ3Jlc2NlbmRvIEVsZW1lbnQgeS1jb29yZGluYXRlIG5vdCBzZXQuIik7dmFyIG4sYT1lLmNhbGNZKHQucGl0Y2gpKzQsaT10LmFuY2hvcjE/dC5hbmNob3IxLng6MCxvPXQuYW5jaG9yMj90LmFuY2hvcjIueDo4MDA7cmV0dXJuIG49IjwiPT09dC5kaXI/cyhlLGErNCxhLGErNCxhKzgsaSxvKTpzKGUsYSxhKzQsYSs4LGErNCxpLG8pLHIud3JhcFN2Z0VsKHtlbF90eXBlOiJkeW5hbWljRGVjb3JhdGlvbiIsc3RhcnRDaGFyOi0xLGVuZENoYXI6LTF9LG4pLFtuXX19LDE1NDc6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1lLnBhcGVyLnJlY3RCZW5lYXRoKHQpO3JldHVybiByJiZlLnBhcGVyLnRleHQocix7eDowLHk6dC55KzcsInRleHQtYW5jaG9yIjoic3RhcnQiLCJmb250LXNpemUiOiIxNHB4IixmaWxsOiJyZ2JhKDAsMCwyNTUsLjQpIixzdHJva2U6InJnYmEoMCwwLDI1NSwuNCkifSksbn19LDUwMTI6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTUzNyksYT1yKDc2MTEpLGk9cig1NjY4KSxzPXIoNDMzMSksbz1yKDM1MjQpO2Z1bmN0aW9uIGMoZSx0LHIsYSl7bihlLHQscixhKTt2YXIgaT10LmhlaWdodCpzLlNURVA7cmV0dXJuIGUueSs9aSx0fWZ1bmN0aW9uIGwoZSx0LHIsbil7dmFyIGE9LShyLnN0YWZmc1tyLnN0YWZmcy5sZW5ndGgtMV0uYm90dG9tLTIpLGk9KG4uc3RhZmZzWzBdLnRvcC0xMCthKSpzLlNURVA7aTx0JiZlLm1vdmVZKHQtaSl9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4scyxoLHUsZCxmLHApe3ZhciBtPW5ldyBvKGUucGFwZXIsZCxmKSxnPXt9O3Quc2hvdWxkQWRkQ2xhc3NlcyYmKGcua2xhc3M9ImFiY2pzLW1ldGEtdG9wIiksZS5wYXBlci5vcGVuR3JvdXAoZyksZS5tb3ZlWShlLnBhZGRpbmcudG9wKSxpKGUsci50b3BUZXh0LG0pLGUucGFwZXIuY2xvc2VHcm91cCgpLGUubW92ZVkoZS5zcGFjaW5nLm11c2ljKTtmb3IodmFyIHY9W10sYj0wLHk9MDt5PHIubGluZXMubGVuZ3RoO3krKyl7dC5pbmNyTGluZSgpO3ZhciB4PXIubGluZXNbeV07aWYoeC5zdGFmZil7aWYoYisrLHIuZm9ybWF0dGluZy5tYXhTdGF2ZXMmJmI+ci5mb3JtYXR0aW5nLm1heFN0YXZlcylicmVhazt0LnNob3VsZEFkZENsYXNzZXMmJihnLmtsYXNzPSJhYmNqcy1zdGFmZi13cmFwcGVyIGFiY2pzLWwiK3QubGluZU51bWJlciksZS5wYXBlci5vcGVuR3JvdXAoZykseC52c2tpcCYmZS5tb3ZlWSh4LnZza2lwKSx2Lmxlbmd0aD49MSYmbChlLGUuc3BhY2luZy5zdGFmZlNlcGFyYXRpb24sdlt2Lmxlbmd0aC0xXSx4LnN0YWZmR3JvdXApO3ZhciBrPWMoZSx4LnN0YWZmR3JvdXAsbSx5KTtrLmxpbmU9cCt5LHYucHVzaChrKSxlLnBhcGVyLmNsb3NlR3JvdXAoKX1lbHNlIHgubm9uTXVzaWMmJih0LnNob3VsZEFkZENsYXNzZXMmJihnLmtsYXNzPSJhYmNqcy1ub24tbXVzaWMiKSxlLnBhcGVyLm9wZW5Hcm91cChnKSxpKGUseC5ub25NdXNpYyxtKSxlLnBhcGVyLmNsb3NlR3JvdXAoKSl9cmV0dXJuIHQucmVzZXQoKSxyLmJvdHRvbVRleHQmJnIuYm90dG9tVGV4dC5yb3dzJiZyLmJvdHRvbVRleHQucm93cy5sZW5ndGg+MCYmKHQuc2hvdWxkQWRkQ2xhc3NlcyYmKGcua2xhc3M9ImFiY2pzLW1ldGEtYm90dG9tIiksZS5wYXBlci5vcGVuR3JvdXAoZyksZS5tb3ZlWSgyNCksaShlLHIuYm90dG9tVGV4dCxtKSxlLnBhcGVyLmNsb3NlR3JvdXAoKSksYShlLHMsdSxoKSx7c3RhZmZncm91cHM6dixzZWxlY3RhYmxlczptLmdldEVsZW1lbnRzKCl9fX0sOTg3OTpmdW5jdGlvbihlLHQscil7dmFyIG49cig0Nzc3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZvaWQgMD09PXQucGl0Y2gmJndpbmRvdy5jb25zb2xlLmVycm9yKCJEeW5hbWljIEVsZW1lbnQgeS1jb29yZGluYXRlIG5vdCBzZXQuIik7dmFyIGE9bihlLHQuYW5jaG9yLngsdC5waXRjaCx0LmRlYyx7c2NhbGV4OjEsc2NhbGV5OjEsa2xhc3M6ZS5jb250cm9sbGVyLmNsYXNzZXMuZ2VuZXJhdGUoImRlY29yYXRpb24gZHluYW1pY3MiKSxmaWxsOmUuZm9yZWdyb3VuZENvbG9yLHN0cm9rZToibm9uZSIsbmFtZToiZHluYW1pY3MifSk7cmV0dXJuIHIud3JhcFN2Z0VsKHtlbF90eXBlOiJkeW5hbWljRGVjb3JhdGlvbiIsc3RhcnRDaGFyOi0xLGVuZENoYXI6LTEsZGVjb3JhdGlvbjp0LmRlY30sYSksW2FdfX0sNTk0NzpmdW5jdGlvbihlLHQscil7dmFyIG49cig2NzY0KSxhPXIoNTc1OSksaT1yKDY0NTQpLHM9cig3MTk5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbyxjKXt2b2lkIDA9PT10LnBpdGNoJiZ3aW5kb3cuY29uc29sZS5lcnJvcigiRW5kaW5nIEVsZW1lbnQgeS1jb29yZGluYXRlIG5vdCBzZXQuIik7dmFyIGw9cyhlLmNhbGNZKHQucGl0Y2gpKSxoPSIiO3QuYW5jaG9yMSYmKHI9cyh0LmFuY2hvcjEueCt0LmFuY2hvcjEudyksaCs9bigiTSAlZiAlZiBMICVmICVmICIscixsLHIscyhsKzIwKSkpLHQuYW5jaG9yMiYmKG89cyh0LmFuY2hvcjIueCksaCs9bigiTSAlZiAlZiBMICVmICVmICIsbyxsLG8scyhsKzIwKSkpLGgrPW4oIk0gJWYgJWYgTCAlZiAlZiAiLHIsbCxvLGwpLGUucGFwZXIub3Blbkdyb3VwKHtrbGFzczplLmNvbnRyb2xsZXIuY2xhc3Nlcy5nZW5lcmF0ZSgiZW5kaW5nIiksZmlsbDplLmZvcmVncm91bmRDb2xvciwiZGF0YS1uYW1lIjoiZW5kaW5nIn0pLGkoZSx7cGF0aDpoLHN0cm9rZTplLmZvcmVncm91bmRDb2xvcixmaWxsOmUuZm9yZWdyb3VuZENvbG9yLCJkYXRhLW5hbWUiOiJsaW5lIn0pLHQuYW5jaG9yMSYmYShlLHt4OnMocis1KSx5OnMoZS5jYWxjWSh0LnBpdGNoLS41KSksdGV4dDp0LnRleHQsdHlwZToicmVwZWF0Zm9udCIsa2xhc3M6ImVuZGluZyIsYW5jaG9yOiJzdGFydCIsbm9DbGFzczohMCxuYW1lOnQudGV4dH0pO3ZhciB1PWUucGFwZXIuY2xvc2VHcm91cCgpO3JldHVybiBjLndyYXBTdmdFbCh7ZWxfdHlwZToiZW5kaW5nIixzdGFydENoYXI6LTEsZW5kQ2hhcjotMX0sdSksW3VdfX0sOTA0NTpmdW5jdGlvbihlLHQscil7dmFyIG49cig2NzY0KSxhPXIoNjQ1NCksaT1yKDcxOTkpO2Z1bmN0aW9uIHMoZSx0LHIpe3JldHVybiBpKGUrcip0KX12YXIgbz1bWzMuNSwtNC44XV0sYz1bWzEuNSwtMV0sWy4zLC0uM10sWy0zLjUsMy44XV0sbD1bWy0xLjUsMl1dLGg9W1szLDRdLFszLC00XV0sdT1bWy0zLDRdLFstMywtNF1dO2Z1bmN0aW9uIGQoZSx0KXtmb3IodmFyIHI9IiIsbj0wO248ZS5sZW5ndGg7bisrKXIrPSJsIitlW25dWzBdKyIgIitzKGVbbl1bMV0sdCxlW25dWzBdKTtyZXR1cm4gcn12YXIgZj1mdW5jdGlvbihlLHQscixpLHMpe3ZhciBmLHA9bigiTSAlZiAlZiIsdCxyKTtmb3IocCs9ZChvLHMpLGY9MDtmPGk7ZisrKXArPWQoaCxzKTtmb3IocCs9ZChjLHMpLGY9MDtmPGk7ZisrKXArPWQodSxzKTtyZXR1cm4gcCs9ZChsLHMpKyJ6IixhKGUse3BhdGg6cCxoaWdobGlnaHQ6InN0cm9rZSIsc3Ryb2tlOmUuZm9yZWdyb3VuZENvbG9yLGNsYXNzOmUuY29udHJvbGxlci5jbGFzc2VzLmdlbmVyYXRlKCJkZWNvcmF0aW9uIiksImRhdGEtbmFtZSI6ImdsaXNzYW5kbyJ9KX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt0LmFuY2hvcjEmJnQuYW5jaG9yMiYmdC5hbmNob3IxLmhlYWRzJiZ0LmFuY2hvcjIuaGVhZHMmJjAhPT10LmFuY2hvcjEuaGVhZHMubGVuZ3RoJiYwIT09dC5hbmNob3IyLmhlYWRzLmxlbmd0aHx8d2luZG93LmNvbnNvbGUuZXJyb3IoIkdsaXNzYW5kbyBFbGVtZW50IG5vdCBzZXQuIik7dmFyIG4sYSxpPWUuY2FsY1kodC5hbmNob3IxLmhlYWRzWzBdLnBpdGNoKSxvPWUuY2FsY1kodC5hbmNob3IyLmhlYWRzWzBdLnBpdGNoKSxjPXQuYW5jaG9yMS54K3QuYW5jaG9yMS53LzIsbD10LmFuY2hvcjIueCt0LmFuY2hvcjIudy8yLGg9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGE9ci1lLGk9bi10O3JldHVybiBNYXRoLnNxcnQoYSphK2kqaSl9KGMsaSxsLG8pLHU9dC5hbmNob3IxLncvMis0LGQ9dC5hbmNob3IyLncvMis0LHA9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuKG4tdCkvKHItZSl9KGMsaSxsLG8pLG09cyhpLHAsdSksZz0ocyhvLHAsLWQpLG49aC11LWQsYT01LE1hdGgubWF4KDIsTWF0aC5mbG9vcigobi0yKmEpLzYpKSksdj1mKGUsYyt1LG0sZyxwKTtyZXR1cm4gci53cmFwU3ZnRWwoe2VsX3R5cGU6ImdsaXNzYW5kbyIsc3RhcnRDaGFyOi0xLGVuZENoYXI6LTF9LHYpLFt2XX19LDg4MzI6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzE5OSk7ZnVuY3Rpb24gYSgpe3RoaXMuaW5ncm91cD0hMX1hLnByb3RvdHlwZS5iZWdpbkdyb3VwPWZ1bmN0aW9uKGUsdCl7dGhpcy5wYXBlcj1lLHRoaXMuY29udHJvbGxlcj10LHRoaXMucGF0aD1bXSx0aGlzLmxhc3RNPVswLDBdLHRoaXMuaW5ncm91cD0hMCx0aGlzLnBhcGVyLm9wZW5Hcm91cCgpfSxhLnByb3RvdHlwZS5pc0luR3JvdXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmdyb3VwfSxhLnByb3RvdHlwZS5hZGRQYXRoPWZ1bmN0aW9uKGUpe2lmKDAhPT0oZT1lfHxbXSkubGVuZ3RoKXtlWzBdWzBdPSJtIixlWzBdWzFdPW4oZVswXVsxXS10aGlzLmxhc3RNWzBdKSxlWzBdWzJdPW4oZVswXVsyXS10aGlzLmxhc3RNWzFdKSx0aGlzLmxhc3RNWzBdKz1lWzBdWzFdLHRoaXMubGFzdE1bMV0rPWVbMF1bMl0sdGhpcy5wYXRoLnB1c2goZVswXSk7Zm9yKHZhciB0PTEscj1lLmxlbmd0aDt0PHI7dCsrKSJtIj09PWVbdF1bMF0mJih0aGlzLmxhc3RNWzBdKz1lW3RdWzFdLHRoaXMubGFzdE1bMV0rPWVbdF1bMl0pLHRoaXMucGF0aC5wdXNoKGVbdF0pfX0sYS5wcm90b3R5cGUuZW5kR3JvdXA9ZnVuY3Rpb24oZSx0KXt0aGlzLmluZ3JvdXA9ITE7Zm9yKHZhciByPTA7cjx0aGlzLnBhdGgubGVuZ3RoO3IrKyl0aGlzLnBhdGhbcl0uam9pbigiICIpO3RoaXMucGF0aD1bXTt2YXIgbj10aGlzLnBhcGVyLmNsb3NlR3JvdXAoKTtyZXR1cm4gbiYmKG4uc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5jb250cm9sbGVyLmNsYXNzZXMuZ2VuZXJhdGUoZSkpLG4uc2V0QXR0cmlidXRlKCJmaWxsIix0aGlzLmNvbnRyb2xsZXIucmVuZGVyZXIuZm9yZWdyb3VuZENvbG9yKSxuLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwibm9uZSIpLG4uc2V0QXR0cmlidXRlKCJkYXRhLW5hbWUiLHQpKSxufTt2YXIgaT1uZXcgYTtlLmV4cG9ydHM9aX0sNTY2ODpmdW5jdGlvbihlLHQscil7dmFyIG49cig0MTY5KSxhPXIoNTc1OSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGk9MDtpPHQucm93cy5sZW5ndGg7aSsrKXt2YXIgcz10LnJvd3NbaV07aWYocy5hYnNtb3ZlKWUuYWJzb2x1dGVtb3ZlWShzLmFic21vdmUpO2Vsc2UgaWYocy5tb3ZlKWUubW92ZVkocy5tb3ZlKTtlbHNlIGlmKHMudGV4dHx8cy5waHJhc2VzKXt2YXIgbz1zLmxlZnQ/cy5sZWZ0OjAsYz1hKGUse3g6byx5OmUueSx0ZXh0OnMudGV4dCxwaHJhc2VzOnMucGhyYXNlcywiZG9taW5hbnQtYmFzZWxpbmUiOnNbImRvbWluYW50LWJhc2VsaW5lIl0sdHlwZTpzLmZvbnQsa2xhc3M6cy5rbGFzcyxuYW1lOnMubmFtZSxhbmNob3I6cy5hbmNob3J9KTtzLmFic0VsZW1UeXBlJiZyLndyYXBTdmdFbCh7ZWxfdHlwZTpzLmFic0VsZW1UeXBlLG5hbWU6cy5uYW1lLHN0YXJ0Q2hhcjpzLnN0YXJ0Q2hhcixlbmRDaGFyOnMuZW5kQ2hhcix0ZXh0OnMudGV4dH0sYyl9ZWxzZSBpZihzLnNlcGFyYXRvciluKGUscy5zZXBhcmF0b3IpO2Vsc2UgaWYocy5zdGFydEdyb3VwKWUucGFwZXIub3Blbkdyb3VwKHtrbGFzczpzLmtsYXNzLCJkYXRhLW5hbWUiOnMubmFtZX0pO2Vsc2UgaWYocy5lbmRHcm91cCl7dmFyIGw9ZS5wYXBlci5jbG9zZUdyb3VwKCk7cy5hYnNFbGVtVHlwZSYmci53cmFwU3ZnRWwoe2VsX3R5cGU6cy5hYnNFbGVtVHlwZSxuYW1lOnMubmFtZSxzdGFydENoYXI6cy5zdGFydENoYXIsZW5kQ2hhcjpzLmVuZENoYXIsdGV4dDoiIn0sbCl9fX19LDY2Mzc6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjc2NCksYT1yKDcxOTkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixpLHMsbyxjKXt2YXIgbD1lLmZvcmVncm91bmRDb2xvcjt0PWEodCkscj1hKHIpO3ZhciBoPWEoaS1jKSx1PWEoaStjKTtpZihlLmZpcmVmb3gxMTIpe3ZhciBkPXt4MTp0LHgyOnIseTE6aSs9Yy8yLHkyOmksc3Ryb2tlOmUuZm9yZWdyb3VuZENvbG9yLCJzdHJva2Utd2lkdGgiOk1hdGguYWJzKDIqYyl9O3JldHVybiBzJiYoZC5jbGFzcz1zKSxvJiYoZFsiZGF0YS1uYW1lIl09byksZS5wYXBlci5saW5lVG9CYWNrKGQpfXZhciBmPXtwYXRoOm4oIk0gJWYgJWYgTCAlZiAlZiBMICVmICVmIEwgJWYgJWYgeiIsdCxoLHIsaCxyLHUsdCx1KSxzdHJva2U6Im5vbmUiLGZpbGw6bH07cmV0dXJuIG8mJihmWyJkYXRhLW5hbWUiXT1vKSxzJiYoZi5jbGFzcz1zKSxlLnBhcGVyLnBhdGhUb0JhY2soZil9fSw2NDU0OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGUucGFwZXIucGF0aCh0KX19LDM2MjQ6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoODgzMiksYT1yKDcxOTkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixpLHMsbyxjKXtpZihyPDB8fGk8cyl7dmFyIGw9YShzKTtzPWEoaSksaT1sfWVsc2UgaT1hKGkpLHM9YShzKTt0PWEodCk7dmFyIGg9YSh0K3IpO2lmKGUuZmlyZWZveDExMil7dmFyIHU9e3gxOnQrPXIvMix4Mjp0LHkxOmkseTI6cyxzdHJva2U6ZS5mb3JlZ3JvdW5kQ29sb3IsInN0cm9rZS13aWR0aCI6TWF0aC5hYnMocil9O3JldHVybiBvJiYodS5jbGFzcz1vKSxjJiYodVsiZGF0YS1uYW1lIl09YyksZS5wYXBlci5saW5lVG9CYWNrKHUpfWZvcih2YXIgZD1bWyJNIix0LGldLFsiTCIsdCxzXSxbIkwiLGgsc10sWyJMIixoLGldLFsieiJdXSxmPSh1PXtwYXRoOiIifSwwKTtmPGQubGVuZ3RoO2YrKyl1LnBhdGgrPWRbZl0uam9pbigiICIpO3JldHVybiBvJiYodS5jbGFzcz1vKSxjJiYodVsiZGF0YS1uYW1lIl09Yyksbi5pc0luR3JvdXAoKXx8KHUuc3Ryb2tlPSJub25lIix1LmZpbGw9ZS5mb3JlZ3JvdW5kQ29sb3IpLGUucGFwZXIucGF0aFRvQmFjayh1KX19LDQ3Nzc6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTc1OSksYT1yKDYwMjApLGk9cig4ODMyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIscyxvKXt2YXIgYyxsLGgsdSxkLGY7aWYoIXMpcmV0dXJuIG51bGw7aWYocy5sZW5ndGg+MSYmcy5pbmRleE9mKCIuIik8MCl7dmFyIHA9aS5pc0luR3JvdXAoKT8iIjpvLmtsYXNzO2UucGFwZXIub3Blbkdyb3VwKHsiZGF0YS1uYW1lIjpvLm5hbWUsa2xhc3M6cH0pO2Zvcih2YXIgbT0wLGc9MDtnPHMubGVuZ3RoO2crKyl7dmFyIHY9c1tnXTtsPWEuZ2V0WUNvcnIodiksKGM9YS5wcmludFN5bWJvbCh0K20sZS5jYWxjWShyK2wpLHYsZS5wYXBlcix7c3Ryb2tlOm8uc3Ryb2tlLGZpbGw6by5maWxsfSkpP2c8cy5sZW5ndGgtMSYmKG0rPShoPXYsdT1zW2crMV0sZD1hLmdldFN5bWJvbFdpZHRoKHYpLGY9dm9pZCAwLGY9ZCwiZiI9PT1oJiYiZiI9PT11JiYoZj0yKmYvMyksInAiPT09aCYmInAiPT09dSYmKGY9NSpmLzYpLCJmIj09PWgmJiJ6Ij09PXUmJihmPTUqZi84KSxmKSk6bihlLHt4OnQseTplLnksdGV4dDoibm8gc3ltYm9sOiIrcyx0eXBlOiJkZWJ1Z2ZvbnQiLGtsYXNzOiJkZWJ1Zy1tc2ciLGFuY2hvcjoic3RhcnQifSwhMSl9cmV0dXJuIGUucGFwZXIuY2xvc2VHcm91cCgpfXJldHVybiBsPWEuZ2V0WUNvcnIocyksKGM9aS5pc0luR3JvdXAoKT9hLnByaW50U3ltYm9sKHQsZS5jYWxjWShyK2wpLHMsZS5wYXBlcix7ImRhdGEtbmFtZSI6by5uYW1lfSk6YS5wcmludFN5bWJvbCh0LGUuY2FsY1kocitsKSxzLGUucGFwZXIse2tsYXNzOm8ua2xhc3Msc3Ryb2tlOm8uc3Ryb2tlLGZpbGw6by5maWxsLCJkYXRhLW5hbWUiOm8ubmFtZX0pKT9jOihuKGUse3g6dCx5OmUueSx0ZXh0OiJubyBzeW1ib2w6IitzLHR5cGU6ImRlYnVnZm9udCIsa2xhc3M6ImRlYnVnLW1zZyIsYW5jaG9yOiJzdGFydCJ9LCExKSxudWxsKX19LDI0MzU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTc1OSksYT1yKDM2MjQpLGk9cig3ODY1KSxzPXIoNDc3Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2b2lkIDA9PT10LnBpdGNoJiZ3aW5kb3cuY29uc29sZS5lcnJvcih0LnR5cGUrIiBSZWxhdGl2ZSBFbGVtZW50IHktY29vcmRpbmF0ZSBub3Qgc2V0LiIpO3ZhciBvPWUuY2FsY1kodC5waXRjaCk7c3dpdGNoKHQudHlwZSl7Y2FzZSJzeW1ib2wiOmlmKG51bGw9PT10LmMpcmV0dXJuIG51bGw7dmFyIGM9InN5bWJvbCI7dC5rbGFzcyYmKGMrPSIgIit0LmtsYXNzKSx0LmdyYXBoZWxlbT1zKGUsdC54LHQucGl0Y2gsdC5jLHtzY2FsZXg6dC5zY2FsZXgsc2NhbGV5OnQuc2NhbGV5LGtsYXNzOmUuY29udHJvbGxlci5jbGFzc2VzLmdlbmVyYXRlKGMpLG5hbWU6dC5uYW1lfSk7YnJlYWs7Y2FzZSJkZWJ1ZyI6dC5ncmFwaGVsZW09bihlLHt4OnQueCx5OmUuY2FsY1koMTUpLHRleHQ6IiIrdC5jLHR5cGU6ImRlYnVnZm9udCIsa2xhc3M6ZS5jb250cm9sbGVyLmNsYXNzZXMuZ2VuZXJhdGUoImRlYnVnLW1zZyIpLGFuY2hvcjoic3RhcnQiLGNlbnRlclZlcnRpY2FsbHk6ITEsZGltOnQuZGltfSwhMSk7YnJlYWs7Y2FzZSJ0YWJOdW1iZXIiOnZhciBsPSJ0YWJudW1iZXJmb250IixoPSJhYmNqcy10YWItbnVtYmVyIjt0LmlzR3JhY2UmJihsPSJ0YWJncmFjZWZvbnQiLG8rPTIuNSxoPSJ0YWItZ3JhY2UiKSx0LmdyYXBoZWxlbT1uKGUse3g6dC54LHk6byx0ZXh0OiIiK3QuYyx0eXBlOmwsa2xhc3M6ZS5jb250cm9sbGVyLmNsYXNzZXMuZ2VuZXJhdGUoaCksYW5jaG9yOiJtaWRkbGUiLGNlbnRlclZlcnRpY2FsbHk6ITEsZGltOnQuZGltLGN1cnNvcjoiZGVmYXVsdCJ9LCExKTticmVhaztjYXNlImJhck51bWJlciI6dC5ncmFwaGVsZW09bihlLHt4OnQueCx5Om8sdGV4dDoiIit0LmMsdHlwZToibWVhc3VyZWZvbnQiLGtsYXNzOmUuY29udHJvbGxlci5jbGFzc2VzLmdlbmVyYXRlKCJiYXItbnVtYmVyIiksYW5jaG9yOiJtaWRkbGUiLGRpbTp0LmRpbSxuYW1lOiJiYXItbnVtYmVyIn0sITApO2JyZWFrO2Nhc2UibHlyaWMiOnQuZ3JhcGhlbGVtPW4oZSx7eDp0LngseTpvLHRleHQ6dC5jLHR5cGU6InZvY2FsZm9udCIsa2xhc3M6ZS5jb250cm9sbGVyLmNsYXNzZXMuZ2VuZXJhdGUoImx5cmljIiksYW5jaG9yOiJtaWRkbGUiLGRpbTp0LmRpbSxuYW1lOiJseXJpYyJ9LCExKTticmVhaztjYXNlImNob3JkIjp0LmdyYXBoZWxlbT1uKGUse3g6dC54LHk6byx0ZXh0OnQuYyx0eXBlOiJnY2hvcmRmb250IixrbGFzczplLmNvbnRyb2xsZXIuY2xhc3Nlcy5nZW5lcmF0ZSgiY2hvcmQiKSxhbmNob3I6Im1pZGRsZSIsZGltOnQuZGltLGxhbmU6dC5nZXRMYW5lKCksbmFtZToiY2hvcmQifSwhMSk7YnJlYWs7Y2FzZSJkZWNvcmF0aW9uIjp0LmdyYXBoZWxlbT1uKGUse3g6dC54LHk6bys2LHRleHQ6dC5jLHR5cGU6ImFubm90YXRpb25mb250IixrbGFzczplLmNvbnRyb2xsZXIuY2xhc3Nlcy5nZW5lcmF0ZSgiYW5ub3RhdGlvbiIpLGFuY2hvcjp0LmFuY2hvcixjZW50ZXJWZXJ0aWNhbGx5OiEwLGRpbTp0LmRpbX0sITEpO2JyZWFrO2Nhc2UidGV4dCI6dC5ncmFwaGVsZW09bihlLHt4OnQueCx5Om8sdGV4dDp0LmMsdHlwZToiYW5ub3RhdGlvbmZvbnQiLGtsYXNzOmUuY29udHJvbGxlci5jbGFzc2VzLmdlbmVyYXRlKCJhbm5vdGF0aW9uIiksYW5jaG9yOiJzdGFydCIsY2VudGVyVmVydGljYWxseTp0LmNlbnRlclZlcnRpY2FsbHksZGltOnQuZGltLGxhbmU6dC5nZXRMYW5lKCksbmFtZToiYW5ub3RhdGlvbiJ9LCExKTticmVhaztjYXNlIm11bHRpbWVhc3VyZS10ZXh0Ijp0LmdyYXBoZWxlbT1uKGUse3g6dC54K3Qudy8yLHk6byx0ZXh0OnQuYyx0eXBlOiJ0ZW1wb2ZvbnQiLGtsYXNzOmUuY29udHJvbGxlci5jbGFzc2VzLmdlbmVyYXRlKCJyZXN0IiksYW5jaG9yOiJtaWRkbGUiLGNlbnRlclZlcnRpY2FsbHk6ITEsZGltOnQuZGltfSwhMSk7YnJlYWs7Y2FzZSJwYXJ0Ijp0LmdyYXBoZWxlbT1uKGUse3g6dC54LHk6byx0ZXh0OnQuYyx0eXBlOiJwYXJ0c2ZvbnQiLGtsYXNzOmUuY29udHJvbGxlci5jbGFzc2VzLmdlbmVyYXRlKCJwYXJ0IiksYW5jaG9yOiJzdGFydCIsZGltOnQuZGltLG5hbWU6dC5jfSwhMCk7YnJlYWs7Y2FzZSJiYXIiOnQuZ3JhcGhlbGVtPWEoZSx0LngsdC5saW5ld2lkdGgrZS5saW5lVGhpY2tuZXNzLG8scnx8ZS5jYWxjWSh0LnBpdGNoMiksbnVsbCwiYmFyIik7YnJlYWs7Y2FzZSJzdGVtIjp2YXIgdT10LmxpbmV3aWR0aD4wP3QubGluZXdpZHRoK2UubGluZVRoaWNrbmVzczp0LmxpbmV3aWR0aC1lLmxpbmVUaGlja25lc3M7dC5ncmFwaGVsZW09YShlLHQueCx1LG8sZS5jYWxjWSh0LnBpdGNoMiksImFiY2pzLXN0ZW0iLCJzdGVtIik7YnJlYWs7Y2FzZSJsZWRnZXIiOnQuZ3JhcGhlbGVtPWkoZSx0LngsdC54K3Qudyx0LnBpdGNoLCJhYmNqcy1sZWRnZXIiLCJsZWRnZXIiLC4zNStlLmxpbmVUaGlja25lc3MpfXJldHVybiAxIT09dC5zY2FsZXgmJnQuZ3JhcGhlbGVtJiZmdW5jdGlvbihlLHQscixuLGEsaSl7ZS5zZXRBdHRyaWJ1dGVPbkVsZW1lbnQodCx7c3R5bGU6InRyYW5zZm9ybTpzY2FsZSgiK3IrIiwiK24rIik7dHJhbnNmb3JtLW9yaWdpbjoiK2ErInB4ICIraSsicHg7In0pfShlLnBhcGVyLHQuZ3JhcGhlbGVtLHQuc2NhbGV4LHQuc2NhbGV5LHQueCxvKSx0LmdyYXBoZWxlbX19LDcxOTk6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUZsb2F0KGUudG9GaXhlZCgyKSl9fSwzNTI0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDU3NDEpLGE9cig1ODI5KTtmdW5jdGlvbiBpKGUsdCxyKXt0aGlzLmVsZW1lbnRzPVtdLHRoaXMucGFwZXI9ZSx0aGlzLnR1bmVOdW1iZXI9cix0aGlzLnNlbGVjdFR5cGVzPXR9aS5wcm90b3R5cGUuZ2V0RWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50c30saS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHRoaXMuY2FuU2VsZWN0KGUpKXt2YXIgYTthPXZvaWQgMD09PXRoaXMuc2VsZWN0VHlwZXM/e3NlbGVjdGFibGU6ITEsImRhdGEtaW5kZXgiOnRoaXMuZWxlbWVudHMubGVuZ3RofTp7c2VsZWN0YWJsZTohMCx0YWJpbmRleDowLCJkYXRhLWluZGV4Ijp0aGlzLmVsZW1lbnRzLmxlbmd0aH0sdGhpcy5wYXBlci5zZXRBdHRyaWJ1dGVPbkVsZW1lbnQodCxhKTt2YXIgaT17YWJzRWw6ZSxzdmdFbDp0LGlzRHJhZ2dhYmxlOnJ9O3ZvaWQgMCE9PW4mJihpLnN0YWZmUG9zPW4pLHRoaXMuZWxlbWVudHMucHVzaChpKX19LGkucHJvdG90eXBlLmNhblNlbGVjdD1mdW5jdGlvbihlKXtyZXR1cm4hKCExPT09dGhpcy5zZWxlY3RUeXBlc3x8IWV8fCFlLmFiY2VsZW18fCEwIT09dGhpcy5zZWxlY3RUeXBlcyYmISh2b2lkIDA9PT10aGlzLnNlbGVjdFR5cGVzPyJub3RlIj09PWUuYWJjZWxlbS5lbF90eXBlfHwidGFiTnVtYmVyIj09PWUuYWJjZWxlbS5lbF90eXBlOnRoaXMuc2VsZWN0VHlwZXMuaW5kZXhPZihlLmFiY2VsZW0uZWxfdHlwZSk+PTApKX0saS5wcm90b3R5cGUud3JhcFN2Z0VsPWZ1bmN0aW9uKGUsdCl7dmFyIHI9e3R1bmVOdW1iZXI6dGhpcy50dW5lTnVtYmVyLGFiY2VsZW06ZSxlbGVtc2V0Olt0XSxoaWdobGlnaHQ6bix1bmhpZ2hsaWdodDphfTt0aGlzLmFkZChyLHQsITEpfSxlLmV4cG9ydHM9aX0sNDE2OTpmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1NYXRoLnJvdW5kKGUueSksbj0oZS5jb250cm9sbGVyLndpZHRoLXQpLzIsYT1uK3QsaT0iTSAiK24rIiAiK3IrIiBMICIrYSsiICIrcisiIEwgIithKyIgIisocisxKSsiIEwgIituKyIgIisocisxKSsiIEwgIituKyIgIityKyIgeiI7ZS5wYXBlci5wYXRoVG9CYWNrKHtwYXRoOmksc3Ryb2tlOiJyZ2JhKDAsMCwwLDApIixmaWxsOiJyZ2JhKDAsMCwwLDI1NSkiLGNsYXNzOmUuY29udHJvbGxlci5jbGFzc2VzLmdlbmVyYXRlKCJkZWZpbmVkLXRleHQiKX0pfX0sNzYxMTpmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGE9KHQrZS5wYWRkaW5nLmxlZnQrZS5wYWRkaW5nLnJpZ2h0KSpyLGk9KGUueStlLnBhZGRpbmcuYm90dG9tKSpyO2lmKGUuaXNQcmludCYmKGk9TWF0aC5tYXgoaSwxMDU2KSksIiIhPT1lLmFyaWFMYWJlbCl7dmFyIHM9IlNoZWV0IE11c2ljIjtlLmFiY3R1bmUmJmUuYWJjdHVuZS5tZXRhVGV4dCYmZS5hYmN0dW5lLm1ldGFUZXh0LnRpdGxlJiYocys9JyBmb3IgIicrZS5hYmN0dW5lLm1ldGFUZXh0LnRpdGxlKyciJyksZS5wYXBlci5zZXRUaXRsZShzKTt2YXIgbz1lLmFyaWFMYWJlbD9lLmFyaWFMYWJlbDpzO2UucGFwZXIuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixvKX1lLnBhcGVyLmluc2VydFN0eWxlcygiLmFiY2pzLWRyYWdnaW5nLWluLXByb2dyZXNzIHRleHQsIC5hYmNqcy1kcmFnZ2luZy1pbi1wcm9ncmVzcyB0c3BhbiB7IitbIi13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsiLCItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyIsIi1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsiLCItbW96LXVzZXItc2VsZWN0OiBub25lOyIsIi1tcy11c2VyLXNlbGVjdDogbm9uZTsiLCJ1c2VyLXNlbGVjdDogbm9uZTsiXS5qb2luKCIgIikrIn0iKTt2YXIgYz17b3ZlcmZsb3c6ImhpZGRlbiJ9OyJyZXNpemUiPT09bj9lLnBhcGVyLnNldFJlc3BvbnNpdmVXaWR0aChhLGkpOihjLndpZHRoPSIiLGMuaGVpZ2h0PWkrInB4IixyPDE/KGMud2lkdGg9YSsicHgiLGUucGFwZXIuc2V0U2l6ZShhL3IsaS9yKSk6ZS5wYXBlci5zZXRTaXplKGEsaSkpLGUucGFwZXIuc2V0U2NhbGUociksZS5wYXBlci5zZXRQYXJlbnRTdHlsZXMoYyl9fSw2NzY0OmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LHQoZSl9ZS5leHBvcnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHIsbixhLGkscz0wLG89YXJndW1lbnRzW3MrK10sYz1bXTtvOyl7aWYocj0vXlteXHgyNV0rLy5leGVjKG8pKWMucHVzaChyWzBdKTtlbHNlIGlmKHI9L15ceDI1ezJ9Ly5leGVjKG8pKWMucHVzaCgiJSIpO2Vsc2V7aWYoIShyPS9eXHgyNSg/OihcZCspXCQpPyhcKyk/KDB8J1teJF0pPygtKT8oXGQrKT8oPzpcLihcZCspKT8oW2ItZm9zdXhYXSkvLmV4ZWMobykpKXRocm93Ikh1aCA/ISI7aWYobnVsbD09KGU9YXJndW1lbnRzW3JbMV18fHMrK10pfHxudWxsPT1lKXRocm93IlRvbyBmZXcgYXJndW1lbnRzLiI7aWYoL1tec10vLnRlc3Qocls3XSkmJiJudW1iZXIiIT10eXBlb2YgZSl0aHJvdyJFeHBlY3RpbmcgbnVtYmVyIGJ1dCBmb3VuZCAiK3QoZSk7c3dpdGNoKHJbN10pe2Nhc2UiYiI6ZT1lLnRvU3RyaW5nKDIpO2JyZWFrO2Nhc2UiYyI6ZT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpO2JyZWFrO2Nhc2UiZCI6ZT1wYXJzZUludChlKTticmVhaztjYXNlImUiOmU9cls2XT9lLnRvRXhwb25lbnRpYWwocls2XSk6ZS50b0V4cG9uZW50aWFsKCk7YnJlYWs7Y2FzZSJmIjplPXJbNl0/cGFyc2VGbG9hdChlKS50b0ZpeGVkKHJbNl0pOnBhcnNlRmxvYXQoZSk7YnJlYWs7Y2FzZSJvIjplPWUudG9TdHJpbmcoOCk7YnJlYWs7Y2FzZSJzIjplPShlPVN0cmluZyhlKSkmJnJbNl0/ZS5zdWJzdHJpbmcoMCxyWzZdKTplO2JyZWFrO2Nhc2UidSI6ZT1NYXRoLmFicyhlKTticmVhaztjYXNlIngiOmU9ZS50b1N0cmluZygxNik7YnJlYWs7Y2FzZSJYIjplPWUudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9ZT0vW2RlZl0vLnRlc3Qocls3XSkmJnJbMl0mJmU+MD8iKyIrZTplLGE9clszXT8iMCI9PXJbM10/IjAiOnJbM11bMV06IiAiLGk9cls1XS1TdHJpbmcoZSkubGVuZ3RoLG49cls1XT9zdHJfcmVwZWF0KGEsaSk6IiIsYy5wdXNoKHJbNF0/ZStuOm4rZSl9bz1vLnN1YnN0cmluZyhyWzBdLmxlbmd0aCl9cmV0dXJuIGMuam9pbigiIil9fSw1NTM3OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQzMzEpLGE9cigxMjkpLGk9cigzMTQ1KSxzPXIoNzY0MSksbz1yKDE1NDcpLGM9cigzNjI0KSxsPXIoNTY2OCk7ZnVuY3Rpb24gaChlLHQscixpLHMpe2lmKHIpZm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcltvXS5pc1N0YXJ0Vm9pY2UoaSkmJihyW29dLnN0YXJ0WT10LTEwKm4uU1RFUCxyW29dLmVsZW1zZXQ9YShlLHJbb10scykpfWZ1bmN0aW9uIHUoZSx0LHIpe2Zvcih2YXIgYT0wO2E8ci5sZW5ndGg7YSsrKWZvcih2YXIgaT10W3JbYV1dLmNoaWxkcmVuLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGM9aVtzXSxsPWMuZ2V0Rml4ZWRDb29yZHMoKTtpZighYy5pbnZpc2libGUmJnZvaWQgMCE9PWwudCYmdm9pZCAwIT09bC5iKXt2YXIgaD0obC50LWwuYikqbi5TVEVQO28oZSx7eDpsLngseTplLmNhbGNZKGwudCksd2lkdGg6bC53LGhlaWdodDpoLGZpbGw6IiM4OGU4ODgiLCJmaWxsLW9wYWNpdHkiOi40LHN0cm9rZToiIzRhYTkzZCIsInN0cm9rZS1vcGFjaXR5IjouOH0pO2Zvcih2YXIgdT0wO3U8Yy5jaGlsZHJlbi5sZW5ndGg7dSsrKXt2YXIgZD1jLmNoaWxkcmVuW3VdLGY9ZC5nZXRDaG9yZERpbSgpO2lmKGYpe3ZhciBwPWUuY2FsY1koZC5waXRjaCk7cCs9ZC5kaW0uZm9udC5zaXplKmQuZ2V0TGFuZSgpLG8oZSx7eDpmLmxlZnQseTpwLHdpZHRoOmYucmlnaHQtZi5sZWZ0LGhlaWdodDpkLmRpbS5mb250LnNpemUsZmlsbDoibm9uZSIsc3Ryb2tlOiIjNGFhOTNkIiwic3Ryb2tlLW9wYWNpdHkiOi44fSl9fX19fWUuZXhwb3J0cz1mdW5jdGlvbihlLHQscixhKXtmb3IodmFyIGQsZixwLG09ZS55LGc9MDtnPHQuc3RhZmZzLmxlbmd0aDtnKyspe3ZhciB2PXQuc3RhZmZzW2ddO2UubW92ZVkobi5TVEVQLHYudG9wKSx2LmFic29sdXRlWT1lLnksZS5zaG93RGVidWcmJihlLnNob3dEZWJ1Zy5pbmRleE9mKCJib3giKT49MCYmdi52b2ljZXMmJnUoZSx0LnZvaWNlcyx2LnZvaWNlcyksZS5zaG93RGVidWcuaW5kZXhPZigiZ3JpZCIpPj0wJiYoZS5wYXBlci5kb3R0ZWRMaW5lKHt4MTplLnBhZGRpbmcubGVmdCx4MjplLnBhZGRpbmcubGVmdCtlLmNvbnRyb2xsZXIud2lkdGgseTE6bSx5MjptLHN0cm9rZToiIzAwMDBmZiJ9KSxvKGUse3g6ZS5wYWRkaW5nLmxlZnQseTplLmNhbGNZKHYub3JpZ2luYWxUb3ApLHdpZHRoOmUuY29udHJvbGxlci53aWR0aCxoZWlnaHQ6ZS5jYWxjWSh2Lm9yaWdpbmFsQm90dG9tKS1lLmNhbGNZKHYub3JpZ2luYWxUb3ApLGZpbGw6ZS5mb3JlZ3JvdW5kQ29sb3Isc3Ryb2tlOmUuZm9yZWdyb3VuZENvbG9yLCJmaWxsLW9wYWNpdHkiOi4xLCJzdHJva2Utb3BhY2l0eSI6LjF9KSxkPTAsRSh2LCJjaG9yZEhlaWdodEFib3ZlIiksRSh2LCJjaG9yZEhlaWdodEJlbG93IiksRSh2LCJkeW5hbWljSGVpZ2h0QWJvdmUiKSxFKHYsImR5bmFtaWNIZWlnaHRCZWxvdyIpLEUodiwiZW5kaW5nSGVpZ2h0QWJvdmUiKSxFKHYsImx5cmljSGVpZ2h0QWJvdmUiKSxFKHYsImx5cmljSGVpZ2h0QmVsb3ciKSxFKHYsInBhcnRIZWlnaHRBYm92ZSIpLEUodiwidGVtcG9IZWlnaHRBYm92ZSIpLEUodiwidm9sdW1lSGVpZ2h0QWJvdmUiKSxFKHYsInZvbHVtZUhlaWdodEJlbG93IikpKSxlLm1vdmVZKG4uU1RFUCwtdi5ib3R0b20pLGUuc2hvd0RlYnVnJiZlLnNob3dEZWJ1Zy5pbmRleE9mKCJncmlkIik+PTAmJmUucGFwZXIuZG90dGVkTGluZSh7eDE6ZS5wYWRkaW5nLmxlZnQseDI6ZS5wYWRkaW5nLmxlZnQrZS5jb250cm9sbGVyLndpZHRoLHkxOmUueSx5MjplLnksc3Ryb2tlOiIjMDAwMGFhIn0pfWZvcih2YXIgYj0yLHk9MCx4PTA7eDx0LnZvaWNlcy5sZW5ndGg7eCsrKXt2YXIgaz10LnZvaWNlc1t4XS5zdGFmZix3PXQudm9pY2VzW3hdLnRhYk5hbWVJbmZvcztpZihlLnk9ay5hYnNvbHV0ZVksZS5jb250cm9sbGVyLmNsYXNzZXMuaW5jclZvaWNlKCksIXQudm9pY2VzW3hdLmR1cGxpY2F0ZSl7aWYoZnx8KGY9ZS5jYWxjWSgxMCkpLHA9ZS5jYWxjWShiKSwwIT09ay5saW5lcyl7ay5saW5lUGl0Y2gmJihiPWsubGluZVBpdGNoKSxlLmNvbnRyb2xsZXIuY2xhc3Nlcy5uZXdNZWFzdXJlKCk7dmFyIEM9cyhlLHQuc3RhcnR4LHQudyxrLmxpbmVzLGsubGluZVBpdGNoLC4zNSk7cD1DWzFdLGsuYm90dG9tTGluZT1wLGsudG9wTGluZT1DWzBdLGsuaGFzVGFiJiYoeT1rLnRvcExpbmUpLGsuaGFzU3RhZmYmJih5PWsuaGFzU3RhZmYudG9wTGluZSx0LnZvaWNlc1t4XS5iYXJ0bz0hMCx0LnZvaWNlc1t4XS50b3BMaW5lPWYpfWgoZSxrLmFic29sdXRlWSx0LmJyYWNlLHgsciksaChlLGsuYWJzb2x1dGVZLHQuYnJhY2tldCx4LHIpfWkoZSx0LnZvaWNlc1t4XSx5LHIse3RvcDptLHplcm86ZS55LGhlaWdodDp0LmhlaWdodCpuLlNURVB9KTt2YXIgVD0wO2lmKHcpe3ZhciBTPXtyb3dzOltdfTtTLnJvd3MucHVzaCh7YWJzbW92ZTpwKzJ9KSxTLnJvd3MucHVzaCh7bGVmdDp0LnN0YXJ0eCs4LHRleHQ6dy5uYW1lLGZvbnQ6InRhYmxhYmVsZm9udCIsa2xhc3M6InRleHQgaW5zdHJ1bWVudC1uYW1lIixhbmNob3I6InN0YXJ0In0pLFMucm93cy5wdXNoKHttb3ZlOncudGV4dFNpemUuaGVpZ2h0fSksbChlLFMpLFQ9dy50ZXh0U2l6ZS5oZWlnaHR9ZS5jb250cm9sbGVyLmNsYXNzZXMubmV3TWVhc3VyZSgpLHQudm9pY2VzW3hdLmR1cGxpY2F0ZXx8KHk9ZS5jYWxjWSgyK1QpKX1lLmNvbnRyb2xsZXIuY2xhc3Nlcy5uZXdNZWFzdXJlKCk7dmFyIF89dC5zdGFmZnMubGVuZ3RoO2Z1bmN0aW9uIEUodCxyKXt2YXIgYT1bInJnYigyMDcsMjcsMzYpIiwicmdiKDE2OCwyMTQsODApIiwicmdiKDExMCwxNjEsMjI0KSIsInJnYigxOTEsMTE5LDIxOCkiLCJyZ2IoMTk1LDMwLDE1MSkiLCJyZ2IoMzEsMTcwLDE3NykiLCJyZ2IoMjIwLDE2NiwxNDIpIl07aWYodC5wb3NpdGlvblkmJnQucG9zaXRpb25ZW3JdKXt2YXIgaT10LnNwZWNpYWxZW3JdKm4uU1RFUDsiY2hvcmRIZWlnaHRBYm92ZSI9PT1yJiZ0LnNwZWNpYWxZLmNob3JkTGluZXMmJnQuc3BlY2lhbFkuY2hvcmRMaW5lcy5hYm92ZSYmKGkqPXQuc3BlY2lhbFkuY2hvcmRMaW5lcy5hYm92ZSksImNob3JkSGVpZ2h0QmVsb3ciPT09ciYmdC5zcGVjaWFsWS5jaG9yZExpbmVzJiZ0LnNwZWNpYWxZLmNob3JkTGluZXMuYmVsb3cmJihpKj10LnNwZWNpYWxZLmNob3JkTGluZXMuYmVsb3cpLG8oZSx7eDplLnBhZGRpbmcubGVmdCx5OmUuY2FsY1kodC5wb3NpdGlvbllbcl0pLHdpZHRoOmUuY29udHJvbGxlci53aWR0aCxoZWlnaHQ6aSxmaWxsOmFbZF0sc3Ryb2tlOmFbZF0sImZpbGwtb3BhY2l0eSI6LjQsInN0cm9rZS1vcGFjaXR5IjouNH0sci5zdWJzdHIoMCw0KSksKGQrPTEpPjYmJihkPTApfX1fPjEmJihmPXQuc3RhZmZzWzBdLnRvcExpbmUscD10LnN0YWZmc1tfLTFdLmJvdHRvbUxpbmUsYyhlLHQuc3RhcnR4LC42LGYscCxudWxsKSksZS55PW19fSw3ODY1OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY2MzcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixhLGkscyxvKXt2YXIgYz1lLmNhbGNZKGEpO3JldHVybiBuKGUsdCxyLGMsaSxzLG8pfX0sNzY0MTpmdW5jdGlvbihlLHQscil7dmFyIG49cig3ODY1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsYSxpLHMpe3ZhciBvPSJhYmNqcy10b3AtbGluZSIsYz0yO2kmJihjPWkpLGUucGFwZXIub3Blbkdyb3VwKHtwcmVwZW5kOiEwLGtsYXNzOmUuY29udHJvbGxlci5jbGFzc2VzLmdlbmVyYXRlKCJhYmNqcy1zdGFmZiIpfSk7dmFyIGw9MCxoPTA7aWYoMT09PWEpbihlLHQsciw2LG8sbnVsbCxzK2UubGluZVRoaWNrbmVzcyksbD1lLmNhbGNZKDEwKSxoPWUuY2FsY1koMik7ZWxzZSBmb3IodmFyIHU9YS0xO3U+PTA7dS0tKXt2YXIgZD0odSsxKSpjO2g9ZS5jYWxjWShkKSwwPT09bCYmKGw9aCksbihlLHQscixkLG8sbnVsbCxzK2UubGluZVRoaWNrbmVzcyksbz12b2lkIDB9cmV0dXJuIGUucGFwZXIuY2xvc2VHcm91cCgpLFtsLGhdfX0sMzk4NzpmdW5jdGlvbihlLHQscil7dmFyIG49cigyNDM1KSxhPXIoNTc1OSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dC54O3ZvaWQgMD09PXQucGl0Y2gmJndpbmRvdy5jb25zb2xlLmVycm9yKCJUZW1wbyBFbGVtZW50IHktY29vcmRpbmF0ZSBub3Qgc2V0LiIpLHQudGVtcG8uZWxfdHlwZT0idGVtcG8iO3ZhciBpLHM9ZS5jYWxjWSh0LnBpdGNoKSsyO2lmKHQudGVtcG8ucHJlU3RyaW5nKXtpPWEoZSx7eDpyLHk6cyx0ZXh0OnQudGVtcG8ucHJlU3RyaW5nLHR5cGU6InRlbXBvZm9udCIsa2xhc3M6ImFiY2pzLXRlbXBvIixhbmNob3I6InN0YXJ0Iixub0NsYXNzOiEwLG5hbWU6InByZSJ9LCEwKTt2YXIgbz1lLmNvbnRyb2xsZXIuZ2V0VGV4dFNpemUuY2FsYyh0LnRlbXBvLnByZVN0cmluZywidGVtcG9mb250IiwidGVtcG8iLGkpLndpZHRoO3IrPW8rby90LnRlbXBvLnByZVN0cmluZy5sZW5ndGh9aWYodC5ub3RlKXt0Lm5vdGUuc2V0WChyKTtmb3IodmFyIGM9MDtjPHQubm90ZS5jaGlsZHJlbi5sZW5ndGg7YysrKW4oZSx0Lm5vdGUuY2hpbGRyZW5bY10scik7cis9dC5ub3RlLncrNTt2YXIgbD0iPSAiK3QudGVtcG8uYnBtO2k9YShlLHt4OnIseTpzLHRleHQ6bCx0eXBlOiJ0ZW1wb2ZvbnQiLGtsYXNzOiJhYmNqcy10ZW1wbyIsYW5jaG9yOiJzdGFydCIsbm9DbGFzczohMCxuYW1lOiJiZWF0cyJ9KTt2YXIgaD1lLmNvbnRyb2xsZXIuZ2V0VGV4dFNpemUuY2FsYyhsLCJ0ZW1wb2ZvbnQiLCJ0ZW1wbyIsaSkud2lkdGg7cis9aCtoL2wubGVuZ3RofXQudGVtcG8ucG9zdFN0cmluZyYmYShlLHt4OnIseTpzLHRleHQ6dC50ZW1wby5wb3N0U3RyaW5nLHR5cGU6InRlbXBvZm9udCIsa2xhc3M6ImFiY2pzLXRlbXBvIixhbmNob3I6InN0YXJ0Iixub0NsYXNzOiEwLG5hbWU6InBvc3QifSwhMCl9fSw1NzU5OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDcxOTkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGEsaSxzPXQueTtpZih0LnBocmFzZXMpcmV0dXJuIGM9ZS5wYXBlci5yaWNoVGV4dExpbmUodC5waHJhc2VzLHQueCx0LnksdC5rbGFzcyx0LmFuY2hvcik7aWYodC5sYW5lKXt2YXIgbz0uMjUqdC5kaW0uZm9udC5zaXplO3MrPSh0LmRpbS5mb250LnNpemUrbykqdC5sYW5lfXQuZGltPyhhPXQuZGltKS5hdHRyLmNsYXNzPXQua2xhc3M6YT1lLmNvbnRyb2xsZXIuZ2V0Rm9udEFuZEF0dHIuY2FsYyh0LnR5cGUsdC5rbGFzcyksdC5hbmNob3ImJihhLmF0dHJbInRleHQtYW5jaG9yIl09dC5hbmNob3IpLHRbImRvbWluYW50LWJhc2VsaW5lIl0mJihhLmF0dHJbImRvbWluYW50LWJhc2VsaW5lIl09dFsiZG9taW5hbnQtYmFzZWxpbmUiXSksYS5hdHRyLng9dC54LGEuYXR0ci55PXMsdC5jZW50ZXJWZXJ0aWNhbGx5fHwoYS5hdHRyLnkrPWEuZm9udC5zaXplKSwiZGVidWdmb250Ij09PXQudHlwZSYmKGNvbnNvbGUubG9nKCJEZWJ1ZyBtc2c6ICIrdC50ZXh0KSxhLmF0dHIuc3Ryb2tlPSIjZmYwMDAwIiksdC5jdXJzb3ImJihhLmF0dHIuY3Vyc29yPXQuY3Vyc29yKSxpPShpPSJmcmVlLXRleHQiPT10Lm5hbWU/dC50ZXh0LnJlcGxhY2UoL15bIFx0XSpcbi9nbSwiIFxuIik6dC50ZXh0LnJlcGxhY2UoL1xuXG4vZywiXG4gXG4iKSkucmVwbGFjZSgvXlxuLywiwqBcbiIpLGEuZm9udC5ib3gmJihyfHxlLnBhcGVyLm9wZW5Hcm91cCh7a2xhc3M6YS5hdHRyLmNsYXNzLGZpbGw6ZS5mb3JlZ3JvdW5kQ29sb3IsImRhdGEtbmFtZSI6dC5uYW1lfSksImVuZCI9PT1hLmF0dHJbInRleHQtYW5jaG9yIl0/YS5hdHRyLngtPWEuZm9udC5wYWRkaW5nOiJzdGFydCI9PT1hLmF0dHJbInRleHQtYW5jaG9yIl0mJihhLmF0dHIueCs9YS5mb250LnBhZGRpbmcpLGEuYXR0ci55Kz1hLmZvbnQucGFkZGluZyxkZWxldGUgYS5hdHRyLmNsYXNzKSx0Lm5vQ2xhc3MmJmRlbGV0ZSBhLmF0dHIuY2xhc3MsYS5hdHRyLng9bihhLmF0dHIueCksYS5hdHRyLnk9bihhLmF0dHIueSksdC5uYW1lJiYoYS5hdHRyWyJkYXRhLW5hbWUiXT10Lm5hbWUpO3ZhciBjPWUucGFwZXIudGV4dChpLGEuYXR0cik7aWYoYS5mb250LmJveCl7dmFyIGw9Yy5nZXRCQm94KCksaD0wOyJtaWRkbGUiPT09YS5hdHRyWyJ0ZXh0LWFuY2hvciJdP2g9bC53aWR0aC8yK2EuZm9udC5wYWRkaW5nOiJlbmQiPT09YS5hdHRyWyJ0ZXh0LWFuY2hvciJdJiYoaD1sLndpZHRoKzIqYS5mb250LnBhZGRpbmcpO3ZhciB1PTA7dC5jZW50ZXJWZXJ0aWNhbGx5JiYodT1sLmhlaWdodC1hLmZvbnQucGFkZGluZyksZS5wYXBlci5yZWN0KHsiZGF0YS1uYW1lIjoiYm94Iix4Ok1hdGgucm91bmQodC54LWgpLHk6TWF0aC5yb3VuZChzLXUpLHdpZHRoOk1hdGgucm91bmQobC53aWR0aCsyKmEuZm9udC5wYWRkaW5nKSxoZWlnaHQ6TWF0aC5yb3VuZChsLmhlaWdodCsyKmEuZm9udC5wYWRkaW5nKX0pLHJ8fChjPWUucGFwZXIuY2xvc2VHcm91cCgpKX1yZXR1cm4gY319LDMyNzI6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjc2NCksYT1yKDcxOTkpLGk9ZnVuY3Rpb24oZSx0LHIpe2UuYW5jaG9yMSYmZS5hbmNob3IyP2UuYW5jaG9yMS5waXRjaD09PWUuYW5jaG9yMi5waXRjaCYmMD09PWUuaW50ZXJuYWxOb3Rlcy5sZW5ndGg/ZS5pc1RpZT0hMDplLmlzVGllPSExOmUuaXNUaWU9ITAsZS5pc1RpZT8oZS5jYWxjVGllRGlyZWN0aW9uKCksZS5jYWxjWCh0LHIpLGUuY2FsY1RpZVkoKSk6KGUuY2FsY1NsdXJEaXJlY3Rpb24oKSxlLmNhbGNYKHQsciksZS5jYWxjU2x1clkoKSksZS5hdm9pZENvbGxpc2lvbkFib3ZlKCl9LHM9ZnVuY3Rpb24oZSx0LHIsaSxzLG8sYyxsLGgpe3ZhciB1PWw/MS4yOjEuNTt0PWEodCs2KSxyPWEocis0KSxpKz1vP3U6LXUscys9bz91Oi11O3ZhciBkLGY9YShlLmNhbGNZKGkpKSxwPWEoZS5jYWxjWShzKSksbT1yLXQsZz1wLWYsdj1NYXRoLnNxcnQobSptK2cqZyksYj1tL3YseT1nL3YseD12LzMuNSxrPWw/MTA6MjUsdz0obz8tMToxKSpNYXRoLm1pbihrLE1hdGgubWF4KDQseCkpLEM9YSh0K3gqYi13KnkpLFQ9YShmK3gqeSt3KmIpLFM9YShyLXgqYi13KnkpLF89YShwLXgqeSt3KmIpO2lmKGM/Yys9IiBzbHVyIjpjPSJzbHVyIixjKz1sPyIgdGllIjoiIGxlZ2F0byIsaCl7Yys9IiBkb3R0ZWQiO3ZhciBFPW4oIk0gJWYgJWYgQyAlZiAlZiAlZiAlZiAlZiAlZiIsdCxmLEMsVCxTLF8scixwKTtkPWUucGFwZXIucGF0aCh7cGF0aDpFLHN0cm9rZTplLmZvcmVncm91bmRDb2xvcixmaWxsOiJub25lIiwic3Ryb2tlLWRhc2hhcnJheSI6IjUgNSIsY2xhc3M6ZS5jb250cm9sbGVyLmNsYXNzZXMuZ2VuZXJhdGUoYyksImRhdGEtbmFtZSI6bD8idGllIjoic2x1ciJ9KX1lbHNle3ZhciBNPW4oIk0gJWYgJWYgQyAlZiAlZiAlZiAlZiAlZiAlZiBDICVmICVmICVmICVmICVmICVmIHoiLHQsZixDLFQsUyxfLHIscCxhKFMtMip5KSxhKF8rMipiKSxhKEMtMip5KSxhKFQrMipiKSx0LGYpO2Q9ZS5wYXBlci5wYXRoKHtwYXRoOk0sc3Ryb2tlOiJub25lIixmaWxsOmUuZm9yZWdyb3VuZENvbG9yLGNsYXNzOmUuY29udHJvbGxlci5jbGFzc2VzLmdlbmVyYXRlKGMpLCJkYXRhLW5hbWUiOmw/InRpZSI6InNsdXIifSl9cmV0dXJuIGR9O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixuLGEpe2kodCxyLG4pO3ZhciBvPSIiO3QuYW5jaG9yMT9vKz0iYWJjanMtc3RhcnQtbSIrdC5hbmNob3IxLnBhcmVudC5jb3VudGVycy5tZWFzdXJlKyItbiIrdC5hbmNob3IxLnBhcmVudC5jb3VudGVycy5ub3RlOm8rPSJhYmNqcy1zdGFydC1lZGdlIix0LmFuY2hvcjI/bys9IiBhYmNqcy1lbmQtbSIrdC5hbmNob3IyLnBhcmVudC5jb3VudGVycy5tZWFzdXJlKyItbiIrdC5hbmNob3IyLnBhcmVudC5jb3VudGVycy5ub3RlOm8rPSIgYWJjanMtZW5kLWVkZ2UiLHQuaGludCYmKG89ImFiY2pzLWhpbnQiKTt2YXIgYz10LmZpeGVkWT8xLjU6MCxsPXMoZSx0LnN0YXJ0WCx0LmVuZFgsdC5zdGFydFkrYyx0LmVuZFkrYyx0LmFib3ZlLG8sdC5pc1RpZSx0LmRvdHRlZCksaD0tMTt0LmFuY2hvcjEmJiF0LmlzVGllJiYoaD10LmFuY2hvcjEucGFyZW50LmFiY2VsZW0uc3RhcnRDaGFyLTEpO3ZhciB1PS0xO3JldHVybiB0LmFuY2hvcjImJiF0LmlzVGllJiYodT10LmFuY2hvcjIucGFyZW50LmFiY2VsZW0uZW5kQ2hhcisxKSxhLndyYXBTdmdFbCh7ZWxfdHlwZToic2x1ciIsc3RhcnRDaGFyOmgsZW5kQ2hhcjp1fSxsKSxbbF19fSw0MzIyOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY3NjQpLGE9cig1NzU5KSxpPXIoNjQ1NCkscz1yKDcxOTkpO2Z1bmN0aW9uIG8oZSx0LHIsYSl7cmV0dXJuIG4oIk0gJWYgJWYgTCAlZiAlZiIscyhlKSxzKHQpLHMocikscyhhKSl9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtlLnBhcGVyLm9wZW5Hcm91cCh7a2xhc3M6ZS5jb250cm9sbGVyLmNsYXNzZXMuZ2VuZXJhdGUoInRyaXBsZXQgIit0LmR1cmF0aW9uQ2xhc3MpLCJkYXRhLW5hbWUiOiJ0cmlwbGV0In0pLHQuaGFzQmVhbXx8ZnVuY3Rpb24oZSx0LHIsbixhKXtyPWUuY2FsY1kociksYT1lLmNhbGNZKGEpO3ZhciBzPTUsYz0iIjtjKz1vKHQscix0LHIrcyksYys9byhuLGEsbixhK3MpO3ZhciBsPXQrKG4tdCkvMixoPTgsdT0oYS1yKS8obi10KSxkPWwtaDtjKz1vKHQscixkLHIrKGQtdCkqdSk7dmFyIGY9bCtoO2MrPW8oZixyKyhmLXQpKnUsbixhKSxpKGUse3BhdGg6YyxzdHJva2U6ZS5mb3JlZ3JvdW5kQ29sb3IsImRhdGEtbmFtZSI6InRyaXBsZXQtYnJhY2tldCJ9KX0oZSx0LmFuY2hvcjEueCx0LnN0YXJ0Tm90ZSx0LmFuY2hvcjIueCt0LmFuY2hvcjIudyx0LmVuZE5vdGUpLGEoZSx7eDp0LnhUZXh0UG9zLHk6ZS5jYWxjWSh0LnlUZXh0UG9zLTEpLHRleHQ6IiIrdC5udW1iZXIsdHlwZToidHJpcGxldGZvbnQiLGFuY2hvcjoibWlkZGxlIixjZW50ZXJWZXJ0aWNhbGx5OiEwLG5vQ2xhc3M6ITAsbmFtZToiIit0Lm51bWJlcn0sITApO3ZhciBuPWUucGFwZXIuY2xvc2VHcm91cCgpO3JldHVybiByLndyYXBTdmdFbCh7ZWxfdHlwZToidHJpcGxldCIsc3RhcnRDaGFyOi0xLGVuZENoYXI6LTF9LG4pLG59fSwzMTQ1OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDkwNDUpLGE9cigzMjQ1KSxpPXIoOTg3OSkscz1yKDQzMjIpLG89cig1OTQ3KSxjPXIoMzI3MiksbD1yKDc0ODkpLGg9cig1NzU5KSx1PXIoNDc1MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLGQsZil7dmFyIHA9dC53LTE7ZS5zdGFmZmJvdHRvbT10LnN0YWZmLmJvdHRvbTt2YXIgbSxnLHY9ZS5mb3JlZ3JvdW5kQ29sb3I7aWYodC5jb2xvciYmKGUuZm9yZWdyb3VuZENvbG9yPXQuY29sb3IpLHQuaGVhZGVyKXt2YXIgYj1oKGUse3g6ZS5wYWRkaW5nLmxlZnQseTplLmNhbGNZKHQuaGVhZGVyUG9zaXRpb24pLHRleHQ6dC5oZWFkZXIsdHlwZToidm9pY2Vmb250IixrbGFzczoic3RhZmYtZXh0cmEgdm9pY2UtbmFtZSIsYW5jaG9yOiJzdGFydCIsY2VudGVyVmVydGljYWxseTohMCxuYW1lOiJ2b2ljZS1uYW1lIn0sITApO2Qud3JhcFN2Z0VsKHtlbF90eXBlOiJ2b2ljZU5hbWUiLHN0YXJ0Q2hhcjotMSxlbmRDaGFyOi0xLHRleHQ6dC5oZWFkZXJ9LGIpfXZhciB5LHg9ITE7Zm9yKG09MDttPHQuY2hpbGRyZW4ubGVuZ3RoO20rKyl7Im5vdGUiIT09KGc9dC5jaGlsZHJlblttXSkudHlwZSYmInJlc3QiIT09Zy50eXBlfHwoeD0hMCk7dmFyIGs9ITE7InN0YWZmLWV4dHJhIj09PWcudHlwZXx8ZS5jb250cm9sbGVyLmNsYXNzZXMuaXNJbk1lYXN1cmUoKXx8KGUuY29udHJvbGxlci5jbGFzc2VzLnN0YXJ0TWVhc3VyZSgpLGs9ITApLHQuc3RhZmYuaXNUYWJTdGFmZiYmKGcuaW52aXNpYmxlPSExLCJiYXIiPT1nLnR5cGUmJmcuYWJjZWxlbS5sYXN0QmFyJiYocj10LnRvcExpbmUpKSx1KGUsZyx0LmJhcnRvfHxtPT09dC5jaGlsZHJlbi5sZW5ndGgtMT9yOjAsZCxmKSwoIm5vdGUiPT09Zy50eXBlfHwicmVzdCI9PT0oeT1nKS50eXBlJiYhKCF5LmFiY2VsZW18fCF5LmFiY2VsZW0ucmVzdHx8InNwYWNlciI9PT15LmFiY2VsZW0ucmVzdC50eXBlKSkmJmUuY29udHJvbGxlci5jbGFzc2VzLmluY3JOb3RlKCksImJhciI9PT1nLnR5cGUmJiFrJiZ4JiZlLmNvbnRyb2xsZXIuY2xhc3Nlcy5pbmNyTWVhc3VyZSgpfWZvcihlLmNvbnRyb2xsZXIuY2xhc3Nlcy5zdGFydE1lYXN1cmUoKSxtPTA7bTx0LmJlYW1zLmxlbmd0aDttKyspe3ZhciB3PXQuYmVhbXNbbV07ImJhciI9PT13P2UuY29udHJvbGxlci5jbGFzc2VzLmluY3JNZWFzdXJlKCk6bChlLHcsZCl9Zm9yKGUuY29udHJvbGxlci5jbGFzc2VzLnN0YXJ0TWVhc3VyZSgpLG09MDttPHQub3RoZXJjaGlsZHJlbi5sZW5ndGg7bSsrKWlmKCJiYXIiPT09KGc9dC5vdGhlcmNoaWxkcmVuW21dKSllLmNvbnRyb2xsZXIuY2xhc3Nlcy5pbmNyTWVhc3VyZSgpO2Vsc2Ugc3dpdGNoKGcudHlwZSl7Y2FzZSJHbGlzc2FuZG9FbGVtIjpnLmVsZW1zZXQ9bihlLGcsZCk7YnJlYWs7Y2FzZSJDcmVzY2VuZG9FbGVtIjpnLmVsZW1zZXQ9YShlLGcsZCk7YnJlYWs7Y2FzZSJEeW5hbWljRGVjb3JhdGlvbiI6Zy5lbGVtc2V0PWkoZSxnLGQpO2JyZWFrO2Nhc2UiVHJpcGxldEVsZW0iOnMoZSxnLGQpO2JyZWFrO2Nhc2UiRW5kaW5nRWxlbSI6Zy5lbGVtc2V0PW8oZSxnLHQuc3RhcnR4KzEwLHAsZCk7YnJlYWs7Y2FzZSJUaWVFbGVtIjpnLmVsZW1zZXQ9YyhlLGcsdC5zdGFydHgrMTAscCxkKTticmVhaztkZWZhdWx0OmNvbnNvbGUubG9nKGcpLHUoZSxnLHQuc3RhcnR4KzEwLHAsZCxmKX1lLmZvcmVncm91bmRDb2xvcj12fX0sNTI1MzpmdW5jdGlvbihlLHQscil7dmFyIG49cig0MzMxKSxhPXIoMTg5NyksaT1yKDg1MTApLHM9cigzNzM2KSxvPXIoNTU4OCksYz1yKDQ3MjYpLGw9cigxMTM0KSxoPXIoOTMxNiksdT1yKDgwNjgpLGQ9cigxNTY0KSxmPXIoMTk1NCkscD1yKDEzMjgpLG09cig5Nzk5KSxnPXIoNTAxMiksdj1yKDI0MjYpLGI9cigzMDUxKSx5PWZ1bmN0aW9uKGUsdCl7dD10fHx7fSx0aGlzLmZpbmRTZWxlY3RhYmxlRWxlbWVudD1iLHRoaXMub25lU3ZnUGVyTGluZT10Lm9uZVN2Z1BlckxpbmUsdGhpcy5zZWxlY3Rpb25Db2xvcj10LnNlbGVjdGlvbkNvbG9yLHRoaXMuZHJhZ0NvbG9yPXQuZHJhZ0NvbG9yP3QuZHJhZ0NvbG9yOnQuc2VsZWN0aW9uQ29sb3IsdGhpcy5kcmFnZ2luZz0hIXQuZHJhZ2dpbmcsdGhpcy5zZWxlY3RUeXBlcz10LnNlbGVjdFR5cGVzLHRoaXMucmVzcG9uc2l2ZT10LnJlc3BvbnNpdmUsdGhpcy5zcGFjZT0zKm4uU1BBQ0UsdGhpcy5pbml0aWFsQ2xlZj10LmluaXRpYWxDbGVmLHRoaXMudGltZUJhc2VkTGF5b3V0PXQudGltZUJhc2VkTGF5b3V0LHRoaXMuZXhwYW5kVG9XaWRlc3Q9ISF0LmV4cGFuZFRvV2lkZXN0LHRoaXMuc2NhbGU9dC5zY2FsZT9wYXJzZUZsb2F0KHQuc2NhbGUpOjAsdGhpcy5jbGFzc2VzPW5ldyBmKHtzaG91bGRBZGRDbGFzc2VzOnQuYWRkX2NsYXNzZXN9KSx0aGlzLnNjYWxlPi4xfHwodGhpcy5zY2FsZT12b2lkIDApLHQuc3RhZmZ3aWR0aD8odGhpcy5zdGFmZndpZHRoU2NyZWVuPXQuc3RhZmZ3aWR0aCx0aGlzLnN0YWZmd2lkdGhQcmludD10LnN0YWZmd2lkdGgpOih0aGlzLnN0YWZmd2lkdGhTY3JlZW49NzQwLHRoaXMuc3RhZmZ3aWR0aFByaW50PTY4MCksdGhpcy5saXN0ZW5lcnM9W10sdC5jbGlja0xpc3RlbmVyJiZ0aGlzLmFkZFNlbGVjdExpc3RlbmVyKHQuY2xpY2tMaXN0ZW5lciksdGhpcy5yZW5kZXJlcj1uZXcgaShlKSx0aGlzLnJlbmRlcmVyLnNldFBhZGRpbmdPdmVycmlkZSh0KSx0LnNob3dEZWJ1ZyYmKHRoaXMucmVuZGVyZXIuc2hvd0RlYnVnPXQuc2hvd0RlYnVnKSx0LmphenpjaG9yZHMmJih0aGlzLmphenpjaG9yZHM9dC5qYXp6Y2hvcmRzKSx0LmFjY2VudEFib3ZlJiYodGhpcy5hY2NlbnRBYm92ZT10LmFjY2VudEFib3ZlKSx0Lmdlcm1hbkFscGhhYmV0JiYodGhpcy5nZXJtYW5BbHBoYWJldD10Lmdlcm1hbkFscGhhYmV0KSx0LmxpbmVUaGlja25lc3MmJih0aGlzLmxpbmVUaGlja25lc3M9dC5saW5lVGhpY2tuZXNzKSx0aGlzLnJlbmRlcmVyLmNvbnRyb2xsZXI9dGhpcyx0aGlzLnJlbmRlcmVyLmZvcmVncm91bmRDb2xvcj10LmZvcmVncm91bmRDb2xvcj90LmZvcmVncm91bmRDb2xvcjoiY3VycmVudENvbG9yIix2b2lkIDAhPT10LmFyaWFMYWJlbCYmKHRoaXMucmVuZGVyZXIuYXJpYUxhYmVsPXQuYXJpYUxhYmVsKSx0aGlzLnJlbmRlcmVyLm1pblBhZGRpbmc9dC5taW5QYWRkaW5nP3QubWluUGFkZGluZzowLHRoaXMucmVzZXQoKX07ZnVuY3Rpb24geChlKXtmb3IodmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpLHI9MDtyPGUuYXR0cmlidXRlcy5sZW5ndGg7cisrKXt2YXIgbj1lLmF0dHJpYnV0ZXNbcl07ImhlaWdodCIhPT1uLm5hbWUmJiJhcmlhLWxhYmVsIiE9bi5uYW1lJiZ0LnNldEF0dHJpYnV0ZShuLm5hbWUsbi52YWx1ZSl9cmV0dXJuIHR9eS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPVtdLHRoaXMuc3RhZmZncm91cHM9W10sdGhpcy5lbmdyYXZlciYmdGhpcy5lbmdyYXZlci5yZXNldCgpLHRoaXMuZW5ncmF2ZXI9bnVsbCx0aGlzLnJlbmRlcmVyLnJlc2V0KCksdGhpcy5kcmFnVGFyZ2V0PW51bGwsdGhpcy5kcmFnSW5kZXg9LTEsdGhpcy5kcmFnTW91c2VTdGFydD17eDotMSx5Oi0xfSx0aGlzLmRyYWdZU3RlcD0wLHRoaXMubGluZVRoaWNrbmVzcyYmdGhpcy5yZW5kZXJlci5zZXRMaW5lVGhpY2tuZXNzKHRoaXMubGluZVRoaWNrbmVzcyl9LHkucHJvdG90eXBlLmVuZ3JhdmVBQkM9ZnVuY3Rpb24oZSx0LHIpe3ZvaWQgMD09PWVbMF0mJihlPVtlXSksdGhpcy5yZXNldCgpO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXZvaWQgMD09PXQmJih0PW4pLHRoaXMuZ2V0Rm9udEFuZEF0dHI9bmV3IHAoZVtuXS5mb3JtYXR0aW5nLHRoaXMuY2xhc3NlcyksdGhpcy5nZXRUZXh0U2l6ZT1uZXcgbSh0aGlzLmdldEZvbnRBbmRBdHRyLHRoaXMucmVuZGVyZXIucGFwZXIpLHRoaXMuZW5ncmF2ZVR1bmUoZVtuXSx0LHIpfSx5LnByb3RvdHlwZS5hZGp1c3ROb25TY2FsZWRJdGVtcz1mdW5jdGlvbihlKXt0aGlzLndpZHRoLz1lLHRoaXMucmVuZGVyZXIuYWRqdXN0Tm9uU2NhbGVkSXRlbXMoZSl9LHkucHJvdG90eXBlLmdldE1lYXN1cmVXaWR0aHM9ZnVuY3Rpb24oZSl7dGhpcy5yZXNldCgpLHRoaXMuZ2V0Rm9udEFuZEF0dHI9bmV3IHAoZS5mb3JtYXR0aW5nLHRoaXMuY2xhc3NlcyksdGhpcy5nZXRUZXh0U2l6ZT1uZXcgbSh0aGlzLmdldEZvbnRBbmRBdHRyLHRoaXMucmVuZGVyZXIucGFwZXIpO3ZhciB0PXRoaXMuamF6emNob3Jkczt0aGlzLnNldHVwVHVuZShlLDApLHRoaXMuY29uc3RydWN0VHVuZUVsZW1lbnRzKGUpLGQodGhpcy5yZW5kZXJlcixlLDAsdGhpcy5zcGFjZSx0aGlzLnRpbWVCYXNlZExheW91dCk7Zm9yKHZhciByLG49W10sYT0hMCxpPTA7aTxlLmxpbmVzLmxlbmd0aDtpKyspe3ZhciBzPWUubGluZXNbaV07aWYocy5zdGFmZil7aWYoYSYmKHI9e2xlZnQ6MCxtZWFzdXJlV2lkdGhzOltdLHRvdGFsOjB9LG4ucHVzaChyKSxhPSExKSxzLnN0YWZmR3JvdXAudm9pY2VzLmxlbmd0aD4wKWZvcih2YXIgbz1zLnN0YWZmR3JvdXAudm9pY2VzWzBdLGM9ITEsbD0wLGg9MDtoPG8uY2hpbGRyZW4ubGVuZ3RoO2grKyl7dmFyIHU9by5jaGlsZHJlbltoXTtjfHx1LmlzQ2xlZnx8dS5pc0tleVNpZ3x8KGM9ITAsci5sZWZ0PXUueCxsPXUueCksImJhciI9PT11LnR5cGUmJihyLm1lYXN1cmVXaWR0aHMucHVzaCh1LngtbCksci50b3RhbCs9dS54LWwsbD11LngpfX1lbHNlIGE9ITB9cmV0dXJuIHRoaXMuamF6emNob3Jkcz10LG59LHkucHJvdG90eXBlLnNldHVwVHVuZT1mdW5jdGlvbihlLHQpe3RoaXMuY2xhc3Nlcy5yZXNldCgpLHZvaWQgMCE9PWUuZm9ybWF0dGluZy5qYXp6Y2hvcmRzJiYodGhpcy5qYXp6Y2hvcmRzPWUuZm9ybWF0dGluZy5qYXp6Y2hvcmRzKSx2b2lkIDAhPT1lLmZvcm1hdHRpbmcuYWNjZW50QWJvdmUmJih0aGlzLmFjY2VudEFib3ZlPWUuZm9ybWF0dGluZy5hY2NlbnRBYm92ZSksdGhpcy5yZW5kZXJlci5uZXdUdW5lKGUpLHRoaXMuZW5ncmF2ZXI9bmV3IGEodGhpcy5nZXRUZXh0U2l6ZSx0LHtiYWdwaXBlczplLmZvcm1hdHRpbmcuYmFncGlwZXMsZmxhdGJlYW1zOmUuZm9ybWF0dGluZy5mbGF0YmVhbXMsZ3JhY2VTbHVyczohMSE9PWUuZm9ybWF0dGluZy5ncmFjZVNsdXJzLHBlcmNtYXA6ZS5mb3JtYXR0aW5nLnBlcmNtYXAsaW5pdGlhbENsZWY6dGhpcy5pbml0aWFsQ2xlZixqYXp6Y2hvcmRzOnRoaXMuamF6emNob3Jkcyx0aW1lQmFzZWRMYXlvdXQ6dGhpcy50aW1lQmFzZWRMYXlvdXQsYWNjZW50QWJvdmU6dGhpcy5hY2NlbnRBYm92ZSxnZXJtYW5BbHBoYWJldDp0aGlzLmdlcm1hbkFscGhhYmV0fSksdGhpcy5lbmdyYXZlci5zZXRTdGVtSGVpZ2h0KHRoaXMucmVuZGVyZXIuc3BhY2luZy5zdGVtSGVpZ2h0KSx0aGlzLmVuZ3JhdmVyLm1lYXN1cmVMZW5ndGg9ZS5nZXRNZXRlckZyYWN0aW9uKCkubnVtL2UuZ2V0TWV0ZXJGcmFjdGlvbigpLmRlbixlLmZvcm1hdHRpbmcuc3RhZmZ3aWR0aD90aGlzLndpZHRoPTEuMzMqZS5mb3JtYXR0aW5nLnN0YWZmd2lkdGg6dGhpcy53aWR0aD10aGlzLnJlbmRlcmVyLmlzUHJpbnQ/dGhpcy5zdGFmZndpZHRoUHJpbnQ6dGhpcy5zdGFmZndpZHRoU2NyZWVuO3ZhciByPWUuZm9ybWF0dGluZy5zY2FsZT9lLmZvcm1hdHRpbmcuc2NhbGU6dGhpcy5zY2FsZTtyZXR1cm4icmVzaXplIj09PXRoaXMucmVzcG9uc2l2ZSYmKHI9dm9pZCAwKSx2b2lkIDA9PT1yJiYocj10aGlzLnJlbmRlcmVyLmlzUHJpbnQ/Ljc1OjEpLHRoaXMuYWRqdXN0Tm9uU2NhbGVkSXRlbXMocikscn0seS5wcm90b3R5cGUuY29uc3RydWN0VHVuZUVsZW1lbnRzPWZ1bmN0aW9uKGUpe3ZhciB0LHI7ZS50b3BUZXh0PW5ldyBsKGUubWV0YVRleHQsZS5tZXRhVGV4dEluZm8sZS5mb3JtYXR0aW5nLGUubGluZXMsdGhpcy53aWR0aCx0aGlzLnJlbmRlcmVyLmlzUHJpbnQsdGhpcy5yZW5kZXJlci5wYWRkaW5nLmxlZnQsdGhpcy5yZW5kZXJlci5zcGFjaW5nLHRoaXMuY2xhc3Nlcy5zaG91bGRBZGRDbGFzc2VzLHRoaXMuZ2V0VGV4dFNpemUpO3ZhciBuPSExLGE9ITE7Zm9yKHQ9MDt0PGUubGluZXMubGVuZ3RoO3QrKylpZigocj1lLmxpbmVzW3RdKS5zdGFmZilhPSEwLHIuc3RhZmZHcm91cD10aGlzLmVuZ3JhdmVyLmNyZWF0ZUFCQ0xpbmUoci5zdGFmZixuP251bGw6ZS5tZXRhVGV4dC50ZW1wbyx0KSxuPSEwO2Vsc2UgaWYoci5zdWJ0aXRsZSl7aWYoYSl7dmFyIGk9dGhpcy53aWR0aC8yK3RoaXMucmVuZGVyZXIucGFkZGluZy5sZWZ0O3Iubm9uTXVzaWM9bmV3IGModGhpcy5yZW5kZXJlci5zcGFjaW5nLnN1YnRpdGxlLGUuZm9ybWF0dGluZyxyLnN1YnRpdGxlLGksdGhpcy5yZW5kZXJlci5wYWRkaW5nLmxlZnQsdGhpcy5nZXRUZXh0U2l6ZSl9fWVsc2Ugdm9pZCAwIT09ci50ZXh0PyhhPSEwLHIubm9uTXVzaWM9bmV3IHMoci50ZXh0LHIudnNraXAsdGhpcy5nZXRGb250QW5kQXR0cix0aGlzLnJlbmRlcmVyLnBhZGRpbmcubGVmdCx0aGlzLndpZHRoLHRoaXMuZ2V0VGV4dFNpemUpKTp2b2lkIDAhPT1yLnNlcGFyYXRvciYmci5zZXBhcmF0b3IubGluZUxlbmd0aCYmKGE9ITAsci5ub25NdXNpYz1uZXcgbyhyLnNlcGFyYXRvci5zcGFjZUFib3ZlLHIuc2VwYXJhdG9yLmxpbmVMZW5ndGgsci5zZXBhcmF0b3Iuc3BhY2VCZWxvdykpO2UuYm90dG9tVGV4dD1uZXcgaChlLm1ldGFUZXh0LHRoaXMud2lkdGgsdGhpcy5yZW5kZXJlci5pc1ByaW50LHRoaXMucmVuZGVyZXIucGFkZGluZy5sZWZ0LHRoaXMucmVuZGVyZXIuc3BhY2luZyx0aGlzLmNsYXNzZXMuc2hvdWxkQWRkQ2xhc3Nlcyx0aGlzLmdldFRleHRTaXplKX0seS5wcm90b3R5cGUuZW5ncmF2ZVR1bmU9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMuamF6emNob3JkcyxhPXRoaXMuc2V0dXBUdW5lKGUsdCk7dGhpcy5jb25zdHJ1Y3RUdW5lRWxlbWVudHMoZSk7dmFyIGk9ZCh0aGlzLnJlbmRlcmVyLGUsdGhpcy53aWR0aCx0aGlzLnNwYWNlLHRoaXMuZXhwYW5kVG9XaWRlc3QsdGhpcy50aW1lQmFzZWRMYXlvdXQpO2lmKHRoaXMuZXhwYW5kVG9XaWRlc3QmJmk+dGhpcy53aWR0aCsxJiYoZS50b3BUZXh0PW5ldyBsKGUubWV0YVRleHQsZS5tZXRhVGV4dEluZm8sZS5mb3JtYXR0aW5nLGUubGluZXMsaSx0aGlzLnJlbmRlcmVyLmlzUHJpbnQsdGhpcy5yZW5kZXJlci5wYWRkaW5nLmxlZnQsdGhpcy5yZW5kZXJlci5zcGFjaW5nLHRoaXMuY2xhc3Nlcy5zaG91bGRBZGRDbGFzc2VzLHRoaXMuZ2V0VGV4dFNpemUpLGUubGluZXMmJmUubGluZXMubGVuZ3RoPjApKWZvcih2YXIgcz1lLmxpbmVzLmxlbmd0aCxvPTA7bzxzOysrbyl7dmFyIGM9ZS5saW5lc1tvXTtpZihjLm5vbk11c2ljJiZjLm5vbk11c2ljLnJvd3MmJmMubm9uTXVzaWMucm93cy5sZW5ndGg+MClmb3IodmFyIGg9Yy5ub25NdXNpYy5yb3dzLmxlbmd0aCxmPTA7ZjxoOysrZil7dmFyIHA9Yy5ub25NdXNpYy5yb3dzW2ZdO3AubGVmdCYmKGMuc3VidGl0bGV8fGMudGV4dCYmYy50ZXh0Lmxlbmd0aD4wJiZjLnRleHRbMF0uY2VudGVyKSYmKHAubGVmdD1pLzIrdGhpcy5yZW5kZXJlci5wYWRkaW5nLmxlZnQpfX1lLnRhYmxhdHVyZXMmJnYubGF5b3V0VGFibGF0dXJlcyh0aGlzLnJlbmRlcmVyLGUpO3ZhciBtPWcodGhpcy5yZW5kZXJlcix0aGlzLmNsYXNzZXMsZSx0aGlzLndpZHRoLGksdGhpcy5yZXNwb25zaXZlLGEsdGhpcy5zZWxlY3RUeXBlcyx0LHIpO2lmKHRoaXMuc3RhZmZncm91cHM9bS5zdGFmZmdyb3Vwcyx0aGlzLnNlbGVjdGFibGVzPW0uc2VsZWN0YWJsZXMsdGhpcy5vbmVTdmdQZXJMaW5lKXt2YXIgYj10aGlzLnJlbmRlcmVyLnBhcGVyLnN2Zy5wYXJlbnROb2RlO3RoaXMuc3Zncz1mdW5jdGlvbihlLHQscixuLGEpe3J8fChyPSJVbnRpdGxlZCIpO3ZhciBpPXQucXVlcnlTZWxlY3Rvcigic3ZnIik7InJlc2l6ZSI9PT1uJiYodC5zdHlsZS5wYWRkaW5nQm90dG9tPSIiKTtmb3IodmFyIHM9aS5xdWVyeVNlbGVjdG9yKCJzdHlsZSIpLG89InJlc2l6ZSI9PT1uP2kudmlld0JveC5iYXNlVmFsLndpZHRoOmkuZ2V0QXR0cmlidXRlKCJ3aWR0aCIpLGM9dC5xdWVyeVNlbGVjdG9yQWxsKCJzdmcgPiBnIiksbD0wLGg9W10sdT0wO3U8Yy5sZW5ndGg7dSsrKXt2YXIgZD1jW3VdLGY9ZC5nZXRCQm94KCkscD1mLnktbCxtPWYuaGVpZ2h0K3AsZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx2PSJvdmVyZmxvdzogaGlkZGVuOyI7InJlc2l6ZSIhPT1uJiYodis9ImhlaWdodDoiK20qYSsicHg7IiksZy5zZXRBdHRyaWJ1dGUoInN0eWxlIix2KTt2YXIgYj14KGkpLHk9J1NoZWV0IE11c2ljIGZvciAiJytyKyciIHNlY3Rpb24gJysodSsxKTtiLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIseSksInJlc2l6ZSIhPT1uJiZiLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixtKSwicmVzaXplIj09PW4mJihiLnN0eWxlLnBvc2l0aW9uPSIiKTt2YXIgaz1lLmZpcmVmb3gxMTI/bSsxOm07Yi5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLCIwICIrbCsiICIrbysiICIrayksYi5hcHBlbmRDaGlsZChzLmNsb25lTm9kZSghMCkpO3ZhciB3PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRpdGxlIik7dy5pbm5lclRleHQ9eSxiLmFwcGVuZENoaWxkKHcpLGIuYXBwZW5kQ2hpbGQoZCksZy5hcHBlbmRDaGlsZChiKSxoLnB1c2goYiksdC5hcHBlbmRDaGlsZChnKSxsPWYueStmLmhlaWdodH1yZXR1cm4gdC5yZW1vdmVDaGlsZChpKSxofSh0aGlzLnJlbmRlcmVyLGIsZS5tZXRhVGV4dC50aXRsZSx0aGlzLnJlc3BvbnNpdmUsYSl9ZWxzZSB0aGlzLnN2Z3M9W3RoaXMucmVuZGVyZXIucGFwZXIuc3ZnXTt1KHRoaXMsdGhpcy5zdmdzKSx0aGlzLmphenpjaG9yZHM9bn0seS5wcm90b3R5cGUuZ2V0RGltPWZ1bmN0aW9uKGUpe2lmKCFlLmRpbSl7dmFyIHQ9ZS5zdmdFbC5nZXRCQm94KCk7ZS5kaW09e2xlZnQ6TWF0aC5yb3VuZCh0LngpLHRvcDpNYXRoLnJvdW5kKHQueSkscmlnaHQ6TWF0aC5yb3VuZCh0LngrdC53aWR0aCksYm90dG9tOk1hdGgucm91bmQodC55K3QuaGVpZ2h0KX19cmV0dXJuIGUuZGltfSx5LnByb3RvdHlwZS5hZGRTZWxlY3RMaXN0ZW5lcj1mdW5jdGlvbihlKXt0aGlzLmxpc3RlbmVyc1t0aGlzLmxpc3RlbmVycy5sZW5ndGhdPWV9LGUuZXhwb3J0cz15fSwxOTU0OmZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUpe3RoaXMuc2hvdWxkQWRkQ2xhc3Nlcz1lLnNob3VsZEFkZENsYXNzZXMsdGhpcy5yZXNldCgpfTt0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMubGluZU51bWJlcj1udWxsLHRoaXMudm9pY2VOdW1iZXI9bnVsbCx0aGlzLm1lYXN1cmVOdW1iZXI9bnVsbCx0aGlzLm1lYXN1cmVUb3RhbFBlckxpbmU9W10sdGhpcy5ub3RlTnVtYmVyPW51bGx9LHQucHJvdG90eXBlLmluY3JMaW5lPWZ1bmN0aW9uKCl7bnVsbD09PXRoaXMubGluZU51bWJlcj90aGlzLmxpbmVOdW1iZXI9MDp0aGlzLmxpbmVOdW1iZXIrKyx0aGlzLnZvaWNlTnVtYmVyPW51bGwsdGhpcy5tZWFzdXJlTnVtYmVyPW51bGwsdGhpcy5ub3RlTnVtYmVyPW51bGx9LHQucHJvdG90eXBlLmluY3JWb2ljZT1mdW5jdGlvbigpe251bGw9PT10aGlzLnZvaWNlTnVtYmVyP3RoaXMudm9pY2VOdW1iZXI9MDp0aGlzLnZvaWNlTnVtYmVyKyssdGhpcy5tZWFzdXJlTnVtYmVyPW51bGwsdGhpcy5ub3RlTnVtYmVyPW51bGx9LHQucHJvdG90eXBlLmlzSW5NZWFzdXJlPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLm1lYXN1cmVOdW1iZXJ9LHQucHJvdG90eXBlLm5ld01lYXN1cmU9ZnVuY3Rpb24oKXt0aGlzLm1lYXN1cmVOdW1iZXImJih0aGlzLm1lYXN1cmVUb3RhbFBlckxpbmVbdGhpcy5saW5lTnVtYmVyXT10aGlzLm1lYXN1cmVOdW1iZXIpLHRoaXMubWVhc3VyZU51bWJlcj1udWxsLHRoaXMubm90ZU51bWJlcj1udWxsfSx0LnByb3RvdHlwZS5zdGFydE1lYXN1cmU9ZnVuY3Rpb24oKXt0aGlzLm1lYXN1cmVOdW1iZXI9MCx0aGlzLm5vdGVOdW1iZXI9MH0sdC5wcm90b3R5cGUuaW5jck1lYXN1cmU9ZnVuY3Rpb24oKXt0aGlzLm1lYXN1cmVOdW1iZXIrKyx0aGlzLm5vdGVOdW1iZXI9MH0sdC5wcm90b3R5cGUuaW5jck5vdGU9ZnVuY3Rpb24oKXt0aGlzLm5vdGVOdW1iZXIrK30sdC5wcm90b3R5cGUubWVhc3VyZVRvdGFsPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAsdD0wO3Q8dGhpcy5saW5lTnVtYmVyO3QrKyllKz10aGlzLm1lYXN1cmVUb3RhbFBlckxpbmVbdF0/dGhpcy5tZWFzdXJlVG90YWxQZXJMaW5lW3RdOjA7cmV0dXJuIHRoaXMubWVhc3VyZU51bWJlciYmKGUrPXRoaXMubWVhc3VyZU51bWJlciksZX0sdC5wcm90b3R5cGUuZ2V0Q3VycmVudD1mdW5jdGlvbihlKXtyZXR1cm57bGluZTp0aGlzLmxpbmVOdW1iZXIsbWVhc3VyZTp0aGlzLm1lYXN1cmVOdW1iZXIsbWVhc3VyZVRvdGFsOnRoaXMubWVhc3VyZVRvdGFsKCksdm9pY2U6dGhpcy52b2ljZU51bWJlcixub3RlOnRoaXMubm90ZU51bWJlcn19LHQucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLnNob3VsZEFkZENsYXNzZXMpcmV0dXJuIiI7dmFyIHQ9W107aWYoZSYmZS5sZW5ndGg+MCYmdC5wdXNoKGUpLCJhYmNqcy10YWItbnVtYmVyIj09PWUpcmV0dXJuIHQuam9pbigiICIpO2lmKCJ0ZXh0IGluc3RydW1lbnQtbmFtZSI9PT1lKXJldHVybiJhYmNqcy10ZXh0IGFiY2pzLWluc3RydW1lbnQtbmFtZSI7aWYobnVsbCE9PXRoaXMubGluZU51bWJlciYmdC5wdXNoKCJsIit0aGlzLmxpbmVOdW1iZXIpLG51bGwhPT10aGlzLm1lYXN1cmVOdW1iZXImJnQucHVzaCgibSIrdGhpcy5tZWFzdXJlTnVtYmVyKSxudWxsIT09dGhpcy5tZWFzdXJlTnVtYmVyJiZ0LnB1c2goIm1tIit0aGlzLm1lYXN1cmVUb3RhbCgpKSxudWxsIT09dGhpcy52b2ljZU51bWJlciYmdC5wdXNoKCJ2Iit0aGlzLnZvaWNlTnVtYmVyKSxlJiYoZS5pbmRleE9mKCJub3RlIik+PTB8fGUuaW5kZXhPZigicmVzdCIpPj0wfHxlLmluZGV4T2YoImx5cmljIik+PTApJiZudWxsIT09dGhpcy5ub3RlTnVtYmVyJiZ0LnB1c2goIm4iK3RoaXMubm90ZU51bWJlciksdC5sZW5ndGg+MCl7dD0odD10LmpvaW4oIiAiKSkuc3BsaXQoIiAiKTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKykwIT09dFtyXS5pbmRleE9mKCJhYmNqcy0iKSYmdFtyXS5sZW5ndGg+MCYmKHRbcl09ImFiY2pzLSIrdFtyXSl9cmV0dXJuIHQuam9pbigiICIpfSxlLmV4cG9ydHM9dH0sMTMyODpmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe3RoaXMuZm9ybWF0dGluZz1lLHRoaXMuY2xhc3Nlcz10fTt0LnByb3RvdHlwZS51cGRhdGVGb250cz1mdW5jdGlvbihlKXtlLmdjaG9yZGZvbnQmJih0aGlzLmZvcm1hdHRpbmcuZ2Nob3JkZm9udD1lLmdjaG9yZGZvbnQpLGUudHJpcGxldGZvbnQmJih0aGlzLmZvcm1hdHRpbmcudHJpcGxldGZvbnQ9ZS50cmlwbGV0Zm9udCksZS5hbm5vdGF0aW9uZm9udCYmKHRoaXMuZm9ybWF0dGluZy5hbm5vdGF0aW9uZm9udD1lLmFubm90YXRpb25mb250KSxlLnZvY2FsZm9udCYmKHRoaXMuZm9ybWF0dGluZy52b2NhbGZvbnQ9ZS52b2NhbGZvbnQpfSx0LnByb3RvdHlwZS5nZXRGYW1pbHk9ZnVuY3Rpb24oZSl7cmV0dXJuJyInPT09ZVswXSYmJyInPT09ZVtlLmxlbmd0aC0xXT9lLnN1YnN0cmluZygxLGUubGVuZ3RoLTEpOmV9LHQucHJvdG90eXBlLmNhbGM9ZnVuY3Rpb24oZSx0KXt2YXIgcjtyPSJzdHJpbmciPT10eXBlb2YgZT8ocj10aGlzLmZvcm1hdHRpbmdbZV0pP3tmYWNlOnIuZmFjZSxzaXplOk1hdGgucm91bmQoNCpyLnNpemUvMyksZGVjb3JhdGlvbjpyLmRlY29yYXRpb24sc3R5bGU6ci5zdHlsZSx3ZWlnaHQ6ci53ZWlnaHQsYm94OnIuYm94fTp7ZmFjZToiQXJpYWwiLHNpemU6TWF0aC5yb3VuZCgxNiksZGVjb3JhdGlvbjoidW5kZXJsaW5lIixzdHlsZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCJ9OntmYWNlOmUuZmFjZSxzaXplOk1hdGgucm91bmQoNCplLnNpemUvMyksZGVjb3JhdGlvbjplLmRlY29yYXRpb24sc3R5bGU6ZS5zdHlsZSx3ZWlnaHQ6ZS53ZWlnaHQsYm94OmUuYm94fTt2YXIgbj10aGlzLmZvcm1hdHRpbmcuZm9udGJveHBhZGRpbmc/dGhpcy5mb3JtYXR0aW5nLmZvbnRib3hwYWRkaW5nOi4xO3JldHVybiByLnBhZGRpbmc9ci5zaXplKm4se2ZvbnQ6cixhdHRyOnsiZm9udC1zaXplIjpyLnNpemUsImZvbnQtc3R5bGUiOnIuc3R5bGUsImZvbnQtZmFtaWx5Ijp0aGlzLmdldEZhbWlseShyLmZhY2UpLCJmb250LXdlaWdodCI6ci53ZWlnaHQsInRleHQtZGVjb3JhdGlvbiI6ci5kZWNvcmF0aW9uLGNsYXNzOnRoaXMuY2xhc3Nlcy5nZW5lcmF0ZSh0KX19fSxlLmV4cG9ydHM9dH0sOTc5OTpmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe3RoaXMuZ2V0Rm9udEFuZEF0dHI9ZSx0aGlzLnN2Zz10fTt0LnByb3RvdHlwZS51cGRhdGVGb250cz1mdW5jdGlvbihlKXt0aGlzLmdldEZvbnRBbmRBdHRyLnVwZGF0ZUZvbnRzKGUpfSx0LnByb3RvdHlwZS5hdHRyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZ2V0Rm9udEFuZEF0dHIuY2FsYyhlLHQpfSx0LnByb3RvdHlwZS5nZXRGYW1pbHk9ZnVuY3Rpb24oZSl7cmV0dXJuJyInPT09ZVswXSYmJyInPT09ZVtlLmxlbmd0aC0xXT9lLnN1YnN0cmluZygxLGUubGVuZ3RoLTEpOmV9LHQucHJvdG90eXBlLmNhbGM9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGE7YT0ic3RyaW5nIj09dHlwZW9mIHQ/dGhpcy5hdHRyKHQscik6e2ZvbnQ6e2ZhY2U6dC5mYWNlLHNpemU6dC5zaXplLGRlY29yYXRpb246dC5kZWNvcmF0aW9uLHN0eWxlOnQuc3R5bGUsd2VpZ2h0OnQud2VpZ2h0fSxhdHRyOnsiZm9udC1zaXplIjp0LnNpemUsImZvbnQtc3R5bGUiOnQuc3R5bGUsImZvbnQtZmFtaWx5Ijp0aGlzLmdldEZhbWlseSh0LmZhY2UpLCJmb250LXdlaWdodCI6dC53ZWlnaHQsInRleHQtZGVjb3JhdGlvbiI6dC5kZWNvcmF0aW9uLGNsYXNzOnRoaXMuZ2V0Rm9udEFuZEF0dHIuY2xhc3Nlcy5nZW5lcmF0ZShyKX19O3ZhciBpPXRoaXMuc3ZnLmdldFRleHRTaXplKGUsYS5hdHRyLG4pO3JldHVybiBhLmZvbnQuYm94P3toZWlnaHQ6aS5oZWlnaHQrNCphLmZvbnQucGFkZGluZyx3aWR0aDppLndpZHRoKzQqYS5mb250LnBhZGRpbmd9Oml9LHQucHJvdG90eXBlLmJhc2VsaW5lVG9DZW50ZXI9ZnVuY3Rpb24oZSx0LHIsbixhKXtyZXR1cm4uNSp0aGlzLmNhbGMoZSx0LHIpLmhlaWdodCsoYS1uLTIpKnRoaXMuYXR0cih0LHIpLmZvbnQuc2l6ZX0sZS5leHBvcnRzPXR9LDIxODc6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGUpZm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspe3ZhciBpPWVbYV0scz1pLmdldEF0dHJpYnV0ZSgiaGlnaGxpZ2h0Iik7c3x8KHM9ImZpbGwiKSxpLnNldEF0dHJpYnV0ZShzLG4pO3ZhciBvPWkuZ2V0QXR0cmlidXRlKCJjbGFzcyIpO298fChvPSIiKSxvPShvPW8ucmVwbGFjZShyLCIiKSkucmVwbGFjZSh0LCIiKSx0Lmxlbmd0aD4wJiYoby5sZW5ndGg+MCYmIiAiIT09b1tvLmxlbmd0aC0xXSYmKG8rPSIgIiksbys9dCksaS5zZXRBdHRyaWJ1dGUoImNsYXNzIixvKX19fSw0MzMxOmZ1bmN0aW9uKGUpe3ZhciB0PXtGT05URU06MzYwLEZPTlRTSVpFOjMwfTt0LlNURVA9OTMqdC5GT05UU0laRS83MjAsdC5TUEFDRT0xMCx0LlRPUE5PVEU9MTUsdC5TVEFWRUhFSUdIVD0xMDAsdC5JTkRFTlQ9NTAsZS5leHBvcnRzPXR9LDgxMjM6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQscixuKXtpZigwPT09ZS5pbmRleE9mKHQpKXt2YXIgYT1lLnJlcGxhY2UodCwiIiksaT1wYXJzZUludChhLDEwKTsiIitpPT09YSYmKHJbbl09aSl9fWUuZXhwb3J0cz1mdW5jdGlvbihlLHIpe3ZhciBuPVtdO2lmKGUuYWJzRWwuZWxlbXNldCl7Zm9yKHZhciBhPXt9LGk9MDtpPGUuYWJzRWwuZWxlbXNldC5sZW5ndGg7aSsrKXt2YXIgcz1lLmFic0VsLmVsZW1zZXRbaV07aWYocylmb3IodmFyIG89cy5nZXRBdHRyaWJ1dGUoImNsYXNzIikuc3BsaXQoIiAiKSxjPTA7YzxvLmxlbmd0aDtjKyspYVtvW2NdXT0hMH1mb3IodmFyIGw9MDtsPE9iamVjdC5rZXlzKGEpLmxlbmd0aDtsKyspbi5wdXNoKE9iamVjdC5rZXlzKGEpW2xdKX1mb3IodmFyIGg9e30sdT0wO3U8bi5sZW5ndGg7dSsrKXQoblt1XSwiYWJjanMtdiIsaCwidm9pY2UiKSx0KG5bdV0sImFiY2pzLWwiLGgsImxpbmUiKSx0KG5bdV0sImFiY2pzLW0iLGgsIm1lYXN1cmUiKTtlLnN0YWZmUG9zJiYoaC5zdGFmZlBvcz1lLnN0YWZmUG9zKTtmb3IodmFyIGQ9ci50YXJnZXQ7ZCYmZC5kYXRhc2V0JiYhZC5kYXRhc2V0Lm5hbWUmJiJzdmciIT09ZC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7KWQ9ZC5wYXJlbnROb2RlO2Zvcih2YXIgZj1yLnRhcmdldDtmJiZmLmRhdGFzZXQmJiFmLmRhdGFzZXQuaW5kZXgmJiJzdmciIT09Zi50YWdOYW1lLnRvTG93ZXJDYXNlKCk7KWY9Zi5wYXJlbnROb2RlO3JldHVybiBmJiZmLmRhdGFzZXQmJihoLm5hbWU9Zi5kYXRhc2V0Lm5hbWUsaC5jbGlja2VkTmFtZT1kLmRhdGFzZXQubmFtZSxoLnBhcmVudENsYXNzZXM9Zi5jbGFzc0xpc3QpLGQmJmQuY2xhc3NMaXN0JiYoaC5jbGlja2VkQ2xhc3Nlcz1kLmNsYXNzTGlzdCksaC5zZWxlY3RhYmxlRWxlbWVudD1lLnN2Z0VsLHtjbGFzc2VzOm4sYW5hbHlzaXM6aH19fSwzMDUxOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDgxMjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZTt0JiZ0LmF0dHJpYnV0ZXMmJiJzdmciIT09dC50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJiF0LmF0dHJpYnV0ZXMuc2VsZWN0YWJsZTspdD10LnBhcmVudE5vZGU7aWYodCYmdC5hdHRyaWJ1dGVzJiZ0LmF0dHJpYnV0ZXMuc2VsZWN0YWJsZSl7dmFyIHI9dC5hdHRyaWJ1dGVzWyJkYXRhLWluZGV4Il0ubm9kZVZhbHVlO2lmKHImJihyPXBhcnNlSW50KHIsMTApKT49MCYmcjx0aGlzLnNlbGVjdGFibGVzLmxlbmd0aCl7dmFyIGE9dGhpcy5zZWxlY3RhYmxlc1tyXSxpPW4oYSxlKTtyZXR1cm4gaS5pbmRleD1yLGkuZWxlbWVudD1hLGl9fXJldHVybiBudWxsfX0sNTc0MTpmdW5jdGlvbihlLHQscil7dmFyIG49cigyMTg3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1lJiYoZT0iYWJjanMtbm90ZV9zZWxlY3RlZCIpLHZvaWQgMD09PXQmJih0PSIjZmYwMDAwIiksbih0aGlzLmVsZW1zZXQsZSwiIix0KX19LDgwNjg6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDMzMSksYT1yKDgxMjMpO2Z1bmN0aW9uIGkoZSl7ImtleWJvYXJkIj09PXRoaXMuZHJhZ01lY2hhbmlzbSYmMCE9PXRoaXMuZHJhZ1lTdGVwJiZ0aGlzLmRyYWdUYXJnZXQmJnAuYmluZCh0aGlzKSh0aGlzLmRyYWdUYXJnZXQsdGhpcy5kcmFnWVN0ZXAsdGhpcy5zZWxlY3RhYmxlcy5sZW5ndGgsdGhpcy5kcmFnSW5kZXgsZSksdGhpcy5kcmFnWVN0ZXA9MH1mdW5jdGlvbiBzKGUpe3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgMzg6Y2FzZSA0MDplLnByZXZlbnREZWZhdWx0KCl9fWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ITEscj1lLnRhcmdldC5kYXRhc2V0LmluZGV4O3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgMTM6Y2FzZSAzMjp0PSEwLHRoaXMuZHJhZ1RhcmdldD10aGlzLnNlbGVjdGFibGVzW3JdLHRoaXMuZHJhZ0luZGV4PXIsdGhpcy5kcmFnTWVjaGFuaXNtPSJrZXlib2FyZCIsZC5iaW5kKHRoaXMpKGUpO2JyZWFrO2Nhc2UgMzg6dD0hMCx0aGlzLmRyYWdUYXJnZXQ9dGhpcy5zZWxlY3RhYmxlc1tyXSx0aGlzLmRyYWdJbmRleD1yLHRoaXMuZHJhZ1RhcmdldCYmdGhpcy5kcmFnVGFyZ2V0LmlzRHJhZ2dhYmxlJiYodGhpcy5kcmFnZ2luZyYmdGhpcy5kcmFnVGFyZ2V0LmlzRHJhZ2dhYmxlJiZ0aGlzLmRyYWdUYXJnZXQuYWJzRWwuaGlnaGxpZ2h0KHZvaWQgMCx0aGlzLmRyYWdDb2xvciksdGhpcy5kcmFnWVN0ZXAtLSx0aGlzLmRyYWdUYXJnZXQuc3ZnRWwuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK3RoaXMuZHJhZ1lTdGVwKm4uU1RFUCsiKSIpKTticmVhaztjYXNlIDQwOnQ9ITAsdGhpcy5kcmFnVGFyZ2V0PXRoaXMuc2VsZWN0YWJsZXNbcl0sdGhpcy5kcmFnSW5kZXg9cix0aGlzLmRyYWdNZWNoYW5pc209ImtleWJvYXJkIix0aGlzLmRyYWdUYXJnZXQmJnRoaXMuZHJhZ1RhcmdldC5pc0RyYWdnYWJsZSYmKHRoaXMuZHJhZ2dpbmcmJnRoaXMuZHJhZ1RhcmdldC5pc0RyYWdnYWJsZSYmdGhpcy5kcmFnVGFyZ2V0LmFic0VsLmhpZ2hsaWdodCh2b2lkIDAsdGhpcy5kcmFnQ29sb3IpLHRoaXMuZHJhZ1lTdGVwKyssdGhpcy5kcmFnVGFyZ2V0LnN2Z0VsLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIit0aGlzLmRyYWdZU3RlcCpuLlNURVArIikiKSk7YnJlYWs7Y2FzZSA5OjAhPT10aGlzLmRyYWdZU3RlcCYmZC5iaW5kKHRoaXMpKGUpfXQmJmUucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBjKGUsdCl7dmFyIHIsbixhLGk9ZnVuY3Rpb24oZSx0KXtpZighdClyZXR1cm4tMTt2YXIgcj10LmRhdGFzZXQ7aWYoIXIpcmV0dXJuLTE7Zm9yKHZhciBuPXIuaW5kZXgsYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgaT1lW2FdLnN2Z0VsLmRhdGFzZXQ7aWYoaSYmbj09PWkuaW5kZXgpcmV0dXJuIGF9cmV0dXJuLTF9KGUuc2VsZWN0YWJsZXMsZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoInN2ZyI9PT1lLnRhZ05hbWUpcmV0dXJuIGU7aWYoIWUuZ2V0QXR0cmlidXRlKXJldHVybiBudWxsO2Zvcih2YXIgdD1lLmdldEF0dHJpYnV0ZSgic2VsZWN0YWJsZSIpOyF0Oyl0PSFlLnBhcmVudEVsZW1lbnR8fCJzdmciPT09KGU9ZS5wYXJlbnRFbGVtZW50KS50YWdOYW1lfHxlLmdldEF0dHJpYnV0ZSgic2VsZWN0YWJsZSIpO3JldHVybiBlfSh0LnRhcmdldCkpO3JldHVybiBpPj0wPyhhPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZS54PD10Lm9mZnNldFgmJmUueCtlLndpZHRoPj10Lm9mZnNldFgmJmUueTw9dC5vZmZzZXRZJiZlLnkrZS5oZWlnaHQ+PXQub2Zmc2V0WXx8TWF0aC5hYnModC5sYXllclkvci10Lm9mZnNldFkpPDM/W3Qub2Zmc2V0WCx0Lm9mZnNldFldOlt0LmxheWVyWCx0LmxheWVyWV19KGUuc2VsZWN0YWJsZXNbaV0uc3ZnRWwuZ2V0QkJveCgpLHQsZS5zY2FsZSkscj1hWzBdLG49YVsxXSk6KGE9ZnVuY3Rpb24oZSl7dmFyIHQscixuPTEsYT0xLGk9ZS50YXJnZXQuY2xvc2VzdCgic3ZnIikscz0wO3JldHVybiBpJiZpLnZpZXdCb3gmJmkudmlld0JveC5iYXNlVmFsJiYoMCE9PWkudmlld0JveC5iYXNlVmFsLndpZHRoJiYobj1pLnZpZXdCb3guYmFzZVZhbC53aWR0aC9pLmNsaWVudFdpZHRoKSwwIT09aS52aWV3Qm94LmJhc2VWYWwuaGVpZ2h0JiYoYT1pLnZpZXdCb3guYmFzZVZhbC5oZWlnaHQvaS5jbGllbnRIZWlnaHQpLHM9aS52aWV3Qm94LmJhc2VWYWwueSksZS50YXJnZXQmJiJzdmciPT09ZS50YXJnZXQudGFnTmFtZT8odD1lLm9mZnNldFgscj1lLm9mZnNldFkpOih0PWUubGF5ZXJYLHI9ZS5sYXllclkpLFt0Kj1uLChyKj1hKStzXX0odCksaT1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTk5OTk5OTksYT0tMSxpPTA7aTxlLnNlbGVjdGFibGVzLmxlbmd0aCYmbj4wO2krKyl7dmFyIHM9ZS5zZWxlY3RhYmxlc1tpXTtpZihlLmdldERpbShzKSxzLmRpbS5sZWZ0PHQmJnMuZGltLnJpZ2h0PnQmJnMuZGltLnRvcDxyJiZzLmRpbS5ib3R0b20+cilhPWksbj0wO2Vsc2UgaWYocy5kaW0udG9wPHImJnMuZGltLmJvdHRvbT5yKXt2YXIgbz1NYXRoLm1pbihNYXRoLmFicyhzLmRpbS5sZWZ0LXQpLE1hdGguYWJzKHMuZGltLnJpZ2h0LXQpKTtvPG4mJihuPW8sYT1pKX1lbHNlIGlmKHMuZGltLmxlZnQ8dCYmcy5kaW0ucmlnaHQ+dCl7dmFyIGM9TWF0aC5taW4oTWF0aC5hYnMocy5kaW0udG9wLXIpLE1hdGguYWJzKHMuZGltLmJvdHRvbS1yKSk7YzxuJiYobj1jLGE9aSl9ZWxzZXt2YXIgbD1NYXRoLmFicyh0LXMuZGltLmxlZnQpPk1hdGguYWJzKHQtcy5kaW0ucmlnaHQpP01hdGguYWJzKHQtcy5kaW0ucmlnaHQpOk1hdGguYWJzKHQtcy5kaW0ubGVmdCksaD1NYXRoLmFicyhyLXMuZGltLnRvcCk+TWF0aC5hYnMoci1zLmRpbS5ib3R0b20pP01hdGguYWJzKHItcy5kaW0uYm90dG9tKTpNYXRoLmFicyhyLXMuZGltLnRvcCksdT1NYXRoLnNxcnQobCpsK2gqaCk7dTxuJiYobj11LGE9aSl9fXJldHVybiBhPj0wJiZuPD0xMj9hOi0xfShlLHI9YVswXSxuPWFbMV0pKSx7eDpyLHk6bixjbGlja2VkT246aX19ZnVuY3Rpb24gbChlKXtpZihlJiZlLnRhcmdldCYmZS50b3VjaGVzJiYhKGUudG91Y2hlcy5sZW5ndGg8MSkpe3ZhciB0PWUudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9ZS50b3VjaGVzWzBdLnBhZ2VYLXQubGVmdCxuPWUudG91Y2hlc1swXS5wYWdlWS10LnRvcDtlLnRvdWNoZXNbMF0ub2Zmc2V0WD1yLGUudG91Y2hlc1swXS5vZmZzZXRZPW4sZS50b3VjaGVzWzBdLmxheWVyWD1lLnRvdWNoZXNbMF0ucGFnZVgsZS50b3VjaGVzWzBdLmxheWVyWT1lLnRvdWNoZXNbMF0ucGFnZVl9fWZ1bmN0aW9uIGgoZSl7dmFyIHQ9ZTsidG91Y2hzdGFydCI9PT1lLnR5cGUmJihsKGUpLGUudG91Y2hlcy5sZW5ndGg+MCYmKHQ9ZS50b3VjaGVzWzBdKSk7dmFyIHI9Yyh0aGlzLHQpO3IuY2xpY2tlZE9uPj0wJiYoInRvdWNoc3RhcnQiPT09ZS50eXBlfHwwPT09ZS5idXR0b24pJiZ0aGlzLnNlbGVjdGFibGVzW3IuY2xpY2tlZE9uXSYmKHRoaXMuZHJhZ1RhcmdldD10aGlzLnNlbGVjdGFibGVzW3IuY2xpY2tlZE9uXSx0aGlzLmRyYWdJbmRleD1yLmNsaWNrZWRPbix0aGlzLmRyYWdNZWNoYW5pc209Im1vdXNlIix0aGlzLmRyYWdNb3VzZVN0YXJ0PXt4OnIueCx5OnIueX0sdGhpcy5kcmFnZ2luZyYmdGhpcy5kcmFnVGFyZ2V0LmlzRHJhZ2dhYmxlJiYoZnVuY3Rpb24oZSx0KXtpZihlKXt2YXIgcj12KGUuc3ZnKTtyW3RdPSEwLGIoZS5zdmcscil9fSh0aGlzLnJlbmRlcmVyLnBhcGVyLCJhYmNqcy1kcmFnZ2luZy1pbi1wcm9ncmVzcyIpLHRoaXMuZHJhZ1RhcmdldC5hYnNFbC5oaWdobGlnaHQodm9pZCAwLHRoaXMuZHJhZ0NvbG9yKSkpfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9ZTtpZigidG91Y2htb3ZlIj09PWUudHlwZSYmKGwoZSksZS50b3VjaGVzLmxlbmd0aD4wJiYodD1lLnRvdWNoZXNbMF0pKSx0aGlzLmxhc3RUb3VjaE1vdmU9ZSx0aGlzLmRyYWdUYXJnZXQmJnRoaXMuZHJhZ2dpbmcmJnRoaXMuZHJhZ1RhcmdldC5pc0RyYWdnYWJsZSYmIm1vdXNlIj09PXRoaXMuZHJhZ01lY2hhbmlzbSYmdGhpcy5kcmFnTW91c2VTdGFydCl7dmFyIHI9Yyh0aGlzLHQpLGE9TWF0aC5yb3VuZCgoci55LXRoaXMuZHJhZ01vdXNlU3RhcnQueSkvbi5TVEVQKTthIT09dGhpcy5kcmFnWVN0ZXAmJih0aGlzLmRyYWdZU3RlcD1hLHRoaXMuZHJhZ1RhcmdldC5zdmdFbC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrYSpuLlNURVArIikiKSl9fWZ1bmN0aW9uIGQoZSl7dmFyIHQ9ZTsidG91Y2hlbmQiPT09ZS50eXBlJiZ0aGlzLmxhc3RUb3VjaE1vdmUmJihsKHRoaXMubGFzdFRvdWNoTW92ZSksdGhpcy5sYXN0VG91Y2hNb3ZlJiZ0aGlzLmxhc3RUb3VjaE1vdmUudG91Y2hlcyYmdGhpcy5sYXN0VG91Y2hNb3ZlLnRvdWNoZXMubGVuZ3RoPjAmJih0PXRoaXMubGFzdFRvdWNoTW92ZS50b3VjaGVzWzBdKSksdGhpcy5kcmFnVGFyZ2V0JiYobS5iaW5kKHRoaXMpKCksdGhpcy5kcmFnVGFyZ2V0LmFic0VsJiZ0aGlzLmRyYWdUYXJnZXQuYWJzRWwuaGlnaGxpZ2h0JiYodGhpcy5zZWxlY3RlZD1bdGhpcy5kcmFnVGFyZ2V0LmFic0VsXSx0aGlzLmRyYWdUYXJnZXQuYWJzRWwuaGlnaGxpZ2h0KHZvaWQgMCx0aGlzLnNlbGVjdGlvbkNvbG9yKSkscC5iaW5kKHRoaXMpKHRoaXMuZHJhZ1RhcmdldCx0aGlzLmRyYWdZU3RlcCx0aGlzLnNlbGVjdGFibGVzLmxlbmd0aCx0aGlzLmRyYWdJbmRleCx0KSx0aGlzLmRyYWdUYXJnZXQuc3ZnRWwmJnRoaXMuZHJhZ1RhcmdldC5zdmdFbC5mb2N1cyYmKHRoaXMuZHJhZ1RhcmdldC5zdmdFbC5mb2N1cygpLHRoaXMuZHJhZ1RhcmdldD1udWxsLHRoaXMuZHJhZ0luZGV4PS0xKSxmdW5jdGlvbihlLHQpe2lmKGUpe3ZhciByPXYoZS5zdmcpO2RlbGV0ZSByW3RdLGIoZS5zdmcscil9fSh0aGlzLnJlbmRlcmVyLnN2ZywiYWJjanMtZHJhZ2dpbmctaW4tcHJvZ3Jlc3MiKSl9ZnVuY3Rpb24gZihlKXtlPj0wJiZlPHRoaXMuc2VsZWN0YWJsZXMubGVuZ3RoJiYodGhpcy5kcmFnVGFyZ2V0PXRoaXMuc2VsZWN0YWJsZXNbZV0sdGhpcy5kcmFnSW5kZXg9ZSx0aGlzLmRyYWdNZWNoYW5pc209ImtleWJvYXJkIixkLmJpbmQodGhpcykoe3RhcmdldDp0aGlzLmRyYWdUYXJnZXQuc3ZnRWx9KSl9ZnVuY3Rpb24gcChlLHQscixuLGkpe2Zvcih2YXIgcz1hKGUsaSksbz1zLmNsYXNzZXMsYz1zLmFuYWx5c2lzLGw9MDtsPHRoaXMubGlzdGVuZXJzLmxlbmd0aDtsKyspdGhpcy5saXN0ZW5lcnNbbF0oZS5hYnNFbC5hYmNlbGVtLGUuYWJzRWwudHVuZU51bWJlcixvLmpvaW4oIiAiKSxjLHtzdGVwOnQsbWF4OnIsaW5kZXg6bixzZXRTZWxlY3Rpb246Zi5iaW5kKHRoaXMpfSxpKX1mdW5jdGlvbiBtKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLnNlbGVjdGVkLmxlbmd0aDtlKyspdGhpcy5zZWxlY3RlZFtlXS51bmhpZ2hsaWdodCh2b2lkIDAsdGhpcy5yZW5kZXJlci5mb3JlZ3JvdW5kQ29sb3IpO3RoaXMuc2VsZWN0ZWQ9W119ZnVuY3Rpb24gZyhlLHQpe20uYmluZCh0aGlzKSgpO2Zvcih2YXIgcj0wO3I8dGhpcy5zdGFmZmdyb3Vwcy5sZW5ndGg7cisrKWZvcih2YXIgbj10aGlzLnN0YWZmZ3JvdXBzW3JdLnZvaWNlcyxhPTA7YTxuLmxlbmd0aDthKyspZm9yKHZhciBpPW5bYV0uY2hpbGRyZW4scz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgbz1pW3NdLmFiY2VsZW0uc3RhcnRDaGFyLGM9aVtzXS5hYmNlbGVtLmVuZENoYXI7KHQ+byYmZTxjfHx0PT09ZSYmdD09PWMpJiYodGhpcy5zZWxlY3RlZFt0aGlzLnNlbGVjdGVkLmxlbmd0aF09aVtzXSxpW3NdLmhpZ2hsaWdodCh2b2lkIDAsdGhpcy5zZWxlY3Rpb25Db2xvcikpfX1mdW5jdGlvbiB2KGUpe3ZhciB0PWUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpO3R8fCh0PSIiKTtmb3IodmFyIHI9dC5zcGxpdCgiICIpLG49e30sYT0wO2E8ci5sZW5ndGg7YSsrKW5bclthXV09ITA7cmV0dXJuIG59ZnVuY3Rpb24gYihlLHQpe3ZhciByPVtdO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJnIucHVzaChuKTtlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHIuam9pbigiICIpKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihlLnJhbmdlSGlnaGxpZ2h0PWcsZS5kcmFnZ2luZylmb3IodmFyIHI9MDtyPGUuc2VsZWN0YWJsZXMubGVuZ3RoO3IrKyl7dmFyIG49ZS5zZWxlY3RhYmxlc1tyXTsidHJ1ZSI9PT1uLnN2Z0VsLmdldEF0dHJpYnV0ZSgic2VsZWN0YWJsZSIpJiYobi5zdmdFbC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwwKSxuLnN2Z0VsLnNldEF0dHJpYnV0ZSgiZGF0YS1pbmRleCIsciksbi5zdmdFbC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixzLmJpbmQoZSkpLG4uc3ZnRWwuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLG8uYmluZChlKSksbi5zdmdFbC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsaS5iaW5kKGUpKSl9Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspdFthXS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixoLmJpbmQoZSkse3Bhc3NpdmU6ITB9KSx0W2FdLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdS5iaW5kKGUpLHtwYXNzaXZlOiEwfSksdFthXS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsZC5iaW5kKGUpLHtwYXNzaXZlOiEwfSksdFthXS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGguYmluZChlKSksdFthXS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHUuYmluZChlKSksdFthXS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixkLmJpbmQoZSkpfX0sNTgyOTpmdW5jdGlvbihlLHQscil7dmFyIG49cigyMTg3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1lJiYoZT0iYWJjanMtbm90ZV9zZWxlY3RlZCIpLHZvaWQgMD09PXQmJih0PSIjMDAwMDAwIiksbih0aGlzLmVsZW1zZXQsIiIsZSx0KX19LDYyNTE6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjY1OCksYT1yKDQzMzEpLGk9cigzNzIxKSxzPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lPzA6TWF0aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLmxvZygyKSl9O2Z1bmN0aW9uIG8oZSx0LHIsbil7aWYoIWUuY2hpbGRyZW4pcmV0dXJuIG47Zm9yKHZhciBhPTA7YTxlLmNoaWxkcmVuLmxlbmd0aDthKyspe3ZhciBpPWUuY2hpbGRyZW5bYV07dCYmdm9pZCAwIT09aS50b3AmJiJmbGFncy51Z3JhY2UiPT09aS5jP249TWF0aC5tYXgobixpLnRvcC1yKTp0fHx2b2lkIDA9PT1pLmJvdHRvbXx8ImZsYWdzLnVncmFjZSIhPT1pLmN8fChuPU1hdGgubWF4KG4sci1pLmJvdHRvbSs3KSl9cmV0dXJuIG59ZnVuY3Rpb24gYyhlLHQscil7dmFyIG49dC5oZWFkc1tlPzA6dC5oZWFkcy5sZW5ndGgtMV0sYT1yLmhlYWRzW2U/MDpyLmhlYWRzLmxlbmd0aC0xXSxpPW4ueDtlJiYoaSs9bi53LS42KTt2YXIgcz1hLng7cmV0dXJuW2kscys9ZT9hLnc6LjZdfWUuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigwIT09ZS5lbGVtcy5sZW5ndGgmJiFlLmFsbHJlc3RzKXt2YXIgdD1mdW5jdGlvbihlLHQpe3ZhciByPWU/YS5TVEVQOi1hLlNURVA7cmV0dXJuIHQmJihyKj0uNCkscn0oZS5zdGVtc1VwLGUuaXNncmFjZSkscj1lLmVsZW1zWzBdLGw9ZS5lbGVtc1tlLmVsZW1zLmxlbmd0aC0xXSxoPTAsdT1lLnN0ZW1zVXA/ci5hYmNlbGVtLm1heHBpdGNoOnIuYWJjZWxlbS5taW5waXRjaDtoPW8ocixlLnN0ZW1zVXAsdSxoKSxoPW8obCxlLnN0ZW1zVXAsdSxoKSxoPU1hdGgubWF4KGUuc3RlbUhlaWdodCxoKzMpO3ZhciBkPShnPWUuYXZlcmFnZSx2PWUuZWxlbXMubGVuZ3RoLGI9aCx5PWUuc3RlbXNVcCx4PXIuYWJjZWxlbS5hdmVyYWdlcGl0Y2gsaz1sLmFiY2VsZW0uYXZlcmFnZXBpdGNoLHc9ZS5pc2ZsYXQsQz1lLm1pbixUPWUubWF4LFM9ZS5pc2dyYWNlLF89Yi0yLEU9Yi0yLE09TWF0aC5yb3VuZCh5P01hdGgubWF4KGcrXyxUK0UpOk1hdGgubWluKGctXyxDLUUpKSxBPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKG4pcmV0dXJuIDA7dmFyIGE9ZS10LGk9ci8yO3JldHVybiBhPmkmJihhPWkpLGE8LWkmJihhPS1pKSxhfSh4LGssdix3KSxOPU0rTWF0aC5mbG9vcihBLzIpLEI9TStNYXRoLmZsb29yKC1BLzIpLFN8fCh5JiZNPDZ8fCF5JiZNPjYpJiYoTj02LEI9NiksW04sQl0pLGY9YyhlLnN0ZW1zVXAscixsKTtlLmFkZEJlYW0oe3N0YXJ0WDpmWzBdLGVuZFg6ZlsxXSxzdGFydFk6ZFswXSxlbmRZOmRbMV0sZHk6dH0pO2Zvcih2YXIgcD1mdW5jdGlvbihlLHQscixuLGEpe2Zvcih2YXIgbz1bXSxsPVtdLGg9MDtoPGUubGVuZ3RoO2grKyl7dmFyIHU9ZVtoXTtpZighdS5hYmNlbGVtLnJlc3Qpe3ZhciBkPXUuaGVhZHNbdD8wOnUuaGVhZHMubGVuZ3RoLTFdLGY9ZC54Kyh0P2QudzowKSxwPWkoci5zdGFydFgsci5zdGFydFksci5lbmRYLHIuZW5kWSxmKSxtPXQ/LTEuNToxLjU7biYmKG09MiptLzMpO3ZhciBnPXUuYWJjZWxlbS5kdXJhdGlvbjswPT09ZyYmKGc9LjI1KTtmb3IodmFyIHY9cyhnKTt2PC0zO3YrKyl7dmFyIGI9LTQtdjtpZihsW2JdP2xbYl0uc2luZ2xlPSExOmxbYl09e3g6ZisodD8tLjY6MCkseTpwK20qKGIrMSksZHVybG9nOnYsc2luZ2xlOiEwfSxoPjAmJnUuYWJjZWxlbS5iZWFtYnImJnUuYWJjZWxlbS5iZWFtYnI8PWIrMSl7bFtiXS5zcGxpdHx8KGxbYl0uc3BsaXQ9W2xbYl0ueF0pO3ZhciB5PWModCxlW2gtMV0sdSk7bFtiXS5zcGxpdFtsW2JdLnNwbGl0Lmxlbmd0aC0xXT49eVswXSYmKHlbMF0rPXUudyksbFtiXS5zcGxpdC5wdXNoKHlbMF0pLGxbYl0uc3BsaXQucHVzaCh5WzFdKX19Zm9yKHZhciB4PWwubGVuZ3RoLTE7eD49MDt4LS0paWYoaD09PWUubGVuZ3RoLTF8fHMoZVtoKzFdLmFiY2VsZW0uZHVyYXRpb24pPi14LTQpe3ZhciBrPWYsdz1wK20qKHgrMSk7bFt4XS5zaW5nbGUmJihrPTA9PT1oP2YrNTpmLTUsdz1pKHIuc3RhcnRYLHIuc3RhcnRZLHIuZW5kWCxyLmVuZFksaykrbSooeCsxKSk7dmFyIEM9e3N0YXJ0WDpsW3hdLngsZW5kWDprLHN0YXJ0WTpsW3hdLnksZW5kWTp3LGR5OmF9O2lmKHZvaWQgMCE9PWxbeF0uc3BsaXQpe3ZhciBUPWxbeF0uc3BsaXQ7Qy5lbmRYPD1UW1QubGVuZ3RoLTFdJiYoVFtULmxlbmd0aC0xXS09dS53KSxULnB1c2goQy5lbmRYKSxDLnNwbGl0PWxbeF0uc3BsaXR9by5wdXNoKEMpLGw9bC5zbGljZSgwLHgpfX19cmV0dXJuIG99KGUuZWxlbXMsZS5zdGVtc1VwLGUuYmVhbXNbMF0sZS5pc2dyYWNlLHQpLG09MDttPHAubGVuZ3RoO20rKyllLmFkZEJlYW0ocFttXSk7IWZ1bmN0aW9uKGUsdCxyLHMsbyl7Zm9yKHZhciBjPTA7YzxlLmxlbmd0aDtjKyspe3ZhciBsPWVbY107aWYoIWwuYWJjZWxlbS5yZXN0KXt2YXIgaD0hbC5hZGRFeHRyYSx1PWg/bzpsLGQ9bC5oZWFkc1t0PzA6bC5oZWFkcy5sZW5ndGgtMV0sZj0uMixwPWQucGl0Y2grKHQ/ZjotZiksbT10P2QudzowO2h8fChtKz1kLmR4KTt2YXIgZz1kLngrbSx2PWkoci5zdGFydFgsci5zdGFydFksci5lbmRYLHIuZW5kWSxnKSxiPXQ/LS42Oi42O3R8fCh2LT1zLzIvYS5TVEVQKSxoJiYobSs9bC5oZWFkc1swXS5keCksIm5vdGVoZWFkcy5zbGFzaC5xdWFydGVyIj09PWQuYyYmKHQ/cCs9MTpwLT0xKTt2YXIgeT1uZXcgbihudWxsLG0sMCxwLHt0eXBlOiJzdGVtIixwaXRjaDI6dixsaW5ld2lkdGg6Yn0pO3kuc2V0WCh1LngpLHUuYWRkUmlnaHQoeSl9fX0oZS5lbGVtcyxlLnN0ZW1zVXAsZS5iZWFtc1swXSx0LGUubWFpbk5vdGUpfXZhciBnLHYsYix5LHgsayx3LEMsVCxTLF8sRSxNLEEsTixCfX0sMzcyMTpmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbixhKXtyZXR1cm4gdCsobi10KS8oci1lKSooYS1lKX19LDQ3NjA6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQscil7aWYodClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZih0W25dLmhlYWRlcil7dmFyIGE9ci5jYWxjKHRbbl0uaGVhZGVyLCJ2b2ljZWZvbnQiLCIiKTtlPU1hdGgubWF4KGUsYS53aWR0aCl9cmV0dXJuIGV9ZnVuY3Rpb24gcihlLHQscil7aWYoZSlmb3IodmFyIGE9MDthPGUubGVuZ3RoO2ErKyluKHQsZVthXSkscj1NYXRoLm1heChyLGVbYV0uZ2V0V2lkdGgoKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gbihlLHQpe3QueD1lfWUuZXhwb3J0cz1mdW5jdGlvbihlLG4sYSxpLHMpe3ZhciBvLGMsbD1lLnBhZGRpbmcubGVmdCxoPTA7Zm9yKG89MDtvPGEubGVuZ3RoO28rKylhW29dLmhlYWRlciYmKGM9bi5jYWxjKGFbb10uaGVhZGVyLCJ2b2ljZWZvbnQiLCIiKSxoPU1hdGgubWF4KGgsYy53aWR0aCkpO2g9dChoLGksbiksKGg9dChoLHMsbikpJiYoaCs9bi5jYWxjKCJBIiwidm9pY2Vmb250IiwiIikud2lkdGgpO3ZhciB1PTA7cmV0dXJuIHU9cihpLGwrPWgsdSksbCsodT1yKHMsbCx1KSl9fSw1Njg3OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ3NjApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGE9bihlLHQuZ2V0VGV4dFNpemUsdC52b2ljZXMsdC5icmFjZSx0LmJyYWNrZXQpLGk9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MCxuPTAsYT0wO2E8ZS52b2ljZXMubGVuZ3RoO2ErKyl7Zm9yKHZhciBpPTAscz1lLnZvaWNlc1thXSxvPTA7bzxzLmNoaWxkcmVuLmxlbmd0aDtvKyspe3ZhciBjPXMuY2hpbGRyZW5bb107aWYoaSs9Yy5kdXJhdGlvbixjLmR1cmF0aW9uKXt2YXIgbD0oYy53K3QpL2MuZHVyYXRpb247cj1NYXRoLm1heChyLGwpfX1uPU1hdGgubWF4KG4saSl9cmV0dXJue3RvdGFsRHVyYXRpb246bixtaW5TcGFjaW5nOnJ9fSh0LHIubWluUGFkZGluZykscz1pLnRvdGFsRHVyYXRpb24sbz1pLm1pblNwYWNpbmcqcztyLm1pbldpZHRoJiYobz1NYXRoLm1heChvLHIubWluV2lkdGgpKTt2YXIgYz1yLm1pblBhZGRpbmc/ci5taW5QYWRkaW5nLzI6Mjt0LnN0YXJ0eD1hLHQudz1vK2E7Zm9yKHZhciBsPTA7bDx0LnZvaWNlcy5sZW5ndGg7bCsrKXt2YXIgaD10LnZvaWNlc1tsXTtoLnN0YXJ0eD1hLGgudz1vK2E7Zm9yKHZhciB1PWEsZD0hMSxmPTAscD0wO3A8aC5jaGlsZHJlbi5sZW5ndGg7cCsrKXt2YXIgbT1oLmNoaWxkcmVuW3BdO2R8fCgwIT09bS5kdXJhdGlvbj8oZD0hMCxmPShvK2EtdSkvcyx0LmdyaWRTdGFydD11KToobS54PXUsdSs9bS53K20ubWluc3BhY2luZykpLGQmJigiY2VudGVyIj09PXIuYWxpZ24/bS54PXUrbS5kdXJhdGlvbipmLzItbS53LzI6MD09PW0uZHVyYXRpb24/bS54PXUrMS1tLnc6bS54PXUrYy1tLmV4dHJhdyx1Kz1tLmR1cmF0aW9uKmYpO2Zvcih2YXIgZz0wO2c8bS5jaGlsZHJlbi5sZW5ndGg7ZysrKXt2YXIgdj1tLmNoaWxkcmVuW2ddLGI9di5keD92LmR4OjA7di54PW0ueCtifX10LmdyaWRFbmQ9dX1yZXR1cm4gb319LDE1NjQ6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjc1OSksYT1yKDY5MzQpLGk9cig3MzUpLHM9cig0NzYwKSxvPXIoNTY4NyksYz1mdW5jdGlvbihlLHQscixuLGEsbyxjKXtmb3IodmFyIGg9cyhlLG4uZ2V0VGV4dFNpemUsbi52b2ljZXMsbi5icmFjZSxuLmJyYWNrZXQpLHU9cixkPTA7ZDw4O2QrKyl7dmFyIGY9aSh1LGUubWluUGFkZGluZyxjLG4saCk7aWYodT1sKG8sYS5zdHJldGNobGFzdCx0K2UucGFkZGluZy5sZWZ0LG4udyx1LGYuc3BhY2luZ1VuaXRzLGYubWluU3BhY2UsZS5wYWRkaW5nLmxlZnQrZS5wYWRkaW5nLnJpZ2h0KSxjJiZjb25zb2xlLmxvZygic2V0WFNwYWNlIixkLG4udyx1LG4ubWluc3BhY2UpLG51bGw9PT11KWJyZWFrfXJldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylmb3IodmFyIHI9ZVt0XSxuPTE7bjxyLmNoaWxkcmVuLmxlbmd0aC0xO24rKyl7dmFyIGE9ci5jaGlsZHJlbltuXTtpZihhLmFiY2VsZW0ucmVzdCYmKCJ3aG9sZSI9PT1hLmFiY2VsZW0ucmVzdC50eXBlfHwibXVsdGltZWFzdXJlIj09PWEuYWJjZWxlbS5yZXN0LnR5cGUpKXt2YXIgaT1yLmNoaWxkcmVuW24tMV0scz1yLmNoaWxkcmVuW24rMV07YS5jZW50ZXIoaSxzKX19fShuLnZvaWNlcyksbi53LWh9O2Z1bmN0aW9uIGwoZSx0LHIsbixhLGkscyxvKXtpZihlKWlmKHZvaWQgMD09PXQpe2lmKG4vcjwuNjYpcmV0dXJuIG51bGx9ZWxzZSBpZighKDEtKG4rbykvcjx0KSlyZXR1cm4gbnVsbDtyZXR1cm4gTWF0aC5hYnMoci1uKTwyP251bGw6aT4wPygoYT0oci0obi1pKmEpKS9pKSpzPjUwJiYoYT01MC9zKSxhKTpudWxsfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQscixpLHMsbCl7dmFyIGgsdSxkPXI7Zm9yKGg9MDtoPHQubGluZXMubGVuZ3RoO2grKyl7dmFyIGY7KHU9dC5saW5lc1toXSkuc3RhZmYmJihmPXZvaWQgMCE9PWw/byhlLHUuc3RhZmZHcm91cCxsKTpjKGUsZCxpLHUuc3RhZmZHcm91cCx0LmZvcm1hdHRpbmcsaD09PXQubGluZXMubGVuZ3RoLTEsITEpLE1hdGgucm91bmQoZik+TWF0aC5yb3VuZChkKSYmKGQ9ZixzJiYoaD0tMSkpKX1mb3IoaD0wO2g8dC5saW5lcy5sZW5ndGg7aCsrKWlmKCh1PXQubGluZXNbaF0pLnN0YWZmR3JvdXAmJnUuc3RhZmZHcm91cC52b2ljZXMpe2Zvcih2YXIgcD0wO3A8dS5zdGFmZkdyb3VwLnZvaWNlcy5sZW5ndGg7cCsrKW4odS5zdGFmZkdyb3VwLnZvaWNlc1twXSk7YShlLHUuc3RhZmZHcm91cCl9Zm9yKGg9MDtoPHQubGluZXMubGVuZ3RoO2grKykodT10LmxpbmVzW2hdKS5zdGFmZkdyb3VwJiZ1LnN0YWZmR3JvdXAuc2V0SGVpZ2h0KCk7cmV0dXJuIGR9fSw2OTM0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQzMzEpLGE9MTtmdW5jdGlvbiBpKGUsdCxyLG4pe2lmKGUuc3BlY2lhbFlbcl0pe3ZhciBpPWUuc3BlY2lhbFlbcl07biYmKGkqPW4pLGUudG9wKz1pK2EsdFtyXT1lLnRvcH19ZnVuY3Rpb24gcyhlLHQscil7dmFyIG4sYTtmb3Iobj0wO248dC5jaGlsZHJlbi5sZW5ndGg7bisrKW8oZSxhPXQuY2hpbGRyZW5bbl0scik7Zm9yKG49MDtuPHQub3RoZXJjaGlsZHJlbi5sZW5ndGg7bisrKXN3aXRjaCgoYT10Lm90aGVyY2hpbGRyZW5bbl0pLnR5cGUpe2Nhc2UiQ3Jlc2NlbmRvRWxlbSI6YyhlLGEpO2JyZWFrO2Nhc2UiRHluYW1pY0RlY29yYXRpb24iOmwoZSxhKTticmVhaztjYXNlIkVuZGluZ0VsZW0iOmgoZSxhKTticmVhaztjYXNlIlRpZUVsZW0iOnZhciBpPWEuZ2V0WUJvdW5kcygpO3Quc3RhZmYudG9wPU1hdGgubWF4KHQuc3RhZmYudG9wLGlbMF0pLHQuc3RhZmYudG9wPU1hdGgubWF4KHQuc3RhZmYudG9wLGlbMV0pLHQuc3RhZmYuYm90dG9tPU1hdGgubWluKHQuc3RhZmYuYm90dG9tLGlbMF0pLHQuc3RhZmYuYm90dG9tPU1hdGgubWluKHQuc3RhZmYuYm90dG9tLGlbMV0pfX1mdW5jdGlvbiBvKGUsdCxyKXtmb3IodmFyIG49MDtuPHQuY2hpbGRyZW4ubGVuZ3RoO24rKyl7dmFyIGE9dC5jaGlsZHJlbltuXTtmb3IodmFyIGkgaW4gdC5zcGVjaWFsWSl0LnNwZWNpYWxZLmhhc093blByb3BlcnR5KGkpJiZhW2ldJiYoYS5waXRjaD1lW2ldLHZvaWQgMD09PWEudG9wJiYoIlRlbXBvRWxlbWVudCI9PT1hLnR5cGU/dShlLGEpOmQoZSxhLHIpLHQucHVzaFRvcChhLnRvcCksdC5wdXNoQm90dG9tKGEuYm90dG9tKSkpfX1mdW5jdGlvbiBjKGUsdCl7dC5keW5hbWljSGVpZ2h0QWJvdmU/dC5waXRjaD1lLmR5bmFtaWNIZWlnaHRBYm92ZTp0LnBpdGNoPWUuZHluYW1pY0hlaWdodEJlbG93fWZ1bmN0aW9uIGwoZSx0KXt0LnZvbHVtZUhlaWdodEFib3ZlP3QucGl0Y2g9ZS52b2x1bWVIZWlnaHRBYm92ZTp0LnBpdGNoPWUudm9sdW1lSGVpZ2h0QmVsb3d9ZnVuY3Rpb24gaChlLHQpe3QucGl0Y2g9ZS5lbmRpbmdIZWlnaHRBYm92ZS0yfWZ1bmN0aW9uIHUoZSx0KXtpZih0LnBpdGNoPWUudGVtcG9IZWlnaHRBYm92ZSx0LnRvcD1lLnRlbXBvSGVpZ2h0QWJvdmUsdC5ib3R0b209ZS50ZW1wb0hlaWdodEFib3ZlLHQubm90ZSl7dmFyIHI9dC5waXRjaC10LnRvdGFsSGVpZ2h0SW5QaXRjaGVzKzE7dC5ub3RlLnRvcD1yLHQubm90ZS5ib3R0b209cjtmb3IodmFyIG49MDtuPHQubm90ZS5jaGlsZHJlbi5sZW5ndGg7bisrKXt2YXIgYT10Lm5vdGUuY2hpbGRyZW5bbl07YS50b3ArPXIsYS5ib3R0b20rPXIsYS5waXRjaCs9cix2b2lkIDAhPT1hLnBpdGNoMiYmKGEucGl0Y2gyKz1yKX19fWZ1bmN0aW9uIGQoZSx0LHIpe3N3aXRjaCh0LnR5cGUpe2Nhc2UicGFydCI6dC50b3A9ZS5wYXJ0SGVpZ2h0QWJvdmUrdC5oZWlnaHQsdC5ib3R0b209ZS5wYXJ0SGVpZ2h0QWJvdmU7YnJlYWs7Y2FzZSJ0ZXh0IjpjYXNlImNob3JkIjp0LmNob3JkSGVpZ2h0QWJvdmU/KHQudG9wPWUuY2hvcmRIZWlnaHRBYm92ZSx0LmJvdHRvbT1lLmNob3JkSGVpZ2h0QWJvdmUpOih0LnRvcD1lLmNob3JkSGVpZ2h0QmVsb3csdC5ib3R0b209ZS5jaG9yZEhlaWdodEJlbG93KTticmVhaztjYXNlImx5cmljIjp0Lmx5cmljSGVpZ2h0QWJvdmU/KHQudG9wPWUubHlyaWNIZWlnaHRBYm92ZSx0LmJvdHRvbT1lLmx5cmljSGVpZ2h0QWJvdmUpOih0LnRvcD1lLmx5cmljSGVpZ2h0QmVsb3crci52b2NhbC9uLlNURVAsdC5ib3R0b209ZS5seXJpY0hlaWdodEJlbG93K3Iudm9jYWwvbi5TVEVQLHQucGl0Y2gtPXIudm9jYWwvbi5TVEVQKTticmVhaztjYXNlImRlYnVnIjp0LnRvcD1lLmNob3JkSGVpZ2h0QWJvdmUsdC5ib3R0b209ZS5jaG9yZEhlaWdodEFib3ZlfXZvaWQgMCE9PXQucGl0Y2gmJnZvaWQgMCE9PXQudG9wfHxjb25zb2xlLmVycm9yKCJSZWxhdGl2ZUVsZW1lbnQgcG9zaXRpb24gbm90IHNldC4iLHQudHlwZSx0LnBpdGNoLHQudG9wLGUpfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcixvPTA7bzx0LnN0YWZmcy5sZW5ndGg7bysrKXt2YXIgYz10LnN0YWZmc1tvXSxsPXt0ZW1wb0hlaWdodEFib3ZlOjAscGFydEhlaWdodEFib3ZlOjAsdm9sdW1lSGVpZ2h0QWJvdmU6MCxkeW5hbWljSGVpZ2h0QWJvdmU6MCxlbmRpbmdIZWlnaHRBYm92ZTowLGNob3JkSGVpZ2h0QWJvdmU6MCxseXJpY0hlaWdodEFib3ZlOjAsbHlyaWNIZWlnaHRCZWxvdzowLGNob3JkSGVpZ2h0QmVsb3c6MCx2b2x1bWVIZWlnaHRCZWxvdzowLGR5bmFtaWNIZWlnaHRCZWxvdzowfTtpZihlLnNob3dEZWJ1ZyYmZS5zaG93RGVidWcuaW5kZXhPZigiYm94Iik+PTAmJihjLm9yaWdpbmFsVG9wPWMudG9wLGMub3JpZ2luYWxCb3R0b209Yy5ib3R0b20pLGkoYyxsLCJseXJpY0hlaWdodEFib3ZlIiksaShjLGwsImNob3JkSGVpZ2h0QWJvdmUiLGMuc3BlY2lhbFkuY2hvcmRMaW5lcy5hYm92ZSksYy5zcGVjaWFsWS5lbmRpbmdIZWlnaHRBYm92ZSYmKGMuc3BlY2lhbFkuY2hvcmRIZWlnaHRBYm92ZT9jLnRvcCs9MjpjLnRvcCs9Yy5zcGVjaWFsWS5lbmRpbmdIZWlnaHRBYm92ZSthLGwuZW5kaW5nSGVpZ2h0QWJvdmU9Yy50b3ApLGMuc3BlY2lhbFkuZHluYW1pY0hlaWdodEFib3ZlJiZjLnNwZWNpYWxZLnZvbHVtZUhlaWdodEFib3ZlPyhjLnRvcCs9TWF0aC5tYXgoYy5zcGVjaWFsWS5keW5hbWljSGVpZ2h0QWJvdmUsYy5zcGVjaWFsWS52b2x1bWVIZWlnaHRBYm92ZSkrYSxsLmR5bmFtaWNIZWlnaHRBYm92ZT1jLnRvcCxsLnZvbHVtZUhlaWdodEFib3ZlPWMudG9wKTooaShjLGwsImR5bmFtaWNIZWlnaHRBYm92ZSIpLGkoYyxsLCJ2b2x1bWVIZWlnaHRBYm92ZSIpKSxpKGMsbCwicGFydEhlaWdodEFib3ZlIiksaShjLGwsInRlbXBvSGVpZ2h0QWJvdmUiKSxjLnNwZWNpYWxZLmx5cmljSGVpZ2h0QmVsb3cmJihjLnNwZWNpYWxZLmx5cmljSGVpZ2h0QmVsb3crPWUuc3BhY2luZy52b2NhbC9uLlNURVAsbC5seXJpY0hlaWdodEJlbG93PWMuYm90dG9tLGMuYm90dG9tLT1jLnNwZWNpYWxZLmx5cmljSGVpZ2h0QmVsb3crYSksYy5zcGVjaWFsWS5jaG9yZEhlaWdodEJlbG93KXtsLmNob3JkSGVpZ2h0QmVsb3c9Yy5ib3R0b207dmFyIGg9Yy5zcGVjaWFsWS5jaG9yZEhlaWdodEJlbG93O2Muc3BlY2lhbFkuY2hvcmRMaW5lcy5iZWxvdyYmKGgqPWMuc3BlY2lhbFkuY2hvcmRMaW5lcy5iZWxvdyksYy5ib3R0b20tPWgrYX1jLnNwZWNpYWxZLnZvbHVtZUhlaWdodEJlbG93JiZjLnNwZWNpYWxZLmR5bmFtaWNIZWlnaHRCZWxvdz8obC52b2x1bWVIZWlnaHRCZWxvdz1jLmJvdHRvbSxsLmR5bmFtaWNIZWlnaHRCZWxvdz1jLmJvdHRvbSxjLmJvdHRvbS09TWF0aC5tYXgoYy5zcGVjaWFsWS52b2x1bWVIZWlnaHRCZWxvdyxjLnNwZWNpYWxZLmR5bmFtaWNIZWlnaHRCZWxvdykrYSk6Yy5zcGVjaWFsWS52b2x1bWVIZWlnaHRCZWxvdz8obC52b2x1bWVIZWlnaHRCZWxvdz1jLmJvdHRvbSxjLmJvdHRvbS09Yy5zcGVjaWFsWS52b2x1bWVIZWlnaHRCZWxvdythKTpjLnNwZWNpYWxZLmR5bmFtaWNIZWlnaHRCZWxvdyYmKGwuZHluYW1pY0hlaWdodEJlbG93PWMuYm90dG9tLGMuYm90dG9tLT1jLnNwZWNpYWxZLmR5bmFtaWNIZWlnaHRCZWxvdythKSxlLnNob3dEZWJ1ZyYmZS5zaG93RGVidWcuaW5kZXhPZigiYm94Iik+PTAmJihjLnBvc2l0aW9uWT1sKTtmb3IodmFyIHU9MDt1PGMudm9pY2VzLmxlbmd0aDt1KyspcyhsLHQudm9pY2VzW2Mudm9pY2VzW3VdXSxlLnNwYWNpbmcpO2lmKHZvaWQgMCE9PXIpe3ZhciBkPXIrKGMudG9wLTEwKSxmPWUuc3BhY2luZy5zeXN0ZW1TdGFmZlNlcGFyYXRpb24vbi5TVEVQLWQ7Zj4wJiYoYy50b3ArPWYpfWMudG9wKz1lLnNwYWNpbmcuc3RhZmZUb3BNYXJnaW4vbi5TVEVQLHI9Mi1jLmJvdHRvbX19fSw3MzU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOTM3KTtmdW5jdGlvbiBhKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKCFuLmxheW91dEVuZGVkKGVbdF0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUuZHVyYXRpb25pbmRleC0oZS5jaGlsZHJlbltlLmldJiZlLmNoaWxkcmVuW2UuaV0uZHVyYXRpb24+MD8wOjVlLTcpfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQscixzLG8pe3ZhciBjLGw9MCxoPTFlMyx1PW87cy5zdGFydHg9dTt2YXIgZCxmLHA9MDtmb3IociYmY29uc29sZS5sb2coImluaXQgbGF5b3V0IixlKSxjPTA7YzxzLnZvaWNlcy5sZW5ndGg7YysrKW4uYmVnaW5MYXlvdXQodSxzLnZvaWNlc1tjXSk7Zm9yKHZhciBtPTA7IWEocy52b2ljZXMpOyl7Zm9yKHA9bnVsbCxjPTA7YzxzLnZvaWNlcy5sZW5ndGg7YysrKW4ubGF5b3V0RW5kZWQocy52b2ljZXNbY10pfHxwJiYhKGkocy52b2ljZXNbY10pPHApfHwocD1pKHMudm9pY2VzW2NdKSk7dmFyIGc9W10sdj1bXTtmb3IoYz0wO2M8cy52b2ljZXMubGVuZ3RoO2MrKylpKHMudm9pY2VzW2NdKS1wPjFlLTc/di5wdXNoKHMudm9pY2VzW2NdKTpnLnB1c2gocy52b2ljZXNbY10pO209MDt2YXIgYj0wO2ZvcihjPTA7YzxnLmxlbmd0aDtjKyspbi5nZXROZXh0WChnW2NdKT51JiYodT1uLmdldE5leHRYKGdbY10pLG09bi5nZXRTcGFjaW5nVW5pdHMoZ1tjXSksYj1nW2NdLnNwYWNpbmdkdXJhdGlvbik7bCs9bSxoPU1hdGgubWluKGgsbSksciYmY29uc29sZS5sb2coImN1cnJlbnRkdXJhdGlvbjogIixwLGwsaCk7dmFyIHk9dm9pZCAwO2ZvcihjPTA7YzxnLmxlbmd0aDtjKyspe3ZhciB4PWdbY107MD09PXgudm9pY2VudW1iZXImJih5PWMpO3ZhciBrPXZvaWQgMCE9PXkmJmdbeV0udm9pY2VudW1iZXIhPT14LnZvaWNlbnVtYmVyP2dbeV06dm9pZCAwO2Y9aywoZD14KSYmZC5zdGFmZiYmZC5zdGFmZi52b2ljZXMmJjAhPT1kLnN0YWZmLnZvaWNlcy5sZW5ndGgmJmYmJmYuc3RhZmYmJmYuc3RhZmYudm9pY2VzJiYwIT09Zi5zdGFmZi52b2ljZXMubGVuZ3RoJiZkLnN0YWZmLnZvaWNlc1swXT09PWYuc3RhZmYudm9pY2VzWzBdfHwoaz12b2lkIDApO3ZhciB3PW4ubGF5b3V0T25lSXRlbSh1LGUseCx0LGspLEM9dy11O2lmKEM+MCl7dT13O2Zvcih2YXIgVD0wO1Q8YztUKyspbi5zaGlmdFJpZ2h0KEMsZ1tUXSl9fWZvcihjPTA7Yzx2Lmxlbmd0aDtjKyspdltjXS5zcGFjaW5nZHVyYXRpb24tPWIsbi51cGRhdGVOZXh0WCh1LGUsdltjXSk7Zm9yKGM9MDtjPGcubGVuZ3RoO2MrKyl7dmFyIFM9Z1tjXTtuLnVwZGF0ZUluZGljZXMoUyl9fWZvcihjPTA7YzxzLnZvaWNlcy5sZW5ndGg7YysrKW4uZ2V0TmV4dFgocy52b2ljZXNbY10pPnUmJih1PW4uZ2V0TmV4dFgocy52b2ljZXNbY10pLG09bi5nZXRTcGFjaW5nVW5pdHMocy52b2ljZXNbY10pKTtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO2lmKG4uY2hpbGRyZW4ubGVuZ3RoPjApe3ZhciBhPW4uY2hpbGRyZW4ubGVuZ3RoLTEsaT1uLmNoaWxkcmVuW2FdO2lmKCJiYXIiPT09aS5hYmNlbGVtLmVsX3R5cGUpe3ZhciBzPWkuY2hpbGRyZW5bMF0ueDtzPnQ/dD1zOmkuY2hpbGRyZW5bMF0ueD10fX19fShzLnZvaWNlcyksbCs9bSxzLnNldFdpZHRoKHUpLHtzcGFjaW5nVW5pdHM6bCxtaW5TcGFjZTpofX19LDMyOTQ6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMzcyMSk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZS5zdGVtc1VwfWUuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLmFuY2hvcjEmJmUuYW5jaG9yMil7ZS5oYXNCZWFtPSEhZS5hbmNob3IxLnBhcmVudC5iZWFtJiZlLmFuY2hvcjEucGFyZW50LmJlYW09PT1lLmFuY2hvcjIucGFyZW50LmJlYW07dmFyIHQ9ZS5hbmNob3IxLnBhcmVudC5iZWFtO2lmKCFlLmhhc0JlYW18fHQuZWxlbXNbMF09PT1lLmFuY2hvcjEucGFyZW50JiZ0LmVsZW1zW3QuZWxlbXMubGVuZ3RoLTFdPT09ZS5hbmNob3IyLnBhcmVudHx8KGUuaGFzQmVhbT0hMSksZS5oYXNCZWFtKXt2YXIgcj1hKHQpP2UuYW5jaG9yMS54K2UuYW5jaG9yMS53OmUuYW5jaG9yMS54O2UueVRleHRQb3M9ZnVuY3Rpb24oZSx0LHIpe2lmKDA9PT1yLmJlYW1zLmxlbmd0aClyZXR1cm4gMDtyPXIuYmVhbXNbMF07dmFyIGE9ZSsodC1lKS8yO3JldHVybiBuKHIuc3RhcnRYLHIuc3RhcnRZLHIuZW5kWCxyLmVuZFksYSl9KHIsZS5hbmNob3IyLngsdCksZS55VGV4dFBvcys9YSh0KT8zOi0yLGUueFRleHRQb3M9KG89cixjPWUuYW5jaG9yMi54LG8rKGMtbykvMiksZS50b3A9ZS55VGV4dFBvcysxLGUuYm90dG9tPWUueVRleHRQb3MtMixhKHQpJiYoZS5lbmRpbmdIZWlnaHRBYm92ZT00KX1lbHNle2Uuc3RhcnROb3RlPU1hdGgubWF4KGUuYW5jaG9yMS5wYXJlbnQudG9wLDkpKzQsZS5lbmROb3RlPU1hdGgubWF4KGUuYW5jaG9yMi5wYXJlbnQudG9wLDkpKzQsInJlc3QiPT09ZS5hbmNob3IxLnBhcmVudC50eXBlJiYicmVzdCIhPT1lLmFuY2hvcjIucGFyZW50LnR5cGU/ZS5zdGFydE5vdGU9ZS5lbmROb3RlOiJyZXN0Ij09PWUuYW5jaG9yMi5wYXJlbnQudHlwZSYmInJlc3QiIT09ZS5hbmNob3IxLnBhcmVudC50eXBlJiYoZS5lbmROb3RlPWUuc3RhcnROb3RlKTtmb3IodmFyIGk9MCxzPTA7czxlLm1pZGRsZUVsZW1zLmxlbmd0aDtzKyspaT1NYXRoLm1heChpLGUubWlkZGxlRWxlbXNbc10udG9wKTsoKGkrPTQpPmUuc3RhcnROb3RlfHxpPmUuZW5kTm90ZSkmJihlLnN0YXJ0Tm90ZT1pLGUuZW5kTm90ZT1pKSxlLmZsYXRCZWFtcyYmKGUuc3RhcnROb3RlPU1hdGgubWF4KGUuc3RhcnROb3RlLGUuZW5kTm90ZSksZS5lbmROb3RlPU1hdGgubWF4KGUuc3RhcnROb3RlLGUuZW5kTm90ZSkpLGUueVRleHRQb3M9ZS5zdGFydE5vdGUrKGUuZW5kTm90ZS1lLnN0YXJ0Tm90ZSkvMixlLnhUZXh0UG9zPWUuYW5jaG9yMS54KyhlLmFuY2hvcjIueCtlLmFuY2hvcjIudy1lLmFuY2hvcjEueCkvMixlLnRvcD1lLnlUZXh0UG9zKzF9fXZhciBvLGM7ZGVsZXRlIGUubWlkZGxlRWxlbXMsZGVsZXRlIGUuZmxhdEJlYW1zfX0sOTM3OmZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKCl7fTt0LmJlZ2luTGF5b3V0PWZ1bmN0aW9uKGUsdCl7dC5pPTAsdC5kdXJhdGlvbmluZGV4PTAsdC5zdGFydHg9ZSx0Lm1pbng9ZSx0Lm5leHR4PWUsdC5zcGFjaW5nZHVyYXRpb249MH0sdC5sYXlvdXRFbmRlZD1mdW5jdGlvbihlKXtyZXR1cm4gZS5pPj1lLmNoaWxkcmVuLmxlbmd0aH0sdC5nZXROZXh0WD1mdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5tYXgoZS5taW54LGUubmV4dHgpfSx0LmdldFNwYWNpbmdVbml0cz1mdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5zcXJ0KDgqZS5zcGFjaW5nZHVyYXRpb24pfSx0LmxheW91dE9uZUl0ZW09ZnVuY3Rpb24oZSx0LHIsbixhKXt2YXIgaT1yLmNoaWxkcmVuW3IuaV07aWYoIWkpcmV0dXJuIDA7dmFyIHM9ZS1yLm1pbngsbz1yLmR1cmF0aW9uaW5kZXgraS5kdXJhdGlvbj4wP246MDtpZigibm90ZSI9PT1pLmFiY2VsZW0uZWxfdHlwZSYmIWkuYWJjZWxlbS5yZXN0JiYwIT09ci52b2ljZW51bWJlciYmYSl7dmFyIGM9YS5jaGlsZHJlblthLmldLGw9YyYmKGkuYWJjZWxlbS5tYXhwaXRjaDw9Yy5hYmNlbGVtLm1heHBpdGNoKzEmJmkuYWJjZWxlbS5tYXhwaXRjaD49Yy5hYmNlbGVtLm1pbnBpdGNoLTF8fGkuYWJjZWxlbS5taW5waXRjaDw9Yy5hYmNlbGVtLm1heHBpdGNoKzEmJmkuYWJjZWxlbS5taW5waXRjaD49Yy5hYmNlbGVtLm1pbnBpdGNoLTEpO2lmKGwmJmkuYWJjZWxlbS5taW5waXRjaD09PWMuYWJjZWxlbS5taW5waXRjaCYmaS5hYmNlbGVtLm1heHBpdGNoPT09Yy5hYmNlbGVtLm1heHBpdGNoJiZjLmhlYWRzJiZjLmhlYWRzLmxlbmd0aD4wJiZpLmhlYWRzJiZpLmhlYWRzLmxlbmd0aD4wJiZjLmhlYWRzWzBdLmM9PT1pLmhlYWRzWzBdLmMmJihsPSExKSxsKXt2YXIgaD1jLmhlYWRzJiZjLmhlYWRzLmxlbmd0aD4wP2MuaGVhZHNbMF0ucmVhbFdpZHRoOmMuZml4ZWQudztpLmFkanVzdGVkV2lkdGh8fChpLmFkanVzdGVkV2lkdGg9aCtpLncpLGkudz1pLmFkanVzdGVkV2lkdGg7Zm9yKHZhciB1PTA7dTxpLmNoaWxkcmVuLmxlbmd0aDt1Kyspe3ZhciBkPWkuY2hpbGRyZW5bdV07ZC5uYW1lLmluZGV4T2YoImFjY2lkZW50YWwiKTwwJiYoZC5hZGp1c3RlZFdpZHRofHwoZC5hZGp1c3RlZFdpZHRoPWQuZHgraCksZC5keD1kLmFkanVzdGVkV2lkdGgpfX19dmFyIGY9ZnVuY3Rpb24oZSx0KXt2YXIgcj0wO3JldHVybiJub3RlIiE9PWUudHlwZSYmImJhciIhPT1lLnR5cGV8fChyPXQpLC1lLmV4dHJhdytyfShpLG8pO3JldHVybiBzPGYmJigwPT09ci5pfHwiYmFyIiE9PWkudHlwZXx8InBhcnQiIT09ci5jaGlsZHJlbltyLmktMV0udHlwZSYmInRlbXBvIiE9PXIuY2hpbGRyZW5bci5pLTFdLnR5cGUpJiYoZSs9Zi1zKSxpLnNldFgoZSksci5zcGFjaW5nZHVyYXRpb249aS5kdXJhdGlvbixyLm1pbng9ZStmdW5jdGlvbihlKXtyZXR1cm4gZS53fShpKSxyLmkhPT1yLmNoaWxkcmVuLmxlbmd0aC0xJiYoci5taW54Kz1pLm1pbnNwYWNpbmcpLHRoaXMudXBkYXRlTmV4dFgoZSx0LHIpLGV9LHQuc2hpZnRSaWdodD1mdW5jdGlvbihlLHQpe3ZhciByPXQuY2hpbGRyZW5bdC5pXTtyJiYoci5zZXRYKHIueCtlKSx0Lm1pbngrPWUsdC5uZXh0eCs9ZSl9LHQudXBkYXRlTmV4dFg9ZnVuY3Rpb24oZSx0LHIpe3IubmV4dHg9ZSt0KnRoaXMuZ2V0U3BhY2luZ1VuaXRzKHIpfSx0LnVwZGF0ZUluZGljZXM9ZnVuY3Rpb24oZSl7dGhpcy5sYXlvdXRFbmRlZChlKXx8KGUuZHVyYXRpb25pbmRleCs9ZS5jaGlsZHJlbltlLmldLmR1cmF0aW9uLCJiYXIiPT09ZS5jaGlsZHJlbltlLmldLnR5cGUmJihlLmR1cmF0aW9uaW5kZXg9TWF0aC5yb3VuZCg2NCplLmR1cmF0aW9uaW5kZXgpLzY0KSxlLmkrKyl9LGUuZXhwb3J0cz10fSw2NzU5OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYyNTEpLGE9cigzNzIxKSxpPXIoMzI5NCk7ZnVuY3Rpb24gcyhlKXtmb3IodmFyIHQ9MDt0PGUuZWxlbXMubGVuZ3RoO3QrKyl7dmFyIHI9ZS5lbGVtc1t0XTtpZihyLnRvcClmb3IodmFyIG49bChyLGUpLGE9MDthPHIuY2hpbGRyZW4ubGVuZ3RoO2ErKyl7dmFyIGk9ci5jaGlsZHJlblthXTtpZigib3JuYW1lbnQiPT09aS5rbGFzcyYmImJlbG93IiE9PWkucG9zaXRpb24mJmkuYm90dG9tLTEuNTxuKXt2YXIgcz1uLWkuYm90dG9tKzEuNTtpLmJvdHRvbSs9cyxpLnRvcCs9cyxpLnBpdGNoKz1zLG49ci50b3A9aS50b3B9fX19ZnVuY3Rpb24gbyhlLHQpe3ZhciByPXQuZ2V0Q2hvcmREaW0oKTtpZihyKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihlW25dPHIubGVmdClyZXR1cm4gbj4wJiZ0LnB1dENob3JkSW5MYW5lKG4pLHZvaWQoZVtuXT1yLnJpZ2h0KTtlLnB1c2goci5yaWdodCksdC5wdXRDaG9yZEluTGFuZShlLmxlbmd0aC0xKX19ZnVuY3Rpb24gYyhlKXtmb3IodmFyIHQ9MCxyPTA7cjxlLmNoaWxkcmVuLmxlbmd0aDtyKyspZS5jaGlsZHJlbltyXS5jaG9yZEhlaWdodEJlbG93JiZ0Kys7cmV0dXJuIHR9ZnVuY3Rpb24gbChlLHQpe3JldHVybiB0PXQuYmVhbXNbMF0sYSh0LnN0YXJ0WCx0LnN0YXJ0WSx0LmVuZFgsdC5lbmRZLGUueCl9ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5iZWFtcy5sZW5ndGg7dCsrKWlmKCJCZWFtRWxlbSI9PT1lLmJlYW1zW3RdLnR5cGUpe24oZS5iZWFtc1t0XSkscyhlLmJlYW1zW3RdKTtmb3IodmFyIHI9MDtyPGUuYmVhbXNbdF0uZWxlbXMubGVuZ3RoO3IrKyllLmFkanVzdFJhbmdlKGUuYmVhbXNbdF0uZWxlbXNbcl0pfWZvcihlLnN0YWZmLnNwZWNpYWxZLmNob3JkTGluZXM9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGE9WzBdLGk9WzBdO2Zvcih0PTA7dDxlLmxlbmd0aDt0Kyspe2ZvcihyPTA7cjxlW3RdLmNoaWxkcmVuLmxlbmd0aDtyKyspKG49ZVt0XS5jaGlsZHJlbltyXSkuY2hvcmRIZWlnaHRBYm92ZSYmbyhhLG4pO2ZvcihyPWVbdF0uY2hpbGRyZW4ubGVuZ3RoLTE7cj49MDtyLS0pKG49ZVt0XS5jaGlsZHJlbltyXSkuY2hvcmRIZWlnaHRCZWxvdyYmbyhpLG4pfXJldHVybihhLmxlbmd0aD4xfHxpLmxlbmd0aD4xKSYmZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXtjKGVbbl0pO2Zvcih2YXIgYT0wO2E8ZVtuXS5jaGlsZHJlbi5sZW5ndGg7YSsrKXt2YXIgaT1lW25dLmNoaWxkcmVuW2FdO2kuY2hvcmRIZWlnaHRBYm92ZSYmaS5pbnZlcnRMYW5lKHQpfX19KGUsYS5sZW5ndGgsaS5sZW5ndGgpLHthYm92ZTphLmxlbmd0aCxiZWxvdzppLmxlbmd0aH19KGUuY2hpbGRyZW4pLHQ9MDt0PGUub3RoZXJjaGlsZHJlbi5sZW5ndGg7dCsrKXt2YXIgYT1lLm90aGVyY2hpbGRyZW5bdF07IlRyaXBsZXRFbGVtIj09PWEudHlwZSYmKGkoYSksZS5hZGp1c3RSYW5nZShhKSl9ZS5zdGFmZi50b3A9TWF0aC5tYXgoZS5zdGFmZi50b3AsZS50b3ApLGUuc3RhZmYuYm90dG9tPU1hdGgubWluKGUuc3RhZmYuYm90dG9tLGUuYm90dG9tKX19LDg1MTA6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDMzMSksYT1yKDQxMDEpLGk9ZnVuY3Rpb24oZSl7dGhpcy5wYXBlcj1uZXcgYShlKSx0aGlzLmNvbnRyb2xsZXI9bnVsbCx0aGlzLnNwYWNlPTMqbi5TUEFDRSx0aGlzLnBhZGRpbmc9e30sdGhpcy5yZXNldCgpLHRoaXMuZmlyZWZveDExMj1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkZpcmVmb3gvMTEyLjAiKT49MH07aS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnBhcGVyLmNsZWFyKCksdGhpcy55PTAsdGhpcy5hYmN0dW5lPW51bGwsdGhpcy5wYXRoPW51bGwsdGhpcy5pc1ByaW50PSExLHRoaXMubGluZVRoaWNrbmVzcz0wLHRoaXMuaW5pdFZlcnRpY2FsU3BhY2UoKX0saS5wcm90b3R5cGUubmV3VHVuZT1mdW5jdGlvbihlKXt0aGlzLmFiY3R1bmU9ZSx0aGlzLnNldFZlcnRpY2FsU3BhY2UoZS5mb3JtYXR0aW5nKSx0aGlzLmlzUHJpbnQ9InByaW50Ij09PWUubWVkaWEsdGhpcy5zZXRQYWRkaW5nKGUpfSxpLnByb3RvdHlwZS5zZXRMaW5lVGhpY2tuZXNzPWZ1bmN0aW9uKGUpe3RoaXMubGluZVRoaWNrbmVzcz1lfSxpLnByb3RvdHlwZS5zZXRQYWRkaW5nT3ZlcnJpZGU9ZnVuY3Rpb24oZSl7dGhpcy5wYWRkaW5nT3ZlcnJpZGU9e3RvcDplLnBhZGRpbmd0b3AsYm90dG9tOmUucGFkZGluZ2JvdHRvbSxyaWdodDplLnBhZGRpbmdyaWdodCxsZWZ0OmUucGFkZGluZ2xlZnR9fSxpLnByb3RvdHlwZS5zZXRQYWRkaW5nPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxyLG4sYSxpKXt2b2lkIDAhPT1lLmZvcm1hdHRpbmdbbl0/dC5wYWRkaW5nW3JdPWUuZm9ybWF0dGluZ1tuXTp2b2lkIDAhPT10LnBhZGRpbmdPdmVycmlkZVtyXT90LnBhZGRpbmdbcl09dC5wYWRkaW5nT3ZlcnJpZGVbcl06dC5pc1ByaW50P3QucGFkZGluZ1tyXT1hOnQucGFkZGluZ1tyXT1pfXQodGhpcywidG9wIiwidG9wbWFyZ2luIiwzOCwxNSksdCh0aGlzLCJib3R0b20iLCJib3RtYXJnaW4iLDM4LDE1KSx0KHRoaXMsImxlZnQiLCJsZWZ0bWFyZ2luIiw2OCwxNSksdCh0aGlzLCJyaWdodCIsInJpZ2h0bWFyZ2luIiw2OCwxNSl9LGkucHJvdG90eXBlLmFkanVzdE5vblNjYWxlZEl0ZW1zPWZ1bmN0aW9uKGUpe3RoaXMucGFkZGluZy50b3AvPWUsdGhpcy5wYWRkaW5nLmJvdHRvbS89ZSx0aGlzLnBhZGRpbmcubGVmdC89ZSx0aGlzLnBhZGRpbmcucmlnaHQvPWUsdGhpcy5hYmN0dW5lLmZvcm1hdHRpbmcuaGVhZGVyZm9udC5zaXplLz1lLHRoaXMuYWJjdHVuZS5mb3JtYXR0aW5nLmZvb3RlcmZvbnQuc2l6ZS89ZX0saS5wcm90b3R5cGUuaW5pdFZlcnRpY2FsU3BhY2U9ZnVuY3Rpb24oKXt0aGlzLnNwYWNpbmc9e2NvbXBvc2VyOjcuNTYsZ3JhY2VCZWZvcmU6OC42NyxncmFjZUluc2lkZToxMC42NyxncmFjZUFmdGVyOjE2LGluZm86MCxsaW5lU2tpcEZhY3RvcjoxLjEsbXVzaWM6Ny41NixwYXJhZ3JhcGhTa2lwRmFjdG9yOi40LHBhcnRzOjExLjMzLHNsdXJIZWlnaHQ6MSxzdGFmZlNlcGFyYXRpb246NjEuMzMsc3RhZmZUb3BNYXJnaW46MCxzdGVtSGVpZ2h0OjM2LjY3LHN1YnRpdGxlOjMuNzgsc3lzdGVtU3RhZmZTZXBhcmF0aW9uOjQ4LHRleHQ6MTguOSx0aXRsZTo3LjU2LHRvcDozMC4yNCx2b2NhbDowLHdvcmRzOjB9fSxpLnByb3RvdHlwZS5zZXRWZXJ0aWNhbFNwYWNlPWZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWUuc3RhZmZzZXAmJih0aGlzLnNwYWNpbmcuc3RhZmZTZXBhcmF0aW9uPTQqZS5zdGFmZnNlcC8zKSx2b2lkIDAhPT1lLmNvbXBvc2Vyc3BhY2UmJih0aGlzLnNwYWNpbmcuY29tcG9zZXI9NCplLmNvbXBvc2Vyc3BhY2UvMyksdm9pZCAwIT09ZS5wYXJ0c3NwYWNlJiYodGhpcy5zcGFjaW5nLnBhcnRzPTQqZS5wYXJ0c3NwYWNlLzMpLHZvaWQgMCE9PWUudGV4dHNwYWNlJiYodGhpcy5zcGFjaW5nLnRleHQ9NCplLnRleHRzcGFjZS8zKSx2b2lkIDAhPT1lLm11c2ljc3BhY2UmJih0aGlzLnNwYWNpbmcubXVzaWM9NCplLm11c2ljc3BhY2UvMyksdm9pZCAwIT09ZS50aXRsZXNwYWNlJiYodGhpcy5zcGFjaW5nLnRpdGxlPTQqZS50aXRsZXNwYWNlLzMpLHZvaWQgMCE9PWUuc3lzc3RhZmZzZXAmJih0aGlzLnNwYWNpbmcuc3lzdGVtU3RhZmZTZXBhcmF0aW9uPTQqZS5zeXNzdGFmZnNlcC8zKSx2b2lkIDAhPT1lLnN0YWZmdG9wbWFyZ2luJiYodGhpcy5zcGFjaW5nLnN0YWZmVG9wTWFyZ2luPTQqZS5zdGFmZnRvcG1hcmdpbi8zKSx2b2lkIDAhPT1lLnN1YnRpdGxlc3BhY2UmJih0aGlzLnNwYWNpbmcuc3VidGl0bGU9NCplLnN1YnRpdGxlc3BhY2UvMyksdm9pZCAwIT09ZS50b3BzcGFjZSYmKHRoaXMuc3BhY2luZy50b3A9NCplLnRvcHNwYWNlLzMpLHZvaWQgMCE9PWUudm9jYWxzcGFjZSYmKHRoaXMuc3BhY2luZy52b2NhbD00KmUudm9jYWxzcGFjZS8zKSx2b2lkIDAhPT1lLndvcmRzc3BhY2UmJih0aGlzLnNwYWNpbmcud29yZHM9NCplLndvcmRzc3BhY2UvMyl9LGkucHJvdG90eXBlLmNhbGNZPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnktZSpuLlNURVB9LGkucHJvdG90eXBlLm1vdmVZPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9MSksdGhpcy55Kz1lKnR9LGkucHJvdG90eXBlLmFic29sdXRlbW92ZVk9ZnVuY3Rpb24oZSl7dGhpcy55PWV9LGUuZXhwb3J0cz1pfSw0MTAxOmZ1bmN0aW9uKGUpe3ZhciB0PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7ZnVuY3Rpb24gcihlKXt0aGlzLnN2Zz1zKCksdGhpcy5jdXJyZW50R3JvdXA9W10sZS5hcHBlbmRDaGlsZCh0aGlzLnN2Zyl9ZnVuY3Rpb24gbihlLHQscil7dmFyIG49ci1lO3JldHVybiJNICIrZSsiICIrdCsiIGwgIituKyIgMCBsIDAgMSAgbCAiKy1uKyIgMCAgeiAifWZ1bmN0aW9uIGEoZSx0LHIpe3ZhciBuPXItdDtyZXR1cm4iTSAiK2UrIiAiK3QrIiBsIDAgIituKyIgbCAxIDAgIGwgMCAiKy1uKyIgIHogIn1yLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe2lmKHRoaXMuc3ZnKXt2YXIgZT10aGlzLnN2Zy5wYXJlbnROb2RlO3RoaXMuc3ZnPXMoKSx0aGlzLmN1cnJlbnRHcm91cD1bXSxlJiYoZS5pbm5lckhUTUw9IiIsZS5hcHBlbmRDaGlsZCh0aGlzLnN2ZykpfX0sci5wcm90b3R5cGUuc2V0VGl0bGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGl0bGUiKSxyPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpO3QuYXBwZW5kQ2hpbGQociksdGhpcy5zdmcuaW5zZXJ0QmVmb3JlKHQsdGhpcy5zdmcuZmlyc3RDaGlsZCl9LHIucHJvdG90eXBlLnNldFJlc3BvbnNpdmVXaWR0aD1mdW5jdGlvbihlLHQpe2lmKHRoaXMuc3ZnLnNldEF0dHJpYnV0ZSgidmlld0JveCIsIjAgMCAiK2UrIiAiK3QpLHRoaXMuc3ZnLnNldEF0dHJpYnV0ZSgicHJlc2VydmVBc3BlY3RSYXRpbyIsInhNaW5ZTWluIG1lZXQiKSx0aGlzLnN2Zy5yZW1vdmVBdHRyaWJ1dGUoImhlaWdodCIpLHRoaXMuc3ZnLnJlbW92ZUF0dHJpYnV0ZSgid2lkdGgiKSx0aGlzLnN2Zy5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siLHRoaXMuc3ZnLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5zdmcuc3R5bGUudG9wPSIwIix0aGlzLnN2Zy5zdHlsZS5sZWZ0PSIwIix0aGlzLnN2Zy5wYXJlbnROb2RlKXt2YXIgcj10aGlzLnN2Zy5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKTtyP3IuaW5kZXhPZigiYWJjanMtY29udGFpbmVyIik8MCYmdGhpcy5zdmcucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixyKyIgYWJjanMtY29udGFpbmVyIik6dGhpcy5zdmcucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiYWJjanMtY29udGFpbmVyIiksdGhpcy5zdmcucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siLHRoaXMuc3ZnLnBhcmVudE5vZGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIix0aGlzLnN2Zy5wYXJlbnROb2RlLnN0eWxlLndpZHRoPSIxMDAlIjt2YXIgbj10L2UqMTAwO3RoaXMuc3ZnLnBhcmVudE5vZGUuc3R5bGVbInBhZGRpbmctYm90dG9tIl09bisiJSIsdGhpcy5zdmcucGFyZW50Tm9kZS5zdHlsZVsidmVydGljYWwtYWxpZ24iXT0ibWlkZGxlIix0aGlzLnN2Zy5wYXJlbnROb2RlLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4ifX0sci5wcm90b3R5cGUuc2V0U2l6ZT1mdW5jdGlvbihlLHQpe3RoaXMuc3ZnLnNldEF0dHJpYnV0ZSgid2lkdGgiLGUpLHRoaXMuc3ZnLnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iix0KX0sci5wcm90b3R5cGUuc2V0QXR0cmlidXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy5zdmcuc2V0QXR0cmlidXRlKGUsdCl9LHIucHJvdG90eXBlLnNldFNjYWxlPWZ1bmN0aW9uKGUpezEhPT1lPyh0aGlzLnN2Zy5zdHlsZS50cmFuc2Zvcm09InNjYWxlKCIrZSsiLCIrZSsiKSIsdGhpcy5zdmcuc3R5bGVbIi1tcy10cmFuc2Zvcm0iXT0ic2NhbGUoIitlKyIsIitlKyIpIix0aGlzLnN2Zy5zdHlsZVsiLXdlYmtpdC10cmFuc2Zvcm0iXT0ic2NhbGUoIitlKyIsIitlKyIpIix0aGlzLnN2Zy5zdHlsZVsidHJhbnNmb3JtLW9yaWdpbiJdPSIwIDAiLHRoaXMuc3ZnLnN0eWxlWyItbXMtdHJhbnNmb3JtLW9yaWdpbi14Il09IjAiLHRoaXMuc3ZnLnN0eWxlWyItbXMtdHJhbnNmb3JtLW9yaWdpbi15Il09IjAiLHRoaXMuc3ZnLnN0eWxlWyItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teCJdPSIwIix0aGlzLnN2Zy5zdHlsZVsiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luLXkiXT0iMCIpOih0aGlzLnN2Zy5zdHlsZS50cmFuc2Zvcm09IiIsdGhpcy5zdmcuc3R5bGVbIi1tcy10cmFuc2Zvcm0iXT0iIix0aGlzLnN2Zy5zdHlsZVsiLXdlYmtpdC10cmFuc2Zvcm0iXT0iIil9LHIucHJvdG90eXBlLmluc2VydFN0eWxlcz1mdW5jdGlvbihlKXt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModCwic3R5bGUiKTtyLnRleHRDb250ZW50PWUsdGhpcy5zdmcuaW5zZXJ0QmVmb3JlKHIsdGhpcy5zdmcuZmlyc3RDaGlsZCl9LHIucHJvdG90eXBlLnNldFBhcmVudFN0eWxlcz1mdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSllLmhhc093blByb3BlcnR5KHQpJiZ0aGlzLnN2Zy5wYXJlbnROb2RlJiYodGhpcy5zdmcucGFyZW50Tm9kZS5zdHlsZVt0XT1lW3RdKTt0aGlzLmR1bW15U3ZnJiYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYm9keSIpLnJlbW92ZUNoaWxkKHRoaXMuZHVtbXlTdmcpLHRoaXMuZHVtbXlTdmc9bnVsbCl9LHIucHJvdG90eXBlLnJlY3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9W10scj1lLngsaT1lLnkscz1lLngrZS53aWR0aCxvPWUueStlLmhlaWdodDtyZXR1cm4gdC5wdXNoKG4ocixpLHMpKSx0LnB1c2gobihyLG8scykpLHQucHVzaChhKHMsaSxvKSksdC5wdXNoKGEocixvLGkpKSx0aGlzLnBhdGgoe3BhdGg6dC5qb2luKCIgIiksc3Ryb2tlOiJub25lIiwiZGF0YS1uYW1lIjplWyJkYXRhLW5hbWUiXX0pfSxyLnByb3RvdHlwZS5kb3R0ZWRMaW5lPWZ1bmN0aW9uKGUpe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LCJsaW5lIik7ci5zZXRBdHRyaWJ1dGUoIngxIixlLngxKSxyLnNldEF0dHJpYnV0ZSgieDIiLGUueDIpLHIuc2V0QXR0cmlidXRlKCJ5MSIsZS55MSksci5zZXRBdHRyaWJ1dGUoInkyIixlLnkyKSxyLnNldEF0dHJpYnV0ZSgic3Ryb2tlIixlLnN0cm9rZSksci5zZXRBdHRyaWJ1dGUoInN0cm9rZS1kYXNoYXJyYXkiLCI1LDUiKSx0aGlzLnN2Zy5pbnNlcnRCZWZvcmUocix0aGlzLnN2Zy5maXJzdENoaWxkKX0sci5wcm90b3R5cGUucmVjdEJlbmVhdGg9ZnVuY3Rpb24oZSl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQsInJlY3QiKTtyLnNldEF0dHJpYnV0ZSgieCIsZS54KSxyLnNldEF0dHJpYnV0ZSgid2lkdGgiLGUud2lkdGgpLHIuc2V0QXR0cmlidXRlKCJ5IixlLnkpLHIuc2V0QXR0cmlidXRlKCJoZWlnaHQiLGUuaGVpZ2h0KSxlLnN0cm9rZSYmci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsZS5zdHJva2UpLGVbInN0cm9rZS1vcGFjaXR5Il0mJnIuc2V0QXR0cmlidXRlKCJzdHJva2Utb3BhY2l0eSIsZVsic3Ryb2tlLW9wYWNpdHkiXSksZS5maWxsJiZyLnNldEF0dHJpYnV0ZSgiZmlsbCIsZS5maWxsKSxlWyJmaWxsLW9wYWNpdHkiXSYmci5zZXRBdHRyaWJ1dGUoImZpbGwtb3BhY2l0eSIsZVsiZmlsbC1vcGFjaXR5Il0pLHRoaXMuc3ZnLmluc2VydEJlZm9yZShyLHRoaXMuc3ZnLmZpcnN0Q2hpbGQpfSxyLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKGUscixuKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModCwidGV4dCIpO2Zvcih2YXIgaSBpbiBhLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwibm9uZSIpLHIpci5oYXNPd25Qcm9wZXJ0eShpKSYmYS5zZXRBdHRyaWJ1dGUoaSxyW2ldKTtmb3IodmFyIHM9ImZyZWUtdGV4dCI9PXJbImRhdGEtbmFtZSJdLG89KCIiK2UpLnNwbGl0KCJcbiIpLGM9MDtjPG8ubGVuZ3RoO2MrKylpZighc3x8IiIhPW9bY10pe3ZhciBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LCJ0c3BhbiIpO2lmKGwuc2V0QXR0cmlidXRlKCJ4IixyLng/ci54OjApLDAhPT1jJiZsLnNldEF0dHJpYnV0ZSgiZHkiLCIxLjJlbSIpLC0xIT09b1tjXS5pbmRleE9mKCIDIikpe3ZhciBoPW9bY10uc3BsaXQoIgMiKTtpZihsLnRleHRDb250ZW50PWhbMF0saFsxXSl7dmFyIHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQsInRzcGFuIik7dS5zZXRBdHRyaWJ1dGUoImR5IiwiLTAuM2VtIiksdS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZm9udC1zaXplOjAuN2VtIiksdS50ZXh0Q29udGVudD1oWzFdLGwuYXBwZW5kQ2hpbGQodSl9aWYoaFsyXSl7dmFyIGQ9aFsxXT8iMC40ZW0iOiIwLjFlbSIsZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModCwidHNwYW4iKTtmLnNldEF0dHJpYnV0ZSgiZHkiLGQpLGYuc2V0QXR0cmlidXRlKCJzdHlsZSIsImZvbnQtc2l6ZTowLjdlbSIpLGYudGV4dENvbnRlbnQ9aFsyXSxsLmFwcGVuZENoaWxkKGYpfX1lbHNlIHMmJiIiPT1vW2NdLnRyaW0oKT9sLmlubmVySFRNTD0iJm5ic3A7IjpsLnRleHRDb250ZW50PW9bY107YS5hcHBlbmRDaGlsZChsKX1yZXR1cm4gbj9uLmFwcGVuZENoaWxkKGEpOnRoaXMuYXBwZW5kKGEpLGF9LHIucHJvdG90eXBlLnJpY2hUZXh0TGluZT1mdW5jdGlvbihlLHIsbixhLGkscyl7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQsInRleHQiKTtvLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwibm9uZSIpLG8uc2V0QXR0cmlidXRlKCJjbGFzcyIsYSksby5zZXRBdHRyaWJ1dGUoIngiLHIpLG8uc2V0QXR0cmlidXRlKCJ5IixuKSxvLnNldEF0dHJpYnV0ZSgidGV4dC1hbmNob3IiLGkpLG8uc2V0QXR0cmlidXRlKCJkb21pbmFudC1iYXNlbGluZSIsIm1pZGRsZSIpO2Zvcih2YXIgYz0wO2M8ZS5sZW5ndGg7YysrKXtmb3IodmFyIGw9ZVtjXSxoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LCJ0c3BhbiIpLHU9T2JqZWN0LmtleXMobC5hdHRycyksZD0wO2Q8dS5sZW5ndGg7ZCsrKXt2YXIgZj1sLmF0dHJzW3VbZF1dOyIiIT09ZiYmaC5zZXRBdHRyaWJ1dGUodVtkXSxmKX1oLnRleHRDb250ZW50PWwuY29udGVudCxvLmFwcGVuZENoaWxkKGgpfXJldHVybiBzP3MuYXBwZW5kQ2hpbGQobyk6dGhpcy5hcHBlbmQobyksb30sci5wcm90b3R5cGUuZ3Vlc3NXaWR0aD1mdW5jdGlvbihlLHQpe3ZhciByLG49dGhpcy5jcmVhdGVEdW1teVN2ZygpLGE9dGhpcy50ZXh0KGUsdCxuKTt0cnl7cj1hLmdldEJCb3goKSxyPWlzTmFOKHIuaGVpZ2h0KXx8IXIuaGVpZ2h0P3t3aWR0aDp0WyJmb250LXNpemUiXS8yLGhlaWdodDp0WyJmb250LXNpemUiXSsyfTp7d2lkdGg6ci53aWR0aCxoZWlnaHQ6ci5oZWlnaHR9fWNhdGNoKGUpe3I9e3dpZHRoOnRbImZvbnQtc2l6ZSJdLzIsaGVpZ2h0OnRbImZvbnQtc2l6ZSJdKzJ9fXJldHVybiBuLnJlbW92ZUNoaWxkKGEpLHJ9LHIucHJvdG90eXBlLmNyZWF0ZUR1bW15U3ZnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZHVtbXlTdmd8fCh0aGlzLmR1bW15U3ZnPXMoKSx0aGlzLmR1bW15U3ZnLnNldEF0dHJpYnV0ZSgic3R5bGUiLFsiZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsiLCJoZWlnaHQ6IDFweDsiLCJ3aWR0aDogMXB4OyIsInBvc2l0aW9uOiBhYnNvbHV0ZTsiXS5qb2luKCIiKSksZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYm9keSIpLmFwcGVuZENoaWxkKHRoaXMuZHVtbXlTdmcpKSx0aGlzLmR1bW15U3ZnfTt2YXIgaT17fTtmdW5jdGlvbiBzKCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQsInN2ZyIpO3JldHVybiBlLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsInhtbG5zOnhsaW5rIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIpLGUuc2V0QXR0cmlidXRlKCJyb2xlIiwiaW1nIiksZS5zZXRBdHRyaWJ1dGUoImZpbGwiLCJjdXJyZW50Q29sb3IiKSxlLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwiY3VycmVudENvbG9yIiksZX1yLnByb3RvdHlwZS5nZXRUZXh0U2l6ZT1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciI9PXR5cGVvZiBlJiYoZT0iIitlKSwhZXx8ZS5tYXRjaCgvXlxzKyQvKSlyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH07dmFyIG47aWYoZS5sZW5ndGg8MjAmJihuPWUrSlNPTi5zdHJpbmdpZnkodCksaVtuXSkpcmV0dXJuIGlbbl07dmFyIGEscz0hcjtyfHwocj10aGlzLnRleHQoZSx0KSk7dHJ5e2E9ci5nZXRCQm94KCksYT1pc05hTihhLmhlaWdodCl8fCFhLmhlaWdodD90aGlzLmd1ZXNzV2lkdGgoZSx0KTp7d2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHR9fWNhdGNoKHIpe2E9dGhpcy5ndWVzc1dpZHRoKGUsdCl9cmV0dXJuIHMmJih0aGlzLmN1cnJlbnRHcm91cC5sZW5ndGg+MD90aGlzLmN1cnJlbnRHcm91cFswXS5yZW1vdmVDaGlsZChyKTp0aGlzLnN2Zy5yZW1vdmVDaGlsZChyKSksbiYmKGlbbl09YSksYX0sci5wcm90b3R5cGUub3Blbkdyb3VwPWZ1bmN0aW9uKGUpe2U9ZXx8e307dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQsImciKTtyZXR1cm4gZS5rbGFzcyYmci5zZXRBdHRyaWJ1dGUoImNsYXNzIixlLmtsYXNzKSxlLmZpbGwmJnIuc2V0QXR0cmlidXRlKCJmaWxsIixlLmZpbGwpLGUuc3Ryb2tlJiZyLnNldEF0dHJpYnV0ZSgic3Ryb2tlIixlLnN0cm9rZSksZVsiZGF0YS1uYW1lIl0mJnIuc2V0QXR0cmlidXRlKCJkYXRhLW5hbWUiLGVbImRhdGEtbmFtZSJdKSxlLnByZXBlbmQ/dGhpcy5wcmVwZW5kKHIpOnRoaXMuYXBwZW5kKHIpLHRoaXMuY3VycmVudEdyb3VwLnVuc2hpZnQocikscn0sci5wcm90b3R5cGUuY2xvc2VHcm91cD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3VycmVudEdyb3VwLnNoaWZ0KCk7cmV0dXJuIGUmJjA9PT1lLmNoaWxkcmVuLmxlbmd0aD8oZS5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKGUpLG51bGwpOmV9LHIucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24oZSl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQsInBhdGgiKTtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYoInBhdGgiPT09bj9yLnNldEF0dHJpYnV0ZU5TKG51bGwsImQiLGUucGF0aCk6ImtsYXNzIj09PW4/ci5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjbGFzcyIsZVtuXSk6dm9pZCAwIT09ZVtuXSYmci5zZXRBdHRyaWJ1dGVOUyhudWxsLG4sZVtuXSkpO3JldHVybiB0aGlzLmFwcGVuZChyKSxyfSxyLnByb3RvdHlwZS5wYXRoVG9CYWNrPWZ1bmN0aW9uKGUpe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LCJwYXRoIik7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKCJwYXRoIj09PW4/ci5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixlLnBhdGgpOiJrbGFzcyI9PT1uP3Iuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xhc3MiLGVbbl0pOnIuc2V0QXR0cmlidXRlTlMobnVsbCxuLGVbbl0pKTtyZXR1cm4gdGhpcy5wcmVwZW5kKHIpLHJ9LHIucHJvdG90eXBlLmxpbmVUb0JhY2s9ZnVuY3Rpb24oZSl7Zm9yKHZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LCJsaW5lIiksbj1PYmplY3Qua2V5cyhlKSxhPTA7YTxuLmxlbmd0aDthKyspci5zZXRBdHRyaWJ1dGUoblthXSxlW25bYV1dKTtyZXR1cm4gdGhpcy5wcmVwZW5kKHIpLHJ9LHIucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihlKXt0aGlzLmN1cnJlbnRHcm91cC5sZW5ndGg+MD90aGlzLmN1cnJlbnRHcm91cFswXS5hcHBlbmRDaGlsZChlKTp0aGlzLnN2Zy5hcHBlbmRDaGlsZChlKX0sci5wcm90b3R5cGUucHJlcGVuZD1mdW5jdGlvbihlKXt0aGlzLmN1cnJlbnRHcm91cC5sZW5ndGg+MD90aGlzLmN1cnJlbnRHcm91cFswXS5hcHBlbmRDaGlsZChlKTp0aGlzLnN2Zy5pbnNlcnRCZWZvcmUoZSx0aGlzLnN2Zy5maXJzdENoaWxkKX0sci5wcm90b3R5cGUuc2V0QXR0cmlidXRlT25FbGVtZW50PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmZS5zZXRBdHRyaWJ1dGVOUyhudWxsLHIsdFtyXSl9LHIucHJvdG90eXBlLm1vdmVFbGVtZW50VG9DaGlsZD1mdW5jdGlvbihlLHQpe2UuYXBwZW5kQ2hpbGQodCl9LGUuZXhwb3J0cz1yfSwxMTg1OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz0iNi41LjIifX0sdD17fSxyPWZ1bmN0aW9uIHIobil7dmFyIGE9dFtuXTtpZih2b2lkIDAhPT1hKXJldHVybiBhLmV4cG9ydHM7dmFyIGk9dFtuXT17ZXhwb3J0czp7fX07cmV0dXJuIGVbbl0oaSxpLmV4cG9ydHMsciksaS5leHBvcnRzfSgxMDQ1KSxyO3ZhciBlLHQscn0pKTs=`;