@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700");.owl-carousel{display:none;width:100%;-webkit-tap-highlight-color:transparent;position:relative;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0px, 0px, 0px)}.owl-carousel .owl-wrapper,.owl-carousel .owl-item{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0)}.owl-carousel .owl-item{position:relative;min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-nav.disabled,.owl-carousel .owl-dots.disabled{display:none}.owl-carousel .owl-nav .owl-prev,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-dot{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-nav button.owl-prev,.owl-carousel .owl-nav button.owl-next,.owl-carousel button.owl-dot{background:none;color:inherit;border:none;padding:0 !important;font:inherit}.owl-carousel.owl-loaded{display:block}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:pan-y;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:-webkit-grab;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.no-js .owl-carousel{display:block}.owl-carousel .animated{-webkit-animation-duration:1000ms;animation-duration:1000ms;-webkit-animation-fill-mode:both;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{-webkit-transition:height 500ms ease-in-out;transition:height 500ms ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;-webkit-transition:opacity 400ms ease;transition:opacity 400ms ease}.owl-carousel .owl-item .owl-lazy[src^=""],.owl-carousel .owl-item .owl-lazy:not([src]){max-height:0}.owl-carousel .owl-item img.owl-lazy{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url("owl.video.play.png") no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;-webkit-transition:-webkit-transform 100ms ease;transition:-webkit-transform 100ms ease;transition:transform 100ms ease;transition:transform 100ms ease, -webkit-transform 100ms ease}.owl-carousel .owl-video-play-icon:hover{-webkit-transform:scale(1.3, 1.3);-ms-transform:scale(1.3, 1.3);transform:scale(1.3, 1.3)}.owl-carousel .owl-video-playing .owl-video-tn,.owl-carousel .owl-video-playing .owl-video-play-icon{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;-webkit-transition:opacity 400ms ease;transition:opacity 400ms ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%}.owl-carousel .animated{-webkit-animation-duration:1000ms;animation-duration:1000ms;-webkit-animation-fill-mode:both;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:0.67em 0}figcaption,figure{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}main{display:block}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}input{overflow:visible}[type="checkbox"],[type="radio"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}fieldset{padding:0.35em 0.75em 0.625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;display:table;max-width:100%;padding:0;color:inherit;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}details{display:block}summary{display:list-item}menu{display:block}canvas{display:inline-block}template{display:none}[hidden]{display:none}.container{width:1100px;margin:0 auto}@media (max-width: 1100px){.container{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 1em;width:100%}}body{font-family:'Open Sans', sans-serif;font-size:16px;padding:100px 0 0 0}.header{background-color:#ffffff;-webkit-box-sizing:border-box;box-sizing:border-box;height:100px;padding:0.2em 0;position:fixed;top:0;left:0;right:0;overflow:hidden;z-index:20}.header .logotype{float:left;margin:1.6em 0 0 0}.header .logotype img{width:220px}@media (max-width: 420px){.header .logotype img{width:180px}}.header .menu-mobile{color:#38b549;cursor:pointer;display:none;font-size:2em;position:absolute;right:1em;top:1em}@media (max-width: 768px){.header .menu-mobile{display:block;display:none}}.header .nav{float:right;margin:1.8em 0 0 0;padding:0}@media (max-width: 768px){.header .nav{background-color:#ffffff;float:inherit;display:none;position:fixed;top:0;left:0;right:0;bottom:0;text-align:center;z-index:100}}.header .nav--open{display:block}.header .nav .close-navigation{color:#38b549;cursor:pointer;display:none;font-size:5em;line-height:1;position:absolute;right:10px;top:-30px}@media (max-width: 768px){.header .nav .close-navigation{display:block}}.header .nav ul{display:inline-block;margin:0;padding:0}@media (max-width: 768px){.header .nav ul{display:block;text-align:center}}.header .nav ul li{border-bottom:4px solid #ffffff;display:inline-block;margin:0 1em 0 0;padding:0 0 0 0;-webkit-transition:all 0.25s ease-in-out;transition:all 0.25s ease-in-out}@media (max-width: 768px){.header .nav ul li{border-bottom:1px solid #38b549;display:block;margin:0 0 0 0;text-align:center}}.header .nav ul li a{color:#000000;display:block;font-weight:300;font-size:0.85em;padding:0 0 1em 0;text-decoration:none}@media (max-width: 768px){.header .nav ul li a{padding:1em 0;font-size:1.15em}}.header .nav ul li:hover{border-bottom:4px solid #38b549}@media (max-width: 768px){.header .nav ul li:hover{border:0}}.header .nav ul li.active{border-bottom:4px solid #38b549}@media (max-width: 768px){.header .nav ul li.active{border:0}}.header .nav .cta{background-color:#ffffff;border:2px solid #38b549;border-radius:4px;color:#38b549;display:inline-block;font-size:0.85em;font-weight:600;padding:0.8em 1em;text-decoration:none;text-transform:uppercase;-webkit-transition:all 0.25s ease-in-out;transition:all 0.25s ease-in-out}.header .nav .cta:hover{background-color:#38b549;color:#ffffff}@media (max-width: 768px){.header .nav .cta{margin:1em 0 0 0}}.header .nav .lenguage{display:inline-block;font-weight:300;margin:0 0 0 1.2em}@media (max-width: 768px){.header .nav .lenguage{display:block;margin:0}}.header .nav .lenguage span{display:inline-block;margin:0 0.5em 0 0}@media (max-width: 768px){.header .nav .lenguage span{display:block;border-top:1px solid #38b549;border-bottom:1px solid #38b549;margin:1em 0 0 0;padding:1em 0}}.header .nav .lenguage a{display:inline-block;vertical-align:middle;text-decoration:none}@media (max-width: 768px){.header .nav .lenguage a{display:block;border-bottom:1px solid #38b549;padding:1em 0}}.header .nav .lenguage a img{display:inline-block;width:20px;vertical-align:middle;position:relative;top:-1px}.footer{background-color:#38b549;overflow:hidden;padding:2em 0}.footer-logotype{float:left;margin:0.8em 0 0 0}@media (max-width: 420px){.footer-logotype{float:inherit;width:100%}}.footer-logotype img{width:160px}.footer .right{float:right}@media (max-width: 420px){.footer .right{float:inherit;width:100%}}.footer .right p{color:#ffffff;font-size:0.85em;font-weight:300;margin:1.6em 0 0 0}.marquee{background-image:url("../images/head.jpg");background-size:cover;padding:9em 0}.marquee .copy{text-align:center}.marquee .copy p{color:#ffffff;font-size:4.2em;font-weight:700;line-height:1}@media (max-width: 420px){.marquee .copy p{font-size:3em}}.products .title{background-color:#ffffff;padding:2em 0}.products .title .heading-3{color:#38b549;font-size:2.5em;font-weight:400;margin:1.2em 0 0.2em 0;text-align:center}.products .content{background-color:#38b549;padding:4em 0}.products .content .copy{color:#ffffff;font-size:1em;font-weight:400;line-height:2;margin:0 auto;text-align:center;width:55%}@media (max-width: 420px){.products .content .copy{width:80%}}.products .content ul{list-style:none;margin:3em 0 0 0;padding:0;overflow:hidden}.products .content ul li{-webkit-box-sizing:border-box;box-sizing:border-box;float:left;padding:0 4em;width:33.33333%}@media (max-width: 768px){.products .content ul li{margin:0 0 3em 0;width:100%}}.products .content ul figure{margin:0;padding:0;text-align:center}.products .content ul figure img{display:inline-block;width:70px}.products .content ul .heading-5{color:#ffffff;font-size:1.05em;font-weight:600;margin:0.3em 0 0 0;text-align:center}.products .content ul p{color:#ffffff;font-size:1em;font-weight:300;line-height:1.5;margin:0.8em 0 0 0;text-align:center}@media (max-width: 768px){.products .content ul p{margin:0 auto;width:200px}}.carousel{padding:0 0 5em 0}.carousel .heading-3{color:#38b549;font-size:2.5em;font-weight:400;margin:1.2em 0 0.2em 0;padding:0.8em 0 1.8em 0;text-align:center}.carousel .wrapper{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 auto;position:relative;width:90%}@media (max-width: 420px){.carousel .wrapper{width:88%}}.carousel-slide{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.carousel-prev{position:absolute;top:50%;left:-50px;margin-top:-25px}@media (max-width: 420px){.carousel-prev{left:-33px}}.carousel-next{position:absolute;top:50%;right:-50px;margin-top:-25px}@media (max-width: 420px){.carousel-next{right:-33px}}.carousel-wrapper{background-color:#38b549;overflow:hidden}.carousel-wrapper .slide{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%}@media (max-width: 420px){.carousel-wrapper .slide{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.carousel-wrapper .slide .left{background-size:cover;background-position:center;display:-webkit-box;display:-ms-flexbox;display:flex;width:66.66667%}@media (max-width: 420px){.carousel-wrapper .slide .left{display:block;height:200px;width:100%}}.carousel-wrapper .slide .left--oregano{background-image:url("../images/oregano.jpg")}.carousel-wrapper .slide .left--hongos{background-image:url("../images/hongos.jpg")}.carousel-wrapper .slide .left--curcuma{background-image:url("../images/curcuma.jpg")}.carousel-wrapper .slide .left--achiote{background-image:url("../images/achiote.jpg")}.carousel-wrapper .slide .left--jengibre{background-image:url("../images/jengibre.jpg")}.carousel-wrapper .slide .right{background-color:#38b549;-webkit-box-sizing:border-box;box-sizing:border-box;color:#ffffff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:7em 3em 4em 3em;width:33.33333%}@media (max-width: 420px){.carousel-wrapper .slide .right{display:block;-webkit-box-orient:initial;-webkit-box-direction:initial;-ms-flex-direction:initial;flex-direction:initial;width:100%;padding:1em}}.carousel-wrapper .slide .right .heading-4{font-size:1em;font-weight:600}.carousel-wrapper .slide .right p{font-size:0.9em;font-weight:300;line-height:1.5}.carousel-wrapper .slide .right ul{font-size:0.9em;font-weight:300;margin:0 0 0 1em;padding:0 0 0 0}.carousel-wrapper .slide .right ul li{margin:0 0 0.6em 0}.prev-slide{background-color:transparent;border:0;cursor:pointer;font-size:0;height:50px;width:30px;position:relative;outline:0}.prev-slide:after{background-color:#38b549;content:"";display:block;height:1px;width:30px;position:absolute;-webkit-transform:rotate(40deg);-ms-transform:rotate(40deg);transform:rotate(40deg);bottom:15px;left:0;z-index:10}.prev-slide:before{background-color:#38b549;content:"";display:block;height:1px;width:30px;position:absolute;-webkit-transform:rotate(-40deg);-ms-transform:rotate(-40deg);transform:rotate(-40deg);top:15px;left:0;z-index:10}.next-slide{background-color:transparent;border:0;cursor:pointer;font-size:0;height:50px;width:30px;position:relative;outline:0}.next-slide:after{background-color:#38b549;content:"";display:block;height:1px;width:30px;position:absolute;-webkit-transform:rotate(40deg);-ms-transform:rotate(40deg);transform:rotate(40deg);top:15px;left:0;z-index:10}.next-slide:before{background-color:#38b549;content:"";display:block;height:1px;width:30px;position:absolute;-webkit-transform:rotate(-40deg);-ms-transform:rotate(-40deg);transform:rotate(-40deg);bottom:15px;left:0;z-index:10}.owl-stage{display:-webkit-box;display:-ms-flexbox;display:flex}.owl-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.contact{margin:3em 0 10em 0}.contact .wrapper{overflow:hidden}.contact .heading-3{color:#38b549;font-size:2.5em;font-weight:400;margin:0 0 0 0}.contact .left{-webkit-box-sizing:border-box;box-sizing:border-box;float:left;padding:0 10em 0 0;width:41.66667%}@media (max-width: 420px){.contact .left{float:inherit;margin:0 0 2em 0;padding:0;width:100%}}.contact .left .big{font-size:1.15em;font-weight:400;line-height:1.5}.contact .left .small{font-size:1em;font-weight:300;line-height:1.5}.contact .left ul{margin:3em 0 0 0;padding:0}.contact .left ul li{display:block;font-size:1em;font-weight:300;line-height:1.5}.contact .left ul li img{display:inline-block;vertical-align:middle;width:30px}.contact .left ul li span{display:inline-block;vertical-align:middle}.contact .left ul li a{color:#000000;display:inline-block;vertical-align:middle;text-decoration:none}.contact .right{float:right;width:58.33333%}@media (max-width: 420px){.contact .right{float:inherit;width:100%}}.contact .form .element{margin:0 0 1em 0;overflow:hidden}.contact .form .element .half{float:left;margin-right:1.69492%;width:49.15254%}.contact .form .element .half--alter{margin-right:0}@media (max-width: 420px){.contact .form .element .half{margin:0 0 1em 0;width:100%}}.contact .form label{display:block;font-weight:300;margin:0 0 0.5em 0}.contact .form input[type="text"]{-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ccc;display:block;height:35px;outline:0;padding:0 1em;width:100%}.contact .form textarea{-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ccc;display:block;height:180px;padding:1em;outline:0;width:100%}.contact .form input[type="submit"]{-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#38b549;border:0;border-radius:4px;color:#ffffff;cursor:pointer;display:inline-block;font-size:1em;font-weight:400;letter-spacing:1px;margin:1em 0 0 0;padding:1em 2em;text-transform:uppercase}.message-success{display:none;line-height:1.5}.message-error{display:none;line-height:1.5}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9mb250cy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL293bC5jYXJvdXNlbC9zcmMvc2Nzcy9fY29yZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL293bC5jYXJvdXNlbC9zcmMvc2Nzcy9fYW5pbWF0ZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL293bC5jYXJvdXNlbC9zcmMvc2Nzcy9fYXV0b2hlaWdodC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL293bC5jYXJvdXNlbC9zcmMvc2Nzcy9fbGF6eWxvYWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vd2wuY2Fyb3VzZWwvc3JjL3Njc3MvX3ZpZGVvLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbm9ybWFsaXplLXNjc3Mvc2Fzcy9ub3JtYWxpemUvX25vcm1hbGl6ZS1taXhpbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL25vcm1hbGl6ZS1zY3NzL3Nhc3Mvbm9ybWFsaXplL192ZXJ0aWNhbC1yaHl0aG0uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUtc2Nzcy9zYXNzL25vcm1hbGl6ZS9fdmFyaWFibGVzLnNjc3MiLCJfaW5pdC5zY3NzIiwibW9kdWxlcy9oZWFkZXIuc2NzcyIsIm1vZHVsZXMvZm9vdGVyLnNjc3MiLCJ2aWV3cy9ob21lLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvX3N1LW1hdGguc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnRkFBWSxDQ0daLGNBQ0MsWUFBYSxDQUNiLFVBQVcsQ0FDWCx1Q0FBd0MsQ0FFeEMsaUJBQWtCLENBQ2xCLFNBQVUsQ0FOWCx5QkFTRSxpQkFBa0IsQ0FDbEIsc0JBQXVCLENBQ3ZCLHlCQUEwQixDQUMxQiwrQkFBZ0MsQ0FabEMsK0JBZ0JFLFdBQVksQ0FDWixhQUFjLENBQ2QsVUFBVyxDQUNYLGlCQUFrQixDQUNsQixhQUFjLENBQ2QsUUFBUyxDQXJCWCwrQkF5QkUsaUJB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Q0F2Q3hCLHlCQXlDVSxvQkFBcUIsQ0FDckIscUJBQXNCLENBQ3RCLFVBQVcsQ0EzQ3JCLDBCQThDVSxvQkFBcUIsQ0FDckIscUJBQXNCLENBL0NoQyx1QkFrRFUsYUFBYyxDQUNkLG9CQUFxQixDQUNyQixxQkFBc0IsQ0FDdEIsb0JBQXFCLENBckQvQixnQkE0REksV0FBWSxDQUNaLGVDblE0QyxDRG9RNUMsMEJBOURKLGdCQStETSxhQUFjLENBQ2QsVUFBVyxDQUVkLENBbEVILHdCQXFFTSxnQkFBaUIsQ0FDakIsZUFBZ0IsQ0F0RXRCLDhCQXdFUSxVQUFXLENBQ1gscUJDNU5tQyxDRDZObkMsZUNoUndDLENEc01oRCxxQ0E0RVUsY0FBZSxDQUNoQiwwQkE3RVQsOEJBK0VVLGdCQUFpQixDQUNqQixVQUFXLENBRWQsQ0FsRlAscUJBcUZNLGFBQWMsQ0FDZCxlQUFnQixDQUNoQixrQkFBbUIsQ0F2RnpCLGtDQTBGTSw2QkFBc0IsQ0FBdEIscUJBQXNCLENBQ3RCLHFCQUFvQyxDQUNwQyxhQUFjLENBQ2QsV0FBWSxDQUNaLFNBQVUsQ0FDVixhQUFjLENBQ2QsVUFBVyxDQWhHakIsd0JBbUdNLDZCQUFzQixDQUF0QixxQkFBc0IsQ0FDdEIscUJBQW9DLENBQ3BDLGFBQWMsQ0FDZCxZQUFhLENBQ2IsV0FBWSxDQUNaLFNBQVUsQ0FDVixVQUFXLENBekdqQixvQ0E0R00sNkJBQXNCLENBQXRCLHFCQUFzQixDQUN0Qix3QkEvWVMsQ0FnWlQsUUFBUyxDQUNULGlCQUFrQixDQUNsQixhQUFjLENBQ2QsY0FBZSxDQUNmLG9CQUFxQixDQUNyQixhQUFjLENBQ2QsZUFBZ0IsQ0FDaEIsa0JBQW1CLENBQ25CLGdCQUFpQixDQUNqQixlQUFnQixDQUNoQix3QkFBeUIsQ0FDMUIsaUJBS0gsWUFBYSxDQUNiLGVBQWdCLENBQ2pCLGVBR0MsWUFBYSxDQUNiLGVBQWdCIiwiZmlsZSI6InN0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9T3BlbitTYW5zOjMwMCw0MDAsNjAwLDcwMCcpOyIsIi8qXG4gKiAgT3dsIENhcm91c2VsIC0gQ29yZVxuICovXG4ub3dsLWNhcm91c2VsIHtcblx0ZGlzcGxheTogbm9uZTtcblx0d2lkdGg6IDEwMCU7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdC8qIHBvc2l0aW9uIHJlbGF0aXZlIGFuZCB6LWluZGV4IGZpeCB3ZWJraXQgcmVuZGVyaW5nIGZvbnRzIGlzc3VlICovXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ei1pbmRleDogMTtcblxuXHQub3dsLXN0YWdlIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0LW1zLXRvdWNoLWFjdGlvbjogcGFuLVk7XG5cdFx0dG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG5cdFx0LW1vei1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47IC8qIGZpeCBmaXJlZm94IGFuaW1hdGlvbiBnbGl0Y2ggKi9cblx0fVxuXG5cdC5vd2wtc3RhZ2U6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6IFwiLlwiO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGNsZWFyOiBib3RoO1xuXHRcdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHRsaW5lLWhlaWdodDogMDtcblx0XHRoZWlnaHQ6IDA7XG5cdH1cblxuXHQub3dsLXN0YWdlLW91dGVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHQvKiBmaXggZm9yIGZsYXNoaW5nIGJhY2tncm91bmQgKi9cblx0XHQtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweCk7XG5cdH1cblxuXHQub3dsLXdyYXBwZXIsXG5cdC5vd2wtaXRlbXtcblx0XHQtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHQtbW96LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHQtbXMtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXHRcdC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLDAsMCk7XG5cdFx0LW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsMCwwKTtcblx0XHQtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLDAsMCk7XG5cdH1cblxuXHQub3dsLWl0ZW0ge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRtaW4taGVpZ2h0OiAxcHg7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHQtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7XG5cdH1cblx0Lm93bC1pdGVtIGltZyB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cblxuXHQub3dsLW5hdi5kaXNhYmxlZCxcblx0Lm93bC1kb3RzLmRpc2FibGVkIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0Lm93bC1uYXYgLm93bC1wcmV2LFxuXHQub3dsLW5hdiAub3dsLW5leHQsXG5cdC5vd2wtZG90IHtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcblx0XHQta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdFx0LW1vei11c2VyLXNlbGVjdDogbm9uZTtcblx0XHQtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdFx0dXNlci1zZWxlY3Q6IG5vbmU7XG5cdH1cblxuXHQub3dsLW5hdiBidXR0b24ub3dsLXByZXYsXG5cdC5vd2wtbmF2IGJ1dHRvbi5vd2wtbmV4dCxcblx0YnV0dG9uLm93bC1kb3Qge1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdHBhZGRpbmc6MCFpbXBvcnRhbnQ7XG5cdFx0Zm9udDogaW5oZXJpdDtcblx0fVxuXG5cdCYub3dsLWxvYWRlZCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQmLm93bC1sb2FkaW5nIHtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0Ji5vd2wtaGlkZGVuIHtcblx0XHRvcGFjaXR5OiAwO1xuXHR9XG5cblx0Ji5vd2wtcmVmcmVzaCAub3dsLWl0ZW0ge1xuXHRcdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0fVxuXG5cdCYub3dsLWRyYWcgLm93bC1pdGVtIHtcblx0XHR0b3VjaC1hY3Rpb246IHBhbi15O1xuXHRcdC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdFx0LW1vei11c2VyLXNlbGVjdDogbm9uZTtcblx0XHQtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdFx0dXNlci1zZWxlY3Q6IG5vbmU7XG5cdH1cblxuXHQmLm93bC1ncmFiIHtcblx0XHRjdXJzb3I6IG1vdmU7XG5cdFx0Y3Vyc29yOiBncmFiO1xuXHR9XG5cblx0Ji5vd2wtcnRsIHtcblx0XHRkaXJlY3Rpb246IHJ0bDtcblx0fVxuXG5cdCYub3dsLXJ0bCAub3dsLWl0ZW0ge1xuXHRcdGZsb2F0OiByaWdodDtcblx0fVxufVxuXG4vKiBObyBKcyAqL1xuLm5vLWpzIC5vd2wtY2Fyb3VzZWwge1xuXHRkaXNwbGF5OiBibG9jaztcbn1cbiIsIi8qXG4gKiAgT3dsIENhcm91c2VsIC0gQW5pbWF0ZSBQbHVnaW5cbiAqL1xuLm93bC1jYXJvdXNlbHtcblx0LmFuaW1hdGVkIHtcblx0XHRhbmltYXRpb24tZHVyYXRpb246IDEwMDBtcztcblx0XHRhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuXHR9XG5cdC5vd2wtYW5pbWF0ZWQtaW4ge1xuXHRcdHotaW5kZXg6IDA7XG5cdH1cblx0Lm93bC1hbmltYXRlZC1vdXQge1xuXHRcdHotaW5kZXg6IDE7XG5cdH1cblx0LmZhZGVPdXQge1xuXHRcdGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0O1xuXHR9XG59XG5cbkBrZXlmcmFtZXMgZmFkZU91dCB7XG5cdDAlIHtcblx0XHRvcGFjaXR5OiAxO1xuXHR9XG5cblx0MTAwJSB7XG5cdFx0b3BhY2l0eTogMDtcblx0fVxufVxuIiwiLypcbiAqIFx0T3dsIENhcm91c2VsIC0gQXV0byBIZWlnaHQgUGx1Z2luXG4gKi9cblxuLm93bC1oZWlnaHQge1xuXHR0cmFuc2l0aW9uOiBoZWlnaHQgNTAwbXMgZWFzZS1pbi1vdXQ7XG59XG4iLCIvKlxuICogXHRPd2wgQ2Fyb3VzZWwgLSBMYXp5IExvYWQgUGx1Z2luXG4gKi9cblxuLm93bC1jYXJvdXNlbCB7XG5cdC5vd2wtaXRlbSB7XG5cdFx0Lm93bC1sYXp5IHtcblx0XHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdFx0dHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdFx0VGhpcyBpcyBpbnRyb2R1Y2VkIGR1ZSB0byBhIGJ1ZyBpbiBJRTExIHdoZXJlIGxhenkgbG9hZGluZyBjb21iaW5lZCB3aXRoIGF1dG9oZWlnaHQgcGx1Z2luIGNhdXNlcyBhIHdyb25nXG5cdFx0XHRjYWxjdWxhdGlvbiBvZiB0aGUgaGVpZ2h0IG9mIHRoZSBvd2wtaXRlbSB0aGF0IGJyZWFrcyBwYWdlIGxheW91dHNcblx0XHQgKi9cblx0XHQub3dsLWxhenlbc3JjXj1cIlwiXSwgLm93bC1sYXp5Om5vdChbc3JjXSkge1xuXHRcdFx0bWF4LWhlaWdodDogMDtcblx0XHR9XG5cblx0XHRpbWcub3dsLWxhenkge1xuXHRcdFx0dHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcblx0XHR9XG5cdH1cbn1cblxuIiwiJG93bC1pbWFnZS1wYXRoOiBcIlwiICFkZWZhdWx0O1xuXG4vKlxuICogXHRPd2wgQ2Fyb3VzZWwgLSBWaWRlbyBQbHVnaW5cbiAqL1xuXG4ub3dsLWNhcm91c2Vse1xuXHQub3dsLXZpZGVvLXdyYXBwZXIge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0YmFja2dyb3VuZDogIzAwMDtcblx0fVxuXG5cdC5vd2wtdmlkZW8tcGxheS1pY29uIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0aGVpZ2h0OiA4MHB4O1xuXHRcdHdpZHRoOiA4MHB4O1xuXHRcdGxlZnQ6IDUwJTtcblx0XHR0b3A6IDUwJTtcblx0XHRtYXJnaW4tbGVmdDogLTQwcHg7XG5cdFx0bWFyZ2luLXRvcDogLTQwcHg7XG5cdFx0YmFja2dyb3VuZDogdXJsKFwiI3skb3dsLWltYWdlLXBhdGh9b3dsLnZpZGVvLnBsYXkucG5nXCIpIG5vLXJlcGVhdDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0ei1pbmRleDogMTtcblx0XHQtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTAwbXMgZWFzZTtcblx0fVxuXG5cdC5vd2wtdmlkZW8tcGxheS1pY29uOmhvdmVyIHtcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDEuMywgMS4zKTtcblx0fVxuXG5cdC5vd2wtdmlkZW8tcGxheWluZyAub3dsLXZpZGVvLXRuLFxuXHQub3dsLXZpZGVvLXBsYXlpbmcgLm93bC12aWRlby1wbGF5LWljb24ge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHQub3dsLXZpZGVvLXRuIHtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuXHRcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdFx0YmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuXHRcdHRyYW5zaXRpb246IG9wYWNpdHkgNDAwbXMgZWFzZTtcblx0fVxuXG5cdC5vd2wtdmlkZW8tZnJhbWUge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR6LWluZGV4OiAxO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxufVxuIiwiLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgbm9ybWFsaXplKCkgbWl4aW4uXG5AZnVuY3Rpb24gX25vcm1hbGl6ZS1pbmNsdWRlKCRzZWN0aW9uLCAkZXhjbHVkZTogbnVsbCkge1xuICAvLyBJbml0aWFsaXplIHRoZSBnbG9iYWwgdmFyaWFibGVzIG5lZWRlZCBieSB0aGlzIGZ1bmN0aW9uLlxuICBAaWYgbm90IGdsb2JhbF92YXJpYWJsZV9leGlzdHMoX25vcm1hbGl6ZS1pbmNsdWRlKSB7XG4gICAgJF9ub3JtYWxpemUtaW5jbHVkZTogKCkgIWdsb2JhbDtcbiAgICAkX25vcm1hbGl6ZS1leGNsdWRlOiAoKSAhZ2xvYmFsO1xuICB9XG4gIC8vIFNpbmNlIHdlIGFyZSBnaXZlbiAyIHBhcmFtZXRlcnMsIHNldCB0aGUgZ2xvYmFsIHZhcmlhYmxlcy5cbiAgQGlmICRleGNsdWRlICE9IG51bGwge1xuICAgICRpbmNsdWRlOiAkc2VjdGlvbjtcbiAgICAvLyBTYXNzIGRvZXNuJ3QgaGF2ZSBzdGF0aWMgdmFyaWFibGVzLCBzbyB0aGUgd29yay1hcm91bmQgaXMgdG8gc3R1ZmYgdGhlc2VcbiAgICAvLyB2YWx1ZXMgaW50byBnbG9iYWwgdmFyaWFibGVzIHNvIHdlIGNhbiBhY2Nlc3MgdGhlbSBpbiBmdXR1cmUgY2FsbHMuXG4gICAgJF9ub3JtYWxpemUtaW5jbHVkZTogaWYodHlwZS1vZigkaW5jbHVkZSkgPT0gJ2xpc3QnLCAkaW5jbHVkZSwgKCRpbmNsdWRlKSkgIWdsb2JhbDtcbiAgICAkX25vcm1hbGl6ZS1leGNsdWRlOiBpZih0eXBlLW9mKCRleGNsdWRlKSA9PSAnbGlzdCcsICRleGNsdWRlLCAoJGV4Y2x1ZGUpKSAhZ2xvYmFsO1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmICRzZWN0aW9uIGlzIGluIHRoZSAkaW5jbHVkZSBsaXN0LlxuICBAaWYgaW5kZXgoJF9ub3JtYWxpemUtaW5jbHVkZSwgJHNlY3Rpb24pIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gSWYgJGluY2x1ZGUgaXMgc2V0IHRvIChhbGwpLCBtYWtlIHN1cmUgJHNlY3Rpb24gaXMgbm90IGluICRleGNsdWRlLlxuICBAZWxzZSBpZiBub3QgaW5kZXgoJF9ub3JtYWxpemUtZXhjbHVkZSwgJHNlY3Rpb24pIGFuZCBpbmRleCgkX25vcm1hbGl6ZS1pbmNsdWRlLCBhbGwpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuQG1peGluIG5vcm1hbGl6ZSgkaW5jbHVkZTogKGFsbCksICRleGNsdWRlOiAoKSkge1xuICAvLyBJbml0aWFsaXplIHRoZSBoZWxwZXIgZnVuY3Rpb24gYnkgcGFzc2luZyBpdCB0aGlzIG1peGluJ3MgcGFyYW1ldGVycy5cbiAgJGluaXQ6IF9ub3JtYWxpemUtaW5jbHVkZSgkaW5jbHVkZSwgJGV4Y2x1ZGUpO1xuXG4gIC8vIElmIHdlJ3ZlIGN1c3RvbWl6ZWQgYW55IGZvbnQgdmFyaWFibGVzLCB3ZSdsbCBuZWVkIGV4dHJhIHByb3BlcnRpZXMuXG4gIEBpZiAkYmFzZS1saW5lLWhlaWdodCAhPSAyNHB4XG4gICAgb3IgJGJhc2UtdW5pdCAhPSAnZW0nXG4gICAgb3IgJGgyLWZvbnQtc2l6ZSAhPSAxLjUgICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGgzLWZvbnQtc2l6ZSAhPSAxLjE3ICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGg0LWZvbnQtc2l6ZSAhPSAxICAgICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGg1LWZvbnQtc2l6ZSAhPSAwLjgzICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGg2LWZvbnQtc2l6ZSAhPSAwLjY3ICogJGJhc2UtZm9udC1zaXplIHtcbiAgICAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobTogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgLyohIG5vcm1hbGl6ZS1zY3NzIHwgTUlUL0dQTHYyIExpY2Vuc2UgfCBiaXQubHkvbm9ybWFsaXplLXNjc3MgKi9cblxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGRvY3VtZW50KSB7XG4gICAgLyogRG9jdW1lbnRcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuICAgICAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW5cbiAgICAgKiAgICBJRSBvbiBXaW5kb3dzIFBob25lIGFuZCBpbiBpT1MuXG4gICAgICovXG5cbiAgICBodG1sIHtcbiAgICAgIEBpZiAkYmFzZS1mb250LWZhbWlseSB7XG4gICAgICAgIC8qIENoYW5nZSB0aGUgZGVmYXVsdCBmb250IGZhbWlseSBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS4gKi9cbiAgICAgICAgZm9udC1mYW1pbHk6ICRiYXNlLWZvbnQtZmFtaWx5O1xuICAgICAgfVxuICAgICAgQGlmICRiYXNlLWZvbnQtc2l6ZSAhPSAxNnB4IG9yICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgLy8gQ29ycmVjdCBvbGQgYnJvd3NlciBidWcgdGhhdCBwcmV2ZW50ZWQgYWNjZXNzaWJsZSByZXNpemluZyBvZiB0ZXh0XG4gICAgICAgIC8vIHdoZW4gcm9vdCBmb250LXNpemUgaXMgc2V0IHdpdGggcHggb3IgZW0uXG4gICAgICAgIGZvbnQtc2l6ZTogKCRiYXNlLWZvbnQtc2l6ZSAvIDE2cHgpICogMTAwJTtcbiAgICAgIH1cbiAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAoJGJhc2UtbGluZS1oZWlnaHQgLyAkYmFzZS1mb250LXNpemUpICogMWVtOyAvKiAxICovXG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXG4gICAgICB9XG4gICAgICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShzZWN0aW9ucykge1xuICAgIC8qIFNlY3Rpb25zXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICAgICAqL1xuXG4gICAgYm9keSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICovXG5cbiAgICBhcnRpY2xlLFxuICAgIGFzaWRlLFxuICAgIGZvb3RlcixcbiAgICBoZWFkZXIsXG4gICAgbmF2LFxuICAgIHNlY3Rpb24ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICAgICAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gICAgICovXG5cbiAgICBoMSB7XG4gICAgICBAaW5jbHVkZSBub3JtYWxpemUtZm9udC1zaXplKCRoMS1mb250LXNpemUpO1xuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWxpbmUtaGVpZ2h0KCRoMS1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xuICAgICAgICAvKiBTZXQgMSB1bml0IG9mIHZlcnRpY2FsIHJoeXRobSBvbiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lucy4gKi9cbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMS1mb250LXNpemUpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBtYXJnaW46IDAuNjdlbSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICBoMiB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGgyLWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDItZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMi1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoMyB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGgzLWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDMtZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMy1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoNCB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg0LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDQtZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNC1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoNSB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg1LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDUtZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNS1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoNiB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg2LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDYtZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNi1mb250LXNpemUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoZ3JvdXBpbmcpIHtcbiAgICAvKiBHcm91cGluZyBjb250ZW50XG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAvKipcbiAgICAgICAqIFNldCAxIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtIG9uIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW4uXG4gICAgICAgKi9cblxuICAgICAgYmxvY2txdW90ZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAkaW5kZW50LWFtb3VudCk7XG4gICAgICB9XG5cbiAgICAgIGRsLFxuICAgICAgb2wsXG4gICAgICB1bCB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwKTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBUdXJuIG9mZiBtYXJnaW5zIG9uIG5lc3RlZCBsaXN0cy5cbiAgICAgICAqL1xuXG4gICAgICBvbCxcbiAgICAgIHVsIHtcbiAgICAgICAgb2wsXG4gICAgICAgIHVsIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZGQge1xuICAgICAgICBtYXJnaW46IDAgMCAwICRpbmRlbnQtYW1vdW50O1xuICAgICAgfVxuXG4gICAgICBvbCxcbiAgICAgIHVsIHtcbiAgICAgICAgcGFkZGluZzogMCAwIDAgJGluZGVudC1hbW91bnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICovXG5cbiAgICBmaWdjYXB0aW9uLFxuICAgIGZpZ3VyZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgbWFyZ2luIGluIElFIDguXG4gICAgICovXG5cbiAgICBmaWd1cmUge1xuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxICRpbmRlbnQtYW1vdW50KTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgbWFyZ2luOiAxZW0gJGluZGVudC1hbW91bnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAgICAgKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAgICAgKi9cblxuICAgIGhyIHtcbiAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAxICovXG4gICAgICBoZWlnaHQ6IDA7IC8qIDEgKi9cbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUuXG4gICAgICovXG5cbiAgICBtYWluIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAvKipcbiAgICAgICAqIFNldCAxIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtIG9uIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW4uXG4gICAgICAgKi9cblxuICAgICAgcCxcbiAgICAgIHByZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAgICAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAgICAgKi9cblxuICAgIHByZSB7XG4gICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgICAgIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShsaW5rcykge1xuICAgIC8qIExpbmtzXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIDEuIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAgICAgKiAyLiBSZW1vdmUgZ2FwcyBpbiBsaW5rcyB1bmRlcmxpbmUgaW4gaU9TIDgrIGFuZCBTYWZhcmkgOCsuXG4gICAgICovXG5cbiAgICBhIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvKiAxICovXG4gICAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyAvKiAyICovXG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZSh0ZXh0KSB7XG4gICAgLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIENocm9tZSA1Ny0gYW5kIEZpcmVmb3ggMzktLlxuICAgICAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG4gICAgICovXG5cbiAgICBhYmJyW3RpdGxlXSB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLyogMiAqL1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJldmVudCB0aGUgZHVwbGljYXRlIGFwcGxpY2F0aW9uIG9mIGBib2xkZXJgIGJ5IHRoZSBuZXh0IHJ1bGUgaW4gU2FmYXJpIDYuXG4gICAgICovXG5cbiAgICBiLFxuICAgIHN0cm9uZyB7XG4gICAgICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICAgICAqL1xuXG4gICAgYixcbiAgICBzdHJvbmcge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAgICAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAgICAgKi9cblxuICAgIGNvZGUsXG4gICAga2JkLFxuICAgIHNhbXAge1xuICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gICAgICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLS5cbiAgICAgKi9cblxuICAgIGRmbiB7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGJhY2tncm91bmQgYW5kIGNvbG9yIGluIElFIDktLlxuICAgICAqL1xuXG4gICAgbWFyayB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xuICAgICAgY29sb3I6ICMwMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBzbWFsbCB7XG4gICAgICBmb250LXNpemU6IDgwJTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAgICAgKiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBzdWIsXG4gICAgc3VwIHtcbiAgICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gICAgfVxuXG4gICAgc3ViIHtcbiAgICAgIGJvdHRvbTogLTAuMjVlbTtcbiAgICB9XG5cbiAgICBzdXAge1xuICAgICAgdG9wOiAtMC41ZW07XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShlbWJlZGRlZCkge1xuICAgIC8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICovXG5cbiAgICBhdWRpbyxcbiAgICB2aWRlbyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gaU9TIDQtNy5cbiAgICAgKi9cblxuICAgIGF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgaGVpZ2h0OiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAtLlxuICAgICAqL1xuXG4gICAgaW1nIHtcbiAgICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlIHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAgICAgKi9cblxuICAgIHN2Zzpub3QoOnJvb3QpIHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShmb3Jtcykge1xuICAgIC8qIEZvcm1zXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gICAgICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICAgICAqL1xuXG4gICAgYnV0dG9uLFxuICAgIGlucHV0LFxuICAgIG9wdGdyb3VwLFxuICAgIHNlbGVjdCxcbiAgICB0ZXh0YXJlYSB7XG4gICAgICBmb250LWZhbWlseTogaWYoJGJhc2UtZm9udC1mYW1pbHksICRiYXNlLWZvbnQtZmFtaWx5LCBzYW5zLXNlcmlmKTsgLyogMSAqL1xuICAgICAgZm9udC1zaXplOiAxMDAlOyAvKiAxICovXG4gICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xuICAgICAgICBsaW5lLWhlaWdodDogKCRiYXNlLWxpbmUtaGVpZ2h0IC8gJGJhc2UtZm9udC1zaXplKSAqIDFlbTsgLyogMSAqL1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xNTsgLyogMSAqL1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAwOyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gICAgICovXG5cbiAgICBidXR0b24ge1xuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gICAgICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuICAgICAqL1xuXG4gICAgYnV0dG9uLFxuICAgIHNlbGVjdCB7IC8qIDEgKi9cbiAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIFByZXZlbnQgYSBXZWJLaXQgYnVnIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYCBhbmQgYHZpZGVvYFxuICAgICAqICAgIGNvbnRyb2xzIGluIEFuZHJvaWQgNC5cbiAgICAgKiAyLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICAgICAqL1xuXG4gICAgYnV0dG9uLFxuICAgIGh0bWwgW3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cbiAgICBbdHlwZT1cInJlc2V0XCJdLFxuICAgIFt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAyICovXG4gICAgfVxuXG4gICAgYnV0dG9uLFxuICAgIFt0eXBlPVwiYnV0dG9uXCJdLFxuICAgIFt0eXBlPVwicmVzZXRcIl0sXG4gICAgW3R5cGU9XCJzdWJtaXRcIl0ge1xuXG4gICAgICAvKipcbiAgICAgICAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gICAgICAgKi9cblxuICAgICAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gICAgICAgKi9cblxuICAgICAgJjotbW96LWZvY3VzcmluZyB7XG4gICAgICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICAgICAqL1xuXG4gICAgaW5wdXQge1xuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAtLlxuICAgICAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC0uXG4gICAgICovXG5cbiAgICBbdHlwZT1cImNoZWNrYm94XCJdLFxuICAgIFt0eXBlPVwicmFkaW9cIl0ge1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICAgICAgcGFkZGluZzogMDsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAgICAgKi9cblxuICAgIFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICAgIFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAgICAgKiAyLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cbiAgICAgKi9cblxuICAgIFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xuXG4gICAgICAvKipcbiAgICAgICAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBhbmQgY2FuY2VsIGJ1dHRvbnMgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4gICAgICAgKi9cblxuICAgICAgJjo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbiAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAgICAgKiAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXG4gICAgICovXG5cbiAgICA6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXG4gICAgICBmb250OiBpbmhlcml0OyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICAgICAqL1xuXG4gICAgZmllbGRzZXQge1xuICAgICAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gICAgICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICAgICAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAgICAgKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cbiAgICAgKi9cblxuICAgIGxlZ2VuZCB7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gICAgICBkaXNwbGF5OiB0YWJsZTsgLyogMSAqL1xuICAgICAgbWF4LXdpZHRoOiAxMDAlOyAvKiAxICovXG4gICAgICBwYWRkaW5nOiAwOyAvKiAzICovXG4gICAgICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xuICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogMSAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICAgICAqIDIuIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gICAgICovXG5cbiAgICBwcm9ncmVzcyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cbiAgICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUuXG4gICAgICovXG5cbiAgICB0ZXh0YXJlYSB7XG4gICAgICBvdmVyZmxvdzogYXV0bztcbiAgICB9XG4gIH1cblxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGludGVyYWN0aXZlKSB7XG4gICAgLyogSW50ZXJhY3RpdmVcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLypcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSwgYW5kIEZpcmVmb3guXG4gICAgICovXG5cbiAgICBkZXRhaWxzIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxuICAgICAqL1xuXG4gICAgc3VtbWFyeSB7XG4gICAgICBkaXNwbGF5OiBsaXN0LWl0ZW07XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cbiAgICAgKi9cblxuICAgIG1lbnUge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIDEuIFNldCAxIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtIG9uIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW4uXG4gICAgICAgICAqIDIuIFNldCBjb25zaXN0ZW50IHNwYWNlIGZvciB0aGUgbGlzdCBzdHlsZSBpbWFnZS5cbiAgICAgICAgICovXG5cbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDApOyAvKiAxICovXG4gICAgICAgIHBhZGRpbmc6IDAgMCAwICRpbmRlbnQtYW1vdW50OyAvKiAyICovXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFR1cm4gb2ZmIG1hcmdpbnMgb24gbmVzdGVkIGxpc3RzLlxuICAgICAgICAgKi9cblxuICAgICAgICBtZW51ICYsXG4gICAgICAgIG9sICYsXG4gICAgICAgIHVsICYge1xuICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoc2NyaXB0aW5nKSB7XG4gICAgLyogU2NyaXB0aW5nXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICAgICAqL1xuXG4gICAgY2FudmFzIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cbiAgICAgKi9cblxuICAgIHRlbXBsYXRlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShoaWRkZW4pIHtcbiAgICAvKiBIaWRkZW5cbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAtLlxuICAgICAqL1xuXG4gICAgW2hpZGRlbl0ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBWZXJ0aWNhbCBSaHl0aG1cbi8vXG4vLyBUaGlzIGlzIHRoZSBtaW5pbWFsIGFtb3VudCBvZiBjb2RlIG5lZWRlZCB0byBjcmVhdGUgdmVydGljYWwgcmh5dGhtIGluIG91clxuLy8gQ1NTLiBJZiB5b3UgYXJlIGxvb2tpbmcgZm9yIGEgcm9idXN0IHNvbHV0aW9uLCBsb29rIGF0IHRoZSBleGNlbGxlbnQgVHlwZXlcbi8vIGxpYnJhcnkuIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2pwdGFyYW50by90eXBleVxuXG5AZnVuY3Rpb24gbm9ybWFsaXplLXJoeXRobSgkdmFsdWUsICRyZWxhdGl2ZS10bzogJGJhc2UtZm9udC1zaXplLCAkdW5pdDogJGJhc2UtdW5pdCkge1xuICBAaWYgdW5pdCgkdmFsdWUpICE9IHB4IHtcbiAgICBAZXJyb3IgXCJUaGUgbm9ybWFsaXplIHZlcnRpY2FsLXJoeXRobSBtb2R1bGUgb25seSBzdXBwb3J0cyBweCBpbnB1dHMuIFRoZSB0eXBleSBsaWJyYXJ5IGlzIGJldHRlci5cIjtcbiAgfVxuICBAaWYgJHVuaXQgPT0gcmVtIHtcbiAgICBAcmV0dXJuICgkdmFsdWUgLyAkYmFzZS1mb250LXNpemUpICogMXJlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSBlbSB7XG4gICAgQHJldHVybiAoJHZhbHVlIC8gJHJlbGF0aXZlLXRvKSAqIDFlbTtcbiAgfVxuICBAZWxzZSB7IC8vICR1bml0ID09IHB4XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbn1cblxuQG1peGluIG5vcm1hbGl6ZS1mb250LXNpemUoJHZhbHVlLCAkcmVsYXRpdmUtdG86ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaWYgdW5pdCgkdmFsdWUpICE9ICdweCcge1xuICAgIEBlcnJvciBcIm5vcm1hbGl6ZS1mb250LXNpemUoKSBvbmx5IHN1cHBvcnRzIHB4IGlucHV0cy4gVGhlIHR5cGV5IGxpYnJhcnkgaXMgYmV0dGVyLlwiO1xuICB9XG4gIGZvbnQtc2l6ZTogbm9ybWFsaXplLXJoeXRobSgkdmFsdWUsICRyZWxhdGl2ZS10byk7XG59XG5cbkBtaXhpbiBub3JtYWxpemUtcmh5dGhtKCRwcm9wZXJ0eSwgJHZhbHVlcywgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUpIHtcbiAgJHZhbHVlLWxpc3Q6ICR2YWx1ZXM7XG4gICRzZXA6IHNwYWNlO1xuICBAaWYgdHlwZS1vZigkdmFsdWVzKSA9PSAnbGlzdCcge1xuICAgICRzZXA6IGxpc3Qtc2VwYXJhdG9yKCR2YWx1ZXMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkdmFsdWUtbGlzdDogYXBwZW5kKCgpLCAkdmFsdWVzKTtcbiAgfVxuXG4gICRub3JtYWxpemVkLXZhbHVlczogKCk7XG4gIEBlYWNoICR2YWx1ZSBpbiAkdmFsdWUtbGlzdCB7XG4gICAgQGlmIHVuaXRsZXNzKCR2YWx1ZSkgYW5kICR2YWx1ZSAhPSAwIHtcbiAgICAgICR2YWx1ZTogJHZhbHVlICogbm9ybWFsaXplLXJoeXRobSgkYmFzZS1saW5lLWhlaWdodCwgJHJlbGF0aXZlLXRvKTtcbiAgICB9XG4gICAgJG5vcm1hbGl6ZWQtdmFsdWVzOiBhcHBlbmQoJG5vcm1hbGl6ZWQtdmFsdWVzLCAkdmFsdWUsICRzZXApO1xuICB9XG4gICN7JHByb3BlcnR5fTogJG5vcm1hbGl6ZWQtdmFsdWVzO1xufVxuXG5AbWl4aW4gbm9ybWFsaXplLW1hcmdpbigkdmFsdWVzLCAkcmVsYXRpdmUtdG86ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaW5jbHVkZSBub3JtYWxpemUtcmh5dGhtKG1hcmdpbiwgJHZhbHVlcywgJHJlbGF0aXZlLXRvKTtcbn1cblxuQG1peGluIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkZm9udC1zaXplLCAkbWluLWxpbmUtcGFkZGluZzogMnB4KSB7XG4gICRsaW5lczogY2VpbCgkZm9udC1zaXplIC8gJGJhc2UtbGluZS1oZWlnaHQpO1xuICAvLyBJZiBsaW5lcyBhcmUgY3JhbXBlZCBpbmNsdWRlIHNvbWUgZXh0cmEgbGVhZGluZy5cbiAgQGlmICgkbGluZXMgKiAkYmFzZS1saW5lLWhlaWdodCAtICRmb250LXNpemUpIDwgKCRtaW4tbGluZS1wYWRkaW5nICogMikge1xuICAgICRsaW5lczogJGxpbmVzICsgMTtcbiAgfVxuICBAaW5jbHVkZSBub3JtYWxpemUtcmh5dGhtKGxpbmUtaGVpZ2h0LCAkbGluZXMsICRmb250LXNpemUpO1xufVxuIiwiLy9cbi8vIFZhcmlhYmxlc1xuLy9cbi8vIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdmFsdWVzIGJ5IHNldHRpbmcgdGhlIHZhcmlhYmxlcyBpbiB5b3VyIFNhc3Ncbi8vIGJlZm9yZSBpbXBvcnRpbmcgdGhlIG5vcm1hbGl6ZS1zY3NzIGxpYnJhcnkuXG5cbi8vIFRoZSBmb250IHNpemUgc2V0IG9uIHRoZSByb290IGh0bWwgZWxlbWVudC5cbiRiYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8gVGhlIGJhc2UgbGluZSBoZWlnaHQgZGV0ZXJtaW5lcyB0aGUgYmFzaWMgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0uXG4kYmFzZS1saW5lLWhlaWdodDogMjRweCAhZGVmYXVsdDtcblxuLy8gVGhlIGxlbmd0aCB1bml0IGluIHdoaWNoIHRvIG91dHB1dCB2ZXJ0aWNhbCByaHl0aG0gdmFsdWVzLlxuLy8gU3VwcG9ydGVkIHZhbHVlczogcHgsIGVtLCByZW0uXG4kYmFzZS11bml0OiAnZW0nICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBmb250IGZhbWlseS5cbiRiYXNlLWZvbnQtZmFtaWx5OiBudWxsICFkZWZhdWx0O1xuXG4vLyBUaGUgZm9udCBzaXplcyBmb3IgaDEtaDYuXG4kaDEtZm9udC1zaXplOiAyICAgICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xuJGgyLWZvbnQtc2l6ZTogMS41ICAqICRiYXNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRoMy1mb250LXNpemU6IDEuMTcgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XG4kaDQtZm9udC1zaXplOiAxICAgICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xuJGg1LWZvbnQtc2l6ZTogMC44MyAqICRiYXNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRoNi1mb250LXNpemU6IDAuNjcgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBhbW91bnQgbGlzdHMgYW5kIGJsb2NrcXVvdGVzIGFyZSBpbmRlbnRlZC5cbiRpbmRlbnQtYW1vdW50OiA0MHB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZm9sbG93aW5nIHZhcmlhYmxlIGNvbnRyb2xzIHdoZXRoZXIgbm9ybWFsaXplLXNjc3Mgd2lsbCBvdXRwdXRcbi8vIGZvbnQtc2l6ZXMsIGxpbmUtaGVpZ2h0cyBhbmQgYmxvY2stbGV2ZWwgdG9wL2JvdHRvbSBtYXJnaW5zIHRoYXQgZm9ybSBhIGJhc2ljXG4vLyB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHBhZ2UsIHdoaWNoIGRpZmZlcnMgZnJvbSB0aGUgb3JpZ2luYWwgTm9ybWFsaXplLmNzcy5cbi8vIEhvd2V2ZXIsIGNoYW5naW5nIGFueSBvZiB0aGUgdmFyaWFibGVzIGFib3ZlIHdpbGwgY2F1c2Vcbi8vICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHRvIGJlIGF1dG9tYXRpY2FsbHkgc2V0IHRvIHRydWUuXG4kbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobTogZmFsc2UgIWRlZmF1bHQ7XG4iLCIkcGhhYmxldDogMTEwMHB4O1xuJHRhYmxldDogNzY4cHg7XG4kcGhvbmU6IDQyMHB4O1xuXG4uY29udGFpbmVye1xuICB3aWR0aDogJHBoYWJsZXQ7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBAbWVkaWEgKG1heC13aWR0aDogJHBoYWJsZXQpe1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcGFkZGluZzogMCAxZW07XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuLy8gMzAwLCA0MDAsIDYwMCwgNzAwXG5cbmJvZHl7XG4gIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBwYWRkaW5nOiAxMDBweCAwIDAgMDtcbn0iLCIkdmVyZGU6ICMzOGI1NDk7XG5cbiRwaGFibGV0OiAxMTAwcHg7XG4kdGFibGV0OiA3NjhweDtcbiRwaG9uZTogNDIwcHg7XG5cbi5oZWFkZXJ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGhlaWdodDogMTAwcHg7XG4gIHBhZGRpbmc6IDAuMmVtIDA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgei1pbmRleDogMjA7XG4gIC5sb2dvdHlwZXtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW46IDEuNmVtIDAgMCAwO1xuICAgIGltZ3tcbiAgICAgIHdpZHRoOiAyMjBweDtcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkcGhvbmUpe1xuICAgICAgICB3aWR0aDogMTgwcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5tZW51LW1vYmlsZXtcbiAgICBjb2xvcjogJHZlcmRlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMWVtO1xuICAgIHRvcDogMWVtO1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkdGFibGV0KXtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbiAgLm5hdntcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luOiAxLjhlbSAwIDAgMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkdGFibGV0KXtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgICBmbG9hdDogaW5oZXJpdDtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB6LWluZGV4OiAxMDA7XG4gICAgfVxuICAgICYtLW9wZW57XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gICAgLmNsb3NlLW5hdmlnYXRpb257XG4gICAgICBjb2xvcjogJHZlcmRlO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIGZvbnQtc2l6ZTogNWVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMTBweDtcbiAgICAgIHRvcDogLTMwcHg7XG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogJHRhYmxldCl7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgICB1bHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogJHRhYmxldCl7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG4gICAgICBsaXtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICNmZmZmZmY7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luOiAwIDFlbSAwIDA7XG4gICAgICAgIHBhZGRpbmc6IDAgMCAwIDA7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlLWluLW91dDtcbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICR0YWJsZXQpe1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkdmVyZGU7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgbWFyZ2luOiAwIDAgMCAwO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgICAmOmxhc3QtY2hpbGR7XG4gICAgICAgICAgLy8gbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICAgIGF7XG4gICAgICAgICAgY29sb3I6ICMwMDAwMDA7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgICBmb250LXNpemU6IDAuODVlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwIDAgMWVtIDA7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkdGFibGV0KXtcbiAgICAgICAgICAgIHBhZGRpbmc6IDFlbSAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjE1ZW07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6aG92ZXJ7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICR2ZXJkZTtcbiAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogJHRhYmxldCl7XG4gICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYuYWN0aXZle1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDRweCBzb2xpZCAkdmVyZGU7XG4gICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICR0YWJsZXQpe1xuICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgIH1cbiAgICB9XG4gICAgLmN0YXtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkdmVyZGU7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBjb2xvcjogJHZlcmRlO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgZm9udC1zaXplOiAwLjg1ZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgcGFkZGluZzogMC44ZW0gMWVtO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlLWluLW91dDtcbiAgICAgICY6aG92ZXJ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR2ZXJkZTtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICB9XG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogJHRhYmxldCl7XG4gICAgICAgIG1hcmdpbjogMWVtIDAgMCAwO1xuICAgICAgfVxuICAgIH1cbiAgICAubGVuZ3VhZ2V7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgbWFyZ2luOiAwIDAgMCAxLjJlbTtcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkdGFibGV0KXtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cbiAgICAgIHNwYW57XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luOiAwIDAuNWVtIDAgMDtcbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICR0YWJsZXQpe1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkdmVyZGU7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR2ZXJkZTtcbiAgICAgICAgICBtYXJnaW46IDFlbSAwIDAgMDtcbiAgICAgICAgICBwYWRkaW5nOiAxZW0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkdGFibGV0KXtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHZlcmRlO1xuICAgICAgICAgIHBhZGRpbmc6IDFlbSAwO1xuICAgICAgICB9XG4gICAgICAgIGltZ3tcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgdG9wOiAtMXB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiJHZlcmRlOiAjMzhiNTQ5O1xuXG4kcGhhYmxldDogMTEwMHB4O1xuJHRhYmxldDogNzY4cHg7XG4kcGhvbmU6IDQyMHB4O1xuXG4uZm9vdGVye1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdmVyZGU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDJlbSAwO1xuICAmLWxvZ290eXBle1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbjogMC44ZW0gMCAwIDA7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRwaG9uZSl7XG4gICAgICBmbG9hdDogaW5oZXJpdDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgICBpbWd7XG4gICAgICB3aWR0aDogMTYwcHg7XG4gICAgfVxuICB9XG4gIC5yaWdodHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRwaG9uZSl7XG4gICAgICBmbG9hdDogaW5oZXJpdDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgICBwe1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICBmb250LXNpemU6IDAuODVlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgICBtYXJnaW46IDEuNmVtIDAgMCAwO1xuICAgIH1cbiAgfVxufSIsIiR2ZXJkZTogIzM4YjU0OTtcblxuJHBoYWJsZXQ6IDExMDBweDtcbiR0YWJsZXQ6IDc2OHB4O1xuJHBob25lOiA0MjBweDtcblxuLm1hcnF1ZWV7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9oZWFkLmpwZ1wiKTtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgcGFkZGluZzogOWVtIDA7XG4gIC5jb3B5e1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwe1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICBmb250LXNpemU6IDQuMmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRwaG9uZSl7XG4gICAgICAgIGZvbnQtc2l6ZTogM2VtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ucHJvZHVjdHN7XG4gIC50aXRsZXtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgIHBhZGRpbmc6IDJlbSAwO1xuICAgIC5oZWFkaW5nLTN7XG4gICAgICBjb2xvcjogJHZlcmRlO1xuICAgICAgZm9udC1zaXplOiAyLjVlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICBtYXJnaW46IDEuMmVtIDAgMC4yZW0gMDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gIH1cbiAgLmNvbnRlbnR7XG4gICAgYmFja2dyb3VuZC1jb2xvcjokdmVyZGU7XG4gICAgcGFkZGluZzogNGVtIDA7XG4gICAgLmNvcHl7XG4gICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB3aWR0aDogNTUlO1xuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRwaG9uZSl7XG4gICAgICAgIHdpZHRoOiA4MCU7XG4gICAgICB9XG4gICAgfVxuICAgIHVse1xuICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIG1hcmdpbjogM2VtIDAgMCAwO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBsaXtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgNGVtO1xuICAgICAgICB3aWR0aDogc3Bhbig0IG9mIDEyIHNldC1ndXR0ZXJzIDApO1xuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogJHRhYmxldCl7XG4gICAgICAgICAgbWFyZ2luOiAwIDAgM2VtIDA7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZpZ3VyZXtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGltZ3tcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgd2lkdGg6IDcwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5oZWFkaW5nLTV7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBmb250LXNpemU6IDEuMDVlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgbWFyZ2luOiAwLjNlbSAwIDAgMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuICAgICAgcHtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBtYXJnaW46IDAuOGVtIDAgMCAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkdGFibGV0KXtcbiAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICB3aWR0aDogMjAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLmNhcm91c2Vse1xuICBwYWRkaW5nOiAwIDAgNWVtIDA7XG4gIC5oZWFkaW5nLTN7XG4gICAgY29sb3I6ICR2ZXJkZTtcbiAgICBmb250LXNpemU6IDIuNWVtO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbWFyZ2luOiAxLjJlbSAwIDAuMmVtIDA7XG4gICAgcGFkZGluZzogMC44ZW0gMCAxLjhlbSAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuICAud3JhcHBlcntcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogOTAlO1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkcGhvbmUpe1xuICAgICAgd2lkdGg6IDg4JTtcbiAgICB9XG4gIH1cbiAgJi1zbGlkZXtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG4gICYtcHJldntcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogLTUwcHg7XG4gICAgbWFyZ2luLXRvcDogLTI1cHg7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRwaG9uZSl7XG4gICAgICBsZWZ0OiAtMzNweDtcbiAgICB9XG4gIH1cbiAgJi1uZXh0e1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICByaWdodDogLTUwcHg7XG4gICAgbWFyZ2luLXRvcDogLTI1cHg7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRwaG9uZSl7XG4gICAgICByaWdodDogLTMzcHg7XG4gICAgfVxuICB9XG4gICYtd3JhcHBlcntcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdmVyZGU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAuc2xpZGV7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRwaG9uZSl7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgICAubGVmdHtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB3aWR0aDogc3BhbiggOCBvZiAxMiBzZXQtZ3V0dGVycyAwKTtcbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRwaG9uZSl7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgaGVpZ2h0OiAyMDBweDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgICAmLS1vcmVnYW5ve1xuICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9vcmVnYW5vLmpwZ1wiKTtcbiAgICAgICAgfVxuICAgICAgICAmLS1ob25nb3N7XG4gICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL2hvbmdvcy5qcGdcIik7XG4gICAgICAgIH1cbiAgICAgICAgJi0tY3VyY3VtYXtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvY3VyY3VtYS5qcGdcIik7XG4gICAgICAgIH1cbiAgICAgICAgJi0tYWNoaW90ZXtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvYWNoaW90ZS5qcGdcIik7XG4gICAgICAgIH1cbiAgICAgICAgJi0tamVuZ2licmV7XG4gICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL2plbmdpYnJlLmpwZ1wiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLnJpZ2h0e1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdmVyZGU7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBwYWRkaW5nOiA3ZW0gM2VtIDRlbSAzZW07XG4gICAgICAgIHdpZHRoOiBzcGFuKCA0IG9mIDEyIHNldC1ndXR0ZXJzIDApO1xuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogJHBob25lKXtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogaW5pdGlhbDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBwYWRkaW5nOiAxZW07XG4gICAgICAgIH1cbiAgICAgICAgLmhlYWRpbmctNHtcbiAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB9XG4gICAgICAgIHB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIH1cbiAgICAgICAgdWx7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgIG1hcmdpbjogMCAwIDAgMWVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAgMCAwIDA7XG4gICAgICAgICAgbGl7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAwLjZlbSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ucHJldi1zbGlkZXtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXNpemU6IDA7XG4gIGhlaWdodDogNTBweDtcbiAgd2lkdGg6IDMwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3V0bGluZTogMDtcbiAgJjphZnRlcntcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdmVyZGU7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDFweDtcbiAgICB3aWR0aDogMzBweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDBkZWcpO1xuICAgIGJvdHRvbTogMTVweDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDEwO1xuICB9XG4gICY6YmVmb3Jle1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR2ZXJkZTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMXB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDBkZWcpO1xuICAgIHRvcDogMTVweDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDEwO1xuICB9XG59XG4ubmV4dC1zbGlkZXtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXNpemU6IDA7XG4gIGhlaWdodDogNTBweDtcbiAgd2lkdGg6IDMwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3V0bGluZTogMDtcbiAgJjphZnRlcntcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdmVyZGU7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDFweDtcbiAgICB3aWR0aDogMzBweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDBkZWcpO1xuICAgIHRvcDogMTVweDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDEwO1xuICB9XG4gICY6YmVmb3Jle1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR2ZXJkZTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMXB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDBkZWcpO1xuICAgIGJvdHRvbTogMTVweDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDEwO1xuICB9XG59XG5cbi5vd2wtc3RhZ2V7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4ub3dsLWl0ZW17XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXg6IDEgMCBhdXRvO1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG4uY29udGFjdHtcbiAgbWFyZ2luOiAzZW0gMCAxMGVtIDA7XG4gIC53cmFwcGVye1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbiAgLmhlYWRpbmctM3tcbiAgICBjb2xvcjogJHZlcmRlO1xuICAgIGZvbnQtc2l6ZTogMi41ZW07XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBtYXJnaW46IDAgMCAwIDA7XG4gIH1cbiAgLmxlZnR7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBwYWRkaW5nOiAwIDEwZW0gMCAwO1xuICAgIHdpZHRoOiBzcGFuKDUgb2YgMTIgc2V0LWd1dHRlcnMgMCk7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRwaG9uZSl7XG4gICAgICBmbG9hdDogaW5oZXJpdDtcbiAgICAgIG1hcmdpbjogMCAwIDJlbSAwO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgICAuYmlne1xuICAgICAgZm9udC1zaXplOiAxLjE1ZW07XG4gICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICB9XG4gICAgLnNtYWxse1xuICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICB9XG4gICAgdWx7XG4gICAgICBtYXJnaW46IDNlbSAwIDAgMDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBsaXtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBpbWd7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgIH1cbiAgICAgICAgc3BhbntcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgfVxuICAgICAgICBhe1xuICAgICAgICAgIGNvbG9yOiAjMDAwMDAwO1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgfVxuICAucmlnaHR7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHdpZHRoOiBzcGFuKDcgb2YgMTIgc2V0LWd1dHRlcnMgMCk7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRwaG9uZSl7XG4gICAgICBmbG9hdDogaW5oZXJpdDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuICAuZm9ybXtcbiAgICAuZWxlbWVudHtcbiAgICAgIG1hcmdpbjogMCAwIDFlbSAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIC5oYWxme1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBndXR0ZXIoMTIpO1xuICAgICAgICB3aWR0aDogc3Bhbig2IG9mIDEyKTtcbiAgICAgICAgJi0tYWx0ZXJ7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkcGhvbmUpe1xuICAgICAgICAgIG1hcmdpbjogMCAwIDFlbSAwO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGxhYmVse1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgbWFyZ2luOiAwIDAgMC41ZW0gMDtcbiAgICB9XG4gICAgaW5wdXRbdHlwZT1cInRleHRcIl17XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBoZWlnaHQ6IDM1cHg7XG4gICAgICBvdXRsaW5lOiAwO1xuICAgICAgcGFkZGluZzogMCAxZW07XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgdGV4dGFyZWF7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBoZWlnaHQ6IDE4MHB4O1xuICAgICAgcGFkZGluZzogMWVtO1xuICAgICAgb3V0bGluZTogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgICBpbnB1dFt0eXBlPVwic3VibWl0XCJde1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR2ZXJkZTtcbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgICAgIG1hcmdpbjogMWVtIDAgMCAwO1xuICAgICAgcGFkZGluZzogMWVtIDJlbTtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuICB9XG59XG5cbi5tZXNzYWdlLXN1Y2Nlc3N7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi5tZXNzYWdlLWVycm9ye1xuICBkaXNwbGF5OiBub25lO1xuICBsaW5lLWhlaWdodDogMS41O1xufSIsIi8vLyBHcmlkIE1hdGggRW5naW5lXG4vLy8gPT09PT09PT09PT09PT09PVxuLy8vIFRoZSBgc3VgIGZ1bmN0aW9ucyBnaXZlIHlvdSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBtYXRoIGxheWVyLFxuLy8vIHdpdGhvdXQgYW55IHN5bnRheC1zdWdhciBsaWtlIHNob3J0aGFuZCBwYXJzaW5nLCBhbmQgbm9ybWFsaXphdGlvbi5cbi8vLyBJZiB5b3UgcHJlZmVyIG5hbWVkIGFyZ3VtZW50cywgYW5kIHN0cmlwcGVkLWRvd24gc3ludGF4LFxuLy8vIHlvdSBjYW4gdXNlIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseSBpbiB5b3VyIGNvZGUg4oCTXG4vLy8gcmVwbGFjaW5nIGBzcGFuYCwgYGd1dHRlcmAsIGFuZCBgc2xpY2VgLlxuLy8vXG4vLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBhbHNvIHVzZWZ1bFxuLy8vIGZvciBidWlsZGluZyBtaXhpbnMgb3Igb3RoZXIgZXh0ZW5zaW9ucyB0byBTdXN5LlxuLy8vIEFwcGx5IHRoZSBTdXN5IHN5bnRheCB0byBuZXcgbWl4aW5zIGFuZCBmdW5jdGlvbnMsXG4vLy8gdXNpbmcgb3VyIFwiUGx1Z2luIEhlbHBlcnNcIixcbi8vLyBvciB3cml0ZSB5b3VyIG93biBzeW50YXggYW5kIHBhc3MgdGhlIG5vcm1hbGl6ZWQgcmVzdWx0cyBhbG9uZ1xuLy8vIHRvIGBzdWAgZm9yIGNvbXBpbGF0aW9uLlxuLy8vXG4vLy8gQGdyb3VwIHN1LW1hdGhcbi8vL1xuLy8vIEBzZWUgc3Utc3BhblxuLy8vIEBzZWUgc3UtZ3V0dGVyXG4vLy8gQHNlZSBzdS1zbGljZVxuLy8vIEBpZ25vcmUgX3N1LXN1bVxuLy8vIEBpZ25vcmUgX3N1LWNhbGMtc3BhblxuLy8vIEBpZ25vcmUgX3N1LWNhbGMtc3VtXG4vLy8gQGlnbm9yZSBfc3UtbmVlZHMtY2FsYy1vdXRwdXRcblxuXG5cbi8vIFN1IFNwYW5cbi8vIC0tLS0tLS1cbi8vLyBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIGEgQ1NTLXJlYWR5IHNwYW4gd2lkdGgsXG4vLy8gYmFzZWQgb24gbm9ybWFsaXplZCBzcGFuIGFuZCBjb250ZXh0IGRhdGEg4oCTXG4vLy8gYSBsb3ctbGV2ZWwgdmVyc2lvbiBvZiBgc3VzeS1zcGFuYCxcbi8vLyB3aXRoIGFsbCBvZiB0aGUgbG9naWMgYW5kIG5vbmUgb2YgdGhlIHN5bnRheCBzdWdhci5cbi8vL1xuLy8vIC0gR3JpZHMgZGVmaW5lZCB3aXRoIHVuaXRsZXNzIG51bWJlcnMgd2lsbCByZXR1cm4gYCVgIHZhbHVlcy5cbi8vLyAtIEdyaWRzIGRlZmluZWQgd2l0aCBjb21wYXJhYmxlIHVuaXRzXG4vLy8gICB3aWxsIHJldHVybiBhIHZhbHVlIGluIHRoZSB1bml0cyBwcm92aWRlZC5cbi8vLyAtIEdyaWRzIGRlZmluZWQgd2l0aCBhIG1peCBvZiB1bml0cyxcbi8vLyAgIG9yIGEgY29tYmluYXRpb24gb2YgdW50aWxlc3MgbnVtYmVycyBhbmQgdW5pdC1sZW5ndGhzLFxuLy8vICAgd2lsbCByZXR1cm4gYSBgY2FsYygpYCBzdHJpbmcuXG4vLy9cbi8vLyBAZ3JvdXAgc3UtbWF0aFxuLy8vIEBzZWUgc3VzeS1zcGFuXG4vLy9cbi8vLyBAcGFyYW0ge251bWJlciB8IGxpc3R9ICRzcGFuIC1cbi8vLyAgIE51bWJlciBvciBsaXN0IG9mIGdyaWQgY29sdW1ucyB0byBzcGFuXG4vLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtXG4vLy8gICBMaXN0IG9mIGNvbHVtbnMgYXZhaWxhYmxlXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRndXR0ZXJzIC1cbi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyIGluIGNvbHVtbi1jb21wYXJhYmxlIHVuaXRzXG4vLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkc3ByZWFkIC1cbi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsXG4vLy8gICByZWxhdGl2ZSB0byBgc3BhbmAgY291bnRcbi8vLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRjb250YWluZXItc3ByZWFkIFskc3ByZWFkXSAtXG4vLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLFxuLy8vICAgcmVsYXRpdmUgdG8gYGNvbHVtbnNgIGNvdW50XG4vLy8gQHBhcmFtIHtpbnRlZ2VyfSAkbG9jYXRpb24gWzFdIC1cbi8vLyAgIE9wdGlvbmFsIHBvc2l0aW9uIG9mIHN1Yi1zcGFuIGFtb25nIGZ1bGwgc2V0IG9mIGNvbHVtbnNcbi8vL1xuLy8vIEByZXR1cm4ge2xlbmd0aH0gLVxuLy8vICAgUmVsYXRpdmUgb3Igc3RhdGljIGxlbmd0aCBvZiBhIHNwYW4gb24gdGhlIGdyaWRcbkBmdW5jdGlvbiBzdS1zcGFuKFxuICAkc3BhbixcbiAgJGNvbHVtbnMsXG4gICRndXR0ZXJzLFxuICAkc3ByZWFkLFxuICAkY29udGFpbmVyLXNwcmVhZDogJHNwcmVhZCxcbiAgJGxvY2F0aW9uOiAxXG4pIHtcbiAgJHNwYW46IHN1LXZhbGlkLXNwYW4oJHNwYW4pO1xuICAkY29sdW1uczogc3UtdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwcmVhZDogc3UtdmFsaWQtc3ByZWFkKCRzcHJlYWQpO1xuXG4gIEBpZiAodHlwZS1vZigkc3BhbikgPT0gJ251bWJlcicpIHtcbiAgICBAaWYgKG5vdCB1bml0bGVzcygkc3BhbikpIHtcbiAgICAgIEByZXR1cm4gJHNwYW47XG4gICAgfVxuXG4gICAgJGxvY2F0aW9uOiBzdS12YWxpZC1sb2NhdGlvbigkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG4gICAgJHNwYW46IHN1LXNsaWNlKCRzcGFuLCAkY29sdW1ucywgJGxvY2F0aW9uLCAkdmFsaWRhdGU6IGZhbHNlKTtcbiAgfVxuXG4gIEBpZiBfc3UtbmVlZHMtY2FsYy1vdXRwdXQoJHNwYW4sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCwgbm90ICd2YWxpZGF0ZScpIHtcbiAgICBAcmV0dXJuIF9zdS1jYWxjLXNwYW4oJHNwYW4sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCwgJGNvbnRhaW5lci1zcHJlYWQsIG5vdCAndmFsaWRhdGUnKTtcbiAgfVxuXG4gICRzcGFuLXdpZHRoOiBfc3Utc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCwgJHZhbGlkYXRlOiBmYWxzZSk7XG5cbiAgQGlmIHVuaXRsZXNzKCRzcGFuLXdpZHRoKSB7XG4gICAgJGNvbnRhaW5lci1zcHJlYWQ6IHN1LXZhbGlkLXNwcmVhZCgkY29udGFpbmVyLXNwcmVhZCk7XG4gICAgJGNvbnRhaW5lcjogX3N1LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsICRjb250YWluZXItc3ByZWFkLCAkdmFsaWRhdGU6IGZhbHNlKTtcbiAgICBAcmV0dXJuIHBlcmNlbnRhZ2UoJHNwYW4td2lkdGggLyAkY29udGFpbmVyKTtcbiAgfVxuXG4gIEByZXR1cm4gJHNwYW4td2lkdGg7XG59XG5cblxuXG4vLyBTdSBHdXR0ZXJcbi8vIC0tLS0tLS0tLVxuLy8vIENhbGN1bGF0ZXMgYW5kIHJldHVybnMgYSBDU1MtcmVhZHkgZ3V0dGVyIHdpZHRoLFxuLy8vIGJhc2VkIG9uIG5vcm1hbGl6ZWQgZ3JpZCBkYXRhIOKAk1xuLy8vIGEgbG93LWxldmVsIHZlcnNpb24gb2YgYHN1c3ktZ3V0dGVyYCxcbi8vLyB3aXRoIGFsbCBvZiB0aGUgbG9naWMgYW5kIG5vbmUgb2YgdGhlIHN5bnRheCBzdWdhci5cbi8vL1xuLy8vIC0gR3JpZHMgZGVmaW5lZCB3aXRoIHVuaXRsZXNzIG51bWJlcnMgd2lsbCByZXR1cm4gYCVgIHZhbHVlcy5cbi8vLyAtIEdyaWRzIGRlZmluZWQgd2l0aCBjb21wYXJhYmxlIHVuaXRzXG4vLy8gICB3aWxsIHJldHVybiBhIHZhbHVlIGluIHRoZSB1bml0cyBwcm92aWRlZC5cbi8vLyAtIEdyaWRzIGRlZmluZWQgd2l0aCBhIG1peCBvZiB1bml0cyxcbi8vLyAgIG9yIGEgY29tYmluYXRpb24gb2YgdW50aWxlc3MgbnVtYmVycyBhbmQgdW5pdC1sZW5ndGhzLFxuLy8vICAgd2lsbCByZXR1cm4gYSBgY2FsYygpYCBzdHJpbmcuXG4vLy9cbi8vLyBAZ3JvdXAgc3UtbWF0aFxuLy8vIEBzZWUgc3VzeS1ndXR0ZXJcbi8vL1xuLy8vIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLVxuLy8vICAgTGlzdCBvZiBjb2x1bW5zIGluIHRoZSBncmlkXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRndXR0ZXJzIC1cbi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyIGluIGNvbHVtbi1jb21wYXJhYmxlIHVuaXRzXG4vLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkY29udGFpbmVyLXNwcmVhZCAtXG4vLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLFxuLy8vICAgcmVsYXRpdmUgdG8gYGNvbHVtbnNgIGNvdW50XG4vLy9cbi8vLyBAcmV0dXJuIHtsZW5ndGh9IC1cbi8vLyAgIFJlbGF0aXZlIG9yIHN0YXRpYyBsZW5ndGggb2Ygb25lIGd1dHRlciBpbiBhIGdyaWRcbkBmdW5jdGlvbiBzdS1ndXR0ZXIoXG4gICRjb2x1bW5zLFxuICAkZ3V0dGVycyxcbiAgJGNvbnRhaW5lci1zcHJlYWRcbikge1xuICBAaWYgKHR5cGUtb2YoJGd1dHRlcnMpID09ICdudW1iZXInKSB7XG4gICAgQGlmICgkZ3V0dGVycyA9PSAwKSBvciAobm90IHVuaXRsZXNzKCRndXR0ZXJzKSkge1xuICAgICAgQHJldHVybiAkZ3V0dGVycztcbiAgICB9XG4gIH1cblxuICBAaWYgX3N1LW5lZWRzLWNhbGMtb3V0cHV0KCRndXR0ZXJzLCAkY29sdW1ucywgJGd1dHRlcnMsIC0xLCBub3QgJ3ZhbGlkYXRlJykge1xuICAgIEByZXR1cm4gX3N1LWNhbGMtc3BhbigkZ3V0dGVycywgJGNvbHVtbnMsICRndXR0ZXJzLCAtMSwgJGNvbnRhaW5lci1zcHJlYWQsIG5vdCAndmFsaWRhdGUnKTtcbiAgfVxuXG4gICRjb250YWluZXI6IF9zdS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCAkY29udGFpbmVyLXNwcmVhZCk7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkZ3V0dGVycyAvICRjb250YWluZXIpO1xufVxuXG5cblxuLy8gU3UgU2xpY2Vcbi8vIC0tLS0tLS0tXG4vLy8gUmV0dXJucyBhIGxpc3Qgb2YgY29sdW1uc1xuLy8vIGJhc2VkIG9uIGEgZ2l2ZW4gc3Bhbi9sb2NhdGlvbiBzbGljZSBvZiB0aGUgZ3JpZCDigJNcbi8vLyBhIGxvdy1sZXZlbCB2ZXJzaW9uIG9mIGBzdXN5LXNsaWNlYCxcbi8vLyB3aXRoIGFsbCBvZiB0aGUgbG9naWMgYW5kIG5vbmUgb2YgdGhlIHN5bnRheCBzdWdhci5cbi8vL1xuLy8vIEBncm91cCBzdS1tYXRoXG4vLy8gQHNlZSBzdXN5LXNsaWNlXG4vLy9cbi8vLyBAcGFyYW0ge251bWJlcn0gJHNwYW4gLVxuLy8vICAgTnVtYmVyIG9mIGdyaWQgY29sdW1ucyB0byBzcGFuXG4vLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtXG4vLy8gICBMaXN0IG9mIGNvbHVtbnMgaW4gdGhlIGdyaWRcbi8vLyBAcGFyYW0ge251bWJlcn0gJGxvY2F0aW9uIFsxXSAtXG4vLy8gICBTdGFydGluZyBpbmRleCBvZiBhIHNwYW4gaW4gdGhlIGxpc3Qgb2YgY29sdW1uc1xuLy8vIEBwYXJhbSB7Ym9vbH0gJHZhbGlkYXRlIFt0cnVlXSAtXG4vLy8gICBDaGVjayB0aGF0IGFyZ3VtZW50cyBhcmUgdmFsaWQgYmVmb3JlIHByb2NlZWRpbmdcbi8vL1xuLy8vIEByZXR1cm4ge2xpc3R9IC1cbi8vLyAgIFN1YnNldCBsaXN0IG9mIGdyaWQgY29sdW1ucywgYmFzZWQgb24gc3BhbiBhbmQgbG9jYXRpb25cbkBmdW5jdGlvbiBzdS1zbGljZShcbiAgJHNwYW4sXG4gICRjb2x1bW5zLFxuICAkbG9jYXRpb246IDEsXG4gICR2YWxpZGF0ZTogdHJ1ZVxuKSB7XG4gIEBpZiAkdmFsaWRhdGUge1xuICAgICRjb2x1bW5zOiBzdS12YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgICAkbG9jYXRpb246IHN1LXZhbGlkLWxvY2F0aW9uKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbiAgfVxuXG4gICRmbG9vcjogZmxvb3IoJHNwYW4pO1xuICAkc3ViLWNvbHVtbnM6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRmbG9vcikge1xuICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICB9XG5cbiAgQGlmICRmbG9vciAhPSAkc3BhbiB7XG4gICAgJHJlbWFpbmRlcjogJHNwYW4gLSAkZmxvb3I7XG4gICAgJGNvbHVtbjogJGxvY2F0aW9uICsgJGZsb29yO1xuICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkY29sdW1uKSAqICRyZW1haW5kZXIpO1xuICB9XG5cbiAgQHJldHVybiAkc3ViLWNvbHVtbnM7XG59XG5cblxuXG4vLyBTdSBTdW1cbi8vIC0tLS0tLVxuLy8vIEdldCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dC5cbi8vL1xuLy8vIEBncm91cCBzdS1tYXRoXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge2xpc3R9ICRjb2x1bW5zIC1cbi8vLyAgIExpc3Qgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZFxuLy8vIEBwYXJhbSB7bnVtYmVyfSAkZ3V0dGVycyAtXG4vLy8gICBXaWR0aCBvZiBhIGd1dHRlciBpbiBjb2x1bW4tY29tcGFyYWJsZSB1bml0c1xuLy8vIEBwYXJhbSB7MCB8IDEgfCAtMX0gJHNwcmVhZCAtXG4vLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLFxuLy8vICAgcmVsYXRpdmUgdG8gYGNvbHVtbnNgIGNvdW50XG4vLy8gQHBhcmFtIHtib29sfSAkdmFsaWRhdGUgW3RydWVdIC1cbi8vLyAgIENoZWNrIHRoYXQgYXJndW1lbnRzIGFyZSB2YWxpZCBiZWZvcmUgcHJvY2VlZGluZ1xuLy8vXG4vLy8gQHJldHVybiB7bnVtYmVyfSAtXG4vLy8gICBUb3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgZ3JpZFxuQGZ1bmN0aW9uIF9zdS1zdW0oXG4gICRjb2x1bW5zLFxuICAkZ3V0dGVycyxcbiAgJHNwcmVhZCxcbiAgJHZhbGlkYXRlOiB0cnVlXG4pIHtcbiAgQGlmICR2YWxpZGF0ZSB7XG4gICAgJGNvbHVtbnM6IHN1LXZhbGlkLXNwYW4oJGNvbHVtbnMpO1xuICAgICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgICAkc3ByZWFkOiBzdS12YWxpZC1zcHJlYWQoJHNwcmVhZCk7XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgY29sdW1uLXN1bVxuICAkY29sdW1uLXN1bTogMDtcbiAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgJGNvbHVtbi1zdW06ICRjb2x1bW4tc3VtICsgJGNvbHVtbjtcbiAgfVxuXG4gICRndXR0ZXItc3VtOiAoY2VpbChsZW5ndGgoJGNvbHVtbnMpKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICR0b3RhbDogaWYoKCRndXR0ZXItc3VtID4gMCksICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW0sICRjb2x1bW4tc3VtKTtcblxuICBAcmV0dXJuICR0b3RhbDtcbn1cblxuXG5cbi8vIFN1IENhbGNcbi8vIC0tLS0tLS1cbi8vLyBSZXR1cm4gYSB1c2FibGUgc3BhbiB3aWR0aCBhcyBhIGBjYWxjKClgIGZ1bmN0aW9uLFxuLy8vIGluIG9yZGVyIHRvIGNyZWF0ZSBtaXhlZC11bml0IGdyaWRzLlxuLy8vXG4vLy8gQGdyb3VwIHN1LW1hdGhcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7bnVtYmVyIHwgbGlzdH0gJHNwYW4gLVxuLy8vICAgUHJlLXNsaWNlZCBsaXN0IG9mIGdyaWQgY29sdW1ucyB0byBzcGFuXG4vLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtXG4vLy8gICBMaXN0IG9mIGNvbHVtbnMgYXZhaWxhYmxlXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRndXR0ZXJzIC1cbi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyIGluIGNvbHVtbi1jb21wYXJhYmxlIHVuaXRzXG4vLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkc3ByZWFkIC1cbi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsXG4vLy8gICByZWxhdGl2ZSB0byBgc3BhbmAgY291bnRcbi8vLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRjb250YWluZXItc3ByZWFkIFskc3ByZWFkXSAtXG4vLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLFxuLy8vICAgcmVsYXRpdmUgdG8gYGNvbHVtbnNgIGNvdW50XG4vLy8gQHBhcmFtIHtib29sfSAkdmFsaWRhdGUgW3RydWVdIC1cbi8vLyAgIENoZWNrIHRoYXQgYXJndW1lbnRzIGFyZSB2YWxpZCBiZWZvcmUgcHJvY2VlZGluZ1xuLy8vXG4vLy8gQHJldHVybiB7bGVuZ3RofSAtXG4vLy8gICBSZWxhdGl2ZSBvciBzdGF0aWMgbGVuZ3RoIG9mIGEgc3BhbiBvbiB0aGUgZ3JpZFxuQGZ1bmN0aW9uIF9zdS1jYWxjLXNwYW4oXG4gICRzcGFuLFxuICAkY29sdW1ucyxcbiAgJGd1dHRlcnMsXG4gICRzcHJlYWQsXG4gICRjb250YWluZXItc3ByZWFkOiAkc3ByZWFkLFxuICAkdmFsaWRhdGU6IHRydWVcbikge1xuICBAaWYgJHZhbGlkYXRlIHtcbiAgICAkc3Bhbjogc3UtdmFsaWQtc3Bhbigkc3Bhbik7XG4gICAgJGNvbHVtbnM6IHN1LXZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAgICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgICAkc3ByZWFkOiBzdS12YWxpZC1zcHJlYWQoJHNwcmVhZCk7XG4gICAgJGNvbnRhaW5lci1zcHJlYWQ6IHN1LXZhbGlkLXNwcmVhZCgkY29udGFpbmVyLXNwcmVhZCk7XG4gIH1cblxuICAvLyBTcGFuIGFuZCBjb250ZXh0XG4gICRzcGFuOiBfc3UtY2FsYy1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkLCBub3QgJ3ZhbGlkYXRlJyk7XG4gICRjb250ZXh0OiBfc3UtY2FsYy1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCAkY29udGFpbmVyLXNwcmVhZCwgbm90ICd2YWxpZGF0ZScpO1xuXG4gIC8vIEZpeGVkIGFuZCBmbHVpZFxuICAkZml4ZWQtc3BhbjogbWFwLWdldCgkc3BhbiwgJ2ZpeGVkJyk7XG4gICRmbHVpZC1zcGFuOiBtYXAtZ2V0KCRzcGFuLCAnZmx1aWQnKTtcbiAgJGZpeGVkLWNvbnRleHQ6IG1hcC1nZXQoJGNvbnRleHQsICdmaXhlZCcpO1xuICAkZmx1aWQtY29udGV4dDogbWFwLWdldCgkY29udGV4dCwgJ2ZsdWlkJyk7XG5cbiAgJGNhbGM6ICcjeyRmaXhlZC1zcGFufSc7XG4gICRmbHVpZC1jYWxjOiAnKDEwMCUgLSAjeyRmaXhlZC1jb250ZXh0fSknO1xuXG4gIC8vIEZsdWlkLXZhbHVlc1xuICBAaWYgKG5vdCAkZmx1aWQtc3Bhbikge1xuICAgICRmbHVpZC1jYWxjOiBudWxsO1xuICB9IEBlbHNlIGlmICgkZmx1aWQtc3BhbiAhPSAkZmx1aWQtY29udGV4dCkge1xuICAgICRmbHVpZC1zcGFuOiAnKiAjeyRmbHVpZC1zcGFufSc7XG4gICAgJGZsdWlkLWNvbnRleHQ6IGlmKCRmbHVpZC1jb250ZXh0LCAnLyAjeyRmbHVpZC1jb250ZXh0fScsICcnKTtcbiAgICAkZmx1aWQtY2FsYzogJygjeyRmbHVpZC1jYWxjICRmbHVpZC1jb250ZXh0ICRmbHVpZC1zcGFufSknO1xuICB9XG5cbiAgQGlmICRmbHVpZC1jYWxjIHtcbiAgICAkY2FsYzogaWYoKCRjYWxjICE9ICcnKSwgJyN7JGNhbGN9ICsgJywgJycpO1xuICAgICRjYWxjOiAnI3skY2FsYyArICRmbHVpZC1jYWxjfSc7XG4gIH1cblxuICBAcmV0dXJuIGNhbGMoI3t1bnF1b3RlKCRjYWxjKX0pO1xufVxuXG5cblxuLy8gU3UgQ2FsYy1TdW1cbi8vIC0tLS0tLS0tLS0tXG4vLy8gR2V0IHRoZSB0b3RhbCBzdW0gb2YgZml4ZWQgYW5kIGZsdWlkIGNvbHVtbi11bml0c1xuLy8vIGZvciBjcmVhdGluZyBhIG1peGVkLXVuaXQgbGF5b3V0IHdpdGggYGNhbGMoKWAgdmFsdWVzLlxuLy8vXG4vLy8gQGdyb3VwIHN1LW1hdGhcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLVxuLy8vICAgTGlzdCBvZiBjb2x1bW5zIGF2YWlsYWJsZVxuLy8vIEBwYXJhbSB7bnVtYmVyfSAkZ3V0dGVycyAtXG4vLy8gICBXaWR0aCBvZiBhIGd1dHRlciBpbiBjb2x1bW4tY29tcGFyYWJsZSB1bml0c1xuLy8vIEBwYXJhbSB7MCB8IDEgfCAtMX0gJHNwcmVhZCAtXG4vLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLFxuLy8vICAgcmVsYXRpdmUgdG8gYHNwYW5gIGNvdW50XG4vLy8gQHBhcmFtIHtib29sfSAkdmFsaWRhdGUgW3RydWVdIC1cbi8vLyAgIENoZWNrIHRoYXQgYXJndW1lbnRzIGFyZSB2YWxpZCBiZWZvcmUgcHJvY2VlZGluZ1xuLy8vXG4vLy8gQHJldHVybiB7bWFwfSAtXG4vLy8gICBNYXAgd2l0aCBgZml4ZWRgIGFuZCBgZmx1aWRgIGtleXNcbi8vLyAgIGNvbnRhaW5pbmcgdGhlIHByb3BlciBtYXRoIGFzIHN0cmluZ3NcbkBmdW5jdGlvbiBfc3UtY2FsYy1zdW0oXG4gICRjb2x1bW5zLFxuICAkZ3V0dGVycyxcbiAgJHNwcmVhZCxcbiAgJHZhbGlkYXRlOiB0cnVlXG4pIHtcbiAgQGlmICR2YWxpZGF0ZSB7XG4gICAgJGNvbHVtbnM6IHN1LXZhbGlkLXNwYW4oJGNvbHVtbnMpO1xuICAgICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgICAkc3ByZWFkOiBzdS12YWxpZC1zcHJlYWQoJHNwcmVhZCk7XG4gIH1cblxuICAkZmx1aWQ6IDA7XG4gICRmaXhlZDogKCk7XG4gICRjYWxjOiBudWxsO1xuXG4gIC8vIEd1dHRlcnNcbiAgJGd1dHRlcnM6ICAkZ3V0dGVycyAqIChsZW5ndGgoJGNvbHVtbnMpICsgJHNwcmVhZCk7XG5cbiAgLy8gQ29sdW1uc1xuICBAZWFjaCAkY29sIGluIGFwcGVuZCgkY29sdW1ucywgJGd1dHRlcnMpIHtcbiAgICBAaWYgdW5pdGxlc3MoJGNvbCkge1xuICAgICAgJGZsdWlkOiAkZmx1aWQgKyAkY29sO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGZpeGVkOiBfc3UtbWFwLWFkZC11bml0cygkZml4ZWQsICRjb2wpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbXBpbGUgRml4ZWQgVW5pdHNcbiAgQGVhY2ggJHVuaXQsICR0b3RhbCBpbiAkZml4ZWQge1xuICAgIEBpZiAoJHRvdGFsICE9ICgwICogJHRvdGFsKSkge1xuICAgICAgJGNhbGM6IGlmKCRjYWxjLCAnI3skY2FsY30gKyAjeyR0b3RhbH0nLCAnI3skdG90YWx9Jyk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsYyBudWxsIG9yIHN0cmluZ1xuICBAaWYgJGNhbGMge1xuICAgICRjYWxjOiBpZihzdHItaW5kZXgoJGNhbGMsICcrJyksICcoI3skY2FsY30pJywgJyN7JGNhbGN9Jyk7XG4gIH1cblxuICAvLyBGbHVpZCAwID0+IG51bGxcbiAgJGZsdWlkOiBpZigoJGZsdWlkID09IDApLCBudWxsLCAkZmx1aWQpO1xuXG5cbiAgLy8gUmV0dXJuIG1hcFxuICAkcmV0dXJuOiAoXG4gICAgJ2ZpeGVkJzogJGNhbGMsXG4gICAgJ2ZsdWlkJzogJGZsdWlkLFxuICApO1xuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG5cbi8vIE5lZWRzIENhbGNcbi8vIC0tLS0tLS0tLS1cbi8vLyBDaGVjayBpZiBgY2FsYygpYCB3aWxsIGJlIG5lZWRlZCBpbiBkZWZpbmluZyBhIHNwYW4sXG4vLy8gaWYgdGhlIG5lY2Vzc2FyeSB1bml0cyBpbiBhIGdyaWQgYXJlIG5vdCBjb21wYXJhYmxlLlxuLy8vXG4vLy8gQGdyb3VwIHN1LW1hdGhcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7bGlzdH0gJHNwYW4gLVxuLy8vICAgU2xpY2Ugb2YgY29sdW1ucyB0byBzcGFuXG4vLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtXG4vLy8gICBMaXN0IG9mIGF2YWlsYWJsZSBjb2x1bW5zIGluIHRoZSBncmlkXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRndXR0ZXJzIC1cbi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyXG4vLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkc3ByZWFkIC1cbi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsXG4vLy8gICByZWxhdGl2ZSB0byBgc3BhbmAgY291bnRcbi8vLyBAcGFyYW0ge2Jvb2x9ICR2YWxpZGF0ZSBbdHJ1ZV0gLVxuLy8vICAgQ2hlY2sgdGhhdCBhcmd1bWVudHMgYXJlIHZhbGlkIGJlZm9yZSBwcm9jZWVkaW5nXG4vLy9cbi8vLyBAcmV0dXJuIHtib29sfSAtXG4vLy8gICBgVHJ1ZWAgd2hlbiB1bml0cyBkbyBub3QgbWF0Y2gsIGFuZCBgY2FsYygpYCB3aWxsIGJlIHJlcXVpcmVkXG5AZnVuY3Rpb24gX3N1LW5lZWRzLWNhbGMtb3V0cHV0KFxuICAkc3BhbixcbiAgJGNvbHVtbnMsXG4gICRndXR0ZXJzLFxuICAkc3ByZWFkLFxuICAkdmFsaWRhdGU6IHRydWVcbikge1xuICBAaWYgJHZhbGlkYXRlIHtcbiAgICAkc3Bhbjogc3UtdmFsaWQtc3Bhbigkc3Bhbik7XG4gICAgJGNvbHVtbnM6IHN1LXZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAgICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgfVxuXG4gICRoYXMtZ3V0dGVyOiBpZigobGVuZ3RoKCRzcGFuKSA+IDEpIG9yICgkc3ByZWFkID49IDApLCB0cnVlLCBmYWxzZSk7XG4gICRjaGVjazogaWYoJGhhcy1ndXR0ZXIsIGFwcGVuZCgkc3BhbiwgJGd1dHRlcnMpLCAkc3Bhbik7XG4gICRzYWZlLXNwYW46IF9zdS1pcy1jb21wYXJhYmxlKCRjaGVjay4uLik7XG5cbiAgQGlmICgkc2FmZS1zcGFuID09ICdzdGF0aWMnKSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfSBAZWxzZSBpZiAobm90ICRzYWZlLXNwYW4pIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cblxuICAkc2FmZS1mbHVpZDogX3N1LWlzLWNvbXBhcmFibGUoJGd1dHRlcnMsICRjb2x1bW5zLi4uKTtcblxuICBAcmV0dXJuIG5vdCAkc2FmZS1mbHVpZDtcbn1cbiJdfQ== */
