시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 512 MB 49 27 20 47.619%

문제

아이잔은 N개의 정수 S[0], S[1], ..., S[N-1]로 이루어진 수열 S를 가지고 있다. 수열은 0부터 N-1까지 서로 다른 N개의 정수로 이루어져있다. 아이잔은 두 수의 위치를 바꾸며 이 수열을 오름차순으로 정렬하려고 한다. 아이잔의 오랜 친구인 에르맥도 수열에서 두 수를 바꾸는데, 아이잔과는 다르게 정렬하려는 목적 없이 아무렇게나 바꾼다.

아이잔과 에르맥은 라운드를 거치며 수열을 조작한다. 각 라운드마다, 에르맥이 먼저 위치 바꾸기를 하고 그 다음 아이잔이 위치 바꾸기를 한다. 위치 바꾸기에 대해서 좀 더 자세히 말하자면, 바꿀 두 위치를 정하고 그 위치에 있는 값을 맞바꾼다. 이때 정하는 두 위치가 다를 필요는 없다. 만약 정한 두 위치가 같으면 수열에 아무런 변화가 없다.

아이잔은 에르맥이 수열 S를 정렬하려는 목적 없이 아무렇게나 바꾼다는 사실을 알고 있다. 더 나아가서 라운드를 시작하기 전부터 에르맥이 어떻게 위치 바꾸기를 할 건지 미리 다 알고 있다. 에르맥은 M 라운드에 대한 계획을 가지고 있다. 라운드의 번호를 순서대로 0 부터 M-1 까지 매겼을 때, i번 라운드에서 에르맥이 바꿀 두 위치는 X[i]와 Y[i]이다.

아이잔은 수열 S를 오름차순으로 정렬하길 원한다. 각 라운드를 시작하기 전에 만약 수열이 이미 정렬되어 있다면 라운드를 더 이상 진행하지 않고 멈출 수 있다. 처음 수열 S에 대한 정보와 에르맥이 M 라운드 동안 어떻게 위치 바꾸기를 할지에 대한 정보가 주어졌을 때, 아이잔이 어떻게 위치 바꾸기를 해야할지 구하시오. 추가적으로, 어떤 부분 문제에 대해서는 가능한 가장 적은 라운드 만에 정렬을 해야할 수도 있다. 언제나 M 라운드 안에 정렬이 가능하도록 입력이 주어진다.

만약 어떤 라운드에서 에르맥이 위치 바꾸기를 한 뒤 수열이 정렬되어 있다면, 아이잔은 같은 두 위치를 맞바꿔주면 된다 (예를 들어 0번 위치와 0번 위치). 그러면 이 라운드의 끝에서 수열 S는 정렬되고 아이잔은 멈출 수 있다. 또한 처음부터 수열 S가 정렬되어 있다면 필요한 라운드의 최소 수는 0 이다.

예제 1

  • 처음 수열 S = 4, 3, 2, 1, 0
  • 에르맥은 M = 6라운드를 진행하려 한다.
  • 에르맥이 바꿀 위치에 대한 정보 X와 Y는 X = 0, 1, 2, 3, 0, 1이며, Y = 1, 2, 3, 4, 1, 2 이다. 다르게 얘기하면 에르맥은 (0, 1), (1,2), (2,3), (3,4), (0, 1) 그리고 (1, 2) 순서대로 위치를 바꿀 계획이다.

이러한 상황에서 아이잔은 3 라운드 만에 수열 S를 0, 1, 2, 3, 4로 정렬할 수 있다. 아이잔은 (0, 4), (1, 3) 그리고 (3, 4) 순서대로 위치 바꾸기를 하면 된다.

아래 표는 각 위치 바꾸기마다 수열 S의 내용이 어떻게 바뀌는지 나타내고 있다.

라운드 사람 바꿀 두 위치 수열
초기     4, 3, 2, 1, 0
0 에르맥 (0, 1) 3, 4, 2, 1, 0
0 아이잔 (0, 4) 0, 4, 2, 1, 3
1 에르맥 (1, 2) 0, 2, 4, 1, 3
1 아이잔 (1, 3) 0, 1, 4, 2, 3
2 에르맥 (2, 3) 0, 1, 2, 4, 3
2 아이잔 (3, 4) 0, 1, 2, 3, 4

예제 2

  • 처음 수열 S = 3, 0, 4, 2, 1
  • 에르맥은 M = 5라운드를 진행하려 한다.
  • 에르맥은 (1, 1), (4, 0), (2, 3), (1, 4) 그리고 (0, 4) 순서대로 위치를 바꿀 계획이다.

이러한 상황에서 아이잔은 3 라운드 만에 수열 S를 정렬할 수 있다. 아이잔은 (1, 4), (4, 2) 그리고 (2, 2) 순서대로 위치 바꾸기를 하면 된다.

아래 표는 각 위치 바꾸기마다 수열 S의 내용이 어떻게 바뀌는지 나타내고 있다.

라운드 사람 바꿀 두 위치 수열
초기     3, 0, 4, 2, 1
0 에르맥 (1, 1) 3, 0, 4, 2, 1
0 아이잔 (1, 4) 3, 1, 4, 2, 0
1 에르맥 (4, 0) 0, 1, 4, 2, 3
1 아이잔 (4, 2) 0, 1, 3, 2, 4
2 에르맥 (2, 3) 0, 1, 2, 3, 4
2 아이잔 (2, 2) 0, 1, 2, 3, 4

수열 S와 정수 M, 그리고 X, Y가 주어진다.

아이잔이 수열 S를 정렬하기 위해 어떻게 위치를 바꿀지에 대해 계산하자.

다음 함수 findSwapPairs를 구현해야 한다.

  • findSwapPairs(N, S, M, X, Y, P, Q) — 이 함수는 단 한 번 그레이더에 의해 호출된다.
    • N: 수열 S의 크기
    • S: 처음 수열 S에 대한 정보를 가지고 있는 정수 배열
    • M: 에르맥이 계획한 라운드 수
    • X, Y: 크기가 M인 정수 배열들. 0 ≤ i ≤ M-1 인 i에 대해 i번 라운드에서 에르맥은 두 위치 X[i], Y[i]에 있는 수를 맞바꾼다.
    • P, Q: 정수 배열들. 아이잔이 바꿀 위치에 대한 정보를 위해 필요한 배열이다. R이 여러분이 구한 정렬하기 위해 필요한 라운드 수라고 하자. 0과 R-1 사이의 i에 대해서 i번 라운드에 아이잔이 고른 맞바꿀 두 위치를 P[i]와 Q[i]에 저장한다. 배열 P와 Q는 이미 크기 M으로 메모리가 잡혀있다.
    • 이 함수는 위에 정의된 R 값을 리턴해야 한다.

M라운드 혹은 보다 더 일찍 정렬 가능하도록 입력이 주어진다.

입력

  • 1번 줄: N
  • 2번 줄: S[0] … S[N - 1]
  • 3번 줄: M
  • 4 ~ M + 3번 줄: X[i] Y[i]

1 ≤ N ≤ 500, M = 30N, R ≤ M

출력

findSwapPairs가 리턴한 값을 출력한다.

다음 양식에 따라 출력한다:

  • 1번 줄: findSwapPairs의 리턴값 R
  • 2+i번 줄 (0 ≤ i < R): P[i] Q[i]

