시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 44 36 25 78.125%

문제

스타일리시는 프로그래밍 언어이다.

스타일리시의 문법은 알파벳으로 이루어진 이름과 세 가지 유형의 괄호, 마침표 ('.'), 새 줄로 이루어져 있다.

괄호는 소괄호 ('('와 ')'), 중괄호 ('{'와 '}'), 대괄호 ('['와 ']')로 총 세 가지이며, 항상 쌍을 이루도록 사용해야 한다. 또, 중첩될 수도 있다. 다른 프로그래밍 언어와 다르게, 스타일리시는 공백 대신에 마침표('.')를 사용한다. 다음은 스타일리시 프로그램의 예이다.

(Welcome.to
.........Stylish)
{Stylish.is
.....[.(a.programming.language.fun.to.learn)
.......]
.....Maybe.[
.......It.will.be.an.official.ICPC.language
.......]
.....}

위의 예제에서 볼 수 있듯이, 스타일리시 프로그램은 마침표를 사용해서 인덴트를 한다. 각 줄의 인덴트의 양이란, 줄의 앞에 있는 연속되는 마침표의 개수이다.

잘 인덴트된 스타일리시 프로그램의 인덴트 양은 인덴트 스타일 (R,C,S)를 이용해서 결정한다. (1 ≤ R,C,S ≤ 20) 여기서 R은 소괄호, C는 중괄호, S는 대괄호에 해당하는 인덴트의 양이다.

잘 인덴트된 프로그램의 각 줄의 인덴트의 양은 R(ro - rc) + C(co - cc) + S(so - sc)로 결정할 수 있다. 여기서 ro, co, so은 이전 줄까지 나온 여는 소괄호, 중괄호, 대괄호의 개수이고, rc, cc, sc는 닫는 소괄호, 중괄호, 대괄호의 개수이다. 잘 인덴트된 스타일리시 프로그램의 첫 줄에는 항상 인덴트가 없다.

위에 나와있는 예제의 인덴트 스타일은 (R,C,S) = (9,5,2) 이다. 첫째 줄에는 소괄호만 하나 있다. 따라서, 두 번째 줄의 인덴트의 양은 9(1 - 0) + 5(0 - 0) + 2(0 - 0) = 9이다. 처음 네 줄에는 여는 소괄호가 두 개, 여는 중괄호와 대괄호가 각각 한 개, 닫는 소괄호가 두 개 있다. 따라서, 다섯 번째 줄의 인덴트의 양은 9(2 - 2) + 5(1 - 0) + 2(1 - 0) = 7이다.

잘 인덴트된 스타일리시 프로그램 P와 그렇지 않은 프로그램 Q가 주어졌을 때, P의 인덴트 스타일을 구해 Q에 적용하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 p와 q가 주어진다. (1 ≤ p, q ≤ 10)

다음 p개 줄에는 스타일리시 마스터가 작성한 잘 인덴트된 프로그램 P가 주어지며, 그 다음 q개 줄에는 다른 프로그램 Q가 주어진다. 두 프로그램의 각 줄은 적어도 1글자 이상이며, 80글자를 넘지 않는다. Q의 모든 줄은 마침표로 시작하지 않는다.

마지막 줄에는 0이 두 개 주어진다.

출력

각 테스트 케이스에 대해서, P의 인덴트 스타일을 구해 Q에 적용한 뒤, 각 줄의 인덴트의 양을 공백으로 구분해 출력한다. 만약, 인덴트의 양을 유일하게 결정할 수 없는 줄이 있다면, 그 줄은 -1을 출력한다.

예제 입력 1

