시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 165 22 18 26.471%

문제

20xx년, 경기과학고등학교는 국내 최대의 프로그래밍 대회인 ACM-ICPC Suwon Regional을 주최하게 되었다! 이번 수원 리저널에서는, 단순한 대회 주최 뿐만 아니라, 참가자들을 위한 수원시 버스 여행까지 계획되어 있고, 재현이는 이 버스 여행의 자세한 경로를 계획할 예정이다.

비록 2016년의 수원시는 정돈된 시가지하고는 거리가 멀지만, 20xx년의 수원시는 동-서 거리와 남-북 거리로 잘 정돈된 그리드 형태의 시가지를 가지고 있다. 서로 인접한 평행한 거리들은 100m 간격으로 떨어져 있다. 관광 명소는 항상 이러한 거리들의 교차로에 있는데, 재현이는 여행사를 통해서 각각의 관광 명소의 건설 시기 ai,j와 매력도 ci,j를 알고 있다.

재현이는 버스 여행을 통해 순서대로 여러 관광 명소를 방문할 계획이며, 이때의 매력도의 합을 최대화하려고 한다. 한편, 이번 버스 여행의 테마는 수원시의 역사이기 때문에, 건설 시기가 증가하는 (같아서는 안된다!) 순으로 관광 명소를 방문하려고 한다. 또한, 수원시의 경치는 너무나도 아름다워서, 사람들은 버스 안에서 수원시의 경치를 감상하는 것을 즐긴다. 때문에, 두 관광 명소 사이를 이동하는 와중에도 매력도가 100m마다 1씩 증가한다.

재현이는 아무 관광 명소에서 시작해서, 중간에 여러 관광 명소를 들린 후, 아무 관광 명소에서 도착하는 여행 계획을 만들려고 한다. 가능한 여행 계획 중, 매력도의 합의 최댓값은 얼마인가? 버스는 두 관광 명소 사이를 최단 거리로 움직이며, 버스가 움직이는 동안 지나쳤던 관광지는 방문했다고 치지 않는다.

입력

첫 번째 줄에는 동-서 거리와 남-북 거리의 개수인 n, m 이 주어진다. (2 ≤ n, m ≤ 1000)

이후 n 개의 줄에 각각의 관광 명소의 건설 시기가 주어진다. 이 중 i번째 줄에는 m개의 정수 ai,j (0 ≤ ai,j ≤ 106) 가 주어지며, i번 동-서 거리와 j번 남-북 거리의 교차로를 의미한다. ai,j = 0 일 경우, 해당 거리의 교차로에는 관광 명소가 없다. 관광 명소는 하나 이상 존재한다.

이후 n 개의 줄에 각각의 관광 명소의 매력도가 주어진다. 이 중 i번째 줄에는 m개의 정수 ci,j (0 ≤ ci,j ≤ 109) 가 주어지며, i번 동-서 거리와 j번 남-북 거리의 교차로에 있는 관광 명소의 매력도를 뜻한다. 만약에 해당 교차로에 관광 명소가 없다면, ci,j = 0 임이 보장된다.

출력

가능한 여행 계획 중, 매력도의 합의 최댓값을 출력하라.

예제 입력 1

4 5
1 2 6 0 2
1 3 4 0 4
0 0 4 0 3
2 2 0 0 4
1 3 5 0 2
2 8 1 0 2
0 0 3 0 4
0 5 0 0 3

예제 출력 1

39

힌트

재현이는 (2, 1) → (1, 5) → (2, 2) → (4, 5) → (1, 3) 순으로 관광 명소를 방문한다. 관광 명소의 매력도의 합은 2 + 2 + 8 + 3 + 5 = 20 이고, 이동 중에 쌓은 매력도의 합은 5 + 4 + 5 + 5 = 19 이다. 고로 총 매력도의 합은 39이다.

