시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 128 MB 105 6 4 11.765%

문제

아주 오래 전에, 아더왕과 원탁의 기사들은 새 해를 맞이하여 한 곳에 모이곤 했었다. 이와 비슷하게, 체스판에 한 개의 왕과 여러 개의 나이트가 놓여 있고, 이들을 하나의 칸에 모으는 경우를 생각해 보자. 킹와 나이트의 움직임은 대략 다음과 같다.

단순히 킹과 나이트를 한 칸에 모으는 문제라면 쉽겠지만, 이 문제에서는 나이트가 킹을 자신의 말에 태우는 경우를 고려해야 한다. 즉, 킹과 한 개 이상의 나이트가 같은 칸에 놓여있을 때, 킹은 따로 움직일 수도 있고, 아니면 하나의 나이트가 타고 있는 말에 올라탈 수 있다. 킹이 말에 올라타는 것은 하나의 이동으로 세지 않으며, 올라 탄 이후에는 나이트와 똑같이 움직이게 된다. 한 번 말에 오른 킹은 다시 내릴 수는 없다.

나이트가 킹이 있는 곳까지 이동한 뒤에 킹을 태울 수도 있으며, 킹이 나이트가 있는 곳으로 이동하여 말에 오를 수도 있고, 킹과 나이트가 중간의 한 곳에서 만나서 말을 탈수도 있다.

킹과 나이트들의 초기 위치가 주어졌을 때, 이들을 한 칸에 모으기 위한 최소 이동 회수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 체스판의 크기를 나타내는 두 정수 N(1≤N≤40), M(1≤M≤26)이 주어진다. N은 행의 개수, M은 열의 개수이다. 다음 줄에는 킹의 위치를 나타내는 문자 X와 수 Y가 주어진다. X는 알파벳 대문자로 표현되며, 열 번호를 의미한다. Y는 행 번호를 의미한다. 열 번호는 알파벳 A부터 차례대로 매겨진다. 다음 줄부터는 파일의 끝까지 나이트들의 위치가 주어진다. 나이트들의 위치 역시 킹의 위치와 같은 형식으로 주어진다. 파일의 끝은 두 개의 -1로 표현된다. 나이트는 0개일 수도 있고, 체스판을 가득 채울 수도 있다. 물론 같은 위치에는 한 개의 나이트만 있을 수 있다.

출력

첫째 줄에 킹과 나이트들을 한 칸에 모으기 위한 최소 이동 회수를 출력한다. 모이는 칸은 어느 곳이든 가능하다.

예제 입력 1

8 8
D 4
A 3 A 8 H 1 H 8
-1 -1

예제 출력 1

10

힌트

B5에 모이면 된다. 첫 번째 나이트는 A3 B5로 움직이며, 두 번째 나이트는 A8 C7 B5로 움직이며, 세 번째 나이트는 H1 G3 F5 D4(킹을 말에 태우고) B5로 움직이며, 네 번째 나이트는 H8-F7-D6-B5로 움직인다.

