.logo {
	width: 400px;
	height: 80px;
	-webkit-box-ordinal-group: 2;
	    -ms-flex-order: 1;
	        order: 1;
}

.nav__box {
	width: calc(100% - 455px);
	-webkit-box-ordinal-group: 3;
	    -ms-flex-order: 2;
	        order: 2;
}

.nav {
	-webkit-box-pack: end;
	    -ms-flex-pack: end;
	        justify-content: flex-end;
}

.nav__name {
	-webkit-box-pack: end;
	    -ms-flex-pack: end;
	        justify-content: flex-end;
}

.nav__layer {
	max-height: calc(100vh - 80px);
	top: 80px;
}

.header__search {
	-webkit-box-ordinal-group: 5;
	    -ms-flex-order: 4;
	        order: 4;
}

.header__search-form {
	top: 80px;
}

.header__social-box {
	-webkit-box-ordinal-group: 4;
	    -ms-flex-order: 3;
	        order: 3;
}

.hamburger {
	-webkit-box-ordinal-group: 6;
	    -ms-flex-order: 5;
	        order: 5;
}

.header--fixed .logo {
	height: 80px;
}

.header--fixed .nav__layer {
	max-height: calc(100vh - 80px);
	top: 80px;
}

.header--fixed .header__search-form {
	top: 80px;
}

.header {
	width: 100%;
	background-color: #fff;
	position: fixed;
	top: 0;
	left: 0;
	z-index: 2;
	-webkit-transition: all .3s ease-out 0.5s;
	-o-transition: all .3s ease-out 0.5s;
	transition: all .3s ease-out 0.5s;
}

.logo {
	-ms-flex-line-pack: center;
	    align-content: center;
}

.logo h1 {
	width: 100%;
	display: block;
	color: #004AAC;
	font-size: 0.125rem;
	position: fixed;
	top: -999999px;
}

.logo__img {
	height: 100%;
	padding: 10px 0;
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
	-webkit-box-pack: start;
	    -ms-flex-pack: start;
	        justify-content: flex-start;
}

.logo__img picture {
	width: 100%;
	display: block;
}

.logo__img img {
	width: 100%;
	display: block;
}

.header--fixed {
	position: fixed;
	top: 0;
	z-index: 10;
}

.nav__box {
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
}

.nav {
	width: 100%;
	height: 100%;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
}

.nav > .nav__item {
	height: 100%;
}

.nav__item {
	width: auto;
	max-width: 25%;
	position: relative;
	font-size: 20px;
	font-size: 1.25rem;
	line-height: 1.875rem;
}

.nav__item::before {
	content: '';
	width: 1px;
	height: 24px;
	background-color: #ced4da;
	position: absolute;
	left: 0;
	top: calc(50% - 12px);
}

.nav__item:hover::after {
	content: '';
	width: 100%;
}

.nav__item:first-child::before {
	display: none;
}

.nav__item--on::after {
	content: '';
	width: 100%;
}

.nav__item--on > .nav__layer {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	background-color: #004AAC;
	padding: 60px calc(50% - 800px);
}

@media only screen and (max-width: 1600px) {
	.nav__item--on > .nav__layer {
		padding: 60px 30px;
	}
}

.nav__name {
	width: 100%;
	height: 100%;
	padding: 5px 25px;
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
}

.nav__btn {
	width: 40px;
	height: 100%;
	border-style: solid;
	border-color: #dee2e6;
	border-width: 0 0 0 1px;
	-webkit-box-pack: center;
	    -ms-flex-pack: center;
	        justify-content: center;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
	cursor: pointer;
	display: none;
	position: absolute;
	right: 0;
	top: 0;
	z-index: 1;
}

.nav__btn-icon {
	width: 100%;
	height: 40px;
	display: block;
	position: relative;
}

.nav__btn-icon::after {
	content: '';
	width: 5px;
	height: 5px;
	margin: auto;
	border-style: solid;
	border-width: 2px 2px 0 0;
	border-color: #252525;
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	-webkit-transform: rotate(45deg);
	    -ms-transform: rotate(45deg);
	        transform: rotate(45deg);
}

.nav__layer {
	width: 250px;
	display: none;
	position: absolute;
	left: 0;
	z-index: 3;
	border-style: solid;
	border-width: 1px 1px 0 1px;
	border-color: #dee2e6;
}

.nav__layer .nav__item {
	width: 100%;
	max-width: 100%;
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	border-bottom: 1px solid #dee2e6;
	color: #252525;
}

.nav__layer .nav__item::after {
	display: none;
}

.nav__layer .nav__item .nav__layer {
	top: -1px;
	left: 100%;
}

.nav__layer .nav__item .nav__btn {
	border-bottom-width: 0;
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
}

.nav__layer .nav__item .nav__name {
	padding: 0 40px 0 10px;
	-webkit-box-pack: start;
	    -ms-flex-pack: start;
	        justify-content: flex-start;
	position: relative;
	color: #252525;
}

.nav__layer .nav__item .nav__name:hover {
	background-color: #fff;
	color: #004AAC;
}

.nav__layer--full {
	width: 100%;
	overflow-y: auto;
	position: fixed;
	-webkit-box-pack: center;
	    -ms-flex-pack: center;
	        justify-content: center;
	left: 0;
	border-width: 0;
}

.nav__layer--full > .nav__item {
	width: 20%;
	border-width: 0;
	-ms-flex-line-pack: start;
	    align-content: flex-start;
	-webkit-box-align: start;
	    -ms-flex-align: start;
	        align-items: flex-start;
}

.nav__layer--full > .nav__item > .nav__name {
	padding-right: 10px;
	color: #fff;
	border-left: 4px solid #fff;
}

.nav__layer--full > .nav__item .nav__btn {
	display: none;
}

.nav__layer--full > .nav__item .nav__layer {
	padding-top: 10px;
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	position: initial;
	left: 0;
}

.nav__layer--full > .nav__item .nav__layer > .nav__item {
	border-width: 0;
}

.nav__layer--full > .nav__item .nav__layer > .nav__item .nav__name {
	color: #fff;
	padding: 6px 0 6px 14px;
	border-left-width: 0;
	font-size: 16px;
	font-size: 1rem;
	line-height: 1.5rem;
}

.nav__layer--full > .nav__item .nav__layer > .nav__item .nav__name:hover {
	color: #004AAC;
}

.nav__layer--full .nav__layer {
	width: 100%;
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	position: initial;
	top: 0;
	left: 0;
	border-width: 0;
}

.nav__layer--full .nav__layer .nav__item {
	width: 100%;
}

.nav__prev {
	width: 40px;
	height: 50px;
	border-right: 1px solid #dee2e6;
	cursor: pointer;
	display: none;
	position: relative;
}

.nav__prev-icon {
	width: 40px;
	height: 40px;
	position: relative;
}

.nav__prev-icon::after {
	content: '';
	width: 5px;
	height: 5px;
	margin: auto;
	border-style: solid;
	border-width: 2px 2px 0 0;
	border-color: #252525;
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	-webkit-transform: rotate(-135deg);
	    -ms-transform: rotate(-135deg);
	        transform: rotate(-135deg);
}

.hamburger {
	width: 50px;
	height: 100%;
	position: relative;
	cursor: pointer;
	display: none;
}

.hamburger span {
	width: 20px;
	height: 3px;
	margin: auto;
	border-radius: 9px;
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background-color: #252525;
	-webkit-transition: all .5s ease-out;
	-o-transition: all .5s ease-out;
	transition: all .5s ease-out;
}

.hamburger span:nth-child(2) {
	-webkit-transform: translateY(-6px);
	    -ms-transform: translateY(-6px);
	        transform: translateY(-6px);
}

.hamburger span:nth-child(3) {
	-webkit-transform: translateY(6px);
	    -ms-transform: translateY(6px);
	        transform: translateY(6px);
}

.header__search {
	width: 50px;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
	position: relative;
}

.header__search::after {
	content: '';
	width: 0;
	height: 4px;
	background-color: #004AAC;
	position: absolute;
	left: 0;
	top: 0;
	-webkit-transition: width .3s ease-out;
	-o-transition: width .3s ease-out;
	transition: width .3s ease-out;
}

.header__search:hover::after, .header__search:has(.header__search-icon .fa-xmark)::after {
	width: 100%;
}

.header__search-icon {
	width: 50px;
	height: 100%;
	-webkit-box-pack: center;
	    -ms-flex-pack: center;
	        justify-content: center;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
	cursor: pointer;
	font-size: 20px;
}

.header__search-form {
	width: 100%;
	padding: 50px 20px;
	background-color: #004AAC;
	-webkit-box-pack: center;
	    -ms-flex-pack: center;
	        justify-content: center;
	position: fixed;
	left: 100%;
	z-index: 2;
	-webkit-transition: left .3s ease-out;
	-o-transition: left .3s ease-out;
	transition: left .3s ease-out;
}

.header__search-form--on {
	left: 0;
}

.header__search-input {
	width: 400px;
	max-width: calc(100% - 55px);
	height: 40px;
	padding: 0 10px;
	border-radius: 40px;
	-webkit-box-sizing: border-box;
	        box-sizing: border-box;
	border: 0 solid rgba(0, 0, 0, 0);
	-webkit-box-shadow: none;
	        box-shadow: none;
	line-height: 40px;
	-webkit-appearance: none;
	   -moz-appearance: none;
	        appearance: none;
}

.header__search-input::-webkit-input-placeholder {
	color: #888;
}

.header__search-input::-moz-placeholder {
	color: #888;
}

.header__search-input:-ms-input-placeholder {
	color: #888;
}

.header__search-input::-ms-input-placeholder {
	color: #888;
}

.header__search-input::placeholder {
	color: #888;
}

.header__search-input:focus::-webkit-input-placeholder {
	color: rgba(136, 136, 136, 0.5);
}

.header__search-input:focus::-moz-placeholder {
	color: rgba(136, 136, 136, 0.5);
}

.header__search-input:focus:-ms-input-placeholder {
	color: rgba(136, 136, 136, 0.5);
}

.header__search-input:focus::-ms-input-placeholder {
	color: rgba(136, 136, 136, 0.5);
}

.header__search-input:focus::placeholder {
	color: rgba(136, 136, 136, 0.5);
}

.header__search-btn {
	width: 40px;
	height: 40px;
	margin-left: 10px;
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-webkit-box-pack: center;
	    -ms-flex-pack: center;
	        justify-content: center;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
	border-radius: 40px;
	cursor: pointer;
	border: none;
	background-color: #fff;
	font-size: 24px;
	-webkit-appearance: none;
	   -moz-appearance: none;
	        appearance: none;
}

.header__search-btn i {
	font-size: 20px;
}

.header__language {
	width: 45px;
	margin-left: 10px;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
	-webkit-box-ordinal-group: 5;
	    -ms-flex-order: 4;
	        order: 4;
}

.header__language > div {
	width: 100%;
	border-radius: 999px;
	background-color: #e9ecef;
}

.header__language a {
	width: 100%;
	background-color: #004AAC;
	border-radius: 5px;
	padding: 0 10px;
	-webkit-box-flex: 1;
	    -ms-flex: 1;
	        flex: 1;
	font-size: 14px;
	font-size: 0.875rem;
	line-height: 1.313rem;
	color: #fff;
	display: block;
	text-align: center;
}

.header__social-box {
	width: 0px;
}

.header__social-btn {
	-webkit-box-pack: center;
	    -ms-flex-pack: center;
	        justify-content: center;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
	display: none;
	cursor: pointer;
}

.header__social-btn i {
	font-size: 18px;
}

.header__social {
	width: 100%;
	height: 100%;
	-webkit-box-pack: center;
	    -ms-flex-pack: center;
	        justify-content: center;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
}

.header__social-item {
	width: 40px;
	display: inline-block;
	text-align: center;
}

.header__social-link {
	width: 40px;
	height: 40px;
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-webkit-box-pack: center;
	    -ms-flex-pack: center;
	        justify-content: center;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
}

.header__social-icon {
	font-size: 20px;
}

.header__social-facebook:hover {
	color: #1877F2;
}

.header__social-instagram:hover {
	color: #de2d75;
}

.header__social-twitter:hover {
	color: #1DA1F2;
}

.header__social-youtube:hover {
	color: #EE3123;
}

.header__social-LINE:hover {
	color: #00B900;
}

@media only screen and (max-width: 1200px) {
	.header--fixed .logo {
		height: 50px;
	}
	.header--fixed .header__search-form {
		top: 50px;
	}
	.logo {
		width: calc(100% - 105px);
		height: 50px;
	}
	.logo__img {
		padding: 10px 0;
	}
	.logo__img picture {
		height: 100%;
	}
	.logo__img img {
		width: auto;
		height: 100%;
	}
	.nav__box {
		width: 100%;
		height: 100%;
		padding-top: 50px;
		overflow-x: hidden;
		overflow-y: auto;
		-webkit-box-align: start;
		    -ms-flex-align: start;
		        align-items: flex-start;
		position: fixed;
		top: 0;
		right: -100%;
		z-index: 20;
		background-color: #fff;
		-webkit-transition: all .5s ease-out;
		-o-transition: all .5s ease-out;
		transition: all .5s ease-out;
	}
	.nav__box--on {
		right: 0;
	}
	.nav {
		-webkit-box-align: start;
		    -ms-flex-align: start;
		        align-items: flex-start;
		-ms-flex-line-pack: start;
		    align-content: flex-start;
		border-top: 1px solid #dee2e6;
	}
	.nav > .nav__item {
		height: auto;
	}
	.nav > .nav__item::after {
		display: none;
	}
	.nav__item {
		width: 100%;
		height: auto;
		max-width: 100%;
		display: block;
		border-bottom: 1px solid #dee2e6;
	}
	.nav__item:has(> .nav__btn) .nav__name {
		padding: 10px 40px 10px 15px;
	}
	.nav__name {
		padding: 10px 15px;
		-webkit-box-pack: start;
		    -ms-flex-pack: start;
		        justify-content: flex-start;
	}
	.nav__btn {
		height: 100%;
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
	}
	.nav__btn .nav__btn-icon {
		-webkit-transform: rotate(90deg);
		    -ms-transform: rotate(90deg);
		        transform: rotate(90deg);
	}
	.nav__btn--on .nav__btn-icon {
		-webkit-transform: rotate(-90deg);
		    -ms-transform: rotate(-90deg);
		        transform: rotate(-90deg);
	}
	.nav__layer {
		width: 100%;
		max-height: 100%;
		left: 100%;
		top: 0;
		position: relative;
		background-color: #004AAC;
		border-width: 1px 0 0 0;
	}
	.nav__layer .nav__item .nav__name {
		padding: 10px 40px 10px 15px;
	}
	.nav__layer .nav__item .nav__layer {
		top: 0;
	}
	.nav__layer .nav__item:first-child {
		border-top: 1px solid #dee2e6;
	}
	.nav__layer .nav__item:last-child {
		border-bottom: 0;
	}
	.nav__layer--on {
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
	}
	.nav__layer--full > .nav__item {
		width: 100%;
		border-bottom: 1px solid #dee2e6;
	}
	.nav__layer--full > .nav__item .nav__name {
		padding: 10px 40px 10px 15px;
		color: #252525;
		border-left-width: 0;
	}
	.nav__layer--full > .nav__item .nav__btn {
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
	}
	.nav__layer--full > .nav__item .nav__layer {
		padding-top: 0;
		position: fixed;
		left: 100%;
	}
	.nav__layer--full > .nav__item .nav__layer--on {
		left: 0;
	}
	.nav__layer--full > .nav__item .nav__layer > .nav__item {
		border-bottom: 1px solid #dee2e6;
	}
	.nav__layer--full > .nav__item .nav__layer > .nav__item .nav__name {
		padding: 10px 15px;
		font-size: 20px;
		font-size: 1.25rem;
		line-height: 1.875rem;
		color: #252525;
	}
	.nav__box--turnover .nav__btn-icon {
		-webkit-transform: rotate(0);
		    -ms-transform: rotate(0);
		        transform: rotate(0);
	}
	.nav__box--turnover .nav__layer {
		height: 100%;
		overflow-y: auto;
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
		-webkit-box-pack: start;
		    -ms-flex-pack: start;
		        justify-content: flex-start;
		-webkit-box-align: start;
		    -ms-flex-align: start;
		        align-items: flex-start;
		-ms-flex-line-pack: start;
		    align-content: flex-start;
		background-color: #fff;
		border-width: 0;
		position: fixed;
		left: 100%;
		z-index: 3;
		-webkit-transition: left .3s ease-out;
		-o-transition: left .3s ease-out;
		transition: left .3s ease-out;
	}
	.nav__box--turnover .nav__layer .nav__item:nth-child(1) {
		border-top-width: 0;
	}
	.nav__box--turnover .nav__layer .nav__item:nth-child(2) {
		border-top: 1px solid #dee2e6;
	}
	.nav__box--turnover .nav__layer .nav__item:last-child {
		border-bottom: 1px solid #dee2e6;
	}
	.nav__box--turnover .nav__layer--on {
		left: 0;
	}
	.nav__box--turnover .nav__prev {
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
		-webkit-box-pack: center;
		    -ms-flex-pack: center;
		        justify-content: center;
		-webkit-box-align: center;
		    -ms-flex-align: center;
		        align-items: center;
	}
	.header__search {
		-webkit-box-ordinal-group: 5;
		    -ms-flex-order: 4;
		        order: 4;
	}
	.header__language {
		-webkit-box-ordinal-group: 4;
		    -ms-flex-order: 3;
		        order: 3;
	}
	.hamburger {
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
	}
	.hamburger--on {
		height: 50px;
		position: fixed;
		top: 0;
		right: 0;
		z-index: 999;
	}
	.hamburger--on span:nth-child(1) {
		opacity: 0;
		-webkit-transform: translateX(100%);
		    -ms-transform: translateX(100%);
		        transform: translateX(100%);
	}
	.hamburger--on span:nth-child(2) {
		-webkit-transform: translateY(0) rotate(45deg);
		    -ms-transform: translateY(0) rotate(45deg);
		        transform: translateY(0) rotate(45deg);
	}
	.hamburger--on span:nth-child(3) {
		-webkit-transform: translateY(0) rotate(-45deg);
		    -ms-transform: translateY(0) rotate(-45deg);
		        transform: translateY(0) rotate(-45deg);
	}
	.header__search-form {
		top: 50px;
	}
	.header__social-box {
		width: 40px;
	}
	.header__social-btn {
		height: 100%;
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
	}
	.header__search-icon {
		font-size: 20px;
	}
	.header__social {
		width: 100%;
		height: auto;
		padding: 15px 10px;
		position: fixed;
		top: 50px;
		left: 100%;
		background-color: #fff;
		-webkit-transition: left .3s ease-out;
		-o-transition: left .3s ease-out;
		transition: left .3s ease-out;
	}
	.header__social--on {
		left: 0;
	}
}

@media only screen and (max-width: 480px) {
	.header .wrapper {
		padding: 0 0 0 10px;
	}
	.header .header__language {
		margin-left: 0;
	}
	.header .hamburger--on {
		right: 0;
	}
}

