3NCUbh7cABzRyEMEXAcGCAozSuxvUTf75ms · data · 2.7c767379.chunk.js_63
{
"2.7c767379.chunk.js_63": "base64:MF0pO2Nhc2UgMjpyZXR1cm4gbmV3IGUodFswXSx0WzFdKTtjYXNlIDM6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdLHRbM10pfXZhciBuPVtudWxsXTtyZXR1cm4gbi5wdXNoLmFwcGx5KG4sdCksbmV3KGMuYXBwbHkoZSxuKSl9dmFyIHU9ci5wcm90b3R5cGUscD1pKHModSk/dTpPYmplY3QucHJvdG90eXBlKSxkPUZ1bmN0aW9uLmFwcGx5LmNhbGwoZSxwLHQpO3JldHVybiBzKGQpP2Q6cH19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgpLGk9cigyKSxvPXIoMTIpLGE9cig4Mik7aShpLlMraS5GKnIoMTQpKGZ1bmN0aW9uKCl7UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShuLmYoe30sMSx7dmFsdWU6MX0pLDEse3ZhbHVlOjJ9KX0pLCJSZWZsZWN0Iix7ZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oZSx0LHIpe28oZSksdD1hKHQsITApLG8ocik7dHJ5e3JldHVybiBuLmYoZSx0LHIpLCEwfWNhdGNoKGkpe3JldHVybiExfX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMiksaT1yKDYxKS5mLG89cigxMik7bihuLlMsIlJlZmxlY3QiLHtkZWxldGVQcm9wZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciByPWkobyhlKSx0KTtyZXR1cm4hKHImJiFyLmNvbmZpZ3VyYWJsZSkmJmRlbGV0ZSBlW3RdfX0pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMiksaT1yKDEyKSxvPWZ1bmN0aW9uKGUpe3RoaXMuX3Q9aShlKSx0aGlzLl9pPTA7dmFyIHQscj10aGlzLl9rPVtdO2Zvcih0IGluIGUpci5wdXNoKHQpfTtyKDQzNCkobywiT2JqZWN0IixmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5faztkb3tpZih0aGlzLl9pPj10Lmxlbmd0aClyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXdoaWxlKCEoKGU9dFt0aGlzLl9pKytdKWluIHRoaXMuX3QpKTtyZXR1cm57dmFsdWU6ZSxkb25lOiExfX0pLG4obi5TLCJSZWZsZWN0Iix7ZW51bWVyYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbyhlKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjEpLGk9cig5OSksbz1yKDUwKSxhPXIoMikscz1yKDEzKSx1PXIoMTIpO2EoYS5TLCJSZWZsZWN0Iix7Z2V0OmZ1bmN0aW9uIGUodCxyKXt2YXIgYSxjLGY9YXJndW1lbnRzLmxlbmd0aDwzP3Q6YXJndW1lbnRzWzJdO3JldHVybiB1KHQpPT09Zj90W3JdOihhPW4uZih0LHIpKT9vKGEsInZhbHVlIik/YS52YWx1ZTp2b2lkIDAhPT1hLmdldD9hLmdldC5jYWxsKGYpOnZvaWQgMDpzKGM9aSh0KSk/ZShjLHIsZik6dm9pZCAwfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2MSksaT1yKDIpLG89cigxMik7aShpLlMsIlJlZmxlY3QiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5mKG8oZSksdCl9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIpLGk9cig5OSksbz1yKDEyKTtuKG4uUywiUmVmbGVjdCIse2dldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBpKG8oZSkpfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyKTtuKG4uUywiUmVmbGVjdCIse2hhczpmdW5jdGlvbihlLHQpe3JldHVybiB0IGluIGV9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIpLGk9cigxMiksbz1PYmplY3QuaXNFeHRlbnNpYmxlO24obi5TLCJSZWZsZWN0Iix7aXNFeHRlbnNpYmxlOmZ1bmN0aW9uKGUpe3JldHVybiBpKGUpLCFvfHxvKGUpfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyKTtuKG4uUywiUmVmbGVjdCIse293bktleXM6cig0NDkpfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIpLGk9cigxMiksbz1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7bihuLlMsIlJlZmxlY3QiLHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbihlKXtpKGUpO3RyeXtyZXR1cm4gbyYmbyhlKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI4KSxpPXIoNjEpLG89cig5OSksYT1yKDUwKSxzPXIoMiksdT1yKDkzKSxjPXIoMTIpLGY9cigxMyk7cyhzLlMsIlJlZmxlY3QiLHtzZXQ6ZnVuY3Rpb24gZSh0LHIscyl7dmFyIGwsaCxwPWFyZ3VtZW50cy5sZW5ndGg8ND90OmFyZ3VtZW50c1szXSxkPWkuZihjKHQpLHIpO2lmKCFkKXtpZihmKGg9byh0KSkpcmV0dXJuIGUoaCxyLHMscCk7ZD11KDApfWlmKGEoZCwidmFsdWUiKSl7aWYoITE9PT1kLndyaXRhYmxlfHwhZihwKSlyZXR1cm4hMTtpZihsPWkuZihwLHIpKXtpZihsLmdldHx8bC5zZXR8fCExPT09bC53cml0YWJsZSlyZXR1cm4hMTtsLnZhbHVlPXMsbi5mKHAscixsKX1lbHNlIG4uZihwLHIsdSgwLHMpKTtyZXR1cm4hMH1yZXR1cm4gdm9pZCAwIT09ZC5zZXQmJihkLnNldC5jYWxsKHAscyksITApfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyKSxpPXIoMjU2KTtpJiZuKG4uUywiUmVmbGVjdCIse3NldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUsdCl7aS5jaGVjayhlLHQpO3RyeXtyZXR1cm4gaS5zZXQoZSx0KSwhMH1jYXRjaChyKXtyZXR1cm4hMX19fSl9LGZ1bmN0aW9uKGUsdCxyKXtyKDg5NyksZS5leHBvcnRzPXIoMjcpLkFycmF5LmluY2x1ZGVzfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMiksaT1yKDE3OSkoITApO24obi5QLCJBcnJheSIse2luY2x1ZGVzOmZ1bmN0aW9uKGUpe3JldHVybiBpKHRoaXMsZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSkscigxMDApKCJpbmNsdWRlcyIpfSxmdW5jdGlvbihlLHQscil7cig4OTkpLGUuZXhwb3J0cz1yKDI3KS5BcnJheS5mbGF0TWFwfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMiksaT1yKDkwMCksbz1yKDM2KSxhPXIoMjMpLHM9cig1OSksdT1yKDQzNik7bihuLlAsIkFycmF5Iix7ZmxhdE1hcDpmdW5jdGlvbihlKXt2YXIgdCxyLG49byh0aGlzKTtyZXR1cm4gcyhlKSx0PWEobi5sZW5ndGgpLHI9dShuLDApLGkocixuLG4sdCwwLDEsZSxhcmd1bWVudHNbMV0pLHJ9fSkscigxMDApKCJmbGF0TWFwIil9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxODEpLGk9cigxMyksbz1yKDIzKSxhPXIoNTgpLHM9cigyMSkoImlzQ29uY2F0U3ByZWFkYWJsZSIpO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQscix1LGMsZixsLGgscCl7Zm9yKHZhciBkLHksZz1mLHY9MCxtPSEhaCYmYShoLHAsMyk7djxjOyl7aWYodiBpbiB1KXtpZihkPW0/bSh1W3ZdLHYscik6dVt2XSx5PSExLGkoZCkmJih5PXZvaWQgMCE9PSh5PWRbc10pPyEheTpuKGQpKSx5JiZsPjApZz1lKHQscixkLG8oZC5sZW5ndGgpLGcsbC0xKS0xO2Vsc2V7aWYoZz49OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBUeXBlRXJyb3IoKTt0W2ddPWR9ZysrfXYrK31yZXR1cm4gZ319LGZ1bmN0aW9uKGUsdCxyKXtyKDkwMiksZS5leHBvcnRzPXIoMjcpLlN0cmluZy5wYWRTdGFydH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIpLGk9cig0NTApLG89cigyNzMpLGE9L1ZlcnNpb25cLzEwXC5cZCsoXC5cZCspPyggTW9iaWxlXC9cdyspPyBTYWZhcmlcLy8udGVzdChvKTtuKG4uUCtuLkYqYSwiU3RyaW5nIix7cGFkU3RhcnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkodGhpcyxlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLCEwKX19KX0sZnVuY3Rpb24oZSx0LHIpe3IoOTA0KSxlLmV4cG9ydHM9cigyNykuU3RyaW5nLnBhZEVuZH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIpLGk9cig0NTApLG89cigyNzMpLGE9L1ZlcnNpb25cLzEwXC5cZCsoXC5cZCspPyggTW9iaWxlXC9cdyspPyBTYWZhcmlcLy8udGVzdChvKTtuKG4uUCtuLkYqYSwiU3RyaW5nIix7cGFkRW5kOmZ1bmN0aW9uKGUpe3JldHVybiBpKHRoaXMsZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwhMSl9fSl9LGZ1bmN0aW9uKGUsdCxyKXtyKDkwNiksZS5leHBvcnRzPXIoMjcpLlN0cmluZy50cmltTGVmdH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKDExMSkoInRyaW1MZWZ0IixmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLDEpfX0sInRyaW1TdGFydCIpfSxmdW5jdGlvbihlLHQscil7cig5MDgpLGUuZXhwb3J0cz1yKDI3KS5TdHJpbmcudHJpbVJpZ2h0fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IoMTExKSgidHJpbVJpZ2h0IixmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLDIpfX0sInRyaW1FbmQiKX0sZnVuY3Rpb24oZSx0LHIpe3IoOTEwKSxlLmV4cG9ydHM9cigyNTMpLmYoImFzeW5jSXRlcmF0b3IiKX0sZnVuY3Rpb24oZSx0LHIpe3IoNDIyKSgiYXN5bmNJdGVyYXRvciIpfSxmdW5jdGlvbihlLHQscil7cig5MTIpLGUuZXhwb3J0cz1yKDI3KS5PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yc30sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMiksaT1yKDQ0OSksbz1yKDUxKSxhPXIoNjEpLHM9cigyNjgpO24obi5TLCJPYmplY3QiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyLG49byhlKSx1PWEuZixjPWkobiksZj17fSxsPTA7Yy5sZW5ndGg+bDspdm9pZCAwIT09KHI9dShuLHQ9Y1tsKytdKSkmJnMoZix0LHIpO3JldHVybiBmfX0pfSxmdW5jdGlvbihlLHQscil7cig5MTQpLGUuZXhwb3J0cz1yKDI3KS5PYmplY3QudmFsdWVzfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyKSxpPXIoNDUxKSghMSk7bihuLlMsIk9iamVjdCIse3ZhbHVlczpmdW5jdGlvbihlKXtyZXR1cm4gaShlKX19KX0sZnVuY3Rpb24oZSx0LHIpe3IoOTE2KSxlLmV4cG9ydHM9cigyNykuT2JqZWN0LmVudHJpZXN9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIpLGk9cig0NTEpKCEwKTtuKG4uUywiT2JqZWN0Iix7ZW50cmllczpmdW5jdGlvbihlKXtyZXR1cm4gaShlKX19KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKDQ0Mykscig5MTgpLGUuZXhwb3J0cz1yKDI3KS5Qcm9taXNlLmZpbmFsbHl9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyKSxpPXIoMjcpLG89cigxNyksYT1yKDE0OSkscz1yKDQ0NSk7bihuLlArbi5SLCJQcm9taXNlIix7ZmluYWxseTpmdW5jdGlvbihlKXt2YXIgdD1hKHRoaXMsaS5Qcm9taXNlfHxvLlByb21pc2UpLHI9ImZ1bmN0aW9uIj09dHlwZW9mIGU7cmV0dXJuIHRoaXMudGhlbihyP2Z1bmN0aW9uKHIpe3JldHVybiBzKHQsZSgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KX06ZSxyP2Z1bmN0aW9uKHIpe3JldHVybiBzKHQsZSgpKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgcn0pfTplKX19KX0sZnVuY3Rpb24oZSx0LHIpe3IoOTIwKSxlLmV4cG9ydHM9cig0NTIpLmdsb2JhbH0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOTIxKTtuKG4uRyx7Z2xvYmFsOnIoMjc1KX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyNzUpLGk9cig0NTIpLG89cig5MjIpLGE9cig5MjQpLHM9cig5MzEpLHU9ZnVuY3Rpb24gZSh0LHIsdSl7dmFyIGMsZixsLGg9dCZlLkYscD10JmUuRyxkPXQmZS5TLHk9dCZlLlAsZz10JmUuQix2PXQmZS5XLG09cD9pOmlbcl18fChpW3JdPXt9KSxiPW0ucHJvdG90eXBlLF89cD9uOmQ/bltyXToobltyXXx8e30pLnByb3RvdHlwZTtmb3IoYyBpbiBwJiYodT1yKSx1KShmPSFoJiZfJiZ2b2lkIDAhPT1fW2NdKSYmcyhtLGMpfHwobD1mP19bY106dVtjXSxtW2NdPXAmJiJmdW5jdGlvbiIhPXR5cGVvZiBfW2NdP3VbY106ZyYmZj9vKGwsbik6diYmX1tjXT09bD9mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbih0LHIsbil7aWYodGhpcyBpbnN0YW5jZW9mIGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBlO2Nhc2UgMTpyZXR1cm4gbmV3IGUodCk7Y2FzZSAyOnJldHVybiBuZXcgZSh0LHIpfXJldHVybiBuZXcgZSh0LHIsbil9cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtyZXR1cm4gdC5wcm90b3R5cGU9ZS5wcm90b3R5cGUsdH0obCk6eSYmImZ1bmN0aW9uIj09dHlwZW9mIGw/byhGdW5jdGlvbi5jYWxsLGwpOmwseSYmKChtLnZpcnR1YWx8fChtLnZpcnR1YWw9e30pKVtjXT1sLHQmZS5SJiZiJiYhYltjXSYmYShiLGMsbCkpKX07dS5GPTEsdS5HPTIsdS5TPTQsdS5QPTgsdS5CPTE2LHUuVz0zMix1LlU9NjQsdS5SPTEyOCxlLmV4cG9ydHM9dX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOTIzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2lmKG4oZSksdm9pZCAwPT09dClyZXR1cm4gZTtzd2l0Y2gocil7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gZS5jYWxsKHQscil9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24ocixuKXtyZXR1cm4gZS5jYWxsKHQscixuKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihyLG4saSl7cmV0dXJuIGUuY2FsbCh0LHIsbixpKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IFR5cGVFcnJvcihlKyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig5MjUpLGk9cig5MzApO2UuZXhwb3J0cz1yKDI3Nyk/ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBuLmYoZSx0LGkoMSxyKSl9OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yLGV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig5MjYpLGk9cig5MjcpLG89cig5MjkpLGE9T2JqZWN0LmRlZmluZVByb3BlcnR5O3QuZj1yKDI3Nyk/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxyKXtpZihuKGUpLHQ9byh0LCEwKSxuKHIpLGkpdHJ5e3JldHVybiBhKGUsdCxyKX1jYXRjaChzKXt9aWYoImdldCJpbiByfHwic2V0ImluIHIpdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEiKTtyZXR1cm4idmFsdWUiaW4gciYmKGVbdF09ci52YWx1ZSksZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI3Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFuKGUpKXRocm93IFR5cGVFcnJvcihlKyIgaXMgbm90IGFuIG9iamVjdCEiKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9IXIoMjc3KSYmIXIoNDUzKShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkocig5MjgpKCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjc2KSxpPXIoMjc1KS5kb2N1bWVudCxvPW4oaSkmJm4oaS5jcmVhdGVFbGVtZW50KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8/aS5jcmVhdGVFbGVtZW50KGUpOnt9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjc2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighbihlKSlyZXR1cm4gZTt2YXIgcixpO2lmKHQmJiJmdW5jdGlvbiI9PXR5cGVvZihyPWUudG9TdHJpbmcpJiYhbihpPXIuY2FsbChlKSkpcmV0dXJuIGk7aWYoImZ1bmN0aW9uIj09dHlwZW9mKHI9ZS52YWx1ZU9mKSYmIW4oaT1yLmNhbGwoZSkpKXJldHVybiBpO2lmKCF0JiYiZnVuY3Rpb24iPT10eXBlb2Yocj1lLnRvU3RyaW5nKSYmIW4oaT1yLmNhbGwoZSkpKXJldHVybiBpO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybntlbnVtZXJhYmxlOiEoMSZlKSxjb25maWd1cmFibGU6ISgyJmUpLHdyaXRhYmxlOiEoNCZlKSx2YWx1ZTp0fX19LGZ1bmN0aW9uKGUsdCl7dmFyIHI9e30uaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuY2FsbChlLHQpfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24oZSl7dmFyIG49dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gYShlKXt0cnl7dShuLm5leHQoZSkpfWNhdGNoKHQpe28odCl9fWZ1bmN0aW9uIHMoZSl7dHJ5e3Uobi50aHJvdyhlKSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gdShlKXtlLmRvbmU/aShlLnZhbHVlKTpuZXcgcihmdW5jdGlvbih0KXt0KGUudmFsdWUpfSkudGhlbihhLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pfSxpPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYob1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvO2Z1bmN0aW9uIHMobyl7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBmdW5jdGlvbihvKXtpZihyKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2E7KXRyeXtpZihyPTEsbiYmKGk9MiZvWzBdP24ucmV0dXJuOm9bMF0/bi50aHJvd3x8KChpPW4ucmV0dXJuKSYmaS5jYWxsKG4pLDApOm4ubmV4dCkmJiEoaT1pLmNhbGwobixvWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gobj0wLGkmJihvPVsyJm9bMF0saS52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6aT1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKyssbj1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT0oaT1hLnRyeXMpLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKSYmKDY9PT1vWzBdfHwyPT09b1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFpfHxvWzFdPmlbMF0mJm9bMV08aVszXSkpe2EubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmYS5sYWJlbDxpWzFdKXthLmxhYmVsPWlbMV0saT1vO2JyZWFrfWlmKGkmJmEubGFiZWw8aVsyXSl7YS5sYWJlbD1pWzJdLGEub3BzLnB1c2gobyk7YnJlYWt9aVsyXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUsYSl9Y2F0Y2gocyl7bz1bNixzXSxuPTB9ZmluYWxseXtyPWk9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sc10pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1yKDkzMyksYT17U1RBVFVTOntTV19PSzozNjg2NCxTV19VU0VSX0NBTkNFTExFRDozNzEyMCxTV19DT05ESVRJT05TX05PVF9TQVRJU0ZJRUQ6MjcwMTMsU1dfQlVGRkVSX09WRVJGTE9XOjI3MDI0LFNXX0lOQ09SUkVDVF9QMV9QMjoyNzI3MCxTV19JTlNfTk9UX1NVUFBPUlRFRDoyNzkwNCxTV19DTEFfTk9UX1NVUFBPUlRFRDoyODE2MCxTV19TRUNVUklUWV9TVEFUVVNfTk9UX1NBVElTRklFRDoyNzAxMH0sU0VDUkVUOiJXQVZFUyIsUFVCTElDX0tFWV9MRU5HVEg6MzIsQUREUkVTU19MRU5HVEg6MzUsU1RBVFVTX0xFTkdUSDoyLFNJR05FRF9DT0RFUzp7T1JERVI6MjUyLFNPTUVfREFUQToyNTMsUkVRVUVTVDoyNTQsTUVTU0FHRToyNTV9LE1BWF9TSVpFOjEyOCxXQVZFU19QUkVDSVNJT046OCxNQUlOX05FVF9DT0RFOjg3LFZFUlNJT05TOltbMCw5LDZdLFswLDksN11dfSxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHQpe3ZvaWQgMD09PXQmJih0PWEuTUFJTl9ORVRfQ09ERSksdGhpcy5fdmVyc2lvbj1udWxsLHRoaXMudHJhbnNwb3J0PWUsdGhpcy5uZXR3b3JrQ29kZT10LHRoaXMuZGVjb3JhdGVDbGFzc0J5VHJhbnNwb3J0KCl9cmV0dXJuIHQucHJvdG90eXBlLmRlY29yYXRlQ2xhc3NCeVRyYW5zcG9ydD1mdW5jdGlvbigpe3RoaXMudHJhbnNwb3J0LmRlY29yYXRlQXBwQVBJTWV0aG9kcyh0aGlzLFsiZ2V0V2FsbGV0UHVibGljS2V5IiwiX3NpZ25EYXRhIiwiZ2V0VmVyc2lvbiJdLGEuU0VDUkVUKX0sdC5wcm90b3R5cGUuZ2V0V2FsbGV0UHVibGljS2V5PWZ1bmN0aW9uKGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPSExKSxuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBuLHMsdSxjLGYsbDtyZXR1cm4gaSh0aGlzLGZ1bmN0aW9uKGkpe3N3aXRjaChpLmxhYmVsKXtjYXNlIDA6cmV0dXJuIG49dC5zcGxpdFBhdGgoZSkscz1yPzEyODowLFs0LHRoaXMudHJhbnNwb3J0LnNlbmQoMTI4LDQscyx0aGlzLm5ldHdvcmtDb2RlLG4pXTtjYXNlIDE6cmV0dXJuIHU9aS5zZW50KCksYz1vLmJhc2U1OEVuY29kZSh1LnNsaWNlKDAsYS5QVUJMSUNfS0VZX0xFTkdUSCkpLGY9dS5zbGljZShhLlBVQkxJQ19LRVlfTEVOR1RILGEuUFVCTElDX0tFWV9MRU5HVEgrYS5BRERSRVNTX0xFTkdUSCkudG9TdHJpbmcoImFzY2lpIiksbD11LnNsaWNlKC1hLlNUQVRVU19MRU5HVEgpLnRvU3RyaW5nKCJoZXgiKSxbMix7cHVibGljS2V5OmMsYWRkcmVzczpmLHN0YXR1c0NvZGU6bH1dfX0pfSl9LHQucHJvdG90eXBlLnNpZ25UcmFuc2FjdGlvbj1mdW5jdGlvbihyLG8scyx1KXtyZXR1cm4gdm9pZCAwPT09dSYmKHU9Miksbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbixjLGYsbCxoO3JldHVybiBpKHRoaXMsZnVuY3Rpb24oaSl7c3dpdGNoKGkubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbj1zWzBdLGM9W24sdV0sWzQsdGhpcy5fdmVyc2lvbk51bSgpXTtjYXNlIDE6cmV0dXJuIGY9aS5zZW50KCksNCE9PW4/WzMsM106MCE9PWY/WzMsM106WzQsdGhpcy5zaWduU29tZURhdGEocixzKV07Y2FzZSAyOnJldHVyblsyLGkuc2VudCgpXTtjYXNlIDM6cmV0dXJuIGw9ZS5jb25jYXQoW3Quc3BsaXRQYXRoKHIpLGUuZnJvbShbbyxhLldBVkVTX1BSRUNJU0lPTl0pXSksWzQsdGhpcy5fZmlsbERhdGEobCxzLGMpXTtjYXNlIDQ6cmV0dXJuIGg9aS5zZW50KCksWzQsdGhpcy5fc2lnbkRhdGEoaCldO2Nhc2UgNTpyZXR1cm5bMixpLnNlbnQoKV19fSl9KX0sdC5wcm90b3R5cGUuc2lnbk9yZGVyPWZ1bmN0aW9uKHIsbyxzKXtyZXR1cm4gbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbix1O3JldHVybiBpKHRoaXMsZnVuY3Rpb24oaSl7c3dpdGNoKGkubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbj1lLmNvbmNhdChbdC5zcGxpdFBhdGgociksZS5mcm9tKFtvLGEuV0FWRVNfUFJFQ0lTSU9OLGEuU0lHTkVEX0NPREVTLk9SREVSXSldKSxbNCx0aGlzLl9maWxsRGF0YShuLHMpXTtjYXNlIDE6cmV0dXJuIHU9aS5zZW50KCksWzQsdGhpcy5fc2lnbkRhdGEodSldO2Nhc2UgMjpyZXR1cm5bMixpLnNlbnQoKV19fSl9KX0sdC5wcm90b3R5cGUuc2lnblNvbWVEYXRhPWZ1bmN0aW9uKHIsbyl7cmV0dXJuIG4odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG4scztyZXR1cm4gaSh0aGlzLGZ1bmN0aW9uKGkpe3N3aXRjaChpLmxhYmVsKXtjYXNlIDA6cmV0dXJuIG49ZS5jb25jYXQoW3Quc3BsaXRQYXRoKHIpLGUuZnJvbShbYS5XQVZFU19QUkVDSVNJT04sYS5XQVZFU19QUkVDSVNJT04sYS5TSUdORURfQ09ERVMuU09NRV9EQVRBXSldKSxbNCx0aGlzLl9maWxsRGF0YShuLG8pXTtjYXNlIDE6cmV0dXJuIHM9aS5zZW50KCksWzQsdGhpcy5fc2lnbkRhdGEocyldO2Nhc2UgMjpyZXR1cm5bMixpLnNlbnQoKV19fSl9KX0sdC5wcm90b3R5cGUuc2lnblJlcXVlc3Q9ZnVuY3Rpb24ocixvKXtyZXR1cm4gbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbixzO3JldHVybiBpKHRoaXMsZnVuY3Rpb24oaSl7c3dpdGNoKGkubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbj1lLmNvbmNhdChbdC5zcGxpdFBhdGgociksZS5mcm9tKFthLldBVkVTX1BSRUNJU0lPTixhLldBVkVTX1BSRUNJU0lPTixhLlNJR05FRF9DT0RFUy5SRVFVRVNUXSldKSxbNCx0aGlzLl9maWxsRGF0YShuLG8pXTtjYXNlIDE6cmV0dXJuIHM9aS5zZW50KCksWzQsdGhpcy5fc2lnbkRhdGEocyldO2Nhc2UgMjpyZXR1cm5bMixpLnNlbnQoKV19fSl9KX0sdC5wcm90b3R5cGUuc2lnbk1lc3NhZ2U9ZnVuY3Rpb24ocixvKXtyZXR1cm4gbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbixzO3JldHVybiBpKHRoaXMsZnVuY3Rpb24oaSl7c3dpdGNoKGkubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbj1lLmNvbmNhdChbdC5zcGxpdFBhdGgociksZS5mcm9tKFthLldBVkVTX1BSRUNJU0lPTixhLldBVkVTX1BSRUNJU0lPTixhLlNJR05FRF9DT0RFUy5NRVNTQUdFXSldKSxbNCx0aGlzLl9maWxsRGF0YShuLG8pXTtjYXNlIDE6cmV0dXJuIHM9aS5zZW50KCksWzQsdGhpcy5fc2lnbkRhdGEocyldO2Nhc2UgMjpyZXR1cm5bMixpLnNlbnQoKV19fSl9KX0sdC5wcm90b3R5cGUuZ2V0VmVyc2lvbj1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlLHIsbjtyZXR1cm4gaSh0aGlzLGZ1bmN0aW9uKGkpe3N3aXRjaChpLmxhYmVsKXtjYXNlIDA6dGhpcy5fdmVyc2lvbnx8KHRoaXMuX3ZlcnNpb249dGhpcy50cmFuc3BvcnQuc2VuZCgxMjgsNiwwLDApKSxpLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBpLnRyeXMucHVzaChbMSwzLCw0XSksWzQsdGhpcy5fdmVyc2lvbl07Y2FzZSAyOmlmKGU9aS5zZW50KCkscj10LmNoZWNrRXJyb3IoZS5zbGljZSgtMikpKXRocm93IHI7cmV0dXJuWzIsZS5zbGljZSgwLC0yKV07Y2FzZSAzOnRocm93IG49aS5zZW50KCksdGhpcy5fdmVyc2lvbj1udWxsLG47Y2FzZSA0OnJldHVyblsyXX19KX0pfSx0LnByb3RvdHlwZS5fdmVyc2lvbk51bT1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlO3JldHVybiBpKHRoaXMsZnVuY3Rpb24odCl7c3dpdGNoKHQubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldFZlcnNpb24oKV07Y2FzZSAxOnJldHVybiBlPXQuc2VudCgpLFsyLGEuVkVSU0lPTlMucmVkdWNlKGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gZS5zb21lKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHJbdF08ZX0pP246dH0sMCldfX0pfSl9LHQucHJvdG90eXBlLl9maWxsRGF0YT1mdW5jdGlvbih0LHIsbyl7cmV0dXJuIHZvaWQgMD09PW8mJihvPVswXSksbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gaSh0aGlzLGZ1bmN0aW9uKG4pe3N3aXRjaChuLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5fdmVyc2lvbk51bSgpXTtjYXNlIDE6c3dpdGNoKG4uc2VudCgpKXtjYXNlIDA6cmV0dXJuWzIsZS5jb25jYXQoW3Qscl0pXTtjYXNlIDE6ZGVmYXVsdDpyZXR1cm5bMixlLmNvbmNhdChbdCxlLmZyb20obykscl0pXX1yZXR1cm5bMl19fSl9KX0sdC5wcm90b3R5cGUuX3NpZ25EYXRhPWZ1bmN0aW9uKGUpe3JldHVybiBuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciByLG4scyx1LGMsZixsLGgscCxkO3JldHVybiBpKHRoaXMsZnVuY3Rpb24oaSl7c3dpdGNoKGkubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxlXTtjYXNlIDE6cj1pLnNlbnQoKSxuPWEuTUFYX1NJWkUtNSxzPXIubGVuZ3RoLHU9MCxpLmxhYmVsPTI7Y2FzZSAyOnJldHVybiBzPnU/KGY9TWF0aC5taW4ocy11LG4pLGg9KGw9cy11Pm4/MDoxMjgpP3RoaXMubmV0d29ya0NvZGU6MCxwPXIuc2xpY2UodSxmK3UpLHUrPWYsWzQsdGhpcy50cmFuc3BvcnQuc2VuZCgxMjgsMixsLGgscCldKTpbMyw0XTtjYXNlIDM6aWYoYz1pLnNlbnQoKSxkPXQuY2hlY2tFcnJvcihjLnNsaWNlKC0yKSkpdGhyb3cgZDtyZXR1cm5bMywyXTtjYXNlIDQ6cmV0dXJuWzIsby5iYXNlNThFbmNvZGUoYy5zbGljZSgwLC0yKSldfX0pfSl9LHQuY2hlY2tFcnJvcj1mdW5jdGlvbihlKXt2YXIgdD0yNTYqZVswXStlWzFdO3JldHVybiB0PT09YS5TVEFUVVMuU1dfT0s/bnVsbDp7ZXJyb3I6Ildyb25nIGRhdGEiLHN0YXR1czp0fX0sdC5zcGxpdFBhdGg9ZnVuY3Rpb24odCl7dmFyIHI9W107dC5zcGxpdCgiLyIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9cGFyc2VJbnQoZSwxMCk7aXNOYU4odCl8fChlLmxlbmd0aD4xJiYiJyI9PT1lW2UubGVuZ3RoLTFdJiYodCs9MjE0NzQ4MzY0OCksci5wdXNoKHQpKX0pO3ZhciBuPW5ldyBlKDQqci5sZW5ndGgpO3JldHVybiByLmZvckVhY2goZnVuY3Rpb24oZSx0KXtuLndyaXRlVUludDMyQkUoZSw0KnQpfSksbn0sdH0oKTt0LldhdmVzPXN9KS5jYWxsKHRoaXMscigxOCkuQnVmZmVyKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5iYXNlNThFbmNvZGU9ZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgdD1bMF0scj0wO3I8ZS5sZW5ndGg7cisrKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0W25dPDw9ODt0WzBdKz1lW3JdO2Zvcih2YXIgaT0wLG89MDtvPHQubGVuZ3RoO28rKyl0W29dKz1pLGk9dFtvXS81OHwwLHRbb10lPTU4O2Zvcig7aTspdC5wdXNoKGklNTgpLGk9aS81OHwwfWZvcihyPTA7MD09PWVbcl0mJnI8ZS5sZW5ndGgtMTtyKyspdC5wdXNoKDApO3JldHVybiB0LnJldmVyc2UoKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIjEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXoiW2VdfSkuam9pbigiIil9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXt2YXIgbj1yKDIzMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpLG89ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gciYmZSh0LnByb3RvdHlwZSxyKSxuJiZlKHQsbiksdH19KCkscz1yKDkzNSksdT1yKDkzOCksYz0oaT11KSYmaS5fX2VzTW9kdWxlP2k6e2RlZmF1bHQ6aX0sZj1yKDk0MCksbD1yKDQ1NCk7ZnVuY3Rpb24gaChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSxyKXtyZXR1cm4gZnVuY3Rpb24gbihpLG8pe3RyeXt2YXIgYT10W2ldKG8pLHM9YS52YWx1ZX1jYXRjaCh1KXtyZXR1cm4gdm9pZCByKHUpfWlmKCFhLmRvbmUpcmV0dXJuIFByb21pc2UucmVzb2x2ZShzKS50aGVuKGZ1bmN0aW9uKGUpe24oIm5leHQiLGUpfSxmdW5jdGlvbihlKXtuKCJ0aHJvdyIsZSl9KTtlKHMpfSgibmV4dCIpfSl9fWZ1bmN0aW9uIHAoZSx0LHIpe3ZhciBuPW5ldyBsLlRyYW5zcG9ydEVycm9yKHQscik7cmV0dXJuIG4ub3JpZ2luYWxFcnJvcj1lLG59dmFyIGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKS5yZXBsYWNlKC89KyQvLCIiKX0seT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKSsiPT0iLnN1YnN0cmluZygwLDMqZS5sZW5ndGglNCl9O2Z1bmN0aW9uIGcodCxyLG4saSl7dmFyIG89ZnVuY3Rpb24odCxyKXtmb3IodmFyIG49ZS5hbGxvYyh0Lmxlbmd0aCksaT0wO2k8dC5sZW5ndGg7aSsrKW5baV09dFtpXV5yW2klci5sZW5ndGhdO3JldHVybiBufSh0LG4pLGE9ZS5mcm9tKCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiaGV4IiksdT17dmVyc2lvbjoiVTJGX1YyIixrZXlIYW5kbGU6ZChvLnRvU3RyaW5nKCJiYXNlNjQiKSksY2hhbGxlbmdlOmQoYS50b1N0cmluZygiYmFzZTY0IikpLGFwcElkOmxvY2F0aW9uLm9yaWdpbn07cmV0dXJuKDAsZi5sb2cpKCJhcGR1IiwiPT4gIit0LnRvU3RyaW5nKCJoZXgiKSksKDAscy5zaWduKSh1LHIvMWUzKS50aGVuKGZ1bmN0aW9uKHQpe3ZhciByPXQuc2lnbmF0dXJlRGF0YTtpZigic3RyaW5nIj09PXR5cGVvZiByKXt2YXIgbj1lLmZyb20oeShyKSwiYmFzZTY0Iiksbz12b2lkIDA7cmV0dXJuIG89aT9uLnNsaWNlKDUpOm4sKDAsZi5sb2cpKCJhcGR1IiwiPD0gIitvLnRvU3RyaW5nKCJoZXgiKSksb310aHJvdyB0fSl9dmFyIHY9W107dmFyIG09ZnVuY3Rpb24odCl7ZnVuY3Rpb24gcigpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHIpO3ZhciBlPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9PXR5cGVvZiB0P2U6dH0odGhpcywoci5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihyKSkuY2FsbCh0aGlzKSk7cmV0dXJuIGUudW53cmFwPSEwLHYucHVzaChlKSxlfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfShyLGMuZGVmYXVsdCksYShyLG51bGwsW3trZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9aChuLm1hcmsoZnVuY3Rpb24gZSh0KXthcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO3JldHVybiBuLndyYXAoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG5ldyByKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19LGUsdGhpcyl9KSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCl9XSksYShyLFt7a2V5OiJleGNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1oKG4ubWFyayhmdW5jdGlvbiBlKHQpe3JldHVybiBuLndyYXAoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUucHJldj0wLGUubmV4dD0zLGcodCx0aGlzLmV4Y2hhbmdlVGltZW91dCx0aGlzLnNjcmFtYmxlS2V5LHRoaXMudW53cmFwKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA2OmlmKGUucHJldj02LGUudDA9ZS5jYXRjaCgwKSwhKCJvYmplY3QiPT09byhlLnQwLm1ldGFEYXRhKSkpe2UubmV4dD0xNDticmVha310aHJvdyA1PT09ZS50MC5tZXRhRGF0YS5jb2RlJiYodi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmVtaXQoImRpc2Nvbm5lY3QiKX0pLHY9W10pLHAoZS50MCwiRmFpbGVkIHRvIHNpZ24gd2l0aCBMZWRnZXIgZGV2aWNlOiBVMkYgIitlLnQwLm1ldGFEYXRhLnR5cGUsIlUyRl8iK2UudDAubWV0YURhdGEuY29kZSk7Y2FzZSAxNDp0aHJvdyBlLnQwO2Nhc2UgMTU6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19LGUsdGhpcyxbWzAsNl1dKX0pKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX0se2tleToic2V0U2NyYW1ibGVLZXkiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2NyYW1ibGVLZXk9ZS5mcm9tKHQsImFzY2lpIil9fSx7a2V5OiJzZXRVbndyYXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMudW53cmFwPWV9fSx7a2V5OiJjbG9zZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9fV0pLHJ9KCk7bS5pc1N1cHBvcnRlZD1zLmlzU3VwcG9ydGVkLG0ubGlzdD1mdW5jdGlvbigpe3JldHVybigwLHMuaXNTdXBwb3J0ZWQpKCkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZT9bbnVsbF06W119KX0sbS5saXN0ZW49ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7cmV0dXJuKDAscy5pc1N1cHBvcnRlZCkoKS50aGVuKGZ1bmN0aW9uKHIpe3R8fChyPyhlLm5leHQoe3R5cGU6ImFkZCIsZGVzY3JpcHRvcjpudWxsfSksZS5jb21wbGV0ZSgpKTplLmVycm9yKG5ldyBsLlRyYW5zcG9ydEVycm9yKCJVMkYgYnJvd3NlciBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgTGVkZ2VyLiBQbGVhc2UgdXNlIENocm9tZSwgT3BlcmEgb3IgRmlyZWZveCB3aXRoIGEgVTJGIGV4dGVuc2lvbi4gQWxzbyBtYWtlIHN1cmUgeW91J3JlIG9uIGFuIEhUVFBTIGNvbm5lY3Rpb24iLCJVMkZOb3RTdXBwb3J0ZWQiKSkpfSkse3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7dD0hMH19fSx0LmRlZmF1bHQ9bX0pLmNhbGwodGhpcyxyKDE4KS5CdWZmZXIpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1yKDkzNil9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe2UuZXhwb3J0cz1jO3ZhciBuPXIoOTM3KSxpPSJ1bmRlZmluZWQiIT09dHlwZW9mIG5hdmlnYXRvciYmISFuYXZpZ2F0b3IudXNlckFnZW50LG89aSYmbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvU2FmYXJpXC8vKSYmIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0Nocm9tZVwvLyksYT1pJiZuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9FZGdlXC8xWzIzNDVdLykscz1udWxsO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIHN8fChzPW5ldyBlKGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcigpe2Uoe3UyZjpudWxsLG5hdGl2ZTohMH0pfXJldHVybiBpP28/cigpOigidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cudTJmJiYiZnVuY3Rpb24iPT09dHlwZW9mIHdpbmRvdy51MmYuc2lnbiYmZSh7dTJmOndpbmRvdy51MmYsbmF0aXZlOiEwfSksYT9yKCk6Imh0dHA6Ij09PWxvY2F0aW9uLnByb3RvY29sP3IoKToidW5kZWZpbmVkIj09PXR5cGVvZiBNZXNzYWdlQ2hhbm5lbD9yKCk6dm9pZCBuLmlzU3VwcG9ydGVkKGZ1bmN0aW9uKHQpe3Q/ZSh7dTJmOm4sbmF0aXZlOiExfSk6cigpfSkpOnIoKX0pKSxzfWZ1bmN0aW9uIGMoZSl7cmV0dXJue2lzU3VwcG9ydGVkOmguYmluZChlKSxlbnN1cmVTdXBwb3J0OmQuYmluZChlKSxyZWdpc3Rlcjp5LmJpbmQoZSksc2lnbjpnLmJpbmQoZSksRXJyb3JDb2RlczpjLkVycm9yQ29kZXMsRXJyb3JOYW1lczpjLkVycm9yTmFtZXN9fWZ1bmN0aW9uIGYoZSx0KXt2YXIgcj1udWxsIT10P3QuZXJyb3JDb2RlOjEsbj1jLkVycm9yTmFtZXNbIiIrcl0saT1uZXcgRXJyb3IoZSk7cmV0dXJuIGkubWV0YURhdGE9e3R5cGU6bixjb2RlOnJ9LGl9ZnVuY3Rpb24gbChlLHQpe3ZhciByPXt9O3JldHVybiByLnByb21pc2U9bmV3IGUoZnVuY3Rpb24oZSxuKXtyLnJlc29sdmU9ZSxyLnJlamVjdD1uLHQudGhlbihlLG4pfSksci5wcm9taXNlLmNhbmNlbD1mdW5jdGlvbih0LG4pe3UoZSkudGhlbihmdW5jdGlvbihlKXtuJiYhZS5uYXRpdmUmJmUudTJmLmRpc2Nvbm5lY3QoKSxyLnJlamVjdChmKHQse2Vycm9yQ29kZTotMX0pKX0pfSxyfWZ1bmN0aW9uIGgoKXtyZXR1cm4gdSh0aGlzKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiEhZS51MmZ9KX1mdW5jdGlvbiBwKGUpe2lmKCFlLnUyZil7aWYoImh0dHA6Ij09PWxvY2F0aW9uLnByb3RvY29sKXRocm93IG5ldyBFcnJvcigiVTJGIGlzbid0IHN1cHBvcnRlZCBvdmVyIGh0dHAsIG9ubHkgaHR0cHMiKTt0aHJvdyBuZXcgRXJyb3IoIlUyRiBub3Qgc3VwcG9ydGVkIil9fWZ1bmN0aW9uIGQoKXtyZXR1cm4gdSh0aGlzKS50aGVuKHApfWZ1bmN0aW9uIHkoZSx0LHIpe3ZhciBuPXRoaXM7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSksIm51bWJlciI9PT10eXBlb2YgdCYmInVuZGVmaW5lZCI9PT10eXBlb2YgciYmKHI9dCx0PW51bGwpLHR8fCh0PVtdKSxsKG4sdShuKS50aGVuKGZ1bmN0aW9uKGkpe3AoaSk7dmFyIG89aS5uYXRpdmUsYT1pLnUyZjtyZXR1cm4gbmV3IG4oZnVuY3Rpb24obixpKXtpZihvKXt2YXIgcz1lWzBdLmFwcElkO2EucmVnaXN0ZXIocyxlLHQsZnVuY3Rpb24oZSl7ZS5lcnJvckNvZGU/aShmKCJSZWdpc3RyYXRpb24gZmFpbGVkIixlKSk6KGRlbGV0ZSBlLmVycm9yQ29kZSxuKGUpKX0scil9ZWxzZSBhLnJlZ2lzdGVyKGUsdCxmdW5jdGlvbihlLHQpe2U/aShlKTp0LmVycm9yQ29kZT9pKGYoIlJlZ2lzdHJhdGlvbiBmYWlsZWQiLHQpKTpuKHQpfSxyKX0pfSkpLnByb21pc2V9ZnVuY3Rpb24gZyhlLHQpe3ZhciByPXRoaXM7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSksbChyLHUocikudGhlbihmdW5jdGlvbihuKXtwKG4pO3ZhciBpPW4ubmF0aXZlLG89bi51MmY7cmV0dXJuIG5ldyByKGZ1bmN0aW9uKHIsbil7aWYoaSl7dmFyIGE9ZVswXS5hcHBJZCxzPWVbMF0uY2hhbGxlbmdlO28uc2lnbihhLHMsZSxmdW5jdGlvbihlKXtlLmVycm9yQ29kZT9uKGYoIlNpZ24gZmFpbGVkIixlKSk6KGRlbGV0ZSBlLmVycm9yQ29kZSxyKGUpKX0sdCl9ZWxzZSBvLnNpZ24oZSxmdW5jdGlvbihlLHQpe2U/bihlKTp0LmVycm9yQ29kZT9uKGYoIlNpZ24gZmFpbGVkIix0KSk6cih0KX0sdCl9KX0pKS5wcm9taXNlfWZ1bmN0aW9uIHYoZSl7Y1tlXT1mdW5jdGlvbigpe2lmKCF0LlByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJUaGUgcGxhdGZvcm0gZG9lc24ndCBuYXRpdmVseSBzdXBwb3J0IHByb21pc2VzIik7dmFyIHI9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO3JldHVybiBjKHQuUHJvbWlzZSlbZV0uYXBwbHkobnVsbCxyKX19Yy5FcnJvckNvZGVzPXtDQU5DRUxMRUQ6LTEsT0s6MCxPVEhFUl9FUlJPUjoxLEJBRF9SRVFVRVNUOjIsQ09ORklHVVJBVElPTl9VTlNVUFBPUlRFRDozLERFVklDRV9JTkVMSUdJQkxFOjQsVElNRU9VVDo1fSxjLkVycm9yTmFtZXM9eyItMSI6IkNBTkNFTExFRCIsMDoiT0siLDE6Ik9USEVSX0VSUk9SIiwyOiJCQURfUkVRVUVTVCIsMzoiQ09ORklHVVJBVElPTl9VTlNVUFBPUlRFRCIsNDoiREVWSUNFX0lORUxJR0lCTEUiLDU6IlRJTUVPVVQifSx2KCJpc1N1cHBvcnRlZCIpLHYoImVuc3VyZVN1cHBvcnQiKSx2KCJyZWdpc3RlciIpLHYoInNpZ24iKX0pLmNhbGwodGhpcyxyKDM0KSl9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49bnx8e307ZS5leHBvcnRzPW4sbi5FWFRFTlNJT05fSUQ9ImttZW5kZmFwZ2dqZWhvZG5kZmxtbWdhZ2RiYW1obmZkIixuLk1lc3NhZ2VUeXBlcz17VTJGX1JFR0lTVEVSX1JFUVVFU1Q6InUyZl9yZWdpc3Rlcl9yZXF1ZXN0IixVMkZfU0lHTl9SRVFVRVNUOiJ1MmZfc2lnbl9yZXF1ZXN0IixVMkZfUkVHSVNURVJfUkVTUE9OU0U6InUyZl9yZWdpc3Rlcl9yZXNwb25zZSIsVTJGX1NJR05fUkVTUE9OU0U6InUyZl9zaWduX3Jlc3BvbnNlIn0sbi5FcnJvckNvZGVzPXtPSzowLE9USEVSX0VSUk9SOjEsQkFEX1JFUVVFU1Q6MixDT05GSUdVUkFUSU9OX1VOU1VQUE9SVEVEOjMsREVWSUNFX0lORUxJR0lCTEU6NCxUSU1FT1VUOjV9LG4uUmVxdWVzdCxuLlJlc3BvbnNlLG4uRXJyb3Isbi5TaWduUmVxdWVzdCxuLlNpZ25SZXNwb25zZSxuLlJlZ2lzdGVyUmVxdWVzdCxuLlJlZ2lzdGVyUmU="
}
Changelog:
{
"2020.04.17 15:43": "base64:MF0pO2Nhc2UgMjpyZXR1cm4gbmV3IGUodFswXSx0WzFdKTtjYXNlIDM6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdLHRbM10pfXZhciBuPVtudWxsXTtyZXR1cm4gbi5wdXNoLmFwcGx5KG4sdCksbmV3KGMuYXBwbHkoZSxuKSl9dmFyIHU9ci5wcm90b3R5cGUscD1pKHModSk/dTpPYmplY3QucHJvdG90eXBlKSxkPUZ1bmN0aW9uLmFwcGx5LmNhbGwoZSxwLHQpO3JldHVybiBzKGQpP2Q6cH19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgpLGk9cigyKSxvPXIoMTIpLGE9cig4Mik7aShpLlMraS5GKnIoMTQpKGZ1bmN0aW9uKCl7UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShuLmYoe30sMSx7dmFsdWU6MX0pLDEse3ZhbHVlOjJ9KX0pLCJSZWZsZWN0Iix7ZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oZSx0LHIpe28oZSksdD1hKHQsITApLG8ocik7dHJ5e3JldHVybiBuLmYoZSx0LHIpLCEwfWNhdGNoKGkpe3JldHVybiExfX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMiksaT1yKDYxKS5mLG89cigxMik7bihuLlMsIlJlZmxlY3QiLHtkZWxldGVQcm9wZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciByPWkobyhlKSx0KTtyZXR1cm4hKHImJiFyLmNvbmZpZ3VyYWJsZSkmJmRlbGV0ZSBlW3RdfX0pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMiksaT1yKDEyKSxvPWZ1bmN0aW9uKGUpe3RoaXMuX3Q9aShlKSx0aGlzLl9pPTA7dmFyIHQscj10aGlzLl9rPVtdO2Zvcih0IGluIGUpci5wdXNoKHQpfTtyKDQzNCkobywiT2JqZWN0IixmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5faztkb3tpZih0aGlzLl9pPj10Lmxlbmd0aClyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXdoaWxlKCEoKGU9dFt0aGlzLl9pKytdKWluIHRoaXMuX3QpKTtyZXR1cm57dmFsdWU6ZSxkb25lOiExfX0pLG4obi5TLCJSZWZsZWN0Iix7ZW51bWVyYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbyhlKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjEpLGk9cig5OSksbz1yKDUwKSxhPXIoMikscz1yKDEzKSx1PXIoMTIpO2EoYS5TLCJSZWZsZWN0Iix7Z2V0OmZ1bmN0aW9uIGUodCxyKXt2YXIgYSxjLGY9YXJndW1lbnRzLmxlbmd0aDwzP3Q6YXJndW1lbnRzWzJdO3JldHVybiB1KHQpPT09Zj90W3JdOihhPW4uZih0LHIpKT9vKGEsInZhbHVlIik/YS52YWx1ZTp2b2lkIDAhPT1hLmdldD9hLmdldC5jYWxsKGYpOnZvaWQgMDpzKGM9aSh0KSk/ZShjLHIsZik6dm9pZCAwfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2MSksaT1yKDIpLG89cigxMik7aShpLlMsIlJlZmxlY3QiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5mKG8oZSksdCl9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIpLGk9cig5OSksbz1yKDEyKTtuKG4uUywiUmVmbGVjdCIse2dldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBpKG8oZSkpfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyKTtuKG4uUywiUmVmbGVjdCIse2hhczpmdW5jdGlvbihlLHQpe3JldHVybiB0IGluIGV9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIpLGk9cigxMiksbz1PYmplY3QuaXNFeHRlbnNpYmxlO24obi5TLCJSZWZsZWN0Iix7aXNFeHRlbnNpYmxlOmZ1bmN0aW9uKGUpe3JldHVybiBpKGUpLCFvfHxvKGUpfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyKTtuKG4uUywiUmVmbGVjdCIse293bktleXM6cig0NDkpfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIpLGk9cigxMiksbz1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7bihuLlMsIlJlZmxlY3QiLHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbihlKXtpKGUpO3RyeXtyZXR1cm4gbyYmbyhlKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI4KSxpPXIoNjEpLG89cig5OSksYT1yKDUwKSxzPXIoMiksdT1yKDkzKSxjPXIoMTIpLGY9cigxMyk7cyhzLlMsIlJlZmxlY3QiLHtzZXQ6ZnVuY3Rpb24gZSh0LHIscyl7dmFyIGwsaCxwPWFyZ3VtZW50cy5sZW5ndGg8ND90OmFyZ3VtZW50c1szXSxkPWkuZihjKHQpLHIpO2lmKCFkKXtpZihmKGg9byh0KSkpcmV0dXJuIGUoaCxyLHMscCk7ZD11KDApfWlmKGEoZCwidmFsdWUiKSl7aWYoITE9PT1kLndyaXRhYmxlfHwhZihwKSlyZXR1cm4hMTtpZihsPWkuZihwLHIpKXtpZihsLmdldHx8bC5zZXR8fCExPT09bC53cml0YWJsZSlyZXR1cm4hMTtsLnZhbHVlPXMsbi5mKHAscixsKX1lbHNlIG4uZihwLHIsdSgwLHMpKTtyZXR1cm4hMH1yZXR1cm4gdm9pZCAwIT09ZC5zZXQmJihkLnNldC5jYWxsKHAscyksITApfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyKSxpPXIoMjU2KTtpJiZuKG4uUywiUmVmbGVjdCIse3NldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUsdCl7aS5jaGVjayhlLHQpO3RyeXtyZXR1cm4gaS5zZXQoZSx0KSwhMH1jYXRjaChyKXtyZXR1cm4hMX19fSl9LGZ1bmN0aW9uKGUsdCxyKXtyKDg5NyksZS5leHBvcnRzPXIoMjcpLkFycmF5LmluY2x1ZGVzfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMiksaT1yKDE3OSkoITApO24obi5QLCJBcnJheSIse2luY2x1ZGVzOmZ1bmN0aW9uKGUpe3JldHVybiBpKHRoaXMsZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSkscigxMDApKCJpbmNsdWRlcyIpfSxmdW5jdGlvbihlLHQscil7cig4OTkpLGUuZXhwb3J0cz1yKDI3KS5BcnJheS5mbGF0TWFwfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMiksaT1yKDkwMCksbz1yKDM2KSxhPXIoMjMpLHM9cig1OSksdT1yKDQzNik7bihuLlAsIkFycmF5Iix7ZmxhdE1hcDpmdW5jdGlvbihlKXt2YXIgdCxyLG49byh0aGlzKTtyZXR1cm4gcyhlKSx0PWEobi5sZW5ndGgpLHI9dShuLDApLGkocixuLG4sdCwwLDEsZSxhcmd1bWVudHNbMV0pLHJ9fSkscigxMDApKCJmbGF0TWFwIil9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxODEpLGk9cigxMyksbz1yKDIzKSxhPXIoNTgpLHM9cigyMSkoImlzQ29uY2F0U3ByZWFkYWJsZSIpO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQscix1LGMsZixsLGgscCl7Zm9yKHZhciBkLHksZz1mLHY9MCxtPSEhaCYmYShoLHAsMyk7djxjOyl7aWYodiBpbiB1KXtpZihkPW0/bSh1W3ZdLHYscik6dVt2XSx5PSExLGkoZCkmJih5PXZvaWQgMCE9PSh5PWRbc10pPyEheTpuKGQpKSx5JiZsPjApZz1lKHQscixkLG8oZC5sZW5ndGgpLGcsbC0xKS0xO2Vsc2V7aWYoZz49OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBUeXBlRXJyb3IoKTt0W2ddPWR9ZysrfXYrK31yZXR1cm4gZ319LGZ1bmN0aW9uKGUsdCxyKXtyKDkwMiksZS5leHBvcnRzPXIoMjcpLlN0cmluZy5wYWRTdGFydH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIpLGk9cig0NTApLG89cigyNzMpLGE9L1ZlcnNpb25cLzEwXC5cZCsoXC5cZCspPyggTW9iaWxlXC9cdyspPyBTYWZhcmlcLy8udGVzdChvKTtuKG4uUCtuLkYqYSwiU3RyaW5nIix7cGFkU3RhcnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkodGhpcyxlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLCEwKX19KX0sZnVuY3Rpb24oZSx0LHIpe3IoOTA0KSxlLmV4cG9ydHM9cigyNykuU3RyaW5nLnBhZEVuZH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIpLGk9cig0NTApLG89cigyNzMpLGE9L1ZlcnNpb25cLzEwXC5cZCsoXC5cZCspPyggTW9iaWxlXC9cdyspPyBTYWZhcmlcLy8udGVzdChvKTtuKG4uUCtuLkYqYSwiU3RyaW5nIix7cGFkRW5kOmZ1bmN0aW9uKGUpe3JldHVybiBpKHRoaXMsZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwhMSl9fSl9LGZ1bmN0aW9uKGUsdCxyKXtyKDkwNiksZS5leHBvcnRzPXIoMjcpLlN0cmluZy50cmltTGVmdH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKDExMSkoInRyaW1MZWZ0IixmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLDEpfX0sInRyaW1TdGFydCIpfSxmdW5jdGlvbihlLHQscil7cig5MDgpLGUuZXhwb3J0cz1yKDI3KS5TdHJpbmcudHJpbVJpZ2h0fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IoMTExKSgidHJpbVJpZ2h0IixmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLDIpfX0sInRyaW1FbmQiKX0sZnVuY3Rpb24oZSx0LHIpe3IoOTEwKSxlLmV4cG9ydHM9cigyNTMpLmYoImFzeW5jSXRlcmF0b3IiKX0sZnVuY3Rpb24oZSx0LHIpe3IoNDIyKSgiYXN5bmNJdGVyYXRvciIpfSxmdW5jdGlvbihlLHQscil7cig5MTIpLGUuZXhwb3J0cz1yKDI3KS5PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yc30sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMiksaT1yKDQ0OSksbz1yKDUxKSxhPXIoNjEpLHM9cigyNjgpO24obi5TLCJPYmplY3QiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyLG49byhlKSx1PWEuZixjPWkobiksZj17fSxsPTA7Yy5sZW5ndGg+bDspdm9pZCAwIT09KHI9dShuLHQ9Y1tsKytdKSkmJnMoZix0LHIpO3JldHVybiBmfX0pfSxmdW5jdGlvbihlLHQscil7cig5MTQpLGUuZXhwb3J0cz1yKDI3KS5PYmplY3QudmFsdWVzfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyKSxpPXIoNDUxKSghMSk7bihuLlMsIk9iamVjdCIse3ZhbHVlczpmdW5jdGlvbihlKXtyZXR1cm4gaShlKX19KX0sZnVuY3Rpb24oZSx0LHIpe3IoOTE2KSxlLmV4cG9ydHM9cigyNykuT2JqZWN0LmVudHJpZXN9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDIpLGk9cig0NTEpKCEwKTtuKG4uUywiT2JqZWN0Iix7ZW50cmllczpmdW5jdGlvbihlKXtyZXR1cm4gaShlKX19KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKDQ0Mykscig5MTgpLGUuZXhwb3J0cz1yKDI3KS5Qcm9taXNlLmZpbmFsbHl9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyKSxpPXIoMjcpLG89cigxNyksYT1yKDE0OSkscz1yKDQ0NSk7bihuLlArbi5SLCJQcm9taXNlIix7ZmluYWxseTpmdW5jdGlvbihlKXt2YXIgdD1hKHRoaXMsaS5Qcm9taXNlfHxvLlByb21pc2UpLHI9ImZ1bmN0aW9uIj09dHlwZW9mIGU7cmV0dXJuIHRoaXMudGhlbihyP2Z1bmN0aW9uKHIpe3JldHVybiBzKHQsZSgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KX06ZSxyP2Z1bmN0aW9uKHIpe3JldHVybiBzKHQsZSgpKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgcn0pfTplKX19KX0sZnVuY3Rpb24oZSx0LHIpe3IoOTIwKSxlLmV4cG9ydHM9cig0NTIpLmdsb2JhbH0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOTIxKTtuKG4uRyx7Z2xvYmFsOnIoMjc1KX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyNzUpLGk9cig0NTIpLG89cig5MjIpLGE9cig5MjQpLHM9cig5MzEpLHU9ZnVuY3Rpb24gZSh0LHIsdSl7dmFyIGMsZixsLGg9dCZlLkYscD10JmUuRyxkPXQmZS5TLHk9dCZlLlAsZz10JmUuQix2PXQmZS5XLG09cD9pOmlbcl18fChpW3JdPXt9KSxiPW0ucHJvdG90eXBlLF89cD9uOmQ/bltyXToobltyXXx8e30pLnByb3RvdHlwZTtmb3IoYyBpbiBwJiYodT1yKSx1KShmPSFoJiZfJiZ2b2lkIDAhPT1fW2NdKSYmcyhtLGMpfHwobD1mP19bY106dVtjXSxtW2NdPXAmJiJmdW5jdGlvbiIhPXR5cGVvZiBfW2NdP3VbY106ZyYmZj9vKGwsbik6diYmX1tjXT09bD9mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbih0LHIsbil7aWYodGhpcyBpbnN0YW5jZW9mIGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBlO2Nhc2UgMTpyZXR1cm4gbmV3IGUodCk7Y2FzZSAyOnJldHVybiBuZXcgZSh0LHIpfXJldHVybiBuZXcgZSh0LHIsbil9cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtyZXR1cm4gdC5wcm90b3R5cGU9ZS5wcm90b3R5cGUsdH0obCk6eSYmImZ1bmN0aW9uIj09dHlwZW9mIGw/byhGdW5jdGlvbi5jYWxsLGwpOmwseSYmKChtLnZpcnR1YWx8fChtLnZpcnR1YWw9e30pKVtjXT1sLHQmZS5SJiZiJiYhYltjXSYmYShiLGMsbCkpKX07dS5GPTEsdS5HPTIsdS5TPTQsdS5QPTgsdS5CPTE2LHUuVz0zMix1LlU9NjQsdS5SPTEyOCxlLmV4cG9ydHM9dX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOTIzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2lmKG4oZSksdm9pZCAwPT09dClyZXR1cm4gZTtzd2l0Y2gocil7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gZS5jYWxsKHQscil9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24ocixuKXtyZXR1cm4gZS5jYWxsKHQscixuKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihyLG4saSl7cmV0dXJuIGUuY2FsbCh0LHIsbixpKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IFR5cGVFcnJvcihlKyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig5MjUpLGk9cig5MzApO2UuZXhwb3J0cz1yKDI3Nyk/ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBuLmYoZSx0LGkoMSxyKSl9OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yLGV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig5MjYpLGk9cig5MjcpLG89cig5MjkpLGE9T2JqZWN0LmRlZmluZVByb3BlcnR5O3QuZj1yKDI3Nyk/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxyKXtpZihuKGUpLHQ9byh0LCEwKSxuKHIpLGkpdHJ5e3JldHVybiBhKGUsdCxyKX1jYXRjaChzKXt9aWYoImdldCJpbiByfHwic2V0ImluIHIpdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEiKTtyZXR1cm4idmFsdWUiaW4gciYmKGVbdF09ci52YWx1ZSksZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI3Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFuKGUpKXRocm93IFR5cGVFcnJvcihlKyIgaXMgbm90IGFuIG9iamVjdCEiKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9IXIoMjc3KSYmIXIoNDUzKShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkocig5MjgpKCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjc2KSxpPXIoMjc1KS5kb2N1bWVudCxvPW4oaSkmJm4oaS5jcmVhdGVFbGVtZW50KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8/aS5jcmVhdGVFbGVtZW50KGUpOnt9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjc2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighbihlKSlyZXR1cm4gZTt2YXIgcixpO2lmKHQmJiJmdW5jdGlvbiI9PXR5cGVvZihyPWUudG9TdHJpbmcpJiYhbihpPXIuY2FsbChlKSkpcmV0dXJuIGk7aWYoImZ1bmN0aW9uIj09dHlwZW9mKHI9ZS52YWx1ZU9mKSYmIW4oaT1yLmNhbGwoZSkpKXJldHVybiBpO2lmKCF0JiYiZnVuY3Rpb24iPT10eXBlb2Yocj1lLnRvU3RyaW5nKSYmIW4oaT1yLmNhbGwoZSkpKXJldHVybiBpO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybntlbnVtZXJhYmxlOiEoMSZlKSxjb25maWd1cmFibGU6ISgyJmUpLHdyaXRhYmxlOiEoNCZlKSx2YWx1ZTp0fX19LGZ1bmN0aW9uKGUsdCl7dmFyIHI9e30uaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuY2FsbChlLHQpfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24oZSl7dmFyIG49dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gYShlKXt0cnl7dShuLm5leHQoZSkpfWNhdGNoKHQpe28odCl9fWZ1bmN0aW9uIHMoZSl7dHJ5e3Uobi50aHJvdyhlKSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gdShlKXtlLmRvbmU/aShlLnZhbHVlKTpuZXcgcihmdW5jdGlvbih0KXt0KGUudmFsdWUpfSkudGhlbihhLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pfSxpPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYob1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvO2Z1bmN0aW9uIHMobyl7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBmdW5jdGlvbihvKXtpZihyKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2E7KXRyeXtpZihyPTEsbiYmKGk9MiZvWzBdP24ucmV0dXJuOm9bMF0/bi50aHJvd3x8KChpPW4ucmV0dXJuKSYmaS5jYWxsKG4pLDApOm4ubmV4dCkmJiEoaT1pLmNhbGwobixvWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gobj0wLGkmJihvPVsyJm9bMF0saS52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6aT1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKyssbj1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT0oaT1hLnRyeXMpLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKSYmKDY9PT1vWzBdfHwyPT09b1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFpfHxvWzFdPmlbMF0mJm9bMV08aVszXSkpe2EubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmYS5sYWJlbDxpWzFdKXthLmxhYmVsPWlbMV0saT1vO2JyZWFrfWlmKGkmJmEubGFiZWw8aVsyXSl7YS5sYWJlbD1pWzJdLGEub3BzLnB1c2gobyk7YnJlYWt9aVsyXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUsYSl9Y2F0Y2gocyl7bz1bNixzXSxuPTB9ZmluYWxseXtyPWk9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sc10pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1yKDkzMyksYT17U1RBVFVTOntTV19PSzozNjg2NCxTV19VU0VSX0NBTkNFTExFRDozNzEyMCxTV19DT05ESVRJT05TX05PVF9TQVRJU0ZJRUQ6MjcwMTMsU1dfQlVGRkVSX09WRVJGTE9XOjI3MDI0LFNXX0lOQ09SUkVDVF9QMV9QMjoyNzI3MCxTV19JTlNfTk9UX1NVUFBPUlRFRDoyNzkwNCxTV19DTEFfTk9UX1NVUFBPUlRFRDoyODE2MCxTV19TRUNVUklUWV9TVEFUVVNfTk9UX1NBVElTRklFRDoyNzAxMH0sU0VDUkVUOiJXQVZFUyIsUFVCTElDX0tFWV9MRU5HVEg6MzIsQUREUkVTU19MRU5HVEg6MzUsU1RBVFVTX0xFTkdUSDoyLFNJR05FRF9DT0RFUzp7T1JERVI6MjUyLFNPTUVfREFUQToyNTMsUkVRVUVTVDoyNTQsTUVTU0FHRToyNTV9LE1BWF9TSVpFOjEyOCxXQVZFU19QUkVDSVNJT046OCxNQUlOX05FVF9DT0RFOjg3LFZFUlNJT05TOltbMCw5LDZdLFswLDksN11dfSxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHQpe3ZvaWQgMD09PXQmJih0PWEuTUFJTl9ORVRfQ09ERSksdGhpcy5fdmVyc2lvbj1udWxsLHRoaXMudHJhbnNwb3J0PWUsdGhpcy5uZXR3b3JrQ29kZT10LHRoaXMuZGVjb3JhdGVDbGFzc0J5VHJhbnNwb3J0KCl9cmV0dXJuIHQucHJvdG90eXBlLmRlY29yYXRlQ2xhc3NCeVRyYW5zcG9ydD1mdW5jdGlvbigpe3RoaXMudHJhbnNwb3J0LmRlY29yYXRlQXBwQVBJTWV0aG9kcyh0aGlzLFsiZ2V0V2FsbGV0UHVibGljS2V5IiwiX3NpZ25EYXRhIiwiZ2V0VmVyc2lvbiJdLGEuU0VDUkVUKX0sdC5wcm90b3R5cGUuZ2V0V2FsbGV0UHVibGljS2V5PWZ1bmN0aW9uKGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPSExKSxuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBuLHMsdSxjLGYsbDtyZXR1cm4gaSh0aGlzLGZ1bmN0aW9uKGkpe3N3aXRjaChpLmxhYmVsKXtjYXNlIDA6cmV0dXJuIG49dC5zcGxpdFBhdGgoZSkscz1yPzEyODowLFs0LHRoaXMudHJhbnNwb3J0LnNlbmQoMTI4LDQscyx0aGlzLm5ldHdvcmtDb2RlLG4pXTtjYXNlIDE6cmV0dXJuIHU9aS5zZW50KCksYz1vLmJhc2U1OEVuY29kZSh1LnNsaWNlKDAsYS5QVUJMSUNfS0VZX0xFTkdUSCkpLGY9dS5zbGljZShhLlBVQkxJQ19LRVlfTEVOR1RILGEuUFVCTElDX0tFWV9MRU5HVEgrYS5BRERSRVNTX0xFTkdUSCkudG9TdHJpbmcoImFzY2lpIiksbD11LnNsaWNlKC1hLlNUQVRVU19MRU5HVEgpLnRvU3RyaW5nKCJoZXgiKSxbMix7cHVibGljS2V5OmMsYWRkcmVzczpmLHN0YXR1c0NvZGU6bH1dfX0pfSl9LHQucHJvdG90eXBlLnNpZ25UcmFuc2FjdGlvbj1mdW5jdGlvbihyLG8scyx1KXtyZXR1cm4gdm9pZCAwPT09dSYmKHU9Miksbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbixjLGYsbCxoO3JldHVybiBpKHRoaXMsZnVuY3Rpb24oaSl7c3dpdGNoKGkubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbj1zWzBdLGM9W24sdV0sWzQsdGhpcy5fdmVyc2lvbk51bSgpXTtjYXNlIDE6cmV0dXJuIGY9aS5zZW50KCksNCE9PW4/WzMsM106MCE9PWY/WzMsM106WzQsdGhpcy5zaWduU29tZURhdGEocixzKV07Y2FzZSAyOnJldHVyblsyLGkuc2VudCgpXTtjYXNlIDM6cmV0dXJuIGw9ZS5jb25jYXQoW3Quc3BsaXRQYXRoKHIpLGUuZnJvbShbbyxhLldBVkVTX1BSRUNJU0lPTl0pXSksWzQsdGhpcy5fZmlsbERhdGEobCxzLGMpXTtjYXNlIDQ6cmV0dXJuIGg9aS5zZW50KCksWzQsdGhpcy5fc2lnbkRhdGEoaCldO2Nhc2UgNTpyZXR1cm5bMixpLnNlbnQoKV19fSl9KX0sdC5wcm90b3R5cGUuc2lnbk9yZGVyPWZ1bmN0aW9uKHIsbyxzKXtyZXR1cm4gbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbix1O3JldHVybiBpKHRoaXMsZnVuY3Rpb24oaSl7c3dpdGNoKGkubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbj1lLmNvbmNhdChbdC5zcGxpdFBhdGgociksZS5mcm9tKFtvLGEuV0FWRVNfUFJFQ0lTSU9OLGEuU0lHTkVEX0NPREVTLk9SREVSXSldKSxbNCx0aGlzLl9maWxsRGF0YShuLHMpXTtjYXNlIDE6cmV0dXJuIHU9aS5zZW50KCksWzQsdGhpcy5fc2lnbkRhdGEodSldO2Nhc2UgMjpyZXR1cm5bMixpLnNlbnQoKV19fSl9KX0sdC5wcm90b3R5cGUuc2lnblNvbWVEYXRhPWZ1bmN0aW9uKHIsbyl7cmV0dXJuIG4odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG4scztyZXR1cm4gaSh0aGlzLGZ1bmN0aW9uKGkpe3N3aXRjaChpLmxhYmVsKXtjYXNlIDA6cmV0dXJuIG49ZS5jb25jYXQoW3Quc3BsaXRQYXRoKHIpLGUuZnJvbShbYS5XQVZFU19QUkVDSVNJT04sYS5XQVZFU19QUkVDSVNJT04sYS5TSUdORURfQ09ERVMuU09NRV9EQVRBXSldKSxbNCx0aGlzLl9maWxsRGF0YShuLG8pXTtjYXNlIDE6cmV0dXJuIHM9aS5zZW50KCksWzQsdGhpcy5fc2lnbkRhdGEocyldO2Nhc2UgMjpyZXR1cm5bMixpLnNlbnQoKV19fSl9KX0sdC5wcm90b3R5cGUuc2lnblJlcXVlc3Q9ZnVuY3Rpb24ocixvKXtyZXR1cm4gbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbixzO3JldHVybiBpKHRoaXMsZnVuY3Rpb24oaSl7c3dpdGNoKGkubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbj1lLmNvbmNhdChbdC5zcGxpdFBhdGgociksZS5mcm9tKFthLldBVkVTX1BSRUNJU0lPTixhLldBVkVTX1BSRUNJU0lPTixhLlNJR05FRF9DT0RFUy5SRVFVRVNUXSldKSxbNCx0aGlzLl9maWxsRGF0YShuLG8pXTtjYXNlIDE6cmV0dXJuIHM9aS5zZW50KCksWzQsdGhpcy5fc2lnbkRhdGEocyldO2Nhc2UgMjpyZXR1cm5bMixpLnNlbnQoKV19fSl9KX0sdC5wcm90b3R5cGUuc2lnbk1lc3NhZ2U9ZnVuY3Rpb24ocixvKXtyZXR1cm4gbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbixzO3JldHVybiBpKHRoaXMsZnVuY3Rpb24oaSl7c3dpdGNoKGkubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbj1lLmNvbmNhdChbdC5zcGxpdFBhdGgociksZS5mcm9tKFthLldBVkVTX1BSRUNJU0lPTixhLldBVkVTX1BSRUNJU0lPTixhLlNJR05FRF9DT0RFUy5NRVNTQUdFXSldKSxbNCx0aGlzLl9maWxsRGF0YShuLG8pXTtjYXNlIDE6cmV0dXJuIHM9aS5zZW50KCksWzQsdGhpcy5fc2lnbkRhdGEocyldO2Nhc2UgMjpyZXR1cm5bMixpLnNlbnQoKV19fSl9KX0sdC5wcm90b3R5cGUuZ2V0VmVyc2lvbj1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlLHIsbjtyZXR1cm4gaSh0aGlzLGZ1bmN0aW9uKGkpe3N3aXRjaChpLmxhYmVsKXtjYXNlIDA6dGhpcy5fdmVyc2lvbnx8KHRoaXMuX3ZlcnNpb249dGhpcy50cmFuc3BvcnQuc2VuZCgxMjgsNiwwLDApKSxpLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBpLnRyeXMucHVzaChbMSwzLCw0XSksWzQsdGhpcy5fdmVyc2lvbl07Y2FzZSAyOmlmKGU9aS5zZW50KCkscj10LmNoZWNrRXJyb3IoZS5zbGljZSgtMikpKXRocm93IHI7cmV0dXJuWzIsZS5zbGljZSgwLC0yKV07Y2FzZSAzOnRocm93IG49aS5zZW50KCksdGhpcy5fdmVyc2lvbj1udWxsLG47Y2FzZSA0OnJldHVyblsyXX19KX0pfSx0LnByb3RvdHlwZS5fdmVyc2lvbk51bT1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlO3JldHVybiBpKHRoaXMsZnVuY3Rpb24odCl7c3dpdGNoKHQubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldFZlcnNpb24oKV07Y2FzZSAxOnJldHVybiBlPXQuc2VudCgpLFsyLGEuVkVSU0lPTlMucmVkdWNlKGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gZS5zb21lKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHJbdF08ZX0pP246dH0sMCldfX0pfSl9LHQucHJvdG90eXBlLl9maWxsRGF0YT1mdW5jdGlvbih0LHIsbyl7cmV0dXJuIHZvaWQgMD09PW8mJihvPVswXSksbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gaSh0aGlzLGZ1bmN0aW9uKG4pe3N3aXRjaChuLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5fdmVyc2lvbk51bSgpXTtjYXNlIDE6c3dpdGNoKG4uc2VudCgpKXtjYXNlIDA6cmV0dXJuWzIsZS5jb25jYXQoW3Qscl0pXTtjYXNlIDE6ZGVmYXVsdDpyZXR1cm5bMixlLmNvbmNhdChbdCxlLmZyb20obykscl0pXX1yZXR1cm5bMl19fSl9KX0sdC5wcm90b3R5cGUuX3NpZ25EYXRhPWZ1bmN0aW9uKGUpe3JldHVybiBuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciByLG4scyx1LGMsZixsLGgscCxkO3JldHVybiBpKHRoaXMsZnVuY3Rpb24oaSl7c3dpdGNoKGkubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxlXTtjYXNlIDE6cj1pLnNlbnQoKSxuPWEuTUFYX1NJWkUtNSxzPXIubGVuZ3RoLHU9MCxpLmxhYmVsPTI7Y2FzZSAyOnJldHVybiBzPnU/KGY9TWF0aC5taW4ocy11LG4pLGg9KGw9cy11Pm4/MDoxMjgpP3RoaXMubmV0d29ya0NvZGU6MCxwPXIuc2xpY2UodSxmK3UpLHUrPWYsWzQsdGhpcy50cmFuc3BvcnQuc2VuZCgxMjgsMixsLGgscCldKTpbMyw0XTtjYXNlIDM6aWYoYz1pLnNlbnQoKSxkPXQuY2hlY2tFcnJvcihjLnNsaWNlKC0yKSkpdGhyb3cgZDtyZXR1cm5bMywyXTtjYXNlIDQ6cmV0dXJuWzIsby5iYXNlNThFbmNvZGUoYy5zbGljZSgwLC0yKSldfX0pfSl9LHQuY2hlY2tFcnJvcj1mdW5jdGlvbihlKXt2YXIgdD0yNTYqZVswXStlWzFdO3JldHVybiB0PT09YS5TVEFUVVMuU1dfT0s/bnVsbDp7ZXJyb3I6Ildyb25nIGRhdGEiLHN0YXR1czp0fX0sdC5zcGxpdFBhdGg9ZnVuY3Rpb24odCl7dmFyIHI9W107dC5zcGxpdCgiLyIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9cGFyc2VJbnQoZSwxMCk7aXNOYU4odCl8fChlLmxlbmd0aD4xJiYiJyI9PT1lW2UubGVuZ3RoLTFdJiYodCs9MjE0NzQ4MzY0OCksci5wdXNoKHQpKX0pO3ZhciBuPW5ldyBlKDQqci5sZW5ndGgpO3JldHVybiByLmZvckVhY2goZnVuY3Rpb24oZSx0KXtuLndyaXRlVUludDMyQkUoZSw0KnQpfSksbn0sdH0oKTt0LldhdmVzPXN9KS5jYWxsKHRoaXMscigxOCkuQnVmZmVyKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5iYXNlNThFbmNvZGU9ZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgdD1bMF0scj0wO3I8ZS5sZW5ndGg7cisrKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0W25dPDw9ODt0WzBdKz1lW3JdO2Zvcih2YXIgaT0wLG89MDtvPHQubGVuZ3RoO28rKyl0W29dKz1pLGk9dFtvXS81OHwwLHRbb10lPTU4O2Zvcig7aTspdC5wdXNoKGklNTgpLGk9aS81OHwwfWZvcihyPTA7MD09PWVbcl0mJnI8ZS5sZW5ndGgtMTtyKyspdC5wdXNoKDApO3JldHVybiB0LnJldmVyc2UoKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIjEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXoiW2VdfSkuam9pbigiIil9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXt2YXIgbj1yKDIzMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpLG89ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gciYmZSh0LnByb3RvdHlwZSxyKSxuJiZlKHQsbiksdH19KCkscz1yKDkzNSksdT1yKDkzOCksYz0oaT11KSYmaS5fX2VzTW9kdWxlP2k6e2RlZmF1bHQ6aX0sZj1yKDk0MCksbD1yKDQ1NCk7ZnVuY3Rpb24gaChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSxyKXtyZXR1cm4gZnVuY3Rpb24gbihpLG8pe3RyeXt2YXIgYT10W2ldKG8pLHM9YS52YWx1ZX1jYXRjaCh1KXtyZXR1cm4gdm9pZCByKHUpfWlmKCFhLmRvbmUpcmV0dXJuIFByb21pc2UucmVzb2x2ZShzKS50aGVuKGZ1bmN0aW9uKGUpe24oIm5leHQiLGUpfSxmdW5jdGlvbihlKXtuKCJ0aHJvdyIsZSl9KTtlKHMpfSgibmV4dCIpfSl9fWZ1bmN0aW9uIHAoZSx0LHIpe3ZhciBuPW5ldyBsLlRyYW5zcG9ydEVycm9yKHQscik7cmV0dXJuIG4ub3JpZ2luYWxFcnJvcj1lLG59dmFyIGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKS5yZXBsYWNlKC89KyQvLCIiKX0seT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKSsiPT0iLnN1YnN0cmluZygwLDMqZS5sZW5ndGglNCl9O2Z1bmN0aW9uIGcodCxyLG4saSl7dmFyIG89ZnVuY3Rpb24odCxyKXtmb3IodmFyIG49ZS5hbGxvYyh0Lmxlbmd0aCksaT0wO2k8dC5sZW5ndGg7aSsrKW5baV09dFtpXV5yW2klci5sZW5ndGhdO3JldHVybiBufSh0LG4pLGE9ZS5mcm9tKCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiaGV4IiksdT17dmVyc2lvbjoiVTJGX1YyIixrZXlIYW5kbGU6ZChvLnRvU3RyaW5nKCJiYXNlNjQiKSksY2hhbGxlbmdlOmQoYS50b1N0cmluZygiYmFzZTY0IikpLGFwcElkOmxvY2F0aW9uLm9yaWdpbn07cmV0dXJuKDAsZi5sb2cpKCJhcGR1IiwiPT4gIit0LnRvU3RyaW5nKCJoZXgiKSksKDAscy5zaWduKSh1LHIvMWUzKS50aGVuKGZ1bmN0aW9uKHQpe3ZhciByPXQuc2lnbmF0dXJlRGF0YTtpZigic3RyaW5nIj09PXR5cGVvZiByKXt2YXIgbj1lLmZyb20oeShyKSwiYmFzZTY0Iiksbz12b2lkIDA7cmV0dXJuIG89aT9uLnNsaWNlKDUpOm4sKDAsZi5sb2cpKCJhcGR1IiwiPD0gIitvLnRvU3RyaW5nKCJoZXgiKSksb310aHJvdyB0fSl9dmFyIHY9W107dmFyIG09ZnVuY3Rpb24odCl7ZnVuY3Rpb24gcigpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHIpO3ZhciBlPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9PXR5cGVvZiB0P2U6dH0odGhpcywoci5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihyKSkuY2FsbCh0aGlzKSk7cmV0dXJuIGUudW53cmFwPSEwLHYucHVzaChlKSxlfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfShyLGMuZGVmYXVsdCksYShyLG51bGwsW3trZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9aChuLm1hcmsoZnVuY3Rpb24gZSh0KXthcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO3JldHVybiBuLndyYXAoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG5ldyByKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19LGUsdGhpcyl9KSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCl9XSksYShyLFt7a2V5OiJleGNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1oKG4ubWFyayhmdW5jdGlvbiBlKHQpe3JldHVybiBuLndyYXAoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUucHJldj0wLGUubmV4dD0zLGcodCx0aGlzLmV4Y2hhbmdlVGltZW91dCx0aGlzLnNjcmFtYmxlS2V5LHRoaXMudW53cmFwKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA2OmlmKGUucHJldj02LGUudDA9ZS5jYXRjaCgwKSwhKCJvYmplY3QiPT09byhlLnQwLm1ldGFEYXRhKSkpe2UubmV4dD0xNDticmVha310aHJvdyA1PT09ZS50MC5tZXRhRGF0YS5jb2RlJiYodi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmVtaXQoImRpc2Nvbm5lY3QiKX0pLHY9W10pLHAoZS50MCwiRmFpbGVkIHRvIHNpZ24gd2l0aCBMZWRnZXIgZGV2aWNlOiBVMkYgIitlLnQwLm1ldGFEYXRhLnR5cGUsIlUyRl8iK2UudDAubWV0YURhdGEuY29kZSk7Y2FzZSAxNDp0aHJvdyBlLnQwO2Nhc2UgMTU6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19LGUsdGhpcyxbWzAsNl1dKX0pKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX0se2tleToic2V0U2NyYW1ibGVLZXkiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2NyYW1ibGVLZXk9ZS5mcm9tKHQsImFzY2lpIil9fSx7a2V5OiJzZXRVbndyYXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMudW53cmFwPWV9fSx7a2V5OiJjbG9zZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9fV0pLHJ9KCk7bS5pc1N1cHBvcnRlZD1zLmlzU3VwcG9ydGVkLG0ubGlzdD1mdW5jdGlvbigpe3JldHVybigwLHMuaXNTdXBwb3J0ZWQpKCkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZT9bbnVsbF06W119KX0sbS5saXN0ZW49ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7cmV0dXJuKDAscy5pc1N1cHBvcnRlZCkoKS50aGVuKGZ1bmN0aW9uKHIpe3R8fChyPyhlLm5leHQoe3R5cGU6ImFkZCIsZGVzY3JpcHRvcjpudWxsfSksZS5jb21wbGV0ZSgpKTplLmVycm9yKG5ldyBsLlRyYW5zcG9ydEVycm9yKCJVMkYgYnJvd3NlciBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgTGVkZ2VyLiBQbGVhc2UgdXNlIENocm9tZSwgT3BlcmEgb3IgRmlyZWZveCB3aXRoIGEgVTJGIGV4dGVuc2lvbi4gQWxzbyBtYWtlIHN1cmUgeW91J3JlIG9uIGFuIEhUVFBTIGNvbm5lY3Rpb24iLCJVMkZOb3RTdXBwb3J0ZWQiKSkpfSkse3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7dD0hMH19fSx0LmRlZmF1bHQ9bX0pLmNhbGwodGhpcyxyKDE4KS5CdWZmZXIpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1yKDkzNil9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe2UuZXhwb3J0cz1jO3ZhciBuPXIoOTM3KSxpPSJ1bmRlZmluZWQiIT09dHlwZW9mIG5hdmlnYXRvciYmISFuYXZpZ2F0b3IudXNlckFnZW50LG89aSYmbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvU2FmYXJpXC8vKSYmIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0Nocm9tZVwvLyksYT1pJiZuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9FZGdlXC8xWzIzNDVdLykscz1udWxsO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIHN8fChzPW5ldyBlKGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcigpe2Uoe3UyZjpudWxsLG5hdGl2ZTohMH0pfXJldHVybiBpP28/cigpOigidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cudTJmJiYiZnVuY3Rpb24iPT09dHlwZW9mIHdpbmRvdy51MmYuc2lnbiYmZSh7dTJmOndpbmRvdy51MmYsbmF0aXZlOiEwfSksYT9yKCk6Imh0dHA6Ij09PWxvY2F0aW9uLnByb3RvY29sP3IoKToidW5kZWZpbmVkIj09PXR5cGVvZiBNZXNzYWdlQ2hhbm5lbD9yKCk6dm9pZCBuLmlzU3VwcG9ydGVkKGZ1bmN0aW9uKHQpe3Q/ZSh7dTJmOm4sbmF0aXZlOiExfSk6cigpfSkpOnIoKX0pKSxzfWZ1bmN0aW9uIGMoZSl7cmV0dXJue2lzU3VwcG9ydGVkOmguYmluZChlKSxlbnN1cmVTdXBwb3J0OmQuYmluZChlKSxyZWdpc3Rlcjp5LmJpbmQoZSksc2lnbjpnLmJpbmQoZSksRXJyb3JDb2RlczpjLkVycm9yQ29kZXMsRXJyb3JOYW1lczpjLkVycm9yTmFtZXN9fWZ1bmN0aW9uIGYoZSx0KXt2YXIgcj1udWxsIT10P3QuZXJyb3JDb2RlOjEsbj1jLkVycm9yTmFtZXNbIiIrcl0saT1uZXcgRXJyb3IoZSk7cmV0dXJuIGkubWV0YURhdGE9e3R5cGU6bixjb2RlOnJ9LGl9ZnVuY3Rpb24gbChlLHQpe3ZhciByPXt9O3JldHVybiByLnByb21pc2U9bmV3IGUoZnVuY3Rpb24oZSxuKXtyLnJlc29sdmU9ZSxyLnJlamVjdD1uLHQudGhlbihlLG4pfSksci5wcm9taXNlLmNhbmNlbD1mdW5jdGlvbih0LG4pe3UoZSkudGhlbihmdW5jdGlvbihlKXtuJiYhZS5uYXRpdmUmJmUudTJmLmRpc2Nvbm5lY3QoKSxyLnJlamVjdChmKHQse2Vycm9yQ29kZTotMX0pKX0pfSxyfWZ1bmN0aW9uIGgoKXtyZXR1cm4gdSh0aGlzKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiEhZS51MmZ9KX1mdW5jdGlvbiBwKGUpe2lmKCFlLnUyZil7aWYoImh0dHA6Ij09PWxvY2F0aW9uLnByb3RvY29sKXRocm93IG5ldyBFcnJvcigiVTJGIGlzbid0IHN1cHBvcnRlZCBvdmVyIGh0dHAsIG9ubHkgaHR0cHMiKTt0aHJvdyBuZXcgRXJyb3IoIlUyRiBub3Qgc3VwcG9ydGVkIil9fWZ1bmN0aW9uIGQoKXtyZXR1cm4gdSh0aGlzKS50aGVuKHApfWZ1bmN0aW9uIHkoZSx0LHIpe3ZhciBuPXRoaXM7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSksIm51bWJlciI9PT10eXBlb2YgdCYmInVuZGVmaW5lZCI9PT10eXBlb2YgciYmKHI9dCx0PW51bGwpLHR8fCh0PVtdKSxsKG4sdShuKS50aGVuKGZ1bmN0aW9uKGkpe3AoaSk7dmFyIG89aS5uYXRpdmUsYT1pLnUyZjtyZXR1cm4gbmV3IG4oZnVuY3Rpb24obixpKXtpZihvKXt2YXIgcz1lWzBdLmFwcElkO2EucmVnaXN0ZXIocyxlLHQsZnVuY3Rpb24oZSl7ZS5lcnJvckNvZGU/aShmKCJSZWdpc3RyYXRpb24gZmFpbGVkIixlKSk6KGRlbGV0ZSBlLmVycm9yQ29kZSxuKGUpKX0scil9ZWxzZSBhLnJlZ2lzdGVyKGUsdCxmdW5jdGlvbihlLHQpe2U/aShlKTp0LmVycm9yQ29kZT9pKGYoIlJlZ2lzdHJhdGlvbiBmYWlsZWQiLHQpKTpuKHQpfSxyKX0pfSkpLnByb21pc2V9ZnVuY3Rpb24gZyhlLHQpe3ZhciByPXRoaXM7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSksbChyLHUocikudGhlbihmdW5jdGlvbihuKXtwKG4pO3ZhciBpPW4ubmF0aXZlLG89bi51MmY7cmV0dXJuIG5ldyByKGZ1bmN0aW9uKHIsbil7aWYoaSl7dmFyIGE9ZVswXS5hcHBJZCxzPWVbMF0uY2hhbGxlbmdlO28uc2lnbihhLHMsZSxmdW5jdGlvbihlKXtlLmVycm9yQ29kZT9uKGYoIlNpZ24gZmFpbGVkIixlKSk6KGRlbGV0ZSBlLmVycm9yQ29kZSxyKGUpKX0sdCl9ZWxzZSBvLnNpZ24oZSxmdW5jdGlvbihlLHQpe2U/bihlKTp0LmVycm9yQ29kZT9uKGYoIlNpZ24gZmFpbGVkIix0KSk6cih0KX0sdCl9KX0pKS5wcm9taXNlfWZ1bmN0aW9uIHYoZSl7Y1tlXT1mdW5jdGlvbigpe2lmKCF0LlByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJUaGUgcGxhdGZvcm0gZG9lc24ndCBuYXRpdmVseSBzdXBwb3J0IHByb21pc2VzIik7dmFyIHI9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO3JldHVybiBjKHQuUHJvbWlzZSlbZV0uYXBwbHkobnVsbCxyKX19Yy5FcnJvckNvZGVzPXtDQU5DRUxMRUQ6LTEsT0s6MCxPVEhFUl9FUlJPUjoxLEJBRF9SRVFVRVNUOjIsQ09ORklHVVJBVElPTl9VTlNVUFBPUlRFRDozLERFVklDRV9JTkVMSUdJQkxFOjQsVElNRU9VVDo1fSxjLkVycm9yTmFtZXM9eyItMSI6IkNBTkNFTExFRCIsMDoiT0siLDE6Ik9USEVSX0VSUk9SIiwyOiJCQURfUkVRVUVTVCIsMzoiQ09ORklHVVJBVElPTl9VTlNVUFBPUlRFRCIsNDoiREVWSUNFX0lORUxJR0lCTEUiLDU6IlRJTUVPVVQifSx2KCJpc1N1cHBvcnRlZCIpLHYoImVuc3VyZVN1cHBvcnQiKSx2KCJyZWdpc3RlciIpLHYoInNpZ24iKX0pLmNhbGwodGhpcyxyKDM0KSl9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49bnx8e307ZS5leHBvcnRzPW4sbi5FWFRFTlNJT05fSUQ9ImttZW5kZmFwZ2dqZWhvZG5kZmxtbWdhZ2RiYW1obmZkIixuLk1lc3NhZ2VUeXBlcz17VTJGX1JFR0lTVEVSX1JFUVVFU1Q6InUyZl9yZWdpc3Rlcl9yZXF1ZXN0IixVMkZfU0lHTl9SRVFVRVNUOiJ1MmZfc2lnbl9yZXF1ZXN0IixVMkZfUkVHSVNURVJfUkVTUE9OU0U6InUyZl9yZWdpc3Rlcl9yZXNwb25zZSIsVTJGX1NJR05fUkVTUE9OU0U6InUyZl9zaWduX3Jlc3BvbnNlIn0sbi5FcnJvckNvZGVzPXtPSzowLE9USEVSX0VSUk9SOjEsQkFEX1JFUVVFU1Q6MixDT05GSUdVUkFUSU9OX1VOU1VQUE9SVEVEOjMsREVWSUNFX0lORUxJR0lCTEU6NCxUSU1FT1VUOjV9LG4uUmVxdWVzdCxuLlJlc3BvbnNlLG4uRXJyb3Isbi5TaWduUmVxdWVzdCxuLlNpZ25SZXNwb25zZSxuLlJlZ2lzdGVyUmVxdWVzdCxuLlJlZ2lzdGVyUmU="
}