청약홈 공고 기준 · 2026-10-01 갱신 · 접수 예정·진행 중 3건
· 날짜순 청약 일정 보기 →
인천계양지구 A6블록 공공분양주택(본청약)인천광역시 계양구 · 663세대 · 접수 중 ~10-02주변 신축보다 17% 높음
2,910만평당(전용)
›
광명 시티프라디움 에듀하임경기도 광명시 · 426세대 · 접수 중 ~10-02주변 신축보다 12% 낮음
4,617만평당(전용)
›
인천계양 A17블록 신혼희망타운(공공분양)(본청약)인천광역시 계양구 · 309세대 · 접수 예정 D-18주변 신축보다 21% 높음
3,007만평당(전용)
›
업성 푸르지오 레이크시티충청남도 천안시 · 1,460세대 · 마감 주변 신축보다 24% 높음
2,373만평당(전용)
›
풍무역세권 수자인 그라센트 2차경기도 김포시 · 639세대 · 마감 주변 신축보다 7% 높음
2,767만평당(전용)
›
라클라체자이드파인서울특별시 동작구 · 369세대 · 마감 주변 신축보다 28% 높음
10,058만평당(전용)
›
북전주 광신프로그레스전북특별자치도 전주시 · 352세대 · 마감 주변 신축보다 40% 높음
1,740만평당(전용)
›
르네오션 고성 퍼스트뷰강원특별자치도 고성군 · 263세대 · 마감 주변 신축보다 60% 높음 참고
1,879만평당(전용)
›
온천장 하늘채 엘리시움부산광역시 동래구 · 129세대 · 마감 주변 신축보다 6% 높음
3,194만평당(전용)
›
야목역 서희스타힐스 그랜드힐경기도 화성시 · 241세대 · 마감 주변 신축보다 28% 높음 참고
2,241만평당(전용)
›
옥정중앙역 대방 디에트르(중상1, 복합1BL)경기도 양주시 · 2,807세대 · 마감 주변 신축보다 26% 높음
2,207만평당(전용)
›
청주 푸르지오 씨엘리체충청북도 청주시 · 1,351세대 · 마감 주변 신축보다 20% 높음
1,942만평당(전용)
›
도안자이 센텀리체 1단지대전광역시 유성구 · 946세대 · 마감 주변 신축과 비슷
3,055만평당(전용)
›
도안자이 센텀리체 2단지대전광역시 유성구 · 834세대 · 마감 주변 신축과 비슷 참고
3,057만평당(전용)
›
더샵 안동더퍼스트경상북도 안동시 · 493세대 · 마감 주변 신축보다 34% 높음 참고
1,911만평당(전용)
›
아산경남아너스빌 랜드마크49충청남도 아산시 · 467세대 · 마감 주변 신축보다 63% 높음
1,756만평당(전용)
›
용인 고림 동문 디 이스트경기도 용인시 · 350세대 · 마감 주변 신축보다 24% 높음
2,957만평당(전용)
›
엘리프 창원경상남도 창원시 · 349세대 · 마감 주변 신축보다 36% 낮음
2,317만평당(전용)
›
골드클래스 시그니처전북특별자치도 전주시 · 341세대 · 마감 주변 신축보다 7% 낮음
2,087만평당(전용)
›
힐스테이트 평거 센트럴경상남도 진주시 · 261세대 · 마감 주변 신축보다 51% 높음 참고
2,820만평당(전용)
›
문수로 라티에르 673울산광역시 남구 · 199세대 · 마감 주변 신축보다 22% 높음
3,565만평당(전용)
›
경기광주역 롯데캐슬 시그니처 1단지경기도 광주시 · 1,077세대 · 마감 주변 신축보다 28% 높음
3,394만평당(전용)
›
강릉 우미 린 더 프리미어강원특별자치도 강릉시 · 772세대 · 마감 주변 신축보다 35% 높음 참고
2,088만평당(전용)
›
고덕신도시 아테라 A-63블록 공공분양주택경기도 평택시 · 630세대 · 마감 주변 신축보다 7% 낮음
2,107만평당(전용)
›
인천가정2지구 B2블록 공공분양주택(후속사업)인천광역시 서구 · 308세대 · 마감 주변 신축과 비슷
2,460만평당(전용)
›
공덕역자이르네서울특별시 마포구 · 177세대 · 마감 주변 신축과 비슷
9,441만평당(전용)
›
동탄 그웬 160 (동탄2 B11BL)경기도 화성특례시 · 160세대 · 마감
2,645만평당(전용)
›
두산위브더제니스 구미(조합원취소분)경상북도 구미시 · 63세대 · 마감 주변 신축보다 51% 높음
2,082만평당(전용)
›
기장 이진캐스빌 포레부산광역시 기장군 · 138세대 · 마감 주변 신축보다 51% 높음 참고
2,226만평당(전용)
›
PH159제주특별자치도 제주시 · 49세대 · 마감
2,134만평당(전용)
›
소제지구 A3BL 중흥S-클래스 우미린전라남도 여수시 · 1,095세대 · 마감 주변 신축보다 14% 높음 참고
1,852만평당(전용)
›
e편한세상 부천 어반스퀘어경기도 부천시 · 897세대 · 마감 주변 신축보다 83% 높음
4,735만평당(전용)
›
소제지구 A4BL 중흥S-클래스 우미린전라남도 여수시 · 584세대 · 마감 주변 신축보다 18% 높음 참고
1,911만평당(전용)
›
천안 동문 디 이스트 파크시티충청남도 천안시 · 500세대 · 마감 주변 신축보다 57% 높음
2,266만평당(전용)
›
천안 휴먼빌 퍼스트시티(2회차)충청남도 천안시 · 309세대 · 마감 주변 신축보다 16% 높음
2,060만평당(전용)
›
파주금촌 금호어울림(조합원 취소분)경기도 파주시 · 60세대 · 마감 주변 신축보다 6% 높음 참고
2,204만평당(전용)
›
더샵 관저아르테대전광역시 서구 · 951세대 · 마감 주변 신축보다 30% 높음
2,438만평당(전용)
›
엘리프 성성호수공원 2BL충청남도 천안시 · 560세대 · 마감
2,222만평당(전용)
›
용인 양지 서희스타힐스 하이뷰경기도 용인시 · 547세대 · 마감 주변 신축보다 36% 높음 참고
2,248만평당(전용)
›
엘리프 성성호수공원 1BL충청남도 천안시 · 546세대 · 마감
2,378만평당(전용)
›
울산신복역 비스타 메트로울산광역시 남구 · 481세대 · 마감 주변 신축보다 22% 높음 참고
3,095만평당(전용)
›
더 리치먼드 미아서울특별시 강북구 · 99세대 · 마감 주변 신축보다 7% 낮음
5,329만평당(전용)
›
더샵 시에르네(조합원 취소분)울산광역시 중구 · 36세대 · 마감 주변 신축과 비슷
2,922만평당(전용)
›
공주월송 진아레히충청남도 공주시 · 811세대 · 마감 주변 신축보다 7% 높음 참고
1,665만평당(전용)
›
메트로시티 자산 데시앙경상남도 창원시 · 739세대 · 마감 주변 신축보다 13% 높음
1,996만평당(전용)
›
고덕국제신도시 수자인풍경채 1단지경기도 평택시 · 670세대 · 마감 주변 신축과 비슷
2,152만평당(전용)
›
상주북천 하늘채 파크원경상북도 상주시 · 466세대 · 마감 주변 신축보다 16% 높음 참고
1,766만평당(전용)
›
고덕국제신도시 수자인풍경채 2단지경기도 평택시 · 456세대 · 마감 주변 신축과 비슷
2,152만평당(전용)
›
덕진 거제의 봄 우선분양전환 후 공가세대경상남도 거제시 · 376세대 · 마감 주변 신축보다 17% 낮음 참고
697만평당(전용)
›
안양 에버포레 자연앤 e편한세상(A2BL)경기도 안양시 · 344세대 · 마감 주변 신축보다 46% 낮음 참고
3,116만평당(전용)
›
더 플래티넘 파인애비뉴경기도 평택시 · 321세대 · 마감 주변 신축보다 91% 높음 참고
2,110만평당(전용)
›
안양 에버포레 자연앤 e편한세상(A1BL)경기도 안양시 · 60세대 · 마감 주변 신축보다 36% 낮음 참고
3,675만평당(전용)
›
더샵 중앙로역센터폴대구광역시 중구 · 299세대 · 마감 주변 신축보다 30% 높음
3,076만평당(전용)
›
왕숙 아테라 공공분양주택(본청약)경기도 남양주시 · 812세대 · 마감 주변 신축보다 27% 낮음
2,719만평당(전용)
›
남양주왕숙2 A-3블록 공공분양주택(본청약)경기도 남양주시 · 686세대 · 마감 주변 신축보다 21% 낮음
2,952만평당(전용)
›
힐스테이트 구월아트파크인천광역시 남동구 · 496세대 · 마감 주변 신축보다 39% 높음
3,551만평당(전용)
›
고양 창릉 우미 린 그레니티 공공분양주택(본청약)경기도 고양시 · 494세대 · 마감 주변 신축보다 8% 낮음 참고
3,129만평당(전용)
›
청주 한양립스 더 벨루체충청북도 청주시 · 417세대 · 마감 주변 신축보다 13% 높음
2,009만평당(전용)
›
시흥하중지구 A1블록 신혼희망타운(공공분양)(본청약)경기도 시흥시 · 400세대 · 마감 주변 신축과 비슷 참고
2,542만평당(전용)
›
인천계양 A9블록 신혼희망타운(공공분양)(본청약)인천광역시 계양구 · 317세대 · 마감 주변 신축보다 19% 높음
2,957만평당(전용)
›
두산위브 트리니뷰 구명역부산광역시 북구 · 288세대 · 마감 주변 신축보다 32% 높음
2,952만평당(전용)
›
중앙하이츠 원종역경기도 부천시 · 78세대 · 마감 주변 신축보다 28% 높음 참고
2,626만평당(전용)
›
더샵 송도그란테르 G5-1블록인천광역시 연수구 · 853세대 · 마감 주변 신축보다 24% 높음
5,103만평당(전용)
›
더샵 송도그란테르 G5-11블록인천광역시 연수구 · 318세대 · 마감 주변 신축보다 17% 높음
4,821만평당(전용)
›
더샵 송도그란테르 G5-6블록인천광역시 연수구 · 100세대 · 마감 주변 신축보다 27% 높음
5,231만평당(전용)
›
더샵 송도그란테르 G5-5블록인천광역시 연수구 · 97세대 · 마감 주변 신축보다 25% 높음
5,131만평당(전용)
›
더샵 송도그란테르 G5-4블록인천광역시 연수구 · 91세대 · 마감 주변 신축보다 22% 높음
5,013만평당(전용)
›
더샵 송도그란테르 G5-3블록인천광역시 연수구 · 85세대 · 마감 주변 신축보다 23% 높음
5,066만평당(전용)
›
식사 푸르지오 파크센트(조합원 취소분)경기도 고양시 · 23세대 · 마감 주변 신축보다 14% 높음
3,116만평당(전용)
›
검암역자이르네인천광역시 서구 · 601세대 · 마감 주변 신축보다 27% 높음 참고
2,295만평당(전용)
›
써밋 더힐서울특별시 동작구 · 432세대 · 마감 주변 신축보다 43% 높음
12,270만평당(전용)
›
아크로 리버스카이서울특별시 동작구 · 285세대 · 마감 주변 신축보다 41% 높음
10,687만평당(전용)
›
오남역 서희스타힐스 여의재 3단지경기도 남양주시 · 117세대 · 마감 주변 신축보다 59% 높음 참고
2,911만평당(전용)
›
동래사적공원 오네뜨부산광역시 동래구 · 110세대 · 마감 주변 신축보다 10% 낮음
2,531만평당(전용)
›
해운대 마티안 디 에디션부산광역시 해운대구 · 99세대 · 마감 주변 신축과 비슷
3,915만평당(전용)
›
엘리프 역곡경기도 부천시 · 44세대 · 마감 주변 신축보다 16% 높음
3,693만평당(전용)
›
힐스테이트 시흥더클래스경기도 시흥시 · 430세대 · 마감 주변 신축보다 41% 높음
3,426만평당(전용)
›
오정 해모로 스마트시티(조합원 취소분)경기도 부천시 · 48세대 · 마감 주변 신축보다 65% 높음 참고
3,157만평당(전용)
›
호반써밋 풍무Ⅱ김포 풍무역세권 · 961세대 · 마감
2,802만평당(전용)
›
더 리치먼드 리버센트 소양강원특별자치도 춘천시 · 178세대 · 마감 주변 신축보다 27% 높음
2,249만평당(전용)
›
수원역 아너스빌 타임원경기도 수원시 · 114세대 · 마감 주변 신축보다 18% 낮음
3,089만평당(전용)
›
익산 펠리피아전북특별자치도 익산시 · 572세대 · 마감 주변 신축보다 149% 높음 참고
1,626만평당(전용)
›
강릉 성보필리오 더센트럴힐즈강원특별자치도 강릉시 · 148세대 · 마감 주변 신축보다 31% 높음
2,389만평당(전용)
›
화성동탄2지구 C-27블록 공공분양주택경기도 화성시 · 473세대 · 마감 주변 신축보다 42% 낮음
2,356만평당(전용)
›
백석시그니처자이 1단지충청남도 천안시 · 854세대 · 마감 주변 신축보다 15% 높음
2,271만평당(전용)
›
평택 고덕 우미 린 프레스티지(Abc-36BL)경기도 평택시 · 743세대 · 마감 주변 신축과 비슷
2,201만평당(전용)
›
호반써밋 첨단3지구(A8BL)광주연구개발특구 첨단3지구 · 449세대 · 마감
1,925만평당(전용)
›
알티에로 광안부산광역시 수영구 · 366세대 · 마감 주변 신축보다 104% 높음
6,594만평당(전용)
›
백석시그니처자이 2단지충청남도 천안시 · 320세대 · 마감 주변 신축보다 11% 높음
2,271만평당(전용)
›
상무 양우내안에 퍼스트힐(조합원 취소분)광주광역시 서구 · 72세대 · 마감
3,020만평당(전용)
›
호반써밋 첨단3지구(A7BL)광주연구개발특구 첨단3지구 · 356세대 · 마감
2,114만평당(전용)
›
북오산자이 드포레경기도 오산시 · 1,517세대 · 마감 주변 신축보다 7% 높음
2,616만평당(전용)
›
고덕국제신도시 수자인하우스디경기도 평택시 · 403세대 · 마감 주변 신축과 비슷
2,155만평당(전용)
›
힐스테이트 양산더스카이 2단지경상남도 양산시 · 299세대 · 마감 주변 신축보다 28% 높음
2,051만평당(전용)
›
힐스테이트 양산더스카이 1단지경상남도 양산시 · 299세대 · 마감 주변 신축보다 29% 높음
2,060만평당(전용)
›
북서울자이 폴라리스(보류지)서울특별시 강북구 · 6세대 · 마감 주변 신축과 비슷
4,495만평당(전용)
›
더샵 검단레이크파크(AB22BL)인천광역시 서구 · 1,454세대 · 마감 주변 신축보다 33% 높음
2,555만평당(전용)
›
더샵 검단레이크파크(AB23BL)인천광역시 서구 · 1,403세대 · 마감 주변 신축보다 38% 높음
2,592만평당(전용)
›
펜타힐즈 더블유 1단지경상북도 경산시 · 1,712세대 · 마감 주변 신축보다 44% 높음
2,693만평당(전용)
›
김해 신문 센트럴 아이파크경상남도 김해시 · 1,379세대 · 마감 주변 신축보다 39% 높음
2,152만평당(전용)
›
장위 푸르지오 마크원서울특별시 성북구 · 1,032세대 · 마감 주변 신축보다 42% 높음
6,887만평당(전용)
›
에코델타시티 중흥S-클래스 리버시티부산광역시 강서구 · 501세대 · 마감 주변 신축보다 31% 높음
2,321만평당(전용)
›
밀양 수자인 더퍼스트 1단지 공공분양주택경상남도 밀양시 · 426세대 · 마감
1,557만평당(전용)
›
신문 대상 웰라움 라시엘경상남도 김해시 · 375세대 · 마감 주변 신축보다 53% 높음
1,945만평당(전용)
›
드파인 아르티아서울특별시 동작구 · 171세대 · 마감 주변 신축보다 38% 높음
10,862만평당(전용)
›
밀양 수자인 더퍼스트 2단지 공공분양주택경상남도 밀양시 · 114세대 · 마감
1,496만평당(전용)
›
양주 회천지구 A-8BL 로제비앙 엘가경기도 양주시 · 361세대 · 마감 주변 신축보다 11% 높음
2,060만평당(전용)
›
함안가야 휴니온아르떼경상남도 함안군 · 92세대 · 마감
1,867만평당(전용)
›
이천 서희스타힐스 SKY(조합원 취소분)경기도 이천시 · 8세대 · 마감 주변 신축보다 53% 높음
2,401만평당(전용)
›
신제주 동문디이스트 시그니처원Ⅱ제주특별자치도 제주시 · 196세대 · 마감 주변 신축보다 104% 높음 참고
4,590만평당(전용)
›
신제주 동문디이스트 시그니처원Ⅰ제주특별자치도 제주시 · 182세대 · 마감 주변 신축보다 104% 높음 참고
4,576만평당(전용)
›
트리븐 김해경상남도 김해시 · 398세대 · 마감 주변 신축보다 43% 높음
2,094만평당(전용)
›
천안 아이파크 시티 1단지(2회차)충청남도 천안시 · 234세대 · 마감 주변 신축보다 20% 높음
2,140만평당(전용)
›
군산 세경아파트 우선분양전환 후 잔여세대 전북특별자치도 군산시 · 153세대 · 마감 주변 신축보다 77% 낮음
346만평당(전용)
›
역곡지구 하우스토리(부천역곡지구 A-2BL) 신혼희망타운(공공분양)(본청약)경기도 부천시 · 976세대 · 마감
2,999만평당(전용)
›
e편한세상 분당 퍼스트빌리지(성남낙생지구 A-1BL) 신혼희망타운(공공분양)(본청약)경기도 성남시 · 933세대 · 마감
3,825만평당(전용)
›
군포대야미지구 A-1블록 6년 분양전환공공임대주택(본청약)경기도 군포시 · 377세대 · 마감 주변 신축보다 78% 낮음
540만평당(전용)
›
야목역 서희스타힐스 그랜드힐(조합원 취소분)경기도 화성시 · 83세대 · 마감 주변 신축보다 32% 높음 참고
2,310만평당(전용)
›
센텀 엘카사울산광역시 울주군 · 74세대 · 마감 주변 신축보다 13% 높음 참고
1,675만평당(전용)
›
동작 센트럴 동문 디 이스트서울특별시 동작구 · 72세대 · 마감 주변 신축보다 15% 높음
9,054만평당(전용)
›
고양창릉지구 S-3블록 이익공유형 분양주택(본청약)경기도 고양시 · 1,282세대 · 마감 주변 신축보다 20% 낮음 참고
2,802만평당(전용)
›
오산헤리티지자이 1단지경기도 오산시 · 1,069세대 · 마감 주변 신축보다 10% 높음
3,070만평당(전용)
›
고양창릉 S-4블록 공공분양주택(본청약)경기도 고양시 · 1,024세대 · 마감 주변 신축과 비슷 참고
3,517만평당(전용)
›
의왕역 SK VIEW경기도 의왕시 · 820세대 · 마감 주변 신축보다 60% 높음
4,886만평당(전용)
›
오산헤리티지자이 2단지경기도 오산시 · 714세대 · 마감 주변 신축보다 5% 높음
3,070만평당(전용)
›
호반써밋 풍무Ⅲ김포 풍무역세권 · 660세대 · 마감
2,966만평당(전용)
›
부산 장안지구 B-2블록 중흥S-클래스(본청약)부산광역시 기장군 · 488세대 · 마감
2,001만평당(전용)
›
업성 푸르지오 레이크시티 2단지충청남도 천안시 · 448세대 · 마감 주변 신축보다 18% 높음
2,241만평당(전용)
›
거제 푸르지오 마린피스경상남도 거제시 · 423세대 · 마감 주변 신축보다 30% 높음
2,006만평당(전용)
›
남양주 진접 서한이다음(S1BL)경기도 남양주시 · 361세대 · 마감 주변 신축보다 35% 높음 참고
2,476만평당(전용)
›
춘천 리버뷰 아이파크강원특별자치도 춘천시 · 262세대 · 마감 주변 신축보다 25% 높음 참고
2,210만평당(전용)
›
평택역 더센트럴45경기도 평택시 · 99세대 · 마감 주변 신축보다 44% 높음
2,325만평당(전용)
›
창원 한신더휴 메가센텀경상남도 창원시 · 1,139세대 · 마감 주변 신축보다 30% 높음
2,367만평당(전용)
›
이천 휴먼빌 클래스원경기도 이천시 · 536세대 · 마감 주변 신축보다 45% 높음
2,232만평당(전용)
›
월계 중흥S-클래스 리비에르서울특별시 노원구 · 135세대 · 마감 주변 신축보다 42% 높음
6,965만평당(전용)
›
역북 서희스타힐스 프라임시티(조합원 취소분)경기도 용인시 · 5세대 · 마감 주변 신축보다 6% 높음
2,548만평당(전용)
›
센트레빌 아스테리움 거제경상남도 거제시 · 1,307세대 · 마감 주변 신축보다 153% 높음
2,063만평당(전용)
›
아산테크노밸리 더원 7차 (Ab4BL)충청남도 아산시 · 622세대 · 마감
1,657만평당(전용)
›
리쉐스302강원특별자치도 강릉시 · 302세대 · 마감 주변 신축과 비슷
2,034만평당(전용)
›
더샵 트리센트부산광역시 남구 · 156세대 · 마감 주변 신축보다 24% 높음
3,331만평당(전용)
›
수원당수지구 A5블록 신혼희망타운(공공분양) 추가 입주자모집경기도 수원시 · 142세대 · 마감 주변 신축과 비슷
2,493만평당(전용)
›
한강 푸르지오 리버프론트경기도 김포시 · 2,432세대 · 마감 주변 신축보다 24% 높음
2,942만평당(전용)
›
세종 우미 린 센터파크(행정중심복합도시 5-2생활권 S1블록, 글미마을 9단지)세종특별자치시 다솜동 · 676세대 · 마감
2,432만평당(전용)
›
두산위브더제니스 대연부산광역시 남구 · 176세대 · 마감 주변 신축보다 51% 높음
4,231만평당(전용)
›
용인반도체클러스터 동일하이빌 파크밸리(D1-1블록)경기도 용인시 · 589세대 · 마감
2,217만평당(전용)
›
달서자이 제니크대구광역시 달서구 · 360세대 · 마감 주변 신축과 비슷
2,288만평당(전용)
›
시흥거모 A-5블록 신혼희망타운(공공분양)(본청약)경기도 시흥시 · 290세대 · 마감 주변 신축보다 26% 높음
2,678만평당(전용)
›
충정로역자이르네서울특별시 중구 · 186세대 · 마감 주변 신축과 비슷
9,548만평당(전용)
›
써밋 클라비온서울특별시 영등포구 · 176세대 · 마감 주변 신축보다 42% 높음
10,210만평당(전용)
›
더샵 신길센트럴시티(조합원 취소분)서울특별시 영등포구 · 67세대 · 마감 주변 신축보다 8% 높음
7,884만평당(전용)
›
두산위브더제니스 부천경기도 부천시 · 1,158세대 · 마감 주변 신축보다 69% 높음
4,653만평당(전용)
›
상동역 롯데캐슬 시그니처경기도 부천시 · 1,859세대 · 마감 주변 신축보다 106% 높음
6,345만평당(전용)
›
제일풍경채 첨단3지구(A6BL)광주연구개발특구 첨단3지구 · 638세대 · 마감
2,015만평당(전용)
›
포레나힐스테이트 진주경상남도 진주시 · 398세대 · 마감 주변 신축보다 51% 높음
2,244만평당(전용)
›
아르티엠 라 테라스전북특별자치도 전주시 · 300세대 · 마감 주변 신축보다 6% 높음
2,000만평당(전용)
›
오남역 서희스타힐스 여의재 1단지경기도 남양주시 · 180세대 · 마감 주변 신축보다 65% 높음 참고
3,021만평당(전용)
›
의왕역 한신더휴경기도 의왕시 · 108세대 · 마감 주변 신축보다 22% 높음
3,723만평당(전용)
›
쌍용 더 플래티넘 서대문서울특별시 서대문구 · 62세대 · 마감 주변 신축보다 6% 높음
5,344만평당(전용)
›
시티오씨엘 9단지 오션파크뷰인천광역시 미추홀구 · 1,949세대 · 마감 주변 신축보다 18% 높음
2,681만평당(전용)
›
성남복정2 A1블록 신혼희망타운(공공분양)(본청약)경기도 성남시 · 594세대 · 마감 주변 신축보다 22% 낮음
4,715만평당(전용)
›
검암역 푸르지오 프라베뉴 (B-1BL) 공공분양주택인천광역시 서해구 · 441세대 · 마감
2,488만평당(전용)
›
의정부우정 A2블록 공공분양주택(본청약)경기도 의정부시 · 463세대 · 마감 주변 신축보다 13% 높음 참고
2,242만평당(전용)
›
브라운스톤 월곡 센트럴서울특별시 성북구 · 62세대 · 마감 주변 신축보다 17% 낮음
4,755만평당(전용)
›
문수데시앙2단지 공가세대 일반공급울산광역시 울주군 · 22세대 · 마감 주변 신축보다 40% 낮음 참고
1,222만평당(전용)
›
대전 경남아너스빌 센텀스카이대전광역시 중구 · 142세대 · 마감 주변 신축보다 6% 높음
2,339만평당(전용)
›
남양주진접2지구 A-4블록 신혼희망타운(공공분양) 잔여세대 추가입주자모집공고경기도 남양주시 · 5세대 · 마감 주변 신축보다 15% 높음 참고
2,311만평당(전용)
›
올 뉴 챔피언스시티 1차전남광주통합특별시 북구 · 3,216세대 · 마감 주변 신축보다 63% 높음
3,365만평당(전용)
›
두정역 푸르지오 그랑피크충청남도 천안시 · 1,438세대 · 마감 주변 신축보다 33% 높음
2,116만평당(전용)
›
그랑라크 에일린의 뜰울산광역시 남구 · 1,153세대 · 마감 주변 신축과 비슷
2,983만평당(전용)
›
천안 아이파크 시티 3단지충청남도 천안시 · 851세대 · 마감 주변 신축보다 26% 높음
2,263만평당(전용)
›
양주회천지구 A-26블록 공공분양주택경기도 양주시 · 792세대 · 마감 주변 신축보다 14% 높음 참고
1,936만평당(전용)
›
천안 아이파크 시티 4단지충청남도 천안시 · 777세대 · 마감 주변 신축보다 19% 높음
2,259만평당(전용)
›
더샵 여주역더퍼스트경기도 여주시 · 696세대 · 마감 주변 신축보다 11% 높음
2,029만평당(전용)
›
남울산 노르웨이숲(조합원 취소분)(2회차)울산광역시 울주군 · 52세대 · 마감 주변 신축보다 25% 높음 참고
1,858만평당(전용)
›
시흥 은계 에피트(조합원 취소분)경기도 시흥시 · 24세대 · 마감 주변 신축보다 7% 높음
2,610만평당(전용)
›
힐스테이트 고덕엘리스트 A12BL 공공분양주택경기도 평택시 · 942세대 · 마감
2,299만평당(전용)
›
힐스테이트 고덕엘리스트 A65BL 공공분양주택경기도 평택시 · 837세대 · 마감
2,228만평당(전용)
›
문수로 비스타 더파크울산광역시 남구 · 700세대 · 마감 주변 신축보다 28% 높음 참고
3,236만평당(전용)
›
화서역 호수공원 아너스빌경기도 수원시 · 476세대 · 마감 주변 신축보다 9% 낮음
3,147만평당(전용)
›
더샵 분당하이스트경기도 성남시 · 143세대 · 마감 주변 신축보다 83% 높음 참고
10,834만평당(전용)
›
오남역 서희스타힐스 여의재 3단지 (조합원 취소분)경기도 남양주시 · 133세대 · 마감 주변 신축보다 59% 높음 참고
2,911만평당(전용)
›
중동역 다채로움 더원경기도 부천시 · 39세대 · 마감 주변 신축과 비슷
3,096만평당(전용)
›
진주 판문지구 레이크써밋 웰가경상남도 진주시 · 690세대 · 마감 주변 신축보다 15% 높음 참고
2,152만평당(전용)
›
에코델타시티 금강펜테리움 에코리버부산광역시 강서구 · 358세대 · 마감 주변 신축보다 62% 높음 참고
2,816만평당(전용)
›
삼천 하늘채 라비엘전북특별자치도 전주시 · 116세대 · 마감 주변 신축과 비슷
2,140만평당(전용)
›
시흥하중지구 A-4블록 신혼희망타운(공공분양) 추가입주자모집경기도 시흥시 · 61세대 · 마감 주변 신축보다 17% 낮음 참고
2,206만평당(전용)
›
쌍용 더 플래티넘 센텀부산광역시 수영구 · 53세대 · 마감 주변 신축보다 94% 높음
5,193만평당(전용)
›
숭의역 노르웨이숲 더 스카이인천광역시 미추홀구 · 35세대 · 마감 주변 신축보다 32% 높음
2,849만평당(전용)
›
더샵 시에르네(조합원취소분)(2회차)울산광역시 중구 · 29세대 · 마감 주변 신축과 비슷
2,914만평당(전용)
›
천안 용곡 두산위브(조합원 취소분)충청남도 천안시 · 7세대 · 마감 주변 신축보다 25% 높음
1,752만평당(전용)
›
‘주변 신축 대비’는 이렇게 계산합니다
- 분양가 — 청약홈이 공개한 주택형별 최고 분양가를 전용면적으로 나눈 평당가를,
공급 세대수로 가중해 대표값을 냅니다. 저층 분양가는 이보다 낮습니다. 그래서 ‘주변보다 낮음’은
보수적으로 나옵니다 — 최고가로 봐도 낮다는 뜻이니까요.
- 주변 신축 시세 — 공고 위치에서 반경 2km(부족하면 3km, 5km) 안에 있는
입주 10년 이내 아파트의 최근 12개월 실거래가 중위 평당가입니다. 직거래·해제 거래는 빼고,
1년에 5건 미만 거래된 소규모 단지는 비교 대상에서 뺍니다.
- 전용면적 기준입니다. 분양 광고의 공급면적 평당가와는 숫자가 다릅니다.
전용면적과 공급면적, 평당가 계산법을 참고하세요.
- 참고 표시는 주변 신축 표본이 얇은 경우입니다
(반경 3km 안에 거래 100건·3개 단지 미만). 숫자가 흔들릴 수 있습니다.
이 페이지는 청약을 권하거나 말리지 않습니다. 청약 자격·일정·분양가는 반드시
청약홈 입주자모집공고 원문으로 확인하세요.
출처: 한국부동산원 청약홈 분양정보, 국토교통부 실거래가.
dmFyIFRIRU1FX0lDTz1mdW5jdGlvbih0KXtyZXR1cm4gdD09PSdkYXJrJz8nPHN2ZyBjbGFzcz0idHBoLWkgaWNvLXMiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMjAgMTQuNUE4LjUgOC41IDAgMCAxIDkuNSA0YTguNSA4LjUgMCAxIDAgMTAuNSAxMC41eiIvPjwvc3ZnPic6dD09PSdsaWdodCc/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+PC9pPicrcy5uYW1lOwogICAgZC5hcHBlbmRDaGlsZChzcCk7CiAgfSk7CiAgcmV0dXJuIGQ7Cn0KCi8qIOKYhSDrsKnrrLjsnbzsnYAgKirroZzsu6wg64Kg7KecKirroZwg7KCA7J6l7ZWc64ukLiB0b0lTT1N0cmluZygpIOydgCBVVEMg6528IOyekOyglSDsnbTtm4Qg7ZWY66OoIOuwgOumsOuLpCjsoITshLgg7KeA7YK07J20IOuVjOyZgCDqsJnsnYAg7ZWo7KCVKS4KICAg4piFIOyerOuwqeusuCDsnqXsuZgoMjAyNi0wOS0zMCk6IOyngOuCnCDrsKnrrLgg7J207ZuEIOyDiOuhnCDsmKzrnbzsmKgg6rKDIO2RnOyLnCArIOqzoOuluCDtlYTthLAg6riw7Ja1LgogICDruIzrnbzsmrDsoIDsl5Drp4wg7KCA7J6l7ZWc64ukKOuhnOq3uOyduMK37ISc67KEIOyXhuydjCkuIOyymOydjCDsmKgg7IKs656M7JeQ6rKQIOyVhOustCDtkZzsi5zrj4Qg7JeG64ukLiAqLwpmdW5jdGlvbiBzZWVuSW5pdChrZXksIHJvd1NlbCwgaWRzLCBydW4pewogIHZhciBLPSd0cGgtc2Vlbi0nK2tleSwgRj0ndHBoLWZpbHQtJytrZXksIGxhc3Q9c3RvcmUuZ2V0KEspLCB0b2RheT0oZnVuY3Rpb24oKXt2YXIgZD1uZXcgRGF0ZSgpO2Quc2V0TWludXRlcyhkLmdldE1pbnV0ZXMoKS1kLmdldFRpbWV6b25lT2Zmc2V0KCkpO3JldHVybiBkLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCk7fSkoKSwgbj0wOwogIHRyeXsgdmFyIGY9SlNPTi5wYXJzZShzdG9yZS5nZXQoRil8fCd7fScpOyBpZHMuZm9yRWFjaChmdW5jdGlvbihpKXsgaWYoZltpXSE9bnVsbCAmJiAkKGkpKSAkKGkpLnZhbHVlPWZbaV07IH0pOyB9Y2F0Y2goZSl7fQogIGlmKGxhc3QpewogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChyb3dTZWwpLmZvckVhY2goZnVuY3Rpb24ocil7CiAgICAgIGlmKChyLmRhdGFzZXQuZHR8fCcnKT5sYXN0KXsgbisrOyB2YXIgYj1yLnF1ZXJ5U2VsZWN0b3IoJy5ubSBiJyk7CiAgICAgICAgaWYoYiAmJiAhYi5xdWVyeVNlbGVjdG9yKCcudHBoLW5ldycpKSBiLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnIDxzcGFuIGNsYXNzPSJ0cGgtdGFnIHRwaC1uZXciPk5FVzwvc3Bhbj4nKTsgfQogICAgfSk7CiAgICB2YXIgYm94PSQoa2V5KyduZXcnKTsgaWYoYm94KXsgYm94LmlubmVySFRNTCA9IG4gPyAn7KeA64KcIOuwqeusuCgnK2xhc3QrJykg7J207ZuEIOyDiOuhnCA8Yj4nK24rJ+qxtDwvYj4g4oCUIE5FVyDtkZzsi5wnIDogJ+yngOuCnCDrsKnrrLgoJytsYXN0KycpIOydtO2bhCDsg4jroZwg7Jis65287JioIOqxtCDsl4bsirXri4jri6QnOyB9CiAgfQogIHN0b3JlLnNldChLLCB0b2RheSk7CiAgaWRzLmZvckVhY2goZnVuY3Rpb24oaSl7IHZhciBlPSQoaSk7IGlmKGUpIGUuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJyxmdW5jdGlvbigpewogICAgdmFyIG89e307IGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGopeyBpZigkKGopKSBvW2pdPSQoaikudmFsdWU7IH0pOyBzdG9yZS5zZXQoRiwgSlNPTi5zdHJpbmdpZnkobykpOyB9KTsgfSk7CiAgcnVuKCk7Cn0KOwpmdW5jdGlvbiBydW4oKXsKICB2YXIgc3Q9JCgnY3lzdCcpLnZhbHVlLCBhcj0kKCdjeWFyJykudmFsdWUsIHZzPSQoJ2N5dnMnKS52YWx1ZSwgbj0wOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN0cGgtY3lsaXN0IC50cGgtcm93JykuZm9yRWFjaChmdW5jdGlvbihyKXsKICAgIHZhciBvaz0oIXN0IHx8IChzdD09PSdvcGVuJz8gKHIuZGF0YXNldC5zdD09PSfsoJHsiJgg7JiI7KCVJ3x8ci5kYXRhc2V0LnN0PT09J+ygkeyImCDspJEnKSA6IHIuZGF0YXNldC5zdD09PXN0KSkKICAgICAgICAgJiYgKCFhciB8fCByLmRhdGFzZXQuYXI9PT1hcikgJiYgKCF2cyB8fCByLmRhdGFzZXQudnM9PT12cyk7CiAgICByLnN0eWxlLmRpc3BsYXk9b2s/Jyc6J25vbmUnOyBpZihvaykgbisrOwogIH0pOwogICQoJ2N5Y250JykudGV4dENvbnRlbnQ9bisn6rG0JzsKfQpbJ2N5c3QnLCdjeWFyJywnY3l2cyddLmZvckVhY2goZnVuY3Rpb24oaSl7ICQoaSkuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJyxydW4pOyB9KTsKc2VlbkluaXQoJ2N5JywgJyN0cGgtY3lsaXN0IC50cGgtcm93JywgWydjeXN0JywnY3lhcicsJ2N5dnMnXSwgcnVuKTsKaW5pdFRoZW1lKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy50cGgtcGFnZScpKTsK