/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./data/www/templates/asgard/eshop.setos.cz/sass/home.scss ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************/
/**
 * Retrieves the next smaller breakpoint from the given breakpoint.
 *
 * @param {String} $breakpoint - The breakpoint for which to find the next smaller breakpoint.
 * @return {String|null} - The next smaller breakpoint, or null if no smaller breakpoint is available.
 */
/**
 * Retrieves the next larger breakpoint from the $grid-breakpoints map.
 *
 * @function get-bigger-breakpoint
 * @param {String} $breakpoint - The current breakpoint to find the next larger one for.
 * @return {String | null} - The next larger breakpoint or null if the current breakpoint is the largest or not found.
 */
/**
 * Reset iSpace custom form input styles to be able to design special inputs more easily
 */
/**
 * Styles to hide the scrollbar but still allow scrolling
 */
/**
 * Special version of the card-box() layout for the B2B shop
 */
/**
 * card-box list layout for the B2B shop
 */
.home-intro {
  background-color: #f3f3f3;
  color: #000;
  text-align: center;
}
.home-intro__title {
  font-weight: 700;
}
.home-intro__title + .home-intro__text {
  margin-top: 2em;
  margin-bottom: 1em;
}

.home__promos {
  padding-block-end: 6rem;
}
.home__promos--grid {
  display: grid;
  gap: 1rem;
}
.home__promos--grid .embla {
  order: -1;
}
.home__promos--grid .embla__button {
  display: none;
}
@media (min-width: 992px) {
  .home__promos--grid .embla__button {
    display: block;
  }
}
.home__promos--grid .promo {
  border-radius: 1rem;
  overflow: hidden;
  display: none;
}
@media (min-width: 768px) {
  .home__promos--grid .promo {
    display: block;
  }
}
.home__promos--grid .promo--img img {
  height: 100%;
  width: 100%;
  object-fit: cover;
}
@media (min-width: 768px) {
  .home__promos--grid {
    grid-template-columns: 60% 38%;
    grid-template-rows: repeat(2, 1fr);
    gap: clamp(1rem, 2vw, 3rem);
    margin-block-start: clamp(1rem, 2vw, 3rem);
  }
  .home__promos--grid .embla {
    grid-column: 1;
    grid-row: 1/span 2;
  }
  .home__promos--grid .embla:first-child:last-child {
    grid-column: 1/span 2;
  }
  .home__promos--grid .embla__track, .home__promos--grid .embla__list, .home__promos--grid .embla__slide {
    height: 100%;
  }
  .home__promos--grid .embla .b-image a,
  .home__promos--grid .embla .b-image picture {
    height: 100%;
  }
  .home__promos--grid .embla .b-image img {
    height: 100%;
    width: 100%;
    object-fit: cover;
  }
}
.home-intro {
  background: none;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmVzaG9wLnNldG9zLmN6LmFzZ2FyZC5ob21lcGFnZS41ZmM0ODZjYzlkOGI0MGViNzZlYS5jc3MiLCJtYXBwaW5ncyI6Ijs7O0FBR0E7Ozs7O0VBQUE7QUFpQkE7Ozs7OztFQUFBO0FDOFBBOztFQUFBO0FBK0hBOztFQUFBO0FBZUE7O0VBQUE7QUFtR0E7O0VBQUE7QUNqZ0JBO0VBQ0k7RUFDQTtFQUNBO0FDd0JKO0FEdEJJO0VBQ0k7QUN3QlI7QURyQkk7RUFDSTtFQUNBO0FDdUJSOztBQTlCSTtFQUNJO0FBaUNSO0FBL0JRO0VBQ0k7RUFDQTtBQWlDWjtBQS9CWTtFQUNJO0FBaUNoQjtBQS9CZ0I7RUFDSTtBQWlDcEI7QUEvQm9CO0VBSEo7SUFJUTtFQWtDdEI7QUFDRjtBQTlCWTtFQUNJO0VBQ0E7RUFDQTtBQWdDaEI7QUNHSTtFRHRDUTtJQU1RO0VBaUNsQjtBQUNGO0FBOUJvQjtFQUNJO0VBQ0E7RUFDQTtBQWdDeEI7QUNQSTtFRHRESTtJQW1DUTtJQUNBO0lBQ0E7SUFDQTtFQThCZDtFQTVCYztJQUNJO0lBQ0E7RUE4QmxCO0VBNUJrQjtJQUNJO0VBOEJ0QjtFQTNCa0I7SUFHSTtFQTJCdEI7RUF2QnNCOztJQUVJO0VBeUIxQjtFQXRCc0I7SUFDSTtJQUNBO0lBQ0E7RUF3QjFCO0FBQ0Y7QUFqQkk7RUFDSTtBQW1CUixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2hvcGlvLy4vZGF0YS93d3cvdGVtcGxhdGVzL2FzZ2FyZC9lc2hvcC5zZXRvcy5jei9zYXNzL2FwcC9hYnN0cmFjdHMvX2Zucy5zY3NzIiwid2VicGFjazovL3Nob3Bpby8uL2RhdGEvd3d3L3RlbXBsYXRlcy9hc2dhcmQvZXNob3Auc2V0b3MuY3ovc2Fzcy9hcHAvYWJzdHJhY3RzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9zaG9waW8vLi9kYXRhL3d3dy90ZW1wbGF0ZXMvYXNnYXJkL2RlZmF1bHQvc2Fzcy9ob21lL19ob21lLWludHJvLnNjc3MiLCJ3ZWJwYWNrOi8vc2hvcGlvLy4vZGF0YS93d3cvdGVtcGxhdGVzL2FzZ2FyZC9lc2hvcC5zZXRvcy5jei9zYXNzL2hvbWUuc2NzcyIsIndlYnBhY2s6Ly9zaG9waW8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bGlzdCc7XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuZXh0IHNtYWxsZXIgYnJlYWtwb2ludCBmcm9tIHRoZSBnaXZlbiBicmVha3BvaW50LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCAtIFRoZSBicmVha3BvaW50IGZvciB3aGljaCB0byBmaW5kIHRoZSBuZXh0IHNtYWxsZXIgYnJlYWtwb2ludC5cbiAqIEByZXR1cm4ge1N0cmluZ3xudWxsfSAtIFRoZSBuZXh0IHNtYWxsZXIgYnJlYWtwb2ludCwgb3IgbnVsbCBpZiBubyBzbWFsbGVyIGJyZWFrcG9pbnQgaXMgYXZhaWxhYmxlLlxuICovXG5AZnVuY3Rpb24gZ2V0LXNtYWxsZXItYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xuICAgICRrZXlzOiBtYXAua2V5cygkZ3JpZC1icmVha3BvaW50cyk7XG4gICAgJGluZGV4OiBsaXN0LmluZGV4KCRrZXlzLCAkYnJlYWtwb2ludCk7XG5cbiAgICBAaWYgbm90ICRpbmRleCBvciAkaW5kZXggPT0gMSB7XG4gICAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBAcmV0dXJuIGxpc3QubnRoKCRrZXlzLCAkaW5kZXggLSAxKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIG5leHQgbGFyZ2VyIGJyZWFrcG9pbnQgZnJvbSB0aGUgJGdyaWQtYnJlYWtwb2ludHMgbWFwLlxuICpcbiAqIEBmdW5jdGlvbiBnZXQtYmlnZ2VyLWJyZWFrcG9pbnRcbiAqIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCAtIFRoZSBjdXJyZW50IGJyZWFrcG9pbnQgdG8gZmluZCB0aGUgbmV4dCBsYXJnZXIgb25lIGZvci5cbiAqIEByZXR1cm4ge1N0cmluZyB8IG51bGx9IC0gVGhlIG5leHQgbGFyZ2VyIGJyZWFrcG9pbnQgb3IgbnVsbCBpZiB0aGUgY3VycmVudCBicmVha3BvaW50IGlzIHRoZSBsYXJnZXN0IG9yIG5vdCBmb3VuZC5cbiAqL1xuQGZ1bmN0aW9uIGdldC1sYXJnZXItYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xuICAgICRrZXlzOiBtYXAua2V5cygkZ3JpZC1icmVha3BvaW50cyk7XG4gICAgJGluZGV4OiBsaXN0LmluZGV4KCRrZXlzLCAkYnJlYWtwb2ludCk7XG5cbiAgICBAaWYgbm90ICRpbmRleCBvciAkaW5kZXggPT0gbGlzdC5sZW5ndGgoJGJyZWFrcG9pbnQpIHtcbiAgICAgICAgQHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIEByZXR1cm4gbGlzdC5udGgoJGtleXMsICRpbmRleCArIDEpO1xufVxuIiwiQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOmxpc3QnO1xuXG4vLyAqIFZpc3VhbHMgZm9yIHNtYWxsIGJsb2NrcyB3aXRoIGEgaG92ZXIgLyBmb2N1cy13aXRoaW4gZWZmZWN0IGluY2x1ZGVkXG4vLyAqIFRvIG1vZGlmeSBkZWZhdWx0IHZhbHVlcywgeW91IGNvdWxkIHVzZSBAaW5jbHVkZSBzbWFsbC1ibG9jay1jb21wb25lbnQobWFwLnNldCgkY29uZmlnLCAncmFkaXVzJywgMjBweCkpXG5AbWl4aW4gc21hbGwtYmxvY2stY29tcG9uZW50KFxuICAgICRyYWRpdXM6IDEwcHgsXG4gICAgJGJhY2tncm91bmQtc3RhcnQ6IGNvbG9yLmFkanVzdChtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktbGlnaHQpLCAkYWxwaGE6IC0xKSxcbiAgICAkYmFja2dyb3VuZC1lbmQ6IGNvbG9yLmFkanVzdChtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktbWlkKSwgJGFscGhhOiAwKSxcbiAgICAkYm94LXNoYWRvdy1zdGFydDogMCA0cHggMjBweCAwICMwMDAwMDAxNCxcbiAgICAkYm94LXNoYWRvdy1lbmQ6IDAgNHB4IDRweCAwICMwMDAwMDAxNCxcbiAgICAkdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgbGluZWFyIDAuMTVzLCBib3gtc2hhZG93IGxpbmVhciAwLjE1cydcbikge1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtc3RhcnQ7XG4gICAgYm94LXNoYWRvdzogJGJveC1zaGFkb3ctc3RhcnQ7XG4gICAgdHJhbnNpdGlvbjogI3skdHJhbnNpdGlvbn07XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtZW5kO1xuICAgICAgICBib3gtc2hhZG93OiAkYm94LXNoYWRvdy1lbmQ7XG4gICAgfVxufVxuXG5AbWl4aW4gd2lkZS1jYXJkKCRicmVha3BvaW50OiAneGwnKSB7XG4gICAgJHNtYWxsZXItYnJlYWtwb2ludDogZ2V0LWxhcmdlci1icmVha3BvaW50KCRicmVha3BvaW50KTtcblxuICAgIC5wcm9kdWN0LWNhcmQge1xuICAgICAgICAtLXRodW1ibmFpbC13aWR0aDogMjAwcHg7XG4gICAgICAgIC0tZmxhZy1mb250LXNpemU6IDEuMnJlbTtcblxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGxpZ2h0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDIwcHggMCByZ2IoMCwgMCwgMCwgMC4wNyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgICAgICAmX19pbm5lciB7XG4gICAgICAgICAgICBwYWRkaW5nOiAzcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICRzbWFsbGVyLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkc21hbGxlci1icmVha3BvaW50KSB7XG4gICAgICAgICAgICAgICAgLS10aHVtYm5haWwtd2lkdGg6IDI4MHB4O1xuICAgICAgICAgICAgICAgIC0tZmxhZy1mb250LXNpemU6IDEuNnJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgICZfX2lubmVyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tdGh1bWJuYWlsLXdpZHRoKSAxZnIgYXV0bztcbiAgICAgICAgICAgICAgICBncmlkLWF1dG8tcm93czogYXV0bztcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAyNHJlbTtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNyZW0gNHJlbSAzcmVtIDA7XG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19wcmltYXJ5LFxuICAgICAgICAgICAgJl9fc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBjb250ZW50cztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgICAgICAmLWlubmVyIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogY29udGVudHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX190aHVtYm5haWwge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB3aWR0aDogdmFyKC0tdGh1bWJuYWlsLXdpZHRoKTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMzBweDtcbiAgICAgICAgICAgICAgICBncmlkLWFyZWE6IGF1dG87XG5cbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDI0MHB4O1xuICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiAyNDBweDtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX3ZhcmlhbnRzIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMTtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogNjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9faGVhZGluZyB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDIgLyAtMTtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fcGVyZXgge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyIC8gLTE7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX3BhcmFtZXRlcnMge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyIC8gLTE7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2F2YWlsYWJpbGl0eSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDIgLyAtMTtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogNTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fcHJpY2Uge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiA2O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAgICAgICAgIC5jYXJkLXByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgICAgICAgICAgICAgICAgICAgZ2FwOiAwIDEuNnJlbTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAgICAgICAgICAgICAmX19mdWxsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgZGFyayk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmX19kaXNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgJl9fc2F2aW5nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19mbGFncyB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogLTEwcHg7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IC0xM3B4O1xuICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICAgcGxhY2Utc2VsZjogc3RhcnQgZW5kO1xuICAgICAgICAgICAgICAgIGdhcDogMC4zcmVtO1xuXG4gICAgICAgICAgICAgICAgW2NsYXNzKj0nX19pdGVtJ10ge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjIyZW0gMC42M2VtO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZmxhZy1mb250LXNpemUpO1xuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcyo9J19fdGV4dCddIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogJ3dnaHQnIDQwMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fYWRkIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMztcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogNjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICAgICAgJi1saW5rIHtcbiAgICAgICAgICAgICAgICAgICAgbWluLXdpZHRoOiAyMDVweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vICogQWRkIGludmVydGVkIGJvcmRlciByYWRpdXMgY29ybmVyc1xuLy8gKiBtYXNrIHZhbHVlcyBhcmUgaW4gdGhlIG9yZGVyIHRsIC8gdHIgLyBiciAvIGJsXG4vLyAqIE5vdGUgdGhhdCBhbGwgdW5pdHMgc2hvdWxkIGJlIGluIHB4XG4vLyAqIEBwYXJhbSB7bGlzdH0gLSBzcGVjaWZpYyBib3JkZXIgY29ybmVycyAkY29ybmVycyAoYWxsfHRsfHRyfGJsfGJyKVxuQG1peGluIGludmVydGVkLWJvcmRlci1yYWRpdXMoJGNvcm5lcnM6ICdhbGwnKSB7XG4gICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgJHZhbGlkLWJvcmRlci1yYWRpdXMtcGFyYW1zOiBbJ2FsbCcsICd0bCcsICd0cicsICdibCcsICdicicsICd0JywgJ3InLCAnYicsICdsJ107XG4gICAgJGludmVydGVkLWJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgJGludmVydGVkLWJvcmRlci10bDogMHB4O1xuICAgICRpbnZlcnRlZC1ib3JkZXItdHI6IDBweDtcbiAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJyOiAwcHg7XG4gICAgJGludmVydGVkLWJvcmRlci1ibDogMHB4O1xuXG4gICAgLS1pbnZlcnRlZC1ib3JkZXItZ3JhZGllbnQ6ICMwMDAwIDk4JSwgIzAwMDtcbiAgICAtLWludmVydGVkLWJvcmRlci1yYWRpdXM6ICN7JGludmVydGVkLWJvcmRlci1yYWRpdXN9O1xuXG4gICAgQGlmIG5vdCBsaXN0LmluZGV4KCR2YWxpZC1ib3JkZXItcmFkaXVzLXBhcmFtcywgJGNvcm5lcnMpIHtcbiAgICAgICAgQGVycm9yIFwiI3skY29ybmVyc30gaXMgbm90IGEgdmFsaWQgc2lkZS4gRXhwZWN0ZWQgb25lIG9mICN7JHZhbGlkLWJvcmRlci1yYWRpdXMtcGFyYW1zfS5cIjtcbiAgICB9XG5cbiAgICBAaWYgJGNvcm5lcnMgPT0gJ2FsbCcge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10cjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItYnI6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICd0bCcge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICd0cicge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICdicicge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICdibCcge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICd0JyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItdGw6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICdyJyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItdHI6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICdiJyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItYnI6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICdsJyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItdGw6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9XG5cbiAgICAtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdGw6ICN7JGludmVydGVkLWJvcmRlci10bH07XG4gICAgLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRyOiAjeyRpbnZlcnRlZC1ib3JkZXItdHJ9O1xuICAgIC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1icjogI3skaW52ZXJ0ZWQtYm9yZGVyLWJyfTtcbiAgICAtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYmw6ICN7JGludmVydGVkLWJvcmRlci1ibH07XG5cbiAgICBtYXNrOlxuICAgICAgICByYWRpYWwtZ3JhZGllbnQodmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10bCkgYXQgMCAwLCB2YXIoLS1pbnZlcnRlZC1ib3JkZXItZ3JhZGllbnQpKSAwIDAsXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRyKSBhdCAxMDAlIDAsIHZhcigtLWludmVydGVkLWJvcmRlci1ncmFkaWVudCkpIDEwMCUgMCxcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYmwpIGF0IDAgMTAwJSwgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLWdyYWRpZW50KSkgMCAxMDAlLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQodmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1icikgYXQgMTAwJSAxMDAlLCB2YXIoLS1pbnZlcnRlZC1ib3JkZXItZ3JhZGllbnQpKSAxMDAlIDEwMCU7XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBtYXNrLXNpemU6IDUxJSA1MSU7XG5cbiAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZSBuby1pbnZhbGlkLXBvc2l0aW9uLWRlY2xhcmF0aW9uXG4gICAgLy8gRGlzYWJsZSBmb3Igb2xkZXIgU2FmYXJpIGJyb3dzZXJzIGFzIHRoZSBsYXlvdXQgYnJlYWtzIHRoZXJlIHdpdGggbWFza1xuICAgIEBzdXBwb3J0cyAoYmFja2dyb3VuZDogLXdlYmtpdC1uYW1lZC1pbWFnZShpKSkge1xuICAgICAgICBtYXNrOiBub25lO1xuICAgIH1cblxuICAgIC8vIFdlIGNhbm5vdCBjaGVjayBmb3IgQHN1cHBvcnRzIChjbGlwLXBhdGg6IHNoYXBlKCkpIGJlY2F1c2UsIHdoaWxlIEZpcmVmb3ggc3VwcG9ydHMgdGhlIHJ1bGUsIGl0IGRvZXMgbm90IHdvcmsgLSB5ZXQgKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTAzMjgpXG4gICAgLy8gQnV0LCBhcyBzaGFwZSgpIGNhbiBiZSB1c2VkIGluIGFuaW1hdGlvbiBwYXRocywgYW5kIENocm9tZSBhbmQgY3VycmVudCBTYWZhcmkgc3VwcG9ydCB0aGlzIGltcGxlbWVudGF0aW9uLlxuICAgIC8vIE5PVEU6IFdlIHNob3VsZCBzdGlsbCBjaGVjayB0byBzZWUgd2hlbiBjbGlwLXBhdGg6IHNoYXBlKCkgaXMgZnVsbHkgZW5hYmxlZCBpbiBGaXJlZm94LCBidXQgaW4gdGhlIG1lYW50aW1lLCBtYXNraW5nIHdvcmtzIG5pY2VseSB0aGVyZVxuICAgIEBzdXBwb3J0cyAob2Zmc2V0LXBhdGg6IHNoYXBlKGZyb20gdG9wIGxlZnQsIGN1cnZlIHRvIDUwJSA1MCUgd2l0aCAyNSUgMTAwJSkpIHtcbiAgICAgICAgbWFzazogbm9uZTtcbiAgICAgICAgY2xpcC1wYXRoOiBzaGFwZShcbiAgICAgICAgICAgIGZyb20gMCB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRsKSxcbiAgICAgICAgICAgIGFyYyBieSB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRsKSBjYWxjKHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdGwpICogLTEpIG9mIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdGwpLFxuICAgICAgICAgICAgbGluZSB0byBjYWxjKDEwMCUgLSB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRyKSkgMCxcbiAgICAgICAgICAgIGFyYyBieSB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRyKSB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRyKSBvZiB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRyKSxcbiAgICAgICAgICAgIGxpbmUgdG8gMTAwJSBjYWxjKDEwMCUgLSB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJyKSksXG4gICAgICAgICAgICBhcmMgYnkgY2FsYyh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJyKSAqIC0xKSB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJyKSBvZiB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJyKSxcbiAgICAgICAgICAgIGxpbmUgdG8gdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1ibCkgMTAwJSxcbiAgICAgICAgICAgIGFyYyBieSBjYWxjKHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYmwpICogLTEpIGNhbGModmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1ibCkgKiAtMSkgb2YgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1ibCksXG4gICAgICAgICAgICBsaW5lIHRvIDAgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10bClcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLy8gc3R5bGVsaW50LWVuYWJsZSBuby1pbnZhbGlkLXBvc2l0aW9uLWRlY2xhcmF0aW9uXG59XG5cbi8vIExhYmVsIGlzIHNoaWZ0ZWQgd2hlbiAtXG4vLyBpbnB1dCBpcyBmb2N1c2VkXG4vLyBoYXMgdmFsdWUgcHJvcCBidXQgbm90IHBsYWNlaG9sZGVyIHNob3duIChoYXBwZW5kcyB3aGVuIHByZWZpbGxlZCBpbnB1dCBpcyBtYW51YWxseSBjbGVhcmVkKVxuLy8gaGFzIHNvbWUgdGV4dCBwbGFjZWhvbGRlclxuLy8gaXMgYXV0b2ZpbGxlZFxuQG1peGluIGZvcm0taW5wdXQtbGFiZWwtc2VsZWN0b3JzIHtcbiAgICAmOmhhcyg6d2hlcmUoaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEpOm5vdCg6d2hlcmUoOnBsYWNlaG9sZGVyLXNob3duKSk6aXMoOndoZXJlKDpub3QoOnBsYWNlaG9sZGVyLXNob3duKSksIDp3aGVyZSg6bm90KFtwbGFjZWhvbGRlcj0nJ10sIFtwbGFjZWhvbGRlcj0nICddKSksIDpub3QoW3ZhbHVlPScnXSksIDotd2Via2l0LWF1dG9maWxsLCA6YXV0b2ZpbGwsIDpmb2N1cykpIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpLFxuICAgICY6aGFzKDp3aGVyZShpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSk6aXMoOndoZXJlKDpwbGFjZWhvbGRlci1zaG93bjpub3QoW3BsYWNlaG9sZGVyPScnXSwgW3BsYWNlaG9sZGVyPScgJ10pKSkpIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpLFxuICAgICY6aGFzKDp3aGVyZShpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSk6aXMoOmZvY3VzKSkgOndoZXJlKC5mb3JtLWlucHV0X19sYWJlbCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8qKlxuICogUmVzZXQgaVNwYWNlIGN1c3RvbSBmb3JtIGlucHV0IHN0eWxlcyB0byBiZSBhYmxlIHRvIGRlc2lnbiBzcGVjaWFsIGlucHV0cyBtb3JlIGVhc2lseVxuICovXG5AbWl4aW4gcmVzZXQtZm9ybS1pbnB1dCB7XG4gICAgJjpoYXMoOndoZXJlKGlucHV0Om5vdChbdHlwZT0nY2hlY2tib3gnXSwgW3R5cGU9J3JhZGlvJ10pLCB0ZXh0YXJlYSwgc2VsZWN0KSkge1xuICAgICAgICB6LWluZGV4OiBhdXRvO1xuICAgICAgICBtYXJnaW4tdG9wOiBpbml0aWFsO1xuXG4gICAgICAgIDp3aGVyZSguZm9ybS1maWVsZC1jb250YWluZXIpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IGluaXRpYWw7XG4gICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIH1cblxuICAgICAgICA6d2hlcmUoLmZvcm0tZmllbGQgPiAqKSB7XG4gICAgICAgICAgICAmOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIDp3aGVyZSguZm9ybS1maWVsZF9faW5wdXQpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5pdGlhbDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aGFzKC5lcnJvcnMpIHtcbiAgICAgICAgICAgIC0taW5wdXQtYmc6IGluaXRpYWw7XG5cbiAgICAgICAgICAgIC5mb3JtLWZpZWxkLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICAgICAgICAgIC5mb3JtLWZpZWxkLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aGFzKFtkaXNhYmxlZF0pIHtcbiAgICAgICAgICAgIC5mb3JtLWZpZWxkLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgIHBhZGRpbmctaW5saW5lOiAwO1xuICAgICAgICAgICAgcGFkZGluZy1ibG9jazogMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5pdGlhbDtcbiAgICAgICAgICAgIGNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcbiAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIHotaW5kZXg6IGF1dG87XG4gICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAgICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiBpbml0aWFsO1xuICAgICAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogaW5pdGlhbDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlLFxuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhhcyguZm9ybS1maWVsZC0tc20pIHtcbiAgICAgICAgICAgIC5mb3JtLWlucHV0X19sYWJlbCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ibG9jazogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgICAgIDp3aGVyZSguZm9ybS1maWVsZC1jb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgOndoZXJlKC5mb3JtLWlucHV0X19sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAmOm5vdCg6d2hlcmUoOmZvY3VzLXdpdGhpbiwgW2Rpc2FibGVkXSkpIHtcbiAgICAgICAgICAgICAgICAmOndoZXJlKDpub3QoOmhhcyguZXJyb3JzKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgOndoZXJlKC5mb3JtLWZpZWxkLWNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgOndoZXJlKC5mb3JtLWlucHV0X19sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOmhhcyguZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIDp3aGVyZSguZm9ybS1maWVsZC1jb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgZm9ybS1pbnB1dC1sYWJlbC1zZWxlY3RvcnMge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgZm9udC1zaXplOiBpbml0aWFsO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZTtcblxuICAgICAgICAgICAgJjo6YmVmb3JlLFxuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFN0eWxlcyB0byBoaWRlIHRoZSBzY3JvbGxiYXIgYnV0IHN0aWxsIGFsbG93IHNjcm9sbGluZ1xuICovXG5AbWl4aW4gc2Nyb2xsLXdpdGhvdXQtc2Nyb2xsYmFyIHtcbiAgICBvdmVyZmxvdzogc2Nyb2xsO1xuICAgIG92ZXJmbG93OiAtbW96LXNjcm9sbGJhcnMtbm9uZTsgLyogRmlyZWZveCAqL1xuICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsgLyogSUUgYW5kIEVkZ2UgKi9cbiAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7IC8qIEZpcmVmb3ggKi9cblxuICAgIC8qIENocm9tZSwgU2FmYXJpIGFuZCBPcGVyYSAqL1xuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi8qKlxuICogU3BlY2lhbCB2ZXJzaW9uIG9mIHRoZSBjYXJkLWJveCgpIGxheW91dCBmb3IgdGhlIEIyQiBzaG9wXG4gKi9cbkBtaXhpbiBjYXJkLWJveC1jaGVja291dCB7XG4gICAgQGluY2x1ZGUgY2FyZC1ib3g7XG5cbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBkYXJrKTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHdvcmQtYnJlYWs6IG5vcm1hbDtcblxuICAgICY6aGFzKGlucHV0OmNoZWNrZWQpLFxuICAgICYuc2VsZWN0ZWQtcGF5bWVudC1zaGlwcGluZy1tZXRob2Qge1xuICAgICAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LWRhcmspO1xuICAgICAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LWRhcmspO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJ21kJykge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMXB4IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuZm9ybS1ibG9jay1kaXNhYmxlZCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgQGNvbnRlbnQ7XG59XG5cbkBtaXhpbiBjYXJkLWJveC1jaGVja291dC1jb21wb25lbnRzKCRpcy1taW5pbWFsOiBmYWxzZSkge1xuICAgIEBpZiAkaXMtbWluaW1hbCB7XG4gICAgICAgICYtbGFiZWwge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuODtcbiAgICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgICAmLWxhYmVsLFxuICAgICAgICAmLWluZm8sXG4gICAgICAgICYtcHJpY2Uge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuODtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtbGFiZWwge1xuICAgICAgICBwb3NpdGlvbjogaW5pdGlhbDtcbiAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgQGlmICRpcy1taW5pbWFsIHtcbiAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpoYXMoOmNoZWNrZWQpLFxuICAgICAgICAmOmhhcyhbZGlzYWJsZWRdKSB7XG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICAgICAgICAgIHRvdWNoLWFjdGlvbjogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5yYWRpbyB7XG4gICAgICAgICAgICAmX19pbnB1dCB7XG4gICAgICAgICAgICAgICAgdG9wOiAtMTZweDsgLy8gY29uc2lkZXIgdGhlIDE0cHggcGFkZGluZyAoZXh0cmEgMnB4IGZvciBib3JkZXIpXG5cbiAgICAgICAgICAgICAgICAmOmNoZWNrZWQ6bm90KDpkaXNhYmxlZCk6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLXRleHQge1xuICAgICAgICAgICAgQGlmICRpcy1taW5pbWFsIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGNvbnRlbnQ7XG59XG5cbi8qKlxuICogY2FyZC1ib3ggbGlzdCBsYXlvdXQgZm9yIHRoZSBCMkIgc2hvcFxuICovXG5AbWl4aW4gY2FyZC1ib3gtbGlzdC1jaGVja291dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBnYXA6IDAuOHJlbTtcbiAgICB0cmFuc2l0aW9uOiBnYXAgMC4zcztcbn1cblxuLy8gQWx0ZXJuYXRpdmUgZGlzYy1saWtlIHN0eWxpbmcgZm9yIHJhZGlvIGFuZCBjaGVja2JveCBpbnB1dHNcbkBtaXhpbiBpbnB1dC1kaXNjIHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldDogMCAxMHB4IDAgYXV0bztcbiAgICBtYXJnaW4tYmxvY2s6IGF1dG87XG4gICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICB3aWR0aDogMTVweDtcbiAgICBoZWlnaHQ6IDE1cHg7XG4gICAgZmxleDogMCAwIDE1cHg7IC8vIGluIGNhc2UgaXQncyBwYXJ0IG9mIGEgZmxleCBsYXlvdXRcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYigwLCAwLCAwLCAwLjEpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xcyBlYXNlLWluLW91dDtcbn1cblxuLy8gY2FyZCBib3hlcyBhcmUgdHlwaWNhbGx5IHVzZWQgb24gcHJvZHVjdCBkZXRhaWwgc2VydmljZXMsIGNoZWNrb3V0IHRyYW5zcG9ydC9wYXltZW50IG9wdGlvbnMsXG4vLyBBTkQgcHJlLWNoZWNrb3V0IHBhZ2VcbkBtaXhpbiBjYXJkLWJveCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBsaWdodCk7XG4gICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2dyYXktOTAwJyk7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIG1hcC5nZXQoJGlucHV0LCBib3JkZXItY29sb3IpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMTRweCAzMHB4IDE0cHggMjBweDtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAtMXB4O1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktZGFyayk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2UtaW4tb3V0O1xuICAgIH1cblxuICAgIFt0eXBlPSdjaGVja2JveCddLFxuICAgIFt0eXBlPSdyYWRpbyddIHtcbiAgICAgICAgQGluY2x1ZGUgaW5wdXQtZGlzYztcbiAgICB9XG5cbiAgICAmOmhhcyg6Y2hlY2tlZCksXG4gICAgJltjbGFzcyo9J3NlbGVjdGVkJ10ge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgW3R5cGU9J2NoZWNrYm94J106bm90KC5maXgtc3BlY2lmaWNpdHkpLFxuICAgICAgICBbdHlwZT0ncmFkaW8nXTpub3QoLmZpeC1zcGVjaWZpY2l0eSkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktZGFyayk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktZGFyayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyOm5vdCg6aGFzKFtkaXNhYmxlZF0pKSxcbiAgICAmOmZvY3VzLXdpdGhpbjpub3QoOmhhcyhbZGlzYWJsZWRdKSkge1xuICAgICAgICBib3JkZXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgZ3JheS00MDApO1xuXG4gICAgICAgIFt0eXBlPSdjaGVja2JveCddOm5vdCg6Y2hlY2tlZCksXG4gICAgICAgIFt0eXBlPSdyYWRpbyddOm5vdCg6Y2hlY2tlZCkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2IoMCwgMCwgMCwgMC4yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aGFzKFtkaXNhYmxlZF0pOm5vdCguZml4LXNwZWNpZmljaXR5KSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgbGlnaHQpO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcblxuLmhvbWUtaW50cm8ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2dyYXktMTAwJyk7XG4gICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2RhcmsnKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAmX190aXRsZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgfVxuXG4gICAgJl9fdGl0bGUgKyAmX190ZXh0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgfVxufVxuIiwiQGltcG9ydCAndGhlbWUtdmFyaWFibGVzJztcbkBpbXBvcnQgJy4uLy4uL2RlZmF1bHQvc2Fzcy9hc2dhcmQtdmFyaWFibGVzJztcbkBpbXBvcnQgJ2FwcC9hYnN0cmFjdHMvYWxsJztcbkBpbXBvcnQgJy4uLy4uL2RlZmF1bHQvc2Fzcy9ob21lL2FsbCc7XG5cbi5ob21lIHtcbiAgICAmX19wcm9tb3Mge1xuICAgICAgICBwYWRkaW5nLWJsb2NrLWVuZDogNnJlbTtcblxuICAgICAgICAmLS1ncmlkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICBnYXA6IDFyZW07XG5cbiAgICAgICAgICAgIC5lbWJsYSB7XG4gICAgICAgICAgICAgICAgb3JkZXI6IC0xO1xuXG4gICAgICAgICAgICAgICAgJl9fYnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICAgICAgICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucHJvbW8ge1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgnbWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYtLWltZyB7XG4gICAgICAgICAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCdtZCcpIHtcbiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDYwJSAzOCU7XG4gICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoMiwgMWZyKTtcbiAgICAgICAgICAgICAgICBnYXA6IGNsYW1wKDFyZW0sIDJ2dywgM3JlbSk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiBjbGFtcCgxcmVtLCAydncsIDNyZW0pO1xuXG4gICAgICAgICAgICAgICAgLmVtYmxhIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDE7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxIC8gc3BhbiAyO1xuXG4gICAgICAgICAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIHNwYW4gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICZfX3RyYWNrLFxuICAgICAgICAgICAgICAgICAgICAmX19saXN0LFxuICAgICAgICAgICAgICAgICAgICAmX19zbGlkZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAuYi1pbWFnZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljdHVyZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtaW50cm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIH1cbn1cbiIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsIHh4bCkpXG4vLyAgICBtZFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEBpZiBub3QgJG4ge1xuICAgIEBlcnJvciBcImJyZWFrcG9pbnQgYCN7JG5hbWV9YCBub3QgZm91bmQgaW4gYCN7JGJyZWFrcG9pbnRzfWBcIjtcbiAgfVxuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyByZWR1Y2VkIGJ5IDAuMDJweCB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2Zcbi8vIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgobWQsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtYXggYW5kICRtYXggPiAwLCAkbWF4IC0gLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIFwiLXNtXCJcbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXCJcIiwgXCItI3skbmFtZX1cIik7XG59XG5cbi8vIE1lZGlhIG9mIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtaW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgYmV0d2VlbiB0aGUgbWluIGFuZCBtYXggYnJlYWtwb2ludHNcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkdXBwZXIsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiAgYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6ICBicmVha3BvaW50LW1heCgkbmV4dCwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5leHQsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9*/