W3sicHJvYmxlbV9pZCI6IjIyNDEiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWNlNzRcdWJhNWNcdWI4NmYiLCJkZXNjcmlwdGlvbiI6IjxwPlx1YzU0NFx1YzhmYyBcdWM2MjRcdWI3OTggXHVjODA0XHVjNWQwLCBcdWM1NDRcdWIzNTRcdWM2NTVcdWFjZmMgXHVjNmQwXHVkMGMxXHVjNzU4IFx1YWUzMFx1YzBhY1x1YjRlNFx1Yzc0MCBcdWMwYzggXHVkNTc0XHViOTdjIFx1YjlkZVx1Yzc3NFx1ZDU1OFx1YzVlYyBcdWQ1NWMgXHVhY2YzXHVjNWQwIFx1YmFhOFx1Yzc3NFx1YWNlNCBcdWQ1ODhcdWM1YzhcdWIyZTQuIFx1Yzc3NFx1YzY0MCBcdWJlNDRcdWMyYjdcdWQ1NThcdWFjOGMsIFx1Y2NiNFx1YzJhNFx1ZDMxMFx1YzVkMCBcdWQ1NWMgXHVhYzFjXHVjNzU4IFx1YzY1NVx1YWNmYyBcdWM1ZWNcdWI3ZWMgXHVhYzFjXHVjNzU4IFx1YjA5OFx1Yzc3NFx1ZDJiOFx1YWMwMCBcdWIxOTNcdWM1ZWMgXHVjNzg4XHVhY2UwLCBcdWM3NzRcdWI0ZTRcdWM3NDQgXHVkNTU4XHViMDk4XHVjNzU4IFx1Y2U3OFx1YzVkMCBcdWJhYThcdWM3M2NcdWIyOTQgXHVhY2JkXHVjNmIwXHViOTdjIFx1YzBkZFx1YWMwMVx1ZDU3NCBcdWJjZjRcdWM3OTAuIFx1ZDBiOVx1YzY0MCBcdWIwOThcdWM3NzRcdWQyYjhcdWM3NTggXHVjNmMwXHVjOWMxXHVjNzg0XHVjNzQwIFx1YjMwMFx1YjdiNSBcdWIyZTRcdWM3NGNcdWFjZmMgXHVhYzE5XHViMmU0LjxcL3A+XHJcbjxwPjxpbWcgd2lkdGg9XCIyMTFcIiBoZWlnaHQ9XCIxMjBcIiBhbHQ9XCJcIiBzcmM9XCJcL0p1ZGdlT25saW5lXC91cGxvYWRcLzIwMTAwOFwvY2FtLnBuZ1wiIFwvPjxcL3A+XHJcbjxwPlx1YjJlOFx1YzIxY1x1ZDc4OCBcdWQwYjlcdWFjZmMgXHViMDk4XHVjNzc0XHVkMmI4XHViOTdjIFx1ZDU1YyBcdWNlNzhcdWM1ZDAgXHViYWE4XHVjNzNjXHViMjk0IFx1YmIzOFx1YzgxY1x1Yjc3Y1x1YmE3NCBcdWMyN2RcdWFjYTBcdWM5YzBcdWI5Y2MsIFx1Yzc3NCBcdWJiMzhcdWM4MWNcdWM1ZDBcdWMxMWNcdWIyOTQgXHViMDk4XHVjNzc0XHVkMmI4XHVhYzAwIFx1ZDBiOVx1Yzc0NCBcdWM3OTBcdWMyZTBcdWM3NTggXHViOWQwXHVjNWQwIFx1ZDBkY1x1YzZiMFx1YjI5NCBcdWFjYmRcdWM2YjBcdWI5N2MgXHVhY2UwXHViODI0XHVkNTc0XHVjNTdjIFx1ZDU1Y1x1YjJlNC4gXHVjOTg5LCBcdWQwYjlcdWFjZmMgXHVkNTVjIFx1YWMxYyBcdWM3NzRcdWMwYzFcdWM3NTggXHViMDk4XHVjNzc0XHVkMmI4XHVhYzAwIFx1YWMxOVx1Yzc0MCBcdWNlNzhcdWM1ZDAgXHViMTkzXHVjNWVjXHVjNzg4XHVjNzQ0IFx1YjU0YywgXHVkMGI5XHVjNzQwIFx1YjUzMFx1Yjg1YyBcdWM2YzBcdWM5YzFcdWM3N2MgXHVjMjE4XHViM2M0IFx1Yzc4OFx1YWNlMCwgXHVjNTQ0XHViMmM4XHViYTc0IFx1ZDU1OFx1YjA5OFx1Yzc1OCBcdWIwOThcdWM3NzRcdWQyYjhcdWFjMDAgXHVkMGMwXHVhY2UwIFx1Yzc4OFx1YjI5NCBcdWI5ZDBcdWM1ZDAgXHVjNjJjXHViNzdjXHVkMGM4IFx1YzIxOCBcdWM3ODhcdWIyZTQuIFx1ZDBiOVx1Yzc3NCBcdWI5ZDBcdWM1ZDAgXHVjNjJjXHViNzdjXHVkMGMwXHViMjk0IFx1YWM4M1x1Yzc0MCBcdWQ1NThcdWIwOThcdWM3NTggXHVjNzc0XHViM2Q5XHVjNzNjXHViODVjIFx1YzEzOFx1YzljMCBcdWM1NGFcdWM3M2NcdWJhNzAsIFx1YzYyY1x1Yjc3YyBcdWQwYzQgXHVjNzc0XHVkNmM0XHVjNWQwXHViMjk0IFx1YjA5OFx1Yzc3NFx1ZDJiOFx1YzY0MCBcdWI2MTFcdWFjMTlcdWM3NzQgXHVjNmMwXHVjOWMxXHVjNzc0XHVhYzhjIFx1YjQxY1x1YjJlNC4gXHVkNTVjIFx1YmM4OCBcdWI5ZDBcdWM1ZDAgXHVjNjI0XHViOTc4IFx1ZDBiOVx1Yzc0MCBcdWIyZTRcdWMyZGMgXHViMGI0XHViOWI0IFx1YzIxOFx1YjI5NCBcdWM1YzZcdWIyZTQuPFwvcD5cclxuPHA+XHViMDk4XHVjNzc0XHVkMmI4XHVhYzAwIFx1ZDBiOVx1Yzc3NCBcdWM3ODhcdWIyOTQgXHVhY2YzXHVhZTRjXHVjOWMwIFx1Yzc3NFx1YjNkOVx1ZDU1YyBcdWI0YTRcdWM1ZDAgXHVkMGI5XHVjNzQ0IFx1ZDBkY1x1YzZiOCBcdWMyMThcdWIzYzQgXHVjNzg4XHVjNzNjXHViYTcwLCBcdWQwYjlcdWM3NzQgXHViMDk4XHVjNzc0XHVkMmI4XHVhYzAwIFx1Yzc4OFx1YjI5NCBcdWFjZjNcdWM3M2NcdWI4NWMgXHVjNzc0XHViM2Q5XHVkNTU4XHVjNWVjIFx1YjlkMFx1YzVkMCBcdWM2MjRcdWI5N2MgXHVjMjE4XHViM2M0IFx1Yzc4OFx1YWNlMCwgXHVkMGI5XHVhY2ZjIFx1YjA5OFx1Yzc3NFx1ZDJiOFx1YWMwMCBcdWM5MTFcdWFjMDRcdWM3NTggXHVkNTVjIFx1YWNmM1x1YzVkMFx1YzExYyBcdWI5Y2NcdWIwOThcdWMxMWMgXHViOWQwXHVjNzQ0IFx1ZDBjOFx1YzIxOFx1YjNjNCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuPHA+XHVkMGI5XHVhY2ZjIFx1YjA5OFx1Yzc3NFx1ZDJiOFx1YjRlNFx1Yzc1OCBcdWNkMDhcdWFlMzAgXHVjNzA0XHVjZTU4XHVhYzAwIFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIFx1Yzc3NFx1YjRlNFx1Yzc0NCBcdWQ1NWMgXHVjZTc4XHVjNWQwIFx1YmFhOFx1YzczY1x1YWUzMCBcdWM3MDRcdWQ1NWMgXHVjZDVjXHVjMThjIFx1Yzc3NFx1YjNkOSBcdWQ2OGNcdWMyMThcdWI5N2MgXHVhZDZjXHVkNTU4XHViMjk0IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0NCBcdWM3OTFcdWMxMzFcdWQ1NThcdWMyZGNcdWM2MjQuPFwvcD4iLCJpbnB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDAgXHVjY2I0XHVjMmE0XHVkMzEwXHVjNzU4IFx1ZDA2Y1x1YWUzMFx1Yjk3YyBcdWIwOThcdWQwYzBcdWIwYjRcdWIyOTQgXHViNDUwIFx1YzgxNVx1YzIxOCBOKDEmbGU7TiZsZTs0MCksIE0oMSZsZTtNJmxlOzI2KVx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIE5cdWM3NDAgXHVkNTg5XHVjNzU4IFx1YWMxY1x1YzIxOCwgTVx1Yzc0MCBcdWM1ZjRcdWM3NTggXHVhYzFjXHVjMjE4XHVjNzc0XHViMmU0LiBcdWIyZTRcdWM3NGMgXHVjOTA0XHVjNWQwXHViMjk0IFx1ZDBiOVx1Yzc1OCBcdWM3MDRcdWNlNThcdWI5N2MgXHViMDk4XHVkMGMwXHViMGI0XHViMjk0IFx1YmIzOFx1Yzc5MCBYXHVjNjQwIFx1YzIxOCBZXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gWFx1YjI5NCBcdWM1NGNcdWQzMGNcdWJjYjMgXHViMzAwXHViYjM4XHVjNzkwXHViODVjIFx1ZDQ1Y1x1ZDYwNFx1YjQxOFx1YmE3MCwgXHVjNWY0IFx1YmM4OFx1ZDYzOFx1Yjk3YyBcdWM3NThcdWJiZjhcdWQ1NWNcdWIyZTQuIFlcdWIyOTQgXHVkNTg5IFx1YmM4OFx1ZDYzOFx1Yjk3YyBcdWM3NThcdWJiZjhcdWQ1NWNcdWIyZTQuIFx1YzVmNCBcdWJjODhcdWQ2MzhcdWIyOTQgXHVjNTRjXHVkMzBjXHViY2IzIEFcdWJkODBcdWQxMzAgXHVjYzI4XHViODQwXHViMzAwXHViODVjIFx1YjllNFx1YWNhOFx1YzljNFx1YjJlNC4gXHViMmU0XHVjNzRjIFx1YzkwNFx1YmQ4MFx1ZDEzMFx1YjI5NCBcdWQzMGNcdWM3N2NcdWM3NTggXHViMDVkXHVhZTRjXHVjOWMwIFx1YjA5OFx1Yzc3NFx1ZDJiOFx1YjRlNFx1Yzc1OCBcdWM3MDRcdWNlNThcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWIwOThcdWM3NzRcdWQyYjhcdWI0ZTRcdWM3NTggXHVjNzA0XHVjZTU4IFx1YzVlZFx1YzJkYyBcdWQwYjlcdWM3NTggXHVjNzA0XHVjZTU4XHVjNjQwIFx1YWMxOVx1Yzc0MCBcdWQ2MTVcdWMyZGRcdWM3M2NcdWI4NWMgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWQzMGNcdWM3N2NcdWM3NTggXHViMDVkXHVjNzQwIFx1YjQ1MCBcdWFjMWNcdWM3NTggLTFcdWI4NWMgXHVkNDVjXHVkNjA0XHViNDFjXHViMmU0LiBcdWIwOThcdWM3NzRcdWQyYjhcdWIyOTQgMFx1YWMxY1x1Yzc3YyBcdWMyMThcdWIzYzQgXHVjNzg4XHVhY2UwLCBcdWNjYjRcdWMyYTRcdWQzMTBcdWM3NDQgXHVhYzAwXHViNGRkIFx1Y2M0NFx1YzZiOCBcdWMyMThcdWIzYzQgXHVjNzg4XHViMmU0LiBcdWJiM2NcdWI4NjAgXHVhYzE5XHVjNzQwIFx1YzcwNFx1Y2U1OFx1YzVkMFx1YjI5NCBcdWQ1NWMgXHVhYzFjXHVjNzU4IFx1YjA5OFx1Yzc3NFx1ZDJiOFx1YjljYyBcdWM3ODhcdWM3NDQgXHVjMjE4IFx1Yzc4OFx1YjJlNC48XC9wPiIsIm91dHB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDAgXHVkMGI5XHVhY2ZjIFx1YjA5OFx1Yzc3NFx1ZDJiOFx1YjRlNFx1Yzc0NCBcdWQ1NWMgXHVjZTc4XHVjNWQwIFx1YmFhOFx1YzczY1x1YWUzMCBcdWM3MDRcdWQ1NWMgXHVjZDVjXHVjMThjIFx1Yzc3NFx1YjNkOSBcdWQ2OGNcdWMyMThcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LiBcdWJhYThcdWM3NzRcdWIyOTQgXHVjZTc4XHVjNzQwIFx1YzViNFx1YjI5MCBcdWFjZjNcdWM3NzRcdWI0ZTAgXHVhYzAwXHViMmE1XHVkNTU4XHViMmU0LjxcL3A+IiwiaGludCI6IjxwPkI1XHVjNWQwIFx1YmFhOFx1Yzc3NFx1YmE3NCBcdWI0MWNcdWIyZTQuIFx1Y2NhYiBcdWJjODhcdWM5ZjggXHViMDk4XHVjNzc0XHVkMmI4XHViMjk0IEEzIEI1XHViODVjIFx1YzZjMFx1YzljMVx1Yzc3NFx1YmE3MCwgXHViNDUwIFx1YmM4OFx1YzlmOCBcdWIwOThcdWM3NzRcdWQyYjhcdWIyOTQgQTggQzcgQjVcdWI4NWMgXHVjNmMwXHVjOWMxXHVjNzc0XHViYTcwLCBcdWMxMzggXHViYzg4XHVjOWY4IFx1YjA5OFx1Yzc3NFx1ZDJiOFx1YjI5NCBIMSBHMyBGNSBENChcdWQwYjlcdWM3NDQgXHViOWQwXHVjNWQwIFx1ZDBkY1x1YzZiMFx1YWNlMCkgQjVcdWI4NWMgXHVjNmMwXHVjOWMxXHVjNzc0XHViYTcwLCBcdWIxMjQgXHViYzg4XHVjOWY4IFx1YjA5OFx1Yzc3NFx1ZDJiOFx1YjI5NCBIOC1GNy1ENi1CNVx1Yjg1YyBcdWM2YzBcdWM5YzFcdWM3NzhcdWIyZTQuPFwvcD4iLCJvcmlnaW5hbCI6IjAiLCJwcm9ibGVtX2xhbmdfY29kZSI6Ilx1ZDU1Y1x1YWQ2ZFx1YzViNCJ9LHsicHJvYmxlbV9pZCI6IjIyNDEiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJDYW1lbG90IiwiZGVzY3JpcHRpb24iOiI8cD5DZW50dXJpZXMgYWdvLCBLaW5nIEFydGh1ciBhbmQgdGhlIEtuaWdodHMgb2YgdGhlIFJvdW5kIFRhYmxlIHVzZWQgdG8gbWVldCBldmVyeSB5ZWFyIG9uIE5ldyBZZWFyJiMzOTtzIERheSB0byBjZWxlYnJhdGUgdGhlaXIgZmVsbG93c2hpcC4gSW4gcmVtZW1icmFuY2Ugb2YgdGhlc2UgZXZlbnRzLCB3ZSBjb25zaWRlciBhIGJvYXJkIGdhbWUgZm9yIG9uZSBwbGF5ZXIsIG9uIHdoaWNoIG9uZSBraW5nIGFuZCBzZXZlcmFsIGtuaWdodCBwaWVjZXMgYXJlIHBsYWNlZCBhdCByYW5kb20gb24gZGlzdGluY3Qgc3F1YXJlcy48XC9wPlxyXG5cclxuPHA+VGhlIEJvYXJkIGlzIGFuIDh4OCBhcnJheSBvZiBzcXVhcmVzLjxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2NhbWVsb3QtMS5naWZcIiBzdHlsZT1cImhlaWdodDoxNzZweDsgd2lkdGg6MTY4cHhcIiBcLz48XC9wPlxyXG5cclxuPHA+RmlndXJlIDEuIEEgYm9hcmQ8XC9wPlxyXG5cclxuPHA+VGhlIEtpbmcgY2FuIG1vdmUgdG8gYW55IGFkamFjZW50IHNxdWFyZSBmcm9tIFNvdXJjZSg8aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2NhbWVsb3QtYi5naWZcIiBzdHlsZT1cImhlaWdodDoxMHB4OyB3aWR0aDoxMHB4XCIgXC8+KSZuYnNwO3RvIERlc3RpbmF0aW9uKDxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvY2FtZWxvdC13LmdpZlwiIHN0eWxlPVwiaGVpZ2h0OjEwcHg7IHdpZHRoOjEwcHhcIiBcLz4pICwgYXMgc2hvd24gaW4gRmlndXJlIDIsIGFzIGxvbmcgYXMgaXQgZG9lcyBub3QgZmFsbCBvZmYgdGhlIGJvYXJkLjxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2NhbWVsb3QtMi5naWZcIiBzdHlsZT1cImhlaWdodDo2OXB4OyB3aWR0aDo3OHB4XCIgXC8+PFwvcD5cclxuXHJcbjxwPkZpZ3VyZSAyLiBBbGwgcG9zc2libGUgbW92ZW1lbnRzIG9mIHRoZSBraW5nPFwvcD5cclxuXHJcbjxwPkEgS25pZ2h0IGNhbiBqdW1wIGZyb20gU291cmNlKDxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvY2FtZWxvdC1iLmdpZlwiIHN0eWxlPVwiaGVpZ2h0OjEwcHg7IHdpZHRoOjEwcHhcIiBcLz4pJm5ic3A7dG8gRGVzdGluYXRpb24oPGltZyBhbHQ9XCJcIiBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9jYW1lbG90LXcuZ2lmXCIgc3R5bGU9XCJoZWlnaHQ6MTBweDsgb3BhY2l0eTowLjk7IHdpZHRoOjEwcHhcIiBcLz4pICwgYXMgc2hvd24gaW4gRmlndXJlIDMsIGFzIGxvbmcgYXMgaXQgZG9lcyBub3QgZmFsbCBvZmYgdGhlIGJvYXJkLjxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2NhbWVsb3QtMy5naWZcIiBzdHlsZT1cImhlaWdodDoxMTdweDsgd2lkdGg6MTE3cHhcIiBcLz48XC9wPlxyXG5cclxuPHA+RmlndXJlIDMuIEFsbCBwb3NzaWJsZSBtb3ZlbWVudHMgb2YgYSBrbmlnaHQ8XC9wPlxyXG5cclxuPHA+RHVyaW5nIHRoZSBwbGF5LCB0aGUgcGxheWVyIGNhbiBwbGFjZSBtb3JlIHRoYW4gb25lIHBpZWNlIGluIHRoZSBzYW1lIHNxdWFyZS4gVGhlIGJvYXJkIHNxdWFyZXMgYXJlIGFzc3VtZWQgYmlnIGVub3VnaCBzbyB0aGF0IGEgcGllY2UgaXMgbmV2ZXIgYW4gb2JzdGFjbGUgZm9yIG90aGVyIHBpZWNlIHRvIG1vdmUgZnJlZWx5LjxcL3A+XHJcblxyXG48cD5UaGUgcGxheWVyJiMzOTtzIGdvYWwgaXMgdG8gbW92ZSB0aGUgcGllY2VzIHNvIGFzIHRvIGdhdGhlciB0aGVtIGFsbCBpbiB0aGUgc2FtZSBzcXVhcmUsIGluIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBudW1iZXIgb2YgbW92ZXMuIFRvIGFjaGlldmUgdGhpcywgaGUgbXVzdCBtb3ZlIHRoZSBwaWVjZXMgYXMgcHJlc2NyaWJlZCBhYm92ZS4gQWRkaXRpb25hbGx5LCB3aGVuZXZlciB0aGUga2luZyBhbmQgb25lIG9yIG1vcmUga25pZ2h0cyBhcmUgcGxhY2VkIGluIHRoZSBzYW1lIHNxdWFyZSwgdGhlIHBsYXllciBtYXkgY2hvb3NlIHRvIG1vdmUgdGhlIGtpbmcgYW5kIG9uZSBvZiB0aGUga25pZ2h0cyB0b2dldGhlciBoZW5jZWZvcnRoLCBhcyBhIHNpbmdsZSBrbmlnaHQsIHVwIHRvIHRoZSBmaW5hbCBnYXRoZXJpbmcgcG9pbnQuIE1vdmluZyB0aGUga25pZ2h0IHRvZ2V0aGVyIHdpdGggdGhlIGtpbmcgY291bnRzIGFzIGEgc2luZ2xlIG1vdmUuPFwvcD5cclxuXHJcbjxwPldyaXRlIGEgcHJvZ3JhbSB0byBjb21wdXRlIHRoZSBtaW5pbXVtIG51bWJlciBvZiBtb3ZlcyB0aGUgcGxheWVyIG11c3QgcGVyZm9ybSB0byBwcm9kdWNlIHRoZSBnYXRoZXJpbmcuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgaW5wdXQgY29udGFpbnMgdGhlIGluaXRpYWwgYm9hcmQgY29uZmlndXJhdGlvbiwgZW5jb2RlZCBhcyBhIGNoYXJhY3RlciBzdHJpbmcuIFRoZSBzdHJpbmcgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiB1cCB0byA2NCBkaXN0aW5jdCBib2FyZCBwb3NpdGlvbnMsIGJlaW5nIHRoZSBmaXJzdCBvbmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBraW5nIGFuZCB0aGUgcmVtYWluaW5nIG9uZXMgdGhvc2Ugb2YgdGhlIGtuaWdodHMuIEVhY2ggcG9zaXRpb24gaXMgYSBsZXR0ZXItZGlnaXQgcGFpci4gVGhlIGxldHRlciBpbmRpY2F0ZXMgdGhlIGhvcml6b250YWwgYm9hcmQgY29vcmRpbmF0ZSwgdGhlIGRpZ2l0IGluZGljYXRlcyB0aGUgdmVydGljYWwgYm9hcmQgY29vcmRpbmF0ZS48XC9wPlxyXG5cclxuPHA+MCAmbHQ7PSBudW1iZXIgb2Yga25pZ2h0cyAmbHQ7PSA2MzxcL3A+XHJcblxyXG48cD4mbmJzcDs8XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5UaGUgb3V0cHV0IG11c3QgY29udGFpbiBhIHNpbmdsZSBsaW5lIHdpdGggYW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBtaW5pbXVtIG51bWJlciBvZiBtb3ZlcyB0aGUgcGxheWVyIG11c3QgcGVyZm9ybSB0byBwcm9kdWNlIHRoZSBnYXRoZXJpbmcuPFwvcD5cclxuIiwiaGludCI6IjxwPlRoZSBraW5nIGlzIHBvc2l0aW9uZWQgYXQgRDQuIFRoZXJlIGFyZSBmb3VyIGtuaWdodHMsIHBvc2l0aW9uZWQgYXQgQTMsIEE4LCBIMSwgYW5kIEg4LjxcL3A+XHJcbiIsIm9yaWdpbmFsIjoiMSIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d