xiaomianao666

小程序:配置助手

Aug 21st, 2024
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@配置助手@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi6YWN572u5Yqp5omLIiwiYXV0aG9yIjoiY3kmSm9lIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjIiwidmVyc2lvbiI6MjYsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidG9vbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9ob21lJykpLnJ1bGUpOyIsInNlYXJjaF91cmwiOiIiLCJncm91cCI6IuS+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/liIfmjaLmiJDlip9cXFwiXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICflr7zlhaXovoXliqknLFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaHR0cHM6Ly9uZXRjdXQudHh0YmluLmNuL2FwaS9ub3RlMi9pbmZvP25vdGVfaWQ9YTVkMWM4ZTFlY2VlMjhkM1xcXCIpKS5kYXRhO1xcbiAgICAgICAgICAgIGNvbnRlbnQgPSBkYXRhLm5vdGVfY29udGVudDtcXG4gICAgICAgICAgICB1cERhdGEgPSBkYXRhLnVwZGF0ZWRfdGltZTtcXG4gICAgICAgICAgICBwdXRWYXIoJ2NvbnRlbnQnLCBjb250ZW50KTtcXG4gICAgICAgICAgICBjb25maXJtKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmmK/lkKblr7zlhaUnLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAn6ISa5pys5pu05paw5pel5pyfXFxcXG4nICsgdXBEYXRhLFxcbiAgICAgICAgICAgICAgICBjb25maXJtOiAoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0VmFyKCdjb250ZW50Jyk7XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIGNhbmNlbDogKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWPlua2iOWvvOWFpSc7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfop6PmnpDmqKHmnb8nLFxcbiAgICAgICAgdXJsOiBgY29weTovL+S/ruaUueKYhemtlOaWremAmueUqOaooeadv+KYhVxcbmZ1bmN0aW9uICh2aXBVcmwpIHtcXG4gICAgLy8g5q2j5bi46LCD55SoLeW8ueW5leW8gOWFs+WcqOmFjee9ruWKqeaJi+mHjOiHquihjOiuvue9ruaYr+WQpuWQr+eUqFxcbiAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcbiAgICAvKuWFjeWXhemmluWPkeaooeW8j1xcbiAgICDlpoLmnpzmg7PopoHlrp7njrDnsbvkvLzprZTmlq3nmoTll4XmjqLkvJjlhYjvvJrlhY3ll4XliqB4NeOAgUpzb27lpJrnur/ot6/nmoTlvaLlvI/vvIzlj4LogIPms6jph4rnmoTnpLrkvovku6PnoIHmt7vliqDlhY3ll4Xku6PnoIHvvIjlj6rmmK/npLrkvovlubbkuI3lj6/nlKjvvInvvIzlubblnKjmnIDnu4jov5Tlm57nmoTml7blgJnpobrluo/lpJrkvKDlhaXkuKTkuKrlj4LmlbDvvJrkuIDkuKrmmK/lhY3ll4XlvpfliLDnmoTmkq3mlL7lnLDlnYDvvIzkuIDkuKrmmK/ov5nkuKrop6PmnpDmiJbnur/ot6/nmoTlkI3lrZdcXG4gICAgdmFyIHBhcnNlID0gXFxcImh0dHBzOi8vcGxheWVyLmR4eXkuY2YvV25kZXh4WC5waHA/dXJsPVxcXCI7XFxuICAgIGJmdXJsID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpP3J1bGU9QVBJ55uS5a2QXFxcIikucGFyc2VMTFEocGFyc2UsIHZpcFVybCk7XFxuICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm11bFBhcnNlKHZpcFVybCwgYmZ1cmwsICdsbHEnKSArIFxcXCI7e1VzZXItQWdlbnRAJiZSZWZlcmVyQH1cXFwiO1xcbiAgICAqL1xcbn1gLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+a6kOeggee8lui+kScsXFxuICAgICAgICB1cmw6IFxcXCJlZGl0RmlsZTovL2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICflr7zlh7rphY3nva4nLFxcbiAgICAgICAgdXJsOiAnc2hhcmU6Ly9oaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn5LqR5p2/5YiG5LqrJyxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICBzZWNyZXRDb250ZW50ID0gYmFzZTY0RW5jb2RlKGJhc2U2NEVuY29kZShzZXRGaWxlKSk7XFxuICAgICAgICAgICAgY29weShcXFwi5Yqp5omL6Kej5p6Q5a+85YWl5Y+j5LukwqXCpVxcXCIgKyBzaGFyZVBhc3RlKHNlY3JldENvbnRlbnQpKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn5LqR5p2/5a+85YWlJyxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiAkKCcnLCAn5aKe6YeP5a+85YWl77yM6K+35pS+5b+DJykuaW5wdXQoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQubWF0Y2goL+WKqeaJi+ino+aekOWvvOWFpeWPo+S7pMKlwqUvKSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGluayA9IGlucHV0LnNwbGl0KCfCpcKlJylbMV07XFxuICAgICAgICAgICAgICAgICAgICBzZWNyZXRDb250ZW50ID0gcGFyc2VQYXN0ZShsaW5rKTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoJ3JlbW90ZVNldEZpbGU9JyArIGJhc2U2NERlY29kZShiYXNlNjREZWNvZGUoc2VjcmV0Q29udGVudCkpKTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKSk7XFxuICAgICAgICAgICAgICAgICAgICBuZXdBcnJheSA9IGNvbmZpZ0FycmF5LmNvbmNhdChyZW1vdGVTZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KG5ld0FycmF5KSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lr7zlhaXmiJDlip9cXFwiXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Y+j5Luk6ZSZ6K+vXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+mFjee9ricgPyAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9cmVkPumFjee9rjwvZm9udD4nIDogJ+mFjee9ricsXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoJ21vZGUnLCAn6YWN572uJyk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfmibnph4/lt6XlhbcnID8gJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPXJlZD7mibnph4/lt6Xlhbc8L2ZvbnQ+JyA6ICfmibnph4/lt6XlhbcnLFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICQoWyfliKDpmaQnLCAn5YiG5LqrJ10sIDIsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ21vZGUnLCAn5om56YeP5bel5YW3Jyk7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5Yig6ZmkJykge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCd0eXBlJywgJ+aJuemHj+WIoOmZpCcpO1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2RlbE51bScpO1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2RlbEFycmF5Jyk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3R5cGUnLCAn5om56YeP5YiG5LqrJyk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignc2hhcmVOdW0nKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdzaGFyZUFycmF5Jyk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdpc0Nob29zZScgKyBpKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+ino+aekOa1i+ivlScgPyAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9cmVkPuino+aekOa1i+ivlTwvZm9udD4nIDogJ+ino+aekOa1i+ivlScsXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoJ21vZGUnLCAn6Kej5p6Q5rWL6K+VJyk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKSA9PSAndHJ1ZScgPyAn5by55bmVOuW8gCcgOiAn5by55bmVOuWFsycsXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB2YXIgZG1Td2l0Y2ggPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpO1xcbiAgICAgICAgICAgIGlmIChkbVN3aXRjaCA9PSAndHJ1ZScpIHtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JywgJ2ZhbHNlJyk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JywgJ3RydWUnKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+W8ueW5leadpea6kCcsIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9hcGk/cnVsZT3phY3nva7liqnmiYsnKS5kbVNldHRpbmdzKDApO1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICflh73mlbDkvZznlKjln58nLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvYXBpP3J1bGU96YWN572u5Yqp5omLJykuZG1TZXR0aW5ncygxKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5by55bmV5aSn5bCPJywganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPemFjee9ruWKqeaJiycpLmRtU2V0dGluZ3MoMik7XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfV1cXG4gICAgICAgIH1cXG4gICAgfSk7XFxuXFxuICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICBpZiAoZ2V0VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfphY3nva4nKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WOu+mHjemZpOeZvScsXFxuICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ2xhc3RDbGVhbicsIGNvbmZpZ0FycmF5KTtcXG4gICAgICAgICAgICAgICAgbmV3QXJyYXkgPSBbXTtcXG4gICAgICAgICAgICAgICAgbnVtID0gMDtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcihjb25maWdBcnJheVtpXS51cmwsICcwJykgIT0gJzEnICYmIGNvbmZpZ0FycmF5W2ldLnVybCAhPSAn56m66Kej5p6QJyAmJiBjb25maWdBcnJheVtpXS51cmwgIT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkucHVzaChjb25maWdBcnJheVtpXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKGNvbmZpZ0FycmF5W2ldLnVybCwgJzEnKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtKys7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkobmV3QXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgSlNPTi5wYXJzZShnZXRWYXIoJ2xhc3RDbGVhbicsICdbXScpKS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoaXRlbS51cmwpO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mnKzmrKHljrvph43mlbDph4/kuLpcXFxcdFxcXFx0XFxcXHRcXFwiICsgbnVtO1xcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WNoOS9jeespuWkhOeQhicsXFxuICAgICAgICAgICAgdXJsOiAkKFsn5re75YqgJywgJ+WOu+mZpCddLCAyLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5re75YqgJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS51cmwubWF0Y2goL1xcXFw/dXJsPS8pKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2ldLnVybCA9IGNvbmZpZ0FycmF5W2ldLnVybC5yZXBsYWNlKCc/dXJsPScsICc/cGxhY2Vob2xkZXI9JnVybD0nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS51cmwubWF0Y2goL1xcXFw/cGxhY2Vob2xkZXI9JnVybD0vKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpXS51cmwgPSBjb25maWdBcnJheVtpXS51cmwucmVwbGFjZSgnP3BsYWNlaG9sZGVyPSZ1cmw9JywgJz91cmw9Jyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5aSE55CG5oiQ5YqfXFxcIjtcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICB0YWdzQXJyYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicpKTtcXG4gICAgICAgIHRhZ3NBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5ydWxlKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+i/lOWbnuWIt+aWsO+8jOiusOW+l+eCueaIke+8ge+8ge+8gScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjayh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIt+aWsOaIkOWKn35cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+5re7IOWKoCDop6Mg5p6QPC9zcGFuPjwvYmlnPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3N3aXRjaDInLCAn5YWzJykgPT0gJ+W8gCcpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbSgnYWRkMicpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3N3aXRjaDInLCAn5YWzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRBcnJheSA9IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ino+aekOWQjeensO+8jOS4gOihjOS4gOS4qicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0OiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignbmFtZUFycmF5JyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZDInXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfop6PmnpDvvIzkuIDooYzkuIDkuKonLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogLTEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ3VybEFycmF5JyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZDInXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5L+d5a2YJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lQXJyYXkgPSBnZXRWYXIoJ25hbWVBcnJheScpLnNwbGl0KC9cXFxcclxcXFxufFxcXFxufFxcXFxyLyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybEFycmF5ID0gZ2V0VmFyKCd1cmxBcnJheScpLnNwbGl0KC9cXFxcclxcXFxufFxcXFxufFxcXFxyLyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMZW5ndGggPSBuYW1lQXJyYXkubGVuZ3RoID4gdXJsQXJyYXkubGVuZ3RoID8gbmFtZUFycmF5Lmxlbmd0aCA6IHVybEFycmF5Lmxlbmd0aDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaWV4aU5hbWUgPSBpID4gbmFtZUFycmF5Lmxlbmd0aCAtIDEgPyAn5pyq5ZG95ZCNJyA6IChuYW1lQXJyYXlbaV0gPT0gJycgPyAn5pyq5ZG95ZCNJyA6IG5hbWVBcnJheVtpXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaWV4aVVybCA9IGkgPiB1cmxBcnJheS5sZW5ndGggLSAxID8gJ+epuuino+aekCcgOiAodXJsQXJyYXlbaV0gPT0gJycgPyAn56m66Kej5p6QJyA6IHVybEFycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5LnVuc2hpZnQoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGppZXhpTmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGppZXhpVXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3M6IGl0ZW1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc3dpdGNoMicsICflhbMnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kv53lrZjmiJDlip9cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXRlbSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZDInXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcignYWRkRnVuY3Rpb24yJywgYWRkQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzd2l0Y2gyJywgJ+W8gCcpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaJzd2l0Y2jkuLo6JyArIGdldFZhcignc3dpdGNoMicsICflvIAnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfnroDljZXjgIHml6Dlv6fjgIHni6znq4vnmoTop6PmnpDnrqHnkIblt6XlhbfvvIzlhbvogIHkuJPnlKgnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGRGdW5jdGlvbjInXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKCd2YXIgY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbCgndmFyIHJlZz0vJyArIGl0ZW0gKyAnfOWFqOmDqC87Jyk7XFxuICAgICAgICAgICAgICAgICAgICAvLyDlvZPliY3nur/ot6/nmoTop6PmnpDmjpLluo9cXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gMDtcXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnQXJyYXlbaV0udGFncyA9PSB1bmRlZmluZWQgfHwgY29uZmlnQXJyYXlbaV0udGFncy5tYXRjaChyZWcpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaSArICc8L3NwYW4+LScgKyBjb25maWdBcnJheVtpXS5uYW1lICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojOTlDQ0ZGXFxcIj48c21hbGw+I+W6lOeUqDonICsgY29uZmlnQXJyYXlbaV0udGFncyArICc8L3NtYWxsPjwvc3Bhbj4nICsgKGNvbmZpZ0FycmF5W2ldLmpzICE9IHVuZGVmaW5lZCAmJiBjb25maWdBcnJheVtpXS5qcyAhPSAnJyA/ICc8L3NtYWxsPjwvc3Bhbj4nICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPjxzbWFsbD4jSlM8L3NtYWxsPjwvc3Bhbj4nIDogJycpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogY29uZmlnQXJyYXlbaV0udXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFsn57yW6L6RJywgJ+enu+S9jScsICfliKDpmaQnXSwgMywgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGk/cnVsZT3phY3nva7liqnmiYtcXFwiKS5vcF9iYXNpYyhpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rOo5YWlSlMs6L6F5Yqp5ZeF5o6iJywganM6ICQudG9TdHJpbmcoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2pzQWRkX1BhZ2U/cnVsZT3phY3nva7liqnmiYsmaW5kZXg9JyArIGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgfSwgaXRlbSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KelScsXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoJycsICfor7fovpPlhaXpnIDopoHop6PmnpDnmoTmoIfor4bvvIzmr5TlpoLln5/lkI0nKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB0YWdzQXJyYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicpKTtcXG4gICAgICAgICAgICAgICAgICAgIHRhZ3NBcnJheS5wdXNoKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2Vfc2VsZWN0aW9uLmpzb24nLCBKU09OLnN0cmluZ2lmeSh0YWdzQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+a3u+WKoOe6v+i3r+aIkOWKn34nXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAn4p6WJyxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICB0YWdzQXJyYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicpKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQodGFnc0FycmF5LCAzLCAn6K+36YCJ5oup5L2g6KaB5Yig6Zmk55qE57q/6LevJykuc2VsZWN0KCh0YWdzQXJyYXkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gKHZhbCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tpXSA9PSB2YWwpIHJldHVybiBpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uICh2YWwpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmluZGV4T2YodmFsKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwbGljZShpbmRleCwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIHRhZ3NBcnJheS5yZW1vdmUoaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicsIEpTT04uc3RyaW5naWZ5KHRhZ3NBcnJheSkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey56e76Zmk57q/6LevfidcXG4gICAgICAgICAgICAgICAgfSwgdGFnc0FycmF5KVxcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS50YWdzID09IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpXS50YWdzID0gJ+WFqOmDqCdcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+JyArIGkgKyAnPC9zcGFuPi0nICsgY29uZmlnQXJyYXlbaV0ubmFtZSArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6Izk5Q0NGRlxcXCI+PHNtYWxsPiPlupTnlKg6JyArIGNvbmZpZ0FycmF5W2ldLnRhZ3MgKyAoY29uZmlnQXJyYXlbaV0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2ldLmpzICE9ICcnID8gJzwvc21hbGw+PC9zcGFuPicgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+PHNtYWxsPiNKUzwvc21hbGw+PC9zcGFuPicgOiAnJyksXFxuICAgICAgICAgICAgICAgIGRlc2M6IGNvbmZpZ0FycmF5W2ldLnVybCxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFsn57yW6L6RJywgJ+enu+S9jScsICfliKDpmaQnXSwgMywgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm9wX2Jhc2ljKGkpO1xcbiAgICAgICAgICAgICAgICB9LCBpKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rOo5YWlSlMs6L6F5Yqp5ZeF5o6iJywganM6ICQudG9TdHJpbmcoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvanNBZGRfUGFnZT9ydWxlPemFjee9ruWKqeaJiyZpbmRleD0nICsgaTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKSxcXG4gICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIGlmIChnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+aJuemHj+W3peWFtycpIHtcXG4gICAgICAgIGlmIChnZXRWYXIoJ3R5cGUnLCAn5om56YeP5Yig6ZmkJykgPT0gJ+aJuemHj+WIoOmZpCcpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIoOmZpFxcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRWYXIoJ2RlbE51bScsICcwJykgKyAnPC9zcGFuPlxcXFx0XFxcXHRcXFxcdOadoeino+aekCcsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignZGVsTnVtJywgJzAnKSA9PSAnMCcpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6K+35YWI6YCJ5oup6KaB5Yig6Zmk55qE6Kej5p6Q77yBJ1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdkZWxBcnJheScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZGVsQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVsQXJyYXkuaW5jbHVkZXMoaSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0FycmF5LnB1c2goY29uZmlnQXJyYXlbaV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KG5ld0FycmF5KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsTnVtID0gZ2V0VmFyKCdkZWxOdW0nLCAnMCcpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdkZWxOdW0nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignZGVsQXJyYXknKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdpc0Nob29zZScgKyBpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WFseWIoOmZpFxcXCIgKyBkZWxOdW0gKyAn5p2h6Kej5p6QJztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogJ2RlbEJ0bidcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGluZGV4ID0gMDtcXG4gICAgICAgICAgICBjb25maWdBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tJyArIGl0ZW0ubmFtZSArIChjb25maWdBcnJheVtpbmRleF0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2luZGV4XS5qcyAhPSAnJyA/ICc8L3NtYWxsPjwvc3Bhbj4nICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPjxzbWFsbD4jSlM8L3NtYWxsPjwvc3Bhbj4nIDogJycpLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogaXRlbS51cmwsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpbmRleCwgaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKSA9PSAneWVzJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coaW5kZXgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdkZWxBcnJheScsICdbXScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsTnVtID0gTnVtYmVyKGdldFZhcignZGVsTnVtJywgJzAnKSkgLSAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheS5wb3AoaW5kZXgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2RlbEFycmF5JywgZGVsQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2RlbE51bScsIGRlbE51bSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oaW5kZXggKyAnJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tJyArIGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2RlbEJ0bicsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5Yig6ZmkXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldFZhcignZGVsTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ25vJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkgPSBKU09OLnBhcnNlKGdldFZhcignZGVsQXJyYXknLCAnW10nKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbE51bSA9IE51bWJlcihnZXRWYXIoJ2RlbE51bScsICcwJykpICsgMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkucHVzaChpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhkZWxBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZGVsQXJyYXknLCBkZWxBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZGVsTnVtJywgZGVsTnVtKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShpbmRleCArICcnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBpbmRleCArICctJyArIGl0ZW0ubmFtZSArICc8L3NwYW4+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2RlbEJ0bicsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5Yig6ZmkXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldFZhcignZGVsTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ3llcycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIGluZGV4LCBpdGVtKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4ICsgJycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+azqOWFpUpTLOi+heWKqeWXheaOoicsIGpzOiAkLnRvU3RyaW5nKChpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvanNBZGRfUGFnZT9ydWxlPemFjee9ruWKqeaJiyZpbmRleD0nICsgaW5kZXg7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliIbkuqtcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgZ2V0VmFyKCdzaGFyZU51bScsICcwJykgKyAnPC9zcGFuPlxcXFx0XFxcXHRcXFxcdOadoeino+aekCcsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignc2hhcmVOdW0nLCAnMCcpID09ICcwJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/or7flhYjpgInmi6nopoHliIbkuqvnmoTop6PmnpDvvIEnXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkgPSBKU09OLnBhcnNlKGdldFZhcignc2hhcmVBcnJheScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coc2hhcmVBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUZpbGUgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFyZUFycmF5LmluY2x1ZGVzKGkpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUZpbGUucHVzaChjb25maWdBcnJheVtpXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjcmV0Q29udGVudCA9IGJhc2U2NEVuY29kZShiYXNlNjRFbmNvZGUoSlNPTi5zdHJpbmdpZnkoc2hhcmVGaWxlKSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkoXFxcIuWKqeaJi+ino+aekOWvvOWFpeWPo+S7pMKlwqVcXFwiICsgc2hhcmVQYXN0ZShzZWNyZXRDb250ZW50KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3NoYXJlTnVtJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3NoYXJlQXJyYXknKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdpc0Nob29zZScgKyBpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIhuS6q+aIkOWKn1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogJ3NoYXJlQnRuJ1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaW5kZXggPSAwO1xcbiAgICAgICAgICAgIGNvbmZpZ0FycmF5LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi0nICsgaXRlbS5uYW1lICsgKGNvbmZpZ0FycmF5W2luZGV4XS5qcyAhPSB1bmRlZmluZWQgJiYgY29uZmlnQXJyYXlbaW5kZXhdLmpzICE9ICcnID8gJzwvc21hbGw+PC9zcGFuPicgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+PHNtYWxsPiNKUzwvc21hbGw+PC9zcGFuPicgOiAnJyksXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdGVtLnVybCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGluZGV4LCBpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignaXNDaG9vc2UnICsgaW5kZXgsICdubycpID09ICd5ZXMnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkgPSBKU09OLnBhcnNlKGdldFZhcignc2hhcmVBcnJheScsICdbXScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVOdW0gPSBOdW1iZXIoZ2V0VmFyKCdzaGFyZU51bScsICcwJykpIC0gMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheS5wb3AoaW5kZXgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3NoYXJlQXJyYXknLCBzaGFyZUFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzaGFyZU51bScsIHNoYXJlTnVtKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShpbmRleCArICcnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi0nICsgaXRlbS5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnc2hhcmVCdG4nLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIhuS6q1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignaXNDaG9vc2UnICsgaW5kZXgsICdubycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkgPSBKU09OLnBhcnNlKGdldFZhcignc2hhcmVBcnJheScsICdbXScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVOdW0gPSBOdW1iZXIoZ2V0VmFyKCdzaGFyZU51bScsICcwJykpICsgMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheS5wdXNoKGluZGV4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKHNoYXJlQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3NoYXJlQXJyYXknLCBzaGFyZUFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzaGFyZU51bScsIHNoYXJlTnVtKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShpbmRleCArICcnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBpbmRleCArICctJyArIGl0ZW0ubmFtZSArICc8L3NwYW4+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ3NoYXJlQnRuJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliIbkuqtcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgZ2V0VmFyKCdzaGFyZU51bScsICcwJykgKyAnPC9zcGFuPlxcXFx0XFxcXHRcXFxcdOadoeino+aekCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAneWVzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgsIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaW5kZXggKyAnJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rOo5YWlSlMs6L6F5Yqp5ZeF5o6iJywganM6ICQudG9TdHJpbmcoKGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9qc0FkZF9QYWdlP3J1bGU96YWN572u5Yqp5omLJmluZGV4PScgKyBpbmRleDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2UgaWYgKGdldFZhcignbW9kZScsICfphY3nva4nKSA9PSAn6Kej5p6Q5rWL6K+VJykge1xcbiAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgaW5kZXggPSAwO1xcbiAgICAgICAgY29uZmlnQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBqaWV4aSA9IGl0ZW0udXJsO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUgKyAoY29uZmlnQXJyYXlbaW5kZXhdLmpzICE9IHVuZGVmaW5lZCAmJiBjb25maWdBcnJheVtpbmRleF0uanMgIT0gJycgPyAnPC9zbWFsbD48L3NwYW4+JyArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj48c21hbGw+I0pTPC9zbWFsbD48L3NwYW4+JyA6ICcnKSArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwiIzZFQjg5N1xcXCI+PHNtYWxsPuKeruWJjeW+gOa1i+ivlTwvc21hbGw+PC9mb250PicsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0udXJsLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5ydWxlKChqaWV4aSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnvJbovpHmtYvor5Xpk77mjqUnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2VkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+W8ueW5lTonICsgZ2V0VmFyKCdkbVN3aXRjaCcsICflhbMnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignZG1Td2l0Y2gnLCAn5YWzJykgPT0gJ+WFsycpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZG1Td2l0Y2gnLCAn5byAJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2RtU3dpdGNoJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflvLnluZU6JyArIGdldFZhcignZG1Td2l0Y2gnLCAn5YWzJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2RtU3dpdGNoJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvY2VzaGkuanNvbicpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2VzaGlEYXRhID0ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6IW+6K6v6KeG6aKRJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS8zLzEwNl8zYTBkMjEyZTE3Y2I5NWUyMzJmZmUxNTU0NjAzODVjYl9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly92LnFxLmNvbS94L2NvdmVyL216YzAwMjAwcm1wYWY0MC9uMDAzNmw0dG50Yy5odG1sJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5LyY6YW3Jzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNi85LzExMF84ZmYwNmUwYzIzNzc2MGNkNTdkMjUwOGZkOThjODQxNF9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly92LnlvdWt1LmNvbS92X3Nob3cvaWRfWE5EYzBNREUxTlRrMU1nPT0uaHRtbCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+eIseWlh+iJuic6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMDkvOC8xMTBfOTAxZjJlZjM3YWYyZmVhMjVlNWQ5NjQ4ZjU1MWNlMzFfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHA6Ly93d3cuaXFpeWkuY29tL3ZfMmdhOHp0czg2eXMuaHRtbCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+iKkuaenFRWJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS82LzExMF8xODM0ZDI5NmFhNWI1NjY2YTdkOTRiMWUzNDc5YWU2NF9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL3d3dy5tZ3R2LmNvbS9iLzM0OTI1My8xMDQyNDMwMC5odG1sJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5ZOU5ZOp5ZOU5ZOpJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8yNy80LzExMF84ZTJlM2Q4OGM0NTAyNWIzODBlNjk4MTdkNmZiNTNiMV9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvZXA0Mjg5OTMnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfmkJzni5Dop4bpopEnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzkvMTEwXzUzMmE1MWY4NDMxZWZjMzc3ODA4YzFmZmZmMmRhMzZmX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20udHYuc29odS5jb20vdjczMjk0NDEuc2h0bWwnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6KW/55Oc6KeG6aKRJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8yNy81LzExMF9hODYyNjU4ODJlZDE4YzYxOTA1NjZlOWVhMjVmOTY5OF9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly93d3cuaXhpZ3VhLmNvbS82Njk5MzU2NzkyOTA1Nzk0MDU1J1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5LmQ6KeGJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS84LzJfMzViNWQ0MzczZjRiY2JhMjhmMzk0ODZlNGYxMTY0ZDlfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbS5sZS5jb20vdnBsYXlfNzY5NTQzMzMuaHRtbD9mcm9tPWFqYXgnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTkwNSc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTgvNC8xMTBfNWYyNGIxMDUyZmVkNGY3ZmM3MzU5M2E4ZWYyNzI3NmRfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vdmlwLjE5MDUuY29tL20vcGxheS8xNDI5NzI1LnNodG1sJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6aOO6KGM6KeG6aKRJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNi80LzExMF82ZjZhZjlmOTliMjYyOWU1MWYwYjBhMzNjZGZmMWQ5ZV9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL20uZnVuLnR2L21wbGF5Lz9taWQ9OTU3MTknXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQUFRW6KeG6aKRJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8yOC81LzExMF9hNDU1YjI5NTEyMjcwNDBlZTYyOTU1ZWRjZmI4OWQ3Ml9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly92LnBwdHYuY29tL3Nob3cvelZuM2RKWHQxeFY0OWw0Lmh0bWwnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfpvpnohb4nOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnTFQtMWVjM2Y2NzU0ZjY4NTg2ZWQ3ZjkyYzNlOTk1Y2ZjYTYnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkurrkurrov7cnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNi5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAncmVucmVubWktYWI5MjRlMTFkMmQ2OTM5NydcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S6lOavkic6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS8zMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnd3VkdXl1bi0xNjQ5NDMxMzA3MDIxJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5aSa5aSaJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzQ5LnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20zdTguY2FjaGUuc3VveW8uY2MvbTN1OC8yMDIyMDMvOC9hYWFiZDkyZGEyNjc3NGM2ODg1MGEwMjMxNTNjODBmMWFlNmZhOWJlLm0zdTgnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfono3lhbQnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvODAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ1JvbmdYaW5nVlItNDIxNTY0NTU4MTkzMidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+mbquS6uic6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzEzMy5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAneHVlcmVuLTE2NDY4MjMwNzInXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfml4vpo47kupEnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNTQucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3hmeS01MjllNjQ1Nzk1M2Q1NDVmJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn55Ge5Liw6LWE5rqQJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzcyLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovLzEucnVpZmVuZ2xiLmNvbS9wbGF5LzE2NDQ5MTQ1OTUubTN1OCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nLCBKU09OLnN0cmluZ2lmeShjZXNoaURhdGEpKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGNlc2hpRGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJykpO1xcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBjZXNoaURhdGEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBjZXNoaURhdGFbcHJvcF0ucGljICsgJ0BSZWZlcmVyPScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnJykubGF6eVJ1bGUoKGNlc2hpRGF0YSwgcHJvcCwgamlleGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcFVybCA9IGNlc2hpRGF0YVtwcm9wXS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzID0gW1xcXCJ2aWRlbzovL1xcXCIgKyBqaWV4aSArIHZpcFVybF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcyA9IFsn5rWL6K+VJ11cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpID09ICflvIAnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2xhenlUb0ppZXhpP3J1bGU9ZG3nm5LlrZBcXFwiKS52aWRlb1g1KHZpcFVybCwgdXJscywgbmFtZXMsIFt7IFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEgfV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBjZXNoaURhdGEsIHByb3AsIGppZXhpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uXzQnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rWL6K+VJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn5L2g6L+Y5Y+v5Lul5Lu75oSP6L6T5YWl5LiA5Liq6KeG6aKR5Zyw5Z2A5rWL6K+V5b2T5YmN6Kej5p6QficsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKChqaWV4aSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXBVcmwgPSBnZXRWYXIoJ2Nlc2hpTGluaycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzID0gW1xcXCJ2aWRlbzovL1xcXCIgKyBqaWV4aSArIHZpcFVybF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzID0gWyfmtYvor5UnXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdkbVN3aXRjaCcsICflhbMnKSA9PSAn5byAJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2xhenlUb0ppZXhpP3J1bGU9ZG3nm5LlrZBcXFwiKS52aWRlb1g1KHZpcFVybCwgdXJscywgbmFtZXMsIFt7IFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEgfV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ2aWRlbzovL1xcXCIgKyBqaWV4aSArIHZpcFVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGppZXhpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignY2VzaGlMaW5rJyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+WIoOmZpOivpeino+aekCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ivt+iupOecn+iAg+iZkX4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGppZXhpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gKHZhbCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0udXJsID09IHZhbCkgcmV0dXJuIGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAodmFsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmluZGV4T2YodmFsKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGxpY2UoaW5kZXgsIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXkucmVtb3ZlKGppZXhpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5YWz6Zet6aG16Z2i5bm25Yi35paw5YmN5LiA5Liq6aG16Z2iXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2sodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liKDpmaTmiJDlip9+XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBqaWV4aSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRIb21lUmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICB9LCBqaWV4aSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+azqOWFpUpTLOi+heWKqeWXheaOoicsIGpzOiAkLnRvU3RyaW5nKChpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9qc0FkZF9QYWdlP3J1bGU96YWN572u5Yqp5omLJmluZGV4PScgKyBpbmRleDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCksXFxuICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaW5kZXgrKztcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIC8vIOato+W4uOWkh+S7veKAlOKAlOiLpeaJp+ihjOWIsOatpOmDveaXoOW8guW4uOWHuueOsOeahOivne+8gVxcbiAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9iYWNrLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcbiAgICBsb2coJ+aWh+S7tuaXoOW8guW4uO+8jOWkh+S7veaIkOWKn34nKTtcXG59IGNhdGNoIChlKSB7XFxuICAgIGxvZygn5paH5Lu25byC5bi477yM6K+35oGi5aSNficpO1xcbiAgICAvLyDlvILluLjkuI3lpIfku73vvIzor7fmgaLlpI1cXG4gICAgc2hvd0xvYWRpbmcoJ+mFjee9ruaWh+S7tuW8guW4uO+8ge+8ge+8gScpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmgaLlpI3lpIfku70nLFxcbiAgICAgICAgZGVzYzogJ+WmguaenOWboOS4uuS4gOS6m+mUmeivr++8jOaVsOaNruWPkeeUn+S6huaNn+Wdj+S6huWPr+S7peWwneivleaBouWkjX4nLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBmaWxlUGF0aCA9ICdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2VfYmFjay5qc29uJztcXG4gICAgICAgICAgICBpZiAoZmlsZUV4aXN0KGZpbGVQYXRoKSkge1xcbiAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoZmlsZVBhdGgpO1xcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5oGi5aSN5oiQ5YqfXFxcIjtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBzaG93TG9hZGluZygn5oCO5LmI5aSH5Lu95Lmf5Z2P5LqG5ZWK77yM57uZ5L2g6YeN572u5ZCn77yBJyk7XFxuICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5ID0gW107XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgICAgICAgICAgICAgIHRhZ3NBcnJheSA9IFsncXEnLCAnbWd0dicsICdiaWxpJywgJ3FpeWknLCAneW91a3UnXTtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicsIEpTT04uc3RyaW5naWZ5KHRhZ3NBcnJheSkpO1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAn5byAJyk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6YeN572u5oiQ5YqfXFxcIjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxuICAgIHNldFJlc3VsdChkKTtcXG59XFxuc2V0UmVzdWx0KGQpO1xcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6LCD55So6Lev55SxXCIsXCJwYXRoXCI6XCJtdWxQYXJzZVwiLFwicnVsZVwiOlwiLypcXG4gdmlwVXJsOuWumOe9keWcsOWdgDvov5Tlm57lgLxKU09O5qC85byP55qE5aSa57q/6Lev6KeG6aKR5Zyw5Z2AXFxu6LCD55So5o6l5Y+j77yaJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcbiAqL1xcbiQuZXhwb3J0cy5tdWxQYXJzZSA9IGZ1bmN0aW9uICh2aXBVcmwsIGJmTGluaywgamlleGlOYW1lLGhlYWRlcnMpIHtcXG4gICAgaWYgKHZpcFVybC5pbmRleE9mKCdkb3ViYW4nKSAhPSAtMSkge1xcbiAgICAgICAgdmlwVXJsID0gdmlwVXJsLnNwbGl0KCc/cHRhZz0nKVswXVxcbiAgICB9XFxuICAgIGxvZygn6KeG6aKR5Y6f5Zyw5Z2A77yaJyArIHZpcFVybCk7XFxuICAgIHZhciBleHRyYV9sZW5ndGggPSAwO1xcbiAgICBpZiAoYmZMaW5rICYmIGppZXhpTmFtZSkge1xcbiAgICAgICAgdmFyIHVybHMgPSBiZkxpbms7XFxuICAgICAgICB2YXIgbmFtZXMgPSBqaWV4aU5hbWU7XFxuICAgICAgICBpZiAoaGVhZGVycykge1xcbiAgICAgICAgICAgIHZhciBoZWFkZXJzPWhlYWRlcnM7XFxuICAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgICB2YXIgaGVhZGVycz1bXTtcXG4gICAgICAgIH1cXG4gICAgICAgIGV4dHJhX2xlbmd0aCA9IGJmTGluay5sZW5ndGg7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICB2YXIgdXJscyA9IFtdO1xcbiAgICAgICAgdmFyIG5hbWVzID0gW107XFxuICAgICAgICB2YXIgaGVhZGVycz1bXTtcXG4gICAgfVxcbiAgICBsb2coXFxcIuWkmue6v+i3r+ino+aekOW8gOWni1xcXCIpXFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShyZWFkRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFwiKSk7XFxuICAgIHZhciB0YWdzQXJyYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicpKTtcXG4gICAgdGFnc0FycmF5LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICBldmFsKCd2YXIgcmVnMT0vJyArIGl0ZW0gKyAnLzsnKTtcXG4gICAgICAgIGV2YWwoJ3ZhciByZWcyPS8nICsgaXRlbSArICd85YWo6YOoLzsnKTtcXG4gICAgICAgIGlmICh2aXBVcmwubWF0Y2gocmVnMSkpIHtcXG4gICAgICAgICAgICBsb2coJ+W9k+WJjee6v+i3rzonICsgaXRlbSlcXG4gICAgICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnRhZ3MgPT0gdW5kZWZpbmVkIHx8IGl0ZW0udGFncy5tYXRjaChyZWcyKSkge1xcbiAgICAgICAgICAgICAgICAgICAgdXJscy5wdXNoKFxcXCJ2aWRlbzovL1xcXCIgKyBpdGVtLnVybCArIHZpcFVybCk7XFxuICAgICAgICAgICAgICAgICAgICBuYW1lcy5wdXNoKGl0ZW0ubmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLnB1c2goe30pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICBpZiAodXJscy5sZW5ndGggPT0gMCB8fCB1cmxzLmxlbmd0aCA9PSBleHRyYV9sZW5ndGgpIHtcXG4gICAgICAgIGxvZygn5b2T5YmN57q/6LevOm90aGVyJylcXG4gICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICB1cmxzLnB1c2goXFxcInZpZGVvOi8vXFxcIiArIGl0ZW0udXJsICsgdmlwVXJsKTtcXG4gICAgICAgICAgICBuYW1lcy5wdXNoKGl0ZW0ubmFtZSk7XFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBsb2coYOW9k+WJjeWQr+eUqOino+aekO+8miR7dXJscy5sZW5ndGh95LiqYClcXG4gICAgdmFyIGRtU3dpdGNoID0gcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKTtcXG4gICAgdmFyIHMgPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JveFN3aXRjaC50eHQnKVxcbiAgICBpZiAocyA9PSBcXFwi5byAXFxcIikge1xcbiAgICAgICAgdmFyIHUgPSBbXVxcbiAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIHUucHVzaCh7XFxuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiBpdGVtLnVybCArIHZpcFVybFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KTtcXG4gICAgICAgIHJlcXVpcmUoXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS9Kb2UvVFZib3guanNcXFwiKVxcbiAgICAgICAgcmV0dXJuIOaOqOmAgXR2Ym94KHtcXG4gICAgICAgICAgICBuYW1lOiBcXFwi6YWN572u5Yqp5omL5o6o6YCBXFxcIixcXG4gICAgICAgICAgICB2b2Q6IFt7XFxuICAgICAgICAgICAgICAgIC8vbmFtZTogXFxcIum7mOiupFxcXCIsXFxuICAgICAgICAgICAgICAgIHVybHM6IHVcXG4gICAgICAgICAgICB9XVxcbiAgICAgICAgfSlcXG4gICAgfSBlbHNlIGlmIChkbVN3aXRjaCA9PSAndHJ1ZScpIHtcXG4gICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9sYXp5VG9KaWV4aT9ydWxlPWRt55uS5a2QXFxcIikudmlkZW9YNSh2aXBVcmwsIHVybHMsIG5hbWVzLGhlYWRlcnMpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICB1cmxzOiB1cmxzLFxcbiAgICAgICAgICAgIG5hbWVzOiBuYW1lcyxcXG4gICAgICAgICAgICBoZWFkZXJzOmhlYWRlcnNcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pat5o+S5o+S5Lu2XCIsXCJwYXRoXCI6XCJkdWFuXCIsXCJydWxlXCI6XCJmdW5jdGlvbiBheXRtUGFyc2UodmlwVXJsKSB7XFxyXFxuICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm11bFBhcnNlKHZpcFVybCk7XFxyXFxufVxcclxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiSlPms6jlhaVcIixcInBhdGhcIjpcImpzQWRkX1BhZ2VcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuaW5kZXggPSBnZXRQYXJhbSgnaW5kZXgnKTtcXG52YXIgY29uZmlnQXJyYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uXFxcIikpO1xcbnNob3dDb250ZW50PWNvbmZpZ0FycmF5W2luZGV4XS5qcyE9dW5kZWZpbmVkP2NvbmZpZ0FycmF5W2luZGV4XS5qczonJ1xcbmQucHVzaCh7XFxuICAgIGRlc2M6ICfovpPlhaXmraPnoa7moLzlvI/lhoXlrrknLFxcbiAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHNob3dDb250ZW50LFxcbiAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgIGhlaWdodDogLTEsXFxuICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxuICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignanNBZGQnLGlucHV0KVxcXCIsXFxuICAgICAgICBpZDogJ2pzQWRkJ1xcbiAgICB9XFxufSwge1xcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzbWFsbD48c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+MeOAgeebtOaOpeS5puWGmemAgueUqOS6jng155WM6Z2i55qEanPku6PnoIHljbPlj688YnI+MuOAgeS4pOenjeaWueW8jzrph43lrprlkJHmkq3mlL7pk77mjqXlkozov5Tlm57mkq3mlL7pk77mjqXkuKTnp43lvaLlvI88YnI+M+OAgeWFt+S9k+WPguingeW4ruWKqeaWh+ahoycsXFxuICAgIGRlc2M6J+KAmOKAmOKAmeKAmTxiaWc+PGJpZz48c3BhbiBzdHlsZT1cXFwiY29sb3I6IzI5OEEwOFxcXCI+5L+dIOWtmCcsXFxuICAgIHVybDogJCgpLmxhenlSdWxlKChpbmRleCkgPT4ge1xcbiAgICAgICAganNBZGQgPSBnZXRWYXIoJ2pzQWRkJyk7XFxuICAgICAgICB2YXIgY29uZmlnQXJyYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uXFxcIikpO1xcbiAgICAgICAgY29uZmlnQXJyYXlbaW5kZXhdLmpzPWpzQWRkO1xcbiAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgIGJhY2sodHJ1ZSk7XFxuICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5bey5L+d5a2Y5L+u5pS5XFxcIlxcbiAgICB9LGluZGV4KSxcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbn0pO1xcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWHveaVsFwiLFwicGF0aFwiOlwiYXBpXCIsXCJydWxlXCI6XCIkLmV4cG9ydHMub3BfYmFzaWMgPSBmdW5jdGlvbiAoaSkge1xcclxcbiAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxyXFxuICAgIGV2YWwoJ3ZhciBjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxyXFxuICAgIGlmIChjb25maWdBcnJheVtpXS50YWdzID09IHVuZGVmaW5lZCkge1xcclxcbiAgICAgICAgY29uZmlnQXJyYXlbaV0udGFncyA9ICflhajpg6gnXFxyXFxuICAgIH1cXHJcXG4gICAgaWYgKGlucHV0ID09ICfnvJbovpEnKSB7XFxyXFxuICAgICAgICBjb25maWcgPSBjb25maWdBcnJheVtpXS5uYW1lICsgJywnICsgY29uZmlnQXJyYXlbaV0udXJsICsgJyMjIycgKyBjb25maWdBcnJheVtpXS50YWdzO1xcclxcbiAgICAgICAgcmV0dXJuICQoY29uZmlnKS5pbnB1dCgoaSwgY29uZmlnQXJyYXkpID0+IHtcXHJcXG4gICAgICAgICAgICBpdGVtID0ge1xcclxcbiAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dC5zcGxpdCgvLHzvvIwvKVswXSxcXHJcXG4gICAgICAgICAgICAgICAgdXJsOiBpbnB1dC5zcGxpdCgvIyMjLylbMF0uc3BsaXQoLyx877yMLylbMV0sXFxyXFxuICAgICAgICAgICAgICAgIHRhZ3M6IGlucHV0LnNwbGl0KC8jIyMvKVsxXSxcXHJcXG4gICAgICAgICAgICAgICAganM6IGNvbmZpZ0FycmF5W2ldLmpzXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIGNvbmZpZ0FycmF5LnNwbGljZShpLCAxLCBpdGVtKTtcXHJcXG4gICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcclxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pu05paw5oiQ5YqfXFxcIlxcclxcbiAgICAgICAgfSwgaSwgY29uZmlnQXJyYXkpXFxyXFxuICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+enu+S9jScpIHtcXHJcXG4gICAgICAgIHJldHVybiAkKCcwJywgJ+S9oOaDs+aOkuesrOWHoO+8n+W6j+WPt+S7jjDlvIDlp4t+JykuaW5wdXQoKGksIGNvbmZpZ0FycmF5KSA9PiB7XFxyXFxuICAgICAgICAgICAgaWYgKGlucHV0ID4gY29uZmlnQXJyYXkubGVuZ3RoIC0gMSkge1xcclxcbiAgICAgICAgICAgICAgICBpbnB1dCA9IGNvbmZpZ0FycmF5Lmxlbmd0aCAtIDE7XFxyXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA8IDApIHtcXHJcXG4gICAgICAgICAgICAgICAgaW5wdXQgPSAwO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICB0ZW1wID0gY29uZmlnQXJyYXlbaV07XFxyXFxuICAgICAgICAgICAgaWYgKGkgPiBpbnB1dCkge1xcclxcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IGk7IGluZGV4ID4gaW5wdXQ7IGluZGV4LS0pIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2luZGV4XSA9IGNvbmZpZ0FycmF5W2luZGV4IC0gMV07XFxyXFxuICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IGk7IGluZGV4IDwgaW5wdXQ7IGluZGV4KyspIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2luZGV4XSA9IGNvbmZpZ0FycmF5W2luZGV4ICsgMV07XFxyXFxuICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgY29uZmlnQXJyYXlbaW5wdXRdID0gdGVtcDtcXHJcXG4gICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcclxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v56e75L2N5oiQ5YqfXFxcIlxcclxcbiAgICAgICAgfSwgaSwgY29uZmlnQXJyYXkpXFxyXFxuICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICBjb25maWdBcnJheS5zcGxpY2UoaSwgMSk7XFxyXFxuICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcclxcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcclxcbiAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIoOmZpOaIkOWKn1xcXCJcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cXHJcXG4kLmV4cG9ydHMuZG1TZXR0aW5ncyA9IGZ1bmN0aW9uICh0YWcpIHtcXHJcXG4gICAgc3dpdGNoICh0YWcpIHtcXHJcXG4gICAgICAgIC8vIOWHveaVsOWIh+aNolxcclxcbiAgICAgICAgY2FzZSAwOlxcclxcbiAgICAgICAgICAgIG9wdGlvbnMgPSBbJ+W3puWyuOWumOW8uScsICdmY+WumOW8uScsICfkuInmlrnmibbpo44nXTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gJChvcHRpb25zLCAxKS5zZWxlY3QoKCkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICBjdXJTZXR0aW5ncyA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicpKTtcXHJcXG4gICAgICAgICAgICAgICAgY3VyU2V0dGluZ3MuZG1Gcm9tID0gaW5wdXQ7XFxyXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nLCBKU09OLnN0cmluZ2lmeShjdXJTZXR0aW5ncykpO1xcclxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiH5o2i5p2l5rqQ5Li6OlxcXCIgKyBpbnB1dDtcXHJcXG4gICAgICAgICAgICB9KVxcclxcbiAgICAgICAgICAgIGJyZWFrO1xcclxcblxcclxcbiAgICAgICAgLy8g5pu05pS55Ye95pWw5L2c55So5Z+fXFxyXFxuICAgICAgICBjYXNlIDE6XFxyXFxuICAgICAgICAgICAgb3B0aW9ucyA9IFsnZ2xvYmFsJywgJ290aGVyJ107XFxyXFxuICAgICAgICAgICAgcmV0dXJuICQob3B0aW9ucywgMSkuc2VsZWN0KCgpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgY3VyU2V0dGluZ3MgPSBKU09OLnBhcnNlKHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nKSk7XFxyXFxuICAgICAgICAgICAgICAgIGN1clNldHRpbmdzLmRtU2NvcGUgPSBpbnB1dDtcXHJcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicsIEpTT04uc3RyaW5naWZ5KGN1clNldHRpbmdzKSk7XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liIfmjaLkvZznlKjln5/kuLo6XFxcIiArIGlucHV0O1xcclxcbiAgICAgICAgICAgIH0pXFxyXFxuICAgICAgICAgICAgYnJlYWs7XFxyXFxuICAgICAgICBjYXNlIDI6XFxyXFxuICAgICAgICAgICAgZm9udFNpemUgPSBKU09OLnBhcnNlKHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nKSkuZm9udFNpemU7XFxyXFxuICAgICAgICAgICAgcmV0dXJuICQoZm9udFNpemUsICfor7fovpPlhaXkuIDkuKrlkIjpgILnmoTmlbDlrZcnKS5pbnB1dCgoKSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgIGN1clNldHRpbmdzID0gSlNPTi5wYXJzZShyZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJykpO1xcclxcbiAgICAgICAgICAgICAgICBjdXJTZXR0aW5ncy5mb250U2l6ZSA9IGlucHV0O1xcclxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJywgSlNPTi5zdHJpbmdpZnkoY3VyU2V0dGluZ3MpKTtcXHJcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W8ueW5leWkp+Wwj+W3suS/ruaUueS4ulxcXCIgKyBpbnB1dDtcXHJcXG4gICAgICAgICAgICB9KVxcclxcbiAgICAgICAgICAgIGJyZWFrOyAgICBcXHJcXG4gICAgICAgIGRlZmF1bHQ6XFxyXFxuICAgICAgICAgICAgYnJlYWs7XFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXCJ9XSIsImljb24iOiJodHRwczovL2NkbjQuaWNvbmZpbmRlci5jb20vZGF0YS9pY29ucy9tYWNhcm9uLTEvNDgvcHJlZmVyZW5jZXMtc3lzdGVtLTEyOC5wbmciLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment