3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ · data · qwe?styles.css?5?4
{
    "qwe?styles.css?5?4": "base64:Iil8fGkobiwibmFtZSIsZSksbChuKS5zb3VyY2U9cC5qb2luKCJzdHJpbmciPT10eXBlb2YgZT9lOiIiKSksdCE9PXI/KHU/IWYmJnRbZV0mJihzPSEwKTpkZWxldGUgdFtlXSxzP3RbZV09bjppKHQsZSxuKSk6cz90W2VdPW46YyhlLG4pfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJmYodGhpcykuc291cmNlfHx1LmNhbGwodGhpcyl9KSl9LGNEa2U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oIkJYL2IiKS5mO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe3JldHVybiFPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygxKX0pKX0se2dldE93blByb3BlcnR5TmFtZXM6aX0pfSxjVllIOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJoaDF2Iiksbz1uKCIwcnZyIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxhO3JldHVybiBvJiYiZnVuY3Rpb24iPT10eXBlb2YoaT1lLmNvbnN0cnVjdG9yKSYmaSE9PW4mJnIoYT1pLnByb3RvdHlwZSkmJmEhPT1uLnByb3RvdHlwZSYmbyh0LGEpLHR9fSwiZEJnKyI6ZnVuY3Rpb24odCxlKXtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30sImRHL24iOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJRbzlsIiksbz1uKCJVVFZTIiksaT1uKCJ3RExvIiksYT1uKCJtL0w4IikuZjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9ci5TeW1ib2x8fChyLlN5bWJvbD17fSk7byhlLHQpfHxhKGUsdCx7dmFsdWU6aS5mKHQpfSl9fSwiZURsKyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sZUppUjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigianJVdiIpLGk9TWF0aC5leHA7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7dGFuaDpmdW5jdGlvbih0KXt2YXIgZT1vKHQ9K3QpLG49bygtdCk7cmV0dXJuIGU9PTEvMD8xOm49PTEvMD8tMTooZS1uKS8oaSh0KStpKC10KSl9fSl9LGVhanY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGguYXNpbmgsaT1NYXRoLmxvZyxhPU1hdGguc3FydDtyKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITAsZm9yY2VkOiEobyYmMS9vKDApPjApfSx7YXNpbmg6ZnVuY3Rpb24gdChlKXtyZXR1cm4gaXNGaW5pdGUoZT0rZSkmJjAhPWU/ZTwwPy10KC1lKTppKGUrYShlKmUrMSkpOmV9fSl9LGVvTDg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImc2di8iKTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IW8sc2hhbTohb30se2RlZmluZVByb3BlcnR5Om4oIm0vTDgiKS5mfSl9LGV3dlc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkhZQUYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChyKHQpKX19LGY1cDE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIm5vR28iKSxpPXIuV2Vha01hcDt0LmV4cG9ydHM9ImZ1bmN0aW9uIj09dHlwZW9mIGkmJi9uYXRpdmUgY29kZS8udGVzdChvLmNhbGwoaSkpfSxmSE1ZOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnbHJrIiksbz1uKCJOK2cwIiksaT1uKCJlRGwrIiksYT1uKCIwQksyIiksYz1uKCJHK1J4IiksdT1uKCJ6Qko0Iikscz1uKCI5M0kwIikoIklFX1BST1RPIiksZj1mdW5jdGlvbigpe30sbD1mdW5jdGlvbigpe3ZhciB0LGU9dSgiaWZyYW1lIiksbj1pLmxlbmd0aDtmb3IoZS5zdHlsZS5kaXNwbGF5PSJub25lIixjLmFwcGVuZENoaWxkKGUpLGUuc3JjPVN0cmluZygiamF2YXNjcmlwdDoiKSwodD1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSx0LndyaXRlKCI8c2NyaXB0PmRvY3VtZW50LkY9T2JqZWN0PFwvc2NyaXB0PiIpLHQuY2xvc2UoKSxsPXQuRjtuLS07KWRlbGV0ZSBsLnByb3RvdHlwZVtpW25dXTtyZXR1cm4gbCgpfTt0LmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbnVsbCE9PXQ/KGYucHJvdG90eXBlPXIodCksbj1uZXcgZixmLnByb3RvdHlwZT1udWxsLG5bc109dCk6bj1sKCksdm9pZCAwPT09ZT9uOm8obixlKX0sYVtzXT0hMH0sZmJDVzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oInR5Y1IiKS5maW5kLGk9bigiUk5JcyIpLGE9ITA7ImZpbmQiaW5bXSYmQXJyYXkoMSkuZmluZCgoZnVuY3Rpb24oKXthPSExfSkpLHIoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDphfSx7ZmluZDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLGkoImZpbmQiKX0sZmRBeTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIm50T1UiKSxpPW4oIjRXT0QiKSxhPW4oIjBydnIiKSxjPW4oIjFFNXoiKSx1PW4oIlgyVSsiKSxzPW4oImJ1c0UiKSxmPW4oInRpS3AiKSxsPW4oInhEQlIiKSxwPW4oIlA0eTEiKSxoPW4oInJwTmsiKSx2PWguSXRlcmF0b3JQcm90b3R5cGUsZD1oLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMsZz1mKCJpdGVyYXRvciIpLHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGYsaCxiLG0pe28obixlLGYpO3ZhciBrLF8sdyx4PWZ1bmN0aW9uKHQpe2lmKHQ9PT1oJiZJKXJldHVybiBJO2lmKCFkJiZ0IGluIE8pcmV0dXJuIE9bdF07c3dpdGNoKHQpe2Nhc2Uia2V5cyI6Y2FzZSJ2YWx1ZXMiOmNhc2UiZW50cmllcyI6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzKX19LFM9ZSsiIEl0ZXJhdG9yIixFPSExLE89dC5wcm90b3R5cGUsVD1PW2ddfHxPWyJAQGl0ZXJhdG9yIl18fGgmJk9baF0sST0hZCYmVHx8eChoKSxqPSJBcnJheSI9PWUmJk8uZW50cmllc3x8VDtpZihqJiYoaz1pKGouY2FsbChuZXcgdCkpLHYhPT1PYmplY3QucHJvdG90eXBlJiZrLm5leHQmJihsfHxpKGspPT09dnx8KGE/YShrLHYpOiJmdW5jdGlvbiIhPXR5cGVvZiBrW2ddJiZ1KGssZyx5KSksYyhrLFMsITAsITApLGwmJihwW1NdPXkpKSksInZhbHVlcyI9PWgmJlQmJiJ2YWx1ZXMiIT09VC5uYW1lJiYoRT0hMCxJPWZ1bmN0aW9uKCl7cmV0dXJuIFQuY2FsbCh0aGlzKX0pLGwmJiFtfHxPW2ddPT09SXx8dShPLGcsSSkscFtlXT1JLGgpaWYoXz17dmFsdWVzOngoInZhbHVlcyIpLGtleXM6Yj9JOngoImtleXMiKSxlbnRyaWVzOngoImVudHJpZXMiKX0sbSlmb3IodyBpbiBfKSFkJiYhRSYmdyBpbiBPfHxzKE8sdyxfW3ddKTtlbHNlIHIoe3RhcmdldDplLHByb3RvOiEwLGZvcmNlZDpkfHxFfSxfKTtyZXR1cm4gX319LGZ0S2c6ZnVuY3Rpb24odCxlLG4pe24oImJycDIiKSxuKCI5TFBqIiksbigick16NyIpLG4oIkRRTmEiKSxuKCI3K3pzIik7dmFyIHI9bigiUW85bCIpO3QuZXhwb3J0cz1yLkRhdGV9LCJnNnYvIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpO3QuZXhwb3J0cz0hcigoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sZ09DYjpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJyZXBsYWNlIil9LGdYSUs6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgidG9QcmltaXRpdmUiKX0sZ2JpVDpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJ1bnNjb3BhYmxlcyIpfSxnZFZsOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZXd2VyIpLG89bigiSTh2aCIpLGk9bigiVU1TUSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9cih0aGlzKSxuPWkoZS5sZW5ndGgpLGE9YXJndW1lbnRzLmxlbmd0aCxjPW8oYT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsbiksdT1hPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxzPXZvaWQgMD09PXU/bjpvKHUsbik7cz5jOyllW2MrK109dDtyZXR1cm4gZX19LGdscms6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImhoMXYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIXIodCkpdGhyb3cgVHlwZUVycm9yKFN0cmluZyh0KSsiIGlzIG5vdCBhbiBvYmplY3QiKTtyZXR1cm4gdH19LGhCak46ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJ3RTZ2Iiksbz1uKCJtL0w4IiksaT1uKCJYR3dDIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1yKGUpO2EgaW4gdD9vLmYodCxhLGkoMCxuKSk6dFthXT1ufX0saEJ5UTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjE0U2wiKSxvPW4oImdscmsiKSxpPW4oIkhZQUYiKSxhPW4oIkVwOUkiKSxjPW4oIkZNTk0iKTtyKCJzZWFyY2giLDEsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bZnVuY3Rpb24oZSl7dmFyIG49aSh0aGlzKSxyPW51bGw9PWU/dm9pZCAwOmVbdF07cmV0dXJuIHZvaWQgMCE9PXI/ci5jYWxsKGUsbik6bmV3IFJlZ0V4cChlKVt0XShTdHJpbmcobikpfSxmdW5jdGlvbih0KXt2YXIgcj1uKGUsdCx0aGlzKTtpZihyLmRvbmUpcmV0dXJuIHIudmFsdWU7dmFyIGk9byh0KSx1PVN0cmluZyh0aGlzKSxzPWkubGFzdEluZGV4O2EocywwKXx8KGkubGFzdEluZGV4PTApO3ZhciBmPWMoaSx1KTtyZXR1cm4gYShpLmxhc3RJbmRleCxzKXx8KGkubGFzdEluZGV4PXMpLG51bGw9PT1mPy0xOmYuaW5kZXh9XX0pKX0sImhOL2ciOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4oIjBUV3AiKX0saFhwTzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSFlBRiIpLG89LyIvZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4saSl7dmFyIGE9U3RyaW5nKHIodCkpLGM9IjwiK2U7cmV0dXJuIiIhPT1uJiYoYys9IiAiK24rJz0iJytTdHJpbmcoaSkucmVwbGFjZShvLCImcXVvdDsiKSsnIicpLGMrIj4iK2ErIjwvIitlKyI+In19LGhoMXY6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0P251bGwhPT10OiJmdW5jdGlvbiI9PXR5cGVvZiB0fX0saTZRRjpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se2lzSW50ZWdlcjpuKCJYb2w4Iil9KX0saW5sQTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlVNU1EiKSxpPW4oIldqUmIiKSxhPW4oIkhZQUYiKSxjPW4oInF4UFoiKSx1PSIiLmVuZHNXaXRoLHM9TWF0aC5taW47cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohYygiZW5kc1dpdGgiKX0se2VuZHNXaXRoOmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyhhKHRoaXMpKTtpKHQpO3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLHI9byhlLmxlbmd0aCksYz12b2lkIDA9PT1uP3I6cyhvKG4pLHIpLGY9U3RyaW5nKHQpO3JldHVybiB1P3UuY2FsbChlLGYsYyk6ZS5zbGljZShjLWYubGVuZ3RoLGMpPT09Zn19KX0saXFXVzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlpVZDgiKS5jaGFyQXQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZSsobj9yKHQsZSkubGVuZ3RoOjEpfX0sanJVdjpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguZXhwbTEscj1NYXRoLmV4cDt0LmV4cG9ydHM9IW58fG4oMTApPjIyMDI1LjQ2NTc5NDgwNjcxOHx8bigxMCk8MjIwMjUuNDY1Nzk0ODA2NzE4fHwtMmUtMTchPW4oLTJlLTE3KT9mdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6dD4tMWUtNiYmdDwxZS02P3QrdCp0LzI6cih0KS0xfTpufSxqdDJGOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoIm1hdGNoQWxsIil9LGtOY1U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGgubG9nLGk9TWF0aC5MTjI7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7bG9nMjpmdW5jdGlvbih0KXtyZXR1cm4gbyh0KS9pfX0pfSxrT09sOmZ1bmN0aW9uKHQsZSl7dmFyIG49MCxyPU1hdGgucmFuZG9tKCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJTeW1ib2woIitTdHJpbmcodm9pZCAwPT09dD8iIjp0KSsiKV8iKygrK24rcikudG9TdHJpbmcoMzYpfX0sa1NrbzpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se2lzTmFOOmZ1bmN0aW9uKHQpe3JldHVybiB0IT10fX0pfSxrbU1WOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbyxpPW4oInJXMHQiKSxhPVJlZ0V4cC5wcm90b3R5cGUuZXhlYyxjPVN0cmluZy5wcm90b3R5cGUucmVwbGFjZSx1PWEscz0obz0vYiovZyxhLmNhbGwocj0vYS8sImEiKSxhLmNhbGwobywiYSIpLDAhPT1yLmxhc3RJbmRleHx8MCE9PW8ubGFzdEluZGV4KSxmPXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoc3x8ZikmJih1PWZ1bmN0aW9uKHQpe3ZhciBlLG4scixvLHU9dGhpcztyZXR1cm4gZiYmKG49bmV3IFJlZ0V4cCgiXiIrdS5zb3VyY2UrIiQoPyFcXHMpIixpLmNhbGwodSkpKSxzJiYoZT11Lmxhc3RJbmRleCkscj1hLmNhbGwodSx0KSxzJiZyJiYodS5sYXN0SW5kZXg9dS5nbG9iYWw/ci5pbmRleCtyWzBdLmxlbmd0aDplKSxmJiZyJiZyLmxlbmd0aD4xJiZjLmNhbGwoclswXSxuLChmdW5jdGlvbigpe2ZvcihvPTE7bzxhcmd1bWVudHMubGVuZ3RoLTI7bysrKXZvaWQgMD09PWFyZ3VtZW50c1tvXSYmKHJbb109dm9pZCAwKX0pKSxyfSksdC5leHBvcnRzPXV9LGwyZEs6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImZvbnRjb2xvciIpfSx7Zm9udGNvbG9yOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImZvbnQiLCJjb2xvciIsdCl9fSl9LGxFb3U6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgidG9TdHJpbmdUYWciKX0sbE1xNTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpLG89LyN8XC5wcm90b3R5cGVcLi8saT1mdW5jdGlvbih0LGUpe3ZhciBuPWNbYSh0KV07cmV0dXJuIG49PXN8fG4hPXUmJigiZnVuY3Rpb24iPT10eXBlb2YgZT9yKGUpOiEhZSl9LGE9aS5ub3JtYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KS5yZXBsYWNlKG8sIi4iKS50b0xvd2VyQ2FzZSgpfSxjPWkuZGF0YT17fSx1PWkuTkFUSVZFPSJOIixzPWkuUE9MWUZJTEw9IlAiO3QuZXhwb3J0cz1pfSxsczgyOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1mdW5jdGlvbih0KXsidXNlIHN0cmljdCI7dmFyIGUsbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGk9by5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLGE9by5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixjPW8udG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiB1KHQsZSxuLHIpe3ZhciBvPU9iamVjdC5jcmVhdGUoKGUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgZD9lOmQpLnByb3RvdHlwZSksaT1uZXcgVChyfHxbXSk7cmV0dXJuIG8uX2ludm9rZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9ZjtyZXR1cm4gZnVuY3Rpb24obyxpKXtpZihyPT09cCl0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihyPT09aCl7aWYoInRocm93Ij09PW8pdGhyb3cgaTtyZXR1cm4gaigpfWZvcihuLm1ldGhvZD1vLG4uYXJnPWk7Oyl7dmFyIGE9bi5kZWxlZ2F0ZTtpZihhKXt2YXIgYz1TKGEsbik7aWYoYyl7aWYoYz09PXYpY29udGludWU7cmV0dXJuIGN9fWlmKCJuZXh0Ij09PW4ubWV0aG9kKW4uc2VudD1uLl9zZW50PW4uYXJnO2Vsc2UgaWYoInRocm93Ij09PW4ubWV0aG9kKXtpZihyPT09Zil0aHJvdyByPWgsbi5hcmc7bi5kaXNwYXRjaEV4Y2VwdGlvbihuLmFyZyl9ZWxzZSJyZXR1cm4iPT09bi5tZXRob2QmJm4uYWJydXB0KCJyZXR1cm4iLG4uYXJnKTtyPXA7dmFyIHU9cyh0LGUsbik7aWYoIm5vcm1hbCI9PT11LnR5cGUpe2lmKHI9bi5kb25lP2g6bCx1LmFyZz09PXYpY29udGludWU7cmV0dXJue3ZhbHVlOnUuYXJnLGRvbmU6bi5kb25lfX0idGhyb3ciPT09dS50eXBlJiYocj1oLG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9dS5hcmcpfX19KHQsbixpKSxvfWZ1bmN0aW9uIHModCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHIpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnJ9fX10LndyYXA9dTt2YXIgZj0ic3VzcGVuZGVkU3RhcnQiLGw9InN1c3BlbmRlZFlpZWxkIixwPSJleGVjdXRpbmciLGg9ImNvbXBsZXRlZCIsdj17fTtmdW5jdGlvbiBkKCl7fWZ1bmN0aW9uIGcoKXt9ZnVuY3Rpb24geSgpe312YXIgYj17fTtiW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3ZhciBtPU9iamVjdC5nZXRQcm90b3R5cGVPZixrPW0mJm0obShJKFtdKSkpO2smJmshPT1uJiZyLmNhbGwoayxpKSYmKGI9ayk7dmFyIF89eS5wcm90b3R5cGU9ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShiKTtmdW5jdGlvbiB3KHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9fSkpfWZ1bmN0aW9uIHgodCl7dmFyIGU7dGhpcy5faW52b2tlPWZ1bmN0aW9uKG4sbyl7ZnVuY3Rpb24gaSgpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxpKXshZnVuY3Rpb24gZShuLG8saSxhKXt2YXIgYz1zKHRbbl0sdCxvKTtpZigidGhyb3ciIT09Yy50eXBlKXt2YXIgdT1jLmFyZyxmPXUudmFsdWU7cmV0dXJuIGYmJiJvYmplY3QiPT10eXBlb2YgZiYmci5jYWxsKGYsIl9fYXdhaXQiKT9Qcm9taXNlLnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtlKCJuZXh0Iix0LGksYSl9KSwoZnVuY3Rpb24odCl7ZSgidGhyb3ciLHQsaSxhKX0pKTpQcm9taXNlLnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24odCl7dS52YWx1ZT10LGkodSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGUoInRocm93Iix0LGksYSl9KSl9YShjLmFyZyl9KG4sbyxlLGkpfSkpfXJldHVybiBlPWU/ZS50aGVuKGksaSk6aSgpfX1mdW5jdGlvbiBTKHQsbil7dmFyIHI9dC5pdGVyYXRvcltuLm1ldGhvZF07aWYocj09PWUpe2lmKG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09bi5tZXRob2Qpe2lmKHQuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9ZSxTKHQsbiksInRocm93Ij09PW4ubWV0aG9kKSlyZXR1cm4gdjtuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2QiKX1yZXR1cm4gdn12YXIgbz1zKHIsdC5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PW8udHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1vLmFyZyxuLmRlbGVnYXRlPW51bGwsdjt2YXIgaT1vLmFyZztyZXR1cm4gaT9pLmRvbmU/KG5bdC5yZXN1bHROYW1lXT1pLnZhbHVlLG4ubmV4dD10Lm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz1lKSxuLmRlbGVnYXRlPW51bGwsdik6aToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCx2KX1mdW5jdGlvbiBFKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIE8odCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIFQodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChFLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIEkodCl7aWYodCl7dmFyIG49dFtpXTtpZihuKXJldHVybiBuLmNhbGwodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQubmV4dClyZXR1cm4gdDtpZighaXNOYU4odC5sZW5ndGgpKXt2YXIgbz0tMSxhPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzx0Lmxlbmd0aDspaWYoci5jYWxsKHQsbykpcmV0dXJuIG4udmFsdWU9dFtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT1lLG4uZG9uZT0hMCxufTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0Omp9fWZ1bmN0aW9uIGooKXtyZXR1cm57dmFsdWU6ZSxkb25lOiEwfX1yZXR1cm4gZy5wcm90b3R5cGU9Xy5jb25zdHJ1Y3Rvcj15LHkuY29uc3RydWN0b3I9Zyx5W2NdPWcuZGlzcGxheU5hbWU9IkdlbmVyYXRvckZ1bmN0aW9uIix0LmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PWd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LHQubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHkpOih0Ll9fcHJvdG9fXz15LGMgaW4gdHx8KHRbY109IkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoXyksdH0sdC5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sdyh4LnByb3RvdHlwZSkseC5wcm90b3R5cGVbYV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdC5Bc3luY0l0ZXJhdG9yPXgsdC5hc3luYz1mdW5jdGlvbihlLG4scixvKXt2YXIgaT1uZXcgeCh1KGUsbixyLG8pKTtyZXR1cm4gdC5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2k6aS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmkubmV4dCgpfSkpfSx3KF8pLF9bY109IkdlbmVyYXRvciIsX1tpXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxfLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9LHQua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2gobik7cmV0dXJuIGUucmV2ZXJzZSgpLGZ1bmN0aW9uIG4oKXtmb3IoO2UubGVuZ3RoOyl7dmFyIHI9ZS5wb3AoKTtpZihyIGluIHQpcmV0dXJuIG4udmFsdWU9cixuLmRvbmU9ITEsbn1yZXR1cm4gbi5kb25lPSEwLG59fSx0LnZhbHVlcz1JLFQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpULHJlc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PWUsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9ZSx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChPKSwhdClmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPWUpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7aWYodGhpcy5kb25lKXRocm93IHQ7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIGMudHlwZT0idGhyb3ciLGMuYXJnPXQsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz1lKSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLGM9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgdT1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxzPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYodSYmcyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYodSl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighcyl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHYpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksdn0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxPKG4pLHZ9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7TyhuKX1yZXR1cm4gb319dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOkkodCkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz1lKSx2fX0sdH0odC5leHBvcnRzKTt0cnl7cmVnZW5lcmF0b3JSdW50aW1lPXJ9Y2F0Y2gobyl7RnVuY3Rpb24oInIiLCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByIikocil9fSwibS9MOCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImc2di8iKSxvPW4oIkRQc3giKSxpPW4oImdscmsiKSxhPW4oIndFNnYiKSxjPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmY9cj9jOmZ1bmN0aW9uKHQsZSxuKXtpZihpKHQpLGU9YShlLCEwKSxpKG4pLG8pdHJ5e3JldHVybiBjKHQsZSxuKX1jYXRjaChyKXt9aWYoImdldCJpbiBufHwic2V0ImluIG4pdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpO3JldHVybiJ2YWx1ZSJpbiBuJiYodFtlXT1uLnZhbHVlKSx0fX0sbTkybjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZ2xyayIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixvKXt0cnl7cmV0dXJuIG8/ZShyKG4pWzBdLG5bMV0pOmUobil9Y2F0Y2goYSl7dmFyIGk9dC5yZXR1cm47dGhyb3cgdm9pZCAwIT09aSYmcihpLmNhbGwodCkpLGF9fX0sbVJINjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgibGluayIpfSx7bGluazpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLCJhIiwiaHJlZiIsdCl9fSl9LG1SSXE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbigiSDBwYiIpLG4oIndMWW4iKSxuKCJzTUJPIiksbigidFc1eSIpLG4oInVMOFciKSxuKCJlb0w4IiksbigiSFJ4VSIpLG4oIjVEbVciKSxuKCJOQkFTIiksbigidGt0byIpLG4oImNEa2UiKSxuKCIzS2dWIiksbigicjVPZyIpLG4oInp1aFciKSxuKCI0aDBZIiksbigiNUQ1byIpLG4oInlRWW4iKSxuKCJ6S1plIiksbigiS3hsZCIpLG4oIkV4b0MiKSxuKCIwN2Q3IiksbigibWE5SSIpLG4oIkozMFgiKSxuKCJwakR2IiksbigiWGUzTCIpLG4oIm9WdVgiKSxuKCIrMm9QIiksbigicERRcSIpLG4oIlRvSnkiKSxuKCJRV0JsIiksbigiMkIxUiIpLG4oIlRlUUYiKSxuKCJSZnh6IiksbigicGlNYiIpLG4oIkU5WEQiKSxuKCI5TjI5IiksbigieVhWMyIpLG4oInVxWGMiKSxuKCJxSFQrIiksbigieXltZSIpLG4oImZiQ1ciKSxuKCJ4MEFHIiksbigiNG1EbSIpLG4oIjl0Yi8iKSxuKCIyQStkIiksbigiU1lvciIpLG4oIlBLUGsiKSxuKCI5Yko3IiksbigiaW5sQSIpLG4oIkpUSmciKSxuKCJPTTlaIiksbigiTEtCeCIpLG4oIkdLVlUiKSxuKCJFNU5NIiksbigiQk5NdCIpLG4oInpIRnUiKSxuKCJ4ODN3IiksbigibDJkSyIpLG4oIkdSUEYiKSxuKCJ4ZEJaIiksbigibVJINiIpLG4oInlXbzIiKSxuKCJJeFhSIiksbigiVEZQVCIpLG4oIlprOFgiKSxuKCJSbTFTIiksbigiVXhsQyIpLG4oImhCeVEiKSxuKCJFblp5IiksbigiNGw2MyIpLG4oInJOaGwiKSxuKCI3c2JEIiksbigiNmhwbiIpLG4oImZ0S2ciKSxuKCJLdjlsIiksbigiVHNrcSIpLG4oIkVORjkiKSxuKCJZR0s0IiksbigiRlp0UCIpLG4oIjNiQloiKSxuKCI1cytuIiksbigiREVmdSIpLG4oImxzODIiKX0sbWE5STpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oIjZMV0EiKSxhPW4oImhoMXYiKSxjPW4oImV3dlciKSx1PW4oIlVNU1EiKSxzPW4oImhCak4iKSxmPW4oIlpmRHYiKSxsPW4oIkhkNWYiKSxwPW4oInRpS3AiKSgiaXNDb25jYXRTcHJlYWRhYmxlIiksaD0hbygoZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdFtwXT0hMSx0LmNvbmNhdCgpWzBdIT09dH0pKSx2PWwoImNvbmNhdCIpLGQ9ZnVuY3Rpb24odCl7aWYoIWEodCkpcmV0dXJuITE7dmFyIGU9dFtwXTtyZXR1cm4gdm9pZCAwIT09ZT8hIWU6aSh0KX07cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFofHwhdn0se2NvbmNhdDpmdW5jdGlvbih0KXt2YXIgZSxuLHIsbyxpLGE9Yyh0aGlzKSxsPWYoYSwwKSxwPTA7Zm9yKGU9LTEscj1hcmd1bWVudHMubGVuZ3RoO2U8cjtlKyspaWYoZChpPS0xPT09ZT9hOmFyZ3VtZW50c1tlXSkpe2lmKHArKG89dShpLmxlbmd0aCkpPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtmb3Iobj0wO248bztuKysscCsrKW4gaW4gaSYmcyhsLHAsaVtuXSl9ZWxzZXtpZihwPj05MDA3MTk5MjU0NzQwOTkxKXRocm93IFR5cGVFcnJvcigiTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIik7cyhsLHArKyxpKX1yZXR1cm4gbC5sZW5ndGg9cCxsfX0pfSxtclNHOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJfX2V4dGVuZHMiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLCJfX2Fzc2lnbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsIl9fcmVzdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSksbi5kKGUsIl9fZGVjb3JhdGUiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLCJfX3BhcmFtIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKSxuLmQoZSwiX19tZXRhZGF0YSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSksbi5kKGUsIl9fYXdhaXRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKGUsIl9fZ2VuZXJhdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKSxuLmQoZSwiX19leHBvcnRTdGFyIiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKSxuLmQoZSwiX192YWx1ZXMiLChmdW5jdGlvbigpe3JldHVybiBofSkpLG4uZChlLCJfX3JlYWQiLChmdW5jdGlvbigpe3JldHVybiB2fSkpLG4uZChlLCJfX3NwcmVhZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSksbi5kKGUsIl9fc3ByZWFkQXJyYXlzIiwoZnVuY3Rpb24oKXtyZXR1cm4gZ30pKSxuLmQoZSwiX19hd2FpdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSksbi5kKGUsIl9fYXN5bmNHZW5lcmF0b3IiLChmdW5jdGlvbigpe3JldHVybiBifSkpLG4uZChlLCJfX2FzeW5jRGVsZWdhdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gbX0pKSxuLmQoZSwiX19hc3luY1ZhbHVlcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGt9KSksbi5kKGUsIl9fbWFrZVRlbXBsYXRlT2JqZWN0IiwoZnVuY3Rpb24oKXtyZXR1cm4gX30pKSxuLmQoZSwiX19pbXBvcnRTdGFyIiwoZnVuY3Rpb24oKXtyZXR1cm4gd30pKSxuLmQoZSwiX19pbXBvcnREZWZhdWx0IiwoZnVuY3Rpb24oKXtyZXR1cm4geH0pKTt2YXIgcj1mdW5jdGlvbih0LGUpe3JldHVybihyPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfSkodCxlKX07ZnVuY3Rpb24gbyh0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9cih0LGUpLHQucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX12YXIgaT1mdW5jdGlvbigpe3JldHVybihpPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspZm9yKHZhciBvIGluIGU9YXJndW1lbnRzW25dKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG8pJiYodFtvXT1lW29dKTtyZXR1cm4gdH0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gYSh0LGUpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiZlLmluZGV4T2Yocik8MCYmKG5bcl09dFtyXSk7aWYobnVsbCE9dCYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtvPHIubGVuZ3RoO28rKyllLmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHQscltvXSkmJihuW3Jbb11dPXRbcltvXV0pfXJldHVybiBufWZ1bmN0aW9uIGModCxlLG4scil7dmFyIG8saT1hcmd1bWVudHMubGVuZ3RoLGE9aTwzP2U6bnVsbD09PXI/cj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbik6cjtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKWE9UmVmbGVjdC5kZWNvcmF0ZSh0LGUsbixyKTtlbHNlIGZvcih2YXIgYz10Lmxlbmd0aC0xO2M+PTA7Yy0tKShvPXRbY10pJiYoYT0oaTwzP28oYSk6aT4zP28oZSxuLGEpOm8oZSxuKSl8fGEpO3JldHVybiBpPjMmJmEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sYSksYX1mdW5jdGlvbiB1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4scil7ZShuLHIsdCl9fWZ1bmN0aW9uIHModCxlKXtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhKXJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKHQsZSl9ZnVuY3Rpb24gZih0LGUsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24obyxpKXtmdW5jdGlvbiBhKHQpe3RyeXt1KHIubmV4dCh0KSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gYyh0KXt0cnl7dShyLnRocm93KHQpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KHQpe3QuZG9uZT9vKHQudmFsdWUpOm5ldyBuKChmdW5jdGlvbihlKXtlKHQudmFsdWUpfSkpLnRoZW4oYSxjKX11KChyPXIuYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9ZnVuY3Rpb24gbCh0LGUpe3ZhciBuLHIsbyxpLGE9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGk9e25leHQ6YygwKSx0aHJvdzpjKDEpLHJldHVybjpjKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpO2Z1bmN0aW9uIGMoaSl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbihpKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2E7KXRyeXtpZihuPTEsciYmKG89MiZpWzBdP3IucmV0dXJuOmlbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixpWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihpPVsyJmlbMF0sby52YWx1ZV0pLGlbMF0pe2Nhc2UgMDpjYXNlIDE6bz1pO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTppWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKysscj1pWzFdLGk9WzBdO2NvbnRpbnVlO2Nhc2UgNzppPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEobz0obz1hLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKSYmKDY9PT1pWzBdfHwyPT09aVswXSkpe2E9MDtjb250aW51ZX1pZigzPT09aVswXSYmKCFvfHxpWzFdPm9bMF0mJmlbMV08b1szXSkpe2EubGFiZWw9aVsxXTticmVha31pZig2PT09aVswXSYmYS5sYWJlbDxvWzFdKXthLmxhYmVsPW9bMV0sbz1pO2JyZWFrfWlmKG8mJmEubGFiZWw8b1syXSl7YS5sYWJlbD1vWzJdLGEub3BzLnB1c2goaSk7YnJlYWt9b1syXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfWk9ZS5jYWxsKHQsYSl9Y2F0Y2goYyl7aT1bNixjXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmlbMF0pdGhyb3cgaVsxXTtyZXR1cm57dmFsdWU6aVswXT9pWzFdOnZvaWQgMCxkb25lOiEwfX0oW2ksY10pfX19ZnVuY3Rpb24gcCh0LGUpe2Zvcih2YXIgbiBpbiB0KWUuaGFzT3duUHJvcGVydHkobil8fChlW25dPXRbbl0pfWZ1bmN0aW9uIGgodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdLG49MDtyZXR1cm4gZT9lLmNhbGwodCk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbj49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbisrXSxkb25lOiF0fX19fWZ1bmN0aW9uIHYodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIHIsbyxpPW4uY2FsbCh0KSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKHI9aS5uZXh0KCkpLmRvbmU7KWEucHVzaChyLnZhbHVlKX1jYXRjaChjKXtvPXtlcnJvcjpjfX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYobj1pLnJldHVybikmJm4uY2FsbChpKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGF9ZnVuY3Rpb24gZCgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0PXQuY29uY2F0KHYoYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9ZnVuY3Rpb24gZygpe2Zvcih2YXIgdD0wLGU9MCxuPWFyZ3VtZW50cy5sZW5ndGg7ZTxuO2UrKyl0Kz1hcmd1bWVudHNbZV0ubGVuZ3RoO3ZhciByPUFycmF5KHQpLG89MDtmb3IoZT0wO2U8bjtlKyspZm9yKHZhciBpPWFyZ3VtZW50c1tlXSxhPTAsYz1pLmxlbmd0aDthPGM7YSsrLG8rKylyW29dPWlbYV07cmV0dXJuIHJ9ZnVuY3Rpb24geSh0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHk/KHRoaXMudj10LHRoaXMpOm5ldyB5KHQpfWZ1bmN0aW9uIGIodCxlLG4pe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgcixvPW4uYXBwbHkodCxlfHxbXSksaT1bXTtyZXR1cm4gcj17fSxhKCJuZXh0IiksYSgidGhyb3ciKSxhKCJyZXR1cm4iKSxyW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxyO2Z1bmN0aW9uIGEodCl7b1t0XSYmKHJbdF09ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLHIpe2kucHVzaChbdCxlLG4scl0pPjF8fGModCxlKX0pKX0pfWZ1bmN0aW9uIGModCxlKXt0cnl7KG49b1t0XShlKSkudmFsdWUgaW5zdGFuY2VvZiB5P1Byb21pc2UucmVzb2x2ZShuLnZhbHVlLnYpLnRoZW4odSxzKTpmKGlbMF1bMl0sbil9Y2F0Y2gocil7ZihpWzBdWzNdLHIpfXZhciBufWZ1bmN0aW9uIHUodCl7YygibmV4dCIsdCl9ZnVuY3Rpb24gcyh0KXtjKCJ0aHJvdyIsdCl9ZnVuY3Rpb24gZih0LGUpe3QoZSksaS5zaGlmdCgpLGkubGVuZ3RoJiZjKGlbMF1bMF0saVswXVsxXSl9fWZ1bmN0aW9uIG0odCl7dmFyIGUsbjtyZXR1cm4gZT17fSxyKCJuZXh0IikscigidGhyb3ciLChmdW5jdGlvbih0KXt0aHJvdyB0fSkpLHIoInJldHVybiIpLGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlO2Z1bmN0aW9uIHIocixvKXtlW3JdPXRbcl0/ZnVuY3Rpb24oZSl7cmV0dXJuKG49IW4pP3t2YWx1ZTp5KHRbcl0oZSkpLGRvbmU6InJldHVybiI9PT1yfTpvP28oZSk6ZX06b319ZnVuY3Rpb24gayh0KXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIGUsbj10W1N5bWJvbC5hc3luY0l0ZXJhdG9yXTtyZXR1cm4gbj9uLmNhbGwodCk6KHQ9aCh0KSxlPXt9LHIoIm5leHQiKSxyKCJ0aHJvdyIpLHIoInJldHVybiIpLGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUpO2Z1bmN0aW9uIHIobil7ZVtuXT10W25dJiZmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7IWZ1bmN0aW9uKHQsZSxuLHIpe1Byb21pc2UucmVzb2x2ZShyKS50aGVuKChmdW5jdGlvbihlKXt0KHt2YWx1ZTplLGRvbmU6bn0pfSksZSl9KHIsbywoZT10W25dKGUpKS5kb25lLGUudmFsdWUpfSkpfX19ZnVuY3Rpb24gXyh0LGUpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHk/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJhdyIse3ZhbHVlOmV9KTp0LnJhdz1lLHR9ZnVuY3Rpb24gdyh0KXtpZih0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9e307aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZS5kZWZhdWx0PXQsZX1mdW5jdGlvbiB4KHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX19LCJuL21VIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89TWF0aC5hdGFuaCxpPU1hdGgubG9nO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6IShvJiYxL28oLTApPDApfSx7YXRhbmg6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PSh0PSt0KT90OmkoKDErdCkvKDEtdCkpLzJ9fSl9LG5vR286ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlZwSVQiKTt0LmV4cG9ydHM9cigibmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZyIsRnVuY3Rpb24udG9TdHJpbmcpfSxudE9VOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigicnBOayIpLkl0ZXJhdG9yUHJvdG90eXBlLG89bigiZkhNWSIpLGk9bigiWEd3QyIpLGE9bigiMUU1eiIpLGM9bigiUDR5MSIpLHU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcz1lKyIgSXRlcmF0b3IiO3JldHVybiB0LnByb3RvdHlwZT1vKHIse25leHQ6aSgxLG4pfSksYSh0LHMsITEsITApLGNbc109dSx0fX0sb1Z1WDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlJLM3QiKSxpPW4oIi9HcVUiKSxhPW4oInN3RkwiKSxjPVtdLmpvaW4sdT1vIT1PYmplY3Qscz1hKCJqb2luIiwiLCIpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDp1fHxzfSx7am9pbjpmdW5jdGlvbih0KXtyZXR1cm4gYy5jYWxsKGkodGhpcyksdm9pZCAwPT09dD8iLCI6dCl9fSl9LHBEUXE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJJOHZoIiksaT1uKCJwcEdCIiksYT1uKCJVTVNRIiksYz1uKCJld3ZXIiksdT1uKCJaZkR2Iikscz1uKCJoQmpOIiksZj1uKCJIZDVmIiksbD1NYXRoLm1heCxwPU1hdGgubWluO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohZigic3BsaWNlIil9LHtzcGxpY2U6ZnVuY3Rpb24odCxlKXt2YXIgbixyLGYsaCx2LGQsZz1jKHRoaXMpLHk9YShnLmxlbmd0aCksYj1vKHQseSksbT1hcmd1bWVudHMubGVuZ3RoO2lmKDA9PT1tP249cj0wOjE9PT1tPyhuPTAscj15LWIpOihuPW0tMixyPXAobChpKGUpLDApLHktYikpLHkrbi1yPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgbGVuZ3Q="
}

