시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 1024 MB139383228.070%

문제

블랑콘씨의 집 주위를 돌아다니는 $N$ 마리의 곤충이 있고, 각각 $0$에서 $N - 1$로 번호가 매겨져 있다. 각 곤충마다 자신이 속하는 종류가 있고, $0$ 이상 $10^9$ 이하인 정수로 표현된다. 복수의 곤충이 같은 종류에 속할 수 있다.

곤충들을 종류에 따라 그룹으로 모아보기로 하자. 가장 자주 나오는 곤충 종류 그룹의 크기는 가장 많은 수의 곤충이 속하는 그룹의 곤충 수이다. 비슷하게, 가장 드문 곤충 종류 그룹의 크기는 가장 적은 수의 곤충이 속하는 그룹의 곤충 수이다.

예를 들어, $11$ 마리의 곤충이 있고, 종류가 차례로 $[5, 7, 9, 11, 11, 5, 0, 11, 9, 100, 9]$라고 하자. 이 경우, 가장 자주 나오는 곤충 종류 그룹의 크기는 $3$이다. 종류 $9$인 곤충의 그룹과 종류 $11$인 곤충의 그룹이 가장 자주 나오는 곤충 종류 그룹이며, 각각 $3$ 마리의 곤충으로 이루어져 있다. 가장 드문 곤충 종류 그룹의 크기는 $1$이다. 종류 $7$, 종류 $0$, 종류 $100$인 곤충의 그룹에는 각각 $1$ 마리의 곤충이 속한다.

블랑콘씨는 곤충의 종류를 알지 못한다. 곤충의 종류에 대한 정보를 알려주는 단추가 하나 달린 기계가 있다. 처음, 이 기계는 비어 있다. 기계를 이용하기 위해, 다음 세 가지 종류의 연산을 사용할 수 있다.

  1. 곤충 한 마리를 기계 안에 넣는다.
  2. 곤충 한 마리를 기계에서 빼낸다.
  3. 기계의 단추를 누른다.

각각의 연산은 최대 $40\,000$ 번 수행될 수 있다.

단추가 눌려질 때마다, 이 기계는 현재 기계에 들어 있는 곤충들만 이용해서, 이 중 가장 자주 나오는 곤충 종류 그룹의 크기를 알려준다.

당신이 할 일은 이 기계를 사용해서 블랑콘씨 집 주위의 $N$ 마리 곤충들 중 가장 드문 곤충 종류 그룹의 크기를 구하는 것이다. 덤으로, 어떤 서브태스크에서는, 특정한 명령이 실행되는 횟수에 따라 여러분의 점수가 결정된다 (자세한 내용은 Subtasks 참고).

구현

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

int min_cardinality(int N)
  • $N$: 곤충의 수
  • 이 함수는 블랑콘씨 집 주위에 있는 모든 $N$ 마리 곤충들 중 가장 드문 곤충 종류 그룹의 크기를 리턴해야 한다.
  • 이 함수는 정확히 한 번 호출된다.

위 함수는 다음 함수들을 호출할 수 있다.

void move_inside(int i)
  • $i$: 기계에 집어넣을 곤충의 인덱스. $i$ 값은 $0$ 이상 $N - 1$ 이하여야 한다.
  • 만약 이 곤충이 이미 기계 안에 있다면, 이 함수 호출은 기계 안에 있는 곤충의 집합을 바꾸지 않는다. 하지만 이 호출도 별도의 함수 호출 한 번으로 계산된다.
  • 이 함수는 최대 $40\,000$ 번 호출될 수 있다.
void move_outside(int i)
  • $i$: 기계에서 뺄 곤충의 인덱스. $i$ 값은 $0$ 이상 $N - 1$ 이하여야 한다.
  • 만약 이 곤충이 이미 기계 밖에 있다면, 이 함수 호출은 기계 안에 있는 곤충의 집합을 바꾸지 않는다. 하지만 이 호출도 별도의 함수 호출 한 번으로 계산된다.
  • 이 함수는 최대 $40\,000$ 번 호출될 수 있다.
int press_button()
  • 이 함수는 기계 안에 있는 곤충들 중에서, 가장 자주 나오는 곤충 종류 그룹의 크기를 알려준다. 전체 곤충이 아니고 기계 안에 있는 곤충만 고려한다는데 유의하라.
  • 이 함수는 최대 $40\,000$ 번 호출될 수 있다.
  • 그레이더는 적응적(adaptive)이지 않다. 즉, 곤충 $N$ 마리의 종류는 min_cardinality 함수를 호출하기 전에 이미 결정되어 있다.

예제

$6$ 마리 곤충이 있고, 종류가 차례로 $[5, 8, 9, 5, 9, 9]$인 시나리오를 생각해보자. min_cardinality 함수는 다음과 같이 호출된다.

min_cardinality(6)

이 함수는 move_inside, move_outside, press_button를 다음과 같이 호출한다.

호출하는 함수 리턴 값 기계 안에 있는 곤충 기계 안의 곤충들 종류
$\{\}$ $[]$
move_inside(0) $\{0\}$ $[5]$
press_button() $1$ $\{0\}$ $[5]$
move_inside(1) $\{0, 1\}$ $[5, 8]$
press_button() $1$ $\{0, 1\}$ $[5, 8]$
move_inside(3) $\{0, 1, 3\}$ $[5, 8, 5]$
press_button() $2$ $\{0, 1, 3\}$ $[5, 8, 5]$
move_inside(2) $\{0, 1, 2, 3\}$ $[5, 8, 9, 5]$
move_inside(4) $\{0, 1, 2, 3, 4\}$ $[5, 8, 9, 5, 9]$
move_inside(5) $\{0, 1, 2, 3, 4, 5\}$ $[5, 8, 9, 5, 9, 9]$
press_button() $3$ $\{0, 1, 2, 3, 4, 5\}$ $[5, 8, 9, 5, 9, 9]$
move_inside(5) $\{0, 1, 2, 3, 4, 5\}$ $[5, 8, 9, 5, 9, 9]$
press_button() $3$ $\{0, 1, 2, 3, 4, 5\}$ $[5, 8, 9, 5, 9, 9]$
move_outside(5) $\{0, 1, 2, 3, 4\}$ $[5, 8, 9, 5, 9]$
press_button() $2$ $\{0, 1, 2, 3, 4\}$ $[5, 8, 9, 5, 9]$

이 시점에서, 가장 드문 곤충 종류 그룹의 크기가 $1$ 임을 아는데 충분한 정보를 얻게 된다. 따라서, min_cardinality 함수의 리턴값은 $1$이어야 한다.

이 예제에서, move_inside 함수는 $7$ 번, move_outside 함수는 $1$ 번, press_button 함수는 $6$ 번 호출되었다.

제한

  • $2 \le N \le 2000$

서브태스크

번호배점제한
110

$N \le 200$

215

$N \le 1000$

375

추가적인 제약 조건이 없다.

어떤 테스트 케이스에서든, 함수 move_inside, move_outside, press_button를 호출할 때 Implementation Details에서 설명한 제약 조건을 만족하지 않았다거나, min_cardinality 함수의 출력이 틀렸다면, 해당 서브태스크에서 여러분의 점수는 $0$점이다.

$q$가 move_inside 함수 호출 횟수, move_outside 함수 호출 횟수, press_button 함수 호출 횟수 세 값 중 최대값이라고 하자.

서브태스크 3에서는 부분 점수가 있다. $m$이 이 서브태스크의 모든 테스트케이스에서 $\frac{q}{N}$의 최대값이라고 하자. 이 서브태스크에서 얻을 수 있는 점수는 다음 표에 따라 계산된다.