5 4
(Follow.my.style
.........starting.from.round.brackets)
{then.curly.brackets
.....[.and.finally
.......square.brackets.]}
(Thank.you
{for.showing.me
[all
the.secrets]})
4 2
(This.time.I.will.show.you
.........(how.to.use.round.brackets)
.........[but.not.about.square.brackets]
.........{nor.curly.brackets})
(I.learned
how.to.use.round.brackets)
4 2
(This.time.I.will.show.you
.........(how.to.use.round.brackets)
.........[but.not.about.square.brackets]
.........{nor.curly.brackets})
[I.have.not.learned
how.to.use.square.brackets]
2 2
(Be.smart.and.let.fear.of
..(closed.brackets).go)
(A.pair.of.round.brackets.enclosing
[A.line.enclosed.in.square.brackets])
1 2
Telling.you.nothing.but.you.can.make.it
[One.liner.(is).(never.indented)]
[One.liner.(is).(never.indented)]
2 4
([{Learn.from.my.KungFu
...}])
((
{{
[[
]]}}))
1 2
Do.not.waste.your.time.trying.to.read.from.emptiness
(
)
2 3
({Quite.interesting.art.of.ambiguity
....})
{
(
)}
2 4
({[
............................................................]})
(
{
[
]})
0 0

예제 출력 1

