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

문제

얼마전 남극 연구 탐사진들은 새로운 종을 발견하였다. 연구진은 테스트를 하기 위해 샘플을 하나 추출해 연구실로 보냈다.

이번에 발견된 새로운 종은 짧은 주기를 갖고 번식한다. 번식할 때 부모는 하나만 있으면 된다. 한 부모는 두 번 번식할 수 있으며, 그 이후에는 더 이상 번식할 수 없다.

따라서, 연구실에 있는 표본의 수는 급속도로 늘어났고, 가계도가 필요한 시점이 되었다.

연구진은 간단한 텍스트 에디터를 이용해 가계도를 그리려고 한다. 가계도는 다음과 같은 규칙을 지켜야 한다.

표번의 이름은 '-', '|', 'o'로 이루어진 박스로 둘러쌓여져 있어야 한다. 윗 변과 아랫 변의 중앙에는 '+' 마크가 있어야 한다. 변의 길이가 짝수인 경우에는 두 중앙 중 왼쪽 중앙에 '+'를 표시한다.

박스를 링크를 이용해 연결해야 한다. 한 링크는 두 개 또는 그 이상의 박스를 연결할 수 있으며, '+'와 연결되어 있어야 한다. 부모 박스가 위에, 자식 박스가 아래에 있어야 한다. 박스와 링크는 겹칠 수 없다.

자식의 수가 1개인 경우에는 가장 왼쪽 그림에 나와있는 링크를 사용한다. 둘 이상의 자식을 가지는 경우에는 중간에 갈라진 링크를 사용해야 하며, 왼쪽에는 나이가 많은 자식, 오른쪽에는 적은 자식이 있어야 한다.

링크는 수평방향으로 늘어날 수 있으며, 좌우의 '-'의 개수는 같아야 한다. 링크는 수직방향으로 늘어날 수는 없다.

각 표본의 정보가 주어졌을 때, 가계도를 그리는데 필요한 문자의 개수를 구하는 프로그램을 작성하시오. 단, 공백의 개수는 세지 않으며, '-', '|', '+', 'o', 이름만 센다.

입력

첫째 줄에 실험실에 있는 표본의 수 N (1 ≤ N ≤ 300,000)이 주어진다. 각 표본은 1번부터 N번까지 태어난 순서대로 번호가 매겨져 있다. 즉, 가장 나이가 많은 표본은 1, 어린 표본은 N이다.

다음 N개 줄에는 각 표본의 이름과 부모의 번호가 주어진다. (첫 번째 표본의 부모는 알 수 없다) 이름은 알파벳 소문자로만 이루어진 문자열로 길이는 20을 넘지 않는다.

출력

첫째 줄에 가계도를 그리는데 필요한 글자의 수를 출력한다.

예제 입력 1

12
anton
ana 1
luka 1
mia 2
tea 3
jakov 3
semiramida 5
dominik 5
anamarija 4
eustahije 4
lovro 2
lovro 11

예제 출력 1

371

힌트

                             o--+--o 
                             |anton| 
                             o--+--o 
                                | 
                   o------------o------------o 
                   |                         | 
                 o-+-o                     o-+--o 
                 |ana|                     |luka| 
                 o-+-o                     o-+--o 
                   |                         | 
           o-------o-------o              o--o--o 
           |               |              |     | 
         o-+-o          o--+--o         o-+-oo--+--o 
         |mia|          |lovro|         |tea||jakov| 
         o-+-o          o--+--o         o-+-oo--+--o 
           |               |              | 
     o-----o-----o         o        o-----o-----o 
     |           |         |        |           | 
