시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB6411717.500%

문제

매우(거의 무한할 정도로) 큰 공장이 하나 있다. 이 공장은 벽으로 둘러싸인 사각형 모양을 하고 있다. 이 공장에는 N(1 ≤ N ≤ 100)개의 굴뚝이 있는데, 각각의 굴뚝들은 어떤 특정한 모양을 하고 있다. 몇 개의 굴뚝들은 서로 같은 모양을 하고 있기도 하다.

이 공장에서는 최신 기술을 이용한 개발이 진행되고 있는데, 이 기술의 보안을 유지하기 위해서 한 대의 감시 로봇을 사용하고 있다. 감시 로봇은 x축을 따라서 움직이게 되는데, 로봇의 위치가 어디인지를 알아야 할 필요가 있다. 그런데 로봇 안에 들어있는 위치 센서가 좋지 않을뿐더러, 건물의 크기가 매우 크기 때문에, 위치를 직접 알려주지는 못하고, 로봇이 굴뚝을 관찰한 순서가 주어지게 된다.

로봇은 우선 x축 위에서, 왼쪽(x좌표가 음의 무한대인 쪽)을 바라보고 서 있다. 그리고 로봇은 시계방향으로 오른쪽(x좌표가 양의 무한대인 쪽)까지 돌게 된다. 로봇은 돌면서 자신이 보게 되는 굴뚝의 모양을 차례대로 알려주게 된다. 모든 굴뚝들의 높이는 같기 때문에, 로봇이 보고 있는 방향에 여러 굴뚝이 있다면 제일 앞에 있는 굴뚝만을 보게 된다.

공장 측에서는 이와 같은 방법을 이용하면 로봇의 위치를 구해낼 수 있을 거라 생각했지만, 답이 유일하게 나오는 것이 아니라 여러 구간의 형태로 나옴을 알게 되었다. 따라서 공장 측에서는, 이와 같은 구간들을 구하려고 한다.

로봇이 굴뚝을 관찰한 순서와 각 굴뚝의 위치가 주어졌을 때, 로봇이 있을 수 있는 위치를 구해내는 프로그램을 작성하시오.

입력

첫째 줄에 굴뚝의 개수 N이 주어진다. 다음 줄에는 로봇이 굴뚝을 관찰한 순서대로 굴뚝의 모양이 주어진다. 건물에 없는 굴뚝을 본 경우나, 굴뚝을 N개 미만으로 본 경우는 입력으로 주어지지 않는다. 다음 N개의 줄에는 각 굴뚝의 모양을 나타내는 문자와, 굴뚝의 x(-100 ≤ x ≤ 100), y(0 < y ≤ 100)좌표가 주어진다. 굴뚝의 모양은 알파벳 대문자로 표현되며, 모든 좌표는 정수이다. 두 굴뚝의 좌표가 같은 경우는 없다.

출력

첫째 줄에 구간의 개수 K가 주어진다. 다음 K개의 줄에는 두 개의 실수로 구간의 왼쪽, 오른쪽 끝점을 출력한다. 건물의 크기는 매우 크다고(무한하다고) 가정하며, 건물의 양 끝점의 경우에는 좌표 대신에 *을 출력한다. 상대 오차는 10-4까지 허용한다.

예제 입력 1

4
CDDC
C 0 7
D 4 5
C -2 1
D -2 3

예제 출력 1

3
* -11.0000
-11.0000 -3.5000
14.0000 *

예제 입력 2

4
DCCD
C 0 7
D 4 5
C -2 1
D -2 3

예제 출력 2

2
-3.5000 -2.3333
-2.3333 -2.0000

예제 입력 3

4
DCDC
C 0 7
D 4 5
C -2 1
D -2 3

예제 출력 3

