local Yicjm = function(Yicstr) local b64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" local temp = {} for i = 1, 64 do temp[string.sub(b64chars, i, i)] = i end temp["="] = 0 local str = "" for i = 1, #Yicstr, 4 do if not (i > #Yicstr) then local data = 0 local str_count = 0 for j = 0, 3 do local str1 = string.sub(Yicstr, i + j, i + j) if not temp[str1] then return end if temp[str1] < 1 then data = data * 64 else data = data * 64 + temp[str1] - 1 str_count = str_count + 1 end end for j = 16, 0, -8 do if str_count > 0 then str = str .. string.char(math.floor(data / math.pow(2, j))) data = math.fmod(data, math.pow(2, j)) str_count = str_count - 1 end end end end local last = tonumber(string.byte(str, string.len(str), string.len(str))) if last == 0 then str = string.sub(str, 1, string.len(str) - 1) end return str end local base64 = Yicjm("ZnVuY3Rpb24gc2V0dmFsdWUoYWRkcmVzcyxmbGFncyx2YWx1ZSkgbG9jYWwgdHQ9e30gdHRbMV09e30gdHRbMV0uYWRkcmVzcz1hZGRyZXNzIHR0WzFdLmZsYWdzPWZsYWdzIHR0WzFdLnZhbHVlPXZhbHVlIGdnLnNldFZhbHVlcyh0dCkgZW5kCmZ1bmN0aW9uIEhhb0dlKE5jLFR5cGUsU2VhcmNoLFdyaXRlKSBnZy5jbGVhclJlc3VsdHMoKSBnZy5zZXRSYW5nZXMoTmMpIGdnLnNldFZpc2libGUoZmFsc2UpIGdnLnNlYXJjaE51bWJlcihTZWFyY2hbMV1bMV0sVHlwZSkgbG9jYWwgY291bnQ9Z2cuZ2V0UmVzdWx0Q291bnQoKSBsb2NhbCByZXN1bHQ9Z2cuZ2V0UmVzdWx0cyhjb3VudCkgZ2cuY2xlYXJSZXN1bHRzKCkgbG9jYWwgZGF0YT17fSBsb2NhbCBiYXNlPVNlYXJjaFsxXVsyXSBpZihjb3VudD4wKXRoZW4gZm9yIGksdiBpbiBpcGFpcnMocmVzdWx0KWRvIHYuaXNVc2VmdWw9dHJ1ZSBlbmQgZm9yIGs9MiwjU2VhcmNoIGRvIGxvY2FsIHRtcD17fSBsb2NhbCBvZmZzZXQ9U2VhcmNoW2tdWzJdLWJhc2UgbG9jYWwgbnVtPVNlYXJjaFtrXVsxXSBmb3IgaSx2IGluIGlwYWlycyhyZXN1bHQpZG8gdG1wWyN0bXArMV09e30gdG1wWyN0bXBdLmFkZHJlc3M9di5hZGRyZXNzK29mZnNldCB0bXBbI3RtcF0uZmxhZ3M9di5mbGFncyBlbmQgdG1wPWdnLmdldFZhbHVlcyh0bXApIGZvciBpLHYgaW4gaXBhaXJzKHRtcClkbyBpZih0b3N0cmluZyh2LnZhbHVlKX49dG9zdHJpbmcobnVtKSl0aGVuIHJlc3VsdFtpXS5pc1VzZWZ1bD1mYWxzZSBlbmQgZW5kIGVuZCBmb3IgaSx2IGluIGlwYWlycyhyZXN1bHQpZG8gaWYodi5pc1VzZWZ1bCl0aGVuIGRhdGFbI2RhdGErMV09di5hZGRyZXNzIGVuZCBlbmQgaWYoI2RhdGE+MCl0aGVuIGdnLnRvYXN0KCJcbiIuLiNkYXRhLi4iXG4g6Zuo5YyW55SwIikgbG9jYWwgdD17fSBsb2NhbCBiYXNlPVNlYXJjaFsxXVsyXSBmb3IgaT0xLCNkYXRhIGRvIGZvciBrLHcgaW4gaXBhaXJzKFdyaXRlKWRvIG9mZnNldD13WzJdLWJhc2UgdFsjdCsxXT17fSB0WyN0XS5hZGRyZXNzPWRhdGFbaV0rb2Zmc2V0IHRbI3RdLmZsYWdzPVR5cGUgdFsjdF0udmFsdWU9d1sxXSBpZih3WzNdPT10cnVlKXRoZW4gbG9jYWwgaXRlbT17fSBpdGVtWyNpdGVtKzFdPXRbI3RdIGl0ZW1bI2l0ZW1dLmZyZWV6ZT10cnVlIGdnLmFkZExpc3RJdGVtcyhpdGVtKSBlbmQgZW5kIGVuZCBnZy5zZXRWYWx1ZXModCkgZ2cuc2xlZXAoNDAwKSBnZy50b2FzdCgiXG4iLi5OYW1lLi4i6ZuoXG7ljJYgIi4uI3QuLiLnlLAiKSBlbHNlIGdnLnRvYXN0KCJcbiIuLk5hbWUuLiJmYWlsdXJlIikgcmV0dXJuIGZhbHNlIGVuZCBlbHNlIGdnLnRvYXN0KCJcbiIuLk5hbWUuLiJmYWlsdXJlIikgcmV0dXJuIGZhbHNlIGVuZCBlbmQKZnVuY3Rpb24gcmVhZFdyaXRlKFNlYXJjaCxHZXQsVHlwZSxSYW5nZSxOYW1lKSBnZ1siY2xlYXJSZXN1bHRzIl0oKSBnZ1sic2V0UmFuZ2VzIl0oUmFuZ2UpIGdnWyJzZXRWaXNpYmxlIl0oZmFsc2UpIGlmIFNlYXJjaFsxXVsxXX49ZmFsc2UgdGhlbiBfR1siZ2ciXVsic2VhcmNoQWRkcmVzcyJdKFNlYXJjaFsxXVsxXSwweEZGRkZGRkZGLFNlYXJjaFsxXVs0XSBvciBUeXBlLF9HWyJnZyJdWyJTSUdOX0VRVUFMIl0sU2VhcmNoWzFdWzVdIG9yIDEsU2VhcmNoWzFdWzZdIG9yIC0xKSBlbmQgZ2dbInNlYXJjaE51bWJlciJdKFNlYXJjaFsxXVsyXSxTZWFyY2hbMV1bNF0gb3IgVHlwZSxmYWxzZSxfR1siZ2ciXVsiU0lHTl9FUVVBTCJdLFNlYXJjaFsxXVs1XSBvciAxLFNlYXJjaFsxXVs2XSBvciAtMSkgbG9jYWwgY291bnQ9Z2dbImdldFJlc3VsdENvdW50Il0oKSBsb2NhbCByZXN1bHQ9Z2dbImdldFJlc3VsdHMiXShjb3VudCkgZ2dbImNsZWFyUmVzdWx0cyJdKCkgbG9jYWwgZGF0YT17fSBsb2NhbCBiYXNlPVNlYXJjaFsxXVszXSBpZiAoY291bnQgPiAwKSB0aGVuIGZvciBpLHYgaW4gaXBhaXJzKHJlc3VsdCkgZG8gdi5pc1VzZWZ1bD10cnVlIGVuZCBmb3Igaz0yLCNTZWFyY2ggZG8gbG9jYWwgdG1wPXt9IGxvY2FsIG9mZnNldD1TZWFyY2hba11bMl0gLSBiYXNlIGxvY2FsIG51bT1TZWFyY2hba11bMV0gZm9yIGksdiBpbiBpcGFpcnMocmVzdWx0KSBkbyB0bXBbI3RtcCsxXT17fSB0bXBbI3RtcF0uYWRkcmVzcz12LmFkZHJlc3Mrb2Zmc2V0IHRtcFsjdG1wXS5mbGFncz1TZWFyY2hba11bM10gb3IgVHlwZSBlbmQgdG1wPWdnWyJnZXRWYWx1ZXMiXSh0bXApIGZvciBpLHYgaW4gaXBhaXJzKHRtcCkgZG8gaWYgdi5mbGFncz09MTYgb3Igdi5mbGFncz09NjQgdGhlbiB2YWx1ZXM9dG9zdHJpbmcodi52YWx1ZSk6c3ViKDEsNikgbnVtPXRvc3RyaW5nKG51bSk6c3ViKDEsNikgZWxzZSB2YWx1ZXM9di52YWx1ZSBlbmQgaWYgdG9zdHJpbmcodmFsdWVzKX49dG9zdHJpbmcobnVtKSB0aGVuIHJlc3VsdFtpXS5pc1VzZWZ1bD1mYWxzZSBlbmQgZW5kIGVuZCBmb3IgaSx2IGluIGlwYWlycyhyZXN1bHQpIGRvIGlmICh2LmlzVXNlZnVsKSB0aGVuIGRhdGFbI2RhdGErMV09di5hZGRyZXNzIGVuZCBlbmQgaWYgKCNkYXRhID4gMCkgdGhlbiBsb2NhbCB0LHRfPXt9LHt9IGxvY2FsIGJhc2U9U2VhcmNoWzFdWzNdIGZvciBpPTEsI2RhdGEgZG8gZm9yIGssdyBpbiBpcGFpcnMoR2V0KSBkbyBvZmZzZXQ9d1syXSAtIGJhc2UgaWYgd1sxXT09ZmFsc2UgdGhlbiB0X1sjdF8rMV09e30gdF9bI3RfXS5hZGRyZXNzPWRhdGFbaV0rb2Zmc2V0IHRfWyN0X10uZmxhZ3M9VHlwZSB0aF89KHRoXykgYW5kIHRoXysxIG9yIDEgZWxzZSB0WyN0KzFdPXt9IHRbI3RdLmFkZHJlc3M9ZGF0YVtpXStvZmZzZXQgdFsjdF0uZmxhZ3M9d1szXSBvciBUeXBlIHRbI3RdLnZhbHVlPXdbMV0gdGdfPSh0Z18pIGFuZCB0Z18rMSBvciAxIGlmICh3WzRdPT10cnVlKSB0aGVuIGxvY2FsIGl0ZW09e30gaXRlbVsjaXRlbSsxXT10WyN0XSBpdGVtWyNpdGVtXS5mcmVlemU9d1s0XSBnZ1siYWRkTGlzdEl0ZW1zIl0oaXRlbSkgZW5kIGVuZCBlbmQgZW5kIHRnPSh0Z18pIGFuZCAiXG4gbW9kaWZ5Ii4udGdfLi4iZGF0YSIgb3IgIiIgdGg9KHRoXykgYW5kICIiIG9yICIiIGdnWyJzZXRWYWx1ZXMiXSh0KSB0Xz1nZ1siZ2V0VmFsdWVzIl0odF8pIGdnWyJsb2FkUmVzdWx0cyJdKHRfKSBnZ1sidG9hc3QiXSgiXG4iLi5OYW1lLi50ZykgdGdfLHRoXz1uaWwsbmlsIGVsc2UgZ2dbInRvYXN0Il0oIk5vdCBzZWFyY2hhYmxlIixmYWxzZSkgcmV0dXJuIGZhbHNlIGVuZCBlbHNlIGdnWyJ0b2FzdCJdKCJOb3Qgc2VhcmNoYWJsZSIpIHJldHVybiBmYWxzZSBlbmQgZW5kCmZ1bmN0aW9uIHNwbGl0KHN6RnVsbFN0cmluZywgc3pTZXBhcmF0b3IpIGxvY2FsIG5GaW5kU3RhcnRJbmRleCA9IDEgbG9jYWwgblNwbGl0SW5kZXggPSAxIGxvY2FsIG5TcGxpdEFycmF5ID0ge30gd2hpbGUgdHJ1ZSBkbyBsb2NhbCBuRmluZExhc3RJbmRleCA9IHN0cmluZy5maW5kIChzekZ1bGxTdHJpbmcsIHN6U2VwYXJhdG9yLCBuRmluZFN0YXJ0SW5kZXgpIGlmIG5vdCBuRmluZExhc3RJbmRleCB0aGVuIG5TcGxpdEFycmF5W25TcGxpdEluZGV4XSA9IHN0cmluZy5zdWIoc3pGdWxsU3RyaW5nLCBuRmluZFN0YXJ0SW5kZXgsIHN0cmluZy5sZW4gKHN6RnVsbFN0cmluZykpIGJyZWFrIGVuZCBuU3BsaXRBcnJheVtuU3BsaXRJbmRleF0gPSBzdHJpbmcuc3ViIChzekZ1bGxTdHJpbmcsIG5GaW5kU3RhcnRJbmRleCwgbkZpbmRMYXN0SW5kZXggLSAxKSBuRmluZFN0YXJ0SW5kZXggPSBuRmluZExhc3RJbmRleCArIHN0cmluZy5sZW4gKHN6U2VwYXJhdG9yKSBuU3BsaXRJbmRleCA9IG5TcGxpdEluZGV4ICsgMSBlbmQgcmV0dXJuIG5TcGxpdEFycmF5IGVuZCBmdW5jdGlvbiB4Z3hjKHN6cHksIHFteGcpIGZvciB4ID0gMSwgIyhxbXhnKSBkbyB4Z3B5ID0gc3pweSArIHFteGdbeF1bIm9mZnNldCJdIHhnbHggPSBxbXhnW3hdWyJ0eXBlIl0geGdzeiA9IHFteGdbeF1bInZhbHVlIl0geGdkaiA9IHFteGdbeF1bImZyZWV6ZSJdIGlmIHhnZGogPT0gbmlsIG9yIHhnZGogPT0gIiIgdGhlbiBnZy5zZXRWYWx1ZXMoe1sxXSA9IHthZGRyZXNzID0geGdweSwgZmxhZ3MgPSB4Z2x4LCB2YWx1ZSA9IHhnc3p9fSkgZWxzZSBnZy5hZGRMaXN0SXRlbXMoe1sxXSA9IHthZGRyZXNzID0geGdweSwgZmxhZ3MgPSB4Z2x4LCBmcmVlemUgPSB4Z2RqLCB2YWx1ZSA9IHhnc3p9fSkgZW5kIHhnc2wgPSB4Z3NsICsgMSB4Z2pnID0gdHJ1ZSBlbmQgZW5kIGZ1bmN0aW9uIHhxbW5iKHFtbmIpIGdnLmNsZWFyUmVzdWx0cygpIGdnLnNldFJhbmdlcyhxbW5iWzFdWyJtZW1vcnkiXSkgZ2cuc2VhcmNoTnVtYmVyKHFtbmJbM11bInZhbHVlIl0sIHFtbmJbM11bInR5cGUiXSkgaWYgZ2cuZ2V0UmVzdWx0Q291bnQoKSA9PSAwIHRoZW4gZ2cudG9hc3QocW1uYlsyXVsibmFtZSJdIC4uICJGYWlsZWQgdG8gb3BlbiIpIGVsc2UgZ2cucmVmaW5lTnVtYmVyKHFtbmJbM11bInZhbHVlIl0sIHFtbmJbM11bInR5cGUiXSkgZ2cucmVmaW5lTnVtYmVyKHFtbmJbM11bInZhbHVlIl0sIHFtbmJbM11bInR5cGUiXSkgZ2cucmVmaW5lTnVtYmVyKHFtbmJbM11bInZhbHVlIl0sIHFtbmJbM11bInR5cGUiXSkgaWYgZ2cuZ2V0UmVzdWx0Q291bnQoKSA9PSAwIHRoZW4gZ2cudG9hc3QocW1uYlsyXVsibmFtZSJdIC4uICJGYWlsZWQgdG8gb3BlbiIpIGVsc2Ugc2wgPSBnZy5nZXRSZXN1bHRzKDk5OTk5OSkgc3ogPSBnZy5nZXRSZXN1bHRDb3VudCgpIHhnc2wgPSAwIGlmIHN6ID4gOTk5OTk5IHRoZW4gc3ogPSA5OTk5OTkgZW5kIGZvciBpID0gMSwgc3ogZG8gcGRzeiA9IHRydWUgZm9yIHYgPSA0LCAjKHFtbmIpIGRvIGlmIHBkc3ogPT0gdHJ1ZSB0aGVuIHB5c3ogPSB7fSBweXN6WzFdID0ge30gcHlzelsxXS5hZGRyZXNzID0gc2xbaV0uYWRkcmVzcyArIHFtbmJbdl1bIm9mZnNldCJdIHB5c3pbMV0uZmxhZ3MgPSBxbW5iW3ZdWyJ0eXBlIl0gc3pweSA9IGdnLmdldFZhbHVlcyhweXN6KSBwZHBkID0gcW1uYlt2XVsibHYiXSAuLiAiOyIgLi4gc3pweVsxXS52YWx1ZSBzenBkID0gc3BsaXQocGRwZCwgIjsiKSB0enN6cGQgPSBzenBkWzFdIHB5c3pwZCA9IHN6cGRbMl0gaWYgdHpzenBkID09IHB5c3pwZCB0aGVuIHBkamcgPSB0cnVlIHBkc3ogPSB0cnVlIGVsc2UgcGRqZyA9IGZhbHNlIHBkc3ogPSBmYWxzZSBlbmQgZW5kIGVuZCBpZiBwZGpnID09IHRydWUgdGhlbiBzenB5ID0gc2xbaV0uYWRkcmVzcyB4Z3hjKHN6cHksIHFteGcpIGVuZCBlbmQgaWYgeGdqZyA9PSB0cnVlIHRoZW4gZ2cudG9hc3QocW1uYlsyXVsibmFtZSJdIC4uICJTdWNjZXNzZnVsbHkgb3BlbmVk77yMQWx0b2dldGhlciBtb2RpZnkiIC4uIHhnc2wgLi4gIkFydGljbGUgZGF0YSIpIGVsc2UgZ2cudG9hc3QocW1uYlsyXVsibmFtZSJdIC4uICJObyBkYXRhIGZvdW5k77yMRmFpbGVkIHRvIG9wZW4iKSBlbmQgZW5kIGVuZCBlbmQgZnVuY3Rpb24gU2VhcmNoV3JpdGUoU2VhcmNoLCBXcml0ZSwgVHlwZSkgZ2cuY2xlYXJSZXN1bHRzKCkgZ2cuc2V0VmlzaWJsZShmYWxzZSkgZ2cuc2VhcmNoTnVtYmVyKFNlYXJjaFsxXVsxXSwgVHlwZSkgbG9jYWwgY291bnQgPSBnZy5nZXRSZXN1bHRDb3VudCgpIGxvY2FsIHJlc3VsdCA9IGdnLmdldFJlc3VsdHMoY291bnQpIGdnLmNsZWFyUmVzdWx0cygpIGxvY2FsIGRhdGEgPSB7fSBsb2NhbCBiYXNlID0gU2VhcmNoWzFdWzJdIGlmIChjb3VudCA+IDApIHRoZW4gZm9yIGksIHYgaW4gaXBhaXJzKHJlc3VsdCkgZG8gdi5pc1VzZWZ1bCA9IHRydWUgZW5kIGZvciBrPTIsICNTZWFyY2ggZG8gbG9jYWwgdG1wID0ge30gbG9jYWwgb2Zmc2V0ID0gU2VhcmNoW2tdWzJdIC0gYmFzZSBsb2NhbCBudW0gPSBTZWFyY2hba11bMV0gZm9yIGksIHYgaW4gaXBhaXJzKHJlc3VsdCkgZG8gdG1wWyN0bXArMV0gPSB7fSB0bXBbI3RtcF0uYWRkcmVzcyA9IHYuYWRkcmVzcyArIG9mZnNldCB0bXBbI3RtcF0uZmxhZ3MgPSB2LmZsYWdzIGVuZCB0bXAgPSBnZy5nZXRWYWx1ZXModG1wKSBmb3IgaSwgdiBpbiBpcGFpcnModG1wKSBkbyBpZiAoIHRvc3RyaW5nKHYudmFsdWUpIH49IHRvc3RyaW5nKG51bSkgKSB0aGVuIHJlc3VsdFtpXS5pc1VzZWZ1bCA9IGZhbHNlIGVuZCBlbmQgZW5kIGZvciBpLCB2IGluIGlwYWlycyhyZXN1bHQpIGRvIGlmICh2LmlzVXNlZnVsKSB0aGVuIGRhdGFbI2RhdGErMV0gPSB2LmFkZHJlc3MgZW5kIGVuZCBpZiAoI2RhdGEgPiAwKSB0aGVuIGxvY2FsIHQgPSB7fSBsb2NhbCBiYXNlID0gU2VhcmNoWzFdWzJdIGZvciBpPTEsICNkYXRhIGRvIGZvciBrLCB3IGluIGlwYWlycyhXcml0ZSkgZG8gb2Zmc2V0ID0gd1syXSAtIGJhc2UgdFsjdCsxXSA9IHt9IHRbI3RdLmFkZHJlc3MgPSBkYXRhW2ldICsgb2Zmc2V0IHRbI3RdLmZsYWdzID0gVHlwZSB0WyN0XS52YWx1ZSA9IHdbMV0gaWYgKHdbM10gPT0gdHJ1ZSkgdGhlbiBsb2NhbCBpdGVtID0ge30gaXRlbVsjaXRlbSsxXSA9IHRbI3RdIGl0ZW1bI2l0ZW1dLmZyZWV6ZSA9IHRydWUgZ2cuYWRkTGlzdEl0ZW1zKGl0ZW0pIGVuZCBlbmQgZW5kIGdnLnNldFZhbHVlcyh0KSBnZy50b2FzdCgiU3VjY2Vzc2Z1bGx5IG9wZW5lZO+8jEFsdG9nZXRoZXIgbW9kaWZ5Ii4uI3QuLiJBcnRpY2xlIGRhdGEiKSBnZy5hZGRMaXN0SXRlbXModCkgZWxzZSBnZy50b2FzdCgiTm8gZGF0YSBmb3VuZO+8jEZhaWxlZCB0byBvcGVuIiwgZmFsc2UpIHJldHVybiBmYWxzZSBlbmQgZWxzZSBnZy50b2FzdCgiTm90IEZvdW5kIikgcmV0dXJuIGZhbHNlIGVuZCBlbmQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpnZy5zZXRWaXNpYmxlKHRydWUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmZ1bmN0aW9uIFNlYXJjaFdyaXRlKFNlYXJjaCwgV3JpdGUsIFR5cGUpCiAgICBnZy5jbGVhclJlc3VsdHMoKQogICAgZ2cuc2V0VmlzaWJsZShmYWxzZSkKICAgIGdnLnNlYXJjaE51bWJlcihTZWFyY2hbMV1bMV0sIFR5cGUpCiAgICBsb2NhbCBjb3VudCA9IGdnLmdldFJlc3VsdENvdW50KCkKICAgIGxvY2FsIHJlc3VsdCA9IGdnLmdldFJlc3VsdHMoY291bnQpCiAgICBnZy5jbGVhclJlc3VsdHMoKQogICAgbG9jYWwgZGF0YSA9IHt9IAogICAgbG9jYWwgYmFzZSA9IFNlYXJjaFsxXVsyXSAKICAgIAogICBpZiAoY291bnQgPiAwKSB0aGVuCiAgICAgICAgZm9yIGksIHYgaW4gaXBhaXJzKHJlc3VsdCkgZG8KICAgICAgICAgICAgdi5pc1VzZWZ1bCA9IHRydWUgCiAgICAgICAgZW5kCiAgICAgICAgCiAgICAgICAgZm9yIGs9MiwgI1NlYXJjaCBkbwogICAgICAgICAgICBsb2NhbCB0bXAgPSB7fQogICAgICAgICAgICBsb2NhbCBvZmZzZXQgPSBTZWFyY2hba11bMl0gLSBiYXNlIAogICAgICAgICAgICBsb2NhbCBudW0gPSBTZWFyY2hba11bMV0gCiAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgaSwgdiBpbiBpcGFpcnMocmVzdWx0KSBkbwogICAgICAgICAgICAgICAgdG1wWyN0bXArMV0gPSB7fSAKICAgICAgICAgICAgICAgIHRtcFsjdG1wXS5hZGRyZXNzID0gdi5hZGRyZXNzICsgb2Zmc2V0ICAKICAgICAgICAgICAgICAgIHRtcFsjdG1wXS5mbGFncyA9IHYuZmxhZ3MgIAogICAgICAgICAgICBlbmQKICAgICAgICAgICAgCiAgICAgICAgICAgIHRtcCA9IGdnLmdldFZhbHVlcyh0bXApIAogICAgICAgICAgICAKICAgICAgICAgICAgZm9yIGksIHYgaW4gaXBhaXJzKHRtcCkgZG8KICAgICAgICAgICAgICAgIGlmICggdG9zdHJpbmcodi52YWx1ZSkgfj0gdG9zdHJpbmcobnVtKSApIHRoZW4gCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldLmlzVXNlZnVsID0gZmFsc2UgCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgCiAgICAgICAgZm9yIGksIHYgaW4gaXBhaXJzKHJlc3VsdCkgZG8KICAgICAgICAgICAgaWYgKHYuaXNVc2VmdWwpIHRoZW4gCiAgICAgICAgICAgICAgICBkYXRhWyNkYXRhKzFdID0gdi5hZGRyZXNzCiAgICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgIAogICAgICAgIGlmICgjZGF0YSA+IDApIHRoZW4KICAgICAgICAgICBnZy50b2FzdCgi5pCc57Si5YiwIi4uI2RhdGEuLiLmnaHmlbDmja4iKQogICAgICAgICAgIGxvY2FsIHQgPSB7fQogICAgICAgICAgIGxvY2FsIGJhc2UgPSBTZWFyY2hbMV1bMl0KICAgICAgICAgICBmb3IgaT0xLCAjZGF0YSBkbwogICAgICAgICAgICAgICBmb3IgaywgdyBpbiBpcGFpcnMoV3JpdGUpIGRvCiAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSB3WzJdIC0gYmFzZQogICAgICAgICAgICAgICAgICAgdFsjdCsxXSA9IHt9CiAgICAgICAgICAgICAgICAgICB0WyN0XS5hZGRyZXNzID0gZGF0YVtpXSArIG9mZnNldAogICAgICAgICAgICAgICAgICAgdFsjdF0uZmxhZ3MgPSBUeXBlCiAgICAgICAgICAgICAgICAgICB0WyN0XS52YWx1ZSA9IHdbMV0KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICBpZiAod1szXSA9PSB0cnVlKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgaXRlbSA9IHt9CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbVsjaXRlbSsxXSA9IHRbI3RdCiAgICAgICAgICAgICAgICAgICAgICAgaXRlbVsjaXRlbV0uZnJlZXplID0gdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgIGdnLmFkZExpc3RJdGVtcyhpdGVtKQogICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgIGVuZAogICAgICAgICAgIGdnLnNldFZhbHVlcyh0KQogICAgICAgCiAgICAgICAgZWxzZQogICAgICAgICAgICBnZy50b2FzdCgi5pCc57Si5aSx6LSlIiwgZmFsc2UpCiAgICAgICAgICAgIHJldHVybiBmYWxzZQogICAgICAgIGVuZAogICAgZWxzZQogICAgICAgIGdnLnRvYXN0KCLmkJzntKLlpLHotKUiKQogICAgICAgIHJldHVybiBmYWxzZQogICAgZW5kCmVuZAoKCnN0YXRlPXt9IHN0YXRlLmE9IlvlvIDlkK9dIiBzdGF0ZS5iPSJb5byA5ZCvXSIgc3RhdGUuYz0iW+W8gOWQr10iIHN0YXRlLmQ9IlvlvIDlkK9dIiBzdGF0ZS5lPSJb5byA5ZCvXSIgCmxvY2FsIGFwcCA9IHt9IGZ1bmN0aW9uIEFzc2VydChkYXRhKSBpZiBkYXRhID09IG5pbCBvciBkYXRhID09ICIiIG9yIGRhdGEgPT0gIm5pbCIgdGhlbiByZXR1cm4gZmFsc2UgZWxzZSByZXR1cm4gdHJ1ZSBlbmQgZW5kIGZ1bmN0aW9uIG1lYXJyYXNzKG1lbW9yeSwgYXJyYXkpIGlmIEFzc2VydChtZW1vcnkpIGFuZCBBc3NlcnQoYXJyYXkpIHRoZW4gcmV0dXJuIHRydWUgZWxzZSByZXR1cm4gZmFsc2UgZW5kIGVuZCBmdW5jdGlvbiB0eXBldGFiKGFycmF5LCB0eXBlKSBsb2NhbCBkYXRhdHlwZSA9IHt9IGZvciBpID0gMSwgI2FycmF5IGRvIGlmIEFzc2VydChhcnJheVtpXS50eXBlKSB0aGVuIHRhYmxlLmluc2VydChkYXRhdHlwZSwgaSwgYXJyYXlbaV0udHlwZSkgZWxzZSBpZiBBc3NlcnQodHlwZSkgdGhlbiB0YWJsZS5pbnNlcnQoZGF0YXR5cGUsIGksIHR5cGUpIGVsc2UgcmV0dXJuIGZhbHNlIGVuZCBlbmQgZW5kIHJldHVybiB0cnVlLCBkYXRhdHlwZSBlbmQgZnVuY3Rpb24gYXBwLm1lbW9yeXNlYXJjaChtZW1vcnksIGFycmF5LCB0eXBlKSBnZy5zZXRWaXNpYmxlKGZhbHNlKSBsb2NhbCByeCA9IG1lYXJyYXNzKG1lbW9yeSwgYXJyYXkpIGlmIHJ4IHRoZW4gbG9jYWwgcngsIGRhdGF0eXBlID0gdHlwZXRhYihhcnJheSwgdHlwZSkgaWYgcnggdGhlbiBpZiBBc3NlcnQoYXJyYXlbMV0uaHYpIHRoZW4gZ2cuY2xlYXJSZXN1bHRzKCkgZ2cuc2V0UmFuZ2VzKG1lbW9yeSkgZ2cuc2VhcmNoTnVtYmVyKGFycmF5WzFdLmx2IC4uICJ+IiAuLiBhcnJheVsxXS5odiwgZGF0YXR5cGVbMV0pIGVsc2UgZ2cuY2xlYXJSZXN1bHRzKCkgZ2cuc2V0UmFuZ2VzKG1lbW9yeSkgZ2cuc2VhcmNoTnVtYmVyKGFycmF5WzFdLmx2LCBkYXRhdHlwZVsxXSkgZW5kIGlmIGdnLmdldFJlc3VsdENvdW50KCkgPT0gMCB0aGVuIHJldHVybiBmYWxzZSBlbHNlIGxvY2FsIHRhYiA9IHt9IGxvY2FsIGRhdGEgPSBnZy5nZXRSZXN1bHRzKGdnLmdldFJlc3VsdENvdW50KCkpIGdnLmNsZWFyUmVzdWx0cygpIGZvciBpID0gMSwgI2RhdGEgZG8gZGF0YVtpXS5yeCA9IHRydWUgZW5kIGZvciBpID0gMiwgI2FycmF5IGRvIGxvY2FsIHQgPSB7fSBsb2NhbCBvZmZzZXQgPSBhcnJheVtpXS5vZmZzZXQgZm9yIHggPSAxLCAjZGF0YSBkbyB0WyN0ICsgMV0gPSB7fSB0WyN0XS5hZGRyZXNzID0gZGF0YVt4XS5hZGRyZXNzICsgb2Zmc2V0IHRbI3RdLmZsYWdzID0gZGF0YXR5cGVbaV0gZW5kIGxvY2FsIHQgPSBnZy5nZXRWYWx1ZXModCkgZm9yIHogPSAxLCAjdCBkbyBpZiBBc3NlcnQoYXJyYXlbaV0uaHYpIHRoZW4gaWYgdG9udW1iZXIodFt6XS52YWx1ZSkgPCB0b251bWJlcihhcnJheVtpXS5sdikgb3IgdG9udW1iZXIodFt6XS52YWx1ZSkgPiB0b251bWJlcihhcnJheVtpXS5odikgdGhlbiBkYXRhW3pdLnJ4ID0gZmFsc2UgZW5kIGVsc2UgaWYgdG9zdHJpbmcodFt6XS52YWx1ZSkgfj0gdG9zdHJpbmcoYXJyYXlbaV0ubHYpIHRoZW4gZGF0YVt6XS5yeCA9IGZhbHNlIGVuZCBlbmQgZW5kIGVuZCBmb3IgaSA9IDEsICNkYXRhIGRvIGlmIGRhdGFbaV0ucnggdGhlbiB0YWJbI3RhYiArIDFdID0gZGF0YVtpXS5hZGRyZXNzIGVuZCBlbmQgaWYgI3RhYiA+IDAgdGhlbiByZXR1cm4gdHJ1ZSwgdGFiIGVsc2UgcmV0dXJuIGZhbHNlIGVuZCBlbmQgZWxzZSBwcmludCgidHlwZeWPguaVsOmUmeivryIpIGdnLnRvYXN0KCJ0eXBl5Y+C5pWw6ZSZ6K+vIikgb3MuZXhpdCgpIGVuZCBlbHNlIHByaW50KCJtZW1vcnkgb3IgYXJyYXnlj4LmlbDplJnor68iKSBnZy50b2FzdCgibWVtb3J5IG9yIGFycmF55Y+C5pWw6ZSZ6K+vIikgb3MuZXhpdCgpIGVuZCBlbmQgZnVuY3Rpb24gYXBwLm1lbW9yeXJlYWQoYWRkciwgdHlwZSkgbG9jYWwgdCA9IHt9IHRbMV0gPSB7fSB0WzFdLmFkZHJlc3MgPSBhZGRyIHRbMV0uZmxhZ3MgPSB0eXBlIGlmICN0ID4gMCB0aGVuIHJldHVybiB0cnVlLCBnZy5nZXRWYWx1ZXModClbMV0udmFsdWUgZWxzZSByZXR1cm4gZmFsc2UgZW5kIGVuZCBmdW5jdGlvbiBhcHAubWVtb3J5d3JpdGUoYWRkciwgdHlwZSwgdmFsdWUsIGZyZWV6ZSkgbG9jYWwgdCA9IHt9IHRbMV0gPSB7fSB0WzFdLmFkZHJlc3MgPSBhZGRyIHRbMV0uZmxhZ3MgPSB0eXBlIHRbMV0udmFsdWUgPSB2YWx1ZSBpZiAjdCA+IDAgdGhlbiBpZiBBc3NlcnQoZnJlZXplKSB0aGVuIHRbMV0uZnJlZXplID0gZnJlZXplIGdnLnNldFZhbHVlcyh0KSByZXR1cm4gZ2cuYWRkTGlzdEl0ZW1zKHQpIGVsc2UgcmV0dXJuIGdnLnNldFZhbHVlcyh0KSBlbmQgZWxzZSByZXR1cm4gZmFsc2UgZW5kIGVuZCBmdW5jdGlvbiBTZWFyY2hXcml0ZShTZWFyY2gsV3JpdGUsVHlwZSkgZ2cuY2xlYXJSZXN1bHRzKCkgZ2cuc2V0VmlzaWJsZShmYWxzZSkgZ2cuc2VhcmNoTnVtYmVyKFNlYXJjaFsxXVsxXSxUeXBlKSBsb2NhbCBjb3VudD1nZy5nZXRSZXN1bHRDb3VudCgpIGxvY2FsIHJlc3VsdD1nZy5nZXRSZXN1bHRzKGNvdW50KSBnZy5jbGVhclJlc3VsdHMoKSBsb2NhbCBkYXRhPXt9IGxvY2FsIGJhc2U9U2VhcmNoWzFdWzJdIGlmKGNvdW50PjApdGhlbiBmb3IgaSx2IGluIGlwYWlycyhyZXN1bHQpZG8gdi5pc1VzZWZ1bD10cnVlIGVuZCBmb3Igaz0yLCNTZWFyY2ggZG8gbG9jYWwgdG1wPXt9IGxvY2FsIG9mZnNldD1TZWFyY2hba11bMl0tYmFzZSBsb2NhbCBudW09U2VhcmNoW2tdWzFdIGZvciBpLHYgaW4gaXBhaXJzKHJlc3VsdClkbyB0bXBbI3RtcCsxXT17fSB0bXBbI3RtcF0uYWRkcmVzcz12LmFkZHJlc3Mrb2Zmc2V0IHRtcFsjdG1wXS5mbGFncz12LmZsYWdzIGVuZCB0bXA9Z2cuZ2V0VmFsdWVzKHRtcCkgZm9yIGksdiBpbiBpcGFpcnModG1wKWRvIGlmKHRvc3RyaW5nKHYudmFsdWUpfj10b3N0cmluZyhudW0pKXRoZW4gcmVzdWx0W2ldLmlzVXNlZnVsPWZhbHNlIGVuZCBlbmQgZW5kIGZvciBpLHYgaW4gaXBhaXJzKHJlc3VsdClkbyBpZih2LmlzVXNlZnVsKXRoZW4gZGF0YVsjZGF0YSsxXT12LmFkZHJlc3MgZW5kIGVuZCBpZigjZGF0YT4wKXRoZW4gZ2cudG9hc3QoTmFtZS4uIuWFseaQnOe0ouWIsCIuLiNkYXRhLi4i5Liq5pWw5o2uIikgbG9jYWwgdD17fSBsb2NhbCBiYXNlPVNlYXJjaFsxXVsyXSBmb3IgaT0xLCNkYXRhIGRvIGZvciBrLHcgaW4gaXBhaXJzKFdyaXRlKWRvIG9mZnNldD13WzJdLWJhc2UgdFsjdCsxXT17fSB0WyN0XS5hZGRyZXNzPWRhdGFbaV0rb2Zmc2V0IHRbI3RdLmZsYWdzPVR5cGUgdFsjdF0udmFsdWU9d1sxXSBpZih3WzNdPT10cnVlKXRoZW4gbG9jYWwgaXRlbT17fSBpdGVtWyNpdGVtKzFdPXRbI3RdIGl0ZW1bI2l0ZW1dLmZyZWV6ZT10cnVlIGdnLmFkZExpc3RJdGVtcyhpdGVtKSBlbmQgZW5kIGVuZCBnZy5zZXRWYWx1ZXModCkgZ2cuc2xlZXAoNTAwKSBnZy50b2FzdChOYW1lLi4i5byA5ZCv5oiQ5YqfLOWFseS/ruaUuSIuLiN0Li4i5p2h5pWw5o2uIikgZWxzZSBnZy50b2FzdChOYW1lLi4i5Ymv54m55b6B56CB6ZSZ6K+vb3LohLjkuJFcbuaIluiAheaYr+W3sue7j+W8gOWQr+i/h+S6hiIpIHJldHVybiBmYWxzZSBlbmQgZWxzZSBnZy50b2FzdChOYW1lLi4i5Li754m55b6B56CB6ZSZ6K+vb3LohLjkuJFcbuaIluiAheaYr+W3sue7j+W8gOWQr+i/h+S6hiIpIHJldHVybiBmYWxzZSBlbmQgZW5kIGZ1bmN0aW9uIFNlYXJjaFdyaXRlKFNlYXJjaCwgV3JpdGUsIFR5cGUpIGdnLmNsZWFyUmVzdWx0cygpIGdnLnNldFZpc2libGUoZmFsc2UpIGdnLnNlYXJjaE51bWJlcihTZWFyY2hbMV1bMV0sIFR5cGUpIGxvY2FsIGNvdW50ID0gZ2cuZ2V0UmVzdWx0Q291bnQoKSBsb2NhbCByZXN1bHQgPSBnZy5nZXRSZXN1bHRzKGNvdW50KSBnZy5jbGVhclJlc3VsdHMoKSBsb2NhbCBkYXRhID0ge30gbG9jYWwgYmFzZSA9IFNlYXJjaFsxXVsyXSBpZiAoY291bnQgPiAwKSB0aGVuIGZvciBpLCB2IGluIGlwYWlycyhyZXN1bHQpIGRvIHYuaXNVc2VmdWwgPSB0cnVlIGVuZCBmb3Igaz0yLCAjU2VhcmNoIGRvIGxvY2FsIHRtcCA9IHt9IGxvY2FsIG9mZnNldCA9IFNlYXJjaFtrXVsyXSAtIGJhc2UgbG9jYWwgbnVtID0gU2VhcmNoW2tdWzFdIGZvciBpLCB2IGluIGlwYWlycyhyZXN1bHQpIGRvIHRtcFsjdG1wKzFdID0ge30gdG1wWyN0bXBdLmFkZHJlc3MgPSB2LmFkZHJlc3MgKyBvZmZzZXQgdG1wWyN0bXBdLmZsYWdzID0gdi5mbGFncyBlbmQgdG1wID0gZ2cuZ2V0VmFsdWVzKHRtcCkgZm9yIGksIHYgaW4gaXBhaXJzKHRtcCkgZG8gaWYgKCB0b3N0cmluZyh2LnZhbHVlKSB+PSB0b3N0cmluZyhudW0pICkgdGhlbiByZXN1bHRbaV0uaXNVc2VmdWwgPSBmYWxzZSBlbmQgZW5kIGVuZCBmb3IgaSwgdiBpbiBpcGFpcnMocmVzdWx0KSBkbyBpZiAodi5pc1VzZWZ1bCkgdGhlbiBkYXRhWyNkYXRhKzFdID0gdi5hZGRyZXNzIGVuZCBlbmQgaWYgKCNkYXRhID4gMCkgdGhlbiBnZy50b2FzdCgi5pCc57SizrciLi4jZGF0YS4uIuadoeS7o+eggSIpIGxvY2FsIHQgPSB7fSBsb2NhbCBiYXNlID0gU2VhcmNoWzFdWzJdIGZvciBpPTEsICNkYXRhIGRvIGZvciBrLCB3IGluIGlwYWlycyhXcml0ZSkgZG8gb2Zmc2V0ID0gd1syXSAtIGJhc2UgdFsjdCsxXSA9IHt9IHRbI3RdLmFkZHJlc3MgPSBkYXRhW2ldICsgb2Zmc2V0IHRbI3RdLmZsYWdzID0gVHlwZSB0WyN0XS52YWx1ZSA9IHdbMV0gaWYgKHdbM10gPT0gdHJ1ZSkgdGhlbiBsb2NhbCBpdGVtID0ge30gaXRlbVsjaXRlbSsxXSA9IHRbI3RdIGl0ZW1bI2l0ZW1dLmZyZWV6ZSA9IHRydWUgZ2cuYWRkTGlzdEl0ZW1zKGl0ZW0pIGVuZCBlbmQgZW5kIGdnLnNldFZhbHVlcyh0KSBlbHNlIGdnLnRvYXN0KCJOb3QgRm91bmQiLCBmYWxzZSkgcmV0dXJuIGZhbHNlIGVuZCBlbHNlIGdnLnRvYXN0KCJOb3QgRm91bmQiKSByZXR1cm4gZmFsc2UgZW5kIGVuZCBmdW5jdGlvbiBzcGxpdChzekZ1bGxTdHJpbmcsIHN6U2VwYXJhdG9yKSBsb2NhbCBuRmluZFN0YXJ0SW5kZXggPSAxIGxvY2FsIG5TcGxpdEluZGV4ID0gMSBsb2NhbCBuU3BsaXRBcnJheSA9IHt9IHdoaWxlIHRydWUgZG8gbG9jYWwgbkZpbmRMYXN0SW5kZXggPSBzdHJpbmcuZmluZChzekZ1bGxTdHJpbmcsIHN6U2VwYXJhdG9yLCBuRmluZFN0YXJ0SW5kZXgpIGlmIG5vdCBuRmluZExhc3RJbmRleCB0aGVuIG5TcGxpdEFycmF5W25TcGxpdEluZGV4XSA9IHN0cmluZy5zdWIoc3pGdWxsU3RyaW5nLCBuRmluZFN0YXJ0SW5kZXgsIHN0cmluZy5sZW4oc3pGdWxsU3RyaW5nKSkgYnJlYWsgZW5kIG5TcGxpdEFycmF5W25TcGxpdEluZGV4XSA9IHN0cmluZy5zdWIoc3pGdWxsU3RyaW5nLCBuRmluZFN0YXJ0SW5kZXgsIG5GaW5kTGFzdEluZGV4IC0gMSkgbkZpbmRTdGFydEluZGV4ID0gbkZpbmRMYXN0SW5kZXggKyBzdHJpbmcubGVuKHN6U2VwYXJhdG9yKSBuU3BsaXRJbmRleCA9IG5TcGxpdEluZGV4ICsgMSBlbmQgcmV0dXJuIG5TcGxpdEFycmF5IGVuZCBmdW5jdGlvbiB4Z3hjKHN6cHksIHFteGcpIGZvciB4ID0gMSwgIyhxbXhnKSBkbyB4Z3B5ID0gc3pweSArIHFteGdbeF1bIm9mZnNldCJdIHhnbHggPSBxbXhnW3hdWyJ0eXBlIl0geGdzeiA9IHFteGdbeF1bInZhbHVlIl0gZ2cuc2V0VmFsdWVzKHtbMV0gPSB7YWRkcmVzcyA9IHhncHksIGZsYWdzID0geGdseCwgdmFsdWUgPSB4Z3N6fX0pIHhnc2wgPSB4Z3NsICsgMSBlbmQgZW5kIGZ1bmN0aW9uIHhxbW5iKHFtbmIpIGdnLmNsZWFyUmVzdWx0cygpIGdnLnNldFJhbmdlcyhxbW5iWzFdWyJtZW1vcnkiXSkgZ2cuc2VhcmNoTnVtYmVyKHFtbmJbM11bInZhbHVlIl0sIHFtbmJbM11bInR5cGUiXSkgaWYgZ2cuZ2V0UmVzdWx0Q291bnQoKSA9PSAwIHRoZW4gZ2cudG9hc3QocW1uYlsyXVsibmFtZSJdIC4uICLlvIDlkK/lpLHotKUiKSBlbHNlIGdnLnJlZmluZU51bWJlcihxbW5iWzNdWyJ2YWx1ZSJdLCBxbW5iWzNdWyJ0eXBlIl0pIGdnLnJlZmluZU51bWJlcihxbW5iWzNdWyJ2YWx1ZSJdLCBxbW5iWzNdWyJ0eXBlIl0pIGdnLnJlZmluZU51bWJlcihxbW5iWzNdWyJ2YWx1ZSJdLCBxbW5iWzNdWyJ0eXBlIl0pIGlmIGdnLmdldFJlc3VsdENvdW50KCkgPT0gMCB0aGVuIGdnLnRvYXN0KHFtbmJbMl1bIm5hbWUiXSAuLiAi5byA5ZCv5aSx6LSlIikgZWxzZSBzbCA9IGdnLmdldFJlc3VsdHMoOTk5OTk5KSBzeiA9IGdnLmdldFJlc3VsdENvdW50KCkgeGdzbCA9IDAgaWYgc3ogPiA5OTk5OTkgdGhlbiBzeiA9IDk5OTk5OSBlbmQgZm9yIGkgPSAxLCBzeiBkbyBwZHN6ID0gdHJ1ZSBmb3IgdiA9IDQsICMocW1uYikgZG8gaWYgcGRzeiA9PSB0cnVlIHRoZW4gcHlzeiA9IHt9IHB5c3pbMV0gPSB7fSBweXN6WzFdLmFkZHJlc3MgPSBzbFtpXS5hZGRyZXNzICsgcW1uYlt2XVsib2Zmc2V0Il0gcHlzelsxXS5mbGFncyA9IHFtbmJbdl1bInR5cGUiXSBzenB5ID0gZ2cuZ2V0VmFsdWVzKHB5c3opIHBkcGQgPSBxbW5iW3ZdWyJsdiJdIC4uICI7IiAuLiBzenB5WzFdLnZhbHVlIHN6cGQgPSBzcGxpdChwZHBkLCAiOyIpIHR6c3pwZCA9IHN6cGRbMV0gcHlzenBkID0gc3pwZFsyXSBpZiB0enN6cGQgPT0gcHlzenBkIHRoZW4gcGRqZyA9IHRydWUgcGRzeiA9IHRydWUgZWxzZSBwZGpnID0gZmFsc2UgcGRzeiA9IGZhbHNlIGVuZCBlbmQgZW5kIGlmIHBkamcgPT0gdHJ1ZSB0aGVuIHN6cHkgPSBzbFtpXS5hZGRyZXNzIHhneGMoc3pweSwgcW14ZykgeGdqZyA9IHRydWUgZW5kIGVuZCBpZiB4Z2pnID09IHRydWUgdGhlbiBnZy50b2FzdChxbW5iWzJdWyJuYW1lIl0gLi4gIuW8gOWQr+aIkOWKnyzlhbHkv67mlLkiIC4uIHhnc2wgLi4gIuadoeaVsOaNriIpIGVsc2UgZ2cudG9hc3QocW1uYlsyXVsibmFtZSJdIC4uICLlvIDlkK/lpLHotKUiKSBlbmQgZW5kIGVuZCBlbmQgZnVuY3Rpb24gZW5jb2Rlcyhjb2RlKSByZXR1cm4gKGNvZGU6Z3N1YigiLi4iLCBmdW5jdGlvbihoKSByZXR1cm4gc3RyaW5nLmNoYXIoKHRvbnVtYmVyKGgsIDE2KSArIDI1NiAtIDEzICsgMjU1OTk5NzQ0KSAlIDI1NikgZW5kICkpIGVuZCBkbyBkbyBmb3IgX0ZPUlZfM18gPSAxLCAyMDAwIGRvIGxvYWQoImxvY2FsIHJlc3VsdHMgPSBnZy5nZXRGaWxlKDUwMDApIikoKSBlbmQgZW5kIGVuZCBnZy5zZXRSYW5nZXMoMTY0MjApIGxvY2FsIHJlc3VsdHMgPSBnZy5nZXRGaWxlKCkgbG9jYWwgcmVzdWx0cyA9IGdnLmdldFJlc3VsdHMoNTAwMCkgZ2cuc2V0VmFsdWVzKHJlc3VsdHMpIGxvY2FsIHJlc3VsdHMgPSBnZy5nZXRGaWxlKCkgZnVuY3Rpb24gU2VhcmNoV3JpdGUoU2VhcmNoLFdyaXRlLFR5cGUpIGdnLmNsZWFyUmVzdWx0cygpIGdnLnNldFZpc2libGUoZmFsc2UpIGdnLnNlYXJjaE51bWJlcihTZWFyY2hbMV1bMV0sVHlwZSkgbG9jYWwgY291bnQ9Z2cuZ2V0UmVzdWx0Q291bnQoKSBsb2NhbCByZXN1bHQ9Z2cuZ2V0UmVzdWx0cyhjb3VudCkgZ2cuY2xlYXJSZXN1bHRzKCkgbG9jYWwgZGF0YT17fSBsb2NhbCBiYXNlPVNlYXJjaFsxXVsyXSBpZihjb3VudD4wKXRoZW4gZm9yIGksdiBpbiBpcGFpcnMocmVzdWx0KWRvIHYuaXNVc2VmdWw9dHJ1ZSBlbmQgZm9yIGs9MiwjU2VhcmNoIGRvIGxvY2FsIHRtcD17fSBsb2NhbCBvZmZzZXQ9U2VhcmNoW2tdWzJdLWJhc2UgbG9jYWwgbnVtPVNlYXJjaFtrXVsxXSBmb3IgaSx2IGluIGlwYWlycyhyZXN1bHQpZG8gdG1wWyN0bXArMV09e30gdG1wWyN0bXBdLmFkZHJlc3M9di5hZGRyZXNzK29mZnNldCB0bXBbI3RtcF0uZmxhZ3M9di5mbGFncyBlbmQgdG1wPWdnLmdldFZhbHVlcyh0bXApIGZvciBpLHYgaW4gaXBhaXJzKHRtcClkbyBpZih0b3N0cmluZyh2LnZhbHVlKX49dG9zdHJpbmcobnVtKSl0aGVuIHJlc3VsdFtpXS5pc1VzZWZ1bD1mYWxzZSBlbmQgZW5kIGVuZCBmb3IgaSx2IGluIGlwYWlycyhyZXN1bHQpZG8gaWYodi5pc1VzZWZ1bCl0aGVuIGRhdGFbI2RhdGErMV09di5hZGRyZXNzIGVuZCBlbmQgaWYoI2RhdGE+MCl0aGVuIGxvY2FsIHQ9e30gbG9jYWwgYmFzZT1TZWFyY2hbMV1bMl0gZm9yIGk9MSwjZGF0YSBkbyBmb3Igayx3IGluIGlwYWlycyhXcml0ZSlkbyBvZmZzZXQ9d1syXS1iYXNlIHRbI3QrMV09e30gdFsjdF0uYWRkcmVzcz1kYXRhW2ldK29mZnNldCB0WyN0XS5mbGFncz1UeXBlIHRbI3RdLnZhbHVlPXdbMV0gaWYod1szXT09dHJ1ZSl0aGVuIGxvY2FsIGl0ZW09e30gaXRlbVsjaXRlbSsxXT10WyN0XSBpdGVtWyNpdGVtXS5mcmVlemU9dHJ1ZSBnZy5hZGRMaXN0SXRlbXMoaXRlbSkgZW5kIGVuZCBlbmQgZ2cuc2V0VmFsdWVzKHQpIGdnLnNsZWVwKDUwMCkgZWxzZSByZXR1cm4gZmFsc2UgZW5kIGVsc2UgcmV0dXJuIGZhbHNlIGVuZCBlbmQgZnVuY3Rpb24gRnhzKFNlYXJjaCwgV3JpdGUsTmVpY3VuLE1pbmdjZyxTaHV6aGlsaWFuZykgZ2cuY2xlYXJSZXN1bHRzKCkgZ2cuc2V0UmFuZ2VzKE5laWN1bikgZ2cuc2V0VmlzaWJsZShmYWxzZSkgZ2cuc2VhcmNoTnVtYmVyKFNlYXJjaFsxXVsxXSwgU2VhcmNoWzFdWzNdKSBsb2NhbCBjb3VudCA9IGdnLmdldFJlc3VsdENvdW50KCkgbG9jYWwgcmVzdWx0ID0gZ2cuZ2V0UmVzdWx0cyhjb3VudCkgZ2cuY2xlYXJSZXN1bHRzKCkgbG9jYWwgZGF0YSA9IHt9IGxvY2FsIGJhc2UgPSBTZWFyY2hbMV1bMl0gaWYgKGNvdW50ID4gMCkgdGhlbiBmb3IgaSwgdiBpbiBpcGFpcnMocmVzdWx0KSBkbyB2LmlzVXNlZnVsID0gdHJ1ZSBlbmQgZm9yIGs9MiwgI1NlYXJjaCBkbyBsb2NhbCB0bXAgPSB7fSBsb2NhbCBvZmZzZXQgPSBTZWFyY2hba11bMl0gLSBiYXNlIGxvY2FsIG51bSA9IFNlYXJjaFtrXVsxXSBmb3IgaSwgdiBpbiBpcGFpcnMocmVzdWx0KSBkbyB0bXBbI3RtcCsxXSA9IHt9IHRtcFsjdG1wXS5hZGRyZXNzID0gdi5hZGRyZXNzICsgb2Zmc2V0IHRtcFsjdG1wXS5mbGFncyA9IFNlYXJjaFtrXVszXSBlbmQgdG1wID0gZ2cuZ2V0VmFsdWVzKHRtcCkgZm9yIGksIHYgaW4gaXBhaXJzKHRtcCkgZG8gaWYgKCB0b3N0cmluZyh2LnZhbHVlKSB+PSB0b3N0cmluZyhudW0pICkgdGhlbiByZXN1bHRbaV0uaXNVc2VmdWwgPSBmYWxzZSBlbmQgZW5kIGVuZCBmb3IgaSwgdiBpbiBpcGFpcnMocmVzdWx0KSBkbyBpZiAodi5pc1VzZWZ1bCkgdGhlbiBkYXRhWyNkYXRhKzFdID0gdi5hZGRyZXNzIGVuZCBlbmQgaWYgKCNkYXRhID4gMCkgdGhlbiBnZy50b2FzdChNaW5nY2cuLiLlvIDlkK/miJDlip8iLi4jZGF0YS4uIiIpIGxvY2FsIHQgPSB7fSBsb2NhbCBiYXNlID0gU2VhcmNoWzFdWzJdIGlmIFNodXpoaWxpYW5nID09ICIiIGFuZCBTaHV6aGlsaWFuZyA+IDAgYW5kIFNodXpoaWxpYW5nIDwgI2RhdGEgdGhlbiBTaHV6aGlsaWFuZz1TaHV6aGlsaWFuZyBlbHNlIFNodXpoaWxpYW5nPSNkYXRhIGVuZCBmb3IgaT0xLCBTaHV6aGlsaWFuZyBkbyBmb3IgaywgdyBpbiBpcGFpcnMoV3JpdGUpIGRvIG9mZnNldCA9IHdbMl0gLSBiYXNlIHRbI3QrMV0gPSB7fSB0WyN0XS5hZGRyZXNzID0gZGF0YVtpXSArIG9mZnNldCB0WyN0XS5mbGFncyA9IHdbM10gdFsjdF0udmFsdWUgPSB3WzFdIGlmICh3WzRdID09IHRydWUpIHRoZW4gbG9jYWwgaXRlbSA9IHt9IGl0ZW1bI2l0ZW0rMV0gPSB0WyN0XSBpdGVtWyNpdGVtXS5mcmVlemUgPSB0cnVlIGdnLmFkZExpc3RJdGVtcyhpdGVtKSBlbmQgZW5kIGVuZCBnZy5zZXRWYWx1ZXModCkgZ2cudG9hc3QoTWluZ2NnLi4i5byA5ZCv5oiQ5YqfIi4uI3QuLiIiKSBnZy5hZGRMaXN0SXRlbXModCkgZWxzZSBnZy50b2FzdChNaW5nY2cuLiLlvIDlkK/lpLHotKUiLCBmYWxzZSkgcmV0dXJuIGZhbHNlIGVuZCBlbHNlIGdnLnRvYXN0KCLlvIDlkK/lpLHotKUiKSByZXR1cm4gZmFsc2UgZW5kIGVuZCBmdW5jdGlvbiBQUygpIGVuZCBmdW5jdGlvbiBzZXR2YWx1ZShhZGRyZXNzLGZsYWdzLHZhbHVlKSBQUygn5L+u5pS55Zyw5Z2A5pWw5YC8KOWcsOWdgCzmlbDlgLznsbvlnoss6KaB5L+u5pS555qE5YC8KScpIGxvY2FsIHR0PXt9IHR0WzFdPXt9IHR0WzFdLmFkZHJlc3M9YWRkcmVzcyB0dFsxXS5mbGFncz1mbGFncyB0dFsxXS52YWx1ZT12YWx1ZSBnZy5zZXRWYWx1ZXModHQpIGVuZCBmdW5jdGlvbiBjb25maWd1cmUoeGdzeixzc3N6LGdzc3oseGwpIGdnLmNsZWFyUmVzdWx0cygpIGdnLnNldFJhbmdlcyhuYykgZmxhZ3M9eGwgZ2cuc2VhcmNoTnVtYmVyKHNzc3oseGwsIGZhbHNlLCA1Njg3MDkxMiwgMCwgLTEpIHNzamdzbD1nZy5nZXRSZXN1bHRDb3VudCgpIGlmIHNzamdzbD4wIHRoZW4gZ2cudG9hc3QoIuWFseWIsCIuLnNzamdzbC4uIuadoeaVsOWAvCIpIGdnLnNlYXJjaE51bWJlcihnc3N6LHhsLCBmYWxzZSwgNTY4NzA5MTIsIDAsIC0xKSBzc2pncz1nZy5nZXRSZXN1bHRDb3VudCgpIGlmIHNzamdzPjAgdGhlbiBlbHNlIGdnLnRvYXN0KCLlvIDlkK/lpLHotKUg5Y6f5ZugOuaUueWWhOe7k+aenOaXoOaVsOWAvCIpIGVuZCBnZy5nZXRSZXN1bHRzKHNzamdzKSBnZy5lZGl0QWxsKHhnc3osIHhsKSBnZy50b2FzdCgi5byA5ZCv5oiQ5YqfIOW3suS/ruaUuSIuLnNzamdzLi4i5p2h5pWw5YC8IikgZWxzZSBnZy50b2FzdCgi5byA5ZCv5aSx6LSlIOWOn+WboDrnu5Pmnpzml6DmlbDlgLwiKSBlbmQgZW5kIGZ1bmN0aW9uIGpzKGFkZHJlc3MsZmxhZ3MsdmFsdWUpIGxvY2FsIGp6PXt9IGp6WzFdPXt9IGp6WzFdLmFkZHJlc3M9YWRkcmVzcyBqelsxXS5mbGFncz1mbGFncyBqelsxXS52YWx1ZT12YWx1ZSBnZy5zZXRWYWx1ZXMoanopIGVuZCBmdW5jdGlvbiBqeihzeGcsenMsenNuYikgZmxhZ3M9enMgdmFsdWU9enNuYiBzbz1nZy5nZXRSYW5nZXNMaXN0KCcnLi5uYW1lLi4nJylbMV0uc3RhcnQganMoc28rc3hnLHpzLHpzbmIpIGVuZCBsb2NhbCBaU18xID0gZ2cuYWxlcnQgbG9jYWwgWlNfMiA9IGdnLnRvYXN0IGxvY2FsIFpTXzMgPSBnZy5zZWFyY2hOdW1iZXIgbG9jYWwgWlNfNCA9IGdnLmVkaXRBbGwgbG9jYWwgWlNfNSA9IGdnLnNldFJhbmdlcyBsb2NhbCBaU182ID0gZ2cuZ2V0UmVzdWx0cyBsb2NhbCBaU183ID0gZ2cuY2xlYXJSZXN1bHRzIGxvY2FsIFpTXzggPSBnZy5zZWFyY2hBZGRyZXNzIGxvY2FsIFpTXzkgPSBnZy5nZXRSZXN1bHRDb3VudCBsb2NhbCBaU18xMCA9IGdnLlJFR0lPTl9CQUQgbG9jYWwgWlNfMTEgPSBnZy5SRUdJT05fQU5PTllNT1VTIGxvY2FsIFpTXzEyID0gZ2cuUkVHSU9OX0FaU01FTSBsb2NhbCBaU18xMyA9IGdnLlJFR0lPTl9DX0FMTE9DIGxvY2FsIFpTXzE0ID0gZ2cuUkVHSU9OX0NfQlNTIGxvY2FsIFpTXzE1ID0gZ2cuUkVHSU9OX0NfY29kZSBsb2NhbCBaU18xNiA9IGdnLlJFR0lPTl9DX0hFQVAgbG9jYWwgWlNfMTcgPSBnZy5SRUdJT05fQ09ERV9BUFAgbG9jYWwgWlNfMTggPSBnZy5SRUdJT05fQ09ERV9TWVMgbG9jYWwgWlNfMTkgPSBnZy5SRUdJT05fSkFWQSBsb2NhbCBaU18yMCA9IGdnLlJFR0lPTl9KQVZBX0hFQVAgbG9jYWwgWlNfMjEgPSBnZy5SRUdJT05fT1RIRVIgbG9jYWwgWlNfMjIgPSBnZy5SRUdJT05fUFBTU1BQIGxvY2FsIFpTXzIzID0gZ2cuUkVHSU9OX1NUQUNLIGxvY2FsIFpTXzI0ID0gZ2cuVFlQRV9GTE9BVCBsb2NhbCBaU18yNSA9IGdnLlNJR05fRVFVQUwgbG9jYWwgWlNfMjYgPSBnZy5UWVBFX0RXT1JEIGxvY2FsIFpTXzI3ID0gZ2cuVFlQRV9CWVRFIGxvY2FsIFpTXzI4ID0gZ2cuVFlQRV9XT1JEIGxvY2FsIFpTXzI5ID0gZ2cuUkVHSU9OX1ZJREVPIGxvY2FsIFpTXzMwID0gZ2cubXVsdGlDaG9pY2UgbG9jYWwgWlNfMzEgPSBwcmludCBQVCA9IChvcy5kYXRlKCIlWeW5tCVt5pyIJWTml6UlSOaXtiVN5YiGJVPnp5IiKSkgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS3or7fli7/kv67mlLktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmZ1bmN0aW9uIHNwbGl0KHN6RnVsbFN0cmluZywgc3pTZXBhcmF0b3IpICAgbG9jYWwgbkZpbmRTdGFydEluZGV4ID0gMSAgIGxvY2FsIG5TcGxpdEluZGV4ID0gMSAgIGxvY2FsIG5TcGxpdEFycmF5ID0ge30gICB3aGlsZSB0cnVlIGRvICAgbG9jYWwgbkZpbmRMYXN0SW5kZXggPSBzdHJpbmcuZmluZCAgKHN6RnVsbFN0cmluZywgc3pTZXBhcmF0b3IsIG5GaW5kU3RhcnRJbmRleCkgICBpZiBub3QgbkZpbmRMYXN0SW5kZXggdGhlbiAgIG5TcGxpdEFycmF5W25TcGxpdEluZGV4XSA9ICAgc3RyaW5nLnN1YihzekZ1bGxTdHJpbmcsIG5GaW5kU3RhcnRJbmRleCwgc3RyaW5nLmxlbiAgKHN6RnVsbFN0cmluZykpICAgYnJlYWsgZW5kICAgblNwbGl0QXJyYXlbblNwbGl0SW5kZXhdID0gc3RyaW5nLnN1YiAgKHN6RnVsbFN0cmluZywgbkZpbmRTdGFydEluZGV4LCBuRmluZExhc3RJbmRleCAtIDEpICAgbkZpbmRTdGFydEluZGV4ID0gbkZpbmRMYXN0SW5kZXggKyBzdHJpbmcubGVuICAoc3pTZXBhcmF0b3IpICAgblNwbGl0SW5kZXggPSBuU3BsaXRJbmRleCArIDEgZW5kIHJldHVybiAgIG5TcGxpdEFycmF5IGVuZCAgIGZ1bmN0aW9uIHhneGMoc3pweSwgcW14ZykgICBmb3IgeCA9IDEsICMocW14ZykgZG8gICB4Z3B5ID0gc3pweSArIHFteGdbeF1bIm9mZnNldCJdICAgeGdseCA9IHFteGdbeF1bInR5cGUiXSAgIHhnc3ogPSBxbXhnW3hdWyJ2YWx1ZSJdICAgeGdkaiA9IHFteGdbeF1bImZyZWV6ZSJdICAgaWYgeGdkaiA9PSBuaWwgb3IgeGdkaiA9PSAiIiB0aGVuICAgZ2cuc2V0VmFsdWVzKHtbMV0gICA9IHthZGRyZXNzID0geGdweSwgZmxhZ3MgPSB4Z2x4LCB2YWx1ZSA9IHhnc3p9fSkgICBlbHNlICAgZ2cuYWRkTGlzdEl0ZW1zKHtbMV0gICA9IHthZGRyZXNzID0geGdweSwgZmxhZ3MgPSB4Z2x4LCAgIGZyZWV6ZSA9IHhnZGosIHZhbHVlID0geGdzen19KSBlbmQgICB4Z3NsID0geGdzbCArIDEgeGdqZyA9IHRydWUgZW5kIGVuZCAgIGZ1bmN0aW9uIHhxbW5iKHFtbmIpICAgZ2cuY2xlYXJSZXN1bHRzKCkgICBnZy5zZXRSYW5nZXMocW1uYlsxXVsibWVtb3J5Il0pICAgZ2cuc2VhcmNoTnVtYmVyKHFtbmJbM11bInZhbHVlIl0sIHFtbmJbM11bInR5cGUiXSkgICBpZiBnZy5nZXRSZXN1bHRDb3VudCgpID09IDAgdGhlbiAgIGdnLnRvYXN0KHFtbmJbMl1bIm5hbWUiXSAuLiAi5byA5ZCv5aSx6LSlIikgICBlbHNlICAgZ2cucmVmaW5lTnVtYmVyKHFtbmJbM11bInZhbHVlIl0sIHFtbmJbM11bInR5cGUiXSkgIGdnLnJlZmluZU51bWJlcihxbW5iWzNdWyJ2YWx1ZSJdLCBxbW5iWzNdWyJ0eXBlIl0pICAgZ2cucmVmaW5lTnVtYmVyKHFtbmJbM11bInZhbHVlIl0sIHFtbmJbM11bInR5cGUiXSkgICBpZiBnZy5nZXRSZXN1bHRDb3VudCgpID09IDAgdGhlbiAgIGdnLnRvYXN0KHFtbmJbMl1bIm5hbWUiXSAuLiAi5byA5ZCv5aSx6LSlIikgICBlbHNlICAgICAgICAgICBzbCA9IGdnLmdldFJlc3VsdHMoOTk5OTk5KSAgIHN6ID0gZ2cuZ2V0UmVzdWx0Q291bnQoKSAgICAgICAgICAgeGdzbCA9IDAgaWYgc3ogPiA5OTk5OTkgdGhlbiAgIHN6ID0gOTk5OTk5IGVuZCBmb3IgaSA9IDEsIHN6IGRvICAgcGRzeiA9IHRydWUgZm9yIHYgPSA0LCAjKHFtbmIpIGRvIGlmICAgcGRzeiA9PSB0cnVlIHRoZW4gICBweXN6ID0ge30gcHlzelsxXSAgID0ge30gcHlzelsxXS5hZGRyZXNzICAgPSBzbFtpXS5hZGRyZXNzICsgcW1uYlt2XVsib2Zmc2V0Il0gcHlzelsxXS5mbGFncyAgID0gcW1uYlt2XVsidHlwZSJdICAgc3pweSA9IGdnLmdldFZhbHVlcyhweXN6KSAgIHBkcGQgPSBxbW5iW3ZdWyJsdiJdIC4uICI7IiAuLiBzenB5WzFdLnZhbHVlIHN6cGQgICA9IHNwbGl0KHBkcGQsICI7IikgdHpzenBkICAgPSBzenBkWzFdIHB5c3pwZCA9IHN6cGRbMl0gICBpZiB0enN6cGQgPT0gcHlzenBkIHRoZW4gICBwZGpnID0gdHJ1ZSBwZHN6ID0gdHJ1ZSBlbHNlICAgcGRqZyA9IGZhbHNlIHBkc3ogPSBmYWxzZSBlbmQgZW5kIGVuZCBpZiAgIHBkamcgPT0gdHJ1ZSB0aGVuIHN6cHkgICA9IHNsW2ldLmFkZHJlc3MgeGd4YyhzenB5LCBxbXhnKSBlbmQgZW5kICAgaWYgeGdqZyA9PSB0cnVlIHRoZW4gICBnZy50b2FzdChxbW5iWzJdWyJuYW1lIl0gLi4gIuW8gOWQr+aIkOWKnyzlhbHkv67mlLkiIC4uIHhnc2wgLi4gIuadoeaVsOaNriIpICAgZWxzZSAgIGdnLnRvYXN0KHFtbmJbMl1bIm5hbWUiXSAuLiAi5byA5ZCv5aSx6LSlIikgICBlbmQgICBlbmQgICBlbmQgICBlbmQgIGZ1bmN0aW9uIGVkaXQob3JpZyxyZXQpX29tPW9yaWdbMV0ubWVtb3J5IG9yIG9yaWdbMV1bMV1fb3Y9b3JpZ1szXS52YWx1ZSBvciBvcmlnWzNdWzFdX29uPW9yaWdbMl0ubmFtZSBvciBvcmlnWzJdWzFdZ2cuY2xlYXJSZXN1bHRzKClnZy5zZXRSYW5nZXMoX29tKWdnLnNlYXJjaE51bWJlcihfb3Ysb3JpZ1szXS50eXBlIG9yIG9yaWdbM11bMl0pc3o9Z2cuZ2V0UmVzdWx0Q291bnQoKWlmIHN6PDEgdGhlbiBnZy50b2FzdChfb24uLiLlvIDlkK/lpLHotKUiKWVsc2Ugc2w9Z2cuZ2V0UmVzdWx0cyg3MjApZm9yIGk9MSxzeiBkbyBpc3Q9dHJ1ZSBmb3Igdj00LCNvcmlnIGRvIGlmIGlzdD09dHJ1ZSBhbmQgc2xbaV0udmFsdWU9PV9vdiB0aGVuIGNkPXt7fX1jZFsxXS5hZGRyZXNzPXNsW2ldLmFkZHJlc3MrKG9yaWdbdl0ub2Zmc2V0IG9yIG9yaWdbdl1bMl0pY2RbMV0uZmxhZ3M9b3JpZ1t2XS50eXBlIG9yIG9yaWdbdl1bM11zenB5PWdnLmdldFZhbHVlcyhjZCljZGx2PW9yaWdbdl0ubHYgb3Igb3JpZ1t2XVsxXWNkdj1zenB5WzFdLnZhbHVlIGlmIGNkbHY9PWNkdiB0aGVuIHBkamc9dHJ1ZSBpc3Q9dHJ1ZSBlbHNlIHBkamc9ZmFsc2UgaXN0PWZhbHNlIGVuZCBlbmQgZW5kIGlmIHBkamc9PXRydWUgdGhlbiBzenB5PXNsW2ldLmFkZHJlc3MgZm9yIHg9MSwjKHJldClkbyB4Z3B5PXN6cHkrKHJldFt4XS5vZmZzZXQgb3IgcmV0W3hdWzJdKXhnbHg9cmV0W3hdLnR5cGUgb3IgcmV0W3hdWzNdeGdzej1yZXRbeF0udmFsdWUgb3IgcmV0W3hdWzFdeGdkaj1yZXRbeF0uZnJlZXplIG9yIHJldFt4XVs0XXhnc2o9e3thZGRyZXNzPXhncHksZmxhZ3M9eGdseCx2YWx1ZT14Z3N6fX1pZiB4Z2RqPT10cnVlIHRoZW4geGdzalsxXS5mcmVlemU9eGdkaiBnZy5hZGRMaXN0SXRlbXMoeGdzaillbHNlIGdnLnNldFZhbHVlcyh4Z3NqKWVuZCBlbmQgeGdqZz10cnVlIGVuZCBlbmQgaWYgeGdqZz09dHJ1ZSB0aGVuIGdnLnRvYXN0KF9vbi4uIuW8gOWQr+aIkOWKnyIpZWxzZSBnZy50b2FzdChfb24uLiLlvIDlkK/lpLHotKUiKWVuZCBlbmQgZW5kIGZ1bmN0aW9uIFNlYXJjaFdyaXRlKFNlYXJjaCwgV3JpdGUsIFR5cGUpIGdnLmNsZWFyUmVzdWx0cygpIGdnLnNldFZpc2libGUoZmFsc2UpIGdnLmNsZWFyUmVzdWx0cygpIGxvY2FsIGRhdGEgPSB7fSBsb2NhbCBiYXNlID0gU2VhcmNoWzFdWzJdIGlmIChjb3VudCA+IDApIHRoZW4gZm9yIGksIHYgaW4gaXBhaXJzKHJlc3VsdCkgZG8gdi5pc1VzZWZ1bCA9IHRydWUgZW5kIGZvciBrPTIsICNTZWFyY2ggZG8gbG9jYWwgdG1wID0ge30gbG9jYWwgb2Zmc2V0ID0gU2VhcmNoW2tdWzJdIC0gYmFzZSBsb2NhbCBudW0gPSBTZWFyY2hba11bMV0gZm9yIGksIHYgaW4gaXBhaXJzKHJlc3VsdCkgZG8gdG1wWyN0bXArMV0gPSB7fSB0bXBbI3RtcF0uYWRkcmVzcyA9IHYuYWRkcmVzcyArIG9mZnNldCB0bXBbI3RtcF0uZmxhZ3MgPSB2LmZsYWdzIGVuZCB0bXAgPSBnZy5nZXRWYWx1ZXModG1wKSBmb3IgaSwgdiBpbiBpcGFpcnModG1wKSBkbyBpZiAoIHRvc3RyaW5nKHYudmFsdWUpIH49IHRvc3RyaW5nKG51bSkgKSB0aGVuIHJlc3VsdFtpXS5pc1VzZWZ1bCA9IGZhbHNlIGVuZCBlbmQgZW5kIGZvciBpLCB2IGluIGlwYWlycyhyZXN1bHQpIGRvIGlmICh2LmlzVXNlZnVsKSB0aGVuIGRhdGFbI2RhdGErMV0gPSB2LmFkZHJlc3MgZW5kIGVuZCBpZiAoI2RhdGEgPiAwKSB0aGVuIGdnLnRvYXN0KCLmkJzntKLliLAiLi4jZGF0YS4uIuadoeaVsOaNriIpIGxvY2FsIHQgPSB7fSBsb2NhbCBiYXNlID0gU2VhcmNoWzFdWzJdIGZvciBpPTEsICNkYXRhIGRvIGZvciBrLCB3IGluIGlwYWlycyhXcml0ZSkgZG8gb2Zmc2V0ID0gd1syXSAtIGJhc2UgdFsjdCsxXSA9IHt9IHRbI3RdLmFkZHJlc3MgPSBkYXRhW2ldICsgb2Zmc2V0IHRbI3RdLmZsYWdzID0gVHlwZSB0WyN0XS52YWx1ZSA9IHdbMV0gaWYgKHdbM10gPT0gdHJ1ZSkgdGhlbiBsb2NhbCBpdGVtID0ge30gaXRlbVsjaXRlbSsxXSA9IHRbI3RdIGl0ZW1bI2l0ZW1dLmZyZWV6ZSA9IHRydWUgZ2cuYWRkTGlzdEl0ZW1zKGl0ZW0pIGVuZCBlbmQgZW5kIGdnLnNldFZhbHVlcyh0KSBnZy50b2FzdCgi5bey5L+u5pS5Ii4uI3QuLiLmnaHmlbDmja4iKSBnZy5hZGRMaXN0SXRlbXModCkgZWxzZSBnZy50b2FzdCgibm90IGZvdW5kIiwgZmFsc2UpIHJldHVybiBmYWxzZSBlbmQgZWxzZSBnZy50b2FzdCgiTm90IEZvdW5kIikgcmV0dXJuIGZhbHNlIGVuZCBlbmQgZnVuY3Rpb24gc3BsaXQoc3pGdWxsU3RyaW5nLCBzelNlcGFyYXRvcikgbG9jYWwgbkZpbmRTdGFydEluZGV4ID0gMSBsb2NhbCBuU3BsaXRJbmRleCA9IDEgbG9jYWwgblNwbGl0QXJyYXkgPSB7fSB3aGlsZSB0cnVlIGRvIGxvY2FsIG5GaW5kTGFzdEluZGV4ID0gc3RyaW5nLmZpbmQoc3pGdWxsU3RyaW5nLCBzelNlcGFyYXRvciwgbkZpbmRTdGFydEluZGV4KSBpZiBub3QgbkZpbmRMYXN0SW5kZXggdGhlbiBuU3BsaXRBcnJheVtuU3BsaXRJbmRleF0gPSBzdHJpbmcuc3ViKHN6RnVsbFN0cmluZywgbkZpbmRTdGFydEluZGV4LCBzdHJpbmcubGVuKHN6RnVsbFN0cmluZykpIGJyZWFrIGVuZCBuU3BsaXRBcnJheVtuU3BsaXRJbmRleF0gPSBzdHJpbmcuc3ViKHN6RnVsbFN0cmluZywgbkZpbmRTdGFydEluZGV4LCBuRmluZExhc3RJbmRleCAtIDEpIG5GaW5kU3RhcnRJbmRleCA9IG5GaW5kTGFzdEluZGV4ICsgc3RyaW5nLmxlbihzelNlcGFyYXRvcikgblNwbGl0SW5kZXggPSBuU3BsaXRJbmRleCArIDEgZW5kIHJldHVybiBuU3BsaXRBcnJheSBlbmQgZnVuY3Rpb24geGd4YyhzenB5LCBxbXhnKSBmb3IgeCA9IDEsICMocW14ZykgZG8geGdweSA9IHN6cHkgKyBxbXhnW3hdWyJvZmZzZXQiXSB4Z2x4ID0gcW14Z1t4XVsidHlwZSJdIHhnc3ogPSBxbXhnW3hdWyJ2YWx1ZSJdIHhnZGogPSBxbXhnW3hdWyJmcmVlemUiXSBpZiB4Z2RqID09IG5pbCBvciB4Z2RqID09ICIiIHRoZW4gZ2cuc2V0VmFsdWVzKHtbMV0gPSB7YWRkcmVzcyA9IHhncHksIGZsYWdzID0geGdseCwgdmFsdWUgPSB4Z3N6fX0pIGVsc2UgZ2cuYWRkTGlzdEl0ZW1zKHtbMV0gPSB7YWRkcmVzcyA9IHhncHksIGZsYWdzID0geGdseCwgZnJlZXplID0geGdkaiwgdmFsdWUgPSB4Z3N6fX0pIGVuZCB4Z3NsID0geGdzbCArIDEgeGdqZyA9IHRydWUgZW5kIGVuZCBmdW5jdGlvbiB4cW1uYihxbW5iKSBnZy5jbGVhclJlc3VsdHMoKSBnZy5zZXRSYW5nZXMocW1uYlsxXVsibWVtb3J5Il0pIGdnLnNlYXJjaE51bWJlcihxbW5iWzNdWyJ2YWx1ZSJdLCBxbW5iWzNdWyJ0eXBlIl0pIGlmIGdnLmdldFJlc3VsdENvdW50KCkgPT0gMCB0aGVuIGdnLnRvYXN0KHFtbmJbMl1bIm5hbWUiXSAuLiAi5byA5ZCv5aSx6LSlIikgZWxzZSBnZy5yZWZpbmVOdW1iZXIocW1uYlszXVsidmFsdWUiXSwgcW1uYlszXVsidHlwZSJdKSBnZy5yZWZpbmVOdW1iZXIocW1uYlszXVsidmFsdWUiXSwgcW1uYlszXVsidHlwZSJdKSBnZy5yZWZpbmVOdW1iZXIocW1uYlszXVsidmFsdWUiXSwgcW1uYlszXVsidHlwZSJdKSBpZiBnZy5nZXRSZXN1bHRDb3VudCgpID09IDAgdGhlbiBnZy50b2FzdChxbW5iWzJdWyJuYW1lIl0gLi4gIuW8gOWQr+Wksei0pSIpIGVsc2Ugc2wgPSBnZy5nZXRSZXN1bHRzKDk5OTk5OSkgc3ogPSBnZy5nZXRSZXN1bHRDb3VudCgpIHhnc2wgPSAwIGlmIHN6ID4gOTk5OTk5IHRoZW4gc3ogPSA5OTk5OTkgZW5kIGZvciBpID0gMSwgc3ogZG8gcGRzeiA9IHRydWUgZm9yIHYgPSA0LCAjKHFtbmIpIGRvIGlmIHBkc3ogPT0gdHJ1ZSB0aGVuIHB5c3ogPSB7fSBweXN6WzFdID0ge30gcHlzelsxXS5hZGRyZXNzID0gc2xbaV0uYWRkcmVzcyArIHFtbmJbdl1bIm9mZnNldCJdIHB5c3pbMV0uZmxhZ3MgPSBxbW5iW3ZdWyJ0eXBlIl0gc3pweSA9IGdnLmdldFZhbHVlcyhweXN6KSBwZHBkID0gcW1uYlt2XVsibHYiXSAuLiAiOyIgLi4gc3pweVsxXS52YWx1ZSBzenBkID0gc3BsaXQocGRwZCwgIjsiKSB0enN6cGQgPSBzenBkWzFdIHB5c3pwZCA9IHN6cGRbMl0gaWYgdHpzenBkID09IHB5c3pwZCB0aGVuIHBkamcgPSB0cnVlIHBkc3ogPSB0cnVlIGVsc2UgcGRqZyA9IGZhbHNlIHBkc3ogPSBmYWxzZSBlbmQgZW5kIGVuZCBpZiBwZGpnID09IHRydWUgdGhlbiBzenB5ID0gc2xbaV0uYWRkcmVzcyB4Z3hjKHN6cHksIHFteGcpIGVuZCBlbmQgaWYgeGdqZyA9PSB0cnVlIHRoZW4gZ2cudG9hc3QocW1uYlsyXVsibmFtZSJdIC4uICLlvIDlkK/miJDlip8s5YWx5L+u5pS5IiAuLiB4Z3NsIC4uICLmnaHmlbDmja4iKSBlbHNlIGdnLnRvYXN0KHFtbmJbMl1bIm5hbWUiXSAuLiAi5byA5ZCv5aSx6LSlIikgZW5kIGVuZCBlbmQgZW5kIEFBPSLmqKHmnb/kvZzogIU66bm/5YebIiBmdW5jdGlvbiBTZWFyY2hXcml0ZShTZWFyY2gsIFdyaXRlLCBUeXBlKSBnZy5jbGVhclJlc3VsdHMoKSAgICBnZy5zZXRWaXNpYmxlKGZhbHNlKSAgICBnZy5zZWFyY2hOdW1iZXIoU2VhcmNoWzFdWzFdLCBUeXBlKSAgICBsb2NhbCBjb3VudCA9IGdnLmdldFJlc3VsdENvdW50KCkgICAgbG9jYWwgcmVzdWx0ID0gZ2cuZ2V0UmVzdWx0cyhjb3VudCkgICAgZ2cuY2xlYXJSZXN1bHRzKCkgICBsb2NhbCBkYXRhID0ge30gICAgIGxvY2FsIGJhc2UgPSBTZWFyY2hbMV1bMl0gICAgICAgIGlmIChjb3VudCA+IDApIHRoZW4gICAgICAgIGZvciBpLCB2IGluIGlwYWlycyhyZXN1bHQpIGRvICAgICAgICAgICAgdi5pc1VzZWZ1bCA9IHRydWUgICAgICAgICBlbmQgICAgICAgICAgICAgICBmb3Igaz0yLCAjU2VhcmNoIGRvICAgICAgICAgICAgbG9jYWwgdG1wID0ge30gICAgICAgICAgICBsb2NhbCBvZmZzZXQgPSBTZWFyY2hba11bMl0gLSBiYXNlICAgICAgICAgICAgIGxvY2FsIG51bSA9IFNlYXJjaFtrXVsxXSAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSwgdiBpbiBpcGFpcnMocmVzdWx0KSBkbyAgICAgICAgICAgICAgICB0bXBbI3RtcCsxXSA9IHt9ICAgICAgICAgICAgICAgICB0bXBbI3RtcF0uYWRkcmVzcyA9IHYuYWRkcmVzcyArIG9mZnNldCAgICAgICAgICAgICAgICAgIHRtcFsjdG1wXS5mbGFncyA9IHYuZmxhZ3MgICAgICAgICAgICAgIGVuZCAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IGdnLmdldFZhbHVlcyh0bXApICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpLCB2IGluIGlwYWlycyh0bXApIGRvICAgICAgICAgICAgICAgIGlmICggdG9zdHJpbmcodi52YWx1ZSkgfj0gdG9zdHJpbmcobnVtKSApIHRoZW4gICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0uaXNVc2VmdWwgPSBmYWxzZSBlbmQgZW5kIGVuZCBmb3IgaSwgdiBpbiBpcGFpcnMocmVzdWx0KSBkbyBpZiAodi5pc1VzZWZ1bCkgdGhlbiBkYXRhWyNkYXRhKzFdID0gdi5hZGRyZXNzIGVuZCBlbmQgaWYgKCNkYXRhID4gMCkgdGhlbiBnZy50b2FzdCgi4pyo5byA5ZCv5oiQ5Yqf4pyoIi4uI2RhdGEuLiIiKSBsb2NhbCB0ID0ge30gbG9jYWwgYmFzZSA9IFNlYXJjaFsxXVsyXSBmb3IgaT0xLCAjZGF0YSBkbyBmb3IgaywgdyBpbiBpcGFpcnMoV3JpdGUpIGRvIG9mZnNldCA9IHdbMl0gLSBiYXNlIHRbI3QrMV0gPSB7fSB0WyN0XS5hZGRyZXNzID0gZGF0YVtpXSArIG9mZnNldCB0WyN0XS5mbGFncyA9IFR5cGUgdFsjdF0udmFsdWUgPSB3WzFdIGlmICh3WzNdID09IHRydWUpIHRoZW4gbG9jYWwgaXRlbSA9IHt9IGl0ZW1bI2l0ZW0rMV0gPSB0WyN0XSBpdGVtWyNpdGVtXS5mcmVlemUgPSB0cnVlIGdnLmFkZExpc3RJdGVtcyhpdGVtKSBlbmQgZW5kIGVuZCBnZy5zZXRWYWx1ZXModCkgZWxzZSBnZy50b2FzdCgiIiwgZmFsc2UpIHJldHVybiBmYWxzZSBlbmQgZWxzZSBnZy50b2FzdCgiIikgcmV0dXJuIGZhbHNlIGVuZCBlbmQKLS0tLS0tLS0tLS0tLS0tLeaUr+aMgeS7v3hz5YaZ5rOV5ZKM5oyH6ZKI5YaZ5rOVLS0tLS0tLS0tLS0tLS0tLS0tLQpOYW1lID0gIvCflrwiCmxvY2FsIE5jID0gMzIKbG9jYWwgTHggPSA0CmxvY2FsIFN6MSA9IHt7NzYzMjI0MCwgMH0sezE2MzM5MDc1NTYsIC03Nn19CmxvY2FsIFN6MiA9IHt7MTkzNjk0MjQ0OSwgMH19Ckhhb0dlKE5jLCBMeCwgU3oxLCBTejIpCk5hbWUgPSAi5Ye65Zyw55quIgpsb2NhbCBOYyA9IDE2MzkyCmxvY2FsIEx4ID0gNApsb2NhbCBTejEgPSB7ey00ODY0NzA1MjQsIDB9LHstMjk4ODQxNTM1LCA0fSx7LTQwOTY2NTUzNiwgOH19CmxvY2FsIFN6MiA9IHt7MCwgNH19Ckhhb0dlKE5jLCBMeCwgU3oxLCBTejIpCmdnLnRvYXN0KCLpmaTkvaDlpojpgLzmr5vinIXwn5iJICIpTmFtZSA9ICIiCmxvY2FsIE5jID0gMzIKbG9jYWwgTHggPSAzMgpsb2NhbCBTejEgPSB7ezMyOTMzMDQ5MDE2NTgyOTEzLCAwfX0KbG9jYWwgU3oyID0ge3szMjkzMzA1MjIyOTM1MzQ3MiwgMH19Ckhhb0dlKE5jLCBMeCwgU3oxLCBTejIpCmdnLnRvYXN0KCLkvaDlpojpgLznnJ/pu5HinIXwn5iJICIpCk5hbWUgPSAi4o2f6Zmk6Zu+5byA5ZCv5oiQ5Yqf4o2fIiBsb2NhbCBOYyA9IDE2MzkyIGxvY2FsIEx4ID0gNCBsb2NhbCBTejEgPSB7ey0zMDE5ODczMTIsIDB9LHstMjg5OTI4NjQwLCA0fSx7LTMwOTUyMzk2MywgOH0sey00Mzg5NjAxMDgsIDE2fX0gbG9jYWwgU3oyID0ge3swLCAwfX0gSGFvR2UoTmMsIEx4LCBTejEsIFN6MikKZ2cuY2xlYXJSZXN1bHRzKCkKZ2cuc2V0UmFuZ2VzKGdnLlJFR0lPTl9BTk9OWU1PVVMpCmdnLnNlYXJjaE51bWJlcigiOTAuNzc1NzAzNDMwMTc2OzA7ODsxNTsxNjsxODsyOCIsIGdnLlRZUEVfRkxPQVQsIGZhbHNlLCBnZy5TSUdOX0VRVUFMLCAwLCAtMSkKZ2cuc2VhcmNoTnVtYmVyKCIyOCIsIGdnLlRZUEVfRkxPQVQsIGZhbHNlLCBnZy5TSUdOX0VRVUFMLCAwLCAtMSkKZ2cuZ2V0UmVzdWx0cygxMCkKZ2cuZWRpdEFsbCgiMTAwMCIsIGdnLlRZUEVfRkxPQVQpCmdnLmNsZWFyUmVzdWx0cygpCmdnLnRvYXN0KCLwn5KA5aS06YOo8J+SgCIpCmdnLmNsZWFyUmVzdWx0cygpCmdnLnNldFJhbmdlcyhnZy5SRUdJT05fQ09ERV9BUFApCmdnLnNlYXJjaE51bWJlcigiLTMuNzc4MzA4OTllMjg7LTMuNzQ0NDA5NzJlMjg7LTMuNzE4MzQwMTNlMjg7LTEuNzMzNDMzNGUyOCIsIGdnLlRZUEVfRkxPQVQsIGZhbHNlLCBnZy5TSUdOX0VRVUFMLCAwLCAtMSwgMCkKZ2cucmVmaW5lTnVtYmVyKCItMy43NzgzMDg5OWUyOCIsIGdnLlRZUEVfRkxPQVQsIGZhbHNlLCBnZy5TSUdOX0VRVUFMLCAwLCAtMSwgMCkKcmV2ZXJ0ID0gZ2cuZ2V0UmVzdWx0cyg5OTk5OSwgbmlsLCBuaWwsIG5pbCwgbmlsLCBuaWwsIG5pbCwgbmlsLCBuaWwpCmdnLmVkaXRBbGwoIjAiLCBnZy5UWVBFX0ZMT0FUKQpnZy5zZXRSYW5nZXMoZ2cuUkVHSU9OX0FOT05ZTU9VUykKZ2cuc2VhcmNoTnVtYmVyKCIyNTsyMzszMC41IiwgZ2cuVFlQRV9GTE9BVCwgZmFsc2UsIGdnLlNJR05fRVFVQUwsIDAsIC0xLCAwKQpnZy5nZXRSZXN1bHRzKDIwMDApCmdnLmVkaXRBbGwoIjE2MCIsIGdnLlRZUEVfRkxPQVQpCmdnLmNsZWFyUmVzdWx0cygpCmdnLnNldFJhbmdlcyhnZy5SRUdJT05fQU5PTllNT1VTKQpnZy5zZWFyY2hOdW1iZXIoIjI1OzMwLjUiLCBnZy5UWVBFX0ZMT0FULCBmYWxzZSwgZ2cuU0lHTl9FUVVBTCwgMCwgLTEsIDApCmdnLnByb2Nlc3NSZXN1bWUoKQpnZy5nZXRSZXN1bHRzKDIwMDApCmdnLmVkaXRBbGwoIjE4MCIsIGdnLlRZUEVfRkxPQVQpCmdnLmNsZWFyUmVzdWx0cygpCmdnLnNldFJhbmdlcyhnZy5SRUdJT05fQU5PTllNT1VTKQpnZy5zZWFyY2hOdW1iZXIoIjMwLjU7MjUiLCBnZy5UWVBFX0ZMT0FULCBmYWxzZSwgZ2cuU0lHTl9FUVVBTCwgMCwgLTEsIDApCmdnLmdldFJlc3VsdHMoMjAwMCkKZ2cuZWRpdEFsbCgiMTQwIiwgZ2cuVFlQRV9GTE9BVCkKZ2cuY2xlYXJSZXN1bHRzKCkKZ2cuc2V0UmFuZ2VzKGdnLlJFR0lPTl9BTk9OWU1PVVMpCmdnLnNlYXJjaE51bWJlcigiMTU7Mjg7MTY7MjY7ODsxOCIsIGdnLlRZUEVfRkxPQVQsIGZhbHNlLCBnZy5TSUdOX0VRVUFMLCAwLCAtMSkKZ2cuZ2V0UmVzdWx0cyg1NikKZ2cuZWRpdEFsbCgiLTEzMzkiLCBnZy5UWVBFX0ZMT0FUKQpnZy5jbGVhclJlc3VsdHMoKQogICAgZ2cuc2V0UmFuZ2VzKGdnLlJFR0lPTl9BTk9OWU1PVVMpCiAgICBnZy5zZWFyY2hOdW1iZXIoIjkuMjAxNjE4OzMwLjU7MjUiLCBnZy5UWVBFX0ZMT0FULCBmYWxzZSwgZ2cuU0lHTl9FUVVBTCwgMCwgLTEpCiAgICBnZy5zZWFyY2hOdW1iZXIoIjI1OzMwLjUiLCBnZy5UWVBFX0ZMT0FULCBmYWxzZSwgZ2cuU0lHTl9FUVVBTCwgMCwgLTEpCiAgICBnZy5nZXRSZXN1bHRzKDEwKQogICAgZ2cuZWRpdEFsbCgiNTAwIiwgZ2cuVFlQRV9GTE9BVCkKICAgIGdnLmNsZWFyUmVzdWx0cygpCiAgICBnZy50b2FzdCgi8J+SgOiEkeWjs+eXm+i+vuWIsDkwJfCfkoAiKQogICAgZ2cuY2xlYXJSZXN1bHRzKCkKZ2cuc2V0UmFuZ2VzKGdnLlJFR0lPTl9BTk9OWU1PVVMpCmdnLnNlYXJjaE51bWJlcigiMjU7MzAuNSIsIGdnLlRZUEVfRkxPQVQsIGZhbHNlLCBnZy5TSUdOX0VRVUFMLCAwLCAtMSwgMCkKcmV2ZXJ0ID0gZ2cuZ2V0UmVzdWx0cygxMDAsIG5pbCwgbmlsLCBuaWwsIG5pbCwgbmlsLCBuaWwsIG5pbCwgbmlsKQpnZy5lZGl0QWxsKCI4ODgiLCBnZy5UWVBFX0ZMT0FUKQpnZy50b2FzdCgi8J+QtuWPjOWAjeiEkeWjs+eXm/CfkLYiKQpOYW1lID0gIvCfjZrwn6ejIgpsb2NhbCBOYyA9IDE2MzkyCmxvY2FsIEx4ID0gNApsb2NhbCBTejEgPSB7ey0zMDgzNDAyMjEsIDB9LHs1MTQ4NTM0NDEsIDh9LHstMzAwOTM4NzM2LCAxMn19CmxvY2FsIFN6MiA9IHt7MCwgMTJ9fQpIYW9HZShOYywgTHgsIFN6MSwgU3oyKQpOYW1lID0gIvCfjZrwn6ejIgpsb2NhbCBOYyA9IDE2MzkyCmxvY2FsIEx4ID0gNApsb2NhbCBTejEgPSB7ey04MjczMjM4MzAsIDB9LHstMjg2MTMxNjk2LCA0fSx7LTMwMDkzODczNiwgOH19CmxvY2FsIFN6MiA9IHt7MCwgOH19Ckhhb0dlKE5jLCBMeCwgU3oxLCBTejIpCgpmdW5jdGlvbiBKKCkKTmFtZSA9ICLwn5Kl8J+boCIKbG9jYWwgTmMgPSAzMgpsb2NhbCBMeCA9IDE2CmxvY2FsIFN6MSA9IHt7MjMuMCwgMH0sezI1LjAsIDR9LHszMC41LCA4fX0KbG9jYWwgU3oyID0ge3sxNDAsIDR9LHsxNDAsIDh9fQpIYW9HZShOYywgTHgsIFN6MSwgU3oyKQpOYW1lID0gIvCflKvwn5ugIgpsb2NhbCBOYyA9IDE2MzkyCmxvY2FsIEx4ID0gNApsb2NhbCBTejEgPSB7ezExMTU3NTA1MTYsIDB9LHsxMDM2ODMxOTQ5LCAtMTc2fX0KbG9jYWwgU3oyID0ge3sxMTE0NjM2Mjg4LCAtMTc2fX0KSGFvR2UoTmMsIEx4LCBTejEsIFN6MikKIHNvPWdnLmdldFJhbmdlc0xpc3QoJ2xpYlVFNC5zbycpWzFdLnN0YXJ0CiAgcHk9MFgyNzM5RTY4LS3lrZDlvLnlnaDokL0KICBzZXR2YWx1ZShzbytweSwxNiwtMTgpCiAgc289Z2cuZ2V0UmFuZ2VzTGlzdCgnbGliVUU0LnNvJylbMV0uc3RhcnQKICBweT0wWDI3MzlFNTQKICBzZXR2YWx1ZShzbytweSwxNiwwKS0t6Ziy5Z2g6JC9CiAgc289Z2cuZ2V0UmFuZ2VzTGlzdCgnbGliVUU0LnNvJylbMV0uc3RhcnQKICBweT0wWDI3MzlFNjgtLeWtkOW8ueWdoOiQvQogIHNldHZhbHVlKHNvK3B5LDE2LC0xOCkKICBzbz1nZy5nZXRSYW5nZXNMaXN0KCdsaWJVRTQuc28nKVsxXS5zdGFydAogIHB5PTBYMjczOUU1NAogIHNldHZhbHVlKHNvK3B5LDE2LDApLS3pmLLlnaDokL0KICBzbz1nZy5nZXRSYW5nZXNMaXN0KCdsaWJVRTQuc28nKVsxXS5zdGFydAogIHB5PTBYMjczOUU2OC0t5a2Q5by55Z2g6JC9CiAgc2V0dmFsdWUoc28rcHksMTYsLTE4KQogIHNvPWdnLmdldFJhbmdlc0xpc3QoJ2xpYlVFNC5zbycpWzFdLnN0YXJ0CiAgcHk9MFgyNzM5RTU0CiAgc2V0dmFsdWUoc28rcHksMTYsMCktLemYsuWdoOiQvQogIHNvPWdnLmdldFJhbmdlc0xpc3QoJ2xpYlVFNC5zbycpWzFdLnN0YXJ0CiAgcHk9MFgyNzM5RTY4LS3lrZDlvLnlnaDokL0KICBzZXR2YWx1ZShzbytweSwxNiwtMTgpCiAgc289Z2cuZ2V0UmFuZ2VzTGlzdCgnbGliVUU0LnNvJylbMV0uc3RhcnQKICBweT0wWDI3MzlFNTQKICBzZXR2YWx1ZShzbytweSwxNiwwKS0t6Ziy5Z2g6JC9CiAgc289Z2cuZ2V0UmFuZ2VzTGlzdCgnbGliVUU0LnNvJylbMV0uc3RhcnQKICBweT0wWDI3MzlFNjgtLeWtkOW8ueWdoOiQvQogIHNldHZhbHVlKHNvK3B5LDE2LC0xOCkKICBzbz1nZy5nZXRSYW5nZXNMaXN0KCdsaWJVRTQuc28nKVsxXS5zdGFydAogIHB5PTBYMjczOUU1NAogIHNldHZhbHVlKHNvK3B5LDE2LDApLS3pmLLlnaDokL0KICBzbz1nZy5nZXRSYW5nZXNMaXN0KCdsaWJVRTQuc28nKVsxXS5zdGFydAogIHB5PTBYMjczOUU2OC0t5a2Q5by55Z2g6JC9CiAgc2V0dmFsdWUoc28rcHksMTYsLTE4KQogIHNvPWdnLmdldFJhbmdlc0xpc3QoJ2xpYlVFNC5zbycpWzFdLnN0YXJ0CiAgcHk9MFgyNzM5RTU0CiAgc2V0dmFsdWUoc28rcHksMTYsMCktLemYsuWdoOiQvQogIHNvPWdnLmdldFJhbmdlc0xpc3QoJ2xpYlVFNC5zbycpWzFdLnN0YXJ0CiAgcHk9MFgyNzM5RTY4LS3lrZDlvLnlnaDokL0KICBzZXR2YWx1ZShzbytweSwxNiwtMTgpCiAgc289Z2cuZ2V0UmFuZ2VzTGlzdCgnbGliVUU0LnNvJylbMV0uc3RhcnQKICBweT0wWDI3MzlFNTQKICBzZXR2YWx1ZShzbytweSwxNiwwKS0t6Ziy5Z2g6JC9CiAgc289Z2cuZ2V0UmFuZ2VzTGlzdCgnbGliVUU0LnNvJylbMV0uc3RhcnQKICBweT0wWDI3MzlFMzQtLeeerOWHuwogIHNldHZhbHVlKHNvK3B5LDE2LDApCiAgc289Z2cuZ2V0UmFuZ2VzTGlzdCgnbGliVUU0LnNvJylbMV0uc3RhcnQKICBweT0wWEU1OUE1Qy0t5a2Q5by55Y+Y5aSnCiAgc2V0dmFsdWUoc28rcHksMTYsLTIuNzg1OTY5NTVlMjgpCiAgTmFtZSA9ICLimpTnibnmlYjimpQiCmxvY2FsIE5jID0gMzIKbG9jYWwgTHggPSAxNgpsb2NhbCBTejEgPSB7ezEwLjAsIDB9LHs0Ni4wLCA0fX0KbG9jYWwgU3oyID0ge3stMTEyMiwgMH19Ckhhb0dlKE5jLCBMeCwgU3oxLCBTejIpCnNvPWdnLmdldFJhbmdlc0xpc3QoJ2xpYlVFNC5zbycpWzFdLnN0YXJ0CnB5PTBYMTE2RTU2OApzZXR2YWx1ZShzbytweSwxNiwwKQpzbz1nZy5nZXRSYW5nZXNMaXN0KCdsaWJVRTQuc28nKVsxXS5zdGFydApweT0wWDIxRDJDQUMKc2V0dmFsdWUoc28rcHksMTYsMCkKZ2cudG9hc3QoIuW8gOWQr+aIkOWKnyIpCiAgRFROQih7e2ZhbHNlLDg4MDAwLjAsMCwxNixuaWwsbmlsfX0se3szNTAwMCwwLDE2LGZhbHNlfX0sMTYsMzIsIuaisOaequWKoOS8pCIpCkRUTkIoe3tmYWxzZSw5MDAwMC4wLDAsMTYsbmlsLG5pbH19LHt7MzUwMDAsMCwxNixmYWxzZX19LDE2LDMyLCLmnqrmorDliqDkvKQiKQpEVE5CKHt7ZmFsc2UsMjMuMCwwLDE2LG5pbCxuaWx9LHsyNS4wLDQsMTZ9LHszMC41LDgsMTZ9fSx7ezEwMCw0LDE2LGZhbHNlfSx7MTAwLDgsMTYsZmFsc2V9fSwxNiwzMiwi6IyD5Zu0IikKRFROQih7e2ZhbHNlLC0xODgzMzQ4NDgxMDU4NzY0MjEwLDAsMzIsbmlsLG5pbH19LHt7LTE4ODMzNDg0ODUwNTU0NDQ1NDAsMCwzMixmYWxzZX19LDMyLDE2Mzg0LCLkv67lpI0iKQpEVE5CKHt7ZmFsc2UsODgwMDAuMCwwLDE2LG5pbCxuaWx9fSx7ezM1MDAwLDAsMTYsZmFsc2V9fSwxNiwzMiwi5qKw5p6q5Yqg5LykIikKRFROQih7e2ZhbHNlLDkwMDAwLjAsMCwxNixuaWwsbmlsfX0se3szNTAwMCwwLDE2LGZhbHNlfX0sMTYsMzIsIuaequaisOWKoOS8pCIpCmVuZAoKCgoKLS1bW1dlbGNvbWUgdG8gRGx1YWVdXQ==") local base64 = load(base64) pcall(base64)