조건 점수
$20 \lt m$ $0$ (CMS에서 "Output isn’t correct"로 출력)
$6 \lt m \le 20$ $\frac{225}{m - 2}$
$3 \lt m \le 6$ $81 - \frac{2}{3} m^2$
$m \le 3$ $75$
W3sicHJvYmxlbV9pZCI6IjI1NDQyIiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHViNGRjXHViYjM4IFx1YWNlNFx1Y2RhOSIsImRlc2NyaXB0aW9uIjoiPHA+XHViZTE0XHViNzkxXHVjZjU4XHVjNTI4XHVjNzU4IFx1YzlkMSBcdWM4ZmNcdWM3MDRcdWI5N2MgXHViM2NjXHVjNTQ0XHViMmU0XHViMmM4XHViMjk0ICROJCBcdWI5YzhcdWI5YWNcdWM3NTggXHVhY2U0XHVjZGE5XHVjNzc0IFx1Yzc4OFx1YWNlMCwgXHVhYzAxXHVhYzAxICQwJFx1YzVkMFx1YzExYyAkTiAtIDEkXHViODVjIFx1YmM4OFx1ZDYzOFx1YWMwMCBcdWI5ZTRcdWFjYThcdWM4MzggXHVjNzg4XHViMmU0LiBcdWFjMDEgXHVhY2U0XHVjZGE5XHViOWM4XHViMmU0IFx1Yzc5MFx1YzJlMFx1Yzc3NCBcdWMxOGRcdWQ1NThcdWIyOTQgPHN0cm9uZz5cdWM4ODVcdWI5NTg8XC9zdHJvbmc+XHVhYzAwIFx1Yzc4OFx1YWNlMCwgJDAkIFx1Yzc3NFx1YzBjMSAkMTBeOSQgXHVjNzc0XHVkNTU4XHVjNzc4IFx1YzgxNVx1YzIxOFx1Yjg1YyBcdWQ0NWNcdWQ2MDRcdWI0MWNcdWIyZTQuIFx1YmNmNVx1YzIxOFx1Yzc1OCBcdWFjZTRcdWNkYTlcdWM3NzQgXHVhYzE5XHVjNzQwIFx1Yzg4NVx1Yjk1OFx1YzVkMCBcdWMxOGRcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhY2U0XHVjZGE5XHViNGU0XHVjNzQ0IFx1Yzg4NVx1Yjk1OFx1YzVkMCBcdWI1MzBcdWI3N2MgXHVhZGY4XHViOGY5XHVjNzNjXHViODVjIFx1YmFhOFx1YzU0NFx1YmNmNFx1YWUzMFx1Yjg1YyBcdWQ1NThcdWM3OTAuIDxzdHJvbmc+XHVhYzAwXHVjN2E1IFx1Yzc5MFx1YzhmYyBcdWIwOThcdWM2MjRcdWIyOTQ8XC9zdHJvbmc+IFx1YWNlNFx1Y2RhOSBcdWM4ODVcdWI5NTggXHVhZGY4XHViOGY5XHVjNzU4IFx1ZDA2Y1x1YWUzMFx1YjI5NCBcdWFjMDBcdWM3YTUgXHViOWNlXHVjNzQwIFx1YzIxOFx1Yzc1OCBcdWFjZTRcdWNkYTlcdWM3NzQgXHVjMThkXHVkNTU4XHViMjk0IFx1YWRmOFx1YjhmOVx1Yzc1OCBcdWFjZTRcdWNkYTkgXHVjMjE4XHVjNzc0XHViMmU0LiBcdWJlNDRcdWMyYjdcdWQ1NThcdWFjOGMsIDxzdHJvbmc+XHVhYzAwXHVjN2E1IFx1YjRkY1x1YmIzODxcL3N0cm9uZz4gXHVhY2U0XHVjZGE5IFx1Yzg4NVx1Yjk1OCBcdWFkZjhcdWI4ZjlcdWM3NTggXHVkMDZjXHVhZTMwXHViMjk0IFx1YWMwMFx1YzdhNSBcdWM4MDFcdWM3NDAgXHVjMjE4XHVjNzU4IFx1YWNlNFx1Y2RhOVx1Yzc3NCBcdWMxOGRcdWQ1NThcdWIyOTQgXHVhZGY4XHViOGY5XHVjNzU4IFx1YWNlNFx1Y2RhOSBcdWMyMThcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQsICQxMSQgXHViOWM4XHViOWFjXHVjNzU4IFx1YWNlNFx1Y2RhOVx1Yzc3NCBcdWM3ODhcdWFjZTAsIFx1Yzg4NVx1Yjk1OFx1YWMwMCBcdWNjMjhcdWI4NDBcdWI4NWMgJFs1LCA3LCA5LCAxMSwgMTEsIDUsIDAsIDExLCA5LCAxMDAsIDldJFx1Yjc3Y1x1YWNlMCBcdWQ1NThcdWM3OTAuIFx1Yzc3NCBcdWFjYmRcdWM2YjAsIDxzdHJvbmc+XHVhYzAwXHVjN2E1IFx1Yzc5MFx1YzhmYyBcdWIwOThcdWM2MjRcdWIyOTQ8XC9zdHJvbmc+IFx1YWNlNFx1Y2RhOSBcdWM4ODVcdWI5NTggXHVhZGY4XHViOGY5XHVjNzU4IFx1ZDA2Y1x1YWUzMFx1YjI5NCAkMyRcdWM3NzRcdWIyZTQuIFx1Yzg4NVx1Yjk1OCAkOSRcdWM3NzggXHVhY2U0XHVjZGE5XHVjNzU4IFx1YWRmOFx1YjhmOVx1YWNmYyBcdWM4ODVcdWI5NTggJDExJFx1Yzc3OCBcdWFjZTRcdWNkYTlcdWM3NTggXHVhZGY4XHViOGY5XHVjNzc0IFx1YWMwMFx1YzdhNSBcdWM3OTBcdWM4ZmMgXHViMDk4XHVjNjI0XHViMjk0IFx1YWNlNFx1Y2RhOSBcdWM4ODVcdWI5NTggXHVhZGY4XHViOGY5XHVjNzc0XHViYTcwLCBcdWFjMDFcdWFjMDEgJDMkIFx1YjljOFx1YjlhY1x1Yzc1OCBcdWFjZTRcdWNkYTlcdWM3M2NcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjODM4IFx1Yzc4OFx1YjJlNC4gPHN0cm9uZz5cdWFjMDBcdWM3YTUgXHViNGRjXHViYjM4PFwvc3Ryb25nPiBcdWFjZTRcdWNkYTkgXHVjODg1XHViOTU4IFx1YWRmOFx1YjhmOVx1Yzc1OCBcdWQwNmNcdWFlMzBcdWIyOTQgJDEkXHVjNzc0XHViMmU0LiBcdWM4ODVcdWI5NTggJDckLCBcdWM4ODVcdWI5NTggJDAkLCBcdWM4ODVcdWI5NTggJDEwMCRcdWM3NzggXHVhY2U0XHVjZGE5XHVjNzU4IFx1YWRmOFx1YjhmOVx1YzVkMFx1YjI5NCBcdWFjMDFcdWFjMDEgJDEkIFx1YjljOFx1YjlhY1x1Yzc1OCBcdWFjZTRcdWNkYTlcdWM3NzQgXHVjMThkXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWJlMTRcdWI3OTFcdWNmNThcdWM1MjhcdWIyOTQgXHVhY2U0XHVjZGE5XHVjNzU4IFx1Yzg4NVx1Yjk1OFx1Yjk3YyBcdWM1NGNcdWM5YzAgXHViYWJiXHVkNTVjXHViMmU0LiBcdWFjZTRcdWNkYTlcdWM3NTggXHVjODg1XHViOTU4XHVjNWQwIFx1YjMwMFx1ZDU1YyBcdWM4MTVcdWJjZjRcdWI5N2MgXHVjNTRjXHViODI0XHVjOGZjXHViMjk0IFx1YjJlOFx1Y2Q5NFx1YWMwMCBcdWQ1NThcdWIwOTggXHViMmVjXHViOWIwIFx1YWUzMFx1YWNjNFx1YWMwMCBcdWM3ODhcdWIyZTQuIFx1Y2M5OFx1Yzc0YywgXHVjNzc0IFx1YWUzMFx1YWNjNFx1YjI5NCBcdWJlNDRcdWM1YjQgXHVjNzg4XHViMmU0LiBcdWFlMzBcdWFjYzRcdWI5N2MgXHVjNzc0XHVjNmE5XHVkNTU4XHVhZTMwIFx1YzcwNFx1ZDU3NCwgXHViMmU0XHVjNzRjIFx1YzEzOCBcdWFjMDBcdWM5YzAgXHVjODg1XHViOTU4XHVjNzU4IFx1YzVmMFx1YzBiMFx1Yzc0NCBcdWMwYWNcdWM2YTlcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPG9sPlxyXG5cdDxsaT5cdWFjZTRcdWNkYTkgXHVkNTVjIFx1YjljOFx1YjlhY1x1Yjk3YyBcdWFlMzBcdWFjYzQgXHVjNTQ4XHVjNWQwIFx1YjEyM1x1YjI5NFx1YjJlNC48XC9saT5cclxuXHQ8bGk+XHVhY2U0XHVjZGE5IFx1ZDU1YyBcdWI5YzhcdWI5YWNcdWI5N2MgXHVhZTMwXHVhY2M0XHVjNWQwXHVjMTFjIFx1YmU3Y1x1YjBiOFx1YjJlNC48XC9saT5cclxuXHQ8bGk+XHVhZTMwXHVhY2M0XHVjNzU4IFx1YjJlOFx1Y2Q5NFx1Yjk3YyBcdWIyMDRcdWI5NzhcdWIyZTQuPFwvbGk+XHJcbjxcL29sPlxyXG5cclxuPHA+XHVhYzAxXHVhYzAxXHVjNzU4IFx1YzVmMFx1YzBiMFx1Yzc0MCBcdWNkNWNcdWIzMDAgJDQwXFwsMDAwJCBcdWJjODggXHVjMjE4XHVkNTg5XHViNDIwIFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjJlOFx1Y2Q5NFx1YWMwMCBcdWIyMGNcdWI4MjRcdWM5YzggXHViNTRjXHViOWM4XHViMmU0LCBcdWM3NzQgXHVhZTMwXHVhY2M0XHViMjk0IFx1ZDYwNFx1YzdhYyBcdWFlMzBcdWFjYzRcdWM1ZDAgXHViNGU0XHVjNWI0IFx1Yzc4OFx1YjI5NCBcdWFjZTRcdWNkYTlcdWI0ZTRcdWI5Y2MgXHVjNzc0XHVjNmE5XHVkNTc0XHVjMTFjLCBcdWM3NzQgXHVjOTExIDxzdHJvbmc+XHVhYzAwXHVjN2E1IFx1Yzc5MFx1YzhmYyBcdWIwOThcdWM2MjRcdWIyOTQ8XC9zdHJvbmc+IFx1YWNlNFx1Y2RhOSBcdWM4ODVcdWI5NTggXHVhZGY4XHViOGY5XHVjNzU4IFx1ZDA2Y1x1YWUzMFx1Yjk3YyBcdWM1NGNcdWI4MjRcdWM5MDBcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjJmOVx1YzJlMFx1Yzc3NCBcdWQ1NjAgXHVjNzdjXHVjNzQwIFx1Yzc3NCBcdWFlMzBcdWFjYzRcdWI5N2MgXHVjMGFjXHVjNmE5XHVkNTc0XHVjMTFjIFx1YmUxNFx1Yjc5MVx1Y2Y1OFx1YzUyOCBcdWM5ZDEgXHVjOGZjXHVjNzA0XHVjNzU4ICROJCBcdWI5YzhcdWI5YWMgXHVhY2U0XHVjZGE5XHViNGU0IFx1YzkxMSA8c3Ryb25nPlx1YWMwMFx1YzdhNSBcdWI0ZGNcdWJiMzg8XC9zdHJvbmc+IFx1YWNlNFx1Y2RhOSBcdWM4ODVcdWI5NTggXHVhZGY4XHViOGY5XHVjNzU4IFx1ZDA2Y1x1YWUzMFx1Yjk3YyBcdWFkNmNcdWQ1NThcdWIyOTQgXHVhYzgzXHVjNzc0XHViMmU0LiBcdWIzNjRcdWM3M2NcdWI4NWMsIFx1YzViNFx1YjVhNCBcdWMxMWNcdWJlMGNcdWQwZGNcdWMyYTRcdWQwNmNcdWM1ZDBcdWMxMWNcdWIyOTQsIFx1ZDJiOVx1YzgxNVx1ZDU1YyBcdWJhODVcdWI4MzlcdWM3NzQgXHVjMmU0XHVkNTg5XHViNDE4XHViMjk0IFx1ZDY5Zlx1YzIxOFx1YzVkMCBcdWI1MzBcdWI3N2MgXHVjNWVjXHViN2VjXHViZDg0XHVjNzU4IFx1YzgxMFx1YzIxOFx1YWMwMCBcdWFjYjBcdWM4MTVcdWI0MWNcdWIyZTQgKFx1Yzc5MFx1YzEzOFx1ZDU1YyBcdWIwYjRcdWM2YTlcdWM3NDAgU3VidGFza3MgXHVjYzM4XHVhY2UwKS48XC9wPlxyXG4iLCJpbnB1dCI6IiIsIm91dHB1dCI6IiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjAiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IktvcmVhbiIsImxpbWl0IjoiPHVsPlxyXG5cdDxsaT4kMiBcXGxlIE4gXFxsZSAyMDAwJDxcL2xpPlxyXG48XC91bD5cclxuIiwic3VidGFzazEiOiI8cD4kTiBcXGxlIDIwMCQ8XC9wPlxyXG4iLCJzdWJ0YXNrMiI6IjxwPiROIFxcbGUgMTAwMCQ8XC9wPlxyXG4iLCJzdWJ0YXNrMyI6IjxwPlx1Y2Q5NFx1YWMwMFx1YzgwMVx1Yzc3OCBcdWM4MWNcdWM1N2QgXHVjODcwXHVhYzc0XHVjNzc0IFx1YzVjNlx1YjJlNC48XC9wPlxyXG4iLCJjdXN0b21faW1wbGVtZW50YXRpb24iOiI8cD5cdWIyZTRcdWM3NGMgXHVkNTY4XHVjMjE4XHViOTdjIFx1YWQ2Y1x1ZDYwNFx1ZDU3NFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwcmU+XHJcbjxjb2RlPmludCBtaW5fY2FyZGluYWxpdHkoaW50IE4pXHJcbjxcL2NvZGU+PFwvcHJlPlxyXG5cclxuPHVsPlxyXG5cdDxsaT4kTiQ6IFx1YWNlNFx1Y2RhOVx1Yzc1OCBcdWMyMTg8XC9saT5cclxuXHQ8bGk+XHVjNzc0IFx1ZDU2OFx1YzIxOFx1YjI5NCBcdWJlMTRcdWI3OTFcdWNmNThcdWM1MjggXHVjOWQxIFx1YzhmY1x1YzcwNFx1YzVkMCBcdWM3ODhcdWIyOTQgXHViYWE4XHViNGUwICROJCBcdWI5YzhcdWI5YWMgXHVhY2U0XHVjZGE5XHViNGU0IFx1YzkxMSA8c3Ryb25nPlx1YWMwMFx1YzdhNSBcdWI0ZGNcdWJiMzg8XC9zdHJvbmc+IFx1YWNlNFx1Y2RhOSBcdWM4ODVcdWI5NTggXHVhZGY4XHViOGY5XHVjNzU4IFx1ZDA2Y1x1YWUzMFx1Yjk3YyBcdWI5YWNcdWQxMzRcdWQ1NzRcdWM1N2MgXHVkNTVjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWM3NzQgXHVkNTY4XHVjMjE4XHViMjk0IFx1YzgxNVx1ZDY1NVx1ZDc4OCBcdWQ1NWMgXHViYzg4IFx1ZDYzOFx1Y2Q5Y1x1YjQxY1x1YjJlNC48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5cdWM3MDQgXHVkNTY4XHVjMjE4XHViMjk0IFx1YjJlNFx1Yzc0YyBcdWQ1NjhcdWMyMThcdWI0ZTRcdWM3NDQgXHVkNjM4XHVjZDljXHVkNTYwIFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwcmU+XHJcbjxjb2RlPnZvaWQgbW92ZV9pbnNpZGUoaW50IGkpXHJcbjxcL2NvZGU+PFwvcHJlPlxyXG5cclxuPHVsPlxyXG5cdDxsaT4kaSQ6IFx1YWUzMFx1YWNjNFx1YzVkMCBcdWM5ZDFcdWM1YjRcdWIxMjNcdWM3NDQgXHVhY2U0XHVjZGE5XHVjNzU4IFx1Yzc3OFx1YjM3MVx1YzJhNC4gJGkkIFx1YWMxMlx1Yzc0MCAkMCQgXHVjNzc0XHVjMGMxICROIC0gMSQgXHVjNzc0XHVkNTU4XHVjNWVjXHVjNTdjIFx1ZDU1Y1x1YjJlNC48XC9saT5cclxuXHQ8bGk+XHViOWNjXHVjNTdkIFx1Yzc3NCBcdWFjZTRcdWNkYTlcdWM3NzQgXHVjNzc0XHViYmY4IFx1YWUzMFx1YWNjNCBcdWM1NDhcdWM1ZDAgXHVjNzg4XHViMmU0XHViYTc0LCBcdWM3NzQgXHVkNTY4XHVjMjE4IFx1ZDYzOFx1Y2Q5Y1x1Yzc0MCBcdWFlMzBcdWFjYzQgXHVjNTQ4XHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWFjZTRcdWNkYTlcdWM3NTggXHVjOWQxXHVkNTY5XHVjNzQ0IFx1YmMxNFx1YWZiOFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuIFx1ZDU1OFx1YzljMFx1YjljYyBcdWM3NzQgXHVkNjM4XHVjZDljXHViM2M0IFx1YmNjNFx1YjNjNFx1Yzc1OCBcdWQ1NjhcdWMyMTggXHVkNjM4XHVjZDljIFx1ZDU1YyBcdWJjODhcdWM3M2NcdWI4NWMgXHVhY2M0XHVjMGIwXHViNDFjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWM3NzQgXHVkNTY4XHVjMjE4XHViMjk0IFx1Y2Q1Y1x1YjMwMCAkNDBcXCwwMDAkIFx1YmM4OCBcdWQ2MzhcdWNkOWNcdWI0MjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cHJlPlxyXG48Y29kZT52b2lkIG1vdmVfb3V0c2lkZShpbnQgaSlcclxuPFwvY29kZT48XC9wcmU+XHJcblxyXG48dWw+XHJcblx0PGxpPiRpJDogXHVhZTMwXHVhY2M0XHVjNWQwXHVjMTFjIFx1YmU4NCBcdWFjZTRcdWNkYTlcdWM3NTggXHVjNzc4XHViMzcxXHVjMmE0LiAkaSQgXHVhYzEyXHVjNzQwICQwJCBcdWM3NzRcdWMwYzEgJE4gLSAxJCBcdWM3NzRcdWQ1NThcdWM1ZWNcdWM1N2MgXHVkNTVjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWI5Y2NcdWM1N2QgXHVjNzc0IFx1YWNlNFx1Y2RhOVx1Yzc3NCBcdWM3NzRcdWJiZjggXHVhZTMwXHVhY2M0IFx1YmMxNlx1YzVkMCBcdWM3ODhcdWIyZTRcdWJhNzQsIFx1Yzc3NCBcdWQ1NjhcdWMyMTggXHVkNjM4XHVjZDljXHVjNzQwIFx1YWUzMFx1YWNjNCBcdWM1NDhcdWM1ZDAgXHVjNzg4XHViMjk0IFx1YWNlNFx1Y2RhOVx1Yzc1OCBcdWM5ZDFcdWQ1NjlcdWM3NDQgXHViYzE0XHVhZmI4XHVjOWMwIFx1YzU0YVx1YjI5NFx1YjJlNC4gXHVkNTU4XHVjOWMwXHViOWNjIFx1Yzc3NCBcdWQ2MzhcdWNkOWNcdWIzYzQgXHViY2M0XHViM2M0XHVjNzU4IFx1ZDU2OFx1YzIxOCBcdWQ2MzhcdWNkOWMgXHVkNTVjIFx1YmM4OFx1YzczY1x1Yjg1YyBcdWFjYzRcdWMwYjBcdWI0MWNcdWIyZTQuPFwvbGk+XHJcblx0PGxpPlx1Yzc3NCBcdWQ1NjhcdWMyMThcdWIyOTQgXHVjZDVjXHViMzAwICQ0MFxcLDAwMCQgXHViYzg4IFx1ZDYzOFx1Y2Q5Y1x1YjQyMCBcdWMyMTggXHVjNzg4XHViMmU0LjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwcmU+XHJcbjxjb2RlPmludCBwcmVzc19idXR0b24oKVxyXG48XC9jb2RlPjxcL3ByZT5cclxuXHJcbjx1bD5cclxuXHQ8bGk+XHVjNzc0IFx1ZDU2OFx1YzIxOFx1YjI5NCBcdWFlMzBcdWFjYzQgXHVjNTQ4XHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWFjZTRcdWNkYTlcdWI0ZTQgXHVjOTExXHVjNWQwXHVjMTFjLCA8c3Ryb25nPlx1YWMwMFx1YzdhNSBcdWM3OTBcdWM4ZmMgXHViMDk4XHVjNjI0XHViMjk0PFwvc3Ryb25nPiBcdWFjZTRcdWNkYTkgXHVjODg1XHViOTU4IFx1YWRmOFx1YjhmOVx1Yzc1OCBcdWQwNmNcdWFlMzBcdWI5N2MgXHVjNTRjXHViODI0XHVjOTAwXHViMmU0LiBcdWM4MDRcdWNjYjQgXHVhY2U0XHVjZGE5XHVjNzc0IFx1YzU0NFx1YjJjOFx1YWNlMCBcdWFlMzBcdWFjYzQgXHVjNTQ4XHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWFjZTRcdWNkYTlcdWI5Y2MgXHVhY2UwXHViODI0XHVkNTVjXHViMmU0XHViMjk0XHViMzcwIFx1YzcyMFx1Yzc1OFx1ZDU1OFx1Yjc3Yy48XC9saT5cclxuXHQ8bGk+XHVjNzc0IFx1ZDU2OFx1YzIxOFx1YjI5NCBcdWNkNWNcdWIzMDAgJDQwXFwsMDAwJCBcdWJjODggXHVkNjM4XHVjZDljXHViNDIwIFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvbGk+XHJcblx0PGxpPlx1YWRmOFx1YjgwOFx1Yzc3NFx1YjM1NFx1YjI5NCA8c3Ryb25nPlx1YzgwMVx1Yzc1MVx1YzgwMShhZGFwdGl2ZSlcdWM3NzRcdWM5YzAgXHVjNTRhXHViMmU0LjxcL3N0cm9uZz4gXHVjOTg5LCBcdWFjZTRcdWNkYTkgJE4kIFx1YjljOFx1YjlhY1x1Yzc1OCBcdWM4ODVcdWI5NThcdWIyOTQgPGNvZGU+bWluX2NhcmRpbmFsaXR5PFwvY29kZT4gXHVkNTY4XHVjMjE4XHViOTdjIFx1ZDYzOFx1Y2Q5Y1x1ZDU1OFx1YWUzMCBcdWM4MDRcdWM1ZDAgXHVjNzc0XHViYmY4IFx1YWNiMFx1YzgxNVx1YjQxOFx1YzViNCBcdWM3ODhcdWIyZTQuPFwvbGk+XHJcbjxcL3VsPlxyXG4iLCJjdXN0b21fZXhhbXBsZSI6IjxwPiQ2JCBcdWI5YzhcdWI5YWMgXHVhY2U0XHVjZGE5XHVjNzc0IFx1Yzc4OFx1YWNlMCwgXHVjODg1XHViOTU4XHVhYzAwIFx1Y2MyOFx1Yjg0MFx1Yjg1YyAkWzUsIDgsIDksIDUsIDksIDldJFx1Yzc3OCBcdWMyZGNcdWIwOThcdWI5YWNcdWM2MjRcdWI5N2MgXHVjMGRkXHVhYzAxXHVkNTc0XHViY2Y0XHVjNzkwLiA8Y29kZT5taW5fY2FyZGluYWxpdHk8XC9jb2RlPiBcdWQ1NjhcdWMyMThcdWIyOTQgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1Yzc3NCBcdWQ2MzhcdWNkOWNcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwcmU+XHJcbjxjb2RlPm1pbl9jYXJkaW5hbGl0eSg2KVxyXG48XC9jb2RlPjxcL3ByZT5cclxuXHJcbjxwPlx1Yzc3NCBcdWQ1NjhcdWMyMThcdWIyOTQgPGNvZGU+bW92ZV9pbnNpZGU8XC9jb2RlPiwgPGNvZGU+bW92ZV9vdXRzaWRlPFwvY29kZT4sIDxjb2RlPnByZXNzX2J1dHRvbjxcL2NvZGU+XHViOTdjIFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWM3NzQgXHVkNjM4XHVjZDljXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0aC1jZW50ZXIgdGQtY2VudGVyXCI+XHJcblx0PHRoZWFkPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGg+XHVkNjM4XHVjZDljXHVkNTU4XHViMjk0IFx1ZDU2OFx1YzIxODxcL3RoPlxyXG5cdFx0XHQ8dGg+XHViOWFjXHVkMTM0IFx1YWMxMjxcL3RoPlxyXG5cdFx0XHQ8dGg+XHVhZTMwXHVhY2M0IFx1YzU0OFx1YzVkMCBcdWM3ODhcdWIyOTQgXHVhY2U0XHVjZGE5PFwvdGg+XHJcblx0XHRcdDx0aD5cdWFlMzBcdWFjYzQgXHVjNTQ4XHVjNzU4IFx1YWNlNFx1Y2RhOVx1YjRlNCBcdWM4ODVcdWI5NTg8XC90aD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3RoZWFkPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPiA8XC90ZD5cclxuXHRcdFx0PHRkPiRcXHtcXH0kPFwvdGQ+XHJcblx0XHRcdDx0ZD4kW10kPFwvdGQ+XHJcblx0XHRcdDx0ZD4gPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjxjb2RlPm1vdmVfaW5zaWRlKDApPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiA8XC90ZD5cclxuXHRcdFx0PHRkPiRcXHswXFx9JDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFs1XSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+cHJlc3NfYnV0dG9uKCk8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+JDEkPFwvdGQ+XHJcblx0XHRcdDx0ZD4kXFx7MFxcfSQ8XC90ZD5cclxuXHRcdFx0PHRkPiRbNV0kPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjxjb2RlPm1vdmVfaW5zaWRlKDEpPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiA8XC90ZD5cclxuXHRcdFx0PHRkPiRcXHswLCAxXFx9JDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFs1LCA4XSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+cHJlc3NfYnV0dG9uKCk8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+JDEkPFwvdGQ+XHJcblx0XHRcdDx0ZD4kXFx7MCwgMVxcfSQ8XC90ZD5cclxuXHRcdFx0PHRkPiRbNSwgOF0kPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjxjb2RlPm1vdmVfaW5zaWRlKDMpPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiA8XC90ZD5cclxuXHRcdFx0PHRkPiRcXHswLCAxLCAzXFx9JDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFs1LCA4LCA1XSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+cHJlc3NfYnV0dG9uKCk8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+JDIkPFwvdGQ+XHJcblx0XHRcdDx0ZD4kXFx7MCwgMSwgM1xcfSQ8XC90ZD5cclxuXHRcdFx0PHRkPiRbNSwgOCwgNV0kPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjxjb2RlPm1vdmVfaW5zaWRlKDIpPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiA8XC90ZD5cclxuXHRcdFx0PHRkPiRcXHswLCAxLCAyLCAzXFx9JDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFs1LCA4LCA5LCA1XSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+bW92ZV9pbnNpZGUoNCk8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+IDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFxcezAsIDEsIDIsIDMsIDRcXH0kPFwvdGQ+XHJcblx0XHRcdDx0ZD4kWzUsIDgsIDksIDUsIDldJDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD48Y29kZT5tb3ZlX2luc2lkZSg1KTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4gPFwvdGQ+XHJcblx0XHRcdDx0ZD4kXFx7MCwgMSwgMiwgMywgNCwgNVxcfSQ8XC90ZD5cclxuXHRcdFx0PHRkPiRbNSwgOCwgOSwgNSwgOSwgOV0kPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjxjb2RlPnByZXNzX2J1dHRvbigpPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiQzJDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFxcezAsIDEsIDIsIDMsIDQsIDVcXH0kPFwvdGQ+XHJcblx0XHRcdDx0ZD4kWzUsIDgsIDksIDUsIDksIDldJDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD48Y29kZT5tb3ZlX2luc2lkZSg1KTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4gPFwvdGQ+XHJcblx0XHRcdDx0ZD4kXFx7MCwgMSwgMiwgMywgNCwgNVxcfSQ8XC90ZD5cclxuXHRcdFx0PHRkPiRbNSwgOCwgOSwgNSwgOSwgOV0kPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjxjb2RlPnByZXNzX2J1dHRvbigpPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiQzJDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFxcezAsIDEsIDIsIDMsIDQsIDVcXH0kPFwvdGQ+XHJcblx0XHRcdDx0ZD4kWzUsIDgsIDksIDUsIDksIDldJDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD48Y29kZT5tb3ZlX291dHNpZGUoNSk8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+IDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFxcezAsIDEsIDIsIDMsIDRcXH0kPFwvdGQ+XHJcblx0XHRcdDx0ZD4kWzUsIDgsIDksIDUsIDldJDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD48Y29kZT5wcmVzc19idXR0b24oKTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4kMiQ8XC90ZD5cclxuXHRcdFx0PHRkPiRcXHswLCAxLCAyLCAzLCA0XFx9JDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFs1LCA4LCA5LCA1LCA5XSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPlx1Yzc3NCBcdWMyZGNcdWM4MTBcdWM1ZDBcdWMxMWMsIFx1YWMwMFx1YzdhNSBcdWI0ZGNcdWJiMzggXHVhY2U0XHVjZGE5IFx1Yzg4NVx1Yjk1OCBcdWFkZjhcdWI4ZjlcdWM3NTggXHVkMDZjXHVhZTMwXHVhYzAwICQxJCBcdWM3ODRcdWM3NDQgXHVjNTQ0XHViMjk0XHViMzcwIFx1Y2RhOVx1YmQ4NFx1ZDU1YyBcdWM4MTVcdWJjZjRcdWI5N2MgXHVjNWJiXHVhYzhjIFx1YjQxY1x1YjJlNC4gXHViNTMwXHViNzdjXHVjMTFjLCA8Y29kZT5taW5fY2FyZGluYWxpdHk8XC9jb2RlPiBcdWQ1NjhcdWMyMThcdWM3NTggXHViOWFjXHVkMTM0XHVhYzEyXHVjNzQwICQxJFx1Yzc3NFx1YzViNFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yzc3NCBcdWM2MDhcdWM4MWNcdWM1ZDBcdWMxMWMsIDxjb2RlPm1vdmVfaW5zaWRlPFwvY29kZT4gXHVkNTY4XHVjMjE4XHViMjk0ICQ3JCBcdWJjODgsIDxjb2RlPm1vdmVfb3V0c2lkZTxcL2NvZGU+IFx1ZDU2OFx1YzIxOFx1YjI5NCAkMSQgXHViYzg4LCAgPGNvZGU+cHJlc3NfYnV0dG9uPFwvY29kZT4gXHVkNTY4XHVjMjE4XHViMjk0ICQ2JCBcdWJjODggXHVkNjM4XHVjZDljXHViNDE4XHVjNWM4XHViMmU0LjxcL3A+XHJcbiIsImN1c3RvbV9zdWJ0YXNrX3Njb3JpbmdfYSI6IjxwPlx1YzViNFx1YjVhNCBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHVjNWQwXHVjMTFjXHViNGUwLCBcdWQ1NjhcdWMyMTggPGNvZGU+bW92ZV9pbnNpZGU8XC9jb2RlPiwgPGNvZGU+bW92ZV9vdXRzaWRlPFwvY29kZT4sIDxjb2RlPnByZXNzX2J1dHRvbjxcL2NvZGU+XHViOTdjIFx1ZDYzOFx1Y2Q5Y1x1ZDU2MCBcdWI1NGMgSW1wbGVtZW50YXRpb24gRGV0YWlsc1x1YzVkMFx1YzExYyBcdWMxMjRcdWJhODVcdWQ1NWMgXHVjODFjXHVjNTdkIFx1Yzg3MFx1YWM3NFx1Yzc0NCBcdWI5Y2NcdWM4NzFcdWQ1NThcdWM5YzAgXHVjNTRhXHVjNTU4XHViMmU0XHVhYzcwXHViMDk4LCA8Y29kZT5taW5fY2FyZGluYWxpdHk8XC9jb2RlPiBcdWQ1NjhcdWMyMThcdWM3NTggXHVjZDljXHViODI1XHVjNzc0IFx1ZDJjMFx1YjgzOFx1YjJlNFx1YmE3NCwgXHVkNTc0XHViMmY5IFx1YzExY1x1YmUwY1x1ZDBkY1x1YzJhNFx1ZDA2Y1x1YzVkMFx1YzExYyBcdWM1ZWNcdWI3ZWNcdWJkODRcdWM3NTggXHVjODEwXHVjMjE4XHViMjk0ICQwJFx1YzgxMFx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+JHEkXHVhYzAwIDxjb2RlPm1vdmVfaW5zaWRlPFwvY29kZT4gXHVkNTY4XHVjMjE4IFx1ZDYzOFx1Y2Q5YyBcdWQ2OWZcdWMyMTgsIDxjb2RlPm1vdmVfb3V0c2lkZTxcL2NvZGU+IFx1ZDU2OFx1YzIxOCBcdWQ2MzhcdWNkOWMgXHVkNjlmXHVjMjE4LCA8Y29kZT5wcmVzc19idXR0b248XC9jb2RlPiBcdWQ1NjhcdWMyMTggXHVkNjM4XHVjZDljIFx1ZDY5Zlx1YzIxOCBcdWMxMzggXHVhYzEyIFx1YzkxMSAgPHN0cm9uZz5cdWNkNWNcdWIzMDBcdWFjMTI8XC9zdHJvbmc+XHVjNzc0XHViNzdjXHVhY2UwIFx1ZDU1OFx1Yzc5MC48XC9wPlxyXG5cclxuPHA+XHVjMTFjXHViZTBjXHVkMGRjXHVjMmE0XHVkMDZjIDNcdWM1ZDBcdWMxMWNcdWIyOTQgXHViZDgwXHViZDg0IFx1YzgxMFx1YzIxOFx1YWMwMCBcdWM3ODhcdWIyZTQuICRtJFx1Yzc3NCBcdWM3NzQgXHVjMTFjXHViZTBjXHVkMGRjXHVjMmE0XHVkMDZjXHVjNzU4IFx1YmFhOFx1YjRlMCBcdWQxNGNcdWMyYTRcdWQyYjhcdWNmMDBcdWM3NzRcdWMyYTRcdWM1ZDBcdWMxMWMgJFxcZnJhY3txfXtOfSRcdWM3NTggXHVjZDVjXHViMzAwXHVhYzEyXHVjNzc0XHViNzdjXHVhY2UwIFx1ZDU1OFx1Yzc5MC4gXHVjNzc0IFx1YzExY1x1YmUwY1x1ZDBkY1x1YzJhNFx1ZDA2Y1x1YzVkMFx1YzExYyBcdWM1YmJcdWM3NDQgXHVjMjE4IFx1Yzc4OFx1YjI5NCBcdWM4MTBcdWMyMThcdWIyOTQgXHViMmU0XHVjNzRjIFx1ZDQ1Y1x1YzVkMCBcdWI1MzBcdWI3N2MgXHVhY2M0XHVjMGIwXHViNDFjXHViMmU0LjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0aC1jZW50ZXIgdGQtY2VudGVyIHRhYmxlLWNlbnRlci01MFwiPlxyXG5cdDx0aGVhZD5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoPlx1Yzg3MFx1YWM3NDxcL3RoPlxyXG5cdFx0XHQ8dGg+XHVjODEwXHVjMjE4PFwvdGg+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90aGVhZD5cclxuXHQ8dGJvZHk+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4kMjAgXFxsdCBtJDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JDAkIChDTVNcdWM1ZDBcdWMxMWMgJnF1b3Q7PGNvZGU+T3V0cHV0IGlzbiZyc3F1bzt0IGNvcnJlY3Q8XC9jb2RlPiZxdW90O1x1Yjg1YyBcdWNkOWNcdWI4MjUpPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPiQ2IFxcbHQgbSBcXGxlIDIwJDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFxcZnJhY3syMjV9e20gLSAyfSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+JDMgXFxsdCBtIFxcbGUgNiQ8XC90ZD5cclxuXHRcdFx0PHRkPiQ4MSAtIFxcZnJhY3syfXszfSBtXjIkPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPiRtIFxcbGUgMyQ8XC90ZD5cclxuXHRcdFx0PHRkPiQ3NSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuIiwiY3VzdG9tX3NhbXBsZWdyYWRlciI6IjxwPiRUJFx1YWMwMCBcdWFlMzhcdWM3NzQgJE4kXHVjNzc4IFx1YzgxNVx1YzIxOCBcdWJjMzBcdWM1ZjRcdWM3NzRcdWFjZTAgJFRbaV0kXHVhYzAwIFx1YWNlNFx1Y2RhOSAkaSRcdWM3NTggXHVjODg1XHViOTU4XHViNzdjXHVhY2UwIFx1ZDU1OFx1Yzc5MC48XC9wPlxyXG5cclxuPHA+XHVjMGQ4XHVkNTBjIFx1YWRmOFx1YjgwOFx1Yzc3NFx1YjM1NFx1YjI5NCBcdWIyZTRcdWM3NGMgXHVjNTkxXHVjMmRkXHVjNzNjXHViODVjIFx1Yzc4NVx1YjgyNVx1Yzc0NCBcdWM3N2RcdWIyOTRcdWIyZTQuPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+bGluZSAkMSQ6ICROJDxcL2xpPlxyXG5cdDxsaT5saW5lICQyJDogJFRbMF0gXFwsIFRbMV0gXFwsIFxcbGRvdHMgXFwsIFRbTiAtIDFdJDxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPlx1YjljY1x1YzU3ZCBcdWMwZDhcdWQ1MGMgXHVhZGY4XHViODA4XHVjNzc0XHViMzU0XHVhYzAwIFx1ZDUwNFx1Yjg1Y1x1ZDFhMFx1Y2Y1Y1x1Yzc3NCBcdWM3MDRcdWJjMThcdWI0MWMgXHVhYzgzXHVjNzQ0IFx1YmMxY1x1YWNhY1x1ZDU1OFx1YmE3NCwgXHVjMGQ4XHVkNTBjIFx1YWRmOFx1YjgwOFx1Yzc3NFx1YjM1NFx1YjI5NCA8Y29kZT5Qcm90b2NvbCBWaW9sYXRpb246ICZsdDtNU0cmZ3Q7PFwvY29kZT5cdWI5N2MgXHVjZDljXHViODI1XHVkNTU4XHViMjk0XHViMzcwLDxjb2RlPiZsdDtNU0cmZ3Q7PFwvY29kZT5cdWIyOTQgXHViMmU0XHVjNzRjIFx1YzkxMSBcdWQ1NThcdWIwOThcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+PGNvZGU+aW52YWxpZCBwYXJhbWV0ZXI8XC9jb2RlPjogPGNvZGU+bW92ZV9pbnNpZGU8XC9jb2RlPiBcdWI2MTBcdWIyOTQgPGNvZGU+bW92ZV9vdXRzaWRlPFwvY29kZT5cdWI5N2MgXHVkNjM4XHVjZDljXHVkNTYwIFx1YjU0YywgJGkkIFx1YWMxMlx1Yzc3NCAkMCQgXHVjNzc0XHVjMGMxICROIC0gMSQgXHVjNzc0XHVkNTU4XHVhYzAwIFx1YzU0NFx1YjJjOFx1YjJlNC48XC9saT5cclxuXHQ8bGk+PGNvZGU+dG9vIG1hbnkgY2FsbHM8XC9jb2RlPjogPGNvZGU+bW92ZV9pbnNpZGU8XC9jb2RlPiwgPGNvZGU+bW92ZV9vdXRzaWRlPFwvY29kZT4sIDxjb2RlPnByZXNzX2J1dHRvbjxcL2NvZGU+IFx1YzkxMSA8c3Ryb25nPlx1YzViNFx1YjVhNCBcdWQ1NWM8XC9zdHJvbmc+IFx1ZDU2OFx1YzIxOFx1YWMwMCAkNDBcXCwwMDAkIFx1YmM4OCBcdWNkMDhcdWFjZmNcdWI0MThcdWM1YjQgXHVkNjM4XHVjZDljXHViNDE4XHVjNWM4XHViMmU0LjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPlx1YWRmOCBcdWM2NzhcdWM3NTggXHVhY2JkXHVjNmIwXHVjNWQwXHViMjk0LCBcdWMwZDhcdWQ1MGMgXHVhZGY4XHViODA4XHVjNzc0XHViMzU0XHViMjk0IFx1YjJlNFx1Yzc0YyBcdWM1OTFcdWMyZGRcdWM1ZDAgXHViNTMwXHViNzdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5saW5lICQxJDogPGNvZGU+bWluX2NhcmRpbmFsaXR5PFwvY29kZT5cdWM3NTggXHViOWFjXHVkMTM0XHVhYzEyPFwvbGk+XHJcblx0PGxpPmxpbmUgJDIkOiAkcSQ8XC9saT5cclxuPFwvdWw+XHJcbiIsImN1c3RvbV9hdHRhY2hlbXRuIjoiPHVsPlxyXG5cdDxsaT48YSBocmVmPVwiaHR0cHM6XC9cL3VwbG9hZC5hY21pY3BjLm5ldFwvNWM3YzkzZjYtN2UyZi00YmM5LTk2NTktN2I1MWI1NGZmZjVjXC9cIj5pbnNlY3RzLnppcDxcL2E+PFwvbGk+XHJcbjxcL3VsPlxyXG4ifSx7InByb2JsZW1faWQiOiIyNTQ0MiIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IlJhcmVzdCBJbnNlY3RzIiwiZGVzY3JpcHRpb24iOiI8cD5UaGVyZSBhcmUgJE4kIGluc2VjdHMsIGluZGV4ZWQgZnJvbSAkMCQgdG8gJE4gLSAxJCwgcnVubmluZyBhcm91bmQgUGFrIEJsYW5na29uJiMzOTtzIGhvdXNlLiBFYWNoIGluc2VjdCBoYXMgYSZuYnNwOzxzdHJvbmc+dHlwZTxcL3N0cm9uZz4sIHdoaWNoIGlzIGFuIGludGVnZXIgYmV0d2VlbiAkMCQgYW5kICQxMF45JCBpbmNsdXNpdmUuIE11bHRpcGxlIGluc2VjdHMgbWF5IGhhdmUgdGhlIHNhbWUgdHlwZS48XC9wPlxyXG5cclxuPHA+U3VwcG9zZSBpbnNlY3RzIGFyZSBncm91cGVkIGJ5IHR5cGUuIFdlIGRlZmluZSB0aGUgY2FyZGluYWxpdHkgb2YgdGhlJm5ic3A7PHN0cm9uZz5tb3N0IGZyZXF1ZW50PFwvc3Ryb25nPiZuYnNwO2luc2VjdCB0eXBlIGFzIHRoZSBudW1iZXIgb2YgaW5zZWN0cyBpbiBhIGdyb3VwIHdpdGggdGhlIG1vc3QgbnVtYmVyIG9mIGluc2VjdHMuIFNpbWlsYXJseSwgdGhlIGNhcmRpbmFsaXR5IG9mIHRoZSZuYnNwOzxzdHJvbmc+cmFyZXN0PFwvc3Ryb25nPmluc2VjdCB0eXBlIGlzIHRoZSBudW1iZXIgb2YgaW5zZWN0cyBpbiBhIGdyb3VwIHdpdGggdGhlIGxlYXN0IG51bWJlciBvZiBpbnNlY3RzLjxcL3A+XHJcblxyXG48cD5Gb3IgZXhhbXBsZSwgc3VwcG9zZSB0aGF0IHRoZXJlIGFyZSAkMTEkIGluc2VjdHMsIHdob3NlIHR5cGVzIGFyZSAkWzUsIDcsIDksIDExLCAxMSwgNSwgMCwgMTEsIDksIDEwMCwgOV0kLiBJbiB0aGlzIGNhc2UsIHRoZSBjYXJkaW5hbGl0eSBvZiB0aGUmbmJzcDs8c3Ryb25nPm1vc3QgZnJlcXVlbnQ8XC9zdHJvbmc+Jm5ic3A7aW5zZWN0IHR5cGUgaXMgJDMkLiBUaGUgZ3JvdXBzIHdpdGggdGhlIG1vc3QgbnVtYmVyIG9mIGluc2VjdHMgYXJlIHR5cGUgJDkkIGFuZCB0eXBlICQxMSQsIGVhY2ggY29uc2lzdGluZyBvZiAkMyQgaW5zZWN0cy4gVGhlIGNhcmRpbmFsaXR5IG9mIHRoZSZuYnNwOzxzdHJvbmc+cmFyZXN0PFwvc3Ryb25nPiZuYnNwO2luc2VjdCB0eXBlIGlzICQxJC4gVGhlIGdyb3VwcyB3aXRoIHRoZSBsZWFzdCBudW1iZXIgb2YgaW5zZWN0cyBhcmUgdHlwZSAkNyQsIHR5cGUgJDAkLCBhbmQgdHlwZSAkMTAwJCwgZWFjaCBjb25zaXN0aW5nIG9mICQxJCBpbnNlY3QuPFwvcD5cclxuXHJcbjxwPlBhayBCbGFuZ2tvbiBkb2VzIG5vdCBrbm93IHRoZSB0eXBlIG9mIGFueSBpbnNlY3QuIEhlIGhhcyBhIG1hY2hpbmUgd2l0aCBhIHNpbmdsZSBidXR0b24gdGhhdCBjYW4gcHJvdmlkZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0eXBlcyBvZiB0aGUgaW5zZWN0cy4gSW5pdGlhbGx5LCB0aGUgbWFjaGluZSBpcyBlbXB0eS4gVG8gdXNlIHRoZSBtYWNoaW5lLCB0aHJlZSB0eXBlcyBvZiBvcGVyYXRpb25zIGNhbiBiZSBwZXJmb3JtZWQ6PFwvcD5cclxuXHJcbjxvbD5cclxuXHQ8bGk+TW92ZSBhbiBpbnNlY3QgdG8gaW5zaWRlIHRoZSBtYWNoaW5lLjxcL2xpPlxyXG5cdDxsaT5Nb3ZlIGFuIGluc2VjdCB0byBvdXRzaWRlIHRoZSBtYWNoaW5lLjxcL2xpPlxyXG5cdDxsaT5QcmVzcyB0aGUgYnV0dG9uIG9uIHRoZSBtYWNoaW5lLjxcL2xpPlxyXG48XC9vbD5cclxuXHJcbjxwPkVhY2ggdHlwZSBvZiBvcGVyYXRpb24gY2FuIGJlIHBlcmZvcm1lZCBhdCBtb3N0ICQ0MFxcLDAwMCQgdGltZXMuPFwvcD5cclxuXHJcbjxwPldoZW5ldmVyIHRoZSBidXR0b24gaXMgcHJlc3NlZCwgdGhlIG1hY2hpbmUgcmVwb3J0cyB0aGUgY2FyZGluYWxpdHkgb2YgdGhlJm5ic3A7PHN0cm9uZz5tb3N0IGZyZXF1ZW50PFwvc3Ryb25nPiZuYnNwO2luc2VjdCB0eXBlLCBjb25zaWRlcmluZyBvbmx5IGluc2VjdHMgaW5zaWRlIHRoZSBtYWNoaW5lLjxcL3A+XHJcblxyXG48cD5Zb3VyIHRhc2sgaXMgdG8gZGV0ZXJtaW5lIHRoZSBjYXJkaW5hbGl0eSBvZiB0aGUmbmJzcDs8c3Ryb25nPnJhcmVzdDxcL3N0cm9uZz4mbmJzcDtpbnNlY3QgdHlwZSBhbW9uZyBhbGwgJE4kIGluc2VjdHMgaW4gUGFrIEJsYW5na29uJiMzOTtzIGhvdXNlIGJ5IHVzaW5nIHRoZSBtYWNoaW5lLiBBZGRpdGlvbmFsbHksIGluIHNvbWUgc3VidGFza3MsIHlvdXIgc2NvcmUgZGVwZW5kcyBvbiB0aGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiBhIGdpdmVuIHR5cGUgdGhhdCBhcmUgcGVyZm9ybWVkIChzZWUgU3VidGFza3Mgc2VjdGlvbiBmb3IgZGV0YWlscykuPFwvcD5cclxuIiwiaW5wdXQiOiIiLCJvdXRwdXQiOiIiLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJFbmdsaXNoIiwibGltaXQiOiI8dWw+XHJcblx0PGxpPiQyIFxcbGUgTiBcXGxlIDIwMDAkPFwvbGk+XHJcbjxcL3VsPlxyXG4iLCJzdWJ0YXNrMSI6IjxwPiROIFxcbGUgMjAwJDxcL3A+XHJcbiIsInN1YnRhc2syIjoiPHA+JE4gXFxsZSAxMDAwJDxcL3A+XHJcbiIsInN1YnRhc2szIjoiPHA+Tm8gYWRkaXRpb25hbCBjb25zdHJhaW50cy48XC9wPlxyXG4iLCJjdXN0b21faW1wbGVtZW50YXRpb24iOiI8cD5Zb3Ugc2hvdWxkIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIHByb2NlZHVyZTo8XC9wPlxyXG5cclxuPHByZT5cclxuPGNvZGU+aW50IG1pbl9jYXJkaW5hbGl0eShpbnQgTilcclxuPFwvY29kZT48XC9wcmU+XHJcblxyXG48dWw+XHJcblx0PGxpPiROJDogdGhlIG51bWJlciBvZiBpbnNlY3RzLjxcL2xpPlxyXG5cdDxsaT5UaGlzIHByb2NlZHVyZSBzaG91bGQgcmV0dXJuIHRoZSBjYXJkaW5hbGl0eSBvZiB0aGUgPHN0cm9uZz5yYXJlc3Q8XC9zdHJvbmc+IGluc2VjdCB0eXBlIGFtb25nIGFsbCAkTiQgaW5zZWN0cyBpbiBQYWsgQmxhbmdrb24mIzM5O3MgaG91c2UuPFwvbGk+XHJcblx0PGxpPlRoaXMgcHJvY2VkdXJlIGlzIGNhbGxlZCBleGFjdGx5IG9uY2UuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+VGhlIGFib3ZlIHByb2NlZHVyZSBjYW4gbWFrZSBjYWxscyB0byB0aGUgZm9sbG93aW5nIHByb2NlZHVyZXM6PFwvcD5cclxuXHJcbjxwcmU+XHJcbjxjb2RlPnZvaWQgbW92ZV9pbnNpZGUoaW50IGkpXHJcbjxcL2NvZGU+PFwvcHJlPlxyXG5cclxuPHVsPlxyXG5cdDxsaT4kaSQ6IHRoZSBpbmRleCBvZiB0aGUgaW5zZWN0IHRvIGJlIG1vdmVkIGluc2lkZSB0aGUgbWFjaGluZS4gVGhlIHZhbHVlIG9mICRpJCBtdXN0IGJlIGJldHdlZW4gJDAkIGFuZCAkTiAtIDEkIGluY2x1c2l2ZS48XC9saT5cclxuXHQ8bGk+SWYgdGhpcyBpbnNlY3QgaXMgYWxyZWFkeSBpbnNpZGUgdGhlIG1hY2hpbmUsIHRoZSBjYWxsIGhhcyBubyBlZmZlY3Qgb24gdGhlIHNldCBvZiBpbnNlY3RzIGluIHRoZSBtYWNoaW5lLiBIb3dldmVyLCBpdCBpcyBzdGlsbCBjb3VudGVkIGFzIGEgc2VwYXJhdGUgY2FsbC48XC9saT5cclxuXHQ8bGk+VGhpcyBwcm9jZWR1cmUgY2FuIGJlIGNhbGxlZCBhdCBtb3N0ICQ0MFxcLDAwMCQgdGltZXMuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHByZT5cclxuPGNvZGU+dm9pZCBtb3ZlX291dHNpZGUoaW50IGkpXHJcbjxcL2NvZGU+PFwvcHJlPlxyXG5cclxuPHVsPlxyXG5cdDxsaT4kaSQ6IHRoZSBpbmRleCBvZiB0aGUgaW5zZWN0IHRvIGJlIG1vdmVkIG91dHNpZGUgdGhlIG1hY2hpbmUuIFRoZSB2YWx1ZSBvZiAkaSQgbXVzdCBiZSBiZXR3ZWVuICQwJCBhbmQgJE4gLSAxJCBpbmNsdXNpdmUuPFwvbGk+XHJcblx0PGxpPklmIHRoaXMgaW5zZWN0IGlzIGFscmVhZHkgb3V0c2lkZSB0aGUgbWFjaGluZSwgdGhlIGNhbGwgaGFzIG5vIGVmZmVjdCBvbiB0aGUgc2V0IG9mIGluc2VjdHMgaW4gdGhlIG1hY2hpbmUuIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIGNvdW50ZWQgYXMgYSBzZXBhcmF0ZSBjYWxsLjxcL2xpPlxyXG5cdDxsaT5UaGlzIHByb2NlZHVyZSBjYW4gYmUgY2FsbGVkIGF0IG1vc3QgJDQwXFwsMDAwJCB0aW1lcy48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cHJlPlxyXG48Y29kZT5pbnQgcHJlc3NfYnV0dG9uKClcclxuPFwvY29kZT48XC9wcmU+XHJcblxyXG48dWw+XHJcblx0PGxpPlRoaXMgcHJvY2VkdXJlIHJldHVybnMgdGhlIGNhcmRpbmFsaXR5IG9mIHRoZSA8c3Ryb25nPm1vc3QgZnJlcXVlbnQ8XC9zdHJvbmc+IGluc2VjdCB0eXBlLCBjb25zaWRlcmluZyBvbmx5IGluc2VjdHMgaW5zaWRlIHRoZSBtYWNoaW5lLjxcL2xpPlxyXG5cdDxsaT5UaGlzIHByb2NlZHVyZSBjYW4gYmUgY2FsbGVkIGF0IG1vc3QgJDQwXFwsMDAwJCB0aW1lcy48XC9saT5cclxuXHQ8bGk+VGhlIGdyYWRlciBpcyA8c3Ryb25nPm5vdCBhZGFwdGl2ZTxcL3N0cm9uZz4uIFRoYXQgaXMsIHRoZSB0eXBlcyBvZiBhbGwgJE4kIGluc2VjdHMgYXJlIGZpeGVkIGJlZm9yZSA8Y29kZT5taW5fY2FyZGluYWxpdHk8XC9jb2RlPiBpcyBjYWxsZWQuXFwsPFwvbGk+XHJcbjxcL3VsPlxyXG4iLCJjdXN0b21fZXhhbXBsZSI6IjxwPkNvbnNpZGVyIGEgc2NlbmFyaW8gaW4gd2hpY2ggdGhlcmUgYXJlICQ2JCBpbnNlY3RzIG9mIHR5cGVzICRbNSwgOCwgOSwgNSwgOSwgOV0kIHJlc3BlY3RpdmVseS4gVGhlIHByb2NlZHVyZSA8Y29kZT5taW5fY2FyZGluYWxpdHk8XC9jb2RlPiBpcyBjYWxsZWQgaW4gdGhlIGZvbGxvd2luZyB3YXk6PFwvcD5cclxuXHJcbjxwcmU+XHJcbjxjb2RlPm1pbl9jYXJkaW5hbGl0eSg2KVxyXG48XC9jb2RlPjxcL3ByZT5cclxuXHJcbjxwPlRoZSBwcm9jZWR1cmUgbWF5IGNhbGwgPGNvZGU+bW92ZV9pbnNpZGU8XC9jb2RlPiwgPGNvZGU+bW92ZV9vdXRzaWRlPFwvY29kZT4sIGFuZCA8Y29kZT5wcmVzc19idXR0b248XC9jb2RlPiBhcyBmb2xsb3dzLjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0ZC1jZW50ZXIgdGgtY2VudGVyXCI+XHJcblx0PHRoZWFkPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGg+Q2FsbDxcL3RoPlxyXG5cdFx0XHQ8dGg+UmV0dXJuIHZhbHVlPFwvdGg+XHJcblx0XHRcdDx0aD5JbnNlY3RzIGluIHRoZSBtYWNoaW5lPFwvdGg+XHJcblx0XHRcdDx0aD5UeXBlcyBvZiBpbnNlY3RzIGluIHRoZSBtYWNoaW5lPFwvdGg+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90aGVhZD5cclxuXHQ8dGJvZHk+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4gPFwvdGQ+XHJcblx0XHRcdDx0ZD4kXFx7XFx9JDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFtdJDxcL3RkPlxyXG5cdFx0XHQ8dGQ+IDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD48Y29kZT5tb3ZlX2luc2lkZSgwKTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4gPFwvdGQ+XHJcblx0XHRcdDx0ZD4kXFx7MFxcfSQ8XC90ZD5cclxuXHRcdFx0PHRkPiRbNV0kPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjxjb2RlPnByZXNzX2J1dHRvbigpPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiQxJDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFxcezBcXH0kPFwvdGQ+XHJcblx0XHRcdDx0ZD4kWzVdJDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD48Y29kZT5tb3ZlX2luc2lkZSgxKTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4gPFwvdGQ+XHJcblx0XHRcdDx0ZD4kXFx7MCwgMVxcfSQ8XC90ZD5cclxuXHRcdFx0PHRkPiRbNSwgOF0kPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjxjb2RlPnByZXNzX2J1dHRvbigpPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiQxJDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFxcezAsIDFcXH0kPFwvdGQ+XHJcblx0XHRcdDx0ZD4kWzUsIDhdJDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD48Y29kZT5tb3ZlX2luc2lkZSgzKTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4gPFwvdGQ+XHJcblx0XHRcdDx0ZD4kXFx7MCwgMSwgM1xcfSQ8XC90ZD5cclxuXHRcdFx0PHRkPiRbNSwgOCwgNV0kPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjxjb2RlPnByZXNzX2J1dHRvbigpPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiQyJDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFxcezAsIDEsIDNcXH0kPFwvdGQ+XHJcblx0XHRcdDx0ZD4kWzUsIDgsIDVdJDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD48Y29kZT5tb3ZlX2luc2lkZSgyKTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4gPFwvdGQ+XHJcblx0XHRcdDx0ZD4kXFx7MCwgMSwgMiwgM1xcfSQ8XC90ZD5cclxuXHRcdFx0PHRkPiRbNSwgOCwgOSwgNV0kPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjxjb2RlPm1vdmVfaW5zaWRlKDQpPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiA8XC90ZD5cclxuXHRcdFx0PHRkPiRcXHswLCAxLCAyLCAzLCA0XFx9JDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFs1LCA4LCA5LCA1LCA5XSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+bW92ZV9pbnNpZGUoNSk8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+IDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFxcezAsIDEsIDIsIDMsIDQsIDVcXH0kPFwvdGQ+XHJcblx0XHRcdDx0ZD4kWzUsIDgsIDksIDUsIDksIDldJDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD48Y29kZT5wcmVzc19idXR0b24oKTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4kMyQ8XC90ZD5cclxuXHRcdFx0PHRkPiRcXHswLCAxLCAyLCAzLCA0LCA1XFx9JDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFs1LCA4LCA5LCA1LCA5LCA5XSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+bW92ZV9pbnNpZGUoNSk8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+IDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFxcezAsIDEsIDIsIDMsIDQsIDVcXH0kPFwvdGQ+XHJcblx0XHRcdDx0ZD4kWzUsIDgsIDksIDUsIDksIDldJDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD48Y29kZT5wcmVzc19idXR0b24oKTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4kMyQ8XC90ZD5cclxuXHRcdFx0PHRkPiRcXHswLCAxLCAyLCAzLCA0LCA1XFx9JDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFs1LCA4LCA5LCA1LCA5LCA5XSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+bW92ZV9vdXRzaWRlKDUpPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiA8XC90ZD5cclxuXHRcdFx0PHRkPiRcXHswLCAxLCAyLCAzLCA0XFx9JDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFs1LCA4LCA5LCA1LCA5XSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+cHJlc3NfYnV0dG9uKCk8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+JDIkPFwvdGQ+XHJcblx0XHRcdDx0ZD4kXFx7MCwgMSwgMiwgMywgNFxcfSQ8XC90ZD5cclxuXHRcdFx0PHRkPiRbNSwgOCwgOSwgNSwgOV0kPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90Ym9keT5cclxuPFwvdGFibGU+XHJcblxyXG48cD5BdCB0aGlzIHBvaW50LCB0aGVyZSBpcyBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIGNvbmNsdWRlIHRoYXQgdGhlIGNhcmRpbmFsaXR5IG9mIHRoZSByYXJlc3QgaW5zZWN0IHR5cGUgaXMgJDEkLiBUaGVyZWZvcmUsIHRoZSBwcm9jZWR1cmUgPGNvZGU+bWluX2NhcmRpbmFsaXR5PFwvY29kZT4gc2hvdWxkIHJldHVybiAkMSQuPFwvcD5cclxuXHJcbjxwPkluIHRoaXMgZXhhbXBsZSwgPGNvZGU+bW92ZV9pbnNpZGU8XC9jb2RlPiBpcyBjYWxsZWQgJDckIHRpbWVzLCA8Y29kZT5tb3ZlX291dHNpZGU8XC9jb2RlPiBpcyBjYWxsZWQgJDEkIHRpbWUsIGFuZCA8Y29kZT5wcmVzc19idXR0b248XC9jb2RlPiBpcyBjYWxsZWQgJDYkIHRpbWVzLjxcL3A+XHJcbiIsImN1c3RvbV9zdWJ0YXNrX3Njb3JpbmdfYSI6IjxwPklmIGluIGFueSBvZiB0aGUgdGVzdCBjYXNlcywgdGhlIGNhbGxzIHRvIHRoZSBwcm9jZWR1cmVzIDxjb2RlPm1vdmVfaW5zaWRlPFwvY29kZT4sIDxjb2RlPm1vdmVfb3V0c2lkZTxcL2NvZGU+LCBvciA8Y29kZT5wcmVzc19idXR0b248XC9jb2RlPiBkbyBub3QgY29uZm9ybSB0byB0aGUgY29uc3RyYWludHMgZGVzY3JpYmVkIGluIEltcGxlbWVudGF0aW9uIERldGFpbHMsIG9yIHRoZSByZXR1cm4gdmFsdWUgb2YgPGNvZGU+bWluX2NhcmRpbmFsaXR5PFwvY29kZT4gaXMgaW5jb3JyZWN0LCB0aGUgc2NvcmUgb2YgeW91ciBzb2x1dGlvbiBmb3IgdGhhdCBzdWJ0YXNrIHdpbGwgYmUgJDAkLjxcL3A+XHJcblxyXG48cD5MZXQgJHEkIGJlIHRoZSA8c3Ryb25nPm1heGltdW08XC9zdHJvbmc+IG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgdmFsdWVzOiB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIDxjb2RlPm1vdmVfaW5zaWRlPFwvY29kZT4sIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gPGNvZGU+bW92ZV9vdXRzaWRlPFwvY29kZT4sIGFuZCB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIDxjb2RlPnByZXNzX2J1dHRvbjxcL2NvZGU+LjxcL3A+XHJcblxyXG48cD5JbiBzdWJ0YXNrIDMsIHlvdSBjYW4gb2J0YWluIGEgcGFydGlhbCBzY29yZS4gTGV0ICRtJCBiZSB0aGUgbWF4aW11bSB2YWx1ZSBvZiAkXFxmcmFje3F9e059JCBhY3Jvc3MgYWxsIHRlc3QgY2FzZXMgaW4gdGhpcyBzdWJ0YXNrLiBZb3VyIHNjb3JlIGZvciB0aGlzIHN1YnRhc2sgaXMgY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyB0YWJsZTo8XC9wPlxyXG5cclxuPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWQgdGgtY2VudGVyIHRkLWNlbnRlciB0YWJsZS1jZW50ZXItNTBcIj5cclxuXHQ8dGhlYWQ+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0aD5Db25kaXRpb248XC90aD5cclxuXHRcdFx0PHRoPlBvaW50czxcL3RoPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGhlYWQ+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+JDIwIFxcbHQgbSQ8XC90ZD5cclxuXHRcdFx0PHRkPiQwJCAocmVwb3J0ZWQgYXMgJnF1b3Q7PGNvZGU+T3V0cHV0IGlzbiZyc3F1bzt0IGNvcnJlY3Q8XC9jb2RlPiZxdW90OyBpbiBDTVMpPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPiQ2IFxcbHQgbSBcXGxlIDIwJDxcL3RkPlxyXG5cdFx0XHQ8dGQ+JFxcZnJhY3syMjV9e20gLSAyfSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+JDMgXFxsdCBtIFxcbGUgNiQ8XC90ZD5cclxuXHRcdFx0PHRkPiQ4MSAtIFxcZnJhY3syfXszfSBtXjIkPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPiRtIFxcbGUgMyQ8XC90ZD5cclxuXHRcdFx0PHRkPiQ3NSQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuIiwiY3VzdG9tX3NhbXBsZWdyYWRlciI6IjxwPkxldCAkVCQgYmUgYW4gYXJyYXkgb2YgJE4kIGludGVnZXJzIHdoZXJlICRUW2ldJCBpcyB0aGUgdHlwZSBvZiBpbnNlY3QgJGkkLjxcL3A+XHJcblxyXG48cD5UaGUgc2FtcGxlIGdyYWRlciByZWFkcyB0aGUgaW5wdXQgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+bGluZSAkMSQ6ICROJDxcL2xpPlxyXG5cdDxsaT5saW5lICQyJDogJFRbMF0gXFwsIFRbMV0gXFwsIFxcbGRvdHMgXFwsIFRbTiAtIDFdJDxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPklmIHRoZSBzYW1wbGUgZ3JhZGVyIGRldGVjdHMgYSBwcm90b2NvbCB2aW9sYXRpb24sIHRoZSBvdXRwdXQgb2YgdGhlIHNhbXBsZSBncmFkZXIgaXMgPGNvZGU+UHJvdG9jb2wgVmlvbGF0aW9uOiAmbHQ7TVNHJmd0OzxcL2NvZGU+LCB3aGVyZSA8Y29kZT4mbHQ7TVNHJmd0OzxcL2NvZGU+IGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nOjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPjxjb2RlPmludmFsaWQgcGFyYW1ldGVyPFwvY29kZT46IGluIGEgY2FsbCB0byA8Y29kZT5tb3ZlX2luc2lkZTxcL2NvZGU+IG9yIDxjb2RlPm1vdmVfb3V0c2lkZTxcL2NvZGU+LCB0aGUgdmFsdWUgb2YgJGkkIGlzIG5vdCBiZXR3ZWVuICQwJCBhbmQgJE4gLSAxJCBpbmNsdXNpdmUuPFwvbGk+XHJcblx0PGxpPjxjb2RlPnRvbyBtYW55IGNhbGxzPFwvY29kZT46IHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gPHN0cm9uZz5hbnk8XC9zdHJvbmc+IG9mIDxjb2RlPm1vdmVfaW5zaWRlPFwvY29kZT4sIDxjb2RlPm1vdmVfb3V0c2lkZTxcL2NvZGU+LCBvciA8Y29kZT5wcmVzc19idXR0b248XC9jb2RlPiBleGNlZWRzICQ0MFxcLDAwMCQuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+T3RoZXJ3aXNlLCB0aGUgb3V0cHV0IG9mIHRoZSBzYW1wbGUgZ3JhZGVyIGlzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPmxpbmUgJDEkOiB0aGUgcmV0dXJuIHZhbHVlIG9mIDxjb2RlPm1pbl9jYXJkaW5hbGl0eTxcL2NvZGU+PFwvbGk+XHJcblx0PGxpPmxpbmUgJDIkOiAkcSQ8XC9saT5cclxuPFwvdWw+XHJcbiIsImN1c3RvbV9hdHRhY2hlbXRuIjoiPHVsPlxyXG5cdDxsaT48YSBocmVmPVwiaHR0cHM6XC9cL3VwbG9hZC5hY21pY3BjLm5ldFwvNWM3YzkzZjYtN2UyZi00YmM5LTk2NTktN2I1MWI1NGZmZjVjXC9cIj5pbnNlY3RzLnppcDxcL2E+PFwvbGk+XHJcbjxcL3VsPlxyXG4ifV0=

