시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 512 MB192593727.612%

문제

Albert는 최근 (2진수) XOR 연산과 자료구조에 흠뻑 빠져있다.

Albert는 XOR에 관련된 여러 가지 연산을 효율적으로 할 수 있는 자료 구조를 만들고 싶다. 

처음에는 n개의 정수를 포함한 집합 S0을 이용하여 자료 구조를 초기화 하며, 그 이후 q개의 연산을 수행하여 옳은 답을 출력해야한다.

각 연산은 아래 다섯 가지 중 하나이며, 일부 연산은 자료 구조에 저장된 정수 집합에 새로운 정수를 추가하거나 정수를 지우기도 한다 (따라서 그 이후의 연산은 영향을 받게 된다).

  1. find_min(v): 현재 자료 구조에 저장된 정수 집합이 S라면, (v XOR s) 값이 최소가 되는 S의 원소 s를 찾아 (v XOR s) 값을 출력한다. S는 변경되지 않는다.
  2. find_max(v): 현재 자료 구조에 저장된 정수 집합이 S라면, (v XOR s) 값이 최대가 되는 S의 원소 s를 찾아 (v XOR s) 값을 출력한다. S는 변경되지 않는다.
  3. add(v): 현재 자료 구조에 저장된 정수 집합 S에 v를 추가한다. 추가한 후, S에 저장된 고유한 정수의 개수를 출력한다.
  4. remove_min(): 현재 자료 구조에 저장된 정수 집합 S의 원소 중 가장 작은 수를 출력한 후, 이를 삭제한다. 만약 가장 작은 수가 여럿이라면 모두 삭제한다.
  5. remove_max(): 현재 자료 구조에 저장된 정수 집합 S의 원소 중 가장 큰 수를 출력한 후, 이를 삭제한다. 만약 가장 큰 수가 여럿이라면 모두 삭제한다.

예를 들어, S0 = {1,1, 3, 3} 이고 아래와 같은 순서로 총 q = 7개의 연산을 적용한다고 해보자.

  1. find_min(2): (1 XOR 2) = 3 이고 (2 XOR 3) = 1 이므로 1을 출력해야한다. 연산 적용 후, S는 바뀌지 않으므로 S = {1, 1, 3, 3} 이다.
  2. find_max(2): (1 XOR 2) = 3 이고 (2 XOR 3) = 1 이므로 3을 출력해야한다. 연산 적용 후, S는 바뀌지 않으므로 S = {1, 1, 3, 3} 이다.
  3. add(2): S에 새로운 원소를 추가하여 S = {1, 1, 2, 3, 3}이 된다. 중복을 제외하면 총 3개의 고유한 정수가 있으므로 3을 출력한다.
  4. remove_min(): S의 원소 중 가장 작은 수는 1이므로 1을 출력하고, 모두 삭제한다. 연산 적용 후, S = {2, 3, 3} 이다.
  5. remove_max(): S의 원소 중 가장 큰 수는 3이므로 3을 출력하고, 모두 삭제한다. 연산 적용 후, S = {2} 이다.
  6. find_min(2): (2 XOR 2) = 0 이므로 0을 출력해야한다.
  7. find_max(2): (2 XOR 2) = 0 이므로 0을 출력해야한다.

위의 예제의 경우, 올바른 결과는 (연산 적용 순서대로) [1, 3, 3, 1, 3, 0, 0]이 된다.

입력으로 n, S0, q, 그리고 q개의 연산을 받아 총 q개의 정수 (각 연산을 적용한 후 얻은 결과)를 출력하는 프로그램을 작성하시오.

입력

첫 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 줄에는 n과 q가 공백으로 구분 되어 주어진다.

둘째 줄에는 집합 S0에 포함된 n개의 정수가 공백으로 주어진다.

다음 q줄에 걸쳐 각 줄에 하나의 연산이 주어진다.

각 줄에는 1개 혹은 2개의 정수가 (공백으로 구분되어) 주어지는데, 첫 수는 연산의 종류를 나타내며 {1, 2, 3, 4, 5} 중 하나이다.

문제 본문에 설명된바와 같이, 1은 find_min, 2는 find_max, 3은 add, 4는 remove_min, 그리고 5는 remove_max 연산을 나타낸다.

연산 1-3의 경우에만 같은 줄에 두 번째 정수 "v"가 주어진다.

출력

각 연산을 적용한 후 자료 구조가 출력해야하는 올바른 값을 한 줄에 하나씩 출력한다.

제한

  • 1 ≤ T ≤ 10
  • 1 ≤ n, q ≤ 50,000
  • 연산과 함께 주어지는 모든 값 v에 대해 0 ≤ v < 2^25
  • S0에 주어진 모든 원소 s에 대해 0 ≤ s < 2^25
  • 모든 연산에 대하여, 각 연산을 처리하기 전이나 후에 S의 원소가 없는 경우는 입력으로 주어지지 않는다.

예제 입력 1

3
4 7
1 1 3 3
1 2
2 2
3 2
4
5
1 2
2 2
10 11
1 3 5 7 9 2 4 6 8 10
1 6
1 8
2 6
2 8
3 10
4
5
1 2
1 17
2 2
2 17
5 11
2 5 8 13 17
1 6
1 8
2 6
2 8
3 10
4
5
1 2
1 17
2 2
2 17

예제 출력 1

1
3
3
1
3
0
0
0
0
15
15
10
1
10
0
18
11
25
3
0
23
25
6
2
17
7
20
15
28

케이스 1: 본문에서 사용한 예제이다.

케이스 2: 추가 설명 없음.

케이스 3:

