IiBUZXN0cyBmb3IgcmVnZXhwIGluIHV0ZjggZW5jb2RpbmcKCmZ1bmMgczplcXVpdmFsZW5jZV90ZXN0KCkKICBsZXQgc3RyID0gIkHDgMOBw4LDg8OEw4XEgMSCxITHjceex6DHusiCyKbIuuG4gOG6oOG6ouG6pOG6puG6qOG6quG6rOG6ruG6sOG6suG6tOG6tiBCxoHJg+G4guG4hOG4hiBDw4fEhsSIxIrEjMaHyLvhuIjqnpIgRMSOxJDGiuG4iuG4jOG4juG4kOG4kiBFw4jDicOKw4vEksSUxJbEmMSayITIhsioyYbhuJThuJbhuJjhuJrhuJzhurjhurrhurzhur7hu4Dhu4Lhu4Thu4YgRsaR4bie6p6YIEfEnMSexKDEosaTx6THpse04big6p6gIEjEpMSmyJ7huKLhuKThuKbhuKjhuKrisacgScOMw43DjsOPxKjEqsSsxK7EsMaXx4/IiMiK4bis4biu4buI4buKIErEtMmIIEvEtsaYx6jhuLDhuLLhuLTisanqnYAgTMS5xLvEvcS/xYHIveG4tuG4uOG4uuG4vOKxoCBN4bi+4bmA4bmCIE7DkcWDxYXFh8e44bmE4bmG4bmI4bmK6p6kIE/DksOTw5TDlcOWw5jFjMWOxZDGn8agx5HHqsesx77IjMiOyKrIrMiuyLDhuYzhuY7huZDhuZLhu4zhu47hu5Dhu5Lhu5Thu5bhu5jhu5rhu5zhu57hu6Dhu6IgUMak4bmU4bmW4rGjIFHJiiBSxZTFlsWYyJDIksmM4bmY4bma4bmc4bme4rGk6p6mIFPFmsWcxZ7FoMiY4bmg4bmi4bmk4bmm4bmo4rG+6p6oIFTFosWkxabGrMauyJrIvuG5quG5rOG5ruG5sCBVw5nDmsObw5zFqMWqxazFrsWwxq/HlceZx5vHk8eXyJTIlsmE4bmy4bm04bm24bm44bm64buk4bum4buo4buq4bus4buu4buwICBWxrLhubzhub4gV8W04bqA4bqC4bqE4bqG4bqIIFjhuorhuowgWcOdxbbFuMazyLLJjuG6juG7suG7tOG7tuG7uCBaxbnFu8W9xrXhupDhupLhupTisasgYcOgw6HDosOjw6TDpcSBxIPEhceOx5/Hoce7yIPIp+G2j+G4geG6muG6oeG6o+G6peG6p+G6qeG6q+G6reG6r+G6seG6s+G6teG6t+KxpSBixoDJk+G1rOG2gOG4g+G4heG4hyBjw6fEh8SJxIvEjcaIyLzhuInqnpPqnpQgZMSPxJHJl+G1reG2geG2keG4i+G4jeG4j+G4keG4kyBlw6jDqcOqw6vEk8SVxJfEmcSbyIXIh8ipyYfhtpLhuJXhuJfhuJnhuJvhuJ3hurnhurvhur3hur/hu4Hhu4Phu4Xhu4cgZsaS4bWu4baC4bif6p6ZIGfEncSfxKHEo8elx6fHtcmg4baD4bih6p6hIGjEpcSnyJ/huKPhuKXhuKfhuKnhuKvhupbisajqnpUgacOsw63DrsOvxKnEq8StxK/HkMiJyIvJqOG2luG4reG4r+G7ieG7iyBqxLXHsMmJIGvEt8aZx6nhtoThuLHhuLPhuLXisarqnYEgbMS6xLzEvsWAxYLGmuG4t+G4ueG4u+G4veKxoSBt4bWv4bi/4bmB4bmDIG7DscWExYbFiMWJx7nhtbDhtofhuYXhuYfhuYnhuYvqnqUgb8Oyw7PDtMO1w7bDuMWNxY/Fkcahx5LHq8etx7/IjciPyKvIrcivyLHJteG5jeG5j+G5keG5k+G7jeG7j+G7keG7k+G7leG7l+G7meG7m+G7neG7n+G7oeG7oyBwxqXhtbHhtb3htojhuZXhuZcgccmLyqAgcsWVxZfFmciRyJPJjcm94bWy4bWz4baJ4bmb4bmd4bmf6p6nIHPFm8WdxZ/FociZyL/htbThtorhuaHhuaPhuaXhuafhuanqnqkgdMWjxaXFp8arxq3Im8qI4bW14bmr4bmt4bmv4bmx4bqX4rGmIHXDucO6w7vDvMWpxavFrcWvxbHFs8eax5bGsMeUx5jHnMiVyJfKieG1vuG2meG5s+G5teG5t+G5ueG5u+G7peG7p+G7qeG7q+G7reG7r+G7sSB2yovhtozhub3hub8gd8W14bqB4bqD4bqF4bqH4bqJ4bqYIHjhuovhuo0gecO9w7/Ft8a0yLPJj+G6j+G6meG7s+G7teG7t+G7uSB6xbrFvMW+xrbhtbbhto7hupHhupPhupXisawiCiAgbGV0IGdyb3VwcyA9IHNwbGl0KHN0cikKICBmb3IgZ3JvdXAxIGluIGdyb3VwcwogICAgICBmb3IgYyBpbiBzcGxpdChncm91cDEsICdcenMnKQoJIiBuZXh0IHN0YXRlbWVudCBjb25maXJtcyB0aGF0IGVxdWl2YWxlbmNlIGNsYXNzIG1hdGNoZXMgZXZlcnkKCSIgY2hhcmFjdGVyIGluIGdyb3VwCiAgICAgICAgY2FsbCBhc3NlcnRfbWF0Y2goJ15bWz0nIC4uIGMgLi4gJz1dXSokJywgZ3JvdXAxKQogICAgICAgIGZvciBncm91cDIgaW4gZ3JvdXBzCiAgICAgICAgICBpZiBncm91cDIgIT0gZ3JvdXAxCgkgICAgIiBuZXh0IHN0YXRlbWVudCBjb252ZXJ0cyB0aGF0IGVxdWl2YWxlbmNlIGNsYXNzIGRvZXNuJ3QgbWF0Y2gKCSAgICAiIGNoYXJhY3RlciBpbiBhbnkgb3RoZXIgZ3JvdXAKICAgICAgICAgICAgY2FsbCBhc3NlcnRfZXF1YWwoLTEsIG1hdGNoKGdyb3VwMiwgJ1tbPScgLi4gYyAuLiAnPV1dJyksIGMpCiAgICAgICAgICBlbmRpZgogICAgICAgIGVuZGZvcgogICAgICBlbmRmb3IKICBlbmRmb3IKZW5kZnVuYwoKZnVuYyBUZXN0X2VxdWl2YWxlbmNlX3JlMSgpCiAgc2V0IHJlPTEKICBjYWxsIHM6ZXF1aXZhbGVuY2VfdGVzdCgpCiAgc2V0IHJlPTAKZW5kZnVuYwoKZnVuYyBUZXN0X2VxdWl2YWxlbmNlX3JlMigpCiAgc2V0IHJlPTIKICBjYWxsIHM6ZXF1aXZhbGVuY2VfdGVzdCgpCiAgc2V0IHJlPTAKZW5kZnVuYwoKZnVuYyBzOmNsYXNzZXNfdGVzdCgpCiAgaWYgaGFzKCd3aW4zMicpCiAgICBzZXQgaXNrZXl3b3JkPUAsNDgtNTcsXywxOTItMjU1CiAgZW5kaWYKICBzZXQgaXNwcmludD1ALDE2MS0yNTUKICBjYWxsIGFzc2VydF9lcXVhbCgnTW90w7ZyaGVhZCcsIG1hdGNoc3RyKCdNb3TDtnJoZWFkJywgJ1tbOnByaW50Ol1dXCsnKSkKCiAgbGV0IGFsbnVtY2hhcnMgPSAnJwogIGxldCBhbHBoYWNoYXJzID0gJycKICBsZXQgYmFja3NwYWNlY2hhciA9ICcnCiAgbGV0IGJsYW5rY2hhcnMgPSAnJwogIGxldCBjbnRybGNoYXJzID0gJycKICBsZXQgZGlnaXRjaGFycyA9ICcnCiAgbGV0IGVzY2FwZWNoYXIgPSAnJwogIGxldCBncmFwaGNoYXJzID0gJycKICBsZXQgbG93ZXJjaGFycyA9ICcnCiAgbGV0IHByaW50Y2hhcnMgPSAnJwogIGxldCBwdW5jdGNoYXJzID0gJycKICBsZXQgcmV0dXJuY2hhciA9ICcnCiAgbGV0IHNwYWNlY2hhcnMgPSAnJwogIGxldCB0YWJjaGFyID0gJycKICBsZXQgdXBwZXJjaGFycyA9ICcnCiAgbGV0IHhkaWdpdGNoYXJzID0gJycKICBsZXQgaWRlbnRjaGFycyA9ICcnCiAgbGV0IGlkZW50Y2hhcnMxID0gJycKICBsZXQga3dvcmRjaGFycyA9ICcnCiAgbGV0IGt3b3JkY2hhcnMxID0gJycKICBsZXQgZm5hbWVjaGFycyA9ICcnCiAgbGV0IGZuYW1lY2hhcnMxID0gJycKICBsZXQgaSA9IDEKICB3aGlsZSBpIDw9IDI1NQogICAgbGV0IGMgPSBucjJjaGFyKGkpCiAgICBpZiBjID1+ICdbWzphbHBoYTpdXScKICAgICAgbGV0IGFscGhhY2hhcnMgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOmFsbnVtOl1dJwogICAgICBsZXQgYWxudW1jaGFycyAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnW1s6YmFja3NwYWNlOl1dJwogICAgICBsZXQgYmFja3NwYWNlY2hhciAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnW1s6Ymxhbms6XV0nCiAgICAgIGxldCBibGFua2NoYXJzIC49IGMKICAgIGVuZGlmCiAgICBpZiBjID1+ICdbWzpjbnRybDpdXScKICAgICAgbGV0IGNudHJsY2hhcnMgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOmRpZ2l0Ol1dJwogICAgICBsZXQgZGlnaXRjaGFycyAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnW1s6ZXNjYXBlOl1dJwogICAgICBsZXQgZXNjYXBlY2hhciAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnW1s6Z3JhcGg6XV0nCiAgICAgIGxldCBncmFwaGNoYXJzIC49IGMKICAgIGVuZGlmCiAgICBpZiBjID1+ICdbWzpsb3dlcjpdXScKICAgICAgbGV0IGxvd2VyY2hhcnMgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOnByaW50Ol1dJwogICAgICBsZXQgcHJpbnRjaGFycyAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnW1s6cHVuY3Q6XV0nCiAgICAgIGxldCBwdW5jdGNoYXJzIC49IGMKICAgIGVuZGlmCiAgICBpZiBjID1+ICdbWzpyZXR1cm46XV0nCiAgICAgIGxldCByZXR1cm5jaGFyIC49IGMKICAgIGVuZGlmCiAgICBpZiBjID1+ICdbWzpzcGFjZTpdXScKICAgICAgbGV0IHNwYWNlY2hhcnMgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOnRhYjpdXScKICAgICAgbGV0IHRhYmNoYXIgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOnVwcGVyOl1dJwogICAgICBsZXQgdXBwZXJjaGFycyAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnW1s6eGRpZ2l0Ol1dJwogICAgICBsZXQgeGRpZ2l0Y2hhcnMgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOmlkZW50Ol1dJwogICAgICBsZXQgaWRlbnRjaGFycyAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnXGknCiAgICAgIGxldCBpZGVudGNoYXJzMSAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnW1s6a2V5d29yZDpdXScKICAgICAgbGV0IGt3b3JkY2hhcnMgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1xrJwogICAgICBsZXQga3dvcmRjaGFyczEgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOmZuYW1lOl1dJwogICAgICBsZXQgZm5hbWVjaGFycyAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnXGYnCiAgICAgIGxldCBmbmFtZWNoYXJzMSAuPSBjCiAgICBlbmRpZgogICAgbGV0IGkgKz0gMQogIGVuZHdoaWxlCgogIGNhbGwgYXNzZXJ0X2VxdWFsKCdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JywgYWxwaGFjaGFycykKICBjYWxsIGFzc2VydF9lcXVhbCgnMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonLCBhbG51bWNoYXJzKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCJcYiIsIGJhY2tzcGFjZWNoYXIpCiAgY2FsbCBhc3NlcnRfZXF1YWwoIlx0ICIsIGJsYW5rY2hhcnMpCiAgY2FsbCBhc3NlcnRfZXF1YWwoIlx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5ceDBiXGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFcZVx4MWNceDFkXHgxZVx4MWZceDdmIiwgY250cmxjaGFycykKICBjYWxsIGFzc2VydF9lcXVhbCgiMDEyMzQ1Njc4OSIsIGRpZ2l0Y2hhcnMpCiAgY2FsbCBhc3NlcnRfZXF1YWwoIlw8RXNjPiIsIGVzY2FwZWNoYXIpCiAgY2FsbCBhc3NlcnRfZXF1YWwoJyEiIyQlJicnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+JywgZ3JhcGhjaGFycykKICBjYWxsIGFzc2VydF9lcXVhbCgnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXrCtcOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO4w7nDusO7w7zDvcO+w78nLCBsb3dlcmNoYXJzKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCcgISIjJCUmJycoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX7CoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w78nLCBwcmludGNoYXJzKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCchIiMkJSYnJygpKissLS4vOjs8PT4/QFtcXV5fYHt8fX4nLCBwdW5jdGNoYXJzKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWsOAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPw5DDkcOSw5PDlMOVw5bDmMOZw5rDm8Ocw53DnicsIHVwcGVyY2hhcnMpCiAgY2FsbCBhc3NlcnRfZXF1YWwoIlxyIiwgcmV0dXJuY2hhcikKICBjYWxsIGFzc2VydF9lcXVhbCgiXHRcblx4MGJcZlxyICIsIHNwYWNlY2hhcnMpCiAgY2FsbCBhc3NlcnRfZXF1YWwoIlx0IiwgdGFiY2hhcikKICBjYWxsIGFzc2VydF9lcXVhbCgnMDEyMzQ1Njc4OUFCQ0RFRmFiY2RlZicsIHhkaWdpdGNoYXJzKQoKICBpZiBoYXMoJ3dpbjMyJykKICAgIGxldCBpZGVudGNoYXJzX29rID0gJzAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5esKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMKhwqLCo8KkwqXCpsKnwrXDgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDuMO5w7rDu8O8w73DvsO/JwogICAgbGV0IGt3b3JkY2hhcnNfb2sgPSAnMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6wrXDgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5fDmMOZw5rDm8Ocw53DnsOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9w77DvycKICBlbHNlaWYgaGFzKCdlYmNkaWMnKQogICAgbGV0IGlkZW50Y2hhcnNfb2sgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXrCgMKMwo3CjsKcwp7CrMKuwrXCusK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/JwogICAgbGV0IGt3b3JkY2hhcnNfb2sgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXrCgMKMwo3CjsKcwp7CrMKuwrXCusK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/JwogIGVsc2UKICAgIGxldCBpZGVudGNoYXJzX29rID0gJzAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5esK1w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w78nCiAgICBsZXQga3dvcmRjaGFyc19vayA9ICcwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXrCtcOAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPw5DDkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/JwogIGVuZGlmCgogIGlmIGhhcygnd2luMzInKQogICAgbGV0IGZuYW1lY2hhcnNfb2sgPSAnISMkJSssLS4vMDEyMzQ1Njc4OTo9QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdX2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e31+wqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPw5DDkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/JwogIGVsc2VpZiBoYXMoJ2FtaWdhJykKICAgIGxldCBmbmFtZWNoYXJzX29rID0gJyQrLC0uLzAxMjM0NTY3ODk6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp+wqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPw5DDkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/JwogIGVsc2VpZiBoYXMoJ3ZtcycpCiAgICBsZXQgZm5hbWVjaGFyc19vayA9ICcjJCUrLC0uLzAxMjM0NTY3ODk6Ozw+QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXV9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5en7CoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w78nCiAgZWxzZWlmIGhhcygnZWJjZGljJykKICAgIGxldCBmbmFtZWNoYXJzX29rID0gJyMkJSssLS4vPUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6fsKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5fDmMOZw5rDm8Ocw53DnsOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9w77DvycKICBlbHNlCiAgICBsZXQgZm5hbWVjaGFyc19vayA9ICcjJCUrLC0uLzAxMjM0NTY3ODk9QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp+wqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPw5DDkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/JwogIGVuZGlmCgogIGNhbGwgYXNzZXJ0X2VxdWFsKGlkZW50Y2hhcnNfb2ssIGlkZW50Y2hhcnMpCiAgY2FsbCBhc3NlcnRfZXF1YWwoa3dvcmRjaGFyc19vaywga3dvcmRjaGFycykKICBjYWxsIGFzc2VydF9lcXVhbChmbmFtZWNoYXJzX29rLCBmbmFtZWNoYXJzKQoKICBjYWxsIGFzc2VydF9lcXVhbChpZGVudGNoYXJzMSwgaWRlbnRjaGFycykKICBjYWxsIGFzc2VydF9lcXVhbChrd29yZGNoYXJzMSwga3dvcmRjaGFycykKICBjYWxsIGFzc2VydF9lcXVhbChmbmFtZWNoYXJzMSwgZm5hbWVjaGFycykKZW5kZnVuYwoKZnVuYyBUZXN0X2NsYXNzZXNfcmUxKCkKICBzZXQgcmU9MQogIGNhbGwgczpjbGFzc2VzX3Rlc3QoKQogIHNldCByZT0wCmVuZGZ1bmMKCmZ1bmMgVGVzdF9jbGFzc2VzX3JlMigpCiAgc2V0IHJlPTIKICBjYWxsIHM6Y2xhc3Nlc190ZXN0KCkKICBzZXQgcmU9MAplbmRmdW5jCgpmdW5jIFRlc3RfcmV2ZXJzZWRfcmFuZ2UoKQogIGZvciByZSBpbiByYW5nZSgwLCAyKQogICAgZXhlICdzZXQgcmU9JyAuIHJlCiAgICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBtYXRjaCgiYWJjIGRlZiIsICJbYy1hXSIpJywgJ0U5NDQ6JywgcmUpCiAgZW5kZm9yCiAgc2V0IHJlPTAKZW5kZnVuYwoKZnVuYyBUZXN0X2xhcmdlX2NsYXNzKCkKICBzZXQgcmU9MQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIG1hdGNoKCJhYmMgZGVmIiwgIltcdTMwMDAtXHU0MDAwXSIpJywgJ0U5NDU6JykKICBzZXQgcmU9MgogIGNhbGwgYXNzZXJ0X2VxdWFsKDAsICdhYmMgZGVmJyA9fiMgJ1tcdTMwMDAtXHU0MDAwXScpCiAgY2FsbCBhc3NlcnRfZXF1YWwoMSwgIlx1MzA0MiIgPX4jICdbXHUzMDAwLVx1NDAwMF0nKQogIHNldCByZT0wCmVuZGZ1bmMKCmZ1bmMgVGVzdF9vcHRtYXRjaF90b29sb25nKCkKICBzZXQgcmU9MQogICIgQ2FuIG9ubHkgaGFuZGxlIGFib3V0IDgwMDAgY2hhcmFjdGVycy4KICBsZXQgcGF0ID0gJ1xcJVsnIC4uIHJlcGVhdCgneCcsIDkwMDApIC4uICddJwogIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIG1hdGNoKCJhYmMgZGVmIiwgIicgLi4gcGF0IC4uICciKScsICdFMzM5OicpCiAgc2V0IHJlPTAKZW5kZnVuYwoKIiBUZXN0IGZvciByZWdleHAgcGF0dGVybnMgd2l0aCBtdWx0aS1ieXRlIHN1cHBvcnQsIHVzaW5nIHV0Zi04LgpmdW5jIFRlc3RfbXVsdGlieXRlX2NoYXJzKCkKICAiIHRsIGlzIGEgTGlzdCBvZiBMaXN0cyB3aXRoOgogICIgICAgMjogdGVzdCBhdXRvL29sZC9uZXcgIDA6IHRlc3QgYXV0by9vbGQgIDE6IHRlc3QgYXV0by9uZXcKICAiICAgIHJlZ2V4cCBwYXR0ZXJuCiAgIiAgICB0ZXh0IHRvIHRlc3QgdGhlIHBhdHRlcm4gb24KICAiICAgIGV4cGVjdGVkIG1hdGNoIChvcHRpb25hbCkKICAiICAgIGV4cGVjdGVkIHN1Ym1hdGNoIDEgKG9wdGlvbmFsKQogICIgICAgZXhwZWN0ZWQgc3VibWF0Y2ggMiAob3B0aW9uYWwpCiAgIiAgICBldGMuCiAgIiAgV2hlbiB0aGVyZSBpcyBubyBtYXRjaCB1c2Ugb25seSB0aGUgZmlyc3QgdHdvIGl0ZW1zLgogIGxldCB0bCA9IFtdCgogICIgTXVsdGktYnl0ZSBjaGFyYWN0ZXIgdGVzdHMuIFRoZXNlIHdpbGwgZmFpbCB1bmxlc3MgdmltIGlzIGNvbXBpbGVkCiAgIiB3aXRoIE11bHRpYnl0ZSAoRkVBVF9NQllURSkgb3IgQklHL0hVR0UgZmVhdHVyZXMuCiAgY2FsbCBhZGQodGwsIFsyLCAnW1s6YWxwaGE6XVs9YT1dXVwrJywgJzg3OSBhaWHDo8OiYWl1dm5hICcsICdhaWHDo8OiYWl1dm5hJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnW1s9YT1dXVwrJywgJ2RkYcOjw6JiY2QnLCAnYcOjw6InXSkJCQkJCQkJCSIgZXF1aXZhbGVuY2UgY2xhc3NlcwogIGNhbGwgYWRkKHRsLCBbMiwgJ1te4LihIF1cKycsICfguKHguKEgb2lqYXNvaWZqb3MgaWZqb2lzaiBmIG9zaWogaiDguKHguKHguKHguKHguKEgYWJjZCcsICdvaWphc29pZmpvcyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJyBbXiBdXCsnLCAnc3RhcnQg4LihYWJjZOC4oSAnLCAnIOC4oWFiY2TguKEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdb4LihWzphbHBoYTpdWz1hPV1dXCsnLCAnODc5IGFpYcOj4Lihw6LguKFhaXV2bmEgJywgJ2FpYcOj4Lihw6LguKFhaXV2bmEnXSkKCiAgIiB0aGlzIGlzIG5vdCBhIG5vcm1hbCAiaSIgYnV0IDB4ZWMKICBjYWxsIGFkZCh0bCwgWzIsICdccFwrJywgJ8OsYScsICfDrGEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdccConLCAnYeOBgicsICdh44GCJ10pCgogICIgVGVzdCByZWNvZ25pdGlvbiBvZiBzb21lIGNoYXJhY3RlciBjbGFzc2VzCiAgY2FsbCBhZGQodGwsIFsyLCAnXGlcKycsICcmKsKoeHggJywgJ3h4J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXGZcKycsICcmKsKfZm5hbWUgJywgJ2ZuYW1lJ10pCgogICIgVGVzdCBjb21wb3NpbmcgY2hhcmFjdGVyIG1hdGNoaW5nCiAgY2FsbCBhZGQodGwsIFsyLCAnLuC4oScsICd44Lih4LmIeCB54LiheScsICd54LihJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnLuC4oeC5iCcsICd44Lih4LmIeCB54LiheScsICd44Lih4LmIJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAiXHUwNWI5IiwgIiB4XHUwNWI5ICIsICJ4XHUwNWI5Il0pCiAgY2FsbCBhZGQodGwsIFsyLCAiLlx1MDViOSIsICIgeFx1MDViOSAiLCAieFx1MDViOSJdKQogIGNhbGwgYWRkKHRsLCBbMiwgIlx1MDViOVx1MDViYiIsICIgeFx1MDViOVx1MDViYiAiLCAieFx1MDViOVx1MDViYiJdKQogIGNhbGwgYWRkKHRsLCBbMiwgIi5cdTA1YjlcdTA1YmIiLCAiIHhcdTA1YjlcdTA1YmIgIiwgInhcdTA1YjlcdTA1YmIiXSkKICBjYWxsIGFkZCh0bCwgWzIsICJcdTA1YmJcdTA1YjkiLCAiIHhcdTA1YjlcdTA1YmIgIiwgInhcdTA1YjlcdTA1YmIiXSkKICBjYWxsIGFkZCh0bCwgWzIsICIuXHUwNWJiXHUwNWI5IiwgIiB4XHUwNWI5XHUwNWJiICIsICJ4XHUwNWI5XHUwNWJiIl0pCiAgY2FsbCBhZGQodGwsIFsyLCAiXHUwNWI5IiwgIiB5XHUwNWJiIHhcdTA1YjkgIiwgInhcdTA1YjkiXSkKICBjYWxsIGFkZCh0bCwgWzIsICIuXHUwNWI5IiwgIiB5XHUwNWJiIHhcdTA1YjkgIiwgInhcdTA1YjkiXSkKICBjYWxsIGFkZCh0bCwgWzIsICJcdTA1YjkiLCAiIHlcdTA1YmJcdTA1YjkgeFx1MDViOSAiLCAieVx1MDViYlx1MDViOSJdKQogIGNhbGwgYWRkKHRsLCBbMiwgIi5cdTA1YjkiLCAiIHlcdTA1YmJcdTA1YjkgeFx1MDViOSAiLCAieVx1MDViYlx1MDViOSJdKQogIGNhbGwgYWRkKHRsLCBbMSwgIlx1MDViOVx1MDViYiIsICIgeVx1MDViOSB4XHUwNWI5XHUwNWJiICIsICJ4XHUwNWI5XHUwNWJiIl0pCiAgY2FsbCBhZGQodGwsIFsyLCAiLlx1MDViOVx1MDViYiIsICIgeVx1MDViYiB4XHUwNWI5XHUwNWJiICIsICJ4XHUwNWI5XHUwNWJiIl0pCiAgY2FsbCBhZGQodGwsIFsyLCAiYSIsICJjYVx1MDMwMHQiXSkKICBjYWxsIGFkZCh0bCwgWzIsICJjYSIsICJjYVx1MDMwMHQiXSkKICBjYWxsIGFkZCh0bCwgWzIsICJhXHUwMzAwIiwgImNhXHUwMzAwdCIsICJhXHUwMzAwIl0pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVwlQycsICJjYVx1MDMwMHQiLCAiYVx1MDMwMCJdKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2NhXCVDJywgImNhXHUwMzAwdCIsICJjYVx1MDMwMCJdKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2NhXCVDdCcsICJjYVx1MDMwMHQiLCAiY2FcdTAzMDB0Il0pCgogICIgVGVzdCBcWgogIGNhbGwgYWRkKHRsLCBbMiwgJ8O6XFonLCAneCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ9eZ15TXldeUXFonLCAn15nXlNeV15QnLCAn15nXlNeV15QnXSkKICBjYWxsIGFkZCh0bCwgWzIsICfXmdaw15TXlda415RcWicsICfXmdeU15XXlCcsICfXmdeU15XXlCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ9eZ15TXldeUXFonLCAn15nWsNeU15XWuNeUJywgJ9eZ1rDXlNeV1rjXlCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ9eZ1rDXlNeV1rjXlFxaJywgJ9eZ1rDXlNeV1rjXlCcsICfXmdaw15TXlda415QnXSkKICBjYWxsIGFkZCh0bCwgWzIsICfXmdawXFonLCAn15XWsNeZ1rcnLCAn15nWtyddKQogIGNhbGwgYWRkKHRsLCBbMiwgItenXHUyMDBkXHUwNWI5eFxcWiIsICJ416dcdTIwMGRcdTA1Yjl4eSIsICLXp1x1MjAwZFx1MDViOXgiXSkKICBjYWxsIGFkZCh0bCwgWzIsICLXp1x1MjAwZFx1MDViOXhcXFoiLCAieNenXHUyMDBkeHkiLCAi16dcdTIwMGR4Il0pCiAgY2FsbCBhZGQodGwsIFsyLCAi16dcdTIwMGR4XFxaIiwgInjXp1x1MjAwZFx1MDViOXh5IiwgItenXHUyMDBkXHUwNWI5eCJdKQogIGNhbGwgYWRkKHRsLCBbMiwgItenXHUyMDBkeFxcWiIsICJ416dcdTIwMGR4eSIsICLXp1x1MjAwZHgiXSkKICBjYWxsIGFkZCh0bCwgWzIsICJcdTA1YjlcXFoiLCAieHl6Il0pCiAgY2FsbCBhZGQodGwsIFsyLCAiXFxaXHUwNWI5IiwgInh5eiJdKQogIGNhbGwgYWRkKHRsLCBbMiwgIlx1MDViOVxcWiIsICJ4eVx1MDViOXoiLCAieVx1MDViOSJdKQogIGNhbGwgYWRkKHRsLCBbMiwgIlxcWlx1MDViOSIsICJ4eVx1MDViOXoiLCAieVx1MDViOSJdKQogIGNhbGwgYWRkKHRsLCBbMSwgIlx1MDViOVxcK1xcWiIsICJ4eVx1MDViOXpcdTA1YjkgIiwgInlcdTA1Yjl6XHUwNWI5Il0pCiAgY2FsbCBhZGQodGwsIFsxLCAiXFxaXHUwNWI5XFwrIiwgInh5XHUwNWI5elx1MDViOSAiLCAieVx1MDViOXpcdTA1YjkiXSkKCiAgIiBDb21iaW5pbmcgZGlmZmVyZW50IHRlc3RzIGFuZCBmZWF0dXJlcwogIGNhbGwgYWRkKHRsLCBbMiwgJ1teWz1hPV1dXCsnLCAnZGRhw6PDomJjZCcsICdkZCddKQoKICAiIFJ1biB0aGUgdGVzdHMKICBmb3IgdCBpbiB0bAogICAgbGV0IHJlID0gdFswXQogICAgbGV0IHBhdCA9IHRbMV0KICAgIGxldCB0ZXh0ID0gdFsyXQogICAgbGV0IG1hdGNoaWR4ID0gMwogICAgZm9yIGVuZ2luZSBpbiBbMCwgMSwgMl0KICAgICAgaWYgZW5naW5lID09IDIgJiYgcmUgPT0gMCB8fCBlbmdpbmUgPT0gMSAmJiByZSA9PSAxCiAgICAgICAgY29udGludWUKICAgICAgZW5kaWYKICAgICAgbGV0ICZyZWdleHBlbmdpbmUgPSBlbmdpbmUKICAgICAgdHJ5CiAgICAgICAgbGV0IGwgPSBtYXRjaGxpc3QodGV4dCwgcGF0KQogICAgICBjYXRjaAogICAgICAgIGNhbGwgYXNzZXJ0X3JlcG9ydCgnRXJyb3IgJyAuIGVuZ2luZSAuICc6IHBhdDogXCInIC4gcGF0IC4KCQkgICAgXCAnXCIsIHRleHQ6IFwiJyAuIHRleHQgLgoJCSAgICBcICdcIiwgY2F1c2VkIGFuIGV4Y2VwdGlvbjogXCInIC4gdjpleGNlcHRpb24gLiAnXCInKQogICAgICBlbmR0cnkKICAgICAgIiBjaGVjayB0aGUgbWF0Y2ggaXRzZWxmCiAgICAgIGlmIGxlbihsKSA9PSAwICYmIGxlbih0KSA+IG1hdGNoaWR4CiAgICAgICAgY2FsbCBhc3NlcnRfcmVwb3J0KCdFcnJvciAnIC4gZW5naW5lIC4gJzogcGF0OiBcIicgLiBwYXQgLgoJCSAgICBcICdcIiwgdGV4dDogXCInIC4gdGV4dCAuCgkJICAgIFwgJ1wiLCBkaWQgbm90IG1hdGNoLCBleHBlY3RlZDogXCInIC4gdFttYXRjaGlkeF0gLiAnXCInKQogICAgICBlbHNlaWYgbGVuKGwpID4gMCAmJiBsZW4odCkgPT0gbWF0Y2hpZHgKICAgICAgICBjYWxsIGFzc2VydF9yZXBvcnQoJ0Vycm9yICcgLiBlbmdpbmUgLiAnOiBwYXQ6IFwiJyAuIHBhdCAuCgkJICAgIFwgJ1wiLCB0ZXh0OiBcIicgLiB0ZXh0IC4gJ1wiLCBtYXRjaDogXCInIC4gbFswXSAuCgkJICAgIFwgJ1wiLCBleHBlY3RlZCBubyBtYXRjaCcpCiAgICAgIGVsc2VpZiBsZW4odCkgPiBtYXRjaGlkeCAmJiBsWzBdICE9IHRbbWF0Y2hpZHhdCiAgICAgICAgY2FsbCBhc3NlcnRfcmVwb3J0KCdFcnJvciAnIC4gZW5naW5lIC4gJzogcGF0OiBcIicgLiBwYXQgLgoJCSAgICBcICdcIiwgdGV4dDogXCInIC4gdGV4dCAuICdcIiwgbWF0Y2g6IFwiJyAuIGxbMF0gLgoJCSAgICBcICdcIiwgZXhwZWN0ZWQ6IFwiJyAuIHRbbWF0Y2hpZHhdIC4gJ1wiJykKICAgICAgZWxzZQogICAgICAgICIgVGVzdCBwYXNzZWQKICAgICAgZW5kaWYKICAgICAgaWYgbGVuKGwpID4gMAogICAgICAgICIgY2hlY2sgYWxsIHRoZSBuaW5lIHN1Ym1hdGNoZXMKICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCA5KQogICAgICAgICAgaWYgbGVuKHQpIDw9IG1hdGNoaWR4ICsgaQogICAgICAgICAgICBsZXQgZSA9ICcnCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGxldCBlID0gdFttYXRjaGlkeCArIGldCiAgICAgICAgICBlbmRpZgogICAgICAgICAgaWYgbFtpXSAhPSBlCiAgICAgICAgICAgIGNhbGwgYXNzZXJ0X3JlcG9ydCgnRXJyb3IgJyAuIGVuZ2luZSAuICc6IHBhdDogXCInIC4gcGF0IC4KICAgICAgICAgICAgICAgICAgXCAnXCIsIHRleHQ6IFwiJyAuIHRleHQgLiAnXCIsIHN1Ym1hdGNoICcgLiBpIC4KICAgICAgICAgICAgICAgICAgXCAnOiBcIicgLiBsW2ldIC4gJ1wiLCBleHBlY3RlZDogXCInIC4gZSAuICdcIicpCiAgICAgICAgICBlbmRpZgogICAgICAgIGVuZGZvcgogICAgICAgIHVubGV0IGkKICAgICAgZW5kaWYKICAgIGVuZGZvcgogIGVuZGZvcgogIHNldCByZWdleHBlbmdpbmUmCmVuZGZ1bmMKCiIgY2hlY2sgdGhhdCAnYW1iaXdpZHRoJyBkb2VzIG5vdCBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgXHAKZnVuYyBUZXN0X2FtYml3aWR0aCgpCiAgc2V0IHJlZ2V4cGVuZ2luZT0xIGFtYml3aWR0aD1zaW5nbGUKICBjYWxsIGFzc2VydF9lcXVhbCgwLCBtYXRjaCgiXHUwMEVDIiwgJ1xwJykpCiAgc2V0IHJlZ2V4cGVuZ2luZT0xIGFtYml3aWR0aD1kb3VibGUKICBjYWxsIGFzc2VydF9lcXVhbCgwLCBtYXRjaCgiXHUwMEVDIiwgJ1xwJykpCiAgc2V0IHJlZ2V4cGVuZ2luZT0yIGFtYml3aWR0aD1zaW5nbGUKICBjYWxsIGFzc2VydF9lcXVhbCgwLCBtYXRjaCgiXHUwMEVDIiwgJ1xwJykpCiAgc2V0IHJlZ2V4cGVuZ2luZT0yIGFtYml3aWR0aD1kb3VibGUKICBjYWxsIGFzc2VydF9lcXVhbCgwLCBtYXRjaCgiXHUwMEVDIiwgJ1xwJykpCiAgc2V0IHJlZ2V4cGVuZ2luZSYgYW1iaXdpZHRoJgplbmRmdW5jCgpmdW5jIFJ1bl9yZWdleHBfaWdub3JlX2Nhc2UoKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCdpScSwJywgc3Vic3RpdHV0ZSgnaUnEsCcsICdcKFtpScSwXVwpJywgJ1wxJywgJ2cnKSkKCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ2lJeCcsIHN1YnN0aXR1dGUoJ2lJxLAnLCAnXGNcKFvEsF1cKScsICd4JywgJ2cnKSkKICBjYWxsIGFzc2VydF9lcXVhbCgneHjEsCcsIHN1YnN0aXR1dGUoJ2lJxLAnLCAnXChpXGNcKScsICd4JywgJ2cnKSkKICBjYWxsIGFzc2VydF9lcXVhbCgnaUl4Jywgc3Vic3RpdHV0ZSgnaUnEsCcsICdcKMSwXGNcKScsICd4JywgJ2cnKSkKICBjYWxsIGFzc2VydF9lcXVhbCgnaUl4Jywgc3Vic3RpdHV0ZSgnaUnEsCcsICdcY1woXCV1MDEzMFwpJywgJ3gnLCAnZycpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCdpSXgnLCBzdWJzdGl0dXRlKCdpScSwJywgJ1xjXChbXHUwMTMwXVwpJywgJ3gnLCAnZycpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCdpSXgnLCBzdWJzdGl0dXRlKCdpScSwJywgJ1xjXChbXHUwMTJmLVx1MDEzMV1cKScsICd4JywgJ2cnKSkKZW5kZnVuYwoKZnVuYyBUZXN0X3JlZ2V4cF9pZ25vcmVfY2FzZSgpCiAgc2V0IHJlZ2V4cGVuZ2luZT0xCiAgY2FsbCBSdW5fcmVnZXhwX2lnbm9yZV9jYXNlKCkKICBzZXQgcmVnZXhwZW5naW5lPTIKICBjYWxsIFJ1bl9yZWdleHBfaWdub3JlX2Nhc2UoKQogIHNldCByZWdleHBlbmdpbmUmCmVuZGZ1bmMKCiIgVGVzdHMgZm9yIHJlZ2V4cCB3aXRoIG11bHRpLWJ5dGUgZW5jb2RpbmcgYW5kIHZhcmlvdXMgbWFnaWMgc2V0dGluZ3MKZnVuYyBSdW5fcmVnZXhwX211bHRpYnl0ZV9tYWdpYygpCiAgbGV0IHRleHQgPTw8IHRyaW0gRU5ECiAgICAxIGEgYWEgYWJiIGFiYmNjYwogICAgMiBkIGRkIGRlZSBkZWVmZmYKICAgIDMgZyBnZyBnaGggZ2hoaWlpCiAgICA0IGogamogamtrIGpra2xsbAogICAgNSBtIG1tIG1ubiBtbm5vb28KICAgIDYgeCBeYWEkIHgKICAgIDcgKGEpKGIpIGFiYmFhCiAgICA4IGF4eCBbYWJdeHgKICAgIDkg4Lir4Lih4LmIeCDguK3guKF4CiAgICBhIOC4reC4oXgg4Lir4Lih4LmIeAogICAgYiDjgaHjgqvjg6jjga8KICAgIGMgeCDCrOKCrHgKICAgIGQg5aSp5L2/eAogICAgZSD8ko2Fmbh5CiAgICBmIPySjYqvjXoKICAgIGcgYeWVt2JiCiAgICBqIDAxMjPinaR4CiAgICBrIGNvbWJpbmF0aW9ucwogICAgbCDDpMO2IMO8zrHMhMyGzIEKICBFTkQKCiAgbmV3CiAgY2FsbCBzZXRsaW5lKDEsIHRleHQpCiAgZXhlICdub3JtYWwgL2EqYlx7Mn1jXCsvZScgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnMSBhIGFhIGFiYiBhYmJjYycsIGdldGxpbmUoJy4nKSkKICBleGUgJ25vcm1hbCAvXE1kXCplXHsyfWZcKy9lJyAuLiAiXDxDUj54IgogIGNhbGwgYXNzZXJ0X2VxdWFsKCcyIGQgZGQgZGVlIGRlZWZmJywgZ2V0bGluZSgnLicpKQogIHNldCBub21hZ2ljCiAgZXhlICdub3JtYWwgL2dcKmhcezJ9aVwrL2UnIC4uICJcPENSPngiCiAgY2FsbCBhc3NlcnRfZXF1YWwoJzMgZyBnZyBnaGggZ2hoaWknLCBnZXRsaW5lKCcuJykpCiAgZXhlICdub3JtYWwgL1xtaiprXHsyfWxcKy9lJyAuLiAiXDxDUj54IgogIGNhbGwgYXNzZXJ0X2VxdWFsKCc0IGogamogamtrIGpra2xsJywgZ2V0bGluZSgnLicpKQogIGV4ZSAnbm9ybWFsIC9cdm0qbnsyfW8rL2UnIC4uICJcPENSPngiCiAgY2FsbCBhc3NlcnRfZXF1YWwoJzUgbSBtbSBtbm4gbW5ub28nLCBnZXRsaW5lKCcuJykpCiAgZXhlICdub3JtYWwgL1xWXmFhJC8nIC4uICJcPENSPngiCiAgY2FsbCBhc3NlcnRfZXF1YWwoJzYgeCBhYSQgeCcsIGdldGxpbmUoJy4nKSkKICBzZXQgbWFnaWMKICBleGUgJ25vcm1hbCAvXHYoYSkoYilcMlwxXDEvZScgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnNyAoYSkoYikgYWJiYScsIGdldGxpbmUoJy4nKSkKICBleGUgJ25vcm1hbCAvXFZbYWJdXChcW3h5XVwpXDEnIC4uICJcPENSPngiCiAgY2FsbCBhc3NlcnRfZXF1YWwoJzggYXh4IGFiXXh4JywgZ2V0bGluZSgnLicpKQoKICAiIHNlYXJjaCBmb3IgbXVsdGktYnl0ZSB3aXRob3V0IGNvbXBvc2luZyBjaGFyCiAgZXhlICdub3JtYWwgL+C4oScgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnOSDguKvguKHguYh4IOC4rXgnLCBnZXRsaW5lKCcuJykpCgogICIgc2VhcmNoIGZvciBtdWx0aS1ieXRlIHdpdGggY29tcG9zaW5nIGNoYXIKICBleGUgJ25vcm1hbCAv4Lih4LmIJyAuLiAiXDxDUj54IgogIGNhbGwgYXNzZXJ0X2VxdWFsKCdhIOC4reC4oXgg4LireCcsIGdldGxpbmUoJy4nKSkKCiAgIiBmaW5kIHdvcmQgYnkgY2hhbmdlIG9mIHdvcmQgY2xhc3MKICBleGUgJ25vcm1hbCAv44GhXDzjgqvjg6hcPuOBrycgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnYiDjgqvjg6jjga8nLCBnZXRsaW5lKCcuJykpCgogICIgVGVzdCBcJXUsIFtcdV0gYW5kIGZyaWVuZHMKICAiIGMKICBleGUgJ25vcm1hbCAvXCV1MjBhYycgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnYyB4IMKseCcsIGdldGxpbmUoJy4nKSkKICAiIGQKICBleGUgJ25vcm1hbCAvW1x1NGY3Zlx1NTkyOV1cKycgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnZCDkvb94JywgZ2V0bGluZSgnLicpKQogICIgZQogIGV4ZSAnbm9ybWFsIC9cJVUxMjM0NTY3OCcgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnZSB5JywgZ2V0bGluZSgnLicpKQogICIgZgogIGV4ZSAnbm9ybWFsIC9bXFUxMjM0YWJjZFx1MTIzNFx1YWJjZF0nIC4uICJcPENSPngiCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ2YgeicsIGdldGxpbmUoJy4nKSkKICAiIGcKICBleGUgJ25vcm1hbCAvXCVkMjE4NzliJyAuLiAiXDxDUj54IgogIGNhbGwgYXNzZXJ0X2VxdWFsKCdnIGFiYicsIGdldGxpbmUoJy4nKSkKCiAgIiBqIFRlc3QgYmFja3dhcmRzIHNlYXJjaCBmcm9tIGEgbXVsdGktYnl0ZSBjaGFyCiAgZXhlICJub3JtYWwgL3hcPENSPng/Llw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnaiAwMTLinaQnLCBnZXRsaW5lKCcuJykpCiAgIiBrCiAgbGV0IEB3PSc6JXMjY29tYltpXW5hdGlvbnMjxZPMhOG5o8yBbcylzITOscyEzIbMgSNnJwogIEB3CiAgY2FsbCBhc3NlcnRfZXF1YWwoJ2sgxZPMhOG5o8yBbcylzITOscyEzIbMgScsIGdldGxpbmUoMTgpKQoKICBjbG9zZSEKZW5kZnVuYwoKZnVuYyBUZXN0X3JlZ2V4cF9tdWx0aWJ5dGVfbWFnaWMoKQogIHNldCByZWdleHBlbmdpbmU9MQogIGNhbGwgUnVuX3JlZ2V4cF9tdWx0aWJ5dGVfbWFnaWMoKQogIHNldCByZWdleHBlbmdpbmU9MgogIGNhbGwgUnVuX3JlZ2V4cF9tdWx0aWJ5dGVfbWFnaWMoKQogIHNldCByZWdleHBlbmdpbmUmCmVuZGZ1bmMKCiIgVGVzdCBmb3IgNy4zLjE5MgoiIGNvbW1hbmQgIjpzLyBcPy8gL2ciIHNwbGl0cyBtdWx0aS1ieXRlIGNoYXJhY3RlcnMgaW50byBieXRlcwpmdW5jIFRlc3Rfc3BsaXRfbXVsdGlieXRlX3RvX2J5dGVzKCkKICBuZXcKICBjYWxsIHNldGxpbmUoMSwgJ2wgw6TDtiDDvM6xzITMhsyBJykKICBzLyBcPy8gL2cKICBjYWxsIGFzc2VydF9lcXVhbCgnIGwgw6Qgw7Ygw7wgzrHMhMyGzIEnLCBnZXRsaW5lKDEpKQogIGNsb3NlIQplbmRmdW5jCgoiIFRlc3QgZm9yIG1hdGNoc3RyKCkgd2l0aCBtdWx0aWJ5dGUgY2hhcmFjdGVycwpmdW5jIFRlc3RfbWF0Y2hzdHJfbXVsdGlieXRlKCkKICBuZXcKICBjYWxsIGFzc2VydF9lcXVhbCgn15EnLCBtYXRjaHN0cigi15DXkdeS15MiLCAiLiIsIDAsIDIpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCfXkdeSJywgbWF0Y2hzdHIoIteQ15HXkteTIiwgIi4uIiwgMCwgMikpCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ9eQJywgbWF0Y2hzdHIoIteQ15HXkteTIiwgIi4iLCAwLCAwKSkKICBjYWxsIGFzc2VydF9lcXVhbCgn15InLCBtYXRjaHN0cigi15DXkdeS15MiLCAiLiIsIDQsIC0xKSkKICBjbG9zZSEKZW5kZnVuYwoKIiBUZXN0IGZvciA3LjQuNjM2CiIgQSBzZWFyY2ggd2l0aCBlbmQgb2Zmc2V0IGdldHMgc3R1Y2sgYXQgZW5kIG9mIGZpbGUuCmZ1bmMgVGVzdF9zZWFyY2hfd2l0aF9lbmRfb2Zmc2V0KCkKICBuZXcKICBjYWxsIHNldGxpbmUoMSwgWycnLCAnZG9nKGEnLCAnY2F0KCddKQogIGV4ZSAibm9ybWFsIC8oL2UrXDxDUj4iCiAgbm9ybWFsIG4iYXluCiAgY2FsbCBhc3NlcnRfZXF1YWwoImFcbmNhdCgiLCBAYSkKICBjbG9zZSEKZW5kZnVuYwoKIiBDaGVjayB0aGF0ICJeIiBtYXRjaGVzIGV2ZW4gd2hlbiB0aGUgbGluZSBzdGFydHMgd2l0aCBhIGNvbWJpbmluZyBjaGFyCmZ1bmMgVGVzdF9tYXRjaF9zdGFydF9vZl9saW5lX2NvbWJpbmluZygpCiAgbmV3CiAgY2FsbCBzZXRsaW5lKDEsIFsnJywgIlx1MDVhZSIsICcnXSkKICBleGUgIm5vcm1hbCBnZy9eXDxDUj4iCiAgY2FsbCBhc3NlcnRfZXF1YWwoMiwgZ2V0Y3VycG9zKClbMV0pCiAgYndpcGUhCmVuZGZ1bmMKCiIgQ2hlY2sgdGhhdCBbWzp1cHBlcjpdXSBtYXRjaGVzIGZvciBhdXRvbWF0aWMgZW5naW5lCmZ1bmMgVGVzdF9tYXRjaF9jaGFyX2NsYXNzX3VwcGVyKCkKICBuZXcKICBsZXQgX2VuZ2luZT0mcmVnZXhwZW5naW5lCgogICIgVGVzdCAxOiBbWzp1cHBlcjpdXVx7MixcfQogIHNldCByZWdleHBlbmdpbmU9MAogIGNhbGwgc2V0bGluZSgxLCBbJzA1LiDQn9CV0KHQndCvINCeINCT0JXQoNCe0K/QpSDQvNGD0LcuINCQLiDQlNCw0LLQuNC00LXQvdC60L4sINCcLiDQmtC+0LLQsNC70Y8g0Lgg0JEuINCo0LXRhdGC0LXRgNCwIC4uLicsICcwNS4gUEpFU05KQSBPIEdKRVJPSkFLSCBtdXMuIEEuIERhdmlkamVua28sIE0uIEtvdmFsamEgaSBCLiBTaGpla2h0amVyYSAuLi4nXSkKICBjYWxsIGN1cnNvcigxLDEpCiAgbGV0IHNlYXJjaF9jbWQ9J25vcm0gL1w8W1s6dXBwZXI6XV1cezIsXH1cPicgLi4gIlw8Q1I+IgogIGV4ZSBzZWFyY2hfY21kCiAgY2FsbCBhc3NlcnRfZXF1YWwoNCwgc2VhcmNoY291bnQoKS50b3RhbCwgJ1RFU1QgMScpCiAgc2V0IHJlZ2V4cGVuZ2luZT0xCiAgZXhlIHNlYXJjaF9jbWQKICBjYWxsIGFzc2VydF9lcXVhbCgyLCBzZWFyY2hjb3VudCgpLnRvdGFsLCAnVEVTVCAxJykKICBzZXQgcmVnZXhwZW5naW5lPTIKICBleGUgc2VhcmNoX2NtZAogIGNhbGwgYXNzZXJ0X2VxdWFsKDQsIHNlYXJjaGNvdW50KCkudG90YWwsICdURVNUIDEnKQoKICAiIFRlc3QgMjogW1s6dXBwZXI6XV0uXCsKICBsZXQgc2VhcmNoX2NtZD0nbm9ybSAvXDxbWzp1cHBlcjpdXS5cK1w+JyAuLiAiXDxDUj4iCiAgc2V0IHJlZ2V4cGVuZ2luZT0wCiAgZXhlIHNlYXJjaF9jbWQKICBjYWxsIGFzc2VydF9lcXVhbCgyLCBzZWFyY2hjb3VudCgpLnRvdGFsLCAnVEVTVCAyJykKICBzZXQgcmVnZXhwZW5naW5lPTEKICBleGUgc2VhcmNoX2NtZAogIGNhbGwgYXNzZXJ0X2VxdWFsKDEsIHNlYXJjaGNvdW50KCkudG90YWwsICdURVNUIDInKQogIHNldCByZWdleHBlbmdpbmU9MgogIGV4ZSBzZWFyY2hfY21kCiAgY2FsbCBhc3NlcnRfZXF1YWwoMiwgc2VhcmNoY291bnQoKS50b3RhbCwgJ1RFU1QgMicpCgogICIgVGVzdCAzOiBbWzpsb3dlcjpdXVwrCiAgbGV0IHNlYXJjaF9jbWQ9J25vcm0gL1w8W1s6bG93ZXI6XV1cK1w+JyAuLiAiXDxDUj4iCiAgc2V0IHJlZ2V4cGVuZ2luZT0wCiAgZXhlIHNlYXJjaF9jbWQKICBjYWxsIGFzc2VydF9lcXVhbCg0LCBzZWFyY2hjb3VudCgpLnRvdGFsLCAnVEVTVCAzIGxvd2VyJykKICBzZXQgcmVnZXhwZW5naW5lPTEKICBleGUgc2VhcmNoX2NtZAogIGNhbGwgYXNzZXJ0X2VxdWFsKDIsIHNlYXJjaGNvdW50KCkudG90YWwsICdURVNUIDMgbG93ZXInKQogIHNldCByZWdleHBlbmdpbmU9MgogIGV4ZSBzZWFyY2hfY21kCiAgY2FsbCBhc3NlcnRfZXF1YWwoNCwgc2VhcmNoY291bnQoKS50b3RhbCwgJ1RFU1QgMyBsb3dlcicpCgogICIgY2xlYW4gdXAKICBsZXQgJnJlZ2V4cGVuZ2luZT1fZW5naW5lCiAgYndpcGUhCmVuZGZ1bmMKCmZ1bmMgVGVzdF9tYXRjaF9pbnZhbGlkX2J5dGUoKQogIGNhbGwgd3JpdGVmaWxlKDB6NjMwYS43NjVkMzBhYTBhLjJlMGEuNzkwYS40MDMwLCAnWGludmFsaWQnKQogIG5ldwogIHNvdXJjZSBYaW52YWxpZAogIGJ3aXBlIQogIGNhbGwgZGVsZXRlKCdYaW52YWxpZCcpCmVuZGZ1bmMKCiIgdmltOiBzaGlmdHdpZHRoPTIgc3RzPTIgZXhwYW5kdGFiCg==