문제
이 문제는 1차원 돌 게임 1 과 굵은 글씨로 적힌 부분만 다릅니다.
동우와 재우는 1ドル\times n$ 모양의 직선형 격자판에서 처음에 한 칸에 한 개씩 돌을 올려 둔 상태로 게임을 진행하려 한다.
게임은 동우부터 시작해 턴을 번갈아 가면서 돌을 가져간다. 즉, 동우는 홀수 번째 턴에, 재우는 짝수 번째 턴에 진행한다.
첫 번째 턴에는 1ドル$개의 칸을 골라 그곳에 놓인 돌을 가져간다.
두 번째 턴부터는 직전 턴에 상대방이 가져간 돌의 개수가 $x$개라면, 1ドル$ 이상 $x+1$ 이하의 정수 $y$를 하나 골라서, 돌이 놓여져 있는 연속한 $y$개의 칸을 골라 그 영역에 놓인 모든 돌을 가져간다.
돌을 가져갈 때마다, 돌을 가져간 칸(들)을 기준으로 남은 돌들이 두 부분으로 나누어진다면, 놓인 돌의 개수가 더 적은 부분에 놓인 돌을 모두 버린다. 두 부분에 놓인 돌의 개수가 같다면 한 부분을 선택해 놓인 돌을 모두 버린다. 두 부분으로 나누어지지 않고 한 부분만 있는 경우 버리지 않는다.
자신의 턴에 조건에 맞게 돌을 가져가지 못한다면 그 사람이 패배하며, 상대방이 승리한다.
둘 다 승리하기 위해 최선의 플레이를 한다면 누가 이기는지 출력하시오.
출력
각 테스트 케이스에 대해 동우가 이기면 kidw0124 를, 재우가 이기면 eoaud0108 을 한 줄에 하나씩 출력한다.
서브태스크 번호 배점 제한 1 28 $n\le 20$
2 34 $n\le 1,000円$
3 133 $n\le 500,000円$
4 155 추가적인 제한 조건 없음
예제 출력 1
복사
kidw0124
kidw0124
eoaud0108
$n=4$인 경우 동우는 첫 번째 턴에 가장 마지막(4ドル$번째) 칸에 놓인 돌을 가져가면 승리할 수 있다.
두 번째 턴에 재우는 남은 3ドル$칸에 놓인 돌들 중 이웃한 1ドル$개 혹은 2ドル$개를 골라 가져가는데, 다음과 같은 경우가 가능하다. 좌우 대칭인 상황은 하나만 생각하자.
1ドル$ 혹은 3ドル$번 칸에 놓인 돌을 가져갈 경우
1ドル,ドル 2ドル$번 혹은 2ドル,ドル 3ドル$번 칸에 놓인 돌을 가져갈 경우
모든 경우에 대해 동우는 남은 돌을 가져갈 수 있으며, 재우는 네 번째 턴을 진행할 수 없다.
W3sicHJvYmxlbV9pZCI6IjMxNTQyIiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiMVx1Y2MyOFx1YzZkMCBcdWIzY2MgXHVhYzhjXHVjNzg0IDIiLCJkZXNjcmlwdGlvbiI6IjxibG9ja3F1b3RlPlxyXG48cD5cdWM3NzQgXHViYjM4XHVjODFjXHViMjk0IDxhIGhyZWY9XCJcL3Byb2JsZW1cLzMxNTQxXCI+MVx1Y2MyOFx1YzZkMCBcdWIzY2MgXHVhYzhjXHVjNzg0IDE8XC9hPlx1YWNmYyA8c3Ryb25nPlx1YWQ3NVx1Yzc0MDxcL3N0cm9uZz4gXHVhZTAwXHVjNTI4XHViODVjIFx1YzgwMVx1ZDc4YyBcdWJkODBcdWJkODRcdWI5Y2MgXHViMmU0XHViOTg1XHViMmM4XHViMmU0LjxcL3A+XHJcbjxcL2Jsb2NrcXVvdGU+XHJcblxyXG48cD5cdWIzZDlcdWM2YjBcdWM2NDAgXHVjN2FjXHVjNmIwXHViMjk0ICQxXFx0aW1lcyBuJCBcdWJhYThcdWM1OTFcdWM3NTggXHVjOWMxXHVjMTIwXHVkNjE1IFx1YWNhOVx1Yzc5MFx1ZDMxMFx1YzVkMFx1YzExYyBcdWNjOThcdWM3NGNcdWM1ZDAgXHVkNTVjIFx1Y2U3OFx1YzVkMCBcdWQ1NWMgXHVhYzFjXHVjNTI5IFx1YjNjY1x1Yzc0NCBcdWM2MmNcdWI4MjQgXHViNDU0IFx1YzBjMVx1ZDBkY1x1Yjg1YyBcdWFjOGNcdWM3ODRcdWM3NDQgXHVjOWM0XHVkNTg5XHVkNTU4XHViODI0IFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhYzhjXHVjNzg0XHVjNzQwIFx1YjNkOVx1YzZiMFx1YmQ4MFx1ZDEzMCBcdWMyZGNcdWM3OTFcdWQ1NzQgXHVkMTM0XHVjNzQ0IFx1YmM4OFx1YWMwOFx1YzU0NCBcdWFjMDBcdWJhNzRcdWMxMWMgXHViM2NjXHVjNzQ0IFx1YWMwMFx1YzgzOFx1YWMwNFx1YjJlNC4gXHVjOTg5LCBcdWIzZDlcdWM2YjBcdWIyOTQgXHVkNjQwXHVjMjE4IFx1YmM4OFx1YzlmOCBcdWQxMzRcdWM1ZDAsIFx1YzdhY1x1YzZiMFx1YjI5NCBcdWM5ZGRcdWMyMTggXHViYzg4XHVjOWY4IFx1ZDEzNFx1YzVkMCBcdWM5YzRcdWQ1ODlcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+XHVjY2FiIFx1YmM4OFx1YzlmOCBcdWQxMzRcdWM1ZDBcdWIyOTQgJDEkXHVhYzFjXHVjNzU4IFx1Y2U3OFx1Yzc0NCBcdWFjZThcdWI3N2MgXHVhZGY4XHVhY2YzXHVjNWQwIFx1YjE5M1x1Yzc3OCBcdWIzY2NcdWM3NDQgXHVhYzAwXHVjODM4XHVhYzA0XHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWI0NTAgXHViYzg4XHVjOWY4IFx1ZDEzNFx1YmQ4MFx1ZDEzMFx1YjI5NCBcdWM5YzFcdWM4MDQgXHVkMTM0XHVjNWQwIFx1YzBjMVx1YjMwMFx1YmMyOVx1Yzc3NCBcdWFjMDBcdWM4MzhcdWFjMDQgXHViM2NjXHVjNzU4IFx1YWMxY1x1YzIxOFx1YWMwMCAkeCRcdWFjMWNcdWI3N2NcdWJhNzQsIDxzdHJvbmc+JDEkIFx1Yzc3NFx1YzBjMSAkeCsxJCBcdWM3NzRcdWQ1NThcdWM3NTggXHVjODE1XHVjMjE4ICR5JFx1Yjk3YyBcdWQ1NThcdWIwOTggXHVhY2U4XHViNzdjXHVjMTFjLCBcdWIzY2NcdWM3NzQgXHViMTkzXHVjNWVjXHVjODM4IFx1Yzc4OFx1YjI5NCBcdWM1ZjBcdWMxOGRcdWQ1NWMgJHkkXHVhYzFjXHVjNzU4IFx1Y2U3OFx1Yzc0NCBcdWFjZThcdWI3N2M8XC9zdHJvbmc+IFx1YWRmOCBcdWM2MDFcdWM1ZWRcdWM1ZDAgXHViMTkzXHVjNzc4IFx1YmFhOFx1YjRlMCBcdWIzY2NcdWM3NDQgXHVhYzAwXHVjODM4XHVhYzA0XHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWIzY2NcdWM3NDQgXHVhYzAwXHVjODM4XHVhYzA4IFx1YjU0Y1x1YjljOFx1YjJlNCwgXHViM2NjXHVjNzQ0IFx1YWMwMFx1YzgzOFx1YWMwNCBcdWNlNzgoXHViNGU0KVx1Yzc0NCBcdWFlMzBcdWM5MDBcdWM3M2NcdWI4NWMgXHViMGE4XHVjNzQwIFx1YjNjY1x1YjRlNFx1Yzc3NCBcdWI0NTAgXHViZDgwXHViZDg0XHVjNzNjXHViODVjIFx1YjA5OFx1YjIwNFx1YzViNFx1YzljNFx1YjJlNFx1YmE3NCwgXHViMTkzXHVjNzc4IFx1YjNjY1x1Yzc1OCBcdWFjMWNcdWMyMThcdWFjMDAgXHViMzU0IFx1YzgwMVx1Yzc0MCBcdWJkODBcdWJkODRcdWM1ZDAgXHViMTkzXHVjNzc4IFx1YjNjY1x1Yzc0NCBcdWJhYThcdWI0NTAgXHViYzg0XHViOWIwXHViMmU0LiBcdWI0NTAgXHViZDgwXHViZDg0XHVjNWQwIFx1YjE5M1x1Yzc3OCBcdWIzY2NcdWM3NTggXHVhYzFjXHVjMjE4XHVhYzAwIFx1YWMxOVx1YjJlNFx1YmE3NCBcdWQ1NWMgXHViZDgwXHViZDg0XHVjNzQ0IFx1YzEyMFx1ZDBkZFx1ZDU3NCBcdWIxOTNcdWM3NzggXHViM2NjXHVjNzQ0IFx1YmFhOFx1YjQ1MCBcdWJjODRcdWI5YjBcdWIyZTQuIFx1YjQ1MCBcdWJkODBcdWJkODRcdWM3M2NcdWI4NWMgXHViMDk4XHViMjA0XHVjNWI0XHVjOWMwXHVjOWMwIFx1YzU0YVx1YWNlMCBcdWQ1NWMgXHViZDgwXHViZDg0XHViOWNjIFx1Yzc4OFx1YjI5NCBcdWFjYmRcdWM2YjAgXHViYzg0XHViOWFjXHVjOWMwIFx1YzU0YVx1YjI5NFx1YjJlNC48XC9saT5cclxuXHQ8bGk+XHVjNzkwXHVjMmUwXHVjNzU4IFx1ZDEzNFx1YzVkMCBcdWM4NzBcdWFjNzRcdWM1ZDAgXHViOWRlXHVhYzhjIFx1YjNjY1x1Yzc0NCBcdWFjMDBcdWM4MzhcdWFjMDBcdWM5YzAgXHViYWJiXHVkNTVjXHViMmU0XHViYTc0IFx1YWRmOCBcdWMwYWNcdWI3OGNcdWM3NzQgXHVkMzI4XHViYzMwXHVkNTU4XHViYTcwLCBcdWMwYzFcdWIzMDBcdWJjMjlcdWM3NzQgXHVjMmI5XHViOWFjXHVkNTVjXHViMmU0LjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPlx1YjQ1OCBcdWIyZTQgXHVjMmI5XHViOWFjXHVkNTU4XHVhZTMwIFx1YzcwNFx1ZDU3NCBcdWNkNWNcdWMxMjBcdWM3NTggXHVkNTBjXHViODA4XHVjNzc0XHViOTdjIFx1ZDU1Y1x1YjJlNFx1YmE3NCBcdWIyMDRcdWFjMDAgXHVjNzc0XHVhZTMwXHViMjk0XHVjOWMwIFx1Y2Q5Y1x1YjgyNVx1ZDU1OFx1YzJkY1x1YzYyNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYiBcdWJjODhcdWM5ZjggXHVjOTA0XHVjNWQwIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM3NTggXHVhYzFjXHVjMjE4ICRUJFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuICQoMVxcbGUgVCBcXGxlIDEwXjYpJDxcL3A+XHJcblxyXG48cD5cdWFjMDEgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1YmNjNFx1Yjg1YyBcdWQ1NWMgXHVjOTA0XHVjNWQwIFx1ZDU1OFx1YjA5OFx1YzUyOSBcdWNkMDhcdWFlMzBcdWM3NTggXHViM2NjXHVjNzU4IFx1YWMxY1x1YzIxOCAkbiRcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAkKDFcXGxlIG5cXGxlIDEwXnsxOH0pJDxcL3A+XHJcblxyXG48cD5cdWFjMTlcdWM3NDAgJG4kXHVjNzc0IFx1YzVlY1x1YjdlYyBcdWJjODggXHVjOGZjXHVjNWI0XHVjOWMwXHVjOWMwIFx1YzU0YVx1YjI5NFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDEgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1YzVkMCBcdWIzMDBcdWQ1NzQgXHViM2Q5XHVjNmIwXHVhYzAwIFx1Yzc3NFx1YWUzMFx1YmE3NCA8c3BhbiBzdHlsZT1cImNvbG9yOiNlNzRjM2M7XCI+PGNvZGU+a2lkdzAxMjQ8XC9jb2RlPjxcL3NwYW4+XHViOTdjLCBcdWM3YWNcdWM2YjBcdWFjMDAgXHVjNzc0XHVhZTMwXHViYTc0IDxzcGFuIHN0eWxlPVwiY29sb3I6I2U3NGMzYztcIj48Y29kZT5lb2F1ZDAxMDg8XC9jb2RlPjxcL3NwYW4+XHVjNzQ0IFx1ZDU1YyBcdWM5MDRcdWM1ZDAgXHVkNTU4XHViMDk4XHVjNTI5IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4iLCJzdWJ0YXNrMSI6IjxwPiRuXFxsZSAyMCQ8XC9wPlxyXG4iLCJzdWJ0YXNrMiI6IjxwPiRuXFxsZSAxXFwsMDAwJDxcL3A+XHJcbiIsInN1YnRhc2szIjoiPHA+JG5cXGxlIDUwMFxcLDAwMCQ8XC9wPlxyXG4iLCJzdWJ0YXNrNCI6IjxwPlx1Y2Q5NFx1YWMwMFx1YzgwMVx1Yzc3OCBcdWM4MWNcdWQ1NWMgXHVjODcwXHVhYzc0IFx1YzVjNlx1Yzc0YzxcL3A+XHJcbiIsInNhbXBsZV9leHBsYWluXzEiOiI8cD4kbj00JFx1Yzc3OCBcdWFjYmRcdWM2YjAgXHViM2Q5XHVjNmIwXHViMjk0IFx1Y2NhYiBcdWJjODhcdWM5ZjggXHVkMTM0XHVjNWQwIFx1YWMwMFx1YzdhNSBcdWI5YzhcdWM5YzBcdWI5YzkoJDQkXHViYzg4XHVjOWY4KSBcdWNlNzhcdWM1ZDAgXHViMTkzXHVjNzc4IFx1YjNjY1x1Yzc0NCBcdWFjMDBcdWM4MzhcdWFjMDBcdWJhNzQgXHVjMmI5XHViOWFjXHVkNTYwIFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPjxpbWcgYWx0PVwiXCIgc3JjPVwiaHR0cHM6XC9cL3VwbG9hZC5hY21pY3BjLm5ldFwvODMzYzEwNWItOTMzZS00ZmE5LWE0OTMtZDIzODhhZWQ4MmY5XC8tXC9wcmV2aWV3XC9cIiBzdHlsZT1cIndpZHRoOiAyMTFweDsgaGVpZ2h0OiAxNjBweDtcIiBcLz48XC9wPlxyXG5cclxuPHA+XHViNDUwIFx1YmM4OFx1YzlmOCBcdWQxMzRcdWM1ZDAgXHVjN2FjXHVjNmIwXHViMjk0IFx1YjBhOFx1Yzc0MCAkMyRcdWNlNzhcdWM1ZDAgXHViMTkzXHVjNzc4IFx1YjNjY1x1YjRlNCBcdWM5MTEgXHVjNzc0XHVjNmMzXHVkNTVjICQxJFx1YWMxYyBcdWQ2MzlcdWM3NDAgJDIkXHVhYzFjXHViOTdjIFx1YWNlOFx1Yjc3YyBcdWFjMDBcdWM4MzhcdWFjMDBcdWIyOTRcdWIzNzAsIFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWM3NDAgXHVhY2JkXHVjNmIwXHVhYzAwIFx1YWMwMFx1YjJhNVx1ZDU1OFx1YjJlNC4gXHVjODhjXHVjNmIwIFx1YjMwMFx1Y2U2ZFx1Yzc3OCBcdWMwYzFcdWQ2NjlcdWM3NDAgXHVkNTU4XHViMDk4XHViOWNjIFx1YzBkZFx1YWMwMVx1ZDU1OFx1Yzc5MC48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT4kMSQgXHVkNjM5XHVjNzQwICQzJFx1YmM4OCBcdWNlNzhcdWM1ZDAgXHViMTkzXHVjNzc4IFx1YjNjY1x1Yzc0NCBcdWFjMDBcdWM4MzhcdWFjMDggXHVhY2JkXHVjNmIwPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC9lYWViNjY2My1kM2ZjLTQ4M2QtYTBlNS0xMjFmOGFkYjFlNzJcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwiaGVpZ2h0OiAxNjBweDsgd2lkdGg6IDIxMXB4O1wiIFwvPjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPiQyJFx1YmM4OCBcdWNlNzhcdWM1ZDAgXHViMTkzXHVjNzc4IFx1YjNjY1x1Yzc0NCBcdWFjMDBcdWM4MzhcdWFjMDggXHVhY2JkXHVjNmIwPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiPGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC85MDFjZDQ3Yi1iOTc2LTQ1OWEtYWQ0Yy0zYjBkY2Y1ZmNhZjVcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwid2lkdGg6IDIxMXB4OyBoZWlnaHQ6IDE2MHB4O1wiIFwvPjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPiQxJCwgJDIkXHViYzg4IFx1ZDYzOVx1Yzc0MCAkMiQsICQzJFx1YmM4OCBcdWNlNzhcdWM1ZDAgXHViMTkzXHVjNzc4IFx1YjNjY1x1Yzc0NCBcdWFjMDBcdWM4MzhcdWFjMDggXHVhY2JkXHVjNmIwIFx0XHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiPGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC81MjZlNGJiZS01YmI3LTRlOGQtYTFhYS00ZDc4Y2IxYTRmYTVcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwid2lkdGg6IDIxMXB4OyBoZWlnaHQ6IDE2MHB4O1wiIFwvPjxcL3A+XHJcblxyXG48cD5cdWJhYThcdWI0ZTAgXHVhY2JkXHVjNmIwXHVjNWQwIFx1YjMwMFx1ZDU3NCBcdWIzZDlcdWM2YjBcdWIyOTQgXHViMGE4XHVjNzQwIFx1YjNjY1x1Yzc0NCBcdWFjMDBcdWM4MzhcdWFjMDggXHVjMjE4IFx1Yzc4OFx1YzczY1x1YmE3MCwgXHVjN2FjXHVjNmIwXHViMjk0IFx1YjEyNCBcdWJjODhcdWM5ZjggXHVkMTM0XHVjNzQ0IFx1YzljNFx1ZDU4OVx1ZDU2MCBcdWMyMTggXHVjNWM2XHViMmU0LjxcL3A+XHJcbiJ9LHsicHJvYmxlbV9pZCI6IjMxNTQyIiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiMUQgU3RvbmUgR2FtZSAyIiwiZGVzY3JpcHRpb24iOiI8YmxvY2txdW90ZT5cclxuPHA+VGhpcyBwcm9ibGVtLCBjb21wYXJlZCB0byA8YSBocmVmPVwiXC9wcm9ibGVtXC8zMTU0MVwiPjFEIFN0b25lIEdhbWUgMTxcL2E+LCBpcyB0aGUgc2FtZSBleGNlcHQgZm9yIHRoZSA8c3Ryb25nPmJvbGQgPFwvc3Ryb25nPnBhcnRzLjxcL3A+XHJcbjxcL2Jsb2NrcXVvdGU+XHJcblxyXG48cD5Eb25nd29vIGFuZCBKYWV3b28gYXJlIHBsYXlpbmcgYSBnYW1lIG9uIGEgJDFcXHRpbWVzIG4kIGdyaWRkZWQgYm9hcmQsIHdpdGggb25lIHN0b25lIHBsYWNlZCBpbiBlYWNoIGdyaWQuPFwvcD5cclxuXHJcbjxwPlRoZSBnYW1lIHN0YXJ0cyB3aXRoIERvbmd3b28sIGFuZCB0aGUgdHdvIHRha2UgdHVybnMgdG8gdGFrZSB0aGUgc3RvbmVzLiBJbiBvdGhlciB3b3JkcywgRG9uZ3dvbyBwbGF5cyBvbiB0aGUgb2RkIHR1cm4gYW5kIEphZXdvbyBwbGF5cyBvbiB0aGUgZXZlbiB0dXJuLjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPk9uIHRoZSBmaXJzdCB0dXJuLCB0aGUgcGxheWVyIHBpY2tzICQxJCBncmlkIHRoYXQgaGFzIGEgc3RvbmUgYW5kIHRha2VzIGl0LjxcL2xpPlxyXG5cdDxsaT5TdGFydGluZyBmcm9tIHRoZSBzZWNvbmQgdHVybiwgaWYgdGhlIG51bWJlciBvZiBzdG9uZXMgdGFrZW4gYnkgdGhlIG90aGVyIHBsYXllciBvbiB0aGUgcHJldmlvdXMgdHVybiBpcyAkeCQsIDxzdHJvbmc+dGhlIHBsYXllciB0aGlzIHR1cm4gY2hvb3NlcyBhbiBpbnRlZ2VyICR5JCB3aGVyZSAkMVxcbGUgeVxcbGUgeCsxJCwgYW5kIHRoZW4gcGlja3MgJHkkIGNvbnNlY3V0aXZlIGdyaWRzJm5ic3A7PFwvc3Ryb25nPmluIHdoaWNoIHRoZSBzdG9uZXMgYXJlIHBsYWNlZCBhbmQgdGFrZSBhbGwgdGhlIHN0b25lIHBsYWNlZCBpbiB0aGUgYXJlYS48XC9saT5cclxuXHQ8bGk+V2hlbmV2ZXIgc3RvbmVzIGFyZSB0YWtlbiwgaWYgdGhlIHJlbWFpbmluZyBzdG9uZXMgYXJlIGRpdmlkZWQgaW50byB0d28gcGFydHMgc2VwYXJhdGVkIGJ5IGVtcHR5IGdyaWRzLCB0aGUgcGFydCB3aXRoIGZld2VyIHN0b25lcyBhcmUgZGlzY2FyZGVkIGJldHdlZW4gdHVybnMuIElmIHRoZSB0d28gcGFydHMgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Ygc3RvbmVzLCBhbnkgb25lIG9mIHR3byBwYXJ0cyBpcyBjaG9zZW4gYW5kIGRpc2NhcmRlZC4gSWYgdGhlIHJlbWFpbmluZyBzdG9uZXMgYXJlIG5vdCBkaXZpZGVkIGludG8gdHdvIHBhcnRzLCB0aGUgc3RvbmVzIGFyZW4mcnNxdW87dCBkaXNjYXJkZWQuPFwvbGk+XHJcblx0PGxpPklmIHRoZSBwbGF5ZXIgY2Fubm90IHRha2UgYSBzdG9uZSBvbiBoaXMgdHVybiBhY2NvcmRpbmcgdG8gdGhlIGNvbmRpdGlvbnMsIHRoZSBwZXJzb24gbG9zZXMsIGFuZCB0aGUgb3Bwb25lbnQgd2lucy48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5EZXRlcm1pbmUgd2hpY2ggcGxheWVyIHdpbnMgdGhlIGdhbWUgYXNzdW1pbmcgdGhhdCBib3RoIHBsYXllcnMgcGxheSBvcHRpbWFsbHkuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSBjb250YWlucyBhIHNpbmdsZSBpbnRlZ2VyICRUJCAkKDFcXGxlIFRcXGxlIDEwXjYpJCAmbmRhc2g7IHRoZSBudW1iZXIgb2YgdGVzdCBjYXNlcy4gVGhpcyBpcyBmb2xsb3dlZCBieSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIHRlc3QgY2FzZXMuPFwvcD5cclxuXHJcbjxwPlRoZSBmaXJzdCBsaW5lIG9mIGVhY2ggdGVzdCBjYXNlIGNvbnRhaW5zIGEgc2luZ2xlIGludGVnZXIgJG4kICQoMVxcbGUgblxcbGUgMTBeezE4fSkkICZuZGFzaDsgdGhlIG51bWJlciBvZiBzdG9uZXMgaW5pdGlhbGx5IHBsYWNlZC48XC9wPlxyXG5cclxuPHA+SWRlbnRpY2FsIHRlc3QgY2FzZXMgZG9uJnJzcXVvO3QgYXBwZWFyIG11bHRpcGxlIHRpbWVzLjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPkZvciBlYWNoIHRlc3QgY2FzZSwgb3V0cHV0IDxjb2RlPjxzcGFuIHN0eWxlPVwiY29sb3I6I2U3NGMzYztcIj5raWR3MDEyNDxcL3NwYW4+PFwvY29kZT4gaWYgRG9uZ3dvbyB3aW5zLCBhbmQgPHNwYW4gc3R5bGU9XCJjb2xvcjojZTc0YzNjO1wiPjxjb2RlPmVvYXVkMDEwODxcL2NvZGU+PFwvc3Bhbj4gaWYgSmFld29vIHdpbnMuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiRW5nbGlzaCIsInN1YnRhc2sxIjoiPHA+JG5cXGxlIDIwJDxcL3A+XHJcbiIsInN1YnRhc2syIjoiPHA+JG5cXGxlIDFcXCwwMDAkPFwvcD5cclxuIiwic3VidGFzazMiOiI8cD4kblxcbGUgNTAwXFwsMDAwJDxcL3A+XHJcbiIsInN1YnRhc2s0IjoiPHA+VGhlcmUgYXJlIG5vIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zLjxcL3A+XHJcbiIsInNhbXBsZV9leHBsYWluXzEiOiI8cD5XaGVuICRuPTQkLCBEb25nd29vIGNhbiB3aW4gYnkgdGFraW5nIHRoZSBzdG9uZSBwbGFjZWQgaW4gdGhlIGxhc3QgZ3JpZCBvbiBoaXMgZmlyc3QgdHVybi48XC9wPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC84MzNjMTA1Yi05MzNlLTRmYTktYTQ5My1kMjM4OGFlZDgyZjlcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwid2lkdGg6IDIxMXB4OyBoZWlnaHQ6IDE2MHB4O1wiIFwvPjxcL3A+XHJcblxyXG48cD5PbiB0aGUgc2Vjb25kIHR1cm4sIEphZXdvbyB0YWtlcyAkMSQgb3IgJDIkIGNvbnNlY3V0aXZlIHN0b25lcyBmcm9tIHRoZSByZW1haW5pbmcgJDMkIHN0b25lcywgYW5kIHRoZSBmb2xsb3dpbmcgY2FzZXMgYXJlIHBvc3NpYmxlLiBTeW1tZXRyaWNhbCBjYXNlcyBhcmUgY29uc2lkZXJlZCBhcyBhIHNhbWUgY2FzZS48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5UYWtpbmcgc3RvbmVzIG9uIGdyaWQgbnVtYmVyICQxJCwgb3IgZ3JpZCBudW1iZXIgJDMkPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC9lYWViNjY2My1kM2ZjLTQ4M2QtYTBlNS0xMjFmOGFkYjFlNzJcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwiaGVpZ2h0OiAxNjBweDsgd2lkdGg6IDIxMXB4O1wiIFwvPjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPlRha2luZyBzdG9uZXMgb24gZ3JpZCBudW1iZXIgJDIkPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiPGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC85MDFjZDQ3Yi1iOTc2LTQ1OWEtYWQ0Yy0zYjBkY2Y1ZmNhZjVcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwid2lkdGg6IDIxMXB4OyBoZWlnaHQ6IDE2MHB4O1wiIFwvPjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPlRha2luZyBzdG9uZXMgb24gZ3JpZCBudW1iZXIgJDEkIGFuZCAkMiQsIG9yIGdyaWQgbnVtYmVyICQyJCBhbmQgJDMkPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiXHUyMDBiPGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC81MjZlNGJiZS01YmI3LTRlOGQtYTFhYS00ZDc4Y2IxYTRmYTVcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwid2lkdGg6IDIxMXB4OyBoZWlnaHQ6IDE2MHB4O1wiIFwvPjxcL3A+XHJcblxyXG48cD5JbiBhbGwgY2FzZXMsIERvbmd3b28gY2FuIHRha2UgdGhlIHJlbWFpbmluZyBvbiB0aGUgdGhpcmQgdHVybiwgYW5kIEphZXdvbyBjYW5ub3QgcGxheSB0aGUgZm91cnRoIHR1cm4uPFwvcD5cclxuIn1d