0 9 14 16
0 9
0 -1
0 2
0 0
0 2 4 6
0 -1
0 -1 4
0 20 40 60
W3sicHJvYmxlbV9pZCI6IjM4MjYiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWMyYTRcdWQwYzBcdWM3N2NcdWI5YWNcdWMyZGMiLCJkZXNjcmlwdGlvbiI6IjxwPlx1YzJhNFx1ZDBjMFx1Yzc3Y1x1YjlhY1x1YzJkY1x1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3OThcdWJjMGQgXHVjNWI4XHVjNWI0XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWMyYTRcdWQwYzBcdWM3N2NcdWI5YWNcdWMyZGNcdWM3NTggXHViYjM4XHViYzk1XHVjNzQwIFx1YzU0Y1x1ZDMwY1x1YmNiM1x1YzczY1x1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM5YzQgXHVjNzc0XHViOTg0XHVhY2ZjIFx1YzEzOCBcdWFjMDBcdWM5YzAgXHVjNzIwXHVkNjE1XHVjNzU4IFx1YWQwNFx1ZDYzOCwgXHViOWM4XHVjZTY4XHVkNDVjICgmIzM5Oy4mIzM5OyksIFx1YzBjOCBcdWM5MDRcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjODM4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhZDA0XHVkNjM4XHViMjk0IFx1YzE4Y1x1YWQwNFx1ZDYzOCAoJiMzOTsoJiMzOTtcdWM2NDAgJiMzOTspJiMzOTspLCBcdWM5MTFcdWFkMDRcdWQ2MzggKCYjMzk7eyYjMzk7XHVjNjQwICYjMzk7fSYjMzk7KSwgXHViMzAwXHVhZDA0XHVkNjM4ICgmIzM5O1smIzM5O1x1YzY0MCAmIzM5O10mIzM5OylcdWI4NWMgXHVjZDFkIFx1YzEzOCBcdWFjMDBcdWM5YzBcdWM3NzRcdWJhNzAsIFx1ZDU2ZFx1YzBjMSBcdWMzMGRcdWM3NDQgXHVjNzc0XHViOGU4XHViM2M0XHViODVkIFx1YzBhY1x1YzZhOVx1ZDU3NFx1YzU3YyBcdWQ1NWNcdWIyZTQuIFx1YjYxMCwgXHVjOTExXHVjY2E5XHViNDIwIFx1YzIxOFx1YjNjNCBcdWM3ODhcdWIyZTQuIFx1YjJlNFx1Yjk3OCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3OThcdWJjMGQgXHVjNWI4XHVjNWI0XHVjNjQwIFx1YjJlNFx1Yjk3NFx1YWM4YywgXHVjMmE0XHVkMGMwXHVjNzdjXHViOWFjXHVjMmRjXHViMjk0IFx1YWNmNVx1YmMzMSBcdWIzMDBcdWMyZTBcdWM1ZDAgXHViOWM4XHVjZTY4XHVkNDVjKCYjMzk7LiYjMzk7KVx1Yjk3YyBcdWMwYWNcdWM2YTlcdWQ1NWNcdWIyZTQuIFx1YjJlNFx1Yzc0Y1x1Yzc0MCBcdWMyYTRcdWQwYzBcdWM3N2NcdWI5YWNcdWMyZGMgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzU4IFx1YzYwOFx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHByZT5cclxuKFdlbGNvbWUudG9cclxuLi4uLi4uLi4uU3R5bGlzaClcclxue1N0eWxpc2guaXNcclxuLi4uLi5bLihhLnByb2dyYW1taW5nLmxhbmd1YWdlLmZ1bi50by5sZWFybilcclxuLi4uLi4uLl1cclxuLi4uLi5NYXliZS5bXHJcbi4uLi4uLi5JdC53aWxsLmJlLmFuLm9mZmljaWFsLklDUEMubGFuZ3VhZ2VcclxuLi4uLi4uLl1cclxuLi4uLi59PFwvcHJlPlxyXG5cclxuPHA+XHVjNzA0XHVjNzU4IFx1YzYwOFx1YzgxY1x1YzVkMFx1YzExYyBcdWJjZmMgXHVjMjE4IFx1Yzc4OFx1YjRlZlx1Yzc3NCwgXHVjMmE0XHVkMGMwXHVjNzdjXHViOWFjXHVjMmRjIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0MCBcdWI5YzhcdWNlNjhcdWQ0NWNcdWI5N2MgXHVjMGFjXHVjNmE5XHVkNTc0XHVjMTFjIFx1Yzc3OFx1YjM3NFx1ZDJiOFx1Yjk3YyBcdWQ1NWNcdWIyZTQuIFx1YWMwMSBcdWM5MDRcdWM3NTggXHVjNzc4XHViMzc0XHVkMmI4XHVjNzU4IFx1YzU5MVx1Yzc3NFx1Yjc4MCwgXHVjOTA0XHVjNzU4IFx1YzU1ZVx1YzVkMCBcdWM3ODhcdWIyOTQgXHVjNWYwXHVjMThkXHViNDE4XHViMjk0IFx1YjljOFx1Y2U2OFx1ZDQ1Y1x1Yzc1OCBcdWFjMWNcdWMyMThcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yzc5OCBcdWM3NzhcdWIzNzRcdWQyYjhcdWI0MWMgXHVjMmE0XHVkMGMwXHVjNzdjXHViOWFjXHVjMmRjIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc1OCBcdWM3NzhcdWIzNzRcdWQyYjggXHVjNTkxXHVjNzQwIFx1Yzc3OFx1YjM3NFx1ZDJiOCBcdWMyYTRcdWQwYzBcdWM3N2MgKFIsQyxTKVx1Yjk3YyBcdWM3NzRcdWM2YTlcdWQ1NzRcdWMxMWMgXHVhY2IwXHVjODE1XHVkNTVjXHViMmU0LiAoMSAmbGU7IFIsQyxTICZsZTsgMjApIFx1YzVlY1x1YWUzMFx1YzExYyBSXHVjNzQwIFx1YzE4Y1x1YWQwNFx1ZDYzOCwgQ1x1YjI5NCBcdWM5MTFcdWFkMDRcdWQ2MzgsIFNcdWIyOTQgXHViMzAwXHVhZDA0XHVkNjM4XHVjNWQwIFx1ZDU3NFx1YjJmOVx1ZDU1OFx1YjI5NCBcdWM3NzhcdWIzNzRcdWQyYjhcdWM3NTggXHVjNTkxXHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM3OTggXHVjNzc4XHViMzc0XHVkMmI4XHViNDFjIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc1OCBcdWFjMDEgXHVjOTA0XHVjNzU4IFx1Yzc3OFx1YjM3NFx1ZDJiOFx1Yzc1OCBcdWM1OTFcdWM3NDAgUihyPHN1Yj5vPFwvc3ViPiAtIHI8c3ViPmM8XC9zdWI+KSArIEMoYzxzdWI+bzxcL3N1Yj4gLSBjPHN1Yj5jPFwvc3ViPikgKyBTKHM8c3ViPm88XC9zdWI+IC0gczxzdWI+YzxcL3N1Yj4pXHViODVjIFx1YWNiMFx1YzgxNVx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMmU0LiBcdWM1ZWNcdWFlMzBcdWMxMWMgcjxzdWI+bzxcL3N1Yj4sIGM8c3ViPm88XC9zdWI+LCBzPHN1Yj5vPFwvc3ViPlx1Yzc0MCBcdWM3NzRcdWM4MDQgXHVjOTA0XHVhZTRjXHVjOWMwIFx1YjA5OFx1YzYyOCBcdWM1ZWNcdWIyOTQgXHVjMThjXHVhZDA0XHVkNjM4LCBcdWM5MTFcdWFkMDRcdWQ2MzgsIFx1YjMwMFx1YWQwNFx1ZDYzOFx1Yzc1OCBcdWFjMWNcdWMyMThcdWM3NzRcdWFjZTAsIHI8c3ViPmM8XC9zdWI+LCBjPHN1Yj5jPFwvc3ViPiwgczxzdWI+YzxcL3N1Yj5cdWIyOTQgXHViMmViXHViMjk0IFx1YzE4Y1x1YWQwNFx1ZDYzOCwgXHVjOTExXHVhZDA0XHVkNjM4LCBcdWIzMDBcdWFkMDRcdWQ2MzhcdWM3NTggXHVhYzFjXHVjMjE4XHVjNzc0XHViMmU0LiBcdWM3OTggXHVjNzc4XHViMzc0XHVkMmI4XHViNDFjIFx1YzJhNFx1ZDBjMFx1Yzc3Y1x1YjlhY1x1YzJkYyBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NTggXHVjY2FiIFx1YzkwNFx1YzVkMFx1YjI5NCBcdWQ1NmRcdWMwYzEgXHVjNzc4XHViMzc0XHVkMmI4XHVhYzAwIFx1YzVjNlx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNzA0XHVjNWQwIFx1YjA5OFx1YzY0MFx1Yzc4OFx1YjI5NCBcdWM2MDhcdWM4MWNcdWM3NTggXHVjNzc4XHViMzc0XHVkMmI4IFx1YzJhNFx1ZDBjMFx1Yzc3Y1x1Yzc0MCAoUixDLFMpID0gKDksNSwyKSBcdWM3NzRcdWIyZTQuIFx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDBcdWIyOTQgXHVjMThjXHVhZDA0XHVkNjM4XHViOWNjIFx1ZDU1OFx1YjA5OCBcdWM3ODhcdWIyZTQuIFx1YjUzMFx1Yjc3Y1x1YzExYywgXHViNDUwIFx1YmM4OFx1YzlmOCBcdWM5MDRcdWM3NTggXHVjNzc4XHViMzc0XHVkMmI4XHVjNzU4IFx1YzU5MVx1Yzc0MCA5KDEgLSAwKSArIDUoMCAtIDApICsgMigwIC0gMCkgPSA5XHVjNzc0XHViMmU0LiBcdWNjOThcdWM3NGMgXHViMTI0IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWM1ZWNcdWIyOTQgXHVjMThjXHVhZDA0XHVkNjM4XHVhYzAwIFx1YjQ1MCBcdWFjMWMsIFx1YzVlY1x1YjI5NCBcdWM5MTFcdWFkMDRcdWQ2MzhcdWM2NDAgXHViMzAwXHVhZDA0XHVkNjM4XHVhYzAwIFx1YWMwMVx1YWMwMSBcdWQ1NWMgXHVhYzFjLCBcdWIyZWJcdWIyOTQgXHVjMThjXHVhZDA0XHVkNjM4XHVhYzAwIFx1YjQ1MCBcdWFjMWMgXHVjNzg4XHViMmU0LiBcdWI1MzBcdWI3N2NcdWMxMWMsIFx1YjJlNFx1YzEyZiBcdWJjODhcdWM5ZjggXHVjOTA0XHVjNzU4IFx1Yzc3OFx1YjM3NFx1ZDJiOFx1Yzc1OCBcdWM1OTFcdWM3NDAgOSgyIC0gMikgKyA1KDEgLSAwKSArIDIoMSAtIDApID0gN1x1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNzk4IFx1Yzc3OFx1YjM3NFx1ZDJiOFx1YjQxYyBcdWMyYTRcdWQwYzBcdWM3N2NcdWI5YWNcdWMyZGMgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4IFBcdWM2NDAgXHVhZGY4XHViODA3XHVjOWMwIFx1YzU0YVx1Yzc0MCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YTggUVx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM4NGNcdWM3NDQgXHViNTRjLCBQXHVjNzU4IFx1Yzc3OFx1YjM3NFx1ZDJiOCBcdWMyYTRcdWQwYzBcdWM3N2NcdWM3NDQgXHVhZDZjXHVkNTc0IFFcdWM1ZDAgXHVjODAxXHVjNmE5XHVkNTU4XHViMjk0IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0NCBcdWM3OTFcdWMxMzFcdWQ1NThcdWMyZGNcdWM2MjQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWM3ODVcdWI4MjVcdWM3NDAgXHVjNWVjXHViN2VjIFx1YWMxY1x1Yzc1OCBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHViODVjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzgzOCBcdWM3ODhcdWIyZTQuIFx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHVjNzU4IFx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDBcdWIyOTQgcFx1YzY0MCBxXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gKDEgJmxlOyBwLCBxICZsZTsgMTApPFwvcD5cclxuXHJcbjxwPlx1YjJlNFx1Yzc0YyBwXHVhYzFjIFx1YzkwNFx1YzVkMFx1YjI5NCBcdWMyYTRcdWQwYzBcdWM3N2NcdWI5YWNcdWMyZGMgXHViOWM4XHVjMmE0XHVkMTMwXHVhYzAwIFx1Yzc5MVx1YzEzMVx1ZDU1YyBcdWM3OTggXHVjNzc4XHViMzc0XHVkMmI4XHViNDFjIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOCBQXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljMFx1YmE3MCwgXHVhZGY4IFx1YjJlNFx1Yzc0YyBxXHVhYzFjIFx1YzkwNFx1YzVkMFx1YjI5NCBcdWIyZTRcdWI5NzggXHVkNTA0XHViODVjXHVhZGY4XHViN2E4IFFcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWI0NTAgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzU4IFx1YWMwMSBcdWM5MDRcdWM3NDAgXHVjODAxXHVjNWI0XHViM2M0IDFcdWFlMDBcdWM3OTAgXHVjNzc0XHVjMGMxXHVjNzc0XHViYTcwLCA4MFx1YWUwMFx1Yzc5MFx1Yjk3YyBcdWIxMThcdWM5YzAgXHVjNTRhXHViMjk0XHViMmU0LiBRXHVjNzU4IFx1YmFhOFx1YjRlMCBcdWM5MDRcdWM3NDAgXHViOWM4XHVjZTY4XHVkNDVjXHViODVjIFx1YzJkY1x1Yzc5MVx1ZDU1OFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjljOFx1YzljMFx1YjljOSBcdWM5MDRcdWM1ZDBcdWIyOTQgMFx1Yzc3NCBcdWI0NTAgXHVhYzFjIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDEgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1YzVkMCBcdWIzMDBcdWQ1NzRcdWMxMWMsIFBcdWM3NTggXHVjNzc4XHViMzc0XHVkMmI4IFx1YzJhNFx1ZDBjMFx1Yzc3Y1x1Yzc0NCBcdWFkNmNcdWQ1NzQgUVx1YzVkMCBcdWM4MDFcdWM2YTlcdWQ1NWMgXHViNGE0LCBcdWFjMDEgXHVjOTA0XHVjNzU4IFx1Yzc3OFx1YjM3NFx1ZDJiOFx1Yzc1OCBcdWM1OTFcdWM3NDQgXHVhY2Y1XHViYzMxXHVjNzNjXHViODVjIFx1YWQ2Y1x1YmQ4NFx1ZDU3NCBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuIFx1YjljY1x1YzU3ZCwgXHVjNzc4XHViMzc0XHVkMmI4XHVjNzU4IFx1YzU5MVx1Yzc0NCBcdWM3MjBcdWM3N2NcdWQ1NThcdWFjOGMgXHVhY2IwXHVjODE1XHVkNTYwIFx1YzIxOCBcdWM1YzZcdWIyOTQgXHVjOTA0XHVjNzc0IFx1Yzc4OFx1YjJlNFx1YmE3NCwgXHVhZGY4IFx1YzkwNFx1Yzc0MCAtMVx1Yzc0NCBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVkNTVjXHVhZDZkXHVjNWI0In0seyJwcm9ibGVtX2lkIjoiMzgyNiIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IlN0eWxpc2giLCJkZXNjcmlwdGlvbiI6IjxwPlN0eWxpc2ggaXMgYSBwcm9ncmFtbWluZyBsYW5ndWFnZSB3aG9zZSBzeW50YXggY29tcHJpc2VzIG5hbWVzLCB0aGF0IGFyZSBzZXF1ZW5jZXMgb2YgTGF0aW4gYWxwaGFiZXQgbGV0dGVycywgdGhyZWUgdHlwZXMgb2YgZ3JvdXBpbmcgc3ltYm9scywgcGVyaW9kcyAoYC4mIzM5OyksIGFuZCBuZXdsaW5lcy4gR3JvdXBpbmcgc3ltYm9scywgbmFtZWx5IHJvdW5kIGJyYWNrZXRzIChgKCYjMzk7IGFuZCBgKSYjMzk7KSwgY3VybHkgYnJhY2tldHMgKGB7JiMzOTsgYW5kIGB9JiMzOTspLCBhbmQgc3F1YXJlIGJyYWNrZXRzIChgWyYjMzk7IGFuZCBgXSYjMzk7KSwgbXVzdCBtYXRjaCBhbmQgYmUgbmVzdGVkIHByb3Blcmx5LiBVbmxpa2UgbW9zdCBvdGhlciBwcm9ncmFtbWluZyBsYW5ndWFnZXMsIFN0eWxpc2ggdXNlcyBwZXJpb2RzIGluc3RlYWQgb2Ygd2hpdGVzcGFjZXMgZm9yIHRoZSBwdXJwb3NlIG9mIHRlcm0gc2VwYXJhdGlvbi4gVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIGEgU3R5bGlzaCBwcm9ncmFtLjxcL3A+XHJcblxyXG48cHJlPlxyXG4oV2VsY29tZS50b1xyXG4uLi4uLi4uLi5TdHlsaXNoKVxyXG57U3R5bGlzaC5pc1xyXG4uLi4uLlsuKGEucHJvZ3JhbW1pbmcubGFuZ3VhZ2UuZnVuLnRvLmxlYXJuKVxyXG4uLi4uLi4uXVxyXG4uLi4uLk1heWJlLltcclxuLi4uLi4uLkl0LndpbGwuYmUuYW4ub2ZmaWNpYWwuSUNQQy5sYW5ndWFnZVxyXG4uLi4uLi4uXVxyXG4uLi4uLn08XC9wcmU+XHJcblxyXG48cD5BcyB5b3Ugc2VlIGluIHRoZSBleGFtcGxlLCBhIFN0eWxpc2ggcHJvZ3JhbSBpcyBpbmRlbnRlZCBieSBwZXJpb2RzLiBUaGUgYW1vdW50IG9mIGluZGVudGF0aW9uIG9mIGEgbGluZSBpcyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgcGVyaW9kcyBvZiBpdC48XC9wPlxyXG5cclxuPHA+WW91ciBtaXNzaW9uIGlzIHRvIHZpc2l0IFN0eWxpc2ggbWFzdGVycywgbGVhcm4gdGhlaXIgaW5kZW50YXRpb24gc3R5bGVzLCBhbmQgYmVjb21lIHRoZSB5b3VuZ2VzdCBTdHlsaXNoIG1hc3Rlci4gQW4gaW5kZW50YXRpb24gc3R5bGUgZm9yIHdlbGwtaW5kZW50ZWQgU3R5bGlzaCBwcm9ncmFtcyBpcyBkZSBuZWQgYnkgYSB0cmlwbGUgb2YgaW50ZWdlcnMsIChSLCBDLCBTKSwgc2F0aXNmeWluZyAxICZsZTsgUiwgQywgUyAmbGU7IDIwLiBSLCBDIGFuZCBTIGFyZSBhbW91bnRzIG9mIGluZGVudGF0aW9uIGludHJvZHVjZWQgYnkgYW4gb3BlbiByb3VuZCBicmFja2V0LCBhbiBvcGVuIGN1cmx5IGJyYWNrZXQsIGFuZCBhbiBvcGVuIHNxdWFyZSBicmFja2V0LCByZXNwZWN0aXZlbHkuPFwvcD5cclxuXHJcbjxwPkluIGEgd2VsbC1pbmRlbnRlZCBwcm9ncmFtLCB0aGUgYW1vdW50IG9mIGluZGVudGF0aW9uIG9mIGEgbGluZSBpcyBnaXZlbiBieSBSKHJvIC0gcmMpICsgQyhjbyAtIGNjKSArIFMoc28gLSBzYyksIHdoZXJlIHJvLCBjbywgYW5kIHNvIGFyZSB0aGUgbnVtYmVycyBvZiBvY2N1cnJlbmNlcyBvZiBvcGVuIHJvdW5kLCBjdXJseSwgYW5kIHNxdWFyZSBicmFja2V0cyBpbiBhbGwgcHJlY2VkaW5nIGxpbmVzLCByZXNwZWN0aXZlbHksIGFuZCByYywgY2MsIGFuZCBzYyBhcmUgdGhvc2Ugb2YgY2xvc2UgYnJhY2tldHMuIFRoZSBmaXJzdCBsaW5lIGhhcyBubyBpbmRlbnRhdGlvbiBpbiBhbnkgd2VsbC1pbmRlbnRlZCBwcm9ncmFtLjxcL3A+XHJcblxyXG48cD5UaGUgYWJvdmUgZXhhbXBsZSBpcyBmb3JtYXR0ZWQgaW4gdGhlIGluZGVudGF0aW9uIHN0eWxlIChSLCBDLCBTKSA9ICg5LCA1LCAyKS4gVGhlIG9ubHkgZ3JvdXBpbmcgc3ltYm9sIG9jY3VycmluZyBpbiB0aGUgZmkgcnN0IGxpbmUgb2YgdGhlIGFib3ZlIHByb2dyYW0gaXMgYW4gb3BlbiByb3VuZCBicmFja2V0LiBUaGVyZWZvcmUgdGhlIGFtb3VudCBvZiBpbmRlbnRhdGlvbiBmb3IgdGhlIHNlY29uZCBsaW5lIGlzIDkgJm1pZGRvdDsgKDEgLSAwKSArIDUgJm5ic3A7Jm1pZGRvdDsgKDAgLSAwKSArIDIgJm1pZGRvdDsgKDAgLSAwKSA9IDkuIFRoZSBmaXJzdCBmb3VyIGxpbmVzIGNvbnRhaW4gdHdvIG9wZW4gcm91bmQgYnJhY2tldHMsIG9uZSBvcGVuIGN1cmx5IGJyYWNrZXQsIG9uZSBvcGVuIHNxdWFyZSBicmFja2V0LCB0d28gY2xvc2Ugcm91bmQgYnJhY2tldHMsIGJ1dCBubyBjbG9zZSBjdXJseSBub3Igc3F1YXJlIGJyYWNrZXQuIFRoZXJlZm9yZSB0aGUgYW1vdW50IG9mIGluZGVudGF0aW9uIGZvciB0aGUgZnRoIGxpbmUgaXMgOSAmbWlkZG90OyAoMiAtIDIpICsgNSAmbWlkZG90OyAoMSAtIDApICsgMiAmbWlkZG90OyAoMSAtIDApID0gNy48XC9wPlxyXG5cclxuPHA+U3R5bGlzaCBtYXN0ZXJzIHdyaXRlIG9ubHkgd2VsbC1pbmRlbnRlZCBTdHlsaXNoIHByb2dyYW1zLiBFdmVyeSBtYXN0ZXIgaGFzIGhpc1wvaGVyIG93biBpbmRlbnRhdGlvbiBzdHlsZS48XC9wPlxyXG5cclxuPHA+V3JpdGUgYSBwcm9ncmFtIHRoYXQgaW1pdGF0ZXMgaW5kZW50YXRpb24gc3R5bGVzIG9mIFN0eWxpc2ggbWFzdGVycy48XC9wPiIsImlucHV0IjoiPHA+VGhlIGlucHV0IGNvbnNpc3RzIG9mIG11bHRpcGxlIGRhdGFzZXRzLiBUaGUgZmkgcnN0IGxpbmUgb2YgYSBkYXRhc2V0IGNvbnRhaW5zIHR3byBpbnRlZ2VycyBwICgxIFx1MDAxNCZsZTsgcCAmbGU7IDEwKSBhbmQgcSAoMSAmbGU7IHEgJmxlOyAxMCkuIFRoZSBuZXh0IHAgbGluZXMgZm9ybSBhIHdlbGwtaW5kZW50ZWQgcHJvZ3JhbSBQIHdyaXR0ZW4gYnkgYSBTdHlsaXNoIG1hc3RlciBhbmQgdGhlIGZvbGxvd2luZyBxIGxpbmVzIGZvcm0gYW5vdGhlciBwcm9ncmFtIFEuIFlvdSBtYXkgYXNzdW1lIHRoYXQgZXZlcnkgbGluZSBvZiBib3RoIHByb2dyYW1zIGhhcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGFuZCBhdCBtb3N0IDgwIGNoYXJhY3RlcnMuIEFsc28sIHlvdSBtYXkgYXNzdW1lIHRoYXQgbm8gbGluZSBvZiBRIHN0YXJ0cyB3aXRoIGEgcGVyaW9kLjxcL3A+XHJcblxyXG48cD5UaGUgbGFzdCBkYXRhc2V0IGlzIGZvbGxvd2VkIGJ5IGEgbGluZSBjb250YWluaW5nIHR3byB6ZXJvcy48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5BcHBseSB0aGUgaW5kZW50YXRpb24gc3R5bGUgb2YgUCB0byBRIGFuZCBvdXRwdXQgdGhlIGFwcHJvcHJpYXRlIGFtb3VudCBvZiBpbmRlbnRhdGlvbiBmb3IgZWFjaCBsaW5lIG9mIFEuIFRoZSBhbW91bnRzIG11c3QgYmUgb3V0cHV0IGluIGEgbGluZSBpbiB0aGUgb3JkZXIgb2YgY29ycmVzcG9uZGluZyBsaW5lcyBvZiBRIGFuZCB0aGV5IG11c3QgYmUgc2VwYXJhdGVkIGJ5IGEgc2luZ2xlIHNwYWNlLiBUaGUgbGFzdCBvbmUgc2hvdWxkIG5vdCBiZSBmb2xsb3dlZCBieSB0cmFpbGluZyBzcGFjZXMuIElmIHRoZSBhcHByb3ByaWF0ZSBhbW91bnQgb2YgaW5kZW50YXRpb24gb2YgYSBsaW5lIG9mIFEgY2Fubm90IGJlIGRldGVybWluZWQgdW5pcXVlbHkgdGhyb3VnaCBhbmFseXNpcyBvZiBQLCB0aGVuIG91dHB1dCAtMSBmb3IgdGhhdCBsaW5lLjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJwcm9ibGVtX2xhbmdfY29kZSI6Ilx1YzYwMVx1YzViNCJ9XQ==