/* ============================================================================================= 
    Company    : PT Web Architect Technology - webarq.com
    Document   : Stylesheet
    Author     : Harlan
==============================================================================================*/
/*=============================================================================================	
    Company    : PT Web Architect Technology - webarq.com
    Document   : Stylesheet
    Author     : FrontEnd Team  
==============================================================================================*/
/* import bourbon - http://bourbon.io/docs */
.absolute-center {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
  margin: auto;
}

.no-margin {
  margin: 0 !important;
}

.after_clear {
  content: "";
  display: block;
  clear: both;
}

.a-right {
  text-align: right;
}

.a-left {
  text-align: left;
}

/* color global
----------------------------------------------------------------------------------------------*/
@media all and (max-width: 767px) {
  /* global
----------------------------------------------------------------------------------------------*/
  .btn-plus {
    height: 40px;
    line-height: 40px;
    width: 40px;
  }
  .btn-plus span {
    height: 40px;
    line-height: 42px;
  }
  .btn-block {
    height: 40px;
    line-height: 41px;
    font-size: 14px;
  }
  .btn-block.download-btn:before {
    height: 40px;
  }
  .btn-border {
    height: 40px;
    line-height: 38px;
  }
  /* header
----------------------------------------------------------------------------------------------*/
  header {
    height: 60px;
  }
  header .logo {
    margin-left: 60px;
    width: 115px;
  }
  header .right a {
    font-size: 0 !important;
  }
  header .right a.btn {
    width: 50px;
    line-height: 60px;
    height: 60px;
  }
  header .right a.btn:after {
    left: 12px;
  }
  header .right a.phone, header .right a.online-payment {
    margin: 18px 15px 0 0;
  }
  header .right .account-nav .drop {
    left: -135px;
    right: 0;
    width: 200px;
  }
  header:after {
    left: 50px;
  }
  header .header-right .header-top .right {
    display: flex;
  }
  header .header-right .header-top .right a.phone {
    display: none;
  }
  header .header-right .header-top .right .phone-mobile {
    display: inline-block;
    position: relative;
    margin: 18px 15px 0 0;
  }
  header .header-right .header-top .right .phone-mobile .icon {
    display: block;
    width: 26px;
    height: 26px;
    background: url("../images/material/phone-ico.png") no-repeat left center;
    background-size: 20px;
  }
  header .header-right .header-top .right .phone-mobile .dropdown-phone {
    position: absolute;
    top: 100%;
    left: 50%;
    width: 240px;
    background: #FFFFFF;
    box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.25);
    border-radius: 0px 0px 12px 12px;
    transform: translateX(-50%);
    margin-left: -30px;
    padding: 4px 16px 20px;
    display: none;
  }
  header .header-right .header-top .right .phone-mobile .dropdown-phone a {
    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  }
  header .header-right .header-top .right .phone-mobile .dropdown-phone a.phone {
    display: block;
    color: #666;
    font-size: 14px !important;
    padding: 16px 0 16px 28px;
    margin: 0;
    background-position: 0 18px;
  }
  header .header-right .header-top .right .phone-mobile .dropdown-phone a:last-child {
    border-bottom: 0;
    padding-bottom: 0;
  }
  .opt-checkbox.md .item label {
    padding: 8px 25px;
  }
  .burger-menu {
    width: 30px;
    top: 20px;
    left: 10px;
    height: 21px;
  }
  .burger-menu.active span:nth-child(1) {
    top: 6px;
  }
  .side-menu {
    padding: 60px 35px 15px;
    width: 320px;
  }
  .side-menu .wrap_nm {
    padding-top: 30px;
  }
  .side-menu nav a {
    font-size: 18px;
    margin-bottom: 15px;
  }
  .side-menu .search {
    margin-top: 30px;
  }
  .side-menu .search input {
    font-size: 14px;
    background-size: 16px;
    background-position: right center;
  }
  .side-menu .lang {
    margin-top: 25px;
  }
  /* homepage
----------------------------------------------------------------------------------------------*/
  .banner-home {
    margin-top: 60px;
    padding-left: 0;
    background: #fff;
    overflow: hidden;
  }
  .banner-home.banner-std {
    margin-top: 60px;
  }
  .banner-home .slick-dots {
    display: none;
  }
  .banner-home a.scroll-down {
    display: none;
  }
  .banner-home .caption {
    width: auto;
    height: auto;
    max-width: 340px;
  }
  .banner-home .caption h1 {
    font-size: 28px;
    line-height: 34px;
    margin-bottom: 15px;
  }
  .banner-home .caption a {
    height: 40px;
    line-height: 40px;
    font-size: 14px;
  }
  .banner-home .caption p {
    line-height: 22px;
  }
  .banner-home.banner-std .location-right {
    position: relative;
    width: auto;
    padding: 30px 20px;
    display: none;
  }
  .banner-home.banner-std .map-location {
    padding-right: 0;
    height: 420px;
  }
  .banner-home.banner-std .map-location > div {
    height: 420px;
  }
  .banner-home.banner-std .caption {
    bottom: 25px;
    top: auto;
    height: auto;
    top: auto;
  }
  .banner-home.banner-std .caption h1 {
    margin-bottom: 15px;
    font-size: 28px;
    line-height: 30px;
    margin-bottom: 0;
  }
  .banner-home.banner-std .caption p {
    display: block;
    margin-bottom: 0;
    display: none;
  }
  .banner-home.location {
    height: 420px;
  }
  .home-sec .wrapper {
    width: auto;
    margin: 0 20px;
  }
  .home-sec p {
    font-size: 14px;
    line-height: 22px;
  }
  .home-sec.h-about {
    background: #fff !important;
    padding: 30px 0;
  }
  .home-sec.h-about .left, .home-sec.h-about .right {
    float: none;
    display: block;
    width: auto;
  }
  .home-sec.h-about .left h2 {
    text-align: left;
    font-size: 23px;
  }
  .home-sec.h-about .left h2 br {
    display: none;
  }
  .home-sec.h-about .list-col .col {
    width: 46%;
    margin-right: 8%;
  }
  .home-sec.h-about .list-col .col h5 {
    font-size: 16px;
  }
  .home-sec.h-prod .wrapper {
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    flex-flow: column;
    -webkit-flex-flow: column;
    -moz-flex-flow: column;
    -ms-flex-flow: column;
    -o-flex-flow: column;
    width: auto;
    margin: 0 20px;
  }
  .home-sec.h-prod .slider {
    order: 2;
    -webkit-order: 2;
    -moz-order: 2;
    display: block;
    width: 340px;
    float: none;
    margin: 50px auto 0;
  }
  .home-sec.h-prod .slider .box {
    margin: 0;
  }
  .home-sec.h-prod .slider .box > img {
    width: 100%;
  }
  .home-sec.h-prod .slider .box:hover p {
    height: 65px;
  }
  .home-sec.h-prod .slider .text .btn {
    left: -27%;
  }
  .home-sec.h-prod .right {
    order: 1;
    -webkit-order: 1;
    -moz-order: 1;
    display: block;
    float: none;
    width: auto;
    padding-top: 0;
  }
  .home-sec.h-prod .right p {
    max-height: none;
  }
  .home-sec.h-updates {
    padding: 30px 0;
  }
  .home-sec.h-updates .list .box {
    float: none;
    width: auto;
    display: block;
    margin-bottom: 30px;
  }
  .home-sec.h-updates .list .box h6 {
    padding-bottom: 15px;
    border-bottom: 1px dotted #ccc;
    margin-bottom: 10px;
    font-size: 18px;
    height: auto;
  }
  .home-sec.h-updates .list .box small {
    display: none;
  }
  .home-sec.h-updates .list .box p {
    padding-top: 0;
    border: none;
  }
  .home-sec.h-testi .slider {
    margin-top: 40px;
  }
  .home-sec.h-testi .box {
    min-height: 0;
    margin: 0;
  }
  .home-sec.h-testi .slick-dots {
    top: -25px;
  }
  .box-form label {
    font-size: 14px;
    margin-bottom: 5px;
  }
  .box-form .row {
    margin-bottom: 30px;
  }
  .box-form input[type=text], .box-form input[type=password], .box-form input[type=number], .box-form input[type=email], .box-form select,
  .box-form textarea, .box-form .select2-container--default .select2-selection--multiple {
    font-size: 14px;
  }
  .box-form .input_file span {
    font-size: 14px;
  }
  /* middle
----------------------------------------------------------------------------------------------*/
  .content-std {
    padding: 35px 0 80px;
  }
  .content-std h2, .content-std h3 {
    font-size: 23px;
    line-height: 30px;
  }
  .content-std ul li:after {
    top: 7px;
  }
  .content-std .wrapper {
    width: auto;
    margin: 0 20px;
  }
  .content-std p {
    font-size: 14px;
    line-height: 22px;
  }
  .content-std p.sub {
    font-size: 16px;
    line-height: 24px;
  }
  .content-std .date-list {
    margin-bottom: 10px;
    font-size: 13px;
    line-height: 16px;
    max-height: 16px;
  }
  .content-std.faq {
    padding-top: 25px;
  }
  .content-std.about {
    padding-top: 35px;
    padding-bottom: 80px;
  }
  .content-std.about h2, .content-std.about h3 {
    font-size: 23px;
    line-height: 30px;
  }
  .content-std.about .list-col .col h5 {
    font-size: 16px;
  }
  .content-std .list-prod {
    margin-top: 40px;
  }
  .content-std .list-prod .box .text {
    padding-bottom: 20px;
  }
  .content-std .list-prod .box h5 {
    font-size: 23px;
    line-height: 28px;
  }
  .content-std .list-prod .box h4 {
    font-size: 18px;
    margin-bottom: 20px;
    line-height: 22px;
  }
  .content-std .list-prod .box h6 {
    font-size: 18px;
    margin-bottom: 12px;
  }
  .content-std .list-prod .box p {
    max-height: 66px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
  }
  .content-std .list-prod.news .box h4 {
    height: 66px;
  }
  .content-std .list-prod.news .box .btn-plus {
    margin-bottom: -40px;
  }
  .content-std.content-detail .wrapper {
    width: auto;
    margin: 0 20px;
  }
  .content-std.content-detail ul, .content-std.content-detail ol, .content-std.content-detail li {
    font-size: 14px;
    line-height: 24px;
  }
  .content-std.content-detail .image-slider .slick-dots, .content-std.content-detail .image-content .slick-dots {
    bottom: 5px;
  }
  .content-std.content-detail .arr_drop {
    display: block;
    padding: 10px 15px 8px;
    border: 1px solid #333;
    font-size: 18px;
    color: #333;
    position: relative;
    font-weight: 600;
    line-height: 20px;
  }
  .content-std.content-detail .arr_drop:after {
    content: '';
    border-top: 6px  solid #333;
    border-left: 6px  solid transparent;
    border-right: 6px  solid transparent;
    width: 0;
    display: block;
    position: absolute;
    right: 20px;
    top: 16px;
  }
  .content-std.content-detail .arr_drop + .nav-sub {
    border: 1px solid #333;
    border-top: 0;
    display: none;
  }
  .content-std.content-detail .arr_drop + .nav-sub a {
    display: block;
    text-align: left;
    padding: 12px 15px;
    font-size: 16px;
  }
  .content-std.content-detail .arr_drop + .nav-sub > span {
    display: none;
  }
  .content-std.content-detail .arr_drop + .nav-sub + .image-content {
    margin-top: 40px;
  }
  .content-std.content-detail .list-gallery {
    margin-top: 40px;
  }
  .content-std.content-detail .box-inquiry {
    display: none;
  }
  .content-std .service-room-list .box .img {
    max-width: 320px;
    margin: 0 0 30px;
    float: none;
    display: block;
    width: auto;
  }
  .content-std .service-room-list .box .img h5 {
    font-size: 26px;
  }
  .content-std .service-room-list .box .img small {
    font-size: 18px;
  }
  .content-std .service-room-list .box .text {
    float: none;
    display: block;
    width: auto;
    margin-left: 0;
  }
  .content-std .service-room-list .box .wrap-btn {
    float: none;
    display: block;
    width: auto;
    margin-left: 0;
  }
  .content-std.buy-step .wrapper {
    width: auto;
    margin: 0 20px;
  }
  .content-std.buy-step .wrap-step .box .ico {
    width: 50px;
    height: 50px;
  }
  .content-std.buy-step .wrap-step .box .ico span {
    width: 50px;
    height: 50px;
    background-size: 50px !important;
  }
  .content-std.buy-step .wrap-step .box h6 {
    display: none;
  }
  .content-std.buy-step .wrap-step .box:after {
    height: 5px;
    top: 22px;
  }
  .content-std.buy-step .box-form {
    width: auto;
  }
  .content-std.buy-step .box-form .col {
    width: 46%;
    margin-right: 8%;
  }
  .content-std.buy-step .box-form .col:nth-of-type(2) {
    margin-right: 0;
  }
  .content-std.buy-step .left-content h3 {
    line-height: 30px;
  }
  .content-std.buy-step .left-content h3:after {
    height: auto;
    bottom: 0;
  }
  .content-std.buy-step .left-content .box-form {
    width: auto;
  }
  .content-std.buy-step .left-content .box-form .row.col-3 .col {
    width: 45%;
    margin-right: 10%;
    margin-bottom: 25px;
  }
  .content-std.buy-step .left-content .box-form .row.col-3 .col:nth-child(2) {
    margin-right: 0;
  }
  .content-std.buy-step .left-content .box-form .row.col-3 .col:nth-child(3) {
    margin-bottom: 0;
  }
  .content-std.buy-step .right-content.fixedwp {
    top: 60px;
  }
  .content-std.buy-step .box-red .box {
    padding: 25px 15px;
  }
  .content-std.buy-step .box-red .box h6 {
    margin-bottom: 10px;
  }
  .content-std.buy-step .box-red .box .left {
    font-size: 16px;
  }
  .content-std.buy-step .box-red .box .left small {
    font-size: 12px;
  }
  .content-std.buy-step .box-red.grey-type {
    margin-top: 15px;
  }
  .content-std.buy-step .btn-next {
    margin-top: 35px;
  }
  .content-std.buy-step .payment-option {
    margin-bottom: 60px;
  }
  .content-std.buy-step .payment-option a {
    width: 48%;
    margin-right: 4%;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
  }
  .content-std.buy-step .payment-option a:nth-child(2n) {
    margin-right: 0;
  }
  .content-std.buy-step .payment-detail .box-inner {
    margin: 30px 0  20px 20px;
  }
  .content-std.buy-step .payment-detail .box-inner p {
    font-size: 16px;
    line-height: 22px;
    margin-bottom: 15px;
  }
  .content-std.buy-step .payment-detail .box-inner table td {
    font-size: 16px;
  }
  .content-std .counter-num {
    margin: auto;
  }
  .content-std .tbl-std thead {
    display: none;
  }
  .content-std .tbl-std tbody tr td {
    display: block;
    padding: 0 20px 15px !important;
    text-align: center;
    border-right-color: #ccc;
    font-size: 16px;
    border-bottom: none;
  }
  .content-std .tbl-std tbody tr td:before {
    content: attr(data-title);
    display: block;
    position: relative;
    display: block;
    padding: 10px 20px;
    background: #e1e1e1;
    font-size: 16px;
    margin: 0 -20px 20px;
    font-weight: 600;
    color: #333;
  }
  .content-std .tbl-std tbody tr td:first-child {
    max-width: none;
  }
  .content-std .tbl-std tbody tr td:first-child:after {
    display: none;
  }
  .content-std .tbl-std tbody tr td:last-child {
    padding: 0 !important;
    margin-bottom: 35px;
    border-top: none;
  }
  .content-std .tbl-std tbody tr td:last-child:before {
    display: none;
  }
  .content-std .tbl-std tbody tr td .delete {
    text-indent: 0;
    background: #9f9f9f;
    text-transform: capitalize;
    font-size: 16px;
    display: block;
    width: auto;
    color: #fff;
    height: 40px;
    line-height: 40px;
  }
  .content-std .tbl-std tbody tr td i {
    padding-left: 0;
  }
  .content-std .tbl-std tbody tr td p {
    margin-bottom: 0;
  }
  .content-std .tbl-std tbody tr.space {
    display: none;
  }
  .content-std .tbl-std.table-history tbody td {
    display: inline-block;
    width: 50%;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    vertical-align: top;
    font-size: 14px;
    padding: 0 15px 15px !important;
  }
  .content-std .tbl-std.table-history tbody td:before {
    font-size: 15px;
    margin: 0 -15px 15px;
  }
  .content-std .tbl-std.table-history tbody td:nth-child(6), .content-std .tbl-std.table-history tbody td:nth-child(5) {
    min-height: 94px;
  }
  .content-std .tbl-std.table-history tbody td:last-child {
    width: 100%;
    border: none;
  }
  .content-std .tbl-std.table-history tbody .btn-block {
    width: 100%;
  }
  .content-std.content-detail .title small.tgl {
    margin-bottom: 20px;
    text-align: left;
  }
  .content-std.content-detail .title.little {
    margin: 10px 0 20px;
  }
  .content-std.content-detail .title h4 {
    font-size: 18px;
    line-height: 24px;
  }
  .content-std .list-location .box .img {
    float: none;
    width: auto;
    height: auto;
  }
  .content-std .list-location .box .text {
    float: none;
    width: auto;
    display: block;
    height: auto;
    padding: 30px 20px 15px;
  }
  .content-std .list-location .box .text h4 {
    font-size: 23px;
  }
  .content-std .list-location .box .text p {
    height: 68px;
  }
  .content-std .list-location .box .text p.sub {
    height: auto;
    margin-bottom: 10px;
  }
  .content-std .box-contact .left h4 {
    font-size: 23px;
  }
  .content-std .box-contact .left p {
    font-size: 14px;
    line-height: 22px;
  }
  .content-std .price-type {
    margin-bottom: 30px;
  }
  .content-std .price-type .box {
    width: 200px;
    margin-bottom: 20px;
  }
  .content-std .price-type .box h5 {
    margin-top: 5px;
    font-size: 17px;
  }
  .content-std .price-type .box .head {
    height: 80px;
    padding: 22px 10px 0 18px;
    margin-bottom: 20px;
  }
  .content-std .price-type .box .head h4 {
    font-size: 18px;
  }
  .content-std .price-type .box .head small {
    font-size: 10px;
  }
  .content-std .price-type .box .price-box {
    margin-bottom: 15px;
  }
  .content-std .price-type .box .foot {
    padding: 20px 10px;
  }
  .content-std .accordion ul li, .content-std .accordion ol li {
    font-size: 16px;
  }
  .content-std .accordion p {
    font-size: 16px;
  }
  .content-std .accordion .h-acc {
    padding: 20px 70px 20px 20px;
  }
  .content-std .accordion .h-acc h5 {
    font-size: 18px;
  }
  .content-std .accordion .h-acc small {
    font-size: 14px;
  }
  .content-std .accordion .c-acc {
    padding: 20px 25px;
  }
  .content-std.account-page .wrapper {
    margin: 90px 20px 0px;
  }
  .content-std .box-register {
    margin-top: 70px;
  }
  .content-std .box-register .right {
    padding: 50px 30px;
  }
  .content-std .box-register .right .row-btn {
    margin-top: 35px;
  }
  .thanks-page {
    width: auto;
    margin: 200px 20px 100px;
  }
  .thanks-page .ico {
    width: 120px;
    height: 120px;
    margin-top: -65px;
  }
  .thanks-page .ico .ico-1 {
    width: 90px;
    top: -10px;
    right: -50px;
  }
  .thanks-page .ico .ico-2 {
    width: 62%;
  }
  .thanks-page .text {
    padding: 40px 30px;
  }
  .thanks-page .text h5 {
    font-size: 23px;
    margin-bottom: 20px;
  }
  .thanks-page .text p {
    font-size: 14px;
    line-height: 22px;
  }
  .thanks-page .text .wrap-btn {
    margin-top: 30px;
  }
  .pg_404 {
    width: auto;
    margin: 100px 20px 50px;
  }
  .pg_404 .ico {
    width: 150px;
    margin: auto;
  }
  .pg_404 .text {
    width: auto;
  }
  .pg_404 .text h5 {
    font-size: 23px;
    line-height: 30px;
    margin: 20px 0 20px;
  }
  .pg_404 .text p {
    font-size: 16px;
    line-height: 22px;
  }
  .pg_404 .text .bk_index {
    font-size: 16px;
    margin-top: 25px;
  }
  .src_result {
    width: auto;
    margin: 100px 20px 80px;
  }
  .src_form {
    margin-bottom: 30px;
  }
  .src_form form input[type="text"] {
    font-size: 14px;
  }
  .src_form form input[type="submit"] {
    width: 50px;
  }
  .wrap_src {
    width: auto;
  }
  .wrap_src h2 {
    font-size: 23px;
    line-height: 30px;
  }
  .wrap_src h6 {
    font-size: 16px;
    margin-bottom: 40px;
  }
  .wrap_src .list_src .item {
    padding-bottom: 30px;
    margin-bottom: 30px;
  }
  .wrap_src .list_src .item a h4 {
    font-size: 18px;
  }
  .wrap_src .list_src .item a p {
    font-size: 14px;
  }
  .sig-lst .ls-sig-lst {
    width: 100%;
  }
  .pagging a {
    font-size: 14px;
    padding: 0 6px 4px;
  }
  .pagging a.prev, .pagging a.next {
    width: 16px;
    height: 16px;
    background-size: 32px;
  }
  .box-signature .textsig span {
    font-size: 32px;
  }
  .button-group {
    flex-direction: column;
    gap: 5px 0;
  }
  /* popup
----------------------------------------------------------------------------------------------*/
  .wrap-popup .box-popup {
    margin: 10% 30px;
    width: auto;
  }
  .wrap-popup .box-popup h4 {
    font-size: 20px;
    margin-bottom: 20px;
    line-height: 24px;
  }
  .wrap-popup .box-popup .arrow-nav {
    width: 14px;
    background-size: 28px;
  }
  .wrap-popup .box-popup .arrow-nav.next {
    right: -22px;
  }
  .wrap-popup .box-popup .arrow-nav.prev {
    left: -22px;
  }
  .wrap-popup .box-popup a.close {
    width: 35px;
    height: 35px;
    background-size: 15px;
    top: -15px;
    right: -15px;
  }
  /* footer
----------------------------------------------------------------------------------------------*/
  footer {
    height: auto;
    padding-bottom: 15px;
  }
  footer .wrapper {
    width: auto;
    margin: 0 20px;
  }
  footer .left nav a {
    margin-bottom: 10px;
    display: inline-block;
  }
}

/* end media */
@media all and (max-width: 639px) {
  /* global
----------------------------------------------------------------------------------------------*/
  /* header
----------------------------------------------------------------------------------------------*/
  /* homepage
----------------------------------------------------------------------------------------------*/
  .banner-home .wrap-caption {
    margin-left: 25px;
  }
  .banner-home .caption h1, .banner-home .caption h2 {
    margin-bottom: 30px;
  }
  .banner-home .caption p {
    display: none;
  }
  .banner-home.banner-std caption p {
    display: block;
  }
  .home-sec.h-about .list-col .col {
    width: auto;
    margin-right: 0;
    float: none;
    display: block;
  }
  .home-sec.h-contact .box-form .row {
    margin: 0 0 25px;
  }
  .home-sec.h-contact .box-form .row .col {
    width: auto;
    display: block;
    margin-right: 0;
    float: none;
    margin-bottom: 25px;
  }
  /* middle
----------------------------------------------------------------------------------------------*/
  .content-std.about .list-col .col {
    display: block;
    width: auto;
    margin-right: 0;
    float: none;
    margin-bottom: 30px;
  }
  .content-std .service-room-list .box .wrap-btn a {
    display: block !important;
    margin: 0 auto 10px !important;
  }
  .content-std.buy-step .left-content .box-form {
    width: auto;
  }
  .content-std.buy-step .left-content .box-form .row.col-3 .col {
    width: 100%;
    margin-right: 0;
    margin-bottom: 30px;
  }
  .content-std.buy-step .left-content .box-form .row.col-3 .col:nth-child(2) {
    margin-right: 0;
  }
  .content-std.buy-step .left-content .box-form .row.col-3 .col:nth-child(3) {
    margin-bottom: 0;
  }
  .content-std.buy-step .left-content .box-form .row .col {
    width: 100%;
    float: none;
    margin-right: 0;
    margin-bottom: 30px;
  }
  .content-std.buy-step .btn-next {
    margin-top: 35px;
  }
  .content-std.buy-step .btn-next a, .content-std.buy-step .btn-next .btn-block {
    display: block;
    margin: 0 auto 20px !important;
    width: 100%;
  }
  .content-std .box-contact .box-form .row .col {
    width: 100%;
    float: none;
    display: block;
    margin-bottom: 25px;
  }
  .content-std .wrap_tbl {
    width: auto;
    overflow: hidden;
  }
  .content-std .wrap_tbl .std-table.facility {
    width: 100%;
    margin-bottom: 35px !important;
  }
  .content-std .wrap_tbl .std-table.facility thead {
    display: none;
  }
  .content-std .wrap_tbl .std-table.facility tbody td {
    display: block;
    width: 100% !important;
    text-align: left;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    white-space: normal;
    padding: 15px;
  }
  .content-std .wrap_tbl .std-table.facility tbody td span {
    display: block;
    margin-left: 200px;
  }
  .content-std .wrap_tbl .std-table.facility tbody td:before {
    content: attr(data-title);
    display: inline-block;
    float: left;
    width: 200px;
  }
  .content-std .wrap_tbl .std-table.facility tbody td:after {
    clear: both;
    display: block;
    content: '';
  }
  .content-std .wrap_tbl .std-table.facility tbody td:first-child {
    background: #333;
    color: #fff;
    padding-left: 20px;
  }
  .content-std .wrap_tbl .std-table.facility tbody td:first-child:before {
    display: none;
  }
  .content-std .wrap_tbl .std-table.facility tbody td:first-child span {
    float: none;
    margin-left: 0;
    line-height: 16px;
  }
  .content-std .wrap_tbl .std-table.facility tbody td:last-child {
    margin-bottom: 25px;
  }
  .content-std .wrap_tbl .std-table.facility.add_span tbody td:before {
    width: 130px;
  }
  .content-std .wrap_tbl .std-table.facility.add_span tbody td span {
    font-size: 16px;
    margin-left: 148px;
  }
  .content-std .wrap_tbl .std-table.facility.add_span tbody td:first-child span {
    margin-left: 0;
  }
  .content-std .support-facility .std-table thead {
    display: none;
  }
  .content-std .support-facility .std-table tbody td {
    display: block;
    position: relative;
    text-align: left;
    padding: 15px !important;
    font-size: 14px;
    line-height: 18px;
  }
  .content-std .support-facility .std-table tbody td:before {
    content: attr(data-title);
    display: block;
    position: relative;
    font-size: 14px;
    font-weight: 600;
    float: left;
    width: 130px;
  }
  .content-std .support-facility .std-table tbody td:after {
    content: ' ';
    display: block;
    clear: both;
  }
  .content-std .support-facility .std-table tbody td:last-child {
    margin-bottom: 30px;
  }
  .content-std .support-facility .std-table tbody td span {
    display: block;
    margin-left: 135px;
    position: relative;
    padding-left: 3px;
  }
  .content-std .support-facility .std-table tbody td span:before {
    content: ':';
    position: absolute;
    top: 0;
    left: -5px;
    display: inline-block;
  }
  .content-std .support-facility .right {
    padding: 30px 20px;
    width: auto;
  }
  .content-std.account-page .box-form .row .col {
    float: none;
    display: block;
    width: 100%;
    margin-bottom: 20px;
  }
  .content-std.content-detail .list-gallery .box {
    width: auto;
    display: block;
    float: none;
    margin: 0 0 20px;
  }
  .content-std .share-list {
    margin-bottom: 15px;
  }
  .opt-checkbox.md .item {
    float: none;
    margin-right: 0;
    margin-bottom: 30px;
  }
  .tagg {
    padding-left: 55px;
  }
  .tagg .lbl {
    font-size: 14px;
    top: 10px;
  }
  .tagg ul li {
    margin: 0 3px 4px;
  }
  .tagg ul li a {
    font-size: 14px;
  }
  /* popup
----------------------------------------------------------------------------------------------*/
  /* footer
----------------------------------------------------------------------------------------------*/
}

/* end media */
@media all and (max-width: 479px) {
  /* global
----------------------------------------------------------------------------------------------*/
  /* header
----------------------------------------------------------------------------------------------*/
  header .right .account-nav > a {
    font-size: 0px !important;
    padding: 0 20px;
    margin-top: 0;
  }
  header .right .account-nav > a:after {
    display: none;
  }
  header .right a.phone {
    padding-left: 34px;
  }
  /* homepage
----------------------------------------------------------------------------------------------*/
  .home-sec.h-prod .slider {
    width: auto;
    margin: 40px 15px 0;
  }
  .box-form .g-recaptcha {
    transform: scale(0.85);
    -webkit-transform: scale(0.85);
    -moz-transform: scale(0.85);
    -ms-transform: scale(0.85);
    -o-transform: scale(0.85);
    position: relative;
    margin-left: -22px;
  }
  /* middle
----------------------------------------------------------------------------------------------*/
  .banner-home .caption {
    max-width: none;
    right: 20px;
  }
  .content-std .list-prod .box {
    float: none;
    display: block;
    width: auto;
    margin-right: 0;
  }
  .content-std .list-prod .box:nth-of-type(3n) {
    margin-right: 0;
  }
  .content-std .list-prod .box p {
    height: auto;
  }
  .content-std .list-prod.news .box h4 {
    height: auto;
  }
  .content-std.buy-step .box-form {
    width: auto;
  }
  .content-std.buy-step .box-form .col {
    width: auto;
    margin-right: 0;
    float: none;
    display: block;
    margin-bottom: 30px;
  }
  .content-std.buy-step .box-form .col:nth-of-type(2) {
    margin-right: 0;
  }
  .content-std.buy-step .wrap-step .box .ico {
    width: 42px;
    height: 42px;
  }
  .content-std.buy-step .wrap-step .box .ico span {
    width: 42px;
    height: 42px;
    background-size: 42px !important;
  }
  .content-std.buy-step .wrap-step .box:after {
    top: 19px;
  }
  .content-std.buy-step .box-red .box .left, .content-std.buy-step .box-red .box .right {
    width: auto;
    display: block;
    float: none;
    text-align: left;
  }
  .content-std.buy-step .box-red .box .left {
    font-size: 14px;
  }
  .content-std.buy-step .box-red .box .left small {
    margin-top: 10px;
  }
  .content-std.buy-step .box-red .box .right {
    margin-top: 20px;
    font-size: 18px;
  }
  .content-std.buy-step .box-red .box .right small {
    font-size: 12px;
  }
  .content-std.buy-step .payment-option a {
    width: auto;
    margin-right: 0;
    display: block;
    float: none;
    margin-bottom: 20px;
    height: 160px;
  }
  .content-std.buy-step .payment-option a:nth-child(2n) {
    margin-right: 0;
  }
  .content-std.buy-step .payment-option a span.ico {
    width: 80px;
    height: 54px;
    background-size: 81px !important;
    top: 35px;
  }
  .content-std.buy-step .payment-option a span.text {
    font-size: 16px;
    bottom: 34px;
  }
  .tagg {
    padding-left: 0px;
  }
  .tagg .lbl {
    font-size: 14px;
    top: 0;
    position: relative;
    margin-bottom: 10px;
    display: block;
  }
  .ui-datepicker {
    width: 21em;
  }
  /* popup
----------------------------------------------------------------------------------------------*/
  /* footer
----------------------------------------------------------------------------------------------*/
}

