body{font-size:1rem;font-family:Arial,Sans-Serif;background-color:#fff}header{background:#efefef;color:#707070}header .row{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}@media screen and (max-width:640px){header{position:relative}header .row{display:block}}#brand a{color:#707070;font-size:3rem;line-height:1;display:block}address{font-style:normal;margin:0 10px 0 0;font-size:.8rem}address,address a:link{color:#707070}address a:hover{color:#a3a3a3}address a:active,address a:visited{color:#707070}#contact_links a{color:#707070;font-weight:700}#contact_links a svg{fill:#707070}footer{background-color:#efefef;color:#707070}#container_credits{background-color:#d6d6d6;color:#707070}#container_credits a,#container_credits p,.toggle-overlay-navigation,.toggle-overlay-navigation:hover{color:#707070}#secondary_navigation ul{list-style-type:none;text-align:center}#secondary_navigation ul li{display:inline-block;margin-right:15px}#secondary_navigation ul li a{color:#565656;-webkit-transition:.2s;transition:.2s}#secondary_navigation ul li a:hover{color:#707070}.button.primary{border:none!important;background:#454545;color:#ababab!important;text-decoration:none!important}.button.primary:active,.button.primary:focus,.button.primary:hover{color:#fff;background:#685555}.button.success{border:none!important;background:hsla(0,0%,80%,.8);color:rgba(77,77,77,.8)!important;text-decoration:none!important}.button.success:active,.button.success:focus,.button.success:hover{color:#fff;background:hsla(0,9.8%,90%,.8)}.button.danger{border:none!important;background:#ce0000;color:#fff!important;text-decoration:none!important}.button.danger:active,.button.danger:focus,.button.danger:hover{color:#fff;background:#ea0000}.mod_item_container{margin:0 0 30px!important}.mod_item_container .mod__title .widget .widget_title,.mod_item_container .mod__title h2,.mod_item_container .mod__title h3,.widget .mod_item_container .mod__title .widget_title{margin:20px 0}.widget{padding:30px 0}.widget .widget_title{text-align:center}.widget p:last-child{margin:30px 0 0}.widget .button{margin:0}.mod__room_categories #primary_content h1{text-align:center}.mod__room_categories #primary_content .mod__item p{font-size:1.2em}.mod__room_categories #primary_content .room_categories__title_container{margin-bottom:10px}.mod__room_categories #primary_content .room_categories__title_container h1{text-align:left}@media (max-width:640px){.mod__room_categories #primary_content .room_categories__title_container h1{text-align:center}}.svg #service_icons li span,.svg .room_categories__compare_service,.svg .room_category_services li span{background-color:#454545!important}.mod__room_categories.mod__view h1{text-align:left}#primary_content #room_categories li.room_category_panel{box-shadow:0 0 10px #ccc;padding-bottom:20px;background:hsla(0,0%,100%,.7)}#primary_content #room_categories li.room_category_panel h3{margin:20px 0}#primary_content #room_categories li.room_category_panel a{text-decoration:none}.mod__promotions h1{text-align:center}.promotion__link_return_index{clear:both;border-top:1px dotted #ccc;padding-top:20px;margin:20px 0}.mod__packages h1{text-align:center}.package__link_return_index{clear:both;border-top:1px dotted #ccc;padding-top:20px;margin:20px 0}.mod__contact h1,.mod__reservations h1{text-align:center}#contact_form{margin:0!important;border:none;background:hsla(0,0%,100%,.7)}#container_location{background:#efefef;padding:30px 0 0;margin-bottom:30px}#container_location #map_canvas{margin:0}#container_location h3{color:#707070}#container_location .address,#container_location .latitude,#container_location .longitude{display:block}#container_location #location_contact_links{list-style-type:none;color:#707070;margin:20px 0;padding:0}#container_location #location_contact_links li{margin-bottom:10px}#container_location #location_contact_links li a{color:#707070}#container_location #location_contact_links li svg{fill:#707070;width:16px;height:16px}.mod__directions #container_contact_details{margin:0 0 30px!important;padding:20px;border:none;background:hsla(0,0%,100%,.7)}#primary_content .conditions .widget .widget_title,#primary_content .conditions h2,.widget #primary_content .conditions .widget_title{padding-bottom:10px;margin-top:0}#primary_content .conditions .widget .widget_title,#primary_content .conditions div,#primary_content .conditions h2,.widget #primary_content .conditions .widget_title{border-color:#4b4b4b}.widget .widget_title,h1,h2,h3,h4,h5,h6{font-family:Arial,Sans-Serif;font-variant:"";line-height:1}h1{color:#454545;font-size:1.58611rem;font-weight:100;margin-bottom:1.6rem}@media (min-width:480px) and (max-width:767px){h1{font-size:calc(1.58611rem + 0.42525*(100vw - 480px)/287)}}@media (min-width:767px) and (max-width:1000px){h1{font-size:calc(2.01136rem + 0*(100vw - 767px)/233)}}@media (min-width:1000px){h1{font-size:2.01136rem}}.widget .widget_title,h2{color:#454545;font-weight:100;font-size:1.41617rem}@media (min-width:480px) and (max-width:767px){.widget .widget_title,h2{font-size:calc(1.41617rem + 0.33284*(100vw - 480px)/287)}}@media (min-width:767px) and (max-width:1000px){.widget .widget_title,h2{font-size:calc(1.74901rem + 0*(100vw - 767px)/233)}}@media (min-width:1000px){.widget .widget_title,h2{font-size:1.74901rem}}h3{color:#454545;font-weight:100;font-size:1.8rem;font-size:1.26444rem}@media (min-width:480px) and (max-width:767px){h3{font-size:calc(1.26444rem + 0.25644*(100vw - 480px)/287)}}@media (min-width:767px) and (max-width:1000px){h3{font-size:calc(1.52087rem + 0*(100vw - 767px)/233)}}@media (min-width:1000px){h3{font-size:1.52087rem}}h4{color:#454545;font-weight:100;font-size:1.12896rem}@media (min-width:480px) and (max-width:767px){h4{font-size:calc(1.12896rem + 0.19354*(100vw - 480px)/287)}}@media (min-width:767px) and (max-width:1000px){h4{font-size:calc(1.3225rem + 0*(100vw - 767px)/233)}}@media (min-width:1000px){h4{font-size:1.3225rem}}h5{color:#454545;font-weight:100;font-size:1.008rem}@media (min-width:480px) and (max-width:767px){h5{font-size:calc(1.008rem + 0.142*(100vw - 480px)/287)}}@media (min-width:767px) and (max-width:1000px){h5{font-size:calc(1.15rem + 0*(100vw - 767px)/233)}}@media (min-width:1000px){h5{font-size:1.15rem}}h6{color:#454545;font-weight:100;font-size:.9rem}@media (min-width:480px) and (max-width:767px){h6{font-size:calc(.9rem + 0.1*(100vw - 480px)/287)}}@media (min-width:767px) and (max-width:1000px){h6{font-size:calc(1rem + 0*(100vw - 767px)/233)}}@media (min-width:1000px){h6{font-size:1rem}}p{color:#454545;font-size:.9rem}@media (min-width:480px) and (max-width:767px){p{font-size:calc(.9rem + 0.1*(100vw - 480px)/287)}}@media (min-width:767px) and (max-width:1000px){p{font-size:calc(1rem + 0*(100vw - 767px)/233)}}@media (min-width:1000px){p{font-size:1rem}}#location_contact_links a:not(.button):link,#primary_content a:not(.button):link{color:#454545;text-decoration:underline}#location_contact_links a:not(.button):hover,#primary_content a:not(.button):hover{color:#454545;text-decoration:none}#location_contact_links a:not(.button):active,#location_contact_links a:not(.button):visited,#primary_content a:not(.button):active,#primary_content a:not(.button):visited{color:#454545}#location_contact_links a{text-decoration:none!important}#primary_content ul{padding-left:20px;color:#454545}#primary_content ul li{margin-bottom:.5rem;font-size:.9rem}@media (min-width:480px) and (max-width:767px){#primary_content ul li{font-size:calc(.9rem + 0.1*(100vw - 480px)/287)}}@media (min-width:767px) and (max-width:1000px){#primary_content ul li{font-size:calc(1rem + 0*(100vw - 767px)/233)}}@media (min-width:1000px){#primary_content ul li{font-size:1rem}}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5zY3NzIiwiX2Jhc2Uuc2NzcyIsIl9oZWFkZXIuc2NzcyIsIl9jb2xvcl9mdW5jdGlvbnMuc2NzcyIsIl9mb290ZXIuc2NzcyIsIl9uYXZpZ2F0aW9uLnNjc3MiLCJfYnV0dG9ucy5zY3NzIiwiX21vZHVsZXMuc2NzcyIsIl9ob21lX3BhZ2Uuc2NzcyIsIl9yb29tcy5zY3NzIiwiX3Byb21vdGlvbnMuc2NzcyIsIl9wYWNrYWdlcy5zY3NzIiwiX3Jlc2VydmF0aW9ucy5zY3NzIiwiX2NvbnRhY3Quc2NzcyIsIl9sb2NhdGlvbi5zY3NzIiwiX2RpcmVjdGlvbnMuc2NzcyIsIl9jb25kaXRpb25zLnNjc3MiLCJfdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vLi4vLi4vLi4vVGhlbWVCdWlsZGVyL25vZGVfbW9kdWxlcy9tb2R1bGFyc2NhbGUtc2Fzcy9zdHlsZXNoZWV0cy9tb2R1bGFyc2NhbGUvX3Jlc3BvbmQuc2NzcyIsIl9jb2xvcl9wYWxldHRlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEJBLEtBQ0ksY0N5RVksQ0R4RVosNEJDbUVNLENEbEVOLHFCQ2ZtQixDRGdCdEIsT0U3QkMsa0JEYytCLENDYi9CLGFDcUR5QyxDRHZEM0MsWUFJSSxtQkFBYSxDQUFiLFlBQWEsQ0FDYix3QkFBYSxDQUFiLGtCQUFtQixDQUNwQixvQ0FOSCxPQVFJLGlCQUFrQixDQVJ0QixZQVdRLGFBQWMsQ0FDakIsQ0FJTCxTQUVJLGFDcUN1QyxDRHBDdkMsY0FBeUIsQ0FDekIsYUFBYyxDQUNkLGFBQWMsQ0FDZixRQUlELGlCQUFrQixDQUdsQixpQkFBa0IsQ0FDbEIsZUFBaUIsQ0FMbkIsdUJBR0UsYUMyQnlDLENEOUIzQyxnQkFhTSxhQUFpQyxDQWJ2QyxtQ0FxQk0sYUNTcUMsQ0RSdEMsaUJBTUQsYUNFdUMsQ0RBdkMsZUFBaUIsQ0FKckIscUJBT00sWUNIcUMsQ0RJdEMsT0UxREQsd0JIZTZCLENHZDdCLGFEcUR1QyxDQ3BEMUMsbUJBR0csd0JBQXNE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RixDQ3VCRywwQkQ1QkosR0M2Qk0sb0JBQTZGLENEeEJsRyxDQUVELEdBQ0ksYUVnSHFELENGL0dyRCxlaEJvRVksQ2lCdkVOLG9CQUFvRixDQVNwRiwrQ0RSVixHQ1dZLHdEQUF5RSxDRFBwRixDQ0lTLGdERFJWLEdDV1ksaURBQXlFLENEUHBGLENDaUJHLDBCRHJCSixHQ3NCTSxtQkFBNkYsQ0RsQmxHLENBRUQsR0FDSSxhRTBHcUQsQ0Z6R3JELGVoQjhEWSxDaUJ2RU4sa0JBQW9GLENBU3BGLCtDREZWLEdDS1ksb0RBQXlFLENERHBGLENDRlMsZ0RERlYsR0NLWSwrQ0FBeUUsQ0REcEYsQ0NXRywwQkRmSixHQ2dCTSxpQkFBNkYsQ0RabEcsQ0FFRCxHQUNJLGFFb0dxRCxDRm5HckQsZWhCd0RZLENpQnZFTixlQUFvRixDQVNwRiwrQ0RJVixHQ0RZLCtDQUF5RSxDREtwRixDQ1JTLGdERElWLEdDRFksNENBQXlFLENES3BGLENDS0csMEJEVEosR0NVTSxjQUE2RixDRE5sRyxDQUVELEVBQ0ksYWhCWnFCLENpQlJmLGVBQW9GLENBU3BGLCtDRFVWLEVDUFksK0NBQXlFLENEVXBGLENDYlMsZ0REVVYsRUNQWSw0Q0FBeUUsQ0RVcEYsQ0NBRywwQkRISixFQ0lNLGNBQTZGLENERGxHLENBRUQsaUZBSVksYWhCakJRLENnQmtCUix5QkFBMEIsQ0FMdEMsbUZBUVksYWhCcEJjLENnQnFCZCxvQkFBcUIsQ0FUakMsNEtBZVksYWhCekJnQixDZ0IwQm5CLDBCQU1ELDhCQUErQixDQUNsQyxvQkFLRyxpQkFBa0IsQ0FDbEIsYWhCN0NpQixDZ0IwQ3pCLHVCQU1ZLG1CQUFxQixDQ3hEdkIsZUFBb0YsQ0FTcEYsK0NEeUNWLHVCQ3RDWSwrQ0FBeUUsQ0Q4QzVFLENDakRDLGdERHlDVix1QkN0Q1ksNENBQXlFLENEOEM1RSxDQ3BDTCwwQkQ0QkosdUJDM0JNLGNBQTZGLENEbUMxRiIsImZpbGUiOiJhcHAuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcImNvbXBhc3NcIjtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBUYWJsZSBvZiBDb250ZW50c1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbjo6IEJhc2Ugc3R5bGVzXG46OiBGdW5jdGlvbnNcbjo6IFN0cnVjdHVyZVxuOjogTmF2aWdhdGlvblxuOjogQnV0dG9uc1xuOjogU3BlY2lmaWMgbW9kdWxlc1xuOjogQ29tbW9uIHN0eWxlc1xuOjogVHlwb2dyYXBoeVxuOjogTWVkaWEgcXVlcmllc1xuOjogTWlzY1xuKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBCYXNlIHN0eWxlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbkBpbXBvcnQgXCJfYmFzZVwiO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIEZ1bmN0aW9uc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIFN0cnVjdHVyZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbmJvZHkge1xuICAgIGZvbnQtc2l6ZTogJGJhc2UtZm9udDtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWJvZHk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG59XG5cbkBpbXBvcnQgXCJfaGVhZGVyXCI7XG5AaW1wb3J0IFwiX21haW5cIjtcbkBpbXBvcnQgXCJfZm9vdGVyXCI7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBOYXZpZ2F0aW9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuQGltcG9ydCBcIl9uYXZpZ2F0aW9uXCI7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgTmF2aWdhdGlvblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbkBpbXBvcnQgXCJfYnV0dG9uc1wiO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIFNwZWNpZmljIG1vZHVsZXMgYW5kIHdpZGdldHNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5AaW1wb3J0IFwiX21vZHVsZXNcIjtcbkBpbXBvcnQgXCJfaG9tZV9wYWdlXCI7XG4vLyBAaW1wb3J0IFwiX2dtYXBzX3dpZGdldFwiO1xuLy8gQGltcG9ydCBcIl9mZWF0dXJlZF9jb250ZW50XCI7XG5AaW1wb3J0IFwiX3Jvb21zXCI7XG5AaW1wb3J0IFwiX3Byb21vdGlvbnNcIjtcbkBpbXBvcnQgXCJfcGFja2FnZXNcIjtcbkBpbXBvcnQgXCJfaW1hZ2VzXCI7XG4vLyBAaW1wb3J0IFwiX3JlZ2lvbnNcIjtcbi8vIEBpbXBvcnQgXCJfbGlua3NcIjtcbi8vIEBpbXBvcnQgXCJfYWdlbmRhXCI7XG5AaW1wb3J0IFwiX3Jlc2VydmF0aW9uc1wiO1xuQGltcG9ydCBcIl9jb250YWN0XCI7XG5AaW1wb3J0IFwiX2xvY2F0aW9uXCI7XG5AaW1wb3J0IFwiX2RpcmVjdGlvbnNcIjtcbkBpbXBvcnQgXCJfY29uZGl0aW9uc1wiO1xuLy9AaW1wb3J0IFwiX2dhbGF4eV9iZXN0X3ByaWNlXCI7XG4vL0BpbXBvcnQgXCJfcmVzZXJ2ZWl0X2Jlc3RfcHJpY2VcIjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvbW1vbiBzdHlsZXNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBUeXBvZ3JhcGh5XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuQGltcG9ydCBcIl90eXBvZ3JhcGh5XCI7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgTWVkaWEgcXVlcmllc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBNaXNjXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLyIsIkBpbXBvcnQgJ21vZHVsYXJzY2FsZSc7XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBbWJpYW5jZSBhbmQgY29sb3JzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvcnNcblxuXG4kY29sb3ItcHJpbWFyeTogIzQ1NDU0NTtcbiRjb2xvci1hY2NlbnQ6ICNjY2NjO1xuXG5AaW1wb3J0IFwiX2NvbG9yX3BhbGV0dGVcIjtcbkBpbXBvcnQgXCJfY29sb3JfZnVuY3Rpb25zXCI7XG5cbi8vIEdlbmVyYWxcbiRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuJGJhY2tncm91bmQtY29sb3ItaGVhZGVyOiAjZWZlZmVmO1xuJGJhY2tncm91bmQtY29sb3ItZm9vdGVyOiAjZWZlZmVmO1xuXG4kY29sb3ItaGVhZGVyOiB0ZXh0LWNvbnRyYXN0KCRiYWNrZ3JvdW5kLWNvbG9yLWhlYWRlcik7XG4kY29sb3ItZm9vdGVyOiB0ZXh0LWNvbnRyYXN0KCRiYWNrZ3JvdW5kLWNvbG9yLWZvb3Rlcik7XG5cbi8vIE5hdmlnYXRpb24gY29sb3JzXG4kYmFja2dyb3VuZC1jb2xvci1wcmltYXJ5LW5hdmlnYXRpb246IGNvbG9yKCdhY2NlbnQnKTtcblxuJGNvbG9yLXByaW1hcnktbmF2aWdhdGlvbjogdGV4dC1jb250cmFzdCgkYmFja2dyb3VuZC1jb2xvci1wcmltYXJ5LW5hdmlnYXRpb24sICR0aHJlc2hvbGQ6Myk7XG4kY29sb3Itc2Vjb25kYXJ5LW5hdmlnYXRpb246IHRleHQtY29udHJhc3QoJGJhY2tncm91bmQtY29sb3ItZm9vdGVyKTtcblxuLy8gRGVmYXVsdCB0aXRsZSBjb2xvclxuJGNvbG9yLXRpdGxlczogIzY2NjY2NjtcblxuLy8gSGVhZGluZyBjb2xvcnNcbiRjb2xvci10aXRsZXMtaDE6IGNvbG9yKCdwcmltYXJ5Jyk7XG4kY29sb3ItdGl0bGVzLWgyOiBjb2xvcignY29tcGxlbWVudCcpO1xuJGNvbG9yLXRpdGxlcy1oMzogY29sb3IoJ2NvbXBsZW1lbnQnKTtcbiRjb2xvci10aXRsZXMtaDQ6IGNvbG9yKCdjb21wbGVtZW50Jyk7XG4kY29sb3ItdGl0bGVzLWg1OiBjb2xvcignY29tcGxlbWVudCcpO1xuJGNvbG9yLXRpdGxlcy1oNjogY29sb3IoJ2NvbXBsZW1lbnQnKTtcblxuLy8gQm9keSB0ZXh0IGNvbG9yXG4kY29sb3ItYm9keS10ZXh0OiAjNDU0NTQ1O1xuXG4vLyBMaW5rc1xuJGNvbG9yLWxpbms6ICM0NTQ1NDU7XG4kY29sb3ItbGluay1ob3ZlcjogIzQ1NDU0NTtcbiRjb2xvci1saW5rLWFjdGl2ZTogIzQ1NDU0NTtcbiRjb2xvci1saW5rLXZpc2l0ZWQ6ICM0NTQ1NDU7XG5cbi8vIFdpZGdldHNcbiRiYWNrZ3JvdW5kLWNvbG9yLXRpdGxlcy13aWRnZXQ6ICNjY2M7XG4kY29sb3ItdGl0bGVzLXdpZGdldDogIzQ1NDU0NTtcblxuLy8gUm9vbSBjYXRlZ29yeSBzZXJ2aWNlIGljb25zXG4kYmFja2dyb3VuZC1jb2xvci1zZXJ2aWNlLWljb25zOiAjNDU0NTQ1O1xuXG4vLyBCdXR0b25zXG4vLyBQcmltYXJ5XG4kY29sb3ItYnRuLXByaW1hcnk6IHRleHQtY29udHJhc3QoY29sb3IoJ3ByaW1hcnknKSk7XG4kY29sb3ItYnRuLXByaW1hcnktaG92ZXI6ICNmZmY7XG4kY29sb3ItYnRuLXByaW1hcnktYWN0aXZlOiAjZmZmO1xuJGNvbG9yLWJ0bi1wcmltYXJ5LWZvY3VzOiAjZmZmO1xuXG4kYmFja2dyb3VuZC1jb2xvci1idG4tcHJpbWFyeTogY29sb3IoJ3ByaW1hcnknKTtcbiRiYWNrZ3JvdW5kLWNvbG9yLWJ0bi1wcmltYXJ5LWhvdmVyOiBzYXR1cmF0ZShsaWdodGVuKCRiYWNrZ3JvdW5kLWNvbG9yLWJ0bi1wcmltYXJ5LCAxMCUpLCAxMCUpO1xuJGJhY2tncm91bmQtY29sb3ItYnRuLXByaW1hcnktYWN0aXZlOiBzYXR1cmF0ZShsaWdodGVuKCRiYWNrZ3JvdW5kLWNvbG9yLWJ0bi1wcmltYXJ5LCAxMCUpLCAxMCUpO1xuJGJhY2tncm91bmQtY29sb3ItYnRuLXByaW1hcnktZm9jdXM6IHNhdHVyYXRlKGxpZ2h0ZW4oJGJhY2tncm91bmQtY29sb3ItYnRuLXByaW1hcnksIDEwJSksIDEwJSk7XG5cbi8vIFN1Y2Nlc3NcbiRjb2xvci1idG4tc3VjY2VzczogdGV4dC1jb250cmFzdChjb2xvcignYWNjZW50JykpO1xuJGNvbG9yLWJ0bi1zdWNjZXNzLWhvdmVyOiAjZmZmO1xuJGNvbG9yLWJ0bi1zdWNjZXNzLWFjdGl2ZTogI2ZmZjtcbiRjb2xvci1idG4tc3VjY2Vzcy1mb2N1czogI2ZmZjtcblxuJGJhY2tncm91bmQtY29sb3ItYnRuLXN1Y2Nlc3M6IGNvbG9yKCdhY2NlbnQnKTtcbiRiYWNrZ3JvdW5kLWNvbG9yLWJ0bi1zdWNjZXNzLWhvdmVyOiBzYXR1cmF0ZShsaWdodGVuKCRiYWNrZ3JvdW5kLWNvbG9yLWJ0bi1zdWNjZXNzLCAxMCUpLCAxMCUpO1xuJGJhY2tncm91bmQtY29sb3ItYnRuLXN1Y2Nlc3MtYWN0aXZlOiBzYXR1cmF0ZShsaWdodGVuKCRiYWNrZ3JvdW5kLWNvbG9yLWJ0bi1zdWNjZXNzLCAxMCUpLCAxMCUpO1xuJGJhY2tncm91bmQtY29sb3ItYnRuLXN1Y2Nlc3MtZm9jdXM6IHNhdHVyYXRlKGxpZ2h0ZW4oJGJhY2tncm91bmQtY29sb3ItYnRuLXN1Y2Nlc3MsIDEwJSksIDEwJSk7XG5cbi8vIERhbmdlclxuJGNvbG9yLWJ0bi1kYW5nZXI6ICNmZmY7XG4kY29sb3ItYnRuLWRhbmdlci1ob3ZlcjogI2ZmZjtcbiRjb2xvci1idG4tZGFuZ2VyLWFjdGl2ZTogI2ZmZjtcbiRjb2xvci1idG4tZGFuZ2VyLWZvY3VzOiAjZmZmO1xuXG4kYmFja2dyb3VuZC1jb2xvci1idG4tZGFuZ2VyOiAjQ0UwMDAwO1xuJGJhY2tncm91bmQtY29sb3ItYnRuLWRhbmdlci1ob3ZlcjogI0VBMDAwMDtcbiRiYWNrZ3JvdW5kLWNvbG9yLWJ0bi1kYW5nZXItYWN0aXZlOiAjRUEwMDAwO1xuJGJhY2tncm91bmQtY29sb3ItYnRuLWRhbmdlci1mb2N1czogI0VBMDAwMDtcblxuLy8gTW9kdWxlc1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUeXBvZ3JhcGh5XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiRmb250LWZhbWlseS1ib2R5OiBBcmlhbCxcblNhbnMtU2VyaWY7XG4kZm9udC1mYW1pbHktdGl0bGVzOiBBcmlhbCxcblNhbnMtU2VyaWY7XG4kZm9udC12YXJpYW50LXRpdGxlczogJyc7XG5cbiRiYXNlLWZvbnQ6IDFyZW07XG5cbiRmb250LWxpZ2h0OiAxMDA7XG4kZm9udC1tZWRpdW06IDMwMDtcbiRmb250LWhlYXZ5OiA2MDA7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLyAkYnJlYWstc21hbGw6IDQ4MHB4O1xuLy8gJGJyZWFrLW1lZGl1bTogNzY3cHg7XG4vLyAkYnJlYWstbGFyZ2U6IDEwMDBweDtcbi8vICRicmVhay1leHRyYS1sYXJnZTogMTIwMHB4O1xuXG4kYnJlYWstcG9pbnRzOiAoc21hbGw6IDY0MHB4LFxuICAgIG1lZGl1bTogMTAyNHB4LFxuICAgIGxhcmdlOiAxNDQwcHgsXG4gICAgZXh0cmEtbGFyZ2U6IDE5MjBweCk7XG5cbkBmdW5jdGlvbiBicmVhay1wb2ludCgka2V5KSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRicmVhay1wb2ludHMsICRrZXkpO1xufVxuXG5cbiRtb2R1bGFyc2NhbGU6IChiYXNlOiAxcmVtLFxuICAgIHJhdGlvOiAxLFxuICAgIDQ4MHB4OiAoYmFzZTogMC45cmVtLFxuICAgICAgICByYXRpbzogMS4xMiksXG4gICAgNzY3cHg6IChyYXRpbzogMS4xNSksXG4gICAgMTAwMHB4OiAocmF0aW86IDEuMTUpKTsiLCJoZWFkZXIge1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1jb2xvci1oZWFkZXI7XG4gIGNvbG9yOiAkY29sb3ItaGVhZGVyO1xuICAucm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogYnJlYWstcG9pbnQoJ3NtYWxsJykpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAucm93IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG59XG5cbiNicmFuZCB7XG4gIGEge1xuICAgIGNvbG9yOiAkY29sb3ItaGVhZGVyO1xuICAgIGZvbnQtc2l6ZTogJGJhc2UtZm9udCAqIDM7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuYWRkcmVzcyB7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgLy8gZm9udC1zaXplOiAxLjNyZW07XG4gIGNvbG9yOiAkY29sb3ItaGVhZGVyO1xuICBtYXJnaW46IDAgMTBweCAwIDA7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuXG4gIGEge1xuICAgICY6bGluayB7XG4gICAgICBjb2xvcjogJGNvbG9yLWhlYWRlcjtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiBsaWdodGVuKCRjb2xvci1oZWFkZXIsMjAlKTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGNvbG9yLWhlYWRlcjtcbiAgICB9XG5cbiAgICAmOnZpc2l0ZWQge1xuICAgICAgY29sb3I6ICRjb2xvci1oZWFkZXI7XG4gICAgfVxuICB9XG59XG5cbiNjb250YWN0X2xpbmtzIHtcbiAgYSB7XG4gICAgY29sb3I6ICRjb2xvci1oZWFkZXI7XG4gICAgLy8gZm9udC1zaXplOiAxLjNyZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgICBzdmcge1xuICAgICAgZmlsbDogJGNvbG9yLWhlYWRlcjtcbiAgICB9XG4gIH1cbn1cbi8vICNjb3VudHJ5LXNlbGVjdCB7XG4vLyAgIC5kcm9wZG93biBkdCBhe1xuLy8gICAgIGJhY2tncm91bmQ6IGRhcmtlbigkYmFja2dyb3VuZC1jb2xvci1wcmltYXJ5LW5hdmlnYXRpb24sNSUpIHVybCgvaW1nL2ljb24vYmctbmVzdGVkLWNsb3NlZC5wbmcpIG5vLXJlcGVhdCA1cHggY2VudGVyO1xuLy8gICAgIGJvcmRlci1jb2xvcjogbGlnaHRlbigkYmFja2dyb3VuZC1jb2xvci1wcmltYXJ5LW5hdmlnYXRpb24sNSUpO1xuLy8gICB9XG4vLyAgIC5kcm9wZG93biBkZCB1bHtcbi8vICAgICBiYWNrZ3JvdW5kOiBkYXJrZW4oJGJhY2tncm91bmQtY29sb3ItcHJpbWFyeS1uYXZpZ2F0aW9uLDUlKTtcbi8vICAgICBib3JkZXItY29sb3I6IGxpZ2h0ZW4oJGJhY2tncm91bmQtY29sb3ItcHJpbWFyeS1uYXZpZ2F0aW9uLDUlKTtcbi8vICAgfVxuLy8gfVxuLy8gLmNvbnRhaW5lcl9idG5fcmVzZXJ2YXRpb24ge1xuLy8gICAgICNidG5fcmVzYSB7XG4vLyAgICAgfVxuLy8gfVxuIiwiQGZ1bmN0aW9uIHBvdygkeCwgJG4pIHtcbiAgICAkcmVzdWx0OiAxO1xuXG4gICAgQGlmICRuID49IDAge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRuIHtcbiAgICAgICAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAkeDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAkbiB0byAwIHtcbiAgICAgICAgICAgICRyZXN1bHQ6ICRyZXN1bHQgLyAkeDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gICAgLy8gVGhhbmtzIHZveHBlbGxpIGZvciBhIHZlcnkgY29uY2lzZSBpbXBsZW1lbnRhdGlvbiBvZiBsdW1pbmFuY2UgbWVhc3VyZSBpbiBzYXNzXG4gICAgLy8gQWRhcHRlZCBmcm9tOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS92b3hwZWxsaS82MzA0ODEyXG4gICAgJHJnYmE6IHJlZCgkY29sb3IpLCBncmVlbigkY29sb3IpLCBibHVlKCRjb2xvcik7XG4gICAgJHJnYmEyOiAoKTtcblxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggMyB7XG4gICAgICAgICRyZ2I6IG50aCgkcmdiYSwgJGkpO1xuICAgICAgICAkcmdiOiAkcmdiIC8gMjU1O1xuICAgICAgICAkcmdiOiBpZigkcmdiIDwgMC4wMzkyOCwgJHJnYiAvIDEyLjkyLCBwb3coKCRyZ2IgKyAwLjA1NSkgLyAxLjA1NSwgMi40KSk7XG4gICAgICAgICRyZ2JhMjogYXBwZW5kKCRyZ2JhMiwgJHJnYik7XG4gICAgfVxuXG4gICAgQHJldHVybiAoMC4yMTI2ICogbnRoKCRyZ2JhMiwgMSkgKyAwLjcxNTIgKiBudGgoJHJnYmEyLCAyKSArIDAuMDcyMiAqIG50aCgkcmdiYTIsIDMpKSAqIDEwMDtcbn1cblxuQGZ1bmN0aW9uIGNvbnRyYXN0X3JhdGlvKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgICAkbHVtYTE6IGx1bWEoJGNvbG9yMSkgKyA1O1xuICAgICRsdW1hMjogbHVtYSgkY29sb3IyKSArIDU7XG4gICAgJHJhdGlvOiAkbHVtYTEgLyAkbHVtYTI7XG5cbiAgICBAaWYgJGx1bWExIDwgJGx1bWEyIHtcbiAgICAgICAgJHJhdGlvOiAxIC8gJHJhdGlvO1xuICAgIH1cblxuICAgIEByZXR1cm4gJHJhdGlvO1xufVxuXG5AZnVuY3Rpb24gdGV4dC1jb250cmFzdCgkY29sb3IsICRiZ2NvbG9yOiAkY29sb3IsICR0aHJlc2hvbGQ6NC41KSB7XG4gICAgLy8gLy8gJHRocmVzaG9sZDogNC41O1xuICAgIC8vICR0aHJlc2hvbGQ6IDM7XG5cblxuICAgIC8vIDQuNSA9IFdDQUcgQUEsNz0gV0NBRyBBQUFcbiAgICAkbGlzdDogMjAgMzAgNDAgNTAgNjAgNzAgODAgOTAgMTAwO1xuXG4gICAgQGVhY2ggJHBlcmNlbnQgaW4gJGxpc3Qge1xuICAgICAgICAkbGlnaHRlcjogbGlnaHRlbigkYmdjb2xvciwgJHBlcmNlbnQpO1xuICAgICAgICAkZGFya2VyOiBkYXJrZW4oJGJnY29sb3IsICRwZXJjZW50KTtcbiAgICAgICAgJGRhcmtlci1yYXRpbzogY29udHJhc3RfcmF0aW8oJGNvbG9yLCAkZGFya2VyKTtcbiAgICAgICAgJGxpZ2h0ZXItcmF0aW86IGNvbnRyYXN0X3JhdGlvKCRjb2xvciwgJGxpZ2h0ZXIpO1xuXG4gICAgICAgIEBpZiAkbGlnaHRlci1yYXRpbyA+ICRkYXJrZXItcmF0aW8ge1xuICAgICAgICAgICAgQGlmICRsaWdodGVyLXJhdGlvID4gJHRocmVzaG9sZCB7XG4gICAgICAgICAgICAgICAgQHJldHVybiAkbGlnaHRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkZGFya2VyLXJhdGlvID4gJGxpZ2h0ZXItcmF0aW8ge1xuICAgICAgICAgICAgQGlmICRkYXJrZXItcmF0aW8gPiAkdGhyZXNob2xkIHtcbiAgICAgICAgICAgICAgICBAcmV0dXJuICRkYXJrZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIGlmKGxpZ2h0bmVzcygkY29sb3IpIDwgNTEsICNGRkYsICMwMDApO1xufVxuXG5AZnVuY3Rpb24gY29sb3IoJGtleTogJ3ByaW1hcnknKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkY29sb3JzLCAka2V5KTtcbn1cbiIsImZvb3RlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3ItZm9vdGVyO1xuICAgIGNvbG9yOiAkY29sb3ItZm9vdGVyO1xufVxuXG4jY29udGFpbmVyX2NyZWRpdHMge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkYmFja2dyb3VuZC1jb2xvci1mb290ZXIsMTAlKTtcbiAgICBjb2xvcjogJGNvbG9yLWZvb3RlcjtcbiAgICBwIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1mb290ZXI7XG4gICAgfVxuICAgIGEge1xuICAgICAgICBjb2xvcjogJGNvbG9yLWZvb3RlcjtcbiAgICB9XG59IiwiLy8gbmF2IHtcbi8vICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtY29sb3ItcHJpbWFyeS1uYXZpZ2F0aW9uO1xuLy8gfVxuXG4vLyBuYXYgI3ByaW1hcnlfbmF2aWdhdGlvbiB1bCB7XG4vLyAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbi8vICAgbWFyZ2luOiAwO1xuXG4vLyAgIGxpIHtcbi8vICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4vLyAgICAgZm9udC13ZWlnaHQ6ICRmb250LWxpZ2h0O1xuXG4vLyAgICAgYSB7XG4vLyAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnktbmF2aWdhdGlvbjtcbi8vICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbi8vICAgICAgIHRyYW5zaXRpb246IDAuMnM7XG4vLyAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG5cbi8vICAgICAgICY6aG92ZXIge1xuLy8gICAgICAgICBiYWNrZ3JvdW5kOiBkYXJrZW4oY29sb3IoJ3ByaW1hcnknKSwxMCUpO1xuLy8gICAgICAgICBjb2xvcjogdGV4dC1jb250cmFzdChjb2xvcigncHJpbWFyeScpKTtcbi8vICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4vLyAgICAgICAgIHN2ZyB7XG4vLyAgICAgICAgICAgZmlsbDogdGV4dC1jb250cmFzdChjb2xvcigncHJpbWFyeScpKTtcbi8vICAgICAgICAgfVxuLy8gICAgICAgfVxuLy8gICAgIH1cblxuLy8gICAgICYuaG9tZSB7XG4vLyAgICAgICBzdmcge1xuLy8gICAgICAgICBmaWxsOiAkY29sb3ItcHJpbWFyeS1uYXZpZ2F0aW9uO1xuLy8gICAgICAgfVxuLy8gICAgIH1cblxuLy8gICAgICYuYWN0aXZlIHtcbi8vICAgICAgIHNwYW4uYWN0aXZlIHtcbi8vICAgICAgICAgYmFja2dyb3VuZDogZGFya2VuKGNvbG9yKCdwcmltYXJ5JyksMTAlKTtcbi8vICAgICAgICAgY29sb3I6IHRleHQtY29udHJhc3QoY29sb3IoJ3ByaW1hcnknKSk7XG4vLyAgICAgICAgIHBhZGRpbmc6IDEwcHggMjBweDtcbi8vICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbi8vICAgICAgICAgc3ZnIHtcbi8vICAgICAgICAgICBmaWxsOiB0ZXh0LWNvbnRyYXN0KGNvbG9yKCdwcmltYXJ5JykpO1xuLy8gICAgICAgICB9XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy8gICB9XG4vLyB9XG5cbi8vICNzaG93X21lbnUge1xuLy8gICBjb2xvcjogJGNvbG9yLXByaW1hcnktbmF2aWdhdGlvbjtcblxuLy8gICBzdmcge1xuLy8gICAgIGZpbGw6ICRjb2xvci1wcmltYXJ5LW5hdmlnYXRpb247XG4vLyAgIH1cbi8vIH1cblxuLnRvZ2dsZS1vdmVybGF5LW5hdmlnYXRpb24ge1xuXG4gICAgY29sb3I6ICRjb2xvci1oZWFkZXI7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1oZWFkZXI7XG4gICAgfVxuXG59XG5cbiNzZWNvbmRhcnlfbmF2aWdhdGlvbiB1bCB7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBjb2xvcjogZGFya2VuKCRjb2xvci1zZWNvbmRhcnktbmF2aWdhdGlvbiwgMTAlKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IDAuMnM7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5LW5hdmlnYXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59IiwiLy8gQnV0dG9uIGNvbG9ycyBcblxuQG1peGluIGJ1dHRvbihcblx0JGNvbG9yLCBcblx0JGNvbG9yLWhvdmVyLCBcblx0JGNvbG9yLWFjdGl2ZSxcblx0JGNvbG9yLWZvY3VzLFxuXHQkYmFja2dyb3VuZC1jb2xvciwgXG5cdCRiYWNrZ3JvdW5kLWNvbG9yLWhvdmVyLFxuXHQkYmFja2dyb3VuZC1jb2xvci1hY3RpdmUsXG5cdCRiYWNrZ3JvdW5kLWNvbG9yLWZvY3VzXG5cblx0KSB7XG5cdGJvcmRlcjpub25lIWltcG9ydGFudDtcblx0YmFja2dyb3VuZDogJGJhY2tncm91bmQtY29sb3I7XG5cdGNvbG9yOiRjb2xvciFpbXBvcnRhbnQ7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZSFpbXBvcnRhbnQ7XG5cblx0Jjpob3Zlcntcblx0XHRjb2xvcjokY29sb3ItaG92ZXI7XG5cdFx0YmFja2dyb3VuZDogJGJhY2tncm91bmQtY29sb3ItaG92ZXI7XG5cdH1cblxuXHQmOmFjdGl2ZXtcblx0XHRjb2xvcjokY29sb3ItYWN0aXZlO1xuXHRcdGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWNvbG9yLWFjdGl2ZTtcblx0fVxuXG5cdCY6Zm9jdXN7XG5cdFx0Y29sb3I6JGNvbG9yLWZvY3VzO1xuXHRcdGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWNvbG9yLWZvY3VzO1xuXHR9XG59XG5cblxuLmJ1dHRvbi5wcmltYXJ5e1xuXG5cdEBpbmNsdWRlIGJ1dHRvbihcblx0XHQkY29sb3ItYnRuLXByaW1hcnksXG5cdFx0JGNvbG9yLWJ0bi1wcmltYXJ5LWhvdmVyLFxuXHRcdCRjb2xvci1idG4tcHJpbWFyeS1hY3RpdmUsXG5cdFx0JGNvbG9yLWJ0bi1wcmltYXJ5LWZvY3VzLFxuXHRcdCRiYWNrZ3JvdW5kLWNvbG9yLWJ0bi1wcmltYXJ5LFxuXHRcdCRiYWNrZ3JvdW5kLWNvbG9yLWJ0bi1wcmltYXJ5LWhvdmVyLFxuXHRcdCRiYWNrZ3JvdW5kLWNvbG9yLWJ0bi1wcmltYXJ5LWFjdGl2ZSxcblx0XHQkYmFja2dyb3VuZC1jb2xvci1idG4tcHJpbWFyeS1mb2N1c1xuXHRcdCk7XG5cbn1cblxuLmJ1dHRvbi5zdWNjZXNze1xuXHRcblx0QGluY2x1ZGUgYnV0dG9uKFxuXHRcdCRjb2xvci1idG4tc3VjY2Vzcyxcblx0XHQkY29sb3ItYnRuLXN1Y2Nlc3MtaG92ZXIsXG5cdFx0JGNvbG9yLWJ0bi1zdWNjZXNzLWFjdGl2ZSxcblx0XHQkY29sb3ItYnRuLXN1Y2Nlc3MtZm9jdXMsXG5cdFx0JGJhY2tncm91bmQtY29sb3ItYnRuLXN1Y2Nlc3MsXG5cdFx0JGJhY2tncm91bmQtY29sb3ItYnRuLXN1Y2Nlc3MtaG92ZXIsXG5cdFx0JGJhY2tncm91bmQtY29sb3ItYnRuLXN1Y2Nlc3MtYWN0aXZlLFxuXHRcdCRiYWNrZ3JvdW5kLWNvbG9yLWJ0bi1zdWNjZXNzLWZvY3VzXG5cdFx0KTtcblxufVxuXG5cbi5idXR0b24uZGFuZ2Vye1xuXG5cdGJvcmRlcjpub25lIWltcG9ydGFudDtcblx0YmFja2dyb3VuZDogJGJhY2tncm91bmQtY29sb3ItYnRuLWRhbmdlcjtcblx0Y29sb3I6JGNvbG9yLWJ0bi1kYW5nZXIhaW1wb3J0YW50O1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmUhaW1wb3J0YW50O1xuXG5cdCY6aG92ZXJ7XG5cdFx0Y29sb3I6JGNvbG9yLWJ0bi1kYW5nZXItaG92ZXI7XG5cdFx0YmFja2dyb3VuZDogJGJhY2tncm91bmQtY29sb3ItYnRuLWRhbmdlci1ob3Zlcjtcblx0fVxuXG5cdCY6YWN0aXZle1xuXHRcdGNvbG9yOiRjb2xvci1idG4tZGFuZ2VyLWFjdGl2ZTtcblx0XHRiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1jb2xvci1idG4tZGFuZ2VyLWFjdGl2ZTtcblx0fVxuXG5cdCY6Zm9jdXN7XG5cdFx0Y29sb3I6JGNvbG9yLWJ0bi1kYW5nZXItZm9jdXM7XG5cdFx0YmFja2dyb3VuZDogJGJhY2tncm91bmQtY29sb3ItYnRuLWRhbmdlci1mb2N1cztcblx0fVxuXG59IiwiLm1vZF9pdGVtX2NvbnRhaW5lciB7XG4gICAgbWFyZ2luOiAwIDAgMzBweCAhaW1wb3J0YW50O1xuXG4gICAgLm1vZF9fdGl0bGUge1xuXG4gICAgICAgIGgyLFxuICAgICAgICBoMyB7XG4gICAgICAgICAgICBtYXJnaW46IDIwcHggMDtcbiAgICAgICAgfVxuICAgIH1cbn0iLCIud2lkZ2V0IHtcbiAgICBwYWRkaW5nOiAzMHB4IDA7XG5cbiAgICAud2lkZ2V0X3RpdGxlIHtcbiAgICAgICAgQGV4dGVuZCBoMjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIHA6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbjogMzBweCAwIDAgMDtcbiAgICB9XG5cbiAgICAuYnV0dG9uIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn0iLCIvKiBSb29tIHdpZGdldCAqL1xuXG4vLyAjcm9vbXNfd2lkZ2V0IHtcbi8vICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuLy8gfVxuXG4vLyAjdGl0bGVfcm9vbV93aWRnZXQge1xuLy8gICAgIGNvbG9yOiAkY29sb3ItdGl0bGVzO1xuLy8gfVxuXG4vLyAjbGlua19yb29tcyB7XG4vLyAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuLy8gICAgIG1hcmdpbi1ib3R0b206IDA7XG4vLyB9XG5cbi8vICNsaW5rX3Jvb21zIGEge31cblxuLy8gLnJvb21fc2xpZGUge1xuLy8gICAgIG1hcmdpbjogNXB4O1xuLy8gICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbi8vIH1cblxuLy8gLnJvb21fd2lkZ2V0X2ltYWdlIHtcbi8vICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4vLyAgICAgZGlzcGxheTogYmxvY2s7XG4vLyB9XG5cbi8vIC5yb29tX3NsaWRlIGg0LFxuLy8gLnJvb21fc2xpZGUgcCB7XG4vLyAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuLy8gICAgIGNvbG9yOiAkY29sb3ItdGl0bGVzO1xuLy8gICAgIG1hcmdpbjogNXB4IDA7XG4vLyAgICAgZm9udC1zaXplOiAxNHB4O1xuLy8gfVxuXG4vKiBSb29tIGNhdGVnb3JpZXMgKi9cbi5tb2RfX3Jvb21fY2F0ZWdvcmllcyB7XG4gICAgI3ByaW1hcnlfY29udGVudCB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuXG4gICAgICAgIH1cblxuICAgICAgICAubW9kX19pdGVtIHtcblxuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cblxuICAgICAgICAucm9vbV9jYXRlZ29yaWVzX190aXRsZV9jb250YWluZXIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcblxuICAgICAgICAgICAgaDEge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnN2ZyB7XG5cbiAgICAjc2VydmljZV9pY29ucyBsaSBzcGFuLFxuICAgIC5yb29tX2NhdGVnb3J5X3NlcnZpY2VzIGxpIHNwYW4sXG4gICAgLnJvb21fY2F0ZWdvcmllc19fY29tcGFyZV9zZXJ2aWNlIHtcblxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvci1zZXJ2aWNlLWljb25zICFpbXBvcnRhbnQ7XG5cbiAgICB9XG5cbn1cblxuLm1vZF9fcm9vbV9jYXRlZ29yaWVzLm1vZF9fdmlldyB7XG4gICAgaDEge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIH1cbn1cblxuI3ByaW1hcnlfY29udGVudCB7XG4gICAgI3Jvb21fY2F0ZWdvcmllcyB7XG4gICAgICAgIGxpLnJvb21fY2F0ZWdvcnlfcGFuZWwge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDEwcHggI2NjYztcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgjZmZmLCAwLjcpO1xuXG4gICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAyMHB4IDA7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59IiwiLyogUHJvbW90aW9ucyB3aWRnZXQgKi9cbi8vICNwcm9tb3Rpb25faW1hZ2Uge31cblxuLyogUHJvbW90aW9ucyB3aWRnZXQqL1xuLy8gI3Byb21vdGlvbnNfd2lkZ2V0IHtcbi8vICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4vLyAgICAgI3Byb21vdGlvbl90ZXh0IHtcbi8vICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgjMDAwLCAwLjcpO1xuLy8gICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4vLyAgICAgICAgIHRvcDogNjAlO1xuLy8gICAgICAgICByaWdodDogMDtcbi8vICAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG4vLyAgICAgICAgIGNvbG9yOiAjZmZmO1xuLy8gICAgIH1cblxuLy8gICAgICNwcm9tb3Rpb25faW1hZ2Uge1xuLy8gICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuLy8gICAgIH1cblxuLy8gICAgICNjb250YWluZXJfYnRuX3NlZV9wcm9tb3Mge1xuLy8gICAgICAgICBjbGVhcjogYm90aDtcbi8vICAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICBcbi8vICAgICB9XG4vLyB9XG5cbi8qIFByb21vdGlvbnMgKi9cblxuLm1vZF9fcHJvbW90aW9uc3tcbiAgICBoMXtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgICAubW9kX2l0ZW1fY29udGFpbmVyIHtcbiAgICAgICAgaDMge1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGEge1xuICAgICAgICAgICAgJjpob3ZlciB7fVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ucHJvbW90aW9uX19saW5rX3JldHVybl9pbmRleCB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRvdHRlZCAjY2NjO1xuICAgIHBhZGRpbmctdG9wOiAyMHB4O1xuICAgIG1hcmdpbjogMjBweCAwIDIwcHggMDtcbn0iLCIvKiBQYWNrYWdlcyAqL1xuLm1vZF9fcGFja2FnZXMge1xuXG4gICAgaDF7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAubW9kX2l0ZW1fY29udGFpbmVyIHtcbiAgICAgICAgaDMge1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGEge1xuICAgICAgICAgICAgJjpob3ZlciB7fVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ucGFja2FnZV9fbGlua19yZXR1cm5faW5kZXgge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGJvcmRlci10b3A6IDFweCBkb3R0ZWQgI2NjYztcbiAgICBwYWRkaW5nLXRvcDogMjBweDtcbiAgICBtYXJnaW46IDIwcHggMCAyMHB4IDA7XG59IiwiLyogUmVzZXJ2YXRpb25zICovXG5cbi5tb2RfX3Jlc2VydmF0aW9ucyB7XG4gICBoMSB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICB9XG59XG5cbiIsIi5tb2RfX2NvbnRhY3Qge1xuICAgIGgxIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbn1cblxuI2NvbnRhY3RfZm9ybSB7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoI2ZmZiwgMC43KTtcbn0iLCIjY29udGFpbmVyX2xvY2F0aW9ue1xuICAgIGJhY2tncm91bmQ6ICAkYmFja2dyb3VuZC1jb2xvci1oZWFkZXI7XG4gICAgcGFkZGluZzogMzBweCAwIDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICAjbWFwX2NhbnZhc3tcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIGgze1xuICAgICAgICBjb2xvcjogJGNvbG9yLWhlYWRlcjtcbiAgICB9XG4gICAgLmFkZHJlc3MsXG4gICAgLmxhdGl0dWRlLFxuICAgIC5sb25naXR1ZGV7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgICNsb2NhdGlvbl9jb250YWN0X2xpbmtze1xuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItaGVhZGVyO1xuICAgICAgICBtYXJnaW46IDIwcHggMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGl7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgYXtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLWhlYWRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN2Z3tcbiAgICAgICAgICAgICAgICBmaWxsOiAkY29sb3ItaGVhZGVyO1xuICAgICAgICAgICAgICAgIHdpZHRoOjE2cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OjE2cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgfVxufVxuIiwiLm1vZF9fZGlyZWN0aW9ucyB7XG4gICAgI2NvbnRhaW5lcl9jb250YWN0X2RldGFpbHMge1xuICAgICAgICBtYXJnaW46IDAgMCAzMHB4IDAgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCNmZmYsIDAuNyk7XG4gICAgfVxufSIsIiNwcmltYXJ5X2NvbnRlbnQge1xuICAgIC5jb25kaXRpb25zIHtcbiAgICAgICAgLy8gYmFja2dyb3VuZDogcmdiYSgjZmZmLCAwLjMpO1xuICAgICAgICAvLyBjb2xvcjogI2NjYztcblxuICAgICAgICBoMiB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBoMixcbiAgICAgICAgZGl2IHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzRiNGI0YjtcbiAgICAgICAgfVxuICAgIH1cbn0iLCJoMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDZ7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS10aXRsZXM7XG4gICAgZm9udC12YXJpYW50OiAkZm9udC12YXJpYW50LXRpdGxlcztcbiAgICBsaW5lLWhlaWdodDogMTtcbn1cblxuaDEge1xuICAgIGNvbG9yOiAkY29sb3ItdGl0bGVzLWgxO1xuICAgIEBpbmNsdWRlIG1zLXJlc3BvbmQoZm9udC1zaXplLDUpO1xuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC1saWdodDtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjZyZW07XG59XG5cbmgyIHtcbiAgICBjb2xvcjogJGNvbG9yLXRpdGxlcy1oMjtcbiAgICBmb250LXdlaWdodDogJGZvbnQtbGlnaHQ7XG4gICAgLy8gZm9udC1zaXplOiAkYmFzZS1mb250ICogMjtcbiAgICBAaW5jbHVkZSBtcy1yZXNwb25kKGZvbnQtc2l6ZSw0KTtcbn1cblxuaDMge1xuICAgIGNvbG9yOiAkY29sb3ItdGl0bGVzLWgzO1xuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC1saWdodDtcbiAgICBmb250LXNpemU6ICRiYXNlLWZvbnQgKiAxLjg7XG4gICAgQGluY2x1ZGUgbXMtcmVzcG9uZChmb250LXNpemUsMyk7XG59XG5cbmg0IHtcbiAgICBjb2xvcjogJGNvbG9yLXRpdGxlcy1oNDtcbiAgICBmb250LXdlaWdodDogJGZvbnQtbGlnaHQ7XG4gICAgQGluY2x1ZGUgbXMtcmVzcG9uZChmb250LXNpemUsMik7XG59XG5cbmg1IHtcbiAgICBjb2xvcjogJGNvbG9yLXRpdGxlcy1oNTtcbiAgICBmb250LXdlaWdodDogJGZvbnQtbGlnaHQ7XG4gICAgQGluY2x1ZGUgbXMtcmVzcG9uZChmb250LXNpemUsMSk7XG59XG5cbmg2IHtcbiAgICBjb2xvcjogJGNvbG9yLXRpdGxlcy1oNjtcbiAgICBmb250LXdlaWdodDogJGZvbnQtbGlnaHQ7XG4gICAgQGluY2x1ZGUgbXMtcmVzcG9uZChmb250LXNpemUsMCk7XG59XG5cbnAge1xuICAgIGNvbG9yOiAkY29sb3ItYm9keS10ZXh0O1xuICAgIEBpbmNsdWRlIG1zLXJlc3BvbmQoZm9udC1zaXplLDApO1xufVxuXG4jcHJpbWFyeV9jb250ZW50LFxuI2xvY2F0aW9uX2NvbnRhY3RfbGlua3N7XG4gICAgYTpub3QoLmJ1dHRvbil7XG4gICAgICAgICY6bGluayB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWxpbms7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItbGluay1ob3ZlcjtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWxpbmstYWN0aXZlO1xuICAgICAgICB9XG4gICAgICAgICY6dmlzaXRlZCB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWxpbmstdmlzaXRlZDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuI2xvY2F0aW9uX2NvbnRhY3RfbGlua3N7XG4gICAgYSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4jcHJpbWFyeV9jb250ZW50IHtcbiAgICB1bCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ib2R5LXRleHQ7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXMtcmVzcG9uZChmb250LXNpemUsIDApO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy8gR2VuZXJhdGUgY2FsYygpIGZ1bmN0aW9uXG4vLyBiYXNlZCBvbiBNaWtlIFJpZXRobXVsbGVyJ3MgUHJlY2lzZSBjb250cm9sIG92ZXIgcmVzcG9uc2l2ZSB0eXBvZ3JhcGh5XG4vLyBodHRwOi8vbWFkZWJ5bWlrZS5jb20uYXUvd3JpdGluZy9wcmVjaXNlLWNvbnRyb2wtcmVzcG9uc2l2ZS10eXBvZ3JhcGh5L1xuQGZ1bmN0aW9uIG1zLWZsdWlkKCR2YWwxOiAxZW0sICR2YWwyOiAxZW0sICRicmVhazE6IDAsICRicmVhazI6IDApIHtcbiAgJGRpZmY6IG1zLXVuaXRsZXNzKCR2YWwyKSAtIG1zLXVuaXRsZXNzKCR2YWwxKTtcblxuICAvLyB2MSArICh2MiAtIHYxKSAqICggKDEwMHZ3IC0gYjEpIC8gYjIgLSBiMSApXG4gIEByZXR1cm4gY2FsYyggI3skdmFsMX0gKyAje21zLXVuaXRsZXNzKCR2YWwyKSAtIG1zLXVuaXRsZXNzKCR2YWwxKX0gKiAoICggMTAwdncgLSAjeyRicmVhazF9KSAvICN7bXMtdW5pdGxlc3MoJGJyZWFrMikgLSBtcy11bml0bGVzcygkYnJlYWsxKX0gKSApO1xufVxuXG4vLyBNYWluIHJlc3BvbnNpdmUgbWl4aW5cbkBtaXhpbiBtcy1yZXNwb25kKCRwcm9wLCAkdmFsLCAkbWFwOiAkbW9kdWxhcnNjYWxlLCAkbXMtaW1wb3J0YW50OiBmYWxzZSkge1xuICAkYmFzZTogJG1zLWJhc2U7XG4gICRyYXRpbzogJG1zLXJhdGlvO1xuXG4gICRmaXJzdC13cml0ZTogdHJ1ZTtcbiAgJGxhc3QtYnJlYWs6IG51bGw7XG5cbiAgJGltcG9ydGFudDogJyc7XG5cbiAgQGlmICRtcy1pbXBvcnRhbnQgPT0gdHJ1ZSB7XG4gICAgJGltcG9ydGFudDogJyAhaW1wb3J0YW50JztcbiAgfVxuXG4gIC8vIGxvb3AgdGhyb3VnaCBhbGwgc2V0dGluZ3Mgd2l0aCBhIGJyZWFrcG9pbnQgdHlwZSB2YWx1ZVxuICBAZWFjaCAkdiwgJHMgaW4gJG1hcCB7XG4gICAgQGlmIHR5cGUtb2YoJHYpID09IG51bWJlciB7XG4gICAgICBAaWYgdW5pdCgkdikgIT0gJycge1xuXG4gICAgICAgIC8vIFdyaXRlIG91dCB0aGUgZmlyc3QgdmFsdWUgd2l0aG91dCBhIG1lZGlhIHF1ZXJ5LlxuICAgICAgICBAaWYgJGZpcnN0LXdyaXRlIHtcbiAgICAgICAgICAjeyRwcm9wfTogdW5xdW90ZShcIiN7bXMtZnVuY3Rpb24oJHZhbCwgJHRocmVhZDogJHYsICRzZXR0aW5nczogJG1hcCl9I3skaW1wb3J0YW50fVwiKTtcblxuICAgICAgICAgIC8vIE5vdCB0aGUgZmlyc3Qgd3JpdGUgYW55bW9yZSwgcmVzZXQgdG8gZmFsc2UgdG8gbW92ZSBvbi5cbiAgICAgICAgICAkZmlyc3Qtd3JpdGU6IGZhbHNlO1xuICAgICAgICAgICRsYXN0LWJyZWFrOiAkdjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdyaXRlIGludGVybWVkaWF0ZSBicmVha3BvaW50cy5cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbGFzdC1icmVhaykgYW5kIChtYXgtd2lkdGg6ICR2KSB7XG4gICAgICAgICAgICAkdmFsMTogbXMtZnVuY3Rpb24oJHZhbCwgJHRocmVhZDogJGxhc3QtYnJlYWssICRzZXR0aW5nczogJG1hcCk7XG4gICAgICAgICAgICAkdmFsMjogbXMtZnVuY3Rpb24oJHZhbCwgJHRocmVhZDogJHYsICRzZXR0aW5nczogJG1hcCk7XG4gICAgICAgICAgICAjeyRwcm9wfTogdW5xdW90ZShcIiN7bXMtZmx1aWQoJHZhbDEsJHZhbDIsJGxhc3QtYnJlYWssJHYpfSN7JGltcG9ydGFudH1cIik7XG4gICAgICAgICAgfVxuICAgICAgICAgICRsYXN0LWJyZWFrOiAkdjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFdyaXRlIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4gIEBpZiAkbGFzdC1icmVhayB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRsYXN0LWJyZWFrKSB7XG4gICAgICAjeyRwcm9wfTogdW5xdW90ZShcIiN7bXMtZnVuY3Rpb24oJHZhbCwgJHRocmVhZDogJGxhc3QtYnJlYWssICRzZXR0aW5nczogJG1hcCl9I3skaW1wb3J0YW50fVwiKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIEZ1bmN0aW9uIGRlZmluaW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gMiBjb2xvcnNcbiAqXG4gKiBAcGFyYW0ge0NvbG9yfSAkYSAtIGZpcnN0IGNvbG9yXG4gKiBAcGFyYW0ge0NvbG9yfSAkYiAtIHNlY29uZCBjb2xvclxuICpcbiAqIEByZXR1cm4ge01hcH0gIFRoZSBjb2xvciBvcGVyYXRpb25zIHRvIGRvIGluIG9yZGVyIHRvIGZpbmQgJGIgZnJvbSAkYSB3aGVyZSBrZXlzIGFyZSB0aGUgY29sb3IgZnVuY3Rpb25zIHRvIGFwcGx5IGFuZCB2YWx1ZXMgYXJlIHRoZSB2YWx1ZXMgdG8gcGFzcyB0byB0aGVzZSBmdW5jdGlvbnNcbiAqL1xuQGZ1bmN0aW9uIGNvbG9yLWRpZmYoJGEsICRiKSB7XG4gICAgJHNhdDogc2F0dXJhdGlvbigkYSkgLSBzYXR1cmF0aW9uKCRiKTtcbiAgICAkbGlnOiBsaWdodG5lc3MoJGEpIC0gbGlnaHRuZXNzKCRiKTtcbiAgICAkZm4tc2F0OiBpZigkc2F0ID4gMCwgXCJkZXNhdHVyYXRlXCIsIFwic2F0dXJhdGVcIik7XG4gICAgJGZuLWxpZzogaWYoJGxpZyA+IDAsIFwiZGFya2VuXCIsIFwibGlnaHRlblwiKTtcblxuICAgIEByZXR1cm4gKGFkanVzdC1odWU6IC0oaHVlKCRhKSAtIGh1ZSgkYikpLCAjeyRmbi1zYXR9OiBhYnMoJHNhdCksICN7JGZuLWxpZ306IGFicygkbGlnKSk7XG59XG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgZGlmZiBmb3IgZWFjaCBjb2xvciBmcm9tIHRoZSBpbml0aWFsIHBhbGV0dGVcbiAqXG4gKiBAcGFyYW0ge01hcH0gJHBhbGV0dGUgLSBwYWxldHRlXG4gKlxuICogQHJlcXVpcmVzIHtmdW5jdGlvbn0gY29sb3ItZGlmZlxuICpcbiAqIEByZXR1cm4ge0xpc3R9IGxpc3Qgb2YgZGlmZnNcbiAqL1xuQGZ1bmN0aW9uIHBhbGV0dGUtZGlmZigkcGFsZXR0ZSkge1xuICAgICRiYXNlOiBtYXAtZ2V0KCRwYWxldHRlLCBiYXNlKTtcbiAgICAkY29sb3JzOiBtYXAtZ2V0KCRwYWxldHRlLCBjb2xvcnMpO1xuXG4gICAgJGRpZmZzOiAoKTtcblxuICAgIEBlYWNoICRjb2xvciBpbiAkY29sb3JzIHtcbiAgICAgICAgJGRpZmZzOiBhcHBlbmQoJGRpZmZzLCBjb2xvci1kaWZmKCRiYXNlLCAkY29sb3IpKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRkaWZmcztcbn1cblxuLyoqXG4gKiBJbml0aWFsIHBhbGV0dGUgdXNlZCB0byBkZWZpbmUgdGhlIGRpZmYgYmV0d2VlbiB0aGUgYmFzZSBjb2xvciBhbmQgZWFjaCBjb2xvciBmcm9tIHRoZSBwYWxldHRlLiBUaGVyZSBjYW4gYmUgYXMgbWFueSBjb2xvcnMgYXMgb25lIHdhbnRzLlxuICpcbiAqIEBMaW5rIGh0dHBzOi8vdG9uLnR3aXR0ZXIuY29tL2kvdG9uL2RhdGEvZG0vNDg3OTI2MzI2MzE0NDE4MTc2LzQ4NzkyNjMyNjMyMjgyMzE2OC84TTJrOHhPcC5wbmcgSW5pdGlhbCBjb2xvciBwYWxldHRlXG4gKlxuICogQHR5cGUgTWFwXG4gKi9cbiRiYXNlLXBhbGV0dGU6IChiYXNlOiAjRkY2MzUxLCBjb2xvcnM6ICNDRkRGRTggI0JGQjlDMyAjQ0Y5MTkyICNGRjYzNTEgI0JGNEEzQyAjN0YzMTI4ICM3MzJDMjQpICFkZWZhdWx0O1xuXG4vKipcbiAqIFBhbGV0dGUgZGlmZnNcbiAqIFNhbWUgbGVuZ3RoIGFzIGNvbG9ycyBrZXkgZnJvbSBtYXAtcGFsZXR0ZVxuICpcbiAqIEB0eXBlIExpc3RcbiAqL1xuJHBhbGV0dGUtZGlmZnM6IHBhbGV0dGUtZGlmZigkYmFzZS1wYWxldHRlKTtcblxuLyoqXG4gKiBBcHBseSBkaWZmZXJlbmNlcyByZXR1cm5lZCBmcm9tIGBjb2xvci1kaWZmYCBmdW5jdGlvbiB0byBhIGNvbG9yIGluIG9yZGVyIHRvIHJldHJpZXZlIHRoZSBzZWNvbmQgY29sb3JcbiAqXG4gKiBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBjb2xvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7TWFwfSAkZGlmZiAtIGRpZmYgbWFwXG4gKlxuICogQHJldHVybiB7Q29sb3J9IHRyYW5zZm9ybWVkIGNvbG9yXG4gKi9cbkBmdW5jdGlvbiBhcHBseS1kaWZmKCRjb2xvciwgJGRpZmYpIHtcbiAgICAvLyBXZSBjYWxsIHRoZSAka2V5IChmdW5jdGlvbiksXG4gICAgLy8gcGFzc2luZyB0aGUgJGNvbG9yIGFuZCB0aGUgJHZhbHVlIGFzIHBhcmFtZXRlcnNcbiAgICAvLyBlLmcuIGBjYWxsKGFkanVzdC1odWUsICNCQURBNTUsIDQyKWBcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGRpZmYge1xuICAgICAgICAkY29sb3I6IGNhbGwoJGtleSwgJGNvbG9yLCAkdmFsdWUpO1xuICAgIH1cblxuICAgIEByZXR1cm4gJGNvbG9yO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHBhbGV0dGUgZnJvbSBhIGJhc2UgY29sb3JcbiAqXG4gKiBAcGFyYW0ge0NvbG9yfSAkYmFzZS1jb2xvciAtIGJhc2UgY29sb3IgZm9yIHRoZSBwYWxldHRlXG4gKlxuICogQHJlcXVpcmVzIHtmdW5jdGlvbn0gcGFsZXR0ZS1kaWZmXG4gKiBAcmVxdWlyZXMge2Z1bmN0aW9ufSBhcHBseS1kaWZmXG4gKiBAcmVxdWlyZXMge3ZhcmlhYmxlfSAkYmFzZS1wYWxldHRlXG4gKlxuICogQHJldHVybiB7TGlzdH0gbGlzdCBvZiBjb2xvcnNcbiAqL1xuQGZ1bmN0aW9uIGNyZWF0ZS1wYWxldHRlKCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yczogKCk7XG5cbiAgICBAZWFjaCAkZGlmZiBpbiAkcGFsZXR0ZS1kaWZmcyB7XG4gICAgICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBhcHBseS1kaWZmKCRiYXNlLWNvbG9yLCAkZGlmZikpO1xuICAgIH1cblxuICAgIEByZXR1cm4gJGNvbG9ycztcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBsaXN0IG9mIGNvbG9ycyBmcm9tIHRoZSBiYXNlIGNvbG9yXG4gKiB0aGVuIHR1cm4gaW4gaW50byBhIG1hcCB3aXRoIGV4cGxpY2l0IGtleXNcbiAqXG4gKiBAcGFyYW0ge0NvbG9yfSAkYmFzZS1jb2xvciAtIGJhc2UgY29sb3IgZm9yIHRoZSBwYWxldHRlXG4gKlxuICogQHJlcXVpcmVzIHtmdW5jdGlvbn0gY3JlYXRlLXBhbGV0dGVcbiAqXG4gKiBAcmV0dXJuIHtNYXB9XG4gKi9cbkBmdW5jdGlvbiBwYWxldHRlKCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yczogY3JlYXRlLXBhbGV0dGUoJGJhc2UtY29sb3IpO1xuICAgICRrZXlzOiBcImxpZ2h0ZXN0XCIgXCJsaWdodGVyXCIgXCJsaWdodFwiIFwiYmFzZVwiIFwiZGFya1wiIFwiZGFya2VyXCIgXCJkYXJrZXN0XCI7XG4gICAgJHBhbGV0dGU6ICgpO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBtaW4obGVuZ3RoKCRjb2xvcnMpLCBsZW5ndGgoJGtleXMpKSB7XG4gICAgICAgICRwYWxldHRlOiBtYXAtbWVyZ2UoJHBhbGV0dGUsIChudGgoJGtleXMsICRpKTogbnRoKCRjb2xvcnMsICRpKSkpO1xuICAgIH1cblxuICAgIEByZXR1cm4gJHBhbGV0dGU7XG59XG5cbkBmdW5jdGlvbiBsaWdodGVzdCgkcGFsZXR0ZSkge1xuICBAaWYgbm90IG1hcC1oYXMta2V5KCRwYWxldHRlLCAnbGlnaHRlc3QnKSB7XG4gICAgQHdhcm4gXCJgI3tpbnNwZWN0KCRwYWxldHRlKX1gIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGEga2V5IG5hbWVkIGBsaWdodGVzdGAuXCI7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1nZXQoJHBhbGV0dGUsICdsaWdodGVzdCcpO1xufVxuXG5AZnVuY3Rpb24gbGlnaHRlcigkcGFsZXR0ZSkge1xuICBAaWYgbm90IG1hcC1oYXMta2V5KCRwYWxldHRlLCAnbGlnaHRlcicpIHtcbiAgICBAd2FybiBcImAje2luc3BlY3QoJHBhbGV0dGUpfWAgZG9lc24ndCBzZWVtIHRvIGhhdmUgYSBrZXkgbmFtZWQgYGxpZ2h0ZXJgLlwiO1xuICB9XG5cbiAgQHJldHVybiBtYXAtZ2V0KCRwYWxldHRlLCAnbGlnaHRlcicpO1xufVxuXG5AZnVuY3Rpb24gbGlnaHQoJHBhbGV0dGUpIHtcbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcGFsZXR0ZSwgJ2xpZ2h0Jykge1xuICAgIEB3YXJuIFwiYCN7aW5zcGVjdCgkcGFsZXR0ZSl9YCBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIGtleSBuYW1lZCBgbGlnaHRgLlwiO1xuICB9XG5cbiAgQHJldHVybiBtYXAtZ2V0KCRwYWxldHRlLCAnbGlnaHQnKTtcbn1cblxuJGNvbG9yczogKFxuXHQncHJpbWFyeSc6ICRjb2xvci1wcmltYXJ5LFxuXHQnYWNjZW50JzogJGNvbG9yLWFjY2VudCxcblx0J2NvbXBsZW1lbnQnOiBkZXNhdHVyYXRlKGNvbXBsZW1lbnQoJGNvbG9yLXByaW1hcnkpLDMwJSksXG5cdCd0cmlhZDEnOiBkZXNhdHVyYXRlKGFkanVzdC1odWUoJGNvbG9yLXByaW1hcnksIDEyMGRlZyAqIDEpLDMwJSksXG5cdCd0cmlhZDInOiBkZXNhdHVyYXRlKGFkanVzdC1odWUoJGNvbG9yLXByaW1hcnksIDEyMGRlZyAqIDIpLDMwJSksXG4gICd2YXJpYXRpb24nIDpnZXRQYWxldHRlVmFyaWF0aW9uKDEpXG4pO1xuXG5AZnVuY3Rpb24gZ2V0UGFsZXR0ZVZhcmlhdGlvbigkaSkge1xuICAkcGFsZXR0ZS1zcGFuOiAxODBkZWc7XG4gICRzYXR1cmF0aW9uLWluY3JlbWVudDogMTAlO1xuICAkbnVtYmVyLW9mLWNvbG91cnM6IDU7XG4gIEByZXR1cm4gZGVzYXR1cmF0ZSggYWRqdXN0LWh1ZSgkY29sb3ItcHJpbWFyeSwgKCRwYWxldHRlLXNwYW4gLyAkbnVtYmVyLW9mLWNvbG9ycykgKiAkaSksICRzYXR1cmF0aW9uLWluY3JlbWVudCAqICRpICk7XG59XG4iXX0= */