Changelog:

{
    "2019.12.03 19:45": "base64:Iil8fGkobiwibmFtZSIsZSksbChuKS5zb3VyY2U9cC5qb2luKCJzdHJpbmciPT10eXBlb2YgZT9lOiIiKSksdCE9PXI/KHU/IWYmJnRbZV0mJihzPSEwKTpkZWxldGUgdFtlXSxzP3RbZV09bjppKHQsZSxuKSk6cz90W2VdPW46YyhlLG4pfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJmYodGhpcykuc291cmNlfHx1LmNhbGwodGhpcyl9KSl9LGNEa2U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oIkJYL2IiKS5mO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe3JldHVybiFPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygxKX0pKX0se2dldE93blByb3BlcnR5TmFtZXM6aX0pfSxjVllIOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJoaDF2Iiksbz1uKCIwcnZyIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxhO3JldHVybiBvJiYiZnVuY3Rpb24iPT10eXBlb2YoaT1lLmNvbnN0cnVjdG9yKSYmaSE9PW4mJnIoYT1pLnByb3RvdHlwZSkmJmEhPT1uLnByb3RvdHlwZSYmbyh0LGEpLHR9fSwiZEJnKyI6ZnVuY3Rpb24odCxlKXtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30sImRHL24iOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJRbzlsIiksbz1uKCJVVFZTIiksaT1uKCJ3RExvIiksYT1uKCJtL0w4IikuZjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9ci5TeW1ib2x8fChyLlN5bWJvbD17fSk7byhlLHQpfHxhKGUsdCx7dmFsdWU6aS5mKHQpfSl9fSwiZURsKyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sZUppUjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigianJVdiIpLGk9TWF0aC5leHA7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7dGFuaDpmdW5jdGlvbih0KXt2YXIgZT1vKHQ9K3QpLG49bygtdCk7cmV0dXJuIGU9PTEvMD8xOm49PTEvMD8tMTooZS1uKS8oaSh0KStpKC10KSl9fSl9LGVhanY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGguYXNpbmgsaT1NYXRoLmxvZyxhPU1hdGguc3FydDtyKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITAsZm9yY2VkOiEobyYmMS9vKDApPjApfSx7YXNpbmg6ZnVuY3Rpb24gdChlKXtyZXR1cm4gaXNGaW5pdGUoZT0rZSkmJjAhPWU/ZTwwPy10KC1lKTppKGUrYShlKmUrMSkpOmV9fSl9LGVvTDg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImc2di8iKTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IW8sc2hhbTohb30se2RlZmluZVByb3BlcnR5Om4oIm0vTDgiKS5mfSl9LGV3dlc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkhZQUYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChyKHQpKX19LGY1cDE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIm5vR28iKSxpPXIuV2Vha01hcDt0LmV4cG9ydHM9ImZ1bmN0aW9uIj09dHlwZW9mIGkmJi9uYXRpdmUgY29kZS8udGVzdChvLmNhbGwoaSkpfSxmSE1ZOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnbHJrIiksbz1uKCJOK2cwIiksaT1uKCJlRGwrIiksYT1uKCIwQksyIiksYz1uKCJHK1J4IiksdT1uKCJ6Qko0Iikscz1uKCI5M0kwIikoIklFX1BST1RPIiksZj1mdW5jdGlvbigpe30sbD1mdW5jdGlvbigpe3ZhciB0LGU9dSgiaWZyYW1lIiksbj1pLmxlbmd0aDtmb3IoZS5zdHlsZS5kaXNwbGF5PSJub25lIixjLmFwcGVuZENoaWxkKGUpLGUuc3JjPVN0cmluZygiamF2YXNjcmlwdDoiKSwodD1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSx0LndyaXRlKCI8c2NyaXB0PmRvY3VtZW50LkY9T2JqZWN0PFwvc2NyaXB0PiIpLHQuY2xvc2UoKSxsPXQuRjtuLS07KWRlbGV0ZSBsLnByb3RvdHlwZVtpW25dXTtyZXR1cm4gbCgpfTt0LmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbnVsbCE9PXQ/KGYucHJvdG90eXBlPXIodCksbj1uZXcgZixmLnByb3RvdHlwZT1udWxsLG5bc109dCk6bj1sKCksdm9pZCAwPT09ZT9uOm8obixlKX0sYVtzXT0hMH0sZmJDVzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oInR5Y1IiKS5maW5kLGk9bigiUk5JcyIpLGE9ITA7ImZpbmQiaW5bXSYmQXJyYXkoMSkuZmluZCgoZnVuY3Rpb24oKXthPSExfSkpLHIoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDphfSx7ZmluZDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLGkoImZpbmQiKX0sZmRBeTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIm50T1UiKSxpPW4oIjRXT0QiKSxhPW4oIjBydnIiKSxjPW4oIjFFNXoiKSx1PW4oIlgyVSsiKSxzPW4oImJ1c0UiKSxmPW4oInRpS3AiKSxsPW4oInhEQlIiKSxwPW4oIlA0eTEiKSxoPW4oInJwTmsiKSx2PWguSXRlcmF0b3JQcm90b3R5cGUsZD1oLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMsZz1mKCJpdGVyYXRvciIpLHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGYsaCxiLG0pe28obixlLGYpO3ZhciBrLF8sdyx4PWZ1bmN0aW9uKHQpe2lmKHQ9PT1oJiZJKXJldHVybiBJO2lmKCFkJiZ0IGluIE8pcmV0dXJuIE9bdF07c3dpdGNoKHQpe2Nhc2Uia2V5cyI6Y2FzZSJ2YWx1ZXMiOmNhc2UiZW50cmllcyI6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzKX19LFM9ZSsiIEl0ZXJhdG9yIixFPSExLE89dC5wcm90b3R5cGUsVD1PW2ddfHxPWyJAQGl0ZXJhdG9yIl18fGgmJk9baF0sST0hZCYmVHx8eChoKSxqPSJBcnJheSI9PWUmJk8uZW50cmllc3x8VDtpZihqJiYoaz1pKGouY2FsbChuZXcgdCkpLHYhPT1PYmplY3QucHJvdG90eXBlJiZrLm5leHQmJihsfHxpKGspPT09dnx8KGE/YShrLHYpOiJmdW5jdGlvbiIhPXR5cGVvZiBrW2ddJiZ1KGssZyx5KSksYyhrLFMsITAsITApLGwmJihwW1NdPXkpKSksInZhbHVlcyI9PWgmJlQmJiJ2YWx1ZXMiIT09VC5uYW1lJiYoRT0hMCxJPWZ1bmN0aW9uKCl7cmV0dXJuIFQuY2FsbCh0aGlzKX0pLGwmJiFtfHxPW2ddPT09SXx8dShPLGcsSSkscFtlXT1JLGgpaWYoXz17dmFsdWVzOngoInZhbHVlcyIpLGtleXM6Yj9JOngoImtleXMiKSxlbnRyaWVzOngoImVudHJpZXMiKX0sbSlmb3IodyBpbiBfKSFkJiYhRSYmdyBpbiBPfHxzKE8sdyxfW3ddKTtlbHNlIHIoe3RhcmdldDplLHByb3RvOiEwLGZvcmNlZDpkfHxFfSxfKTtyZXR1cm4gX319LGZ0S2c6ZnVuY3Rpb24odCxlLG4pe24oImJycDIiKSxuKCI5TFBqIiksbigick16NyIpLG4oIkRRTmEiKSxuKCI3K3pzIik7dmFyIHI9bigiUW85bCIpO3QuZXhwb3J0cz1yLkRhdGV9LCJnNnYvIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpO3QuZXhwb3J0cz0hcigoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sZ09DYjpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJyZXBsYWNlIil9LGdYSUs6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgidG9QcmltaXRpdmUiKX0sZ2JpVDpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJ1bnNjb3BhYmxlcyIpfSxnZFZsOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZXd2VyIpLG89bigiSTh2aCIpLGk9bigiVU1TUSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9cih0aGlzKSxuPWkoZS5sZW5ndGgpLGE9YXJndW1lbnRzLmxlbmd0aCxjPW8oYT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsbiksdT1hPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxzPXZvaWQgMD09PXU/bjpvKHUsbik7cz5jOyllW2MrK109dDtyZXR1cm4gZX19LGdscms6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImhoMXYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIXIodCkpdGhyb3cgVHlwZUVycm9yKFN0cmluZyh0KSsiIGlzIG5vdCBhbiBvYmplY3QiKTtyZXR1cm4gdH19LGhCak46ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJ3RTZ2Iiksbz1uKCJtL0w4IiksaT1uKCJYR3dDIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1yKGUpO2EgaW4gdD9vLmYodCxhLGkoMCxuKSk6dFthXT1ufX0saEJ5UTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjE0U2wiKSxvPW4oImdscmsiKSxpPW4oIkhZQUYiKSxhPW4oIkVwOUkiKSxjPW4oIkZNTk0iKTtyKCJzZWFyY2giLDEsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bZnVuY3Rpb24oZSl7dmFyIG49aSh0aGlzKSxyPW51bGw9PWU/dm9pZCAwOmVbdF07cmV0dXJuIHZvaWQgMCE9PXI/ci5jYWxsKGUsbik6bmV3IFJlZ0V4cChlKVt0XShTdHJpbmcobikpfSxmdW5jdGlvbih0KXt2YXIgcj1uKGUsdCx0aGlzKTtpZihyLmRvbmUpcmV0dXJuIHIudmFsdWU7dmFyIGk9byh0KSx1PVN0cmluZyh0aGlzKSxzPWkubGFzdEluZGV4O2EocywwKXx8KGkubGFzdEluZGV4PTApO3ZhciBmPWMoaSx1KTtyZXR1cm4gYShpLmxhc3RJbmRleCxzKXx8KGkubGFzdEluZGV4PXMpLG51bGw9PT1mPy0xOmYuaW5kZXh9XX0pKX0sImhOL2ciOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4oIjBUV3AiKX0saFhwTzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSFlBRiIpLG89LyIvZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4saSl7dmFyIGE9U3RyaW5nKHIodCkpLGM9IjwiK2U7cmV0dXJuIiIhPT1uJiYoYys9IiAiK24rJz0iJytTdHJpbmcoaSkucmVwbGFjZShvLCImcXVvdDsiKSsnIicpLGMrIj4iK2ErIjwvIitlKyI+In19LGhoMXY6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0P251bGwhPT10OiJmdW5jdGlvbiI9PXR5cGVvZiB0fX0saTZRRjpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se2lzSW50ZWdlcjpuKCJYb2w4Iil9KX0saW5sQTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlVNU1EiKSxpPW4oIldqUmIiKSxhPW4oIkhZQUYiKSxjPW4oInF4UFoiKSx1PSIiLmVuZHNXaXRoLHM9TWF0aC5taW47cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohYygiZW5kc1dpdGgiKX0se2VuZHNXaXRoOmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyhhKHRoaXMpKTtpKHQpO3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLHI9byhlLmxlbmd0aCksYz12b2lkIDA9PT1uP3I6cyhvKG4pLHIpLGY9U3RyaW5nKHQpO3JldHVybiB1P3UuY2FsbChlLGYsYyk6ZS5zbGljZShjLWYubGVuZ3RoLGMpPT09Zn19KX0saXFXVzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlpVZDgiKS5jaGFyQXQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZSsobj9yKHQsZSkubGVuZ3RoOjEpfX0sanJVdjpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguZXhwbTEscj1NYXRoLmV4cDt0LmV4cG9ydHM9IW58fG4oMTApPjIyMDI1LjQ2NTc5NDgwNjcxOHx8bigxMCk8MjIwMjUuNDY1Nzk0ODA2NzE4fHwtMmUtMTchPW4oLTJlLTE3KT9mdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6dD4tMWUtNiYmdDwxZS02P3QrdCp0LzI6cih0KS0xfTpufSxqdDJGOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoIm1hdGNoQWxsIil9LGtOY1U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGgubG9nLGk9TWF0aC5MTjI7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7bG9nMjpmdW5jdGlvbih0KXtyZXR1cm4gbyh0KS9pfX0pfSxrT09sOmZ1bmN0aW9uKHQsZSl7dmFyIG49MCxyPU1hdGgucmFuZG9tKCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJTeW1ib2woIitTdHJpbmcodm9pZCAwPT09dD8iIjp0KSsiKV8iKygrK24rcikudG9TdHJpbmcoMzYpfX0sa1NrbzpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se2lzTmFOOmZ1bmN0aW9uKHQpe3JldHVybiB0IT10fX0pfSxrbU1WOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbyxpPW4oInJXMHQiKSxhPVJlZ0V4cC5wcm90b3R5cGUuZXhlYyxjPVN0cmluZy5wcm90b3R5cGUucmVwbGFjZSx1PWEscz0obz0vYiovZyxhLmNhbGwocj0vYS8sImEiKSxhLmNhbGwobywiYSIpLDAhPT1yLmxhc3RJbmRleHx8MCE9PW8ubGFzdEluZGV4KSxmPXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoc3x8ZikmJih1PWZ1bmN0aW9uKHQpe3ZhciBlLG4scixvLHU9dGhpcztyZXR1cm4gZiYmKG49bmV3IFJlZ0V4cCgiXiIrdS5zb3VyY2UrIiQoPyFcXHMpIixpLmNhbGwodSkpKSxzJiYoZT11Lmxhc3RJbmRleCkscj1hLmNhbGwodSx0KSxzJiZyJiYodS5sYXN0SW5kZXg9dS5nbG9iYWw/ci5pbmRleCtyWzBdLmxlbmd0aDplKSxmJiZyJiZyLmxlbmd0aD4xJiZjLmNhbGwoclswXSxuLChmdW5jdGlvbigpe2ZvcihvPTE7bzxhcmd1bWVudHMubGVuZ3RoLTI7bysrKXZvaWQgMD09PWFyZ3VtZW50c1tvXSYmKHJbb109dm9pZCAwKX0pKSxyfSksdC5leHBvcnRzPXV9LGwyZEs6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImZvbnRjb2xvciIpfSx7Zm9udGNvbG9yOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImZvbnQiLCJjb2xvciIsdCl9fSl9LGxFb3U6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgidG9TdHJpbmdUYWciKX0sbE1xNTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpLG89LyN8XC5wcm90b3R5cGVcLi8saT1mdW5jdGlvbih0LGUpe3ZhciBuPWNbYSh0KV07cmV0dXJuIG49PXN8fG4hPXUmJigiZnVuY3Rpb24iPT10eXBlb2YgZT9yKGUpOiEhZSl9LGE9aS5ub3JtYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KS5yZXBsYWNlKG8sIi4iKS50b0xvd2VyQ2FzZSgpfSxjPWkuZGF0YT17fSx1PWkuTkFUSVZFPSJOIixzPWkuUE9MWUZJTEw9IlAiO3QuZXhwb3J0cz1pfSxsczgyOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1mdW5jdGlvbih0KXsidXNlIHN0cmljdCI7dmFyIGUsbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGk9by5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLGE9by5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixjPW8udG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiB1KHQsZSxuLHIpe3ZhciBvPU9iamVjdC5jcmVhdGUoKGUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgZD9lOmQpLnByb3RvdHlwZSksaT1uZXcgVChyfHxbXSk7cmV0dXJuIG8uX2ludm9rZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9ZjtyZXR1cm4gZnVuY3Rpb24obyxpKXtpZihyPT09cCl0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihyPT09aCl7aWYoInRocm93Ij09PW8pdGhyb3cgaTtyZXR1cm4gaigpfWZvcihuLm1ldGhvZD1vLG4uYXJnPWk7Oyl7dmFyIGE9bi5kZWxlZ2F0ZTtpZihhKXt2YXIgYz1TKGEsbik7aWYoYyl7aWYoYz09PXYpY29udGludWU7cmV0dXJuIGN9fWlmKCJuZXh0Ij09PW4ubWV0aG9kKW4uc2VudD1uLl9zZW50PW4uYXJnO2Vsc2UgaWYoInRocm93Ij09PW4ubWV0aG9kKXtpZihyPT09Zil0aHJvdyByPWgsbi5hcmc7bi5kaXNwYXRjaEV4Y2VwdGlvbihuLmFyZyl9ZWxzZSJyZXR1cm4iPT09bi5tZXRob2QmJm4uYWJydXB0KCJyZXR1cm4iLG4uYXJnKTtyPXA7dmFyIHU9cyh0LGUsbik7aWYoIm5vcm1hbCI9PT11LnR5cGUpe2lmKHI9bi5kb25lP2g6bCx1LmFyZz09PXYpY29udGludWU7cmV0dXJue3ZhbHVlOnUuYXJnLGRvbmU6bi5kb25lfX0idGhyb3ciPT09dS50eXBlJiYocj1oLG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9dS5hcmcpfX19KHQsbixpKSxvfWZ1bmN0aW9uIHModCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHIpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnJ9fX10LndyYXA9dTt2YXIgZj0ic3VzcGVuZGVkU3RhcnQiLGw9InN1c3BlbmRlZFlpZWxkIixwPSJleGVjdXRpbmciLGg9ImNvbXBsZXRlZCIsdj17fTtmdW5jdGlvbiBkKCl7fWZ1bmN0aW9uIGcoKXt9ZnVuY3Rpb24geSgpe312YXIgYj17fTtiW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3ZhciBtPU9iamVjdC5nZXRQcm90b3R5cGVPZixrPW0mJm0obShJKFtdKSkpO2smJmshPT1uJiZyLmNhbGwoayxpKSYmKGI9ayk7dmFyIF89eS5wcm90b3R5cGU9ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShiKTtmdW5jdGlvbiB3KHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9fSkpfWZ1bmN0aW9uIHgodCl7dmFyIGU7dGhpcy5faW52b2tlPWZ1bmN0aW9uKG4sbyl7ZnVuY3Rpb24gaSgpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxpKXshZnVuY3Rpb24gZShuLG8saSxhKXt2YXIgYz1zKHRbbl0sdCxvKTtpZigidGhyb3ciIT09Yy50eXBlKXt2YXIgdT1jLmFyZyxmPXUudmFsdWU7cmV0dXJuIGYmJiJvYmplY3QiPT10eXBlb2YgZiYmci5jYWxsKGYsIl9fYXdhaXQiKT9Qcm9taXNlLnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtlKCJuZXh0Iix0LGksYSl9KSwoZnVuY3Rpb24odCl7ZSgidGhyb3ciLHQsaSxhKX0pKTpQcm9taXNlLnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24odCl7dS52YWx1ZT10LGkodSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGUoInRocm93Iix0LGksYSl9KSl9YShjLmFyZyl9KG4sbyxlLGkpfSkpfXJldHVybiBlPWU/ZS50aGVuKGksaSk6aSgpfX1mdW5jdGlvbiBTKHQsbil7dmFyIHI9dC5pdGVyYXRvcltuLm1ldGhvZF07aWYocj09PWUpe2lmKG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09bi5tZXRob2Qpe2lmKHQuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9ZSxTKHQsbiksInRocm93Ij09PW4ubWV0aG9kKSlyZXR1cm4gdjtuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2QiKX1yZXR1cm4gdn12YXIgbz1zKHIsdC5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PW8udHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1vLmFyZyxuLmRlbGVnYXRlPW51bGwsdjt2YXIgaT1vLmFyZztyZXR1cm4gaT9pLmRvbmU/KG5bdC5yZXN1bHROYW1lXT1pLnZhbHVlLG4ubmV4dD10Lm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz1lKSxuLmRlbGVnYXRlPW51bGwsdik6aToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCx2KX1mdW5jdGlvbiBFKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIE8odCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIFQodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChFLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIEkodCl7aWYodCl7dmFyIG49dFtpXTtpZihuKXJldHVybiBuLmNhbGwodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQubmV4dClyZXR1cm4gdDtpZighaXNOYU4odC5sZW5ndGgpKXt2YXIgbz0tMSxhPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzx0Lmxlbmd0aDspaWYoci5jYWxsKHQsbykpcmV0dXJuIG4udmFsdWU9dFtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT1lLG4uZG9uZT0hMCxufTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0Omp9fWZ1bmN0aW9uIGooKXtyZXR1cm57dmFsdWU6ZSxkb25lOiEwfX1yZXR1cm4gZy5wcm90b3R5cGU9Xy5jb25zdHJ1Y3Rvcj15LHkuY29uc3RydWN0b3I9Zyx5W2NdPWcuZGlzcGxheU5hbWU9IkdlbmVyYXRvckZ1bmN0aW9uIix0LmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PWd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LHQubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHkpOih0Ll9fcHJvdG9fXz15LGMgaW4gdHx8KHRbY109IkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoXyksdH0sdC5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sdyh4LnByb3RvdHlwZSkseC5wcm90b3R5cGVbYV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdC5Bc3luY0l0ZXJhdG9yPXgsdC5hc3luYz1mdW5jdGlvbihlLG4scixvKXt2YXIgaT1uZXcgeCh1KGUsbixyLG8pKTtyZXR1cm4gdC5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2k6aS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmkubmV4dCgpfSkpfSx3KF8pLF9bY109IkdlbmVyYXRvciIsX1tpXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxfLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9LHQua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2gobik7cmV0dXJuIGUucmV2ZXJzZSgpLGZ1bmN0aW9uIG4oKXtmb3IoO2UubGVuZ3RoOyl7dmFyIHI9ZS5wb3AoKTtpZihyIGluIHQpcmV0dXJuIG4udmFsdWU9cixuLmRvbmU9ITEsbn1yZXR1cm4gbi5kb25lPSEwLG59fSx0LnZhbHVlcz1JLFQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpULHJlc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PWUsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9ZSx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChPKSwhdClmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPWUpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7aWYodGhpcy5kb25lKXRocm93IHQ7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIGMudHlwZT0idGhyb3ciLGMuYXJnPXQsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz1lKSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLGM9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgdT1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxzPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYodSYmcyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYodSl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighcyl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHYpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksdn0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxPKG4pLHZ9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7TyhuKX1yZXR1cm4gb319dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOkkodCkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz1lKSx2fX0sdH0odC5leHBvcnRzKTt0cnl7cmVnZW5lcmF0b3JSdW50aW1lPXJ9Y2F0Y2gobyl7RnVuY3Rpb24oInIiLCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByIikocil9fSwibS9MOCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImc2di8iKSxvPW4oIkRQc3giKSxpPW4oImdscmsiKSxhPW4oIndFNnYiKSxjPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmY9cj9jOmZ1bmN0aW9uKHQsZSxuKXtpZihpKHQpLGU9YShlLCEwKSxpKG4pLG8pdHJ5e3JldHVybiBjKHQsZSxuKX1jYXRjaChyKXt9aWYoImdldCJpbiBufHwic2V0ImluIG4pdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpO3JldHVybiJ2YWx1ZSJpbiBuJiYodFtlXT1uLnZhbHVlKSx0fX0sbTkybjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZ2xyayIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixvKXt0cnl7cmV0dXJuIG8/ZShyKG4pWzBdLG5bMV0pOmUobil9Y2F0Y2goYSl7dmFyIGk9dC5yZXR1cm47dGhyb3cgdm9pZCAwIT09aSYmcihpLmNhbGwodCkpLGF9fX0sbVJINjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgibGluayIpfSx7bGluazpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLCJhIiwiaHJlZiIsdCl9fSl9LG1SSXE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbigiSDBwYiIpLG4oIndMWW4iKSxuKCJzTUJPIiksbigidFc1eSIpLG4oInVMOFciKSxuKCJlb0w4IiksbigiSFJ4VSIpLG4oIjVEbVciKSxuKCJOQkFTIiksbigidGt0byIpLG4oImNEa2UiKSxuKCIzS2dWIiksbigicjVPZyIpLG4oInp1aFciKSxuKCI0aDBZIiksbigiNUQ1byIpLG4oInlRWW4iKSxuKCJ6S1plIiksbigiS3hsZCIpLG4oIkV4b0MiKSxuKCIwN2Q3IiksbigibWE5SSIpLG4oIkozMFgiKSxuKCJwakR2IiksbigiWGUzTCIpLG4oIm9WdVgiKSxuKCIrMm9QIiksbigicERRcSIpLG4oIlRvSnkiKSxuKCJRV0JsIiksbigiMkIxUiIpLG4oIlRlUUYiKSxuKCJSZnh6IiksbigicGlNYiIpLG4oIkU5WEQiKSxuKCI5TjI5IiksbigieVhWMyIpLG4oInVxWGMiKSxuKCJxSFQrIiksbigieXltZSIpLG4oImZiQ1ciKSxuKCJ4MEFHIiksbigiNG1EbSIpLG4oIjl0Yi8iKSxuKCIyQStkIiksbigiU1lvciIpLG4oIlBLUGsiKSxuKCI5Yko3IiksbigiaW5sQSIpLG4oIkpUSmciKSxuKCJPTTlaIiksbigiTEtCeCIpLG4oIkdLVlUiKSxuKCJFNU5NIiksbigiQk5NdCIpLG4oInpIRnUiKSxuKCJ4ODN3IiksbigibDJkSyIpLG4oIkdSUEYiKSxuKCJ4ZEJaIiksbigibVJINiIpLG4oInlXbzIiKSxuKCJJeFhSIiksbigiVEZQVCIpLG4oIlprOFgiKSxuKCJSbTFTIiksbigiVXhsQyIpLG4oImhCeVEiKSxuKCJFblp5IiksbigiNGw2MyIpLG4oInJOaGwiKSxuKCI3c2JEIiksbigiNmhwbiIpLG4oImZ0S2ciKSxuKCJLdjlsIiksbigiVHNrcSIpLG4oIkVORjkiKSxuKCJZR0s0IiksbigiRlp0UCIpLG4oIjNiQloiKSxuKCI1cytuIiksbigiREVmdSIpLG4oImxzODIiKX0sbWE5STpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oIjZMV0EiKSxhPW4oImhoMXYiKSxjPW4oImV3dlciKSx1PW4oIlVNU1EiKSxzPW4oImhCak4iKSxmPW4oIlpmRHYiKSxsPW4oIkhkNWYiKSxwPW4oInRpS3AiKSgiaXNDb25jYXRTcHJlYWRhYmxlIiksaD0hbygoZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdFtwXT0hMSx0LmNvbmNhdCgpWzBdIT09dH0pKSx2PWwoImNvbmNhdCIpLGQ9ZnVuY3Rpb24odCl7aWYoIWEodCkpcmV0dXJuITE7dmFyIGU9dFtwXTtyZXR1cm4gdm9pZCAwIT09ZT8hIWU6aSh0KX07cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFofHwhdn0se2NvbmNhdDpmdW5jdGlvbih0KXt2YXIgZSxuLHIsbyxpLGE9Yyh0aGlzKSxsPWYoYSwwKSxwPTA7Zm9yKGU9LTEscj1hcmd1bWVudHMubGVuZ3RoO2U8cjtlKyspaWYoZChpPS0xPT09ZT9hOmFyZ3VtZW50c1tlXSkpe2lmKHArKG89dShpLmxlbmd0aCkpPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtmb3Iobj0wO248bztuKysscCsrKW4gaW4gaSYmcyhsLHAsaVtuXSl9ZWxzZXtpZihwPj05MDA3MTk5MjU0NzQwOTkxKXRocm93IFR5cGVFcnJvcigiTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIik7cyhsLHArKyxpKX1yZXR1cm4gbC5sZW5ndGg9cCxsfX0pfSxtclNHOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJfX2V4dGVuZHMiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLCJfX2Fzc2lnbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsIl9fcmVzdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSksbi5kKGUsIl9fZGVjb3JhdGUiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLCJfX3BhcmFtIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKSxuLmQoZSwiX19tZXRhZGF0YSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSksbi5kKGUsIl9fYXdhaXRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKGUsIl9fZ2VuZXJhdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKSxuLmQoZSwiX19leHBvcnRTdGFyIiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKSxuLmQoZSwiX192YWx1ZXMiLChmdW5jdGlvbigpe3JldHVybiBofSkpLG4uZChlLCJfX3JlYWQiLChmdW5jdGlvbigpe3JldHVybiB2fSkpLG4uZChlLCJfX3NwcmVhZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSksbi5kKGUsIl9fc3ByZWFkQXJyYXlzIiwoZnVuY3Rpb24oKXtyZXR1cm4gZ30pKSxuLmQoZSwiX19hd2FpdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSksbi5kKGUsIl9fYXN5bmNHZW5lcmF0b3IiLChmdW5jdGlvbigpe3JldHVybiBifSkpLG4uZChlLCJfX2FzeW5jRGVsZWdhdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gbX0pKSxuLmQoZSwiX19hc3luY1ZhbHVlcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGt9KSksbi5kKGUsIl9fbWFrZVRlbXBsYXRlT2JqZWN0IiwoZnVuY3Rpb24oKXtyZXR1cm4gX30pKSxuLmQoZSwiX19pbXBvcnRTdGFyIiwoZnVuY3Rpb24oKXtyZXR1cm4gd30pKSxuLmQoZSwiX19pbXBvcnREZWZhdWx0IiwoZnVuY3Rpb24oKXtyZXR1cm4geH0pKTt2YXIgcj1mdW5jdGlvbih0LGUpe3JldHVybihyPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfSkodCxlKX07ZnVuY3Rpb24gbyh0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9cih0LGUpLHQucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX12YXIgaT1mdW5jdGlvbigpe3JldHVybihpPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspZm9yKHZhciBvIGluIGU9YXJndW1lbnRzW25dKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG8pJiYodFtvXT1lW29dKTtyZXR1cm4gdH0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gYSh0LGUpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiZlLmluZGV4T2Yocik8MCYmKG5bcl09dFtyXSk7aWYobnVsbCE9dCYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtvPHIubGVuZ3RoO28rKyllLmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHQscltvXSkmJihuW3Jbb11dPXRbcltvXV0pfXJldHVybiBufWZ1bmN0aW9uIGModCxlLG4scil7dmFyIG8saT1hcmd1bWVudHMubGVuZ3RoLGE9aTwzP2U6bnVsbD09PXI/cj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbik6cjtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKWE9UmVmbGVjdC5kZWNvcmF0ZSh0LGUsbixyKTtlbHNlIGZvcih2YXIgYz10Lmxlbmd0aC0xO2M+PTA7Yy0tKShvPXRbY10pJiYoYT0oaTwzP28oYSk6aT4zP28oZSxuLGEpOm8oZSxuKSl8fGEpO3JldHVybiBpPjMmJmEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sYSksYX1mdW5jdGlvbiB1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4scil7ZShuLHIsdCl9fWZ1bmN0aW9uIHModCxlKXtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhKXJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKHQsZSl9ZnVuY3Rpb24gZih0LGUsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24obyxpKXtmdW5jdGlvbiBhKHQpe3RyeXt1KHIubmV4dCh0KSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gYyh0KXt0cnl7dShyLnRocm93KHQpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KHQpe3QuZG9uZT9vKHQudmFsdWUpOm5ldyBuKChmdW5jdGlvbihlKXtlKHQudmFsdWUpfSkpLnRoZW4oYSxjKX11KChyPXIuYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9ZnVuY3Rpb24gbCh0LGUpe3ZhciBuLHIsbyxpLGE9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGk9e25leHQ6YygwKSx0aHJvdzpjKDEpLHJldHVybjpjKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpO2Z1bmN0aW9uIGMoaSl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbihpKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2E7KXRyeXtpZihuPTEsciYmKG89MiZpWzBdP3IucmV0dXJuOmlbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixpWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihpPVsyJmlbMF0sby52YWx1ZV0pLGlbMF0pe2Nhc2UgMDpjYXNlIDE6bz1pO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTppWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKysscj1pWzFdLGk9WzBdO2NvbnRpbnVlO2Nhc2UgNzppPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEobz0obz1hLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKSYmKDY9PT1pWzBdfHwyPT09aVswXSkpe2E9MDtjb250aW51ZX1pZigzPT09aVswXSYmKCFvfHxpWzFdPm9bMF0mJmlbMV08b1szXSkpe2EubGFiZWw9aVsxXTticmVha31pZig2PT09aVswXSYmYS5sYWJlbDxvWzFdKXthLmxhYmVsPW9bMV0sbz1pO2JyZWFrfWlmKG8mJmEubGFiZWw8b1syXSl7YS5sYWJlbD1vWzJdLGEub3BzLnB1c2goaSk7YnJlYWt9b1syXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfWk9ZS5jYWxsKHQsYSl9Y2F0Y2goYyl7aT1bNixjXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmlbMF0pdGhyb3cgaVsxXTtyZXR1cm57dmFsdWU6aVswXT9pWzFdOnZvaWQgMCxkb25lOiEwfX0oW2ksY10pfX19ZnVuY3Rpb24gcCh0LGUpe2Zvcih2YXIgbiBpbiB0KWUuaGFzT3duUHJvcGVydHkobil8fChlW25dPXRbbl0pfWZ1bmN0aW9uIGgodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdLG49MDtyZXR1cm4gZT9lLmNhbGwodCk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbj49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbisrXSxkb25lOiF0fX19fWZ1bmN0aW9uIHYodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIHIsbyxpPW4uY2FsbCh0KSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKHI9aS5uZXh0KCkpLmRvbmU7KWEucHVzaChyLnZhbHVlKX1jYXRjaChjKXtvPXtlcnJvcjpjfX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYobj1pLnJldHVybikmJm4uY2FsbChpKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGF9ZnVuY3Rpb24gZCgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0PXQuY29uY2F0KHYoYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9ZnVuY3Rpb24gZygpe2Zvcih2YXIgdD0wLGU9MCxuPWFyZ3VtZW50cy5sZW5ndGg7ZTxuO2UrKyl0Kz1hcmd1bWVudHNbZV0ubGVuZ3RoO3ZhciByPUFycmF5KHQpLG89MDtmb3IoZT0wO2U8bjtlKyspZm9yKHZhciBpPWFyZ3VtZW50c1tlXSxhPTAsYz1pLmxlbmd0aDthPGM7YSsrLG8rKylyW29dPWlbYV07cmV0dXJuIHJ9ZnVuY3Rpb24geSh0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHk/KHRoaXMudj10LHRoaXMpOm5ldyB5KHQpfWZ1bmN0aW9uIGIodCxlLG4pe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgcixvPW4uYXBwbHkodCxlfHxbXSksaT1bXTtyZXR1cm4gcj17fSxhKCJuZXh0IiksYSgidGhyb3ciKSxhKCJyZXR1cm4iKSxyW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxyO2Z1bmN0aW9uIGEodCl7b1t0XSYmKHJbdF09ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLHIpe2kucHVzaChbdCxlLG4scl0pPjF8fGModCxlKX0pKX0pfWZ1bmN0aW9uIGModCxlKXt0cnl7KG49b1t0XShlKSkudmFsdWUgaW5zdGFuY2VvZiB5P1Byb21pc2UucmVzb2x2ZShuLnZhbHVlLnYpLnRoZW4odSxzKTpmKGlbMF1bMl0sbil9Y2F0Y2gocil7ZihpWzBdWzNdLHIpfXZhciBufWZ1bmN0aW9uIHUodCl7YygibmV4dCIsdCl9ZnVuY3Rpb24gcyh0KXtjKCJ0aHJvdyIsdCl9ZnVuY3Rpb24gZih0LGUpe3QoZSksaS5zaGlmdCgpLGkubGVuZ3RoJiZjKGlbMF1bMF0saVswXVsxXSl9fWZ1bmN0aW9uIG0odCl7dmFyIGUsbjtyZXR1cm4gZT17fSxyKCJuZXh0IikscigidGhyb3ciLChmdW5jdGlvbih0KXt0aHJvdyB0fSkpLHIoInJldHVybiIpLGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlO2Z1bmN0aW9uIHIocixvKXtlW3JdPXRbcl0/ZnVuY3Rpb24oZSl7cmV0dXJuKG49IW4pP3t2YWx1ZTp5KHRbcl0oZSkpLGRvbmU6InJldHVybiI9PT1yfTpvP28oZSk6ZX06b319ZnVuY3Rpb24gayh0KXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIGUsbj10W1N5bWJvbC5hc3luY0l0ZXJhdG9yXTtyZXR1cm4gbj9uLmNhbGwodCk6KHQ9aCh0KSxlPXt9LHIoIm5leHQiKSxyKCJ0aHJvdyIpLHIoInJldHVybiIpLGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUpO2Z1bmN0aW9uIHIobil7ZVtuXT10W25dJiZmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7IWZ1bmN0aW9uKHQsZSxuLHIpe1Byb21pc2UucmVzb2x2ZShyKS50aGVuKChmdW5jdGlvbihlKXt0KHt2YWx1ZTplLGRvbmU6bn0pfSksZSl9KHIsbywoZT10W25dKGUpKS5kb25lLGUudmFsdWUpfSkpfX19ZnVuY3Rpb24gXyh0LGUpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHk/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJhdyIse3ZhbHVlOmV9KTp0LnJhdz1lLHR9ZnVuY3Rpb24gdyh0KXtpZih0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9e307aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZS5kZWZhdWx0PXQsZX1mdW5jdGlvbiB4KHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX19LCJuL21VIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89TWF0aC5hdGFuaCxpPU1hdGgubG9nO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6IShvJiYxL28oLTApPDApfSx7YXRhbmg6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PSh0PSt0KT90OmkoKDErdCkvKDEtdCkpLzJ9fSl9LG5vR286ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlZwSVQiKTt0LmV4cG9ydHM9cigibmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZyIsRnVuY3Rpb24udG9TdHJpbmcpfSxudE9VOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigicnBOayIpLkl0ZXJhdG9yUHJvdG90eXBlLG89bigiZkhNWSIpLGk9bigiWEd3QyIpLGE9bigiMUU1eiIpLGM9bigiUDR5MSIpLHU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcz1lKyIgSXRlcmF0b3IiO3JldHVybiB0LnByb3RvdHlwZT1vKHIse25leHQ6aSgxLG4pfSksYSh0LHMsITEsITApLGNbc109dSx0fX0sb1Z1WDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlJLM3QiKSxpPW4oIi9HcVUiKSxhPW4oInN3RkwiKSxjPVtdLmpvaW4sdT1vIT1PYmplY3Qscz1hKCJqb2luIiwiLCIpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDp1fHxzfSx7am9pbjpmdW5jdGlvbih0KXtyZXR1cm4gYy5jYWxsKGkodGhpcyksdm9pZCAwPT09dD8iLCI6dCl9fSl9LHBEUXE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJJOHZoIiksaT1uKCJwcEdCIiksYT1uKCJVTVNRIiksYz1uKCJld3ZXIiksdT1uKCJaZkR2Iikscz1uKCJoQmpOIiksZj1uKCJIZDVmIiksbD1NYXRoLm1heCxwPU1hdGgubWluO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohZigic3BsaWNlIil9LHtzcGxpY2U6ZnVuY3Rpb24odCxlKXt2YXIgbixyLGYsaCx2LGQsZz1jKHRoaXMpLHk9YShnLmxlbmd0aCksYj1vKHQseSksbT1hcmd1bWVudHMubGVuZ3RoO2lmKDA9PT1tP249cj0wOjE9PT1tPyhuPTAscj15LWIpOihuPW0tMixyPXAobChpKGUpLDApLHktYikpLHkrbi1yPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgbGVuZ3Q="
}

github/deemru/w8io/169f3d6 
2.47 ms