/* end media */

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWFfbW9iaWxlLmNzcyIsInNvdXJjZXMiOlsibWVkaWFfbW9iaWxlLnNjc3MiLCJzYXNzLWxpYi5zY3NzIiwiYm91cmJvbi9fYm91cmJvbi5zY3NzIiwiYm91cmJvbi9zZXR0aW5ncy9fcHJlZml4ZXIuc2NzcyIsImJvdXJib24vc2V0dGluZ3MvX3B4LXRvLWVtLnNjc3MiLCJib3VyYm9uL3NldHRpbmdzL19hc3NldC1waXBlbGluZS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2Fzc2lnbi1pbnB1dHMuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19jb250YWlucy5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2NvbnRhaW5zLWZhbHN5LnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9faXMtbGVuZ3RoLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9faXMtbGlnaHQuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19pcy1udW1iZXIuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19pcy1zaXplLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fcHgtdG8tZW0uc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19weC10by1yZW0uc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19zaGFkZS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3N0cmlwLXVuaXRzLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fdGludC5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3RyYW5zaXRpb24tcHJvcGVydHktbmFtZS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3VucGFjay5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX21vZHVsYXItc2NhbGUuc2NzcyIsImJvdXJib24vaGVscGVycy9fY29udmVydC11bml0cy5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19kaXJlY3Rpb25hbC12YWx1ZXMuc2NzcyIsImJvdXJib24vaGVscGVycy9fZm9udC1zb3VyY2UtZGVjbGFyYXRpb24uc2NzcyIsImJvdXJib24vaGVscGVycy9fZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19saW5lYXItYW5nbGUtcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX2xpbmVhci1ncmFkaWVudC1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19yYWRpYWwtYXJnLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19yYWRpYWwtcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19yYWRpYWwtZ3JhZGllbnQtcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX3JlbmRlci1ncmFkaWVudHMuc2NzcyIsImJvdXJib24vaGVscGVycy9fc2hhcGUtc2l6ZS1zdHJpcHBlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19zdHItdG8tbnVtLnNjc3MiLCJib3VyYm9uL2NzczMvX2FuaW1hdGlvbi5zY3NzIiwiYm91cmJvbi9jc3MzL19hcHBlYXJhbmNlLnNjc3MiLCJib3VyYm9uL2NzczMvX2JhY2tmYWNlLXZpc2liaWxpdHkuc2NzcyIsImJvdXJib24vY3NzMy9fYmFja2dyb3VuZC5zY3NzIiwiYm91cmJvbi9jc3MzL19iYWNrZ3JvdW5kLWltYWdlLnNjc3MiLCJib3VyYm9uL2NzczMvX2JvcmRlci1pbWFnZS5zY3NzIiwiYm91cmJvbi9jc3MzL19jYWxjLnNjc3MiLCJib3VyYm9uL2NzczMvX2NvbHVtbnMuc2NzcyIsImJvdXJib24vY3NzMy9fZmlsdGVyLnNjc3MiLCJib3VyYm9uL2NzczMvX2ZsZXgtYm94LnNjc3MiLCJib3VyYm9uL2NzczMvX2ZvbnQtZmFjZS5zY3NzIiwiYm91cmJvbi9jc3MzL19mb250LWZlYXR1cmUtc2V0dGluZ3Muc2NzcyIsImJvdXJib24vY3NzMy9faGlkcGktbWVkaWEtcXVlcnkuc2NzcyIsImJvdXJib24vY3NzMy9faHlwaGVucy5zY3NzIiwiYm91cmJvbi9jc3MzL19pbWFnZS1yZW5kZXJpbmcuc2NzcyIsImJvdXJib24vY3NzMy9fa2V5ZnJhbWVzLnNjc3MiLCJib3VyYm9uL2NzczMvX2xpbmVhci1ncmFkaWVudC5zY3NzIiwiYm91cmJvbi9jc3MzL19wZXJzcGVjdGl2ZS5zY3NzIiwiYm91cmJvbi9jc3MzL19wbGFjZWhvbGRlci5zY3NzIiwiYm91cmJvbi9jc3MzL19yYWRpYWwtZ3JhZGllbnQuc2NzcyIsImJvdXJib24vY3NzMy9fc2VsZWN0aW9uLnNjc3MiLCJib3VyYm9uL2NzczMvX3RleHQtZGVjb3JhdGlvbi5zY3NzIiwiYm91cmJvbi9jc3MzL190cmFuc2Zvcm0uc2NzcyIsImJvdXJib24vY3NzMy9fdHJhbnNpdGlvbi5zY3NzIiwiYm91cmJvbi9jc3MzL191c2VyLXNlbGVjdC5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2JvcmRlci1jb2xvci5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2JvcmRlci1yYWRpdXMuc2NzcyIsImJvdXJib24vYWRkb25zL19ib3JkZXItc3R5bGUuc2NzcyIsImJvdXJib24vYWRkb25zL19ib3JkZXItd2lkdGguc2NzcyIsImJvdXJib24vYWRkb25zL19idXR0b25zLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fY2xlYXJmaXguc2NzcyIsImJvdXJib24vYWRkb25zL19lbGxpcHNpcy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2ZvbnQtc3RhY2tzLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9faGlkZS10ZXh0LnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fbWFyZ2luLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fcGFkZGluZy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3Bvc2l0aW9uLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fcHJlZml4ZXIuc2NzcyIsImJvdXJib24vYWRkb25zL19yZXRpbmEtaW1hZ2Uuc2NzcyIsImJvdXJib24vYWRkb25zL19zaXplLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fdGV4dC1pbnB1dHMuc2NzcyIsImJvdXJib24vYWRkb25zL190aW1pbmctZnVuY3Rpb25zLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fdHJpYW5nbGUuc2NzcyIsImJvdXJib24vYWRkb25zL193b3JkLXdyYXAuc2NzcyIsImJvdXJib24vX2JvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZy5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBcclxuICAgIENvbXBhbnkgICAgOiBQVCBXZWIgQXJjaGl0ZWN0IFRlY2hub2xvZ3kgLSB3ZWJhcnEuY29tXHJcbiAgICBEb2N1bWVudCAgIDogU3R5bGVzaGVldFxyXG4gICAgQXV0aG9yICAgICA6IEhhcmxhblxyXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cclxuXHJcbkBpbXBvcnQgXCJzYXNzLWxpYlwiO1xyXG5cclxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcclxuXHJcbi8qIGdsb2JhbFxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuLmJ0bi1wbHVzIHtcclxuXHRoZWlnaHQ6IDQwcHg7IGxpbmUtaGVpZ2h0OiA0MHB4OyB3aWR0aDogNDBweDtcclxuXHRzcGFuIHtoZWlnaHQ6IDQwcHg7IGxpbmUtaGVpZ2h0OiA0MnB4O31cclxufVxyXG4uYnRuLWJsb2NrIHtcclxuXHRoZWlnaHQ6IDQwcHg7IGxpbmUtaGVpZ2h0OiA0MXB4OyBmb250LXNpemU6IDE0cHg7XHJcblx0Ji5kb3dubG9hZC1idG46YmVmb3JlIHtoZWlnaHQ6IDQwcHg7fVxyXG59XHJcbi5idG4tYm9yZGVyIHtoZWlnaHQ6IDQwcHg7IGxpbmUtaGVpZ2h0OiAzOHB4O31cclxuXHJcbi8qIGhlYWRlclxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuaGVhZGVyIHtcclxuXHRoZWlnaHQ6IDYwcHg7XHJcblx0LmxvZ28ge21hcmdpbi1sZWZ0OiA2MHB4OyB3aWR0aDogMTE1cHg7fVxyXG5cdC5yaWdodCB7XHJcblx0XHRhIHtcclxuXHRcdFx0Zm9udC1zaXplOiAwICFpbXBvcnRhbnQ7XHJcblx0XHRcdCYuYnRuIHtcclxuXHRcdFx0XHR3aWR0aDogNTBweDsgXHJcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDYwcHg7IFxyXG5cdFx0XHRcdGhlaWdodDogNjBweDsgXHJcblx0XHRcdFx0JjphZnRlcntcclxuXHRcdFx0XHRcdGxlZnQ6IDEycHg7IFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHQmLnBob25lLCAmLm9ubGluZS1wYXltZW50IHtcclxuXHRcdFx0XHRtYXJnaW46IDE4cHggMTVweCAwIDA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuICAgIC5hY2NvdW50LW5hdiB7XHJcbiAgICAgIC5kcm9wIHtcclxuICAgICAgICBsZWZ0OiAtMTM1cHg7IFxyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgIHdpZHRoOiAyMDBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cdH1cclxuXHQmOmFmdGVyIHtsZWZ0OiA1MHB4O31cdFx0XHJcblx0LmhlYWRlci1yaWdodCB7XHJcblx0XHQuaGVhZGVyLXRvcCB7XHJcblx0XHRcdC5yaWdodCB7XHJcblx0XHRcdFx0ZGlzcGxheTogZmxleDsgXHJcblx0XHRcdFx0YSB7XHJcblx0XHRcdFx0XHQmLnBob25lIHtcclxuXHRcdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0LnBob25lLW1vYmlsZSB7XHJcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IFxyXG5cdFx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlIDtcclxuXHRcdFx0XHRcdG1hcmdpbjogMThweCAxNXB4IDAgMDsgXHJcblx0XHRcdFx0XHQuaWNvbiB7XHJcblx0XHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHRcdFx0XHR3aWR0aDogMjZweDtcclxuXHRcdFx0XHRcdFx0aGVpZ2h0OiAyNnB4O1xyXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltYWdlcy9tYXRlcmlhbC9waG9uZS1pY28ucG5nJykgbm8tcmVwZWF0IGxlZnQgY2VudGVyO1xyXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLXNpemU6IDIwcHg7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQuZHJvcGRvd24tcGhvbmUge1xyXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7IFxyXG5cdFx0XHRcdFx0XHR0b3A6IDEwMCU7XHJcblx0XHRcdFx0XHRcdGxlZnQ6IDUwJTsgXHJcblx0XHRcdFx0XHRcdHdpZHRoOiAyNDBweDtcclxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogI0ZGRkZGRjsgXHJcblx0XHRcdFx0XHRcdGJveC1zaGFkb3c6IDBweCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG5cdFx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiAwcHggMHB4IDEycHggMTJweDtcclxuXHRcdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOyBcclxuXHRcdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IC0zMHB4O1xyXG5cdFx0XHRcdFx0XHRwYWRkaW5nOiA0cHggMTZweCAyMHB4OyBcclxuXHRcdFx0XHRcdFx0ZGlzcGxheTogbm9uZTsgXHJcblx0XHRcdFx0XHRcdGEge1xyXG5cdFx0XHRcdFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XHRcdFx0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHRcdFx0Ji5waG9uZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdFx0XHRcdFx0XHRcdGNvbG9yOiAjNjY2O1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAxNnB4IDAgMTZweCAyOHB4OyBcclxuXHRcdFx0XHRcdFx0XHRcdG1hcmdpbjogMDsgXHJcblx0XHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDE4cHg7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdCY6bGFzdC1jaGlsZCB7XHJcblx0XHRcdFx0XHRcdFx0XHRib3JkZXItYm90dG9tOiAwOyBcclxuXHRcdFx0XHRcdFx0XHRcdHBhZGRpbmctYm90dG9tOiAwOyBcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gXHJcblx0XHRcdFx0XHR9IFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4ub3B0LWNoZWNrYm94e1xyXG5cdCYubWR7XHJcblx0XHQuaXRlbXtcclxuXHRcdFx0bGFiZWx7cGFkZGluZzogOHB4IDI1cHg7fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4uYnVyZ2VyLW1lbnUge1xyXG5cdHdpZHRoOiAzMHB4OyB0b3A6IDIwcHg7IGxlZnQ6IDEwcHg7IGhlaWdodDogMjFweDtcclxuXHQmLmFjdGl2ZSBzcGFuOm50aC1jaGlsZCgxKSB7dG9wOiA2cHg7fVxyXG59XHJcbi5zaWRlLW1lbnUge1xyXG5cdHBhZGRpbmc6IDYwcHggMzVweCAxNXB4OyB3aWR0aDogMzIwcHg7XHJcblx0LndyYXBfbm0ge3BhZGRpbmctdG9wOiAzMHB4O31cclxuXHRuYXYge1xyXG5cdFx0YSB7Zm9udC1zaXplOiAxOHB4OyBtYXJnaW4tYm90dG9tOiAxNXB4O31cclxuXHR9XHJcblx0LnNlYXJjaCB7XHJcblx0XHRtYXJnaW4tdG9wOiAzMHB4O1xyXG5cdFx0aW5wdXQge2ZvbnQtc2l6ZTogMTRweDsgYmFja2dyb3VuZC1zaXplOiAxNnB4OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCBjZW50ZXI7fVxyXG5cdH1cclxuXHQubGFuZyB7bWFyZ2luLXRvcDogMjVweDt9XHJcbn1cclxuXHJcbi8qIGhvbWVwYWdlXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4uYmFubmVyLWhvbWUge1xyXG5cdG1hcmdpbi10b3A6IDYwcHg7IHBhZGRpbmctbGVmdDogMDsgYmFja2dyb3VuZDogI2ZmZjsgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHQmLmJhbm5lci1zdGQge1xyXG5cdFx0bWFyZ2luLXRvcDogNjBweDsgXHJcblx0fVxyXG5cdC5zbGljay1kb3RzIHtkaXNwbGF5OiBub25lO31cclxuXHRhLnNjcm9sbC1kb3duIHtkaXNwbGF5OiBub25lO31cclxuXHQuY2FwdGlvbiB7XHJcblx0XHR3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyBtYXgtd2lkdGg6IDM0MHB4O1xyXG5cdFx0aDEge2ZvbnQtc2l6ZTogMjhweDsgbGluZS1oZWlnaHQ6IDM0cHg7IG1hcmdpbi1ib3R0b206IDE1cHg7fVxyXG5cdFx0YSB7aGVpZ2h0OiA0MHB4OyBsaW5lLWhlaWdodDogNDBweDsgZm9udC1zaXplOiAxNHB4O31cclxuXHRcdHAge2xpbmUtaGVpZ2h0OiAyMnB4O31cclxuXHR9XHJcblx0Ji5iYW5uZXItc3RkIHtcclxuXHRcdC5sb2NhdGlvbi1yaWdodCB7cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogYXV0bzsgcGFkZGluZzogMzBweCAyMHB4OyBkaXNwbGF5OiBub25lO31cclxuXHRcdC5tYXAtbG9jYXRpb24ge1xyXG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAwOyBoZWlnaHQ6IDQyMHB4O1xyXG5cdFx0XHQ+IGRpdiB7aGVpZ2h0OiA0MjBweDt9IFxyXG5cdFx0fVxyXG5cdFx0LmNhcHRpb24ge1xyXG5cdFx0XHRib3R0b206IDI1cHg7IHRvcDogYXV0bzsgaGVpZ2h0OiBhdXRvOyB0b3A6IGF1dG87XHJcblx0XHRcdGgxIHttYXJnaW4tYm90dG9tOiAxNXB4OyBmb250LXNpemU6IDI4cHg7IGxpbmUtaGVpZ2h0OiAzMHB4OyBtYXJnaW4tYm90dG9tOiAwO31cclxuXHRcdFx0cCB7ZGlzcGxheTogYmxvY2s7IG1hcmdpbi1ib3R0b206IDA7IGRpc3BsYXk6IG5vbmU7fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQmLmxvY2F0aW9uIHtoZWlnaHQ6IDQyMHB4O31cclxufVxyXG5cclxuLmhvbWUtc2VjIHtcclxuXHQud3JhcHBlciB7d2lkdGg6IGF1dG87IG1hcmdpbjogMCAyMHB4O31cclxuXHRwIHtmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAyMnB4O31cclxuXHQmLmgtYWJvdXQge1xyXG5cdFx0YmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50O3BhZGRpbmc6IDMwcHggMDtcclxuXHRcdC5sZWZ0LCAucmlnaHQge2Zsb2F0OiBub25lOyAgZGlzcGxheTogYmxvY2s7IHdpZHRoOiBhdXRvO31cclxuXHRcdC5sZWZ0IHtcclxuXHRcdFx0aDIge1xyXG5cdFx0XHRcdHRleHQtYWxpZ246IGxlZnQ7IGZvbnQtc2l6ZTogMjNweDtcclxuXHRcdFx0XHRiciB7ZGlzcGxheTogbm9uZTt9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC5saXN0LWNvbCB7XHJcblx0XHRcdC5jb2wge1xyXG5cdFx0XHRcdHdpZHRoOiA0NiU7IG1hcmdpbi1yaWdodDogOCU7XHJcblx0XHRcdFx0aDUge2ZvbnQtc2l6ZTogMTZweDt9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0Ji5oLXByb2Qge1xyXG5cdFx0LndyYXBwZXIge2Rpc3BsYXk6IC13ZWJraXQtYm94O2Rpc3BsYXk6IC1tb3otYm94O2Rpc3BsYXk6IC1tcy1mbGV4Ym94O2Rpc3BsYXk6IC13ZWJraXQtZmxleDsgZGlzcGxheTogZmxleDsgZmxleC1mbG93OiBjb2x1bW47IC13ZWJraXQtZmxleC1mbG93OiBjb2x1bW47IC1tb3otZmxleC1mbG93OiBjb2x1bW47XHJcbiAgICAgICAgLW1zLWZsZXgtZmxvdzogY29sdW1uOyAtby1mbGV4LWZsb3c6IGNvbHVtbjsgd2lkdGg6IGF1dG87IG1hcmdpbjogMCAyMHB4O31cclxuXHRcdC5zbGlkZXIge1xyXG5cdFx0XHRvcmRlcjogMjsgLXdlYmtpdC1vcmRlcjogMjsgLW1vei1vcmRlcjogMjsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAzNDBweDsgZmxvYXQ6IG5vbmU7IG1hcmdpbjogNTBweCBhdXRvIDA7XHJcblx0XHRcdC5ib3gge1xyXG5cdFx0XHRcdG1hcmdpbjogMDtcclxuXHRcdFx0XHQ+IGltZyB7d2lkdGg6IDEwMCU7fVxyXG5cdFx0XHRcdCY6aG92ZXIge1xyXG5cdFx0XHRcdFx0cCB7aGVpZ2h0OiA2NXB4O31cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0LnRleHQge1xyXG5cdFx0XHRcdC5idG4ge2xlZnQ6IC0yNyU7fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQucmlnaHQge1xyXG5cdFx0XHRvcmRlcjogMTsgLXdlYmtpdC1vcmRlcjogMTsgLW1vei1vcmRlcjogMTtkaXNwbGF5OiBibG9jazsgZmxvYXQ6IG5vbmU7IHdpZHRoOiBhdXRvOyBwYWRkaW5nLXRvcDogMDtcclxuXHRcdFx0cCB7bWF4LWhlaWdodDogbm9uZTt9XHJcblx0XHR9XHJcblx0fVxyXG5cdCYuaC11cGRhdGVzIHtcclxuXHRcdHBhZGRpbmc6IDMwcHggMDtcclxuXHRcdC5saXN0IHtcclxuXHRcdFx0LmJveCB7XHJcblx0XHRcdFx0ZmxvYXQ6IG5vbmU7IHdpZHRoOiBhdXRvOyBkaXNwbGF5OiBibG9jazsgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuXHRcdFx0XHRoNiB7cGFkZGluZy1ib3R0b206IDE1cHg7IGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgI2NjYzsgbWFyZ2luLWJvdHRvbTogMTBweDsgZm9udC1zaXplOiAxOHB4OyBoZWlnaHQ6IGF1dG87fVxyXG5cdFx0XHRcdHNtYWxsIHtkaXNwbGF5OiBub25lO31cclxuXHRcdFx0XHRwIHtwYWRkaW5nLXRvcDogMDsgYm9yZGVyOiBub25lO31cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQmLmgtdGVzdGkge1xyXG5cdFx0LnNsaWRlciB7bWFyZ2luLXRvcDogNDBweDt9XHJcblx0XHQuYm94IHttaW4taGVpZ2h0OiAwOyBtYXJnaW46IDA7fVxyXG5cdFx0LnNsaWNrLWRvdHMge3RvcDogLTI1cHg7fVxyXG5cdH1cclxufVxyXG5cclxuXHJcbi5ib3gtZm9ybSB7XHJcblx0bGFiZWwge2ZvbnQtc2l6ZTogMTRweDsgbWFyZ2luLWJvdHRvbTogNXB4O31cclxuXHQucm93IHttYXJnaW4tYm90dG9tOiAzMHB4O31cclxuXHRpbnB1dFt0eXBlPXRleHRdLCBpbnB1dFt0eXBlPXBhc3N3b3JkXSwgaW5wdXRbdHlwZT1udW1iZXJdLCBpbnB1dFt0eXBlPWVtYWlsXSwgc2VsZWN0LCBcclxuXHR0ZXh0YXJlYSwgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgeyBmb250LXNpemU6IDE0cHg7fVxyXG5cdC5pbnB1dF9maWxlIHtcclxuXHRcdHNwYW4ge2ZvbnQtc2l6ZTogMTRweDt9XHJcblx0fVxyXG59XHJcbi8qIG1pZGRsZVxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuLmNvbnRlbnQtc3RkIHtcclxuXHRwYWRkaW5nOiAzNXB4IDAgODBweDtcclxuXHRoMixoMyB7Zm9udC1zaXplOiAyM3B4OyBsaW5lLWhlaWdodDogMzBweDt9XHJcblx0dWwge1xyXG5cdFx0bGk6YWZ0ZXIge3RvcDogN3B4O31cclxuXHR9XHJcblx0LndyYXBwZXIge3dpZHRoOiBhdXRvOyBtYXJnaW46IDAgMjBweDt9XHJcblx0cCB7XHJcblx0XHRmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAyMnB4O1xyXG5cdFx0Ji5zdWIge2ZvbnQtc2l6ZTogMTZweDsgbGluZS1oZWlnaHQ6IDI0cHg7fVxyXG5cdH1cclxuXHQuZGF0ZS1saXN0e21hcmdpbi1ib3R0b206IDEwcHg7Zm9udC1zaXplOiAxM3B4O2xpbmUtaGVpZ2h0OiAxNnB4O21heC1oZWlnaHQ6IDE2cHg7fVxyXG5cdCYuZmFxIHtwYWRkaW5nLXRvcDogMjVweDt9XHJcblx0Ji5hYm91dCB7XHJcblx0XHRwYWRkaW5nLXRvcDogMzVweDsgcGFkZGluZy1ib3R0b206IDgwcHg7XHJcblx0XHRoMixoMyB7Zm9udC1zaXplOiAyM3B4OyBsaW5lLWhlaWdodDogMzBweDt9XHJcblx0XHQubGlzdC1jb2wge1xyXG5cdFx0XHQuY29sIHtcclxuXHRcdFx0XHRoNSB7Zm9udC1zaXplOiAxNnB4O31cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQubGlzdC1wcm9kIHtcclxuXHRcdG1hcmdpbi10b3A6IDQwcHg7XHJcblx0XHQuYm94IHtcclxuXHRcdFx0LnRleHQge3BhZGRpbmctYm90dG9tOiAyMHB4O31cclxuXHRcdFx0aDUge2ZvbnQtc2l6ZTogMjNweDtsaW5lLWhlaWdodDogMjhweDt9XHJcblx0XHRcdGg0IHtmb250LXNpemU6IDE4cHg7IG1hcmdpbi1ib3R0b206IDIwcHg7IGxpbmUtaGVpZ2h0OiAyMnB4O31cclxuXHRcdFx0aDYge2ZvbnQtc2l6ZTogMThweDsgbWFyZ2luLWJvdHRvbTogMTJweDt9XHJcblx0XHRcdHAgeyBtYXgtaGVpZ2h0OiA2NnB4OyBvdmVyZmxvdzogaGlkZGVuO3RleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyBkaXNwbGF5OiBibG9jazsgLXdlYmtpdC1saW5lLWNsYW1wOiAzOyAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO31cclxuXHRcdH1cclxuXHRcdCYubmV3cyAuYm94IHtcclxuXHRcdFx0aDQge2hlaWdodDogNjZweDt9XHJcblx0XHRcdC5idG4tcGx1cyB7bWFyZ2luLWJvdHRvbTogLTQwcHg7fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQmLmNvbnRlbnQtZGV0YWlsIHtcclxuXHRcdC53cmFwcGVyIHt3aWR0aDogYXV0bzsgbWFyZ2luOiAwIDIwcHg7fVxyXG5cdFx0dWwsb2wsbGkge2ZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDI0cHg7fVxyXG5cdFx0LmltYWdlLXNsaWRlciwuaW1hZ2UtY29udGVudCAge1xyXG5cdFx0XHQuc2xpY2stZG90cyB7Ym90dG9tOiA1cHg7fVxyXG5cdFx0fVxyXG5cdFx0LmFycl9kcm9wIHtcclxuXHRcdFx0ZGlzcGxheTogYmxvY2s7IHBhZGRpbmc6IDEwcHggMTVweCA4cHg7IGJvcmRlcjogMXB4IHNvbGlkICMzMzM7IGZvbnQtc2l6ZTogMThweDsgY29sb3I6ICMzMzM7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC13ZWlnaHQ6IDYwMDsgbGluZS1oZWlnaHQ6IDIwcHg7XHJcblx0XHRcdCY6YWZ0ZXIge1xyXG5cdFx0XHRcdGNvbnRlbnQ6Jyc7IGJvcmRlci10b3A6IDZweCAgc29saWQgIzMzMzsgYm9yZGVyLWxlZnQ6IDZweCAgc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDogNnB4ICBzb2xpZCB0cmFuc3BhcmVudDsgd2lkdGg6IDA7XHJcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDIwcHg7IHRvcDogMTZweDtcclxuXHRcdFx0fVxyXG5cdFx0XHQrIC5uYXYtc3ViIHtcclxuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjMzMzOyBib3JkZXItdG9wOiAwOyBkaXNwbGF5OiBub25lO1xyXG5cdFx0XHRcdGEge2Rpc3BsYXk6IGJsb2NrOyB0ZXh0LWFsaWduOiBsZWZ0OyBwYWRkaW5nOiAxMnB4IDE1cHg7IGZvbnQtc2l6ZTogMTZweDt9XHJcblx0XHRcdFx0PiBzcGFuIHtkaXNwbGF5OiBub25lO31cclxuXHRcdFx0XHQrIC5pbWFnZS1jb250ZW50IHttYXJnaW4tdG9wOiA0MHB4O31cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Lmxpc3QtZ2FsbGVyeSB7bWFyZ2luLXRvcDogNDBweDt9XHJcblx0XHQuYm94LWlucXVpcnkge2Rpc3BsYXk6IG5vbmU7fVxyXG5cdH1cclxuXHQuc2VydmljZS1yb29tLWxpc3Qge1xyXG5cdFx0LmJveCB7XHJcblx0XHRcdC5pbWcge1xyXG5cdFx0XHRcdG1heC13aWR0aDogMzIwcHg7IG1hcmdpbjogMCAwIDMwcHg7IGZsb2F0OiBub25lOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IGF1dG87XHJcblx0XHRcdFx0aDUge2ZvbnQtc2l6ZTogMjZweDt9XHJcblx0XHRcdFx0c21hbGwge2ZvbnQtc2l6ZTogMThweDt9XHJcblx0XHRcdH1cclxuXHRcdFx0LnRleHQge2Zsb2F0OiBub25lOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IGF1dG87IG1hcmdpbi1sZWZ0OiAwO31cclxuXHRcdFx0LndyYXAtYnRuIHtmbG9hdDogbm9uZTsgZGlzcGxheTogYmxvY2s7ICB3aWR0aDogYXV0bzsgbWFyZ2luLWxlZnQ6IDA7fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQmLmJ1eS1zdGVwIHtcclxuXHRcdC53cmFwcGVyIHt3aWR0aDogYXV0bzsgbWFyZ2luOiAwIDIwcHg7fVxyXG5cdFx0LndyYXAtc3RlcCB7XHJcblx0XHRcdC5ib3gge1xyXG5cdFx0XHRcdC5pY28ge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDtcclxuXHRcdFx0XHRcdHNwYW4ge3dpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQtc2l6ZTogNTBweCAhaW1wb3J0YW50O31cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aDYge2Rpc3BsYXk6IG5vbmU7fVxyXG5cdFx0XHRcdCY6YWZ0ZXIge2hlaWdodDogNXB4OyB0b3A6IDIycHg7fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQuYm94LWZvcm0ge1xyXG5cdFx0XHR3aWR0aDogYXV0bztcclxuXHRcdFx0LmNvbCB7XHJcblx0XHRcdFx0d2lkdGg6IDQ2JTsgbWFyZ2luLXJpZ2h0OiA4JTtcclxuXHRcdFx0XHQmOm50aC1vZi10eXBlKDIpIHttYXJnaW4tcmlnaHQ6IDA7fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQubGVmdC1jb250ZW50IHtcclxuXHRcdFx0aDMge1xyXG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiAzMHB4O1xyXG5cdFx0XHRcdCY6YWZ0ZXIge2hlaWdodDogYXV0bzsgYm90dG9tOiAwO31cclxuXHRcdFx0fVxyXG5cdFx0XHQuYm94LWZvcm0ge1xyXG5cdFx0XHRcdHdpZHRoOiBhdXRvO1xyXG5cdFx0XHRcdC5yb3cge1xyXG5cdFx0XHRcdFx0Ji5jb2wtMyB7XHJcblx0XHRcdFx0XHRcdC5jb2wge1xyXG5cdFx0XHRcdFx0XHRcdHdpZHRoOiA0NSU7IG1hcmdpbi1yaWdodDogMTAlOyBtYXJnaW4tYm90dG9tOiAyNXB4O1xyXG5cdFx0XHRcdFx0XHRcdCY6bnRoLWNoaWxkKDIpIHttYXJnaW4tcmlnaHQ6IDA7fVxyXG5cdFx0XHRcdFx0XHRcdCY6bnRoLWNoaWxkKDMpIHttYXJnaW4tYm90dG9tOiAwO31cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0LnJpZ2h0LWNvbnRlbnQge1xyXG5cdFx0XHQmLmZpeGVkd3Age1xyXG5cdFx0XHRcdHRvcDogNjBweDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0LmJveC1yZWQge1xyXG5cdFx0XHQuYm94IHtcclxuXHRcdFx0XHRwYWRkaW5nOiAyNXB4IDE1cHg7XHJcblx0XHRcdFx0aDYge21hcmdpbi1ib3R0b206IDEwcHg7fVxyXG5cdFx0XHRcdC5sZWZ0IHtcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTZweDtcclxuXHRcdFx0XHRcdHNtYWxsIHtmb250LXNpemU6IDEycHg7fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHQmLmdyZXktdHlwZSB7XHJcblx0XHRcdFx0bWFyZ2luLXRvcDogMTVweDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0LmJ0bi1uZXh0IHttYXJnaW4tdG9wOiAzNXB4O31cclxuXHRcdC5wYXltZW50LW9wdGlvbiB7XHJcblx0XHRcdG1hcmdpbi1ib3R0b206IDYwcHg7XHJcblx0XHRcdGEge1xyXG5cdFx0XHRcdHdpZHRoOiA0OCU7IG1hcmdpbi1yaWdodDogNCU7IEBpbmNsdWRlIGJveFNpemluZyhib3JkZXItYm94KTtcclxuXHRcdFx0XHQmOm50aC1jaGlsZCgybikge21hcmdpbi1yaWdodDogMDt9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC5wYXltZW50LWRldGFpbCB7XHJcblx0XHRcdC5ib3gtaW5uZXIge1xyXG5cdFx0XHRcdG1hcmdpbjogMzBweCAwICAyMHB4IDIwcHg7XHJcblx0XHRcdFx0cCB7Zm9udC1zaXplOiAxNnB4OyBsaW5lLWhlaWdodDogMjJweDsgbWFyZ2luLWJvdHRvbTogMTVweDt9XHJcblx0XHRcdFx0dGFibGUge1xyXG5cdFx0XHRcdFx0dGQge2ZvbnQtc2l6ZTogMTZweDt9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdC5jb3VudGVyLW51bSB7bWFyZ2luOiBhdXRvO31cclxuXHQudGJsLXN0ZCB7XHJcblx0XHR0aGVhZCB7ZGlzcGxheTogbm9uZTt9XHJcblx0XHR0Ym9keSB7XHJcblx0XHRcdHRyIHtcclxuXHRcdFx0XHR0ZCB7XHJcblx0XHRcdFx0XHRkaXNwbGF5OiBibG9jazsgcGFkZGluZzogMCAyMHB4IDE1cHggIWltcG9ydGFudDsgdGV4dC1hbGlnbjogY2VudGVyOyBib3JkZXItcmlnaHQtY29sb3I6ICNjY2M7IGZvbnQtc2l6ZTogMTZweDsgYm9yZGVyLWJvdHRvbTogbm9uZTtcclxuXHRcdFx0XHRcdCY6YmVmb3JlIHtcclxuXHRcdFx0XHRcdFx0Y29udGVudDphdHRyKGRhdGEtdGl0bGUpOyBkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBibG9jazsgcGFkZGluZzogMTBweCAyMHB4OyBiYWNrZ3JvdW5kOiAjZTFlMWUxO1xyXG5cdFx0XHRcdFx0XHRmb250LXNpemU6IDE2cHg7IG1hcmdpbjogMCAtMjBweCAyMHB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzMzMztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdCY6Zmlyc3QtY2hpbGQge1xyXG5cdFx0XHRcdFx0XHRtYXgtd2lkdGg6IG5vbmU7XHJcblx0XHRcdFx0XHRcdCY6YWZ0ZXIge2Rpc3BsYXk6IG5vbmU7fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcclxuXHRcdFx0XHRcdFx0cGFkZGluZzogMCAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOiAzNXB4OyBib3JkZXItdG9wOiBub25lO1xyXG5cdFx0XHRcdFx0XHQmOmJlZm9yZSB7ZGlzcGxheTogbm9uZTt9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQuZGVsZXRlIHt0ZXh0LWluZGVudDogMDsgYmFja2dyb3VuZDogIzlmOWY5ZjsgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7Zm9udC1zaXplOiAxNnB4OyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IGF1dG87IGNvbG9yOiAjZmZmOyBoZWlnaHQ6IDQwcHg7IGxpbmUtaGVpZ2h0OiA0MHB4OyB9XHJcblx0XHRcdFx0XHRpIHtwYWRkaW5nLWxlZnQ6IDA7fVxyXG5cdFx0XHRcdFx0cCB7bWFyZ2luLWJvdHRvbTogMDt9XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ji5zcGFjZSB7ZGlzcGxheTogbm9uZTt9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdCYudGFibGUtaGlzdG9yeSB7XHJcblx0XHRcdHRib2R5IHtcclxuXHRcdFx0XHR0ZCB7XHJcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiA1MCU7IEBpbmNsdWRlIGJveFNpemluZyhib3JkZXItYm94KTsgdmVydGljYWwtYWxpZ246IHRvcDsgZm9udC1zaXplOiAxNHB4OyBwYWRkaW5nOiAwIDE1cHggMTVweCAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdFx0JjpiZWZvcmUge2ZvbnQtc2l6ZTogMTVweCA7bWFyZ2luOiAwIC0xNXB4IDE1cHg7fVxyXG5cdFx0XHRcdFx0JjpudGgtY2hpbGQoNiksJjpudGgtY2hpbGQoNSkge21pbi1oZWlnaHQ6IDk0cHg7fVxyXG5cdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHt3aWR0aDogMTAwJTsgYm9yZGVyOiBub25lO31cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0LmJ0bi1ibG9jayB7d2lkdGg6IDEwMCU7fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdCYuY29udGVudC1kZXRhaWwge1xyXG5cdFx0LnRpdGxlIHtcclxuXHRcdFx0c21hbGwudGdsIHttYXJnaW4tYm90dG9tOiAyMHB4OyB0ZXh0LWFsaWduOiBsZWZ0O31cclxuXHRcdFx0Ji5saXR0bGUge21hcmdpbjogMTBweCAwIDIwcHg7fVxyXG5cdFx0XHRoNCB7Zm9udC1zaXplOiAxOHB4OyBsaW5lLWhlaWdodDogMjRweDt9XHJcblx0XHR9XHJcblx0fVxyXG5cdC5saXN0LWxvY2F0aW9uIHtcclxuXHRcdC5ib3gge1xyXG5cdFx0XHQuaW1nIHtmbG9hdDogbm9uZTsgd2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzt9XHJcblx0XHRcdC50ZXh0IHtcclxuXHRcdFx0XHRmbG9hdDogbm9uZTsgd2lkdGg6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IGF1dG87IHBhZGRpbmc6IDMwcHggMjBweCAxNXB4O1xyXG5cdFx0XHRcdGg0IHtmb250LXNpemU6IDIzcHg7fVxyXG5cdFx0XHRcdHAge1xyXG5cdFx0XHRcdFx0aGVpZ2h0OiA2OHB4O1xyXG5cdFx0XHRcdFx0Ji5zdWIge2hlaWdodDogYXV0bzsgbWFyZ2luLWJvdHRvbTogMTBweDt9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdC5ib3gtY29udGFjdCB7XHJcblx0XHQubGVmdCB7XHJcblx0XHRcdGg0IHtmb250LXNpemU6IDIzcHg7fVxyXG5cdFx0XHRwIHtmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAyMnB4O31cclxuXHRcdH1cclxuXHR9XHJcblx0LnByaWNlLXR5cGUge1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMzBweDtcclxuXHRcdC5ib3gge1xyXG5cdFx0XHR3aWR0aDogMjAwcHg7IG1hcmdpbi1ib3R0b206IDIwcHg7XHJcblx0XHRcdGg1IHttYXJnaW4tdG9wOiA1cHg7IGZvbnQtc2l6ZTogMTdweDt9XHJcblx0XHRcdC5oZWFkIHtcclxuXHRcdFx0XHRoZWlnaHQ6IDgwcHg7IHBhZGRpbmc6IDIycHggMTBweCAwIDE4cHg7IG1hcmdpbi1ib3R0b206IDIwcHg7XHJcblx0XHRcdFx0aDQge2ZvbnQtc2l6ZTogMThweDt9XHJcblx0XHRcdFx0c21hbGwge2ZvbnQtc2l6ZTogMTBweDt9XHJcblx0XHRcdH1cclxuXHRcdFx0LnByaWNlLWJveCB7bWFyZ2luLWJvdHRvbTogMTVweDt9XHJcblx0XHRcdC5mb290IHtwYWRkaW5nOiAyMHB4IDEwcHg7fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQuYWNjb3JkaW9uIHtcclxuXHRcdHVsLCBvbCB7XHJcblx0XHRcdGxpIHtmb250LXNpemU6IDE2cHg7fVxyXG5cdFx0fVxyXG5cdFx0cCB7Zm9udC1zaXplOiAxNnB4O31cclxuXHRcdC5oLWFjYyB7XHJcblx0XHRcdHBhZGRpbmc6IDIwcHggNzBweCAyMHB4IDIwcHg7XHJcblx0XHRcdGg1IHtmb250LXNpemU6IDE4cHg7fVxyXG5cdFx0XHRzbWFsbCB7Zm9udC1zaXplOiAxNHB4O31cclxuXHRcdH1cclxuXHRcdC5jLWFjYyB7XHJcblx0XHRcdHBhZGRpbmc6IDIwcHggMjVweDtcclxuXHRcdH1cclxuXHR9IFxyXG5cdCYuYWNjb3VudC1wYWdlIHtcclxuXHRcdC53cmFwcGVyIHttYXJnaW46IDkwcHggMjBweCAwcHg7fVxyXG5cdH1cclxuXHQuYm94LXJlZ2lzdGVyIHtcclxuXHRcdG1hcmdpbi10b3A6IDcwcHg7XHJcblx0XHQucmlnaHQge1xyXG5cdFx0XHRwYWRkaW5nOiA1MHB4IDMwcHg7XHJcblx0XHRcdC5yb3ctYnRuIHttYXJnaW4tdG9wOiAzNXB4O31cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi50aGFua3MtcGFnZSB7XHJcblx0d2lkdGg6IGF1dG87IG1hcmdpbjogMjAwcHggMjBweCAxMDBweDtcclxuXHQuaWNvIHtcclxuXHRcdHdpZHRoOiAxMjBweDsgaGVpZ2h0OiAxMjBweDsgbWFyZ2luLXRvcDogLTY1cHg7XHJcblx0XHQuaWNvLTEge3dpZHRoOiA5MHB4OyB0b3A6IC0xMHB4OyByaWdodDogLTUwcHg7fVxyXG5cdFx0Lmljby0yIHt3aWR0aDogNjIlO31cclxuXHR9XHJcblx0LnRleHQge1xyXG5cdFx0cGFkZGluZzogNDBweCAzMHB4O1xyXG5cdFx0aDUge2ZvbnQtc2l6ZTogMjNweDsgbWFyZ2luLWJvdHRvbTogMjBweDt9XHJcblx0XHRwIHtmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAyMnB4O31cclxuXHRcdC53cmFwLWJ0biB7bWFyZ2luLXRvcDogMzBweDt9XHJcblx0fVxyXG59XHJcblxyXG4ucGdfNDA0IHtcclxuXHR3aWR0aDogYXV0bzsgbWFyZ2luOiAxMDBweCAyMHB4IDUwcHg7XHJcblx0LmljbyB7d2lkdGg6IDE1MHB4OyBtYXJnaW46IGF1dG87fVxyXG5cdC50ZXh0IHtcclxuXHRcdHdpZHRoOiBhdXRvO1xyXG5cdFx0aDUge2ZvbnQtc2l6ZTogMjNweDsgbGluZS1oZWlnaHQ6IDMwcHg7IG1hcmdpbjogMjBweCAwIDIwcHg7fVxyXG5cdFx0cCB7Zm9udC1zaXplOiAxNnB4OyBsaW5lLWhlaWdodDogMjJweDt9XHJcblx0XHQuYmtfaW5kZXgge2ZvbnQtc2l6ZTogMTZweDsgbWFyZ2luLXRvcDogMjVweDt9XHJcblx0fVxyXG59XHJcblxyXG5cclxuLnNyY19yZXN1bHQge3dpZHRoOiBhdXRvOyBtYXJnaW46IDEwMHB4IDIwcHggODBweDt9XHJcbi5zcmNfZm9ybSB7XHJcblx0bWFyZ2luLWJvdHRvbTogMzBweDtcclxuXHRmb3JtIHtcclxuXHRcdGlucHV0W3R5cGU9XCJ0ZXh0XCJdIHtmb250LXNpemU6IDE0cHg7fVxyXG5cdFx0aW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7d2lkdGg6IDUwcHg7fVxyXG5cdH1cclxufVxyXG4ud3JhcF9zcmMge1xyXG5cdHdpZHRoOiBhdXRvO1xyXG5cdGgyIHtmb250LXNpemU6IDIzcHg7IGxpbmUtaGVpZ2h0OiAzMHB4O31cclxuXHRoNiB7Zm9udC1zaXplOiAxNnB4OyBtYXJnaW4tYm90dG9tOiA0MHB4O31cclxuXHQubGlzdF9zcmMge1xyXG5cdFx0Lml0ZW0ge1xyXG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMzBweDsgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuXHRcdFx0YSB7XHJcblx0XHRcdFx0aDQge2ZvbnQtc2l6ZTogMThweDt9XHJcblx0XHRcdFx0cCB7Zm9udC1zaXplOiAxNHB4O31cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4uc2lnLWxzdHtcclxuXHQubHMtc2lnLWxzdHt3aWR0aDogMTAwJTt9XHJcbn1cclxuXHJcbi5wYWdnaW5nIHtcclxuXHRhIHtcclxuXHRcdGZvbnQtc2l6ZTogMTRweDsgcGFkZGluZzogMCA2cHggNHB4O1xyXG5cdFx0Ji5wcmV2LFxyXG5cdFx0Ji5uZXh0IHt3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyBiYWNrZ3JvdW5kLXNpemU6IDMycHg7fVxyXG5cdH1cclxufVxyXG5cclxuXHJcbi5ib3gtc2lnbmF0dXJlIC50ZXh0c2lnIHNwYW4ge2ZvbnQtc2l6ZTogMzJweDt9XHJcblxyXG4uYnV0dG9uLWdyb3VwIHtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogNXB4IDA7XHJcbn1cclxuXHJcblxyXG5cclxuLyogcG9wdXBcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG5cclxuLndyYXAtcG9wdXAge1xyXG5cdC5ib3gtcG9wdXAge1xyXG5cdFx0bWFyZ2luOiAxMCUgMzBweDsgd2lkdGg6IGF1dG87XHJcblx0XHRoNCB7Zm9udC1zaXplOiAyMHB4OyBtYXJnaW4tYm90dG9tOiAyMHB4OyBsaW5lLWhlaWdodDogMjRweDt9XHJcblx0XHQuYXJyb3ctbmF2IHtcclxuXHRcdFx0d2lkdGg6IDE0cHg7IGJhY2tncm91bmQtc2l6ZTogMjhweDtcclxuXHRcdFx0Ji5uZXh0IHtyaWdodDogLTIycHg7fVxyXG5cdFx0XHQmLnByZXYge2xlZnQ6IC0yMnB4O31cclxuXHRcdH1cclxuXHRcdGEuY2xvc2Uge3dpZHRoOiAzNXB4OyBoZWlnaHQ6IDM1cHg7IGJhY2tncm91bmQtc2l6ZTogMTVweDsgdG9wOiAtMTVweDsgcmlnaHQ6IC0xNXB4O31cclxuXHR9XHJcbn1cclxuXHJcblxyXG4vKiBmb290ZXJcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbmZvb3RlciB7XHJcblx0aGVpZ2h0OiBhdXRvOyBwYWRkaW5nLWJvdHRvbTogMTVweDtcclxuXHQud3JhcHBlciB7d2lkdGg6IGF1dG87IG1hcmdpbjogMCAyMHB4O31cclxuXHQubGVmdCB7XHJcblx0XHRuYXYge1xyXG5cdFx0XHRhIHttYXJnaW4tYm90dG9tOiAxMHB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxufSAvKiBlbmQgbWVkaWEgKi9cclxuXHJcblxyXG5cclxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogNjM5cHgpIHtcclxuXHJcbi8qIGdsb2JhbFxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcblxyXG5cclxuLyogaGVhZGVyXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuXHJcbi8qIGhvbWVwYWdlXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4uYmFubmVyLWhvbWUge1xyXG5cdC53cmFwLWNhcHRpb24ge21hcmdpbi1sZWZ0OiAyNXB4O31cclxuXHQuY2FwdGlvbiB7XHJcblx0XHRoMSxoMiB7bWFyZ2luLWJvdHRvbTogMzBweDt9XHJcblx0XHRwIHtkaXNwbGF5OiBub25lO31cclxuXHR9XHJcblx0Ji5iYW5uZXItc3RkIHtcclxuXHRcdGNhcHRpb24ge1xyXG5cdFx0XHRwIHtkaXNwbGF5OiBibG9jazt9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbi5ob21lLXNlYyB7XHJcblx0Ji5oLWFib3V0IHtcclxuXHRcdC5saXN0LWNvbCB7XHJcblx0XHRcdC5jb2wge1xyXG5cdFx0XHRcdHdpZHRoOiBhdXRvOyBtYXJnaW4tcmlnaHQ6IDA7IGZsb2F0OiBub25lOyBkaXNwbGF5OiBibG9jaztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQmLmgtY29udGFjdCB7XHJcblx0XHQuYm94LWZvcm0ge1xyXG5cdFx0XHQucm93IHtcclxuXHRcdFx0XHRtYXJnaW46IDAgMCAyNXB4O1xyXG5cdFx0XHRcdC5jb2wge3dpZHRoOiBhdXRvOyBkaXNwbGF5OiBibG9jazsgbWFyZ2luLXJpZ2h0OiAwOyBmbG9hdDogbm9uZTsgbWFyZ2luLWJvdHRvbTogMjVweDt9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8qIG1pZGRsZVxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi5jb250ZW50LXN0ZCB7XHJcblx0Ji5hYm91dCB7XHJcblx0XHQubGlzdC1jb2wge1xyXG5cdFx0XHQuY29sIHtkaXNwbGF5OiBibG9jazsgd2lkdGg6IGF1dG87IG1hcmdpbi1yaWdodDogMDsgZmxvYXQ6IG5vbmU7IG1hcmdpbi1ib3R0b206IDMwcHg7fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQuc2VydmljZS1yb29tLWxpc3Qge1xyXG5cdFx0LmJveCB7XHJcblx0XHRcdC53cmFwLWJ0biB7XHJcblx0XHRcdFx0YXtkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyBtYXJnaW46IDAgYXV0byAxMHB4ICFpbXBvcnRhbnQ7fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdCYuYnV5LXN0ZXAge1xyXG5cdFx0LmxlZnQtY29udGVudCB7XHJcblx0XHRcdC5ib3gtZm9ybSB7XHJcblx0XHRcdFx0d2lkdGg6IGF1dG87XHJcblx0XHRcdFx0LnJvdyB7XHJcblx0XHRcdFx0XHQmLmNvbC0zIHtcclxuXHRcdFx0XHRcdFx0LmNvbCB7XHJcblx0XHRcdFx0XHRcdFx0d2lkdGg6IDEwMCU7IG1hcmdpbi1yaWdodDogMDsgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuXHRcdFx0XHRcdFx0XHQmOm50aC1jaGlsZCgyKSB7bWFyZ2luLXJpZ2h0OiAwO31cclxuXHRcdFx0XHRcdFx0XHQmOm50aC1jaGlsZCgzKSB7bWFyZ2luLWJvdHRvbTogMDt9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC5jb2wge3dpZHRoOiAxMDAlOyBmbG9hdDogbm9uZTsgbWFyZ2luLXJpZ2h0OiAwOyBtYXJnaW4tYm90dG9tOiAzMHB4O31cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC5idG4tbmV4dCB7XHJcblx0XHRcdG1hcmdpbi10b3A6IDM1cHg7XHJcblx0XHRcdGEsIC5idG4tYmxvY2sge2Rpc3BsYXk6IGJsb2NrOyBtYXJnaW46IDAgYXV0byAyMHB4ICFpbXBvcnRhbnQ7IHdpZHRoOiAxMDAlO31cclxuXHRcdH1cclxuXHR9XHJcblx0LmJveC1jb250YWN0IHtcclxuXHRcdC5ib3gtZm9ybSB7XHJcblx0XHRcdC5yb3cge1xyXG5cdFx0XHRcdC5jb2wgeyB3aWR0aDogMTAwJTsgZmxvYXQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tYm90dG9tOiAyNXB4O31cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQud3JhcF90Ymwge1xyXG5cdFx0d2lkdGg6IGF1dG87IG92ZXJmbG93OiBoaWRkZW47XHJcblx0XHQuc3RkLXRhYmxlIHtcclxuXHRcdFx0Ji5mYWNpbGl0eSB7XHJcblx0XHRcdFx0d2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDM1cHggIWltcG9ydGFudDtcclxuXHRcdFx0XHR0aGVhZCB7ZGlzcGxheTogbm9uZTt9XHJcblx0XHRcdFx0dGJvZHkge1xyXG5cdFx0XHRcdFx0dGQge1xyXG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgdGV4dC1hbGlnbjogbGVmdDsgQGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpOyB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG5cdFx0XHRcdFx0XHRwYWRkaW5nOiAxNXB4O1xyXG5cdFx0XHRcdFx0XHRzcGFuIHtkaXNwbGF5OiBibG9jazsgbWFyZ2luLWxlZnQ6IDIwMHB4O31cclxuXHRcdFx0XHRcdFx0JjpiZWZvcmUge1xyXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGF0dHIoZGF0YS10aXRsZSk7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgZmxvYXQ6IGxlZnQ7IHdpZHRoOiAyMDBweDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQmOmFmdGVyIHtjbGVhcjogYm90aDsgZGlzcGxheTogYmxvY2s7IGNvbnRlbnQ6ICcnO31cclxuXHRcdFx0XHRcdFx0JjpmaXJzdC1jaGlsZCB7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZDogIzMzMzsgY29sb3I6ICNmZmY7IHBhZGRpbmctbGVmdDogMjBweDtcclxuXHRcdFx0XHRcdFx0XHQmOmJlZm9yZSB7ZGlzcGxheTogbm9uZTt9XHJcblx0XHRcdFx0XHRcdFx0c3BhbiB7ZmxvYXQ6bm9uZTsgbWFyZ2luLWxlZnQ6IDA7IGxpbmUtaGVpZ2h0OiAxNnB4O31cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQmOmxhc3QtY2hpbGQge21hcmdpbi1ib3R0b206IDI1cHg7fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQmLmFkZF9zcGFuIHtcclxuXHRcdFx0XHRcdHRib2R5IHtcclxuXHRcdFx0XHRcdFx0dGQge1xyXG5cdFx0XHRcdFx0XHRcdCY6YmVmb3JlIHt3aWR0aDogMTMwcHg7fVxyXG5cdFx0XHRcdFx0XHRcdHNwYW4ge2ZvbnQtc2l6ZTogMTZweDsgbWFyZ2luLWxlZnQ6IDE0OHB4O31cclxuXHRcdFx0XHRcdFx0XHQmOmZpcnN0LWNoaWxke1xyXG5cdFx0XHRcdFx0XHRcdFx0c3BhbiB7bWFyZ2luLWxlZnQ6IDA7fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQuc3VwcG9ydC1mYWNpbGl0eSB7XHJcblx0XHQuc3RkLXRhYmxlIHtcclxuXHRcdFx0dGhlYWQge1xyXG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHRcdH1cclxuXHRcdFx0dGJvZHkge1xyXG5cdFx0XHRcdHRkIHtcclxuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogcmVsYXRpdmU7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmc6IDE1cHggIWltcG9ydGFudDsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMThweDtcclxuXHRcdFx0XHRcdCY6YmVmb3JlIHtcclxuXHRcdFx0XHRcdFx0Y29udGVudDogYXR0cihkYXRhLXRpdGxlKTsgZGlzcGxheTogYmxvY2s7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNjAwO1xyXG5cdFx0XHRcdFx0XHRmbG9hdDogbGVmdDsgd2lkdGg6IDEzMHB4O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0JjphZnRlciB7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6ICcgJzsgZGlzcGxheTogYmxvY2s7IGNsZWFyOiBib3RoO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHttYXJnaW4tYm90dG9tOiAzMHB4O31cclxuXHRcdFx0XHRcdHNwYW4ge1xyXG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jazsgbWFyZ2luLWxlZnQ6IDEzNXB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmctbGVmdDogM3B4O1xyXG5cdFx0XHRcdFx0XHQmOmJlZm9yZSB7XHJcblx0XHRcdFx0XHRcdFx0Y29udGVudDogJzonOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogLTVweDsgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQucmlnaHQge1xyXG5cdFx0XHRwYWRkaW5nOiAzMHB4IDIwcHg7IHdpZHRoOiBhdXRvO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQmLmFjY291bnQtcGFnZSB7XHJcblx0XHQuYm94LWZvcm0ge1xyXG5cdFx0XHQucm93IHtcclxuXHRcdFx0XHQuY29sIHtmbG9hdDogbm9uZTsgZGlzcGxheTogYmxvY2s7ICB3aWR0aDogMTAwJTsgbWFyZ2luLWJvdHRvbTogMjBweDt9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0Ji5jb250ZW50LWRldGFpbCB7XHJcblx0XHQubGlzdC1nYWxsZXJ5IHtcclxuXHRcdFx0LmJveCB7d2lkdGg6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyBmbG9hdDogbm9uZTsgbWFyZ2luOiAwIDAgMjBweDt9XHJcblx0XHR9XHJcblx0fVxyXG5cdC5zaGFyZS1saXN0e21hcmdpbi1ib3R0b206IDE1cHg7fVxyXG5cdFxyXG59XHJcbi5vcHQtY2hlY2tib3h7XHJcblx0Ji5tZHtcclxuXHRcdC5pdGVte1xyXG5cdFx0XHRmbG9hdDogbm9uZTsgbWFyZ2luLXJpZ2h0OiAwOyBtYXJnaW4tYm90dG9tOiAzMHB4O1xyXG5cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuLnRhZ2cge1xyXG5cdHBhZGRpbmctbGVmdDogNTVweDtcclxuXHQubGJsIHtmb250LXNpemU6IDE0cHg7IHRvcDogMTBweDt9XHJcblx0dWwge1xyXG5cdFx0bGkge1xyXG5cdFx0XHRtYXJnaW46IDAgM3B4IDRweDtcclxuXHRcdFx0YSB7Zm9udC1zaXplOiAxNHB4O31cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcblxyXG5cclxuLyogcG9wdXBcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG5cclxuXHJcbi8qIGZvb3RlclxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcblxyXG5cclxufSAvKiBlbmQgbWVkaWEgKi9cclxuXHJcblxyXG5cclxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogNDc5cHgpIHtcclxuXHJcbi8qIGdsb2JhbFxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcblxyXG5cclxuLyogaGVhZGVyXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5oZWFkZXIge1xyXG5cdC5yaWdodCB7XHJcblx0XHQuYWNjb3VudC1uYXYge1xyXG5cdFx0XHQ+IGEge1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMHB4ICFpbXBvcnRhbnQ7IHBhZGRpbmc6ICAwIDIwcHg7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcclxuXHRcdFx0XHQmOmFmdGVyIHtkaXNwbGF5OiBub25lO31cclxuXHRcdFx0fVx0XHRcdFxyXG5cdFx0fVxyXG5cdFx0YS5waG9uZSB7cGFkZGluZy1sZWZ0OiAzNHB4O31cclxuXHR9XHJcbn1cclxuXHJcbi8qIGhvbWVwYWdlXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4uaG9tZS1zZWMge1xyXG5cdCYuaC1wcm9kIHtcclxuXHRcdC5zbGlkZXIge3dpZHRoOiBhdXRvOyBtYXJnaW46IDQwcHggMTVweCAwO31cclxuXHR9XHJcbn1cclxuLmJveC1mb3JtIHtcclxuXHQuZy1yZWNhcHRjaGEge0BpbmNsdWRlIHRyYW5zZm9ybShzY2FsZSgwLjg1KSk7cG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW4tbGVmdDogLTIycHg7fVxyXG59XHJcblxyXG4vKiBtaWRkbGVcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbi5iYW5uZXItaG9tZSB7XHJcblx0LmNhcHRpb24ge21heC13aWR0aDogbm9uZTsgcmlnaHQ6IDIwcHg7fVxyXG59XHJcbi5jb250ZW50LXN0ZCB7XHJcblx0Lmxpc3QtcHJvZCB7XHJcblx0XHQuYm94IHtcclxuXHRcdFx0ZmxvYXQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogYXV0bzsgbWFyZ2luLXJpZ2h0OiAwO1xyXG5cdFx0XHQmOm50aC1vZi10eXBlKDNuKSB7bWFyZ2luLXJpZ2h0OiAwO31cclxuXHRcdFx0cCB7aGVpZ2h0OiBhdXRvO31cclxuXHRcdH1cclxuXHRcdCYubmV3cyB7XHJcblx0XHRcdC5ib3gge1xyXG5cdFx0XHRcdGg0IHtoZWlnaHQ6IGF1dG87fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdCYuYnV5LXN0ZXAge1xyXG5cdFx0LmJveC1mb3JtIHtcclxuXHRcdFx0d2lkdGg6IGF1dG87XHJcblx0XHRcdC5jb2wge1xyXG5cdFx0XHRcdHdpZHRoOiBhdXRvOyBtYXJnaW4tcmlnaHQ6IDA7IGZsb2F0OiBub25lOyBkaXNwbGF5OiBibG9jazsgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuXHRcdFx0XHQmOm50aC1vZi10eXBlKDIpIHttYXJnaW4tcmlnaHQ6IDA7fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQud3JhcC1zdGVwIHtcclxuXHRcdFx0LmJveCB7XHJcblx0XHRcdFx0LmljbyB7XHJcblx0XHRcdFx0XHR3aWR0aDogNDJweDsgaGVpZ2h0OiA0MnB4O1xyXG5cdFx0XHRcdFx0c3BhbiB7d2lkdGg6IDQycHg7IGhlaWdodDogNDJweDsgYmFja2dyb3VuZC1zaXplOiA0MnB4ICFpbXBvcnRhbnQ7fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQmOmFmdGVyIHt0b3A6IDE5cHg7fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQuYm94LXJlZCB7XHJcblx0XHRcdC5ib3gge1xyXG5cdFx0XHRcdC5sZWZ0LC5yaWdodCB7d2lkdGg6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyBmbG9hdDogbm9uZTsgdGV4dC1hbGlnbjogbGVmdDt9XHJcblx0XHRcdFx0LmxlZnQge1xyXG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0XHRcdFx0c21hbGwge21hcmdpbi10b3A6IDEwcHg7fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQucmlnaHQge1xyXG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogMjBweDsgZm9udC1zaXplOiAxOHB4O1xyXG5cdFx0XHRcdFx0c21hbGwge2ZvbnQtc2l6ZTogMTJweDt9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQucGF5bWVudC1vcHRpb24ge1xyXG5cdFx0XHRhIHtcclxuXHRcdFx0XHR3aWR0aDogYXV0bzsgbWFyZ2luLXJpZ2h0OjA7ICBkaXNwbGF5OiBibG9jazsgZmxvYXQ6IG5vbmU7IG1hcmdpbi1ib3R0b206IDIwcHg7IGhlaWdodDogMTYwcHg7XHJcblx0XHRcdFx0JjpudGgtY2hpbGQoMm4pIHttYXJnaW4tcmlnaHQ6IDA7fVxyXG5cdFx0XHRcdHNwYW4uaWNvIHt3aWR0aDogODBweDsgaGVpZ2h0OiA1NHB4OyBiYWNrZ3JvdW5kLXNpemU6IDgxcHggIWltcG9ydGFudDsgdG9wOiAzNXB4O31cclxuXHRcdFx0XHRzcGFuLnRleHQge2ZvbnQtc2l6ZTogMTZweDsgYm90dG9tOiAzNHB4O31cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4udGFnZyB7XHJcblx0cGFkZGluZy1sZWZ0OiAwcHg7XHJcblx0LmxibCB7Zm9udC1zaXplOiAxNHB4OyB0b3A6IDA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgbWFyZ2luLWJvdHRvbTogMTBweDsgZGlzcGxheTogYmxvY2s7fVxyXG5cdHVsIHtcclxuXHRcdGxpIHtcclxuXHRcdFx0XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5cclxuXHJcbi51aS1kYXRlcGlja2VyIHt3aWR0aDogMjFlbTt9XHJcbi8qIHBvcHVwXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuXHJcblxyXG4vKiBmb290ZXJcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG5cclxuXHJcbn0gLyogZW5kIG1lZGlhICovXHJcblxyXG4iLCIvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVx0XHJcbiAgICBDb21wYW55ICAgIDogUFQgV2ViIEFyY2hpdGVjdCBUZWNobm9sb2d5IC0gd2ViYXJxLmNvbVxyXG4gICAgRG9jdW1lbnQgICA6IFN0eWxlc2hlZXRcclxuICAgIEF1dGhvciAgICAgOiBGcm9udEVuZCBUZWFtICBcclxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXHJcblxyXG4vKiBpbXBvcnQgYm91cmJvbiAtIGh0dHA6Ly9ib3VyYm9uLmlvL2RvY3MgKi9cclxuQGltcG9ydCBcImJvdXJib24vYm91cmJvblwiO1xyXG4gXHJcbkBtaXhpbiB0cmFuc2l0aW9uKCRhdHRyKXtcclxuICAgIHRyYW5zaXRpb246ICRhdHRyO1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAkYXR0cjtcclxuICAgIC1tb3otdHJhbnNpdGlvbjogJGF0dHI7XHJcbiAgICAtbXMtdHJhbnNpdGlvbjogJGF0dHI7XHJcbiAgICAtby10cmFuc2l0aW9uOiAkYXR0cjtcclxufVxyXG5AbWl4aW4gdHJhbnNmb3JtKCRhdHRyKXtcclxuICAgIHRyYW5zZm9ybTogJGF0dHI7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJGF0dHI7XHJcbiAgICAtbW96LXRyYW5zZm9ybTogJGF0dHI7XHJcbiAgICAtbXMtdHJhbnNmb3JtOiAkYXR0cjtcclxuICAgIC1vLXRyYW5zZm9ybTogJGF0dHI7XHJcbn1cclxuQG1peGluIGJvcmRlclJhZGl1cygkYXR0cil7XHJcbiAgICBib3JkZXItcmFkaXVzOiAkYXR0cjtcclxuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogJGF0dHI7XHJcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6ICRhdHRyO1xyXG4gICAgLW1zLWJvcmRlci1yYWRpdXM6ICRhdHRyO1xyXG4gICAgLW8tYm9yZGVyLXJhZGl1czogJGF0dHI7XHJcbn1cclxuQG1peGluIGJveFNoYWRvdygkYXR0cil7XHJcbiAgICBib3gtc2hhZG93OiAgJGF0dHI7XHJcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6ICRhdHRyO1xyXG4gICAgLW1vei1ib3gtc2hhZG93OiAkYXR0cjtcclxuICAgIC1tcy1ib3gtc2hhZG93OiAkYXR0cjtcclxuICAgIC1vLWJveC1zaGFkb3c6ICRhdHRyXHJcbn1cclxuQG1peGluIGJveFNpemluZygkYXR0cil7XHJcbiAgICBib3gtc2l6aW5nOiAgJGF0dHI7XHJcbiAgICAtd2Via2l0LWJveC1zaXppbmc6ICRhdHRyO1xyXG4gICAgLW1vei1ib3gtc2l6aW5nOiAkYXR0cjtcclxuICAgIC1tcy1ib3gtc2l6aW5nOiAkYXR0cjtcclxuICAgIC1vLWJveC1zaXppbmc6ICRhdHRyXHJcbn1cclxuQG1peGluIHBsYWNlaG9sZGVyIHtcclxuICAgIDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7QGNvbnRlbnR9XHJcbiAgICA6LW1vei1wbGFjZWhvbGRlciAgICAgICAgICAge0Bjb250ZW50fVxyXG4gICAgOjotbW96LXBsYWNlaG9sZGVyICAgICAgICAgIHtAY29udGVudH1cclxuICAgIDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgICAgICB7QGNvbnRlbnR9ICBcclxufVxyXG5AbWl4aW4gYm94U2l6aW5nKCRhdHRyKXtcclxuICAgIC13ZWJraXQtYm94LXNpemluZzogJGF0dHI7XHJcbiAgICAtbW96LWJveC1zaXppbmc6ICRhdHRyO1xyXG4gICAgYm94LXNpemluZzogJGF0dHI7XHJcbn1cclxuQG1peGluIGNsZWFyZml4e1xyXG4gICAgJjpiZWZvcmUsXHJcbiAgICAmOmFmdGVye1xyXG4gICAgICAgIGNvbnRlbnQ6IFwiIFwiOyBcclxuICAgICAgICBkaXNwbGF5OiB0YWJsZTsgXHJcbiAgICB9XHJcbiAgICAmOmFmdGVye1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrOyBcclxuICAgICAgICBjbGVhcjogYm90aDtcclxuICAgICAgICBoZWlnaHQ6IDBweDtcclxuICAgICAgICBtYXJnaW4tdG9wOiAtMXB4O1xyXG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgIH1cclxuICAgICZ7XHJcbiAgICAgICAgKnpvb206IDE7XHJcbiAgICB9XHJcbn1cclxuLmFic29sdXRlLWNlbnRlcntwb3NpdGlvbjogYWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7bWFyZ2luOmF1dG87fVxyXG4ubm8tbWFyZ2lue21hcmdpbjogMCAhaW1wb3J0YW50O31cclxuLmFmdGVyX2NsZWFye2NvbnRlbnQ6IFwiXCI7ZGlzcGxheTogYmxvY2s7Y2xlYXI6IGJvdGg7fVxyXG4uYS1yaWdodHt0ZXh0LWFsaWduOiByaWdodH1cclxuLmEtbGVmdHt0ZXh0LWFsaWduOiBsZWZ0fVxyXG5cclxuJGVhc2U6IGN1YmljLWJlemllcigwLjA2NSwgMC44NDAsIDAuMjYwLCAwLjk5MCk7XHJcbi8qIGNvbG9yIGdsb2JhbFxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuJHJlZCA6I2QzMWYyMjtcclxuJHdoaXRlIDojZmZmO1xyXG4kb3JhbmdlOiNmZjcyMDA7XHJcbiRjXzExMTogIzExMTtcclxuJGNfMzMzOiAjMzMzO1xyXG4kY182NjY6ICM2NjY7XHJcbiRjXzk5OTogIzk5OTtcclxuJGNfZWE6ICNlYWVhZWE7XHJcblxyXG4kZ3JhYnZpYmVzOidHcmVhdCBWaWJlcycsIGN1cnNpdmU7XHJcbiRwYWNpZml0bzonUGFjaWZpdG8nLCBjdXJzaXZlO1xyXG4kaG9tZW1hZGU6J1llbGxvd3RhaWwnLCBjdXJzaXZlO1xyXG4kdGFuZ2VyaW5lOiAnVGFuZ2VyaW5lJywgY3Vyc2l2ZTtcclxuJG5vdGhpbmc6ICdOb3RoaW5nIFlvdSBDb3VsZCBEbycsIGN1cnNpdmU7XHJcbiRkYW1pb246ICdEYW1pb24nLCBjdXJzaXZlO1xyXG4kcGFyaXNpZW5uZTogJ1BhcmlzaWVubmUnLCBjdXJzaXZlO1xyXG4kaXRhbGlhbm5vOiAnSXRhbGlhbm5vJywgY3Vyc2l2ZTtcclxuJGxhYmVsbGU6ICdMYSBCZWxsZSBBdXJvcmUnLCBjdXJzaXZlO1xyXG4kdmFtcGlyb29uZTogJ1ZhbXBpcm8gT25lJywgY3Vyc2l2ZTtcclxuJGFndWFmaW5hOiAnQWd1YWZpbmEgU2NyaXB0JywgY3Vyc2l2ZTtcclxuJGxlYWd1ZTogJ0xlYWd1ZSBTY3JpcHQnLCBjdXJzaXZlO1xyXG4kbW9sbGU6ICdNb2xsZScsIGN1cnNpdmU7XHJcbiRhbGV4OiAnQWxleCBCcnVzaCcsIGN1cnNpdmU7XHJcbiRwaW55b246ICdQaW55b24gU2NyaXB0JywgY3Vyc2l2ZTtcclxuIiwiLy8gQm91cmJvbiA0LjIuN1xyXG4vLyBodHRwOi8vYm91cmJvbi5pb1xyXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IHRob3VnaHRib3QsIGluYy5cclxuLy8gTUlUIExpY2Vuc2VcclxuXHJcbkBpbXBvcnQgXCJzZXR0aW5ncy9wcmVmaXhlclwiO1xyXG5AaW1wb3J0IFwic2V0dGluZ3MvcHgtdG8tZW1cIjtcclxuQGltcG9ydCBcInNldHRpbmdzL2Fzc2V0LXBpcGVsaW5lXCI7XHJcblxyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Fzc2lnbi1pbnB1dHNcIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9jb250YWluc1wiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnRhaW5zLWZhbHN5XCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtbGVuZ3RoXCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtbGlnaHRcIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1udW1iZXJcIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1zaXplXCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvcHgtdG8tZW1cIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9weC10by1yZW1cIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9zaGFkZVwiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL3N0cmlwLXVuaXRzXCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdGludFwiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL3RyYW5zaXRpb24tcHJvcGVydHktbmFtZVwiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL3VucGFja1wiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL21vZHVsYXItc2NhbGVcIjtcclxuXHJcbkBpbXBvcnQgXCJoZWxwZXJzL2NvbnZlcnQtdW5pdHNcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvZGlyZWN0aW9uYWwtdmFsdWVzXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL2ZvbnQtc291cmNlLWRlY2xhcmF0aW9uXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXJcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLWFuZ2xlLXBhcnNlclwiO1xyXG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItZ3JhZGllbnQtcGFyc2VyXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXJcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLWFyZy1wYXJzZXJcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXJcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLWdyYWRpZW50LXBhcnNlclwiO1xyXG5AaW1wb3J0IFwiaGVscGVycy9yZW5kZXItZ3JhZGllbnRzXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL3NoYXBlLXNpemUtc3RyaXBwZXJcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvc3RyLXRvLW51bVwiO1xyXG5cclxuQGltcG9ydCBcImNzczMvYW5pbWF0aW9uXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2FwcGVhcmFuY2VcIjtcclxuQGltcG9ydCBcImNzczMvYmFja2ZhY2UtdmlzaWJpbGl0eVwiO1xyXG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtaW1hZ2VcIjtcclxuQGltcG9ydCBcImNzczMvYm9yZGVyLWltYWdlXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2NhbGNcIjtcclxuQGltcG9ydCBcImNzczMvY29sdW1uc1wiO1xyXG5AaW1wb3J0IFwiY3NzMy9maWx0ZXJcIjtcclxuQGltcG9ydCBcImNzczMvZmxleC1ib3hcIjtcclxuQGltcG9ydCBcImNzczMvZm9udC1mYWNlXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5nc1wiO1xyXG5AaW1wb3J0IFwiY3NzMy9oaWRwaS1tZWRpYS1xdWVyeVwiO1xyXG5AaW1wb3J0IFwiY3NzMy9oeXBoZW5zXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2ltYWdlLXJlbmRlcmluZ1wiO1xyXG5AaW1wb3J0IFwiY3NzMy9rZXlmcmFtZXNcIjtcclxuQGltcG9ydCBcImNzczMvbGluZWFyLWdyYWRpZW50XCI7XHJcbkBpbXBvcnQgXCJjc3MzL3BlcnNwZWN0aXZlXCI7XHJcbkBpbXBvcnQgXCJjc3MzL3BsYWNlaG9sZGVyXCI7XHJcbkBpbXBvcnQgXCJjc3MzL3JhZGlhbC1ncmFkaWVudFwiO1xyXG5AaW1wb3J0IFwiY3NzMy9zZWxlY3Rpb25cIjtcclxuQGltcG9ydCBcImNzczMvdGV4dC1kZWNvcmF0aW9uXCI7XHJcbkBpbXBvcnQgXCJjc3MzL3RyYW5zZm9ybVwiO1xyXG5AaW1wb3J0IFwiY3NzMy90cmFuc2l0aW9uXCI7XHJcbkBpbXBvcnQgXCJjc3MzL3VzZXItc2VsZWN0XCI7XHJcblxyXG5AaW1wb3J0IFwiYWRkb25zL2JvcmRlci1jb2xvclwiO1xyXG5AaW1wb3J0IFwiYWRkb25zL2JvcmRlci1yYWRpdXNcIjtcclxuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItc3R5bGVcIjtcclxuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItd2lkdGhcIjtcclxuQGltcG9ydCBcImFkZG9ucy9idXR0b25zXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvY2xlYXJmaXhcIjtcclxuQGltcG9ydCBcImFkZG9ucy9lbGxpcHNpc1wiO1xyXG5AaW1wb3J0IFwiYWRkb25zL2ZvbnQtc3RhY2tzXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvaGlkZS10ZXh0XCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvbWFyZ2luXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvcGFkZGluZ1wiO1xyXG5AaW1wb3J0IFwiYWRkb25zL3Bvc2l0aW9uXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvcHJlZml4ZXJcIjtcclxuQGltcG9ydCBcImFkZG9ucy9yZXRpbmEtaW1hZ2VcIjtcclxuQGltcG9ydCBcImFkZG9ucy9zaXplXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvdGV4dC1pbnB1dHNcIjtcclxuQGltcG9ydCBcImFkZG9ucy90aW1pbmctZnVuY3Rpb25zXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvdHJpYW5nbGVcIjtcclxuQGltcG9ydCBcImFkZG9ucy93b3JkLXdyYXBcIjtcclxuXHJcbkBpbXBvcnQgXCJib3VyYm9uLWRlcHJlY2F0ZWQtdXBjb21pbmdcIjtcclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIEdsb2JhbCB2YXJpYWJsZXMgdG8gZW5hYmxlIG9yIGRpc2FibGUgdmVuZG9yIHByZWZpeGVzXHJcblxyXG4kcHJlZml4LWZvci13ZWJraXQ6ICAgIHRydWUgIWRlZmF1bHQ7XHJcbiRwcmVmaXgtZm9yLW1vemlsbGE6ICAgdHJ1ZSAhZGVmYXVsdDtcclxuJHByZWZpeC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xyXG4kcHJlZml4LWZvci1vcGVyYTogICAgIHRydWUgIWRlZmF1bHQ7XHJcbiRwcmVmaXgtZm9yLXNwZWM6ICAgICAgdHJ1ZSAhZGVmYXVsdDtcclxuIiwiJGVtLWJhc2U6IDE2cHggIWRlZmF1bHQ7XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBBIGdsb2JhbCBzZXR0aW5nIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBgJGFzc2V0LXBpcGVsaW5lYCB2YXJpYWJsZSBmb3IgYWxsIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdCBpdC5cclxuLy8vXHJcbi8vLyBAdHlwZSBCb29sXHJcblxyXG4kYXNzZXQtcGlwZWxpbmU6IGZhbHNlICFkZWZhdWx0O1xyXG4iLCJAZnVuY3Rpb24gYXNzaWduLWlucHV0cygkaW5wdXRzLCAkcHNldWRvOiBudWxsKSB7XHJcbiAgJGxpc3Q6ICgpO1xyXG5cclxuICBAZWFjaCAkaW5wdXQgaW4gJGlucHV0cyB7XHJcbiAgICAkaW5wdXQ6IHVucXVvdGUoJGlucHV0KTtcclxuICAgICRpbnB1dDogaWYoJHBzZXVkbywgJGlucHV0ICsgXCI6XCIgKyAkcHNldWRvLCAkaW5wdXQpO1xyXG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGlucHV0LCBjb21tYSk7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRsaXN0O1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBDaGVja3MgaWYgYSBsaXN0IGNvbnRhaW5zIGEgdmFsdWUocykuXHJcbi8vL1xyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdFxyXG4vLy8gICBUaGUgbGlzdCB0byBjaGVjayBhZ2FpbnN0LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHVlc1xyXG4vLy8gICBBIHNpbmdsZSB2YWx1ZSBvciBsaXN0IG9mIHZhbHVlcyB0byBjaGVjayBmb3IuXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIGNvbnRhaW5zKCRsaXN0LCAkdmFsdWUpXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7Qm9vbH1cclxuXHJcbkBmdW5jdGlvbiBjb250YWlucygkbGlzdCwgJHZhbHVlcy4uLikge1xyXG4gIEBlYWNoICR2YWx1ZSBpbiAkdmFsdWVzIHtcclxuICAgIEBpZiB0eXBlLW9mKGluZGV4KCRsaXN0LCAkdmFsdWUpKSAhPSBcIm51bWJlclwiIHtcclxuICAgICAgQHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEByZXR1cm4gdHJ1ZTtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gQ2hlY2tzIGlmIGEgbGlzdCBkb2VzIG5vdCBjb250YWlucyBhIHZhbHVlLlxyXG4vLy9cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3RcclxuLy8vICAgVGhlIGxpc3QgdG8gY2hlY2sgYWdhaW5zdC5cclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtCb29sfVxyXG5cclxuQGZ1bmN0aW9uIGNvbnRhaW5zLWZhbHN5KCRsaXN0KSB7XHJcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xyXG4gICAgQGlmIG5vdCAkaXRlbSB7XHJcbiAgICAgIEByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEByZXR1cm4gZmFsc2U7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIENoZWNrcyBmb3IgYSB2YWxpZCBDU1MgbGVuZ3RoLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcclxuXHJcbkBmdW5jdGlvbiBpcy1sZW5ndGgoJHZhbHVlKSB7XHJcbiAgQHJldHVybiB0eXBlLW9mKCR2YWx1ZSkgIT0gXCJudWxsXCIgYW5kIChzdHItc2xpY2UoJHZhbHVlICsgXCJcIiwgMSwgNCkgPT0gXCJjYWxjXCJcclxuICAgICAgIG9yIGluZGV4KGF1dG8gaW5oZXJpdCBpbml0aWFsIDAsICR2YWx1ZSlcclxuICAgICAgIG9yICh0eXBlLW9mKCR2YWx1ZSkgPT0gXCJudW1iZXJcIiBhbmQgbm90KHVuaXRsZXNzKCR2YWx1ZSkpKSk7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIFByb2dyYW1hdGljYWxseSBkZXRlcm1pbmVzIHdoZXRoZXIgYSBjb2xvciBpcyBsaWdodCBvciBkYXJrLlxyXG4vLy9cclxuLy8vIEBsaW5rIGh0dHA6Ly9yb2JvdHMudGhvdWdodGJvdC5jb20vY2xvc2VyLWxvb2stY29sb3ItbGlnaHRuZXNzXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtDb2xvciAoSGV4KX0gJGNvbG9yXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIGlzLWxpZ2h0KCRjb2xvcilcclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtCb29sfVxyXG5cclxuQGZ1bmN0aW9uIGlzLWxpZ2h0KCRoZXgtY29sb3IpIHtcclxuICAkLWxvY2FsLXJlZDogcmVkKHJnYmEoJGhleC1jb2xvciwgMSkpO1xyXG4gICQtbG9jYWwtZ3JlZW46IGdyZWVuKHJnYmEoJGhleC1jb2xvciwgMSkpO1xyXG4gICQtbG9jYWwtYmx1ZTogYmx1ZShyZ2JhKCRoZXgtY29sb3IsIDEpKTtcclxuICAkLWxvY2FsLWxpZ2h0bmVzczogKCQtbG9jYWwtcmVkICogMC4yMTI2ICsgJC1sb2NhbC1ncmVlbiAqIDAuNzE1MiArICQtbG9jYWwtYmx1ZSAqIDAuMDcyMikgLyAyNTU7XHJcblxyXG4gIEByZXR1cm4gJC1sb2NhbC1saWdodG5lc3MgPiAwLjY7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIENoZWNrcyBmb3IgYSB2YWxpZCBudW1iZXIuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnNcclxuXHJcbkBmdW5jdGlvbiBpcy1udW1iZXIoJHZhbHVlKSB7XHJcbiAgQHJldHVybiBjb250YWlucyhcIjBcIiBcIjFcIiBcIjJcIiBcIjNcIiBcIjRcIiBcIjVcIiBcIjZcIiBcIjdcIiBcIjhcIiBcIjlcIiAwIDEgMiAzIDQgNSA2IDcgOCA5LCAkdmFsdWUpO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgQ1NTIHNpemUuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR2YWx1ZVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnNcclxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gaXMtbGVuZ3RoXHJcblxyXG5AZnVuY3Rpb24gaXMtc2l6ZSgkdmFsdWUpIHtcclxuICBAcmV0dXJuIGlzLWxlbmd0aCgkdmFsdWUpXHJcbiAgICAgICAgICBvciBjb250YWlucyhcImZpbGxcIiBcImZpdC1jb250ZW50XCIgXCJtaW4tY29udGVudFwiIFwibWF4LWNvbnRlbnRcIiwgJHZhbHVlKTtcclxufVxyXG4iLCIvLyBDb252ZXJ0IHBpeGVscyB0byBlbXNcclxuLy8gZWcuIGZvciBhIHJlbGF0aW9uYWwgdmFsdWUgb2YgMTJweCB3cml0ZSBlbSgxMikgd2hlbiB0aGUgcGFyZW50IGlzIDE2cHhcclxuLy8gaWYgdGhlIHBhcmVudCBpcyBhbm90aGVyIHZhbHVlIHNheSAyNHB4IHdyaXRlIGVtKDEyLCAyNClcclxuXHJcbkBmdW5jdGlvbiBlbSgkcHh2YWwsICRiYXNlOiAkZW0tYmFzZSkge1xyXG4gIEBpZiBub3QgdW5pdGxlc3MoJHB4dmFsKSB7XHJcbiAgICAkcHh2YWw6IHN0cmlwLXVuaXRzKCRweHZhbCk7XHJcbiAgfVxyXG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcclxuICAgICRiYXNlOiBzdHJpcC11bml0cygkYmFzZSk7XHJcbiAgfVxyXG4gIEByZXR1cm4gKCRweHZhbCAvICRiYXNlKSAqIDFlbTtcclxufVxyXG4iLCIvLyBDb252ZXJ0IHBpeGVscyB0byByZW1zXHJcbi8vIGVnLiBmb3IgYSByZWxhdGlvbmFsIHZhbHVlIG9mIDEycHggd3JpdGUgcmVtKDEyKVxyXG4vLyBBc3N1bWVzICRlbS1iYXNlIGlzIHRoZSBmb250LXNpemUgb2YgPGh0bWw+XHJcblxyXG5AZnVuY3Rpb24gcmVtKCRweHZhbCkge1xyXG4gIEBpZiBub3QgdW5pdGxlc3MoJHB4dmFsKSB7XHJcbiAgICAkcHh2YWw6IHN0cmlwLXVuaXRzKCRweHZhbCk7XHJcbiAgfVxyXG5cclxuICAkYmFzZTogJGVtLWJhc2U7XHJcbiAgQGlmIG5vdCB1bml0bGVzcygkYmFzZSkge1xyXG4gICAgJGJhc2U6IHN0cmlwLXVuaXRzKCRiYXNlKTtcclxuICB9XHJcbiAgQHJldHVybiAoJHB4dmFsIC8gJGJhc2UpICogMXJlbTtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gTWl4ZXMgYSBjb2xvciB3aXRoIGJsYWNrLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvclxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyIChQZXJjZW50YWdlKX0gJHBlcmNlbnRcclxuLy8vICAgVGhlIGFtb3VudCBvZiBibGFjayB0byBiZSBtaXhlZCBpbi5cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6IHNoYWRlKCNmZmJiNTIsIDYwJSk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY0YTIwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJldHVybiB7Q29sb3J9XHJcblxyXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudCkge1xyXG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHBlcmNlbnQpO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBTdHJpcHMgdGhlIHVuaXQgZnJvbSBhIG51bWJlci5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlciAoV2l0aCBVbml0KX0gJHZhbHVlXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgICRkaW1lbnNpb246IHN0cmlwLXVuaXRzKDEwZW0pO1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgJGRpbWVuc2lvbjogMTA7XHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TnVtYmVyIChVbml0bGVzcyl9XHJcblxyXG5AZnVuY3Rpb24gc3RyaXAtdW5pdHMoJHZhbHVlKSB7XHJcbiAgQHJldHVybiAoJHZhbHVlIC8gKCR2YWx1ZSAqIDAgKyAxKSk7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCB3aGl0ZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3JcclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlciAoUGVyY2VudGFnZSl9ICRwZXJjZW50XHJcbi8vLyAgIFRoZSBhbW91bnQgb2Ygd2hpdGUgdG8gYmUgbWl4ZWQgaW4uXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aW50KCM2ZWNhYTYsIDQwJSk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYThkZmM5O1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJldHVybiB7Q29sb3J9XHJcblxyXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50KSB7XHJcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkcGVyY2VudCk7XHJcbn1cclxuIiwiLy8gUmV0dXJuIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eSBuYW1lcyBpZiBhcHByb3ByaWF0ZVxyXG4vLyBFeGFtcGxlOiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCh0cmFuc2Zvcm0sIGNvbG9yLCBiYWNrZ3JvdW5kKSwgbW96KSAtPiAtbW96LXRyYW5zZm9ybSwgY29sb3IsIGJhY2tncm91bmRcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcHMsICR2ZW5kb3I6IGZhbHNlKSB7XHJcbiAgJG5ldy1wcm9wczogKCk7XHJcblxyXG4gIEBlYWNoICRwcm9wIGluICRwcm9wcyB7XHJcbiAgICAkbmV3LXByb3BzOiBhcHBlbmQoJG5ldy1wcm9wcywgdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yKSwgY29tbWEpO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkbmV3LXByb3BzO1xyXG59XHJcblxyXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yOiBmYWxzZSkge1xyXG4gIC8vIHB1dCBvdGhlciBwcm9wZXJ0aWVzIHRoYXQgbmVlZCB0byBiZSBwcmVmaXhlZCBoZXJlIGFzd2VsbFxyXG4gIEBpZiAkdmVuZG9yIGFuZCAkcHJvcCA9PSB0cmFuc2Zvcm0ge1xyXG4gICAgQHJldHVybiB1bnF1b3RlKCctJyskdmVuZG9yKyctJyskcHJvcCk7XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIEByZXR1cm4gJHByb3A7XHJcbiAgfVxyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBDb252ZXJ0cyBzaG9ydGhhbmQgdG8gdGhlIDQtdmFsdWUgc3ludGF4LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3J0aGFuZFxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgbWFyZ2luOiB1bnBhY2soMWVtIDJlbSk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBtYXJnaW46IDFlbSAyZW0gMWVtIDJlbTtcclxuLy8vICAgfVxyXG5cclxuQGZ1bmN0aW9uIHVucGFjaygkc2hvcnRoYW5kKSB7XHJcbiAgQGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAxIHtcclxuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpO1xyXG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDIge1xyXG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMik7XHJcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMyB7XHJcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMikgbnRoKCRzaG9ydGhhbmQsIDMpIG50aCgkc2hvcnRoYW5kLCAyKTtcclxuICB9IEBlbHNlIHtcclxuICAgIEByZXR1cm4gJHNob3J0aGFuZDtcclxuICB9XHJcbn1cclxuIiwiLy8gU2NhbGluZyBWYXJpYWJsZXNcclxuJGdvbGRlbjogICAgICAgICAgIDEuNjE4O1xyXG4kbWlub3Itc2Vjb25kOiAgICAgMS4wNjc7XHJcbiRtYWpvci1zZWNvbmQ6ICAgICAxLjEyNTtcclxuJG1pbm9yLXRoaXJkOiAgICAgIDEuMjtcclxuJG1ham9yLXRoaXJkOiAgICAgIDEuMjU7XHJcbiRwZXJmZWN0LWZvdXJ0aDogICAxLjMzMztcclxuJGF1Z21lbnRlZC1mb3VydGg6IDEuNDE0O1xyXG4kcGVyZmVjdC1maWZ0aDogICAgMS41O1xyXG4kbWlub3Itc2l4dGg6ICAgICAgMS42O1xyXG4kbWFqb3Itc2l4dGg6ICAgICAgMS42Njc7XHJcbiRtaW5vci1zZXZlbnRoOiAgICAxLjc3ODtcclxuJG1ham9yLXNldmVudGg6ICAgIDEuODc1O1xyXG4kb2N0YXZlOiAgICAgICAgICAgMjtcclxuJG1ham9yLXRlbnRoOiAgICAgIDIuNTtcclxuJG1ham9yLWVsZXZlbnRoOiAgIDIuNjY3O1xyXG4kbWFqb3ItdHdlbGZ0aDogICAgMztcclxuJGRvdWJsZS1vY3RhdmU6ICAgIDQ7XHJcblxyXG4kbW9kdWxhci1zY2FsZS1yYXRpbzogJHBlcmZlY3QtZm91cnRoICFkZWZhdWx0O1xyXG4kbW9kdWxhci1zY2FsZS1iYXNlOiBlbSgkZW0tYmFzZSkgIWRlZmF1bHQ7XHJcblxyXG5AZnVuY3Rpb24gbW9kdWxhci1zY2FsZSgkaW5jcmVtZW50LCAkdmFsdWU6ICRtb2R1bGFyLXNjYWxlLWJhc2UsICRyYXRpbzogJG1vZHVsYXItc2NhbGUtcmF0aW8pIHtcclxuICAkdjE6IG50aCgkdmFsdWUsIDEpO1xyXG4gICR2MjogbnRoKCR2YWx1ZSwgbGVuZ3RoKCR2YWx1ZSkpO1xyXG4gICR2YWx1ZTogJHYxO1xyXG5cclxuICAvLyBzY2FsZSAkdjIgdG8ganVzdCBhYm92ZSAkdjFcclxuICBAd2hpbGUgJHYyID4gJHYxIHtcclxuICAgICR2MjogKCR2MiAvICRyYXRpbyk7IC8vIHdpbGwgYmUgb2ZmLWJ5LTFcclxuICB9XHJcbiAgQHdoaWxlICR2MiA8ICR2MSB7XHJcbiAgICAkdjI6ICgkdjIgKiAkcmF0aW8pOyAvLyB3aWxsIGZpeCBvZmYtYnktMVxyXG4gIH1cclxuXHJcbiAgLy8gY2hlY2sgQUZURVIgc2NhbGluZyAkdjIgdG8gcHJldmVudCBkb3VibGUtY291bnRpbmcgY29ybmVyLWNhc2VcclxuICAkZG91YmxlLXN0cmFuZGVkOiAkdjIgPiAkdjE7XHJcblxyXG4gIEBpZiAkaW5jcmVtZW50ID4gMCB7XHJcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRpbmNyZW1lbnQge1xyXG4gICAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCBhbmQgKCR2MSAqICRyYXRpbykgPiAkdjIge1xyXG4gICAgICAgICR2YWx1ZTogJHYyO1xyXG4gICAgICAgICR2MjogKCR2MiAqICRyYXRpbyk7XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICR2MTogKCR2MSAqICRyYXRpbyk7XHJcbiAgICAgICAgJHZhbHVlOiAkdjE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAkaW5jcmVtZW50IDwgMCB7XHJcbiAgICAvLyBhZGp1c3QgJHYyIHRvIGp1c3QgYmVsb3cgJHYxXHJcbiAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCB7XHJcbiAgICAgICR2MjogKCR2MiAvICRyYXRpbyk7XHJcbiAgICB9XHJcblxyXG4gICAgQGZvciAkaSBmcm9tICRpbmNyZW1lbnQgdGhyb3VnaCAtMSB7XHJcbiAgICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIGFuZCAoJHYxIC8gJHJhdGlvKSA8ICR2MiB7XHJcbiAgICAgICAgJHZhbHVlOiAkdjI7XHJcbiAgICAgICAgJHYyOiAoJHYyIC8gJHJhdGlvKTtcclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgJHYxOiAoJHYxIC8gJHJhdGlvKTtcclxuICAgICAgICAkdmFsdWU6ICR2MTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkdmFsdWU7XHJcbn1cclxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHN0ci10by1udW0gZm4uXHJcbi8vIFNvdXJjZTogaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0Lzk2NDc0MDhcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5AZnVuY3Rpb24gX2NvbnZlcnQtdW5pdHMoJG51bWJlciwgJHVuaXQpIHtcclxuICAkc3RyaW5nczogXCJweFwiLCBcImNtXCIsIFwibW1cIiwgXCIlXCIsIFwiY2hcIiwgXCJwaWNhXCIsIFwiaW5cIiwgXCJlbVwiLCBcInJlbVwiLCBcInB0XCIsIFwicGNcIiwgXCJleFwiLCBcInZ3XCIsIFwidmhcIiwgXCJ2bWluXCIsIFwidm1heFwiLCBcImRlZ1wiLCBcInJhZFwiLCBcImdyYWRcIiwgXCJ0dXJuXCI7XHJcbiAgJHVuaXRzOiAgIDFweCwgMWNtLCAxbW0sIDElLCAxY2gsIDFwaWNhLCAxaW4sIDFlbSwgMXJlbSwgMXB0LCAxcGMsIDFleCwgMXZ3LCAxdmgsIDF2bWluLCAxdm1heCwgMWRlZywgMXJhZCwgMWdyYWQsIDF0dXJuO1xyXG4gICRpbmRleDogaW5kZXgoJHN0cmluZ3MsICR1bml0KTtcclxuXHJcbiAgQGlmIG5vdCAkaW5kZXgge1xyXG4gICAgQHdhcm4gXCJVbmtub3duIHVuaXQgYCN7JHVuaXR9YC5cIjtcclxuICAgIEByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBAaWYgdHlwZS1vZigkbnVtYmVyKSAhPSBcIm51bWJlclwiIHtcclxuICAgIEB3YXJuIFwiYCN7JG51bWJlcn0gaXMgbm90IGEgbnVtYmVyYFwiO1xyXG4gICAgQHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJG51bWJlciAqIG50aCgkdW5pdHMsICRpbmRleCk7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIERpcmVjdGlvbmFsLXByb3BlcnR5IG1peGlucyBhcmUgc2hvcnRoYW5kcyBmb3Igd3JpdGluZyBwcm9wZXJ0aWVzIGxpa2UgdGhlIGZvbGxvd2luZ1xyXG4vLy9cclxuLy8vIEBpZ25vcmUgWW91IGNhbiBhbHNvIHVzZSBgZmFsc2VgIGluc3RlYWQgb2YgYG51bGxgLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHNcclxuLy8vICAgTGlzdCBvZiBkaXJlY3Rpb25hbCB2YWx1ZXNcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1zdHlsZShkb3R0ZWQgbnVsbCk7XHJcbi8vLyAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwgMCAxMHB4KTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IGRvdHRlZDtcclxuLy8vICAgICBib3JkZXItdG9wLXN0eWxlOiBkb3R0ZWQ7XHJcbi8vLyAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuLy8vICAgICBtYXJnaW4tbGVmdDogMDtcclxuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zLWZhbHN5XHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TGlzdH1cclxuXHJcbkBmdW5jdGlvbiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpIHtcclxuICAkb3V0cHV0OiBudWxsO1xyXG5cclxuICAkYTogbnRoKCR2YWxzLCAxKTtcclxuICAkYjogaWYobGVuZ3RoKCR2YWxzKSA8IDIsICRhLCBudGgoJHZhbHMsIDIpKTtcclxuICAkYzogaWYobGVuZ3RoKCR2YWxzKSA8IDMsICRhLCBudGgoJHZhbHMsIDMpKTtcclxuICAkZDogaWYobGVuZ3RoKCR2YWxzKSA8IDIsICRhLCBudGgoJHZhbHMsIGlmKGxlbmd0aCgkdmFscykgPCA0LCAyLCA0KSkpO1xyXG5cclxuICBAaWYgJGEgPT0gMCB7ICRhOiAwOyB9XHJcbiAgQGlmICRiID09IDAgeyAkYjogMDsgfVxyXG4gIEBpZiAkYyA9PSAwIHsgJGM6IDA7IH1cclxuICBAaWYgJGQgPT0gMCB7ICRkOiAwOyB9XHJcblxyXG4gIEBpZiAkYSA9PSAkYiBhbmQgJGEgPT0gJGMgYW5kICRhID09ICRkIHsgJG91dHB1dDogJGE7ICAgICAgICAgIH1cclxuICBAZWxzZSBpZiAkYSA9PSAkYyBhbmQgJGIgPT0gJGQgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiOyAgICAgICB9XHJcbiAgQGVsc2UgaWYgJGIgPT0gJGQgICAgICAgICAgICAgICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYiAkYzsgICAgfVxyXG4gIEBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJG91dHB1dDogJGEgJGIgJGMgJGQ7IH1cclxuXHJcbiAgQHJldHVybiAkb3V0cHV0O1xyXG59XHJcblxyXG4vLy8gT3V0cHV0IGRpcmVjdGlvbmFsIHByb3BlcnRpZXMsIGZvciBpbnN0YW5jZSBgbWFyZ2luYC5cclxuLy8vXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHByZVxyXG4vLy8gICBQcmVmaXggdG8gdXNlXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN1ZlxyXG4vLy8gICBTdWZmaXggdG8gdXNlXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWxzXHJcbi8vLyAgIExpc3Qgb2YgdmFsdWVzXHJcbi8vL1xyXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb2xsYXBzZS1kaXJlY3Rpb25hbHNcclxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnMtZmFsc3lcclxuXHJcbkBtaXhpbiBkaXJlY3Rpb25hbC1wcm9wZXJ0eSgkcHJlLCAkc3VmLCAkdmFscykge1xyXG4gIC8vIFByb3BlcnR5IE5hbWVzXHJcbiAgJHRvcDogICAgJHByZSArIFwiLXRvcFwiICAgICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcclxuICAkYm90dG9tOiAkcHJlICsgXCItYm90dG9tXCIgKyBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xyXG4gICRsZWZ0OiAgICRwcmUgKyBcIi1sZWZ0XCIgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XHJcbiAgJHJpZ2h0OiAgJHByZSArIFwiLXJpZ2h0XCIgICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcclxuICAkYWxsOiAgICAkcHJlICsgICAgICAgICAgICAgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcclxuXHJcbiAgJHZhbHM6IGNvbGxhcHNlLWRpcmVjdGlvbmFscygkdmFscyk7XHJcblxyXG4gIEBpZiBjb250YWlucy1mYWxzeSgkdmFscykge1xyXG4gICAgQGlmIG50aCgkdmFscywgMSkgeyAjeyR0b3B9OiBudGgoJHZhbHMsIDEpOyB9XHJcblxyXG4gICAgQGlmIGxlbmd0aCgkdmFscykgPT0gMSB7XHJcbiAgICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skcmlnaHR9OiBudGgoJHZhbHMsIDEpOyB9XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRyaWdodH06IG50aCgkdmFscywgMik7IH1cclxuICAgIH1cclxuXHJcbiAgICBAaWYgbGVuZ3RoKCR2YWxzKSA9PSAyIHtcclxuICAgICAgQGlmIG50aCgkdmFscywgMSkgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDEpOyB9XHJcbiAgICAgIEBpZiBudGgoJHZhbHMsIDIpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCAyKTsgfVxyXG4gICAgfSBAZWxzZSBpZiBsZW5ndGgoJHZhbHMpID09IDMge1xyXG4gICAgICBAaWYgbnRoKCR2YWxzLCAzKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMyk7IH1cclxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDIpOyB9XHJcbiAgICB9IEBlbHNlIGlmIGxlbmd0aCgkdmFscykgPT0gNCB7XHJcbiAgICAgIEBpZiBudGgoJHZhbHMsIDMpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAzKTsgfVxyXG4gICAgICBAaWYgbnRoKCR2YWxzLCA0KSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgNCk7IH1cclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgICN7JGFsbH06ICR2YWxzO1xyXG4gIH1cclxufVxyXG4iLCIvLyBVc2VkIGZvciBjcmVhdGluZyB0aGUgc291cmNlIHN0cmluZyBmb3IgZm9udHMgdXNpbmcgQGZvbnQtZmFjZVxyXG4vLyBSZWZlcmVuY2U6IGh0dHA6Ly9nb28uZ2wvUnUxYktQXHJcblxyXG5AZnVuY3Rpb24gZm9udC11cmwtcHJlZml4ZXIoJGFzc2V0LXBpcGVsaW5lKSB7XHJcbiAgQGlmICRhc3NldC1waXBlbGluZSA9PSB0cnVlIHtcclxuICAgIEByZXR1cm4gZm9udC11cmw7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAcmV0dXJuIHVybDtcclxuICB9XHJcbn1cclxuXHJcbkBmdW5jdGlvbiBmb250LXNvdXJjZS1kZWNsYXJhdGlvbihcclxuICAkZm9udC1mYW1pbHksXHJcbiAgJGZpbGUtcGF0aCxcclxuICAkYXNzZXQtcGlwZWxpbmUsXHJcbiAgJGZpbGUtZm9ybWF0cyxcclxuICAkZm9udC11cmwpIHtcclxuXHJcbiAgJHNyYzogKCk7XHJcblxyXG4gICRmb3JtYXRzLW1hcDogKFxyXG4gICAgZW90OiAgIFwiI3skZmlsZS1wYXRofS5lb3Q/I2llZml4XCIgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksXHJcbiAgICB3b2ZmMjogXCIjeyRmaWxlLXBhdGh9LndvZmYyXCIgZm9ybWF0KFwid29mZjJcIiksXHJcbiAgICB3b2ZmOiAgXCIjeyRmaWxlLXBhdGh9LndvZmZcIiBmb3JtYXQoXCJ3b2ZmXCIpLFxyXG4gICAgdHRmOiAgIFwiI3skZmlsZS1wYXRofS50dGZcIiBmb3JtYXQoXCJ0cnVldHlwZVwiKSxcclxuICAgIHN2ZzogICBcIiN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fVwiIGZvcm1hdChcInN2Z1wiKVxyXG4gICk7XHJcblxyXG4gIEBlYWNoICRrZXksICR2YWx1ZXMgaW4gJGZvcm1hdHMtbWFwIHtcclxuICAgIEBpZiBjb250YWlucygkZmlsZS1mb3JtYXRzLCAka2V5KSB7XHJcbiAgICAgICRmaWxlLXBhdGg6IG50aCgkdmFsdWVzLCAxKTtcclxuICAgICAgJGZvbnQtZm9ybWF0OiBudGgoJHZhbHVlcywgMik7XHJcblxyXG4gICAgICBAaWYgJGFzc2V0LXBpcGVsaW5lID09IHRydWUge1xyXG4gICAgICAgICRzcmM6IGFwcGVuZCgkc3JjLCBmb250LXVybCgkZmlsZS1wYXRoKSAkZm9udC1mb3JtYXQsIGNvbW1hKTtcclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgJHNyYzogYXBwZW5kKCRzcmMsIHVybCgkZmlsZS1wYXRoKSAkZm9udC1mb3JtYXQsIGNvbW1hKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkc3JjO1xyXG59XHJcbiIsIkBmdW5jdGlvbiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvc2l0aW9ucykge1xyXG4gIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zXHJcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIpXHJcbiAgYW5kICh0eXBlLW9mKCRncmFkaWVudC1wb3NpdGlvbnMpICE9IGNvbG9yKSB7XHJcbiAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvc2l0aW9ucyk7XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRncmFkaWVudC1wb3NpdGlvbnNcclxuICBhbmQgKCRncmFkaWVudC10eXBlID09IHJhZGlhbClcclxuICBhbmQgKHR5cGUtb2YoJGdyYWRpZW50LXBvc2l0aW9ucykgIT0gY29sb3IpIHtcclxuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9yYWRpYWwtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcclxuICB9XHJcbiAgQHJldHVybiAkZ3JhZGllbnQtcG9zaXRpb25zO1xyXG59XHJcbiIsIi8vIFByaXZhdGUgZnVuY3Rpb24gZm9yIGxpbmVhci1ncmFkaWVudC1wYXJzZXJcclxuQGZ1bmN0aW9uIF9saW5lYXItYW5nbGUtcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCkge1xyXG4gICRvZmZzZXQ6IG51bGw7XHJcbiAgJHVuaXQtc2hvcnQ6ICBzdHItc2xpY2UoJGZpcnN0LXZhbCwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSAtIDIsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xyXG4gICR1bml0LWxvbmc6ICAgc3RyLXNsaWNlKCRmaXJzdC12YWwsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkgLSAzLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcclxuXHJcbiAgQGlmICgkdW5pdC1sb25nID09IFwiZ3JhZFwiKSBvclxyXG4gICAgICAoJHVuaXQtbG9uZyA9PSBcInR1cm5cIikge1xyXG4gICAgJG9mZnNldDogaWYoJHVuaXQtbG9uZyA9PSBcImdyYWRcIiwgLTEwMGdyYWQgKiAzLCAtMC43NXR1cm4pO1xyXG4gIH1cclxuXHJcbiAgQGVsc2UgaWYgKCR1bml0LXNob3J0ID09IFwiZGVnXCIpIG9yXHJcbiAgICAgICAgICAgKCR1bml0LXNob3J0ID09IFwicmFkXCIpIHtcclxuICAgICRvZmZzZXQ6IGlmKCR1bml0LXNob3J0ID09IFwiZGVnXCIsIC05MCAqIDMsIDEuNnJhZCk7XHJcbiAgfVxyXG5cclxuICBAaWYgJG9mZnNldCB7XHJcbiAgICAkbnVtOiBfc3RyLXRvLW51bSgkZmlyc3QtdmFsKTtcclxuXHJcbiAgICBAcmV0dXJuIChcclxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAoJG9mZnNldCAtICRudW0pICsgJHN1ZmZpeCxcclxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCJAZnVuY3Rpb24gX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoJGltYWdlKSB7XHJcbiAgJGltYWdlOiB1bnF1b3RlKCRpbWFnZSk7XHJcbiAgJGdyYWRpZW50czogKCk7XHJcbiAgJHN0YXJ0OiBzdHItaW5kZXgoJGltYWdlLCBcIihcIik7XHJcbiAgJGVuZDogc3RyLWluZGV4KCRpbWFnZSwgXCIsXCIpO1xyXG4gICRmaXJzdC12YWw6IHN0ci1zbGljZSgkaW1hZ2UsICRzdGFydCArIDEsICRlbmQgLSAxKTtcclxuXHJcbiAgJHByZWZpeDogc3RyLXNsaWNlKCRpbWFnZSwgMSwgJHN0YXJ0KTtcclxuICAkc3VmZml4OiBzdHItc2xpY2UoJGltYWdlLCAkZW5kLCBzdHItbGVuZ3RoKCRpbWFnZSkpO1xyXG5cclxuICAkaGFzLW11bHRpcGxlLXZhbHM6IHN0ci1pbmRleCgkZmlyc3QtdmFsLCBcIiBcIik7XHJcbiAgJGhhcy1zaW5nbGUtcG9zaXRpb246IHVucXVvdGUoX3Bvc2l0aW9uLWZsaXBwZXIoJGZpcnN0LXZhbCkgKyBcIlwiKTtcclxuICAkaGFzLWFuZ2xlOiBpcy1udW1iZXIoc3RyLXNsaWNlKCRmaXJzdC12YWwsIDEsIDEpKTtcclxuXHJcbiAgQGlmICRoYXMtbXVsdGlwbGUtdmFscyB7XHJcbiAgICAkZ3JhZGllbnRzOiBfbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgsICRoYXMtbXVsdGlwbGUtdmFscyk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiAkaGFzLXNpbmdsZS1wb3NpdGlvbiAhPSBcIlwiIHtcclxuICAgICRwb3M6IHVucXVvdGUoJGhhcy1zaW5nbGUtcG9zaXRpb24gKyBcIlwiKTtcclxuXHJcbiAgICAkZ3JhZGllbnRzOiAoXHJcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXHJcbiAgICAgIHNwZWMtaW1hZ2U6ICRwcmVmaXggKyBcInRvIFwiICsgJHBvcyArICRzdWZmaXhcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiAkaGFzLWFuZ2xlIHtcclxuICAgIC8vIFJvdGF0ZSBkZWdyZWUgZm9yIHdlYmtpdFxyXG4gICAgJGdyYWRpZW50czogX2xpbmVhci1hbmdsZS1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4KTtcclxuICB9XHJcblxyXG4gIEBlbHNlIHtcclxuICAgICRncmFkaWVudHM6IChcclxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcclxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkZ3JhZGllbnRzO1xyXG59XHJcbiIsIkBmdW5jdGlvbiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJHBvcykge1xyXG4gICR0eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XHJcbiAgJHNwZWM6IG51bGw7XHJcbiAgJGRlZ3JlZTogbnVsbDtcclxuICAkc2lkZTogbnVsbDtcclxuICAkY29ybmVyOiBudWxsO1xyXG4gICRsZW5ndGg6IGxlbmd0aCgkcG9zKTtcclxuICAvLyBQYXJzZSBTaWRlIGFuZCBjb3JuZXIgcG9zaXRpb25zXHJcbiAgQGlmICgkbGVuZ3RoID4gMSkge1xyXG4gICAgQGlmIG50aCgkcG9zLCAxKSA9PSBcInRvXCIgeyAvLyBOZXdlciBzeW50YXhcclxuICAgICAgJHNpZGU6IG50aCgkcG9zLCAyKTtcclxuXHJcbiAgICAgIEBpZiAkbGVuZ3RoID09IDIgeyAvLyBlZy4gdG8gdG9wXHJcbiAgICAgICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcclxuICAgICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7IC8vIGVnLiB0byB0b3AgbGVmdFxyXG4gICAgICAgICRjb3JuZXI6IG50aCgkcG9zLCAzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgQGVsc2UgaWYgJGxlbmd0aCA9PSAyIHsgLy8gT2xkZXIgc3ludGF4IChcInRvcCBsZWZ0XCIpXHJcbiAgICAgICRzaWRlOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMSkpO1xyXG4gICAgICAkY29ybmVyOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgbGVmdFwiKSB7XHJcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcclxuICAgIH1cclxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgcmlnaHRcIikge1xyXG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJyaWdodCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIHJpZ2h0XCIpIHtcclxuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xyXG4gICAgfVxyXG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwibGVmdCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIGxlZnRcIikge1xyXG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XHJcbiAgICB9XHJcbiAgICAkc3BlYzogdG8gJHNpZGUgJGNvcm5lcjtcclxuICB9XHJcbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAxIHtcclxuICAgIC8vIFN3YXAgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XHJcbiAgICBAaWYgJHR5cGUgPT0gc3RyaW5nIHtcclxuICAgICAgJGRlZ3JlZTogJHBvcztcclxuICAgICAgJHNwZWM6IHRvIF9wb3NpdGlvbi1mbGlwcGVyKCRwb3MpO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICAkZGVncmVlOiAtMjcwIC0gJHBvczsgLy9yb3RhdGUgdGhlIGdyYWRpZW50IG9wcG9zaXRlIGZyb20gc3BlY1xyXG4gICAgICAkc3BlYzogJHBvcztcclxuICAgIH1cclxuICB9XHJcbiAgJGRlZ3JlZTogdW5xdW90ZSgkZGVncmVlICsgXCIsXCIpO1xyXG4gICRzcGVjOiAgIHVucXVvdGUoJHNwZWMgKyBcIixcIik7XHJcbiAgQHJldHVybiAkZGVncmVlICRzcGVjO1xyXG59XHJcblxyXG5AZnVuY3Rpb24gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcykge1xyXG4gIEByZXR1cm4gaWYoJHBvcyA9PSBsZWZ0LCByaWdodCwgbnVsbClcclxuICAgICAgICAgaWYoJHBvcyA9PSByaWdodCwgbGVmdCwgbnVsbClcclxuICAgICAgICAgaWYoJHBvcyA9PSB0b3AsIGJvdHRvbSwgbnVsbClcclxuICAgICAgICAgaWYoJHBvcyA9PSBib3R0b20sIHRvcCwgbnVsbCk7XHJcbn1cclxuIiwiLy8gUHJpdmF0ZSBmdW5jdGlvbiBmb3IgbGluZWFyLWdyYWRpZW50LXBhcnNlclxyXG5AZnVuY3Rpb24gX2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4LCAkaGFzLW11bHRpcGxlLXZhbHMpIHtcclxuICAkdmFsLTE6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAxLCAkaGFzLW11bHRpcGxlLXZhbHMgLSAxKTtcclxuICAkdmFsLTI6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAkaGFzLW11bHRpcGxlLXZhbHMgKyAxLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcclxuICAkdmFsLTM6IG51bGw7XHJcbiAgJGhhcy12YWwtMzogc3RyLWluZGV4KCR2YWwtMiwgXCIgXCIpO1xyXG5cclxuICBAaWYgJGhhcy12YWwtMyB7XHJcbiAgICAkdmFsLTM6IHN0ci1zbGljZSgkdmFsLTIsICRoYXMtdmFsLTMgKyAxLCBzdHItbGVuZ3RoKCR2YWwtMikpO1xyXG4gICAgJHZhbC0yOiBzdHItc2xpY2UoJHZhbC0yLCAxLCAkaGFzLXZhbC0zIC0gMSk7XHJcbiAgfVxyXG5cclxuICAkcG9zOiBfcG9zaXRpb24tZmxpcHBlcigkdmFsLTEpIF9wb3NpdGlvbi1mbGlwcGVyKCR2YWwtMikgX3Bvc2l0aW9uLWZsaXBwZXIoJHZhbC0zKTtcclxuICAkcG9zOiB1bnF1b3RlKCRwb3MgKyBcIlwiKTtcclxuXHJcbiAgLy8gVXNlIG9sZCBzcGVjIGZvciB3ZWJraXRcclxuICBAaWYgJHZhbC0xID09IFwidG9cIiB7XHJcbiAgICBAcmV0dXJuIChcclxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcclxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gQnJpbmcgdGhlIGNvZGUgdXAgdG8gc3BlY1xyXG4gIEBlbHNlIHtcclxuICAgIEByZXR1cm4gKFxyXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxyXG4gICAgICBzcGVjLWltYWdlOiAkcHJlZml4ICsgXCJ0byBcIiArICRwb3MgKyAkc3VmZml4XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCJAZnVuY3Rpb24gX3JhZGlhbC1hcmctcGFyc2VyKCRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZSkge1xyXG4gIEBlYWNoICR2YWx1ZSBpbiAkZzEsICRnMiB7XHJcbiAgICAkZmlyc3QtdmFsOiBudGgoJHZhbHVlLCAxKTtcclxuICAgICRwb3MtdHlwZTogIHR5cGUtb2YoJGZpcnN0LXZhbCk7XHJcbiAgICAkc3BlYy1hdC1pbmRleDogbnVsbDtcclxuXHJcbiAgICAvLyBEZXRlcm1pbmUgaWYgc3BlYyB3YXMgcGFzc2VkIHRvIG1peGluXHJcbiAgICBAaWYgdHlwZS1vZigkdmFsdWUpID09IGxpc3Qge1xyXG4gICAgICAkc3BlYy1hdC1pbmRleDogaWYoaW5kZXgoJHZhbHVlLCBhdCksIGluZGV4KCR2YWx1ZSwgYXQpLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBAaWYgJHNwZWMtYXQtaW5kZXgge1xyXG4gICAgICBAaWYgJHNwZWMtYXQtaW5kZXggPiAxIHtcclxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkc3BlYy1hdC1pbmRleCAtIDEpIHtcclxuICAgICAgICAgICRzaGFwZS1zaXplOiAkc2hhcGUtc2l6ZSBudGgoJHZhbHVlLCAkaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcclxuICAgICAgICAgICRwb3M6ICRwb3MgbnRoKCR2YWx1ZSwgJGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBAZWxzZSBpZiAkc3BlYy1hdC1pbmRleCA9PSAxIHtcclxuICAgICAgICBAZm9yICRpIGZyb20gKCRzcGVjLWF0LWluZGV4ICsgMSkgdGhyb3VnaCBsZW5ndGgoJHZhbHVlKSB7XHJcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgJGcxOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIG5vdCBzcGVjIGNhbGN1bGF0ZSBjb3JyZWN0IHZhbHVlc1xyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAaWYgKCRwb3MtdHlwZSAhPSBjb2xvcikgb3IgKCRmaXJzdC12YWwgIT0gXCJ0cmFuc3BhcmVudFwiKSB7XHJcbiAgICAgICAgQGlmICgkcG9zLXR5cGUgPT0gbnVtYmVyKVxyXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY2VudGVyXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJ0b3BcIilcclxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInJpZ2h0XCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJib3R0b21cIilcclxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImxlZnRcIikge1xyXG5cclxuICAgICAgICAgICRwb3M6ICR2YWx1ZTtcclxuXHJcbiAgICAgICAgICBAaWYgJHBvcyA9PSAkZzEge1xyXG4gICAgICAgICAgICAkZzE6IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAZWxzZSBpZlxyXG4gICAgICAgICAgICgkZmlyc3QtdmFsID09IFwiZWxsaXBzZVwiKVxyXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY2lyY2xlXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjbG9zZXN0LXNpZGVcIilcclxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3QtY29ybmVyXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJmYXJ0aGVzdC1zaWRlXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJmYXJ0aGVzdC1jb3JuZXJcIilcclxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvbnRhaW5cIilcclxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvdmVyXCIpIHtcclxuXHJcbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHZhbHVlO1xyXG5cclxuICAgICAgICAgIEBpZiAkdmFsdWUgPT0gJGcxIHtcclxuICAgICAgICAgICAgJGcxOiBudWxsO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBlbHNlIGlmICR2YWx1ZSA9PSAkZzIge1xyXG4gICAgICAgICAgICAkZzI6IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEByZXR1cm4gJGcxLCAkZzIsICRwb3MsICRzaGFwZS1zaXplO1xyXG59XHJcbiIsIkBmdW5jdGlvbiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvcykge1xyXG4gICRzaGFwZS1zaXplOiBudGgoJGdyYWRpZW50LXBvcywgMSk7XHJcbiAgJHBvczogICAgICAgIG50aCgkZ3JhZGllbnQtcG9zLCAyKTtcclxuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XHJcblxyXG4gICRwcmUtc3BlYzogdW5xdW90ZShpZigkcG9zLCBcIiN7JHBvc30sIFwiLCBudWxsKSlcclxuICAgICAgICAgICAgIHVucXVvdGUoaWYoJHNoYXBlLXNpemUsIFwiI3skc2hhcGUtc2l6ZX0sXCIsIG51bGwpKTtcclxuICAkcG9zLXNwZWM6IGlmKCRwb3MsIFwiYXQgI3skcG9zfVwiLCBudWxsKTtcclxuXHJcbiAgJHNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyRwb3Mtc3BlY31cIjtcclxuXHJcbiAgLy8gQWRkIGNvbW1hXHJcbiAgQGlmICgkc3BlYyAhPSBcIiAgXCIpIHtcclxuICAgICRzcGVjOiBcIiN7JHNwZWN9LFwiO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkcHJlLXNwZWMgJHNwZWM7XHJcbn1cclxuIiwiQGZ1bmN0aW9uIF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSkge1xyXG4gICRpbWFnZTogdW5xdW90ZSgkaW1hZ2UpO1xyXG4gICRncmFkaWVudHM6ICgpO1xyXG4gICRzdGFydDogc3RyLWluZGV4KCRpbWFnZSwgXCIoXCIpO1xyXG4gICRlbmQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiLFwiKTtcclxuICAkZmlyc3QtdmFsOiBzdHItc2xpY2UoJGltYWdlLCAkc3RhcnQgKyAxLCAkZW5kIC0gMSk7XHJcblxyXG4gICRwcmVmaXg6IHN0ci1zbGljZSgkaW1hZ2UsIDEsICRzdGFydCk7XHJcbiAgJHN1ZmZpeDogc3RyLXNsaWNlKCRpbWFnZSwgJGVuZCwgc3RyLWxlbmd0aCgkaW1hZ2UpKTtcclxuXHJcbiAgJGlzLXNwZWMtc3ludGF4OiBzdHItaW5kZXgoJGZpcnN0LXZhbCwgXCJhdFwiKTtcclxuXHJcbiAgQGlmICRpcy1zcGVjLXN5bnRheCBhbmQgJGlzLXNwZWMtc3ludGF4ID4gMSB7XHJcbiAgICAka2V5d29yZDogc3RyLXNsaWNlKCRmaXJzdC12YWwsIDEsICRpcy1zcGVjLXN5bnRheCAtIDIpO1xyXG4gICAgJHBvczogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRpcy1zcGVjLXN5bnRheCArIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xyXG4gICAgJHBvczogYXBwZW5kKCRwb3MsICRrZXl3b3JkLCBjb21tYSk7XHJcblxyXG4gICAgJGdyYWRpZW50czogKFxyXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxyXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiAkaXMtc3BlYy1zeW50YXggPT0gMSB7XHJcbiAgICAkcG9zOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGlzLXNwZWMtc3ludGF4ICsgMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XHJcblxyXG4gICAgJGdyYWRpZW50czogKFxyXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxyXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiBzdHItaW5kZXgoJGltYWdlLCBcImNvdmVyXCIpIG9yIHN0ci1pbmRleCgkaW1hZ2UsIFwiY29udGFpblwiKSB7XHJcbiAgICBAd2FybiBcIlJhZGlhbC1ncmFkaWVudCBuZWVkcyB0byBiZSB1cGRhdGVkIHRvIGNvbmZvcm0gdG8gbGF0ZXN0IHNwZWMuXCI7XHJcblxyXG4gICAgJGdyYWRpZW50czogKFxyXG4gICAgICB3ZWJraXQtaW1hZ2U6IG51bGwsXHJcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIEBlbHNlIHtcclxuICAgICRncmFkaWVudHM6IChcclxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcclxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkZ3JhZGllbnRzO1xyXG59XHJcbiIsIi8vIFVzZXIgZm9yIGxpbmVhciBhbmQgcmFkaWFsIGdyYWRpZW50cyB3aXRoaW4gYmFja2dyb3VuZC1pbWFnZSBvciBib3JkZXItaW1hZ2UgcHJvcGVydGllc1xyXG5cclxuQGZ1bmN0aW9uIF9yZW5kZXItZ3JhZGllbnRzKCRncmFkaWVudC1wb3NpdGlvbnMsICRncmFkaWVudHMsICRncmFkaWVudC10eXBlLCAkdmVuZG9yOiBmYWxzZSkge1xyXG4gICRwcmUtc3BlYzogbnVsbDtcclxuICAkc3BlYzogbnVsbDtcclxuICAkdmVuZG9yLWdyYWRpZW50czogbnVsbDtcclxuICBAaWYgJGdyYWRpZW50LXR5cGUgPT0gbGluZWFyIHtcclxuICAgIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zIHtcclxuICAgICAgJHByZS1zcGVjOiBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMSk7XHJcbiAgICAgICRzcGVjOiAgICAgbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwge1xyXG4gICAgJHByZS1zcGVjOiBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMSk7XHJcbiAgICAkc3BlYzogICAgIG50aCgkZ3JhZGllbnQtcG9zaXRpb25zLCAyKTtcclxuICB9XHJcblxyXG4gIEBpZiAkdmVuZG9yIHtcclxuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiAtI3skdmVuZG9yfS0jeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRwcmUtc3BlY30gJGdyYWRpZW50cyk7XHJcbiAgfVxyXG4gIEBlbHNlIGlmICR2ZW5kb3IgPT0gZmFsc2Uge1xyXG4gICAgJHZlbmRvci1ncmFkaWVudHM6IFwiI3skZ3JhZGllbnQtdHlwZX0tZ3JhZGllbnQoI3skc3BlY30gI3skZ3JhZGllbnRzfSlcIjtcclxuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiB1bnF1b3RlKCR2ZW5kb3ItZ3JhZGllbnRzKTtcclxuICB9XHJcbiAgQHJldHVybiAkdmVuZG9yLWdyYWRpZW50cztcclxufVxyXG4iLCJAZnVuY3Rpb24gX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpIHtcclxuICAkc2hhcGUtc2l6ZS1zcGVjOiBudWxsO1xyXG4gIEBlYWNoICR2YWx1ZSBpbiAkc2hhcGUtc2l6ZSB7XHJcbiAgICBAaWYgKCR2YWx1ZSA9PSBcImNvdmVyXCIpIG9yICgkdmFsdWUgPT0gXCJjb250YWluXCIpIHtcclxuICAgICAgJHZhbHVlOiBudWxsO1xyXG4gICAgfVxyXG4gICAgJHNoYXBlLXNpemUtc3BlYzogXCIjeyRzaGFwZS1zaXplLXNwZWN9ICN7JHZhbHVlfVwiO1xyXG4gIH1cclxuICBAcmV0dXJuICRzaGFwZS1zaXplLXNwZWM7XHJcbn1cclxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGxpbmVhci9yYWRpYWwtZ3JhZGllbnQtcGFyc2Vycy5cclxuLy8gU291cmNlOiBodHRwOi8vc2Fzc21laXN0ZXIuY29tL2dpc3QvOTY0NzQwOFxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcbkBmdW5jdGlvbiBfc3RyLXRvLW51bSgkc3RyaW5nKSB7XHJcbiAgLy8gTWF0cmljZXNcclxuICAkc3RyaW5nczogXCIwXCIgXCIxXCIgXCIyXCIgXCIzXCIgXCI0XCIgXCI1XCIgXCI2XCIgXCI3XCIgXCI4XCIgXCI5XCI7XHJcbiAgJG51bWJlcnM6ICAwICAgMSAgIDIgICAzICAgNCAgIDUgICA2ICAgNyAgIDggICA5O1xyXG5cclxuICAvLyBSZXN1bHRcclxuICAkcmVzdWx0OiAwO1xyXG4gICRkaXZpZGVyOiAwO1xyXG4gICRtaW51czogZmFsc2U7XHJcblxyXG4gIC8vIExvb3BpbmcgdGhyb3VnaCBhbGwgY2hhcmFjdGVyc1xyXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyLWxlbmd0aCgkc3RyaW5nKSB7XHJcbiAgICAkY2hhcmFjdGVyOiBzdHItc2xpY2UoJHN0cmluZywgJGksICRpKTtcclxuICAgICRpbmRleDogaW5kZXgoJHN0cmluZ3MsICRjaGFyYWN0ZXIpO1xyXG5cclxuICAgIEBpZiAkY2hhcmFjdGVyID09IFwiLVwiIHtcclxuICAgICAgJG1pbnVzOiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIEBlbHNlIGlmICRjaGFyYWN0ZXIgPT0gXCIuXCIge1xyXG4gICAgICAkZGl2aWRlcjogMTtcclxuICAgIH1cclxuXHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIEBpZiBub3QgJGluZGV4IHtcclxuICAgICAgICAkcmVzdWx0OiBpZigkbWludXMsICRyZXN1bHQgKiAtMSwgJHJlc3VsdCk7XHJcbiAgICAgICAgQHJldHVybiBfY29udmVydC11bml0cygkcmVzdWx0LCBzdHItc2xpY2UoJHN0cmluZywgJGkpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJG51bWJlcjogbnRoKCRudW1iZXJzLCAkaW5kZXgpO1xyXG5cclxuICAgICAgQGlmICRkaXZpZGVyID09IDAge1xyXG4gICAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgIC8vIE1vdmUgdGhlIGRlY2ltYWwgZG90IHRvIHRoZSBsZWZ0XHJcbiAgICAgICAgJGRpdmlkZXI6ICRkaXZpZGVyICogMTA7XHJcbiAgICAgICAgJG51bWJlcjogJG51bWJlciAvICRkaXZpZGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgJG51bWJlcjtcclxuICAgIH1cclxuICB9XHJcbiAgQHJldHVybiBpZigkbWludXMsICRyZXN1bHQgKiAtMSwgJHJlc3VsdCk7XHJcbn1cclxuIiwiLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1hbmltYXRpb25zLyN0aGUtYW5pbWF0aW9uLW5hbWUtcHJvcGVydHktXHJcbi8vIEVhY2ggb2YgdGhlc2UgbWl4aW5zIHN1cHBvcnQgY29tbWEgc2VwYXJhdGVkIGxpc3RzIG9mIHZhbHVlcywgd2hpY2ggYWxsb3dzIGRpZmZlcmVudCB0cmFuc2l0aW9ucyBmb3IgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIHRvIGJlIGRlc2NyaWJlZCBpbiBhIHNpbmdsZSBzdHlsZSBydWxlLiBFYWNoIHZhbHVlIGluIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSB2YWx1ZSBhdCB0aGF0IHNhbWUgcG9zaXRpb24gaW4gdGhlIG90aGVyIHByb3BlcnRpZXMuXHJcblxyXG5AbWl4aW4gYW5pbWF0aW9uKCRhbmltYXRpb25zLi4uKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLCAkYW5pbWF0aW9ucywgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGFuaW1hdGlvbi1uYW1lKCRuYW1lcy4uLikge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1uYW1lLCAkbmFtZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24tZHVyYXRpb24oJHRpbWVzLi4uKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWR1cmF0aW9uLCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKCRtb3Rpb25zLi4uKSB7XHJcbiAgLy8gZWFzZSB8IGxpbmVhciB8IGVhc2UtaW4gfCBlYXNlLW91dCB8IGVhc2UtaW4tb3V0XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50KCR2YWx1ZXMuLi4pIHtcclxuICAvLyBpbmZpbml0ZSB8IDxudW1iZXI+XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgJHZhbHVlcywgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGFuaW1hdGlvbi1kaXJlY3Rpb24oJGRpcmVjdGlvbnMuLi4pIHtcclxuICAvLyBub3JtYWwgfCBhbHRlcm5hdGVcclxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZGlyZWN0aW9uLCAkZGlyZWN0aW9ucywgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGFuaW1hdGlvbi1wbGF5LXN0YXRlKCRzdGF0ZXMuLi4pIHtcclxuICAvLyBydW5uaW5nIHwgcGF1c2VkXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXBsYXktc3RhdGUsICRzdGF0ZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24tZGVsYXkoJHRpbWVzLi4uKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24tZmlsbC1tb2RlKCRtb2Rlcy4uLikge1xyXG4gIC8vIG5vbmUgfCBmb3J3YXJkcyB8IGJhY2t3YXJkcyB8IGJvdGhcclxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZmlsbC1tb2RlLCAkbW9kZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuIiwiQG1peGluIGFwcGVhcmFuY2UoJHZhbHVlKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYXBwZWFyYW5jZSwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XHJcbn1cclxuIiwiQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZpc2liaWxpdHkpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihiYWNrZmFjZS12aXNpYmlsaXR5LCAkdmlzaWJpbGl0eSwgd2Via2l0IHNwZWMpO1xyXG59XHJcbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBmb3IgYWRkaW5nIG11bHRpcGxlIGJhY2tncm91bmRzIHVzaW5nIHNob3J0aGFuZFxyXG4vLyBub3RhdGlvbi5cclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cclxuQG1peGluIGJhY2tncm91bmQoJGJhY2tncm91bmRzLi4uKSB7XHJcbiAgJHdlYmtpdC1iYWNrZ3JvdW5kczogKCk7XHJcbiAgJHNwZWMtYmFja2dyb3VuZHM6ICgpO1xyXG5cclxuICBAZWFjaCAkYmFja2dyb3VuZCBpbiAkYmFja2dyb3VuZHMge1xyXG4gICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAoKTtcclxuICAgICRzcGVjLWJhY2tncm91bmQ6ICgpO1xyXG4gICAgJGJhY2tncm91bmQtdHlwZTogdHlwZS1vZigkYmFja2dyb3VuZCk7XHJcblxyXG4gICAgQGlmICRiYWNrZ3JvdW5kLXR5cGUgPT0gc3RyaW5nIG9yICRiYWNrZ3JvdW5kLXR5cGUgPT0gbGlzdCB7XHJcbiAgICAgICRiYWNrZ3JvdW5kLXN0cjogaWYoJGJhY2tncm91bmQtdHlwZSA9PSBsaXN0LCBudGgoJGJhY2tncm91bmQsIDEpLCAkYmFja2dyb3VuZCk7XHJcblxyXG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRiYWNrZ3JvdW5kLXN0ciwgMSwgMyk7XHJcbiAgICAgICRncmFkaWVudC10eXBlOiBzdHItc2xpY2UoJGJhY2tncm91bmQtc3RyLCAxLCA2KTtcclxuXHJcbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcclxuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xyXG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgJGJhY2tncm91bmQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xyXG4gICAgICAgICRncmFkaWVudHM6IF9saW5lYXItZ3JhZGllbnQtcGFyc2VyKFwiI3skYmFja2dyb3VuZH1cIik7XHJcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XHJcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcInJhZGlhbFwiIHtcclxuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcihcIiN7JGJhY2tncm91bmR9XCIpO1xyXG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xyXG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XHJcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICAkYmFja2dyb3VuZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBlbHNlIHtcclxuICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcclxuICAgICAgJHNwZWMtYmFja2dyb3VuZDogICAkYmFja2dyb3VuZDtcclxuICAgIH1cclxuXHJcbiAgICAkd2Via2l0LWJhY2tncm91bmRzOiBhcHBlbmQoJHdlYmtpdC1iYWNrZ3JvdW5kcywgJHdlYmtpdC1iYWNrZ3JvdW5kLCBjb21tYSk7XHJcbiAgICAkc3BlYy1iYWNrZ3JvdW5kczogICBhcHBlbmQoJHNwZWMtYmFja2dyb3VuZHMsICAgJHNwZWMtYmFja2dyb3VuZCwgICBjb21tYSk7XHJcbiAgfVxyXG5cclxuICBiYWNrZ3JvdW5kOiAkd2Via2l0LWJhY2tncm91bmRzO1xyXG4gIGJhY2tncm91bmQ6ICRzcGVjLWJhY2tncm91bmRzO1xyXG59XHJcbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuLy8gQmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0eSBmb3IgYWRkaW5nIG11bHRpcGxlIGJhY2tncm91bmQgaW1hZ2VzIHdpdGhcclxuLy8gZ3JhZGllbnRzLCBvciBmb3Igc3RyaW5naW5nIG11bHRpcGxlIGdyYWRpZW50cyB0b2dldGhlci5cclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cclxuQG1peGluIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlcy4uLikge1xyXG4gICR3ZWJraXQtaW1hZ2VzOiAoKTtcclxuICAkc3BlYy1pbWFnZXM6ICgpO1xyXG5cclxuICBAZWFjaCAkaW1hZ2UgaW4gJGltYWdlcyB7XHJcbiAgICAkd2Via2l0LWltYWdlOiAoKTtcclxuICAgICRzcGVjLWltYWdlOiAoKTtcclxuXHJcbiAgICBAaWYgKHR5cGUtb2YoJGltYWdlKSA9PSBzdHJpbmcpIHtcclxuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkaW1hZ2UsIDEsIDMpO1xyXG4gICAgICAkZ3JhZGllbnQtdHlwZTogc3RyLXNsaWNlKCRpbWFnZSwgMSwgNik7XHJcblxyXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XHJcbiAgICAgICAgJHdlYmtpdC1pbWFnZTogJGltYWdlO1xyXG4gICAgICAgICRzcGVjLWltYWdlOiAgICRpbWFnZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJsaW5lYXJcIiB7XHJcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoJGltYWdlKTtcclxuICAgICAgICAkd2Via2l0LWltYWdlOiAgbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xyXG4gICAgICAgICRzcGVjLWltYWdlOiAgICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcInJhZGlhbFwiIHtcclxuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpO1xyXG4gICAgICAgICR3ZWJraXQtaW1hZ2U6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcclxuICAgICAgICAkc3BlYy1pbWFnZTogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJHdlYmtpdC1pbWFnZXM6IGFwcGVuZCgkd2Via2l0LWltYWdlcywgJHdlYmtpdC1pbWFnZSwgY29tbWEpO1xyXG4gICAgJHNwZWMtaW1hZ2VzOiAgIGFwcGVuZCgkc3BlYy1pbWFnZXMsICAgJHNwZWMtaW1hZ2UsICAgY29tbWEpO1xyXG4gIH1cclxuXHJcbiAgYmFja2dyb3VuZC1pbWFnZTogJHdlYmtpdC1pbWFnZXM7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogJHNwZWMtaW1hZ2VzO1xyXG59XHJcbiIsIkBtaXhpbiBib3JkZXItaW1hZ2UoJGJvcmRlcnMuLi4pIHtcclxuICAkd2Via2l0LWJvcmRlcnM6ICgpO1xyXG4gICRzcGVjLWJvcmRlcnM6ICgpO1xyXG5cclxuICBAZWFjaCAkYm9yZGVyIGluICRib3JkZXJzIHtcclxuICAgICR3ZWJraXQtYm9yZGVyOiAoKTtcclxuICAgICRzcGVjLWJvcmRlcjogKCk7XHJcbiAgICAkYm9yZGVyLXR5cGU6IHR5cGUtb2YoJGJvcmRlcik7XHJcblxyXG4gICAgQGlmICRib3JkZXItdHlwZSA9PSBzdHJpbmcgb3IgbGlzdCB7XHJcbiAgICAgICRib3JkZXItc3RyOiBpZigkYm9yZGVyLXR5cGUgPT0gbGlzdCwgbnRoKCRib3JkZXIsIDEpLCAkYm9yZGVyKTtcclxuXHJcbiAgICAgICR1cmwtc3RyOiAgICAgICBzdHItc2xpY2UoJGJvcmRlci1zdHIsIDEsIDMpO1xyXG4gICAgICAkZ3JhZGllbnQtdHlwZTogc3RyLXNsaWNlKCRib3JkZXItc3RyLCAxLCA2KTtcclxuXHJcbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcclxuICAgICAgICAkd2Via2l0LWJvcmRlcjogJGJvcmRlcjtcclxuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgJGJvcmRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJsaW5lYXJcIiB7XHJcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoXCIjeyRib3JkZXJ9XCIpO1xyXG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XHJcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwicmFkaWFsXCIge1xyXG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKFwiI3skYm9yZGVyfVwiKTtcclxuICAgICAgICAkd2Via2l0LWJvcmRlcjogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xyXG4gICAgICAgICRzcGVjLWJvcmRlcjogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XHJcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgICRib3JkZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xyXG4gICAgICAkc3BlYy1ib3JkZXI6ICAgJGJvcmRlcjtcclxuICAgIH1cclxuXHJcbiAgICAkd2Via2l0LWJvcmRlcnM6IGFwcGVuZCgkd2Via2l0LWJvcmRlcnMsICR3ZWJraXQtYm9yZGVyLCBjb21tYSk7XHJcbiAgICAkc3BlYy1ib3JkZXJzOiAgIGFwcGVuZCgkc3BlYy1ib3JkZXJzLCAgICRzcGVjLWJvcmRlciwgICBjb21tYSk7XHJcbiAgfVxyXG5cclxuICAtd2Via2l0LWJvcmRlci1pbWFnZTogJHdlYmtpdC1ib3JkZXJzO1xyXG4gICAgICAgICAgYm9yZGVyLWltYWdlOiAkc3BlYy1ib3JkZXJzO1xyXG4gICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxufVxyXG5cclxuLy9FeGFtcGxlczpcclxuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHVybChcImltYWdlLnBuZ1wiKSk7XHJcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZSh1cmwoXCJpbWFnZS5wbmdcIikgMjAgc3RyZXRjaCk7XHJcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSk7XHJcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSBzdHJldGNoKTtcclxuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpIDIwIDMwIDQwIDUwIHN0cmV0Y2ggcm91bmQpO1xyXG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UocmFkaWFsLWdyYWRpZW50KHRvcCwgY292ZXIsIG9yYW5nZSwgeWVsbG93LCBvcmFuZ2UpKTtcclxuIiwiQG1peGluIGNhbGMoJHByb3BlcnR5LCAkdmFsdWUpIHtcclxuICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtY2FsYygjeyR2YWx1ZX0pO1xyXG4gICN7JHByb3BlcnR5fTogY2FsYygjeyR2YWx1ZX0pO1xyXG59XHJcbiIsIkBtaXhpbiBjb2x1bW5zKCRhcmc6IGF1dG8pIHtcclxuICAvLyA8Y29sdW1uLWNvdW50PiB8fCA8Y29sdW1uLXdpZHRoPlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbnMsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBjb2x1bW4tY291bnQoJGludDogYXV0bykge1xyXG4gIC8vIGF1dG8gfHwgaW50ZWdlclxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1jb3VudCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGNvbHVtbi1nYXAoJGxlbmd0aDogbm9ybWFsKSB7XHJcbiAgLy8gbm9ybWFsIHx8IGxlbmd0aFxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1nYXAsICRsZW5ndGgsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBjb2x1bW4tZmlsbCgkYXJnOiBhdXRvKSB7XHJcbiAgLy8gYXV0byB8fCBsZW5ndGhcclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tZmlsbCwgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGNvbHVtbi1ydWxlKCRhcmcpIHtcclxuICAvLyA8Ym9yZGVyLXdpZHRoPiB8fCA8Ym9yZGVyLXN0eWxlPiB8fCA8Y29sb3I+XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXJ1bGUsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBjb2x1bW4tcnVsZS1jb2xvcigkY29sb3IpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1jb2xvciwgJGNvbG9yLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gY29sdW1uLXJ1bGUtc3R5bGUoJHN0eWxlOiBub25lKSB7XHJcbiAgLy8gbm9uZSB8IGhpZGRlbiB8IGRhc2hlZCB8IGRvdHRlZCB8IGRvdWJsZSB8IGdyb292ZSB8IGluc2V0IHwgaW5zZXQgfCBvdXRzZXQgfCByaWRnZSB8IHNvbGlkXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXJ1bGUtc3R5bGUsICRzdHlsZSwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGNvbHVtbi1ydWxlLXdpZHRoICgkd2lkdGg6IG5vbmUpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gY29sdW1uLXNwYW4oJGFyZzogbm9uZSkge1xyXG4gIC8vIG5vbmUgfHwgYWxsXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXNwYW4sICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBjb2x1bW4td2lkdGgoJGxlbmd0aDogYXV0bykge1xyXG4gIC8vIGF1dG8gfHwgbGVuZ3RoXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXdpZHRoLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcbiIsIkBtaXhpbiBmaWx0ZXIoJGZ1bmN0aW9uOiBub25lKSB7XHJcbiAgLy8gPGZpbHRlci1mdW5jdGlvbj4gWzxmaWx0ZXItZnVuY3Rpb25dKiB8IG5vbmVcclxuICBAaW5jbHVkZSBwcmVmaXhlcihmaWx0ZXIsICRmdW5jdGlvbiwgd2Via2l0IHNwZWMpO1xyXG59XHJcbiIsIi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xyXG5cclxuLy8gQ3VzdG9tIHNob3J0aGFuZCBub3RhdGlvbiBmb3IgZmxleGJveFxyXG5AbWl4aW4gYm94KCRvcmllbnQ6IGlubGluZS1heGlzLCAkcGFjazogc3RhcnQsICRhbGlnbjogc3RyZXRjaCkge1xyXG4gIEBpbmNsdWRlIGRpc3BsYXktYm94O1xyXG4gIEBpbmNsdWRlIGJveC1vcmllbnQoJG9yaWVudCk7XHJcbiAgQGluY2x1ZGUgYm94LXBhY2soJHBhY2spO1xyXG4gIEBpbmNsdWRlIGJveC1hbGlnbigkYWxpZ24pO1xyXG59XHJcblxyXG5AbWl4aW4gZGlzcGxheS1ib3gge1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gIGRpc3BsYXk6IC1tb3otYm94O1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyBJRSAxMFxyXG4gIGRpc3BsYXk6IGJveDtcclxufVxyXG5cclxuQG1peGluIGJveC1vcmllbnQoJG9yaWVudDogaW5saW5lLWF4aXMpIHtcclxuLy8gaG9yaXpvbnRhbHx2ZXJ0aWNhbHxpbmxpbmUtYXhpc3xibG9jay1heGlzfGluaGVyaXRcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkb3JpZW50LCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gYm94LXBhY2soJHBhY2s6IHN0YXJ0KSB7XHJcbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8anVzdGlmeVxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1wYWNrLCAkcGFjaywgd2Via2l0IG1veiBzcGVjKTtcclxuICAtbXMtZmxleC1wYWNrOiAkcGFjazsgLy8gSUUgMTBcclxufVxyXG5cclxuQG1peGluIGJveC1hbGlnbigkYWxpZ246IHN0cmV0Y2gpIHtcclxuLy8gc3RhcnR8ZW5kfGNlbnRlcnxiYXNlbGluZXxzdHJldGNoXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWxpZ24sIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgLW1zLWZsZXgtYWxpZ246ICRhbGlnbjsgLy8gSUUgMTBcclxufVxyXG5cclxuQG1peGluIGJveC1kaXJlY3Rpb24oJGRpcmVjdGlvbjogbm9ybWFsKSB7XHJcbi8vIG5vcm1hbHxyZXZlcnNlfGluaGVyaXRcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xyXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjsgLy8gSUUgMTBcclxufVxyXG5cclxuQG1peGluIGJveC1saW5lcygkbGluZXM6IHNpbmdsZSkge1xyXG4vLyBzaW5nbGV8bXVsdGlwbGVcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRsaW5lcywgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGJveC1vcmRpbmFsLWdyb3VwKCRpbnQ6IDEpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JkaW5hbC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcclxuICAtbXMtZmxleC1vcmRlcjogJGludDsgLy8gSUUgMTBcclxufVxyXG5cclxuQG1peGluIGJveC1mbGV4KCR2YWx1ZTogMCkge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgLW1zLWZsZXg6ICR2YWx1ZTsgLy8gSUUgMTBcclxufVxyXG5cclxuQG1peGluIGJveC1mbGV4LWdyb3VwKCRpbnQ6IDEpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXHJcbi8vIFVuaWZpZWQgYXR0cmlidXRlcyBmb3IgMjAwOSwgMjAxMSwgYW5kIDIwMTIgZmxhdm91cnMuXHJcblxyXG4vLyAyMDA5IC0gZGlzcGxheSAoYm94IHwgaW5saW5lLWJveClcclxuLy8gMjAxMSAtIGRpc3BsYXkgKGZsZXhib3ggfCBpbmxpbmUtZmxleGJveClcclxuLy8gMjAxMiAtIGRpc3BsYXkgKGZsZXggfCBpbmxpbmUtZmxleClcclxuQG1peGluIGRpc3BsYXkoJHZhbHVlKSB7XHJcbi8vIGZsZXggfCBpbmxpbmUtZmxleFxyXG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4XCIge1xyXG4gICAgLy8gMjAwOVxyXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICBkaXNwbGF5OiAtbW96LWJveDtcclxuICAgIGRpc3BsYXk6IGJveDtcclxuXHJcbiAgICAvLyAyMDEyXHJcbiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XHJcbiAgICBkaXNwbGF5OiAtbW96LWZsZXg7XHJcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsgLy8gMjAxMSAoSUUgMTApXHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiaW5saW5lLWZsZXhcIiB7XHJcbiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XHJcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1ib3g7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYm94O1xyXG5cclxuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7XHJcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1mbGV4O1xyXG4gICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBkaXNwbGF5OiAkdmFsdWU7XHJcbiAgfVxyXG59XHJcblxyXG4vLyAyMDA5IC0gYm94LWZsZXggKGludGVnZXIpXHJcbi8vIDIwMTEgLSBmbGV4IChkZWNpbWFsIHwgd2lkdGggZGVjaW1hbClcclxuLy8gMjAxMiAtIGZsZXggKGludGVnZXIgaW50ZWdlciB3aWR0aClcclxuQG1peGluIGZsZXgoJHZhbHVlKSB7XHJcblxyXG4gIC8vIEdyYWIgZmxleC1ncm93IGZvciBvbGRlciBicm93c2Vycy5cclxuICAkZmxleC1ncm93OiBudGgoJHZhbHVlLCAxKTtcclxuXHJcbiAgLy8gMjAwOVxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkZmxleC1ncm93LCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICAvLyAyMDExIChJRSAxMCksIDIwMTJcclxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XHJcbn1cclxuXHJcbi8vIDIwMDkgLSBib3gtb3JpZW50ICggaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgaW5saW5lLWF4aXMgfCBibG9jay1heGlzKVxyXG4vLyAgICAgIC0gYm94LWRpcmVjdGlvbiAobm9ybWFsIHwgcmV2ZXJzZSlcclxuLy8gMjAxMSAtIGZsZXgtZGlyZWN0aW9uIChyb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlKVxyXG4vLyAyMDEyIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXHJcbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkdmFsdWU6IHJvdykge1xyXG5cclxuICAvLyBBbHQgdmFsdWVzLlxyXG4gICR2YWx1ZS0yMDA5OiAkdmFsdWU7XHJcbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcclxuICAkZGlyZWN0aW9uOiBub3JtYWw7XHJcblxyXG4gIEBpZiAkdmFsdWUgPT0gcm93IHtcclxuICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwicm93LXJldmVyc2VcIiB7XHJcbiAgICAkdmFsdWUtMjAwOTogaG9yaXpvbnRhbDtcclxuICAgICRkaXJlY3Rpb246IHJldmVyc2U7XHJcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gY29sdW1uIHtcclxuICAgICR2YWx1ZS0yMDA5OiB2ZXJ0aWNhbDtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImNvbHVtbi1yZXZlcnNlXCIge1xyXG4gICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xyXG4gICAgJGRpcmVjdGlvbjogcmV2ZXJzZTtcclxuICB9XHJcblxyXG4gIC8vIDIwMDlcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkdmFsdWUtMjAwOSwgd2Via2l0IG1veiBzcGVjKTtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICAvLyAyMDEyXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1kaXJlY3Rpb24sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcclxuXHJcbiAgLy8gMjAxMSAoSUUgMTApXHJcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiAkdmFsdWU7XHJcbn1cclxuXHJcbi8vIDIwMDkgLSBib3gtbGluZXMgKHNpbmdsZSB8IG11bHRpcGxlKVxyXG4vLyAyMDExIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxyXG4vLyAyMDEyIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxyXG5AbWl4aW4gZmxleC13cmFwKCR2YWx1ZTogbm93cmFwKSB7XHJcbiAgLy8gQWx0IHZhbHVlc1xyXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcclxuICBAaWYgJHZhbHVlID09IG5vd3JhcCB7XHJcbiAgICAkYWx0LXZhbHVlOiBzaW5nbGU7XHJcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gd3JhcCB7XHJcbiAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcIndyYXAtcmV2ZXJzZVwiIHtcclxuICAgICRhbHQtdmFsdWU6IG11bHRpcGxlO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtd3JhcCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xyXG59XHJcblxyXG4vLyAyMDA5IC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXHJcbi8vIDIwMTEgLSBUT0RPOiBwYXJzZSB2YWx1ZXMgaW50byBmbGV4LWRpcmVjdGlvbi9mbGV4LXdyYXBcclxuLy8gMjAxMiAtIGZsZXgtZmxvdyAoZmxleC1kaXJlY3Rpb24gfHwgZmxleC13cmFwKVxyXG5AbWl4aW4gZmxleC1mbG93KCR2YWx1ZSkge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZmxvdywgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG4vLyAyMDA5IC0gYm94LW9yZGluYWwtZ3JvdXAgKGludGVnZXIpXHJcbi8vIDIwMTEgLSBmbGV4LW9yZGVyIChpbnRlZ2VyKVxyXG4vLyAyMDEyIC0gb3JkZXIgKGludGVnZXIpXHJcbkBtaXhpbiBvcmRlcigkaW50OiAwKSB7XHJcbiAgLy8gMjAwOVxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICAvLyAyMDEyXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIob3JkZXIsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XHJcblxyXG4gIC8vIDIwMTEgKElFIDEwKVxyXG4gIC1tcy1mbGV4LW9yZGVyOiAkaW50O1xyXG59XHJcblxyXG4vLyAyMDEyIC0gZmxleC1ncm93IChudW1iZXIpXHJcbkBtaXhpbiBmbGV4LWdyb3coJG51bWJlcjogMCkge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZ3JvdywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcclxuICAtbXMtZmxleC1wb3NpdGl2ZTogJG51bWJlcjtcclxufVxyXG5cclxuLy8gMjAxMiAtIGZsZXgtc2hyaW5rIChudW1iZXIpXHJcbkBtaXhpbiBmbGV4LXNocmluaygkbnVtYmVyOiAxKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1zaHJpbmssICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgLW1zLWZsZXgtbmVnYXRpdmU6ICRudW1iZXI7XHJcbn1cclxuXHJcbi8vIDIwMTIgLSBmbGV4LWJhc2lzIChudW1iZXIpXHJcbkBtaXhpbiBmbGV4LWJhc2lzKCR3aWR0aDogYXV0bykge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtYmFzaXMsICR3aWR0aCwgd2Via2l0IG1veiBzcGVjKTtcclxuICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogJHdpZHRoO1xyXG59XHJcblxyXG4vLyAyMDA5IC0gYm94LXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSlcclxuLy8gMjAxMSAtIGZsZXgtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5KVxyXG4vLyAyMDEyIC0ganVzdGlmeS1jb250ZW50IChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kKVxyXG5AbWl4aW4ganVzdGlmeS1jb250ZW50KCR2YWx1ZTogZmxleC1zdGFydCkge1xyXG5cclxuICAvLyBBbHQgdmFsdWVzLlxyXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcclxuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcclxuICAgICRhbHQtdmFsdWU6IHN0YXJ0O1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XHJcbiAgICAkYWx0LXZhbHVlOiBlbmQ7XHJcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1iZXR3ZWVuXCIge1xyXG4gICAgJGFsdC12YWx1ZToganVzdGlmeTtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWFyb3VuZFwiIHtcclxuICAgICRhbHQtdmFsdWU6IGRpc3RyaWJ1dGU7XHJcbiAgfVxyXG5cclxuICAvLyAyMDA5XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XHJcblxyXG4gIC8vIDIwMTJcclxuICBAaW5jbHVkZSBwcmVmaXhlcihqdXN0aWZ5LWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xyXG5cclxuICAvLyAyMDExIChJRSAxMClcclxuICAtbXMtZmxleC1wYWNrOiAkYWx0LXZhbHVlO1xyXG59XHJcblxyXG4vLyAyMDA5IC0gYm94LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcclxuLy8gMjAxMSAtIGZsZXgtYWxpZ24gKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxyXG4vLyAyMDEyIC0gYWxpZ24taXRlbXMgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcclxuQG1peGluIGFsaWduLWl0ZW1zKCR2YWx1ZTogc3RyZXRjaCkge1xyXG5cclxuICAkYWx0LXZhbHVlOiAkdmFsdWU7XHJcblxyXG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xyXG4gICAgJGFsdC12YWx1ZTogc3RhcnQ7XHJcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcclxuICAgICRhbHQtdmFsdWU6IGVuZDtcclxuICB9XHJcblxyXG4gIC8vIDIwMDlcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtYWxpZ24sICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XHJcblxyXG4gIC8vIDIwMTJcclxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1pdGVtcywgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XHJcblxyXG4gIC8vIDIwMTEgKElFIDEwKVxyXG4gIC1tcy1mbGV4LWFsaWduOiAkYWx0LXZhbHVlO1xyXG59XHJcblxyXG4vLyAyMDExIC0gZmxleC1pdGVtLWFsaWduIChhdXRvIHwgc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXHJcbi8vIDIwMTIgLSBhbGlnbi1zZWxmIChhdXRvIHwgZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxyXG5AbWl4aW4gYWxpZ24tc2VsZigkdmFsdWU6IGF1dG8pIHtcclxuXHJcbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcclxuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcclxuICAgICR2YWx1ZS0yMDExOiBzdGFydDtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xyXG4gICAgJHZhbHVlLTIwMTE6IGVuZDtcclxuICB9XHJcblxyXG4gIC8vIDIwMTJcclxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1zZWxmLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XHJcblxyXG4gIC8vIDIwMTEgKElFIDEwKVxyXG4gIC1tcy1mbGV4LWl0ZW0tYWxpZ246ICR2YWx1ZS0yMDExO1xyXG59XHJcblxyXG4vLyAyMDExIC0gZmxleC1saW5lLXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSB8IGRpc3RyaWJ1dGUgfCBzdHJldGNoKVxyXG4vLyAyMDEyIC0gYWxpZ24tY29udGVudCAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCB8IHN0cmV0Y2gpXHJcbkBtaXhpbiBhbGlnbi1jb250ZW50KCR2YWx1ZTogc3RyZXRjaCkge1xyXG5cclxuICAkdmFsdWUtMjAxMTogJHZhbHVlO1xyXG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xyXG4gICAgJHZhbHVlLTIwMTE6IHN0YXJ0O1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XHJcbiAgICAkdmFsdWUtMjAxMTogZW5kO1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYmV0d2VlblwiIHtcclxuICAgICR2YWx1ZS0yMDExOiBqdXN0aWZ5O1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYXJvdW5kXCIge1xyXG4gICAgJHZhbHVlLTIwMTE6IGRpc3RyaWJ1dGU7XHJcbiAgfVxyXG5cclxuICAvLyAyMDEyXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tY29udGVudCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICAvLyAyMDExIChJRSAxMClcclxuICAtbXMtZmxleC1saW5lLXBhY2s6ICR2YWx1ZS0yMDExO1xyXG59XHJcbiIsIkBtaXhpbiBmb250LWZhY2UoXHJcbiAgJGZvbnQtZmFtaWx5LFxyXG4gICRmaWxlLXBhdGgsXHJcbiAgJHdlaWdodDogbm9ybWFsLFxyXG4gICRzdHlsZTogbm9ybWFsLFxyXG4gICRhc3NldC1waXBlbGluZTogJGFzc2V0LXBpcGVsaW5lLFxyXG4gICRmaWxlLWZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmcpIHtcclxuXHJcbiAgJGZvbnQtdXJsLXByZWZpeDogZm9udC11cmwtcHJlZml4ZXIoJGFzc2V0LXBpcGVsaW5lKTtcclxuXHJcbiAgQGZvbnQtZmFjZSB7XHJcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xyXG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xyXG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XHJcblxyXG4gICAgc3JjOiBmb250LXNvdXJjZS1kZWNsYXJhdGlvbihcclxuICAgICAgJGZvbnQtZmFtaWx5LFxyXG4gICAgICAkZmlsZS1wYXRoLFxyXG4gICAgICAkYXNzZXQtcGlwZWxpbmUsXHJcbiAgICAgICRmaWxlLWZvcm1hdHMsXHJcbiAgICAgICRmb250LXVybC1wcmVmaXhcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiIsIkBtaXhpbiBmb250LWZlYXR1cmUtc2V0dGluZ3MoJHNldHRpbmdzLi4uKSB7XHJcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDAgeyAkc2V0dGluZ3M6IG5vbmU7IH1cclxuICBAaW5jbHVkZSBwcmVmaXhlcihmb250LWZlYXR1cmUtc2V0dGluZ3MsICRzZXR0aW5ncywgd2Via2l0IG1veiBtcyBzcGVjKTtcclxufVxyXG4iLCIvLyBIaURQSSBtaXhpbi4gRGVmYXVsdCB2YWx1ZSBzZXQgdG8gMS4zIHRvIHRhcmdldCBHb29nbGUgTmV4dXMgNyAoaHR0cDovL2JqYW5nby5jb20vYXJ0aWNsZXMvbWluLWRldmljZS1waXhlbC1yYXRpby8pXHJcbkBtaXhpbiBoaWRwaSgkcmF0aW86IDEuMykge1xyXG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcclxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcclxuICBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHJhdGlvfS8xKSxcclxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiByb3VuZCgkcmF0aW8gKiA5NmRwaSkpLFxyXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICRyYXRpbyAqIDFkcHB4KSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuIiwiQG1peGluIGh5cGhlbnMoJGh5cGhlbmF0aW9uOiBub25lKSB7XHJcbiAgLy8gbm9uZSB8IG1hbnVhbCB8IGF1dG9cclxuICBAaW5jbHVkZSBwcmVmaXhlcihoeXBoZW5zLCAkaHlwaGVuYXRpb24sIHdlYmtpdCBtb3ogbXMgc3BlYyk7XHJcbn1cclxuIiwiQG1peGluIGltYWdlLXJlbmRlcmluZyAoJG1vZGU6YXV0bykge1xyXG5cclxuICBAaWYgKCRtb2RlID09IGNyaXNwLWVkZ2VzKSB7XHJcbiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBuZWFyZXN0LW5laWdoYm9yOyAvLyBJRTgrXHJcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7XHJcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC1vLWNyaXNwLWVkZ2VzO1xyXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0O1xyXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlcztcclxuICB9XHJcblxyXG4gIEBlbHNlIHtcclxuICAgIGltYWdlLXJlbmRlcmluZzogJG1vZGU7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEFkZHMga2V5ZnJhbWVzIGJsb2NrcyBmb3Igc3VwcG9ydGVkIHByZWZpeGVzLCByZW1vdmluZyByZWR1bmRhbnQgcHJlZml4ZXMgaW4gdGhlIGJsb2NrJ3MgY29udGVudFxyXG5AbWl4aW4ga2V5ZnJhbWVzKCRuYW1lKSB7XHJcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0OiAgICAkcHJlZml4LWZvci13ZWJraXQ7XHJcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYTogICAkcHJlZml4LWZvci1tb3ppbGxhO1xyXG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdDogJHByZWZpeC1mb3ItbWljcm9zb2Z0O1xyXG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhOiAgICAgJHByZWZpeC1mb3Itb3BlcmE7XHJcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3Itc3BlYzogICAgICAkcHJlZml4LWZvci1zcGVjO1xyXG5cclxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0IHtcclxuICAgIEBpbmNsdWRlIGRpc2FibGUtcHJlZml4LWZvci1hbGwoKTtcclxuICAgICRwcmVmaXgtZm9yLXdlYmtpdDogdHJ1ZSAhZ2xvYmFsO1xyXG4gICAgQC13ZWJraXQta2V5ZnJhbWVzICN7JG5hbWV9IHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYSB7XHJcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XHJcbiAgICAkcHJlZml4LWZvci1tb3ppbGxhOiB0cnVlICFnbG9iYWw7XHJcbiAgICBALW1vei1rZXlmcmFtZXMgI3skbmFtZX0ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICRwcmVmaXgtZm9yLXdlYmtpdDogICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0ICAgICFnbG9iYWw7XHJcbiAgJHByZWZpeC1mb3ItbW96aWxsYTogICAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhICAgIWdsb2JhbDtcclxuICAkcHJlZml4LWZvci1taWNyb3NvZnQ6ICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdCAhZ2xvYmFsO1xyXG4gICRwcmVmaXgtZm9yLW9wZXJhOiAgICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itb3BlcmEgICAgICFnbG9iYWw7XHJcbiAgJHByZWZpeC1mb3Itc3BlYzogICAgICAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjICAgICAgIWdsb2JhbDtcclxuXHJcbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWMge1xyXG4gICAgQGtleWZyYW1lcyAjeyRuYW1lfSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAbWl4aW4gbGluZWFyLWdyYWRpZW50KCRwb3MsICRnMSwgJGcyOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRnMzogbnVsbCwgJGc0OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRnNTogbnVsbCwgJGc2OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRnNzogbnVsbCwgJGc4OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRnOTogbnVsbCwgJGcxMDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcclxuICAvLyBEZXRlY3Qgd2hhdCB0eXBlIG9mIHZhbHVlIGV4aXN0cyBpbiAkcG9zXHJcbiAgJHBvcy10eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XHJcbiAgJHBvcy1zcGVjOiBudWxsO1xyXG4gICRwb3MtZGVncmVlOiBudWxsO1xyXG5cclxuICAvLyBJZiAkcG9zIGlzIG1pc3NpbmcgZnJvbSBtaXhpbiwgcmVhc3NpZ24gdmFycyBhbmQgYWRkIGRlZmF1bHQgcG9zaXRpb25cclxuICBAaWYgKCRwb3MtdHlwZSA9PSBjb2xvcikgb3IgKG50aCgkcG9zLCAxKSA9PSBcInRyYW5zcGFyZW50XCIpICB7XHJcbiAgICAkZzEwOiAkZzk7ICRnOTogJGc4OyAkZzg6ICRnNzsgJGc3OiAkZzY7ICRnNjogJGc1O1xyXG4gICAgJGc1OiAkZzQ7ICRnNDogJGczOyAkZzM6ICRnMjsgJGcyOiAkZzE7ICRnMTogJHBvcztcclxuICAgICRwb3M6IG51bGw7XHJcbiAgfVxyXG5cclxuICBAaWYgJHBvcyB7XHJcbiAgICAkcG9zaXRpb25zOiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJHBvcyk7XHJcbiAgICAkcG9zLWRlZ3JlZTogbnRoKCRwb3NpdGlvbnMsIDEpO1xyXG4gICAgJHBvcy1zcGVjOiAgIG50aCgkcG9zaXRpb25zLCAyKTtcclxuICB9XHJcblxyXG4gICRmdWxsOiAkZzEsICRnMiwgJGczLCAkZzQsICRnNSwgJGc2LCAkZzcsICRnOCwgJGc5LCAkZzEwO1xyXG5cclxuICAvLyBTZXQgJGcxIGFzIHRoZSBkZWZhdWx0IGZhbGxiYWNrIGNvbG9yXHJcbiAgJGZhbGxiYWNrLWNvbG9yOiBudGgoJGcxLCAxKTtcclxuXHJcbiAgLy8gSWYgJGZhbGxiYWNrIGlzIGEgY29sb3IgdXNlIHRoYXQgY29sb3IgYXMgdGhlIGZhbGxiYWNrIGNvbG9yXHJcbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XHJcbiAgICAkZmFsbGJhY2stY29sb3I6ICRmYWxsYmFjaztcclxuICB9XHJcblxyXG4gIGJhY2tncm91bmQtY29sb3I6ICRmYWxsYmFjay1jb2xvcjtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgkcG9zLWRlZ3JlZSAkZnVsbCk7IC8vIFNhZmFyaSA1LjErLCBDaHJvbWVcclxuICBiYWNrZ3JvdW5kLWltYWdlOiB1bnF1b3RlKFwibGluZWFyLWdyYWRpZW50KCN7JHBvcy1zcGVjfSN7JGZ1bGx9KVwiKTtcclxufVxyXG4iLCJAbWl4aW4gcGVyc3BlY3RpdmUoJGRlcHRoOiBub25lKSB7XHJcbiAgLy8gbm9uZSB8IDxsZW5ndGg+XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUsICRkZXB0aCwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkdmFsdWU6IDUwJSA1MCUpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihwZXJzcGVjdGl2ZS1vcmlnaW4sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG4iLCJAbWl4aW4gcGxhY2Vob2xkZXIge1xyXG4gICRwbGFjZWhvbGRlcnM6IFwiOi13ZWJraXQtaW5wdXRcIiBcIjotbW96XCIgXCItbW96XCIgXCItbXMtaW5wdXRcIjtcclxuICBAZWFjaCAkcGxhY2Vob2xkZXIgaW4gJHBsYWNlaG9sZGVycyB7XHJcbiAgICAmOiN7JHBsYWNlaG9sZGVyfS1wbGFjZWhvbGRlciB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBSZXF1aXJlcyBTYXNzIDMuMStcclxuQG1peGluIHJhZGlhbC1ncmFkaWVudCgkZzEsICRnMixcclxuICAgICAgICAgICAgICAgICAgICAgICAkZzM6IG51bGwsICRnNDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZzU6IG51bGwsICRnNjogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZzc6IG51bGwsICRnODogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZzk6IG51bGwsICRnMTA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHBvczogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2hhcGUtc2l6ZTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcclxuXHJcbiAgJGRhdGE6IF9yYWRpYWwtYXJnLXBhcnNlcigkZzEsICRnMiwgJHBvcywgJHNoYXBlLXNpemUpO1xyXG4gICRnMTogIG50aCgkZGF0YSwgMSk7XHJcbiAgJGcyOiAgbnRoKCRkYXRhLCAyKTtcclxuICAkcG9zOiBudGgoJGRhdGEsIDMpO1xyXG4gICRzaGFwZS1zaXplOiBudGgoJGRhdGEsIDQpO1xyXG5cclxuICAkZnVsbDogJGcxLCAkZzIsICRnMywgJGc0LCAkZzUsICRnNiwgJGc3LCAkZzgsICRnOSwgJGcxMDtcclxuXHJcbiAgLy8gU3RyaXAgZGVwcmVjYXRlZCBjb3Zlci9jb250YWluIGZvciBzcGVjXHJcbiAgJHNoYXBlLXNpemUtc3BlYzogX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpO1xyXG5cclxuICAvLyBTZXQgJGcxIGFzIHRoZSBkZWZhdWx0IGZhbGxiYWNrIGNvbG9yXHJcbiAgJGZpcnN0LWNvbG9yOiBudGgoJGZ1bGwsIDEpO1xyXG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRmaXJzdC1jb2xvciwgMSk7XHJcblxyXG4gIEBpZiAodHlwZS1vZigkZmFsbGJhY2spID09IGNvbG9yKSBvciAoJGZhbGxiYWNrID09IFwidHJhbnNwYXJlbnRcIikge1xyXG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XHJcbiAgfVxyXG5cclxuICAvLyBBZGQgQ29tbWFzIGFuZCBzcGFjZXNcclxuICAkc2hhcGUtc2l6ZTogaWYoJHNoYXBlLXNpemUsIFwiI3skc2hhcGUtc2l6ZX0sIFwiLCBudWxsKTtcclxuICAkcG9zOiAgICAgICAgaWYoJHBvcywgXCIjeyRwb3N9LCBcIiwgbnVsbCk7XHJcbiAgJHBvcy1zcGVjOiAgIGlmKCRwb3MsIFwiYXQgI3skcG9zfVwiLCBudWxsKTtcclxuICAkc2hhcGUtc2l6ZS1zcGVjOiBpZigoJHNoYXBlLXNpemUtc3BlYyAhPSBcIiBcIikgYW5kICgkcG9zID09IG51bGwpLCBcIiN7JHNoYXBlLXNpemUtc3BlY30sIFwiLCBcIiN7JHNoYXBlLXNpemUtc3BlY30gXCIpO1xyXG5cclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAgJGZhbGxiYWNrLWNvbG9yO1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KCN7JHBvc30jeyRzaGFwZS1zaXplfSN7JGZ1bGx9KTtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoI3skc2hhcGUtc2l6ZS1zcGVjfSN7JHBvcy1zcGVjfSN7JGZ1bGx9KTtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gT3V0cHV0cyB0aGUgc3BlYyBhbmQgcHJlZml4ZWQgdmVyc2lvbnMgb2YgdGhlIGA6OnNlbGVjdGlvbmAgcHNldWRvLWVsZW1lbnQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtCb29sfSAkY3VycmVudC1zZWxlY3RvciBbZmFsc2VdXHJcbi8vLyAgIElmIHNldCB0byBgdHJ1ZWAsIGl0IHRha2VzIHRoZSBjdXJyZW50IGVsZW1lbnQgaW50byBjb25zaWRlcmF0aW9uLlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgc2VsZWN0aW9uKHRydWUpIHtcclxuLy8vICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmJiNTI7XHJcbi8vLyAgICAgfVxyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudDo6LW1vei1zZWxlY3Rpb24ge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmJiNTI7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyAgIC5lbGVtZW50OjpzZWxlY3Rpb24ge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmJiNTI7XHJcbi8vLyAgIH1cclxuXHJcbkBtaXhpbiBzZWxlY3Rpb24oJGN1cnJlbnQtc2VsZWN0b3I6IGZhbHNlKSB7XHJcbiAgQGlmICRjdXJyZW50LXNlbGVjdG9yIHtcclxuICAgICY6Oi1tb3otc2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJjo6c2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA6Oi1tb3otc2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgOjpzZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQG1peGluIHRleHQtZGVjb3JhdGlvbigkdmFsdWUpIHtcclxuLy8gPHRleHQtZGVjb3JhdGlvbi1saW5lPiB8fCA8dGV4dC1kZWNvcmF0aW9uLXN0eWxlPiB8fCA8dGV4dC1kZWNvcmF0aW9uLWNvbG9yPlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbiwgJHZhbHVlLCBtb3opO1xyXG59XHJcblxyXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLWxpbmUoJGxpbmU6IG5vbmUpIHtcclxuLy8gbm9uZSB8fCB1bmRlcmxpbmUgfHwgb3ZlcmxpbmUgfHwgbGluZS10aHJvdWdoXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLWxpbmUsICRsaW5lLCBtb3opO1xyXG59XHJcblxyXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLXN0eWxlKCRzdHlsZTogc29saWQpIHtcclxuLy8gc29saWQgfHwgZG91YmxlIHx8IGRvdHRlZCB8fCBkYXNoZWQgfHwgd2F2eVxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbi1zdHlsZSwgJHN0eWxlLCBtb3ogd2Via2l0KTtcclxufVxyXG5cclxuQG1peGluIHRleHQtZGVjb3JhdGlvbi1jb2xvcigkY29sb3I6IGN1cnJlbnRDb2xvcikge1xyXG4vLyBjdXJyZW50Q29sb3IgfHwgPGNvbG9yPlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbi1jb2xvciwgJGNvbG9yLCBtb3opO1xyXG59XHJcbiIsIkBtaXhpbiB0cmFuc2Zvcm0oJHByb3BlcnR5OiBub25lKSB7XHJcbiAgLy8gbm9uZSB8IDx0cmFuc2Zvcm0tZnVuY3Rpb24+XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLCAkcHJvcGVydHksIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIHRyYW5zZm9ybS1vcmlnaW4oJGF4ZXM6IDUwJSkge1xyXG4gIC8vIHgtYXhpcyAtIGxlZnQgfCBjZW50ZXIgfCByaWdodCAgfCBsZW5ndGggfCAlXHJcbiAgLy8geS1heGlzIC0gdG9wICB8IGNlbnRlciB8IGJvdHRvbSB8IGxlbmd0aCB8ICVcclxuICAvLyB6LWF4aXMgLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLW9yaWdpbiwgJGF4ZXMsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIHRyYW5zZm9ybS1zdHlsZSgkc3R5bGU6IGZsYXQpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0tc3R5bGUsICRzdHlsZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xyXG59XHJcbiIsIi8vIFNob3J0aGFuZCBtaXhpbi4gU3VwcG9ydHMgbXVsdGlwbGUgcGFyZW50aGVzZXMtZGVsaW1pbmF0ZWQgdmFsdWVzIGZvciBlYWNoIHZhcmlhYmxlLlxyXG4vLyBFeGFtcGxlOiBAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMnMgZWFzZS1pbi1vdXQpO1xyXG4vLyAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uIChvcGFjaXR5IDFzIGVhc2UtaW4gMnMsIHdpZHRoIDJzIGVhc2Utb3V0KTtcclxuLy8gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1wcm9wZXJ0eSAodHJhbnNmb3JtLCBvcGFjaXR5KTtcclxuXHJcbkBtaXhpbiB0cmFuc2l0aW9uKCRwcm9wZXJ0aWVzLi4uKSB7XHJcbiAgLy8gRml4IGZvciB2ZW5kb3ItcHJlZml4IHRyYW5zZm9ybSBwcm9wZXJ0eVxyXG4gICRuZWVkcy1wcmVmaXhlczogZmFsc2U7XHJcbiAgJHdlYmtpdDogKCk7XHJcbiAgJG1vejogKCk7XHJcbiAgJHNwZWM6ICgpO1xyXG5cclxuICAvLyBDcmVhdGUgbGlzdHMgZm9yIHZlbmRvci1wcmVmaXhlZCB0cmFuc2Zvcm1cclxuICBAZWFjaCAkbGlzdCBpbiAkcHJvcGVydGllcyB7XHJcbiAgICBAaWYgbnRoKCRsaXN0LCAxKSA9PSBcInRyYW5zZm9ybVwiIHtcclxuICAgICAgJG5lZWRzLXByZWZpeGVzOiB0cnVlO1xyXG4gICAgICAkbGlzdDE6IC13ZWJraXQtdHJhbnNmb3JtO1xyXG4gICAgICAkbGlzdDI6IC1tb3otdHJhbnNmb3JtO1xyXG4gICAgICAkbGlzdDM6ICgpO1xyXG5cclxuICAgICAgQGVhY2ggJHZhciBpbiAkbGlzdCB7XHJcbiAgICAgICAgJGxpc3QzOiBqb2luKCRsaXN0MywgJHZhcik7XHJcblxyXG4gICAgICAgIEBpZiAkdmFyICE9IFwidHJhbnNmb3JtXCIge1xyXG4gICAgICAgICAgJGxpc3QxOiBqb2luKCRsaXN0MSwgJHZhcik7XHJcbiAgICAgICAgICAkbGlzdDI6IGpvaW4oJGxpc3QyLCAkdmFyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICR3ZWJraXQ6IGFwcGVuZCgkd2Via2l0LCAkbGlzdDEpO1xyXG4gICAgICAkbW96OiAgICBhcHBlbmQoJG1veiwgICAgJGxpc3QyKTtcclxuICAgICAgJHNwZWM6ICAgYXBwZW5kKCRzcGVjLCAgICRsaXN0Myk7XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgJHdlYmtpdDogYXBwZW5kKCR3ZWJraXQsICRsaXN0LCBjb21tYSk7XHJcbiAgICAgICRtb3o6ICAgIGFwcGVuZCgkbW96LCAgICAkbGlzdCwgY29tbWEpO1xyXG4gICAgICAkc3BlYzogICBhcHBlbmQoJHNwZWMsICAgJGxpc3QsIGNvbW1hKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAkbmVlZHMtcHJlZml4ZXMge1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAkd2Via2l0O1xyXG4gICAgICAgLW1vei10cmFuc2l0aW9uOiAkbW96O1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAkc3BlYztcclxuICB9IEBlbHNlIHtcclxuICAgIEBpZiBsZW5ndGgoJHByb3BlcnRpZXMpID49IDEge1xyXG4gICAgICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLCAkcHJvcGVydGllcywgd2Via2l0IG1veiBzcGVjKTtcclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICAkcHJvcGVydGllczogYWxsIDAuMTVzIGVhc2Utb3V0IDBzO1xyXG4gICAgICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLCAkcHJvcGVydGllcywgd2Via2l0IG1veiBzcGVjKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiB0cmFuc2l0aW9uLXByb3BlcnR5KCRwcm9wZXJ0aWVzLi4uKSB7XHJcbiAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBcIndlYmtpdFwiKTtcclxuICAgICAtbW96LXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIFwibW96XCIpO1xyXG4gICAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcGVydGllcywgZmFsc2UpO1xyXG59XHJcblxyXG5AbWl4aW4gdHJhbnNpdGlvbi1kdXJhdGlvbigkdGltZXMuLi4pIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLWR1cmF0aW9uLCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbigkbW90aW9ucy4uLikge1xyXG4gIC8vIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dCB8IGN1YmljLWJlemllcigpXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sICRtb3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gdHJhbnNpdGlvbi1kZWxheSgkdGltZXMuLi4pIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuIiwiQG1peGluIHVzZXItc2VsZWN0KCR2YWx1ZTogbm9uZSkge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHVzZXItc2VsZWN0LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1jb2xvcmAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXHJcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBib3JkZXItY29sb3IoI2E2MGI1NSAjNzZjZDljIG51bGwgI2U4YWUxYSk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBib3JkZXItbGVmdC1jb2xvcjogI2U4YWUxYTtcclxuLy8vICAgICBib3JkZXItcmlnaHQtY29sb3I6ICM3NmNkOWM7XHJcbi8vLyAgICAgYm9yZGVyLXRvcC1jb2xvcjogI2E2MGI1NTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcclxuLy8vXHJcbi8vLyBAb3V0cHV0IGBib3JkZXItY29sb3JgXHJcblxyXG5AbWl4aW4gYm9yZGVyLWNvbG9yKCR2YWxzLi4uKSB7XHJcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCBjb2xvciwgJHZhbHMuLi4pO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItcmFkaXVzYCBvbiBib3RoIGNvcm5lcnMgb24gdGhlIHNpZGUgb2YgYSBib3guXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyYWRpaVxyXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudC1vbmUge1xyXG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDVweCk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyAgIC5lbGVtZW50LXR3byB7XHJcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLWxlZnQtcmFkaXVzKDNweCk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50LW9uZSB7XHJcbi8vLyAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4O1xyXG4vLy8gICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyAgIC5lbGVtZW50LXR3byB7XHJcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4O1xyXG4vLy8gICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBvdXRwdXQgYGJvcmRlci1yYWRpdXNgXHJcblxyXG5AbWl4aW4gYm9yZGVyLXRvcC1yYWRpdXMoJHJhZGlpKSB7XHJcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGlpO1xyXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaWk7XHJcbn1cclxuXHJcbkBtaXhpbiBib3JkZXItcmlnaHQtcmFkaXVzKCRyYWRpaSkge1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaWk7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpaTtcclxufVxyXG5cclxuQG1peGluIGJvcmRlci1ib3R0b20tcmFkaXVzKCRyYWRpaSkge1xyXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpaTtcclxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xyXG59XHJcblxyXG5AbWl4aW4gYm9yZGVyLWxlZnQtcmFkaXVzKCRyYWRpaSkge1xyXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpaTtcclxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaWk7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1zdHlsZWAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXHJcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBib3JkZXItc3R5bGUoZGFzaGVkIG51bGwgc29saWQpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XHJcbi8vLyAgICAgYm9yZGVyLXRvcC1zdHlsZTogZGFzaGVkO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxyXG4vLy9cclxuLy8vIEBvdXRwdXQgYGJvcmRlci1zdHlsZWBcclxuXHJcbkBtaXhpbiBib3JkZXItc3R5bGUoJHZhbHMuLi4pIHtcclxuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIHN0eWxlLCAkdmFscy4uLik7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci13aWR0aGAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXHJcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBib3JkZXItd2lkdGgoMWVtIG51bGwgMjBweCk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAyMHB4O1xyXG4vLy8gICAgIGJvcmRlci10b3Atd2lkdGg6IDFlbTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcclxuLy8vXHJcbi8vLyBAb3V0cHV0IGBib3JkZXItd2lkdGhgXHJcblxyXG5AbWl4aW4gYm9yZGVyLXdpZHRoKCR2YWxzLi4uKSB7XHJcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCB3aWR0aCwgJHZhbHMuLi4pO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBHZW5lcmF0ZXMgdmFyaWFibGVzIGZvciBhbGwgYnV0dG9ucy4gUGxlYXNlIG5vdGUgdGhhdCB5b3UgbXVzdCB1c2UgaW50ZXJwb2xhdGlvbiBvbiB0aGUgdmFyaWFibGU6IGAjeyRhbGwtYnV0dG9uc31gLlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAjeyRhbGwtYnV0dG9uc30ge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmMDA7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyAgICN7JGFsbC1idXR0b25zLWZvY3VzfSxcclxuLy8vICAgI3skYWxsLWJ1dHRvbnMtaG92ZXJ9IHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGYwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAjeyRhbGwtYnV0dG9ucy1hY3RpdmV9IHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICBidXR0b24sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwMDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgYnV0dG9uOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06Zm9jdXMsXHJcbi8vLyAgIGJ1dHRvbjpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmhvdmVyIHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGYwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICBidXR0b246YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTphY3RpdmUge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICMwMGY7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAcmVxdWlyZSBhc3NpZ24taW5wdXRzXHJcbi8vL1xyXG4vLy8gQHR5cGUgTGlzdFxyXG4vLy9cclxuLy8vIEB0b2RvIFJlbW92ZSBkb3VibGUgYXNzaWduZWQgdmFyaWFibGVzIChMaW5lcyA1OeKAkzYyKSBpbiB2NS4wLjBcclxuXHJcbiRidXR0b25zLWxpc3Q6ICdidXR0b24nLFxyXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScsXHJcbiAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwicmVzZXRcIl0nLFxyXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSc7XHJcblxyXG4kYWxsLWJ1dHRvbnM6ICAgICAgICBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QpO1xyXG4kYWxsLWJ1dHRvbnMtYWN0aXZlOiBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGFjdGl2ZSk7XHJcbiRhbGwtYnV0dG9ucy1mb2N1czogIGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCwgZm9jdXMpO1xyXG4kYWxsLWJ1dHRvbnMtaG92ZXI6ICBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGhvdmVyKTtcclxuXHJcbiRhbGwtYnV0dG9uLWlucHV0czogICAgICAgICRhbGwtYnV0dG9ucztcclxuJGFsbC1idXR0b24taW5wdXRzLWFjdGl2ZTogJGFsbC1idXR0b25zLWFjdGl2ZTtcclxuJGFsbC1idXR0b24taW5wdXRzLWZvY3VzOiAgJGFsbC1idXR0b25zLWZvY3VzO1xyXG4kYWxsLWJ1dHRvbi1pbnB1dHMtaG92ZXI6ICAkYWxsLWJ1dHRvbnMtaG92ZXI7XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhbiBlYXN5IHdheSB0byBpbmNsdWRlIGEgY2xlYXJmaXggZm9yIGNvbnRhaW5pbmcgZmxvYXRzLlxyXG4vLy9cclxuLy8vIEBsaW5rIGh0dHA6Ly9jc3Ntb2pvLmNvbS9sYXRlc3RfbmV3X2NsZWFyZml4X3NvX2Zhci9cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIGNsZWFyZml4O1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudDo6YWZ0ZXIge1xyXG4vLy8gICAgIGNsZWFyOiBib3RoO1xyXG4vLy8gICAgIGNvbnRlbnQ6IFwiXCI7XHJcbi8vLyAgICAgZGlzcGxheTogdGFibGU7XHJcbi8vLyAgIH1cclxuXHJcbkBtaXhpbiBjbGVhcmZpeCB7XHJcbiAgJjo6YWZ0ZXIge1xyXG4gICAgY2xlYXI6IGJvdGg7XHJcbiAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgZGlzcGxheTogdGFibGU7XHJcbiAgfVxyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBUcnVuY2F0ZXMgdGV4dCBhbmQgYWRkcyBhbiBlbGxpcHNpcyB0byByZXByZXNlbnQgb3ZlcmZsb3cuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbMTAwJV1cclxuLy8vICAgTWF4LXdpZHRoIGZvciB0aGUgc3RyaW5nIHRvIHJlc3BlY3QgYmVmb3JlIGJlaW5nIHRydW5jYXRlZFxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgZWxsaXBzaXM7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbi8vLyAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4vLy8gICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbi8vLyAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbi8vLyAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuLy8vICAgICB3b3JkLXdyYXA6IG5vcm1hbDtcclxuLy8vICAgfVxyXG5cclxuQG1peGluIGVsbGlwc2lzKCR3aWR0aDogMTAwJSkge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBtYXgtd2lkdGg6ICR3aWR0aDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgd29yZC13cmFwOiBub3JtYWw7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIEdlb3JnaWEgZm9udCBzdGFjay5cclxuLy8vXHJcbi8vLyBAdHlwZSBMaXN0XHJcblxyXG4kZ2VvcmdpYTogXCJHZW9yZ2lhXCIsIFwiQ2FtYnJpYVwiLCBcIlRpbWVzIE5ldyBSb21hblwiLCBcIlRpbWVzXCIsIHNlcmlmO1xyXG5cclxuLy8vIEhlbHZldGljYSBmb250IHN0YWNrLlxyXG4vLy9cclxuLy8vIEB0eXBlIExpc3RcclxuXHJcbiRoZWx2ZXRpY2E6IFwiSGVsdmV0aWNhIE5ldWVcIiwgXCJIZWx2ZXRpY2FcIiwgXCJSb2JvdG9cIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xyXG5cclxuLy8vIEx1Y2lkYSBHcmFuZGUgZm9udCBzdGFjay5cclxuLy8vXHJcbi8vLyBAdHlwZSBMaXN0XHJcblxyXG4kbHVjaWRhLWdyYW5kZTogXCJMdWNpZGEgR3JhbmRlXCIsIFwiVGFob21hXCIsIFwiVmVyZGFuYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XHJcblxyXG4vLy8gTW9ub3NwYWNlIGZvbnQgc3RhY2suXHJcbi8vL1xyXG4vLy8gQHR5cGUgTGlzdFxyXG5cclxuJG1vbm9zcGFjZTogXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJDb25zb2xhc1wiLCBcIkNvdXJpZXJcIiwgbW9ub3NwYWNlO1xyXG5cclxuLy8vIFZlcmRhbmEgZm9udCBzdGFjay5cclxuLy8vXHJcbi8vLyBAdHlwZSBMaXN0XHJcblxyXG4kdmVyZGFuYTogXCJWZXJkYW5hXCIsIFwiR2VuZXZhXCIsIHNhbnMtc2VyaWY7XHJcbiIsIi8vLyBIaWRlcyB0aGUgdGV4dCBpbiBhbiBlbGVtZW50LCBjb21tb25seSB1c2VkIHRvIHNob3cgYW4gaW1hZ2UuIFNvbWUgZWxlbWVudHMgd2lsbCBuZWVkIGJsb2NrLWxldmVsIHN0eWxlcyBhcHBsaWVkLlxyXG4vLy9cclxuLy8vIEBsaW5rIGh0dHA6Ly96ZWxkbWFuLmNvbS8yMDEyLzAzLzAxL3JlcGxhY2luZy10aGUtOTk5OXB4LWhhY2stbmV3LWltYWdlLXJlcGxhY2VtZW50XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBoaWRlLXRleHQ7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4vLy8gICAgIHRleHQtaW5kZW50OiAxMDElO1xyXG4vLy8gICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAdG9kbyBSZW1vdmUgaGVpZ2h0IGFyZ3VtZW50IGluIHY1LjAuMFxyXG5cclxuQG1peGluIGhpZGUtdGV4dCgkaGVpZ2h0OiBudWxsKSB7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0ZXh0LWluZGVudDogMTAxJTtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG5cclxuICBAaWYgJGhlaWdodCB7XHJcbiAgICBAd2FybiBcIlRoZSBgaGlkZS10ZXh0YCBtaXhpbiBoYXMgY2hhbmdlZCBhbmQgbm8gbG9uZ2VyIHJlcXVpcmVzIGEgaGVpZ2h0LiBUaGUgaGVpZ2h0IGFyZ3VtZW50IHdpbGwgbm8gbG9uZ2VyIGJlIGFjY2VwdGVkIGluIHY1LjAuMFwiO1xyXG4gIH1cclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgbWFyZ2luYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcclxuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIG1hcmdpbihudWxsIDEwcHggM2VtIDIwdmgpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgbWFyZ2luLWJvdHRvbTogM2VtO1xyXG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAyMHZoO1xyXG4vLy8gICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcclxuLy8vXHJcbi8vLyBAb3V0cHV0IGBtYXJnaW5gXHJcblxyXG5AbWl4aW4gbWFyZ2luKCR2YWxzLi4uKSB7XHJcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkobWFyZ2luLCBmYWxzZSwgJHZhbHMuLi4pO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBwYWRkaW5nYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcclxuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIHBhZGRpbmcoMTJ2aCBudWxsIDEwcHggNSUpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XHJcbi8vLyAgICAgcGFkZGluZy1sZWZ0OiA1JTtcclxuLy8vICAgICBwYWRkaW5nLXRvcDogMTJ2aDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcclxuLy8vXHJcbi8vLyBAb3V0cHV0IGBwYWRkaW5nYFxyXG5cclxuQG1peGluIHBhZGRpbmcoJHZhbHMuLi4pIHtcclxuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShwYWRkaW5nLCBmYWxzZSwgJHZhbHMuLi4pO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3Igc2V0dGluZyBhbiBlbGVtZW504oCZcyBwb3NpdGlvbi4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7UG9zaXRpb259ICRwb3NpdGlvbiBbcmVsYXRpdmVdXHJcbi8vLyAgIEEgQ1NTIHBvc2l0aW9uIHZhbHVlXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkY29vcmRpbmF0ZXMgW251bGwgbnVsbCBudWxsIG51bGxdXHJcbi8vLyAgIExpc3Qgb2YgdmFsdWVzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgNC12YWx1ZSBzeW50YXggZm9yIHRoZSBlZGdlcyBvZiBhIGJveFxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIDAgbnVsbCBudWxsIDEwZW0pO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgbGVmdDogMTBlbTtcclxuLy8vICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbi8vLyAgICAgdG9wOiAwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBpcy1sZW5ndGhcclxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gdW5wYWNrXHJcblxyXG5AbWl4aW4gcG9zaXRpb24oJHBvc2l0aW9uOiByZWxhdGl2ZSwgJGNvb3JkaW5hdGVzOiBudWxsIG51bGwgbnVsbCBudWxsKSB7XHJcbiAgQGlmIHR5cGUtb2YoJHBvc2l0aW9uKSA9PSBsaXN0IHtcclxuICAgICRjb29yZGluYXRlczogJHBvc2l0aW9uO1xyXG4gICAgJHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB9XHJcblxyXG4gICRjb29yZGluYXRlczogdW5wYWNrKCRjb29yZGluYXRlcyk7XHJcblxyXG4gICRvZmZzZXRzOiAoXHJcbiAgICB0b3A6ICAgIG50aCgkY29vcmRpbmF0ZXMsIDEpLFxyXG4gICAgcmlnaHQ6ICBudGgoJGNvb3JkaW5hdGVzLCAyKSxcclxuICAgIGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyksXHJcbiAgICBsZWZ0OiAgIG50aCgkY29vcmRpbmF0ZXMsIDQpXHJcbiAgKTtcclxuXHJcbiAgcG9zaXRpb246ICRwb3NpdGlvbjtcclxuXHJcbiAgQGVhY2ggJG9mZnNldCwgJHZhbHVlIGluICRvZmZzZXRzIHtcclxuICAgIEBpZiBpcy1sZW5ndGgoJHZhbHVlKSB7XHJcbiAgICAgICN7JG9mZnNldH06ICR2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIEEgbWl4aW4gZm9yIGdlbmVyYXRpbmcgdmVuZG9yIHByZWZpeGVzIG9uIG5vbi1zdGFuZGFyZGl6ZWQgcHJvcGVydGllcy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHByb3BlcnR5XHJcbi8vLyAgIFByb3BlcnR5IHRvIHByZWZpeFxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlXHJcbi8vLyAgIFZhbHVlIHRvIHVzZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJHByZWZpeGVzXHJcbi8vLyAgIFByZWZpeGVzIHRvIGRlZmluZVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXJhZGl1cywgMTBweCwgd2Via2l0IG1zIHNwZWMpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4vLy8gICAgIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDtcclxuLy8vICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci13ZWJraXRcclxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbW96aWxsYVxyXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1taWNyb3NvZnRcclxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itb3BlcmFcclxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itc3BlY1xyXG5cclxuQG1peGluIHByZWZpeGVyKCRwcm9wZXJ0eSwgJHZhbHVlLCAkcHJlZml4ZXMpIHtcclxuICBAZWFjaCAkcHJlZml4IGluICRwcmVmaXhlcyB7XHJcbiAgICBAaWYgJHByZWZpeCA9PSB3ZWJraXQge1xyXG4gICAgICBAaWYgJHByZWZpeC1mb3Itd2Via2l0IHtcclxuICAgICAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbW96IHtcclxuICAgICAgQGlmICRwcmVmaXgtZm9yLW1vemlsbGEge1xyXG4gICAgICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBtcyB7XHJcbiAgICAgIEBpZiAkcHJlZml4LWZvci1taWNyb3NvZnQge1xyXG4gICAgICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IG8ge1xyXG4gICAgICBAaWYgJHByZWZpeC1mb3Itb3BlcmEge1xyXG4gICAgICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gc3BlYyB7XHJcbiAgICAgIEBpZiAkcHJlZml4LWZvci1zcGVjIHtcclxuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSBAZWxzZSAge1xyXG4gICAgICBAd2FybiBcIlVucmVjb2duaXplZCBwcmVmaXg6ICN7JHByZWZpeH1cIjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCkge1xyXG4gICRwcmVmaXgtZm9yLXdlYmtpdDogICAgZmFsc2UgIWdsb2JhbDtcclxuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgIGZhbHNlICFnbG9iYWw7XHJcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiBmYWxzZSAhZ2xvYmFsO1xyXG4gICRwcmVmaXgtZm9yLW9wZXJhOiAgICAgZmFsc2UgIWdsb2JhbDtcclxuICAkcHJlZml4LWZvci1zcGVjOiAgICAgIGZhbHNlICFnbG9iYWw7XHJcbn1cclxuIiwiQG1peGluIHJldGluYS1pbWFnZSgkZmlsZW5hbWUsICRiYWNrZ3JvdW5kLXNpemUsICRleHRlbnNpb246IHBuZywgJHJldGluYS1maWxlbmFtZTogbnVsbCwgJHJldGluYS1zdWZmaXg6IF8yeCwgJGFzc2V0LXBpcGVsaW5lOiAkYXNzZXQtcGlwZWxpbmUpIHtcclxuICBAaWYgJGFzc2V0LXBpcGVsaW5lIHtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JGZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgdXJsKFwiI3skZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBoaWRwaSB7XHJcbiAgICBAaWYgJGFzc2V0LXBpcGVsaW5lIHtcclxuICAgICAgQGlmICRyZXRpbmEtZmlsZW5hbWUge1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcclxuICAgICAgfVxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIEBpZiAkcmV0aW5hLWZpbGVuYW1lIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIjeyRyZXRpbmEtZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JGZpbGVuYW1lfSN7JHJldGluYS1zdWZmaXh9LiN7JGV4dGVuc2lvbn1cIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRiYWNrZ3JvdW5kLXNpemU7XHJcbiAgfVxyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBTZXRzIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBvZiB0aGUgZWxlbWVudC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRzaXplXHJcbi8vLyAgIEEgbGlzdCBvZiBhdCBtb3N0IDIgc2l6ZSB2YWx1ZXMuXHJcbi8vL1xyXG4vLy8gICBJZiB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIHZhbHVlIGluIGAkc2l6ZWAgaXQgaXMgdXNlZCBmb3IgYm90aCB3aWR0aCBhbmQgaGVpZ2h0LiBBbGwgdW5pdHMgYXJlIHN1cHBvcnRlZC5cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmZpcnN0LWVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIHNpemUoMmVtKTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBzaXplKGF1dG8gMTBlbSk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5maXJzdC1lbGVtZW50IHtcclxuLy8vICAgICB3aWR0aDogMmVtO1xyXG4vLy8gICAgIGhlaWdodDogMmVtO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAuc2Vjb25kLWVsZW1lbnQge1xyXG4vLy8gICAgIHdpZHRoOiBhdXRvO1xyXG4vLy8gICAgIGhlaWdodDogMTBlbTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEB0b2RvIFJlZmFjdG9yIGluIDUuMC4wIHRvIHVzZSBhIGNvbW1hLXNlcGFyYXRlZCBhcmd1bWVudFxyXG5cclxuQG1peGluIHNpemUoJHZhbHVlKSB7XHJcbiAgJHdpZHRoOiBudGgoJHZhbHVlLCAxKTtcclxuICAkaGVpZ2h0OiAkd2lkdGg7XHJcblxyXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA+IDEge1xyXG4gICAgJGhlaWdodDogbnRoKCR2YWx1ZSwgMik7XHJcbiAgfVxyXG5cclxuICBAaWYgaXMtc2l6ZSgkaGVpZ2h0KSB7XHJcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAd2FybiBcImAjeyRoZWlnaHR9YCBpcyBub3QgYSB2YWxpZCBsZW5ndGggZm9yIHRoZSBgJGhlaWdodGAgcGFyYW1ldGVyIGluIHRoZSBgc2l6ZWAgbWl4aW4uXCI7XHJcbiAgfVxyXG5cclxuICBAaWYgaXMtc2l6ZSgkd2lkdGgpIHtcclxuICAgIHdpZHRoOiAkd2lkdGg7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAd2FybiBcImAjeyR3aWR0aH1gIGlzIG5vdCBhIHZhbGlkIGxlbmd0aCBmb3IgdGhlIGAkd2lkdGhgIHBhcmFtZXRlciBpbiB0aGUgYHNpemVgIG1peGluLlwiO1xyXG4gIH1cclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gR2VuZXJhdGVzIHZhcmlhYmxlcyBmb3IgYWxsIHRleHQtYmFzZWQgaW5wdXRzLiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTogYCN7JGFsbC10ZXh0LWlucHV0c31gLlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHN9IHtcclxuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjAwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtZm9jdXN9LFxyXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtaG92ZXJ9IHtcclxuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGYwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtYWN0aXZlfSB7XHJcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwZjtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl0sXHJcbi8vLyAgIHRleHRhcmVhIHtcclxuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjAwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXTpmb2N1cyxcclxuLy8vICAgdGV4dGFyZWE6Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmhvdmVyLFxyXG4vLy8gICB0ZXh0YXJlYTpob3ZlciB7XHJcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzBmMDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTphY3RpdmUsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTphY3RpdmUsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXTphY3RpdmUsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmFjdGl2ZSxcclxuLy8vICAgdGV4dGFyZWE6YWN0aXZlIHtcclxuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDBmO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJlcXVpcmUgYXNzaWduLWlucHV0c1xyXG4vLy9cclxuLy8vIEB0eXBlIExpc3RcclxuXHJcbiR0ZXh0LWlucHV0cy1saXN0OiAnaW5wdXRbdHlwZT1cImNvbG9yXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZVwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJlbWFpbFwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cIm1vbnRoXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwibnVtYmVyXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0ZWxcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGltZVwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInVybFwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cIndlZWtcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0Om5vdChbdHlwZV0pJyxcclxuICAgICAgICAgICAgICAgICAgICd0ZXh0YXJlYSc7XHJcblxyXG4kYWxsLXRleHQtaW5wdXRzOiAgICAgICAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCk7XHJcbiRhbGwtdGV4dC1pbnB1dHMtYWN0aXZlOiBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0LCBhY3RpdmUpO1xyXG4kYWxsLXRleHQtaW5wdXRzLWZvY3VzOiAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgZm9jdXMpO1xyXG4kYWxsLXRleHQtaW5wdXRzLWhvdmVyOiAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgaG92ZXIpO1xyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gQ1NTIGN1YmljLWJlemllciB0aW1pbmcgZnVuY3Rpb25zLiBUaW1pbmcgZnVuY3Rpb25zIGNvdXJ0ZXN5IG9mIGpxdWVyeS5lYXNpZSAoZ2l0aHViLmNvbS9qYXVraWEvZWFzaWUpXHJcbi8vL1xyXG4vLy8gVGltaW5nIGZ1bmN0aW9ucyBhcmUgdGhlIHNhbWUgYXMgZGVtb2VkIGhlcmU6IGh0dHA6Ly9qcXVlcnl1aS5jb20vcmVzb3VyY2VzL2RlbW9zL2VmZmVjdC9lYXNpbmcuaHRtbFxyXG4vLy9cclxuLy8vIEB0eXBlIGN1YmljLWJlemllclxyXG5cclxuJGVhc2UtaW4tcXVhZDogICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA4NSwgMC42ODAsIDAuNTMwKTtcclxuJGVhc2UtaW4tY3ViaWM6ICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA1NSwgMC42NzUsIDAuMTkwKTtcclxuJGVhc2UtaW4tcXVhcnQ6ICAgICBjdWJpYy1iZXppZXIoMC44OTUsICAwLjAzMCwgMC42ODUsIDAuMjIwKTtcclxuJGVhc2UtaW4tcXVpbnQ6ICAgICBjdWJpYy1iZXppZXIoMC43NTUsICAwLjA1MCwgMC44NTUsIDAuMDYwKTtcclxuJGVhc2UtaW4tc2luZTogICAgICBjdWJpYy1iZXppZXIoMC40NzAsICAwLjAwMCwgMC43NDUsIDAuNzE1KTtcclxuJGVhc2UtaW4tZXhwbzogICAgICBjdWJpYy1iZXppZXIoMC45NTAsICAwLjA1MCwgMC43OTUsIDAuMDM1KTtcclxuJGVhc2UtaW4tY2lyYzogICAgICBjdWJpYy1iZXppZXIoMC42MDAsICAwLjA0MCwgMC45ODAsIDAuMzM1KTtcclxuJGVhc2UtaW4tYmFjazogICAgICBjdWJpYy1iZXppZXIoMC42MDAsIC0wLjI4MCwgMC43MzUsIDAuMDQ1KTtcclxuXHJcbiRlYXNlLW91dC1xdWFkOiAgICAgY3ViaWMtYmV6aWVyKDAuMjUwLCAgMC40NjAsIDAuNDUwLCAwLjk0MCk7XHJcbiRlYXNlLW91dC1jdWJpYzogICAgY3ViaWMtYmV6aWVyKDAuMjE1LCAgMC42MTAsIDAuMzU1LCAxLjAwMCk7XHJcbiRlYXNlLW91dC1xdWFydDogICAgY3ViaWMtYmV6aWVyKDAuMTY1LCAgMC44NDAsIDAuNDQwLCAxLjAwMCk7XHJcbiRlYXNlLW91dC1xdWludDogICAgY3ViaWMtYmV6aWVyKDAuMjMwLCAgMS4wMDAsIDAuMzIwLCAxLjAwMCk7XHJcbiRlYXNlLW91dC1zaW5lOiAgICAgY3ViaWMtYmV6aWVyKDAuMzkwLCAgMC41NzUsIDAuNTY1LCAxLjAwMCk7XHJcbiRlYXNlLW91dC1leHBvOiAgICAgY3ViaWMtYmV6aWVyKDAuMTkwLCAgMS4wMDAsIDAuMjIwLCAxLjAwMCk7XHJcbiRlYXNlLW91dC1jaXJjOiAgICAgY3ViaWMtYmV6aWVyKDAuMDc1LCAgMC44MjAsIDAuMTY1LCAxLjAwMCk7XHJcbiRlYXNlLW91dC1iYWNrOiAgICAgY3ViaWMtYmV6aWVyKDAuMTc1LCAgMC44ODUsIDAuMzIwLCAxLjI3NSk7XHJcblxyXG4kZWFzZS1pbi1vdXQtcXVhZDogIGN1YmljLWJlemllcigwLjQ1NSwgIDAuMDMwLCAwLjUxNSwgMC45NTUpO1xyXG4kZWFzZS1pbi1vdXQtY3ViaWM6IGN1YmljLWJlemllcigwLjY0NSwgIDAuMDQ1LCAwLjM1NSwgMS4wMDApO1xyXG4kZWFzZS1pbi1vdXQtcXVhcnQ6IGN1YmljLWJlemllcigwLjc3MCwgIDAuMDAwLCAwLjE3NSwgMS4wMDApO1xyXG4kZWFzZS1pbi1vdXQtcXVpbnQ6IGN1YmljLWJlemllcigwLjg2MCwgIDAuMDAwLCAwLjA3MCwgMS4wMDApO1xyXG4kZWFzZS1pbi1vdXQtc2luZTogIGN1YmljLWJlemllcigwLjQ0NSwgIDAuMDUwLCAwLjU1MCwgMC45NTApO1xyXG4kZWFzZS1pbi1vdXQtZXhwbzogIGN1YmljLWJlemllcigxLjAwMCwgIDAuMDAwLCAwLjAwMCwgMS4wMDApO1xyXG4kZWFzZS1pbi1vdXQtY2lyYzogIGN1YmljLWJlemllcigwLjc4NSwgIDAuMTM1LCAwLjE1MCwgMC44NjApO1xyXG4kZWFzZS1pbi1vdXQtYmFjazogIGN1YmljLWJlemllcigwLjY4MCwgLTAuNTUwLCAwLjI2NSwgMS41NTApO1xyXG4iLCJAbWl4aW4gdHJpYW5nbGUoJHNpemUsICRjb2xvciwgJGRpcmVjdGlvbikge1xyXG4gICR3aWR0aDogbnRoKCRzaXplLCAxKTtcclxuICAkaGVpZ2h0OiBudGgoJHNpemUsIGxlbmd0aCgkc2l6ZSkpO1xyXG4gICRmb3JlZ3JvdW5kLWNvbG9yOiBudGgoJGNvbG9yLCAxKTtcclxuICAkYmFja2dyb3VuZC1jb2xvcjogaWYobGVuZ3RoKCRjb2xvcikgPT0gMiwgbnRoKCRjb2xvciwgMiksIHRyYW5zcGFyZW50KTtcclxuICBoZWlnaHQ6IDA7XHJcbiAgd2lkdGg6IDA7XHJcblxyXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcclxuICAgICR3aWR0aDogJHdpZHRoIC8gMjtcclxuICAgICRoZWlnaHQ6IGlmKGxlbmd0aCgkc2l6ZSkgPiAxLCAkaGVpZ2h0LCAkaGVpZ2h0LzIpO1xyXG5cclxuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcclxuICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xyXG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xyXG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgICBib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xyXG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xyXG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICAgIGJvcmRlci1yaWdodDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcclxuICAgICAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdXAtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHVwLWxlZnQpIHtcclxuICAgIGJvcmRlci10b3A6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XHJcblxyXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAtcmlnaHQge1xyXG4gICAgICBib3JkZXItbGVmdDogICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcclxuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB1cC1sZWZ0IHtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQpIHtcclxuICAgIGJvcmRlci1ib3R0b206ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XHJcblxyXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gZG93bi1yaWdodCB7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiAgJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24tbGVmdCB7XHJcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtdXApIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XHJcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcclxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LWRvd24pIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGZvcmVncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcclxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LXJpZ2h0KSB7XHJcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yO1xyXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICAgIGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7XHJcbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1sZWZ0KSB7XHJcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICAgIGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7XHJcbiAgfVxyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhbiBlYXN5IHdheSB0byBjaGFuZ2UgdGhlIGB3b3JkLXdyYXBgIHByb3BlcnR5LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkd3JhcCBbYnJlYWstd29yZF1cclxuLy8vICAgVmFsdWUgZm9yIHRoZSBgd29yZC1icmVha2AgcHJvcGVydHkuXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC53cmFwcGVyIHtcclxuLy8vICAgICBAaW5jbHVkZSB3b3JkLXdyYXAoYnJlYWstd29yZCk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC53cmFwcGVyIHtcclxuLy8vICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xyXG4vLy8gICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcclxuLy8vICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbi8vLyAgIH1cclxuXHJcbkBtaXhpbiB3b3JkLXdyYXAoJHdyYXA6IGJyZWFrLXdvcmQpIHtcclxuICBvdmVyZmxvdy13cmFwOiAkd3JhcDtcclxuICB3b3JkLXdyYXA6ICR3cmFwO1xyXG5cclxuICBAaWYgJHdyYXAgPT0gYnJlYWstd29yZCB7XHJcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICB3b3JkLWJyZWFrOiAkd3JhcDtcclxuICB9XHJcbn1cclxuIiwiLy8gVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IE1BSk9SIHZlcnNpb24gcmVsZWFzZVxyXG5cclxuQG1peGluIGlubGluZS1ibG9jayB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cclxuICBAd2FybiBcIlRoZSBpbmxpbmUtYmxvY2sgbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xyXG59XHJcblxyXG5AbWl4aW4gYnV0dG9uICgkc3R5bGU6IHNpbXBsZSwgJGJhc2UtY29sb3I6ICM0Mjk0ZjAsICR0ZXh0LXNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xyXG5cclxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IHN0cmluZyBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gY29sb3Ige1xyXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xyXG4gIH1cclxuXHJcbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBzdHJpbmcgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IG51bWJlciB7XHJcbiAgICAkcGFkZGluZzogJHRleHQtc2l6ZTtcclxuICAgICR0ZXh0LXNpemU6ICRiYXNlLWNvbG9yO1xyXG4gICAgJGJhc2UtY29sb3I6ICM0Mjk0ZjA7XHJcblxyXG4gICAgQGlmICRwYWRkaW5nID09IGluaGVyaXQge1xyXG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xyXG4gIH1cclxuXHJcbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBjb2xvciBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gY29sb3Ige1xyXG4gICAgJGJhc2UtY29sb3I6ICRzdHlsZTtcclxuICAgICRzdHlsZTogc2ltcGxlO1xyXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xyXG4gIH1cclxuXHJcbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBjb2xvciBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gbnVtYmVyIHtcclxuICAgICRwYWRkaW5nOiAkdGV4dC1zaXplO1xyXG4gICAgJHRleHQtc2l6ZTogJGJhc2UtY29sb3I7XHJcbiAgICAkYmFzZS1jb2xvcjogJHN0eWxlO1xyXG4gICAgJHN0eWxlOiBzaW1wbGU7XHJcblxyXG4gICAgQGlmICRwYWRkaW5nID09IGluaGVyaXQge1xyXG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xyXG4gIH1cclxuXHJcbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBudW1iZXIge1xyXG4gICAgJHBhZGRpbmc6ICRiYXNlLWNvbG9yO1xyXG4gICAgJHRleHQtc2l6ZTogJHN0eWxlO1xyXG4gICAgJGJhc2UtY29sb3I6ICM0Mjk0ZjA7XHJcbiAgICAkc3R5bGU6IHNpbXBsZTtcclxuXHJcbiAgICBAaWYgJHBhZGRpbmcgPT0gIzQyOTRmMCB7XHJcbiAgICAgICRwYWRkaW5nOiA3cHggMThweDtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XHJcbiAgfVxyXG5cclxuICAmOmRpc2FibGVkIHtcclxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICBvcGFjaXR5OiAwLjU7XHJcbiAgfVxyXG5cclxuICBAd2FybiBcIlRoZSBidXR0b24gbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xyXG59XHJcblxyXG4vLyBTZWxlY3RvciBTdHlsZSBCdXR0b25cclxuQG1peGluIGJ1dHRvbnN0eWxlKCR0eXBlLCAkYi1jb2xvciwgJHQtc2l6ZSwgJHBhZCkge1xyXG4gIC8vIEdyYXlzY2FsZSBidXR0b25cclxuICBAaWYgJHR5cGUgPT0gc2ltcGxlIGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcclxuICAgIEBpbmNsdWRlIHNpbXBsZSgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XHJcbiAgfVxyXG5cclxuICBAaWYgJHR5cGUgPT0gc2hpbnkgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xyXG4gICAgQGluY2x1ZGUgc2hpbnkoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xyXG4gIH1cclxuXHJcbiAgQGlmICR0eXBlID09IHBpbGwgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xyXG4gICAgQGluY2x1ZGUgcGlsbCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XHJcbiAgfVxyXG5cclxuICBAaWYgJHR5cGUgPT0gZmxhdCBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XHJcbiAgICBAaW5jbHVkZSBmbGF0KCRiLWNvbG9yLCB0cnVlLCAkdC1zaXplLCAkcGFkKTtcclxuICB9XHJcblxyXG4gIC8vIENvbG9yZWQgYnV0dG9uXHJcbiAgQGlmICR0eXBlID09IHNpbXBsZSB7XHJcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcclxuICB9XHJcblxyXG4gIEBlbHNlIGlmICR0eXBlID09IHNoaW55IHtcclxuICAgIEBpbmNsdWRlIHNoaW55KCRiLWNvbG9yLCBmYWxzZSwgJHQtc2l6ZSwgJHBhZCk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiAkdHlwZSA9PSBwaWxsIHtcclxuICAgIEBpbmNsdWRlIHBpbGwoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcclxuICB9XHJcblxyXG4gIEBlbHNlIGlmICR0eXBlID09IGZsYXQge1xyXG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xyXG4gIH1cclxufVxyXG5cclxuLy8gU2ltcGxlIEJ1dHRvblxyXG5AbWl4aW4gc2ltcGxlKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcclxuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xyXG4gICRib3JkZXI6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgOSUsICAkbGlnaHRuZXNzOiAtMTQlKTtcclxuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTglLCAgJGxpZ2h0bmVzczogIDE1JSk7XHJcbiAgJHN0b3AtZ3JhZGllbnQ6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xMSUpO1xyXG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgMTUlLCAkbGlnaHRuZXNzOiAtMTglKTtcclxuXHJcbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XHJcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xyXG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcclxuICB9XHJcblxyXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xyXG4gICAgJGJvcmRlcjogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyKTtcclxuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XHJcbiAgICAkc3RvcC1ncmFkaWVudDogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50KTtcclxuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcclxuICB9XHJcblxyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXI7XHJcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xyXG4gIGNvbG9yOiAkY29sb3I7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3IsICRzdG9wLWdyYWRpZW50KTtcclxuICBwYWRkaW5nOiAkcGFkZGluZztcclxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgJHRleHQtc2hhZG93O1xyXG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XHJcblxyXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC00JSwgJGxpZ2h0bmVzczogLTUlKTtcclxuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNyUsICRsaWdodG5lc3M6ICA1JSk7XHJcbiAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDglLCAkbGlnaHRuZXNzOiAtMTQlKTtcclxuXHJcbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcclxuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XHJcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XHJcbiAgICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcclxuXHJcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdy1ob3ZlcjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxyXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgJGJvcmRlci1hY3RpdmU6ICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDklLCAkbGlnaHRuZXNzOiAtMTQlKTtcclxuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA3JSwgJGxpZ2h0bmVzczogLTE3JSk7XHJcblxyXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xyXG4gICAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctYWN0aXZlKTtcclxuICAgIH1cclxuXHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWFjdGl2ZTtcclxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA4cHggNHB4ICRpbnNldC1zaGFkb3ctYWN0aXZlLCBpbnNldCAwIDAgOHB4IDRweCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcclxuICB9XHJcbn1cclxuXHJcbi8vIFNoaW55IEJ1dHRvblxyXG5AbWl4aW4gc2hpbnkoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xyXG4gICRjb2xvcjogICAgICAgICBoc2woMCwgMCwgMTAwJSk7XHJcbiAgJGJvcmRlcjogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExNywgJGdyZWVuOiAtMTExLCAkYmx1ZTogLTgxKTtcclxuICAkYm9yZGVyLWJvdHRvbTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTI2LCAkZ3JlZW46IC0xMjcsICRibHVlOiAtMTIyKTtcclxuICAkZm91cnRoLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNzksICAkZ3JlZW46IC03MCwgICRibHVlOiAtNDYpO1xyXG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6ICAzNywgICRncmVlbjogIDI5LCAgJGJsdWU6ICAxMik7XHJcbiAgJHNlY29uZC1zdG9wOiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTU2LCAgJGdyZWVuOiAtNTAsICAkYmx1ZTogLTMzKTtcclxuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTQwLCAkZ3JlZW46IC0xNDEsICRibHVlOiAtMTE0KTtcclxuICAkdGhpcmQtc3RvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtODYsICAkZ3JlZW46IC03NSwgICRibHVlOiAtNDgpO1xyXG5cclxuICBAaWYgaXMtbGlnaHQoJGJhc2UtY29sb3IpIHtcclxuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XHJcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xyXG4gIH1cclxuXHJcbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAkYm9yZGVyOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXIpO1xyXG4gICAgJGJvcmRlci1ib3R0b206IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XHJcbiAgICAkZm91cnRoLXN0b3A6ICAgZ3JheXNjYWxlKCRmb3VydGgtc3RvcCk7XHJcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xyXG4gICAgJHNlY29uZC1zdG9wOiAgIGdyYXlzY2FsZSgkc2Vjb25kLXN0b3ApO1xyXG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xyXG4gICAgJHRoaXJkLXN0b3A6ICAgIGdyYXlzY2FsZSgkdGhpcmQtc3RvcCk7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQodG9wLCAkYmFzZS1jb2xvciAwJSwgJHNlY29uZC1zdG9wIDUwJSwgJHRoaXJkLXN0b3AgNTAlLCAkZm91cnRoLXN0b3AgMTAwJSk7XHJcblxyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXI7XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItYm90dG9tO1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdztcclxuICBjb2xvcjogJGNvbG9yO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBmb250LXNpemU6ICR0ZXh0c2l6ZTtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxuICBwYWRkaW5nOiAkcGFkZGluZztcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcclxuXHJcbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEzLCAkZ3JlZW46IC0xNSwgJGJsdWU6IC0xOCk7XHJcbiAgICAkc2Vjb25kLXN0b3AtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTY2LCAkZ3JlZW46IC02MiwgJGJsdWU6IC01MSk7XHJcbiAgICAkdGhpcmQtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTkzLCAkZ3JlZW46IC04NSwgJGJsdWU6IC02Nik7XHJcbiAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAkZ3JlZW46IC04MCwgJGJsdWU6IC02Myk7XHJcblxyXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAgICRmaXJzdC1zdG9wLWhvdmVyOiAgZ3JheXNjYWxlKCRmaXJzdC1zdG9wLWhvdmVyKTtcclxuICAgICAgJHNlY29uZC1zdG9wLWhvdmVyOiBncmF5c2NhbGUoJHNlY29uZC1zdG9wLWhvdmVyKTtcclxuICAgICAgJHRoaXJkLXN0b3AtaG92ZXI6ICBncmF5c2NhbGUoJHRoaXJkLXN0b3AtaG92ZXIpO1xyXG4gICAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGdyYXlzY2FsZSgkZm91cnRoLXN0b3AtaG92ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRmaXJzdC1zdG9wLWhvdmVyICAwJSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWNvbmQtc3RvcC1ob3ZlciA1MCUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcmQtc3RvcC1ob3ZlciAgNTAlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyIDEwMCUpO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIH1cclxuXHJcbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXHJcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTExLCAkZ3JlZW46IC0xMTYsICRibHVlOiAtMTIyKTtcclxuXHJcbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcclxuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDIwcHggMCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcclxuICB9XHJcbn1cclxuXHJcbi8vIFBpbGwgQnV0dG9uXHJcbkBtaXhpbiBwaWxsKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcclxuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xyXG4gICRib3JkZXItYm90dG9tOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogLTExJSwgJGxpZ2h0bmVzczogLTI2JSk7XHJcbiAgJGJvcmRlci1zaWRlczogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMjElLCAkbGlnaHRuZXNzOiAtMjElKTtcclxuICAkYm9yZGVyLXRvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0zMCUsICRsaWdodG5lc3M6IC0xNSUpO1xyXG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IC0xLCAkc2F0dXJhdGlvbjogLTElLCAgJGxpZ2h0bmVzczogIDclKTtcclxuICAkc3RvcC1ncmFkaWVudDogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246ICAxNCUsICRsaWdodG5lc3M6IC0xMCUpO1xyXG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTE5JSwgJGxpZ2h0bmVzczogLTE1JSk7XHJcblxyXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xyXG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcclxuICAgICR0ZXh0LXNoYWRvdzogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogMTAlLCAkbGlnaHRuZXNzOiA0JSk7XHJcbiAgfVxyXG5cclxuICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcclxuICAgICRib3JkZXItYm90dG9tOiBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20pO1xyXG4gICAgJGJvcmRlci1zaWRlczogIGdyYXlzY2FsZSgkYm9yZGVyLXNpZGVzKTtcclxuICAgICRib3JkZXItdG9wOiAgICBncmF5c2NhbGUoJGJvcmRlci10b3ApO1xyXG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcclxuICAgICRzdG9wLWdyYWRpZW50OiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQpO1xyXG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xyXG4gIH1cclxuXHJcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci10b3A7XHJcbiAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLXRvcCAkYm9yZGVyLXNpZGVzICRib3JkZXItYm90dG9tO1xyXG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XHJcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XHJcbiAgY29sb3I6ICRjb2xvcjtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XHJcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICBsaW5lLWhlaWdodDogMTtcclxuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLCAkc3RvcC1ncmFkaWVudCk7XHJcbiAgcGFkZGluZzogJHBhZGRpbmc7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3c7XHJcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcclxuXHJcbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpZ2h0bmVzczogLTQuNSUpO1xyXG4gICAgJGJvcmRlci1ib3R0b206ICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAgMTMuNSUsICRsaWdodG5lc3M6IC0zMiUpO1xyXG4gICAgJGJvcmRlci1zaWRlczogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMiUsICAgICRsaWdodG5lc3M6IC0yNyUpO1xyXG4gICAgJGJvcmRlci10b3A6ICAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMTclLCAgICRsaWdodG5lc3M6IC0yMSUpO1xyXG4gICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgICAgICAgICAgICRzYXR1cmF0aW9uOiAtMSUsICAgICRsaWdodG5lc3M6ICAzJSk7XHJcbiAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246IC00JSwgICAgJGxpZ2h0bmVzczogLTE1LjUlKTtcclxuICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTUlLCAgICAkbGlnaHRuZXNzOiAtMjIlKTtcclxuXHJcbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcclxuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XHJcbiAgICAgICRib3JkZXItYm90dG9tOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20pO1xyXG4gICAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItc2lkZXMpO1xyXG4gICAgICAkYm9yZGVyLXRvcDogICAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcclxuICAgICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWhvdmVyKTtcclxuICAgICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudC1ob3Zlcik7XHJcbiAgICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWhvdmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLWhvdmVyLCAkc3RvcC1ncmFkaWVudC1ob3Zlcik7XHJcblxyXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLXRvcCAkYm9yZGVyLXNpZGVzICRib3JkZXItYm90dG9tO1xyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3ctaG92ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3ctaG92ZXI7XHJcbiAgfVxyXG5cclxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSxcclxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcclxuICAgICRhY3RpdmUtY29sb3I6ICAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA0LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMTAlKTtcclxuICAgICRib3JkZXItYWN0aXZlOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA2LCAgJHNhdHVyYXRpb246IC0yLjUlLCAkbGlnaHRuZXNzOiAtMzAlKTtcclxuICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAxMSwgJHNhdHVyYXRpb246ICA2JSwgICAkbGlnaHRuZXNzOiAtMzElKTtcclxuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA5LCAgJHNhdHVyYXRpb246ICAyJSwgICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xyXG4gICAgJHRleHQtc2hhZG93LWFjdGl2ZTogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDUsICAkc2F0dXJhdGlvbjogLTEyJSwgICRsaWdodG5lc3M6IC0yMS41JSk7XHJcblxyXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAgICRhY3RpdmUtY29sb3I6ICAgICAgICAgZ3JheXNjYWxlKCRhY3RpdmUtY29sb3IpO1xyXG4gICAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLWFjdGl2ZSk7XHJcbiAgICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tLWFjdGl2ZSk7XHJcbiAgICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctYWN0aXZlKTtcclxuICAgICAgJHRleHQtc2hhZG93LWFjdGl2ZTogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWFjdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYmFja2dyb3VuZDogJGFjdGl2ZS1jb2xvcjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItYWN0aXZlO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItYm90dG9tLWFjdGl2ZTtcclxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA2cHggM3B4ICRpbnNldC1zaGFkb3ctYWN0aXZlO1xyXG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWFjdGl2ZTtcclxuICB9XHJcbn1cclxuXHJcbi8vIEZsYXQgQnV0dG9uXHJcbkBtaXhpbiBmbGF0KCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcclxuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xyXG5cclxuICBAaWYgaXMtbGlnaHQoJGJhc2UtY29sb3IpIHtcclxuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XHJcbiAgfVxyXG5cclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvcjtcclxuICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgYm9yZGVyOiAwO1xyXG4gIGNvbG9yOiAkY29sb3I7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xyXG5cclxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe1xyXG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDQlLCAkbGlnaHRuZXNzOiA1JSk7XHJcblxyXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXNlLWNvbG9yLWhvdmVyO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIH1cclxuXHJcbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXHJcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAkYmFzZS1jb2xvci1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC00JSwgJGxpZ2h0bmVzczogLTUlKTtcclxuXHJcbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcclxuICAgICAgJGJhc2UtY29sb3ItYWN0aXZlOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItYWN0aXZlKTtcclxuICAgIH1cclxuXHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvci1hY3RpdmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBGbGV4aWJsZSBncmlkXHJcbkBmdW5jdGlvbiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zKSB7XHJcbiAgJHdpZHRoOiAkY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XHJcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XHJcbiAgQHJldHVybiBwZXJjZW50YWdlKCR3aWR0aCAvICRjb250YWluZXItd2lkdGgpO1xyXG5cclxuICBAd2FybiBcIlRoZSBmbGV4LWdyaWQgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xyXG59XHJcblxyXG4vLyBGbGV4aWJsZSBndXR0ZXJcclxuQGZ1bmN0aW9uIGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zLCAkZ3V0dGVyOiAkZmctZ3V0dGVyKSB7XHJcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XHJcbiAgQHJldHVybiBwZXJjZW50YWdlKCRndXR0ZXIgLyAkY29udGFpbmVyLXdpZHRoKTtcclxuXHJcbiAgQHdhcm4gXCJUaGUgZmxleC1ndXR0ZXIgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xyXG59XHJcblxyXG5AZnVuY3Rpb24gZ3JpZC13aWR0aCgkbikge1xyXG4gIEByZXR1cm4gJG4gKiAkZ3ctY29sdW1uICsgKCRuIC0gMSkgKiAkZ3ctZ3V0dGVyO1xyXG5cclxuICBAd2FybiBcIlRoZSBncmlkLXdpZHRoIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2VcIjtcclxufVxyXG5cclxuQGZ1bmN0aW9uIGdvbGRlbi1yYXRpbygkdmFsdWUsICRpbmNyZW1lbnQpIHtcclxuICBAcmV0dXJuIG1vZHVsYXItc2NhbGUoJGluY3JlbWVudCwgJHZhbHVlLCAkcmF0aW86ICRnb2xkZW4pO1xyXG5cclxuICBAd2FybiBcIlRoZSBnb2xkZW4tcmF0aW8gZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS4gUGxlYXNlIHVzZSB0aGUgbW9kdWxhci1zY2FsZSBmdW5jdGlvbiwgaW5zdGVhZC5cIjtcclxufVxyXG5cclxuQG1peGluIGJveC1zaXppbmcoJGJveCkge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1zaXppbmcsICRib3gsIHdlYmtpdCBtb3ogc3BlYyk7XHJcblxyXG4gIEB3YXJuIFwiVGhlIGJveC1zaXppbmcgbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS4gVGhpcyBwcm9wZXJ0eSBjYW4gbm93IGJlIHVzZWQgdW4tcHJlZml4ZWQuXCI7XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O2dHQUlnRztBQ0poRzs7OztnR0FJZ0c7QUFFaEcsNkNBQTZDO0FBa0U3QyxBQUFBLGdCQUFnQixDQUFBO0VBQUMsUUFBUSxFQUFFLFFBQVE7RUFBQyxHQUFHLEVBQUMsQ0FBQztFQUFDLE1BQU0sRUFBQyxDQUFDO0VBQUMsS0FBSyxFQUFDLENBQUM7RUFBQyxJQUFJLEVBQUMsQ0FBQztFQUFDLE1BQU0sRUFBQyxJQUFJO0NBQUc7O0FBQ2hGLEFBQUEsVUFBVSxDQUFBO0VBQUMsTUFBTSxFQUFFLFlBQVk7Q0FBRzs7QUFDbEMsQUFBQSxZQUFZLENBQUE7RUFBQyxPQUFPLEVBQUUsRUFBRTtFQUFDLE9BQU8sRUFBRSxLQUFLO0VBQUMsS0FBSyxFQUFFLElBQUk7Q0FBRzs7QUFDdEQsQUFBQSxRQUFRLENBQUE7RUFBQyxVQUFVLEVBQUUsS0FBSztDQUFFOztBQUM1QixBQUFBLE9BQU8sQ0FBQTtFQUFDLFVBQVUsRUFBRSxJQUFJO0NBQUU7O0FBRzFCO2dHQUNnRztBRHhFaEcsTUFBTSxDQUFDLEdBQUcsTUFBTSxTQUFTLEVBQUUsS0FBSztFQUVoQztnR0FDZ0c7RUFDaEcsQUFBQSxTQUFTLENBQUM7SUFDVCxNQUFNLEVBQUUsSUFBSTtJQUFFLFdBQVcsRUFBRSxJQUFJO0lBQUUsS0FBSyxFQUFFLElBQUk7R0FFNUM7RUFIRCxBQUVDLFNBRlEsQ0FFUixJQUFJLENBQUM7SUFBQyxNQUFNLEVBQUUsSUFBSTtJQUFFLFdBQVcsRUFBRSxJQUFJO0dBQUc7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 */