연산 시작 전: S = {2, 5, 8, 13, 17}

  1. find_min(6): (6 XOR 5) = 3 
  2. find_min(8):  (8 XOR 8) = 0
  3. find_max(6): (6 XOR 17) = 23
  4. find_max(8): (8 XOR 17) = 25
  5. add(10): S = {2, 5, 8, 10, 13, 17} (6개의 고유한 정수)
  6. remove_min(): S = {5, 8, 10, 13, 17} (2를 삭제함)
  7. remove_max(): S = {5, 8, 10, 13} (17을 삭제함)
  8. find_min(2): (2 XOR 5) = 7
  9. find_min(17): (17 XOR 5) = 20
  10. find_max(2): (2 XOR 13) = 15
  11. find_max(17): (17 XOR 13) = 28
W3sicHJvYmxlbV9pZCI6IjIwOTE5IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiWE9SIFx1Yzc5MFx1YjhjY1x1YWQ2Y1x1Yzg3MCIsImRlc2NyaXB0aW9uIjoiPHA+QWxiZXJ0XHViMjk0IFx1Y2Q1Y1x1YWRmYyAoMlx1YzljNFx1YzIxOCkgWE9SIFx1YzVmMFx1YzBiMFx1YWNmYyBcdWM3OTBcdWI4Y2NcdWFkNmNcdWM4NzBcdWM1ZDAgXHVkNzYwXHViZWQxIFx1YmU2MFx1YzgzOFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+QWxiZXJ0XHViMjk0IFhPUlx1YzVkMCBcdWFkMDBcdWI4MjhcdWI0MWMgXHVjNWVjXHViN2VjIFx1YWMwMFx1YzljMCBcdWM1ZjBcdWMwYjBcdWM3NDQgXHVkNmE4XHVjNzI4XHVjODAxXHVjNzNjXHViODVjIFx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMjk0IFx1Yzc5MFx1YjhjYyBcdWFkNmNcdWM4NzBcdWI5N2MgXHViOWNjXHViNGU0XHVhY2UwIFx1YzJmNlx1YjJlNC4mbmJzcDs8XC9wPlxyXG5cclxuPHA+XHVjYzk4XHVjNzRjXHVjNWQwXHViMjk0IG5cdWFjMWNcdWM3NTggXHVjODE1XHVjMjE4XHViOTdjIFx1ZDNlY1x1ZDU2OFx1ZDU1YyBcdWM5ZDFcdWQ1NjkgUzBcdWM3NDQgXHVjNzc0XHVjNmE5XHVkNTU4XHVjNWVjIFx1Yzc5MFx1YjhjYyBcdWFkNmNcdWM4NzBcdWI5N2MgXHVjZDA4XHVhZTMwXHVkNjU0IFx1ZDU1OFx1YmE3MCwgXHVhZGY4IFx1Yzc3NFx1ZDZjNCBxXHVhYzFjXHVjNzU4IFx1YzVmMFx1YzBiMFx1Yzc0NCBcdWMyMThcdWQ1ODlcdWQ1NThcdWM1ZWMgXHVjNjMzXHVjNzQwIFx1YjJmNVx1Yzc0NCBcdWNkOWNcdWI4MjVcdWQ1NzRcdWM1N2NcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YWMwMSBcdWM1ZjBcdWMwYjBcdWM3NDAgXHVjNTQ0XHViNzk4IFx1YjJlNFx1YzEyZiBcdWFjMDBcdWM5YzAgXHVjOTExIFx1ZDU1OFx1YjA5OFx1Yzc3NFx1YmE3MCwgXHVjNzdjXHViZDgwIFx1YzVmMFx1YzBiMFx1Yzc0MCBcdWM3OTBcdWI4Y2MgXHVhZDZjXHVjODcwXHVjNWQwIFx1YzgwMFx1YzdhNVx1YjQxYyBcdWM4MTVcdWMyMTggXHVjOWQxXHVkNTY5XHVjNWQwIFx1YzBjOFx1Yjg1Y1x1YzZiNCBcdWM4MTVcdWMyMThcdWI5N2MgXHVjZDk0XHVhYzAwXHVkNTU4XHVhYzcwXHViMDk4IFx1YzgxNVx1YzIxOFx1Yjk3YyBcdWM5YzBcdWM2YjBcdWFlMzBcdWIzYzQgXHVkNTVjXHViMmU0IChcdWI1MzBcdWI3N2NcdWMxMWMgXHVhZGY4IFx1Yzc3NFx1ZDZjNFx1Yzc1OCBcdWM1ZjBcdWMwYjBcdWM3NDAgXHVjNjAxXHVkNWE1XHVjNzQ0IFx1YmMxYlx1YWM4YyBcdWI0MWNcdWIyZTQpLjxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPmZpbmRfbWluKHYpOiBcdWQ2MDRcdWM3YWMgXHVjNzkwXHViOGNjIFx1YWQ2Y1x1Yzg3MFx1YzVkMCBcdWM4MDBcdWM3YTVcdWI0MWMgXHVjODE1XHVjMjE4IFx1YzlkMVx1ZDU2OVx1Yzc3NCBTXHViNzdjXHViYTc0LCAodiBYT1IgcykgXHVhYzEyXHVjNzc0IFx1Y2Q1Y1x1YzE4Y1x1YWMwMCBcdWI0MThcdWIyOTQgU1x1Yzc1OCBcdWM2ZDBcdWMxOGMmbmJzcDtzXHViOTdjIFx1Y2MzZVx1YzU0NCAodiBYT1IgcykgXHVhYzEyXHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gU1x1YjI5NCBcdWJjYzBcdWFjYmRcdWI0MThcdWM5YzAgXHVjNTRhXHViMjk0XHViMmU0LjxcL2xpPlxyXG5cdDxsaT5maW5kX21heCh2KTogXHVkNjA0XHVjN2FjIFx1Yzc5MFx1YjhjYyBcdWFkNmNcdWM4NzBcdWM1ZDAgXHVjODAwXHVjN2E1XHViNDFjIFx1YzgxNVx1YzIxOCBcdWM5ZDFcdWQ1NjlcdWM3NzQgU1x1Yjc3Y1x1YmE3NCwgKHYgWE9SIHMpIFx1YWMxMlx1Yzc3NCBcdWNkNWNcdWIzMDBcdWFjMDAmbmJzcDtcdWI0MThcdWIyOTQgU1x1Yzc1OCBcdWM2ZDBcdWMxOGMmbmJzcDtzXHViOTdjIFx1Y2MzZVx1YzU0NCAodiBYT1IgcykgXHVhYzEyXHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gU1x1YjI5NCBcdWJjYzBcdWFjYmRcdWI0MThcdWM5YzAgXHVjNTRhXHViMjk0XHViMmU0LjxcL2xpPlxyXG5cdDxsaT5hZGQodik6IFx1ZDYwNFx1YzdhYyBcdWM3OTBcdWI4Y2MgXHVhZDZjXHVjODcwXHVjNWQwIFx1YzgwMFx1YzdhNVx1YjQxYyBcdWM4MTVcdWMyMTggXHVjOWQxXHVkNTY5IFNcdWM1ZDAgdlx1Yjk3YyBcdWNkOTRcdWFjMDBcdWQ1NWNcdWIyZTQuIFx1Y2Q5NFx1YWMwMFx1ZDU1YyBcdWQ2YzQsIFNcdWM1ZDAgXHVjODAwXHVjN2E1XHViNDFjIFx1YWNlMFx1YzcyMFx1ZDU1YyBcdWM4MTVcdWMyMThcdWM3NTggXHVhYzFjXHVjMjE4XHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9saT5cclxuXHQ8bGk+cmVtb3ZlX21pbigpOiBcdWQ2MDRcdWM3YWMgXHVjNzkwXHViOGNjIFx1YWQ2Y1x1Yzg3MFx1YzVkMCBcdWM4MDBcdWM3YTVcdWI0MWMgXHVjODE1XHVjMjE4IFx1YzlkMVx1ZDU2OSBTXHVjNzU4IFx1YzZkMFx1YzE4YyBcdWM5MTEgXHVhYzAwXHVjN2E1IFx1Yzc5MVx1Yzc0MCBcdWMyMThcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjIFx1ZDZjNCwgXHVjNzc0XHViOTdjIFx1YzBhZFx1YzgxY1x1ZDU1Y1x1YjJlNC4gXHViOWNjXHVjNTdkIFx1YWMwMFx1YzdhNSBcdWM3OTFcdWM3NDAgXHVjMjE4XHVhYzAwIFx1YzVlY1x1YjdmZlx1Yzc3NFx1Yjc3Y1x1YmE3NCBcdWJhYThcdWI0NTAgXHVjMGFkXHVjODFjXHVkNTVjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT5yZW1vdmVfbWF4KCk6IFx1ZDYwNFx1YzdhYyBcdWM3OTBcdWI4Y2MgXHVhZDZjXHVjODcwXHVjNWQwIFx1YzgwMFx1YzdhNVx1YjQxYyBcdWM4MTVcdWMyMTggXHVjOWQxXHVkNTY5IFNcdWM3NTggXHVjNmQwXHVjMThjIFx1YzkxMSBcdWFjMDBcdWM3YTUgXHVkMDcwJm5ic3A7XHVjMjE4XHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1YyBcdWQ2YzQsIFx1Yzc3NFx1Yjk3YyBcdWMwYWRcdWM4MWNcdWQ1NWNcdWIyZTQuIFx1YjljY1x1YzU3ZCBcdWFjMDBcdWM3YTUgXHVkMDcwIFx1YzIxOFx1YWMwMCBcdWM1ZWNcdWI3ZmZcdWM3NzRcdWI3N2NcdWJhNzQgXHViYWE4XHViNDUwIFx1YzBhZFx1YzgxY1x1ZDU1Y1x1YjJlNC48XC9saT5cclxuPFwvb2w+XHJcblxyXG48cD5cdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0LCBTMCA9IHsxLDEsIDMsIDN9IFx1Yzc3NFx1YWNlMCBcdWM1NDRcdWI3OThcdWM2NDAgXHVhYzE5XHVjNzQwIFx1YzIxY1x1YzExY1x1Yjg1YyBcdWNkMWQgcSA9IDdcdWFjMWNcdWM3NTggXHVjNWYwXHVjMGIwXHVjNzQ0IFx1YzgwMVx1YzZhOVx1ZDU1Y1x1YjJlNFx1YWNlMCBcdWQ1NzRcdWJjZjRcdWM3OTAuPFwvcD5cclxuXHJcbjxvbD5cclxuXHQ8bGk+ZmluZF9taW4oMik6ICgxIFhPUiAyKSA9IDMgXHVjNzc0XHVhY2UwICgyIFhPUiAzKSA9IDEgXHVjNzc0XHViYmMwXHViODVjIDFcdWM3NDQgXHVjZDljXHViODI1XHVkNTc0XHVjNTdjXHVkNTVjXHViMmU0LiBcdWM1ZjBcdWMwYjAgXHVjODAxXHVjNmE5IFx1ZDZjNCwgU1x1YjI5NCBcdWJjMTRcdWIwMGNcdWM5YzAgXHVjNTRhXHVjNzNjXHViYmMwXHViODVjIFMgPSB7MSwgMSwgMywgM30gXHVjNzc0XHViMmU0LjxcL2xpPlxyXG5cdDxsaT5maW5kX21heCgyKTogKDEgWE9SIDIpID0gMyBcdWM3NzRcdWFjZTAgKDIgWE9SIDMpID0gMSBcdWM3NzRcdWJiYzBcdWI4NWMgM1x1Yzc0NCBcdWNkOWNcdWI4MjVcdWQ1NzRcdWM1N2NcdWQ1NWNcdWIyZTQuIFx1YzVmMFx1YzBiMCBcdWM4MDFcdWM2YTkgXHVkNmM0LCBTXHViMjk0IFx1YmMxNFx1YjAwY1x1YzljMCBcdWM1NGFcdWM3M2NcdWJiYzBcdWI4NWMgUyA9IHsxLCAxLCAzLCAzfSBcdWM3NzRcdWIyZTQuPFwvbGk+XHJcblx0PGxpPmFkZCgyKTogU1x1YzVkMCBcdWMwYzhcdWI4NWNcdWM2YjQgXHVjNmQwXHVjMThjXHViOTdjIFx1Y2Q5NFx1YWMwMFx1ZDU1OFx1YzVlYyBTID0gezEsIDEsIDIsIDMsIDN9XHVjNzc0IFx1YjQxY1x1YjJlNC4gXHVjOTExXHViY2Y1XHVjNzQ0IFx1YzgxY1x1YzY3OFx1ZDU1OFx1YmE3NCBcdWNkMWQgM1x1YWMxY1x1Yzc1OCBcdWFjZTBcdWM3MjBcdWQ1NWMgXHVjODE1XHVjMjE4XHVhYzAwIFx1Yzc4OFx1YzczY1x1YmJjMFx1Yjg1YyAzXHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9saT5cclxuXHQ8bGk+cmVtb3ZlX21pbigpOiBTXHVjNzU4IFx1YzZkMFx1YzE4YyBcdWM5MTEgXHVhYzAwXHVjN2E1IFx1Yzc5MVx1Yzc0MCBcdWMyMThcdWIyOTQgMVx1Yzc3NFx1YmJjMFx1Yjg1YyAxXHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1OFx1YWNlMCwgXHViYWE4XHViNDUwIFx1YzBhZFx1YzgxY1x1ZDU1Y1x1YjJlNC4gXHVjNWYwXHVjMGIwIFx1YzgwMVx1YzZhOSBcdWQ2YzQsIFMgPSB7MiwgMywgM30gXHVjNzc0XHViMmU0LjxcL2xpPlxyXG5cdDxsaT5yZW1vdmVfbWF4KCk6IFNcdWM3NTggXHVjNmQwXHVjMThjIFx1YzkxMSBcdWFjMDBcdWM3YTUgXHVkMDcwIFx1YzIxOFx1YjI5NCAzXHVjNzc0XHViYmMwXHViODVjIDNcdWM3NDQgXHVjZDljXHViODI1XHVkNTU4XHVhY2UwLCBcdWJhYThcdWI0NTAgXHVjMGFkXHVjODFjXHVkNTVjXHViMmU0LiBcdWM1ZjBcdWMwYjAgXHVjODAxXHVjNmE5IFx1ZDZjNCwgUyA9IHsyfSBcdWM3NzRcdWIyZTQuPFwvbGk+XHJcblx0PGxpPmZpbmRfbWluKDIpOiAoMiBYT1IgMikgPSAwIFx1Yzc3NFx1YmJjMFx1Yjg1YyAwXHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU3NFx1YzU3Y1x1ZDU1Y1x1YjJlNC48XC9saT5cclxuXHQ8bGk+ZmluZF9tYXgoMik6ICgyIFhPUiAyKSA9IDAgXHVjNzc0XHViYmMwXHViODVjIDBcdWM3NDQgXHVjZDljXHViODI1XHVkNTc0XHVjNTdjXHVkNTVjXHViMmU0LjxcL2xpPlxyXG48XC9vbD5cclxuXHJcbjxwPlx1YzcwNFx1Yzc1OCBcdWM2MDhcdWM4MWNcdWM3NTggXHVhY2JkXHVjNmIwLCBcdWM2MmNcdWJjMTRcdWI5NzggXHVhY2IwXHVhY2ZjXHViMjk0IChcdWM1ZjBcdWMwYjAgXHVjODAxXHVjNmE5IFx1YzIxY1x1YzExY1x1YjMwMFx1Yjg1YykgWzEsIDMsIDMsIDEsIDMsIDAsIDBdXHVjNzc0IFx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNzg1XHViODI1XHVjNzNjXHViODVjIG4sIFMwLCBxLCBcdWFkZjhcdWI5YWNcdWFjZTAgcVx1YWMxY1x1Yzc1OCBcdWM1ZjBcdWMwYjBcdWM3NDQgXHViYzFiXHVjNTQ0IFx1Y2QxZCBxXHVhYzFjXHVjNzU4IFx1YzgxNVx1YzIxOCAoXHVhYzAxIFx1YzVmMFx1YzBiMFx1Yzc0NCBcdWM4MDFcdWM2YTlcdWQ1NWMgXHVkNmM0IFx1YzViYlx1Yzc0MCBcdWFjYjBcdWFjZmMpXHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1OFx1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDQgXHVjNzkxXHVjMTMxXHVkNTU4XHVjMmRjXHVjNjI0LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjY2FiIFx1YzkwNFx1YzVkMCBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHVjNzU4IFx1YzIxOCBUXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhYzAxIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM3NTggXHVjY2FiIFx1YzkwNFx1YzVkMFx1YjI5NCBuXHVhY2ZjIHFcdWFjMDAgXHVhY2Y1XHViYzMxXHVjNzNjXHViODVjIFx1YWQ2Y1x1YmQ4NCBcdWI0MThcdWM1YjQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWI0NThcdWM5ZjggXHVjOTA0XHVjNWQwXHViMjk0IFx1YzlkMVx1ZDU2OSBTMFx1YzVkMCBcdWQzZWNcdWQ1NjhcdWI0MWMmbmJzcDtuXHVhYzFjXHVjNzU4IFx1YzgxNVx1YzIxOFx1YWMwMCBcdWFjZjVcdWJjMzFcdWM3M2NcdWI4NWMgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWIyZTRcdWM3NGMgcVx1YzkwNFx1YzVkMCBcdWFjNzhcdWNjZDAgXHVhYzAxIFx1YzkwNFx1YzVkMCBcdWQ1NThcdWIwOThcdWM3NTggXHVjNWYwXHVjMGIwXHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhYzAxIFx1YzkwNFx1YzVkMFx1YjI5NCAxXHVhYzFjIFx1ZDYzOVx1Yzc0MCAyXHVhYzFjXHVjNzU4IFx1YzgxNVx1YzIxOFx1YWMwMCAoXHVhY2Y1XHViYzMxXHVjNzNjXHViODVjIFx1YWQ2Y1x1YmQ4NFx1YjQxOFx1YzViNCkgXHVjOGZjXHVjNWI0XHVjOWMwXHViMjk0XHViMzcwLCBcdWNjYWIgXHVjMjE4XHViMjk0IFx1YzVmMFx1YzBiMFx1Yzc1OCBcdWM4ODVcdWI5NThcdWI5N2MgXHViMDk4XHVkMGMwXHViMGI0XHViYTcwIHsxLCAyLCAzLCA0LCA1fSBcdWM5MTEgXHVkNTU4XHViMDk4XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWJiMzhcdWM4MWMgXHViY2Y4XHViYjM4XHVjNWQwIFx1YzEyNFx1YmE4NVx1YjQxY1x1YmMxNFx1YzY0MCBcdWFjMTlcdWM3NzQsIDFcdWM3NDAgZmluZF9taW4sIDJcdWIyOTQgZmluZF9tYXgsIDNcdWM3NDAgYWRkLCA0XHViMjk0IHJlbW92ZV9taW4sIFx1YWRmOFx1YjlhY1x1YWNlMCA1XHViMjk0IHJlbW92ZV9tYXggXHVjNWYwXHVjMGIwXHVjNzQ0IFx1YjA5OFx1ZDBjMFx1YjBiOFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNWYwXHVjMGIwIDEtM1x1Yzc1OCBcdWFjYmRcdWM2YjBcdWM1ZDBcdWI5Y2MgXHVhYzE5XHVjNzQwIFx1YzkwNFx1YzVkMCBcdWI0NTAgXHViYzg4XHVjOWY4IFx1YzgxNVx1YzIxOCAmcXVvdDt2JnF1b3Q7XHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDEmbmJzcDtcdWM1ZjBcdWMwYjBcdWM3NDQgXHVjODAxXHVjNmE5XHVkNTVjIFx1ZDZjNCBcdWM3OTBcdWI4Y2MgXHVhZDZjXHVjODcwXHVhYzAwIFx1Y2Q5Y1x1YjgyNVx1ZDU3NFx1YzU3Y1x1ZDU1OFx1YjI5NCBcdWM2MmNcdWJjMTRcdWI5NzggXHVhYzEyXHVjNzQ0IFx1ZDU1YyBcdWM5MDRcdWM1ZDAgXHVkNTU4XHViMDk4XHVjNTI5IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4iLCJsaW1pdCI6Ijx1bD5cclxuXHQ8bGk+MSAmbGU7IFQgJmxlOyAxMDxcL2xpPlxyXG5cdDxsaT4xICZsZTsgbiwgcSAmbGU7IDUwLDAwMDxcL2xpPlxyXG5cdDxsaT5cdWM1ZjBcdWMwYjBcdWFjZmMgXHVkNTY4XHVhZWQ4IFx1YzhmY1x1YzViNFx1YzljMFx1YjI5NCBcdWJhYThcdWI0ZTAgXHVhYzEyIHZcdWM1ZDAgXHViMzAwXHVkNTc0IDAgJmxlOyB2ICZsdDsgMl4yNTxcL2xpPlxyXG5cdDxsaT5TMFx1YzVkMCBcdWM4ZmNcdWM1YjRcdWM5YzQgXHViYWE4XHViNGUwIFx1YzZkMFx1YzE4YyBzXHVjNWQwIFx1YjMwMFx1ZDU3NCAwICZsZTsgcyAmbHQ7IDJeMjU8XC9saT5cclxuXHQ8bGk+XHViYWE4XHViNGUwIFx1YzVmMFx1YzBiMFx1YzVkMCBcdWIzMDBcdWQ1NThcdWM1ZWMsIFx1YWMwMSZuYnNwO1x1YzVmMFx1YzBiMFx1Yzc0NCBcdWNjOThcdWI5YWNcdWQ1NThcdWFlMzAgXHVjODA0XHVjNzc0XHViMDk4IFx1ZDZjNFx1YzVkMCBTXHVjNzU4IFx1YzZkMFx1YzE4Y1x1YWMwMCBcdWM1YzZcdWIyOTQgXHVhY2JkXHVjNmIwXHViMjk0IFx1Yzc4NVx1YjgyNVx1YzczY1x1Yjg1YyBcdWM4ZmNcdWM1YjRcdWM5YzBcdWM5YzAgXHVjNTRhXHViMjk0XHViMmU0LjxcL2xpPlxyXG48XC91bD5cclxuIiwic2FtcGxlX2V4cGxhaW5fMSI6IjxwPlx1Y2YwMFx1Yzc3NFx1YzJhNCAxOiBcdWJjZjhcdWJiMzhcdWM1ZDBcdWMxMWMgXHVjMGFjXHVjNmE5XHVkNTVjIFx1YzYwOFx1YzgxY1x1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjZjAwXHVjNzc0XHVjMmE0IDI6IFx1Y2Q5NFx1YWMwMCBcdWMxMjRcdWJhODUgXHVjNWM2XHVjNzRjLjxcL3A+XHJcblxyXG48cD5cdWNmMDBcdWM3NzRcdWMyYTQgMzo8XC9wPlxyXG5cclxuPHA+XHVjNWYwXHVjMGIwIFx1YzJkY1x1Yzc5MSBcdWM4MDQ6IFMgPSB7MiwgNSwgOCwgMTMsIDE3fTxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPmZpbmRfbWluKDYpOiZuYnNwOyg2IFhPUiA1KSA9IDMmbmJzcDs8XC9saT5cclxuXHQ8bGk+ZmluZF9taW4oOCk6Jm5ic3A7ICg4IFhPUiA4KSA9IDA8XC9saT5cclxuXHQ8bGk+ZmluZF9tYXgoNik6ICg2IFhPUiAxNykgPSAyMzxcL2xpPlxyXG5cdDxsaT5maW5kX21heCg4KTogKDggWE9SIDE3KSA9IDI1PFwvbGk+XHJcblx0PGxpPmFkZCgxMCk6IFMgPSB7MiwgNSwgOCwgMTAsIDEzLCAxN30gKDZcdWFjMWNcdWM3NTggXHVhY2UwXHVjNzIwXHVkNTVjIFx1YzgxNVx1YzIxOCk8XC9saT5cclxuXHQ8bGk+cmVtb3ZlX21pbigpOiBTID0gezUsIDgsIDEwLCAxMywgMTd9ICgyXHViOTdjIFx1YzBhZFx1YzgxY1x1ZDU2OCk8XC9saT5cclxuXHQ8bGk+cmVtb3ZlX21heCgpOiBTID0gezUsIDgsIDEwLCAxM30gKDE3XHVjNzQ0IFx1YzBhZFx1YzgxY1x1ZDU2OCk8XC9saT5cclxuXHQ8bGk+ZmluZF9taW4oMik6ICgyIFhPUiA1KSA9IDc8XC9saT5cclxuXHQ8bGk+ZmluZF9taW4oMTcpOiAoMTcgWE9SIDUpID0gMjA8XC9saT5cclxuXHQ8bGk+ZmluZF9tYXgoMik6ICgyIFhPUiAxMykgPSAxNTxcL2xpPlxyXG5cdDxsaT5maW5kX21heCgxNyk6ICgxNyBYT1IgMTMpID0gMjg8XC9saT5cclxuPFwvb2w+XHJcbiJ9LHsicHJvYmxlbV9pZCI6IjIwOTE5IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiWE9SIERhdGEgU3RydWN0dXJlcyIsImRlc2NyaXB0aW9uIjoiPHA+QWxiZXJ0IGlzIGludGVyZXN0ZWQgaW4gYmluYXJ5IFhPUiBvcGVyYXRpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMuPFwvcD5cclxuXHJcbjxwPkFsYmVydCB3YW50cyB0byBjcmVhdGUgYSBkYXRhIHN0cnVjdHVyZSB0aGF0IGNhbiBlZmZpY2llbnRseSBwcm9jZXNzIFhPUiBvcGVyYXRpb25zLjxcL3A+XHJcblxyXG48cD5BdCB0aGUgYmVnaW5uaW5nLCB0aGUgZGF0YSBzdHJ1Y3R1cmUgbXVzdCBiZSBpbml0aWFsaXplZCB3aXRoIGFuIGlucHV0IGFycmF5IFMwIHRoYXQgY29udGFpbnMgbiBpbnRlZ2Vycy48XC9wPlxyXG5cclxuPHA+VGhlbiwgdGhlIGRhdGEgc3RydWN0dXJlIG11c3QgcHJvY2VzcyBxIG9wZXJhdGlvbnMgYW5kIG91dHB1dCBjb3JyZWN0IGFuc3dlcnMuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlRoZXJlIGFyZSBmaXZlIHR5cGVzIG9mIG9wZXJhdGlvbnMsIGFuZCBzb21lIG9wZXJhdGlvbnMgbWF5IG1vZGlmeSB0aGUgbnVtYmVycyBzdG9yZWQgd2l0aGluIHRoZSBkYXRhIHN0cnVjdHVyZSAoaGVuY2UsIHN1YnNlcXVlbnQgb3BlcmF0aW9ucyYjMzk7IHJlc3VsdHMgd2lsbCBiZSBhZmZlY3RlZCBieSBhIHByZXZpb3VzIG9wZXJhdGlvbikuPFwvcD5cclxuXHJcbjxvbD5cclxuXHQ8bGk+ZmluZF9taW4odik6IElmIFMgaXMgdGhlIGN1cnJlbnQgc2V0IG9mIG51bWJlcnMgc3RvcmVkIGluIHRoZSBkYXRhIHN0cnVjdHVyZSwgZmluZCBhbiBlbGVtZW50IHMgaW4gUyB0aGF0IG1pbmltaXplcyZuYnNwOyh2IFhPUiBzKSwgYW5kIG91dHB1dCAodiBYT1IgcykuIFMgcmVtYWlucyB1bmNoYW5nZWQuPFwvbGk+XHJcblx0PGxpPmZpbmRfbWF4KHYpOiBJZiBTIGlzIHRoZSBjdXJyZW50IHNldCBvZiBudW1iZXJzIHN0b3JlZCBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUsIGZpbmQgYW4gZWxlbWVudCBzIGluIFMgdGhhdCBtYXhpbWl6ZXMgKHYgWE9SIHMpLCBhbmQgb3V0cHV0ICh2IFhPUiBzKS4gUyByZW1haW5zIHVuY2hhbmdlZC48XC9saT5cclxuXHQ8bGk+YWRkKHYpOiBBZGQgdiB0byB0aGUgY3VycmVudCBzZXQgUyBvZiBudW1iZXJzIHN0b3JlZCBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUuIFRoZW4sIG91dHB1dCB0aGUgbnVtYmVyIG9mIHVuaXF1ZSBudW1iZXJzIGluIFMuPFwvbGk+XHJcblx0PGxpPnJlbW92ZV9taW4oKTogT3V0cHV0IHRoZSBzbWFsbGVzdCBudW1iZXIgc3RvcmVkIGluIFMgb2YgdGhlIGRhdGEgc3RydWN0dXJlLCBhbmQgcmVtb3ZlIGl0LiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgc21hbGxlc3QgbnVtYmVycyBpbiBTLCByZW1vdmUgdGhlbSBhbGwuPFwvbGk+XHJcblx0PGxpPnJlbW92ZV9tYXgoKTogT3V0cHV0IHRoZSBsYXJnZXN0IG51bWJlciBzdG9yZWQgaW4gUyBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUsIGFuZCByZW1vdmUgaXQuIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBsYXJnZXN0IG51bWJlcnMgaW4gUywgcmVtb3ZlIHRoZW0gYWxsLiZuYnNwOzxcL2xpPlxyXG48XC9vbD5cclxuXHJcbjxwPkZvciBpbnN0YW5jZSwgbGV0Jm5ic3A7UzAgPSB7MSwxLCAzLCAzfSAod2hpY2ggaW5pdGlhbGl6ZXMgJnF1b3Q7UyZxdW90OyBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUpLCZuYnNwO2FuZCB3ZSBwcm9jZXNzIHRoZSBmb2xsb3dpbmcgcSA9IDcmbmJzcDtvcGVyYXRpb25zLjxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPmZpbmRfbWluKDIpOiBCZWNhdXNlICgxIFhPUiAyKSA9IDMgYW5kICgyIFhPUiAzKSA9IDEsIGl0IG11c3Qgb3V0cHV0IDEuJm5ic3A7QWZ0ZXJ3YXJkcywgUyByZW1haW5zIHVuY2hhbmdlZCwgc28gUyA9IHsxLCAxLCAzLCAzfS48XC9saT5cclxuXHQ8bGk+ZmluZF9tYXgoMik6IEJlY2F1c2UgKDEgWE9SIDIpID0gMyBhbmQgKDIgWE9SIDMpID0gMSwgaXQgbXVzdCBvdXRwdXQmbmJzcDszLiBBZnRlcndhcmRzLCBTIHJlbWFpbnMgdW5jaGFuZ2VkLCBzbyZuYnNwO1MgPSB7MSwgMSwgMywgM30uPFwvbGk+XHJcblx0PGxpPmFkZCgyKTogQnkgYWRkaW5nIGEgbmV3IG51bWJlciAyIHRvIFMsIG5vdyBTIGJlY29tZXMgUyA9IHsxLCAxLCAyLCAzLCAzfS4gVGhlcmUgYXJlIHRocmVlIHVuaXF1ZSBudW1iZXJzIGluIFMsIHNvIGl0IG11c3Qgb3V0cHV0IDMuPFwvbGk+XHJcblx0PGxpPnJlbW92ZV9taW4oKTogSXQgbXVzdCBvdXRwdXQgMSwgdGhlIHNtYWxsZXN0IG51bWJlciBpbiBTLCBhbmQgcmVtb3ZlIGFsbCAxJiMzOTtzLiBBZnRlcndhcmRzLCBTID0gezIsIDMsIDN9LjxcL2xpPlxyXG5cdDxsaT5yZW1vdmVfbWF4KCk6IEl0IG11c3Qgb3V0cHV0IDMsIHRoZSBsYXJnZXN0IG51bWJlciBpbiBTLCBhbmQgcmVtb3ZlIGFsbCAzJiMzOTtzLiBBZnRlcndhcmRzLCBTID0gezJ9LjxcL2xpPlxyXG5cdDxsaT5maW5kX21pbigyKTogQmVjYXVzZSAoMiBYT1IgMikgPSAwLCBpdCBtdXN0IG91dHB1dCAwLjxcL2xpPlxyXG5cdDxsaT5maW5kX21heCgyKTogQmVjYXVzZSAoMiBYT1IgMikgPSAwLCBpdCBtdXN0IG91dHB1dCAwLjxcL2xpPlxyXG48XC9vbD5cclxuXHJcbjxwPkluIHRoZSBleGFtcGxlIGFib3ZlLCB0aGUgY29ycmVjdCBvdXRwdXQgKGluIG9yZGVyIG9mIHRoZSBnaXZlbiBvcGVyYXRpb25zKSBpcyBbMSwgMywgMywgMSwgMywgMCwgMF0uPFwvcD5cclxuXHJcbjxwPkdpdmVuIG4sIFMwLCBxLCBhbmQgZGV0YWlscyBvZiB0aGUgcSBvcGVyYXRpb25zLCBvdXRwdXQgcSBudW1iZXJzIChvdXRwdXRzIG9idGFpbmVkIGJ5IGFwcGx5aW5nIHRoZSBnaXZlbiBvcGVyYXRpb25zKS48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBmaXJzdCBsaW5lIHdpbGwgY29udGFpbiB0aGUgbnVtYmVyIG9mIHRlc3QgY2FzZXMsIFQuPFwvcD5cclxuXHJcbjxwPlRoZSBmaXJzdCBsaW5lIG9mIGVhY2ggdGVzdCBjYXNlIHdpbGwgY29udGFpbiB0d28gaW50ZWdlcnMsIG4gYW5kIHEsIHNlcGFyYXRlZCBieSBhIHdoaXRlc3BhY2UuPFwvcD5cclxuXHJcbjxwPlRoZSBzZWNvbmQgbGluZSBvZiBlYWNoIHRlc3QgY2FzZSB3aWxsIGNvbnRhaW4gbiBpbnRlZ2Vycywgc2VwYXJhdGVkIGJ5IGEgd2hpdGVzcGFjZS48XC9wPlxyXG5cclxuPHA+RWFjaCBvZiB0aGUgZm9sbG93aW5nIHEgbGluZXMgd2lsbCBkZXNjcmliZSBvbmUgb3BlcmF0aW9uLjxcL3A+XHJcblxyXG48cD5FYWNoIGxpbmUgd2lsbCBjb250YWluIDEgb3IgMiBpbnRlZ2VycyAoc2VwYXJhdGVkIGJ5IGEgd2hpdGVzcGFjZSkgd2hlcmUgdGhlIGZpcnN0IGludGVnZXIgZGVzY3JpYmVzIHRoZSB0eXBlIG9mIGFuIG9wZXJhdGlvbiAob25lIG9mIHsxLCAyLCAzLCA0LCA1fSkuPFwvcD5cclxuXHJcbjxwPkFzIGRlc2NyaWJlZCBpbiB0aGUgcHJvYmxlbSBzdGF0ZW1lbnQsIDEgcmVmZXJzIHRvJm5ic3A7ZmluZF9taW4sIDIgcmVmZXJzIHRvJm5ic3A7ZmluZF9tYXgsIDMgcmVmZXJzIHRvJm5ic3A7YWRkLCA0IHJlZmVycyB0byZuYnNwO3JlbW92ZV9taW4sIGFuZCA1IHJlZmVycyZuYnNwO3JlbW92ZV9tYXguPFwvcD5cclxuXHJcbjxwPkZvciBvcGVyYXRpb25zIG9mIHR5cGUgMSwgMiwgb3IgMywgdGhlIHNhbWUgbGluZSB3aWxsIGNvbnRhaW4gdGhlIHNlY29uZCBpbnRlZ2VycywgJnF1b3Q7diZxdW90Oy48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5Gb3IgZWFjaCBvcGVyYXRpb24gZ2l2ZW4gaW4gdGhlIGlucHV0LCBvdXRwdXQgdGhlIGNvcnJlY3QgYW5zd2VyIGluIGEgc2luZ2xlIGxpbmUuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiRW5nbGlzaCIsImxpbWl0IjoiPHVsPlxyXG5cdDxsaT4xICZsZTsgVCAmbGU7IDEwPFwvbGk+XHJcblx0PGxpPjEgJmxlOyBuLCBxICZsZTsgNTAsMDAwPFwvbGk+XHJcblx0PGxpPkZvciBldmVyeSBudW1iZXIgdiAoZ2l2ZW4gYWxvbmcgd2l0aCBvcGVyYXRpb25zKSwgYXNzdW1lJm5ic3A7MCAmbGU7IHYgJmx0OyAyXjI1PFwvbGk+XHJcblx0PGxpPkZvciBldmVyeSBudW1iZXIgcyBpbiBTMCwgYXNzdW1lJm5ic3A7MCAmbGU7IHMgJmx0OyAyXjI1PFwvbGk+XHJcblx0PGxpPkZvciBldmVyeSBvcGVyYXRpb24sIHlvdSBtYXkgYXNzdW1lIHRoYXQgUyBpcyBub24tZW1wdHkgYm90aCBiZWZvcmUgYW5kIGFmdGVyIHByb2Nlc3NpbmcgdGhlIG9wZXJhdGlvbi48XC9saT5cclxuPFwvdWw+XHJcbiIsInNhbXBsZV9leHBsYWluXzEiOiI8cD5DYXNlIDE6IEV4cGxhaW5lZCBpbiB0aGUgcHJvYmxlbSBzdGF0ZW1lbnQuPFwvcD5cclxuXHJcbjxwPkNhc2UgMjogTm8gZXhwbGFuYXRpb24gaXMgcHJvdmlkZWQuPFwvcD5cclxuXHJcbjxwPkNhc2UgMzo8XC9wPlxyXG5cclxuPHA+QmVmb3JlIHByb2Nlc3NpbmcgYW55IG9wZXJhdGlvbnM6IFMgPSB7MiwgNSwgOCwgMTMsIDE3fTxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPmZpbmRfbWluKDYpOiZuYnNwOyg2IFhPUiA1KSA9IDMmbmJzcDs8XC9saT5cclxuXHQ8bGk+ZmluZF9taW4oOCk6Jm5ic3A7ICg4IFhPUiA4KSA9IDA8XC9saT5cclxuXHQ8bGk+ZmluZF9tYXgoNik6ICg2IFhPUiAxNykgPSAyMzxcL2xpPlxyXG5cdDxsaT5maW5kX21heCg4KTogKDggWE9SIDE3KSA9IDI1PFwvbGk+XHJcblx0PGxpPmFkZCgxMCk6IFMgPSB7MiwgNSwgOCwgMTAsIDEzLCAxN30gKDYgdW5pcXVlIG51bWJlcnMpPFwvbGk+XHJcblx0PGxpPnJlbW92ZV9taW4oKTogUyA9IHs1LCA4LCAxMCwgMTMsIDE3fSAoMiBoYXMgYmVlbiByZW1vdmVkKTxcL2xpPlxyXG5cdDxsaT5yZW1vdmVfbWF4KCk6IFMgPSB7NSwgOCwgMTAsIDEzfSAoMTcgaGFzIGJlZW4gcmVtb3ZlZCk8XC9saT5cclxuXHQ8bGk+ZmluZF9taW4oMik6ICgyIFhPUiA1KSA9IDc8XC9saT5cclxuXHQ8bGk+ZmluZF9taW4oMTcpOiAoMTcgWE9SIDUpID0gMjA8XC9saT5cclxuXHQ8bGk+ZmluZF9tYXgoMik6ICgyIFhPUiAxMykgPSAxNTxcL2xpPlxyXG5cdDxsaT5maW5kX21heCgxNyk6ICgxNyBYT1IgMTMpID0gMjg8XC9saT5cclxuPFwvb2w+XHJcbiJ9XQ==