2,500개 단지 · 2026-09-17 기준
아파트 실거래가 지도 국토부 신고 기준 실제 거래가입니다. 호가가 아닙니다. 최근 거래일 2026-09-17.
기준월 2026-08 · 2026-09은 신고 진행 중이라 통계에서 제외
전국 중위 평당가
1,673만원
▼ 1.9% 전월 대비
거래 30,416건 · 3개월 +3.0%
수도권 중위 평당가
2,364만원
▼ 2.3% 전월 대비
거래 15,441건 · 3개월 +3.3%
서울 중위 평당가
4,210만원
▼ 2.7% 전월 대비
거래 3,135건 · 3개월 +4.1%
지도
지역 시세
상승·하락
추이·면적
지역 시세
전국
수도권만
행을 누르면 한 단계 더 들어갑니다. 시·도 → 시군구 → 법정동 → 거래 내역.
평당가는 그 지역 실제 거래의 중앙값 이고(평균은 대형 평형 몇 건에 끌려다닙니다),
옆의 증감은 최근 3개월 vs 직전 3개월 입니다. 표본이 얇은 곳은 숫자를 비워 둡니다.
가격 변동
3개월 대비
전월 대비
거래량이 급변한 지역
거래량은 가격보다 먼저 움직입니다. 늘어나는 곳은 매수세가, 줄어드는 곳은 관망세가 붙은 신호로 봅니다.
신고가 경신 단지
같은 단지·같은 전용면적에서 이전 최고가를 넘긴 거래입니다. 평형이 다르면 비교하지 않습니다.
거래 이력이 3건 이상이고 직전 최고가가 1억원 이상인 건만 집계합니다.
전국 평당가 추이
두 선이 벌어지면 시세가 아니라 거래 구성 이 움직인 것입니다.
파란 선은 그달 실제 거래의 중위 평당가, 주황 선은 지역별 변동만 누적한 지수입니다.
* 표시된 달은 신고 기한이 남아 아직 채워지는 중입니다.
거래 형태와 매수 주체
직거래는 가족·특수관계인 간 거래가 섞여 시세보다 크게 낮거나 높습니다.
비중이 높은 지역은 호가를 그대로 믿기 어렵습니다. 법인·공공 매수 비중은 투자 수요가 들어온 신호로 봅니다.
위의 모든 시세·변동률 통계는 직거래와 토지임대부를 빼고 계산합니다.
월별 거래량
* 표시된 달은 아직 신고 기한(계약일+30일)이 남아 건수가 더 늘어납니다. 추세 판단에서 빼고 보세요.
면적대별 평당가
지역 × 면적대 교차
거래가 많은 상위 12개 지역입니다. 같은 지역이라도 평형에 따라 평당가가 크게 갈립니다.
한 달 표본으로는 칸이 너무 얇아, 이 표와 위 면적대 그래프만 2025-10~2026-09 거래를 모두 모아 계산합니다.
전체 지역 강원특별자치도 강릉시 강원특별자치도 고성군 강원특별자치도 동해시 강원특별자치도 삼척시 강원특별자치도 속초시 강원특별자치도 양구군 강원특별자치도 양양군 강원특별자치도 영월군 강원특별자치도 원주시 강원특별자치도 인제군 강원특별자치도 정선군 강원특별자치도 철원군 강원특별자치도 춘천시 강원특별자치도 태백시 강원특별자치도 평창군 강원특별자치도 홍천군 강원특별자치도 화천군 강원특별자치도 횡성군 경기도 가평군 경기도 고양시 경기도 고양시 덕양구 경기도 고양시 일산동구 경기도 고양시 일산서구 경기도 과천시 경기도 광명시 경기도 광주시 경기도 구리시 경기도 군포시 경기도 김포시 경기도 남양주시 경기도 동두천시 경기도 부천시 경기도 부천시 소사구 경기도 부천시 오정구 경기도 부천시 원미구 경기도 성남시 경기도 성남시 분당구 경기도 성남시 수정구 경기도 성남시 중원구 경기도 수원시 경기도 수원시 권선구 경기도 수원시 영통구 경기도 수원시 장안구 경기도 수원시 팔달구 경기도 시흥시 경기도 안산시 경기도 안산시 단원구 경기도 안산시 상록구 경기도 안성시 경기도 안양시 경기도 안양시 동안구 경기도 안양시 만안구 경기도 양주시 경기도 양평군 경기도 여주시 경기도 연천군 경기도 오산시 경기도 용인시 경기도 용인시 기흥구 경기도 용인시 수지구 경기도 용인시 처인구 경기도 의왕시 경기도 의정부시 경기도 이천시 경기도 파주시 경기도 평택시 경기도 포천시 경기도 하남시 경기도 화성시 경기도 화성시 동탄구 경기도 화성시 만세구 경기도 화성시 병점구 경기도 화성시 효행구 경상남도 거제시 경상남도 거창군 경상남도 고성군 경상남도 김해시 경상남도 남해군 경상남도 밀양시 경상남도 사천시 경상남도 산청군 경상남도 양산시 경상남도 의령군 경상남도 진주시 경상남도 창녕군 경상남도 창원시 경상남도 창원시 마산합포구 경상남도 창원시 마산회원구 경상남도 창원시 성산구 경상남도 창원시 의창구 경상남도 창원시 진해구 경상남도 통영시 경상남도 하동군 경상남도 함안군 경상남도 함양군 경상남도 합천군 경상북도 경산시 경상북도 경주시 경상북도 고령군 경상북도 구미시 경상북도 김천시 경상북도 문경시 경상북도 봉화군 경상북도 상주시 경상북도 성주군 경상북도 안동시 경상북도 영덕군 경상북도 영양군 경상북도 영주시 경상북도 영천시 경상북도 예천군 경상북도 울릉군 경상북도 울진군 경상북도 의성군 경상북도 청도군 경상북도 청송군 경상북도 칠곡군 경상북도 포항시 경상북도 포항시 남구 경상북도 포항시 북구 대구광역시 군위군 대구광역시 남구 대구광역시 달서구 대구광역시 달성군 대구광역시 동구 대구광역시 북구 대구광역시 서구 대구광역시 수성구 대구광역시 중구 대전광역시 대덕구 대전광역시 동구 대전광역시 서구 대전광역시 유성구 대전광역시 중구 부산광역시 강서구 부산광역시 금정구 부산광역시 기장군 부산광역시 남구 부산광역시 동구 부산광역시 동래구 부산광역시 부산진구 부산광역시 북구 부산광역시 사상구 부산광역시 사하구 부산광역시 서구 부산광역시 수영구 부산광역시 연제구 부산광역시 영도구 부산광역시 중구 부산광역시 해운대구 서울특별시 강남구 서울특별시 강동구 서울특별시 강북구 서울특별시 강서구 서울특별시 관악구 서울특별시 광진구 서울특별시 구로구 서울특별시 금천구 서울특별시 노원구 서울특별시 도봉구 서울특별시 동대문구 서울특별시 동작구 서울특별시 마포구 서울특별시 서대문구 서울특별시 서초구 서울특별시 성동구 서울특별시 성북구 서울특별시 송파구 서울특별시 양천구 서울특별시 영등포구 서울특별시 용산구 서울특별시 은평구 서울특별시 종로구 서울특별시 중구 서울특별시 중랑구 세종특별자치시 울산광역시 남구 울산광역시 동구 울산광역시 북구 울산광역시 울주군 울산광역시 중구 인천광역시 강화군 인천광역시 검단구 인천광역시 계양구 인천광역시 남동구 인천광역시 미추홀구 인천광역시 부평구 인천광역시 서해구 인천광역시 연수구 인천광역시 영종구 인천광역시 옹진군 인천광역시 제물포구 전남광주통합특별시 강진군 전남광주통합특별시 고흥군 전남광주통합특별시 곡성군 전남광주통합특별시 광산구 전남광주통합특별시 광양시 전남광주통합특별시 구례군 전남광주통합특별시 나주시 전남광주통합특별시 남구 전남광주통합특별시 담양군 전남광주통합특별시 동구 전남광주통합특별시 목포시 전남광주통합특별시 무안군 전남광주통합특별시 보성군 전남광주통합특별시 북구 전남광주통합특별시 서구 전남광주통합특별시 순천시 전남광주통합특별시 신안군 전남광주통합특별시 여수시 전남광주통합특별시 영광군 전남광주통합특별시 영암군 전남광주통합특별시 완도군 전남광주통합특별시 장성군 전남광주통합특별시 장흥군 전남광주통합특별시 진도군 전남광주통합특별시 함평군 전남광주통합특별시 해남군 전남광주통합특별시 화순군 전북특별자치도 고창군 전북특별자치도 군산시 전북특별자치도 김제시 전북특별자치도 남원시 전북특별자치도 무주군 전북특별자치도 부안군 전북특별자치도 순창군 전북특별자치도 완주군 전북특별자치도 익산시 전북특별자치도 임실군 전북특별자치도 장수군 전북특별자치도 전주시 전북특별자치도 전주시 덕진구 전북특별자치도 전주시 완산구 전북특별자치도 정읍시 전북특별자치도 진안군 제주특별자치도 서귀포시 제주특별자치도 제주시 충청남도 계룡시 충청남도 공주시 충청남도 금산군 충청남도 논산시 충청남도 당진시 충청남도 보령시 충청남도 부여군 충청남도 서산시 충청남도 서천군 충청남도 아산시 충청남도 예산군 충청남도 천안시 충청남도 천안시 동남구 충청남도 천안시 서북구 충청남도 청양군 충청남도 태안군 충청남도 홍성군 충청북도 괴산군 충청북도 단양군 충청북도 보은군 충청북도 영동군 충청북도 옥천군 충청북도 음성군 충청북도 제천시 충청북도 증평군 충청북도 진천군 충청북도 청주시 충청북도 청주시 상당구 충청북도 청주시 서원구 충청북도 청주시 청원구 충청북도 청주시 흥덕구 충청북도 충주시
전체 면적
60㎡ 이하 60~85㎡
85~135㎡ 135㎡ 초과
거래 많은 순
평당가 높은 순 평당가 낮은 순
최근 거래 순
자동
평당가 높음
중간
평당가 낮음
단지 목록
왜 이번 달 데이터가 없나요
실거래 신고 기한이 계약일로부터 30일 이라 당월 자료는 항상 덜 차 있습니다.
그대로 통계에 넣으면 실제로는 안 떨어졌는데 “하락”으로 보입니다. 그래서 이 페이지는
신고가 마감된 최근 달 을 기준월로 씁니다.
이 데이터는 무엇인가요
국토교통부가 공개하는 아파트 매매 실거래가 입니다. 실제로 계약이 체결되고
신고된 금액이라 호가가 아닙니다. 다만 계약일로부터 30일 이내 신고 가 원칙이라
최근 거래는 아직 반영되지 않았을 수 있습니다.
평당가는 전용면적 기준입니다. 분양 광고에 쓰는 공급면적 기준 평당가보다 높게 나옵니다.
같은 84㎡라도 전용 25.4평, 공급 34평이라 기준에 따라 숫자가 크게 달라집니다.
지도·목록에는 거래가 많은 상위 2,500개 단지를 싣습니다(전체 20,314곳). 위 통계·랭킹은 전체 거래 전수 로 계산한 값입니다. 최근 거래일 2026-09-17 · 해제된 거래는 제외했습니다. 좌표는 단지명 검색 결과라
동명 단지가 있으면 위치가 어긋날 수 있습니다.
dmFyIEQ9SlNPTi5wYXJzZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHBoLWRhdGExNycpLnRleHRDb250ZW50KTsKdmFyIFRIRU1FX0lDTz1mdW5jdGlvbih0KXtyZXR1cm4gdD09PSdkYXJrJz8nPHN2ZyBjbGFzcz0idHBoLWkgaWNvLXMiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMjAgMTQuNUE4LjUgOC41IDAgMCAxIDkuNSA0YTguNSA4LjUgMCAxIDAgMTAuNSAxMC41eiIvPjwvc3ZnPic6dD09PSdsaWdodCc/JzxzdmcgY2xhc3M9InRwaC1pIGljby1zIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTEyIDcuNWE0LjUgNC41IDAgMSAwIDAgOSA0LjUgNC41IDAgMCAwIDAtOXpNMTIgMnYyTTEyIDIwdjJNNC4yIDQuMmwxLjQgMS40TTE4LjQgMTguNGwxLjQgMS40TTIgMTJoMk0yMCAxMmgyTTQuMiAxOS44bDEuNC0xLjRNMTguNCA1LjZsMS40LTEuNCIvPjwvc3ZnPic6JzxzdmcgY2xhc3M9InRwaC1pIGljby1zIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTEyIDNhOSA5IDAgMSAwIDAgMTggOSA5IDAgMCAwIDAtMTh6TTEyIDN2MThhOSA5IDAgMCAwIDAtMTh6Ii8+PC9zdmc+Jzt9OwoKdmFyICQ9ZnVuY3Rpb24oaSl7cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cGgtJytpKTt9Owp2YXIgdj1mdW5jdGlvbihpKXt2YXIgZT0kKGkpO3JldHVybiBlPygrZS52YWx1ZXx8MCk6MDt9Owp2YXIgcz1mdW5jdGlvbihpKXt2YXIgZT0kKGkpO3JldHVybiBlP2UudmFsdWU6Jyc7fTsKdmFyIGY9ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucm91bmQobikudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+ybkCc7fTsKdmFyIGZkPWZ1bmN0aW9uKG4sZCl7cmV0dXJuIG4udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJyx7bWF4aW11bUZyYWN0aW9uRGlnaXRzOmR8fDF9KTt9Owp2YXIgY3V0MTA9ZnVuY3Rpb24oeCl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yb3VuZCh4KS8xMCkqMTA7fTsKdmFyIHNldD1mdW5jdGlvbihpLHQpe3ZhciBlPSQoaSk7aWYoIWUpcmV0dXJuO2lmKGk9PT0nbWFpbicpe2NvdW50VXAoZSx0KTt9ZWxzZXtlLnRleHRDb250ZW50PXQ7fX07CgovKiDslYjsoITtlZwg7KCA7J6l7IaMIOygkeq3vCDigJQg7Iuc7YGs66a/IOuqqOuTnC/ssKjri6gg7ZmY6rK97JeQ7ISc64+EIOyjveyngCDslYrqsowgKi8KdmFyIHN0b3JlPXsKICBnZXQ6ZnVuY3Rpb24oayl7dHJ5e3JldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrKTt9Y2F0Y2goZSl7cmV0dXJuIG51bGw7fX0sCiAgc2V0OmZ1bmN0aW9uKGssdmFsKXt0cnl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oayx2YWwpO31jYXRjaChlKXt9fSwKICBkZWw6ZnVuY3Rpb24oayl7dHJ5e2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGspO31jYXRjaChlKXt9fQp9OwoKdmFyIHRvYXN0PWZ1bmN0aW9uKG1zZyl7CiAgdmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRwaC10b2FzdCcpOwogIGlmKCF0KXt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3QuY2xhc3NOYW1lPSd0cGgtdG9hc3QnO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7fQogIHQudGV4dENvbnRlbnQ9bXNnO3QuY2xhc3NMaXN0LmFkZCgnc2hvdycpOwogIGNsZWFyVGltZW91dCh0Ll9oKTt0Ll9oPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTt9LDE5MDApOwp9OwoKLyog7YWM66eIIO2GoOq4gDog7Iuc7Iqk7YWcIOyEpOyglSDihpIg65287J207Yq4IOKGkiDri6Ttgawg7Iic7ZmYICovCmZ1bmN0aW9uIGluaXRUaGVtZShyb290KXsKICB2YXIgSz0ndHBoLXRoZW1lJywgY3VyPXN0b3JlLmdldChLKTsKICBpZihjdXIpIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyxjdXIpOwogIHZhciBiPSQoJ3RoZW1lJyk7CiAgaWYoIWIpIHJldHVybjsKICB2YXIgbGFiZWw9ZnVuY3Rpb24oKXsKICAgIHZhciB0PXJvb3QuZ2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyk7CiAgICBiLmlubmVySFRNTD1USEVNRV9JQ08odCkrJyA8c3Bhbj4nKyh0PT09J2RhcmsnPyfri6TtgawnOnQ9PT0nbGlnaHQnPyfrnbzsnbTtirgnOifsnpDrj5knKSsnPC9zcGFuPic7CiAgfTsKICBsYWJlbCgpOwogIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICB2YXIgdD1yb290LmdldEF0dHJpYnV0ZSgnZGF0YS10aGVtZScpOwogICAgdmFyIG54PSF0PydsaWdodCc6dD09PSdsaWdodCc/J2RhcmsnOicnOwogICAgaWYobngpe3Jvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyxueCk7c3RvcmUuc2V0KEssbngpO30KICAgIGVsc2V7cm9vdC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnKTtzdG9yZS5kZWwoSyk7fQogICAgbGFiZWwoKTsKICB9KTsKfQoKLyog7J6F66Cl6rCSIOKGlCBVUkwg7YyM652866+47YSwIOKGlCBsb2NhbFN0b3JhZ2UgKi8KZnVuY3Rpb24gaW5pdFN0YXRlKHNsdWcsIGlkcywgb25jaGFuZ2UpewogIHZhciBLRVk9J3RwaC1pbi0nK3NsdWcsIHE9bmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpLCB1c2VkPWZhbHNlOwogIGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGkpewogICAgdmFyIGU9JChpKTsgaWYoIWUpIHJldHVybjsKICAgIGlmKHEuaGFzKGkpKXsgZS52YWx1ZT1xLmdldChpKTsgdXNlZD10cnVlOyB9CiAgfSk7CiAgaWYoIXVzZWQpewogICAgdmFyIHJhdz1zdG9yZS5nZXQoS0VZKTsKICAgIGlmKHJhdyl7IHRyeXsgdmFyIG89SlNPTi5wYXJzZShyYXcpOwogICAgICBpZHMuZm9yRWFjaChmdW5jdGlvbihpKXsgdmFyIGU9JChpKTsgaWYoZSYmb1tpXSE9PXVuZGVmaW5lZCYmb1tpXSE9PScnKSBlLnZhbHVlPW9baV07IH0pOwogICAgfWNhdGNoKGUpe30gfQogIH0KICB2YXIgc2F2ZT1mdW5jdGlvbigpewogICAgdmFyIG89e307IGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGkpeyB2YXIgZT0kKGkpOyBpZihlKSBvW2ldPWUudmFsdWU7IH0pOwogICAgc3RvcmUuc2V0KEtFWSwgSlNPTi5zdHJpbmdpZnkobykpOwogIH07CiAgdmFyIHNoYXJlPSQoJ3NoYXJlJyk7CiAgaWYoc2hhcmUpIHNoYXJlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgdmFyIHA9bmV3IFVSTFNlYXJjaFBhcmFtcygpOwogICAgaWRzLmZvckVhY2goZnVuY3Rpb24oaSl7IHZhciBlPSQoaSk7IGlmKGUpIHAuc2V0KGksZS52YWx1ZSk7IH0pOwogICAgdmFyIHVybD1sb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWUrJz8nK3AudG9TdHJpbmcoKTsKICAgIHZhciBkb25lPWZ1bmN0aW9uKCl7dG9hc3QoJ+unge2BrOulvCDrs7XsgqztlojsirXri4jri6QnKTt9OwogICAgaWYobmF2aWdhdG9yLmNsaXBib2FyZCYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQpewogICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh1cmwpLnRoZW4oZG9uZSxmdW5jdGlvbigpe3Byb21wdCgn7JWE656YIOyjvOyGjOulvCDrs7XsgqztlZjshLjsmpQnLHVybCk7fSk7CiAgICB9IGVsc2UgcHJvbXB0KCfslYTrnpgg7KO87IaM66W8IOuzteyCrO2VmOyEuOyalCcsdXJsKTsKICB9KTsKICB2YXIgY29weT0kKCdjb3B5Jyk7CiAgaWYoY29weSkgY29weS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgIHZhciBsaW5lcz1bZG9jdW1lbnQudGl0bGUuc3BsaXQoJ3wnKVswXS50cmltKCldOwogICAgaWRzLmZvckVhY2goZnVuY3Rpb24oaSl7CiAgICAgIHZhciBlPSQoaSk7IGlmKCFlKSByZXR1cm47CiAgICAgIHZhciBsYWI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGFiZWxbZm9yPXRwaC0nK2krJ10nKTsKICAgICAgdmFyIHZhbD1lLnRhZ05hbWU9PT0nU0VMRUNUJz9lLm9wdGlvbnNbZS5zZWxlY3RlZEluZGV4XS50ZXh0OigrZS52YWx1ZXx8MCkudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJyk7CiAgICAgIGlmKGxhYikgbGluZXMucHVzaCgnwrcgJytsYWIudGV4dENvbnRlbnQudHJpbSgpKyc6ICcrdmFsKTsKICAgIH0pOwogICAgbGluZXMucHVzaCgnJyk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHBoLXRvdGFsJykuZm9yRWFjaChmdW5jdGlvbih0KXsKICAgICAgdmFyIGw9dC5xdWVyeVNlbGVjdG9yKCcubCcpLCB2YWw9dC5xdWVyeVNlbGVjdG9yKCcudicpOwogICAgICBpZihsJiZ2YWwpIGxpbmVzLnB1c2gobC50ZXh0Q29udGVudC50cmltKCkrJzogJyt2YWwudGV4dENvbnRlbnQudHJpbSgpKTsKICAgIH0pOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRwaC1wYWdlIHRhYmxlJykuZm9yRWFjaChmdW5jdGlvbih0Yil7CiAgICAgIHRiLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykuZm9yRWFjaChmdW5jdGlvbih0cil7CiAgICAgICAgdmFyIHRkPXRyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJyk7CiAgICAgICAgaWYodGQubGVuZ3RoPT09MikgbGluZXMucHVzaCgnwrcgJyt0ZFswXS50ZXh0Q29udGVudC50cmltKCkrJzogJyt0ZFsxXS50ZXh0Q29udGVudC50cmltKCkpOwogICAgICB9KTsKICAgIH0pOwogICAgbGluZXMucHVzaCgnJywgbG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lKTsKICAgIHZhciB0eHQ9bGluZXMuam9pbignXG4nKTsKICAgIHZhciBkb25lPWZ1bmN0aW9uKCl7dG9hc3QoJ+qysOqzvOulvCDrs7XsgqztlojsirXri4jri6QnKTt9OwogICAgaWYobmF2aWdhdG9yLmNsaXBib2FyZCYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQpIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHR4dCkudGhlbihkb25lLGRvbmUpOwogICAgZWxzZSB7IHZhciB0YT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpOyB0YS52YWx1ZT10eHQ7IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGEpOwogICAgICAgICAgIHRhLnNlbGVjdCgpOyB0cnl7ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTt9Y2F0Y2goZSl7fSB0YS5yZW1vdmUoKTsgZG9uZSgpOyB9CiAgfSk7CiAgdmFyIHJlc2V0PSQoJ3Jlc2V0Jyk7CiAgaWYocmVzZXQpIHJlc2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgc3RvcmUuZGVsKEtFWSk7IGxvY2F0aW9uLmhyZWY9bG9jYXRpb24ucGF0aG5hbWU7CiAgfSk7CiAgcmV0dXJuIHNhdmU7Cn0KCi8qIOq4iOyVoSDsnoXroKUg67CRIOu5oOuluCDsobDsoJUg7LmpICovCmZ1bmN0aW9uIGluaXRDaGlwcyhvbmNoYW5nZSl7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRwaC1jaGlwJykuZm9yRWFjaChmdW5jdGlvbihjKXsKICAgIGMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAgIHZhciBlPSQoYy5kYXRhc2V0LnQpOyBpZighZSkgcmV0dXJuOwogICAgICB2YXIgZD1jLmRhdGFzZXQuZDsKICAgICAgZS52YWx1ZSA9IGQ9PT0nMCcgPyAwIDogTWF0aC5tYXgoMCwoK2UudmFsdWV8fDApKygrZCkpOwogICAgICBvbmNoYW5nZSgpOwogICAgfSk7CiAgfSk7Cn0KCi8qIOyeheugpeqwkuydhCDsgqzrnozsnbQg7J2964qUIOusuOyepeycvOuhnCAoMywwMDAsMDAwIOKGkiAzMDDrp4zsm5ApICovCmZ1bmN0aW9uIGtvck1vbmV5KG4pewogIG49TWF0aC5yb3VuZChuKTsgaWYoIW4pIHJldHVybiAnMOybkCc7CiAgdmFyIGVvaz1NYXRoLmZsb29yKG4vMTAwMDAwMDAwKSwgbWFuPU1hdGguZmxvb3IoKG4lMTAwMDAwMDAwKS8xMDAwMCksIHdvbj1uJTEwMDAwLCBwPVtdOwogIGlmKGVvaykgcC5wdXNoKGVvaysn7Ja1Jyk7CiAgaWYobWFuKSBwLnB1c2gobWFuLnRvTG9jYWxlU3RyaW5nKCdrby1LUicpKyfrp4wnKTsKICBpZih3b24pIHAucHVzaCh3b24udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykpOwogIHJldHVybiBwLmpvaW4oJyAnKSsn7JuQJzsKfQpmdW5jdGlvbiBpbml0UmVhZChtYXApewogIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChmdW5jdGlvbihpZCl7CiAgICB2YXIgZT0kKGlkKSwgb3V0PSQobWFwW2lkXSk7IGlmKCFlfHwhb3V0KSByZXR1cm47CiAgICB2YXIgdXBkPWZ1bmN0aW9uKCl7IG91dC50ZXh0Q29udGVudCA9ICgrZS52YWx1ZT4wKSA/IGtvck1vbmV5KCtlLnZhbHVlKSA6ICcnOyB9OwogICAgZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsdXBkKTsgdXBkKCk7CiAgfSk7Cn0KCgovKiDsiKvsnpAg7Lm07Jq07Yq47JeFIOKAlCDqsrDqs7zqsIAg67CU64CUIOuVjCDrtoDrk5zrn73qsowgKi8KZnVuY3Rpb24gY291bnRVcChlbCwgdGV4dCl7CiAgaWYoIWVsKSByZXR1cm47CiAgdmFyIHByZXY9ZWwuX3Jhd3x8JycsIGN1cj10ZXh0OwogIGVsLl9yYXc9Y3VyOwogIHZhciBwbj1wYXJzZUZsb2F0KFN0cmluZyhwcmV2KS5yZXBsYWNlKC9bXjAtOS4tXS9nLCcnKSk7CiAgdmFyIGNuPXBhcnNlRmxvYXQoU3RyaW5nKGN1cikucmVwbGFjZSgvW14wLTkuLV0vZywnJykpOwogIHZhciByZWR1Y2U9d2luZG93Lm1hdGNoTWVkaWEmJndpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CiAgaWYocmVkdWNlfHwhaXNGaW5pdGUocG4pfHwhaXNGaW5pdGUoY24pfHxwbj09PWNufHxNYXRoLmFicyhjbi1wbik8MSl7ZWwudGV4dENvbnRlbnQ9Y3VyO3JldHVybjt9CiAgdmFyIHByZT1jdXIuc2xpY2UoMCxjdXIuc2VhcmNoKC9bMC05LV0vKSk7CiAgdmFyIHBvc3Q9Y3VyLnNsaWNlKGN1ci5zZWFyY2goL1swLTldW14wLTldKiQvKSsxKS5yZXBsYWNlKC9eWzAtOV0vLCcnKTsKICB2YXIgc3VmZml4PWN1ci5yZXBsYWNlKC9eW14wLTktXSovLCcnKS5yZXBsYWNlKC9eWzAtOSwuXC1dKy8sJycpOwogIHZhciB0MD1udWxsLCBkdXI9MzgwOwogIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGVsLl9hZnx8MCk7CiAgZnVuY3Rpb24gc3RlcCh0KXsKICAgIGlmKCF0MCkgdDA9dDsKICAgIHZhciBrPU1hdGgubWluKDEsKHQtdDApL2R1ciksIGU9MS1NYXRoLnBvdygxLWssMyk7CiAgICB2YXIgdmFsPXBuKyhjbi1wbikqZTsKICAgIGVsLnRleHRDb250ZW50PXByZStNYXRoLnJvdW5kKHZhbCkudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrc3VmZml4OwogICAgaWYoazwxKSBlbC5fYWY9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOyBlbHNlIGVsLnRleHRDb250ZW50PWN1cjsKICB9CiAgZWwuX2FmPXJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKfQoKLyog66qo67CU7J28IOqzoOyglSDqsrDqs7zrsJQgKyDrp6gg7JyE66GcICovCmZ1bmN0aW9uIGluaXRTdGlja3kocm9vdCwgbGFiZWwpewogIGlmKCFyb290KSByZXR1cm47CiAgdmFyIG1haW49JCgnbWFpbicpOyBpZighbWFpbikgcmV0dXJuOwogIHZhciBiYXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgYmFyLmNsYXNzTmFtZT0ndHBoLXN0aWNreSc7CiAgYmFyLmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibCI+JytsYWJlbCsnPC9kaXY+PGRpdiBjbGFzcz0idiIgaWQ9InRwaC1zdGlja3l2Ij7igKY8L2Rpdj4nOwogIHJvb3QuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgdG9wPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIHRvcC50eXBlPSdidXR0b24nOyB0b3AuY2xhc3NOYW1lPSd0cGgtdG9wJzsgdG9wLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsJ+unqCDsnITroZwnKTsKICB0b3AuaW5uZXJIVE1MPSc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDE5VjUiLz48cGF0aCBkPSJNNSAxMmw3LTcgNyA3Ii8+PC9zdmc+JzsKICB0b3AuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7d2luZG93LnNjcm9sbFRvKHt0b3A6MCxiZWhhdmlvcjonc21vb3RoJ30pO30pOwogIHJvb3QuYXBwZW5kQ2hpbGQodG9wKTsKICB2YXIgc3Y9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RwaC1zdGlja3l2Jyk7CiAgdmFyIHN5bmM9ZnVuY3Rpb24oKXsKICAgIGlmKHN2JiZzdi50ZXh0Q29udGVudCE9PW1haW4udGV4dENvbnRlbnQpIHN2LnRleHRDb250ZW50PW1haW4udGV4dENvbnRlbnQ7CiAgICB2YXIgcj1tYWluLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgYmFyLmNsYXNzTGlzdC50b2dnbGUoJ29uJywgci5ib3R0b208NTYpOwogICAgdG9wLmNsYXNzTGlzdC50b2dnbGUoJ29uJywgd2luZG93LnNjcm9sbFk+NTAwKTsKICB9OwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLHN5bmMse3Bhc3NpdmU6dHJ1ZX0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLHN5bmMpOwogIGlmKHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyKSBuZXcgTXV0YXRpb25PYnNlcnZlcihzeW5jKS5vYnNlcnZlKG1haW4se2NoaWxkTGlzdDp0cnVlLGNoYXJhY3RlckRhdGE6dHJ1ZSxzdWJ0cmVlOnRydWV9KTsKICBzeW5jKCk7Cn0KCi8qIOKUgOKUgCDssKjtirgg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAgIOyDieydgCBDU1Mg67OA7IiYIC0tczEvLS1zMi8tLXMzICjqsoDspp3rkJwg7Lm07YWM6rOg66asIO2MlOugiO2KuCkuCiAgIOqzhOyXtOydtCAy6rCcIOydtOyDgeydtOuptCDrspTroYDrpbwg7ZWt7IOBIOu2meydtOqzoCwg6rCS7J2AIO2RnOyXkOuPhCDqt7jrjIDroZwg7J6I64ukLiAqLwp2YXIgU1ZHTlM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKZnVuY3Rpb24gZWwodCxhKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHTlMsdCk7Zm9yKHZhciBrIGluIGEpZS5zZXRBdHRyaWJ1dGUoayxhW2tdKTtyZXR1cm4gZTt9CgpmdW5jdGlvbiB0aXAoYm94KXsKICB2YXIgdD1ib3gucXVlcnlTZWxlY3RvcignLnRwaC10aXAnKTsKICBpZighdCl7dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTt0LmNsYXNzTmFtZT0ndHBoLXRpcCc7Ym94LmFwcGVuZENoaWxkKHQpO30KICByZXR1cm4gdDsKfQpmdW5jdGlvbiBzaG93VGlwKGJveCx4LHksaHRtbCl7CiAgdmFyIHQ9dGlwKGJveCk7IHQuaW5uZXJIVE1MPWh0bWw7IHQuc3R5bGUub3BhY2l0eT0nMSc7CiAgdmFyIHc9dC5vZmZzZXRXaWR0aCwgYnc9Ym94LmNsaWVudFdpZHRoOwogIHQuc3R5bGUubGVmdD1NYXRoLm1heCg0LE1hdGgubWluKGJ3LXctNCx4LXcvMikpKydweCc7CiAgdC5zdHlsZS50b3A9TWF0aC5tYXgoMix5LXQub2Zmc2V0SGVpZ2h0LTEwKSsncHgnOwp9CmZ1bmN0aW9uIGhpZGVUaXAoYm94KXt2YXIgdD1ib3gucXVlcnlTZWxlY3RvcignLnRwaC10aXAnKTtpZih0KXQuc3R5bGUub3BhY2l0eT0nMCc7fQoKLyog7IS466GcIOuIhOyggSDrp4nrjIAg4oCUIGNhdHM6W+udvOuyqF0sIHNlcmllczpbe25hbWUsY2xzLGRhdGE6W119XSAqLwpmdW5jdGlvbiBzdGFja0NoYXJ0KGJveElkLCBjYXRzLCBzZXJpZXMsIGZtdCl7CiAgdmFyIGJveD0kKGJveElkKTsgaWYoIWJveCkgcmV0dXJuOwogIGJveC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcsLnRwaC1sZWdlbmQnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7CiAgdmFyIFc9NjYwLEg9MjM2LFBMPTgsUFI9OCxQVD0xNCxQQj0yNjsKICB2YXIgbj1jYXRzLmxlbmd0aDsgaWYoIW4pIHJldHVybjsKICB2YXIgdG90YWxzPWNhdHMubWFwKGZ1bmN0aW9uKF8saSl7cmV0dXJuIHNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSxzKXtyZXR1cm4gYSsocy5kYXRhW2ldfHwwKTt9LDApO30pOwogIHZhciBtYXg9TWF0aC5tYXguYXBwbHkobnVsbCx0b3RhbHMpfHwxOwogIHZhciBpdz1XLVBMLVBSLCBpaD1ILVBULVBCOwogIHZhciBidz1NYXRoLm1heCg2LE1hdGgubWluKDQ2LGl3L24qMC42OCkpLCBzdGVwPWl3L247CiAgdmFyIHN2Zz1lbCgnc3ZnJyx7dmlld0JveDonMCAwICcrVysnICcrSCxyb2xlOidpbWcnfSk7CiAgZm9yKHZhciBnPTA7Zzw9MztnKyspewogICAgdmFyIGd5PVBUK2loKmcvMzsKICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgnbGluZScse3gxOlBMLHkxOmd5LHgyOlctUFIseTI6Z3ksJ2NsYXNzJzonZ2wnfSkpOwogIH0KICBjYXRzLmZvckVhY2goZnVuY3Rpb24oYyxpKXsKICAgIHZhciBjeD1QTCtzdGVwKmkrc3RlcC8yLCB5PVBUK2loLCBhY2M9MDsKICAgIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKHMsc2kpewogICAgICB2YXIgdmFsPXMuZGF0YVtpXXx8MDsgaWYodmFsPD0wKSByZXR1cm47CiAgICAgIHZhciBoPXZhbC9tYXgqaWg7IHktPWg7IGFjYys9dmFsOwogICAgICB2YXIgaXNUb3AgPSBzaT09PXNlcmllcy5sZW5ndGgtMSB8fCAhc2VyaWVzLnNsaWNlKHNpKzEpLnNvbWUoZnVuY3Rpb24oeil7cmV0dXJuICh6LmRhdGFbaV18fDApPjA7fSk7CiAgICAgIHZhciByPWVsKCdyZWN0Jyx7eDpjeC1idy8yLHk6eSx3aWR0aDpidyxoZWlnaHQ6TWF0aC5tYXgoMSxoKSwnY2xhc3MnOnMuY2xzLAogICAgICAgICAgICAgICAgICAgICAgIHJ4OmlzVG9wPzQ6MCxyeTppc1RvcD80OjB9KTsKICAgICAgc3ZnLmFwcGVuZENoaWxkKHIpOwogICAgfSk7CiAgICB2YXIgaGl0PWVsKCdyZWN0Jyx7eDpjeC1zdGVwLzIrMSx5OlBULHdpZHRoOnN0ZXAtMixoZWlnaHQ6aWgsJ2NsYXNzJzonaGl0J30pOwogICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsZnVuY3Rpb24oZXYpewogICAgICB2YXIgYnI9Ym94LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICB2YXIgcm93cz1zZXJpZXMubWFwKGZ1bmN0aW9uKHMpewogICAgICAgIHJldHVybiAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6MnB4OycKICAgICAgICAgICAgICsgJ2JhY2tncm91bmQ6dmFyKC0tJytzLmNscysnKTttYXJnaW4tcmlnaHQ6NnB4Ij48L3NwYW4+JytzLm5hbWUrJyAnK2ZtdChzLmRhdGFbaV18fDApOwogICAgICB9KS5qb2luKCc8YnI+Jyk7CiAgICAgIHNob3dUaXAoYm94LGV2LmNsaWVudFgtYnIubGVmdCxldi5jbGllbnRZLWJyLnRvcCwKICAgICAgICAgICAgICAnPGI+JytjKyc8L2I+PGJyPicrcm93cysnPGJyPu2VqeqzhCAnK2ZtdChhY2MpKTsKICAgIH0pOwogICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLGZ1bmN0aW9uKCl7aGlkZVRpcChib3gpO30pOwogICAgc3ZnLmFwcGVuZENoaWxkKGhpdCk7CiAgICBpZihuPD0xNHx8aSVNYXRoLmNlaWwobi8xMik9PT0wKQogICAgICBzdmcuYXBwZW5kQ2hpbGQoT2JqZWN0LmFzc2lnbihlbCgndGV4dCcse3g6Y3gseTpILTgsJ2NsYXNzJzonbGInLCd0ZXh0LWFuY2hvcic6J21pZGRsZSd9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RleHRDb250ZW50OmN9KSk7CiAgfSk7CiAgYm94LmFwcGVuZENoaWxkKHN2Zyk7CiAgYm94LmFwcGVuZENoaWxkKGxlZ2VuZChzZXJpZXMpKTsKfQoKLyog6rCA66GcIOuIhOyggSDrp4nrjIAo6rWs7ISxKSDigJQgc2Vnczpbe25hbWUsY2xzLHZhbHVlfV0gwrcg7KeB7KCRIOudvOuyqCAqLwpmdW5jdGlvbiBoU3RhY2soYm94SWQsIHNlZ3MsIGZtdCl7CiAgdmFyIGJveD0kKGJveElkKTsgaWYoIWJveCkgcmV0dXJuOwogIGJveC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcsLnRwaC1sZWdlbmQnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7CiAgdmFyIHRvdGFsPXNlZ3MucmVkdWNlKGZ1bmN0aW9uKGEscyl7cmV0dXJuIGErTWF0aC5tYXgoMCxzLnZhbHVlKTt9LDApfHwxOwogIHZhciBXPTY2MCxIPTY0LFBMPTgsUFI9OCxCSD0zNCxUWT0xMjsKICB2YXIgc3ZnPWVsKCdzdmcnLHt2aWV3Qm94OicwIDAgJytXKycgJytILHJvbGU6J2ltZyd9KTsKICB2YXIgeD1QTCwgaXc9Vy1QTC1QUjsKICBzZWdzLmZvckVhY2goZnVuY3Rpb24ocyxpKXsKICAgIHZhciB3PU1hdGgubWF4KDAscy52YWx1ZSkvdG90YWwqaXc7IGlmKHc8PTApIHJldHVybjsKICAgIHZhciBmaXJzdD1pPT09MCwgbGFzdD1pPT09c2Vncy5sZW5ndGgtMTsKICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgncmVjdCcse3g6eCx5OlRZLHdpZHRoOncsaGVpZ2h0OkJILCdjbGFzcyc6cy5jbHMsCiAgICAgIHJ4OihmaXJzdHx8bGFzdCk/NDowLHJ5OihmaXJzdHx8bGFzdCk/NDowfSkpOwogICAgdmFyIHBjdD1zLnZhbHVlL3RvdGFsKjEwMDsKICAgIGlmKHBjdD49OSkKICAgICAgc3ZnLmFwcGVuZENoaWxkKE9iamVjdC5hc3NpZ24oZWwoJ3RleHQnLHt4Ongrdy8yLHk6VFkrQkgvMis0LCdjbGFzcyc6J3ZsJywKICAgICAgICAndGV4dC1hbmNob3InOidtaWRkbGUnLGZpbGw6JyNmZmYnfSkse3RleHRDb250ZW50OnBjdC50b0ZpeGVkKDApKyclJ30pKTsKICAgIHZhciBoaXQ9ZWwoJ3JlY3QnLHt4OngseTpUWSx3aWR0aDp3LGhlaWdodDpCSCwnY2xhc3MnOidoaXQnfSk7CiAgICAoZnVuY3Rpb24oc2VnLHB4LHB3KXsKICAgICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsZnVuY3Rpb24oZXYpewogICAgICAgIHZhciBicj1ib3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgc2hvd1RpcChib3gsZXYuY2xpZW50WC1ici5sZWZ0LGV2LmNsaWVudFktYnIudG9wLAogICAgICAgICAgJzxiPicrc2VnLm5hbWUrJzwvYj48YnI+JytmbXQoc2VnLnZhbHVlKSsnIMK3ICcrKHNlZy52YWx1ZS90b3RhbCoxMDApLnRvRml4ZWQoMSkrJyUnKTsKICAgICAgfSk7CiAgICAgIGhpdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJyxmdW5jdGlvbigpe2hpZGVUaXAoYm94KTt9KTsKICAgIH0pKHMseCx3KTsKICAgIHN2Zy5hcHBlbmRDaGlsZChoaXQpOwogICAgeCs9dzsKICB9KTsKICBib3guYXBwZW5kQ2hpbGQoc3ZnKTsKICBib3guYXBwZW5kQ2hpbGQobGVnZW5kKHNlZ3MubWFwKGZ1bmN0aW9uKHMpe3JldHVybiB7bmFtZTpzLm5hbWUrJyAnK2ZtdChzLnZhbHVlKSxjbHM6cy5jbHN9O30pKSk7Cn0KCi8qIOyEoO2YlSDstpTsnbQg7LCo7Yq4IOKAlCBzZXJpZXM6W3tuYW1lLGNscyxkYXRhOltdfV0sIGNhdHM6W+udvOuyqF0gKi8KZnVuY3Rpb24gbGluZUNoYXJ0KGJveElkLCBjYXRzLCBzZXJpZXMsIGZtdCl7CiAgdmFyIGJveD0kKGJveElkKTsgaWYoIWJveCkgcmV0dXJuOwogIGJveC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcsLnRwaC1sZWdlbmQnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7CiAgdmFyIG49Y2F0cy5sZW5ndGg7IGlmKG48MikgcmV0dXJuOwogIHZhciBXPTY2MCxIPTI0MCxQTD01NCxQUj0xMixQVD0xNCxQQj0yNjsKICB2YXIgYWxsPVtdOyBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihzKXthbGw9YWxsLmNvbmNhdChzLmRhdGEuZmlsdGVyKGZ1bmN0aW9uKHYpe3JldHVybiB2IT1udWxsO30pKTt9KTsKICBpZighYWxsLmxlbmd0aCkgcmV0dXJuOwogIHZhciBteD1NYXRoLm1heC5hcHBseShudWxsLGFsbCksIG1uPU1hdGgubWluLmFwcGx5KG51bGwsYWxsKTsKICB2YXIgcGFkPShteC1tbikqMC4xNXx8bXgqMC4wMnx8MTsgbXgrPXBhZDsgbW49TWF0aC5tYXgoMCxtbi1wYWQpOwogIHZhciBpdz1XLVBMLVBSLCBpaD1ILVBULVBCOwogIHZhciBYPWZ1bmN0aW9uKGkpe3JldHVybiBQTCtpdyoobj09PTE/MC41OmkvKG4tMSkpO307CiAgdmFyIFk9ZnVuY3Rpb24odil7cmV0dXJuIFBUK2loKigxLSh2LW1uKS8oKG14LW1uKXx8MSkpO307CiAgdmFyIHN2Zz1lbCgnc3ZnJyx7dmlld0JveDonMCAwICcrVysnICcrSCxyb2xlOidpbWcnfSk7CiAgZm9yKHZhciBnPTA7Zzw9NDtnKyspewogICAgdmFyIGd2PW1uKyhteC1tbikqZy80LCBneT1ZKGd2KTsKICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgnbGluZScse3gxOlBMLHkxOmd5LHgyOlctUFIseTI6Z3ksJ2NsYXNzJzonZ2wnfSkpOwogICAgc3ZnLmFwcGVuZENoaWxkKE9iamVjdC5hc3NpZ24oZWwoJ3RleHQnLHt4OlBMLTgseTpneSs0LCdjbGFzcyc6J2xiJywndGV4dC1hbmNob3InOidlbmQnfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGV4dENvbnRlbnQ6TWF0aC5yb3VuZChndikudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJyl9KSk7CiAgfQogIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKHMpewogICAgdmFyIGQ9JycsIHN0YXJ0ZWQ9ZmFsc2U7CiAgICBzLmRhdGEuZm9yRWFjaChmdW5jdGlvbih2LGkpewogICAgICBpZih2PT1udWxsKSByZXR1cm47CiAgICAgIGQrPShzdGFydGVkPydMJzonTScpK1goaSkudG9GaXhlZCgxKSsnICcrWSh2KS50b0ZpeGVkKDEpKycgJzsgc3RhcnRlZD10cnVlOwogICAgfSk7CiAgICBpZihkKSBzdmcuYXBwZW5kQ2hpbGQoZWwoJ3BhdGgnLHtkOmQsZmlsbDonbm9uZScsJ3N0cm9rZSc6J3ZhcigtLScrcy5jbHMrJyknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cm9rZS13aWR0aCc6Mi4yLCdzdHJva2UtbGluZWpvaW4nOidyb3VuZCcsJ3N0cm9rZS1saW5lY2FwJzoncm91bmQnfSkpOwogICAgdmFyIGxhc3Q9cy5kYXRhLmxlbmd0aC0xOwogICAgaWYocy5kYXRhW2xhc3RdIT1udWxsKQogICAgICBzdmcuYXBwZW5kQ2hpbGQoZWwoJ2NpcmNsZScse2N4OlgobGFzdCksY3k6WShzLmRhdGFbbGFzdF0pLHI6NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOid2YXIoLS0nK3MuY2xzKycpJyxzdHJva2U6J3ZhcigtLXN1cmZhY2UpJywnc3Ryb2tlLXdpZHRoJzoyfSkpOwogIH0pOwogIGNhdHMuZm9yRWFjaChmdW5jdGlvbihjLGkpewogICAgaWYobj4xMCAmJiBpJU1hdGguY2VpbChuLzcpIT09MCAmJiBpIT09bi0xKSByZXR1cm47CiAgICBzdmcuYXBwZW5kQ2hpbGQoT2JqZWN0LmFzc2lnbihlbCgndGV4dCcse3g6WChpKSx5OkgtOCwnY2xhc3MnOidsYicsJ3RleHQtYW5jaG9yJzonbWlkZGxlJ30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RleHRDb250ZW50OmN9KSk7CiAgfSk7CiAgZm9yKHZhciBpPTA7aTxuO2krKyl7CiAgICAoZnVuY3Rpb24oaWR4KXsKICAgICAgdmFyIGhpdD1lbCgncmVjdCcse3g6WChpZHgpLWl3LyhuLTEpLzIseTpQVCx3aWR0aDppdy8obi0xKXx8MjAsaGVpZ2h0OmloLCdjbGFzcyc6J2hpdCd9KTsKICAgICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsZnVuY3Rpb24oZXYpewogICAgICAgIHZhciBicj1ib3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgdmFyIHJvd3M9c2VyaWVzLm1hcChmdW5jdGlvbihzKXsKICAgICAgICAgIHJldHVybiAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6MnB4OycKICAgICAgICAgICAgICAgKyAnYmFja2dyb3VuZDp2YXIoLS0nK3MuY2xzKycpO21hcmdpbi1yaWdodDo2cHgiPjwvc3Bhbj4nK3MubmFtZSsnICcKICAgICAgICAgICAgICAgKyAocy5kYXRhW2lkeF09PW51bGw/Jy0nOmZtdChzLmRhdGFbaWR4XSkpOwogICAgICAgIH0pLmpvaW4oJzxicj4nKTsKICAgICAgICBzaG93VGlwKGJveCxldi5jbGllbnRYLWJyLmxlZnQsZXYuY2xpZW50WS1ici50b3AsJzxiPicrY2F0c1tpZHhdKyc8L2I+PGJyPicrcm93cyk7CiAgICAgIH0pOwogICAgICBoaXQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsZnVuY3Rpb24oKXtoaWRlVGlwKGJveCk7fSk7CiAgICAgIHN2Zy5hcHBlbmRDaGlsZChoaXQpOwogICAgfSkoaSk7CiAgfQogIGJveC5hcHBlbmRDaGlsZChzdmcpOwogIGJveC5hcHBlbmRDaGlsZChsZWdlbmQoc2VyaWVzKSk7Cn0KCmZ1bmN0aW9uIGxlZ2VuZChpdGVtcyl7CiAgdmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGQuY2xhc3NOYW1lPSd0cGgtbGVnZW5kJzsKICBpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKHMpewogICAgdmFyIHNwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgIHNwLmlubmVySFRNTD0nPGkgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tJytzLmNscysnKSI+PC9pPicrcy5uYW1lOwogICAgZC5hcHBlbmRDaGlsZChzcCk7CiAgfSk7CiAgcmV0dXJuIGQ7Cn0KCnZhciBDTE89MCwgQ0hJPTAsIEFWRz0wOyAgICAgIC8qIOyDiSDquLDspIDqsJIg4oCUIHJlbmRlcigpIOqwgCDqsLHsi6DtlZzri6QgKi8KCi8qIOq4sOuzuCDsg4kg7ZWo7IiYLiDquLDrpoTqsJLCt+u2gOuPmeyCsCDsoITqta0g7Y6Y7J207KeA64qUIOyVhOuemOyXkOyEnCDsnpDquLAg6rKD7J2EIOuLpOyLnCDsoJXsnZjtlbQg642u7Ja07JO064ukLgogICAo7Iuc64+Ewrfsi5zqtbDqtawg7Y6Y7J207KeA7JeQ64qUIOydtOqyjCDsl4bslrTshJwg7YG065+s7Iqk7YSwIOyVhOydtOy9mOydtCDthrXsp7jroZwg7JWIIOq3uOugpOyhjOyXiOuLpCkgKi8KZnVuY3Rpb24gY29sb3JGb3IodiwgbG8sIGhpKXsKICBpZihoaTw9bG8pIHJldHVybiAnIzljYTNhZic7CiAgdmFyIHQ9KHYtbG8pLyhoaS1sbyksIGNzPWdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKICBpZih0PjAuNjYpIHJldHVybiBjcy5nZXRQcm9wZXJ0eVZhbHVlKCctLXMyJykudHJpbSgpfHwnI2ViNjgzNCc7CiAgaWYodDwwLjMzKSByZXR1cm4gY3MuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zMScpLnRyaW0oKXx8JyMyYTc4ZDYnOwogIHJldHVybiAnIzljYTNhZic7Cn0KLyog7KeA7Jik7L2U65Sp7J20IOyWtOypjOuLpCDsl4nrmrHtlZwg6rOz7J2EIOynkeycvOuptCjrj5nrqoUg64uo7KeAKSDqt7gg7ZWcIOygkCDrlYzrrLjsl5Ag7KeA64+E6rCAIOyghOq1reycvOuhnCDspIzslYTsm4PrkJzri6QuCiAgIOyEnOyauCDtjpjsnbTsp4DqsIAg64Ko7JaR7KO8wrfsnbjsspzquYzsp4Ag64u07JWEIOuztOyduCDsoIHsnbQg7J6I64ukLiDrsJTquaUgMiXrpbwg7J6Y6528IOuylOychOulvCDsnqHripTri6QuICovCmZ1bmN0aW9uIGZpdFRvKG0sIHB0cywgbWF4Wm9vbSl7CiAgaWYoIXB0cy5sZW5ndGgpIHJldHVybjsKICBtLmludmFsaWRhdGVTaXplKGZhbHNlKTsKICBpZihwdHMubGVuZ3RoIDwgMzApeyBtLmZpdEJvdW5kcyhwdHMse3BhZGRpbmc6WzMwLDMwXSxtYXhab29tOm1heFpvb218fDE1fSk7IHJldHVybjsgfQogIHZhciBsYT1wdHMubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwWzBdO30pLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS1iO30pOwogIHZhciBsbj1wdHMubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwWzFdO30pLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS1iO30pOwogIHZhciBxPWZ1bmN0aW9uKGEsdCl7cmV0dXJuIGFbTWF0aC5taW4oYS5sZW5ndGgtMSxNYXRoLm1heCgwLE1hdGguZmxvb3IoYS5sZW5ndGgqdCkpKV07fTsKICBtLmZpdEJvdW5kcyhbW3EobGEsMC4wMikscShsbiwwLjAyKV0sW3EobGEsMC45OCkscShsbiwwLjk4KV1dLAogICAgICAgICAgICAgIHtwYWRkaW5nOlszMCwzMF0sbWF4Wm9vbTptYXhab29tfHwxNX0pOwp9CgovKiDrp4jsu6Trpbwg7ZWcIOqwnOyUqSBhZGRUbyDtlZjrqbQg7YG065+s7Iqk7YSw6rCAIOunpOuyiCDri6Tsi5wg6rOE7IKw65Cc64ukKDIsNTAw6rCc66m0IOuIiOyXkCDrs7TsnbTqsowg67KE67KF7J206rOgCiAgIO2ZlOuptOyXkCDqsrnsuZwg7LGE66GcIOuCqOuKlOuLpCkuIOuqqOyVhOyEnCBhZGRMYXllcnMg66GcIO2VnCDrsojsl5Ag64Sj64qU64ukLiAqLwp2YXIgUEVORD1bXTsKZnVuY3Rpb24gYWRkQWxsKGxheWVyLCBhcnIpewogIGlmKGxheWVyLmFkZExheWVycykgbGF5ZXIuYWRkTGF5ZXJzKGFycik7CiAgZWxzZSBhcnIuZm9yRWFjaChmdW5jdGlvbihtKXsgbS5hZGRUbyhsYXllcik7IH0pOwp9CgpmdW5jdGlvbiBjbHVzdGVyR3JvdXAoZm10LCBjb2xGbil7CiAgaWYoIXdpbmRvdy5MIHx8ICFMLm1hcmtlckNsdXN0ZXJHcm91cCkKICAgIHJldHVybiBMLmxheWVyR3JvdXAoKTsgICAgICAgICAgLyog7ZSM65+s6re47J247J20IOuquyDrlrTsnLzrqbQg6re464OlIOuLpCDssI3ripTri6QgKi8KICByZXR1cm4gTC5tYXJrZXJDbHVzdGVyR3JvdXAoewogICAgY2h1bmtlZExvYWRpbmc6dHJ1ZSwgc2hvd0NvdmVyYWdlT25Ib3ZlcjpmYWxzZSwgc3BpZGVyZnlPbk1heFpvb206dHJ1ZSwKICAgIGRpc2FibGVDbHVzdGVyaW5nQXRab29tOjE1LCBtYXhDbHVzdGVyUmFkaXVzOjg0LAogICAgaWNvbkNyZWF0ZUZ1bmN0aW9uOmZ1bmN0aW9uKGMpewogICAgICB2YXIgbXM9Yy5nZXRBbGxDaGlsZE1hcmtlcnMoKSwgdj1bXTsKICAgICAgZm9yKHZhciBpPTA7aTxtcy5sZW5ndGg7aSsrKXsgaWYobXNbaV0ub3B0aW9ucy5wdiE9bnVsbCkgdi5wdXNoKG1zW2ldLm9wdGlvbnMucHYpOyB9CiAgICAgIHYuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLWI7fSk7CiAgICAgIHZhciBtaWQgPSB2Lmxlbmd0aD8gdlt2Lmxlbmd0aD4+MV0gOiBudWxsOwogICAgICB2YXIgbj1jLmdldENoaWxkQ291bnQoKTsKICAgICAgdmFyIHN6ID0gbj4zMDA/NTggOiBuPjYwPzUwIDogNDM7CiAgICAgIHJldHVybiBMLmRpdkljb24oe2NsYXNzTmFtZTondHBoLWNsdXN0ZXInLCBpY29uU2l6ZTpbc3osc3pdLAogICAgICAgIGh0bWw6JzxkaXYgY2xhc3M9ImNsIiBzdHlsZT0id2lkdGg6JytzeisncHg7aGVpZ2h0Oicrc3orJ3B4O2JhY2tncm91bmQ6JwogICAgICAgICAgICAgKyhtaWQ9PW51bGw/JyM5Y2EzYWYnOmNvbEZuKG1pZCkpKyciPicKICAgICAgICAgICAgICsnPGI+JysobWlkPT1udWxsPycnOmZtdChtaWQpKSsnPC9iPjxpPicrbisn6rOzPC9pPjwvZGl2Pid9KTsKICAgIH19KTsKfQoKdmFyIFJJRFg9W3sibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg6rCV66aJ7IucIiwgInMiOiAi6rCV66aJ7IucIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At6rCV66aJ7IucLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIOqzoOyEseq1sCIsICJzIjogIuqzoOyEseq1sCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLeqzoOyEseq1sC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDrj5ntlbTsi5wiLCAicyI6ICLrj5ntlbTsi5wiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3rj5ntlbTsi5wvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7IK87LKZ7IucIiwgInMiOiAi7IK87LKZ7IucIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7IK87LKZ7IucLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIOyGjey0iOyLnCIsICJzIjogIuyGjey0iOyLnCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLeyGjey0iOyLnC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDslpHqtazqtbAiLCAicyI6ICLslpHqtazqtbAiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3slpHqtazqtbAvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7JaR7JaR6rWwIiwgInMiOiAi7JaR7JaR6rWwIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7JaR7JaR6rWwLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIOyYgeyblOq1sCIsICJzIjogIuyYgeyblOq1sCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLeyYgeyblOq1sC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDsm5Dso7zsi5wiLCAicyI6ICLsm5Dso7zsi5wiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3sm5Dso7zsi5wvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7J247KCc6rWwIiwgInMiOiAi7J247KCc6rWwIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7J247KCc6rWwLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIOygleyEoOq1sCIsICJzIjogIuygleyEoOq1sCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLeygleyEoOq1sC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDssqDsm5DqtbAiLCAicyI6ICLssqDsm5DqtbAiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3ssqDsm5DqtbAvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7LaY7LKc7IucIiwgInMiOiAi7LaY7LKc7IucIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7LaY7LKc7IucLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIO2DnOuwseyLnCIsICJzIjogIu2DnOuwseyLnCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLe2DnOuwseyLnC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDtj4nssL3qtbAiLCAicyI6ICLtj4nssL3qtbAiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3tj4nssL3qtbAvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7ZmN7LKc6rWwIiwgInMiOiAi7ZmN7LKc6rWwIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7ZmN7LKc6rWwLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIO2ZlOyynOq1sCIsICJzIjogIu2ZlOyynOq1sCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLe2ZlOyynOq1sC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDtmqHshLHqtbAiLCAicyI6ICLtmqHshLHqtbAiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3tmqHshLHqtbAvIn0sIHsibiI6ICLqsr3quLDrj4Qg6rCA7Y+J6rWwIiwgInMiOiAi6rCA7Y+J6rWwIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt6rCA7Y+J6rWwLyJ9LCB7Im4iOiAi6rK96riw64+EIOqzoOyWkeyLnCDrjZXslpHqtawiLCAicyI6ICLqs6DslpHsi5wg642V7JaR6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt6rOg7JaR7IucLeuNleyWkeq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDqs6DslpHsi5wg7J287IKw64+Z6rWsIiwgInMiOiAi6rOg7JaR7IucIOydvOyCsOuPmeq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeqzoOyWkeyLnC3snbzsgrDrj5nqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg6rOg7JaR7IucIOydvOyCsOyEnOq1rCIsICJzIjogIuqzoOyWkeyLnCDsnbzsgrDshJzqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3qs6DslpHsi5wt7J287IKw7ISc6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOqzvOyynOyLnCIsICJzIjogIuqzvOyynOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeqzvOyynOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDqtJHrqoXsi5wiLCAicyI6ICLqtJHrqoXsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3qtJHrqoXsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg6rSR7KO87IucIiwgInMiOiAi6rSR7KO87IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt6rSR7KO87IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOq1rOumrOyLnCIsICJzIjogIuq1rOumrOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeq1rOumrOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDqtbDtj6zsi5wiLCAicyI6ICLqtbDtj6zsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3qtbDtj6zsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg6rmA7Y+s7IucIiwgInMiOiAi6rmA7Y+s7IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt6rmA7Y+s7IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOuCqOyWkeyjvOyLnCIsICJzIjogIuuCqOyWkeyjvOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeuCqOyWkeyjvOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDrj5nrkZDsspzsi5wiLCAicyI6ICLrj5nrkZDsspzsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3rj5nrkZDsspzsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg67aA7LKc7IucIOyGjOyCrOq1rCIsICJzIjogIuu2gOyynOyLnCDshozsgqzqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3rtoDsspzsi5wt7IaM7IKs6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOu2gOyynOyLnCDsmKTsoJXqtawiLCAicyI6ICLrtoDsspzsi5wg7Jik7KCV6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt67aA7LKc7IucLeyYpOygleq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDrtoDsspzsi5wg7JuQ66+46rWsIiwgInMiOiAi67aA7LKc7IucIOybkOuvuOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeu2gOyynOyLnC3sm5Drr7jqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7ISx64Ko7IucIOu2hOuLueq1rCIsICJzIjogIuyEseuCqOyLnCDrtoTri7nqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3shLHrgqjsi5wt67aE64u56rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyEseuCqOyLnCDsiJjsoJXqtawiLCAicyI6ICLshLHrgqjsi5wg7IiY7KCV6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7ISx64Ko7IucLeyImOygleq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDshLHrgqjsi5wg7KSR7JuQ6rWsIiwgInMiOiAi7ISx64Ko7IucIOykkeybkOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyEseuCqOyLnC3spJHsm5DqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7IiY7JuQ7IucIOq2jOyEoOq1rCIsICJzIjogIuyImOybkOyLnCDqtozshKDqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3siJjsm5Dsi5wt6raM7ISg6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyImOybkOyLnCDsmIHthrXqtawiLCAicyI6ICLsiJjsm5Dsi5wg7JiB7Ya16rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7IiY7JuQ7IucLeyYge2Gteq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDsiJjsm5Dsi5wg7J6l7JWI6rWsIiwgInMiOiAi7IiY7JuQ7IucIOyepeyViOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyImOybkOyLnC3snqXslYjqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7IiY7JuQ7IucIO2MlOuLrOq1rCIsICJzIjogIuyImOybkOyLnCDtjJTri6zqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3siJjsm5Dsi5wt7YyU64us6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyLnO2dpeyLnCIsICJzIjogIuyLnO2dpeyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyLnO2dpeyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDslYjsgrDsi5wg64uo7JuQ6rWsIiwgInMiOiAi7JWI7IKw7IucIOuLqOybkOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyViOyCsOyLnC3ri6jsm5DqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7JWI7IKw7IucIOyDgeuhneq1rCIsICJzIjogIuyViOyCsOyLnCDsg4HroZ3qtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3slYjsgrDsi5wt7IOB66Gd6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyViOyEseyLnCIsICJzIjogIuyViOyEseyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyViOyEseyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDslYjslpHsi5wg64+Z7JWI6rWsIiwgInMiOiAi7JWI7JaR7IucIOuPmeyViOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyViOyWkeyLnC3rj5nslYjqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7JWI7JaR7IucIOunjOyViOq1rCIsICJzIjogIuyViOyWkeyLnCDrp4zslYjqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3slYjslpHsi5wt66eM7JWI6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyWkeyjvOyLnCIsICJzIjogIuyWkeyjvOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyWkeyjvOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDslpHtj4nqtbAiLCAicyI6ICLslpHtj4nqtbAiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3slpHtj4nqtbAvIn0sIHsibiI6ICLqsr3quLDrj4Qg7Jes7KO87IucIiwgInMiOiAi7Jes7KO87IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7Jes7KO87IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOyXsOyynOq1sCIsICJzIjogIuyXsOyynOq1sCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyXsOyynOq1sC8ifSwgeyJuIjogIuqyveq4sOuPhCDsmKTsgrDsi5wiLCAicyI6ICLsmKTsgrDsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3smKTsgrDsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg7Jqp7J247IucIOq4sO2dpeq1rCIsICJzIjogIuyaqeyduOyLnCDquLDtnaXqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3smqnsnbjsi5wt6riw7Z2l6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyaqeyduOyLnCDsiJjsp4DqtawiLCAicyI6ICLsmqnsnbjsi5wg7IiY7KeA6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7Jqp7J247IucLeyImOyngOq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDsmqnsnbjsi5wg7LKY7J246rWsIiwgInMiOiAi7Jqp7J247IucIOyymOyduOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyaqeyduOyLnC3sspjsnbjqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7J2Y7JmV7IucIiwgInMiOiAi7J2Y7JmV7IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7J2Y7JmV7IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOydmOygleu2gOyLnCIsICJzIjogIuydmOygleu2gOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeydmOygleu2gOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDsnbTsspzsi5wiLCAicyI6ICLsnbTsspzsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3snbTsspzsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg7YyM7KO87IucIiwgInMiOiAi7YyM7KO87IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7YyM7KO87IucLyJ9LCB7Im4iOiAi6rK96riw64+EIO2Pie2DneyLnCIsICJzIjogIu2Pie2DneyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLe2Pie2DneyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDtj6zsspzsi5wiLCAicyI6ICLtj6zsspzsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3tj6zsspzsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg7ZWY64Ko7IucIiwgInMiOiAi7ZWY64Ko7IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7ZWY64Ko7IucLyJ9LCB7Im4iOiAi6rK96riw64+EIO2ZlOyEseyLnCDrj5ntg4TqtawiLCAicyI6ICLtmZTshLHsi5wg64+Z7YOE6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7ZmU7ISx7IucLeuPme2DhOq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDtmZTshLHsi5wg66eM7IS46rWsIiwgInMiOiAi7ZmU7ISx7IucIOunjOyEuOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLe2ZlOyEseyLnC3rp4zshLjqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7ZmU7ISx7IucIOuzkeygkOq1rCIsICJzIjogIu2ZlOyEseyLnCDrs5HsoJDqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3tmZTshLHsi5wt67OR7KCQ6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIO2ZlOyEseyLnCDtmqjtlonqtawiLCAicyI6ICLtmZTshLHsi5wg7Zqo7ZaJ6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7ZmU7ISx7IucLe2aqO2Wieq1rC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDqsbDsoJzsi5wiLCAicyI6ICLqsbDsoJzsi5wiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3qsbDsoJzsi5wvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg6rGw7LC96rWwIiwgInMiOiAi6rGw7LC96rWwIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt6rGw7LC96rWwLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOqzoOyEseq1sCIsICJzIjogIuqzoOyEseq1sCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeqzoOyEseq1sC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDquYDtlbTsi5wiLCAicyI6ICLquYDtlbTsi5wiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3quYDtlbTsi5wvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg64Ko7ZW06rWwIiwgInMiOiAi64Ko7ZW06rWwIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt64Ko7ZW06rWwLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOuwgOyWkeyLnCIsICJzIjogIuuwgOyWkeyLnCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeuwgOyWkeyLnC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDsgqzsspzsi5wiLCAicyI6ICLsgqzsspzsi5wiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3sgqzsspzsi5wvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7IKw7LKt6rWwIiwgInMiOiAi7IKw7LKt6rWwIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7IKw7LKt6rWwLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOyWkeyCsOyLnCIsICJzIjogIuyWkeyCsOyLnCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeyWkeyCsOyLnC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDsnZjroLnqtbAiLCAicyI6ICLsnZjroLnqtbAiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3snZjroLnqtbAvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7KeE7KO87IucIiwgInMiOiAi7KeE7KO87IucIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7KeE7KO87IucLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOywveuFleq1sCIsICJzIjogIuywveuFleq1sCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeywveuFleq1sC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDssL3sm5Dsi5wg66eI7IKw7ZWp7Y+s6rWsIiwgInMiOiAi7LC97JuQ7IucIOuniOyCsO2Vqe2PrOq1rCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeywveybkOyLnC3rp4jsgrDtlantj6zqtawvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7LC97JuQ7IucIOuniOyCsO2ajOybkOq1rCIsICJzIjogIuywveybkOyLnCDrp4jsgrDtmozsm5DqtawiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3ssL3sm5Dsi5wt66eI7IKw7ZqM7JuQ6rWsLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOywveybkOyLnCDshLHsgrDqtawiLCAicyI6ICLssL3sm5Dsi5wg7ISx7IKw6rWsIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7LC97JuQ7IucLeyEseyCsOq1rC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDssL3sm5Dsi5wg7J2Y7LC96rWsIiwgInMiOiAi7LC97JuQ7IucIOydmOywveq1rCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeywveybkOyLnC3snZjssL3qtawvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7LC97JuQ7IucIOynhO2VtOq1rCIsICJzIjogIuywveybkOyLnCDsp4TtlbTqtawiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3ssL3sm5Dsi5wt7KeE7ZW06rWsLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIO2GteyYgeyLnCIsICJzIjogIu2GteyYgeyLnCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLe2GteyYgeyLnC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDtlZjrj5nqtbAiLCAicyI6ICLtlZjrj5nqtbAiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3tlZjrj5nqtbAvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7ZWo7JWI6rWwIiwgInMiOiAi7ZWo7JWI6rWwIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7ZWo7JWI6rWwLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIO2VqOyWkeq1sCIsICJzIjogIu2VqOyWkeq1sCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLe2VqOyWkeq1sC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDtlansspzqtbAiLCAicyI6ICLtlansspzqtbAiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3tlansspzqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg6rK97IKw7IucIiwgInMiOiAi6rK97IKw7IucIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt6rK97IKw7IucLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOqyveyjvOyLnCIsICJzIjogIuqyveyjvOyLnCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeqyveyjvOyLnC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDqs6DroLnqtbAiLCAicyI6ICLqs6DroLnqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3qs6DroLnqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg6rWs66+47IucIiwgInMiOiAi6rWs66+47IucIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt6rWs66+47IucLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOq5gOyynOyLnCIsICJzIjogIuq5gOyynOyLnCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeq5gOyynOyLnC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDrrLjqsr3si5wiLCAicyI6ICLrrLjqsr3si5wiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3rrLjqsr3si5wvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg67SJ7ZmU6rWwIiwgInMiOiAi67SJ7ZmU6rWwIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt67SJ7ZmU6rWwLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyDgeyjvOyLnCIsICJzIjogIuyDgeyjvOyLnCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyDgeyjvOyLnC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDshLHso7zqtbAiLCAicyI6ICLshLHso7zqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3shLHso7zqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7JWI64+Z7IucIiwgInMiOiAi7JWI64+Z7IucIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7JWI64+Z7IucLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyYgeuNleq1sCIsICJzIjogIuyYgeuNleq1sCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyYgeuNleq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDsmIHslpHqtbAiLCAicyI6ICLsmIHslpHqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3smIHslpHqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7JiB7KO87IucIiwgInMiOiAi7JiB7KO87IucIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7JiB7KO87IucLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyYgeyynOyLnCIsICJzIjogIuyYgeyynOyLnCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyYgeyynOyLnC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDsmIjsspzqtbAiLCAicyI6ICLsmIjsspzqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3smIjsspzqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7Jq466aJ6rWwIiwgInMiOiAi7Jq466aJ6rWwIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7Jq466aJ6rWwLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyauOynhOq1sCIsICJzIjogIuyauOynhOq1sCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyauOynhOq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDsnZjshLHqtbAiLCAicyI6ICLsnZjshLHqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3snZjshLHqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7LKt64+E6rWwIiwgInMiOiAi7LKt64+E6rWwIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7LKt64+E6rWwLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyyreyGoeq1sCIsICJzIjogIuyyreyGoeq1sCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyyreyGoeq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDsuaDqs6HqtbAiLCAicyI6ICLsuaDqs6HqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3suaDqs6HqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7Y+s7ZWt7IucIOuCqOq1rCIsICJzIjogIu2PrO2VreyLnCDrgqjqtawiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3tj6ztla3si5wt64Ko6rWsLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIO2PrO2VreyLnCDrtoHqtawiLCAicyI6ICLtj6ztla3si5wg67aB6rWsIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7Y+s7ZWt7IucLeu2geq1rC8ifSwgeyJuIjogIuuMgOq1rOq0keyXreyLnCDqtbDsnITqtbAiLCAicyI6ICLqtbDsnITqtbAiLCAiZCI6ICLrjIDqtawiLCAidSI6ICIv67aA64+Z7IKwLeuMgOq1rC3qtbDsnITqtbAvIn0sIHsibiI6ICLrjIDqtazqtJHsl63si5wg64Ko6rWsIiwgInMiOiAi64Ko6rWsIiwgImQiOiAi64yA6rWsIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDqtawt64Ko6rWsLyJ9LCB7Im4iOiAi64yA6rWs6rSR7Jet7IucIOuLrOyEnOq1rCIsICJzIjogIuuLrOyEnOq1rCIsICJkIjogIuuMgOq1rCIsICJ1IjogIi/rtoDrj5nsgrAt64yA6rWsLeuLrOyEnOq1rC8ifSwgeyJuIjogIuuMgOq1rOq0keyXreyLnCDri6zshLHqtbAiLCAicyI6ICLri6zshLHqtbAiLCAiZCI6ICLrjIDqtawiLCAidSI6ICIv67aA64+Z7IKwLeuMgOq1rC3ri6zshLHqtbAvIn0sIHsibiI6ICLrjIDqtazqtJHsl63si5wg64+Z6rWsIiwgInMiOiAi64+Z6rWsIiwgImQiOiAi64yA6rWsIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDqtawt64+Z6rWsLyJ9LCB7Im4iOiAi64yA6rWs6rSR7Jet7IucIOu2geq1rCIsICJzIjogIuu2geq1rCIsICJkIjogIuuMgOq1rCIsICJ1IjogIi/rtoDrj5nsgrAt64yA6rWsLeu2geq1rC8ifSwgeyJuIjogIuuMgOq1rOq0keyXreyLnCDshJzqtawiLCAicyI6ICLshJzqtawiLCAiZCI6ICLrjIDqtawiLCAidSI6ICIv67aA64+Z7IKwLeuMgOq1rC3shJzqtawvIn0sIHsibiI6ICLrjIDqtazqtJHsl63si5wg7IiY7ISx6rWsIiwgInMiOiAi7IiY7ISx6rWsIiwgImQiOiAi64yA6rWsIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDqtawt7IiY7ISx6rWsLyJ9LCB7Im4iOiAi64yA6rWs6rSR7Jet7IucIOykkeq1rCIsICJzIjogIuykkeq1rCIsICJkIjogIuuMgOq1rCIsICJ1IjogIi/rtoDrj5nsgrAt64yA6rWsLeykkeq1rC8ifSwgeyJuIjogIuuMgOyghOq0keyXreyLnCDrjIDrjZXqtawiLCAicyI6ICLrjIDrjZXqtawiLCAiZCI6ICLrjIDsoIQiLCAidSI6ICIv67aA64+Z7IKwLeuMgOyghC3rjIDrjZXqtawvIn0sIHsibiI6ICLrjIDsoITqtJHsl63si5wg64+Z6rWsIiwgInMiOiAi64+Z6rWsIiwgImQiOiAi64yA7KCEIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDsoIQt64+Z6rWsLyJ9LCB7Im4iOiAi64yA7KCE6rSR7Jet7IucIOyEnOq1rCIsICJzIjogIuyEnOq1rCIsICJkIjogIuuMgOyghCIsICJ1IjogIi/rtoDrj5nsgrAt64yA7KCELeyEnOq1rC8ifSwgeyJuIjogIuuMgOyghOq0keyXreyLnCDsnKDshLHqtawiLCAicyI6ICLsnKDshLHqtawiLCAiZCI6ICLrjIDsoIQiLCAidSI6ICIv67aA64+Z7IKwLeuMgOyghC3snKDshLHqtawvIn0sIHsibiI6ICLrjIDsoITqtJHsl63si5wg7KSR6rWsIiwgInMiOiAi7KSR6rWsIiwgImQiOiAi64yA7KCEIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDsoIQt7KSR6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOqwleyEnOq1rCIsICJzIjogIuqwleyEnOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeqwleyEnOq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDquIjsoJXqtawiLCAicyI6ICLquIjsoJXqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3quIjsoJXqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg6riw7J6l6rWwIiwgInMiOiAi6riw7J6l6rWwIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt6riw7J6l6rWwLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOuCqOq1rCIsICJzIjogIuuCqOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeuCqOq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDrj5nqtawiLCAicyI6ICLrj5nqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3rj5nqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg64+Z656Y6rWsIiwgInMiOiAi64+Z656Y6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt64+Z656Y6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOu2gOyCsOynhOq1rCIsICJzIjogIuu2gOyCsOynhOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeu2gOyCsOynhOq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDrtoHqtawiLCAicyI6ICLrtoHqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3rtoHqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg7IKs7IOB6rWsIiwgInMiOiAi7IKs7IOB6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt7IKs7IOB6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOyCrO2VmOq1rCIsICJzIjogIuyCrO2VmOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeyCrO2VmOq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDshJzqtawiLCAicyI6ICLshJzqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3shJzqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg7IiY7JiB6rWsIiwgInMiOiAi7IiY7JiB6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt7IiY7JiB6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOyXsOygnOq1rCIsICJzIjogIuyXsOygnOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeyXsOygnOq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDsmIHrj4TqtawiLCAicyI6ICLsmIHrj4TqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3smIHrj4TqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg7KSR6rWsIiwgInMiOiAi7KSR6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt7KSR6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIO2VtOyatOuMgOq1rCIsICJzIjogIu2VtOyatOuMgOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLe2VtOyatOuMgOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDqsJXrgqjqtawiLCAicyI6ICLqsJXrgqjqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3qsJXrgqjqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg6rCV64+Z6rWsIiwgInMiOiAi6rCV64+Z6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt6rCV64+Z6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOqwleu2geq1rCIsICJzIjogIuqwleu2geq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4Leqwleu2geq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDqsJXshJzqtawiLCAicyI6ICLqsJXshJzqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3qsJXshJzqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg6rSA7JWF6rWsIiwgInMiOiAi6rSA7JWF6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt6rSA7JWF6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOq0keynhOq1rCIsICJzIjogIuq0keynhOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4Leq0keynhOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDqtazroZzqtawiLCAicyI6ICLqtazroZzqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3qtazroZzqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg6riI7LKc6rWsIiwgInMiOiAi6riI7LKc6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt6riI7LKc6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOuFuOybkOq1rCIsICJzIjogIuuFuOybkOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeuFuOybkOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDrj4TrtInqtawiLCAicyI6ICLrj4TrtInqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3rj4TrtInqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg64+Z64yA66y46rWsIiwgInMiOiAi64+Z64yA66y46rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt64+Z64yA66y46rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOuPmeyekeq1rCIsICJzIjogIuuPmeyekeq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeuPmeyekeq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDrp4jtj6zqtawiLCAicyI6ICLrp4jtj6zqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3rp4jtj6zqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg7ISc64yA66y46rWsIiwgInMiOiAi7ISc64yA66y46rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt7ISc64yA66y46rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOyEnOy0iOq1rCIsICJzIjogIuyEnOy0iOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeyEnOy0iOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDshLHrj5nqtawiLCAicyI6ICLshLHrj5nqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3shLHrj5nqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg7ISx67aB6rWsIiwgInMiOiAi7ISx67aB6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt7ISx67aB6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOyGoe2MjOq1rCIsICJzIjogIuyGoe2MjOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeyGoe2MjOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDslpHsspzqtawiLCAicyI6ICLslpHsspzqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3slpHsspzqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg7JiB65Ox7Y+s6rWsIiwgInMiOiAi7JiB65Ox7Y+s6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt7JiB65Ox7Y+s6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOyaqeyCsOq1rCIsICJzIjogIuyaqeyCsOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeyaqeyCsOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDsnYDtj4nqtawiLCAicyI6ICLsnYDtj4nqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3snYDtj4nqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg7KKF66Gc6rWsIiwgInMiOiAi7KKF66Gc6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt7KKF66Gc6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOykkeq1rCIsICJzIjogIuykkeq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4Leykkeq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDspJHrnpHqtawiLCAicyI6ICLspJHrnpHqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3spJHrnpHqtawvIn0sIHsibiI6ICLshLjsooXtirnrs4TsnpDsuZjsi5wiLCAicyI6ICLshLjsooXtirnrs4TsnpDsuZjsi5wiLCAiZCI6ICLshLjsooUiLCAidSI6ICIv67aA64+Z7IKwLeyEuOyihS3shLjsooXtirnrs4TsnpDsuZjsi5wvIn0sIHsibiI6ICLsmrjsgrDqtJHsl63si5wg64Ko6rWsIiwgInMiOiAi64Ko6rWsIiwgImQiOiAi7Jq47IKwIiwgInUiOiAiL+u2gOuPmeyCsC3smrjsgrAt64Ko6rWsLyJ9LCB7Im4iOiAi7Jq47IKw6rSR7Jet7IucIOuPmeq1rCIsICJzIjogIuuPmeq1rCIsICJkIjogIuyauOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt7Jq47IKwLeuPmeq1rC8ifSwgeyJuIjogIuyauOyCsOq0keyXreyLnCDrtoHqtawiLCAicyI6ICLrtoHqtawiLCAiZCI6ICLsmrjsgrAiLCAidSI6ICIv67aA64+Z7IKwLeyauOyCsC3rtoHqtawvIn0sIHsibiI6ICLsmrjsgrDqtJHsl63si5wg7Jq47KO86rWwIiwgInMiOiAi7Jq47KO86rWwIiwgImQiOiAi7Jq47IKwIiwgInUiOiAiL+u2gOuPmeyCsC3smrjsgrAt7Jq47KO86rWwLyJ9LCB7Im4iOiAi7Jq47IKw6rSR7Jet7IucIOykkeq1rCIsICJzIjogIuykkeq1rCIsICJkIjogIuyauOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt7Jq47IKwLeykkeq1rC8ifSwgeyJuIjogIuyduOyynOq0keyXreyLnCDqsJXtmZTqtbAiLCAicyI6ICLqsJXtmZTqtbAiLCAiZCI6ICLsnbjsspwiLCAidSI6ICIv67aA64+Z7IKwLeyduOyynC3qsJXtmZTqtbAvIn0sIHsibiI6ICLsnbjsspzqtJHsl63si5wg6rKA64uo6rWsIiwgInMiOiAi6rKA64uo6rWsIiwgImQiOiAi7J247LKcIiwgInUiOiAiL+u2gOuPmeyCsC3snbjsspwt6rKA64uo6rWsLyJ9LCB7Im4iOiAi7J247LKc6rSR7Jet7IucIOqzhOyWkeq1rCIsICJzIjogIuqzhOyWkeq1rCIsICJkIjogIuyduOyynCIsICJ1IjogIi/rtoDrj5nsgrAt7J247LKcLeqzhOyWkeq1rC8ifSwgeyJuIjogIuyduOyynOq0keyXreyLnCDrgqjrj5nqtawiLCAicyI6ICLrgqjrj5nqtawiLCAiZCI6ICLsnbjsspwiLCAidSI6ICIv67aA64+Z7IKwLeyduOyynC3rgqjrj5nqtawvIn0sIHsibiI6ICLsnbjsspzqtJHsl63si5wg66+47LaU7ZmA6rWsIiwgInMiOiAi66+47LaU7ZmA6rWsIiwgImQiOiAi7J247LKcIiwgInUiOiAiL+u2gOuPmeyCsC3snbjsspwt66+47LaU7ZmA6rWsLyJ9LCB7Im4iOiAi7J247LKc6rSR7Jet7IucIOu2gO2Pieq1rCIsICJzIjogIuu2gO2Pieq1rCIsICJkIjogIuyduOyynCIsICJ1IjogIi/rtoDrj5nsgrAt7J247LKcLeu2gO2Pieq1rC8ifSwgeyJuIjogIuyduOyynOq0keyXreyLnCDshJztlbTqtawiLCAicyI6ICLshJztlbTqtawiLCAiZCI6ICLsnbjsspwiLCAidSI6ICIv67aA64+Z7IKwLeyduOyynC3shJztlbTqtawvIn0sIHsibiI6ICLsnbjsspzqtJHsl63si5wg7Jew7IiY6rWsIiwgInMiOiAi7Jew7IiY6rWsIiwgImQiOiAi7J247LKcIiwgInUiOiAiL+u2gOuPmeyCsC3snbjsspwt7Jew7IiY6rWsLyJ9LCB7Im4iOiAi7J247LKc6rSR7Jet7IucIOyYgeyiheq1rCIsICJzIjogIuyYgeyiheq1rCIsICJkIjogIuyduOyynCIsICJ1IjogIi/rtoDrj5nsgrAt7J247LKcLeyYgeyiheq1rC8ifSwgeyJuIjogIuyduOyynOq0keyXreyLnCDsoJzrrLztj6zqtawiLCAicyI6ICLsoJzrrLztj6zqtawiLCAiZCI6ICLsnbjsspwiLCAidSI6ICIv67aA64+Z7IKwLeyduOyynC3soJzrrLztj6zqtawvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg6rCV7KeE6rWwIiwgInMiOiAi6rCV7KeE6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt6rCV7KeE6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOqzoO2dpeq1sCIsICJzIjogIuqzoO2dpeq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeqzoO2dpeq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDqs6HshLHqtbAiLCAicyI6ICLqs6HshLHqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3qs6HshLHqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg6rSR7IKw6rWsIiwgInMiOiAi6rSR7IKw6rWsIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt6rSR7IKw6rWsLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOq0keyWkeyLnCIsICJzIjogIuq0keyWkeyLnCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8Leq0keyWkeyLnC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDqtazroYDqtbAiLCAicyI6ICLqtazroYDqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3qtazroYDqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg64KY7KO87IucIiwgInMiOiAi64KY7KO87IucIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt64KY7KO87IucLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOuCqOq1rCIsICJzIjogIuuCqOq1rCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeuCqOq1rC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDri7TslpHqtbAiLCAicyI6ICLri7TslpHqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3ri7TslpHqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg64+Z6rWsIiwgInMiOiAi64+Z6rWsIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt64+Z6rWsLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOuqqe2PrOyLnCIsICJzIjogIuuqqe2PrOyLnCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8Leuqqe2PrOyLnC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDrrLTslYjqtbAiLCAicyI6ICLrrLTslYjqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3rrLTslYjqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg67O07ISx6rWwIiwgInMiOiAi67O07ISx6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt67O07ISx6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOu2geq1rCIsICJzIjogIuu2geq1rCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8Leu2geq1rC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDshJzqtawiLCAicyI6ICLshJzqtawiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3shJzqtawvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg7Iic7LKc7IucIiwgInMiOiAi7Iic7LKc7IucIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt7Iic7LKc7IucLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOyLoOyViOq1sCIsICJzIjogIuyLoOyViOq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeyLoOyViOq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDsl6zsiJjsi5wiLCAicyI6ICLsl6zsiJjsi5wiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3sl6zsiJjsi5wvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg7JiB6rSR6rWwIiwgInMiOiAi7JiB6rSR6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt7JiB6rSR6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOyYgeyVlOq1sCIsICJzIjogIuyYgeyVlOq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeyYgeyVlOq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDsmYTrj4TqtbAiLCAicyI6ICLsmYTrj4TqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3smYTrj4TqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg7J6l7ISx6rWwIiwgInMiOiAi7J6l7ISx6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt7J6l7ISx6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOyepe2dpeq1sCIsICJzIjogIuyepe2dpeq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8Leyepe2dpeq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDsp4Trj4TqtbAiLCAicyI6ICLsp4Trj4TqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3sp4Trj4TqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg7ZWo7Y+J6rWwIiwgInMiOiAi7ZWo7Y+J6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt7ZWo7Y+J6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIO2VtOuCqOq1sCIsICJzIjogIu2VtOuCqOq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8Le2VtOuCqOq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDtmZTsiJzqtbAiLCAicyI6ICLtmZTsiJzqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3tmZTsiJzqtbAvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg6rOg7LC96rWwIiwgInMiOiAi6rOg7LC96rWwIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt6rOg7LC96rWwLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOq1sOyCsOyLnCIsICJzIjogIuq1sOyCsOyLnCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeq1sOyCsOyLnC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDquYDsoJzsi5wiLCAicyI6ICLquYDsoJzsi5wiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3quYDsoJzsi5wvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg64Ko7JuQ7IucIiwgInMiOiAi64Ko7JuQ7IucIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt64Ko7JuQ7IucLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOustOyjvOq1sCIsICJzIjogIuustOyjvOq1sCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeustOyjvOq1sC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDrtoDslYjqtbAiLCAicyI6ICLrtoDslYjqtbAiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3rtoDslYjqtbAvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg7Iic7LC96rWwIiwgInMiOiAi7Iic7LC96rWwIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt7Iic7LC96rWwLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOyZhOyjvOq1sCIsICJzIjogIuyZhOyjvOq1sCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeyZhOyjvOq1sC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDsnbXsgrDsi5wiLCAicyI6ICLsnbXsgrDsi5wiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3snbXsgrDsi5wvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg7J6E7Iuk6rWwIiwgInMiOiAi7J6E7Iuk6rWwIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt7J6E7Iuk6rWwLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOyepeyImOq1sCIsICJzIjogIuyepeyImOq1sCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeyepeyImOq1sC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDsoITso7zsi5wg642V7KeE6rWsIiwgInMiOiAi7KCE7KO87IucIOuNleynhOq1rCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeyghOyjvOyLnC3rjZXsp4TqtawvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg7KCE7KO87IucIOyZhOyCsOq1rCIsICJzIjogIuyghOyjvOyLnCDsmYTsgrDqtawiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3soITso7zsi5wt7JmE7IKw6rWsLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOygleydjeyLnCIsICJzIjogIuygleydjeyLnCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeygleydjeyLnC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDsp4TslYjqtbAiLCAicyI6ICLsp4TslYjqtbAiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3sp4TslYjqtbAvIn0sIHsibiI6ICLsoJzso7ztirnrs4TsnpDsuZjrj4Qg7ISc6reA7Y+s7IucIiwgInMiOiAi7ISc6reA7Y+s7IucIiwgImQiOiAi7KCc7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soJzso7wt7ISc6reA7Y+s7IucLyJ9LCB7Im4iOiAi7KCc7KO87Yq567OE7J6Q7LmY64+EIOygnOyjvOyLnCIsICJzIjogIuygnOyjvOyLnCIsICJkIjogIuygnOyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCc7KO8LeygnOyjvOyLnC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDqs4Tro6Hsi5wiLCAicyI6ICLqs4Tro6Hsi5wiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3qs4Tro6Hsi5wvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg6rO17KO87IucIiwgInMiOiAi6rO17KO87IucIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt6rO17KO87IucLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOq4iOyCsOq1sCIsICJzIjogIuq4iOyCsOq1sCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLeq4iOyCsOq1sC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDrhbzsgrDsi5wiLCAicyI6ICLrhbzsgrDsi5wiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3rhbzsgrDsi5wvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg64u57KeE7IucIiwgInMiOiAi64u57KeE7IucIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt64u57KeE7IucLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOuztOugueyLnCIsICJzIjogIuuztOugueyLnCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLeuztOugueyLnC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDrtoDsl6zqtbAiLCAicyI6ICLrtoDsl6zqtbAiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3rtoDsl6zqtbAvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg7ISc7IKw7IucIiwgInMiOiAi7ISc7IKw7IucIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt7ISc7IKw7IucLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOyEnOyynOq1sCIsICJzIjogIuyEnOyynOq1sCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLeyEnOyynOq1sC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDslYTsgrDsi5wiLCAicyI6ICLslYTsgrDsi5wiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3slYTsgrDsi5wvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg7JiI7IKw6rWwIiwgInMiOiAi7JiI7IKw6rWwIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt7JiI7IKw6rWwLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOyynOyViOyLnCDrj5nrgqjqtawiLCAicyI6ICLsspzslYjsi5wg64+Z64Ko6rWsIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt7LKc7JWI7IucLeuPmeuCqOq1rC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDsspzslYjsi5wg7ISc67aB6rWsIiwgInMiOiAi7LKc7JWI7IucIOyEnOu2geq1rCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLeyynOyViOyLnC3shJzrtoHqtawvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg7LKt7JaR6rWwIiwgInMiOiAi7LKt7JaR6rWwIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt7LKt7JaR6rWwLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIO2DnOyViOq1sCIsICJzIjogIu2DnOyViOq1sCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLe2DnOyViOq1sC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDtmY3shLHqtbAiLCAicyI6ICLtmY3shLHqtbAiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3tmY3shLHqtbAvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg6rS07IKw6rWwIiwgInMiOiAi6rS07IKw6rWwIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt6rS07IKw6rWwLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOuLqOyWkeq1sCIsICJzIjogIuuLqOyWkeq1sCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeuLqOyWkeq1sC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDrs7TsnYDqtbAiLCAicyI6ICLrs7TsnYDqtbAiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3rs7TsnYDqtbAvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg7JiB64+Z6rWwIiwgInMiOiAi7JiB64+Z6rWwIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt7JiB64+Z6rWwLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOyYpeyynOq1sCIsICJzIjogIuyYpeyynOq1sCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeyYpeyynOq1sC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDsnYzshLHqtbAiLCAicyI6ICLsnYzshLHqtbAiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3snYzshLHqtbAvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg7KCc7LKc7IucIiwgInMiOiAi7KCc7LKc7IucIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt7KCc7LKc7IucLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOymne2Pieq1sCIsICJzIjogIuymne2Pieq1sCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeymne2Pieq1sC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDsp4TsspzqtbAiLCAicyI6ICLsp4TsspzqtbAiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3sp4TsspzqtbAvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg7LKt7KO87IucIOyDgeuLueq1rCIsICJzIjogIuyyreyjvOyLnCDsg4Hri7nqtawiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3ssq3so7zsi5wt7IOB64u56rWsLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOyyreyjvOyLnCDshJzsm5DqtawiLCAicyI6ICLssq3so7zsi5wg7ISc7JuQ6rWsIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt7LKt7KO87IucLeyEnOybkOq1rC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDssq3so7zsi5wg7LKt7JuQ6rWsIiwgInMiOiAi7LKt7KO87IucIOyyreybkOq1rCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeyyreyjvOyLnC3ssq3sm5DqtawvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg7LKt7KO87IucIO2dpeuNleq1rCIsICJzIjogIuyyreyjvOyLnCDtnaXrjZXqtawiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3ssq3so7zsi5wt7Z2l642V6rWsLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOy2qeyjvOyLnCIsICJzIjogIuy2qeyjvOyLnCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLey2qeyjvOyLnC8ifV07CgpmdW5jdGlvbiBpbml0RmluZGVyKCl7CiAgdmFyIHE9JCgncnEnKSwgYm94PSQoJ2ZyZXMnKTsKICBpZighcXx8IWJveHx8IXdpbmRvdy5SSURYKSByZXR1cm47CiAgdmFyIGN1cj0tMSwgcm93cz1bXTsKICB2YXIgZHJhdz1mdW5jdGlvbigpewogICAgdmFyIHY9cS52YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTsKICAgIGlmKCF2KXsgYm94LmhpZGRlbj10cnVlOyBib3guaW5uZXJIVE1MPScnOyByZXR1cm47IH0KICAgIHJvd3M9UklEWC5maWx0ZXIoZnVuY3Rpb24ocil7CiAgICAgIHJldHVybiByLm4udG9Mb3dlckNhc2UoKS5pbmRleE9mKHYpPj0wIHx8IHIucy50b0xvd2VyQ2FzZSgpLmluZGV4T2Yodik+PTA7CiAgICB9KS5zbGljZSgwLDgpOwogICAgaWYoIXJvd3MubGVuZ3RoKXsKICAgICAgYm94LmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibm9uZSI+7LC+64qUIOyngOyXreydtCDsl4bsirXri4jri6Q8L2Rpdj4nOyBib3guaGlkZGVuPWZhbHNlOyByZXR1cm47CiAgICB9CiAgICBjdXI9LTE7CiAgICBib3guaW5uZXJIVE1MPXJvd3MubWFwKGZ1bmN0aW9uKHIsaSl7CiAgICAgIHJldHVybiAnPGEgaHJlZj0iJytyLnUrJyIgZGF0YS1pPSInK2krJyI+PGI+JytyLnMrJzwvYj48c3Bhbj4nK3IuZCsnPC9zcGFuPjwvYT4nOwogICAgfSkuam9pbignJyk7CiAgICBib3guaGlkZGVuPWZhbHNlOwogIH07CiAgcS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsZHJhdyk7CiAgcS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsZHJhdyk7CiAgcS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJyxmdW5jdGlvbihlKXsKICAgIHZhciBhPWJveC5xdWVyeVNlbGVjdG9yQWxsKCdhJyk7CiAgICBpZihlLmtleT09PSdBcnJvd0Rvd24nfHxlLmtleT09PSdBcnJvd1VwJyl7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgaWYoIWEubGVuZ3RoKSByZXR1cm47CiAgICAgIGN1cj0oY3VyKyhlLmtleT09PSdBcnJvd0Rvd24nPzE6LTEpK2EubGVuZ3RoKSVhLmxlbmd0aDsKICAgICAgYS5mb3JFYWNoKGZ1bmN0aW9uKHgsaSl7eC5jbGFzc0xpc3QudG9nZ2xlKCdvbicsaT09PWN1cik7fSk7CiAgICAgIGFbY3VyXS5zY3JvbGxJbnRvVmlldyh7YmxvY2s6J25lYXJlc3QnfSk7CiAgICB9IGVsc2UgaWYoZS5rZXk9PT0nRW50ZXInKXsKICAgICAgaWYoY3VyPj0wJiZhW2N1cl0peyBlLnByZXZlbnREZWZhdWx0KCk7IGxvY2F0aW9uLmhyZWY9YVtjdXJdLmdldEF0dHJpYnV0ZSgnaHJlZicpOyB9CiAgICAgIGVsc2UgaWYoYS5sZW5ndGgpeyBlLnByZXZlbnREZWZhdWx0KCk7IGxvY2F0aW9uLmhyZWY9YVswXS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTsgfQogICAgfSBlbHNlIGlmKGUua2V5PT09J0VzY2FwZScpeyBib3guaGlkZGVuPXRydWU7IHEuYmx1cigpOyB9CiAgfSk7CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpewogICAgaWYoIWUudGFyZ2V0LmNsb3Nlc3QoJy50cGgtZmluZGVyJykpIGJveC5oaWRkZW49dHJ1ZTsKICB9KTsKfQo7CnZhciBtYXAsIGxheWVyLCBtYXJrZXJzPVtdOwpmdW5jdGlvbiBpbkFyZWEoaXQsIHJhbmdlKXsKICBpZighcmFuZ2UpIHJldHVybiB0cnVlOwogIHZhciBwPXJhbmdlLnNwbGl0KCctJyksIGxvPStwWzBdLCBoaT0rcFsxXTsKICByZXR1cm4gaXQuZHMuc29tZShmdW5jdGlvbih6KXtyZXR1cm4gei5hPmxvICYmIHouYTw9aGk7fSk7Cn0KZnVuY3Rpb24gZmlsdGVyZWQoKXsKICB2YXIgcj1zKCdyZycpLCBhPXMoJ2FyZWEnKTsKICByZXR1cm4gRC5pdGVtcy5maWx0ZXIoZnVuY3Rpb24oeCl7CiAgICBpZihyICYmIHgucmchPT1yKSByZXR1cm4gZmFsc2U7CiAgICByZXR1cm4gaW5BcmVhKHgsYSk7CiAgfSk7Cn0KLyog7Y6Y7J2066Gc65Oc7J2YIOq4iOyVoeydgCDsoITrtoAgKirrp4zsm5Ag64uo7JyEKirri6QuIOybkCDri6jsnITroZwg7LCp6rCB7ZWY7KeAIOunkCDqsoMuICovCmZ1bmN0aW9uIG1hbihuKXsgcmV0dXJuIE1hdGgucm91bmQobikudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+unjCc7IH0KZnVuY3Rpb24gZW9rKG4pewogIG49TWF0aC5yb3VuZChuKTsKICB2YXIgZT1NYXRoLmZsb29yKG4vMTAwMDApLCBtPW4lMTAwMDA7CiAgcmV0dXJuICgoZT8gZSsn7Ja1ICc6JycpICsgKG0/IG0udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+unjCc6JycpKSB8fCAnMCc7Cn0KZnVuY3Rpb24gY29sb3JGb3IodiwgbG8sIGhpKXsKICBpZihoaTw9bG8pIHJldHVybiAnIzljYTNhZic7CiAgdmFyIHQ9KHYtbG8pLyhoaS1sbyk7CiAgdmFyIGNzPWdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKICBpZih0PjAuNjYpIHJldHVybiBjcy5nZXRQcm9wZXJ0eVZhbHVlKCctLXMyJykudHJpbSgpfHwnI2ViNjgzNCc7CiAgaWYodDwwLjMzKSByZXR1cm4gY3MuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zMScpLnRyaW0oKXx8JyMyYTc4ZDYnOwogIHJldHVybiAnIzljYTNhZic7Cn0KZnVuY3Rpb24gcmVuZGVyKCl7CiAgdmFyIGxpc3Q9ZmlsdGVyZWQoKSwgc29ydD1zKCdzb3J0Jyk7CiAgdmFyIHBwcz1saXN0Lm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5wcDt9KS5maWx0ZXIoQm9vbGVhbikuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLWI7fSk7CiAgLyog7LWc7KCAwrfstZzqs6DroZwg7IOJIOuylOychOulvCDsnqHsnLzrqbQg7LSI6rOg6rCAIOuLqOyngCDrqocg6rOz7J20IOyKpOy8gOydvOydhCDri6Qg66i57Ja0IOyghOu2gCDtjIzrnpfqsowg64KY7Jio64ukLgogICAgIDEwfjkwIOu2hOychOuhnCDsnpDrpbTrqbQg7IOJ7J20IOyLpOygnOuhnCDqsIjrprDri6QuICovCiAgdmFyIGxvPXBwcy5sZW5ndGg/IHBwc1tNYXRoLmZsb29yKHBwcy5sZW5ndGgqMC4xKV0gOiAwLAogICAgICBoaT1wcHMubGVuZ3RoPyBwcHNbTWF0aC5mbG9vcihwcHMubGVuZ3RoKjAuOSldIDogMDsKICBpZihoaTw9bG8peyBsbz1wcHNbMF18fDA7IGhpPXBwc1twcHMubGVuZ3RoLTFdfHwwOyB9CiAgQ0xPPWxvOyBDSEk9aGk7CiAgbGlzdC5zb3J0KGZ1bmN0aW9uKGEsYil7CiAgICBpZihzb3J0PT09J3BwJykgcmV0dXJuIGIucHAtYS5wcDsKICAgIGlmKHNvcnQ9PT0ncHBhJykgcmV0dXJuIGEucHAtYi5wcDsKICAgIGlmKHNvcnQ9PT0nbGFzdCcpIHJldHVybiAoYS5sYXN0PGIubGFzdD8xOi0xKTsKICAgIHJldHVybiBiLmNudC1hLmNudDsKICB9KTsKICBpZihsYXllcikgbGF5ZXIuY2xlYXJMYXllcnMoKTsKICBQRU5EPVtdOwogIG1hcmtlcnM9W107IHZhciBib3VuZHM9W107CiAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHgpewogICAgdmFyIGNvbD1jb2xvckZvcih4LnBwLGxvLGhpKTsKICAgIHZhciBpYz1MLmRpdkljb24oe2NsYXNzTmFtZTondHBoLXBpbicsIGljb25TaXplOls2MiwyNl0sIGljb25BbmNob3I6WzMxLDI2XSwKICAgICAgaHRtbDonPGIgc3R5bGU9ImJhY2tncm91bmQ6Jytjb2wrJyI+JyttYW4oeC5wcCkrJzwvYj48aSBzdHlsZT0iY29sb3I6Jytjb2wrJyI+PC9pPid9KTsKICAgIHZhciByb3dzPXguZHMuc2xpY2UoMCw1KS5tYXAoZnVuY3Rpb24oeil7CiAgICAgIHJldHVybiB6LmQrJyDCtyAnK3ouYSsn446hIMK3ICcrKHouZj96LmYrJ+y4tSDCtyAnOicnKStlb2soei5wKTsKICAgIH0pLmpvaW4oJzxicj4nKTsKICAgIHZhciBtPUwubWFya2VyKFt4LmxhdCx4Lmxvbl0se2ljb246aWMscHY6eC5wcH0pOyAgUEVORC5wdXNoKG0pOwogICAgbS5iaW5kUG9wdXAoJzxiPicreC5uKyc8L2I+PGJyPicreC5yZysnICcreC5kZwogICAgICArJzxicj7tj4nri7kgJyttYW4oeC5wcCkrJ+ybkCDCtyDqsbDrnpggJyt4LmNudCsn6rG0PGJyPjxociBzdHlsZT0ibWFyZ2luOjZweCAwO2JvcmRlcjpub25lO2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQiPicKICAgICAgK3Jvd3MpOwogICAgbWFya2Vycy5wdXNoKG0pOyBib3VuZHMucHVzaChbeC5sYXQseC5sb25dKTsKICB9KTsKICBhZGRBbGwobGF5ZXIsIFBFTkQpOwogIGZpdFRvKG1hcCwgYm91bmRzLCAxNSk7CiAgdmFyIGg9Jyc7CiAgbGlzdC5zbGljZSgwLDYwKS5mb3JFYWNoKGZ1bmN0aW9uKHgsaSl7CiAgICBoKz0nPGRpdiBjbGFzcz0idHBoLXJvdyIgZGF0YS1pPSInK2krJyI+PGRpdiBjbGFzcz0icmsiPicrKGkrMSkrJzwvZGl2PicKICAgICAgKyc8ZGl2IGNsYXNzPSJubSI+PGI+Jyt4Lm4rJzxzcGFuIGNsYXNzPSJ0cGgtdGFnIj4nK3guY250KyfqsbQ8L3NwYW4+PC9iPicKICAgICAgKyc8c3Bhbj4nK3gucmcrJyAnK3guZGcrJyDCtyDstZzqt7wgJyt4Lmxhc3QrJzwvc3Bhbj48L2Rpdj4nCiAgICAgICsnPGRpdiBjbGFzcz0icHIiPicrZW9rKHguYXZnKSsnPGVtPu2PieuLuSAnK21hbih4LnBwKSsnPC9lbT48L2Rpdj48L2Rpdj4nOwogIH0pOwogICQoJ2xpc3QnKS5pbm5lckhUTUwgPSBoIHx8ICc8ZGl2IGNsYXNzPSJ0cGgtcm93Ij48ZGl2IGNsYXNzPSJubSI+7KGw6rG07JeQIOunnuuKlCDri6jsp4DqsIAg7JeG7Iq164uI64ukLjwvZGl2PjwvZGl2Pic7CiAgJCgnbGlzdCcpLnF1ZXJ5U2VsZWN0b3JBbGwoJy50cGgtcm93W2RhdGEtaV0nKS5mb3JFYWNoKGZ1bmN0aW9uKHIpewogICAgci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgdmFyIG09bWFya2Vyc1srci5kYXRhc2V0LmldOyBpZighbSkgcmV0dXJuOwogICAgICBtYXAuc2V0VmlldyhtLmdldExhdExuZygpLDE2KTsgbS5vcGVuUG9wdXAoKTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RwaC1tYXAnKS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J2NlbnRlcid9KTsKICAgIH0pOwogIH0pOwogIHZhciB0b3Q9bGlzdC5yZWR1Y2UoZnVuY3Rpb24oYSx4KXtyZXR1cm4gYSt4LmNudDt9LDApOwogIHNldCgnc3RhdHVzJywgbGlzdC5sZW5ndGgudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+qwnCDri6jsp4Agwrcg6rGw656YICcrdG90LnRvTG9jYWxlU3RyaW5nKCdrby1LUicpKyfqsbQnCiAgICAgICsgKHBwcy5sZW5ndGg/ICcgwrcg7Y+J64u56rCAICcrbWFuKGxvKSsnficrbWFuKGhpKSA6ICcnKSk7Cn0KZnVuY3Rpb24gaW5pdCgpewogIG1hcD1MLm1hcCgndHBoLW1hcCcse3Njcm9sbFdoZWVsWm9vbTpmYWxzZX0pLnNldFZpZXcoWzM3LjU1LDEyNy4wXSwxMSk7CiAgTC50aWxlTGF5ZXIoJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgIHttYXhab29tOjE5LCBhdHRyaWJ1dGlvbjonJmNvcHk7IE9wZW5TdHJlZXRNYXAnfSkuYWRkVG8obWFwKTsKICBtYXAub24oJ2NsaWNrJyxmdW5jdGlvbigpe21hcC5zY3JvbGxXaGVlbFpvb20uZW5hYmxlKCk7fSk7CiAgbGF5ZXI9Y2x1c3Rlckdyb3VwKG1hbixmdW5jdGlvbih2KXtyZXR1cm4gY29sb3JGb3IodixDTE8sQ0hJKTt9KS5hZGRUbyhtYXApOwogIFsncmcnLCdhcmVhJywnc29ydCddLmZvckVhY2goZnVuY3Rpb24oaWQpe3ZhciBlPSQoaWQpOyBpZihlKSBlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScscmVuZGVyKTt9KTsKICByZW5kZXIoKTsKICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IG1hcC5pbnZhbGlkYXRlU2l6ZShmYWxzZSk7IHJlbmRlcigpOyB9LCAyNTApOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmdW5jdGlvbigpeyBtYXAuaW52YWxpZGF0ZVNpemUoZmFsc2UpOyB9KTsKfQoKLyog4pSA4pSAIOuMgOyLnOuztOuTnDog7KeA7JetIOyLnOyEuCAvIOyDgeyKucK37ZWY6529IC8g7LaU7J20IOKUgOKUgCAqLwp2YXIgc2NvcGU9Jyc7CnZhciBuYXY9e2xldmVsOidzaWRvJywgc2lkbzpudWxsLCByZWdpb246bnVsbCwgZG9uZzpudWxsfTsgICAvKiDrk5zrprTri6TsmrQg7IOB7YOcICovCgpmdW5jdGlvbiByYW5rUm93cygpeyByZXR1cm4gRC5yZWdpb25zLmZpbHRlcihmdW5jdGlvbihyKXsgcmV0dXJuICFzY29wZSB8fCByLm1ldHJvOyB9KTsgfQoKLyog7Iucwrfrj4Qg64uo7JyE66GcIOustuq4sCDigJQg6rGw656Y6rG07IiYIOqwgOykke2Pieq3oOydtOudvCDri6jsiJztj4nqt6Drs7Tri6Qg7KCV7ZmV7ZWY64ukICovCmZ1bmN0aW9uIHNpZG9Sb3dzKCl7CiAgdmFyIG09e307CiAgcmFua1Jvd3MoKS5mb3JFYWNoKGZ1bmN0aW9uKHIpewogICAgdmFyIGs9ci5zZHx8ci5yZzsKICAgIHZhciBvPW1ba118fChtW2tdPXtzZDprLGNudDowLHN1bTowLHBzdW06MCxwY250OjAsbjowfSk7CiAgICBvLmNudCs9ci5jbnQ7IG8uc3VtKz1yLnBwKnIuY250OyBvLm4rKzsKICAgIGlmKHIuY2hnMyE9bnVsbCl7IG8ucHN1bSs9ci5jaGczKnIuY250OyBvLnBjbnQrPXIuY250OyB9CiAgfSk7CiAgcmV0dXJuIE9iamVjdC5rZXlzKG0pLm1hcChmdW5jdGlvbihrKXsKICAgIHZhciBvPW1ba107CiAgICByZXR1cm4ge25hbWU6by5zZCwgcHA6TWF0aC5yb3VuZChvLnN1bS9vLmNudCksIGNudDpvLmNudCwgbjpvLm4sCiAgICAgICAgICAgIGNoZzpvLnBjbnQ/IE1hdGgucm91bmQoby5wc3VtL28ucGNudCoxMCkvMTAgOiBudWxsfTsKICB9KS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIucHAtYS5wcDt9KTsKfQpmdW5jdGlvbiBjaGdIdG1sKGMpewogIGlmKGM9PW51bGwpIHJldHVybiAnJzsKICByZXR1cm4gJzxlbSBjbGFzcz0iJysoYz4wPyd1cCc6YzwwPydkbic6JycpKyciPicrKGM+MD8n4payJzpjPDA/J+KWvCc6J+KAlCcpKycgJytNYXRoLmFicyhjKSsnJTwvZW0+JzsKfQpmdW5jdGlvbiBjcnVtYigpewogIHZhciBoPSc8YnV0dG9uIGRhdGEtbHY9InNpZG8iPuyghOq1rTwvYnV0dG9uPic7CiAgaWYobmF2LnNpZG8pIGgrPSc8c3Bhbj7igLo8L3NwYW4+PGJ1dHRvbiBkYXRhLWx2PSJyZWdpb24iPicrbmF2LnNpZG8rJzwvYnV0dG9uPic7CiAgaWYobmF2LnJlZ2lvbikgaCs9JzxzcGFuPuKAujwvc3Bhbj48YnV0dG9uIGRhdGEtbHY9ImRvbmciPicrbmF2LnJlZ2lvbi5yZXBsYWNlKG5hdi5zaWRvLCcnKS50cmltKCkrJzwvYnV0dG9uPic7CiAgaWYobmF2LmRvbmcpIGgrPSc8c3Bhbj7igLo8L3NwYW4+PGI+JytuYXYuZG9uZysnPC9iPic7CiAgJCgnY3J1bWInKS5pbm5lckhUTUw9aDsKICAkKCdjcnVtYicpLnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbicpLmZvckVhY2goZnVuY3Rpb24oYil7CiAgICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICB2YXIgbHY9Yi5kYXRhc2V0Lmx2OwogICAgICBpZihsdj09PSdzaWRvJyl7bmF2PXtsZXZlbDonc2lkbycsc2lkbzpudWxsLHJlZ2lvbjpudWxsLGRvbmc6bnVsbH07fQogICAgICBlbHNlIGlmKGx2PT09J3JlZ2lvbicpe25hdi5sZXZlbD0ncmVnaW9uJztuYXYucmVnaW9uPW51bGw7bmF2LmRvbmc9bnVsbDt9CiAgICAgIGVsc2Uge25hdi5sZXZlbD0nZG9uZyc7bmF2LmRvbmc9bnVsbDt9CiAgICAgIGRyYXdSYW5rKCk7CiAgICB9KTsKICB9KTsKfQpmdW5jdGlvbiBkcmF3UmFuaygpewogIGNydW1iKCk7CiAgdmFyIHJvd3MsIHRpdGxlLCBjaGFydENhdHMsIGNoYXJ0VmFscywgbGVhZj1mYWxzZTsKICBpZihuYXYubGV2ZWw9PT0nc2lkbycpewogICAgcm93cz1zaWRvUm93cygpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4ge2tleTp4Lm5hbWUsbGFiZWw6eC5uYW1lLAogICAgICBzdWI6J+yLnOq1sOq1rCAnK3gubisn6rOzIMK3IOqxsOuemCAnK3guY250LnRvTG9jYWxlU3RyaW5nKCdrby1LUicpKyfqsbQnLHBwOngucHAsY2hnOnguY2hnfTt9KTsKICB9IGVsc2UgaWYobmF2LmxldmVsPT09J3JlZ2lvbicpewogICAgcm93cz1yYW5rUm93cygpLmZpbHRlcihmdW5jdGlvbihyKXtyZXR1cm4gKHIuc2R8fHIucmcpPT09bmF2LnNpZG87fSkKICAgICAgLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi5wcC1hLnBwO30pCiAgICAgIC5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHtrZXk6ci5yZyxsYWJlbDpyLnJnLnJlcGxhY2UobmF2LnNpZG8sJycpLnRyaW0oKXx8ci5yZywKICAgICAgICBzdWI6J+qxsOuemCAnK3IuY250LnRvTG9jYWxlU3RyaW5nKCdrby1LUicpKyfqsbQgwrcg67KV7KCV64+ZICcrKHIuZG9uZ3N8fFtdKS5sZW5ndGgrJ+qzsycsCiAgICAgICAgcHA6ci5wcCxjaGc6ci5jaGczfTt9KTsKICB9IGVsc2UgaWYobmF2LmxldmVsPT09J2RvbmcnKXsKICAgIHZhciByZWc9cmFua1Jvd3MoKS5maWx0ZXIoZnVuY3Rpb24ocil7cmV0dXJuIHIucmc9PT1uYXYucmVnaW9uO30pWzBdOwogICAgcm93cz0oKHJlZyYmcmVnLmRvbmdzKXx8W10pLm1hcChmdW5jdGlvbihkKXtyZXR1cm4ge2tleTpkLmRnLGxhYmVsOmQuZGcsCiAgICAgIHN1Yjon6rGw656YICcrZC5jbnQrJ+qxtCcscHA6ZC5wcCxjaGc6ZC5jaGd9O30pOwogIH0gZWxzZSB7CiAgICBsZWFmPXRydWU7CiAgICByb3dzPVtdOwogIH0KICBpZighbGVhZil7CiAgICB2YXIgdG9wPXJvd3Muc2xpY2UoMCwxOCk7CiAgICBzdGFja0NoYXJ0KCdyYW5rY2hhcnQnLCB0b3AubWFwKGZ1bmN0aW9uKHIpe3JldHVybiByLmxhYmVsO30pLAogICAgICBbe25hbWU6J+2PieuLueqwgCcsY2xzOidzMScsZGF0YTp0b3AubWFwKGZ1bmN0aW9uKHIpe3JldHVybiByLnBwO30pfV0sIG1hbik7CiAgICB2YXIgaD0nJzsKICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbihyLGkpewogICAgICBoKz0nPGRpdiBjbGFzcz0idHBoLXJvdyIgZGF0YS1rZXk9Iicrci5rZXkucmVwbGFjZSgvIi9nLCcnKSsnIj48ZGl2IGNsYXNzPSJyayI+JysoaSsxKSsnPC9kaXY+JwogICAgICAgICsnPGRpdiBjbGFzcz0ibm0iPjxiPicrci5sYWJlbCsnPC9iPjxzcGFuPicrci5zdWIrJzwvc3Bhbj48L2Rpdj4nCiAgICAgICAgKyc8ZGl2IGNsYXNzPSJwciI+JyttYW4oci5wcCkrY2hnSHRtbChyLmNoZykrJzwvZGl2PicKICAgICAgICArJzxkaXYgY2xhc3M9ImdvIj7igLo8L2Rpdj48L2Rpdj4nOwogICAgfSk7CiAgICAkKCdyYW5rbGlzdCcpLmlubmVySFRNTD1ofHwnPGRpdiBjbGFzcz0idHBoLXJvdyBsZWFmIj48ZGl2IGNsYXNzPSJubSI+642w7J207YSw6rCAIOyXhuyKteuLiOuLpC48L2Rpdj48L2Rpdj4nOwogICAgJCgncmFua2xpc3QnKS5xdWVyeVNlbGVjdG9yQWxsKCcudHBoLXJvd1tkYXRhLWtleV0nKS5mb3JFYWNoKGZ1bmN0aW9uKHJvdyl7CiAgICAgIHJvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgICB2YXIgaz1yb3cuZGF0YXNldC5rZXk7CiAgICAgICAgaWYobmF2LmxldmVsPT09J3NpZG8nKXsKICAgICAgICAgIC8qIOyLnOuPhOulvCDqs6DrpbTrqbQg6re4IOyLnOuPhCDsoITsmqkg7Y6Y7J207KeA66GcIOuztOuCuOuLpC4KICAgICAgICAgICAgIOyghOq1rSDtjpjsnbTsp4Ag7ZWY64KY7JeQIDjrp4zsl6wg6rG07J2EIOuLpCDsi6TsnYQg7IiYIOyXhuyWtCDsi5zrj4Trs4TroZwg64KY64igIOuSgOuLpC4gKi8KICAgICAgICAgIGxvY2F0aW9uLmhyZWY9Jy/rtoDrj5nsgrAtJytlbmNvZGVVUklDb21wb25lbnQoaykrJy8nOyByZXR1cm47CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYobmF2LmxldmVsPT09J3JlZ2lvbicpeyBuYXYucmVnaW9uPWs7IG5hdi5sZXZlbD0nZG9uZyc7IH0KICAgICAgICBlbHNlIHsgbmF2LmRvbmc9azsgc2hvd0RlYWxzKCk7IHJldHVybjsgfQogICAgICAgIGRyYXdSYW5rKCk7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtcGFuZT0icmFuayJdJykuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidzdGFydCd9KTsKICAgICAgfSk7CiAgICB9KTsKICB9Cn0KLyog67KV7KCV64+ZIO2BtOumrSDihpIg7Iuk7KCcIOqxsOuemCDrgrTsl60gKi8KZnVuY3Rpb24gc2hvd0RlYWxzKCl7CiAgY3J1bWIoKTsKICB2YXIgbGlzdD1ELml0ZW1zLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4geC5yZz09PW5hdi5yZWdpb24gJiYgeC5kZz09PW5hdi5kb25nO30pOwogIHZhciBkZWFscz1bXTsKICBsaXN0LmZvckVhY2goZnVuY3Rpb24oYyl7IChjLmRzfHxbXSkuZm9yRWFjaChmdW5jdGlvbih6KXsKICAgIGRlYWxzLnB1c2goe246Yy5uLGE6ei5hLGY6ei5mLHA6ei5wLGQ6ei5kfSk7IH0pOyB9KTsKICBkZWFscy5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuZDxiLmQ/MTotMTt9KTsKICB2YXIgaD0nJzsKICBkZWFscy5zbGljZSgwLDEyMCkuZm9yRWFjaChmdW5jdGlvbih6KXsKICAgIGgrPSc8ZGl2IGNsYXNzPSJ0cGgtZGVhbCI+PHNwYW4gY2xhc3M9ImQiPicrei5kKyc8L3NwYW4+JwogICAgICArJzxzcGFuIGNsYXNzPSJuIj4nK3oubisnPC9zcGFuPicKICAgICAgKyc8c3BhbiBjbGFzcz0iYSI+Jyt6LmErJ+OOoTwvc3Bhbj4nCiAgICAgICsnPHNwYW4gY2xhc3M9ImYiPicrKHouZj96LmYrJ+y4tSc6JycpKyc8L3NwYW4+JwogICAgICArJzxzcGFuIGNsYXNzPSJwIj4nK2Vvayh6LnApKyc8L3NwYW4+PC9kaXY+JzsKICB9KTsKICAkKCdyYW5rbGlzdCcpLmlubmVySFRNTCA9IGggfHwKICAgICc8ZGl2IGNsYXNzPSJ0cGgtcm93IGxlYWYiPjxkaXYgY2xhc3M9Im5tIj7snbQg67KV7KCV64+Z7J2AIOyngOuPhCDtkZzrs7go7IOB7JyEIOuLqOyngCnsl5Ag7JeG7Ja0IOqwnOuzhCDrgrTsl63snbQg7JeG7Iq164uI64ukLiDsnIQg7Ya16rOE64qUIOyghOyImCDquLDspIDsnoXri4jri6QuPC9kaXY+PC9kaXY+JzsKICAkKCdyYW5rY2hhcnQnKS5pbm5lckhUTUw9Jyc7Cn0KdmFyIG1vdmVTcGFuPTM7ICAgLyog7Iuc6rWw6rWsIO2VnCDri6wg7ZGc67O47J2AIOyImOyLrSDqsbTsnbTrnbwg6riw67O47J2AIDPqsJzsm5Qg66y27J2M7J2064ukICovCmZ1bmN0aW9uIG1vdmVSb3cocixpLGZpZWxkKXsKICB2YXIgdj1yW2ZpZWxkXTsKICByZXR1cm4gJzxkaXYgY2xhc3M9InRwaC1yb3cgbGVhZiI+PGRpdiBjbGFzcz0icmsiPicrKGkrMSkrJzwvZGl2PicKICAgICsnPGRpdiBjbGFzcz0ibm0iPjxiPicrci5yZysnPC9iPjxzcGFuPu2PieuLuSAnK21hbihyLnBwKSsnIMK3IOqxsOuemCAnK3IuY250KyfqsbQ8L3NwYW4+PC9kaXY+JwogICAgKyc8ZGl2IGNsYXNzPSJwciI+PGVtIGNsYXNzPSInKyh2PjA/J3VwJzonZG4nKSsnIj4nKyh2PjA/JysnOicnKSt2KyclPC9lbT48L2Rpdj48L2Rpdj4nOwp9CmZ1bmN0aW9uIGRyYXdNb3ZlKCl7CiAgdmFyIGZpZWxkID0gbW92ZVNwYW49PT0zPyAnY2hnMycgOiAnY2hnJzsKICAvKiDrs4Drj5nrpaDsnYAg7YyM7J207I2s7JeQ7IScIOuyleygleuPmSDri6jsnITroZwg66y27Ja0IOuCtOqzoCwg6re86rGw6rCAIOyWh+ycvOuptCBudWxsIOuhnCDruYTsm4wg65GU64ukLgogICAgIOyXrOq4sOyEnOuKlCDqsJLsnbQg7J6I64qUIOyngOyXreunjCDspIQg7IS47Jqw66m0IOuQnOuLpC4gKi8KICB2YXIgcm93cz1ELnJlZ2lvbnMuZmlsdGVyKGZ1bmN0aW9uKHIpe3JldHVybiByW2ZpZWxkXSE9bnVsbDt9KTsKICB2YXIgdXA9cm93cy5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYltmaWVsZF0tYVtmaWVsZF07fSkuc2xpY2UoMCwxMCk7CiAgdmFyIGRuPXJvd3Muc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGFbZmllbGRdLWJbZmllbGRdO30pLnNsaWNlKDAsMTApOwogIHZhciBub25lPSc8ZGl2IGNsYXNzPSJ0cGgtcm93IGxlYWYiPjxkaXYgY2xhc3M9Im5tIj7ruYTqtZDtlaAg642w7J207YSw6rCAIOyXhuyKteuLiOuLpC48L2Rpdj48L2Rpdj4nOwogICQoJ3VwJykuaW5uZXJIVE1MPXVwLm1hcChmdW5jdGlvbihyLGkpe3JldHVybiBtb3ZlUm93KHIsaSxmaWVsZCk7fSkuam9pbignJyl8fG5vbmU7CiAgJCgnZG4nKS5pbm5lckhUTUw9ZG4ubWFwKGZ1bmN0aW9uKHIsaSl7cmV0dXJuIG1vdmVSb3cocixpLGZpZWxkKTt9KS5qb2luKCcnKXx8bm9uZTsKICBzZXQoJ21vdmVoaW50JywgKG1vdmVTcGFuPT09Mz8gKEQud2luM3x8JzPqsJzsm5Qg67mE6rWQIOu2iOqwgCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBELnByZXYrJyDihpIgJytELmN1cisnICjtkZzrs7jsnbQg7JaH7Iq164uI64ukKScpCiAgICAgICsgJyDCtyDrspXsoJXrj5nrs4Qg7KSR7JyEIO2PieuLueqwgCDrs4Drj5nsnYQg6rGw656Y6rG07IiY66GcIOqwgOykkSDtj4nqt6Agwrcg6re86rGw6rCAIOy2qeu2hO2VnCAnCiAgICAgICsgcm93cy5sZW5ndGggKyAn6rOz66eMIO2RnOyLnCcpOwoKICAvKiDqsbDrnpjrn4kg6riJ67OAIOKAlCDsi6Dqs6DqsIAg64ukIOuTpOyWtOyYqCDri6zrgbzrpqzrp4wg67mE6rWQ7ZWc64ukICovCiAgdmFyIHZvbD1ELnJlZ2lvbnMuZmlsdGVyKGZ1bmN0aW9uKHIpe3JldHVybiByLnZvbDMhPW51bGw7fSk7CiAgc2V0KCd2b2xoaW50JywgRC52YmFzZSAmJiBELnZjdXIKICAgID8gRC52YmFzZSsnIOKGkiAnK0QudmN1cisnIOqxsOuemOqxtOyImCDrs4DtmZQgwrcg7Iug6rOg6rCAIOuqqOuRkCDrk6TslrTsmKgg64us64G866as66eMIOu5hOq1kO2VqeuLiOuLpCcKICAgIDogJ+u5hOq1kO2VoCDsoJXsgrAg7JmE66OM7JuU7J20IOyVhOyngSDrtoDsobHtlanri4jri6QnKTsKICB2YXIgdnU9dm9sLnNsaWNlKCkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBiLnZvbDMtYS52b2wzO30pLnNsaWNlKDAsOCk7CiAgdmFyIHZkPXZvbC5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS52b2wzLWIudm9sMzt9KS5zbGljZSgwLDgpOwogIHZhciB2cm93PWZ1bmN0aW9uKHIsaSl7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9InRwaC1yb3cgbGVhZiI+PGRpdiBjbGFzcz0icmsiPicrKGkrMSkrJzwvZGl2PicKICAgICAgKyc8ZGl2IGNsYXNzPSJubSI+PGI+JytyLnJnKyc8L2I+PHNwYW4+JytyLnZiY250KyfqsbQg4oaSICcrci52Y250KyfqsbQ8L3NwYW4+PC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9InByIj48ZW0gY2xhc3M9IicrKHIudm9sMz4wPyd1cCc6J2RuJykrJyI+Jysoci52b2wzPjA/JysnOicnKStyLnZvbDMrJyU8L2VtPjwvZGl2PjwvZGl2Pic7CiAgfTsKICAkKCd2b2x1cCcpLmlubmVySFRNTD12dS5tYXAodnJvdykuam9pbignJyl8fG5vbmU7CiAgJCgndm9sZG4nKS5pbm5lckhUTUw9dmQubWFwKHZyb3cpLmpvaW4oJycpfHxub25lOwoKICAvKiDsi6Dqs6DqsIAg6rK97IugICovCiAgdmFyIGg9Jyc7CiAgKEQuaGl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgsaSl7CiAgICBoKz0nPGRpdiBjbGFzcz0idHBoLXJvdyBsZWFmIj48ZGl2IGNsYXNzPSJyayI+JysoaSsxKSsnPC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9Im5tIj48Yj4nK3gubisnIDxzbWFsbCBzdHlsZT0iY29sb3I6dmFyKC0tZmFpbnQpO2ZvbnQtd2VpZ2h0OjQwMCI+Jyt4LmErJ+OOoTwvc21hbGw+PC9iPicKICAgICAgKyc8c3Bhbj4nK3gucmcrJyAnK3guZGcrJyDCtyAnK3guZCsnIMK3IOyngeyghCDstZzqs6AgJytlb2soeC5vbGQpKyc8L3NwYW4+PC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9InByIj4nK2Vvayh4LnApKyc8ZW0gY2xhc3M9InVwIj4rJyt4LnVwKyclPC9lbT48L2Rpdj48L2Rpdj4nOwogIH0pOwogICQoJ2hpJykuaW5uZXJIVE1MPWh8fCc8ZGl2IGNsYXNzPSJ0cGgtcm93IGxlYWYiPjxkaXYgY2xhc3M9Im5tIj7quLDspIDsm5Tsl5Ag7Iug6rOg6rCAIOqyveyLoCDqsbDrnpjqsIAg7JeG7Iq164uI64ukLjwvZGl2PjwvZGl2Pic7CiAgdmFyIGFyb3c9ZnVuY3Rpb24oeCxpKXsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0idHBoLXJvdyBsZWFmIj48ZGl2IGNsYXNzPSJyayI+JysoaSsxKSsnPC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9Im5tIj48Yj4nK3gucmcrJzwvYj48c3Bhbj7stZzqt7wgMuqwnOyblCAnK3gubi50b0xvY2FsZVN0cmluZygna28tS1InKSsn6rG0IOykkSAnCiAgICAgICt4LmMudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+qxtDwvc3Bhbj48L2Rpdj4nCiAgICAgICsnPGRpdiBjbGFzcz0icHIiPicreC5yYXRlKyclPC9kaXY+PC9kaXY+JzsKICB9OwogICQoJ2RpcmVjdCcpLmlubmVySFRNTD0oRC5kaXJlY3R8fFtdKS5tYXAoYXJvdykuam9pbignJyl8fG5vbmU7CiAgJCgnY29ycCcpLmlubmVySFRNTD0oRC5jb3JwfHxbXSkubWFwKGFyb3cpLmpvaW4oJycpfHxub25lOwogIGlmKEQuYWN0b3JUb3QgJiYgRC5hY3RvclRvdC5uKXsKICAgIHZhciB0PUQuYWN0b3JUb3Q7CiAgICBzZXQoJ2FjdGhpbnQnLCfstZzqt7wgMuqwnOyblCDsoITqta0gJyt0Lm4udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+qxtCDquLDspIAgwrcg7KeB6rGw656YICcKICAgICAgKyh0LmQvdC5uKjEwMCkudG9GaXhlZCgxKSsnJSDCtyDrspXsnbjCt+qzteqztSDrp6TsiJggJysodC5jL3QubioxMDApLnRvRml4ZWQoMSkrJyUnKTsKICB9CiAgJCgnaGlyYW5rJykuaW5uZXJIVE1MPShELmhpUmFua3x8W10pLm1hcChmdW5jdGlvbih4LGkpewogICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJ0cGgtcm93IGxlYWYiPjxkaXYgY2xhc3M9InJrIj4nKyhpKzEpKyc8L2Rpdj4nCiAgICAgICsnPGRpdiBjbGFzcz0ibm0iPjxiPicreC5yZysnPC9iPjxzcGFuPuy1nOq3vCAy6rCc7JuUIOqxsOuemCDspJEgJyt4LnJhdGUrJyXqsIAg7KeB7KCEIOy1nOqzoOqwgCDqsr3si6A8L3NwYW4+PC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9InByIj4nK3gubisn6rG0PC9kaXY+PC9kaXY+JzsKICB9KS5qb2luKCcnKXx8bm9uZTsKCiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc3Bhbl0nKS5mb3JFYWNoKGZ1bmN0aW9uKGIpewogICAgYi5vbmNsaWNrPWZ1bmN0aW9uKCl7CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXNwYW5dJykuZm9yRWFjaChmdW5jdGlvbih4KXt4LmNsYXNzTGlzdC5yZW1vdmUoJ29uJyk7fSk7CiAgICAgIGIuY2xhc3NMaXN0LmFkZCgnb24nKTsgbW92ZVNwYW49K2IuZGF0YXNldC5zcGFuOyBkcmF3TW92ZSgpOwogICAgfTsKICB9KTsKfQpmdW5jdGlvbiBkcmF3VHJlbmQoKXsKICBpZihELnRyZW5kICYmIEQudHJlbmQubGVuZ3RoPjEpewogICAgbGluZUNoYXJ0KCd0cmVuZCcsIEQudHJlbmQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm0uc2xpY2UoMikrKHQuc2V0dGxlZD8nJzonKicpO30pLAogICAgICBbe25hbWU6J+yLpOqxsOuemCDspJHsnIQg7Y+J64u56rCAJyxjbHM6J3MxJyxkYXRhOkQudHJlbmQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBwO30pfSwKICAgICAgIHtuYW1lOifqsIDqsqnsp4DsiJgo6rGw656Y6rWs7ISxIOuztOyglSknLGNsczonczInLGRhdGE6RC50cmVuZC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR4O30pfV0sIG1hbik7CiAgICBzdGFja0NoYXJ0KCd2b2wnLCBELnRyZW5kLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5tLnNsaWNlKDIpKyh0LnNldHRsZWQ/Jyc6JyonKTt9KSwKICAgICAgW3tuYW1lOifqsbDrnpjrn4knLGNsczonczMnLGRhdGE6RC50cmVuZC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuY250O30pfV0sCiAgICAgIGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKG4pLnRvTG9jYWxlU3RyaW5nKCdrby1LUicpKyfqsbQnO30pOwogIH0KICBpZihELmJhbmRzICYmIEQuYmFuZHMubGVuZ3RoKQogICAgc3RhY2tDaGFydCgnYmFuZCcsIEQuYmFuZHMubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBiLmI7fSksCiAgICAgIFt7bmFtZTon7Y+J64u56rCAJyxjbHM6J3MzJyxkYXRhOkQuYmFuZHMubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBiLnBwO30pfV0sIG1hbik7CiAgLyog7KeA7JetIMOXIOuptOyggeuMgCDqtZDssKjtkZwgKi8KICBpZihELmNyb3NzICYmIEQuY3Jvc3MubGVuZ3RoKXsKICAgIHZhciBuYW1lcz1ELmJhbmROYW1lc3x8W107CiAgICB2YXIgaD0nPHRoZWFkPjx0cj48dGg+7KeA7JetPC90aD4nK25hbWVzLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gJzx0aD4nK2IrJzwvdGg+Jzt9KS5qb2luKCcnKSsnPC90cj48L3RoZWFkPjx0Ym9keT4nOwogICAgRC5jcm9zcy5mb3JFYWNoKGZ1bmN0aW9uKHIpewogICAgICBoKz0nPHRyPjx0ZD4nK3IucmcrJzwvdGQ+JytyLnZhbHMubWFwKGZ1bmN0aW9uKHYpewogICAgICAgIHJldHVybiAnPHRkPicrKHY9PW51bGw/J+KAlCc6bWFuKHYpKSsnPC90ZD4nO30pLmpvaW4oJycpKyc8L3RyPic7CiAgICB9KTsKICAgICQoJ2Nyb3NzJykuaW5uZXJIVE1MPWgrJzwvdGJvZHk+JzsKICB9Cn0KZnVuY3Rpb24gaW5pdFRhYnMoKXsKICB2YXIgZHJhd249e307CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRwaC10YWInKS5mb3JFYWNoKGZ1bmN0aW9uKGIpewogICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRwaC10YWInKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnJlbW92ZSgnb24nKTt9KTsKICAgICAgYi5jbGFzc0xpc3QuYWRkKCdvbicpOwogICAgICB2YXIgdD1iLmRhdGFzZXQudDsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtcGFuZV0nKS5mb3JFYWNoKGZ1bmN0aW9uKHApeyBwLmhpZGRlbiA9IHAuZGF0YXNldC5wYW5lIT09dDsgfSk7CiAgICAgIGlmKCFkcmF3blt0XSl7CiAgICAgICAgaWYodD09PSdyYW5rJykgZHJhd1JhbmsoKTsKICAgICAgICBpZih0PT09J21vdmUnKSBkcmF3TW92ZSgpOwogICAgICAgIGlmKHQ9PT0ndHJlbmQnKSBkcmF3VHJlbmQoKTsKICAgICAgICBkcmF3blt0XT0xOwogICAgICB9CiAgICAgIGlmKHQ9PT0nbWFwJykgc2V0VGltZW91dChmdW5jdGlvbigpeyBtYXAuaW52YWxpZGF0ZVNpemUoZmFsc2UpOyB9LDUwKTsKICAgIH0pOwogIH0pOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXNjb3BlXScpLmZvckVhY2goZnVuY3Rpb24oYil7CiAgICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zY29wZV0nKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnJlbW92ZSgnb24nKTt9KTsKICAgICAgYi5jbGFzc0xpc3QuYWRkKCdvbicpOyBzY29wZT1iLmRhdGFzZXQuc2NvcGU7IGRyYXdSYW5rKCk7CiAgICB9KTsKICB9KTsKfQp2YXIgcm9vdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudHBoLXBhZ2UnKTsKaW5pdFRoZW1lKHJvb3QpOwppbml0RmluZGVyKCk7CmluaXRUYWJzKCk7CmlmKHdpbmRvdy5MKSBpbml0KCk7IGVsc2Ugd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLGluaXQpOwo=