a { padding: 0; }

@media (max-width: 700px) { .johnny-utah { content: 'Whoa.'; } }

.clear-lg2 { clear: both; }

@media (max-width: 940px) { .clear-lg2 { clear: none; } }

@media (max-width: 480px) { .clear-lg2 { clear: both; } }

@media (max-width: 1024px) { .clear-lg1 { clear: none; } }

@media (max-width: 940px) { .clear-lg1 { clear: both; } }

@media (max-width: 700px) { .clear-lg1 { clear: none; } }

.lg2 { display: block; }

@media (max-width: 940px) { .lg2 { display: none; } }

.lg1 { display: none; }

@media (max-width: 940px) { .lg1 { display: block; } }

.detailBox { text-align: left; margin-bottom: 12px; display: block; position: relative; margin-bottom: 12px; display: block; }

.detailBox:before, .detailBox:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }

.detailBox .detailL { background: #fff; float: left; min-width: 180px; max-width: 280px; width: 22%; margin-right: 1%; padding: 1.5%; min-height: 200px; }

@media (max-width: 1024px) { .detailBox .detailL { width: 19%; min-width: auto; } }

@media (max-width: 940px) { .detailBox .detailL { width: 98%; margin: 0 1% 1% 1%; float: none; max-width: 100%; min-height: auto; margin-bottom: 12px; } }

.detailBox .detailL > .checkbox label { color: #666 !important; }

.detailBox .detailL .bxCaution { background-position: 0 13px; padding-left: 17px; font-size: 0.9em; letter-spacing: -1px; background-color: #fff; line-height: 1.2; border-bottom: 1px solid #e6e7eb; padding-bottom: 10px; }

.detailBox .detailL .inpW { width: 100%; padding-right: 35px; position: relative; overflow: hidden; background: #ddd; height: 35px; }

.detailBox .detailL .btnSch { position: absolute; top: 0; right: 0; }

.detailBox .detailL .inp { background: #ddd; padding: 5px 10px; line-height: 25px; border: 0; width: 100%; float: left; }

.detailBox .detailL .btnW { text-align: center; margin: 15px 0 5px 0; }

.detailBox .detailL .btnW .btn-style { background: #637fd2; border-radius: 3px; font-weight: bold; color: #fff; }

.detailBox .detailR { background: #fff; width: 77%; float: left; padding: 1% 1.5%; min-height: 200px; }

@media (max-width: 1024px) { .detailBox .detailR { width: 79%; } }

@media (max-width: 940px) { .detailBox .detailR { width: 98%; margin: 1% 1% 0 1%; float: none; } }

.detailBox .detailR > dl { background: url(/static/images/common/dot.gif) repeat-x left top; padding: 5px 0; }

.detailBox .detailR > dl:first-child { background: none; }

.detailBox .detailR > dl > dt { float: left; width: 63px; color: #333; font-weight: bold; font-size: 0.9em; margin-top: 3px; background: url(/static/images/common/board/bu_arr.gif) no-repeat right center; }

@media (max-width: 700px) { .detailBox .detailR > dl > dt { float: none; margin-bottom: 5px; background: url(/static/images/common/board/bu_arrDown.gif) no-repeat right center; } }

.detailBox .detailR > dl > dd { margin-left: 90px; }

@media (max-width: 700px) { .detailBox .detailR > dl > dd { margin-left: 0; clear: both; width: 100%; } }

.detailBox .detailR > dl > dd .checkbox { margin-right: 20px; color: #666; }

@media (max-width: 360px) { .detailBox .detailR > dl > dd .checkbox { margin-right: 12px; } }

.detailBox .detailR > dl > dd .date_style { display: inline-block; }

@media (max-width: 360px) { .detailBox .detailR > dl > dd .date_style .sdate, .detailBox .detailR > dl > dd .date_style .edate { width: 90px; } }

.detailBox .detailR > dl > dd input[type="radio"]:checked + label, .detailBox .detailR > dl > dd input[type="radio"] + label.active { font-weight: bold; }

.detailBox .detailR > dl > dd label { margin-bottom: 0; }

.detailBox .btn_set { clear: both; border-top: 1px solid #ddd; padding-top: 12px; margin-top: 0; }

.searchW h3 { font-size: 1.1em; font-weight: bold; border-bottom: 1px solid #474a5b; margin-bottom: 2%; padding: 1% 0 1.5% 0; color: #000; }

.searchW .search_total { background: #f3f3f3; display: block; padding: 10px 15px; }

.searchW .search_total:before, .searchW .search_total:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }

.searchW .search_total > p { float: left; background: url(/static/images/common/ico/ico_sch.png) no-repeat left 6px; padding-left: 20px; }

.searchW .search_total .timer { float: right; background: url(/static/images/common/ico/ico_watch.png) no-repeat left center; padding-left: 20px; }

@media (max-width: 700px) { .searchW .search_total .timer { float: none; display: block; clear: both; } }

.searchW .searchList { font-size: 1.05em; clear: both; }

.searchW .searchList li { background: url(/static/images/common/bu_pink.gif) no-repeat left 8px; margin-bottom: 10px; padding-left: 10px; }

.searchW .searchList li.photo { padding: 0 0 15px 175px; position: relative; min-height: 110px; }

@media (max-width: 480px) { .searchW .searchList li.photo { padding: 0; } }

.searchW .searchList li.photo .img { position: absolute; top: 0; left: 0; }

@media (max-width: 480px) { .searchW .searchList li.photo .img { float: none; position: static; top: inherit; left: inherit; } }

.searchW .searchList li.photo .img img { width: 160px; height: 110px; }

@media (max-width: 480px) { .searchW .searchList li.photo .img img { width: 100%; height: auto; } }

.searchW .searchList li.photo .txt { display: block; }

@media (max-width: 480px) { .searchW .searchList li.photo .txt { margin-left: 0; margin-top: 5px; } }

.searchW .searchList li.photo .tit { display: block; margin-bottom: 5px; clear: both; background: url(/static/images/common/bu_pink.gif) no-repeat left 8px; margin-bottom: 10px; padding-left: 10px; }

.searchW .searchList li.photo .lct { margin-top: 12px; }

.searchW .searchList li .lct { display: block; font-size: 0.9em; color: #666; margin-top: 5px; clear: both; }

.searchW .searchList li .ex, .searchW .searchList li .txt { font-size: 0.9em; color: #666; line-height: 1.3; }

.searchW .searchList li .tit { display: block; }

.searchW .searchList li a.linkC { text-decoration: underline; font-size: 12px; font-weight: bold; }

.searchW .searchMore { background: url(/static/images/common/bu_arr_up.png) no-repeat right 5px; font-size: 0.9em; margin-top: 20px; }

.searchW .searchMore a { text-decoration: underline; display: inline-block; }

.searchW .searchMore a span { background: url(/static/images/common/bu_plus.gif) no-repeat left center; padding-left: 12px; }

.searchW .line { border-bottom: 1px solid #e6e7eb; height: 25px; width: 100%; background: url(/static/images/common/sch_arr.png) no-repeat right 0; }

@media (max-width: 480px) { .searchW .m1 { margin-left: -0.5% !important; } }

#searchLayer { position: relative; border: 1px solid #1a2851; border-top: 0; background: #fff; top: 6px; font-size: 0.95em; }

#searchLayer ul { margin-top: 5px; }

#searchLayer ul li a { display: block; padding: 2px 7px; color: #5d5d5d; }

#searchLayer ul li a span { font-weight: bold; color: #f05291; }

#searchLayer ul li a:hover { background: #f2f4f7; text-decoration: underline; }

#searchLayer .ex { margin: 10px 7px; }

#searchLayer .bottom { overflow: hidden; background: #787d9a; }

#searchLayer .bottom .fl, #searchLayer .bottom .fr { padding: 5px; color: #fff; }

#searchLayer .bottom .fl a, #searchLayer .bottom .fr a { color: #fff; }

#searchLayer .bottom .layerOff { padding: 0; }

#searchLayer .layerOff { background: #787d9a; padding: 10px 7px; }

#searchLayer .layerOff a { color: #fff; display: inline-block; background: url(/static/images/common/arr_w_right.png) no-repeat right center; padding-right: 10px; }

#searchLayer .layerOff a:focus { text-decoration: underline; }

#searchLayer .predictive { padding-top: 1px; }

em.point { font-weight: bold; color: #637fd2; }

.btnDetail { text-align: right; font-size: 0.9em; letter-spacing: -1px; height: 22px; }

@media (max-width: 940px) { .btnDetail { margin: 1em 0.5em 0 0.5em; } }

.btnDetail .btn_help { background: url(/static/images/common/ico/ico_help.png) no-repeat left center; padding-left: 21px; margin-right: 5px; text-decoration: underline; }

.btnDetail .btn_help.maR { margin-right: 40px; }

.btnDetail .btnD { display: none; background: #f05291 url(/static/images/common/arr_w_up.png) no-repeat 90% center; border-radius: 5px 5px 0 0; color: #fff; padding: 3px 20px 3px 10px; text-align: left; }

.detailClose { display: block; font-size: 0.9em; letter-spacing: -1px; }

.detailClose .btnClose { background: #474a5b url(/static/images/common/arr_w_down.png) no-repeat center center; width: 30px; height: 21px; display: inline-block; border-radius: 5px 5px 0 0; color: #fff; padding: 3px 20px 3px 10px; vertical-align: bottom; position: absolute; top: -22px; right: 0; }

@media (max-width: 1024px) { .detailClose .btnClose { right: 10px; } }

.relation { padding: 15px; margin: 20px 0 0 0; overflow: hidden; position: relative; background: #f8f8f8; }

@media (max-width: 1260px) { .relation { padding: 5px; } }

.relation dt { padding: 0 30px 0 0; font-weight: bold; float: left; font-size: 14px; }

@media (max-width: 1260px) { .relation dt { float: none; padding: 0; } }

.relation dd { display: block; margin-left: 70px; }

@media (max-width: 1260px) { .relation dd { margin-left: 0; } }

.relation ul { overflow: hidden; }

.relation li { float: left; padding-right: 1.5%; }

.relation li a { word-break: break-word; white-space: nowrap; color: #333; text-decoration: underline; font-size: 0.95em; }

.relation .re_more { position: absolute; bottom: 20px; right: 64px; }

.relation .relation_bottom { border-top: 1px solid #e9e9e9; padding-top: 20px; }

.helpList { margin: 0 -0.5%; overflow: hidden; }

@media (max-width: 700px) { .helpList { margin: 0; } }

.helpList li { float: left; border: 1px solid #dbdce0; width: 32.33%; padding: 12px; margin: 0 0.5%; min-height: 305px; }

@media (max-width: 700px) { .helpList li { float: none; width: 100%; margin: 10px 0; min-height: auto; } }

.helpList li p { background: #efefef; padding: 7% 0; color: #000; font-size: 1.15em; text-align: center; line-height: 1.3; height: 80px; vertical-align: middle; font-weight: 600; }

@media (max-width: 700px) { .helpList li p { padding: 3% 0; height: inherit; } }

.helpList li p.type { padding: 10% 0; }

@media (max-width: 700px) { .helpList li p.type { padding: 3% 0; height: inherit; } }

.helpList li dl { letter-spacing: -1px; }

.helpList li dl dt { color: #000; margin-top: 10px; font-weight: bold; }

.helpList li dl dd { color: #5d5d5d; }

.con_best_list { width: 200px; float: left; padding-top: 43px; }

.lineup { float: right; margin-top: -30px; }

.lineup li { float: left; margin-left: 5px; padding-right: 5px; }

.lineup a { background: url(/static/images/common/bu_arr_down.gif) right center no-repeat !important; padding-right: 10px; color: #666; }

.lineup .on a { color: #333; font-weight: bold; }

.lineup .line { border: 0; height: auto; }

.no_data { background: url(/static/images/common/img_search_none.gif) 0 0 no-repeat; margin-top: 20px; padding: 20px 20px 0 260px; background-size: 230px; min-height: 180px; border: 5px solid #f3f3f3; }

@media (max-width: 700px) { .no_data { background: url(/static/images/common/img_search_none.gif) center top no-repeat; margin-top: 20px; padding: 140px 3% 3% 3%; background-size: 180px; } }

.no_data .tit { padding: 0 0 14px 0; font-weight: bold; font-size: 16px; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmNzcyIsInNvdXJjZXMiOlsic2VhcmNoLnNjc3MiLCJfYnJlYWtwb2ludC5zY3NzIiwiYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsImJyZWFrcG9pbnQvX2NvbnRleHQuc2NzcyIsImJyZWFrcG9pbnQvX2hlbHBlcnMuc2NzcyIsImJyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsImJyZWFrcG9pbnQvcGFyc2Vycy9fcXVlcnkuc2NzcyIsImJyZWFrcG9pbnQvcGFyc2Vycy9fc2luZ2xlLnNjc3MiLCJicmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCJicmVha3BvaW50L3BhcnNlcnMvX2RvdWJsZS5zY3NzIiwiYnJlYWtwb2ludC9wYXJzZXJzL2RvdWJsZS9fZGVmYXVsdC1wYWlyLnNjc3MiLCJicmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCJicmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LnNjc3MiLCJicmVha3BvaW50L3BhcnNlcnMvX3RyaXBsZS5zY3NzIiwiYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiYnJlYWtwb2ludC9wYXJzZXJzL19yZXNvbHV0aW9uLnNjc3MiLCJicmVha3BvaW50L3BhcnNlcnMvcmVzb2x1dGlvbi9fcmVzb2x1dGlvbi5zY3NzIiwiYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsImJyZWFrcG9pbnQvX3Jlc3BvbmQtdG8uc2NzcyIsImJyZWFrcG9pbnQvX2xlZ2FjeS1zZXR0aW5ncy5zY3NzIiwiYmFzZS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBjaGFyc2V0IFwidXRmLThcIjtcclxuQGltcG9ydCAnYnJlYWtwb2ludCc7XHJcbkBpbXBvcnQgJ2Jhc2Uuc2Nzcyc7XHJcblxyXG4vLyAuaGdyb3Vwe2Rpc3BsYXk6IGJsb2NrO1xyXG4vLyBcdGgye2Rpc3BsYXk6bm9uZTt9XHJcbi8vIH1cclxuLmRldGFpbEJveHt0ZXh0LWFsaWduOmxlZnQ7bWFyZ2luLWJvdHRvbToxMnB4O2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLWJvdHRvbToxMnB4O0BpbmNsdWRlIGNsZWFyZml4O1xyXG5cdC8vIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnMSkge1xyXG5cdC8vIFx0bWFyZ2luOjAgMC41ZW0gMWVtIDAuNWVtO1xyXG5cdC8vIH1cclxuXHQvLyBAaW5jbHVkZSBicmVha3BvaW50KCRzbSkge1xyXG5cdC8vIFx0cGFkZGluZzoxMHB4O1xyXG5cdC8vIH1cclxuXHQuZGV0YWlsTHtiYWNrZ3JvdW5kOiNmZmY7ZmxvYXQ6bGVmdDttaW4td2lkdGg6MTgwcHg7bWF4LXdpZHRoOjI4MHB4O3dpZHRoOjIyJTttYXJnaW4tcmlnaHQ6MSU7cGFkZGluZzoxLjUlO21pbi1oZWlnaHQ6MjAwcHg7XHJcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzIpIHtcclxuXHRcdCBcdHdpZHRoOjE5JTttaW4td2lkdGg6YXV0bztcclxuXHRcdCB9XHJcblx0XHQgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGcxKSB7XHJcblx0XHRcdHdpZHRoOjk4JTttYXJnaW46MCAxJSAxJSAxJTtmbG9hdDpub25lO21heC13aWR0aDoxMDAlO21pbi1oZWlnaHQ6YXV0bzttYXJnaW4tYm90dG9tOjEycHg7XHJcblx0XHR9XHJcblx0XHQ+LmNoZWNrYm94IGxhYmVse2NvbG9yOiM2NjYgIWltcG9ydGFudH1cclxuXHRcdFxyXG5cdFx0LmJ4Q2F1dGlvbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMTNweDtwYWRkaW5nLWxlZnQ6MTdweDtmb250LXNpemU6MC45ZW07bGV0dGVyLXNwYWNpbmc6LTFweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7bGluZS1oZWlnaHQ6MS4yO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNmU3ZWI7cGFkZGluZy1ib3R0b206MTBweDt9XHJcblx0XHQuaW5wV3t3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6MzVweDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDojZGRkO2hlaWdodDozNXB4O31cclxuXHRcdC5idG5TY2h7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MH1cclxuXHRcdC5pbnB7YmFja2dyb3VuZDojZGRkO3BhZGRpbmc6NXB4IDEwcHg7bGluZS1oZWlnaHQ6MjVweDtib3JkZXI6MDt3aWR0aDoxMDAlO2Zsb2F0OmxlZnQ7fVxyXG5cdFx0LmJ0bld7dGV4dC1hbGlnbjogY2VudGVyO21hcmdpbjoxNXB4IDAgNXB4IDA7XHJcblx0XHRcdC5idG4tc3R5bGV7YmFja2dyb3VuZDojNjM3ZmQyO2JvcmRlci1yYWRpdXM6M3B4O2ZvbnQtd2VpZ2h0OiBib2xkO2NvbG9yOiNmZmY7fVxyXG5cdFx0fVxyXG5cdFx0XHJcblx0fVxyXG5cdC5kZXRhaWxSe2JhY2tncm91bmQ6I2ZmZjt3aWR0aDo3NyU7ZmxvYXQ6bGVmdDtwYWRkaW5nOjElIDEuNSU7bWluLWhlaWdodDoyMDBweDtcclxuXHRcdCBAaW5jbHVkZSBicmVha3BvaW50KCRsZzIpIHtcclxuXHRcdCBcdHdpZHRoOjc5JTtcclxuXHRcdCB9XHJcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzEpIHtcclxuXHRcdFx0d2lkdGg6OTglO21hcmdpbjoxJSAxJSAwIDElO2Zsb2F0Om5vbmU7XHJcblx0XHR9XHJcblx0XHQ+ZGx7YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvY29tbW9uL2RvdC5naWYpIHJlcGVhdC14IGxlZnQgdG9wO3BhZGRpbmc6NXB4IDA7XHJcblx0XHRcdCY6Zmlyc3QtY2hpbGR7YmFja2dyb3VuZDpub25lO31cclxuXHRcdFx0PmR0e2Zsb2F0OmxlZnQ7d2lkdGg6NjNweDtjb2xvcjojMzMzO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjAuOWVtO21hcmdpbi10b3A6M3B4O2JhY2tncm91bmQ6dXJsKC9zdGF0aWMvaW1hZ2VzL2NvbW1vbi9ib2FyZC9idV9hcnIuZ2lmKSBuby1yZXBlYXQgcmlnaHQgY2VudGVyO1xyXG5cdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxneCkge1xyXG5cdFx0XHRcdFx0ZmxvYXQ6bm9uZTttYXJnaW4tYm90dG9tOjVweDtiYWNrZ3JvdW5kOnVybCgvc3RhdGljL2ltYWdlcy9jb21tb24vYm9hcmQvYnVfYXJyRG93bi5naWYpIG5vLXJlcGVhdCByaWdodCBjZW50ZXI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdD5kZHttYXJnaW4tbGVmdDo5MHB4O1xyXG5cdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxneCkge1xyXG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6MDtjbGVhcjpib3RoO3dpZHRoOjEwMCU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC5jaGVja2JveHttYXJnaW4tcmlnaHQ6MjBweDtjb2xvcjojNjY2O1xyXG5cdFx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkc20pIHtcclxuXHRcdFx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6MTJweDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQuZGF0ZV9zdHlsZXtkaXNwbGF5OmlubGluZS1ibG9jaztcclxuXHJcblx0XHRcdFx0XHQuc2RhdGUsIC5lZGF0ZXtcclxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkc20pIHtcclxuXHRcdFx0XHRcdFx0XHR3aWR0aDo5MHB4O1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlucHV0W3R5cGU9XCJyYWRpb1wiXTpjaGVja2VkICsgbGFiZWwsIGlucHV0W3R5cGU9XCJyYWRpb1wiXSArIGxhYmVsLmFjdGl2ZXtmb250LXdlaWdodDogYm9sZH1cclxuXHRcdFx0XHRsYWJlbHttYXJnaW4tYm90dG9tOjA7fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdC5idG5fc2V0e2NsZWFyOmJvdGg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDtwYWRkaW5nLXRvcDoxMnB4O21hcmdpbi10b3A6MDt9XHJcbn1cclxuLnNlYXJjaFd7XHJcblx0aDN7Zm9udC1zaXplOjEuMWVtO2ZvbnQtd2VpZ2h0OmJvbGQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzQ3NGE1YjttYXJnaW4tYm90dG9tOjIlO3BhZGRpbmc6MSUgMCAxLjUlIDA7Y29sb3I6IzAwMDt9XHJcblx0LnNlYXJjaF90b3RhbHtiYWNrZ3JvdW5kOiNmM2YzZjM7QGluY2x1ZGUgY2xlYXJmaXg7cGFkZGluZzoxMHB4IDE1cHg7XHJcblx0XHQ+cHtmbG9hdDpsZWZ0O2JhY2tncm91bmQ6dXJsKC9zdGF0aWMvaW1hZ2VzL2NvbW1vbi9pY28vaWNvX3NjaC5wbmcpIG5vLXJlcGVhdCBsZWZ0IDZweDtwYWRkaW5nLWxlZnQ6MjBweDt9XHJcblx0XHQudGltZXJ7ZmxvYXQ6cmlnaHQ7YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvY29tbW9uL2ljby9pY29fd2F0Y2gucG5nKSBuby1yZXBlYXQgbGVmdCBjZW50ZXI7cGFkZGluZy1sZWZ0OjIwcHg7XHJcblx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxneCkge1xyXG5cdFx0XHRcdFx0ZmxvYXQ6bm9uZTtkaXNwbGF5OmJsb2NrO2NsZWFyOmJvdGg7XHJcblx0XHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQuc2VhcmNoTGlzdCB7Zm9udC1zaXplOjEuMDVlbTtjbGVhcjpib3RoO1xyXG5cdFx0bGl7YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvY29tbW9uL2J1X3BpbmsuZ2lmKSBuby1yZXBlYXQgbGVmdCA4cHg7bWFyZ2luLWJvdHRvbToxMHB4O3BhZGRpbmctbGVmdDoxMHB4O1xyXG5cdFx0XHQmLnBob3Rve3BhZGRpbmc6MCAwIDE1cHggMTc1cHg7cG9zaXRpb246IHJlbGF0aXZlO21pbi1oZWlnaHQ6MTEwcHg7IFxyXG5cdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1kKSB7XHJcblx0XHRcdFx0XHRcdFx0cGFkZGluZzowO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0LmltZ3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7XHJcblx0XHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRtZCkge1xyXG5cdFx0XHRcdFx0XHRcdGZsb2F0Om5vbmU7cG9zaXRpb246c3RhdGljO3RvcDppbmhlcml0O2xlZnQ6aW5oZXJpdDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aW1ne3dpZHRoOjE2MHB4O2hlaWdodDoxMTBweDtcclxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWQpIHtcclxuXHRcdFx0XHRcdFx0XHR3aWR0aDoxMDAlO2hlaWdodDphdXRvO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC50eHR7ZGlzcGxheTogYmxvY2s7XHJcblx0XHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRtZCkge1xyXG5cdFx0XHRcdFx0XHRcdG1hcmdpbi1sZWZ0OjA7bWFyZ2luLXRvcDo1cHg7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0LnRpdHtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206NXB4O2NsZWFyOmJvdGg7YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvY29tbW9uL2J1X3BpbmsuZ2lmKSBuby1yZXBlYXQgbGVmdCA4cHg7bWFyZ2luLWJvdHRvbToxMHB4O3BhZGRpbmctbGVmdDoxMHB4O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQubGN0e21hcmdpbi10b3A6MTJweDt9XHJcblx0XHRcdH1cclxuXHRcdFx0LmxjdHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTowLjllbTtjb2xvcjojNjY2O21hcmdpbi10b3A6NXB4O2NsZWFyOmJvdGg7fVxyXG5cdFx0XHQuZXgsLnR4dHtmb250LXNpemU6MC45ZW07Y29sb3I6IzY2NjtsaW5lLWhlaWdodDoxLjN9XHJcblx0XHRcdC50aXR7ZGlzcGxheTogYmxvY2t9XHJcblx0XHRcdGEubGlua0N7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDogYm9sZH1cclxuXHRcdH1cclxuXHR9XHJcblx0LnNlYXJjaE1vcmV7YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvY29tbW9uL2J1X2Fycl91cC5wbmcpIG5vLXJlcGVhdCByaWdodCA1cHg7Zm9udC1zaXplOjAuOWVtO21hcmdpbi10b3A6MjBweDtcclxuXHRcdGF7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtkaXNwbGF5OmlubGluZS1ibG9jaztcclxuXHRcdFx0c3BhbntiYWNrZ3JvdW5kOnVybCgvc3RhdGljL2ltYWdlcy9jb21tb24vYnVfcGx1cy5naWYpIG5vLXJlcGVhdCBsZWZ0IGNlbnRlcjtwYWRkaW5nLWxlZnQ6MTJweDt9XHJcblx0XHR9XHJcblx0fVxyXG5cdC5saW5le2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNmU3ZWI7aGVpZ2h0OjI1cHg7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOnVybCgvc3RhdGljL2ltYWdlcy9jb21tb24vc2NoX2Fyci5wbmcpIG5vLXJlcGVhdCByaWdodCAwO31cclxuXHQubTF7XHJcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRtZCkge1xyXG5cdFx0XHRtYXJnaW4tbGVmdDotMC41JSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4jc2VhcmNoTGF5ZXJ7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOjFweCBzb2xpZCAjMWEyODUxO2JvcmRlci10b3A6MDtiYWNrZ3JvdW5kOiNmZmY7dG9wOjZweDtmb250LXNpemU6MC45NWVtO1xyXG5cdHVse21hcmdpbi10b3A6NXB4O1xyXG5cdFx0bGl7XHJcblx0XHRcdGF7ZGlzcGxheTpibG9jaztwYWRkaW5nOjJweCA3cHg7Y29sb3I6IzVkNWQ1ZDtcclxuXHRcdFx0XHRzcGFue2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6I2YwNTI5MTt9XHJcblx0XHRcdFx0Jjpob3ZlcntiYWNrZ3JvdW5kOiNmMmY0Zjc7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQuZXh7bWFyZ2luOjEwcHggN3B4O31cclxuXHQuYm90dG9te292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiM3ODdkOWE7XHJcblx0XHQuZmwsIC5mcntwYWRkaW5nOjVweDtjb2xvcjojZmZmO1xyXG5cdFx0XHRhe2NvbG9yOiNmZmY7fVxyXG5cdFx0fVxyXG5cdFx0LmxheWVyT2Zme3BhZGRpbmc6MDt9XHJcblx0fVxyXG5cdC5sYXllck9mZntiYWNrZ3JvdW5kOiM3ODdkOWE7cGFkZGluZzoxMHB4IDdweDtcclxuXHRcdGF7Y29sb3I6I2ZmZjtkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kOnVybCgvc3RhdGljL2ltYWdlcy9jb21tb24vYXJyX3dfcmlnaHQucG5nKSBuby1yZXBlYXQgcmlnaHQgY2VudGVyO3BhZGRpbmctcmlnaHQ6MTBweH1cclxuXHRcdGE6Zm9jdXN7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1cclxuXHR9XHJcblx0LnByZWRpY3RpdmV7cGFkZGluZy10b3A6MXB4O31cclxufVxyXG5cclxuZW0ucG9pbnR7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjokY29yX2JsdWUyO31cclxuLmJ0bkRldGFpbHt0ZXh0LWFsaWduOnJpZ2h0O2ZvbnQtc2l6ZTowLjllbTtsZXR0ZXItc3BhY2luZzotMXB4O2hlaWdodDoyMnB4O1xyXG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnMSkge1xyXG5cdFx0bWFyZ2luOjFlbSAwLjVlbSAwIDAuNWVtO1xyXG5cdH0gXHJcblx0LmJ0bl9oZWxwe2JhY2tncm91bmQ6IHVybCgvc3RhdGljL2ltYWdlcy9jb21tb24vaWNvL2ljb19oZWxwLnBuZykgbm8tcmVwZWF0IGxlZnQgY2VudGVyO3BhZGRpbmctbGVmdDoyMXB4O21hcmdpbi1yaWdodDo1cHg7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtcclxuXHRcdCYubWFSe21hcmdpbi1yaWdodDo0MHB4O31cclxuXHR9XHJcblx0LmJ0bkR7ZGlzcGxheTogbm9uZTtiYWNrZ3JvdW5kOiRjb3JfcGluayB1cmwoL3N0YXRpYy9pbWFnZXMvY29tbW9uL2Fycl93X3VwLnBuZykgbm8tcmVwZWF0IDkwJSBjZW50ZXI7Ym9yZGVyLXJhZGl1czogNXB4IDVweCAwIDA7Y29sb3I6I2ZmZjtwYWRkaW5nOjNweCAyMHB4IDNweCAxMHB4O3RleHQtYWxpZ246bGVmdDt9XHJcblx0XHJcbn1cclxuLmRldGFpbENsb3Nle2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjAuOWVtO2xldHRlci1zcGFjaW5nOi0xcHg7XHJcblx0LmJ0bkNsb3Nle2JhY2tncm91bmQ6IzQ3NGE1YiB1cmwoL3N0YXRpYy9pbWFnZXMvY29tbW9uL2Fycl93X2Rvd24ucG5nKSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjt3aWR0aDozMHB4O2hlaWdodDoyMXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6IDVweCA1cHggMCAwO2NvbG9yOiNmZmY7cGFkZGluZzozcHggMjBweCAzcHggMTBweDt2ZXJ0aWNhbC1hbGlnbjpib3R0b207cG9zaXRpb246YWJzb2x1dGU7dG9wOi0yMnB4O3JpZ2h0OjA7XHJcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzIpIHtcclxuXHRcdFx0cmlnaHQ6MTBweDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi5yZWxhdGlvbntwYWRkaW5nOjE1cHg7bWFyZ2luOjIwcHggMCAwIDA7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQ6I2Y4ZjhmODtcclxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzQpIHtcclxuXHRcdHBhZGRpbmc6NXB4O1xyXG5cdH1cclxuXHRkdHtwYWRkaW5nOjAgMzBweCAwIDA7Zm9udC13ZWlnaHQ6Ym9sZDtmbG9hdDpsZWZ0O2ZvbnQtc2l6ZToxNHB4O1xyXG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGc0KSB7XHJcblx0XHRcdGZsb2F0Om5vbmU7cGFkZGluZzowO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRkZHtkaXNwbGF5OmJsb2NrO21hcmdpbi1sZWZ0OjcwcHg7XHJcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzQpIHtcclxuXHRcdFx0bWFyZ2luLWxlZnQ6MDtcclxuXHRcdH1cclxuXHR9XHJcblx0dWx7b3ZlcmZsb3c6aGlkZGVuO31cclxuXHRsaXtmbG9hdDpsZWZ0O3BhZGRpbmctcmlnaHQ6MS41JX1cclxuXHRsaSBhe3dvcmQtYnJlYWs6YnJlYWstd29yZDt3aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6IzMzMzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2ZvbnQtc2l6ZTowLjk1ZW19XHJcblx0LnJlX21vcmV7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjIwcHg7cmlnaHQ6NjRweH1cclxuXHQucmVsYXRpb25fYm90dG9te2JvcmRlci10b3A6MXB4IHNvbGlkICNlOWU5ZTk7cGFkZGluZy10b3A6MjBweH1cclxufVxyXG5cclxuLmhlbHBMaXN0e21hcmdpbjowIC0wLjUlO292ZXJmbG93OmhpZGRlbjtcclxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRsZ3gpe1xyXG5cdFx0XHRtYXJnaW46MDtcclxuXHRcdH1cclxuXHRsaXtmbG9hdDpsZWZ0O2JvcmRlcjoxcHggc29saWQgI2RiZGNlMDt3aWR0aDozMi4zMyU7cGFkZGluZzoxMnB4O21hcmdpbjowIDAuNSU7bWluLWhlaWdodDozMDVweDtcclxuXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxneCl7XHJcblx0XHRcdGZsb2F0Om5vbmU7d2lkdGg6MTAwJTttYXJnaW46MTBweCAwO21pbi1oZWlnaHQ6YXV0bztcclxuXHRcdH1cclxuXHRcdHB7YmFja2dyb3VuZDojZWZlZmVmO3BhZGRpbmc6NyUgMDtjb2xvcjojMDAwO2ZvbnQtc2l6ZToxLjE1ZW07dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MS4zO2hlaWdodDo4MHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmb250LXdlaWdodDo2MDA7XHJcblx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxneCl7XHJcblx0XHRcdFx0cGFkZGluZzozJSAwO2hlaWdodDppbmhlcml0O1xyXG5cdFx0XHR9XHJcblx0XHRcdCYudHlwZXtwYWRkaW5nOjEwJSAwO1xyXG5cdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxneCl7XHJcblx0XHRcdFx0XHRwYWRkaW5nOjMlIDA7aGVpZ2h0OmluaGVyaXQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRkbHtsZXR0ZXItc3BhY2luZzotMXB4O1xyXG5cdFx0XHRkdHtjb2xvcjojMDAwO21hcmdpbi10b3A6MTBweDtmb250LXdlaWdodDpib2xkO31cclxuXHRcdFx0ZGR7Y29sb3I6IzVkNWQ1ZDt9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5cclxuLmNvbl9iZXN0X2xpc3R7d2lkdGg6IDIwMHB4O2Zsb2F0OmxlZnQ7cGFkZGluZy10b3A6NDNweH1cclxuXHJcbi5saW5ldXB7ZmxvYXQ6cmlnaHQ7bWFyZ2luLXRvcDotMzBweDt9XHJcbi5saW5ldXAgbGl7ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDo1cHg7cGFkZGluZy1yaWdodDo1cHh9XHJcbi5saW5ldXAgYXtiYWNrZ3JvdW5kOnVybCgvc3RhdGljL2ltYWdlcy9jb21tb24vYnVfYXJyX2Rvd24uZ2lmKSByaWdodCBjZW50ZXIgbm8tcmVwZWF0ICFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDoxMHB4O2NvbG9yOiM2NjZ9XHJcbi5saW5ldXAgLm9uIGF7Y29sb3I6IzMzMztmb250LXdlaWdodDpib2xkfVxyXG4ubGluZXVwIC5saW5le2JvcmRlcjowO2hlaWdodDphdXRvO31cclxuXHJcbi5ub19kYXRhIHtiYWNrZ3JvdW5kOnVybCgvc3RhdGljL2ltYWdlcy9jb21tb24vaW1nX3NlYXJjaF9ub25lLmdpZikgMCAwIG5vLXJlcGVhdDttYXJnaW4tdG9wOjIwcHg7cGFkZGluZzoyMHB4IDIwcHggMCAyNjBweDtiYWNrZ3JvdW5kLXNpemU6MjMwcHg7bWluLWhlaWdodDoxODBweDtib3JkZXI6NXB4IHNvbGlkICNmM2YzZjM7XHJcblx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGd4KSB7XHJcblx0IFx0YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvY29tbW9uL2ltZ19zZWFyY2hfbm9uZS5naWYpIGNlbnRlciB0b3Agbm8tcmVwZWF0O21hcmdpbi10b3A6MjBweDtwYWRkaW5nOjE0MHB4IDMlIDMlIDMlO2JhY2tncm91bmQtc2l6ZToxODBweDtcclxuXHQgfVxyXG59XHJcblxyXG4ubm9fZGF0YSAudGl0IHtwYWRkaW5nOiAwIDAgMTRweCAwO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE2cHh9IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iLCJAaW1wb3J0ICdicmVha3BvaW50JztcclxuJGxnNiA6IG1heC13aWR0aCAgMTkyMHB4O1xyXG4kbGc1IDogbWF4LXdpZHRoICAxMTUwcHg7XHJcbiRsZzQgOiBtYXgtd2lkdGggIDEyNjBweDtcclxuJGxnMyA6IG1heC13aWR0aCAgMTQwMHB4O1xyXG4kbGcyIDogbWF4LXdpZHRoICAxMDI0cHg7XHJcbiRsZzEgOiBtYXgtd2lkdGggIDk0MHB4O1xyXG4kbGcgOiBtYXgtd2lkdGggIDc2N3B4O1xyXG4kbGd4IDogbWF4LXdpZHRoIDcwMHB4O1xyXG4kbWcgOiBtYXgtd2lkdGggNjQwcHg7XHJcbiRtZCA6IG1heC13aWR0aCA0ODBweDtcclxuJHNtIDogbWF4LXdpZHRoIDM2MHB4O1xyXG4keHMgOiBtYXgtd2lkdGggMzIwcHg7XHJcblxyXG4kY29yX2JsdWU6IzMxNDM2YjtcclxuJGNvcl9ibHVlMjojNjM3ZmQyO1xyXG4kY29yX3Bpbms6I2YwNTI5MTtcclxuJGNvcl9ncmF5OiM1ZDVkNWQ7XHJcbiRjb3JfZGFya2dyYXk6IzMzMztcclxuJGNvcl9kYXJrYmx1ZTojNzg3ZDlhO1xyXG5cclxuYXtwYWRkaW5nOjA7fVxyXG4gLmpvaG5ueS11dGFoIHtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KCRsZ3gpIHtcclxuICAgIGNvbnRlbnQ6ICdXaG9hLic7XHJcbiAgfVxyXG4gIFxyXG59XHJcbkBtaXhpbiBlbGx7XHJcbiBvdmVyZmxvdzpoaWRkZW47XHJcbiB3aGl0ZS1zcGFjZTpub3dyYXA7XHJcbiB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO1xyXG4gZGlzcGxheTpibG9jaztcclxufVxyXG5AbWl4aW4gZWxseHtcclxudGV4dC1vdmVyZmxvdzppbmhlcml0O3doaXRlLXNwYWNlOm5vcm1hbDtvdmVyZmxvdzppbmhlcml0O1xyXG59XHJcbkBtaXhpbiBjbGVhcmZpeCB7IGRpc3BsYXk6IGJsb2NrOyBcclxuXHQmOmJlZm9yZSwmOmFmdGVyeyBjb250ZW50OiBcIi5cIjsgZGlzcGxheTogYmxvY2s7IGhlaWdodDogMDsgY2xlYXI6IGJvdGg7IHZpc2liaWxpdHk6IGhpZGRlbjsgfVxyXG59XHJcblxyXG5AbWl4aW4gYm9yMXtcclxuXHRib3JkZXItcmFkaXVzOiAzcHg7XHJcbn1cclxuXHJcbi5jbGVhci1sZzJ7Y2xlYXI6Ym90aDtcclxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzEpIHtjbGVhcjpub25lfVxyXG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1kKSB7Y2xlYXI6Ym90aDt9XHJcbn1cclxuLmNsZWFyLWxnMXtcclxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzIpIHtjbGVhcjpub25lfVxyXG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnMSkge2NsZWFyOmJvdGh9XHJcblx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGd4KSB7Y2xlYXI6bm9uZX1cclxufVxyXG4ubGcye2Rpc3BsYXk6YmxvY2s7XHJcblx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGcxKSB7XHJcblx0XHRcdGRpc3BsYXk6bm9uZTtcclxuXHRcdH1cclxufVxyXG4ubGcxe2Rpc3BsYXk6bm9uZTtcclxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzEpIHtcclxuXHRcdFx0ZGlzcGxheTpibG9jaztcclxuXHRcdH1cclxufVxyXG5cclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBb0JxQkEsQUFBQSxDQUFDLENBQUEsRUFBQyxPQUFPLEVBQUMsQ0FBQyxHQUFJOztBbkIyQ1gsTUFBTSxFQUFHLFNBQVMsRUFBRSxLQUFLLEltQjFDNUIsQUFBQSxZQUFZLENBQUMsRUFFVixPQUFPLEVBQUUsT0FBTyxHQUduQjs7QUFrQkQsQUFBQSxVQUFVLENBQUEsRUFBQyxLQUFLLEVBQUMsSUFBSSxHQUdwQjs7QW5CZ0JHLE1BQU0sRUFBRyxT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 */