샘플 그레이더

$T$가 길이 $N$인 정수 배열이고 $T[i]$가 곤충 $i$의 종류라고 하자.

샘플 그레이더는 다음 양식으로 입력을 읽는다.

  • line $1$: $N$
  • line $2$: $T[0] \, T[1] \, \ldots \, T[N - 1]$

만약 샘플 그레이더가 프로토콜이 위반된 것을 발견하면, 샘플 그레이더는 Protocol Violation: <MSG>를 출력하는데,<MSG>는 다음 중 하나이다.

  • invalid parameter: move_inside 또는 move_outside를 호출할 때, $i$ 값이 $0$ 이상 $N - 1$ 이하가 아니다.
  • too many calls: move_inside, move_outside, press_button어떤 한 함수가 $40\,000$ 번 초과되어 호출되었다.

그 외의 경우에는, 샘플 그레이더는 다음 양식에 따라 출력한다.

  • line $1$: min_cardinality의 리턴값
  • line $2$: $q$

첨부

출처

Olympiad > International Olympiad in Informatics > IOI 2022 > Day 2 5번

  • 문제를 만든 사람: Hazem Issa

제출할 수 있는 언어

C++17, C++20, C++17 (Clang), C++20 (Clang)

채점 및 기타 정보

  • 예제는 채점하지 않는다.