예제 입력 1

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

예제 출력 1

3
0 4
1 3
3 4
W3sicHJvYmxlbV9pZCI6IjEwOTIzIiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVjODE1XHViODJjXHVkNTU4XHVhZTMwIiwiZGVzY3JpcHRpb24iOiI8cD5cdWM1NDRcdWM3NzRcdWM3OTRcdWM3NDAgTlx1YWMxY1x1Yzc1OCBcdWM4MTVcdWMyMTggU1swXSwgU1sxXSwgLi4uLCBTW04tMV1cdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjOWM0IFx1YzIxOFx1YzVmNCBTXHViOTdjIFx1YWMwMFx1YzljMFx1YWNlMCBcdWM3ODhcdWIyZTQuIFx1YzIxOFx1YzVmNFx1Yzc0MCAwXHViZDgwXHVkMTMwIE4tMVx1YWU0Y1x1YzljMCBcdWMxMWNcdWI4NWMgXHViMmU0XHViOTc4IE5cdWFjMWNcdWM3NTggXHVjODE1XHVjMjE4XHViODVjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzgzOFx1Yzc4OFx1YjJlNC4gXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzQwIFx1YjQ1MCBcdWMyMThcdWM3NTggXHVjNzA0XHVjZTU4XHViOTdjIFx1YmMxNFx1YWZiOFx1YmE3MCBcdWM3NzQgXHVjMjE4XHVjNWY0XHVjNzQ0IFx1YzYyNFx1Yjk4NFx1Y2MyOFx1YzIxY1x1YzczY1x1Yjg1YyBcdWM4MTVcdWI4MmNcdWQ1NThcdWI4MjRcdWFjZTAgXHVkNTVjXHViMmU0LiBcdWM1NDRcdWM3NzRcdWM3OTRcdWM3NTggXHVjNjI0XHViNzljIFx1Y2U1Y1x1YWQ2Y1x1Yzc3OCBcdWM1ZDBcdWI5NzRcdWI5ZTVcdWIzYzQgXHVjMjE4XHVjNWY0XHVjNWQwXHVjMTFjIFx1YjQ1MCBcdWMyMThcdWI5N2MgXHViYzE0XHVhZmI4XHViMjk0XHViMzcwLCBcdWM1NDRcdWM3NzRcdWM3OTRcdWFjZmNcdWIyOTQgXHViMmU0XHViOTc0XHVhYzhjIFx1YzgxNVx1YjgyY1x1ZDU1OFx1YjgyNFx1YjI5NCBcdWJhYTlcdWM4MDEgXHVjNWM2XHVjNzc0IFx1YzU0NFx1YmIzNFx1YjgwN1x1YWM4Y1x1YjA5OCBcdWJjMTRcdWFmYmNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzU0NFx1Yzc3NFx1Yzc5NFx1YWNmYyBcdWM1ZDBcdWI5NzRcdWI5ZTVcdWM3NDAgXHViNzdjXHVjNmI0XHViNGRjXHViOTdjIFx1YWM3MFx1Y2U1OFx1YmE3MCBcdWMyMThcdWM1ZjRcdWM3NDQgXHVjODcwXHVjNzkxXHVkNTVjXHViMmU0LiBcdWFjMDEgXHViNzdjXHVjNmI0XHViNGRjXHViOWM4XHViMmU0LCBcdWM1ZDBcdWI5NzRcdWI5ZTVcdWM3NzQgXHViYTNjXHVjODAwIFx1YzcwNFx1Y2U1OCBcdWJjMTRcdWFmYjhcdWFlMzBcdWI5N2MgXHVkNTU4XHVhY2UwIFx1YWRmOCBcdWIyZTRcdWM3NGMgXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzc0IFx1YzcwNFx1Y2U1OCBcdWJjMTRcdWFmYjhcdWFlMzBcdWI5N2MgXHVkNTVjXHViMmU0LiBcdWM3MDRcdWNlNTggXHViYzE0XHVhZmI4XHVhZTMwXHVjNWQwIFx1YjMwMFx1ZDU3NFx1YzExYyBcdWM4ODAgXHViMzU0IFx1Yzc5MFx1YzEzOFx1ZDc4OCBcdWI5ZDBcdWQ1NThcdWM3OTBcdWJhNzQsIFx1YmMxNFx1YWZjMCBcdWI0NTAgXHVjNzA0XHVjZTU4XHViOTdjIFx1YzgxNVx1ZDU1OFx1YWNlMCBcdWFkZjggXHVjNzA0XHVjZTU4XHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWFjMTJcdWM3NDQgXHViOWRlXHViYzE0XHVhZmJjXHViMmU0LiBcdWM3NzRcdWI1NGMgXHVjODE1XHVkNTU4XHViMjk0IFx1YjQ1MCBcdWM3MDRcdWNlNThcdWFjMDAgXHViMmU0XHViOTdjIFx1ZDU0NFx1YzY5NFx1YjI5NCBcdWM1YzZcdWIyZTQuIFx1YjljY1x1YzU3ZCBcdWM4MTVcdWQ1NWMgXHViNDUwIFx1YzcwNFx1Y2U1OFx1YWMwMCBcdWFjMTlcdWM3M2NcdWJhNzQgXHVjMjE4XHVjNWY0XHVjNWQwIFx1YzU0NFx1YmIzNFx1YjdmMCBcdWJjYzBcdWQ2NTRcdWFjMDAgXHVjNWM2XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM1NDRcdWM3NzRcdWM3OTRcdWM3NDAgXHVjNWQwXHViOTc0XHViOWU1XHVjNzc0IFx1YzIxOFx1YzVmNCBTXHViOTdjIFx1YzgxNVx1YjgyY1x1ZDU1OFx1YjgyNFx1YjI5NCBcdWJhYTlcdWM4MDEgXHVjNWM2XHVjNzc0IFx1YzU0NFx1YmIzNFx1YjgwN1x1YWM4Y1x1YjA5OCBcdWJjMTRcdWFmYmNcdWIyZTRcdWIyOTQgXHVjMGFjXHVjMmU0XHVjNzQ0IFx1YzU0Y1x1YWNlMCBcdWM3ODhcdWIyZTQuIFx1YjM1NCBcdWIwOThcdWM1NDRcdWFjMDBcdWMxMWMgXHViNzdjXHVjNmI0XHViNGRjXHViOTdjIFx1YzJkY1x1Yzc5MVx1ZDU1OFx1YWUzMCBcdWM4MDRcdWJkODBcdWQxMzAgXHVjNWQwXHViOTc0XHViOWU1XHVjNzc0IFx1YzViNFx1YjViYlx1YWM4YyBcdWM3MDRcdWNlNTggXHViYzE0XHVhZmI4XHVhZTMwXHViOTdjIFx1ZDU2MCBcdWFjNzRcdWM5YzAgXHViYmY4XHViOWFjIFx1YjJlNCBcdWM1NGNcdWFjZTAgXHVjNzg4XHViMmU0LiBcdWM1ZDBcdWI5NzRcdWI5ZTVcdWM3NDAgTSBcdWI3N2NcdWM2YjRcdWI0ZGNcdWM1ZDAgXHViMzAwXHVkNTVjIFx1YWNjNFx1ZDY4ZFx1Yzc0NCBcdWFjMDBcdWM5YzBcdWFjZTAgXHVjNzg4XHViMmU0LiBcdWI3N2NcdWM2YjRcdWI0ZGNcdWM3NTggXHViYzg4XHVkNjM4XHViOTdjIFx1YzIxY1x1YzExY1x1YjMwMFx1Yjg1YyAwIFx1YmQ4MFx1ZDEzMCBNLTEgXHVhZTRjXHVjOWMwIFx1YjllNFx1YWNiY1x1Yzc0NCBcdWI1NGMsIGlcdWJjODggXHViNzdjXHVjNmI0XHViNGRjXHVjNWQwXHVjMTFjIFx1YzVkMFx1Yjk3NFx1YjllNVx1Yzc3NCBcdWJjMTRcdWFmYzAgXHViNDUwIFx1YzcwNFx1Y2U1OFx1YjI5NCBYW2ldXHVjNjQwIFlbaV1cdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzU0NFx1Yzc3NFx1Yzc5NFx1Yzc0MCBcdWMyMThcdWM1ZjQgU1x1Yjk3YyBcdWM2MjRcdWI5ODRcdWNjMjhcdWMyMWNcdWM3M2NcdWI4NWMgXHVjODE1XHViODJjXHVkNTU4XHVhZTM4IFx1YzZkMFx1ZDU1Y1x1YjJlNC4gXHVhYzAxIFx1Yjc3Y1x1YzZiNFx1YjRkY1x1Yjk3YyBcdWMyZGNcdWM3OTFcdWQ1NThcdWFlMzAgXHVjODA0XHVjNWQwIFx1YjljY1x1YzU3ZCBcdWMyMThcdWM1ZjRcdWM3NzQgXHVjNzc0XHViYmY4IFx1YzgxNVx1YjgyY1x1YjQxOFx1YzViNCBcdWM3ODhcdWIyZTRcdWJhNzQgXHViNzdjXHVjNmI0XHViNGRjXHViOTdjIFx1YjM1NCBcdWM3NzRcdWMwYzEgXHVjOWM0XHVkNTg5XHVkNTU4XHVjOWMwIFx1YzU0YVx1YWNlMCBcdWJhNDhcdWNkOWMgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVjYzk4XHVjNzRjIFx1YzIxOFx1YzVmNCBTXHVjNWQwIFx1YjMwMFx1ZDU1YyBcdWM4MTVcdWJjZjRcdWM2NDAgXHVjNWQwXHViOTc0XHViOWU1XHVjNzc0IE0gXHViNzdjXHVjNmI0XHViNGRjIFx1YjNkOVx1YzU0OCBcdWM1YjRcdWI1YmJcdWFjOGMgXHVjNzA0XHVjZTU4IFx1YmMxNFx1YWZiOFx1YWUzMFx1Yjk3YyBcdWQ1NjBcdWM5YzBcdWM1ZDAgXHViMzAwXHVkNTVjIFx1YzgxNVx1YmNmNFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM4NGNcdWM3NDQgXHViNTRjLCBcdWM1NDRcdWM3NzRcdWM3OTRcdWM3NzQgXHVjNWI0XHViNWJiXHVhYzhjIFx1YzcwNFx1Y2U1OCBcdWJjMTRcdWFmYjhcdWFlMzBcdWI5N2MgXHVkNTc0XHVjNTdjXHVkNTYwXHVjOWMwIFx1YWQ2Y1x1ZDU1OFx1YzJkY1x1YzYyNC4gXHVjZDk0XHVhYzAwXHVjODAxXHVjNzNjXHViODVjLCBcdWM1YjRcdWI1YTQgXHViZDgwXHViZDg0IFx1YmIzOFx1YzgxY1x1YzVkMCBcdWIzMDBcdWQ1NzRcdWMxMWNcdWIyOTQgXHVhYzAwXHViMmE1XHVkNTVjIFx1YWMwMFx1YzdhNSBcdWM4MDFcdWM3NDAgXHViNzdjXHVjNmI0XHViNGRjIFx1YjljY1x1YzVkMCBcdWM4MTVcdWI4MmNcdWM3NDQgXHVkNTc0XHVjNTdjXHVkNTYwIFx1YzIxOFx1YjNjNCBcdWM3ODhcdWIyZTQuIFx1YzViOFx1YzgxY1x1YjA5OCBNIFx1Yjc3Y1x1YzZiNFx1YjRkYyBcdWM1NDhcdWM1ZDAgXHVjODE1XHViODJjXHVjNzc0IFx1YWMwMFx1YjJhNVx1ZDU1OFx1YjNjNFx1Yjg1ZCBcdWM3ODVcdWI4MjVcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWI5Y2NcdWM1N2QgXHVjNWI0XHViNWE0IFx1Yjc3Y1x1YzZiNFx1YjRkY1x1YzVkMFx1YzExYyBcdWM1ZDBcdWI5NzRcdWI5ZTVcdWM3NzQgXHVjNzA0XHVjZTU4IFx1YmMxNFx1YWZiOFx1YWUzMFx1Yjk3YyBcdWQ1NWMgXHViNGE0IFx1YzIxOFx1YzVmNFx1Yzc3NCBcdWM4MTVcdWI4MmNcdWI0MThcdWM1YjQgXHVjNzg4XHViMmU0XHViYTc0LCBcdWM1NDRcdWM3NzRcdWM3OTRcdWM3NDAgXHVhYzE5XHVjNzQwIFx1YjQ1MCBcdWM3MDRcdWNlNThcdWI5N2MgXHViOWRlXHViYzE0XHVhZmQ0XHVjOGZjXHViYTc0IFx1YjQxY1x1YjJlNCAoXHVjNjA4XHViOTdjIFx1YjRlNFx1YzViNCAwXHViYzg4IFx1YzcwNFx1Y2U1OFx1YzY0MCAwXHViYzg4IFx1YzcwNFx1Y2U1OCkuIFx1YWRmOFx1YjdlY1x1YmE3NCBcdWM3NzQgXHViNzdjXHVjNmI0XHViNGRjXHVjNzU4IFx1YjA1ZFx1YzVkMFx1YzExYyBcdWMyMThcdWM1ZjQgU1x1YjI5NCBcdWM4MTVcdWI4MmNcdWI0MThcdWFjZTAgXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzQwIFx1YmE0OFx1Y2Q5YyBcdWMyMTggXHVjNzg4XHViMmU0LiBcdWI2MTBcdWQ1NWMgXHVjYzk4XHVjNzRjXHViZDgwXHVkMTMwIFx1YzIxOFx1YzVmNCBTXHVhYzAwIFx1YzgxNVx1YjgyY1x1YjQxOFx1YzViNCBcdWM3ODhcdWIyZTRcdWJhNzQgXHVkNTQ0XHVjNjk0XHVkNTVjIFx1Yjc3Y1x1YzZiNFx1YjRkY1x1Yzc1OCBcdWNkNWNcdWMxOGMgXHVjMjE4XHViMjk0IDAgXHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWM4MWMgMTxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPlx1Y2M5OFx1Yzc0YyBcdWMyMThcdWM1ZjQgUyA9IDQsIDMsIDIsIDEsIDA8XC9saT5cclxuXHQ8bGk+XHVjNWQwXHViOTc0XHViOWU1XHVjNzQwIE0gPSA2XHViNzdjXHVjNmI0XHViNGRjXHViOTdjIFx1YzljNFx1ZDU4OVx1ZDU1OFx1YjgyNCBcdWQ1NWNcdWIyZTQuPFwvbGk+XHJcblx0PGxpPlx1YzVkMFx1Yjk3NFx1YjllNVx1Yzc3NCBcdWJjMTRcdWFmYzAgXHVjNzA0XHVjZTU4XHVjNWQwIFx1YjMwMFx1ZDU1YyBcdWM4MTVcdWJjZjQgWFx1YzY0MCBZXHViMjk0IFggPSAwLCAxLCAyLCAzLCAwLCAxXHVjNzc0XHViYTcwLCBZID0gMSwgMiwgMywgNCwgMSwgMiBcdWM3NzRcdWIyZTQuIFx1YjJlNFx1Yjk3NFx1YWM4YyBcdWM1OThcdWFlMzBcdWQ1NThcdWJhNzQgXHVjNWQwXHViOTc0XHViOWU1XHVjNzQwICgwLCAxKSwgKDEsMiksICgyLDMpLCAoMyw0KSwgKDAsIDEpIFx1YWRmOFx1YjlhY1x1YWNlMCAoMSwgMikgXHVjMjFjXHVjMTFjXHViMzAwXHViODVjIFx1YzcwNFx1Y2U1OFx1Yjk3YyBcdWJjMTRcdWFmYzAgXHVhY2M0XHVkNjhkXHVjNzc0XHViMmU0LjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPlx1Yzc3NFx1YjdlY1x1ZDU1YyBcdWMwYzFcdWQ2NjlcdWM1ZDBcdWMxMWMgXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzQwIDMgXHViNzdjXHVjNmI0XHViNGRjIFx1YjljY1x1YzVkMCBcdWMyMThcdWM1ZjQgU1x1Yjk3YyAwLCAxLCAyLCAzLCA0XHViODVjIFx1YzgxNVx1YjgyY1x1ZDU2MCBcdWMyMTggXHVjNzg4XHViMmU0LiBcdWM1NDRcdWM3NzRcdWM3OTRcdWM3NDAgKDAsIDQpLCAoMSwgMykgXHVhZGY4XHViOWFjXHVhY2UwICgzLCA0KSBcdWMyMWNcdWMxMWNcdWIzMDBcdWI4NWMgXHVjNzA0XHVjZTU4IFx1YmMxNFx1YWZiOFx1YWUzMFx1Yjk3YyBcdWQ1NThcdWJhNzQgXHViNDFjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM1NDRcdWI3OTggXHVkNDVjXHViMjk0IFx1YWMwMSBcdWM3MDRcdWNlNTggXHViYzE0XHVhZmI4XHVhZTMwXHViOWM4XHViMmU0IFx1YzIxOFx1YzVmNCBTXHVjNzU4IFx1YjBiNFx1YzZhOVx1Yzc3NCBcdWM1YjRcdWI1YmJcdWFjOGMgXHViYzE0XHViMDBjXHViMjk0XHVjOWMwIFx1YjA5OFx1ZDBjMFx1YjBiNFx1YWNlMCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkXCIgc3R5bGU9XCJ3aWR0aDozMCVcIj5cclxuXHQ8dGhlYWQ+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0aD5cdWI3N2NcdWM2YjRcdWI0ZGM8XC90aD5cclxuXHRcdFx0PHRoPlx1YzBhY1x1Yjc4YzxcL3RoPlxyXG5cdFx0XHQ8dGg+XHViYzE0XHVhZmMwIFx1YjQ1MCBcdWM3MDRcdWNlNTg8XC90aD5cclxuXHRcdFx0PHRoPlx1YzIxOFx1YzVmNDxcL3RoPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGhlYWQ+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+XHVjZDA4XHVhZTMwPFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+NCwgMywgMiwgMSwgMDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4wPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdWM1ZDBcdWI5NzRcdWI5ZTU8XC90ZD5cclxuXHRcdFx0PHRkPigwLCAxKTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MywgNCwgMiwgMSwgMDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4wPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdWM1NDRcdWM3NzRcdWM3OTQ8XC90ZD5cclxuXHRcdFx0PHRkPigwLCA0KTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MCwgNCwgMiwgMSwgMzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4xPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdWM1ZDBcdWI5NzRcdWI5ZTU8XC90ZD5cclxuXHRcdFx0PHRkPigxLCAyKTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MCwgMiwgNCwgMSwgMzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4xPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdWM1NDRcdWM3NzRcdWM3OTQ8XC90ZD5cclxuXHRcdFx0PHRkPigxLCAzKTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MCwgMSwgNCwgMiwgMzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4yPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdWM1ZDBcdWI5NzRcdWI5ZTU8XC90ZD5cclxuXHRcdFx0PHRkPigyLCAzKTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MCwgMSwgMiwgNCwgMzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4yPFwvdGQ+XHJcblx0XHRcdDx0ZD5cdWM1NDRcdWM3NzRcdWM3OTQ8XC90ZD5cclxuXHRcdFx0PHRkPigzLCA0KTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MCwgMSwgMiwgMywgNDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGJvZHk+XHJcbjxcL3RhYmxlPlxyXG5cclxuPHA+XHVjNjA4XHVjODFjIDI8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5cdWNjOThcdWM3NGMgXHVjMjE4XHVjNWY0IFMgPSAzLCAwLCA0LCAyLCAxPFwvbGk+XHJcblx0PGxpPlx1YzVkMFx1Yjk3NFx1YjllNVx1Yzc0MCBNID0gNVx1Yjc3Y1x1YzZiNFx1YjRkY1x1Yjk3YyBcdWM5YzRcdWQ1ODlcdWQ1NThcdWI4MjQgXHVkNTVjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWM1ZDBcdWI5NzRcdWI5ZTVcdWM3NDAgKDEsIDEpLCAoNCwgMCksICgyLCAzKSwgKDEsIDQpIFx1YWRmOFx1YjlhY1x1YWNlMCAoMCwgNCkgXHVjMjFjXHVjMTFjXHViMzAwXHViODVjIFx1YzcwNFx1Y2U1OFx1Yjk3YyBcdWJjMTRcdWFmYzAgXHVhY2M0XHVkNjhkXHVjNzc0XHViMmU0LjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPlx1Yzc3NFx1YjdlY1x1ZDU1YyBcdWMwYzFcdWQ2NjlcdWM1ZDBcdWMxMWMgXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzQwIDMgXHViNzdjXHVjNmI0XHViNGRjIFx1YjljY1x1YzVkMCBcdWMyMThcdWM1ZjQgU1x1Yjk3YyBcdWM4MTVcdWI4MmNcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzQwICgxLCA0KSwgKDQsIDIpIFx1YWRmOFx1YjlhY1x1YWNlMCAoMiwgMikgXHVjMjFjXHVjMTFjXHViMzAwXHViODVjIFx1YzcwNFx1Y2U1OCBcdWJjMTRcdWFmYjhcdWFlMzBcdWI5N2MgXHVkNTU4XHViYTc0IFx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNTQ0XHViNzk4IFx1ZDQ1Y1x1YjI5NCBcdWFjMDEgXHVjNzA0XHVjZTU4IFx1YmMxNFx1YWZiOFx1YWUzMFx1YjljOFx1YjJlNCBcdWMyMThcdWM1ZjQgU1x1Yzc1OCBcdWIwYjRcdWM2YTlcdWM3NzQgXHVjNWI0XHViNWJiXHVhYzhjIFx1YmMxNFx1YjAwY1x1YjI5NFx1YzljMCBcdWIwOThcdWQwYzBcdWIwYjRcdWFjZTAgXHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiIHN0eWxlPVwid2lkdGg6MzAlXCI+XHJcblx0PHRoZWFkPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGg+XHViNzdjXHVjNmI0XHViNGRjPFwvdGg+XHJcblx0XHRcdDx0aD5cdWMwYWNcdWI3OGM8XC90aD5cclxuXHRcdFx0PHRoPlx1YmMxNFx1YWZjMCBcdWI0NTAgXHVjNzA0XHVjZTU4PFwvdGg+XHJcblx0XHRcdDx0aD5cdWMyMThcdWM1ZjQ8XC90aD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3RoZWFkPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPlx1Y2QwOFx1YWUzMDxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPjMsIDAsIDQsIDIsIDE8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MDxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHVjNWQwXHViOTc0XHViOWU1PFwvdGQ+XHJcblx0XHRcdDx0ZD4oMSwgMSk8XC90ZD5cclxuXHRcdFx0PHRkPjMsIDAsIDQsIDIsIDE8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MDxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHVjNTQ0XHVjNzc0XHVjNzk0PFwvdGQ+XHJcblx0XHRcdDx0ZD4oMSwgNCk8XC90ZD5cclxuXHRcdFx0PHRkPjMsIDEsIDQsIDIsIDA8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MTxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHVjNWQwXHViOTc0XHViOWU1PFwvdGQ+XHJcblx0XHRcdDx0ZD4oNCwgMCk8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDQsIDIsIDM8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MTxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHVjNTQ0XHVjNzc0XHVjNzk0PFwvdGQ+XHJcblx0XHRcdDx0ZD4oNCwgMik8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDMsIDIsIDQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MjxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHVjNWQwXHViOTc0XHViOWU1PFwvdGQ+XHJcblx0XHRcdDx0ZD4oMiwgMyk8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDIsIDMsIDQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MjxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHVjNTQ0XHVjNzc0XHVjNzk0PFwvdGQ+XHJcblx0XHRcdDx0ZD4oMiwgMik8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDIsIDMsIDQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPlx1YzIxOFx1YzVmNCBTXHVjNjQwIFx1YzgxNVx1YzIxOCBNLCBcdWFkZjhcdWI5YWNcdWFjZTAgWCwgWVx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzU0NFx1Yzc3NFx1Yzc5NFx1Yzc3NCBcdWMyMThcdWM1ZjQgU1x1Yjk3YyBcdWM4MTVcdWI4MmNcdWQ1NThcdWFlMzAgXHVjNzA0XHVkNTc0IFx1YzViNFx1YjViYlx1YWM4YyBcdWM3MDRcdWNlNThcdWI5N2MgXHViYzE0XHVhZmMwXHVjOWMwXHVjNWQwIFx1YjMwMFx1ZDU3NCBcdWFjYzRcdWMwYjBcdWQ1NThcdWM3OTAuPFwvcD5cclxuXHJcbjxwPlx1YjJlNFx1Yzc0YyBcdWQ1NjhcdWMyMTggZmluZFN3YXBQYWlyc1x1Yjk3YyBcdWFkNmNcdWQ2MDRcdWQ1NzRcdWM1N2MgXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPmZpbmRTd2FwUGFpcnMoTiwgUywgTSwgWCwgWSwgUCwgUSkgJm1kYXNoOyBcdWM3NzQgXHVkNTY4XHVjMjE4XHViMjk0IFx1YjJlOCBcdWQ1NWMgXHViYzg4IFx1YWRmOFx1YjgwOFx1Yzc3NFx1YjM1NFx1YzVkMCBcdWM3NThcdWQ1NzQgXHVkNjM4XHVjZDljXHViNDFjXHViMmU0LlxyXG5cdDx1bD5cclxuXHRcdDxsaT5OOiBcdWMyMThcdWM1ZjQgU1x1Yzc1OCBcdWQwNmNcdWFlMzA8XC9saT5cclxuXHRcdDxsaT5TOiBcdWNjOThcdWM3NGMgXHVjMjE4XHVjNWY0IFNcdWM1ZDAgXHViMzAwXHVkNTVjIFx1YzgxNVx1YmNmNFx1Yjk3YyBcdWFjMDBcdWM5YzBcdWFjZTAgXHVjNzg4XHViMjk0IFx1YzgxNVx1YzIxOCBcdWJjMzBcdWM1ZjQ8XC9saT5cclxuXHRcdDxsaT5NOiBcdWM1ZDBcdWI5NzRcdWI5ZTVcdWM3NzQgXHVhY2M0XHVkNjhkXHVkNTVjIFx1Yjc3Y1x1YzZiNFx1YjRkYyBcdWMyMTg8XC9saT5cclxuXHRcdDxsaT5YLCBZOiBcdWQwNmNcdWFlMzBcdWFjMDAgTVx1Yzc3OCBcdWM4MTVcdWMyMTggXHViYzMwXHVjNWY0XHViNGU0LiAwICZsZTsgaSAmbGU7IE0tMSBcdWM3NzggaVx1YzVkMCBcdWIzMDBcdWQ1NzQgaVx1YmM4OCBcdWI3N2NcdWM2YjRcdWI0ZGNcdWM1ZDBcdWMxMWMgXHVjNWQwXHViOTc0XHViOWU1XHVjNzQwIFx1YjQ1MCBcdWM3MDRcdWNlNTggWFtpXSwgWVtpXVx1YzVkMCBcdWM3ODhcdWIyOTQgXHVjMjE4XHViOTdjIFx1YjlkZVx1YmMxNFx1YWZiY1x1YjJlNC48XC9saT5cclxuXHRcdDxsaT5QLCBROiBcdWM4MTVcdWMyMTggXHViYzMwXHVjNWY0XHViNGU0LiBcdWM1NDRcdWM3NzRcdWM3OTRcdWM3NzQgXHViYzE0XHVhZmMwIFx1YzcwNFx1Y2U1OFx1YzVkMCBcdWIzMDBcdWQ1NWMgXHVjODE1XHViY2Y0XHViOTdjIFx1YzcwNFx1ZDU3NCBcdWQ1NDRcdWM2OTRcdWQ1NWMgXHViYzMwXHVjNWY0XHVjNzc0XHViMmU0LiBSXHVjNzc0IFx1YzVlY1x1YjdlY1x1YmQ4NFx1Yzc3NCBcdWFkNmNcdWQ1NWMgXHVjODE1XHViODJjXHVkNTU4XHVhZTMwIFx1YzcwNFx1ZDU3NCBcdWQ1NDRcdWM2OTRcdWQ1NWMgXHViNzdjXHVjNmI0XHViNGRjIFx1YzIxOFx1Yjc3Y1x1YWNlMCBcdWQ1NThcdWM3OTAuIDBcdWFjZmMgUi0xIFx1YzBhY1x1Yzc3NFx1Yzc1OCBpXHVjNWQwIFx1YjMwMFx1ZDU3NFx1YzExYyBpXHViYzg4IFx1Yjc3Y1x1YzZiNFx1YjRkY1x1YzVkMCBcdWM1NDRcdWM3NzRcdWM3OTRcdWM3NzQgXHVhY2UwXHViOTc4IFx1YjlkZVx1YmMxNFx1YWZjMCBcdWI0NTAgXHVjNzA0XHVjZTU4XHViOTdjIFBbaV1cdWM2NDAgUVtpXVx1YzVkMCBcdWM4MDBcdWM3YTVcdWQ1NWNcdWIyZTQuIFx1YmMzMFx1YzVmNCBQXHVjNjQwIFFcdWIyOTQgXHVjNzc0XHViYmY4IFx1ZDA2Y1x1YWUzMCBNXHVjNzNjXHViODVjIFx1YmE1NFx1YmFhOFx1YjlhY1x1YWMwMCBcdWM3YTFcdWQ2MDBcdWM3ODhcdWIyZTQuPFwvbGk+XHJcblx0XHQ8bGk+XHVjNzc0IFx1ZDU2OFx1YzIxOFx1YjI5NCBcdWM3MDRcdWM1ZDAgXHVjODE1XHVjNzU4XHViNDFjIFIgXHVhYzEyXHVjNzQ0IFx1YjlhY1x1ZDEzNFx1ZDU3NFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvbGk+XHJcblx0PFwvdWw+XHJcblx0PFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+TVx1Yjc3Y1x1YzZiNFx1YjRkYyBcdWQ2MzlcdWM3NDAgXHViY2Y0XHViMmU0IFx1YjM1NCBcdWM3N2NcdWNjMGQgXHVjODE1XHViODJjIFx1YWMwMFx1YjJhNVx1ZDU1OFx1YjNjNFx1Yjg1ZCBcdWM3ODVcdWI4MjVcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcbiIsImlucHV0IjoiPHVsPlxyXG5cdDxsaT4xXHViYzg4IFx1YzkwNDogTjxcL2xpPlxyXG5cdDxsaT4yXHViYzg4IFx1YzkwNDogU1swXSAmaGVsbGlwOyBTW04gLSAxXTxcL2xpPlxyXG5cdDxsaT4zXHViYzg4IFx1YzkwNDogTTxcL2xpPlxyXG5cdDxsaT40IH4gTSArIDNcdWJjODggXHVjOTA0OiBYW2ldIFlbaV08XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD4xICZsZTsgTiAmbGU7IDUwMCwgTSA9IDMwTiwgUiAmbGU7IE08XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5maW5kU3dhcFBhaXJzXHVhYzAwIFx1YjlhY1x1ZDEzNFx1ZDU1YyBcdWFjMTJcdWM3NDQgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWIyZTRcdWM3NGMgXHVjNTkxXHVjMmRkXHVjNWQwIFx1YjUzMFx1Yjc3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQ6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+MVx1YmM4OCBcdWM5MDQ6IGZpbmRTd2FwUGFpcnNcdWM3NTggXHViOWFjXHVkMTM0XHVhYzEyIFI8XC9saT5cclxuXHQ8bGk+MitpXHViYzg4IFx1YzkwNCAoMCAmbGU7IGkgJmx0OyBSKTogUFtpXSBRW2ldPFwvbGk+XHJcbjxcL3VsPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWQ1NWNcdWFkNmRcdWM1YjQifSx7InByb2JsZW1faWQiOiIxMDkyMyIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IlNvcnRpbmciLCJkZXNjcmlwdGlvbiI6IjxwPkFpemhhbiBoYXMgYSBzZXF1ZW5jZSBvZiBOIGludGVnZXJzIFNbMF0sIFNbMV0sIC4uLiwgU1tOLTFdLiBUaGUgc2VxdWVuY2UgY29uc2lzdHMgb2YgZGlzdGluY3QgbnVtYmVycyBmcm9tIDAgdG8gTi0xLiBTaGUgaXMgdHJ5aW5nIHRvIHNvcnQgdGhpcyBzZXF1ZW5jZSBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgc3dhcHBpbmcgc29tZSBwYWlycyBvZiBlbGVtZW50cy4gSGVyIGZyaWVuZCBFcm1layBpcyBhbHNvIGdvaW5nIHRvIHN3YXAgc29tZSBwYWlycyBvZiBlbGVtZW50cyAmbWRhc2g7IG5vdCBuZWNlc3NhcmlseSBpbiBhIGhlbHBmdWwgd2F5LjxcL3A+XHJcblxyXG48cD5Fcm1layBhbmQgQWl6aGFuIGFyZSBnb2luZyB0byBtb2RpZnkgdGhlIHNlcXVlbmNlIGluIGEgc2VyaWVzIG9mIHJvdW5kcy4gSW4gZWFjaCByb3VuZCwgZmlyc3QgRXJtZWsgbWFrZXMgYSBzd2FwIGFuZCB0aGVuIEFpemhhbiBtYWtlcyBhbm90aGVyIHN3YXAuIE1vcmUgcHJlY2lzZWx5LCB0aGUgcGVyc29uIG1ha2luZyBhIHN3YXAgY2hvb3NlcyB0d28gdmFsaWQgaW5kaWNlcyBhbmQgc3dhcHMgdGhlIGVsZW1lbnRzIGF0IHRob3NlIGluZGljZXMuIE5vdGUgdGhhdCB0aGUgdHdvIGluZGljZXMgZG8gbm90IGhhdmUgdG8gYmUgZGlzdGluY3QuIElmIHRoZXkgYXJlIGVxdWFsLCB0aGUgY3VycmVudCBwZXJzb24gc3dhcHMgYW4gZWxlbWVudCB3aXRoIGl0c2VsZiwgd2hpY2ggZG9lcyBub3QgY2hhbmdlIHRoZSBzZXF1ZW5jZS48XC9wPlxyXG5cclxuPHA+QWl6aGFuIGtub3dzIHRoYXQgRXJtZWsgZG9lcyBub3QgYWN0dWFsbHkgY2FyZSBhYm91dCBzb3J0aW5nIHRoZSBzZXF1ZW5jZSBTLiBTaGUgYWxzbyBrbm93cyB0aGUgZXhhY3QgaW5kaWNlcyBFcm1layBpcyBnb2luZyB0byBjaG9vc2UuIEVybWVrIHBsYW5zIHRvIHRha2UgcGFydCBpbiBNIHJvdW5kcyBvZiBzd2FwcGluZy4gV2UgbnVtYmVyIHRoZXNlIHJvdW5kcyBmcm9tIDAgdG8gTS0xLiBGb3IgZWFjaCBiZXR3ZWVuIDAgYW5kIE0tMSBpbmNsdXNpdmUsIEVybWVrIHdpbGwgY2hvb3NlIHRoZSBpbmRpY2VzIFhbaV0gYW5kIFlbaV0gaW4gcm91bmQgaS48XC9wPlxyXG5cclxuPHA+QWl6aGFuIHdhbnRzIHRvIHNvcnQgdGhlIHNlcXVlbmNlIFMuIEJlZm9yZSBlYWNoIHJvdW5kLCBpZiBBaXpoYW4gc2VlcyB0aGF0IHRoZSBzZXF1ZW5jZSBpcyBhbHJlYWR5IHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIsIHNoZSB3aWxsIHRlcm1pbmF0ZSB0aGUgZW50aXJlIHByb2Nlc3MuIEdpdmVuIHRoZSBvcmlnaW5hbCBzZXF1ZW5jZSBTIGFuZCB0aGUgaW5kaWNlcyBFcm1layBpcyBnb2luZyB0byBjaG9vc2UsIHlvdXIgdGFzayBpcyB0byBmaW5kIGEgc2VxdWVuY2Ugb2Ygc3dhcHMsIHdoaWNoIEFpemhhbiBjYW4gdXNlIHRvIHNvcnQgdGhlIHNlcXVlbmNlIFMuIEluIGFkZGl0aW9uLCBpbiBzb21lIHN1YnRhc2tzIHlvdSBhcmUgcmVxdWlyZWQgdG8gZmluZCBhIHNlcXVlbmNlIG9mIHN3YXBzIHRoYXQgaXMgYXMgc2hvcnQgYXMgcG9zc2libGUuIFlvdSBtYXkgYXNzdW1lIHRoYXQgaXQgaXMgcG9zc2libGUgdG8gc29ydCB0aGUgc2VxdWVuY2UgUyBpbiBNIG9yIGZld2VyIHJvdW5kcy48XC9wPlxyXG5cclxuPHA+Tm90ZSB0aGF0IGlmIEFpemhhbiBzZWVzIHRoYXQgdGhlIHNlcXVlbmNlIFMgaXMgc29ydGVkIGFmdGVyIEVybWVrJnJzcXVvO3Mgc3dhcCwgc2hlIGNhbiBjaG9vc2UgdG8gc3dhcCB0d28gZXF1YWwgaW5kaWNlcyAoZS5nLiwgMCBhbmQgMCkuIEFzIGEgcmVzdWx0IHRoZSBzZXF1ZW5jZSBTIGlzIGFsc28gc29ydGVkIGFmdGVyIHRoZSBlbnRpcmUgcm91bmQsIHNvIEFpemhhbiByZWFjaGVzIGhlciBnb2FsLiBBbHNvIG5vdGUgdGhhdCBpZiB0aGUgaW5pdGlhbHNlcXVlbmNlIFMgaXMgYWxyZWFkeSBzb3J0ZWQsIHRoZSBtaW5pbWFsIG51bWJlciBvZiByb3VuZHMgbmVlZGVkIHRvIHNvcnQgaXQgaXMgMC48XC9wPlxyXG5cclxuPHA+RXhhbXBsZSAxPFwvcD5cclxuXHJcbjxwPlN1cHBvc2UgdGhhdDo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5UaGUgaW5pdGlhbHNlcXVlbmNlIGlzIFMgPSA0LCAzLCAyLCAxLCAwLjxcL2xpPlxyXG5cdDxsaT5Fcm1layBpcyB3aWxsaW5nIHRvIG1ha2UgTSA9IDYgc3dhcHMuPFwvbGk+XHJcblx0PGxpPlRoZSBzZXF1ZW5jZXMgYW5kIHRoYXQgZGVzY3JpYmUgdGhlIGluZGljZXMgRXJtZWsgaXMgZ29pbmcgdG8gY2hvb3NlIGFyZSBYID0gMCwgMSwgMiwgMywgMCwgMSBhbmQgWSA9IDEsIDIsIDMsIDQsIDEsIDIuIEluIG90aGVyIHdvcmRzLCB0aGUgcGFpcnMgb2YgaW5kaWNlcyB0aGF0IEVybWVrIHBsYW5zIHRvIGNob29zZSBhcmUgKDAsIDEpLCAoMSwgMiksICgyLCAzKSwgKDMsIDQpLCAoMCwgMSksIGFuZCAoMSwgMikuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+SW4gdGhpcyBzZXR0aW5nIEFpemhhbiBjYW4gc29ydCB0aGUgc2VxdWVuY2UgUyBpbnRvIHRoZSBvcmRlciAwLCAxLCAyLCAzLCA0IGluIHRocmVlIHJvdW5kcy4gU2hlIGNhbiBkbyBzbyBieSBjaG9vc2luZyB0aGUgaW5kaWNlcyAoMCwgNCksICgxLCAzKSwgYW5kIHRoZW4gKDMsIDQpLjxcL3A+XHJcblxyXG48cD5UaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIGhvdyBFcm1layBhbmQgQWl6aGFuIG1vZGlmeSB0aGUgc2VxdWVuY2UuPFwvcD5cclxuXHJcbjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkXCIgc3R5bGU9XCJ3aWR0aDozMCVcIj5cclxuXHQ8dGhlYWQ+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0aD5Sb3VuZDxcL3RoPlxyXG5cdFx0XHQ8dGg+UGxheWVyPFwvdGg+XHJcblx0XHRcdDx0aD5QaWFyIG9mIHN3YXBwZWQgaW5kaWNlczxcL3RoPlxyXG5cdFx0XHQ8dGg+U2VxdWVuY2U8XC90aD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3RoZWFkPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPmJlZ2lubmluZzxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPjQsIDMsIDIsIDEsIDA8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MDxcL3RkPlxyXG5cdFx0XHQ8dGQ+RXJtZWs8XC90ZD5cclxuXHRcdFx0PHRkPigwLCAxKTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MywgNCwgMiwgMSwgMDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4wPFwvdGQ+XHJcblx0XHRcdDx0ZD5BaXpoYW48XC90ZD5cclxuXHRcdFx0PHRkPigwLCA0KTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MCwgNCwgMiwgMSwgMzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4xPFwvdGQ+XHJcblx0XHRcdDx0ZD5Fcm1lazxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDEsIDIpPFwvdGQ+XHJcblx0XHRcdDx0ZD4wLCAyLCA0LCAxLCAzPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjE8XC90ZD5cclxuXHRcdFx0PHRkPkFpemhhbjxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDEsIDMpPFwvdGQ+XHJcblx0XHRcdDx0ZD4wLCAxLCA0LCAyLCAzPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjI8XC90ZD5cclxuXHRcdFx0PHRkPkVybWVrPFwvdGQ+XHJcblx0XHRcdDx0ZD4oMiwgMyk8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDIsIDQsIDM8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MjxcL3RkPlxyXG5cdFx0XHQ8dGQ+QWl6aGFuPFwvdGQ+XHJcblx0XHRcdDx0ZD4oMywgNCk8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDIsIDMsIDQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPkV4YW1wbGUgMjxcL3A+XHJcblxyXG48cD5TdXBwb3NlIHRoYXQ6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+VGhlIGluaXRpYWxzZXF1ZW5jZSBpcyBTID0gMywgMCwgNCwgMiwgMS48XC9saT5cclxuXHQ8bGk+RXJtZWsgaXMgd2lsbGluZyB0byBtYWtlIE0gPSA1IHN3YXBzLjxcL2xpPlxyXG5cdDxsaT5UaGUgcGFpcnMgb2YgaW5kaWNlcyB0aGF0IEVybWVrIHBsYW5zIHRvIGNob29zZSBhcmUgKDEsIDEpLCAoNCwgMCksICgyLCAzKSwgKDEsIDQpLCBhbmQgKDAsIDQpLjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPkluIHRoaXMgc2V0dGluZyBBaXpoYW4gY2FuIHNvcnQgdGhlIHNlcXVlbmNlIFNpbiB0aHJlZSByb3VuZHMsIGZvciBleGFtcGxlIGJ5IGNob29zaW5nIHRoZSBwYWlycyBvZiBpbmRpY2VzICgxLCA0KSwgKDQsIDIpLCBhbmQgdGhlbiAoMiwgMikuIFRoZSBmb2xsb3dpbmcgdGFibGUgc2hvd3MgaG93IEVybWVrIGFuZCBBaXpoYW4gbW9kaWZ5IHRoZSBzZXF1ZW5jZS48XC9wPlxyXG5cclxuPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWRcIiBzdHlsZT1cIndpZHRoOjMwJVwiPlxyXG5cdDx0aGVhZD5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoPlJvdW5kPFwvdGg+XHJcblx0XHRcdDx0aD5QbGF5ZXI8XC90aD5cclxuXHRcdFx0PHRoPlBhaXIgb2Ygc3dhcHBlZCBpbmRpY2VzPFwvdGg+XHJcblx0XHRcdDx0aD5TZXF1ZW5jZTxcL3RoPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGhlYWQ+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+XHVjZDA4XHVhZTMwPFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+MywgMCwgNCwgMiwgMTxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4wPFwvdGQ+XHJcblx0XHRcdDx0ZD5Fcm1lazxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDEsIDEpPFwvdGQ+XHJcblx0XHRcdDx0ZD4zLCAwLCA0LCAyLCAxPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjA8XC90ZD5cclxuXHRcdFx0PHRkPkFpemhhbjxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDEsIDQpPFwvdGQ+XHJcblx0XHRcdDx0ZD4zLCAxLCA0LCAyLCAwPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjE8XC90ZD5cclxuXHRcdFx0PHRkPkVybWVrPFwvdGQ+XHJcblx0XHRcdDx0ZD4oNCwgMCk8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDQsIDIsIDM8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MTxcL3RkPlxyXG5cdFx0XHQ8dGQ+QWl6aGFuPFwvdGQ+XHJcblx0XHRcdDx0ZD4oNCwgMik8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDMsIDIsIDQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MjxcL3RkPlxyXG5cdFx0XHQ8dGQ+RXJtZWs8XC90ZD5cclxuXHRcdFx0PHRkPigyLCAzKTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MCwgMSwgMiwgMywgNDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4yPFwvdGQ+XHJcblx0XHRcdDx0ZD5BaXpoYW48XC90ZD5cclxuXHRcdFx0PHRkPigyLCAyKTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MCwgMSwgMiwgMywgNDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGJvZHk+XHJcbjxcL3RhYmxlPlxyXG5cclxuPHA+WW91IGFyZSBnaXZlbiB0aGUgc2VxdWVuY2UgUywgdGhlIG51bWJlciBNLCBhbmQgdGhlIHNlcXVlbmNlcyBvZiBpbmRpY2VzIFggYW5kIFkuIENvbXB1dGUgYSBzZXF1ZW5jZSBvZiBzd2Fwcywgd2hpY2ggQWl6aGFuIGNhbiB1c2UgdG8gc29ydCB0aGUgc2VxdWVuY2UgUy48XC9wPlxyXG5cclxuPHA+WW91IG5lZWQgdG8gaW1wbGVtZW50IHRoZSBmdW5jdGlvbiBmaW5kU3dhcFBhaXJzOjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPmZpbmRTd2FwUGFpcnMoTiwgUywgTSwgWCwgWSwgUCwgUSkgJm1kYXNoOyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBncmFkZXIgZXhhY3RseSBvbmNlLlxyXG5cdDx1bD5cclxuXHRcdDxsaT5OOiB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSBTLjxcL2xpPlxyXG5cdFx0PGxpPlM6IGFuIGFycmF5IG9mIGludGVnZXJzIGNvbnRhaW5pbmcgdGhlIGluaXRpYWwgc2VxdWVuY2UgUy48XC9saT5cclxuXHRcdDxsaT5NOiB0aGUgbnVtYmVyIG9mIHN3YXBzIEVybWVrIHBsYW5zIHRvIG1ha2UuPFwvbGk+XHJcblx0XHQ8bGk+WCwgWTogYXJyYXlzIG9mIGludGVnZXJzIG9mIGxlbmd0aCBNLiBGb3IgMCAmbGU7IGkgJmxlOyBNLTEsIGluIHJvdW5kIGkgRXJtZWsgcGxhbnMgdG8gc3dhcCBudW1iZXJzIGF0IGluZGljZXMgWFtpXSBhbmQgWVtpXS48XC9saT5cclxuXHRcdDxsaT5QLCBROiBhcnJheXMgb2YgaW50ZWdlcnMuIFVzZSB0aGVzZSBhcnJheXMgdG8gcmVwb3J0IG9uZSBwb3NzaWJsZSBzZXF1ZW5jZSBvZiBzd2FwcyBBaXpoYW4gY2FuIG1ha2UgdG8gc29ydCB0aGUgc2VxdWVuY2UgUy4gRGVub3RlIGJ5IFIgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2Ugb2Ygc3dhcHMgdGhhdCB5b3VyIHByb2dyYW0gaGFzIGZvdW5kLiBGb3IgZWFjaCBpIGJldHdlZW4gMCBhbmQgUi0xIGluY2x1c2l2ZSwgdGhlIGluZGljZXMgQWl6aGFuIHNob3VsZCBjaG9vc2UgaW4gcm91bmQgaSBzaG91bGQgYmUgc3RvcmVkIGludG8gUFtpXSBhbmQgUVtpXS4gWW91IG1heSBhc3N1bWUgdGhhdCB0aGUgYXJyYXlzIFAgYW5kIFEgaGF2ZSBhbHJlYWR5IGJlZW4gYWxsb2NhdGVkIHRvIE0gZWxlbWVudHMgZWFjaC48XC9saT5cclxuXHRcdDxsaT5UaGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gdGhlIHZhbHVlIG9mIFIgKGRlZmluZWQgYWJvdmUpLjxcL2xpPlxyXG5cdDxcL3VsPlxyXG5cdDxcL2xpPlxyXG48XC91bD5cclxuIiwiaW5wdXQiOiI8dWw+XHJcblx0PGxpPmxpbmUgMTogTjxcL2xpPlxyXG5cdDxsaT5saW5lIDI6IFNbMF0gJmhlbGxpcDsgU1tOIC0gMV08XC9saT5cclxuXHQ8bGk+bGluZSAzOiBNPFwvbGk+XHJcblx0PGxpPmxpbmVzIDQsICZoZWxsaXA7LCBNICsgMzogWFtpXSBZW2ldPFwvbGk+XHJcbjxcL3VsPlxyXG4iLCJvdXRwdXQiOiI8cD5UaGUgc2FtcGxlIGdyYWRlciBwcmludHMgdGhlIGZvbGxvd2luZyBvdXRwdXQ6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+bGluZSAxOiB0aGUgcmV0dXJuIHZhbHVlIFIgb2YgZmluZFN3YXBQYWlyczxcL2xpPlxyXG5cdDxsaT5saW5lIDIraSwgZm9yIDAgJmxlOyBpICZsdDsgUjogUFtpXSBRW2ldPFwvbGk+XHJcbjxcL3VsPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWM2MDFcdWM1YjQifV0=