xiaomianao666

小程序:JustLive

Mar 25th, 2024
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@JustLive@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoiSnVzdExpdmUiLCJhdXRob3IiOiJKb2UmJumaj+mjjiYm5Y+R57Kq5raC5aKZJiZSeCYmWnJ1aXJ5IiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIiwidmVyc2lvbiI6MjAyMzEwMjYsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbmxldCBzID0gW107XG5sZXQgZCA9IFtdO1xubGV0IGFwaSA9ICQucmVxdWlyZShcInB1YmxpY1wiKS5BcGk7XG5sZXQgaGVhZGVycyA9ICQucmVxdWlyZShcInB1YmxpY1wiKS5oZWFkZXJzO1xubGV0IHVpZCA9IGdldEl0ZW0oXCJ1aWRcIiwgXCJcIik7XG5sZXQgY2xhcyA9IGdldE15VmFyKFwiY2xhc3NcIiwgXCJhbGxcIik7XG5cbmlmIChnZXRNeVZhcihcIlZlcnNcIiwgXCIwXCIpID09IFwiMFwiKSB7XG4gICAgbGV0IHZlcnMgPSBKU09OLnBhcnNlKGZldGNoKGFwaSArIFwidmVyc2lvblVwZGF0ZVwiLCBoZWFkZXJzKSkuZGF0YS5sYXRlc3RWZXJzaW9uO1xuICAgIHB1dE15VmFyKFwiVmVyc1wiLCB2ZXJzKTtcbn07XG5sZXQgcHV0dmVyID0gZ2V0TXlWYXIoXCJWZXJzXCIsIFwiMFwiKTtcbmxldCBzZXR2ZXIgPSBnZXRJdGVtKFwiVmVyc1wiLCBcIjAuMy40XCIpO1xubGV0IHBzdmVyID0gcHV0dmVyID4gc2V0dmVyID8gXCJuZXcgViBcIiArIHB1dHZlciArIFwiID4gXCIgKyBcIlYgXCIgKyBzZXR2ZXIgOiBcIlYgXCIgKyBzZXR2ZXI7XG5pZiAoTVlfUEFHRSA9PSAxKSB7XG4gICAgcy51bnNoaWZ0KHtcbiAgICAgICAgdGl0bGU6IGdldEl0ZW0oXCJuaWNrbmFtZVwiLCBcIuazqOWGjCAvIOeZu+W9lVwiKSxcbiAgICAgICAgZGVzYzogcHN2ZXIgKyBcIlxcdFxcdFwiLFxuICAgICAgICB1cmw6ICQoXCIjbm9Mb2FkaW5nI1wiKS5sYXp5UnVsZSgocHV0dmVyLCBzZXR2ZXIpID0+IHtcbiAgICAgICAgICAgIHB1dE15VmFyKFwic1R5cGVcIiwgXCJsaXZpbmdcIik7XG4gICAgICAgICAgICBpZiAocHV0dmVyID4gc2V0dmVyKSB7XG4gICAgICAgICAgICAgICAgc2V0SXRlbShcIlZlcnNcIiwgcHV0dmVyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB1cGRhdGVJdGVtKFwiaWRfanVzdGxpdmVfdmVyc2lvblwiLCB7XG4gICAgICAgICAgICAgICAgZGVzYzogXCJWIFwiICsgZ2V0SXRlbShcIlZlcnNcIiwgXCIwLjMuNFwiKSArIFwiXFx0XFx0XCJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9wYWdlL2hpc3Rvcnkjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXCI7XG4gICAgICAgIH0sIHB1dHZlciwgc2V0dmVyKSxcbiAgICAgICAgaW1nOiBcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8va2UvNzMucG5nXCIsXG4gICAgICAgIGNvbF90eXBlOiBcImF2YXRhclwiLFxuICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgaWQ6IFwiaWRfanVzdGxpdmVfdmVyc2lvblwiLFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBcIuaIkeeahOWFs+azqFwiXG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBzLnB1c2goe1xuICAgICAgICB0aXRsZTogXCLmkJzntKJcIixcbiAgICAgICAgZGVzYzogdWlkID09IFwiXCIgPyBcIuaQnCDntKIg6ZyAIOWFiCDnmbsg5b2VXCIgOiBcIuWPryDku6Ug5bCRIOWtlyDvvIzkuI0g5Y+vIOmUmSDlrZcg77yBXCIsXG4gICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7XG4gICAgICAgICAgICBwdXRNeVZhcihcIk15a2V5XCIsIGlucHV0KTtcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXG4gICAgICAgIH0pLFxuICAgICAgICBjb2xfdHlwZTogXCJpbnB1dFwiLFxuICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcIk15a2V5XCIpXG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGNvbF90eXBlOiBcImJpZ19ibGFua19ibG9ja1wiXG4gICAgfSwge1xuICAgICAgICBjb2xfdHlwZTogXCJiaWdfYmxhbmtfYmxvY2tcIlxuICAgIH0sIHtcbiAgICAgICAgY29sX3R5cGU6IFwibGluZV9ibGFua1wiXG4gICAgfSk7XG5cbiAgICAvL+eDremXqOebtOaSrVxuICAgIHMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnPGZvbnQgY29sb3I9XCIjMGFhMzQ0XCI+54Ot6Zeo55u05pKtPC9mb250PicsXG4gICAgICAgIGRlc2M6ICc8Zm9udCBjb2xvcj1cIiMwYWEzNDRcIj7inq5cXHRcXHQ8L2ZvbnQ+JyxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcbiAgICAgICAgICAgIHB1dE15VmFyKFwidHlwZU5hbWVWYXJcIiwgJ+WFqOmDqCcpO1xuICAgICAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9wYWdlL25ld0NsYXNzXCIgKyAnI25vSGlzdG9yeSMnO1xuICAgICAgICB9KSxcbiAgICAgICAgaW1nOiBcImh0dHBzOi8vaW1nMS5iYWlkdS5jb20vaXQvdT0xMTMxMzMxNDE2LDI2NjY0NjczNTQmZm09MjUzJmZtdD1hdXRvJmFwcD0xMjAmZj1QTkc/dz01MDAmaD01MDBAUmVmZXJlcj1cIixcbiAgICAgICAgY29sX3R5cGU6IFwiYXZhdGFyXCIsXG5leHRyYToge1xuaW5oZXJpdFRpdGxlOiBmYWxzZVxufVxuICAgIH0pO1xuXG4gICAgbGV0IENUID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgTFQgPSBcIlwiO1xuICAgIHRyeSB7XG4gICAgICAgIGV2YWwoXCJ2YXIgZmxiID0gXCIgKyByZWFkRmlsZShcImhpa2VyOi8vZmlsZXMvY2FjaGUvanVzdGxpdmUuanNcIiksIDApO1xuICAgICAgICBMVCA9IGZsYi5sdDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIExUID0gXCIwXCI7XG4gICAgfTtcbiAgICBsZXQgc2FyZWEgPSBnZXRNeVZhcihcInNhcmVhXCIsIFwiMFwiKTtcbiAgICBpZiAoIWZpbGVFeGlzdChcImhpa2VyOi8vZmlsZXMvY2FjaGUvanVzdGxpdmUuanNcIikgfHwgQ1QgPiAoTFQgKyAyICogMjQgKiA2MCAqIDYwICogMTAwMCkgfHwgc2FyZWEgIT09IFwiMFwiKSB7XG4gICAgICAgIC8v5ri45L6gXG4gICAgICAgIGxldCB5eHVybCA9IFwiaHR0cHM6Ly9hcHAuYWxpMjEzLm5ldC90b3AvaG90Lmh0bWxcIjtcbiAgICAgICAgbGV0IGFyZWEgPSBcIlwiO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXJlYSA9IHNhcmVhID09IFwiMFwiID8gZmxiLmFyZWEgOiBmbGIuYXJlYSArIFwifFwiICsgc2FyZWE7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGFyZWEgPSBcIueUu+espuiDveaJi3zmiJHnmoTli4fogIV85aSq56m66KGM5YqofOW/l+aImOeVpXzlvLnlo7Pnibl85Zyw6ZOB6LeRfOW/jeiAheaWsOS4lnzmi6PniLFcIjtcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgbGlzZiA9IHBkZmEoZmV0Y2goeXh1cmwpLCBcIi5tYWluLWNvbnRhaW5lciYmaW1nXCIpLmZpbHRlcihlbGVtZW50ID0+ICFuZXcgUmVnRXhwKGFyZWEpLnRlc3QoZWxlbWVudCkpLnNsaWNlKDAsIDgpO1xuICAgICAgICBsZXQgbGlzdCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBsaSBvZiBsaXNmKSB7XG4gICAgICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKGxpLCBcImltZyYmYWx0XCIpO1xuICAgICAgICAgICAgbGV0IHBpYyA9IHBkZmgobGksIFwiaW1nJiZzcmNcIik7XG4gICAgICAgICAgICBsaXN0LnB1c2godGl0bGUgKyBcIiRcIiArIHBpYyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZsID0ge1xuICAgICAgICAgICAgXCJsdFwiOiBDVCxcbiAgICAgICAgICAgIFwibGlzdFwiOiBsaXN0LFxuICAgICAgICAgICAgXCJhcmVhXCI6IGFyZWFcbiAgICAgICAgfTtcbiAgICAgICAgc2F2ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2p1c3RsaXZlLmpzXCIsIEpTT04uc3RyaW5naWZ5KGZsKSwgMCk7XG4gICAgICAgIGNsZWFyTXlWYXIoXCJzYXJlYVwiKTtcbiAgICB9O1xuXG4gICAgbGV0IGxpc3QgPSB0eXBlb2YoZmwpICE9PSBcInVuZGVmaW5lZFwiID8gZmwubGlzdCA6IGZsYi5saXN0O1xuICAgIGZvciAobGV0IGxpIG9mIGxpc3QpIHtcbiAgICAgICAgbGV0IHRpdGxlID0gbGkuc3BsaXQoXCIkXCIpWzBdO1xuICAgICAgICBzLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgaW1nOiBsaS5zcGxpdChcIiRcIilbMV0sXG4gICAgICAgICAgICBjb2xfdHlwZTogXCJpY29uX3JvdW5kX3NtYWxsXzRcIixcbiAgICAgICAgICAgIHVybDogJChcIiNub0xvYWRpbmcjXCIpLmxhenlSdWxlKCh0aXRsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHB1dE15VmFyKFwiaG9tZVwiLCBcIjFcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9wYWdlL25ld0NsYXNzTGlzdD90eXBlTmFtZT3miYvmuLgmYXJlYU5hbWU9XCIgKyB0aXRsZSArIFwiJnBhZ2U9ZnlwYWdlI25vSGlzdG9yeSNcIjtcbiAgICAgICAgICAgIH0sIHRpdGxlKSxcbiAgICAgICAgICAgIGV4dHJhOiB7XG4gIGluaGVyaXRUaXRsZTogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9O1xuXG4gICAgcy5wdXNoKHtcbiAgICAgICAgY29sX3R5cGU6IFwiYmlnX2JsYW5rX2Jsb2NrXCJcbiAgICB9LCB7XG4gICAgICAgIGNvbF90eXBlOiBcImJpZ19ibGFua19ibG9ja1wiXG4gICAgfSwge1xuICAgICAgICBjb2xfdHlwZTogXCJsaW5lX2JsYW5rXCJcbiAgICB9LCB7XG4gICAgICAgIGNvbF90eXBlOiBcImJpZ19ibGFua19ibG9ja1wiXG4gICAgfSwge1xuICAgICAgICBjb2xfdHlwZTogXCJiaWdfYmxhbmtfYmxvY2tcIlxuICAgIH0pO1xuXG4gICAgLy/lhajpg6jliIbnsbtcbiAgICBzLnB1c2goe1xuICAgICAgICB0aXRsZTogZ2V0TXlWYXIoXCJNeWtleVwiKSA/ICfmkJzntKLnm7Tmkq0nIDogXCLlhajpg6jnm7Tmkq1cIixcbiAgICAgICAgZGVzYzogZ2V0TXlWYXIoXCJNeWtleVwiKSA/ICc8Zm9udCBjb2xvcj1cIiMwYWEzNDRcIj7ov5Tlm55cXHQ8L2ZvbnQ+JyA6IFwiXCIsXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoZ2V0TXlWYXIoXCJNeWtleVwiLCBcIlwiKSA9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcIk15a2V5XCIpO1xuICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXCJjbGFzc1wiKTtcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgICBpbWc6IGdldE15VmFyKFwiTXlrZXlcIikgPyBcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvMjUuc3ZnQFJlZmVyZXI9XCIgOiBcImh0dHBzOi8vaW1nMi5iYWlkdS5jb20vaXQvdT01MTc4OTMwMjcsMjQ3NDU5NjY5NyZmbT0yNTMmZm10PWF1dG8mYXBwPTEzOCZmPUpQRUc/dz01MDAmaD01OTRAUmVmZXJlcj1cIixcbiAgICAgICAgY29sX3R5cGU6IFwiYXZhdGFyXCIsXG4gICAgfSwge1xuICAgICAgICBjb2xfdHlwZTogXCJiaWdfYmxhbmtfYmxvY2tcIlxuICAgIH0sIHtcbiAgICAgICAgY29sX3R5cGU6IFwiYmlnX2JsYW5rX2Jsb2NrXCJcbiAgICB9KTtcblxuICAgIGxldCBsZWkgPSBbXCLlhajpg6hcIiwgXCLomY7niZlcIiwgXCLmlpfpsbxcIiwgXCLlk5Tlk6lcIiwgXCLmipbpn7NcIiwgXCLnvZHmmJNcIl07XG4gICAgbGV0IGx1cmwgPSBbXCJhbGxcIiwgXCJodXlhXCIsIFwiZG91eXVcIiwgXCJiaWxpYmlsaVwiLCBcImRvdXlpblwiLCBcImNjXCJdO1xuICAgIGZvciAobGV0IGkgaW4gbGVpKSB7XG4gICAgICAgIHMucHVzaCh7XG4gICAgICAgICAgICB0aXRsZTogbHVybFtpXSA9PSBjbGFzID8gXCLigJjigJjigJnigJk8Yj5cIiArIGxlaVtpXS5mb250Y29sb3IoXCIjRkE3Mjk4XCIpICsgXCI8L2I+XCIgOiBsZWlbaV0sXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHVybCkgPT4ge1xuICAgICAgICAgICAgICAgIHB1dE15VmFyKFwiY2xhc3NcIiwgdXJsKTtcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9lbXB0eVwiO1xuICAgICAgICAgICAgfSwgbHVybFtpXSksXG4gICAgICAgICAgICBjb2xfdHlwZTogXCJzY3JvbGxfYnV0dG9uXCJcbiAgICAgICAgfSlcbiAgICB9O1xuICAgIHMucHVzaCh7XG4gICAgICAgIGNvbF90eXBlOiBcImJpZ19ibGFua19ibG9ja1wiXG4gICAgfSwge1xuICAgICAgICBjb2xfdHlwZTogXCJiaWdfYmxhbmtfYmxvY2tcIlxuICAgIH0pO1xuXG4gICAgcy5wdXNoKHtcbiAgICAgICAgaW1nOiBcIlwiLFxuICAgICAgICB1cmw6IFwiaGlrZXI6Ly9lbXB0eVwiLFxuICAgICAgICBjb2xfdHlwZTogXCJjYXJkX3BpY18zXCIsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICBjbHM6IFwiY2xzX2xvYWRcIlxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBpbWc6IFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3dlaXN5ci9pbWcvTG9hZGluZzEuZ2lmXCIsXG4gICAgICAgIHVybDogXCJoaWtlcjovL2VtcHR5XCIsXG4gICAgICAgIGNvbF90eXBlOiBcInBpY18zXCIsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICBjbHM6IFwiY2xzX2xvYWRcIlxuICAgICAgICB9XG4gICAgfSk7XG4gICAgc2V0UHJlUmVzdWx0KHMpO1xufTtcblxuLy/mkJzntKLliJfooahcbmlmIChnZXRNeVZhcihcIk15a2V5XCIpKSB7XG4gICAgaWYgKE1ZX1BBR0UgPT0gJzEnKSB7XG4gICAgICAgIGlmICh1aWQgPT0gXCJcIikge1xuICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogXCLnmbvlvZXlkI7nu6fnu63mkJzntKJcIixcbiAgICAgICAgICAgICAgICBkZXNjOiBcIueCueWHu+eZu+W9lVwiLFxuICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFwic1R5cGVcIiwgJ2xpdmluZycpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9oaXN0b3J5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5Iyc7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFwidGV4dF9jZW50ZXJfMVwiXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IHNzX3VybCA9IGFwaSArIFwic2VhcmNoP3BsYXRmb3JtPVwiICsgY2xhcyArIFwiJmtleVdvcmRzPVwiICsgZ2V0TXlWYXIoXCJNeWtleVwiKSArIFwiJnVpZD1cIiArIHVpZDtcbiAgICAgICAgICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goc3NfdXJsLCBoZWFkZXJzKSkuZGF0YTtcbiAgICAgICAgICAgICAgICBsZXQgcGxhY2UgPSBcInNvXCI7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSBpbiBqc29uKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ganNvbltpXTtcbiAgICAgICAgICAgICAgICAgICAgJC5yZXF1aXJlKFwicHVibGljXCIpLkxpc3RzKGFwaSwgdWlkLCBwbGFjZSwgZCwgZGF0YS5yb29tSWQsIGRhdGEucGxhdGZvcm0sIGRhdGEubmlja05hbWUsIGRhdGEuY2F0ZU5hbWUsIGRhdGEuZm9sbG93ZXJzLCBkYXRhLmhlYWRQaWMsIGRhdGEuaXNMaXZlKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIuKAnOKAnOWIsOW6leS6huWRouKAneKAnVwiLFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAn54K55Ye76L+U5Zue6aaW6aG1JyxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKFwiTXlrZXlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcInRleHRfY2VudGVyXzFcIlxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwi4oCc4oCc5pCc57Si5pyq55+l6ZSZ6K+v4oCd4oCdXCIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXCJ0ZXh0X2NlbnRlcl8xXCJcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHRvYXN0KFwi5pCc57Si5Ye6546w6ZSZ6K+vXCIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9O1xufSBlbHNlIHtcbiAgICAvL+S4u+mhteWIl+ihqFxuICAgIGxldCBob21lID0gYXBpICsgXCJnZXRSZWNvbW1lbmQ/cGFnZT1cIiArIE1ZX1BBR0UgKyBcIiZzaXplPTIwXCI7XG4gICAgbGV0IGZlbiA9IGFwaSArIFwiZ2V0UmVjb21tZW5kQnlQbGF0Zm9ybT9wbGF0Zm9ybT1cIiArIGNsYXMgKyBcIiZwYWdlPVwiICsgTVlfUEFHRSArIFwiJnNpemU9MjBcIjtcbiAgICBsZXQgdXJsID0gY2xhcyA9PSBcImFsbFwiID8gaG9tZSA6IGZlbjtcbiAgICBsZXQgcmVzID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwgaGVhZGVycykpLmRhdGE7XG4gICAgbGV0IHBsYWNlID0gXCJob21lXCI7XG4gICAgZm9yIChsZXQgaSBpbiByZXMpIHtcbiAgICAgICAgbGV0IHRlbXAgPSByZXNbaV07XG4gICAgICAgICQucmVxdWlyZShcInB1YmxpY1wiKS5MaXN0cyhhcGksIHVpZCwgcGxhY2UsIGQsIHRlbXAucm9vbUlkLCB0ZW1wLnBsYXRGb3JtLCB0ZW1wLm93bmVyTmFtZSwgdGVtcC5jYXRlZ29yeU5hbWUsIHRlbXAub25saW5lLCB0ZW1wLnJvb21QaWMsIHRlbXAuaXNMaXZlKTtcbiAgICB9O1xufTtcbmRlbGV0ZUl0ZW1CeUNscyhcImNsc19sb2FkXCIpO1xuc2V0UmVzdWx0KGQpOyIsInNlYXJjaF91cmwiOiJoaWtlcjovL2VtcHR5P2t3PSoqIiwiZ3JvdXAiOiLikaXnm7Tmkq0iLCJzZWFyY2hGaW5kIjoianM6XG5pZiAoZ2V0SXRlbShcInVpZFwiLCBcIlwiKSA9PSBcIlwiKSB7XG4gICAgdmFyIGQgPSBbXTtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogXCLor7flhYjnmbvpmYZcIixcbiAgICAgICAgdXJsOiBcImhpa2VyOi8vcGFnZS9oaXN0b3J5XCJcbiAgICB9KTtcbn0gZWxzZSB7XG4gICAgcHV0TXlWYXIoXCJSX3VsZVwiLCBNWV9SVUxFLnRpdGxlKTtcbiAgICBzZXRSZXN1bHQoW3tcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9zZWFyY2g/cz0nICsgZ2V0UGFyYW0oXCJrd1wiKSxcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIHJ1bGVzOiAkLnRvU3RyaW5nKCgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IFtdOyAkLnJlcXVpcmUoXCJzZWFyY2hcIikuZW5naW5lcy5mb3JFYWNoKChNYXAsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogTWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzZWFyY2hfdXJsXCI6IGJ1aWxkVXJsKFwiaGlrZXI6Ly9lbXB0eVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga3c6IFwiKipcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBcImZ5cGFnZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZTogTWFwXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2VhcmNoRmluZFwiOiBcImpzOiQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3NlYXJjaD9ydWxlPVwiICsgZ2V0TXlWYXIoXCJSX3VsZVwiKSArIFwiJykuc2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiBcIuaQnOe0ou+8mlwiICsgZ2V0UGFyYW0oXCJrd1wiKVxuICAgIH1dKVxufVxuc2V0UmVzdWx0KGQpOyIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqdcIixcInBhdGhcIjpcImRldGFpbFwiLFwicnVsZVwiOlwianM6XFxubGV0IGQgPSBbXTtcXG5sZXQgcyA9IFtdO1xcbnMucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiPGJyPjxicj48YnI+PGJyPjxicj5cXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBjbHM6IFxcXCJjbHNfbG9hZFxcXCJcXG4gICAgfVxcbn0sIHtcXG4gICAgaW1nOiBcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3dlaXN5ci9pbWcvTG9hZGluZzEuZ2lmXFxcIixcXG4gICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwicGljXzFfY2VudGVyXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGNsczogXFxcImNsc19sb2FkXFxcIlxcbiAgICB9XFxufSk7XFxuc2V0UHJlUmVzdWx0KHMpO1xcblxcbmxldCBhcGkgPSAkLnJlcXVpcmUoXFxcInB1YmxpY1xcXCIpLkFwaTtcXG5sZXQgaGVhZGVycyA9ICQucmVxdWlyZShcXFwicHVibGljXFxcIikuaGVhZGVycztcXG5sZXQgdWlkID0gZ2V0SXRlbShcXFwidWlkXFxcIiwgXFxcIlxcXCIpO1xcbmxldCBwbGF0Zm9ybSA9IGdldFBhcmFtKFxcXCJwbGF0Zm9ybVxcXCIpO1xcbmxldCByb29taWQgPSBnZXRQYXJhbShcXFwicm9vbUlkXFxcIik7XFxuXFxubGV0IHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdChhcGkgKyBcXFwiZ2V0Um9vbUluZm8/dWlkPVxcXCIgKyB1aWQgKyBcXFwiJnBsYXRmb3JtPVxcXCIgKyBwbGF0Zm9ybSArIFxcXCImcm9vbUlkPVxcXCIgKyByb29taWQsIGhlYWRlcnMpKTtcXG5cXG5pZiAocGxhdGZvcm0gPT0gXFxcImRvdXl1XFxcIikge1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vbS5kb3V5dS5jb20vXFxcIiArIHJvb21pZDtcXG59IGVsc2UgaWYgKHBsYXRmb3JtID09IFxcXCJodXlhXFxcIikge1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vbS5odXlhLmNvbS9cXFwiICsgcm9vbWlkO1xcbn0gZWxzZSBpZiAocGxhdGZvcm0gPT0gXFxcImJpbGliaWxpXFxcIikge1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vbGl2ZS5iaWxpYmlsaS5jb20vaDUvXFxcIiArIHJvb21pZDtcXG59IGVsc2UgaWYgKHBsYXRmb3JtID09IFxcXCJkb3V5aW5cXFwiKSB7XFxuICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9saXZlLmRvdXlpbi5jb20vXFxcIiArIHJvb21pZDtcXG59IGVsc2Uge1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vaDUuY2MuMTYzLmNvbS9jYy9cXFwiICsgcm9vbWlkO1xcbn07XFxuXFxubGV0IHJvb21waWMgPSByZXMuZGF0YS5yb29tUGljO1xcbmxldCBvd25lcnBpYyA9IHJlcy5kYXRhLm93bmVySGVhZFBpYztcXG5sZXQgcGxhdCA9IHBsYXRmb3JtLnJlcGxhY2UoJ2h1eWEnLCAn6JmO54mZJykucmVwbGFjZSgnZG91eXUnLCAn5paX6bG8JykucmVwbGFjZSgnY2MnLCAn572R5piTQ0MnKS5yZXBsYWNlKFxcXCJiaWxpYmlsaVxcXCIsIFxcXCLlk5Tlk6lcXFwiKS5yZXBsYWNlKFxcXCJkb3V5aW5cXFwiLCBcXFwi5oqW6Z+zXFxcIik7XFxubGV0IGNhdGVnb3J5ID0gcmVzLmRhdGEuY2F0ZWdvcnlOYW1lO1xcbmxldCBMaXZlID0gcmVzLmRhdGEuaXNMaXZlID09IDEgPyBcXFwi55u05pKt5LitXFxcIiA6IFxcXCLmnKrnm7Tmkq1cXFwiO1xcbmxldCBjY2xzID0gTVlfUEFSQU1TLmNscztcXG5sZXQg5LiHID0gIS9jbHMtaG9tZS8udGVzdChjY2xzKSA/IFxcXCLkuIfnsonkuJ1cXFwiIDogXFxcIuS4h1xcXCI7XFxubGV0IOS6uiA9ICEvY2xzLWhvbWUvLnRlc3QoY2NscykgPyBcXFwi57KJ5LidXFxcIiA6IFxcXCLkurpcXFwiO1xcbmxldCBvbmxpbmUgPSByZXMuZGF0YS5vbmxpbmU7XFxubGV0IGxpbmUgPSBvbmxpbmUgPj0gXFxcIjEwMDAwXFxcIiA/IChvbmxpbmUgLyAxMDAwMCkudG9GaXhlZCgxKSArIOS4hyA6IG9ubGluZSArIOS6ujtcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogcmVzLmRhdGEub3duZXJOYW1lLFxcbiAgICBpbWc6IChyb29tcGljICE9PSBcXFwiXFxcIiA/IHJvb21waWMgOiBvd25lcnBpYykgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgZGVzYzogXFxcIuWIhuWMuu+8mlxcXCIgKyBwbGF0ICsgKGNhdGVnb3J5ICE9PSBcXFwiXFxcIiA/IFxcXCLCt1xcXCIgKyBjYXRlZ29yeSA6IFxcXCJcXFwiKSArIFxcXCJcXFxcbueKtuaAge+8mlxcXCIgKyBMaXZlICsgXFxcIsK3XFxcIiArIGxpbmUgKyBcXFwiXFxcXG7ngrnlh7vkuIvmlrnkuLvmkq3lpLTlg4/ov5vlhaXlrpjnvZFcXFwiLFxcbiAgICB1cmw6IChyb29tcGljICE9PSBcXFwiXFxcIiA/IHJvb21waWMgOiBvd25lcnBpYykgKyBcXFwiI2lnbm9yZVZpZGVvPXRydWUjXFxcIixcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGdyYWRpZW50OiB0cnVlXFxuICAgIH1cXG59LCB7XFxuICAgIHRpdGxlOiByZXMuZGF0YS5vd25lck5hbWUsXFxuICAgIGltZzogb3duZXJwaWMgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgdXJsOiB1cmwsXFxuICAgIGNvbF90eXBlOiBcXFwiaWNvbl8yX3JvdW5kXFxcIlxcbn0pO1xcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBnZXRJdGVtKHBsYXRmb3JtICsgcm9vbWlkLCBcXFwiMFxcXCIpID09IDEgPyBcXFwi5bey5YWz5rOoXFxcIiA6IFxcXCLmnKrlhbPms6hcXFwiLFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGFwaSwgdWlkLCBoZWFkZXJzLCByb29taWQsIHBsYXRmb3JtKSA9PiB7XFxuICAgICAgICBpZiAoZ2V0SXRlbShwbGF0Zm9ybSArIHJvb21pZCwgXFxcIjBcXFwiKSA9PSBcXFwiMFxcXCIpIHtcXG4gICAgICAgICAgICB2YXIgZm9sbCA9IFxcXCJmb2xsb3dcXFwiO1xcbiAgICAgICAgICAgIHNldEl0ZW0ocGxhdGZvcm0gKyByb29taWQsIFxcXCIxXFxcIik7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZhciBmb2xsID0gXFxcInVuRm9sbG93XFxcIjtcXG4gICAgICAgICAgICBjbGVhckl0ZW0ocGxhdGZvcm0gKyByb29taWQpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGxldCB0aXQgPSBnZXRJdGVtKHBsYXRmb3JtICsgcm9vbWlkLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgdXBkYXRlSXRlbShcXFwiaWRfaXNGb2xsb3dlZFxcXCIsIHtcXG4gICAgICAgICAgICB0aXRsZTogdGl0ID09IDEgPyBcXFwi5bey5YWz5rOoXFxcIiA6IFxcXCLmnKrlhbPms6hcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGxldCByZSA9IEpTT04ucGFyc2UocmVxdWVzdChhcGkgKyBmb2xsICsgXFxcIj9wbGF0Zm9ybT1cXFwiICsgcGxhdGZvcm0gKyBcXFwiJnJvb21JZD1cXFwiICsgcm9vbWlkICsgXFxcIiZ1aWQ9XFxcIiArIHVpZCwgaGVhZGVycykpO1xcblxcbiAgICAgICAgbGV0IGxpc3QgPSBmaW5kSXRlbXNCeUNscyhcXFwiY2xzX1N1YnNcXFwiKSB8fCBbXTtcXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ayoeacieiOt+WPluWIsOWIl+ihqFxcXCJcXG4gICAgICAgIH07XFxuICAgICAgICBmb3IgKGxldCBpIGluIGxpc3QpIHtcXG4gICAgICAgICAgICBsZXQgbGkgPSBsaXN0W2ldO1xcbiAgICAgICAgICAgIGxldCBjbHMgPSBsaS5leHRyYS5jbHM7XFxuICAgICAgICAgICAgbGV0IGpzMiA9IGxpLmV4dHJhLmxvbmdDbGlja1sxXS5qcztcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJpZF9cXFwiICsgcGxhdGZvcm0gKyByb29taWQsIHtcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGNsczogY2xzLFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFxcXCJpZF9cXFwiICsgcGxhdGZvcm0gKyByb29taWQsXFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdCA9PSBcXFwiMVxcXCIgPyBcXFwi5bey5YWz5rOoXFxcIiA6IFxcXCLmnKrlhbPms6hcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnJlcXVpcmUoXFxcInB1YmxpY1xcXCIpLkxvbmdDbGljayhhcGksIHVpZCwgcm9vbWlkLCBwbGF0Zm9ybSksXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLlrpjnvZHpk77mjqVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiBqczJcXG4gICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcInNUeXBlXFxcIiwgXFxcIlxcXCIpICE9PSBcXFwiXFxcIiAmJiB0aXQgPT0gMCkge1xcbiAgICAgICAgICAgICAgICBkZWxldGVJdGVtKFxcXCJpZF9cXFwiICsgcGxhdGZvcm0gKyByb29taWQpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9O1xcbiAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXCIgKyByZS5kYXRhO1xcbiAgICB9LCBhcGksIHVpZCwgaGVhZGVycywgcm9vbWlkLCBwbGF0Zm9ybSksXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiBcXFwiaWRfaXNGb2xsb3dlZFxcXCJcXG4gICAgfVxcbn0sIHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbn0sIHtcXG4gICAgdGl0bGU6IFxcXCLpgInmi6nnur/ot69cXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbn0pO1xcblxcbmZ1bmN0aW9uIExpdmVzKGlzTGl2ZSkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgZGVzYzogaXNMaXZlID09IDAgPyBcXFwi55u0ICAg5pKtICAg5beyICAg57uTICAg5p2fXFxcIiA6IFxcXCLnm7QgICDmkq0gICDlt7IgICDnu5MgICDmnZ9cXFxcblxcXFxu5oiWICDmsqEgIOaciSAg6I63ICDlj5YgIOWIsCAg5pWwICDmja5cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgIH1cXG4gICAgfSlcXG59O1xcbmxldCBpc0xpdmUgPSByZXMuZGF0YS5pc0xpdmU7XFxuaWYgKGlzTGl2ZSA9PSAwKSB7XFxuICAgIExpdmVzKGlzTGl2ZSk7XFxufSBlbHNlIHtcXG4gICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGZldGNoKGFwaSArIFxcXCJnZXRSZWFsVXJsTXVsdGlTb3VyY2U/cGxhdGZvcm09XFxcIiArIHBsYXRmb3JtICsgXFxcIiZyb29tSWQ9XFxcIiArIHJvb21pZCwgaGVhZGVycykpLmRhdGEgfHwgW107XFxuICAgIGlmIChPYmplY3Qua2V5cyhqc29uKS5sZW5ndGggIT09IDApIHtcXG4gICAgICAgIGZvciAobGV0IHhsIGluIGpzb24pIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogeGwsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChsaXN0LCBtaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gW107XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXJscyA9IFtdXFxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGxpc3QpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGkgPSBsaXN0W2ldO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUucHVzaChsaS5xdWFsaXR5TmFtZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxzLnB1c2gobGkucGxheVVybClcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodXJscykgIT09ICdbXFxcIlxcXCJdJyA/IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lczogbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxzOiB1cmxzLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhbm11OiAvZG91eXXmmoLml6AvLnRlc3QodXJscykgPyBcXFwid2ViOi8vaHR0cDovL2RvdXl1X2Rhbm11LmRldi50eXJhbnRnLmNvbS8/cmlkPVxcXCIgKyBtaWQgKyBcXFwiJnZlcj0xXFxcIiA6IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KSA6IFxcXCJ0b2FzdDovL+ebtOaSreW3sue7k+adn+aIluayoeacieiOt+WPluWIsOaVsOaNrlxcXCJcXG4gICAgICAgICAgICAgICAgfSwganNvblt4bF0sIHJvb21pZClcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIExpdmVzKGlzTGl2ZSk7XFxuICAgIH07XFxufTtcXG5kZWxldGVJdGVtQnlDbHMoXFxcImNsc19sb2FkXFxcIik7XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YWz5rOo5YiX6KGoXCIsXCJwYXRoXCI6XCJoaXN0b3J5XCIsXCJydWxlXCI6XCJqczpcXG5hZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBjbGVhck15VmFyKCdzVHlwZScpO1xcbiAgICBjbGVhck15VmFyKCdzdWJzJyk7XFxufSkpO1xcbi8vc2V0UGFnZVRpdGxlKFxcXCLlhbPms6hcXFwiKTtcXG5sZXQgcyA9IFtdO1xcbmxldCBkID0gW107XFxubGV0IGFwaSA9ICQucmVxdWlyZShcXFwicHVibGljXFxcIikuQXBpO1xcbmxldCB1aWQgPSBnZXRJdGVtKFxcXCJ1aWRcXFwiLCBcXFwiXFxcIik7XFxubGV0IGhlYWRlcnMgPSAkLnJlcXVpcmUoXFxcInB1YmxpY1xcXCIpLmhlYWRlcnM7XFxubGV0IG9mZiA9IFxcXCJodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21lc3N5LzYzLnN2Z1xcXCI7XFxubGV0IG9uID0gXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvNTUuc3ZnXFxcIjtcXG5sZXQgemMgPSBnZXRNeVZhcihcXFwienVjZVxcXCIsIFxcXCLms6gg5YaMXFxcIik7XFxucy5wdXNoKHtcXG4gICAgdGl0bGU6IGdldEl0ZW0oXFxcIm5pY2tuYW1lXFxcIiwgemMpLFxcbiAgICB1cmw6IHVpZCA9PSBcXFwiXFxcIiA/ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHpjKSA9PiB7XFxuICAgICAgICBwdXRNeVZhcihcXFwienVjZVxcXCIsIHpjID09IFxcXCLms6gg5YaMXFxcIiA/IFxcXCLnmbsg5b2VXFxcIiA6IFxcXCLms6gg5YaMXFxcIik7XFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICB9LCB6YykgOiAkKFxcXCLmmK/lkKbms6jplIDvvJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgIGNsZWFySXRlbShcXFwidWlkXFxcIik7XFxuICAgICAgICBjbGVhckl0ZW0oXFxcImFjY291bnRcXFwiKTtcXG4gICAgICAgIGNsZWFySXRlbShcXFwicGFzc3dvcmRcXFwiKTtcXG4gICAgICAgIGNsZWFySXRlbShcXFwibmlja25hbWVcXFwiKTtcXG4gICAgICAgIGNsZWFySXRlbShcXFwidXNlcm5hbWVcXFwiKTtcXG4gICAgICAgIGJhY2sodHJ1ZSk7XFxuICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5rOo6ZSA5oiQ5YqfXFxcIjtcXG4gICAgfSksXFxuICAgIGltZzogXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8va2UvNzMucG5nXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJpY29uXzJcXFwiXFxufSwge1xcbiAgICB0aXRsZTogXFxcIuWkmue6v+i3r1xcXCIsXFxuICAgIGltZzogZ2V0SXRlbShcXFwibXVsdGlsaW5lXFxcIiwgXFxcIjBcXFwiKSA9PSBcXFwiMFxcXCIgPyBvZmYgOiBvbixcXG4gICAgY29sX3R5cGU6IFxcXCJpY29uXzJcXFwiLFxcbiAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGFwaSwgb24sIG9mZikgPT4ge1xcbiAgICAgICAgaWYgKGdldEl0ZW0oXFxcIm11bHRpbGluZVxcXCIsIFxcXCIwXFxcIikgPT0gXFxcIjBcXFwiKSB7XFxuICAgICAgICAgICAgc2V0SXRlbShcXFwibXVsdGlsaW5lXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgY2xlYXJJdGVtKFxcXCJtdWx0aWxpbmVcXFwiKTtcXG4gICAgICAgIH07XFxuICAgICAgICBsZXQgbXVsID0gZ2V0SXRlbShcXFwibXVsdGlsaW5lXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgICAgIHVwZGF0ZUl0ZW0oXFxcImlkX211bHRpbGluZVxcXCIsIHtcXG4gICAgICAgICAgICBpbWc6IG11bCA9PSBcXFwiMFxcXCIgPyBvZmYgOiBvblxcbiAgICAgICAgfSk7XFxuXFxuICAgICAgICBsZXQgY2xscyA9IGdldE15VmFyKFxcXCJNeWtleVxcXCIsIFxcXCJcXFwiKSAhPT0gXFxcIlxcXCIgPyBcXFwiY2xzLXNvXFxcIiA6IFxcXCJjbHMtaG9tZVxcXCI7XFxuICAgICAgICBsZXQgaG9tZSA9IGZpbmRJdGVtc0J5Q2xzKGNsbHMpIHx8IFtdO1xcbiAgICAgICAgbGV0IFN1YnMgPSBmaW5kSXRlbXNCeUNscyhcXFwiY2xzLVN1YnNcXFwiKSB8fCBbXTtcXG4gICAgICAgIGlmIChTdWJzLmxlbmd0aCA9PSAwIHx8IGhvbWUubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5rKh5pyJ6I635Y+W5Yiw5YiX6KGoXFxcIlxcbiAgICAgICAgfTtcXG5cXG4gICAgICAgIGZ1bmN0aW9uIGR4bHN4KFMpIHtcXG4gICAgICAgICAgICBsZXQgaXNMaXZlID0gUy5leHRyYS5pc0xpdmU7XFxuICAgICAgICAgICAgbGV0IGZvcm0gPSBTLnVybC5tYXRjaCgvcGxhdGZvcm09KC4qKSYvKVsxXTtcXG4gICAgICAgICAgICBsZXQgbWlkID0gL2hpa2VyLy50ZXN0KFMudXJsKSA/IFMudXJsLnNwbGl0KFxcXCJyb29tSWQ9XFxcIilbMV0gOiBTLnVybC5zcGxpdChcXFwicm9vbUlkPVxcXCIpWzFdLnNwbGl0KFxcXCJAXFxcIilbMF07XFxuICAgICAgICAgICAgbGV0IHVybCA9IG11bCA9PSBcXFwiMFxcXCIgPyBhcGkgKyBcXFwiZ2V0UmVhbFVybE11bHRpU291cmNlP3BsYXRmb3JtPVxcXCIgKyBmb3JtICsgXFxcIiZyb29tSWQ9XFxcIiArIG1pZCArICQucmVxdWlyZShcXFwicHVibGljXFxcIikuTGF6eShpc0xpdmUpIDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/I2ltbWVyc2l2ZVRoZW1lIyZwbGF0Zm9ybT1cXFwiICsgZm9ybSArIFxcXCImcm9vbUlkPVxcXCIgKyBtaWQ7XFxuICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiaWRfXFxcIiArIGZvcm0gKyBtaWQsIHtcXG4gICAgICAgICAgICAgICAgdXJsOiB1cmxcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH07XFxuICAgICAgICBmb3IgKGxldCBzIGluIFN1YnMpIHtcXG4gICAgICAgICAgICBsZXQgUyA9IFN1YnNbc107XFxuICAgICAgICAgICAgZHhsc3goUyk7XFxuICAgICAgICB9O1xcbiAgICAgICAgZm9yIChsZXQgaCBpbiBob21lKSB7XFxuICAgICAgICAgICAgbGV0IEggPSBob21lW2hdO1xcbiAgICAgICAgICAgIGR4bHN4KEgpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgIH0sIGFwaSwgb24sIG9mZiksXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogXFxcImlkX211bHRpbGluZVxcXCJcXG4gICAgfVxcbn0pXFxuaWYgKHVpZCA9PSBcXFwiXFxcIikge1xcbiAgICBpZiAoemMgPT0gXFxcIueZuyDlvZVcXFwiKSB7XFxuICAgICAgICBzLnB1c2goe1xcbiAgICAgICAgICAgIGRlc2M6IFxcXCLmmLXnp7Ag77yIMS0yMOS9je+8iVxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJzZXRJdGVtKCduaWNrJywgaW5wdXQpXFxcIixcXG4gICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCJcXG4gICAgICAgIH0pXFxuICAgIH07XFxuICAgIHMucHVzaCh7XFxuICAgICAgICBkZXNjOiBcXFwi6LSm5Y+3IO+8iDYtMjDkvY3mlbDlrZfmiJboi7HmlofvvIlcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInNldEl0ZW0oJ2FjY291bnQnLCBpbnB1dClcXFwiLFxcbiAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2VcXG4gICAgICAgIH0sXFxuICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIlxcbiAgICB9LCB7XFxuICAgICAgICBkZXNjOiBcXFwi5a+G56CBIO+8iDYtMjDkvY3mlbDlrZfmiJboi7HmlofvvIlcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInNldEl0ZW0oJ3Bhc3N3b3JkJywgaW5wdXQpXFxcIixcXG4gICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlXFxuICAgICAgICB9LFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCJcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IHpjID09IFxcXCLms6gg5YaMXFxcIiA/IFxcXCLnmbsgIOW9lVxcXCIgOiBcXFwi5rOoIOWGjFxcXCIsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHpjKSA9PiB7XFxuICAgICAgICAgICAgbGV0IHJlZ2luID0gemMgPT0gXFxcIueZuyDlvZVcXFwiID8gXFxcInJlZ2lzdGVyXFxcIiA6IFxcXCJsb2dpblxcXCI7XFxuICAgICAgICAgICAgbGV0IG5pY2sgPSB6YyA9PSBcXFwi55m7IOW9lVxcXCIgPyBcXFwiJm5pY2tuYW1lPVxcXCIgKyBnZXRJdGVtKFxcXCJuaWNrXFxcIiwgXFxcIlxcXCIpIDogXFxcIlxcXCI7XFxuICAgICAgICAgICAgbGV0IGFjY291bnQgPSBnZXRJdGVtKFxcXCJhY2NvdW50XFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgIGxldCBwYXNzd29yZCA9IGdldEl0ZW0oXFxcInBhc3N3b3JkXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgIGlmIChhY2NvdW50ID09IFxcXCJcXFwiIHx8IHBhc3N3b3JkID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/luJDlj7fmiJblr4bnoIHkuI3og73kuLrnqbrvvIFcXFwiO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGxldCBjb29raWVzID0gSlNPTi5wYXJzZShwb3N0KCQucmVxdWlyZShcXFwicHVibGljXFxcIikuQXBpLnJlcGxhY2UoXFxcImxpdmUvXFxcIiwgXFxcIlxcXCIpICsgcmVnaW4gKyBcXFwiP3VzZXJuYW1lPVxcXCIgKyBhY2NvdW50ICsgbmljayArIFxcXCImcGFzc3dvcmQ9XFxcIiArIG1kNShwYXNzd29yZCksICQucmVxdWlyZShcXFwicHVibGljXFxcIikuaGVhZGVycykpO1xcbiAgICAgICAgICAgICAgICAvL2xvZyhjb29raWVzKVxcbiAgICAgICAgICAgICAgICBpZiAoY29va2llcy5jb2RlID09IDIwMCkge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwidWlkXFxcIiwgY29va2llcy5kYXRhLnVpZCk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJuaWNrbmFtZVxcXCIsIGNvb2tpZXMuZGF0YS5uaWNrTmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJ1c2VybmFtZVxcXCIsIGNvb2tpZXMuZGF0YS51c2VyTmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICBiYWNrKCk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oXFxcIm5pY2tcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcInp1Y2VcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB6YyA9PSBcXFwi55m7IOW9lVxcXCIgPyBcXFwidG9hc3Q6Ly/ms6jlhozmiJDlip/vvIzlt7LnmbvlvZVcXFwiIDogXFxcInRvYXN0Oi8v55m75b2V5oiQ5YqfXFxcIjtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh6YyA9PSBcXFwi55m7IOW9lVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcIiArIGNvb2tpZXMubWVzc2FnZTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKFxcXCJuaWNrbmFtZVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbShcXFwidXNlcm5hbWVcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oXFxcInVpZFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/nmbvpmYblpLHotKXvvIzlj6/og73mmK/nlKjmiLflkI3miJblr4bnoIHmnInor69cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9LCB6YyksXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgIH1cXG4gICAgfSlcXG59O1xcbnMucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0sIHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbn0sIHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiLFxcbn0pO1xcbmxldCBwbGFjZSA9IFxcXCJTdWJzXFxcIjtcXG5sZXQgc1R5cGUgPSBnZXRNeVZhcihcXFwic1R5cGVcXFwiKTtcXG5cXG5zLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuaIkeeahOWFs+azqFxcXCIsXFxuICAgIGltZzogXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vcS8xMDMucG5nXFxcIixcXG4gICAgZGVzYzogc1R5cGUgPT0gXFxcImxpdmluZ1xcXCIgPyBcXFwi55u05pKt5LitXFxcXHRcXFwiIDogXFxcIuacquW8gOaSrVxcXFx0XFxcIixcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChhcGksIHVpZCwgcGxhY2UpID0+IHtcXG4gICAgICAgIGlmIChnZXRNeVZhcihcXFwic1R5cGVcXFwiKSA9PSBcXFwibGl2aW5nXFxcIikge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJzVHlwZVxcXCIsIFxcXCJvdXRsaW5lXFxcIik7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJzVHlwZVxcXCIsIFxcXCJsaXZpbmdcXFwiKTtcXG4gICAgICAgIH07XFxuXFxuICAgICAgICBsZXQgc1R5cCA9IGdldE15VmFyKFxcXCJzVHlwZVxcXCIpO1xcbiAgICAgICAgdXBkYXRlSXRlbShcXFwiaWRfZ3pidFxcXCIsIHtcXG4gICAgICAgICAgICBkZXNjOiBzVHlwID09IFxcXCJsaXZpbmdcXFwiID8gXFxcIuebtOaSreS4rVxcXFx0XFxcIiA6IFxcXCLmnKrlvIDmkq1cXFxcdFxcXCJcXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKFxcXCJjbHMtU3Vic1xcXCIpO1xcbiAgICAgICAgbGV0IHJlcyA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJzdWJzXFxcIik7XFxuICAgICAgICBsZXQgc3UgPSBbXTtcXG4gICAgICAgIGZvciAobGV0IGkgaW4gcmVzKSB7XFxuICAgICAgICAgICAgbGV0IHRlbXAgPSByZXNbaV07XFxuICAgICAgICAgICAgaWYgKHNUeXAgPT0gXFxcImxpdmluZ1xcXCIpIHtcXG4gICAgICAgICAgICAgICAgaWYgKHRlbXAuaXNMaXZlID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICQucmVxdWlyZShcXFwicHVibGljXFxcIikuTGlzdHMoYXBpLCB1aWQsIHBsYWNlLCBzdSwgdGVtcC5yb29tSWQsIHRlbXAucGxhdEZvcm0sIHRlbXAub3duZXJOYW1lLCB0ZW1wLmNhdGVnb3J5TmFtZSwgdGVtcC5vbmxpbmUsIHRlbXAucm9vbVBpYywgdGVtcC5pc0xpdmUpO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH0gZWxzZVxcbiAgICAgICAgICAgIGlmICh0ZW1wLmlzTGl2ZSA9PSAwICYmIHRlbXAucGxhdEZvcm0gIT09IG51bGwpIHtcXG4gICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJwdWJsaWNcXFwiKS5MaXN0cyhhcGksIHVpZCwgcGxhY2UsIHN1LCB0ZW1wLnJvb21JZCwgdGVtcC5wbGF0Rm9ybSwgdGVtcC5vd25lck5hbWUsIHRlbXAuY2F0ZWdvcnlOYW1lLCB0ZW1wLm9ubGluZSwgdGVtcC5vd25lckhlYWRQaWMsIHRlbXAuaXNMaXZlKTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfTtcXG4gICAgICAgIGFkZEl0ZW1BZnRlcihcXFwiaWRfZ3psYlxcXCIsIHN1KTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgIH0sIGFwaSwgdWlkLCBwbGFjZSksXFxuICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiBcXFwiaWRfZ3pidFxcXCJcXG4gICAgfVxcbn0pXFxuXFxucy5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiBcXFwiaWRfZ3psYlxcXCJcXG4gICAgfVxcbn0pO1xcbnMucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGNsczogXFxcImNsc19sb2FkXFxcIlxcbiAgICB9XFxufSwge1xcbiAgICBpbWc6IFxcXCJodHRwczovL2hpa2VyZmFucy5jb20vd2Vpc3lyL2ltZy9Mb2FkaW5nMS5naWZcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJwaWNfMV9jZW50ZXJcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgY2xzOiBcXFwiY2xzX2xvYWRcXFwiXFxuICAgIH1cXG59KTtcXG5zZXRQcmVSZXN1bHQocyk7XFxuaWYgKHVpZCA9PSBcXFwiXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgIH0sIHtcXG4gICAgICAgIGRlc2M6IFxcXCLnmbsg5b2VIOWQjiDmn6Ug55yLIOWFsyDms6hcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgIH1cXG4gICAgfSk7XFxufSBlbHNlIHtcXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdChhcGkgKyBcXFwiZ2V0Um9vbXNPbj91aWQ9XFxcIiArIHVpZCwgaGVhZGVycykpLmRhdGE7XFxuICAgIGlmIChyZXMubGVuZ3RoID09IDApIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgZGVzYzogXFxcIua3uyDliqAg5YWzIOazqCDlkI4g5p+lIOeci1xcXCIsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCJzdWJzXFxcIiwgcmVzKTtcXG4gICAgICAgIGZvciAobGV0IGkgaW4gcmVzKSB7XFxuICAgICAgICAgICAgbGV0IHRlbXAgPSByZXNbaV07XFxuICAgICAgICAgICAgaWYgKHNUeXBlID09IFxcXCJsaXZpbmdcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGlmICh0ZW1wLmlzTGl2ZSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAkLnJlcXVpcmUoXFxcInB1YmxpY1xcXCIpLkxpc3RzKGFwaSwgdWlkLCBwbGFjZSwgZCwgdGVtcC5yb29tSWQsIHRlbXAucGxhdEZvcm0sIHRlbXAub3duZXJOYW1lLCB0ZW1wLmNhdGVnb3J5TmFtZSwgdGVtcC5vbmxpbmUsIHRlbXAucm9vbVBpYywgdGVtcC5pc0xpdmUpO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH0gZWxzZVxcbiAgICAgICAgICAgIGlmICh0ZW1wLmlzTGl2ZSA9PSAwICYmIHRlbXAucGxhdEZvcm0gIT09IG51bGwpIHtcXG4gICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJwdWJsaWNcXFwiKS5MaXN0cyhhcGksIHVpZCwgcGxhY2UsIGQsIHRlbXAucm9vbUlkLCB0ZW1wLnBsYXRGb3JtLCB0ZW1wLm93bmVyTmFtZSwgdGVtcC5jYXRlZ29yeU5hbWUsIHRlbXAub25saW5lLCB0ZW1wLm93bmVySGVhZFBpYywgdGVtcC5pc0xpdmUpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9O1xcbiAgICB9O1xcbn07XFxuZGVsZXRlSXRlbUJ5Q2xzKFxcXCJjbHNfbG9hZFxcXCIpO1xcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaAu+WIhuexu1wiLFwicGF0aFwiOlwibmV3Q2xhc3NcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxubGV0IHMgPSBbXTtcXG5hZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBjbGVhck15VmFyKFxcXCJOYW1lc1xcXCIpO1xcbiAgICAvL2NsZWFyTXlWYXIoJ015cHQnKTtcXG4gICAgfSkpO1xcbmxldCBhcGkgPSAkLnJlcXVpcmUoXFxcInB1YmxpY1xcXCIpLkFwaTtcXG5sZXQgaGVhZGVycyA9ICQucmVxdWlyZShcXFwicHVibGljXFxcIikuaGVhZGVycztcXG5sZXQgaW1n6YCJ5LitID0gXFxcImh0dHBzOi8vaW1nMi5iYWlkdS5jb20vaXQvdT02MDIzODUwMiw5MzYwODgwMjUmZm09MjUzJmZtdD1hdXRvJmFwcD0xMzgmZj1KUEVHP3c9NTAwJmg9NTgyQFJlZmVyZXI9XFxcIjtcXG5sZXQgaW1n5pyq6YCJID0gXFxcImh0dHBzOi8vaW1nMC5iYWlkdS5jb20vaXQvdT05NjA1NDkwODQsMzI0MjY5MjgxNyZmbT0yNTMmZm10PWF1dG8mYXBwPTEzOCZmPUpQRUc/dz01MDAmaD01MDBAUmVmZXJlcj1cXFwiO1xcbnMucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi54mI5Z2X5YiG57G7XFxcIixcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICBjbGVhck15VmFyKCdNeWZsJylcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSksXFxuICAgIGltZzogZ2V0TXlWYXIoXFxcIk15ZmxcXFwiKSA9PSAnJyA/IGltZ+mAieS4rSA6IGltZ+acqumAiSxcXG4gICAgY29sX3R5cGU6IFxcXCJpY29uXzJcXFwiXFxufSwge1xcbiAgICB0aXRsZTogXFxcIuW5s+WPsOWIhuexu1xcXCIsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgcHV0TXlWYXIoXFxcIk15ZmxcXFwiLCAncHQnKVxcbiAgICAgICAgLypjbGVhck15VmFyKCdNeXB0JykqL1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9KSxcXG4gICAgaW1nOiBnZXRNeVZhcihcXFwiTXlmbFxcXCIpID09ICcnID8gaW1n5pyq6YCJIDogaW1n6YCJ5LitLFxcbiAgICBjb2xfdHlwZTogXFxcImljb25fMlxcXCJcXG59KTtcXG5cXG4vL+W5s+WPsOWIhuexu1xcbmlmIChnZXRNeVZhcihcXFwiTXlmbFxcXCIpKSB7XFxuICAgIGxldCBmcm8gPSBcXFwiTXlwdFxcXCI7XFxuICAgICQucmVxdWlyZShcXFwicHVibGljXFxcIikuRnJvbShzLCBmcm8pO1xcbiAgICBzLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxuICAgIH0sIHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxuICAgIH0sIHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG4gICAgfSk7XFxufTtcXG5zLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBjbHM6IFxcXCJjbHNfbG9hZFxcXCJcXG4gICAgfVxcbn0sIHtcXG4gICAgaW1nOiBcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3dlaXN5ci9pbWcvTG9hZGluZzEuZ2lmXFxcIixcXG4gICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwicGljXzFfY2VudGVyXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGNsczogXFxcImNsc19sb2FkXFxcIlxcbiAgICB9XFxufSk7XFxuc2V0UHJlUmVzdWx0KHMpO1xcblxcbi8v5bmz5Y+w5YiX6KGoXFxuaWYgKGdldE15VmFyKFxcXCJNeWZsXFxcIikpIHtcXG4gICAgbGV0IHB0X3VybCA9IGFwaSArIFxcXCJnZXRBcmVhcz9wbGF0Zm9ybT1cXFwiICsgZ2V0TXlWYXIoXFxcIk15cHRcXFwiLCBcXFwiaHV5YVxcXCIpO1xcbiAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShyZXF1ZXN0KHB0X3VybCwgaGVhZGVycykpLmRhdGE7XFxuICAgIC8vbG9nKHJlcylcXG4gICAgZm9yIChsZXQgaiBpbiByZXMpIHtcXG4gICAgICAgIGxldCB0ZW1wID0gcmVzW2pdO1xcbiAgICAgICAgZm9yIChkYXRhIG9mIHRlbXApXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEuYXJlYU5hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogKGdldE15VmFyKFxcXCJNeXB0XFxcIiwgXFxcImh1eWFcXFwiKSAhPT0gXFxcImRvdXlpblxcXCIgPyBkYXRhLmFyZWFQaWMgOiBcXFwiaHR0cHM6Ly93d3cuZG91eWluLmNvbS9mYXZpY29uLmljb1xcXCIpICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9uZXdDbGFzc0xpc3Q/cGFnZT1meXBhZ2UmcGxhdGZvcm09XFxcIiArIGRhdGEucGxhdGZvcm0gKyBcXFwiJmFyZWE9XFxcIiArIGRhdGEuYXJlYU5hbWUsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl81XFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgIH07XFxufSBlbHNlIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG4gICAgfSwge1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lXFxcIlxcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG4gICAgfSwge1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZDogXFxcImlkX2p1c3RkbHpcXFwiXFxuICAgICAgICB9XFxuICAgIH0pO1xcblxcbiAgICAvL+eJiOWdl+WIhuexu1xcbiAgICB2YXIgdXJsID0gYXBpICsgJ2dldEFsbEFyZWFzJztcXG4gICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIGhlYWRlcnMpKS5kYXRhO1xcbiAgICAvL2xvZyhyZXMpXFxuXFxuICAgIHZhciB0eXBlTmFtZXMgPSBbXTtcXG4gICAgdmFyIGJpZ0xpc3QgPSBbXTtcXG4gICAgdmFyIHNtYWxsTGlzdCA9IFtdO1xcbiAgICBwdXRNeVZhcihcXFwidHlwZU5hbWVWYXJcXFwiLCAhZ2V0TXlWYXIoJ3R5cGVOYW1lVmFyJykgPyAn5YWo6YOoJyA6IGdldE15VmFyKCd0eXBlTmFtZVZhcicpKTtcXG4gICAgcHV0TXlWYXIoJ2FyZWEnLCAnYXJlYU5hbWUnKVxcblxcbiAgICBmb3IgKGxldCBpIGluIHJlcykge1xcbiAgICAgICAgbGV0IHIgPSByZXNbaV07XFxuICAgICAgICBmb3IgKGxldCB4IG9mIHIpIHtcXG4gICAgICAgICAgICBpZiAoIXR5cGVOYW1lcy5pbmNsdWRlcyh4LnR5cGVOYW1lKSkge1xcbiAgICAgICAgICAgICAgICB0eXBlTmFtZXMucHVzaCh4LnR5cGVOYW1lKTtcXG4gICAgICAgICAgICAgICAgYmlnTGlzdC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcigndHlwZU5hbWVWYXInKSA9PSB4LnR5cGVOYW1lID8gXFxcIuKAmOKAmOKAmeKAmTxiPlxcXCIgKyB4LnR5cGVOYW1lLmZvbnRjb2xvcihcXFwiI0ZBNzI5OFxcXCIpICsgXFxcIjwvYj5cXFwiIDogeC50eXBlTmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodHlwZU5hbWVWYXIsIHIsIHMsIHR5cGVOYW1lcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ0eXBlTmFtZVZhclxcXCIsIHR5cGVOYW1lVmFyKTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJpZF9qdXN0YmpcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiPGI+XFxcXHRcXFwiICsgdHlwZU5hbWVWYXIuZm9udGNvbG9yKFxcXCIjRkE3Mjk4XFxcIikgKyBcXFwiPC9iPlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJpZF9qdXN0cWJcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcihcXFwidHlwZU5hbWVWYXJcXFwiLCBcXFwi5YWo6YOoXFxcIikgPT0gXFxcIuWFqOmDqFxcXCIgPyBcXFwi4oCY4oCY4oCZ4oCZPGI+XFxcIiArIFxcXCLlhajpg6hcXFwiLmZvbnRjb2xvcihcXFwiI0ZBNzI5OFxcXCIpICsgXFxcIjwvYj5cXFwiIDogXFxcIuWFqOmDqFxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGkgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwiTmFtZXNcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqIGluIGxpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXMgPSBsaVtqXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiaWRfanVzdFxcXCIgKyBqLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoXFxcInR5cGVOYW1lVmFyXFxcIiwgXFxcIuWFqOmDqFxcXCIpID09IGxpcyA/IFxcXCLigJjigJjigJnigJk8Yj5cXFwiICsgbGlzLmZvbnRjb2xvcihcXFwiI0ZBNzI5OFxcXCIpICsgXFxcIjwvYj5cXFwiIDogbGlzXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKFxcXCJjbHNfanVzdHhsXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc21hbExpc3QgPSByLm1hcCgobGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaS5hcmVhTmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogbGkuYXJlYVBpYyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9uZXdDbGFzc0xpc3Q/dHlwZU5hbWU9XFxcIiArIGxpLnR5cGVOYW1lICsgXFxcIiZhcmVhTmFtZT1cXFwiICsgbGkuYXJlYU5hbWUgKyBcXFwiJnBhZ2U9ZnlwYWdlXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl81XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVOYW1lOiBsaS50eXBlTmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBcXFwiY2xzX2p1c3R4bFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkSXRlbUFmdGVyKFxcXCJpZF9qdXN0eGx6XFxcIiwgc21hbExpc3QpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0sIHgudHlwZU5hbWUsIHIsIHJlcywgdHlwZU5hbWVzKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcXFwiaWRfanVzdFxcXCIgKyBpXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfTtcXG5cXG4gICAgICAgICAgICBzbWFsbExpc3QucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB4LmFyZWFOYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbmV3Q2xhc3NMaXN0P3R5cGVOYW1lPScgKyB4LnR5cGVOYW1lICsgJyZhcmVhTmFtZT0nICsgeC5hcmVhTmFtZSArIFxcXCImcGFnZT1meXBhZ2VcXFwiLFxcbiAgICAgICAgICAgICAgICBpbWc6IHguYXJlYVBpYyArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImljb25fNVxcXCIsXFxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOiB4LnR5cGVOYW1lLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgY2xzOiBcXFwiY2xzX2p1c3R4bFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBpbmhlcml0VGl0bGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9O1xcblxcbiAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiTmFtZXNcXFwiLCB0eXBlTmFtZXMpO1xcbiAgICBiaWdMaXN0LnVuc2hpZnQoe1xcbiAgICAgICAgdGl0bGU6IGdldE15VmFyKFxcXCJ0eXBlTmFtZVZhclxcXCIsIFxcXCLlhajpg6hcXFwiKSA9PSBcXFwi5YWo6YOoXFxcIiA/IFxcXCLigJjigJjigJnigJk8Yj5cXFwiICsgXFxcIuWFqOmDqFxcXCIuZm9udGNvbG9yKFxcXCIjRkE3Mjk4XFxcIikgKyBcXFwiPC9iPlxcXCIgOiBcXFwi5YWo6YOoXFxcIixcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodHlwZU5hbWVWYXIsIHNtYWxsTGlzdCwgcykgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ0eXBlTmFtZVZhclxcXCIsIHR5cGVOYW1lVmFyKTtcXG5cXG4gICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJpZF9qdXN0YmpcXFwiLCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiPGI+XFxcXHRcXFwiICsgdHlwZU5hbWVWYXIuZm9udGNvbG9yKFxcXCIjRkE3Mjk4XFxcIikgKyBcXFwiPC9iPlxcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJpZF9qdXN0cWJcXFwiLCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcihcXFwidHlwZU5hbWVWYXJcXFwiLCBcXFwi5YWo6YOoXFxcIikgPT0gXFxcIuWFqOmDqFxcXCIgPyBcXFwi4oCY4oCY4oCZ4oCZPGI+XFxcIiArIFxcXCLlhajpg6hcXFwiLmZvbnRjb2xvcihcXFwiI0ZBNzI5OFxcXCIpICsgXFxcIjwvYj5cXFwiIDogXFxcIuWFqOmDqFxcXCJcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICBsZXQgbGkgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwiTmFtZXNcXFwiKTtcXG4gICAgICAgICAgICBmb3IgKGxldCBqIGluIGxpKSB7XFxuICAgICAgICAgICAgICAgIGxldCBsaXMgPSBsaVtqXTtcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiaWRfanVzdFxcXCIgKyBqLCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoXFxcInR5cGVOYW1lVmFyXFxcIiwgXFxcIuWFqOmDqFxcXCIpID09IGxpcyA/IFxcXCLigJjigJjigJnigJk8Yj5cXFwiICsgbGlzLmZvbnRjb2xvcihcXFwiI0ZBNzI5OFxcXCIpICsgXFxcIjwvYj5cXFwiIDogbGlzXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKFxcXCJjbHNfanVzdHhsXFxcIik7XFxuICAgICAgICAgICAgYWRkSXRlbUFmdGVyKFxcXCJpZF9qdXN0eGx6XFxcIiwgc21hbGxMaXN0KTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgfSwgJ+WFqOmDqCcsIHNtYWxsTGlzdCwgcmVzKSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiBcXFwiaWRfanVzdHFiXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICBkID0gZC5jb25jYXQoYmlnTGlzdCk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIjxiPlxcXFx0XFxcIiArIGdldE15VmFyKCd0eXBlTmFtZVZhcicpLmZvbnRjb2xvcihcXFwiI0ZBNzI5OFxcXCIpICsgXFxcIjwvYj5cXFwiLFxcbiAgICAgICAgaW1nOiBcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9xLzMzLnBuZ1xcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgaWQ6IFxcXCJpZF9qdXN0YmpcXFwiXFxuICAgICAgICB9XFxuICAgIH0sIHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiBcXFwiaWRfanVzdHhselxcXCJcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuXFxuICAgIGlmIChnZXRNeVZhcigndHlwZU5hbWVWYXInKSA9PSAn5YWo6YOoJykge1xcbiAgICAgICAgZCA9IGQuY29uY2F0KHNtYWxsTGlzdCk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBkID0gZC5jb25jYXQoc21hbGxMaXN0LmZpbHRlcihzID0+IHMudHlwZU5hbWUgPT0gZ2V0TXlWYXIoJ3R5cGVOYW1lVmFyJykpKTtcXG4gICAgfTtcXG59O1xcbmRlbGV0ZUl0ZW1CeUNscyhcXFwiY2xzX2xvYWRcXFwiKTtcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmgLvliJfooahcIixcInBhdGhcIjpcIm5ld0NsYXNzTGlzdFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5sZXQgcyA9IFtdO1xcbmFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxuICAgIGNsZWFyTXlWYXIoJ015ZnJvJyk7XFxuICAgIGNsZWFyTXlWYXIoJ2hvbWUnKTtcXG59KSk7XFxubGV0IGFwaSA9ICQucmVxdWlyZShcXFwicHVibGljXFxcIikuQXBpO1xcbmxldCB1aWQgPSBnZXRJdGVtKFxcXCJ1aWRcXFwiLCBcXFwiXFxcIik7XFxubGV0IGhlYWRlcnMgPSAkLnJlcXVpcmUoXFxcInB1YmxpY1xcXCIpLmhlYWRlcnM7XFxuLy/liIfmjaLlubPlj7BcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIGxldCBmcm8gPSBcXFwiTXlmcm9cXFwiO1xcbiAgICAkLnJlcXVpcmUoXFxcInB1YmxpY1xcXCIpLkZyb20ocywgZnJvKTtcXG4gICAgcy5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG4gICAgfSwge1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxuICAgIH0sIHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbiAgICB9KVxcbiAgICBzLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBjbHM6IFxcXCJjbHNfbG9hZFxcXCJcXG4gICAgICAgIH1cXG4gICAgfSwge1xcbiAgICAgICAgaW1nOiBcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3dlaXN5ci9pbWcvTG9hZGluZzEuZ2lmXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJwaWNfMV9jZW50ZXJcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBjbHM6IFxcXCJjbHNfbG9hZFxcXCJcXG4gICAgICAgIH1cXG4gICAgfSlcXG59O1xcbnNldFByZVJlc3VsdChzKTtcXG5cXG4vL+WIl+ihqFxcbmxldCBNeWZybyA9IGdldE15VmFyKFxcXCJNeWZyb1xcXCIsIFxcXCJcXFwiKTtcXG5sZXQgcGFnZSA9IGdldFBhcmFtKFxcXCJwYWdlXFxcIik7XFxubGV0IHpvbmcgPSBhcGkgKyAnZ2V0UmVjb21tZW5kQnlBcmVhQWxsP2FyZWFUeXBlPScgKyBnZXRQYXJhbShcXFwidHlwZU5hbWVcXFwiKSArICcmYXJlYT0nICsgZ2V0UGFyYW0oXFxcImFyZWFOYW1lXFxcIikgKyAnJnBhZ2U9JyArIHBhZ2U7XFxuXFxubGV0IHpmID0gYXBpICsgXFxcImdldFJlY29tbWVuZEJ5UGxhdGZvcm1BcmVhP3BsYXRmb3JtPVxcXCIgKyBNeWZybyArIFxcXCImYXJlYT1cXFwiICsgZ2V0UGFyYW0oXFxcImFyZWFOYW1lXFxcIikgKyBcXFwiJnBhZ2U9XFxcIiArIHBhZ2UgKyBcXFwiJnNpemU9MjBcXFwiO1xcblxcbmxldCBwaW4gPSBhcGkgKyBcXFwiZ2V0UmVjb21tZW5kQnlQbGF0Zm9ybUFyZWFcXFwiICsgTVlfVVJMLnJlcGxhY2UoXFxcImhpa2VyOi8vcGFnZS9uZXdDbGFzc0xpc3RcXFwiLCBcXFwiXFxcIikgKyBcXFwiJnBhZ2U9XFxcIiArIHBhZ2UgKyBcXFwiJnNpemU9MjBcXFwiO1xcbi8vbG9nKHBpbilcXG5cXG5sZXQgcGYgPSBhcGkgKyBcXFwiZ2V0UmVjb21tZW5kQnlQbGF0Zm9ybUFyZWE/cGxhdGZvcm09XFxcIiArIE15ZnJvICsgXFxcIiZhcmVhPVxcXCIgKyBnZXRNeVZhcihcXFwiYXJlYVxcXCIpICsgXFxcIiZwYWdlPVxcXCIgKyBwYWdlICsgXFxcIiZzaXplPTIwXFxcIjtcXG5cXG50cnkge1xcbiAgICBsZXQgYXJlYSA9IHBpbi5tYXRjaCgvYXJlYT0oLio/KSYvKVsxXTtcXG4gICAgLy9sb2coYXJlYSlcXG4gICAgcHV0TXlWYXIoXFxcImFyZWFcXFwiLCBhcmVhKTtcXG59IGNhdGNoIChlKSB7XFxuICAgIHZhciBhcmVhID0gXFxcIlxcXCI7XFxufTtcXG5sZXQgdXJsID0gXFxcIlxcXCI7XFxuaWYgKGFyZWEgPT0gXFxcIlxcXCIpIHtcXG4gICAgdXJsID0gTXlmcm8gIT09IFxcXCJcXFwiID8gemYgOiB6b25nO1xcbn0gZWxzZSB7XFxuICAgIHVybCA9IE15ZnJvICE9PSBcXFwiXFxcIiA/IHBmIDogcGluO1xcbn07XFxuXFxudHJ5IHtcXG4gICAgbGV0IHJlcyA9IChKU09OLnBhcnNlKHJlcXVlc3QodXJsLCBoZWFkZXJzKSkuZGF0YSB8fCBbXSk7XFxuICAgIGlmIChyZXMgPT0gKG51bGwgfHwgXFxcIlxcXCIpICYmIHBhZ2UgPT0gXFxcIjFcXFwiKSB7XFxuICAgICAgICAkLnJlcXVpcmUoXFxcInB1YmxpY1xcXCIpLkVtcHR5KGQpO1xcbiAgICB9O1xcbiAgICBsZXQgcGxhY2UgPSBcXFwiaG9tZVxcXCI7XFxuICAgIGZvciAobGV0IGkgaW4gcmVzKSB7XFxuICAgICAgICBsZXQgdGVtcCA9IHJlc1tpXTtcXG4gICAgICAgICQucmVxdWlyZShcXFwicHVibGljXFxcIikuTGlzdHMoYXBpLCB1aWQsIHBsYWNlLCBkLCB0ZW1wLnJvb21JZCwgdGVtcC5wbGF0Rm9ybSwgdGVtcC5vd25lck5hbWUsIHRlbXAuY2F0ZWdvcnlOYW1lLCB0ZW1wLm9ubGluZSwgdGVtcC5yb29tUGljLCB0ZW1wLmlzTGl2ZSk7XFxuICAgIH07XFxufSBjYXRjaCAoZSkge1xcbiAgICBpZiAocGFnZSA9PSBcXFwiMVxcXCIpIHtcXG4gICAgICAgIGxldCBhcmVhID0gdXJsLm1hdGNoKC9hcmVhPSguKikmLylbMV07XFxuICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcImhvbWVcXFwiLCBcXFwiMFxcXCIpID09IFxcXCIxXFxcIikge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJzYXJlYVxcXCIsIGFyZWEpO1xcbiAgICAgICAgfTtcXG4gICAgICAgICQucmVxdWlyZShcXFwicHVibGljXFxcIikuRW1wdHkoZCk7XFxuICAgIH07XFxufTtcXG5kZWxldGVJdGVtQnlDbHMoXFxcImNsc19sb2FkXFxcIik7XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57Si6aG16Z2iXCIsXCJwYXRoXCI6XCJzZWFyY2hcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IHtcXG4gICAgZW5naW5lczogW1xcXCLmiYDmnInlubPlj7BcXFwiLCBcXFwi6JmO54mZ55u05pKtXFxcIiwgXFxcIuaWl+mxvOebtOaSrVxcXCIsIFxcXCLlk5Tlk6nlk5Tlk6lcXFwiLCBcXFwi5oqW6Z+z55u05pKtXFxcIiwgXFxcIue9keaYk0NDXFxcIl0sXFxuICAgIHNlYXJjaDogZnVuY3Rpb24oKSB7XFxuICAgICAgICAvL2xvZyhnZXRQYXJhbShcXFwiZW5naW5lXFxcIikpO1xcbiAgICAgICAgbGV0IGFwaSA9ICQucmVxdWlyZShcXFwicHVibGljPyZydWxlPVxcXCIgKyBnZXRNeVZhcihcXFwiUl91bGVcXFwiKSkuQXBpO1xcbiAgICAgICAgbGV0IGhlYWRlcnMgPSAkLnJlcXVpcmUoXFxcInB1YmxpYz8mcnVsZT1cXFwiICsgZ2V0TXlWYXIoXFxcIlJfdWxlXFxcIikpLmhlYWRlcnM7XFxuICAgICAgICBsZXQgdXJsID0gYXBpICsgXFxcInNlYXJjaD9rZXlXb3Jkcz1cXFwiICsgZ2V0UGFyYW0oXFxcImt3XFxcIikgKyBcXFwiJnVpZD1cXFwiICsgZ2V0SXRlbShcXFwidWlkXFxcIiwgXFxcIlxcXCIpICsgXFxcIiZwbGF0Zm9ybT1cXFwiICsgW1xcXCJhbGxcXFwiLCBcXFwiaHV5YVxcXCIsIFxcXCJkb3V5dVxcXCIsIFxcXCJiaWxpYmlsaVxcXCIsIFxcXCJkb3V5aW5cXFwiLCBcXFwiY2NcXFwiXVtcXG4gICAgICAgICAgICBbXFxcIuaJgOacieW5s+WPsFxcXCIsIFxcXCLomY7niZnnm7Tmkq1cXFwiLCBcXFwi5paX6bG855u05pKtXFxcIiwgXFxcIuWTlOWTqeWTlOWTqVxcXCIsIFxcXCLmipbpn7Pnm7Tmkq1cXFwiLCBcXFwi572R5piTQ0NcXFwiXS5pbmRleE9mKGdldFBhcmFtKFxcXCJlbmdpbmVcXFwiKSlcXG4gICAgICAgIF1cXG4gICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwgaGVhZGVycykpLmRhdGE7XFxuICAgICAgICBkID0ganNvbi5tYXAoZGF0YSA9PiAoe1xcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnBsYXRmb3JtLnJlcGxhY2UoJ2h1eWEnLCAn6JmO54mZJykucmVwbGFjZSgnZG91eXUnLCAn5paX6bG8JykucmVwbGFjZSgnY2MnLCAn572R5piTQ0MnKS5yZXBsYWNlKFxcXCJiaWxpYmlsaVxcXCIsIFxcXCLlk5Tlk6lcXFwiKS5yZXBsYWNlKFxcXCJkb3V5aW5cXFwiLCBcXFwi5oqW6Z+zXFxcIikgKyAnwrcnICsgZGF0YS5uaWNrTmFtZSxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLmZvbGxvd2VycyA+PSBcXFwiMTAwMDBcXFwiID8gKGRhdGEuZm9sbG93ZXJzIC8gMTAwMDApLnRvRml4ZWQoMSkgKyBcXFwi5LiH57KJ5LidXFxcIiA6IGRhdGEuZm9sbG93ZXJzICsgXFxcIueyieS4nVxcXCIsXFxuICAgICAgICAgICAgaW1nOiAoZGF0YS5oZWFkUGljICE9PSBudWxsICYmIGRhdGEuaGVhZFBpYy5zdGFydHNXaXRoKCcvJykgPyAnaHR0cHM6JyArIGRhdGEuaGVhZFBpYyA6IGRhdGEuaGVhZFBpYykgKyAnQFJlZmVyZXI9JyxcXG4gICAgICAgICAgICBjb250ZW50OiBkYXRhLmlzTGl2ZSA9PSAnMScgPyAn55u05pKt5LitJyA6ICfmnKrlvIDmkq0nLFxcbiAgICAgICAgICAgIHVybDogZ2V0SXRlbSgnbXVsdGlsaW5lJywgJzAnKSA9PSBcXFwiMFxcXCIgPyBhcGkgKyBcXFwiZ2V0UmVhbFVybE11bHRpU291cmNlP3BsYXRmb3JtPVxcXCIgKyBkYXRhLnBsYXRmb3JtICsgXFxcIiZyb29tSWQ9XFxcIiArIGRhdGEucm9vbUlkICsgJC5yZXF1aXJlKFxcXCJwdWJsaWM/JnJ1bGU9SnVzdExpdmVcXFwiKS5MYXp5KGRhdGEuaXNMaXZlKSA6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsPyNpbW1lcnNpdmVUaGVtZSMmcnVsZT1KdXN0TGl2ZSZwbGF0Zm9ybT1cXFwiICsgZGF0YS5wbGF0Zm9ybSArIFxcXCImcm9vbUlkPVxcXCIgKyBkYXRhLnJvb21JZFxcbiAgICAgICAgfSkpXFxuICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgIH1cXG59O1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YWs55So5Ye95pWwXCIsXCJwYXRoXCI6XCJwdWJsaWNcIixcInJ1bGVcIjpcIiQuZXhwb3J0cy5BcGkgPSBcXFwiaHR0cDovL3lqMTIxMS53b3JrOjgwMTMvYXBpL2xpdmUvXFxcIjtcXG5cXG4kLmV4cG9ydHMuaGVhZGVycyA9IHtcXG4gICAgaGVhZGVyczoge1xcbiAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwib2todHRwLzMuMTIuMTNcXFwiXFxuICAgIH1cXG59O1xcblxcbiQuZXhwb3J0cy5Gcm9tID0gZnVuY3Rpb24oZCwgZnJvKSB7XFxuICAgIGxldCB0aXQgPSBbXFxcIuiZjueJmVxcXCIsIFxcXCLmlpfpsbxcXFwiLCBcXFwi5ZOU5ZOpXFxcIiwgXFxcIuaKlumfs1xcXCIsIFxcXCLnvZHmmJNcXFwiXTtcXG4gICAgbGV0IGZ1cmwgPSBbXFxcImh1eWFcXFwiLCBcXFwiZG91eXVcXFwiLCBcXFwiYmlsaWJpbGlcXFwiLCBcXFwiZG91eWluXFxcIiwgXFxcImNjXFxcIl07XFxuICAgIGxldCBwaWMgPSBbXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vZXJkaS82OC5wbmdcXFwiLCBcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9lcmRpLzEucG5nXFxcIiwgXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vZXJkaS8zMjAucG5nXFxcIiwgXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vZXJkaS8xNjAucG5nXFxcIiwgXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vZXJkaS8yMTQucG5nXFxcIl07XFxuICAgIGxldCB0aXRsbCA9IGZybyA9PSBcXFwiTXlwdFxcXCIgPyBnZXRNeVZhcihmcm8sIFxcXCJodXlhXFxcIikgOiBnZXRNeVZhcihmcm8pO1xcbiAgICBmb3IgKGxldCBpIGluIHRpdCkge1xcbiAgICAgICAgbGV0IHRpID0gdGl0W2ldO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZnVybFtpXSA9PSB0aXRsbCA/IFxcXCLigJjigJjigJnigJk8Yj5cXFwiICsgdGkuZm9udGNvbG9yKFxcXCIjRkE3Mjk4XFxcIikgKyBcXFwiPC9iPlxcXCIgOiB0aSxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHVybCwgZnJvKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKGZybywgdXJsKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgfSwgZnVybFtpXSwgZnJvKSxcXG4gICAgICAgICAgICBpbWc6IHBpY1tpXSArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl81XFxcIlxcbiAgICAgICAgfSlcXG4gICAgfTtcXG59O1xcblxcbiQuZXhwb3J0cy5MaXN0cyA9IGZ1bmN0aW9uKGFwaSwgdWlkLCBwbGFjZSwgZCwgcm9vbUlkLCBwbGF0Rm9ybSwgb3duZXJOYW1lLCBjYXRlZ29yeU5hbWUsIG9ubGluZSwgcm9vbVBpYywgaXNMaXZlKSB7XFxuICAgIGxldCBjYXRlZ29yeSA9IGNhdGVnb3J5TmFtZSAhPT0gXFxcIlxcXCIgPyBjYXRlZ29yeU5hbWUgKyAnwrcnIDogXFxcIlxcXCI7XFxuICAgIGxldCBMaXZlID0gKGlzTGl2ZSA9PSAnMScgPyAn55u05pKt5LitJyA6ICfmnKrlvIDmkq0nKSArICfCtyc7XFxuICAgIGxldCDkuIcgPSBwbGFjZSA9PSBcXFwiaG9tZVxcXCIgPyBcXFwi5LiHXFxcIiA6IFxcXCLkuIfnsonkuJ1cXFwiO1xcbiAgICBsZXQg5Lq6ID0gcGxhY2UgPT0gXFxcImhvbWVcXFwiID8gXFxcIuS6ulxcXCIgOiBcXFwi57KJ5LidXFxcIjtcXG4gICAgbGV0IGxpbmUgPSBvbmxpbmUgPj0gXFxcIjEwMDAwXFxcIiA/IChvbmxpbmUgLyAxMDAwMCkudG9GaXhlZCgxKSArIOS4hyA6IG9ubGluZSArIOS6ujtcXG4gICAgbGV0IHBsYXQgPSBwbGF0Rm9ybS5yZXBsYWNlKCdodXlhJywgJ+iZjueJmScpLnJlcGxhY2UoJ2RvdXl1JywgJ+aWl+mxvCcpLnJlcGxhY2UoJ2NjJywgJ+e9keaYk0NDJykucmVwbGFjZShcXFwiYmlsaWJpbGlcXFwiLCBcXFwi5ZOU5ZOpXFxcIikucmVwbGFjZShcXFwiZG91eWluXFxcIiwgXFxcIuaKlumfs1xcXCIpO1xcbiAgICBsZXQgcm9vbXBpYyA9IHJvb21QaWMgIT09IG51bGwgJiYgcm9vbVBpYy5zdGFydHNXaXRoKCcvJykgPyAnaHR0cHM6JyArIHJvb21QaWMgOiByb29tUGljO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHBsYXQgKyAnwrcnICsgb3duZXJOYW1lLFxcbiAgICAgICAgZGVzYzogKHBsYWNlID09IFxcXCJzb1xcXCIgPyBMaXZlIDogY2F0ZWdvcnkpICsgbGluZSxcXG4gICAgICAgIGltZzogcm9vbXBpYyArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgdXJsOiBnZXRJdGVtKCdtdWx0aWxpbmUnLCAnMCcpID09IFxcXCIwXFxcIiA/IGFwaSArIFxcXCJnZXRSZWFsVXJsTXVsdGlTb3VyY2U/cGxhdGZvcm09XFxcIiArIHBsYXRGb3JtICsgXFxcIiZyb29tSWQ9XFxcIiArIHJvb21JZCArICQucmVxdWlyZShcXFwicHVibGljXFxcIikuTGF6eShpc0xpdmUpIDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/I2ltbWVyc2l2ZVRoZW1lIyZwbGF0Zm9ybT1cXFwiICsgcGxhdEZvcm0gKyBcXFwiJnJvb21JZD1cXFwiICsgcm9vbUlkLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgY2xzOiBcXFwiY2xzX1N1YnMgXFxcIiArIFxcXCJjbHMtXFxcIiArIHBsYWNlLFxcbiAgICAgICAgICAgIGlkOiBcXFwiaWRfXFxcIiArIHBsYXRGb3JtICsgcm9vbUlkLFxcbiAgICAgICAgICAgIGlzTGl2ZTogaXNMaXZlLFxcbiAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2UsXFxuICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogZ2V0SXRlbShwbGF0Rm9ybSArIHJvb21JZCwgXFxcIjBcXFwiKSA9PSBcXFwiMVxcXCIgPyBcXFwi5bey5YWz5rOoXFxcIiA6IFxcXCLmnKrlhbPms6hcXFwiLFxcbiAgICAgICAgICAgICAgICBqczogJC5yZXF1aXJlKFxcXCJwdWJsaWNcXFwiKS5Mb25nQ2xpY2soYXBpLCB1aWQsIHJvb21JZCwgcGxhdEZvcm0pLFxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLlrpjnvZHpk77mjqVcXFwiLFxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygocm9vbWlkLCBwbGF0Zm9ybSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwbGF0Zm9ybSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcImRvdXl1XFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFxcXCJodHRwczovL20uZG91eXUuY29tL1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJiaWxpYmlsaVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9saXZlLmJpbGliaWxpLmNvbS9oNS9cXFwiICsgcm9vbWlkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwiaHV5YVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9tLmh1eWEuY29tL1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJkb3V5aW5cXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vbGl2ZS5kb3V5aW4uY29tL1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJjY1xcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9oNS5jYy4xNjMuY29tL2NjL1xcXCIgKyByb29taWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxcXG4gICAgICAgICAgICAgICAgfSwgcm9vbUlkLCBwbGF0Rm9ybSlcXG4gICAgICAgICAgICB9XVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn07XFxuXFxuJC5leHBvcnRzLkxvbmdDbGljayA9IGZ1bmN0aW9uKGFwaSwgdWlkLCByb29taWQsIHBsYXRmb3JtKSB7XFxuICAgIHJldHVybiAkLnRvU3RyaW5nKChhcGksIHVpZCwgcm9vbWlkLCBwbGF0Zm9ybSkgPT4ge1xcbiAgICAgICAgaWYgKGdldEl0ZW0ocGxhdGZvcm0gKyByb29taWQsIFxcXCIwXFxcIikgPT0gXFxcIjBcXFwiKSB7XFxuICAgICAgICAgICAgdmFyIGZvbGwgPSBcXFwiZm9sbG93XFxcIjtcXG4gICAgICAgICAgICBzZXRJdGVtKHBsYXRmb3JtICsgcm9vbWlkLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2YXIgZm9sbCA9IFxcXCJ1bkZvbGxvd1xcXCI7XFxuICAgICAgICAgICAgY2xlYXJJdGVtKHBsYXRmb3JtICsgcm9vbWlkKTtcXG4gICAgICAgIH07XFxuICAgICAgICBsZXQgcmVzID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaSArIGZvbGwgKyBcXFwiP3BsYXRmb3JtPVxcXCIgKyBwbGF0Zm9ybSArIFxcXCImcm9vbUlkPVxcXCIgKyByb29taWQgKyBcXFwiJnVpZD1cXFwiICsgdWlkLCAkLnJlcXVpcmUoXFxcInB1YmxpY1xcXCIpLmhlYWRlcnMpKTtcXG5cXG4gICAgICAgIGxldCBzdWJzID0gZmluZEl0ZW1zQnlDbHMoXFxcImNsc19TdWJzXFxcIikgfHwgW107XFxuICAgICAgICBpZiAoc3Vicy5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/msqHmnInojrflj5bliLDlhbPms6jliJfooahcXFwiO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGxldCB0aXQgPSBnZXRJdGVtKHBsYXRmb3JtICsgcm9vbWlkLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgZm9yIChsZXQgaSBpbiBzdWJzKSB7XFxuICAgICAgICAgICAgbGV0IGxpID0gc3Vic1tpXTtcXG4gICAgICAgICAgICBsZXQgY2xzID0gbGkuZXh0cmEuY2xzO1xcbiAgICAgICAgICAgIGxldCBqczIgPSBsaS5leHRyYS5sb25nQ2xpY2tbMV0uanM7XFxuICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiaWRfXFxcIiArIHBsYXRmb3JtICsgcm9vbWlkLCB7XFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBjbHM6IGNscyxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcXFwiaWRfXFxcIiArIHBsYXRmb3JtICsgcm9vbWlkLFxcbiAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0ID09IFxcXCIxXFxcIiA/IFxcXCLlt7LlhbPms6hcXFwiIDogXFxcIuacquWFs+azqFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQucmVxdWlyZShcXFwicHVibGljXFxcIikuTG9uZ0NsaWNrKGFwaSwgdWlkLCByb29taWQsIHBsYXRmb3JtKSxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWumOe9kemTvuaOpVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6IGpzMlxcbiAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmIChnZXRNeVZhcihcXFwic1R5cGVcXFwiLCBcXFwiXFxcIikgIT09IFxcXCJcXFwiICYmIHRpdCA9PSAwKSB7XFxuICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0oXFxcImlkX1xcXCIgKyBwbGF0Zm9ybSArIHJvb21pZCk7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH07XFxuICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcIiArIHJlcy5kYXRhO1xcbiAgICB9LCBhcGksIHVpZCwgcm9vbWlkLCBwbGF0Zm9ybSk7XFxufTtcXG5cXG4kLmV4cG9ydHMuTGF6eSA9IGZ1bmN0aW9uKGlzTGl2ZSkge1xcbiAgICByZXR1cm4gJChcXFwiXFxcIikubGF6eVJ1bGUoKGlzTGl2ZSkgPT4ge1xcbiAgICAgICAgaWYgKGlzTGl2ZSA9PSAwKSByZXR1cm4gXFxcInRvYXN0Oi8v55u05pKt5bey57uT5p2f77yBXFxcIjtcXG4gICAgICAgIGxldCBtaWQgPSBpbnB1dC5zcGxpdChcXFwicm9vbUlkPVxcXCIpWzFdO1xcbiAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGZldGNoKGlucHV0LCAkLnJlcXVpcmUoXFxcInB1YmxpYz8mcnVsZT1cXFwiICsgZ2V0TXlWYXIoXFxcIlJfdWxlXFxcIiwgTVlfUlVMRS50aXRsZSkpLmhlYWRlcnMpKS5kYXRhIHx8IFtdO1xcbiAgICAgICAgbGV0IHRvYXMgPSBcXFwidG9hc3Q6Ly/nm7Tmkq3lt7Lnu5PmnZ/miJbmsqHmnInojrflj5bliLDmlbDmja5cXFwiO1xcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGpzb24pLmxlbmd0aCA9PSAwKSByZXR1cm4gdG9hcztcXG4gICAgICAgIGZvciAobGV0IHhsIGluIGpzb24pIHtcXG4gICAgICAgICAgICBsZXQgbmFtZSA9IFtdO1xcbiAgICAgICAgICAgIGxldCB1cmxzID0gW11cXG4gICAgICAgICAgICBsZXQgbGlzdCA9IGpzb25beGxdO1xcbiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gbGlzdCkge1xcbiAgICAgICAgICAgICAgICBsZXQgbGkgPSBsaXN0W2ldO1xcbiAgICAgICAgICAgICAgICBuYW1lLnB1c2gobGkucXVhbGl0eU5hbWUpXFxuICAgICAgICAgICAgICAgIHVybHMucHVzaChsaS5wbGF5VXJsKVxcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVybHMpID09ICdbXFxcIlxcXCJdJyA/IHRvYXMgOiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIG5hbWVzOiBuYW1lLFxcbiAgICAgICAgICAgICAgICB1cmxzOiB1cmxzLFxcbiAgICAgICAgICAgICAgICBkYW5tdTogL2RvdXl15pqC5pegLy50ZXN0KHVybHMpID8gXFxcIndlYjovL2h0dHA6Ly9kb3V5dV9kYW5tdS5kZXYudHlyYW50Zy5jb20vP3JpZD1cXFwiICsgbWlkICsgXFxcIiZ2ZXI9MVxcXCIgOiAvaHV5YS8udGVzdCh1cmxzKSA/IFxcXCJcXFwiIDogXFxcIlxcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH07XFxuICAgIH0sIGlzTGl2ZSk7XFxufTtcXG5cXG4kLmV4cG9ydHMuRW1wdHkgPSBmdW5jdGlvbihkKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJzxicj48YnI+JyxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICB9LCB7XFxuICAgICAgICBkZXNjOiBcXFwi5pqCICDml6AgIOaIvyAg6Ze0XFxcXG5cXFxcbuivtyAg5YiHICDmjaIgIOWFtiAg5a6DICDlubMgIOWPsFxcXCIsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59O1wifV0iLCJpY29uIjoiaHR0cHM6Ly9tLmRpYW5sdXQuY29tL2QvZmlsZS9pbWFnZS8yMDIyMDQxNi8xNjUwMDc5NTUwNTQ0NDYzLmpwZyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment