Advertisement
xiaomianao666

邀您一起看:如何 疏通鼻塞

Jul 8th, 2022
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥如何 疏通鼻塞@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wibmFtZVwiOlwiQ1NT5Ye95pWw6ZuGXCIsXCJwYXRoXCI6XCJjc3NcIixcInJ1bGVcIjpcImZ1bmN0aW9uIGdldE5ld1RleHQodGV4dCxjc3Mpe1xcbiAgIHJldHVybiAnPCcrY3NzKyc+JyArIHRleHQgKyAnPC8nK2NzcysnPic7XFxufVxcblxcbmZ1bmN0aW9uIGdldEJpZ1RleHQodGV4dCkge1xcbiAgICByZXR1cm4gJzxiaWc+JyArIHRleHQgKyAnPC9iaWc+JztcXG59XFxuZnVuY3Rpb24gZ2V0U21hbGxUZXh0KHRleHQpIHtcXG4gICAgcmV0dXJuICc8c21hbGw+JyArIHRleHQgKyAnPC9zbWFsbD4nO1xcbn1cXG5mdW5jdGlvbiBnZXRTdHJvbmdUZXh0KHRleHQpIHtcXG4gICAgcmV0dXJuICc8c3Ryb25nPicgKyB0ZXh0ICsgJzwvc3Ryb25nPic7XFxufVxcbmZ1bmN0aW9uIGdldFRpdGxlVGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiBnZXRTdHJvbmdUZXh0KHRleHQpO1xcbn1cXG5mdW5jdGlvbiBnZXRDb2xvclRleHQodGV4dCwgY29sb3IpIHtcXG4gICAgcmV0dXJuICc8Zm9udCBjb2xvcj1cXFwiJyArIGNvbG9yICsgJ1xcXCI+JyArIHRleHQgKyAnPC9mb250Pic7XFxufVxcbmZ1bmN0aW9uIGdldEdyZXlUZXh0KHRleHQpIHtcXG4gICAgcmV0dXJuIGdldENvbG9yVGV4dCh0ZXh0LCAnZ3JleScpO1xcbn1cXG5mdW5jdGlvbiBnZXRBdXRob3JUZXh0KHRleHQpIHtcXG4gICAgcmV0dXJuIGdldENvbG9yVGV4dCh0ZXh0LCB1c2VyQ29sb3IpO1xcbn1cXG5mdW5jdGlvbiBnZXRDb2RlVGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiAnPGNvZGU+JyArIHRleHQgKyAnPC9jb2RlPic7XFxufVxcbmZ1bmN0aW9uIGdldEJsb2NrcXVvdGVUZXh0KHRleHQpIHtcXG4gICAgcmV0dXJuICc8YmxvY2txdW90ZT4nICsgdGV4dCArICc8L2Jsb2NrcXVvdGU+J1xcbn1cXG5mdW5jdGlvbiBnZXRBZGRyZXNzVGFnKHVybCwgdGV4dCkge1xcbiAgICByZXR1cm4gJzxhIGhyZWY9XFxcIicgKyB1cmwgKyAnXFxcIj4nICsgdGV4dCArICc8L2E+J1xcbn1cXG5mdW5jdGlvbiBnZXRDb21tZW50TWV0YShodG1sKSB7XFxuICAgIHJldHVybiBnZXRTbWFsbFRleHQoaHRtbCk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6KeG5Zu+5aSE55CGXCIsXCJwYXRoXCI6XCJ2aWV3XCIsXCJydWxlXCI6XCIvL+iOt+WPlumHjeWumuWQkeWcsOWdgFxcbmZ1bmN0aW9uIGdldFJlZGlyZWN0QWRkcmVzcyh1cmwpe1xcbiAgICBsZXQgdXJsUmVkaXJlY3QgPSAnJztcXG4gICAgdHJ5e1xcbiAgICAgICAgbGV0IHVybENvZGUgPSBmZXRjaCh1cmwse3JlZGlyZWN0OmZhbHNlLHdpdGhIZWFkZXJzOnRydWV9KTtcXG4gICAgICAgIHVybFJlZGlyZWN0ID0gSlNPTi5wYXJzZSh1cmxDb2RlKS5oZWFkZXJzLmxvY2F0aW9uWzBdO1xcbiAgICB9Y2F0Y2goZSl7fVxcbiAgICByZXR1cm4gdXJsUmVkaXJlY3Q7XFxufVxcblxcblN0cmluZy5wcm90b3R5cGUucmVwbGFjZVdpdGhDYWxsYmFjayA9IGZ1bmN0aW9uIChzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlLCBjYWxsYmFjaykge1xcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSB0aGlzO1xcbiAgICBpZiAoY2FsbGJhY2sgIT0gbnVsbCkge1xcbiAgICAgICAgcmV0dXJuVmFsdWUgPSBjYWxsYmFjayh0aGlzLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcXG4gICAgfVxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxufTtcXG5cXG4vL+WIoOmZpOmHjeWumuWQkeWbvueJh+mTvuaOpVxcbmZ1bmN0aW9uIGRlbGV0ZUludmFsaWRJbWdUYWcoY29udGV4dCwgc2VhcmNoVmFsdWUscmVwbGFjZVZhbHVlKSB7XFxuICAgIGxldCBtYXRjaEFycmF5ID0gY29udGV4dC5tYXRjaChzZWFyY2hWYWx1ZSk7XFxuICAgIGxldCByZXR1cm5WYWx1ZSA9IGNvbnRleHQ7XFxuICAgIGlmIChtYXRjaEFycmF5ICE9IG51bGwpIHtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBpdGVtID0gbWF0Y2hBcnJheVtpXTtcXG4gICAgICAgICAgICAvPGltZy4qPyhkYXRhLW9yaWdpbmFsfGRhdGEtc3JjfHNyYyk9XFxcIiguKj8pXFxcIihbXFxcXHNcXFxcU10qPyk+Ly50ZXN0KGl0ZW0pO1xcbiAgICAgICAgICAgIGxldCBpbWdVcmwgPSBSZWdFeHAuJDI7XFxuICAgICAgICAgICAgaWYgKGltZ1VybC5pbmRleE9mKFxcXCJwbGFjZWhvbGRlclxcXCIpID4gLTEpIHtcXG4gICAgICAgICAgICAgICAgLzxpbWcuKj8oZGF0YS1vcmlnaW5hbCk9XFxcIiguKj8pXFxcIihbXFxcXHNcXFxcU10qPyk+Ly50ZXN0KGl0ZW0pO1xcbiAgICAgICAgICAgICAgICBpbWdVcmwgPSBSZWdFeHAuJDI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmKGltZ1VybC5pbmRleE9mKFxcXCIvL1xcXCIpPT0wKXtpbWdVcmwgPSBcXFwiaHR0cHM6XFxcIiArIGltZ1VybDt9XFxuICAgICAgICAgICAgaWYgKGltZ1VybCAhPSAnJykge1xcbiAgICAgICAgICAgICAgICBpZihnZXRSZWRpcmVjdEFkZHJlc3MoaW1nVXJsKSAhPSAnJyl7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoaXRlbSxyZXBsYWNlVmFsdWUpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcXG59XFxuXFxuZnVuY3Rpb24gR2V0SW1nVGFnQXJyYXlTdHJpbmcoY29udGV4dCwgc2VhcmNoVmFsdWUpIHtcXG4gICAgbGV0IG1hdGNoQXJyYXkgPSBjb250ZXh0Lm1hdGNoKHNlYXJjaFZhbHVlKTtcXG4gICAgbGV0IHJldHVyblZhbHVlID0gJyc7XFxuICAgIGlmIChtYXRjaEFycmF5ICE9IG51bGwpIHtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIHJldHVyblZhbHVlICs9IG1hdGNoQXJyYXlbaV07XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcbn1cXG5cXG5mdW5jdGlvbiBpbWdUYWdHZXRVcmxBcnJheShjb250ZXh0LCBzZWFyY2hWYWx1ZSkge1xcbiAgICBsZXQgbWF0Y2hBcnJheSA9IGNvbnRleHQubWF0Y2goc2VhcmNoVmFsdWUpO1xcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBbXTtcXG4gICAgaWYgKG1hdGNoQXJyYXkgIT0gbnVsbCkge1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRjaEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBtYXRjaEFycmF5W2ldO1xcbiAgICAgICAgICAgIC88aW1nLio/KGRhdGEtb3JpZ2luYWx8ZGF0YS1zcmN8c3JjKT1cXFwiKC4qPylcXFwiKFtcXFxcc1xcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxuICAgICAgICAgICAgbGV0IGltZ1VybCA9IFJlZ0V4cC4kMjtcXG4gICAgICAgICAgICBpZiAoaW1nVXJsLmluZGV4T2YoXFxcInBsYWNlaG9sZGVyXFxcIikgPiAtMSkge1xcbiAgICAgICAgICAgICAgICAvPGltZy4qPyhkYXRhLW9yaWdpbmFsKT1cXFwiKC4qPylcXFwiKFtcXFxcc1xcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxuICAgICAgICAgICAgICAgIGltZ1VybCA9IFJlZ0V4cC4kMjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYoaW1nVXJsLmluZGV4T2YoXFxcIi8vXFxcIik9PTApe2ltZ1VybCA9IFxcXCJodHRwczpcXFwiICsgaW1nVXJsO31cXG4gICAgICAgICAgICBpZiAoaW1nVXJsICE9PSAnJykge1xcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5wdXNoKGltZ1VybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcXG59XFxuXFxuXFxubGV0IGltZ0Vycm9yID0gJzxwPjxmb250IGNvbG9yPVxcXCJncmV5XFxcIj7lm77niYfmmoLml7bml6Dms5XmmL7npLrvvIzoi6XopoHmn6XnnIvor7c8YSBocmVmPVxcXCInICsgTVlfVVJMICsgJ1xcXCI+6K6/6Zeu5Y6f5paHPC9hPjwvZm9udD48L3A+JztcXG5mdW5jdGlvbiBpbWdUYWcoY29udGV4dCwgaW1nVXJsKSB7XFxuICAgIGxldCByZXBsYWNlU3RyaW5nID0gaW1nVXJsID09PSAnJyA/IGltZ0Vycm9yIDogJzxwPjxzaG93aW1nIHNyYz1cXFwiJyArIChpbWdVcmwgKyAnQFJlZmVyZXI9JyArIE1ZX1VSTCkgKyAnXFxcIj48L3A+JztcXG4gICAgaWYgKGdldFZhcignd2lraWhvdy5oaWRlSW1nJyk9PScxJykge1xcbiAgICAgICAgcmVwbGFjZVN0cmluZyA9IGltZ1VybCA9PT0gJycgPyBpbWdFcnJvciA6ICc8cD48YSBocmVmPVxcXCInICsgaW1nVXJsICsgJ1xcXCI+W+eCueWHu+afpeeci+Wkp+Wbvl08L2E+PC9wPic7XFxuICAgIH1cXG4gICAgcmV0dXJuIGNvbnRleHQucmVwbGFjZSgvPGltZyBkYXRhLXY+L2csIHJlcGxhY2VTdHJpbmcpO1xcbn1cXG5mdW5jdGlvbiBpbWdUYWdPbmUoY29udGV4dCwgaW1nVXJsKSB7XFxuICAgIGxldCByZXBsYWNlU3RyaW5nID0gaW1nVXJsID09PSAnJyA/IGltZ0Vycm9yIDogJ1xcXFxuPHA+PHNob3dpbWcgc3JjPVxcXCInICsgKGltZ1VybCArICdAUmVmZXJlcj0nICsgTVlfVVJMKSArICdcXFwiPjwvcD4nO1xcbiAgICBpZiAoZ2V0VmFyKCd3aWtpaG93LmhpZGVJbWcnKT09JzEnKSB7XFxuICAgICAgICByZXBsYWNlU3RyaW5nID0gaW1nVXJsID09PSAnJyA/IGltZ0Vycm9yIDogJzxwPjxhIGhyZWY9XFxcIicgKyBpbWdVcmwgKyAnXFxcIj5b54K55Ye75p+l55yL5aSn5Zu+XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPVxcXCJ3ZWI6Ly8nICsgaW1nVXJsICsgJ1xcXCI+W+eCueWHu+afpeeci+mTvuaOpV08L2E+PC9wPic7XFxuICAgIH1cXG4gICAgcmV0dXJuIGNvbnRleHQucmVwbGFjZSgvPGltZyBkYXRhLXY+L2csIHJlcGxhY2VTdHJpbmcpO1xcbn1cXG5mdW5jdGlvbiBpbWdUYWdSZXBsYWNlbWVudDIoY29udGV4dCwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xcbiAgICBsZXQgbWF0Y2hBcnJheSA9IGNvbnRleHQubWF0Y2goc2VhcmNoVmFsdWUpO1xcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBjb250ZXh0O1xcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXRlbSA9IG1hdGNoQXJyYXlbaV07XFxuICAgICAgICAgICAgLzxpbWcuKj8oZGF0YS1vcmlnaW5hbHxkYXRhLXNyY3xzcmMpPVxcXCIoLio/KVxcXCIoW1xcXFxzXFxcXFNdKj8pPi8udGVzdChpdGVtKTtcXG4gICAgICAgICAgICBsZXQgaW1nVXJsID0gUmVnRXhwLiQyO1xcbiAgICAgICAgICAgIGlmIChpbWdVcmwuaW5kZXhPZihcXFwicGxhY2Vob2xkZXJcXFwiKSA+IC0xKSB7XFxuICAgICAgICAgICAgICAgIC88aW1nLio/KGRhdGEtb3JpZ2luYWwpPVxcXCIoLio/KVxcXCIoW1xcXFxzXFxcXFNdKj8pPi8udGVzdChpdGVtKTtcXG4gICAgICAgICAgICAgICAgaW1nVXJsID0gUmVnRXhwLiQyO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZihpbWdVcmwuaW5kZXhPZihcXFwiLy9cXFwiKT09MCl7aW1nVXJsID0gXFxcImh0dHBzOlxcXCIgKyBpbWdVcmw7fVxcbiAgICAgICAgICAgIGlmIChpbWdVcmwgIT09ICcnKSB7XFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUucmVwbGFjZShpdGVtLCByZXBsYWNlVmFsdWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGltZ1RhZyhyZXR1cm5WYWx1ZSwgaW1nVXJsKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcbn1cXG5mdW5jdGlvbiBpbWdUYWdSZXBsYWNlbWVudE9uZShjb250ZXh0LCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XFxuICAgIGxldCBtYXRjaEFycmF5ID0gY29udGV4dC5tYXRjaChzZWFyY2hWYWx1ZSk7XFxuICAgIGxldCByZXR1cm5WYWx1ZSA9IGNvbnRleHQ7XFxuICAgIGlmIChtYXRjaEFycmF5ICE9IG51bGwpIHtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBpdGVtID0gbWF0Y2hBcnJheVtpXTtcXG4gICAgICAgICAgICAvPGltZy4qPyhkYXRhLW9yaWdpbmFsfGRhdGEtc3JjfHNyYyk9XFxcIiguKj8pXFxcIihbXFxcXHNcXFxcU10qPyk+Ly50ZXN0KGl0ZW0pO1xcbiAgICAgICAgICAgIGxldCBpbWdVcmwgPSBSZWdFeHAuJDI7XFxuICAgICAgICAgICAgaWYgKGltZ1VybC5pbmRleE9mKFxcXCJwbGFjZWhvbGRlclxcXCIpID4gLTEpIHtcXG4gICAgICAgICAgICAgICAgLzxpbWcuKj8oZGF0YS1vcmlnaW5hbCk9XFxcIiguKj8pXFxcIihbXFxcXHNcXFxcU10qPyk+Ly50ZXN0KGl0ZW0pO1xcbiAgICAgICAgICAgICAgICBpbWdVcmwgPSBSZWdFeHAuJDI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmKGltZ1VybC5pbmRleE9mKFxcXCIvL1xcXCIpPT0wKXtpbWdVcmwgPSBcXFwiaHR0cHM6XFxcIiArIGltZ1VybDt9XFxuICAgICAgICAgICAgaWYgKGltZ1VybCAhPT0gJycpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZS5yZXBsYWNlKGl0ZW0sIHJlcGxhY2VWYWx1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gaW1nVGFnT25lKHJldHVyblZhbHVlLCBpbWdVcmwpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxufVxcblxcbmxldCB2aWRlb0Vycm9yID0gJzxwPjxmb250IGNvbG9yPVxcXCJncmV5XFxcIj7op4bpopHmmoLml7bml6Dms5XmmL7npLrvvIzoi6XopoHmn6XnnIvor7c8YSBocmVmPVxcXCInICsgTVlfVVJMICsgJ1xcXCI+6K6/6Zeu5Y6f5paHPC9hPjwvZm9udD48L3A+JztcXG5mdW5jdGlvbiB2aWRlb1RhZyhjb250ZXh0LCB2aWRlb1VybCkge1xcbiAgICBsZXQgcmVwbGFjZVN0cmluZyA9IHZpZGVvVXJsID09PSAnJyA/IHZpZGVvRXJyb3IgOiAnPHA+PGEgaHJlZj1cXFwiJyArICh2aWRlb1VybCkgKyAnXFxcIj5b54K55Ye75p+l55yL6KeG6aKRXTwvYT48L3A+JztcXG4gICAgaWYgKGdldFZhcignd2lraWhvdy5oaWRlSW1nJyk9PScxJykge1xcbiAgICAgICAgcmVwbGFjZVN0cmluZyA9IHZpZGVvVXJsID09PSAnJyA/IHZpZGVvRXJyb3IgOiAnPHA+PGEgaHJlZj1cXFwiJyArIHZpZGVvVXJsICsgJ1xcXCI+W+eCueWHu+afpeeci+inhumikV08L2E+PC9wPic7XFxuICAgIH1cXG4gICAgcmV0dXJuIGNvbnRleHQucmVwbGFjZSgvPHZpZGVvIGRhdGEtdj4vZywgcmVwbGFjZVN0cmluZyk7XFxufVxcbmZ1bmN0aW9uIHZpZGVvVGFnUmVwbGFjZW1lbnQyKGNvbnRleHQsIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcXG4gICAgbGV0IG1hdGNoQXJyYXkgPSBjb250ZXh0Lm1hdGNoKHNlYXJjaFZhbHVlKTtcXG4gICAgbGV0IHJldHVyblZhbHVlID0gY29udGV4dDtcXG4gICAgaWYgKG1hdGNoQXJyYXkgIT0gbnVsbCkge1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRjaEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBtYXRjaEFycmF5W2ldO1xcbiAgICAgICAgICAgIC88KHNvdXJjZXx2aWRlbykuKj8oZGF0YS1vcmlnaW5hbHxkYXRhLXNyY3xzcmMpPVxcXCIoLio/KVxcXCIoW1xcXFxzXFxcXFNdKj8pPi8udGVzdChpdGVtKTtcXG4gICAgICAgICAgICBsZXQgdmlkZW9VcmwgPSBSZWdFeHAuJDM7XFxuICAgICAgICAgICAgaWYodmlkZW9VcmwuaW5kZXhPZihcXFwiLy9cXFwiKT09MCl7dmlkZW9VcmwgPSBcXFwiaHR0cHM6XFxcIiArIHZpZGVvVXJsO31cXG4gICAgICAgICAgICBpZih2aWRlb1VybC5pbmNsdWRlcyhcXFwiemhhaW5hbm1pXFxcIikpIGNvbnRpbnVlO1xcbiAgICAgICAgICAgIGlmICh2aWRlb1VybCAhPT0gJycpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZS5yZXBsYWNlKGl0ZW0sIHJlcGxhY2VWYWx1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gdmlkZW9UYWcocmV0dXJuVmFsdWUsIHZpZGVvVXJsKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcbn1cXG5cXG5sZXQgbGlua0Vycm9yID0gJzxwPjxmb250IGNvbG9yPVxcXCJncmV5XFxcIj7pk77mjqXmmoLml7bml6Dms5XmmL7npLrvvIzoi6XopoHmn6XnnIvor7c8YSBocmVmPVxcXCInICsgTVlfVVJMICsgJ1xcXCI+6K6/6Zeu5Y6f5paHPC9hPjwvZm9udD48L3A+JztcXG5mdW5jdGlvbiBsaW5rVGFnKGNvbnRleHQsIGxpbmtVcmwpIHtcXG4gICAgbGV0IHJlcGxhY2VTdHJpbmcgPSBsaW5rVXJsID09PSAnJyA/IGxpbmtFcnJvciA6ICc8cD48YSBocmVmPVxcXCInICsgKGxpbmtVcmwpICsgJ1xcXCI+W+eCueWHu+afpeeci+mTvuaOpV08L2E+PC9wPic7XFxuICAgIGlmIChnZXRWYXIoJ3dpa2lob3cuaGlkZUltZycpPT0nMScpIHtcXG4gICAgICAgIHJlcGxhY2VTdHJpbmcgPSBsaW5rVXJsID09PSAnJyA/IGxpbmtFcnJvciA6ICc8cD48YSBocmVmPVxcXCInICsgbGlua1VybCArICdcXFwiPlvngrnlh7vmn6XnnIvpk77mjqVdPC9hPjwvcD4nO1xcbiAgICB9XFxuICAgIHJldHVybiBjb250ZXh0LnJlcGxhY2UoLzxsaW5rIGRhdGEtdj4vZywgcmVwbGFjZVN0cmluZyk7XFxufVxcbmZ1bmN0aW9uIGxpbmtUYWdSZXBsYWNlbWVudDIoY29udGV4dCwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xcbiAgICBsZXQgbWF0Y2hBcnJheSA9IGNvbnRleHQubWF0Y2goc2VhcmNoVmFsdWUpO1xcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBjb250ZXh0O1xcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXRlbSA9IG1hdGNoQXJyYXlbaV07XFxuICAgICAgICAgICAgLzwoaWZyYW1lKS4qPyhkYXRhLW9yaWdpbmFsfGRhdGEtc3JjfHNyYyk9XFxcIiguKj8pXFxcIihbXFxcXHNcXFxcU10qPyk+Ly50ZXN0KGl0ZW0pO1xcbiAgICAgICAgICAgIGxldCBsaW5rVXJsID0gUmVnRXhwLiQzO1xcbiAgICAgICAgICAgIGlmKGxpbmtVcmwuaW5kZXhPZihcXFwiLy9cXFwiKT09MCl7bGlua1VybCA9IFxcXCJodHRwczpcXFwiICsgbGlua1VybDt9XFxuICAgICAgICAgICAgaWYgKGxpbmtVcmwgIT09ICcnKSB7XFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUucmVwbGFjZShpdGVtLCByZXBsYWNlVmFsdWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGxpbmtUYWcocmV0dXJuVmFsdWUsIGxpbmtVcmwpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxufVxcblxcbmZ1bmN0aW9uIGNzc1RhZ1JlcGxhY2VtZW50Mihjb250ZXh0LCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XFxuICAgIGxldCBtYXRjaEFycmF5ID0gY29udGV4dC5tYXRjaChzZWFyY2hWYWx1ZSk7XFxuICAgIGxldCByZXR1cm5WYWx1ZSA9IGNvbnRleHQ7XFxuICAgIGlmIChtYXRjaEFycmF5ICE9IG51bGwpIHtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBpdGVtID0gbWF0Y2hBcnJheVtpXTtcXG4gICAgICAgICAgICAvPChkaXZ8cHxzdHJvbmcpPi4qPzxcXFxcLyhkaXZ8cHxzdHJvbmcpPi8udGVzdChpdGVtKTtcXG4gICAgICAgICAgICBsZXQgY3NzID0gUmVnRXhwLiQyO1xcbiAgICAgICAgICAgIGlmIChjc3MubWF0Y2goL15cXFxccyokLykpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZS5yZXBsYWNlKGl0ZW0sIHJlcGxhY2VWYWx1ZSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcXG59XFxuXFxuZnVuY3Rpb24gc3VwVGFnUmVwbGFjZW1lbnQyKGNvbnRleHQsIHNlYXJjaFZhbHVlLHN1cEFycmF5KSB7XFxuICAgIGxldCBtYXRjaEFycmF5ID0gY29udGV4dC5tYXRjaChzZWFyY2hWYWx1ZSk7XFxuICAgIGxldCByZXR1cm5WYWx1ZSA9IGNvbnRleHQ7XFxuICAgIGlmIChtYXRjaEFycmF5ICE9IG51bGwpIHtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBpdGVtID0gbWF0Y2hBcnJheVtpXTtcXG4gICAgICAgICAgICBsZXQgc3VwVGFnID0gcGFyc2VEb21Gb3JIdG1sKG1hdGNoQXJyYXlbaV0sJ3N1cCYmYSYmSHRtbCcpO1xcbiAgICAgICAgICAgIGxldCBzdXBOdW0gPSBwYXJzZUludChzdXBUYWcucmVwbGFjZSgvXFxcXFt8XFxcXF0vZyxcXFwiXFxcIikpLTE7XFxuICAgICAgICAgICAgaWYgKHN1cFRhZyAhPT0gJycpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZS5yZXBsYWNlKGl0ZW0sICc8c21hbGw+PHN1cD48YSBocmVmPVxcXCInKyBzdXBBcnJheVtzdXBOdW1dKydcXFwiPicrc3VwVGFnKyc8L2E+PC9zdXA+PC9zbWFsbD4nKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaPkOekulwiLFwicGF0aFwiOlwidGlwc1wiLFwicnVsZVwiOlwiXFxuZnVuY3Rpb24gR2V0SG9tZShudW0pe1xcbiAgICBsZXQgcmV0cmFjdCA9ICcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnO1xcbiAgICBmb3IobGV0IGk9MTtpPG51bTtpKyspIHJldHJhY3QgKz0gJyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyc7XFxuICAgIHJldHVybiAnPHNwYW4+JytyZXRyYWN0Kyc8L3NwYW4+JztcXG59XFxuXFxuZnVuY3Rpb24gR2V0Q29tbWVudChtYWluLGF1dG9yLHRpbWUsZmxvb3Ipe1xcblxcbiAgICBsZXQgZm9udFN0eWxlID0gJzxmb250IGNvbG9yPVxcXCJncmV5XFxcIj48c3BhbiBjbGFzcz1cXFwibm9ybWFsLWZvbnQgZ3JheS1mb250IGFsaWduLWJhc2VsaW5lXFxcIj4mbmJzcDsmbmJzcDsnK3RpbWUrJyAmbmJzcDs8L3NwYW4+PC9mb250Pic7XFxuICAgIGxldCBidXR0b25EYXRhID0gZ2V0Q29sb3JUZXh0KGF1dG9yLCcjMjk3OUZGJykrZm9udFN0eWxlK2dldENvbG9yVGV4dChmbG9vciwnIzI5NzlhYScpO1xcbiAgICBsZXQgY29tbWVudCA9ICcnO1xcblxcbiAgICBpZihmbG9vcj09Jycpe1xcbiAgICAgICAgY29tbWVudCA9R2V0SG9tZSgxKSttYWluK2dldE5ld1RleHQoJzxicj4nK0dldEhvbWUoMSkrYnV0dG9uRGF0YSwnc21hbGwnKTtcXG4gICAgfWVsc2V7XFxuICAgICAgICBjb21tZW50ID0gbWFpbitnZXROZXdUZXh0KCc8YnI+JysgYnV0dG9uRGF0YSwnc21hbGwnKTtcXG4gICAgfVxcbiAgICByZXR1cm4gY29tbWVudDtcXG59XFxuXFxuZnVuY3Rpb24gR2V0VGlwcyh0aXBzLHdhcm5pbmcpe1xcbiAgICBsZXQgdGlwc1N0eWxlID0gJzxzbWFsbD48c3BhbiBjbGFzcz1cXFwibm9ybWFsLWZvbnQgZ3JheS1mb250IGFsaWduLWJhc2VsaW5lXFxcIj4mbmJzcDsnK3RpcHMrJyAmbmJzcDs8L3NwYW4+PC9zbWFsbD4nO1xcbiAgICBsZXQgd2FybmluZ1N0eWxlID0gJzxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPjxzcGFuIGNsYXNzPVxcXCJub3JtYWwtZm9udCBncmF5LWZvbnQgYWxpZ24tYmFzZWxpbmVcXFwiPiZuYnNwOycrd2FybmluZysnICZuYnNwOzwvc3Bhbj48L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPic7XFxuICAgIHJldHVybiB0aXBzU3R5bGUrJzxicj4nK3dhcm5pbmdTdHlsZTtcXG59XCJ9XSxcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwiV2lLaUhvd+KTgu+4j1wiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImh0dHBzOi8vemgud2lraWhvdy5jb20vJUU3JTk2JThGJUU5JTgwJTlBJUU5JUJDJUJCJUU1JUExJTlFO2dldDtVVEYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCAxMe+8m++8myBNaSAxMCBQcm8pIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS84OC4wLjQzMjQuMTUyIE1vYmlsZSBTYWZhcmkvNTM3LjM2fVwiLFwiY29sX3R5cGVcIjpcInJpY2hfdGV4dFwiLFwiZmluZF9ydWxlXCI6XCJqczpcXG4vL+S7peS4i+aYryDliJfooajop6PmnpDop4TliJnvvIhKU++8iVxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbi8v6Ieq5a6a5LmJ6aKc6ImyXFxuY29uc3QgQ29sb3I9XFxcIiNGQTcyOThcXFwiO1xcblxcbnZhciBodG1sPWdldFJlc0NvZGUoKTtcXG5cXG5cXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL2Nzc1xcXCIpKS5ydWxlKTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL3ZpZXdcXFwiKSkucnVsZSk7XFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS90aXBzXFxcIikpLnJ1bGUpO1xcblxcbi8vIOWPlue8k+WtmFxcbmlmKGdldFZhcihcXFwid2lraWhvdy51cmxcXFwiKSE9PU1ZX1VSTCl7XFxuICAgIHB1dFZhcihcXFwid2lraWhvdy5tZXRob2ROdW1cXFwiLCBcXFwiMFxcXCIpO1xcbiAgICBwdXRWYXIoXFxcIndpa2lob3cudXJsXFxcIiwgTVlfVVJMKTtcXG59IFxcblxcbmNvbnN0IG1ldGhvZE51bSA9IGdldFZhcihcXFwid2lraWhvdy5tZXRob2ROdW1cXFwiKVxcbmNvbnN0IGNhdGVnb3JpZXMgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsICcjbXctY29udGVudC10ZXh0JiYuc2VjdGlvbi5zdGVwcycpO1xcblxcbmxldCBjYXRlZ29yaWVzTGVuZ3RoID0gXFxcIlxcXCI7XFxudHJ5e1xcbiAgICAgY2F0ZWdvcmllc0xlbmd0aCA9IHBhcnNlRG9tRm9yQXJyYXkoY2F0ZWdvcmllc1swXSwgJy5zdGVwc19saXN0XzInKTtcXG59Y2F0Y2goZSl7fVxcblxcbnZhciBmaXJzdFN0ZXA9XFxcIlxcXCI7XFxuLy9pZihjYXRlZ29yaWVzTGVuZ3RoID09IFxcXCJcXFwiKSBzZXRFcnJvcihjYXRlZ29yaWVzWzBdKTtcXG5pZihjYXRlZ29yaWVzTGVuZ3RoID09IFxcXCJcXFwiKSBmaXJzdFN0ZXAgPSAnPHA+PGJpZz7wn5SGPC9iaWc+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7JyArIHBhcnNlRG9tRm9ySHRtbChjYXRlZ29yaWVzLnNoaWZ0KCksJy5zZWN0aW9uX3RleHQmJnAmJkh0bWwnKSsnPC9wPic7XFxuXFxubGV0IGhlYWRlclRpdGxlID0gZ2V0QmlnVGV4dChnZXRTdHJvbmdUZXh0KHBhcnNlRG9tRm9ySHRtbChodG1sLCAnI3NlY3Rpb25fMCYmVGV4dCcpK1xcXCLinZPwn5mLXFxcIikpICsgJyAnICsgZ2V0U21hbGxUZXh0KGdldEFkZHJlc3NUYWcoTVlfVVJMLCAnW+afpeeci+WOn+aWh/CfkYBdJykpO1xcblxcbi8vdmFyIHN1YlRpbWUgPSBnZXRDb2RlVGV4dChwYXJzZURvbUZvckh0bWwoaHRtbCwnLmFydGljbGUtbWV0YS0tYSYmbGksMCYmVGV4dCcpLnJlcGxhY2UoXFxcIuWPkeW4g+S6jlxcXCIsXFxcIuaXpeacnzpcXFwiKSk7XFxuXFxudmFyIHN1YlR5cGUgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsJyNicmVhZGNydW1iJiZhJyk7XFxuXFxudmFyIHR5cGU9Z2V0Q29kZVRleHQoXFxcIvCfj7fvuI/moIfnrb46IFxcXCIpO1xcblxcbmZvcih2YXIgaT0xO2k8c3ViVHlwZS5sZW5ndGg7aSsrKXtcXG4gICAgdHlwZSArPSBnZXRDb2RlVGV4dChwYXJzZURvbUZvckh0bWwoc3ViVHlwZVtpXSwnYSYmVGV4dCcpKTtcXG59XFxuXFxuXFxubGV0IHByb2Zlc3Npb25hbEF1ZGl0ID0gJyc7XFxudHJ5e1xcblxcdHByb2Zlc3Npb25hbEF1ZGl0ID0gJzxzdHJvbmc+5LiT5Lia5Lq65aOr5a6h5qC4PC9zdHJvbmc+JysoXFxcIjxicj5cXFwiK3BhcnNlRG9tRm9ySHRtbChodG1sLCcuc2VjdGlvbi7kuJPkuJrkurrlo6vlrqHmoLgmJnAmJkh0bWwnKSkucmVwbGFjZShcXFwi5a6h6ZiF5pe26Ze0XFxcIixcXFwi8J+VkOWuoemYheaXtumXtFxcXCIpLnJlcGxhY2UoXFxcIuWuoemYheS6ulxcXCIsXFxcIvCflbXvuI/lrqHpmIXkurpcXFwiKS5yZXBsYWNlKC88YnI+L2csXFxcIjxicj7imqsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtcXFwiKStcXFwiPGJyPjxicj5cXFwiO1xcbn1jYXRjaChlKXt9XFxuXFxudmFyIHNlY3Rpb24gPSBwYXJzZURvbUZvckh0bWwoaHRtbCwnI21mLXNlY3Rpb24tMCYmSHRtbCcpO1xcblxcbnZhciBzZWN0aW9uVGl0bGUgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwnaGVhZCYmdGl0bGUmJlRleHQnKTtcXG52YXIgc2VjdGlvblR5cGUgPSBcXFwi5Liq6YOo5YiGXFxcIjtcXG5pZihzZWN0aW9uVGl0bGUuaW5jbHVkZXMoXFxcIuaWueazlVxcXCIpKSBzZWN0aW9uVHlwZSA9IFxcXCLnp43mlrnms5VcXFwiO1xcblxcbnZhciBzdXBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShodG1sLFxcXCJib2R5JiYucmVmZXJlbmNlLXRleHRcXFwiKTtcXG52YXIgc3VwQXJyYXkgPSBbXTtcXG5mb3IobGV0IGkgPTA7aTxzdXBsaXN0Lmxlbmd0aDtpKyspIHN1cEFycmF5LnB1c2gocGFyc2VEb21Gb3JIdG1sKHN1cGxpc3RbaV0sXFxcInNwYW4mJlRleHRcXFwiKSk7XFxuXFxuc2VjdGlvbiA9IHN1cFRhZ1JlcGxhY2VtZW50MihzZWN0aW9uLC88KHN1cCkgaWQ9XFxcIl9yZWYoW1xcXFxzXFxcXFNdKj8pPFxcXFwvKHN1cCk+L2csc3VwQXJyYXkpO1xcblxcbnNlY3Rpb24gPSAnPHA+JytzZWN0aW9uLnJlcGxhY2UoLzxwPi8sXFxcIjxzcGFuPjxiaWc+8J+ZhzwvYmlnPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1xcXCIpLnJlcGxhY2UoLzxcXFxcL3A+LywnPHNwYW4+JykucmVwbGFjZSgvPGxpPi9nLCc8c3Bhbj7wn5KgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7JykucmVwbGFjZSgvPFxcXFwvbGk+L2csJzwvc3Bhbj48YnI+JykucmVwbGFjZSgvPHVsPi8sJzxicj4nKSsnPC9wPic7XFxuXFxudmFyIHN1YkNvbnRlbnQgPWdldFNtYWxsVGV4dChzZWN0aW9uK2ZpcnN0U3RlcCtwcm9mZXNzaW9uYWxBdWRpdCkgKyBnZXRTdHJvbmdUZXh0KFxcXCLku6XkuIvmnIlcXFwiICsgY2F0ZWdvcmllcy5sZW5ndGggKyBzZWN0aW9uVHlwZStcXFwi5a6e546wOlxcXCIpO1xcblxcbnZhciBhdXRob3JQaWM9XFxcImh0dHBzOi8vaW1nMi5iYWlkdS5jb20vaXQvdT0xNjc3MzQyNzQzLDE3MDgzMjQ0NzkmZm09MjYmZm10PWF1dG8mZ3A9MC5qcGdcXFwiXFxudHJ5e1xcbiAgICBhdXRob3JQaWMgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwnLmFyX2F2YXRhciYmaW1nJiZzcmMnKTtcXG59Y2F0Y2goZSl7fVxcblxcbnZhciBhbmNob3IgPSflhbHlkIzliJvkvZzogIU6ICAnO1xcbnZhciBuYW1lID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsJy5jb2F1dGhvcl9saW5rJiZUZXh0Jyk7XFxuaWYobmFtZS5pbmNsdWRlcyhcXFwi5L2c6ICFXFxcIikpIG5hbWU9XFxcIuWMv+WQjeS9nOiAhVxcXCI7XFxudmFyIGFuY2hvckluZm8gPSBwYXJzZURvbUZvckh0bWwoaHRtbCwnI2J5bGluZV9ob3Zlcl9ib2R5JiZUZXh0JylcXG5cXG5kLnB1c2goe3RpdGxlOiBoZWFkZXJUaXRsZSsnJm5ic3A7JyArJzxicj4nK3R5cGUsfSk7XFxuZC5wdXNoKHtjb2xfdHlwZTonbGluZSd9KTtcXG5kLnB1c2goe1xcblxcdHRpdGxlOmFuY2hvciArIGdldENvbG9yVGV4dChuYW1lLFxcXCJibHVlXFxcIikgKyBcXFwiICDwn5GIXFxcIixcXG4gIFxcdHBpY191cmw6YXV0aG9yUGljLFxcblxcdHVybDpcXFwidG9hc3Q6Ly9cXFwiK2FuY2hvckluZm8sXFxuXFx0Y29sX3R5cGU6ICdhdmF0YXInXFxufSk7XFxuXFxuZC5wdXNoKHt0aXRsZTogc3ViQ29udGVudCx9KTtcXG5cXG4vLyBkLnB1c2goe2NvbF90eXBlOidsaW5lJ30pO1xcbi8vIGQucHVzaCh7Y29sX3R5cGU6XFxcImJsYW5rX2Jsb2NrXFxcIn0pO1xcblxcbmNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnksIGluZGV4KSA9PiB7XFxuXFxuXFx0Ly8gbGV0IHRpdGxlID0gJ+aWueazlScrKGluZGV4KzEpLnRvU3RyaW5nKCkrXFxcIjogXFxcIitwYXJzZURvbUZvckh0bWwoY2F0ZWdvcnksICcuaW4tYmxvY2smJi5tdy1oZWFkbGluZSYmVGV4dCcpO1xcblxcdGxldCB0aXRsZSA9IHNlY3Rpb25UeXBlLnJlcGxhY2UoL+enjXzkuKovLFxcXCJcXFwiKSsoaW5kZXgrMSkudG9TdHJpbmcoKTtcXG5cXHRkLnB1c2goe1xcblxcblxcdFxcdHRpdGxlOiBpbmRleC50b1N0cmluZygpPT09Z2V0VmFyKFxcXCJ3aWtpaG93Lm1ldGhvZE51bVxcXCIpPyfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0nK0NvbG9yKyc+Jyt0aXRsZSsn4pml77iPPC9mb250PjwvYj4nOnRpdGxlLFxcblxcdFxcdHVybDogJChNWV9VUkwpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG5cXG5cXHRcXHRcXHRwdXRWYXIoXFxcIndpa2lob3cubWV0aG9kTnVtXFxcIiwgcGFyYW1zLmluZGV4LnRvU3RyaW5nKCkpO1xcblxcdFxcdFxcdHJlZnJlc2hQYWdlKHRydWUpO1xcblxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0fSwge2luZGV4OiBpbmRleCx9KSxcXG5cXHRcXHRjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcblxcdH0pO1xcbn0pXFxuZC5wdXNoKHtjb2xfdHlwZTpcXFwiYmxhbmtfYmxvY2tcXFwiLH0pO1xcblxcbmxldCBjb250ZW50ID0gcGFyc2VEb21Gb3JIdG1sKGNhdGVnb3JpZXNbZ2V0VmFyKFxcXCJ3aWtpaG93Lm1ldGhvZE51bVxcXCIpXSwgJ0h0bWwnKTtcXG5sZXQgaGVhZFRpdGxlPXBhcnNlRG9tRm9ySHRtbChjb250ZW50LCcubXctaGVhZGxpbmUmJlRleHQnKTtcXG5cXG5kLnB1c2goe1xcblxcdHRpdGxlOifigJzigJzigJ3igJ08YmlnPjxzdHJvbmc+JytoZWFkVGl0bGUrJ/Cfl5LvuI88L3N0cm9uZz48L2JpZz4nLFxcblxcdHVybDonaGlrZXI6Ly9lbXB0eScsXFxuXFx0Y29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxufSk7XFxubGV0IHRpdGxlQXJyYXkgPSBbXTtcXG50cnl7XFxuICAgdGl0bGVBcnJheSA9IHBhcnNlRG9tRm9yQXJyYXkoY29udGVudCwnLnNlY3Rpb25fdGV4dCYmLm13LWhlYWRsaW5lJyk7XFxufWNhdGNoKGUpe31cXG5cXG5sZXQgc3RlcENvbnRlbnRBcnJheSA9IHBhcnNlRG9tRm9yQXJyYXkoY29udGVudCwnLnNlY3Rpb25fdGV4dCYmb2wnKTtcXG5mb3IobGV0IGw9MDtsPHN0ZXBDb250ZW50QXJyYXkubGVuZ3RoO2wrKyl7XFxuIGlmKHRpdGxlQXJyYXkubGVuZ3RoID4gMCkgZC5wdXNoKHtcXG4gICAgICB0aXRsZTon4oCc4oCc4oCd4oCdJytnZXRCaWdUZXh0KGdldENvbG9yVGV4dChwYXJzZURvbUZvckh0bWwodGl0bGVBcnJheVtsXSwnVGV4dCcpLCdibHVlJykpLFxcbiAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG59KTtcXG4gICBsZXQgc3RlcExpc3Q9W107XFxuICAgbGV0IHN0ZXBDb250ZW50ID0gcGFyc2VEb21Gb3JBcnJheShzdGVwQ29udGVudEFycmF5W2xdLCdvbCYmbGknKTtcXG4gICBmb3IobGV0IGk9MDtpPHN0ZXBDb250ZW50Lmxlbmd0aDtpKyspe1xcblxcdCAgIGlmKHN0ZXBDb250ZW50W2ldLmluZGV4T2YoXFxcIjxsaSBcXFwiKSA9PSAwKSBzdGVwTGlzdC5wdXNoKHN0ZXBDb250ZW50W2ldKTtcXG4gICB9XFxuXFxuZm9yKGxldCBpPTA7aTxzdGVwTGlzdC5sZW5ndGg7aSsrKXtcXG5cXHR0cnl7XFxuXFx0XFx0bGV0IGltZ0pzID0gcGFyc2VEb21Gb3JIdG1sKHN0ZXBMaXN0W2ldLnNwbGl0KCc8ZGl2IGNsYXNzPVxcXCJzdGVwX251bVxcXCI+JylbMF0sJy5pbWFnZV9kZXRhaWxzJiZzcGFuLDAmJkh0bWwnKTtcXG5cXHRcXHRpbWdKcz1ldmFsKFxcXCJbXFxcIitpbWdKcytcXFwiXVxcXCIpOyAvL3NtYWxsVXJsIGJpZ1VybFxcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0ICAgcGljX3VybDogaW1nSnNbMF0uc21hbGxVcmwsXFxuXFx0XFx0ICAgdXJsOiBpbWdKc1swXS5zbWFsbFVybCxcXG5cXHRcXHQgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnXFxuXFx0XFx0fSk7XFxuXFx0fWNhdGNoKGUpe31cXG5cXG5cXHR0cnl7XFxuXFx0XFx0bGV0IHBpY3MgPSBwYXJzZURvbUZvckh0bWwoc3RlcExpc3RbaV0sJy52aWRlby1wbGF5ZXImJnZpZGVvJiZkYXRhLXBvc3RlcicpO1xcblxcdFxcdGxldCB2aWRlb3MgPSBcXFwiaHR0cHM6Ly93d3cud2lraWhvdy5jb20vdmlkZW9cXFwiK3BhcnNlRG9tRm9ySHRtbChzdGVwTGlzdFtpXSwnLnZpZGVvLXBsYXllciYmdmlkZW8mJmRhdGEtc3JjJyk7XFxuXFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHQgdGl0bGU6J+KAnOKAnOKAneKAnScrZ2V0QmlnVGV4dChnZXRTdHJvbmdUZXh0KFxcXCLop4bpopHmn6XnnIvwn5O68J+Rh1xcXCIpKSxcXG4gICAgICAgdXJsOnZpZGVvcyxcXG5cXHRcXHQgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG5cXHRcXHR9KTtcXG5cXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdCAgIHBpY191cmw6IHBpY3MsXFxuXFx0XFx0ICAgdXJsOiB2aWRlb3MsXFxuXFx0XFx0ICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJ1xcblxcdFxcdH0pO1xcblxcblxcdH1jYXRjaChlKXt9XFxuIFxcblxcdGxldCBzdGVwTnVtID0gcGFyc2VEb21Gb3JIdG1sKHN0ZXBMaXN0W2ldLCcuc3RlcF9udW0mJlRleHQnKTtcXG5cXHRzdGVwTnVtID0gZ2V0QmlnVGV4dChnZXRTdHJvbmdUZXh0KFxcXCLmraXpqqRcXFwiK3N0ZXBOdW0rXFxcIuOAgVxcXCIpKTtcXG5cXHRsZXQgcXVvdGVDb250ZW50ID0gcGFyc2VEb21Gb3JIdG1sKHN0ZXBMaXN0W2ldLCcuc3RlcCYmSHRtbCcpLnJlcGxhY2UoLzxzY3JpcHQ+KFtcXFxcc1xcXFxTXSo/KTxcXFxcL3NjcmlwdD4vZywnJyk7XFxuIGxldCB0ZW1wID0gcXVvdGVDb250ZW50LnNwbGl0KFxcXCI8L2I+XFxcIik7XFxuIGxldCBzeW1ib2wgPSAnPGJyPjxiaWc+8J+SjjwvYmlnPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyc7XFxuIGlmKHRlbXBbdGVtcC5sZW5ndGgtMV0ubWF0Y2goL15cXFxccyokLykpIHN5bWJvbD0nJztcXG5cXHRsZXQgc3RlcE51bUNvbnRlbnQgPSAoc3RlcE51bStxdW90ZUNvbnRlbnQuc3BsaXQoJzx1bD4nKVswXSkucmVwbGFjZSgvPGIvLFxcXCI8YmlnPjxiXFxcIilcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQucmVwbGFjZSgv44CCPFxcXFwvYj4vLCfjgII8L2I+PC9iaWc+JytzeW1ib2wpXFxuICAgICAgICAgICAgIC5yZXBsYWNlKC88XFxcXC9iPuOAgi8sJzwvYj7jgII8L2JpZz4nK3N5bWJvbCk7XFxuXFx0c3RlcE51bUNvbnRlbnQgPSBzdXBUYWdSZXBsYWNlbWVudDIoc3RlcE51bUNvbnRlbnQsLzwoc3VwKSBpZD1cXFwiX3JlZihbXFxcXHNcXFxcU10qPyk8XFxcXC8oc3VwKT4vZyxzdXBBcnJheSk7XFxuXFx0bGV0IGxpQXJyYXkgPSBwYXJzZURvbUZvckFycmF5KHF1b3RlQ29udGVudCwndWwmJmxpJyk7XFxuXFx0bGV0IGxpTGlzdCA9ICcnO1xcbiBkLnB1c2goe3RpdGxlOmdldFNtYWxsVGV4dChzdGVwTnVtQ29udGVudCksfSk7XFxuXFx0Zm9yKGxldCBqID0gMDtqPGxpQXJyYXkubGVuZ3RoO2orKyl7XFxuXFx0XFx0bGlDb250ZW50ID0gbGlBcnJheVtqXS5zcGxpdCgnXFxcXG4nKVswXTtcXG5cXG5cXHRcXHRsaUxpc3QgKz0gbGlDb250ZW50Kyc8YnI+JztcXG5cXHRcXHRpZihsaUFycmF5W2pdLmluY2x1ZGVzKCdzbWFsbFVybCcpKXtcXG5cXHRcXHRcXHRsaUxpc3QgPSBzdXBUYWdSZXBsYWNlbWVudDIobGlMaXN0LC88KHN1cCkgaWQ9XFxcIl9yZWYoW1xcXFxzXFxcXFNdKj8pPFxcXFwvKHN1cCk+L2csc3VwQXJyYXkpO1xcblxcdFxcdFxcdGxpTGlzdCA9IGxpTGlzdC5yZXBsYWNlKC88bGk+L2csJzxzcGFuPjxiaWc+8J+UmDwvYmlnPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycpO1xcblxcdFxcdFxcdGQucHVzaCh7dGl0bGU6Z2V0U21hbGxUZXh0KGdldEJsb2NrcXVvdGVUZXh0KGxpTGlzdCkpLH0pO1xcblxcdFxcdFxcdGxpTGlzdCA9ICcnO1xcblxcblxcdFxcdCAgbGV0IGltZ0xpSnMgPSBwYXJzZURvbUZvckh0bWwobGlBcnJheVtqXSwnLmltYWdlX2RldGFpbHMmJnNwYW4mJkh0bWwnKTtcXG5cXHRcXHRcXHRpbWdMaUpzPWV2YWwoXFxcIltcXFwiK2ltZ0xpSnMrXFxcIl1cXFwiKTsgLy9zbWFsbFVybCBiaWdVcmxcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdCAgcGljX3VybDogaW1nTGlKc1swXS5zbWFsbFVybCxcXG5cXHRcXHRcXHRcXHQgIHVybDogaW1nTGlKc1swXS5zbWFsbFVybCxcXG5cXHRcXHRcXHRcXHQgIGNvbF90eXBlOiAncGljXzFfZnVsbCdcXG5cXHRcXHRcXHR9KTtcXHRcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcbiAgaWYobGlMaXN0IT09XFxcIlxcXCIpe1xcbiAgICAgIGxpTGlzdCA9IHN1cFRhZ1JlcGxhY2VtZW50MihsaUxpc3QsLzwoc3VwKSBpZD1cXFwiX3JlZihbXFxcXHNcXFxcU10qPyk8XFxcXC8oc3VwKT4vZyxzdXBBcnJheSk7XFxuXFx0XFx0XFx0bGlMaXN0ID0gbGlMaXN0LnJlcGxhY2UoLzxsaT4vZywnPHNwYW4+PGJpZz7wn5SYPC9iaWc+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jyk7XFxuICAgIGxpTGlzdCA9IGdldEJsb2NrcXVvdGVUZXh0KGxpTGlzdCk7XFxufVxcblxcblxcdGxldCBncmVlbkJveCA9IFxcXCJcXFwiO1xcblxcdHRyeXtcXG5cXHRcXHRncmVlbkJveCA9IHBhcnNlRG9tRm9ySHRtbChzdGVwTGlzdFtpXSwnLmdyZWVuX2JveC5tb2JpbGUmJkh0bWwnKTtcXG5cXHRcXHRncmVlbkJveCA9IHN1cFRhZ1JlcGxhY2VtZW50MihncmVlbkJveCwvPChzdXApIGlkPVxcXCJfcmVmKFtcXFxcc1xcXFxTXSo/KTxcXFxcLyhzdXApPi9nLHN1cEFycmF5KS5yZXBsYWNlKC9wPi9nLCdzcGFuPicpO1xcblxcdH1jYXRjaChlKXt9XFxuICBcXG5cXHRpZihncmVlbkJveCAhPT1cXFwiXFxcIil7XFxuXFx0XFx0aWYoZ3JlZW5Cb3guaW5jbHVkZXMoXFxcIuS4k+WutuaPkOekulxcXCIpKXtcXG5cXHRcXHRcXHRsZXQgcGVyc29uUGljID0gcGFyc2VEb21Gb3JIdG1sKGdyZWVuQm94LFxcXCIuZ3JlZW5fYm94X3BlcnNvbl9jaXJjbGUmJmltZyYmc3JjXFxcIik7XFxuXFx0XFx0XFx0bGV0IHBlcnNvbk5hbWUgPSBwYXJzZURvbUZvckh0bWwoZ3JlZW5Cb3gsXFxcIi5ncmVlbl9ib3hfZXhwZXJ0X2luZm8mJnNwYW4mJlRleHRcXFwiKTtcXG5cXHRcXHRcXHRsZXQgcGVyc29uVHlwZSA9IHBhcnNlRG9tRm9ySHRtbChncmVlbkJveCxcXFwiLmdyZWVuX2JveF9leHBlcnRfaW5mby0tc3BhbiYmVGV4dFxcXCIpO1xcblxcdFxcdFxcdGxldCBwZXJzb25JbmZvID0gcGFyc2VEb21Gb3JIdG1sKGdyZWVuQm94LFxcXCIuZ3JlZW5fYm94X2V4cGVydF9kaWFsb2ctLS5ncmVlbl9ib3hfZXhwZXJ0X2RpYWxvZ191cHBlciYmVGV4dFxcXCIpO1xcblxcdFxcdFxcdGxldCBwZXJzb25VcmwgPSBwYXJzZURvbShncmVlbkJveCxcXFwiLmdyZWVuX2JveF9wZXJzb24uZXhwZXJ0JiZkYXRhLWxpbmtcXFwiKTtcXG5cXHRcXHRcXHRsZXQgcGVyc29uQ29udGVudCA9IHBhcnNlRG9tRm9ySHRtbChncmVlbkJveCxcXFwiLmdyZWVuX2JveF9jb250ZW50JiZIdG1sXFxcIik7XFxuXFxuICAgICBkLnB1c2goe3RpdGxlOmdldFNtYWxsVGV4dChsaUxpc3QrJ+KtkCZuYnNwOyZuYnNwOyZuYnNwOycrcGVyc29uQ29udGVudCksfSk7XFxuXFxuXFx0XFx0XFx0Ly9kLnB1c2goe3RpdGxlOlxcXCI8c3Ryb25nPuS4k+WutuaPkOekujwvc3Ryb25nPlxcXCIsfSk7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHR0aXRsZTpnZXRBZGRyZXNzVGFnKHBlcnNvblVybCxwZXJzb25OYW1lKStcXFwiICAgXFxcIitnZXRDb2xvclRleHQocGVyc29uVHlwZSxcXFwiI0ZBNzI5OFxcXCIpICsgXFxcIiAg8J+RiCAg5LiT5a625o+Q56S6XFxcIixcXG5cXHRcXHRcXHRcXHRwaWNfdXJsOnBlcnNvblBpYyxcXG5cXHRcXHRcXHRcXHR1cmw6XFxcInRvYXN0Oi8vXFxcIitwZXJzb25JbmZvLFxcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnYXZhdGFyJ1xcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdFxcblxcdFxcdH1lbHNle1xcblxcdFxcdFxcdGQucHVzaCh7dGl0bGU6Z2V0U21hbGxUZXh0KGxpTGlzdCtnZXRDb2xvclRleHQoXFxcIuKtkFxcXCIrZ3JlZW5Cb3gsXFxcIiMwMDk5MzNcXFwiKSksfSk7XFxuXFx0XFx0fVxcblxcdH1lbHNle1xcbiAgICAgaWYobGlMaXN0IT09XFxcIlxcXCIpIGQucHVzaCh7dGl0bGU6Z2V0U21hbGxUZXh0KGxpTGlzdCksfSk7XFxuICB9XFxufX1cXG5cXG4gIFxcbmxldCByZWFkbHk9Jyc7XFxudHJ5e1xcblxcdHJlYWRseSA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCcuc2VjdGlvbi7kvaDpnIDopoHlh4blpIcmJnVsJiZIdG1sJykucmVwbGFjZSgvPFxcXFwvbGk+L2csXFxcIjwvc3Bhbj48YnI+XFxcIilcXG5cXHQucmVwbGFjZSgvPGxpPi9nLCc8c3Bhbj7imJHvuI8mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnKVxcblxcdC5yZXBsYWNlKC88ZGl2IGNsYXNzPVxcXCJjaGVja21hcmtcXFwiPjxcXFxcL2Rpdj4vZyxcXFwiXFxcIik7XFxufWNhdGNoKGUpe31cXG5cXG5cXG5cXG5sZXQgdGlwcyA9ICcnO1xcbnRyeXtcXG5cXHR0aXBzID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsJy5zZWN0aW9uLuWwj+aPkOekuiYmdWwmJkh0bWwnKS5yZXBsYWNlKC88XFxcXC9saT4vZyxcXFwiPC9zcGFuPjxicj5cXFwiKVxcblxcdC5yZXBsYWNlKC88bGk+L2csJzxzcGFuPvCflLcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnKTtcXG5cXHR0aXBzID0gc3VwVGFnUmVwbGFjZW1lbnQyKHRpcHMsLzwoc3VwKSBpZD1cXFwiX3JlZihbXFxcXHNcXFxcU10qPyk8XFxcXC8oc3VwKT4vZyxzdXBBcnJheSk7XFxufWNhdGNoKGUpe31cXG5cXG5sZXQgd2FybmluZyA9ICcnO1xcbnRyeXtcXG5cXHR3YXJuaW5nID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsJy5zZWN0aW9uLuitpuWRiiYmdWwmJkh0bWwnKS5yZXBsYWNlKC88XFxcXC9saT4vZyxcXFwiPC9zcGFuPjxicj5cXFwiKVxcblxcdC5yZXBsYWNlKC88bGk+L2csJzxzcGFuPuKtlSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycpO1xcblxcdHdhcm5pbmcgPSBzdXBUYWdSZXBsYWNlbWVudDIod2FybmluZywvPChzdXApIGlkPVxcXCJfcmVmKFtcXFxcc1xcXFxTXSo/KTxcXFxcLyhzdXApPi9nLHN1cEFycmF5KTtcXG59Y2F0Y2goZSl7fVxcblxcbmlmKHJlYWRseSAhPT0gJycpe1xcblxcdC8vZC5wdXNoKHtjb2xfdHlwZTogJ2xpbmUnfSk7XFxuXFx0ZC5wdXNoKHtcXG5cXHRcXHR0aXRsZTogJ+KAnOKAnOKAneKAnTxiPuS9oOmcgOimgeWHhuWkh+KZqO+4jzwvYj4nLFxcblxcdFxcdHVybDpcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFx0XFx0Y29sX3R5cGU6XFxcInRleHRfY2VudGVyXzFcXFwiXFxuXFx0fSk7XFxuXFx0ZC5wdXNoKHt0aXRsZTogZ2V0U21hbGxUZXh0KHJlYWRseSksfSk7XFxufVxcblxcbmlmKHRpcHMgIT09ICcnKXtcXG5cXHQvL2QucHVzaCh7Y29sX3R5cGU6ICdsaW5lJ30pO1xcblxcdGQucHVzaCh7XFxuXFx0XFx0dGl0bGU6ICAn4oCc4oCc4oCd4oCdPGI+5bCP5o+Q56S68J+Xr++4jzwvYj4nLFxcblxcdFxcdHVybDpcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFx0XFx0Y29sX3R5cGU6XFxcInRleHRfY2VudGVyXzFcXFwiXFxuXFx0fSk7XFxuXFx0ZC5wdXNoKHt0aXRsZTogZ2V0U21hbGxUZXh0KHRpcHMpLH0pO1xcbn1cXG5cXG5pZih3YXJuaW5nICE9PSAnJyl7XFxuXFx0Ly9kLnB1c2goe2NvbF90eXBlOiAnbGluZSd9KTtcXG5cXHRkLnB1c2goe1xcblxcdFxcdHRpdGxlOiAn4oCc4oCc4oCd4oCdPGI+6K2m5ZGK4pqg77iPPC9iPicsXFxuXFx0XFx0dXJsOlxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXHRcXHRjb2xfdHlwZTpcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG5cXHR9KTtcXG5cXHRkLnB1c2goe3RpdGxlOiBnZXRTbWFsbFRleHQod2FybmluZyksfSk7XFxufVxcblxcbmxldCB0aXBzQnV0dG9tID0gJ+ivpeaWh+eroOadpea6kOS6jldpS2lIb3fvvIzlpoLmgqjllpzmrKLvvIzor7fov5vlhaXlrpjnvZHmtY/op4gnO1xcbmxldCB3YXJuaW5nQnV0dG9tID0gJ+atpOinhOWImeS7heS+m+S4quS6uuWtpuS5oOS6pOa1geS9v+eUqCzor7fkvb/nlKjlkI4yNOWwj+aXtuWGheWIoOmZpCc7XFxuZC5wdXNoKHtjb2xfdHlwZTogJ2xpbmVfYmxhbmsnfSk7XFxuZC5wdXNoKHtcXG4gICB0aXRsZTogJ+KAnOKAnOKAneKAnScrR2V0VGlwcyh0aXBzQnV0dG9tLHdhcm5pbmdCdXR0b20pLFxcbiAgIHVybDogTVlfVVJMLFxcbiAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG59KTtcXG5kLnB1c2goe2NvbF90eXBlOiAnbGluZV9ibGFuayd9KTtcXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0SG9tZVJlc3VsdChyZXMpO1wiLFwiZ3JvdXBcIjpcIuKRp+i1hOiur1wiLFwidWFcIjpcIm1vYmlsZVwiLFwicHJlUnVsZVwiOlwiXCIsXCJwYWdlc1wiOlwiW3tcXFwibmFtZVxcXCI6XFxcIkNTU+WHveaVsOmbhlxcXCIsXFxcInBhdGhcXFwiOlxcXCJjc3NcXFwiLFxcXCJydWxlXFxcIjpcXFwiZnVuY3Rpb24gZ2V0TmV3VGV4dCh0ZXh0LGNzcyl7XFxcXG4gICByZXR1cm4gJzwnK2NzcysnPicgKyB0ZXh0ICsgJzwvJytjc3MrJz4nO1xcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBnZXRCaWdUZXh0KHRleHQpIHtcXFxcbiAgICByZXR1cm4gJzxiaWc+JyArIHRleHQgKyAnPC9iaWc+JztcXFxcbn1cXFxcbmZ1bmN0aW9uIGdldFNtYWxsVGV4dCh0ZXh0KSB7XFxcXG4gICAgcmV0dXJuICc8c21hbGw+JyArIHRleHQgKyAnPC9zbWFsbD4nO1xcXFxufVxcXFxuZnVuY3Rpb24gZ2V0U3Ryb25nVGV4dCh0ZXh0KSB7XFxcXG4gICAgcmV0dXJuICc8c3Ryb25nPicgKyB0ZXh0ICsgJzwvc3Ryb25nPic7XFxcXG59XFxcXG5mdW5jdGlvbiBnZXRUaXRsZVRleHQodGV4dCkge1xcXFxuICAgIHJldHVybiBnZXRTdHJvbmdUZXh0KHRleHQpO1xcXFxufVxcXFxuZnVuY3Rpb24gZ2V0Q29sb3JUZXh0KHRleHQsIGNvbG9yKSB7XFxcXG4gICAgcmV0dXJuICc8Zm9udCBjb2xvcj1cXFxcXFxcIicgKyBjb2xvciArICdcXFxcXFxcIj4nICsgdGV4dCArICc8L2ZvbnQ+JztcXFxcbn1cXFxcbmZ1bmN0aW9uIGdldEdyZXlUZXh0KHRleHQpIHtcXFxcbiAgICByZXR1cm4gZ2V0Q29sb3JUZXh0KHRleHQsICdncmV5Jyk7XFxcXG59XFxcXG5mdW5jdGlvbiBnZXRBdXRob3JUZXh0KHRleHQpIHtcXFxcbiAgICByZXR1cm4gZ2V0Q29sb3JUZXh0KHRleHQsIHVzZXJDb2xvcik7XFxcXG59XFxcXG5mdW5jdGlvbiBnZXRDb2RlVGV4dCh0ZXh0KSB7XFxcXG4gICAgcmV0dXJuICc8Y29kZT4nICsgdGV4dCArICc8L2NvZGU+JztcXFxcbn1cXFxcbmZ1bmN0aW9uIGdldEJsb2NrcXVvdGVUZXh0KHRleHQpIHtcXFxcbiAgICByZXR1cm4gJzxibG9ja3F1b3RlPicgKyB0ZXh0ICsgJzwvYmxvY2txdW90ZT4nXFxcXG59XFxcXG5mdW5jdGlvbiBnZXRBZGRyZXNzVGFnKHVybCwgdGV4dCkge1xcXFxuICAgIHJldHVybiAnPGEgaHJlZj1cXFxcXFxcIicgKyB1cmwgKyAnXFxcXFxcXCI+JyArIHRleHQgKyAnPC9hPidcXFxcbn1cXFxcbmZ1bmN0aW9uIGdldENvbW1lbnRNZXRhKGh0bWwpIHtcXFxcbiAgICByZXR1cm4gZ2V0U21hbGxUZXh0KGh0bWwpO1xcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuinhuWbvuWkhOeQhlxcXCIsXFxcInBhdGhcXFwiOlxcXCJ2aWV3XFxcIixcXFwicnVsZVxcXCI6XFxcIi8v6I635Y+W6YeN5a6a5ZCR5Zyw5Z2AXFxcXG5mdW5jdGlvbiBnZXRSZWRpcmVjdEFkZHJlc3ModXJsKXtcXFxcbiAgICBsZXQgdXJsUmVkaXJlY3QgPSAnJztcXFxcbiAgICB0cnl7XFxcXG4gICAgICAgIGxldCB1cmxDb2RlID0gZmV0Y2godXJsLHtyZWRpcmVjdDpmYWxzZSx3aXRoSGVhZGVyczp0cnVlfSk7XFxcXG4gICAgICAgIHVybFJlZGlyZWN0ID0gSlNPTi5wYXJzZSh1cmxDb2RlKS5oZWFkZXJzLmxvY2F0aW9uWzBdO1xcXFxuICAgIH1jYXRjaChlKXt9XFxcXG4gICAgcmV0dXJuIHVybFJlZGlyZWN0O1xcXFxufVxcXFxuXFxcXG5TdHJpbmcucHJvdG90eXBlLnJlcGxhY2VXaXRoQ2FsbGJhY2sgPSBmdW5jdGlvbiAoc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSwgY2FsbGJhY2spIHtcXFxcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSB0aGlzO1xcXFxuICAgIGlmIChjYWxsYmFjayAhPSBudWxsKSB7XFxcXG4gICAgICAgIHJldHVyblZhbHVlID0gY2FsbGJhY2sodGhpcywgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSk7XFxcXG4gICAgfVxcXFxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcXFxcbn07XFxcXG5cXFxcbi8v5Yig6Zmk6YeN5a6a5ZCR5Zu+54mH6ZO+5o6lXFxcXG5mdW5jdGlvbiBkZWxldGVJbnZhbGlkSW1nVGFnKGNvbnRleHQsIHNlYXJjaFZhbHVlLHJlcGxhY2VWYWx1ZSkge1xcXFxuICAgIGxldCBtYXRjaEFycmF5ID0gY29udGV4dC5tYXRjaChzZWFyY2hWYWx1ZSk7XFxcXG4gICAgbGV0IHJldHVyblZhbHVlID0gY29udGV4dDtcXFxcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hBcnJheS5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBtYXRjaEFycmF5W2ldO1xcXFxuICAgICAgICAgICAgLzxpbWcuKj8oZGF0YS1vcmlnaW5hbHxkYXRhLXNyY3xzcmMpPVxcXFxcXFwiKC4qPylcXFxcXFxcIihbXFxcXFxcXFxzXFxcXFxcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxcXG4gICAgICAgICAgICBsZXQgaW1nVXJsID0gUmVnRXhwLiQyO1xcXFxuICAgICAgICAgICAgaWYgKGltZ1VybC5pbmRleE9mKFxcXFxcXFwicGxhY2Vob2xkZXJcXFxcXFxcIikgPiAtMSkge1xcXFxuICAgICAgICAgICAgICAgIC88aW1nLio/KGRhdGEtb3JpZ2luYWwpPVxcXFxcXFwiKC4qPylcXFxcXFxcIihbXFxcXFxcXFxzXFxcXFxcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxcXG4gICAgICAgICAgICAgICAgaW1nVXJsID0gUmVnRXhwLiQyO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgaWYoaW1nVXJsLmluZGV4T2YoXFxcXFxcXCIvL1xcXFxcXFwiKT09MCl7aW1nVXJsID0gXFxcXFxcXCJodHRwczpcXFxcXFxcIiArIGltZ1VybDt9XFxcXG4gICAgICAgICAgICBpZiAoaW1nVXJsICE9ICcnKSB7XFxcXG4gICAgICAgICAgICAgICAgaWYoZ2V0UmVkaXJlY3RBZGRyZXNzKGltZ1VybCkgIT0gJycpe1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoaXRlbSxyZXBsYWNlVmFsdWUpO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIEdldEltZ1RhZ0FycmF5U3RyaW5nKGNvbnRleHQsIHNlYXJjaFZhbHVlKSB7XFxcXG4gICAgbGV0IG1hdGNoQXJyYXkgPSBjb250ZXh0Lm1hdGNoKHNlYXJjaFZhbHVlKTtcXFxcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSAnJztcXFxcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hBcnJheS5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgcmV0dXJuVmFsdWUgKz0gbWF0Y2hBcnJheVtpXTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIGltZ1RhZ0dldFVybEFycmF5KGNvbnRleHQsIHNlYXJjaFZhbHVlKSB7XFxcXG4gICAgbGV0IG1hdGNoQXJyYXkgPSBjb250ZXh0Lm1hdGNoKHNlYXJjaFZhbHVlKTtcXFxcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBbXTtcXFxcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hBcnJheS5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBtYXRjaEFycmF5W2ldO1xcXFxuICAgICAgICAgICAgLzxpbWcuKj8oZGF0YS1vcmlnaW5hbHxkYXRhLXNyY3xzcmMpPVxcXFxcXFwiKC4qPylcXFxcXFxcIihbXFxcXFxcXFxzXFxcXFxcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxcXG4gICAgICAgICAgICBsZXQgaW1nVXJsID0gUmVnRXhwLiQyO1xcXFxuICAgICAgICAgICAgaWYgKGltZ1VybC5pbmRleE9mKFxcXFxcXFwicGxhY2Vob2xkZXJcXFxcXFxcIikgPiAtMSkge1xcXFxuICAgICAgICAgICAgICAgIC88aW1nLio/KGRhdGEtb3JpZ2luYWwpPVxcXFxcXFwiKC4qPylcXFxcXFxcIihbXFxcXFxcXFxzXFxcXFxcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxcXG4gICAgICAgICAgICAgICAgaW1nVXJsID0gUmVnRXhwLiQyO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgaWYoaW1nVXJsLmluZGV4T2YoXFxcXFxcXCIvL1xcXFxcXFwiKT09MCl7aW1nVXJsID0gXFxcXFxcXCJodHRwczpcXFxcXFxcIiArIGltZ1VybDt9XFxcXG4gICAgICAgICAgICBpZiAoaW1nVXJsICE9PSAnJykge1xcXFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlLnB1c2goaW1nVXJsKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxcXG59XFxcXG5cXFxcblxcXFxubGV0IGltZ0Vycm9yID0gJzxwPjxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPuWbvueJh+aaguaXtuaXoOazleaYvuekuu+8jOiLpeimgeafpeeci+ivtzxhIGhyZWY9XFxcXFxcXCInICsgTVlfVVJMICsgJ1xcXFxcXFwiPuiuv+mXruWOn+aWhzwvYT48L2ZvbnQ+PC9wPic7XFxcXG5mdW5jdGlvbiBpbWdUYWcoY29udGV4dCwgaW1nVXJsKSB7XFxcXG4gICAgbGV0IHJlcGxhY2VTdHJpbmcgPSBpbWdVcmwgPT09ICcnID8gaW1nRXJyb3IgOiAnPHA+PHNob3dpbWcgc3JjPVxcXFxcXFwiJyArIChpbWdVcmwgKyAnQFJlZmVyZXI9JyArIE1ZX1VSTCkgKyAnXFxcXFxcXCI+PC9wPic7XFxcXG4gICAgaWYgKGdldFZhcignd2lraWhvdy5oaWRlSW1nJyk9PScxJykge1xcXFxuICAgICAgICByZXBsYWNlU3RyaW5nID0gaW1nVXJsID09PSAnJyA/IGltZ0Vycm9yIDogJzxwPjxhIGhyZWY9XFxcXFxcXCInICsgaW1nVXJsICsgJ1xcXFxcXFwiPlvngrnlh7vmn6XnnIvlpKflm75dPC9hPjwvcD4nO1xcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gY29udGV4dC5yZXBsYWNlKC88aW1nIGRhdGEtdj4vZywgcmVwbGFjZVN0cmluZyk7XFxcXG59XFxcXG5mdW5jdGlvbiBpbWdUYWdPbmUoY29udGV4dCwgaW1nVXJsKSB7XFxcXG4gICAgbGV0IHJlcGxhY2VTdHJpbmcgPSBpbWdVcmwgPT09ICcnID8gaW1nRXJyb3IgOiAnXFxcXFxcXFxuPHA+PHNob3dpbWcgc3JjPVxcXFxcXFwiJyArIChpbWdVcmwgKyAnQFJlZmVyZXI9JyArIE1ZX1VSTCkgKyAnXFxcXFxcXCI+PC9wPic7XFxcXG4gICAgaWYgKGdldFZhcignd2lraWhvdy5oaWRlSW1nJyk9PScxJykge1xcXFxuICAgICAgICByZXBsYWNlU3RyaW5nID0gaW1nVXJsID09PSAnJyA/IGltZ0Vycm9yIDogJzxwPjxhIGhyZWY9XFxcXFxcXCInICsgaW1nVXJsICsgJ1xcXFxcXFwiPlvngrnlh7vmn6XnnIvlpKflm75dPC9hPiZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9XFxcXFxcXCJ3ZWI6Ly8nICsgaW1nVXJsICsgJ1xcXFxcXFwiPlvngrnlh7vmn6XnnIvpk77mjqVdPC9hPjwvcD4nO1xcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gY29udGV4dC5yZXBsYWNlKC88aW1nIGRhdGEtdj4vZywgcmVwbGFjZVN0cmluZyk7XFxcXG59XFxcXG5mdW5jdGlvbiBpbWdUYWdSZXBsYWNlbWVudDIoY29udGV4dCwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xcXFxuICAgIGxldCBtYXRjaEFycmF5ID0gY29udGV4dC5tYXRjaChzZWFyY2hWYWx1ZSk7XFxcXG4gICAgbGV0IHJldHVyblZhbHVlID0gY29udGV4dDtcXFxcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hBcnJheS5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBtYXRjaEFycmF5W2ldO1xcXFxuICAgICAgICAgICAgLzxpbWcuKj8oZGF0YS1vcmlnaW5hbHxkYXRhLXNyY3xzcmMpPVxcXFxcXFwiKC4qPylcXFxcXFxcIihbXFxcXFxcXFxzXFxcXFxcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxcXG4gICAgICAgICAgICBsZXQgaW1nVXJsID0gUmVnRXhwLiQyO1xcXFxuICAgICAgICAgICAgaWYgKGltZ1VybC5pbmRleE9mKFxcXFxcXFwicGxhY2Vob2xkZXJcXFxcXFxcIikgPiAtMSkge1xcXFxuICAgICAgICAgICAgICAgIC88aW1nLio/KGRhdGEtb3JpZ2luYWwpPVxcXFxcXFwiKC4qPylcXFxcXFxcIihbXFxcXFxcXFxzXFxcXFxcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxcXG4gICAgICAgICAgICAgICAgaW1nVXJsID0gUmVnRXhwLiQyO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgaWYoaW1nVXJsLmluZGV4T2YoXFxcXFxcXCIvL1xcXFxcXFwiKT09MCl7aW1nVXJsID0gXFxcXFxcXCJodHRwczpcXFxcXFxcIiArIGltZ1VybDt9XFxcXG4gICAgICAgICAgICBpZiAoaW1nVXJsICE9PSAnJykge1xcXFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUucmVwbGFjZShpdGVtLCByZXBsYWNlVmFsdWUpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gaW1nVGFnKHJldHVyblZhbHVlLCBpbWdVcmwpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcXFxcbn1cXFxcbmZ1bmN0aW9uIGltZ1RhZ1JlcGxhY2VtZW50T25lKGNvbnRleHQsIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcXFxcbiAgICBsZXQgbWF0Y2hBcnJheSA9IGNvbnRleHQubWF0Y2goc2VhcmNoVmFsdWUpO1xcXFxuICAgIGxldCByZXR1cm5WYWx1ZSA9IGNvbnRleHQ7XFxcXG4gICAgaWYgKG1hdGNoQXJyYXkgIT0gbnVsbCkge1xcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgIGxldCBpdGVtID0gbWF0Y2hBcnJheVtpXTtcXFxcbiAgICAgICAgICAgIC88aW1nLio/KGRhdGEtb3JpZ2luYWx8ZGF0YS1zcmN8c3JjKT1cXFxcXFxcIiguKj8pXFxcXFxcXCIoW1xcXFxcXFxcc1xcXFxcXFxcU10qPyk+Ly50ZXN0KGl0ZW0pO1xcXFxuICAgICAgICAgICAgbGV0IGltZ1VybCA9IFJlZ0V4cC4kMjtcXFxcbiAgICAgICAgICAgIGlmIChpbWdVcmwuaW5kZXhPZihcXFxcXFxcInBsYWNlaG9sZGVyXFxcXFxcXCIpID4gLTEpIHtcXFxcbiAgICAgICAgICAgICAgICAvPGltZy4qPyhkYXRhLW9yaWdpbmFsKT1cXFxcXFxcIiguKj8pXFxcXFxcXCIoW1xcXFxcXFxcc1xcXFxcXFxcU10qPyk+Ly50ZXN0KGl0ZW0pO1xcXFxuICAgICAgICAgICAgICAgIGltZ1VybCA9IFJlZ0V4cC4kMjtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGlmKGltZ1VybC5pbmRleE9mKFxcXFxcXFwiLy9cXFxcXFxcIik9PTApe2ltZ1VybCA9IFxcXFxcXFwiaHR0cHM6XFxcXFxcXCIgKyBpbWdVcmw7fVxcXFxuICAgICAgICAgICAgaWYgKGltZ1VybCAhPT0gJycpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoaXRlbSwgcmVwbGFjZVZhbHVlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGltZ1RhZ09uZShyZXR1cm5WYWx1ZSwgaW1nVXJsKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxcXG59XFxcXG5cXFxcbmxldCB2aWRlb0Vycm9yID0gJzxwPjxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPuinhumikeaaguaXtuaXoOazleaYvuekuu+8jOiLpeimgeafpeeci+ivtzxhIGhyZWY9XFxcXFxcXCInICsgTVlfVVJMICsgJ1xcXFxcXFwiPuiuv+mXruWOn+aWhzwvYT48L2ZvbnQ+PC9wPic7XFxcXG5mdW5jdGlvbiB2aWRlb1RhZyhjb250ZXh0LCB2aWRlb1VybCkge1xcXFxuICAgIGxldCByZXBsYWNlU3RyaW5nID0gdmlkZW9VcmwgPT09ICcnID8gdmlkZW9FcnJvciA6ICc8cD48YSBocmVmPVxcXFxcXFwiJyArICh2aWRlb1VybCkgKyAnXFxcXFxcXCI+W+eCueWHu+afpeeci+inhumikV08L2E+PC9wPic7XFxcXG4gICAgaWYgKGdldFZhcignd2lraWhvdy5oaWRlSW1nJyk9PScxJykge1xcXFxuICAgICAgICByZXBsYWNlU3RyaW5nID0gdmlkZW9VcmwgPT09ICcnID8gdmlkZW9FcnJvciA6ICc8cD48YSBocmVmPVxcXFxcXFwiJyArIHZpZGVvVXJsICsgJ1xcXFxcXFwiPlvngrnlh7vmn6XnnIvop4bpopFdPC9hPjwvcD4nO1xcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gY29udGV4dC5yZXBsYWNlKC88dmlkZW8gZGF0YS12Pi9nLCByZXBsYWNlU3RyaW5nKTtcXFxcbn1cXFxcbmZ1bmN0aW9uIHZpZGVvVGFnUmVwbGFjZW1lbnQyKGNvbnRleHQsIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcXFxcbiAgICBsZXQgbWF0Y2hBcnJheSA9IGNvbnRleHQubWF0Y2goc2VhcmNoVmFsdWUpO1xcXFxuICAgIGxldCByZXR1cm5WYWx1ZSA9IGNvbnRleHQ7XFxcXG4gICAgaWYgKG1hdGNoQXJyYXkgIT0gbnVsbCkge1xcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgIGxldCBpdGVtID0gbWF0Y2hBcnJheVtpXTtcXFxcbiAgICAgICAgICAgIC88KHNvdXJjZXx2aWRlbykuKj8oZGF0YS1vcmlnaW5hbHxkYXRhLXNyY3xzcmMpPVxcXFxcXFwiKC4qPylcXFxcXFxcIihbXFxcXFxcXFxzXFxcXFxcXFxTXSo/KT4vLnRlc3QoaXRlbSk7XFxcXG4gICAgICAgICAgICBsZXQgdmlkZW9VcmwgPSBSZWdFeHAuJDM7XFxcXG4gICAgICAgICAgICBpZih2aWRlb1VybC5pbmRleE9mKFxcXFxcXFwiLy9cXFxcXFxcIik9PTApe3ZpZGVvVXJsID0gXFxcXFxcXCJodHRwczpcXFxcXFxcIiArIHZpZGVvVXJsO31cXFxcbiAgICAgICAgICAgIGlmKHZpZGVvVXJsLmluY2x1ZGVzKFxcXFxcXFwiemhhaW5hbm1pXFxcXFxcXCIpKSBjb250aW51ZTtcXFxcbiAgICAgICAgICAgIGlmICh2aWRlb1VybCAhPT0gJycpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoaXRlbSwgcmVwbGFjZVZhbHVlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHZpZGVvVGFnKHJldHVyblZhbHVlLCB2aWRlb1VybCk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcXFxufVxcXFxuXFxcXG5sZXQgbGlua0Vycm9yID0gJzxwPjxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPumTvuaOpeaaguaXtuaXoOazleaYvuekuu+8jOiLpeimgeafpeeci+ivtzxhIGhyZWY9XFxcXFxcXCInICsgTVlfVVJMICsgJ1xcXFxcXFwiPuiuv+mXruWOn+aWhzwvYT48L2ZvbnQ+PC9wPic7XFxcXG5mdW5jdGlvbiBsaW5rVGFnKGNvbnRleHQsIGxpbmtVcmwpIHtcXFxcbiAgICBsZXQgcmVwbGFjZVN0cmluZyA9IGxpbmtVcmwgPT09ICcnID8gbGlua0Vycm9yIDogJzxwPjxhIGhyZWY9XFxcXFxcXCInICsgKGxpbmtVcmwpICsgJ1xcXFxcXFwiPlvngrnlh7vmn6XnnIvpk77mjqVdPC9hPjwvcD4nO1xcXFxuICAgIGlmIChnZXRWYXIoJ3dpa2lob3cuaGlkZUltZycpPT0nMScpIHtcXFxcbiAgICAgICAgcmVwbGFjZVN0cmluZyA9IGxpbmtVcmwgPT09ICcnID8gbGlua0Vycm9yIDogJzxwPjxhIGhyZWY9XFxcXFxcXCInICsgbGlua1VybCArICdcXFxcXFxcIj5b54K55Ye75p+l55yL6ZO+5o6lXTwvYT48L3A+JztcXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIGNvbnRleHQucmVwbGFjZSgvPGxpbmsgZGF0YS12Pi9nLCByZXBsYWNlU3RyaW5nKTtcXFxcbn1cXFxcbmZ1bmN0aW9uIGxpbmtUYWdSZXBsYWNlbWVudDIoY29udGV4dCwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xcXFxuICAgIGxldCBtYXRjaEFycmF5ID0gY29udGV4dC5tYXRjaChzZWFyY2hWYWx1ZSk7XFxcXG4gICAgbGV0IHJldHVyblZhbHVlID0gY29udGV4dDtcXFxcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hBcnJheS5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBtYXRjaEFycmF5W2ldO1xcXFxuICAgICAgICAgICAgLzwoaWZyYW1lKS4qPyhkYXRhLW9yaWdpbmFsfGRhdGEtc3JjfHNyYyk9XFxcXFxcXCIoLio/KVxcXFxcXFwiKFtcXFxcXFxcXHNcXFxcXFxcXFNdKj8pPi8udGVzdChpdGVtKTtcXFxcbiAgICAgICAgICAgIGxldCBsaW5rVXJsID0gUmVnRXhwLiQzO1xcXFxuICAgICAgICAgICAgaWYobGlua1VybC5pbmRleE9mKFxcXFxcXFwiLy9cXFxcXFxcIik9PTApe2xpbmtVcmwgPSBcXFxcXFxcImh0dHBzOlxcXFxcXFwiICsgbGlua1VybDt9XFxcXG4gICAgICAgICAgICBpZiAobGlua1VybCAhPT0gJycpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoaXRlbSwgcmVwbGFjZVZhbHVlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGxpbmtUYWcocmV0dXJuVmFsdWUsIGxpbmtVcmwpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gY3NzVGFnUmVwbGFjZW1lbnQyKGNvbnRleHQsIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcXFxcbiAgICBsZXQgbWF0Y2hBcnJheSA9IGNvbnRleHQubWF0Y2goc2VhcmNoVmFsdWUpO1xcXFxuICAgIGxldCByZXR1cm5WYWx1ZSA9IGNvbnRleHQ7XFxcXG4gICAgaWYgKG1hdGNoQXJyYXkgIT0gbnVsbCkge1xcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgIGxldCBpdGVtID0gbWF0Y2hBcnJheVtpXTtcXFxcbiAgICAgICAgICAgIC88KGRpdnxwfHN0cm9uZyk+Lio/PFxcXFxcXFxcLyhkaXZ8cHxzdHJvbmcpPi8udGVzdChpdGVtKTtcXFxcbiAgICAgICAgICAgIGxldCBjc3MgPSBSZWdFeHAuJDI7XFxcXG4gICAgICAgICAgICBpZiAoY3NzLm1hdGNoKC9eXFxcXFxcXFxzKiQvKSkge1xcXFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUucmVwbGFjZShpdGVtLCByZXBsYWNlVmFsdWUpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gc3VwVGFnUmVwbGFjZW1lbnQyKGNvbnRleHQsIHNlYXJjaFZhbHVlLHN1cEFycmF5KSB7XFxcXG4gICAgbGV0IG1hdGNoQXJyYXkgPSBjb250ZXh0Lm1hdGNoKHNlYXJjaFZhbHVlKTtcXFxcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBjb250ZXh0O1xcXFxuICAgIGlmIChtYXRjaEFycmF5ICE9IG51bGwpIHtcXFxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRjaEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICBsZXQgaXRlbSA9IG1hdGNoQXJyYXlbaV07XFxcXG4gICAgICAgICAgICBsZXQgc3VwVGFnID0gcGFyc2VEb21Gb3JIdG1sKG1hdGNoQXJyYXlbaV0sJ3N1cCYmYSYmSHRtbCcpO1xcXFxuICAgICAgICAgICAgbGV0IHN1cE51bSA9IHBhcnNlSW50KHN1cFRhZy5yZXBsYWNlKC9cXFxcXFxcXFt8XFxcXFxcXFxdL2csXFxcXFxcXCJcXFxcXFxcIikpLTE7XFxcXG4gICAgICAgICAgICBpZiAoc3VwVGFnICE9PSAnJykge1xcXFxuICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUucmVwbGFjZShpdGVtLCAnPHNtYWxsPjxzdXA+PGEgaHJlZj1cXFxcXFxcIicrIHN1cEFycmF5W3N1cE51bV0rJ1xcXFxcXFwiPicrc3VwVGFnKyc8L2E+PC9zdXA+PC9zbWFsbD4nKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5o+Q56S6XFxcIixcXFwicGF0aFxcXCI6XFxcInRpcHNcXFwiLFxcXCJydWxlXFxcIjpcXFwiXFxcXG5mdW5jdGlvbiBHZXRIb21lKG51bSl7XFxcXG4gICAgbGV0IHJldHJhY3QgPSAnJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7JztcXFxcbiAgICBmb3IobGV0IGk9MTtpPG51bTtpKyspIHJldHJhY3QgKz0gJyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyc7XFxcXG4gICAgcmV0dXJuICc8c3Bhbj4nK3JldHJhY3QrJzwvc3Bhbj4nO1xcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBHZXRDb21tZW50KG1haW4sYXV0b3IsdGltZSxmbG9vcil7XFxcXG5cXFxcbiAgICBsZXQgZm9udFN0eWxlID0gJzxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPjxzcGFuIGNsYXNzPVxcXFxcXFwibm9ybWFsLWZvbnQgZ3JheS1mb250IGFsaWduLWJhc2VsaW5lXFxcXFxcXCI+Jm5ic3A7Jm5ic3A7Jyt0aW1lKycgJm5ic3A7PC9zcGFuPjwvZm9udD4nO1xcXFxuICAgIGxldCBidXR0b25EYXRhID0gZ2V0Q29sb3JUZXh0KGF1dG9yLCcjMjk3OUZGJykrZm9udFN0eWxlK2dldENvbG9yVGV4dChmbG9vciwnIzI5NzlhYScpO1xcXFxuICAgIGxldCBjb21tZW50ID0gJyc7XFxcXG5cXFxcbiAgICBpZihmbG9vcj09Jycpe1xcXFxuICAgICAgICBjb21tZW50ID1HZXRIb21lKDEpK21haW4rZ2V0TmV3VGV4dCgnPGJyPicrR2V0SG9tZSgxKStidXR0b25EYXRhLCdzbWFsbCcpO1xcXFxuICAgIH1lbHNle1xcXFxuICAgICAgICBjb21tZW50ID0gbWFpbitnZXROZXdUZXh0KCc8YnI+JysgYnV0dG9uRGF0YSwnc21hbGwnKTtcXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIGNvbW1lbnQ7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIEdldFRpcHModGlwcyx3YXJuaW5nKXtcXFxcbiAgICBsZXQgdGlwc1N0eWxlID0gJzxzbWFsbD48c3BhbiBjbGFzcz1cXFxcXFxcIm5vcm1hbC1mb250IGdyYXktZm9udCBhbGlnbi1iYXNlbGluZVxcXFxcXFwiPiZuYnNwOycrdGlwcysnICZuYnNwOzwvc3Bhbj48L3NtYWxsPic7XFxcXG4gICAgbGV0IHdhcm5pbmdTdHlsZSA9ICc8c21hbGw+PHNtYWxsPjxmb250IGNvbG9yPVxcXFxcXFwiZ3JleVxcXFxcXFwiPjxzcGFuIGNsYXNzPVxcXFxcXFwibm9ybWFsLWZvbnQgZ3JheS1mb250IGFsaWduLWJhc2VsaW5lXFxcXFxcXCI+Jm5ic3A7Jyt3YXJuaW5nKycgJm5ic3A7PC9zcGFuPjwvZm9udD48L3NtYWxsPjwvc21hbGw+JztcXFxcbiAgICByZXR1cm4gdGlwc1N0eWxlKyc8YnI+Jyt3YXJuaW5nU3R5bGU7XFxcXG59XFxcIn1dXCJ9IiwicGljVXJsIjoiaHR0cHM6Ly93d3cud2lraWhvdy5jb20vaW1hZ2VzX2VuL3RodW1iL2EvYTAvQ2xlYW5zZS1Zb3VyLUNvbG9uLVN0ZXAtMTAuanBnLy1jcm9wLTI1MC0xNDUtMTkzcHgtQ2xlYW5zZS1Zb3VyLUNvbG9uLVN0ZXAtMTAuanBnIiwidGl0bGUiOiLlpoLkvZUg55aP6YCa6by75aGeIn0=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement