Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@配置助手@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi6YWN572u5Yqp5omLIiwiYXV0aG9yIjoiY3kmSm9lIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjIiwidmVyc2lvbiI6MjcsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidG9vbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9ob21lJykpLnJ1bGUpOyIsInNlYXJjaF91cmwiOiIiLCJncm91cCI6IuS+nei1liIsInNlYXJjaEZpbmQiOiIiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Li76aG1XCIsXCJwYXRoXCI6XCJob21lXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnRyeSB7XFxuICAgIGFkZExpc3RlbmVyKCdvbkNsb3NlJywgKCkgPT4ge1xcbiAgICAgICAgY2xlYXJWYXIoJ25hbWVBcnJheScpO1xcbiAgICAgICAgY2xlYXJWYXIoJ3VybEFycmF5Jyk7XFxuICAgICAgICBjbGVhclZhcignc3dpdGNoJyk7XFxuICAgIH0pXFxuICAgIGFkZExpc3RlbmVyKCdvblJlZnJlc2gnLCAoKSA9PiB7XFxuICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICBjbGVhclZhcignZGVsTnVtJyk7XFxuICAgICAgICBjbGVhclZhcignZGVsQXJyYXknKTtcXG4gICAgICAgIGNsZWFyVmFyKCdzaGFyZU51bScpO1xcbiAgICAgICAgY2xlYXJWYXIoJ3NoYXJlQXJyYXknKTtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBjbGVhclZhcignaXNDaG9vc2UnICsgaSk7XFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIGlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpKSB7XFxuICAgICAgICBjb25maWdBcnJheSA9IFtdO1xcbiAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgfVxcbiAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpIHtcXG4gICAgICAgIHRhZ3NBcnJheSA9IFsncXEnLCAnbWd0dicsICdiaWxpJywgJ3FpeWknLCAneW91a3UnXTtcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2Vfc2VsZWN0aW9uLmpzb24nLCBKU09OLnN0cmluZ2lmeSh0YWdzQXJyYXkpKTtcXG4gICAgfVxcbiAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKSkge1xcbiAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JywgJ+W8gCcpO1xcbiAgICB9XFxuICAgIGlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nKSkge1xcbiAgICAgICAgb3JnU2V0dGluZ3MgPSBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgZm9udFNpemU6IDI1LFxcbiAgICAgICAgICAgIGRtRnJvbTogJ3BhcidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicsIG9yZ1NldHRpbmdzKTtcXG4gICAgfVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8YmlnPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj7mt7sg5YqgIOinoyDmnpA8L3NwYW4+PC9iaWc+JyxcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgaWYgKGdldFZhcignc3dpdGNoJywgJ+WFsycpID09ICflvIAnKSB7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICBkZWxldGVJdGVtKCdhZGQnKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHB1dFZhcignc3dpdGNoJywgJ+WFsycpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGFkZEFycmF5ID0gW3tcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6ICfop6PmnpDlkI3np7DvvIzkuIDooYzkuIDkuKonLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignbmFtZUFycmF5JyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6Kej5p6Q77yM5LiA6KGM5LiA5LiqJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ3VybEFycmF5JyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S/neWtmCcsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZUFycmF5ID0gZ2V0VmFyKCduYW1lQXJyYXknKS5zcGxpdCgvXFxcXHJcXFxcbnxcXFxcbnxcXFxcci8pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybEFycmF5ID0gZ2V0VmFyKCd1cmxBcnJheScpLnNwbGl0KC9cXFxcclxcXFxufFxcXFxufFxcXFxyLyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9IG5hbWVBcnJheS5sZW5ndGggPiB1cmxBcnJheS5sZW5ndGggPyBuYW1lQXJyYXkubGVuZ3RoIDogdXJsQXJyYXkubGVuZ3RoO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgamlleGlOYW1lID0gaSA+IG5hbWVBcnJheS5sZW5ndGggLSAxID8gJ+acquWRveWQjScgOiAobmFtZUFycmF5W2ldID09ICcnID8gJ+acquWRveWQjScgOiBuYW1lQXJyYXlbaV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaWV4aVVybCA9IGkgPiB1cmxBcnJheS5sZW5ndGggLSAxID8gJ+epuuino+aekCcgOiAodXJsQXJyYXlbaV0gPT0gJycgPyAn56m66Kej5p6QJyA6IHVybEFycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXkudW5zaGlmdCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBqaWV4aU5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGppZXhpVXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnczogJ+WFqOmDqCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzd2l0Y2gnLCAn5YWzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S/neWtmOaIkOWKn1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGQnXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcignYWRkRnVuY3Rpb24nLCBhZGRBcnJheSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignc3dpdGNoJywgJ+W8gCcpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2ic3dpdGNo5Li6OicgKyBnZXRWYXIoJ3N3aXRjaCcsICflvIAnKVxcbiAgICAgICAgfSksXFxuICAgICAgICBkZXNjOiAn566A5Y2V44CB54us56uL55qE6Kej5p6Q5bel5YW3IHwg5LiN5o+Q5L6b6Kej5p6QJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiAnYWRkRnVuY3Rpb24nXFxuICAgICAgICB9XFxuICAgIH0sIHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwiIzZFQjg5N1xcXCI+6K+05piOPC9mb250PicsXFxuICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHknKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5pWZ56iL5paH5qGjJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vd3d3Lnl1cXVlLmNvbS9jaGVueWluZy1rNzNzYy9saGN2cWQvYnNoNWUyJyxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCJmbG9hdCYmMTAwJVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5YiH5o2i5o+S5Lu2XFxcIixcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiAkKFsn5pat5o+S5aSN5Y6fJywgJ+aOpeeuoeaWreaPkiddLCAyLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfmlq3mj5LlpI3ljp8nKSB7XFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvUGFyc2VfRG4uanNcXFwiLCBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvUGFyc2VfRG4uanM/cnVsZT1NeUZpZWxk4bSw4oG/XFxcIikpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W9k+WJjeaYr+aWreaPkuaooeW8j1xcXCI7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvUGFyc2VfRG4uanNcXFwiLCBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZHVhbj9ydWxlPemFjee9ruWKqeaJi1xcXCIpKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lvZPliY3mmK/liqnmiYvlt7LmjqXnrqHop6PmnpDku7vliqFcXFwiO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIlRWYm945o6o6YCBOlxcXCIgKyAocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9ib3hTd2l0Y2gudHh0JykgPT0gXFxcIuW8gFxcXCIgPyBcXFwi5byAXFxcIiA6IFxcXCLlhbNcXFwiKSxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9ib3hTd2l0Y2gudHh0XFxcIiwgKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYm94U3dpdGNoLnR4dCcpID09IFxcXCLlvIBcXFwiID8gXFxcIuWFs1xcXCIgOiBcXFwi5byAXFxcIikpXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICflr7zlhaXovoXliqknLFxcbiAgICAgICAgdXJsOiBcXFwiaHR0cHM6Ly9ncmVhc3lmb3JrLm9yZy96aC1DTi9zY3JpcHRzLzQ5NzUwNy12aWRlbyVFOCVCRSU4NSVFNSU4QSVBOVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6Q5qih5p2/JyxcXG4gICAgICAgIHVybDogYGNvcHk6Ly/kv67mlLnimIXprZTmlq3pgJrnlKjmqKHmnb/imIVcXG5mdW5jdGlvbiAodmlwVXJsKSB7XFxuICAgIC8vIOato+W4uOiwg+eUqC3lvLnluZXlvIDlhbPlnKjphY3nva7liqnmiYvph4zoh6rooYzorr7nva7mmK/lkKblkK/nlKhcXG4gICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL211bFBhcnNlP3J1bGU96YWN572u5Yqp5omLXFxcIikubXVsUGFyc2UodmlwVXJsKTtcXG4gICAgLyrlhY3ll4Xpppblj5HmqKHlvI9cXG4gICAg5aaC5p6c5oOz6KaB5a6e546w57G75Ly86a2U5pat55qE5ZeF5o6i5LyY5YWI77ya5YWN5ZeF5YqgeDXjgIFKc29u5aSa57q/6Lev55qE5b2i5byP77yM5Y+C6ICD5rOo6YeK55qE56S65L6L5Luj56CB5re75Yqg5YWN5ZeF5Luj56CB77yI5Y+q5piv56S65L6L5bm25LiN5Y+v55So77yJ77yM5bm25Zyo5pyA57uI6L+U5Zue55qE5pe25YCZ6aG65bqP5aSa5Lyg5YWl5Lik5Liq5Y+C5pWw77ya5LiA5Liq5piv5YWN5ZeF5b6X5Yiw55qE5pKt5pS+5Zyw5Z2A77yM5LiA5Liq5piv6L+Z5Liq6Kej5p6Q5oiW57q/6Lev55qE5ZCN5a2XXFxuICAgIHZhciBwYXJzZSA9IFxcXCJodHRwczovL3BsYXllci5keHl5LmNmL1duZGV4eFgucGhwP3VybD1cXFwiO1xcbiAgICBiZnVybCA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPUFQSeebkuWtkFxcXCIpLnBhcnNlTExRKHBhcnNlLCB2aXBVcmwpO1xcbiAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFwiKS5tdWxQYXJzZSh2aXBVcmwsIGJmdXJsLCAnbGxxJykgKyBcXFwiO3tVc2VyLUFnZW50QCYmUmVmZXJlckB9XFxcIjtcXG4gICAgKi9cXG59YCxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfmupDnoIHnvJbovpEnLFxcbiAgICAgICAgdXJsOiBcXFwiZWRpdEZpbGU6Ly9oaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvblxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn5a+85Ye66YWN572uJyxcXG4gICAgICAgIHVybDogJ3NoYXJlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+S6keadv+WIhuS6qycsXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgc2VjcmV0Q29udGVudCA9IGJhc2U2NEVuY29kZShiYXNlNjRFbmNvZGUoc2V0RmlsZSkpO1xcbiAgICAgICAgICAgIGNvcHkoXFxcIuWKqeaJi+ino+aekOWvvOWFpeWPo+S7pMKlwqVcXFwiICsgc2hhcmVQYXN0ZShzZWNyZXRDb250ZW50KSk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+S6keadv+WvvOWFpScsXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICByZXR1cm4gJCgnJywgJ+WinumHj+WvvOWFpe+8jOivt+aUvuW/gycpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC/liqnmiYvop6PmnpDlr7zlhaXlj6Pku6TCpcKlLykpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxpbmsgPSBpbnB1dC5zcGxpdCgnwqXCpScpWzFdO1xcbiAgICAgICAgICAgICAgICAgICAgc2VjcmV0Q29udGVudCA9IHBhcnNlUGFzdGUobGluayk7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKCdyZW1vdGVTZXRGaWxlPScgKyBiYXNlNjREZWNvZGUoYmFzZTY0RGVjb2RlKHNlY3JldENvbnRlbnQpKSk7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJykpO1xcbiAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkgPSBjb25maWdBcnJheS5jb25jYXQocmVtb3RlU2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShuZXdBcnJheSkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5a+85YWl5oiQ5YqfXFxcIlxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WPo+S7pOmUmeivr1xcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfphY3nva4nID8gJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPXJlZD7phY3nva48L2ZvbnQ+JyA6ICfphY3nva4nLFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKCdtb2RlJywgJ+mFjee9ricpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignbW9kZScsICfphY3nva4nKSA9PSAn5om56YeP5bel5YW3JyA/ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1yZWQ+5om56YeP5bel5YW3PC9mb250PicgOiAn5om56YeP5bel5YW3JyxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiAkKFsn5Yig6ZmkJywgJ+WIhuS6qyddLCAyLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCdtb2RlJywgJ+aJuemHj+W3peWFtycpO1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+WIoOmZpCcpIHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcigndHlwZScsICfmibnph4/liKDpmaQnKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdkZWxOdW0nKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdkZWxBcnJheScpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCd0eXBlJywgJ+aJuemHj+WIhuS6qycpO1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3NoYXJlTnVtJyk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignc2hhcmVBcnJheScpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignaXNDaG9vc2UnICsgaSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfop6PmnpDmtYvor5UnID8gJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPXJlZD7op6PmnpDmtYvor5U8L2ZvbnQ+JyA6ICfop6PmnpDmtYvor5UnLFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKCdtb2RlJywgJ+ino+aekOa1i+ivlScpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JykgPT0gJ3RydWUnID8gJ+W8ueW5lTrlvIAnIDogJ+W8ueW5lTrlhbMnLFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgdmFyIGRtU3dpdGNoID0gcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKTtcXG4gICAgICAgICAgICBpZiAoZG1Td2l0Y2ggPT0gJ3RydWUnKSB7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcsICdmYWxzZScpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcsICd0cnVlJyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICflvLnluZXmnaXmupAnLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvYXBpP3J1bGU96YWN572u5Yqp5omLJykuZG1TZXR0aW5ncygwKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5Ye95pWw5L2c55So5Z+fJywganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPemFjee9ruWKqeaJiycpLmRtU2V0dGluZ3MoMSk7XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+W8ueW5leWkp+WwjycsIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9hcGk/cnVsZT3phY3nva7liqnmiYsnKS5kbVNldHRpbmdzKDIpO1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1dXFxuICAgICAgICB9XFxuICAgIH0pO1xcblxcbiAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgaWYgKGdldFZhcignbW9kZScsICfphY3nva4nKSA9PSAn6YWN572uJykge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICfljrvph43pmaTnmb0nLFxcbiAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCdsYXN0Q2xlYW4nLCBjb25maWdBcnJheSk7XFxuICAgICAgICAgICAgICAgIG5ld0FycmF5ID0gW107XFxuICAgICAgICAgICAgICAgIG51bSA9IDA7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoY29uZmlnQXJyYXlbaV0udXJsLCAnMCcpICE9ICcxJyAmJiBjb25maWdBcnJheVtpXS51cmwgIT0gJ+epuuino+aekCcgJiYgY29uZmlnQXJyYXlbaV0udXJsICE9IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0FycmF5LnB1c2goY29uZmlnQXJyYXlbaV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihjb25maWdBcnJheVtpXS51cmwsICcxJyk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bSsrO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KG5ld0FycmF5KSk7XFxuICAgICAgICAgICAgICAgIEpTT04ucGFyc2UoZ2V0VmFyKCdsYXN0Q2xlYW4nLCAnW10nKSkuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKGl0ZW0udXJsKTtcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pys5qyh5Y676YeN5pWw6YeP5Li6XFxcXHRcXFxcdFxcXFx0XFxcIiArIG51bTtcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICfljaDkvY3nrKblpITnkIYnLFxcbiAgICAgICAgICAgIHVybDogJChbJ+a3u+WKoCcsICfljrvpmaQnXSwgMiwgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+a3u+WKoCcpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnQXJyYXlbaV0udXJsLm1hdGNoKC9cXFxcP3VybD0vKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpXS51cmwgPSBjb25maWdBcnJheVtpXS51cmwucmVwbGFjZSgnP3VybD0nLCAnP3BsYWNlaG9sZGVyPSZ1cmw9Jyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnQXJyYXlbaV0udXJsLm1hdGNoKC9cXFxcP3BsYWNlaG9sZGVyPSZ1cmw9LykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaV0udXJsID0gY29uZmlnQXJyYXlbaV0udXJsLnJlcGxhY2UoJz9wbGFjZWhvbGRlcj0mdXJsPScsICc/dXJsPScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WkhOeQhuaIkOWKn1xcXCI7XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgdGFnc0FycmF5ID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2Vfc2VsZWN0aW9uLmpzb24nKSk7XFxuICAgICAgICB0YWdzQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkucnVsZSgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfov5Tlm57liLfmlrDvvIzorrDlvpfngrnmiJHvvIHvvIHvvIEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2sodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liLfmlrDmiJDlip9+XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiaWc+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPua3uyDliqAg6KejIOaekDwvc3Bhbj48L2JpZz4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdzd2l0Y2gyJywgJ+WFsycpID09ICflvIAnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0oJ2FkZDInKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzd2l0Y2gyJywgJ+WFsycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQXJyYXkgPSBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfop6PmnpDlkI3np7DvvIzkuIDooYzkuIDkuKonLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogLTEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ25hbWVBcnJheScsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGQyJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6Kej5p6Q77yM5LiA6KGM5LiA5LiqJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCd1cmxBcnJheScsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGQyJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S/neWtmCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZUFycmF5ID0gZ2V0VmFyKCduYW1lQXJyYXknKS5zcGxpdCgvXFxcXHJcXFxcbnxcXFxcbnxcXFxcci8pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxBcnJheSA9IGdldFZhcigndXJsQXJyYXknKS5zcGxpdCgvXFxcXHJcXFxcbnxcXFxcbnxcXFxcci8pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gbmFtZUFycmF5Lmxlbmd0aCA+IHVybEFycmF5Lmxlbmd0aCA/IG5hbWVBcnJheS5sZW5ndGggOiB1cmxBcnJheS5sZW5ndGg7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlleGlOYW1lID0gaSA+IG5hbWVBcnJheS5sZW5ndGggLSAxID8gJ+acquWRveWQjScgOiAobmFtZUFycmF5W2ldID09ICcnID8gJ+acquWRveWQjScgOiBuYW1lQXJyYXlbaV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlleGlVcmwgPSBpID4gdXJsQXJyYXkubGVuZ3RoIC0gMSA/ICfnqbrop6PmnpAnIDogKHVybEFycmF5W2ldID09ICcnID8gJ+epuuino+aekCcgOiB1cmxBcnJheVtpXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheS51bnNoaWZ0KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBqaWV4aU5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBqaWV4aVVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzOiBpdGVtXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3N3aXRjaDInLCAn5YWzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L+d5a2Y5oiQ5YqfXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGQyJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRJdGVtQWZ0ZXIoJ2FkZEZ1bmN0aW9uMicsIGFkZEFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc3dpdGNoMicsICflvIAnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2ic3dpdGNo5Li6OicgKyBnZXRWYXIoJ3N3aXRjaDInLCAn5byAJylcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpdGVtKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn566A5Y2V44CB5peg5b+n44CB54us56uL55qE6Kej5p6Q566h55CG5bel5YW377yM5YW76ICB5LiT55SoJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkRnVuY3Rpb24yJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbCgndmFyIGNvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoJ3ZhciByZWc9LycgKyBpdGVtICsgJ3zlhajpg6gvOycpO1xcbiAgICAgICAgICAgICAgICAgICAgLy8g5b2T5YmN57q/6Lev55qE6Kej5p6Q5o6S5bqPXFxuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IDA7XFxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ0FycmF5W2ldLnRhZ3MgPT0gdW5kZWZpbmVkIHx8IGNvbmZpZ0FycmF5W2ldLnRhZ3MubWF0Y2gocmVnKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi08c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+JyArIGkgKyAnPC9zcGFuPi0nICsgY29uZmlnQXJyYXlbaV0ubmFtZSArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6Izk5Q0NGRlxcXCI+PHNtYWxsPiPlupTnlKg6JyArIGNvbmZpZ0FycmF5W2ldLnRhZ3MgKyAnPC9zbWFsbD48L3NwYW4+JyArIChjb25maWdBcnJheVtpXS5qcyAhPSB1bmRlZmluZWQgJiYgY29uZmlnQXJyYXlbaV0uanMgIT0gJycgPyAnPC9zbWFsbD48L3NwYW4+JyArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj48c21hbGw+I0pTPC9zbWFsbD48L3NwYW4+JyA6ICcnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGNvbmZpZ0FycmF5W2ldLnVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChbJ+e8lui+kScsICfnp7vkvY0nLCAn5Yig6ZmkJ10sIDMsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpP3J1bGU96YWN572u5Yqp5omLXFxcIikub3BfYmFzaWMoaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+azqOWFpUpTLOi+heWKqeWXheaOoicsIGpzOiAkLnRvU3RyaW5nKChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9qc0FkZF9QYWdlP3J1bGU96YWN572u5Yqp5omLJmluZGV4PScgKyBpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgrKztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfinpUnLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkKCcnLCAn6K+36L6T5YWl6ZyA6KaB6Kej5p6Q55qE5qCH6K+G77yM5q+U5aaC5Z+f5ZCNJykuaW5wdXQoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdGFnc0FycmF5ID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2Vfc2VsZWN0aW9uLmpzb24nKSk7XFxuICAgICAgICAgICAgICAgICAgICB0YWdzQXJyYXkucHVzaChpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJywgSlNPTi5zdHJpbmdpZnkodGFnc0FycmF5KSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mt7vliqDnur/ot6/miJDlip9+J1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KelicsXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgdGFnc0FycmF5ID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2Vfc2VsZWN0aW9uLmpzb24nKSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkKHRhZ3NBcnJheSwgMywgJ+ivt+mAieaLqeS9oOimgeWIoOmZpOeahOe6v+i3rycpLnNlbGVjdCgodGFnc0FycmF5KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uICh2YWwpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0gPT0gdmFsKSByZXR1cm4gaTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xcbiAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAodmFsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5pbmRleE9mKHZhbCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGxpY2UoaW5kZXgsIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICB0YWdzQXJyYXkucmVtb3ZlKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2Vfc2VsZWN0aW9uLmpzb24nLCBKU09OLnN0cmluZ2lmeSh0YWdzQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suenu+mZpOe6v+i3r34nXFxuICAgICAgICAgICAgICAgIH0sIHRhZ3NBcnJheSlcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBpZiAoY29uZmlnQXJyYXlbaV0udGFncyA9PSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaV0udGFncyA9ICflhajpg6gnXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPicgKyBpICsgJzwvc3Bhbj4tJyArIGNvbmZpZ0FycmF5W2ldLm5hbWUgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM5OUNDRkZcXFwiPjxzbWFsbD4j5bqU55SoOicgKyBjb25maWdBcnJheVtpXS50YWdzICsgKGNvbmZpZ0FycmF5W2ldLmpzICE9IHVuZGVmaW5lZCAmJiBjb25maWdBcnJheVtpXS5qcyAhPSAnJyA/ICc8L3NtYWxsPjwvc3Bhbj4nICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPjxzbWFsbD4jSlM8L3NtYWxsPjwvc3Bhbj4nIDogJycpLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBjb25maWdBcnJheVtpXS51cmwsXFxuICAgICAgICAgICAgICAgIHVybDogJChbJ+e8lui+kScsICfnp7vkvY0nLCAn5Yig6ZmkJ10sIDMsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGk/cnVsZT3phY3nva7liqnmiYtcXFwiKS5vcF9iYXNpYyhpKTtcXG4gICAgICAgICAgICAgICAgfSwgaSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+azqOWFpUpTLOi+heWKqeWXheaOoicsIGpzOiAkLnRvU3RyaW5nKChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2pzQWRkX1BhZ2U/cnVsZT3phY3nva7liqnmiYsmaW5kZXg9JyArIGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSksXFxuICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gZWxzZSBpZiAoZ2V0VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfmibnph4/lt6XlhbcnKSB7XFxuICAgICAgICBpZiAoZ2V0VmFyKCd0eXBlJywgJ+aJuemHj+WIoOmZpCcpID09ICfmibnph4/liKDpmaQnKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliKDpmaRcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgZ2V0VmFyKCdkZWxOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2RlbE51bScsICcwJykgPT0gJzAnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ivt+WFiOmAieaLqeimgeWIoOmZpOeahOino+aekO+8gSdcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkgPSBKU09OLnBhcnNlKGdldFZhcignZGVsQXJyYXknKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGRlbEFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0FycmF5ID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRlbEFycmF5LmluY2x1ZGVzKGkpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdBcnJheS5wdXNoKGNvbmZpZ0FycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShuZXdBcnJheSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbE51bSA9IGdldFZhcignZGVsTnVtJywgJzAnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignZGVsTnVtJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2RlbEFycmF5Jyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignaXNDaG9vc2UnICsgaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lhbHliKDpmaRcXFwiICsgZGVsTnVtICsgJ+adoeino+aekCc7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdkZWxCdG4nXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpbmRleCA9IDA7XFxuICAgICAgICAgICAgY29uZmlnQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUgKyAoY29uZmlnQXJyYXlbaW5kZXhdLmpzICE9IHVuZGVmaW5lZCAmJiBjb25maWdBcnJheVtpbmRleF0uanMgIT0gJycgPyAnPC9zbWFsbD48L3NwYW4+JyArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj48c21hbGw+I0pTPC9zbWFsbD48L3NwYW4+JyA6ICcnKSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0udXJsLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaW5kZXgsIGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ25vJykgPT0gJ3llcycpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGluZGV4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkgPSBKU09OLnBhcnNlKGdldFZhcignZGVsQXJyYXknLCAnW10nKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbE51bSA9IE51bWJlcihnZXRWYXIoJ2RlbE51bScsICcwJykpIC0gMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkucG9wKGluZGV4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdkZWxBcnJheScsIGRlbEFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdkZWxOdW0nLCBkZWxOdW0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdkZWxCdG4nLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIoOmZpFxcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRWYXIoJ2RlbE51bScsICcwJykgKyAnPC9zcGFuPlxcXFx0XFxcXHRcXFxcdOadoeino+aekCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignaXNDaG9vc2UnICsgaW5kZXgsICdubycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbEFycmF5ID0gSlNPTi5wYXJzZShnZXRWYXIoJ2RlbEFycmF5JywgJ1tdJykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxOdW0gPSBOdW1iZXIoZ2V0VmFyKCdkZWxOdW0nLCAnMCcpKSArIDE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbEFycmF5LnB1c2goaW5kZXgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coZGVsQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2RlbEFycmF5JywgZGVsQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2RlbE51bScsIGRlbE51bSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oaW5kZXggKyAnJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgaW5kZXggKyAnLScgKyBpdGVtLm5hbWUgKyAnPC9zcGFuPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdkZWxCdG4nLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIoOmZpFxcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRWYXIoJ2RlbE51bScsICcwJykgKyAnPC9zcGFuPlxcXFx0XFxcXHRcXFxcdOadoeino+aekCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignaXNDaG9vc2UnICsgaW5kZXgsICd5ZXMnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCwgaXRlbSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCArICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfms6jlhaVKUyzovoXliqnll4XmjqInLCBqczogJC50b1N0cmluZygoaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2pzQWRkX1BhZ2U/cnVsZT3phY3nva7liqnmiYsmaW5kZXg9JyArIGluZGV4O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGluZGV4Kys7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5YiG5LqrXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldFZhcignc2hhcmVOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSA9PSAnMCcpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6K+35YWI6YCJ5oup6KaB5YiG5Lqr55qE6Kej5p6Q77yBJ1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUFycmF5ID0gSlNPTi5wYXJzZShnZXRWYXIoJ3NoYXJlQXJyYXknKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKHNoYXJlQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVGaWxlID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hhcmVBcnJheS5pbmNsdWRlcyhpKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVGaWxlLnB1c2goY29uZmlnQXJyYXlbaV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3JldENvbnRlbnQgPSBiYXNlNjRFbmNvZGUoYmFzZTY0RW5jb2RlKEpTT04uc3RyaW5naWZ5KHNoYXJlRmlsZSkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3B5KFxcXCLliqnmiYvop6PmnpDlr7zlhaXlj6Pku6TCpcKlXFxcIiArIHNoYXJlUGFzdGUoc2VjcmV0Q29udGVudCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdzaGFyZU51bScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdzaGFyZUFycmF5Jyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignaXNDaG9vc2UnICsgaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liIbkuqvmiJDlip9cXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdzaGFyZUJ0bidcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGluZGV4ID0gMDtcXG4gICAgICAgICAgICBjb25maWdBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tJyArIGl0ZW0ubmFtZSArIChjb25maWdBcnJheVtpbmRleF0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2luZGV4XS5qcyAhPSAnJyA/ICc8L3NtYWxsPjwvc3Bhbj4nICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPjxzbWFsbD4jSlM8L3NtYWxsPjwvc3Bhbj4nIDogJycpLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogaXRlbS51cmwsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpbmRleCwgaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKSA9PSAneWVzJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coaW5kZXgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUFycmF5ID0gSlNPTi5wYXJzZShnZXRWYXIoJ3NoYXJlQXJyYXknLCAnW10nKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlTnVtID0gTnVtYmVyKGdldFZhcignc2hhcmVOdW0nLCAnMCcpKSAtIDE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkucG9wKGluZGV4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzaGFyZUFycmF5Jywgc2hhcmVBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc2hhcmVOdW0nLCBzaGFyZU51bSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oaW5kZXggKyAnJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tJyArIGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ3NoYXJlQnRuJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliIbkuqtcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgZ2V0VmFyKCdzaGFyZU51bScsICcwJykgKyAnPC9zcGFuPlxcXFx0XFxcXHRcXFxcdOadoeino+aekCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUFycmF5ID0gSlNPTi5wYXJzZShnZXRWYXIoJ3NoYXJlQXJyYXknLCAnW10nKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlTnVtID0gTnVtYmVyKGdldFZhcignc2hhcmVOdW0nLCAnMCcpKSArIDE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkucHVzaChpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhzaGFyZUFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzaGFyZUFycmF5Jywgc2hhcmVBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc2hhcmVOdW0nLCBzaGFyZU51bSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oaW5kZXggKyAnJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgaW5kZXggKyAnLScgKyBpdGVtLm5hbWUgKyAnPC9zcGFuPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdzaGFyZUJ0bicsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5YiG5LqrXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldFZhcignc2hhcmVOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ3llcycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIGluZGV4LCBpdGVtKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4ICsgJycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+azqOWFpUpTLOi+heWKqeWXheaOoicsIGpzOiAkLnRvU3RyaW5nKChpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvanNBZGRfUGFnZT9ydWxlPemFjee9ruWKqeaJiyZpbmRleD0nICsgaW5kZXg7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIGlmIChnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+ino+aekOa1i+ivlScpIHtcXG4gICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgIGluZGV4ID0gMDtcXG4gICAgICAgIGNvbmZpZ0FycmF5LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgamlleGkgPSBpdGVtLnVybDtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lICsgKGNvbmZpZ0FycmF5W2luZGV4XS5qcyAhPSB1bmRlZmluZWQgJiYgY29uZmlnQXJyYXlbaW5kZXhdLmpzICE9ICcnID8gJzwvc21hbGw+PC9zcGFuPicgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+PHNtYWxsPiNKUzwvc21hbGw+PC9zcGFuPicgOiAnJykgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcIiM2RUI4OTdcXFwiPjxzbWFsbD7inq7liY3lvoDmtYvor5U8L3NtYWxsPjwvZm9udD4nLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBpdGVtLnVybCxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkucnVsZSgoamlleGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn57yW6L6R5rWL6K+V6ZO+5o6lJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdlZGl0RmlsZTovL2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvY2VzaGkuanNvbicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflvLnluZU6JyArIGdldFZhcignZG1Td2l0Y2gnLCAn5YWzJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpID09ICflhbMnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2RtU3dpdGNoJywgJ+W8gCcpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdkbVN3aXRjaCcsICflhbMnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdkbVN3aXRjaCcsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5by55bmVOicgKyBnZXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdkbVN3aXRjaCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlc2hpRGF0YSA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+iFvuiur+inhumikSc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvMy8xMDZfM2EwZDIxMmUxN2NiOTVlMjMyZmZlMTU1NDYwMzg1Y2JfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vdi5xcS5jb20veC9jb3Zlci9temMwMDIwMHJtcGFmNDAvbjAwMzZsNHRudGMuaHRtbCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S8mOmFtyc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTYvOS8xMTBfOGZmMDZlMGMyMzc3NjBjZDU3ZDI1MDhmZDk4Yzg0MTRfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vdi55b3VrdS5jb20vdl9zaG93L2lkX1hORGMwTURFMU5UazFNZz09Lmh0bWwnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfniLHlpYfoibonOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzA5LzgvMTEwXzkwMWYyZWYzN2FmMmZlYTI1ZTVkOTY0OGY1NTFjZTMxX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwOi8vd3d3LmlxaXlpLmNvbS92XzJnYTh6dHM4NnlzLmh0bWwnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfoipLmnpxUVic6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvNi8xMTBfMTgzNGQyOTZhYTViNTY2NmE3ZDk0YjFlMzQ3OWFlNjRfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHA6Ly93d3cubWd0di5jb20vYi8zNDkyNTMvMTA0MjQzMDAuaHRtbCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+WTlOWTqeWTlOWTqSc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMjcvNC8xMTBfOGUyZTNkODhjNDUwMjViMzgwZTY5ODE3ZDZmYjUzYjFfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbS5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwNDI4OTkzJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5pCc54uQ6KeG6aKRJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS85LzExMF81MzJhNTFmODQzMWVmYzM3NzgwOGMxZmZmZjJkYTM2Zl9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tLnR2LnNvaHUuY29tL3Y3MzI5NDQxLnNodG1sJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+ilv+eTnOinhumikSc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMjcvNS8xMTBfYTg2MjY1ODgyZWQxOGM2MTkwNTY2ZTllYTI1Zjk2OThfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vd3d3Lml4aWd1YS5jb20vNjY5OTM1Njc5MjkwNTc5NDA1NSdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S5kOinhic6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvOC8yXzM1YjVkNDM3M2Y0YmNiYTI4ZjM5NDg2ZTRmMTE2NGQ5X2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20ubGUuY29tL3ZwbGF5Xzc2OTU0MzMzLmh0bWw/ZnJvbT1hamF4JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzE5MDUnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE4LzQvMTEwXzVmMjRiMTA1MmZlZDRmN2ZjNzM1OTNhOGVmMjcyNzZkX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3ZpcC4xOTA1LmNvbS9tL3BsYXkvMTQyOTcyNS5zaHRtbCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+mjjuihjOinhumikSc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTYvNC8xMTBfNmY2YWY5Zjk5YjI2MjllNTFmMGIwYTMzY2RmZjFkOWVfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHA6Ly9tLmZ1bi50di9tcGxheS8/bWlkPTk1NzE5J1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFBUVuinhumikSc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMjgvNS8xMTBfYTQ1NWIyOTUxMjI3MDQwZWU2Mjk1NWVkY2ZiODlkNzJfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vdi5wcHR2LmNvbS9zaG93L3pWbjNkSlh0MXhWNDlsNC5odG1sJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6b6Z6IW+Jzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzQucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ0xULTFlYzNmNjc1NGY2ODU4NmVkN2Y5MmMzZTk5NWNmY2E2J1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5Lq65Lq66L+3Jzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzYucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3JlbnJlbm1pLWFiOTI0ZTExZDJkNjkzOTcnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkupTmr5InOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3d1ZHV5dW4tMTY0OTQzMTMwNzAyMSdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+WkmuWkmic6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS80OS5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tM3U4LmNhY2hlLnN1b3lvLmNjL20zdTgvMjAyMjAzLzgvYWFhYmQ5MmRhMjY3NzRjNjg4NTBhMDIzMTUzYzgwZjFhZTZmYTliZS5tM3U4J1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6J6N5YW0Jzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzgwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdSb25nWGluZ1ZSLTQyMTU2NDU1ODE5MzInXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfpm6rkuronOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS8xMzMucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3h1ZXJlbi0xNjQ2ODIzMDcyJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5peL6aOO5LqRJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzU0LnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd4ZnktNTI5ZTY0NTc5NTNkNTQ1ZidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+eRnuS4sOi1hOa6kCc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS83Mi5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly8xLnJ1aWZlbmdsYi5jb20vcGxheS8xNjQ0OTE0NTk1Lm0zdTgnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY2VzaGlEYXRhKSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBjZXNoaURhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvY2VzaGkuanNvbicpKTtcXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gY2VzaGlEYXRhKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3AsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogY2VzaGlEYXRhW3Byb3BdLnBpYyArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJycpLmxhenlSdWxlKChjZXNoaURhdGEsIHByb3AsIGppZXhpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXBVcmwgPSBjZXNoaURhdGFbcHJvcF0udXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJscyA9IFtcXFwidmlkZW86Ly9cXFwiICsgamlleGkgKyB2aXBVcmxdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBbJ+a1i+ivlSddXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdkbVN3aXRjaCcsICflhbMnKSA9PSAn5byAJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsgamlleGkgKyB2aXBVcmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsgamlleGkgKyB2aXBVcmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNlc2hpRGF0YSwgcHJvcCwgamlleGkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fNCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmtYvor5UnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfkvaDov5jlj6/ku6Xku7vmhI/ovpPlhaXkuIDkuKrop4bpopHlnLDlnYDmtYvor5XlvZPliY3op6PmnpB+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKGppZXhpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcFVybCA9IGdldFZhcignY2VzaGlMaW5rJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHMgPSBbXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBbJ+a1i+ivlSddXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpID09ICflvIAnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ2aWRlbzovL1xcXCIgKyBqaWV4aSArIHZpcFVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGppZXhpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignY2VzaGlMaW5rJyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+WIoOmZpOivpeino+aekCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ivt+iupOecn+iAg+iZkX4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGppZXhpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gKHZhbCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0udXJsID09IHZhbCkgcmV0dXJuIGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAodmFsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmluZGV4T2YodmFsKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGxpY2UoaW5kZXgsIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXkucmVtb3ZlKGppZXhpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5YWz6Zet6aG16Z2i5bm25Yi35paw5YmN5LiA5Liq6aG16Z2iXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2sodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liKDpmaTmiJDlip9+XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBqaWV4aSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRIb21lUmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICB9LCBqaWV4aSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+azqOWFpUpTLOi+heWKqeWXheaOoicsIGpzOiAkLnRvU3RyaW5nKChpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9qc0FkZF9QYWdlP3J1bGU96YWN572u5Yqp5omLJmluZGV4PScgKyBpbmRleDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCksXFxuICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaW5kZXgrKztcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIC8vIOato+W4uOWkh+S7veKAlOKAlOiLpeaJp+ihjOWIsOatpOmDveaXoOW8guW4uOWHuueOsOeahOivne+8gVxcbiAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9iYWNrLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcbiAgICBsb2coJ+aWh+S7tuaXoOW8guW4uO+8jOWkh+S7veaIkOWKn34nKTtcXG59IGNhdGNoIChlKSB7XFxuICAgIGxvZygn5paH5Lu25byC5bi477yM6K+35oGi5aSNficpO1xcbiAgICAvLyDlvILluLjkuI3lpIfku73vvIzor7fmgaLlpI1cXG4gICAgc2hvd0xvYWRpbmcoJ+mFjee9ruaWh+S7tuW8guW4uO+8ge+8ge+8gScpO1xcbiAgICB2YXIgZCA9IFtdO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmgaLlpI3lpIfku70nLFxcbiAgICAgICAgZGVzYzogJ+WmguaenOWboOS4uuS4gOS6m+mUmeivr++8jOaVsOaNruWPkeeUn+S6huaNn+Wdj+S6huWPr+S7peWwneivleaBouWkjX4nLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBmaWxlUGF0aCA9ICdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2VfYmFjay5qc29uJztcXG4gICAgICAgICAgICBpZiAoZmlsZUV4aXN0KGZpbGVQYXRoKSkge1xcbiAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoZmlsZVBhdGgpO1xcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5oGi5aSN5oiQ5YqfXFxcIjtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBzaG93TG9hZGluZygn5oCO5LmI5aSH5Lu95Lmf5Z2P5LqG5ZWK77yM57uZ5L2g6YeN572u5ZCn77yBJyk7XFxuICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5ID0gW107XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgICAgICAgICAgICAgIHRhZ3NBcnJheSA9IFsncXEnLCAnbWd0dicsICdiaWxpJywgJ3FpeWknLCAneW91a3UnXTtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicsIEpTT04uc3RyaW5naWZ5KHRhZ3NBcnJheSkpO1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAn5byAJyk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6YeN572u5oiQ5YqfXFxcIjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxuICAgIHNldFJlc3VsdChkKTtcXG59XFxuc2V0UmVzdWx0KGQpO1xcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6LCD55So6Lev55SxXCIsXCJwYXRoXCI6XCJtdWxQYXJzZVwiLFwicnVsZVwiOlwiLypcXG4gdmlwVXJsOuWumOe9keWcsOWdgDvov5Tlm57lgLxKU09O5qC85byP55qE5aSa57q/6Lev6KeG6aKR5Zyw5Z2AXFxu6LCD55So5o6l5Y+j77yaJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcbiAqL1xcbiQuZXhwb3J0cy5tdWxQYXJzZSA9IGZ1bmN0aW9uICh2aXBVcmwsIGJmTGluaywgamlleGlOYW1lLGhlYWRlcnMpIHtcXG4gICAgaWYgKHZpcFVybC5pbmRleE9mKCdkb3ViYW4nKSAhPSAtMSkge1xcbiAgICAgICAgdmlwVXJsID0gdmlwVXJsLnNwbGl0KCc/cHRhZz0nKVswXVxcbiAgICB9XFxuICAgIGxvZygn6KeG6aKR5Y6f5Zyw5Z2A77yaJyArIHZpcFVybCk7XFxuICAgIHZhciBleHRyYV9sZW5ndGggPSAwO1xcbiAgICBpZiAoYmZMaW5rICYmIGppZXhpTmFtZSkge1xcbiAgICAgICAgdmFyIHVybHMgPSBiZkxpbms7XFxuICAgICAgICB2YXIgbmFtZXMgPSBqaWV4aU5hbWU7XFxuICAgICAgICBpZiAoaGVhZGVycykge1xcbiAgICAgICAgICAgIHZhciBoZWFkZXJzPWhlYWRlcnM7XFxuICAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgICB2YXIgaGVhZGVycz1bXTtcXG4gICAgICAgIH1cXG4gICAgICAgIGV4dHJhX2xlbmd0aCA9IGJmTGluay5sZW5ndGg7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICB2YXIgdXJscyA9IFtdO1xcbiAgICAgICAgdmFyIG5hbWVzID0gW107XFxuICAgICAgICB2YXIgaGVhZGVycz1bXTtcXG4gICAgfVxcbiAgICBsb2coXFxcIuWkmue6v+i3r+ino+aekOW8gOWni1xcXCIpXFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShyZWFkRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFwiKSk7XFxuICAgIHZhciB0YWdzQXJyYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicpKTtcXG4gICAgdGFnc0FycmF5LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICBldmFsKCd2YXIgcmVnMT0vJyArIGl0ZW0gKyAnLzsnKTtcXG4gICAgICAgIGV2YWwoJ3ZhciByZWcyPS8nICsgaXRlbSArICd85YWo6YOoLzsnKTtcXG4gICAgICAgIGlmICh2aXBVcmwubWF0Y2gocmVnMSkpIHtcXG4gICAgICAgICAgICBsb2coJ+W9k+WJjee6v+i3rzonICsgaXRlbSlcXG4gICAgICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnRhZ3MgPT0gdW5kZWZpbmVkIHx8IGl0ZW0udGFncy5tYXRjaChyZWcyKSkge1xcbiAgICAgICAgICAgICAgICAgICAgdXJscy5wdXNoKFxcXCJ2aWRlbzovL1xcXCIgKyBpdGVtLnVybCArIHZpcFVybCk7XFxuICAgICAgICAgICAgICAgICAgICBuYW1lcy5wdXNoKGl0ZW0ubmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLnB1c2goe30pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICBpZiAodXJscy5sZW5ndGggPT0gMCB8fCB1cmxzLmxlbmd0aCA9PSBleHRyYV9sZW5ndGgpIHtcXG4gICAgICAgIGxvZygn5b2T5YmN57q/6LevOm90aGVyJylcXG4gICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICB1cmxzLnB1c2goXFxcInZpZGVvOi8vXFxcIiArIGl0ZW0udXJsICsgdmlwVXJsKTtcXG4gICAgICAgICAgICBuYW1lcy5wdXNoKGl0ZW0ubmFtZSk7XFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBsb2coYOW9k+WJjeWQr+eUqOino+aekO+8miR7dXJscy5sZW5ndGh95LiqYClcXG4gICAgdmFyIGRtU3dpdGNoID0gcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKTtcXG4gICAgdmFyIHMgPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JveFN3aXRjaC50eHQnKVxcbiAgICBpZiAocyA9PSBcXFwi5byAXFxcIikge1xcbiAgICAgICAgdmFyIHUgPSBbXVxcbiAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIHUucHVzaCh7XFxuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiBpdGVtLnVybCArIHZpcFVybFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KTtcXG4gICAgICAgIHJlcXVpcmUoXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS9Kb2UvVFZib3guanNcXFwiKVxcbiAgICAgICAgcmV0dXJuIOaOqOmAgXR2Ym94KHtcXG4gICAgICAgICAgICBuYW1lOiBcXFwi6YWN572u5Yqp5omL5o6o6YCBXFxcIixcXG4gICAgICAgICAgICB2b2Q6IFt7XFxuICAgICAgICAgICAgICAgIC8vbmFtZTogXFxcIum7mOiupFxcXCIsXFxuICAgICAgICAgICAgICAgIHVybHM6IHVcXG4gICAgICAgICAgICB9XVxcbiAgICAgICAgfSlcXG4gICAgfSBlbHNlIGlmIChkbVN3aXRjaCA9PSAndHJ1ZScpIHtcXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgdXJsczogdXJscyxcXG4gICAgICAgICAgICBuYW1lczogbmFtZXMsXFxuICAgICAgICAgICAgaGVhZGVyczpoZWFkZXJzXFxuICAgICAgICB9KTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgdXJsczogdXJscyxcXG4gICAgICAgICAgICBuYW1lczogbmFtZXMsXFxuICAgICAgICAgICAgaGVhZGVyczpoZWFkZXJzXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaWreaPkuaPkuS7tlwiLFwicGF0aFwiOlwiZHVhblwiLFwicnVsZVwiOlwiZnVuY3Rpb24gYXl0bVBhcnNlKHZpcFVybCkge1xcclxcbiAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcclxcbn1cXHJcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIkpT5rOo5YWlXCIsXCJwYXRoXCI6XCJqc0FkZF9QYWdlXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmluZGV4ID0gZ2V0UGFyYW0oJ2luZGV4Jyk7XFxudmFyIGNvbmZpZ0FycmF5ID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvblxcXCIpKTtcXG5zaG93Q29udGVudD1jb25maWdBcnJheVtpbmRleF0uanMhPXVuZGVmaW5lZD9jb25maWdBcnJheVtpbmRleF0uanM6JydcXG5kLnB1c2goe1xcbiAgICBkZXNjOiAn6L6T5YWl5q2j56Gu5qC85byP5YaF5a65JyxcXG4gICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBzaG93Q29udGVudCxcXG4gICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICBoZWlnaHQ6IC0xLFxcbiAgICAgICAgaGlnaGxpZ2h0OiB0cnVlLFxcbiAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ2pzQWRkJyxpbnB1dClcXFwiLFxcbiAgICAgICAgaWQ6ICdqc0FkZCdcXG4gICAgfVxcbn0sIHtcXG4gICAgdGl0bGU6ICfigJjigJjigJnigJk8c21hbGw+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPjHjgIHnm7TmjqXkuablhpnpgILnlKjkuo54NeeVjOmdoueahGpz5Luj56CB5Y2z5Y+vPGJyPjLjgIHkuKTnp43mlrnlvI866YeN5a6a5ZCR5pKt5pS+6ZO+5o6l5ZKM6L+U5Zue5pKt5pS+6ZO+5o6l5Lik56eN5b2i5byPPGJyPjPjgIHlhbfkvZPlj4Lop4HluK7liqnmlofmoaMnLFxcbiAgICBkZXNjOifigJjigJjigJnigJk8YmlnPjxiaWc+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiMyOThBMDhcXFwiPuS/nSDlrZgnLFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoaW5kZXgpID0+IHtcXG4gICAgICAgIGpzQWRkID0gZ2V0VmFyKCdqc0FkZCcpO1xcbiAgICAgICAgdmFyIGNvbmZpZ0FycmF5ID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvblxcXCIpKTtcXG4gICAgICAgIGNvbmZpZ0FycmF5W2luZGV4XS5qcz1qc0FkZDtcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgICAgICBiYWNrKHRydWUpO1xcbiAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3suS/neWtmOS/ruaUuVxcXCJcXG4gICAgfSxpbmRleCksXFxuICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG59KTtcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlh73mlbBcIixcInBhdGhcIjpcImFwaVwiLFwicnVsZVwiOlwiJC5leHBvcnRzLm9wX2Jhc2ljID0gZnVuY3Rpb24gKGkpIHtcXHJcXG4gICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcclxcbiAgICBldmFsKCd2YXIgY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcclxcbiAgICBpZiAoY29uZmlnQXJyYXlbaV0udGFncyA9PSB1bmRlZmluZWQpIHtcXHJcXG4gICAgICAgIGNvbmZpZ0FycmF5W2ldLnRhZ3MgPSAn5YWo6YOoJ1xcclxcbiAgICB9XFxyXFxuICAgIGlmIChpbnB1dCA9PSAn57yW6L6RJykge1xcclxcbiAgICAgICAgY29uZmlnID0gY29uZmlnQXJyYXlbaV0ubmFtZSArICcsJyArIGNvbmZpZ0FycmF5W2ldLnVybCArICcjIyMnICsgY29uZmlnQXJyYXlbaV0udGFncztcXHJcXG4gICAgICAgIHJldHVybiAkKGNvbmZpZykuaW5wdXQoKGksIGNvbmZpZ0FycmF5KSA9PiB7XFxyXFxuICAgICAgICAgICAgaXRlbSA9IHtcXHJcXG4gICAgICAgICAgICAgICAgbmFtZTogaW5wdXQuc3BsaXQoLyx877yMLylbMF0sXFxyXFxuICAgICAgICAgICAgICAgIHVybDogaW5wdXQuc3BsaXQoLyMjIy8pWzBdLnNwbGl0KC8sfO+8jC8pWzFdLFxcclxcbiAgICAgICAgICAgICAgICB0YWdzOiBpbnB1dC5zcGxpdCgvIyMjLylbMV0sXFxyXFxuICAgICAgICAgICAgICAgIGpzOiBjb25maWdBcnJheVtpXS5qc1xcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICBjb25maWdBcnJheS5zcGxpY2UoaSwgMSwgaXRlbSk7XFxyXFxuICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXHJcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxyXFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+abtOaWsOaIkOWKn1xcXCJcXHJcXG4gICAgICAgIH0sIGksIGNvbmZpZ0FycmF5KVxcclxcbiAgICB9IGVsc2UgaWYgKGlucHV0ID09ICfnp7vkvY0nKSB7XFxyXFxuICAgICAgICByZXR1cm4gJCgnMCcsICfkvaDmg7PmjpLnrKzlh6DvvJ/luo/lj7fku44w5byA5aeLficpLmlucHV0KChpLCBjb25maWdBcnJheSkgPT4ge1xcclxcbiAgICAgICAgICAgIGlmIChpbnB1dCA+IGNvbmZpZ0FycmF5Lmxlbmd0aCAtIDEpIHtcXHJcXG4gICAgICAgICAgICAgICAgaW5wdXQgPSBjb25maWdBcnJheS5sZW5ndGggLSAxO1xcclxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPCAwKSB7XFxyXFxuICAgICAgICAgICAgICAgIGlucHV0ID0gMDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgdGVtcCA9IGNvbmZpZ0FycmF5W2ldO1xcclxcbiAgICAgICAgICAgIGlmIChpID4gaW5wdXQpIHtcXHJcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBpOyBpbmRleCA+IGlucHV0OyBpbmRleC0tKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpbmRleF0gPSBjb25maWdBcnJheVtpbmRleCAtIDFdO1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBpOyBpbmRleCA8IGlucHV0OyBpbmRleCsrKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpbmRleF0gPSBjb25maWdBcnJheVtpbmRleCArIDFdO1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIGNvbmZpZ0FycmF5W2lucHV0XSA9IHRlbXA7XFxyXFxuICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXHJcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxyXFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+enu+S9jeaIkOWKn1xcXCJcXHJcXG4gICAgICAgIH0sIGksIGNvbmZpZ0FycmF5KVxcclxcbiAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgY29uZmlnQXJyYXkuc3BsaWNlKGksIDEpO1xcclxcbiAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXHJcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXHJcXG4gICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liKDpmaTmiJDlip9cXFwiXFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXFxyXFxuJC5leHBvcnRzLmRtU2V0dGluZ3MgPSBmdW5jdGlvbiAodGFnKSB7XFxyXFxuICAgIHN3aXRjaCAodGFnKSB7XFxyXFxuICAgICAgICAvLyDlh73mlbDliIfmjaJcXHJcXG4gICAgICAgIGNhc2UgMDpcXHJcXG4gICAgICAgICAgICBvcHRpb25zID0gWyflt6blsrjlrpjlvLknLCAnZmPlrpjlvLknLCAn5LiJ5pa55om26aOOJ107XFxyXFxuICAgICAgICAgICAgcmV0dXJuICQob3B0aW9ucywgMSkuc2VsZWN0KCgpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgY3VyU2V0dGluZ3MgPSBKU09OLnBhcnNlKHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nKSk7XFxyXFxuICAgICAgICAgICAgICAgIGN1clNldHRpbmdzLmRtRnJvbSA9IGlucHV0O1xcclxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJywgSlNPTi5zdHJpbmdpZnkoY3VyU2V0dGluZ3MpKTtcXHJcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIh+aNouadpea6kOS4ujpcXFwiICsgaW5wdXQ7XFxyXFxuICAgICAgICAgICAgfSlcXHJcXG4gICAgICAgICAgICBicmVhaztcXHJcXG5cXHJcXG4gICAgICAgIC8vIOabtOaUueWHveaVsOS9nOeUqOWfn1xcclxcbiAgICAgICAgY2FzZSAxOlxcclxcbiAgICAgICAgICAgIG9wdGlvbnMgPSBbJ2dsb2JhbCcsICdvdGhlciddO1xcclxcbiAgICAgICAgICAgIHJldHVybiAkKG9wdGlvbnMsIDEpLnNlbGVjdCgoKSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgIGN1clNldHRpbmdzID0gSlNPTi5wYXJzZShyZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJykpO1xcclxcbiAgICAgICAgICAgICAgICBjdXJTZXR0aW5ncy5kbVNjb3BlID0gaW5wdXQ7XFxyXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nLCBKU09OLnN0cmluZ2lmeShjdXJTZXR0aW5ncykpO1xcclxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiH5o2i5L2c55So5Z+f5Li6OlxcXCIgKyBpbnB1dDtcXHJcXG4gICAgICAgICAgICB9KVxcclxcbiAgICAgICAgICAgIGJyZWFrO1xcclxcbiAgICAgICAgY2FzZSAyOlxcclxcbiAgICAgICAgICAgIGZvbnRTaXplID0gSlNPTi5wYXJzZShyZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJykpLmZvbnRTaXplO1xcclxcbiAgICAgICAgICAgIHJldHVybiAkKGZvbnRTaXplLCAn6K+36L6T5YWl5LiA5Liq5ZCI6YCC55qE5pWw5a2XJykuaW5wdXQoKCkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICBjdXJTZXR0aW5ncyA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicpKTtcXHJcXG4gICAgICAgICAgICAgICAgY3VyU2V0dGluZ3MuZm9udFNpemUgPSBpbnB1dDtcXHJcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicsIEpTT04uc3RyaW5naWZ5KGN1clNldHRpbmdzKSk7XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lvLnluZXlpKflsI/lt7Lkv67mlLnkuLpcXFwiICsgaW5wdXQ7XFxyXFxuICAgICAgICAgICAgfSlcXHJcXG4gICAgICAgICAgICBicmVhazsgICAgXFxyXFxuICAgICAgICBkZWZhdWx0OlxcclxcbiAgICAgICAgICAgIGJyZWFrO1xcclxcbiAgICB9XFxyXFxufVxcclxcblwifV0iLCJpY29uIjoiaHR0cHM6Ly9jZG40Lmljb25maW5kZXIuY29tL2RhdGEvaWNvbnMvbWFjYXJvbi0xLzQ4L3ByZWZlcmVuY2VzLXN5c3RlbS0xMjgucG5nIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment