3NAxHUEaM6RAG7rVDPL9L6DFZWkrqFtY98t · data · 2.7c767379.chunk.js_43
{
    "2.7c767379.chunk.js_43": "base64:P21bYisrXT1QW3ddfHwwOihtPVtQW3ddXSxiPTEpfXdoaWxlKCh3Kys8QXx8dm9pZCAwIT09bVswXSkmJlMtLSl9cmV0dXJuIHZbMF18fHYuc2hpZnQoKSxkLmU9dSxrKGQsYT9vK1QoZCkrMTpvKX19KCk7ZnVuY3Rpb24gdyhlLHQpe3ZhciByLG4saSxhLHMsYz0wLGY9MCxoPWUuY29uc3RydWN0b3IsZD1oLnByZWNpc2lvbjtpZihUKGUpPjE2KXRocm93IEVycm9yKGwrVChlKSk7aWYoIWUucylyZXR1cm4gbmV3IGgobyk7Zm9yKG51bGw9PXQ/KHU9ITEscz1kKTpzPXQsYT1uZXcgaCguMDMxMjUpO2UuYWJzKCkuZ3RlKC4xKTspZT1lLnRpbWVzKGEpLGYrPTU7Zm9yKHMrPU1hdGgubG9nKHAoMixmKSkvTWF0aC5MTjEwKjIrNXwwLHI9bj1pPW5ldyBoKG8pLGgucHJlY2lzaW9uPXM7Oyl7aWYobj1rKG4udGltZXMoZSkscykscj1yLnRpbWVzKCsrYyksUygoYT1pLnBsdXMoRShuLHIscykpKS5kKS5zbGljZSgwLHMpPT09UyhpLmQpLnNsaWNlKDAscykpe2Zvcig7Zi0tOylpPWsoaS50aW1lcyhpKSxzKTtyZXR1cm4gaC5wcmVjaXNpb249ZCxudWxsPT10Pyh1PSEwLGsoaSxkKSk6aX1pPWF9fWZ1bmN0aW9uIFQoZSl7Zm9yKHZhciB0PWUuZSpnLHI9ZS5kWzBdO3I+PTEwO3IvPTEwKXQrKztyZXR1cm4gdH1mdW5jdGlvbiBBKGUsdCxyKXtpZih0PmUuTE4xMC5zZCgpKXRocm93IHU9ITAsciYmKGUucHJlY2lzaW9uPXIpLEVycm9yKGMrIkxOMTAgcHJlY2lzaW9uIGxpbWl0IGV4Y2VlZGVkIik7cmV0dXJuIGsobmV3IGUoZS5MTjEwKSx0KX1mdW5jdGlvbiBDKGUpe2Zvcih2YXIgdD0iIjtlLS07KXQrPSIwIjtyZXR1cm4gdH1mdW5jdGlvbiB4KGUsdCl7dmFyIHIsbixpLGEscyxmLGwsaCxwLGQ9MSx5PWUsZz15LmQsdj15LmNvbnN0cnVjdG9yLG09di5wcmVjaXNpb247aWYoeS5zPDEpdGhyb3cgRXJyb3IoYysoeS5zPyJOYU4iOiItSW5maW5pdHkiKSk7aWYoeS5lcShvKSlyZXR1cm4gbmV3IHYoMCk7aWYobnVsbD09dD8odT0hMSxoPW0pOmg9dCx5LmVxKDEwKSlyZXR1cm4gbnVsbD09dCYmKHU9ITApLEEodixoKTtpZihoKz0xMCx2LnByZWNpc2lvbj1oLG49KHI9UyhnKSkuY2hhckF0KDApLGE9VCh5KSwhKE1hdGguYWJzKGEpPDE1ZTE0KSlyZXR1cm4gbD1BKHYsaCsyLG0pLnRpbWVzKGErIiIpLHk9eChuZXcgdihuKyIuIityLnNsaWNlKDEpKSxoLTEwKS5wbHVzKGwpLHYucHJlY2lzaW9uPW0sbnVsbD09dD8odT0hMCxrKHksbSkpOnk7Zm9yKDtuPDcmJjEhPW58fDE9PW4mJnIuY2hhckF0KDEpPjM7KW49KHI9UygoeT15LnRpbWVzKGUpKS5kKSkuY2hhckF0KDApLGQrKztmb3IoYT1UKHkpLG4+MT8oeT1uZXcgdigiMC4iK3IpLGErKyk6eT1uZXcgdihuKyIuIityLnNsaWNlKDEpKSxmPXM9eT1FKHkubWludXMobykseS5wbHVzKG8pLGgpLHA9ayh5LnRpbWVzKHkpLGgpLGk9Mzs7KXtpZihzPWsocy50aW1lcyhwKSxoKSxTKChsPWYucGx1cyhFKHMsbmV3IHYoaSksaCkpKS5kKS5zbGljZSgwLGgpPT09UyhmLmQpLnNsaWNlKDAsaCkpcmV0dXJuIGY9Zi50aW1lcygyKSwwIT09YSYmKGY9Zi5wbHVzKEEodixoKzIsbSkudGltZXMoYSsiIikpKSxmPUUoZixuZXcgdihkKSxoKSx2LnByZWNpc2lvbj1tLG51bGw9PXQ/KHU9ITAsayhmLG0pKTpmO2Y9bCxpKz0yfX1mdW5jdGlvbiBJKGUsdCl7dmFyIHIsbixpO2Zvcigocj10LmluZGV4T2YoIi4iKSk+LTEmJih0PXQucmVwbGFjZSgiLiIsIiIpKSwobj10LnNlYXJjaCgvZS9pKSk+MD8ocjwwJiYocj1uKSxyKz0rdC5zbGljZShuKzEpLHQ9dC5zdWJzdHJpbmcoMCxuKSk6cjwwJiYocj10Lmxlbmd0aCksbj0wOzQ4PT09dC5jaGFyQ29kZUF0KG4pOykrK247Zm9yKGk9dC5sZW5ndGg7NDg9PT10LmNoYXJDb2RlQXQoaS0xKTspLS1pO2lmKHQ9dC5zbGljZShuLGkpKXtpZihpLT1uLHI9ci1uLTEsZS5lPWgoci9nKSxlLmQ9W10sbj0ocisxKSVnLHI8MCYmKG4rPWcpLG48aSl7Zm9yKG4mJmUuZC5wdXNoKCt0LnNsaWNlKDAsbikpLGktPWc7bjxpOyllLmQucHVzaCgrdC5zbGljZShuLG4rPWcpKTt0PXQuc2xpY2Uobiksbj1nLXQubGVuZ3RofWVsc2Ugbi09aTtmb3IoO24tLTspdCs9IjAiO2lmKGUuZC5wdXNoKCt0KSx1JiYoZS5lPnZ8fGUuZTwtdikpdGhyb3cgRXJyb3IobCtyKX1lbHNlIGUucz0wLGUuZT0wLGUuZD1bMF07cmV0dXJuIGV9ZnVuY3Rpb24gayhlLHQscil7dmFyIG4saSxvLGEscyxjLGYsZCxtPWUuZDtmb3IoYT0xLG89bVswXTtvPj0xMDtvLz0xMClhKys7aWYoKG49dC1hKTwwKW4rPWcsaT10LGY9bVtkPTBdO2Vsc2V7aWYoKGQ9TWF0aC5jZWlsKChuKzEpL2cpKT49KG89bS5sZW5ndGgpKXJldHVybiBlO2ZvcihmPW89bVtkXSxhPTE7bz49MTA7by89MTApYSsrO2k9KG4lPWcpLWcrYX1pZih2b2lkIDAhPT1yJiYocz1mLyhvPXAoMTAsYS1pLTEpKSUxMHwwLGM9dDwwfHx2b2lkIDAhPT1tW2QrMV18fGYlbyxjPXI8ND8oc3x8YykmJigwPT1yfHxyPT0oZS5zPDA/MzoyKSk6cz41fHw1PT1zJiYoND09cnx8Y3x8Nj09ciYmKG4+MD9pPjA/Zi9wKDEwLGEtaSk6MDptW2QtMV0pJTEwJjF8fHI9PShlLnM8MD84OjcpKSksdDwxfHwhbVswXSlyZXR1cm4gYz8obz1UKGUpLG0ubGVuZ3RoPTEsdD10LW8tMSxtWzBdPXAoMTAsKGctdCVnKSVnKSxlLmU9aCgtdC9nKXx8MCk6KG0ubGVuZ3RoPTEsbVswXT1lLmU9ZS5zPTApLGU7aWYoMD09bj8obS5sZW5ndGg9ZCxvPTEsZC0tKToobS5sZW5ndGg9ZCsxLG89cCgxMCxnLW4pLG1bZF09aT4wPyhmL3AoMTAsYS1pKSVwKDEwLGkpfDApKm86MCksYylmb3IoOzspe2lmKDA9PWQpeyhtWzBdKz1vKT09eSYmKG1bMF09MSwrK2UuZSk7YnJlYWt9aWYobVtkXSs9byxtW2RdIT15KWJyZWFrO21bZC0tXT0wLG89MX1mb3Iobj1tLmxlbmd0aDswPT09bVstLW5dOyltLnBvcCgpO2lmKHUmJihlLmU+dnx8ZS5lPC12KSl0aHJvdyBFcnJvcihsK1QoZSkpO3JldHVybiBlfWZ1bmN0aW9uIE8oZSx0KXt2YXIgcixuLGksbyxhLHMsYyxmLGwsaCxwPWUuY29uc3RydWN0b3IsZD1wLnByZWNpc2lvbjtpZighZS5zfHwhdC5zKXJldHVybiB0LnM/dC5zPS10LnM6dD1uZXcgcChlKSx1P2sodCxkKTp0O2lmKGM9ZS5kLGg9dC5kLG49dC5lLGY9ZS5lLGM9Yy5zbGljZSgpLGE9Zi1uKXtmb3IoKGw9YTwwKT8ocj1jLGE9LWEscz1oLmxlbmd0aCk6KHI9aCxuPWYscz1jLmxlbmd0aCksYT4oaT1NYXRoLm1heChNYXRoLmNlaWwoZC9nKSxzKSsyKSYmKGE9aSxyLmxlbmd0aD0xKSxyLnJldmVyc2UoKSxpPWE7aS0tOylyLnB1c2goMCk7ci5yZXZlcnNlKCl9ZWxzZXtmb3IoKGw9KGk9Yy5sZW5ndGgpPChzPWgubGVuZ3RoKSkmJihzPWkpLGk9MDtpPHM7aSsrKWlmKGNbaV0hPWhbaV0pe2w9Y1tpXTxoW2ldO2JyZWFrfWE9MH1mb3IobCYmKHI9YyxjPWgsaD1yLHQucz0tdC5zKSxzPWMubGVuZ3RoLGk9aC5sZW5ndGgtcztpPjA7LS1pKWNbcysrXT0wO2ZvcihpPWgubGVuZ3RoO2k+YTspe2lmKGNbLS1pXTxoW2ldKXtmb3Iobz1pO28mJjA9PT1jWy0tb107KWNbb109eS0xOy0tY1tvXSxjW2ldKz15fWNbaV0tPWhbaV19Zm9yKDswPT09Y1stLXNdOyljLnBvcCgpO2Zvcig7MD09PWNbMF07Yy5zaGlmdCgpKS0tbjtyZXR1cm4gY1swXT8odC5kPWMsdC5lPW4sdT9rKHQsZCk6dCk6bmV3IHAoMCl9ZnVuY3Rpb24gTihlLHQscil7dmFyIG4saT1UKGUpLG89UyhlLmQpLGE9by5sZW5ndGg7cmV0dXJuIHQ/KHImJihuPXItYSk+MD9vPW8uY2hhckF0KDApKyIuIitvLnNsaWNlKDEpK0Mobik6YT4xJiYobz1vLmNoYXJBdCgwKSsiLiIrby5zbGljZSgxKSksbz1vKyhpPDA/ImUiOiJlKyIpK2kpOmk8MD8obz0iMC4iK0MoLWktMSkrbyxyJiYobj1yLWEpPjAmJihvKz1DKG4pKSk6aT49YT8obys9QyhpKzEtYSksciYmKG49ci1pLTEpPjAmJihvPW8rIi4iK0MobikpKTooKG49aSsxKTxhJiYobz1vLnNsaWNlKDAsbikrIi4iK28uc2xpY2UobikpLHImJihuPXItYSk+MCYmKGkrMT09PWEmJihvKz0iLiIpLG8rPUMobikpKSxlLnM8MD8iLSIrbzpvfWZ1bmN0aW9uIFAoZSx0KXtpZihlLmxlbmd0aD50KXJldHVybiBlLmxlbmd0aD10LCEwfWZ1bmN0aW9uIFIoZSl7aWYoIWV8fCJvYmplY3QiIT09dHlwZW9mIGUpdGhyb3cgRXJyb3IoYysiT2JqZWN0IGV4cGVjdGVkIik7dmFyIHQscixuLGk9WyJwcmVjaXNpb24iLDEsYSwicm91bmRpbmciLDAsOCwidG9FeHBOZWciLC0xLzAsMCwidG9FeHBQb3MiLDAsMS8wXTtmb3IodD0wO3Q8aS5sZW5ndGg7dCs9MylpZih2b2lkIDAhPT0obj1lW3I9aVt0XV0pKXtpZighKGgobik9PT1uJiZuPj1pW3QrMV0mJm48PWlbdCsyXSkpdGhyb3cgRXJyb3IoZityKyI6ICIrbik7dGhpc1tyXT1ufWlmKHZvaWQgMCE9PShuPWVbcj0iTE4xMCJdKSl7aWYobiE9TWF0aC5MTjEwKXRocm93IEVycm9yKGYrcisiOiAiK24pO3RoaXNbcl09bmV3IHRoaXMobil9cmV0dXJuIHRoaXN9KHM9ZnVuY3Rpb24gZSh0KXt2YXIgcixuLGk7ZnVuY3Rpb24gbyhlKXt2YXIgdD10aGlzO2lmKCEodCBpbnN0YW5jZW9mIG8pKXJldHVybiBuZXcgbyhlKTtpZih0LmNvbnN0cnVjdG9yPW8sZSBpbnN0YW5jZW9mIG8pcmV0dXJuIHQucz1lLnMsdC5lPWUuZSx2b2lkKHQuZD0oZT1lLmQpP2Uuc2xpY2UoKTplKTtpZigibnVtYmVyIj09PXR5cGVvZiBlKXtpZigwKmUhPT0wKXRocm93IEVycm9yKGYrZSk7aWYoZT4wKXQucz0xO2Vsc2V7aWYoIShlPDApKXJldHVybiB0LnM9MCx0LmU9MCx2b2lkKHQuZD1bMF0pO2U9LWUsdC5zPS0xfXJldHVybiBlPT09fn5lJiZlPDFlNz8odC5lPTAsdm9pZCh0LmQ9W2VdKSk6SSh0LGUudG9TdHJpbmcoKSl9aWYoInN0cmluZyIhPT10eXBlb2YgZSl0aHJvdyBFcnJvcihmK2UpO2lmKDQ1PT09ZS5jaGFyQ29kZUF0KDApPyhlPWUuc2xpY2UoMSksdC5zPS0xKTp0LnM9MSwhZC50ZXN0KGUpKXRocm93IEVycm9yKGYrZSk7SSh0LGUpfWlmKG8ucHJvdG90eXBlPW0sby5ST1VORF9VUD0wLG8uUk9VTkRfRE9XTj0xLG8uUk9VTkRfQ0VJTD0yLG8uUk9VTkRfRkxPT1I9MyxvLlJPVU5EX0hBTEZfVVA9NCxvLlJPVU5EX0hBTEZfRE9XTj01LG8uUk9VTkRfSEFMRl9FVkVOPTYsby5ST1VORF9IQUxGX0NFSUw9NyxvLlJPVU5EX0hBTEZfRkxPT1I9OCxvLmNsb25lPWUsby5jb25maWc9by5zZXQ9Uix2b2lkIDA9PT10JiYodD17fSksdClmb3IoaT1bInByZWNpc2lvbiIsInJvdW5kaW5nIiwidG9FeHBOZWciLCJ0b0V4cFBvcyIsIkxOMTAiXSxyPTA7cjxpLmxlbmd0aDspdC5oYXNPd25Qcm9wZXJ0eShuPWlbcisrXSl8fCh0W25dPXRoaXNbbl0pO3JldHVybiBvLmNvbmZpZyh0KSxvfShzKSkuZGVmYXVsdD1zLkRlY2ltYWw9cyxvPW5ldyBzKDEpLHZvaWQgMD09PShuPWZ1bmN0aW9uKCl7cmV0dXJuIHN9LmNhbGwodCxyLHQsZSkpfHwoZS5leHBvcnRzPW4pfSgpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLHI9bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQubWVtb2l6ZT10LnJldmVyc2U9dC5jb21wb3NlPXQubWFwPXQucmFuZ2U9dC5jdXJyeT10LlBMQUNFX0hPTERFUj12b2lkIDA7dmFyIGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LG89eyJAQGZ1bmN0aW9uYWwvcGxhY2Vob2xkZXIiOiEwfTt0LlBMQUNFX0hPTERFUj1vO3ZhciBhPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09b30scz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gdCgpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aHx8MT09PWFyZ3VtZW50cy5sZW5ndGgmJmEoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKT90OmUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fSx1PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbiBlKHQscil7cmV0dXJuIDE9PT10P3I6cyhmdW5jdGlvbigpe2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLHU9bmV3IEFycmF5KGkpLGM9MDtjPGk7YysrKXVbY109YXJndW1lbnRzW2NdO3ZhciBmPXUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09b30pLmxlbmd0aDtyZXR1cm4gZj49dD9yLmFwcGx5KHZvaWQgMCx1KTplKHQtZixzKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksaT0wO2k8ZTtpKyspdFtpXT1hcmd1bWVudHNbaV07dmFyIG89dS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSk/dC5zaGlmdCgpOmV9KTtyZXR1cm4gci5hcHBseSh2b2lkIDAsbihvKS5jb25jYXQodCkpfSkpfSl9KGUubGVuZ3RoLGUpfTt0LmN1cnJ5PXU7dC5yYW5nZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1bXSxuPWU7bjx0OysrbilyW24tZV09bjtyZXR1cm4gcn07dmFyIGM9dShmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKGUpOk9iamVjdC5rZXlzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pLm1hcChlKX0pO3QubWFwPWM7dC5jb21wb3NlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07aWYoIXQubGVuZ3RoKXJldHVybiBpO3ZhciBuPXQucmV2ZXJzZSgpLG89blswXSxhPW4uc2xpY2UoMSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQoZSl9LG8uYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfX07dC5yZXZlcnNlPWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UucmV2ZXJzZSgpOmUuc3BsaXQoIiIpLnJldmVyc2Uuam9pbigiIil9O3QubWVtb2l6ZT1mdW5jdGlvbihlKXt2YXIgdD1udWxsLHI9bnVsbDtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShuKSxvPTA7bzxuO28rKylpW29dPWFyZ3VtZW50c1tvXTtyZXR1cm4gdCYmaS5ldmVyeShmdW5jdGlvbihlLHIpe3JldHVybiBlPT09dFtyXX0pP3I6KHQ9aSxyPWUuYXBwbHkodm9pZCAwLGkpKX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDgxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKG51bGw9PWV8fCFlLmxlbmd0aCkmJm4oZSx0LDApPi0xfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbil7Zm9yKHZhciBpPWUubGVuZ3RoLG89cisobj8xOi0xKTtuP28tLTorK288aTspaWYodChlW29dLG8sZSkpcmV0dXJuIG87cmV0dXJuLTF9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPS0xLGk9bnVsbD09ZT8wOmUubGVuZ3RoOysrbjxpOylpZihyKHQsZVtuXSkpcmV0dXJuITA7cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dC5FWElUSU5HPXQuRU5URVJFRD10LkVOVEVSSU5HPXQuRVhJVEVEPXQuVU5NT1VOVEVEPXZvaWQgMDt2YXIgbj1mdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIHIgaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSl7dmFyIG49T2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKTp7fTtuLmdldHx8bi5zZXQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixuKTp0W3JdPWVbcl19cmV0dXJuIHQuZGVmYXVsdD1lLHR9KHIoMCkpLGk9cyhyKDEpKSxvPXMocigyMDApKSxhPXIoNDk4KTtyKDQ5OSk7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHU9InVubW91bnRlZCI7dC5VTk1PVU5URUQ9dTt2YXIgYz0iZXhpdGVkIjt0LkVYSVRFRD1jO3ZhciBmPSJlbnRlcmluZyI7dC5FTlRFUklORz1mO3ZhciBsPSJlbnRlcmVkIjt0LkVOVEVSRUQ9bDt0LkVYSVRJTkc9ImV4aXRpbmciO3ZhciBoPWZ1bmN0aW9uKGUpe3ZhciB0LHI7ZnVuY3Rpb24gbih0LHIpe3ZhciBuO249ZS5jYWxsKHRoaXMsdCxyKXx8dGhpczt2YXIgaSxvPXIudHJhbnNpdGlvbkdyb3VwLGE9byYmIW8uaXNNb3VudGluZz90LmVudGVyOnQuYXBwZWFyO3JldHVybiBuLmFwcGVhclN0YXR1cz1udWxsLHQuaW4/YT8oaT1jLG4uYXBwZWFyU3RhdHVzPWYpOmk9bDppPXQudW5tb3VudE9uRXhpdHx8dC5tb3VudE9uRW50ZXI/dTpjLG4uc3RhdGU9e3N0YXR1czppfSxuLm5leHRDYWxsYmFjaz1udWxsLG59cj1lLCh0PW4pLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHIucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPXI7dmFyIGE9bi5wcm90b3R5cGU7cmV0dXJuIGEuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJue3RyYW5zaXRpb25Hcm91cDpudWxsfX0sbi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pbiYmdC5zdGF0dXM9PT11P3tzdGF0dXM6Y306bnVsbH0sYS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMudXBkYXRlU3RhdHVzKCEwLHRoaXMuYXBwZWFyU3RhdHVzKX0sYS5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZihlIT09dGhpcy5wcm9wcyl7dmFyIHI9dGhpcy5zdGF0ZS5zdGF0dXM7dGhpcy5wcm9wcy5pbj9yIT09ZiYmciE9PWwmJih0PWYpOnIhPT1mJiZyIT09bHx8KHQ9ImV4aXRpbmciKX10aGlzLnVwZGF0ZVN0YXR1cyghMSx0KX0sYS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCl9LGEuZ2V0VGltZW91dHM9ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbj10aGlzLnByb3BzLnRpbWVvdXQ7cmV0dXJuIGU9dD1yPW4sbnVsbCE9biYmIm51bWJlciIhPT10eXBlb2YgbiYmKGU9bi5leGl0LHQ9bi5lbnRlcixyPXZvaWQgMCE9PW4uYXBwZWFyP24uYXBwZWFyOnQpLHtleGl0OmUsZW50ZXI6dCxhcHBlYXI6cn19LGEudXBkYXRlU3RhdHVzPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09ZSYmKGU9ITEpLG51bGwhPT10KXt0aGlzLmNhbmNlbE5leHRDYWxsYmFjaygpO3ZhciByPW8uZGVmYXVsdC5maW5kRE9NTm9kZSh0aGlzKTt0PT09Zj90aGlzLnBlcmZvcm1FbnRlcihyLGUpOnRoaXMucGVyZm9ybUV4aXQocil9ZWxzZSB0aGlzLnByb3BzLnVubW91bnRPbkV4aXQmJnRoaXMuc3RhdGUuc3RhdHVzPT09YyYmdGhpcy5zZXRTdGF0ZSh7c3RhdHVzOnV9KX0sYS5wZXJmb3JtRW50ZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49dGhpcy5wcm9wcy5lbnRlcixpPXRoaXMuY29udGV4dC50cmFuc2l0aW9uR3JvdXA/dGhpcy5jb250ZXh0LnRyYW5zaXRpb25Hcm91cC5pc01vdW50aW5nOnQsbz10aGlzLmdldFRpbWVvdXRzKCksYT1pP28uYXBwZWFyOm8uZW50ZXI7dHx8bj8odGhpcy5wcm9wcy5vbkVudGVyKGUsaSksdGhpcy5zYWZlU2V0U3RhdGUoe3N0YXR1czpmfSxmdW5jdGlvbigpe3IucHJvcHMub25FbnRlcmluZyhlLGkpLHIub25UcmFuc2l0aW9uRW5kKGUsYSxmdW5jdGlvbigpe3Iuc2FmZVNldFN0YXRlKHtzdGF0dXM6bH0sZnVuY3Rpb24oKXtyLnByb3BzLm9uRW50ZXJlZChlLGkpfSl9KX0pKTp0aGlzLnNhZmVTZXRTdGF0ZSh7c3RhdHVzOmx9LGZ1bmN0aW9uKCl7ci5wcm9wcy5vbkVudGVyZWQoZSl9KX0sYS5wZXJmb3JtRXhpdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9dGhpcy5wcm9wcy5leGl0LG49dGhpcy5nZXRUaW1lb3V0cygpO3I/KHRoaXMucHJvcHMub25FeGl0KGUpLHRoaXMuc2FmZVNldFN0YXRlKHtzdGF0dXM6ImV4aXRpbmcifSxmdW5jdGlvbigpe3QucHJvcHMub25FeGl0aW5nKGUpLHQub25UcmFuc2l0aW9uRW5kKGUsbi5leGl0LGZ1bmN0aW9uKCl7dC5zYWZlU2V0U3RhdGUoe3N0YXR1czpjfSxmdW5jdGlvbigpe3QucHJvcHMub25FeGl0ZWQoZSl9KX0pfSkpOnRoaXMuc2FmZVNldFN0YXRlKHtzdGF0dXM6Y30sZnVuY3Rpb24oKXt0LnByb3BzLm9uRXhpdGVkKGUpfSl9LGEuY2FuY2VsTmV4dENhbGxiYWNrPWZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMubmV4dENhbGxiYWNrJiYodGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsKCksdGhpcy5uZXh0Q2FsbGJhY2s9bnVsbCl9LGEuc2FmZVNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7dD10aGlzLnNldE5leHRDYWxsYmFjayh0KSx0aGlzLnNldFN0YXRlKGUsdCl9LGEuc2V0TmV4dENhbGxiYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj0hMDtyZXR1cm4gdGhpcy5uZXh0Q2FsbGJhY2s9ZnVuY3Rpb24obil7ciYmKHI9ITEsdC5uZXh0Q2FsbGJhY2s9bnVsbCxlKG4pKX0sdGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsPWZ1bmN0aW9uKCl7cj0hMX0sdGhpcy5uZXh0Q2FsbGJhY2t9LGEub25UcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLnNldE5leHRDYWxsYmFjayhyKTt2YXIgbj1udWxsPT10JiYhdGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcjtlJiYhbj8odGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lciYmdGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcihlLHRoaXMubmV4dENhbGxiYWNrKSxudWxsIT10JiZzZXRUaW1lb3V0KHRoaXMubmV4dENhbGxiYWNrLHQpKTpzZXRUaW1lb3V0KHRoaXMubmV4dENhbGxiYWNrLDApfSxhLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUuc3RhdHVzO2lmKGU9PT11KXJldHVybiBudWxsO3ZhciB0PXRoaXMucHJvcHMscj10LmNoaWxkcmVuLG49ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4saT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGlbcl09ZVtyXSk7cmV0dXJuIGl9KHQsWyJjaGlsZHJlbiJdKTtpZihkZWxldGUgbi5pbixkZWxldGUgbi5tb3VudE9uRW50ZXIsZGVsZXRlIG4udW5tb3VudE9uRXhpdCxkZWxldGUgbi5hcHBlYXIsZGVsZXRlIG4uZW50ZXIsZGVsZXRlIG4uZXhpdCxkZWxldGUgbi50aW1lb3V0LGRlbGV0ZSBuLmFkZEVuZExpc3RlbmVyLGRlbGV0ZSBuLm9uRW50ZXIsZGVsZXRlIG4ub25FbnRlcmluZyxkZWxldGUgbi5vbkVudGVyZWQsZGVsZXRlIG4ub25FeGl0LGRlbGV0ZSBuLm9uRXhpdGluZyxkZWxldGUgbi5vbkV4aXRlZCwiZnVuY3Rpb24iPT09dHlwZW9mIHIpcmV0dXJuIHIoZSxuKTt2YXIgbz1pLmRlZmF1bHQuQ2hpbGRyZW4ub25seShyKTtyZXR1cm4gaS5kZWZhdWx0LmNsb25lRWxlbWVudChvLG4pfSxufShpLmRlZmF1bHQuQ29tcG9uZW50KTtmdW5jdGlvbiBwKCl7fWguY29udGV4dFR5cGVzPXt0cmFuc2l0aW9uR3JvdXA6bi5vYmplY3R9LGguY2hpbGRDb250ZXh0VHlwZXM9e3RyYW5zaXRpb25Hcm91cDpmdW5jdGlvbigpe319LGgucHJvcFR5cGVzPXt9LGguZGVmYXVsdFByb3BzPXtpbjohMSxtb3VudE9uRW50ZXI6ITEsdW5tb3VudE9uRXhpdDohMSxhcHBlYXI6ITEsZW50ZXI6ITAsZXhpdDohMCxvbkVudGVyOnAsb25FbnRlcmluZzpwLG9uRW50ZXJlZDpwLG9uRXhpdDpwLG9uRXhpdGluZzpwLG9uRXhpdGVkOnB9LGguVU5NT1VOVEVEPTAsaC5FWElURUQ9MSxoLkVOVEVSSU5HPTIsaC5FTlRFUkVEPTMsaC5FWElUSU5HPTQ7dmFyIGQ9KDAsYS5wb2x5ZmlsbCkoaCk7dC5kZWZhdWx0PWR9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3ZhciBlPXRoaXMuY29uc3RydWN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHRoaXMucHJvcHMsdGhpcy5zdGF0ZSk7bnVsbCE9PWUmJnZvaWQgMCE9PWUmJnRoaXMuc2V0U3RhdGUoZSl9ZnVuY3Rpb24gaShlKXt0aGlzLnNldFN0YXRlKGZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuY29uc3RydWN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKGUsdCk7cmV0dXJuIG51bGwhPT1yJiZ2b2lkIDAhPT1yP3I6bnVsbH0uYmluZCh0aGlzKSl9ZnVuY3Rpb24gbyhlLHQpe3RyeXt2YXIgcj10aGlzLnByb3BzLG49dGhpcy5zdGF0ZTt0aGlzLnByb3BzPWUsdGhpcy5zdGF0ZT10LHRoaXMuX19yZWFjdEludGVybmFsU25hcHNob3RGbGFnPSEwLHRoaXMuX19yZWFjdEludGVybmFsU25hcHNob3Q9dGhpcy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShyLG4pfWZpbmFsbHl7dGhpcy5wcm9wcz1yLHRoaXMuc3RhdGU9bn19ZnVuY3Rpb24gYShlKXt2YXIgdD1lLnByb3RvdHlwZTtpZighdHx8IXQuaXNSZWFjdENvbXBvbmVudCl0aHJvdyBuZXcgRXJyb3IoIkNhbiBvbmx5IHBvbHlmaWxsIGNsYXNzIGNvbXBvbmVudHMiKTtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiYiZnVuY3Rpb24iIT09dHlwZW9mIHQuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpcmV0dXJuIGU7dmFyIHI9bnVsbCxhPW51bGwscz1udWxsO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgdC5jb21wb25lbnRXaWxsTW91bnQ/cj0iY29tcG9uZW50V2lsbE1vdW50IjoiZnVuY3Rpb24iPT09dHlwZW9mIHQuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmKHI9IlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQiKSwiZnVuY3Rpb24iPT09dHlwZW9mIHQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz9hPSJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIjoiZnVuY3Rpb24iPT09dHlwZW9mIHQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJihhPSJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIpLCJmdW5jdGlvbiI9PT10eXBlb2YgdC5jb21wb25lbnRXaWxsVXBkYXRlP3M9ImNvbXBvbmVudFdpbGxVcGRhdGUiOiJmdW5jdGlvbiI9PT10eXBlb2YgdC5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmKHM9IlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlIiksbnVsbCE9PXJ8fG51bGwhPT1hfHxudWxsIT09cyl7dmFyIHU9ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lLGM9ImZ1bmN0aW9uIj09PXR5cGVvZiBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz8iZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKCkiOiJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSgpIjt0aHJvdyBFcnJvcigiVW5zYWZlIGxlZ2FjeSBsaWZlY3ljbGVzIHdpbGwgbm90IGJlIGNhbGxlZCBmb3IgY29tcG9uZW50cyB1c2luZyBuZXcgY29tcG9uZW50IEFQSXMuXG5cbiIrdSsiIHVzZXMgIitjKyIgYnV0IGFsc28gY29udGFpbnMgdGhlIGZvbGxvd2luZyBsZWdhY3kgbGlmZWN5Y2xlczoiKyhudWxsIT09cj8iXG4gICIrcjoiIikrKG51bGwhPT1hPyJcbiAgIithOiIiKSsobnVsbCE9PXM/IlxuICAiK3M6IiIpKyJcblxuVGhlIGFib3ZlIGxpZmVjeWNsZXMgc2hvdWxkIGJlIHJlbW92ZWQuIExlYXJuIG1vcmUgYWJvdXQgdGhpcyB3YXJuaW5nIGhlcmU6XG5odHRwczovL2ZiLm1lL3JlYWN0LWFzeW5jLWNvbXBvbmVudC1saWZlY3ljbGUtaG9va3MiKX1pZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiYodC5jb21wb25lbnRXaWxsTW91bnQ9bix0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9aSksImZ1bmN0aW9uIj09PXR5cGVvZiB0LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQuY29tcG9uZW50RGlkVXBkYXRlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBvbHlmaWxsIGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKCkgZm9yIGNvbXBvbmVudHMgdGhhdCBkbyBub3QgZGVmaW5lIGNvbXBvbmVudERpZFVwZGF0ZSgpIG9uIHRoZSBwcm90b3R5cGUiKTt0LmNvbXBvbmVudFdpbGxVcGRhdGU9bzt2YXIgZj10LmNvbXBvbmVudERpZFVwZGF0ZTt0LmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEZsYWc/dGhpcy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdDpyO2YuY2FsbCh0aGlzLGUsdCxuKX19cmV0dXJuIGV9ci5yKHQpLHIuZCh0LCJwb2x5ZmlsbCIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pLG4uX19zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZz0hMCxpLl9fc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmc9ITAsby5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nPSEwfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmNsYXNzTmFtZXNTaGFwZT10LnRpbWVvdXRzU2hhcGU9dm9pZCAwO3ZhciBuOyhuPXIoMCkpJiZuLl9fZXNNb2R1bGU7dC50aW1lb3V0c1NoYXBlPW51bGw7dC5jbGFzc05hbWVzU2hhcGU9bnVsbH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXZvaWQgMDt2YXIgbj1zKHIoMCkpLGk9cyhyKDEpKSxvPXIoNDk4KSxhPXIoMTExMCk7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gdSgpe3JldHVybih1PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtmb3IodmFyIG4gaW4gcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixuKSYmKGVbbl09cltuXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYyhlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9dmFyIGY9T2JqZWN0LnZhbHVlc3x8ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfSxsPWZ1bmN0aW9uKGUpe3ZhciB0LHI7ZnVuY3Rpb24gbih0LHIpe3ZhciBuLGk9KG49ZS5jYWxsKHRoaXMsdCxyKXx8dGhpcykuaGFuZGxlRXhpdGVkLmJpbmQoYyhjKG4pKSk7cmV0dXJuIG4uc3RhdGU9e2hhbmRsZUV4aXRlZDppLGZpcnN0UmVuZGVyOiEwfSxufXI9ZSwodD1uKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShyLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1yO3ZhciBvPW4ucHJvdG90eXBlO3JldHVybiBvLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybnt0cmFuc2l0aW9uR3JvdXA6e2lzTW91bnRpbmc6IXRoaXMuYXBwZWFyZWR9fX0sby5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMuYXBwZWFyZWQ9ITAsdGhpcy5tb3VudGVkPSEwfSxvLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5tb3VudGVkPSExfSxuLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz1mdW5jdGlvbihlLHQpe3ZhciByPXQuY2hpbGRyZW4sbj10LmhhbmRsZUV4aXRlZDtyZXR1cm57Y2hpbGRyZW46dC5maXJzdFJlbmRlcj8oMCxhLmdldEluaXRpYWxDaGlsZE1hcHBpbmcpKGUsbik6KDAsYS5nZXROZXh0Q2hpbGRNYXBwaW5nKShlLHIsbiksZmlyc3RSZW5kZXI6ITF9fSxvLmhhbmRsZUV4aXRlZD1mdW5jdGlvbihlLHQpe3ZhciByPSgwLGEuZ2V0Q2hpbGRNYXBwaW5nKSh0aGlzLnByb3BzLmNoaWxkcmVuKTtlLmtleSBpbiByfHwoZS5wcm9wcy5vbkV4aXRlZCYmZS5wcm9wcy5vbkV4aXRlZCh0KSx0aGlzLm1vdW50ZWQmJnRoaXMuc2V0U3RhdGUoZnVuY3Rpb24odCl7dmFyIHI9dSh7fSx0LmNoaWxkcmVuKTtyZXR1cm4gZGVsZXRlIHJbZS5rZXldLHtjaGlsZHJlbjpyfX0pKX0sby5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jb21wb25lbnQscj1lLmNoaWxkRmFjdG9yeSxuPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGk9e30sbz1PYmplY3Qua2V5cyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fChpW3JdPWVbcl0pO3JldHVybiBpfShlLFsiY29tcG9uZW50IiwiY2hpbGRGYWN0b3J5Il0pLG89Zih0aGlzLnN0YXRlLmNoaWxkcmVuKS5tYXAocik7cmV0dXJuIGRlbGV0ZSBuLmFwcGVhcixkZWxldGUgbi5lbnRlcixkZWxldGUgbi5leGl0LG51bGw9PT10P286aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQodCxuLG8pfSxufShpLmRlZmF1bHQuQ29tcG9uZW50KTtsLmNoaWxkQ29udGV4dFR5cGVzPXt0cmFuc2l0aW9uR3JvdXA6bi5kZWZhdWx0Lm9iamVjdC5pc1JlcXVpcmVkfSxsLnByb3BUeXBlcz17fSxsLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OiJkaXYiLGNoaWxkRmFjdG9yeTpmdW5jdGlvbihlKXtyZXR1cm4gZX19O3ZhciBoPSgwLG8ucG9seWZpbGwpKGwpO3QuZGVmYXVsdD1oLGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDUwMiksaT0xLzAsbz0xLjc5NzY5MzEzNDg2MjMxNTdlMzA4O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT8oZT1uKGUpKT09PWl8fGU9PT0taT8oZTwwPy0xOjEpKm86ZT09PWU/ZTowOjA9PT1lP2U6MH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDM1KSxpPXIoMTE4KSxvPU5hTixhPS9eXHMrfFxzKyQvZyxzPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHU9L14wYlswMV0rJC9pLGM9L14wb1swLTddKyQvaSxmPXBhcnNlSW50O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoaShlKSlyZXR1cm4gbztpZihuKGUpKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZS52YWx1ZU9mP2UudmFsdWVPZigpOmU7ZT1uKHQpP3QrIiI6dH1pZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIDA9PT1lP2U6K2U7ZT1lLnJlcGxhY2UoYSwiIik7dmFyIHI9dS50ZXN0KGUpO3JldHVybiByfHxjLnRlc3QoZSk/ZihlLnNsaWNlKDIpLHI/Mjo4KTpzLnRlc3QoZSk/bzorZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gYShlKXt0cnl7dShuLm5leHQoZSkpfWNhdGNoKHQpe28odCl9fWZ1bmN0aW9uIHMoZSl7dHJ5e3Uobi50aHJvdyhlKSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gdShlKXtlLmRvbmU/aShlLnZhbHVlKTpuZXcgcihmdW5jdGlvbih0KXt0KGUudmFsdWUpfSkudGhlbihhLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pfSxpPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYob1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvO2Z1bmN0aW9uIHMobyl7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBmdW5jdGlvbihvKXtpZihyKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2E7KXRyeXtpZihyPTEsbiYmKGk9MiZvWzBdP24ucmV0dXJuOm9bMF0/bi50aHJvd3x8KChpPW4ucmV0dXJuKSYmaS5jYWxsKG4pLDApOm4ubmV4dCkmJiEoaT1pLmNhbGwobixvWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gobj0wLGkmJihvPVsyJm9bMF0saS52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6aT1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKyssbj1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT0oaT1hLnRyeXMpLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKSYmKDY9PT1vWzBdfHwyPT09b1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFpfHxvWzFdPmlbMF0mJm9bMV08aVszXSkpe2EubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmYS5sYWJlbDxpWzFdKXthLmxhYmVsPWlbMV0saT1vO2JyZWFrfWlmKGkmJmEubGFiZWw8aVsyXSl7YS5sYWJlbD1pWzJdLGEub3BzLnB1c2gobyk7YnJlYWt9aVsyXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUsYSl9Y2F0Y2gocyl7bz1bNixzXSxuPTB9ZmluYWxseXtyPWk9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sc10pfX19O2Z1bmN0aW9uIG8oZSl7Zm9yKHZhciByIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShyKXx8KHRbcl09ZVtyXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBhPXIoMjMzKTtvKHIoMzk2KSksbyhyKDgwKSk7dmFyIHM9cigyMzcpO3QuaXNWYWxpZEFkZHJlc3M9cy5pc1ZhbGlkQWRkcmVzcyxvKHIoNDU2KSksbyhyKDM5NykpLG8ocigzOTgpKSxvKHIoMjMzKSk7dmFyIHU9cig0NTYpO2Z1bmN0aW9uIGMoZSl7cmV0dXJuIGEuZmluZCh7dHlwZTplfSx1LmFkYXB0ZXJMaXN0KX10LmdldEF2YWlsYWJsZUxpc3Q9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBQcm9taXNlLmFsbCh1LmFkYXB0ZXJQcmlvcml0eUxpc3QubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBuKGUsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlO3JldHVybiBpKHRoaXMsZnVuY3Rpb24ocil7c3dpdGNoKHIubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCwoZT1jKHQpKS5pc0F2YWlsYWJsZSgpXTtjYXNlIDE6cmV0dXJuWzIsci5zZW50KCk/ZTpudWxsXX19KX0pfSkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZmlsdGVyKEJvb2xlYW4pfSl9LHQuZ2V0QWRhcHRlckJ5VHlwZT1jfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHQ/ZVt0LTFdOnZvaWQgMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4MiksaT1yKDEwNzcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuKGkoZSx0KSwxKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ3NSksaT1yKDc1KSxvPXIoMTA4NiksYT1yKDkpLHM9cigxOTkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIHU9YShlKT9uOm87cmV0dXJuIHImJnMoZSx0LHIpJiYodD12b2lkIDApLHUoZSxpKHQsMykpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoMTEwMCksbz1yKDQ4OSksYT1yKDExMDEpLHM9byhmdW5jdGlvbihlKXt2YXIgdD1uKGUsYSk7cmV0dXJuIHQubGVuZ3RoJiZ0WzBdPT09ZVswXT9pKHQpOltdfSk7ZS5leHBvcnRzPXN9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ3NyksaT1yKDExMDMpLG89cig3NSksYT1yKDkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybihhKGUpP246aSkoZSxvKHQsMykpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTExMSkocigxMTEyKSk7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExMTYpLGk9cigzNSksbz0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgYT0hMCxzPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3Iobyk7cmV0dXJuIGkocikmJihhPSJsZWFkaW5nImluIHI/ISFyLmxlYWRpbmc6YSxzPSJ0cmFpbGluZyJpbiByPyEhci50cmFpbGluZzpzKSxuKGUsdCx7bGVhZGluZzphLG1heFdhaXQ6dCx0cmFpbGluZzpzfSl9fSwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDMpLGk9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Isbz1pP1N5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKTo2MDEwMyxhPWk/U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIik6NjAxMDYscz1pP1N5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50Iik6NjAxMDcsdT1pP1N5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIik6NjAxMDgsYz1pP1N5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIik6NjAxMTQsZj1pP1N5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIik6NjAxMDksbD1pP1N5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKTo2MDExMCxoPWk/U3ltYm9sLmZvcigicmVhY3QuY29uY3VycmVudF9tb2RlIik6NjAxMTEscD1pP1N5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIik6NjAxMTIsZD1pP1N5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIik6NjAxMTMseT1pP1N5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKTo2MDExNSxnPWk/U3ltYm9sLmZvcigicmVhY3QubGF6eSIpOjYwMTE2LHY9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBtKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTEscj0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLG49MDtuPHQ7bisrKXIrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuKzFdKTshZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzKXtpZighZSl7aWYoZT12b2lkIDAsdm9pZCAwPT09dCllPUVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIHU9W3IsbixpLG8sYSxzXSxjPTA7KGU9RXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIHVbYysrXX0pKSkubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgZS5mcmFtZXNUb1BvcD0xLGV9fSghMSwiTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCAlcyBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuICIscil9dmFyIGI9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LF89e307ZnVuY3Rpb24gUyhlLHQscil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1fLHRoaXMudXBkYXRlcj1yfHxifWZ1bmN0aW9uIEUoKXt9ZnVuY3Rpb24gdyhlLHQscil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1fLHRoaXMudXBkYXRlcj1yfHxifVMucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e30sUy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXsib2JqZWN0IiE9PXR5cGVvZiBlJiYiZnVuY3Rpb24iIT09dHlwZW9mIGUmJm51bGwhPWUmJm0oIjg1IiksdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUsdCwic2V0U3RhdGUiKX0sUy5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGUsImZvcmNlVXBkYXRlIil9LEUucHJvdG90eXBlPVMucHJvdG90eXBlO3ZhciBUPXcucHJvdG90eXBlPW5ldyBFO1QuY29uc3RydWN0b3I9dyxuKFQsUy5wcm90b3R5cGUpLFQuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIEE9e2N1cnJlbnQ6bnVsbH0sQz17Y3VycmVudDpudWxsfSx4PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksST17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIGsoZSx0LHIpe3ZhciBuPXZvaWQgMCxpPXt9LGE9bnVsbCxzPW51bGw7aWYobnVsbCE9dClmbw=="
}