W3sicHJvYmxlbV9pZCI6Ijc5NzUiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWJjODRcdWMyYTQgXHVjNWVjXHVkNTg5IiwiZGVzY3JpcHRpb24iOiI8cD4yMHh4XHViMTQ0LCBcdWFjYmRcdWFlMzBcdWFjZmNcdWQ1NTlcdWFjZTBcdWI0ZjFcdWQ1NTlcdWFkNTBcdWIyOTQgXHVhZDZkXHViMGI0IFx1Y2Q1Y1x1YjMwMFx1Yzc1OCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3OThcdWJjMGQgXHViMzAwXHVkNjhjXHVjNzc4IEFDTS1JQ1BDIFN1d29uIFJlZ2lvbmFsXHVjNzQ0IFx1YzhmY1x1Y2Q1Y1x1ZDU1OFx1YWM4YyBcdWI0MThcdWM1YzhcdWIyZTQhIFx1Yzc3NFx1YmM4OCBcdWMyMThcdWM2ZDAgXHViOWFjXHVjODAwXHViMTEwXHVjNWQwXHVjMTFjXHViMjk0LCBcdWIyZThcdWMyMWNcdWQ1NWMgXHViMzAwXHVkNjhjIFx1YzhmY1x1Y2Q1YyBcdWJmZDBcdWI5Y2MgXHVjNTQ0XHViMmM4XHViNzdjLCBcdWNjMzhcdWFjMDBcdWM3OTBcdWI0ZTRcdWM3NDQgXHVjNzA0XHVkNTVjIFx1YzIxOFx1YzZkMFx1YzJkYyBcdWJjODRcdWMyYTQgXHVjNWVjXHVkNTg5XHVhZTRjXHVjOWMwIFx1YWNjNFx1ZDY4ZFx1YjQxOFx1YzViNCBcdWM3ODhcdWFjZTAsIFx1YzdhY1x1ZDYwNFx1Yzc3NFx1YjI5NCBcdWM3NzQgXHViYzg0XHVjMmE0IFx1YzVlY1x1ZDU4OVx1Yzc1OCBcdWM3OTBcdWMxMzhcdWQ1NWMgXHVhY2JkXHViODVjXHViOTdjIFx1YWNjNFx1ZDY4ZFx1ZDU2MCBcdWM2MDhcdWM4MTVcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YmU0NFx1Yjg1ZCAyMDE2XHViMTQ0XHVjNzU4IFx1YzIxOFx1YzZkMFx1YzJkY1x1YjI5NCBcdWM4MTVcdWIzYzhcdWI0MWMgXHVjMmRjXHVhYzAwXHVjOWMwXHVkNTU4XHVhY2UwXHViMjk0IFx1YWM3MFx1YjlhY1x1YWMwMCBcdWJhNDBcdWM5YzBcdWI5Y2MsIDIweHhcdWIxNDRcdWM3NTggXHVjMjE4XHVjNmQwXHVjMmRjXHViMjk0IFx1YjNkOS1cdWMxMWMgXHVhYzcwXHViOWFjXHVjNjQwIFx1YjBhOC1cdWJkODEgXHVhYzcwXHViOWFjXHViODVjIFx1Yzc5OCBcdWM4MTVcdWIzYzhcdWI0MWMgXHVhZGY4XHViOWFjXHViNGRjIFx1ZDYxNVx1ZDBkY1x1Yzc1OCBcdWMyZGNcdWFjMDBcdWM5YzBcdWI5N2MgXHVhYzAwXHVjOWMwXHVhY2UwIFx1Yzc4OFx1YjJlNC4gXHVjMTFjXHViODVjIFx1Yzc3OFx1YzgxMVx1ZDU1YyBcdWQzYzlcdWQ1ODlcdWQ1NWMgXHVhYzcwXHViOWFjXHViNGU0XHVjNzQwIDEwMG0gXHVhYzA0XHVhY2E5XHVjNzNjXHViODVjIFx1YjVhOFx1YzViNFx1YzgzOCBcdWM3ODhcdWIyZTQuIFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWIyOTQgXHVkNTZkXHVjMGMxIFx1Yzc3NFx1YjdlY1x1ZDU1YyBcdWFjNzBcdWI5YWNcdWI0ZTRcdWM3NTggXHVhZDUwXHVjYzI4XHViODVjXHVjNWQwIFx1Yzc4OFx1YjI5NFx1YjM3MCwgXHVjN2FjXHVkNjA0XHVjNzc0XHViMjk0IFx1YzVlY1x1ZDU4OVx1YzBhY1x1Yjk3YyBcdWQxYjVcdWQ1NzRcdWMxMWMgXHVhYzAxXHVhYzAxXHVjNzU4IFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWM3NTggXHVhYzc0XHVjMTI0IFx1YzJkY1x1YWUzMCBhPHN1Yj5pLGo8XC9zdWI+XHVjNjQwIFx1YjllNFx1YjgyNVx1YjNjNCBjPHN1Yj5pLGo8XC9zdWI+XHViOTdjIFx1YzU0Y1x1YWNlMCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzdhY1x1ZDYwNFx1Yzc3NFx1YjI5NCBcdWJjODRcdWMyYTQgXHVjNWVjXHVkNTg5XHVjNzQ0IFx1ZDFiNVx1ZDU3NCBcdWMyMWNcdWMxMWNcdWIzMDBcdWI4NWMgXHVjNWVjXHViN2VjIFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWI5N2MgXHViYzI5XHViYjM4XHVkNTYwIFx1YWNjNFx1ZDY4ZFx1Yzc3NFx1YmE3MCwgXHVjNzc0XHViNTRjXHVjNzU4IFx1YjllNFx1YjgyNVx1YjNjNFx1Yzc1OCBcdWQ1NjlcdWM3NDQgXHVjZDVjXHViMzAwXHVkNjU0XHVkNTU4XHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC4gXHVkNTVjXHVkM2I4LCBcdWM3NzRcdWJjODggXHViYzg0XHVjMmE0IFx1YzVlY1x1ZDU4OVx1Yzc1OCBcdWQxNGNcdWI5YzhcdWIyOTQgXHVjMjE4XHVjNmQwXHVjMmRjXHVjNzU4IFx1YzVlZFx1YzBhY1x1Yzc3NFx1YWUzMCBcdWI1NGNcdWJiMzhcdWM1ZDAsIFx1YWM3NFx1YzEyNCBcdWMyZGNcdWFlMzBcdWFjMDAgXHVjOTlkXHVhYzAwXHVkNTU4XHViMjk0IChcdWFjMTlcdWM1NDRcdWMxMWNcdWIyOTQgXHVjNTQ4XHViNDFjXHViMmU0ISkgXHVjMjFjXHVjNzNjXHViODVjIFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWI5N2MgXHViYzI5XHViYjM4XHVkNTU4XHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC4gXHViNjEwXHVkNTVjLCBcdWMyMThcdWM2ZDBcdWMyZGNcdWM3NTggXHVhY2JkXHVjZTU4XHViMjk0IFx1YjEwOFx1YmIzNFx1YjA5OFx1YjNjNCBcdWM1NDRcdWI5ODRcdWIyZTRcdWM2Y2NcdWMxMWMsIFx1YzBhY1x1Yjc4Y1x1YjRlNFx1Yzc0MCBcdWJjODRcdWMyYTQgXHVjNTQ4XHVjNWQwXHVjMTFjIFx1YzIxOFx1YzZkMFx1YzJkY1x1Yzc1OCBcdWFjYmRcdWNlNThcdWI5N2MgXHVhYzEwXHVjMGMxXHVkNTU4XHViMjk0IFx1YWM4M1x1Yzc0NCBcdWM5OTBcdWFlMzRcdWIyZTQuIFx1YjU0Y1x1YmIzOFx1YzVkMCwgXHViNDUwIFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGMgXHVjMGFjXHVjNzc0XHViOTdjIFx1Yzc3NFx1YjNkOVx1ZDU1OFx1YjI5NCBcdWM2NDBcdWM5MTFcdWM1ZDBcdWIzYzQgXHViOWU0XHViODI1XHViM2M0XHVhYzAwIDEwMG1cdWI5YzhcdWIyZTQgMVx1YzUyOSBcdWM5OWRcdWFjMDBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzdhY1x1ZDYwNFx1Yzc3NFx1YjI5NCBcdWM1NDRcdWJiMzQgXHVhZDAwXHVhZDExIFx1YmE4NVx1YzE4Y1x1YzVkMFx1YzExYyBcdWMyZGNcdWM3OTFcdWQ1NzRcdWMxMWMsIFx1YzkxMVx1YWMwNFx1YzVkMCBcdWM1ZWNcdWI3ZWMgXHVhZDAwXHVhZDExIFx1YmE4NVx1YzE4Y1x1Yjk3YyBcdWI0ZTRcdWI5YjAgXHVkNmM0LCBcdWM1NDRcdWJiMzQgXHVhZDAwXHVhZDExIFx1YmE4NVx1YzE4Y1x1YzVkMFx1YzExYyBcdWIzYzRcdWNjMjlcdWQ1NThcdWIyOTQgXHVjNWVjXHVkNTg5IFx1YWNjNFx1ZDY4ZFx1Yzc0NCBcdWI5Y2NcdWI0ZTRcdWI4MjRcdWFjZTAgXHVkNTVjXHViMmU0LiBcdWFjMDBcdWIyYTVcdWQ1NWMgXHVjNWVjXHVkNTg5IFx1YWNjNFx1ZDY4ZCBcdWM5MTEsIFx1YjllNFx1YjgyNVx1YjNjNFx1Yzc1OCBcdWQ1NjlcdWM3NTggXHVjZDVjXHViMzEzXHVhYzEyXHVjNzQwIFx1YzViY1x1YjljOFx1Yzc3OFx1YWMwMD8gXHViYzg0XHVjMmE0XHViMjk0IFx1YjQ1MCBcdWFkMDBcdWFkMTEgXHViYTg1XHVjMThjIFx1YzBhY1x1Yzc3NFx1Yjk3YyBcdWNkNWNcdWIyZTggXHVhYzcwXHViOWFjXHViODVjIFx1YzZjMFx1YzljMVx1Yzc3NFx1YmE3MCwgXHViYzg0XHVjMmE0XHVhYzAwIFx1YzZjMFx1YzljMVx1Yzc3NFx1YjI5NCBcdWIzZDlcdWM1NDggXHVjOWMwXHViMDk4XHVjY2U0XHViMzU4IFx1YWQwMFx1YWQxMVx1YzljMFx1YjI5NCBcdWJjMjlcdWJiMzhcdWQ1ODhcdWIyZTRcdWFjZTAgXHVjZTU4XHVjOWMwIFx1YzU0YVx1YjI5NFx1YjJlNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYiBcdWJjODhcdWM5ZjggXHVjOTA0XHVjNWQwXHViMjk0IFx1YjNkOS1cdWMxMWMgXHVhYzcwXHViOWFjXHVjNjQwIFx1YjBhOC1cdWJkODEgXHVhYzcwXHViOWFjXHVjNzU4IFx1YWMxY1x1YzIxOFx1Yzc3OCBuLCBtIFx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuICgyICZsZTsgbiwgbSAmbGU7IDEwMDApPFwvcD5cclxuXHJcbjxwPlx1Yzc3NFx1ZDZjNCBuIFx1YWMxY1x1Yzc1OCBcdWM5MDRcdWM1ZDAgXHVhYzAxXHVhYzAxXHVjNzU4IFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWM3NTggXHVhYzc0XHVjMTI0IFx1YzJkY1x1YWUzMFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1Yzc3NCBcdWM5MTEgaVx1YmM4OFx1YzlmOCBcdWM5MDRcdWM1ZDBcdWIyOTQgbVx1YWMxY1x1Yzc1OCBcdWM4MTVcdWMyMTggYTxzdWI+aSxqPFwvc3ViPiAoMCAmbGU7IGE8c3ViPmksajxcL3N1Yj4gJmxlOyAxMDxzdXA+NjxcL3N1cD4pIFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzBcdWJhNzAsIGlcdWJjODggXHViM2Q5LVx1YzExYyBcdWFjNzBcdWI5YWNcdWM2NDAgalx1YmM4OCBcdWIwYTgtXHViZDgxIFx1YWM3MFx1YjlhY1x1Yzc1OCBcdWFkNTBcdWNjMjhcdWI4NWNcdWI5N2MgXHVjNzU4XHViYmY4XHVkNTVjXHViMmU0LiBhPHN1Yj5pLGo8XC9zdWI+ID0gMCBcdWM3N2MgXHVhY2JkXHVjNmIwLCA8c3Ryb25nPlx1ZDU3NFx1YjJmOSBcdWFjNzBcdWI5YWNcdWM3NTggXHVhZDUwXHVjYzI4XHViODVjXHVjNWQwXHViMjk0IFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWFjMDAgXHVjNWM2XHViMmU0PFwvc3Ryb25nPi4gXHVhZDAwXHVhZDExIFx1YmE4NVx1YzE4Y1x1YjI5NCBcdWQ1NThcdWIwOTggXHVjNzc0XHVjMGMxIFx1Yzg3NFx1YzdhY1x1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNzc0XHVkNmM0IG4gXHVhYzFjXHVjNzU4IFx1YzkwNFx1YzVkMCBcdWFjMDFcdWFjMDFcdWM3NTggXHVhZDAwXHVhZDExIFx1YmE4NVx1YzE4Y1x1Yzc1OCBcdWI5ZTRcdWI4MjVcdWIzYzRcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWM3NzQgXHVjOTExIGlcdWJjODhcdWM5ZjggXHVjOTA0XHVjNWQwXHViMjk0IG1cdWFjMWNcdWM3NTggXHVjODE1XHVjMjE4IGM8c3ViPmksajxcL3N1Yj4gKDAgJmxlOyBjPHN1Yj5pLGo8XC9zdWI+ICZsZTsgMTA8c3VwPjk8XC9zdXA+KSBcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWMwXHViYTcwLCBpXHViYzg4IFx1YjNkOS1cdWMxMWMgXHVhYzcwXHViOWFjXHVjNjQwIGpcdWJjODggXHViMGE4LVx1YmQ4MSBcdWFjNzBcdWI5YWNcdWM3NTggXHVhZDUwXHVjYzI4XHViODVjXHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWFkMDBcdWFkMTEgXHViYTg1XHVjMThjXHVjNzU4IFx1YjllNFx1YjgyNVx1YjNjNFx1Yjk3YyBcdWI3M2JcdWQ1NWNcdWIyZTQuIFx1YjljY1x1YzU3ZFx1YzVkMCBcdWQ1NzRcdWIyZjkgXHVhZDUwXHVjYzI4XHViODVjXHVjNWQwIFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWFjMDAgXHVjNWM2XHViMmU0XHViYTc0LCBjPHN1Yj5pLGo8XC9zdWI+ID0gMCBcdWM3ODRcdWM3NzQgXHViY2Y0XHVjN2E1XHViNDFjXHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1YWMwMFx1YjJhNVx1ZDU1YyBcdWM1ZWNcdWQ1ODkgXHVhY2M0XHVkNjhkIFx1YzkxMSwgXHViOWU0XHViODI1XHViM2M0XHVjNzU4IFx1ZDU2OVx1Yzc1OCBcdWNkNWNcdWIzMTNcdWFjMTJcdWM3NDQgXHVjZDljXHViODI1XHVkNTU4XHViNzdjLjxcL3A+XHJcbiIsImhpbnQiOiI8cCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyXCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvb25saW5lanVkZ2VpbWFnZXMuczMtYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbVwvcHJvYmxlbVwvNzk3NVwvMi5wbmdcIiBzdHlsZT1cImhlaWdodDozNjBweDsgd2lkdGg6NDI4cHhcIiBcLz48XC9wPlxyXG5cclxuPHA+XHVjN2FjXHVkNjA0XHVjNzc0XHViMjk0ICgyLCAxKSAmcmFycjsgKDEsIDUpICZyYXJyOyAoMiwgMikgJnJhcnI7ICg0LCA1KSAmcmFycjsgKDEsIDMpIFx1YzIxY1x1YzczY1x1Yjg1YyBcdWFkMDBcdWFkMTEgXHViYTg1XHVjMThjXHViOTdjIFx1YmMyOVx1YmIzOFx1ZDU1Y1x1YjJlNC4gXHVhZDAwXHVhZDExIFx1YmE4NVx1YzE4Y1x1Yzc1OCBcdWI5ZTRcdWI4MjVcdWIzYzRcdWM3NTggXHVkNTY5XHVjNzQwIDIgKyAyICsgOCArIDMgKyA1ID0gMjAgXHVjNzc0XHVhY2UwLCBcdWM3NzRcdWIzZDkgXHVjOTExXHVjNWQwIFx1YzMxM1x1Yzc0MCBcdWI5ZTRcdWI4MjVcdWIzYzRcdWM3NTggXHVkNTY5XHVjNzQwIDUgKyA0ICsgNSArIDUgPSAxOSBcdWM3NzRcdWIyZTQuIFx1YWNlMFx1Yjg1YyBcdWNkMWQgXHViOWU0XHViODI1XHViM2M0XHVjNzU4IFx1ZDU2OVx1Yzc0MCAzOVx1Yzc3NFx1YjJlNC48XC9wPlxyXG4iLCJvcmlnaW5hbCI6IjAiLCJwcm9ibGVtX2xhbmdfY29kZSI6Ilx1ZDU1Y1x1YWQ2ZFx1YzViNCJ9LHsicHJvYmxlbV9pZCI6Ijc5NzUiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJCdXMgVHJpcCIsImRlc2NyaXB0aW9uIjoiPHA+Qnl0ZWFzYXIgd29ya3MgYXMgYSB0ZWFjaGVyIGluIGEgcHJpbWFyeSBzY2hvb2wgaW4gQnl0ZWJ1cmcuIFRoZSB3ZWF0aGVyIGlzIGN1cnJlbnRseSByZWFsbHkgbmljZSwgc28gQnl0ZWFzYXIgd291bGQgbGlrZSB0byB0YWtlIGhpcyBjbGFzcyBmb3IgYSBidXMgdHJpcCB0byBCeXRldG93biAmbWRhc2g7IHRoZSBjYXBpdGFsIG9mIEJ5dGVsYW5kLiBCeXRlYXNhciBoYXMgZGVjaWRlZCB0byBoaXJlIGEgdHJhdmVsIGFnZW5jeSB0byBwbGFuIHRoZSB0cmlwLjxcL3A+XHJcblxyXG48cD5UaGUgc3RyZWV0cyBpbiBCeXRldG93biBmb3JtIGEgcmVndWxhciBncmlkIG9mIEVhc3QtV2VzdCBhbmQgTm9ydGgtU291dGggc3RyZWV0cy4gVGhlIGRpc3RhbmNlIGJldHdlZW4gYW55IHBhaXIgb2YgYWRqYWNlbnQgcGFyYWxsZWwgc3RyZWV0cyBpcyBlcXVhbCB0byAxIGtpbG9tZXRlci4gVGhlcmUgYXJlIHRvdXJpc3QgYXR0cmFjdGlvbnMgbG9jYXRlZCBhdCBzZXZlcmFsIGp1bmN0aW9ucy4gQnl0ZWFuIGd1aWRlcyBoYXZlIGFzc2lnbmVkIGF0dHJhY3RpdmVuZXNzIGNvZWZmaWNpZW50IHRvIGVhY2ggdG91cmlzdCBhdHRyYWN0aW9uOiB0aGUgZ3JlYXRlciB0aGUgYXR0cmFjdGl2ZW5lc3MsIHRoZSBtb3JlIGludGVyZXN0aW5nIGlzIHRoZSBhdHRyYWN0aW9uIGZvciB0aGUgdmlzaXRvcnMuIEJ5dGVhc2FyIGtub3dzIHRoYXQgdGhlIHB1cGlscyBpbiB0aGUgY2xhc3MgaGUgdGVhY2hlcyBnZXQgYm9yZWQgZWFzaWx5LiBCZWNhdXNlIG9mIHRoYXQgaGUgcmVxdWlyZXMgdGhhdCB0aGUgYXR0cmFjdGlvbnMgdmlzaXRlZCBvbiB0aGUgdHJpcCBoYXZlIGluY3JlYXNpbmcgYXR0cmFjdGl2ZW5lc3MuPFwvcD5cclxuXHJcbjxwPlRoZSB0cmF2ZWwgYWdlbmN5IGhhcyBhZ3JlZWQgdG8gQnl0ZWFzYXImcnNxdW87cyByZXF1aXJlbWVudHMuIEluIGFkZGl0aW9uLCB0aGUgYWdlbmN5IHdvdWxkIGxpa2UgdG8gZWFybiBhcyBtdWNoIG1vbmV5IGFzIHBvc3NpYmxlIGZvciBvcmdhbml6aW5nIHRoZSB0cmlwLiBUaGUgYWdlbmN5IGdldHMgYSBmaXhlZCByYXRlIG9mIDEgYnl0aGFsZXIgZm9yIGVhY2gga2lsb21ldGVyIG9mIHRoZSB0cmlwLiBUaGUgYnVzIGFsd2F5cyBjaG9vc2VzIHRoZSBzaG9ydGVzdCByb3V0ZSBhbG9uZyB0aGUgc3RyZWV0cyBvZiBCeXRldG93biB3aGVuIGRyaXZpbmcgYmV0d2VlbiB0aGUgYXR0cmFjdGlvbnMgb24gdGhlIHRyaXAuIE1vcmVvdmVyIHRoZSBhZ2VuY3kgZ2V0cyBhZGRpdGlvbmFsIG1vbmV5IGZyb20gdGhlIG1hbmFnZXJzIG9mIGF0dHJhY3Rpb25zIHRoYXQgYXJlIHZpc2l0ZWQgYWxvbmcgdGhlIHRyaXAuPFwvcD5cclxuXHJcbjxwPkhlbHAgdGhlIGFnZW5jeSBwbGFuIGEgdHJpcCB0aGF0IHNhdGlzZmllcyBCeXRlYXNhciZyc3F1bztzIHJlcXVpcmVtZW50cyBhbmQgZ3JhbnRzIHRoZSBhZ2VuY3kgdGhlIGhpZ2hlc3QgcHJvZml0LiBQbGVhc2Ugbm90ZSB0aGF0IGRyaXZpbmcgbmV4dCB0byBhIHRvdXJpc3QgYXR0cmFjdGlvbiAod2l0aG91dCBzdG9wcGluZykgZG9lcyBub3QgY291bnQgYXMgdmlzaXRpbmcgdGhlIGF0dHJhY3Rpb24uPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSBvZiBpbnB1dCBjb250YWlucyB0d28gaW50ZWdlcnMgbiBhbmQgbSAoMiAmbGU7IG4sIG0gJmxlOyAxMDAwKSwgdGhlIG51bWJlciBvZiBFYXN0LVdlc3Qgc3RyZWV0cyBhbmQgdGhlIG51bWJlciBvZiBOb3J0aC1Tb3V0aCBzdHJlZXRzLjxcL3A+XHJcblxyXG48cD5uIGxpbmVzIGZvbGxvdyB3aXRoIGEgZGVzY3JpcHRpb24gb2YgdGhlIHRvdXJpc3QgYXR0cmFjdGlvbnMgaW4gQnl0ZXRvd24uIFRoZSBpLXRoIG9mIHRoZXNlIGxpbmVzIGhvbGRzIG0gaW50ZWdlcnMgdzxzdWI+aSxqPFwvc3ViPiAoMCAmbGU7IHc8c3ViPmksajxcL3N1Yj4gJmxlOyAxMDxzdXA+NjxcL3N1cD4pIHRoYXQgZ2l2ZSB0aGUgYXR0cmFjdGl2ZW5lc3Mgb2YgZWFjaCBvZiB0aGUgYXR0cmFjdGlvbnMgbG9jYXRlZCBhdCB0aGUganVuY3Rpb25zIG9mIHRoZSBpLXRoIEVhc3QtV2VzdCBzdHJlZXQgd2l0aCB0aGUgcmVzcGVjdGl2ZSBOb3J0aC1Tb3V0aCBzdHJlZXRzLiBBdHRyYWN0aXZlbmVzcyAwIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gdG91cmlzdCBhdHRyYWN0aW9uIGF0IHRoZSByZXNwZWN0aXZlIGp1bmN0aW9uLiBZb3UgY2FuIGFzc3VtZSB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSB0b3VyaXN0IGF0dHJhY3Rpb24gaW4gQnl0ZXRvd24uPFwvcD5cclxuXHJcbjxwPkVhY2ggb2YgdGhlIGZvbGxvd2luZyBuIGxpbmVzIGhvbGRzIG4gaW50ZWdlcnMgYzxzdWI+aSxqPFwvc3ViPiAoMCAmbGU7IGM8c3ViPmksajxcL3N1Yj4gJmxlOyAxMDxzdXA+OTxcL3N1cD4pLiBUaGUgbnVtYmVyIGM8c3ViPmksajxcL3N1Yj4sIHRoYXQgaXMsIHRoZSBqLXRoIG51bWJlciBpbiB0aGUgaS10aCBvZiB0aGUgY29uc2lkZXJlZCBsaW5lcywgcmVwcmVzZW50cyB0aGUgYW1vdW50IG9mIG1vbmV5IChpbiBieXRoYWxlcnMpIHRoYXQgdGhlIGFnZW5jeSByZWNlaXZlcyBmb3IgbWFraW5nIGEgdHJpcCBsZWFkIHRocm91Z2ggdGhlIHRvdXJpc3QgYXR0cmFjdGlvbiBkZXNjcmliZWQgYnkgdGhlIGF0dHJhY3RpdmVuZXNzIHc8c3ViPmksajxcL3N1Yj4uIElmIHRoZXJlIGlzIG5vIHRvdXJpc3QgYXR0cmFjdGlvbiBhdCBhIGp1bmN0aW9uLCB0aGUgY29ycmVzcG9uZGluZyBudW1iZXIgY2ksaiBlcXVhbHMgMC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5UaGUgb25seSBsaW5lIG9mIG91dHB1dCBzaG91bGQgY29udGFpbiBvbmUgaW50ZWdlcjogdGhlIG1heGltdW0gcHJvZml0IChpbiBieXRoYWxlcnMpIHRoYXQgdGhlIGFnZW5jeSBjYW4gbWFrZSBmb3Igb3JnYW5pemluZyBhIHRyaXAgbGVhZGluZyB0aHJvdWdoIGEgbnVtYmVyIG9mIGF0dHJhY3Rpb25zIHdpdGggc3RyaWN0bHkgaW5jcmVhc2luZyBhdHRyYWN0aXZlbmVzcy48XC9wPlxyXG4iLCJoaW50IjoiPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvb25saW5lanVkZ2VpbWFnZXMuczMtYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbVwvcHJvYmxlbVwvNzk3NVwvMS5wbmdcIiBzdHlsZT1cImhlaWdodDoyNzBweDsgd2lkdGg6MzMwcHhcIiBcLz48XC9wPlxyXG5cclxuPHA+RXhwbGFuYXRpb24gb2YgdGhlIGV4YW1wbGU6IFRoZSBudW1iZXJzIGluIHRoZSBqdW5jdGlvbnMgcmVwcmVzZW50IHRoZSBhdHRyYWN0aXZlbmVzcyBvZiB0aGUgcmVzcGVjdGl2ZSBhdHRyYWN0aW9ucy4gVGhlIG51bWJlcnMgd3JpdHRlbiBpbiBpdGFsaWMgcmVwcmVzZW50IHRoZSBwcm9maXQgb2YgdGhlIHRyYXZlbCBhZ2VuY3kgZm9yIG1ha2luZyBhIHRyaXAgbGVhZCB0aHJvdWdoIHRoZSByZXNwZWN0aXZlIGF0dHJhY3Rpb25zLiBUaGUgbW9zdCBwcm9maXRhYmxlIHRyaXAgZm9yIHRoZSBhZ2VuY3kgaXMgaGlnaGxpZ2h0ZWQgd2l0aCBjaXJjbGVzOiB0aGUgYWdlbmN5IHJlY2VpdmVzIDIsIDIsIDgsIDMgYW5kIDUgYnl0aGFsZXJzIGZvciB0aGVzZSBhdHRyYWN0aW9ucyByZXNwZWN0aXZlbHksIGFuZCBtb3Jlb3ZlciBpdCByZWNlaXZlcyAxOSBieXRoYWxlcnMgYXMgdGhlIGJ1cyBmYXJlLjxcL3A+XHJcbiIsIm9yaWdpbmFsIjoiMSIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d