@media only screen and (max-width: 360px) {
	.logo__img img {
		width: 200px;
	}
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50L2hlYWRlci5jc3MiLCJzb3VyY2VzIjpbImNvbXBvbmVudC9oZWFkZXIuc2FzcyIsInNldHRpbmcvX2RlZmF1bHQuc2FzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3ktcHJlZml4LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL192ZXJzaW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvX3V0aWxpdGllcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS12YWxpZGF0ZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS1tYXRoLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvX25vcm1hbGl6ZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19wYXJzZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zeW50YXgtaGVscGVycy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19hcGkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fdW5wcmVmaXguc2NzcyIsInNldHRpbmcvX3ZhcmlhYmxlLnNhc3MiLCJzZXR0aW5nL19mdW5jdGlvbi5zYXNzIiwic2V0dGluZy9fbWl4aW4uc2FzcyIsInNldHRpbmcvX2V4dGVuZC5zYXNzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi9zZXR0aW5nL2RlZmF1bHRcIjtcblxuLy/ooajpoK3mqKHlvI9cbkBpZiAkaGVhZGVyTW9kZSA9PSAxIHtcblx0LmxvZ28ge1xuXHRcdHdpZHRoOiAkbG9nb1dpZHRoO1xuXHRcdGhlaWdodDogbWFwLWdldCgkbG9nb0hlaWdodCwgXCJtb2RlMVwiKTtcblx0XHRvcmRlcjogbWFwLWdldCgkaGVhZGVyT3JkZXIsIFwibG9nb1wiKTsgfVxuXHQubmF2X19ib3gge1xuXHRcdHdpZHRoOiBjYWxjKDEwMCUgLSA0NTJweCk7XG5cdFx0b3JkZXI6IG1hcC1nZXQoJGhlYWRlck9yZGVyLCBcIm5hdlwiKTsgfVxuXHQubmF2IHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6ICRuYXZBbGlnbjsgfVxuXHQubmF2X19uYW1lIHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyB9XG5cdC5uYXZfX2xheWVyIHtcblx0XHRtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gI3ttYXAtZ2V0KCRsb2dvSGVpZ2h0LCBcIm1vZGUxXCIpfSk7XG5cdFx0dG9wOiBtYXAtZ2V0KCRsb2dvSGVpZ2h0LCBcIm1vZGUxXCIpOyB9XG5cdC5oZWFkZXJfX3NlYXJjaCB7XG5cdFx0b3JkZXI6IG1hcC1nZXQoJGhlYWRlck9yZGVyLCBcInNlYXJjaFwiKTsgfVxuXHQuaGVhZGVyX19zZWFyY2gtZm9ybSB7XG5cdFx0dG9wOiBtYXAtZ2V0KCRsb2dvSGVpZ2h0LCBcIm1vZGUxXCIpOyB9XG5cdC5oZWFkZXJfX3NvY2lhbC1ib3gge1xuXHRcdG9yZGVyOiBtYXAtZ2V0KCRoZWFkZXJPcmRlciwgXCJzb2NpYWxcIik7IH1cblx0LmhhbWJ1cmdlciB7XG5cdFx0b3JkZXI6IG1hcC1nZXQoJGhlYWRlck9yZGVyLCBcImhhbWJ1cmdlclwiKTsgfVxuXHQuaGVhZGVyLS1maXhlZCB7XG5cdFx0LmxvZ28ge1xuXHRcdFx0aGVpZ2h0OiBtYXAtZ2V0KCRsb2dvSGVpZ2h0LCBcIm1vZGUxRml4ZWRcIik7IH1cblx0XHQubmF2X19sYXllciB7XG5cdFx0XHRtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gI3ttYXAtZ2V0KCRsb2dvSGVpZ2h0LCBcIm1vZGUxRml4ZWRcIil9KTtcblx0XHRcdHRvcDogbWFwLWdldCgkbG9nb0hlaWdodCwgXCJtb2RlMUZpeGVkXCIpOyB9XG5cdFx0LmhlYWRlcl9fc2VhcmNoLWZvcm0ge1xuXHRcdFx0dG9wOiBtYXAtZ2V0KCRsb2dvSGVpZ2h0LCBcIm1vZGUxRml4ZWRcIik7IH0gfSB9XG5cbkBpZiAkaGVhZGVyTW9kZSA9PSAyIHtcblx0LmxvZ28ge1xuXHRcdHdpZHRoOiBjYWxjKDEwMCUgLSAje21hcC1nZXQoJHZpZXcsIFwic2VhcmNoXCIpICogNTBweCArIG1hcC1nZXQoJHZpZXcsIFwic29jaWFsSXRlbVwiKSAqIDQwcHh9KTtcblx0XHRoZWlnaHQ6IG1hcC1nZXQoJGxvZ29IZWlnaHQsIFwibW9kZTJcIik7XG5cdFx0b3JkZXI6IG1hcC1nZXQoJGhlYWRlck9yZGVyLCBcImxvZ29cIik7IH1cblx0Lm5hdl9fYm94IHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6ICRuYXZIZWlnaHQ7XG5cdFx0b3JkZXI6IG1hcC1nZXQoJGhlYWRlck9yZGVyLCBcIm5hdlwiKTsgfVxuXHQubmF2IHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6ICRuYXZBbGlnbjsgfVxuXHQubmF2X19uYW1lIHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxuXHQubmF2X19sYXllciB7XG5cdFx0bWF4LWhlaWdodDogY2FsYygxMDB2aCAtICN7bWFwLWdldCgkbG9nb0hlaWdodCwgXCJtb2RlMlwiKSArICRuYXZIZWlnaHR9KTtcblx0XHR0b3A6ICRuYXZIZWlnaHQ7IH1cblx0LmhlYWRlcl9fc2VhcmNoIHtcblx0XHRvcmRlcjogbWFwLWdldCgkaGVhZGVyT3JkZXIsIFwic2VhcmNoXCIpOyB9XG5cdC5oZWFkZXJfX3NlYXJjaC1mb3JtIHtcblx0XHR0b3A6IG1hcC1nZXQoJGxvZ29IZWlnaHQsIFwibW9kZTJcIikgKyAkbmF2SGVpZ2h0OyB9XG5cdC5oZWFkZXJfX3NvY2lhbC1ib3gge1xuXHRcdG9yZGVyOiBtYXAtZ2V0KCRoZWFkZXJPcmRlciwgXCJzb2NpYWxcIik7IH1cblx0LmhhbWJ1cmdlciB7XG5cdFx0b3JkZXI6IG1hcC1nZXQoJGhlYWRlck9yZGVyLCBcImhhbWJ1cmdlclwiKTsgfVxuXHQuaGVhZGVyLS1maXhlZCB7XG5cdFx0LmxvZ28ge1xuXHRcdFx0aGVpZ2h0OiBtYXAtZ2V0KCRsb2dvSGVpZ2h0LCBcIm1vZGUyRml4ZWRcIik7IH1cblx0XHQubmF2X19sYXllciB7XG5cdFx0XHRtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gI3ttYXAtZ2V0KCRsb2dvSGVpZ2h0LCBcIm1vZGUyRml4ZWRcIikgKyAkbmF2SGVpZ2h0fSk7XG5cdFx0XHR0b3A6ICRuYXZIZWlnaHQ7IH1cblx0XHQuaGVhZGVyX19zZWFyY2gtZm9ybSB7XG5cdFx0XHR0b3A6IG1hcC1nZXQoJGxvZ29IZWlnaHQsIFwibW9kZTJGaXhlZFwiKSArICRuYXZIZWlnaHQ7IH0gfVxuXHRAaW5jbHVkZSByd2QoJGhlYWRlclJXRCkge1xuXHRcdC5oZWFkZXIge1xuXHRcdFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cdFx0XHQ+ZGl2IHtcblx0XHRcdFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7IH0gfSB9IH1cbi8vaGVhZGVyXG4uaGVhZGVyIHtcblx0d2lkdGg6IDEwMCU7XG5cdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdHotaW5kZXg6IDI7XG5cdHRyYW5zaXRpb246IGFsbCAuM3MgZWFzZS1vdXQgMC41czsgfVxuLmxvZ28ge1xuXHRhbGlnbi1jb250ZW50OiBjZW50ZXI7XG5cdGgxIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRjb2xvcjogJG1haW4tY29sb3I7XG5cdFx0Zm9udC1zaXplOiAwLjEyNXJlbTtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0dG9wOiAtOTk5OTk5cHg7IH0gfVxuLmxvZ29fX2ltZyB7XG5cdGhlaWdodDogMTAwJTtcblx0cGFkZGluZzogZ2FwKDEpIDA7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogJGxvZ29BbGlnbjtcblx0cGljdHVyZSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0ZGlzcGxheTogYmxvY2s7IH1cblx0aW1nIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRkaXNwbGF5OiBibG9jazsgfSB9XG4uaGVhZGVyLS1maXhlZCB7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0dG9wOiAwO1xuXHR6LWluZGV4OiAxMDsgfVxuLy9oZWFkZXIg5Li76YG45ZauXG4ubmF2X19ib3gge1xuXHRhbGlnbi1pdGVtczogY2VudGVyOyB9XG4ubmF2IHtcblx0d2lkdGg6IDEwMCU7XG5cdGhlaWdodDogMTAwJTtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0PiAubmF2X19pdGVtIHtcblx0XHRcdGhlaWdodDogMTAwJTsgfSB9XG4ubmF2X19pdGVtIHtcblx0d2lkdGg6IGF1dG87XG5cdG1heC13aWR0aDogMTAwIC8gJG5hdkl0ZW0gKiAxJTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRAaW5jbHVkZSBmb250LXNpemUoJG5hdkZvbnQsKCRuYXZGb250KzEwcHgpKTtcblx0Jjo6YmVmb3JlIHtcblx0XHRjb250ZW50OiAnJztcblx0XHR3aWR0aDogMXB4O1xuXHRcdGhlaWdodDogMjRweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS00MDA7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGxlZnQ6IDA7XG5cdFx0dG9wOiBjYWxjKDUwJSAtIDEycHgpOyB9XG5cdC8vICY6OmFmdGVyXG5cdC8vIFx0Y29udGVudDogJydcblx0Ly8gXHR3aWR0aDogMFxuXHQvLyBcdGhlaWdodDogNHB4XG5cdC8vIFx0YmFja2dyb3VuZC1jb2xvcjogJHRleHRIQ29sb3Jcblx0Ly8gXHRwb3NpdGlvbjogYWJzb2x1dGVcblx0Ly8gXHRib3R0b206IDBcblx0Ly8gXHR0b3A6IDBcblx0Ly8gXHR0cmFuc2l0aW9uOiB3aWR0aCAuM3MgZWFzZS1vdXRcblx0Jjpob3ZlciB7XG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHR3aWR0aDogMTAwJTsgfSB9XG5cdCY6Zmlyc3QtY2hpbGQge1xuXHRcdCY6OmJlZm9yZSB7XG5cdFx0XHRkaXNwbGF5OiBub25lOyB9IH0gfVxuLm5hdl9faXRlbS0tb24ge1xuXHQmOjphZnRlciB7XG5cdFx0Y29udGVudDogJyc7XG5cdFx0d2lkdGg6IDEwMCU7IH1cblx0Pi5uYXZfX2xheWVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRtYWluLWNvbG9yO1xuXHRcdHBhZGRpbmc6IGdhcCg2KSBjYWxjKDUwJSAtIDgwMHB4KTsgfVxuXHRAaW5jbHVkZSByd2QoMTYwMCkge1xuXHRcdD4ubmF2X19sYXllciB7XG5cdFx0XHRwYWRkaW5nOiBnYXAoNikgZ2FwKDMpOyB9IH0gfVxuLm5hdl9fbmFtZSB7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG5cdHBhZGRpbmc6IGdhcCgwLjUpIGdhcCgyLjUpO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyOyB9XG4ubmF2X19idG4ge1xuXHR3aWR0aDogJG5hdkJ0bldpZHRoO1xuXHRoZWlnaHQ6IDEwMCU7XG5cdGJhY2tncm91bmQtY29sb3I6IHt9XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci1jb2xvcjogJG5hdkJvcmRlckNvbG9yO1xuXHRib3JkZXItd2lkdGg6IDAgMCAwIDFweDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0ZGlzcGxheTogbm9uZTtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRyaWdodDogMDtcblx0dG9wOiAwO1xuXHR6LWluZGV4OiAxO1xuXHQmLWljb24ge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogNDBweDtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHR3aWR0aDogNXB4O1xuXHRcdFx0aGVpZ2h0OiA1cHg7XG5cdFx0XHRtYXJnaW46IGF1dG87XG5cdFx0XHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRcdFx0Ym9yZGVyLXdpZHRoOiAycHggMnB4IDAgMDtcblx0XHRcdGJvcmRlci1jb2xvcjogJHRleHRDb2xvcjtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHRyaWdodDogMDtcblx0XHRcdGJvdHRvbTogMDtcblx0XHRcdHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsgfSB9IH1cbi5uYXZfX2xheWVyIHtcblx0d2lkdGg6ICRuYXZMYXllcldpZHRoO1xuXHRkaXNwbGF5OiBub25lO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGxlZnQ6IDA7XG5cdHotaW5kZXg6IDM7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogMXB4IDFweCAwIDFweDtcblx0Ym9yZGVyLWNvbG9yOiAkbmF2Qm9yZGVyQ29sb3I7XG5cdC5uYXZfX2l0ZW0ge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJG5hdkJvcmRlckNvbG9yO1xuXHRcdGNvbG9yOiAkbmF2Q29sb3I7XG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0ZGlzcGxheTogbm9uZTsgfVxuXHRcdC5uYXZfX2xheWVyIHtcblx0XHRcdHRvcDogLTFweDtcblx0XHRcdGxlZnQ6IDEwMCU7IH1cblx0XHQubmF2X19idG4ge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS13aWR0aDogMDtcblx0XHRcdGRpc3BsYXk6IGZsZXg7IH1cblx0XHQubmF2X19uYW1lIHtcblx0XHRcdHBhZGRpbmc6IDAgI3skbmF2QnRuV2lkdGh9IDAgZ2FwKDEpO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0Y29sb3I6ICRuYXZDb2xvcjtcblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2SG92ZXJiZ0NvbG9yO1xuXHRcdFx0XHRjb2xvcjogJG5hdkhvdmVyQ29sb3I7IH0gfSB9IH1cbi5uYXZfX2xheWVyLS1mdWxsIHtcblx0d2lkdGg6IDEwMCU7XG5cdG92ZXJmbG93LXk6IGF1dG87XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGxlZnQ6IDA7XG5cdGJvcmRlci13aWR0aDogMDtcblx0PiAubmF2X19pdGVtIHtcblx0XHR3aWR0aDogMjAlO1xuXHRcdGJvcmRlci13aWR0aDogMDtcblx0XHRhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdD4gLm5hdl9fbmFtZSB7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiBnYXAoMSk7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0Ym9yZGVyLWxlZnQ6IDRweCBzb2xpZCAkd2hpdGU7IH1cblx0XHQubmF2X19idG4ge1xuXHRcdFx0ZGlzcGxheTogbm9uZTsgfVxuXHRcdC5uYXZfX2xheWVyIHtcblx0XHRcdHBhZGRpbmctdG9wOiBnYXAoMSk7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0cG9zaXRpb246IGluaXRpYWw7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0PiAubmF2X19pdGVtIHtcblx0XHRcdFx0XHRib3JkZXItd2lkdGg6IDA7XG5cdFx0XHRcdFx0Lm5hdl9fbmFtZSB7XG5cdFx0XHRcdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0XHRcdFx0cGFkZGluZzogZ2FwKDAuNikgMCBnYXAoMC42KSBnYXAoMS40KTtcblx0XHRcdFx0XHRcdGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuXHRcdFx0XHRcdFx0QGluY2x1ZGUgZm9udC1zaXplKDE2cHgpO1xuXHRcdFx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0XHRcdGNvbG9yOiAkbWFpbi1jb2xvcjsgfSB9IH0gfSB9XG5cdC5uYXZfX2xheWVyIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdHBvc2l0aW9uOiBpbml0aWFsO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdGJvcmRlci13aWR0aDogMDtcblx0XHQubmF2X19pdGVtIHtcblx0XHRcdHdpZHRoOiAxMDAlOyB9IH0gfVxuLm5hdl9fcHJldiB7XG5cdHdpZHRoOiAkbmF2QnRuV2lkdGg7XG5cdGhlaWdodDogJGhlYWRlclBob25lSGVpZ2h0O1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkbmF2Qm9yZGVyQ29sb3I7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0ZGlzcGxheTogbm9uZTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHQmLWljb24ge1xuXHRcdHdpZHRoOiAkbmF2QnRuV2lkdGg7XG5cdFx0aGVpZ2h0OiAkbmF2QnRuV2lkdGg7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdCY6OmFmdGVyIHtcblx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0d2lkdGg6IDVweDtcblx0XHRcdGhlaWdodDogNXB4O1xuXHRcdFx0bWFyZ2luOiBhdXRvO1xuXHRcdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0XHRcdGJvcmRlci13aWR0aDogMnB4IDJweCAwIDA7XG5cdFx0XHRib3JkZXItY29sb3I6ICR0ZXh0Q29sb3I7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHRib3R0b206IDA7XG5cdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSgtMTM1ZGVnKTsgfSB9IH1cbi5oYW1idXJnZXIge1xuXHR3aWR0aDogNTBweDtcblx0aGVpZ2h0OiAxMDAlO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0ZGlzcGxheTogbm9uZTtcblx0c3BhbiB7XG5cdFx0d2lkdGg6IDIwcHg7XG5cdFx0aGVpZ2h0OiAzcHg7XG5cdFx0bWFyZ2luOiBhdXRvO1xuXHRcdGJvcmRlci1yYWRpdXM6IDlweDtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0Ym90dG9tOiAwO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR0ZXh0Q29sb3I7XG5cdFx0dHJhbnNpdGlvbjogYWxsIC41cyBlYXNlLW91dDtcblx0XHQmOm50aC1jaGlsZCgyKSB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTZweCk7IH1cblx0XHQmOm50aC1jaGlsZCgzKSB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNnB4KTsgfSB9IH1cblxuLy9oZWFkZXIg5pCc5bCLXG4uaGVhZGVyX19zZWFyY2gge1xuXHR3aWR0aDogNTBweDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHQmOjphZnRlciB7XG5cdFx0Y29udGVudDogJyc7XG5cdFx0d2lkdGg6IDA7XG5cdFx0aGVpZ2h0OiA0cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG1haW4tY29sb3I7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGxlZnQ6IDA7XG5cdFx0dG9wOiAwO1xuXHRcdHRyYW5zaXRpb246IHdpZHRoIC4zcyBlYXNlLW91dDsgfVxuXHQmOmhvdmVyLCY6aGFzKC5oZWFkZXJfX3NlYXJjaC1pY29uIC5mYS14bWFyaykge1xuXHRcdCY6OmFmdGVyIHtcblx0XHRcdHdpZHRoOiAxMDAlOyB9IH0gfVxuLmhlYWRlcl9fc2VhcmNoLWljb24ge1xuXHR3aWR0aDogNTBweDtcblx0aGVpZ2h0OiAxMDAlO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHRmb250LXNpemU6ICRzb2NpYWxIZWlnaHQ7IH1cbi5oZWFkZXJfX3NlYXJjaC1mb3JtIHtcblx0d2lkdGg6IDEwMCU7XG5cdHBhZGRpbmc6IGdhcCg1KSBnYXAoMik7XG5cdGJhY2tncm91bmQtY29sb3I6ICRtYWluLWNvbG9yO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0cG9zaXRpb246IGZpeGVkO1xuXHRsZWZ0OiAxMDAlO1xuXHR6LWluZGV4OiAyO1xuXHR0cmFuc2l0aW9uOiBsZWZ0IC4zcyBlYXNlLW91dDtcblx0Ji0tb24ge1xuXHRcdGxlZnQ6IDA7IH0gfVxuLmhlYWRlcl9fc2VhcmNoLWlucHV0IHtcblx0d2lkdGg6IDQwMHB4O1xuXHRtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDU1cHgpO1xuXHRoZWlnaHQ6IDQwcHg7XG5cdHBhZGRpbmc6IDAgMTBweDtcblx0Ym9yZGVyLXJhZGl1czogNDBweDtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0Ym9yZGVyOiAkZm9ybUxpbmVXaWR0aCBzb2xpZCByZ2JhKDAsMCwwLDApO1xuXHRib3gtc2hhZG93OiBub25lO1xuXHRsaW5lLWhlaWdodDogNDBweDtcblx0YXBwZWFyYW5jZTogbm9uZTtcblx0Jjo6cGxhY2Vob2xkZXIge1xuXHRcdGNvbG9yOiAkcGxhY2Vob2xkZXJDb2xvcjsgfVxuXHQmOmZvY3VzIHtcblx0XHQmOjpwbGFjZWhvbGRlciB7XG5cdFx0XHRjb2xvcjogcmdiYSgkcGxhY2Vob2xkZXJDb2xvciwuNSk7IH0gfSB9XG4uaGVhZGVyX19zZWFyY2gtYnRuIHtcblx0d2lkdGg6IDQwcHg7XG5cdGhlaWdodDogNDBweDtcblx0bWFyZ2luLWxlZnQ6IGdhcCgxKTtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGJvcmRlci1yYWRpdXM6IDQwcHg7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0Ym9yZGVyOiBub25lO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGZvbnQtc2l6ZTogMjRweDtcblx0YXBwZWFyYW5jZTogbm9uZTtcblx0aSB7XG5cdFx0Zm9udC1zaXplOiAyMHB4OyB9IH1cblxuLmhlYWRlcl9fbGFuZ3VhZ2Uge1xuXHR3aWR0aDogNDJweDtcblx0bWFyZ2luLWxlZnQ6IGdhcCgxKTtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0b3JkZXI6IDQ7XG5cdD4gZGl2IHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRib3JkZXItcmFkaXVzOiA5OTlweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS0yMDA7IH1cblx0YSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG1haW4tY29sb3I7XG5cdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRcdHBhZGRpbmc6IDAgZ2FwKDEpO1xuXHRcdGZsZXg6IDE7XG5cdFx0QGluY2x1ZGUgZm9udC1zaXplKDE0cHgpO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyOyB9IH1cbi8vaGVhZGVyIOekvue+pFxuLmhlYWRlcl9fc29jaWFsLWJveCB7XG5cdHdpZHRoOiA0MHB4ICogbWFwLWdldCgkdmlldywgXCJzb2NpYWxJdGVtXCIpOyB9XG4uaGVhZGVyX19zb2NpYWwtYnRuIHtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGRpc3BsYXk6IG5vbmU7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0aSB7XG5cdFx0Zm9udC1zaXplOiAxOHB4OyB9IH1cbi5oZWFkZXJfX3NvY2lhbCB7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRhbGlnbi1pdGVtczogY2VudGVyOyB9XG4uaGVhZGVyX19zb2NpYWwtaXRlbSB7XG5cdHdpZHRoOiA0MHB4O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHRleHQtYWxpZ246IGNlbnRlcjsgfVxuLmhlYWRlcl9fc29jaWFsLWxpbmsge1xuXHR3aWR0aDogNDBweDtcblx0aGVpZ2h0OiA0MHB4O1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuLmhlYWRlcl9fc29jaWFsLWljb24ge1xuXHRmb250LXNpemU6ICRzb2NpYWxIZWlnaHQ7IH1cbi5oZWFkZXJfX3NvY2lhbC1mYWNlYm9vayB7XG5cdCY6aG92ZXIge1xuXHRcdGNvbG9yOiAjMTg3N0YyOyB9IH1cbi5oZWFkZXJfX3NvY2lhbC1pbnN0YWdyYW0ge1xuXHQmOmhvdmVyIHtcblx0XHRjb2xvcjogI2RlMmQ3NTsgfSB9XG4uaGVhZGVyX19zb2NpYWwtdHdpdHRlciB7XG5cdCY6aG92ZXIge1xuXHRcdGNvbG9yOiAjMURBMUYyOyB9IH1cbi5oZWFkZXJfX3NvY2lhbC15b3V0dWJlIHtcblx0Jjpob3ZlciB7XG5cdFx0Y29sb3I6ICNFRTMxMjM7IH0gfVxuLmhlYWRlcl9fc29jaWFsLUxJTkUge1xuXHQmOmhvdmVyIHtcblx0XHRjb2xvcjogIzAwQjkwMDsgfSB9XG5cblxuLy9SV0RcbkBpbmNsdWRlIHJ3ZCgkaGVhZGVyUldEKSB7XG5cdC5oZWFkZXItLWZpeGVkIHtcblx0XHQubG9nbyB7XG5cdFx0XHRoZWlnaHQ6ICRoZWFkZXJQaG9uZUhlaWdodDsgfVxuXHRcdC5oZWFkZXJfX3NlYXJjaC1mb3JtIHtcblx0XHRcdHRvcDogJGhlYWRlclBob25lSGVpZ2h0OyB9IH1cblx0LmxvZ28ge1xuXHRcdHdpZHRoOiBjYWxjKDEwMCUgLSAxMDJweCk7XG5cdFx0aGVpZ2h0OiAkaGVhZGVyUGhvbmVIZWlnaHQ7IH1cblx0LmxvZ29fX2ltZyB7XG5cdFx0cGFkZGluZzogZ2FwKDEpIDA7XG5cdFx0cGljdHVyZSB7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7IH1cblx0XHRpbWcge1xuXHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRoZWlnaHQ6IDEwMCU7IH0gfVxuXHQubmF2X19ib3gge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRwYWRkaW5nLXRvcDogJGhlYWRlclBob25lSGVpZ2h0O1xuXHRcdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHR0b3A6IDA7XG5cdFx0cmlnaHQ6IC0xMDAlO1xuXHRcdHotaW5kZXg6IDIwO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZiZ0NvbG9yO1xuXHRcdHRyYW5zaXRpb246IGFsbCAuNXMgZWFzZS1vdXQ7IH1cblx0Lm5hdl9fYm94LS1vbiB7XG5cdFx0cmlnaHQ6IDA7IH1cblx0Lm5hdiB7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJG5hdkJvcmRlckNvbG9yO1xuXHRcdD4gLm5hdl9faXRlbSB7XG5cdFx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0XHQmOjphZnRlciB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7IH0gfSB9XG5cdC5uYXZfX2l0ZW0ge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogYXV0bztcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRuYXZCb3JkZXJDb2xvcjtcblx0XHQmOmhhcyg+IC5uYXZfX2J0bikge1xuXHRcdFx0Lm5hdl9fbmFtZSB7XG5cdFx0XHRcdHBhZGRpbmc6IGdhcCgxKSBnYXAoNCkgZ2FwKDEpIGdhcCgxLjUpOyB9IH0gfVxuXHQubmF2X19uYW1lIHtcblx0XHRwYWRkaW5nOiBnYXAoMSkgZ2FwKDEuNSk7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XG5cblx0Lm5hdl9fYnRuIHtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHQubmF2X19idG4taWNvbiB7XG5cdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH1cblx0XHQmLS1vbiB7XG5cdFx0XHQubmF2X19idG4taWNvbiB7XG5cdFx0XHRcdHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7IH0gfSB9XG5cdC5uYXZfX2xheWVyIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXgtaGVpZ2h0OiAxMDAlO1xuXHRcdGxlZnQ6IDEwMCU7XG5cdFx0dG9wOiAwO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcy1uYXZiZ0NvbG9yO1xuXHRcdGJvcmRlci13aWR0aDogMXB4IDAgMCAwO1xuXHRcdC5uYXZfX2l0ZW0ge1xuXHRcdFx0Lm5hdl9fbmFtZSB7XG5cdFx0XHRcdHBhZGRpbmc6IGdhcCgxKSBnYXAoNCkgZ2FwKDEpIGdhcCgxLjUpOyB9XG5cdFx0XHQubmF2X19sYXllciB7XG5cdFx0XHRcdHRvcDogMDsgfVxuXHRcdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkbmF2Qm9yZGVyQ29sb3I7IH1cblx0XHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRcdGJvcmRlci1ib3R0b206IDA7IH0gfVxuXHRcdCYtLW9uIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7IH0gfVxuXHQubmF2X19sYXllci0tZnVsbCB7XG5cdFx0PiAubmF2X19pdGVtIHtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmF5LTMwMDtcblx0XHRcdC5uYXZfX25hbWUge1xuXHRcdFx0XHRwYWRkaW5nOiBnYXAoMSkgZ2FwKDQpIGdhcCgxKSBnYXAoMS41KTtcblx0XHRcdFx0Y29sb3I6ICR0ZXh0Q29sb3I7XG5cdFx0XHRcdGJvcmRlci1sZWZ0LXdpZHRoOiAwOyB9XG5cdFx0XHQubmF2X19idG4ge1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4OyB9XG5cdFx0XHQubmF2X19sYXllciB7XG5cdFx0XHRcdHBhZGRpbmctdG9wOiAwO1xuXHRcdFx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0XHRcdGxlZnQ6IDEwMCU7XG5cdFx0XHRcdCYtLW9uIHtcblx0XHRcdFx0XHRsZWZ0OiAwOyB9XG5cdFx0XHRcdD4gLm5hdl9faXRlbSB7XG5cdFx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmF5LTMwMDtcblx0XHRcdFx0XHQubmF2X19uYW1lIHtcblx0XHRcdFx0XHRcdHBhZGRpbmc6IGdhcCgxKSBnYXAoMS41KTtcblx0XHRcdFx0XHRcdEBpbmNsdWRlIGZvbnQtc2l6ZSgyMHB4KTtcblx0XHRcdFx0XHRcdGNvbG9yOiAkdGV4dENvbG9yOyB9IH0gfSB9IH1cblx0Lm5hdl9fYm94LS10dXJub3ZlciB7XG5cdFx0Lm5hdl9fYnRuIHtcblx0XHRcdFx0Ji1pY29uIHtcblx0XHRcdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSgwKTsgfSB9XG5cdFx0Lm5hdl9fbGF5ZXIge1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cdFx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRcdGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2YmdDb2xvcjtcblx0XHRcdGJvcmRlci13aWR0aDogMDtcblx0XHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHRcdGxlZnQ6IDEwMCU7XG5cdFx0XHR6LWluZGV4OiAzO1xuXHRcdFx0dHJhbnNpdGlvbjogbGVmdCAuM3MgZWFzZS1vdXQ7XG5cdFx0XHQubmF2X19pdGVtIHtcblx0XHRcdFx0JjpudGgtY2hpbGQoMSkge1xuXHRcdFx0XHRcdGJvcmRlci10b3Atd2lkdGg6IDA7IH1cblx0XHRcdFx0JjpudGgtY2hpbGQoMikge1xuXHRcdFx0XHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkbmF2Qm9yZGVyQ29sb3I7IH1cblx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJG5hdkJvcmRlckNvbG9yOyB9IH1cblx0XHRcdCYtLW9uIHtcblx0XHRcdFx0bGVmdDogMDsgfSB9XG5cdFx0Lm5hdl9fcHJldiB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyOyB9IH1cblx0LmhlYWRlcl9fc2VhcmNoIHtcblx0XHRvcmRlcjogNDsgfVxuXHQuaGVhZGVyX19sYW5ndWFnZSB7XG5cdFx0b3JkZXI6IDM7IH1cblx0LmhhbWJ1cmdlciB7XG5cdFx0ZGlzcGxheTogZmxleDsgfVxuXHQuaGFtYnVyZ2VyLS1vbiB7XG5cdFx0aGVpZ2h0OiAkaGVhZGVyUGhvbmVIZWlnaHQ7XG5cdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdHRvcDogMDtcblx0XHRyaWdodDogZ2FwKDIpO1xuXHRcdHotaW5kZXg6IDk5OTtcblx0XHRzcGFuIHtcblx0XHRcdCY6bnRoLWNoaWxkKDEpIHtcblx0XHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOyB9XG5cdFx0XHQmOm50aC1jaGlsZCgyKSB7XG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSByb3RhdGUoNDVkZWcpOyB9XG5cdFx0XHQmOm50aC1jaGlsZCgzKSB7XG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSByb3RhdGUoLTQ1ZGVnKTsgfSB9IH1cblx0LmhlYWRlcl9fc2VhcmNoLWZvcm0ge1xuXHRcdHRvcDogJGhlYWRlclBob25lSGVpZ2h0OyB9XG5cdC5oZWFkZXJfX3NvY2lhbC1ib3gge1xuXHRcdHdpZHRoOiA0MHB4OyB9XG5cdC5oZWFkZXJfX3NvY2lhbC1idG4ge1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRkaXNwbGF5OiBmbGV4OyB9XG5cdC5oZWFkZXJfX3NlYXJjaC1pY29uIHtcblx0XHRmb250LXNpemU6IDIwcHg7IH1cblx0LmhlYWRlcl9fc29jaWFsIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0cGFkZGluZzogZ2FwKDEuNSkgZ2FwKDEpO1xuXHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHR0b3A6ICRoZWFkZXJQaG9uZUhlaWdodDtcblx0XHRsZWZ0OiAxMDAlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHR0cmFuc2l0aW9uOiBsZWZ0IC4zcyBlYXNlLW91dDtcblx0XHQmLS1vbiB7XG5cdFx0XHRsZWZ0OiAwOyB9IH0gfVxuQGluY2x1ZGUgcndkKDQ4MCkge1xuXHQuaGVhZGVyIHtcblx0XHQud3JhcHBlciB7XG5cdFx0XHRwYWRkaW5nOiAwIDAgMCBnYXAoMSk7IH1cblx0XHQuaGVhZGVyX19sYW5ndWFnZSB7XG5cdFx0XHRtYXJnaW4tbGVmdDogMDsgfVxuXHRcdC5oYW1idXJnZXItLW9uIHtcblx0XHRcdHJpZ2h0OiAwOyB9IH0gfVxuQGluY2x1ZGUgcndkKDM2MCkge1xuXHQubG9nb19faW1nIHtcblx0XHRpbWcge1xuXHRcdFx0d2lkdGg6IDIwMHB4OyB9IH0gfVxuIiwiLy9UaGlzIGlzIHNhc3MgZmlsZVxuQGltcG9ydCAnc3VzeSc7XG5AaW1wb3J0IFwidmFyaWFibGVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvblwiO1xuQGltcG9ydCBcIm1peGluXCI7XG5AaW1wb3J0IFwiZXh0ZW5kXCI7XG4iLCIvLyBTdXN5IChVbi1QcmVmaXhlZClcbi8vID09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0ICdzdXN5LXByZWZpeCc7XG5AaW1wb3J0ICdzdXN5L3VucHJlZml4JztcbiIsIi8vIFN1c3kgKFByZWZpeGVkKVxuLy8gPT09PT09PT09PT09PT09XG5cblxuQGltcG9ydCAndmVyc2lvbic7XG5AaW1wb3J0ICdzdXN5L3V0aWxpdGllcyc7XG5AaW1wb3J0ICdzdXN5L3N1LXZhbGlkYXRlJztcbkBpbXBvcnQgJ3N1c3kvc3UtbWF0aCc7XG5AaW1wb3J0ICdzdXN5L3NldHRpbmdzJztcbkBpbXBvcnQgJ3N1c3kvbm9ybWFsaXplJztcbkBpbXBvcnQgJ3N1c3kvcGFyc2UnO1xuQGltcG9ydCAnc3VzeS9zeW50YXgtaGVscGVycyc7XG5AaW1wb3J0ICdzdXN5L2FwaSc7XG4iLCIvLyBSZWxlYXNlIE1hbmFnZW1lbnQgaW4gU3VzeVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBTdXN5IFZlcnNpb24gW3ZhcmlhYmxlXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIFN1c3kgYmVpbmcgdXNlZC5cbi8vLyAtIFdlIHdpbGwgcmVsZWFzZSBhIG1ham9yIHZlcnNpb24gZm9yIGFueSBCUkVBS0lORyBjaGFuZ2VzLlxuLy8vIC0gV2Ugd2lsbCByZWxlYXNlIGEgbWlub3IgdmVyc2lvbiBmb3IgYW55IHNpZ25pZmljYW50IE5FVyBmZWF0dXJlcy5cbi8vLyAtIFdlIHdpbGwgcmVsZWFzZSBhIHBhdGNoIGZvciBhbnkgQlVHRklYIGNoYW5nZXMuXG4vLy9cbi8vLyBAZ3JvdXAgX3ZlcnNpb25cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAc2luY2UgMy4wLjFcbi8vL1xuLy8vIEBwcm9wIHtpbnRlZ2VyfSAnbWFqb3InIC0gdGhlIG1ham9yIHJlbGVhc2UgbnVtYmVyXG4vLy8gQHByb3Age2ludGVnZXJ9ICdtaW5vcicgLSB0aGUgbWlub3IgcmVsZWFzZSBudW1iZXJcbi8vLyBAcHJvcCB7aW50ZWdlcn0gJ3BhdGNoJyAtIHRoZSBwYXRjaCBudW1iZXJcbiRfc3VzeS12ZXJzaW9uOiAoXG4gICdtYWpvcic6IDMsXG4gICdtaW5vcic6IDAsXG4gICdwYXRjaCc6IDcsXG4pO1xuXG5cbi8vIFN1c3kgVmVyc2lvbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8vIFJldHVybnMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBTdXN5XG4vLy8gYXMgYSBzdHJpbmcgaW4gdGhlIGNvbW1vbiBgbWFqb3IubWlub3IucGF0Y2hgIGZvcm1hdCDigJNcbi8vLyBvciByZXR1cm5zIG9uZSBwYXJ0IChtYWpvciB8IG1pbm9yIHwgcGF0Y2gpIGFzIGEgbnVtYmVyXG4vLy8gZm9yIHZlcnNpb24gY29tcGFyaXNvbnMuXG4vLy8gU2luY2UgdmVyc2lvbiBudW1iZXJzIGFyZW4ndCBhY3R1YWwgZGVjaW1hbHMsXG4vLy8gdGhlcmUgaXMgbm8gc2ltcGxlIHdheSB0byByZXR1cm4gdGhlIGZ1bGwgdmVyc2lvblxuLy8vIGFzIGEgY29tcGFyYWJsZSBudW1iZXIgaW4gU2Fzcy5cbi8vL1xuLy8vIEBncm91cCBfdmVyc2lvblxuLy8vXG4vLy8gQHBhcmFtIHsnbWFqb3InIHwgJ21pbm9yJyB8ICdwYXRjaCd9ICRwYXJ0IFtudWxsXSAtXG4vLy8gICBUaGUgcGFydCAobWFqb3IgfCBtaW5vciB8IHBhdGNoKSB0byByZXR1cm4gYXMgYSBudW1iZXIuXG4vLy8gICBBbnkgb3RoZXIgdmFsdWUgd2lsbCByZXR1cm4gdGhlIGZ1bGwgdmVyc2lvbiBhcyBhIHN0cmluZy5cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3VycmVudCBTdXN5IFZlcnNpb25cbi8vLyAgIC8qIEZ1bGwgVmVyc2lvbjogI3tzdXN5LXZlcnNpb24oKX0gKi9cbi8vLyAgIC8qIE1ham9yIFJlbGVhc2U6ICN7c3VzeS12ZXJzaW9uKCdtYWpvcicpfSAqL1xuQGZ1bmN0aW9uIHN1c3ktdmVyc2lvbihcbiAgJHBhcnQ6IG51bGxcbikge1xuICAkbWFqb3I6IG1hcC1nZXQoJF9zdXN5LXZlcnNpb24sICdtYWpvcicpO1xuICAkbWlub3I6IG1hcC1nZXQoJF9zdXN5LXZlcnNpb24sICdtaW5vcicpO1xuICAkcGF0Y2g6IG1hcC1nZXQoJF9zdXN5LXZlcnNpb24sICdwYXRjaCcpO1xuICAkZnVsbDogJyN7JG1ham9yfS4jeyRtaW5vcn0uI3skcGF0Y2h9JztcblxuICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LXZlcnNpb24sICRwYXJ0KSBvciAkZnVsbDtcbn1cbiIsIi8vIFNhc3MgVXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PVxuLy8gLSBTdXN5IEVycm9yIE91dHB1dCBPdmVycmlkZSBbdmFyaWFibGVdXG4vLyAtIFN1c3kgRXJyb3IgW2Z1bmN0aW9uXVxuXG5cblxuLy8gU3VzeSBFcnJvciBPdXRwdXQgT3ZlcnJpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLy8gVHVybiBvZmYgZXJyb3Igb3V0cHV0IGZvciB0ZXN0aW5nXG4vLy8gQGdyb3VwIHgtdXRpbGl0eVxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuJF9zdXN5LWVycm9yLW91dHB1dC1vdmVycmlkZTogZmFsc2UgIWRlZmF1bHQ7XG5cblxuXG4vLyBTdXN5IEVycm9yXG4vLyAtLS0tLS0tLS0tXG4vLy8gT3B0aW9uYWxseSByZXR1cm4gZXJyb3IgbWVzc2FnZXMgd2l0aG91dCBmYWlsaW5nLFxuLy8vIGFzIGEgd2F5IHRvIHRlc3QgZXJyb3IgY2FzZXNcbi8vL1xuLy8vIEBncm91cCB4LXV0aWxpdHlcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7c3RyaW5nfSAkbWVzc2FnZSAtXG4vLy8gICBBIHVzZWZ1bCBlcnJvciBtZXNzYWdlLCBleHBsYWluaW5nIHRoZSBwcm9ibGVtXG4vLy8gQHBhcmFtIHtzdHJpbmd9ICRzb3VyY2UgLVxuLy8vICAgVGhlIG9yaWdpbmFsIHNvdXJjZSBvZiB0aGUgZXJyb3IgZm9yIGRlYnVnZ2luZ1xuLy8vIEBwYXJhbSB7Ym9vbH0gJG92ZXJyaWRlIFskX3N1c3ktZXJyb3Itb3V0cHV0LW92ZXJyaWRlXSAtXG4vLy8gICBPcHRpb25hbGx5IHJldHVybiB0aGUgZXJyb3IgcmF0aGVyIHRoYW4gZmFpbGluZ1xuLy8vIEByZXR1cm4ge3N0cmluZ30gLVxuLy8vICAgQ29tYmluZWQgZXJyb3Igd2l0aCBzb3VyY2UgYW5kIG1lc3NhZ2Vcbi8vLyBAdGhyb3dzIFdoZW4gYCRvdmVycmlkZSA9PSB0cnVlYFxuQGZ1bmN0aW9uIF9zdXN5LWVycm9yKFxuICAkbWVzc2FnZSxcbiAgJHNvdXJjZSxcbiAgJG92ZXJyaWRlOiAkX3N1c3ktZXJyb3Itb3V0cHV0LW92ZXJyaWRlXG4pIHtcbiAgQGlmICRvdmVycmlkZSB7XG4gICAgQHJldHVybiAnRVJST1IgWyN7JHNvdXJjZX1dICN7JG1lc3NhZ2V9JztcbiAgfVxuXG4gIEBlcnJvciAnWyN7JHNvdXJjZX1dICN7JG1lc3NhZ2V9Jztcbn1cblxuXG4vLyBTdSBJcyBDb21wYXJhYmxlXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLy8gQ2hlY2sgdGhhdCB0aGUgdW5pdHMgaW4gYSBncmlkIGFyZSBjb21wYXJhYmxlXG4vLy9cbi8vLyBAZ3JvdXAgX3ZhbGlkYXRpb25cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7bnVtYmVyc30gJGxlbmd0aHPigKYgLVxuLy8vICAgQXJnbGlzdCBvZiBhbGwgdGhlIG51bWJlciB2YWx1ZXMgdG8gY29tcGFyZVxuLy8vICAgKGNvbHVtbnMsIGd1dHRlcnMsIHNwYW4sIGV0Yylcbi8vL1xuLy8vIEByZXR1cm4geydmbHVpZCcgfCAnc3RhdGljJyB8IGZhbHNlfSAtXG4vLy8gICBUaGUgdHlwZSBvZiBzcGFuIChmbHVpZCBvciBzdGF0aWMpIHdoZW4gdW5pdHMgbWF0Y2gsXG4vLy8gICBvciBgZmFsc2VgIGZvciBtaXNtYXRjaGVkIHVuaXRzXG5AZnVuY3Rpb24gX3N1LWlzLWNvbXBhcmFibGUoXG4gICRsZW5ndGhzLi4uXG4pIHtcbiAgJGZpcnN0OiBudGgoJGxlbmd0aHMsIDEpO1xuXG4gIEBpZiAobGVuZ3RoKCRsZW5ndGhzKSA9PSAxKSB7XG4gICAgQHJldHVybiBpZih1bml0bGVzcygkZmlyc3QpLCAnZmx1aWQnLCAnc3RhdGljJyk7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkbGVuZ3Rocykge1xuICAgICRjb21wOiBudGgoJGxlbmd0aHMsICRpKTtcblxuICAgICRmYWlsOiBub3QgY29tcGFyYWJsZSgkZmlyc3QsICRjb21wKTtcbiAgICAkZmFpbDogJGZhaWwgb3IgKHVuaXRsZXNzKCRmaXJzdCkgYW5kIG5vdCB1bml0bGVzcygkY29tcCkpO1xuICAgICRmYWlsOiAkZmFpbCBvciAodW5pdGxlc3MoJGNvbXApIGFuZCBub3QgdW5pdGxlc3MoJGZpcnN0KSk7XG5cbiAgICBAaWYgJGZhaWwge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGlmKHVuaXRsZXNzKCRmaXJzdCksICdmbHVpZCcsICdzdGF0aWMnKTtcbn1cblxuXG4vLyBTdSBNYXAgQWRkIFVuaXRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLy8gVGhlIGNhbGMgZmVhdHVyZXMgdXNlIGEgbWFwIG9mIHVuaXRzIGFuZCB2YWx1ZXNcbi8vLyB0byBjb21waWxlIHRoZSBwcm9wZXIgYWxnb3J5dGhtLlxuLy8vIFRoaXMgZnVuY3Rpb24gYWRkcyBhIG5ldyB2YWx1ZSB0byBhbnkgY29tcGFyYWJsZSBleGlzdGluZyB1bml0L3ZhbHVlLFxuLy8vIG9yIGFkZHMgYSBuZXcgdW5pdC92YWx1ZSBwYWlyIHRvIHRoZSBtYXBcbi8vL1xuLy8vIEBncm91cCB4LXV0aWxpdHlcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7bWFwfSAkbWFwIC1cbi8vLyAgIEEgbWFwIG9mIHVuaXQvdmFsdWUgcGFpcnMsIGUuZy4gKCdweCc6IDEyMHB4KVxuLy8vIEBwYXJhbSB7bGVuZ3RofSAkdmFsdWUgLVxuLy8vICAgQSBuZXcgbGVuZ3RoIHRvIGJlIGFkZGVkIHRvIHRoZSBtYXBcbi8vLyBAcmV0dXJuIHttYXB9IC1cbi8vLyAgIFRoZSB1cGRhdGVkIG1hcCwgd2l0aCBuZXcgdmFsdWUgYWRkZWRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLVxuLy8vICAgJG1hcDogKDBweDogMTIwcHgpO1xuLy8vICAgJG1hcDogX3N1LW1hcC1hZGQtdW5pdHMoJG1hcCwgMWluKTsgLy8gYWRkIGEgY29tcGFyYWJsZSB1bml0XG4vLy8gICAkbWFwOiBfc3UtbWFwLWFkZC11bml0cygkbWFwLCAzdncpOyAvLyBhZGQgYSBuZXcgdW5pdFxuLy8vXG4vLy8gICBAZWFjaCAkdW5pdHMsICR2YWx1ZSBpbiAkbWFwIHtcbi8vLyAgICAgLyogI3skdW5pdHN9OiAjeyR2YWx1ZX0gKi9cbi8vLyAgIH1cbkBmdW5jdGlvbiBfc3UtbWFwLWFkZC11bml0cyhcbiAgJG1hcCxcbiAgJHZhbHVlXG4pIHtcbiAgJHVuaXQ6ICR2YWx1ZSAqIDA7XG4gICRoYXM6IG1hcC1nZXQoJG1hcCwgJHVuaXQpIG9yIDA7XG5cbiAgQGlmICgkaGFzID09IDApIHtcbiAgICBAZWFjaCAkdHJ5LCAkY291bGQgaW4gJG1hcCB7XG4gICAgICAkbWF0Y2g6IGNvbXBhcmFibGUoJHRyeSwgJHZhbHVlKTtcbiAgICAgICR1bml0OiBpZigkbWF0Y2gsICR0cnksICR1bml0KTtcbiAgICAgICRoYXM6IGlmKCRtYXRjaCwgJGNvdWxkLCAkaGFzKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkbWFwLCAoJHVuaXQ6ICRoYXMgKyAkdmFsdWUpKTtcbn1cblxuXG4vLyBTdXN5IEZsYXR0ZW5cbi8vIC0tLS0tLS0tLS0tLVxuLy8vIEZsYXR0ZW4gYSBtdWx0aWRpbWVuc2lvbmFsIGxpc3Rcbi8vL1xuLy8vIEBncm91cCB4LXV0aWxpdHlcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7bGlzdH0gJGxpc3QgLVxuLy8vICAgVGhlIGxpc3QgdG8gYmUgZmxhdHRlbmVkXG4vLy8gQHJldHVybiB7bGlzdH0gLVxuLy8vICAgVGhlIGZsYXR0ZW5lZCBsaXN0XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC1cbi8vLyAgICRsaXN0OiAxMjBweCAoMzBlbSAzMGVtKSAxMjBweDtcbi8vLyAgIC8qICN7X3N1c3ktZmxhdHRlbigkbGlzdCl9ICovXG5AZnVuY3Rpb24gX3N1c3ktZmxhdHRlbihcbiAgJGxpc3Rcbikge1xuICAkZmxhdDogKCk7XG5cbiAgLy8gRG9uJ3QgaXRlcmF0ZSBvdmVyIG1hcHNcbiAgQGlmICh0eXBlLW9mKCRsaXN0KSA9PSAnbWFwJykge1xuICAgIEByZXR1cm4gJGxpc3Q7XG4gIH1cblxuICAvLyBJdGVyYXRlIG92ZXIgbGlzdHMgKG9yIHNpbmdsZSBpdGVtcylcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiAodHlwZS1vZigkaXRlbSkgPT0gJ2xpc3QnKSB7XG4gICAgICAkaXRlbTogX3N1c3ktZmxhdHRlbigkaXRlbSk7XG4gICAgICAkZmxhdDogam9pbigkZmxhdCwgJGl0ZW0pO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGZsYXQ6IGFwcGVuZCgkZmxhdCwgJGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybiBmbGF0dGVuZWQgbGlzdFxuICBAcmV0dXJuICRmbGF0O1xufVxuIiwiLy8vIFZhbGlkYXRpb25cbi8vLyA9PT09PT09PT09XG4vLy8gRWFjaCBhcmd1bWVudCB0byBTdSBoYXMgYSBzaW5nbGUgY2Fub25pY2FsIHN5bnRheC5cbi8vLyBUaGVzZSB2YWxpZGF0aW9uIGZ1bmN0aW9ucyBjaGVjayB0byBlbnN1cmVcbi8vLyB0aGF0IGVhY2ggYXJndW1lbnQgaXMgdmFsaWQsXG4vLy8gaW4gb3JkZXIgdG8gcHJvdmlkZSB1c2VmdWwgZXJyb3JzXG4vLy8gYmVmb3JlIGF0dGVtcHRpbmcgdG8gY2FsY3VsYXRlIHRoZSByZXN1bHRzL1xuLy8vXG4vLy8gQGdyb3VwIF92YWxpZGF0aW9uXG4vLy9cbi8vLyBAc2VlIHN1LXZhbGlkLWNvbHVtbnNcbi8vLyBAc2VlIHN1LXZhbGlkLWd1dHRlcnNcbi8vLyBAc2VlIHN1LXZhbGlkLXNwcmVhZFxuLy8vIEBzZWUgc3UtdmFsaWQtbG9jYXRpb25cblxuXG5cbi8vIFZhbGlkIFNwYW5cbi8vIC0tLS0tLS0tLS1cbi8vLyBDaGVjayB0aGF0IHRoZSBgc3BhbmAgYXJndW1lbnRcbi8vLyBpcyBhIG51bWJlciwgbGVuZ3RoLCBvciBjb2x1bW4tbGlzdFxuLy8vXG4vLy8gQGdyb3VwIF92YWxpZGF0aW9uXG4vLy9cbi8vLyBAcGFyYW0ge251bWJlciB8IGxpc3R9ICRzcGFuIC1cbi8vLyAgIE51bWJlciBvZiBjb2x1bW5zLCBvciBsZW5ndGggb2Ygc3BhblxuLy8vXG4vLy8gQHJldHVybiB7bnVtYmVyIHwgbGlzdH0gLVxuLy8vICAgVmFsaWRhdGVkIGAkc3BhbmAgbnVtYmVyLCBsZW5ndGgsIG9yIGNvbHVtbnMgbGlzdFxuLy8vXG4vLy8gQHRocm93XG4vLy8gICB3aGVuIHNwYW4gdmFsdWUgaXMgbm90IGEgbnVtYmVyLCBvciB2YWxpZCBjb2x1bW4gbGlzdFxuQGZ1bmN0aW9uIHN1LXZhbGlkLXNwYW4oXG4gICRzcGFuXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJHNwYW4pO1xuICBAaWYgKCR0eXBlID09ICdudW1iZXInKSB7XG4gICAgQHJldHVybiAkc3BhbjtcbiAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSBhbmQgc3UtdmFsaWQtY29sdW1ucygkc3BhbiwgJ3NpbGVudC1mYWlsdXJlJykge1xuICAgIEByZXR1cm4gJHNwYW47XG4gIH1cblxuICAkYWN0dWFsOiAnWyN7dHlwZS1vZigkc3Bhbil9XSBgI3tpbnNwZWN0KCRzcGFuKX1gJztcbiAgQHJldHVybiBfc3VzeS1lcnJvcihcbiAgICAnI3skYWN0dWFsfSBpcyBub3QgYSB2YWxpZCBudW1iZXIsIGxlbmd0aCwgb3IgY29sdW1uLWxpc3QgZm9yICRzcGFuLicsXG4gICAgJ3N1LXZhbGlkLXNwYW4nKTtcbn1cblxuXG5cbi8vIFZhbGlkIENvbHVtbnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vLyBDaGVjayB0aGF0IHRoZSBgY29sdW1uc2AgYXJndW1lbnQgaXMgYSB2YWxpZFxuLy8vIGxpc3Qgb2YgY29sdW1uLWxlbmd0aHNcbi8vL1xuLy8vIEBncm91cCBfdmFsaWRhdGlvblxuLy8vXG4vLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtXG4vLy8gICBMaXN0IG9mIGNvbHVtbi1sZW5ndGhzXG4vLy8gQHBhcmFtIHtib29sfSAkc2lsZW50LWZhaWx1cmUgW3RydWVdIC1cbi8vLyAgIFNldCBmYWxzZSB0byByZXR1cm4gbnVsbCBvbiBmYWlsdXJlXG4vLy9cbi8vLyBAcmV0dXJuIHtsaXN0fSAtXG4vLy8gICBWYWxpZGF0ZWQgYCRjb2x1bW5zYCBsaXN0XG4vLy9cbi8vLyBAdGhyb3dcbi8vLyAgIHdoZW4gY29sdW1uIHZhbHVlIGlzIG5vdCBhIHZhbGlkIGxpc3Qgb2YgbnVtYmVyc1xuQGZ1bmN0aW9uIHN1LXZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50LWZhaWx1cmU6IGZhbHNlXG4pIHtcbiAgQGlmICh0eXBlLW9mKCRjb2x1bW5zKSA9PSAnbGlzdCcpIHtcbiAgICAkZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkY29sIGluICRjb2x1bW5zIHtcbiAgICAgIEBpZiAodHlwZS1vZigkY29sKSAhPSAnbnVtYmVyJykge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgbm90ICRmYWlsIHtcbiAgICAgIEByZXR1cm4gJGNvbHVtbnM7XG4gICAgfVxuICB9XG5cbiAgLy8gU2lsZW50IEZhaWx1cmVcbiAgQGlmICRzaWxlbnQtZmFpbHVyZSB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gRXJyb3IgTWVzc2FnZVxuICAkYWN0dWFsOiAnWyN7dHlwZS1vZigkY29sdW1ucyl9XSBgI3tpbnNwZWN0KCRjb2x1bW5zKX1gJztcblxuICBAcmV0dXJuIF9zdXN5LWVycm9yKFxuICAgICcjeyRhY3R1YWx9IGlzIG5vdCBhIHZhbGlkIGxpc3Qgb2YgbnVtYmVycyBmb3IgJGNvbHVtbnMuJyxcbiAgICAnc3UtdmFsaWQtY29sdW1ucycpO1xufVxuXG5cblxuLy8gVmFsaWQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8vIENoZWNrIHRoYXQgdGhlIGBndXR0ZXJzYCBhcmd1bWVudCBpcyBhIHZhbGlkIG51bWJlclxuLy8vXG4vLy8gQGdyb3VwIF92YWxpZGF0aW9uXG4vLy9cbi8vLyBAcGFyYW0ge251bWJlcn0gJGd1dHRlcnMgLVxuLy8vICAgV2lkdGggb2YgYSBndXR0ZXJcbi8vL1xuLy8vIEByZXR1cm4ge251bWJlcn0gLVxuLy8vICAgVmFsaWRhdGVkIGAkZ3V0dGVyc2AgbnVtYmVyXG4vLy9cbi8vLyBAdGhyb3dcbi8vLyAgIHdoZW4gZ3V0dGVyIHZhbHVlIGlzIG5vdCBhIG51bWJlclxuQGZ1bmN0aW9uIHN1LXZhbGlkLWd1dHRlcnMoXG4gICRndXR0ZXJzXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuXG4gIEBpZiAoJHR5cGUgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICRndXR0ZXJzO1xuICB9XG5cbiAgJGFjdHVhbDogJ1sjeyR0eXBlfV0gYCN7aW5zcGVjdCgkZ3V0dGVycyl9YCc7XG4gIEByZXR1cm4gX3N1c3ktZXJyb3IoXG4gICAgJyN7JGFjdHVhbH0gaXMgbm90IGEgbnVtYmVyIG9yIGxlbmd0aCBmb3IgJGd1dHRlcnMuJyxcbiAgICAnc3UtdmFsaWQtZ3V0dGVycycpO1xufVxuXG5cblxuLy8gVmFsaWQgU3ByZWFkXG4vLyAtLS0tLS0tLS0tLS1cbi8vLyBDaGVjayB0aGF0IHRoZSBgc3ByZWFkYCBhcmd1bWVudCBpcyBhIHZhbGlkXG4vLy8gaW50aWdlciBiZXR3ZWVuIGAtMWAgYW5kIGAxYFxuLy8vXG4vLy8gQGdyb3VwIF92YWxpZGF0aW9uXG4vLy9cbi8vLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRzcHJlYWQgLVxuLy8vICAgTnVtYmVyIG9mIGd1dHRlcnMgdG8gaW5jbHVkZSBpbiBhIHNwYW4sXG4vLy8gICByZWxhdGl2ZSB0byB0aGUgbnVtYmVyIGNvbHVtbnNcbi8vL1xuLy8vIEByZXR1cm4gezAgfCAxIHwgLTF9IC1cbi8vLyAgIFZhbGlkYXRlZCBgJHNwcmVhZGAgbnVtYmVyXG4vLy9cbi8vLyBAdGhyb3dcbi8vLyAgIHdoZW4gc3ByZWFkIHZhbHVlIGlzIG5vdCBhIHZhbGlkIHNwcmVhZFxuQGZ1bmN0aW9uIHN1LXZhbGlkLXNwcmVhZChcbiAgJHNwcmVhZFxuKSB7XG4gIEBpZiBpbmRleCgwIDEgLTEsICRzcHJlYWQpIHtcbiAgICBAcmV0dXJuICRzcHJlYWQ7XG4gIH1cblxuICAkYWN0dWFsOiAnWyN7dHlwZS1vZigkc3ByZWFkKX1dIGAje2luc3BlY3QoJHNwcmVhZCl9YCc7XG4gIEByZXR1cm4gX3N1c3ktZXJyb3IoXG4gICAgJyN7JGFjdHVhbH0gaXMgbm90IGEgbm9ybWFsaXplZCBbMCB8IDEgfCAtMV0gdmFsdWUgZm9yIGAkc3ByZWFkYC4nLFxuICAgICdzdS12YWxpZC1zcHJlYWQnKTtcbn1cblxuXG5cbi8vIFZhbGlkIExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8vIENoZWNrIHRoYXQgdGhlIGBsb2NhdGlvbmAgYXJndW1lbnQgaXMgYSB2YWxpZCBudW1iZXIsXG4vLy8gd2l0aGluIHRoZSBzY29wZSBvZiBhdmFpbGFibGUgY29sdW1uc1xuLy8vXG4vLy8gQGdyb3VwIF92YWxpZGF0aW9uXG4vLy9cbi8vLyBAcGFyYW0ge251bWJlcn0gJHNwYW4gLVxuLy8vICAgTnVtYmVyIG9mIGdyaWQtY29sdW1ucyB0byBiZSBzcGFubmVkXG4vLy8gQHBhcmFtIHtpbnRlZ2VyIHwgc3RyaW5nfSAkbG9jYXRpb24gLVxuLy8vICAgU3RhcnRpbmcgKDEtaW5kZXhlZCkgY29sdW1uLXBvc2l0aW9uIG9mIHRoYXQgc3BhblxuLy8vIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLVxuLy8vICAgTGlzdCBvZiBhdmFpbGFibGUgY29sdW1ucyBpbiB0aGUgZ3JpZFxuLy8vXG4vLy8gQHJldHVybiB7aW50ZWdlcn0gLVxuLy8vICAgVmFsaWRhdGVkIGAkbG9jYXRpb25gIGludGlnZXJcbi8vL1xuLy8vIEB0aHJvd1xuLy8vICAgd2hlbiBsb2NhdGlvbiB2YWx1ZSBpcyBub3QgYSB2YWxpZCBpbmRleCxcbi8vLyAgIGdpdmVuIHRoZSBjb250ZXh0IGFuZCBzcGFuLlxuQGZ1bmN0aW9uIHN1LXZhbGlkLWxvY2F0aW9uKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uc1xuKSB7XG4gICRjb3VudDogbGVuZ3RoKCRjb2x1bW5zKTtcblxuICBAaWYgJGxvY2F0aW9uIHtcbiAgICBAaWYgKHR5cGUtb2YoJGxvY2F0aW9uKSAhPSAnbnVtYmVyJykgb3IgKG5vdCB1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgICAkYWN0dWFsOiAnWyN7dHlwZS1vZigkbG9jYXRpb24pfV0gYCN7JGxvY2F0aW9ufWAnO1xuICAgICAgQHJldHVybiBfc3VzeS1lcnJvcihcbiAgICAgICAgJyN7JGFjdHVhbH0gaXMgbm90IGEgdW5pdGxlc3MgbnVtYmVyIGZvciAkbG9jYXRpb24uJyxcbiAgICAgICAgJ3N1LXZhbGlkLWxvY2F0aW9uJyk7XG4gICAgfSBAZWxzZSBpZiAocm91bmQoJGxvY2F0aW9uKSAhPSAkbG9jYXRpb24pIHtcbiAgICAgIEByZXR1cm4gX3N1c3ktZXJyb3IoXG4gICAgICAgICdMb2NhdGlvbiAoYCN7JGxvY2F0aW9ufWApIG11c3QgYmUgYSAxLWluZGV4ZWQgaW50aWdlciBwb3NpdGlvbi4nLFxuICAgICAgICAnc3UtdmFsaWQtbG9jYXRpb24nKTtcbiAgICB9IEBlbHNlIGlmICgkbG9jYXRpb24gPiAkY291bnQpIG9yICgkbG9jYXRpb24gPCAxKSB7XG4gICAgICBAcmV0dXJuIF9zdXN5LWVycm9yKFxuICAgICAgICAnUG9zaXRpb24gYCN7JGxvY2F0aW9ufWAgZG9lcyBub3QgZXhpc3QgaW4gZ3JpZCBgI3skY29sdW1uc31gLicsXG4gICAgICAgICdzdS12YWxpZC1sb2NhdGlvbicpO1xuICAgIH0gQGVsc2UgaWYgKCRsb2NhdGlvbiArICRzcGFuIC0gMSA+ICRjb3VudCkge1xuICAgICAgJGRldGFpbHM6ICdncmlkIGAjeyRjb2x1bW5zfWAgZm9yIHNwYW4gYCN7JHNwYW59YCBhdCBgI3skbG9jYXRpb259YCc7XG4gICAgICBAcmV0dXJuIF9zdXN5LWVycm9yKFxuICAgICAgICAnVGhlcmUgYXJlIG5vdCBlbm91Z2ggY29sdW1ucyBpbiAjeyRkZXRhaWxzfS4nLFxuICAgICAgICAnc3UtdmFsaWQtbG9jYXRpb24nKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvbjtcbn1cbiIsIi8vLyBHcmlkIE1hdGggRW5naW5lXG4vLy8gPT09PT09PT09PT09PT09PVxuLy8vIFRoZSBgc3VgIGZ1bmN0aW9ucyBnaXZlIHlvdSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBtYXRoIGxheWVyLFxuLy8vIHdpdGhvdXQgYW55IHN5bnRheC1zdWdhciBsaWtlIHNob3J0aGFuZCBwYXJzaW5nLCBhbmQgbm9ybWFsaXphdGlvbi5cbi8vLyBJZiB5b3UgcHJlZmVyIG5hbWVkIGFyZ3VtZW50cywgYW5kIHN0cmlwcGVkLWRvd24gc3ludGF4LFxuLy8vIHlvdSBjYW4gdXNlIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseSBpbiB5b3VyIGNvZGUg4oCTXG4vLy8gcmVwbGFjaW5nIGBzcGFuYCwgYGd1dHRlcmAsIGFuZCBgc2xpY2VgLlxuLy8vXG4vLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBhbHNvIHVzZWZ1bFxuLy8vIGZvciBidWlsZGluZyBtaXhpbnMgb3Igb3RoZXIgZXh0ZW5zaW9ucyB0byBTdXN5LlxuLy8vIEFwcGx5IHRoZSBTdXN5IHN5bnRheCB0byBuZXcgbWl4aW5zIGFuZCBmdW5jdGlvbnMsXG4vLy8gdXNpbmcgb3VyIFwiUGx1Z2luIEhlbHBlcnNcIixcbi8vLyBvciB3cml0ZSB5b3VyIG93biBzeW50YXggYW5kIHBhc3MgdGhlIG5vcm1hbGl6ZWQgcmVzdWx0cyBhbG9uZ1xuLy8vIHRvIGBzdWAgZm9yIGNvbXBpbGF0aW9uLlxuLy8vXG4vLy8gQGdyb3VwIHN1LW1hdGhcbi8vL1xuLy8vIEBzZWUgc3Utc3BhblxuLy8vIEBzZWUgc3UtZ3V0dGVyXG4vLy8gQHNlZSBzdS1zbGljZVxuLy8vIEBpZ25vcmUgX3N1LXN1bVxuLy8vIEBpZ25vcmUgX3N1LWNhbGMtc3BhblxuLy8vIEBpZ25vcmUgX3N1LWNhbGMtc3VtXG4vLy8gQGlnbm9yZSBfc3UtbmVlZHMtY2FsYy1vdXRwdXRcblxuXG5cbi8vIFN1IFNwYW5cbi8vIC0tLS0tLS1cbi8vLyBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIGEgQ1NTLXJlYWR5IHNwYW4gd2lkdGgsXG4vLy8gYmFzZWQgb24gbm9ybWFsaXplZCBzcGFuIGFuZCBjb250ZXh0IGRhdGEg4oCTXG4vLy8gYSBsb3ctbGV2ZWwgdmVyc2lvbiBvZiBgc3VzeS1zcGFuYCxcbi8vLyB3aXRoIGFsbCBvZiB0aGUgbG9naWMgYW5kIG5vbmUgb2YgdGhlIHN5bnRheCBzdWdhci5cbi8vL1xuLy8vIC0gR3JpZHMgZGVmaW5lZCB3aXRoIHVuaXRsZXNzIG51bWJlcnMgd2lsbCByZXR1cm4gYCVgIHZhbHVlcy5cbi8vLyAtIEdyaWRzIGRlZmluZWQgd2l0aCBjb21wYXJhYmxlIHVuaXRzXG4vLy8gICB3aWxsIHJldHVybiBhIHZhbHVlIGluIHRoZSB1bml0cyBwcm92aWRlZC5cbi8vLyAtIEdyaWRzIGRlZmluZWQgd2l0aCBhIG1peCBvZiB1bml0cyxcbi8vLyAgIG9yIGEgY29tYmluYXRpb24gb2YgdW50aWxlc3MgbnVtYmVycyBhbmQgdW5pdC1sZW5ndGhzLFxuLy8vICAgd2lsbCByZXR1cm4gYSBgY2FsYygpYCBzdHJpbmcuXG4vLy9cbi8vLyBAZ3JvdXAgc3UtbWF0aFxuLy8vIEBzZWUgc3VzeS1zcGFuXG4vLy9cbi8vLyBAcGFyYW0ge251bWJlciB8IGxpc3R9ICRzcGFuIC1cbi8vLyAgIE51bWJlciBvciBsaXN0IG9mIGdyaWQgY29sdW1ucyB0byBzcGFuXG4vLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtXG4vLy8gICBMaXN0IG9mIGNvbHVtbnMgYXZhaWxhYmxlXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRndXR0ZXJzIC1cbi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyIGluIGNvbHVtbi1jb21wYXJhYmxlIHVuaXRzXG4vLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkc3ByZWFkIC1cbi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsXG4vLy8gICByZWxhdGl2ZSB0byBgc3BhbmAgY291bnRcbi8vLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRjb250YWluZXItc3ByZWFkIFskc3ByZWFkXSAtXG4vLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLFxuLy8vICAgcmVsYXRpdmUgdG8gYGNvbHVtbnNgIGNvdW50XG4vLy8gQHBhcmFtIHtpbnRlZ2VyfSAkbG9jYXRpb24gWzFdIC1cbi8vLyAgIE9wdGlvbmFsIHBvc2l0aW9uIG9mIHN1Yi1zcGFuIGFtb25nIGZ1bGwgc2V0IG9mIGNvbHVtbnNcbi8vL1xuLy8vIEByZXR1cm4ge2xlbmd0aH0gLVxuLy8vICAgUmVsYXRpdmUgb3Igc3RhdGljIGxlbmd0aCBvZiBhIHNwYW4gb24gdGhlIGdyaWRcbkBmdW5jdGlvbiBzdS1zcGFuKFxuICAkc3BhbixcbiAgJGNvbHVtbnMsXG4gICRndXR0ZXJzLFxuICAkc3ByZWFkLFxuICAkY29udGFpbmVyLXNwcmVhZDogJHNwcmVhZCxcbiAgJGxvY2F0aW9uOiAxXG4pIHtcbiAgJHNwYW46IHN1LXZhbGlkLXNwYW4oJHNwYW4pO1xuICAkY29sdW1uczogc3UtdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwcmVhZDogc3UtdmFsaWQtc3ByZWFkKCRzcHJlYWQpO1xuXG4gIEBpZiAodHlwZS1vZigkc3BhbikgPT0gJ251bWJlcicpIHtcbiAgICBAaWYgKG5vdCB1bml0bGVzcygkc3BhbikpIHtcbiAgICAgIEByZXR1cm4gJHNwYW47XG4gICAgfVxuXG4gICAgJGxvY2F0aW9uOiBzdS12YWxpZC1sb2NhdGlvbigkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG4gICAgJHNwYW46IHN1LXNsaWNlKCRzcGFuLCAkY29sdW1ucywgJGxvY2F0aW9uLCAkdmFsaWRhdGU6IGZhbHNlKTtcbiAgfVxuXG4gIEBpZiBfc3UtbmVlZHMtY2FsYy1vdXRwdXQoJHNwYW4sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCwgbm90ICd2YWxpZGF0ZScpIHtcbiAgICBAcmV0dXJuIF9zdS1jYWxjLXNwYW4oJHNwYW4sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCwgJGNvbnRhaW5lci1zcHJlYWQsIG5vdCAndmFsaWRhdGUnKTtcbiAgfVxuXG4gICRzcGFuLXdpZHRoOiBfc3Utc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCwgJHZhbGlkYXRlOiBmYWxzZSk7XG5cbiAgQGlmIHVuaXRsZXNzKCRzcGFuLXdpZHRoKSB7XG4gICAgJGNvbnRhaW5lci1zcHJlYWQ6IHN1LXZhbGlkLXNwcmVhZCgkY29udGFpbmVyLXNwcmVhZCk7XG4gICAgJGNvbnRhaW5lcjogX3N1LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsICRjb250YWluZXItc3ByZWFkLCAkdmFsaWRhdGU6IGZhbHNlKTtcbiAgICBAcmV0dXJuIHBlcmNlbnRhZ2UoJHNwYW4td2lkdGggLyAkY29udGFpbmVyKTtcbiAgfVxuXG4gIEByZXR1cm4gJHNwYW4td2lkdGg7XG59XG5cblxuXG4vLyBTdSBHdXR0ZXJcbi8vIC0tLS0tLS0tLVxuLy8vIENhbGN1bGF0ZXMgYW5kIHJldHVybnMgYSBDU1MtcmVhZHkgZ3V0dGVyIHdpZHRoLFxuLy8vIGJhc2VkIG9uIG5vcm1hbGl6ZWQgZ3JpZCBkYXRhIOKAk1xuLy8vIGEgbG93LWxldmVsIHZlcnNpb24gb2YgYHN1c3ktZ3V0dGVyYCxcbi8vLyB3aXRoIGFsbCBvZiB0aGUgbG9naWMgYW5kIG5vbmUgb2YgdGhlIHN5bnRheCBzdWdhci5cbi8vL1xuLy8vIC0gR3JpZHMgZGVmaW5lZCB3aXRoIHVuaXRsZXNzIG51bWJlcnMgd2lsbCByZXR1cm4gYCVgIHZhbHVlcy5cbi8vLyAtIEdyaWRzIGRlZmluZWQgd2l0aCBjb21wYXJhYmxlIHVuaXRzXG4vLy8gICB3aWxsIHJldHVybiBhIHZhbHVlIGluIHRoZSB1bml0cyBwcm92aWRlZC5cbi8vLyAtIEdyaWRzIGRlZmluZWQgd2l0aCBhIG1peCBvZiB1bml0cyxcbi8vLyAgIG9yIGEgY29tYmluYXRpb24gb2YgdW50aWxlc3MgbnVtYmVycyBhbmQgdW5pdC1sZW5ndGhzLFxuLy8vICAgd2lsbCByZXR1cm4gYSBgY2FsYygpYCBzdHJpbmcuXG4vLy9cbi8vLyBAZ3JvdXAgc3UtbWF0aFxuLy8vIEBzZWUgc3VzeS1ndXR0ZXJcbi8vL1xuLy8vIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLVxuLy8vICAgTGlzdCBvZiBjb2x1bW5zIGluIHRoZSBncmlkXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRndXR0ZXJzIC1cbi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyIGluIGNvbHVtbi1jb21wYXJhYmxlIHVuaXRzXG4vLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkY29udGFpbmVyLXNwcmVhZCAtXG4vLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLFxuLy8vICAgcmVsYXRpdmUgdG8gYGNvbHVtbnNgIGNvdW50XG4vLy9cbi8vLyBAcmV0dXJuIHtsZW5ndGh9IC1cbi8vLyAgIFJlbGF0aXZlIG9yIHN0YXRpYyBsZW5ndGggb2Ygb25lIGd1dHRlciBpbiBhIGdyaWRcbkBmdW5jdGlvbiBzdS1ndXR0ZXIoXG4gICRjb2x1bW5zLFxuICAkZ3V0dGVycyxcbiAgJGNvbnRhaW5lci1zcHJlYWRcbikge1xuICBAaWYgKHR5cGUtb2YoJGd1dHRlcnMpID09ICdudW1iZXInKSB7XG4gICAgQGlmICgkZ3V0dGVycyA9PSAwKSBvciAobm90IHVuaXRsZXNzKCRndXR0ZXJzKSkge1xuICAgICAgQHJldHVybiAkZ3V0dGVycztcbiAgICB9XG4gIH1cblxuICBAaWYgX3N1LW5lZWRzLWNhbGMtb3V0cHV0KCRndXR0ZXJzLCAkY29sdW1ucywgJGd1dHRlcnMsIC0xLCBub3QgJ3ZhbGlkYXRlJykge1xuICAgIEByZXR1cm4gX3N1LWNhbGMtc3BhbigkZ3V0dGVycywgJGNvbHVtbnMsICRndXR0ZXJzLCAtMSwgJGNvbnRhaW5lci1zcHJlYWQsIG5vdCAndmFsaWRhdGUnKTtcbiAgfVxuXG4gICRjb250YWluZXI6IF9zdS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCAkY29udGFpbmVyLXNwcmVhZCk7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkZ3V0dGVycyAvICRjb250YWluZXIpO1xufVxuXG5cblxuLy8gU3UgU2xpY2Vcbi8vIC0tLS0tLS0tXG4vLy8gUmV0dXJucyBhIGxpc3Qgb2YgY29sdW1uc1xuLy8vIGJhc2VkIG9uIGEgZ2l2ZW4gc3Bhbi9sb2NhdGlvbiBzbGljZSBvZiB0aGUgZ3JpZCDigJNcbi8vLyBhIGxvdy1sZXZlbCB2ZXJzaW9uIG9mIGBzdXN5LXNsaWNlYCxcbi8vLyB3aXRoIGFsbCBvZiB0aGUgbG9naWMgYW5kIG5vbmUgb2YgdGhlIHN5bnRheCBzdWdhci5cbi8vL1xuLy8vIEBncm91cCBzdS1tYXRoXG4vLy8gQHNlZSBzdXN5LXNsaWNlXG4vLy9cbi8vLyBAcGFyYW0ge251bWJlcn0gJHNwYW4gLVxuLy8vICAgTnVtYmVyIG9mIGdyaWQgY29sdW1ucyB0byBzcGFuXG4vLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtXG4vLy8gICBMaXN0IG9mIGNvbHVtbnMgaW4gdGhlIGdyaWRcbi8vLyBAcGFyYW0ge251bWJlcn0gJGxvY2F0aW9uIFsxXSAtXG4vLy8gICBTdGFydGluZyBpbmRleCBvZiBhIHNwYW4gaW4gdGhlIGxpc3Qgb2YgY29sdW1uc1xuLy8vIEBwYXJhbSB7Ym9vbH0gJHZhbGlkYXRlIFt0cnVlXSAtXG4vLy8gICBDaGVjayB0aGF0IGFyZ3VtZW50cyBhcmUgdmFsaWQgYmVmb3JlIHByb2NlZWRpbmdcbi8vL1xuLy8vIEByZXR1cm4ge2xpc3R9IC1cbi8vLyAgIFN1YnNldCBsaXN0IG9mIGdyaWQgY29sdW1ucywgYmFzZWQgb24gc3BhbiBhbmQgbG9jYXRpb25cbkBmdW5jdGlvbiBzdS1zbGljZShcbiAgJHNwYW4sXG4gICRjb2x1bW5zLFxuICAkbG9jYXRpb246IDEsXG4gICR2YWxpZGF0ZTogdHJ1ZVxuKSB7XG4gIEBpZiAkdmFsaWRhdGUge1xuICAgICRjb2x1bW5zOiBzdS12YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgICAkbG9jYXRpb246IHN1LXZhbGlkLWxvY2F0aW9uKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbiAgfVxuXG4gICRmbG9vcjogZmxvb3IoJHNwYW4pO1xuICAkc3ViLWNvbHVtbnM6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRmbG9vcikge1xuICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICB9XG5cbiAgQGlmICRmbG9vciAhPSAkc3BhbiB7XG4gICAgJHJlbWFpbmRlcjogJHNwYW4gLSAkZmxvb3I7XG4gICAgJGNvbHVtbjogJGxvY2F0aW9uICsgJGZsb29yO1xuICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkY29sdW1uKSAqICRyZW1haW5kZXIpO1xuICB9XG5cbiAgQHJldHVybiAkc3ViLWNvbHVtbnM7XG59XG5cblxuXG4vLyBTdSBTdW1cbi8vIC0tLS0tLVxuLy8vIEdldCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dC5cbi8vL1xuLy8vIEBncm91cCBzdS1tYXRoXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge2xpc3R9ICRjb2x1bW5zIC1cbi8vLyAgIExpc3Qgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZFxuLy8vIEBwYXJhbSB7bnVtYmVyfSAkZ3V0dGVycyAtXG4vLy8gICBXaWR0aCBvZiBhIGd1dHRlciBpbiBjb2x1bW4tY29tcGFyYWJsZSB1bml0c1xuLy8vIEBwYXJhbSB7MCB8IDEgfCAtMX0gJHNwcmVhZCAtXG4vLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLFxuLy8vICAgcmVsYXRpdmUgdG8gYGNvbHVtbnNgIGNvdW50XG4vLy8gQHBhcmFtIHtib29sfSAkdmFsaWRhdGUgW3RydWVdIC1cbi8vLyAgIENoZWNrIHRoYXQgYXJndW1lbnRzIGFyZSB2YWxpZCBiZWZvcmUgcHJvY2VlZGluZ1xuLy8vXG4vLy8gQHJldHVybiB7bnVtYmVyfSAtXG4vLy8gICBUb3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgZ3JpZFxuQGZ1bmN0aW9uIF9zdS1zdW0oXG4gICRjb2x1bW5zLFxuICAkZ3V0dGVycyxcbiAgJHNwcmVhZCxcbiAgJHZhbGlkYXRlOiB0cnVlXG4pIHtcbiAgQGlmICR2YWxpZGF0ZSB7XG4gICAgJGNvbHVtbnM6IHN1LXZhbGlkLXNwYW4oJGNvbHVtbnMpO1xuICAgICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgICAkc3ByZWFkOiBzdS12YWxpZC1zcHJlYWQoJHNwcmVhZCk7XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgY29sdW1uLXN1bVxuICAkY29sdW1uLXN1bTogMDtcbiAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgJGNvbHVtbi1zdW06ICRjb2x1bW4tc3VtICsgJGNvbHVtbjtcbiAgfVxuXG4gICRndXR0ZXItc3VtOiAoY2VpbChsZW5ndGgoJGNvbHVtbnMpKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICR0b3RhbDogaWYoKCRndXR0ZXItc3VtID4gMCksICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW0sICRjb2x1bW4tc3VtKTtcblxuICBAcmV0dXJuICR0b3RhbDtcbn1cblxuXG5cbi8vIFN1IENhbGNcbi8vIC0tLS0tLS1cbi8vLyBSZXR1cm4gYSB1c2FibGUgc3BhbiB3aWR0aCBhcyBhIGBjYWxjKClgIGZ1bmN0aW9uLFxuLy8vIGluIG9yZGVyIHRvIGNyZWF0ZSBtaXhlZC11bml0IGdyaWRzLlxuLy8vXG4vLy8gQGdyb3VwIHN1LW1hdGhcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7bnVtYmVyIHwgbGlzdH0gJHNwYW4gLVxuLy8vICAgUHJlLXNsaWNlZCBsaXN0IG9mIGdyaWQgY29sdW1ucyB0byBzcGFuXG4vLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtXG4vLy8gICBMaXN0IG9mIGNvbHVtbnMgYXZhaWxhYmxlXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRndXR0ZXJzIC1cbi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyIGluIGNvbHVtbi1jb21wYXJhYmxlIHVuaXRzXG4vLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkc3ByZWFkIC1cbi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsXG4vLy8gICByZWxhdGl2ZSB0byBgc3BhbmAgY291bnRcbi8vLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRjb250YWluZXItc3ByZWFkIFskc3ByZWFkXSAtXG4vLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLFxuLy8vICAgcmVsYXRpdmUgdG8gYGNvbHVtbnNgIGNvdW50XG4vLy8gQHBhcmFtIHtib29sfSAkdmFsaWRhdGUgW3RydWVdIC1cbi8vLyAgIENoZWNrIHRoYXQgYXJndW1lbnRzIGFyZSB2YWxpZCBiZWZvcmUgcHJvY2VlZGluZ1xuLy8vXG4vLy8gQHJldHVybiB7bGVuZ3RofSAtXG4vLy8gICBSZWxhdGl2ZSBvciBzdGF0aWMgbGVuZ3RoIG9mIGEgc3BhbiBvbiB0aGUgZ3JpZFxuQGZ1bmN0aW9uIF9zdS1jYWxjLXNwYW4oXG4gICRzcGFuLFxuICAkY29sdW1ucyxcbiAgJGd1dHRlcnMsXG4gICRzcHJlYWQsXG4gICRjb250YWluZXItc3ByZWFkOiAkc3ByZWFkLFxuICAkdmFsaWRhdGU6IHRydWVcbikge1xuICBAaWYgJHZhbGlkYXRlIHtcbiAgICAkc3Bhbjogc3UtdmFsaWQtc3Bhbigkc3Bhbik7XG4gICAgJGNvbHVtbnM6IHN1LXZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAgICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgICAkc3ByZWFkOiBzdS12YWxpZC1zcHJlYWQoJHNwcmVhZCk7XG4gICAgJGNvbnRhaW5lci1zcHJlYWQ6IHN1LXZhbGlkLXNwcmVhZCgkY29udGFpbmVyLXNwcmVhZCk7XG4gIH1cblxuICAvLyBTcGFuIGFuZCBjb250ZXh0XG4gICRzcGFuOiBfc3UtY2FsYy1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkLCBub3QgJ3ZhbGlkYXRlJyk7XG4gICRjb250ZXh0OiBfc3UtY2FsYy1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCAkY29udGFpbmVyLXNwcmVhZCwgbm90ICd2YWxpZGF0ZScpO1xuXG4gIC8vIEZpeGVkIGFuZCBmbHVpZFxuICAkZml4ZWQtc3BhbjogbWFwLWdldCgkc3BhbiwgJ2ZpeGVkJyk7XG4gICRmbHVpZC1zcGFuOiBtYXAtZ2V0KCRzcGFuLCAnZmx1aWQnKTtcbiAgJGZpeGVkLWNvbnRleHQ6IG1hcC1nZXQoJGNvbnRleHQsICdmaXhlZCcpO1xuICAkZmx1aWQtY29udGV4dDogbWFwLWdldCgkY29udGV4dCwgJ2ZsdWlkJyk7XG5cbiAgJGNhbGM6ICcjeyRmaXhlZC1zcGFufSc7XG4gICRmbHVpZC1jYWxjOiAnKDEwMCUgLSAjeyRmaXhlZC1jb250ZXh0fSknO1xuXG4gIC8vIEZsdWlkLXZhbHVlc1xuICBAaWYgKG5vdCAkZmx1aWQtc3Bhbikge1xuICAgICRmbHVpZC1jYWxjOiBudWxsO1xuICB9IEBlbHNlIGlmICgkZmx1aWQtc3BhbiAhPSAkZmx1aWQtY29udGV4dCkge1xuICAgICRmbHVpZC1zcGFuOiAnKiAjeyRmbHVpZC1zcGFufSc7XG4gICAgJGZsdWlkLWNvbnRleHQ6IGlmKCRmbHVpZC1jb250ZXh0LCAnLyAjeyRmbHVpZC1jb250ZXh0fScsICcnKTtcbiAgICAkZmx1aWQtY2FsYzogJygjeyRmbHVpZC1jYWxjICRmbHVpZC1jb250ZXh0ICRmbHVpZC1zcGFufSknO1xuICB9XG5cbiAgQGlmICRmbHVpZC1jYWxjIHtcbiAgICAkY2FsYzogaWYoKCRjYWxjICE9ICcnKSwgJyN7JGNhbGN9ICsgJywgJycpO1xuICAgICRjYWxjOiAnI3skY2FsYyArICRmbHVpZC1jYWxjfSc7XG4gIH1cblxuICBAcmV0dXJuIGNhbGMoI3t1bnF1b3RlKCRjYWxjKX0pO1xufVxuXG5cblxuLy8gU3UgQ2FsYy1TdW1cbi8vIC0tLS0tLS0tLS0tXG4vLy8gR2V0IHRoZSB0b3RhbCBzdW0gb2YgZml4ZWQgYW5kIGZsdWlkIGNvbHVtbi11bml0c1xuLy8vIGZvciBjcmVhdGluZyBhIG1peGVkLXVuaXQgbGF5b3V0IHdpdGggYGNhbGMoKWAgdmFsdWVzLlxuLy8vXG4vLy8gQGdyb3VwIHN1LW1hdGhcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLVxuLy8vICAgTGlzdCBvZiBjb2x1bW5zIGF2YWlsYWJsZVxuLy8vIEBwYXJhbSB7bnVtYmVyfSAkZ3V0dGVycyAtXG4vLy8gICBXaWR0aCBvZiBhIGd1dHRlciBpbiBjb2x1bW4tY29tcGFyYWJsZSB1bml0c1xuLy8vIEBwYXJhbSB7MCB8IDEgfCAtMX0gJHNwcmVhZCAtXG4vLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLFxuLy8vICAgcmVsYXRpdmUgdG8gYHNwYW5gIGNvdW50XG4vLy8gQHBhcmFtIHtib29sfSAkdmFsaWRhdGUgW3RydWVdIC1cbi8vLyAgIENoZWNrIHRoYXQgYXJndW1lbnRzIGFyZSB2YWxpZCBiZWZvcmUgcHJvY2VlZGluZ1xuLy8vXG4vLy8gQHJldHVybiB7bWFwfSAtXG4vLy8gICBNYXAgd2l0aCBgZml4ZWRgIGFuZCBgZmx1aWRgIGtleXNcbi8vLyAgIGNvbnRhaW5pbmcgdGhlIHByb3BlciBtYXRoIGFzIHN0cmluZ3NcbkBmdW5jdGlvbiBfc3UtY2FsYy1zdW0oXG4gICRjb2x1bW5zLFxuICAkZ3V0dGVycyxcbiAgJHNwcmVhZCxcbiAgJHZhbGlkYXRlOiB0cnVlXG4pIHtcbiAgQGlmICR2YWxpZGF0ZSB7XG4gICAgJGNvbHVtbnM6IHN1LXZhbGlkLXNwYW4oJGNvbHVtbnMpO1xuICAgICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgICAkc3ByZWFkOiBzdS12YWxpZC1zcHJlYWQoJHNwcmVhZCk7XG4gIH1cblxuICAkZmx1aWQ6IDA7XG4gICRmaXhlZDogKCk7XG4gICRjYWxjOiBudWxsO1xuXG4gIC8vIEd1dHRlcnNcbiAgJGd1dHRlcnM6ICAkZ3V0dGVycyAqIChsZW5ndGgoJGNvbHVtbnMpICsgJHNwcmVhZCk7XG5cbiAgLy8gQ29sdW1uc1xuICBAZWFjaCAkY29sIGluIGFwcGVuZCgkY29sdW1ucywgJGd1dHRlcnMpIHtcbiAgICBAaWYgdW5pdGxlc3MoJGNvbCkge1xuICAgICAgJGZsdWlkOiAkZmx1aWQgKyAkY29sO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGZpeGVkOiBfc3UtbWFwLWFkZC11bml0cygkZml4ZWQsICRjb2wpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbXBpbGUgRml4ZWQgVW5pdHNcbiAgQGVhY2ggJHVuaXQsICR0b3RhbCBpbiAkZml4ZWQge1xuICAgIEBpZiAoJHRvdGFsICE9ICgwICogJHRvdGFsKSkge1xuICAgICAgJGNhbGM6IGlmKCRjYWxjLCAnI3skY2FsY30gKyAjeyR0b3RhbH0nLCAnI3skdG90YWx9Jyk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsYyBudWxsIG9yIHN0cmluZ1xuICBAaWYgJGNhbGMge1xuICAgICRjYWxjOiBpZihzdHItaW5kZXgoJGNhbGMsICcrJyksICcoI3skY2FsY30pJywgJyN7JGNhbGN9Jyk7XG4gIH1cblxuICAvLyBGbHVpZCAwID0+IG51bGxcbiAgJGZsdWlkOiBpZigoJGZsdWlkID09IDApLCBudWxsLCAkZmx1aWQpO1xuXG5cbiAgLy8gUmV0dXJuIG1hcFxuICAkcmV0dXJuOiAoXG4gICAgJ2ZpeGVkJzogJGNhbGMsXG4gICAgJ2ZsdWlkJzogJGZsdWlkLFxuICApO1xuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG5cbi8vIE5lZWRzIENhbGNcbi8vIC0tLS0tLS0tLS1cbi8vLyBDaGVjayBpZiBgY2FsYygpYCB3aWxsIGJlIG5lZWRlZCBpbiBkZWZpbmluZyBhIHNwYW4sXG4vLy8gaWYgdGhlIG5lY2Vzc2FyeSB1bml0cyBpbiBhIGdyaWQgYXJlIG5vdCBjb21wYXJhYmxlLlxuLy8vXG4vLy8gQGdyb3VwIHN1LW1hdGhcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7bGlzdH0gJHNwYW4gLVxuLy8vICAgU2xpY2Ugb2YgY29sdW1ucyB0byBzcGFuXG4vLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtXG4vLy8gICBMaXN0IG9mIGF2YWlsYWJsZSBjb2x1bW5zIGluIHRoZSBncmlkXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRndXR0ZXJzIC1cbi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyXG4vLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkc3ByZWFkIC1cbi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsXG4vLy8gICByZWxhdGl2ZSB0byBgc3BhbmAgY291bnRcbi8vLyBAcGFyYW0ge2Jvb2x9ICR2YWxpZGF0ZSBbdHJ1ZV0gLVxuLy8vICAgQ2hlY2sgdGhhdCBhcmd1bWVudHMgYXJlIHZhbGlkIGJlZm9yZSBwcm9jZWVkaW5nXG4vLy9cbi8vLyBAcmV0dXJuIHtib29sfSAtXG4vLy8gICBgVHJ1ZWAgd2hlbiB1bml0cyBkbyBub3QgbWF0Y2gsIGFuZCBgY2FsYygpYCB3aWxsIGJlIHJlcXVpcmVkXG5AZnVuY3Rpb24gX3N1LW5lZWRzLWNhbGMtb3V0cHV0KFxuICAkc3BhbixcbiAgJGNvbHVtbnMsXG4gICRndXR0ZXJzLFxuICAkc3ByZWFkLFxuICAkdmFsaWRhdGU6IHRydWVcbikge1xuICBAaWYgJHZhbGlkYXRlIHtcbiAgICAkc3Bhbjogc3UtdmFsaWQtc3Bhbigkc3Bhbik7XG4gICAgJGNvbHVtbnM6IHN1LXZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAgICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgfVxuXG4gICRoYXMtZ3V0dGVyOiBpZigobGVuZ3RoKCRzcGFuKSA+IDEpIG9yICgkc3ByZWFkID49IDApLCB0cnVlLCBmYWxzZSk7XG4gICRjaGVjazogaWYoJGhhcy1ndXR0ZXIsIGFwcGVuZCgkc3BhbiwgJGd1dHRlcnMpLCAkc3Bhbik7XG4gICRzYWZlLXNwYW46IF9zdS1pcy1jb21wYXJhYmxlKCRjaGVjay4uLik7XG5cbiAgQGlmICgkc2FmZS1zcGFuID09ICdzdGF0aWMnKSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfSBAZWxzZSBpZiAobm90ICRzYWZlLXNwYW4pIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cblxuICAkc2FmZS1mbHVpZDogX3N1LWlzLWNvbXBhcmFibGUoJGd1dHRlcnMsICRjb2x1bW5zLi4uKTtcblxuICBAcmV0dXJuIG5vdCAkc2FmZS1mbHVpZDtcbn1cbiIsIi8vLyBTdXN5MyBDb25maWd1cmF0aW9uXG4vLy8gPT09PT09PT09PT09PT09PT09PVxuLy8vIFN1c3kzIGhhcyA0IGNvcmUgc2V0dGluZ3MsIGluIGEgc2luZ2xlIHNldHRpbmdzIG1hcC5cbi8vLyBZb3UnbGwgbm90aWNlIGEgZmV3IGRpZmZlcmVuY2VzIGZyb20gU3VzeTI6XG4vLy9cbi8vLyAqKkNvbHVtbnMqKiBubyBsb25nZXIgYWNjZXB0IGEgc2luZ2xlIG51bWJlciwgbGlrZSBgMTJgLFxuLy8vIGJ1dCB1c2UgYSBzeW50YXggbW9yZSBzaW1pbGFyIHRvIHRoZSBuZXdcbi8vLyBDU1MgW2dyaWQtdGVtcGxhdGUtY29sdW1uc11bY29sdW1uc10g4oCTXG4vLy8gYSBsaXN0IG9mIHJlbGF0aXZlIHNpemVzIGZvciBlYWNoIGNvbHVtbiBvbiB0aGUgZ3JpZC5cbi8vLyBVbml0bGVzcyBudW1iZXJzIGluIFN1c3kgYWN0IHZlcnkgc2ltaWxhciB0byBgZnJgIHVuaXRzIGluIENTUyxcbi8vLyBhbmQgdGhlIGBzdXN5LXJlcGVhdCgpYCBmdW5jdGlvbiAoc2ltaWxhciB0byB0aGUgY3NzIGByZXBlYXQoKWApXG4vLy8gaGVscHMgcXVpY2tseSBlc3RhYmxpc2ggZXF1YWwtd2lkdGggY29sdW1ucy5cbi8vL1xuLy8vIFtjb2x1bW5zXTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2dyaWQtdGVtcGxhdGUtY29sdW1uc1xuLy8vXG4vLy8gLSBgc3VzeS1yZXBlYXQoMTIpYCB3aWxsIGNyZWF0ZSAxMiBmbHVpZCwgZXF1YWwtd2lkdGggY29sdW1uc1xuLy8vIC0gYHN1c3ktcmVwZWF0KDYsIDEyMHB4KWAgd2lsbCBjcmVhdGUgNiBlcXVhbCBgMTIwcHhgLXdpZGUgY29sdW1uc1xuLy8vIC0gYDEyMHB4IHN1c3ktcmVwZWF0KDQpIDEyMHB4YCB3aWxsIGNyZWF0ZSA2IGNvbHVtbnMsXG4vLy8gICB0aGUgZmlyc3QgYW5kIGxhc3QgYXJlIGAxMjBweGAsXG4vLy8gICB3aGlsZSB0aGUgbWlkZGxlIDQgYXJlIGVxdWFsIGZyYWN0aW9ucyBvZiB0aGUgcmVtYWluZGVyLlxuLy8vICAgU3VzeSB3aWxsIG91dHB1dCBgY2FsYygpYCB2YWx1ZXMgaW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGlzLlxuLy8vXG4vLy8gKipHdXR0ZXJzKiogaGF2ZW4ndCBjaGFuZ2VkIOKAk1xuLy8vIGEgc2luZ2xlIGZyYWN0aW9uIG9yIGV4cGxpY2l0IHdpZHRoIOKAk1xuLy8vIGJ1dCB0aGUgYGNhbGMoKWAgb3V0cHV0IGZlYXR1cmVcbi8vLyBtZWFucyB5b3UgY2FuIG5vdyB1c2UgYW55IGNvbWJpbmF0aW9uIG9mIHVuaXRzIGFuZCBmcmFjdGlvbnNcbi8vLyB0byBjcmVhdGUgc3RhdGljLWd1dHRlcnMgb24gYSBmbHVpZCBncmlkLCBldGMuXG4vLy9cbi8vLyAqKlNwcmVhZCoqIGV4aXN0ZWQgaW4gdGhlIFN1c3kyIEFQSSBhcyBhIHNwYW4gb3B0aW9uLFxuLy8vIGFuZCB3YXMgb3RoZXJ3aXNlIGhhbmRsZWQgYmVoaW5kIHRoZSBzY2VuZXMuXG4vLy8gTm93IHdlJ3JlIGdpdmluZyB5b3UgZnVsbCBjb250cm9sIG92ZXIgYWxsIHNwcmVhZCBpc3N1ZXMuXG4vLy8gWW91IGNhbiBmaW5kIGEgbW9yZSBbZGV0YWlsZWQgZXhwbGFuYXRpb24gb2Ygc3ByZWFkIG9uIHRoZSBibG9nXVtzcHJlYWRdLlxuLy8vXG4vLy8gW3NwcmVhZF06IGh0dHA6Ly9vZGRiaXJkLm5ldC8yMDE3LzA2LzEzL3N1c3ktc3ByZWFkL1xuLy8vXG4vLy8gWW91IGNhbiBhY2Nlc3MgeW91ciBnbG9iYWwgc2V0dGluZ3MgYXQgYW55IHRpbWVcbi8vLyB3aXRoIHRoZSBgc3VzeS1zZXR0aW5ncygpYCBmdW5jdGlvbixcbi8vLyBvciBncmFiIGEgc2luZ2xlIHNldHRpbmcgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlXG4vLy8gd2l0aCBgc3VzeS1nZXQoJ2NvbHVtbnMnKWAsIGBzdXN5LWdldCgnZ3V0dGVycycpYCBldGMuXG4vLy9cbi8vLyBAZ3JvdXAgY29uZmlnXG4vLy8gQGxpbmsgaHR0cDovL29kZGJpcmQubmV0LzIwMTcvMDYvMTMvc3VzeS1zcHJlYWQvXG4vLy8gICBBcnRpY2xlOiBVbmRlcnN0YW5kaW5nIFNwcmVhZCBpbiBTdXN5M1xuLy8vXG4vLy8gQHNlZSAkc3VzeVxuLy8vIEBzZWUgc3VzeS1zZXR0aW5nc1xuLy8vIEBzZWUgc3VzeS1nZXRcblxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vLyBUaGUgZ3JpZCBpcyBkZWZpbmVkIGluIGEgc2luZ2xlIG1hcCB2YXJpYWJsZSxcbi8vLyB3aXRoIGZvdXIgaW5pdGlhbCBwcm9wZXJ0aWVzOlxuLy8vIGBjb2x1bW5zYCwgYGd1dHRlcnNgLCBgc3ByZWFkYCBhbmQgYGNvbnRhaW5lci1zcHJlYWRgLlxuLy8vIEFueXRoaW5nIHlvdSBwdXQgaW4gdGhlIHJvb3QgYCRzdXN5YCB2YXJpYWJsZSBtYXBcbi8vLyB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBnbG9iYWwgcHJvamVjdCBkZWZhdWx0LlxuLy8vIFlvdSBjYW4gY3JlYXRlIHNpbWlsYXIgY29uZmlndXJhdGlvbiBtYXBzXG4vLy8gdW5kZXIgZGlmZmVyZW50IHZhcmlhYmxlIG5hbWVzLFxuLy8vIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0cyBhcy1uZWVkZWQuXG4vLy9cbi8vLyBAZ3JvdXAgY29uZmlnXG4vLy8gQHR5cGUgTWFwXG4vLy9cbi8vLyBAc2VlICRfc3VzeS1kZWZhdWx0c1xuLy8vIEBzZWUge2Z1bmN0aW9ufSBzdXN5LXJlcGVhdFxuLy8vIEBsaW5rXG4vLy8gICBodHRwczovL2NvZGVwZW4uaW8vbWlyaXN1emFubmUvcGVuL0VnbUpKcD9lZGl0b3JzPTExMDBcbi8vLyAgIFNwcmVhZCBleGFtcGxlcyBvbiBDb2RlUGVuXG4vLy9cbi8vLyBAcHJvcCB7bGlzdH0gY29sdW1ucyAtXG4vLy8gICBDb2x1bW5zIGFyZSBkZXNjcmliZWQgYnkgYSBsaXN0IG9mIG51bWJlcnMsXG4vLy8gICByZXByZXNlbnRpbmcgdGhlIHJlbGF0aXZlIHdpZHRoIG9mIGVhY2ggY29sdW1uLlxuLy8vICAgVGhlIHN5bnRheCBpcyBhIHNpbXBsaWZpZWQgdmVyc2lvbiBvZiBDU1MgbmF0aXZlXG4vLy8gICBgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zYCxcbi8vLyAgIGV4cGVjdGluZyBhIGxpc3Qgb2YgZ3JpZC1jb2x1bW4gd2lkdGhzLlxuLy8vICAgVW5pdGxlc3MgbnVtYmVycyBjcmVhdGUgZnJhY3Rpb25hbCBmbHVpZCBjb2x1bW5zXG4vLy8gICAoc2ltaWxhciB0byB0aGUgQ1NTLW5hdGl2ZSBgZnJgIHVuaXQpLFxuLy8vICAgd2hpbGUgbGVuZ3RoIHZhbHVlcyAodW5pdGVkIG51bWJlcnMpXG4vLy8gICBhcmUgdXNlZCB0byBkZWZpbmUgc3RhdGljIGNvbHVtbnMuXG4vLy8gICBZb3UgY2FuIG1peC1hbmQgbWF0Y2ggdW5pdHMgYW5kIGZyYWN0aW9ucyxcbi8vLyAgIHRvIGNyZWF0ZSBhIG1peGVkIGdyaWQuXG4vLy8gICBTdXN5IHdpbGwgZ2VuZXJhdGUgYGNhbGMoKWAgdmFsdWVzIHdoZW4gbmVjZXNzYXJ5LFxuLy8vICAgdG8gbWFrZSBhbGwgeW91ciB1bml0cyB3b3JrIHRvZ2V0aGVyLlxuLy8vXG4vLy8gICBVc2UgdGhlIGBzdXN5LXJlcGVhdCgkY291bnQsICR2YWx1ZSlgIGZ1bmN0aW9uXG4vLy8gICB0byBtb3JlIGVhc2lseSByZXBldGF0aXZlIGNvbHVtbnMsXG4vLy8gICBzaW1pbGFyIHRvIHRoZSBDU1MtbmF0aXZlIGByZXBlYXQoKWAuXG4vLy9cbi8vLyAgIC0gYHN1c3ktcmVwZWF0KDgpYDpcbi8vLyAgICAgYW4gOC1jb2x1bW4sIHN5bW1ldHJpY2FsLCBmbHVpZCBncmlkLlxuLy8vICAgICA8YnIgLz5JZGVudGljYWwgdG8gYCgxIDEgMSAxIDEgMSAxIDEpYC5cbi8vLyAgIC0gYHN1c3ktcmVwZWF0KDYsIDhlbSlgOlxuLy8vICAgICBhIDYtY29sdW1uLCBzeW1tZXRyaWNhbCwgZW0tYmFzZWQgZ3JpZC5cbi8vLyAgICAgPGJyIC8+SWRlbnRpY2FsIHRvIGAoOGVtIDhlbSA4ZW0gOGVtIDhlbSA4ZW0pYC5cbi8vLyAgIC0gYCgzMDBweCBzdXN5LXJlcGVhdCg0KSAzMDBweClgOlxuLy8vICAgICBhIDYtY29sdW1uLCBhc3ltbWV0cmljYWwsIG1peGVkIGZsdWlkL3N0YXRpYyBncmlkXG4vLy8gICAgIHVzaW5nIGBjYWxjKClgIG91dHB1dC5cbi8vLyAgICAgPGJyIC8+SWRlbnRpY2FsIHRvIGAoMzAwcHggMSAxIDEgMSAzMDBweClgLlxuLy8vXG4vLy8gICAqKk5PVEUqKiB0aGF0IGAxMmAgaXMgbm8gbG9uZ2VyIGEgdmFsaWQgMTItY29sdW1uIGdyaWQgZGVmaW5pdGlvbixcbi8vLyAgIGFuZCB5b3UgbXVzdCBsaXN0IGFsbCB0aGUgY29sdW1ucyBpbmRpdmlkdWFsbHlcbi8vLyAgIChvciBieSB1c2luZyB0aGUgYHN1c3ktcmVwZWF0KClgIGZ1bmN0aW9uKS5cbi8vL1xuLy8vIEBwcm9wIHtudW1iZXJ9IGd1dHRlcnMgLVxuLy8vICAgR3V0dGVycyBhcmUgZGVmaW5lZCBhcyBhIHNpbmdsZSB3aWR0aCxcbi8vLyAgIG9yIGZsdWlkIHJhdGlvLCBzaW1pbGFyIHRvIHRoZSBuYXRpdmUtQ1NTXG4vLy8gICBgZ3JpZC1jb2x1bW4tZ2FwYCBzeW50YXguXG4vLy8gICBTaW1pbGFyIHRvIGNvbHVtbnMsXG4vLy8gICBndXR0ZXJzIGNhbiB1c2UgYW55IHZhbGlkIENTUyBsZW5ndGggdW5pdCxcbi8vLyAgIG9yIHVuaXRsZXNzIG51bWJlcnMgdG8gZGVmaW5lIGEgcmVsYXRpdmUgZnJhY3Rpb24uXG4vLy9cbi8vLyAgIC0gYDAuNWA6XG4vLy8gICAgIGEgZmx1aWQgZ3V0dGVyLCBoYWxmIHRoZSBzaXplIG9mIGEgc2luZ2xlLWZyYWN0aW9uIGNvbHVtbi5cbi8vLyAgIC0gYDFlbWA6XG4vLy8gICAgIGEgc3RhdGljIGd1dHRlciwgYDFlbWAgd2lkZS5cbi8vL1xuLy8vICAgTWl4IHN0YXRpYyBndXR0ZXJzIHdpdGggZmx1aWQgY29sdW1ucywgb3IgdmljZSB2ZXJzYSxcbi8vLyAgIGFuZCBTdXN5IHdpbGwgZ2VuZXJhdGUgdGhlIHJlcXVpcmVkIGBjYWxjKClgIHRvIG1ha2UgaXQgd29yay5cbi8vL1xuLy8vIEBwcm9wIHtzdHJpbmd9IHNwcmVhZCBbbmFycm93XSAtXG4vLy8gICBTcHJlYWQgb2YgYW4gZWxlbWVudCBhY3Jvc3MgYWRqYWNlbnQgZ3V0dGVyczpcbi8vLyAgIGVpdGhlciBgbmFycm93YCAobm9uZSksIGB3aWRlYCAob25lKSwgb3IgYHdpZGVyYCAodHdvKVxuLy8vXG4vLy8gICAtIEJvdGggc3ByZWFkIHNldHRpbmdzIGRlZmF1bHQgdG8gYG5hcnJvd2AsXG4vLy8gICAgIHRoZSBtb3N0IGNvbW1vbiB1c2UtY2FzZS5cbi8vLyAgICAgQSBgbmFycm93YCBzcHJlYWQgb25seSBoYXMgZ3V0dGVycyAqYmV0d2VlbiogY29sdW1uc1xuLy8vICAgICAob25lIGxlc3MgZ3V0dGVyIHRoYW4gY29sdW1ucykuXG4vLy8gICAgIFRoaXMgaXMgaG93IGFsbCBjc3MtbmF0aXZlIGdyaWRzIHdvcmssXG4vLy8gICAgIGFuZCBtb3N0IG1hcmdpbi1iYXNlZCBncmlkIHN5c3RlbXMuXG4vLy8gICAtIEEgYHdpZGVgIHNwcmVhZCBpbmNsdWRlcyB0aGUgc2FtZSBudW1iZXIgb2YgZ3V0dGVycyBhcyBjb2x1bW5zLFxuLy8vICAgICBzcGFubmluZyBhY3Jvc3MgYSBzaW5nbGUgc2lkZS1ndXR0ZXIuXG4vLy8gICAgIFRoaXMgaXMgaG93IG1vc3QgcGFkZGluZy1iYXNlZCBncmlkIHN5c3RlbXMgb2Z0ZW4gd29yayxcbi8vLyAgICAgYW5kIGlzIGFsc28gdXNlZnVsIGZvciBwdXNoaW5nIGFuZCBwdWxsaW5nIGVsZW1lbnRzIGludG8gcGxhY2UuXG4vLy8gICAtIFRoZSByYXJlIGB3aWRlcmAgc3ByZWFkIGluY2x1ZGVzIGd1dHRlcnNcbi8vLyAgICAgb24gYm90aCBzaWRlcyBvZiB0aGUgY29sdW1uLXNwYW5cbi8vLyAgICAgKG9uZSBtb3JlIGd1dHRlcnMgdGhhbiBjb2x1bW5zKS5cbi8vL1xuLy8vIEBwcm9wIHtzdHJpbmd9IGNvbnRhaW5lci1zcHJlYWQgW25hcnJvd10gLVxuLy8vICAgU3ByZWFkIG9mIGEgY29udGFpbmVyIGFyb3VuZCBhZGphY2VudCBndXR0ZXJzOlxuLy8vICAgZWl0aGVyIGBuYXJyb3dgIChub25lKSwgYHdpZGVgIChvbmUpLCBvciBgd2lkZXJgICh0d28pLlxuLy8vICAgU2VlIGBzcHJlYWRgIHByb3BlcnR5IGZvciBkZXRhaWxzLlxuLy8vXG4vLy8gQHNpbmNlIDMuMC4wLWJldGEuMSAtXG4vLy8gICBgY29sdW1uc2Agc2V0dGluZyBubyBsb25nZXIgYWNjZXB0cyBudW1iZXJzXG4vLy8gICAoZS5nLiBgMTJgKSBmb3Igc3ltbWV0cmljYWwgZmx1aWQgZ3JpZHMsXG4vLy8gICBvciB0aGUgaW5pdGlhbCBgMTIgeCAxMjBweGAgc3ludGF4IGZvclxuLy8vICAgc3ltbWV0cmljYWwgZml4ZWQtdW5pdCBncmlkcy5cbi8vLyAgIFVzZSBgc3VzeS1yZXBlYXQoMTIpYCBvciBgc3VzeS1yZXBlYXQoMTIsIDEyMHB4KWAgaW5zdGVhZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBkZWZhdWx0IHZhbHVlc1xuLy8vICAgLy8gNCBzeW1tZXRyaWNhbCwgZmx1aWQgY29sdW1uc1xuLy8vICAgLy8gZ3V0dGVycyBhcmUgMS80IHRoZSBzaXplIG9mIGEgY29sdW1uXG4vLy8gICAvLyBlbGVtZW50cyBzcGFuIDEgbGVzcyBndXR0ZXIgdGhhbiBjb2x1bW5zXG4vLy8gICAvLyBjb250YWluZXJzIHNwYW4gMSBsZXNzIGd1dHRlciBhcyB3ZWxsXG4vLy8gICAkc3VzeTogKFxuLy8vICAgICAnY29sdW1ucyc6IHN1c3ktcmVwZWF0KDQpLFxuLy8vICAgICAnZ3V0dGVycyc6IDAuMjUsXG4vLy8gICAgICdzcHJlYWQnOiAnbmFycm93Jyxcbi8vLyAgICAgJ2NvbnRhaW5lci1zcHJlYWQnOiAnbmFycm93Jyxcbi8vLyAgICk7XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gaW5zaWRlLXN0YXRpYyBndXR0ZXJzXG4vLy8gICAvLyA2IHN5bW1ldHJpY2FsLCBmbHVpZCBjb2x1bW5z4oCmXG4vLy8gICAvLyBndXR0ZXJzIGFyZSBzdGF0aWMsIHRyaWdnZXJpbmcgY2FsYygp4oCmXG4vLy8gICAvLyBlbGVtZW50cyBzcGFuIGVxdWFsIGNvbHVtbnMgJiBndXR0ZXJz4oCmXG4vLy8gICAvLyBjb250YWluZXJzIHNwYW4gZXF1YWwgY29sdW1ucyAmIGd1dHRlcnPigKZcbi8vLyAgICRzdXN5OiAoXG4vLy8gICAgICdjb2x1bW5zJzogc3VzeS1yZXBlYXQoNiksXG4vLy8gICAgICdndXR0ZXJzJzogMC41ZW0sXG4vLy8gICAgICdzcHJlYWQnOiAnd2lkZScsXG4vLy8gICAgICdjb250YWluZXItc3ByZWFkJzogJ3dpZGUnLFxuLy8vICAgKTtcbiRzdXN5OiAoKSAhZGVmYXVsdDtcblxuXG5cbi8vIFN1c3kgUmVwZWF0XG4vLyAtLS0tLS0tLS0tLVxuLy8vIFNpbWlsYXIgdG8gdGhlIGByZXBlYXQoPGNvdW50PiwgPHZhbHVlPilgIGZ1bmN0aW9uXG4vLy8gdGhhdCBpcyBhdmFpbGFibGUgaW4gbmF0aXZlIENTUyBHcmlkIHRlbXBsYXRlcyxcbi8vLyB0aGUgYHN1c3ktcmVwZWF0KClgIGZ1bmN0aW9uIGhlbHBzIGdlbmVyYXRlIHJlcGV0YXRpdmUgbGF5b3V0c1xuLy8vIGJ5IHJlcGVhdGluZyBhbnkgdmFsdWUgYSBnaXZlbiBudW1iZXIgb2YgdGltZXMuXG4vLy8gV2hlcmUgU3VzeSBwcmV2aW91c2x5IGFsbG93ZWQgYDhgIGFzIGEgY29sdW1uIGRlZmluaXRpb25cbi8vLyBmb3IgOCBlcXVhbCBjb2x1bW5zLCB5b3Ugc2hvdWxkIG5vdyB1c2UgYHN1c3ktcmVwZWF0KDgpYC5cbi8vL1xuLy8vIEBncm91cCBjb25maWdcbi8vL1xuLy8vIEBwYXJhbSB7aW50ZWdlcn0gJGNvdW50IC1cbi8vLyAgIFRoZSBudW1iZXIgb2YgcmVwZXRpdGlvbnMsIGUuZy4gYDEyYCBmb3IgYSAxMi1jb2x1bW4gZ3JpZC5cbi8vLyBAcGFyYW0geyp9ICR2YWx1ZSBbMV0gLVxuLy8vICAgVGhlIHZhbHVlIHRvIGJlIHJlcGVhdGVkLlxuLy8vICAgVGVjaG5pY2FsbHkgYW55IHZhbHVlIGNhbiBiZSByZXBlYXRlZCBoZXJlLFxuLy8vICAgYnV0IHRoZSBmdW5jdGlvbiBleGlzdHMgdG8gcmVwZWF0IGNvbHVtbi13aWR0aCBkZXNjcmlwdGlvbnM6XG4vLy8gICBlLmcuIHRoZSBkZWZhdWx0IGAxYCBmb3Igc2luZ2xlLWZyYWN0aW9uIGZsdWlkIGNvbHVtbnMsXG4vLy8gICBgNWVtYCBmb3IgYSBzdGF0aWMgY29sdW1uLFxuLy8vICAgb3IgZXZlbiBgNWVtIDEyMHB4YCBpZiB5b3UgYXJlIGFsdGVybmF0aW5nIGNvbHVtbiB3aWR0aHMuXG4vLy9cbi8vLyBAcmV0dXJuIHtsaXN0fSAtXG4vLy8gICBMaXN0IG9mIHJlcGVhdGVkIHZhbHVlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLy8gMTIgY29sdW1uIGdyaWQsIHdpdGggNWVtIGNvbHVtbnNcbi8vLyAgICRzdXN5OiAoXG4vLy8gICAgIGNvbHVtbnM6IHN1c3ktcmVwZWF0KDEyLCA1ZW0pLFxuLy8vICAgKTtcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC8vIGFzeW1tZXRyaWNhbCA1LWNvbHVtbiBncmlkXG4vLy8gICAkc3VzeTogKFxuLy8vICAgICBjb2x1bW5zOiAyMHB4IHN1c3ktcmVwZWF0KDMsIDEwMHB4KSAyMHB4LFxuLy8vICAgKTtcbi8vL1xuLy8vICAgLyogcmVzdWx0OiAje3N1c3ktZ2V0KCdjb2x1bW5zJyl9ICovXG5AZnVuY3Rpb24gc3VzeS1yZXBlYXQoXG4gICRjb3VudCxcbiAgJHZhbHVlOiAxXG4pIHtcbiAgJHJldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkY291bnQge1xuICAgICRyZXR1cm46IGpvaW4oJHJldHVybiwgJHZhbHVlKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vLyBDb25maWd1cmF0aW9uIG1hcCBvZiBTdXN5IGZhY3RvcnkgZGVmYXVsdHMuXG4vLy8gRG8gbm90IG92ZXJyaWRlIHRoaXMgbWFwIGRpcmVjdGx5IOKAk1xuLy8vIHVzZSBgJHN1c3lgIGZvciB1c2VyIGFuZCBwcm9qZWN0IHNldHRpbmcgb3ZlcnJpZGVzLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTWFwXG4vLy9cbi8vLyBAc2VlICRzdXN5XG4vLy9cbi8vLyBAcHJvcCB7bnVtYmVyIHwgbGlzdH0gY29sdW1ucyBbc3VzeS1yZXBlYXQoNCldXG4vLy8gQHByb3Age251bWJlcn0gZ3V0dGVycyBbMC4yNV1cbi8vLyBAcHJvcCB7c3RyaW5nfSBzcHJlYWQgWyduYXJyb3cnXVxuLy8vIEBwcm9wIHtzdHJpbmd9IGNvbnRhaW5lci1zcHJlYWQgWyduYXJyb3cnXVxuJF9zdXN5LWRlZmF1bHRzOiAoXG4gICdjb2x1bW5zJzogc3VzeS1yZXBlYXQoNCksXG4gICdndXR0ZXJzJzogMC4yNSxcbiAgJ3NwcmVhZCc6ICduYXJyb3cnLFxuICAnY29udGFpbmVyLXNwcmVhZCc6ICduYXJyb3cnLFxuKTtcblxuXG5cbi8vIFN1c3kgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS1cbi8vLyBSZXR1cm4gYSBjb21iaW5lZCBtYXAgb2YgU3VzeSBzZXR0aW5ncyxcbi8vLyBiYXNlZCBvbiB0aGUgZmFjdG9yeSBkZWZhdWx0cyAoYCRfc3VzeS1kZWZhdWx0c2ApLFxuLy8vIHVzZXItZGVmaW5lZCBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gKGAkc3VzeWApLFxuLy8vIGFuZCBhbnkgbG9jYWwgb3ZlcnJpZGVzIHJlcXVpcmVkIOKAk1xuLy8vIHN1Y2ggYXMgYSBjb25maWd1cmF0aW9uIG1hcCBwYXNzZWQgaW50byBhIGZ1bmN0aW9uLlxuLy8vXG4vLy8gQGdyb3VwIGNvbmZpZ1xuLy8vXG4vLy8gQHBhcmFtIHttYXBzfSAkb3ZlcnJpZGVz4oCmIC1cbi8vLyAgIE9wdGlvbmFsIG1hcCBvdmVycmlkZSBvZiBnbG9iYWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncy5cbi8vLyAgIFNlZSBgJHN1c3lgIGFib3ZlIGZvciBwcm9wZXJ0aWVzLlxuLy8vXG4vLy8gQHJldHVybiB7bWFwfSAtXG4vLy8gICBDb21iaW5lZCBtYXAgb2YgU3VzeSBjb25maWd1cmF0aW9uIHNldHRpbmdzLFxuLy8vICAgaW4gb3JkZXIgb2Ygc3BlY2lmaWNpdHk6XG4vLy8gICBhbnkgYCRvdmVycmlkZXMuLi5gLFxuLy8vICAgdGhlbiBgJHN1c3lgIHByb2plY3Qgc2V0dGluZ3MsXG4vLy8gICBhbmQgZmluYWxseSB0aGUgYCRfc3VzeS1kZWZhdWx0c2Bcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBnbG9iYWwgc2V0dGluZ3Ncbi8vLyAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiBzdXN5LXNldHRpbmdzKCkge1xuLy8vICAgICAvKiAjeyRrZXl9OiAjeyR2YWx1ZX0gKi9cbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBsb2NhbCBzZXR0aW5nc1xuLy8vICAgJGxvY2FsOiAoJ2NvbHVtbnMnOiAxIDIgMyA1IDgpO1xuLy8vXG4vLy8gICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gc3VzeS1zZXR0aW5ncygkbG9jYWwpIHtcbi8vLyAgICAgLyogI3ska2V5fTogI3skdmFsdWV9ICovXG4vLy8gICB9XG5AZnVuY3Rpb24gc3VzeS1zZXR0aW5ncyhcbiAgJG92ZXJyaWRlcy4uLlxuKSB7XG4gICRzZXR0aW5nczogbWFwLW1lcmdlKCRfc3VzeS1kZWZhdWx0cywgJHN1c3kpO1xuXG4gIEBlYWNoICRjb25maWcgaW4gJG92ZXJyaWRlcyB7XG4gICAgJHNldHRpbmdzOiBtYXAtbWVyZ2UoJHNldHRpbmdzLCAkY29uZmlnKTtcbiAgfVxuXG4gIEByZXR1cm4gJHNldHRpbmdzO1xufVxuXG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLy8gUmV0dXJuIHRoZSBjdXJyZW50IGdsb2JhbCB2YWx1ZSBvZiBhbnkgU3VzeSBzZXR0aW5nXG4vLy9cbi8vLyBAZ3JvdXAgY29uZmlnXG4vLy9cbi8vLyBAcGFyYW0ge3N0cmluZ30gJGtleSAtXG4vLy8gICBTZXR0aW5nIHRvIHJldHJpZXZlIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24uXG4vLy9cbi8vLyBAcmV0dXJuIHsqfSAtXG4vLy8gICBWYWx1ZSBtYXBwZWQgdG8gYCRrZXlgIGluIHRoZSBjb25maWd1cmF0aW9uIG1hcHMsXG4vLy8gICBpbiBvcmRlciBvZiBzcGVjaWZpY2l0eTpcbi8vLyAgIGAkc3VzeWAsIHRoZW4gYCRfc3VzeS1kZWZhdWx0c2Bcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLVxuLy8vICAgLyogY29sdW1uczogI3tzdXN5LWdldCgnY29sdW1ucycpfSAqL1xuLy8vICAgLyogZ3V0dGVyczogI3tzdXN5LWdldCgnZ3V0dGVycycpfSAqL1xuQGZ1bmN0aW9uIHN1c3ktZ2V0KFxuICAka2V5XG4pIHtcbiAgJHNldHRpbmdzOiBzdXN5LXNldHRpbmdzKCk7XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkc2V0dGluZ3MsICRrZXkpIHtcbiAgICBAcmV0dXJuIF9zdXN5LWVycm9yKFxuICAgICAgJ1RoZXJlIGlzIG5vIFN1c3kgc2V0dGluZyBjYWxsZWQgYCN7JGtleX1gJyxcbiAgICAgICdzdXN5LWdldCcpO1xuICB9XG5cbiAgQHJldHVybiBtYXAtZ2V0KCRzZXR0aW5ncywgJGtleSk7XG59XG4iLCIvLy8gU3ludGF4IE5vcm1hbGl6YXRpb25cbi8vLyA9PT09PT09PT09PT09PT09PT09PVxuLy8vIFN1c3kgaXMgZGl2aWRlZCBpbnRvIHR3byBsYXllcnM6XG4vLy8gXCJTdVwiIHByb3ZpZGVzIHRoZSBjb3JlIG1hdGggZnVuY3Rpb25zIHdpdGggYSBzdHJpcHBlZC1kb3duIHN5bnRheCxcbi8vLyB3aGlsZSBcIlN1c3lcIiBhZGRzIGdsb2JhbCBzZXR0aW5ncywgc2hvcnRoYW5kIHN5bnRheCxcbi8vLyBhbmQgb3RoZXIgaGVscGVycy5cbi8vLyBFYWNoIHNldHRpbmcgKGUuZy4gc3BhbiwgbG9jYXRpb24sIGNvbHVtbnMsIHNwcmVhZCwgZXRjLilcbi8vLyBoYXMgYSBzaW5nbGUgY2Fub25pY2FsIHN5bnRheCBpbiBTdS5cbi8vL1xuLy8vIFRoaXMgbm9ybWFsaXphdGlvbiBtb2R1bGUgaGVscHMgdHJhbnNsYXRlIGJldHdlZW4gdGhvc2UgbGF5ZXJzLFxuLy8vIHRyYW5zZm9ybWluZyBwYXJzZWQgU3VzeSBpbnB1dCBpbnRvXG4vLy8gdmFsdWVzIHRoYXQgU3Ugd2lsbCB1bmRlcnN0YW5kLlxuLy8vXG4vLy8gQGdyb3VwIF9ub3JtYWxcbi8vL1xuLy8vIEBzZWUgc3VzeS1ub3JtYWxpemVcbi8vLyBAc2VlIHN1c3ktbm9ybWFsaXplLXNwYW5cbi8vLyBAc2VlIHN1c3ktbm9ybWFsaXplLWNvbHVtbnNcbi8vLyBAc2VlIHN1c3ktbm9ybWFsaXplLXNwcmVhZFxuLy8vIEBzZWUgc3VzeS1ub3JtYWxpemUtbG9jYXRpb25cblxuXG5cbi8vIFN1c3kgTm9ybWFsaXplXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8vIE5vcm1hbGl6ZSB0aGUgdmFsdWVzIGluIGEgY29uZmlndXJhdGlvbiBtYXAuXG4vLy8gSW4gYWRkaXRpb24gdG8gdGhlIGdsb2JhbCBgJHN1c3lgIHByb3BlcnRpZXMsXG4vLy8gdGhpcyBtYXAgY2FuIGluY2x1ZGUgbG9jYWwgc3Bhbi1yZWxhdGVkIGluZm9ybWF0aW9uLFxuLy8vIGxpa2UgYHNwYW5gIGFuZCBgbG9jYXRpb25gLlxuLy8vXG4vLy8gTm9ybWFsaXphdGlvbiBkb2VzIG5vdCBjaGVjayB0aGF0IHZhbHVlcyBhcmUgdmFsaWQsXG4vLy8gd2hpY2ggd2lsbCBoYXBwZW4gaW4gdGhlIFN1IG1hdGggbGF5ZXIuXG4vLy8gVGhlc2UgZnVuY3Rpb25zIG1lcmVseSBsb29rIGZvciBrbm93biBTdXN5IHN5bnRheCDigJNcbi8vLyByZXR1cm5pbmcgYSBtYXAgd2l0aCB0aG9zZSBzaG9ydGhhbmQgdmFsdWVzXG4vLy8gY29udmVydGVkIGludG8gbG93LWxldmVsIGRhdGEgZm9yIFN1LlxuLy8vIEZvciBleGFtcGxlIGBzcGFuOiBhbGxgIGFuZCBgbG9jYXRpb246IGZpcnN0YFxuLy8vIHdpbGwgYmUgY29udmVydGVkIGludG8gc3BlY2lmaWMgbnVtYmVycy5cbi8vL1xuLy8vIEBncm91cCBfbm9ybWFsXG4vLy8gQHNlZSAkc3VzeVxuLy8vIEBzZWUgc3VzeS1wYXJzZVxuLy8vXG4vLy8gQHBhcmFtIHttYXB9ICRjb25maWcgLVxuLy8vICAgTWFwIG9mIFN1c3kgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0byBub3JtYWxpemUuXG4vLy8gICBTZWUgYCRzdXN5YCBhbmQgYHN1c3ktcGFyc2UoKWAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy5cbi8vLyBAcGFyYW0ge21hcCB8IG51bGx9ICRjb250ZXh0IFtudWxsXSAtXG4vLy8gICBNYXAgb2YgU3VzeSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHRvIHVzZSBhcyBnbG9iYWwgcmVmZXJlbmNlLFxuLy8vICAgb3IgYG51bGxgIHRvIHVzZSBnbG9iYWwgc2V0dGluZ3MuXG4vLy9cbi8vLyBAcmV0dXJuIHttYXB9IC1cbi8vLyAgIE1hcCBvZiBTdXN5IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MsXG4vLy8gICB3aXRoIGFsbCB2YWx1ZXMgbm9ybWFsaXplZCBmb3IgU3UgbWF0aCBmdW5jdGlvbnMuXG5AZnVuY3Rpb24gc3VzeS1ub3JtYWxpemUoXG4gICRjb25maWcsXG4gICRjb250ZXh0OiBudWxsXG4pIHtcbiAgLy8gU3ByZWFkXG4gIEBlYWNoICRzZXR0aW5nIGluICgnc3ByZWFkJywgJ2NvbnRhaW5lci1zcHJlYWQnKSB7XG4gICAgJHZhbHVlOiBtYXAtZ2V0KCRjb25maWcsICRzZXR0aW5nKTtcblxuICAgIEBpZiAkdmFsdWUge1xuICAgICAgJHZhbHVlOiBzdXN5LW5vcm1hbGl6ZS1zcHJlYWQoJHZhbHVlKTtcbiAgICAgICRjb25maWc6IG1hcC1tZXJnZSgkY29uZmlnLCAoJHNldHRpbmc6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbHVtbnNcbiAgJGNvbHVtbnM6IG1hcC1nZXQoJGNvbmZpZywgJ2NvbHVtbnMnKTtcblxuICBAaWYgJGNvbHVtbnMge1xuICAgICRjb2x1bW5zOiBzdXN5LW5vcm1hbGl6ZS1jb2x1bW5zKCRjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgJGNvbmZpZzogbWFwLW1lcmdlKCRjb25maWcsICgnY29sdW1ucyc6ICRjb2x1bW5zKSk7XG4gIH1cblxuICBAaWYgbm90ICRjb2x1bW5zIHtcbiAgICAkbWFwOiB0eXBlLW9mKCRjb250ZXh0KSA9PSAnbWFwJztcbiAgICAkY29sdW1uczogaWYoJG1hcCwgbWFwLWdldCgkY29udGV4dCwgJ2NvbHVtbnMnKSwgbnVsbCk7XG4gICAgJGNvbHVtbnM6ICRjb2x1bW5zIG9yIHN1c3ktZ2V0KCdjb2x1bW5zJyk7XG4gIH1cblxuICAvLyBTcGFuXG4gICRzcGFuOiBtYXAtZ2V0KCRjb25maWcsICdzcGFuJyk7XG5cbiAgQGlmICRzcGFuIHtcbiAgICAkc3Bhbjogc3VzeS1ub3JtYWxpemUtc3Bhbigkc3BhbiwgJGNvbHVtbnMpO1xuICAgICRjb25maWc6IG1hcC1tZXJnZSgkY29uZmlnLCAoJ3NwYW4nOiAkc3BhbikpO1xuICB9XG5cbiAgLy8gTG9jYXRpb25cbiAgJGxvY2F0aW9uOiBtYXAtZ2V0KCRjb25maWcsICdsb2NhdGlvbicpO1xuXG4gIEBpZiAkbG9jYXRpb24ge1xuICAgICRsb2NhdGlvbjogc3VzeS1ub3JtYWxpemUtbG9jYXRpb24oJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuICAgICRjb25maWc6IG1hcC1tZXJnZSgkY29uZmlnLCAoJ2xvY2F0aW9uJzogJGxvY2F0aW9uKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb25maWc7XG59XG5cblxuXG4vLyBOb3JtYWxpemUgU3BhblxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vLyBOb3JtYWxpemUgYHNwYW5gIHNob3J0aGFuZCBmb3IgU3UuXG4vLy8gU3Ugc3BhbiBzeW50YXggYWxsb3dzIGFuIGV4cGxpY2l0IGxlbmd0aCAoZS5nLiBgM2VtYCksXG4vLy8gdW5pdGxlc3MgY29sdW1uLXNwYW4gbnVtYmVyIChlLmcuIGAzYCBjb2x1bW5zKSxcbi8vLyBvciBhbiBleHBsaWNpdCBsaXN0IG9mIGNvbHVtbnMgKGUuZy4gYCgzIDUgOClgKS5cbi8vL1xuLy8vIFN1c3kgc3BhbiBzeW50YXggYWxzbyBhbGxvd3MgdGhlIGBhbGxgIGtleXdvcmQsXG4vLy8gd2hpY2ggd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBzbGljZSBvZiB0aGUgY29udGV4dFxuLy8vIGluIG5vcm1hbGl6YXRpb24uXG4vLy9cbi8vLyBAZ3JvdXAgX25vcm1hbFxuLy8vXG4vLy8gQHBhcmFtIHtudW1iZXIgfCBsaXN0IHwgJ2FsbCd9ICRzcGFuIC1cbi8vLyAgIFNwYW4gdmFsdWUgdG8gbm9ybWFsaXplLlxuLy8vIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLVxuLy8vICAgTm9ybWFsaXplZCBsaXN0IG9mIGNvbHVtbnMgaW4gdGhlIGdyaWRcbi8vL1xuLy8vIEByZXR1cm4ge251bWJlciB8IGxpc3R9IC1cbi8vLyAgIE51bWJlciBvciBsaXN0IHZhbHVlIGZvciBgJHNwYW5gXG5AZnVuY3Rpb24gc3VzeS1ub3JtYWxpemUtc3BhbihcbiAgJHNwYW4sXG4gICRjb2x1bW5zOiBzdXN5LWdldCgnY29sdW1ucycpXG4pIHtcbiAgQGlmICgkc3BhbiA9PSAnYWxsJykge1xuICAgIEByZXR1cm4gbGVuZ3RoKCRjb2x1bW5zKTtcbiAgfVxuXG4gIEByZXR1cm4gJHNwYW47XG59XG5cblxuXG4vLyBOb3JtYWxpemUgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyBOb3JtYWxpemUgYGNvbHVtbmAgc2hvcnRoYW5kIGZvciBTdS5cbi8vLyBTdSBjb2x1bW4gc3ludGF4IG9ubHkgYWxsb3dzIGNvbHVtbiBsaXN0cyAoZS5nLiBgMTIwcHggMSAxIDEgMTIwcHhgKS5cbi8vL1xuLy8vIFN1c3kgc3BhbiBzeW50YXggYWxzbyBhbGxvd3MgYSB1bml0bGVzcyBgc2xpY2VgIG51bWJlciAoZS5nIGBvZiA1YCksXG4vLy8gd2hpY2ggd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBzbGljZSBvZiB0aGUgY29udGV4dFxuLy8vIGluIG5vcm1hbGl6YXRpb24uXG4vLy9cbi8vLyBAZ3JvdXAgX25vcm1hbFxuLy8vXG4vLy8gQHBhcmFtIHtsaXN0IHwgaW50ZWdlcn0gJGNvbHVtbnMgLVxuLy8vICAgTGlzdCBvZiBhdmFpbGFibGUgY29sdW1ucyxcbi8vLyAgIG9yIHVuaXRsZXNzIGludGVnZXIgcmVwcmVzZW50aW5nIGEgc2xpY2Ugb2Zcbi8vLyAgIHRoZSBhdmFpbGFibGUgY29udGV4dC5cbi8vLyBAcGFyYW0ge21hcCB8IG51bGx9ICRjb250ZXh0IFtudWxsXSAtXG4vLy8gICBNYXAgb2YgU3VzeSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHRvIHVzZSBhcyBnbG9iYWwgcmVmZXJlbmNlLFxuLy8vICAgb3IgYG51bGxgIHRvIGFjY2VzcyBnbG9iYWwgc2V0dGluZ3MuXG4vLy9cbi8vLyBAcmV0dXJuIHtsaXN0fSAtXG4vLy8gICBDb2x1bW5zIGxpc3QgdmFsdWUsIG5vcm1hbGl6ZWQgZm9yIFN1IGlucHV0LlxuLy8vXG4vLy8gQHRocm93c1xuLy8vICAgd2hlbiBhdHRlbXB0aW5nIHRvIGFjY2VzcyBhIHNsaWNlIG9mIGFzeW1tZXRyaWNhbCBjb250ZXh0XG5AZnVuY3Rpb24gc3VzeS1ub3JtYWxpemUtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRjb250ZXh0OiBudWxsXG4pIHtcbiAgJGNvbnRleHQ6ICRjb250ZXh0IG9yIHN1c3ktc2V0dGluZ3MoKTtcblxuICBAaWYgdHlwZS1vZigkY29sdW1ucykgPT0gJ2xpc3QnIHtcbiAgICBAcmV0dXJuIF9zdXN5LWZsYXR0ZW4oJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICh0eXBlLW9mKCRjb2x1bW5zKSA9PSAnbnVtYmVyJykgYW5kICh1bml0bGVzcygkY29sdW1ucykpIHtcbiAgICAkc3BhbjogJGNvbHVtbnM7XG4gICAgJGNvbnRleHQ6IG1hcC1nZXQoJGNvbnRleHQsICdjb2x1bW5zJyk7XG4gICAgJHN5bW1ldHJpY2FsOiBzdXN5LXJlcGVhdChsZW5ndGgoJGNvbnRleHQpLCBudGgoJGNvbnRleHQsIDEpKTtcblxuICAgIEBpZiAoJGNvbnRleHQgPT0gJHN5bW1ldHJpY2FsKSB7XG4gICAgICBAcmV0dXJuIHN1c3ktcmVwZWF0KCRzcGFuLCBudGgoJGNvbnRleHQsIDEpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRhY3R1YWw6ICdvZiBgI3skc3Bhbn1gJztcbiAgICAgICRjb2x1bW5zOiAnZ3JpZC1jb2x1bW5zIGAjeyRjb250ZXh0fWAnO1xuICAgICAgQHJldHVybiBfc3VzeS1lcnJvcihcbiAgICAgICAgJ2NvbnRleHQtc2xpY2UgI3skYWN0dWFsfSBjYW4gbm90IGJlIGRldGVybWluZWQgYmFzZWQgb24gI3skY29sdW1uc30uJyxcbiAgICAgICAgJ3N1c3ktbm9ybWFsaXplLWNvbHVtbnMnKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW5zO1xufVxuXG5cblxuLy8gTm9ybWFsaXplIFNwcmVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8vIE5vcm1hbGl6ZSBgc3ByZWFkYCBzaG9ydGhhbmQgZm9yIFN1LlxuLy8vIFN1IHNwcmVhZCBzeW50YXggb25seSBhbGxvd3MgdGhlIG51bWJlcnMgYC0xYCwgYDBgLCBvciBgMWAg4oCTXG4vLy8gcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgZ3V0dGVycyBjb3ZlcmVkXG4vLy8gaW4gcmVsYXRpb24gdG8gY29sdW1ucyBzcGFubmVkLlxuLy8vXG4vLy8gU3VzeSBzcHJlYWQgc3ludGF4IGFsc28gYWxsb3dzIGtleXdvcmRzIGZvciBlYWNoIHZhbHVlIOKAk1xuLy8vIGBuYXJyb3dgIGZvciBgLTFgLCBgd2lkZWAgZm9yIGAwYCwgb3IgYHdpZGVyYCBmb3IgYDFgIOKAk1xuLy8vIHdoaWNoIHdpbGwgYmUgY29udmVydGVkIHRvIHRoZWlyIHJlc3BlY3RpdmUgaW50ZWdlcnNcbi8vLyBpbiBub3JtYWxpemF0aW9uLlxuLy8vXG4vLy8gQGdyb3VwIF9ub3JtYWxcbi8vL1xuLy8vIEBwYXJhbSB7MCB8IDEgfCAtMSB8ICduYXJyb3cnIHwgJ3dpZGUnIHwgJ3dpZGVyJ30gJHNwcmVhZCAtXG4vLy8gICBTcHJlYWQgYWNyb3NzIGFkamFjZW50IGd1dHRlcnMsIHJlbGF0aXZlIHRvIGEgY29sdW1uLWNvdW50IOKAlFxuLy8vICAgZWl0aGVyIGBuYXJyb3dgICgtMSksIGB3aWRlYCAoMCksIG9yIGB3aWRlcmAgKDEpXG4vLy9cbi8vLyBAcmV0dXJuIHtudW1iZXJ9IC1cbi8vLyAgIE51bWVyaWMgdmFsdWUgZm9yIGAkc3ByZWFkYFxuQGZ1bmN0aW9uIHN1c3ktbm9ybWFsaXplLXNwcmVhZChcbiAgJHNwcmVhZFxuKSB7XG4gICRub3JtYWwtc3ByZWFkOiAoXG4gICAgJ25hcnJvdyc6IC0xLFxuICAgICd3aWRlJzogMCxcbiAgICAnd2lkZXInOiAxLFxuICApO1xuXG4gIEByZXR1cm4gbWFwLWdldCgkbm9ybWFsLXNwcmVhZCwgJHNwcmVhZCkgb3IgJHNwcmVhZDtcbn1cblxuXG5cbi8vIE5vcm1hbGl6ZSBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLy8gTm9ybWFsaXplIGBsb2NhdGlvbmAgc2hvcnRoYW5kIGZvciBTdS5cbi8vLyBTdSBsb2NhdGlvbiBzeW50YXggcmVxdWlyZXMgdGhlICgxLWluZGV4ZWQpIG51bWJlciBmb3IgYSBjb2x1bW4uXG4vLy9cbi8vLyBTdXN5IGFsc28gYWxsb3dzIHRoZSBgZmlyc3RgIGFuZCBgbGFzdGAga2V5d29yZHMsXG4vLy8gd2hlcmUgYGZpcnN0YCBpcyBhbHdheXMgYDFgLFxuLy8vIGFuZCBgbGFzdGAgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiBzcGFuIGFuZCBjb2x1bW4gdmFsdWVzLlxuLy8vIEJvdGgga2V5d29yZHMgYXJlIG5vcm1hbGl6ZWQgaW50byBhbiBpbnRlZ2VyIGluZGV4XG4vLy8gaW4gbm9ybWFsaXphdGlvbi5cbi8vL1xuLy8vIEBncm91cCBfbm9ybWFsXG4vLy9cbi8vLyBAcGFyYW0ge251bWJlcn0gJHNwYW4gLVxuLy8vICAgTnVtYmVyIG9mIGdyaWQtY29sdW1ucyB0byBiZSBzcGFubmVkXG4vLy8gQHBhcmFtIHtpbnRlZ2VyIHwgJ2ZpcnN0JyB8ICdsYXN0J30gJGxvY2F0aW9uIC1cbi8vLyAgIFN0YXJ0aW5nICgxLWluZGV4ZWQpIGNvbHVtbiBwb3NpdGlvbiBvZiBhIHNwYW4sXG4vLy8gICBvciBhIG5hbWVkIGxvY2F0aW9uIGtleXdvcmQuXG4vLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtXG4vLy8gICBBbHJlYWR5LW5vcm1hbGl6ZWQgbGlzdCBvZiBjb2x1bW5zIGluIHRoZSBncmlkLlxuLy8vXG4vLy8gQHJldHVybiB7aW50ZWdlcn0gLVxuLy8vICAgTnVtZXJpYyB2YWx1ZSBmb3IgYCRsb2NhdGlvbmBcbkBmdW5jdGlvbiBzdXN5LW5vcm1hbGl6ZS1sb2NhdGlvbihcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnNcbikge1xuICAkY291bnQ6IGxlbmd0aCgkY29sdW1ucyk7XG4gICRub3JtYWwtbG9jYXRpb25zOiAoXG4gICAgJ2ZpcnN0JzogMSxcbiAgICAnYWxwaGEnOiAxLFxuICAgICdsYXN0JzogJGNvdW50IC0gJHNwYW4gKyAxLFxuICAgICdvbWVnYSc6ICRjb3VudCAtICRzcGFuICsgMSxcbiAgKTtcblxuICBAcmV0dXJuIG1hcC1nZXQoJG5vcm1hbC1sb2NhdGlvbnMsICRsb2NhdGlvbikgb3IgJGxvY2F0aW9uO1xufVxuIiwiLy8vIFNob3J0aGFuZCBTeW50YXggUGFyc2VyXG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT1cbi8vLyBUaGUgc3ludGF4IHBhcnNlciBjb252ZXJ0cyBbc2hvcnRoYW5kIHN5bnRheF1bc2hvcnRdXG4vLy8gaW50byBhIG1hcCBvZiBzZXR0aW5ncyB0aGF0IGNhbiBiZSBjb21wYXJlZC9tZXJnZWQgd2l0aFxuLy8vIG90aGVyIGNvbmZpZyBtYXBzIGFuZCBnbG9iYWwgc2V0dGluZy5cbi8vL1xuLy8vIFtzaG9ydF06IGFwaS5odG1sXG4vLy9cbi8vLyBAZ3JvdXAgX3BhcnNlclxuXG5cblxuLy8gUGFyc2Vcbi8vIC0tLS0tXG4vLy8gVGhlIGBwYXJzZWAgZnVuY3Rpb24gcHJvdmlkZXMgYWxsIHRoZSBzeW50YXgtc3VnYXIgaW4gU3VzeSxcbi8vLyBjb252ZXJ0aW5nIHVzZXIgc2hvcnRoYW5kXG4vLy8gaW50byBhIHVzYWJsZSBtYXAgb2Yga2V5cyBhbmQgdmFsdWVzXG4vLy8gdGhhdCBjYW4gYmUgbm9ybWFsaXplZCBhbmQgcGFzc2VkIHRvIFN1LlxuLy8vXG4vLy8gQGdyb3VwIF9wYXJzZXJcbi8vLyBAc2VlICRzdXN5XG4vLy9cbi8vLyBAcGFyYW0ge2xpc3R9ICRzaG9ydGhhbmQgLVxuLy8vICAgU2hvcnRoYW5kIGV4cHJlc3Npb24gdG8gZGVmaW5lIHRoZSB3aWR0aCBvZiB0aGUgc3Bhbixcbi8vLyAgIG9wdGlvbmFsbHkgY29udGFpbmluZzpcbi8vLyAgIC0gYSBjb3VudCwgbGVuZ3RoLCBvciBjb2x1bW4tbGlzdCBzcGFuO1xuLy8vICAgLSBgYXQgJG5gLCBgZmlyc3RgLCBvciBgbGFzdGAgbG9jYXRpb24gb24gYXN5bW1ldHJpY2FsIGdyaWRzO1xuLy8vICAgLSBgbmFycm93YCwgYHdpZGVgLCBvciBgd2lkZXJgIGZvciBvcHRpb25hbGx5IHNwcmVhZGluZ1xuLy8vICAgICBhY3Jvc3MgYWRqYWNlbnQgZ3V0dGVycztcbi8vLyAgIC0gYG9mICRuIDxzcHJlYWQ+YCBmb3IgYXZhaWxhYmxlIGdyaWQgY29sdW1uc1xuLy8vICAgICBhbmQgc3ByZWFkIG9mIHRoZSBjb250YWluZXJcbi8vLyAgICAgKHNwYW4gY291bnRzIGxpa2UgYG9mIDZgIGFyZSBvbmx5IHZhbGlkXG4vLy8gICAgIGluIHRoZSBjb250ZXh0IG9mIHN5bW1ldHJpY2FsIGdyaWRzKTtcbi8vLyAgIC0gYW5kIGBzZXQtZ3V0dGVycyAkbmAgdG8gb3ZlcnJpZGUgZ2xvYmFsIGd1dHRlciBzZXR0aW5nc1xuLy8vIEBwYXJhbSB7Ym9vbH0gJGNvbnRleHQtb25seSBbZmFsc2VdIC1cbi8vLyAgIEFsbG93IHRoZSBwYXJzZXIgdG8gaWdub3JlIHNwYW4gYW5kIHNwYW4tc3ByZWFkIHZhbHVlcyxcbi8vLyAgIG9ubHkgcGFyc2luZyBjb250ZXh0IGFuZCBjb250YWluZXItc3ByZWFkLlxuLy8vICAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBhY2NlcHQgc3Bhbmxlc3MgdmFsdWVzLFxuLy8vICAgbGlrZSB0aGUgYGd1dHRlcnMoKWAgc3ludGF4LlxuLy8vICAgV2hlbiBwYXJzaW5nIGNvbnRleHQtb25seSxcbi8vLyAgIHRoZSBgb2ZgIGluZGljYXRvciBpcyBvcHRpb25hbC5cbi8vL1xuLy8vIEByZXR1cm4ge21hcH0gLVxuLy8vICAgTWFwIG9mIHNwYW4gYW5kIGdyaWQgc2V0dGluZ3Ncbi8vLyAgIHBhcnNlZCBmcm9tIHNob3J0aGFuZCBpbnB1dCDigJNcbi8vLyAgIGluY2x1ZGluZyBhbGwgdGhlIHByb3BlcnRpZXMgYXZhaWxhYmxlIGdsb2JhbGx5IOKAk1xuLy8vICAgYGNvbHVtbnNgLCBgZ3V0dGVyc2AsIGBzcHJlYWRgLCBgY29udGFpbmVyLXNwcmVhZGAg4oCTXG4vLy8gICBhbG9uZyB3aXRoIHRoZSBzcGFuLXNwZWNpZmljIHByb3BlcnRpZXNcbi8vLyAgIGBzcGFuYCwgYW5kIGBsb2NhdGlvbmAuXG4vLy9cbi8vLyBAdGhyb3dcbi8vLyAgIHdoZW4gYSBzaG9ydGhhbmQgdmFsdWUgaXMgbm90IHJlY29nbml6ZWRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlKFxuICAkc2hvcnRoYW5kLFxuICAkY29udGV4dC1vbmx5OiBmYWxzZVxuKSB7XG4gICRwYXJzZS1lcnJvcjogJ1Vua25vd24gc2hvcnRoYW5kIHByb3BlcnR5Oic7XG4gICRvcHRpb25zOiAoXG4gICAgJ2ZpcnN0JzogJ2xvY2F0aW9uJyxcbiAgICAnbGFzdCc6ICdsb2NhdGlvbicsXG4gICAgJ2FscGhhJzogJ2xvY2F0aW9uJyxcbiAgICAnb21lZ2EnOiAnbG9jYXRpb24nLFxuICAgICduYXJyb3cnOiAnc3ByZWFkJyxcbiAgICAnd2lkZSc6ICdzcHJlYWQnLFxuICAgICd3aWRlcic6ICdzcHJlYWQnLFxuICApO1xuXG4gICRyZXR1cm46ICgpO1xuICAkc3BhbjogbnVsbDtcbiAgJGNvbHVtbnM6IG51bGw7XG5cbiAgJG9mOiBudWxsO1xuICAkbmV4dDogZmFsc2U7XG5cbiAgLy8gQWxsb3cgY29udGV4dC1vbmx5IHNob3J0aGFuZCwgd2l0aG91dCBzcGFuXG4gIEBpZiAoJGNvbnRleHQtb25seSkgYW5kIChub3QgaW5kZXgoJHNob3J0aGFuZCwgJ29mJykpIHtcbiAgICBAaWYgc3UtdmFsaWQtY29sdW1ucygkc2hvcnRoYW5kLCAnZmFpbC1zaWxlbnQnKSB7XG4gICAgICAkc2hvcnRoYW5kOiAnb2YnICRzaG9ydGhhbmQ7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc2hvcnRoYW5kOiBqb2luKCdvZicsICRzaG9ydGhhbmQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGxvb3AgdGhyb3VnaCB0aGUgc2hvcnRoYW5kIGxpc3RcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHNob3J0aGFuZCkge1xuICAgICRpdGVtOiBudGgoJHNob3J0aGFuZCwgJGkpO1xuICAgICR0eXBlOiB0eXBlLW9mKCRpdGVtKTtcbiAgICAkZXJyb3I6IGZhbHNlO1xuICAgICRkZXRhaWxzOiAnWyN7JHR5cGV9XSBgI3skaXRlbX1gJztcblxuICAgIC8vIGlmIHdlIGtub3cgd2hhdCdzIHN1cHBvc2VkIHRvIGJlIGNvbWluZyBuZXh04oCmXG4gICAgQGlmICRuZXh0IHtcblxuICAgICAgLy8gQWRkIHRvIHRoZSByZXR1cm4gbWFwXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuZXh0OiAkaXRlbSkpO1xuXG4gICAgICAvLyBSZXNldCBuZXh0IHRvIGBmYWxzZWBcbiAgICAgICRuZXh0OiBmYWxzZTtcblxuICAgIH0gQGVsc2UgeyAvLyBJZiB3ZSBkb24ndCBrbm93IHdoYXQncyBzdXBwb3NlZCB0byBiZSBjb21pbmfigKZcblxuICAgICAgLy8gS2V5d29yZHPigKZcbiAgICAgIEBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8gQ2hlY2sgdGhlIG1hcCBmb3Iga2V5d29yZHPigKZcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRvcHRpb25zLCAkaXRlbSkge1xuICAgICAgICAgICRzZXR0aW5nOiBtYXAtZ2V0KCRvcHRpb25zLCAkaXRlbSk7XG5cbiAgICAgICAgICAvLyBTcHJlYWQgY291bGQgYmUgb24gdGhlIHNwYW4gb3IgdGhlIGNvbnRhaW5lcuKAplxuICAgICAgICAgIEBpZiAoJHNldHRpbmcgPT0gJ3NwcmVhZCcpIGFuZCAoJG9mKSB7XG4gICAgICAgICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCdjb250YWluZXItc3ByZWFkJzogJGl0ZW0pKTtcbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJHNldHRpbmc6ICRpdGVtKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0gQGVsc2UgaWYgKCRpdGVtID09ICdhbGwnKSB7XG4gICAgICAgICAgLy8gYEFsbGAgaXMgYSBzcGFuIHNob3J0Y3V0XG4gICAgICAgICAgJHNwYW46ICdhbGwnO1xuICAgICAgICB9IEBlbHNlIGlmICgkaXRlbSA9PSAnYXQnKSB7XG4gICAgICAgICAgLy8gU29tZSBrZXl3b3JkcyBzZXR1cCB3aGF0J3MgbmV4dOKAplxuICAgICAgICAgICRuZXh0OiAnbG9jYXRpb24nO1xuICAgICAgICB9IEBlbHNlIGlmICgkaXRlbSA9PSAnc2V0LWd1dHRlcnMnKSB7XG4gICAgICAgICAgJG5leHQ6ICdndXR0ZXJzJztcbiAgICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPT0gJ29mJykge1xuICAgICAgICAgICRvZjogdHJ1ZTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJGVycm9yOiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgIH0gQGVsc2UgaWYgKCR0eXBlID09ICdudW1iZXInKSBvciAoJHR5cGUgPT0gJ2xpc3QnKSB7IC8vIE51bWJlcnMgJiBsaXN0c+KAplxuXG4gICAgICAgIEBpZiBub3QgKCRzcGFuIG9yICRvZikge1xuICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYSBzcGFuLCBhbmQgd2UncmUgbm90IGV4cGVjdGluZyBjb250ZXh04oCmXG4gICAgICAgICAgJHNwYW46ICRpdGVtO1xuICAgICAgICB9IEBlbHNlIGlmICgkb2YpIGFuZCAobm90ICRjb2x1bW5zKSB7XG4gICAgICAgICAgLy8gV2UgYXJlIGV4cGVjdGluZyBjb250ZXh04oCmXG4gICAgICAgICAgJGNvbHVtbnM6ICRpdGVtO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkZXJyb3I6IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRlcnJvcjogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGVycm9yIHtcbiAgICAgIEByZXR1cm4gX3N1c3ktZXJyb3IoJyN7JHBhcnNlLWVycm9yfSAjeyRkZXRhaWxzfScsICdzdXN5LXBhcnNlJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgd2UgaGF2ZSBzcGFuLCBtZXJnZSBpdCBpblxuICBAaWYgJHNwYW4ge1xuICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJ3NwYW4nOiAkc3BhbikpO1xuICB9XG5cbiAgLy8gSWYgd2UgaGF2ZSBjb2x1bW5zLCBtZXJnZSB0aGVtIGluXG4gIEBpZiAkY29sdW1ucyB7XG4gICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgnY29sdW1ucyc6ICRjb2x1bW5zKSk7XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIG1hcCBvZiBzZXR0aW5nc+KAplxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLy8gU3ludGF4IFV0aWxpdGllcyBmb3IgRXh0ZW5kaW5nIFN1c3lcbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8vIFRoZXJlIGFyZSBtYW55IHN0ZXBzIGludm9sdmVkXG4vLy8gd2hlbiB0cmFuc2xhdGluZyBiZXR3ZWVuIHRoZSBTdXN5IHN5bnRheCBsYXllcixcbi8vLyBhbmQgdGhlIFN1IGNvcmUgbWF0aC5cbi8vLyBUaGF0IGVudGlyZSBwcm9jZXNzIGNhbiBiZSBjb25kZW5zZWQgd2l0aCB0aGVzZSB0d28gZnVuY3Rpb25zLlxuLy8vIEZvciBhbnlvbmUgdGhhdCB3YW50cyB0byBhY2Nlc3MgdGhlIGZ1bGwgcG93ZXIgb2YgU3VzeSxcbi8vLyBhbmQgYnVpbGQgdGhlaXIgb3duIHBsdWdpbnMsIGZ1bmN0aW9ucywgb3IgbWl4aW5zIOKAk1xuLy8vIHRoaXMgaXMgdGhlIHByaW1hcnkgQVBJIGZvciBjb21waWxpbmcgdXNlciBpbnB1dCxcbi8vLyBhbmQgYWNjZXNzaW5nIHRoZSBjb3JlIG1hdGguXG4vLy9cbi8vLyBUaGlzIGlzIHRoZSBzYW1lIHRlY2huaXF1ZSB3ZSB1c2UgaW50ZXJuYWxseSxcbi8vLyB0byBrZWVwIG91ciBBUEkgbGF5ZXIgc2ltcGxlIGFuZCBsaWdodC13ZWlnaHQuXG4vLy8gRXZlcnkgZnVuY3Rpb24gYWNjZXB0cyB0d28gYXJndW1lbnRzLFxuLy8vIGEgXCJzaG9ydGhhbmRcIiBkZXNjcmlwdGlvbiBvZiB0aGUgc3BhbiBvciBjb250ZXh0LFxuLy8vIGFuZCBhbiBvcHRpb25hbCBzZXR0aW5ncy1tYXAgdG8gb3ZlcnJpZGUgZ2xvYmFsIGRlZmF1bHRzLlxuLy8vXG4vLy8gLSBVc2UgYHN1c3ktY29tcGlsZSgpYCB0byBwYXJzZSwgbWVyZ2UsIGFuZCBub3JtYWxpemVcbi8vLyAgIGFsbCB0aGUgdXNlciBzZXR0aW5ncyBpbnRvIGEgc2luZ2xlIG1hcC5cbi8vLyAtIFRoZW4gdXNlIGBzdS1jYWxsKClgIHRvIGNhbGwgb25lIG9mIHRoZSBjb3JlIG1hdGggZnVuY3Rpb25zLFxuLy8vICAgd2l0aCB3aGF0ZXZlciBkYXRhIGlzIG5lZWRlZCBmb3IgdGhhdCBmdW5jdGlvbi5cbi8vL1xuLy8vIEBncm91cCBwbHVnaW4tdXRpbHNcbi8vLyBAc2VlIHN1c3ktY29tcGlsZVxuLy8vIEBzZWUgc3UtY2FsbFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFN1c3kgQVBJIGBndXR0ZXJgIGZ1bmN0aW9uXG4vLy8gICBAZnVuY3Rpb24gc3VzeS1ndXR0ZXIoXG4vLy8gICAgICRjb250ZXh0OiBzdXN5LWdldCgnY29sdW1ucycpLFxuLy8vICAgICAkY29uZmlnOiAoKVxuLy8vICAgKSB7XG4vLy8gICAgIC8vIGNvbXBpbGUgYW5kIG5vcm1hbGl6ZSBhbGwgdXNlciBhcmd1bWVudHMgYW5kIGdsb2JhbCBzZXR0aW5nc1xuLy8vICAgICAkY29udGV4dDogc3VzeS1jb21waWxlKCRjb250ZXh0LCAkY29uZmlnLCAnY29udGV4dC1vbmx5Jyk7XG4vLy8gICAgIC8vIGNhbGwgYHN1LWd1dHRlcmAgd2l0aCB0aGUgYXBwcm9wcmlhdGUgZGF0YVxuLy8vICAgICBAcmV0dXJuIHN1LWNhbGwoJ3N1LWd1dHRlcicsICRjb250ZXh0KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBTYW1wbGUgYHNwYW5gIG1peGluIGZvciBmbG9hdGVkIGdyaWRzXG4vLy8gICBAbWl4aW4gc3Bhbihcbi8vLyAgICAgJHNwYW4sXG4vLy8gICAgICRjb25maWc6ICgpXG4vLy8gICApIHtcbi8vLyAgICAgJGNvbnRleHQ6IHN1c3ktY29tcGlsZSgkc3BhbiwgJGNvbmZpZyk7XG4vLy8gICAgIHdpZHRoOiBzdS1jYWxsKCdzdS1zcGFuJywgJGNvbnRleHQpO1xuLy8vXG4vLy8gICAgICRlbmQ6IG1hcC1nZXQoJGNvbnRleHQsICdzcGFuJykgKyBtYXAtZ2V0KCRjb250ZXh0LCAnbG9jYXRpb24nKSAtIDE7XG4vLy8gICAgICRpcy1sYXN0OiAoJGVuZCA9PSBtYXAtZ2V0KCRjb250ZXh0LCAnY29sdW1ucycpKTtcbi8vL1xuLy8vICAgICBAaWYgJGlzLWxhc3Qge1xuLy8vICAgICAgIGZsb2F0OiByaWdodDtcbi8vLyAgICAgfSBAZWxzZSB7XG4vLy8gICAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgICAgbWFyZ2luLXJpZ2h0OiBzdS1jYWxsKCdzdS1ndXR0ZXInLCAkY29udGV4dCk7XG4vLy8gICAgIH1cbi8vLyAgIH1cblxuXG5cbi8vIENvbXBpbGVcbi8vIC0tLS0tLS1cbi8vLyBTdXN5J3Mgc3ludGF4IGxheWVyIGhhcyB2YXJpb3VzIG1vdmluZyBwYXJ0cyxcbi8vLyB3aXRoIHN5bnRheC1wYXJzaW5nIGZvciB0aGUgZ3JpZC9zcGFuIHNob3J0aGFuZCxcbi8vLyBhbmQgbm9ybWFsaXphdGlvbiBmb3IgZWFjaCBvZiB0aGUgcmVzdWx0aW5nIHZhbHVlcy5cbi8vLyBUaGUgY29tcGlsZSBmdW5jdGlvbiByb2xscyB0aGlzIGFsbCB0b2dldGhlclxuLy8vIGluIGEgc2luZ2xlIGNhbGwg4oCTXG4vLy8gZm9yIHF1aWNrIGFjY2VzcyBmcm9tIG91ciBpbnRlcm5hbCBBUEkgZnVuY3Rpb25zLFxuLy8vIG9yIGFueSBhZGRpdGlvbmFsIGZ1bmN0aW9ucyBhbmQgbWl4aW5zIHlvdSBhZGQgdG8geW91ciBwcm9qZWN0LlxuLy8vIFBhc3MgdXNlciBpbnB1dCBhbmQgY29uZmlndXJhdGlvbiBtYXBzIHRvIHRoZSBjb21waWxlcixcbi8vLyBhbmQgaXQgd2lsbCBoYW5kIGJhY2sgYSBtYXAgb2YgdmFsdWVzIHJlYWR5IGZvciBTdS5cbi8vLyBDb21iaW5lIHRoaXMgd2l0aCB0aGUgYHN1LWNhbGxgIGZ1bmN0aW9uXG4vLy8gdG8gcXVpY2tseSBwYXJzZSwgbm9ybWFsaXplLCBhbmQgcHJvY2VzcyBncmlkIGNhbGN1bGF0aW9ucy5cbi8vL1xuLy8vIEBncm91cCBwbHVnaW4tdXRpbHNcbi8vLyBAc2VlIHN1LWNhbGxcbi8vL1xuLy8vIEBwYXJhbSB7bGlzdCB8IG1hcH0gJHNob3J0IFtudWxsXSAtXG4vLy8gICBTaG9ydGhhbmQgZXhwcmVzc2lvbiB0byBkZWZpbmUgdGhlIHdpZHRoIG9mIHRoZSBzcGFuLFxuLy8vICAgb3B0aW9uYWxseSBjb250YWluaW5nOlxuLy8vICAgLSBhIGNvdW50LCBsZW5ndGgsIG9yIGNvbHVtbi1saXN0IHNwYW47XG4vLy8gICAtIGBhdCAkbmAsIGBmaXJzdGAsIG9yIGBsYXN0YCBsb2NhdGlvbiBvbiBhc3ltbWV0cmljYWwgZ3JpZHM7XG4vLy8gICAtIGBuYXJyb3dgLCBgd2lkZWAsIG9yIGB3aWRlcmAgZm9yIG9wdGlvbmFsbHkgc3ByZWFkaW5nXG4vLy8gICAgIGFjcm9zcyBhZGphY2VudCBndXR0ZXJzO1xuLy8vICAgLSBgb2YgJG4gPHNwcmVhZD5gIGZvciBhdmFpbGFibGUgZ3JpZCBjb2x1bW5zXG4vLy8gICAgIGFuZCBzcHJlYWQgb2YgdGhlIGNvbnRhaW5lclxuLy8vICAgICAoc3BhbiBjb3VudHMgbGlrZSBgb2YgNmAgYXJlIG9ubHkgdmFsaWRcbi8vLyAgICAgaW4gdGhlIGNvbnRleHQgb2Ygc3ltbWV0cmljYWwgZ3JpZHMpO1xuLy8vICAgLSBhbmQgYHNldC1ndXR0ZXJzICRuYCB0byBvdmVycmlkZSBnbG9iYWwgZ3V0dGVyIHNldHRpbmdzXG4vLy8gQHBhcmFtIHttYXB9ICRjb25maWcgW251bGxdIC1cbi8vLyAgIE9wdGlvbmFsIG1hcCBvZiBTdXN5IGdyaWQgY29uZmlndXJhdGlvbiBzZXR0aW5nc1xuLy8vIEBwYXJhbSB7Ym9vbH0gJGNvbnRleHQtb25seSBbZmFsc2VdIC1cbi8vLyAgIEFsbG93IHRoZSBwYXJzZXIgdG8gaWdub3JlIHNwYW4gYW5kIHNwYW4tc3ByZWFkIHZhbHVlcyxcbi8vLyAgIG9ubHkgcGFyc2luZyBjb250ZXh0IGFuZCBjb250YWluZXItc3ByZWFkXG4vLy9cbi8vLyBAcmV0dXJuIHttYXB9IC1cbi8vLyAgIFBhcnNlZCBhbmQgbm9ybWFsaXplZCBtYXAgb2Ygc2V0dGluZ3MsXG4vLy8gICBiYXNlZCBvbiBnbG9iYWwgYW5kIGxvY2FsIGNvbmZpZ3VyYXRpb24sXG4vLy8gICBhbG9uZ3dpdGggc2hvcnRoYWQgYWRqdXN0bWVudHMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC1cbi8vLyAgICR1c2VyLWlucHV0OiAzIHdpZGUgb2Ygc3VzeS1yZXBlYXQoNiwgMTIwcHgpIHNldC1ndXR0ZXJzIDEwcHg7XG4vLy8gICAkZ3JpZC1kYXRhOiBzdXN5LWNvbXBpbGUoJHVzZXItaW5wdXQsICRzdXN5KTtcbi8vL1xuLy8vICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRncmlkLWRhdGEge1xuLy8vICAgICAvKiAjeyRrZXl9OiAjeyR2YWx1ZX0sICovXG4vLy8gICB9XG5AZnVuY3Rpb24gc3VzeS1jb21waWxlKFxuICAkc2hvcnQ6IG51bGwsXG4gICRjb25maWc6IG51bGwsXG4gICRjb250ZXh0LW9ubHk6IGZhbHNlXG4pIHtcbiAgLy8gR2V0IGFuZCBub3JtYWxpemUgY29uZmlnXG4gICRjb25maWc6IGlmKCRjb25maWcsIHN1c3ktc2V0dGluZ3MoJGNvbmZpZyksIHN1c3ktc2V0dGluZ3MoKSk7XG4gICRub3JtYWwtY29uZmlnOiBzdXN5LW5vcm1hbGl6ZSgkY29uZmlnKTtcblxuICAvLyBQYXJzZSBhbmQgbm9ybWFsaXplIHNob3J0aGFuZFxuICAkbm9ybWFsLXNob3J0OiAoKTtcblxuICBAaWYgJHNob3J0IHtcbiAgICBAaWYgKHR5cGUtb2YoJHNob3J0KSAhPSAnbWFwJykgYW5kIChsZW5ndGgoJHNob3J0KSA+IDApIHtcbiAgICAgICRzaG9ydDogc3VzeS1wYXJzZSgkc2hvcnQsICRjb250ZXh0LW9ubHkpO1xuICAgIH1cblxuICAgICRub3JtYWwtc2hvcnQ6IHN1c3ktbm9ybWFsaXplKCRzaG9ydCwgJG5vcm1hbC1jb25maWcpO1xuICB9XG5cbiAgLy8gTWVyZ2UgYW5kIHJldHVyblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkbm9ybWFsLWNvbmZpZywgJG5vcm1hbC1zaG9ydCk7XG59XG5cblxuXG4vLyBDYWxsXG4vLyAtLS0tXG4vLy8gVGhlIFN1c3kgcGFyc2luZyBhbmQgbm9ybWFsaXphdGlvbiBwcm9jZXNzXG4vLy8gcmVzdWx0cyBpbiBhIG1hcCBvZiBjb25maWd1cmF0aW9uIHNldHRpbmdzLFxuLy8vIG11Y2ggbGlrZSB0aGUgZ2xvYmFsIGAkc3VzeWAgc2V0dGluZ3MgbWFwLlxuLy8vIEluIG9yZGVyIHRvIHBhc3MgdGhhdCBpbmZvcm1hdGlvbiBhbG9uZyB0byBTdSBtYXRoIGZ1bmN0aW9ucyxcbi8vLyB0aGUgcHJvcGVyIHZhbHVlcyBoYXZlIHRvIGJlIHBpY2tlZCBvdXQsXG4vLy8gYW5kIGNvbnZlcnRlZCB0byBhcmd1bWVudHMuXG4vLy9cbi8vLyBUaGUgYHN1LWNhbGxgIGZ1bmN0aW9uIHN0cmVhbWxpbmVzIHRoYXQgcHJvY2Vzcyxcbi8vLyB3ZWVkaW5nIG91dCB0aGUgdW5uZWNlc3NhcnkgZGF0YSxcbi8vLyBhbmQgcGFzc2luZyB0aGUgcmVzdCBhbG9uZyB0byBTdSBpbiB0aGUgcHJvcGVyIGZvcm1hdC5cbi8vLyBDb21iaW5lIHRoaXMgd2l0aCBgc3VzeS1jb21waWxlYCB0byBxdWlja2x5IHBhcnNlLFxuLy8vIG5vcm1hbGl6ZSwgYW5kIHByb2Nlc3MgZ3JpZCBjYWxjdWxhdGlvbnMuXG4vLy9cbi8vLyBAZ3JvdXAgcGx1Z2luLXV0aWxzXG4vLy9cbi8vLyBAcmVxdWlyZSBzdS1zcGFuXG4vLy8gQHJlcXVpcmUgc3UtZ3V0dGVyXG4vLy8gQHJlcXVpcmUgc3Utc2xpY2Vcbi8vLyBAc2VlIHN1c3ktY29tcGlsZVxuLy8vXG4vLy8gQHBhcmFtIHsnc3Utc3BhbicgfCAnc3UtZ3V0dGVyJyB8ICdzdS1zbGljZSd9ICRuYW1lIC1cbi8vLyAgIE5hbWUgb2YgdGhlIFN1IG1hdGggZnVuY3Rpb24gdG8gY2FsbC5cbi8vLyBAcGFyYW0ge21hcH0gJGNvbmZpZyAtXG4vLy8gICBQYXJzZWQgYW5kIG5vcm1hbGl6ZWQgbWFwIG9mIFN1c3kgY29uZmlndXJhdGlvbiBzZXR0aW5nc1xuLy8vICAgdG8gdXNlIGZvciBtYXRoLWZ1bmN0aW9uIGFyZ3VtZW50cy5cbi8vL1xuLy8vIEByZXR1cm4geyp9IC1cbi8vLyAgIFJlc3VsdHMgb2YgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLVxuLy8vICAgJHVzZXItaW5wdXQ6IDMgd2lkZSBvZiBzdXN5LXJlcGVhdCg2LCAxMjBweCkgc2V0LWd1dHRlcnMgMTBweDtcbi8vLyAgICRncmlkLWRhdGE6IHN1c3ktY29tcGlsZSgkdXNlci1pbnB1dCwgJHN1c3kpO1xuLy8vXG4vLy8gICAuc3Utc3BhbiB7XG4vLy8gICAgIHdpZHRoOiBzdS1jYWxsKCdzdS1zcGFuJywgJGdyaWQtZGF0YSk7XG4vLy8gICB9XG5AZnVuY3Rpb24gc3UtY2FsbChcbiAgJG5hbWUsXG4gICRjb25maWdcbikge1xuICAkZ3JpZC1mdW5jdGlvbi1hcmdzOiAoXG4gICAgJ3N1LXNwYW4nOiAoJ3NwYW4nLCAnY29sdW1ucycsICdndXR0ZXJzJywgJ3NwcmVhZCcsICdjb250YWluZXItc3ByZWFkJywgJ2xvY2F0aW9uJyksXG4gICAgJ3N1LWd1dHRlcic6ICgnY29sdW1ucycsICdndXR0ZXJzJywgJ2NvbnRhaW5lci1zcHJlYWQnKSxcbiAgICAnc3Utc2xpY2UnOiAoJ3NwYW4nLCAnY29sdW1ucycsICdsb2NhdGlvbicpLFxuICApO1xuXG4gICRhcmdzOiBtYXAtZ2V0KCRncmlkLWZ1bmN0aW9uLWFyZ3MsICRuYW1lKTtcblxuICBAaWYgbm90ICRhcmdzIHtcbiAgICAkb3B0aW9uczogJ1RyeSBvbmUgb2YgdGhlc2U6ICN7bWFwLWtleXMoJGdyaWQtZnVuY3Rpb24tYXJncyl9JztcbiAgICBAcmV0dXJuIF9zdXN5LWVycm9yKFxuICAgICAgJyN7JG5hbWV9IGlzIG5vdCBhIHB1YmxpYyBTdSBmdW5jdGlvbi4gI3skb3B0aW9uc30nLFxuICAgICAgJ3N1LWNhbGwnKTtcbiAgfVxuXG4gICRjYWxsOiBpZihmdW5jdGlvbi1leGlzdHMoJ2dldC1mdW5jdGlvbicpLCBnZXQtZnVuY3Rpb24oJG5hbWUpLCAkbmFtZSk7XG4gICRvdXRwdXQ6ICgpO1xuXG4gIEBlYWNoICRhcmcgaW4gJGFyZ3Mge1xuICAgICR2YWx1ZTogbWFwLWdldCgkY29uZmlnLCAkYXJnKTtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJGFyZzogJHZhbHVlKSksICRvdXRwdXQpO1xuICB9XG5cbiAgQHJldHVybiBjYWxsKCRjYWxsLCAkb3V0cHV0Li4uKTtcbn1cbiIsIi8vLyBTdXN5MyBBUEkgRnVuY3Rpb25zXG4vLy8gPT09PT09PT09PT09PT09PT09PVxuLy8vIFRoZXNlIHRocmVlIGZ1bmN0aW9ucyBmb3JtIHRoZSBjb3JlIG9mIFN1c3knc1xuLy8vIGxheW91dC1idWlsZGluZyBncmlkIEFQSS5cbi8vL1xuLy8vIC0gVXNlIGBzcGFuKClgIGFuZCBgZ3V0dGVyKClgIHRvIHJldHVybiBhbnkgZ3JpZC13aWR0aCxcbi8vLyAgIGFuZCBhcHBseSB0aGUgcmVzdWx0cyB3aGVyZXZlciB5b3UgbmVlZCB0aGVtOlxuLy8vICAgQ1NTIGB3aWR0aGAsIGBtYXJnaW5gLCBgcGFkZGluZ2AsIGBmbGV4LWJhc2lzYCwgYHRyYW5zZm9ybWAsIGV0Yy5cbi8vLyAtIEZvciBhc3ltbWV0cmljYWwtZmx1aWQgZ3JpZHMsXG4vLy8gICBgc2xpY2UoKWAgY2FuIGhlbHAgbWFuYWdlIHlvdXIgbmVzdGluZyBjb250ZXh0LlxuLy8vXG4vLy8gQWxsIHRocmVlIGZ1bmN0aW9ucyBjb21lIHdpdGggYW4gdW5wcmVmaXhlZCBhbGlhcyBieSBkZWZhdWx0LFxuLy8vIHVzaW5nIHRoZSBgc3VzeWAgaW1wb3J0LlxuLy8vIEltcG9ydCB0aGUgYHN1c3ktcHJlZml4YCBwYXJ0aWFsIGluc3RlYWQsXG4vLy8gaWYgeW91IG9ubHkgb25seSB3YW50IHByZWZpeGVkIHZlcnNpb25zIG9mIHRoZSBBUEkuXG4vLy9cbi8vLyBUaGlzIGlzIGEgdGhpbiBzeW50YXgtc3VnYXIgc2hlbGwgYXJvdW5kXG4vLy8gdGhlIFwiU3VcIiBjb3JlLW1hdGggZnVuY3Rpb25zOiBgc3Utc3BhbmAsIGBzdS1ndXR0ZXJgLCBhbmQgYHN1LXNsaWNlYC5cbi8vLyBJZiB5b3UgcHJlZmVyIHRoZSBtb3JlIGNvbnN0cmFpbmVkIHN5bnRheCBvZiB0aGUgbWF0aCBlbmdpbmUsXG4vLy8geW91IGFyZSB3ZWxjb21lIHRvIHVzZSB0aG9zZSBmdW5jdGlvbnMgaW5zdGVhZC5cbi8vL1xuLy8vIEBncm91cCBhcGlcbi8vLyBAc2VlIHN1c3ktc3BhblxuLy8vIEBzZWUgc3VzeS1ndXR0ZXJcbi8vLyBAc2VlIHN1c3ktc2xpY2Vcbi8vLyBAc2VlIHN1LXNwYW5cbi8vLyBAc2VlIHN1LWd1dHRlclxuLy8vIEBzZWUgc3Utc2xpY2VcblxuXG5cbi8vLyAjIyBTaG9ydGhhbmRcbi8vL1xuLy8vIEFsbCBmdW5jdGlvbnMgZHJhdyBvbiB0aGUgc2FtZSBzaG9ydGhhbmQgc3ludGF4IGluIHR3byBwYXJ0cyxcbi8vLyBzZXBlcmF0ZWQgYnkgdGhlIHdvcmQgYG9mYC5cbi8vL1xuLy8vICMjIyBTcGFuIFN5bnRheDogYDx3aWR0aD5gIFtgPGxvY2F0aW9uPmAgYDxzcHJlYWQ+YF1cbi8vLyBUaGUgZmlyc3QgcGFydCBkZXNjcmliZXMgdGhlXG4vLy8gKipzcGFuKiogd2lkdGgsIGxvY2F0aW9uLCBhbmQgc3ByZWFkIGluIGFueSBvcmRlci5cbi8vLyBPbmx5IHRoZSB3aWR0aCBpcyByZXF1aXJlZDpcbi8vL1xuLy8vIC0gYHNwYW4oMilgIHdpbGwgcmV0dXJuIHRoZSB3aWR0aCBvZiAyIGNvbHVtbnMuXG4vLy8gLSBgc3BhbigzIHdpZGUpYCB3aWxsIHJldHVybiAzLWNvbHVtbnMsIHdpdGggYW4gYWRkaXRpb25hbCBndXR0ZXIuXG4vLy8gLSBsb2NhdGlvbiBpcyBvbmx5IG5lZWRlZCB3aXRoIGFzeW1tZXRyaWNhbCBncmlkcyxcbi8vLyAgIHdoZXJlIGBzcGFuKDMgYXQgMilgIHdpbGwgcmV0dXJuIHRoZSB3aWR0aCBvZlxuLy8vICAgc3BlY2lmaWMgY29sdW1ucyBvbiB0aGUgZ3JpZC5cbi8vLyAgIFNpbmNlIHRoZXNlIGFyZSBmdW5jdGlvbnMsIHRoZXkgd2lsbCBub3QgaGFuZGxlIHBsYWNlbWVudCBmb3IgeW91LlxuLy8vXG4vLy8gIyMjIENvbnRleHQgU3ludGF4OiBgW29mIDxjb2x1bW5zPiA8Y29udGFpbmVyLXNwcmVhZD4gPGd1dHRlcnM+XWBcbi8vLyBUaGUgc2Vjb25kIGhhbGYgb2YgU3VzeSdzIHNob3J0aGFuZFxuLy8vIGRlc2NyaWJlcyB0aGUgZ3JpZC0qKmNvbnRleHQqKiDigJNcbi8vLyBhdmFpbGFibGUgY29sdW1ucywgY29udGFpbmVyLXNwcmVhZCwgYW5kIG9wdGlvbmFsIGd1dHRlciBvdmVycmlkZSDigJNcbi8vLyBpbiBhbnkgb3JkZXIuXG4vLy8gQWxsIG9mIHRoZXNlIHNldHRpbmdzIGhhdmUgZ2xvYmFsbHktZGVmaW5lZCBkZWZhdWx0czpcbi8vL1xuLy8vIC0gYHNwYW4oMiBvZiA2KWAgd2lsbCBzZXQgdGhlIGNvbnRleHQgdG9cbi8vLyAgIGEgc2xpY2Ugb2YgNiBjb2x1bW5zIGZyb20gdGhlIGdsb2JhbCBncmlkLlxuLy8vICAgTW9yZSBkZXRhaWxzIGJlbG93LlxuLy8vIC0gYHNwYW4oMiBvZiAxMiB3aWRlKWAgY2hhbmdlcyB0aGUgY29udGFpbmVyLXNwcmVhZFxuLy8vICAgYXMgd2VsbCBhcyB0aGUgY29sdW1uLWNvbnRleHQuXG4vLy8gLSBgc3BhbigyIG9mIDEyIHNldC1ndXR0ZXJzIDAuNWVtKWBcbi8vLyAgIHdpbGwgb3ZlcnJpZGUgdGhlIGdsb2JhbCBndXR0ZXJzIHNldHRpbmdcbi8vLyAgIGZvciB0aGlzIG9uZSBjYWxjdWxhdGlvbi5cbi8vL1xuLy8vIEEgc2luZ2xlIHVuaXRsZXNzIG51bWJlciBmb3IgYGNvbHVtbnNgXG4vLy8gd2lsbCBiZSB0cmVhdGVkIGFzIGEgc2xpY2Ugb2YgdGhlIHBhcmVudCBncmlkLlxuLy8vIE9uIGEgZ3JpZCB3aXRoIGBjb2x1bW5zOiBzdXN5LXJlcGVhdCgxMiwgMTIwcHgpYCxcbi8vLyB0aGUgc2hvcnRoYW5kIGBvZiA0YCB3aWxsIHVzZSB0aGUgcGFyZW50IGAxMjBweGAgY29sdW1uLXdpZHRoLlxuLy8vIFlvdSBjYW4gYWxzbyBiZSBtb3JlIGV4cGxpY2l0LFxuLy8vIGFuZCBzYXkgYG9mIHN1c3ktcmVwZWF0KDQsIDEwMHB4KWAuXG4vLy8gSWYgeW91IGFyZSB1c2luZyBhc3ltbWV0cmljYWwgZ3JpZHMsXG4vLy8gbGlrZSBgY29sdW1uczogKDEgMSAyIDMgNSA4KWAsXG4vLy8gU3VzeSBjYW4ndCBzbGljZSBpdCBmb3IgeW91IHdpdGhvdXQga25vd2luZyB3aGljaCBjb2x1bW5zIHlvdSB3YW50LlxuLy8vIFRoZSBgc2xpY2VgIGZ1bmN0aW9uIGFjY2VwdHMgZXhhY3RseSB0aGUgc2FtZSBzeW50YXggYXMgYHNwYW5gLFxuLy8vIGJ1dCByZXR1cm5zIGEgbGlzdCBvZiBjb2x1bW5zIHJhdGhlciB0aGFuIGEgd2lkdGguXG4vLy8gVXNlIGl0IGluIHlvdXIgY29udGV4dCBsaWtlIGBvZiBzbGljZShmaXJzdCAzKWAuXG4vLy9cbi8vLyBAZ3JvdXAgYXBpXG5cblxuXG4vLyBTdXN5IFNwYW5cbi8vIC0tLS0tLS0tLVxuLy8vIFRoaXMgaXMgdGhlIHByaW1hcnkgZnVuY3Rpb24gaW4gU3VzeSDigJRcbi8vLyB1c2VkIHRvIHJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuIGFjcm9zcyBvbmUgb3IgbW9yZSBjb2x1bW5zLFxuLy8vIGFuZCBhbnkgcmVsZXZhbnQgZ3V0dGVycyBhbG9uZyB0aGUgd2F5LlxuLy8vIFdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3MsXG4vLy8gYHNwYW4oMylgIHdpbGwgcmV0dXJuIHRoZSB3aWR0aCBvZiAzIGNvbHVtbnMsXG4vLy8gYW5kIHRoZSAyIGludGVybWVkaWF0ZSBndXR0ZXJzLlxuLy8vIFRoaXMgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBgd2lkdGhgIHByb3BlcnR5IG9mIGdyaWQgZWxlbWVudHMsXG4vLy8gb3IgYG1hcmdpbmAgYW5kIGBwYWRkaW5nYFxuLy8vIHRvIHB1c2gsIHB1bGwsIGFuZCBwYWQgeW91ciBlbGVtZW50cy5cbi8vL1xuLy8vIC0gVGhpcyBpcyBhIHRoaW4gc3ludGF4LXN1Z2FyIHNoZWxsIGFyb3VuZFxuLy8vICAgdGhlIGNvcmUtbWF0aCBgc3Utc3BhbigpYCBmdW5jdGlvbi5cbi8vLyAtIFRoZSB1bi1wcmVmaXhlZCBhbGlhcyBgc3BhbigpYCBpcyBhdmFpbGFibGUgYnkgZGVmYXVsdC5cbi8vL1xuLy8vIEBncm91cCBhcGlcbi8vLyBAc2VlIHN1LXNwYW5cbi8vLyBAc2VlICRzdXN5XG4vLy9cbi8vLyBAcGFyYW0ge2xpc3R9ICRzcGFuIC1cbi8vLyAgIFNob3J0aGFuZCBleHByZXNzaW9uIHRvIGRlZmluZSB0aGUgd2lkdGggb2YgdGhlIHNwYW4sXG4vLy8gICBvcHRpb25hbGx5IGNvbnRhaW5pbmc6XG4vLy8gICAtIGEgY291bnQsIGxlbmd0aCwgb3IgY29sdW1uLWxpc3Qgc3Bhbi5cbi8vLyAgIC0gYGF0ICRuYCwgYGZpcnN0YCwgb3IgYGxhc3RgIGxvY2F0aW9uIG9uIGFzeW1tZXRyaWNhbCBncmlkcyxcbi8vLyAgICAgd2hlcmUgYGF0IDEgPT0gZmlyc3RgLFxuLy8vICAgICBhbmQgYGxhc3RgIHdpbGwgY2FsY3VsYXRlIHRoZSBwcm9wZXIgbG9jYXRpb25cbi8vLyAgICAgYmFzZWQgb24gY29sdW1ucyBhbmQgc3Bhbi5cbi8vLyAgIC0gYG5hcnJvd2AsIGB3aWRlYCwgb3IgYHdpZGVyYCBmb3Igb3B0aW9uYWxseSBzcHJlYWRpbmdcbi8vLyAgICAgYWNyb3NzIGFkamFjZW50IGd1dHRlcnMuXG4vLy8gICAtIGBvZiAkbiA8c3ByZWFkPmAgZm9yIGF2YWlsYWJsZSBncmlkIGNvbHVtbnNcbi8vLyAgICAgYW5kIHNwcmVhZCBvZiB0aGUgY29udGFpbmVyLlxuLy8vICAgICBTcGFuIGNvdW50cyBsaWtlIGBvZiA2YCBhcmUgdmFsaWRcbi8vLyAgICAgaW4gdGhlIGNvbnRleHQgb2Ygc3ltbWV0cmljYWwgZ3JpZHMsXG4vLy8gICAgIHdoZXJlIFN1c3kgY2FuIHNhZmVseSBpbmZlciBhIHNsaWNlIG9mIHRoZSBwYXJlbnQgY29sdW1ucy5cbi8vLyAgIC0gYW5kIGBzZXQtZ3V0dGVycyAkbmAgdG8gb3ZlcnJpZGUgZ2xvYmFsIGd1dHRlciBzZXR0aW5ncy5cbi8vL1xuLy8vIEBwYXJhbSB7bWFwfSAkY29uZmlnIFsoKV0gLVxuLy8vICAgT3B0aW9uYWwgbWFwIG9mIFN1c3kgZ3JpZCBjb25maWd1cmF0aW9uIHNldHRpbmdzLlxuLy8vICAgU2VlIGAkc3VzeWAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy5cbi8vL1xuLy8vIEByZXR1cm4ge2xlbmd0aH0gLVxuLy8vICAgQ2FsY3VsYXRlZCBsZW5ndGggdmFsdWUsIHVzaW5nIHRoZSB1bml0cyBnaXZlbixcbi8vLyAgIG9yIGNvbnZlcnRpbmcgdG8gYCVgIGZvciBmcmFjdGlvbi1iYXNlZCBncmlkcyxcbi8vLyAgIG9yIGEgZnVsbCBgY2FsY2AgZnVuY3Rpb24gd2hlbiB1bml0cy9mcmFjdGlvbnNcbi8vLyAgIGFyZSBub3QgY29tcGFyYWJsZSBvdXRzaWRlIHRoZSBicm93c2VyLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIHNwYW4gaGFsZiB0aGUgZ3JpZFxuLy8vICAgLmZvbyB7XG4vLy8gICAgIC8vIHRoZSByZXN1bHQgaXMgYSBiaXQgdW5kZXIgNTAlIHRvIGFjY291bnQgZm9yIGd1dHRlcnNcbi8vLyAgICAgd2lkdGg6IHN1c3ktc3Bhbig2IG9mIDEyKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBzcGFuIGEgc3BlY2lmaWMgc2VnbWVudCBvZiBhc3ltbWV0cmljYWwgZ3JpZFxuLy8vICAgLmZvbyB7XG4vLy8gICAgIHdpZHRoOiBzdXN5LXNwYW4oMyBhdCAzIG9mICgxIDIgMyA1IDgpKTtcbi8vLyAgIH1cbkBmdW5jdGlvbiBzdXN5LXNwYW4oXG4gICRzcGFuLFxuICAkY29uZmlnOiAoKVxuKSB7XG4gICRvdXRwdXQ6IHN1c3ktY29tcGlsZSgkc3BhbiwgJGNvbmZpZyk7XG5cbiAgQGlmIG1hcC1nZXQoJG91dHB1dCwgJ3NwYW4nKSB7XG4gICAgQHJldHVybiBzdS1jYWxsKCdzdS1zcGFuJywgJG91dHB1dCk7XG4gIH1cblxuICAkYWN0dWFsOiAnWyN7dHlwZS1vZigkc3Bhbil9XSBgI3tpbnNwZWN0KCRzcGFuKX1gJztcbiAgQHJldHVybiBfc3VzeS1lcnJvcihcbiAgICAnVW5hYmxlIHRvIGRldGVybWluZSBzcGFuIHZhbHVlIGZyb20gI3skYWN0dWFsfS4nLFxuICAgICdzdXN5LXNwYW4nKTtcbn1cblxuXG5cbi8vIFN1c3kgR3V0dGVyXG4vLyAtLS0tLS0tLS0tLVxuLy8vIFRoZSBndXR0ZXIgZnVuY3Rpb24gcmV0dXJuc1xuLy8vIHRoZSB3aWR0aCBvZiBhIHNpbmdsZSBndXR0ZXIgb24geW91ciBncmlkLFxuLy8vIHRvIGJlIGFwcGxpZWQgd2hlcmUgeW91IHNlZSBmaXQg4oCTXG4vLy8gb24gYG1hcmdpbnNgLCBgcGFkZGluZ2AsIGB0cmFuc2Zvcm1gLCBvciBlbGVtZW50IGB3aWR0aGAuXG4vLy9cbi8vLyAtIFRoaXMgaXMgYSB0aGluIHN5bnRheC1zdWdhciBzaGVsbCBhcm91bmRcbi8vLyAgIHRoZSBjb3JlLW1hdGggYHN1LWd1dHRlcigpYCBmdW5jdGlvbi5cbi8vLyAtIFRoZSB1bi1wcmVmaXhlZCBhbGlhcyBgZ3V0dGVyKClgIGlzIGF2YWlsYWJsZSBieSBkZWZhdWx0LlxuLy8vXG4vLy8gQGdyb3VwIGFwaVxuLy8vIEBzZWUgc3UtZ3V0dGVyXG4vLy8gQHNlZSAkc3VzeVxuLy8vXG4vLy8gQHBhcmFtIHtsaXN0IHwgbnVtYmVyfSAkY29udGV4dCBbbnVsbF0gLVxuLy8vICAgT3B0aW9uYWwgY29udGV4dCBmb3IgbmVzdGVkIGd1dHRlcnMsXG4vLy8gICBpbmNsdWRpbmcgc2hvcnRoYW5kIGZvclxuLy8vICAgYGNvbHVtbnNgLCBgZ3V0dGVyc2AsIGFuZCBgY29udGFpbmVyLXNwcmVhZGBcbi8vLyAgIChhZGRpdGlvbmFsIHNob3J0aGFuZCB3aWxsIGJlIGlnbm9yZWQpXG4vLy9cbi8vLyBAcGFyYW0ge21hcH0gJGNvbmZpZyBbKCldIC1cbi8vLyAgIE9wdGlvbmFsIG1hcCBvZiBTdXN5IGdyaWQgY29uZmlndXJhdGlvbiBzZXR0aW5ncy5cbi8vLyAgIFNlZSBgJHN1c3lgIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuXG4vLy9cbi8vLyBAcmV0dXJuIHtsZW5ndGh9IC1cbi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyIGFzIGAlYCBvZiBjdXJyZW50IGNvbnRleHQsXG4vLy8gICBvciBpbiB0aGUgdW5pdHMgZGVmaW5lZCBieSBgY29sdW1uLXdpZHRoYCB3aGVuIGF2YWlsYWJsZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIGFkZCBndXR0ZXJzIGJlZm9yZSBvciBhZnRlciBhbiBlbGVtZW50XG4vLy8gICAuZmxvYXRzIHtcbi8vLyAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgIHdpZHRoOiBzcGFuKDMgb2YgNik7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiBndXR0ZXIob2YgNik7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gYWRkIGd1dHRlcnMgdG8gcGFkZGluZ1xuLy8vICAgLmZsZXhib3gge1xuLy8vICAgICBmbGV4OiAxIDEgc3BhbigzIHdpZGUgb2YgNiB3aWRlKTtcbi8vLyAgICAgcGFkZGluZzogZ3V0dGVyKG9mIDYpIC8gMjtcbi8vLyAgIH1cbi8vL1xuQGZ1bmN0aW9uIHN1c3ktZ3V0dGVyKFxuICAkY29udGV4dDogbnVsbCxcbiAgJGNvbmZpZzogKClcbikge1xuICAkY29udGV4dDogc3VzeS1jb21waWxlKCRjb250ZXh0LCAkY29uZmlnLCAnY29udGV4dC1vbmx5Jyk7XG5cbiAgQHJldHVybiBzdS1jYWxsKCdzdS1ndXR0ZXInLCAkY29udGV4dCk7XG59XG5cblxuXG4vLyBTdXN5IFNsaWNlXG4vLyAtLS0tLS0tLS0tXG4vLy8gV29ya2luZyB3aXRoIGFzeW1tZXRyaWNhbCBncmlkcyAodW4tZXF1YWwgY29sdW1uIHdpZHRocylcbi8vLyBjYW4gYmUgY2hhbGxlbmdpbmcg4oCTwqBcbi8vLyBleHBlY2lhbGx5IHdoZW4gdGhleSBpbnZvbHZlIGZsdWlkL2ZyYWN0aW9uYWwgZWxlbWVudHMuXG4vLy8gRGVzY3JpYmluZyBhIGNvbnRleHQgYG9mICgxNWVtIDZlbSA2ZW0gNmVtIDE1ZW0pYCBpcyBhIGxvdFxuLy8vIHRvIHB1dCBpbnNpZGUgdGhlIHNwYW4gb3IgZ3V0dGVyIGZ1bmN0aW9uIHNob3J0aGFuZC5cbi8vLyBUaGlzIHNsaWNlIGZ1bmN0aW9uIHJldHVybnMgYSBzdWItc2xpY2Ugb2YgYXN5bW1ldHJpY2FsIGNvbHVtbnMgdG8gdXNlXG4vLy8gZm9yIGEgbmVzdGVkIGNvbnRleHQuXG4vLy8gYHNsaWNlKDMgYXQgMilgIHdpbGwgZ2l2ZSB5b3UgYSBzdWJzZXQgb2YgdGhlIGdsb2JhbCBncmlkLFxuLy8vIHNwYW5uaW5nIDMgY29sdW1ucywgc3RhcnRpbmcgd2l0aCB0aGUgc2Vjb25kLlxuLy8vXG4vLy8gLSBUaGlzIGlzIGEgdGhpbiBzeW50YXgtc3VnYXIgc2hlbGwgYXJvdW5kXG4vLy8gICB0aGUgY29yZS1tYXRoIGBzdS1zbGljZSgpYCBmdW5jdGlvbi5cbi8vLyAtIFRoZSB1bi1wcmVmaXhlZCBhbGlhcyBgc2xpY2UoKWAgaXMgYXZhaWxhYmxlIGJ5IGRlZmF1bHQuXG4vLy9cbi8vLyBAZ3JvdXAgYXBpXG4vLy8gQHNlZSBzdS1zbGljZVxuLy8vIEBzZWUgJHN1c3lcbi8vL1xuLy8vIEBwYXJhbSB7bGlzdH0gJHNwYW4gLVxuLy8vICAgU2hvcnRoYW5kIGV4cHJlc3Npb24gdG8gZGVmaW5lIHRoZSBzdWJzZXQgc3Bhbiwgb3B0aW9uYWxseSBjb250YWluaW5nOlxuLy8vICAgLSBgYXQgJG5gLCBgZmlyc3RgLCBvciBgbGFzdGAgbG9jYXRpb24gb24gYXN5bW1ldHJpY2FsIGdyaWRzO1xuLy8vICAgLSBgb2YgJG4gPHNwcmVhZD5gIGZvciBhdmFpbGFibGUgZ3JpZCBjb2x1bW5zXG4vLy8gICAgIGFuZCBzcHJlYWQgb2YgdGhlIGNvbnRhaW5lclxuLy8vICAgICAtIFNwYW4tY291bnRzIGxpa2UgYG9mIDZgIGFyZSBvbmx5IHZhbGlkXG4vLy8gICAgICAgaW4gdGhlIGNvbnRleHQgb2Ygc3ltbWV0cmljYWwgZ3JpZHNcbi8vLyAgICAgLSBWYWxpZCBzcHJlYWRzIGluY2x1ZGUgYG5hcnJvd2AsIGB3aWRlYCwgb3IgYHdpZGVyYFxuLy8vXG4vLy8gQHBhcmFtIHttYXB9ICRjb25maWcgWygpXSAtXG4vLy8gICBPcHRpb25hbCBtYXAgb2YgU3VzeSBncmlkIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuXG4vLy8gICBTZWUgYCRzdXN5YCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLlxuLy8vXG4vLy8gQHJldHVybiB7bGlzdH0gLVxuLy8vICAgU3Vic2V0IGxpc3Qgb2YgY29sdW1ucyBmb3IgdXNlIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gUmV0dXJuIGEgbmVzdGVkIHNlZ21lbnQgb2YgYXN5bW1ldHJpY2FsIGdyaWRcbi8vLyAgICRjb250ZXh0OiBzdXN5LXNsaWNlKDMgYXQgMyBvZiAoMSAyIDMgNSA4KSk7XG4vLy8gICAvKiAkY29udGV4dDogI3skY29udGV4dH07ICovXG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRjb25maWc6ICgpXG4pIHtcbiAgJHNwYW46IHN1c3ktY29tcGlsZSgkc3BhbiwgJGNvbmZpZyk7XG5cbiAgQHJldHVybiBzdS1jYWxsKCdzdS1zbGljZScsICRzcGFuKTtcbn1cblxuXG5cbi8vLyAjIyBCdWlsZGluZyBHcmlkc1xuLy8vIFRoZSB3ZWIgaGFzIGNvbWUgYSBsb25nIHdheVxuLy8vIHNpbmNlIHRoZSBkYXlzIG9mIGRvdWJsZS1tYXJnaW4taGFja3Ncbi8vLyBhbmQgaW5jb25zaXN0ZW50IHN1YnBpeGVsIHJvdW5kaW5nLlxuLy8vIEluIGFkZGl0aW9uIHRvIGZsb2F0cyBhbmQgdGFibGVzLFxuLy8vIHdlIGNhbiBub3cgdXNlIG11Y2ggbW9yZSBwb3dlcmZ1bCB0b29scyxcbi8vLyBsaWtlIGZsZXhib3ggYW5kIENTUyBncmlkLFxuLy8vIHRvIGJ1aWxkIG1vcmUgaW50ZXJlc3RpbmcgYW5kIHJlc3BvbnNpdmUgbGF5b3V0cy5cbi8vL1xuLy8vIFdpdGggU3VzeTMsIHdlIGhvcGUgeW91J2xsIHN0YXJ0IG1vdmluZyBpbiB0aGF0IGRpcmVjdGlvbi5cbi8vLyBZb3UgY2FuIHN0aWxsIGJ1aWxkIGNsYXNzaWMgMTItY29sdW1uIEdyaWQgU3lzdGVtcyxcbi8vLyBhbmQgd2UnbGwgaGVscCB5b3UgZ2V0IHRoZXJlLFxuLy8vIGJ1dCBTdXN5MyBpcyBwcmltYXJpbHkgZGVzaWduZWQgZm9yIGEgZ3JpZC1tYXRoLW9uLWRlbWFuZFxuLy8vIGFwcHJvYWNoIHRvIGxheW91dDpcbi8vLyBhcHBseWluZyBvdXIgZnVuY3Rpb25zIG9ubHkgd2hlcmUgeW91IHJlYWxseSBuZWVkIGdyaWQgbWF0aC5cbi8vLyBSZWFkIHRoZSBbaW50cm8gYXJ0aWNsZSBieSBPZGRCaXJkXVt3ZWxjb21lXSBmb3IgbW9yZSBkZXRhaWxzLlxuLy8vXG4vLy8gW3dlbGNvbWVdOiBodHRwOi8vb2RkYmlyZC5uZXQvMjAxNy8wNi8yOC9zdXN5My9cbi8vL1xuLy8vIEBncm91cCBhcGlcbi8vLyBAbGluayBodHRwOi8vb2RkYmlyZC5uZXQvMjAxNy8wNi8yOC9zdXN5My8gQXJ0aWNsZTogV2VsY29tZSB0byBTdXN5M1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIGZsb2F0c1xuLy8vICAgLmZsb2F0IHtcbi8vLyAgICAgd2lkdGg6IHNwYW4oMyk7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogZ3V0dGVyKCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gZmxleGJveFxuLy8vICAgLmZsZXhib3gge1xuLy8vICAgICBmbGV4OiAxIDEgc3BhbigzKTtcbi8vLyAgICAgLy8gaGFsZiBhIGd1dHRlciBvbiBlaXRoZXIgc2lkZeKAplxuLy8vICAgICBwYWRkaW5nOiAwIGd1dHRlcigpIC8gMjtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBwdXNoaW5nIGFuZCBwdWxsaW5nXG4vLy8gICAucHVzaC0zIHtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IHNwYW4oMyB3aWRlKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLnB1bGwtMyB7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAwIC0gc3BhbigzIHdpZGUpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIGJ1aWxkaW5nIGFuIGF0dHJpYnV0ZSBzeXN0ZW1cbi8vLyAgIC8vIG1hcmt1cCBleGFtcGxlOiA8ZGl2IGRhdGEtc3Bhbj1cImxhc3QgM1wiPjwvZGl2PlxuLy8vICAgW2RhdGEtc3Bhbl0ge1xuLy8vICAgICBmbG9hdDogbGVmdDtcbi8vL1xuLy8vICAgICAmOm5vdChbZGF0YS1zcGFuKj0nbGFzdCddKSB7XG4vLy8gICAgICAgbWFyZ2luLXJpZ2h0OiBndXR0ZXIoKTtcbi8vLyAgICAgfVxuLy8vICAgfVxuLy8vXG4vLy8gICBAZm9yICRzcGFuIGZyb20gMSB0aHJvdWdoIGxlbmd0aChzdXN5LWdldCgnY29sdW1ucycpKSB7XG4vLy8gICAgIFtkYXRhLXNwYW4qPScjeyRzcGFufSddIHtcbi8vLyAgICAgICB3aWR0aDogc3Bhbigkc3Bhbik7XG4vLy8gICAgIH1cbi8vLyAgIH1cbiIsIi8vIFVucHJlZml4IFN1c3lcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBTcGFuXG4vLyAtLS0tXG4vLy8gVW4tcHJlZml4ZWQgYWxpYXMgZm9yIGBzdXN5LXNwYW5gXG4vLy8gKGF2YWlsYWJsZSBieSBkZWZhdWx0KVxuLy8vXG4vLy8gQGdyb3VwIGFwaVxuLy8vIEBhbGlhcyBzdXN5LXNwYW5cbi8vL1xuLy8vIEBwYXJhbSB7bGlzdH0gJHNwYW5cbi8vLyBAcGFyYW0ge21hcH0gJGNvbmZpZyBbKCldXG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW4sXG4gICRjb25maWc6ICgpXG4pIHtcbiAgQHJldHVybiBzdXN5LXNwYW4oJHNwYW4sICRjb25maWcpO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLy8gVW4tcHJlZml4ZWQgYWxpYXMgZm9yIGBzdXN5LWd1dHRlcmBcbi8vLyAoYXZhaWxhYmxlIGJ5IGRlZmF1bHQpXG4vLy9cbi8vLyBAZ3JvdXAgYXBpXG4vLy8gQGFsaWFzIHN1c3ktZ3V0dGVyXG4vLy9cbi8vLyBAcGFyYW0ge2ludGVnZXIgfCBsaXN0fSAkY29udGV4dCBbbnVsbF0gLVxuLy8vIEBwYXJhbSB7bWFwfSAkY29uZmlnIFsoKV1cbkBmdW5jdGlvbiBndXR0ZXIoXG4gICRjb250ZXh0OiBudWxsLFxuICAkY29uZmlnOiAoKVxuKSB7XG4gIEByZXR1cm4gc3VzeS1ndXR0ZXIoJGNvbnRleHQsICRjb25maWcpO1xufVxuXG5cbi8vIFNsaWNlXG4vLyAtLS0tLVxuLy8vIFVuLXByZWZpeGVkIGFsaWFzIGZvciBgc3VzeS1zbGljZWBcbi8vLyAoYXZhaWxhYmxlIGJ5IGRlZmF1bHQpXG4vLy9cbi8vLyBAZ3JvdXAgYXBpXG4vLy8gQGFsaWFzIHN1c3ktc2xpY2Vcbi8vL1xuLy8vIEBwYXJhbSB7bGlzdH0gJHNwYW5cbi8vLyBAcGFyYW0ge21hcH0gJGNvbmZpZyBbKCldXG5AZnVuY3Rpb24gc2xpY2UoXG4gICRzcGFuLFxuICAkY29uZmlnOiAoKVxuKSB7XG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGNvbmZpZyk7XG59XG4iLCIvLz09PT09PT09PT09PT09PT09PT09PT1cbi8v5Li75qGG5p626Kit5a6aIG1haW5cbi8vPT09PT09PT09PT09PT09PT09PT09PVxuLy/moYjku7bmoYbmnrY6XG4vL+eAj+imveWZqOWvrOW6puioreWumijlkI3nqLEg5a+s5bqmIOW3puWPs+mWk+i3nee4veWSjClcbiRpbm5lcjogKGZsdWlkIDEwMCUgMzAseGwgMTYwMCAzMCxsZyAxMjgwIDMwLG1kIDEwMjQgMCxzbSA5NjAgMCx4cyA3NjggMCk7IC8v5qGG5p625a+s5bqm6Kit5a6aXG5cbi8vPT09PT09PT09PT09PT09PT09PT09PVxuLy/ot53pm6LoqK3lrppcbi8vPT09PT09PT09PT09PT09PT09PT09PVxuJGJhc2VHYXA6IDEwcHg7IC8v5Li76KaB6Led6Zui5aSn5bCPLOmWk+i3nee1seS4gOWAjeaVuFxuXG4vL+aWh+Wtl+ioreWumlxuJGZvbnQ6ICdMYXRvJywnTm90byBTYW5zIFRDJyxzYW5zLXNlcmlmOy8v5paH5a2X5a2X5Z6LXG4kZm9udFNpemU6IDE2cHg7IC8v5Li75paH5a2X5aSn5bCPXG4kZm9udFNpemVMZXZlbDogMC41Oy8v5paH5a2X5pS+5aSn5YCN546HXG4kRm9udExldmVsOiA1OyAvL+aWh+Wtl2xldmVs55Sf5oiQ5pW4XG4kbGluZUhlaWdodExldmVsOiAxLjU7IC8v6KGM6Led5YCN546HXG4kZm9udExoOiBjZWlsKCRmb250U2l6ZSAqICRsaW5lSGVpZ2h0TGV2ZWwpOyAvL+S4u+aWh+Wtl+ihjOmrmFxuJHRleHRDb2xvcjogIzI1MjUyNTsgLy/kuLvmloflrZfpoY/oibJcbi8vJHRleHRIQ29sb3I6ICMzMjU1RjkgLy/kuLvmloflrZfmu5HlhaXpoY/oibJcbiR0ZXh0SENvbG9yOiAjMDA0QUFDO1xuJGxldHRlclNwYWNpbmc6IDBlbTsgLy/mloflrZfplpPot51cbi8v57ay56uZ5Li75p625qeL6aGP6Imy6Kit5a6aXG4kd2hpdGU6ICAgICNmZmY7XG4kZ3JheS0xMDA6ICNmOGY5ZmE7XG4kZ3JheS0yMDA6ICNlOWVjZWY7XG4kZ3JheS0zMDA6ICNkZWUyZTY7XG4kZ3JheS00MDA6ICNjZWQ0ZGE7XG4kZ3JheS01MDA6ICNhZGI1YmQ7XG4kZ3JheS02MDA6ICM2Yzc1N2Q7XG4kZ3JheS03MDA6ICM0OTUwNTc7XG4kZ3JheS04MDA6ICMzNDNhNDA7XG4kZ3JheS05MDA6ICMyMTI1Mjk7XG4kYmxhY2s6ICAgICMyNTI1MjU7XG4vLyRtYWluLWNvbG9yOiAjMzI1NUY5XG4kbWFpbi1jb2xvcjogIzAwNEFBQztcbiRibHVlOiAjMDA0QUFDO1xuJGdyZWVuOiAjMTQ1QTEyO1xuJHJlZDogI2MxMjcyZDtcblxuLy89PT09PT09PT09PT09PT09PT09PT09XG4vL+e2suagvOahhuaetiBncmlkXG4vLz09PT09PT09PT09PT09PT09PT09PT1cbiRncmlkWEw6IDE2MDA7XG4kZ3JpZExnOiAxMjgwO1xuJGdyaWRNZDogNzY4O1xuJGdyaWRTbTogNDgwO1xuJGdyaWRDb2xzOiAxMjsgLy/ntrLmoLzmrITmlbhcbiRncmlkLXByb3BzOiAoJ2RlZmF1bHQnOiAxOTIwLCcteGwnOiAkZ3JpZFhMLCctbGcnOiAkZ3JpZExnLCctbWQnOiAkZ3JpZE1kLCctc20nOiAkZ3JpZFNtKTsvL2NsYXNzIOWwjeaHieWvrOW6puioreWumlxuXG4vLz09PT09PT09PT09PT09PT09PT09PT1cbi8v6KGo6aCtIGhlYWRlclxuLy89PT09PT09PT09PT09PT09PT09PT09XG4kaGVhZGVyTW9kZTogMTsgLy9oZWFkZXLmqKHlvI8gMTrpgbjllq7lkIzkuIDooYwgMjrpgbjllq7lnKjkuIvmlrlcbiRoZWFkZXJPcmRlcjogKCdsb2dvJzogMSwnbmF2JzogMiwnc2VhcmNoJzogNCwnc29jaWFsJzogMywnaGFtYnVyZ2VyJzogNSk7IC8v5o6S5bqPXG4kdmlldzogKCdzZWFyY2gnOiAwLCdzb2NpYWxJdGVtJzogMCk7IC8vc2VhcmNoOjHngrrpoa/npLow54K65LiN6aGv56S6IFNvY2lhbEl0ZW0g56S+576k5pW455uuXG4kbG9nb0hlaWdodDogKCdtb2RlMSc6IDgwcHgsJ21vZGUxRml4ZWQnOiA4MHB4LCdtb2RlMic6IDcwcHgsJ21vZGUyRml4ZWQnOiA1MHB4KTsgLy8gbW9kZTE6bG9nb+mrmOW6piDoiIcgbW9kZTI6bG9nb+mrmOW6plxuJGxvZ29XaWR0aDogNDAwcHg7IC8vTE9HT+WvrOW6pijlg4/ntKApXG4kbG9nb0FsaWduOiBmbGV4LXN0YXJ0OyAvL0xPR0/kvY3nva4oanVzdGlmeS1jb250ZW50KVxuJHNvY2lhbEhlaWdodDogMjBweDsgLy/npL7nvqRpY29u6auY5bqm5LiN5aSn5pa8NDBweFxuJG5hdkZvbnQ6IDIwcHg7IC8v6YG45Zau5paH5a2X5aSn5bCPXG4kbmF2SXRlbTogNDsgLy/pgbjllq7mqJnpoYzmlbjph49cbiRuYXZBbGlnbjogZmxleC1lbmQ7IC8vbmF26YG45Zau5o6S5YiX5L2N572uKGp1c3RpZnktY29udGVudClcbiRuYXZIZWlnaHQ6IDUwcHg7IC8vbW9kZTLpgbjllq7pq5jluqZcbiRuYXZMYXllcldpZHRoOiAyNTBweDsgLy/mu5HlhaXpgbjllq7pmo7lsaTlr6zluqZcbiRuYXZDb2xvcjogJHRleHRDb2xvcjsgLy/pgbjllq7mloflrZfpoY/oibJcbiRuYXZiZ0NvbG9yOiAkd2hpdGU7IC8v6YG45Zau6IOM5pmv6ImyXG4kbmF2SG92ZXJDb2xvcjogJG1haW4tY29sb3I7ICAvL+a7keWFpemhj+iJslxuJG5hdkhvdmVyYmdDb2xvcjogJHdoaXRlOyAvL+a7keWFpeiDjOaZr+mhj+iJslxuJG5hdkJvcmRlckNvbG9yOiAkZ3JheS0zMDA7IC8v6YG45Zau5qGG6aGP6ImyXG4kbmF2QnRuV2lkdGg6IDQwcHg7IC8v5LiL6ZqO5bGk5oyJ6YiV5a+s5bqmXG4kbmF2QnRuYmdDb2xvcjogJHdoaXRlOyAvL+S4i+majuWxpOaMiemIleiDjOaZr+mhj+iJslxuJHMtbmF2YmdDb2xvcjogJG1haW4tY29sb3I7Ly/miYvmqZ/mnb/pmo7lsaTpgbjllq7og4zmma9cbiRoZWFkZXJSV0Q6IDEwMjQ7IC8vIOaJi+apn+eJiOiuiuaPm+WvrOW6plxuJGhlYWRlclBob25lSGVpZ2h0OiA1MHB4OyAvL+aJi+apn+eJiGhlYWRlciDpq5jluqZcblxuXG5cbi8vPT09PT09PT09PT09PT09PT09PT09PVxuLy/ooajllq4gZm9ybVxuLy89PT09PT09PT09PT09PT09PT09PT09XG4kZm9ybUhlaWdodDogNDBweDsgLy/ovLjlhaXmoYbpq5jluqZcbiRmb3JtQ29sb3I6ICR0ZXh0Q29sb3I7IC8v6Ly45YWl5qGG5paH5a2X6aGP6ImyXG4kZm9ybUxpbmVXaWR0aDogMDsgIC8v6Ly45YWl5qGG5qGG57ea57KX57SwXG4kZm9ybUxpbmVDb2xvcjogI2YyZjJmMjsgIC8v6Ly45YWl5qGG5qGG57ea6aGP6ImyXG4kZm9ybUJnQ29sb3I6ICNmMmYyZjI7ICAvL+i8uOWFpeiDjOaZr+mhj+iJslxuJGZvcm1CZFJzOiAxMHB4OyAvL+i8uOWFpeahhuWck+inklxuJGZvcm1TaGFkb3c6ICMwMDA7IC8v6Ly45YWl5qGG6YG45Y+W6Zmw5b2x6aGP6ImyXG4kcGxhY2Vob2xkZXJDb2xvcjogIzg4ODsgLy/ovLjlhaXmoYZwbGFjZWhvbGRlcuaWh+Wtl+mhj+iJslxuJGxlZ2VuZENvbG9yOiAjMDAwOyAvL2Zvcm0g5qiZ6aGM5paH5a2X6aGP6ImyXG4kcmFkaW9TaXplOiAyM3B4OyAvL3JhZGlvIOmBuOmgheWkp+Wwj1xuJHJhZGlvQmdDb2xvcjogJGZvcm1CZ0NvbG9yOyAvL3JhZGlvIOmBuOmghemhj+iJslxuJHJhZGlvTGluZUNvbG9yOiAkZm9ybUxpbmVDb2xvcjsgLy9yYWRpbyDpgbjpoIXpgormoYbpoY/oibJcbiRyYWRpb0xpbmVXaWR0aDogMXB4OyAvL3JhZGlvIOmBuOmghemCiuahhueyl+e0sFxuJHJhZGlvQmRSczogMjNweDsgLy9yYWRpbyDpgbjpoIXlnJPop5JcbiRyYWRpb0NoZWNrQ29sb3I6ICM1NTU7IC8vcmFkaW8g6YG45pOH5b6M6aGP6ImyXG4kY2hlY2tib3hTaXplOiAyM3B4OyAvL0NoZWNrYm94IOmBuOmgheWkp+Wwj1xuJGNoZWNrYm94QmdDb2xvcjogJGZvcm1CZ0NvbG9yOyAvL0NoZWNrYm94IOmBuOmghemhj+iJslxuJGNoZWNrYm94TGluZVdpZHRoOiAxcHg7IC8vQ2hlY2tib3gg6YG46aCF6YKK5qGG57KX57SwXG4kY2hlY2tib3hMaW5lQ29sb3I6ICRmb3JtTGluZUNvbG9yOyAvL0NoZWNrYm94IOmCiuahhumhj+iJslxuJGNoZWNrYm94QmRSczogM3B4OyAvL0NoZWNrYm94IOWck+inkuWkp+Wwj1xuJGNoZWNrYm94Q2hlY2tDb2xvcjogIzU1NTsgLy9DaGVja2JveCDpgbjmk4flvozli77li77poY/oibJcbiRjaG9pY2VCdG5XaWR0aDogMTUwcHg7IC8vQ2hlY2tib3ggcmFkaW8g5Lu/5oyJ6YiV5a+s5bqmXG4kY2hvaWNlQnRuSGVpZ2h0OiA1MHB4OyAvL0NoZWNrYm94IHJhZGlvIOS7v+aMiemIlemrmOW6plxuJGNob2ljZUJ0bkNvbG9yOiAkZm9ybUJnQ29sb3I7IC8vQ2hlY2tib3ggcmFkaW8g5Lu/5oyJ6YiV6aGP6ImyXG4kY2hvaWNlQnRuVGV4dENvbG9yOiAjNTU1OyAvL0NoZWNrYm94IHJhZGlvIOS7v+aMiemIleaWh+Wtl+mhj+iJslxuJGNob2ljZUJ0bkxpbmVDb2xvcjogJGZvcm1MaW5lQ29sb3I7IC8vQ2hlY2tib3ggcmFkaW8g5Lu/5oyJ6YiV6YKK5qGG6aGP6ImyXG4kY2hvaWNlQnRuTGluZVdpZHRoOiAxcHg7IC8vQ2hlY2tib3ggcmFkaW8g5Lu/5oyJ6YiV6YKK5qGG57KX57SwXG4kY2hvaWNlQnRuQmRSczogNXB4OyAvL0NoZWNrYm94IHJhZGlvIOS7v+aMiemIleWck+inklxuJGNob2ljZUJ0bkNoZWNrQ29sb3I6ICMxZTk4MTM7IC8vQ2hlY2tib3ggcmFkaW8g5Lu/5oyJ6YiV6YG45pOH5b6M6aGP6ImyXG4kY2hvaWNlQnRuQ2hlY2tUZXh0Q29sb3I6ICNmZmY7IC8vQ2hlY2tib3ggcmFkaW8g5Lu/5oyJ6YiV6YG45pOH5b6M5paH5a2X6aGP6ImyXG4kY2hvaWNlQnRuQ2hlY2tMaW5lQ29sb3I6ICMxZTk4MTM7IC8vQ2hlY2tib3ggcmFkaW8g5Lu/5oyJ6YiV6YG45pOH5b6M6YKK5qGG6aGP6ImyXG4kc2VsZWN0QXJyb3dXaWR0aDogMTZweDsgLy9zZWxlY3Qg5LiJ6KeS5b2i5a+s5bqmXG4kc2VsZWN0QXJyb3dIZWlnaHQ6IDEwcHg7IC8vc2VsZWN0IOS4ieinkuW9oumrmOW6plxuJHNlbGVjdEFycm93Q29sb3I6ICM1NTU7IC8vc2VsZWN0IOS4ieinkuW9oumhj+iJslxuJHJlcXVpcmVkQ29sb3I6ICNjMDAwMDA7IC8v5b+F5aGr6aGP6ImyXG4kdGlwc0NvbG9yOiAjOTk5OyAvL+aPkOekuuaWh+Wtl+mhj+iJslxuJHRpcHNJY29uU2l6ZTogMjBweDsgLy/mj5DnpLppY29uIOWkp+Wwj1xuJHRpcHNJY29uOiAnXFxlOTAwJzsgLy/mj5DnpLppY29uXG4kdmFsaWRJY29uOiAnXFxlOTAwJzsgLy9mZWVkYmFjayDmj5DnpLogaWNvblxuJGVycm9yQ29sb3I6ICNjMDAwMDA7IC8vZmVlZGJhY2sg6Yyv6Kqk5o+Q56S66aGP6ImyXG4kZXJyb3JJY29uOiAnXFxlOTA2JzsgLy9mZWVkYmFjayDpjK/oqqTmj5DnpLppY29uXG4kc3VjY2Vzc0NvbG9yOiAjMWU5ODEzOyAvL2ZlZWRiYWNrIOaIkOWKn+aPkOekuumhj+iJslxuJHN1Y2Nlc3NJY29uOiAnXFxlOTAxJzsgLy9mZWVkYmFjayDmiJDpgJrmj5DnpLppY29uXG4kdGV4dGFyZWFIZWlnaHQ6IDE1MHB4OyAvL3RleHRhcmVhIOmrmOW6plxuJHJlc2V0Q29sb3I6ICMxZTk4MTM7IC8v6KqN6K2J56K8cmVzZXTpoY/oibJcblxuLy89PT09PT09PT09PT09PT09PT09PT09XG4vL+aMiemIlSBidXR0b25cbi8vPT09PT09PT09PT09PT09PT09PT09PVxuJGJ0bldpZHRoOiAxMjBweDsgLy/lrprnvqnmjInpiJXlr6zluqZcbiRidG5IZWlnaHQ6IDQwcHg7IC8v5a6a576p5oyJ6YiV6auY5bqmXG4kYnRuTGluZVdpZHRoOiAwOyAvL+Wumue+qeaMiemIleahhue3mueyl+e0sFxuJGJ0bkljb25TaXplOiAyMHB4OyAvL+Wumue+qeaMiemIlWljb24g5aSn5bCPXG4kYnRuU21XaWR0aDogMTAwcHg7IC8v5a6a576p5bCP5oyJ6YiV5a+s5bqmXG4kYnRuU21IZWlnaHQ6IDQwcHg7IC8v5a6a576p5bCP5oyJ6YiV6auY5bqmXG4kYnRuU21JY29uU2l6ZTogMjBweDsgLy/lrprnvqnlsI/mjInpiJVpY29u5aSn5bCPXG4kYnRuRGVmYXVsdENvbG9yOiAkZ3JheS0yMDA7IC8v5Y6f5aeL5oyJ6YiV6aGP6ImyXG4kYnRuRGVmYXVsdExpbmVDb2xvcjogI2UzZTNlMzsgLy/ljp/lp4vmjInpiJXmoYbnt5rpoY/oibJcbiRidG5EZWZhdWx0VGV4dENvbG9yOiAkdGV4dENvbG9yOyAvL+WOn+Wni+aMiemIleaWh+Wtl+mhj+iJslxuJGJ0bkRlZmF1bHRIb3ZlckNvbG9yOiAkbWFpbi1jb2xvcjsgLy/ljp/lp4vmjInpiJXmu5HlhaXpoY/oibJcbiRidG5EZWZhdWx0SG92ZXJMaW5lQ29sb3I6ICRtYWluLWNvbG9yOyAvL+WOn+Wni+aMiemIlea7keWFpeahhue3mumhj+iJslxuJGJ0bkRlZmF1bHRIb3ZlclRleHRDb2xvcjogJHdoaXRlOyAvL+WOn+Wni+aMiemIlea7keWFpeaWh+Wtl+mhj+iJslxuLy/mjInpiJXlkI3nqLHmlrDlop7poIXnm64gKOWQjeeosSDog4zmma/poY/oibIg5aSW5qGG6aGP6ImyIOaWh+Wtl+mhj+iJsilcbiRidG5Db25maWc6IChzdWJtaXQgI2Q2MGQwZCAjZDYwZDBkICR3aGl0ZSwgbWFpbiAkbWFpbi1jb2xvciAkbWFpbi1jb2xvciAkd2hpdGUsIHN1Y2Nlc3MgcmdiYSgwLDAsMCwwKSAkZ3JlZW4gJGJsYWNrKTtcblxuLy89PT09PT09PT09PT09PT09PT09PT09XG4vLyDpoIHnorwgcGFnaW5hdGlvblxuLy89PT09PT09PT09PT09PT09PT09PT09XG4kcGFnZUJnOiAkZ3JheS0yMDA7IC8v5oyJ6YiV6IOM5pmv6ImyXG4kcGFnZUhvdmVyQmc6ICRtYWluLWNvbG9yOyAvL+a7kem8oOenu+iHs+aMiemIleiDjOaZr+iJslxuJHBhZ2VBY3RpdmVCZzogZGFya2VuKCRtYWluLWNvbG9yLDAuMik7Ly/mu5HpvKDmjInkuIvnmoTmqKPlvI9cbiRwYWdlSG92ZXJDb2xvcjogJHdoaXRlOy8v5ruR5YWl6IiH6YG45Y+W5paH5a2X6aGP6ImyXG4kcGFnZURpc2FibGVkOiAkZ3JheS00MDA7IC8v56aB55So5paH5a2X6aGP6ImyXG4iLCIvL3Jlbeeul+W8j1xuQGZ1bmN0aW9uIHRvUmVtKCRzaXplKSB7XG5cdCRyZW1TaXplOiByb3VuZCgkc2l6ZSAvICRmb250U2l6ZSAqIDEwMDApIC8gMTAwMDtcblx0QHJldHVybiAkcmVtU2l6ZSAqIDFyZW07IH1cblxuLy/ot53pm6JsZXZlbCDnrpflvI9cbi8vZ2FwKDIpID09PiAyKiRiYXNlR2FwXG5AZnVuY3Rpb24gZ2FwKCRnYXBMZXZlbDogMSwgJGdhcEhlaWdodDogJGJhc2VHYXApIHtcbiAgICBAcmV0dXJuICRnYXBMZXZlbCAqICRnYXBIZWlnaHQ7IH1cbiIsIi8vVGhpcyBpcyBzYXNzIGZpbGVcbi8vYmFja2dyb3VuZCDoqK3lrppcbkBtaXhpbiBiZygkaW1nLCAkcG9zLXg6IDAsICRwb3MteTogMCwgJHJlcDogbm8tcmVwZWF0KSB7XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uL2ltYWdlcy8jeyRpbWd9XCIpO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkcG9zLXggJHBvcy15O1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogJHJlcDsgfVxuXG4vL3J3ZCBwb2ludFxuLy8rcndkKDE5MjAsIG1heClcbkBtaXhpbiByd2QoJHBvaW50LCAkbXc6ICdtYXgnKSB7XG5cdEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKCN7JG13fS13aWR0aDogJHBvaW50ICogMXB4KSB7XG5cdFx0QGNvbnRlbnQ7IH0gfVxuXG4vLytpY29uKDMwcHgsMzBweCwnXFxmMTM4JywyNXB4LCAjOTk5KVxuQG1peGluIGljb24oJHdpZHRoOiBhdXRvLCAkaGVpZ2h0OiBhdXRvLCAkaWNvbl9jb250ZW50OiAnJywgJGZvbnQtc2l6ZTogMTAwJSwgJGNvbG9yOmluaGVyaXQpIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHQmOmJlZm9yZSB7XG5cdFx0Y29udGVudDogJGljb25fY29udGVudDtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0d2lkdGg6ICR3aWR0aDtcblx0XHRoZWlnaHQ6ICRoZWlnaHQ7XG5cdFx0Zm9udC1mYW1pbHk6ICdpY29tb29uJztcblx0XHRmb250LXNpemU6ICRmb250LXNpemU7XG5cdFx0bGluZS1oZWlnaHQ6ICRoZWlnaHQ7XG5cdFx0Y29sb3I6ICRjb2xvcjtcblx0XHRAY29udGVudDsgfSB9XG5cbi8v5paH5a2X5qGG57eaXG4vLytzdHJva2UoMiwjZWVlKVxuQG1peGluIHN0cm9rZSgkcy13aWR0aCwgJGNvbG9yKSB7XG5cdCRzLXdpZHRoOiAkcy13aWR0aDtcblx0JHNoYWRvdzogMCAwIDAgdHJhbnNwYXJlbnQ7XG5cdCRpOiAwO1xuXHQkdzogMTtcblx0QHdoaWxlICgkcy13aWR0aCA+ICRpKSB7XG5cdFx0JGk6ICRpICsgMTtcblx0XHQkajogMDtcblx0XHQkdzogJHcgKyAyO1xuXHRcdEBmb3IgJHIgZnJvbSAxIHRocm91Z2ggJHcge1xuXHRcdFx0QGZvciAkYyBmcm9tIDEgdGhyb3VnaCAkdyB7XG5cdFx0XHRcdCR4OiAkYyAtIGNlaWwoJHcgLyAyKTtcblx0XHRcdFx0JHk6ICRyIC0gY2VpbCgkdyAvIDIpO1xuXHRcdFx0XHQkc2hhZG93OiAjeyRzaGFkb3d9LCAjeyR4fXB4ICN7JHl9cHggMCAkY29sb3I7IH0gfSB9XG5cdHRleHQtc2hhZG93OiAkc2hhZG93OyB9XG5cbi8vY2FzZSBtaXhpblxuLy8raW5uZXIoMTkyMCwzMClcbi8vJGluci13IOWvrOW6plxuLy9SV0QgJGluci1nYXAg5bem5Y+zcGFkZGluZ+mWk+i3nee4veWSjFxuQG1peGluIGlubmVyKCRpbnItdywkaW5yLWdhcDogMCkge1xuXHRtYXgtd2lkdGg6ICRpbnItdyAqIDFweDtcblx0QGlmICRpbnItZ2FwICE9IDAge1xuXHRcdEBpbmNsdWRlIHJ3ZCgkaW5yLXcgKyAkaW5yLWdhcCkge1xuXHRcdFx0cGFkZGluZzogMCAoJGluci1nYXAgLyAyICogMXB4KTsgfSB9IH1cblxuLy/mloflrZfpmrHol48gZWxsaXBzaXMo6KGM6auYKVxuQG1peGluIGVsbGlwc2lzKCRlbHNfaGVpZ2h0OiAxKSB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdEBpZigkZWxzX2hlaWdodCA8PSAxKSB7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRAY29udGVudDsgfVxuXHRAZWxzZSBpZigkZWxzX2hlaWdodCA+IDEpIHtcblx0XHRkaXNwbGF5OiAtd2Via2l0LWJveDtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHQtd2Via2l0LWxpbmUtY2xhbXA6ICRlbHNfaGVpZ2h0O1xuXHRcdC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG5cdFx0QGNvbnRlbnQ7IH0gfVxuXG5cbi8v5paH5a2X6L2J5o+bIHJlbVxuQG1peGluIGZvbnQtc2l6ZSgkaW5TaXplLCRpbkxpbmVIZWlnaHQ6IDFweCkge1xuXHRmb250LXNpemU6ICRpblNpemU7XG5cdCRuZXdMaW5lSGVpZ2h0OiBjZWlsKCRpblNpemUgKiAkbGluZUhlaWdodExldmVsKTtcblx0Zm9udC1zaXplOiB0b1JlbSgkaW5TaXplKTtcblx0QGlmKCRuZXdMaW5lSGVpZ2h0ID09IDFweCBvciAkaW5MaW5lSGVpZ2h0IDwgJGluU2l6ZSkge1xuXHRcdGxpbmUtaGVpZ2h0OiB0b1JlbSgkbmV3TGluZUhlaWdodCk7IH1cblx0QGVsc2Uge1xuXHRcdGxpbmUtaGVpZ2h0OiB0b1JlbSgkaW5MaW5lSGVpZ2h0KTsgfSB9XG5cbi8v5paH5a2X5YCN546HXG5AbWl4aW4gZm9udC1sZXZlbCgkZkxldmVsKSB7XG5cdEBpZigkZkxldmVsIDwgMCkge1xuXHRcdCRmTGV2ZWw6IDA7IH1cblx0JG5ld2ZvbnQ6ICRmb250U2l6ZSAqICgxICsgJGZMZXZlbCAqICRmb250U2l6ZUxldmVsKTtcblx0JGZMZXZlbExpbmVIZWlnaHQ6IGNlaWwoJG5ld2ZvbnQgKiAkbGluZUhlaWdodExldmVsKTtcblx0Zm9udC1zaXplOiAkbmV3Zm9udDtcblx0Zm9udC1zaXplOiB0b1JlbSgkbmV3Zm9udCk7XG5cdGxpbmUtaGVpZ2h0OiB0b1JlbSgkZkxldmVsTGluZUhlaWdodCk7IH1cblxuXG4vLyB0cmlhbmdsZSDkuInop5LlvaIgbWl4aW5cbi8vK3RyaWFuZ2xlKDEwcHggMTJweCwgI2FlMDAwMCx1cClcbkBtaXhpbiB0cmlhbmdsZSAoJHNpemUsICRjb2xvciwgJGRpcmVjdGlvbikge1xuXHRoZWlnaHQ6IDA7XG5cdHdpZHRoOiAwO1xuXHQkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG5cdCRoZWlnaHQ6IG50aCgkc2l6ZSwgbGVuZ3RoKCRzaXplKSk7XG5cdCRmb3JlZ3JvdW5kLWNvbG9yOiBudGgoJGNvbG9yLCAxKTtcblx0JGJhY2tncm91bmQtY29sb3I6IGlmKGxlbmd0aCgkY29sb3IpID09IDIsIG50aCgkY29sb3IsIDIpLCB0cmFuc3BhcmVudCk7XG5cdEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcblx0XHQkd2lkdGg6ICR3aWR0aCAvIDI7XG5cdFx0JGhlaWdodDogaWYobGVuZ3RoKCRzaXplKSA+IDEsICRoZWlnaHQsICRoZWlnaHQvMik7XG5cdFx0QGlmICRkaXJlY3Rpb24gPT0gdXAge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcblx0XHRcdGJvcmRlci1sZWZ0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG5cdFx0XHRib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjsgfVxuXG5cdFx0QGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG5cdFx0XHRib3JkZXItbGVmdDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcblx0XHRcdGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjsgfVxuXHRcdEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG5cdFx0XHRib3JkZXItbGVmdDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuXHRcdFx0Ym9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG5cdFx0XHRib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yOyB9XG5cdFx0QGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcblx0XHRcdGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcblx0XHRcdGJvcmRlci1yaWdodDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcblx0XHRcdGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjsgfSB9XG5cdEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHVwLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB1cC1sZWZ0KSB7XG5cdFx0Ym9yZGVyLXRvcDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcblx0XHRAaWYgJGRpcmVjdGlvbiA9PSB1cC1yaWdodCB7XG5cdFx0XHRib3JkZXItbGVmdDogICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjsgfVxuXHRcdEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdXAtbGVmdCB7XG5cdFx0XHRib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjsgfSB9XG5cdEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGRvd24tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGRvd24tbGVmdCkge1xuXHRcdGJvcmRlci1ib3R0b206ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG5cdFx0QGlmICRkaXJlY3Rpb24gPT0gZG93bi1yaWdodCB7XG5cdFx0XHRib3JkZXItbGVmdDogICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjsgfVxuXHRcdEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93bi1sZWZ0IHtcblx0XHRcdGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yOyB9IH1cblx0QGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtdXApIHtcblx0XHRib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yO1xuXHRcdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdFx0Ym9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDsgfVxuXHRAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1kb3duKSB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkZm9yZWdyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvcjtcblx0XHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRcdGJvcmRlci13aWR0aDogJGhlaWdodCAkd2lkdGg7IH1cblx0QGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtcmlnaHQpIHtcblx0XHRib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yO1xuXHRcdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdFx0Ym9yZGVyLXdpZHRoOiAkd2lkdGggJGhlaWdodDsgfVxuXHRAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1sZWZ0KSB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvcjtcblx0XHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRcdGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7IH0gfVxuXG4vL+e9ruS4rSAndicg5Z6C55u0572u5LitICdoJyDmsLTlubPnva7kuK0gJ2InIOWeguebtOawtOW5s+e9ruS4rVxuQG1peGluIGNlbnRlcigkcG9zaXRpb24pIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRAaWYgJHBvc2l0aW9uID09ICd2JyB7XG5cdFx0dG9wOiA1MCU7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyB9XG5cdEBlbHNlIGlmICRwb3NpdGlvbiA9PSAnaCcge1xuXHRcdGxlZnQ6IDUwJTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlKTsgfVxuXHRAZWxzZSBpZiAkcG9zaXRpb24gPT0gJ2InIHtcblx0XHR0b3A6IDUwJTtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IH0gfVxuXG4vL1JXRCDntrLmoLzorormj5tcbi8vJGNvb0NvbCDntrLmoLzmlbhcbi8vJGNvb0NvbHMg57ay5qC85L2U5qC85pW4XG4vLyRjb29HdXR0ZXIg6ZaT6LedIHB4IGVtICVcbi8v5L2/55So5pa55byPICtjb28oNiwyLDEwcHgpXG5AbWl4aW4gY29vKCRjb29Db2wsJGNvb0NvbHM6IDEsJGNvb0d1dHRlcjogMCkge1xuXHR3aWR0aDogc3BhbigkY29vQ29scyBuYXJyb3cgb2YgJGNvb0NvbCBzZXQtZ3V0dGVycyAkY29vR3V0dGVyIHdpZGUpO1xuXHRAaWYgJGNvb0d1dHRlciAhPSAwIHtcblx0XHRtYXJnaW4tbGVmdDogZ3V0dGVyKG9mICRjb29Db2wgc2V0LWd1dHRlcnMgJGNvb0d1dHRlciB3aWRlKSAvIDI7XG5cdFx0bWFyZ2luLXJpZ2h0OiBndXR0ZXIob2YgJGNvb0NvbCBzZXQtZ3V0dGVycyAkY29vR3V0dGVyIHdpZGUpIC8gMjtcblx0XHRtYXJnaW4tYm90dG9tOiBndXR0ZXIob2YgJGNvb0NvbCBzZXQtZ3V0dGVycyAkY29vR3V0dGVyIHdpZGUpOyB9IH1cbiIsIi8vPT09PT09PT09PT09PT09PT09PT09PVxuLy/mjInpiJUgQnV0dG9uXG4vLz09PT09PT09PT09PT09PT09PT09PT1cbiVCdG4ge1xuXHR3aWR0aDogJGJ0bldpZHRoO1xuXHRoZWlnaHQ6ICRidG5IZWlnaHQ7XG5cdG1hcmdpbjogNXB4O1xuXHRwYWRkaW5nOiAwIGdhcCgyKTtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0LW1zLXRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuXHR0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHR1c2VyLXNlbGVjdDogbm9uZTtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0Ym9yZGVyLXdpZHRoOiAkYnRuTGluZVdpZHRoO1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGFwcGVhcmFuY2U6IG5vbmU7XG5cdHRyYW5zaXRpb246IGFsbCAuM3MgZWFzZS1vdXQ7XG5cdCY6Zm9jdXMsXG5cdCY6YWN0aXZlOmZvY3VzIHtcblx0XHRvdXRsaW5lLW9mZnNldDogLTJweDtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cblx0JjphY3RpdmUge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG5cdFx0b3V0bGluZTogMDsgfSB9XG4vL+a4hemZpFxuJWNsZWFyIHtcblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRkaXNwbGF5OiB0YWJsZTtcblx0XHRjbGVhcjogYm90aDsgfSB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUMsQUFBQSxLQUFLLENBQUM7Q0FDTCxLQUFLLEVjcURLLEtBQUs7Q2RwRGYsTUFBTSxFY21EZSxJQUFJO0NkbER6QixL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 */