Changelog:

{
    "2020.01.10 16:24": "base64:P21bYisrXT1QW3ddfHwwOihtPVtQW3ddXSxiPTEpfXdoaWxlKCh3Kys8QXx8dm9pZCAwIT09bVswXSkmJlMtLSl9cmV0dXJuIHZbMF18fHYuc2hpZnQoKSxkLmU9dSxrKGQsYT9vK1QoZCkrMTpvKX19KCk7ZnVuY3Rpb24gdyhlLHQpe3ZhciByLG4saSxhLHMsYz0wLGY9MCxoPWUuY29uc3RydWN0b3IsZD1oLnByZWNpc2lvbjtpZihUKGUpPjE2KXRocm93IEVycm9yKGwrVChlKSk7aWYoIWUucylyZXR1cm4gbmV3IGgobyk7Zm9yKG51bGw9PXQ/KHU9ITEscz1kKTpzPXQsYT1uZXcgaCguMDMxMjUpO2UuYWJzKCkuZ3RlKC4xKTspZT1lLnRpbWVzKGEpLGYrPTU7Zm9yKHMrPU1hdGgubG9nKHAoMixmKSkvTWF0aC5MTjEwKjIrNXwwLHI9bj1pPW5ldyBoKG8pLGgucHJlY2lzaW9uPXM7Oyl7aWYobj1rKG4udGltZXMoZSkscykscj1yLnRpbWVzKCsrYyksUygoYT1pLnBsdXMoRShuLHIscykpKS5kKS5zbGljZSgwLHMpPT09UyhpLmQpLnNsaWNlKDAscykpe2Zvcig7Zi0tOylpPWsoaS50aW1lcyhpKSxzKTtyZXR1cm4gaC5wcmVjaXNpb249ZCxudWxsPT10Pyh1PSEwLGsoaSxkKSk6aX1pPWF9fWZ1bmN0aW9uIFQoZSl7Zm9yKHZhciB0PWUuZSpnLHI9ZS5kWzBdO3I+PTEwO3IvPTEwKXQrKztyZXR1cm4gdH1mdW5jdGlvbiBBKGUsdCxyKXtpZih0PmUuTE4xMC5zZCgpKXRocm93IHU9ITAsciYmKGUucHJlY2lzaW9uPXIpLEVycm9yKGMrIkxOMTAgcHJlY2lzaW9uIGxpbWl0IGV4Y2VlZGVkIik7cmV0dXJuIGsobmV3IGUoZS5MTjEwKSx0KX1mdW5jdGlvbiBDKGUpe2Zvcih2YXIgdD0iIjtlLS07KXQrPSIwIjtyZXR1cm4gdH1mdW5jdGlvbiB4KGUsdCl7dmFyIHIsbixpLGEscyxmLGwsaCxwLGQ9MSx5PWUsZz15LmQsdj15LmNvbnN0cnVjdG9yLG09di5wcmVjaXNpb247aWYoeS5zPDEpdGhyb3cgRXJyb3IoYysoeS5zPyJOYU4iOiItSW5maW5pdHkiKSk7aWYoeS5lcShvKSlyZXR1cm4gbmV3IHYoMCk7aWYobnVsbD09dD8odT0hMSxoPW0pOmg9dCx5LmVxKDEwKSlyZXR1cm4gbnVsbD09dCYmKHU9ITApLEEodixoKTtpZihoKz0xMCx2LnByZWNpc2lvbj1oLG49KHI9UyhnKSkuY2hhckF0KDApLGE9VCh5KSwhKE1hdGguYWJzKGEpPDE1ZTE0KSlyZXR1cm4gbD1BKHYsaCsyLG0pLnRpbWVzKGErIiIpLHk9eChuZXcgdihuKyIuIityLnNsaWNlKDEpKSxoLTEwKS5wbHVzKGwpLHYucHJlY2lzaW9uPW0sbnVsbD09dD8odT0hMCxrKHksbSkpOnk7Zm9yKDtuPDcmJjEhPW58fDE9PW4mJnIuY2hhckF0KDEpPjM7KW49KHI9UygoeT15LnRpbWVzKGUpKS5kKSkuY2hhckF0KDApLGQrKztmb3IoYT1UKHkpLG4+MT8oeT1uZXcgdigiMC4iK3IpLGErKyk6eT1uZXcgdihuKyIuIityLnNsaWNlKDEpKSxmPXM9eT1FKHkubWludXMobykseS5wbHVzKG8pLGgpLHA9ayh5LnRpbWVzKHkpLGgpLGk9Mzs7KXtpZihzPWsocy50aW1lcyhwKSxoKSxTKChsPWYucGx1cyhFKHMsbmV3IHYoaSksaCkpKS5kKS5zbGljZSgwLGgpPT09UyhmLmQpLnNsaWNlKDAsaCkpcmV0dXJuIGY9Zi50aW1lcygyKSwwIT09YSYmKGY9Zi5wbHVzKEEodixoKzIsbSkudGltZXMoYSsiIikpKSxmPUUoZixuZXcgdihkKSxoKSx2LnByZWNpc2lvbj1tLG51bGw9PXQ/KHU9ITAsayhmLG0pKTpmO2Y9bCxpKz0yfX1mdW5jdGlvbiBJKGUsdCl7dmFyIHIsbixpO2Zvcigocj10LmluZGV4T2YoIi4iKSk+LTEmJih0PXQucmVwbGFjZSgiLiIsIiIpKSwobj10LnNlYXJjaCgvZS9pKSk+MD8ocjwwJiYocj1uKSxyKz0rdC5zbGljZShuKzEpLHQ9dC5zdWJzdHJpbmcoMCxuKSk6cjwwJiYocj10Lmxlbmd0aCksbj0wOzQ4PT09dC5jaGFyQ29kZUF0KG4pOykrK247Zm9yKGk9dC5sZW5ndGg7NDg9PT10LmNoYXJDb2RlQXQoaS0xKTspLS1pO2lmKHQ9dC5zbGljZShuLGkpKXtpZihpLT1uLHI9ci1uLTEsZS5lPWgoci9nKSxlLmQ9W10sbj0ocisxKSVnLHI8MCYmKG4rPWcpLG48aSl7Zm9yKG4mJmUuZC5wdXNoKCt0LnNsaWNlKDAsbikpLGktPWc7bjxpOyllLmQucHVzaCgrdC5zbGljZShuLG4rPWcpKTt0PXQuc2xpY2Uobiksbj1nLXQubGVuZ3RofWVsc2Ugbi09aTtmb3IoO24tLTspdCs9IjAiO2lmKGUuZC5wdXNoKCt0KSx1JiYoZS5lPnZ8fGUuZTwtdikpdGhyb3cgRXJyb3IobCtyKX1lbHNlIGUucz0wLGUuZT0wLGUuZD1bMF07cmV0dXJuIGV9ZnVuY3Rpb24gayhlLHQscil7dmFyIG4saSxvLGEscyxjLGYsZCxtPWUuZDtmb3IoYT0xLG89bVswXTtvPj0xMDtvLz0xMClhKys7aWYoKG49dC1hKTwwKW4rPWcsaT10LGY9bVtkPTBdO2Vsc2V7aWYoKGQ9TWF0aC5jZWlsKChuKzEpL2cpKT49KG89bS5sZW5ndGgpKXJldHVybiBlO2ZvcihmPW89bVtkXSxhPTE7bz49MTA7by89MTApYSsrO2k9KG4lPWcpLWcrYX1pZih2b2lkIDAhPT1yJiYocz1mLyhvPXAoMTAsYS1pLTEpKSUxMHwwLGM9dDwwfHx2b2lkIDAhPT1tW2QrMV18fGYlbyxjPXI8ND8oc3x8YykmJigwPT1yfHxyPT0oZS5zPDA/MzoyKSk6cz41fHw1PT1zJiYoND09cnx8Y3x8Nj09ciYmKG4+MD9pPjA/Zi9wKDEwLGEtaSk6MDptW2QtMV0pJTEwJjF8fHI9PShlLnM8MD84OjcpKSksdDwxfHwhbVswXSlyZXR1cm4gYz8obz1UKGUpLG0ubGVuZ3RoPTEsdD10LW8tMSxtWzBdPXAoMTAsKGctdCVnKSVnKSxlLmU9aCgtdC9nKXx8MCk6KG0ubGVuZ3RoPTEsbVswXT1lLmU9ZS5zPTApLGU7aWYoMD09bj8obS5sZW5ndGg9ZCxvPTEsZC0tKToobS5sZW5ndGg9ZCsxLG89cCgxMCxnLW4pLG1bZF09aT4wPyhmL3AoMTAsYS1pKSVwKDEwLGkpfDApKm86MCksYylmb3IoOzspe2lmKDA9PWQpeyhtWzBdKz1vKT09eSYmKG1bMF09MSwrK2UuZSk7YnJlYWt9aWYobVtkXSs9byxtW2RdIT15KWJyZWFrO21bZC0tXT0wLG89MX1mb3Iobj1tLmxlbmd0aDswPT09bVstLW5dOyltLnBvcCgpO2lmKHUmJihlLmU+dnx8ZS5lPC12KSl0aHJvdyBFcnJvcihsK1QoZSkpO3JldHVybiBlfWZ1bmN0aW9uIE8oZSx0KXt2YXIgcixuLGksbyxhLHMsYyxmLGwsaCxwPWUuY29uc3RydWN0b3IsZD1wLnByZWNpc2lvbjtpZighZS5zfHwhdC5zKXJldHVybiB0LnM/dC5zPS10LnM6dD1uZXcgcChlKSx1P2sodCxkKTp0O2lmKGM9ZS5kLGg9dC5kLG49dC5lLGY9ZS5lLGM9Yy5zbGljZSgpLGE9Zi1uKXtmb3IoKGw9YTwwKT8ocj1jLGE9LWEscz1oLmxlbmd0aCk6KHI9aCxuPWYscz1jLmxlbmd0aCksYT4oaT1NYXRoLm1heChNYXRoLmNlaWwoZC9nKSxzKSsyKSYmKGE9aSxyLmxlbmd0aD0xKSxyLnJldmVyc2UoKSxpPWE7aS0tOylyLnB1c2goMCk7ci5yZXZlcnNlKCl9ZWxzZXtmb3IoKGw9KGk9Yy5sZW5ndGgpPChzPWgubGVuZ3RoKSkmJihzPWkpLGk9MDtpPHM7aSsrKWlmKGNbaV0hPWhbaV0pe2w9Y1tpXTxoW2ldO2JyZWFrfWE9MH1mb3IobCYmKHI9YyxjPWgsaD1yLHQucz0tdC5zKSxzPWMubGVuZ3RoLGk9aC5sZW5ndGgtcztpPjA7LS1pKWNbcysrXT0wO2ZvcihpPWgubGVuZ3RoO2k+YTspe2lmKGNbLS1pXTxoW2ldKXtmb3Iobz1pO28mJjA9PT1jWy0tb107KWNbb109eS0xOy0tY1tvXSxjW2ldKz15fWNbaV0tPWhbaV19Zm9yKDswPT09Y1stLXNdOyljLnBvcCgpO2Zvcig7MD09PWNbMF07Yy5zaGlmdCgpKS0tbjtyZXR1cm4gY1swXT8odC5kPWMsdC5lPW4sdT9rKHQsZCk6dCk6bmV3IHAoMCl9ZnVuY3Rpb24gTihlLHQscil7dmFyIG4saT1UKGUpLG89UyhlLmQpLGE9by5sZW5ndGg7cmV0dXJuIHQ/KHImJihuPXItYSk+MD9vPW8uY2hhckF0KDApKyIuIitvLnNsaWNlKDEpK0Mobik6YT4xJiYobz1vLmNoYXJBdCgwKSsiLiIrby5zbGljZSgxKSksbz1vKyhpPDA/ImUiOiJlKyIpK2kpOmk8MD8obz0iMC4iK0MoLWktMSkrbyxyJiYobj1yLWEpPjAmJihvKz1DKG4pKSk6aT49YT8obys9QyhpKzEtYSksciYmKG49ci1pLTEpPjAmJihvPW8rIi4iK0MobikpKTooKG49aSsxKTxhJiYobz1vLnNsaWNlKDAsbikrIi4iK28uc2xpY2UobikpLHImJihuPXItYSk+MCYmKGkrMT09PWEmJihvKz0iLiIpLG8rPUMobikpKSxlLnM8MD8iLSIrbzpvfWZ1bmN0aW9uIFAoZSx0KXtpZihlLmxlbmd0aD50KXJldHVybiBlLmxlbmd0aD10LCEwfWZ1bmN0aW9uIFIoZSl7aWYoIWV8fCJvYmplY3QiIT09dHlwZW9mIGUpdGhyb3cgRXJyb3IoYysiT2JqZWN0IGV4cGVjdGVkIik7dmFyIHQscixuLGk9WyJwcmVjaXNpb24iLDEsYSwicm91bmRpbmciLDAsOCwidG9FeHBOZWciLC0xLzAsMCwidG9FeHBQb3MiLDAsMS8wXTtmb3IodD0wO3Q8aS5sZW5ndGg7dCs9MylpZih2b2lkIDAhPT0obj1lW3I9aVt0XV0pKXtpZighKGgobik9PT1uJiZuPj1pW3QrMV0mJm48PWlbdCsyXSkpdGhyb3cgRXJyb3IoZityKyI6ICIrbik7dGhpc1tyXT1ufWlmKHZvaWQgMCE9PShuPWVbcj0iTE4xMCJdKSl7aWYobiE9TWF0aC5MTjEwKXRocm93IEVycm9yKGYrcisiOiAiK24pO3RoaXNbcl09bmV3IHRoaXMobil9cmV0dXJuIHRoaXN9KHM9ZnVuY3Rpb24gZSh0KXt2YXIgcixuLGk7ZnVuY3Rpb24gbyhlKXt2YXIgdD10aGlzO2lmKCEodCBpbnN0YW5jZW9mIG8pKXJldHVybiBuZXcgbyhlKTtpZih0LmNvbnN0cnVjdG9yPW8sZSBpbnN0YW5jZW9mIG8pcmV0dXJuIHQucz1lLnMsdC5lPWUuZSx2b2lkKHQuZD0oZT1lLmQpP2Uuc2xpY2UoKTplKTtpZigibnVtYmVyIj09PXR5cGVvZiBlKXtpZigwKmUhPT0wKXRocm93IEVycm9yKGYrZSk7aWYoZT4wKXQucz0xO2Vsc2V7aWYoIShlPDApKXJldHVybiB0LnM9MCx0LmU9MCx2b2lkKHQuZD1bMF0pO2U9LWUsdC5zPS0xfXJldHVybiBlPT09fn5lJiZlPDFlNz8odC5lPTAsdm9pZCh0LmQ9W2VdKSk6SSh0LGUudG9TdHJpbmcoKSl9aWYoInN0cmluZyIhPT10eXBlb2YgZSl0aHJvdyBFcnJvcihmK2UpO2lmKDQ1PT09ZS5jaGFyQ29kZUF0KDApPyhlPWUuc2xpY2UoMSksdC5zPS0xKTp0LnM9MSwhZC50ZXN0KGUpKXRocm93IEVycm9yKGYrZSk7SSh0LGUpfWlmKG8ucHJvdG90eXBlPW0sby5ST1VORF9VUD0wLG8uUk9VTkRfRE9XTj0xLG8uUk9VTkRfQ0VJTD0yLG8uUk9VTkRfRkxPT1I9MyxvLlJPVU5EX0hBTEZfVVA9NCxvLlJPVU5EX0hBTEZfRE9XTj01LG8uUk9VTkRfSEFMRl9FVkVOPTYsby5ST1VORF9IQUxGX0NFSUw9NyxvLlJPVU5EX0hBTEZfRkxPT1I9OCxvLmNsb25lPWUsby5jb25maWc9by5zZXQ9Uix2b2lkIDA9PT10JiYodD17fSksdClmb3IoaT1bInByZWNpc2lvbiIsInJvdW5kaW5nIiwidG9FeHBOZWciLCJ0b0V4cFBvcyIsIkxOMTAiXSxyPTA7cjxpLmxlbmd0aDspdC5oYXNPd25Qcm9wZXJ0eShuPWlbcisrXSl8fCh0W25dPXRoaXNbbl0pO3JldHVybiBvLmNvbmZpZyh0KSxvfShzKSkuZGVmYXVsdD1zLkRlY2ltYWw9cyxvPW5ldyBzKDEpLHZvaWQgMD09PShuPWZ1bmN0aW9uKCl7cmV0dXJuIHN9LmNhbGwodCxyLHQsZSkpfHwoZS5leHBvcnRzPW4pfSgpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLHI9bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQubWVtb2l6ZT10LnJldmVyc2U9dC5jb21wb3NlPXQubWFwPXQucmFuZ2U9dC5jdXJyeT10LlBMQUNFX0hPTERFUj12b2lkIDA7dmFyIGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LG89eyJAQGZ1bmN0aW9uYWwvcGxhY2Vob2xkZXIiOiEwfTt0LlBMQUNFX0hPTERFUj1vO3ZhciBhPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09b30scz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gdCgpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aHx8MT09PWFyZ3VtZW50cy5sZW5ndGgmJmEoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKT90OmUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fSx1PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbiBlKHQscil7cmV0dXJuIDE9PT10P3I6cyhmdW5jdGlvbigpe2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLHU9bmV3IEFycmF5KGkpLGM9MDtjPGk7YysrKXVbY109YXJndW1lbnRzW2NdO3ZhciBmPXUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09b30pLmxlbmd0aDtyZXR1cm4gZj49dD9yLmFwcGx5KHZvaWQgMCx1KTplKHQtZixzKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksaT0wO2k8ZTtpKyspdFtpXT1hcmd1bWVudHNbaV07dmFyIG89dS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSk/dC5zaGlmdCgpOmV9KTtyZXR1cm4gci5hcHBseSh2b2lkIDAsbihvKS5jb25jYXQodCkpfSkpfSl9KGUubGVuZ3RoLGUpfTt0LmN1cnJ5PXU7dC5yYW5nZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1bXSxuPWU7bjx0OysrbilyW24tZV09bjtyZXR1cm4gcn07dmFyIGM9dShmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKGUpOk9iamVjdC5rZXlzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pLm1hcChlKX0pO3QubWFwPWM7dC5jb21wb3NlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07aWYoIXQubGVuZ3RoKXJldHVybiBpO3ZhciBuPXQucmV2ZXJzZSgpLG89blswXSxhPW4uc2xpY2UoMSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQoZSl9LG8uYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfX07dC5yZXZlcnNlPWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UucmV2ZXJzZSgpOmUuc3BsaXQoIiIpLnJldmVyc2Uuam9pbigiIil9O3QubWVtb2l6ZT1mdW5jdGlvbihlKXt2YXIgdD1udWxsLHI9bnVsbDtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShuKSxvPTA7bzxuO28rKylpW29dPWFyZ3VtZW50c1tvXTtyZXR1cm4gdCYmaS5ldmVyeShmdW5jdGlvbihlLHIpe3JldHVybiBlPT09dFtyXX0pP3I6KHQ9aSxyPWUuYXBwbHkodm9pZCAwLGkpKX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDgxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKG51bGw9PWV8fCFlLmxlbmd0aCkmJm4oZSx0LDApPi0xfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbil7Zm9yKHZhciBpPWUubGVuZ3RoLG89cisobj8xOi0xKTtuP28tLTorK288aTspaWYodChlW29dLG8sZSkpcmV0dXJuIG87cmV0dXJuLTF9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPS0xLGk9bnVsbD09ZT8wOmUubGVuZ3RoOysrbjxpOylpZihyKHQsZVtuXSkpcmV0dXJuITA7cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dC5FWElUSU5HPXQuRU5URVJFRD10LkVOVEVSSU5HPXQuRVhJVEVEPXQuVU5NT1VOVEVEPXZvaWQgMDt2YXIgbj1mdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIHIgaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSl7dmFyIG49T2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKTp7fTtuLmdldHx8bi5zZXQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixuKTp0W3JdPWVbcl19cmV0dXJuIHQuZGVmYXVsdD1lLHR9KHIoMCkpLGk9cyhyKDEpKSxvPXMocigyMDApKSxhPXIoNDk4KTtyKDQ5OSk7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHU9InVubW91bnRlZCI7dC5VTk1PVU5URUQ9dTt2YXIgYz0iZXhpdGVkIjt0LkVYSVRFRD1jO3ZhciBmPSJlbnRlcmluZyI7dC5FTlRFUklORz1mO3ZhciBsPSJlbnRlcmVkIjt0LkVOVEVSRUQ9bDt0LkVYSVRJTkc9ImV4aXRpbmciO3ZhciBoPWZ1bmN0aW9uKGUpe3ZhciB0LHI7ZnVuY3Rpb24gbih0LHIpe3ZhciBuO249ZS5jYWxsKHRoaXMsdCxyKXx8dGhpczt2YXIgaSxvPXIudHJhbnNpdGlvbkdyb3VwLGE9byYmIW8uaXNNb3VudGluZz90LmVudGVyOnQuYXBwZWFyO3JldHVybiBuLmFwcGVhclN0YXR1cz1udWxsLHQuaW4/YT8oaT1jLG4uYXBwZWFyU3RhdHVzPWYpOmk9bDppPXQudW5tb3VudE9uRXhpdHx8dC5tb3VudE9uRW50ZXI/dTpjLG4uc3RhdGU9e3N0YXR1czppfSxuLm5leHRDYWxsYmFjaz1udWxsLG59cj1lLCh0PW4pLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHIucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPXI7dmFyIGE9bi5wcm90b3R5cGU7cmV0dXJuIGEuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJue3RyYW5zaXRpb25Hcm91cDpudWxsfX0sbi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pbiYmdC5zdGF0dXM9PT11P3tzdGF0dXM6Y306bnVsbH0sYS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMudXBkYXRlU3RhdHVzKCEwLHRoaXMuYXBwZWFyU3RhdHVzKX0sYS5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZihlIT09dGhpcy5wcm9wcyl7dmFyIHI9dGhpcy5zdGF0ZS5zdGF0dXM7dGhpcy5wcm9wcy5pbj9yIT09ZiYmciE9PWwmJih0PWYpOnIhPT1mJiZyIT09bHx8KHQ9ImV4aXRpbmciKX10aGlzLnVwZGF0ZVN0YXR1cyghMSx0KX0sYS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCl9LGEuZ2V0VGltZW91dHM9ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbj10aGlzLnByb3BzLnRpbWVvdXQ7cmV0dXJuIGU9dD1yPW4sbnVsbCE9biYmIm51bWJlciIhPT10eXBlb2YgbiYmKGU9bi5leGl0LHQ9bi5lbnRlcixyPXZvaWQgMCE9PW4uYXBwZWFyP24uYXBwZWFyOnQpLHtleGl0OmUsZW50ZXI6dCxhcHBlYXI6cn19LGEudXBkYXRlU3RhdHVzPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09ZSYmKGU9ITEpLG51bGwhPT10KXt0aGlzLmNhbmNlbE5leHRDYWxsYmFjaygpO3ZhciByPW8uZGVmYXVsdC5maW5kRE9NTm9kZSh0aGlzKTt0PT09Zj90aGlzLnBlcmZvcm1FbnRlcihyLGUpOnRoaXMucGVyZm9ybUV4aXQocil9ZWxzZSB0aGlzLnByb3BzLnVubW91bnRPbkV4aXQmJnRoaXMuc3RhdGUuc3RhdHVzPT09YyYmdGhpcy5zZXRTdGF0ZSh7c3RhdHVzOnV9KX0sYS5wZXJmb3JtRW50ZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49dGhpcy5wcm9wcy5lbnRlcixpPXRoaXMuY29udGV4dC50cmFuc2l0aW9uR3JvdXA/dGhpcy5jb250ZXh0LnRyYW5zaXRpb25Hcm91cC5pc01vdW50aW5nOnQsbz10aGlzLmdldFRpbWVvdXRzKCksYT1pP28uYXBwZWFyOm8uZW50ZXI7dHx8bj8odGhpcy5wcm9wcy5vbkVudGVyKGUsaSksdGhpcy5zYWZlU2V0U3RhdGUoe3N0YXR1czpmfSxmdW5jdGlvbigpe3IucHJvcHMub25FbnRlcmluZyhlLGkpLHIub25UcmFuc2l0aW9uRW5kKGUsYSxmdW5jdGlvbigpe3Iuc2FmZVNldFN0YXRlKHtzdGF0dXM6bH0sZnVuY3Rpb24oKXtyLnByb3BzLm9uRW50ZXJlZChlLGkpfSl9KX0pKTp0aGlzLnNhZmVTZXRTdGF0ZSh7c3RhdHVzOmx9LGZ1bmN0aW9uKCl7ci5wcm9wcy5vbkVudGVyZWQoZSl9KX0sYS5wZXJmb3JtRXhpdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9dGhpcy5wcm9wcy5leGl0LG49dGhpcy5nZXRUaW1lb3V0cygpO3I/KHRoaXMucHJvcHMub25FeGl0KGUpLHRoaXMuc2FmZVNldFN0YXRlKHtzdGF0dXM6ImV4aXRpbmcifSxmdW5jdGlvbigpe3QucHJvcHMub25FeGl0aW5nKGUpLHQub25UcmFuc2l0aW9uRW5kKGUsbi5leGl0LGZ1bmN0aW9uKCl7dC5zYWZlU2V0U3RhdGUoe3N0YXR1czpjfSxmdW5jdGlvbigpe3QucHJvcHMub25FeGl0ZWQoZSl9KX0pfSkpOnRoaXMuc2FmZVNldFN0YXRlKHtzdGF0dXM6Y30sZnVuY3Rpb24oKXt0LnByb3BzLm9uRXhpdGVkKGUpfSl9LGEuY2FuY2VsTmV4dENhbGxiYWNrPWZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMubmV4dENhbGxiYWNrJiYodGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsKCksdGhpcy5uZXh0Q2FsbGJhY2s9bnVsbCl9LGEuc2FmZVNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7dD10aGlzLnNldE5leHRDYWxsYmFjayh0KSx0aGlzLnNldFN0YXRlKGUsdCl9LGEuc2V0TmV4dENhbGxiYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj0hMDtyZXR1cm4gdGhpcy5uZXh0Q2FsbGJhY2s9ZnVuY3Rpb24obil7ciYmKHI9ITEsdC5uZXh0Q2FsbGJhY2s9bnVsbCxlKG4pKX0sdGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsPWZ1bmN0aW9uKCl7cj0hMX0sdGhpcy5uZXh0Q2FsbGJhY2t9LGEub25UcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLnNldE5leHRDYWxsYmFjayhyKTt2YXIgbj1udWxsPT10JiYhdGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcjtlJiYhbj8odGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lciYmdGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcihlLHRoaXMubmV4dENhbGxiYWNrKSxudWxsIT10JiZzZXRUaW1lb3V0KHRoaXMubmV4dENhbGxiYWNrLHQpKTpzZXRUaW1lb3V0KHRoaXMubmV4dENhbGxiYWNrLDApfSxhLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUuc3RhdHVzO2lmKGU9PT11KXJldHVybiBudWxsO3ZhciB0PXRoaXMucHJvcHMscj10LmNoaWxkcmVuLG49ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4saT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGlbcl09ZVtyXSk7cmV0dXJuIGl9KHQsWyJjaGlsZHJlbiJdKTtpZihkZWxldGUgbi5pbixkZWxldGUgbi5tb3VudE9uRW50ZXIsZGVsZXRlIG4udW5tb3VudE9uRXhpdCxkZWxldGUgbi5hcHBlYXIsZGVsZXRlIG4uZW50ZXIsZGVsZXRlIG4uZXhpdCxkZWxldGUgbi50aW1lb3V0LGRlbGV0ZSBuLmFkZEVuZExpc3RlbmVyLGRlbGV0ZSBuLm9uRW50ZXIsZGVsZXRlIG4ub25FbnRlcmluZyxkZWxldGUgbi5vbkVudGVyZWQsZGVsZXRlIG4ub25FeGl0LGRlbGV0ZSBuLm9uRXhpdGluZyxkZWxldGUgbi5vbkV4aXRlZCwiZnVuY3Rpb24iPT09dHlwZW9mIHIpcmV0dXJuIHIoZSxuKTt2YXIgbz1pLmRlZmF1bHQuQ2hpbGRyZW4ub25seShyKTtyZXR1cm4gaS5kZWZhdWx0LmNsb25lRWxlbWVudChvLG4pfSxufShpLmRlZmF1bHQuQ29tcG9uZW50KTtmdW5jdGlvbiBwKCl7fWguY29udGV4dFR5cGVzPXt0cmFuc2l0aW9uR3JvdXA6bi5vYmplY3R9LGguY2hpbGRDb250ZXh0VHlwZXM9e3RyYW5zaXRpb25Hcm91cDpmdW5jdGlvbigpe319LGgucHJvcFR5cGVzPXt9LGguZGVmYXVsdFByb3BzPXtpbjohMSxtb3VudE9uRW50ZXI6ITEsdW5tb3VudE9uRXhpdDohMSxhcHBlYXI6ITEsZW50ZXI6ITAsZXhpdDohMCxvbkVudGVyOnAsb25FbnRlcmluZzpwLG9uRW50ZXJlZDpwLG9uRXhpdDpwLG9uRXhpdGluZzpwLG9uRXhpdGVkOnB9LGguVU5NT1VOVEVEPTAsaC5FWElURUQ9MSxoLkVOVEVSSU5HPTIsaC5FTlRFUkVEPTMsaC5FWElUSU5HPTQ7dmFyIGQ9KDAsYS5wb2x5ZmlsbCkoaCk7dC5kZWZhdWx0PWR9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3ZhciBlPXRoaXMuY29uc3RydWN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHRoaXMucHJvcHMsdGhpcy5zdGF0ZSk7bnVsbCE9PWUmJnZvaWQgMCE9PWUmJnRoaXMuc2V0U3RhdGUoZSl9ZnVuY3Rpb24gaShlKXt0aGlzLnNldFN0YXRlKGZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuY29uc3RydWN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKGUsdCk7cmV0dXJuIG51bGwhPT1yJiZ2b2lkIDAhPT1yP3I6bnVsbH0uYmluZCh0aGlzKSl9ZnVuY3Rpb24gbyhlLHQpe3RyeXt2YXIgcj10aGlzLnByb3BzLG49dGhpcy5zdGF0ZTt0aGlzLnByb3BzPWUsdGhpcy5zdGF0ZT10LHRoaXMuX19yZWFjdEludGVybmFsU25hcHNob3RGbGFnPSEwLHRoaXMuX19yZWFjdEludGVybmFsU25hcHNob3Q9dGhpcy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShyLG4pfWZpbmFsbHl7dGhpcy5wcm9wcz1yLHRoaXMuc3RhdGU9bn19ZnVuY3Rpb24gYShlKXt2YXIgdD1lLnByb3RvdHlwZTtpZighdHx8IXQuaXNSZWFjdENvbXBvbmVudCl0aHJvdyBuZXcgRXJyb3IoIkNhbiBvbmx5IHBvbHlmaWxsIGNsYXNzIGNvbXBvbmVudHMiKTtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiYiZnVuY3Rpb24iIT09dHlwZW9mIHQuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpcmV0dXJuIGU7dmFyIHI9bnVsbCxhPW51bGwscz1udWxsO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgdC5jb21wb25lbnRXaWxsTW91bnQ/cj0iY29tcG9uZW50V2lsbE1vdW50IjoiZnVuY3Rpb24iPT09dHlwZW9mIHQuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmKHI9IlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQiKSwiZnVuY3Rpb24iPT09dHlwZW9mIHQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz9hPSJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIjoiZnVuY3Rpb24iPT09dHlwZW9mIHQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJihhPSJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIpLCJmdW5jdGlvbiI9PT10eXBlb2YgdC5jb21wb25lbnRXaWxsVXBkYXRlP3M9ImNvbXBvbmVudFdpbGxVcGRhdGUiOiJmdW5jdGlvbiI9PT10eXBlb2YgdC5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmKHM9IlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlIiksbnVsbCE9PXJ8fG51bGwhPT1hfHxudWxsIT09cyl7dmFyIHU9ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lLGM9ImZ1bmN0aW9uIj09PXR5cGVvZiBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz8iZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKCkiOiJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSgpIjt0aHJvdyBFcnJvcigiVW5zYWZlIGxlZ2FjeSBsaWZlY3ljbGVzIHdpbGwgbm90IGJlIGNhbGxlZCBmb3IgY29tcG9uZW50cyB1c2luZyBuZXcgY29tcG9uZW50IEFQSXMuXG5cbiIrdSsiIHVzZXMgIitjKyIgYnV0IGFsc28gY29udGFpbnMgdGhlIGZvbGxvd2luZyBsZWdhY3kgbGlmZWN5Y2xlczoiKyhudWxsIT09cj8iXG4gICIrcjoiIikrKG51bGwhPT1hPyJcbiAgIithOiIiKSsobnVsbCE9PXM/IlxuICAiK3M6IiIpKyJcblxuVGhlIGFib3ZlIGxpZmVjeWNsZXMgc2hvdWxkIGJlIHJlbW92ZWQuIExlYXJuIG1vcmUgYWJvdXQgdGhpcyB3YXJuaW5nIGhlcmU6XG5odHRwczovL2ZiLm1lL3JlYWN0LWFzeW5jLWNvbXBvbmVudC1saWZlY3ljbGUtaG9va3MiKX1pZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiYodC5jb21wb25lbnRXaWxsTW91bnQ9bix0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9aSksImZ1bmN0aW9uIj09PXR5cGVvZiB0LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQuY29tcG9uZW50RGlkVXBkYXRlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBvbHlmaWxsIGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKCkgZm9yIGNvbXBvbmVudHMgdGhhdCBkbyBub3QgZGVmaW5lIGNvbXBvbmVudERpZFVwZGF0ZSgpIG9uIHRoZSBwcm90b3R5cGUiKTt0LmNvbXBvbmVudFdpbGxVcGRhdGU9bzt2YXIgZj10LmNvbXBvbmVudERpZFVwZGF0ZTt0LmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEZsYWc/dGhpcy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdDpyO2YuY2FsbCh0aGlzLGUsdCxuKX19cmV0dXJuIGV9ci5yKHQpLHIuZCh0LCJwb2x5ZmlsbCIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pLG4uX19zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZz0hMCxpLl9fc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmc9ITAsby5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nPSEwfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmNsYXNzTmFtZXNTaGFwZT10LnRpbWVvdXRzU2hhcGU9dm9pZCAwO3ZhciBuOyhuPXIoMCkpJiZuLl9fZXNNb2R1bGU7dC50aW1lb3V0c1NoYXBlPW51bGw7dC5jbGFzc05hbWVzU2hhcGU9bnVsbH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXZvaWQgMDt2YXIgbj1zKHIoMCkpLGk9cyhyKDEpKSxvPXIoNDk4KSxhPXIoMTExMCk7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gdSgpe3JldHVybih1PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtmb3IodmFyIG4gaW4gcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixuKSYmKGVbbl09cltuXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYyhlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9dmFyIGY9T2JqZWN0LnZhbHVlc3x8ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfSxsPWZ1bmN0aW9uKGUpe3ZhciB0LHI7ZnVuY3Rpb24gbih0LHIpe3ZhciBuLGk9KG49ZS5jYWxsKHRoaXMsdCxyKXx8dGhpcykuaGFuZGxlRXhpdGVkLmJpbmQoYyhjKG4pKSk7cmV0dXJuIG4uc3RhdGU9e2hhbmRsZUV4aXRlZDppLGZpcnN0UmVuZGVyOiEwfSxufXI9ZSwodD1uKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShyLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1yO3ZhciBvPW4ucHJvdG90eXBlO3JldHVybiBvLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybnt0cmFuc2l0aW9uR3JvdXA6e2lzTW91bnRpbmc6IXRoaXMuYXBwZWFyZWR9fX0sby5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMuYXBwZWFyZWQ9ITAsdGhpcy5tb3VudGVkPSEwfSxvLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5tb3VudGVkPSExfSxuLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz1mdW5jdGlvbihlLHQpe3ZhciByPXQuY2hpbGRyZW4sbj10LmhhbmRsZUV4aXRlZDtyZXR1cm57Y2hpbGRyZW46dC5maXJzdFJlbmRlcj8oMCxhLmdldEluaXRpYWxDaGlsZE1hcHBpbmcpKGUsbik6KDAsYS5nZXROZXh0Q2hpbGRNYXBwaW5nKShlLHIsbiksZmlyc3RSZW5kZXI6ITF9fSxvLmhhbmRsZUV4aXRlZD1mdW5jdGlvbihlLHQpe3ZhciByPSgwLGEuZ2V0Q2hpbGRNYXBwaW5nKSh0aGlzLnByb3BzLmNoaWxkcmVuKTtlLmtleSBpbiByfHwoZS5wcm9wcy5vbkV4aXRlZCYmZS5wcm9wcy5vbkV4aXRlZCh0KSx0aGlzLm1vdW50ZWQmJnRoaXMuc2V0U3RhdGUoZnVuY3Rpb24odCl7dmFyIHI9dSh7fSx0LmNoaWxkcmVuKTtyZXR1cm4gZGVsZXRlIHJbZS5rZXldLHtjaGlsZHJlbjpyfX0pKX0sby5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jb21wb25lbnQscj1lLmNoaWxkRmFjdG9yeSxuPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGk9e30sbz1PYmplY3Qua2V5cyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fChpW3JdPWVbcl0pO3JldHVybiBpfShlLFsiY29tcG9uZW50IiwiY2hpbGRGYWN0b3J5Il0pLG89Zih0aGlzLnN0YXRlLmNoaWxkcmVuKS5tYXAocik7cmV0dXJuIGRlbGV0ZSBuLmFwcGVhcixkZWxldGUgbi5lbnRlcixkZWxldGUgbi5leGl0LG51bGw9PT10P286aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQodCxuLG8pfSxufShpLmRlZmF1bHQuQ29tcG9uZW50KTtsLmNoaWxkQ29udGV4dFR5cGVzPXt0cmFuc2l0aW9uR3JvdXA6bi5kZWZhdWx0Lm9iamVjdC5pc1JlcXVpcmVkfSxsLnByb3BUeXBlcz17fSxsLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OiJkaXYiLGNoaWxkRmFjdG9yeTpmdW5jdGlvbihlKXtyZXR1cm4gZX19O3ZhciBoPSgwLG8ucG9seWZpbGwpKGwpO3QuZGVmYXVsdD1oLGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDUwMiksaT0xLzAsbz0xLjc5NzY5MzEzNDg2MjMxNTdlMzA4O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT8oZT1uKGUpKT09PWl8fGU9PT0taT8oZTwwPy0xOjEpKm86ZT09PWU/ZTowOjA9PT1lP2U6MH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDM1KSxpPXIoMTE4KSxvPU5hTixhPS9eXHMrfFxzKyQvZyxzPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHU9L14wYlswMV0rJC9pLGM9L14wb1swLTddKyQvaSxmPXBhcnNlSW50O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoaShlKSlyZXR1cm4gbztpZihuKGUpKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZS52YWx1ZU9mP2UudmFsdWVPZigpOmU7ZT1uKHQpP3QrIiI6dH1pZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIDA9PT1lP2U6K2U7ZT1lLnJlcGxhY2UoYSwiIik7dmFyIHI9dS50ZXN0KGUpO3JldHVybiByfHxjLnRlc3QoZSk/ZihlLnNsaWNlKDIpLHI/Mjo4KTpzLnRlc3QoZSk/bzorZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gYShlKXt0cnl7dShuLm5leHQoZSkpfWNhdGNoKHQpe28odCl9fWZ1bmN0aW9uIHMoZSl7dHJ5e3Uobi50aHJvdyhlKSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gdShlKXtlLmRvbmU/aShlLnZhbHVlKTpuZXcgcihmdW5jdGlvbih0KXt0KGUudmFsdWUpfSkudGhlbihhLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pfSxpPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYob1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvO2Z1bmN0aW9uIHMobyl7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBmdW5jdGlvbihvKXtpZihyKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2E7KXRyeXtpZihyPTEsbiYmKGk9MiZvWzBdP24ucmV0dXJuOm9bMF0/bi50aHJvd3x8KChpPW4ucmV0dXJuKSYmaS5jYWxsKG4pLDApOm4ubmV4dCkmJiEoaT1pLmNhbGwobixvWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gobj0wLGkmJihvPVsyJm9bMF0saS52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6aT1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKyssbj1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT0oaT1hLnRyeXMpLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKSYmKDY9PT1vWzBdfHwyPT09b1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFpfHxvWzFdPmlbMF0mJm9bMV08aVszXSkpe2EubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmYS5sYWJlbDxpWzFdKXthLmxhYmVsPWlbMV0saT1vO2JyZWFrfWlmKGkmJmEubGFiZWw8aVsyXSl7YS5sYWJlbD1pWzJdLGEub3BzLnB1c2gobyk7YnJlYWt9aVsyXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUsYSl9Y2F0Y2gocyl7bz1bNixzXSxuPTB9ZmluYWxseXtyPWk9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sc10pfX19O2Z1bmN0aW9uIG8oZSl7Zm9yKHZhciByIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShyKXx8KHRbcl09ZVtyXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBhPXIoMjMzKTtvKHIoMzk2KSksbyhyKDgwKSk7dmFyIHM9cigyMzcpO3QuaXNWYWxpZEFkZHJlc3M9cy5pc1ZhbGlkQWRkcmVzcyxvKHIoNDU2KSksbyhyKDM5NykpLG8ocigzOTgpKSxvKHIoMjMzKSk7dmFyIHU9cig0NTYpO2Z1bmN0aW9uIGMoZSl7cmV0dXJuIGEuZmluZCh7dHlwZTplfSx1LmFkYXB0ZXJMaXN0KX10LmdldEF2YWlsYWJsZUxpc3Q9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBQcm9taXNlLmFsbCh1LmFkYXB0ZXJQcmlvcml0eUxpc3QubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBuKGUsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlO3JldHVybiBpKHRoaXMsZnVuY3Rpb24ocil7c3dpdGNoKHIubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCwoZT1jKHQpKS5pc0F2YWlsYWJsZSgpXTtjYXNlIDE6cmV0dXJuWzIsci5zZW50KCk/ZTpudWxsXX19KX0pfSkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZmlsdGVyKEJvb2xlYW4pfSl9LHQuZ2V0QWRhcHRlckJ5VHlwZT1jfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHQ/ZVt0LTFdOnZvaWQgMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4MiksaT1yKDEwNzcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuKGkoZSx0KSwxKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ3NSksaT1yKDc1KSxvPXIoMTA4NiksYT1yKDkpLHM9cigxOTkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIHU9YShlKT9uOm87cmV0dXJuIHImJnMoZSx0LHIpJiYodD12b2lkIDApLHUoZSxpKHQsMykpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoMTEwMCksbz1yKDQ4OSksYT1yKDExMDEpLHM9byhmdW5jdGlvbihlKXt2YXIgdD1uKGUsYSk7cmV0dXJuIHQubGVuZ3RoJiZ0WzBdPT09ZVswXT9pKHQpOltdfSk7ZS5leHBvcnRzPXN9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ3NyksaT1yKDExMDMpLG89cig3NSksYT1yKDkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybihhKGUpP246aSkoZSxvKHQsMykpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTExMSkocigxMTEyKSk7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExMTYpLGk9cigzNSksbz0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgYT0hMCxzPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3Iobyk7cmV0dXJuIGkocikmJihhPSJsZWFkaW5nImluIHI/ISFyLmxlYWRpbmc6YSxzPSJ0cmFpbGluZyJpbiByPyEhci50cmFpbGluZzpzKSxuKGUsdCx7bGVhZGluZzphLG1heFdhaXQ6dCx0cmFpbGluZzpzfSl9fSwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDMpLGk9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Isbz1pP1N5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKTo2MDEwMyxhPWk/U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIik6NjAxMDYscz1pP1N5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50Iik6NjAxMDcsdT1pP1N5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIik6NjAxMDgsYz1pP1N5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIik6NjAxMTQsZj1pP1N5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIik6NjAxMDksbD1pP1N5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKTo2MDExMCxoPWk/U3ltYm9sLmZvcigicmVhY3QuY29uY3VycmVudF9tb2RlIik6NjAxMTEscD1pP1N5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIik6NjAxMTIsZD1pP1N5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIik6NjAxMTMseT1pP1N5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKTo2MDExNSxnPWk/U3ltYm9sLmZvcigicmVhY3QubGF6eSIpOjYwMTE2LHY9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBtKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTEscj0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLG49MDtuPHQ7bisrKXIrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuKzFdKTshZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzKXtpZighZSl7aWYoZT12b2lkIDAsdm9pZCAwPT09dCllPUVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIHU9W3IsbixpLG8sYSxzXSxjPTA7KGU9RXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIHVbYysrXX0pKSkubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgZS5mcmFtZXNUb1BvcD0xLGV9fSghMSwiTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCAlcyBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuICIscil9dmFyIGI9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LF89e307ZnVuY3Rpb24gUyhlLHQscil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1fLHRoaXMudXBkYXRlcj1yfHxifWZ1bmN0aW9uIEUoKXt9ZnVuY3Rpb24gdyhlLHQscil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1fLHRoaXMudXBkYXRlcj1yfHxifVMucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e30sUy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXsib2JqZWN0IiE9PXR5cGVvZiBlJiYiZnVuY3Rpb24iIT09dHlwZW9mIGUmJm51bGwhPWUmJm0oIjg1IiksdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUsdCwic2V0U3RhdGUiKX0sUy5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGUsImZvcmNlVXBkYXRlIil9LEUucHJvdG90eXBlPVMucHJvdG90eXBlO3ZhciBUPXcucHJvdG90eXBlPW5ldyBFO1QuY29uc3RydWN0b3I9dyxuKFQsUy5wcm90b3R5cGUpLFQuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIEE9e2N1cnJlbnQ6bnVsbH0sQz17Y3VycmVudDpudWxsfSx4PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksST17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIGsoZSx0LHIpe3ZhciBuPXZvaWQgMCxpPXt9LGE9bnVsbCxzPW51bGw7aWYobnVsbCE9dClmbw==",
    "2020.01.10 15:21": "base64:P21bYisrXT1QW3ddfHwwOihtPVtQW3ddXSxiPTEpfXdoaWxlKCh3Kys8QXx8dm9pZCAwIT09bVswXSkmJlMtLSl9cmV0dXJuIHZbMF18fHYuc2hpZnQoKSxkLmU9dSxrKGQsYT9vK1QoZCkrMTpvKX19KCk7ZnVuY3Rpb24gdyhlLHQpe3ZhciByLG4saSxhLHMsYz0wLGY9MCxoPWUuY29uc3RydWN0b3IsZD1oLnByZWNpc2lvbjtpZihUKGUpPjE2KXRocm93IEVycm9yKGwrVChlKSk7aWYoIWUucylyZXR1cm4gbmV3IGgobyk7Zm9yKG51bGw9PXQ/KHU9ITEscz1kKTpzPXQsYT1uZXcgaCguMDMxMjUpO2UuYWJzKCkuZ3RlKC4xKTspZT1lLnRpbWVzKGEpLGYrPTU7Zm9yKHMrPU1hdGgubG9nKHAoMixmKSkvTWF0aC5MTjEwKjIrNXwwLHI9bj1pPW5ldyBoKG8pLGgucHJlY2lzaW9uPXM7Oyl7aWYobj1rKG4udGltZXMoZSkscykscj1yLnRpbWVzKCsrYyksUygoYT1pLnBsdXMoRShuLHIscykpKS5kKS5zbGljZSgwLHMpPT09UyhpLmQpLnNsaWNlKDAscykpe2Zvcig7Zi0tOylpPWsoaS50aW1lcyhpKSxzKTtyZXR1cm4gaC5wcmVjaXNpb249ZCxudWxsPT10Pyh1PSEwLGsoaSxkKSk6aX1pPWF9fWZ1bmN0aW9uIFQoZSl7Zm9yKHZhciB0PWUuZSpnLHI9ZS5kWzBdO3I+PTEwO3IvPTEwKXQrKztyZXR1cm4gdH1mdW5jdGlvbiBBKGUsdCxyKXtpZih0PmUuTE4xMC5zZCgpKXRocm93IHU9ITAsciYmKGUucHJlY2lzaW9uPXIpLEVycm9yKGMrIkxOMTAgcHJlY2lzaW9uIGxpbWl0IGV4Y2VlZGVkIik7cmV0dXJuIGsobmV3IGUoZS5MTjEwKSx0KX1mdW5jdGlvbiBDKGUpe2Zvcih2YXIgdD0iIjtlLS07KXQrPSIwIjtyZXR1cm4gdH1mdW5jdGlvbiB4KGUsdCl7dmFyIHIsbixpLGEscyxmLGwsaCxwLGQ9MSx5PWUsZz15LmQsdj15LmNvbnN0cnVjdG9yLG09di5wcmVjaXNpb247aWYoeS5zPDEpdGhyb3cgRXJyb3IoYysoeS5zPyJOYU4iOiItSW5maW5pdHkiKSk7aWYoeS5lcShvKSlyZXR1cm4gbmV3IHYoMCk7aWYobnVsbD09dD8odT0hMSxoPW0pOmg9dCx5LmVxKDEwKSlyZXR1cm4gbnVsbD09dCYmKHU9ITApLEEodixoKTtpZihoKz0xMCx2LnByZWNpc2lvbj1oLG49KHI9UyhnKSkuY2hhckF0KDApLGE9VCh5KSwhKE1hdGguYWJzKGEpPDE1ZTE0KSlyZXR1cm4gbD1BKHYsaCsyLG0pLnRpbWVzKGErIiIpLHk9eChuZXcgdihuKyIuIityLnNsaWNlKDEpKSxoLTEwKS5wbHVzKGwpLHYucHJlY2lzaW9uPW0sbnVsbD09dD8odT0hMCxrKHksbSkpOnk7Zm9yKDtuPDcmJjEhPW58fDE9PW4mJnIuY2hhckF0KDEpPjM7KW49KHI9UygoeT15LnRpbWVzKGUpKS5kKSkuY2hhckF0KDApLGQrKztmb3IoYT1UKHkpLG4+MT8oeT1uZXcgdigiMC4iK3IpLGErKyk6eT1uZXcgdihuKyIuIityLnNsaWNlKDEpKSxmPXM9eT1FKHkubWludXMobykseS5wbHVzKG8pLGgpLHA9ayh5LnRpbWVzKHkpLGgpLGk9Mzs7KXtpZihzPWsocy50aW1lcyhwKSxoKSxTKChsPWYucGx1cyhFKHMsbmV3IHYoaSksaCkpKS5kKS5zbGljZSgwLGgpPT09UyhmLmQpLnNsaWNlKDAsaCkpcmV0dXJuIGY9Zi50aW1lcygyKSwwIT09YSYmKGY9Zi5wbHVzKEEodixoKzIsbSkudGltZXMoYSsiIikpKSxmPUUoZixuZXcgdihkKSxoKSx2LnByZWNpc2lvbj1tLG51bGw9PXQ/KHU9ITAsayhmLG0pKTpmO2Y9bCxpKz0yfX1mdW5jdGlvbiBJKGUsdCl7dmFyIHIsbixpO2Zvcigocj10LmluZGV4T2YoIi4iKSk+LTEmJih0PXQucmVwbGFjZSgiLiIsIiIpKSwobj10LnNlYXJjaCgvZS9pKSk+MD8ocjwwJiYocj1uKSxyKz0rdC5zbGljZShuKzEpLHQ9dC5zdWJzdHJpbmcoMCxuKSk6cjwwJiYocj10Lmxlbmd0aCksbj0wOzQ4PT09dC5jaGFyQ29kZUF0KG4pOykrK247Zm9yKGk9dC5sZW5ndGg7NDg9PT10LmNoYXJDb2RlQXQoaS0xKTspLS1pO2lmKHQ9dC5zbGljZShuLGkpKXtpZihpLT1uLHI9ci1uLTEsZS5lPWgoci9nKSxlLmQ9W10sbj0ocisxKSVnLHI8MCYmKG4rPWcpLG48aSl7Zm9yKG4mJmUuZC5wdXNoKCt0LnNsaWNlKDAsbikpLGktPWc7bjxpOyllLmQucHVzaCgrdC5zbGljZShuLG4rPWcpKTt0PXQuc2xpY2Uobiksbj1nLXQubGVuZ3RofWVsc2Ugbi09aTtmb3IoO24tLTspdCs9IjAiO2lmKGUuZC5wdXNoKCt0KSx1JiYoZS5lPnZ8fGUuZTwtdikpdGhyb3cgRXJyb3IobCtyKX1lbHNlIGUucz0wLGUuZT0wLGUuZD1bMF07cmV0dXJuIGV9ZnVuY3Rpb24gayhlLHQscil7dmFyIG4saSxvLGEscyxjLGYsZCxtPWUuZDtmb3IoYT0xLG89bVswXTtvPj0xMDtvLz0xMClhKys7aWYoKG49dC1hKTwwKW4rPWcsaT10LGY9bVtkPTBdO2Vsc2V7aWYoKGQ9TWF0aC5jZWlsKChuKzEpL2cpKT49KG89bS5sZW5ndGgpKXJldHVybiBlO2ZvcihmPW89bVtkXSxhPTE7bz49MTA7by89MTApYSsrO2k9KG4lPWcpLWcrYX1pZih2b2lkIDAhPT1yJiYocz1mLyhvPXAoMTAsYS1pLTEpKSUxMHwwLGM9dDwwfHx2b2lkIDAhPT1tW2QrMV18fGYlbyxjPXI8ND8oc3x8YykmJigwPT1yfHxyPT0oZS5zPDA/MzoyKSk6cz41fHw1PT1zJiYoND09cnx8Y3x8Nj09ciYmKG4+MD9pPjA/Zi9wKDEwLGEtaSk6MDptW2QtMV0pJTEwJjF8fHI9PShlLnM8MD84OjcpKSksdDwxfHwhbVswXSlyZXR1cm4gYz8obz1UKGUpLG0ubGVuZ3RoPTEsdD10LW8tMSxtWzBdPXAoMTAsKGctdCVnKSVnKSxlLmU9aCgtdC9nKXx8MCk6KG0ubGVuZ3RoPTEsbVswXT1lLmU9ZS5zPTApLGU7aWYoMD09bj8obS5sZW5ndGg9ZCxvPTEsZC0tKToobS5sZW5ndGg9ZCsxLG89cCgxMCxnLW4pLG1bZF09aT4wPyhmL3AoMTAsYS1pKSVwKDEwLGkpfDApKm86MCksYylmb3IoOzspe2lmKDA9PWQpeyhtWzBdKz1vKT09eSYmKG1bMF09MSwrK2UuZSk7YnJlYWt9aWYobVtkXSs9byxtW2RdIT15KWJyZWFrO21bZC0tXT0wLG89MX1mb3Iobj1tLmxlbmd0aDswPT09bVstLW5dOyltLnBvcCgpO2lmKHUmJihlLmU+dnx8ZS5lPC12KSl0aHJvdyBFcnJvcihsK1QoZSkpO3JldHVybiBlfWZ1bmN0aW9uIE8oZSx0KXt2YXIgcixuLGksbyxhLHMsYyxmLGwsaCxwPWUuY29uc3RydWN0b3IsZD1wLnByZWNpc2lvbjtpZighZS5zfHwhdC5zKXJldHVybiB0LnM/dC5zPS10LnM6dD1uZXcgcChlKSx1P2sodCxkKTp0O2lmKGM9ZS5kLGg9dC5kLG49dC5lLGY9ZS5lLGM9Yy5zbGljZSgpLGE9Zi1uKXtmb3IoKGw9YTwwKT8ocj1jLGE9LWEscz1oLmxlbmd0aCk6KHI9aCxuPWYscz1jLmxlbmd0aCksYT4oaT1NYXRoLm1heChNYXRoLmNlaWwoZC9nKSxzKSsyKSYmKGE9aSxyLmxlbmd0aD0xKSxyLnJldmVyc2UoKSxpPWE7aS0tOylyLnB1c2goMCk7ci5yZXZlcnNlKCl9ZWxzZXtmb3IoKGw9KGk9Yy5sZW5ndGgpPChzPWgubGVuZ3RoKSkmJihzPWkpLGk9MDtpPHM7aSsrKWlmKGNbaV0hPWhbaV0pe2w9Y1tpXTxoW2ldO2JyZWFrfWE9MH1mb3IobCYmKHI9YyxjPWgsaD1yLHQucz0tdC5zKSxzPWMubGVuZ3RoLGk9aC5sZW5ndGgtcztpPjA7LS1pKWNbcysrXT0wO2ZvcihpPWgubGVuZ3RoO2k+YTspe2lmKGNbLS1pXTxoW2ldKXtmb3Iobz1pO28mJjA9PT1jWy0tb107KWNbb109eS0xOy0tY1tvXSxjW2ldKz15fWNbaV0tPWhbaV19Zm9yKDswPT09Y1stLXNdOyljLnBvcCgpO2Zvcig7MD09PWNbMF07Yy5zaGlmdCgpKS0tbjtyZXR1cm4gY1swXT8odC5kPWMsdC5lPW4sdT9rKHQsZCk6dCk6bmV3IHAoMCl9ZnVuY3Rpb24gTihlLHQscil7dmFyIG4saT1UKGUpLG89UyhlLmQpLGE9by5sZW5ndGg7cmV0dXJuIHQ/KHImJihuPXItYSk+MD9vPW8uY2hhckF0KDApKyIuIitvLnNsaWNlKDEpK0Mobik6YT4xJiYobz1vLmNoYXJBdCgwKSsiLiIrby5zbGljZSgxKSksbz1vKyhpPDA/ImUiOiJlKyIpK2kpOmk8MD8obz0iMC4iK0MoLWktMSkrbyxyJiYobj1yLWEpPjAmJihvKz1DKG4pKSk6aT49YT8obys9QyhpKzEtYSksciYmKG49ci1pLTEpPjAmJihvPW8rIi4iK0MobikpKTooKG49aSsxKTxhJiYobz1vLnNsaWNlKDAsbikrIi4iK28uc2xpY2UobikpLHImJihuPXItYSk+MCYmKGkrMT09PWEmJihvKz0iLiIpLG8rPUMobikpKSxlLnM8MD8iLSIrbzpvfWZ1bmN0aW9uIFAoZSx0KXtpZihlLmxlbmd0aD50KXJldHVybiBlLmxlbmd0aD10LCEwfWZ1bmN0aW9uIFIoZSl7aWYoIWV8fCJvYmplY3QiIT09dHlwZW9mIGUpdGhyb3cgRXJyb3IoYysiT2JqZWN0IGV4cGVjdGVkIik7dmFyIHQscixuLGk9WyJwcmVjaXNpb24iLDEsYSwicm91bmRpbmciLDAsOCwidG9FeHBOZWciLC0xLzAsMCwidG9FeHBQb3MiLDAsMS8wXTtmb3IodD0wO3Q8aS5sZW5ndGg7dCs9MylpZih2b2lkIDAhPT0obj1lW3I9aVt0XV0pKXtpZighKGgobik9PT1uJiZuPj1pW3QrMV0mJm48PWlbdCsyXSkpdGhyb3cgRXJyb3IoZityKyI6ICIrbik7dGhpc1tyXT1ufWlmKHZvaWQgMCE9PShuPWVbcj0iTE4xMCJdKSl7aWYobiE9TWF0aC5MTjEwKXRocm93IEVycm9yKGYrcisiOiAiK24pO3RoaXNbcl09bmV3IHRoaXMobil9cmV0dXJuIHRoaXN9KHM9ZnVuY3Rpb24gZSh0KXt2YXIgcixuLGk7ZnVuY3Rpb24gbyhlKXt2YXIgdD10aGlzO2lmKCEodCBpbnN0YW5jZW9mIG8pKXJldHVybiBuZXcgbyhlKTtpZih0LmNvbnN0cnVjdG9yPW8sZSBpbnN0YW5jZW9mIG8pcmV0dXJuIHQucz1lLnMsdC5lPWUuZSx2b2lkKHQuZD0oZT1lLmQpP2Uuc2xpY2UoKTplKTtpZigibnVtYmVyIj09PXR5cGVvZiBlKXtpZigwKmUhPT0wKXRocm93IEVycm9yKGYrZSk7aWYoZT4wKXQucz0xO2Vsc2V7aWYoIShlPDApKXJldHVybiB0LnM9MCx0LmU9MCx2b2lkKHQuZD1bMF0pO2U9LWUsdC5zPS0xfXJldHVybiBlPT09fn5lJiZlPDFlNz8odC5lPTAsdm9pZCh0LmQ9W2VdKSk6SSh0LGUudG9TdHJpbmcoKSl9aWYoInN0cmluZyIhPT10eXBlb2YgZSl0aHJvdyBFcnJvcihmK2UpO2lmKDQ1PT09ZS5jaGFyQ29kZUF0KDApPyhlPWUuc2xpY2UoMSksdC5zPS0xKTp0LnM9MSwhZC50ZXN0KGUpKXRocm93IEVycm9yKGYrZSk7SSh0LGUpfWlmKG8ucHJvdG90eXBlPW0sby5ST1VORF9VUD0wLG8uUk9VTkRfRE9XTj0xLG8uUk9VTkRfQ0VJTD0yLG8uUk9VTkRfRkxPT1I9MyxvLlJPVU5EX0hBTEZfVVA9NCxvLlJPVU5EX0hBTEZfRE9XTj01LG8uUk9VTkRfSEFMRl9FVkVOPTYsby5ST1VORF9IQUxGX0NFSUw9NyxvLlJPVU5EX0hBTEZfRkxPT1I9OCxvLmNsb25lPWUsby5jb25maWc9by5zZXQ9Uix2b2lkIDA9PT10JiYodD17fSksdClmb3IoaT1bInByZWNpc2lvbiIsInJvdW5kaW5nIiwidG9FeHBOZWciLCJ0b0V4cFBvcyIsIkxOMTAiXSxyPTA7cjxpLmxlbmd0aDspdC5oYXNPd25Qcm9wZXJ0eShuPWlbcisrXSl8fCh0W25dPXRoaXNbbl0pO3JldHVybiBvLmNvbmZpZyh0KSxvfShzKSkuZGVmYXVsdD1zLkRlY2ltYWw9cyxvPW5ldyBzKDEpLHZvaWQgMD09PShuPWZ1bmN0aW9uKCl7cmV0dXJuIHN9LmNhbGwodCxyLHQsZSkpfHwoZS5leHBvcnRzPW4pfSgpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLHI9bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQubWVtb2l6ZT10LnJldmVyc2U9dC5jb21wb3NlPXQubWFwPXQucmFuZ2U9dC5jdXJyeT10LlBMQUNFX0hPTERFUj12b2lkIDA7dmFyIGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LG89eyJAQGZ1bmN0aW9uYWwvcGxhY2Vob2xkZXIiOiEwfTt0LlBMQUNFX0hPTERFUj1vO3ZhciBhPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09b30scz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gdCgpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aHx8MT09PWFyZ3VtZW50cy5sZW5ndGgmJmEoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKT90OmUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fSx1PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbiBlKHQscil7cmV0dXJuIDE9PT10P3I6cyhmdW5jdGlvbigpe2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLHU9bmV3IEFycmF5KGkpLGM9MDtjPGk7YysrKXVbY109YXJndW1lbnRzW2NdO3ZhciBmPXUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09b30pLmxlbmd0aDtyZXR1cm4gZj49dD9yLmFwcGx5KHZvaWQgMCx1KTplKHQtZixzKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksaT0wO2k8ZTtpKyspdFtpXT1hcmd1bWVudHNbaV07dmFyIG89dS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSk/dC5zaGlmdCgpOmV9KTtyZXR1cm4gci5hcHBseSh2b2lkIDAsbihvKS5jb25jYXQodCkpfSkpfSl9KGUubGVuZ3RoLGUpfTt0LmN1cnJ5PXU7dC5yYW5nZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1bXSxuPWU7bjx0OysrbilyW24tZV09bjtyZXR1cm4gcn07dmFyIGM9dShmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKGUpOk9iamVjdC5rZXlzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pLm1hcChlKX0pO3QubWFwPWM7dC5jb21wb3NlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07aWYoIXQubGVuZ3RoKXJldHVybiBpO3ZhciBuPXQucmV2ZXJzZSgpLG89blswXSxhPW4uc2xpY2UoMSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQoZSl9LG8uYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfX07dC5yZXZlcnNlPWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UucmV2ZXJzZSgpOmUuc3BsaXQoIiIpLnJldmVyc2Uuam9pbigiIil9O3QubWVtb2l6ZT1mdW5jdGlvbihlKXt2YXIgdD1udWxsLHI9bnVsbDtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShuKSxvPTA7bzxuO28rKylpW29dPWFyZ3VtZW50c1tvXTtyZXR1cm4gdCYmaS5ldmVyeShmdW5jdGlvbihlLHIpe3JldHVybiBlPT09dFtyXX0pP3I6KHQ9aSxyPWUuYXBwbHkodm9pZCAwLGkpKX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDgxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKG51bGw9PWV8fCFlLmxlbmd0aCkmJm4oZSx0LDApPi0xfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbil7Zm9yKHZhciBpPWUubGVuZ3RoLG89cisobj8xOi0xKTtuP28tLTorK288aTspaWYodChlW29dLG8sZSkpcmV0dXJuIG87cmV0dXJuLTF9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPS0xLGk9bnVsbD09ZT8wOmUubGVuZ3RoOysrbjxpOylpZihyKHQsZVtuXSkpcmV0dXJuITA7cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dC5FWElUSU5HPXQuRU5URVJFRD10LkVOVEVSSU5HPXQuRVhJVEVEPXQuVU5NT1VOVEVEPXZvaWQgMDt2YXIgbj1mdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIHIgaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSl7dmFyIG49T2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKTp7fTtuLmdldHx8bi5zZXQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixuKTp0W3JdPWVbcl19cmV0dXJuIHQuZGVmYXVsdD1lLHR9KHIoMCkpLGk9cyhyKDEpKSxvPXMocigyMDApKSxhPXIoNDk4KTtyKDQ5OSk7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHU9InVubW91bnRlZCI7dC5VTk1PVU5URUQ9dTt2YXIgYz0iZXhpdGVkIjt0LkVYSVRFRD1jO3ZhciBmPSJlbnRlcmluZyI7dC5FTlRFUklORz1mO3ZhciBsPSJlbnRlcmVkIjt0LkVOVEVSRUQ9bDt0LkVYSVRJTkc9ImV4aXRpbmciO3ZhciBoPWZ1bmN0aW9uKGUpe3ZhciB0LHI7ZnVuY3Rpb24gbih0LHIpe3ZhciBuO249ZS5jYWxsKHRoaXMsdCxyKXx8dGhpczt2YXIgaSxvPXIudHJhbnNpdGlvbkdyb3VwLGE9byYmIW8uaXNNb3VudGluZz90LmVudGVyOnQuYXBwZWFyO3JldHVybiBuLmFwcGVhclN0YXR1cz1udWxsLHQuaW4/YT8oaT1jLG4uYXBwZWFyU3RhdHVzPWYpOmk9bDppPXQudW5tb3VudE9uRXhpdHx8dC5tb3VudE9uRW50ZXI/dTpjLG4uc3RhdGU9e3N0YXR1czppfSxuLm5leHRDYWxsYmFjaz1udWxsLG59cj1lLCh0PW4pLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHIucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPXI7dmFyIGE9bi5wcm90b3R5cGU7cmV0dXJuIGEuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJue3RyYW5zaXRpb25Hcm91cDpudWxsfX0sbi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pbiYmdC5zdGF0dXM9PT11P3tzdGF0dXM6Y306bnVsbH0sYS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMudXBkYXRlU3RhdHVzKCEwLHRoaXMuYXBwZWFyU3RhdHVzKX0sYS5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZihlIT09dGhpcy5wcm9wcyl7dmFyIHI9dGhpcy5zdGF0ZS5zdGF0dXM7dGhpcy5wcm9wcy5pbj9yIT09ZiYmciE9PWwmJih0PWYpOnIhPT1mJiZyIT09bHx8KHQ9ImV4aXRpbmciKX10aGlzLnVwZGF0ZVN0YXR1cyghMSx0KX0sYS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCl9LGEuZ2V0VGltZW91dHM9ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbj10aGlzLnByb3BzLnRpbWVvdXQ7cmV0dXJuIGU9dD1yPW4sbnVsbCE9biYmIm51bWJlciIhPT10eXBlb2YgbiYmKGU9bi5leGl0LHQ9bi5lbnRlcixyPXZvaWQgMCE9PW4uYXBwZWFyP24uYXBwZWFyOnQpLHtleGl0OmUsZW50ZXI6dCxhcHBlYXI6cn19LGEudXBkYXRlU3RhdHVzPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09ZSYmKGU9ITEpLG51bGwhPT10KXt0aGlzLmNhbmNlbE5leHRDYWxsYmFjaygpO3ZhciByPW8uZGVmYXVsdC5maW5kRE9NTm9kZSh0aGlzKTt0PT09Zj90aGlzLnBlcmZvcm1FbnRlcihyLGUpOnRoaXMucGVyZm9ybUV4aXQocil9ZWxzZSB0aGlzLnByb3BzLnVubW91bnRPbkV4aXQmJnRoaXMuc3RhdGUuc3RhdHVzPT09YyYmdGhpcy5zZXRTdGF0ZSh7c3RhdHVzOnV9KX0sYS5wZXJmb3JtRW50ZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49dGhpcy5wcm9wcy5lbnRlcixpPXRoaXMuY29udGV4dC50cmFuc2l0aW9uR3JvdXA/dGhpcy5jb250ZXh0LnRyYW5zaXRpb25Hcm91cC5pc01vdW50aW5nOnQsbz10aGlzLmdldFRpbWVvdXRzKCksYT1pP28uYXBwZWFyOm8uZW50ZXI7dHx8bj8odGhpcy5wcm9wcy5vbkVudGVyKGUsaSksdGhpcy5zYWZlU2V0U3RhdGUoe3N0YXR1czpmfSxmdW5jdGlvbigpe3IucHJvcHMub25FbnRlcmluZyhlLGkpLHIub25UcmFuc2l0aW9uRW5kKGUsYSxmdW5jdGlvbigpe3Iuc2FmZVNldFN0YXRlKHtzdGF0dXM6bH0sZnVuY3Rpb24oKXtyLnByb3BzLm9uRW50ZXJlZChlLGkpfSl9KX0pKTp0aGlzLnNhZmVTZXRTdGF0ZSh7c3RhdHVzOmx9LGZ1bmN0aW9uKCl7ci5wcm9wcy5vbkVudGVyZWQoZSl9KX0sYS5wZXJmb3JtRXhpdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9dGhpcy5wcm9wcy5leGl0LG49dGhpcy5nZXRUaW1lb3V0cygpO3I/KHRoaXMucHJvcHMub25FeGl0KGUpLHRoaXMuc2FmZVNldFN0YXRlKHtzdGF0dXM6ImV4aXRpbmcifSxmdW5jdGlvbigpe3QucHJvcHMub25FeGl0aW5nKGUpLHQub25UcmFuc2l0aW9uRW5kKGUsbi5leGl0LGZ1bmN0aW9uKCl7dC5zYWZlU2V0U3RhdGUoe3N0YXR1czpjfSxmdW5jdGlvbigpe3QucHJvcHMub25FeGl0ZWQoZSl9KX0pfSkpOnRoaXMuc2FmZVNldFN0YXRlKHtzdGF0dXM6Y30sZnVuY3Rpb24oKXt0LnByb3BzLm9uRXhpdGVkKGUpfSl9LGEuY2FuY2VsTmV4dENhbGxiYWNrPWZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMubmV4dENhbGxiYWNrJiYodGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsKCksdGhpcy5uZXh0Q2FsbGJhY2s9bnVsbCl9LGEuc2FmZVNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7dD10aGlzLnNldE5leHRDYWxsYmFjayh0KSx0aGlzLnNldFN0YXRlKGUsdCl9LGEuc2V0TmV4dENhbGxiYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj0hMDtyZXR1cm4gdGhpcy5uZXh0Q2FsbGJhY2s9ZnVuY3Rpb24obil7ciYmKHI9ITEsdC5uZXh0Q2FsbGJhY2s9bnVsbCxlKG4pKX0sdGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsPWZ1bmN0aW9uKCl7cj0hMX0sdGhpcy5uZXh0Q2FsbGJhY2t9LGEub25UcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLnNldE5leHRDYWxsYmFjayhyKTt2YXIgbj1udWxsPT10JiYhdGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcjtlJiYhbj8odGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lciYmdGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcihlLHRoaXMubmV4dENhbGxiYWNrKSxudWxsIT10JiZzZXRUaW1lb3V0KHRoaXMubmV4dENhbGxiYWNrLHQpKTpzZXRUaW1lb3V0KHRoaXMubmV4dENhbGxiYWNrLDApfSxhLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUuc3RhdHVzO2lmKGU9PT11KXJldHVybiBudWxsO3ZhciB0PXRoaXMucHJvcHMscj10LmNoaWxkcmVuLG49ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4saT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGlbcl09ZVtyXSk7cmV0dXJuIGl9KHQsWyJjaGlsZHJlbiJdKTtpZihkZWxldGUgbi5pbixkZWxldGUgbi5tb3VudE9uRW50ZXIsZGVsZXRlIG4udW5tb3VudE9uRXhpdCxkZWxldGUgbi5hcHBlYXIsZGVsZXRlIG4uZW50ZXIsZGVsZXRlIG4uZXhpdCxkZWxldGUgbi50aW1lb3V0LGRlbGV0ZSBuLmFkZEVuZExpc3RlbmVyLGRlbGV0ZSBuLm9uRW50ZXIsZGVsZXRlIG4ub25FbnRlcmluZyxkZWxldGUgbi5vbkVudGVyZWQsZGVsZXRlIG4ub25FeGl0LGRlbGV0ZSBuLm9uRXhpdGluZyxkZWxldGUgbi5vbkV4aXRlZCwiZnVuY3Rpb24iPT09dHlwZW9mIHIpcmV0dXJuIHIoZSxuKTt2YXIgbz1pLmRlZmF1bHQuQ2hpbGRyZW4ub25seShyKTtyZXR1cm4gaS5kZWZhdWx0LmNsb25lRWxlbWVudChvLG4pfSxufShpLmRlZmF1bHQuQ29tcG9uZW50KTtmdW5jdGlvbiBwKCl7fWguY29udGV4dFR5cGVzPXt0cmFuc2l0aW9uR3JvdXA6bi5vYmplY3R9LGguY2hpbGRDb250ZXh0VHlwZXM9e3RyYW5zaXRpb25Hcm91cDpmdW5jdGlvbigpe319LGgucHJvcFR5cGVzPXt9LGguZGVmYXVsdFByb3BzPXtpbjohMSxtb3VudE9uRW50ZXI6ITEsdW5tb3VudE9uRXhpdDohMSxhcHBlYXI6ITEsZW50ZXI6ITAsZXhpdDohMCxvbkVudGVyOnAsb25FbnRlcmluZzpwLG9uRW50ZXJlZDpwLG9uRXhpdDpwLG9uRXhpdGluZzpwLG9uRXhpdGVkOnB9LGguVU5NT1VOVEVEPTAsaC5FWElURUQ9MSxoLkVOVEVSSU5HPTIsaC5FTlRFUkVEPTMsaC5FWElUSU5HPTQ7dmFyIGQ9KDAsYS5wb2x5ZmlsbCkoaCk7dC5kZWZhdWx0PWR9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3ZhciBlPXRoaXMuY29uc3RydWN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHRoaXMucHJvcHMsdGhpcy5zdGF0ZSk7bnVsbCE9PWUmJnZvaWQgMCE9PWUmJnRoaXMuc2V0U3RhdGUoZSl9ZnVuY3Rpb24gaShlKXt0aGlzLnNldFN0YXRlKGZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuY29uc3RydWN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKGUsdCk7cmV0dXJuIG51bGwhPT1yJiZ2b2lkIDAhPT1yP3I6bnVsbH0uYmluZCh0aGlzKSl9ZnVuY3Rpb24gbyhlLHQpe3RyeXt2YXIgcj10aGlzLnByb3BzLG49dGhpcy5zdGF0ZTt0aGlzLnByb3BzPWUsdGhpcy5zdGF0ZT10LHRoaXMuX19yZWFjdEludGVybmFsU25hcHNob3RGbGFnPSEwLHRoaXMuX19yZWFjdEludGVybmFsU25hcHNob3Q9dGhpcy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShyLG4pfWZpbmFsbHl7dGhpcy5wcm9wcz1yLHRoaXMuc3RhdGU9bn19ZnVuY3Rpb24gYShlKXt2YXIgdD1lLnByb3RvdHlwZTtpZighdHx8IXQuaXNSZWFjdENvbXBvbmVudCl0aHJvdyBuZXcgRXJyb3IoIkNhbiBvbmx5IHBvbHlmaWxsIGNsYXNzIGNvbXBvbmVudHMiKTtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiYiZnVuY3Rpb24iIT09dHlwZW9mIHQuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpcmV0dXJuIGU7dmFyIHI9bnVsbCxhPW51bGwscz1udWxsO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgdC5jb21wb25lbnRXaWxsTW91bnQ/cj0iY29tcG9uZW50V2lsbE1vdW50IjoiZnVuY3Rpb24iPT09dHlwZW9mIHQuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmKHI9IlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQiKSwiZnVuY3Rpb24iPT09dHlwZW9mIHQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz9hPSJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIjoiZnVuY3Rpb24iPT09dHlwZW9mIHQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJihhPSJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIpLCJmdW5jdGlvbiI9PT10eXBlb2YgdC5jb21wb25lbnRXaWxsVXBkYXRlP3M9ImNvbXBvbmVudFdpbGxVcGRhdGUiOiJmdW5jdGlvbiI9PT10eXBlb2YgdC5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmKHM9IlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlIiksbnVsbCE9PXJ8fG51bGwhPT1hfHxudWxsIT09cyl7dmFyIHU9ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lLGM9ImZ1bmN0aW9uIj09PXR5cGVvZiBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz8iZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKCkiOiJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSgpIjt0aHJvdyBFcnJvcigiVW5zYWZlIGxlZ2FjeSBsaWZlY3ljbGVzIHdpbGwgbm90IGJlIGNhbGxlZCBmb3IgY29tcG9uZW50cyB1c2luZyBuZXcgY29tcG9uZW50IEFQSXMuXG5cbiIrdSsiIHVzZXMgIitjKyIgYnV0IGFsc28gY29udGFpbnMgdGhlIGZvbGxvd2luZyBsZWdhY3kgbGlmZWN5Y2xlczoiKyhudWxsIT09cj8iXG4gICIrcjoiIikrKG51bGwhPT1hPyJcbiAgIithOiIiKSsobnVsbCE9PXM/IlxuICAiK3M6IiIpKyJcblxuVGhlIGFib3ZlIGxpZmVjeWNsZXMgc2hvdWxkIGJlIHJlbW92ZWQuIExlYXJuIG1vcmUgYWJvdXQgdGhpcyB3YXJuaW5nIGhlcmU6XG5odHRwczovL2ZiLm1lL3JlYWN0LWFzeW5jLWNvbXBvbmVudC1saWZlY3ljbGUtaG9va3MiKX1pZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiYodC5jb21wb25lbnRXaWxsTW91bnQ9bix0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9aSksImZ1bmN0aW9uIj09PXR5cGVvZiB0LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQuY29tcG9uZW50RGlkVXBkYXRlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBvbHlmaWxsIGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKCkgZm9yIGNvbXBvbmVudHMgdGhhdCBkbyBub3QgZGVmaW5lIGNvbXBvbmVudERpZFVwZGF0ZSgpIG9uIHRoZSBwcm90b3R5cGUiKTt0LmNvbXBvbmVudFdpbGxVcGRhdGU9bzt2YXIgZj10LmNvbXBvbmVudERpZFVwZGF0ZTt0LmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEZsYWc/dGhpcy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdDpyO2YuY2FsbCh0aGlzLGUsdCxuKX19cmV0dXJuIGV9ci5yKHQpLHIuZCh0LCJwb2x5ZmlsbCIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pLG4uX19zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZz0hMCxpLl9fc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmc9ITAsby5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nPSEwfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmNsYXNzTmFtZXNTaGFwZT10LnRpbWVvdXRzU2hhcGU9dm9pZCAwO3ZhciBuOyhuPXIoMCkpJiZuLl9fZXNNb2R1bGU7dC50aW1lb3V0c1NoYXBlPW51bGw7dC5jbGFzc05hbWVzU2hhcGU9bnVsbH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXZvaWQgMDt2YXIgbj1zKHIoMCkpLGk9cyhyKDEpKSxvPXIoNDk4KSxhPXIoMTExMCk7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gdSgpe3JldHVybih1PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtmb3IodmFyIG4gaW4gcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixuKSYmKGVbbl09cltuXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYyhlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9dmFyIGY9T2JqZWN0LnZhbHVlc3x8ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfSxsPWZ1bmN0aW9uKGUpe3ZhciB0LHI7ZnVuY3Rpb24gbih0LHIpe3ZhciBuLGk9KG49ZS5jYWxsKHRoaXMsdCxyKXx8dGhpcykuaGFuZGxlRXhpdGVkLmJpbmQoYyhjKG4pKSk7cmV0dXJuIG4uc3RhdGU9e2hhbmRsZUV4aXRlZDppLGZpcnN0UmVuZGVyOiEwfSxufXI9ZSwodD1uKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShyLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1yO3ZhciBvPW4ucHJvdG90eXBlO3JldHVybiBvLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybnt0cmFuc2l0aW9uR3JvdXA6e2lzTW91bnRpbmc6IXRoaXMuYXBwZWFyZWR9fX0sby5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMuYXBwZWFyZWQ9ITAsdGhpcy5tb3VudGVkPSEwfSxvLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5tb3VudGVkPSExfSxuLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz1mdW5jdGlvbihlLHQpe3ZhciByPXQuY2hpbGRyZW4sbj10LmhhbmRsZUV4aXRlZDtyZXR1cm57Y2hpbGRyZW46dC5maXJzdFJlbmRlcj8oMCxhLmdldEluaXRpYWxDaGlsZE1hcHBpbmcpKGUsbik6KDAsYS5nZXROZXh0Q2hpbGRNYXBwaW5nKShlLHIsbiksZmlyc3RSZW5kZXI6ITF9fSxvLmhhbmRsZUV4aXRlZD1mdW5jdGlvbihlLHQpe3ZhciByPSgwLGEuZ2V0Q2hpbGRNYXBwaW5nKSh0aGlzLnByb3BzLmNoaWxkcmVuKTtlLmtleSBpbiByfHwoZS5wcm9wcy5vbkV4aXRlZCYmZS5wcm9wcy5vbkV4aXRlZCh0KSx0aGlzLm1vdW50ZWQmJnRoaXMuc2V0U3RhdGUoZnVuY3Rpb24odCl7dmFyIHI9dSh7fSx0LmNoaWxkcmVuKTtyZXR1cm4gZGVsZXRlIHJbZS5rZXldLHtjaGlsZHJlbjpyfX0pKX0sby5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jb21wb25lbnQscj1lLmNoaWxkRmFjdG9yeSxuPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGk9e30sbz1PYmplY3Qua2V5cyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fChpW3JdPWVbcl0pO3JldHVybiBpfShlLFsiY29tcG9uZW50IiwiY2hpbGRGYWN0b3J5Il0pLG89Zih0aGlzLnN0YXRlLmNoaWxkcmVuKS5tYXAocik7cmV0dXJuIGRlbGV0ZSBuLmFwcGVhcixkZWxldGUgbi5lbnRlcixkZWxldGUgbi5leGl0LG51bGw9PT10P286aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQodCxuLG8pfSxufShpLmRlZmF1bHQuQ29tcG9uZW50KTtsLmNoaWxkQ29udGV4dFR5cGVzPXt0cmFuc2l0aW9uR3JvdXA6bi5kZWZhdWx0Lm9iamVjdC5pc1JlcXVpcmVkfSxsLnByb3BUeXBlcz17fSxsLmRlZmF1bHRQcm9wcz17Y29tcG9uZW50OiJkaXYiLGNoaWxkRmFjdG9yeTpmdW5jdGlvbihlKXtyZXR1cm4gZX19O3ZhciBoPSgwLG8ucG9seWZpbGwpKGwpO3QuZGVmYXVsdD1oLGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDUwMiksaT0xLzAsbz0xLjc5NzY5MzEzNDg2MjMxNTdlMzA4O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT8oZT1uKGUpKT09PWl8fGU9PT0taT8oZTwwPy0xOjEpKm86ZT09PWU/ZTowOjA9PT1lP2U6MH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDM1KSxpPXIoMTE4KSxvPU5hTixhPS9eXHMrfFxzKyQvZyxzPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHU9L14wYlswMV0rJC9pLGM9L14wb1swLTddKyQvaSxmPXBhcnNlSW50O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoaShlKSlyZXR1cm4gbztpZihuKGUpKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZS52YWx1ZU9mP2UudmFsdWVPZigpOmU7ZT1uKHQpP3QrIiI6dH1pZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIDA9PT1lP2U6K2U7ZT1lLnJlcGxhY2UoYSwiIik7dmFyIHI9dS50ZXN0KGUpO3JldHVybiByfHxjLnRlc3QoZSk/ZihlLnNsaWNlKDIpLHI/Mjo4KTpzLnRlc3QoZSk/bzorZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gYShlKXt0cnl7dShuLm5leHQoZSkpfWNhdGNoKHQpe28odCl9fWZ1bmN0aW9uIHMoZSl7dHJ5e3Uobi50aHJvdyhlKSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gdShlKXtlLmRvbmU/aShlLnZhbHVlKTpuZXcgcihmdW5jdGlvbih0KXt0KGUudmFsdWUpfSkudGhlbihhLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pfSxpPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYob1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvO2Z1bmN0aW9uIHMobyl7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBmdW5jdGlvbihvKXtpZihyKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2E7KXRyeXtpZihyPTEsbiYmKGk9MiZvWzBdP24ucmV0dXJuOm9bMF0/bi50aHJvd3x8KChpPW4ucmV0dXJuKSYmaS5jYWxsKG4pLDApOm4ubmV4dCkmJiEoaT1pLmNhbGwobixvWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gobj0wLGkmJihvPVsyJm9bMF0saS52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6aT1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKyssbj1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT0oaT1hLnRyeXMpLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKSYmKDY9PT1vWzBdfHwyPT09b1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFpfHxvWzFdPmlbMF0mJm9bMV08aVszXSkpe2EubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmYS5sYWJlbDxpWzFdKXthLmxhYmVsPWlbMV0saT1vO2JyZWFrfWlmKGkmJmEubGFiZWw8aVsyXSl7YS5sYWJlbD1pWzJdLGEub3BzLnB1c2gobyk7YnJlYWt9aVsyXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUsYSl9Y2F0Y2gocyl7bz1bNixzXSxuPTB9ZmluYWxseXtyPWk9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sc10pfX19O2Z1bmN0aW9uIG8oZSl7Zm9yKHZhciByIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShyKXx8KHRbcl09ZVtyXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBhPXIoMjMzKTtvKHIoMzk2KSksbyhyKDgwKSk7dmFyIHM9cigyMzcpO3QuaXNWYWxpZEFkZHJlc3M9cy5pc1ZhbGlkQWRkcmVzcyxvKHIoNDU2KSksbyhyKDM5NykpLG8ocigzOTgpKSxvKHIoMjMzKSk7dmFyIHU9cig0NTYpO2Z1bmN0aW9uIGMoZSl7cmV0dXJuIGEuZmluZCh7dHlwZTplfSx1LmFkYXB0ZXJMaXN0KX10LmdldEF2YWlsYWJsZUxpc3Q9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBQcm9taXNlLmFsbCh1LmFkYXB0ZXJQcmlvcml0eUxpc3QubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBuKGUsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlO3JldHVybiBpKHRoaXMsZnVuY3Rpb24ocil7c3dpdGNoKHIubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCwoZT1jKHQpKS5pc0F2YWlsYWJsZSgpXTtjYXNlIDE6cmV0dXJuWzIsci5zZW50KCk/ZTpudWxsXX19KX0pfSkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZmlsdGVyKEJvb2xlYW4pfSl9LHQuZ2V0QWRhcHRlckJ5VHlwZT1jfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHQ/ZVt0LTFdOnZvaWQgMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4MiksaT1yKDEwNzcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuKGkoZSx0KSwxKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ3NSksaT1yKDc1KSxvPXIoMTA4NiksYT1yKDkpLHM9cigxOTkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIHU9YShlKT9uOm87cmV0dXJuIHImJnMoZSx0LHIpJiYodD12b2lkIDApLHUoZSxpKHQsMykpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoMTEwMCksbz1yKDQ4OSksYT1yKDExMDEpLHM9byhmdW5jdGlvbihlKXt2YXIgdD1uKGUsYSk7cmV0dXJuIHQubGVuZ3RoJiZ0WzBdPT09ZVswXT9pKHQpOltdfSk7ZS5leHBvcnRzPXN9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ3NyksaT1yKDExMDMpLG89cig3NSksYT1yKDkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybihhKGUpP246aSkoZSxvKHQsMykpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTExMSkocigxMTEyKSk7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExMTYpLGk9cigzNSksbz0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgYT0hMCxzPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3Iobyk7cmV0dXJuIGkocikmJihhPSJsZWFkaW5nImluIHI/ISFyLmxlYWRpbmc6YSxzPSJ0cmFpbGluZyJpbiByPyEhci50cmFpbGluZzpzKSxuKGUsdCx7bGVhZGluZzphLG1heFdhaXQ6dCx0cmFpbGluZzpzfSl9fSwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDMpLGk9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Isbz1pP1N5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKTo2MDEwMyxhPWk/U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIik6NjAxMDYscz1pP1N5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50Iik6NjAxMDcsdT1pP1N5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIik6NjAxMDgsYz1pP1N5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIik6NjAxMTQsZj1pP1N5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIik6NjAxMDksbD1pP1N5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKTo2MDExMCxoPWk/U3ltYm9sLmZvcigicmVhY3QuY29uY3VycmVudF9tb2RlIik6NjAxMTEscD1pP1N5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIik6NjAxMTIsZD1pP1N5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIik6NjAxMTMseT1pP1N5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKTo2MDExNSxnPWk/U3ltYm9sLmZvcigicmVhY3QubGF6eSIpOjYwMTE2LHY9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBtKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTEscj0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLG49MDtuPHQ7bisrKXIrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuKzFdKTshZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzKXtpZighZSl7aWYoZT12b2lkIDAsdm9pZCAwPT09dCllPUVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIHU9W3IsbixpLG8sYSxzXSxjPTA7KGU9RXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIHVbYysrXX0pKSkubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgZS5mcmFtZXNUb1BvcD0xLGV9fSghMSwiTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCAlcyBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuICIscil9dmFyIGI9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LF89e307ZnVuY3Rpb24gUyhlLHQscil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1fLHRoaXMudXBkYXRlcj1yfHxifWZ1bmN0aW9uIEUoKXt9ZnVuY3Rpb24gdyhlLHQscil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1fLHRoaXMudXBkYXRlcj1yfHxifVMucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e30sUy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXsib2JqZWN0IiE9PXR5cGVvZiBlJiYiZnVuY3Rpb24iIT09dHlwZW9mIGUmJm51bGwhPWUmJm0oIjg1IiksdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUsdCwic2V0U3RhdGUiKX0sUy5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGUsImZvcmNlVXBkYXRlIil9LEUucHJvdG90eXBlPVMucHJvdG90eXBlO3ZhciBUPXcucHJvdG90eXBlPW5ldyBFO1QuY29uc3RydWN0b3I9dyxuKFQsUy5wcm90b3R5cGUpLFQuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIEE9e2N1cnJlbnQ6bnVsbH0sQz17Y3VycmVudDpudWxsfSx4PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksST17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIGsoZSx0LHIpe3ZhciBuPXZvaWQgMCxpPXt9LGE9bnVsbCxzPW51bGw7aWYobnVsbCE9dClmbw=="
}

github/deemru/w8io/169f3d6 
3.92 ms