0
W3sicHJvYmxlbV9pZCI6IjIxMDAiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWFjMTBcdWMyZGMgXHViODVjXHViZDA3IiwiZGVzY3JpcHRpb24iOiI8cD5cdWI5ZTRcdWM2YjAoXHVhYzcwXHVjNzU4IFx1YmIzNFx1ZDU1Y1x1ZDU2MCBcdWM4MTVcdWIzYzRcdWI4NWMpIFx1ZDA3MCBcdWFjZjVcdWM3YTVcdWM3NzQgXHVkNTU4XHViMDk4IFx1Yzc4OFx1YjJlNC4gXHVjNzc0IFx1YWNmNVx1YzdhNVx1Yzc0MCBcdWJjYmRcdWM3M2NcdWI4NWMgXHViNDU4XHViN2VjXHVjMmY4XHVjNzc4IFx1YzBhY1x1YWMwMVx1ZDYxNSBcdWJhYThcdWM1OTFcdWM3NDQgXHVkNTU4XHVhY2UwIFx1Yzc4OFx1YjJlNC4gXHVjNzc0IFx1YWNmNVx1YzdhNVx1YzVkMFx1YjI5NCBOKDEgJmxlOyBOICZsZTsgMTAwKVx1YWMxY1x1Yzc1OCBcdWFkNzRcdWI2OWRcdWM3NzQgXHVjNzg4XHViMjk0XHViMzcwLCBcdWFjMDFcdWFjMDFcdWM3NTggXHVhZDc0XHViNjlkXHViNGU0XHVjNzQwIFx1YzViNFx1YjVhNCBcdWQyYjlcdWM4MTVcdWQ1NWMgXHViYWE4XHVjNTkxXHVjNzQ0IFx1ZDU1OFx1YWNlMCBcdWM3ODhcdWIyZTQuIFx1YmE4NyBcdWFjMWNcdWM3NTggXHVhZDc0XHViNjlkXHViNGU0XHVjNzQwIFx1YzExY1x1Yjg1YyBcdWFjMTlcdWM3NDAgXHViYWE4XHVjNTkxXHVjNzQ0IFx1ZDU1OFx1YWNlMCBcdWM3ODhcdWFlMzBcdWIzYzQgXHVkNTU4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM3NzQgXHVhY2Y1XHVjN2E1XHVjNWQwXHVjMTFjXHViMjk0IFx1Y2Q1Y1x1YzJlMCBcdWFlMzBcdWMyMjBcdWM3NDQgXHVjNzc0XHVjNmE5XHVkNTVjIFx1YWMxY1x1YmMxY1x1Yzc3NCBcdWM5YzRcdWQ1ODlcdWI0MThcdWFjZTAgXHVjNzg4XHViMjk0XHViMzcwLCBcdWM3NzQgXHVhZTMwXHVjMjIwXHVjNzU4IFx1YmNmNFx1YzU0OFx1Yzc0NCBcdWM3MjBcdWM5YzBcdWQ1NThcdWFlMzAgXHVjNzA0XHVkNTc0XHVjMTFjIFx1ZDU1YyBcdWIzMDBcdWM3NTggXHVhYzEwXHVjMmRjIFx1Yjg1Y1x1YmQwN1x1Yzc0NCBcdWMwYWNcdWM2YTlcdWQ1NThcdWFjZTAgXHVjNzg4XHViMmU0LiBcdWFjMTBcdWMyZGMgXHViODVjXHViZDA3XHVjNzQwIHhcdWNkOTVcdWM3NDQgXHViNTMwXHViNzdjXHVjMTFjIFx1YzZjMFx1YzljMVx1Yzc3NFx1YWM4YyBcdWI0MThcdWIyOTRcdWIzNzAsIFx1Yjg1Y1x1YmQwN1x1Yzc1OCBcdWM3MDRcdWNlNThcdWFjMDAgXHVjNWI0XHViNTE0XHVjNzc4XHVjOWMwXHViOTdjIFx1YzU0Y1x1YzU0NFx1YzU3YyBcdWQ1NjAgXHVkNTQ0XHVjNjk0XHVhYzAwIFx1Yzc4OFx1YjJlNC4gXHVhZGY4XHViN2YwXHViMzcwIFx1Yjg1Y1x1YmQwNyBcdWM1NDhcdWM1ZDAgXHViNGU0XHVjNWI0XHVjNzg4XHViMjk0IFx1YzcwNFx1Y2U1OCBcdWMxM2NcdWMxMWNcdWFjMDAgXHVjODhiXHVjOWMwIFx1YzU0YVx1Yzc0NFx1YmZkMFx1YjM1NFx1YjdlYywgXHVhYzc0XHViYjNjXHVjNzU4IFx1ZDA2Y1x1YWUzMFx1YWMwMCBcdWI5ZTRcdWM2YjAgXHVkMDZjXHVhZTMwIFx1YjU0Y1x1YmIzOFx1YzVkMCwgXHVjNzA0XHVjZTU4XHViOTdjIFx1YzljMVx1YzgxMSBcdWM1NGNcdWI4MjRcdWM4ZmNcdWM5YzBcdWIyOTQgXHViYWJiXHVkNTU4XHVhY2UwLCBcdWI4NWNcdWJkMDdcdWM3NzQgXHVhZDc0XHViNjlkXHVjNzQ0IFx1YWQwMFx1Y2MzMFx1ZDU1YyBcdWMyMWNcdWMxMWNcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWMwXHVhYzhjIFx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViODVjXHViZDA3XHVjNzQwIFx1YzZiMFx1YzEyMCB4XHVjZDk1IFx1YzcwNFx1YzVkMFx1YzExYywgXHVjNjdjXHVjYWJkKHhcdWM4OGNcdWQ0NWNcdWFjMDAgXHVjNzRjXHVjNzU4IFx1YmIzNFx1ZDU1Y1x1YjMwMFx1Yzc3OCBcdWNhYmQpXHVjNzQ0IFx1YmMxNFx1Yjc3Y1x1YmNmNFx1YWNlMCBcdWMxMWMgXHVjNzg4XHViMmU0LiBcdWFkZjhcdWI5YWNcdWFjZTAgXHViODVjXHViZDA3XHVjNzQwIFx1YzJkY1x1YWNjNFx1YmMyOVx1ZDVhNVx1YzczY1x1Yjg1YyBcdWM2MjRcdWI5NzhcdWNhYmQoeFx1Yzg4Y1x1ZDQ1Y1x1YWMwMCBcdWM1OTFcdWM3NTggXHViYjM0XHVkNTVjXHViMzAwXHVjNzc4IFx1Y2FiZClcdWFlNGNcdWM5YzAgXHViM2NjXHVhYzhjIFx1YjQxY1x1YjJlNC4gXHViODVjXHViZDA3XHVjNzQwIFx1YjNjY1x1YmE3NFx1YzExYyBcdWM3OTBcdWMyZTBcdWM3NzQgXHViY2Y0XHVhYzhjIFx1YjQxOFx1YjI5NCBcdWFkNzRcdWI2OWRcdWM3NTggXHViYWE4XHVjNTkxXHVjNzQ0IFx1Y2MyOFx1Yjg0MFx1YjMwMFx1Yjg1YyBcdWM1NGNcdWI4MjRcdWM4ZmNcdWFjOGMgXHViNDFjXHViMmU0LiBcdWJhYThcdWI0ZTAgXHVhZDc0XHViNjlkXHViNGU0XHVjNzU4IFx1YjE5Mlx1Yzc3NFx1YjI5NCBcdWFjMTlcdWFlMzAgXHViNTRjXHViYjM4XHVjNWQwLCBcdWI4NWNcdWJkMDdcdWM3NzQgXHViY2Y0XHVhY2UwIFx1Yzc4OFx1YjI5NCBcdWJjMjlcdWQ1YTVcdWM1ZDAgXHVjNWVjXHViN2VjIFx1YWQ3NFx1YjY5ZFx1Yzc3NCBcdWM3ODhcdWIyZTRcdWJhNzQgXHVjODFjXHVjNzdjIFx1YzU1ZVx1YzVkMCBcdWM3ODhcdWIyOTQgXHVhZDc0XHViNjlkXHViOWNjXHVjNzQ0IFx1YmNmNFx1YWM4YyBcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YWNmNVx1YzdhNSBcdWNlMjFcdWM1ZDBcdWMxMWNcdWIyOTQgXHVjNzc0XHVjNjQwIFx1YWMxOVx1Yzc0MCBcdWJjMjlcdWJjOTVcdWM3NDQgXHVjNzc0XHVjNmE5XHVkNTU4XHViYTc0IFx1Yjg1Y1x1YmQwN1x1Yzc1OCBcdWM3MDRcdWNlNThcdWI5N2MgXHVhZDZjXHVkNTc0XHViMGJjIFx1YzIxOCBcdWM3ODhcdWM3NDQgXHVhYzcwXHViNzdjIFx1YzBkZFx1YWMwMVx1ZDU4OFx1YzljMFx1YjljYywgXHViMmY1XHVjNzc0IFx1YzcyMFx1Yzc3Y1x1ZDU1OFx1YWM4YyBcdWIwOThcdWM2MjRcdWIyOTQgXHVhYzgzXHVjNzc0IFx1YzU0NFx1YjJjOFx1Yjc3YyBcdWM1ZWNcdWI3ZWMgXHVhZDZjXHVhYzA0XHVjNzU4IFx1ZDYxNVx1ZDBkY1x1Yjg1YyBcdWIwOThcdWM2MzRcdWM3NDQgXHVjNTRjXHVhYzhjIFx1YjQxOFx1YzVjOFx1YjJlNC4gXHViNTMwXHViNzdjXHVjMTFjIFx1YWNmNVx1YzdhNSBcdWNlMjFcdWM1ZDBcdWMxMWNcdWIyOTQsIFx1Yzc3NFx1YzY0MCBcdWFjMTlcdWM3NDAgXHVhZDZjXHVhYzA0XHViNGU0XHVjNzQ0IFx1YWQ2Y1x1ZDU1OFx1YjgyNFx1YWNlMCBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yjg1Y1x1YmQwN1x1Yzc3NCBcdWFkNzRcdWI2OWRcdWM3NDQgXHVhZDAwXHVjYzMwXHVkNTVjIFx1YzIxY1x1YzExY1x1YzY0MCBcdWFjMDEgXHVhZDc0XHViNjlkXHVjNzU4IFx1YzcwNFx1Y2U1OFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM4NGNcdWM3NDQgXHViNTRjLCBcdWI4NWNcdWJkMDdcdWM3NzQgXHVjNzg4XHVjNzQ0IFx1YzIxOCBcdWM3ODhcdWIyOTQgXHVjNzA0XHVjZTU4XHViOTdjIFx1YWQ2Y1x1ZDU3NFx1YjBiNFx1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDQgXHVjNzkxXHVjMTMxXHVkNTU4XHVjMmRjXHVjNjI0LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMCBcdWFkNzRcdWI2OWRcdWM3NTggXHVhYzFjXHVjMjE4IE5cdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWIyZTRcdWM3NGMgXHVjOTA0XHVjNWQwXHViMjk0IFx1Yjg1Y1x1YmQwN1x1Yzc3NCBcdWFkNzRcdWI2OWRcdWM3NDQgXHVhZDAwXHVjYzMwXHVkNTVjIFx1YzIxY1x1YzExY1x1YjMwMFx1Yjg1YyBcdWFkNzRcdWI2OWRcdWM3NTggXHViYWE4XHVjNTkxXHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHVhYzc0XHViYjNjXHVjNWQwIFx1YzVjNlx1YjI5NCBcdWFkNzRcdWI2OWRcdWM3NDQgXHViY2Y4IFx1YWNiZFx1YzZiMFx1YjA5OCwgXHVhZDc0XHViNjlkXHVjNzQ0IE5cdWFjMWMgXHViYmY4XHViOWNjXHVjNzNjXHViODVjIFx1YmNmOCBcdWFjYmRcdWM2YjBcdWIyOTQgXHVjNzg1XHViODI1XHVjNzNjXHViODVjIFx1YzhmY1x1YzViNFx1YzljMFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuIFx1YjJlNFx1Yzc0YyBOXHVhYzFjXHVjNzU4IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWFjMDEgXHVhZDc0XHViNjlkXHVjNzU4IFx1YmFhOFx1YzU5MVx1Yzc0NCBcdWIwOThcdWQwYzBcdWIwYjRcdWIyOTQgXHViYjM4XHVjNzkwXHVjNjQwLCBcdWFkNzRcdWI2OWRcdWM3NTggeCgtMTAwICZsZTsgeCAmbGU7IDEwMCksIHkoMCAmbHQ7IHkgJmxlOyAxMDApXHVjODhjXHVkNDVjXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHVhZDc0XHViNjlkXHVjNzU4IFx1YmFhOFx1YzU5MVx1Yzc0MCBcdWM1NGNcdWQzMGNcdWJjYjMgXHViMzAwXHViYjM4XHVjNzkwXHViODVjIFx1ZDQ1Y1x1ZDYwNFx1YjQxOFx1YmE3MCwgXHViYWE4XHViNGUwIFx1Yzg4Y1x1ZDQ1Y1x1YjI5NCBcdWM4MTVcdWMyMThcdWM3NzRcdWIyZTQuIFx1YjQ1MCBcdWFkNzRcdWI2OWRcdWM3NTggXHVjODhjXHVkNDVjXHVhYzAwIFx1YWMxOVx1Yzc0MCBcdWFjYmRcdWM2YjBcdWIyOTQgXHVjNWM2XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDAgXHVhZDZjXHVhYzA0XHVjNzU4IFx1YWMxY1x1YzIxOCBLXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHViMmU0XHVjNzRjIEtcdWFjMWNcdWM3NTggXHVjOTA0XHVjNWQwXHViMjk0IFx1YjQ1MCBcdWFjMWNcdWM3NTggXHVjMmU0XHVjMjE4XHViODVjIFx1YWQ2Y1x1YWMwNFx1Yzc1OCBcdWM2N2NcdWNhYmQsIFx1YzYyNFx1Yjk3OFx1Y2FiZCBcdWIwNWRcdWM4MTBcdWM3NDQgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LiBcdWFjNzRcdWJiM2NcdWM3NTggXHVkMDZjXHVhZTMwXHViMjk0IFx1YjllNFx1YzZiMCBcdWQwNmNcdWIyZTRcdWFjZTAoXHViYjM0XHVkNTVjXHVkNTU4XHViMmU0XHVhY2UwKSBcdWFjMDBcdWM4MTVcdWQ1NThcdWJhNzAsIFx1YWM3NFx1YmIzY1x1Yzc1OCBcdWM1OTEgXHViMDVkXHVjODEwXHVjNzU4IFx1YWNiZFx1YzZiMFx1YzVkMFx1YjI5NCBcdWM4OGNcdWQ0NWMgXHViMzAwXHVjMmUwXHVjNWQwICpcdWM3NDQgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LiBcdWMwYzFcdWIzMDAgXHVjNjI0XHVjYzI4XHViMjk0IDEwPHN1cD4tNDxcL3N1cD5cdWFlNGNcdWM5YzAgXHVkNWM4XHVjNmE5XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjAiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IktvcmVhbiJ9LHsicHJvYmxlbV9pZCI6IjIxMDAiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJBcmVhIDUxIiwiZGVzY3JpcHRpb24iOiI8cD5NaWNoYWVsIGFuZCBOaWNrIGFyZSBsaXZpbmcgbmVhciB0aGUgZmFtb3VzIHRvcC1zZWNyZXQgJmxkcXVvO0FyZWEgNTEmcmRxdW87IGZhY2lsaXR5LiBUaGUgZmFjaWxpdHkgaXMgZW5jbG9zZWQgYnkgYSBmZW5jZSBhbmQgaXMgc28gbGFyZ2UgdGhhdCBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcyBwcm9ibGVtIHdlIGNvbnNpZGVyIHRoZSBmZW5jZSBiZWluZyBhIGxpbmUgdGhhdCBzdHJldGNoZXMgaW5maW5pdGVseSBpbnRvIGJvdGggZGlyZWN0aW9ucy48XC9wPlxyXG5cclxuPHA+T25seSBleHRyZW1lbHkgYnJhdmUgYm95cyBhcmUgbm90IHNjYXJlZCB0byBnbyB0byB0aGUgZmVuY2UgYW5kIHBlZWsgYXQgdGhlIGZhY2lsaXR5LiBOaWNrIGlzIGFtb25nIHRoZSBicmF2ZSBvbmVzLiBIZSBvbmNlIGNhbWUgdG8gdGhlIGZlbmNlIGFuZCBzYXcgYSBudW1iZXIgb2YgY2hpbW5leXMgd2l0aCBkaXN0aW5jdCBzaGFwZXMuIEFzIGEgcHJvb2Ygb2YgaGlzIGJyYXZlcnkgaGUgdGVsbHMgZXZlcnlib2R5IHdoYXQgY2hpbW5leXMgaGUgc2F3IGZyb20gaGlzIGxlZnQgdG8gaGlzIHJpZ2h0LjxcL3A+XHJcblxyXG48cD5NaWNoYWVsJnJzcXVvO3MgZmF0aGVyIGlzIHdvcmtpbmcgYXQgJmxkcXVvO0FyZWEgNTEmcmRxdW87IGFuZCBoYXMgYSBmYWNpbGl0eSZyc3F1bztzIG1hcCBhdCBoaXMgaG9tZS4gTWljaGFlbCBmb3VuZCB0aGlzIG1hcCBhbmQgaGUgY2FuIG5vdyB2ZXJpZnkgTmljayZyc3F1bztzIGNsYWltIG9mIGJlaW5nIG5lYXIgdGhlIGZhY2lsaXR5JnJzcXVvO3MgZmVuY2UuIEhvd2V2ZXIsIGl0IHR1cm5zIG91dCB0byBiZSBjb21wbGljYXRlZCwgYW5kIHlvdXIgdGFzayBpcyB0byB3cml0ZSBhIHByb2dyYW0gdG8gcGVyZm9ybSB0aGlzIHZlcmlmaWNhdGlvbi48XC9wPlxyXG5cclxuPHA+T24gYSBtYXAgZGlzdGluY3RseSBzaGFwZWQgY2hpbW5leXMgYXJlIGRlbm90ZWQgYnkgY2FwaXRhbCBsZXR0ZXJzIGZyb20gQSB0byBaLiBFYWNoIGxldHRlciBkZW5vdGVzIGEgZGlzdGluY3Qgc2hhcGUsIGJ1dCBjaGltbmV5cyB3aXRoIHRoaXMgc2hhcGUgY2FuIGFwcGVhciBtb3JlIHRoYW4gb25jZSBvbiBhIG1hcC4gVGhlIG1hcCB1c2VzIENhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbSBvcmllbnRlZCBzbyB0aGF0IHRoZSBmZW5jZSBpcyBPeCBheGlzIGFuZCBhbGwgY2hpbW5leXMgYXJlIGxvY2F0ZWQgb24gYSBoYWxmLXBsYW5lIHdpdGggYSBwb3NpdGl2ZSB5IGNvb3JkaW5hdGUuIEFsbCBjaGltbmV5cyBhcmUgY29uc2lkZXJlZCB0byBiZSBwb2ludHMgKHRoZWlyIHNpemVzIGFuZCBhY3R1YWwgZ2VvbWV0cmljYWwgc2hhcGVzIGFyZSBpZ25vcmVkIGZvciB0aGUgcHVycG9zZSBvZiB0aGlzIHByb2JsZW0pLjxcL3A+XHJcblxyXG48cD5OaWNrIGNsYWltcyB0aGF0IGhlIGxvb2tlZCBmcm9tIGEgcG9pbnQgb24gdGhlIGZlbmNlIHdoZXJlIG5vIHR3byBjaGltbmV5cyB3ZXJlIG9uIHRoZSBzYW1lIGxpbmUgb2YgaGlzIHNpZ2h0IChhIGxpbmUgdGhhdCBvcmlnaW5hdGVzIGZyb20gaGlzIHBvaW50IG9mIHZpZXcpLiBJdCBtZWFucyB0aGF0IGF0IHRoZSBwb2ludCBoZSBsb29rZWQgZnJvbSwgYWxsIHRoZSBjaGltbmV5cyBoZSBzYXcgaGFkIGEgd2VsbC1kZWZpbmVkIG9yZGVyIGZyb20gbGVmdCB0byByaWdodC48XC9wPlxyXG5cclxuPHA+TWljaGFlbCBoYXZlIGFscmVhZHkgbWFkZSBhIHByZWxpbWluYXJ5IHZlcmlmaWNhdGlvbiBvZiBOaWNrJnJzcXVvO3MgY2xhaW0uIEhlIG1hZGUgc3VyZSB0aGF0IHRoZSBudW1iZXIgb2YgZGlzdGluY3RseSBzaGFwZWQgY2hpbW5leXMgbWF0Y2hlcyB0aGVpciBudW1iZXIgb24gdGhlIG1hcC4gTm93IE1pY2hhZWwgbmVlZHMgdG8gcGVyZm9ybSBhIGZpbmFsIHZlcmlmaWNhdGlvbiAmbWRhc2g7IHRvIGdldCBhIGxpc3Qgb2YgeCBjb29yZGluYXRlcyBvbiBhIGZlbmNlIChpZiBhbnkpIHdoZXJlIHRoZSBjb3JyZXNwb25kaW5nIGFycmFuZ2VtZW50IG9mIGNoaW1uZXlzIGNvdWxkIGJlIHNlZW4gZnJvbS4gVGhpcyBpbmZvcm1hdGlvbiBzaGFsbCBiZSBwcmVzZW50ZWQgYXMgYW4gb3JkZXJlZCBsaXN0IG9mIG9wZW4gaW50ZXJ2YWxzIChhPHN1Yj4xPFwvc3ViPiwgYjxzdWI+MTxcL3N1Yj4pLCAoYTxzdWI+MjxcL3N1Yj4sIGI8c3ViPjI8XC9zdWI+KSwgLi4uLCAoYTxzdWI+bjxcL3N1Yj4sIGI8c3ViPm48XC9zdWI+KSwgc28gdGhhdCBhPHN1Yj4xPFwvc3ViPiAmbHQ7IGI8c3ViPjE8XC9zdWI+ICZsZTsgYTxzdWI+MjxcL3N1Yj4gJmx0OyBiPHN1Yj4yPFwvc3ViPiAmbGU7IC4uLiAmbGU7IGE8c3ViPm48XC9zdWI+ICZsdDsgYjxzdWI+bjxcL3N1Yj4uIEFzdGVyaXNrIHN5bWJvbCAoJmxkcXVvOyZsb3dhc3Q7JnJkcXVvOykgaXMgdXNlZCBpbiBwbGFjZSBvZiBhPHN1Yj4xPFwvc3ViPiBhbmRcL29yIGJuIHRvIGRlbm90ZSBpbnRlcnZhbCB0aGF0IGV4dGVuZHMgdG8gaW5maW5pdHkgb24gdGhlIGxlZnQgb3Igb24gdGhlIHJpZ2h0IGNvcnJlc3BvbmRpbmdseS48XC9wPlxyXG5cclxuPHA+Tm90ZSwgdGhhdCBiPHN1Yj5pPFwvc3ViPiA9IGE8c3ViPmk8XC9zdWI+KzEgPSB4IGluIGNhc2Ugd2hlcmUgTmljayBjb3VsZCBub3QgaGF2ZSBiZWVuIGF0IHRoZSBwb2ludCB4IG9uIGEgZmVuY2UsIGJlY2F1c2UgaGUgd291bGQgaGF2ZSBzZWVuIG1vcmUgdGhhbiBvbmUgY2hpbW5leSBvbiBhIHNpbmdsZSBsaW5lIG9mIGhpcyBzaWdodCwgYnV0IGJlaW5nIHRvIHRoZSBsZWZ0IG9yIHRvIHRoZSByaWdodCBvZiB4IHlpZWxkcyB0aGUgb3JkZXIgb2YgY2hpbW5leXMgdGhhdCBoZSBzYXcuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgXHVmYjAxcnN0IGxpbmUgb2YgdGhlIGlucHV0IFx1ZmIwMWxlIGNvbnRhaW5zIGFuIGludGVnZXIgbnVtYmVyIG0gJm1kYXNoOyB0aGUgbnVtYmVyIG9mIGNoaW1uZXlzIGF0IHRoZSAmbGRxdW87QXJlYSA1MSZyZHF1bzsgZmFjaWxpdHkgKDEgJmxlOyBtICZsZTsgMTAwKS4gVGhlIHNlY29uZCBsaW5lIG9mIHRoZSBpbnB1dCBcdWZiMDFsZSBjb250YWlucyBhIHN0cmluZyBvZiBtIGxldHRlcnMgZnJvbSBBIHRvIFogdGhhdCBkZXNjcmliZSB0aGUgY2hpbW5leXMgdGhhdCBOaWNrIHNhdyBmcm9tIGhpcyBsZWZ0IHRvIGhpcyByaWdodC4gQSBzaW5nbGUgbGV0dGVyIGNhbiBiZSB1c2VkIG1vcmUgdGhhbiBvbmNlIChpZiBOaWNrIHNhdyB0aGUgc2FtZSBzaGFwZSBtb3JlIHRoYW4gb25jZSkuIFRoZW4gZm9sbG93IG0gbGluZXMgdGhhdCBkZXNjcmliZSBjaGltbmV5cyBvbiB0aGUgbWFwLiBFYWNoIGxpbmUgY29udGFpbnMgdGhyZWUgdG9rZW5zIHNlcGFyYXRlZCBieSBzcGFjZXMgJm1kYXNoOyBjaGltbmV5IHNoYXBlIGxldHRlciAoZnJvbSBBIHRvIFopLCBhbmQgdHdvIGludGVnZXJzIHg8c3ViPmk8XC9zdWI+IGFuZCB5PHN1Yj5pPFwvc3ViPiAmbWRhc2g7IGNoaW1uZXkgY29vcmRpbmF0ZXMgKCZtaW51czsxMDAgJmxlOyB4PHN1Yj5pPFwvc3ViPiAmbGU7IDEwMCwgMCAmbHQ7IHk8c3ViPmk8XC9zdWI+ICZsZTsgMTAwKS4gT24gdGhlc2UgbSBsaW5lcyBsZXR0ZXJzIGFwcGVhciBpbiBhcmJpdHJhcnkgb3JkZXIsIGJ1dCBlYWNoIGxldHRlciBmcm9tIEEgdG8gWiBhcHBlYXJzIHRoZSBzYW1lIG51bWJlciBvZiB0aW1lcyBhcyBvbiB0aGUgc2Vjb25kIGxpbmUgb2YgdGhlIGlucHV0IFx1ZmIwMWxlLiBObyB0d28gY2hpbW5leXMgaGF2ZSB0aGUgc2FtZSBjb29yZGluYXRlcy48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5Xcml0ZSB0byB0aGUgZmlyc3QgbGluZSBvZiB0aGUgb3V0cHV0IGZpbGUgYSBzaW5nbGUgaW50ZWdlciBudW1iZXIgbiAmbWRhc2g7IHRoZSBudW1iZXIgb2YgaW50ZXJ2YWxzIHRoYXQgZGVzY3JpYmUgeCBjb29yZGluYXRlcyBvbiBhIGZlbmNlIHdoZXJlIE5pY2sgY291bGQgaGF2ZSBzZWVuIHRoZSBjb3JyZXNwb25kaW5nIGFycmFuZ2VtZW50IG9mIGNoaW1uZXlzIGZyb20uIFdyaXRlIHRvIHRoZSBzZWNvbmQgbGluZSBvZiB0aGUgb3V0cHV0IGZpbGUgMm4gbnVtYmVycyBhPHN1Yj4xPFwvc3ViPiwgYjxzdWI+MTxcL3N1Yj4sIC4uLiAsIGE8c3ViPm48XC9zdWI+LCBiPHN1Yj5uPFwvc3ViPiB1c2luZyAmbGRxdW87Jmxvd2FzdDsmcmRxdW87IGluc3RlYWQgb2YgYSBudW1iZXIgYTxzdWI+MTxcL3N1Yj4gYW5kXC9vciBiPHN1Yj5uPFwvc3ViPiB0byBkZW5vdGUgaW5maW5pdHkuIE51bWJlcnMgbXVzdCBiZSBwcmVjaXNlIHVwIHRvIDEwPHN1cD4mbWludXM7NjxcL3N1cD4uPFwvcD5cclxuIiwiaGludCI6IjxwPlRoZSBwaWN0dXJlIGJlbG93IHNob3dzIHRoYXQgaWYgdGhlIGJveSBsb29rcyBmcm9tIHRoZSBwb2ludCB4ID0gJm1pbnVzOzcgaGUgc2VlcyB0aGUgY2hpbW5leXMgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjogQywgRCwgRCwgQy4gSXQgaXMgc28gZm9yIGFueSBwb2ludCBmcm9tIHRoZSBzZXQgKCZtaW51czsmaW5maW47LCAmbWludXM7MTEpICZjdXA7ICgmbWludXM7MTEsICZtaW51czszLjUpICZjdXA7ICgxNCwgKyZpbmZpbjspICZtZGFzaDsgdGhlIGZpcnN0IGV4YW1wbGUgZnJvbSB0aGUgcHJvYmxlbSBzdGF0ZW1lbnQuPFwvcD5cclxuXHJcbjxwPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvYXJlYTUxLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjI0NHB4OyB3aWR0aDo1MjlweFwiIFwvPjxcL3A+XHJcbiIsIm9yaWdpbmFsIjoiMSIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiRW5nbGlzaCJ9XQ==