o----+----o o----+----o o--+--oo----+-----o o---+---o 
|anamarija| |eustahije| |lovro||semiramida| |dominik| 
o----+----o o----+----o o--+--oo----+-----o o---+---o 
W3sicHJvYmxlbV9pZCI6IjI4ODMiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWIwYThcdWFkZjlcdWM3NTggXHVhY2ZjXHVkNTU5XHVjNzkwIiwiZGVzY3JpcHRpb24iOiI8cD5cdWM1YmNcdWI5YzhcdWM4MDQgXHViMGE4XHVhZGY5IFx1YzVmMFx1YWQ2YyBcdWQwZDBcdWMwYWNcdWM5YzRcdWI0ZTRcdWM3NDAgXHVjMGM4XHViODVjXHVjNmI0IFx1Yzg4NVx1Yzc0NCBcdWJjMWNcdWFjYWNcdWQ1NThcdWM2MDBcdWIyZTQuIFx1YzVmMFx1YWQ2Y1x1YzljNFx1Yzc0MCBcdWQxNGNcdWMyYTRcdWQyYjhcdWI5N2MgXHVkNTU4XHVhZTMwIFx1YzcwNFx1ZDU3NCBcdWMwZDhcdWQ1MGNcdWM3NDQgXHVkNTU4XHViMDk4IFx1Y2Q5NFx1Y2Q5Y1x1ZDU3NCBcdWM1ZjBcdWFkNmNcdWMyZTRcdWI4NWMgXHViY2Y0XHViMGM4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM3NzRcdWJjODhcdWM1ZDAgXHViYzFjXHVhY2FjXHViNDFjIFx1YzBjOFx1Yjg1Y1x1YzZiNCBcdWM4ODVcdWM3NDAgXHVjOWU3XHVjNzQwIFx1YzhmY1x1YWUzMFx1Yjk3YyBcdWFjMTZcdWFjZTAgXHViYzg4XHVjMmRkXHVkNTVjXHViMmU0LiBcdWJjODhcdWMyZGRcdWQ1NjAgXHViNTRjIFx1YmQ4MFx1YmFhOFx1YjI5NCBcdWQ1NThcdWIwOThcdWI5Y2MgXHVjNzg4XHVjNzNjXHViYTc0IFx1YjQxY1x1YjJlNC4gXHVkNTVjIFx1YmQ4MFx1YmFhOFx1YjI5NCBcdWI0NTAgXHViYzg4IFx1YmM4OFx1YzJkZFx1ZDU2MCBcdWMyMTggXHVjNzg4XHVjNzNjXHViYTcwLCBcdWFkZjggXHVjNzc0XHVkNmM0XHVjNWQwXHViMjk0IFx1YjM1NCBcdWM3NzRcdWMwYzEgXHViYzg4XHVjMmRkXHVkNTYwIFx1YzIxOCBcdWM1YzZcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjUzMFx1Yjc3Y1x1YzExYywgXHVjNWYwXHVhZDZjXHVjMmU0XHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWQ0NWNcdWJjZjhcdWM3NTggXHVjMjE4XHViMjk0IFx1YWUwOVx1YzE4ZFx1YjNjNFx1Yjg1YyBcdWIyOThcdWM1YjRcdWIwYWNcdWFjZTAsIFx1YWMwMFx1YWNjNFx1YjNjNFx1YWMwMCBcdWQ1NDRcdWM2OTRcdWQ1NWMgXHVjMmRjXHVjODEwXHVjNzc0IFx1YjQxOFx1YzVjOFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNWYwXHVhZDZjXHVjOWM0XHVjNzQwIFx1YWMwNFx1YjJlOFx1ZDU1YyBcdWQxNGRcdWMyYTRcdWQyYjggXHVjNWQwXHViNTE0XHVkMTMwXHViOTdjIFx1Yzc3NFx1YzZhOVx1ZDU3NCBcdWFjMDBcdWFjYzRcdWIzYzRcdWI5N2MgXHVhZGY4XHViOWFjXHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC4gXHVhYzAwXHVhY2M0XHViM2M0XHViMjk0IFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWM3NDAgXHVhZGRjXHVjZTU5XHVjNzQ0IFx1YzljMFx1Y2YxY1x1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1ZDQ1Y1x1YmM4OFx1Yzc1OCBcdWM3NzRcdWI5ODRcdWM3NDAgJiMzOTstJiMzOTssICYjMzk7fCYjMzk7LCAmIzM5O28mIzM5O1x1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM5YzQgXHViYzE1XHVjMmE0XHViODVjIFx1YjQ1OFx1YjdlY1x1YzMxM1x1YzVlY1x1YzgzOCBcdWM3ODhcdWM1YjRcdWM1N2MgXHVkNTVjXHViMmU0LiBcdWM3MTcgXHViY2MwXHVhY2ZjIFx1YzU0NFx1YjdhYiBcdWJjYzBcdWM3NTggXHVjOTExXHVjNTU5XHVjNWQwXHViMjk0ICYjMzk7KyYjMzk7IFx1YjljOFx1ZDA2Y1x1YWMwMCBcdWM3ODhcdWM1YjRcdWM1N2MgXHVkNTVjXHViMmU0LiBcdWJjYzBcdWM3NTggXHVhZTM4XHVjNzc0XHVhYzAwIFx1YzlkZFx1YzIxOFx1Yzc3OCBcdWFjYmRcdWM2YjBcdWM1ZDBcdWIyOTQgXHViNDUwIFx1YzkxMVx1YzU1OSBcdWM5MTEgXHVjNjdjXHVjYWJkIFx1YzkxMVx1YzU1OVx1YzVkMCAmIzM5OysmIzM5O1x1Yjk3YyBcdWQ0NWNcdWMyZGNcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvYW50YXJ0aWMxLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjYzcHg7IHdpZHRoOjUyM3B4XCIgXC8+PFwvcD5cclxuXHJcbjxwPlx1YmMxNVx1YzJhNFx1Yjk3YyBcdWI5YzFcdWQwNmNcdWI5N2MgXHVjNzc0XHVjNmE5XHVkNTc0IFx1YzVmMFx1YWNiMFx1ZDU3NFx1YzU3YyBcdWQ1NWNcdWIyZTQuIFx1ZDU1YyBcdWI5YzFcdWQwNmNcdWIyOTQgXHViNDUwIFx1YWMxYyBcdWI2MTBcdWIyOTQgXHVhZGY4IFx1Yzc3NFx1YzBjMVx1Yzc1OCBcdWJjMTVcdWMyYTRcdWI5N2MgXHVjNWYwXHVhY2IwXHVkNTYwIFx1YzIxOCBcdWM3ODhcdWM3M2NcdWJhNzAsICYjMzk7KyYjMzk7XHVjNjQwIFx1YzVmMFx1YWNiMFx1YjQxOFx1YzViNCBcdWM3ODhcdWM1YjRcdWM1N2MgXHVkNTVjXHViMmU0LiBcdWJkODBcdWJhYTggXHViYzE1XHVjMmE0XHVhYzAwIFx1YzcwNFx1YzVkMCwgXHVjNzkwXHVjMmRkIFx1YmMxNVx1YzJhNFx1YWMwMCBcdWM1NDRcdWI3OThcdWM1ZDAgXHVjNzg4XHVjNWI0XHVjNTdjIFx1ZDU1Y1x1YjJlNC4gXHViYzE1XHVjMmE0XHVjNjQwIFx1YjljMVx1ZDA2Y1x1YjI5NCBcdWFjYjlcdWNlNjAgXHVjMjE4IFx1YzVjNlx1YjJlNC48XC9wPlxyXG5cclxuPHA+PGltZyBhbHQ9XCJcIiBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9hbnRhcnRpYzIucG5nXCIgc3R5bGU9XCJoZWlnaHQ6ODFweDsgd2lkdGg6NTM2cHhcIiBcLz48XC9wPlxyXG5cclxuPHA+XHVjNzkwXHVjMmRkXHVjNzU4IFx1YzIxOFx1YWMwMCAxXHVhYzFjXHVjNzc4IFx1YWNiZFx1YzZiMFx1YzVkMFx1YjI5NCBcdWFjMDBcdWM3YTUgXHVjNjdjXHVjYWJkIFx1YWRmOFx1YjliY1x1YzVkMCBcdWIwOThcdWM2NDBcdWM3ODhcdWIyOTQgXHViOWMxXHVkMDZjXHViOTdjIFx1YzBhY1x1YzZhOVx1ZDU1Y1x1YjJlNC4gXHViNDU4IFx1Yzc3NFx1YzBjMVx1Yzc1OCBcdWM3OTBcdWMyZGRcdWM3NDQgXHVhYzAwXHVjOWMwXHViMjk0IFx1YWNiZFx1YzZiMFx1YzVkMFx1YjI5NCBcdWM5MTFcdWFjMDRcdWM1ZDAgXHVhYzA4XHViNzdjXHVjOWM0IFx1YjljMVx1ZDA2Y1x1Yjk3YyBcdWMwYWNcdWM2YTlcdWQ1NzRcdWM1N2MgXHVkNTU4XHViYTcwLCBcdWM2N2NcdWNhYmRcdWM1ZDBcdWIyOTQgXHViMDk4XHVjNzc0XHVhYzAwIFx1YjljZVx1Yzc0MCBcdWM3OTBcdWMyZGQsIFx1YzYyNFx1Yjk3OFx1Y2FiZFx1YzVkMFx1YjI5NCBcdWM4MDFcdWM3NDAgXHVjNzkwXHVjMmRkXHVjNzc0IFx1Yzc4OFx1YzViNFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjljMVx1ZDA2Y1x1YjI5NCBcdWMyMThcdWQzYzlcdWJjMjlcdWQ1YTVcdWM3M2NcdWI4NWMgXHViMjk4XHVjNWI0XHViMGEwIFx1YzIxOCBcdWM3ODhcdWM3M2NcdWJhNzAsIFx1Yzg4Y1x1YzZiMFx1Yzc1OCAmIzM5Oy0mIzM5O1x1Yzc1OCBcdWFjMWNcdWMyMThcdWIyOTQgXHVhYzE5XHVjNTQ0XHVjNTdjIFx1ZDU1Y1x1YjJlNC4gXHViOWMxXHVkMDZjXHViMjk0IFx1YzIxOFx1YzljMVx1YmMyOVx1ZDVhNVx1YzczY1x1Yjg1YyBcdWIyOThcdWM1YjRcdWIwYTAgXHVjMjE4XHViMjk0IFx1YzVjNlx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhYzAxIFx1ZDQ1Y1x1YmNmOFx1Yzc1OCBcdWM4MTVcdWJjZjRcdWFjMDAgXHVjOGZjXHVjNWI0XHVjODRjXHVjNzQ0IFx1YjU0YywgXHVhYzAwXHVhY2M0XHViM2M0XHViOTdjIFx1YWRmOFx1YjlhY1x1YjI5NFx1YjM3MCBcdWQ1NDRcdWM2OTRcdWQ1NWMgXHViYjM4XHVjNzkwXHVjNzU4IFx1YWMxY1x1YzIxOFx1Yjk3YyBcdWFkNmNcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC4gXHViMmU4LCBcdWFjZjVcdWJjMzFcdWM3NTggXHVhYzFjXHVjMjE4XHViMjk0IFx1YzEzOFx1YzljMCBcdWM1NGFcdWM3M2NcdWJhNzAsICYjMzk7LSYjMzk7LCAmIzM5O3wmIzM5OywgJiMzOTsrJiMzOTssICYjMzk7byYjMzk7LCBcdWM3NzRcdWI5ODRcdWI5Y2MgXHVjMTNjXHViMmU0LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMCBcdWMyZTRcdWQ1ZDhcdWMyZTRcdWM1ZDAgXHVjNzg4XHViMjk0IFx1ZDQ1Y1x1YmNmOFx1Yzc1OCBcdWMyMTggTiAoMSAmbGU7IE4gJmxlOyAzMDAsMDAwKVx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1YWMwMSBcdWQ0NWNcdWJjZjhcdWM3NDAgMVx1YmM4OFx1YmQ4MFx1ZDEzMCBOXHViYzg4XHVhZTRjXHVjOWMwIFx1ZDBkY1x1YzViNFx1YjA5YyBcdWMyMWNcdWMxMWNcdWIzMDBcdWI4NWMgXHViYzg4XHVkNjM4XHVhYzAwIFx1YjllNFx1YWNhOFx1YzgzOCBcdWM3ODhcdWIyZTQuIFx1Yzk4OSwgXHVhYzAwXHVjN2E1IFx1YjA5OFx1Yzc3NFx1YWMwMCBcdWI5Y2VcdWM3NDAgXHVkNDVjXHViY2Y4XHVjNzQwIDEsIFx1YzViNFx1YjliMCBcdWQ0NWNcdWJjZjhcdWM3NDAgTlx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViMmU0XHVjNzRjIE5cdWFjMWMgXHVjOTA0XHVjNWQwXHViMjk0IFx1YWMwMSBcdWQ0NWNcdWJjZjhcdWM3NTggXHVjNzc0XHViOTg0XHVhY2ZjIFx1YmQ4MFx1YmFhOFx1Yzc1OCBcdWJjODhcdWQ2MzhcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAoXHVjY2FiIFx1YmM4OFx1YzlmOCBcdWQ0NWNcdWJjZjhcdWM3NTggXHViZDgwXHViYWE4XHViMjk0IFx1YzU0YyBcdWMyMTggXHVjNWM2XHViMmU0KSBcdWM3NzRcdWI5ODRcdWM3NDAgXHVjNTRjXHVkMzBjXHViY2IzIFx1YzE4Y1x1YmIzOFx1Yzc5MFx1Yjg1Y1x1YjljYyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM5YzQgXHViYjM4XHVjNzkwXHVjNWY0XHViODVjIFx1YWUzOFx1Yzc3NFx1YjI5NCAyMFx1Yzc0NCBcdWIxMThcdWM5YzAgXHVjNTRhXHViMjk0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDAgXHVhYzAwXHVhY2M0XHViM2M0XHViOTdjIFx1YWRmOFx1YjlhY1x1YjI5NFx1YjM3MCBcdWQ1NDRcdWM2OTRcdWQ1NWMgXHVhZTAwXHVjNzkwXHVjNzU4IFx1YzIxOFx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IjxwcmU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby0tKy0tbyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8YW50b258IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8tLSstLW8gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcclxuICAgICAgICAgICAgICAgICAgIG8tLS0tLS0tLS0tLS1vLS0tLS0tLS0tLS0tbyBcclxuICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBcclxuICAgICAgICAgICAgICAgICBvLSstbyAgICAgICAgICAgICAgICAgICAgIG8tKy0tbyBcclxuICAgICAgICAgICAgICAgICB8YW5hfCAgICAgICAgICAgICAgICAgICAgIHxsdWthfCBcclxuICAgICAgICAgICAgICAgICBvLSstbyAgICAgICAgICAgICAgICAgICAgIG8tKy0tbyBcclxuICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBcclxuICAgICAgICAgICBvLS0tLS0tLW8tLS0tLS0tbyAgICAgICAgICAgICAgby0tby0tbyBcclxuICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgfCBcclxuICAgICAgICAgby0rLW8gICAgICAgICAgby0tKy0tbyAgICAgICAgIG8tKy1vby0tKy0tbyBcclxuICAgICAgICAgfG1pYXwgICAgICAgICAgfGxvdnJvfCAgICAgICAgIHx0ZWF8fGpha292fCBcclxuICAgICAgICAgby0rLW8gICAgICAgICAgby0tKy0tbyAgICAgICAgIG8tKy1vby0tKy0tbyBcclxuICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCBcclxuICAgICBvLS0tLS1vLS0tLS1vICAgICAgICAgbyAgICAgICAgby0tLS0tby0tLS0tbyBcclxuICAgICB8ICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgICAgfCBcclxuby0tLS0rLS0tLW8gby0tLS0rLS0tLW8gby0tKy0tb28tLS0tKy0tLS0tbyBvLS0tKy0tLW8gXHJcbnxhbmFtYXJpamF8IHxldXN0YWhpamV8IHxsb3Zyb3x8c2VtaXJhbWlkYXwgfGRvbWluaWt8IFxyXG5vLS0tLSstLS0tbyBvLS0tLSstLS0tbyBvLS0rLS1vby0tLS0rLS0tLS1vIG8tLS0rLS0tbyBcclxuPFwvcHJlPiIsIm9yaWdpbmFsIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVkNTVjXHVhZDZkXHVjNWI0In0seyJwcm9ibGVtX2lkIjoiMjg4MyIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IkxPWkEiLCJkZXNjcmlwdGlvbiI6IjxwPlNjaWVudGlzdHMgb24gQW50YXJjdGljYSBoYXZlIGZvdW5kIGEgbmV3IHNwZWNpZXMhIFRoZXkgZXh0cmFjdGVkIG9uZSBzYW1wbGUgYW5kIHRvb2sgaXQgdG8gdGhlIGxhYm9yYXRvcnkgZm9yIHRlc3RpbmcuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlRoZXkgcXVpY2tseSBub3RpY2VkIHRoZSBzcGVjaWVzIHJlcHJvZHVjZXMgcXVpdGUgb2Z0ZW4gYW5kIHRoYXQgb25seSBvbmUgcGFyZW50IGlzIHJlcXVpcmVkIGZvciByZXByb2R1Y3Rpb24uIEhvd2V2ZXIgYWZ0ZXIgdGhlIHBhcmVudCByZXByb2R1Y2VzIHR3aWNlLCBpdCBiZWNvbWVzIHN0ZXJpbGUgYW5kIGNhbm5vdCByZXByb2R1Y2UgYWdhaW4uJm5ic3A7PFwvcD5cclxuXHJcbjxwPkluIHNwaXRlIG9mIHRoaXMgdGhlIG51bWJlciBvZiBzcGVjaW1lbnMgaW4gdGhlIGxhYm9yYXRvcnkgc2t5cm9ja2V0ZWQgYW5kIHRoZSBuZWVkIGZvciBmYW1pbHkgdHJlZXMgYXBwZWFyZWQuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlRoZXkgZGVjaWRlZCB0byBkcmF3IHRoZSB0cmVlIGluIGEgc2ltcGxlIHRleHQgZWRpdG9yIHVzaW5nIGZvbGxvd2luZyBjb252ZW50aW9uczombmJzcDs8XC9wPlxyXG5cclxuPHA+VGhlIG5hbWVzIG9mIHRoZSBzcGVjaW1lbnMgd2lsbCBiZSB3cml0dGVuIGluc2lkZSBuaWNlIGJveGVzIHVzaW5nIGNoYXJhY3RlcnMgJiMzOTstJiMzOTssICYjMzk7fCYjMzk7IGFuZCAmIzM5O28mIzM5Oy4gVGhlIGNlbnRlciBwb2ludCBvZiB0aGUgdXBwZXIgYW5kIGxvd2VyIGJvcmRlciB3aWxsIGJlIG1hcmtlZCBieSB0aGUgY2hhcmFjdGVyICYjMzk7KyYjMzk7LiBJZiB0aGUgbGVuZ3RoIG9mIHRoZSBib3JkZXIgaXMgZXZlbiwgJiMzOTsrJiMzOTsgd2lsbCBiZSBvbiB0aGUgbGVmdCBvZiB0aGUgdHdvIGNlbnRlciBwb2ludHMuJm5ic3A7PFwvcD5cclxuXHJcbjxwPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvYW50YXJ0aWMxLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjYzcHg7IHdpZHRoOjUyM3B4XCIgXC8+PFwvcD5cclxuXHJcbjxwPlRoZSBib3hlcyB3aWxsIGJlIGNvbm5lY3RlZCB3aXRoIGxpbmtzLiBPbmUgbGluayBjb25uZWN0cyB0d28gb3IgbW9yZSBib3hlcyBvbiB0aGVpciByZXNwZWN0aXZlICYjMzk7KyYjMzk7IGNoYXJhY3RlcnMsIHdpdGggdGhlIHBhcmVudCBzcGVjaW1lbiBwbGFjZWQgYWJvdmUgaXQmIzM5O3MgY2hpbGRyZW4uIFRoZSBib3hlcyBhbmQgbGlua3MgbXVzdCBub3Qgb3ZlcmxhcC4mbmJzcDs8XC9wPlxyXG5cclxuPHA+PGltZyBhbHQ9XCJcIiBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9hbnRhcnRpYzIucG5nXCIgc3R5bGU9XCJoZWlnaHQ6ODFweDsgd2lkdGg6NTM2cHhcIiBcLz48XC9wPlxyXG5cclxuPHA+SWYgdGhlIHBhcmVudCBoYXMgb25lIGNoaWxkLCBhIHBvaW50IHRvIHBvaW50IChsZWZ0bW9zdCBleGFtcGxlKSBsaW5rIGlzIHVzZWQuIElmIHRoZSBwYXJlbnQgaGFzIHR3byBjaGlsZHJlbiwgYSBicmFuY2hpbmcgbGluayBpcyB1c2VkLCB3aXRoIHRoZSBvbGRlciBjaGlsZCBvbiB0aGUgbGVmdCwgYW5kIHRoZSB5b3VuZ2VyIG9uIHRoZSByaWdodC4mbmJzcDs8XC9wPlxyXG5cclxuPHA+QnJhbmNoaW5nIGxpbmtzIG1heSBiZSBleHBhbmRlZCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24gYXMgbG9uZyBhcyB0aGUgbnVtYmVyIG9mICYjMzk7LSYjMzk7IGNoYXJhY3RlcnMgb24gYm90aCBzaWRlcyBzdGF5cyBlcXVhbC4gTGlua3MgY2Fubm90IGJlIGV4cGFuZGVkIHZlcnRpY2FsbHkuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkRvbiYjMzk7dCB3b3JyeSwgeW91IHdpbGwgbm90IGJlIGFza2VkIHRvIGRyYXcgdGhlIHRyZWUsIG9ubHkgZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyByZXF1aXJlZCB0byBkcmF3IGl0LiBTcGFjZSBjaGFyYWN0ZXJzIGFyZSBub3QgY291bnRlZCwgb25seSAmIzM5Oy0mIzM5OywgJiMzOTt8JiMzOTssICYjMzk7KyYjMzk7ICwgJiMzOTtvJiMzOTsgYW5kIGxldHRlcnMgaW4gdGhlIG5hbWVzLiZuYnNwOzxcL3A+XHJcbiIsImlucHV0IjoiPHA+VGhlIGZpcnN0IGxpbmUgb2YgaW5wdXQgY29udGFpbnMgb25lIGludGVnZXIgTiAoMSAmbGU7IE4gJmxlOyAzMDAgMDAwKSwgbnVtYmVyIG9mIHNwZWNpbWVucyBpbiB0aGUgbGFib3JhdG9yeS4mbmJzcDs8XC9wPlxyXG5cclxuPHA+VGhlIHNwZWNpbWVucyBhcmUgbWFya2VkIHdpdGggbnVtYmVycyAxIHRvIE4gaW4gdGhlIG9yZGVyIG9mIGJpcnRoLCB3aXRoIHRoZSBvbGRlc3QgbWFya2VkIDEgYW5kIHlvdW5nZXN0IG1hcmtlZCBOLiZuYnNwOzxcL3A+XHJcblxyXG48cD5UaGUgbmV4dCBOIGxpbmVzIGNvbnRhaW4gYmlydGggbm90ZXMgb2YgYWxsIHNwZWNpbWVucyBpbiB0aGUgb3JkZXIgb2YgYmlydGguIEVhY2ggc3BlY2ltZW4gKGV4Y2VwdCB0aGUgZmlyc3Qgd2hvc2UgcGFyZW50IGlzIHVua25vd24pIGlzIGRlc2NyaWJlZCB3aXRoIHR3byBwaWVjZXMgb2YgaW5mb3JtYXRpb246Jm5ic3A7PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+bmFtZSAtIHNlcXVlbmNlIG9mIGF0IG1vc3QgMjAgbG93ZXJjYXNlIGVuZ2xpc2ggYWxwaGFiZXQgY2hhcmFjdGVycyZuYnNwOzxcL2xpPlxyXG5cdDxsaT5wYXJlbnQgJm5kYXNoOyBvbmUgaW50ZWdlciBkZW5vdGluZyB0aGUgcGFyZW50IG9mIHRoaXMgc3BlY2ltZW4mbmJzcDs8XC9saT5cclxuPFwvdWw+XHJcbiIsIm91dHB1dCI6IjxwPlRoZSBmaXJzdCBhbmQgb25seSBsaW5lIG9mIGlucHV0IHNob3VsZCBjb250YWluIHRoZSBtaW5pbWFsIG51bWJlciBvZiBjaGFyYWN0ZXJzIG5lZWRlZCB0byBkcmF3IHRoZSBmYW1pbHkgdHJlZS48XC9wPlxyXG4iLCJoaW50IjoiPHByZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLS0rLS1vIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxhbnRvbnwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby0tKy0tbyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxyXG4gICAgICAgICAgICAgICAgICAgby0tLS0tLS0tLS0tLW8tLS0tLS0tLS0tLS1vIFxyXG4gICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IFxyXG4gICAgICAgICAgICAgICAgIG8tKy1vICAgICAgICAgICAgICAgICAgICAgby0rLS1vIFxyXG4gICAgICAgICAgICAgICAgIHxhbmF8ICAgICAgICAgICAgICAgICAgICAgfGx1a2F8IFxyXG4gICAgICAgICAgICAgICAgIG8tKy1vICAgICAgICAgICAgICAgICAgICAgby0rLS1vIFxyXG4gICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IFxyXG4gICAgICAgICAgIG8tLS0tLS0tby0tLS0tLS1vICAgICAgICAgICAgICBvLS1vLS1vIFxyXG4gICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICB8IFxyXG4gICAgICAgICBvLSstbyAgICAgICAgICBvLS0rLS1vICAgICAgICAgby0rLW9vLS0rLS1vIFxyXG4gICAgICAgICB8bWlhfCAgICAgICAgICB8bG92cm98ICAgICAgICAgfHRlYXx8amFrb3Z8IFxyXG4gICAgICAgICBvLSstbyAgICAgICAgICBvLS0rLS1vICAgICAgICAgby0rLW9vLS0rLS1vIFxyXG4gICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8IFxyXG4gICAgIG8tLS0tLW8tLS0tLW8gICAgICAgICBvICAgICAgICBvLS0tLS1vLS0tLS1vIFxyXG4gICAgIHwgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgICB8IFxyXG5vLS0tLSstLS0tbyBvLS0tLSstLS0tbyBvLS0rLS1vby0tLS0rLS0tLS1vIG8tLS0rLS0tbyBcclxufGFuYW1hcmlqYXwgfGV1c3RhaGlqZXwgfGxvdnJvfHxzZW1pcmFtaWRhfCB8ZG9taW5pa3wgXHJcbm8tLS0tKy0tLS1vIG8tLS0tKy0tLS1vIG8tLSstLW9vLS0tLSstLS0tLW8gby0tLSstLS1vIFxyXG48XC9wcmU+XHJcbiIsIm9yaWdpbmFsIjoiMSIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d