@-moz-keyframes flash {
  0% {
    opacity: 1;
  }
  25% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  75% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-webkit-keyframes flash {
  0% {
    opacity: 1;
  }
  25% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  75% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-o-keyframes flash {
  0% {
    opacity: 1;
  }
  25% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  75% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-ms-keyframes flash {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    opacity: 1;
  }
  /* line 5, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  25% {
    opacity: 0;
  }
  /* line 7, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  50% {
    opacity: 1;
  }
  /* line 9, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  75% {
    opacity: 0;
  }
  /* line 11, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    opacity: 1;
  }
}

@keyframes flash {
  0% {
    opacity: 1;
  }
  25% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  75% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-moz-keyframes bounce {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  40% {
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  50% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  60% {
    -webkit-transform: translateY(-15px);
    -moz-transform: translateY(-15px);
    -ms-transform: translateY(-15px);
    -o-transform: translateY(-15px);
    transform: translateY(-15px);
  }
  80% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes bounce {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  40% {
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  50% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  60% {
    -webkit-transform: translateY(-15px);
    -moz-transform: translateY(-15px);
    -ms-transform: translateY(-15px);
    -o-transform: translateY(-15px);
    transform: translateY(-15px);
  }
  80% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-o-keyframes bounce {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  40% {
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  50% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  60% {
    -webkit-transform: translateY(-15px);
    -moz-transform: translateY(-15px);
    -ms-transform: translateY(-15px);
    -o-transform: translateY(-15px);
    transform: translateY(-15px);
  }
  80% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes bounce {
  /* line 17, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 19, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  20% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 21, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  40% {
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  /* line 23, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  50% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 25, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  60% {
    -webkit-transform: translateY(-15px);
    -moz-transform: translateY(-15px);
    -ms-transform: translateY(-15px);
    -o-transform: translateY(-15px);
    transform: translateY(-15px);
  }
  /* line 27, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  80% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 29, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes bounce {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  40% {
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  50% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  60% {
    -webkit-transform: translateY(-15px);
    -moz-transform: translateY(-15px);
    -ms-transform: translateY(-15px);
    -o-transform: translateY(-15px);
    transform: translateY(-15px);
  }
  80% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes shake {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  10% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  20% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  30% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  40% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  50% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  60% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  70% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  90% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-webkit-keyframes shake {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  10% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  20% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  30% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  40% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  50% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  60% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  70% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  90% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-o-keyframes shake {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  10% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  20% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  30% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  40% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  50% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  60% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  70% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  90% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-ms-keyframes shake {
  /* line 35, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  /* line 37, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  10% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  /* line 39, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  20% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  /* line 41, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  30% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  /* line 43, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  40% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  /* line 45, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  50% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  /* line 47, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  60% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  /* line 49, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  70% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  /* line 53, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  90% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  /* line 55, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@keyframes shake {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  10% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  20% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  30% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  40% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  50% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  60% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  70% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  90% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-moz-keyframes tada {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  10% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  20% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  30% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  40% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  50% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  60% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  70% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  80% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  90% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  100% {
    -webkit-transform: scale(1) rotate(0);
    -moz-transform: scale(1) rotate(0);
    -ms-transform: scale(1) rotate(0);
    -o-transform: scale(1) rotate(0);
    transform: scale(1) rotate(0);
  }
}

@-webkit-keyframes tada {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  10% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  20% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  30% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  40% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  50% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  60% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  70% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  80% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  90% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  100% {
    -webkit-transform: scale(1) rotate(0);
    -moz-transform: scale(1) rotate(0);
    -ms-transform: scale(1) rotate(0);
    -o-transform: scale(1) rotate(0);
    transform: scale(1) rotate(0);
  }
}

@-o-keyframes tada {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  10% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  20% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  30% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  40% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  50% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  60% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  70% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  80% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  90% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  100% {
    -webkit-transform: scale(1) rotate(0);
    -moz-transform: scale(1) rotate(0);
    -ms-transform: scale(1) rotate(0);
    -o-transform: scale(1) rotate(0);
    transform: scale(1) rotate(0);
  }
}

@-ms-keyframes tada {
  /* line 61, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  /* line 63, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  10% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  /* line 65, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  20% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  /* line 67, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  30% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  /* line 69, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  40% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  /* line 71, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  50% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  /* line 73, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  60% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  /* line 75, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  70% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  /* line 77, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  80% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  /* line 79, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  90% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  /* line 81, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: scale(1) rotate(0);
    -moz-transform: scale(1) rotate(0);
    -ms-transform: scale(1) rotate(0);
    -o-transform: scale(1) rotate(0);
    transform: scale(1) rotate(0);
  }
}

@keyframes tada {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  10% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  20% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  30% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  40% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  50% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  60% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  70% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  80% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  90% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  100% {
    -webkit-transform: scale(1) rotate(0);
    -moz-transform: scale(1) rotate(0);
    -ms-transform: scale(1) rotate(0);
    -o-transform: scale(1) rotate(0);
    transform: scale(1) rotate(0);
  }
}

@-moz-keyframes swing {
  20%, 40%, 60%, 80%, 100% {
    -webkit-transform-origin: top center 50%;
    -moz-transform-origin: top center 50%;
    -ms-transform-origin: top center 50%;
    -o-transform-origin: top center 50%;
    transform-origin: top center 50%;
  }
  20% {
    -webkit-transform: rotate(15deg);
    -moz-transform: rotate(15deg);
    -ms-transform: rotate(15deg);
    -o-transform: rotate(15deg);
    transform: rotate(15deg);
  }
  40% {
    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    transform: rotate(-10deg);
  }
  60% {
    -webkit-transform: rotate(5deg);
    -moz-transform: rotate(5deg);
    -ms-transform: rotate(5deg);
    -o-transform: rotate(5deg);
    transform: rotate(5deg);
  }
  80% {
    -webkit-transform: rotate(-5deg);
    -moz-transform: rotate(-5deg);
    -ms-transform: rotate(-5deg);
    -o-transform: rotate(-5deg);
    transform: rotate(-5deg);
  }
  100% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

@-webkit-keyframes swing {
  20%, 40%, 60%, 80%, 100% {
    -webkit-transform-origin: top center 50%;
    -moz-transform-origin: top center 50%;
    -ms-transform-origin: top center 50%;
    -o-transform-origin: top center 50%;
    transform-origin: top center 50%;
  }
  20% {
    -webkit-transform: rotate(15deg);
    -moz-transform: rotate(15deg);
    -ms-transform: rotate(15deg);
    -o-transform: rotate(15deg);
    transform: rotate(15deg);
  }
  40% {
    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    transform: rotate(-10deg);
  }
  60% {
    -webkit-transform: rotate(5deg);
    -moz-transform: rotate(5deg);
    -ms-transform: rotate(5deg);
    -o-transform: rotate(5deg);
    transform: rotate(5deg);
  }
  80% {
    -webkit-transform: rotate(-5deg);
    -moz-transform: rotate(-5deg);
    -ms-transform: rotate(-5deg);
    -o-transform: rotate(-5deg);
    transform: rotate(-5deg);
  }
  100% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

@-o-keyframes swing {
  20%, 40%, 60%, 80%, 100% {
    -webkit-transform-origin: top center 50%;
    -moz-transform-origin: top center 50%;
    -ms-transform-origin: top center 50%;
    -o-transform-origin: top center 50%;
    transform-origin: top center 50%;
  }
  20% {
    -webkit-transform: rotate(15deg);
    -moz-transform: rotate(15deg);
    -ms-transform: rotate(15deg);
    -o-transform: rotate(15deg);
    transform: rotate(15deg);
  }
  40% {
    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    transform: rotate(-10deg);
  }
  60% {
    -webkit-transform: rotate(5deg);
    -moz-transform: rotate(5deg);
    -ms-transform: rotate(5deg);
    -o-transform: rotate(5deg);
    transform: rotate(5deg);
  }
  80% {
    -webkit-transform: rotate(-5deg);
    -moz-transform: rotate(-5deg);
    -ms-transform: rotate(-5deg);
    -o-transform: rotate(-5deg);
    transform: rotate(-5deg);
  }
  100% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

@-ms-keyframes swing {
  /* line 87, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  20%, 40%, 60%, 80%, 100% {
    -webkit-transform-origin: top center 50%;
    -moz-transform-origin: top center 50%;
    -ms-transform-origin: top center 50%;
    -o-transform-origin: top center 50%;
    transform-origin: top center 50%;
  }
  /* line 89, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  20% {
    -webkit-transform: rotate(15deg);
    -moz-transform: rotate(15deg);
    -ms-transform: rotate(15deg);
    -o-transform: rotate(15deg);
    transform: rotate(15deg);
  }
  /* line 91, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  40% {
    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    transform: rotate(-10deg);
  }
  /* line 93, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  60% {
    -webkit-transform: rotate(5deg);
    -moz-transform: rotate(5deg);
    -ms-transform: rotate(5deg);
    -o-transform: rotate(5deg);
    transform: rotate(5deg);
  }
  /* line 95, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  80% {
    -webkit-transform: rotate(-5deg);
    -moz-transform: rotate(-5deg);
    -ms-transform: rotate(-5deg);
    -o-transform: rotate(-5deg);
    transform: rotate(-5deg);
  }
  /* line 97, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

@keyframes swing {
  20%, 40%, 60%, 80%, 100% {
    -webkit-transform-origin: top center 50%;
    -moz-transform-origin: top center 50%;
    -ms-transform-origin: top center 50%;
    -o-transform-origin: top center 50%;
    transform-origin: top center 50%;
  }
  20% {
    -webkit-transform: rotate(15deg);
    -moz-transform: rotate(15deg);
    -ms-transform: rotate(15deg);
    -o-transform: rotate(15deg);
    transform: rotate(15deg);
  }
  40% {
    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    transform: rotate(-10deg);
  }
  60% {
    -webkit-transform: rotate(5deg);
    -moz-transform: rotate(5deg);
    -ms-transform: rotate(5deg);
    -o-transform: rotate(5deg);
    transform: rotate(5deg);
  }
  80% {
    -webkit-transform: rotate(-5deg);
    -moz-transform: rotate(-5deg);
    -ms-transform: rotate(-5deg);
    -o-transform: rotate(-5deg);
    transform: rotate(-5deg);
  }
  100% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

@-moz-keyframes wobble {
  0% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
  15% {
    -webkit-transform: translateX(-25%) rotate(-5deg);
    -moz-transform: translateX(-25%) rotate(-5deg);
    -ms-transform: translateX(-25%) rotate(-5deg);
    -o-transform: translateX(-25%) rotate(-5deg);
    transform: translateX(-25%) rotate(-5deg);
  }
  30% {
    -webkit-transform: translateX(20%) rotate(3deg);
    -moz-transform: translateX(20%) rotate(3deg);
    -ms-transform: translateX(20%) rotate(3deg);
    -o-transform: translateX(20%) rotate(3deg);
    transform: translateX(20%) rotate(3deg);
  }
  45% {
    -webkit-transform: translateX(-15%) rotate(-3deg);
    -moz-transform: translateX(-15%) rotate(-3deg);
    -ms-transform: translateX(-15%) rotate(-3deg);
    -o-transform: translateX(-15%) rotate(-3deg);
    transform: translateX(-15%) rotate(-3deg);
  }
  60% {
    -webkit-transform: translateX(10%) rotate(2deg);
    -moz-transform: translateX(10%) rotate(2deg);
    -ms-transform: translateX(10%) rotate(2deg);
    -o-transform: translateX(10%) rotate(2deg);
    transform: translateX(10%) rotate(2deg);
  }
  75% {
    -webkit-transform: translateX(-5%) rotate(-1deg);
    -moz-transform: translateX(-5%) rotate(-1deg);
    -ms-transform: translateX(-5%) rotate(-1deg);
    -o-transform: translateX(-5%) rotate(-1deg);
    transform: translateX(-5%) rotate(-1deg);
  }
  100% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
}

@-webkit-keyframes wobble {
  0% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
  15% {
    -webkit-transform: translateX(-25%) rotate(-5deg);
    -moz-transform: translateX(-25%) rotate(-5deg);
    -ms-transform: translateX(-25%) rotate(-5deg);
    -o-transform: translateX(-25%) rotate(-5deg);
    transform: translateX(-25%) rotate(-5deg);
  }
  30% {
    -webkit-transform: translateX(20%) rotate(3deg);
    -moz-transform: translateX(20%) rotate(3deg);
    -ms-transform: translateX(20%) rotate(3deg);
    -o-transform: translateX(20%) rotate(3deg);
    transform: translateX(20%) rotate(3deg);
  }
  45% {
    -webkit-transform: translateX(-15%) rotate(-3deg);
    -moz-transform: translateX(-15%) rotate(-3deg);
    -ms-transform: translateX(-15%) rotate(-3deg);
    -o-transform: translateX(-15%) rotate(-3deg);
    transform: translateX(-15%) rotate(-3deg);
  }
  60% {
    -webkit-transform: translateX(10%) rotate(2deg);
    -moz-transform: translateX(10%) rotate(2deg);
    -ms-transform: translateX(10%) rotate(2deg);
    -o-transform: translateX(10%) rotate(2deg);
    transform: translateX(10%) rotate(2deg);
  }
  75% {
    -webkit-transform: translateX(-5%) rotate(-1deg);
    -moz-transform: translateX(-5%) rotate(-1deg);
    -ms-transform: translateX(-5%) rotate(-1deg);
    -o-transform: translateX(-5%) rotate(-1deg);
    transform: translateX(-5%) rotate(-1deg);
  }
  100% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
}

@-o-keyframes wobble {
  0% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
  15% {
    -webkit-transform: translateX(-25%) rotate(-5deg);
    -moz-transform: translateX(-25%) rotate(-5deg);
    -ms-transform: translateX(-25%) rotate(-5deg);
    -o-transform: translateX(-25%) rotate(-5deg);
    transform: translateX(-25%) rotate(-5deg);
  }
  30% {
    -webkit-transform: translateX(20%) rotate(3deg);
    -moz-transform: translateX(20%) rotate(3deg);
    -ms-transform: translateX(20%) rotate(3deg);
    -o-transform: translateX(20%) rotate(3deg);
    transform: translateX(20%) rotate(3deg);
  }
  45% {
    -webkit-transform: translateX(-15%) rotate(-3deg);
    -moz-transform: translateX(-15%) rotate(-3deg);
    -ms-transform: translateX(-15%) rotate(-3deg);
    -o-transform: translateX(-15%) rotate(-3deg);
    transform: translateX(-15%) rotate(-3deg);
  }
  60% {
    -webkit-transform: translateX(10%) rotate(2deg);
    -moz-transform: translateX(10%) rotate(2deg);
    -ms-transform: translateX(10%) rotate(2deg);
    -o-transform: translateX(10%) rotate(2deg);
    transform: translateX(10%) rotate(2deg);
  }
  75% {
    -webkit-transform: translateX(-5%) rotate(-1deg);
    -moz-transform: translateX(-5%) rotate(-1deg);
    -ms-transform: translateX(-5%) rotate(-1deg);
    -o-transform: translateX(-5%) rotate(-1deg);
    transform: translateX(-5%) rotate(-1deg);
  }
  100% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
}

@-ms-keyframes wobble {
  /* line 103, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
  /* line 105, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  15% {
    -webkit-transform: translateX(-25%) rotate(-5deg);
    -moz-transform: translateX(-25%) rotate(-5deg);
    -ms-transform: translateX(-25%) rotate(-5deg);
    -o-transform: translateX(-25%) rotate(-5deg);
    transform: translateX(-25%) rotate(-5deg);
  }
  /* line 107, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  30% {
    -webkit-transform: translateX(20%) rotate(3deg);
    -moz-transform: translateX(20%) rotate(3deg);
    -ms-transform: translateX(20%) rotate(3deg);
    -o-transform: translateX(20%) rotate(3deg);
    transform: translateX(20%) rotate(3deg);
  }
  /* line 109, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  45% {
    -webkit-transform: translateX(-15%) rotate(-3deg);
    -moz-transform: translateX(-15%) rotate(-3deg);
    -ms-transform: translateX(-15%) rotate(-3deg);
    -o-transform: translateX(-15%) rotate(-3deg);
    transform: translateX(-15%) rotate(-3deg);
  }
  /* line 111, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  60% {
    -webkit-transform: translateX(10%) rotate(2deg);
    -moz-transform: translateX(10%) rotate(2deg);
    -ms-transform: translateX(10%) rotate(2deg);
    -o-transform: translateX(10%) rotate(2deg);
    transform: translateX(10%) rotate(2deg);
  }
  /* line 113, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  75% {
    -webkit-transform: translateX(-5%) rotate(-1deg);
    -moz-transform: translateX(-5%) rotate(-1deg);
    -ms-transform: translateX(-5%) rotate(-1deg);
    -o-transform: translateX(-5%) rotate(-1deg);
    transform: translateX(-5%) rotate(-1deg);
  }
  /* line 115, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
}

@keyframes wobble {
  0% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
  15% {
    -webkit-transform: translateX(-25%) rotate(-5deg);
    -moz-transform: translateX(-25%) rotate(-5deg);
    -ms-transform: translateX(-25%) rotate(-5deg);
    -o-transform: translateX(-25%) rotate(-5deg);
    transform: translateX(-25%) rotate(-5deg);
  }
  30% {
    -webkit-transform: translateX(20%) rotate(3deg);
    -moz-transform: translateX(20%) rotate(3deg);
    -ms-transform: translateX(20%) rotate(3deg);
    -o-transform: translateX(20%) rotate(3deg);
    transform: translateX(20%) rotate(3deg);
  }
  45% {
    -webkit-transform: translateX(-15%) rotate(-3deg);
    -moz-transform: translateX(-15%) rotate(-3deg);
    -ms-transform: translateX(-15%) rotate(-3deg);
    -o-transform: translateX(-15%) rotate(-3deg);
    transform: translateX(-15%) rotate(-3deg);
  }
  60% {
    -webkit-transform: translateX(10%) rotate(2deg);
    -moz-transform: translateX(10%) rotate(2deg);
    -ms-transform: translateX(10%) rotate(2deg);
    -o-transform: translateX(10%) rotate(2deg);
    transform: translateX(10%) rotate(2deg);
  }
  75% {
    -webkit-transform: translateX(-5%) rotate(-1deg);
    -moz-transform: translateX(-5%) rotate(-1deg);
    -ms-transform: translateX(-5%) rotate(-1deg);
    -o-transform: translateX(-5%) rotate(-1deg);
    transform: translateX(-5%) rotate(-1deg);
  }
  100% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
}

@-moz-keyframes pulse {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  50% {
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-webkit-keyframes pulse {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  50% {
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-o-keyframes pulse {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  50% {
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-ms-keyframes pulse {
  /* line 121, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  /* line 123, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  50% {
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  /* line 125, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@keyframes pulse {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  50% {
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-moz-keyframes wiggle {
  0% {
    -webkit-transform: skewX(9deg);
    -moz-transform: skewX(9deg);
    -ms-transform: skewX(9deg);
    -o-transform: skewX(9deg);
    transform: skewX(9deg);
  }
  10% {
    -webkit-transform: skewX(-8deg);
    -moz-transform: skewX(-8deg);
    -ms-transform: skewX(-8deg);
    -o-transform: skewX(-8deg);
    transform: skewX(-8deg);
  }
  20% {
    -webkit-transform: skewX(7deg);
    -moz-transform: skewX(7deg);
    -ms-transform: skewX(7deg);
    -o-transform: skewX(7deg);
    transform: skewX(7deg);
  }
  30% {
    -webkit-transform: skewX(-6deg);
    -moz-transform: skewX(-6deg);
    -ms-transform: skewX(-6deg);
    -o-transform: skewX(-6deg);
    transform: skewX(-6deg);
  }
  40% {
    -webkit-transform: skewX(5deg);
    -moz-transform: skewX(5deg);
    -ms-transform: skewX(5deg);
    -o-transform: skewX(5deg);
    transform: skewX(5deg);
  }
  50% {
    -webkit-transform: skewX(-4deg);
    -moz-transform: skewX(-4deg);
    -ms-transform: skewX(-4deg);
    -o-transform: skewX(-4deg);
    transform: skewX(-4deg);
  }
  60% {
    -webkit-transform: skewX(3deg);
    -moz-transform: skewX(3deg);
    -ms-transform: skewX(3deg);
    -o-transform: skewX(3deg);
    transform: skewX(3deg);
  }
  70% {
    -webkit-transform: skewX(-2deg);
    -moz-transform: skewX(-2deg);
    -ms-transform: skewX(-2deg);
    -o-transform: skewX(-2deg);
    transform: skewX(-2deg);
  }
  80% {
    -webkit-transform: skewX(1deg);
    -moz-transform: skewX(1deg);
    -ms-transform: skewX(1deg);
    -o-transform: skewX(1deg);
    transform: skewX(1deg);
  }
  90% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
  100% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
}

@-webkit-keyframes wiggle {
  0% {
    -webkit-transform: skewX(9deg);
    -moz-transform: skewX(9deg);
    -ms-transform: skewX(9deg);
    -o-transform: skewX(9deg);
    transform: skewX(9deg);
  }
  10% {
    -webkit-transform: skewX(-8deg);
    -moz-transform: skewX(-8deg);
    -ms-transform: skewX(-8deg);
    -o-transform: skewX(-8deg);
    transform: skewX(-8deg);
  }
  20% {
    -webkit-transform: skewX(7deg);
    -moz-transform: skewX(7deg);
    -ms-transform: skewX(7deg);
    -o-transform: skewX(7deg);
    transform: skewX(7deg);
  }
  30% {
    -webkit-transform: skewX(-6deg);
    -moz-transform: skewX(-6deg);
    -ms-transform: skewX(-6deg);
    -o-transform: skewX(-6deg);
    transform: skewX(-6deg);
  }
  40% {
    -webkit-transform: skewX(5deg);
    -moz-transform: skewX(5deg);
    -ms-transform: skewX(5deg);
    -o-transform: skewX(5deg);
    transform: skewX(5deg);
  }
  50% {
    -webkit-transform: skewX(-4deg);
    -moz-transform: skewX(-4deg);
    -ms-transform: skewX(-4deg);
    -o-transform: skewX(-4deg);
    transform: skewX(-4deg);
  }
  60% {
    -webkit-transform: skewX(3deg);
    -moz-transform: skewX(3deg);
    -ms-transform: skewX(3deg);
    -o-transform: skewX(3deg);
    transform: skewX(3deg);
  }
  70% {
    -webkit-transform: skewX(-2deg);
    -moz-transform: skewX(-2deg);
    -ms-transform: skewX(-2deg);
    -o-transform: skewX(-2deg);
    transform: skewX(-2deg);
  }
  80% {
    -webkit-transform: skewX(1deg);
    -moz-transform: skewX(1deg);
    -ms-transform: skewX(1deg);
    -o-transform: skewX(1deg);
    transform: skewX(1deg);
  }
  90% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
  100% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
}

@-o-keyframes wiggle {
  0% {
    -webkit-transform: skewX(9deg);
    -moz-transform: skewX(9deg);
    -ms-transform: skewX(9deg);
    -o-transform: skewX(9deg);
    transform: skewX(9deg);
  }
  10% {
    -webkit-transform: skewX(-8deg);
    -moz-transform: skewX(-8deg);
    -ms-transform: skewX(-8deg);
    -o-transform: skewX(-8deg);
    transform: skewX(-8deg);
  }
  20% {
    -webkit-transform: skewX(7deg);
    -moz-transform: skewX(7deg);
    -ms-transform: skewX(7deg);
    -o-transform: skewX(7deg);
    transform: skewX(7deg);
  }
  30% {
    -webkit-transform: skewX(-6deg);
    -moz-transform: skewX(-6deg);
    -ms-transform: skewX(-6deg);
    -o-transform: skewX(-6deg);
    transform: skewX(-6deg);
  }
  40% {
    -webkit-transform: skewX(5deg);
    -moz-transform: skewX(5deg);
    -ms-transform: skewX(5deg);
    -o-transform: skewX(5deg);
    transform: skewX(5deg);
  }
  50% {
    -webkit-transform: skewX(-4deg);
    -moz-transform: skewX(-4deg);
    -ms-transform: skewX(-4deg);
    -o-transform: skewX(-4deg);
    transform: skewX(-4deg);
  }
  60% {
    -webkit-transform: skewX(3deg);
    -moz-transform: skewX(3deg);
    -ms-transform: skewX(3deg);
    -o-transform: skewX(3deg);
    transform: skewX(3deg);
  }
  70% {
    -webkit-transform: skewX(-2deg);
    -moz-transform: skewX(-2deg);
    -ms-transform: skewX(-2deg);
    -o-transform: skewX(-2deg);
    transform: skewX(-2deg);
  }
  80% {
    -webkit-transform: skewX(1deg);
    -moz-transform: skewX(1deg);
    -ms-transform: skewX(1deg);
    -o-transform: skewX(1deg);
    transform: skewX(1deg);
  }
  90% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
  100% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
}

@-ms-keyframes wiggle {
  /* line 131, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    -webkit-transform: skewX(9deg);
    -moz-transform: skewX(9deg);
    -ms-transform: skewX(9deg);
    -o-transform: skewX(9deg);
    transform: skewX(9deg);
  }
  /* line 133, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  10% {
    -webkit-transform: skewX(-8deg);
    -moz-transform: skewX(-8deg);
    -ms-transform: skewX(-8deg);
    -o-transform: skewX(-8deg);
    transform: skewX(-8deg);
  }
  /* line 135, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  20% {
    -webkit-transform: skewX(7deg);
    -moz-transform: skewX(7deg);
    -ms-transform: skewX(7deg);
    -o-transform: skewX(7deg);
    transform: skewX(7deg);
  }
  /* line 137, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  30% {
    -webkit-transform: skewX(-6deg);
    -moz-transform: skewX(-6deg);
    -ms-transform: skewX(-6deg);
    -o-transform: skewX(-6deg);
    transform: skewX(-6deg);
  }
  /* line 139, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  40% {
    -webkit-transform: skewX(5deg);
    -moz-transform: skewX(5deg);
    -ms-transform: skewX(5deg);
    -o-transform: skewX(5deg);
    transform: skewX(5deg);
  }
  /* line 141, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  50% {
    -webkit-transform: skewX(-4deg);
    -moz-transform: skewX(-4deg);
    -ms-transform: skewX(-4deg);
    -o-transform: skewX(-4deg);
    transform: skewX(-4deg);
  }
  /* line 143, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  60% {
    -webkit-transform: skewX(3deg);
    -moz-transform: skewX(3deg);
    -ms-transform: skewX(3deg);
    -o-transform: skewX(3deg);
    transform: skewX(3deg);
  }
  /* line 145, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  70% {
    -webkit-transform: skewX(-2deg);
    -moz-transform: skewX(-2deg);
    -ms-transform: skewX(-2deg);
    -o-transform: skewX(-2deg);
    transform: skewX(-2deg);
  }
  /* line 147, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  80% {
    -webkit-transform: skewX(1deg);
    -moz-transform: skewX(1deg);
    -ms-transform: skewX(1deg);
    -o-transform: skewX(1deg);
    transform: skewX(1deg);
  }
  /* line 149, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  90% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
  /* line 151, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
}

@keyframes wiggle {
  0% {
    -webkit-transform: skewX(9deg);
    -moz-transform: skewX(9deg);
    -ms-transform: skewX(9deg);
    -o-transform: skewX(9deg);
    transform: skewX(9deg);
  }
  10% {
    -webkit-transform: skewX(-8deg);
    -moz-transform: skewX(-8deg);
    -ms-transform: skewX(-8deg);
    -o-transform: skewX(-8deg);
    transform: skewX(-8deg);
  }
  20% {
    -webkit-transform: skewX(7deg);
    -moz-transform: skewX(7deg);
    -ms-transform: skewX(7deg);
    -o-transform: skewX(7deg);
    transform: skewX(7deg);
  }
  30% {
    -webkit-transform: skewX(-6deg);
    -moz-transform: skewX(-6deg);
    -ms-transform: skewX(-6deg);
    -o-transform: skewX(-6deg);
    transform: skewX(-6deg);
  }
  40% {
    -webkit-transform: skewX(5deg);
    -moz-transform: skewX(5deg);
    -ms-transform: skewX(5deg);
    -o-transform: skewX(5deg);
    transform: skewX(5deg);
  }
  50% {
    -webkit-transform: skewX(-4deg);
    -moz-transform: skewX(-4deg);
    -ms-transform: skewX(-4deg);
    -o-transform: skewX(-4deg);
    transform: skewX(-4deg);
  }
  60% {
    -webkit-transform: skewX(3deg);
    -moz-transform: skewX(3deg);
    -ms-transform: skewX(3deg);
    -o-transform: skewX(3deg);
    transform: skewX(3deg);
  }
  70% {
    -webkit-transform: skewX(-2deg);
    -moz-transform: skewX(-2deg);
    -ms-transform: skewX(-2deg);
    -o-transform: skewX(-2deg);
    transform: skewX(-2deg);
  }
  80% {
    -webkit-transform: skewX(1deg);
    -moz-transform: skewX(1deg);
    -ms-transform: skewX(1deg);
    -o-transform: skewX(1deg);
    transform: skewX(1deg);
  }
  90% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
  100% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
}

@-moz-keyframes bounceOut {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  25% {
    -webkit-transform: scale(0.95, 0.95);
    -moz-transform: scale(0.95, 0.95);
    -ms-transform: scale(0.95, 0.95);
    -o-transform: scale(0.95, 0.95);
    transform: scale(0.95, 0.95);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
}

@-webkit-keyframes bounceOut {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  25% {
    -webkit-transform: scale(0.95, 0.95);
    -moz-transform: scale(0.95, 0.95);
    -ms-transform: scale(0.95, 0.95);
    -o-transform: scale(0.95, 0.95);
    transform: scale(0.95, 0.95);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
}

@-o-keyframes bounceOut {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  25% {
    -webkit-transform: scale(0.95, 0.95);
    -moz-transform: scale(0.95, 0.95);
    -ms-transform: scale(0.95, 0.95);
    -o-transform: scale(0.95, 0.95);
    transform: scale(0.95, 0.95);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
}

@-ms-keyframes bounceOut {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  /* line 5, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  25% {
    -webkit-transform: scale(0.95, 0.95);
    -moz-transform: scale(0.95, 0.95);
    -ms-transform: scale(0.95, 0.95);
    -o-transform: scale(0.95, 0.95);
    transform: scale(0.95, 0.95);
  }
  /* line 7, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  50% {
    opacity: 1;
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  /* line 10, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
}

@keyframes bounceOut {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  25% {
    -webkit-transform: scale(0.95, 0.95);
    -moz-transform: scale(0.95, 0.95);
    -ms-transform: scale(0.95, 0.95);
    -o-transform: scale(0.95, 0.95);
    transform: scale(0.95, 0.95);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
}

@-moz-keyframes bounceOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
}

@-webkit-keyframes bounceOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
}

@-o-keyframes bounceOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
}

@-ms-keyframes bounceOutUp {
  /* line 17, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 19, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  20% {
    opacity: 1;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  /* line 22, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
}

@keyframes bounceOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
}

@-moz-keyframes bounceOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-webkit-keyframes bounceOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-o-keyframes bounceOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-ms-keyframes bounceOutDown {
  /* line 29, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 31, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  20% {
    opacity: 1;
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
  }
  /* line 34, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@keyframes bounceOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-moz-keyframes bounceOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-webkit-keyframes bounceOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-o-keyframes bounceOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-ms-keyframes bounceOutLeft {
  /* line 41, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  /* line 43, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  20% {
    opacity: 1;
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
  }
  /* line 46, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@keyframes bounceOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-moz-keyframes bounceOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-webkit-keyframes bounceOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-o-keyframes bounceOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-ms-keyframes bounceOutRight {
  /* line 53, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  /* line 55, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  20% {
    opacity: 1;
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
  }
  /* line 58, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@keyframes bounceOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-moz-keyframes bounceIn {
  0% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.05, 1.05);
    -moz-transform: scale(1.05, 1.05);
    -ms-transform: scale(1.05, 1.05);
    -o-transform: scale(1.05, 1.05);
    transform: scale(1.05, 1.05);
  }
  70% {
    -webkit-transform: scale(0.9, 0.9);
    -moz-transform: scale(0.9, 0.9);
    -ms-transform: scale(0.9, 0.9);
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-webkit-keyframes bounceIn {
  0% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.05, 1.05);
    -moz-transform: scale(1.05, 1.05);
    -ms-transform: scale(1.05, 1.05);
    -o-transform: scale(1.05, 1.05);
    transform: scale(1.05, 1.05);
  }
  70% {
    -webkit-transform: scale(0.9, 0.9);
    -moz-transform: scale(0.9, 0.9);
    -ms-transform: scale(0.9, 0.9);
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-o-keyframes bounceIn {
  0% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.05, 1.05);
    -moz-transform: scale(1.05, 1.05);
    -ms-transform: scale(1.05, 1.05);
    -o-transform: scale(1.05, 1.05);
    transform: scale(1.05, 1.05);
  }
  70% {
    -webkit-transform: scale(0.9, 0.9);
    -moz-transform: scale(0.9, 0.9);
    -ms-transform: scale(0.9, 0.9);
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-ms-keyframes bounceIn {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
  /* line 6, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  50% {
    opacity: 1;
    -webkit-transform: scale(1.05, 1.05);
    -moz-transform: scale(1.05, 1.05);
    -ms-transform: scale(1.05, 1.05);
    -o-transform: scale(1.05, 1.05);
    transform: scale(1.05, 1.05);
  }
  /* line 9, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  70% {
    -webkit-transform: scale(0.9, 0.9);
    -moz-transform: scale(0.9, 0.9);
    -ms-transform: scale(0.9, 0.9);
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9);
  }
  /* line 11, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@keyframes bounceIn {
  0% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.05, 1.05);
    -moz-transform: scale(1.05, 1.05);
    -ms-transform: scale(1.05, 1.05);
    -o-transform: scale(1.05, 1.05);
    transform: scale(1.05, 1.05);
  }
  70% {
    -webkit-transform: scale(0.9, 0.9);
    -moz-transform: scale(0.9, 0.9);
    -ms-transform: scale(0.9, 0.9);
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-moz-keyframes bounceInDown {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(30px);
    -moz-transform: translateY(30px);
    -ms-transform: translateY(30px);
    -o-transform: translateY(30px);
    transform: translateY(30px);
  }
  80% {
    -webkit-transform: translateY(-10px);
    -moz-transform: translateY(-10px);
    -ms-transform: translateY(-10px);
    -o-transform: translateY(-10px);
    transform: translateY(-10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes bounceInDown {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(30px);
    -moz-transform: translateY(30px);
    -ms-transform: translateY(30px);
    -o-transform: translateY(30px);
    transform: translateY(30px);
  }
  80% {
    -webkit-transform: translateY(-10px);
    -moz-transform: translateY(-10px);
    -ms-transform: translateY(-10px);
    -o-transform: translateY(-10px);
    transform: translateY(-10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-o-keyframes bounceInDown {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(30px);
    -moz-transform: translateY(30px);
    -ms-transform: translateY(30px);
    -o-transform: translateY(30px);
    transform: translateY(30px);
  }
  80% {
    -webkit-transform: translateY(-10px);
    -moz-transform: translateY(-10px);
    -ms-transform: translateY(-10px);
    -o-transform: translateY(-10px);
    transform: translateY(-10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes bounceInDown {
  /* line 17, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  /* line 20, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  60% {
    opacity: 1;
    -webkit-transform: translateY(30px);
    -moz-transform: translateY(30px);
    -ms-transform: translateY(30px);
    -o-transform: translateY(30px);
    transform: translateY(30px);
  }
  /* line 23, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  80% {
    -webkit-transform: translateY(-10px);
    -moz-transform: translateY(-10px);
    -ms-transform: translateY(-10px);
    -o-transform: translateY(-10px);
    transform: translateY(-10px);
  }
  /* line 25, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes bounceInDown {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(30px);
    -moz-transform: translateY(30px);
    -ms-transform: translateY(30px);
    -o-transform: translateY(30px);
    transform: translateY(30px);
  }
  80% {
    -webkit-transform: translateY(-10px);
    -moz-transform: translateY(-10px);
    -ms-transform: translateY(-10px);
    -o-transform: translateY(-10px);
    transform: translateY(-10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes bounceInUp {
  0% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  80% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes bounceInUp {
  0% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  80% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-o-keyframes bounceInUp {
  0% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  80% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes bounceInUp {
  /* line 31, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
  /* line 34, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  60% {
    opacity: 1;
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  /* line 37, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  80% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
  }
  /* line 39, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes bounceInUp {
  0% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  80% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes bounceInRight {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(-30px);
    -moz-transform: translateX(-30px);
    -ms-transform: translateX(-30px);
    -o-transform: translateX(-30px);
    transform: translateX(-30px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-webkit-keyframes bounceInRight {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(-30px);
    -moz-transform: translateX(-30px);
    -ms-transform: translateX(-30px);
    -o-transform: translateX(-30px);
    transform: translateX(-30px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-o-keyframes bounceInRight {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(-30px);
    -moz-transform: translateX(-30px);
    -ms-transform: translateX(-30px);
    -o-transform: translateX(-30px);
    transform: translateX(-30px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-ms-keyframes bounceInRight {
  /* line 45, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  /* line 48, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  60% {
    opacity: 1;
    -webkit-transform: translateX(-30px);
    -moz-transform: translateX(-30px);
    -ms-transform: translateX(-30px);
    -o-transform: translateX(-30px);
    transform: translateX(-30px);
  }
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  /* line 53, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@keyframes bounceInRight {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(-30px);
    -moz-transform: translateX(-30px);
    -ms-transform: translateX(-30px);
    -o-transform: translateX(-30px);
    transform: translateX(-30px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-moz-keyframes bounceInLeft {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(30px);
    -moz-transform: translateX(30px);
    -ms-transform: translateX(30px);
    -o-transform: translateX(30px);
    transform: translateX(30px);
  }
  80% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-webkit-keyframes bounceInLeft {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(30px);
    -moz-transform: translateX(30px);
    -ms-transform: translateX(30px);
    -o-transform: translateX(30px);
    transform: translateX(30px);
  }
  80% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-o-keyframes bounceInLeft {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(30px);
    -moz-transform: translateX(30px);
    -ms-transform: translateX(30px);
    -o-transform: translateX(30px);
    transform: translateX(30px);
  }
  80% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-ms-keyframes bounceInLeft {
  /* line 59, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  /* line 62, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  60% {
    opacity: 1;
    -webkit-transform: translateX(30px);
    -moz-transform: translateX(30px);
    -ms-transform: translateX(30px);
    -o-transform: translateX(30px);
    transform: translateX(30px);
  }
  /* line 65, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  80% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  /* line 67, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@keyframes bounceInLeft {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(30px);
    -moz-transform: translateX(30px);
    -ms-transform: translateX(30px);
    -o-transform: translateX(30px);
    transform: translateX(30px);
  }
  80% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-moz-keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-webkit-keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-o-keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-ms-keyframes fadeOut {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    opacity: 1;
  }
  /* line 5, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    opacity: 0;
  }
}

@keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-moz-keyframes fadeOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
}

@-webkit-keyframes fadeOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
}

@-o-keyframes fadeOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
}

@-ms-keyframes fadeOutUp {
  /* line 11, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  /* line 14, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
}

@keyframes fadeOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
}

@-moz-keyframes fadeOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
}

@-webkit-keyframes fadeOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
}

@-o-keyframes fadeOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
}

@-ms-keyframes fadeOutDown {
  /* line 21, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  /* line 24, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
}

@keyframes fadeOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
}

@-moz-keyframes fadeOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
}

@-webkit-keyframes fadeOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
}

@-o-keyframes fadeOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
}

@-ms-keyframes fadeOutRight {
  /* line 31, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  /* line 34, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
}

@keyframes fadeOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
}

@-moz-keyframes fadeOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
}

@-webkit-keyframes fadeOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
}

@-o-keyframes fadeOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
}

@-ms-keyframes fadeOutLeft {
  /* line 41, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  /* line 44, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
}

@keyframes fadeOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
}

@-moz-keyframes fadeOutUpBig {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
    opacity: 0;
  }
}

@-webkit-keyframes fadeOutUpBig {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
    opacity: 0;
  }
}

@-o-keyframes fadeOutUpBig {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
    opacity: 0;
  }
}

@-ms-keyframes fadeOutUpBig {
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  /* line 54, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
    opacity: 0;
  }
}

@keyframes fadeOutUpBig {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
    opacity: 0;
  }
}

@-moz-keyframes fadeOutDownBig {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-webkit-keyframes fadeOutDownBig {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-o-keyframes fadeOutDownBig {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-ms-keyframes fadeOutDownBig {
  /* line 61, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 64, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@keyframes fadeOutDownBig {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-moz-keyframes fadeOutRightBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-webkit-keyframes fadeOutRightBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-o-keyframes fadeOutRightBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-ms-keyframes fadeOutRightBig {
  /* line 71, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  /* line 74, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@keyframes fadeOutRightBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-moz-keyframes fadeOutLeftBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-webkit-keyframes fadeOutLeftBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-o-keyframes fadeOutLeftBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-ms-keyframes fadeOutLeftBig {
  /* line 81, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  /* line 84, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@keyframes fadeOutLeftBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-moz-keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-webkit-keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-o-keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-ms-keyframes fadeIn {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    opacity: 0;
  }
  /* line 5, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    opacity: 1;
  }
}

@keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-moz-keyframes fadeInUp {
  0% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-webkit-keyframes fadeInUp {
  0% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-o-keyframes fadeInUp {
  0% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-ms-keyframes fadeInUp {
  /* line 11, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
  /* line 14, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes fadeInUp {
  0% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-moz-keyframes fadeInDown {
  0% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-webkit-keyframes fadeInDown {
  0% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-o-keyframes fadeInDown {
  0% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-ms-keyframes fadeInDown {
  /* line 21, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
  /* line 24, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes fadeInDown {
  0% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-moz-keyframes fadeInRight {
  0% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-webkit-keyframes fadeInRight {
  0% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-o-keyframes fadeInRight {
  0% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-ms-keyframes fadeInRight {
  /* line 31, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
  /* line 34, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@keyframes fadeInRight {
  0% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-moz-keyframes fadeInLeft {
  0% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-webkit-keyframes fadeInLeft {
  0% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-o-keyframes fadeInLeft {
  0% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-ms-keyframes fadeInLeft {
  /* line 41, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
  /* line 44, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@keyframes fadeInLeft {
  0% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-moz-keyframes fadeInUpBig {
  0% {
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-webkit-keyframes fadeInUpBig {
  0% {
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-o-keyframes fadeInUpBig {
  0% {
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-ms-keyframes fadeInUpBig {
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
    opacity: 0;
  }
  /* line 54, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes fadeInUpBig {
  0% {
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-moz-keyframes fadeInDownBig {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes fadeInDownBig {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-o-keyframes fadeInDownBig {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes fadeInDownBig {
  /* line 61, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  /* line 64, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes fadeInDownBig {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes fadeInRightBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-webkit-keyframes fadeInRightBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-o-keyframes fadeInRightBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-ms-keyframes fadeInRightBig {
  /* line 71, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  /* line 74, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@keyframes fadeInRightBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-moz-keyframes fadeInLeftBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-webkit-keyframes fadeInLeftBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-o-keyframes fadeInLeftBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-ms-keyframes fadeInLeftBig {
  /* line 81, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  /* line 84, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@keyframes fadeInLeftBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-moz-keyframes flip {
  0% {
    -webkit-transform: perspective(400px) rotateY(0);
    -moz-transform: perspective(400px) rotateY(0);
    -ms-transform: perspective(400px) rotateY(0);
    -o-transform: perspective(400px) rotateY(0);
    transform: perspective(400px) rotateY(0);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  40% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -o-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  50% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -o-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  80% {
    -webkit-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -moz-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -ms-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -o-transform: perspective(400px) rotateY(360deg) scale(0.95);
    transform: perspective(400px) rotateY(360deg) scale(0.95);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  100% {
    -webkit-transform: perspective(400px) scale(1);
    -moz-transform: perspective(400px) scale(1);
    -ms-transform: perspective(400px) scale(1);
    -o-transform: perspective(400px) scale(1);
    transform: perspective(400px) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

@-webkit-keyframes flip {
  0% {
    -webkit-transform: perspective(400px) rotateY(0);
    -moz-transform: perspective(400px) rotateY(0);
    -ms-transform: perspective(400px) rotateY(0);
    -o-transform: perspective(400px) rotateY(0);
    transform: perspective(400px) rotateY(0);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  40% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -o-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  50% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -o-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  80% {
    -webkit-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -moz-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -ms-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -o-transform: perspective(400px) rotateY(360deg) scale(0.95);
    transform: perspective(400px) rotateY(360deg) scale(0.95);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  100% {
    -webkit-transform: perspective(400px) scale(1);
    -moz-transform: perspective(400px) scale(1);
    -ms-transform: perspective(400px) scale(1);
    -o-transform: perspective(400px) scale(1);
    transform: perspective(400px) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

@-o-keyframes flip {
  0% {
    -webkit-transform: perspective(400px) rotateY(0);
    -moz-transform: perspective(400px) rotateY(0);
    -ms-transform: perspective(400px) rotateY(0);
    -o-transform: perspective(400px) rotateY(0);
    transform: perspective(400px) rotateY(0);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  40% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -o-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  50% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -o-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  80% {
    -webkit-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -moz-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -ms-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -o-transform: perspective(400px) rotateY(360deg) scale(0.95);
    transform: perspective(400px) rotateY(360deg) scale(0.95);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  100% {
    -webkit-transform: perspective(400px) scale(1);
    -moz-transform: perspective(400px) scale(1);
    -ms-transform: perspective(400px) scale(1);
    -o-transform: perspective(400px) scale(1);
    transform: perspective(400px) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

@-ms-keyframes flip {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  0% {
    -webkit-transform: perspective(400px) rotateY(0);
    -moz-transform: perspective(400px) rotateY(0);
    -ms-transform: perspective(400px) rotateY(0);
    -o-transform: perspective(400px) rotateY(0);
    transform: perspective(400px) rotateY(0);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  /* line 6, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  40% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -o-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  /* line 9, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  50% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -o-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  /* line 12, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  80% {
    -webkit-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -moz-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -ms-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -o-transform: perspective(400px) rotateY(360deg) scale(0.95);
    transform: perspective(400px) rotateY(360deg) scale(0.95);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  /* line 15, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  100% {
    -webkit-transform: perspective(400px) scale(1);
    -moz-transform: perspective(400px) scale(1);
    -ms-transform: perspective(400px) scale(1);
    -o-transform: perspective(400px) scale(1);
    transform: perspective(400px) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

@keyframes flip {
  0% {
    -webkit-transform: perspective(400px) rotateY(0);
    -moz-transform: perspective(400px) rotateY(0);
    -ms-transform: perspective(400px) rotateY(0);
    -o-transform: perspective(400px) rotateY(0);
    transform: perspective(400px) rotateY(0);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  40% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -o-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  50% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -o-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  80% {
    -webkit-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -moz-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -ms-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -o-transform: perspective(400px) rotateY(360deg) scale(0.95);
    transform: perspective(400px) rotateY(360deg) scale(0.95);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  100% {
    -webkit-transform: perspective(400px) scale(1);
    -moz-transform: perspective(400px) scale(1);
    -ms-transform: perspective(400px) scale(1);
    -o-transform: perspective(400px) scale(1);
    transform: perspective(400px) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

@-moz-keyframes flipInX {
  0% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateX(-10deg);
    -moz-transform: perspective(400px) rotateX(-10deg);
    -ms-transform: perspective(400px) rotateX(-10deg);
    -o-transform: perspective(400px) rotateX(-10deg);
    transform: perspective(400px) rotateX(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateX(10deg);
    -moz-transform: perspective(400px) rotateX(10deg);
    -ms-transform: perspective(400px) rotateX(10deg);
    -o-transform: perspective(400px) rotateX(10deg);
    transform: perspective(400px) rotateX(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-webkit-keyframes flipInX {
  0% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateX(-10deg);
    -moz-transform: perspective(400px) rotateX(-10deg);
    -ms-transform: perspective(400px) rotateX(-10deg);
    -o-transform: perspective(400px) rotateX(-10deg);
    transform: perspective(400px) rotateX(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateX(10deg);
    -moz-transform: perspective(400px) rotateX(10deg);
    -ms-transform: perspective(400px) rotateX(10deg);
    -o-transform: perspective(400px) rotateX(10deg);
    transform: perspective(400px) rotateX(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-o-keyframes flipInX {
  0% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateX(-10deg);
    -moz-transform: perspective(400px) rotateX(-10deg);
    -ms-transform: perspective(400px) rotateX(-10deg);
    -o-transform: perspective(400px) rotateX(-10deg);
    transform: perspective(400px) rotateX(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateX(10deg);
    -moz-transform: perspective(400px) rotateX(10deg);
    -ms-transform: perspective(400px) rotateX(10deg);
    -o-transform: perspective(400px) rotateX(10deg);
    transform: perspective(400px) rotateX(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-ms-keyframes flipInX {
  /* line 22, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  0% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  /* line 25, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  40% {
    -webkit-transform: perspective(400px) rotateX(-10deg);
    -moz-transform: perspective(400px) rotateX(-10deg);
    -ms-transform: perspective(400px) rotateX(-10deg);
    -o-transform: perspective(400px) rotateX(-10deg);
    transform: perspective(400px) rotateX(-10deg);
  }
  /* line 27, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  70% {
    -webkit-transform: perspective(400px) rotateX(10deg);
    -moz-transform: perspective(400px) rotateX(10deg);
    -ms-transform: perspective(400px) rotateX(10deg);
    -o-transform: perspective(400px) rotateX(10deg);
    transform: perspective(400px) rotateX(10deg);
  }
  /* line 29, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  100% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@keyframes flipInX {
  0% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateX(-10deg);
    -moz-transform: perspective(400px) rotateX(-10deg);
    -ms-transform: perspective(400px) rotateX(-10deg);
    -o-transform: perspective(400px) rotateX(-10deg);
    transform: perspective(400px) rotateX(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateX(10deg);
    -moz-transform: perspective(400px) rotateX(10deg);
    -ms-transform: perspective(400px) rotateX(10deg);
    -o-transform: perspective(400px) rotateX(10deg);
    transform: perspective(400px) rotateX(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-moz-keyframes flipOutX {
  0% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-webkit-keyframes flipOutX {
  0% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-o-keyframes flipOutX {
  0% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-ms-keyframes flipOutX {
  /* line 36, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  0% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 39, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  100% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@keyframes flipOutX {
  0% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-moz-keyframes flipInY {
  0% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateY(-10deg);
    -moz-transform: perspective(400px) rotateY(-10deg);
    -ms-transform: perspective(400px) rotateY(-10deg);
    -o-transform: perspective(400px) rotateY(-10deg);
    transform: perspective(400px) rotateY(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateY(10deg);
    -moz-transform: perspective(400px) rotateY(10deg);
    -ms-transform: perspective(400px) rotateY(10deg);
    -o-transform: perspective(400px) rotateY(10deg);
    transform: perspective(400px) rotateY(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-webkit-keyframes flipInY {
  0% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateY(-10deg);
    -moz-transform: perspective(400px) rotateY(-10deg);
    -ms-transform: perspective(400px) rotateY(-10deg);
    -o-transform: perspective(400px) rotateY(-10deg);
    transform: perspective(400px) rotateY(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateY(10deg);
    -moz-transform: perspective(400px) rotateY(10deg);
    -ms-transform: perspective(400px) rotateY(10deg);
    -o-transform: perspective(400px) rotateY(10deg);
    transform: perspective(400px) rotateY(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-o-keyframes flipInY {
  0% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateY(-10deg);
    -moz-transform: perspective(400px) rotateY(-10deg);
    -ms-transform: perspective(400px) rotateY(-10deg);
    -o-transform: perspective(400px) rotateY(-10deg);
    transform: perspective(400px) rotateY(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateY(10deg);
    -moz-transform: perspective(400px) rotateY(10deg);
    -ms-transform: perspective(400px) rotateY(10deg);
    -o-transform: perspective(400px) rotateY(10deg);
    transform: perspective(400px) rotateY(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-ms-keyframes flipInY {
  /* line 46, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  0% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  /* line 49, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  40% {
    -webkit-transform: perspective(400px) rotateY(-10deg);
    -moz-transform: perspective(400px) rotateY(-10deg);
    -ms-transform: perspective(400px) rotateY(-10deg);
    -o-transform: perspective(400px) rotateY(-10deg);
    transform: perspective(400px) rotateY(-10deg);
  }
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  70% {
    -webkit-transform: perspective(400px) rotateY(10deg);
    -moz-transform: perspective(400px) rotateY(10deg);
    -ms-transform: perspective(400px) rotateY(10deg);
    -o-transform: perspective(400px) rotateY(10deg);
    transform: perspective(400px) rotateY(10deg);
  }
  /* line 53, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  100% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@keyframes flipInY {
  0% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateY(-10deg);
    -moz-transform: perspective(400px) rotateY(-10deg);
    -ms-transform: perspective(400px) rotateY(-10deg);
    -o-transform: perspective(400px) rotateY(-10deg);
    transform: perspective(400px) rotateY(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateY(10deg);
    -moz-transform: perspective(400px) rotateY(10deg);
    -ms-transform: perspective(400px) rotateY(10deg);
    -o-transform: perspective(400px) rotateY(10deg);
    transform: perspective(400px) rotateY(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-moz-keyframes flipOutY {
  0% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-webkit-keyframes flipOutY {
  0% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-o-keyframes flipOutY {
  0% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-ms-keyframes flipOutY {
  /* line 60, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  0% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 63, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  100% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@keyframes flipOutY {
  0% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-moz-keyframes lightSpeedIn {
  0% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  60% {
    -webkit-transform: translateX(-20%) skewX(30deg);
    -moz-transform: translateX(-20%) skewX(30deg);
    -ms-transform: translateX(-20%) skewX(30deg);
    -o-transform: translateX(-20%) skewX(30deg);
    transform: translateX(-20%) skewX(30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  80% {
    -webkit-transform: translateX(0%) skewX(-15deg);
    -moz-transform: translateX(0%) skewX(-15deg);
    -ms-transform: translateX(0%) skewX(-15deg);
    -o-transform: translateX(0%) skewX(-15deg);
    transform: translateX(0%) skewX(-15deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-webkit-keyframes lightSpeedIn {
  0% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  60% {
    -webkit-transform: translateX(-20%) skewX(30deg);
    -moz-transform: translateX(-20%) skewX(30deg);
    -ms-transform: translateX(-20%) skewX(30deg);
    -o-transform: translateX(-20%) skewX(30deg);
    transform: translateX(-20%) skewX(30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  80% {
    -webkit-transform: translateX(0%) skewX(-15deg);
    -moz-transform: translateX(0%) skewX(-15deg);
    -ms-transform: translateX(0%) skewX(-15deg);
    -o-transform: translateX(0%) skewX(-15deg);
    transform: translateX(0%) skewX(-15deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-o-keyframes lightSpeedIn {
  0% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  60% {
    -webkit-transform: translateX(-20%) skewX(30deg);
    -moz-transform: translateX(-20%) skewX(30deg);
    -ms-transform: translateX(-20%) skewX(30deg);
    -o-transform: translateX(-20%) skewX(30deg);
    transform: translateX(-20%) skewX(30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  80% {
    -webkit-transform: translateX(0%) skewX(-15deg);
    -moz-transform: translateX(0%) skewX(-15deg);
    -ms-transform: translateX(0%) skewX(-15deg);
    -o-transform: translateX(0%) skewX(-15deg);
    transform: translateX(0%) skewX(-15deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-ms-keyframes lightSpeedIn {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/_lightspeed.sass */
  0% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  /* line 6, node_modules/compass-sass-mixins/lib/animation/animate/_lightspeed.sass */
  60% {
    -webkit-transform: translateX(-20%) skewX(30deg);
    -moz-transform: translateX(-20%) skewX(30deg);
    -ms-transform: translateX(-20%) skewX(30deg);
    -o-transform: translateX(-20%) skewX(30deg);
    transform: translateX(-20%) skewX(30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 9, node_modules/compass-sass-mixins/lib/animation/animate/_lightspeed.sass */
  80% {
    -webkit-transform: translateX(0%) skewX(-15deg);
    -moz-transform: translateX(0%) skewX(-15deg);
    -ms-transform: translateX(0%) skewX(-15deg);
    -o-transform: translateX(0%) skewX(-15deg);
    transform: translateX(0%) skewX(-15deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 12, node_modules/compass-sass-mixins/lib/animation/animate/_lightspeed.sass */
  100% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@keyframes lightSpeedIn {
  0% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  60% {
    -webkit-transform: translateX(-20%) skewX(30deg);
    -moz-transform: translateX(-20%) skewX(30deg);
    -ms-transform: translateX(-20%) skewX(30deg);
    -o-transform: translateX(-20%) skewX(30deg);
    transform: translateX(-20%) skewX(30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  80% {
    -webkit-transform: translateX(0%) skewX(-15deg);
    -moz-transform: translateX(0%) skewX(-15deg);
    -ms-transform: translateX(0%) skewX(-15deg);
    -o-transform: translateX(0%) skewX(-15deg);
    transform: translateX(0%) skewX(-15deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-moz-keyframes lightSpeedOut {
  0% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-webkit-keyframes lightSpeedOut {
  0% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-o-keyframes lightSpeedOut {
  0% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-ms-keyframes lightSpeedOut {
  /* line 19, node_modules/compass-sass-mixins/lib/animation/animate/_lightspeed.sass */
  0% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 22, node_modules/compass-sass-mixins/lib/animation/animate/_lightspeed.sass */
  100% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@keyframes lightSpeedOut {
  0% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-moz-keyframes rotateOut {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(200deg);
    -moz-transform: rotate(200deg);
    -ms-transform: rotate(200deg);
    -o-transform: rotate(200deg);
    transform: rotate(200deg);
    opacity: 0;
  }
}

@-webkit-keyframes rotateOut {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(200deg);
    -moz-transform: rotate(200deg);
    -ms-transform: rotate(200deg);
    -o-transform: rotate(200deg);
    transform: rotate(200deg);
    opacity: 0;
  }
}

@-o-keyframes rotateOut {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(200deg);
    -moz-transform: rotate(200deg);
    -ms-transform: rotate(200deg);
    -o-transform: rotate(200deg);
    transform: rotate(200deg);
    opacity: 0;
  }
}

@-ms-keyframes rotateOut {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  /* line 7, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(200deg);
    -moz-transform: rotate(200deg);
    -ms-transform: rotate(200deg);
    -o-transform: rotate(200deg);
    transform: rotate(200deg);
    opacity: 0;
  }
}

@keyframes rotateOut {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(200deg);
    -moz-transform: rotate(200deg);
    -ms-transform: rotate(200deg);
    -o-transform: rotate(200deg);
    transform: rotate(200deg);
    opacity: 0;
  }
}

@-moz-keyframes rotateOutDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-webkit-keyframes rotateOutDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-o-keyframes rotateOutDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-ms-keyframes rotateOutDownLeft {
  /* line 15, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  /* line 19, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@keyframes rotateOutDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-moz-keyframes rotateOutUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-webkit-keyframes rotateOutUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-o-keyframes rotateOutUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-ms-keyframes rotateOutUpLeft {
  /* line 27, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  /* line 31, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@keyframes rotateOutUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-moz-keyframes rotateOutDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-webkit-keyframes rotateOutDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-o-keyframes rotateOutDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-ms-keyframes rotateOutDownRight {
  /* line 39, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  /* line 43, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@keyframes rotateOutDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-moz-keyframes rotateOutUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-webkit-keyframes rotateOutUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-o-keyframes rotateOutUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-ms-keyframes rotateOutUpRight {
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  /* line 55, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@keyframes rotateOutUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-moz-keyframes rotateIn {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(-200deg);
    -moz-transform: rotate(-200deg);
    -ms-transform: rotate(-200deg);
    -o-transform: rotate(-200deg);
    transform: rotate(-200deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-webkit-keyframes rotateIn {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(-200deg);
    -moz-transform: rotate(-200deg);
    -ms-transform: rotate(-200deg);
    -o-transform: rotate(-200deg);
    transform: rotate(-200deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-o-keyframes rotateIn {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(-200deg);
    -moz-transform: rotate(-200deg);
    -ms-transform: rotate(-200deg);
    -o-transform: rotate(-200deg);
    transform: rotate(-200deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-ms-keyframes rotateIn {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(-200deg);
    -moz-transform: rotate(-200deg);
    -ms-transform: rotate(-200deg);
    -o-transform: rotate(-200deg);
    transform: rotate(-200deg);
    opacity: 0;
  }
  /* line 7, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@keyframes rotateIn {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(-200deg);
    -moz-transform: rotate(-200deg);
    -ms-transform: rotate(-200deg);
    -o-transform: rotate(-200deg);
    transform: rotate(-200deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-moz-keyframes rotateInDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-webkit-keyframes rotateInDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-o-keyframes rotateInDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-ms-keyframes rotateInDownLeft {
  /* line 15, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  /* line 19, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@keyframes rotateInDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-moz-keyframes rotateInUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-webkit-keyframes rotateInUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-o-keyframes rotateInUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-ms-keyframes rotateInUpLeft {
  /* line 27, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  /* line 31, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@keyframes rotateInUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-moz-keyframes rotateInUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-webkit-keyframes rotateInUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-o-keyframes rotateInUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-ms-keyframes rotateInUpRight {
  /* line 39, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  /* line 43, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@keyframes rotateInUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-moz-keyframes rotateInDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-webkit-keyframes rotateInDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-o-keyframes rotateInDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-ms-keyframes rotateInDownRight {
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  /* line 55, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@keyframes rotateInDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-moz-keyframes hinge {
  0% {
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  20%, 60% {
    -webkit-transform: rotate(80deg);
    -moz-transform: rotate(80deg);
    -ms-transform: rotate(80deg);
    -o-transform: rotate(80deg);
    transform: rotate(80deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  40% {
    -webkit-transform: rotate(60deg);
    -moz-transform: rotate(60deg);
    -ms-transform: rotate(60deg);
    -o-transform: rotate(60deg);
    transform: rotate(60deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  80% {
    -webkit-transform: rotate(60deg) translateY(0);
    -moz-transform: rotate(60deg) translateY(0);
    -ms-transform: rotate(60deg) translateY(0);
    -o-transform: rotate(60deg) translateY(0);
    transform: rotate(60deg) translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  100% {
    -webkit-transform: translateY(700px);
    -moz-transform: translateY(700px);
    -ms-transform: translateY(700px);
    -o-transform: translateY(700px);
    transform: translateY(700px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-webkit-keyframes hinge {
  0% {
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  20%, 60% {
    -webkit-transform: rotate(80deg);
    -moz-transform: rotate(80deg);
    -ms-transform: rotate(80deg);
    -o-transform: rotate(80deg);
    transform: rotate(80deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  40% {
    -webkit-transform: rotate(60deg);
    -moz-transform: rotate(60deg);
    -ms-transform: rotate(60deg);
    -o-transform: rotate(60deg);
    transform: rotate(60deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  80% {
    -webkit-transform: rotate(60deg) translateY(0);
    -moz-transform: rotate(60deg) translateY(0);
    -ms-transform: rotate(60deg) translateY(0);
    -o-transform: rotate(60deg) translateY(0);
    transform: rotate(60deg) translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  100% {
    -webkit-transform: translateY(700px);
    -moz-transform: translateY(700px);
    -ms-transform: translateY(700px);
    -o-transform: translateY(700px);
    transform: translateY(700px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-o-keyframes hinge {
  0% {
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  20%, 60% {
    -webkit-transform: rotate(80deg);
    -moz-transform: rotate(80deg);
    -ms-transform: rotate(80deg);
    -o-transform: rotate(80deg);
    transform: rotate(80deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  40% {
    -webkit-transform: rotate(60deg);
    -moz-transform: rotate(60deg);
    -ms-transform: rotate(60deg);
    -o-transform: rotate(60deg);
    transform: rotate(60deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  80% {
    -webkit-transform: rotate(60deg) translateY(0);
    -moz-transform: rotate(60deg) translateY(0);
    -ms-transform: rotate(60deg) translateY(0);
    -o-transform: rotate(60deg) translateY(0);
    transform: rotate(60deg) translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  100% {
    -webkit-transform: translateY(700px);
    -moz-transform: translateY(700px);
    -ms-transform: translateY(700px);
    -o-transform: translateY(700px);
    transform: translateY(700px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-ms-keyframes hinge {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  0% {
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  /* line 7, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  20%, 60% {
    -webkit-transform: rotate(80deg);
    -moz-transform: rotate(80deg);
    -ms-transform: rotate(80deg);
    -o-transform: rotate(80deg);
    transform: rotate(80deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  /* line 11, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  40% {
    -webkit-transform: rotate(60deg);
    -moz-transform: rotate(60deg);
    -ms-transform: rotate(60deg);
    -o-transform: rotate(60deg);
    transform: rotate(60deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  /* line 15, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  80% {
    -webkit-transform: rotate(60deg) translateY(0);
    -moz-transform: rotate(60deg) translateY(0);
    -ms-transform: rotate(60deg) translateY(0);
    -o-transform: rotate(60deg) translateY(0);
    transform: rotate(60deg) translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  /* line 20, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  100% {
    -webkit-transform: translateY(700px);
    -moz-transform: translateY(700px);
    -ms-transform: translateY(700px);
    -o-transform: translateY(700px);
    transform: translateY(700px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@keyframes hinge {
  0% {
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  20%, 60% {
    -webkit-transform: rotate(80deg);
    -moz-transform: rotate(80deg);
    -ms-transform: rotate(80deg);
    -o-transform: rotate(80deg);
    transform: rotate(80deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  40% {
    -webkit-transform: rotate(60deg);
    -moz-transform: rotate(60deg);
    -ms-transform: rotate(60deg);
    -o-transform: rotate(60deg);
    transform: rotate(60deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  80% {
    -webkit-transform: rotate(60deg) translateY(0);
    -moz-transform: rotate(60deg) translateY(0);
    -ms-transform: rotate(60deg) translateY(0);
    -o-transform: rotate(60deg) translateY(0);
    transform: rotate(60deg) translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  100% {
    -webkit-transform: translateY(700px);
    -moz-transform: translateY(700px);
    -ms-transform: translateY(700px);
    -o-transform: translateY(700px);
    transform: translateY(700px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-moz-keyframes rollIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
}

@-webkit-keyframes rollIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
}

@-o-keyframes rollIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
}

@-ms-keyframes rollIn {
  /* line 27, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
  /* line 30, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
}

@keyframes rollIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
}

@-moz-keyframes rollOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
}

@-webkit-keyframes rollOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
}

@-o-keyframes rollOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
}

@-ms-keyframes rollOut {
  /* line 37, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
  /* line 40, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
}

@keyframes rollOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
}

/* line 1, app/assets/stylesheets/mixins/_animations.sass */
.bounce-down {
  animation-name: bounceDown;
  animation-duration: 2s;
  animation-fill-mode: both;
  animation-iteration-count: infinite;
  animation-delay: 1s;
}

/* line 8, app/assets/stylesheets/mixins/_animations.sass */
.fade-in {
  animation: fadeIn;
  animation-duration: 0.25s;
  transition-timing-function: ease-in;
  animation-fill-mode: both;
}

/* line 14, app/assets/stylesheets/mixins/_animations.sass */
.fade-in-top {
  animation: fadeIn;
  animation-duration: 0.25s;
  transition-timing-function: ease-in;
  animation-fill-mode: both;
}

/* line 21, app/assets/stylesheets/mixins/_animations.sass */
.is-exiting .fade-in {
  animation-direction: alternate-reverse;
}

@-webkit-keyframes loading {
  0% {
    background-position-x: 0;
  }
  100% {
    background-position-x: 300px;
  }
}

@-moz-keyframes loading {
  0% {
    background-position-x: 0;
  }
  100% {
    background-position-x: 300px;
  }
}

@-ms-keyframes loading {
  /* line 25, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    background-position-x: 0;
  }
  /* line 27, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    background-position-x: 300px;
  }
}

@keyframes loading {
  0% {
    background-position-x: 0;
  }
  100% {
    background-position-x: 300px;
  }
}

@-webkit-keyframes bounceDown {
  0%, 20%, 50%, 80%, 100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
    opacity: 0.5;
  }
  40% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  60% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-moz-keyframes bounceDown {
  0%, 20%, 50%, 80%, 100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
    opacity: 0.5;
  }
  40% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  60% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-ms-keyframes bounceDown {
  /* line 31, app/assets/stylesheets/mixins/_animations.sass */
  0%, 20%, 50%, 80%, 100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
    opacity: 0.5;
  }
  /* line 34, app/assets/stylesheets/mixins/_animations.sass */
  40% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 37, app/assets/stylesheets/mixins/_animations.sass */
  60% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@keyframes bounceDown {
  0%, 20%, 50%, 80%, 100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
    opacity: 0.5;
  }
  40% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  60% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-webkit-keyframes slideFromBottomFull {
  0% {
    -webkit-transform: translateY(65vh);
    -moz-transform: translateY(65vh);
    -ms-transform: translateY(65vh);
    -o-transform: translateY(65vh);
    transform: translateY(65vh);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes slideFromBottomFull {
  0% {
    -webkit-transform: translateY(65vh);
    -moz-transform: translateY(65vh);
    -ms-transform: translateY(65vh);
    -o-transform: translateY(65vh);
    transform: translateY(65vh);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes slideFromBottomFull {
  /* line 42, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    -webkit-transform: translateY(65vh);
    -moz-transform: translateY(65vh);
    -ms-transform: translateY(65vh);
    -o-transform: translateY(65vh);
    transform: translateY(65vh);
  }
  /* line 44, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes slideFromBottomFull {
  0% {
    -webkit-transform: translateY(65vh);
    -moz-transform: translateY(65vh);
    -ms-transform: translateY(65vh);
    -o-transform: translateY(65vh);
    transform: translateY(65vh);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes fadeIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-moz-keyframes fadeIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-ms-keyframes fadeIn {
  /* line 48, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  /* line 50, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@keyframes fadeIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-webkit-keyframes fadeInTop {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes fadeInTop {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes fadeInTop {
  /* line 54, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  /* line 57, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes fadeInTop {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes fadeInLeft {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(50px);
    -moz-transform: translateX(50px);
    -ms-transform: translateX(50px);
    -o-transform: translateX(50px);
    transform: translateX(50px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes fadeInLeft {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(50px);
    -moz-transform: translateX(50px);
    -ms-transform: translateX(50px);
    -o-transform: translateX(50px);
    transform: translateX(50px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes fadeInLeft {
  /* line 62, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(50px);
    -moz-transform: translateX(50px);
    -ms-transform: translateX(50px);
    -o-transform: translateX(50px);
    transform: translateX(50px);
  }
  /* line 65, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes fadeInLeft {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(50px);
    -moz-transform: translateX(50px);
    -ms-transform: translateX(50px);
    -o-transform: translateX(50px);
    transform: translateX(50px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes slideInTopBig {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(60px);
    -moz-transform: translateY(60px);
    -ms-transform: translateY(60px);
    -o-transform: translateY(60px);
    transform: translateY(60px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes slideInTopBig {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(60px);
    -moz-transform: translateY(60px);
    -ms-transform: translateY(60px);
    -o-transform: translateY(60px);
    transform: translateY(60px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes slideInTopBig {
  /* line 70, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(60px);
    -moz-transform: translateY(60px);
    -ms-transform: translateY(60px);
    -o-transform: translateY(60px);
    transform: translateY(60px);
  }
  /* line 73, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes slideInTopBig {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(60px);
    -moz-transform: translateY(60px);
    -ms-transform: translateY(60px);
    -o-transform: translateY(60px);
    transform: translateY(60px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes fadeOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-moz-keyframes fadeOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-ms-keyframes fadeOut {
  /* line 78, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 80, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@keyframes fadeOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-webkit-keyframes blink {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  50% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-moz-keyframes blink {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  50% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-ms-keyframes blink {
  /* line 84, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 86, app/assets/stylesheets/mixins/_animations.sass */
  50% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  /* line 88, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@keyframes blink {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  50% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-webkit-keyframes rotate {
  0% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

@-moz-keyframes rotate {
  0% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

@-ms-keyframes rotate {
  /* line 92, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  /* line 94, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

@keyframes rotate {
  0% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

/* line 1, app/assets/stylesheets/common/_buttons.sass */
.btn, .cc-btn, #logotype.form-group.image-upload label, .form-group.image-upload label {
  position: relative;
  display: -webkit-inline-flex;
  display: inline-flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
  width: auto;
  height: 2.5rem;
  font-family: "Work Sans", sans-serif;
  font-weight: 600;
  text-align: center;
  font-size: 0.875rem;
  cursor: pointer;
  outline: none;
  max-width: 100%;
  background: none;
  padding: 0 0.9375rem;
  text-decoration: none !important;
  color: #000000;
  background-color: #FFCD00;
  border: 1px solid #FFCD00;
  color: #000000;
  transition: all 0.2s ease;
  border-radius: 4px;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

/* line 26, app/assets/stylesheets/common/_buttons.sass */
.btn:hover, .cc-btn:hover, #logotype.form-group.image-upload label:hover, .form-group.image-upload label:hover, .btn.hover, .hover.cc-btn, #logotype.form-group.image-upload label.hover, .form-group.image-upload label.hover {
  background-color: #FFE166;
  border-color: #FFE166;
}

/* line 30, app/assets/stylesheets/common/_buttons.sass */
.btn:active, .cc-btn:active, #logotype.form-group.image-upload label:active, .form-group.image-upload label:active, .btn.active, .active.cc-btn, #logotype.form-group.image-upload label.active, .form-group.image-upload label.active {
  background-color: #E5B800;
  border-color: #E5B800;
}

/* line 34, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-block, .btn-block.cc-btn, #logotype.form-group.image-upload label.btn-block, .form-group.image-upload label.btn-block {
  width: 100%;
}

/* line 37, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-primary, .cc-btn, #logotype.form-group.image-upload label.btn-primary, #logotype.form-group.image-upload label.cc-btn, .form-group.image-upload label.btn-primary, .form-group.image-upload label.cc-btn, .btn.btn-yellow, #logotype.form-group.image-upload label.btn-yellow, .form-group.image-upload label.btn-yellow {
  color: #000000;
  background-color: #FFCD00;
  border-color: #FFCD00;
}

/* line 42, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-primary:hover, .cc-btn:hover, #logotype.form-group.image-upload label.btn-primary:hover, #logotype.form-group.image-upload label.cc-btn:hover, .form-group.image-upload label.btn-primary:hover, .form-group.image-upload label.cc-btn:hover, .btn.btn-primary.hover, .hover.cc-btn, #logotype.form-group.image-upload label.btn-primary.hover, #logotype.form-group.image-upload label.hover.cc-btn, .form-group.image-upload label.btn-primary.hover, .form-group.image-upload label.hover.cc-btn, .btn.btn-yellow:hover, #logotype.form-group.image-upload label.btn-yellow:hover, .form-group.image-upload label.btn-yellow:hover, .btn.btn-yellow.hover, #logotype.form-group.image-upload label.btn-yellow.hover, .form-group.image-upload label.btn-yellow.hover {
  background-color: #FFE166;
  border-color: #FFE166;
}

/* line 46, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-primary:active, .cc-btn:active, #logotype.form-group.image-upload label.btn-primary:active, #logotype.form-group.image-upload label.cc-btn:active, .form-group.image-upload label.btn-primary:active, .form-group.image-upload label.cc-btn:active, .btn.btn-primary.active, .active.cc-btn, #logotype.form-group.image-upload label.btn-primary.active, #logotype.form-group.image-upload label.active.cc-btn, .form-group.image-upload label.btn-primary.active, .form-group.image-upload label.active.cc-btn, .btn.btn-yellow:active, #logotype.form-group.image-upload label.btn-yellow:active, .form-group.image-upload label.btn-yellow:active, .btn.btn-yellow.active, #logotype.form-group.image-upload label.btn-yellow.active, .form-group.image-upload label.btn-yellow.active {
  background-color: #E5B800;
  border-color: #E5B800;
}

/* line 50, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-secondary, .btn-secondary.cc-btn, #logotype.form-group.image-upload label, .form-group.image-upload label.btn-secondary, .btn.btn-black, .btn-black.cc-btn, .form-group.image-upload label.btn-black {
  background-color: #000000;
  border-color: #000000;
  color: #ffffff;
}

/* line 55, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-secondary:hover, .btn-secondary.cc-btn:hover, #logotype.form-group.image-upload label:hover, .form-group.image-upload label.btn-secondary:hover, .btn.btn-secondary.hover, .btn-secondary.hover.cc-btn, #logotype.form-group.image-upload label.hover, .form-group.image-upload label.btn-secondary.hover, .btn.btn-black:hover, .btn-black.cc-btn:hover, .form-group.image-upload label.btn-black:hover, .btn.btn-black.hover, .btn-black.hover.cc-btn, .form-group.image-upload label.btn-black.hover {
  background-color: #2B2B2B;
  border-color: #2B2B2B;
}

/* line 59, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-secondary:active, .btn-secondary.cc-btn:active, #logotype.form-group.image-upload label:active, .form-group.image-upload label.btn-secondary:active, .btn.btn-secondary.active, .btn-secondary.active.cc-btn, #logotype.form-group.image-upload label.active, .form-group.image-upload label.btn-secondary.active, .btn.btn-black:active, .btn-black.cc-btn:active, .form-group.image-upload label.btn-black:active, .btn.btn-black.active, .btn-black.active.cc-btn, .form-group.image-upload label.btn-black.active {
  background-color: #4C4C4C;
  border-color: #4C4C4C;
}

/* line 63, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-secondary.btn-outline, .btn-secondary.btn-outline.cc-btn, #logotype.form-group.image-upload label.btn-outline, .form-group.image-upload label.btn-secondary.btn-outline, .btn.btn-black.btn-outline, .btn-black.btn-outline.cc-btn, .form-group.image-upload label.btn-black.btn-outline {
  background: none;
  color: #000000;
}

/* line 67, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-secondary.btn-outline:hover, .btn-secondary.btn-outline.cc-btn:hover, #logotype.form-group.image-upload label.btn-outline:hover, .form-group.image-upload label.btn-secondary.btn-outline:hover, .btn.btn-secondary.btn-outline.hover, .btn-secondary.btn-outline.hover.cc-btn, #logotype.form-group.image-upload label.btn-outline.hover, .form-group.image-upload label.btn-secondary.btn-outline.hover, .btn.btn-black.btn-outline:hover, .btn-black.btn-outline.cc-btn:hover, .form-group.image-upload label.btn-black.btn-outline:hover, .btn.btn-black.btn-outline.hover, .btn-black.btn-outline.hover.cc-btn, .form-group.image-upload label.btn-black.btn-outline.hover {
  background: rgba(0, 0, 0, 0.05);
}

/* line 70, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-secondary.btn-outline:active, .btn-secondary.btn-outline.cc-btn:active, #logotype.form-group.image-upload label.btn-outline:active, .form-group.image-upload label.btn-secondary.btn-outline:active, .btn.btn-secondary.btn-outline.active, .btn-secondary.btn-outline.active.cc-btn, #logotype.form-group.image-upload label.btn-outline.active, .form-group.image-upload label.btn-secondary.btn-outline.active, .btn.btn-black.btn-outline:active, .btn-black.btn-outline.cc-btn:active, .form-group.image-upload label.btn-black.btn-outline:active, .btn.btn-black.btn-outline.active, .btn-black.btn-outline.active.cc-btn, .form-group.image-upload label.btn-black.btn-outline.active {
  background: rgba(0, 0, 0, 0.2);
}

/* line 73, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-tertiary, .btn-tertiary.cc-btn, #logotype.form-group.image-upload label.btn-tertiary, .form-group.image-upload label.btn-tertiary, .btn.btn-white, .btn-white.cc-btn, #logotype.form-group.image-upload label.btn-white, .form-group.image-upload label.btn-white {
  background-color: #ffffff;
  border-color: #ffffff;
  color: #000000;
}

/* line 78, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-tertiary:hover, .btn-tertiary.cc-btn:hover, #logotype.form-group.image-upload label.btn-tertiary:hover, .form-group.image-upload label.btn-tertiary:hover, .btn.btn-tertiary.hover, .btn-tertiary.hover.cc-btn, #logotype.form-group.image-upload label.btn-tertiary.hover, .form-group.image-upload label.btn-tertiary.hover, .btn.btn-white:hover, .btn-white.cc-btn:hover, #logotype.form-group.image-upload label.btn-white:hover, .form-group.image-upload label.btn-white:hover, .btn.btn-white.hover, .btn-white.hover.cc-btn, #logotype.form-group.image-upload label.btn-white.hover, .form-group.image-upload label.btn-white.hover {
  background-color: #E1E1E1;
  border-color: #E1E1E1;
}

/* line 82, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-tertiary:active, .btn-tertiary.cc-btn:active, #logotype.form-group.image-upload label.btn-tertiary:active, .form-group.image-upload label.btn-tertiary:active, .btn.btn-tertiary.active, .btn-tertiary.active.cc-btn, #logotype.form-group.image-upload label.btn-tertiary.active, .form-group.image-upload label.btn-tertiary.active, .btn.btn-white:active, .btn-white.cc-btn:active, #logotype.form-group.image-upload label.btn-white:active, .form-group.image-upload label.btn-white:active, .btn.btn-white.active, .btn-white.active.cc-btn, #logotype.form-group.image-upload label.btn-white.active, .form-group.image-upload label.btn-white.active {
  background-color: #C8C8C8;
  border-color: #C8C8C8;
}

/* line 86, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-tertiary.btn-outline, .btn-tertiary.btn-outline.cc-btn, #logotype.form-group.image-upload label.btn-tertiary.btn-outline, .form-group.image-upload label.btn-tertiary.btn-outline, .btn.btn-white.btn-outline, .btn-white.btn-outline.cc-btn, #logotype.form-group.image-upload label.btn-white.btn-outline, .form-group.image-upload label.btn-white.btn-outline {
  background: none;
  color: #ffffff;
}

/* line 90, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-tertiary.btn-outline:hover, .btn-tertiary.btn-outline.cc-btn:hover, #logotype.form-group.image-upload label.btn-tertiary.btn-outline:hover, .form-group.image-upload label.btn-tertiary.btn-outline:hover, .btn.btn-white.btn-outline:hover, .btn-white.btn-outline.cc-btn:hover, #logotype.form-group.image-upload label.btn-white.btn-outline:hover, .form-group.image-upload label.btn-white.btn-outline:hover {
  background: rgba(0, 0, 0, 0.1);
}

/* line 93, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-tertiary.btn-outline:active, .btn-tertiary.btn-outline.cc-btn:active, #logotype.form-group.image-upload label.btn-tertiary.btn-outline:active, .form-group.image-upload label.btn-tertiary.btn-outline:active, .btn.btn-tertiary.btn-outline.active, .btn-tertiary.btn-outline.active.cc-btn, #logotype.form-group.image-upload label.btn-tertiary.btn-outline.active, .form-group.image-upload label.btn-tertiary.btn-outline.active, .btn.btn-white.btn-outline:active, .btn-white.btn-outline.cc-btn:active, #logotype.form-group.image-upload label.btn-white.btn-outline:active, .form-group.image-upload label.btn-white.btn-outline:active, .btn.btn-white.btn-outline.active, .btn-white.btn-outline.active.cc-btn, #logotype.form-group.image-upload label.btn-white.btn-outline.active, .form-group.image-upload label.btn-white.btn-outline.active {
  background: rgba(0, 0, 0, 0.4);
}

/* line 96, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-danger, .btn-danger.cc-btn, #logotype.form-group.image-upload label.btn-danger, .form-group.image-upload label.btn-danger, .btn.btn-red, .btn-red.cc-btn, #logotype.form-group.image-upload label.btn-red, .form-group.image-upload label.btn-red {
  background-color: #CE5947;
  border-color: #CE5947;
  color: #ffffff;
}

/* line 101, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-danger:hover, .btn-danger.cc-btn:hover, #logotype.form-group.image-upload label.btn-danger:hover, .form-group.image-upload label.btn-danger:hover, .btn.btn-danger.hover, .btn-danger.hover.cc-btn, #logotype.form-group.image-upload label.btn-danger.hover, .form-group.image-upload label.btn-danger.hover, .btn.btn-red:hover, .btn-red.cc-btn:hover, #logotype.form-group.image-upload label.btn-red:hover, .form-group.image-upload label.btn-red:hover, .btn.btn-red.hover, .btn-red.hover.cc-btn, #logotype.form-group.image-upload label.btn-red.hover, .form-group.image-upload label.btn-red.hover {
  background-color: #D87C6E;
  border-color: #D87C6E;
}

/* line 105, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-danger:active, .btn-danger.cc-btn:active, #logotype.form-group.image-upload label.btn-danger:active, .form-group.image-upload label.btn-danger:active, .btn.btn-danger.active, .btn-danger.active.cc-btn, #logotype.form-group.image-upload label.btn-danger.active, .form-group.image-upload label.btn-danger.active, .btn.btn-red:active, .btn-red.cc-btn:active, #logotype.form-group.image-upload label.btn-red:active, .form-group.image-upload label.btn-red:active, .btn.btn-red.active, .btn-red.active.cc-btn, #logotype.form-group.image-upload label.btn-red.active, .form-group.image-upload label.btn-red.active {
  background-color: #AF4636;
  border-color: #AF4636;
}

/* line 109, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-danger.btn-outline, .btn-danger.btn-outline.cc-btn, #logotype.form-group.image-upload label.btn-danger.btn-outline, .form-group.image-upload label.btn-danger.btn-outline, .btn.btn-red.btn-outline, .btn-red.btn-outline.cc-btn, #logotype.form-group.image-upload label.btn-red.btn-outline, .form-group.image-upload label.btn-red.btn-outline {
  background: none;
  color: #CE5947;
}

/* line 113, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-danger.btn-outline:hover, .btn-danger.btn-outline.cc-btn:hover, #logotype.form-group.image-upload label.btn-danger.btn-outline:hover, .form-group.image-upload label.btn-danger.btn-outline:hover, .btn.btn-red.btn-outline:hover, .btn-red.btn-outline.cc-btn:hover, #logotype.form-group.image-upload label.btn-red.btn-outline:hover, .form-group.image-upload label.btn-red.btn-outline:hover {
  border-color: #D87C6E;
}

/* line 116, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-danger.btn-outline:active, .btn-danger.btn-outline.cc-btn:active, #logotype.form-group.image-upload label.btn-danger.btn-outline:active, .form-group.image-upload label.btn-danger.btn-outline:active, .btn.btn-danger.btn-outline.active, .btn-danger.btn-outline.active.cc-btn, #logotype.form-group.image-upload label.btn-danger.btn-outline.active, .form-group.image-upload label.btn-danger.btn-outline.active, .btn.btn-red.btn-outline:active, .btn-red.btn-outline.cc-btn:active, #logotype.form-group.image-upload label.btn-red.btn-outline:active, .form-group.image-upload label.btn-red.btn-outline:active, .btn.btn-red.btn-outline.active, .btn-red.btn-outline.active.cc-btn, #logotype.form-group.image-upload label.btn-red.btn-outline.active, .form-group.image-upload label.btn-red.btn-outline.active {
  border-color: #AF4636;
}

/* line 119, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-warning, .btn-warning.cc-btn, #logotype.form-group.image-upload label.btn-warning, .form-group.image-upload label.btn-warning, .btn.btn-orange, .btn-orange.cc-btn, #logotype.form-group.image-upload label.btn-orange, .form-group.image-upload label.btn-orange {
  background-color: #E4AE56;
  border-color: #E4AE56;
  color: #ffffff;
}

/* line 124, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-warning:hover, .btn-warning.cc-btn:hover, #logotype.form-group.image-upload label.btn-warning:hover, .form-group.image-upload label.btn-warning:hover, .btn.btn-warning.hover, .btn-warning.hover.cc-btn, #logotype.form-group.image-upload label.btn-warning.hover, .form-group.image-upload label.btn-warning.hover, .btn.btn-orange:hover, .btn-orange.cc-btn:hover, #logotype.form-group.image-upload label.btn-orange:hover, .form-group.image-upload label.btn-orange:hover, .btn.btn-orange.hover, .btn-orange.hover.cc-btn, #logotype.form-group.image-upload label.btn-orange.hover, .form-group.image-upload label.btn-orange.hover {
  background-color: #EBC484;
  border-color: #EBC484;
}

/* line 128, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-warning:active, .btn-warning.cc-btn:active, #logotype.form-group.image-upload label.btn-warning:active, .form-group.image-upload label.btn-warning:active, .btn.btn-warning.active, .btn-warning.active.cc-btn, #logotype.form-group.image-upload label.btn-warning.active, .form-group.image-upload label.btn-warning.active, .btn.btn-orange:active, .btn-orange.cc-btn:active, #logotype.form-group.image-upload label.btn-orange:active, .form-group.image-upload label.btn-orange:active, .btn.btn-orange.active, .btn-orange.active.cc-btn, #logotype.form-group.image-upload label.btn-orange.active, .form-group.image-upload label.btn-orange.active {
  background-color: #B97F22;
  border-color: #B97F22;
}

/* line 132, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-warning.btn-outline, .btn-warning.btn-outline.cc-btn, #logotype.form-group.image-upload label.btn-warning.btn-outline, .form-group.image-upload label.btn-warning.btn-outline, .btn.btn-orange.btn-outline, .btn-orange.btn-outline.cc-btn, #logotype.form-group.image-upload label.btn-orange.btn-outline, .form-group.image-upload label.btn-orange.btn-outline {
  background: none;
  color: #E4AE56;
}

/* line 136, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-warning.btn-outline:hover, .btn-warning.btn-outline.cc-btn:hover, #logotype.form-group.image-upload label.btn-warning.btn-outline:hover, .form-group.image-upload label.btn-warning.btn-outline:hover, .btn.btn-orange.btn-outline:hover, .btn-orange.btn-outline.cc-btn:hover, #logotype.form-group.image-upload label.btn-orange.btn-outline:hover, .form-group.image-upload label.btn-orange.btn-outline:hover {
  border-color: #EBC484;
}

/* line 139, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-warning.btn-outline:active, .btn-warning.btn-outline.cc-btn:active, #logotype.form-group.image-upload label.btn-warning.btn-outline:active, .form-group.image-upload label.btn-warning.btn-outline:active, .btn.btn-warning.btn-outline.active, .btn-warning.btn-outline.active.cc-btn, #logotype.form-group.image-upload label.btn-warning.btn-outline.active, .form-group.image-upload label.btn-warning.btn-outline.active, .btn.btn-orange.btn-outline:active, .btn-orange.btn-outline.cc-btn:active, #logotype.form-group.image-upload label.btn-orange.btn-outline:active, .form-group.image-upload label.btn-orange.btn-outline:active, .btn.btn-orange.btn-outline.active, .btn-orange.btn-outline.active.cc-btn, #logotype.form-group.image-upload label.btn-orange.btn-outline.active, .form-group.image-upload label.btn-orange.btn-outline.active {
  border-color: #B97F22;
}

/* line 142, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-lg, .btn-lg.cc-btn, #logotype.form-group.image-upload label.btn-lg, .form-group.image-upload label.btn-lg, .btn.btn-large, .btn-large.cc-btn, #logotype.form-group.image-upload label.btn-large, .form-group.image-upload label.btn-large, .btn.btn-big, .btn-big.cc-btn, #logotype.form-group.image-upload label.btn-big, .form-group.image-upload label.btn-big {
  font-size: 1rem;
  padding: 0 1.25rem;
  height: 3rem;
}

/* line 147, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-lg i, .btn-lg.cc-btn i, #logotype.form-group.image-upload label.btn-lg i, .form-group.image-upload label.btn-lg i, .btn.btn-large i, .btn-large.cc-btn i, #logotype.form-group.image-upload label.btn-large i, .form-group.image-upload label.btn-large i, .btn.btn-big i, .btn-big.cc-btn i, #logotype.form-group.image-upload label.btn-big i, .form-group.image-upload label.btn-big i {
  font-size: 0.625rem;
}

/* line 150, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-sm, .cc-btn, #logotype.form-group.image-upload label.btn-sm, #logotype.form-group.image-upload label.cc-btn, .form-group.image-upload label, .btn.btn-small, #logotype.form-group.image-upload label.btn-small, .btn.btn-xs, #logotype.form-group.image-upload label.btn-xs {
  font-size: 0.875rem;
  padding: 0 1.0625rem;
}

/* line 154, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-sm, .cc-btn, #logotype.form-group.image-upload label.btn-sm, #logotype.form-group.image-upload label.cc-btn, .form-group.image-upload label, .btn.btn-small, #logotype.form-group.image-upload label.btn-small {
  height: 2.5rem;
}

/* line 157, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-xs, .btn-xs.cc-btn, #logotype.form-group.image-upload label.btn-xs, .form-group.image-upload label.btn-xs {
  height: 2rem;
}

/* line 160, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-xs i, .btn-xs.cc-btn i, #logotype.form-group.image-upload label.btn-xs i, .form-group.image-upload label.btn-xs i {
  font-size: 0.75rem;
}

/* line 163, app/assets/stylesheets/common/_buttons.sass */
.btn.disabled, .disabled.cc-btn, #logotype.form-group.image-upload label.disabled, .form-group.image-upload label.disabled, .btn.btn-disabled, .btn-disabled.cc-btn, #logotype.form-group.image-upload label.btn-disabled, .form-group.image-upload label.btn-disabled, .btn:disabled, .cc-btn:disabled, #logotype.form-group.image-upload label:disabled, .form-group.image-upload label:disabled, .btn.inactive, .inactive.cc-btn, #logotype.form-group.image-upload label.inactive, .form-group.image-upload label.inactive {
  background-color: #D6D2CC;
  border-color: #D6D2CC;
  color: #8F8C88;
  cursor: not-allowed;
}

/* line 172, app/assets/stylesheets/common/_buttons.sass */
.btn i, .cc-btn i, #logotype.form-group.image-upload label i, .form-group.image-upload label i {
  -webkit-align-self: center;
  align-self: center;
  line-height: 1;
  font-size: 0.75rem;
  margin-right: 0.3125rem;
}

/* line 178, app/assets/stylesheets/common/_buttons.sass */
.btn i::before, .cc-btn i::before, #logotype.form-group.image-upload label i::before, .form-group.image-upload label i::before {
  display: block;
}

/* line 181, app/assets/stylesheets/common/_buttons.sass */
.btn span + i, .cc-btn span + i, #logotype.form-group.image-upload label span + i, .form-group.image-upload label span + i {
  margin: 0 0 0 0.3125rem;
}

/* line 184, app/assets/stylesheets/common/_buttons.sass */
.btn span, .cc-btn span, #logotype.form-group.image-upload label span, .form-group.image-upload label span {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* line 190, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-icon i, .btn-icon.cc-btn i, #logotype.form-group.image-upload label.btn-icon i, .form-group.image-upload label.btn-icon i, .btn.btn-icon span, .btn-icon.cc-btn span, #logotype.form-group.image-upload label.btn-icon span, .form-group.image-upload label.btn-icon span {
  margin-right: 0;
  font-size: 1rem;
}

/* line 194, app/assets/stylesheets/common/_buttons.sass */
.btn-margin-right {
  margin-right: 10px;
}

/* line 197, app/assets/stylesheets/common/_buttons.sass */
.btn-margin-left {
  margin-left: 10px;
}

/* line 200, app/assets/stylesheets/common/_buttons.sass */
.btn-loader {
  margin-left: 10px;
}

/* line 202, app/assets/stylesheets/common/_buttons.sass */
.btn-loader, .btn-loader[class^="wui-icon-"] {
  font-size: 23px;
  color: #737373;
}

/* line 206, app/assets/stylesheets/common/_buttons.sass */
.btn-link {
  padding: 6px 8px;
}

/* line 208, app/assets/stylesheets/common/_buttons.sass */
.btn-link, .btn-link:hover {
  background: none;
  border-color: transparent;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
  box-shadow: none;
  -webkit-border-radius: 0;
  -moz-border-radius: 0;
  -ms-border-radius: 0;
  -o-border-radius: 0;
  border-radius: 0;
}

/* line 213, app/assets/stylesheets/common/_buttons.sass */
.btn-link span {
  border-bottom: 1px solid rgba(255, 255, 255, 0.5);
  -webkit-transition: border-color 0.3s false;
  -moz-transition: border-color 0.3s false false;
  -o-transition: border-color 0.3s false false;
  transition: border-color 0.3s;
}

/* line 217, app/assets/stylesheets/common/_buttons.sass */
.btn-link:hover span {
  border-color: #ffffff;
}

/* line 220, app/assets/stylesheets/common/_buttons.sass */
.btn-social {
  display: inline-block;
  padding-top: 0;
  padding-left: 0;
  padding-bottom: 0;
  text-decoration: none !important;
  -webkit-border-radius: 2px;
  -moz-border-radius: 2px;
  -ms-border-radius: 2px;
  -o-border-radius: 2px;
  border-radius: 2px;
  -webkit-transition: background-color 0.3s false;
  -moz-transition: background-color 0.3s false false;
  -o-transition: background-color 0.3s false false;
  transition: background-color 0.3s;
}

/* line 228, app/assets/stylesheets/common/_buttons.sass */
.btn-social i {
  border-right: 1px solid rgba(255, 255, 255, 0.2);
}

/* line 230, app/assets/stylesheets/common/_buttons.sass */
.btn-social i, .btn-social span {
  padding: 20px;
}

/* line 234, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-linkedin, .btn-linkedin.cc-btn, #logotype.form-group.image-upload label.btn-linkedin, .form-group.image-upload label.btn-linkedin {
  background: #0077b5;
}

/* line 236, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-linkedin:hover, .btn-linkedin.cc-btn:hover, #logotype.form-group.image-upload label.btn-linkedin:hover, .form-group.image-upload label.btn-linkedin:hover {
  background: #00659a;
}

/* line 238, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-linkedin:active, .btn-linkedin.cc-btn:active, #logotype.form-group.image-upload label.btn-linkedin:active, .form-group.image-upload label.btn-linkedin:active {
  background: #005f91;
}

/* line 241, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-github, .btn-github.cc-btn, #logotype.form-group.image-upload label.btn-github, .form-group.image-upload label.btn-github {
  background: #333333;
}

/* line 243, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-github:hover, .btn-github.cc-btn:hover, #logotype.form-group.image-upload label.btn-github:hover, .form-group.image-upload label.btn-github:hover {
  background: #2b2b2b;
}

/* line 245, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-github:active, .btn-github.cc-btn:active, #logotype.form-group.image-upload label.btn-github:active, .form-group.image-upload label.btn-github:active {
  background: #292929;
}

/* line 248, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-stackoverflow, .btn-stackoverflow.cc-btn, #logotype.form-group.image-upload label.btn-stackoverflow, .form-group.image-upload label.btn-stackoverflow {
  background: #E07E08;
}

/* line 250, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-stackoverflow:hover, .btn-stackoverflow.cc-btn:hover, #logotype.form-group.image-upload label.btn-stackoverflow:hover, .form-group.image-upload label.btn-stackoverflow:hover {
  background: #be6b07;
}

/* line 252, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-stackoverflow:active, .btn-stackoverflow.cc-btn:active, #logotype.form-group.image-upload label.btn-stackoverflow:active, .form-group.image-upload label.btn-stackoverflow:active {
  background: #b36506;
}

/* line 255, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-dribbble, .btn-dribbble.cc-btn, #logotype.form-group.image-upload label.btn-dribbble, .form-group.image-upload label.btn-dribbble {
  background: #c81d60;
}

/* line 257, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-dribbble:hover, .btn-dribbble.cc-btn:hover, #logotype.form-group.image-upload label.btn-dribbble:hover, .form-group.image-upload label.btn-dribbble:hover {
  background: #aa1952;
}

/* line 259, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-dribbble:active, .btn-dribbble.cc-btn:active, #logotype.form-group.image-upload label.btn-dribbble:active, .form-group.image-upload label.btn-dribbble:active {
  background: #a0174d;
}

/* line 262, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-behance, .btn-behance.cc-btn, #logotype.form-group.image-upload label.btn-behance, .form-group.image-upload label.btn-behance {
  background: #2b2b2b;
}

/* line 264, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-behance:hover, .btn-behance.cc-btn:hover, #logotype.form-group.image-upload label.btn-behance:hover, .form-group.image-upload label.btn-behance:hover {
  background: #252525;
}

/* line 266, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-behance:active, .btn-behance.cc-btn:active, #logotype.form-group.image-upload label.btn-behance:active, .form-group.image-upload label.btn-behance:active {
  background: #222222;
}

/* line 1, app/assets/stylesheets/common/_grid.sass */
.flex-container {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: flex-start;
  align-items: flex-start;
}

/* line 5, app/assets/stylesheets/common/_grid.sass */
.flex-container.stretch {
  -webkit-align-items: stretch;
  align-items: stretch;
}

/* line 8, app/assets/stylesheets/common/_grid.sass */
.grid {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
}

/* line 12, app/assets/stylesheets/common/_grid.sass */
.grid .col {
  box-sizing: border-box;
}

/* line 17, app/assets/stylesheets/common/_grid.sass */
.grid.with-1-columns > .col {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  width: calc(100% / 1);
}

/* line 21, app/assets/stylesheets/common/_grid.sass */
.grid.with-1-columns > .col-full {
  width: 100%;
}

/* line 24, app/assets/stylesheets/common/_grid.sass */
.grid.with-1-columns > .col-double {
  width: calc(200% / 1);
}

/* line 29, app/assets/stylesheets/common/_grid.sass */
.grid.with-1-columns.with-separator > .col:nth-child(1n)::after {
  opacity: 0;
}

/* line 33, app/assets/stylesheets/common/_grid.sass */
.grid.with-1-columns.with-separator > .col:nth-child(1n+1)::before {
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% * 1);
  height: 1px;
  background-color: #000000;
  content: " ";
}

/* line 43, app/assets/stylesheets/common/_grid.sass */
.grid.with-1-columns.with-separator > .col:first-child::before {
  display: none;
}

/* line 17, app/assets/stylesheets/common/_grid.sass */
.grid.with-2-columns > .col {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  width: calc(100% / 2);
}

/* line 21, app/assets/stylesheets/common/_grid.sass */
.grid.with-2-columns > .col-full {
  width: 100%;
}

/* line 24, app/assets/stylesheets/common/_grid.sass */
.grid.with-2-columns > .col-double {
  width: calc(200% / 2);
}

/* line 29, app/assets/stylesheets/common/_grid.sass */
.grid.with-2-columns.with-separator > .col:nth-child(2n)::after {
  opacity: 0;
}

/* line 33, app/assets/stylesheets/common/_grid.sass */
.grid.with-2-columns.with-separator > .col:nth-child(2n+1)::before {
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% * 2);
  height: 1px;
  background-color: #000000;
  content: " ";
}

/* line 43, app/assets/stylesheets/common/_grid.sass */
.grid.with-2-columns.with-separator > .col:first-child::before {
  display: none;
}

/* line 17, app/assets/stylesheets/common/_grid.sass */
.grid.with-3-columns > .col {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  width: calc(100% / 3);
}

/* line 21, app/assets/stylesheets/common/_grid.sass */
.grid.with-3-columns > .col-full {
  width: 100%;
}

/* line 24, app/assets/stylesheets/common/_grid.sass */
.grid.with-3-columns > .col-double {
  width: calc(200% / 3);
}

/* line 29, app/assets/stylesheets/common/_grid.sass */
.grid.with-3-columns.with-separator > .col:nth-child(3n)::after {
  opacity: 0;
}

/* line 33, app/assets/stylesheets/common/_grid.sass */
.grid.with-3-columns.with-separator > .col:nth-child(3n+1)::before {
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% * 3);
  height: 1px;
  background-color: #000000;
  content: " ";
}

/* line 43, app/assets/stylesheets/common/_grid.sass */
.grid.with-3-columns.with-separator > .col:first-child::before {
  display: none;
}

/* line 17, app/assets/stylesheets/common/_grid.sass */
.grid.with-4-columns > .col {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  width: calc(100% / 4);
}

/* line 21, app/assets/stylesheets/common/_grid.sass */
.grid.with-4-columns > .col-full {
  width: 100%;
}

/* line 24, app/assets/stylesheets/common/_grid.sass */
.grid.with-4-columns > .col-double {
  width: calc(200% / 4);
}

/* line 29, app/assets/stylesheets/common/_grid.sass */
.grid.with-4-columns.with-separator > .col:nth-child(4n)::after {
  opacity: 0;
}

/* line 33, app/assets/stylesheets/common/_grid.sass */
.grid.with-4-columns.with-separator > .col:nth-child(4n+1)::before {
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% * 4);
  height: 1px;
  background-color: #000000;
  content: " ";
}

/* line 43, app/assets/stylesheets/common/_grid.sass */
.grid.with-4-columns.with-separator > .col:first-child::before {
  display: none;
}

/* line 17, app/assets/stylesheets/common/_grid.sass */
.grid.with-5-columns > .col {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  width: calc(100% / 5);
}

/* line 21, app/assets/stylesheets/common/_grid.sass */
.grid.with-5-columns > .col-full {
  width: 100%;
}

/* line 24, app/assets/stylesheets/common/_grid.sass */
.grid.with-5-columns > .col-double {
  width: calc(200% / 5);
}

/* line 29, app/assets/stylesheets/common/_grid.sass */
.grid.with-5-columns.with-separator > .col:nth-child(5n)::after {
  opacity: 0;
}

/* line 33, app/assets/stylesheets/common/_grid.sass */
.grid.with-5-columns.with-separator > .col:nth-child(5n+1)::before {
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% * 5);
  height: 1px;
  background-color: #000000;
  content: " ";
}

/* line 43, app/assets/stylesheets/common/_grid.sass */
.grid.with-5-columns.with-separator > .col:first-child::before {
  display: none;
}

@media (max-width: 850px) {
  /* line 49, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-tablet > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 1);
  }
  /* line 52, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-tablet > .col-double {
    width: calc(200% / 1);
  }
  /* line 54, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-tablet > .col-full {
    width: 100%;
  }
}

@media (max-width: 850px) {
  /* line 49, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-tablet > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 2);
  }
  /* line 52, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-tablet > .col-double {
    width: calc(200% / 2);
  }
  /* line 54, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-tablet > .col-full {
    width: 100%;
  }
}

@media (max-width: 850px) {
  /* line 49, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-tablet > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 3);
  }
  /* line 52, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-tablet > .col-double {
    width: calc(200% / 3);
  }
  /* line 54, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-tablet > .col-full {
    width: 100%;
  }
}

@media (max-width: 850px) {
  /* line 49, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-tablet > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 4);
  }
  /* line 52, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-tablet > .col-double {
    width: calc(200% / 4);
  }
  /* line 54, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-tablet > .col-full {
    width: 100%;
  }
}

@media (max-width: 850px) {
  /* line 49, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-tablet > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 5);
  }
  /* line 52, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-tablet > .col-double {
    width: calc(200% / 5);
  }
  /* line 54, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-tablet > .col-full {
    width: 100%;
  }
}

@media (max-width: 600px) {
  /* line 60, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 1);
  }
  /* line 64, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile > .col-double {
    width: calc(200% / 1);
  }
  /* line 66, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile > .col-full {
    width: 100%;
  }
  /* line 69, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter, .grid.with-1-columns-mobile.with-gutter-lg {
    margin-left: -1.5rem !important;
    margin-right: -1.5rem !important;
  }
  /* line 73, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter > .col, .grid.with-1-columns-mobile.with-gutter-lg > .col {
    padding-left: 1.5rem !important;
    padding-right: 1.5rem !important;
  }
  /* line 79, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col:nth-child(1n)::after {
    opacity: 0;
  }
  /* line 83, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col:nth-child(1n+1)::before {
    position: absolute;
    top: 0;
    left: 1.5rem;
    width: calc((100% * 1) - (1.5rem * 2));
    height: 1px;
    background-color: #000000;
    content: " ";
  }
  /* line 93, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col:first-child::before {
    display: none;
  }
}

@media (max-width: 600px) {
  /* line 60, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 2);
  }
  /* line 64, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile > .col-double {
    width: calc(200% / 2);
  }
  /* line 66, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile > .col-full {
    width: 100%;
  }
  /* line 69, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile.with-gutter, .grid.with-2-columns-mobile.with-gutter-lg {
    margin-left: -1.5rem !important;
    margin-right: -1.5rem !important;
  }
  /* line 73, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile.with-gutter > .col, .grid.with-2-columns-mobile.with-gutter-lg > .col {
    padding-left: 1.5rem !important;
    padding-right: 1.5rem !important;
  }
  /* line 79, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile.with-separator > .col:nth-child(2n)::after {
    opacity: 0;
  }
  /* line 83, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile.with-separator > .col:nth-child(2n+1)::before {
    position: absolute;
    top: 0;
    left: 1.5rem;
    width: calc((100% * 2) - (1.5rem * 2));
    height: 1px;
    background-color: #000000;
    content: " ";
  }
  /* line 93, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile.with-separator > .col:first-child::before {
    display: none;
  }
}

@media (max-width: 600px) {
  /* line 60, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 3);
  }
  /* line 64, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile > .col-double {
    width: calc(200% / 3);
  }
  /* line 66, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile > .col-full {
    width: 100%;
  }
  /* line 69, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile.with-gutter, .grid.with-3-columns-mobile.with-gutter-lg {
    margin-left: -1.5rem !important;
    margin-right: -1.5rem !important;
  }
  /* line 73, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile.with-gutter > .col, .grid.with-3-columns-mobile.with-gutter-lg > .col {
    padding-left: 1.5rem !important;
    padding-right: 1.5rem !important;
  }
  /* line 79, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile.with-separator > .col:nth-child(3n)::after {
    opacity: 0;
  }
  /* line 83, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile.with-separator > .col:nth-child(3n+1)::before {
    position: absolute;
    top: 0;
    left: 1.5rem;
    width: calc((100% * 3) - (1.5rem * 2));
    height: 1px;
    background-color: #000000;
    content: " ";
  }
  /* line 93, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile.with-separator > .col:first-child::before {
    display: none;
  }
}

@media (max-width: 600px) {
  /* line 60, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 4);
  }
  /* line 64, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile > .col-double {
    width: calc(200% / 4);
  }
  /* line 66, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile > .col-full {
    width: 100%;
  }
  /* line 69, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile.with-gutter, .grid.with-4-columns-mobile.with-gutter-lg {
    margin-left: -1.5rem !important;
    margin-right: -1.5rem !important;
  }
  /* line 73, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile.with-gutter > .col, .grid.with-4-columns-mobile.with-gutter-lg > .col {
    padding-left: 1.5rem !important;
    padding-right: 1.5rem !important;
  }
  /* line 79, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile.with-separator > .col:nth-child(4n)::after {
    opacity: 0;
  }
  /* line 83, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile.with-separator > .col:nth-child(4n+1)::before {
    position: absolute;
    top: 0;
    left: 1.5rem;
    width: calc((100% * 4) - (1.5rem * 2));
    height: 1px;
    background-color: #000000;
    content: " ";
  }
  /* line 93, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile.with-separator > .col:first-child::before {
    display: none;
  }
}

@media (max-width: 600px) {
  /* line 60, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 5);
  }
  /* line 64, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile > .col-double {
    width: calc(200% / 5);
  }
  /* line 66, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile > .col-full {
    width: 100%;
  }
  /* line 69, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile.with-gutter, .grid.with-5-columns-mobile.with-gutter-lg {
    margin-left: -1.5rem !important;
    margin-right: -1.5rem !important;
  }
  /* line 73, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile.with-gutter > .col, .grid.with-5-columns-mobile.with-gutter-lg > .col {
    padding-left: 1.5rem !important;
    padding-right: 1.5rem !important;
  }
  /* line 79, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile.with-separator > .col:nth-child(5n)::after {
    opacity: 0;
  }
  /* line 83, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile.with-separator > .col:nth-child(5n+1)::before {
    position: absolute;
    top: 0;
    left: 1.5rem;
    width: calc((100% * 5) - (1.5rem * 2));
    height: 1px;
    background-color: #000000;
    content: " ";
  }
  /* line 93, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile.with-separator > .col:first-child::before {
    display: none;
  }
}

/* line 96, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter {
  margin: -1.5rem;
}

/* line 99, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter > .col {
  padding: 1.5rem;
}

/* line 103, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter.with-separator > .col::after {
  top: 1.5rem;
  bottom: 1.5rem;
}

/* line 107, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-sm {
  margin: -1rem;
  margin-bottom: 0;
}

/* line 111, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-sm > .col {
  padding: 1rem;
}

/* line 115, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-sm.with-separator > .col::after {
  top: 1rem;
  bottom: 1rem;
}

/* line 119, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xs {
  margin: -0.625rem;
}

/* line 122, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xs > .col {
  padding: 0.625rem;
}

/* line 126, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xs.with-separator > .col::after {
  top: 0.625rem;
  bottom: 0.625rem;
}

/* line 130, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-lg {
  margin: -1.75rem;
}

/* line 133, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-lg > .col {
  padding: 1.75rem;
}

/* line 137, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-lg.with-separator > .col::after {
  top: 1.75rem;
  bottom: 1.75rem;
}

/* line 141, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xl {
  margin: -3.125rem;
}

/* line 144, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xl > .col {
  padding: 3.125rem;
}

/* line 148, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xl.with-separator > .col::after {
  top: 3.125rem;
  bottom: 3.125rem;
}

/* line 152, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xxl {
  margin: 0 -4.375rem;
}

/* line 155, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xxl > .col {
  padding: 0 4.375rem;
}

/* line 159, app/assets/stylesheets/common/_grid.sass */
.grid.with-separator > .col {
  position: relative;
}

/* line 162, app/assets/stylesheets/common/_grid.sass */
.grid.with-separator > .col::after {
  position: absolute;
  top: 0;
  right: 0;
  width: 1px;
  background-color: #000000;
  content: " ";
}

/* line 170, app/assets/stylesheets/common/_grid.sass */
.grid.align-center {
  -webkit-align-items: center;
  align-items: center;
}

/* line 174, app/assets/stylesheets/common/_grid.sass */
.grid.with-column-right > .col {
  -webkit-flex: none;
  flex: none;
}

/* line 177, app/assets/stylesheets/common/_grid.sass */
.grid.with-column-right > .col:first-child {
  width: 65%;
}

/* line 180, app/assets/stylesheets/common/_grid.sass */
.grid.with-column-right > .col:last-child {
  width: 35%;
}

/* line 183, app/assets/stylesheets/common/_grid.sass */
.grid.with-column-right > .col:last-child::after {
  display: none;
}

@media (max-width: 600px) {
  /* line 186, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  /* line 191, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile > .col {
    width: 100% !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

@media (max-width: 600px) {
  /* line 197, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter {
    margin: 0;
  }
  /* line 200, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter > .col {
    padding: 0 0 1.75rem;
  }
  /* line 203, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter > .col:last-child {
    padding-bottom: 0;
  }
  /* line 206, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-lg {
    margin: 0;
  }
  /* line 209, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-lg > .col {
    padding: 0 0 1.5rem;
  }
  /* line 212, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-lg > .col:last-child {
    padding-bottom: 0;
  }
  /* line 215, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-xl {
    margin: 0;
  }
  /* line 218, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-xl > .col {
    padding: 0 0 1.75rem;
  }
  /* line 221, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-xl > .col:last-child {
    padding-bottom: 0;
  }
  /* line 224, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-xxl {
    margin: 0;
  }
  /* line 227, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-xxl > .col {
    padding: 0 0 1.75rem;
  }
  /* line 230, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-xxl > .col:last-child {
    padding-bottom: 0;
  }
  /* line 234, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col {
    margin-bottom: 1.5rem;
  }
  /* line 237, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col::after {
    top: auto;
    bottom: 0;
    left: 0;
    right: 0;
    width: 100%;
    height: 1px;
  }
  /* line 245, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col:last-child {
    margin-bottom: 0;
  }
  /* line 248, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col:last-child::after {
    display: none;
  }
}

/* line 251, app/assets/stylesheets/common/_grid.sass */
.grid > .col-right {
  margin-left: auto;
}

/* line 254, app/assets/stylesheets/common/_grid.sass */
.col-md-1, .col-md-2, .col-md-3, .col-md-4,
.col-md-5, .col-md-6, .col-md-7, .col-md-8,
.col-md-9, .col-md-10, .col-md-11 {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

/* line 259, app/assets/stylesheets/common/_grid.sass */
.col-md-1 {
  width: 8.3333333333%;
}

/* line 261, app/assets/stylesheets/common/_grid.sass */
.col-md-2 {
  width: 16.6666666667%;
}

/* line 263, app/assets/stylesheets/common/_grid.sass */
.col-md-3 {
  width: 25%;
}

/* line 265, app/assets/stylesheets/common/_grid.sass */
.col-md-4 {
  width: 33.3333333333%;
}

/* line 267, app/assets/stylesheets/common/_grid.sass */
.col-md-5 {
  width: 41.6666666667%;
}

/* line 269, app/assets/stylesheets/common/_grid.sass */
.col-md-6 {
  width: 50%;
}

/* line 271, app/assets/stylesheets/common/_grid.sass */
.col-md-7 {
  width: 58.3333333333%;
}

/* line 273, app/assets/stylesheets/common/_grid.sass */
.col-md-8 {
  width: 66.6666666667%;
}

/* line 275, app/assets/stylesheets/common/_grid.sass */
.col-md-9 {
  width: 75%;
}

/* line 277, app/assets/stylesheets/common/_grid.sass */
.col-md-10 {
  width: 83.3333333333%;
}

/* line 279, app/assets/stylesheets/common/_grid.sass */
.col-md-11 {
  width: 91.6666666667%;
}

/* line 1, app/assets/stylesheets/common/_text.sass */
::selection {
  background: #FFCD00;
  color: #000000;
}

/* line 7, app/assets/stylesheets/common/_text.sass */
html {
  letter-spacing: -0.01875rem;
  color: rgba(0, 0, 0, 0.7);
  font-family: "Work Sans", sans-serif;
}

/* line 12, app/assets/stylesheets/common/_text.sass */
h1, h2, h3, h4 {
  font-family: "welcome-font", sans-serif;
}

/* line 15, app/assets/stylesheets/common/_text.sass */
h1 {
  font-size: 1.5rem;
  margin-bottom: 1rem;
}

/* line 19, app/assets/stylesheets/common/_text.sass */
h1 span {
  color: #969696;
}

/* line 22, app/assets/stylesheets/common/_text.sass */
h2 {
  font-size: 1.25rem;
  font-weight: 500;
  margin: 1rem 0;
}

/* line 27, app/assets/stylesheets/common/_text.sass */
h3 {
  font-size: 1rem;
  margin: 1rem 0;
}

/* line 33, app/assets/stylesheets/common/_text.sass */
strong {
  font-weight: 500;
}

/* line 36, app/assets/stylesheets/common/_text.sass */
small {
  font-size: 0.75rem;
}

/* line 39, app/assets/stylesheets/common/_text.sass */
p, li {
  font-size: 0.875rem;
  font-family: "Work Sans", sans-serif;
  font-weight: 400;
  letter-spacing: -0.01875rem;
}

/* line 45, app/assets/stylesheets/common/_text.sass */
pre {
  padding: 20px;
}

/* line 48, app/assets/stylesheets/common/_text.sass */
.inline-link, .formatted-text a:not(.btn):not(.cc-btn) {
  color: currentColor;
  transition: all 0.2s ease;
  background-image: linear-gradient(0deg, #FFCD00, #FFCD00 100%);
  background-size: 100% 50%;
  background-position-y: calc(200% - 1px);
  background-repeat: no-repeat;
  transition: background-position-y 0.25s ease 0s;
}

/* line 57, app/assets/stylesheets/common/_text.sass */
.inline-link:hover, .formatted-text a:hover:not(.btn):not(.cc-btn) {
  background-position-y: 100%;
}

/* line 63, app/assets/stylesheets/common/_text.sass */
ul.inline-list li {
  display: inline-block;
  margin-right: 10px;
}

/* line 68, app/assets/stylesheets/common/_text.sass */
.page-content {
  padding: 0 15px;
  margin-top: 80px;
}

/* line 74, app/assets/stylesheets/common/_text.sass */
.text-light {
  color: rgba(0, 0, 0, 0.7);
}

/* line 77, app/assets/stylesheets/common/_text.sass */
.text-xlight {
  color: rgba(0, 0, 0, 0.55);
}

/* line 80, app/assets/stylesheets/common/_text.sass */
.text-xxlight {
  color: rgba(0, 0, 0, 0.4);
}

/* line 83, app/assets/stylesheets/common/_text.sass */
.text-blue {
  color: #106dd1;
}

/* line 86, app/assets/stylesheets/common/_text.sass */
.text-black {
  color: #111111;
}

/* line 89, app/assets/stylesheets/common/_text.sass */
.text-green {
  color: #00875C;
}

/* line 92, app/assets/stylesheets/common/_text.sass */
.text-grey {
  color: #2B2B2B;
}

/* line 95, app/assets/stylesheets/common/_text.sass */
.text-light-grey {
  color: #969696;
}

/* line 98, app/assets/stylesheets/common/_text.sass */
.text-orange {
  color: #B97F22;
}

/* line 101, app/assets/stylesheets/common/_text.sass */
.text-red {
  color: #AF4636;
}

/* line 104, app/assets/stylesheets/common/_text.sass */
.text-yellow {
  color: #E5B800;
}

/* line 108, app/assets/stylesheets/common/_text.sass */
.text-blue i, .text-green i, .text-light-grey i, .text-orange i, .text-red i, .text-yellow i {
  margin-right: 5px;
}

/* line 111, app/assets/stylesheets/common/_text.sass */
.formatted-text {
  font-size: 0.875rem;
  line-height: 1.5;
}

/* line 115, app/assets/stylesheets/common/_text.sass */
.formatted-text p, .formatted-text ul, .formatted-text ol, .formatted-text h1, .formatted-text h2, .formatted-text h3, .formatted-text h4, .formatted-text h5, .formatted-text h6, .formatted-text blockquote, .formatted-text pre {
  margin: 1rem 0;
}

/* line 118, app/assets/stylesheets/common/_text.sass */
.formatted-text p:first-child, .formatted-text ul:first-child, .formatted-text ol:first-child, .formatted-text h1:first-child, .formatted-text h2:first-child, .formatted-text h3:first-child, .formatted-text h4:first-child, .formatted-text h5:first-child, .formatted-text h6:first-child, .formatted-text blockquote:first-child, .formatted-text pre:first-child {
  margin-top: 0;
}

/* line 121, app/assets/stylesheets/common/_text.sass */
.formatted-text p:last-child, .formatted-text ul:last-child, .formatted-text ol:last-child, .formatted-text h1:last-child, .formatted-text h2:last-child, .formatted-text h3:last-child, .formatted-text h4:last-child, .formatted-text h5:last-child, .formatted-text h6:last-child, .formatted-text blockquote:last-child, .formatted-text pre:last-child {
  margin-bottom: 0;
}

/* line 124, app/assets/stylesheets/common/_text.sass */
.formatted-text h1, .formatted-text h2, .formatted-text h3, .formatted-text h4, .formatted-text h5, .formatted-text h6 {
  font-family: "welcome-font", sans-serif;
  font-weight: 500;
  color: #000000;
}

/* line 129, app/assets/stylesheets/common/_text.sass */
.formatted-text h1, .formatted-text .title-lg {
  font-size: 1.5rem;
  font-weight: 600;
}

/* line 133, app/assets/stylesheets/common/_text.sass */
.formatted-text h2 {
  font-size: 1.25rem;
  font-weight: 600;
}

/* line 137, app/assets/stylesheets/common/_text.sass */
.formatted-text h3 {
  font-size: 1.125rem;
  font-weight: 600;
}

/* line 141, app/assets/stylesheets/common/_text.sass */
.formatted-text h4 {
  font-size: 1rem;
  font-weight: 500;
}

/* line 145, app/assets/stylesheets/common/_text.sass */
.formatted-text h5 {
  font-size: 0.875rem;
  color: rgba(0, 0, 0, 0.7);
  font-weight: 500;
}

/* line 150, app/assets/stylesheets/common/_text.sass */
.formatted-text h6 {
  font-size: 0.75rem;
  color: rgba(0, 0, 0, 0.7);
  font-weight: 500;
}

/* line 155, app/assets/stylesheets/common/_text.sass */
.formatted-text p, .formatted-text li {
  color: rgba(0, 0, 0, 0.7);
  font-weight: 400;
  font-family: "Work Sans", sans-serif;
  font-size: inherit;
}

/* line 161, app/assets/stylesheets/common/_text.sass */
.formatted-text blockquote {
  position: relative;
  padding-left: 1rem;
  font-size: 1rem;
}

/* line 166, app/assets/stylesheets/common/_text.sass */
.formatted-text blockquote::before {
  position: absolute;
  top: 0;
  left: 0;
  width: 4px;
  height: 100%;
  background-color: #FFCD00;
  content: " ";
}

/* line 175, app/assets/stylesheets/common/_text.sass */
.formatted-text strong, .formatted-text b {
  font-weight: 600;
}

/* line 178, app/assets/stylesheets/common/_text.sass */
.formatted-text i, .formatted-text em {
  font-style: italic;
}

/* line 181, app/assets/stylesheets/common/_text.sass */
.formatted-text a:not(.btn):not(.cc-btn) {
  color: #000000;
}

/* line 185, app/assets/stylesheets/common/_text.sass */
.formatted-text ul, .formatted-text ol {
  list-style: none;
  counter-reset: list-counter;
  padding: 0;
}

/* line 190, app/assets/stylesheets/common/_text.sass */
.formatted-text li {
  margin-bottom: 0.3125rem;
  position: relative;
  padding: 0 0 0 1rem;
  counter-increment: list-counter;
  list-style: none;
}

/* line 197, app/assets/stylesheets/common/_text.sass */
.formatted-text li:last-child {
  margin-bottom: 0;
}

/* line 200, app/assets/stylesheets/common/_text.sass */
.formatted-text li::before {
  position: absolute;
}

/* line 204, app/assets/stylesheets/common/_text.sass */
.formatted-text ul li::before {
  top: .5em;
  left: 0;
  width: 0.375rem;
  height: 0.375rem;
  border-radius: 50%;
  background-color: #FFCD00;
  content: " ";
}

/* line 214, app/assets/stylesheets/common/_text.sass */
.formatted-text ol li::before {
  top: 0;
  left: 0;
  font-size: 0.875rem;
  font-weight: 600;
  border-radius: 50%;
  color: #FFCD00;
  content: counter(list-counter) ".";
}

/* line 223, app/assets/stylesheets/common/_text.sass */
.formatted-text pre {
  background-color: #E1E1E1;
  padding: 0.625rem;
  white-space: pre-wrap;
}

/* line 4, app/assets/stylesheets/common/_forms.sass */
form .error_notification,
form .error_notifications li {
  font: 600 11px/16px "welcome-font", sans-serif;
  color: #AF4636;
  margin: 10px;
}

/* line 9, app/assets/stylesheets/common/_forms.sass */
form .error_notifications {
  margin-bottom: 20px;
}

/* line 12, app/assets/stylesheets/common/_forms.sass */
form .alert {
  margin: 0 0 1.5rem;
}

/* line 15, app/assets/stylesheets/common/_forms.sass */
form .alert:last-child {
  margin-bottom: 0;
}

/* line 20, app/assets/stylesheets/common/_forms.sass */
input, textarea, select, button, .with-prefix .form-control-wrapper, .with-suffix .form-control-wrapper, .StripeElement {
  display: block;
  width: 100%;
  background: #ffffff;
  border: 1px solid #e0e0e0;
  border-radius: 4px;
  font-family: "Work Sans", sans-serif;
  font-weight: 400;
  font-size: 0.875rem;
  outline: none;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-transition: border-color 0.2s false;
  -moz-transition: border-color 0.2s false false;
  -o-transition: border-color 0.2s false false;
  transition: border-color 0.2s;
}

/* line 33, app/assets/stylesheets/common/_forms.sass */
input:focus, input.focus, textarea:focus, textarea.focus, select:focus, select.focus, button:focus, button.focus, .with-prefix .form-control-wrapper:focus, .with-prefix .form-control-wrapper.focus, .with-suffix .form-control-wrapper:focus, .with-suffix .form-control-wrapper.focus, .StripeElement:focus, .StripeElement.focus {
  border-color: #FFCD00;
}

/* line 36, app/assets/stylesheets/common/_forms.sass */
input.full-width, textarea.full-width, select.full-width, button.full-width, .with-prefix .form-control-wrapper.full-width, .with-suffix .form-control-wrapper.full-width, .StripeElement.full-width {
  max-width: 100%;
  width: 100%;
}

/* line 40, app/assets/stylesheets/common/_forms.sass */
.col input, .col textarea, .col select, .col button, .col .with-prefix .form-control-wrapper, .col .with-suffix .form-control-wrapper, .col .StripeElement {
  max-width: 100%;
}

/* line 43, app/assets/stylesheets/common/_forms.sass */
input, textarea, .with-prefix .form-control-wrapper, .with-suffix .form-control-wrapper, .StripeElement {
  max-width: 25rem;
  padding: 0.625rem;
}

@media (max-width: 600px) {
  /* line 43, app/assets/stylesheets/common/_forms.sass */
  input, textarea, .with-prefix .form-control-wrapper, .with-suffix .form-control-wrapper, .StripeElement {
    width: 100%;
    max-width: none;
  }
}

/* line 52, app/assets/stylesheets/common/_forms.sass */
input.input-mini {
  width: 100px !important;
}

/* line 54, app/assets/stylesheets/common/_forms.sass */
input.input-small {
  width: 200px !important;
}

/* line 56, app/assets/stylesheets/common/_forms.sass */
input.input-big {
  max-width: 100% !important;
}

/* line 59, app/assets/stylesheets/common/_forms.sass */
input[disabled] {
  cursor: not-allowed;
  background-color: #F6F3EF;
}

/* line 63, app/assets/stylesheets/common/_forms.sass */
textarea {
  line-height: 18px;
  max-width: 700px;
  width: 100%;
  min-height: 70px;
}

/* line 68, app/assets/stylesheets/common/_forms.sass */
textarea.textarea-medium {
  min-height: 110px;
}

/* line 70, app/assets/stylesheets/common/_forms.sass */
textarea.textarea-big {
  min-height: 150px;
  max-width: 100%;
}

/* line 74, app/assets/stylesheets/common/_forms.sass */
input[type='text'],
input[type='email'],
input[type='tel'],
input[type='url'],
input[type='password'] {
  width: 100%;
}

@media (max-width: 850px) {
  /* line 81, app/assets/stylesheets/common/_forms.sass */
  input:not([type]),
input[type='text'],
input[type='email'],
input[type='tel'],
input[type='url'],
input[type='password'],
textarea {
    -webkit-appearance: none;
    font-size: 15px;
    min-width: auto;
  }
}

/* line 93, app/assets/stylesheets/common/_forms.sass */
input[type='file'] {
  border: none;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
  box-shadow: none;
}

/* line 97, app/assets/stylesheets/common/_forms.sass */
select {
  display: block;
  width: 100%;
  -webkit-appearance: none;
  padding: 0.625rem;
}

/* line 104, app/assets/stylesheets/common/_forms.sass */
.StripeElement {
  padding-top: 13px;
  padding-bottom: 7px;
}

/* line 108, app/assets/stylesheets/common/_forms.sass */
.StripeElement--focus {
  border-color: #106dd1;
}

/* line 110, app/assets/stylesheets/common/_forms.sass */
.StripeElement--invalid {
  border-color: #AF4636;
}

/* line 115, app/assets/stylesheets/common/_forms.sass */
.form-inputs {
  padding: 0 1.75rem;
  margin: 0 0 1.5rem;
}

/* line 119, app/assets/stylesheets/common/_forms.sass */
.form-inputs:last-child {
  margin-bottom: 1.75rem;
}

@media (max-width: 600px) {
  /* line 115, app/assets/stylesheets/common/_forms.sass */
  .form-inputs {
    padding: 0 15px;
  }
}

/* line 125, app/assets/stylesheets/common/_forms.sass */
.form-inputs-inline {
  display: -webkit-flex;
  display: flex;
  margin-bottom: 1.5rem;
}

/* line 129, app/assets/stylesheets/common/_forms.sass */
.form-inputs-inline .form-group {
  -webkit-flex: 1 1 0;
  flex: 1 1 0;
  margin-right: 1.5rem;
  margin-bottom: 0;
}

/* line 134, app/assets/stylesheets/common/_forms.sass */
.form-group {
  margin: 0 0 1.5rem;
}

/* line 137, app/assets/stylesheets/common/_forms.sass */
.form-group:last-child {
  margin-bottom: 0;
}

/* line 140, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox {
  display: -webkit-flex;
  display: flex;
}

/* line 144, app/assets/stylesheets/common/_forms.sass */
.form-group.select .form-control-wrapper.wui-select-wrapper:after {
  top: 1.25rem;
}

/* line 148, app/assets/stylesheets/common/_forms.sass */
.form-group.select .form-control-wrapper.wui-select-wrapper wui-select input {
  border-color: #e0e0e0;
}

/* line 150, app/assets/stylesheets/common/_forms.sass */
.form-group.select .form-control-wrapper.wui-select-wrapper wui-select button {
  display: none;
}

/* line 154, app/assets/stylesheets/common/_forms.sass */
.form-group.datetime input {
  min-width: 200px;
  cursor: pointer;
}

/* line 159, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox-input.xl .icheckbox {
  width: 20px;
  height: 20px;
}

/* line 162, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox-input.xl .icheckbox::after {
  width: 18px;
  height: 18px;
  font-size: 15px;
  line-height: 18px;
}

/* line 167, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox-input.xl label {
  line-height: 24px;
}

/* line 169, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox-input .icheckbox {
  position: absolute;
  left: 0;
}

/* line 172, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox-input input {
  position: absolute;
  width: 0;
  height: 0;
  padding: 0;
  border: none;
  background-color: transparent;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

/* line 180, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox-input label {
  padding-left: 30px;
  line-height: 18px;
}

/* line 184, app/assets/stylesheets/common/_forms.sass */
.form-group.boolean {
  position: relative;
}

/* line 188, app/assets/stylesheets/common/_forms.sass */
.form-group.text.small .CodeMirror, .form-group.text.small .CodeMirror-scroll {
  min-height: 70px !important;
}

/* line 191, app/assets/stylesheets/common/_forms.sass */
.form-group.attached-image {
  margin-left: 10px;
  padding: 5px;
}

/* line 194, app/assets/stylesheets/common/_forms.sass */
.form-group.attached-image .remove-image {
  font-size: 11px;
  line-height: 16px;
  font-weight: 400;
  margin-top: 10px;
}

/* line 199, app/assets/stylesheets/common/_forms.sass */
.form-group.attached-image img {
  max-height: 300px;
  max-width: 300px;
}

/* line 202, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image {
  position: relative;
  height: 110px;
}

/* line 205, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image .form-group {
  margin: 0;
}

/* line 207, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image .attached-image {
  position: absolute;
  top: 0;
  left: 0;
  padding: 0 15px;
}

/* line 212, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image .attached-image img {
  max-height: 100px;
  max-width: 100px;
  vertical-align: middle;
}

/* line 216, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image .attached-image img[src=""] {
  display: none;
}

/* line 218, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image .attached-image .none {
  background: #E1E1E1;
  height: 40px;
}

/* line 221, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image > .form-group {
  margin-left: 145px;
}

/* line 224, app/assets/stylesheets/common/_forms.sass */
.form-group.has-error label {
  color: #AF4636;
}

/* line 226, app/assets/stylesheets/common/_forms.sass */
.form-group.has-error input, .form-group.has-error textarea, .form-group.has-error select {
  border-color: #AF4636;
}

/* line 228, app/assets/stylesheets/common/_forms.sass */
.form-group.has-error span.help-block {
  color: #AF4636;
  font-weight: 600;
  padding-left: 5px;
}

/* line 232, app/assets/stylesheets/common/_forms.sass */
.form-group.has-error.text span.help-block {
  display: block;
}

/* line 236, app/assets/stylesheets/common/_forms.sass */
.form-group.organization_slug input {
  width: 150px !important;
}

/* line 238, app/assets/stylesheets/common/_forms.sass */
.form-group.organization_slug .help-block {
  font-size: 13px;
}

/* line 242, app/assets/stylesheets/common/_forms.sass */
.form-group.check_boxes .form-control-wrapper {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  margin-top: 1rem;
}

/* line 247, app/assets/stylesheets/common/_forms.sass */
.form-group.check_boxes .checkbox {
  -webkit-flex: 1 1 50%;
  flex: 1 1 50%;
  padding: 0 0.625rem 0.625rem 0;
}

/* line 251, app/assets/stylesheets/common/_forms.sass */
.form-group.check_boxes .checkbox label {
  font-weight: 400;
}

/* line 255, app/assets/stylesheets/common/_forms.sass */
.form-group.radio_buttons .form-control-wrapper {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  margin-top: 1rem;
}

/* line 260, app/assets/stylesheets/common/_forms.sass */
.form-group.radio_buttons span.radio {
  -webkit-flex: 1 1 50%;
  flex: 1 1 50%;
  padding: 0 0.625rem 0.625rem 0;
}

/* line 264, app/assets/stylesheets/common/_forms.sass */
.form-group.radio_buttons span.radio label {
  font-weight: 400;
}

/* line 267, app/assets/stylesheets/common/_forms.sass */
.form-group.has-error[class*="organization_media"] {
  border-color: transparent;
}

/* line 270, app/assets/stylesheets/common/_forms.sass */
.form-group[src=""] {
  display: none;
}

/* line 274, app/assets/stylesheets/common/_forms.sass */
.form-group.image-upload input {
  display: none;
}

/* line 285, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix.has-error, .form-group.with-suffix.has-error {
  border-color: transparent;
}

/* line 288, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix.has-error .form-control-wrapper, .form-group.with-suffix.has-error .form-control-wrapper {
  border-color: #AF4636;
}

/* line 291, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix.has-error p.help-block, .form-group.with-suffix.has-error p.help-block {
  padding: 5px 0;
  color: #969696;
  font-weight: normal;
}

/* line 297, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix.disabled .form-control-wrapper, .form-group.with-suffix.disabled .form-control-wrapper {
  cursor: not-allowed;
  background-color: #F6F3EF;
}

/* line 301, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix.disabled .form-control, .form-group.with-suffix.disabled .form-control {
  cursor: not-allowed;
}

/* line 304, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix .form-control-wrapper, .form-group.with-suffix .form-control-wrapper {
  display: -webkit-flex;
  display: flex;
  padding: 0;
}

/* line 308, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix .form-control-wrapper label, .form-group.with-suffix .form-control-wrapper label {
  -webkit-flex: none;
  flex: none;
  margin: 0.3125rem;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  padding: 0.3125rem;
  color: rgba(0, 0, 0, 0.55);
  font-size: 0.875rem;
  background-color: #EFEAE4;
  font-weight: 400;
}

/* line 319, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix input, .form-group.with-suffix input {
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
  height: auto;
  padding: 0.625rem;
  border: none;
}

/* line 326, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix input {
  padding-left: 0;
}

/* line 329, app/assets/stylesheets/common/_forms.sass */
.form-group label {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  color: rgba(0, 0, 0, 0.55);
  font-size: 0.875rem;
  font-weight: 500;
  margin-bottom: 0.3125rem;
}

/* line 337, app/assets/stylesheets/common/_forms.sass */
.form-group label.btn, .form-group label.cc-btn, .form-group.image-upload label, #logotype.form-group.image-upload label {
  display: -webkit-inline-flex;
  display: inline-flex;
}

/* line 340, app/assets/stylesheets/common/_forms.sass */
.form-group label:last-child {
  margin-bottom: 0;
}

/* line 343, app/assets/stylesheets/common/_forms.sass */
.form-group label img {
  vertical-align: middle;
  margin-right: 5px;
}

/* line 347, app/assets/stylesheets/common/_forms.sass */
.form-group label a {
  position: relative;
  color: #000000;
  margin: .4em;
}

/* line 352, app/assets/stylesheets/common/_forms.sass */
.form-group label a::after {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background-color: #FFCD00;
  content: " ";
}

/* line 361, app/assets/stylesheets/common/_forms.sass */
.form-group label a:first-child {
  margin-left: 0;
}

/* line 364, app/assets/stylesheets/common/_forms.sass */
.form-group label a:last-child {
  margin-right: 0;
}

/* line 367, app/assets/stylesheets/common/_forms.sass */
.form-group label.required abbr,
.form-group label abbr.required {
  color: #AF4636;
}

/* line 371, app/assets/stylesheets/common/_forms.sass */
.form-group .help-block {
  color: rgba(0, 0, 0, 0.4);
  font-size: 0.75rem;
  margin-top: 0.3125rem;
  text-align: left;
}

/* line 377, app/assets/stylesheets/common/_forms.sass */
.form-group .help-block a {
  color: rgba(0, 0, 0, 0.4);
  font-weight: 500;
  text-decoration: underline;
  -webkit-transition: color 0.2s false;
  -moz-transition: color 0.2s false false;
  -o-transition: color 0.2s false false;
  transition: color 0.2s;
}

/* line 383, app/assets/stylesheets/common/_forms.sass */
.form-group .help-block a:hover {
  color: #737373;
}

/* line 386, app/assets/stylesheets/common/_forms.sass */
.form-group .help-block.error-message {
  color: #CE5947;
}

/* line 389, app/assets/stylesheets/common/_forms.sass */
.form-group .input-wrapper {
  position: relative;
  display: inline-block;
}

/* line 393, app/assets/stylesheets/common/_forms.sass */
.form-group .input-wrapper input[type='search'], .form-group .input-wrapper input[type='text'] {
  padding-right: 20px;
}

/* line 395, app/assets/stylesheets/common/_forms.sass */
.form-group .input-wrapper i {
  position: absolute;
  top: 0;
  right: 10px;
  color: #737373;
  bottom: 0;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
}

/* line 405, app/assets/stylesheets/common/_forms.sass */
.form-group .minicolors .minicolors-input {
  height: 36px;
  padding-left: 34px;
}

/* line 408, app/assets/stylesheets/common/_forms.sass */
.form-group .minicolors .minicolors-swatch {
  height: 24px;
  width: 24px;
}

/* line 411, app/assets/stylesheets/common/_forms.sass */
.form-group .minicolors .minicolors-panel {
  top: -115px !important;
  left: 100px !important;
}

/* line 415, app/assets/stylesheets/common/_forms.sass */
.form-actions {
  border-top: 1px solid #AFAFAF;
  padding: 20px;
}

/* line 419, app/assets/stylesheets/common/_forms.sass */
.autocomplete {
  border: 1px solid #e0e0e0;
  max-width: 400px;
}

@media (max-width: 600px) {
  /* line 419, app/assets/stylesheets/common/_forms.sass */
  .autocomplete {
    width: 100%;
    max-width: none;
  }
}

/* line 427, app/assets/stylesheets/common/_forms.sass */
.autocomplete .autocomplete-item {
  padding: 0.3125rem 0.625rem;
  border-bottom: 1px solid #e0e0e0;
}

/* line 431, app/assets/stylesheets/common/_forms.sass */
.autocomplete .autocomplete-item:last-child {
  border-bottom: none;
}

/* line 434, app/assets/stylesheets/common/_forms.sass */
.autocomplete .autocomplete-item.active, .autocomplete .autocomplete-item:hover {
  color: #FFF8D9;
}

/* line 437, app/assets/stylesheets/common/_forms.sass */
.autocomplete .autocomplete-item em, .autocomplete .autocomplete-item strong {
  color: #FFCD00;
}

/* line 440, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper {
  position: relative;
}

/* line 444, app/assets/stylesheets/common/_forms.sass */
.select.without-icon .form-control-wrapper:after {
  display: none;
}

/* line 448, app/assets/stylesheets/common/_forms.sass */
.select.autoheight .form-control-wrapper select {
  height: auto;
}

/* line 451, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper .select {
  padding-right: 1.5625rem;
}

/* line 454, app/assets/stylesheets/common/_forms.sass */
.select .form-control-wrapper {
  max-width: 25rem;
}

/* line 457, app/assets/stylesheets/common/_forms.sass */
.select .form-control-wrapper::after {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  right: 0.625rem;
  font-family: "welcome-icon-font", sans-serif;
  font-size: 0.6875rem;
  pointer-events: none;
  color: #000000;
  content: '\132';
}

/* line 469, app/assets/stylesheets/common/_forms.sass */
.select.disabled .form-control-wrapper::after {
  color: #8F8C88;
}

/* line 473, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-before .form-control-icon, .form-control-wrapper.with-icon-after .form-control-icon {
  -webkit-appearance: none;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 1.25rem;
  text-align: center;
  font-size: 1rem;
  color: rgba(0, 0, 0, 0.55);
  padding: 0;
  border: none;
  background: none;
}

/* line 486, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-before .form-control-icon i, .form-control-wrapper.with-icon-after .form-control-icon i {
  display: block;
}

/* line 489, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-before .form-control-icon.icon-before, .form-control-wrapper.with-icon-after .form-control-icon.icon-before {
  left: 0.625rem;
}

/* line 492, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-before .form-control-icon.icon-after, .form-control-wrapper.with-icon-after .form-control-icon.icon-after {
  right: 0.625rem;
}

/* line 495, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-before .form-control-reset, .form-control-wrapper.with-icon-after .form-control-reset {
  width: 1.25rem;
  height: 1.25rem;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.1);
  border-radius: 50%;
  font-size: 0.5rem;
}

/* line 506, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-before .form-control {
  padding-left: calc(0.625rem + 0.3125rem + 1.25rem);
}

/* line 510, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-after .form-control {
  padding-right: calc(0.625rem + 0.3125rem + 1.25rem);
}

/* line 513, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper .disabled-icon {
  position: absolute;
  top: 50%;
  left: 100%;
  margin-left: 0.625rem;
  transform: translateY(-50%);
  font-size: 1rem;
  color: rgba(0, 0, 0, 0.4);
}

/* line 522, app/assets/stylesheets/common/_forms.sass */
form.form-horizontal {
  margin-bottom: 20px;
}

/* line 524, app/assets/stylesheets/common/_forms.sass */
form.form-horizontal .form-group {
  margin: 10px 0;
  max-width: none;
}

/* line 527, app/assets/stylesheets/common/_forms.sass */
form.form-horizontal .form-group label {
  display: inline-block;
  width: 135px;
}

/* line 530, app/assets/stylesheets/common/_forms.sass */
form.form-horizontal .form-group input[type='text'] {
  width: initial;
}

/* line 532, app/assets/stylesheets/common/_forms.sass */
form.form-horizontal .form-group .help-block {
  display: inline-block;
}

/* line 536, app/assets/stylesheets/common/_forms.sass */
form.form-hidden-buttons .form-actions {
  display: none;
}

/* line 540, app/assets/stylesheets/common/_forms.sass */
.CodeMirror .cm-comment {
  font-family: monospace;
  display: inline-block;
  padding: 0 0.25em;
}

/* line 545, app/assets/stylesheets/common/_forms.sass */
.g-recaptcha {
  margin-bottom: 1.5rem;
}

/* line 548, app/assets/stylesheets/common/_forms.sass */
.g-recaptcha:last-child {
  margin-bottom: 0;
}

/* line 551, app/assets/stylesheets/common/_forms.sass */
.control-label {
  display: block;
  line-height: 1.3;
  color: #737373;
  font-size: 0.875rem;
  font-weight: 500;
  user-select: none;
  font-family: "Work Sans", sans-serif;
  margin-bottom: 0.625rem;
}

/* line 3, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox,
.iradio {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0 0.625rem 0 0;
  padding: 0;
  flex: none;
  width: 1.25rem;
  height: 1.25rem;
  border: 1px solid #e0e0e0;
  cursor: pointer;
  transition: all 0.2s ease;
}

/* line 17, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox input,
.iradio input {
  position: absolute;
  top: 0;
  left: 0;
  width: 0;
  height: 0;
  opacity: 0;
}

/* line 25, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox:after,
.iradio:after {
  display: block;
  color: #000000;
  text-align: center;
  transition: all 0.2s ease;
}

/* line 31, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox.hover,
.iradio.hover {
  border-color: #FFCD00;
}

/* line 34, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox.checked,
.iradio.checked {
  border-color: #FFCD00;
  background-color: #FFCD00;
}

/* line 38, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox.checked:after,
.iradio.checked:after {
  display: block;
}

/* line 41, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox.disabled,
.iradio.disabled {
  cursor: not-allowed;
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
  opacity: 0.5;
}

/* line 45, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox + .form-label,
.iradio + .form-label {
  padding-left: 0;
}

/* line 48, app/assets/stylesheets/common/_icheck-inputs.sass */
.iradio {
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -ms-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

/* line 50, app/assets/stylesheets/common/_icheck-inputs.sass */
.iradio:after {
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -ms-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

/* line 53, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox:after {
  content: "\119";
  font-size: 0.75rem;
  font-family: "welcome-icon-font", sans-serif;
  display: none;
}

/* line 60, app/assets/stylesheets/common/_icheck-inputs.sass */
.checkbox-input input:checked + .icheckbox {
  border-color: #FFCD00;
  background-color: #FFCD00;
}

/* line 64, app/assets/stylesheets/common/_icheck-inputs.sass */
.checkbox-input input:checked + .icheckbox:after {
  display: block;
}

/* line 68, app/assets/stylesheets/common/_icheck-inputs.sass */
.boolean .control-label {
  margin-bottom: 0.3125rem;
}

/* line 72, app/assets/stylesheets/common/_icheck-inputs.sass */
.boolean.switch .control-label {
  margin: 0;
  padding-left: 15px;
  line-height: 32px;
}

/* line 77, app/assets/stylesheets/common/_icheck-inputs.sass */
.boolean.switch .control-label + .form-control-wrapper {
  float: left;
}

/* line 1, app/assets/stylesheets/front/helpers/_helpers.sass */
.-fr {
  float: right !important;
}

@media (max-width: 600px) {
  /* line 4, app/assets/stylesheets/front/helpers/_helpers.sass */
  .mobile-hidden {
    display: none !important;
  }
}

/* line 2, app/assets/stylesheets/front/layout/_backgrounds.sass */
.bg:first-child {
  padding-top: 7.5rem;
}

/* line 5, app/assets/stylesheets/front/layout/_backgrounds.sass */
.bg-beige {
  background-color: #EFEAE4;
  overflow: hidden;
}

/* line 9, app/assets/stylesheets/front/layout/_backgrounds.sass */
.bg-blue {
  background-color: #8CB3DB;
}

/* line 12, app/assets/stylesheets/front/layout/_backgrounds.sass */
.bg-green {
  background-color: #A5D0A8;
}

/* line 15, app/assets/stylesheets/front/layout/_backgrounds.sass */
.bg-red {
  background-color: #F79D85;
}

/* line 18, app/assets/stylesheets/front/layout/_backgrounds.sass */
.bg-white {
  background-color: #ffffff;
}

/* line 1, app/assets/stylesheets/front/layout/_base.sass */
* {
  box-sizing: border-box;
}

/* line 4, app/assets/stylesheets/front/layout/_base.sass */
.center-container {
  width: 100%;
  max-width: 61.25rem;
  margin: 0 auto;
}

@media (max-width: 1100px) {
  /* line 4, app/assets/stylesheets/front/layout/_base.sass */
  .center-container {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }
}

/* line 13, app/assets/stylesheets/front/layout/_base.sass */
.center-container-tiny {
  max-width: 29.0625rem;
}

/* line 16, app/assets/stylesheets/front/layout/_base.sass */
.center-container-large {
  width: 100%;
  margin: 0 auto;
  max-width: 75rem;
}

/* line 21, app/assets/stylesheets/front/layout/_base.sass */
.full-height {
  height: 100%;
}

/* line 24, app/assets/stylesheets/front/layout/_base.sass */
body {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  flex-direction: column;
  margin-top: 0;
  padding-top: 0;
  background-color: #EFEAE4;
  letter-spacing: -0.01875rem;
}

/* line 32, app/assets/stylesheets/front/layout/_base.sass */
.main-wrapper {
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  flex-direction: column;
}

/* line 37, app/assets/stylesheets/front/layout/_base.sass */
.main-container {
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  flex-direction: column;
}

/* line 42, app/assets/stylesheets/front/layout/_base.sass */
.main-container .bg {
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
}

/* line 45, app/assets/stylesheets/front/layout/_base.sass */
.main-footer {
  -webkit-flex: none;
  flex: none;
}

/* line 1, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer {
  background-color: #000000;
  color: #ffffff;
  padding: 3.125rem 0;
  font-size: 0.875rem;
}

/* line 7, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-nav {
  padding-top: 1.75rem;
}

/* line 10, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-nav-title {
  text-transform: uppercase;
  font-size: 0.8125rem;
  margin-bottom: 1rem;
}

/* line 16, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-nav-list-item {
  margin-bottom: 0.625rem;
}

/* line 19, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-nav-list-item:last-child {
  margin-bottom: 0;
}

/* line 22, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-nav-list-item-link {
  color: #ffffff;
  transition: all 0.2s ease;
}

/* line 26, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-nav-list-item-link:hover {
  color: #FFCD00;
}

/* line 29, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-nav-text {
  margin-bottom: 1rem;
}

/* line 32, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-nav-text:last-child {
  margin-bottom: 0;
}

/* line 35, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-box {
  padding: 1.75rem 1rem;
  text-align: center;
}

/* line 39, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-box-title {
  font-weight: 600;
  margin-bottom: 0.625rem;
  font-size: 1.125rem;
}

/* line 44, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-box-text {
  margin-bottom: 1rem;
  font-size: 0.8125rem;
}

/* line 48, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-box-text.text-sm {
  font-size: 0.625rem;
}

/* line 51, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-box-text:last-child {
  margin-bottom: 0;
}

/* line 54, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-box-text a {
  position: relative;
  color: #ffffff;
  font-weight: 600;
}

/* line 59, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-row {
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  padding-bottom: 1.75rem;
}

/* line 63, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-row:last-child {
  padding-bottom: 0;
  border-bottom: none;
}

/* line 67, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-col {
  border-right: 1px solid rgba(255, 255, 255, 0.2);
  padding-right: 1.75rem;
}

/* line 71, app/assets/stylesheets/front/layout/_footer.sass */
.main-footer-col:last-child {
  border-right: none;
  padding-right: 0;
}

@media (max-width: 600px) {
  /* line 67, app/assets/stylesheets/front/layout/_footer.sass */
  .main-footer-col {
    border-right: none;
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
    padding-bottom: 1.75rem;
  }
}

/* line 1, app/assets/stylesheets/front/layout/_header.sass */
.main-header {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 7.5rem;
  z-index: 100;
}

/* line 9, app/assets/stylesheets/front/layout/_header.sass */
.main-header-container {
  display: -webkit-flex;
  display: flex;
  padding-top: 3.125rem;
}

/* line 13, app/assets/stylesheets/front/layout/_header.sass */
.main-header-nav {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  margin-left: auto;
}

/* line 18, app/assets/stylesheets/front/layout/_header.sass */
.main-header-nav .languages-nav {
  margin-left: 1rem;
}

/* line 21, app/assets/stylesheets/front/layout/_header.sass */
.main-header-nav-list {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
}

/* line 25, app/assets/stylesheets/front/layout/_header.sass */
.main-header-nav-list-item {
  margin-right: 1rem;
}

/* line 28, app/assets/stylesheets/front/layout/_header.sass */
.main-header-nav-list-item:last-child {
  margin-right: 0;
}

/* line 1, app/assets/stylesheets/front/layout/_languages_nav.sass */
.languages-nav {
  position: relative;
}

/* line 4, app/assets/stylesheets/front/layout/_languages_nav.sass */
.main-footer .languages-nav {
  color: #ffffff;
}

/* line 7, app/assets/stylesheets/front/layout/_languages_nav.sass */
.main-footer .languages-nav .languages-nav-list {
  background-color: #111111;
}

/* line 10, app/assets/stylesheets/front/layout/_languages_nav.sass */
.main-footer .languages-nav .languages-nav-list::before {
  border-color: transparent transparent #111111 transparent;
}

/* line 14, app/assets/stylesheets/front/layout/_languages_nav.sass */
.main-footer .languages-nav .languages-nav-list-item:hover {
  background-color: #1B1B1B;
}

/* line 17, app/assets/stylesheets/front/layout/_languages_nav.sass */
.languages-nav-toggler {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  padding: 0.625rem;
  font-size: 0.875rem;
  color: currentColor;
  font-weight: 600;
}

/* line 25, app/assets/stylesheets/front/layout/_languages_nav.sass */
.languages-nav-toggler .wui-icon-down {
  margin-left: 0.3125rem;
  transition: all 0.2s ease;
}

/* line 29, app/assets/stylesheets/front/layout/_languages_nav.sass */
.open .languages-nav-toggler .wui-icon-down {
  transform: rotate(180deg);
}

/* line 32, app/assets/stylesheets/front/layout/_languages_nav.sass */
.languages-nav-list {
  position: absolute;
  top: 100%;
  left: 0;
  background-color: #ffffff;
  border-radius: 2px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: all 0.2s ease;
}

/* line 43, app/assets/stylesheets/front/layout/_languages_nav.sass */
.open .languages-nav-list {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

/* line 48, app/assets/stylesheets/front/layout/_languages_nav.sass */
.languages-nav-list::before {
  position: absolute;
  left: 50%;
  bottom: 100%;
  width: 0;
  height: 0;
  transform: translateX(-50%);
  border-style: solid;
  border-width: 0 5px 6px 5px;
  border-color: transparent transparent #ffffff transparent;
  content: " ";
}

/* line 62, app/assets/stylesheets/front/layout/_languages_nav.sass */
.languages-nav-list-item:hover {
  background-color: #E1E1E1;
}

/* line 65, app/assets/stylesheets/front/layout/_languages_nav.sass */
.languages-nav-list-item:first-child {
  border-radius: 2px 2px 0 0;
}

/* line 68, app/assets/stylesheets/front/layout/_languages_nav.sass */
.languages-nav-list-item:last-child {
  border-radius: 0 0 2px 2px;
}

/* line 71, app/assets/stylesheets/front/layout/_languages_nav.sass */
.languages-nav-list-item-link {
  display: block;
  color: currentColor;
  padding: 0.3125rem 0.625rem;
  font-size: 0.875rem;
  font-weight: 600;
  transition: all 0.2s ease;
}

/* line 1, app/assets/stylesheets/front/layout/_sections.sass */
.landing-background {
  background-image: url(/assets/front/home/landing_background-a8a9056e0f0413817217edf4eb5d91487dba730356325eecbb4b34683351f1be.svg);
  background-repeat: no-repeat;
  background-size: 60%;
  background-position-y: 0;
  background-position-x: 60px;
  height: 100vh;
}

/* line 9, app/assets/stylesheets/front/layout/_sections.sass */
.section {
  padding: 4.375rem 0;
}

/* line 12, app/assets/stylesheets/front/layout/_sections.sass */
.section-header {
  margin-bottom: 1.75rem;
}

/* line 15, app/assets/stylesheets/front/layout/_sections.sass */
.section-title {
  font-size: 2.25rem;
  font-weight: 600;
  line-height: 1;
  margin-bottom: 1.5rem;
  max-width: 39.75rem;
}

/* line 22, app/assets/stylesheets/front/layout/_sections.sass */
.section-title:last-child {
  margin-bottom: 0;
}

/* line 25, app/assets/stylesheets/front/layout/_sections.sass */
.section-title.section-title-sm {
  font-size: 1.375rem;
}

/* line 28, app/assets/stylesheets/front/layout/_sections.sass */
.section-subtitle {
  max-width: 31.25rem;
  opacity: .7;
}

/* line 32, app/assets/stylesheets/front/layout/_sections.sass */
.section-footer {
  margin-top: 1.75rem;
}

/* line 36, app/assets/stylesheets/front/layout/_sections.sass */
.section-content p {
  opacity: .7;
}

/* line 39, app/assets/stylesheets/front/layout/_sections.sass */
.section.hero-section {
  display: -webkit-flex;
  display: flex;
  height: 30rem;
  padding: 0;
}

/* line 44, app/assets/stylesheets/front/layout/_sections.sass */
.section.hero-section-centered {
  -webkit-align-items: center;
  align-items: center;
  height: 100%;
}

@media (max-width: 600px) {
  /* line 39, app/assets/stylesheets/front/layout/_sections.sass */
  .section.hero-section {
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    height: auto;
  }
}

/* line 52, app/assets/stylesheets/front/layout/_sections.sass */
.section.hero-section > .col {
  position: relative;
}

/* line 55, app/assets/stylesheets/front/layout/_sections.sass */
.section.hero-section > .col:first-child {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  flex-direction: column;
  -webkit-justify-content: center;
  justify-content: center;
  width: 31.25rem;
  -webkit-flex: none;
  flex: none;
  padding-right: 3.125rem;
}

/* line 63, app/assets/stylesheets/front/layout/_sections.sass */
.section.hero-section > .col.screenshot-left:first-child {
  width: 43.75rem;
  height: 30rem;
}

@media (max-width: 600px) {
  /* line 55, app/assets/stylesheets/front/layout/_sections.sass */
  .section.hero-section > .col:first-child {
    width: 100%;
    padding-bottom: 3.125rem;
  }
}

@media (max-width: 600px) {
  /* line 52, app/assets/stylesheets/front/layout/_sections.sass */
  .section.hero-section > .col {
    width: 100%;
  }
}

/* line 74, app/assets/stylesheets/front/layout/_sections.sass */
.section.hero-section .section-title {
  font-size: 2.8125rem;
  text-transform: uppercase;
}

/* line 78, app/assets/stylesheets/front/layout/_sections.sass */
.section.hero-section .hero-section-screenshot {
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: auto;
  height: 100%;
}

/* line 86, app/assets/stylesheets/front/layout/_sections.sass */
.section.hero-section .hero-section-screenshot-left {
  right: 3.125rem;
  left: unset;
}

@media (max-width: 600px) {
  /* line 78, app/assets/stylesheets/front/layout/_sections.sass */
  .section.hero-section .hero-section-screenshot {
    position: static;
    width: 100%;
    height: auto;
  }
}

/* line 95, app/assets/stylesheets/front/layout/_sections.sass */
.section.with-bg {
  padding: 3.125rem;
}

@media (max-width: 600px) {
  /* line 95, app/assets/stylesheets/front/layout/_sections.sass */
  .section.with-bg {
    padding: 1.5rem;
  }
}

/* line 101, app/assets/stylesheets/front/layout/_sections.sass */
.section.with-bg-sm {
  padding: 1.75rem;
}

@media (max-width: 600px) {
  /* line 101, app/assets/stylesheets/front/layout/_sections.sass */
  .section.with-bg-sm {
    padding: 1.5rem;
  }
}

/* line 107, app/assets/stylesheets/front/layout/_sections.sass */
.section-nav {
  position: sticky;
  top: 1.75rem;
}

/* line 112, app/assets/stylesheets/front/layout/_sections.sass */
.section-nav-list-item {
  font-weight: 600;
  margin-bottom: 0.625rem;
}

/* line 116, app/assets/stylesheets/front/layout/_sections.sass */
.section-nav-list-item:last-child {
  margin-bottom: 0;
}

/* line 119, app/assets/stylesheets/front/layout/_sections.sass */
.section-nav-list-item-link {
  display: inline-block;
  position: relative;
  overflow: hidden;
}

/* line 124, app/assets/stylesheets/front/layout/_sections.sass */
.section-nav-list-item-link::after {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  transform: translateX(-100%);
  transition: all 0.2s ease;
  background-color: #FFCD00;
  content: " ";
}

/* line 136, app/assets/stylesheets/front/layout/_sections.sass */
.section-nav-list-item-link:hover::after {
  transform: translateX(0);
}

/* line 2, app/assets/stylesheets/front/elements/_forms.sass */
.form-inline {
  display: -webkit-flex;
  display: flex;
}

/* line 5, app/assets/stylesheets/front/elements/_forms.sass */
.form-inline .form-group {
  margin-right: 0.625rem;
  margin-bottom: 0;
}

/* line 9, app/assets/stylesheets/front/elements/_forms.sass */
.form-inline .form-group:last-child {
  margin-right: 0;
}

/* line 12, app/assets/stylesheets/front/elements/_forms.sass */
.form-control {
  display: block;
  background-color: #ffffff;
  border: none;
  outline: none;
  height: 2.5rem;
  padding: 0 1rem;
  font-size: 1rem;
  color: #000000;
  min-width: 22.1875rem;
  width: 100%;
  border: 1px solid #e0e0e0;
}

@media (max-width: 600px) {
  /* line 12, app/assets/stylesheets/front/elements/_forms.sass */
  .form-control {
    width: auto;
  }
}

/* line 28, app/assets/stylesheets/front/elements/_forms.sass */
.form-group {
  margin-bottom: 1rem;
}

/* line 31, app/assets/stylesheets/front/elements/_forms.sass */
.form-group:last-child {
  margin-bottom: 0;
}

/* line 35, app/assets/stylesheets/front/elements/_forms.sass */
.form-group.boolean label {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
}

/* line 39, app/assets/stylesheets/front/elements/_forms.sass */
.control-label {
  display: block;
  margin-bottom: 0.625rem;
  font-weight: 600;
}

/* line 1, app/assets/stylesheets/front/elements/_typography.sass */
body {
  font-family: "Work Sans", sans-serif;
  color: #000000;
}

/* line 5, app/assets/stylesheets/front/elements/_typography.sass */
h1, h2, h3, h4, h5, h6 {
  font-family: "welcome-font", sans-serif;
  font-weight: 600;
}

/* line 9, app/assets/stylesheets/front/elements/_typography.sass */
p, li {
  line-height: 1.5;
}

/* line 12, app/assets/stylesheets/front/elements/_typography.sass */
a {
  color: currentColor;
}

/* line 15, app/assets/stylesheets/front/elements/_typography.sass */
a.inline-link, .formatted-text a:not(.btn):not(.cc-btn) {
  display: inline-block;
  position: relative;
  font-weight: 500;
}

/* line 20, app/assets/stylesheets/front/elements/_typography.sass */
a.inline-link::after, .formatted-text a:not(.btn):not(.cc-btn)::after {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background-color: #FFCD00;
  content: " ";
}

/* line 30, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text h2, .plain-text h3 {
  margin: 1.5rem 0;
  font-size: 1.5rem;
}

/* line 34, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text h2:first-child, .plain-text h3:first-child {
  margin-top: 0;
}

/* line 37, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text h2:last-child, .plain-text h3:last-child {
  margin-bottom: 0;
}

/* line 40, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text h4 {
  margin: 1.5rem 0;
  font-size: 1rem;
}

/* line 44, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text h4:first-child {
  margin-top: 0;
}

/* line 47, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text h4:last-child {
  margin-bottom: 0;
}

/* line 50, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text p {
  margin: 0 0 1.5rem;
  opacity: .7;
}

/* line 54, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text p:last-child {
  margin-bottom: 0;
}

/* line 57, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text ul, .plain-text ol {
  margin: 0 0 1.5rem;
  padding-left: 1rem;
}

/* line 61, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text ul li, .plain-text ol li {
  opacity: .7;
  position: relative;
  padding-left: 1rem;
}

/* line 66, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text ul li::before, .plain-text ol li::before {
  position: absolute;
  top: 0.5rem;
  left: 0;
  width: 0.375rem;
  height: 0.375rem;
  border-radius: 50%;
  background-color: #FFCD00;
  content: " ";
}

/* line 76, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text ul:last-child, .plain-text ol:last-child {
  margin-bottom: 0;
}

/* line 79, app/assets/stylesheets/front/elements/_typography.sass */
.plain-text hr {
  border-top: 1px solid #e0e0e0;
  border-bottom: none;
}

/* line 1, app/assets/stylesheets/front/components/_advantages_thumb.sass */
.advantages-thumb {
  padding-top: 1.5rem;
}

/* line 4, app/assets/stylesheets/front/components/_advantages_thumb.sass */
.advantages-thumb-picture {
  margin-bottom: 1.5rem;
}

/* line 7, app/assets/stylesheets/front/components/_advantages_thumb.sass */
.advantages-thumb-picture-img {
  height: 7.5rem;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: left center;
}

/* line 13, app/assets/stylesheets/front/components/_advantages_thumb.sass */
.advantages-thumb-header {
  margin-bottom: 0.625rem;
}

/* line 16, app/assets/stylesheets/front/components/_advantages_thumb.sass */
.advantages-thumb-title {
  font-size: 0.9375rem;
}

/* line 19, app/assets/stylesheets/front/components/_advantages_thumb.sass */
.advantages-thumb-content p {
  font-size: 0.875rem;
  opacity: .7;
  line-height: 1.4;
}

/* line 1, app/assets/stylesheets/front/components/_cookies_consent.sass */
.cc-window {
  position: fixed;
  bottom: 1.75rem;
  right: 1.75rem;
  background-color: #000000;
  color: #ffffff;
  padding: 1.5rem;
  width: 25rem;
  border: 1px solid #ffffff;
  border-radius: 4px;
  z-index: 999;
  line-height: 1.4;
}

/* line 14, app/assets/stylesheets/front/components/_cookies_consent.sass */
.cc-window a:not(.btn):not(.cc-btn) {
  color: #ffffff;
  font-weight: 600;
}

/* line 18, app/assets/stylesheets/front/components/_cookies_consent.sass */
.cc-compliance {
  margin-top: 1.5rem;
}

/* line 21, app/assets/stylesheets/front/components/_cookies_consent.sass */
.cc-btn {
  width: 100%;
}

/* line 3, app/assets/stylesheets/front/components/_customers-logos.sass */
.customers-logos li {
  margin: 20px 0;
}

/* line 6, app/assets/stylesheets/front/components/_customers-logos.sass */
.customers-logos .customers-logo-link {
  display: block;
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
  opacity: 0.8;
  -webkit-transition: opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;
  -moz-transition: opacity 0.3s ease-in-out false, -moz-transform 0.3s ease-in-out false;
  -o-transition: opacity 0.3s ease-in-out false, -o-transform 0.3s ease-in-out false;
  transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
}

/* line 11, app/assets/stylesheets/front/components/_customers-logos.sass */
.customers-logos .customers-logo-link:hover {
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
  opacity: 1;
  -webkit-transform: scale(1.1);
  -moz-transform: scale(1.1);
  -ms-transform: scale(1.1);
  -o-transform: scale(1.1);
  transform: scale(1.1);
}

/* line 15, app/assets/stylesheets/front/components/_customers-logos.sass */
.customers-logos .customers-logo-img {
  max-height: 60px;
  max-width: 120px;
}

/* line 1, app/assets/stylesheets/front/components/_customers_thumb.sass */
.customers-thumb {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
  width: 8.5rem;
  height: 4.375rem;
}

/* line 8, app/assets/stylesheets/front/components/_customers_thumb.sass */
.customers-thumb-logo-img {
  width: 100%;
  height: 100%;
  background-size: contain;
  background-position: center;
  background-repeat: no-repeat;
}

/* line 1, app/assets/stylesheets/front/components/_faq-list.sass */
.faq-list {
  counter-reset: faq-counter;
  margin-top: 80px;
}

@media (max-width: 600px) {
  /* line 1, app/assets/stylesheets/front/components/_faq-list.sass */
  .faq-list {
    margin-top: 40px;
  }
}

/* line 8, app/assets/stylesheets/front/components/_faq-list.sass */
.faq-list .faq-item {
  position: relative;
  counter-increment: faq-counter;
  text-align: left;
  padding: 0 70px 40px 100px;
  margin-top: 40px;
  border-bottom: 1px solid #f0f0f0;
}

@media (max-width: 600px) {
  /* line 8, app/assets/stylesheets/front/components/_faq-list.sass */
  .faq-list .faq-item {
    padding: 0 0 40px 50px;
  }
}

/* line 19, app/assets/stylesheets/front/components/_faq-list.sass */
.faq-list .faq-item:last-child {
  border-bottom: none;
}

/* line 22, app/assets/stylesheets/front/components/_faq-list.sass */
.faq-list .faq-item:before {
  content: counter(faq-counter);
  position: absolute;
  left: 30px;
  top: -5px;
  width: 36px;
  height: 36px;
  font-size: 19px;
  font-weight: 600;
  line-height: 36px;
  text-align: center;
  color: #FFCD00;
  background: #f0f0f0;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -ms-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

@media (max-width: 600px) {
  /* line 22, app/assets/stylesheets/front/components/_faq-list.sass */
  .faq-list .faq-item:before {
    left: 0;
  }
}

/* line 40, app/assets/stylesheets/front/components/_faq-list.sass */
.faq-list .faq-item .faq-item-title, .faq-list .faq-item .faq-item-text {
  color: #FFCD00;
}

/* line 43, app/assets/stylesheets/front/components/_faq-list.sass */
.faq-list .faq-item .faq-item-title {
  font-weight: 600;
}

/* line 1, app/assets/stylesheets/front/components/_modals.sass */
body.modal-visible {
  overflow: hidden;
}

/* line 4, app/assets/stylesheets/front/components/_modals.sass */
.modal, .modal-contents, .modal-box-control {
  -webkit-transition: -webkit-transform 0.4s ease-in-out;
  -moz-transition: -moz-transform 0.4s ease-in-out false;
  -o-transition: -o-transform 0.4s ease-in-out false;
  transition: transform 0.4s ease-in-out;
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -ms-transform: translateZ(0);
  -o-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  -moz-backface-visibility: hidden;
  -ms-backface-visibility: hidden;
  -o-backface-visibility: hidden;
  backface-visibility: hidden;
}

/* line 9, app/assets/stylesheets/front/components/_modals.sass */
.modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  color: #ffffff;
  z-index: 500;
  background: rgba(17, 17, 17, 0.75);
  -webkit-transform: translateY(100%);
  -moz-transform: translateY(100%);
  -ms-transform: translateY(100%);
  -o-transform: translateY(100%);
  transform: translateY(100%);
}

/* line 21, app/assets/stylesheets/front/components/_modals.sass */
.modal.plain {
  background: #111111;
}

/* line 24, app/assets/stylesheets/front/components/_modals.sass */
.modal.visible {
  -webkit-transform: translateY(0);
  -moz-transform: translateY(0);
  -ms-transform: translateY(0);
  -o-transform: translateY(0);
  transform: translateY(0);
}

/* line 27, app/assets/stylesheets/front/components/_modals.sass */
.modal.visible .modal-contents, .modal.visible .modal-box-control {
  -webkit-transform: translateY(0);
  -moz-transform: translateY(0);
  -ms-transform: translateY(0);
  -o-transform: translateY(0);
  transform: translateY(0);
}

/* line 30, app/assets/stylesheets/front/components/_modals.sass */
.modal.visible .modal-contents {
  -webkit-transition-delay: 0.2s;
  -moz-transition-delay: 0.2s;
  -o-transition-delay: 0.2s;
  transition-delay: 0.2s;
}

/* line 33, app/assets/stylesheets/front/components/_modals.sass */
.modal.visible .modal-box-control {
  -webkit-transition-delay: 0.4s;
  -moz-transition-delay: 0.4s;
  -o-transition-delay: 0.4s;
  transition-delay: 0.4s;
}

/* line 36, app/assets/stylesheets/front/components/_modals.sass */
.modal.no-transition {
  -webkit-transition: none false false;
  -moz-transition: none false false false;
  -o-transition: none false false false;
  transition: none;
}

/* line 39, app/assets/stylesheets/front/components/_modals.sass */
.modal.no-transition .modal-contents, .modal.no-transition .modal-box-control {
  -webkit-transition: none false false;
  -moz-transition: none false false false;
  -o-transition: none false false false;
  transition: none;
  -webkit-transition-delay: 0s;
  -moz-transition-delay: 0s;
  -o-transition-delay: 0s;
  transition-delay: 0s;
}

/* line 43, app/assets/stylesheets/front/components/_modals.sass */
.modal .modal-contents {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  padding: 100px 0;
  overflow: auto;
  -webkit-transform: translateY(100%);
  -moz-transform: translateY(100%);
  -ms-transform: translateY(100%);
  -o-transform: translateY(100%);
  transform: translateY(100%);
}

/* line 53, app/assets/stylesheets/front/components/_modals.sass */
.modal .modal-box-control {
  position: absolute;
  right: 34px;
  text-align: center;
  z-index: 1000;
  -webkit-transform: translateY(-600%);
  -moz-transform: translateY(-600%);
  -ms-transform: translateY(-600%);
  -o-transform: translateY(-600%);
  transform: translateY(-600%);
  -webkit-transition-delay: 0s;
  -moz-transition-delay: 0s;
  -o-transition-delay: 0s;
  transition-delay: 0s;
}

@media (max-width: 600px) {
  /* line 53, app/assets/stylesheets/front/components/_modals.sass */
  .modal .modal-box-control {
    right: 30px;
  }
}

/* line 64, app/assets/stylesheets/front/components/_modals.sass */
.modal .modal-box-control.btn-close-modal {
  top: 34px;
  z-index: 1000;
  z-index: 1;
}

@media (max-width: 600px) {
  /* line 64, app/assets/stylesheets/front/components/_modals.sass */
  .modal .modal-box-control.btn-close-modal {
    top: 42px;
  }
}

/* line 72, app/assets/stylesheets/front/components/_modals.sass */
.modal .video {
  max-width: 900px;
  margin: 0 auto;
  text-align: center;
}

/* line 77, app/assets/stylesheets/front/components/_modals.sass */
.modal .video iframe {
  display: inline-block;
  width: 853px;
  height: 480px;
  border: none;
}

@media (max-width: 600px) {
  /* line 77, app/assets/stylesheets/front/components/_modals.sass */
  .modal .video iframe {
    width: 550px;
    height: 315px;
    max-width: 100%;
  }
}

/* line 1, app/assets/stylesheets/front/components/_nav-icon.sass */
.nav-icon {
  position: absolute;
  top: 16px;
  right: 6px;
  display: none;
  width: 27px;
  height: 23px;
  padding: 0;
  overflow: hidden;
  border: 14px solid transparent;
  border-bottom-width: 13px;
  box-sizing: content-box;
  z-index: 20;
}

@media (max-width: 850px) {
  /* line 1, app/assets/stylesheets/front/components/_nav-icon.sass */
  .nav-icon {
    display: block;
  }
}

/* line 18, app/assets/stylesheets/front/components/_nav-icon.sass */
.nav-icon:before, .nav-icon:after {
  position: absolute;
  content: ' ';
  display: block;
  -webkit-transition: -webkit-transform 0.3s ease-in-out;
  -moz-transition: -moz-transform 0.3s ease-in-out false;
  -o-transition: -o-transform 0.3s ease-in-out false;
  transition: transform 0.3s ease-in-out;
}

/* line 24, app/assets/stylesheets/front/components/_nav-icon.sass */
.nav-icon:before {
  top: 0;
  left: 0;
  bottom: 0;
  width: 100%;
  border-top: 3px solid #ffffff;
  border-bottom: 3px solid #ffffff;
}

/* line 33, app/assets/stylesheets/front/components/_nav-icon.sass */
.nav-icon:after {
  top: 50%;
  left: 0;
  width: 100%;
  height: 3px;
  background: #ffffff;
  margin-top: -2px;
  -webkit-transform: translateX(6px);
  -moz-transform: translateX(6px);
  -ms-transform: translateX(6px);
  -o-transform: translateX(6px);
  transform: translateX(6px);
}

/* line 43, app/assets/stylesheets/front/components/_nav-icon.sass */
.nav-icon.active:before {
  -webkit-transform: translateX(6px);
  -moz-transform: translateX(6px);
  -ms-transform: translateX(6px);
  -o-transform: translateX(6px);
  transform: translateX(6px);
  border-color: #ffffff;
}

/* line 47, app/assets/stylesheets/front/components/_nav-icon.sass */
.nav-icon.active:after {
  -webkit-transform: translateX(0px);
  -moz-transform: translateX(0px);
  -ms-transform: translateX(0px);
  -o-transform: translateX(0px);
  transform: translateX(0px);
  background: #ffffff;
}

/* line 1, app/assets/stylesheets/front/components/_notifications.sass */
.alert {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: #111111;
  padding: 20px;
  z-index: 10;
}

/* line 10, app/assets/stylesheets/front/components/_notifications.sass */
.alert.alert-error, .alert.alert-danger {
  background: #AF4636;
}

/* line 13, app/assets/stylesheets/front/components/_notifications.sass */
.alert.alert-error, .alert.alert-error p, .alert.alert-error a, .alert.alert-danger, .alert.alert-danger p, .alert.alert-danger a {
  color: #ffffff;
}

/* line 15, app/assets/stylesheets/front/components/_notifications.sass */
.alert p {
  margin: 0;
  font-weight: 600;
  color: #FFCD00;
  text-align: center;
}

/* line 1, app/assets/stylesheets/front/components/_offers.sass */
.offer-item {
  background: #ffffff;
  height: 100%;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  -ms-border-radius: 10px;
  -o-border-radius: 10px;
  border-radius: 10px;
  -webkit-box-shadow: 0 0 30px rgba(0, 0, 0, 0.3);
  -moz-box-shadow: 0 0 30px rgba(0, 0, 0, 0.3);
  box-shadow: 0 0 30px rgba(0, 0, 0, 0.3);
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  flex-direction: column;
  overflow: hidden;
}

@media (max-width: 600px) {
  /* line 1, app/assets/stylesheets/front/components/_offers.sass */
  .offer-item {
    margin-bottom: 40px;
    height: auto;
  }
}

/* line 14, app/assets/stylesheets/front/components/_offers.sass */
.offer-item:last-child {
  border-left: 1px solid #C8C8C8;
}

/* line 17, app/assets/stylesheets/front/components/_offers.sass */
.offer-item .offer-header {
  padding: 40px;
  background-color: #E1E1E1;
}

/* line 21, app/assets/stylesheets/front/components/_offers.sass */
.offer-item .offer-logo {
  text-align: center;
  margin: 0;
}

/* line 25, app/assets/stylesheets/front/components/_offers.sass */
.offer-item .offer-logo svg {
  height: 100px;
  width: auto;
}

/* line 29, app/assets/stylesheets/front/components/_offers.sass */
.offer-item .offer-logo .logo-wk-path {
  fill: #FFCD00;
}

/* line 32, app/assets/stylesheets/front/components/_offers.sass */
.offer-item .offer-content {
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
  padding: 40px 40px 20px;
}

/* line 36, app/assets/stylesheets/front/components/_offers.sass */
.offer-item .offer-content p {
  color: #FFCD00;
  margin: 20px 0;
  text-align: left;
}

/* line 41, app/assets/stylesheets/front/components/_offers.sass */
.offer-item .offer-content p:first-child {
  margin-top: 0;
}

/* line 44, app/assets/stylesheets/front/components/_offers.sass */
.offer-item .offer-content p a {
  color: #FFCD00;
  font-weight: 600;
}

/* line 48, app/assets/stylesheets/front/components/_offers.sass */
.offer-item .offer-content p a:hover {
  color: #FFCD00;
}

/* line 51, app/assets/stylesheets/front/components/_offers.sass */
.offer-item .offer-footer {
  padding: 0 40px 40px 40px;
  text-align: center;
}

/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hcHBsaWNhdGlvbi5jc3MiLAoJInNvdXJjZXMiOiBbCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvYXBwbGljYXRpb24uc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvX2NvbXBhc3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9fYW5pbWF0ZS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL19jb21wYXNzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9fZnVuY3Rpb25zLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2xpc3RzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19ncmFkaWVudF9zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2NvbnN0YW50cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19kaXNwbGF5LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2NvbG9ycy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvX3V0aWxpdGllcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL19jb2xvci5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2NvbG9yL19jb250cmFzdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL19nZW5lcmFsLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9fcmVzZXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL3Jlc2V0L191dGlsaXRpZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9fdGFnLWNsb3VkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9fbWluLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvX3Nwcml0ZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9zcHJpdGVzL19iYXNlLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvc3ByaXRlcy9fc3ByaXRlLWltZy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL190YWJsZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy90YWJsZXMvX2FsdGVybmF0aW5nLXJvd3MtYW5kLWNvbHVtbnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy90YWJsZXMvX2JvcmRlcnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy90YWJsZXMvX3NjYWZmb2xkaW5nLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L19saW5rcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9faG92ZXItbGluay5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fbGluay1jb2xvcnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX3Vuc3R5bGVkLWxpbmsuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpc3RzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19ob3Jpem9udGFsLWxpc3Quc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2J1bGxldHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2NsZWFyZml4LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fcmVzZXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vcmVzZXQvX3V0aWxpdGllcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fZmxvYXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1saXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19pbmxpbmUtYmxvY2stbGlzdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL3Jlc2V0L191dGlsaXRpZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi9jc3MzL19pbmxpbmUtYmxvY2suc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2J1bGxldHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX3RleHQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fZWxsaXBzaXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC8uLi8uLi9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC8uLi8uLi9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX25vd3JhcC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19yZXBsYWNlbWVudC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19mb3JjZS13cmFwLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9fdHlwb2dyYXBoeS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9fbGlua3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2hvdmVyLWxpbmsuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2xpbmstY29sb3JzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpbmtzL191bnN0eWxlZC1saW5rLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L19saXN0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL3Jlc2V0L191dGlsaXRpZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19pbmxpbmUtbGlzdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWJsb2NrLWxpc3Quc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2J1bGxldHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2hvcml6b250YWwtbGlzdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fY2xlYXJmaXguc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19yZXNldC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9yZXNldC9fdXRpbGl0aWVzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fZmxvYXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vY3NzMy9faW5saW5lLWJsb2NrLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L190ZXh0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2VsbGlwc2lzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvLi4vLi4vY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvLi4vLi4vY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19ub3dyYXAuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fcmVwbGFjZW1lbnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fZm9yY2Utd3JhcC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9fdmVydGljYWxfcmh5dGhtLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC9fZ3JpZC1iYWNrZ3JvdW5kLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzL19pbWFnZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vX2Z1bmN0aW9ucy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi9mdW5jdGlvbnMvX2xpc3RzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL2Z1bmN0aW9ucy9fY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL2Z1bmN0aW9ucy9fZ3JhZGllbnRfc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi9mdW5jdGlvbnMvX2NvbnN0YW50cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi9mdW5jdGlvbnMvX2Rpc3BsYXkuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vZnVuY3Rpb25zL19jb2xvcnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvX2JhY2tncm91bmQtc2l6ZS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9fY3NzMy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYm9yZGVyLXJhZGl1cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19pbmxpbmUtYmxvY2suc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fb3BhY2l0eS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3gtc2hhZG93LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RleHQtc2hhZG93LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2NvbHVtbnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYm94LXNpemluZy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3guc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9faW1hZ2VzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19mdW5jdGlvbnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vZnVuY3Rpb25zL19saXN0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9mdW5jdGlvbnMvX2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9mdW5jdGlvbnMvX2dyYWRpZW50X3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vZnVuY3Rpb25zL19jb25zdGFudHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vZnVuY3Rpb25zL19kaXNwbGF5LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL2Z1bmN0aW9ucy9fY29sb3JzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19iYWNrZ3JvdW5kLWNsaXAuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYmFja2dyb3VuZC1vcmlnaW4uc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYmFja2dyb3VuZC1zaXplLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2ZvbnQtZmFjZS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL190cmFuc2Zvcm0uc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fdHJhbnNpdGlvbi5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19hcHBlYXJhbmNlLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3JlZ2lvbnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9faHlwaGVuYXRpb24uc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fZmlsdGVyLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3BpZS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fdXNlci1pbnRlcmZhY2Uuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fZmxleGJveC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvYW5pbWF0aW9uL19jb3JlLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvYW5pbWF0aW9uL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vX2FuaW1hdGUuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vYW5pbWF0ZS9fYXR0ZW50aW9uLXNlZWtlcnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vYW5pbWF0ZS9fYm91bmNpbmcuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vYW5pbWF0ZS9ib3VuY2luZy9fYm91bmNpbmctZXhpdHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vYW5pbWF0ZS9ib3VuY2luZy9fYm91bmNpbmctZW50cmFuY2VzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvYW5pbWF0aW9uL2FuaW1hdGUvX2ZhZGluZy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2FuaW1hdGlvbi9hbmltYXRlL2ZhZGluZy9fZmFkaW5nLWV4aXRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvYW5pbWF0aW9uL2FuaW1hdGUvZmFkaW5nL19mYWRpbmctZW50cmFuY2VzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvYW5pbWF0aW9uL2FuaW1hdGUvX2ZsaXBwZXJzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvYW5pbWF0aW9uL2FuaW1hdGUvX2xpZ2h0c3BlZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vYW5pbWF0ZS9fcm90YXRpbmcuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vYW5pbWF0ZS9yb3RhdGluZy9fcm90YXRpbmctZXhpdHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vYW5pbWF0ZS9yb3RhdGluZy9fcm90YXRpbmctZW50cmFuY2VzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvYW5pbWF0aW9uL2FuaW1hdGUvX3NwZWNpYWxzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvX2NvbXBhc3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19mdW5jdGlvbnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fbGlzdHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2dyYWRpZW50X3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY29uc3RhbnRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2Rpc3BsYXkuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY29sb3JzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9fdXRpbGl0aWVzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvX2NvbG9yLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvY29sb3IvX2NvbnRyYXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvX2dlbmVyYWwuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19yZXNldC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vcmVzZXQvX3V0aWxpdGllcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2NsZWFyZml4LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9fZmxvYXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL190YWctY2xvdWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19taW4uc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fc3ByaXRlcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3Nwcml0ZXMvX2Jhc2Uuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9zcHJpdGVzL19zcHJpdGUtaW1nLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvX3RhYmxlcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3RhYmxlcy9fYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1ucy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3RhYmxlcy9fYm9yZGVycy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3RhYmxlcy9fc2NhZmZvbGRpbmcuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpbmtzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpbmtzL19ob3Zlci1saW5rLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpbmtzL19saW5rLWNvbG9ycy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fdW5zdHlsZWQtbGluay5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9fbGlzdHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2hvcml6b250YWwtbGlzdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fY2xlYXJmaXguc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19yZXNldC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9yZXNldC9fdXRpbGl0aWVzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWxpc3Quc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1ibG9jay1saXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19ob3Jpem9udGFsLWxpc3Quc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2J1bGxldHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2NsZWFyZml4LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fcmVzZXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vcmVzZXQvX3V0aWxpdGllcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fZmxvYXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL2NzczMvX2lubGluZS1ibG9jay5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9fdGV4dC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19lbGxpcHNpcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0Ly4uLy4uL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0Ly4uLy4uL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fbm93cmFwLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX3JlcGxhY2VtZW50LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2ZvcmNlLXdyYXAuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL190eXBvZ3JhcGh5LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L19saW5rcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9faG92ZXItbGluay5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fbGluay1jb2xvcnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX3Vuc3R5bGVkLWxpbmsuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpc3RzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19ob3Jpem9udGFsLWxpc3Quc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2J1bGxldHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2NsZWFyZml4LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fcmVzZXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vcmVzZXQvX3V0aWxpdGllcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fZmxvYXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1saXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19pbmxpbmUtYmxvY2stbGlzdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL3Jlc2V0L191dGlsaXRpZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi9jc3MzL19pbmxpbmUtYmxvY2suc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2J1bGxldHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX3RleHQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fZWxsaXBzaXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC8uLi8uLi9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC8uLi8uLi9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX25vd3JhcC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19yZXBsYWNlbWVudC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19mb3JjZS13cmFwLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L192ZXJ0aWNhbF9yaHl0aG0uc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0L19ncmlkLWJhY2tncm91bmQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvX2ltYWdlcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi9fZnVuY3Rpb25zLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL2Z1bmN0aW9ucy9fbGlzdHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vZnVuY3Rpb25zL19jcm9zc19icm93c2VyX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vZnVuY3Rpb25zL19ncmFkaWVudF9zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL2Z1bmN0aW9ucy9fY29uc3RhbnRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL2Z1bmN0aW9ucy9fZGlzcGxheS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi9mdW5jdGlvbnMvX2NvbG9ycy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy9fYmFja2dyb3VuZC1zaXplLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19jc3MzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3JkZXItcmFkaXVzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2lubGluZS1ibG9jay5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19vcGFjaXR5LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JveC1zaGFkb3cuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fdGV4dC1zaGFkb3cuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fY29sdW1ucy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3gtc2l6aW5nLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JveC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19pbWFnZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX2Z1bmN0aW9ucy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9mdW5jdGlvbnMvX2xpc3RzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL2Z1bmN0aW9ucy9fY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL2Z1bmN0aW9ucy9fZ3JhZGllbnRfc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9mdW5jdGlvbnMvX2NvbnN0YW50cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9mdW5jdGlvbnMvX2Rpc3BsYXkuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vZnVuY3Rpb25zL19jb2xvcnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtY2xpcC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19iYWNrZ3JvdW5kLW9yaWdpbi5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19iYWNrZ3JvdW5kLXNpemUuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fZm9udC1mYWNlLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RyYW5zZm9ybS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL190cmFuc2l0aW9uLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2FwcGVhcmFuY2Uuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fcmVnaW9ucy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19oeXBoZW5hdGlvbi5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19maWx0ZXIuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fcGllLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL191c2VyLWludGVyZmFjZS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19mbGV4Ym94LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvbWl4aW5zL19hbmltYXRpb25zLnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL21peGlucy9fYnJlYWtwb2ludC5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9taXhpbnMvX2xpbmUtdGhyb3VnaC5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX192YXJpYWJsZXMuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvY29tbW9uL19idXR0b25zLnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NvbW1vbi9fZ3JpZC5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX3RleHQuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvY29tbW9uL19mb3Jtcy5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX2ljaGVjay1pbnB1dHMuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvZnJvbnQvaGVscGVycy9fX2NvbG9ycy5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mcm9udC9oZWxwZXJzL19fdmFyaWFibGVzLnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Zyb250L2hlbHBlcnMvX2hlbHBlcnMuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvZnJvbnQvbGF5b3V0L19iYWNrZ3JvdW5kcy5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mcm9udC9sYXlvdXQvX2Jhc2Uuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvZnJvbnQvbGF5b3V0L19mb290ZXIuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvZnJvbnQvbGF5b3V0L19oZWFkZXIuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvZnJvbnQvbGF5b3V0L19sYW5ndWFnZXNfbmF2LnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Zyb250L2xheW91dC9fc2VjdGlvbnMuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvZnJvbnQvZWxlbWVudHMvX2Zvcm1zLnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Zyb250L2VsZW1lbnRzL190eXBvZ3JhcGh5LnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Zyb250L2NvbXBvbmVudHMvX2FkdmFudGFnZXNfdGh1bWIuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvZnJvbnQvY29tcG9uZW50cy9fY29va2llc19jb25zZW50LnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Zyb250L2NvbXBvbmVudHMvX2N1c3RvbWVycy1sb2dvcy5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mcm9udC9jb21wb25lbnRzL19jdXN0b21lcnNfdGh1bWIuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvZnJvbnQvY29tcG9uZW50cy9fZmFxLWxpc3Quc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvZnJvbnQvY29tcG9uZW50cy9fbW9kYWxzLnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Zyb250L2NvbXBvbmVudHMvX25hdi1pY29uLnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Zyb250L2NvbXBvbmVudHMvX25vdGlmaWNhdGlvbnMuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvZnJvbnQvY29tcG9uZW50cy9fb2ZmZXJzLnNhc3MiCgldLAoJInNvdXJjZXNDb250ZW50IjogWwoJCSIvLyBDb21wYXNzXG5AaW1wb3J0IFwiY29tcGFzc1wiO1xuXG4vLyBNaXhpbnNcbkBpbXBvcnQgXCJtaXhpbnMvKlwiO1xuXG4vLyBDb21tb24gdmFyaWFibGVzXG5AaW1wb3J0IFwiY29tbW9uL192YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJjb21tb24vX2J1dHRvbnNcIjtcbkBpbXBvcnQgXCJjb21tb24vX2dyaWRcIjtcbkBpbXBvcnQgXCJjb21tb24vX3RleHRcIjtcbkBpbXBvcnQgXCJjb21tb24vX2Zvcm1zXCI7XG5AaW1wb3J0IFwiY29tbW9uL19pY2hlY2staW5wdXRzXCI7XG5cbi8vIEhlbHBlcnNcbkBpbXBvcnQgXCJmcm9udC9oZWxwZXJzLypcIjtcblxuLy8gTGF5b3V0XG5AaW1wb3J0IFwiZnJvbnQvbGF5b3V0LypcIjtcblxuLy8gRWxlbWVudHNcbkBpbXBvcnQgXCJmcm9udC9lbGVtZW50cy8qXCI7XG5cbi8vIENvbXBvbmVudHNcbkBpbXBvcnQgXCJmcm9udC9jb21wb25lbnRzLypcIjtcbiIsCgkJIkBpbXBvcnQgXCJjb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRlXCI7XG5AaW1wb3J0IFwiY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzc1wiO1xuXG5AbWl4aW4ga2V5ZnJhbWVzKCRuYW1lKSB7XG4gIEAtd2Via2l0LWtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgQGNvbnRlbnQ7IH1cbiAgQC1tb3ota2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICBAY29udGVudDsgfVxuICBALW1zLWtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgQGNvbnRlbnQ7IH1cbiAgQGtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgQGNvbnRlbnQ7IH0gfVxuIiwKCQkiQGltcG9ydCBcImNvbXBhc3NcIjtcbkBpbXBvcnQgXCJhbmltYXRpb24vY29yZVwiO1xuQGltcG9ydCBcImFuaW1hdGlvbi9hbmltYXRlXCI7XG4iLAoJCSJAaW1wb3J0IFwiY29tcGFzcy9mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJjb21wYXNzL3V0aWxpdGllc1wiO1xuQGltcG9ydCBcImNvbXBhc3MvdHlwb2dyYXBoeVwiO1xuQGltcG9ydCBcImNvbXBhc3MvY3NzM1wiO1xuIiwKCQkiQGltcG9ydCBcImZ1bmN0aW9ucy9saXN0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb25zdGFudHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZGlzcGxheVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb2xvcnNcIjtcbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgbGlzdCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2xpc3RzLnJiXG4vL1xuXG4vLyBjb21wYWN0IGlzIHBhcnQgb2YgbGlic2Fzc1xuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbnRoKCRsaXN0LCAkcGxhY2UpIHtcbiAgLy8gWWVwLCBTYXNzLWxpc3RzIGFyZSAxLWluZGV4ZWQuXG4gIEBpZiAkcGxhY2UgPT0gXCJmaXJzdFwiIHtcbiAgICAkcGxhY2U6IDE7IH1cbiAgQGlmICRwbGFjZSA9PSBcImxhc3RcIiB7XG4gICAgJHBsYWNlOiBsZW5ndGgoJGxpc3QpOyB9XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAkcGxhY2UpOyB9XG5cbi8vIGNvbXBhc3NfbGlzdCBjYW4ndCBiZSBpbXBsZW1lbnRlZCBpbiBzYXNzIHNjcmlwdFxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc3BhY2UtbGlzdCgkaXRlbTEsICRpdGVtMjogbnVsbCwgJGl0ZW0zOiBudWxsLCAkaXRlbTQ6IG51bGwsICRpdGVtNTogbnVsbCwgJGl0ZW02OiBudWxsLCAkaXRlbTc6IG51bGwsICRpdGVtODogbnVsbCwgJGl0ZW05OiBudWxsKSB7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJGl0ZW0xKSA9PSBcImxpc3RcIiB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRpdGVtczogJGl0ZW0xOyB9XG4gIEBlbHNlIHtcbiAgICAkaXRlbXM6ICRpdGVtMSAkaXRlbTIgJGl0ZW0zICRpdGVtNCAkaXRlbTUgJGl0ZW02ICRpdGVtNyAkaXRlbTggJGl0ZW05OyB9XG4gICRmdWxsOiBmaXJzdC12YWx1ZS1vZigkaXRlbXMpO1xuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkaXRlbXMpIHtcbiAgICAkaXRlbTogbnRoKCRpdGVtcywgJGkpO1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkaXRlbTsgfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLWxpc3Qtc2l6ZSgkbGlzdCkge1xuICBAcmV0dXJuIGxlbmd0aCgkbGlzdCk7IH1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNsaWNlKCRsaXN0LCAkc3RhcnQsICRlbmQ6IGZhbHNlKSB7XG4gIEBpZiAkZW5kID09IGZhbHNlIHtcbiAgICAkZW5kOiBsZW5ndGgoJGxpc3QpOyB9XG4gICRmdWxsOiBudGgoJGxpc3QsICRzdGFydCk7XG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgKyAxIHRocm91Z2ggJGVuZCB7XG4gICAgJGZ1bGw6ICRmdWxsLCBudGgoJGxpc3QsICRpKTsgfVxuICBAcmV0dXJuICRmdWxsOyB9XG5cbkBmdW5jdGlvbiByZWplY3QoJGxpc3QsICRyZWplY3QxLCAkcmVqZWN0MjogbnVsbCwgJHJlamVjdDM6IG51bGwsICRyZWplY3Q0OiBudWxsLCAkcmVqZWN0NTogbnVsbCwgJHJlamVjdDY6IG51bGwsICRyZWplY3Q3OiBudWxsLCAkcmVqZWN0ODogbnVsbCwgJHJlamVjdDk6IG51bGwpIHtcbiAgJHJlamVjdHM6ICRyZWplY3QxLCAkcmVqZWN0MiwgJHJlamVjdDMsICRyZWplY3Q0LCAkcmVqZWN0NSwgJHJlamVjdDYsICRyZWplY3Q3LCAkcmVqZWN0OCwgJHJlamVjdDk7XG4gICRmdWxsOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBpbmRleCgkcmVqZWN0cywgJGl0ZW0pIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRmdWxsIHtcbiAgICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTsgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZnVsbDogJGl0ZW07IH0gfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIGZpcnN0LXZhbHVlLW9mKCRsaXN0KSB7XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAxKTsgfVxuXG4vL0BpZiBub3QgZnVuY3Rpb24tZXhpc3RzKGNvbXBhY3QpXG5AZnVuY3Rpb24gY29tcGFjdCgkdmFycy4uLikge1xuICAkbGlzdDogKCk7XG4gIEBlYWNoICR2YXIgaW4gJHZhcnMge1xuICAgIEBpZiAkdmFyIHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICR2YXIsIGNvbW1hKTsgfSB9XG4gIEByZXR1cm4gJGxpc3Q7IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY3Jvc3MgYnJvd3NlciBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnJiXG4vL1xuXG5AZnVuY3Rpb24gcHJlZml4ZWQoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgJHByZWZpeGVkOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBcInN0cmluZ1wiIHtcbiAgICAgICRwcmVmaXhlZDogJHByZWZpeGVkIG9yIHN0ci1pbmRleCgkaXRlbSwgXCJ1cmxcIikgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCBcInJnYlwiKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sIFwiI1wiKSAhPSAxOyB9XG4gICAgQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gXCJjb2xvclwiIHt9XG4gICAgQGVsc2UgaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkcHJlZml4ZWQ6IHRydWU7IH0gfVxuICBAcmV0dXJuICRwcmVmaXhlZDsgfVxuXG5AZnVuY3Rpb24gcHJlZml4KCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgJHByb3BlcnRpZXM6IFwiXCI7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5MSkgPT0gXCJsaXN0XCIge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MTsgfVxuICBAZWxzZSB7XG4gICAgLy8gUGFzc2luZyBtdWx0aXBsZSBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5OyB9XG4gICRwcm9wczogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJGl0ZW0gPT0gbnVsbCB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBwcmVmaXhlZCgkcHJlZml4LCAkaXRlbSkge1xuICAgICAgICAkaXRlbTogI3skcHJlZml4fS0jeyRpdGVtfTsgfVxuICAgICAgQGlmICRwcm9wcyB7XG4gICAgICAgICRwcm9wczogJHByb3BzLCAkaXRlbTsgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcHJvcHM6ICRpdGVtOyB9IH0gfVxuICBAcmV0dXJuICRwcm9wczsgfVxuXG5AZnVuY3Rpb24gLXN2ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXN2Z1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW93ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW93Z1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLXdlYmtpdCgkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXdlYmtpdFwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW1veigkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW1velwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW8oJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1vXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtcGllKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItcGllXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGdyYWRpZW50IHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi92MC4xMi4yL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydC5yYlxuLy9cblxuQGZ1bmN0aW9uIGNvbG9yLXN0b3BzKCRpdGVtMSwgJGl0ZW0yOiBudWxsLCAkaXRlbTM6IG51bGwsICRpdGVtNDogbnVsbCwgJGl0ZW01OiBudWxsLCAkaXRlbTY6IG51bGwsICRpdGVtNzogbnVsbCwgJGl0ZW04OiBudWxsLCAkaXRlbTk6IG51bGwpIHtcbiAgJGl0ZW1zOiAkaXRlbTIsICRpdGVtMywgJGl0ZW00LCAkaXRlbTUsICRpdGVtNiwgJGl0ZW03LCAkaXRlbTgsICRpdGVtOTtcbiAgJGZ1bGw6ICRpdGVtMTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGl0ZW1zIHtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwsICRpdGVtOyB9IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb25zdGFudHMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb25zdGFudHMucmJcbi8vXG5cbkBmdW5jdGlvbiBvcHBvc2l0ZS1wb3NpdGlvbigkZnJvbSkge1xuICBAaWYgJGZyb20gPT0gdG9wIHtcbiAgICBAcmV0dXJuIGJvdHRvbTsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBib3R0b20ge1xuICAgIEByZXR1cm4gdG9wOyB9XG4gIEBlbHNlIGlmICRmcm9tID09IGxlZnQge1xuICAgIEByZXR1cm4gcmlnaHQ7IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gcmlnaHQge1xuICAgIEByZXR1cm4gbGVmdDsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBjZW50ZXIge1xuICAgIEByZXR1cm4gY2VudGVyOyB9IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZGlzcGxheSBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9kaXNwbGF5LnJiXG4vL1xuXG5AZnVuY3Rpb24gZWxlbWVudHMtb2YtdHlwZSgkdHlwZSkge1xuICBAaWYgJHR5cGUgPT0gYmxvY2sge1xuICAgIEByZXR1cm4gYWRkcmVzcywgYXJ0aWNsZSwgYXNpZGUsIGJsb2NrcXVvdGUsIGNlbnRlciwgZGlyLCBkaXYsIGRkLCBkZXRhaWxzLCBkbCwgZHQsIGZpZWxkc2V0LCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvcm0sIGZvb3RlciwgZnJhbWVzZXQsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGhyLCBoZWFkZXIsIGhncm91cCwgaXNpbmRleCwgbWFpbiwgbWVudSwgbmF2LCBub2ZyYW1lcywgbm9zY3JpcHQsIG9sLCBwLCBwcmUsIHNlY3Rpb24sIHN1bW1hcnksIHVsOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGlubGluZSB7XG4gICAgQHJldHVybiBhLCBhYmJyLCBhY3JvbnltLCBhdWRpbywgYiwgYmFzZWZvbnQsIGJkbywgYmlnLCBiciwgY2FudmFzLCBjaXRlLCBjb2RlLCBjb21tYW5kLCBkYXRhbGlzdCwgZGZuLCBlbSwgZW1iZWQsIGZvbnQsIGksIGltZywgaW5wdXQsIGtleWdlbiwga2JkLCBsYWJlbCwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHEsIHJwLCBydCwgcnVieSwgcywgc2FtcCwgc2VsZWN0LCBzbWFsbCwgc3Bhbiwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0ZXh0YXJlYSwgdGltZSwgdHQsIHUsIHZhciwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBpbmxpbmUtYmxvY2sge1xuICAgIEByZXR1cm4gaW1nOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlIHtcbiAgICBAcmV0dXJuIHRhYmxlOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGxpc3QtaXRlbSB7XG4gICAgQHJldHVybiBsaTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1yb3ctZ3JvdXAge1xuICAgIEByZXR1cm4gdGJvZHk7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtaGVhZGVyLWdyb3VwIHtcbiAgICBAcmV0dXJuIHRoZWFkOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLWZvb3Rlci1ncm91cCB7XG4gICAgQHJldHVybiB0Zm9vdDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1yb3cge1xuICAgIEByZXR1cm4gdHI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtY2VsbCB7XG4gICAgQHJldHVybiB0aCwgdGQ7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaHRtbDUtYmxvY2sge1xuICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5OyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGh0bWw1LWlubGluZSB7XG4gICAgQHJldHVybiBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZW1iZWQsIGtleWdlbiwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgdGltZSwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBodG1sNSB7XG4gICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGRldGFpbHMsIGVtYmVkLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIGtleWdlbiwgbWFpbiwgbWFyaywgbWVudSwgbWV0ZXIsIG5hdiwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCB2aWRlbywgd2JyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRleHQtaW5wdXQge1xuICAgIEByZXR1cm4gaW5wdXQsIHRleHRhcmVhOyB9IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29sb3JzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbG9ycy5yYlxuLy9cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIGxpZ2h0ZW4vZGFya2VuIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7IH1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBsaWdodG5lc3MgYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIHNjYWxlZCBkYXJrZXIsIGlmIHBvc2l0aXZlLCBpdCBpcyBzY2FsZWQgbGlnaHRlci5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIGxpZ2h0IG9yIGRhcmsgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTsgfVxuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2Ygc2F0dXJhdGUvZGVzYXR1cmF0ZSBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3Qtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7IH1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBzYXR1cmF0aW9uIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBkZXNhdHVyYXRlZCwgaWYgcG9zaXRpdmUsIGl0IGlzIHNhdHVyYXRlZC5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIHNhdHVyYXRlZCBvciBkZXNhdHVyYXRlZCBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7IH1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoIzAwMDAwMCwgJGNvbG9yLCAkcGVyY2VudGFnZSk7IH1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCgjZmZmZmZmLCAkY29sb3IsICRwZXJjZW50YWdlKTsgfVxuIiwKCQkiQGltcG9ydCBcInV0aWxpdGllcy9jb2xvclwiO1xuQGltcG9ydCBcInV0aWxpdGllcy9nZW5lcmFsXCI7XG5AaW1wb3J0IFwidXRpbGl0aWVzL3Nwcml0ZXNcIjtcbkBpbXBvcnQgXCJ1dGlsaXRpZXMvdGFibGVzXCI7XG5cbi8vIGRlcHJlY2F0ZWRcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpbmtzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saXN0c1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdGV4dFwiO1xuIiwKCQkiQGltcG9ydCBcImNvbG9yL2NvbnRyYXN0XCI7XG4iLAoJCSIkY29udHJhc3RlZC1kYXJrLWRlZmF1bHQ6ICMwMDAgIWRlZmF1bHQ7XG4kY29udHJhc3RlZC1saWdodC1kZWZhdWx0OiAjZmZmICFkZWZhdWx0O1xuJGNvbnRyYXN0ZWQtbGlnaHRuZXNzLXRocmVzaG9sZDogMzAlICFkZWZhdWx0O1xuXG4vLyBSZXR1cm5zIHRoZSBgJGxpZ2h0YCBjb2xvciB3aGVuIHRoZSBgJGNvbG9yYCBpcyBkYXJrXG4vLyBhbmQgdGhlIGAkZGFya2AgY29sb3Igd2hlbiB0aGUgYCRjb2xvcmAgaXMgbGlnaHQuXG4vLyBUaGUgYCR0aHJlc2hvbGRgIGlzIGEgcGVyY2VudCBiZXR3ZWVuIGAwJWAgYW5kIGAxMDAlYCBhbmQgaXQgZGV0ZXJtaW5lc1xuLy8gd2hlbiB0aGUgbGlnaHRuZXNzIG9mIGAkY29sb3JgIGNoYW5nZXMgZnJvbSBcImRhcmtcIiB0byBcImxpZ2h0XCIuXG5AZnVuY3Rpb24gY29udHJhc3QtY29sb3IoJGNvbG9yLCAkZGFyazogJGNvbnRyYXN0ZWQtZGFyay1kZWZhdWx0LCAkbGlnaHQ6ICRjb250cmFzdGVkLWxpZ2h0LWRlZmF1bHQsICR0aHJlc2hvbGQ6ICRjb250cmFzdGVkLWxpZ2h0bmVzcy10aHJlc2hvbGQpIHtcbiAgQHJldHVybiBpZihsaWdodG5lc3MoJGNvbG9yKSA8ICR0aHJlc2hvbGQsICRsaWdodCwgJGRhcmspOyB9XG5cbi8vIFNldHMgdGhlIHNwZWNpZmllZCBiYWNrZ3JvdW5kIGNvbG9yIGFuZCBjYWxjdWxhdGVzIGEgZGFyayBvciBsaWdodCBjb250cmFzdGVkIHRleHQgY29sb3IuXG4vLyBUaGUgYXJndW1lbnRzIGFyZSBwYXNzZWQgdGhyb3VnaCB0byB0aGUgW2NvbnRyYXN0LWNvbG9yIGZ1bmN0aW9uXSgjZnVuY3Rpb24tY29udHJhc3QtY29sb3IpLlxuQG1peGluIGNvbnRyYXN0ZWQoJGJhY2tncm91bmQtY29sb3IsICRkYXJrOiAkY29udHJhc3RlZC1kYXJrLWRlZmF1bHQsICRsaWdodDogJGNvbnRyYXN0ZWQtbGlnaHQtZGVmYXVsdCwgJHRocmVzaG9sZDogJGNvbnRyYXN0ZWQtbGlnaHRuZXNzLXRocmVzaG9sZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgY29sb3I6IGNvbnRyYXN0LWNvbG9yKCRiYWNrZ3JvdW5kLWNvbG9yLCAkZGFyaywgJGxpZ2h0LCAkdGhyZXNob2xkKTsgfVxuIiwKCQkiQGltcG9ydCBcImdlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcImdlbmVyYWwvdGFnLWNsb3VkXCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9oYWNrc1wiO1xuQGltcG9ydCBcImdlbmVyYWwvbWluXCI7XG4iLAoJCSIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLAoJCSIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH0gfVxuXG4vLyBSZXNldCB0aGUgYm94IG1vZGVsIG1lYXN1cmVtZW50cy5cbkBtaXhpbiByZXNldC1ib3gtbW9kZWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG4vLyBSZXNldCB0aGUgZm9udCBhbmQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIHJlc2V0LWZvbnQge1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vLyBSZXNldHMgdGhlIG91dGxpbmUgd2hlbiBmb2N1cy5cbi8vIEZvciBhY2Nlc3NpYmlsaXR5IHlvdSBuZWVkIHRvIGFwcGx5IHNvbWUgc3R5bGluZyBpbiBpdHMgcGxhY2UuXG5AbWl4aW4gcmVzZXQtZm9jdXMge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8vIFJlc2V0IGEgYm9keSBlbGVtZW50LlxuQG1peGluIHJlc2V0LWJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG4vLyBSZXNldCB0aGUgbGlzdCBzdHlsZSBvZiBhbiBlbGVtZW50LlxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi8vIFJlc2V0IGEgdGFibGVcbkBtaXhpbiByZXNldC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8vIFJlc2V0IGEgdGFibGUgY2VsbCAoYHRoYCwgYHRkYClcbkBtaXhpbiByZXNldC10YWJsZS1jZWxsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vLyBSZXNldCBhIHF1b3RhdGlvbiAoYHFgLCBgYmxvY2txdW90ZWApXG5AbWl4aW4gcmVzZXQtcXVvdGF0aW9uIHtcbiAgcXVvdGVzOiBub25lO1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsCgkJIi8vIEBkb2Mgb2ZmXG4vLyBFeHRlbmRzIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQgdG8gZW5jbG9zZSBhbnkgZmxvYXRzIGl0IGNvbnRhaW5zLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwiaGFja3NcIjtcblxuLy8gVGhpcyBiYXNpYyBtZXRob2QgaXMgcHJlZmVycmVkIGZvciB0aGUgdXN1YWwgY2FzZSwgd2hlbiBwb3NpdGlvbmVkXG4vLyBjb250ZW50IHdpbGwgbm90IHNob3cgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIuXG4vL1xuLy8gUmVjb21tZW5kYXRpb25zIGluY2x1ZGUgdXNpbmcgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGEgd2lkdGguXG4vLyBDcmVkaXQ6IFtxdWlya3Ntb2RlLm9yZ10oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDUvMDMvY2xlYXJpbmdfZmxvYXRzLmh0bWwpXG5AbWl4aW4gY2xlYXJmaXgge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlxcMDAyMFwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBjbGVhcjogYm90aDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuIiwKCQkiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9XG4gICAgQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH0gfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxOyB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OmxlZnQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LWxlZnQge1xuICBAaW5jbHVkZSBmbG9hdChsZWZ0KTsgfVxuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpyaWdodCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtcmlnaHQge1xuICBAaW5jbHVkZSBmbG9hdChyaWdodCk7IH1cblxuLy8gRGlyZWN0aW9uIGluZGVwZW5kZW50IGZsb2F0IG1peGluIHRoYXQgZml4ZXMgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQoJHNpZGU6IGxlZnQpIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogdW5xdW90ZSgkc2lkZSk7IH1cblxuLy8gUmVzZXRzIGZsb2F0ZWQgZWxlbWVudHMgYmFjayB0byB0aGVpciBkZWZhdWx0IG9mIGBmbG9hdDogbm9uZWAgYW5kIGRlZmF1bHRzXG4vLyB0byBgZGlzcGxheTogYmxvY2tgIHVubGVzcyB5b3UgcGFzcyBgaW5saW5lYCBhcyBhbiBhcmd1bWVudFxuLy9cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIGJvZHkuaG9tZXBhZ2Vcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK2Zsb2F0LWxlZnRcbi8vICAgICBib2R5LnNpZ251cFxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArcmVzZXQtZmxvYXRcbkBtaXhpbiByZXNldC1mbG9hdCgkZGlzcGxheTogYmxvY2spIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6ICRkaXNwbGF5OyB9XG4iLAoJCSIvLyBFbWl0cyBzdHlsZXMgZm9yIGEgdGFnIGNsb3VkXG5AbWl4aW4gdGFnLWNsb3VkKCRiYXNlLXNpemU6IDFlbSkge1xuICBmb250LXNpemU6ICRiYXNlLXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAxLjIgKiAkYmFzZS1zaXplO1xuICAueHhzLCAueHMsIC5zLCAubCwgLnhsLCAueHhsIHtcbiAgICBsaW5lLWhlaWdodDogMS4yICogJGJhc2Utc2l6ZTsgfVxuICAueHhzIHtcbiAgICBmb250LXNpemU6ICRiYXNlLXNpemUgLyAyOyB9XG4gIC54cyB7XG4gICAgZm9udC1zaXplOiAyICogJGJhc2Utc2l6ZSAvIDM7IH1cbiAgLnMge1xuICAgIGZvbnQtc2l6ZTogMyAqICRiYXNlLXNpemUgLyA0OyB9XG4gIC5sIHtcbiAgICBmb250LXNpemU6IDQgKiAkYmFzZS1zaXplIC8gMzsgfVxuICAueGwge1xuICAgIGZvbnQtc2l6ZTogMyAqICRiYXNlLXNpemUgLyAyOyB9XG4gIC54eGwge1xuICAgIGZvbnQtc2l6ZTogMiAqICRiYXNlLXNpemU7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9XG4gICAgQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH0gfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxOyB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyoqXG4vLyBDcm9zcyBicm93c2VyIG1pbi1oZWlnaHQgbWl4aW4uXG5AbWl4aW4gbWluLWhlaWdodCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgaGFja2VkLW1pbmltdW0oaGVpZ2h0LCAkdmFsdWUpOyB9XG5cbi8vKipcbi8vIENyb3NzIGJyb3dzZXIgbWluLXdpZHRoIG1peGluLlxuQG1peGluIG1pbi13aWR0aCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgaGFja2VkLW1pbmltdW0od2lkdGgsICR2YWx1ZSk7IH1cblxuLy8gQHByaXZhdGUgVGhpcyBtaXhpbiBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBkaXJlY3RseS5cbkBtaXhpbiBoYWNrZWQtbWluaW11bSgkcHJvcGVydHksICR2YWx1ZSkge1xuICBtaW4tI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gIEBpbmNsdWRlIGJhbmctaGFjaygkcHJvcGVydHksIGF1dG8sICR2YWx1ZSk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfVxuICAgIEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTsgfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic3ByaXRlcy9iYXNlXCI7XG5AaW1wb3J0IFwic3ByaXRlcy9zcHJpdGUtaW1nXCI7XG4iLAoJCSIvLyBEZXRlcm1pbmVzIHRob3NlIHN0YXRlcyBmb3Igd2hpY2ggeW91IHdhbnQgdG8gZW5hYmxlIG1hZ2ljIHNwcml0ZSBzZWxlY3RvcnNcbiRzcHJpdGUtc2VsZWN0b3JzOiBob3ZlciwgdGFyZ2V0LCBhY3RpdmUgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiBhbiBlbGVtZW50IHRvIHRoZSBvcmlnaW5hbFxuLy8gZGltZW5zaW9ucyBvZiBhbiBpbWFnZSBiZWZvcmUgaXQgd2FzIGluY2x1ZGVkIGluIHRoZSBzcHJpdGUuXG5AbWl4aW4gc3ByaXRlLWRpbWVuc2lvbnMoJG1hcCwgJHNwcml0ZSkge1xuICBoZWlnaHQ6IGltYWdlLWhlaWdodChzcHJpdGUtZmlsZSgkbWFwLCAkc3ByaXRlKSk7XG4gIHdpZHRoOiBpbWFnZS13aWR0aChzcHJpdGUtZmlsZSgkbWFwLCAkc3ByaXRlKSk7IH1cblxuLy8gU2V0IHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uIG9mIHRoZSBnaXZlbiBzcHJpdGUgYCRtYXBgIHRvIGRpc3BsYXkgdGhlXG4vLyBzcHJpdGUgb2YgdGhlIGdpdmVuIGAkc3ByaXRlYCBuYW1lLiBZb3UgY2FuIG1vdmUgdGhlIGltYWdlIHJlbGF0aXZlIHRvIGl0c1xuLy8gbmF0dXJhbCBwb3NpdGlvbiBieSBwYXNzaW5nIGAkb2Zmc2V0LXhgIGFuZCBgJG9mZnNldC15YC5cbkBtaXhpbiBzcHJpdGUtYmFja2dyb3VuZC1wb3NpdGlvbigkbWFwLCAkc3ByaXRlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBzcHJpdGUtcG9zaXRpb24oJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14LCAkb2Zmc2V0LXkpOyB9XG5cbi8vIERldGVybWluZXMgaWYgeW91IHdhbnQgdG8gaW5jbHVkZSBtYWdpYyBzZWxlY3RvcnMgaW4geW91ciBzcHJpdGVzXG4kZGlzYWJsZS1tYWdpYy1zcHJpdGUtc2VsZWN0b3JzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gSW5jbHVkZSB0aGUgcG9zaXRpb24gYW5kIChvcHRpb25hbGx5KSBkaW1lbnNpb25zIG9mIHRoaXMgYCRzcHJpdGVgXG4vLyBpbiB0aGUgZ2l2ZW4gc3ByaXRlIGAkbWFwYC4gVGhlIHNwcml0ZSB1cmwgc2hvdWxkIGNvbWUgZnJvbSBlaXRoZXIgYSBiYXNlXG4vLyBjbGFzcyBvciB5b3UgY2FuIHNwZWNpZnkgdGhlIGBzcHJpdGUtdXJsYCBleHBsaWNpdGx5IGxpa2UgdGhpczpcbi8vXG4vLyAgICAgYmFja2dyb3VuZDogJG1hcCBuby1yZXBlYXQ7XG5AbWl4aW4gc3ByaXRlKCRtYXAsICRzcHJpdGUsICRkaW1lbnNpb25zOiBmYWxzZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQtcG9zaXRpb24oJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xuICBAaWYgJGRpbWVuc2lvbnMge1xuICAgIEBpbmNsdWRlIHNwcml0ZS1kaW1lbnNpb25zKCRtYXAsICRzcHJpdGUpOyB9XG4gIEBpZiBub3QgJGRpc2FibGUtbWFnaWMtc3ByaXRlLXNlbGVjdG9ycyB7XG4gICAgQGluY2x1ZGUgc3ByaXRlLXNlbGVjdG9ycygkbWFwLCAkc3ByaXRlLCAkc3ByaXRlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7IH0gfVxuXG4vLyBJbmNsdWRlIHRoZSBzZWxlY3RvcnMgZm9yIHRoZSBgJHNwcml0ZWAgZ2l2ZW4gdGhlIGAkbWFwYCBhbmQgdGhlXG4vLyBgJGZ1bGwtc3ByaXRlLW5hbWVgXG4vLyBAcHJpdmF0ZVxuQG1peGluIHNwcml0ZS1zZWxlY3RvcnMoJG1hcCwgJHNwcml0ZS1uYW1lLCAkZnVsbC1zcHJpdGUtbmFtZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgQGVhY2ggJHNlbGVjdG9yIGluICRzcHJpdGUtc2VsZWN0b3JzIHtcbiAgICBAaWYgc3ByaXRlX2hhc19zZWxlY3RvcigkbWFwLCAkc3ByaXRlLW5hbWUsICRzZWxlY3Rvcikge1xuICAgICAgJjojeyRzZWxlY3Rvcn0sICYuI3skZnVsbC1zcHJpdGUtbmFtZX1fI3skc2VsZWN0b3J9LCAmLiN7JGZ1bGwtc3ByaXRlLW5hbWV9LSN7JHNlbGVjdG9yfSB7XG4gICAgICAgIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kLXBvc2l0aW9uKCRtYXAsIFwiI3skc3ByaXRlLW5hbWV9XyN7JHNlbGVjdG9yfVwiLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7IH0gfSB9IH1cblxuLy8gR2VuZXJhdGVzIGEgY2xhc3MgZm9yIGVhY2ggc3BhY2Ugc2VwYXJhdGVkIG5hbWUgaW4gYCRzcHJpdGUtbmFtZXNgLlxuLy8gVGhlIGNsYXNzIHdpbGwgYmUgb2YgdGhlIGZvcm0gLjxtYXAtbmFtZT4tPHNwcml0ZS1uYW1lPi5cbi8vXG4vLyBJZiBhIGJhc2UgY2xhc3MgaXMgcHJvdmlkZWQsIHRoZW4gZWFjaCBjbGFzcyB3aWxsIGV4dGVuZCBpdC5cbi8vXG4vLyBJZiBgJGRpbWVuc2lvbnNgIGlzIGB0cnVlYCwgdGhlIHNwcml0ZSBkaW1lbnNpb25zIHdpbGwgc3BlY2lmaWVkLlxuQG1peGluIHNwcml0ZXMoJG1hcCwgJHNwcml0ZS1uYW1lcywgJGJhc2UtY2xhc3M6IGZhbHNlLCAkZGltZW5zaW9uczogZmFsc2UsICRwcmVmaXg6IHNwcml0ZS1tYXAtbmFtZSgkbWFwKSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgQGVhY2ggJHNwcml0ZS1uYW1lIGluICRzcHJpdGUtbmFtZXMge1xuICAgIEBpZiBzcHJpdGVfZG9lc19ub3RfaGF2ZV9wYXJlbnQoJG1hcCwgJHNwcml0ZS1uYW1lKSB7XG4gICAgICAkZnVsbC1zcHJpdGUtbmFtZTogXCIjeyRwcmVmaXh9LSN7JHNwcml0ZS1uYW1lfVwiO1xuICAgICAgLiN7JGZ1bGwtc3ByaXRlLW5hbWV9IHtcbiAgICAgICAgQGlmICRiYXNlLWNsYXNzIHtcbiAgICAgICAgICBAZXh0ZW5kICN7JGJhc2UtY2xhc3N9OyB9XG4gICAgICAgIEBpbmNsdWRlIHNwcml0ZSgkbWFwLCAkc3ByaXRlLW5hbWUsICRkaW1lbnNpb25zLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7IH0gfSB9IH1cbiIsCgkJIi8vIEBkb2Mgb2ZmXG4vLyBFeGFtcGxlIDE6XG4vL1xuLy8gICAgIGEudHdpdHRlclxuLy8gICAgICAgK3Nwcml0ZS1pbWcoXCJpY29ucy0zMi5wbmdcIiwgMSlcbi8vICAgICBhLmZhY2Vib29rXG4vLyAgICAgICArc3ByaXRlLWltZyhcImljb25zLTMycG5nXCIsIDIpXG4vL1xuLy8gRXhhbXBsZSAyOlxuLy9cbi8vICAgICBhXG4vLyAgICAgICArc3ByaXRlLWJhY2tncm91bmQoXCJpY29ucy0zMi5wbmdcIilcbi8vICAgICAgIGEudHdpdHRlclxuLy8gICAgICAgICArc3ByaXRlLWNvbHVtbigxKVxuLy8gICAgICAgYS5mYWNlYm9va1xuLy8gICAgICAgICArc3ByaXRlLXJvdygyKVxuLy8gQGRvYyBvblxuXG4kc3ByaXRlLWRlZmF1bHQtc2l6ZTogMzJweCAhZGVmYXVsdDtcblxuJHNwcml0ZS1kZWZhdWx0LW1hcmdpbjogMHB4ICFkZWZhdWx0O1xuXG4kc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGg6ICRzcHJpdGUtZGVmYXVsdC1zaXplICFkZWZhdWx0O1xuXG4kc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0OiAkc3ByaXRlLWRlZmF1bHQtc2l6ZSAhZGVmYXVsdDtcblxuLy8gU2V0cyBhbGwgdGhlIHJ1bGVzIGZvciBhIHNwcml0ZSBmcm9tIGEgZ2l2ZW4gc3ByaXRlIGltYWdlIHRvIHNob3cganVzdCBvbmUgb2YgdGhlIHNwcml0ZXMuXG4vLyBUbyByZWR1Y2UgZHVwbGljYXRpb24gdXNlIGEgc3ByaXRlLWJnIG1peGluIGZvciBjb21tb24gcHJvcGVydGllcyBhbmQgYSBzcHJpdGUtc2VsZWN0IG1peGluIGZvciBwb3NpdGlvbmluZy5cbkBtaXhpbiBzcHJpdGUtaW1nKCRpbWcsICRjb2wsICRyb3c6IDEsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0LCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kKCRpbWcsICR3aWR0aCwgJGhlaWdodCk7XG4gIEBpbmNsdWRlIHNwcml0ZS1wb3NpdGlvbigkY29sLCAkcm93LCAkd2lkdGgsICRoZWlnaHQsICRtYXJnaW4pOyB9XG5cbi8vIFNldHMgcnVsZXMgY29tbW9uIGZvciBhbGwgc3ByaXRlcywgYXNzdW1lcyB5b3Ugd2FudCBhIHNxdWFyZSwgYnV0IGFsbG93cyBhIHJlY3Rhbmd1bGFyIHJlZ2lvbi5cbkBtaXhpbiBzcHJpdGUtYmFja2dyb3VuZCgkaW1nLCAkd2lkdGg6ICRzcHJpdGUtZGVmYXVsdC1zaXplLCAkaGVpZ2h0OiAkd2lkdGgpIHtcbiAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQtcmVjdGFuZ2xlKCRpbWcsICR3aWR0aCwgJGhlaWdodCk7IH1cblxuLy8gU2V0cyBydWxlcyBjb21tb24gZm9yIGFsbCBzcHJpdGVzLCBhc3N1bWVzIGEgcmVjdGFuZ3VsYXIgcmVnaW9uLlxuQG1peGluIHNwcml0ZS1iYWNrZ3JvdW5kLXJlY3RhbmdsZSgkaW1nLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCkge1xuICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGltZykgbm8tcmVwZWF0O1xuICB3aWR0aDogJHdpZHRoO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cblxuLy8gQWxsb3dzIGhvcml6b250YWwgc3ByaXRlIHBvc2l0aW9uaW5nIG9wdGltaXplZCBmb3IgYSBzaW5nbGUgcm93IG9mIHNwcml0ZXMuXG5AbWl4aW4gc3ByaXRlLWNvbHVtbigkY29sLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICBAaW5jbHVkZSBzcHJpdGUtcG9zaXRpb24oJGNvbCwgMSwgJHdpZHRoLCAwcHgsICRtYXJnaW4pOyB9XG5cbi8vIEFsbG93cyB2ZXJ0aWNhbCBzcHJpdGUgcG9zaXRpb25pbmcgb3B0aW1pemVkIGZvciBhIHNpbmdsZSBjb2x1bW4gb2Ygc3ByaXRlcy5cbkBtaXhpbiBzcHJpdGUtcm93KCRyb3csICRoZWlnaHQ6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgQGluY2x1ZGUgc3ByaXRlLXBvc2l0aW9uKDEsICRyb3csIDBweCwgJGhlaWdodCwgJG1hcmdpbik7IH1cblxuLy8gQWxsb3dzIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNwcml0ZSBwb3NpdGlvbmluZyBmcm9tIGEgZ3JpZCBvZiBlcXVhbCBkaW1lbnNpb25lZCBzcHJpdGVzLlxuQG1peGluIHNwcml0ZS1wb3NpdGlvbigkY29sLCAkcm93OiAxLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICAkeDogKCRjb2wgLSAxKSAqIC0kd2lkdGggLSAoJGNvbCAtIDEpICogJG1hcmdpbjtcbiAgJHk6ICgkcm93IC0gMSkgKiAtJGhlaWdodCAtICgkcm93IC0gMSkgKiAkbWFyZ2luO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkeCAkeTsgfVxuXG4vLyBTaW1pbGFyIHRvICdzcHJpdGUtcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucycgYnV0IGRvZXMgbm90IGF1dG1hdGljbHkgc2V0IHRoZSBkZW1lbnNpb25zXG5AbWl4aW4gc3ByaXRlLXJlcGxhY2UtdGV4dCgkbWFwLCAkc3ByaXRlLCAkZGltZW5zaW9uczogZmFsc2UsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIEBpbmNsdWRlIGhpZGUtdGV4dDtcbiAgQGluY2x1ZGUgc3ByaXRlKCRtYXAsICRzcHJpdGUsICRkaW1lbnNpb25zLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6ICRtYXA7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IH1cblxuLy8gU2ltaWxhciB0byAncmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucycgYnV0IHdpdGggc3ByaXRlc1xuLy8gVG8gdXNlLCBjcmVhdGUgeW91ciBzcHJpdGUgYW5kIHRoZW4gcGFzcyBpdCBpbiB0aGUgYCRtYXBgIHBhcmFtXG4vLyBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgaW4gdGhlIHNwcml0ZSBmb2xkZXIgc2hvdWxkIGJlIGAkaW1nLW5hbWVgXG5AbWl4aW4gc3ByaXRlLXJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMoJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgQGluY2x1ZGUgc3ByaXRlLXJlcGxhY2UtdGV4dCgkbWFwLCAkc3ByaXRlLCB0cnVlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7IH1cbiIsCgkJIkBpbXBvcnQgXCJ0YWJsZXMvYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1uc1wiO1xuQGltcG9ydCBcInRhYmxlcy9ib3JkZXJzXCI7XG5AaW1wb3J0IFwidGFibGVzL3NjYWZmb2xkaW5nXCI7XG4iLAoJCSJAbWl4aW4gYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1ucygkZXZlbi1yb3ctY29sb3IsICRvZGQtcm93LWNvbG9yLCAkZGFyay1pbnRlcnNlY3Rpb24sICRoZWFkZXItY29sb3I6IHdoaXRlLCAkZm9vdGVyLWNvbG9yOiB3aGl0ZSkge1xuICB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1jb2xvcjtcbiAgICAmLmV2ZW4sICY6bnRoLWNoaWxkKDJuKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH1cbiAgdHIge1xuICAgICYub2RkLCAmOm50aC1jaGlsZCgybisxKSB7XG4gICAgICB0ZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvZGQtcm93LWNvbG9yO1xuICAgICAgICAmLmV2ZW4sICY6bnRoLWNoaWxkKDJuKSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9kZC1yb3ctY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfSB9IH1cbiAgdHIuZXZlbiB7XG4gICAgdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGV2ZW4tcm93LWNvbG9yO1xuICAgICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXZlbi1yb3ctY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfSB9XG4gIHRmb290IHtcbiAgICB0aCwgdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1jb2xvcjtcbiAgICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9IH0gfVxuIiwKCQkiQG1peGluIG91dGVyLXRhYmxlLWJvcmRlcnMoJHdpZHRoOiAycHgsICRjb2xvcjogYmxhY2spIHtcbiAgYm9yZGVyOiAkd2lkdGggc29saWQgJGNvbG9yO1xuICB0aGVhZCB7XG4gICAgdGgge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9XG4gIHRmb290IHtcbiAgICB0aCwgdGQge1xuICAgICAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9XG4gIHRoIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9IH1cblxuQG1peGluIGlubmVyLXRhYmxlLWJvcmRlcnMoJHdpZHRoOiAycHgsICRjb2xvcjogYmxhY2spIHtcbiAgdGgsIHRkIHtcbiAgICBib3JkZXI6IHtcbiAgICAgIHJpZ2h0OiAkd2lkdGggc29saWQgJGNvbG9yO1xuICAgICAgYm90dG9tOiAkd2lkdGggc29saWQgJGNvbG9yO1xuICAgICAgbGVmdC13aWR0aDogMHB4O1xuICAgICAgdG9wLXdpZHRoOiAwcHg7IH1cbiAgICAmOmxhc3QtY2hpbGQsXG4gICAgJi5sYXN0IHtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMHB4OyB9IH1cbiAgLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuICAvLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcbiAgdGJvZHksIHRmb290IHtcbiAgICB0cjpsYXN0LWNoaWxkIHtcbiAgICAgIHRoLCB0ZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDBweDsgfSB9XG4gICAgdHIubGFzdCB7XG4gICAgICB0aCwgdGQge1xuICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwcHg7IH0gfSB9IH1cbiIsCgkJIkBtaXhpbiB0YWJsZS1zY2FmZm9sZGluZyB7XG4gIHRoIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cbiAgdGQsXG4gIHRoIHtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgJi5udW1lcmljIHtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9IH0gfVxuIiwKCQkiQGltcG9ydCBcImxpbmtzL2hvdmVyLWxpbmtcIjtcbkBpbXBvcnQgXCJsaW5rcy9saW5rLWNvbG9yc1wiO1xuQGltcG9ydCBcImxpbmtzL3Vuc3R5bGVkLWxpbmtcIjtcbiIsCgkJIi8vIGEgbGluayB0aGF0IG9ubHkgaGFzIGFuIHVuZGVybGluZSB3aGVuIHlvdSBob3ZlciBvdmVyIGl0XG5AbWl4aW4gaG92ZXItbGluayB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0gfVxuIiwKCQkiLy8gU2V0IGFsbCB0aGUgY29sb3JzIGZvciBhIGxpbmsgd2l0aCBvbmUgbWl4aW4gY2FsbC5cbi8vIE9yZGVyIG9mIGFyZ3VtZW50cyBpczpcbi8vXG4vLyAxLiBub3JtYWxcbi8vIDIuIGhvdmVyXG4vLyAzLiBhY3RpdmVcbi8vIDQuIHZpc2l0ZWRcbi8vIDUuIGZvY3VzXG4vL1xuLy8gVGhvc2Ugc3RhdGVzIG5vdCBzcGVjaWZpZWQgd2lsbCBpbmhlcml0LlxuLy8gTWl4aW4gdG8gYW4gYW5jaG9yIGxpbmsgbGlrZSBzbzpcbi8vICAgICBhXG4vLyAgICAgICArbGluay1jb2xvcnMoIzAwYywgIzBjYywgI2MwYywgI2NjYywgI2NjMClcblxuQG1peGluIGxpbmstY29sb3JzKCRub3JtYWwsICRob3ZlcjogZmFsc2UsICRhY3RpdmU6IGZhbHNlLCAkdmlzaXRlZDogZmFsc2UsICRmb2N1czogZmFsc2UpIHtcbiAgY29sb3I6ICRub3JtYWw7XG4gIEBpZiAkdmlzaXRlZCB7XG4gICAgJjp2aXNpdGVkIHtcbiAgICAgIGNvbG9yOiAkdmlzaXRlZDsgfSB9XG4gIEBpZiAkZm9jdXMge1xuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICRmb2N1czsgfSB9XG4gIEBpZiAkaG92ZXIge1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRob3ZlcjsgfSB9XG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGFjdGl2ZTsgfSB9IH1cbiIsCgkJIi8vIEEgbGluayB0aGF0IGxvb2tzIGFuZCBhY3RzIGxpa2UgdGhlIHRleHQgaXQgaXMgY29udGFpbmVkIHdpdGhpblxuQG1peGluIHVuc3R5bGVkLWxpbmsge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuICBjdXJzb3I6IGluaGVyaXQ7XG4gICY6YWN0aXZlLCAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCJsaXN0cy9ob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2lubGluZS1ibG9jay1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvYnVsbGV0c1wiO1xuIiwKCQkiLy8gSG9yaXpvbnRhbCBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3Rcbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciBvbiB5b3VyIHVsL29sIGFuZCAraG9yaXpvbnRhbC1saXN0LWl0ZW0gb24geW91ciBsaS5cbi8vIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lclxuLy8gICAgID4gbGlcbi8vICAgICAgICtob3Jpem9udGFsLWxpc3QtaXRlbVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGEgaG9yaXpvbnRhbCBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG4vL1xuLy8gOmxhc3QtY2hpbGQgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZFxuLy8gc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5IGZvciB0aGUgc3VwcG9ydCBtYXRyaXhcbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGluY2x1ZGUgZmxvYXQoJGRpcmVjdGlvbik7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7IH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHtcbiAgICAgIHBhZGRpbmctI3skZGlyZWN0aW9ufTogMDsgfVxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gICAgJi5sYXN0IHtcbiAgICAgIHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH0gfSB9XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgZmxvYXRlZCBsZWZ0IGFuZCB3b24ndCB3cmFwLlxuLy8gVGhpcyBpcyBub3QgYW4gaW5saW5lIGxpc3QuXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0KCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nLCAkZGlyZWN0aW9uKTsgfSB9XG4iLAoJCSIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgbm8tYnVsbGV0OyB9IH1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMikgKCgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDIpO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfSB9XG4iLAoJCSIvLyBAZG9jIG9mZlxuLy8gRXh0ZW5kcyB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHRvIGVuY2xvc2UgYW55IGZsb2F0cyBpdCBjb250YWlucy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vIFRoaXMgYmFzaWMgbWV0aG9kIGlzIHByZWZlcnJlZCBmb3IgdGhlIHVzdWFsIGNhc2UsIHdoZW4gcG9zaXRpb25lZFxuLy8gY29udGVudCB3aWxsIG5vdCBzaG93IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyLlxuLy9cbi8vIFJlY29tbWVuZGF0aW9ucyBpbmNsdWRlIHVzaW5nIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHdpZHRoLlxuLy8gQ3JlZGl0OiBbcXVpcmtzbW9kZS5vcmddKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA1LzAzL2NsZWFyaW5nX2Zsb2F0cy5odG1sKVxuQG1peGluIGNsZWFyZml4IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIG9sZGVyIG1ldGhvZCBmcm9tIFBvc2l0aW9uIElzIEV2ZXJ5dGhpbmcgY2FsbGVkXG4vLyBbRWFzeSBDbGVhcmluZ10oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZWFzeWNsZWFyaW5nLmh0bWwpXG4vLyBoYXMgdGhlIGFkdmFudGFnZSBvZiBhbGxvd2luZyBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGhhbmdcbi8vIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyIGF0IHRoZSBleHBlbnNlIG9mIG1vcmUgdHJpY2t5IENTUy5cbkBtaXhpbiBsZWdhY3ktcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgUElFIGNsZWFyZml4IG1ldGhvZCB0aGF0IHJlZHVjZXMgdGhlIGFtb3VudCBvZiBDU1Mgb3V0cHV0LlxuLy8gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBGaXJlZm94IGJlZm9yZSAzLjUgeW91IG5lZWQgdG8gdXNlIGBsZWdhY3ktcGllLWNsZWFyZml4YCBpbnN0ZWFkLlxuLy9cbi8vIEFkYXB0ZWQgZnJvbTogW0EgbmV3IG1pY3JvIGNsZWFyZml4IGhhY2tdKGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLylcbkBtaXhpbiBwaWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfVxuICAgIEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTsgfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLAoJCSIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH0gfVxuXG4vLyBSZXNldCB0aGUgYm94IG1vZGVsIG1lYXN1cmVtZW50cy5cbkBtaXhpbiByZXNldC1ib3gtbW9kZWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG4vLyBSZXNldCB0aGUgZm9udCBhbmQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIHJlc2V0LWZvbnQge1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vLyBSZXNldHMgdGhlIG91dGxpbmUgd2hlbiBmb2N1cy5cbi8vIEZvciBhY2Nlc3NpYmlsaXR5IHlvdSBuZWVkIHRvIGFwcGx5IHNvbWUgc3R5bGluZyBpbiBpdHMgcGxhY2UuXG5AbWl4aW4gcmVzZXQtZm9jdXMge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8vIFJlc2V0IGEgYm9keSBlbGVtZW50LlxuQG1peGluIHJlc2V0LWJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG4vLyBSZXNldCB0aGUgbGlzdCBzdHlsZSBvZiBhbiBlbGVtZW50LlxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi8vIFJlc2V0IGEgdGFibGVcbkBtaXhpbiByZXNldC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8vIFJlc2V0IGEgdGFibGUgY2VsbCAoYHRoYCwgYHRkYClcbkBtaXhpbiByZXNldC10YWJsZS1jZWxsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vLyBSZXNldCBhIHF1b3RhdGlvbiAoYHFgLCBgYmxvY2txdW90ZWApXG5AbWl4aW4gcmVzZXQtcXVvdGF0aW9uIHtcbiAgcXVvdGVzOiBub25lO1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsCgkJIi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OmxlZnQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LWxlZnQge1xuICBAaW5jbHVkZSBmbG9hdChsZWZ0KTsgfVxuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpyaWdodCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtcmlnaHQge1xuICBAaW5jbHVkZSBmbG9hdChyaWdodCk7IH1cblxuLy8gRGlyZWN0aW9uIGluZGVwZW5kZW50IGZsb2F0IG1peGluIHRoYXQgZml4ZXMgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQoJHNpZGU6IGxlZnQpIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogdW5xdW90ZSgkc2lkZSk7IH1cblxuLy8gUmVzZXRzIGZsb2F0ZWQgZWxlbWVudHMgYmFjayB0byB0aGVpciBkZWZhdWx0IG9mIGBmbG9hdDogbm9uZWAgYW5kIGRlZmF1bHRzXG4vLyB0byBgZGlzcGxheTogYmxvY2tgIHVubGVzcyB5b3UgcGFzcyBgaW5saW5lYCBhcyBhbiBhcmd1bWVudFxuLy9cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIGJvZHkuaG9tZXBhZ2Vcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK2Zsb2F0LWxlZnRcbi8vICAgICBib2R5LnNpZ251cFxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArcmVzZXQtZmxvYXRcbkBtaXhpbiByZXNldC1mbG9hdCgkZGlzcGxheTogYmxvY2spIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6ICRkaXNwbGF5OyB9XG4iLAoJCSIvLyBtYWtlcyBhIGxpc3QgaW5saW5lLlxuXG5AbWl4aW4gaW5saW5lLWxpc3Qge1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICYsICYgbGkge1xuICAgIG1hcmdpbjogMHB4O1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuXG4vLyBtYWtlcyBhbiBpbmxpbmUgbGlzdCBkZWxpbWl0ZWQgd2l0aCB0aGUgcGFzc2VkIHN0cmluZy5cbi8vIERlZmF1bHRzIHRvIG1ha2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LlxuLy9cbi8vIFBsZWFzZSBtYWtlIG5vdGUgb2YgdGhlIGJyb3dzZXIgc3VwcG9ydCBpc3N1ZXMgYmVmb3JlIHVzaW5nIHRoaXMgbWl4aW46XG4vL1xuLy8gdXNlIG9mIGBjb250ZW50YCBhbmQgYDphZnRlcmAgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZCBpbiBhbGwgYnJvd3NlcnMuXG4vLyBTZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MTUpXG4vL1xuLy8gYDpsYXN0LWNoaWxkYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkLlxuLy8gc2VlIHF1aXJrc21vZGUgZm9yIHRoZSBbc3VwcG9ydCBtYXRyaXhdKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5KS5cbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcblxuQG1peGluIGRlbGltaXRlZC1saXN0KCRzZXBhcmF0b3I6IFwiLCBcIikge1xuICBAaW5jbHVkZSBpbmxpbmUtbGlzdDtcbiAgbGkge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJHNlcGFyYXRvcjsgfVxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjsgfSB9XG4gICAgJi5sYXN0IHtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiOyB9IH0gfSB9XG5cbi8vIFNlZSBbZGVsaW1pdGVkLWxpc3RdKCNtaXhpbi1kZWxpbWl0ZWQtbGlzdClcbi8vIEBkZXByZWNhdGVkXG5AbWl4aW4gY29tbWEtZGVsaW1pdGVkLWxpc3Qge1xuICBAd2FybiBcImNvbW1hLWRlbGltaXRlZC1saXN0IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZGVsaW1pdGVkLWxpc3QgaW5zdGVhZC5cIjtcbiAgQGluY2x1ZGUgZGVsaW1pdGVkLWxpc3Q7IH1cbiIsCgkJIi8vIElubGluZS1CbG9jayBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbXBvcnQgaW5saW5lLWJsb2NrLWxpc3Q7XG4vLyAgICAgfVxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXJgIG9uIHlvdXIgdWwvb2wgYW5kXG4vLyBgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbWAgb24geW91ciBsaS4gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmdcbi8vIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICAgIHVsLm5hdiB7XG4vLyAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXI7XG4vLyAgICAgICA+IGxpIHtcbi8vICAgICAgICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbTtcbi8vICAgICAgIH1cbi8vICAgICB9XG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiaG9yaXpvbnRhbC1saXN0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcbkBpbXBvcnQgXCIuLi8uLi9jc3MzL2lubGluZS1ibG9ja1wiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGFuIGlubGluZS1ibG9jayBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50IGBpbmxpbmUtYmxvY2stbGlzdGAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1pdGVtKCRwYWRkaW5nOiBmYWxzZSkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jaztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZzsgfSB9IH1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBpbmxpbmUtYmxvY2sgYW5kIHdvbid0IHdyYXAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QoJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmcpOyB9IH1cbiIsCgkJIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBuby1idWxsZXQ7IH0gfVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCgkcGFkZGluZyAtICR3aWR0aCkgLyAyKSAoKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMik7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lOyB9IH1cbiIsCgkJIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nOyB9XG4gICAgJjpmaXJzdC1jaGlsZCwgJi5maXJzdCB7XG4gICAgICBwYWRkaW5nLSN7JGRpcmVjdGlvbn06IDA7IH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7XG4gICAgICBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9IH0gfVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwKCQkiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkge1xuICAgIEBpbmNsdWRlIG5vLWJ1bGxldDsgfSB9XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIpICgoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyKTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IH0gfVxuIiwKCQkiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cblxuLy8gVGhpcyBvbGRlciBtZXRob2QgZnJvbSBQb3NpdGlvbiBJcyBFdmVyeXRoaW5nIGNhbGxlZFxuLy8gW0Vhc3kgQ2xlYXJpbmddKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2Vhc3ljbGVhcmluZy5odG1sKVxuLy8gaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgcG9zaXRpb25lZCBlbGVtZW50cyB0byBoYW5nXG4vLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lciBhdCB0aGUgZXhwZW5zZSBvZiBtb3JlIHRyaWNreSBDU1MuXG5AbWl4aW4gbGVnYWN5LXBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXFwwMDIwXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cblxuLy8gVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFBJRSBjbGVhcmZpeCBtZXRob2QgdGhhdCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgQ1NTIG91dHB1dC5cbi8vIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCBiZWZvcmUgMy41IHlvdSBuZWVkIHRvIHVzZSBgbGVnYWN5LXBpZS1jbGVhcmZpeGAgaW5zdGVhZC5cbi8vXG4vLyBBZGFwdGVkIGZyb206IFtBIG5ldyBtaWNybyBjbGVhcmZpeCBoYWNrXShodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8pXG5AbWl4aW4gcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH1cbiAgICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jazsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfSB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gVGhpcyBtb2R1bGUgaGFzIG1vdmVkLlxuQGltcG9ydCBcIi4uLy4uL3Jlc2V0L3V0aWxpdGllc1wiO1xuIiwKCQkiLy8gQmFzZWQgb24gW0VyaWMgTWV5ZXIncyByZXNldCAyLjBdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvaW5kZXguaHRtbClcbi8vIEdsb2JhbCByZXNldCBydWxlcy5cbi8vIEZvciBtb3JlIHNwZWNpZmljIHJlc2V0cywgdXNlIHRoZSByZXNldCBtaXhpbnMgcHJvdmlkZWQgYmVsb3dcbkBtaXhpbiBnbG9iYWwtcmVzZXQge1xuICBodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICAvLyBVbmxpa2UgRXJpYydzIG9yaWdpbmFsIHJlc2V0LCB3ZSByZXNldCB0aGUgaHRtbCBlbGVtZW50IHRvIGJlIGNvbXBhdGlibGVcbiAgLy8gd2l0aCB0aGUgdmVydGljYWwgcmh5dGhtIG1peGlucy5cbiAgaHRtbCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm9keTsgfVxuICBvbCwgdWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGU7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH1cbiAgQGluY2x1ZGUgcmVzZXQtaHRtbDU7IH1cblxuLy8gUmVzZXQgYWxsIGVsZW1lbnRzIHdpdGhpbiBzb21lIHNlbGVjdG9yIHNjb3BlLiBUbyByZXNldCB0aGUgc2VsZWN0b3IgaXRzZWxmLFxuLy8gbWl4aW4gdGhlIGFwcHJvcHJpYXRlIHJlc2V0IG1peGluIGZvciB0aGF0IGVsZW1lbnQgdHlwZSBhcyB3ZWxsLiBUaGlzIGNvdWxkIGJlXG4vLyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gc3R5bGUgYSBwYXJ0IG9mIHlvdXIgcGFnZSBpbiBhIGRyYW1hdGljYWxseSBkaWZmZXJlbnQgd2F5LlxuQG1peGluIG5lc3RlZC1yZXNldCB7XG4gIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgY29udGVudDogbm9uZTsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgYm9yZGVyLlxuQG1peGluIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXIge1xuICBib3JkZXI6IG5vbmU7IH1cblxuLy8gVW5yZWNvZ25pemVkIGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgaW5saW5lLlxuLy8gVGhpcyByZXNldCBwcm92aWRlcyBhIGJhc2ljIHJlc2V0IGZvciBibG9jayBodG1sNSBlbGVtZW50c1xuLy8gc28gdGhleSBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGluIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcmVjb2duaXplIHRoZW1cbi8vIGFuZCByZXNldCBpbiBicm93c2VycyB0aGF0IGhhdmUgZGVmYXVsdCBzdHlsZXMgZm9yIHRoZW0uXG5AbWl4aW4gcmVzZXQtaHRtbDUge1xuICAje2VsZW1lbnRzLW9mLXR5cGUoaHRtbDUtYmxvY2spfSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGRpc3BsYXkgb2YgaW5saW5lIGFuZCBibG9jayBlbGVtZW50cyB0byB0aGVpciBkZWZhdWx0IGRpc3BsYXlcbi8vIGFjY29yZGluZyB0byB0aGVpciB0YWcgdHlwZS4gRWxlbWVudHMgdGhhdCBoYXZlIGEgZGVmYXVsdCBkaXNwbGF5IHRoYXQgdmFyaWVzIGFjcm9zc1xuLy8gdmVyc2lvbnMgb2YgaHRtbCBvciBicm93c2VyIGFyZSBub3QgaGFuZGxlZCBoZXJlLCBidXQgdGhpcyBjb3ZlcnMgdGhlIDkwJSB1c2UgY2FzZS5cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIC8vIFR1cm4gb2ZmIHRoZSBkaXNwbGF5IGZvciBib3RoIG9mIHRoZXNlIGNsYXNzZXNcbi8vICAgICAudW5yZWdpc3RlcmVkLW9ubHksIC5yZWdpc3RlcmVkLW9ubHlcbi8vICAgICAgIGRpc3BsYXk6IG5vbmVcbi8vICAgICAvLyBOb3cgdHVybiBvbmx5IG9uZSBvZiB0aGVtIGJhY2sgb24gZGVwZW5kaW5nIG9uIHNvbWUgb3RoZXIgY29udGV4dC5cbi8vICAgICBib2R5LnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnJlZ2lzdGVyZWQtb25seVwiKVxuLy8gICAgIGJvZHkudW5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi51bnJlZ2lzdGVyZWQtb25seVwiKVxuQG1peGluIHJlc2V0LWRpc3BsYXkoJHNlbGVjdG9yOiBcIlwiLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiaW5saW5lXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiYmxvY2tcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG4iLAoJCSIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfVxuIiwKCQkiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH1cbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU2V0IGAkaW5saW5lLWJsb2NrLWFsaWdubWVudGAgdG8gYG5vbmVgIG9yIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgb3V0cHV0XG4vLyBvZiBhIHZlcnRpY2FsLWFsaWduIHByb3BlcnR5IGluIHRoZSBpbmxpbmUtYmxvY2sgbWl4aW4uXG4vLyBPciBzZXQgaXQgdG8gYSBsZWdhbCB2YWx1ZSBmb3IgYHZlcnRpY2FsLWFsaWduYCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQuXG4kaW5saW5lLWJsb2NrLWFsaWdubWVudDogbWlkZGxlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBhIGNyb3NzLWJyb3dzZXIgbWV0aG9kIHRvIGltcGxlbWVudCBgZGlzcGxheTogaW5saW5lLWJsb2NrO2BcbkBtaXhpbiBpbmxpbmUtYmxvY2soJGFsaWdubWVudDogJGlubGluZS1ibG9jay1hbGlnbm1lbnQpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7IH1cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBAaWYgJGFsaWdubWVudCBhbmQgJGFsaWdubWVudCAhPSBub25lIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJGFsaWdubWVudDsgfVxuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgKnZlcnRpY2FsLWFsaWduOiBhdXRvO1xuICAgIHpvb206IDE7XG4gICAgKmRpc3BsYXk6IGlubGluZTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgbm8tYnVsbGV0OyB9IH1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMikgKCgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDIpO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwidGV4dC9lbGxpcHNpc1wiO1xuQGltcG9ydCBcInRleHQvbm93cmFwXCI7XG5AaW1wb3J0IFwidGV4dC9yZXBsYWNlbWVudFwiO1xuQGltcG9ydCBcInRleHQvZm9yY2Utd3JhcFwiO1xuIiwKCQkiQGltcG9ydCBcIi4uLy4uL2NzczMvc2hhcmVkXCI7XG5cbi8vIFRvIGdldCBmdWxsIGZpcmVmb3ggc3VwcG9ydCwgeW91IG11c3QgaW5zdGFsbCB0aGUgZWxsaXBzaXMgcGF0dGVybjpcbi8vXG4vLyAgICAgY29tcGFzcyBpbnN0YWxsIGNvbXBhc3MvZWxsaXBzaXNcbiR1c2UtbW96aWxsYS1lbGxpcHNpcy1iaW5kaW5nOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhpcyB0ZWNobmlxdWUsIGJ5IFtKdXN0aW4gTWF4d2VsbF0oaHR0cDovL2NvZGU0MDQuY29tLyksIHdhcyBvcmlnaW5hbGx5XG4vLyBwdWJsaXNoZWQgW2hlcmVdKGh0dHA6Ly9tYXR0c25pZGVyLmNvbS9jc3MvY3NzLXN0cmluZy10cnVuY2F0aW9uLXdpdGgtZWxsaXBzaXMvKS5cbi8vIEZpcmVmb3ggaW1wbGVtZW50YXRpb24gYnkgW1Jpa2tlcnQgS29wcGVzXShodHRwOi8vd3d3LnJpa2tlcnRrb3BwZXMuY29tL3Rob3VnaHRzLzIwMDgvNi8pLlxuQG1peGluIGVsbGlwc2lzKCRuby13cmFwOiB0cnVlKSB7XG4gIEBpZiAkbm8td3JhcCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodGV4dC1vdmVyZmxvdywgZWxsaXBzaXMsIG5vdCAtbW96LCBub3QgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCAkdXNlLW1vemlsbGEtZWxsaXBzaXMtYmluZGluZyB7XG4gICAgLW1vei1iaW5kaW5nOiBzdHlsZXNoZWV0LXVybCh1bnF1b3RlKFwieG1sL2VsbGlwc2lzLnhtbCNlbGxpcHNpc1wiKSk7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gV2hlbiByZW1lbWJlcmluZyB3aGV0aGVyIG9yIG5vdCB0aGVyZSdzIGEgaHlwaGVuIGluIHdoaXRlLXNwYWNlIGlzIHRvbyBoYXJkXG5AbWl4aW4gbm93cmFwIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuIiwKCQkiLy8gSW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24geW91IHByZWZlciB0byBtb3ZlIHlvdXIgdGV4dFxuLy8gd2hlbiBoaWRpbmcgaXQuXG4vL1xuLy8gYGxlZnRgIGlzIG1vcmUgcm9idXN0LCBlc3BlY2lhbGx5IGluIG9sZGVyIGJyb3dzZXJzLlxuLy8gYHJpZ2h0YCBzZWVtcyBoYXZlIGJldHRlciBydW50aW1lIHBlcmZvcm1hbmNlLlxuJGhpZGUtdGV4dC1kaXJlY3Rpb246IGxlZnQgIWRlZmF1bHQ7XG5cbi8vIEhpZGVzIGh0bWwgdGV4dCBhbmQgcmVwbGFjZXMgaXQgd2l0aCBhbiBpbWFnZS5cbi8vIElmIHlvdSB1c2UgdGhpcyBvbiBhbiBpbmxpbmUgZWxlbWVudCwgeW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGRpc3BsYXkgdG8gYmxvY2sgb3IgaW5saW5lLWJsb2NrLlxuLy8gQWxzbywgaWYgdGhlIHNpemUgb2YgdGhlIGltYWdlIGRpZmZlcnMgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBmb250IHNpemUsIHlvdSdsbCBuZWVkIHRvIHNldCB0aGUgd2lkdGggYW5kL29yIGhlaWdodC5cbi8vXG4vLyBQYXJhbWV0ZXJzOlxuLy9cbi8vICogYGltZ2AgLS0gdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgcHJvamVjdCBpbWFnZSBkaXJlY3RvcnkgdG8gdGhlIGltYWdlLCBvciBhIHVybCBsaXRlcmFsLlxuLy8gKiBgeGAgLS0gdGhlIHggcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG4vLyAqIGB5YCAtLSB0aGUgeSBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbkBtaXhpbiByZXBsYWNlLXRleHQoJGltZywgJHg6IDUwJSwgJHk6IDUwJSkge1xuICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4gIGJhY2tncm91bmQ6IHtcbiAgICBAaWYgaXMtdXJsKCRpbWcpIHtcbiAgICAgIGltYWdlOiB1cmwoJGltZyk7IH1cbiAgICBAZWxzZSB7XG4gICAgICBpbWFnZTogaW1hZ2UtdXJsKCRpbWcpOyB9XG4gICAgcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgcG9zaXRpb246ICR4ICR5OyB9IH1cblxuLy8gTGlrZSB0aGUgYHJlcGxhY2UtdGV4dGAgbWl4aW4sIGJ1dCBhbHNvIHNldHMgdGhlIHdpZHRoXG4vLyBhbmQgaGVpZ2h0IG9mIHRoZSBlbGVtZW50IGFjY29yZGluZyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgaW1hZ2UuXG4vL1xuLy8gSWYgeW91IHNldCBgJGlubGluZWAgdG8gdHJ1ZSwgdGhlbiBhbiBpbmxpbmUgaW1hZ2UgKGRhdGEgdXJpKSB3aWxsIGJlIHVzZWQuXG5AbWl4aW4gcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucygkaW1nLCAkeDogNTAlLCAkeTogNTAlLCAkaW5saW5lOiBmYWxzZSkge1xuICBAaW5jbHVkZSByZXBsYWNlLXRleHQoaWYoJGlubGluZSwgaW5saW5lLWltYWdlKCRpbWcpLCAkaW1nKSwgJHgsICR5KTtcbiAgd2lkdGg6IGltYWdlLXdpZHRoKCRpbWcpO1xuICBoZWlnaHQ6IGltYWdlLWhlaWdodCgkaW1nKTsgfVxuXG4vLyBIaWRlcyB0ZXh0IGluIGFuIGVsZW1lbnQgc28geW91IGNhbiBzZWUgdGhlIGJhY2tncm91bmQuXG4vL1xuLy8gVGhlIGRpcmVjdGlvbiBpbmRpY2F0ZXMgaG93IHRoZSB0ZXh0IHNob3VsZCBiZSBtb3ZlZCBvdXQgb2Ygdmlldy5cbi8vXG4vLyBTZWUgYCRoaWRlLXRleHQtZGlyZWN0aW9uYCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgdG8gc2V0IHRoaXMgZ2xvYmFsbHlcbi8vIGZvciB5b3VyIGFwcGxpY2F0aW9uLlxuQG1peGluIGhpZGUtdGV4dCgkZGlyZWN0aW9uOiAkaGlkZS10ZXh0LWRpcmVjdGlvbikge1xuICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAkYXBwcm94aW1hdGUtZW0tdmFsdWU6IDEycHg7XG4gICAgJHdpZGVyLXRoYW4tYW55LXNjcmVlbjogLTk5OTk7XG4gICAgdGV4dC1pbmRlbnQ6ICR3aWRlci10aGFuLWFueS1zY3JlZW4gKiAkYXBwcm94aW1hdGUtZW0tdmFsdWU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gIEBlbHNlIHtcbiAgICAvLyBzbGlnaHRseSB3aWRlciB0aGFuIHRoZSBib3ggcHJldmVudHMgaXNzdWVzIHdpdGggaW5saW5lLWJsb2NrIGVsZW1lbnRzXG4gICAgdGV4dC1pbmRlbnQ6IDExMCU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuOyB9IH1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IGJ5IHNxdWlzaGluZyB0aGUgdGV4dCBpbnRvIG9ibGl2aW9uLlxuLy8gVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gaGlkZSB0ZXh0IGNvbnRhaW5lZCBpbiBhbiBpbmxpbmUgZWxlbWVudFxuLy8gYnV0IHN0aWxsIGhhdmUgaXQgcmVhZCBieSBhIHNjcmVlbiByZWFkZXIuXG5AbWl4aW4gc3F1aXNoLXRleHQge1xuICBmb250OiAwLzAgc2VyaWY7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiIsCgkJIi8vIFByZXZlbnQgbG9uZyB1cmxzIGFuZCB0ZXh0IGZyb20gYnJlYWtpbmcgbGF5b3V0c1xuLy8gW29yaWdpbmFsbHkgZnJvbSBwZXJpc2hhYmxlcHJlc3MuY29tXShodHRwOi8vcGVyaXNoYWJsZXByZXNzLmNvbS9wcmVzcy8yMDEwLzA2LzAxL3dyYXBwaW5nLWNvbnRlbnQvKVxuQG1peGluIGZvcmNlLXdyYXAge1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuICAvLyBDU1MgMi4wXG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgLy8gQ1NTIDIuMVxuICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG4gIC8vIENTUyAzLjBcbiAgd2hpdGUtc3BhY2U6IC1wcmUtd3JhcDtcbiAgLy8gT3BlcmEgNC02XG4gIHdoaXRlLXNwYWNlOiAtby1wcmUtd3JhcDtcbiAgLy8gT3BlcmEgN1xuICB3aGl0ZS1zcGFjZTogLW1vei1wcmUtd3JhcDtcbiAgLy8gTW96aWxsYVxuICB3aGl0ZS1zcGFjZTogLWhwLXByZS13cmFwO1xuICAvLyBIUCBQcmludGVyc1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gfSAgLy8gSUUgNStcbiIsCgkJIkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpbmtzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saXN0c1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdGV4dFwiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdmVydGljYWxfcmh5dGhtXCI7XG4iLAoJCSJAaW1wb3J0IFwibGlua3MvaG92ZXItbGlua1wiO1xuQGltcG9ydCBcImxpbmtzL2xpbmstY29sb3JzXCI7XG5AaW1wb3J0IFwibGlua3MvdW5zdHlsZWQtbGlua1wiO1xuIiwKCQkiLy8gYSBsaW5rIHRoYXQgb25seSBoYXMgYW4gdW5kZXJsaW5lIHdoZW4geW91IGhvdmVyIG92ZXIgaXRcbkBtaXhpbiBob3Zlci1saW5rIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAmOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfSB9XG4iLAoJCSIvLyBTZXQgYWxsIHRoZSBjb2xvcnMgZm9yIGEgbGluayB3aXRoIG9uZSBtaXhpbiBjYWxsLlxuLy8gT3JkZXIgb2YgYXJndW1lbnRzIGlzOlxuLy9cbi8vIDEuIG5vcm1hbFxuLy8gMi4gaG92ZXJcbi8vIDMuIGFjdGl2ZVxuLy8gNC4gdmlzaXRlZFxuLy8gNS4gZm9jdXNcbi8vXG4vLyBUaG9zZSBzdGF0ZXMgbm90IHNwZWNpZmllZCB3aWxsIGluaGVyaXQuXG4vLyBNaXhpbiB0byBhbiBhbmNob3IgbGluayBsaWtlIHNvOlxuLy8gICAgIGFcbi8vICAgICAgICtsaW5rLWNvbG9ycygjMDBjLCAjMGNjLCAjYzBjLCAjY2NjLCAjY2MwKVxuXG5AbWl4aW4gbGluay1jb2xvcnMoJG5vcm1hbCwgJGhvdmVyOiBmYWxzZSwgJGFjdGl2ZTogZmFsc2UsICR2aXNpdGVkOiBmYWxzZSwgJGZvY3VzOiBmYWxzZSkge1xuICBjb2xvcjogJG5vcm1hbDtcbiAgQGlmICR2aXNpdGVkIHtcbiAgICAmOnZpc2l0ZWQge1xuICAgICAgY29sb3I6ICR2aXNpdGVkOyB9IH1cbiAgQGlmICRmb2N1cyB7XG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogJGZvY3VzOyB9IH1cbiAgQGlmICRob3ZlciB7XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGhvdmVyOyB9IH1cbiAgQGlmICRhY3RpdmUge1xuICAgICY6YWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkYWN0aXZlOyB9IH0gfVxuIiwKCQkiLy8gQSBsaW5rIHRoYXQgbG9va3MgYW5kIGFjdHMgbGlrZSB0aGUgdGV4dCBpdCBpcyBjb250YWluZWQgd2l0aGluXG5AbWl4aW4gdW5zdHlsZWQtbGluayB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG4gIGN1cnNvcjogaW5oZXJpdDtcbiAgJjphY3RpdmUsICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7IH0gfVxuIiwKCQkiQGltcG9ydCBcImxpc3RzL2hvcml6b250YWwtbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2lubGluZS1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvaW5saW5lLWJsb2NrLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9idWxsZXRzXCI7XG4iLAoJCSIvLyBIb3Jpem9udGFsIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdFxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIG9uIHlvdXIgdWwvb2wgYW5kICtob3Jpem9udGFsLWxpc3QtaXRlbSBvbiB5b3VyIGxpLlxuLy8gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmcgb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyXG4vLyAgICAgPiBsaVxuLy8gICAgICAgK2hvcml6b250YWwtbGlzdC1pdGVtXG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9yZXNldFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2Zsb2F0XCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYSBob3Jpem9udGFsIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICBAaW5jbHVkZSBjbGVhcmZpeDsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbi8vXG4vLyA6bGFzdC1jaGlsZCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkXG4vLyBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkgZm9yIHRoZSBzdXBwb3J0IG1hdHJpeFxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgbm8tYnVsbGV0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaW5jbHVkZSBmbG9hdCgkZGlyZWN0aW9uKTtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZzsgfVxuICAgICY6Zmlyc3QtY2hpbGQsICYuZmlyc3Qge1xuICAgICAgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgICAmLmxhc3Qge1xuICAgICAgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfSB9IH1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBmbG9hdGVkIGxlZnQgYW5kIHdvbid0IHdyYXAuXG4vLyBUaGlzIGlzIG5vdCBhbiBpbmxpbmUgbGlzdC5cbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QoJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmcsICRkaXJlY3Rpb24pOyB9IH1cbiIsCgkJIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBuby1idWxsZXQ7IH0gfVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCgkcGFkZGluZyAtICR3aWR0aCkgLyAyKSAoKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMik7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lOyB9IH1cbiIsCgkJIi8vIEBkb2Mgb2ZmXG4vLyBFeHRlbmRzIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQgdG8gZW5jbG9zZSBhbnkgZmxvYXRzIGl0IGNvbnRhaW5zLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwiaGFja3NcIjtcblxuLy8gVGhpcyBiYXNpYyBtZXRob2QgaXMgcHJlZmVycmVkIGZvciB0aGUgdXN1YWwgY2FzZSwgd2hlbiBwb3NpdGlvbmVkXG4vLyBjb250ZW50IHdpbGwgbm90IHNob3cgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIuXG4vL1xuLy8gUmVjb21tZW5kYXRpb25zIGluY2x1ZGUgdXNpbmcgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGEgd2lkdGguXG4vLyBDcmVkaXQ6IFtxdWlya3Ntb2RlLm9yZ10oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDUvMDMvY2xlYXJpbmdfZmxvYXRzLmh0bWwpXG5AbWl4aW4gY2xlYXJmaXgge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlxcMDAyMFwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBjbGVhcjogYm90aDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuIiwKCQkiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9XG4gICAgQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH0gfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxOyB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIFRoaXMgbW9kdWxlIGhhcyBtb3ZlZC5cbkBpbXBvcnQgXCIuLi8uLi9yZXNldC91dGlsaXRpZXNcIjtcbiIsCgkJIi8vIEJhc2VkIG9uIFtFcmljIE1leWVyJ3MgcmVzZXQgMi4wXShodHRwOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY3NzL3Jlc2V0L2luZGV4Lmh0bWwpXG4vLyBHbG9iYWwgcmVzZXQgcnVsZXMuXG4vLyBGb3IgbW9yZSBzcGVjaWZpYyByZXNldHMsIHVzZSB0aGUgcmVzZXQgbWl4aW5zIHByb3ZpZGVkIGJlbG93XG5AbWl4aW4gZ2xvYmFsLXJlc2V0IHtcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfSB9XG5cbi8vIFJlc2V0IHRoZSBib3ggbW9kZWwgbWVhc3VyZW1lbnRzLlxuQG1peGluIHJlc2V0LWJveC1tb2RlbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi8vIFJlc2V0IHRoZSBmb250IGFuZCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gcmVzZXQtZm9udCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbi8vIFJlc2V0cyB0aGUgb3V0bGluZSB3aGVuIGZvY3VzLlxuLy8gRm9yIGFjY2Vzc2liaWxpdHkgeW91IG5lZWQgdG8gYXBwbHkgc29tZSBzdHlsaW5nIGluIGl0cyBwbGFjZS5cbkBtaXhpbiByZXNldC1mb2N1cyB7XG4gIG91dGxpbmU6IDA7IH1cblxuLy8gUmVzZXQgYSBib2R5IGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi8vIFJlc2V0IHRoZSBsaXN0IHN0eWxlIG9mIGFuIGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLy8gUmVzZXQgYSB0YWJsZVxuQG1peGluIHJlc2V0LXRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxuLy8gUmVzZXQgYSB0YWJsZSBjZWxsIChgdGhgLCBgdGRgKVxuQG1peGluIHJlc2V0LXRhYmxlLWNlbGwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8vIFJlc2V0IGEgcXVvdGF0aW9uIChgcWAsIGBibG9ja3F1b3RlYClcbkBtaXhpbiByZXNldC1xdW90YXRpb24ge1xuICBxdW90ZXM6IG5vbmU7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwKCQkiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH1cbiIsCgkJIi8vIG1ha2VzIGEgbGlzdCBpbmxpbmUuXG5cbkBtaXhpbiBpbmxpbmUtbGlzdCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgJiwgJiBsaSB7XG4gICAgbWFyZ2luOiAwcHg7XG4gICAgcGFkZGluZzogMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG5cbi8vIG1ha2VzIGFuIGlubGluZSBsaXN0IGRlbGltaXRlZCB3aXRoIHRoZSBwYXNzZWQgc3RyaW5nLlxuLy8gRGVmYXVsdHMgdG8gbWFraW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QuXG4vL1xuLy8gUGxlYXNlIG1ha2Ugbm90ZSBvZiB0aGUgYnJvd3NlciBzdXBwb3J0IGlzc3VlcyBiZWZvcmUgdXNpbmcgdGhpcyBtaXhpbjpcbi8vXG4vLyB1c2Ugb2YgYGNvbnRlbnRgIGFuZCBgOmFmdGVyYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkIGluIGFsbCBicm93c2Vycy5cbi8vIFNlZSBxdWlya3Ntb2RlIGZvciB0aGUgW3N1cHBvcnQgbWF0cml4XShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QxNSlcbi8vXG4vLyBgOmxhc3QtY2hpbGRgIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWQuXG4vLyBzZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkpLlxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuXG5AbWl4aW4gZGVsaW1pdGVkLWxpc3QoJHNlcGFyYXRvcjogXCIsIFwiKSB7XG4gIEBpbmNsdWRlIGlubGluZS1saXN0O1xuICBsaSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAkc2VwYXJhdG9yOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiOyB9IH1cbiAgICAmLmxhc3Qge1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7IH0gfSB9IH1cblxuLy8gU2VlIFtkZWxpbWl0ZWQtbGlzdF0oI21peGluLWRlbGltaXRlZC1saXN0KVxuLy8gQGRlcHJlY2F0ZWRcbkBtaXhpbiBjb21tYS1kZWxpbWl0ZWQtbGlzdCB7XG4gIEB3YXJuIFwiY29tbWEtZGVsaW1pdGVkLWxpc3QgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBkZWxpbWl0ZWQtbGlzdCBpbnN0ZWFkLlwiO1xuICBAaW5jbHVkZSBkZWxpbWl0ZWQtbGlzdDsgfVxuIiwKCQkiLy8gSW5saW5lLUJsb2NrIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgICB1bC5uYXYge1xuLy8gICAgICAgQGltcG9ydCBpbmxpbmUtYmxvY2stbGlzdDtcbi8vICAgICB9XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gYEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcmAgb24geW91ciB1bC9vbCBhbmRcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtYCBvbiB5b3VyIGxpLiBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZ1xuLy8gb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbi8vICAgICAgID4gbGkge1xuLy8gICAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtO1xuLy8gICAgICAgfVxuLy8gICAgIH1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCJob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcIi4uLy4uL2NzczMvaW5saW5lLWJsb2NrXCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYW4gaW5saW5lLWJsb2NrIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyOyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCBgaW5saW5lLWJsb2NrLWxpc3RgLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nOyB9IH0gfVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGlubGluZS1ibG9jayBhbmQgd29uJ3Qgd3JhcC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdCgkcGFkZGluZzogZmFsc2UpIHtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbSgkcGFkZGluZyk7IH0gfVxuIiwKCQkiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkge1xuICAgIEBpbmNsdWRlIG5vLWJ1bGxldDsgfSB9XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIpICgoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyKTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IH0gfVxuIiwKCQkiLy8gSG9yaXpvbnRhbCBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3Rcbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciBvbiB5b3VyIHVsL29sIGFuZCAraG9yaXpvbnRhbC1saXN0LWl0ZW0gb24geW91ciBsaS5cbi8vIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lclxuLy8gICAgID4gbGlcbi8vICAgICAgICtob3Jpem9udGFsLWxpc3QtaXRlbVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGEgaG9yaXpvbnRhbCBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG4vL1xuLy8gOmxhc3QtY2hpbGQgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZFxuLy8gc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5IGZvciB0aGUgc3VwcG9ydCBtYXRyaXhcbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGluY2x1ZGUgZmxvYXQoJGRpcmVjdGlvbik7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7IH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHtcbiAgICAgIHBhZGRpbmctI3skZGlyZWN0aW9ufTogMDsgfVxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gICAgJi5sYXN0IHtcbiAgICAgIHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH0gfSB9XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgZmxvYXRlZCBsZWZ0IGFuZCB3b24ndCB3cmFwLlxuLy8gVGhpcyBpcyBub3QgYW4gaW5saW5lIGxpc3QuXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0KCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nLCAkZGlyZWN0aW9uKTsgfSB9XG4iLAoJCSIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgbm8tYnVsbGV0OyB9IH1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMikgKCgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDIpO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfSB9XG4iLAoJCSIvLyBAZG9jIG9mZlxuLy8gRXh0ZW5kcyB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHRvIGVuY2xvc2UgYW55IGZsb2F0cyBpdCBjb250YWlucy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vIFRoaXMgYmFzaWMgbWV0aG9kIGlzIHByZWZlcnJlZCBmb3IgdGhlIHVzdWFsIGNhc2UsIHdoZW4gcG9zaXRpb25lZFxuLy8gY29udGVudCB3aWxsIG5vdCBzaG93IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyLlxuLy9cbi8vIFJlY29tbWVuZGF0aW9ucyBpbmNsdWRlIHVzaW5nIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHdpZHRoLlxuLy8gQ3JlZGl0OiBbcXVpcmtzbW9kZS5vcmddKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA1LzAzL2NsZWFyaW5nX2Zsb2F0cy5odG1sKVxuQG1peGluIGNsZWFyZml4IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIG9sZGVyIG1ldGhvZCBmcm9tIFBvc2l0aW9uIElzIEV2ZXJ5dGhpbmcgY2FsbGVkXG4vLyBbRWFzeSBDbGVhcmluZ10oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZWFzeWNsZWFyaW5nLmh0bWwpXG4vLyBoYXMgdGhlIGFkdmFudGFnZSBvZiBhbGxvd2luZyBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGhhbmdcbi8vIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyIGF0IHRoZSBleHBlbnNlIG9mIG1vcmUgdHJpY2t5IENTUy5cbkBtaXhpbiBsZWdhY3ktcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgUElFIGNsZWFyZml4IG1ldGhvZCB0aGF0IHJlZHVjZXMgdGhlIGFtb3VudCBvZiBDU1Mgb3V0cHV0LlxuLy8gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBGaXJlZm94IGJlZm9yZSAzLjUgeW91IG5lZWQgdG8gdXNlIGBsZWdhY3ktcGllLWNsZWFyZml4YCBpbnN0ZWFkLlxuLy9cbi8vIEFkYXB0ZWQgZnJvbTogW0EgbmV3IG1pY3JvIGNsZWFyZml4IGhhY2tdKGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLylcbkBtaXhpbiBwaWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfVxuICAgIEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTsgfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLAoJCSIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH0gfVxuXG4vLyBSZXNldCB0aGUgYm94IG1vZGVsIG1lYXN1cmVtZW50cy5cbkBtaXhpbiByZXNldC1ib3gtbW9kZWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG4vLyBSZXNldCB0aGUgZm9udCBhbmQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIHJlc2V0LWZvbnQge1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vLyBSZXNldHMgdGhlIG91dGxpbmUgd2hlbiBmb2N1cy5cbi8vIEZvciBhY2Nlc3NpYmlsaXR5IHlvdSBuZWVkIHRvIGFwcGx5IHNvbWUgc3R5bGluZyBpbiBpdHMgcGxhY2UuXG5AbWl4aW4gcmVzZXQtZm9jdXMge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8vIFJlc2V0IGEgYm9keSBlbGVtZW50LlxuQG1peGluIHJlc2V0LWJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG4vLyBSZXNldCB0aGUgbGlzdCBzdHlsZSBvZiBhbiBlbGVtZW50LlxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi8vIFJlc2V0IGEgdGFibGVcbkBtaXhpbiByZXNldC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8vIFJlc2V0IGEgdGFibGUgY2VsbCAoYHRoYCwgYHRkYClcbkBtaXhpbiByZXNldC10YWJsZS1jZWxsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vLyBSZXNldCBhIHF1b3RhdGlvbiAoYHFgLCBgYmxvY2txdW90ZWApXG5AbWl4aW4gcmVzZXQtcXVvdGF0aW9uIHtcbiAgcXVvdGVzOiBub25lO1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsCgkJIi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OmxlZnQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LWxlZnQge1xuICBAaW5jbHVkZSBmbG9hdChsZWZ0KTsgfVxuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpyaWdodCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtcmlnaHQge1xuICBAaW5jbHVkZSBmbG9hdChyaWdodCk7IH1cblxuLy8gRGlyZWN0aW9uIGluZGVwZW5kZW50IGZsb2F0IG1peGluIHRoYXQgZml4ZXMgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQoJHNpZGU6IGxlZnQpIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogdW5xdW90ZSgkc2lkZSk7IH1cblxuLy8gUmVzZXRzIGZsb2F0ZWQgZWxlbWVudHMgYmFjayB0byB0aGVpciBkZWZhdWx0IG9mIGBmbG9hdDogbm9uZWAgYW5kIGRlZmF1bHRzXG4vLyB0byBgZGlzcGxheTogYmxvY2tgIHVubGVzcyB5b3UgcGFzcyBgaW5saW5lYCBhcyBhbiBhcmd1bWVudFxuLy9cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIGJvZHkuaG9tZXBhZ2Vcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK2Zsb2F0LWxlZnRcbi8vICAgICBib2R5LnNpZ251cFxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArcmVzZXQtZmxvYXRcbkBtaXhpbiByZXNldC1mbG9hdCgkZGlzcGxheTogYmxvY2spIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6ICRkaXNwbGF5OyB9XG4iLAoJCSIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfVxuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBTZXQgYCRpbmxpbmUtYmxvY2stYWxpZ25tZW50YCB0byBgbm9uZWAgb3IgYGZhbHNlYCB0byBkaXNhYmxlIHRoZSBvdXRwdXRcbi8vIG9mIGEgdmVydGljYWwtYWxpZ24gcHJvcGVydHkgaW4gdGhlIGlubGluZS1ibG9jayBtaXhpbi5cbi8vIE9yIHNldCBpdCB0byBhIGxlZ2FsIHZhbHVlIGZvciBgdmVydGljYWwtYWxpZ25gIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC5cbiRpbmxpbmUtYmxvY2stYWxpZ25tZW50OiBtaWRkbGUgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGEgY3Jvc3MtYnJvd3NlciBtZXRob2QgdG8gaW1wbGVtZW50IGBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7YFxuQG1peGluIGlubGluZS1ibG9jaygkYWxpZ25tZW50OiAkaW5saW5lLWJsb2NrLWFsaWdubWVudCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1zdGFjazsgfVxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIEBpZiAkYWxpZ25tZW50IGFuZCAkYWxpZ25tZW50ICE9IG5vbmUge1xuICAgIHZlcnRpY2FsLWFsaWduOiAkYWxpZ25tZW50OyB9XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAqdmVydGljYWwtYWxpZ246IGF1dG87XG4gICAgem9vbTogMTtcbiAgICAqZGlzcGxheTogaW5saW5lOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBuby1idWxsZXQ7IH0gfVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCgkcGFkZGluZyAtICR3aWR0aCkgLyAyKSAoKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMik7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCJ0ZXh0L2VsbGlwc2lzXCI7XG5AaW1wb3J0IFwidGV4dC9ub3dyYXBcIjtcbkBpbXBvcnQgXCJ0ZXh0L3JlcGxhY2VtZW50XCI7XG5AaW1wb3J0IFwidGV4dC9mb3JjZS13cmFwXCI7XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vY3NzMy9zaGFyZWRcIjtcblxuLy8gVG8gZ2V0IGZ1bGwgZmlyZWZveCBzdXBwb3J0LCB5b3UgbXVzdCBpbnN0YWxsIHRoZSBlbGxpcHNpcyBwYXR0ZXJuOlxuLy9cbi8vICAgICBjb21wYXNzIGluc3RhbGwgY29tcGFzcy9lbGxpcHNpc1xuJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGlzIHRlY2huaXF1ZSwgYnkgW0p1c3RpbiBNYXh3ZWxsXShodHRwOi8vY29kZTQwNC5jb20vKSwgd2FzIG9yaWdpbmFsbHlcbi8vIHB1Ymxpc2hlZCBbaGVyZV0oaHR0cDovL21hdHRzbmlkZXIuY29tL2Nzcy9jc3Mtc3RyaW5nLXRydW5jYXRpb24td2l0aC1lbGxpcHNpcy8pLlxuLy8gRmlyZWZveCBpbXBsZW1lbnRhdGlvbiBieSBbUmlra2VydCBLb3BwZXNdKGh0dHA6Ly93d3cucmlra2VydGtvcHBlcy5jb20vdGhvdWdodHMvMjAwOC82LykuXG5AbWl4aW4gZWxsaXBzaXMoJG5vLXdyYXA6IHRydWUpIHtcbiAgQGlmICRuby13cmFwIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0ZXh0LW92ZXJmbG93LCBlbGxpcHNpcywgbm90IC1tb3osIG5vdCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kICR1c2UtbW96aWxsYS1lbGxpcHNpcy1iaW5kaW5nIHtcbiAgICAtbW96LWJpbmRpbmc6IHN0eWxlc2hlZXQtdXJsKHVucXVvdGUoXCJ4bWwvZWxsaXBzaXMueG1sI2VsbGlwc2lzXCIpKTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBXaGVuIHJlbWVtYmVyaW5nIHdoZXRoZXIgb3Igbm90IHRoZXJlJ3MgYSBoeXBoZW4gaW4gd2hpdGUtc3BhY2UgaXMgdG9vIGhhcmRcbkBtaXhpbiBub3dyYXAge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG4iLAoJCSIvLyBJbmRpY2F0ZXMgdGhlIGRpcmVjdGlvbiB5b3UgcHJlZmVyIHRvIG1vdmUgeW91ciB0ZXh0XG4vLyB3aGVuIGhpZGluZyBpdC5cbi8vXG4vLyBgbGVmdGAgaXMgbW9yZSByb2J1c3QsIGVzcGVjaWFsbHkgaW4gb2xkZXIgYnJvd3NlcnMuXG4vLyBgcmlnaHRgIHNlZW1zIGhhdmUgYmV0dGVyIHJ1bnRpbWUgcGVyZm9ybWFuY2UuXG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogbGVmdCAhZGVmYXVsdDtcblxuLy8gSGlkZXMgaHRtbCB0ZXh0IGFuZCByZXBsYWNlcyBpdCB3aXRoIGFuIGltYWdlLlxuLy8gSWYgeW91IHVzZSB0aGlzIG9uIGFuIGlubGluZSBlbGVtZW50LCB5b3Ugd2lsbCBuZWVkIHRvIGNoYW5nZSB0aGUgZGlzcGxheSB0byBibG9jayBvciBpbmxpbmUtYmxvY2suXG4vLyBBbHNvLCBpZiB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgZGlmZmVycyBzaWduaWZpY2FudGx5IGZyb20gdGhlIGZvbnQgc2l6ZSwgeW91J2xsIG5lZWQgdG8gc2V0IHRoZSB3aWR0aCBhbmQvb3IgaGVpZ2h0LlxuLy9cbi8vIFBhcmFtZXRlcnM6XG4vL1xuLy8gKiBgaW1nYCAtLSB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBwcm9qZWN0IGltYWdlIGRpcmVjdG9yeSB0byB0aGUgaW1hZ2UsIG9yIGEgdXJsIGxpdGVyYWwuXG4vLyAqIGB4YCAtLSB0aGUgeCBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbi8vICogYHlgIC0tIHRoZSB5IHBvc2l0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlLlxuQG1peGluIHJlcGxhY2UtdGV4dCgkaW1nLCAkeDogNTAlLCAkeTogNTAlKSB7XG4gIEBpbmNsdWRlIGhpZGUtdGV4dDtcbiAgYmFja2dyb3VuZDoge1xuICAgIEBpZiBpcy11cmwoJGltZykge1xuICAgICAgaW1hZ2U6IHVybCgkaW1nKTsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGltYWdlOiBpbWFnZS11cmwoJGltZyk7IH1cbiAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBwb3NpdGlvbjogJHggJHk7IH0gfVxuXG4vLyBMaWtlIHRoZSBgcmVwbGFjZS10ZXh0YCBtaXhpbiwgYnV0IGFsc28gc2V0cyB0aGUgd2lkdGhcbi8vIGFuZCBoZWlnaHQgb2YgdGhlIGVsZW1lbnQgYWNjb3JkaW5nIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBpbWFnZS5cbi8vXG4vLyBJZiB5b3Ugc2V0IGAkaW5saW5lYCB0byB0cnVlLCB0aGVuIGFuIGlubGluZSBpbWFnZSAoZGF0YSB1cmkpIHdpbGwgYmUgdXNlZC5cbkBtaXhpbiByZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zKCRpbWcsICR4OiA1MCUsICR5OiA1MCUsICRpbmxpbmU6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIHJlcGxhY2UtdGV4dChpZigkaW5saW5lLCBpbmxpbmUtaW1hZ2UoJGltZyksICRpbWcpLCAkeCwgJHkpO1xuICB3aWR0aDogaW1hZ2Utd2lkdGgoJGltZyk7XG4gIGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRpbWcpOyB9XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBzbyB5b3UgY2FuIHNlZSB0aGUgYmFja2dyb3VuZC5cbi8vXG4vLyBUaGUgZGlyZWN0aW9uIGluZGljYXRlcyBob3cgdGhlIHRleHQgc2hvdWxkIGJlIG1vdmVkIG91dCBvZiB2aWV3LlxuLy9cbi8vIFNlZSBgJGhpZGUtdGV4dC1kaXJlY3Rpb25gIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB0byBzZXQgdGhpcyBnbG9iYWxseVxuLy8gZm9yIHlvdXIgYXBwbGljYXRpb24uXG5AbWl4aW4gaGlkZS10ZXh0KCRkaXJlY3Rpb246ICRoaWRlLXRleHQtZGlyZWN0aW9uKSB7XG4gIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICRhcHByb3hpbWF0ZS1lbS12YWx1ZTogMTJweDtcbiAgICAkd2lkZXItdGhhbi1hbnktc2NyZWVuOiAtOTk5OTtcbiAgICB0ZXh0LWluZGVudDogJHdpZGVyLXRoYW4tYW55LXNjcmVlbiAqICRhcHByb3hpbWF0ZS1lbS12YWx1ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgQGVsc2Uge1xuICAgIC8vIHNsaWdodGx5IHdpZGVyIHRoYW4gdGhlIGJveCBwcmV2ZW50cyBpc3N1ZXMgd2l0aCBpbmxpbmUtYmxvY2sgZWxlbWVudHNcbiAgICB0ZXh0LWluZGVudDogMTEwJTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47IH0gfVxuXG4vLyBIaWRlcyB0ZXh0IGluIGFuIGVsZW1lbnQgYnkgc3F1aXNoaW5nIHRoZSB0ZXh0IGludG8gb2JsaXZpb24uXG4vLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBoaWRlIHRleHQgY29udGFpbmVkIGluIGFuIGlubGluZSBlbGVtZW50XG4vLyBidXQgc3RpbGwgaGF2ZSBpdCByZWFkIGJ5IGEgc2NyZWVuIHJlYWRlci5cbkBtaXhpbiBzcXVpc2gtdGV4dCB7XG4gIGZvbnQ6IDAvMCBzZXJpZjtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDsgfVxuIiwKCQkiLy8gUHJldmVudCBsb25nIHVybHMgYW5kIHRleHQgZnJvbSBicmVha2luZyBsYXlvdXRzXG4vLyBbb3JpZ2luYWxseSBmcm9tIHBlcmlzaGFibGVwcmVzcy5jb21dKGh0dHA6Ly9wZXJpc2hhYmxlcHJlc3MuY29tL3ByZXNzLzIwMTAvMDYvMDEvd3JhcHBpbmctY29udGVudC8pXG5AbWl4aW4gZm9yY2Utd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG4gIC8vIENTUyAyLjBcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAvLyBDU1MgMi4xXG4gIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbiAgLy8gQ1NTIDMuMFxuICB3aGl0ZS1zcGFjZTogLXByZS13cmFwO1xuICAvLyBPcGVyYSA0LTZcbiAgd2hpdGUtc3BhY2U6IC1vLXByZS13cmFwO1xuICAvLyBPcGVyYSA3XG4gIHdoaXRlLXNwYWNlOiAtbW96LXByZS13cmFwO1xuICAvLyBNb3ppbGxhXG4gIHdoaXRlLXNwYWNlOiAtaHAtcHJlLXdyYXA7XG4gIC8vIEhQIFByaW50ZXJzXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiB9ICAvLyBJRSA1K1xuIiwKCQkiQGltcG9ydCBcIi4uL2xheW91dC9ncmlkLWJhY2tncm91bmRcIjtcblxuLy8gVGhlIGJhc2UgZm9udCBzaXplLlxuJGJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgYmFzZSBsaW5lIGhlaWdodCBkZXRlcm1pbmVzIHRoZSBiYXNpYyB1bml0IG9mIHZlcnRpY2FsIHJoeXRobS5cbiRiYXNlLWxpbmUtaGVpZ2h0OiAyNHB4ICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGRlZmF1bHQgYm9yZGVyIHN0eWxlIGZvciByaHl0aG0gYm9yZGVycy5cbiRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGU6IHNvbGlkICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuJGJyb3dzZXItZGVmYXVsdC1mb250LXNpemU6IDE2cHg7XG5cbi8vIFNldCB0byBmYWxzZSBpZiB5b3Ugd2FudCB0byB1c2UgYWJzb2x1dGUgcGl4ZWxzIGluIHNpemluZyB5b3VyIHR5cG9ncmFwaHkuXG4kcmVsYXRpdmUtZm9udC1zaXppbmc6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIEFsbG93cyB0aGUgYGFkanVzdC1mb250LXNpemUtdG9gIG1peGluIGFuZCB0aGUgYGxpbmVzLWZvci1mb250LXNpemVgIGZ1bmN0aW9uXG4vLyB0byByb3VuZCB0aGUgbGluZSBoZWlnaHQgdG8gdGhlIG5lYXJlc3QgaGFsZiBsaW5lIGhlaWdodCBpbnN0ZWFkIG9mIHRoZVxuLy8gbmVhcmVzdCBpbnRlZ3JhbCBsaW5lIGhlaWdodCB0byBhdm9pZCBsYXJnZSBzcGFjaW5nIGJldHdlZW4gbGluZXMuXG4kcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmU6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBFbnN1cmUgdGhlcmUgaXMgYXQgbGVhc3QgdGhpcyBtYW55IHBpeGVsc1xuLy8gb2YgdmVydGljYWwgcGFkZGluZyBhYm92ZSBhbmQgYmVsb3cgdGhlIHRleHQuXG4kbWluLWxpbmUtcGFkZGluZzogMnB4ICFkZWZhdWx0O1xuXG4vLyAkYmFzZS1mb250LXNpemUgYnV0IGluIHlvdXIgb3V0cHV0IHVuaXQgb2YgY2hvaWNlLlxuLy8gRGVmYXVsdHMgdG8gMWVtIHdoZW4gYCRyZWxhdGl2ZS1mb250LXNpemluZ2AgaXMgdHJ1ZS5cbiRmb250LXVuaXQ6IGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgMWVtLCAkYmFzZS1mb250LXNpemUpICFkZWZhdWx0O1xuXG4vLyBUaGUgYmFzaWMgdW5pdCBvZiBmb250IHJoeXRobS5cbiRiYXNlLXJoeXRobS11bml0OiAkYmFzZS1saW5lLWhlaWdodCAvICRiYXNlLWZvbnQtc2l6ZSAqICRmb250LXVuaXQ7XG5cbi8vIFRoZSBsZWFkZXIgaXMgdGhlIGFtb3VudCBvZiB3aGl0ZXNwYWNlIGluIGEgbGluZS5cbi8vIEl0IG1pZ2h0IGJlIHVzZWZ1bCBpbiB5b3VyIGNhbGN1bGF0aW9ucy5cbiRiYXNlLWxlYWRlcjogKCRiYXNlLWxpbmUtaGVpZ2h0IC0gJGJhc2UtZm9udC1zaXplKSAqICRmb250LXVuaXQgLyAkYmFzZS1mb250LXNpemU7XG5cbi8vIFRoZSBoYWxmLWxlYWRlciBpcyB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgYWJvdmUgYW5kIGJlbG93IGEgbGluZS5cbi8vIEl0IG1pZ2h0IGJlIHVzZWZ1bCBpbiB5b3VyIGNhbGN1bGF0aW9ucy5cbiRiYXNlLWhhbGYtbGVhZGVyOiAkYmFzZS1sZWFkZXIgLyAyO1xuXG4vLyBUcnVlIGlmIGEgbnVtYmVyIGhhcyBhIHJlbGF0aXZlIHVuaXQuXG5AZnVuY3Rpb24gcmVsYXRpdmUtdW5pdCgkbnVtYmVyKSB7XG4gIEByZXR1cm4gdW5pdCgkbnVtYmVyKSA9PSBcIiVcIiBvciB1bml0KCRudW1iZXIpID09IFwiZW1cIiBvciB1bml0KCRudW1iZXIpID09IFwicmVtXCI7IH1cblxuLy8gVHJ1ZSBpZiBhIG51bWJlciBoYXMgYW4gYWJzb2x1dGUgdW5pdC5cbkBmdW5jdGlvbiBhYnNvbHV0ZS11bml0KCRudW1iZXIpIHtcbiAgQHJldHVybiBub3QgKHJlbGF0aXZlLXVuaXQoJG51bWJlcikgb3IgdW5pdGxlc3MoJG51bWJlcikpOyB9XG5cbkBpZiAkcmVsYXRpdmUtZm9udC1zaXppbmcgYW5kIG5vdCByZWxhdGl2ZS11bml0KCRmb250LXVuaXQpIHtcbiAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgdHJ1ZSBidXQgJGZvbnQtdW5pdCBpcyBzZXQgdG8gI3skZm9udC11bml0fSB3aGljaCBpcyBub3QgYSByZWxhdGl2ZSB1bml0LlwiOyB9XG5cbi8vIEVzdGFibGlzaGVzIGEgZm9udCBiYXNlbGluZSBmb3IgdGhlIGdpdmVuIGZvbnQtc2l6ZS5cbkBtaXhpbiBlc3RhYmxpc2gtYmFzZWxpbmUoJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIC8vIElFIDYgcmVmdXNlcyB0byByZXNpemUgZm9udHMgc2V0IGluIHBpeGVscyBhbmQgaXQgd2VpcmRseSByZXNpemVzIGZvbnRzXG4gIC8vIHdob3NlIHJvb3QgaXMgc2V0IGluIGVtcy4gU28gd2Ugc2V0IHRoZSByb290IGZvbnQgc2l6ZSBpbiBwZXJjZW50YWdlcyBvZlxuICAvLyB0aGUgZGVmYXVsdCBmb250IHNpemUuXG4gICogaHRtbCB7XG4gICAgZm9udC1zaXplOiAxMDAlICogJGZvbnQtc2l6ZSAvICRicm93c2VyLWRlZmF1bHQtZm9udC1zaXplOyB9XG4gIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygxLCBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsICRmb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBsaW5lLWhlaWdodCB0byAxIHZlcnRpY2FsIHJoeXRobSB1bml0LlxuLy8gRG9lcyBub3Qgd29yayBvbiBlbGVtZW50cyB3aG9zZSBmb250LXNpemUgaXMgZGlmZmVyZW50IGZyb20gJGJhc2UtZm9udC1zaXplLlxuLy9cbi8vIEBkZXByZWNhdGVkIFRoaXMgbWl4aW4gd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuXG4vLyBQbGVhc2UgdXNlIHRoZSBgYWRqdXN0LWxlYWRpbmctdG9gIG1peGluIGluc3RlYWQuXG5AbWl4aW4gcmVzZXQtYmFzZWxpbmUge1xuICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygxLCBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsICRiYXNlLWZvbnQtc2l6ZSwgJGJhc2UtZm9udC1zaXplKSk7IH1cblxuLy8gU2hvdyBhIGJhY2tncm91bmQgaW1hZ2UgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWJ1ZyB5b3VyIGFsaWdubWVudHMuXG4vLyBJbmNsdWRlIHRoZSAkaW1nIGFyZ3VtZW50IGlmIHlvdSB3b3VsZCByYXRoZXIgdXNlIHlvdXIgb3duIGltYWdlIHRoYW4gdGhlXG4vLyBDb21wYXNzIGRlZmF1bHQgZ3JhZGllbnQgaW1hZ2UuXG5AbWl4aW4gZGVidWctdmVydGljYWwtYWxpZ25tZW50KCRpbWc6IGZhbHNlKSB7XG4gIEBpZiAkaW1nIHtcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGltZyk7IH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZCgkYmFzZS1yaHl0aG0tdW5pdCk7IH0gfVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGEgZGlmZmVyZW50IGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgdG8gbWFpbnRhaW4gdGhlXG4vLyByaHl0aG0uICRsaW5lcyBzcGVjaWZpZXMgaG93IG1hbnkgbXVsdGlwbGVzIG9mIHRoZSBiYXNlbGluZSByaHl0aG0gZWFjaCBsaW5lXG4vLyBvZiB0aGlzIGZvbnQgc2hvdWxkIHVzZSB1cC4gSXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXRcbi8vIGRlZmF1bHRzIHRvIHRoZSBzbWFsbGVzdCBpbnRlZ2VyIHRoYXQgaXMgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZm9udC5cbi8vIFVzZSAkZnJvbS1zaXplIHRvIGFkanVzdCBmcm9tIGEgZm9udC1zaXplIG90aGVyIHRoYW4gdGhlIGJhc2UgZm9udC1zaXplLlxuQG1peGluIGFkanVzdC1mb250LXNpemUtdG8oJHRvLXNpemUsICRsaW5lczogbGluZXMtZm9yLWZvbnQtc2l6ZSgkdG8tc2l6ZSksICRmcm9tLXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaWYgbm90ICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgJGZyb20tc2l6ZSAhPSAkYmFzZS1mb250LXNpemUge1xuICAgIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIGZhbHNlIGJ1dCBhIHJlbGF0aXZlIGZvbnQgc2l6ZSB3YXMgcGFzc2VkIHRvIGFkanVzdC1mb250LXNpemUtdG9cIjsgfVxuICBmb250LXNpemU6ICRmb250LXVuaXQgKiAkdG8tc2l6ZSAvICRmcm9tLXNpemU7XG4gIEBpbmNsdWRlIGFkanVzdC1sZWFkaW5nLXRvKCRsaW5lcywgaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAkdG8tc2l6ZSwgJGJhc2UtZm9udC1zaXplKSk7IH1cblxuLy8gQWRqdXN0IGEgYmxvY2sgdG8gaGF2ZSBkaWZmZXJlbnQgbGluZSBoZWlnaHQgdG8gbWFpbnRhaW4gdGhlIHJoeXRobS5cbi8vICRsaW5lcyBzcGVjaWZpZXMgaG93IG1hbnkgbXVsdGlwbGVzIG9mIHRoZSBiYXNlbGluZSByaHl0aG0gZWFjaCBsaW5lIG9mIHRoaXNcbi8vIGZvbnQgc2hvdWxkIHVzZSB1cC4gSXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXQgZGVmYXVsdHMgdG8gdGhlXG4vLyBzbWFsbGVzdCBpbnRlZ2VyIHRoYXQgaXMgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZm9udC5cbkBtaXhpbiBhZGp1c3QtbGVhZGluZy10bygkbGluZXMsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBsaW5lLWhlaWdodDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7IH1cblxuLy8gQ2FsY3VsYXRlIHJoeXRobSB1bml0cy5cbkBmdW5jdGlvbiByaHl0aG0oJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRvZmZzZXQ6IDApIHtcbiAgQGlmIG5vdCAkcmVsYXRpdmUtZm9udC1zaXppbmcgYW5kICRmb250LXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byB0aGUgcmh5dGhtIGZ1bmN0aW9uXCI7IH1cbiAgJHJoeXRobTogJGZvbnQtdW5pdCAqICgkbGluZXMgKiAkYmFzZS1saW5lLWhlaWdodCAtICRvZmZzZXQpIC8gJGZvbnQtc2l6ZTtcbiAgLy8gUm91bmQgdGhlIHBpeGVscyBkb3duIHRvIG5lYXJlc3QgaW50ZWdlci5cbiAgQGlmIHVuaXQoJHJoeXRobSkgPT0gcHgge1xuICAgICRyaHl0aG06IGZsb29yKCRyaHl0aG0pOyB9XG4gIEByZXR1cm4gJHJoeXRobTsgfVxuXG4vLyBDYWxjdWxhdGUgdGhlIG1pbmltdW0gbXVsdGlwbGUgb2Ygcmh5dGhtIHVuaXRzIG5lZWRlZCB0byBjb250YWluIHRoZSBmb250LXNpemUuXG5AZnVuY3Rpb24gbGluZXMtZm9yLWZvbnQtc2l6ZSgkZm9udC1zaXplKSB7XG4gICRsaW5lczogaWYoJHJvdW5kLXRvLW5lYXJlc3QtaGFsZi1saW5lLCBjZWlsKDIgKiAkZm9udC1zaXplIC8gJGJhc2UtbGluZS1oZWlnaHQpIC8gMiwgY2VpbCgkZm9udC1zaXplIC8gJGJhc2UtbGluZS1oZWlnaHQpKTtcbiAgQGlmICRsaW5lcyAqICRiYXNlLWxpbmUtaGVpZ2h0IC0gJGZvbnQtc2l6ZSA8ICRtaW4tbGluZS1wYWRkaW5nICogMiB7XG4gICAgJGxpbmVzOiAkbGluZXMgKyBpZigkcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmUsIDAuNSwgMSk7IH1cbiAgQHJldHVybiAkbGluZXM7IH1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlLiBUaGUgJHByb3BlcnR5IGNhbiBiZSBtYXJnaW4gb3IgcGFkZGluZy5cbkBtaXhpbiBsZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gICN7JHByb3BlcnR5fS10b3A6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpOyB9XG5cbi8vIEFwcGx5IGxlYWRpbmcgd2hpdGVzcGFjZSBhcyBwYWRkaW5nLlxuQG1peGluIHBhZGRpbmctbGVhZGVyKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIHBhZGRpbmctdG9wOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTsgfVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UgYXMgbWFyZ2luLlxuQG1peGluIG1hcmdpbi1sZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgbWFyZ2luLXRvcDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7IH1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZS4gVGhlICRwcm9wZXJ0eSBjYW4gYmUgbWFyZ2luIG9yIHBhZGRpbmcuXG5AbWl4aW4gdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJHByb3BlcnR5OiBtYXJnaW4pIHtcbiAgI3skcHJvcGVydHl9LWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7IH1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZSBhcyBwYWRkaW5nLlxuQG1peGluIHBhZGRpbmctdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBwYWRkaW5nLWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7IH1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZSBhcyBtYXJnaW4uXG5AbWl4aW4gbWFyZ2luLXRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgbWFyZ2luLWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7IH1cblxuLy8gU2hvcnRoYW5kIG1peGluIHRvIGFwcGx5IHdoaXRlc3BhY2UgZm9yIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYW5kIHBhZGRpbmcuXG5AbWl4aW4gcmh5dGhtKCRsZWFkZXI6IDAsICRwYWRkaW5nLWxlYWRlcjogMCwgJHBhZGRpbmctdHJhaWxlcjogMCwgJHRyYWlsZXI6IDAsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaW5jbHVkZSBsZWFkZXIoJGxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctbGVhZGVyKCRwYWRkaW5nLWxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctdHJhaWxlcigkcGFkZGluZy10cmFpbGVyLCAkZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgdHJhaWxlcigkdHJhaWxlciwgJGZvbnQtc2l6ZSk7IH1cblxuLy8gQXBwbHkgYSBib3JkZXIgYW5kIHdoaXRlc3BhY2UgdG8gYW55IHNpZGUgd2l0aG91dCBkZXN0cm95aW5nIHRoZSB2ZXJ0aWNhbFxuLy8gcmh5dGhtLiBUaGUgd2hpdGVzcGFjZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgd2lkdGggb2YgdGhlIGJvcmRlci5cbkBtaXhpbiBhcHBseS1zaWRlLXJoeXRobS1ib3JkZXIoJHNpZGUsICR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaWYgbm90ICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgJGZvbnQtc2l6ZSAhPSAkYmFzZS1mb250LXNpemUge1xuICAgIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIGZhbHNlIGJ1dCBhIHJlbGF0aXZlIGZvbnQgc2l6ZSB3YXMgcGFzc2VkIHRvIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlclwiOyB9XG4gIGJvcmRlci0jeyRzaWRlfS1zdHlsZTogJGJvcmRlci1zdHlsZTtcbiAgYm9yZGVyLSN7JHNpZGV9LXdpZHRoOiAkZm9udC11bml0ICogJHdpZHRoIC8gJGZvbnQtc2l6ZTtcbiAgcGFkZGluZy0jeyRzaWRlfTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSwgJG9mZnNldDogJHdpZHRoKTsgfVxuXG4vLyBBcHBseSBib3JkZXJzIGFuZCB3aGl0ZXNwYWNlIGVxdWFsbHkgdG8gYWxsIHNpZGVzLlxuQG1peGluIHJoeXRobS1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaWYgbm90ICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgJGZvbnQtc2l6ZSAhPSAkYmFzZS1mb250LXNpemUge1xuICAgIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIGZhbHNlIGJ1dCBhIHJlbGF0aXZlIGZvbnQgc2l6ZSB3YXMgcGFzc2VkIHRvIHJoeXRobS1ib3JkZXJzXCI7IH1cbiAgYm9yZGVyOiB7XG4gICAgc3R5bGU6ICRib3JkZXItc3R5bGU7XG4gICAgd2lkdGg6ICRmb250LXVuaXQgKiAkd2lkdGggLyAkZm9udC1zaXplOyB9XG4gIHBhZGRpbmc6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUsICRvZmZzZXQ6ICR3aWR0aCk7IH1cblxuLy8gQXBwbHkgYSBsZWFkaW5nIGJvcmRlci5cbkBtaXhpbiBsZWFkaW5nLWJvcmRlcigkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKHRvcCwgJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpOyB9XG5cbi8vIEFwcGx5IGEgdHJhaWxpbmcgYm9yZGVyLlxuQG1peGluIHRyYWlsaW5nLWJvcmRlcigkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKGJvdHRvbSwgJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpOyB9XG5cbi8vIEFwcGx5IGJvdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgYm9yZGVycy5cbkBtaXhpbiBob3Jpem9udGFsLWJvcmRlcnMoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGxlYWRpbmctYm9yZGVyKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbiAgQGluY2x1ZGUgdHJhaWxpbmctYm9yZGVyKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTsgfVxuXG4vLyBBbGlhcyBmb3IgYGhvcml6b250YWwtYm9yZGVyc2AgbWl4aW4uXG5AbWl4aW4gaC1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWJvcmRlcnMoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vY3NzMy9pbWFnZXNcIjtcbkBpbXBvcnQgXCIuLi9jc3MzL2JhY2tncm91bmQtc2l6ZVwiO1xuXG4vLyBTZXQgdGhlIGNvbG9yIG9mIHlvdXIgY29sdW1uc1xuJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3I6IHJnYmEoMTAwLCAxMDAsIDIyNSwgMC4yNSkgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgY29sb3Igb2YgeW91ciBndXR0ZXJzXG4kZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKSAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyBpbiB5b3VyIGdyaWRcbiRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1uczogMjQgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgd2lkdGggb2YgeW91ciBjb2x1bW5zXG4kZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aDogMzBweCAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSB3aWR0aCBvZiB5b3VyIGd1dHRlcnNcbiRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoOiAxMHB4ICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIG9mZnNldCwgaWYgeW91ciBjb2x1bW5zIGFyZSBwYWRkZWQgaW4gZnJvbSB0aGUgY29udGFpbmVyIGVkZ2VcbiRncmlkLWJhY2tncm91bmQtb2Zmc2V0OiAwcHggIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgY29sb3Igb2YgeW91ciBiYXNlbGluZVxuJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGhlaWdodCBvZiB5b3VyIGJhc2VsaW5lIGdyaWRcbiRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtaGVpZ2h0OiAxLjVlbSAhZGVmYXVsdDtcblxuLy8gdG9nZ2xlIHlvdXIgY29sdW1ucyBncmlkcyBvbiBhbmQgb2ZmXG4kc2hvdy1jb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gdG9nZ2xlIHlvdXIgdmVydGljYWwgZ3JpZHMgb24gYW5kIG9mZlxuJHNob3ctYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gdG9nZ2xlIGFsbCB5b3VyIGdyaWRzIG9uIGFuZCBvZmZcbiRzaG93LWdyaWQtYmFja2dyb3VuZHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIG9wdGlvbmFsbHkgZm9yY2UgeW91ciBncmlkLWltYWdlIHRvIHJlbWFpbiBmbHVpZFxuLy8gbm8gbWF0dGVyIHdoYXQgdW5pdHMgeW91IHVzZWQgdG8gZGVjbGFyZWQgeW91ciBncmlkLlxuJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgbmVlZGVkIGZvciBiYXNlbGluZSBncmlkc1xuQGZ1bmN0aW9uIGdldC1iYXNlbGluZS1ncmFkaWVudCgkY29sb3I6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IpIHtcbiAgJGdyYWRpZW50OiBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkY29sb3IgNSUsIHJnYmEoJGNvbG9yLCAwKSA1JSk7XG4gIEByZXR1cm4gJGdyYWRpZW50OyB9XG5cbi8vIENyZWF0ZSB0aGUgY29sb3Itc3RvcHMgbmVlZGVkIGZvciBob3Jpem9udGFsIGdyaWRzXG5AZnVuY3Rpb24gYnVpbGQtZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLCAkY29sdW1uOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCwgJGd1dHRlcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsICRvZmZzZXQ6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LCAkY29sdW1uLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IpIHtcbiAgJGdyaWQ6IGNvbXBhY3QoKTtcbiAgJGdyaWQ6IGFwcGVuZCgkZ3JpZCwgJGd1dHRlci1jb2xvciAkb2Zmc2V0LCBjb21tYSk7XG4gIEBmb3IgJGkgZnJvbSAwIHRvICR0b3RhbCB7XG4gICAgLy8gJGEgcmVwcmVzZW50cyB0aGUgc3RhcnQgb2YgdGhpcyBjb2x1bW4sIGluaXRpYWxseSBlcXVhbCB0byB0aGUgb2Zmc2V0XG4gICAgJGE6ICRvZmZzZXQ7XG4gICAgQGlmICRpID4gMCB7XG4gICAgICAkYTogJGEgKyAoJGNvbHVtbiArICRndXR0ZXIpICogJGk7IH1cbiAgICAvLyAkZyByZXByZXNlbnRzIHRoZSBzdGFydCBvZiB0aGlzIGd1dHRlciwgZXF1YWwgdG8gJGEgcGx1cyBvbmUgY29sdW1uLXdpZHRoXG4gICAgJGc6ICRhICsgJGNvbHVtbjtcbiAgICAvLyAkeiByZXByZXNlbnRzIHRoZSBlbmQgb2YgYSBndXR0ZXIsIGVxdWFsIHRvICRnIHBsdXMgb25lIGd1dHRlci13aWR0aFxuICAgICR6OiAkZyArICRndXR0ZXI7XG4gICAgQGlmIHVuaXQoJGEpID09IFwiJVwiIGFuZCAkaSA9PSAkdG90YWwgLSAxIHtcbiAgICAgICR6OiAxMDAlOyB9XG4gICAgLy8gYW5kIHdlIGFkZCB0aGlzIGNvbHVtbi9ndXR0ZXIgcGFpciB0byBvdXIgZ3JpZFxuICAgICRncmlkOiBqb2luKCRncmlkLCAoJGNvbHVtbi1jb2xvciAkYSwgJGNvbHVtbi1jb2xvciAkZywgJGd1dHRlci1jb2xvciAkZywgJGd1dHRlci1jb2xvciAkeikpOyB9XG4gIEByZXR1cm4gJGdyaWQ7IH1cblxuLy8gUmV0dXJuIHRoZSBncmFkaWVudCBuZWVkZWQgZm9yIGhvcml6b250YWwgZ3JpZHNcbkBmdW5jdGlvbiBnZXQtY29sdW1uLWdyYWRpZW50KCR0b3RhbDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLCAkY29sdW1uOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCwgJGd1dHRlcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsICRvZmZzZXQ6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LCAkY29sdW1uLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZCkge1xuICAkZ3JpZDogdW5xdW90ZShcIlwiKTtcbiAgLy8gZG9uJ3QgZm9yY2UgZmx1aWQgZ3JpZHMgd2hlbiB0aGV5IGFyZSBhbHJlYWR5IGZsdWlkLlxuICBAaWYgdW5pdCgkY29sdW1uKSA9PSBcIiVcIiB7XG4gICAgJGZvcmNlLWZsdWlkOiBmYWxzZTsgfVxuICBAaWYgJGZvcmNlLWZsdWlkIHtcbiAgICAkZ3JpZDogZ2V0LWNvbHVtbi1mbHVpZC1ncmlkKCR0b3RhbCwgJGNvbHVtbiwgJGd1dHRlciwgJG9mZnNldCwgJGNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvcik7IH1cbiAgQGVsc2Uge1xuICAgICRncmlkOiBidWlsZC1ncmlkLWJhY2tncm91bmQoJHRvdGFsLCAkY29sdW1uLCAkZ3V0dGVyLCAkb2Zmc2V0LCAkY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yKTsgfVxuICAvLyByZXR1cm4gdGhlIGhvcml6b250YWwgZ3JpZCBhcyBhIGdyYWRpZW50XG4gICRncmFkaWVudDogbGluZWFyLWdyYWRpZW50KGxlZnQsICRncmlkKTtcbiAgQHJldHVybiAkZ3JhZGllbnQ7IH1cblxuLy8gQ29udmVydCBhIGdyaWQgZnJvbSBmaXhlZCB1bml0cyBpbnRvIHBlcmNlbnRhZ2VzLlxuQGZ1bmN0aW9uIGdldC1jb2x1bW4tZmx1aWQtZ3JpZCgkdG90YWw6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucywgJGNvbHVtbjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsICRndXR0ZXI6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLCAkb2Zmc2V0OiAkZ3JpZC1iYWNrZ3JvdW5kLW9mZnNldCwgJGNvbHVtbi1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3I6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLWNvbG9yKSB7XG4gICRjb250ZXh0OiAkY29sdW1uICogJHRvdGFsICsgJGd1dHRlciAqICgkdG90YWwgLSAxKSArICRvZmZzZXQgKiAyO1xuICAkb2Zmc2V0OiAkb2Zmc2V0IC8gJGNvbnRleHQgKiAxMDAlO1xuICAkY29sdW1uOiAkY29sdW1uIC8gJGNvbnRleHQgKiAxMDAlO1xuICAkZ3V0dGVyOiAkZ3V0dGVyIC8gJGNvbnRleHQgKiAxMDAlO1xuICAvLyByZXR1cm4gdGhlIGhvcml6b250YWwgZ3JpZCBhcyBhIHNldCBvZiBjb2xvci1zdG9wc1xuICAkZ3JpZDogYnVpbGQtZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwgJGNvbHVtbiwgJGd1dHRlciwgJG9mZnNldCwgJGNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvcik7XG4gIEByZXR1cm4gJGdyaWQ7IH1cblxuLy8gQWRkIGp1c3QgdGhlIGJhc2VsaW5lIGdyaWQgdG8gYW4gZWxlbWVudCdzIGJhY2tncm91bmRcbkBtaXhpbiBiYXNlbGluZS1ncmlkLWJhY2tncm91bmQoJGJhc2VsaW5lOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWhlaWdodCwgJGNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1iYXNlbGluZS1ncmlkLWJhY2tncm91bmRzIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKGdldC1iYXNlbGluZS1ncmFkaWVudCgkY29sb3IpKTtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoMTAwJSAkYmFzZWxpbmUpO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wOyB9IH1cblxuLy8gQWRkIGp1c3QgdGhlIGhvcml6b250YWwgZ3JpZCB0byBhbiBlbGVtZW50J3MgYmFja2dyb3VuZFxuQG1peGluIGNvbHVtbi1ncmlkLWJhY2tncm91bmQoJHRvdGFsOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsICRjb2x1bW46ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLCAkZ3V0dGVyOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCwgJG9mZnNldDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsICRjb2x1bW4tY29sb3I6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkOiAkZ3JpZC1iYWNrZ3JvdW5kLWZvcmNlLWZsdWlkKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1jb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShnZXQtY29sdW1uLWdyYWRpZW50KCR0b3RhbCwgJGNvbHVtbiwgJGd1dHRlciwgJG9mZnNldCwgJGNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKSk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7IH0gfVxuXG4vLyBBZGQgYm90aCBob3Jpem9udGFsIGFuZCBiYXNlbGluZSBncmlkcyB0byBhbiBlbGVtZW50J3MgYmFja2dyb3VuZFxuQG1peGluIGdyaWQtYmFja2dyb3VuZCgkdG90YWw6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucywgJGNvbHVtbjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsICRndXR0ZXI6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLCAkYmFzZWxpbmU6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtaGVpZ2h0LCAkb2Zmc2V0OiAkZ3JpZC1iYWNrZ3JvdW5kLW9mZnNldCwgJGNvbHVtbi1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3I6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLWNvbG9yLCAkYmFzZWxpbmUtY29sb3I6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICRmb3JjZS1mbHVpZDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZCkge1xuICBAaWYgJHNob3ctZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGlmICRzaG93LWJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZHMgYW5kICRzaG93LWNvbHVtbi1ncmlkLWJhY2tncm91bmRzIHtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoZ2V0LWJhc2VsaW5lLWdyYWRpZW50KCRiYXNlbGluZS1jb2xvciksIGdldC1jb2x1bW4tZ3JhZGllbnQoJHRvdGFsLCAkY29sdW1uLCAkZ3V0dGVyLCAkb2Zmc2V0LCAkY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yLCAkZm9yY2UtZmx1aWQpKTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgxMDAlICRiYXNlbGluZSwgYXV0byk7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZCgkYmFzZWxpbmUsICRiYXNlbGluZS1jb2xvcik7XG4gICAgICBAaW5jbHVkZSBjb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwgJGNvbHVtbiwgJGd1dHRlciwgJG9mZnNldCwgJGNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKTsgfSB9IH1cbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcbkBpbXBvcnQgXCIuLi91dGlsaXRpZXMvZ2VuZXJhbC9oYWNrc1wiO1xuQGltcG9ydCBcIi4uL2Z1bmN0aW9uc1wiO1xuXG4vLyBCYWNrZ3JvdW5kIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTI6IGZhbHNlLCAkYmFja2dyb3VuZC0zOiBmYWxzZSwgJGJhY2tncm91bmQtNDogZmFsc2UsICRiYWNrZ3JvdW5kLTU6IGZhbHNlLCAkYmFja2dyb3VuZC02OiBmYWxzZSwgJGJhY2tncm91bmQtNzogZmFsc2UsICRiYWNrZ3JvdW5kLTg6IGZhbHNlLCAkYmFja2dyb3VuZC05OiBmYWxzZSwgJGJhY2tncm91bmQtMTA6IGZhbHNlKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LCAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG4gICRtdWx0LWJnczogLWNvbXBhc3MtbGlzdC1zaXplKCRiYWNrZ3JvdW5kcykgPiAxO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgJGJhY2tncm91bmRzKSBvciAkbXVsdC1iZ3M7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLXN2ZygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLW93ZygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLXdlYmtpdCgkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC1tb3ooJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC1vKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllIGFuZCAkYWRkLXBpZS1iZyB7XG4gICAgLXBpZS1iYWNrZ3JvdW5kOiAtcGllKCRiYWNrZ3JvdW5kcyk7IH1cbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmRzOyB9XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLXdpdGgtY3NzMi1mYWxsYmFjaygkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yOiBmYWxzZSwgJGJhY2tncm91bmQtMzogZmFsc2UsICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLCAkYmFja2dyb3VuZC01OiBmYWxzZSwgJGJhY2tncm91bmQtNjogZmFsc2UsICRiYWNrZ3JvdW5kLTc6IGZhbHNlLCAkYmFja2dyb3VuZC04OiBmYWxzZSwgJGJhY2tncm91bmQtOTogZmFsc2UsICRiYWNrZ3JvdW5kLTEwOiBmYWxzZSkge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSwgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJHNpbXBsZS1iYWNrZ3JvdW5kOiBpZigkbXVsdC1iZ3Mgb3IgcHJlZml4ZWQoLWNzczIsICRiYWNrZ3JvdW5kcyksIC1jc3MyKC1jb21wYXNzLW50aCgkYmFja2dyb3VuZHMsIGxhc3QpKSwgZmFsc2UpO1xuICBAaWYgbm90IGJsYW5rKCRzaW1wbGUtYmFja2dyb3VuZCkge1xuICAgIGJhY2tncm91bmQ6ICRzaW1wbGUtYmFja2dyb3VuZDsgfVxuICBAaW5jbHVkZSBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTsgfVxuXG4vLyBCYWNrZ3JvdW5kIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS0xLCAkaW1hZ2UtMjogZmFsc2UsICRpbWFnZS0zOiBmYWxzZSwgJGltYWdlLTQ6IGZhbHNlLCAkaW1hZ2UtNTogZmFsc2UsICRpbWFnZS02OiBmYWxzZSwgJGltYWdlLTc6IGZhbHNlLCAkaW1hZ2UtODogZmFsc2UsICRpbWFnZS05OiBmYWxzZSwgJGltYWdlLTEwOiBmYWxzZSkge1xuICAkaW1hZ2VzOiBjb21wYWN0KCRpbWFnZS0xLCAkaW1hZ2UtMiwgJGltYWdlLTMsICRpbWFnZS00LCAkaW1hZ2UtNSwgJGltYWdlLTYsICRpbWFnZS03LCAkaW1hZ2UtOCwgJGltYWdlLTksICRpbWFnZS0xMCk7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAkaW1hZ2VzKSBvciAtY29tcGFzcy1saXN0LXNpemUoJGltYWdlcykgPiAxO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtc3ZnKCRpbWFnZXMpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtb3dnKCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQoJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3ooJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkaW1hZ2VzKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLW8oJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllIGFuZCAkYWRkLXBpZS1iZyB7XG4gICAgQHdhcm4gXCJQSUUgZG9lcyBub3Qgc3VwcG9ydCBiYWNrZ3JvdW5kLWltYWdlLiBVc2UgQGluY2x1ZGUgYmFja2dyb3VuZCgjeyRpbWFnZXN9KSBpbnN0ZWFkLlwiOyB9XG4gIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZXM7IH1cblxuLy8gRW1pdCBhIElFLVNwZWNpZmljIGZpbHRlcnMgdGhhdCByZW5kZXJzIGEgc2ltcGxlIGxpbmVhciBncmFkaWVudC5cbi8vIEZvciB1c2UgaW4gSUUgNiAtIDguIEJlc3QgcHJhY3RpY2Ugd291bGQgaGF2ZSB5b3UgYXBwbHkgdGhpcyB2aWEgYVxuLy8gY29uZGl0aW9uYWwgSUUgc3R5bGVzaGVldCwgYnV0IGlmIHlvdSBtdXN0LCB5b3Ugc2hvdWxkIHBsYWNlIHRoaXMgYmVmb3JlXG4vLyBhbnkgYmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0aWVzIHRoYXQgeW91IGhhdmUgc3BlY2lmaWVkLlxuLy9cbi8vIEZvciB0aGUgYCRvcmllbnRhdGlvbmAgcGFyYW1ldGVyLCB5b3UgY2FuIHBhc3MgYHZlcnRpY2FsYCBvciBgaG9yaXpvbnRhbGAuXG5AbWl4aW4gZmlsdGVyLWdyYWRpZW50KCRzdGFydC1jb2xvciwgJGVuZC1jb2xvciwgJG9yaWVudGF0aW9uOiB2ZXJ0aWNhbCkge1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xuICAkZ3JhZGllbnQtdHlwZTogaWYoJG9yaWVudGF0aW9uID09IHZlcnRpY2FsLCAwLCAxKTtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4IHtcbiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChncmFkaWVudFR5cGU9I3skZ3JhZGllbnQtdHlwZX0sIHN0YXJ0Q29sb3JzdHI9JyN7aWUtaGV4LXN0cigkc3RhcnQtY29sb3IpfScsIGVuZENvbG9yc3RyPScje2llLWhleC1zdHIoJGVuZC1jb2xvcil9Jyk7IH0gfVxuXG4vLyBCb3JkZXIgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuXG5AbWl4aW4gYm9yZGVyLWltYWdlKCR2YWx1ZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LWJvcmRlci1pbWFnZTogLW1veihyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIHtcbiAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogLW93ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogLXdlYmtpdChyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLWJvcmRlci1pbWFnZTogLW8ocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyB7XG4gICAgYm9yZGVyLWltYWdlOiAtc3ZnKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBib3JkZXItaW1hZ2U6ICR2YWx1ZTsgfVxuXG4vLyBMaXN0IHN0eWxlIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlLWltYWdlKCRpbWFnZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCBwcmVmaXhlZCgtbW96LCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtbW96KCRpbWFnZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtb3dnKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtd2Via2l0KCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtbygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJGltYWdlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLXN2ZygkaW1hZ2UpOyB9XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6ICRpbWFnZTsgfVxuXG4vLyBMaXN0IHN0eWxlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlKCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW93ZygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIGFuZCBwcmVmaXhlZCgtbywgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICR2YWx1ZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1zdmcoJHZhbHVlKTsgfVxuICBsaXN0LXN0eWxlLWltYWdlOiAkdmFsdWU7IH1cblxuLy8gY29udGVudCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gY29udGVudCgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC13ZWJraXQoJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1vKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIGFuZCBwcmVmaXhlZCgtc3ZnLCAkdmFsdWUpIHtcbiAgICBjb250ZW50OiAtc3ZnKCR2YWx1ZSk7IH1cbiAgY29udGVudDogJHZhbHVlOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH1cbiAgICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jazsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfSB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcImZ1bmN0aW9ucy9saXN0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb25zdGFudHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZGlzcGxheVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb2xvcnNcIjtcbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgbGlzdCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2xpc3RzLnJiXG4vL1xuXG4vLyBjb21wYWN0IGlzIHBhcnQgb2YgbGlic2Fzc1xuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbnRoKCRsaXN0LCAkcGxhY2UpIHtcbiAgLy8gWWVwLCBTYXNzLWxpc3RzIGFyZSAxLWluZGV4ZWQuXG4gIEBpZiAkcGxhY2UgPT0gXCJmaXJzdFwiIHtcbiAgICAkcGxhY2U6IDE7IH1cbiAgQGlmICRwbGFjZSA9PSBcImxhc3RcIiB7XG4gICAgJHBsYWNlOiBsZW5ndGgoJGxpc3QpOyB9XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAkcGxhY2UpOyB9XG5cbi8vIGNvbXBhc3NfbGlzdCBjYW4ndCBiZSBpbXBsZW1lbnRlZCBpbiBzYXNzIHNjcmlwdFxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc3BhY2UtbGlzdCgkaXRlbTEsICRpdGVtMjogbnVsbCwgJGl0ZW0zOiBudWxsLCAkaXRlbTQ6IG51bGwsICRpdGVtNTogbnVsbCwgJGl0ZW02OiBudWxsLCAkaXRlbTc6IG51bGwsICRpdGVtODogbnVsbCwgJGl0ZW05OiBudWxsKSB7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJGl0ZW0xKSA9PSBcImxpc3RcIiB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRpdGVtczogJGl0ZW0xOyB9XG4gIEBlbHNlIHtcbiAgICAkaXRlbXM6ICRpdGVtMSAkaXRlbTIgJGl0ZW0zICRpdGVtNCAkaXRlbTUgJGl0ZW02ICRpdGVtNyAkaXRlbTggJGl0ZW05OyB9XG4gICRmdWxsOiBmaXJzdC12YWx1ZS1vZigkaXRlbXMpO1xuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkaXRlbXMpIHtcbiAgICAkaXRlbTogbnRoKCRpdGVtcywgJGkpO1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkaXRlbTsgfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLWxpc3Qtc2l6ZSgkbGlzdCkge1xuICBAcmV0dXJuIGxlbmd0aCgkbGlzdCk7IH1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNsaWNlKCRsaXN0LCAkc3RhcnQsICRlbmQ6IGZhbHNlKSB7XG4gIEBpZiAkZW5kID09IGZhbHNlIHtcbiAgICAkZW5kOiBsZW5ndGgoJGxpc3QpOyB9XG4gICRmdWxsOiBudGgoJGxpc3QsICRzdGFydCk7XG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgKyAxIHRocm91Z2ggJGVuZCB7XG4gICAgJGZ1bGw6ICRmdWxsLCBudGgoJGxpc3QsICRpKTsgfVxuICBAcmV0dXJuICRmdWxsOyB9XG5cbkBmdW5jdGlvbiByZWplY3QoJGxpc3QsICRyZWplY3QxLCAkcmVqZWN0MjogbnVsbCwgJHJlamVjdDM6IG51bGwsICRyZWplY3Q0OiBudWxsLCAkcmVqZWN0NTogbnVsbCwgJHJlamVjdDY6IG51bGwsICRyZWplY3Q3OiBudWxsLCAkcmVqZWN0ODogbnVsbCwgJHJlamVjdDk6IG51bGwpIHtcbiAgJHJlamVjdHM6ICRyZWplY3QxLCAkcmVqZWN0MiwgJHJlamVjdDMsICRyZWplY3Q0LCAkcmVqZWN0NSwgJHJlamVjdDYsICRyZWplY3Q3LCAkcmVqZWN0OCwgJHJlamVjdDk7XG4gICRmdWxsOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBpbmRleCgkcmVqZWN0cywgJGl0ZW0pIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRmdWxsIHtcbiAgICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTsgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZnVsbDogJGl0ZW07IH0gfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIGZpcnN0LXZhbHVlLW9mKCRsaXN0KSB7XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAxKTsgfVxuXG4vL0BpZiBub3QgZnVuY3Rpb24tZXhpc3RzKGNvbXBhY3QpXG5AZnVuY3Rpb24gY29tcGFjdCgkdmFycy4uLikge1xuICAkbGlzdDogKCk7XG4gIEBlYWNoICR2YXIgaW4gJHZhcnMge1xuICAgIEBpZiAkdmFyIHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICR2YXIsIGNvbW1hKTsgfSB9XG4gIEByZXR1cm4gJGxpc3Q7IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY3Jvc3MgYnJvd3NlciBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnJiXG4vL1xuXG5AZnVuY3Rpb24gcHJlZml4ZWQoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgJHByZWZpeGVkOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBcInN0cmluZ1wiIHtcbiAgICAgICRwcmVmaXhlZDogJHByZWZpeGVkIG9yIHN0ci1pbmRleCgkaXRlbSwgXCJ1cmxcIikgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCBcInJnYlwiKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sIFwiI1wiKSAhPSAxOyB9XG4gICAgQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gXCJjb2xvclwiIHt9XG4gICAgQGVsc2UgaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkcHJlZml4ZWQ6IHRydWU7IH0gfVxuICBAcmV0dXJuICRwcmVmaXhlZDsgfVxuXG5AZnVuY3Rpb24gcHJlZml4KCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgJHByb3BlcnRpZXM6IFwiXCI7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5MSkgPT0gXCJsaXN0XCIge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MTsgfVxuICBAZWxzZSB7XG4gICAgLy8gUGFzc2luZyBtdWx0aXBsZSBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5OyB9XG4gICRwcm9wczogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJGl0ZW0gPT0gbnVsbCB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBwcmVmaXhlZCgkcHJlZml4LCAkaXRlbSkge1xuICAgICAgICAkaXRlbTogI3skcHJlZml4fS0jeyRpdGVtfTsgfVxuICAgICAgQGlmICRwcm9wcyB7XG4gICAgICAgICRwcm9wczogJHByb3BzLCAkaXRlbTsgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcHJvcHM6ICRpdGVtOyB9IH0gfVxuICBAcmV0dXJuICRwcm9wczsgfVxuXG5AZnVuY3Rpb24gLXN2ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXN2Z1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW93ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW93Z1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLXdlYmtpdCgkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXdlYmtpdFwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW1veigkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW1velwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW8oJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1vXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtcGllKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItcGllXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGdyYWRpZW50IHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi92MC4xMi4yL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydC5yYlxuLy9cblxuQGZ1bmN0aW9uIGNvbG9yLXN0b3BzKCRpdGVtMSwgJGl0ZW0yOiBudWxsLCAkaXRlbTM6IG51bGwsICRpdGVtNDogbnVsbCwgJGl0ZW01OiBudWxsLCAkaXRlbTY6IG51bGwsICRpdGVtNzogbnVsbCwgJGl0ZW04OiBudWxsLCAkaXRlbTk6IG51bGwpIHtcbiAgJGl0ZW1zOiAkaXRlbTIsICRpdGVtMywgJGl0ZW00LCAkaXRlbTUsICRpdGVtNiwgJGl0ZW03LCAkaXRlbTgsICRpdGVtOTtcbiAgJGZ1bGw6ICRpdGVtMTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGl0ZW1zIHtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwsICRpdGVtOyB9IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb25zdGFudHMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb25zdGFudHMucmJcbi8vXG5cbkBmdW5jdGlvbiBvcHBvc2l0ZS1wb3NpdGlvbigkZnJvbSkge1xuICBAaWYgJGZyb20gPT0gdG9wIHtcbiAgICBAcmV0dXJuIGJvdHRvbTsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBib3R0b20ge1xuICAgIEByZXR1cm4gdG9wOyB9XG4gIEBlbHNlIGlmICRmcm9tID09IGxlZnQge1xuICAgIEByZXR1cm4gcmlnaHQ7IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gcmlnaHQge1xuICAgIEByZXR1cm4gbGVmdDsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBjZW50ZXIge1xuICAgIEByZXR1cm4gY2VudGVyOyB9IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZGlzcGxheSBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9kaXNwbGF5LnJiXG4vL1xuXG5AZnVuY3Rpb24gZWxlbWVudHMtb2YtdHlwZSgkdHlwZSkge1xuICBAaWYgJHR5cGUgPT0gYmxvY2sge1xuICAgIEByZXR1cm4gYWRkcmVzcywgYXJ0aWNsZSwgYXNpZGUsIGJsb2NrcXVvdGUsIGNlbnRlciwgZGlyLCBkaXYsIGRkLCBkZXRhaWxzLCBkbCwgZHQsIGZpZWxkc2V0LCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvcm0sIGZvb3RlciwgZnJhbWVzZXQsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGhyLCBoZWFkZXIsIGhncm91cCwgaXNpbmRleCwgbWFpbiwgbWVudSwgbmF2LCBub2ZyYW1lcywgbm9zY3JpcHQsIG9sLCBwLCBwcmUsIHNlY3Rpb24sIHN1bW1hcnksIHVsOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGlubGluZSB7XG4gICAgQHJldHVybiBhLCBhYmJyLCBhY3JvbnltLCBhdWRpbywgYiwgYmFzZWZvbnQsIGJkbywgYmlnLCBiciwgY2FudmFzLCBjaXRlLCBjb2RlLCBjb21tYW5kLCBkYXRhbGlzdCwgZGZuLCBlbSwgZW1iZWQsIGZvbnQsIGksIGltZywgaW5wdXQsIGtleWdlbiwga2JkLCBsYWJlbCwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHEsIHJwLCBydCwgcnVieSwgcywgc2FtcCwgc2VsZWN0LCBzbWFsbCwgc3Bhbiwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0ZXh0YXJlYSwgdGltZSwgdHQsIHUsIHZhciwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBpbmxpbmUtYmxvY2sge1xuICAgIEByZXR1cm4gaW1nOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlIHtcbiAgICBAcmV0dXJuIHRhYmxlOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGxpc3QtaXRlbSB7XG4gICAgQHJldHVybiBsaTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1yb3ctZ3JvdXAge1xuICAgIEByZXR1cm4gdGJvZHk7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtaGVhZGVyLWdyb3VwIHtcbiAgICBAcmV0dXJuIHRoZWFkOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLWZvb3Rlci1ncm91cCB7XG4gICAgQHJldHVybiB0Zm9vdDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1yb3cge1xuICAgIEByZXR1cm4gdHI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtY2VsbCB7XG4gICAgQHJldHVybiB0aCwgdGQ7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaHRtbDUtYmxvY2sge1xuICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5OyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGh0bWw1LWlubGluZSB7XG4gICAgQHJldHVybiBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZW1iZWQsIGtleWdlbiwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgdGltZSwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBodG1sNSB7XG4gICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGRldGFpbHMsIGVtYmVkLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIGtleWdlbiwgbWFpbiwgbWFyaywgbWVudSwgbWV0ZXIsIG5hdiwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCB2aWRlbywgd2JyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRleHQtaW5wdXQge1xuICAgIEByZXR1cm4gaW5wdXQsIHRleHRhcmVhOyB9IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29sb3JzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbG9ycy5yYlxuLy9cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIGxpZ2h0ZW4vZGFya2VuIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7IH1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBsaWdodG5lc3MgYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIHNjYWxlZCBkYXJrZXIsIGlmIHBvc2l0aXZlLCBpdCBpcyBzY2FsZWQgbGlnaHRlci5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIGxpZ2h0IG9yIGRhcmsgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTsgfVxuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2Ygc2F0dXJhdGUvZGVzYXR1cmF0ZSBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3Qtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7IH1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBzYXR1cmF0aW9uIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBkZXNhdHVyYXRlZCwgaWYgcG9zaXRpdmUsIGl0IGlzIHNhdHVyYXRlZC5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIHNhdHVyYXRlZCBvciBkZXNhdHVyYXRlZCBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7IH1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoIzAwMDAwMCwgJGNvbG9yLCAkcGVyY2VudGFnZSk7IH1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCgjZmZmZmZmLCAkY29sb3IsICRwZXJjZW50YWdlKTsgfVxuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyAgb3ZlcnJpZGUgdG8gY2hhbmdlIHRoZSBkZWZhdWx0XG4kZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0byAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBzaXplIG9mIGJhY2tncm91bmQgaW1hZ2VzIHVzaW5nIHB4LCB3aWR0aCBhbmQgaGVpZ2h0LCBvciBwZXJjZW50YWdlcy5cbi8vIEN1cnJlbnRseSBzdXBwb3J0ZWQgaW46IE9wZXJhLCBHZWNrbywgV2Via2l0LlxuLy9cbi8vICogcGVyY2VudGFnZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiYWNrZ3JvdW5kLW9yaWdpbiAoZGVmYXVsdCA9IHBhZGRpbmctYm94KVxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0bzogYCRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZWBcbkBtaXhpbiBiYWNrZ3JvdW5kLXNpemUoJHNpemUtMTogJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplLCAkc2l6ZS0yOiBmYWxzZSwgJHNpemUtMzogZmFsc2UsICRzaXplLTQ6IGZhbHNlLCAkc2l6ZS01OiBmYWxzZSwgJHNpemUtNjogZmFsc2UsICRzaXplLTc6IGZhbHNlLCAkc2l6ZS04OiBmYWxzZSwgJHNpemUtOTogZmFsc2UsICRzaXplLTEwOiBmYWxzZSkge1xuICAkc2l6ZS0xOiBpZih0eXBlLW9mKCRzaXplLTEpID09IHN0cmluZywgdW5xdW90ZSgkc2l6ZS0xKSwgJHNpemUtMSk7XG4gICRzaXplczogY29tcGFjdCgkc2l6ZS0xLCAkc2l6ZS0yLCAkc2l6ZS0zLCAkc2l6ZS00LCAkc2l6ZS01LCAkc2l6ZS02LCAkc2l6ZS03LCAkc2l6ZS04LCAkc2l6ZS05LCAkc2l6ZS0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLXNpemUsICRzaXplcywgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwiY3NzMy9ib3JkZXItcmFkaXVzXCI7XG5AaW1wb3J0IFwiY3NzMy9pbmxpbmUtYmxvY2tcIjtcbkBpbXBvcnQgXCJjc3MzL29wYWNpdHlcIjtcbkBpbXBvcnQgXCJjc3MzL2JveC1zaGFkb3dcIjtcbkBpbXBvcnQgXCJjc3MzL3RleHQtc2hhZG93XCI7XG5AaW1wb3J0IFwiY3NzMy9jb2x1bW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3hcIjtcbkBpbXBvcnQgXCJjc3MzL2ltYWdlc1wiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1jbGlwXCI7XG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kLW9yaWdpblwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1zaXplXCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZhY2VcIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zZm9ybVwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNpdGlvblwiO1xuQGltcG9ydCBcImNzczMvYXBwZWFyYW5jZVwiO1xuQGltcG9ydCBcImNzczMvcmVnaW9uc1wiO1xuQGltcG9ydCBcImNzczMvaHlwaGVuYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2ZpbHRlclwiO1xuQGltcG9ydCBcImNzczMvcGllXCI7XG5AaW1wb3J0IFwiY3NzMy91c2VyLWludGVyZmFjZVwiO1xuQGltcG9ydCBcImNzczMvZmxleGJveFwiO1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4kZGVmYXVsdC1ib3JkZXItcmFkaXVzOiA1cHggIWRlZmF1bHQ7XG5cbi8vIFJvdW5kIGFsbCBjb3JuZXJzIGJ5IGEgc3BlY2lmaWMgYW1vdW50LCBkZWZhdWx0cyB0byB2YWx1ZSBvZiBgJGRlZmF1bHQtYm9yZGVyLXJhZGl1c2AuXG4vL1xuLy8gV2hlbiB0d28gdmFsdWVzIGFyZSBwYXNzZWQsIHRoZSBmaXJzdCBpcyB0aGUgaG9yaXpvbnRhbCByYWRpdXNcbi8vIGFuZCB0aGUgc2Vjb25kIGlzIHRoZSB2ZXJ0aWNhbCByYWRpdXMuXG4vL1xuLy8gTm90ZTogd2Via2l0IGRvZXMgbm90IHN1cHBvcnQgc2hvcnRoYW5kIHN5bnRheCBmb3Igc2V2ZXJhbCBjb3JuZXJzIGF0IG9uY2UuXG4vLyBTbyBpbiB0aGUgY2FzZSB3aGVyZSB5b3UgcGFzcyBzZXZlcmFsIHZhbHVlcyBvbmx5IHRoZSBmaXJzdCB3aWxsIGJlIHBhc3NlZCB0byB3ZWJraXQuXG4vL1xuLy8gRXhhbXBsZXM6XG4vL1xuLy8gICAgIC5zaW1wbGUgICB7IEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoNHB4LCA0cHgpOyB9XG4vLyAgICAgLmNvbXBvdW5kIHsgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygycHggNXB4LCAzcHggNnB4KTsgfVxuLy8gICAgIC5jcmF6eSAgICB7IEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMXB4IDNweCA1cHggN3B4LCAycHggNHB4IDZweCA4cHgpfVxuLy9cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vXG4vLyAgICAuc2ltcGxlIHtcbi8vICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHggNHB4O1xuLy8gICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweCAvIDRweDtcbi8vICAgICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IDRweCAvIDRweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogNHB4IC8gNHB4OyB9XG4vL1xuLy8gICAgLmNvbXBvdW5kIHtcbi8vICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHggM3B4O1xuLy8gICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDJweCA1cHggLyAzcHggNnB4O1xuLy8gICAgICAta2h0bWwtYm9yZGVyLXJhZGl1czogMnB4IDVweCAvIDNweCA2cHg7XG4vLyAgICAgIGJvcmRlci1yYWRpdXM6IDJweCA1cHggLyAzcHggNnB4OyB9XG4vL1xuLy8gICAgLmNyYXp5IHtcbi8vICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxcHggMnB4O1xuLy8gICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDFweCAzcHggNXB4IDdweCAvIDJweCA0cHggNnB4IDhweDtcbi8vICAgICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IDFweCAzcHggNXB4IDdweCAvIDJweCA0cHggNnB4IDhweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogMXB4IDNweCA1cHggN3B4IC8gMnB4IDRweCA2cHggOHB4OyB9XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMsICR2ZXJ0aWNhbC1yYWRpdXM6IGZhbHNlKSB7XG4gIEBpZiAkdmVydGljYWwtcmFkaXVzIHtcbiAgICAvLyBXZWJraXQgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSBvZmZpY2lhbCBzaG9ydGhhbmQgc3ludGF4IGZvciBzcGVjaWZ5aW5nXG4gICAgLy8gYSB2ZXJ0aWNhbCByYWRpdXMgdW5sZXNzIHNvIGluIGNhc2UgdGhlcmUncyBzZXZlcmFsIHdlIG9ubHkgdGFrZSB0aGUgZmlyc3QuXG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJvcmRlci1yYWRpdXMsIGZpcnN0LXZhbHVlLW9mKCRyYWRpdXMpIGZpcnN0LXZhbHVlLW9mKCR2ZXJ0aWNhbC1yYWRpdXMpLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBub3Qgb2ZmaWNpYWwpO1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImJvcmRlci1yYWRpdXNcIiwgJHJhZGl1cyB1bnF1b3RlKFwiL1wiKSAkdmVydGljYWwtcmFkaXVzLCAtbW96LCBub3QgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCAta2h0bWwsIG9mZmljaWFsKTsgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJvcmRlci1yYWRpdXMsICRyYWRpdXMpOyB9IH1cblxuLy8gUm91bmQgcmFkaXVzIGF0IHBvc2l0aW9uIGJ5IGFtb3VudC5cbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgYCR2ZXJ0YDogYHRvcGAsIGBib3R0b21gXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgYCRob3J6YDogYGxlZnRgLCBgcmlnaHRgXG5cbkBtaXhpbiBib3JkZXItY29ybmVyLXJhZGl1cygkdmVydCwgJGhvcnosICRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgLy8gU3VwcG9ydCBmb3IgbW96aWxsYSdzIHN5bnRheCBmb3Igc3BlY2lmeWluZyBhIGNvcm5lclxuICBAaW5jbHVkZSBleHBlcmltZW50YWwodW5xdW90ZShcImJvcmRlci1yYWRpdXMtI3skdmVydH0jeyRob3J6fVwiKSwgJHJhZGl1cywgLW1veiwgbm90IC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgbm90IG9mZmljaWFsKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKFwiYm9yZGVyLSN7JHZlcnR9LSN7JGhvcnp9LXJhZGl1c1wiLCAkcmFkaXVzLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBSb3VuZCB0b3AtbGVmdCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1jb3JuZXItcmFkaXVzKHRvcCwgbGVmdCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgdG9wLXJpZ2h0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1jb3JuZXItcmFkaXVzKHRvcCwgcmlnaHQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdHRvbS1sZWZ0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXMoYm90dG9tLCBsZWZ0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3R0b20tcmlnaHQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXMoYm90dG9tLCByaWdodCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCB0b3AgY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtbGVmdC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKCRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggcmlnaHQgY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItcmlnaHQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzKCRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggYm90dG9tIGNvcm5lcnMgYnkgYW1vdW50XG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzKCRyYWRpdXMpO1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIGxlZnQgY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItdG9wLWxlZnQtcmFkaXVzKCRyYWRpdXMpO1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzKCRyYWRpdXMpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFNldCBgJGlubGluZS1ibG9jay1hbGlnbm1lbnRgIHRvIGBub25lYCBvciBgZmFsc2VgIHRvIGRpc2FibGUgdGhlIG91dHB1dFxuLy8gb2YgYSB2ZXJ0aWNhbC1hbGlnbiBwcm9wZXJ0eSBpbiB0aGUgaW5saW5lLWJsb2NrIG1peGluLlxuLy8gT3Igc2V0IGl0IHRvIGEgbGVnYWwgdmFsdWUgZm9yIGB2ZXJ0aWNhbC1hbGlnbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuJGlubGluZS1ibG9jay1hbGlnbm1lbnQ6IG1pZGRsZSAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgYSBjcm9zcy1icm93c2VyIG1ldGhvZCB0byBpbXBsZW1lbnQgYGRpc3BsYXk6IGlubGluZS1ibG9jaztgXG5AbWl4aW4gaW5saW5lLWJsb2NrKCRhbGlnbm1lbnQ6ICRpbmxpbmUtYmxvY2stYWxpZ25tZW50KSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLXN0YWNrOyB9XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgQGlmICRhbGlnbm1lbnQgYW5kICRhbGlnbm1lbnQgIT0gbm9uZSB7XG4gICAgdmVydGljYWwtYWxpZ246ICRhbGlnbm1lbnQ7IH1cbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgICp2ZXJ0aWNhbC1hbGlnbjogYXV0bztcbiAgICB6b29tOiAxO1xuICAgICpkaXNwbGF5OiBpbmxpbmU7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIENTUyBvcGFjaXR5LiBUYWtlcyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEgYXMgdGhlIGFyZ3VtZW50LCBlLmcuIDAuNSBmb3IgNTAlIG9wYWNpdHkuXG4vL1xuLy8gICAgIEBwYXJhbSAkb3BhY2l0eVxuLy8gICAgICAgICBBIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEsIHdoZXJlIDAgaXMgdHJhbnNwYXJlbnQgYW5kIDEgaXMgb3BhcXVlLlxuXG5AbWl4aW4gb3BhY2l0eSgkb3BhY2l0eSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogdW5xdW90ZShcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PSN7cm91bmQoJG9wYWNpdHkgKiAxMDApfSlcIik7IH1cbiAgb3BhY2l0eTogJG9wYWNpdHk7IH1cblxuLy8gTWFrZSBhbiBlbGVtZW50IGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQuXG5AbWl4aW4gdHJhbnNwYXJlbnQge1xuICBAaW5jbHVkZSBvcGFjaXR5KDApOyB9XG5cbi8vIE1ha2UgYW4gZWxlbWVudCBjb21wbGV0ZWx5IG9wYXF1ZS5cbkBtaXhpbiBvcGFxdWUge1xuICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBAZG9jIG9mZlxuLy8gVGhlc2UgZGVmYXVsdHMgbWFrZSB0aGUgYXJndW1lbnRzIG9wdGlvbmFsIGZvciB0aGlzIG1peGluXG4vLyBJZiB5b3UgbGlrZSwgc2V0IGRpZmZlcmVudCBkZWZhdWx0cyBiZWZvcmUgaW1wb3J0aW5nLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBib3ggc2hhZG93c1xuJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcjogIzMzMzMzMyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgaG9yaXpvbnRhbCBvZmZzZXQuIFBvc2l0aXZlIGlzIHRvIHRoZSByaWdodC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgdmVydGljYWwgb2Zmc2V0LiBQb3NpdGl2ZSBpcyBkb3duLlxuJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldDogMHB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBibHVyIGxlbmd0aC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctYmx1cjogNXB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBzcHJlYWQgbGVuZ3RoLlxuJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBzaGFkb3cgaW5zZXQ6IGluc2V0IG9yIGZhbHNlIChmb3Igc3RhbmRhcmQgc2hhZG93KS5cbiRkZWZhdWx0LWJveC1zaGFkb3ctaW5zZXQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIGZvciBXZWJraXQsIEdlY2tvLCBhbmQgQ1NTMyBib3ggc2hhZG93cyB3aGVuIG9uZSBvciBtb3JlIGJveFxuLy8gc2hhZG93cyBhcmUgbmVlZGVkLlxuLy8gRWFjaCBzaGFkb3cgYXJndW1lbnQgc2hvdWxkIGFkaGVyZSB0byB0aGUgc3RhbmRhcmQgY3NzMyBzeW50YXggZm9yIHRoZVxuLy8gYm94LXNoYWRvdyBwcm9wZXJ0eS5cbkBtaXhpbiBib3gtc2hhZG93KCRzaGFkb3ctMTogZGVmYXVsdCwgJHNoYWRvdy0yOiBmYWxzZSwgJHNoYWRvdy0zOiBmYWxzZSwgJHNoYWRvdy00OiBmYWxzZSwgJHNoYWRvdy01OiBmYWxzZSwgJHNoYWRvdy02OiBmYWxzZSwgJHNoYWRvdy03OiBmYWxzZSwgJHNoYWRvdy04OiBmYWxzZSwgJHNoYWRvdy05OiBmYWxzZSwgJHNoYWRvdy0xMDogZmFsc2UpIHtcbiAgQGlmICRzaGFkb3ctMSA9PSBkZWZhdWx0IHtcbiAgICAkc2hhZG93LTE6IC1jb21wYXNzLXNwYWNlLWxpc3QoY29tcGFjdChpZigkZGVmYXVsdC1ib3gtc2hhZG93LWluc2V0LCBpbnNldCwgZmFsc2UpLCAkZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0LCAkZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0LCAkZGVmYXVsdC1ib3gtc2hhZG93LWJsdXIsICRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkLCAkZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yKSk7IH1cbiAgJHNoYWRvdzogY29tcGFjdCgkc2hhZG93LTEsICRzaGFkb3ctMiwgJHNoYWRvdy0zLCAkc2hhZG93LTQsICRzaGFkb3ctNSwgJHNoYWRvdy02LCAkc2hhZG93LTcsICRzaGFkb3ctOCwgJHNoYWRvdy05LCAkc2hhZG93LTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1zaGFkb3csICRzaGFkb3csIC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFByb3ZpZGVzIGEgc2luZ2xlIGNyb3NzLWJyb3dzZXIgQ1NTIGJveCBzaGFkb3cgZm9yIFdlYmtpdCwgR2Vja28sIGFuZCBDU1MzLlxuLy8gSW5jbHVkZXMgZGVmYXVsdCBhcmd1bWVudHMgZm9yIGhvcml6b250YWwgb2Zmc2V0LCB2ZXJ0aWNhbCBvZmZzZXQsIGJsdXIgbGVuZ3RoLCBzcHJlYWQgbGVuZ3RoLCBjb2xvciBhbmQgaW5zZXQuXG5AbWl4aW4gc2luZ2xlLWJveC1zaGFkb3coJGhvZmY6ICRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQsICR2b2ZmOiAkZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0LCAkYmx1cjogJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyLCAkc3ByZWFkOiAkZGVmYXVsdC1ib3gtc2hhZG93LXNwcmVhZCwgJGNvbG9yOiAkZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yLCAkaW5zZXQ6ICRkZWZhdWx0LWJveC1zaGFkb3ctaW5zZXQpIHtcbiAgQGlmIG5vdCAoJGluc2V0ID09IHRydWUgb3IgJGluc2V0ID09IGZhbHNlIG9yICRpbnNldCA9PSBpbnNldCkge1xuICAgIEB3YXJuIFwiJGluc2V0IGV4cGVjdGVkIHRvIGJlIHRydWUgb3IgdGhlIGluc2V0IGtleXdvcmQuIEdvdCAjeyRpbnNldH0gaW5zdGVhZC4gVXNpbmc6IGluc2V0XCI7IH1cbiAgQGlmICRjb2xvciA9PSBub25lIHtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpOyB9XG4gIEBlbHNlIHtcbiAgICAkZnVsbDogJGhvZmYgJHZvZmY7XG4gICAgQGlmICRibHVyIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkYmx1cjsgfVxuICAgIEBpZiAkc3ByZWFkIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkc3ByZWFkOyB9XG4gICAgQGlmICRjb2xvciB7XG4gICAgICAkZnVsbDogJGZ1bGwgJGNvbG9yOyB9XG4gICAgQGlmICRpbnNldCB7XG4gICAgICAkZnVsbDogaW5zZXQgJGZ1bGw7IH1cbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRmdWxsKTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFRoZXNlIGRlZmF1bHRzIG1ha2UgdGhlIGFyZ3VtZW50cyBvcHRpb25hbCBmb3IgdGhpcyBtaXhpblxuLy8gSWYgeW91IGxpa2UsIHNldCBkaWZmZXJlbnQgZGVmYXVsdHMgaW4geW91ciBwcm9qZWN0XG5cbiRkZWZhdWx0LXRleHQtc2hhZG93LWNvbG9yOiAjYWFhICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctaC1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LXYtb2Zmc2V0OiAwcHggIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1ibHVyOiAxcHggIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1zcHJlYWQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIHRleHQgc2hhZG93cyB3aGVuIG9uZSBvciBtb3JlIHNoYWRvd3MgYXJlIG5lZWRlZC5cbi8vIEVhY2ggc2hhZG93IGFyZ3VtZW50IHNob3VsZCBhZGhlcmUgdG8gdGhlIHN0YW5kYXJkIGNzczMgc3ludGF4IGZvciB0aGVcbi8vIHRleHQtc2hhZG93IHByb3BlcnR5LlxuLy9cbi8vIE5vdGU6IGlmIGFueSBzaGFkb3cgaGFzIGEgc3ByZWFkIHBhcmFtZXRlciwgdGhpcyB3aWxsIGNhdXNlIHRoZSBtaXhpblxuLy8gdG8gZW1pdCB0aGUgc2hhZG93IGRlY2xhcmF0aW9uIHR3aWNlLCBmaXJzdCB3aXRob3V0IHRoZSBzcHJlYWQsXG4vLyB0aGVuIHdpdGggdGhlIHNwcmVhZCBpbmNsdWRlZC4gVGhpcyBhbGxvd3MgeW91IHRvIHByb2dyZXNzaXZlbHlcbi8vIGVuaGFuY2UgdGhlIGJyb3dzZXJzIHRoYXQgZG8gc3VwcG9ydCB0aGUgc3ByZWFkIHBhcmFtZXRlci5cbkBtaXhpbiB0ZXh0LXNoYWRvdygkc2hhZG93LTE6IGRlZmF1bHQsICRzaGFkb3ctMjogZmFsc2UsICRzaGFkb3ctMzogZmFsc2UsICRzaGFkb3ctNDogZmFsc2UsICRzaGFkb3ctNTogZmFsc2UsICRzaGFkb3ctNjogZmFsc2UsICRzaGFkb3ctNzogZmFsc2UsICRzaGFkb3ctODogZmFsc2UsICRzaGFkb3ctOTogZmFsc2UsICRzaGFkb3ctMTA6IGZhbHNlKSB7XG4gIEBpZiAkc2hhZG93LTEgPT0gZGVmYXVsdCB7XG4gICAgJHNoYWRvdy0xOiBjb21wYWN0KCRkZWZhdWx0LXRleHQtc2hhZG93LWgtb2Zmc2V0ICRkZWZhdWx0LXRleHQtc2hhZG93LXYtb2Zmc2V0ICRkZWZhdWx0LXRleHQtc2hhZG93LWJsdXIgJGRlZmF1bHQtdGV4dC1zaGFkb3ctc3ByZWFkICRkZWZhdWx0LXRleHQtc2hhZG93LWNvbG9yKTsgfVxuICAkc2hhZG93cy13aXRob3V0LXNwcmVhZDogam9pbigoKSwgKCksIGNvbW1hKTtcbiAgJHNoYWRvd3M6IGpvaW4oKCksICgpLCBjb21tYSk7XG4gICRoYXMtc3ByZWFkOiBmYWxzZTtcbiAgQGVhY2ggJHNoYWRvdyBpbiBjb21wYWN0KCRzaGFkb3ctMSwgJHNoYWRvdy0yLCAkc2hhZG93LTMsICRzaGFkb3ctNCwgJHNoYWRvdy01LCAkc2hhZG93LTYsICRzaGFkb3ctNywgJHNoYWRvdy04LCAkc2hhZG93LTksICRzaGFkb3ctMTApIHtcbiAgICBAaWYgbGVuZ3RoKCRzaGFkb3cpID4gNCB7XG4gICAgICAkaGFzLXNwcmVhZDogdHJ1ZTtcbiAgICAgICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOiBhcHBlbmQoJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQsIG50aCgkc2hhZG93LCAxKSBudGgoJHNoYWRvdywgMikgbnRoKCRzaGFkb3csIDMpIG50aCgkc2hhZG93LCA1KSk7XG4gICAgICAkc2hhZG93czogYXBwZW5kKCRzaGFkb3dzLCAkc2hhZG93KTsgfVxuICAgIGVsc2Uge1xuICAgICAgJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ6IGFwcGVuZCgkc2hhZG93cy13aXRob3V0LXNwcmVhZCwgJHNoYWRvdyk7XG4gICAgICAkc2hhZG93czogYXBwZW5kKCRzaGFkb3dzLCAkc2hhZG93KTsgfSB9XG4gIEBpZiAkaGFzLXNwcmVhZCB7XG4gICAgdGV4dC1zaGFkb3c6ICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOyB9XG4gIHRleHQtc2hhZG93OiAkc2hhZG93czsgfVxuXG4vLyBQcm92aWRlcyBhIHNpbmdsZSBjcm9zcy1icm93c2VyIENTUyB0ZXh0IHNoYWRvdy5cbi8vXG4vLyBQcm92aWRlcyBzZW5zaWJsZSBkZWZhdWx0cyBmb3IgdGhlIGNvbG9yLCBob3Jpem9udGFsIG9mZnNldCwgdmVydGljYWwgb2Zmc2V0LCBibHVyLCBhbmQgc3ByZWFkXG4vLyBhY2NvcmRpbmcgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMgYWJvdmUuXG5AbWl4aW4gc2luZ2xlLXRleHQtc2hhZG93KCRob2ZmOiBmYWxzZSwgJHZvZmY6IGZhbHNlLCAkYmx1cjogZmFsc2UsICRzcHJlYWQ6IGZhbHNlLCAkY29sb3I6IGZhbHNlKSB7XG4gIC8vIEEgbG90IG9mIHBlb3BsZSB0aGluayB0aGUgY29sb3IgY29tZXMgZmlyc3QuIEl0IGRvZXNuJ3QuXG4gIEBpZiB0eXBlLW9mKCRob2ZmKSA9PSBjb2xvciB7XG4gICAgJHRlbXAtY29sb3I6ICRob2ZmO1xuICAgICRob2ZmOiAkdm9mZjtcbiAgICAkdm9mZjogJGJsdXI7XG4gICAgJGJsdXI6ICRzcHJlYWQ7XG4gICAgJHNwcmVhZDogJGNvbG9yO1xuICAgICRjb2xvcjogJHRlbXAtY29sb3I7IH1cbiAgLy8gQ2FuJ3QgcmVseSBvbiBkZWZhdWx0IGFzc2lnbm1lbnQgd2l0aCBtdWx0aXBsZSBzdXBwb3J0ZWQgYXJndW1lbnQgb3JkZXJzLlxuICAkaG9mZjogaWYoJGhvZmYsICRob2ZmLCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1oLW9mZnNldCk7XG4gICR2b2ZmOiBpZigkdm9mZiwgJHZvZmYsICRkZWZhdWx0LXRleHQtc2hhZG93LXYtb2Zmc2V0KTtcbiAgJGJsdXI6IGlmKCRibHVyLCAkYmx1ciwgJGRlZmF1bHQtdGV4dC1zaGFkb3ctYmx1cik7XG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQsICRzcHJlYWQsICRkZWZhdWx0LXRleHQtc2hhZG93LXNwcmVhZCk7XG4gICRjb2xvcjogaWYoJGNvbG9yLCAkY29sb3IsICRkZWZhdWx0LXRleHQtc2hhZG93LWNvbG9yKTtcbiAgLy8gV2UgZG9uJ3QgbmVlZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgdGhpcyBwcm9wZXJ0eS5cbiAgQGlmICRjb2xvciA9PSBub25lIG9yICRob2ZmID09IG5vbmUge1xuICAgIEBpbmNsdWRlIHRleHQtc2hhZG93KG5vbmUpOyB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNoYWRvdyhjb21wYWN0KCRob2ZmICR2b2ZmICRibHVyICRzcHJlYWQgJGNvbG9yKSk7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBTcGVjaWZ5IHRoZSBzaG9ydGhhbmQgYGNvbHVtbnNgIHByb3BlcnR5LlxuLy9cbi8vIEV4YW1wbGU6XG4vL1xuLy8gICAgIEBpbmNsdWRlIGNvbHVtbnMoMjBlbSAyKVxuQG1peGluIGNvbHVtbnMoJHdpZHRoLWFuZC1jb3VudCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1ucywgJHdpZHRoLWFuZC1jb3VudCwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFNwZWNpZnkgdGhlIG51bWJlciBvZiBjb2x1bW5zXG5AbWl4aW4gY29sdW1uLWNvdW50KCRjb3VudCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWNvdW50LCAkY291bnQsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBTcGVjaWZ5IHRoZSBnYXAgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYDIwcHhgXG5AbWl4aW4gY29sdW1uLWdhcCgkd2lkdGgpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1nYXAsICR3aWR0aCwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFNwZWNpZnkgdGhlIHdpZHRoIG9mIGNvbHVtbnMgZS5nLiBgMTAwcHhgXG5AbWl4aW4gY29sdW1uLXdpZHRoKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXdpZHRoLCAkd2lkdGgsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBTcGVjaWZ5IHRoZSB3aWR0aCBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgMXB4YFxuQG1peGluIGNvbHVtbi1ydWxlLXdpZHRoKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtd2lkdGgsICR3aWR0aCwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFNwZWNpZnkgdGhlIHN0eWxlIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBlLmcuIGBkb3R0ZWRgLlxuLy8gVGhpcyB3b3JrcyBsaWtlIGJvcmRlci1zdHlsZS5cbkBtaXhpbiBjb2x1bW4tcnVsZS1zdHlsZSgkc3R5bGUpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1ydWxlLXN0eWxlLCB1bnF1b3RlKCRzdHlsZSksIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBTcGVjaWZ5IHRoZSBjb2xvciBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgYmx1ZWAuXG4vLyBUaGlzIHdvcmtzIGxpa2UgYm9yZGVyLWNvbG9yLlxuQG1peGluIGNvbHVtbi1ydWxlLWNvbG9yKCRjb2xvcikge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtY29sb3IsICRjb2xvciwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIE1peGluIGVuY29tcGFzc2luZyBhbGwgY29sdW1uIHJ1bGUgcHJvcGVydGllc1xuLy8gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICAgIEBpbmNsdWRlIGNvbHVtbi1ydWxlKDFweCwgc29saWQsICNjMDApXG4vL1xuLy8gT3IgdGhlIHZhbHVlcyBjYW4gYmUgc3BhY2Ugc2VwYXJhdGVkOlxuLy9cbi8vICAgICBAaW5jbHVkZSBjb2x1bW4tcnVsZSgxcHggc29saWQgI2MwMClcbkBtaXhpbiBjb2x1bW4tcnVsZSgkd2lkdGgsICRzdHlsZTogZmFsc2UsICRjb2xvcjogZmFsc2UpIHtcbiAgJGZ1bGw6IC1jb21wYXNzLXNwYWNlLWxpc3QoY29tcGFjdCgkd2lkdGgsICRzdHlsZSwgJGNvbG9yKSk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tcnVsZSwgJGZ1bGwsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBNaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4tYnJlYWstYmVmb3JlXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlOlxuLy8gICAgaDIuYmVmb3JlIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWstYmVmb3JlKGFsd2F5cyk7fVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6XG4vL1xuLy8gIGgyLmJlZm9yZSB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5czt9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWJlZm9yZSgkdmFsdWU6IGF1dG8pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1iZWZvcmUsICR2YWx1ZSwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIE1peGluIGZvciBzZXR0aW5nIGNvbHVtbi1icmVhay1hZnRlclxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vXG4vLyAgRXhhbXBsZTpcbi8vICAgIGgyLmFmdGVyIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWstYWZ0ZXIoYWx3YXlzKTsgfVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6XG4vL1xuLy8gIGgyLmFmdGVyIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5czsgfVxuQG1peGluIGNvbHVtbi1icmVhay1hZnRlcigkdmFsdWU6IGF1dG8pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1hZnRlciwgJHZhbHVlLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gTWl4aW4gZm9yIHNldHRpbmcgY29sdW1uLWJyZWFrLWluc2lkZVxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhdm9pZCwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vL1xuLy8gIEV4YW1wbGU6XG4vLyAgICBoMi5pbnNpZGUge0BpbmNsdWRlIGNvbHVtbi1icmVhay1pbnNpZGUoKTt9XG4vLyAgV2hpY2ggZ2VuZXJhdGVzOlxuLy9cbi8vICBoMi5pbnNpZGUge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xuLy8gICAgY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bzt9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWluc2lkZSgkdmFsdWU6IGF1dG8pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1pbnNpZGUsICR2YWx1ZSwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIEFsbC1wdXJwb3NlIG1peGluIGZvciBzZXR0aW5nIGNvbHVtbiBicmVha3MuXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogYmVmb3JlLCBhZnRlciwgaW5zaWRlXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgJyR2YWx1ZScgYXJlIGRlcGVuZGVudCBvbiAkdHlwZVxuLy8gICAgKiB3aGVuICR0eXBlID0gYmVmb3JlLCBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy8gICAgKiB3aGVuICR0eXBlID0gYWZ0ZXIsIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYWx3YXlzLCBhdm9pZCwgbGVmdCwgcmlnaHQsIHBhZ2UsIGNvbHVtbiwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vLyAgICAqIHdoZW4gJHR5cGUgPSBpbnNpZGUsIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYXZvaWQsIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlczpcbi8vICAgIGgyLmJlZm9yZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrKGJlZm9yZSwgYWx3YXlzKTt9XG4vLyAgICBoMi5hZnRlciB7QGluY2x1ZGUgY29sdW1uLWJyZWFrKGFmdGVyLCBhbHdheXMpOyB9XG4vLyAgICBoMi5pbnNpZGUge0BpbmNsdWRlIGNvbHVtbi1icmVhayhpbnNpZGUpOyB9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczpcbi8vICBoMi5iZWZvcmUge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7fVxuLy9cbi8vICBoMi5hZnRlciB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzO1xuLy8gICAgY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7IH1cbi8vXG4vLyAgaDIuaW5zaWRlIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bztcbi8vICAgIGNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87fVxuXG5AbWl4aW4gY29sdW1uLWJyZWFrKCR0eXBlOiBiZWZvcmUsICR2YWx1ZTogYXV0bykge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJjb2x1bW4tYnJlYWstI3skdHlwZX1cIiwgJHZhbHVlLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ2hhbmdlIHRoZSBib3ggbW9kZWwgZm9yIE1vemlsbGEsIFdlYmtpdCwgSUU4IGFuZCB0aGUgZnV0dXJlXG4vL1xuLy8gQHBhcmFtICRic1xuLy8gICBbIGNvbnRlbnQtYm94IHwgYm9yZGVyLWJveCBdXG5cbkBtaXhpbiBib3gtc2l6aW5nKCRicykge1xuICAkYnM6IHVucXVvdGUoJGJzKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1zaXppbmcsICRicywgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gZGlzcGxheTpib3g7IG11c3QgYmUgdXNlZCBmb3IgYW55IG9mIHRoZSBvdGhlciBmbGV4Ym94IG1peGlucyB0byB3b3JrIHByb3Blcmx5XG5AbWl4aW4gZGlzcGxheS1ib3gge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwtdmFsdWUoZGlzcGxheSwgYm94LCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIERlZmF1bHQgYm94IG9yaWVudGF0aW9uLCBhc3N1bWluZyB0aGF0IHRoZSB1c2VyIHdhbnRzIHNvbWV0aGluZyBsZXNzIGJsb2NrLWxpa2VcbiRkZWZhdWx0LWJveC1vcmllbnQ6IGhvcml6b250YWwgIWRlZmF1bHQ7XG5cbi8vIEJveCBvcmllbnRhdGlvbiBbIGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcyB8IGluaGVyaXQgXVxuQG1peGluIGJveC1vcmllbnQoJG9yaWVudGF0aW9uOiAkZGVmYXVsdC1ib3gtb3JpZW50KSB7XG4gICRvcmllbnRhdGlvbjogdW5xdW90ZSgkb3JpZW50YXRpb24pO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LW9yaWVudCwgJG9yaWVudGF0aW9uLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIERlZmF1bHQgYm94LWFsaWduXG4kZGVmYXVsdC1ib3gtYWxpZ246IHN0cmV0Y2ggIWRlZmF1bHQ7XG5cbi8vIEJveCBhbGlnbiBbIHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoIF1cbkBtaXhpbiBib3gtYWxpZ24oJGFsaWdubWVudDogJGRlZmF1bHQtYm94LWFsaWduKSB7XG4gICRhbGlnbm1lbnQ6IHVucXVvdGUoJGFsaWdubWVudCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtYWxpZ24sICRhbGlnbm1lbnQsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gRGVmYXVsdCBib3ggZmxleFxuJGRlZmF1bHQtYm94LWZsZXg6IDAgIWRlZmF1bHQ7XG5cbi8vIG1peGluIHdoaWNoIHRha2VzIGFuIGludCBhcmd1bWVudCBmb3IgYm94IGZsZXguIEFwcGx5IHRoaXMgdG8gdGhlIGNoaWxkcmVuIGluc2lkZSB0aGUgYm94LlxuLy9cbi8vIEZvciBleGFtcGxlOiBcImRpdi5kaXNwbGF5LWJveCA+IGRpdi5jaGlsZC1ib3hcIiB3b3VsZCBnZXQgdGhlIGJveCBmbGV4IG1peGluLlxuQG1peGluIGJveC1mbGV4KCRmbGV4OiAkZGVmYXVsdC1ib3gtZmxleCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWZsZXgsICRmbGV4LCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIERlZmF1bHQgZmxleCBncm91cFxuJGRlZmF1bHQtYm94LWZsZXgtZ3JvdXA6IDEgIWRlZmF1bHQ7XG5cbi8vIG1peGluIHdoaWNoIHRha2VzIGFuIGludCBhcmd1bWVudCBmb3IgZmxleGlibGUgZ3JvdXBpbmdcbkBtaXhpbiBib3gtZmxleC1ncm91cCgkZ3JvdXA6ICRkZWZhdWx0LWJveC1mbGV4LWdyb3VwKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtZmxleC1ncm91cCwgJGdyb3VwLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIGRlZmF1bHQgZm9yIG9yZGluYWwgZ3JvdXBcbiRkZWZhdWx0LWJveC1vcmRpbmFsLWdyb3VwOiAxICFkZWZhdWx0O1xuXG4vLyBtaXhpbiB3aGljaCB0YWtlcyBhbiBpbnQgYXJndW1lbnQgZm9yIG9yZGluYWwgZ3JvdXBpbmcgYW5kIHJlYXJyYW5naW5nIHRoZSBvcmRlclxuQG1peGluIGJveC1vcmRpbmFsLWdyb3VwKCRncm91cDogJGRlZmF1bHQtb3JkaW5hbC1mbGV4LWdyb3VwKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtb3JkaW5hbC1ncm91cCwgJGdyb3VwLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIEJveCBkaXJlY3Rpb24gZGVmYXVsdCB2YWx1ZVxuJGRlZmF1bHQtYm94LWRpcmVjdGlvbjogbm9ybWFsICFkZWZhdWx0O1xuXG4vLyBtaXhpbiBmb3IgYm94LWRpcmVjdGlvbiBbIG5vcm1hbCB8IHJldmVyc2UgfCBpbmhlcml0IF1cbkBtaXhpbiBib3gtZGlyZWN0aW9uKCRkaXJlY3Rpb246ICRkZWZhdWx0LWJveC1kaXJlY3Rpb24pIHtcbiAgJGRpcmVjdGlvbjogdW5xdW90ZSgkZGlyZWN0aW9uKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1kaXJlY3Rpb24sICRkaXJlY3Rpb24sIC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gZGVmYXVsdCBmb3IgYm94IGxpbmVzXG4kZGVmYXVsdC1ib3gtbGluZXM6IHNpbmdsZSAhZGVmYXVsdDtcblxuLy8gbWl4aW4gZm9yIGJveCBsaW5lcyBbIHNpbmdsZSB8IG11bHRpcGxlIF1cbkBtaXhpbiBib3gtbGluZXMoJGxpbmVzOiAkZGVmYXVsdC1ib3gtbGluZXMpIHtcbiAgJGxpbmVzOiB1bnF1b3RlKCRsaW5lcyk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtbGluZXMsICRsaW5lcywgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBkZWZhdWx0IGZvciBib3ggcGFja1xuJGRlZmF1bHQtYm94LXBhY2s6IHN0YXJ0ICFkZWZhdWx0O1xuXG4vLyBtaXhpbiBmb3IgYm94IHBhY2sgWyBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkgXVxuQG1peGluIGJveC1wYWNrKCRwYWNrOiAkZGVmYXVsdC1ib3gtcGFjaykge1xuICAkcGFjazogdW5xdW90ZSgkcGFjayk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtcGFjaywgJHBhY2ssIC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcbkBpbXBvcnQgXCIuLi91dGlsaXRpZXMvZ2VuZXJhbC9oYWNrc1wiO1xuQGltcG9ydCBcIi4uL2Z1bmN0aW9uc1wiO1xuXG4vLyBCYWNrZ3JvdW5kIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTI6IGZhbHNlLCAkYmFja2dyb3VuZC0zOiBmYWxzZSwgJGJhY2tncm91bmQtNDogZmFsc2UsICRiYWNrZ3JvdW5kLTU6IGZhbHNlLCAkYmFja2dyb3VuZC02OiBmYWxzZSwgJGJhY2tncm91bmQtNzogZmFsc2UsICRiYWNrZ3JvdW5kLTg6IGZhbHNlLCAkYmFja2dyb3VuZC05OiBmYWxzZSwgJGJhY2tncm91bmQtMTA6IGZhbHNlKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LCAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG4gICRtdWx0LWJnczogLWNvbXBhc3MtbGlzdC1zaXplKCRiYWNrZ3JvdW5kcykgPiAxO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgJGJhY2tncm91bmRzKSBvciAkbXVsdC1iZ3M7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLXN2ZygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLW93ZygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLXdlYmtpdCgkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC1tb3ooJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC1vKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllIGFuZCAkYWRkLXBpZS1iZyB7XG4gICAgLXBpZS1iYWNrZ3JvdW5kOiAtcGllKCRiYWNrZ3JvdW5kcyk7IH1cbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmRzOyB9XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLXdpdGgtY3NzMi1mYWxsYmFjaygkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yOiBmYWxzZSwgJGJhY2tncm91bmQtMzogZmFsc2UsICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLCAkYmFja2dyb3VuZC01OiBmYWxzZSwgJGJhY2tncm91bmQtNjogZmFsc2UsICRiYWNrZ3JvdW5kLTc6IGZhbHNlLCAkYmFja2dyb3VuZC04OiBmYWxzZSwgJGJhY2tncm91bmQtOTogZmFsc2UsICRiYWNrZ3JvdW5kLTEwOiBmYWxzZSkge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSwgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJHNpbXBsZS1iYWNrZ3JvdW5kOiBpZigkbXVsdC1iZ3Mgb3IgcHJlZml4ZWQoLWNzczIsICRiYWNrZ3JvdW5kcyksIC1jc3MyKC1jb21wYXNzLW50aCgkYmFja2dyb3VuZHMsIGxhc3QpKSwgZmFsc2UpO1xuICBAaWYgbm90IGJsYW5rKCRzaW1wbGUtYmFja2dyb3VuZCkge1xuICAgIGJhY2tncm91bmQ6ICRzaW1wbGUtYmFja2dyb3VuZDsgfVxuICBAaW5jbHVkZSBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTsgfVxuXG4vLyBCYWNrZ3JvdW5kIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS0xLCAkaW1hZ2UtMjogZmFsc2UsICRpbWFnZS0zOiBmYWxzZSwgJGltYWdlLTQ6IGZhbHNlLCAkaW1hZ2UtNTogZmFsc2UsICRpbWFnZS02OiBmYWxzZSwgJGltYWdlLTc6IGZhbHNlLCAkaW1hZ2UtODogZmFsc2UsICRpbWFnZS05OiBmYWxzZSwgJGltYWdlLTEwOiBmYWxzZSkge1xuICAkaW1hZ2VzOiBjb21wYWN0KCRpbWFnZS0xLCAkaW1hZ2UtMiwgJGltYWdlLTMsICRpbWFnZS00LCAkaW1hZ2UtNSwgJGltYWdlLTYsICRpbWFnZS03LCAkaW1hZ2UtOCwgJGltYWdlLTksICRpbWFnZS0xMCk7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAkaW1hZ2VzKSBvciAtY29tcGFzcy1saXN0LXNpemUoJGltYWdlcykgPiAxO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtc3ZnKCRpbWFnZXMpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtb3dnKCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQoJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3ooJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkaW1hZ2VzKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLW8oJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllIGFuZCAkYWRkLXBpZS1iZyB7XG4gICAgQHdhcm4gXCJQSUUgZG9lcyBub3Qgc3VwcG9ydCBiYWNrZ3JvdW5kLWltYWdlLiBVc2UgQGluY2x1ZGUgYmFja2dyb3VuZCgjeyRpbWFnZXN9KSBpbnN0ZWFkLlwiOyB9XG4gIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZXM7IH1cblxuLy8gRW1pdCBhIElFLVNwZWNpZmljIGZpbHRlcnMgdGhhdCByZW5kZXJzIGEgc2ltcGxlIGxpbmVhciBncmFkaWVudC5cbi8vIEZvciB1c2UgaW4gSUUgNiAtIDguIEJlc3QgcHJhY3RpY2Ugd291bGQgaGF2ZSB5b3UgYXBwbHkgdGhpcyB2aWEgYVxuLy8gY29uZGl0aW9uYWwgSUUgc3R5bGVzaGVldCwgYnV0IGlmIHlvdSBtdXN0LCB5b3Ugc2hvdWxkIHBsYWNlIHRoaXMgYmVmb3JlXG4vLyBhbnkgYmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0aWVzIHRoYXQgeW91IGhhdmUgc3BlY2lmaWVkLlxuLy9cbi8vIEZvciB0aGUgYCRvcmllbnRhdGlvbmAgcGFyYW1ldGVyLCB5b3UgY2FuIHBhc3MgYHZlcnRpY2FsYCBvciBgaG9yaXpvbnRhbGAuXG5AbWl4aW4gZmlsdGVyLWdyYWRpZW50KCRzdGFydC1jb2xvciwgJGVuZC1jb2xvciwgJG9yaWVudGF0aW9uOiB2ZXJ0aWNhbCkge1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xuICAkZ3JhZGllbnQtdHlwZTogaWYoJG9yaWVudGF0aW9uID09IHZlcnRpY2FsLCAwLCAxKTtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4IHtcbiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChncmFkaWVudFR5cGU9I3skZ3JhZGllbnQtdHlwZX0sIHN0YXJ0Q29sb3JzdHI9JyN7aWUtaGV4LXN0cigkc3RhcnQtY29sb3IpfScsIGVuZENvbG9yc3RyPScje2llLWhleC1zdHIoJGVuZC1jb2xvcil9Jyk7IH0gfVxuXG4vLyBCb3JkZXIgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuXG5AbWl4aW4gYm9yZGVyLWltYWdlKCR2YWx1ZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LWJvcmRlci1pbWFnZTogLW1veihyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIHtcbiAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogLW93ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogLXdlYmtpdChyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLWJvcmRlci1pbWFnZTogLW8ocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyB7XG4gICAgYm9yZGVyLWltYWdlOiAtc3ZnKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBib3JkZXItaW1hZ2U6ICR2YWx1ZTsgfVxuXG4vLyBMaXN0IHN0eWxlIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlLWltYWdlKCRpbWFnZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCBwcmVmaXhlZCgtbW96LCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtbW96KCRpbWFnZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtb3dnKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtd2Via2l0KCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtbygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJGltYWdlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLXN2ZygkaW1hZ2UpOyB9XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6ICRpbWFnZTsgfVxuXG4vLyBMaXN0IHN0eWxlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlKCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW93ZygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIGFuZCBwcmVmaXhlZCgtbywgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICR2YWx1ZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1zdmcoJHZhbHVlKTsgfVxuICBsaXN0LXN0eWxlLWltYWdlOiAkdmFsdWU7IH1cblxuLy8gY29udGVudCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gY29udGVudCgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC13ZWJraXQoJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1vKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIGFuZCBwcmVmaXhlZCgtc3ZnLCAkdmFsdWUpIHtcbiAgICBjb250ZW50OiAtc3ZnKCR2YWx1ZSk7IH1cbiAgY29udGVudDogJHZhbHVlOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH1cbiAgICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jazsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfSB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcImZ1bmN0aW9ucy9saXN0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb25zdGFudHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZGlzcGxheVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb2xvcnNcIjtcbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgbGlzdCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2xpc3RzLnJiXG4vL1xuXG4vLyBjb21wYWN0IGlzIHBhcnQgb2YgbGlic2Fzc1xuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbnRoKCRsaXN0LCAkcGxhY2UpIHtcbiAgLy8gWWVwLCBTYXNzLWxpc3RzIGFyZSAxLWluZGV4ZWQuXG4gIEBpZiAkcGxhY2UgPT0gXCJmaXJzdFwiIHtcbiAgICAkcGxhY2U6IDE7IH1cbiAgQGlmICRwbGFjZSA9PSBcImxhc3RcIiB7XG4gICAgJHBsYWNlOiBsZW5ndGgoJGxpc3QpOyB9XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAkcGxhY2UpOyB9XG5cbi8vIGNvbXBhc3NfbGlzdCBjYW4ndCBiZSBpbXBsZW1lbnRlZCBpbiBzYXNzIHNjcmlwdFxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc3BhY2UtbGlzdCgkaXRlbTEsICRpdGVtMjogbnVsbCwgJGl0ZW0zOiBudWxsLCAkaXRlbTQ6IG51bGwsICRpdGVtNTogbnVsbCwgJGl0ZW02OiBudWxsLCAkaXRlbTc6IG51bGwsICRpdGVtODogbnVsbCwgJGl0ZW05OiBudWxsKSB7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJGl0ZW0xKSA9PSBcImxpc3RcIiB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRpdGVtczogJGl0ZW0xOyB9XG4gIEBlbHNlIHtcbiAgICAkaXRlbXM6ICRpdGVtMSAkaXRlbTIgJGl0ZW0zICRpdGVtNCAkaXRlbTUgJGl0ZW02ICRpdGVtNyAkaXRlbTggJGl0ZW05OyB9XG4gICRmdWxsOiBmaXJzdC12YWx1ZS1vZigkaXRlbXMpO1xuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkaXRlbXMpIHtcbiAgICAkaXRlbTogbnRoKCRpdGVtcywgJGkpO1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkaXRlbTsgfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLWxpc3Qtc2l6ZSgkbGlzdCkge1xuICBAcmV0dXJuIGxlbmd0aCgkbGlzdCk7IH1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNsaWNlKCRsaXN0LCAkc3RhcnQsICRlbmQ6IGZhbHNlKSB7XG4gIEBpZiAkZW5kID09IGZhbHNlIHtcbiAgICAkZW5kOiBsZW5ndGgoJGxpc3QpOyB9XG4gICRmdWxsOiBudGgoJGxpc3QsICRzdGFydCk7XG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgKyAxIHRocm91Z2ggJGVuZCB7XG4gICAgJGZ1bGw6ICRmdWxsLCBudGgoJGxpc3QsICRpKTsgfVxuICBAcmV0dXJuICRmdWxsOyB9XG5cbkBmdW5jdGlvbiByZWplY3QoJGxpc3QsICRyZWplY3QxLCAkcmVqZWN0MjogbnVsbCwgJHJlamVjdDM6IG51bGwsICRyZWplY3Q0OiBudWxsLCAkcmVqZWN0NTogbnVsbCwgJHJlamVjdDY6IG51bGwsICRyZWplY3Q3OiBudWxsLCAkcmVqZWN0ODogbnVsbCwgJHJlamVjdDk6IG51bGwpIHtcbiAgJHJlamVjdHM6ICRyZWplY3QxLCAkcmVqZWN0MiwgJHJlamVjdDMsICRyZWplY3Q0LCAkcmVqZWN0NSwgJHJlamVjdDYsICRyZWplY3Q3LCAkcmVqZWN0OCwgJHJlamVjdDk7XG4gICRmdWxsOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBpbmRleCgkcmVqZWN0cywgJGl0ZW0pIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRmdWxsIHtcbiAgICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTsgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZnVsbDogJGl0ZW07IH0gfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIGZpcnN0LXZhbHVlLW9mKCRsaXN0KSB7XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAxKTsgfVxuXG4vL0BpZiBub3QgZnVuY3Rpb24tZXhpc3RzKGNvbXBhY3QpXG5AZnVuY3Rpb24gY29tcGFjdCgkdmFycy4uLikge1xuICAkbGlzdDogKCk7XG4gIEBlYWNoICR2YXIgaW4gJHZhcnMge1xuICAgIEBpZiAkdmFyIHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICR2YXIsIGNvbW1hKTsgfSB9XG4gIEByZXR1cm4gJGxpc3Q7IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY3Jvc3MgYnJvd3NlciBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnJiXG4vL1xuXG5AZnVuY3Rpb24gcHJlZml4ZWQoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgJHByZWZpeGVkOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBcInN0cmluZ1wiIHtcbiAgICAgICRwcmVmaXhlZDogJHByZWZpeGVkIG9yIHN0ci1pbmRleCgkaXRlbSwgXCJ1cmxcIikgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCBcInJnYlwiKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sIFwiI1wiKSAhPSAxOyB9XG4gICAgQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gXCJjb2xvclwiIHt9XG4gICAgQGVsc2UgaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkcHJlZml4ZWQ6IHRydWU7IH0gfVxuICBAcmV0dXJuICRwcmVmaXhlZDsgfVxuXG5AZnVuY3Rpb24gcHJlZml4KCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgJHByb3BlcnRpZXM6IFwiXCI7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5MSkgPT0gXCJsaXN0XCIge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MTsgfVxuICBAZWxzZSB7XG4gICAgLy8gUGFzc2luZyBtdWx0aXBsZSBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5OyB9XG4gICRwcm9wczogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJGl0ZW0gPT0gbnVsbCB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBwcmVmaXhlZCgkcHJlZml4LCAkaXRlbSkge1xuICAgICAgICAkaXRlbTogI3skcHJlZml4fS0jeyRpdGVtfTsgfVxuICAgICAgQGlmICRwcm9wcyB7XG4gICAgICAgICRwcm9wczogJHByb3BzLCAkaXRlbTsgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcHJvcHM6ICRpdGVtOyB9IH0gfVxuICBAcmV0dXJuICRwcm9wczsgfVxuXG5AZnVuY3Rpb24gLXN2ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXN2Z1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW93ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW93Z1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLXdlYmtpdCgkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXdlYmtpdFwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW1veigkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW1velwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW8oJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1vXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtcGllKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItcGllXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGdyYWRpZW50IHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi92MC4xMi4yL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydC5yYlxuLy9cblxuQGZ1bmN0aW9uIGNvbG9yLXN0b3BzKCRpdGVtMSwgJGl0ZW0yOiBudWxsLCAkaXRlbTM6IG51bGwsICRpdGVtNDogbnVsbCwgJGl0ZW01OiBudWxsLCAkaXRlbTY6IG51bGwsICRpdGVtNzogbnVsbCwgJGl0ZW04OiBudWxsLCAkaXRlbTk6IG51bGwpIHtcbiAgJGl0ZW1zOiAkaXRlbTIsICRpdGVtMywgJGl0ZW00LCAkaXRlbTUsICRpdGVtNiwgJGl0ZW03LCAkaXRlbTgsICRpdGVtOTtcbiAgJGZ1bGw6ICRpdGVtMTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGl0ZW1zIHtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwsICRpdGVtOyB9IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb25zdGFudHMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb25zdGFudHMucmJcbi8vXG5cbkBmdW5jdGlvbiBvcHBvc2l0ZS1wb3NpdGlvbigkZnJvbSkge1xuICBAaWYgJGZyb20gPT0gdG9wIHtcbiAgICBAcmV0dXJuIGJvdHRvbTsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBib3R0b20ge1xuICAgIEByZXR1cm4gdG9wOyB9XG4gIEBlbHNlIGlmICRmcm9tID09IGxlZnQge1xuICAgIEByZXR1cm4gcmlnaHQ7IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gcmlnaHQge1xuICAgIEByZXR1cm4gbGVmdDsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBjZW50ZXIge1xuICAgIEByZXR1cm4gY2VudGVyOyB9IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZGlzcGxheSBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9kaXNwbGF5LnJiXG4vL1xuXG5AZnVuY3Rpb24gZWxlbWVudHMtb2YtdHlwZSgkdHlwZSkge1xuICBAaWYgJHR5cGUgPT0gYmxvY2sge1xuICAgIEByZXR1cm4gYWRkcmVzcywgYXJ0aWNsZSwgYXNpZGUsIGJsb2NrcXVvdGUsIGNlbnRlciwgZGlyLCBkaXYsIGRkLCBkZXRhaWxzLCBkbCwgZHQsIGZpZWxkc2V0LCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvcm0sIGZvb3RlciwgZnJhbWVzZXQsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGhyLCBoZWFkZXIsIGhncm91cCwgaXNpbmRleCwgbWFpbiwgbWVudSwgbmF2LCBub2ZyYW1lcywgbm9zY3JpcHQsIG9sLCBwLCBwcmUsIHNlY3Rpb24sIHN1bW1hcnksIHVsOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGlubGluZSB7XG4gICAgQHJldHVybiBhLCBhYmJyLCBhY3JvbnltLCBhdWRpbywgYiwgYmFzZWZvbnQsIGJkbywgYmlnLCBiciwgY2FudmFzLCBjaXRlLCBjb2RlLCBjb21tYW5kLCBkYXRhbGlzdCwgZGZuLCBlbSwgZW1iZWQsIGZvbnQsIGksIGltZywgaW5wdXQsIGtleWdlbiwga2JkLCBsYWJlbCwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHEsIHJwLCBydCwgcnVieSwgcywgc2FtcCwgc2VsZWN0LCBzbWFsbCwgc3Bhbiwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0ZXh0YXJlYSwgdGltZSwgdHQsIHUsIHZhciwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBpbmxpbmUtYmxvY2sge1xuICAgIEByZXR1cm4gaW1nOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlIHtcbiAgICBAcmV0dXJuIHRhYmxlOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGxpc3QtaXRlbSB7XG4gICAgQHJldHVybiBsaTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1yb3ctZ3JvdXAge1xuICAgIEByZXR1cm4gdGJvZHk7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtaGVhZGVyLWdyb3VwIHtcbiAgICBAcmV0dXJuIHRoZWFkOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLWZvb3Rlci1ncm91cCB7XG4gICAgQHJldHVybiB0Zm9vdDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1yb3cge1xuICAgIEByZXR1cm4gdHI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtY2VsbCB7XG4gICAgQHJldHVybiB0aCwgdGQ7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaHRtbDUtYmxvY2sge1xuICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5OyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGh0bWw1LWlubGluZSB7XG4gICAgQHJldHVybiBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZW1iZWQsIGtleWdlbiwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgdGltZSwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBodG1sNSB7XG4gICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGRldGFpbHMsIGVtYmVkLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIGtleWdlbiwgbWFpbiwgbWFyaywgbWVudSwgbWV0ZXIsIG5hdiwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCB2aWRlbywgd2JyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRleHQtaW5wdXQge1xuICAgIEByZXR1cm4gaW5wdXQsIHRleHRhcmVhOyB9IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29sb3JzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbG9ycy5yYlxuLy9cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIGxpZ2h0ZW4vZGFya2VuIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7IH1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBsaWdodG5lc3MgYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIHNjYWxlZCBkYXJrZXIsIGlmIHBvc2l0aXZlLCBpdCBpcyBzY2FsZWQgbGlnaHRlci5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIGxpZ2h0IG9yIGRhcmsgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTsgfVxuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2Ygc2F0dXJhdGUvZGVzYXR1cmF0ZSBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3Qtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7IH1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBzYXR1cmF0aW9uIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBkZXNhdHVyYXRlZCwgaWYgcG9zaXRpdmUsIGl0IGlzIHNhdHVyYXRlZC5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIHNhdHVyYXRlZCBvciBkZXNhdHVyYXRlZCBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7IH1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoIzAwMDAwMCwgJGNvbG9yLCAkcGVyY2VudGFnZSk7IH1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCgjZmZmZmZmLCAkY29sb3IsICRwZXJjZW50YWdlKTsgfVxuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgcGFkZGluZy1ib3hgIC0tIHRoZSBib3ggbW9kZWwgdXNlZCBieSBtb2Rlcm4gYnJvd3NlcnMuXG4vL1xuLy8gSWYgeW91IHdpc2ggdG8gZG8gc28sIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY29uc3RhbnQgd2l0aCBgYm9yZGVyLWJveGBcbi8vXG4vLyBUbyBvdmVycmlkZSB0byB0aGUgZGVmYXVsdCBib3JkZXItYm94IG1vZGVsLCB1c2UgdGhpcyBjb2RlOlxuLy8gICAgICRkZWZhdWx0LWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveFxuXG4kZGVmYXVsdC1iYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94ICFkZWZhdWx0O1xuXG4vLyBDbGlwIHRoZSBiYWNrZ3JvdW5kIChpbWFnZSBhbmQgY29sb3IpIGF0IHRoZSBlZGdlIG9mIHRoZSBwYWRkaW5nIG9yIGJvcmRlci5cbi8vXG4vLyBMZWdhbCBWYWx1ZXM6XG4vL1xuLy8gICAqIHBhZGRpbmctYm94XG4vLyAgICogYm9yZGVyLWJveFxuLy8gICAqIHRleHRcblxuQG1peGluIGJhY2tncm91bmQtY2xpcCgkY2xpcDogJGRlZmF1bHQtYmFja2dyb3VuZC1jbGlwKSB7XG4gIC8vIHdlYmtpdCBhbmQgbW96aWxsYSB1c2UgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgW2JvcmRlciB8IHBhZGRpbmddXG4gICRjbGlwOiB1bnF1b3RlKCRjbGlwKTtcbiAgJGRlcHJlY2F0ZWQ6ICRjbGlwO1xuICBAaWYgJGNsaXAgPT0gcGFkZGluZy1ib3gge1xuICAgICRkZXByZWNhdGVkOiBwYWRkaW5nOyB9XG4gIEBpZiAkY2xpcCA9PSBib3JkZXItYm94IHtcbiAgICAkZGVwcmVjYXRlZDogYm9yZGVyOyB9XG4gIC8vIFN1cHBvcnQgZm9yIHdlYmtpdCBhbmQgbW96aWxsYSdzIHVzZSBvZiB0aGUgZGVwcmVjYXRlZCBzaG9ydCBmb3JtXG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLWNsaXAsICRkZXByZWNhdGVkLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG5vdCBvZmZpY2lhbCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLWNsaXAsICRjbGlwLCBub3QgLW1veiwgbm90IC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIE92ZXJyaWRlIGAkZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbiRkZWZhdWx0LWJhY2tncm91bmQtb3JpZ2luOiBjb250ZW50LWJveCAhZGVmYXVsdDtcblxuLy8gUG9zaXRpb24gdGhlIGJhY2tncm91bmQgb2ZmIHRoZSBlZGdlIG9mIHRoZSBwYWRkaW5nLCBib3JkZXIgb3IgY29udGVudFxuLy9cbi8vICogUG9zc2libGUgdmFsdWVzOlxuLy8gICAqIGBwYWRkaW5nLWJveGBcbi8vICAgKiBgYm9yZGVyLWJveGBcbi8vICAgKiBgY29udGVudC1ib3hgXG4vLyAqIGJyb3dzZXIgZGVmYXVsdHMgdG8gYHBhZGRpbmctYm94YFxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0byBgY29udGVudC1ib3hgXG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luOiAkZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbikge1xuICAkb3JpZ2luOiB1bnF1b3RlKCRvcmlnaW4pO1xuICAvLyB3ZWJraXQgYW5kIG1vemlsbGEgdXNlIHRoZSBkZXByZWNhdGVkIHNob3J0IFtib3JkZXIgfCBwYWRkaW5nIHwgY29udGVudF1cbiAgJGRlcHJlY2F0ZWQ6ICRvcmlnaW47XG4gIEBpZiAkb3JpZ2luID09IHBhZGRpbmctYm94IHtcbiAgICAkZGVwcmVjYXRlZDogcGFkZGluZzsgfVxuICBAaWYgJG9yaWdpbiA9PSBib3JkZXItYm94IHtcbiAgICAkZGVwcmVjYXRlZDogYm9yZGVyOyB9XG4gIEBpZiAkb3JpZ2luID09IGNvbnRlbnQtYm94IHtcbiAgICAkZGVwcmVjYXRlZDogY29udGVudDsgfVxuICAvLyBTdXBwb3J0IGZvciB3ZWJraXQgYW5kIG1vemlsbGEncyB1c2Ugb2YgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgZm9ybVxuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1vcmlnaW4sICRkZXByZWNhdGVkLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG5vdCBvZmZpY2lhbCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLW9yaWdpbiwgJG9yaWdpbiwgbm90IC1tb3osIG5vdCAtd2Via2l0LCAtbywgLW1zLCAta2h0bWwsIG9mZmljaWFsKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyAgb3ZlcnJpZGUgdG8gY2hhbmdlIHRoZSBkZWZhdWx0XG4kZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0byAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBzaXplIG9mIGJhY2tncm91bmQgaW1hZ2VzIHVzaW5nIHB4LCB3aWR0aCBhbmQgaGVpZ2h0LCBvciBwZXJjZW50YWdlcy5cbi8vIEN1cnJlbnRseSBzdXBwb3J0ZWQgaW46IE9wZXJhLCBHZWNrbywgV2Via2l0LlxuLy9cbi8vICogcGVyY2VudGFnZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiYWNrZ3JvdW5kLW9yaWdpbiAoZGVmYXVsdCA9IHBhZGRpbmctYm94KVxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0bzogYCRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZWBcbkBtaXhpbiBiYWNrZ3JvdW5kLXNpemUoJHNpemUtMTogJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplLCAkc2l6ZS0yOiBmYWxzZSwgJHNpemUtMzogZmFsc2UsICRzaXplLTQ6IGZhbHNlLCAkc2l6ZS01OiBmYWxzZSwgJHNpemUtNjogZmFsc2UsICRzaXplLTc6IGZhbHNlLCAkc2l6ZS04OiBmYWxzZSwgJHNpemUtOTogZmFsc2UsICRzaXplLTEwOiBmYWxzZSkge1xuICAkc2l6ZS0xOiBpZih0eXBlLW9mKCRzaXplLTEpID09IHN0cmluZywgdW5xdW90ZSgkc2l6ZS0xKSwgJHNpemUtMSk7XG4gICRzaXplczogY29tcGFjdCgkc2l6ZS0xLCAkc2l6ZS0yLCAkc2l6ZS0zLCAkc2l6ZS00LCAkc2l6ZS01LCAkc2l6ZS02LCAkc2l6ZS03LCAkc2l6ZS04LCAkc2l6ZS05LCAkc2l6ZS0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLXNpemUsICRzaXplcywgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENyb3NzLWJyb3dzZXIgc3VwcG9ydCBmb3IgQGZvbnQtZmFjZS4gU3VwcG9ydHMgSUUsIEdlY2tvLCBXZWJraXQsIE9wZXJhLlxuLy9cbi8vICogJG5hbWUgaXMgcmVxdWlyZWQsIGFyYml0cmFyeSwgYW5kIHdoYXQgeW91IHdpbGwgdXNlIGluIGZvbnQgc3RhY2tzLlxuLy8gKiAkZm9udC1maWxlcyBpcyByZXF1aXJlZCB1c2luZyBmb250LWZpbGVzKCdyZWxhdGl2ZS9sb2NhdGlvbicsICdmb3JtYXQnKS5cbi8vICAgZm9yIGJlc3QgcmVzdWx0cyB1c2UgdGhpcyBvcmRlcjogd29mZiwgb3BlbnR5cGUvdHJ1ZXR5cGUsIHN2Z1xuLy8gKiAkZW90IGlzIHJlcXVpcmVkIGJ5IElFLCBhbmQgaXMgYSByZWxhdGl2ZSBsb2NhdGlvbiBvZiB0aGUgZW90IGZpbGUuXG4vLyAqICR3ZWlnaHQgc2hvd3MgaWYgdGhlIGZvbnQgaXMgYm9sZCwgZGVmYXVsdHMgdG8gbm9ybWFsXG4vLyAqICRzdHlsZSBkZWZhdWx0cyB0byBub3JtYWwsIG1pZ2h0IGJlIGFsc28gaXRhbGljXG4vLyAqIEZvciBhbmRyb2lkIDIuMiBDb21wYXRpYmxpdHksIHBsZWFzZSBlbnN1cmUgdGhhdCB5b3VyIHdlYiBwYWdlIGhhc1xuLy8gICBhIG1ldGEgdmlld3BvcnQgdGFnLlxuLy8gKiBUbyBzdXBwb3J0IGlPUyA8IDQuMiwgYW4gU1ZHIGZpbGUgbXVzdCBiZSBwcm92aWRlZFxuLy9cbi8vIElmIHlvdSBuZWVkIHRvIGdlbmVyYXRlIG90aGVyIGZvcm1hdHMgY2hlY2sgb3V0IHRoZSBGb250IFNxdWlycmVsXG4vLyBbZm9udCBnZW5lcmF0b3JdKGh0dHA6Ly93d3cuZm9udHNxdWlycmVsLmNvbS9mb250ZmFjZS9nZW5lcmF0b3IpXG4vL1xuXG4vLyBJbiBvcmRlciB0byByZWZlciB0byBhIHNwZWNpZmljIHN0eWxlIG9mIHRoZSBmb250IGluIHlvdXIgc3R5bGVzaGVldHMgYXNcbi8vIGUuZy4gXCJmb250LXN0eWxlOiBpdGFsaWM7XCIsICB5b3UgbWF5IGFkZCBhIGNvdXBsZSBvZiBAZm9udC1mYWNlIGluY2x1ZGVzXG4vLyBjb250YWluaW5nIHRoZSByZXNwZWN0aXZlIGZvbnQgZmlsZXMgZm9yIGVhY2ggc3R5bGUgYW5kIHNwZWN5aW5nXG4vLyByZXNwZWN0aXZlIHRoZSAkc3R5bGUgcGFyYW1ldGVyLlxuXG4vLyBPcmRlciBvZiB0aGUgaW5jbHVkZXMgbWF0dGVycywgYW5kIGl0IGlzOiBub3JtYWwsIGJvbGQsIGl0YWxpYywgYm9sZCtpdGFsaWMuXG5cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmb250LWZpbGVzLCAkZW90OiBmYWxzZSwgJHdlaWdodDogZmFsc2UsICRzdHlsZTogZmFsc2UpIHtcbiAgJGllZm9udDogdW5xdW90ZShcIiN7JGVvdH0/I2llZml4XCIpO1xuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogcXVvdGUoJG5hbWUpO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogZm9udC11cmwoJGVvdCk7XG4gICAgICAkZm9udC1maWxlczogZm9udC11cmwoJGllZm9udCkgdW5xdW90ZShcImZvcm1hdCgnZW90JylcIiksICRmb250LWZpbGVzOyB9XG4gICAgc3JjOiAkZm9udC1maWxlcztcbiAgICBAaWYgJHdlaWdodCB7XG4gICAgICBmb250LXdlaWdodDogJHdlaWdodDsgfVxuICAgIEBpZiAkc3R5bGUge1xuICAgICAgZm9udC1zdHlsZTogJHN0eWxlOyB9IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBAZG9jIG9mZlxuLy8gTm90ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTYWZhcmksIENocm9tZSwgYW5kIEZpcmVmb3ggYWxsIHN1cHBvcnQgM0QgdHJhbnNmb3Jtcy4gSG93ZXZlcixcbi8vIG9ubHkgaW4gdGhlIG1vc3QgcmVjZW50IGJ1aWxkcy4gWW91IHNob3VsZCBhbHNvIHByb3ZpZGUgZmFsbGJhY2sgMmQgc3VwcG9ydCBmb3Jcbi8vIE9wZXJhIGFuZCBJRS4gSUUxMCBpcyBzbGF0ZWQgdG8gaGF2ZSAzZCBlbmFibGVkLCBidXQgaXMgY3VycmVudGx5IHVucmVsZWFzZWQuXG4vLyBUbyBtYWtlIHRoYXQgZWFzeSwgYWxsIDJEIHRyYW5zZm9ybXMgaW5jbHVkZSBhbiBicm93c2VyLXRhcmdldGluZyB0b2dnbGUgKCRvbmx5M2QpXG4vLyB0byBzd2l0Y2ggYmV0d2VlbiB0aGUgdHdvIHN1cHBvcnQgbGlzdHMuIFRoZSB0b2dnbGUgZGVmYXVsdHMgdG8gJ2ZhbHNlJyAoMkQpLFxuLy8gYW5kIGFsc28gYWNjZXB0cyAndHJ1ZScgKDNEKS4gQ3VycmVudGx5IHRoZSBsaXN0cyBhcmUgYXMgZm9sbG93czpcbi8vIDJEOiBNb3ppbGxhLCBXZWJraXQsIE9wZXJhLCBPZmZpY2lhbFxuLy8gM0Q6IFdlYmtpdCwgRmlyZWZveC5cblxuLy8gQXZhaWxhYmxlIFRyYW5zZm9ybXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFNjYWxlICgyZCBhbmQgM2QpXG4vLyAtIFJvdGF0ZSAoMmQgYW5kIDNkKVxuLy8gLSBUcmFuc2xhdGUgKDJkIGFuZCAzZClcbi8vIC0gU2tldyAoMmQgb25seSlcblxuLy8gVHJhbnNmb3JtIFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFRyYW5zZm9ybSBPcmlnaW4gKDJkIGFuZCAzZClcbi8vIC0gUGVyc3BlY3RpdmUgKDNkKVxuLy8gLSBQZXJzcGVjdGl2ZSBPcmlnaW4gKDNkKVxuLy8gLSBUcmFuc2Zvcm0gU3R5bGUgKDNkKVxuLy8gLSBCYWNrZmFjZSBWaXNpYmlsaXR5ICgzZClcblxuLy8gTWl4aW5zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB0cmFuc2Zvcm0tb3JpZ2luXG4vLyAgLSBzaG9ydGN1dHM6ICB0cmFuc2Zvcm0tb3JpZ2luMmQsIHRyYW5zZm9ybS1vcmlnaW4zZFxuLy8gIC0gaGVscGVyczogICAgYXBwbHktb3JpZ2luXG4vLyB0cmFuc2Zvcm1cbi8vICAtIHNob3J0Y3V0czogIHRyYW5zZm9ybTJkLCB0cmFuc2Zvcm0zZFxuLy8gIC0gaGVscGVyczogICAgc2ltcGxlLXRyYW5zZm9ybSwgY3JlYXRlLXRyYW5zZm9ybVxuLy8gcGVyc3BlY3RpdmVcbi8vICAtIGhlbHBlcnM6ICAgIHBlcnNwZWN0aXZlLW9yaWdpblxuLy8gdHJhbnNmb3JtLXN0eWxlXG4vLyBiYWNrZmFjZS12aXNpYmlsaXR5XG4vLyBzY2FsZVxuLy8gIC0gc2hvcnRjdXRzOiAgc2NhbGVYLCBzY2FsZVksIHNjYWxlWiwgc2NhbGUzZFxuLy8gcm90YXRlXG4vLyAgLSBzaG9ydGN1dHM6ICByb3RhdGVYLCByb3RhdGVZLCByb3RhdGUzZFxuLy8gdHJhbnNsYXRlXG4vLyAgLSBzaG9ydGN1dHM6ICB0cmFuc2xhdGVYLCB0cmFuc2xhdGVZLCB0cmFuc2xhdGVaLCB0cmFuc2xhdGUzZFxuLy8gc2tld1xuLy8gIC0gc2hvcnRjdXRzOiAgc2tld1gsIHNrZXdZXG5cbi8vIERlZmF1bHRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBUaGUgZGVmYXVsdCB4LW9yaWdpbiBmb3IgdHJhbnNmb3Jtc1xuJGRlZmF1bHQtb3JpZ2luLXg6IDUwJSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgeS1vcmlnaW4gZm9yIHRyYW5zZm9ybXNcbiRkZWZhdWx0LW9yaWdpbi15OiA1MCUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHotb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4tejogNTAlICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB4LW11bHRpcGxpZXIgZm9yIHNjYWxpbmdcbiRkZWZhdWx0LXNjYWxlLXg6IDEuMjUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHktbXVsdGlwbGllciBmb3Igc2NhbGluZ1xuJGRlZmF1bHQtc2NhbGUteTogJGRlZmF1bHQtc2NhbGUteCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgei1tdWx0aXBsaWVyIGZvciBzY2FsaW5nXG4kZGVmYXVsdC1zY2FsZS16OiAkZGVmYXVsdC1zY2FsZS14ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBhbmdsZSBmb3Igcm90YXRpb25zXG4kZGVmYXVsdC1yb3RhdGU6IDQ1ZGVnICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB4LXZlY3RvciBmb3IgdGhlIGF4aXMgb2YgM2Qgcm90YXRpb25zXG4kZGVmYXVsdC12ZWN0b3IteDogMSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgeS12ZWN0b3IgZm9yIHRoZSBheGlzIG9mIDNkIHJvdGF0aW9uc1xuJGRlZmF1bHQtdmVjdG9yLXk6IDEgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHotdmVjdG9yIGZvciB0aGUgYXhpcyBvZiAzZCByb3RhdGlvbnNcbiRkZWZhdWx0LXZlY3Rvci16OiAxICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB4LWxlbmd0aCBmb3IgdHJhbnNsYXRpb25zXG4kZGVmYXVsdC10cmFuc2xhdGUteDogMWVtICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB5LWxlbmd0aCBmb3IgdHJhbnNsYXRpb25zXG4kZGVmYXVsdC10cmFuc2xhdGUteTogJGRlZmF1bHQtdHJhbnNsYXRlLXggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHotbGVuZ3RoIGZvciB0cmFuc2xhdGlvbnNcbiRkZWZhdWx0LXRyYW5zbGF0ZS16OiAkZGVmYXVsdC10cmFuc2xhdGUteCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgeC1hbmdsZSBmb3Igc2tld2luZ1xuJGRlZmF1bHQtc2tldy14OiA1ZGVnICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB5LWFuZ2xlIGZvciBza2V3aW5nXG4kZGVmYXVsdC1za2V3LXk6IDVkZWcgIWRlZmF1bHQ7XG5cbi8vICoqVHJhbnNmb3JtLW9yaWdpbioqXG4vLyBUcmFuc2Zvcm0tb3JpZ2luIHNlbnQgYXMgYSBjb21wbGV0ZSBzdHJpbmdcbi8vXG4vLyAgICAgQGluY2x1ZGUgYXBwbHktb3JpZ2luKCBvcmlnaW4gWywgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSAnb3JpZ2luJyBpcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IGNvbnRhaW5pbmcgMS0zICh4L3kveikgY29vcmRpbmF0ZXNcbi8vIGluIHBlcmNlbnRhZ2VzLCBhYnNvbHV0ZSAocHgsIGNtLCBpbiwgZW0gZXRjLi4pIG9yIHJlbGF0aXZlXG4vLyAobGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCBjZW50ZXIpIHVuaXRzXG4vL1xuLy8gQHBhcmFtIG9ubHkzZCBTZXQgdGhpcyB0byB0cnVlIHRvIG9ubHkgYXBwbHkgdGhpc1xuLy8gbWl4aW4gd2hlcmUgYnJvd3NlcnMgaGF2ZSAzRCBzdXBwb3J0LlxuQG1peGluIGFwcGx5LW9yaWdpbigkb3JpZ2luLCAkb25seTNkKSB7XG4gICRvbmx5M2Q6ICRvbmx5M2Qgb3IgLWNvbXBhc3MtbGlzdC1zaXplKC1jb21wYXNzLWxpc3QoJG9yaWdpbikpID4gMjtcbiAgQGlmICRvbmx5M2Qge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0tb3JpZ2luLCAkb3JpZ2luLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0tb3JpZ2luLCAkb3JpZ2luLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH0gfVxuXG4vLyBUcmFuc2Zvcm0tb3JpZ2luIHNlbnQgYXMgaW5kaXZpZHVhbCBhcmd1bWVudHM6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oIFsgb3JpZ2luLXgsIG9yaWdpbi15LCBvcmlnaW4teiwgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSB0aGUgMyAnb3JpZ2luLScgYXJndW1lbnRzIHJlcHJlc2VudCB4L3kveiBjb29yZGluYXRlcy5cbi8vXG4vLyAqKk5PVEU6Kiogc2V0dGluZyB6IGNvb3JkaW5hdGVzIHRyaWdnZXJzIDNEIHN1cHBvcnQgbGlzdCwgbGVhdmUgZmFsc2UgZm9yIDJEIHN1cHBvcnRcbkBtaXhpbiB0cmFuc2Zvcm0tb3JpZ2luKCRvcmlnaW4teDogJGRlZmF1bHQtb3JpZ2luLXgsICRvcmlnaW4teTogJGRlZmF1bHQtb3JpZ2luLXksICRvcmlnaW4tejogZmFsc2UsICRvbmx5M2Q6IGlmKCRvcmlnaW4teiwgdHJ1ZSwgZmFsc2UpKSB7XG4gICRvcmlnaW46IHVucXVvdGUoXCJcIik7XG4gIEBpZiAkb3JpZ2luLXggb3IgJG9yaWdpbi15IG9yICRvcmlnaW4teiB7XG4gICAgQGlmICRvcmlnaW4teCB7XG4gICAgICAkb3JpZ2luOiAkb3JpZ2luLXg7IH1cbiAgICBAZWxzZSB7XG4gICAgICAkb3JpZ2luOiA1MCU7IH1cbiAgICBAaWYgJG9yaWdpbi15IHtcbiAgICAgICRvcmlnaW46ICRvcmlnaW4gJG9yaWdpbi15OyB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRvcmlnaW4teiB7XG4gICAgICAgICRvcmlnaW46ICRvcmlnaW4gNTAlOyB9IH1cbiAgICBAaWYgJG9yaWdpbi16IHtcbiAgICAgICRvcmlnaW46ICRvcmlnaW4gJG9yaWdpbi16OyB9XG4gICAgQGluY2x1ZGUgYXBwbHktb3JpZ2luKCRvcmlnaW4sICRvbmx5M2QpOyB9IH1cblxuLy8gVHJhbnNmb3JtIHNlbnQgYXMgYSBjb21wbGV0ZSBzdHJpbmc6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHRyYW5zZm9ybSggdHJhbnNmb3JtcyBbLCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlICd0cmFuc2Zvcm1zJyBpcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGFsbCB0aGUgdHJhbnNmb3JtcyB0byBiZSBhcHBsaWVkLlxuQG1peGluIHRyYW5zZm9ybSgkdHJhbnNmb3JtLCAkb25seTNkOiBmYWxzZSkge1xuICBAaWYgJG9ubHkzZCB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybSwgJHRyYW5zZm9ybSwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLCAkdHJhbnNmb3JtLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH0gfVxuXG4vLyBTaG9ydGN1dCB0byB0YXJnZXQgYWxsIGJyb3dzZXJzIHdpdGggMkQgdHJhbnNmb3JtIHN1cHBvcnRcbkBtaXhpbiB0cmFuc2Zvcm0yZCgkdHJhbnMpIHtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgZmFsc2UpOyB9XG5cbi8vIFNob3J0Y3V0IHRvIHRhcmdldCBvbmx5IGJyb3dzZXJzIHdpdGggM0QgdHJhbnNmb3JtIHN1cHBvcnRcbkBtaXhpbiB0cmFuc2Zvcm0zZCgkdHJhbnMpIHtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgdHJ1ZSk7IH1cblxuLy8gQGRvYyBvZmZcbi8vIDNEIFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBTZXQgdGhlIHBlcnNwZWN0aXZlIG9mIDNEIHRyYW5zZm9ybXMgb24gdGhlIGNoaWxkcmVuIG9mIGFuIGVsZW1lbnQ6XG4vL1xuLy8gICAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZSggcGVyc3BlY3RpdmUgKVxuLy9cbi8vIHdoZXJlICdwZXJzcGVjdGl2ZScgaXMgYSB1bml0bGVzcyBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBkZXB0aCBvZiB0aGVcbi8vIHotYXhpcy4gVGhlIGhpZ2hlciB0aGUgcGVyc3BlY3RpdmUsIHRoZSBtb3JlIGV4YWdnZXJhdGVkIHRoZSBmb3Jlc2hvcnRlbmluZy5cbi8vIHZhbHVlcyBmcm9tIDUwMCB0byAxMDAwIGFyZSBtb3JlLW9yLWxlc3MgXCJub3JtYWxcIiAtIGEgZ29vZCBzdGFydGluZy1wb2ludC5cbkBtaXhpbiBwZXJzcGVjdGl2ZSgkcCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwocGVyc3BlY3RpdmUsICRwLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gU2V0IHRoZSBvcmlnaW4gcG9zaXRpb24gZm9yIHRoZSBwZXJzcGVjdGl2ZVxuLy9cbi8vICAgICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUtb3JpZ2luKG9yaWdpbi14IFtvcmlnaW4teV0pXG4vL1xuLy8gd2hlcmUgdGhlIHR3byBhcmd1bWVudHMgcmVwcmVzZW50IHgveSBjb29yZGluYXRlc1xuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkb3JpZ2luOiA1MCUpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHBlcnNwZWN0aXZlLW9yaWdpbiwgJG9yaWdpbiwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIERldGVybWluZSB3aGV0aGVyIGEgM0Qgb2JqZWN0cyBjaGlsZHJlbiBhbHNvIGxpdmUgaW4gdGhlIGdpdmVuIDNEIHNwYWNlXG4vL1xuLy8gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUoIFsgc3R5bGUgXSApXG4vL1xuLy8gd2hlcmUgYHN0eWxlYCBjYW4gYmUgZWl0aGVyIGBmbGF0YCBvciBgcHJlc2VydmUtM2RgLlxuLy8gQnJvd3NlcnMgZGVmYXVsdCB0byBgZmxhdGAsIG1peGluIGRlZmF1bHRzIHRvIGBwcmVzZXJ2ZS0zZGAuXG5AbWl4aW4gdHJhbnNmb3JtLXN0eWxlKCRzdHlsZTogcHJlc2VydmUtM2QpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybS1zdHlsZSwgJHN0eWxlLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gRGV0ZXJtaW5lIHRoZSB2aXNpYmlsaXR5IG9mIGFuIGVsZW1lbnQgd2hlbiBpdCdzIGJhY2sgaXMgdHVybmVkXG4vL1xuLy8gICAgIEBpbmNsdWRlIGJhY2tmYWNlLXZpc2liaWxpdHkoIFsgdmlzaWJpbGl0eSBdIClcbi8vXG4vLyB3aGVyZSBgdmlzaWJpbGl0eWAgY2FuIGJlIGVpdGhlciBgdmlzaWJsZWAgb3IgYGhpZGRlbmAuXG4vLyBCcm93c2VycyBkZWZhdWx0IHRvIHZpc2libGUsIG1peGluIGRlZmF1bHRzIHRvIGhpZGRlblxuQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZpc2liaWxpdHk6IGhpZGRlbikge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2ZhY2UtdmlzaWJpbGl0eSwgJHZpc2liaWxpdHksIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBAZG9jIG9mZlxuLy8gVHJhbnNmb3JtIFBhcnRpYWxzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGVzZSB3b3JrIHdlbGwgb24gdGhlaXIgb3duLCBidXQgdGhleSBkb24ndCBhZGQgdG8gZWFjaCBvdGhlciwgdGhleSBvdmVycmlkZS5cbi8vIFVzZSBhbG9uZyB3aXRoIHRyYW5zZm9ybSBwYXJhbWV0ZXIgbWl4aW5zIHRvIGFkanVzdCBvcmlnaW4sIHBlcnNwZWN0aXZlIGFuZCBzdHlsZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjYWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBTY2FsZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggYW5kIHkgYXhpczpcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHNjYWxlKCBbIHNjYWxlLXgsIHNjYWxlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlIHRoZSAnc2NhbGUtJyBhcmd1bWVudHMgYXJlIHVuaXRsZXNzIG11bHRpcGxpZXJzIG9mIHRoZSB4IGFuZCB5IGRpbWVuc2lvbnNcbi8vIGFuZCBwZXJzcGVjdGl2ZSwgd2hpY2ggd29ya3MgdGhlIHNhbWUgYXMgdGhlIHN0YW5kLWFsb25lIHBlcnNwZWN0aXZlIHByb3BlcnR5L21peGluXG4vLyBidXQgYXBwbGllcyB0byB0aGUgaW5kaXZpZHVhbCBlbGVtZW50IChtdWx0aXBsaWVkIHdpdGggYW55IHBhcmVudCBwZXJzcGVjdGl2ZSlcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGUoJHNjYWxlLXg6ICRkZWZhdWx0LXNjYWxlLXgsICRzY2FsZS15OiAkc2NhbGUteCwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiBzY2FsZSgkc2NhbGUteCwgJHNjYWxlLXkpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpOyB9XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVgoIFsgc2NhbGUteCwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWCgkc2NhbGU6ICRkZWZhdWx0LXNjYWxlLXgsICRwZXJzcGVjdGl2ZTogZmFsc2UsICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogc2NhbGVYKCRzY2FsZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gU2NhbGUgYW4gb2JqZWN0IGFsb25nIHRoZSB5IGF4aXNcbi8vIEBpbmNsdWRlIHNjYWxlWSggWyBzY2FsZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGVZKCRzY2FsZTogJGRlZmF1bHQtc2NhbGUteSwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiBzY2FsZVkoJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTsgfVxuXG4vLyBTY2FsZSBhbiBvYmplY3QgYWxvbmcgdGhlIHogYXhpc1xuLy8gQGluY2x1ZGUgc2NhbGVaKCBbIHNjYWxlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZVooJHNjYWxlOiAkZGVmYXVsdC1zY2FsZS16LCAkcGVyc3BlY3RpdmU6IGZhbHNlKSB7XG4gICR0cmFuczogc2NhbGVaKCRzY2FsZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTsgfVxuXG4vLyBTY2FsZSBhbmQgb2JqZWN0IGFsb25nIGFsbCB0aHJlZSBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZTNkKCBbIHNjYWxlLXgsIHNjYWxlLXksIHNjYWxlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZTNkKCRzY2FsZS14OiAkZGVmYXVsdC1zY2FsZS14LCAkc2NhbGUteTogJGRlZmF1bHQtc2NhbGUteSwgJHNjYWxlLXo6ICRkZWZhdWx0LXNjYWxlLXosICRwZXJzcGVjdGl2ZTogZmFsc2UpIHtcbiAgJHRyYW5zOiBzY2FsZTNkKCRzY2FsZS14LCAkc2NhbGUteSwgJHNjYWxlLXopO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7IH1cblxuLy8gQGRvYyBvZmZcbi8vIFJvdGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCB0aGUgeiBheGlzICAoMkQpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy8gd2hlcmUgJ3JvdGF0aW9uJyBpcyBhbiBhbmdsZSBzZXQgaW4gZGVncmVlcyAoZGVnKSBvciByYWRpYW4gKHJhZCkgdW5pdHNcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlKCRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiByb3RhdGUoJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gQSBsb25nY3V0IGZvciAncm90YXRlJyBpbiBjYXNlIHlvdSBmb3JnZXQgdGhhdCAneicgaXMgaW1wbGllZFxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVaKCRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcm90YXRlKCRyb3RhdGUsICRwZXJzcGVjdGl2ZSwgJG9ubHkzZCk7IH1cblxuLy8gUm90YXRlIGFuIG9iamVjdCBhcm91bmQgdGhlIHggYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSByb3RhdGVYKCBbIHJvdGF0aW9uLCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlWCgkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsICRwZXJzcGVjdGl2ZTogZmFsc2UpIHtcbiAgJHRyYW5zOiByb3RhdGVYKCRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7IH1cblxuLy8gUm90YXRlIGFuIG9iamVjdCBhcm91bmQgdGhlIHkgYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVZKCRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSwgJHBlcnNwZWN0aXZlOiBmYWxzZSkge1xuICAkdHJhbnM6IHJvdGF0ZVkoJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTsgfVxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCBhbiBhcmJpdHJhcnkgYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgdmVjdG9yLXgsIHZlY3Rvci15LCB2ZWN0b3Iteiwgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy8gd2hlcmUgdGhlICd2ZWN0b3ItJyBhcmd1bWVudHMgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMuXG4vLyBUaGVzZSBudW1iZXJzIGFyZSBub3QgaW1wb3J0YW50IG9uIHRoZWlyIG93biwgYnV0IGluIHJlbGF0aW9uIHRvIG9uZSBhbm90aGVyXG4vLyBjcmVhdGluZyBhbiBheGlzIGZyb20geW91ciB0cmFuc2Zvcm0tb3JpZ2luLCBhbG9uZyB0aGUgYXhpcyBvZiBYeCA9IFl5ID0gWnouXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZTNkKCR2ZWN0b3IteDogJGRlZmF1bHQtdmVjdG9yLXgsICR2ZWN0b3IteTogJGRlZmF1bHQtdmVjdG9yLXksICR2ZWN0b3ItejogJGRlZmF1bHQtdmVjdG9yLXosICRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSwgJHBlcnNwZWN0aXZlOiBmYWxzZSkge1xuICAkdHJhbnM6IHJvdGF0ZTNkKCR2ZWN0b3IteCwgJHZlY3Rvci15LCAkdmVjdG9yLXosICRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7IH1cblxuLy8gQGRvYyBvZmZcbi8vIFRyYW5zbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBvciB5IGF4aXMgKDJEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS14LCB0cmFuc2xhdGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vLyB3aGVyZSB0aGUgJ3RyYW5zbGF0ZS0nIGFyZ3VtZW50cyBhY2NlcHQgYW55IGRpc3RhbmNlIGluIHBlcmNlbnRhZ2VzIG9yIGFic29sdXRlIChweCwgY20sIGluLCBlbSBldGMuLikgdW5pdHMuXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZSgkdHJhbnNsYXRlLXg6ICRkZWZhdWx0LXRyYW5zbGF0ZS14LCAkdHJhbnNsYXRlLXk6ICRkZWZhdWx0LXRyYW5zbGF0ZS15LCAkcGVyc3BlY3RpdmU6IGZhbHNlLCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHRyYW5zbGF0ZSgkdHJhbnNsYXRlLXgsICR0cmFuc2xhdGUteSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggYXhpcyAoMkQpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXgsIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGVYKCR0cmFucy14OiAkZGVmYXVsdC10cmFuc2xhdGUteCwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGVYKCR0cmFucy14KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTsgfVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeSBheGlzICgyRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZVkoJHRyYW5zLXk6ICRkZWZhdWx0LXRyYW5zbGF0ZS15LCAkcGVyc3BlY3RpdmU6IGZhbHNlLCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHRyYW5zbGF0ZVkoJHRyYW5zLXkpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpOyB9XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB6IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlWigkdHJhbnMtejogJGRlZmF1bHQtdHJhbnNsYXRlLXosICRwZXJzcGVjdGl2ZTogZmFsc2UpIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGVaKCR0cmFucy16KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpOyB9XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB4LCB5IGFuZCB6IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS14LCB0cmFuc2xhdGUteSwgdHJhbnNsYXRlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGUzZCgkdHJhbnNsYXRlLXg6ICRkZWZhdWx0LXRyYW5zbGF0ZS14LCAkdHJhbnNsYXRlLXk6ICRkZWZhdWx0LXRyYW5zbGF0ZS15LCAkdHJhbnNsYXRlLXo6ICRkZWZhdWx0LXRyYW5zbGF0ZS16LCAkcGVyc3BlY3RpdmU6IGZhbHNlKSB7XG4gICR0cmFuczogdHJhbnNsYXRlM2QoJHRyYW5zbGF0ZS14LCAkdHJhbnNsYXRlLXksICR0cmFuc2xhdGUteik7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTsgfVxuXG4vLyBAZG9jIG9mZlxuLy8gU2tldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFNrZXcgYW4gZWxlbWVudDpcbi8vXG4vLyAgICAgQGluY2x1ZGUgc2tldyggWyBza2V3LXgsIHNrZXcteSwgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSB0aGUgJ3NrZXctJyBhcmd1bWVudHMgYWNjZXB0IGNzcyBhbmdsZXMgaW4gZGVncmVlcyAoZGVnKSBvciByYWRpYW4gKHJhZCkgdW5pdHMuXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNrZXcoJHNrZXcteDogJGRlZmF1bHQtc2tldy14LCAkc2tldy15OiAkZGVmYXVsdC1za2V3LXksICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogc2tldygkc2tldy14LCAkc2tldy15KTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gU2tldyBhbiBlbGVtZW50IGFsb25nIHRoZSB4IGF4aXpcbi8vXG4vLyAgICAgQGluY2x1ZGUgc2tldyggWyBza2V3LXgsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNrZXdYKCRza2V3LXg6ICRkZWZhdWx0LXNrZXcteCwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiBza2V3WCgkc2tldy14KTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gU2tldyBhbiBlbGVtZW50IGFsb25nIHRoZSB5IGF4aXNcbi8vXG4vLyAgICAgQGluY2x1ZGUgc2tldyggWyBza2V3LXksIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNrZXdZKCRza2V3LXk6ICRkZWZhdWx0LXNrZXcteSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiBza2V3WSgkc2tldy15KTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gRnVsbCB0cmFuc2Zvcm0gbWl4aW5zXG4vLyBGb3Igc2V0dGluZ3MgYW55IGNvbWJpbmF0aW9uIG9mIHRyYW5zZm9ybXMgYXMgYXJndW1lbnRzXG4vLyBUaGVzZSBhcmUgY29tcGxleCBhbmQgbm90IGhpZ2hseSByZWNvbW1lbmRlZCBmb3IgZGFpbHkgdXNlLiBUaGV5IGFyZSBtYWlubHlcbi8vIGhlcmUgZm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgcHVycG9zZXMuXG4vL1xuLy8gKiB0aGV5IGluY2x1ZGUgb3JpZ2luIGFkanVzdG1lbnRzXG4vLyAqIHNjYWxlIHRha2VzIGEgbXVsdGlwbGllciAodW5pdGxlc3MpLCByb3RhdGUgYW5kIHNrZXcgdGFrZSBkZWdyZWVzIChkZWcpXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIGNyZWF0ZS10cmFuc2Zvcm0oJHBlcnNwZWN0aXZlOiBmYWxzZSwgJHNjYWxlLXg6IGZhbHNlLCAkc2NhbGUteTogZmFsc2UsICRzY2FsZS16OiBmYWxzZSwgJHJvdGF0ZS14OiBmYWxzZSwgJHJvdGF0ZS15OiBmYWxzZSwgJHJvdGF0ZS16OiBmYWxzZSwgJHJvdGF0ZTNkOiBmYWxzZSwgJHRyYW5zLXg6IGZhbHNlLCAkdHJhbnMteTogZmFsc2UsICR0cmFucy16OiBmYWxzZSwgJHNrZXcteDogZmFsc2UsICRza2V3LXk6IGZhbHNlLCAkb3JpZ2luLXg6IGZhbHNlLCAkb3JpZ2luLXk6IGZhbHNlLCAkb3JpZ2luLXo6IGZhbHNlLCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHVucXVvdGUoXCJcIik7XG4gIC8vIHBlcnNwZWN0aXZlXG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKTsgfVxuICAvLyBzY2FsZVxuICBAaWYgJHNjYWxlLXggYW5kICRzY2FsZS15IHtcbiAgICBAaWYgJHNjYWxlLXoge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgc2NhbGUzZCgkc2NhbGUteCwgJHNjYWxlLXksICRzY2FsZS16KTsgfVxuICAgIEBlbHNlIHtcbiAgICAgICR0cmFuczogJHRyYW5zIHNjYWxlKCRzY2FsZS14LCAkc2NhbGUteSk7IH0gfVxuICBAZWxzZSB7XG4gICAgQGlmICRzY2FsZS14IHtcbiAgICAgICR0cmFuczogJHRyYW5zIHNjYWxlWCgkc2NhbGUteCk7IH1cbiAgICBAaWYgJHNjYWxlLXkge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgc2NhbGVZKCRzY2FsZS15KTsgfVxuICAgIEBpZiAkc2NhbGUteiB7XG4gICAgICAkdHJhbnM6ICR0cmFucyBzY2FsZVooJHNjYWxlLXopOyB9IH1cbiAgLy8gcm90YXRlXG4gIEBpZiAkcm90YXRlLXgge1xuICAgICR0cmFuczogJHRyYW5zIHJvdGF0ZVgoJHJvdGF0ZS14KTsgfVxuICBAaWYgJHJvdGF0ZS15IHtcbiAgICAkdHJhbnM6ICR0cmFucyByb3RhdGVZKCRyb3RhdGUteSk7IH1cbiAgQGlmICRyb3RhdGUteiB7XG4gICAgJHRyYW5zOiAkdHJhbnMgcm90YXRlWigkcm90YXRlLXopOyB9XG4gIEBpZiAkcm90YXRlM2Qge1xuICAgICR0cmFuczogJHRyYW5zIHJvdGF0ZTNkKCRyb3RhdGUzZCk7IH1cbiAgLy8gdHJhbnNsYXRlXG4gIEBpZiAkdHJhbnMteCBhbmQgJHRyYW5zLXkge1xuICAgIEBpZiAkdHJhbnMteiB7XG4gICAgICAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGUzZCgkdHJhbnMteCwgJHRyYW5zLXksICR0cmFucy16KTsgfVxuICAgIEBlbHNlIHtcbiAgICAgICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZSgkdHJhbnMteCwgJHRyYW5zLXkpOyB9IH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkdHJhbnMteCB7XG4gICAgICAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGVYKCR0cmFucy14KTsgfVxuICAgIEBpZiAkdHJhbnMteSB7XG4gICAgICAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGVZKCR0cmFucy15KTsgfVxuICAgIEBpZiAkdHJhbnMteiB7XG4gICAgICAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGVaKCR0cmFucy16KTsgfSB9XG4gIC8vIHNrZXdcbiAgQGlmICRza2V3LXggYW5kICRza2V3LXkge1xuICAgICR0cmFuczogJHRyYW5zIHNrZXcoJHNrZXcteCwgJHNrZXcteSk7IH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkc2tldy14IHtcbiAgICAgICR0cmFuczogJHRyYW5zIHNrZXdYKCRza2V3LXgpOyB9XG4gICAgQGlmICRza2V3LXkge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgc2tld1koJHNrZXcteSk7IH0gfVxuICAvLyBhcHBseSBpdCFcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oJG9yaWdpbi14LCAkb3JpZ2luLXksICRvcmlnaW4teiwgJG9ubHkzZCk7IH1cblxuLy8gQSBzaW1wbGlmaWVkIHNldCBvZiBvcHRpb25zXG4vLyBiYWNrd2FyZHMtY29tcGF0aWJsZSB3aXRoIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSAndHJhbnNmb3JtJyBtaXhpblxuQG1peGluIHNpbXBsZS10cmFuc2Zvcm0oJHNjYWxlOiBmYWxzZSwgJHJvdGF0ZTogZmFsc2UsICR0cmFucy14OiBmYWxzZSwgJHRyYW5zLXk6IGZhbHNlLCAkc2tldy14OiBmYWxzZSwgJHNrZXcteTogZmFsc2UsICRvcmlnaW4teDogZmFsc2UsICRvcmlnaW4teTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgY3JlYXRlLXRyYW5zZm9ybShmYWxzZSwgJHNjYWxlLCAkc2NhbGUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsICRyb3RhdGUsIGZhbHNlLCAkdHJhbnMteCwgJHRyYW5zLXksIGZhbHNlLCAkc2tldy14LCAkc2tldy15LCAkb3JpZ2luLXgsICRvcmlnaW4teSwgZmFsc2UsIGZhbHNlKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDU1MgVHJhbnNpdGlvbnNcbi8vIEN1cnJlbnRseSBvbmx5IHdvcmtzIGluIFdlYmtpdC5cbi8vXG4vLyAqIGV4cGVjdGVkIGluIENTUzMsIEZpcmVGb3ggMy42LzcgYW5kIE9wZXJhIFByZXN0byAyLjNcbi8vICogV2UnbGwgYmUgcHJlcGFyZWQuXG4vL1xuLy8gSW5jbHVkaW5nIHRoaXMgc3VibW9kdWxlIHNldHMgZm9sbG93aW5nIGRlZmF1bHRzIGZvciB0aGUgbWl4aW5zOlxuLy9cbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5IDogYWxsXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbiA6IDFzXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbiA6IGZhbHNlXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSAgICA6IGZhbHNlXG4vL1xuLy8gT3ZlcnJpZGUgdGhlbSBpZiB5b3UgbGlrZS4gVGltaW5nLWZ1bmN0aW9uIGFuZCBkZWxheSBhcmUgc2V0IHRvIGZhbHNlIGZvciBicm93c2VyIGRlZmF1bHRzIChlYXNlLCAwcykuXG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHk6IGFsbCAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMXMgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb246IGZhbHNlICFkZWZhdWx0O1xuXG4kZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5OiBmYWxzZSAhZGVmYXVsdDtcblxuJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlczogdHJhbnNmb3JtLCB0cmFuc2Zvcm0tb3JpZ2luICFkZWZhdWx0O1xuXG4vLyBPbmUgb3IgbW9yZSBwcm9wZXJ0aWVzIHRvIHRyYW5zaXRpb25cbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogYWxzbyBhY2NlcHRzIFwiYWxsXCIgb3IgXCJub25lXCJcblxuQG1peGluIHRyYW5zaXRpb24tcHJvcGVydHkoJHByb3BlcnR5LTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHksICRwcm9wZXJ0eS0yOiBmYWxzZSwgJHByb3BlcnR5LTM6IGZhbHNlLCAkcHJvcGVydHktNDogZmFsc2UsICRwcm9wZXJ0eS01OiBmYWxzZSwgJHByb3BlcnR5LTY6IGZhbHNlLCAkcHJvcGVydHktNzogZmFsc2UsICRwcm9wZXJ0eS04OiBmYWxzZSwgJHByb3BlcnR5LTk6IGZhbHNlLCAkcHJvcGVydHktMTA6IGZhbHNlKSB7XG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eS0xKSA9PSBzdHJpbmcge1xuICAgICRwcm9wZXJ0eS0xOiB1bnF1b3RlKCRwcm9wZXJ0eS0xKTsgfVxuICAkcHJvcGVydGllczogY29tcGFjdCgkcHJvcGVydHktMSwgJHByb3BlcnR5LTIsICRwcm9wZXJ0eS0zLCAkcHJvcGVydHktNCwgJHByb3BlcnR5LTUsICRwcm9wZXJ0eS02LCAkcHJvcGVydHktNywgJHByb3BlcnR5LTgsICRwcm9wZXJ0eS05LCAkcHJvcGVydHktMTApO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLXdlYmtpdCwgJHByb3BlcnRpZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLW1veiwgJHByb3BlcnRpZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby10cmFuc2l0aW9uLXByb3BlcnR5OiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtbywgJHByb3BlcnRpZXMpOyB9XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6ICRwcm9wZXJ0aWVzOyB9XG5cbi8vIE9uZSBvciBtb3JlIGR1cmF0aW9ucyBpbiBzZWNvbmRzXG4vL1xuLy8gKiBmb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIHRoZXNlIGR1cmF0aW9ucyB3aWxsIGFmZmVjdCB0aGUgcHJvcGVydGllcyBpbiB0aGUgc2FtZSBsaXN0IHBvc2l0aW9uXG5cbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uKCRkdXJhdGlvbi0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uLCAkZHVyYXRpb24tMjogZmFsc2UsICRkdXJhdGlvbi0zOiBmYWxzZSwgJGR1cmF0aW9uLTQ6IGZhbHNlLCAkZHVyYXRpb24tNTogZmFsc2UsICRkdXJhdGlvbi02OiBmYWxzZSwgJGR1cmF0aW9uLTc6IGZhbHNlLCAkZHVyYXRpb24tODogZmFsc2UsICRkdXJhdGlvbi05OiBmYWxzZSwgJGR1cmF0aW9uLTEwOiBmYWxzZSkge1xuICBAaWYgdHlwZS1vZigkZHVyYXRpb24tMSkgPT0gc3RyaW5nIHtcbiAgICAkZHVyYXRpb24tMTogdW5xdW90ZSgkZHVyYXRpb24tMSk7IH1cbiAgJGR1cmF0aW9uczogY29tcGFjdCgkZHVyYXRpb24tMSwgJGR1cmF0aW9uLTIsICRkdXJhdGlvbi0zLCAkZHVyYXRpb24tNCwgJGR1cmF0aW9uLTUsICRkdXJhdGlvbi02LCAkZHVyYXRpb24tNywgJGR1cmF0aW9uLTgsICRkdXJhdGlvbi05LCAkZHVyYXRpb24tMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNpdGlvbi1kdXJhdGlvbiwgJGR1cmF0aW9ucywgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBPbmUgb3IgbW9yZSB0aW1pbmcgZnVuY3Rpb25zXG4vL1xuLy8gKiBbIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dCB8IGN1YmljLWJlemllcih4MSwgeTEsIHgyLCB5MildXG4vLyAqIEZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogVGhlc2UgZnVuY3Rpb25zIHdpbGwgZWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKCRmdW5jdGlvbi0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uLCAkZnVuY3Rpb24tMjogZmFsc2UsICRmdW5jdGlvbi0zOiBmYWxzZSwgJGZ1bmN0aW9uLTQ6IGZhbHNlLCAkZnVuY3Rpb24tNTogZmFsc2UsICRmdW5jdGlvbi02OiBmYWxzZSwgJGZ1bmN0aW9uLTc6IGZhbHNlLCAkZnVuY3Rpb24tODogZmFsc2UsICRmdW5jdGlvbi05OiBmYWxzZSwgJGZ1bmN0aW9uLTEwOiBmYWxzZSkge1xuICAkZnVuY3Rpb24tMTogdW5xdW90ZSgkZnVuY3Rpb24tMSk7XG4gICRmdW5jdGlvbnM6IGNvbXBhY3QoJGZ1bmN0aW9uLTEsICRmdW5jdGlvbi0yLCAkZnVuY3Rpb24tMywgJGZ1bmN0aW9uLTQsICRmdW5jdGlvbi01LCAkZnVuY3Rpb24tNiwgJGZ1bmN0aW9uLTcsICRmdW5jdGlvbi04LCAkZnVuY3Rpb24tOSwgJGZ1bmN0aW9uLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkZnVuY3Rpb25zLCAtbW96LCAtd2Via2l0LCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIE9uZSBvciBtb3JlIHRyYW5zaXRpb24tZGVsYXlzIGluIHNlY29uZHNcbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogdGhlc2UgZGVsYXlzIHdpbGwgZWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tZGVsYXkoJGRlbGF5LTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXksICRkZWxheS0yOiBmYWxzZSwgJGRlbGF5LTM6IGZhbHNlLCAkZGVsYXktNDogZmFsc2UsICRkZWxheS01OiBmYWxzZSwgJGRlbGF5LTY6IGZhbHNlLCAkZGVsYXktNzogZmFsc2UsICRkZWxheS04OiBmYWxzZSwgJGRlbGF5LTk6IGZhbHNlLCAkZGVsYXktMTA6IGZhbHNlKSB7XG4gIEBpZiB0eXBlLW9mKCRkZWxheS0xKSA9PSBzdHJpbmcge1xuICAgICRkZWxheS0xOiB1bnF1b3RlKCRkZWxheS0xKTsgfVxuICAkZGVsYXlzOiBjb21wYWN0KCRkZWxheS0xLCAkZGVsYXktMiwgJGRlbGF5LTMsICRkZWxheS00LCAkZGVsYXktNSwgJGRlbGF5LTYsICRkZWxheS03LCAkZGVsYXktOCwgJGRlbGF5LTksICRkZWxheS0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2l0aW9uLWRlbGF5LCAkZGVsYXlzLCAtbW96LCAtd2Via2l0LCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFRyYW5zaXRpb24gYWxsLWluLW9uZSBzaG9ydGhhbmRcblxuQG1peGluIHNpbmdsZS10cmFuc2l0aW9uKCRwcm9wZXJ0eTogJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSwgJGR1cmF0aW9uOiAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uLCAkZnVuY3Rpb246ICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24sICRkZWxheTogJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSkge1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKGNvbXBhY3QoJHByb3BlcnR5ICRkdXJhdGlvbiAkZnVuY3Rpb24gJGRlbGF5KSk7IH1cblxuQG1peGluIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tMTogZGVmYXVsdCwgJHRyYW5zaXRpb24tMjogZmFsc2UsICR0cmFuc2l0aW9uLTM6IGZhbHNlLCAkdHJhbnNpdGlvbi00OiBmYWxzZSwgJHRyYW5zaXRpb24tNTogZmFsc2UsICR0cmFuc2l0aW9uLTY6IGZhbHNlLCAkdHJhbnNpdGlvbi03OiBmYWxzZSwgJHRyYW5zaXRpb24tODogZmFsc2UsICR0cmFuc2l0aW9uLTk6IGZhbHNlLCAkdHJhbnNpdGlvbi0xMDogZmFsc2UpIHtcbiAgQGlmICR0cmFuc2l0aW9uLTEgPT0gZGVmYXVsdCB7XG4gICAgJHRyYW5zaXRpb24tMTogY29tcGFjdCgkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24gJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5KTsgfVxuICAkdHJhbnNpdGlvbnM6IGZhbHNlO1xuICBAaWYgdHlwZS1vZigkdHJhbnNpdGlvbi0xKSA9PSBsaXN0IGFuZCB0eXBlLW9mKG50aCgkdHJhbnNpdGlvbi0xLCAxKSkgPT0gbGlzdCB7XG4gICAgJHRyYW5zaXRpb25zOiBqb2luKCR0cmFuc2l0aW9uLTEsIGNvbXBhY3QoJHRyYW5zaXRpb24tMiwgJHRyYW5zaXRpb24tMywgJHRyYW5zaXRpb24tNCwgJHRyYW5zaXRpb24tNSwgJHRyYW5zaXRpb24tNiwgJHRyYW5zaXRpb24tNywgJHRyYW5zaXRpb24tOCwgJHRyYW5zaXRpb24tOSwgJHRyYW5zaXRpb24tMTApLCBjb21tYSk7IH1cbiAgQGVsc2Uge1xuICAgICR0cmFuc2l0aW9uczogY29tcGFjdCgkdHJhbnNpdGlvbi0xLCAkdHJhbnNpdGlvbi0yLCAkdHJhbnNpdGlvbi0zLCAkdHJhbnNpdGlvbi00LCAkdHJhbnNpdGlvbi01LCAkdHJhbnNpdGlvbi02LCAkdHJhbnNpdGlvbi03LCAkdHJhbnNpdGlvbi04LCAkdHJhbnNpdGlvbi05LCAkdHJhbnNpdGlvbi0xMCk7IH1cbiAgJGRlbGF5czogY29tbWEtbGlzdCgpO1xuICAkaGFzLWRlbGF5czogZmFsc2U7XG4gICR3ZWJraXQtdmFsdWU6IGNvbW1hLWxpc3QoKTtcbiAgJG1vei12YWx1ZTogY29tbWEtbGlzdCgpO1xuICAkby12YWx1ZTogY29tbWEtbGlzdCgpO1xuICAvLyBUaGlzIGJsb2NrIGNhbiBiZSBtYWRlIGNvbnNpZGVyYWJseSBzaW1wbGVyIGF0IHRoZSBwb2ludCBpbiB0aW1lIHRoYXRcbiAgLy8gd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gZGVhbCB3aXRoIHRoZSBkaWZmZXJlbmNlcyBpbiBob3cgZGVsYXlzIGFyZSB0cmVhdGVkLlxuICBAZWFjaCAkdHJhbnNpdGlvbiBpbiAkdHJhbnNpdGlvbnMge1xuICAgIC8vIEV4dHJhY3QgdGhlIHZhbHVlcyBmcm9tIHRoZSBsaXN0XG4gICAgLy8gKHRoaXMgd291bGQgYmUgY2xlYW5lciBpZiBudGggdG9vayBhIDNyZCBhcmd1bWVudCB0byBwcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSkuXG4gICAgJHByb3BlcnR5OiBudGgoJHRyYW5zaXRpb24sIDEpO1xuICAgICRkdXJhdGlvbjogZmFsc2U7XG4gICAgJHRpbWluZy1mdW5jdGlvbjogZmFsc2U7XG4gICAgJGRlbGF5OiBmYWxzZTtcbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA+IDEge1xuICAgICAgJGR1cmF0aW9uOiBudGgoJHRyYW5zaXRpb24sIDIpOyB9XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAyIHtcbiAgICAgICR0aW1pbmctZnVuY3Rpb246IG50aCgkdHJhbnNpdGlvbiwgMyk7IH1cbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA+IDMge1xuICAgICAgJGRlbGF5OiBudGgoJHRyYW5zaXRpb24sIDQpO1xuICAgICAgJGhhcy1kZWxheXM6IHRydWU7IH1cbiAgICAvLyBJZiBhIGRlbGF5IGlzIHByb3ZpZGVkIHdpdGhvdXQgYSB0aW1pbmcgZnVuY3Rpb25cbiAgICBAaWYgaXMtdGltZSgkdGltaW5nLWZ1bmN0aW9uKSBhbmQgbm90ICRkZWxheSB7XG4gICAgICAkZGVsYXk6ICR0aW1pbmctZnVuY3Rpb247XG4gICAgICAkdGltaW5nLWZ1bmN0aW9uOiBmYWxzZTtcbiAgICAgICRoYXMtZGVsYXlzOiB0cnVlOyB9XG4gICAgLy8gS2VlcCBhIGxpc3Qgb2YgZGVsYXlzIGluIGNhc2Ugb25lIGlzIHNwZWNpZmllZFxuICAgICRkZWxheXM6IGFwcGVuZCgkZGVsYXlzLCBpZigkZGVsYXksICRkZWxheSwgMHMpKTtcbiAgICAkd2Via2l0LXZhbHVlOiBhcHBlbmQoJHdlYmtpdC12YWx1ZSwgY29tcGFjdChwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtd2Via2l0LCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uKSk7XG4gICAgJG1vei12YWx1ZTogYXBwZW5kKCRtb3otdmFsdWUsIGNvbXBhY3QocHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLW1veiwgJHByb3BlcnR5KSAkZHVyYXRpb24gJHRpbWluZy1mdW5jdGlvbiAkZGVsYXkpKTtcbiAgICAkby12YWx1ZTogYXBwZW5kKCRvLXZhbHVlLCBjb21wYWN0KHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC1vLCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uICRkZWxheSkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAkd2Via2l0LXZhbHVlO1xuICAgIC8vIG9sZCB3ZWJraXQgZG9lc24ndCBzdXBwb3J0IHRoZSBkZWxheSBwYXJhbWV0ZXIgaW4gdGhlIHNob3J0aGFuZCBzbyB3ZSBwcm9ncmVzc2l2ZWx5IGVuaGFuY2UgaXQuXG4gICAgQGlmICRoYXMtZGVsYXlzIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kZWxheTogJGRlbGF5czsgfSB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otdHJhbnNpdGlvbjogJG1vei12YWx1ZTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tdHJhbnNpdGlvbjogJG8tdmFsdWU7IH1cbiAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb25zOyB9XG5cbi8vIGNvZXJjZSBhIGxpc3QgdG8gYmUgY29tbWEgZGVsaW1pdGVkIG9yIG1ha2UgYSBuZXcsIGVtcHR5IGNvbW1hIGRlbGltaXRlZCBsaXN0LlxuQGZ1bmN0aW9uIGNvbW1hLWxpc3QoJGxpc3Q6ICgpKSB7XG4gIEByZXR1cm4gam9pbigoKSwgJGxpc3QsIGNvbW1hKTsgfVxuXG4vLyBSZXR1cm5zIGAkcHJvcGVydHlgIHdpdGggdGhlIGdpdmVuIHByZWZpeCBpZiBpdCBpcyBmb3VuZCBpbiBgJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlc2AuXG5AZnVuY3Rpb24gcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oJHByZWZpeCwgJHByb3BlcnR5KSB7XG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eSkgPT0gbGlzdCB7XG4gICAgJG5ldy1saXN0OiBjb21tYS1saXN0KCk7XG4gICAgQGVhY2ggJHYgaW4gJHByb3BlcnR5IHtcbiAgICAgICRuZXctbGlzdDogYXBwZW5kKCRuZXctbGlzdCwgcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oJHByZWZpeCwgJHYpKTsgfVxuICAgIEByZXR1cm4gJG5ldy1saXN0OyB9XG4gIEBlbHNlIHtcbiAgICBAaWYgaW5kZXgoJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlcywgJHByb3BlcnR5KSB7XG4gICAgICBAcmV0dXJuICN7JHByZWZpeH0tI3skcHJvcGVydHl9OyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiAkcHJvcGVydHk7IH0gfSB9XG5cbi8vIENoZWNrcyBpZiB0aGUgdmFsdWUgZ2l2ZW4gaXMgYSB1bml0IG9mIHRpbWUuXG5AZnVuY3Rpb24gaXMtdGltZSgkdmFsdWUpIHtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBudW1iZXIge1xuICAgIEByZXR1cm4gbm90IG5vdCBpbmRleChzIG1zLCB1bml0KCR2YWx1ZSkpOyB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ2hhbmdlIHRoZSBhcHBlYXJhbmNlIGZvciBNb3ppbGxhLCBXZWJraXQgYW5kIHBvc3NpYmx5IHRoZSBmdXR1cmUuXG4vLyBUaGUgYXBwZWFyYW5jZSBwcm9wZXJ0eSBpcyBjdXJyZW50bHkgbm90IHByZXNlbnQgaW4gYW55IG5ld2VyIENTUyBzcGVjaWZpY2F0aW9uLlxuLy9cbi8vIFRoZXJlIGlzIG5vIG9mZmljaWFsIGxpc3Qgb2YgYWNjZXB0ZWQgdmFsdWVzLCBidXQgeW91IG1pZ2h0IGNoZWNrIHRoZXNlIHNvdXJjZTpcbi8vICAgTW96aWxsYSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0NTUy8tbW96LWFwcGVhcmFuY2Vcbi8vICAgV2Via2l0ICA6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC93ZWJraXQtbWlycm9yL3NvdXJjZS9icm93c2UvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4/c3BlYz1zdm5mMWFlYTU1OWRjZDAyNWE4OTQ2YWE3ZGE2ZTRlODMwNmY1YzFiNjA0JnI9NjNjN2QxYWY0NDQzMGIzMTQyMzNmZWEzNDJjM2RkYjJhMDUyZTM2NVxuLy8gICAoc2VhcmNoIGZvciAnYXBwZWFyYW5jZScgd2l0aGluIHRoZSBwYWdlKVxuXG5AbWl4aW4gYXBwZWFyYW5jZSgkYXApIHtcbiAgJGFwOiB1bnF1b3RlKCRhcCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChhcHBlYXJhbmNlLCAkYXAsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFdlYmtpdCwgSUUxMCBhbmQgZnV0dXJlIHN1cHBvcnQgZm9yIFtDU1MgUmVnaW9uc10oaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1yZWdpb25zLylcbi8vXG4vLyAkdGFyZ2V0IGlzIGEgdmFsdWUgeW91IHVzZSB0byBsaW5rIHR3byByZWdpb25zIG9mIHlvdXIgY3NzLiBHaXZlIHRoZSBzb3VyY2Ugb2YgeW91ciBjb250ZW50IHRoZSBmbG93LWludG8gcHJvcGVydHksIGFuZCBnaXZlIHlvdXIgdGFyZ2V0IGNvbnRhaW5lciB0aGUgZmxvdy1mcm9tIHByb3BlcnR5LlxuLy9cbi8vIEZvciBhIHZpc3VhbCBleHBsYW5hdGlvbiwgc2VlIHRoZSBkaWFncmFtcyBhdCBDaHJpcyBDb3lpZXInc1xuLy8gW0NTUy1Ucmlja3NdKGh0dHA6Ly9jc3MtdHJpY2tzLmNvbS9jb250ZW50LWZvbGRpbmcvKVxuXG5AbWl4aW4gZmxvdy1pbnRvKCR0YXJnZXQpIHtcbiAgJHRhcmdldDogdW5xdW90ZSgkdGFyZ2V0KTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGZsb3ctaW50bywgJHRhcmdldCwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBub3Qgb2ZmaWNpYWwpOyB9XG5cbkBtaXhpbiBmbG93LWZyb20oJHRhcmdldCkge1xuICAkdGFyZ2V0OiB1bnF1b3RlKCR0YXJnZXQpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoZmxvdy1mcm9tLCAkdGFyZ2V0LCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG5vdCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gTWl4aW5zIHRvIHN1cHBvcnQgc3BlY2lmaWMgQ1NTIFRleHQgTGV2ZWwgMyBlbGVtZW50c1xuLy9cbi8vXG4vL1xuLy8gTWl4aW4gZm9yIHdvcmQtYnJlYWsgcHJvcGVydGllc1xuLy8gaHR0cDovL3d3dy53My5vcmcvY3NzMy10ZXh0LyN3b3JkLWJyZWFrXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgJHR5cGUgOiBub3JtYWwsIGtlZXAtYWxsLCBicmVhay1hbGxcbi8vXG4vLyBFeGFtcGxlOlxuLy8gICAgcC53b3JkQnJlYWsge0BpbmNsdWRlIHdvcmQtYnJlYWsoYnJlYWstYWxsKTt9XG4vL1xuLy8gV2hpY2ggZ2VuZXJhdGVzOlxuLy8gICAgcC53b3JkQnJlYWsge1xuLy8gICAgICAtbXMtd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8gICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7fVxuLy9cbkBtaXhpbiB3b3JkLWJyZWFrKCR2YWx1ZTogbm9ybWFsKSB7XG4gIEBpZiAkdmFsdWUgPT0gYnJlYWstYWxsIHtcbiAgICAvL01vc3QgYnJvd3NlcnMgaGFuZGxlIHRoZSBicmVhay1hbGwgY2FzZSB0aGUgc2FtZS4uLlxuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh3b3JkLWJyZWFrLCAkdmFsdWUsIG5vdCAtbW96LCBub3QgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTtcbiAgICAvL1dlYmtpdCBoYW5kbGVzIGJyZWFrLWFsbCBkaWZmZXJlbnRseS4uLiBhcyBicmVhay13b3JkXG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHdvcmQtYnJlYWssIGJyZWFrLXdvcmQsIG5vdCAtbW96LCBub3QgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh3b3JkLWJyZWFrLCAkdmFsdWUsIG5vdCAtbW96LCBub3QgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfSB9XG5cbi8vIE1peGluIGZvciB0aGUgaHlwaGVucyBwcm9wZXJ0eVxuLy9cbi8vIFczQyBzcGVjaWZpY2F0aW9uOiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXRleHQvI2h5cGhlbnNcbi8vICogbGVnYWwgdmFsdWVzIGZvciAkdHlwZSA6IGF1dG8sIG1hbnVhbCwgbm9uZVxuLy9cbi8vIEV4YW1wbGU6XG4vLyAgcCB7XG4vLyAgICBAaW5jbHVkZSBoeXBoZW5zKGF1dG8pO31cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vICBwIHtcbi8vICAgIC1tb3otaHlwaGVuczogYXV0bztcbi8vICAgIC13ZWJraXQtaHlwaGVuczogYXV0bztcbi8vICAgIGh5cGhlbnM6IGF1dG87fVxuLy9cbkBtaXhpbiBoeXBoZW5zKCR2YWx1ZTogYXV0bykge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoaHlwaGVucywgJHZhbHVlLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBNaXhpbiBmb3IgeC1icm93c2VyIGh5cGhlbmF0aW9uIGJhc2VkIG9uIEBhdWNoZW5iZXJnJ3MgcG9zdDpcbi8vIFJlbW92ZXMgdGhlIG5lZWQgZm9yIHRoZSA8d2JyLz4gSFRNTCB0YWdcbi8vIGh0dHA6Ly9ibG9nLmtlbm5ldGguaW8vYmxvZy8yMDEyLzAzLzA0L3dvcmQtd3JhcHBpbmctaHlwZXJuYXRpb24tdXNpbmctY3NzL1xuLy9cbi8vICBFeGFtcGxlOlxuLy8gIGRpdiB7QGluY2x1ZGUgaHlwaGVuYXRpb247fVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6XG4vLyAgICBkaXYge1xuLy8gICAgICAtbXMtd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8gICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4vLyAgICAgIC1tb3otaHlwaGVuczogYXV0bztcbi8vICAgICAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xuLy8gICAgICBoeXBoZW5zOiBhdXRvO31cbi8vXG5AbWl4aW4gaHlwaGVuYXRpb24ge1xuICBAaW5jbHVkZSB3b3JkLWJyZWFrKGJyZWFrLWFsbCk7XG4gIEBpbmNsdWRlIGh5cGhlbnM7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gUHJvdmlkZXMgY3Jvc3MtYnJvd3NlciBzdXBwb3J0IGZvciB0aGUgdXBjb21pbmcgKD8pIGNzczMgZmlsdGVyIHByb3BlcnR5LlxuLy9cbi8vIEVhY2ggZmlsdGVyIGFyZ3VtZW50IHNob3VsZCBhZGhlcmUgdG8gdGhlIHN0YW5kYXJkIGNzczMgc3ludGF4IGZvciB0aGVcbi8vIGZpbHRlciBwcm9wZXJ0eS5cbkBtaXhpbiBmaWx0ZXIoJGZpbHRlci0xLCAkZmlsdGVyLTI6IGZhbHNlLCAkZmlsdGVyLTM6IGZhbHNlLCAkZmlsdGVyLTQ6IGZhbHNlLCAkZmlsdGVyLTU6IGZhbHNlLCAkZmlsdGVyLTY6IGZhbHNlLCAkZmlsdGVyLTc6IGZhbHNlLCAkZmlsdGVyLTg6IGZhbHNlLCAkZmlsdGVyLTk6IGZhbHNlLCAkZmlsdGVyLTEwOiBmYWxzZSkge1xuICAkZmlsdGVyOiBjb21wYWN0KCRmaWx0ZXItMSwgJGZpbHRlci0yLCAkZmlsdGVyLTMsICRmaWx0ZXItNCwgJGZpbHRlci01LCAkZmlsdGVyLTYsICRmaWx0ZXItNywgJGZpbHRlci04LCAkZmlsdGVyLTksICRmaWx0ZXItMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoZmlsdGVyLCAkZmlsdGVyLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IHRydWU7XG5cbi8vIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSBTYXNzJ3MgQGV4dGVuZCBkaXJlY3RpdmUgdG8gYXBwbHkgdGhlIGJlaGF2aW9yXG4vLyB0byB5b3VyIFBJRSBlbGVtZW50cy4gVG8gYXNzaXN0IHlvdSwgQ29tcGFzcyBwcm92aWRlcyB0aGlzIHZhcmlhYmxlLlxuLy8gV2hlbiBzZXQsIGl0IHdpbGwgY2F1c2UgdGhlIGBAaW5jbHVkZSBwaWVgIG1peGluIHRvIGV4dGVuZCB0aGlzIGNsYXNzLlxuLy8gVGhlIGNsYXNzIG5hbWUgeW91IHByb3ZpZGUgc2hvdWxkICoqbm90KiogaW5jbHVkZSB0aGUgYC5gLlxuJHBpZS1iYXNlLWNsYXNzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgYXBwcm9hY2ggdG8gdXNpbmcgUElFLlxuLy8gQ2FuIGJlIG9uZSBvZjpcbi8vXG4vLyAqIHJlbGF0aXZlIChkZWZhdWx0KVxuLy8gKiB6LWluZGV4XG4vLyAqIG5vbmVcbiRwaWUtZGVmYXVsdC1hcHByb2FjaDogcmVsYXRpdmUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBsb2NhdGlvbiBvZiB5b3VyIFBJRSBiZWhhdmlvciBmaWxlXG4vLyBUaGlzIHNob3VsZCBiZSByb290LXJlbGF0aXZlIHRvIHlvdXIgd2ViIHNlcnZlclxuLy8gcmVsYXRpdmUgYXNzZXRzIGRvbid0IHdvcmsuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXRcbi8vIHlvdSBzZXQgdGhpcyB5b3Vyc2VsZi5cbiRwaWUtYmVoYXZpb3I6IHN0eWxlc2hlZXQtdXJsKFwiUElFLmh0Y1wiKSAhZGVmYXVsdDtcblxuLy8gV2hlbiB1c2luZyB0aGUgei1pbmRleCBhcHByb2FjaCwgdGhlXG4vLyBmaXJzdCBhbmNlc3RvciBvZiB0aGUgUElFIGVsZW1lbnQgYXRcbi8vIG9yIGJlZm9yZSB0aGUgY29udGFpbmVyJ3Mgb3BhcXVlIGJhY2tncm91bmRcbi8vIHNob3VsZCBoYXZlIGEgei1pbmRleCBzZXQgYXMgd2VsbCB0byBlbnN1cmVcbi8vIHByb3BlcnQgei1pbmRleCBzdGFja2luZy5cbi8vXG4vLyBUaGUgYCRwb3NpdGlvbmAgYXJndW1lbnQgbXVzdCBiZSBzb21lIG5vbi1zdGF0aWNcbi8vIHZhbHVlIChhYnNvbHV0ZSwgcmVsYXRpdmUsIGV0Yy4pXG5AbWl4aW4gcGllLWNvbnRhaW5lcigkei1pbmRleDogMCwgJHBvc2l0aW9uOiByZWxhdGl2ZSkge1xuICB6LWluZGV4OiAkei1pbmRleDtcbiAgcG9zaXRpb246ICRwb3NpdGlvbjsgfVxuXG4vLyBQSUUgZWxlbWVudHMgbXVzdCBoYXZlIHRoaXMgYmVoYXZpb3IgYXR0YWNoZWQgdG8gdGhlbS5cbi8vIElFIGlzIGJyb2tlbiAtLSBpdCBkb2Vzbid0IHRoaW5rIG9mIGJlaGF2aW9yIHVybHMgYXNcbi8vIHJlbGF0aXZlIHRvIHRoZSBzdHlsZXNoZWV0LiBJdCBjb25zaWRlcnMgdGhlbSByZWxhdGl2ZVxuLy8gdG8gdGhlIHdlYnBhZ2UuIEFzIGEgcmVzdWx0LCB5b3UgY2Fubm90IHJlbGlhYmx5IHVzZVxuLy8gY29tcGFzcydzIHJlbGF0aXZlX2Fzc2V0cyB3aXRoIFBJRS5cbi8vXG4vLyAqIGAkYXBwcm9hY2hgIC0gb25lIG9mOiByZWxhdGl2ZSwgei1pbmRleCwgb3Igbm9uZVxuLy8gKiBgJHotaW5kZXhgIC0gd2hlbiB1c2luZyB0aGUgei1pbmRleCBhcHByb2FjaCwgdGhpc1xuLy8gICAgICAgICAgICAgICAgaXMgdGhlIHotaW5kZXggdGhhdCBpcyBhcHBsaWVkLlxuQG1peGluIHBpZS1lbGVtZW50KCRhcHByb2FjaDogJHBpZS1kZWZhdWx0LWFwcHJvYWNoLCAkei1pbmRleDogMCkge1xuICBiZWhhdmlvcjogJHBpZS1iZWhhdmlvcjtcbiAgQGlmICRhcHByb2FjaCA9PSByZWxhdGl2ZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gIEBlbHNlIGlmICRhcHByb2FjaCA9PSB6LWluZGV4IHtcbiAgICB6LWluZGV4OiAkei1pbmRleDsgfSB9XG5cbi8vIGEgc21hcnQgbWl4aW4gdGhhdCBrbm93cyB0byBleHRlbmQgb3IgaW5jbHVkZSBwaWUtZWxlbWVudCBhY2NvcmRpbmdcbi8vIHRvIHlvdXIgc3R5bGVzaGVldCdzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLlxuQG1peGluIHBpZSgkYmFzZS1jbGFzczogJHBpZS1iYXNlLWNsYXNzKSB7XG4gIEBpZiAkYmFzZS1jbGFzcyB7XG4gICAgQGV4dGVuZCAuI3skYmFzZS1jbGFzc307IH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHBpZS1lbGVtZW50OyB9IH1cblxuLy8gV2F0Y2ggYCRuYCBsZXZlbHMgb2YgYW5jZXN0b3JzIGZvciBjaGFuZ2VzIHRvIHRoZWlyIGNsYXNzIGF0dHJpYnV0ZVxuLy8gU28gdGhhdCBjYXNjYWRpbmcgc3R5bGVzIHdpbGwgd29yayBjb3JyZWN0bHkgb24gdGhlIFBJRSBlbGVtZW50LlxuQG1peGluIHBpZS13YXRjaC1hbmNlc3RvcnMoJG4pIHtcbiAgLXBpZS13YXRjaC1hbmNlc3RvcnM6ICRuOyB9XG4iLAoJCSIvLyBVc2VyIEludGVyZmFjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoaXMgZmlsZSBjYW4gYmUgZXhwYW5kZWQgdG8gaGFuZGxlIGFsbCB0aGUgdXNlciBpbnRlcmZhY2UgcHJvcGVydGllcyBhc1xuLy8gdGhleSBiZWNvbWUgYXZhaWxhYmxlIGluIGJyb3dzZXJzOlxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9XRC1jc3MzLXVzZXJpbnQtMjAwMDAyMTZcbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gVGhpcyBwcm9wZXJ0eSBjb250cm9scyB0aGUgc2VsZWN0aW9uIG1vZGVsIGFuZCBncmFudWxhcml0eSBvZiBhbiBlbGVtZW50LlxuLy9cbi8vIEBwYXJhbSAkc2VsZWN0XG4vLyAgIFsgbm9uZSB8IHRleHQgfCB0b2dnbGUgfCBlbGVtZW50IHwgZWxlbWVudHMgfCBhbGwgfCBpbmhlcml0IF1cbkBtaXhpbiB1c2VyLXNlbGVjdCgkc2VsZWN0KSB7XG4gICRzZWxlY3Q6IHVucXVvdGUoJHNlbGVjdCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh1c2VyLXNlbGVjdCwgJHNlbGVjdCwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCAta2h0bWwsIG9mZmljaWFsKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gVGhpcyBpcyB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIHRoZSBvdGhlciBtaXhpbnMgaW4gdGhpcyBtb2R1bGUuXG4vLyBJdCBpcyB0aGUgb25seSB3YXkgdG8gYWNjZXNzIHByZWZpeCBzdXBwb3J0IGZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3BlYy5cbi8vIERldmlhdGVzIGZyb20gY2Fub25pY2FsIENvbXBhc3MgaW1wbGVtZW50YXRpb24gYnkgZHJvcHBpbmcgc3VwcG9ydCBmb3Jcbi8vIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBGbGV4Ym94IHNwZWMuXG4vL1xuLy8gYCRwcm9wZXJ0aWVzYDogbWFwIG9mIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRoYXQgc2hvdWxkIGJlIHByZWZpeGVkXG5AbWl4aW4gZmxleGJveCgkcHJvcGVydGllcykge1xuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJHByb3AgPT0gZGlzcGxheSB7XG4gICAgICBAaW5jbHVkZSBleHBlcmltZW50YWwtdmFsdWUoZGlzcGxheSwgJHZhbHVlLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoJHByb3AsICR2YWx1ZSwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9IH0gfVxuXG4vLyBWYWx1ZXMgZm9yICRkaXNwbGF5IGFyZTogZmxleCAoZGVmYXVsdCksIGlubGluZS1mbGV4XG5AbWl4aW4gZGlzcGxheS1mbGV4KCRkaXNwbGF5OiBmbGV4KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGRpc3BsYXk6ICRkaXNwbGF5KSk7IH1cblxuLy8gVmFsdWVzOiByb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJGRpcmVjdGlvbikge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbikpOyB9XG5cbi8vIFZhbHVlczogbm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZVxuQG1peGluIGZsZXgtd3JhcCgkd3JhcCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LXdyYXA6ICR3cmFwKSk7IH1cblxuLy8gU2hvcnRoYW5kIGZvciBmbGV4LWRpcmVjdGlvbiBhbmQgZmxleC13cmFwLlxuQG1peGluIGZsZXgtZmxvdygkZmxvdykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWZsb3c6ICRmbG93KSk7IH1cblxuLy8gQWNjZXB0cyBhbiBpbnRlZ2VyXG5AbWl4aW4gb3JkZXIoJG9yZGVyKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKG9yZGVyOiAkb3JkZXIpKTsgfVxuXG4vLyBTaG9ydGhhbmQgZm9yIGZsZXgtZ3JvdywgZmxleC1zaHJpbmsgYW5kIG9wdGlvbmFsbHkgZmxleC1iYXNpcy5cbi8vIFNwYWNlIHNlcGFyYXRlZCwgaW4gdGhhdCBvcmRlci5cbkBtaXhpbiBmbGV4KCRmbGV4KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXg6ICRmbGV4KSk7IH1cblxuLy8gQWNjZXB0cyBhIG51bWJlci5cbkBtaXhpbiBmbGV4LWdyb3coJGZsZXgtZ3Jvdykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWdyb3c6ICRmbGV4LWdyb3cpKTsgfVxuXG4vLyBBY2NlcHRzIGEgbnVtYmVyLlxuQG1peGluIGZsZXgtc2hyaW5rKCRmbGV4LXNocmluaykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LXNocmluazogJGZsZXgtc2hyaW5rKSk7IH1cblxuLy8gQWNjZXB0cyBhbnkgbGVnYWwgdmFsdWUgZm9yIHRoZSB3aWR0aCBwcm9wZXJ0eS5cbkBtaXhpbiBmbGV4LWJhc2lzKCRmbGV4LWJhc2lzKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtYmFzaXM6ICRmbGV4LWJhc2lzKSk7IH1cblxuLy8gTGVnYWwgdmFsdWVzOiBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kXG5AbWl4aW4ganVzdGlmeS1jb250ZW50KCRqdXN0aWZ5LWNvbnRlbnQpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoanVzdGlmeS1jb250ZW50OiAkanVzdGlmeS1jb250ZW50KSk7IH1cblxuLy8gTGVnYWwgdmFsdWVzOiBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1pdGVtcygkYWxpZ24taXRlbXMpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoYWxpZ24taXRlbXM6ICRhbGlnbi1pdGVtcykpOyB9XG5cbi8vIExlZ2FsIHZhbHVlczogYXV0byB8IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaFxuQG1peGluIGFsaWduLXNlbGYoJGFsaWduLXNlbGYpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoYWxpZ24tc2VsZjogJGFsaWduLXNlbGYpKTsgfVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoXG5AbWl4aW4gYWxpZ24tY29udGVudCgkYWxpZ24tY29udGVudCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChhbGlnbi1jb250ZW50OiAkYWxpZ24tY29udGVudCkpOyB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDU1MgQW5pbWF0aW9ucy5cblxuLy8gQXBwbHkgYW4gYW5pbWF0aW9uIHByb3BlcnR5IGFuZCB2YWx1ZSB3aXRoIHRoZSBjb3JyZWN0IGJyb3dzZXIgc3VwcG9ydFxuQG1peGluIGFuaW1hdGlvbi1zdXBwb3J0KCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIE5hbWUgb2YgYW55IGFuaW1hdGlvbiBhcyBhIHN0cmluZy5cbiRkZWZhdWx0LWFuaW1hdGlvbi1uYW1lOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRHVyYXRpb24gb2YgdGhlIGVudGlyZSBhbmltYXRpb24gaW4gc2Vjb25kcy5cbiRkZWZhdWx0LWFuaW1hdGlvbi1kdXJhdGlvbjogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIERlbGF5IGZvciBzdGFydCBvZiBhbmltYXRpb24gaW4gc2Vjb25kcy5cbiRkZWZhdWx0LWFuaW1hdGlvbi1kZWxheTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRoZSB0aW1pbmcgZnVuY3Rpb24ocykgdG8gYmUgdXNlZCBiZXR3ZWVuIGtleWZyYW1lcy4gW2Vhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dCB8IGN1YmljLWJlemllcigkbnVtYmVyLCAkbnVtYmVyLCAkbnVtYmVyLCAkbnVtYmVyKV1cbiRkZWZhdWx0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGUgbnVtYmVyIG9mIHRpbWVzIGFuIGFuaW1hdGlvbiBjeWNsZSBpcyBwbGF5ZWQuIFtpbmZpbml0ZSB8ICRudW1iZXJdXG4kZGVmYXVsdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gV2hldGhlciBvciBub3QgdGhlIGFuaW1hdGlvbiBzaG91bGQgcGxheSBpbiByZXZlcnNlIG9uIGFsdGVybmF0ZSBjeWNsZXMuIFtub3JtYWwgfCBhbHRlcm5hdGVdXG4kZGVmYXVsdC1hbmltYXRpb24tZGlyZWN0aW9uOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gV2hhdCB2YWx1ZXMgYXJlIGFwcGxpZWQgYnkgdGhlIGFuaW1hdGlvbiBvdXRzaWRlIHRoZSB0aW1lIGl0IGlzIGV4ZWN1dGluZy4gW25vbmUgfCBmb3J3YXJkcyB8IGJhY2t3YXJkcyB8IGJvdGhdXG4kZGVmYXVsdC1hbmltYXRpb24tZmlsbC1tb2RlOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gV2hldGhlciB0aGUgYW5pbWF0aW9uIGlzIHJ1bm5pbmcgb3IgcGF1c2VkLiBbcnVubmluZyB8IHBhdXNlZF1cbiRkZWZhdWx0LWFuaW1hdGlvbi1wbGF5LXN0YXRlOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gQ3JlYXRlIGEgbmFtZWQgYW5pbWF0aW9uIHNlcXVlbmNlIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gZWxlbWVudHMgbGF0ZXIuXG4vL1xuLy8gICAgICRuYW1lICAgIC0gVGhlIG5hbWUgb2YgeW91ciBhbmltYXRpb24uXG4vLyAgICAgQGNvbnRlbnQgLSBUaGUga2V5ZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uXG5AbWl4aW4ga2V5ZnJhbWVzKCRuYW1lLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICRtb3oge1xuICAgIEBpbmNsdWRlIHdpdGgtb25seS1zdXBwb3J0LWZvcigkbW96OiB0cnVlKSB7XG4gICAgICBALW1vei1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgICBAY29udGVudDsgfSB9IH1cbiAgQGlmICR3ZWJraXQge1xuICAgIEBpbmNsdWRlIHdpdGgtb25seS1zdXBwb3J0LWZvcigkd2Via2l0OiB0cnVlKSB7XG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgICBAY29udGVudDsgfSB9IH1cbiAgQGlmICRvIHtcbiAgICBAaW5jbHVkZSB3aXRoLW9ubHktc3VwcG9ydC1mb3IoJG86IHRydWUpIHtcbiAgICAgIEAtby1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgICBAY29udGVudDsgfSB9IH1cbiAgQGlmICRtcyB7XG4gICAgQGluY2x1ZGUgd2l0aC1vbmx5LXN1cHBvcnQtZm9yKCRtczogdHJ1ZSkge1xuICAgICAgQC1tcy1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgICBAY29udGVudDsgfSB9IH1cbiAgQGlmICRraHRtbCB7XG4gICAgQGluY2x1ZGUgd2l0aC1vbmx5LXN1cHBvcnQtZm9yKCRraHRtbDogdHJ1ZSkge1xuICAgICAgQC1raHRtbC1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgICBAY29udGVudDsgfSB9IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgQGluY2x1ZGUgd2l0aC1vbmx5LXN1cHBvcnQtZm9yIHtcbiAgICAgIEBrZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgICBAY29udGVudDsgfSB9IH0gfVxuXG4vLyBBcHBseSAxLTEwIGFuaW1hdGlvbiBuYW1lcy5cbkBtaXhpbiBhbmltYXRpb24tbmFtZSgkbmFtZS0xOiAkZGVmYXVsdC1hbmltYXRpb24tbmFtZSwgJG5hbWUtMjogZmFsc2UsICRuYW1lLTM6IGZhbHNlLCAkbmFtZS00OiBmYWxzZSwgJG5hbWUtNTogZmFsc2UsICRuYW1lLTY6IGZhbHNlLCAkbmFtZS03OiBmYWxzZSwgJG5hbWUtODogZmFsc2UsICRuYW1lLTk6IGZhbHNlLCAkbmFtZS0xMDogZmFsc2UpIHtcbiAgJG5hbWU6IGNvbXBhY3QoJG5hbWUtMSwgJG5hbWUtMiwgJG5hbWUtMywgJG5hbWUtNCwgJG5hbWUtNSwgJG5hbWUtNiwgJG5hbWUtNywgJG5hbWUtOCwgJG5hbWUtOSwgJG5hbWUtMTApO1xuICBAaW5jbHVkZSBhbmltYXRpb24tc3VwcG9ydChhbmltYXRpb24tbmFtZSwgJG5hbWUpOyB9XG5cbi8vIEFwcGx5IDEtMTAgYW5pbWF0aW9uIGR1cmF0aW9ucy5cbkBtaXhpbiBhbmltYXRpb24tZHVyYXRpb24oJGR1cmF0aW9uLTE6ICRkZWZhdWx0LWFuaW1hdGlvbi1kdXJhdGlvbiwgJGR1cmF0aW9uLTI6IGZhbHNlLCAkZHVyYXRpb24tMzogZmFsc2UsICRkdXJhdGlvbi00OiBmYWxzZSwgJGR1cmF0aW9uLTU6IGZhbHNlLCAkZHVyYXRpb24tNjogZmFsc2UsICRkdXJhdGlvbi03OiBmYWxzZSwgJGR1cmF0aW9uLTg6IGZhbHNlLCAkZHVyYXRpb24tOTogZmFsc2UsICRkdXJhdGlvbi0xMDogZmFsc2UpIHtcbiAgJGR1cmF0aW9uOiBjb21wYWN0KCRkdXJhdGlvbi0xLCAkZHVyYXRpb24tMiwgJGR1cmF0aW9uLTMsICRkdXJhdGlvbi00LCAkZHVyYXRpb24tNSwgJGR1cmF0aW9uLTYsICRkdXJhdGlvbi03LCAkZHVyYXRpb24tOCwgJGR1cmF0aW9uLTksICRkdXJhdGlvbi0xMCk7XG4gIEBpbmNsdWRlIGFuaW1hdGlvbi1zdXBwb3J0KGFuaW1hdGlvbi1kdXJhdGlvbiwgJGR1cmF0aW9uKTsgfVxuXG4vLyBBcHBseSAxLTEwIGFuaW1hdGlvbiBkZWxheXMuXG5AbWl4aW4gYW5pbWF0aW9uLWRlbGF5KCRkZWxheS0xOiAkZGVmYXVsdC1hbmltYXRpb24tZGVsYXksICRkZWxheS0yOiBmYWxzZSwgJGRlbGF5LTM6IGZhbHNlLCAkZGVsYXktNDogZmFsc2UsICRkZWxheS01OiBmYWxzZSwgJGRlbGF5LTY6IGZhbHNlLCAkZGVsYXktNzogZmFsc2UsICRkZWxheS04OiBmYWxzZSwgJGRlbGF5LTk6IGZhbHNlLCAkZGVsYXktMTA6IGZhbHNlKSB7XG4gICRkZWxheTogY29tcGFjdCgkZGVsYXktMSwgJGRlbGF5LTIsICRkZWxheS0zLCAkZGVsYXktNCwgJGRlbGF5LTUsICRkZWxheS02LCAkZGVsYXktNywgJGRlbGF5LTgsICRkZWxheS05LCAkZGVsYXktMTApO1xuICBAaW5jbHVkZSBhbmltYXRpb24tc3VwcG9ydChhbmltYXRpb24tZGVsYXksICRkZWxheSk7IH1cblxuLy8gQXBwbHkgMS0xMCBhbmltYXRpb24gdGltaW5nIGZ1bmN0aW9ucy5cbkBtaXhpbiBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKCRmdW5jdGlvbi0xOiAkZGVmYXVsdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkZnVuY3Rpb24tMjogZmFsc2UsICRmdW5jdGlvbi0zOiBmYWxzZSwgJGZ1bmN0aW9uLTQ6IGZhbHNlLCAkZnVuY3Rpb24tNTogZmFsc2UsICRmdW5jdGlvbi02OiBmYWxzZSwgJGZ1bmN0aW9uLTc6IGZhbHNlLCAkZnVuY3Rpb24tODogZmFsc2UsICRmdW5jdGlvbi05OiBmYWxzZSwgJGZ1bmN0aW9uLTEwOiBmYWxzZSkge1xuICAkZnVuY3Rpb246IGNvbXBhY3QoJGZ1bmN0aW9uLTEsICRmdW5jdGlvbi0yLCAkZnVuY3Rpb24tMywgJGZ1bmN0aW9uLTQsICRmdW5jdGlvbi01LCAkZnVuY3Rpb24tNiwgJGZ1bmN0aW9uLTcsICRmdW5jdGlvbi04LCAkZnVuY3Rpb24tOSwgJGZ1bmN0aW9uLTEwKTtcbiAgQGluY2x1ZGUgYW5pbWF0aW9uLXN1cHBvcnQoYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiwgJGZ1bmN0aW9uKTsgfVxuXG4vLyBBcHBseSAxLTEwIGFuaW1hdGlvbiBpdGVyYXRpb24gY291bnRzLlxuQG1peGluIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQoJGNvdW50LTE6ICRkZWZhdWx0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsICRjb3VudC0yOiBmYWxzZSwgJGNvdW50LTM6IGZhbHNlLCAkY291bnQtNDogZmFsc2UsICRjb3VudC01OiBmYWxzZSwgJGNvdW50LTY6IGZhbHNlLCAkY291bnQtNzogZmFsc2UsICRjb3VudC04OiBmYWxzZSwgJGNvdW50LTk6IGZhbHNlLCAkY291bnQtMTA6IGZhbHNlKSB7XG4gICRjb3VudDogY29tcGFjdCgkY291bnQtMSwgJGNvdW50LTIsICRjb3VudC0zLCAkY291bnQtNCwgJGNvdW50LTUsICRjb3VudC02LCAkY291bnQtNywgJGNvdW50LTgsICRjb3VudC05LCAkY291bnQtMTApO1xuICBAaW5jbHVkZSBhbmltYXRpb24tc3VwcG9ydChhbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCAkY291bnQpOyB9XG5cbi8vIEFwcGx5IDEtMTAgYW5pbWF0aW9uIGRpcmVjdGlvbnMuXG5AbWl4aW4gYW5pbWF0aW9uLWRpcmVjdGlvbigkZGlyZWN0aW9uLTE6ICRkZWZhdWx0LWFuaW1hdGlvbi1kaXJlY3Rpb24sICRkaXJlY3Rpb24tMjogZmFsc2UsICRkaXJlY3Rpb24tMzogZmFsc2UsICRkaXJlY3Rpb24tNDogZmFsc2UsICRkaXJlY3Rpb24tNTogZmFsc2UsICRkaXJlY3Rpb24tNjogZmFsc2UsICRkaXJlY3Rpb24tNzogZmFsc2UsICRkaXJlY3Rpb24tODogZmFsc2UsICRkaXJlY3Rpb24tOTogZmFsc2UsICRkaXJlY3Rpb24tMTA6IGZhbHNlKSB7XG4gICRkaXJlY3Rpb246IGNvbXBhY3QoJGRpcmVjdGlvbi0xLCAkZGlyZWN0aW9uLTIsICRkaXJlY3Rpb24tMywgJGRpcmVjdGlvbi00LCAkZGlyZWN0aW9uLTUsICRkaXJlY3Rpb24tNiwgJGRpcmVjdGlvbi03LCAkZGlyZWN0aW9uLTgsICRkaXJlY3Rpb24tOSwgJGRpcmVjdGlvbi0xMCk7XG4gIEBpbmNsdWRlIGFuaW1hdGlvbi1zdXBwb3J0KGFuaW1hdGlvbi1kaXJlY3Rpb24sICRkaXJlY3Rpb24pOyB9XG5cbi8vIEFwcGx5IDEtMTAgYW5pbWF0aW9uIGZpbGwgbW9kZXMuXG5AbWl4aW4gYW5pbWF0aW9uLWZpbGwtbW9kZSgkbW9kZS0xOiAkZGVmYXVsdC1hbmltYXRpb24tZmlsbC1tb2RlLCAkbW9kZS0yOiBmYWxzZSwgJG1vZGUtMzogZmFsc2UsICRtb2RlLTQ6IGZhbHNlLCAkbW9kZS01OiBmYWxzZSwgJG1vZGUtNjogZmFsc2UsICRtb2RlLTc6IGZhbHNlLCAkbW9kZS04OiBmYWxzZSwgJG1vZGUtOTogZmFsc2UsICRtb2RlLTEwOiBmYWxzZSkge1xuICAkbW9kZTogY29tcGFjdCgkbW9kZS0xLCAkbW9kZS0yLCAkbW9kZS0zLCAkbW9kZS00LCAkbW9kZS01LCAkbW9kZS02LCAkbW9kZS03LCAkbW9kZS04LCAkbW9kZS05LCAkbW9kZS0xMCk7XG4gIEBpbmNsdWRlIGFuaW1hdGlvbi1zdXBwb3J0KGFuaW1hdGlvbi1maWxsLW1vZGUsICRtb2RlKTsgfVxuXG4vLyBBcHBseSAxLTEwIGFuaW1hdGlvbiBwbGF5IHN0YXRlcy5cbkBtaXhpbiBhbmltYXRpb24tcGxheS1zdGF0ZSgkc3RhdGUtMTogJGRlZmF1bHQtYW5pbWF0aW9uLXBsYXktc3RhdGUsICRzdGF0ZS0yOiBmYWxzZSwgJHN0YXRlLTM6IGZhbHNlLCAkc3RhdGUtNDogZmFsc2UsICRzdGF0ZS01OiBmYWxzZSwgJHN0YXRlLTY6IGZhbHNlLCAkc3RhdGUtNzogZmFsc2UsICRzdGF0ZS04OiBmYWxzZSwgJHN0YXRlLTk6IGZhbHNlLCAkc3RhdGUtMTA6IGZhbHNlKSB7XG4gICRzdGF0ZTogY29tcGFjdCgkc3RhdGUtMSwgJHN0YXRlLTIsICRzdGF0ZS0zLCAkc3RhdGUtNCwgJHN0YXRlLTUsICRzdGF0ZS02LCAkc3RhdGUtNywgJHN0YXRlLTgsICRzdGF0ZS05LCAkc3RhdGUtMTApO1xuICBAaW5jbHVkZSBhbmltYXRpb24tc3VwcG9ydChhbmltYXRpb24tcGxheS1zdGF0ZSwgJHN0YXRlKTsgfVxuXG4vLyBTaG9ydGN1dCB0byBhcHBseSBhIG5hbWVkIGFuaW1hdGlvbiB0byBhbiBlbGVtZW50LCB3aXRoIGFsbCB0aGUgc2V0dGluZ3MuXG4vL1xuLy8gICAgICRhbmltYXRpb24tMSAgIDogTmFtZSBhbmQgc2V0dGluZ3MgZm9yIHRoZSBmaXJzdCBhbmltYXRpb24uIFs8dmFsdWVzPiB8IGRlZmF1bHRdXG4vLyAgICAgLi4uXG4vLyAgICAgJGFuaW1hdGlvbi0xMCAgOiBOYW1lIGFuZCBzZXR0aW5ncyBmb3IgdGhlIHRlbnRoIGFuaW1hdGlvbi4gPHZhbHVlcz5cbkBtaXhpbiBhbmltYXRpb24oJGFuaW1hdGlvbi0xOiBkZWZhdWx0LCAkYW5pbWF0aW9uLTI6IGZhbHNlLCAkYW5pbWF0aW9uLTM6IGZhbHNlLCAkYW5pbWF0aW9uLTQ6IGZhbHNlLCAkYW5pbWF0aW9uLTU6IGZhbHNlLCAkYW5pbWF0aW9uLTY6IGZhbHNlLCAkYW5pbWF0aW9uLTc6IGZhbHNlLCAkYW5pbWF0aW9uLTg6IGZhbHNlLCAkYW5pbWF0aW9uLTk6IGZhbHNlLCAkYW5pbWF0aW9uLTEwOiBmYWxzZSkge1xuICBAaWYgJGFuaW1hdGlvbi0xID09IGRlZmF1bHQge1xuICAgICRhbmltYXRpb24tMTogLWNvbXBhc3Mtc3BhY2UtbGlzdChjb21wYWN0KCRkZWZhdWx0LWFuaW1hdGlvbi1uYW1lLCAkZGVmYXVsdC1hbmltYXRpb24tZHVyYXRpb24sICRkZWZhdWx0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24sICRkZWZhdWx0LWFuaW1hdGlvbi1kZWxheSwgJGRlZmF1bHQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgJGRlZmF1bHQtYW5pbWF0aW9uLWRpcmVjdGlvbiwgJGRlZmF1bHQtYW5pbWF0aW9uLWZpbGwtbW9kZSwgJGRlZmF1bHQtYW5pbWF0aW9uLXBsYXktc3RhdGUpKTsgfVxuICAkYW5pbWF0aW9uOiBjb21wYWN0KCRhbmltYXRpb24tMSwgJGFuaW1hdGlvbi0yLCAkYW5pbWF0aW9uLTMsICRhbmltYXRpb24tNCwgJGFuaW1hdGlvbi01LCAkYW5pbWF0aW9uLTYsICRhbmltYXRpb24tNywgJGFuaW1hdGlvbi04LCAkYW5pbWF0aW9uLTksICRhbmltYXRpb24tMTApO1xuICBAaW5jbHVkZSBhbmltYXRpb24tc3VwcG9ydChhbmltYXRpb24sICRhbmltYXRpb24pOyB9XG4iLAoJCSJAbWl4aW4gc2V0LWV4cGVyaW1lbnRhbC1zdXBwb3J0KCRtb3o6IGZhbHNlLCAkd2Via2l0OiBmYWxzZSwgJG1zOiBmYWxzZSwgJG86IGZhbHNlLCAka2h0bWw6IGZhbHNlKSB7XG4gICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogJG1vejtcbiAgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6ICR3ZWJraXQ7XG4gICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiAkbXM7XG4gICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6ICRvO1xuICAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiAka2h0bWw7IH1cblxuQG1peGluIHdpdGgtb25seS1zdXBwb3J0LWZvcigkbW96OiBmYWxzZSwgJHdlYmtpdDogZmFsc2UsICRtczogZmFsc2UsICRvOiBmYWxzZSwgJGtodG1sOiBmYWxzZSkge1xuICAvLyBDYXB0dXJlIHRoZSBjdXJyZW50IHN0YXRlXG4gICRvcmlnaW5hbC1tb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTtcbiAgJG9yaWdpbmFsLXdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ7XG4gICRvcmlnaW5hbC1vOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhO1xuICAkb3JpZ2luYWwtbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0O1xuICAkb3JpZ2luYWwta2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw7XG4gIEBpbmNsdWRlIHNldC1leHBlcmltZW50YWwtc3VwcG9ydCgkbW96LCAkd2Via2l0LCAkbXMsICRvLCAka2h0bWwpO1xuICBAY29udGVudDtcbiAgQGluY2x1ZGUgc2V0LWV4cGVyaW1lbnRhbC1zdXBwb3J0KCRvcmlnaW5hbC1tb3osICRvcmlnaW5hbC13ZWJraXQsICRvcmlnaW5hbC1tcywgJG9yaWdpbmFsLW8sICRvcmlnaW5hbC1raHRtbCk7IH1cbiIsCgkJIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQW5pbWF0aW9ucyBmcm9tIEFuaW1hdGUuY3NzXG4vLyBBdXRob3IgOiBEYW4gRWRlblxuLy8gVVJMICAgIDogaHR0cDovL2RhbmVkZW4ubWUvYW5pbWF0ZS9cbi8vXG4vLyBBdHRlbnRpb24gc2Vla2Vyc1xuLy8gIC0gZmxhc2ggYm91bmNlIHNoYWtlIHRhZGEgc3dpbmcgd29iYmxlIHB1bHNlXG4vLyBGYWRpbmcgZW50cmFuY2VzXG4vLyAgLSBmYWRlSW4gZmFkZUluVXAgZmFkZUluRG93biBmYWRlSW5MZWZ0IGZhZGVJblJpZ2h0IGZhZGVJblVwQmlnIGZhZGVJbkRvd25CaWcgZmFkZUluTGVmdEJpZyBmYWRlSW5SaWdodEJpZ1xuLy8gRmFkaW5nIGV4aXRzXG4vLyAgLSBmYWRlT3V0IGZhZGVPdXRVcCBmYWRlT3V0RG93biBmYWRlT3V0TGVmdCBmYWRlT3V0UmlnaHQgZmFkZU91dFVwQmlnIGZhZGVPdXREb3duQmlnIGZhZGVPdXRMZWZ0QmlnIGZhZGVPdXRSaWdodEJpZ1xuLy8gQm91bmNpbmcgZW50cmFuY2VzXG4vLyAgLSBib3VuY2VJbiBib3VuY2VJbkRvd24gYm91bmNlSW5VcCBib3VuY2VJbkxlZnQgYm91bmNlSW5SaWdodFxuLy8gQm91bmNpbmcgZXhpdHNcbi8vICAtIGJvdW5jZU91dCBib3VuY2VPdXREb3duIGJvdW5jZU91dFVwIGJvdW5jZU91dExlZnQgYm91bmNlT3V0UmlnaHRcbi8vIFJvdGF0aW5nIGVudHJhbmNlc1xuLy8gIC0gcm90YXRlSW4gcm90YXRlSW5Eb3duTGVmdCByb3RhdGVJbkRvd25SaWdodCByb3RhdGVJblVwTGVmdCByb3RhdGVJblVwUmlnaHRcbi8vIFJvdGF0aW5nIGV4aXRzXG4vLyAgLSByb3RhdGVPdXQgcm90YXRlT3V0RG93bkxlZnQgcm90YXRlT3V0RG93blJpZ2h0IHJvdGF0ZU91dFVwTGVmdCByb3RhdGVPdXRVcFJpZ2h0XG4vLyBMaWdodHNwZWVkXG4vLyAgLSBsaWdodFNwZWVkSW4gbGlnaHRTcGVlZE91dFxuLy8gU3BlY2lhbHNcbi8vICAtIGhpbmdlIHJvbGxJbiByb2xsT3V0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbXBvcnQgXCJhbmltYXRlL2F0dGVudGlvbi1zZWVrZXJzXCI7XG5AaW1wb3J0IFwiYW5pbWF0ZS9ib3VuY2luZ1wiO1xuQGltcG9ydCBcImFuaW1hdGUvZmFkaW5nXCI7XG5AaW1wb3J0IFwiYW5pbWF0ZS9mbGlwcGVyc1wiO1xuQGltcG9ydCBcImFuaW1hdGUvbGlnaHRzcGVlZFwiO1xuQGltcG9ydCBcImFuaW1hdGUvcm90YXRpbmdcIjtcbkBpbXBvcnQgXCJhbmltYXRlL3NwZWNpYWxzXCI7XG4iLAoJCSIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmbGFzaCkge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMTsgfVxuICAyNSUge1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxOyB9XG4gIDc1JSB7XG4gICAgb3BhY2l0eTogMDsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhib3VuY2UpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMCk7IH1cbiAgMjAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApOyB9XG4gIDQwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgtMzBweCk7IH1cbiAgNTAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApOyB9XG4gIDYwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgtMTVweCk7IH1cbiAgODAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMCk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHNoYWtlKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDApOyB9XG4gIDEwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMTBweCk7IH1cbiAgMjAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDEwcHgpOyB9XG4gIDMwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMTBweCk7IH1cbiAgNDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDEwcHgpOyB9XG4gIDUwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMTBweCk7IH1cbiAgNjAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDEwcHgpOyB9XG4gIDcwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMTBweCk7IH1cbiAgODAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDEwcHgpOyB9XG4gIDkwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMTBweCk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgwKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXModGFkYSkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgc2NhbGUoMSk7IH1cbiAgMTAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oc2NhbGUoMC45KSByb3RhdGUoLTNkZWcpKTsgfVxuICAyMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShzY2FsZSgwLjkpIHJvdGF0ZSgtM2RlZykpOyB9XG4gIDMwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHNjYWxlKDEuMSkgcm90YXRlKDNkZWcpKTsgfVxuICA0MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShzY2FsZSgxLjEpIHJvdGF0ZSgtM2RlZykpOyB9XG4gIDUwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHNjYWxlKDEuMSkgcm90YXRlKDNkZWcpKTsgfVxuICA2MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShzY2FsZSgxLjEpIHJvdGF0ZSgtM2RlZykpOyB9XG4gIDcwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHNjYWxlKDEuMSkgcm90YXRlKDNkZWcpKTsgfVxuICA4MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShzY2FsZSgxLjEpIHJvdGF0ZSgtM2RlZykpOyB9XG4gIDkwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHNjYWxlKDEuMSkgcm90YXRlKDNkZWcpKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oc2NhbGUoMSkgcm90YXRlKDApKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoc3dpbmcpIHtcbiAgMjAlLCA0MCUsIDYwJSwgODAlLCAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKHRvcCBjZW50ZXIpOyB9XG4gIDIwJSB7XG4gICAgQGluY2x1ZGUgcm90YXRlKDE1ZGVnKTsgfVxuICA0MCUge1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgtMTBkZWcpOyB9XG4gIDYwJSB7XG4gICAgQGluY2x1ZGUgcm90YXRlKDVkZWcpOyB9XG4gIDgwJSB7XG4gICAgQGluY2x1ZGUgcm90YXRlKC01ZGVnKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSByb3RhdGUoMGRlZyk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHdvYmJsZSkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgwJSk7IH1cbiAgMTUlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtMjUlKSByb3RhdGUoLTVkZWcpKTsgfVxuICAzMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKDIwJSkgcm90YXRlKDNkZWcpKTsgfVxuICA0NSUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC0xNSUpIHJvdGF0ZSgtM2RlZykpOyB9XG4gIDYwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoMTAlKSByb3RhdGUoMmRlZykpOyB9XG4gIDc1JSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUlKSByb3RhdGUoLTFkZWcpKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgwJSkpOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhwdWxzZSkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgc2NhbGUoMSk7IH1cbiAgNTAlIHtcbiAgICBAaW5jbHVkZSBzY2FsZSgxLjEpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHNjYWxlKDEpOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyh3aWdnbGUpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHNrZXdYKDlkZWcpOyB9XG4gIDEwJSB7XG4gICAgQGluY2x1ZGUgc2tld1goLThkZWcpOyB9XG4gIDIwJSB7XG4gICAgQGluY2x1ZGUgc2tld1goN2RlZyk7IH1cbiAgMzAlIHtcbiAgICBAaW5jbHVkZSBza2V3WCgtNmRlZyk7IH1cbiAgNDAlIHtcbiAgICBAaW5jbHVkZSBza2V3WCg1ZGVnKTsgfVxuICA1MCUge1xuICAgIEBpbmNsdWRlIHNrZXdYKC00ZGVnKTsgfVxuICA2MCUge1xuICAgIEBpbmNsdWRlIHNrZXdYKDNkZWcpOyB9XG4gIDcwJSB7XG4gICAgQGluY2x1ZGUgc2tld1goLTJkZWcpOyB9XG4gIDgwJSB7XG4gICAgQGluY2x1ZGUgc2tld1goMWRlZyk7IH1cbiAgOTAlIHtcbiAgICBAaW5jbHVkZSBza2V3WCgwZGVnKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSBza2V3WCgwZGVnKTsgfSB9XG4iLAoJCSIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbXBvcnQgXCJib3VuY2luZy9ib3VuY2luZy1leGl0c1wiO1xuQGltcG9ydCBcImJvdW5jaW5nL2JvdW5jaW5nLWVudHJhbmNlc1wiO1xuIiwKCQkiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoYm91bmNlT3V0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSBzY2FsZSgxKTsgfVxuICAyNSUge1xuICAgIEBpbmNsdWRlIHNjYWxlKDAuOTUpOyB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSBzY2FsZSgxLjEpOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgQGluY2x1ZGUgc2NhbGUoMC4zKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoYm91bmNlT3V0VXApIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMCk7IH1cbiAgMjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMjBweCk7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKC0yMDAwcHgpOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhib3VuY2VPdXREb3duKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApOyB9XG4gIDIwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKC0yMHB4KTsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMjAwMHB4KTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoYm91bmNlT3V0TGVmdCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgwKTsgfVxuICAyMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgyMHB4KTsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoLTIwMDBweCk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGJvdW5jZU91dFJpZ2h0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDApOyB9XG4gIDIwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKC0yMHB4KTsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMjAwMHB4KTsgfSB9XG4iLAoJCSIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhib3VuY2VJbikge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSBzY2FsZSgwLjMpOyB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSBzY2FsZSgxLjA1KTsgfVxuICA3MCUge1xuICAgIEBpbmNsdWRlIHNjYWxlKDAuOSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgc2NhbGUoMSk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGJvdW5jZUluRG93bikge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKC0yMDAwcHgpOyB9XG4gIDYwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDMwcHgpOyB9XG4gIDgwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgtMTBweCk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgwKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoYm91bmNlSW5VcCkge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDIwMDBweCk7IH1cbiAgNjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoLTMwcHgpOyB9XG4gIDgwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgxMHB4KTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhib3VuY2VJblJpZ2h0KSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMjAwMHB4KTsgfVxuICA2MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMzBweCk7IH1cbiAgODAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDEwcHgpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMCk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGJvdW5jZUluTGVmdCkge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKC0yMDAwcHgpOyB9XG4gIDYwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDMwcHgpOyB9XG4gIDgwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMTBweCk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgwKTsgfSB9XG4iLAoJCSIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbXBvcnQgXCJmYWRpbmcvZmFkaW5nLWV4aXRzXCI7XG5AaW1wb3J0IFwiZmFkaW5nL2ZhZGluZy1lbnRyYW5jZXNcIjtcbiIsCgkJIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVPdXQpIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZU91dFVwKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApO1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgtMjBweCk7XG4gICAgb3BhY2l0eTogMDsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZU91dERvd24pIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMCk7XG4gICAgb3BhY2l0eTogMTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDIwcHgpO1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVPdXRSaWdodCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgwKTtcbiAgICBvcGFjaXR5OiAxOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMjBweCk7XG4gICAgb3BhY2l0eTogMDsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZU91dExlZnQpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMCk7XG4gICAgb3BhY2l0eTogMTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKC0yMHB4KTtcbiAgICBvcGFjaXR5OiAwOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlT3V0VXBCaWcpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMCk7XG4gICAgb3BhY2l0eTogMTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKC0yMDAwcHgpO1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVPdXREb3duQmlnKSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMCk7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDIwMDBweCk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVPdXRSaWdodEJpZykge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDApOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgyMDAwcHgpOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlT3V0TGVmdEJpZykge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDApOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMjAwMHB4KTsgfSB9XG4iLAoJCSIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlSW4pIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZUluVXApIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMjBweCk7XG4gICAgb3BhY2l0eTogMDsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVJbkRvd24pIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoLTIwcHgpO1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgwKTtcbiAgICBvcGFjaXR5OiAxOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlSW5SaWdodCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgyMHB4KTtcbiAgICBvcGFjaXR5OiAwOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMCk7XG4gICAgb3BhY2l0eTogMTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZUluTGVmdCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMjBweCk7XG4gICAgb3BhY2l0eTogMDsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDApO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVJblVwQmlnKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDIwMDBweCk7XG4gICAgb3BhY2l0eTogMDsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVJbkRvd25CaWcpIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgtMjAwMHB4KTsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMCk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVJblJpZ2h0QmlnKSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMjAwMHB4KTsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMCk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVJbkxlZnRCaWcpIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMjAwMHB4KTsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMCk7IH0gfVxuIiwKCQkiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmxpcCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDApKTtcbiAgICBAaW5jbHVkZSBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKGVhc2Utb3V0KTsgfVxuICA0MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigxNTBweCkgcm90YXRlWSgxNzBkZWcpKTtcbiAgICBAaW5jbHVkZSBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKGVhc2Utb3V0KTsgfVxuICA1MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigxNTBweCkgcm90YXRlWSgxOTBkZWcpIHNjYWxlKDEpKTtcbiAgICBAaW5jbHVkZSBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKGVhc2UtaW4pOyB9XG4gIDgwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDM2MGRlZykgc2NhbGUoMC45NSkpO1xuICAgIEBpbmNsdWRlIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24oZWFzZS1pbik7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHBlcnNwZWN0aXZlKDQwMHB4KSBzY2FsZSgxKSk7XG4gICAgQGluY2x1ZGUgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbihlYXNlLWluKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmxpcEluWCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDkwZGVnKSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTsgfVxuICA0MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtMTBkZWcpKTsgfVxuICA3MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgxMGRlZykpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgwZGVnKSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmxpcE91dFgpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgwZGVnKSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoOTBkZWcpKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDApOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmbGlwSW5ZKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoOTBkZWcpKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDApOyB9XG4gIDQwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC0xMGRlZykpOyB9XG4gIDcwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDEwZGVnKSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDBkZWcpKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmbGlwT3V0WSkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDBkZWcpKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg5MGRlZykpO1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMCk7IH0gfVxuIiwKCQkiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMobGlnaHRTcGVlZEluKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgxMDAlKSBza2V3WCgtMzBkZWcpKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDApOyB9XG4gIDYwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTIwJSkgc2tld1goMzBkZWcpKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9XG4gIDgwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoMCUpIHNrZXdYKC0xNWRlZykpO1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoMCUpIHNrZXdYKDBkZWcpKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhsaWdodFNwZWVkT3V0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgwJSkgc2tld1goMGRlZykpO1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoMTAwJSkgc2tld1goLTMwZGVnKSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTsgfSB9XG4iLAoJCSIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbXBvcnQgXCJyb3RhdGluZy9yb3RhdGluZy1leGl0c1wiO1xuQGltcG9ydCBcInJvdGF0aW5nL3JvdGF0aW5nLWVudHJhbmNlc1wiO1xuIiwKCQkiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMocm90YXRlT3V0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKGNlbnRlciBjZW50ZXIpO1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgwKTtcbiAgICBvcGFjaXR5OiAxOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oY2VudGVyIGNlbnRlcik7XG4gICAgQGluY2x1ZGUgcm90YXRlKDIwMGRlZyk7XG4gICAgb3BhY2l0eTogMDsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMocm90YXRlT3V0RG93bkxlZnQpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4obGVmdCBib3R0b20pO1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgwKTtcbiAgICBvcGFjaXR5OiAxOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4obGVmdCBib3R0b20pO1xuICAgIEBpbmNsdWRlIHJvdGF0ZSg5MGRlZyk7XG4gICAgb3BhY2l0eTogMDsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMocm90YXRlT3V0VXBMZWZ0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKGxlZnQgYm90dG9tKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoMCk7XG4gICAgb3BhY2l0eTogMTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKGxlZnQgYm90dG9tKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoLTkwZGVnKTtcbiAgICBvcGFjaXR5OiAwOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhyb3RhdGVPdXREb3duUmlnaHQpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4ocmlnaHQgYm90dG9tKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoMCk7XG4gICAgb3BhY2l0eTogMTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKHJpZ2h0IGJvdHRvbSk7XG4gICAgQGluY2x1ZGUgcm90YXRlKC05MGRlZyk7XG4gICAgb3BhY2l0eTogMDsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMocm90YXRlT3V0VXBSaWdodCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbihyaWdodCBib3R0b20pO1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgwKTtcbiAgICBvcGFjaXR5OiAxOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4ocmlnaHQgYm90dG9tKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoOTBkZWcpO1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuIiwKCQkiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMocm90YXRlSW4pIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oY2VudGVyIGNlbnRlcik7XG4gICAgQGluY2x1ZGUgcm90YXRlKC0yMDBkZWcpO1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbihjZW50ZXIgY2VudGVyKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoMCk7XG4gICAgb3BhY2l0eTogMTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMocm90YXRlSW5Eb3duTGVmdCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbihsZWZ0IGJvdHRvbSk7XG4gICAgQGluY2x1ZGUgcm90YXRlKC05MGRlZyk7XG4gICAgb3BhY2l0eTogMDsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKGxlZnQgYm90dG9tKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoMCk7XG4gICAgb3BhY2l0eTogMTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMocm90YXRlSW5VcExlZnQpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4obGVmdCBib3R0b20pO1xuICAgIEBpbmNsdWRlIHJvdGF0ZSg5MGRlZyk7XG4gICAgb3BhY2l0eTogMDsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKGxlZnQgYm90dG9tKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoMCk7XG4gICAgb3BhY2l0eTogMTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMocm90YXRlSW5VcFJpZ2h0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKHJpZ2h0IGJvdHRvbSk7XG4gICAgQGluY2x1ZGUgcm90YXRlKC05MGRlZyk7XG4gICAgb3BhY2l0eTogMDsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKHJpZ2h0IGJvdHRvbSk7XG4gICAgQGluY2x1ZGUgcm90YXRlKDApO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHJvdGF0ZUluRG93blJpZ2h0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKHJpZ2h0IGJvdHRvbSk7XG4gICAgQGluY2x1ZGUgcm90YXRlKDkwZGVnKTtcbiAgICBvcGFjaXR5OiAwOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4ocmlnaHQgYm90dG9tKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoMCk7XG4gICAgb3BhY2l0eTogMTsgfSB9XG4iLAoJCSIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhoaW5nZSkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgcm90YXRlKDApO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4odG9wIGxlZnQpO1xuICAgIEBpbmNsdWRlIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24oZWFzZS1pbi1vdXQpOyB9XG4gIDIwJSwgNjAlIHtcbiAgICBAaW5jbHVkZSByb3RhdGUoODBkZWcpO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4odG9wIGxlZnQpO1xuICAgIEBpbmNsdWRlIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24oZWFzZS1pbi1vdXQpOyB9XG4gIDQwJSB7XG4gICAgQGluY2x1ZGUgcm90YXRlKDYwZGVnKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKHRvcCBsZWZ0KTtcbiAgICBAaW5jbHVkZSBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKGVhc2UtaW4tb3V0KTsgfVxuICA4MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShyb3RhdGUoNjBkZWcpIHRyYW5zbGF0ZVkoMCkpO1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMSk7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbih0b3AgbGVmdCk7XG4gICAgQGluY2x1ZGUgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbihlYXNlLWluLW91dCk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSg3MDBweCk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMocm9sbEluKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDApO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC0xMDAlKSByb3RhdGUoLTEyMGRlZykpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMSk7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoMHB4KSByb3RhdGUoMGRlZykpOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhyb2xsT3V0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKDBweCkgcm90YXRlKDBkZWcpKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDApO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC0xMDAlKSByb3RhdGUoLTEyMGRlZykpOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCJjb21wYXNzL2Z1bmN0aW9uc1wiO1xuQGltcG9ydCBcImNvbXBhc3MvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwiY29tcGFzcy90eXBvZ3JhcGh5XCI7XG5AaW1wb3J0IFwiY29tcGFzcy9jc3MzXCI7XG4iLAoJCSJAaW1wb3J0IFwiZnVuY3Rpb25zL2xpc3RzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnN0YW50c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9kaXNwbGF5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbG9yc1wiO1xuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBsaXN0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvbGlzdHMucmJcbi8vXG5cbi8vIGNvbXBhY3QgaXMgcGFydCBvZiBsaWJzYXNzXG5cbkBmdW5jdGlvbiAtY29tcGFzcy1udGgoJGxpc3QsICRwbGFjZSkge1xuICAvLyBZZXAsIFNhc3MtbGlzdHMgYXJlIDEtaW5kZXhlZC5cbiAgQGlmICRwbGFjZSA9PSBcImZpcnN0XCIge1xuICAgICRwbGFjZTogMTsgfVxuICBAaWYgJHBsYWNlID09IFwibGFzdFwiIHtcbiAgICAkcGxhY2U6IGxlbmd0aCgkbGlzdCk7IH1cbiAgQHJldHVybiBudGgoJGxpc3QsICRwbGFjZSk7IH1cblxuLy8gY29tcGFzc19saXN0IGNhbid0IGJlIGltcGxlbWVudGVkIGluIHNhc3Mgc2NyaXB0XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zcGFjZS1saXN0KCRpdGVtMSwgJGl0ZW0yOiBudWxsLCAkaXRlbTM6IG51bGwsICRpdGVtNDogbnVsbCwgJGl0ZW01OiBudWxsLCAkaXRlbTY6IG51bGwsICRpdGVtNzogbnVsbCwgJGl0ZW04OiBudWxsLCAkaXRlbTk6IG51bGwpIHtcbiAgLy8gU3VwcG9ydCBmb3IgcG9seW1vcnBoaXNtLlxuICBAaWYgdHlwZS1vZigkaXRlbTEpID09IFwibGlzdFwiIHtcbiAgICAvLyBQYXNzaW5nIGEgc2luZ2xlIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gICAgJGl0ZW1zOiAkaXRlbTE7IH1cbiAgQGVsc2Uge1xuICAgICRpdGVtczogJGl0ZW0xICRpdGVtMiAkaXRlbTMgJGl0ZW00ICRpdGVtNSAkaXRlbTYgJGl0ZW03ICRpdGVtOCAkaXRlbTk7IH1cbiAgJGZ1bGw6IGZpcnN0LXZhbHVlLW9mKCRpdGVtcyk7XG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRpdGVtcykge1xuICAgICRpdGVtOiBudGgoJGl0ZW1zLCAkaSk7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsICRpdGVtOyB9IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbGlzdC1zaXplKCRsaXN0KSB7XG4gIEByZXR1cm4gbGVuZ3RoKCRsaXN0KTsgfVxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc2xpY2UoJGxpc3QsICRzdGFydCwgJGVuZDogZmFsc2UpIHtcbiAgQGlmICRlbmQgPT0gZmFsc2Uge1xuICAgICRlbmQ6IGxlbmd0aCgkbGlzdCk7IH1cbiAgJGZ1bGw6IG50aCgkbGlzdCwgJHN0YXJ0KTtcbiAgQGZvciAkaSBmcm9tICRzdGFydCArIDEgdGhyb3VnaCAkZW5kIHtcbiAgICAkZnVsbDogJGZ1bGwsIG50aCgkbGlzdCwgJGkpOyB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIHJlamVjdCgkbGlzdCwgJHJlamVjdDEsICRyZWplY3QyOiBudWxsLCAkcmVqZWN0MzogbnVsbCwgJHJlamVjdDQ6IG51bGwsICRyZWplY3Q1OiBudWxsLCAkcmVqZWN0NjogbnVsbCwgJHJlamVjdDc6IG51bGwsICRyZWplY3Q4OiBudWxsLCAkcmVqZWN0OTogbnVsbCkge1xuICAkcmVqZWN0czogJHJlamVjdDEsICRyZWplY3QyLCAkcmVqZWN0MywgJHJlamVjdDQsICRyZWplY3Q1LCAkcmVqZWN0NiwgJHJlamVjdDcsICRyZWplY3Q4LCAkcmVqZWN0OTtcbiAgJGZ1bGw6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgQGlmIGluZGV4KCRyZWplY3RzLCAkaXRlbSkge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJGZ1bGwge1xuICAgICAgICAkZnVsbDogJGZ1bGwsICRpdGVtOyB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmdWxsOiAkaXRlbTsgfSB9IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuXG5AZnVuY3Rpb24gZmlyc3QtdmFsdWUtb2YoJGxpc3QpIHtcbiAgQHJldHVybiBudGgoJGxpc3QsIDEpOyB9XG5cbi8vQGlmIG5vdCBmdW5jdGlvbi1leGlzdHMoY29tcGFjdClcbkBmdW5jdGlvbiBjb21wYWN0KCR2YXJzLi4uKSB7XG4gICRsaXN0OiAoKTtcbiAgQGVhY2ggJHZhciBpbiAkdmFycyB7XG4gICAgQGlmICR2YXIge1xuICAgICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJHZhciwgY29tbWEpOyB9IH1cbiAgQHJldHVybiAkbGlzdDsgfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjcm9zcyBicm93c2VyIHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnQucmJcbi8vXG5cbkBmdW5jdGlvbiBwcmVmaXhlZCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5O1xuICAkcHJlZml4ZWQ6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IFwic3RyaW5nXCIge1xuICAgICAgJHByZWZpeGVkOiAkcHJlZml4ZWQgb3Igc3RyLWluZGV4KCRpdGVtLCBcInVybFwiKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sIFwicmdiXCIpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgXCIjXCIpICE9IDE7IH1cbiAgICBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBcImNvbG9yXCIge31cbiAgICBAZWxzZSBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRwcmVmaXhlZDogdHJ1ZTsgfSB9XG4gIEByZXR1cm4gJHByZWZpeGVkOyB9XG5cbkBmdW5jdGlvbiBwcmVmaXgoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICAkcHJvcGVydGllczogXCJcIjtcbiAgLy8gU3VwcG9ydCBmb3IgcG9seW1vcnBoaXNtLlxuICBAaWYgdHlwZS1vZigkcHJvcGVydHkxKSA9PSBcImxpc3RcIiB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxOyB9XG4gIEBlbHNlIHtcbiAgICAvLyBQYXNzaW5nIG11bHRpcGxlIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7IH1cbiAgJHByb3BzOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiAkaXRlbSA9PSBudWxsIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHByZWZpeGVkKCRwcmVmaXgsICRpdGVtKSB7XG4gICAgICAgICRpdGVtOiAjeyRwcmVmaXh9LSN7JGl0ZW19OyB9XG4gICAgICBAaWYgJHByb3BzIHtcbiAgICAgICAgJHByb3BzOiAkcHJvcHMsICRpdGVtOyB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwcm9wczogJGl0ZW07IH0gfSB9XG4gIEByZXR1cm4gJHByb3BzOyB9XG5cbkBmdW5jdGlvbiAtc3ZnKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItc3ZnXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtb3dnKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItb3dnXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtd2Via2l0KCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItd2Via2l0XCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtbW96KCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItbW96XCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtbygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW9cIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC1waWUoJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1waWVcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZ3JhZGllbnQgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3YwLjEyLjIvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0LnJiXG4vL1xuXG5AZnVuY3Rpb24gY29sb3Itc3RvcHMoJGl0ZW0xLCAkaXRlbTI6IG51bGwsICRpdGVtMzogbnVsbCwgJGl0ZW00OiBudWxsLCAkaXRlbTU6IG51bGwsICRpdGVtNjogbnVsbCwgJGl0ZW03OiBudWxsLCAkaXRlbTg6IG51bGwsICRpdGVtOTogbnVsbCkge1xuICAkaXRlbXM6ICRpdGVtMiwgJGl0ZW0zLCAkaXRlbTQsICRpdGVtNSwgJGl0ZW02LCAkaXRlbTcsICRpdGVtOCwgJGl0ZW05O1xuICAkZnVsbDogJGl0ZW0xO1xuICBAZWFjaCAkaXRlbSBpbiAkaXRlbXMge1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCwgJGl0ZW07IH0gfVxuICBAcmV0dXJuICRmdWxsOyB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbnN0YW50cyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbnN0YW50cy5yYlxuLy9cblxuQGZ1bmN0aW9uIG9wcG9zaXRlLXBvc2l0aW9uKCRmcm9tKSB7XG4gIEBpZiAkZnJvbSA9PSB0b3Age1xuICAgIEByZXR1cm4gYm90dG9tOyB9XG4gIEBlbHNlIGlmICRmcm9tID09IGJvdHRvbSB7XG4gICAgQHJldHVybiB0b3A7IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gbGVmdCB7XG4gICAgQHJldHVybiByaWdodDsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSByaWdodCB7XG4gICAgQHJldHVybiBsZWZ0OyB9XG4gIEBlbHNlIGlmICRmcm9tID09IGNlbnRlciB7XG4gICAgQHJldHVybiBjZW50ZXI7IH0gfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBkaXNwbGF5IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Rpc3BsYXkucmJcbi8vXG5cbkBmdW5jdGlvbiBlbGVtZW50cy1vZi10eXBlKCR0eXBlKSB7XG4gIEBpZiAkdHlwZSA9PSBibG9jayB7XG4gICAgQHJldHVybiBhZGRyZXNzLCBhcnRpY2xlLCBhc2lkZSwgYmxvY2txdW90ZSwgY2VudGVyLCBkaXIsIGRpdiwgZGQsIGRldGFpbHMsIGRsLCBkdCwgZmllbGRzZXQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9ybSwgZm9vdGVyLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaHIsIGhlYWRlciwgaGdyb3VwLCBpc2luZGV4LCBtYWluLCBtZW51LCBuYXYsIG5vZnJhbWVzLCBub3NjcmlwdCwgb2wsIHAsIHByZSwgc2VjdGlvbiwgc3VtbWFyeSwgdWw7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaW5saW5lIHtcbiAgICBAcmV0dXJuIGEsIGFiYnIsIGFjcm9ueW0sIGF1ZGlvLCBiLCBiYXNlZm9udCwgYmRvLCBiaWcsIGJyLCBjYW52YXMsIGNpdGUsIGNvZGUsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZm4sIGVtLCBlbWJlZCwgZm9udCwgaSwgaW1nLCBpbnB1dCwga2V5Z2VuLCBrYmQsIGxhYmVsLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcSwgcnAsIHJ0LCBydWJ5LCBzLCBzYW1wLCBzZWxlY3QsIHNtYWxsLCBzcGFuLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHRleHRhcmVhLCB0aW1lLCB0dCwgdSwgdmFyLCB2aWRlbywgd2JyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGlubGluZS1ibG9jayB7XG4gICAgQHJldHVybiBpbWc7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUge1xuICAgIEByZXR1cm4gdGFibGU7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gbGlzdC1pdGVtIHtcbiAgICBAcmV0dXJuIGxpOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLXJvdy1ncm91cCB7XG4gICAgQHJldHVybiB0Ym9keTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1oZWFkZXItZ3JvdXAge1xuICAgIEByZXR1cm4gdGhlYWQ7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtZm9vdGVyLWdyb3VwIHtcbiAgICBAcmV0dXJuIHRmb290OyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLXJvdyB7XG4gICAgQHJldHVybiB0cjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1jZWxsIHtcbiAgICBAcmV0dXJuIHRoLCB0ZDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBodG1sNS1ibG9jayB7XG4gICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtYWluLCBtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnk7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaHRtbDUtaW5saW5lIHtcbiAgICBAcmV0dXJuIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBlbWJlZCwga2V5Z2VuLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCB0aW1lLCB2aWRlbywgd2JyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGh0bWw1IHtcbiAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZGV0YWlscywgZW1iZWQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwga2V5Z2VuLCBtYWluLCBtYXJrLCBtZW51LCBtZXRlciwgbmF2LCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIHZpZGVvLCB3YnI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGV4dC1pbnB1dCB7XG4gICAgQHJldHVybiBpbnB1dCwgdGV4dGFyZWE7IH0gfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb2xvcnMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29sb3JzLnJiXG4vL1xuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2YgbGlnaHRlbi9kYXJrZW4gc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LWxpZ2h0bmVzcygkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTsgfVxuXG4vLyBTY2FsZXMgYSBjb2xvcidzIGxpZ2h0bmVzcyBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgc2NhbGVkIGRhcmtlciwgaWYgcG9zaXRpdmUsIGl0IGlzIHNjYWxlZCBsaWdodGVyLlxuLy8gVGhpcyB3aWxsIG5ldmVyIHJldHVybiBhIHB1cmUgbGlnaHQgb3IgZGFyayBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLWxpZ2h0bmVzcygkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRhbW91bnQpOyB9XG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBzYXR1cmF0ZS9kZXNhdHVyYXRlIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIGFkanVzdC1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTsgfVxuXG4vLyBTY2FsZXMgYSBjb2xvcidzIHNhdHVyYXRpb24gYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIGRlc2F0dXJhdGVkLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2F0dXJhdGVkLlxuLy8gVGhpcyB3aWxsIG5ldmVyIHJldHVybiBhIHB1cmUgc2F0dXJhdGVkIG9yIGRlc2F0dXJhdGVkIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTsgfVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCgjMDAwMDAwLCAkY29sb3IsICRwZXJjZW50YWdlKTsgfVxuXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KCNmZmZmZmYsICRjb2xvciwgJHBlcmNlbnRhZ2UpOyB9XG4iLAoJCSJAaW1wb3J0IFwidXRpbGl0aWVzL2NvbG9yXCI7XG5AaW1wb3J0IFwidXRpbGl0aWVzL2dlbmVyYWxcIjtcbkBpbXBvcnQgXCJ1dGlsaXRpZXMvc3ByaXRlc1wiO1xuQGltcG9ydCBcInV0aWxpdGllcy90YWJsZXNcIjtcblxuLy8gZGVwcmVjYXRlZFxuQGltcG9ydCBcInR5cG9ncmFwaHkvbGlua3NcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpc3RzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS90ZXh0XCI7XG4iLAoJCSJAaW1wb3J0IFwiY29sb3IvY29udHJhc3RcIjtcbiIsCgkJIiRjb250cmFzdGVkLWRhcmstZGVmYXVsdDogIzAwMCAhZGVmYXVsdDtcbiRjb250cmFzdGVkLWxpZ2h0LWRlZmF1bHQ6ICNmZmYgIWRlZmF1bHQ7XG4kY29udHJhc3RlZC1saWdodG5lc3MtdGhyZXNob2xkOiAzMCUgIWRlZmF1bHQ7XG5cbi8vIFJldHVybnMgdGhlIGAkbGlnaHRgIGNvbG9yIHdoZW4gdGhlIGAkY29sb3JgIGlzIGRhcmtcbi8vIGFuZCB0aGUgYCRkYXJrYCBjb2xvciB3aGVuIHRoZSBgJGNvbG9yYCBpcyBsaWdodC5cbi8vIFRoZSBgJHRocmVzaG9sZGAgaXMgYSBwZXJjZW50IGJldHdlZW4gYDAlYCBhbmQgYDEwMCVgIGFuZCBpdCBkZXRlcm1pbmVzXG4vLyB3aGVuIHRoZSBsaWdodG5lc3Mgb2YgYCRjb2xvcmAgY2hhbmdlcyBmcm9tIFwiZGFya1wiIHRvIFwibGlnaHRcIi5cbkBmdW5jdGlvbiBjb250cmFzdC1jb2xvcigkY29sb3IsICRkYXJrOiAkY29udHJhc3RlZC1kYXJrLWRlZmF1bHQsICRsaWdodDogJGNvbnRyYXN0ZWQtbGlnaHQtZGVmYXVsdCwgJHRocmVzaG9sZDogJGNvbnRyYXN0ZWQtbGlnaHRuZXNzLXRocmVzaG9sZCkge1xuICBAcmV0dXJuIGlmKGxpZ2h0bmVzcygkY29sb3IpIDwgJHRocmVzaG9sZCwgJGxpZ2h0LCAkZGFyayk7IH1cblxuLy8gU2V0cyB0aGUgc3BlY2lmaWVkIGJhY2tncm91bmQgY29sb3IgYW5kIGNhbGN1bGF0ZXMgYSBkYXJrIG9yIGxpZ2h0IGNvbnRyYXN0ZWQgdGV4dCBjb2xvci5cbi8vIFRoZSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBbY29udHJhc3QtY29sb3IgZnVuY3Rpb25dKCNmdW5jdGlvbi1jb250cmFzdC1jb2xvcikuXG5AbWl4aW4gY29udHJhc3RlZCgkYmFja2dyb3VuZC1jb2xvciwgJGRhcms6ICRjb250cmFzdGVkLWRhcmstZGVmYXVsdCwgJGxpZ2h0OiAkY29udHJhc3RlZC1saWdodC1kZWZhdWx0LCAkdGhyZXNob2xkOiAkY29udHJhc3RlZC1saWdodG5lc3MtdGhyZXNob2xkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yO1xuICBjb2xvcjogY29udHJhc3QtY29sb3IoJGJhY2tncm91bmQtY29sb3IsICRkYXJrLCAkbGlnaHQsICR0aHJlc2hvbGQpOyB9XG4iLAoJCSJAaW1wb3J0IFwiZ2VuZXJhbC9yZXNldFwiO1xuQGltcG9ydCBcImdlbmVyYWwvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL2Zsb2F0XCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC90YWctY2xvdWRcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL2hhY2tzXCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9taW5cIjtcbiIsCgkJIi8vIFRoaXMgbW9kdWxlIGhhcyBtb3ZlZC5cbkBpbXBvcnQgXCIuLi8uLi9yZXNldC91dGlsaXRpZXNcIjtcbiIsCgkJIi8vIEJhc2VkIG9uIFtFcmljIE1leWVyJ3MgcmVzZXQgMi4wXShodHRwOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY3NzL3Jlc2V0L2luZGV4Lmh0bWwpXG4vLyBHbG9iYWwgcmVzZXQgcnVsZXMuXG4vLyBGb3IgbW9yZSBzcGVjaWZpYyByZXNldHMsIHVzZSB0aGUgcmVzZXQgbWl4aW5zIHByb3ZpZGVkIGJlbG93XG5AbWl4aW4gZ2xvYmFsLXJlc2V0IHtcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfSB9XG5cbi8vIFJlc2V0IHRoZSBib3ggbW9kZWwgbWVhc3VyZW1lbnRzLlxuQG1peGluIHJlc2V0LWJveC1tb2RlbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi8vIFJlc2V0IHRoZSBmb250IGFuZCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gcmVzZXQtZm9udCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbi8vIFJlc2V0cyB0aGUgb3V0bGluZSB3aGVuIGZvY3VzLlxuLy8gRm9yIGFjY2Vzc2liaWxpdHkgeW91IG5lZWQgdG8gYXBwbHkgc29tZSBzdHlsaW5nIGluIGl0cyBwbGFjZS5cbkBtaXhpbiByZXNldC1mb2N1cyB7XG4gIG91dGxpbmU6IDA7IH1cblxuLy8gUmVzZXQgYSBib2R5IGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi8vIFJlc2V0IHRoZSBsaXN0IHN0eWxlIG9mIGFuIGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLy8gUmVzZXQgYSB0YWJsZVxuQG1peGluIHJlc2V0LXRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxuLy8gUmVzZXQgYSB0YWJsZSBjZWxsIChgdGhgLCBgdGRgKVxuQG1peGluIHJlc2V0LXRhYmxlLWNlbGwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8vIFJlc2V0IGEgcXVvdGF0aW9uIChgcWAsIGBibG9ja3F1b3RlYClcbkBtaXhpbiByZXNldC1xdW90YXRpb24ge1xuICBxdW90ZXM6IG5vbmU7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwKCQkiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cblxuLy8gVGhpcyBvbGRlciBtZXRob2QgZnJvbSBQb3NpdGlvbiBJcyBFdmVyeXRoaW5nIGNhbGxlZFxuLy8gW0Vhc3kgQ2xlYXJpbmddKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2Vhc3ljbGVhcmluZy5odG1sKVxuLy8gaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgcG9zaXRpb25lZCBlbGVtZW50cyB0byBoYW5nXG4vLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lciBhdCB0aGUgZXhwZW5zZSBvZiBtb3JlIHRyaWNreSBDU1MuXG5AbWl4aW4gbGVnYWN5LXBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXFwwMDIwXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cblxuLy8gVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFBJRSBjbGVhcmZpeCBtZXRob2QgdGhhdCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgQ1NTIG91dHB1dC5cbi8vIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCBiZWZvcmUgMy41IHlvdSBuZWVkIHRvIHVzZSBgbGVnYWN5LXBpZS1jbGVhcmZpeGAgaW5zdGVhZC5cbi8vXG4vLyBBZGFwdGVkIGZyb206IFtBIG5ldyBtaWNybyBjbGVhcmZpeCBoYWNrXShodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8pXG5AbWl4aW4gcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH1cbiAgICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jazsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfSB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH1cbiIsCgkJIi8vIEVtaXRzIHN0eWxlcyBmb3IgYSB0YWcgY2xvdWRcbkBtaXhpbiB0YWctY2xvdWQoJGJhc2Utc2l6ZTogMWVtKSB7XG4gIGZvbnQtc2l6ZTogJGJhc2Utc2l6ZTtcbiAgbGluZS1oZWlnaHQ6IDEuMiAqICRiYXNlLXNpemU7XG4gIC54eHMsIC54cywgLnMsIC5sLCAueGwsIC54eGwge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjIgKiAkYmFzZS1zaXplOyB9XG4gIC54eHMge1xuICAgIGZvbnQtc2l6ZTogJGJhc2Utc2l6ZSAvIDI7IH1cbiAgLnhzIHtcbiAgICBmb250LXNpemU6IDIgKiAkYmFzZS1zaXplIC8gMzsgfVxuICAucyB7XG4gICAgZm9udC1zaXplOiAzICogJGJhc2Utc2l6ZSAvIDQ7IH1cbiAgLmwge1xuICAgIGZvbnQtc2l6ZTogNCAqICRiYXNlLXNpemUgLyAzOyB9XG4gIC54bCB7XG4gICAgZm9udC1zaXplOiAzICogJGJhc2Utc2l6ZSAvIDI7IH1cbiAgLnh4bCB7XG4gICAgZm9udC1zaXplOiAyICogJGJhc2Utc2l6ZTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH1cbiAgICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jazsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfSB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vKipcbi8vIENyb3NzIGJyb3dzZXIgbWluLWhlaWdodCBtaXhpbi5cbkBtaXhpbiBtaW4taGVpZ2h0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSBoYWNrZWQtbWluaW11bShoZWlnaHQsICR2YWx1ZSk7IH1cblxuLy8qKlxuLy8gQ3Jvc3MgYnJvd3NlciBtaW4td2lkdGggbWl4aW4uXG5AbWl4aW4gbWluLXdpZHRoKCR2YWx1ZSkge1xuICBAaW5jbHVkZSBoYWNrZWQtbWluaW11bSh3aWR0aCwgJHZhbHVlKTsgfVxuXG4vLyBAcHJpdmF0ZSBUaGlzIG1peGluIGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5LlxuQG1peGluIGhhY2tlZC1taW5pbXVtKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gIG1pbi0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgQGluY2x1ZGUgYmFuZy1oYWNrKCRwcm9wZXJ0eSwgYXV0bywgJHZhbHVlKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9XG4gICAgQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH0gfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxOyB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzcHJpdGVzL2Jhc2VcIjtcbkBpbXBvcnQgXCJzcHJpdGVzL3Nwcml0ZS1pbWdcIjtcbiIsCgkJIi8vIERldGVybWluZXMgdGhvc2Ugc3RhdGVzIGZvciB3aGljaCB5b3Ugd2FudCB0byBlbmFibGUgbWFnaWMgc3ByaXRlIHNlbGVjdG9yc1xuJHNwcml0ZS1zZWxlY3RvcnM6IGhvdmVyLCB0YXJnZXQsIGFjdGl2ZSAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGFuIGVsZW1lbnQgdG8gdGhlIG9yaWdpbmFsXG4vLyBkaW1lbnNpb25zIG9mIGFuIGltYWdlIGJlZm9yZSBpdCB3YXMgaW5jbHVkZWQgaW4gdGhlIHNwcml0ZS5cbkBtaXhpbiBzcHJpdGUtZGltZW5zaW9ucygkbWFwLCAkc3ByaXRlKSB7XG4gIGhlaWdodDogaW1hZ2UtaGVpZ2h0KHNwcml0ZS1maWxlKCRtYXAsICRzcHJpdGUpKTtcbiAgd2lkdGg6IGltYWdlLXdpZHRoKHNwcml0ZS1maWxlKCRtYXAsICRzcHJpdGUpKTsgfVxuXG4vLyBTZXQgdGhlIGJhY2tncm91bmQgcG9zaXRpb24gb2YgdGhlIGdpdmVuIHNwcml0ZSBgJG1hcGAgdG8gZGlzcGxheSB0aGVcbi8vIHNwcml0ZSBvZiB0aGUgZ2l2ZW4gYCRzcHJpdGVgIG5hbWUuIFlvdSBjYW4gbW92ZSB0aGUgaW1hZ2UgcmVsYXRpdmUgdG8gaXRzXG4vLyBuYXR1cmFsIHBvc2l0aW9uIGJ5IHBhc3NpbmcgYCRvZmZzZXQteGAgYW5kIGAkb2Zmc2V0LXlgLlxuQG1peGluIHNwcml0ZS1iYWNrZ3JvdW5kLXBvc2l0aW9uKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHNwcml0ZS1wb3NpdGlvbigkbWFwLCAkc3ByaXRlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7IH1cblxuLy8gRGV0ZXJtaW5lcyBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIG1hZ2ljIHNlbGVjdG9ycyBpbiB5b3VyIHNwcml0ZXNcbiRkaXNhYmxlLW1hZ2ljLXNwcml0ZS1zZWxlY3RvcnM6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBJbmNsdWRlIHRoZSBwb3NpdGlvbiBhbmQgKG9wdGlvbmFsbHkpIGRpbWVuc2lvbnMgb2YgdGhpcyBgJHNwcml0ZWBcbi8vIGluIHRoZSBnaXZlbiBzcHJpdGUgYCRtYXBgLiBUaGUgc3ByaXRlIHVybCBzaG91bGQgY29tZSBmcm9tIGVpdGhlciBhIGJhc2Vcbi8vIGNsYXNzIG9yIHlvdSBjYW4gc3BlY2lmeSB0aGUgYHNwcml0ZS11cmxgIGV4cGxpY2l0bHkgbGlrZSB0aGlzOlxuLy9cbi8vICAgICBiYWNrZ3JvdW5kOiAkbWFwIG5vLXJlcGVhdDtcbkBtaXhpbiBzcHJpdGUoJG1hcCwgJHNwcml0ZSwgJGRpbWVuc2lvbnM6IGZhbHNlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZC1wb3NpdGlvbigkbWFwLCAkc3ByaXRlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gIEBpZiAkZGltZW5zaW9ucyB7XG4gICAgQGluY2x1ZGUgc3ByaXRlLWRpbWVuc2lvbnMoJG1hcCwgJHNwcml0ZSk7IH1cbiAgQGlmIG5vdCAkZGlzYWJsZS1tYWdpYy1zcHJpdGUtc2VsZWN0b3JzIHtcbiAgICBAaW5jbHVkZSBzcHJpdGUtc2VsZWN0b3JzKCRtYXAsICRzcHJpdGUsICRzcHJpdGUsICRvZmZzZXQteCwgJG9mZnNldC15KTsgfSB9XG5cbi8vIEluY2x1ZGUgdGhlIHNlbGVjdG9ycyBmb3IgdGhlIGAkc3ByaXRlYCBnaXZlbiB0aGUgYCRtYXBgIGFuZCB0aGVcbi8vIGAkZnVsbC1zcHJpdGUtbmFtZWBcbi8vIEBwcml2YXRlXG5AbWl4aW4gc3ByaXRlLXNlbGVjdG9ycygkbWFwLCAkc3ByaXRlLW5hbWUsICRmdWxsLXNwcml0ZS1uYW1lLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHNwcml0ZS1zZWxlY3RvcnMge1xuICAgIEBpZiBzcHJpdGVfaGFzX3NlbGVjdG9yKCRtYXAsICRzcHJpdGUtbmFtZSwgJHNlbGVjdG9yKSB7XG4gICAgICAmOiN7JHNlbGVjdG9yfSwgJi4jeyRmdWxsLXNwcml0ZS1uYW1lfV8jeyRzZWxlY3Rvcn0sICYuI3skZnVsbC1zcHJpdGUtbmFtZX0tI3skc2VsZWN0b3J9IHtcbiAgICAgICAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQtcG9zaXRpb24oJG1hcCwgXCIjeyRzcHJpdGUtbmFtZX1fI3skc2VsZWN0b3J9XCIsICRvZmZzZXQteCwgJG9mZnNldC15KTsgfSB9IH0gfVxuXG4vLyBHZW5lcmF0ZXMgYSBjbGFzcyBmb3IgZWFjaCBzcGFjZSBzZXBhcmF0ZWQgbmFtZSBpbiBgJHNwcml0ZS1uYW1lc2AuXG4vLyBUaGUgY2xhc3Mgd2lsbCBiZSBvZiB0aGUgZm9ybSAuPG1hcC1uYW1lPi08c3ByaXRlLW5hbWU+LlxuLy9cbi8vIElmIGEgYmFzZSBjbGFzcyBpcyBwcm92aWRlZCwgdGhlbiBlYWNoIGNsYXNzIHdpbGwgZXh0ZW5kIGl0LlxuLy9cbi8vIElmIGAkZGltZW5zaW9uc2AgaXMgYHRydWVgLCB0aGUgc3ByaXRlIGRpbWVuc2lvbnMgd2lsbCBzcGVjaWZpZWQuXG5AbWl4aW4gc3ByaXRlcygkbWFwLCAkc3ByaXRlLW5hbWVzLCAkYmFzZS1jbGFzczogZmFsc2UsICRkaW1lbnNpb25zOiBmYWxzZSwgJHByZWZpeDogc3ByaXRlLW1hcC1uYW1lKCRtYXApLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAZWFjaCAkc3ByaXRlLW5hbWUgaW4gJHNwcml0ZS1uYW1lcyB7XG4gICAgQGlmIHNwcml0ZV9kb2VzX25vdF9oYXZlX3BhcmVudCgkbWFwLCAkc3ByaXRlLW5hbWUpIHtcbiAgICAgICRmdWxsLXNwcml0ZS1uYW1lOiBcIiN7JHByZWZpeH0tI3skc3ByaXRlLW5hbWV9XCI7XG4gICAgICAuI3skZnVsbC1zcHJpdGUtbmFtZX0ge1xuICAgICAgICBAaWYgJGJhc2UtY2xhc3Mge1xuICAgICAgICAgIEBleHRlbmQgI3skYmFzZS1jbGFzc307IH1cbiAgICAgICAgQGluY2x1ZGUgc3ByaXRlKCRtYXAsICRzcHJpdGUtbmFtZSwgJGRpbWVuc2lvbnMsICRvZmZzZXQteCwgJG9mZnNldC15KTsgfSB9IH0gfVxuIiwKCQkiLy8gQGRvYyBvZmZcbi8vIEV4YW1wbGUgMTpcbi8vXG4vLyAgICAgYS50d2l0dGVyXG4vLyAgICAgICArc3ByaXRlLWltZyhcImljb25zLTMyLnBuZ1wiLCAxKVxuLy8gICAgIGEuZmFjZWJvb2tcbi8vICAgICAgICtzcHJpdGUtaW1nKFwiaWNvbnMtMzJwbmdcIiwgMilcbi8vXG4vLyBFeGFtcGxlIDI6XG4vL1xuLy8gICAgIGFcbi8vICAgICAgICtzcHJpdGUtYmFja2dyb3VuZChcImljb25zLTMyLnBuZ1wiKVxuLy8gICAgICAgYS50d2l0dGVyXG4vLyAgICAgICAgICtzcHJpdGUtY29sdW1uKDEpXG4vLyAgICAgICBhLmZhY2Vib29rXG4vLyAgICAgICAgICtzcHJpdGUtcm93KDIpXG4vLyBAZG9jIG9uXG5cbiRzcHJpdGUtZGVmYXVsdC1zaXplOiAzMnB4ICFkZWZhdWx0O1xuXG4kc3ByaXRlLWRlZmF1bHQtbWFyZ2luOiAwcHggIWRlZmF1bHQ7XG5cbiRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aDogJHNwcml0ZS1kZWZhdWx0LXNpemUgIWRlZmF1bHQ7XG5cbiRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQ6ICRzcHJpdGUtZGVmYXVsdC1zaXplICFkZWZhdWx0O1xuXG4vLyBTZXRzIGFsbCB0aGUgcnVsZXMgZm9yIGEgc3ByaXRlIGZyb20gYSBnaXZlbiBzcHJpdGUgaW1hZ2UgdG8gc2hvdyBqdXN0IG9uZSBvZiB0aGUgc3ByaXRlcy5cbi8vIFRvIHJlZHVjZSBkdXBsaWNhdGlvbiB1c2UgYSBzcHJpdGUtYmcgbWl4aW4gZm9yIGNvbW1vbiBwcm9wZXJ0aWVzIGFuZCBhIHNwcml0ZS1zZWxlY3QgbWl4aW4gZm9yIHBvc2l0aW9uaW5nLlxuQG1peGluIHNwcml0ZS1pbWcoJGltZywgJGNvbCwgJHJvdzogMSwgJHdpZHRoOiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGgsICRoZWlnaHQ6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQoJGltZywgJHdpZHRoLCAkaGVpZ2h0KTtcbiAgQGluY2x1ZGUgc3ByaXRlLXBvc2l0aW9uKCRjb2wsICRyb3csICR3aWR0aCwgJGhlaWdodCwgJG1hcmdpbik7IH1cblxuLy8gU2V0cyBydWxlcyBjb21tb24gZm9yIGFsbCBzcHJpdGVzLCBhc3N1bWVzIHlvdSB3YW50IGEgc3F1YXJlLCBidXQgYWxsb3dzIGEgcmVjdGFuZ3VsYXIgcmVnaW9uLlxuQG1peGluIHNwcml0ZS1iYWNrZ3JvdW5kKCRpbWcsICR3aWR0aDogJHNwcml0ZS1kZWZhdWx0LXNpemUsICRoZWlnaHQ6ICR3aWR0aCkge1xuICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZC1yZWN0YW5nbGUoJGltZywgJHdpZHRoLCAkaGVpZ2h0KTsgfVxuXG4vLyBTZXRzIHJ1bGVzIGNvbW1vbiBmb3IgYWxsIHNwcml0ZXMsIGFzc3VtZXMgYSByZWN0YW5ndWxhciByZWdpb24uXG5AbWl4aW4gc3ByaXRlLWJhY2tncm91bmQtcmVjdGFuZ2xlKCRpbWcsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0KSB7XG4gIGJhY2tncm91bmQ6IGltYWdlLXVybCgkaW1nKSBuby1yZXBlYXQ7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuXG4vLyBBbGxvd3MgaG9yaXpvbnRhbCBzcHJpdGUgcG9zaXRpb25pbmcgb3B0aW1pemVkIGZvciBhIHNpbmdsZSByb3cgb2Ygc3ByaXRlcy5cbkBtaXhpbiBzcHJpdGUtY29sdW1uKCRjb2wsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1wb3NpdGlvbigkY29sLCAxLCAkd2lkdGgsIDBweCwgJG1hcmdpbik7IH1cblxuLy8gQWxsb3dzIHZlcnRpY2FsIHNwcml0ZSBwb3NpdGlvbmluZyBvcHRpbWl6ZWQgZm9yIGEgc2luZ2xlIGNvbHVtbiBvZiBzcHJpdGVzLlxuQG1peGluIHNwcml0ZS1yb3coJHJvdywgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICBAaW5jbHVkZSBzcHJpdGUtcG9zaXRpb24oMSwgJHJvdywgMHB4LCAkaGVpZ2h0LCAkbWFyZ2luKTsgfVxuXG4vLyBBbGxvd3MgdmVydGljYWwgYW5kIGhvcml6b250YWwgc3ByaXRlIHBvc2l0aW9uaW5nIGZyb20gYSBncmlkIG9mIGVxdWFsIGRpbWVuc2lvbmVkIHNwcml0ZXMuXG5AbWl4aW4gc3ByaXRlLXBvc2l0aW9uKCRjb2wsICRyb3c6IDEsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0LCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gICR4OiAoJGNvbCAtIDEpICogLSR3aWR0aCAtICgkY29sIC0gMSkgKiAkbWFyZ2luO1xuICAkeTogKCRyb3cgLSAxKSAqIC0kaGVpZ2h0IC0gKCRyb3cgLSAxKSAqICRtYXJnaW47XG4gIGJhY2tncm91bmQtcG9zaXRpb246ICR4ICR5OyB9XG5cbi8vIFNpbWlsYXIgdG8gJ3Nwcml0ZS1yZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zJyBidXQgZG9lcyBub3QgYXV0bWF0aWNseSBzZXQgdGhlIGRlbWVuc2lvbnNcbkBtaXhpbiBzcHJpdGUtcmVwbGFjZS10ZXh0KCRtYXAsICRzcHJpdGUsICRkaW1lbnNpb25zOiBmYWxzZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgQGluY2x1ZGUgaGlkZS10ZXh0O1xuICBAaW5jbHVkZSBzcHJpdGUoJG1hcCwgJHNwcml0ZSwgJGRpbWVuc2lvbnMsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbiAgYmFja2dyb3VuZC1pbWFnZTogJG1hcDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfVxuXG4vLyBTaW1pbGFyIHRvICdyZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zJyBidXQgd2l0aCBzcHJpdGVzXG4vLyBUbyB1c2UsIGNyZWF0ZSB5b3VyIHNwcml0ZSBhbmQgdGhlbiBwYXNzIGl0IGluIHRoZSBgJG1hcGAgcGFyYW1cbi8vIFRoZSBuYW1lIG9mIHRoZSBpbWFnZSBpbiB0aGUgc3ByaXRlIGZvbGRlciBzaG91bGQgYmUgYCRpbWctbmFtZWBcbkBtaXhpbiBzcHJpdGUtcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucygkbWFwLCAkc3ByaXRlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAaW5jbHVkZSBzcHJpdGUtcmVwbGFjZS10ZXh0KCRtYXAsICRzcHJpdGUsIHRydWUsICRvZmZzZXQteCwgJG9mZnNldC15KTsgfVxuIiwKCQkiQGltcG9ydCBcInRhYmxlcy9hbHRlcm5hdGluZy1yb3dzLWFuZC1jb2x1bW5zXCI7XG5AaW1wb3J0IFwidGFibGVzL2JvcmRlcnNcIjtcbkBpbXBvcnQgXCJ0YWJsZXMvc2NhZmZvbGRpbmdcIjtcbiIsCgkJIkBtaXhpbiBhbHRlcm5hdGluZy1yb3dzLWFuZC1jb2x1bW5zKCRldmVuLXJvdy1jb2xvciwgJG9kZC1yb3ctY29sb3IsICRkYXJrLWludGVyc2VjdGlvbiwgJGhlYWRlci1jb2xvcjogd2hpdGUsICRmb290ZXItY29sb3I6IHdoaXRlKSB7XG4gIHRoIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWNvbG9yO1xuICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfVxuICB0ciB7XG4gICAgJi5vZGQsICY6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICAgIHRkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9kZC1yb3ctY29sb3I7XG4gICAgICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2RkLXJvdy1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9IH0gfVxuICB0ci5ldmVuIHtcbiAgICB0ZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXZlbi1yb3ctY29sb3I7XG4gICAgICAmLmV2ZW4sICY6bnRoLWNoaWxkKDJuKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRldmVuLXJvdy1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9IH1cbiAgdGZvb3Qge1xuICAgIHRoLCB0ZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9vdGVyLWNvbG9yO1xuICAgICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9vdGVyLWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH0gfSB9XG4iLAoJCSJAbWl4aW4gb3V0ZXItdGFibGUtYm9yZGVycygkd2lkdGg6IDJweCwgJGNvbG9yOiBibGFjaykge1xuICBib3JkZXI6ICR3aWR0aCBzb2xpZCAkY29sb3I7XG4gIHRoZWFkIHtcbiAgICB0aCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGNvbG9yOyB9IH1cbiAgdGZvb3Qge1xuICAgIHRoLCB0ZCB7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGNvbG9yOyB9IH1cbiAgdGgge1xuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGNvbG9yOyB9IH0gfVxuXG5AbWl4aW4gaW5uZXItdGFibGUtYm9yZGVycygkd2lkdGg6IDJweCwgJGNvbG9yOiBibGFjaykge1xuICB0aCwgdGQge1xuICAgIGJvcmRlcjoge1xuICAgICAgcmlnaHQ6ICR3aWR0aCBzb2xpZCAkY29sb3I7XG4gICAgICBib3R0b206ICR3aWR0aCBzb2xpZCAkY29sb3I7XG4gICAgICBsZWZ0LXdpZHRoOiAwcHg7XG4gICAgICB0b3Atd2lkdGg6IDBweDsgfVxuICAgICY6bGFzdC1jaGlsZCxcbiAgICAmLmxhc3Qge1xuICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwcHg7IH0gfVxuICAvLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4gIC8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuICB0Ym9keSwgdGZvb3Qge1xuICAgIHRyOmxhc3QtY2hpbGQge1xuICAgICAgdGgsIHRkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMHB4OyB9IH1cbiAgICB0ci5sYXN0IHtcbiAgICAgIHRoLCB0ZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDBweDsgfSB9IH0gfVxuIiwKCQkiQG1peGluIHRhYmxlLXNjYWZmb2xkaW5nIHtcbiAgdGgge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXdlaWdodDogYm9sZDsgfVxuICB0ZCxcbiAgdGgge1xuICAgIHBhZGRpbmc6IDJweDtcbiAgICAmLm51bWVyaWMge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7IH0gfSB9XG4iLAoJCSJAaW1wb3J0IFwibGlua3MvaG92ZXItbGlua1wiO1xuQGltcG9ydCBcImxpbmtzL2xpbmstY29sb3JzXCI7XG5AaW1wb3J0IFwibGlua3MvdW5zdHlsZWQtbGlua1wiO1xuIiwKCQkiLy8gYSBsaW5rIHRoYXQgb25seSBoYXMgYW4gdW5kZXJsaW5lIHdoZW4geW91IGhvdmVyIG92ZXIgaXRcbkBtaXhpbiBob3Zlci1saW5rIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAmOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfSB9XG4iLAoJCSIvLyBTZXQgYWxsIHRoZSBjb2xvcnMgZm9yIGEgbGluayB3aXRoIG9uZSBtaXhpbiBjYWxsLlxuLy8gT3JkZXIgb2YgYXJndW1lbnRzIGlzOlxuLy9cbi8vIDEuIG5vcm1hbFxuLy8gMi4gaG92ZXJcbi8vIDMuIGFjdGl2ZVxuLy8gNC4gdmlzaXRlZFxuLy8gNS4gZm9jdXNcbi8vXG4vLyBUaG9zZSBzdGF0ZXMgbm90IHNwZWNpZmllZCB3aWxsIGluaGVyaXQuXG4vLyBNaXhpbiB0byBhbiBhbmNob3IgbGluayBsaWtlIHNvOlxuLy8gICAgIGFcbi8vICAgICAgICtsaW5rLWNvbG9ycygjMDBjLCAjMGNjLCAjYzBjLCAjY2NjLCAjY2MwKVxuXG5AbWl4aW4gbGluay1jb2xvcnMoJG5vcm1hbCwgJGhvdmVyOiBmYWxzZSwgJGFjdGl2ZTogZmFsc2UsICR2aXNpdGVkOiBmYWxzZSwgJGZvY3VzOiBmYWxzZSkge1xuICBjb2xvcjogJG5vcm1hbDtcbiAgQGlmICR2aXNpdGVkIHtcbiAgICAmOnZpc2l0ZWQge1xuICAgICAgY29sb3I6ICR2aXNpdGVkOyB9IH1cbiAgQGlmICRmb2N1cyB7XG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogJGZvY3VzOyB9IH1cbiAgQGlmICRob3ZlciB7XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGhvdmVyOyB9IH1cbiAgQGlmICRhY3RpdmUge1xuICAgICY6YWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkYWN0aXZlOyB9IH0gfVxuIiwKCQkiLy8gQSBsaW5rIHRoYXQgbG9va3MgYW5kIGFjdHMgbGlrZSB0aGUgdGV4dCBpdCBpcyBjb250YWluZWQgd2l0aGluXG5AbWl4aW4gdW5zdHlsZWQtbGluayB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG4gIGN1cnNvcjogaW5oZXJpdDtcbiAgJjphY3RpdmUsICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7IH0gfVxuIiwKCQkiQGltcG9ydCBcImxpc3RzL2hvcml6b250YWwtbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2lubGluZS1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvaW5saW5lLWJsb2NrLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9idWxsZXRzXCI7XG4iLAoJCSIvLyBIb3Jpem9udGFsIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdFxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIG9uIHlvdXIgdWwvb2wgYW5kICtob3Jpem9udGFsLWxpc3QtaXRlbSBvbiB5b3VyIGxpLlxuLy8gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmcgb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyXG4vLyAgICAgPiBsaVxuLy8gICAgICAgK2hvcml6b250YWwtbGlzdC1pdGVtXG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9yZXNldFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2Zsb2F0XCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYSBob3Jpem9udGFsIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICBAaW5jbHVkZSBjbGVhcmZpeDsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbi8vXG4vLyA6bGFzdC1jaGlsZCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkXG4vLyBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkgZm9yIHRoZSBzdXBwb3J0IG1hdHJpeFxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgbm8tYnVsbGV0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaW5jbHVkZSBmbG9hdCgkZGlyZWN0aW9uKTtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZzsgfVxuICAgICY6Zmlyc3QtY2hpbGQsICYuZmlyc3Qge1xuICAgICAgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgICAmLmxhc3Qge1xuICAgICAgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfSB9IH1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBmbG9hdGVkIGxlZnQgYW5kIHdvbid0IHdyYXAuXG4vLyBUaGlzIGlzIG5vdCBhbiBpbmxpbmUgbGlzdC5cbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QoJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmcsICRkaXJlY3Rpb24pOyB9IH1cbiIsCgkJIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBuby1idWxsZXQ7IH0gfVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCgkcGFkZGluZyAtICR3aWR0aCkgLyAyKSAoKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMik7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lOyB9IH1cbiIsCgkJIi8vIEBkb2Mgb2ZmXG4vLyBFeHRlbmRzIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQgdG8gZW5jbG9zZSBhbnkgZmxvYXRzIGl0IGNvbnRhaW5zLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwiaGFja3NcIjtcblxuLy8gVGhpcyBiYXNpYyBtZXRob2QgaXMgcHJlZmVycmVkIGZvciB0aGUgdXN1YWwgY2FzZSwgd2hlbiBwb3NpdGlvbmVkXG4vLyBjb250ZW50IHdpbGwgbm90IHNob3cgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIuXG4vL1xuLy8gUmVjb21tZW5kYXRpb25zIGluY2x1ZGUgdXNpbmcgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGEgd2lkdGguXG4vLyBDcmVkaXQ6IFtxdWlya3Ntb2RlLm9yZ10oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDUvMDMvY2xlYXJpbmdfZmxvYXRzLmh0bWwpXG5AbWl4aW4gY2xlYXJmaXgge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlxcMDAyMFwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBjbGVhcjogYm90aDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuIiwKCQkiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9XG4gICAgQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH0gfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxOyB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIFRoaXMgbW9kdWxlIGhhcyBtb3ZlZC5cbkBpbXBvcnQgXCIuLi8uLi9yZXNldC91dGlsaXRpZXNcIjtcbiIsCgkJIi8vIEJhc2VkIG9uIFtFcmljIE1leWVyJ3MgcmVzZXQgMi4wXShodHRwOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY3NzL3Jlc2V0L2luZGV4Lmh0bWwpXG4vLyBHbG9iYWwgcmVzZXQgcnVsZXMuXG4vLyBGb3IgbW9yZSBzcGVjaWZpYyByZXNldHMsIHVzZSB0aGUgcmVzZXQgbWl4aW5zIHByb3ZpZGVkIGJlbG93XG5AbWl4aW4gZ2xvYmFsLXJlc2V0IHtcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfSB9XG5cbi8vIFJlc2V0IHRoZSBib3ggbW9kZWwgbWVhc3VyZW1lbnRzLlxuQG1peGluIHJlc2V0LWJveC1tb2RlbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi8vIFJlc2V0IHRoZSBmb250IGFuZCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gcmVzZXQtZm9udCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbi8vIFJlc2V0cyB0aGUgb3V0bGluZSB3aGVuIGZvY3VzLlxuLy8gRm9yIGFjY2Vzc2liaWxpdHkgeW91IG5lZWQgdG8gYXBwbHkgc29tZSBzdHlsaW5nIGluIGl0cyBwbGFjZS5cbkBtaXhpbiByZXNldC1mb2N1cyB7XG4gIG91dGxpbmU6IDA7IH1cblxuLy8gUmVzZXQgYSBib2R5IGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi8vIFJlc2V0IHRoZSBsaXN0IHN0eWxlIG9mIGFuIGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLy8gUmVzZXQgYSB0YWJsZVxuQG1peGluIHJlc2V0LXRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxuLy8gUmVzZXQgYSB0YWJsZSBjZWxsIChgdGhgLCBgdGRgKVxuQG1peGluIHJlc2V0LXRhYmxlLWNlbGwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8vIFJlc2V0IGEgcXVvdGF0aW9uIChgcWAsIGBibG9ja3F1b3RlYClcbkBtaXhpbiByZXNldC1xdW90YXRpb24ge1xuICBxdW90ZXM6IG5vbmU7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwKCQkiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH1cbiIsCgkJIi8vIG1ha2VzIGEgbGlzdCBpbmxpbmUuXG5cbkBtaXhpbiBpbmxpbmUtbGlzdCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgJiwgJiBsaSB7XG4gICAgbWFyZ2luOiAwcHg7XG4gICAgcGFkZGluZzogMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG5cbi8vIG1ha2VzIGFuIGlubGluZSBsaXN0IGRlbGltaXRlZCB3aXRoIHRoZSBwYXNzZWQgc3RyaW5nLlxuLy8gRGVmYXVsdHMgdG8gbWFraW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QuXG4vL1xuLy8gUGxlYXNlIG1ha2Ugbm90ZSBvZiB0aGUgYnJvd3NlciBzdXBwb3J0IGlzc3VlcyBiZWZvcmUgdXNpbmcgdGhpcyBtaXhpbjpcbi8vXG4vLyB1c2Ugb2YgYGNvbnRlbnRgIGFuZCBgOmFmdGVyYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkIGluIGFsbCBicm93c2Vycy5cbi8vIFNlZSBxdWlya3Ntb2RlIGZvciB0aGUgW3N1cHBvcnQgbWF0cml4XShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QxNSlcbi8vXG4vLyBgOmxhc3QtY2hpbGRgIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWQuXG4vLyBzZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkpLlxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuXG5AbWl4aW4gZGVsaW1pdGVkLWxpc3QoJHNlcGFyYXRvcjogXCIsIFwiKSB7XG4gIEBpbmNsdWRlIGlubGluZS1saXN0O1xuICBsaSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAkc2VwYXJhdG9yOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiOyB9IH1cbiAgICAmLmxhc3Qge1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7IH0gfSB9IH1cblxuLy8gU2VlIFtkZWxpbWl0ZWQtbGlzdF0oI21peGluLWRlbGltaXRlZC1saXN0KVxuLy8gQGRlcHJlY2F0ZWRcbkBtaXhpbiBjb21tYS1kZWxpbWl0ZWQtbGlzdCB7XG4gIEB3YXJuIFwiY29tbWEtZGVsaW1pdGVkLWxpc3QgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBkZWxpbWl0ZWQtbGlzdCBpbnN0ZWFkLlwiO1xuICBAaW5jbHVkZSBkZWxpbWl0ZWQtbGlzdDsgfVxuIiwKCQkiLy8gSW5saW5lLUJsb2NrIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgICB1bC5uYXYge1xuLy8gICAgICAgQGltcG9ydCBpbmxpbmUtYmxvY2stbGlzdDtcbi8vICAgICB9XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gYEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcmAgb24geW91ciB1bC9vbCBhbmRcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtYCBvbiB5b3VyIGxpLiBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZ1xuLy8gb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbi8vICAgICAgID4gbGkge1xuLy8gICAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtO1xuLy8gICAgICAgfVxuLy8gICAgIH1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCJob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcIi4uLy4uL2NzczMvaW5saW5lLWJsb2NrXCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYW4gaW5saW5lLWJsb2NrIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyOyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCBgaW5saW5lLWJsb2NrLWxpc3RgLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nOyB9IH0gfVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGlubGluZS1ibG9jayBhbmQgd29uJ3Qgd3JhcC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdCgkcGFkZGluZzogZmFsc2UpIHtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbSgkcGFkZGluZyk7IH0gfVxuIiwKCQkiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkge1xuICAgIEBpbmNsdWRlIG5vLWJ1bGxldDsgfSB9XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIpICgoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyKTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IH0gfVxuIiwKCQkiLy8gSG9yaXpvbnRhbCBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3Rcbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciBvbiB5b3VyIHVsL29sIGFuZCAraG9yaXpvbnRhbC1saXN0LWl0ZW0gb24geW91ciBsaS5cbi8vIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lclxuLy8gICAgID4gbGlcbi8vICAgICAgICtob3Jpem9udGFsLWxpc3QtaXRlbVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGEgaG9yaXpvbnRhbCBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG4vL1xuLy8gOmxhc3QtY2hpbGQgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZFxuLy8gc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5IGZvciB0aGUgc3VwcG9ydCBtYXRyaXhcbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGluY2x1ZGUgZmxvYXQoJGRpcmVjdGlvbik7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7IH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHtcbiAgICAgIHBhZGRpbmctI3skZGlyZWN0aW9ufTogMDsgfVxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gICAgJi5sYXN0IHtcbiAgICAgIHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH0gfSB9XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgZmxvYXRlZCBsZWZ0IGFuZCB3b24ndCB3cmFwLlxuLy8gVGhpcyBpcyBub3QgYW4gaW5saW5lIGxpc3QuXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0KCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nLCAkZGlyZWN0aW9uKTsgfSB9XG4iLAoJCSIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgbm8tYnVsbGV0OyB9IH1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMikgKCgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDIpO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfSB9XG4iLAoJCSIvLyBAZG9jIG9mZlxuLy8gRXh0ZW5kcyB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHRvIGVuY2xvc2UgYW55IGZsb2F0cyBpdCBjb250YWlucy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vIFRoaXMgYmFzaWMgbWV0aG9kIGlzIHByZWZlcnJlZCBmb3IgdGhlIHVzdWFsIGNhc2UsIHdoZW4gcG9zaXRpb25lZFxuLy8gY29udGVudCB3aWxsIG5vdCBzaG93IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyLlxuLy9cbi8vIFJlY29tbWVuZGF0aW9ucyBpbmNsdWRlIHVzaW5nIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHdpZHRoLlxuLy8gQ3JlZGl0OiBbcXVpcmtzbW9kZS5vcmddKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA1LzAzL2NsZWFyaW5nX2Zsb2F0cy5odG1sKVxuQG1peGluIGNsZWFyZml4IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIG9sZGVyIG1ldGhvZCBmcm9tIFBvc2l0aW9uIElzIEV2ZXJ5dGhpbmcgY2FsbGVkXG4vLyBbRWFzeSBDbGVhcmluZ10oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZWFzeWNsZWFyaW5nLmh0bWwpXG4vLyBoYXMgdGhlIGFkdmFudGFnZSBvZiBhbGxvd2luZyBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGhhbmdcbi8vIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyIGF0IHRoZSBleHBlbnNlIG9mIG1vcmUgdHJpY2t5IENTUy5cbkBtaXhpbiBsZWdhY3ktcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgUElFIGNsZWFyZml4IG1ldGhvZCB0aGF0IHJlZHVjZXMgdGhlIGFtb3VudCBvZiBDU1Mgb3V0cHV0LlxuLy8gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBGaXJlZm94IGJlZm9yZSAzLjUgeW91IG5lZWQgdG8gdXNlIGBsZWdhY3ktcGllLWNsZWFyZml4YCBpbnN0ZWFkLlxuLy9cbi8vIEFkYXB0ZWQgZnJvbTogW0EgbmV3IG1pY3JvIGNsZWFyZml4IGhhY2tdKGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLylcbkBtaXhpbiBwaWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfVxuICAgIEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTsgfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLAoJCSIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH0gfVxuXG4vLyBSZXNldCB0aGUgYm94IG1vZGVsIG1lYXN1cmVtZW50cy5cbkBtaXhpbiByZXNldC1ib3gtbW9kZWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG4vLyBSZXNldCB0aGUgZm9udCBhbmQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIHJlc2V0LWZvbnQge1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vLyBSZXNldHMgdGhlIG91dGxpbmUgd2hlbiBmb2N1cy5cbi8vIEZvciBhY2Nlc3NpYmlsaXR5IHlvdSBuZWVkIHRvIGFwcGx5IHNvbWUgc3R5bGluZyBpbiBpdHMgcGxhY2UuXG5AbWl4aW4gcmVzZXQtZm9jdXMge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8vIFJlc2V0IGEgYm9keSBlbGVtZW50LlxuQG1peGluIHJlc2V0LWJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG4vLyBSZXNldCB0aGUgbGlzdCBzdHlsZSBvZiBhbiBlbGVtZW50LlxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi8vIFJlc2V0IGEgdGFibGVcbkBtaXhpbiByZXNldC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8vIFJlc2V0IGEgdGFibGUgY2VsbCAoYHRoYCwgYHRkYClcbkBtaXhpbiByZXNldC10YWJsZS1jZWxsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vLyBSZXNldCBhIHF1b3RhdGlvbiAoYHFgLCBgYmxvY2txdW90ZWApXG5AbWl4aW4gcmVzZXQtcXVvdGF0aW9uIHtcbiAgcXVvdGVzOiBub25lO1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsCgkJIi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OmxlZnQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LWxlZnQge1xuICBAaW5jbHVkZSBmbG9hdChsZWZ0KTsgfVxuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpyaWdodCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtcmlnaHQge1xuICBAaW5jbHVkZSBmbG9hdChyaWdodCk7IH1cblxuLy8gRGlyZWN0aW9uIGluZGVwZW5kZW50IGZsb2F0IG1peGluIHRoYXQgZml4ZXMgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQoJHNpZGU6IGxlZnQpIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogdW5xdW90ZSgkc2lkZSk7IH1cblxuLy8gUmVzZXRzIGZsb2F0ZWQgZWxlbWVudHMgYmFjayB0byB0aGVpciBkZWZhdWx0IG9mIGBmbG9hdDogbm9uZWAgYW5kIGRlZmF1bHRzXG4vLyB0byBgZGlzcGxheTogYmxvY2tgIHVubGVzcyB5b3UgcGFzcyBgaW5saW5lYCBhcyBhbiBhcmd1bWVudFxuLy9cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIGJvZHkuaG9tZXBhZ2Vcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK2Zsb2F0LWxlZnRcbi8vICAgICBib2R5LnNpZ251cFxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArcmVzZXQtZmxvYXRcbkBtaXhpbiByZXNldC1mbG9hdCgkZGlzcGxheTogYmxvY2spIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6ICRkaXNwbGF5OyB9XG4iLAoJCSIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfVxuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBTZXQgYCRpbmxpbmUtYmxvY2stYWxpZ25tZW50YCB0byBgbm9uZWAgb3IgYGZhbHNlYCB0byBkaXNhYmxlIHRoZSBvdXRwdXRcbi8vIG9mIGEgdmVydGljYWwtYWxpZ24gcHJvcGVydHkgaW4gdGhlIGlubGluZS1ibG9jayBtaXhpbi5cbi8vIE9yIHNldCBpdCB0byBhIGxlZ2FsIHZhbHVlIGZvciBgdmVydGljYWwtYWxpZ25gIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC5cbiRpbmxpbmUtYmxvY2stYWxpZ25tZW50OiBtaWRkbGUgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGEgY3Jvc3MtYnJvd3NlciBtZXRob2QgdG8gaW1wbGVtZW50IGBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7YFxuQG1peGluIGlubGluZS1ibG9jaygkYWxpZ25tZW50OiAkaW5saW5lLWJsb2NrLWFsaWdubWVudCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1zdGFjazsgfVxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIEBpZiAkYWxpZ25tZW50IGFuZCAkYWxpZ25tZW50ICE9IG5vbmUge1xuICAgIHZlcnRpY2FsLWFsaWduOiAkYWxpZ25tZW50OyB9XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAqdmVydGljYWwtYWxpZ246IGF1dG87XG4gICAgem9vbTogMTtcbiAgICAqZGlzcGxheTogaW5saW5lOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBuby1idWxsZXQ7IH0gfVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCgkcGFkZGluZyAtICR3aWR0aCkgLyAyKSAoKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMik7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCJ0ZXh0L2VsbGlwc2lzXCI7XG5AaW1wb3J0IFwidGV4dC9ub3dyYXBcIjtcbkBpbXBvcnQgXCJ0ZXh0L3JlcGxhY2VtZW50XCI7XG5AaW1wb3J0IFwidGV4dC9mb3JjZS13cmFwXCI7XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vY3NzMy9zaGFyZWRcIjtcblxuLy8gVG8gZ2V0IGZ1bGwgZmlyZWZveCBzdXBwb3J0LCB5b3UgbXVzdCBpbnN0YWxsIHRoZSBlbGxpcHNpcyBwYXR0ZXJuOlxuLy9cbi8vICAgICBjb21wYXNzIGluc3RhbGwgY29tcGFzcy9lbGxpcHNpc1xuJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGlzIHRlY2huaXF1ZSwgYnkgW0p1c3RpbiBNYXh3ZWxsXShodHRwOi8vY29kZTQwNC5jb20vKSwgd2FzIG9yaWdpbmFsbHlcbi8vIHB1Ymxpc2hlZCBbaGVyZV0oaHR0cDovL21hdHRzbmlkZXIuY29tL2Nzcy9jc3Mtc3RyaW5nLXRydW5jYXRpb24td2l0aC1lbGxpcHNpcy8pLlxuLy8gRmlyZWZveCBpbXBsZW1lbnRhdGlvbiBieSBbUmlra2VydCBLb3BwZXNdKGh0dHA6Ly93d3cucmlra2VydGtvcHBlcy5jb20vdGhvdWdodHMvMjAwOC82LykuXG5AbWl4aW4gZWxsaXBzaXMoJG5vLXdyYXA6IHRydWUpIHtcbiAgQGlmICRuby13cmFwIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0ZXh0LW92ZXJmbG93LCBlbGxpcHNpcywgbm90IC1tb3osIG5vdCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kICR1c2UtbW96aWxsYS1lbGxpcHNpcy1iaW5kaW5nIHtcbiAgICAtbW96LWJpbmRpbmc6IHN0eWxlc2hlZXQtdXJsKHVucXVvdGUoXCJ4bWwvZWxsaXBzaXMueG1sI2VsbGlwc2lzXCIpKTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBXaGVuIHJlbWVtYmVyaW5nIHdoZXRoZXIgb3Igbm90IHRoZXJlJ3MgYSBoeXBoZW4gaW4gd2hpdGUtc3BhY2UgaXMgdG9vIGhhcmRcbkBtaXhpbiBub3dyYXAge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG4iLAoJCSIvLyBJbmRpY2F0ZXMgdGhlIGRpcmVjdGlvbiB5b3UgcHJlZmVyIHRvIG1vdmUgeW91ciB0ZXh0XG4vLyB3aGVuIGhpZGluZyBpdC5cbi8vXG4vLyBgbGVmdGAgaXMgbW9yZSByb2J1c3QsIGVzcGVjaWFsbHkgaW4gb2xkZXIgYnJvd3NlcnMuXG4vLyBgcmlnaHRgIHNlZW1zIGhhdmUgYmV0dGVyIHJ1bnRpbWUgcGVyZm9ybWFuY2UuXG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogbGVmdCAhZGVmYXVsdDtcblxuLy8gSGlkZXMgaHRtbCB0ZXh0IGFuZCByZXBsYWNlcyBpdCB3aXRoIGFuIGltYWdlLlxuLy8gSWYgeW91IHVzZSB0aGlzIG9uIGFuIGlubGluZSBlbGVtZW50LCB5b3Ugd2lsbCBuZWVkIHRvIGNoYW5nZSB0aGUgZGlzcGxheSB0byBibG9jayBvciBpbmxpbmUtYmxvY2suXG4vLyBBbHNvLCBpZiB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgZGlmZmVycyBzaWduaWZpY2FudGx5IGZyb20gdGhlIGZvbnQgc2l6ZSwgeW91J2xsIG5lZWQgdG8gc2V0IHRoZSB3aWR0aCBhbmQvb3IgaGVpZ2h0LlxuLy9cbi8vIFBhcmFtZXRlcnM6XG4vL1xuLy8gKiBgaW1nYCAtLSB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBwcm9qZWN0IGltYWdlIGRpcmVjdG9yeSB0byB0aGUgaW1hZ2UsIG9yIGEgdXJsIGxpdGVyYWwuXG4vLyAqIGB4YCAtLSB0aGUgeCBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbi8vICogYHlgIC0tIHRoZSB5IHBvc2l0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlLlxuQG1peGluIHJlcGxhY2UtdGV4dCgkaW1nLCAkeDogNTAlLCAkeTogNTAlKSB7XG4gIEBpbmNsdWRlIGhpZGUtdGV4dDtcbiAgYmFja2dyb3VuZDoge1xuICAgIEBpZiBpcy11cmwoJGltZykge1xuICAgICAgaW1hZ2U6IHVybCgkaW1nKTsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGltYWdlOiBpbWFnZS11cmwoJGltZyk7IH1cbiAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBwb3NpdGlvbjogJHggJHk7IH0gfVxuXG4vLyBMaWtlIHRoZSBgcmVwbGFjZS10ZXh0YCBtaXhpbiwgYnV0IGFsc28gc2V0cyB0aGUgd2lkdGhcbi8vIGFuZCBoZWlnaHQgb2YgdGhlIGVsZW1lbnQgYWNjb3JkaW5nIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBpbWFnZS5cbi8vXG4vLyBJZiB5b3Ugc2V0IGAkaW5saW5lYCB0byB0cnVlLCB0aGVuIGFuIGlubGluZSBpbWFnZSAoZGF0YSB1cmkpIHdpbGwgYmUgdXNlZC5cbkBtaXhpbiByZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zKCRpbWcsICR4OiA1MCUsICR5OiA1MCUsICRpbmxpbmU6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIHJlcGxhY2UtdGV4dChpZigkaW5saW5lLCBpbmxpbmUtaW1hZ2UoJGltZyksICRpbWcpLCAkeCwgJHkpO1xuICB3aWR0aDogaW1hZ2Utd2lkdGgoJGltZyk7XG4gIGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRpbWcpOyB9XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBzbyB5b3UgY2FuIHNlZSB0aGUgYmFja2dyb3VuZC5cbi8vXG4vLyBUaGUgZGlyZWN0aW9uIGluZGljYXRlcyBob3cgdGhlIHRleHQgc2hvdWxkIGJlIG1vdmVkIG91dCBvZiB2aWV3LlxuLy9cbi8vIFNlZSBgJGhpZGUtdGV4dC1kaXJlY3Rpb25gIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB0byBzZXQgdGhpcyBnbG9iYWxseVxuLy8gZm9yIHlvdXIgYXBwbGljYXRpb24uXG5AbWl4aW4gaGlkZS10ZXh0KCRkaXJlY3Rpb246ICRoaWRlLXRleHQtZGlyZWN0aW9uKSB7XG4gIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICRhcHByb3hpbWF0ZS1lbS12YWx1ZTogMTJweDtcbiAgICAkd2lkZXItdGhhbi1hbnktc2NyZWVuOiAtOTk5OTtcbiAgICB0ZXh0LWluZGVudDogJHdpZGVyLXRoYW4tYW55LXNjcmVlbiAqICRhcHByb3hpbWF0ZS1lbS12YWx1ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgQGVsc2Uge1xuICAgIC8vIHNsaWdodGx5IHdpZGVyIHRoYW4gdGhlIGJveCBwcmV2ZW50cyBpc3N1ZXMgd2l0aCBpbmxpbmUtYmxvY2sgZWxlbWVudHNcbiAgICB0ZXh0LWluZGVudDogMTEwJTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47IH0gfVxuXG4vLyBIaWRlcyB0ZXh0IGluIGFuIGVsZW1lbnQgYnkgc3F1aXNoaW5nIHRoZSB0ZXh0IGludG8gb2JsaXZpb24uXG4vLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBoaWRlIHRleHQgY29udGFpbmVkIGluIGFuIGlubGluZSBlbGVtZW50XG4vLyBidXQgc3RpbGwgaGF2ZSBpdCByZWFkIGJ5IGEgc2NyZWVuIHJlYWRlci5cbkBtaXhpbiBzcXVpc2gtdGV4dCB7XG4gIGZvbnQ6IDAvMCBzZXJpZjtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDsgfVxuIiwKCQkiLy8gUHJldmVudCBsb25nIHVybHMgYW5kIHRleHQgZnJvbSBicmVha2luZyBsYXlvdXRzXG4vLyBbb3JpZ2luYWxseSBmcm9tIHBlcmlzaGFibGVwcmVzcy5jb21dKGh0dHA6Ly9wZXJpc2hhYmxlcHJlc3MuY29tL3ByZXNzLzIwMTAvMDYvMDEvd3JhcHBpbmctY29udGVudC8pXG5AbWl4aW4gZm9yY2Utd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG4gIC8vIENTUyAyLjBcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAvLyBDU1MgMi4xXG4gIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbiAgLy8gQ1NTIDMuMFxuICB3aGl0ZS1zcGFjZTogLXByZS13cmFwO1xuICAvLyBPcGVyYSA0LTZcbiAgd2hpdGUtc3BhY2U6IC1vLXByZS13cmFwO1xuICAvLyBPcGVyYSA3XG4gIHdoaXRlLXNwYWNlOiAtbW96LXByZS13cmFwO1xuICAvLyBNb3ppbGxhXG4gIHdoaXRlLXNwYWNlOiAtaHAtcHJlLXdyYXA7XG4gIC8vIEhQIFByaW50ZXJzXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiB9ICAvLyBJRSA1K1xuIiwKCQkiQGltcG9ydCBcInR5cG9ncmFwaHkvbGlua3NcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpc3RzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS90ZXh0XCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS92ZXJ0aWNhbF9yaHl0aG1cIjtcbiIsCgkJIkBpbXBvcnQgXCJsaW5rcy9ob3Zlci1saW5rXCI7XG5AaW1wb3J0IFwibGlua3MvbGluay1jb2xvcnNcIjtcbkBpbXBvcnQgXCJsaW5rcy91bnN0eWxlZC1saW5rXCI7XG4iLAoJCSIvLyBhIGxpbmsgdGhhdCBvbmx5IGhhcyBhbiB1bmRlcmxpbmUgd2hlbiB5b3UgaG92ZXIgb3ZlciBpdFxuQG1peGluIGhvdmVyLWxpbmsge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9IH1cbiIsCgkJIi8vIFNldCBhbGwgdGhlIGNvbG9ycyBmb3IgYSBsaW5rIHdpdGggb25lIG1peGluIGNhbGwuXG4vLyBPcmRlciBvZiBhcmd1bWVudHMgaXM6XG4vL1xuLy8gMS4gbm9ybWFsXG4vLyAyLiBob3ZlclxuLy8gMy4gYWN0aXZlXG4vLyA0LiB2aXNpdGVkXG4vLyA1LiBmb2N1c1xuLy9cbi8vIFRob3NlIHN0YXRlcyBub3Qgc3BlY2lmaWVkIHdpbGwgaW5oZXJpdC5cbi8vIE1peGluIHRvIGFuIGFuY2hvciBsaW5rIGxpa2Ugc286XG4vLyAgICAgYVxuLy8gICAgICAgK2xpbmstY29sb3JzKCMwMGMsICMwY2MsICNjMGMsICNjY2MsICNjYzApXG5cbkBtaXhpbiBsaW5rLWNvbG9ycygkbm9ybWFsLCAkaG92ZXI6IGZhbHNlLCAkYWN0aXZlOiBmYWxzZSwgJHZpc2l0ZWQ6IGZhbHNlLCAkZm9jdXM6IGZhbHNlKSB7XG4gIGNvbG9yOiAkbm9ybWFsO1xuICBAaWYgJHZpc2l0ZWQge1xuICAgICY6dmlzaXRlZCB7XG4gICAgICBjb2xvcjogJHZpc2l0ZWQ7IH0gfVxuICBAaWYgJGZvY3VzIHtcbiAgICAmOmZvY3VzIHtcbiAgICAgIGNvbG9yOiAkZm9jdXM7IH0gfVxuICBAaWYgJGhvdmVyIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkaG92ZXI7IH0gfVxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjphY3RpdmUge1xuICAgICAgY29sb3I6ICRhY3RpdmU7IH0gfSB9XG4iLAoJCSIvLyBBIGxpbmsgdGhhdCBsb29rcyBhbmQgYWN0cyBsaWtlIHRoZSB0ZXh0IGl0IGlzIGNvbnRhaW5lZCB3aXRoaW5cbkBtaXhpbiB1bnN0eWxlZC1saW5rIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbiAgY3Vyc29yOiBpbmhlcml0O1xuICAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwibGlzdHMvaG9yaXpvbnRhbC1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvaW5saW5lLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtYmxvY2stbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2J1bGxldHNcIjtcbiIsCgkJIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nOyB9XG4gICAgJjpmaXJzdC1jaGlsZCwgJi5maXJzdCB7XG4gICAgICBwYWRkaW5nLSN7JGRpcmVjdGlvbn06IDA7IH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7XG4gICAgICBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9IH0gfVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwKCQkiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkge1xuICAgIEBpbmNsdWRlIG5vLWJ1bGxldDsgfSB9XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIpICgoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyKTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IH0gfVxuIiwKCQkiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cblxuLy8gVGhpcyBvbGRlciBtZXRob2QgZnJvbSBQb3NpdGlvbiBJcyBFdmVyeXRoaW5nIGNhbGxlZFxuLy8gW0Vhc3kgQ2xlYXJpbmddKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2Vhc3ljbGVhcmluZy5odG1sKVxuLy8gaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgcG9zaXRpb25lZCBlbGVtZW50cyB0byBoYW5nXG4vLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lciBhdCB0aGUgZXhwZW5zZSBvZiBtb3JlIHRyaWNreSBDU1MuXG5AbWl4aW4gbGVnYWN5LXBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXFwwMDIwXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cblxuLy8gVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFBJRSBjbGVhcmZpeCBtZXRob2QgdGhhdCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgQ1NTIG91dHB1dC5cbi8vIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCBiZWZvcmUgMy41IHlvdSBuZWVkIHRvIHVzZSBgbGVnYWN5LXBpZS1jbGVhcmZpeGAgaW5zdGVhZC5cbi8vXG4vLyBBZGFwdGVkIGZyb206IFtBIG5ldyBtaWNybyBjbGVhcmZpeCBoYWNrXShodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8pXG5AbWl4aW4gcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH1cbiAgICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jazsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfSB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gVGhpcyBtb2R1bGUgaGFzIG1vdmVkLlxuQGltcG9ydCBcIi4uLy4uL3Jlc2V0L3V0aWxpdGllc1wiO1xuIiwKCQkiLy8gQmFzZWQgb24gW0VyaWMgTWV5ZXIncyByZXNldCAyLjBdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvaW5kZXguaHRtbClcbi8vIEdsb2JhbCByZXNldCBydWxlcy5cbi8vIEZvciBtb3JlIHNwZWNpZmljIHJlc2V0cywgdXNlIHRoZSByZXNldCBtaXhpbnMgcHJvdmlkZWQgYmVsb3dcbkBtaXhpbiBnbG9iYWwtcmVzZXQge1xuICBodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICAvLyBVbmxpa2UgRXJpYydzIG9yaWdpbmFsIHJlc2V0LCB3ZSByZXNldCB0aGUgaHRtbCBlbGVtZW50IHRvIGJlIGNvbXBhdGlibGVcbiAgLy8gd2l0aCB0aGUgdmVydGljYWwgcmh5dGhtIG1peGlucy5cbiAgaHRtbCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm9keTsgfVxuICBvbCwgdWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGU7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH1cbiAgQGluY2x1ZGUgcmVzZXQtaHRtbDU7IH1cblxuLy8gUmVzZXQgYWxsIGVsZW1lbnRzIHdpdGhpbiBzb21lIHNlbGVjdG9yIHNjb3BlLiBUbyByZXNldCB0aGUgc2VsZWN0b3IgaXRzZWxmLFxuLy8gbWl4aW4gdGhlIGFwcHJvcHJpYXRlIHJlc2V0IG1peGluIGZvciB0aGF0IGVsZW1lbnQgdHlwZSBhcyB3ZWxsLiBUaGlzIGNvdWxkIGJlXG4vLyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gc3R5bGUgYSBwYXJ0IG9mIHlvdXIgcGFnZSBpbiBhIGRyYW1hdGljYWxseSBkaWZmZXJlbnQgd2F5LlxuQG1peGluIG5lc3RlZC1yZXNldCB7XG4gIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgY29udGVudDogbm9uZTsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgYm9yZGVyLlxuQG1peGluIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXIge1xuICBib3JkZXI6IG5vbmU7IH1cblxuLy8gVW5yZWNvZ25pemVkIGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgaW5saW5lLlxuLy8gVGhpcyByZXNldCBwcm92aWRlcyBhIGJhc2ljIHJlc2V0IGZvciBibG9jayBodG1sNSBlbGVtZW50c1xuLy8gc28gdGhleSBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGluIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcmVjb2duaXplIHRoZW1cbi8vIGFuZCByZXNldCBpbiBicm93c2VycyB0aGF0IGhhdmUgZGVmYXVsdCBzdHlsZXMgZm9yIHRoZW0uXG5AbWl4aW4gcmVzZXQtaHRtbDUge1xuICAje2VsZW1lbnRzLW9mLXR5cGUoaHRtbDUtYmxvY2spfSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGRpc3BsYXkgb2YgaW5saW5lIGFuZCBibG9jayBlbGVtZW50cyB0byB0aGVpciBkZWZhdWx0IGRpc3BsYXlcbi8vIGFjY29yZGluZyB0byB0aGVpciB0YWcgdHlwZS4gRWxlbWVudHMgdGhhdCBoYXZlIGEgZGVmYXVsdCBkaXNwbGF5IHRoYXQgdmFyaWVzIGFjcm9zc1xuLy8gdmVyc2lvbnMgb2YgaHRtbCBvciBicm93c2VyIGFyZSBub3QgaGFuZGxlZCBoZXJlLCBidXQgdGhpcyBjb3ZlcnMgdGhlIDkwJSB1c2UgY2FzZS5cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIC8vIFR1cm4gb2ZmIHRoZSBkaXNwbGF5IGZvciBib3RoIG9mIHRoZXNlIGNsYXNzZXNcbi8vICAgICAudW5yZWdpc3RlcmVkLW9ubHksIC5yZWdpc3RlcmVkLW9ubHlcbi8vICAgICAgIGRpc3BsYXk6IG5vbmVcbi8vICAgICAvLyBOb3cgdHVybiBvbmx5IG9uZSBvZiB0aGVtIGJhY2sgb24gZGVwZW5kaW5nIG9uIHNvbWUgb3RoZXIgY29udGV4dC5cbi8vICAgICBib2R5LnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnJlZ2lzdGVyZWQtb25seVwiKVxuLy8gICAgIGJvZHkudW5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi51bnJlZ2lzdGVyZWQtb25seVwiKVxuQG1peGluIHJlc2V0LWRpc3BsYXkoJHNlbGVjdG9yOiBcIlwiLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiaW5saW5lXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiYmxvY2tcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG4iLAoJCSIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfVxuIiwKCQkiLy8gbWFrZXMgYSBsaXN0IGlubGluZS5cblxuQG1peGluIGlubGluZS1saXN0IHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAmLCAmIGxpIHtcbiAgICBtYXJnaW46IDBweDtcbiAgICBwYWRkaW5nOiAwcHg7XG4gICAgZGlzcGxheTogaW5saW5lOyB9IH1cblxuLy8gbWFrZXMgYW4gaW5saW5lIGxpc3QgZGVsaW1pdGVkIHdpdGggdGhlIHBhc3NlZCBzdHJpbmcuXG4vLyBEZWZhdWx0cyB0byBtYWtpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC5cbi8vXG4vLyBQbGVhc2UgbWFrZSBub3RlIG9mIHRoZSBicm93c2VyIHN1cHBvcnQgaXNzdWVzIGJlZm9yZSB1c2luZyB0aGlzIG1peGluOlxuLy9cbi8vIHVzZSBvZiBgY29udGVudGAgYW5kIGA6YWZ0ZXJgIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWQgaW4gYWxsIGJyb3dzZXJzLlxuLy8gU2VlIHF1aXJrc21vZGUgZm9yIHRoZSBbc3VwcG9ydCBtYXRyaXhdKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDE1KVxuLy9cbi8vIGA6bGFzdC1jaGlsZGAgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZC5cbi8vIHNlZSBxdWlya3Ntb2RlIGZvciB0aGUgW3N1cHBvcnQgbWF0cml4XShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSkuXG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG5cbkBtaXhpbiBkZWxpbWl0ZWQtbGlzdCgkc2VwYXJhdG9yOiBcIiwgXCIpIHtcbiAgQGluY2x1ZGUgaW5saW5lLWxpc3Q7XG4gIGxpIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRzZXBhcmF0b3I7IH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7IH0gfVxuICAgICYubGFzdCB7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjsgfSB9IH0gfVxuXG4vLyBTZWUgW2RlbGltaXRlZC1saXN0XSgjbWl4aW4tZGVsaW1pdGVkLWxpc3QpXG4vLyBAZGVwcmVjYXRlZFxuQG1peGluIGNvbW1hLWRlbGltaXRlZC1saXN0IHtcbiAgQHdhcm4gXCJjb21tYS1kZWxpbWl0ZWQtbGlzdCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGRlbGltaXRlZC1saXN0IGluc3RlYWQuXCI7XG4gIEBpbmNsdWRlIGRlbGltaXRlZC1saXN0OyB9XG4iLAoJCSIvLyBJbmxpbmUtQmxvY2sgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICAgIHVsLm5hdiB7XG4vLyAgICAgICBAaW1wb3J0IGlubGluZS1ibG9jay1saXN0O1xuLy8gICAgIH1cbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyBgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyYCBvbiB5b3VyIHVsL29sIGFuZFxuLy8gYEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW1gIG9uIHlvdXIgbGkuIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nXG4vLyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgICB1bC5uYXYge1xuLy8gICAgICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyO1xuLy8gICAgICAgPiBsaSB7XG4vLyAgICAgICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW07XG4vLyAgICAgICB9XG4vLyAgICAgfVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcImhvcml6b250YWwtbGlzdFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2Zsb2F0XCI7XG5AaW1wb3J0IFwiLi4vLi4vY3NzMy9pbmxpbmUtYmxvY2tcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhbiBpbmxpbmUtYmxvY2sgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCBgaW5saW5lLWJsb2NrLWxpc3RgLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50IGBpbmxpbmUtYmxvY2stbGlzdGAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QtaXRlbSgkcGFkZGluZzogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbm8tYnVsbGV0O1xuICBAaW5jbHVkZSBpbmxpbmUtYmxvY2s7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7IH0gfSB9XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgaW5saW5lLWJsb2NrIGFuZCB3b24ndCB3cmFwLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0KCRwYWRkaW5nOiBmYWxzZSkge1xuICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtKCRwYWRkaW5nKTsgfSB9XG4iLAoJCSIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgbm8tYnVsbGV0OyB9IH1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMikgKCgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDIpO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfSB9XG4iLAoJCSIvLyBIb3Jpem9udGFsIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdFxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIG9uIHlvdXIgdWwvb2wgYW5kICtob3Jpem9udGFsLWxpc3QtaXRlbSBvbiB5b3VyIGxpLlxuLy8gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmcgb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyXG4vLyAgICAgPiBsaVxuLy8gICAgICAgK2hvcml6b250YWwtbGlzdC1pdGVtXG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9yZXNldFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2Zsb2F0XCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYSBob3Jpem9udGFsIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICBAaW5jbHVkZSBjbGVhcmZpeDsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbi8vXG4vLyA6bGFzdC1jaGlsZCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkXG4vLyBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkgZm9yIHRoZSBzdXBwb3J0IG1hdHJpeFxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgbm8tYnVsbGV0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaW5jbHVkZSBmbG9hdCgkZGlyZWN0aW9uKTtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZzsgfVxuICAgICY6Zmlyc3QtY2hpbGQsICYuZmlyc3Qge1xuICAgICAgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgICAmLmxhc3Qge1xuICAgICAgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfSB9IH1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBmbG9hdGVkIGxlZnQgYW5kIHdvbid0IHdyYXAuXG4vLyBUaGlzIGlzIG5vdCBhbiBpbmxpbmUgbGlzdC5cbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QoJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmcsICRkaXJlY3Rpb24pOyB9IH1cbiIsCgkJIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBuby1idWxsZXQ7IH0gfVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCgkcGFkZGluZyAtICR3aWR0aCkgLyAyKSAoKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMik7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lOyB9IH1cbiIsCgkJIi8vIEBkb2Mgb2ZmXG4vLyBFeHRlbmRzIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQgdG8gZW5jbG9zZSBhbnkgZmxvYXRzIGl0IGNvbnRhaW5zLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwiaGFja3NcIjtcblxuLy8gVGhpcyBiYXNpYyBtZXRob2QgaXMgcHJlZmVycmVkIGZvciB0aGUgdXN1YWwgY2FzZSwgd2hlbiBwb3NpdGlvbmVkXG4vLyBjb250ZW50IHdpbGwgbm90IHNob3cgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIuXG4vL1xuLy8gUmVjb21tZW5kYXRpb25zIGluY2x1ZGUgdXNpbmcgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGEgd2lkdGguXG4vLyBDcmVkaXQ6IFtxdWlya3Ntb2RlLm9yZ10oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDUvMDMvY2xlYXJpbmdfZmxvYXRzLmh0bWwpXG5AbWl4aW4gY2xlYXJmaXgge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlxcMDAyMFwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBjbGVhcjogYm90aDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuIiwKCQkiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9XG4gICAgQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH0gfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxOyB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIFRoaXMgbW9kdWxlIGhhcyBtb3ZlZC5cbkBpbXBvcnQgXCIuLi8uLi9yZXNldC91dGlsaXRpZXNcIjtcbiIsCgkJIi8vIEJhc2VkIG9uIFtFcmljIE1leWVyJ3MgcmVzZXQgMi4wXShodHRwOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY3NzL3Jlc2V0L2luZGV4Lmh0bWwpXG4vLyBHbG9iYWwgcmVzZXQgcnVsZXMuXG4vLyBGb3IgbW9yZSBzcGVjaWZpYyByZXNldHMsIHVzZSB0aGUgcmVzZXQgbWl4aW5zIHByb3ZpZGVkIGJlbG93XG5AbWl4aW4gZ2xvYmFsLXJlc2V0IHtcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfSB9XG5cbi8vIFJlc2V0IHRoZSBib3ggbW9kZWwgbWVhc3VyZW1lbnRzLlxuQG1peGluIHJlc2V0LWJveC1tb2RlbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi8vIFJlc2V0IHRoZSBmb250IGFuZCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gcmVzZXQtZm9udCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbi8vIFJlc2V0cyB0aGUgb3V0bGluZSB3aGVuIGZvY3VzLlxuLy8gRm9yIGFjY2Vzc2liaWxpdHkgeW91IG5lZWQgdG8gYXBwbHkgc29tZSBzdHlsaW5nIGluIGl0cyBwbGFjZS5cbkBtaXhpbiByZXNldC1mb2N1cyB7XG4gIG91dGxpbmU6IDA7IH1cblxuLy8gUmVzZXQgYSBib2R5IGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi8vIFJlc2V0IHRoZSBsaXN0IHN0eWxlIG9mIGFuIGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLy8gUmVzZXQgYSB0YWJsZVxuQG1peGluIHJlc2V0LXRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxuLy8gUmVzZXQgYSB0YWJsZSBjZWxsIChgdGhgLCBgdGRgKVxuQG1peGluIHJlc2V0LXRhYmxlLWNlbGwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8vIFJlc2V0IGEgcXVvdGF0aW9uIChgcWAsIGBibG9ja3F1b3RlYClcbkBtaXhpbiByZXNldC1xdW90YXRpb24ge1xuICBxdW90ZXM6IG5vbmU7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwKCQkiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH1cbiIsCgkJIi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OmxlZnQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LWxlZnQge1xuICBAaW5jbHVkZSBmbG9hdChsZWZ0KTsgfVxuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpyaWdodCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtcmlnaHQge1xuICBAaW5jbHVkZSBmbG9hdChyaWdodCk7IH1cblxuLy8gRGlyZWN0aW9uIGluZGVwZW5kZW50IGZsb2F0IG1peGluIHRoYXQgZml4ZXMgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQoJHNpZGU6IGxlZnQpIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogdW5xdW90ZSgkc2lkZSk7IH1cblxuLy8gUmVzZXRzIGZsb2F0ZWQgZWxlbWVudHMgYmFjayB0byB0aGVpciBkZWZhdWx0IG9mIGBmbG9hdDogbm9uZWAgYW5kIGRlZmF1bHRzXG4vLyB0byBgZGlzcGxheTogYmxvY2tgIHVubGVzcyB5b3UgcGFzcyBgaW5saW5lYCBhcyBhbiBhcmd1bWVudFxuLy9cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIGJvZHkuaG9tZXBhZ2Vcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK2Zsb2F0LWxlZnRcbi8vICAgICBib2R5LnNpZ251cFxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArcmVzZXQtZmxvYXRcbkBtaXhpbiByZXNldC1mbG9hdCgkZGlzcGxheTogYmxvY2spIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6ICRkaXNwbGF5OyB9XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFNldCBgJGlubGluZS1ibG9jay1hbGlnbm1lbnRgIHRvIGBub25lYCBvciBgZmFsc2VgIHRvIGRpc2FibGUgdGhlIG91dHB1dFxuLy8gb2YgYSB2ZXJ0aWNhbC1hbGlnbiBwcm9wZXJ0eSBpbiB0aGUgaW5saW5lLWJsb2NrIG1peGluLlxuLy8gT3Igc2V0IGl0IHRvIGEgbGVnYWwgdmFsdWUgZm9yIGB2ZXJ0aWNhbC1hbGlnbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuJGlubGluZS1ibG9jay1hbGlnbm1lbnQ6IG1pZGRsZSAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgYSBjcm9zcy1icm93c2VyIG1ldGhvZCB0byBpbXBsZW1lbnQgYGRpc3BsYXk6IGlubGluZS1ibG9jaztgXG5AbWl4aW4gaW5saW5lLWJsb2NrKCRhbGlnbm1lbnQ6ICRpbmxpbmUtYmxvY2stYWxpZ25tZW50KSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLXN0YWNrOyB9XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgQGlmICRhbGlnbm1lbnQgYW5kICRhbGlnbm1lbnQgIT0gbm9uZSB7XG4gICAgdmVydGljYWwtYWxpZ246ICRhbGlnbm1lbnQ7IH1cbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgICp2ZXJ0aWNhbC1hbGlnbjogYXV0bztcbiAgICB6b29tOiAxO1xuICAgICpkaXNwbGF5OiBpbmxpbmU7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkge1xuICAgIEBpbmNsdWRlIG5vLWJ1bGxldDsgfSB9XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIpICgoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyKTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IH0gfVxuIiwKCQkiQGltcG9ydCBcInRleHQvZWxsaXBzaXNcIjtcbkBpbXBvcnQgXCJ0ZXh0L25vd3JhcFwiO1xuQGltcG9ydCBcInRleHQvcmVwbGFjZW1lbnRcIjtcbkBpbXBvcnQgXCJ0ZXh0L2ZvcmNlLXdyYXBcIjtcbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9jc3MzL3NoYXJlZFwiO1xuXG4vLyBUbyBnZXQgZnVsbCBmaXJlZm94IHN1cHBvcnQsIHlvdSBtdXN0IGluc3RhbGwgdGhlIGVsbGlwc2lzIHBhdHRlcm46XG4vL1xuLy8gICAgIGNvbXBhc3MgaW5zdGFsbCBjb21wYXNzL2VsbGlwc2lzXG4kdXNlLW1vemlsbGEtZWxsaXBzaXMtYmluZGluZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRoaXMgdGVjaG5pcXVlLCBieSBbSnVzdGluIE1heHdlbGxdKGh0dHA6Ly9jb2RlNDA0LmNvbS8pLCB3YXMgb3JpZ2luYWxseVxuLy8gcHVibGlzaGVkIFtoZXJlXShodHRwOi8vbWF0dHNuaWRlci5jb20vY3NzL2Nzcy1zdHJpbmctdHJ1bmNhdGlvbi13aXRoLWVsbGlwc2lzLykuXG4vLyBGaXJlZm94IGltcGxlbWVudGF0aW9uIGJ5IFtSaWtrZXJ0IEtvcHBlc10oaHR0cDovL3d3dy5yaWtrZXJ0a29wcGVzLmNvbS90aG91Z2h0cy8yMDA4LzYvKS5cbkBtaXhpbiBlbGxpcHNpcygkbm8td3JhcDogdHJ1ZSkge1xuICBAaWYgJG5vLXdyYXAge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRleHQtb3ZlcmZsb3csIGVsbGlwc2lzLCBub3QgLW1veiwgbm90IC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmcge1xuICAgIC1tb3otYmluZGluZzogc3R5bGVzaGVldC11cmwodW5xdW90ZShcInhtbC9lbGxpcHNpcy54bWwjZWxsaXBzaXNcIikpOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIFdoZW4gcmVtZW1iZXJpbmcgd2hldGhlciBvciBub3QgdGhlcmUncyBhIGh5cGhlbiBpbiB3aGl0ZS1zcGFjZSBpcyB0b28gaGFyZFxuQG1peGluIG5vd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiIsCgkJIi8vIEluZGljYXRlcyB0aGUgZGlyZWN0aW9uIHlvdSBwcmVmZXIgdG8gbW92ZSB5b3VyIHRleHRcbi8vIHdoZW4gaGlkaW5nIGl0LlxuLy9cbi8vIGBsZWZ0YCBpcyBtb3JlIHJvYnVzdCwgZXNwZWNpYWxseSBpbiBvbGRlciBicm93c2Vycy5cbi8vIGByaWdodGAgc2VlbXMgaGF2ZSBiZXR0ZXIgcnVudGltZSBwZXJmb3JtYW5jZS5cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiBsZWZ0ICFkZWZhdWx0O1xuXG4vLyBIaWRlcyBodG1sIHRleHQgYW5kIHJlcGxhY2VzIGl0IHdpdGggYW4gaW1hZ2UuXG4vLyBJZiB5b3UgdXNlIHRoaXMgb24gYW4gaW5saW5lIGVsZW1lbnQsIHlvdSB3aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSBkaXNwbGF5IHRvIGJsb2NrIG9yIGlubGluZS1ibG9jay5cbi8vIEFsc28sIGlmIHRoZSBzaXplIG9mIHRoZSBpbWFnZSBkaWZmZXJzIHNpZ25pZmljYW50bHkgZnJvbSB0aGUgZm9udCBzaXplLCB5b3UnbGwgbmVlZCB0byBzZXQgdGhlIHdpZHRoIGFuZC9vciBoZWlnaHQuXG4vL1xuLy8gUGFyYW1ldGVyczpcbi8vXG4vLyAqIGBpbWdgIC0tIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIHByb2plY3QgaW1hZ2UgZGlyZWN0b3J5IHRvIHRoZSBpbWFnZSwgb3IgYSB1cmwgbGl0ZXJhbC5cbi8vICogYHhgIC0tIHRoZSB4IHBvc2l0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlLlxuLy8gKiBgeWAgLS0gdGhlIHkgcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG5AbWl4aW4gcmVwbGFjZS10ZXh0KCRpbWcsICR4OiA1MCUsICR5OiA1MCUpIHtcbiAgQGluY2x1ZGUgaGlkZS10ZXh0O1xuICBiYWNrZ3JvdW5kOiB7XG4gICAgQGlmIGlzLXVybCgkaW1nKSB7XG4gICAgICBpbWFnZTogdXJsKCRpbWcpOyB9XG4gICAgQGVsc2Uge1xuICAgICAgaW1hZ2U6IGltYWdlLXVybCgkaW1nKTsgfVxuICAgIHJlcGVhdDogbm8tcmVwZWF0O1xuICAgIHBvc2l0aW9uOiAkeCAkeTsgfSB9XG5cbi8vIExpa2UgdGhlIGByZXBsYWNlLXRleHRgIG1peGluLCBidXQgYWxzbyBzZXRzIHRoZSB3aWR0aFxuLy8gYW5kIGhlaWdodCBvZiB0aGUgZWxlbWVudCBhY2NvcmRpbmcgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGltYWdlLlxuLy9cbi8vIElmIHlvdSBzZXQgYCRpbmxpbmVgIHRvIHRydWUsIHRoZW4gYW4gaW5saW5lIGltYWdlIChkYXRhIHVyaSkgd2lsbCBiZSB1c2VkLlxuQG1peGluIHJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMoJGltZywgJHg6IDUwJSwgJHk6IDUwJSwgJGlubGluZTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcmVwbGFjZS10ZXh0KGlmKCRpbmxpbmUsIGlubGluZS1pbWFnZSgkaW1nKSwgJGltZyksICR4LCAkeSk7XG4gIHdpZHRoOiBpbWFnZS13aWR0aCgkaW1nKTtcbiAgaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGltZyk7IH1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IHNvIHlvdSBjYW4gc2VlIHRoZSBiYWNrZ3JvdW5kLlxuLy9cbi8vIFRoZSBkaXJlY3Rpb24gaW5kaWNhdGVzIGhvdyB0aGUgdGV4dCBzaG91bGQgYmUgbW92ZWQgb3V0IG9mIHZpZXcuXG4vL1xuLy8gU2VlIGAkaGlkZS10ZXh0LWRpcmVjdGlvbmAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHRvIHNldCB0aGlzIGdsb2JhbGx5XG4vLyBmb3IgeW91ciBhcHBsaWNhdGlvbi5cbkBtaXhpbiBoaWRlLXRleHQoJGRpcmVjdGlvbjogJGhpZGUtdGV4dC1kaXJlY3Rpb24pIHtcbiAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgJGFwcHJveGltYXRlLWVtLXZhbHVlOiAxMnB4O1xuICAgICR3aWRlci10aGFuLWFueS1zY3JlZW46IC05OTk5O1xuICAgIHRleHQtaW5kZW50OiAkd2lkZXItdGhhbi1hbnktc2NyZWVuICogJGFwcHJveGltYXRlLWVtLXZhbHVlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1hbGlnbjogbGVmdDsgfVxuICBAZWxzZSB7XG4gICAgLy8gc2xpZ2h0bHkgd2lkZXIgdGhhbiB0aGUgYm94IHByZXZlbnRzIGlzc3VlcyB3aXRoIGlubGluZS1ibG9jayBlbGVtZW50c1xuICAgIHRleHQtaW5kZW50OiAxMTAlO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfSB9XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBieSBzcXVpc2hpbmcgdGhlIHRleHQgaW50byBvYmxpdmlvbi5cbi8vIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGhpZGUgdGV4dCBjb250YWluZWQgaW4gYW4gaW5saW5lIGVsZW1lbnRcbi8vIGJ1dCBzdGlsbCBoYXZlIGl0IHJlYWQgYnkgYSBzY3JlZW4gcmVhZGVyLlxuQG1peGluIHNxdWlzaC10ZXh0IHtcbiAgZm9udDogMC8wIHNlcmlmO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgY29sb3I6IHRyYW5zcGFyZW50OyB9XG4iLAoJCSIvLyBQcmV2ZW50IGxvbmcgdXJscyBhbmQgdGV4dCBmcm9tIGJyZWFraW5nIGxheW91dHNcbi8vIFtvcmlnaW5hbGx5IGZyb20gcGVyaXNoYWJsZXByZXNzLmNvbV0oaHR0cDovL3BlcmlzaGFibGVwcmVzcy5jb20vcHJlc3MvMjAxMC8wNi8wMS93cmFwcGluZy1jb250ZW50LylcbkBtaXhpbiBmb3JjZS13cmFwIHtcbiAgd2hpdGUtc3BhY2U6IHByZTtcbiAgLy8gQ1NTIDIuMFxuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIC8vIENTUyAyLjFcbiAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xuICAvLyBDU1MgMy4wXG4gIHdoaXRlLXNwYWNlOiAtcHJlLXdyYXA7XG4gIC8vIE9wZXJhIDQtNlxuICB3aGl0ZS1zcGFjZTogLW8tcHJlLXdyYXA7XG4gIC8vIE9wZXJhIDdcbiAgd2hpdGUtc3BhY2U6IC1tb3otcHJlLXdyYXA7XG4gIC8vIE1vemlsbGFcbiAgd2hpdGUtc3BhY2U6IC1ocC1wcmUtd3JhcDtcbiAgLy8gSFAgUHJpbnRlcnNcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuIH0gIC8vIElFIDUrXG4iLAoJCSJAaW1wb3J0IFwiLi4vbGF5b3V0L2dyaWQtYmFja2dyb3VuZFwiO1xuXG4vLyBUaGUgYmFzZSBmb250IHNpemUuXG4kYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNlIGxpbmUgaGVpZ2h0IGRldGVybWluZXMgdGhlIGJhc2ljIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtLlxuJGJhc2UtbGluZS1oZWlnaHQ6IDI0cHggIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgZGVmYXVsdCBib3JkZXIgc3R5bGUgZm9yIHJoeXRobSBib3JkZXJzLlxuJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZTogc29saWQgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4kYnJvd3Nlci1kZWZhdWx0LWZvbnQtc2l6ZTogMTZweDtcblxuLy8gU2V0IHRvIGZhbHNlIGlmIHlvdSB3YW50IHRvIHVzZSBhYnNvbHV0ZSBwaXhlbHMgaW4gc2l6aW5nIHlvdXIgdHlwb2dyYXBoeS5cbiRyZWxhdGl2ZS1mb250LXNpemluZzogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gQWxsb3dzIHRoZSBgYWRqdXN0LWZvbnQtc2l6ZS10b2AgbWl4aW4gYW5kIHRoZSBgbGluZXMtZm9yLWZvbnQtc2l6ZWAgZnVuY3Rpb25cbi8vIHRvIHJvdW5kIHRoZSBsaW5lIGhlaWdodCB0byB0aGUgbmVhcmVzdCBoYWxmIGxpbmUgaGVpZ2h0IGluc3RlYWQgb2YgdGhlXG4vLyBuZWFyZXN0IGludGVncmFsIGxpbmUgaGVpZ2h0IHRvIGF2b2lkIGxhcmdlIHNwYWNpbmcgYmV0d2VlbiBsaW5lcy5cbiRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEVuc3VyZSB0aGVyZSBpcyBhdCBsZWFzdCB0aGlzIG1hbnkgcGl4ZWxzXG4vLyBvZiB2ZXJ0aWNhbCBwYWRkaW5nIGFib3ZlIGFuZCBiZWxvdyB0aGUgdGV4dC5cbiRtaW4tbGluZS1wYWRkaW5nOiAycHggIWRlZmF1bHQ7XG5cbi8vICRiYXNlLWZvbnQtc2l6ZSBidXQgaW4geW91ciBvdXRwdXQgdW5pdCBvZiBjaG9pY2UuXG4vLyBEZWZhdWx0cyB0byAxZW0gd2hlbiBgJHJlbGF0aXZlLWZvbnQtc2l6aW5nYCBpcyB0cnVlLlxuJGZvbnQtdW5pdDogaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAxZW0sICRiYXNlLWZvbnQtc2l6ZSkgIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNpYyB1bml0IG9mIGZvbnQgcmh5dGhtLlxuJGJhc2Utcmh5dGhtLXVuaXQ6ICRiYXNlLWxpbmUtaGVpZ2h0IC8gJGJhc2UtZm9udC1zaXplICogJGZvbnQtdW5pdDtcblxuLy8gVGhlIGxlYWRlciBpcyB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgaW4gYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtbGVhZGVyOiAoJGJhc2UtbGluZS1oZWlnaHQgLSAkYmFzZS1mb250LXNpemUpICogJGZvbnQtdW5pdCAvICRiYXNlLWZvbnQtc2l6ZTtcblxuLy8gVGhlIGhhbGYtbGVhZGVyIGlzIHRoZSBhbW91bnQgb2Ygd2hpdGVzcGFjZSBhYm92ZSBhbmQgYmVsb3cgYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtaGFsZi1sZWFkZXI6ICRiYXNlLWxlYWRlciAvIDI7XG5cbi8vIFRydWUgaWYgYSBudW1iZXIgaGFzIGEgcmVsYXRpdmUgdW5pdC5cbkBmdW5jdGlvbiByZWxhdGl2ZS11bml0KCRudW1iZXIpIHtcbiAgQHJldHVybiB1bml0KCRudW1iZXIpID09IFwiJVwiIG9yIHVuaXQoJG51bWJlcikgPT0gXCJlbVwiIG9yIHVuaXQoJG51bWJlcikgPT0gXCJyZW1cIjsgfVxuXG4vLyBUcnVlIGlmIGEgbnVtYmVyIGhhcyBhbiBhYnNvbHV0ZSB1bml0LlxuQGZ1bmN0aW9uIGFic29sdXRlLXVuaXQoJG51bWJlcikge1xuICBAcmV0dXJuIG5vdCAocmVsYXRpdmUtdW5pdCgkbnVtYmVyKSBvciB1bml0bGVzcygkbnVtYmVyKSk7IH1cblxuQGlmICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgbm90IHJlbGF0aXZlLXVuaXQoJGZvbnQtdW5pdCkge1xuICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyB0cnVlIGJ1dCAkZm9udC11bml0IGlzIHNldCB0byAjeyRmb250LXVuaXR9IHdoaWNoIGlzIG5vdCBhIHJlbGF0aXZlIHVuaXQuXCI7IH1cblxuLy8gRXN0YWJsaXNoZXMgYSBmb250IGJhc2VsaW5lIGZvciB0aGUgZ2l2ZW4gZm9udC1zaXplLlxuQG1peGluIGVzdGFibGlzaC1iYXNlbGluZSgkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgLy8gSUUgNiByZWZ1c2VzIHRvIHJlc2l6ZSBmb250cyBzZXQgaW4gcGl4ZWxzIGFuZCBpdCB3ZWlyZGx5IHJlc2l6ZXMgZm9udHNcbiAgLy8gd2hvc2Ugcm9vdCBpcyBzZXQgaW4gZW1zLiBTbyB3ZSBzZXQgdGhlIHJvb3QgZm9udCBzaXplIGluIHBlcmNlbnRhZ2VzIG9mXG4gIC8vIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZS5cbiAgKiBodG1sIHtcbiAgICBmb250LXNpemU6IDEwMCUgKiAkZm9udC1zaXplIC8gJGJyb3dzZXItZGVmYXVsdC1mb250LXNpemU7IH1cbiAgaHRtbCB7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIEBpbmNsdWRlIGFkanVzdC1sZWFkaW5nLXRvKDEsIGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJGZvbnQtc2l6ZSwgJGJhc2UtZm9udC1zaXplKSk7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGxpbmUtaGVpZ2h0IHRvIDEgdmVydGljYWwgcmh5dGhtIHVuaXQuXG4vLyBEb2VzIG5vdCB3b3JrIG9uIGVsZW1lbnRzIHdob3NlIGZvbnQtc2l6ZSBpcyBkaWZmZXJlbnQgZnJvbSAkYmFzZS1mb250LXNpemUuXG4vL1xuLy8gQGRlcHJlY2F0ZWQgVGhpcyBtaXhpbiB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS5cbi8vIFBsZWFzZSB1c2UgdGhlIGBhZGp1c3QtbGVhZGluZy10b2AgbWl4aW4gaW5zdGVhZC5cbkBtaXhpbiByZXNldC1iYXNlbGluZSB7XG4gIEBpbmNsdWRlIGFkanVzdC1sZWFkaW5nLXRvKDEsIGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJGJhc2UtZm9udC1zaXplLCAkYmFzZS1mb250LXNpemUpKTsgfVxuXG4vLyBTaG93IGEgYmFja2dyb3VuZCBpbWFnZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlYnVnIHlvdXIgYWxpZ25tZW50cy5cbi8vIEluY2x1ZGUgdGhlICRpbWcgYXJndW1lbnQgaWYgeW91IHdvdWxkIHJhdGhlciB1c2UgeW91ciBvd24gaW1hZ2UgdGhhbiB0aGVcbi8vIENvbXBhc3MgZGVmYXVsdCBncmFkaWVudCBpbWFnZS5cbkBtaXhpbiBkZWJ1Zy12ZXJ0aWNhbC1hbGlnbm1lbnQoJGltZzogZmFsc2UpIHtcbiAgQGlmICRpbWcge1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkaW1nKTsgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kKCRiYXNlLXJoeXRobS11bml0KTsgfSB9XG5cbi8vIEFkanVzdCBhIGJsb2NrIHRvIGhhdmUgYSBkaWZmZXJlbnQgZm9udCBzaXplIGFuZCBsaW5lIGhlaWdodCB0byBtYWludGFpbiB0aGVcbi8vIHJoeXRobS4gJGxpbmVzIHNwZWNpZmllcyBob3cgbWFueSBtdWx0aXBsZXMgb2YgdGhlIGJhc2VsaW5lIHJoeXRobSBlYWNoIGxpbmVcbi8vIG9mIHRoaXMgZm9udCBzaG91bGQgdXNlIHVwLiBJdCBkb2VzIG5vdCBoYXZlIHRvIGJlIGFuIGludGVnZXIsIGJ1dCBpdFxuLy8gZGVmYXVsdHMgdG8gdGhlIHNtYWxsZXN0IGludGVnZXIgdGhhdCBpcyBsYXJnZSBlbm91Z2ggdG8gZml0IHRoZSBmb250LlxuLy8gVXNlICRmcm9tLXNpemUgdG8gYWRqdXN0IGZyb20gYSBmb250LXNpemUgb3RoZXIgdGhhbiB0aGUgYmFzZSBmb250LXNpemUuXG5AbWl4aW4gYWRqdXN0LWZvbnQtc2l6ZS10bygkdG8tc2l6ZSwgJGxpbmVzOiBsaW5lcy1mb3ItZm9udC1zaXplKCR0by1zaXplKSwgJGZyb20tc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIEBpZiBub3QgJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGFuZCAkZnJvbS1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gYWRqdXN0LWZvbnQtc2l6ZS10b1wiOyB9XG4gIGZvbnQtc2l6ZTogJGZvbnQtdW5pdCAqICR0by1zaXplIC8gJGZyb20tc2l6ZTtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oJGxpbmVzLCBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsICR0by1zaXplLCAkYmFzZS1mb250LXNpemUpKTsgfVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGRpZmZlcmVudCBsaW5lIGhlaWdodCB0byBtYWludGFpbiB0aGUgcmh5dGhtLlxuLy8gJGxpbmVzIHNwZWNpZmllcyBob3cgbWFueSBtdWx0aXBsZXMgb2YgdGhlIGJhc2VsaW5lIHJoeXRobSBlYWNoIGxpbmUgb2YgdGhpc1xuLy8gZm9udCBzaG91bGQgdXNlIHVwLiBJdCBkb2VzIG5vdCBoYXZlIHRvIGJlIGFuIGludGVnZXIsIGJ1dCBpdCBkZWZhdWx0cyB0byB0aGVcbi8vIHNtYWxsZXN0IGludGVnZXIgdGhhdCBpcyBsYXJnZSBlbm91Z2ggdG8gZml0IHRoZSBmb250LlxuQG1peGluIGFkanVzdC1sZWFkaW5nLXRvKCRsaW5lcywgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIGxpbmUtaGVpZ2h0OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTsgfVxuXG4vLyBDYWxjdWxhdGUgcmh5dGhtIHVuaXRzLlxuQGZ1bmN0aW9uIHJoeXRobSgkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJG9mZnNldDogMCkge1xuICBAaWYgbm90ICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgJGZvbnQtc2l6ZSAhPSAkYmFzZS1mb250LXNpemUge1xuICAgIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIGZhbHNlIGJ1dCBhIHJlbGF0aXZlIGZvbnQgc2l6ZSB3YXMgcGFzc2VkIHRvIHRoZSByaHl0aG0gZnVuY3Rpb25cIjsgfVxuICAkcmh5dGhtOiAkZm9udC11bml0ICogKCRsaW5lcyAqICRiYXNlLWxpbmUtaGVpZ2h0IC0gJG9mZnNldCkgLyAkZm9udC1zaXplO1xuICAvLyBSb3VuZCB0aGUgcGl4ZWxzIGRvd24gdG8gbmVhcmVzdCBpbnRlZ2VyLlxuICBAaWYgdW5pdCgkcmh5dGhtKSA9PSBweCB7XG4gICAgJHJoeXRobTogZmxvb3IoJHJoeXRobSk7IH1cbiAgQHJldHVybiAkcmh5dGhtOyB9XG5cbi8vIENhbGN1bGF0ZSB0aGUgbWluaW11bSBtdWx0aXBsZSBvZiByaHl0aG0gdW5pdHMgbmVlZGVkIHRvIGNvbnRhaW4gdGhlIGZvbnQtc2l6ZS5cbkBmdW5jdGlvbiBsaW5lcy1mb3ItZm9udC1zaXplKCRmb250LXNpemUpIHtcbiAgJGxpbmVzOiBpZigkcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmUsIGNlaWwoMiAqICRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkgLyAyLCBjZWlsKCRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkpO1xuICBAaWYgJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkZm9udC1zaXplIDwgJG1pbi1saW5lLXBhZGRpbmcgKiAyIHtcbiAgICAkbGluZXM6ICRsaW5lcyArIGlmKCRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZSwgMC41LCAxKTsgfVxuICBAcmV0dXJuICRsaW5lczsgfVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UuIFRoZSAkcHJvcGVydHkgY2FuIGJlIG1hcmdpbiBvciBwYWRkaW5nLlxuQG1peGluIGxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJHByb3BlcnR5OiBtYXJnaW4pIHtcbiAgI3skcHJvcGVydHl9LXRvcDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7IH1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlIGFzIHBhZGRpbmcuXG5AbWl4aW4gcGFkZGluZy1sZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgcGFkZGluZy10b3A6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpOyB9XG5cbi8vIEFwcGx5IGxlYWRpbmcgd2hpdGVzcGFjZSBhcyBtYXJnaW4uXG5AbWl4aW4gbWFyZ2luLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBtYXJnaW4tdG9wOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTsgfVxuXG4vLyBBcHBseSB0cmFpbGluZyB3aGl0ZXNwYWNlLiBUaGUgJHByb3BlcnR5IGNhbiBiZSBtYXJnaW4gb3IgcGFkZGluZy5cbkBtaXhpbiB0cmFpbGVyKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkcHJvcGVydHk6IG1hcmdpbikge1xuICAjeyRwcm9wZXJ0eX0tYm90dG9tOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTsgfVxuXG4vLyBBcHBseSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFzIHBhZGRpbmcuXG5AbWl4aW4gcGFkZGluZy10cmFpbGVyKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIHBhZGRpbmctYm90dG9tOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTsgfVxuXG4vLyBBcHBseSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFzIG1hcmdpbi5cbkBtaXhpbiBtYXJnaW4tdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBtYXJnaW4tYm90dG9tOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTsgfVxuXG4vLyBTaG9ydGhhbmQgbWl4aW4gdG8gYXBwbHkgd2hpdGVzcGFjZSBmb3IgdG9wIGFuZCBib3R0b20gbWFyZ2lucyBhbmQgcGFkZGluZy5cbkBtaXhpbiByaHl0aG0oJGxlYWRlcjogMCwgJHBhZGRpbmctbGVhZGVyOiAwLCAkcGFkZGluZy10cmFpbGVyOiAwLCAkdHJhaWxlcjogMCwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIEBpbmNsdWRlIGxlYWRlcigkbGVhZGVyLCAkZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgcGFkZGluZy1sZWFkZXIoJHBhZGRpbmctbGVhZGVyLCAkZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgcGFkZGluZy10cmFpbGVyKCRwYWRkaW5nLXRyYWlsZXIsICRmb250LXNpemUpO1xuICBAaW5jbHVkZSB0cmFpbGVyKCR0cmFpbGVyLCAkZm9udC1zaXplKTsgfVxuXG4vLyBBcHBseSBhIGJvcmRlciBhbmQgd2hpdGVzcGFjZSB0byBhbnkgc2lkZSB3aXRob3V0IGRlc3Ryb3lpbmcgdGhlIHZlcnRpY2FsXG4vLyByaHl0aG0uIFRoZSB3aGl0ZXNwYWNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyLlxuQG1peGluIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcigkc2lkZSwgJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpZiBub3QgJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyXCI7IH1cbiAgYm9yZGVyLSN7JHNpZGV9LXN0eWxlOiAkYm9yZGVyLXN0eWxlO1xuICBib3JkZXItI3skc2lkZX0td2lkdGg6ICRmb250LXVuaXQgKiAkd2lkdGggLyAkZm9udC1zaXplO1xuICBwYWRkaW5nLSN7JHNpZGV9OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplLCAkb2Zmc2V0OiAkd2lkdGgpOyB9XG5cbi8vIEFwcGx5IGJvcmRlcnMgYW5kIHdoaXRlc3BhY2UgZXF1YWxseSB0byBhbGwgc2lkZXMuXG5AbWl4aW4gcmh5dGhtLWJvcmRlcnMoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpZiBub3QgJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gcmh5dGhtLWJvcmRlcnNcIjsgfVxuICBib3JkZXI6IHtcbiAgICBzdHlsZTogJGJvcmRlci1zdHlsZTtcbiAgICB3aWR0aDogJGZvbnQtdW5pdCAqICR3aWR0aCAvICRmb250LXNpemU7IH1cbiAgcGFkZGluZzogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSwgJG9mZnNldDogJHdpZHRoKTsgfVxuXG4vLyBBcHBseSBhIGxlYWRpbmcgYm9yZGVyLlxuQG1peGluIGxlYWRpbmctYm9yZGVyKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaW5jbHVkZSBhcHBseS1zaWRlLXJoeXRobS1ib3JkZXIodG9wLCAkd2lkdGgsICRsaW5lcywgJGZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZSk7IH1cblxuLy8gQXBwbHkgYSB0cmFpbGluZyBib3JkZXIuXG5AbWl4aW4gdHJhaWxpbmctYm9yZGVyKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaW5jbHVkZSBhcHBseS1zaWRlLXJoeXRobS1ib3JkZXIoYm90dG9tLCAkd2lkdGgsICRsaW5lcywgJGZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZSk7IH1cblxuLy8gQXBwbHkgYm90aCBsZWFkaW5nIGFuZCB0cmFpbGluZyBib3JkZXJzLlxuQG1peGluIGhvcml6b250YWwtYm9yZGVycygkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgbGVhZGluZy1ib3JkZXIoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xuICBAaW5jbHVkZSB0cmFpbGluZy1ib3JkZXIoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpOyB9XG5cbi8vIEFsaWFzIGZvciBgaG9yaXpvbnRhbC1ib3JkZXJzYCBtaXhpbi5cbkBtaXhpbiBoLWJvcmRlcnMoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtYm9yZGVycygkd2lkdGgsICRsaW5lcywgJGZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZSk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9jc3MzL2ltYWdlc1wiO1xuQGltcG9ydCBcIi4uL2NzczMvYmFja2dyb3VuZC1zaXplXCI7XG5cbi8vIFNldCB0aGUgY29sb3Igb2YgeW91ciBjb2x1bW5zXG4kZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcjogcmdiYSgxMDAsIDEwMCwgMjI1LCAwLjI1KSAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBjb2xvciBvZiB5b3VyIGd1dHRlcnNcbiRncmlkLWJhY2tncm91bmQtZ3V0dGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIHlvdXIgZ3JpZFxuJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zOiAyNCAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSB3aWR0aCBvZiB5b3VyIGNvbHVtbnNcbiRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoOiAzMHB4ICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHdpZHRoIG9mIHlvdXIgZ3V0dGVyc1xuJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGg6IDEwcHggIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgb2Zmc2V0LCBpZiB5b3VyIGNvbHVtbnMgYXJlIHBhZGRlZCBpbiBmcm9tIHRoZSBjb250YWluZXIgZWRnZVxuJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBjb2xvciBvZiB5b3VyIGJhc2VsaW5lXG4kZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSkgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgaGVpZ2h0IG9mIHlvdXIgYmFzZWxpbmUgZ3JpZFxuJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1oZWlnaHQ6IDEuNWVtICFkZWZhdWx0O1xuXG4vLyB0b2dnbGUgeW91ciBjb2x1bW5zIGdyaWRzIG9uIGFuZCBvZmZcbiRzaG93LWNvbHVtbi1ncmlkLWJhY2tncm91bmRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyB0b2dnbGUgeW91ciB2ZXJ0aWNhbCBncmlkcyBvbiBhbmQgb2ZmXG4kc2hvdy1iYXNlbGluZS1ncmlkLWJhY2tncm91bmRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyB0b2dnbGUgYWxsIHlvdXIgZ3JpZHMgb24gYW5kIG9mZlxuJHNob3ctZ3JpZC1iYWNrZ3JvdW5kczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gb3B0aW9uYWxseSBmb3JjZSB5b3VyIGdyaWQtaW1hZ2UgdG8gcmVtYWluIGZsdWlkXG4vLyBubyBtYXR0ZXIgd2hhdCB1bml0cyB5b3UgdXNlZCB0byBkZWNsYXJlZCB5b3VyIGdyaWQuXG4kZ3JpZC1iYWNrZ3JvdW5kLWZvcmNlLWZsdWlkOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gQ3JlYXRlIHRoZSBncmFkaWVudCBuZWVkZWQgZm9yIGJhc2VsaW5lIGdyaWRzXG5AZnVuY3Rpb24gZ2V0LWJhc2VsaW5lLWdyYWRpZW50KCRjb2xvcjogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcikge1xuICAkZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudChib3R0b20sICRjb2xvciA1JSwgcmdiYSgkY29sb3IsIDApIDUlKTtcbiAgQHJldHVybiAkZ3JhZGllbnQ7IH1cblxuLy8gQ3JlYXRlIHRoZSBjb2xvci1zdG9wcyBuZWVkZWQgZm9yIGhvcml6b250YWwgZ3JpZHNcbkBmdW5jdGlvbiBidWlsZC1ncmlkLWJhY2tncm91bmQoJHRvdGFsOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsICRjb2x1bW46ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLCAkZ3V0dGVyOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCwgJG9mZnNldDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsICRjb2x1bW4tY29sb3I6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcikge1xuICAkZ3JpZDogY29tcGFjdCgpO1xuICAkZ3JpZDogYXBwZW5kKCRncmlkLCAkZ3V0dGVyLWNvbG9yICRvZmZzZXQsIGNvbW1hKTtcbiAgQGZvciAkaSBmcm9tIDAgdG8gJHRvdGFsIHtcbiAgICAvLyAkYSByZXByZXNlbnRzIHRoZSBzdGFydCBvZiB0aGlzIGNvbHVtbiwgaW5pdGlhbGx5IGVxdWFsIHRvIHRoZSBvZmZzZXRcbiAgICAkYTogJG9mZnNldDtcbiAgICBAaWYgJGkgPiAwIHtcbiAgICAgICRhOiAkYSArICgkY29sdW1uICsgJGd1dHRlcikgKiAkaTsgfVxuICAgIC8vICRnIHJlcHJlc2VudHMgdGhlIHN0YXJ0IG9mIHRoaXMgZ3V0dGVyLCBlcXVhbCB0byAkYSBwbHVzIG9uZSBjb2x1bW4td2lkdGhcbiAgICAkZzogJGEgKyAkY29sdW1uO1xuICAgIC8vICR6IHJlcHJlc2VudHMgdGhlIGVuZCBvZiBhIGd1dHRlciwgZXF1YWwgdG8gJGcgcGx1cyBvbmUgZ3V0dGVyLXdpZHRoXG4gICAgJHo6ICRnICsgJGd1dHRlcjtcbiAgICBAaWYgdW5pdCgkYSkgPT0gXCIlXCIgYW5kICRpID09ICR0b3RhbCAtIDEge1xuICAgICAgJHo6IDEwMCU7IH1cbiAgICAvLyBhbmQgd2UgYWRkIHRoaXMgY29sdW1uL2d1dHRlciBwYWlyIHRvIG91ciBncmlkXG4gICAgJGdyaWQ6IGpvaW4oJGdyaWQsICgkY29sdW1uLWNvbG9yICRhLCAkY29sdW1uLWNvbG9yICRnLCAkZ3V0dGVyLWNvbG9yICRnLCAkZ3V0dGVyLWNvbG9yICR6KSk7IH1cbiAgQHJldHVybiAkZ3JpZDsgfVxuXG4vLyBSZXR1cm4gdGhlIGdyYWRpZW50IG5lZWRlZCBmb3IgaG9yaXpvbnRhbCBncmlkc1xuQGZ1bmN0aW9uIGdldC1jb2x1bW4tZ3JhZGllbnQoJHRvdGFsOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsICRjb2x1bW46ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLCAkZ3V0dGVyOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCwgJG9mZnNldDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsICRjb2x1bW4tY29sb3I6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkOiAkZ3JpZC1iYWNrZ3JvdW5kLWZvcmNlLWZsdWlkKSB7XG4gICRncmlkOiB1bnF1b3RlKFwiXCIpO1xuICAvLyBkb24ndCBmb3JjZSBmbHVpZCBncmlkcyB3aGVuIHRoZXkgYXJlIGFscmVhZHkgZmx1aWQuXG4gIEBpZiB1bml0KCRjb2x1bW4pID09IFwiJVwiIHtcbiAgICAkZm9yY2UtZmx1aWQ6IGZhbHNlOyB9XG4gIEBpZiAkZm9yY2UtZmx1aWQge1xuICAgICRncmlkOiBnZXQtY29sdW1uLWZsdWlkLWdyaWQoJHRvdGFsLCAkY29sdW1uLCAkZ3V0dGVyLCAkb2Zmc2V0LCAkY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yKTsgfVxuICBAZWxzZSB7XG4gICAgJGdyaWQ6IGJ1aWxkLWdyaWQtYmFja2dyb3VuZCgkdG90YWwsICRjb2x1bW4sICRndXR0ZXIsICRvZmZzZXQsICRjb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3IpOyB9XG4gIC8vIHJldHVybiB0aGUgaG9yaXpvbnRhbCBncmlkIGFzIGEgZ3JhZGllbnRcbiAgJGdyYWRpZW50OiBsaW5lYXItZ3JhZGllbnQobGVmdCwgJGdyaWQpO1xuICBAcmV0dXJuICRncmFkaWVudDsgfVxuXG4vLyBDb252ZXJ0IGEgZ3JpZCBmcm9tIGZpeGVkIHVuaXRzIGludG8gcGVyY2VudGFnZXMuXG5AZnVuY3Rpb24gZ2V0LWNvbHVtbi1mbHVpZC1ncmlkKCR0b3RhbDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLCAkY29sdW1uOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCwgJGd1dHRlcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsICRvZmZzZXQ6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LCAkY29sdW1uLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IpIHtcbiAgJGNvbnRleHQ6ICRjb2x1bW4gKiAkdG90YWwgKyAkZ3V0dGVyICogKCR0b3RhbCAtIDEpICsgJG9mZnNldCAqIDI7XG4gICRvZmZzZXQ6ICRvZmZzZXQgLyAkY29udGV4dCAqIDEwMCU7XG4gICRjb2x1bW46ICRjb2x1bW4gLyAkY29udGV4dCAqIDEwMCU7XG4gICRndXR0ZXI6ICRndXR0ZXIgLyAkY29udGV4dCAqIDEwMCU7XG4gIC8vIHJldHVybiB0aGUgaG9yaXpvbnRhbCBncmlkIGFzIGEgc2V0IG9mIGNvbG9yLXN0b3BzXG4gICRncmlkOiBidWlsZC1ncmlkLWJhY2tncm91bmQoJHRvdGFsLCAkY29sdW1uLCAkZ3V0dGVyLCAkb2Zmc2V0LCAkY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yKTtcbiAgQHJldHVybiAkZ3JpZDsgfVxuXG4vLyBBZGQganVzdCB0aGUgYmFzZWxpbmUgZ3JpZCB0byBhbiBlbGVtZW50J3MgYmFja2dyb3VuZFxuQG1peGluIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZCgkYmFzZWxpbmU6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtaGVpZ2h0LCAkY29sb3I6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IpIHtcbiAgQGlmICRzaG93LWdyaWQtYmFja2dyb3VuZHMgYW5kICRzaG93LWJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZHMge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoZ2V0LWJhc2VsaW5lLWdyYWRpZW50KCRjb2xvcikpO1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgxMDAlICRiYXNlbGluZSk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7IH0gfVxuXG4vLyBBZGQganVzdCB0aGUgaG9yaXpvbnRhbCBncmlkIHRvIGFuIGVsZW1lbnQncyBiYWNrZ3JvdW5kXG5AbWl4aW4gY29sdW1uLWdyaWQtYmFja2dyb3VuZCgkdG90YWw6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucywgJGNvbHVtbjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsICRndXR0ZXI6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLCAkb2Zmc2V0OiAkZ3JpZC1iYWNrZ3JvdW5kLW9mZnNldCwgJGNvbHVtbi1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3I6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLWNvbG9yLCAkZm9yY2UtZmx1aWQ6ICRncmlkLWJhY2tncm91bmQtZm9yY2UtZmx1aWQpIHtcbiAgQGlmICRzaG93LWdyaWQtYmFja2dyb3VuZHMgYW5kICRzaG93LWNvbHVtbi1ncmlkLWJhY2tncm91bmRzIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKGdldC1jb2x1bW4tZ3JhZGllbnQoJHRvdGFsLCAkY29sdW1uLCAkZ3V0dGVyLCAkb2Zmc2V0LCAkY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yLCAkZm9yY2UtZmx1aWQpKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDsgfSB9XG5cbi8vIEFkZCBib3RoIGhvcml6b250YWwgYW5kIGJhc2VsaW5lIGdyaWRzIHRvIGFuIGVsZW1lbnQncyBiYWNrZ3JvdW5kXG5AbWl4aW4gZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLCAkY29sdW1uOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCwgJGd1dHRlcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsICRiYXNlbGluZTogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1oZWlnaHQsICRvZmZzZXQ6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LCAkY29sdW1uLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IsICRiYXNlbGluZS1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgJGZvcmNlLWZsdWlkOiAkZ3JpZC1iYWNrZ3JvdW5kLWZvcmNlLWZsdWlkKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIHtcbiAgICBAaWYgJHNob3ctYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kcyBhbmQgJHNob3ctY29sdW1uLWdyaWQtYmFja2dyb3VuZHMge1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShnZXQtYmFzZWxpbmUtZ3JhZGllbnQoJGJhc2VsaW5lLWNvbG9yKSwgZ2V0LWNvbHVtbi1ncmFkaWVudCgkdG90YWwsICRjb2x1bW4sICRndXR0ZXIsICRvZmZzZXQsICRjb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZCkpO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKDEwMCUgJGJhc2VsaW5lLCBhdXRvKTtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kKCRiYXNlbGluZSwgJGJhc2VsaW5lLWNvbG9yKTtcbiAgICAgIEBpbmNsdWRlIGNvbHVtbi1ncmlkLWJhY2tncm91bmQoJHRvdGFsLCAkY29sdW1uLCAkZ3V0dGVyLCAkb2Zmc2V0LCAkY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yLCAkZm9yY2UtZmx1aWQpOyB9IH0gfVxuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuQGltcG9ydCBcIi4uL3V0aWxpdGllcy9nZW5lcmFsL2hhY2tzXCI7XG5AaW1wb3J0IFwiLi4vZnVuY3Rpb25zXCI7XG5cbi8vIEJhY2tncm91bmQgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGJhY2tncm91bmQoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMjogZmFsc2UsICRiYWNrZ3JvdW5kLTM6IGZhbHNlLCAkYmFja2dyb3VuZC00OiBmYWxzZSwgJGJhY2tncm91bmQtNTogZmFsc2UsICRiYWNrZ3JvdW5kLTY6IGZhbHNlLCAkYmFja2dyb3VuZC03OiBmYWxzZSwgJGJhY2tncm91bmQtODogZmFsc2UsICRiYWNrZ3JvdW5kLTk6IGZhbHNlLCAkYmFja2dyb3VuZC0xMDogZmFsc2UpIHtcbiAgJGJhY2tncm91bmRzOiBjb21wYWN0KCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAkYmFja2dyb3VuZHMpIG9yICRtdWx0LWJncztcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIGFuZCBwcmVmaXhlZCgtc3ZnLCAkYmFja2dyb3VuZHMpIHtcbiAgICBiYWNrZ3JvdW5kOiAtc3ZnKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAkYmFja2dyb3VuZHMpIHtcbiAgICBiYWNrZ3JvdW5kOiAtb3dnKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkYmFja2dyb3VuZHMpIHtcbiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0KCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLW1veigkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIGFuZCBwcmVmaXhlZCgtbywgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLW8oJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgYW5kICRhZGQtcGllLWJnIHtcbiAgICAtcGllLWJhY2tncm91bmQ6IC1waWUoJGJhY2tncm91bmRzKTsgfVxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZHM7IH1cblxuQG1peGluIGJhY2tncm91bmQtd2l0aC1jc3MyLWZhbGxiYWNrKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTI6IGZhbHNlLCAkYmFja2dyb3VuZC0zOiBmYWxzZSwgJGJhY2tncm91bmQtNDogZmFsc2UsICRiYWNrZ3JvdW5kLTU6IGZhbHNlLCAkYmFja2dyb3VuZC02OiBmYWxzZSwgJGJhY2tncm91bmQtNzogZmFsc2UsICRiYWNrZ3JvdW5kLTg6IGZhbHNlLCAkYmFja2dyb3VuZC05OiBmYWxzZSwgJGJhY2tncm91bmQtMTA6IGZhbHNlKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LCAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG4gICRtdWx0LWJnczogLWNvbXBhc3MtbGlzdC1zaXplKCRiYWNrZ3JvdW5kcykgPiAxO1xuICAkc2ltcGxlLWJhY2tncm91bmQ6IGlmKCRtdWx0LWJncyBvciBwcmVmaXhlZCgtY3NzMiwgJGJhY2tncm91bmRzKSwgLWNzczIoLWNvbXBhc3MtbnRoKCRiYWNrZ3JvdW5kcywgbGFzdCkpLCBmYWxzZSk7XG4gIEBpZiBub3QgYmxhbmsoJHNpbXBsZS1iYWNrZ3JvdW5kKSB7XG4gICAgYmFja2dyb3VuZDogJHNpbXBsZS1iYWNrZ3JvdW5kOyB9XG4gIEBpbmNsdWRlIGJhY2tncm91bmQoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSwgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApOyB9XG5cbi8vIEJhY2tncm91bmQgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLTEsICRpbWFnZS0yOiBmYWxzZSwgJGltYWdlLTM6IGZhbHNlLCAkaW1hZ2UtNDogZmFsc2UsICRpbWFnZS01OiBmYWxzZSwgJGltYWdlLTY6IGZhbHNlLCAkaW1hZ2UtNzogZmFsc2UsICRpbWFnZS04OiBmYWxzZSwgJGltYWdlLTk6IGZhbHNlLCAkaW1hZ2UtMTA6IGZhbHNlKSB7XG4gICRpbWFnZXM6IGNvbXBhY3QoJGltYWdlLTEsICRpbWFnZS0yLCAkaW1hZ2UtMywgJGltYWdlLTQsICRpbWFnZS01LCAkaW1hZ2UtNiwgJGltYWdlLTcsICRpbWFnZS04LCAkaW1hZ2UtOSwgJGltYWdlLTEwKTtcbiAgJGFkZC1waWUtYmc6IHByZWZpeGVkKC1waWUsICRpbWFnZXMpIG9yIC1jb21wYXNzLWxpc3Qtc2l6ZSgkaW1hZ2VzKSA+IDE7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1zdmcoJGltYWdlcyk7XG4gICAgYmFja2dyb3VuZC1zaXplOiAxMDAlOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vd2coJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2VzKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdCgkaW1hZ2VzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCBwcmVmaXhlZCgtbW96LCAkaW1hZ2VzKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLW1veigkaW1hZ2VzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbygkaW1hZ2VzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgYW5kICRhZGQtcGllLWJnIHtcbiAgICBAd2FybiBcIlBJRSBkb2VzIG5vdCBzdXBwb3J0IGJhY2tncm91bmQtaW1hZ2UuIFVzZSBAaW5jbHVkZSBiYWNrZ3JvdW5kKCN7JGltYWdlc30pIGluc3RlYWQuXCI7IH1cbiAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlczsgfVxuXG4vLyBFbWl0IGEgSUUtU3BlY2lmaWMgZmlsdGVycyB0aGF0IHJlbmRlcnMgYSBzaW1wbGUgbGluZWFyIGdyYWRpZW50LlxuLy8gRm9yIHVzZSBpbiBJRSA2IC0gOC4gQmVzdCBwcmFjdGljZSB3b3VsZCBoYXZlIHlvdSBhcHBseSB0aGlzIHZpYSBhXG4vLyBjb25kaXRpb25hbCBJRSBzdHlsZXNoZWV0LCBidXQgaWYgeW91IG11c3QsIHlvdSBzaG91bGQgcGxhY2UgdGhpcyBiZWZvcmVcbi8vIGFueSBiYWNrZ3JvdW5kLWltYWdlIHByb3BlcnRpZXMgdGhhdCB5b3UgaGF2ZSBzcGVjaWZpZWQuXG4vL1xuLy8gRm9yIHRoZSBgJG9yaWVudGF0aW9uYCBwYXJhbWV0ZXIsIHlvdSBjYW4gcGFzcyBgdmVydGljYWxgIG9yIGBob3Jpem9udGFsYC5cbkBtaXhpbiBmaWx0ZXItZ3JhZGllbnQoJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yLCAkb3JpZW50YXRpb246IHZlcnRpY2FsKSB7XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG4gICRncmFkaWVudC10eXBlOiBpZigkb3JpZW50YXRpb24gPT0gdmVydGljYWwsIDAsIDEpO1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGdyYWRpZW50VHlwZT0jeyRncmFkaWVudC10eXBlfSwgc3RhcnRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRzdGFydC1jb2xvcil9JywgZW5kQ29sb3JzdHI9JyN7aWUtaGV4LXN0cigkZW5kLWNvbG9yKX0nKTsgfSB9XG5cbi8vIEJvcmRlciBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHByb3BlcnRpZXMgYW5kIHZhbHVlcy5cbkBtaXhpbiBib3JkZXItaW1hZ2UoJHZhbHVlKSB7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otYm9yZGVyLWltYWdlOiAtbW96KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMge1xuICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiAtb3dnKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiAtd2Via2l0KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tYm9yZGVyLWltYWdlOiAtbyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIHtcbiAgICBib3JkZXItaW1hZ2U6IC1zdmcocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIGJvcmRlci1pbWFnZTogJHZhbHVlOyB9XG5cbi8vIExpc3Qgc3R5bGUgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGxpc3Qtc3R5bGUtaW1hZ2UoJGltYWdlKSB7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICRpbWFnZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1tb3ooJGltYWdlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICRpbWFnZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1vd2coJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgYW5kIHByZWZpeGVkKC13ZWJraXQsICRpbWFnZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICRpbWFnZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1vKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIGFuZCBwcmVmaXhlZCgtc3ZnLCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtc3ZnKCRpbWFnZSk7IH1cbiAgbGlzdC1zdHlsZS1pbWFnZTogJGltYWdlOyB9XG5cbi8vIExpc3Qgc3R5bGUgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGxpc3Qtc3R5bGUoJHZhbHVlKSB7XG4gICR2YWx1ZTogLWNvbXBhc3MtbGlzdCgkdmFsdWUpO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCBwcmVmaXhlZCgtbW96LCAkdmFsdWUpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtbW96KCR2YWx1ZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAkdmFsdWUpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtd2Via2l0KCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkdmFsdWUpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtbygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLXN2ZygkdmFsdWUpOyB9XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6ICR2YWx1ZTsgfVxuXG4vLyBjb250ZW50IHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBjb250ZW50KCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJHZhbHVlKSB7XG4gICAgY29udGVudDogLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJHZhbHVlKSB7XG4gICAgY29udGVudDogLW93ZygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJHZhbHVlKSB7XG4gICAgY29udGVudDogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIGFuZCBwcmVmaXhlZCgtbywgJHZhbHVlKSB7XG4gICAgY29udGVudDogLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1zdmcoJHZhbHVlKTsgfVxuICBjb250ZW50OiAkdmFsdWU7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfVxuICAgIEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTsgfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwiZnVuY3Rpb25zL2xpc3RzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnN0YW50c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9kaXNwbGF5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbG9yc1wiO1xuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBsaXN0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvbGlzdHMucmJcbi8vXG5cbi8vIGNvbXBhY3QgaXMgcGFydCBvZiBsaWJzYXNzXG5cbkBmdW5jdGlvbiAtY29tcGFzcy1udGgoJGxpc3QsICRwbGFjZSkge1xuICAvLyBZZXAsIFNhc3MtbGlzdHMgYXJlIDEtaW5kZXhlZC5cbiAgQGlmICRwbGFjZSA9PSBcImZpcnN0XCIge1xuICAgICRwbGFjZTogMTsgfVxuICBAaWYgJHBsYWNlID09IFwibGFzdFwiIHtcbiAgICAkcGxhY2U6IGxlbmd0aCgkbGlzdCk7IH1cbiAgQHJldHVybiBudGgoJGxpc3QsICRwbGFjZSk7IH1cblxuLy8gY29tcGFzc19saXN0IGNhbid0IGJlIGltcGxlbWVudGVkIGluIHNhc3Mgc2NyaXB0XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zcGFjZS1saXN0KCRpdGVtMSwgJGl0ZW0yOiBudWxsLCAkaXRlbTM6IG51bGwsICRpdGVtNDogbnVsbCwgJGl0ZW01OiBudWxsLCAkaXRlbTY6IG51bGwsICRpdGVtNzogbnVsbCwgJGl0ZW04OiBudWxsLCAkaXRlbTk6IG51bGwpIHtcbiAgLy8gU3VwcG9ydCBmb3IgcG9seW1vcnBoaXNtLlxuICBAaWYgdHlwZS1vZigkaXRlbTEpID09IFwibGlzdFwiIHtcbiAgICAvLyBQYXNzaW5nIGEgc2luZ2xlIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gICAgJGl0ZW1zOiAkaXRlbTE7IH1cbiAgQGVsc2Uge1xuICAgICRpdGVtczogJGl0ZW0xICRpdGVtMiAkaXRlbTMgJGl0ZW00ICRpdGVtNSAkaXRlbTYgJGl0ZW03ICRpdGVtOCAkaXRlbTk7IH1cbiAgJGZ1bGw6IGZpcnN0LXZhbHVlLW9mKCRpdGVtcyk7XG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRpdGVtcykge1xuICAgICRpdGVtOiBudGgoJGl0ZW1zLCAkaSk7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsICRpdGVtOyB9IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbGlzdC1zaXplKCRsaXN0KSB7XG4gIEByZXR1cm4gbGVuZ3RoKCRsaXN0KTsgfVxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc2xpY2UoJGxpc3QsICRzdGFydCwgJGVuZDogZmFsc2UpIHtcbiAgQGlmICRlbmQgPT0gZmFsc2Uge1xuICAgICRlbmQ6IGxlbmd0aCgkbGlzdCk7IH1cbiAgJGZ1bGw6IG50aCgkbGlzdCwgJHN0YXJ0KTtcbiAgQGZvciAkaSBmcm9tICRzdGFydCArIDEgdGhyb3VnaCAkZW5kIHtcbiAgICAkZnVsbDogJGZ1bGwsIG50aCgkbGlzdCwgJGkpOyB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIHJlamVjdCgkbGlzdCwgJHJlamVjdDEsICRyZWplY3QyOiBudWxsLCAkcmVqZWN0MzogbnVsbCwgJHJlamVjdDQ6IG51bGwsICRyZWplY3Q1OiBudWxsLCAkcmVqZWN0NjogbnVsbCwgJHJlamVjdDc6IG51bGwsICRyZWplY3Q4OiBudWxsLCAkcmVqZWN0OTogbnVsbCkge1xuICAkcmVqZWN0czogJHJlamVjdDEsICRyZWplY3QyLCAkcmVqZWN0MywgJHJlamVjdDQsICRyZWplY3Q1LCAkcmVqZWN0NiwgJHJlamVjdDcsICRyZWplY3Q4LCAkcmVqZWN0OTtcbiAgJGZ1bGw6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgQGlmIGluZGV4KCRyZWplY3RzLCAkaXRlbSkge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJGZ1bGwge1xuICAgICAgICAkZnVsbDogJGZ1bGwsICRpdGVtOyB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmdWxsOiAkaXRlbTsgfSB9IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuXG5AZnVuY3Rpb24gZmlyc3QtdmFsdWUtb2YoJGxpc3QpIHtcbiAgQHJldHVybiBudGgoJGxpc3QsIDEpOyB9XG5cbi8vQGlmIG5vdCBmdW5jdGlvbi1leGlzdHMoY29tcGFjdClcbkBmdW5jdGlvbiBjb21wYWN0KCR2YXJzLi4uKSB7XG4gICRsaXN0OiAoKTtcbiAgQGVhY2ggJHZhciBpbiAkdmFycyB7XG4gICAgQGlmICR2YXIge1xuICAgICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJHZhciwgY29tbWEpOyB9IH1cbiAgQHJldHVybiAkbGlzdDsgfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjcm9zcyBicm93c2VyIHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnQucmJcbi8vXG5cbkBmdW5jdGlvbiBwcmVmaXhlZCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5O1xuICAkcHJlZml4ZWQ6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IFwic3RyaW5nXCIge1xuICAgICAgJHByZWZpeGVkOiAkcHJlZml4ZWQgb3Igc3RyLWluZGV4KCRpdGVtLCBcInVybFwiKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sIFwicmdiXCIpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgXCIjXCIpICE9IDE7IH1cbiAgICBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBcImNvbG9yXCIge31cbiAgICBAZWxzZSBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRwcmVmaXhlZDogdHJ1ZTsgfSB9XG4gIEByZXR1cm4gJHByZWZpeGVkOyB9XG5cbkBmdW5jdGlvbiBwcmVmaXgoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICAkcHJvcGVydGllczogXCJcIjtcbiAgLy8gU3VwcG9ydCBmb3IgcG9seW1vcnBoaXNtLlxuICBAaWYgdHlwZS1vZigkcHJvcGVydHkxKSA9PSBcImxpc3RcIiB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxOyB9XG4gIEBlbHNlIHtcbiAgICAvLyBQYXNzaW5nIG11bHRpcGxlIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7IH1cbiAgJHByb3BzOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiAkaXRlbSA9PSBudWxsIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHByZWZpeGVkKCRwcmVmaXgsICRpdGVtKSB7XG4gICAgICAgICRpdGVtOiAjeyRwcmVmaXh9LSN7JGl0ZW19OyB9XG4gICAgICBAaWYgJHByb3BzIHtcbiAgICAgICAgJHByb3BzOiAkcHJvcHMsICRpdGVtOyB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwcm9wczogJGl0ZW07IH0gfSB9XG4gIEByZXR1cm4gJHByb3BzOyB9XG5cbkBmdW5jdGlvbiAtc3ZnKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItc3ZnXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtb3dnKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItb3dnXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtd2Via2l0KCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItd2Via2l0XCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtbW96KCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItbW96XCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtbygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW9cIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC1waWUoJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1waWVcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZ3JhZGllbnQgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3YwLjEyLjIvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0LnJiXG4vL1xuXG5AZnVuY3Rpb24gY29sb3Itc3RvcHMoJGl0ZW0xLCAkaXRlbTI6IG51bGwsICRpdGVtMzogbnVsbCwgJGl0ZW00OiBudWxsLCAkaXRlbTU6IG51bGwsICRpdGVtNjogbnVsbCwgJGl0ZW03OiBudWxsLCAkaXRlbTg6IG51bGwsICRpdGVtOTogbnVsbCkge1xuICAkaXRlbXM6ICRpdGVtMiwgJGl0ZW0zLCAkaXRlbTQsICRpdGVtNSwgJGl0ZW02LCAkaXRlbTcsICRpdGVtOCwgJGl0ZW05O1xuICAkZnVsbDogJGl0ZW0xO1xuICBAZWFjaCAkaXRlbSBpbiAkaXRlbXMge1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCwgJGl0ZW07IH0gfVxuICBAcmV0dXJuICRmdWxsOyB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbnN0YW50cyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbnN0YW50cy5yYlxuLy9cblxuQGZ1bmN0aW9uIG9wcG9zaXRlLXBvc2l0aW9uKCRmcm9tKSB7XG4gIEBpZiAkZnJvbSA9PSB0b3Age1xuICAgIEByZXR1cm4gYm90dG9tOyB9XG4gIEBlbHNlIGlmICRmcm9tID09IGJvdHRvbSB7XG4gICAgQHJldHVybiB0b3A7IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gbGVmdCB7XG4gICAgQHJldHVybiByaWdodDsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSByaWdodCB7XG4gICAgQHJldHVybiBsZWZ0OyB9XG4gIEBlbHNlIGlmICRmcm9tID09IGNlbnRlciB7XG4gICAgQHJldHVybiBjZW50ZXI7IH0gfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBkaXNwbGF5IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Rpc3BsYXkucmJcbi8vXG5cbkBmdW5jdGlvbiBlbGVtZW50cy1vZi10eXBlKCR0eXBlKSB7XG4gIEBpZiAkdHlwZSA9PSBibG9jayB7XG4gICAgQHJldHVybiBhZGRyZXNzLCBhcnRpY2xlLCBhc2lkZSwgYmxvY2txdW90ZSwgY2VudGVyLCBkaXIsIGRpdiwgZGQsIGRldGFpbHMsIGRsLCBkdCwgZmllbGRzZXQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9ybSwgZm9vdGVyLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaHIsIGhlYWRlciwgaGdyb3VwLCBpc2luZGV4LCBtYWluLCBtZW51LCBuYXYsIG5vZnJhbWVzLCBub3NjcmlwdCwgb2wsIHAsIHByZSwgc2VjdGlvbiwgc3VtbWFyeSwgdWw7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaW5saW5lIHtcbiAgICBAcmV0dXJuIGEsIGFiYnIsIGFjcm9ueW0sIGF1ZGlvLCBiLCBiYXNlZm9udCwgYmRvLCBiaWcsIGJyLCBjYW52YXMsIGNpdGUsIGNvZGUsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZm4sIGVtLCBlbWJlZCwgZm9udCwgaSwgaW1nLCBpbnB1dCwga2V5Z2VuLCBrYmQsIGxhYmVsLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcSwgcnAsIHJ0LCBydWJ5LCBzLCBzYW1wLCBzZWxlY3QsIHNtYWxsLCBzcGFuLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHRleHRhcmVhLCB0aW1lLCB0dCwgdSwgdmFyLCB2aWRlbywgd2JyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGlubGluZS1ibG9jayB7XG4gICAgQHJldHVybiBpbWc7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUge1xuICAgIEByZXR1cm4gdGFibGU7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gbGlzdC1pdGVtIHtcbiAgICBAcmV0dXJuIGxpOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLXJvdy1ncm91cCB7XG4gICAgQHJldHVybiB0Ym9keTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1oZWFkZXItZ3JvdXAge1xuICAgIEByZXR1cm4gdGhlYWQ7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtZm9vdGVyLWdyb3VwIHtcbiAgICBAcmV0dXJuIHRmb290OyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLXJvdyB7XG4gICAgQHJldHVybiB0cjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1jZWxsIHtcbiAgICBAcmV0dXJuIHRoLCB0ZDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBodG1sNS1ibG9jayB7XG4gICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtYWluLCBtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnk7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaHRtbDUtaW5saW5lIHtcbiAgICBAcmV0dXJuIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBlbWJlZCwga2V5Z2VuLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCB0aW1lLCB2aWRlbywgd2JyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGh0bWw1IHtcbiAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZGV0YWlscywgZW1iZWQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwga2V5Z2VuLCBtYWluLCBtYXJrLCBtZW51LCBtZXRlciwgbmF2LCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIHZpZGVvLCB3YnI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGV4dC1pbnB1dCB7XG4gICAgQHJldHVybiBpbnB1dCwgdGV4dGFyZWE7IH0gfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb2xvcnMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29sb3JzLnJiXG4vL1xuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2YgbGlnaHRlbi9kYXJrZW4gc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LWxpZ2h0bmVzcygkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTsgfVxuXG4vLyBTY2FsZXMgYSBjb2xvcidzIGxpZ2h0bmVzcyBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgc2NhbGVkIGRhcmtlciwgaWYgcG9zaXRpdmUsIGl0IGlzIHNjYWxlZCBsaWdodGVyLlxuLy8gVGhpcyB3aWxsIG5ldmVyIHJldHVybiBhIHB1cmUgbGlnaHQgb3IgZGFyayBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLWxpZ2h0bmVzcygkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRhbW91bnQpOyB9XG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBzYXR1cmF0ZS9kZXNhdHVyYXRlIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIGFkanVzdC1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTsgfVxuXG4vLyBTY2FsZXMgYSBjb2xvcidzIHNhdHVyYXRpb24gYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIGRlc2F0dXJhdGVkLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2F0dXJhdGVkLlxuLy8gVGhpcyB3aWxsIG5ldmVyIHJldHVybiBhIHB1cmUgc2F0dXJhdGVkIG9yIGRlc2F0dXJhdGVkIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTsgfVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCgjMDAwMDAwLCAkY29sb3IsICRwZXJjZW50YWdlKTsgfVxuXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KCNmZmZmZmYsICRjb2xvciwgJHBlcmNlbnRhZ2UpOyB9XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vICBvdmVycmlkZSB0byBjaGFuZ2UgdGhlIGRlZmF1bHRcbiRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHNpemUgb2YgYmFja2dyb3VuZCBpbWFnZXMgdXNpbmcgcHgsIHdpZHRoIGFuZCBoZWlnaHQsIG9yIHBlcmNlbnRhZ2VzLlxuLy8gQ3VycmVudGx5IHN1cHBvcnRlZCBpbjogT3BlcmEsIEdlY2tvLCBXZWJraXQuXG4vL1xuLy8gKiBwZXJjZW50YWdlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJhY2tncm91bmQtb3JpZ2luIChkZWZhdWx0ID0gcGFkZGluZy1ib3gpXG4vLyAqIG1peGluIGRlZmF1bHRzIHRvOiBgJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplYFxuQG1peGluIGJhY2tncm91bmQtc2l6ZSgkc2l6ZS0xOiAkZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemUsICRzaXplLTI6IGZhbHNlLCAkc2l6ZS0zOiBmYWxzZSwgJHNpemUtNDogZmFsc2UsICRzaXplLTU6IGZhbHNlLCAkc2l6ZS02OiBmYWxzZSwgJHNpemUtNzogZmFsc2UsICRzaXplLTg6IGZhbHNlLCAkc2l6ZS05OiBmYWxzZSwgJHNpemUtMTA6IGZhbHNlKSB7XG4gICRzaXplLTE6IGlmKHR5cGUtb2YoJHNpemUtMSkgPT0gc3RyaW5nLCB1bnF1b3RlKCRzaXplLTEpLCAkc2l6ZS0xKTtcbiAgJHNpemVzOiBjb21wYWN0KCRzaXplLTEsICRzaXplLTIsICRzaXplLTMsICRzaXplLTQsICRzaXplLTUsICRzaXplLTYsICRzaXplLTcsICRzaXplLTgsICRzaXplLTksICRzaXplLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtc2l6ZSwgJHNpemVzLCAtbW96LCAtd2Via2l0LCAtbywgbm90IC1tcywgbm90IC1raHRtbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJjc3MzL2JvcmRlci1yYWRpdXNcIjtcbkBpbXBvcnQgXCJjc3MzL2lubGluZS1ibG9ja1wiO1xuQGltcG9ydCBcImNzczMvb3BhY2l0eVwiO1xuQGltcG9ydCBcImNzczMvYm94LXNoYWRvd1wiO1xuQGltcG9ydCBcImNzczMvdGV4dC1zaGFkb3dcIjtcbkBpbXBvcnQgXCJjc3MzL2NvbHVtbnNcIjtcbkBpbXBvcnQgXCJjc3MzL2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJjc3MzL2JveFwiO1xuQGltcG9ydCBcImNzczMvaW1hZ2VzXCI7XG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kLWNsaXBcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtb3JpZ2luXCI7XG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kLXNpemVcIjtcbkBpbXBvcnQgXCJjc3MzL2ZvbnQtZmFjZVwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNmb3JtXCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2l0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy9hcHBlYXJhbmNlXCI7XG5AaW1wb3J0IFwiY3NzMy9yZWdpb25zXCI7XG5AaW1wb3J0IFwiY3NzMy9oeXBoZW5hdGlvblwiO1xuQGltcG9ydCBcImNzczMvZmlsdGVyXCI7XG5AaW1wb3J0IFwiY3NzMy9waWVcIjtcbkBpbXBvcnQgXCJjc3MzL3VzZXItaW50ZXJmYWNlXCI7XG5AaW1wb3J0IFwiY3NzMy9mbGV4Ym94XCI7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbiRkZWZhdWx0LWJvcmRlci1yYWRpdXM6IDVweCAhZGVmYXVsdDtcblxuLy8gUm91bmQgYWxsIGNvcm5lcnMgYnkgYSBzcGVjaWZpYyBhbW91bnQsIGRlZmF1bHRzIHRvIHZhbHVlIG9mIGAkZGVmYXVsdC1ib3JkZXItcmFkaXVzYC5cbi8vXG4vLyBXaGVuIHR3byB2YWx1ZXMgYXJlIHBhc3NlZCwgdGhlIGZpcnN0IGlzIHRoZSBob3Jpem9udGFsIHJhZGl1c1xuLy8gYW5kIHRoZSBzZWNvbmQgaXMgdGhlIHZlcnRpY2FsIHJhZGl1cy5cbi8vXG4vLyBOb3RlOiB3ZWJraXQgZG9lcyBub3Qgc3VwcG9ydCBzaG9ydGhhbmQgc3ludGF4IGZvciBzZXZlcmFsIGNvcm5lcnMgYXQgb25jZS5cbi8vIFNvIGluIHRoZSBjYXNlIHdoZXJlIHlvdSBwYXNzIHNldmVyYWwgdmFsdWVzIG9ubHkgdGhlIGZpcnN0IHdpbGwgYmUgcGFzc2VkIHRvIHdlYmtpdC5cbi8vXG4vLyBFeGFtcGxlczpcbi8vXG4vLyAgICAgLnNpbXBsZSAgIHsgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyg0cHgsIDRweCk7IH1cbi8vICAgICAuY29tcG91bmQgeyBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDJweCA1cHgsIDNweCA2cHgpOyB9XG4vLyAgICAgLmNyYXp5ICAgIHsgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygxcHggM3B4IDVweCA3cHgsIDJweCA0cHggNnB4IDhweCl9XG4vL1xuLy8gV2hpY2ggZ2VuZXJhdGVzOlxuLy9cbi8vICAgIC5zaW1wbGUge1xuLy8gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweCA0cHg7XG4vLyAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogNHB4IC8gNHB4O1xuLy8gICAgICAta2h0bWwtYm9yZGVyLXJhZGl1czogNHB4IC8gNHB4O1xuLy8gICAgICBib3JkZXItcmFkaXVzOiA0cHggLyA0cHg7IH1cbi8vXG4vLyAgICAuY29tcG91bmQge1xuLy8gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweCAzcHg7XG4vLyAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogMnB4IDVweCAvIDNweCA2cHg7XG4vLyAgICAgIC1raHRtbC1ib3JkZXItcmFkaXVzOiAycHggNXB4IC8gM3B4IDZweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogMnB4IDVweCAvIDNweCA2cHg7IH1cbi8vXG4vLyAgICAuY3Jhenkge1xuLy8gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDFweCAycHg7XG4vLyAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogMXB4IDNweCA1cHggN3B4IC8gMnB4IDRweCA2cHggOHB4O1xuLy8gICAgICAta2h0bWwtYm9yZGVyLXJhZGl1czogMXB4IDNweCA1cHggN3B4IC8gMnB4IDRweCA2cHggOHB4O1xuLy8gICAgICBib3JkZXItcmFkaXVzOiAxcHggM3B4IDVweCA3cHggLyAycHggNHB4IDZweCA4cHg7IH1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cywgJHZlcnRpY2FsLXJhZGl1czogZmFsc2UpIHtcbiAgQGlmICR2ZXJ0aWNhbC1yYWRpdXMge1xuICAgIC8vIFdlYmtpdCBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlIG9mZmljaWFsIHNob3J0aGFuZCBzeW50YXggZm9yIHNwZWNpZnlpbmdcbiAgICAvLyBhIHZlcnRpY2FsIHJhZGl1cyB1bmxlc3Mgc28gaW4gY2FzZSB0aGVyZSdzIHNldmVyYWwgd2Ugb25seSB0YWtlIHRoZSBmaXJzdC5cbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm9yZGVyLXJhZGl1cywgZmlyc3QtdmFsdWUtb2YoJHJhZGl1cykgZmlyc3QtdmFsdWUtb2YoJHZlcnRpY2FsLXJhZGl1cyksIG5vdCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG5vdCBvZmZpY2lhbCk7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKFwiYm9yZGVyLXJhZGl1c1wiLCAkcmFkaXVzIHVucXVvdGUoXCIvXCIpICR2ZXJ0aWNhbC1yYWRpdXMsIC1tb3osIG5vdCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm9yZGVyLXJhZGl1cywgJHJhZGl1cyk7IH0gfVxuXG4vLyBSb3VuZCByYWRpdXMgYXQgcG9zaXRpb24gYnkgYW1vdW50LlxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGZvciBgJHZlcnRgOiBgdG9wYCwgYGJvdHRvbWBcbi8vICogbGVnYWwgdmFsdWVzIGZvciBgJGhvcnpgOiBgbGVmdGAsIGByaWdodGBcblxuQG1peGluIGJvcmRlci1jb3JuZXItcmFkaXVzKCR2ZXJ0LCAkaG9yeiwgJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICAvLyBTdXBwb3J0IGZvciBtb3ppbGxhJ3Mgc3ludGF4IGZvciBzcGVjaWZ5aW5nIGEgY29ybmVyXG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh1bnF1b3RlKFwiYm9yZGVyLXJhZGl1cy0jeyR2ZXJ0fSN7JGhvcnp9XCIpLCAkcmFkaXVzLCAtbW96LCBub3QgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBub3Qgb2ZmaWNpYWwpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJib3JkZXItI3skdmVydH0tI3skaG9yen0tcmFkaXVzXCIsICRyYWRpdXMsIG5vdCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFJvdW5kIHRvcC1sZWZ0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItdG9wLWxlZnQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXModG9wLCBsZWZ0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCB0b3AtcmlnaHQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXModG9wLCByaWdodCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90dG9tLWxlZnQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyhib3R0b20sIGxlZnQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdHRvbS1yaWdodCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyhib3R0b20sIHJpZ2h0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIHRvcCBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMoJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCByaWdodCBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci1yaWdodC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMoJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCBib3R0b20gY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzKCRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggbGVmdCBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci1sZWZ0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtbGVmdC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1cyk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU2V0IGAkaW5saW5lLWJsb2NrLWFsaWdubWVudGAgdG8gYG5vbmVgIG9yIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgb3V0cHV0XG4vLyBvZiBhIHZlcnRpY2FsLWFsaWduIHByb3BlcnR5IGluIHRoZSBpbmxpbmUtYmxvY2sgbWl4aW4uXG4vLyBPciBzZXQgaXQgdG8gYSBsZWdhbCB2YWx1ZSBmb3IgYHZlcnRpY2FsLWFsaWduYCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQuXG4kaW5saW5lLWJsb2NrLWFsaWdubWVudDogbWlkZGxlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBhIGNyb3NzLWJyb3dzZXIgbWV0aG9kIHRvIGltcGxlbWVudCBgZGlzcGxheTogaW5saW5lLWJsb2NrO2BcbkBtaXhpbiBpbmxpbmUtYmxvY2soJGFsaWdubWVudDogJGlubGluZS1ibG9jay1hbGlnbm1lbnQpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7IH1cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBAaWYgJGFsaWdubWVudCBhbmQgJGFsaWdubWVudCAhPSBub25lIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJGFsaWdubWVudDsgfVxuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgKnZlcnRpY2FsLWFsaWduOiBhdXRvO1xuICAgIHpvb206IDE7XG4gICAgKmRpc3BsYXk6IGlubGluZTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgQ1NTIG9wYWNpdHkuIFRha2VzIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMSBhcyB0aGUgYXJndW1lbnQsIGUuZy4gMC41IGZvciA1MCUgb3BhY2l0eS5cbi8vXG4vLyAgICAgQHBhcmFtICRvcGFjaXR5XG4vLyAgICAgICAgIEEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMSwgd2hlcmUgMCBpcyB0cmFuc3BhcmVudCBhbmQgMSBpcyBvcGFxdWUuXG5cbkBtaXhpbiBvcGFjaXR5KCRvcGFjaXR5KSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllOCB7XG4gICAgZmlsdGVyOiB1bnF1b3RlKFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9I3tyb3VuZCgkb3BhY2l0eSAqIDEwMCl9KVwiKTsgfVxuICBvcGFjaXR5OiAkb3BhY2l0eTsgfVxuXG4vLyBNYWtlIGFuIGVsZW1lbnQgY29tcGxldGVseSB0cmFuc3BhcmVudC5cbkBtaXhpbiB0cmFuc3BhcmVudCB7XG4gIEBpbmNsdWRlIG9wYWNpdHkoMCk7IH1cblxuLy8gTWFrZSBhbiBlbGVtZW50IGNvbXBsZXRlbHkgb3BhcXVlLlxuQG1peGluIG9wYXF1ZSB7XG4gIEBpbmNsdWRlIG9wYWNpdHkoMSk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIEBkb2Mgb2ZmXG4vLyBUaGVzZSBkZWZhdWx0cyBtYWtlIHRoZSBhcmd1bWVudHMgb3B0aW9uYWwgZm9yIHRoaXMgbWl4aW5cbi8vIElmIHlvdSBsaWtlLCBzZXQgZGlmZmVyZW50IGRlZmF1bHRzIGJlZm9yZSBpbXBvcnRpbmcuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gVGhlIGRlZmF1bHQgY29sb3IgZm9yIGJveCBzaGFkb3dzXG4kZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yOiAjMzMzMzMzICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBob3Jpem9udGFsIG9mZnNldC4gUG9zaXRpdmUgaXMgdG8gdGhlIHJpZ2h0LlxuJGRlZmF1bHQtYm94LXNoYWRvdy1oLW9mZnNldDogMHB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB2ZXJ0aWNhbCBvZmZzZXQuIFBvc2l0aXZlIGlzIGRvd24uXG4kZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0OiAwcHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGJsdXIgbGVuZ3RoLlxuJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyOiA1cHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHNwcmVhZCBsZW5ndGguXG4kZGVmYXVsdC1ib3gtc2hhZG93LXNwcmVhZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHNoYWRvdyBpbnNldDogaW5zZXQgb3IgZmFsc2UgKGZvciBzdGFuZGFyZCBzaGFkb3cpLlxuJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgZm9yIFdlYmtpdCwgR2Vja28sIGFuZCBDU1MzIGJveCBzaGFkb3dzIHdoZW4gb25lIG9yIG1vcmUgYm94XG4vLyBzaGFkb3dzIGFyZSBuZWVkZWQuXG4vLyBFYWNoIHNoYWRvdyBhcmd1bWVudCBzaG91bGQgYWRoZXJlIHRvIHRoZSBzdGFuZGFyZCBjc3MzIHN5bnRheCBmb3IgdGhlXG4vLyBib3gtc2hhZG93IHByb3BlcnR5LlxuQG1peGluIGJveC1zaGFkb3coJHNoYWRvdy0xOiBkZWZhdWx0LCAkc2hhZG93LTI6IGZhbHNlLCAkc2hhZG93LTM6IGZhbHNlLCAkc2hhZG93LTQ6IGZhbHNlLCAkc2hhZG93LTU6IGZhbHNlLCAkc2hhZG93LTY6IGZhbHNlLCAkc2hhZG93LTc6IGZhbHNlLCAkc2hhZG93LTg6IGZhbHNlLCAkc2hhZG93LTk6IGZhbHNlLCAkc2hhZG93LTEwOiBmYWxzZSkge1xuICBAaWYgJHNoYWRvdy0xID09IGRlZmF1bHQge1xuICAgICRzaGFkb3ctMTogLWNvbXBhc3Mtc3BhY2UtbGlzdChjb21wYWN0KGlmKCRkZWZhdWx0LWJveC1zaGFkb3ctaW5zZXQsIGluc2V0LCBmYWxzZSksICRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQsICRkZWZhdWx0LWJveC1zaGFkb3ctdi1vZmZzZXQsICRkZWZhdWx0LWJveC1zaGFkb3ctYmx1ciwgJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQsICRkZWZhdWx0LWJveC1zaGFkb3ctY29sb3IpKTsgfVxuICAkc2hhZG93OiBjb21wYWN0KCRzaGFkb3ctMSwgJHNoYWRvdy0yLCAkc2hhZG93LTMsICRzaGFkb3ctNCwgJHNoYWRvdy01LCAkc2hhZG93LTYsICRzaGFkb3ctNywgJHNoYWRvdy04LCAkc2hhZG93LTksICRzaGFkb3ctMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LXNoYWRvdywgJHNoYWRvdywgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gUHJvdmlkZXMgYSBzaW5nbGUgY3Jvc3MtYnJvd3NlciBDU1MgYm94IHNoYWRvdyBmb3IgV2Via2l0LCBHZWNrbywgYW5kIENTUzMuXG4vLyBJbmNsdWRlcyBkZWZhdWx0IGFyZ3VtZW50cyBmb3IgaG9yaXpvbnRhbCBvZmZzZXQsIHZlcnRpY2FsIG9mZnNldCwgYmx1ciBsZW5ndGgsIHNwcmVhZCBsZW5ndGgsIGNvbG9yIGFuZCBpbnNldC5cbkBtaXhpbiBzaW5nbGUtYm94LXNoYWRvdygkaG9mZjogJGRlZmF1bHQtYm94LXNoYWRvdy1oLW9mZnNldCwgJHZvZmY6ICRkZWZhdWx0LWJveC1zaGFkb3ctdi1vZmZzZXQsICRibHVyOiAkZGVmYXVsdC1ib3gtc2hhZG93LWJsdXIsICRzcHJlYWQ6ICRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkLCAkY29sb3I6ICRkZWZhdWx0LWJveC1zaGFkb3ctY29sb3IsICRpbnNldDogJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldCkge1xuICBAaWYgbm90ICgkaW5zZXQgPT0gdHJ1ZSBvciAkaW5zZXQgPT0gZmFsc2Ugb3IgJGluc2V0ID09IGluc2V0KSB7XG4gICAgQHdhcm4gXCIkaW5zZXQgZXhwZWN0ZWQgdG8gYmUgdHJ1ZSBvciB0aGUgaW5zZXQga2V5d29yZC4gR290ICN7JGluc2V0fSBpbnN0ZWFkLiBVc2luZzogaW5zZXRcIjsgfVxuICBAaWYgJGNvbG9yID09IG5vbmUge1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7IH1cbiAgQGVsc2Uge1xuICAgICRmdWxsOiAkaG9mZiAkdm9mZjtcbiAgICBAaWYgJGJsdXIge1xuICAgICAgJGZ1bGw6ICRmdWxsICRibHVyOyB9XG4gICAgQGlmICRzcHJlYWQge1xuICAgICAgJGZ1bGw6ICRmdWxsICRzcHJlYWQ7IH1cbiAgICBAaWYgJGNvbG9yIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkY29sb3I7IH1cbiAgICBAaWYgJGluc2V0IHtcbiAgICAgICRmdWxsOiBpbnNldCAkZnVsbDsgfVxuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGZ1bGwpOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gVGhlc2UgZGVmYXVsdHMgbWFrZSB0aGUgYXJndW1lbnRzIG9wdGlvbmFsIGZvciB0aGlzIG1peGluXG4vLyBJZiB5b3UgbGlrZSwgc2V0IGRpZmZlcmVudCBkZWZhdWx0cyBpbiB5b3VyIHByb2plY3RcblxuJGRlZmF1bHQtdGV4dC1zaGFkb3ctY29sb3I6ICNhYWEgIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1oLW9mZnNldDogMHB4ICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctdi1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LWJsdXI6IDFweCAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LXNwcmVhZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgdGV4dCBzaGFkb3dzIHdoZW4gb25lIG9yIG1vcmUgc2hhZG93cyBhcmUgbmVlZGVkLlxuLy8gRWFjaCBzaGFkb3cgYXJndW1lbnQgc2hvdWxkIGFkaGVyZSB0byB0aGUgc3RhbmRhcmQgY3NzMyBzeW50YXggZm9yIHRoZVxuLy8gdGV4dC1zaGFkb3cgcHJvcGVydHkuXG4vL1xuLy8gTm90ZTogaWYgYW55IHNoYWRvdyBoYXMgYSBzcHJlYWQgcGFyYW1ldGVyLCB0aGlzIHdpbGwgY2F1c2UgdGhlIG1peGluXG4vLyB0byBlbWl0IHRoZSBzaGFkb3cgZGVjbGFyYXRpb24gdHdpY2UsIGZpcnN0IHdpdGhvdXQgdGhlIHNwcmVhZCxcbi8vIHRoZW4gd2l0aCB0aGUgc3ByZWFkIGluY2x1ZGVkLiBUaGlzIGFsbG93cyB5b3UgdG8gcHJvZ3Jlc3NpdmVseVxuLy8gZW5oYW5jZSB0aGUgYnJvd3NlcnMgdGhhdCBkbyBzdXBwb3J0IHRoZSBzcHJlYWQgcGFyYW1ldGVyLlxuQG1peGluIHRleHQtc2hhZG93KCRzaGFkb3ctMTogZGVmYXVsdCwgJHNoYWRvdy0yOiBmYWxzZSwgJHNoYWRvdy0zOiBmYWxzZSwgJHNoYWRvdy00OiBmYWxzZSwgJHNoYWRvdy01OiBmYWxzZSwgJHNoYWRvdy02OiBmYWxzZSwgJHNoYWRvdy03OiBmYWxzZSwgJHNoYWRvdy04OiBmYWxzZSwgJHNoYWRvdy05OiBmYWxzZSwgJHNoYWRvdy0xMDogZmFsc2UpIHtcbiAgQGlmICRzaGFkb3ctMSA9PSBkZWZhdWx0IHtcbiAgICAkc2hhZG93LTE6IGNvbXBhY3QoJGRlZmF1bHQtdGV4dC1zaGFkb3ctaC1vZmZzZXQgJGRlZmF1bHQtdGV4dC1zaGFkb3ctdi1vZmZzZXQgJGRlZmF1bHQtdGV4dC1zaGFkb3ctYmx1ciAkZGVmYXVsdC10ZXh0LXNoYWRvdy1zcHJlYWQgJGRlZmF1bHQtdGV4dC1zaGFkb3ctY29sb3IpOyB9XG4gICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOiBqb2luKCgpLCAoKSwgY29tbWEpO1xuICAkc2hhZG93czogam9pbigoKSwgKCksIGNvbW1hKTtcbiAgJGhhcy1zcHJlYWQ6IGZhbHNlO1xuICBAZWFjaCAkc2hhZG93IGluIGNvbXBhY3QoJHNoYWRvdy0xLCAkc2hhZG93LTIsICRzaGFkb3ctMywgJHNoYWRvdy00LCAkc2hhZG93LTUsICRzaGFkb3ctNiwgJHNoYWRvdy03LCAkc2hhZG93LTgsICRzaGFkb3ctOSwgJHNoYWRvdy0xMCkge1xuICAgIEBpZiBsZW5ndGgoJHNoYWRvdykgPiA0IHtcbiAgICAgICRoYXMtc3ByZWFkOiB0cnVlO1xuICAgICAgJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ6IGFwcGVuZCgkc2hhZG93cy13aXRob3V0LXNwcmVhZCwgbnRoKCRzaGFkb3csIDEpIG50aCgkc2hhZG93LCAyKSBudGgoJHNoYWRvdywgMykgbnRoKCRzaGFkb3csIDUpKTtcbiAgICAgICRzaGFkb3dzOiBhcHBlbmQoJHNoYWRvd3MsICRzaGFkb3cpOyB9XG4gICAgZWxzZSB7XG4gICAgICAkc2hhZG93cy13aXRob3V0LXNwcmVhZDogYXBwZW5kKCRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkLCAkc2hhZG93KTtcbiAgICAgICRzaGFkb3dzOiBhcHBlbmQoJHNoYWRvd3MsICRzaGFkb3cpOyB9IH1cbiAgQGlmICRoYXMtc3ByZWFkIHtcbiAgICB0ZXh0LXNoYWRvdzogJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ7IH1cbiAgdGV4dC1zaGFkb3c6ICRzaGFkb3dzOyB9XG5cbi8vIFByb3ZpZGVzIGEgc2luZ2xlIGNyb3NzLWJyb3dzZXIgQ1NTIHRleHQgc2hhZG93LlxuLy9cbi8vIFByb3ZpZGVzIHNlbnNpYmxlIGRlZmF1bHRzIGZvciB0aGUgY29sb3IsIGhvcml6b250YWwgb2Zmc2V0LCB2ZXJ0aWNhbCBvZmZzZXQsIGJsdXIsIGFuZCBzcHJlYWRcbi8vIGFjY29yZGluZyB0byB0aGUgY29uZmlndXJhdGlvbiBkZWZhdWx0cyBhYm92ZS5cbkBtaXhpbiBzaW5nbGUtdGV4dC1zaGFkb3coJGhvZmY6IGZhbHNlLCAkdm9mZjogZmFsc2UsICRibHVyOiBmYWxzZSwgJHNwcmVhZDogZmFsc2UsICRjb2xvcjogZmFsc2UpIHtcbiAgLy8gQSBsb3Qgb2YgcGVvcGxlIHRoaW5rIHRoZSBjb2xvciBjb21lcyBmaXJzdC4gSXQgZG9lc24ndC5cbiAgQGlmIHR5cGUtb2YoJGhvZmYpID09IGNvbG9yIHtcbiAgICAkdGVtcC1jb2xvcjogJGhvZmY7XG4gICAgJGhvZmY6ICR2b2ZmO1xuICAgICR2b2ZmOiAkYmx1cjtcbiAgICAkYmx1cjogJHNwcmVhZDtcbiAgICAkc3ByZWFkOiAkY29sb3I7XG4gICAgJGNvbG9yOiAkdGVtcC1jb2xvcjsgfVxuICAvLyBDYW4ndCByZWx5IG9uIGRlZmF1bHQgYXNzaWdubWVudCB3aXRoIG11bHRpcGxlIHN1cHBvcnRlZCBhcmd1bWVudCBvcmRlcnMuXG4gICRob2ZmOiBpZigkaG9mZiwgJGhvZmYsICRkZWZhdWx0LXRleHQtc2hhZG93LWgtb2Zmc2V0KTtcbiAgJHZvZmY6IGlmKCR2b2ZmLCAkdm9mZiwgJGRlZmF1bHQtdGV4dC1zaGFkb3ctdi1vZmZzZXQpO1xuICAkYmx1cjogaWYoJGJsdXIsICRibHVyLCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1ibHVyKTtcbiAgJHNwcmVhZDogaWYoJHNwcmVhZCwgJHNwcmVhZCwgJGRlZmF1bHQtdGV4dC1zaGFkb3ctc3ByZWFkKTtcbiAgJGNvbG9yOiBpZigkY29sb3IsICRjb2xvciwgJGRlZmF1bHQtdGV4dC1zaGFkb3ctY29sb3IpO1xuICAvLyBXZSBkb24ndCBuZWVkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciB0aGlzIHByb3BlcnR5LlxuICBAaWYgJGNvbG9yID09IG5vbmUgb3IgJGhvZmYgPT0gbm9uZSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaGFkb3cobm9uZSk7IH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHRleHQtc2hhZG93KGNvbXBhY3QoJGhvZmYgJHZvZmYgJGJsdXIgJHNwcmVhZCAkY29sb3IpKTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFNwZWNpZnkgdGhlIHNob3J0aGFuZCBgY29sdW1uc2AgcHJvcGVydHkuXG4vL1xuLy8gRXhhbXBsZTpcbi8vXG4vLyAgICAgQGluY2x1ZGUgY29sdW1ucygyMGVtIDIpXG5AbWl4aW4gY29sdW1ucygkd2lkdGgtYW5kLWNvdW50KSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW5zLCAkd2lkdGgtYW5kLWNvdW50LCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gU3BlY2lmeSB0aGUgbnVtYmVyIG9mIGNvbHVtbnNcbkBtaXhpbiBjb2x1bW4tY291bnQoJGNvdW50KSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tY291bnQsICRjb3VudCwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFNwZWNpZnkgdGhlIGdhcCBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgMjBweGBcbkBtaXhpbiBjb2x1bW4tZ2FwKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWdhcCwgJHdpZHRoLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gU3BlY2lmeSB0aGUgd2lkdGggb2YgY29sdW1ucyBlLmcuIGAxMDBweGBcbkBtaXhpbiBjb2x1bW4td2lkdGgoJHdpZHRoKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4td2lkdGgsICR3aWR0aCwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFNwZWNpZnkgdGhlIHdpZHRoIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBlLmcuIGAxcHhgXG5AbWl4aW4gY29sdW1uLXJ1bGUtd2lkdGgoJHdpZHRoKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gU3BlY2lmeSB0aGUgc3R5bGUgb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYGRvdHRlZGAuXG4vLyBUaGlzIHdvcmtzIGxpa2UgYm9yZGVyLXN0eWxlLlxuQG1peGluIGNvbHVtbi1ydWxlLXN0eWxlKCRzdHlsZSkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtc3R5bGUsIHVucXVvdGUoJHN0eWxlKSwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFNwZWNpZnkgdGhlIGNvbG9yIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBlLmcuIGBibHVlYC5cbi8vIFRoaXMgd29ya3MgbGlrZSBib3JkZXItY29sb3IuXG5AbWl4aW4gY29sdW1uLXJ1bGUtY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tcnVsZS1jb2xvciwgJGNvbG9yLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gTWl4aW4gZW5jb21wYXNzaW5nIGFsbCBjb2x1bW4gcnVsZSBwcm9wZXJ0aWVzXG4vLyBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgQGluY2x1ZGUgY29sdW1uLXJ1bGUoMXB4LCBzb2xpZCwgI2MwMClcbi8vXG4vLyBPciB0aGUgdmFsdWVzIGNhbiBiZSBzcGFjZSBzZXBhcmF0ZWQ6XG4vL1xuLy8gICAgIEBpbmNsdWRlIGNvbHVtbi1ydWxlKDFweCBzb2xpZCAjYzAwKVxuQG1peGluIGNvbHVtbi1ydWxlKCR3aWR0aCwgJHN0eWxlOiBmYWxzZSwgJGNvbG9yOiBmYWxzZSkge1xuICAkZnVsbDogLWNvbXBhc3Mtc3BhY2UtbGlzdChjb21wYWN0KCR3aWR0aCwgJHN0eWxlLCAkY29sb3IpKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1ydWxlLCAkZnVsbCwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIE1peGluIGZvciBzZXR0aW5nIGNvbHVtbi1icmVhay1iZWZvcmVcbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYWx3YXlzLCBhdm9pZCwgbGVmdCwgcmlnaHQsIHBhZ2UsIGNvbHVtbiwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vL1xuLy8gIEV4YW1wbGU6XG4vLyAgICBoMi5iZWZvcmUge0BpbmNsdWRlIGNvbHVtbi1icmVhay1iZWZvcmUoYWx3YXlzKTt9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczpcbi8vXG4vLyAgaDIuYmVmb3JlIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWJlZm9yZTogYWx3YXlzO1xuLy8gICAgY29sdW1uLWJyZWFrLWJlZm9yZTogYWx3YXlzO31cbkBtaXhpbiBjb2x1bW4tYnJlYWstYmVmb3JlKCR2YWx1ZTogYXV0bykge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWJyZWFrLWJlZm9yZSwgJHZhbHVlLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gTWl4aW4gZm9yIHNldHRpbmcgY29sdW1uLWJyZWFrLWFmdGVyXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlOlxuLy8gICAgaDIuYWZ0ZXIge0BpbmNsdWRlIGNvbHVtbi1icmVhay1hZnRlcihhbHdheXMpOyB9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczpcbi8vXG4vLyAgaDIuYWZ0ZXIge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzOyB9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWFmdGVyKCR2YWx1ZTogYXV0bykge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWJyZWFrLWFmdGVyLCAkdmFsdWUsIG5vdCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBNaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4tYnJlYWstaW5zaWRlXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGF2b2lkLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vXG4vLyAgRXhhbXBsZTpcbi8vICAgIGgyLmluc2lkZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrLWluc2lkZSgpO31cbi8vICBXaGljaCBnZW5lcmF0ZXM6XG4vL1xuLy8gIGgyLmluc2lkZSB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87XG4vLyAgICBjb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO31cbkBtaXhpbiBjb2x1bW4tYnJlYWstaW5zaWRlKCR2YWx1ZTogYXV0bykge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWJyZWFrLWluc2lkZSwgJHZhbHVlLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gQWxsLXB1cnBvc2UgbWl4aW4gZm9yIHNldHRpbmcgY29sdW1uIGJyZWFrcy5cbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgJHR5cGUgOiBiZWZvcmUsIGFmdGVyLCBpbnNpZGVcbi8vICogbGVnYWwgdmFsdWVzIGZvciAnJHZhbHVlJyBhcmUgZGVwZW5kZW50IG9uICR0eXBlXG4vLyAgICAqIHdoZW4gJHR5cGUgPSBiZWZvcmUsIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYWx3YXlzLCBhdm9pZCwgbGVmdCwgcmlnaHQsIHBhZ2UsIGNvbHVtbiwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vLyAgICAqIHdoZW4gJHR5cGUgPSBhZnRlciwgbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vICAgICogd2hlbiAkdHlwZSA9IGluc2lkZSwgbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhdm9pZCwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vL1xuLy8gIEV4YW1wbGVzOlxuLy8gICAgaDIuYmVmb3JlIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWsoYmVmb3JlLCBhbHdheXMpO31cbi8vICAgIGgyLmFmdGVyIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWsoYWZ0ZXIsIGFsd2F5cyk7IH1cbi8vICAgIGgyLmluc2lkZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrKGluc2lkZSk7IH1cbi8vXG4vLyAgV2hpY2ggZ2VuZXJhdGVzOlxuLy8gIGgyLmJlZm9yZSB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5czt9XG4vL1xuLy8gIGgyLmFmdGVyIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5czsgfVxuLy9cbi8vICBoMi5pbnNpZGUge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xuLy8gICAgY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bzt9XG5cbkBtaXhpbiBjb2x1bW4tYnJlYWsoJHR5cGU6IGJlZm9yZSwgJHZhbHVlOiBhdXRvKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImNvbHVtbi1icmVhay0jeyR0eXBlfVwiLCAkdmFsdWUsIG5vdCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDaGFuZ2UgdGhlIGJveCBtb2RlbCBmb3IgTW96aWxsYSwgV2Via2l0LCBJRTggYW5kIHRoZSBmdXR1cmVcbi8vXG4vLyBAcGFyYW0gJGJzXG4vLyAgIFsgY29udGVudC1ib3ggfCBib3JkZXItYm94IF1cblxuQG1peGluIGJveC1zaXppbmcoJGJzKSB7XG4gICRiczogdW5xdW90ZSgkYnMpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LXNpemluZywgJGJzLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBkaXNwbGF5OmJveDsgbXVzdCBiZSB1c2VkIGZvciBhbnkgb2YgdGhlIG90aGVyIGZsZXhib3ggbWl4aW5zIHRvIHdvcmsgcHJvcGVybHlcbkBtaXhpbiBkaXNwbGF5LWJveCB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbC12YWx1ZShkaXNwbGF5LCBib3gsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gRGVmYXVsdCBib3ggb3JpZW50YXRpb24sIGFzc3VtaW5nIHRoYXQgdGhlIHVzZXIgd2FudHMgc29tZXRoaW5nIGxlc3MgYmxvY2stbGlrZVxuJGRlZmF1bHQtYm94LW9yaWVudDogaG9yaXpvbnRhbCAhZGVmYXVsdDtcblxuLy8gQm94IG9yaWVudGF0aW9uIFsgaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgaW5saW5lLWF4aXMgfCBibG9jay1heGlzIHwgaW5oZXJpdCBdXG5AbWl4aW4gYm94LW9yaWVudCgkb3JpZW50YXRpb246ICRkZWZhdWx0LWJveC1vcmllbnQpIHtcbiAgJG9yaWVudGF0aW9uOiB1bnF1b3RlKCRvcmllbnRhdGlvbik7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtb3JpZW50LCAkb3JpZW50YXRpb24sIC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gRGVmYXVsdCBib3gtYWxpZ25cbiRkZWZhdWx0LWJveC1hbGlnbjogc3RyZXRjaCAhZGVmYXVsdDtcblxuLy8gQm94IGFsaWduIFsgc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2ggXVxuQG1peGluIGJveC1hbGlnbigkYWxpZ25tZW50OiAkZGVmYXVsdC1ib3gtYWxpZ24pIHtcbiAgJGFsaWdubWVudDogdW5xdW90ZSgkYWxpZ25tZW50KTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1hbGlnbiwgJGFsaWdubWVudCwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBEZWZhdWx0IGJveCBmbGV4XG4kZGVmYXVsdC1ib3gtZmxleDogMCAhZGVmYXVsdDtcblxuLy8gbWl4aW4gd2hpY2ggdGFrZXMgYW4gaW50IGFyZ3VtZW50IGZvciBib3ggZmxleC4gQXBwbHkgdGhpcyB0byB0aGUgY2hpbGRyZW4gaW5zaWRlIHRoZSBib3guXG4vL1xuLy8gRm9yIGV4YW1wbGU6IFwiZGl2LmRpc3BsYXktYm94ID4gZGl2LmNoaWxkLWJveFwiIHdvdWxkIGdldCB0aGUgYm94IGZsZXggbWl4aW4uXG5AbWl4aW4gYm94LWZsZXgoJGZsZXg6ICRkZWZhdWx0LWJveC1mbGV4KSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtZmxleCwgJGZsZXgsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gRGVmYXVsdCBmbGV4IGdyb3VwXG4kZGVmYXVsdC1ib3gtZmxleC1ncm91cDogMSAhZGVmYXVsdDtcblxuLy8gbWl4aW4gd2hpY2ggdGFrZXMgYW4gaW50IGFyZ3VtZW50IGZvciBmbGV4aWJsZSBncm91cGluZ1xuQG1peGluIGJveC1mbGV4LWdyb3VwKCRncm91cDogJGRlZmF1bHQtYm94LWZsZXgtZ3JvdXApIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1mbGV4LWdyb3VwLCAkZ3JvdXAsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gZGVmYXVsdCBmb3Igb3JkaW5hbCBncm91cFxuJGRlZmF1bHQtYm94LW9yZGluYWwtZ3JvdXA6IDEgIWRlZmF1bHQ7XG5cbi8vIG1peGluIHdoaWNoIHRha2VzIGFuIGludCBhcmd1bWVudCBmb3Igb3JkaW5hbCBncm91cGluZyBhbmQgcmVhcnJhbmdpbmcgdGhlIG9yZGVyXG5AbWl4aW4gYm94LW9yZGluYWwtZ3JvdXAoJGdyb3VwOiAkZGVmYXVsdC1vcmRpbmFsLWZsZXgtZ3JvdXApIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1vcmRpbmFsLWdyb3VwLCAkZ3JvdXAsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gQm94IGRpcmVjdGlvbiBkZWZhdWx0IHZhbHVlXG4kZGVmYXVsdC1ib3gtZGlyZWN0aW9uOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vIG1peGluIGZvciBib3gtZGlyZWN0aW9uIFsgbm9ybWFsIHwgcmV2ZXJzZSB8IGluaGVyaXQgXVxuQG1peGluIGJveC1kaXJlY3Rpb24oJGRpcmVjdGlvbjogJGRlZmF1bHQtYm94LWRpcmVjdGlvbikge1xuICAkZGlyZWN0aW9uOiB1bnF1b3RlKCRkaXJlY3Rpb24pO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBkZWZhdWx0IGZvciBib3ggbGluZXNcbiRkZWZhdWx0LWJveC1saW5lczogc2luZ2xlICFkZWZhdWx0O1xuXG4vLyBtaXhpbiBmb3IgYm94IGxpbmVzIFsgc2luZ2xlIHwgbXVsdGlwbGUgXVxuQG1peGluIGJveC1saW5lcygkbGluZXM6ICRkZWZhdWx0LWJveC1saW5lcykge1xuICAkbGluZXM6IHVucXVvdGUoJGxpbmVzKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1saW5lcywgJGxpbmVzLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIGRlZmF1bHQgZm9yIGJveCBwYWNrXG4kZGVmYXVsdC1ib3gtcGFjazogc3RhcnQgIWRlZmF1bHQ7XG5cbi8vIG1peGluIGZvciBib3ggcGFjayBbIHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSBdXG5AbWl4aW4gYm94LXBhY2soJHBhY2s6ICRkZWZhdWx0LWJveC1wYWNrKSB7XG4gICRwYWNrOiB1bnF1b3RlKCRwYWNrKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1wYWNrLCAkcGFjaywgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuQGltcG9ydCBcIi4uL3V0aWxpdGllcy9nZW5lcmFsL2hhY2tzXCI7XG5AaW1wb3J0IFwiLi4vZnVuY3Rpb25zXCI7XG5cbi8vIEJhY2tncm91bmQgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGJhY2tncm91bmQoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMjogZmFsc2UsICRiYWNrZ3JvdW5kLTM6IGZhbHNlLCAkYmFja2dyb3VuZC00OiBmYWxzZSwgJGJhY2tncm91bmQtNTogZmFsc2UsICRiYWNrZ3JvdW5kLTY6IGZhbHNlLCAkYmFja2dyb3VuZC03OiBmYWxzZSwgJGJhY2tncm91bmQtODogZmFsc2UsICRiYWNrZ3JvdW5kLTk6IGZhbHNlLCAkYmFja2dyb3VuZC0xMDogZmFsc2UpIHtcbiAgJGJhY2tncm91bmRzOiBjb21wYWN0KCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAkYmFja2dyb3VuZHMpIG9yICRtdWx0LWJncztcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIGFuZCBwcmVmaXhlZCgtc3ZnLCAkYmFja2dyb3VuZHMpIHtcbiAgICBiYWNrZ3JvdW5kOiAtc3ZnKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAkYmFja2dyb3VuZHMpIHtcbiAgICBiYWNrZ3JvdW5kOiAtb3dnKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkYmFja2dyb3VuZHMpIHtcbiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0KCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLW1veigkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIGFuZCBwcmVmaXhlZCgtbywgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLW8oJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgYW5kICRhZGQtcGllLWJnIHtcbiAgICAtcGllLWJhY2tncm91bmQ6IC1waWUoJGJhY2tncm91bmRzKTsgfVxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZHM7IH1cblxuQG1peGluIGJhY2tncm91bmQtd2l0aC1jc3MyLWZhbGxiYWNrKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTI6IGZhbHNlLCAkYmFja2dyb3VuZC0zOiBmYWxzZSwgJGJhY2tncm91bmQtNDogZmFsc2UsICRiYWNrZ3JvdW5kLTU6IGZhbHNlLCAkYmFja2dyb3VuZC02OiBmYWxzZSwgJGJhY2tncm91bmQtNzogZmFsc2UsICRiYWNrZ3JvdW5kLTg6IGZhbHNlLCAkYmFja2dyb3VuZC05OiBmYWxzZSwgJGJhY2tncm91bmQtMTA6IGZhbHNlKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LCAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG4gICRtdWx0LWJnczogLWNvbXBhc3MtbGlzdC1zaXplKCRiYWNrZ3JvdW5kcykgPiAxO1xuICAkc2ltcGxlLWJhY2tncm91bmQ6IGlmKCRtdWx0LWJncyBvciBwcmVmaXhlZCgtY3NzMiwgJGJhY2tncm91bmRzKSwgLWNzczIoLWNvbXBhc3MtbnRoKCRiYWNrZ3JvdW5kcywgbGFzdCkpLCBmYWxzZSk7XG4gIEBpZiBub3QgYmxhbmsoJHNpbXBsZS1iYWNrZ3JvdW5kKSB7XG4gICAgYmFja2dyb3VuZDogJHNpbXBsZS1iYWNrZ3JvdW5kOyB9XG4gIEBpbmNsdWRlIGJhY2tncm91bmQoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSwgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApOyB9XG5cbi8vIEJhY2tncm91bmQgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLTEsICRpbWFnZS0yOiBmYWxzZSwgJGltYWdlLTM6IGZhbHNlLCAkaW1hZ2UtNDogZmFsc2UsICRpbWFnZS01OiBmYWxzZSwgJGltYWdlLTY6IGZhbHNlLCAkaW1hZ2UtNzogZmFsc2UsICRpbWFnZS04OiBmYWxzZSwgJGltYWdlLTk6IGZhbHNlLCAkaW1hZ2UtMTA6IGZhbHNlKSB7XG4gICRpbWFnZXM6IGNvbXBhY3QoJGltYWdlLTEsICRpbWFnZS0yLCAkaW1hZ2UtMywgJGltYWdlLTQsICRpbWFnZS01LCAkaW1hZ2UtNiwgJGltYWdlLTcsICRpbWFnZS04LCAkaW1hZ2UtOSwgJGltYWdlLTEwKTtcbiAgJGFkZC1waWUtYmc6IHByZWZpeGVkKC1waWUsICRpbWFnZXMpIG9yIC1jb21wYXNzLWxpc3Qtc2l6ZSgkaW1hZ2VzKSA+IDE7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1zdmcoJGltYWdlcyk7XG4gICAgYmFja2dyb3VuZC1zaXplOiAxMDAlOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vd2coJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2VzKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdCgkaW1hZ2VzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCBwcmVmaXhlZCgtbW96LCAkaW1hZ2VzKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLW1veigkaW1hZ2VzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbygkaW1hZ2VzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgYW5kICRhZGQtcGllLWJnIHtcbiAgICBAd2FybiBcIlBJRSBkb2VzIG5vdCBzdXBwb3J0IGJhY2tncm91bmQtaW1hZ2UuIFVzZSBAaW5jbHVkZSBiYWNrZ3JvdW5kKCN7JGltYWdlc30pIGluc3RlYWQuXCI7IH1cbiAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlczsgfVxuXG4vLyBFbWl0IGEgSUUtU3BlY2lmaWMgZmlsdGVycyB0aGF0IHJlbmRlcnMgYSBzaW1wbGUgbGluZWFyIGdyYWRpZW50LlxuLy8gRm9yIHVzZSBpbiBJRSA2IC0gOC4gQmVzdCBwcmFjdGljZSB3b3VsZCBoYXZlIHlvdSBhcHBseSB0aGlzIHZpYSBhXG4vLyBjb25kaXRpb25hbCBJRSBzdHlsZXNoZWV0LCBidXQgaWYgeW91IG11c3QsIHlvdSBzaG91bGQgcGxhY2UgdGhpcyBiZWZvcmVcbi8vIGFueSBiYWNrZ3JvdW5kLWltYWdlIHByb3BlcnRpZXMgdGhhdCB5b3UgaGF2ZSBzcGVjaWZpZWQuXG4vL1xuLy8gRm9yIHRoZSBgJG9yaWVudGF0aW9uYCBwYXJhbWV0ZXIsIHlvdSBjYW4gcGFzcyBgdmVydGljYWxgIG9yIGBob3Jpem9udGFsYC5cbkBtaXhpbiBmaWx0ZXItZ3JhZGllbnQoJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yLCAkb3JpZW50YXRpb246IHZlcnRpY2FsKSB7XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG4gICRncmFkaWVudC10eXBlOiBpZigkb3JpZW50YXRpb24gPT0gdmVydGljYWwsIDAsIDEpO1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGdyYWRpZW50VHlwZT0jeyRncmFkaWVudC10eXBlfSwgc3RhcnRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRzdGFydC1jb2xvcil9JywgZW5kQ29sb3JzdHI9JyN7aWUtaGV4LXN0cigkZW5kLWNvbG9yKX0nKTsgfSB9XG5cbi8vIEJvcmRlciBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHByb3BlcnRpZXMgYW5kIHZhbHVlcy5cbkBtaXhpbiBib3JkZXItaW1hZ2UoJHZhbHVlKSB7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otYm9yZGVyLWltYWdlOiAtbW96KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMge1xuICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiAtb3dnKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiAtd2Via2l0KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tYm9yZGVyLWltYWdlOiAtbyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIHtcbiAgICBib3JkZXItaW1hZ2U6IC1zdmcocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIGJvcmRlci1pbWFnZTogJHZhbHVlOyB9XG5cbi8vIExpc3Qgc3R5bGUgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGxpc3Qtc3R5bGUtaW1hZ2UoJGltYWdlKSB7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICRpbWFnZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1tb3ooJGltYWdlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICRpbWFnZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1vd2coJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgYW5kIHByZWZpeGVkKC13ZWJraXQsICRpbWFnZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICRpbWFnZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1vKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIGFuZCBwcmVmaXhlZCgtc3ZnLCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtc3ZnKCRpbWFnZSk7IH1cbiAgbGlzdC1zdHlsZS1pbWFnZTogJGltYWdlOyB9XG5cbi8vIExpc3Qgc3R5bGUgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGxpc3Qtc3R5bGUoJHZhbHVlKSB7XG4gICR2YWx1ZTogLWNvbXBhc3MtbGlzdCgkdmFsdWUpO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCBwcmVmaXhlZCgtbW96LCAkdmFsdWUpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtbW96KCR2YWx1ZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAkdmFsdWUpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtd2Via2l0KCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkdmFsdWUpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtbygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLXN2ZygkdmFsdWUpOyB9XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6ICR2YWx1ZTsgfVxuXG4vLyBjb250ZW50IHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBjb250ZW50KCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJHZhbHVlKSB7XG4gICAgY29udGVudDogLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJHZhbHVlKSB7XG4gICAgY29udGVudDogLW93ZygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJHZhbHVlKSB7XG4gICAgY29udGVudDogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIGFuZCBwcmVmaXhlZCgtbywgJHZhbHVlKSB7XG4gICAgY29udGVudDogLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1zdmcoJHZhbHVlKTsgfVxuICBjb250ZW50OiAkdmFsdWU7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfVxuICAgIEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTsgfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwiZnVuY3Rpb25zL2xpc3RzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnN0YW50c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9kaXNwbGF5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbG9yc1wiO1xuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBsaXN0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvbGlzdHMucmJcbi8vXG5cbi8vIGNvbXBhY3QgaXMgcGFydCBvZiBsaWJzYXNzXG5cbkBmdW5jdGlvbiAtY29tcGFzcy1udGgoJGxpc3QsICRwbGFjZSkge1xuICAvLyBZZXAsIFNhc3MtbGlzdHMgYXJlIDEtaW5kZXhlZC5cbiAgQGlmICRwbGFjZSA9PSBcImZpcnN0XCIge1xuICAgICRwbGFjZTogMTsgfVxuICBAaWYgJHBsYWNlID09IFwibGFzdFwiIHtcbiAgICAkcGxhY2U6IGxlbmd0aCgkbGlzdCk7IH1cbiAgQHJldHVybiBudGgoJGxpc3QsICRwbGFjZSk7IH1cblxuLy8gY29tcGFzc19saXN0IGNhbid0IGJlIGltcGxlbWVudGVkIGluIHNhc3Mgc2NyaXB0XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zcGFjZS1saXN0KCRpdGVtMSwgJGl0ZW0yOiBudWxsLCAkaXRlbTM6IG51bGwsICRpdGVtNDogbnVsbCwgJGl0ZW01OiBudWxsLCAkaXRlbTY6IG51bGwsICRpdGVtNzogbnVsbCwgJGl0ZW04OiBudWxsLCAkaXRlbTk6IG51bGwpIHtcbiAgLy8gU3VwcG9ydCBmb3IgcG9seW1vcnBoaXNtLlxuICBAaWYgdHlwZS1vZigkaXRlbTEpID09IFwibGlzdFwiIHtcbiAgICAvLyBQYXNzaW5nIGEgc2luZ2xlIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gICAgJGl0ZW1zOiAkaXRlbTE7IH1cbiAgQGVsc2Uge1xuICAgICRpdGVtczogJGl0ZW0xICRpdGVtMiAkaXRlbTMgJGl0ZW00ICRpdGVtNSAkaXRlbTYgJGl0ZW03ICRpdGVtOCAkaXRlbTk7IH1cbiAgJGZ1bGw6IGZpcnN0LXZhbHVlLW9mKCRpdGVtcyk7XG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRpdGVtcykge1xuICAgICRpdGVtOiBudGgoJGl0ZW1zLCAkaSk7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsICRpdGVtOyB9IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbGlzdC1zaXplKCRsaXN0KSB7XG4gIEByZXR1cm4gbGVuZ3RoKCRsaXN0KTsgfVxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc2xpY2UoJGxpc3QsICRzdGFydCwgJGVuZDogZmFsc2UpIHtcbiAgQGlmICRlbmQgPT0gZmFsc2Uge1xuICAgICRlbmQ6IGxlbmd0aCgkbGlzdCk7IH1cbiAgJGZ1bGw6IG50aCgkbGlzdCwgJHN0YXJ0KTtcbiAgQGZvciAkaSBmcm9tICRzdGFydCArIDEgdGhyb3VnaCAkZW5kIHtcbiAgICAkZnVsbDogJGZ1bGwsIG50aCgkbGlzdCwgJGkpOyB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIHJlamVjdCgkbGlzdCwgJHJlamVjdDEsICRyZWplY3QyOiBudWxsLCAkcmVqZWN0MzogbnVsbCwgJHJlamVjdDQ6IG51bGwsICRyZWplY3Q1OiBudWxsLCAkcmVqZWN0NjogbnVsbCwgJHJlamVjdDc6IG51bGwsICRyZWplY3Q4OiBudWxsLCAkcmVqZWN0OTogbnVsbCkge1xuICAkcmVqZWN0czogJHJlamVjdDEsICRyZWplY3QyLCAkcmVqZWN0MywgJHJlamVjdDQsICRyZWplY3Q1LCAkcmVqZWN0NiwgJHJlamVjdDcsICRyZWplY3Q4LCAkcmVqZWN0OTtcbiAgJGZ1bGw6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgQGlmIGluZGV4KCRyZWplY3RzLCAkaXRlbSkge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJGZ1bGwge1xuICAgICAgICAkZnVsbDogJGZ1bGwsICRpdGVtOyB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmdWxsOiAkaXRlbTsgfSB9IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuXG5AZnVuY3Rpb24gZmlyc3QtdmFsdWUtb2YoJGxpc3QpIHtcbiAgQHJldHVybiBudGgoJGxpc3QsIDEpOyB9XG5cbi8vQGlmIG5vdCBmdW5jdGlvbi1leGlzdHMoY29tcGFjdClcbkBmdW5jdGlvbiBjb21wYWN0KCR2YXJzLi4uKSB7XG4gICRsaXN0OiAoKTtcbiAgQGVhY2ggJHZhciBpbiAkdmFycyB7XG4gICAgQGlmICR2YXIge1xuICAgICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJHZhciwgY29tbWEpOyB9IH1cbiAgQHJldHVybiAkbGlzdDsgfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjcm9zcyBicm93c2VyIHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnQucmJcbi8vXG5cbkBmdW5jdGlvbiBwcmVmaXhlZCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5O1xuICAkcHJlZml4ZWQ6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IFwic3RyaW5nXCIge1xuICAgICAgJHByZWZpeGVkOiAkcHJlZml4ZWQgb3Igc3RyLWluZGV4KCRpdGVtLCBcInVybFwiKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sIFwicmdiXCIpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgXCIjXCIpICE9IDE7IH1cbiAgICBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBcImNvbG9yXCIge31cbiAgICBAZWxzZSBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRwcmVmaXhlZDogdHJ1ZTsgfSB9XG4gIEByZXR1cm4gJHByZWZpeGVkOyB9XG5cbkBmdW5jdGlvbiBwcmVmaXgoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICAkcHJvcGVydGllczogXCJcIjtcbiAgLy8gU3VwcG9ydCBmb3IgcG9seW1vcnBoaXNtLlxuICBAaWYgdHlwZS1vZigkcHJvcGVydHkxKSA9PSBcImxpc3RcIiB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxOyB9XG4gIEBlbHNlIHtcbiAgICAvLyBQYXNzaW5nIG11bHRpcGxlIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7IH1cbiAgJHByb3BzOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiAkaXRlbSA9PSBudWxsIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHByZWZpeGVkKCRwcmVmaXgsICRpdGVtKSB7XG4gICAgICAgICRpdGVtOiAjeyRwcmVmaXh9LSN7JGl0ZW19OyB9XG4gICAgICBAaWYgJHByb3BzIHtcbiAgICAgICAgJHByb3BzOiAkcHJvcHMsICRpdGVtOyB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwcm9wczogJGl0ZW07IH0gfSB9XG4gIEByZXR1cm4gJHByb3BzOyB9XG5cbkBmdW5jdGlvbiAtc3ZnKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItc3ZnXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtb3dnKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItb3dnXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtd2Via2l0KCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItd2Via2l0XCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtbW96KCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItbW96XCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtbygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW9cIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC1waWUoJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1waWVcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZ3JhZGllbnQgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3YwLjEyLjIvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0LnJiXG4vL1xuXG5AZnVuY3Rpb24gY29sb3Itc3RvcHMoJGl0ZW0xLCAkaXRlbTI6IG51bGwsICRpdGVtMzogbnVsbCwgJGl0ZW00OiBudWxsLCAkaXRlbTU6IG51bGwsICRpdGVtNjogbnVsbCwgJGl0ZW03OiBudWxsLCAkaXRlbTg6IG51bGwsICRpdGVtOTogbnVsbCkge1xuICAkaXRlbXM6ICRpdGVtMiwgJGl0ZW0zLCAkaXRlbTQsICRpdGVtNSwgJGl0ZW02LCAkaXRlbTcsICRpdGVtOCwgJGl0ZW05O1xuICAkZnVsbDogJGl0ZW0xO1xuICBAZWFjaCAkaXRlbSBpbiAkaXRlbXMge1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCwgJGl0ZW07IH0gfVxuICBAcmV0dXJuICRmdWxsOyB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbnN0YW50cyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbnN0YW50cy5yYlxuLy9cblxuQGZ1bmN0aW9uIG9wcG9zaXRlLXBvc2l0aW9uKCRmcm9tKSB7XG4gIEBpZiAkZnJvbSA9PSB0b3Age1xuICAgIEByZXR1cm4gYm90dG9tOyB9XG4gIEBlbHNlIGlmICRmcm9tID09IGJvdHRvbSB7XG4gICAgQHJldHVybiB0b3A7IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gbGVmdCB7XG4gICAgQHJldHVybiByaWdodDsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSByaWdodCB7XG4gICAgQHJldHVybiBsZWZ0OyB9XG4gIEBlbHNlIGlmICRmcm9tID09IGNlbnRlciB7XG4gICAgQHJldHVybiBjZW50ZXI7IH0gfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBkaXNwbGF5IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Rpc3BsYXkucmJcbi8vXG5cbkBmdW5jdGlvbiBlbGVtZW50cy1vZi10eXBlKCR0eXBlKSB7XG4gIEBpZiAkdHlwZSA9PSBibG9jayB7XG4gICAgQHJldHVybiBhZGRyZXNzLCBhcnRpY2xlLCBhc2lkZSwgYmxvY2txdW90ZSwgY2VudGVyLCBkaXIsIGRpdiwgZGQsIGRldGFpbHMsIGRsLCBkdCwgZmllbGRzZXQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9ybSwgZm9vdGVyLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaHIsIGhlYWRlciwgaGdyb3VwLCBpc2luZGV4LCBtYWluLCBtZW51LCBuYXYsIG5vZnJhbWVzLCBub3NjcmlwdCwgb2wsIHAsIHByZSwgc2VjdGlvbiwgc3VtbWFyeSwgdWw7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaW5saW5lIHtcbiAgICBAcmV0dXJuIGEsIGFiYnIsIGFjcm9ueW0sIGF1ZGlvLCBiLCBiYXNlZm9udCwgYmRvLCBiaWcsIGJyLCBjYW52YXMsIGNpdGUsIGNvZGUsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZm4sIGVtLCBlbWJlZCwgZm9udCwgaSwgaW1nLCBpbnB1dCwga2V5Z2VuLCBrYmQsIGxhYmVsLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcSwgcnAsIHJ0LCBydWJ5LCBzLCBzYW1wLCBzZWxlY3QsIHNtYWxsLCBzcGFuLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHRleHRhcmVhLCB0aW1lLCB0dCwgdSwgdmFyLCB2aWRlbywgd2JyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGlubGluZS1ibG9jayB7XG4gICAgQHJldHVybiBpbWc7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUge1xuICAgIEByZXR1cm4gdGFibGU7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gbGlzdC1pdGVtIHtcbiAgICBAcmV0dXJuIGxpOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLXJvdy1ncm91cCB7XG4gICAgQHJldHVybiB0Ym9keTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1oZWFkZXItZ3JvdXAge1xuICAgIEByZXR1cm4gdGhlYWQ7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtZm9vdGVyLWdyb3VwIHtcbiAgICBAcmV0dXJuIHRmb290OyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLXJvdyB7XG4gICAgQHJldHVybiB0cjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1jZWxsIHtcbiAgICBAcmV0dXJuIHRoLCB0ZDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBodG1sNS1ibG9jayB7XG4gICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtYWluLCBtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnk7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaHRtbDUtaW5saW5lIHtcbiAgICBAcmV0dXJuIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBlbWJlZCwga2V5Z2VuLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCB0aW1lLCB2aWRlbywgd2JyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGh0bWw1IHtcbiAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZGV0YWlscywgZW1iZWQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwga2V5Z2VuLCBtYWluLCBtYXJrLCBtZW51LCBtZXRlciwgbmF2LCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIHZpZGVvLCB3YnI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGV4dC1pbnB1dCB7XG4gICAgQHJldHVybiBpbnB1dCwgdGV4dGFyZWE7IH0gfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb2xvcnMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29sb3JzLnJiXG4vL1xuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2YgbGlnaHRlbi9kYXJrZW4gc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LWxpZ2h0bmVzcygkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTsgfVxuXG4vLyBTY2FsZXMgYSBjb2xvcidzIGxpZ2h0bmVzcyBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgc2NhbGVkIGRhcmtlciwgaWYgcG9zaXRpdmUsIGl0IGlzIHNjYWxlZCBsaWdodGVyLlxuLy8gVGhpcyB3aWxsIG5ldmVyIHJldHVybiBhIHB1cmUgbGlnaHQgb3IgZGFyayBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLWxpZ2h0bmVzcygkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRhbW91bnQpOyB9XG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBzYXR1cmF0ZS9kZXNhdHVyYXRlIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIGFkanVzdC1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTsgfVxuXG4vLyBTY2FsZXMgYSBjb2xvcidzIHNhdHVyYXRpb24gYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIGRlc2F0dXJhdGVkLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2F0dXJhdGVkLlxuLy8gVGhpcyB3aWxsIG5ldmVyIHJldHVybiBhIHB1cmUgc2F0dXJhdGVkIG9yIGRlc2F0dXJhdGVkIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTsgfVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCgjMDAwMDAwLCAkY29sb3IsICRwZXJjZW50YWdlKTsgfVxuXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KCNmZmZmZmYsICRjb2xvciwgJHBlcmNlbnRhZ2UpOyB9XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBwYWRkaW5nLWJveGAgLS0gdGhlIGJveCBtb2RlbCB1c2VkIGJ5IG1vZGVybiBicm93c2Vycy5cbi8vXG4vLyBJZiB5b3Ugd2lzaCB0byBkbyBzbywgeW91IGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdCBjb25zdGFudCB3aXRoIGBib3JkZXItYm94YFxuLy9cbi8vIFRvIG92ZXJyaWRlIHRvIHRoZSBkZWZhdWx0IGJvcmRlci1ib3ggbW9kZWwsIHVzZSB0aGlzIGNvZGU6XG4vLyAgICAgJGRlZmF1bHQtYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94XG5cbiRkZWZhdWx0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3ggIWRlZmF1bHQ7XG5cbi8vIENsaXAgdGhlIGJhY2tncm91bmQgKGltYWdlIGFuZCBjb2xvcikgYXQgdGhlIGVkZ2Ugb2YgdGhlIHBhZGRpbmcgb3IgYm9yZGVyLlxuLy9cbi8vIExlZ2FsIFZhbHVlczpcbi8vXG4vLyAgICogcGFkZGluZy1ib3hcbi8vICAgKiBib3JkZXItYm94XG4vLyAgICogdGV4dFxuXG5AbWl4aW4gYmFja2dyb3VuZC1jbGlwKCRjbGlwOiAkZGVmYXVsdC1iYWNrZ3JvdW5kLWNsaXApIHtcbiAgLy8gd2Via2l0IGFuZCBtb3ppbGxhIHVzZSB0aGUgZGVwcmVjYXRlZCBzaG9ydCBbYm9yZGVyIHwgcGFkZGluZ11cbiAgJGNsaXA6IHVucXVvdGUoJGNsaXApO1xuICAkZGVwcmVjYXRlZDogJGNsaXA7XG4gIEBpZiAkY2xpcCA9PSBwYWRkaW5nLWJveCB7XG4gICAgJGRlcHJlY2F0ZWQ6IHBhZGRpbmc7IH1cbiAgQGlmICRjbGlwID09IGJvcmRlci1ib3gge1xuICAgICRkZXByZWNhdGVkOiBib3JkZXI7IH1cbiAgLy8gU3VwcG9ydCBmb3Igd2Via2l0IGFuZCBtb3ppbGxhJ3MgdXNlIG9mIHRoZSBkZXByZWNhdGVkIHNob3J0IGZvcm1cbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtY2xpcCwgJGRlcHJlY2F0ZWQsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgbm90IG9mZmljaWFsKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtY2xpcCwgJGNsaXAsIG5vdCAtbW96LCBub3QgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCAta2h0bWwsIG9mZmljaWFsKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gT3ZlcnJpZGUgYCRkZWZhdWx0LWJhY2tncm91bmQtb3JpZ2luYCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQuXG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuJGRlZmF1bHQtYmFja2dyb3VuZC1vcmlnaW46IGNvbnRlbnQtYm94ICFkZWZhdWx0O1xuXG4vLyBQb3NpdGlvbiB0aGUgYmFja2dyb3VuZCBvZmYgdGhlIGVkZ2Ugb2YgdGhlIHBhZGRpbmcsIGJvcmRlciBvciBjb250ZW50XG4vL1xuLy8gKiBQb3NzaWJsZSB2YWx1ZXM6XG4vLyAgICogYHBhZGRpbmctYm94YFxuLy8gICAqIGBib3JkZXItYm94YFxuLy8gICAqIGBjb250ZW50LWJveGBcbi8vICogYnJvd3NlciBkZWZhdWx0cyB0byBgcGFkZGluZy1ib3hgXG4vLyAqIG1peGluIGRlZmF1bHRzIHRvIGBjb250ZW50LWJveGBcblxuQG1peGluIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW46ICRkZWZhdWx0LWJhY2tncm91bmQtb3JpZ2luKSB7XG4gICRvcmlnaW46IHVucXVvdGUoJG9yaWdpbik7XG4gIC8vIHdlYmtpdCBhbmQgbW96aWxsYSB1c2UgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgW2JvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50XVxuICAkZGVwcmVjYXRlZDogJG9yaWdpbjtcbiAgQGlmICRvcmlnaW4gPT0gcGFkZGluZy1ib3gge1xuICAgICRkZXByZWNhdGVkOiBwYWRkaW5nOyB9XG4gIEBpZiAkb3JpZ2luID09IGJvcmRlci1ib3gge1xuICAgICRkZXByZWNhdGVkOiBib3JkZXI7IH1cbiAgQGlmICRvcmlnaW4gPT0gY29udGVudC1ib3gge1xuICAgICRkZXByZWNhdGVkOiBjb250ZW50OyB9XG4gIC8vIFN1cHBvcnQgZm9yIHdlYmtpdCBhbmQgbW96aWxsYSdzIHVzZSBvZiB0aGUgZGVwcmVjYXRlZCBzaG9ydCBmb3JtXG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLW9yaWdpbiwgJGRlcHJlY2F0ZWQsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgbm90IG9mZmljaWFsKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtb3JpZ2luLCAkb3JpZ2luLCBub3QgLW1veiwgbm90IC13ZWJraXQsIC1vLCAtbXMsIC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vICBvdmVycmlkZSB0byBjaGFuZ2UgdGhlIGRlZmF1bHRcbiRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHNpemUgb2YgYmFja2dyb3VuZCBpbWFnZXMgdXNpbmcgcHgsIHdpZHRoIGFuZCBoZWlnaHQsIG9yIHBlcmNlbnRhZ2VzLlxuLy8gQ3VycmVudGx5IHN1cHBvcnRlZCBpbjogT3BlcmEsIEdlY2tvLCBXZWJraXQuXG4vL1xuLy8gKiBwZXJjZW50YWdlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJhY2tncm91bmQtb3JpZ2luIChkZWZhdWx0ID0gcGFkZGluZy1ib3gpXG4vLyAqIG1peGluIGRlZmF1bHRzIHRvOiBgJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplYFxuQG1peGluIGJhY2tncm91bmQtc2l6ZSgkc2l6ZS0xOiAkZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemUsICRzaXplLTI6IGZhbHNlLCAkc2l6ZS0zOiBmYWxzZSwgJHNpemUtNDogZmFsc2UsICRzaXplLTU6IGZhbHNlLCAkc2l6ZS02OiBmYWxzZSwgJHNpemUtNzogZmFsc2UsICRzaXplLTg6IGZhbHNlLCAkc2l6ZS05OiBmYWxzZSwgJHNpemUtMTA6IGZhbHNlKSB7XG4gICRzaXplLTE6IGlmKHR5cGUtb2YoJHNpemUtMSkgPT0gc3RyaW5nLCB1bnF1b3RlKCRzaXplLTEpLCAkc2l6ZS0xKTtcbiAgJHNpemVzOiBjb21wYWN0KCRzaXplLTEsICRzaXplLTIsICRzaXplLTMsICRzaXplLTQsICRzaXplLTUsICRzaXplLTYsICRzaXplLTcsICRzaXplLTgsICRzaXplLTksICRzaXplLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtc2l6ZSwgJHNpemVzLCAtbW96LCAtd2Via2l0LCAtbywgbm90IC1tcywgbm90IC1raHRtbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ3Jvc3MtYnJvd3NlciBzdXBwb3J0IGZvciBAZm9udC1mYWNlLiBTdXBwb3J0cyBJRSwgR2Vja28sIFdlYmtpdCwgT3BlcmEuXG4vL1xuLy8gKiAkbmFtZSBpcyByZXF1aXJlZCwgYXJiaXRyYXJ5LCBhbmQgd2hhdCB5b3Ugd2lsbCB1c2UgaW4gZm9udCBzdGFja3MuXG4vLyAqICRmb250LWZpbGVzIGlzIHJlcXVpcmVkIHVzaW5nIGZvbnQtZmlsZXMoJ3JlbGF0aXZlL2xvY2F0aW9uJywgJ2Zvcm1hdCcpLlxuLy8gICBmb3IgYmVzdCByZXN1bHRzIHVzZSB0aGlzIG9yZGVyOiB3b2ZmLCBvcGVudHlwZS90cnVldHlwZSwgc3ZnXG4vLyAqICRlb3QgaXMgcmVxdWlyZWQgYnkgSUUsIGFuZCBpcyBhIHJlbGF0aXZlIGxvY2F0aW9uIG9mIHRoZSBlb3QgZmlsZS5cbi8vICogJHdlaWdodCBzaG93cyBpZiB0aGUgZm9udCBpcyBib2xkLCBkZWZhdWx0cyB0byBub3JtYWxcbi8vICogJHN0eWxlIGRlZmF1bHRzIHRvIG5vcm1hbCwgbWlnaHQgYmUgYWxzbyBpdGFsaWNcbi8vICogRm9yIGFuZHJvaWQgMi4yIENvbXBhdGlibGl0eSwgcGxlYXNlIGVuc3VyZSB0aGF0IHlvdXIgd2ViIHBhZ2UgaGFzXG4vLyAgIGEgbWV0YSB2aWV3cG9ydCB0YWcuXG4vLyAqIFRvIHN1cHBvcnQgaU9TIDwgNC4yLCBhbiBTVkcgZmlsZSBtdXN0IGJlIHByb3ZpZGVkXG4vL1xuLy8gSWYgeW91IG5lZWQgdG8gZ2VuZXJhdGUgb3RoZXIgZm9ybWF0cyBjaGVjayBvdXQgdGhlIEZvbnQgU3F1aXJyZWxcbi8vIFtmb250IGdlbmVyYXRvcl0oaHR0cDovL3d3dy5mb250c3F1aXJyZWwuY29tL2ZvbnRmYWNlL2dlbmVyYXRvcilcbi8vXG5cbi8vIEluIG9yZGVyIHRvIHJlZmVyIHRvIGEgc3BlY2lmaWMgc3R5bGUgb2YgdGhlIGZvbnQgaW4geW91ciBzdHlsZXNoZWV0cyBhc1xuLy8gZS5nLiBcImZvbnQtc3R5bGU6IGl0YWxpYztcIiwgIHlvdSBtYXkgYWRkIGEgY291cGxlIG9mIEBmb250LWZhY2UgaW5jbHVkZXNcbi8vIGNvbnRhaW5pbmcgdGhlIHJlc3BlY3RpdmUgZm9udCBmaWxlcyBmb3IgZWFjaCBzdHlsZSBhbmQgc3BlY3lpbmdcbi8vIHJlc3BlY3RpdmUgdGhlICRzdHlsZSBwYXJhbWV0ZXIuXG5cbi8vIE9yZGVyIG9mIHRoZSBpbmNsdWRlcyBtYXR0ZXJzLCBhbmQgaXQgaXM6IG5vcm1hbCwgYm9sZCwgaXRhbGljLCBib2xkK2l0YWxpYy5cblxuQG1peGluIGZvbnQtZmFjZSgkbmFtZSwgJGZvbnQtZmlsZXMsICRlb3Q6IGZhbHNlLCAkd2VpZ2h0OiBmYWxzZSwgJHN0eWxlOiBmYWxzZSkge1xuICAkaWVmb250OiB1bnF1b3RlKFwiI3skZW90fT8jaWVmaXhcIik7XG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiBxdW90ZSgkbmFtZSk7XG4gICAgQGlmICRlb3Qge1xuICAgICAgc3JjOiBmb250LXVybCgkZW90KTtcbiAgICAgICRmb250LWZpbGVzOiBmb250LXVybCgkaWVmb250KSB1bnF1b3RlKFwiZm9ybWF0KCdlb3QnKVwiKSwgJGZvbnQtZmlsZXM7IH1cbiAgICBzcmM6ICRmb250LWZpbGVzO1xuICAgIEBpZiAkd2VpZ2h0IHtcbiAgICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0OyB9XG4gICAgQGlmICRzdHlsZSB7XG4gICAgICBmb250LXN0eWxlOiAkc3R5bGU7IH0gfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIEBkb2Mgb2ZmXG4vLyBOb3RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNhZmFyaSwgQ2hyb21lLCBhbmQgRmlyZWZveCBhbGwgc3VwcG9ydCAzRCB0cmFuc2Zvcm1zLiBIb3dldmVyLFxuLy8gb25seSBpbiB0aGUgbW9zdCByZWNlbnQgYnVpbGRzLiBZb3Ugc2hvdWxkIGFsc28gcHJvdmlkZSBmYWxsYmFjayAyZCBzdXBwb3J0IGZvclxuLy8gT3BlcmEgYW5kIElFLiBJRTEwIGlzIHNsYXRlZCB0byBoYXZlIDNkIGVuYWJsZWQsIGJ1dCBpcyBjdXJyZW50bHkgdW5yZWxlYXNlZC5cbi8vIFRvIG1ha2UgdGhhdCBlYXN5LCBhbGwgMkQgdHJhbnNmb3JtcyBpbmNsdWRlIGFuIGJyb3dzZXItdGFyZ2V0aW5nIHRvZ2dsZSAoJG9ubHkzZClcbi8vIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZSB0d28gc3VwcG9ydCBsaXN0cy4gVGhlIHRvZ2dsZSBkZWZhdWx0cyB0byAnZmFsc2UnICgyRCksXG4vLyBhbmQgYWxzbyBhY2NlcHRzICd0cnVlJyAoM0QpLiBDdXJyZW50bHkgdGhlIGxpc3RzIGFyZSBhcyBmb2xsb3dzOlxuLy8gMkQ6IE1vemlsbGEsIFdlYmtpdCwgT3BlcmEsIE9mZmljaWFsXG4vLyAzRDogV2Via2l0LCBGaXJlZm94LlxuXG4vLyBBdmFpbGFibGUgVHJhbnNmb3JtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gU2NhbGUgKDJkIGFuZCAzZClcbi8vIC0gUm90YXRlICgyZCBhbmQgM2QpXG4vLyAtIFRyYW5zbGF0ZSAoMmQgYW5kIDNkKVxuLy8gLSBTa2V3ICgyZCBvbmx5KVxuXG4vLyBUcmFuc2Zvcm0gUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gVHJhbnNmb3JtIE9yaWdpbiAoMmQgYW5kIDNkKVxuLy8gLSBQZXJzcGVjdGl2ZSAoM2QpXG4vLyAtIFBlcnNwZWN0aXZlIE9yaWdpbiAoM2QpXG4vLyAtIFRyYW5zZm9ybSBTdHlsZSAoM2QpXG4vLyAtIEJhY2tmYWNlIFZpc2liaWxpdHkgKDNkKVxuXG4vLyBNaXhpbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHRyYW5zZm9ybS1vcmlnaW5cbi8vICAtIHNob3J0Y3V0czogIHRyYW5zZm9ybS1vcmlnaW4yZCwgdHJhbnNmb3JtLW9yaWdpbjNkXG4vLyAgLSBoZWxwZXJzOiAgICBhcHBseS1vcmlnaW5cbi8vIHRyYW5zZm9ybVxuLy8gIC0gc2hvcnRjdXRzOiAgdHJhbnNmb3JtMmQsIHRyYW5zZm9ybTNkXG4vLyAgLSBoZWxwZXJzOiAgICBzaW1wbGUtdHJhbnNmb3JtLCBjcmVhdGUtdHJhbnNmb3JtXG4vLyBwZXJzcGVjdGl2ZVxuLy8gIC0gaGVscGVyczogICAgcGVyc3BlY3RpdmUtb3JpZ2luXG4vLyB0cmFuc2Zvcm0tc3R5bGVcbi8vIGJhY2tmYWNlLXZpc2liaWxpdHlcbi8vIHNjYWxlXG4vLyAgLSBzaG9ydGN1dHM6ICBzY2FsZVgsIHNjYWxlWSwgc2NhbGVaLCBzY2FsZTNkXG4vLyByb3RhdGVcbi8vICAtIHNob3J0Y3V0czogIHJvdGF0ZVgsIHJvdGF0ZVksIHJvdGF0ZTNkXG4vLyB0cmFuc2xhdGVcbi8vICAtIHNob3J0Y3V0czogIHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVksIHRyYW5zbGF0ZVosIHRyYW5zbGF0ZTNkXG4vLyBza2V3XG4vLyAgLSBzaG9ydGN1dHM6ICBza2V3WCwgc2tld1lcblxuLy8gRGVmYXVsdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFRoZSBkZWZhdWx0IHgtb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4teDogNTAlICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB5LW9yaWdpbiBmb3IgdHJhbnNmb3Jtc1xuJGRlZmF1bHQtb3JpZ2luLXk6IDUwJSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgei1vcmlnaW4gZm9yIHRyYW5zZm9ybXNcbiRkZWZhdWx0LW9yaWdpbi16OiA1MCUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHgtbXVsdGlwbGllciBmb3Igc2NhbGluZ1xuJGRlZmF1bHQtc2NhbGUteDogMS4yNSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgeS1tdWx0aXBsaWVyIGZvciBzY2FsaW5nXG4kZGVmYXVsdC1zY2FsZS15OiAkZGVmYXVsdC1zY2FsZS14ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB6LW11bHRpcGxpZXIgZm9yIHNjYWxpbmdcbiRkZWZhdWx0LXNjYWxlLXo6ICRkZWZhdWx0LXNjYWxlLXggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGFuZ2xlIGZvciByb3RhdGlvbnNcbiRkZWZhdWx0LXJvdGF0ZTogNDVkZWcgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHgtdmVjdG9yIGZvciB0aGUgYXhpcyBvZiAzZCByb3RhdGlvbnNcbiRkZWZhdWx0LXZlY3Rvci14OiAxICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB5LXZlY3RvciBmb3IgdGhlIGF4aXMgb2YgM2Qgcm90YXRpb25zXG4kZGVmYXVsdC12ZWN0b3IteTogMSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgei12ZWN0b3IgZm9yIHRoZSBheGlzIG9mIDNkIHJvdGF0aW9uc1xuJGRlZmF1bHQtdmVjdG9yLXo6IDEgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHgtbGVuZ3RoIGZvciB0cmFuc2xhdGlvbnNcbiRkZWZhdWx0LXRyYW5zbGF0ZS14OiAxZW0gIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHktbGVuZ3RoIGZvciB0cmFuc2xhdGlvbnNcbiRkZWZhdWx0LXRyYW5zbGF0ZS15OiAkZGVmYXVsdC10cmFuc2xhdGUteCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgei1sZW5ndGggZm9yIHRyYW5zbGF0aW9uc1xuJGRlZmF1bHQtdHJhbnNsYXRlLXo6ICRkZWZhdWx0LXRyYW5zbGF0ZS14ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB4LWFuZ2xlIGZvciBza2V3aW5nXG4kZGVmYXVsdC1za2V3LXg6IDVkZWcgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHktYW5nbGUgZm9yIHNrZXdpbmdcbiRkZWZhdWx0LXNrZXcteTogNWRlZyAhZGVmYXVsdDtcblxuLy8gKipUcmFuc2Zvcm0tb3JpZ2luKipcbi8vIFRyYW5zZm9ybS1vcmlnaW4gc2VudCBhcyBhIGNvbXBsZXRlIHN0cmluZ1xuLy9cbi8vICAgICBAaW5jbHVkZSBhcHBseS1vcmlnaW4oIG9yaWdpbiBbLCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlICdvcmlnaW4nIGlzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3QgY29udGFpbmluZyAxLTMgKHgveS96KSBjb29yZGluYXRlc1xuLy8gaW4gcGVyY2VudGFnZXMsIGFic29sdXRlIChweCwgY20sIGluLCBlbSBldGMuLikgb3IgcmVsYXRpdmVcbi8vIChsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20sIGNlbnRlcikgdW5pdHNcbi8vXG4vLyBAcGFyYW0gb25seTNkIFNldCB0aGlzIHRvIHRydWUgdG8gb25seSBhcHBseSB0aGlzXG4vLyBtaXhpbiB3aGVyZSBicm93c2VycyBoYXZlIDNEIHN1cHBvcnQuXG5AbWl4aW4gYXBwbHktb3JpZ2luKCRvcmlnaW4sICRvbmx5M2QpIHtcbiAgJG9ubHkzZDogJG9ubHkzZCBvciAtY29tcGFzcy1saXN0LXNpemUoLWNvbXBhc3MtbGlzdCgkb3JpZ2luKSkgPiAyO1xuICBAaWYgJG9ubHkzZCB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybS1vcmlnaW4sICRvcmlnaW4sIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybS1vcmlnaW4sICRvcmlnaW4sIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfSB9XG5cbi8vIFRyYW5zZm9ybS1vcmlnaW4gc2VudCBhcyBpbmRpdmlkdWFsIGFyZ3VtZW50czpcbi8vXG4vLyAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbiggWyBvcmlnaW4teCwgb3JpZ2luLXksIG9yaWdpbi16LCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlIHRoZSAzICdvcmlnaW4tJyBhcmd1bWVudHMgcmVwcmVzZW50IHgveS96IGNvb3JkaW5hdGVzLlxuLy9cbi8vICoqTk9URToqKiBzZXR0aW5nIHogY29vcmRpbmF0ZXMgdHJpZ2dlcnMgM0Qgc3VwcG9ydCBsaXN0LCBsZWF2ZSBmYWxzZSBmb3IgMkQgc3VwcG9ydFxuQG1peGluIHRyYW5zZm9ybS1vcmlnaW4oJG9yaWdpbi14OiAkZGVmYXVsdC1vcmlnaW4teCwgJG9yaWdpbi15OiAkZGVmYXVsdC1vcmlnaW4teSwgJG9yaWdpbi16OiBmYWxzZSwgJG9ubHkzZDogaWYoJG9yaWdpbi16LCB0cnVlLCBmYWxzZSkpIHtcbiAgJG9yaWdpbjogdW5xdW90ZShcIlwiKTtcbiAgQGlmICRvcmlnaW4teCBvciAkb3JpZ2luLXkgb3IgJG9yaWdpbi16IHtcbiAgICBAaWYgJG9yaWdpbi14IHtcbiAgICAgICRvcmlnaW46ICRvcmlnaW4teDsgfVxuICAgIEBlbHNlIHtcbiAgICAgICRvcmlnaW46IDUwJTsgfVxuICAgIEBpZiAkb3JpZ2luLXkge1xuICAgICAgJG9yaWdpbjogJG9yaWdpbiAkb3JpZ2luLXk7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJG9yaWdpbi16IHtcbiAgICAgICAgJG9yaWdpbjogJG9yaWdpbiA1MCU7IH0gfVxuICAgIEBpZiAkb3JpZ2luLXoge1xuICAgICAgJG9yaWdpbjogJG9yaWdpbiAkb3JpZ2luLXo7IH1cbiAgICBAaW5jbHVkZSBhcHBseS1vcmlnaW4oJG9yaWdpbiwgJG9ubHkzZCk7IH0gfVxuXG4vLyBUcmFuc2Zvcm0gc2VudCBhcyBhIGNvbXBsZXRlIHN0cmluZzpcbi8vXG4vLyAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKCB0cmFuc2Zvcm1zIFssIDNELW9ubHkgXSApXG4vL1xuLy8gd2hlcmUgJ3RyYW5zZm9ybXMnIGlzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIHRoZSB0cmFuc2Zvcm1zIHRvIGJlIGFwcGxpZWQuXG5AbWl4aW4gdHJhbnNmb3JtKCR0cmFuc2Zvcm0sICRvbmx5M2Q6IGZhbHNlKSB7XG4gIEBpZiAkb25seTNkIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLCAkdHJhbnNmb3JtLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0sICR0cmFuc2Zvcm0sIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfSB9XG5cbi8vIFNob3J0Y3V0IHRvIHRhcmdldCBhbGwgYnJvd3NlcnMgd2l0aCAyRCB0cmFuc2Zvcm0gc3VwcG9ydFxuQG1peGluIHRyYW5zZm9ybTJkKCR0cmFucykge1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCBmYWxzZSk7IH1cblxuLy8gU2hvcnRjdXQgdG8gdGFyZ2V0IG9ubHkgYnJvd3NlcnMgd2l0aCAzRCB0cmFuc2Zvcm0gc3VwcG9ydFxuQG1peGluIHRyYW5zZm9ybTNkKCR0cmFucykge1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCB0cnVlKTsgfVxuXG4vLyBAZG9jIG9mZlxuLy8gM0QgUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFNldCB0aGUgcGVyc3BlY3RpdmUgb2YgM0QgdHJhbnNmb3JtcyBvbiB0aGUgY2hpbGRyZW4gb2YgYW4gZWxlbWVudDpcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCBwZXJzcGVjdGl2ZSApXG4vL1xuLy8gd2hlcmUgJ3BlcnNwZWN0aXZlJyBpcyBhIHVuaXRsZXNzIG51bWJlciByZXByZXNlbnRpbmcgdGhlIGRlcHRoIG9mIHRoZVxuLy8gei1heGlzLiBUaGUgaGlnaGVyIHRoZSBwZXJzcGVjdGl2ZSwgdGhlIG1vcmUgZXhhZ2dlcmF0ZWQgdGhlIGZvcmVzaG9ydGVuaW5nLlxuLy8gdmFsdWVzIGZyb20gNTAwIHRvIDEwMDAgYXJlIG1vcmUtb3ItbGVzcyBcIm5vcm1hbFwiIC0gYSBnb29kIHN0YXJ0aW5nLXBvaW50LlxuQG1peGluIHBlcnNwZWN0aXZlKCRwKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChwZXJzcGVjdGl2ZSwgJHAsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBTZXQgdGhlIG9yaWdpbiBwb3NpdGlvbiBmb3IgdGhlIHBlcnNwZWN0aXZlXG4vL1xuLy8gICAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZS1vcmlnaW4ob3JpZ2luLXggW29yaWdpbi15XSlcbi8vXG4vLyB3aGVyZSB0aGUgdHdvIGFyZ3VtZW50cyByZXByZXNlbnQgeC95IGNvb3JkaW5hdGVzXG5AbWl4aW4gcGVyc3BlY3RpdmUtb3JpZ2luKCRvcmlnaW46IDUwJSkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwocGVyc3BlY3RpdmUtb3JpZ2luLCAkb3JpZ2luLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gRGV0ZXJtaW5lIHdoZXRoZXIgYSAzRCBvYmplY3RzIGNoaWxkcmVuIGFsc28gbGl2ZSBpbiB0aGUgZ2l2ZW4gM0Qgc3BhY2Vcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZSggWyBzdHlsZSBdIClcbi8vXG4vLyB3aGVyZSBgc3R5bGVgIGNhbiBiZSBlaXRoZXIgYGZsYXRgIG9yIGBwcmVzZXJ2ZS0zZGAuXG4vLyBCcm93c2VycyBkZWZhdWx0IHRvIGBmbGF0YCwgbWl4aW4gZGVmYXVsdHMgdG8gYHByZXNlcnZlLTNkYC5cbkBtaXhpbiB0cmFuc2Zvcm0tc3R5bGUoJHN0eWxlOiBwcmVzZXJ2ZS0zZCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLXN0eWxlLCAkc3R5bGUsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBEZXRlcm1pbmUgdGhlIHZpc2liaWxpdHkgb2YgYW4gZWxlbWVudCB3aGVuIGl0J3MgYmFjayBpcyB0dXJuZWRcbi8vXG4vLyAgICAgQGluY2x1ZGUgYmFja2ZhY2UtdmlzaWJpbGl0eSggWyB2aXNpYmlsaXR5IF0gKVxuLy9cbi8vIHdoZXJlIGB2aXNpYmlsaXR5YCBjYW4gYmUgZWl0aGVyIGB2aXNpYmxlYCBvciBgaGlkZGVuYC5cbi8vIEJyb3dzZXJzIGRlZmF1bHQgdG8gdmlzaWJsZSwgbWl4aW4gZGVmYXVsdHMgdG8gaGlkZGVuXG5AbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmlzaWJpbGl0eTogaGlkZGVuKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZmFjZS12aXNpYmlsaXR5LCAkdmlzaWJpbGl0eSwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIEBkb2Mgb2ZmXG4vLyBUcmFuc2Zvcm0gUGFydGlhbHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoZXNlIHdvcmsgd2VsbCBvbiB0aGVpciBvd24sIGJ1dCB0aGV5IGRvbid0IGFkZCB0byBlYWNoIG90aGVyLCB0aGV5IG92ZXJyaWRlLlxuLy8gVXNlIGFsb25nIHdpdGggdHJhbnNmb3JtIHBhcmFtZXRlciBtaXhpbnMgdG8gYWRqdXN0IG9yaWdpbiwgcGVyc3BlY3RpdmUgYW5kIHN0eWxlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gU2NhbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBhbmQgeSBheGlzOlxuLy9cbi8vICAgICAgQGluY2x1ZGUgc2NhbGUoIFsgc2NhbGUteCwgc2NhbGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gd2hlcmUgdGhlICdzY2FsZS0nIGFyZ3VtZW50cyBhcmUgdW5pdGxlc3MgbXVsdGlwbGllcnMgb2YgdGhlIHggYW5kIHkgZGltZW5zaW9uc1xuLy8gYW5kIHBlcnNwZWN0aXZlLCB3aGljaCB3b3JrcyB0aGUgc2FtZSBhcyB0aGUgc3RhbmQtYWxvbmUgcGVyc3BlY3RpdmUgcHJvcGVydHkvbWl4aW5cbi8vIGJ1dCBhcHBsaWVzIHRvIHRoZSBpbmRpdmlkdWFsIGVsZW1lbnQgKG11bHRpcGxpZWQgd2l0aCBhbnkgcGFyZW50IHBlcnNwZWN0aXZlKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZSgkc2NhbGUteDogJGRlZmF1bHQtc2NhbGUteCwgJHNjYWxlLXk6ICRzY2FsZS14LCAkcGVyc3BlY3RpdmU6IGZhbHNlLCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHNjYWxlKCRzY2FsZS14LCAkc2NhbGUteSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gU2NhbGUgYW4gb2JqZWN0IGFsb25nIHRoZSB4IGF4aXNcbi8vIEBpbmNsdWRlIHNjYWxlWCggWyBzY2FsZS14LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGVYKCRzY2FsZTogJGRlZmF1bHQtc2NhbGUteCwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiBzY2FsZVgoJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTsgfVxuXG4vLyBTY2FsZSBhbiBvYmplY3QgYWxvbmcgdGhlIHkgYXhpc1xuLy8gQGluY2x1ZGUgc2NhbGVZKCBbIHNjYWxlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZVkoJHNjYWxlOiAkZGVmYXVsdC1zY2FsZS15LCAkcGVyc3BlY3RpdmU6IGZhbHNlLCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHNjYWxlWSgkc2NhbGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpOyB9XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeiBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVooIFsgc2NhbGUteiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWigkc2NhbGU6ICRkZWZhdWx0LXNjYWxlLXosICRwZXJzcGVjdGl2ZTogZmFsc2UpIHtcbiAgJHRyYW5zOiBzY2FsZVooJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpOyB9XG5cbi8vIFNjYWxlIGFuZCBvYmplY3QgYWxvbmcgYWxsIHRocmVlIGF4aXNcbi8vIEBpbmNsdWRlIHNjYWxlM2QoIFsgc2NhbGUteCwgc2NhbGUteSwgc2NhbGUteiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlM2QoJHNjYWxlLXg6ICRkZWZhdWx0LXNjYWxlLXgsICRzY2FsZS15OiAkZGVmYXVsdC1zY2FsZS15LCAkc2NhbGUtejogJGRlZmF1bHQtc2NhbGUteiwgJHBlcnNwZWN0aXZlOiBmYWxzZSkge1xuICAkdHJhbnM6IHNjYWxlM2QoJHNjYWxlLXgsICRzY2FsZS15LCAkc2NhbGUteik7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTsgfVxuXG4vLyBAZG9jIG9mZlxuLy8gUm90YXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIHRoZSB6IGF4aXMgICgyRClcbi8vIEBpbmNsdWRlIHJvdGF0ZSggWyByb3RhdGlvbiwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vLyB3aGVyZSAncm90YXRpb24nIGlzIGFuIGFuZ2xlIHNldCBpbiBkZWdyZWVzIChkZWcpIG9yIHJhZGlhbiAocmFkKSB1bml0c1xuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGUoJHJvdGF0ZTogJGRlZmF1bHQtcm90YXRlLCAkcGVyc3BlY3RpdmU6IGZhbHNlLCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHJvdGF0ZSgkcm90YXRlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTsgfVxuXG4vLyBBIGxvbmdjdXQgZm9yICdyb3RhdGUnIGluIGNhc2UgeW91IGZvcmdldCB0aGF0ICd6JyBpcyBpbXBsaWVkXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZVooJHJvdGF0ZTogJGRlZmF1bHQtcm90YXRlLCAkcGVyc3BlY3RpdmU6IGZhbHNlLCAkb25seTNkOiBmYWxzZSkge1xuICBAaW5jbHVkZSByb3RhdGUoJHJvdGF0ZSwgJHBlcnNwZWN0aXZlLCAkb25seTNkKTsgfVxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCB0aGUgeCBheGlzICgzRClcbi8vIEBpbmNsdWRlIHJvdGF0ZVgoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVYKCRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSwgJHBlcnNwZWN0aXZlOiBmYWxzZSkge1xuICAkdHJhbnM6IHJvdGF0ZVgoJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTsgfVxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCB0aGUgeSBheGlzICgzRClcbi8vIEBpbmNsdWRlIHJvdGF0ZSggWyByb3RhdGlvbiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZVkoJHJvdGF0ZTogJGRlZmF1bHQtcm90YXRlLCAkcGVyc3BlY3RpdmU6IGZhbHNlKSB7XG4gICR0cmFuczogcm90YXRlWSgkcm90YXRlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpOyB9XG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIGFuIGFyYml0cmFyeSBheGlzICgzRClcbi8vIEBpbmNsdWRlIHJvdGF0ZSggWyB2ZWN0b3IteCwgdmVjdG9yLXksIHZlY3Rvci16LCByb3RhdGlvbiwgcGVyc3BlY3RpdmUgXSApXG4vLyB3aGVyZSB0aGUgJ3ZlY3Rvci0nIGFyZ3VtZW50cyBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycy5cbi8vIFRoZXNlIG51bWJlcnMgYXJlIG5vdCBpbXBvcnRhbnQgb24gdGhlaXIgb3duLCBidXQgaW4gcmVsYXRpb24gdG8gb25lIGFub3RoZXJcbi8vIGNyZWF0aW5nIGFuIGF4aXMgZnJvbSB5b3VyIHRyYW5zZm9ybS1vcmlnaW4sIGFsb25nIHRoZSBheGlzIG9mIFh4ID0gWXkgPSBaei5cbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlM2QoJHZlY3Rvci14OiAkZGVmYXVsdC12ZWN0b3IteCwgJHZlY3Rvci15OiAkZGVmYXVsdC12ZWN0b3IteSwgJHZlY3Rvci16OiAkZGVmYXVsdC12ZWN0b3IteiwgJHJvdGF0ZTogJGRlZmF1bHQtcm90YXRlLCAkcGVyc3BlY3RpdmU6IGZhbHNlKSB7XG4gICR0cmFuczogcm90YXRlM2QoJHZlY3Rvci14LCAkdmVjdG9yLXksICR2ZWN0b3IteiwgJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTsgfVxuXG4vLyBAZG9jIG9mZlxuLy8gVHJhbnNsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB4IG9yIHkgYXhpcyAoMkQpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXgsIHRyYW5zbGF0ZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vIHdoZXJlIHRoZSAndHJhbnNsYXRlLScgYXJndW1lbnRzIGFjY2VwdCBhbnkgZGlzdGFuY2UgaW4gcGVyY2VudGFnZXMgb3IgYWJzb2x1dGUgKHB4LCBjbSwgaW4sIGVtIGV0Yy4uKSB1bml0cy5cbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlKCR0cmFuc2xhdGUteDogJGRlZmF1bHQtdHJhbnNsYXRlLXgsICR0cmFuc2xhdGUteTogJGRlZmF1bHQtdHJhbnNsYXRlLXksICRwZXJzcGVjdGl2ZTogZmFsc2UsICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogdHJhbnNsYXRlKCR0cmFuc2xhdGUteCwgJHRyYW5zbGF0ZS15KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTsgfVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBheGlzICgyRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteCwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZVgoJHRyYW5zLXg6ICRkZWZhdWx0LXRyYW5zbGF0ZS14LCAkcGVyc3BlY3RpdmU6IGZhbHNlLCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHRyYW5zbGF0ZVgoJHRyYW5zLXgpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpOyB9XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB5IGF4aXMgKDJEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlWSgkdHJhbnMteTogJGRlZmF1bHQtdHJhbnNsYXRlLXksICRwZXJzcGVjdGl2ZTogZmFsc2UsICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogdHJhbnNsYXRlWSgkdHJhbnMteSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHogYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGVaKCR0cmFucy16OiAkZGVmYXVsdC10cmFuc2xhdGUteiwgJHBlcnNwZWN0aXZlOiBmYWxzZSkge1xuICAkdHJhbnM6IHRyYW5zbGF0ZVooJHRyYW5zLXopO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7IH1cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHgsIHkgYW5kIHogYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXgsIHRyYW5zbGF0ZS15LCB0cmFuc2xhdGUteiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZTNkKCR0cmFuc2xhdGUteDogJGRlZmF1bHQtdHJhbnNsYXRlLXgsICR0cmFuc2xhdGUteTogJGRlZmF1bHQtdHJhbnNsYXRlLXksICR0cmFuc2xhdGUtejogJGRlZmF1bHQtdHJhbnNsYXRlLXosICRwZXJzcGVjdGl2ZTogZmFsc2UpIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGUzZCgkdHJhbnNsYXRlLXgsICR0cmFuc2xhdGUteSwgJHRyYW5zbGF0ZS16KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpOyB9XG5cbi8vIEBkb2Mgb2ZmXG4vLyBTa2V3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gU2tldyBhbiBlbGVtZW50OlxuLy9cbi8vICAgICBAaW5jbHVkZSBza2V3KCBbIHNrZXcteCwgc2tldy15LCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlIHRoZSAnc2tldy0nIGFyZ3VtZW50cyBhY2NlcHQgY3NzIGFuZ2xlcyBpbiBkZWdyZWVzIChkZWcpIG9yIHJhZGlhbiAocmFkKSB1bml0cy5cbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2tldygkc2tldy14OiAkZGVmYXVsdC1za2V3LXgsICRza2V3LXk6ICRkZWZhdWx0LXNrZXcteSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiBza2V3KCRza2V3LXgsICRza2V3LXkpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTsgfVxuXG4vLyBTa2V3IGFuIGVsZW1lbnQgYWxvbmcgdGhlIHggYXhpelxuLy9cbi8vICAgICBAaW5jbHVkZSBza2V3KCBbIHNrZXcteCwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2tld1goJHNrZXcteDogJGRlZmF1bHQtc2tldy14LCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHNrZXdYKCRza2V3LXgpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTsgfVxuXG4vLyBTa2V3IGFuIGVsZW1lbnQgYWxvbmcgdGhlIHkgYXhpc1xuLy9cbi8vICAgICBAaW5jbHVkZSBza2V3KCBbIHNrZXcteSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2tld1koJHNrZXcteTogJGRlZmF1bHQtc2tldy15LCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHNrZXdZKCRza2V3LXkpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTsgfVxuXG4vLyBGdWxsIHRyYW5zZm9ybSBtaXhpbnNcbi8vIEZvciBzZXR0aW5ncyBhbnkgY29tYmluYXRpb24gb2YgdHJhbnNmb3JtcyBhcyBhcmd1bWVudHNcbi8vIFRoZXNlIGFyZSBjb21wbGV4IGFuZCBub3QgaGlnaGx5IHJlY29tbWVuZGVkIGZvciBkYWlseSB1c2UuIFRoZXkgYXJlIG1haW5seVxuLy8gaGVyZSBmb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy5cbi8vXG4vLyAqIHRoZXkgaW5jbHVkZSBvcmlnaW4gYWRqdXN0bWVudHNcbi8vICogc2NhbGUgdGFrZXMgYSBtdWx0aXBsaWVyICh1bml0bGVzcyksIHJvdGF0ZSBhbmQgc2tldyB0YWtlIGRlZ3JlZXMgKGRlZylcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gY3JlYXRlLXRyYW5zZm9ybSgkcGVyc3BlY3RpdmU6IGZhbHNlLCAkc2NhbGUteDogZmFsc2UsICRzY2FsZS15OiBmYWxzZSwgJHNjYWxlLXo6IGZhbHNlLCAkcm90YXRlLXg6IGZhbHNlLCAkcm90YXRlLXk6IGZhbHNlLCAkcm90YXRlLXo6IGZhbHNlLCAkcm90YXRlM2Q6IGZhbHNlLCAkdHJhbnMteDogZmFsc2UsICR0cmFucy15OiBmYWxzZSwgJHRyYW5zLXo6IGZhbHNlLCAkc2tldy14OiBmYWxzZSwgJHNrZXcteTogZmFsc2UsICRvcmlnaW4teDogZmFsc2UsICRvcmlnaW4teTogZmFsc2UsICRvcmlnaW4tejogZmFsc2UsICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogdW5xdW90ZShcIlwiKTtcbiAgLy8gcGVyc3BlY3RpdmVcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpOyB9XG4gIC8vIHNjYWxlXG4gIEBpZiAkc2NhbGUteCBhbmQgJHNjYWxlLXkge1xuICAgIEBpZiAkc2NhbGUteiB7XG4gICAgICAkdHJhbnM6ICR0cmFucyBzY2FsZTNkKCRzY2FsZS14LCAkc2NhbGUteSwgJHNjYWxlLXopOyB9XG4gICAgQGVsc2Uge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgc2NhbGUoJHNjYWxlLXgsICRzY2FsZS15KTsgfSB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJHNjYWxlLXgge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgc2NhbGVYKCRzY2FsZS14KTsgfVxuICAgIEBpZiAkc2NhbGUteSB7XG4gICAgICAkdHJhbnM6ICR0cmFucyBzY2FsZVkoJHNjYWxlLXkpOyB9XG4gICAgQGlmICRzY2FsZS16IHtcbiAgICAgICR0cmFuczogJHRyYW5zIHNjYWxlWigkc2NhbGUteik7IH0gfVxuICAvLyByb3RhdGVcbiAgQGlmICRyb3RhdGUteCB7XG4gICAgJHRyYW5zOiAkdHJhbnMgcm90YXRlWCgkcm90YXRlLXgpOyB9XG4gIEBpZiAkcm90YXRlLXkge1xuICAgICR0cmFuczogJHRyYW5zIHJvdGF0ZVkoJHJvdGF0ZS15KTsgfVxuICBAaWYgJHJvdGF0ZS16IHtcbiAgICAkdHJhbnM6ICR0cmFucyByb3RhdGVaKCRyb3RhdGUteik7IH1cbiAgQGlmICRyb3RhdGUzZCB7XG4gICAgJHRyYW5zOiAkdHJhbnMgcm90YXRlM2QoJHJvdGF0ZTNkKTsgfVxuICAvLyB0cmFuc2xhdGVcbiAgQGlmICR0cmFucy14IGFuZCAkdHJhbnMteSB7XG4gICAgQGlmICR0cmFucy16IHtcbiAgICAgICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZTNkKCR0cmFucy14LCAkdHJhbnMteSwgJHRyYW5zLXopOyB9XG4gICAgQGVsc2Uge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlKCR0cmFucy14LCAkdHJhbnMteSk7IH0gfVxuICBAZWxzZSB7XG4gICAgQGlmICR0cmFucy14IHtcbiAgICAgICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZVgoJHRyYW5zLXgpOyB9XG4gICAgQGlmICR0cmFucy15IHtcbiAgICAgICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZVkoJHRyYW5zLXkpOyB9XG4gICAgQGlmICR0cmFucy16IHtcbiAgICAgICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZVooJHRyYW5zLXopOyB9IH1cbiAgLy8gc2tld1xuICBAaWYgJHNrZXcteCBhbmQgJHNrZXcteSB7XG4gICAgJHRyYW5zOiAkdHJhbnMgc2tldygkc2tldy14LCAkc2tldy15KTsgfVxuICBAZWxzZSB7XG4gICAgQGlmICRza2V3LXgge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgc2tld1goJHNrZXcteCk7IH1cbiAgICBAaWYgJHNrZXcteSB7XG4gICAgICAkdHJhbnM6ICR0cmFucyBza2V3WSgkc2tldy15KTsgfSB9XG4gIC8vIGFwcGx5IGl0IVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbigkb3JpZ2luLXgsICRvcmlnaW4teSwgJG9yaWdpbi16LCAkb25seTNkKTsgfVxuXG4vLyBBIHNpbXBsaWZpZWQgc2V0IG9mIG9wdGlvbnNcbi8vIGJhY2t3YXJkcy1jb21wYXRpYmxlIHdpdGggdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlICd0cmFuc2Zvcm0nIG1peGluXG5AbWl4aW4gc2ltcGxlLXRyYW5zZm9ybSgkc2NhbGU6IGZhbHNlLCAkcm90YXRlOiBmYWxzZSwgJHRyYW5zLXg6IGZhbHNlLCAkdHJhbnMteTogZmFsc2UsICRza2V3LXg6IGZhbHNlLCAkc2tldy15OiBmYWxzZSwgJG9yaWdpbi14OiBmYWxzZSwgJG9yaWdpbi15OiBmYWxzZSkge1xuICBAaW5jbHVkZSBjcmVhdGUtdHJhbnNmb3JtKGZhbHNlLCAkc2NhbGUsICRzY2FsZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJHJvdGF0ZSwgZmFsc2UsICR0cmFucy14LCAkdHJhbnMteSwgZmFsc2UsICRza2V3LXgsICRza2V3LXksICRvcmlnaW4teCwgJG9yaWdpbi15LCBmYWxzZSwgZmFsc2UpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENTUyBUcmFuc2l0aW9uc1xuLy8gQ3VycmVudGx5IG9ubHkgd29ya3MgaW4gV2Via2l0LlxuLy9cbi8vICogZXhwZWN0ZWQgaW4gQ1NTMywgRmlyZUZveCAzLjYvNyBhbmQgT3BlcmEgUHJlc3RvIDIuM1xuLy8gKiBXZSdsbCBiZSBwcmVwYXJlZC5cbi8vXG4vLyBJbmNsdWRpbmcgdGhpcyBzdWJtb2R1bGUgc2V0cyBmb2xsb3dpbmcgZGVmYXVsdHMgZm9yIHRoZSBtaXhpbnM6XG4vL1xuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHkgOiBhbGxcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uIDogMXNcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uIDogZmFsc2Vcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5ICAgIDogZmFsc2Vcbi8vXG4vLyBPdmVycmlkZSB0aGVtIGlmIHlvdSBsaWtlLiBUaW1pbmctZnVuY3Rpb24gYW5kIGRlbGF5IGFyZSBzZXQgdG8gZmFsc2UgZm9yIGJyb3dzZXIgZGVmYXVsdHMgKGVhc2UsIDBzKS5cblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsICFkZWZhdWx0O1xuXG4kZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxcyAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbjogZmFsc2UgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXk6IGZhbHNlICFkZWZhdWx0O1xuXG4kdHJhbnNpdGlvbmFibGUtcHJlZml4ZWQtdmFsdWVzOiB0cmFuc2Zvcm0sIHRyYW5zZm9ybS1vcmlnaW4gIWRlZmF1bHQ7XG5cbi8vIE9uZSBvciBtb3JlIHByb3BlcnRpZXMgdG8gdHJhbnNpdGlvblxuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiBhbHNvIGFjY2VwdHMgXCJhbGxcIiBvciBcIm5vbmVcIlxuXG5AbWl4aW4gdHJhbnNpdGlvbi1wcm9wZXJ0eSgkcHJvcGVydHktMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSwgJHByb3BlcnR5LTI6IGZhbHNlLCAkcHJvcGVydHktMzogZmFsc2UsICRwcm9wZXJ0eS00OiBmYWxzZSwgJHByb3BlcnR5LTU6IGZhbHNlLCAkcHJvcGVydHktNjogZmFsc2UsICRwcm9wZXJ0eS03OiBmYWxzZSwgJHByb3BlcnR5LTg6IGZhbHNlLCAkcHJvcGVydHktOTogZmFsc2UsICRwcm9wZXJ0eS0xMDogZmFsc2UpIHtcbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5LTEpID09IHN0cmluZyB7XG4gICAgJHByb3BlcnR5LTE6IHVucXVvdGUoJHByb3BlcnR5LTEpOyB9XG4gICRwcm9wZXJ0aWVzOiBjb21wYWN0KCRwcm9wZXJ0eS0xLCAkcHJvcGVydHktMiwgJHByb3BlcnR5LTMsICRwcm9wZXJ0eS00LCAkcHJvcGVydHktNSwgJHByb3BlcnR5LTYsICRwcm9wZXJ0eS03LCAkcHJvcGVydHktOCwgJHByb3BlcnR5LTksICRwcm9wZXJ0eS0xMCk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtd2Via2l0LCAkcHJvcGVydGllcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtbW96LCAkcHJvcGVydGllcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLXRyYW5zaXRpb24tcHJvcGVydHk6IHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC1vLCAkcHJvcGVydGllcyk7IH1cbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogJHByb3BlcnRpZXM7IH1cblxuLy8gT25lIG9yIG1vcmUgZHVyYXRpb25zIGluIHNlY29uZHNcbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogdGhlc2UgZHVyYXRpb25zIHdpbGwgYWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tZHVyYXRpb24oJGR1cmF0aW9uLTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24sICRkdXJhdGlvbi0yOiBmYWxzZSwgJGR1cmF0aW9uLTM6IGZhbHNlLCAkZHVyYXRpb24tNDogZmFsc2UsICRkdXJhdGlvbi01OiBmYWxzZSwgJGR1cmF0aW9uLTY6IGZhbHNlLCAkZHVyYXRpb24tNzogZmFsc2UsICRkdXJhdGlvbi04OiBmYWxzZSwgJGR1cmF0aW9uLTk6IGZhbHNlLCAkZHVyYXRpb24tMTA6IGZhbHNlKSB7XG4gIEBpZiB0eXBlLW9mKCRkdXJhdGlvbi0xKSA9PSBzdHJpbmcge1xuICAgICRkdXJhdGlvbi0xOiB1bnF1b3RlKCRkdXJhdGlvbi0xKTsgfVxuICAkZHVyYXRpb25zOiBjb21wYWN0KCRkdXJhdGlvbi0xLCAkZHVyYXRpb24tMiwgJGR1cmF0aW9uLTMsICRkdXJhdGlvbi00LCAkZHVyYXRpb24tNSwgJGR1cmF0aW9uLTYsICRkdXJhdGlvbi03LCAkZHVyYXRpb24tOCwgJGR1cmF0aW9uLTksICRkdXJhdGlvbi0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2l0aW9uLWR1cmF0aW9uLCAkZHVyYXRpb25zLCAtbW96LCAtd2Via2l0LCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIE9uZSBvciBtb3JlIHRpbWluZyBmdW5jdGlvbnNcbi8vXG4vLyAqIFsgZWFzZSB8IGxpbmVhciB8IGVhc2UtaW4gfCBlYXNlLW91dCB8IGVhc2UtaW4tb3V0IHwgY3ViaWMtYmV6aWVyKHgxLCB5MSwgeDIsIHkyKV1cbi8vICogRm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiBUaGVzZSBmdW5jdGlvbnMgd2lsbCBlZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oJGZ1bmN0aW9uLTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24sICRmdW5jdGlvbi0yOiBmYWxzZSwgJGZ1bmN0aW9uLTM6IGZhbHNlLCAkZnVuY3Rpb24tNDogZmFsc2UsICRmdW5jdGlvbi01OiBmYWxzZSwgJGZ1bmN0aW9uLTY6IGZhbHNlLCAkZnVuY3Rpb24tNzogZmFsc2UsICRmdW5jdGlvbi04OiBmYWxzZSwgJGZ1bmN0aW9uLTk6IGZhbHNlLCAkZnVuY3Rpb24tMTA6IGZhbHNlKSB7XG4gICRmdW5jdGlvbi0xOiB1bnF1b3RlKCRmdW5jdGlvbi0xKTtcbiAgJGZ1bmN0aW9uczogY29tcGFjdCgkZnVuY3Rpb24tMSwgJGZ1bmN0aW9uLTIsICRmdW5jdGlvbi0zLCAkZnVuY3Rpb24tNCwgJGZ1bmN0aW9uLTUsICRmdW5jdGlvbi02LCAkZnVuY3Rpb24tNywgJGZ1bmN0aW9uLTgsICRmdW5jdGlvbi05LCAkZnVuY3Rpb24tMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sICRmdW5jdGlvbnMsIC1tb3osIC13ZWJraXQsIC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gT25lIG9yIG1vcmUgdHJhbnNpdGlvbi1kZWxheXMgaW4gc2Vjb25kc1xuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiB0aGVzZSBkZWxheXMgd2lsbCBlZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi1kZWxheSgkZGVsYXktMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSwgJGRlbGF5LTI6IGZhbHNlLCAkZGVsYXktMzogZmFsc2UsICRkZWxheS00OiBmYWxzZSwgJGRlbGF5LTU6IGZhbHNlLCAkZGVsYXktNjogZmFsc2UsICRkZWxheS03OiBmYWxzZSwgJGRlbGF5LTg6IGZhbHNlLCAkZGVsYXktOTogZmFsc2UsICRkZWxheS0xMDogZmFsc2UpIHtcbiAgQGlmIHR5cGUtb2YoJGRlbGF5LTEpID09IHN0cmluZyB7XG4gICAgJGRlbGF5LTE6IHVucXVvdGUoJGRlbGF5LTEpOyB9XG4gICRkZWxheXM6IGNvbXBhY3QoJGRlbGF5LTEsICRkZWxheS0yLCAkZGVsYXktMywgJGRlbGF5LTQsICRkZWxheS01LCAkZGVsYXktNiwgJGRlbGF5LTcsICRkZWxheS04LCAkZGVsYXktOSwgJGRlbGF5LTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tZGVsYXksICRkZWxheXMsIC1tb3osIC13ZWJraXQsIC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gVHJhbnNpdGlvbiBhbGwtaW4tb25lIHNob3J0aGFuZFxuXG5AbWl4aW4gc2luZ2xlLXRyYW5zaXRpb24oJHByb3BlcnR5OiAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5LCAkZHVyYXRpb246ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24sICRmdW5jdGlvbjogJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbiwgJGRlbGF5OiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5KSB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oY29tcGFjdCgkcHJvcGVydHkgJGR1cmF0aW9uICRmdW5jdGlvbiAkZGVsYXkpKTsgfVxuXG5AbWl4aW4gdHJhbnNpdGlvbigkdHJhbnNpdGlvbi0xOiBkZWZhdWx0LCAkdHJhbnNpdGlvbi0yOiBmYWxzZSwgJHRyYW5zaXRpb24tMzogZmFsc2UsICR0cmFuc2l0aW9uLTQ6IGZhbHNlLCAkdHJhbnNpdGlvbi01OiBmYWxzZSwgJHRyYW5zaXRpb24tNjogZmFsc2UsICR0cmFuc2l0aW9uLTc6IGZhbHNlLCAkdHJhbnNpdGlvbi04OiBmYWxzZSwgJHRyYW5zaXRpb24tOTogZmFsc2UsICR0cmFuc2l0aW9uLTEwOiBmYWxzZSkge1xuICBAaWYgJHRyYW5zaXRpb24tMSA9PSBkZWZhdWx0IHtcbiAgICAkdHJhbnNpdGlvbi0xOiBjb21wYWN0KCRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHkgJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbiAkZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXkpOyB9XG4gICR0cmFuc2l0aW9uczogZmFsc2U7XG4gIEBpZiB0eXBlLW9mKCR0cmFuc2l0aW9uLTEpID09IGxpc3QgYW5kIHR5cGUtb2YobnRoKCR0cmFuc2l0aW9uLTEsIDEpKSA9PSBsaXN0IHtcbiAgICAkdHJhbnNpdGlvbnM6IGpvaW4oJHRyYW5zaXRpb24tMSwgY29tcGFjdCgkdHJhbnNpdGlvbi0yLCAkdHJhbnNpdGlvbi0zLCAkdHJhbnNpdGlvbi00LCAkdHJhbnNpdGlvbi01LCAkdHJhbnNpdGlvbi02LCAkdHJhbnNpdGlvbi03LCAkdHJhbnNpdGlvbi04LCAkdHJhbnNpdGlvbi05LCAkdHJhbnNpdGlvbi0xMCksIGNvbW1hKTsgfVxuICBAZWxzZSB7XG4gICAgJHRyYW5zaXRpb25zOiBjb21wYWN0KCR0cmFuc2l0aW9uLTEsICR0cmFuc2l0aW9uLTIsICR0cmFuc2l0aW9uLTMsICR0cmFuc2l0aW9uLTQsICR0cmFuc2l0aW9uLTUsICR0cmFuc2l0aW9uLTYsICR0cmFuc2l0aW9uLTcsICR0cmFuc2l0aW9uLTgsICR0cmFuc2l0aW9uLTksICR0cmFuc2l0aW9uLTEwKTsgfVxuICAkZGVsYXlzOiBjb21tYS1saXN0KCk7XG4gICRoYXMtZGVsYXlzOiBmYWxzZTtcbiAgJHdlYmtpdC12YWx1ZTogY29tbWEtbGlzdCgpO1xuICAkbW96LXZhbHVlOiBjb21tYS1saXN0KCk7XG4gICRvLXZhbHVlOiBjb21tYS1saXN0KCk7XG4gIC8vIFRoaXMgYmxvY2sgY2FuIGJlIG1hZGUgY29uc2lkZXJhYmx5IHNpbXBsZXIgYXQgdGhlIHBvaW50IGluIHRpbWUgdGhhdFxuICAvLyB3ZSBubyBsb25nZXIgbmVlZCB0byBkZWFsIHdpdGggdGhlIGRpZmZlcmVuY2VzIGluIGhvdyBkZWxheXMgYXJlIHRyZWF0ZWQuXG4gIEBlYWNoICR0cmFuc2l0aW9uIGluICR0cmFuc2l0aW9ucyB7XG4gICAgLy8gRXh0cmFjdCB0aGUgdmFsdWVzIGZyb20gdGhlIGxpc3RcbiAgICAvLyAodGhpcyB3b3VsZCBiZSBjbGVhbmVyIGlmIG50aCB0b29rIGEgM3JkIGFyZ3VtZW50IHRvIHByb3ZpZGUgYSBkZWZhdWx0IHZhbHVlKS5cbiAgICAkcHJvcGVydHk6IG50aCgkdHJhbnNpdGlvbiwgMSk7XG4gICAgJGR1cmF0aW9uOiBmYWxzZTtcbiAgICAkdGltaW5nLWZ1bmN0aW9uOiBmYWxzZTtcbiAgICAkZGVsYXk6IGZhbHNlO1xuICAgIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID4gMSB7XG4gICAgICAkZHVyYXRpb246IG50aCgkdHJhbnNpdGlvbiwgMik7IH1cbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA+IDIge1xuICAgICAgJHRpbWluZy1mdW5jdGlvbjogbnRoKCR0cmFuc2l0aW9uLCAzKTsgfVxuICAgIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID4gMyB7XG4gICAgICAkZGVsYXk6IG50aCgkdHJhbnNpdGlvbiwgNCk7XG4gICAgICAkaGFzLWRlbGF5czogdHJ1ZTsgfVxuICAgIC8vIElmIGEgZGVsYXkgaXMgcHJvdmlkZWQgd2l0aG91dCBhIHRpbWluZyBmdW5jdGlvblxuICAgIEBpZiBpcy10aW1lKCR0aW1pbmctZnVuY3Rpb24pIGFuZCBub3QgJGRlbGF5IHtcbiAgICAgICRkZWxheTogJHRpbWluZy1mdW5jdGlvbjtcbiAgICAgICR0aW1pbmctZnVuY3Rpb246IGZhbHNlO1xuICAgICAgJGhhcy1kZWxheXM6IHRydWU7IH1cbiAgICAvLyBLZWVwIGEgbGlzdCBvZiBkZWxheXMgaW4gY2FzZSBvbmUgaXMgc3BlY2lmaWVkXG4gICAgJGRlbGF5czogYXBwZW5kKCRkZWxheXMsIGlmKCRkZWxheSwgJGRlbGF5LCAwcykpO1xuICAgICR3ZWJraXQtdmFsdWU6IGFwcGVuZCgkd2Via2l0LXZhbHVlLCBjb21wYWN0KHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC13ZWJraXQsICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24pKTtcbiAgICAkbW96LXZhbHVlOiBhcHBlbmQoJG1vei12YWx1ZSwgY29tcGFjdChwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtbW96LCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uICRkZWxheSkpO1xuICAgICRvLXZhbHVlOiBhcHBlbmQoJG8tdmFsdWUsIGNvbXBhY3QocHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLW8sICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24gJGRlbGF5KSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246ICR3ZWJraXQtdmFsdWU7XG4gICAgLy8gb2xkIHdlYmtpdCBkb2Vzbid0IHN1cHBvcnQgdGhlIGRlbGF5IHBhcmFtZXRlciBpbiB0aGUgc2hvcnRoYW5kIHNvIHdlIHByb2dyZXNzaXZlbHkgZW5oYW5jZSBpdC5cbiAgICBAaWYgJGhhcy1kZWxheXMge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAkZGVsYXlzOyB9IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei10cmFuc2l0aW9uOiAkbW96LXZhbHVlOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby10cmFuc2l0aW9uOiAkby12YWx1ZTsgfVxuICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbnM7IH1cblxuLy8gY29lcmNlIGEgbGlzdCB0byBiZSBjb21tYSBkZWxpbWl0ZWQgb3IgbWFrZSBhIG5ldywgZW1wdHkgY29tbWEgZGVsaW1pdGVkIGxpc3QuXG5AZnVuY3Rpb24gY29tbWEtbGlzdCgkbGlzdDogKCkpIHtcbiAgQHJldHVybiBqb2luKCgpLCAkbGlzdCwgY29tbWEpOyB9XG5cbi8vIFJldHVybnMgYCRwcm9wZXJ0eWAgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4IGlmIGl0IGlzIGZvdW5kIGluIGAkdHJhbnNpdGlvbmFibGUtcHJlZml4ZWQtdmFsdWVzYC5cbkBmdW5jdGlvbiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigkcHJlZml4LCAkcHJvcGVydHkpIHtcbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5KSA9PSBsaXN0IHtcbiAgICAkbmV3LWxpc3Q6IGNvbW1hLWxpc3QoKTtcbiAgICBAZWFjaCAkdiBpbiAkcHJvcGVydHkge1xuICAgICAgJG5ldy1saXN0OiBhcHBlbmQoJG5ldy1saXN0LCBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigkcHJlZml4LCAkdikpOyB9XG4gICAgQHJldHVybiAkbmV3LWxpc3Q7IH1cbiAgQGVsc2Uge1xuICAgIEBpZiBpbmRleCgkdHJhbnNpdGlvbmFibGUtcHJlZml4ZWQtdmFsdWVzLCAkcHJvcGVydHkpIHtcbiAgICAgIEByZXR1cm4gI3skcHJlZml4fS0jeyRwcm9wZXJ0eX07IH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuICRwcm9wZXJ0eTsgfSB9IH1cblxuLy8gQ2hlY2tzIGlmIHRoZSB2YWx1ZSBnaXZlbiBpcyBhIHVuaXQgb2YgdGltZS5cbkBmdW5jdGlvbiBpcy10aW1lKCR2YWx1ZSkge1xuICBAaWYgdHlwZS1vZigkdmFsdWUpID09IG51bWJlciB7XG4gICAgQHJldHVybiBub3Qgbm90IGluZGV4KHMgbXMsIHVuaXQoJHZhbHVlKSk7IH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDaGFuZ2UgdGhlIGFwcGVhcmFuY2UgZm9yIE1vemlsbGEsIFdlYmtpdCBhbmQgcG9zc2libHkgdGhlIGZ1dHVyZS5cbi8vIFRoZSBhcHBlYXJhbmNlIHByb3BlcnR5IGlzIGN1cnJlbnRseSBub3QgcHJlc2VudCBpbiBhbnkgbmV3ZXIgQ1NTIHNwZWNpZmljYXRpb24uXG4vL1xuLy8gVGhlcmUgaXMgbm8gb2ZmaWNpYWwgbGlzdCBvZiBhY2NlcHRlZCB2YWx1ZXMsIGJ1dCB5b3UgbWlnaHQgY2hlY2sgdGhlc2Ugc291cmNlOlxuLy8gICBNb3ppbGxhIDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vQ1NTLy1tb3otYXBwZWFyYW5jZVxuLy8gICBXZWJraXQgIDogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3dlYmtpdC1taXJyb3Ivc291cmNlL2Jyb3dzZS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbj9zcGVjPXN2bmYxYWVhNTU5ZGNkMDI1YTg5NDZhYTdkYTZlNGU4MzA2ZjVjMWI2MDQmcj02M2M3ZDFhZjQ0NDMwYjMxNDIzM2ZlYTM0MmMzZGRiMmEwNTJlMzY1XG4vLyAgIChzZWFyY2ggZm9yICdhcHBlYXJhbmNlJyB3aXRoaW4gdGhlIHBhZ2UpXG5cbkBtaXhpbiBhcHBlYXJhbmNlKCRhcCkge1xuICAkYXA6IHVucXVvdGUoJGFwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGFwcGVhcmFuY2UsICRhcCwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gV2Via2l0LCBJRTEwIGFuZCBmdXR1cmUgc3VwcG9ydCBmb3IgW0NTUyBSZWdpb25zXShodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXJlZ2lvbnMvKVxuLy9cbi8vICR0YXJnZXQgaXMgYSB2YWx1ZSB5b3UgdXNlIHRvIGxpbmsgdHdvIHJlZ2lvbnMgb2YgeW91ciBjc3MuIEdpdmUgdGhlIHNvdXJjZSBvZiB5b3VyIGNvbnRlbnQgdGhlIGZsb3ctaW50byBwcm9wZXJ0eSwgYW5kIGdpdmUgeW91ciB0YXJnZXQgY29udGFpbmVyIHRoZSBmbG93LWZyb20gcHJvcGVydHkuXG4vL1xuLy8gRm9yIGEgdmlzdWFsIGV4cGxhbmF0aW9uLCBzZWUgdGhlIGRpYWdyYW1zIGF0IENocmlzIENveWllcidzXG4vLyBbQ1NTLVRyaWNrc10oaHR0cDovL2Nzcy10cmlja3MuY29tL2NvbnRlbnQtZm9sZGluZy8pXG5cbkBtaXhpbiBmbG93LWludG8oJHRhcmdldCkge1xuICAkdGFyZ2V0OiB1bnF1b3RlKCR0YXJnZXQpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoZmxvdy1pbnRvLCAkdGFyZ2V0LCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG5vdCBvZmZpY2lhbCk7IH1cblxuQG1peGluIGZsb3ctZnJvbSgkdGFyZ2V0KSB7XG4gICR0YXJnZXQ6IHVucXVvdGUoJHRhcmdldCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChmbG93LWZyb20sICR0YXJnZXQsIG5vdCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgbm90IG9mZmljaWFsKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBNaXhpbnMgdG8gc3VwcG9ydCBzcGVjaWZpYyBDU1MgVGV4dCBMZXZlbCAzIGVsZW1lbnRzXG4vL1xuLy9cbi8vXG4vLyBNaXhpbiBmb3Igd29yZC1icmVhayBwcm9wZXJ0aWVzXG4vLyBodHRwOi8vd3d3LnczLm9yZy9jc3MzLXRleHQvI3dvcmQtYnJlYWtcbi8vICogbGVnYWwgdmFsdWVzIGZvciAkdHlwZSA6IG5vcm1hbCwga2VlcC1hbGwsIGJyZWFrLWFsbFxuLy9cbi8vIEV4YW1wbGU6XG4vLyAgICBwLndvcmRCcmVhayB7QGluY2x1ZGUgd29yZC1icmVhayhicmVhay1hbGwpO31cbi8vXG4vLyBXaGljaCBnZW5lcmF0ZXM6XG4vLyAgICBwLndvcmRCcmVhayB7XG4vLyAgICAgIC1tcy13b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDt9XG4vL1xuQG1peGluIHdvcmQtYnJlYWsoJHZhbHVlOiBub3JtYWwpIHtcbiAgQGlmICR2YWx1ZSA9PSBicmVhay1hbGwge1xuICAgIC8vTW9zdCBicm93c2VycyBoYW5kbGUgdGhlIGJyZWFrLWFsbCBjYXNlIHRoZSBzYW1lLi4uXG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHdvcmQtYnJlYWssICR2YWx1ZSwgbm90IC1tb3osIG5vdCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpO1xuICAgIC8vV2Via2l0IGhhbmRsZXMgYnJlYWstYWxsIGRpZmZlcmVudGx5Li4uIGFzIGJyZWFrLXdvcmRcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwod29yZC1icmVhaywgYnJlYWstd29yZCwgbm90IC1tb3osIG5vdCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHdvcmQtYnJlYWssICR2YWx1ZSwgbm90IC1tb3osIG5vdCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9IH1cblxuLy8gTWl4aW4gZm9yIHRoZSBoeXBoZW5zIHByb3BlcnR5XG4vL1xuLy8gVzNDIHNwZWNpZmljYXRpb246IGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdGV4dC8jaHlwaGVuc1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogYXV0bywgbWFudWFsLCBub25lXG4vL1xuLy8gRXhhbXBsZTpcbi8vICBwIHtcbi8vICAgIEBpbmNsdWRlIGh5cGhlbnMoYXV0byk7fVxuLy8gV2hpY2ggZ2VuZXJhdGVzOlxuLy8gIHAge1xuLy8gICAgLW1vei1oeXBoZW5zOiBhdXRvO1xuLy8gICAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xuLy8gICAgaHlwaGVuczogYXV0bzt9XG4vL1xuQG1peGluIGh5cGhlbnMoJHZhbHVlOiBhdXRvKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChoeXBoZW5zLCAkdmFsdWUsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIE1peGluIGZvciB4LWJyb3dzZXIgaHlwaGVuYXRpb24gYmFzZWQgb24gQGF1Y2hlbmJlcmcncyBwb3N0OlxuLy8gUmVtb3ZlcyB0aGUgbmVlZCBmb3IgdGhlIDx3YnIvPiBIVE1MIHRhZ1xuLy8gaHR0cDovL2Jsb2cua2VubmV0aC5pby9ibG9nLzIwMTIvMDMvMDQvd29yZC13cmFwcGluZy1oeXBlcm5hdGlvbi11c2luZy1jc3MvXG4vL1xuLy8gIEV4YW1wbGU6XG4vLyAgZGl2IHtAaW5jbHVkZSBoeXBoZW5hdGlvbjt9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczpcbi8vICAgIGRpdiB7XG4vLyAgICAgIC1tcy13b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbi8vICAgICAgLW1vei1oeXBoZW5zOiBhdXRvO1xuLy8gICAgICAtd2Via2l0LWh5cGhlbnM6IGF1dG87XG4vLyAgICAgIGh5cGhlbnM6IGF1dG87fVxuLy9cbkBtaXhpbiBoeXBoZW5hdGlvbiB7XG4gIEBpbmNsdWRlIHdvcmQtYnJlYWsoYnJlYWstYWxsKTtcbiAgQGluY2x1ZGUgaHlwaGVuczsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIHN1cHBvcnQgZm9yIHRoZSB1cGNvbWluZyAoPykgY3NzMyBmaWx0ZXIgcHJvcGVydHkuXG4vL1xuLy8gRWFjaCBmaWx0ZXIgYXJndW1lbnQgc2hvdWxkIGFkaGVyZSB0byB0aGUgc3RhbmRhcmQgY3NzMyBzeW50YXggZm9yIHRoZVxuLy8gZmlsdGVyIHByb3BlcnR5LlxuQG1peGluIGZpbHRlcigkZmlsdGVyLTEsICRmaWx0ZXItMjogZmFsc2UsICRmaWx0ZXItMzogZmFsc2UsICRmaWx0ZXItNDogZmFsc2UsICRmaWx0ZXItNTogZmFsc2UsICRmaWx0ZXItNjogZmFsc2UsICRmaWx0ZXItNzogZmFsc2UsICRmaWx0ZXItODogZmFsc2UsICRmaWx0ZXItOTogZmFsc2UsICRmaWx0ZXItMTA6IGZhbHNlKSB7XG4gICRmaWx0ZXI6IGNvbXBhY3QoJGZpbHRlci0xLCAkZmlsdGVyLTIsICRmaWx0ZXItMywgJGZpbHRlci00LCAkZmlsdGVyLTUsICRmaWx0ZXItNiwgJGZpbHRlci03LCAkZmlsdGVyLTgsICRmaWx0ZXItOSwgJGZpbHRlci0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChmaWx0ZXIsICRmaWx0ZXIsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogdHJ1ZTtcblxuLy8gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIFNhc3MncyBAZXh0ZW5kIGRpcmVjdGl2ZSB0byBhcHBseSB0aGUgYmVoYXZpb3Jcbi8vIHRvIHlvdXIgUElFIGVsZW1lbnRzLiBUbyBhc3Npc3QgeW91LCBDb21wYXNzIHByb3ZpZGVzIHRoaXMgdmFyaWFibGUuXG4vLyBXaGVuIHNldCwgaXQgd2lsbCBjYXVzZSB0aGUgYEBpbmNsdWRlIHBpZWAgbWl4aW4gdG8gZXh0ZW5kIHRoaXMgY2xhc3MuXG4vLyBUaGUgY2xhc3MgbmFtZSB5b3UgcHJvdmlkZSBzaG91bGQgKipub3QqKiBpbmNsdWRlIHRoZSBgLmAuXG4kcGllLWJhc2UtY2xhc3M6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBhcHByb2FjaCB0byB1c2luZyBQSUUuXG4vLyBDYW4gYmUgb25lIG9mOlxuLy9cbi8vICogcmVsYXRpdmUgKGRlZmF1bHQpXG4vLyAqIHotaW5kZXhcbi8vICogbm9uZVxuJHBpZS1kZWZhdWx0LWFwcHJvYWNoOiByZWxhdGl2ZSAhZGVmYXVsdDtcblxuLy8gVGhlIGxvY2F0aW9uIG9mIHlvdXIgUElFIGJlaGF2aW9yIGZpbGVcbi8vIFRoaXMgc2hvdWxkIGJlIHJvb3QtcmVsYXRpdmUgdG8geW91ciB3ZWIgc2VydmVyXG4vLyByZWxhdGl2ZSBhc3NldHMgZG9uJ3Qgd29yay4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdFxuLy8geW91IHNldCB0aGlzIHlvdXJzZWxmLlxuJHBpZS1iZWhhdmlvcjogc3R5bGVzaGVldC11cmwoXCJQSUUuaHRjXCIpICFkZWZhdWx0O1xuXG4vLyBXaGVuIHVzaW5nIHRoZSB6LWluZGV4IGFwcHJvYWNoLCB0aGVcbi8vIGZpcnN0IGFuY2VzdG9yIG9mIHRoZSBQSUUgZWxlbWVudCBhdFxuLy8gb3IgYmVmb3JlIHRoZSBjb250YWluZXIncyBvcGFxdWUgYmFja2dyb3VuZFxuLy8gc2hvdWxkIGhhdmUgYSB6LWluZGV4IHNldCBhcyB3ZWxsIHRvIGVuc3VyZVxuLy8gcHJvcGVydCB6LWluZGV4IHN0YWNraW5nLlxuLy9cbi8vIFRoZSBgJHBvc2l0aW9uYCBhcmd1bWVudCBtdXN0IGJlIHNvbWUgbm9uLXN0YXRpY1xuLy8gdmFsdWUgKGFic29sdXRlLCByZWxhdGl2ZSwgZXRjLilcbkBtaXhpbiBwaWUtY29udGFpbmVyKCR6LWluZGV4OiAwLCAkcG9zaXRpb246IHJlbGF0aXZlKSB7XG4gIHotaW5kZXg6ICR6LWluZGV4O1xuICBwb3NpdGlvbjogJHBvc2l0aW9uOyB9XG5cbi8vIFBJRSBlbGVtZW50cyBtdXN0IGhhdmUgdGhpcyBiZWhhdmlvciBhdHRhY2hlZCB0byB0aGVtLlxuLy8gSUUgaXMgYnJva2VuIC0tIGl0IGRvZXNuJ3QgdGhpbmsgb2YgYmVoYXZpb3IgdXJscyBhc1xuLy8gcmVsYXRpdmUgdG8gdGhlIHN0eWxlc2hlZXQuIEl0IGNvbnNpZGVycyB0aGVtIHJlbGF0aXZlXG4vLyB0byB0aGUgd2VicGFnZS4gQXMgYSByZXN1bHQsIHlvdSBjYW5ub3QgcmVsaWFibHkgdXNlXG4vLyBjb21wYXNzJ3MgcmVsYXRpdmVfYXNzZXRzIHdpdGggUElFLlxuLy9cbi8vICogYCRhcHByb2FjaGAgLSBvbmUgb2Y6IHJlbGF0aXZlLCB6LWluZGV4LCBvciBub25lXG4vLyAqIGAkei1pbmRleGAgLSB3aGVuIHVzaW5nIHRoZSB6LWluZGV4IGFwcHJvYWNoLCB0aGlzXG4vLyAgICAgICAgICAgICAgICBpcyB0aGUgei1pbmRleCB0aGF0IGlzIGFwcGxpZWQuXG5AbWl4aW4gcGllLWVsZW1lbnQoJGFwcHJvYWNoOiAkcGllLWRlZmF1bHQtYXBwcm9hY2gsICR6LWluZGV4OiAwKSB7XG4gIGJlaGF2aW9yOiAkcGllLWJlaGF2aW9yO1xuICBAaWYgJGFwcHJvYWNoID09IHJlbGF0aXZlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgQGVsc2UgaWYgJGFwcHJvYWNoID09IHotaW5kZXgge1xuICAgIHotaW5kZXg6ICR6LWluZGV4OyB9IH1cblxuLy8gYSBzbWFydCBtaXhpbiB0aGF0IGtub3dzIHRvIGV4dGVuZCBvciBpbmNsdWRlIHBpZS1lbGVtZW50IGFjY29yZGluZ1xuLy8gdG8geW91ciBzdHlsZXNoZWV0J3MgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuXG5AbWl4aW4gcGllKCRiYXNlLWNsYXNzOiAkcGllLWJhc2UtY2xhc3MpIHtcbiAgQGlmICRiYXNlLWNsYXNzIHtcbiAgICBAZXh0ZW5kIC4jeyRiYXNlLWNsYXNzfTsgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgcGllLWVsZW1lbnQ7IH0gfVxuXG4vLyBXYXRjaCBgJG5gIGxldmVscyBvZiBhbmNlc3RvcnMgZm9yIGNoYW5nZXMgdG8gdGhlaXIgY2xhc3MgYXR0cmlidXRlXG4vLyBTbyB0aGF0IGNhc2NhZGluZyBzdHlsZXMgd2lsbCB3b3JrIGNvcnJlY3RseSBvbiB0aGUgUElFIGVsZW1lbnQuXG5AbWl4aW4gcGllLXdhdGNoLWFuY2VzdG9ycygkbikge1xuICAtcGllLXdhdGNoLWFuY2VzdG9yczogJG47IH1cbiIsCgkJIi8vIFVzZXIgSW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGhpcyBmaWxlIGNhbiBiZSBleHBhbmRlZCB0byBoYW5kbGUgYWxsIHRoZSB1c2VyIGludGVyZmFjZSBwcm9wZXJ0aWVzIGFzXG4vLyB0aGV5IGJlY29tZSBhdmFpbGFibGUgaW4gYnJvd3NlcnM6XG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1dELWNzczMtdXNlcmludC0yMDAwMDIxNlxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGlzIHByb3BlcnR5IGNvbnRyb2xzIHRoZSBzZWxlY3Rpb24gbW9kZWwgYW5kIGdyYW51bGFyaXR5IG9mIGFuIGVsZW1lbnQuXG4vL1xuLy8gQHBhcmFtICRzZWxlY3Rcbi8vICAgWyBub25lIHwgdGV4dCB8IHRvZ2dsZSB8IGVsZW1lbnQgfCBlbGVtZW50cyB8IGFsbCB8IGluaGVyaXQgXVxuQG1peGluIHVzZXItc2VsZWN0KCRzZWxlY3QpIHtcbiAgJHNlbGVjdDogdW5xdW90ZSgkc2VsZWN0KTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHVzZXItc2VsZWN0LCAkc2VsZWN0LCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGlzIGlzIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIGZvciBhbGwgdGhlIG90aGVyIG1peGlucyBpbiB0aGlzIG1vZHVsZS5cbi8vIEl0IGlzIHRoZSBvbmx5IHdheSB0byBhY2Nlc3MgcHJlZml4IHN1cHBvcnQgZm9yIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBzcGVjLlxuLy8gRGV2aWF0ZXMgZnJvbSBjYW5vbmljYWwgQ29tcGFzcyBpbXBsZW1lbnRhdGlvbiBieSBkcm9wcGluZyBzdXBwb3J0IGZvclxuLy8gb2xkZXIgdmVyc2lvbnMgb2YgdGhlIEZsZXhib3ggc3BlYy5cbi8vXG4vLyBgJHByb3BlcnRpZXNgOiBtYXAgb2YgcHJvcGVydHktdmFsdWUgcGFpcnMgdGhhdCBzaG91bGQgYmUgcHJlZml4ZWRcbkBtaXhpbiBmbGV4Ym94KCRwcm9wZXJ0aWVzKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiAkcHJvcCA9PSBkaXNwbGF5IHtcbiAgICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbC12YWx1ZShkaXNwbGF5LCAkdmFsdWUsIG5vdCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCgkcHJvcCwgJHZhbHVlLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH0gfSB9XG5cbi8vIFZhbHVlcyBmb3IgJGRpc3BsYXkgYXJlOiBmbGV4IChkZWZhdWx0KSwgaW5saW5lLWZsZXhcbkBtaXhpbiBkaXNwbGF5LWZsZXgoJGRpc3BsYXk6IGZsZXgpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZGlzcGxheTogJGRpc3BsYXkpKTsgfVxuXG4vLyBWYWx1ZXM6IHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2VcbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkZGlyZWN0aW9uKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uKSk7IH1cblxuLy8gVmFsdWVzOiBub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlXG5AbWl4aW4gZmxleC13cmFwKCR3cmFwKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtd3JhcDogJHdyYXApKTsgfVxuXG4vLyBTaG9ydGhhbmQgZm9yIGZsZXgtZGlyZWN0aW9uIGFuZCBmbGV4LXdyYXAuXG5AbWl4aW4gZmxleC1mbG93KCRmbG93KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtZmxvdzogJGZsb3cpKTsgfVxuXG4vLyBBY2NlcHRzIGFuIGludGVnZXJcbkBtaXhpbiBvcmRlcigkb3JkZXIpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgob3JkZXI6ICRvcmRlcikpOyB9XG5cbi8vIFNob3J0aGFuZCBmb3IgZmxleC1ncm93LCBmbGV4LXNocmluayBhbmQgb3B0aW9uYWxseSBmbGV4LWJhc2lzLlxuLy8gU3BhY2Ugc2VwYXJhdGVkLCBpbiB0aGF0IG9yZGVyLlxuQG1peGluIGZsZXgoJGZsZXgpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleDogJGZsZXgpKTsgfVxuXG4vLyBBY2NlcHRzIGEgbnVtYmVyLlxuQG1peGluIGZsZXgtZ3JvdygkZmxleC1ncm93KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtZ3JvdzogJGZsZXgtZ3JvdykpOyB9XG5cbi8vIEFjY2VwdHMgYSBudW1iZXIuXG5AbWl4aW4gZmxleC1zaHJpbmsoJGZsZXgtc2hyaW5rKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtc2hyaW5rOiAkZmxleC1zaHJpbmspKTsgfVxuXG4vLyBBY2NlcHRzIGFueSBsZWdhbCB2YWx1ZSBmb3IgdGhlIHdpZHRoIHByb3BlcnR5LlxuQG1peGluIGZsZXgtYmFzaXMoJGZsZXgtYmFzaXMpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1iYXNpczogJGZsZXgtYmFzaXMpKTsgfVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmRcbkBtaXhpbiBqdXN0aWZ5LWNvbnRlbnQoJGp1c3RpZnktY29udGVudCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChqdXN0aWZ5LWNvbnRlbnQ6ICRqdXN0aWZ5LWNvbnRlbnQpKTsgfVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaFxuQG1peGluIGFsaWduLWl0ZW1zKCRhbGlnbi1pdGVtcykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChhbGlnbi1pdGVtczogJGFsaWduLWl0ZW1zKSk7IH1cblxuLy8gTGVnYWwgdmFsdWVzOiBhdXRvIHwgZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoXG5AbWl4aW4gYWxpZ24tc2VsZigkYWxpZ24tc2VsZikge1xuICBAaW5jbHVkZSBmbGV4Ym94KChhbGlnbi1zZWxmOiAkYWxpZ24tc2VsZikpOyB9XG5cbi8vIExlZ2FsIHZhbHVlczogZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1jb250ZW50KCRhbGlnbi1jb250ZW50KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGFsaWduLWNvbnRlbnQ6ICRhbGlnbi1jb250ZW50KSk7IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIuYm91bmNlLWRvd24ge1xuICBhbmltYXRpb24tbmFtZTogYm91bmNlRG93bjtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi1kZWxheTogMXM7IH1cblxuLmZhZGUtaW4ge1xuICBhbmltYXRpb246IGZhZGVJbjtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjI1cztcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47XG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7IH1cblxuLmZhZGUtaW4tdG9wIHtcbiAgYW5pbWF0aW9uOiBmYWRlSW47XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMC4yNXM7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOyB9XG5cbi5pcy1leGl0aW5nIHtcbiAgLmZhZGUtaW4ge1xuICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IGFsdGVybmF0ZS1yZXZlcnNlOyB9IH1cblxuQGluY2x1ZGUga2V5ZnJhbWVzKGxvYWRpbmcpIHtcbiAgMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogMDsgfVxuICAxMDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IDMwMHB4OyB9IH1cblxuQGluY2x1ZGUga2V5ZnJhbWVzKGJvdW5jZURvd24pIHtcbiAgMCUsIDIwJSwgNTAlLCA4MCUsIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDApKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDAuNSk7IH1cbiAgNDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgyMHB4KSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfVxuICA2MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDEwcHgpKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9IH1cblxuQGluY2x1ZGUga2V5ZnJhbWVzKHNsaWRlRnJvbUJvdHRvbUZ1bGwpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDY1dmgpKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgwKSk7IH0gfVxuXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZUluKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDApOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMSk7IH0gfVxuXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZUluVG9wKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDApO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDIwcHgpKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDApKTsgfSB9XG5cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlSW5MZWZ0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDApO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKDUwcHgpKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDApKTsgfSB9XG5cbkBpbmNsdWRlIGtleWZyYW1lcyhzbGlkZUluVG9wQmlnKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDApO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDYwcHgpKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDApKTsgfSB9XG5cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlT3V0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMCk7IH0gfVxuXG5AaW5jbHVkZSBrZXlmcmFtZXMoYmxpbmspIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMSk7IH1cbiAgNTAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDApOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMSk7IH0gfVxuXG5AaW5jbHVkZSBrZXlmcmFtZXMocm90YXRlKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlKDBkZWcpKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlKDM2MGRlZykpOyB9IH1cbiIsCgkJIkBtaXhpbiBicmVha3BvaW50KCRwb2ludCkge1xuICBAaWYgJHBvaW50ID09IHNtYWxsc2NyZWVuIHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTEwMHB4KSB7XG4gICAgICBAY29udGVudDsgfSB9XG4gIEBpZiAkcG9pbnQgPT0gZXh0cmFzbWFsbHNjcmVlbiB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDExMDBweCkge1xuICAgICAgQGNvbnRlbnQ7IH0gfVxuICBAaWYgJHBvaW50ID09IGhlYWRlciB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDk4NnB4KSB7XG4gICAgICBAY29udGVudDsgfSB9XG4gIEBpZiAkcG9pbnQgPT0gdGFibGV0IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogODUwcHgpIHtcbiAgICAgIEBjb250ZW50OyB9IH1cbiAgQGVsc2UgaWYgJHBvaW50ID09IG1vYmlsZSB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICBAY29udGVudDsgfSB9IH1cblxuQG1peGluIGJyZWFrcG9pbnQtbWluKCRwb2ludCkge1xuICBAaWYgJHBvaW50ID09IHNtYWxsc2NyZWVuIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMTEwMHB4KSB7XG4gICAgICBAY29udGVudDsgfSB9XG4gIEBpZiAkcG9pbnQgPT0gZXh0cmFzbWFsbHNjcmVlbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDExMDBweCkge1xuICAgICAgQGNvbnRlbnQ7IH0gfVxuICBAaWYgJHBvaW50ID09IHRhYmxldCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDg1MHB4KSB7XG4gICAgICBAY29udGVudDsgfSB9XG4gIEBlbHNlIGlmICRwb2ludCA9PSBtb2JpbGUge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkge1xuICAgICAgQGNvbnRlbnQ7IH0gfSB9XG4iLAoJCSJAbWl4aW4gbGluZS10aHJvdWdoKCRib3JkZXItY29sb3IsICRib3JkZXItb3BhY2l0eTogMSkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRib3JkZXItY29sb3I7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KCRib3JkZXItb3BhY2l0eSk7IH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6IDAuNWVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtNTAlOyB9XG5cbiAgJjphZnRlciB7XG4gICAgbGVmdDogMC41ZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlOyB9IH1cbiIsCgkJIkBmdW5jdGlvbiB0b1JlbSgkbnVtKSB7XG4gIEByZXR1cm4gKCRudW0gLyAxNikrcmVtOyB9XG5cbiRicmVhay10YWJsZXQ6IDk1MHB4O1xuJGJyZWFrLWhlYWRlcjogOTg2cHg7XG4kYnJlYWstbW9iaWxlOiA1NTBweDtcblxuJHdoaXRlOiAjZmZmZmZmO1xuJGJsYWNrOiAjMDAwMDAwO1xuXG4vLyBHcmV5XG4kZ3JleS01MDogI2ZhZmFmYTtcbiRncmV5LTEwMDogI0UxRTFFMTtcbiRncmV5LTIwMDogI0M4QzhDODtcbiRncmV5LTMwMDogI0FGQUZBRjtcbiRncmV5LTQwMDogIzk2OTY5NjtcbiRncmV5LTUwMDogIzczNzM3MztcbiRncmV5LTYwMDogIzRDNEM0QztcbiRncmV5LTcwMDogIzJCMkIyQjtcbiRncmV5LTgwMDogIzFCMUIxQjtcbiRncmV5LTkwMDogIzExMTExMTtcblxuLy8gQmVpZ2VcblxuJGJlaWdlLTEwMDogI0Y2RjNFRjtcbiRiZWlnZS0yMDA6ICNFRkVBRTQ7XG4kYmVpZ2UtNTAwOiAjRDZEMkNDO1xuJGJlaWdlLTcwMDogIzhGOEM4ODtcbiRiZWlnZS04MDA6ICM2QjY5NjY7XG4kYmVpZ2UtOTAwOiAjNDc0NTQzO1xuJGJlaWdlOiAkYmVpZ2UtMjAwO1xuXG4vLyBQcmltYXJ5XG5cbiRjb2xvci1wcmltYXJ5LTUwOiAjZWJmZGY2O1xuJGNvbG9yLXByaW1hcnktMTAwOiAjRkZGOEQ5O1xuJGNvbG9yLXByaW1hcnktMjAwOiAjRkZFMTY2O1xuJGNvbG9yLXByaW1hcnktNTAwOiAjRkZDRDAwOyAvLyBNYWluXG4kY29sb3ItcHJpbWFyeS03MDA6ICNFNUI4MDA7XG4kY29sb3ItcHJpbWFyeS04MDA6ICM3MzVDMDA7XG4kY29sb3ItcHJpbWFyeS05MDA6ICM0QzNEMDA7XG5cbi8vIFN1Y2Nlc3NcblxuJGNvbG9yLXN1Y2Nlc3MtMTAwOiAjRTNGMEVDO1xuJGNvbG9yLXN1Y2Nlc3MtMjAwOiAjMDBBNzcyO1xuJGNvbG9yLXN1Y2Nlc3MtNTAwOiAjMDA4NzVDO1xuXG4vLyBEYW5nZXJcblxuJGNvbG9yLWRhbmdlci0xMDA6ICNGRkU3RTc7XG4kY29sb3ItZGFuZ2VyLTIwMDogI0Q4N0M2RTtcbiRjb2xvci1kYW5nZXItNTAwOiAjQ0U1OTQ3O1xuJGNvbG9yLWRhbmdlci03MDA6ICNBRjQ2MzY7XG5cbi8vIEluZm9cbiRjb2xvci1pbmZvLTEwMDogI0VERjNGRTtcbiRjb2xvci1pbmZvLTIwMDogIzRiOWJmMTtcbiRjb2xvci1pbmZvLTMwMDogIzNFN0JENztcbiRjb2xvci1pbmZvLTUwMDogIzEwNmRkMTtcbiRjb2xvci1pbmZvLTYwMDogIzFCNTdCMjtcblxuLy8gV2FybmluZ1xuXG4kY29sb3Itd2FybmluZy0xMDA6ICNGRkYyREM7XG4kY29sb3Itd2FybmluZy0yMDA6ICNFQkM0ODQ7XG4kY29sb3Itd2FybmluZy01MDA6ICNFNEFFNTY7XG4kY29sb3Itd2FybmluZy03MDA6ICNCOTdGMjI7XG5cbi8vIFN1YlxuJGNvbG9yLXN1Yi0xOiAjM0ZEMUMxO1xuJGNvbG9yLXN1Yi0yOiAjNEFCNTE5O1xuJGNvbG9yLXN1Yi0zOiAjRUE3MjRDO1xuJGNvbG9yLXN1Yi00OiAjRjBBQUJGO1xuJGNvbG9yLXN1Yi01OiAjOTY1RkU2O1xuJGNvbG9yLXN1Yi02OiAjRjRDRjcwO1xuXG4kY29sb3ItYmFja2dyb3VuZDogJGJlaWdlLTEwMDtcblxuJGNvbG9yLXdvbWVuLTE6ICNGRkU3RTc7XG4kY29sb3Itd29tZW4tMjogI0Q4N0M2RTtcbiRjb2xvci1tZW4tMTogI0VERjNGRTtcbiRjb2xvci1tZW4tMjogIzRCOUJGMTtcblxuLy8gUHJvdmlkZXJzXG4kcHJvdmlkZXJzOiBsaW5rZWRpbiBnaXRodWIgc3RhY2tvdmVyZmxvdyBkcmliYmJsZSBiZWhhbmNlO1xuJGNvbG9yLWxpbmtlZGluOiAjMDA3N2I1O1xuJGNvbG9yLWdpdGh1YjogIzMzMzMzMztcbiRjb2xvci1zdGFja292ZXJmbG93OiAjRTA3RTA4O1xuJGNvbG9yLWRyaWJiYmxlOiAjYzgxZDYwO1xuJGNvbG9yLWJlaGFuY2U6ICMyYjJiMmI7XG5cbi8vIFBhY2thZ2VzXG4kY29sb3ItcGFja2FnZS1zb3VyY2luZzE6ICNCQTdGRUI7XG4kY29sb3ItcGFja2FnZS1zb3VyY2luZzI6ICM0NzZGQzI7XG5cbiR0aGVtZS1jb2xvcnM6IChwcmltYXJ5OiAkY29sb3ItcHJpbWFyeS01MDAsIGRhbmdlcjogJGNvbG9yLWRhbmdlci01MDApO1xuJGJvZHktY29sb3I6ICRncmV5LTUwMDtcblxuLy8gRm9udCBmYW1pbGllc1xuJGZvbnQtbWFpbjogJ3dlbGNvbWUtZm9udCcsIHNhbnMtc2VyaWY7XG4kZm9udC10aXRsZXM6ICd3ZWxjb21lLWZvbnQnLCBzYW5zLXNlcmlmO1xuJGZvbnQtdGV4dHM6ICdXb3JrIFNhbnMnLCBzYW5zLXNlcmlmO1xuJGZvbnQtaWNvbnM6ICd3ZWxjb21lLWljb24tZm9udCcsIHNhbnMtc2VyaWY7XG5cbi8vIEZvbnQgd2VpZ2h0c1xuJGZ3LXJlZ3VsYXI6ICAgNDAwO1xuJGZ3LW1lZGl1bTogICAgNTAwO1xuJGZ3LXNlbWlib2xkOiAgNjAwO1xuJGZ3LWJvbGQ6ICAgICAgNzAwO1xuJGZ3LWJsYWNrOiAgICAgODAwO1xuXG4vLyBGb250IHNpemVzXG4kZnMteHhzOiB0b1JlbSgxMSk7XG4kZnMteHM6IHRvUmVtKDEyKTtcbiRmcy1zbTogdG9SZW0oMTQpO1xuJGZzOiB0b1JlbSgxNik7XG4kZnMtbGc6IHRvUmVtKDI0KTtcbiRmcy14bDogdG9SZW0oMzIpO1xuJGZzLXh4bDogdG9SZW0oNDgpO1xuJGZzLXh4eGw6IHRvUmVtKDcyKTtcbiRmcy1idXR0b25zOiB0b1JlbSgxNik7XG4kZnMtYnV0dG9ucy1zbTogdG9SZW0oMTQpO1xuJGZzLWgxOiB0b1JlbSg0NSk7XG4kZnMtaDI6IHRvUmVtKDM2KTtcbiRmcy1oMzogdG9SZW0oMTUpO1xuJGZzLXRleHRzOiB0b1JlbSgxNSk7XG5cbi8vIEZvbnQgY29sb3JzXG4kZmM6ICRibGFjaztcbiRmYy1saWdodDogcmdiYSgkYmxhY2ssIC43KTtcbiRmYy14bGlnaHQ6IHJnYmEoJGJsYWNrLCAuNTUpO1xuJGZjLXh4bGlnaHQ6IHJnYmEoJGJsYWNrLCAuNCk7XG5cbi8vIEJvcmRlcnNcbiRyYWRpdXMtc206IDJweDtcbiRyYWRpdXM6IDRweDtcbiRyYWRpdXMtbGc6IDhweDtcbiRib3JkZXItY29sb3I6ICNlMGUwZTA7XG5cbi8vIFRyYW5zaXRpb25zXG4kdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlO1xuJHRyYW5zaXRpb24tbGc6IGFsbCAuNXMgZWFzZTtcbiR0cmFuc2l0aW9uLWxpbmVhcjogYWxsIC4ycyBsaW5lYXI7XG5cbi8vIEJ1dHRvbnNcbiRidG4taGVpZ2h0LWxnOiB0b1JlbSg0OCk7XG4kYnRuLWhlaWdodC1tZDogdG9SZW0oNDApO1xuJGJ0bi1oZWlnaHQtc206IHRvUmVtKDMyKTtcbiRidG4taGVpZ2h0OiAkYnRuLWhlaWdodC1tZDtcblxuLy8gR3V0dGVyc1xuJGd1dHRlci14eHM6IHRvUmVtKDUpO1xuJGd1dHRlci14czogdG9SZW0oMTApO1xuJGd1dHRlci1zbTogdG9SZW0oMTYpO1xuJGd1dHRlcjogdG9SZW0oMjQpO1xuJGd1dHRlci1sZzogdG9SZW0oMjgpO1xuJGd1dHRlci14bDogdG9SZW0oNTApO1xuJGd1dHRlci14eGw6IHRvUmVtKDcwKTtcblxuLy8gU2l6aW5nXG4kZmllbGQtd2lkdGg6IHRvUmVtKDQwMCk7XG4kZmllbGQtaGVpZ2h0OiB0b1JlbSg0MCk7XG4kZmllbGQtaGVpZ2h0LXNtOiB0b1JlbSgzNCk7XG5cbi8vIExldHRlciBzcGFjaW5nc1xuJGxldHRlci1zcGFjaW5nLWh0bWw6IC0wLjAxODc1cmVtO1xuJGxldHRlci1zcGFjaW5nLWgwOiAtMC4xMDYyNXJlbTtcbiRsZXR0ZXItc3BhY2luZy1oMTogLTAuMDc1cmVtO1xuJGxldHRlci1zcGFjaW5nLWgyOiAtMC4wNjI1cmVtO1xuJGxldHRlci1zcGFjaW5nLWgzOiAtMC4wNTYyNXJlbTtcbiRsZXR0ZXItc3BhY2luZy1oNDogLTAuMDM3NXJlbTtcbiRsZXR0ZXItc3BhY2luZy1oNTogLTAuMDMxMjVyZW07XG4kbGV0dGVyLXNwYWNpbmctaDY6IC0wLjAyNXJlbTtcbiRsZXR0ZXItc3BhY2luZy1ib2R5MTogLTAuMDE4NzVyZW07XG4kbGV0dGVyLXNwYWNpbmctYm9keTI6IC0wLjAxODc1cmVtO1xuJGxldHRlci1zcGFjaW5nLWJvZHkzOiAtMC4wMTg3NXJlbTtcbiRsZXR0ZXItc3BhY2luZy1ib2R5NDogLTAuMDEyNXJlbTtcbiRsZXR0ZXItc3BhY2luZy1zdWJ0aXRsZTE6IC0wLjAxODc1cmVtO1xuJGxldHRlci1zcGFjaW5nLXN1YnRpdGxlMjogLTAuMDEyNXJlbTtcbiRsZXR0ZXItc3BhY2luZy1tZXRhMTogLTAuMDE4NzVyZW07XG4kbGV0dGVyLXNwYWNpbmctbWV0YTI6IC0wLjAxMjVyZW07XG4kbGV0dGVyLXNwYWNpbmc6ICRsZXR0ZXItc3BhY2luZy1odG1sO1xuXG4kY29udGFpbmVyLXdpZHRoOiB0b1JlbSg5MDApO1xuJGNvbnRhaW5lci1sYXJnZS13aWR0aDogdG9SZW0oMTIwMCk7XG4iLAoJCSIuYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoaW5saW5lLWZsZXgpO1xuICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoY2VudGVyKTtcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogJGJ0bi1oZWlnaHQtbWQ7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC10ZXh0cztcbiAgZm9udC13ZWlnaHQ6ICRmdy1zZW1pYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6ICRmcy1zbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIHBhZGRpbmc6IDAgdG9SZW0oMTUpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgY29sb3I6ICRibGFjaztcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnktNTAwO1xuICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItcHJpbWFyeS01MDA7XG4gIGNvbG9yOiAkYmxhY2s7XG4gIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICBAaW5jbHVkZSBhcHBlYXJhbmNlKG5vbmUpO1xuXG4gICY6aG92ZXIsICYuaG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5LTIwMDtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5LTIwMDsgfVxuXG4gICY6YWN0aXZlLCAmLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnktNzAwO1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnktNzAwOyB9XG5cbiAgJi5idG4tYmxvY2sge1xuICAgIHdpZHRoOiAxMDAlOyB9XG5cbiAgJi5idG4tcHJpbWFyeSwgJi5idG4teWVsbG93IHtcbiAgICBjb2xvcjogJGJsYWNrO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDtcblxuICAgICY6aG92ZXIsICYuaG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnktMjAwO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeS0yMDA7IH1cblxuICAgICY6YWN0aXZlLCAmLmFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeS03MDA7XG4gICAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5LTcwMDsgfSB9XG5cbiAgJi5idG4tc2Vjb25kYXJ5LCAmLmJ0bi1ibGFjayB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrO1xuICAgIGJvcmRlci1jb2xvcjogJGJsYWNrO1xuICAgIGNvbG9yOiAkd2hpdGU7XG5cbiAgICAmOmhvdmVyLCAmLmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5LTcwMDtcbiAgICAgIGJvcmRlci1jb2xvcjogJGdyZXktNzAwOyB9XG5cbiAgICAmOmFjdGl2ZSwgJi5hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXktNjAwO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkZ3JleS02MDA7IH1cblxuICAgICYuYnRuLW91dGxpbmUge1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIGNvbG9yOiAkYmxhY2s7XG5cbiAgICAgICY6aG92ZXIsICYuaG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgLjA1KTsgfVxuXG4gICAgICAmOmFjdGl2ZSwgJi5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgLjIpOyB9IH0gfVxuXG4gICYuYnRuLXRlcnRpYXJ5LCAmLmJ0bi13aGl0ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGJvcmRlci1jb2xvcjogJHdoaXRlO1xuICAgIGNvbG9yOiAkYmxhY2s7XG5cbiAgICAmOmhvdmVyLCAmLmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5LTEwMDtcbiAgICAgIGJvcmRlci1jb2xvcjogJGdyZXktMTAwOyB9XG5cbiAgICAmOmFjdGl2ZSwgJi5hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXktMjAwO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkZ3JleS0yMDA7IH1cblxuICAgICYuYnRuLW91dGxpbmUge1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIGNvbG9yOiAkd2hpdGU7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgLjEpOyB9XG5cbiAgICAgICY6YWN0aXZlLCAmLmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAuNCk7IH0gfSB9XG5cbiAgJi5idG4tZGFuZ2VyLCAmLmJ0bi1yZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1kYW5nZXItNTAwO1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWRhbmdlci01MDA7XG4gICAgY29sb3I6ICR3aGl0ZTtcblxuICAgICY6aG92ZXIsICYuaG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWRhbmdlci0yMDA7XG4gICAgICBib3JkZXItY29sb3I6ICRjb2xvci1kYW5nZXItMjAwOyB9XG5cbiAgICAmOmFjdGl2ZSwgJi5hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWRhbmdlci03MDA7XG4gICAgICBib3JkZXItY29sb3I6ICRjb2xvci1kYW5nZXItNzAwOyB9XG5cbiAgICAmLmJ0bi1vdXRsaW5lIHtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBjb2xvcjogJGNvbG9yLWRhbmdlci01MDA7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1kYW5nZXItMjAwOyB9XG5cbiAgICAgICY6YWN0aXZlLCAmLmFjdGl2ZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWRhbmdlci03MDA7IH0gfSB9XG5cbiAgJi5idG4td2FybmluZywgJi5idG4tb3JhbmdlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2FybmluZy01MDA7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3Itd2FybmluZy01MDA7XG4gICAgY29sb3I6ICR3aGl0ZTtcblxuICAgICY6aG92ZXIsICYuaG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdhcm5pbmctMjAwO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3Itd2FybmluZy0yMDA7IH1cblxuICAgICY6YWN0aXZlLCAmLmFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2FybmluZy03MDA7XG4gICAgICBib3JkZXItY29sb3I6ICRjb2xvci13YXJuaW5nLTcwMDsgfVxuXG4gICAgJi5idG4tb3V0bGluZSB7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgY29sb3I6ICRjb2xvci13YXJuaW5nLTUwMDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXdhcm5pbmctMjAwOyB9XG5cbiAgICAgICY6YWN0aXZlLCAmLmFjdGl2ZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXdhcm5pbmctNzAwOyB9IH0gfVxuXG4gICYuYnRuLWxnLCAmLmJ0bi1sYXJnZSwgJi5idG4tYmlnIHtcbiAgICBmb250LXNpemU6ICRmcztcbiAgICBwYWRkaW5nOiAwIHRvUmVtKDIwKTtcbiAgICBoZWlnaHQ6ICRidG4taGVpZ2h0LWxnO1xuXG4gICAgaSB7XG4gICAgICBmb250LXNpemU6IHRvUmVtKDEwKTsgfSB9XG5cbiAgJi5idG4tc20sICYuYnRuLXNtYWxsLCAmLmJ0bi14cyB7XG4gICAgZm9udC1zaXplOiAkZnMtc207XG4gICAgcGFkZGluZzogMCB0b1JlbSgxNyk7IH1cblxuICAmLmJ0bi1zbSwgJi5idG4tc21hbGwge1xuICAgIGhlaWdodDogdG9SZW0oNDApOyB9XG5cbiAgJi5idG4teHMge1xuICAgIGhlaWdodDogJGJ0bi1oZWlnaHQtc207XG5cbiAgICBpIHtcbiAgICAgIGZvbnQtc2l6ZTogdG9SZW0oMTIpOyB9IH1cblxuICAmLmRpc2FibGVkLFxuICAmLmJ0bi1kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCxcbiAgJi5pbmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJlaWdlLTUwMDtcbiAgICBib3JkZXItY29sb3I6ICRiZWlnZS01MDA7XG4gICAgY29sb3I6ICRiZWlnZS03MDA7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDsgfVxuXG4gIGkge1xuICAgIEBpbmNsdWRlIGFsaWduLXNlbGYoY2VudGVyKTtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBmb250LXNpemU6ICRmcy14cztcbiAgICBtYXJnaW4tcmlnaHQ6ICRndXR0ZXIteHhzO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuICBzcGFuICsgaSB7XG4gICAgbWFyZ2luOiAwIDAgMCAkZ3V0dGVyLXh4czsgfVxuXG4gIHNwYW4ge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgfVxuXG4gICYuYnRuLWljb24ge1xuICAgIGksIHNwYW4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgZm9udC1zaXplOiAkZnM7IH0gfSB9XG5cbi5idG4tbWFyZ2luLXJpZ2h0IHtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4OyB9XG5cbi5idG4tbWFyZ2luLWxlZnQge1xuICBtYXJnaW4tbGVmdDogMTBweDsgfVxuXG4uYnRuLWxvYWRlciB7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAmLCAmW2NsYXNzXj1cInd1aS1pY29uLVwiXSB7XG4gICAgZm9udC1zaXplOiAyM3B4O1xuICAgIGNvbG9yOiAkZ3JleS01MDA7IH0gfVxuXG4uYnRuLWxpbmsge1xuICBwYWRkaW5nOiA2cHggOHB4O1xuICAmLCAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDApOyB9XG4gIHNwYW4ge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKCR3aGl0ZSwgMC41KTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJvcmRlci1jb2xvciAwLjNzKTsgfVxuICAmOmhvdmVyIHtcbiAgICBzcGFuIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJHdoaXRlOyB9IH0gfVxuXG4uYnRuLXNvY2lhbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy10b3A6IDA7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgcGFkZGluZy1ib3R0b206IDA7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDJweCk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZC1jb2xvciAwLjNzKTtcbiAgaSB7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjIpOyB9XG4gIGksIHNwYW4ge1xuICAgIHBhZGRpbmc6IDIwcHg7IH0gfVxuXG4uYnRuIHtcbiAgJi5idG4tbGlua2VkaW4ge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1saW5rZWRpbjtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHNjYWxlLWxpZ2h0bmVzcygkY29sb3ItbGlua2VkaW4sIC0xNSUpOyB9XG4gICAgJjphY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogc2NhbGUtbGlnaHRuZXNzKCRjb2xvci1saW5rZWRpbiwgLTIwJSk7IH0gfVxuXG4gICYuYnRuLWdpdGh1YiB7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWdpdGh1YjtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHNjYWxlLWxpZ2h0bmVzcygkY29sb3ItZ2l0aHViLCAtMTUlKTsgfVxuICAgICY6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHNjYWxlLWxpZ2h0bmVzcygkY29sb3ItZ2l0aHViLCAtMjAlKTsgfSB9XG5cbiAgJi5idG4tc3RhY2tvdmVyZmxvdyB7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yLXN0YWNrb3ZlcmZsb3c7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLXN0YWNrb3ZlcmZsb3csIC0xNSUpOyB9XG4gICAgJjphY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogc2NhbGUtbGlnaHRuZXNzKCRjb2xvci1zdGFja292ZXJmbG93LCAtMjAlKTsgfSB9XG5cbiAgJi5idG4tZHJpYmJibGUge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1kcmliYmJsZTtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHNjYWxlLWxpZ2h0bmVzcygkY29sb3ItZHJpYmJibGUsIC0xNSUpOyB9XG4gICAgJjphY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogc2NhbGUtbGlnaHRuZXNzKCRjb2xvci1kcmliYmJsZSwgLTIwJSk7IH0gfVxuXG4gICYuYnRuLWJlaGFuY2Uge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1iZWhhbmNlO1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogc2NhbGUtbGlnaHRuZXNzKCRjb2xvci1iZWhhbmNlLCAtMTUlKTsgfVxuICAgICY6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHNjYWxlLWxpZ2h0bmVzcygkY29sb3ItYmVoYW5jZSwgLTIwJSk7IH0gfSB9XG4iLAoJCSIuZmxleC1jb250YWluZXIge1xuICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgQGluY2x1ZGUgYWxpZ24taXRlbXMoZmxleC1zdGFydCk7XG5cbiAgJi5zdHJldGNoIHtcbiAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhzdHJldGNoKTsgfSB9XG5cbi5ncmlkIHtcbiAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gIEBpbmNsdWRlIGZsZXgtd3JhcCh3cmFwKTtcblxuICAuY29sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA1IHtcbiAgICAmLndpdGgtI3skaX0tY29sdW1ucyB7XG4gICAgICA+IC5jb2wge1xuICAgICAgICBAaW5jbHVkZSBmbGV4KDAgMCBhdXRvKTtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvICN7JGl9KTsgfVxuXG4gICAgICA+IC5jb2wtZnVsbCB7XG4gICAgICAgIHdpZHRoOiAxMDAlOyB9XG5cbiAgICAgID4gLmNvbC1kb3VibGUge1xuICAgICAgICB3aWR0aDogY2FsYygyMDAlIC8gI3skaX0pOyB9XG5cbiAgICAgICYud2l0aC1zZXBhcmF0b3Ige1xuICAgICAgICA+IC5jb2w6bnRoLWNoaWxkKCN7JGl9bikge1xuICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7IH0gfVxuXG4gICAgICAgID4gLmNvbDpudGgtY2hpbGQoI3skaX1uKzEpIHtcbiAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKiAjeyRpfSk7XG4gICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRibGFjaztcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiIFwiOyB9IH1cblxuICAgICAgICA+IC5jb2w6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lOyB9IH0gfSB9IH1cblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDUge1xuICAgICYud2l0aC0jeyRpfS1jb2x1bW5zLXRhYmxldCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KHRhYmxldCkge1xuICAgICAgICA+IC5jb2wge1xuICAgICAgICAgIEBpbmNsdWRlIGZsZXgoMCAwIGF1dG8pO1xuICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAjeyRpfSk7IH1cbiAgICAgICAgPiAuY29sLWRvdWJsZSB7XG4gICAgICAgICAgd2lkdGg6IGNhbGMoMjAwJSAvICN7JGl9KTsgfVxuICAgICAgICA+IC5jb2wtZnVsbCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7IH0gfSB9IH1cblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDUge1xuICAgICYud2l0aC0jeyRpfS1jb2x1bW5zLW1vYmlsZSB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZSkge1xuICAgICAgICA+IC5jb2wge1xuICAgICAgICAgIEBpbmNsdWRlIGZsZXgoMCAwIGF1dG8pO1xuICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAjeyRpfSk7IH1cblxuICAgICAgICA+IC5jb2wtZG91YmxlIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygyMDAlIC8gI3skaX0pOyB9XG4gICAgICAgID4gLmNvbC1mdWxsIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTsgfVxuXG4gICAgICAgICYud2l0aC1ndXR0ZXIsICYud2l0aC1ndXR0ZXItbGcge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtI3skZ3V0dGVyfSAhaW1wb3J0YW50O1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogLSN7JGd1dHRlcn0gIWltcG9ydGFudDtcblxuICAgICAgICAgID4gLmNvbCB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRndXR0ZXIgIWltcG9ydGFudDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRndXR0ZXIgIWltcG9ydGFudDsgfSB9XG5cbiAgICAgICAgJi53aXRoLXNlcGFyYXRvciB7XG4gICAgICAgICAgPiAuY29sOm50aC1jaGlsZCgjeyRpfW4pIHtcbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgb3BhY2l0eTogMDsgfSB9XG5cbiAgICAgICAgICA+IC5jb2w6bnRoLWNoaWxkKCN7JGl9bisxKSB7XG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgbGVmdDogJGd1dHRlcjtcbiAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgKiAjeyRpfSkgLSAoI3skZ3V0dGVyfSAqIDIpKTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRibGFjaztcbiAgICAgICAgICAgICAgY29udGVudDogXCIgXCI7IH0gfVxuXG4gICAgICAgICAgPiAuY29sOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfSB9IH0gfSB9XG5cbiAgJi53aXRoLWd1dHRlciB7XG4gICAgbWFyZ2luOiAtI3skZ3V0dGVyfTtcblxuICAgICYgPiAuY29sIHtcbiAgICAgIHBhZGRpbmc6ICRndXR0ZXI7IH1cblxuICAgICYud2l0aC1zZXBhcmF0b3Ige1xuICAgICAgJiA+IC5jb2w6OmFmdGVyIHtcbiAgICAgICAgdG9wOiAkZ3V0dGVyO1xuICAgICAgICBib3R0b206ICRndXR0ZXI7IH0gfSB9XG5cbiAgJi53aXRoLWd1dHRlci1zbSB7XG4gICAgbWFyZ2luOiAtI3skZ3V0dGVyLXNtfSB7XG4gICAgICBib3R0b206IDA7IH1cblxuICAgICYgPiAuY29sIHtcbiAgICAgIHBhZGRpbmc6ICRndXR0ZXItc207IH1cblxuICAgICYud2l0aC1zZXBhcmF0b3Ige1xuICAgICAgJiA+IC5jb2w6OmFmdGVyIHtcbiAgICAgICAgdG9wOiAkZ3V0dGVyLXNtO1xuICAgICAgICBib3R0b206ICRndXR0ZXItc207IH0gfSB9XG5cbiAgJi53aXRoLWd1dHRlci14cyB7XG4gICAgbWFyZ2luOiAtI3skZ3V0dGVyLXhzfTtcblxuICAgICYgPiAuY29sIHtcbiAgICAgIHBhZGRpbmc6ICRndXR0ZXIteHM7IH1cblxuICAgICYud2l0aC1zZXBhcmF0b3Ige1xuICAgICAgJiA+IC5jb2w6OmFmdGVyIHtcbiAgICAgICAgdG9wOiAkZ3V0dGVyLXhzO1xuICAgICAgICBib3R0b206ICRndXR0ZXIteHM7IH0gfSB9XG5cbiAgJi53aXRoLWd1dHRlci1sZyB7XG4gICAgbWFyZ2luOiAtI3skZ3V0dGVyLWxnfTtcblxuICAgICYgPiAuY29sIHtcbiAgICAgIHBhZGRpbmc6ICRndXR0ZXItbGc7IH1cblxuICAgICYud2l0aC1zZXBhcmF0b3Ige1xuICAgICAgJiA+IC5jb2w6OmFmdGVyIHtcbiAgICAgICAgdG9wOiAkZ3V0dGVyLWxnO1xuICAgICAgICBib3R0b206ICRndXR0ZXItbGc7IH0gfSB9XG5cbiAgJi53aXRoLWd1dHRlci14bCB7XG4gICAgbWFyZ2luOiAtI3skZ3V0dGVyLXhsfTtcblxuICAgICYgPiAuY29sIHtcbiAgICAgIHBhZGRpbmc6ICRndXR0ZXIteGw7IH1cblxuICAgICYud2l0aC1zZXBhcmF0b3Ige1xuICAgICAgJiA+IC5jb2w6OmFmdGVyIHtcbiAgICAgICAgdG9wOiAkZ3V0dGVyLXhsO1xuICAgICAgICBib3R0b206ICRndXR0ZXIteGw7IH0gfSB9XG5cbiAgJi53aXRoLWd1dHRlci14eGwge1xuICAgIG1hcmdpbjogMCAtI3skZ3V0dGVyLXh4bH07XG5cbiAgICAmID4gLmNvbCB7XG4gICAgICBwYWRkaW5nOiAwICRndXR0ZXIteHhsOyB9IH1cblxuICAmLndpdGgtc2VwYXJhdG9yIHtcbiAgICAmID4gLmNvbCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB3aWR0aDogMXB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2s7XG4gICAgICAgIGNvbnRlbnQ6IFwiIFwiOyB9IH0gfVxuXG4gICYuYWxpZ24tY2VudGVyIHtcbiAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpOyB9XG5cbiAgJi53aXRoLWNvbHVtbi1yaWdodCB7XG4gICAgJiA+IC5jb2wge1xuICAgICAgQGluY2x1ZGUgZmxleChub25lKTtcblxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHdpZHRoOiA2NSU7IH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IDM1JTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTsgfSB9IH0gfVxuXG4gICYud2l0aC0xLWNvbHVtbnMtbW9iaWxlIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZSkge1xuICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuXG4gICAgICAmID4gLmNvbCB7XG4gICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH0gfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUpIHtcbiAgICAgICYud2l0aC1ndXR0ZXIge1xuICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgJiA+IC5jb2wge1xuICAgICAgICAgIHBhZGRpbmc6IDAgMCAkZ3V0dGVyLWxnO1xuXG4gICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwOyB9IH0gfVxuXG4gICAgICAmLndpdGgtZ3V0dGVyLWxnIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgICYgPiAuY29sIHtcbiAgICAgICAgICBwYWRkaW5nOiAwIDAgJGd1dHRlcjtcblxuICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsgfSB9IH1cblxuICAgICAgJi53aXRoLWd1dHRlci14bCB7XG4gICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAmID4gLmNvbCB7XG4gICAgICAgICAgcGFkZGluZzogMCAwICRndXR0ZXItbGc7XG5cbiAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7IH0gfSB9XG5cbiAgICAgICYud2l0aC1ndXR0ZXIteHhsIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgICYgPiAuY29sIHtcbiAgICAgICAgICBwYWRkaW5nOiAwIDAgJGd1dHRlci1sZztcblxuICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsgfSB9IH1cblxuICAgICAgJi53aXRoLXNlcGFyYXRvciB7XG4gICAgICAgICYgPiAuY29sIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ3V0dGVyO1xuXG4gICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgdG9wOiBhdXRvO1xuICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDFweDsgfVxuXG4gICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTsgfSB9IH0gfSB9IH1cblxuICAmID4gLmNvbC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87IH0gfVxuXG4uY29sLW1kLTEsIC5jb2wtbWQtMiwgLmNvbC1tZC0zLCAuY29sLW1kLTQsXG4uY29sLW1kLTUsIC5jb2wtbWQtNiwgLmNvbC1tZC03LCAuY29sLW1kLTgsXG4uY29sLW1kLTksIC5jb2wtbWQtMTAsIC5jb2wtbWQtMTEge1xuICBAaW5jbHVkZSBib3gtc2l6aW5nKGJvcmRlci1ib3gpOyB9XG5cbi5jb2wtbWQtMSB7XG4gIHdpZHRoOiAoMS8xMioxMDAlKTsgfVxuLmNvbC1tZC0yIHtcbiAgd2lkdGg6ICgyLzEyKjEwMCUpOyB9XG4uY29sLW1kLTMge1xuICB3aWR0aDogKDMvMTIqMTAwJSk7IH1cbi5jb2wtbWQtNCB7XG4gIHdpZHRoOiAoNC8xMioxMDAlKTsgfVxuLmNvbC1tZC01IHtcbiAgd2lkdGg6ICg1LzEyKjEwMCUpOyB9XG4uY29sLW1kLTYge1xuICB3aWR0aDogKDYvMTIqMTAwJSk7IH1cbi5jb2wtbWQtNyB7XG4gIHdpZHRoOiAoNy8xMioxMDAlKTsgfVxuLmNvbC1tZC04IHtcbiAgd2lkdGg6ICg4LzEyKjEwMCUpOyB9XG4uY29sLW1kLTkge1xuICB3aWR0aDogKDkvMTIqMTAwJSk7IH1cbi5jb2wtbWQtMTAge1xuICB3aWR0aDogKDEwLzEyKjEwMCUpOyB9XG4uY29sLW1kLTExIHtcbiAgd2lkdGg6ICgxMS8xMioxMDAlKTsgfVxuIiwKCQkiOjpzZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gIGNvbG9yOiAkYmxhY2s7IH1cblxuLy8gVElUTEVTXG5cbmh0bWwge1xuICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nLWh0bWw7XG4gIGNvbG9yOiAkZmMtbGlnaHQ7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC10ZXh0czsgfVxuXG5oMSwgaDIsIGgzLCBoNCB7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC10aXRsZXM7IH1cblxuaDEge1xuICBmb250LXNpemU6ICRmcy1sZztcbiAgbWFyZ2luLWJvdHRvbTogJGd1dHRlci1zbTtcblxuICBzcGFuIHtcbiAgICBjb2xvcjogJGdyZXktNDAwOyB9IH1cblxuaDIge1xuICBmb250LXNpemU6IHRvUmVtKDIwKTtcbiAgZm9udC13ZWlnaHQ6ICRmdy1tZWRpdW07XG4gIG1hcmdpbjogJGd1dHRlci1zbSAwOyB9XG5cbmgzIHtcbiAgZm9udC1zaXplOiAkZnM7XG4gIG1hcmdpbjogJGd1dHRlci1zbSAwOyB9XG5cbi8vIFRFWFRcblxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6ICRmdy1tZWRpdW07IH1cblxuc21hbGwge1xuICBmb250LXNpemU6ICRmcy14czsgfVxuXG5wLCBsaSB7XG4gIGZvbnQtc2l6ZTogJGZzLXNtO1xuICBmb250LWZhbWlseTogJGZvbnQtdGV4dHM7XG4gIGZvbnQtd2VpZ2h0OiAkZnctcmVndWxhcjtcbiAgbGV0dGVyLXNwYWNpbmc6ICRsZXR0ZXItc3BhY2luZy1ib2R5MTsgfVxuXG5wcmUge1xuICBwYWRkaW5nOiAyMHB4OyB9XG5cbi5pbmxpbmUtbGluayB7XG4gIGNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgJGNvbG9yLXByaW1hcnktNTAwLCAkY29sb3ItcHJpbWFyeS01MDAgMTAwJSk7XG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSA1MCU7XG4gIGJhY2tncm91bmQtcG9zaXRpb24teTogY2FsYygyMDAlIC0gMXB4KTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1wb3NpdGlvbi15IDAuMjVzIGVhc2UgMHM7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiAxMDAlOyB9IH1cblxuLy8gTElTVFNcblxudWwuaW5saW5lLWxpc3Qge1xuICBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1yaWdodDogMTBweDsgfSB9XG5cbi8vIFBBRERJTkctV1JBUFBFUlxuLnBhZ2UtY29udGVudCB7XG4gIHBhZGRpbmc6IDAgMTVweDtcbiAgbWFyZ2luLXRvcDogODBweDsgfVxuXG4vLyBDT0xPUlNcblxuLnRleHQtbGlnaHQge1xuICBjb2xvcjogJGZjLWxpZ2h0OyB9XG5cbi50ZXh0LXhsaWdodCB7XG4gIGNvbG9yOiAkZmMteGxpZ2h0OyB9XG5cbi50ZXh0LXh4bGlnaHQge1xuICBjb2xvcjogJGZjLXh4bGlnaHQ7IH1cblxuLnRleHQtYmx1ZSB7XG4gIGNvbG9yOiAkY29sb3ItaW5mby01MDA7IH1cblxuLnRleHQtYmxhY2sge1xuICBjb2xvcjogJGdyZXktOTAwOyB9XG5cbi50ZXh0LWdyZWVuIHtcbiAgY29sb3I6ICRjb2xvci1zdWNjZXNzLTUwMDsgfVxuXG4udGV4dC1ncmV5IHtcbiAgY29sb3I6ICRncmV5LTcwMDsgfVxuXG4udGV4dC1saWdodC1ncmV5IHtcbiAgY29sb3I6ICRncmV5LTQwMDsgfVxuXG4udGV4dC1vcmFuZ2Uge1xuICBjb2xvcjogJGNvbG9yLXdhcm5pbmctNzAwOyB9XG5cbi50ZXh0LXJlZCB7XG4gIGNvbG9yOiAkY29sb3ItZGFuZ2VyLTcwMDsgfVxuXG4udGV4dC15ZWxsb3cge1xuICBjb2xvcjogJGNvbG9yLXByaW1hcnktNzAwOyB9XG5cbi50ZXh0LWJsdWUsIC50ZXh0LWdyZWVuLCAudGV4dC1saWdodC1ncmV5LCAudGV4dC1vcmFuZ2UsIC50ZXh0LXJlZCwgLnRleHQteWVsbG93IHtcbiAgaSB7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH0gfVxuXG4uZm9ybWF0dGVkLXRleHQge1xuICBmb250LXNpemU6ICRmcy1zbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcblxuICBwLCB1bCwgb2wsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGJsb2NrcXVvdGUsIHByZSB7XG4gICAgbWFyZ2luOiAkZ3V0dGVyLXNtIDA7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7IH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9IH1cblxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtdGl0bGVzO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctbWVkaXVtO1xuICAgIGNvbG9yOiAkZmM7IH1cblxuICBoMSwgLnRpdGxlLWxnIHtcbiAgICBmb250LXNpemU6IHRvUmVtKDI0KTtcbiAgICBmb250LXdlaWdodDogJGZ3LXNlbWlib2xkOyB9XG5cbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogdG9SZW0oMjApO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctc2VtaWJvbGQ7IH1cblxuICBoMyB7XG4gICAgZm9udC1zaXplOiB0b1JlbSgxOCk7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1zZW1pYm9sZDsgfVxuXG4gIGg0IHtcbiAgICBmb250LXNpemU6ICRmcztcbiAgICBmb250LXdlaWdodDogJGZ3LW1lZGl1bTsgfVxuXG4gIGg1IHtcbiAgICBmb250LXNpemU6ICRmcy1zbTtcbiAgICBjb2xvcjogJGZjLWxpZ2h0O1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctbWVkaXVtOyB9XG5cbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogJGZzLXhzO1xuICAgIGNvbG9yOiAkZmMtbGlnaHQ7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1tZWRpdW07IH1cblxuICBwLCBsaSB7XG4gICAgY29sb3I6ICRmYy1saWdodDtcbiAgICBmb250LXdlaWdodDogJGZ3LXJlZ3VsYXI7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LXRleHRzO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsgfVxuXG4gIGJsb2NrcXVvdGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLWxlZnQ6ICRndXR0ZXItc207XG4gICAgZm9udC1zaXplOiAkZnM7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gICAgICBjb250ZW50OiBcIiBcIjsgfSB9XG5cbiAgc3Ryb25nLCBiIHtcbiAgICBmb250LXdlaWdodDogJGZ3LXNlbWlib2xkOyB9XG5cbiAgaSwgZW0ge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuXG4gIGE6bm90KC5idG4pIHtcbiAgICBAZXh0ZW5kIC5pbmxpbmUtbGluaztcbiAgICBjb2xvcjogJGZjOyB9XG5cbiAgdWwsIG9sIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIGNvdW50ZXItcmVzZXQ6IGxpc3QtY291bnRlcjtcbiAgICBwYWRkaW5nOiAwOyB9XG5cbiAgbGkge1xuICAgIG1hcmdpbi1ib3R0b206ICRndXR0ZXIteHhzO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAwIDAgMCAkZ3V0dGVyLXNtO1xuICAgIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0LWNvdW50ZXI7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlOyB9IH1cblxuICB1bCBsaSB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHRvcDogLjVlbTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogdG9SZW0oNik7XG4gICAgICBoZWlnaHQ6IHRvUmVtKDYpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnktNTAwO1xuICAgICAgY29udGVudDogXCIgXCI7IH0gfVxuXG4gIG9sIGxpIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIGZvbnQtc2l6ZTogJGZzLXNtO1xuICAgICAgZm9udC13ZWlnaHQ6ICRmdy1zZW1pYm9sZDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gICAgICBjb250ZW50OiBjb3VudGVyKGxpc3QtY291bnRlcikgXCIuXCI7IH0gfVxuXG4gIHByZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXktMTAwO1xuICAgIHBhZGRpbmc6ICRndXR0ZXIteHM7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB9IH1cbiIsCgkJImZvcm0ge1xuICAvLyBFcnJvcnNcblxuICAuZXJyb3Jfbm90aWZpY2F0aW9uLFxuICAuZXJyb3Jfbm90aWZpY2F0aW9ucyBsaSB7XG4gICAgZm9udDogNjAwIDExcHgvMTZweCAkZm9udC1tYWluO1xuICAgIGNvbG9yOiAkY29sb3ItZGFuZ2VyLTcwMDtcbiAgICBtYXJnaW46IDEwcHg7IH1cbiAgLmVycm9yX25vdGlmaWNhdGlvbnMge1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7IH1cblxuICAuYWxlcnQge1xuICAgIG1hcmdpbjogMCAwICRndXR0ZXI7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDsgfSB9IH1cblxuLy8gRm9ybSBlbGVtZW50c1xuXG5pbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgYnV0dG9uLCAud2l0aC1wcmVmaXggLmZvcm0tY29udHJvbC13cmFwcGVyLCAud2l0aC1zdWZmaXggLmZvcm0tY29udHJvbC13cmFwcGVyLCAuU3RyaXBlRWxlbWVudCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICBmb250LWZhbWlseTogJGZvbnQtdGV4dHM7XG4gIGZvbnQtd2VpZ2h0OiAkZnctcmVndWxhcjtcbiAgZm9udC1zaXplOiAkZnMtc207XG4gIG91dGxpbmU6IG5vbmU7XG4gIEBpbmNsdWRlIGJveC1zaXppbmcoYm9yZGVyLWJveCk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oYm9yZGVyLWNvbG9yIDAuMnMpO1xuXG4gICY6Zm9jdXMsICYuZm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnktNTAwOyB9XG5cbiAgJi5mdWxsLXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7IH1cblxuICAuY29sICYge1xuICAgIG1heC13aWR0aDogMTAwJTsgfSB9XG5cbmlucHV0LCB0ZXh0YXJlYSwgLndpdGgtcHJlZml4IC5mb3JtLWNvbnRyb2wtd3JhcHBlciwgLndpdGgtc3VmZml4IC5mb3JtLWNvbnRyb2wtd3JhcHBlciwgLlN0cmlwZUVsZW1lbnQge1xuICBtYXgtd2lkdGg6ICRmaWVsZC13aWR0aDtcbiAgcGFkZGluZzogJGd1dHRlci14cztcblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZSkge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogbm9uZTsgfSB9XG5cbmlucHV0IHtcbiAgJi5pbnB1dC1taW5pIHtcbiAgICB3aWR0aDogMTAwcHggIWltcG9ydGFudDsgfVxuICAmLmlucHV0LXNtYWxsIHtcbiAgICB3aWR0aDogMjAwcHggIWltcG9ydGFudDsgfVxuICAmLmlucHV0LWJpZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cblxuICAmW2Rpc2FibGVkXSB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmVpZ2UtMTAwOyB9IH1cblxudGV4dGFyZWEge1xuICBsaW5lLWhlaWdodDogMThweDtcbiAgbWF4LXdpZHRoOiA3MDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDcwcHg7XG4gICYudGV4dGFyZWEtbWVkaXVtIHtcbiAgICBtaW4taGVpZ2h0OiAxMTBweDsgfVxuICAmLnRleHRhcmVhLWJpZyB7XG4gICAgbWluLWhlaWdodDogMTUwcHg7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9IH1cblxuaW5wdXRbdHlwZT0ndGV4dCddLFxuaW5wdXRbdHlwZT0nZW1haWwnXSxcbmlucHV0W3R5cGU9J3RlbCddLFxuaW5wdXRbdHlwZT0ndXJsJ10sXG5pbnB1dFt0eXBlPSdwYXNzd29yZCddIHtcbiAgd2lkdGg6IDEwMCU7IH1cblxuaW5wdXQ6bm90KFt0eXBlXSksXG5pbnB1dFt0eXBlPSd0ZXh0J10sXG5pbnB1dFt0eXBlPSdlbWFpbCddLFxuaW5wdXRbdHlwZT0ndGVsJ10sXG5pbnB1dFt0eXBlPSd1cmwnXSxcbmlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sXG50ZXh0YXJlYSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQodGFibGV0KSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMTVweDsgLy8gYXZvaWQgem9vbWluZyBvbiBmb2N1cyBmb3IgU2FmYXJpIGlPU1xuICAgIG1pbi13aWR0aDogYXV0bzsgfSB9XG5cbmlucHV0W3R5cGU9J2ZpbGUnXSB7XG4gIGJvcmRlcjogbm9uZTtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTsgfVxuXG5zZWxlY3Qge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgcGFkZGluZzogJGd1dHRlci14czsgfVxuXG4vLyBTdHJpcGVcbi5TdHJpcGVFbGVtZW50IHtcbiAgcGFkZGluZzoge1xuICAgIHRvcDogMTNweDtcbiAgICBib3R0b206IDdweDsgfVxuICAmLS1mb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItaW5mby01MDA7IH1cbiAgJi0taW52YWxpZCB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItZGFuZ2VyLTcwMDsgfSB9XG5cbi8vIFNpbXBsZSBmb3JtXG5cbi5mb3JtLWlucHV0cyB7XG4gIHBhZGRpbmc6IDAgJGd1dHRlci1sZztcbiAgbWFyZ2luOiAwIDAgJGd1dHRlcjtcblxuICAmOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206ICRndXR0ZXItbGc7IH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZSkge1xuICAgIHBhZGRpbmc6IDAgMTVweDsgfSB9XG5cbi5mb3JtLWlucHV0cy1pbmxpbmUge1xuICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgbWFyZ2luLWJvdHRvbTogJGd1dHRlcjtcblxuICAuZm9ybS1ncm91cCB7XG4gICAgQGluY2x1ZGUgZmxleCgxIDEgMCk7XG4gICAgbWFyZ2luLXJpZ2h0OiAkZ3V0dGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDA7IH0gfVxuXG4uZm9ybS1ncm91cCB7XG4gIG1hcmdpbjogMCAwICRndXR0ZXI7XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbiAgJi5jaGVja2JveCB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7IH1cblxuICAmLnNlbGVjdCAuZm9ybS1jb250cm9sLXdyYXBwZXIud3VpLXNlbGVjdC13cmFwcGVyIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIHRvcDogdG9SZW0oMjApOyB9XG5cbiAgICB3dWktc2VsZWN0IHtcbiAgICAgIGlucHV0IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLWNvbG9yOyB9XG4gICAgICBidXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBub25lOyB9IH0gfVxuXG4gICYuZGF0ZXRpbWUge1xuICAgIGlucHV0IHtcbiAgICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7IH0gfVxuICAmLmNoZWNrYm94LWlucHV0IHtcbiAgICAmLnhsIHtcbiAgICAgIC5pY2hlY2tib3gge1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMThweDsgfSB9XG4gICAgICBsYWJlbCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4OyB9IH1cbiAgICAuaWNoZWNrYm94IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7IH1cbiAgICBpbnB1dCB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIGhlaWdodDogMDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIEBpbmNsdWRlIGFwcGVhcmFuY2Uobm9uZSk7IH1cbiAgICBsYWJlbCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XG4gICAgICBsaW5lLWhlaWdodDogMThweDsgfSB9XG5cbiAgJi5ib29sZWFuIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cblxuICAmLnRleHQuc21hbGwge1xuICAgIC5Db2RlTWlycm9yLCAuQ29kZU1pcnJvci1zY3JvbGwge1xuICAgICAgbWluLWhlaWdodDogNzBweCAhaW1wb3J0YW50OyB9IH1cblxuICAmLmF0dGFjaGVkLWltYWdlIHtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgLnJlbW92ZS1pbWFnZSB7XG4gICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICBtYXJnaW4tdG9wOiAxMHB4OyB9XG4gICAgaW1nIHtcbiAgICAgIG1heC1oZWlnaHQ6IDMwMHB4O1xuICAgICAgbWF4LXdpZHRoOiAzMDBweDsgfSB9XG4gICYubGVmdC1hdHRhY2hlZC1pbWFnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMTEwcHg7XG4gICAgLmZvcm0tZ3JvdXAge1xuICAgICAgbWFyZ2luOiAwOyB9XG4gICAgLmF0dGFjaGVkLWltYWdlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBwYWRkaW5nOiAwIDE1cHg7XG4gICAgICBpbWcge1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMDBweDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDBweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgJltzcmM9XCJcIl0ge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuICAgICAgLm5vbmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkZ3JleS0xMDA7XG4gICAgICAgIGhlaWdodDogNDBweDsgfSB9XG4gICAgPiAuZm9ybS1ncm91cCB7XG4gICAgICBtYXJnaW4tbGVmdDogMTQ1cHg7IH0gfVxuICAmLmhhcy1lcnJvciB7XG4gICAgbGFiZWwge1xuICAgICAgY29sb3I6ICRjb2xvci1kYW5nZXItNzAwOyB9XG4gICAgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3Qge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItZGFuZ2VyLTcwMDsgfVxuICAgIHNwYW4uaGVscC1ibG9jayB7XG4gICAgICBjb2xvcjogJGNvbG9yLWRhbmdlci03MDA7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgcGFkZGluZy1sZWZ0OiA1cHg7IH1cbiAgICAmLnRleHQgc3Bhbi5oZWxwLWJsb2NrIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuICAmLm9yZ2FuaXphdGlvbl9zbHVnIHtcbiAgICBpbnB1dCB7XG4gICAgICB3aWR0aDogMTUwcHggIWltcG9ydGFudDsgfVxuICAgIC5oZWxwLWJsb2NrIHtcbiAgICAgIGZvbnQtc2l6ZTogMTNweDsgfSB9XG5cbiAgJi5jaGVja19ib3hlcyB7XG4gICAgLmZvcm0tY29udHJvbC13cmFwcGVyIHtcbiAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICAgICAgQGluY2x1ZGUgZmxleC13cmFwKHdyYXApO1xuICAgICAgbWFyZ2luLXRvcDogJGd1dHRlci1zbTsgfVxuXG4gICAgLmNoZWNrYm94IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgoMSAxIDUwJSk7XG4gICAgICBwYWRkaW5nOiAwICRndXR0ZXIteHMgJGd1dHRlci14cyAwO1xuXG4gICAgICBsYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAkZnctcmVndWxhcjsgfSB9IH1cblxuICAmLnJhZGlvX2J1dHRvbnMge1xuICAgIC5mb3JtLWNvbnRyb2wtd3JhcHBlciB7XG4gICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgICAgIEBpbmNsdWRlIGZsZXgtd3JhcCh3cmFwKTtcbiAgICAgIG1hcmdpbi10b3A6ICRndXR0ZXItc207IH1cblxuICAgIHNwYW4ucmFkaW8ge1xuICAgICAgQGluY2x1ZGUgZmxleCgxIDEgNTAlKTtcbiAgICAgIHBhZGRpbmc6IDAgJGd1dHRlci14cyAkZ3V0dGVyLXhzIDA7XG5cbiAgICAgIGxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRmdy1yZWd1bGFyOyB9IH0gfVxuXG4gICZbY2xhc3MqPVwib3JnYW5pemF0aW9uX21lZGlhXCJdLmhhcy1lcnJvciB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4gICZbc3JjPVwiXCJdIHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG5cbiAgJi5pbWFnZS11cGxvYWQge1xuICAgIGlucHV0IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH1cbiAgICBsYWJlbCB7XG4gICAgICBAZXh0ZW5kIC5idG47XG4gICAgICBAZXh0ZW5kIC5idG4tc207IH1cbiAgICAmI2xvZ290eXBlIHtcbiAgICAgIGxhYmVsIHtcbiAgICAgICAgQGV4dGVuZCAuYnRuO1xuICAgICAgICBAZXh0ZW5kIC5idG4tc2Vjb25kYXJ5ICFvcHRpb25hbDsgfSB9IH1cblxuICAmLndpdGgtcHJlZml4LCAmLndpdGgtc3VmZml4IHtcbiAgICAmLmhhcy1lcnJvciB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICAuZm9ybS1jb250cm9sLXdyYXBwZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1kYW5nZXItNzAwOyB9XG5cbiAgICAgIHAuaGVscC1ibG9jayB7XG4gICAgICAgIHBhZGRpbmc6IDVweCAwO1xuICAgICAgICBjb2xvcjogJGdyZXktNDAwO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOyB9IH1cblxuICAgICYuZGlzYWJsZWQge1xuICAgICAgLmZvcm0tY29udHJvbC13cmFwcGVyIHtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJlaWdlLTEwMDsgfVxuXG4gICAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsgfSB9XG5cbiAgICAuZm9ybS1jb250cm9sLXdyYXBwZXIge1xuICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICBsYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgobm9uZSk7XG4gICAgICAgIG1hcmdpbjogJGd1dHRlci14eHM7XG4gICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICAgICAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICAgICAgICBwYWRkaW5nOiAkZ3V0dGVyLXh4cztcbiAgICAgICAgY29sb3I6ICRmYy14bGlnaHQ7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZzLXNtO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmVpZ2UtMjAwO1xuICAgICAgICBmb250LXdlaWdodDogJGZ3LXJlZ3VsYXI7IH0gfVxuXG4gICAgaW5wdXQge1xuICAgICAgQGluY2x1ZGUgZmxleCgxIDEgYXV0byk7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICBwYWRkaW5nOiAkZ3V0dGVyLXhzO1xuICAgICAgYm9yZGVyOiBub25lOyB9IH1cblxuICAmLndpdGgtcHJlZml4IHtcbiAgICBpbnB1dCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDA7IH0gfVxuXG4gIGxhYmVsIHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICAgIGNvbG9yOiAkZmMteGxpZ2h0O1xuICAgIGZvbnQtc2l6ZTogJGZzLXNtO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctbWVkaXVtO1xuICAgIG1hcmdpbi1ib3R0b206ICRndXR0ZXIteHhzO1xuXG4gICAgJi5idG4ge1xuICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KGlubGluZS1mbGV4KTsgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7IH1cblxuICAgIGltZyB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH1cblxuICAgIGEge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgY29sb3I6ICRmYztcbiAgICAgIG1hcmdpbjogLjRlbTtcblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gICAgICAgIGNvbnRlbnQ6IFwiIFwiOyB9XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDsgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7IH0gfVxuXG4gICAgJi5yZXF1aXJlZCBhYmJyLFxuICAgIGFiYnIucmVxdWlyZWQge1xuICAgICAgY29sb3I6ICRjb2xvci1kYW5nZXItNzAwOyB9IH1cblxuICAuaGVscC1ibG9jayB7XG4gICAgY29sb3I6ICRmYy14eGxpZ2h0O1xuICAgIGZvbnQtc2l6ZTogJGZzLXhzO1xuICAgIG1hcmdpbi10b3A6ICRndXR0ZXIteHhzO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICBhIHtcbiAgICAgIGNvbG9yOiAkZmMteHhsaWdodDtcbiAgICAgIGZvbnQtd2VpZ2h0OiAkZnctbWVkaXVtO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGNvbG9yIDAuMnMpO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRncmV5LTUwMDsgfSB9XG5cbiAgICAmLmVycm9yLW1lc3NhZ2Uge1xuICAgICAgY29sb3I6ICRjb2xvci1kYW5nZXItNTAwOyB9IH1cblxuICAuaW5wdXQtd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBpbnB1dCB7XG4gICAgICAmW3R5cGU9J3NlYXJjaCddLCAmW3R5cGU9J3RleHQnXSB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7IH0gfVxuICAgIGkge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgICBjb2xvcjogJGdyZXktNTAwO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gICAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpOyB9IH1cblxuICAubWluaWNvbG9ycyB7XG4gICAgLm1pbmljb2xvcnMtaW5wdXQge1xuICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiAzNHB4OyB9XG4gICAgLm1pbmljb2xvcnMtc3dhdGNoIHtcbiAgICAgIGhlaWdodDogMjRweDtcbiAgICAgIHdpZHRoOiAyNHB4OyB9XG4gICAgLm1pbmljb2xvcnMtcGFuZWwge1xuICAgICAgdG9wOiAtMTE1cHggIWltcG9ydGFudDtcbiAgICAgIGxlZnQ6IDEwMHB4ICFpbXBvcnRhbnQ7IH0gfSB9XG5cbi5mb3JtLWFjdGlvbnMge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktMzAwO1xuICBwYWRkaW5nOiAyMHB4OyB9XG5cbi5hdXRvY29tcGxldGUge1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBtYXgtd2lkdGg6IDQwMHB4O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlKSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiBub25lOyB9XG5cbiAgLmF1dG9jb21wbGV0ZS1pdGVtIHtcbiAgICBwYWRkaW5nOiAkZ3V0dGVyLXh4cyAkZ3V0dGVyLXhzO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7IH1cblxuICAgICYuYWN0aXZlLCAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeS0xMDA7IH1cblxuICAgIGVtLCBzdHJvbmcge1xuICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDsgfSB9IH1cblxuLmZvcm0tY29udHJvbC13cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC5zZWxlY3Qud2l0aG91dC1pY29uICYge1xuICAgICY6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbiAgLnNlbGVjdC5hdXRvaGVpZ2h0ICYge1xuICAgIHNlbGVjdCB7XG4gICAgICBoZWlnaHQ6IGF1dG87IH0gfVxuXG4gIC5zZWxlY3Qge1xuICAgIHBhZGRpbmctcmlnaHQ6IHRvUmVtKDI1KTsgfVxuXG4gIC5zZWxlY3QgJiB7XG4gICAgbWF4LXdpZHRoOiAkZmllbGQtd2lkdGg7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIHJpZ2h0OiAkZ3V0dGVyLXhzO1xuICAgICAgZm9udC1mYW1pbHk6ICRmb250LWljb25zO1xuICAgICAgZm9udC1zaXplOiAkZnMteHhzO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBjb2xvcjogJGJsYWNrO1xuICAgICAgY29udGVudDogJ1xcMTMyJzsgfSB9XG5cbiAgLnNlbGVjdC5kaXNhYmxlZCAmIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBjb2xvcjogJGJlaWdlLTcwMDsgfSB9XG5cbiAgJi53aXRoLWljb24tYmVmb3JlLCAmLndpdGgtaWNvbi1hZnRlciB7XG4gICAgLmZvcm0tY29udHJvbC1pY29uIHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgd2lkdGg6IHRvUmVtKDIwKTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGZvbnQtc2l6ZTogJGZzO1xuICAgICAgY29sb3I6ICRmYy14bGlnaHQ7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcblxuICAgICAgaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XG5cbiAgICAgICYuaWNvbi1iZWZvcmUge1xuICAgICAgICBsZWZ0OiAkZ3V0dGVyLXhzOyB9XG5cbiAgICAgICYuaWNvbi1hZnRlciB7XG4gICAgICAgIHJpZ2h0OiAkZ3V0dGVyLXhzOyB9IH1cblxuICAgIC5mb3JtLWNvbnRyb2wtcmVzZXQge1xuICAgICAgd2lkdGg6IHRvUmVtKDIwKTtcbiAgICAgIGhlaWdodDogdG9SZW0oMjApO1xuICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gICAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KGNlbnRlcik7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgLjEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgZm9udC1zaXplOiB0b1JlbSg4KTsgfSB9XG5cbiAgJi53aXRoLWljb24tYmVmb3JlIHtcbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgIHBhZGRpbmctbGVmdDogY2FsYygjeyRndXR0ZXIteHN9ICsgI3skZ3V0dGVyLXh4c30gKyAje3RvUmVtKDIwKX0pOyB9IH1cblxuICAmLndpdGgtaWNvbi1hZnRlciB7XG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKCN7JGd1dHRlci14c30gKyAjeyRndXR0ZXIteHhzfSArICN7dG9SZW0oMjApfSk7IH0gfVxuXG4gIC5kaXNhYmxlZC1pY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogMTAwJTtcbiAgICBtYXJnaW4tbGVmdDogJGd1dHRlci14cztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgZm9udC1zaXplOiAkZnM7XG4gICAgY29sb3I6ICRmYy14eGxpZ2h0OyB9IH1cblxuZm9ybS5mb3JtLWhvcml6b250YWwge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAuZm9ybS1ncm91cCB7XG4gICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICAgIGxhYmVsIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHdpZHRoOiAxMzVweDsgfVxuICAgIGlucHV0W3R5cGU9J3RleHQnXSB7XG4gICAgICB3aWR0aDogaW5pdGlhbDsgfVxuICAgIC5oZWxwLWJsb2NrIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfSB9IH1cblxuZm9ybS5mb3JtLWhpZGRlbi1idXR0b25zIHtcbiAgLmZvcm0tYWN0aW9ucyB7XG4gICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbi5Db2RlTWlycm9yIHtcbiAgLmNtLWNvbW1lbnQge1xuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDAgMC4yNWVtOyB9IH1cblxuLmctcmVjYXB0Y2hhIHtcbiAgbWFyZ2luLWJvdHRvbTogJGd1dHRlcjtcblxuICAmOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7IH0gfVxuXG4uY29udHJvbC1sYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBsaW5lLWhlaWdodDogMS4zO1xuICBjb2xvcjogJGJvZHktY29sb3I7XG4gIGZvbnQtc2l6ZTogJGZzLXNtO1xuICBmb250LXdlaWdodDogJGZ3LW1lZGl1bTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC10ZXh0cztcbiAgbWFyZ2luLWJvdHRvbTogJGd1dHRlci14czsgfVxuIiwKCQkiJGNoZWNrYm94LXNpemU6IHRvUmVtKDIwKTtcblxuLmljaGVja2JveCxcbi5pcmFkaW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1hcmdpbjogMCAkZ3V0dGVyLXhzIDAgMDtcbiAgcGFkZGluZzogMDtcbiAgZmxleDogbm9uZTtcbiAgd2lkdGg6ICRjaGVja2JveC1zaXplO1xuICBoZWlnaHQ6ICRjaGVja2JveC1zaXplO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuXG4gIGlucHV0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG9wYWNpdHk6IDA7IH1cblxuICAmOmFmdGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb2xvcjogJGZjO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjsgfVxuXG4gICYuaG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnktNTAwOyB9XG5cbiAgJi5jaGVja2VkIHtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuICAmLmRpc2FibGVkIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMC41KTsgfVxuXG4gICYgKyAuZm9ybS1sYWJlbCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9IH1cblxuLmlyYWRpbyB7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoNTAlKTtcbiAgJjphZnRlciB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyg1MCUpOyB9IH1cblxuLmljaGVja2JveDphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXFwxMTlcIjtcbiAgZm9udC1zaXplOiAkZnMteHM7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC1pY29ucztcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4uY2hlY2tib3gtaW5wdXQgaW5wdXQ6Y2hlY2tlZCB7XG4gICAgJiArIC5pY2hlY2tib3gge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG5cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLmJvb2xlYW4ge1xuICAuY29udHJvbC1sYWJlbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGd1dHRlci14eHM7IH1cblxuICAmLnN3aXRjaCB7XG4gICAgLmNvbnRyb2wtbGFiZWwge1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDMycHg7XG5cbiAgICAgICYgKyAuZm9ybS1jb250cm9sLXdyYXBwZXIge1xuICAgICAgICBmbG9hdDogbGVmdDsgfSB9IH0gfVxuIiwKCQkiJGJsYWNrOiAjMDAwMDAwO1xuJHdoaXRlOiAjZmZmZmZmO1xuJHllbGxvdzogI0ZGQ0QwMDtcbiRibHVlOiAjOENCM0RCO1xuJHJlZDogI0Y3OUQ4NTtcbiRncmVlbjogI0E1RDBBODtcbiIsCgkJIi8vIENvbnRhaW5lciB3aWR0aHNcbiRjb250YWluZXItd2lkdGg6IHRvUmVtKDk4MCk7XG4kY29udGFpbmVyLXRpbnktd2lkdGg6IHRvUmVtKDQ2NSk7XG4kY29udGFpbmVyLWxhcmdlLXdpZHRoOiB0b1JlbSgxMjAwKTtcblxuLy8gU2l6aW5nXG4kaGVhZGVyLWhlaWdodDogdG9SZW0oMTIwKTtcbiRoZWFkZXItbG9nby13aWR0aDogdG9SZW0oMTg0KTtcblxuXG5cbiIsCgkJIi4tZnIge1xuICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsgfVxuXG4ubW9iaWxlLWhpZGRlbiB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlKSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH1cbiIsCgkJIi5iZyB7XG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIHBhZGRpbmctdG9wOiAkaGVhZGVyLWhlaWdodDsgfSB9XG5cbi5iZy1iZWlnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiZWlnZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuXG4uYmctYmx1ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRibHVlOyB9XG5cbi5iZy1ncmVlbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRncmVlbjsgfVxuXG4uYmctcmVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHJlZDsgfVxuXG4uYmctd2hpdGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7IH1cbiIsCgkJIioge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cbi5jZW50ZXItY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogJGNvbnRhaW5lci13aWR0aDtcbiAgbWFyZ2luOiAwIGF1dG87XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbHNjcmVlbikge1xuICAgIHBhZGRpbmctbGVmdDogJGd1dHRlcjtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkZ3V0dGVyOyB9XG5cbiAgJi10aW55IHtcbiAgICBtYXgtd2lkdGg6ICRjb250YWluZXItdGlueS13aWR0aDsgfVxuXG4gICYtbGFyZ2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1heC13aWR0aDogJGNvbnRhaW5lci1sYXJnZS13aWR0aDsgfSB9XG5cbi5mdWxsLWhlaWdodCB7XG4gIGhlaWdodDogMTAwJTsgfVxuXG5ib2R5IHtcbiAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKGNvbHVtbik7XG4gIG1hcmdpbi10b3A6IDA7XG4gIHBhZGRpbmctdG9wOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmVpZ2U7XG4gIGxldHRlci1zcGFjaW5nOiAkbGV0dGVyLXNwYWNpbmc7IH1cblxuLm1haW4td3JhcHBlciB7XG4gIEBpbmNsdWRlIGZsZXgoMSAxIGF1dG8pO1xuICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oY29sdW1uKTsgfVxuXG4ubWFpbi1jb250YWluZXIge1xuICBAaW5jbHVkZSBmbGV4KDEgMSBhdXRvKTtcbiAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKGNvbHVtbik7XG5cbiAgLmJnIHtcbiAgICBAaW5jbHVkZSBmbGV4KDEgMSBhdXRvKTsgfSB9XG5cbi5tYWluLWZvb3RlciB7XG4gIEBpbmNsdWRlIGZsZXgobm9uZSk7IH1cbiIsCgkJIi5tYWluLWZvb3RlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRibGFjaztcbiAgY29sb3I6ICR3aGl0ZTtcbiAgcGFkZGluZzogJGd1dHRlci14bCAwO1xuICBmb250LXNpemU6ICRmcy1zbTtcblxuICAmLW5hdiB7XG4gICAgcGFkZGluZy10b3A6ICRndXR0ZXItbGc7XG5cbiAgICAmLXRpdGxlIHtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBmb250LXNpemU6IHRvUmVtKDEzKTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRndXR0ZXItc207IH1cblxuICAgICYtbGlzdCB7XG4gICAgICAmLWl0ZW0ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ3V0dGVyLXhzO1xuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4gICAgICAgICYtbGluayB7XG4gICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcblxuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6ICR5ZWxsb3c7IH0gfSB9IH1cblxuICAgICYtdGV4dCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkZ3V0dGVyLXNtO1xuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwOyB9IH0gfVxuXG4gICYtYm94IHtcbiAgICBwYWRkaW5nOiAkZ3V0dGVyLWxnICRndXR0ZXItc207XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgJi10aXRsZSB7XG4gICAgICBmb250LXdlaWdodDogJGZ3LXNlbWlib2xkO1xuICAgICAgbWFyZ2luLWJvdHRvbTogJGd1dHRlci14cztcbiAgICAgIGZvbnQtc2l6ZTogdG9SZW0oMTgpOyB9XG5cbiAgICAmLXRleHQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJGd1dHRlci1zbTtcbiAgICAgIGZvbnQtc2l6ZTogdG9SZW0oMTMpO1xuXG4gICAgICAmLnRleHQtc20ge1xuICAgICAgICBmb250LXNpemU6IHRvUmVtKDEwKTsgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbiAgICAgIGEge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAkZnctc2VtaWJvbGQ7IH0gfSB9XG5cbiAgJi1yb3cge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKCR3aGl0ZSwgLjIpO1xuICAgIHBhZGRpbmctYm90dG9tOiAkZ3V0dGVyLWxnO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsgfSB9XG5cbiAgJi1jb2wge1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoJHdoaXRlLCAuMik7XG4gICAgcGFkZGluZy1yaWdodDogJGd1dHRlci1sZztcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwOyB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZSkge1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoJHdoaXRlLCAuMik7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJGd1dHRlci1sZzsgfSB9IH1cbiIsCgkJIi5tYWluLWhlYWRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAkaGVhZGVyLWhlaWdodDtcbiAgei1pbmRleDogMTAwO1xuXG4gICYtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgICBwYWRkaW5nLXRvcDogJGd1dHRlci14bDsgfVxuXG4gICYtbmF2IHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuXG4gICAgLmxhbmd1YWdlcy1uYXYge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRndXR0ZXItc207IH1cblxuICAgICYtbGlzdCB7XG4gICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgICAgIEBpbmNsdWRlIGFsaWduLWl0ZW1zKGNlbnRlcik7XG5cbiAgICAgICYtaXRlbSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogJGd1dHRlci1zbTtcblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMDsgfSB9IH0gfSB9XG4iLAoJCSIubGFuZ3VhZ2VzLW5hdiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAubWFpbi1mb290ZXIgJiB7XG4gICAgY29sb3I6ICR3aGl0ZTtcblxuICAgIC5sYW5ndWFnZXMtbmF2LWxpc3Qge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXktOTAwO1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRncmV5LTkwMCB0cmFuc3BhcmVudDsgfVxuXG4gICAgICAmLWl0ZW0ge1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS04MDA7IH0gfSB9IH1cblxuICAmLXRvZ2dsZXIge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICAgIEBpbmNsdWRlIGFsaWduLWl0ZW1zKGNlbnRlcik7XG4gICAgcGFkZGluZzogJGd1dHRlci14cztcbiAgICBmb250LXNpemU6ICRmcy1zbTtcbiAgICBjb2xvcjogY3VycmVudENvbG9yO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctc2VtaWJvbGQ7XG5cbiAgICAud3VpLWljb24tZG93biB7XG4gICAgICBtYXJnaW4tbGVmdDogJGd1dHRlci14eHM7XG4gICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcblxuICAgICAgLm9wZW4gJiB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH0gfSB9XG5cbiAgJi1saXN0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMDAlO1xuICAgIGxlZnQ6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtc207XG4gICAgb3BhY2l0eTogMDtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpO1xuICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuXG4gICAgLm9wZW4gJiB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIGJvdHRvbTogMTAwJTtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgaGVpZ2h0OiAwO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIGJvcmRlci13aWR0aDogMCA1cHggNnB4IDVweDtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHdoaXRlIHRyYW5zcGFyZW50O1xuXG4gICAgICBjb250ZW50OiBcIiBcIjsgfVxuXG4gICAgJi1pdGVtIHtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS0xMDA7IH1cblxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtc20gJHJhZGl1cy1zbSAwIDA7IH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwICRyYWRpdXMtc20gJHJhZGl1cy1zbTsgfVxuXG4gICAgICAmLWxpbmsge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgICAgICAgcGFkZGluZzogJGd1dHRlci14eHMgJGd1dHRlci14cztcbiAgICAgICAgZm9udC1zaXplOiAkZnMtc207XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAkZnctc2VtaWJvbGQ7XG4gICAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uOyB9IH0gfSB9XG5cbiIsCgkJIi5sYW5kaW5nLWJhY2tncm91bmQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoYXNzZXQtcGF0aCgnZnJvbnQvaG9tZS9sYW5kaW5nX2JhY2tncm91bmQuc3ZnJykpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDYwJTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiAwO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IDYwcHg7XG4gIGhlaWdodDogMTAwdmg7IH1cblxuLnNlY3Rpb24ge1xuICBwYWRkaW5nOiAkZ3V0dGVyLXh4bCAwO1xuXG4gICYtaGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkZ3V0dGVyLWxnOyB9XG5cbiAgJi10aXRsZSB7XG4gICAgZm9udC1zaXplOiAkZnMtaDI7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1zZW1pYm9sZDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBtYXJnaW4tYm90dG9tOiAkZ3V0dGVyO1xuICAgIG1heC13aWR0aDogdG9SZW0oNjM2KTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbiAgICAmLnNlY3Rpb24tdGl0bGUtc20ge1xuICAgICAgZm9udC1zaXplOiB0b1JlbSgyMik7IH0gfVxuXG4gICYtc3VidGl0bGUge1xuICAgIG1heC13aWR0aDogdG9SZW0oNTAwKTtcbiAgICBvcGFjaXR5OiAuNzsgfVxuXG4gICYtZm9vdGVyIHtcbiAgICBtYXJnaW4tdG9wOiAkZ3V0dGVyLWxnOyB9XG5cbiAgJi1jb250ZW50IHtcbiAgICBwIHtcbiAgICAgIG9wYWNpdHk6IC43OyB9IH1cblxuICAmLmhlcm8tc2VjdGlvbiB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gICAgaGVpZ2h0OiB0b1JlbSg0ODApO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAmLWNlbnRlcmVkIHtcbiAgICAgIEBpbmNsdWRlIGFsaWduLWl0ZW1zKGNlbnRlcik7XG4gICAgICBoZWlnaHQ6IDEwMCU7IH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlKSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LXdyYXAod3JhcCk7XG4gICAgICBoZWlnaHQ6IGF1dG87IH1cblxuICAgICYgPiAuY29sIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICAgICAgICBAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbihjb2x1bW4pO1xuICAgICAgICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoY2VudGVyKTtcbiAgICAgICAgd2lkdGg6IHRvUmVtKDUwMCk7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgobm9uZSk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRndXR0ZXIteGw7XG5cbiAgICAgICAgJi5zY3JlZW5zaG90LWxlZnQge1xuICAgICAgICAgIHdpZHRoOiB0b1JlbSg3MDApO1xuICAgICAgICAgIGhlaWdodDogdG9SZW0oNDgwKTsgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlKSB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206ICRndXR0ZXIteGw7IH0gfVxuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZSkge1xuICAgICAgICB3aWR0aDogMTAwJTsgfSB9XG5cbiAgICAuc2VjdGlvbi10aXRsZSB7XG4gICAgICBmb250LXNpemU6ICRmcy1oMTtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cblxuICAgIC5oZXJvLXNlY3Rpb24tc2NyZWVuc2hvdCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIGhlaWdodDogMTAwJTtcblxuICAgICAgJi1sZWZ0IHtcbiAgICAgICAgcmlnaHQ6ICRndXR0ZXIteGw7XG4gICAgICAgIGxlZnQ6IHVuc2V0OyB9XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlKSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87IH0gfSB9XG5cbiAgJi53aXRoLWJnIHtcbiAgICBwYWRkaW5nOiAkZ3V0dGVyLXhsO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUpIHtcbiAgICAgIHBhZGRpbmc6ICRndXR0ZXI7IH0gfVxuXG4gICYud2l0aC1iZy1zbSB7XG4gICAgcGFkZGluZzogJGd1dHRlci1sZztcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlKSB7XG4gICAgICBwYWRkaW5nOiAkZ3V0dGVyOyB9IH1cblxuICAmLW5hdiB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6ICRndXR0ZXItbGc7XG5cbiAgICAmLWxpc3Qge1xuICAgICAgJi1pdGVtIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRmdy1zZW1pYm9sZDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGd1dHRlci14cztcblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7IH1cblxuICAgICAgICAmLWxpbmsge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnktNTAwO1xuICAgICAgICAgICAgY29udGVudDogXCIgXCI7IH1cblxuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IH0gfSB9IH0gfSB9IH1cbiIsCgkJIi5mb3JtIHtcbiAgJi1pbmxpbmUge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuXG4gICAgLmZvcm0tZ3JvdXAge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkZ3V0dGVyLXhzO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9IH0gfVxuXG4gICYtY29udHJvbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGhlaWdodDogJGJ0bi1oZWlnaHQ7XG4gICAgcGFkZGluZzogMCAkZ3V0dGVyLXNtO1xuICAgIGZvbnQtc2l6ZTogJGZzO1xuICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgbWluLXdpZHRoOiB0b1JlbSgzNTUpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZSkge1xuICAgICAgd2lkdGg6IGF1dG87IH0gfVxuXG4gICYtZ3JvdXAge1xuICAgIG1hcmdpbi1ib3R0b206ICRndXR0ZXItc207XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4gICAgJi5ib29sZWFuIHtcbiAgICAgIGxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gICAgICAgIEBpbmNsdWRlIGFsaWduLWl0ZW1zKGNlbnRlcik7IH0gfSB9IH1cblxuLmNvbnRyb2wtbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogJGd1dHRlci14cztcbiAgZm9udC13ZWlnaHQ6ICRmdy1zZW1pYm9sZDsgfVxuIiwKCQkiYm9keSB7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC10ZXh0cztcbiAgY29sb3I6ICRibGFjazsgfVxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgZm9udC1mYW1pbHk6ICRmb250LXRpdGxlcztcbiAgZm9udC13ZWlnaHQ6ICRmdy1zZW1pYm9sZDsgfVxuXG5wLCBsaSB7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7IH1cblxuYSB7XG4gIGNvbG9yOiBjdXJyZW50Q29sb3I7XG5cbiAgJi5pbmxpbmUtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmb250LXdlaWdodDogJGZ3LW1lZGl1bTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMXB4O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnktNTAwO1xuICAgICAgY29udGVudDogXCIgXCI7IH0gfSB9XG5cbi5wbGFpbi10ZXh0IHtcbiAgaDIsIGgzIHtcbiAgICBtYXJnaW46ICRndXR0ZXIgMDtcbiAgICBmb250LXNpemU6ICRmcy1sZztcblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLXRvcDogMDsgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7IH0gfVxuXG4gIGg0IHtcbiAgICBtYXJnaW46ICRndXR0ZXIgMDtcbiAgICBmb250LXNpemU6ICRmcztcblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLXRvcDogMDsgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7IH0gfVxuXG4gIHAge1xuICAgIG1hcmdpbjogMCAwICRndXR0ZXI7XG4gICAgb3BhY2l0eTogLjc7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDsgfSB9XG5cbiAgdWwsIG9sIHtcbiAgICBtYXJnaW46IDAgMCAkZ3V0dGVyO1xuICAgIHBhZGRpbmctbGVmdDogJGd1dHRlci1zbTtcblxuICAgIGxpIHtcbiAgICAgIG9wYWNpdHk6IC43O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgcGFkZGluZy1sZWZ0OiAkZ3V0dGVyLXNtO1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogdG9SZW0oOCk7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiB0b1JlbSg2KTtcbiAgICAgICAgaGVpZ2h0OiB0b1JlbSg2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gICAgICAgIGNvbnRlbnQ6IFwiIFwiOyB9IH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9IH1cblxuICBociB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsgfSB9XG4iLAoJCSIuYWR2YW50YWdlcy10aHVtYiB7XG4gIHBhZGRpbmctdG9wOiAkZ3V0dGVyO1xuXG4gICYtcGljdHVyZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGd1dHRlcjtcblxuICAgICYtaW1nIHtcbiAgICAgIGhlaWdodDogdG9SZW0oMTIwKTtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IGNlbnRlcjsgfSB9XG5cbiAgJi1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206ICRndXR0ZXIteHM7IH1cblxuICAmLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHRvUmVtKDE1KTsgfVxuXG4gICYtY29udGVudCBwIHtcbiAgICBmb250LXNpemU6ICRmcy1zbTtcbiAgICBvcGFjaXR5OiAuNztcbiAgICBsaW5lLWhlaWdodDogMS40OyB9IH1cbiIsCgkJIi5jYy13aW5kb3cge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogJGd1dHRlci1sZztcbiAgcmlnaHQ6ICRndXR0ZXItbGc7XG4gIGJhY2tncm91bmQtY29sb3I6ICRibGFjaztcbiAgY29sb3I6ICR3aGl0ZTtcbiAgcGFkZGluZzogJGd1dHRlcjtcbiAgd2lkdGg6IHRvUmVtKDQwMCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkICR3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgei1pbmRleDogOTk5O1xuICBsaW5lLWhlaWdodDogMS40O1xuXG4gIGE6bm90KC5idG4pIHtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctc2VtaWJvbGQ7IH0gfVxuXG4uY2MtY29tcGxpYW5jZSB7XG4gIG1hcmdpbi10b3A6ICRndXR0ZXI7IH1cblxuLmNjLWJ0biB7XG4gIHdpZHRoOiAxMDAlO1xuICBAZXh0ZW5kIC5idG47XG4gIEBleHRlbmQgLmJ0bi1wcmltYXJ5O1xuICBAZXh0ZW5kIC5idG4tc207IH1cbiIsCgkJIi5jdXN0b21lcnMtbG9nb3Mge1xuXG4gIGxpIHtcbiAgICBtYXJnaW46IDIwcHggMDsgfVxuXG4gIC5jdXN0b21lcnMtbG9nby1saW5rIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDAuOCk7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihvcGFjaXR5IC4zcyBlYXNlLWluLW91dCwgdHJhbnNmb3JtIC4zcyBlYXNlLWluLW91dCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBpbmNsdWRlIG9wYWNpdHkoMSk7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oc2NhbGUoMS4xKSk7IH0gfVxuXG4gIC5jdXN0b21lcnMtbG9nby1pbWcge1xuICAgIG1heC1oZWlnaHQ6IDYwcHg7XG4gICAgbWF4LXdpZHRoOiAxMjBweDsgfSB9XG4iLAoJCSIuY3VzdG9tZXJzLXRodW1iIHtcbiAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gIEBpbmNsdWRlIGFsaWduLWl0ZW1zKGNlbnRlcik7XG4gIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChjZW50ZXIpO1xuICB3aWR0aDogdG9SZW0oMTM2KTtcbiAgaGVpZ2h0OiB0b1JlbSg3MCk7XG5cbiAgJi1sb2dvLWltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfSB9XG4iLAoJCSIuZmFxLWxpc3Qge1xuICBjb3VudGVyLXJlc2V0OiBmYXEtY291bnRlcjtcbiAgbWFyZ2luLXRvcDogODBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZSkge1xuICAgIG1hcmdpbi10b3A6IDQwcHg7IH1cblxuICAuZmFxLWl0ZW0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjb3VudGVyLWluY3JlbWVudDogZmFxLWNvdW50ZXI7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBwYWRkaW5nOiAwIDcwcHggNDBweCAxMDBweDtcbiAgICBtYXJnaW4tdG9wOiA0MHB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjBmMGYwO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUpIHtcbiAgICAgIHBhZGRpbmc6IDAgMCA0MHB4IDUwcHg7IH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lOyB9XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBjb3VudGVyKGZhcS1jb3VudGVyKTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDMwcHg7XG4gICAgICB0b3A6IC01cHg7XG4gICAgICB3aWR0aDogMzZweDtcbiAgICAgIGhlaWdodDogMzZweDtcbiAgICAgIGZvbnQtc2l6ZTogMTlweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBsaW5lLWhlaWdodDogMzZweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjBmMGYwO1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyg1MCUpO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZSkge1xuICAgICAgICBsZWZ0OiAwOyB9IH1cblxuICAgIC5mYXEtaXRlbS10aXRsZSwgLmZhcS1pdGVtLXRleHQge1xuICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDsgfVxuXG4gICAgLmZhcS1pdGVtLXRpdGxlIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IH0gfSB9XG4iLAoJCSJib2R5Lm1vZGFsLXZpc2libGUge1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbi5tb2RhbCwgLm1vZGFsLWNvbnRlbnRzLCAubW9kYWwtYm94LWNvbnRyb2wge1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKHRyYW5zZm9ybSAuNHMgZWFzZS1pbi1vdXQpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWigwKSk7XG4gIEBpbmNsdWRlIGJhY2tmYWNlLXZpc2liaWxpdHkoaGlkZGVuKTsgfVxuXG4ubW9kYWwge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY29sb3I6ICR3aGl0ZTtcbiAgei1pbmRleDogNTAwO1xuICBiYWNrZ3JvdW5kOiByZ2JhKCRncmV5LTkwMCwgMC43NSk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDEwMCUpKTtcblxuICAmLnBsYWluIHtcbiAgICBiYWNrZ3JvdW5kOiAkZ3JleS05MDA7IH1cblxuICAmLnZpc2libGUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDApKTtcblxuICAgIC5tb2RhbC1jb250ZW50cywgLm1vZGFsLWJveC1jb250cm9sIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDApKTsgfVxuXG4gICAgLm1vZGFsLWNvbnRlbnRzIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24tZGVsYXkoLjJzKTsgfVxuXG4gICAgLm1vZGFsLWJveC1jb250cm9sIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24tZGVsYXkoMC40cyk7IH0gfVxuXG4gICYubm8tdHJhbnNpdGlvbiB7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihub25lKTtcblxuICAgIC5tb2RhbC1jb250ZW50cywgLm1vZGFsLWJveC1jb250cm9sIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24obm9uZSk7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uLWRlbGF5KDBzKTsgfSB9XG5cbiAgLm1vZGFsLWNvbnRlbnRzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBhZGRpbmc6IDEwMHB4IDA7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoMTAwJSkpOyB9XG5cbiAgLm1vZGFsLWJveC1jb250cm9sIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDM0cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTYwMCUpKTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uLWRlbGF5KDBzKTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlKSB7XG4gICAgICByaWdodDogMzBweDsgfVxuXG4gICAgJi5idG4tY2xvc2UtbW9kYWwge1xuICAgICAgdG9wOiAzNHB4O1xuICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgIHotaW5kZXg6IDE7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlKSB7XG4gICAgICAgIHRvcDogNDJweDsgfSB9IH1cblxuICAudmlkZW8ge1xuICAgIG1heC13aWR0aDogOTAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgaWZyYW1lIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHdpZHRoOiA4NTNweDtcbiAgICAgIGhlaWdodDogNDgwcHg7XG4gICAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlKSB7XG4gICAgICAgIHdpZHRoOiA1NTBweDtcbiAgICAgICAgaGVpZ2h0OiAzMTVweDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOyB9IH0gfSB9XG4iLAoJCSIubmF2LWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTZweDtcbiAgcmlnaHQ6IDZweDtcbiAgZGlzcGxheTogbm9uZTtcbiAgd2lkdGg6IDI3cHg7XG4gIGhlaWdodDogMjNweDtcbiAgcGFkZGluZzogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyOiAxNHB4IHNvbGlkIHRyYW5zcGFyZW50IHtcbiAgICBib3R0b20td2lkdGg6IDEzcHg7IH1cbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIHotaW5kZXg6IDIwO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQodGFibGV0KSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH1cblxuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGNvbnRlbnQ6ICcgJztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHRyYW5zZm9ybSAuM3MgZWFzZS1pbi1vdXQpOyB9XG5cbiAgJjpiZWZvcmUge1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXI6IHtcbiAgICAgIHRvcDogM3B4IHNvbGlkICR3aGl0ZTtcbiAgICAgIGJvdHRvbTogM3B4IHNvbGlkICR3aGl0ZTsgfSB9XG5cbiAgJjphZnRlciB7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDNweDtcbiAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgbWFyZ2luLXRvcDogLTJweDtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCg2cHgpKTsgfVxuXG4gICYuYWN0aXZlIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCg2cHgpKTtcbiAgICAgIGJvcmRlci1jb2xvcjogJHdoaXRlOyB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKDBweCkpO1xuICAgICAgYmFja2dyb3VuZDogJHdoaXRlOyB9IH0gfVxuXG4iLAoJCSIuYWxlcnQge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJhY2tncm91bmQ6ICRncmV5LTkwMDtcbiAgcGFkZGluZzogMjBweDtcbiAgei1pbmRleDogMTA7XG5cbiAgJi5hbGVydC1lcnJvcixcbiAgJi5hbGVydC1kYW5nZXIge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1kYW5nZXItNzAwO1xuICAgICYsIHAsIGEge1xuICAgICAgY29sb3I6ICR3aGl0ZTsgfSB9XG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9IH1cbiIsCgkJIi5vZmZlci1pdGVtIHtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMTBweCk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coMCAwIDMwcHggcmdiYSgkYmxhY2ssLjMpKTtcbiAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKGNvbHVtbik7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUpIHtcbiAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgIGhlaWdodDogYXV0bzsgfVxuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkZ3JleS0yMDA7IH1cblxuICAub2ZmZXItaGVhZGVyIHtcbiAgICBwYWRkaW5nOiA0MHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5LTEwMDsgfVxuXG4gIC5vZmZlci1sb2dvIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAwO1xuXG4gICAgc3ZnIHtcbiAgICAgIGhlaWdodDogMTAwcHg7XG4gICAgICB3aWR0aDogYXV0bzsgfVxuXG4gICAgLmxvZ28td2stcGF0aCB7XG4gICAgICBmaWxsOiAkY29sb3ItcHJpbWFyeS01MDA7IH0gfVxuXG4gIC5vZmZlci1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBmbGV4KDEgMSBhdXRvKTtcbiAgICBwYWRkaW5nOiA0MHB4IDQwcHggMjBweDtcblxuICAgIHAge1xuICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDtcbiAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7IH1cblxuICAgICAgYSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDsgfSB9IH0gfVxuXG4gIC5vZmZlci1mb290ZXIge1xuICAgIHBhZGRpbmc6IDAgNDBweCA0MHB4IDQwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9IH1cbiIKCV0sCgkibmFtZXMiOiBbXSwKCSJtYXBwaW5ncyI6ICJBdU11Q00sZUFBZSxDQUFmLEtBQWU7RUdyQ25CLEVBQUU7SUFDQSxPQUFPLEVBQUUsQ0FBQzs7RUFDWixHQUFHO0lBQ0QsT0FBTyxFQUFFLENBQUM7O0VBQ1osR0FBRztJQUNELE9BQU8sRUFBRSxDQUFDOztFQUNaLEdBQUc7SUFDRCxPQUFPLEVBQUUsQ0FBQzs7RUFDWixJQUFJO0lBQ0YsT0FBTyxFQUFFLENBQUM7Ozs7QUhnQ1Isa0JBQWtCLENBQWxCLEtBQWtCO0VHekN0QixFQUFFO0lBQ0EsT0FBTyxFQUFFLENBQUM7O0VBQ1osR0FBRztJQUNELE9BQU8sRUFBRSxDQUFDOztFQUNaLEdBQUc7SUFDRCxPQUFPLEVBQUUsQ0FBQzs7RUFDWixHQUFHO0lBQ0QsT0FBTyxFQUFFLENBQUM7O0VBQ1osSUFBSTtJQUNGLE9BQU8sRUFBRSxDQUFDOzs7O0FIb0NSLGFBQWEsQ0FBYixLQUFhO0VHN0NqQixFQUFFO0lBQ0EsT0FBTyxFQUFFLENBQUM7O0VBQ1osR0FBRztJQUNELE9BQU8sRUFBRSxDQUFDOztFQUNaLEdBQUc7SUFDRCxPQUFPLEVBQUUsQ0FBQzs7RUFDWixHQUFHO0lBQ0QsT0FBTyxFQUFFLENBQUM7O0VBQ1osSUFBSTtJQUNGLE9BQU8sRUFBRSxDQUFDOzs7O0FId0NSLGNBQWMsQ0FBZCxLQUFjOztFR2pEbEIsQUFBQSxFQUFFLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztHQUFHOztFQUNmLEFBQUEsR0FBRyxDQUFDO0lBQ0YsT0FBTyxFQUFFLENBQUM7R0FBRzs7RUFDZixBQUFBLEdBQUcsQ0FBQztJQUNGLE9BQU8sRUFBRSxDQUFDO0dBQUc7O0VBQ2YsQUFBQSxHQUFHLENBQUM7SUFDRixPQUFPLEVBQUUsQ0FBQztHQUFHOztFQUNmLEFBQUEsSUFBSSxDQUFDO0lBQ0gsT0FBTyxFQUFFLENBQUM7R0FBRzs7O0FIZ0RYLFVBQVUsQ0FBVixLQUFVO0VHekRkLEVBQUU7SUFDQSxPQUFPLEVBQUUsQ0FBQzs7RUFDWixHQUFHO0lBQ0QsT0FBTyxFQUFFLENBQUM7O0VBQ1osR0FBRztJQUNELE9BQU8sRUFBRSxDQUFDOztFQUNaLEdBQUc7SUFDRCxPQUFPLEVBQUUsQ0FBQzs7RUFDWixJQUFJO0lBQ0YsT0FBTyxFQUFFLENBQUM7Ozs7QUg0QlIsZUFBZSxDQUFmLE1BQWU7RUd2Qm5CLEVBQUU7STVFUkEsaUJBQW9CLEUrQzhVZCxhQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxhQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixhQUFvQjtJL0N0VTFCLFlBQWUsRStDc1VULGFBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4sYUFBb0I7O0U2QnBVNUIsR0FBRztJNUVWRCxpQkFBb0IsRStDOFVkLGFBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGFBQW9CO0kvQ3hVMUIsYUFBZ0IsRStDd1VWLGFBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsYUFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixhQUFvQjs7RTZCbFU1QixHQUFHO0k1RVpELGlCQUFvQixFK0M4VWQsaUJBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGlCQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixpQkFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxpQkFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixpQkFBb0I7O0U2QmhVNUIsR0FBRztJNUVkRCxpQkFBb0IsRStDOFVkLGFBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGFBQW9CO0kvQ3hVMUIsYUFBZ0IsRStDd1VWLGFBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsYUFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixhQUFvQjs7RTZCOVQ1QixHQUFHO0k1RWhCRCxpQkFBb0IsRStDOFVkLGlCQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxpQkFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsaUJBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsaUJBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4saUJBQW9COztFNkI1VDVCLEdBQUc7STVFbEJELGlCQUFvQixFK0M4VWQsYUFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsYUFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsYUFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxhQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGFBQW9COztFNkIxVDVCLElBQUk7STVFcEJGLGlCQUFvQixFK0M4VWQsYUFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsYUFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsYUFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxhQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGFBQW9COzs7O0EwQjNTeEIsa0JBQWtCLENBQWxCLE1BQWtCO0VHM0J0QixFQUFFO0k1RVJBLGlCQUFvQixFK0M4VWQsYUFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsYUFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsYUFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxhQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGFBQW9COztFNkJwVTVCLEdBQUc7STVFVkQsaUJBQW9CLEUrQzhVZCxhQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxhQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixhQUFvQjtJL0N0VTFCLFlBQWUsRStDc1VULGFBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4sYUFBb0I7O0U2QmxVNUIsR0FBRztJNUVaRCxpQkFBb0IsRStDOFVkLGlCQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxpQkFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsaUJBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsaUJBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4saUJBQW9COztFNkJoVTVCLEdBQUc7STVFZEQsaUJBQW9CLEUrQzhVZCxhQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxhQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixhQUFvQjtJL0N0VTFCLFlBQWUsRStDc1VULGFBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4sYUFBb0I7O0U2QjlUNUIsR0FBRztJNUVoQkQsaUJBQW9CLEUrQzhVZCxpQkFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsaUJBQW9CO0kvQ3hVMUIsYUFBZ0IsRStDd1VWLGlCQUFvQjtJL0N0VTFCLFlBQWUsRStDc1VULGlCQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGlCQUFvQjs7RTZCNVQ1QixHQUFHO0k1RWxCRCxpQkFBb0IsRStDOFVkLGFBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGFBQW9CO0kvQ3hVMUIsYUFBZ0IsRStDd1VWLGFBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsYUFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixhQUFvQjs7RTZCMVQ1QixJQUFJO0k1RXBCRixpQkFBb0IsRStDOFVkLGFBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGFBQW9CO0kvQ3hVMUIsYUFBZ0IsRStDd1VWLGFBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsYUFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixhQUFvQjs7OztBMEJ2U3hCLGFBQWEsQ0FBYixNQUFhO0VHL0JqQixFQUFFO0k1RVJBLGlCQUFvQixFK0M4VWQsYUFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsYUFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsYUFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxhQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGFBQW9COztFNkJwVTVCLEdBQUc7STVFVkQsaUJBQW9CLEUrQzhVZCxhQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxhQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixhQUFvQjtJL0N0VTFCLFlBQWUsRStDc1VULGFBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4sYUFBb0I7O0U2QmxVNUIsR0FBRztJNUVaRCxpQkFBb0IsRStDOFVkLGlCQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxpQkFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsaUJBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsaUJBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4saUJBQW9COztFNkJoVTVCLEdBQUc7STVFZEQsaUJBQW9CLEUrQzhVZCxhQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxhQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixhQUFvQjtJL0N0VTFCLFlBQWUsRStDc1VULGFBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4sYUFBb0I7O0U2QjlUNUIsR0FBRztJNUVoQkQsaUJB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VWQsYUFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsYUFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsYUFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxhQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGFBQW9COztFNkJ4UzVCLEdBQUc7STVFNUJELGlCQUFvQixFK0NvVWQsaUJBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGlCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixpQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxpQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixpQkFBb0I7O0U2QnRTNUIsR0FBRztJNUU5QkQsaUJBQW9CLEUrQ29VZCxnQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsZ0JBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGdCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGdCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGdCQUFvQjs7RTZCcFM1QixHQUFHO0k1RWhDRCxpQkFBb0IsRStDb1VkLGlCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxpQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsaUJBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsaUJBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4saUJBQW9COztFNkJsUzVCLEdBQUc7STVFbENELGlCQUFvQixFK0NvVWQsZ0JBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGdCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixnQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxnQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixnQkFBb0I7O0U2QmhTNUIsR0FBRztJNUVwQ0QsaUJBQW9CLEUrQ29VZCxpQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsaUJBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGlCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGlCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGlCQUFvQjs7RTZCOVI1QixHQUFHO0k1RXRDRCxpQkFBb0IsRStDb1VkLGdCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxnQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsZ0JBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsZ0JBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sZ0JBQW9COztFNkI1UjVCLEdBQUc7STVFeENELGlCQUFvQixFK0NvVWQsaUJBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGlCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixpQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxpQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixpQkFBb0I7O0U2QjFSNUIsR0FBRztJNUUxQ0QsaUJBQW9CLEUrQ29VZCxnQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsZ0JBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGdCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGdCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGdCQUFvQjs7RTZCeFI1QixHQUFHO0k1RTVDRCxpQkFBb0IsRStDb1VkLGlCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxpQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsaUJBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsaUJBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4saUJBQW9COztFNkJ0UjVCLElBQUk7STVFOUNGLGlCQUFvQixFK0NvVWQsYUFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsYUFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsYUFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxhQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGFBQW9COzs7O0EwQmpTeEIsa0JBQWtCLENBQWxCLEtBQWtCO0VHVHRCLEVBQUU7STVFMUJBLGlCQUFvQixFK0NvVWQsYUFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsYUFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsYUFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxhQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGFBQW9COztFNkJ4UzVCLEdBQUc7STVFNUJELGlCQUFvQixFK0NvVWQsaUJBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGlCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixpQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxpQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixpQkFBb0I7O0U2QnRTNUIsR0FBRztJNUU5QkQsaUJBQW9CLEUrQ29VZCxnQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsZ0JBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGdCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGdCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGdCQUFvQjs7RTZCcFM1QixHQUFHO0k1RWhDRCxpQkFBb0IsRStDb1VkLGlCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxpQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsaUJBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsaUJBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4saUJBQW9COztFNkJsUzVCLEdBQUc7STVFbENELGlCQUFvQixFK0NvVWQsZ0JBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGdCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixnQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxnQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixnQkFBb0I7O0U2QmhTNUIsR0FBRztJNUVwQ0QsaUJBQW9CLEUrQ29VZCxpQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsaUJBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGlCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGlCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGlCQUFvQjs7RTZCOVI1QixHQUFHO0k1RXRDRCxpQkFBb0IsRStDb1VkLGdCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxnQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsZ0JBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsZ0JBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sZ0JBQW9COztFNkI1UjVCLEdBQUc7STVFeENELGlCQUFvQixFK0NvVWQsaUJBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGlCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixpQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxpQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixpQkFBb0I7O0U2QjFSNUIsR0FBRztJNUUxQ0QsaUJBQW9CLEUrQ29VZCxnQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsZ0JBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGdCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGdCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGdCQUFvQjs7RTZCeFI1QixHQUFHO0k1RTVDRCxpQkFBb0IsRStDb1VkLGlCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxpQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsaUJBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsaUJBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4saUJBQW9COztFNkJ0UjVCLElBQUk7STVFOUNGLGlCQUFvQixFK0NvVWQsYUFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsYUFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsYUFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxhQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGFBQW9COzs7O0EwQjdSeEIsYUFBYSxDQUFiLEtBQWE7RUdiakIsRUFBRTtJNUUxQkEsaUJBQW9CLEUrQ29VZCxhQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxhQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixhQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGFBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sYUFBb0I7O0U2QnhTNUIsR0FBRztJNUU1QkQsaUJBQW9CLEUrQ29VZCxpQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsaUJBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGlCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGlCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGlCQUFvQjs7RTZCdFM1QixHQUFHO0k1RTlCRCxpQkFBb0IsRStDb1VkLGdCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxnQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsZ0JBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsZ0JBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sZ0JBQW9COztFNkJwUzVCLEdBQUc7STVFaENELGlCQUFvQixFK0NvVWQsaUJBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGlCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixpQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxpQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixpQkFBb0I7O0U2QmxTNUIsR0FBRztJNUVsQ0QsaUJBQW9CLEUrQ29VZCxnQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsZ0JBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGdCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGdCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGdCQUFvQjs7RTZCaFM1QixHQUFHO0k1RXBDRCxpQkFBb0IsRStDb1VkLGlCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxpQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsaUJBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsaUJBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4saUJBQW9COztFNkI5UjVCLEdBQUc7STVFdENELGlCQUFvQixFK0NvVWQsZ0JBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGdCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixnQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxnQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixnQkFBb0I7O0U2QjVSNUIsR0FBRztJNUV4Q0QsaUJBQW9CLEUrQ29VZCxpQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsaUJBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGlCQUFvQjtJ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QUFvQixFK0NvVWQsZ0JBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGdCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixnQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxnQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixnQkFBb0I7O0U2QnBTNUIsR0FBRztJNUVoQ0QsaUJBQW9CLEUrQ29VZCxpQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsaUJBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGlCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGlCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGlCQUFvQjs7RTZCbFM1QixHQUFHO0k1RWxDRCxpQkFBb0IsRStDb1VkLGdCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxnQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsZ0JBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsZ0JBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sZ0JBQW9COztFNkJoUzVCLEdBQUc7STVFcENELGlCQUFvQixFK0NvVWQsaUJBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGlCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixpQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxpQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixpQkFBb0I7O0U2QjlSNUIsR0FBRztJNUV0Q0QsaUJBQW9CLEUrQ29VZCxnQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsZ0JBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGdCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGdCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGdCQUFvQjs7RTZCNVI1QixHQUFHO0k1RXhDRCxpQkFBb0IsRStDb1VkLGlCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxpQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsaUJBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsaUJBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4saUJBQW9COztFNkIxUjVCLEdB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WHBCLGNBQWlCLEUrQ3dYWCxXQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFdBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxXQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sV0FBYzs7RTZCaFF0QixHQUFHO0k1RTVIRCxpQkFBb0IsRStDNFhkLFlBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsWUFBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixZQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsWUFBYztJL0NsWHBCLFNBQVksRStDa1hOLFlBQWM7O0U2QjlQdEIsR0FBRztJNUU5SEQsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FBYztJL0NwWHBCLFlBQWUsRStDb1hULFdBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixXQUFjOztFNkI1UHRCLEdBQUc7STVFaElELGlCQUFvQixFK0M0WGQsWUFBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxZQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFlBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxZQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sWUFBYzs7RTZCMVB0QixHQUFHO0k1RWxJRCxpQkFBb0IsRStDNFhkLFdBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsV0FBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixXQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsV0FBYztJL0NsWHBCLFNBQVksRStDa1hOLFdBQWM7O0U2QnhQdEIsR0FBRztJNUVwSUQsaUJBQW9CLEUrQzRYZCxZQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFlBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsWUFBYztJL0NwWHBCLFlBQWUsRStDb1hULFlBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixZQUFjOztFNkJ0UHRCLEdBQUc7STVFdElELGlCQUFvQixFK0M0WGQsV0FBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxXQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFdBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxXQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sV0FBYzs7RTZCcFB0QixHQUFHO0k1RXhJRCxpQkFBb0IsRStDNFhkLFlBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsWUFBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixZQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsWUFBYztJL0NsWHBCLFNBQVksRStDa1hOLFlBQWM7O0U2QmxQdEIsR0FBRztJNUUxSUQsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FBYztJL0NwWHBCLFlBQWUsRStDb1hULFdBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixXQUFjOztFNkJoUHRCLEdBQUc7STVFNUlELGlCQUFvQixFK0M0WGQsV0FBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxXQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFdBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxXQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sV0FBYzs7RTZCOU90QixJQUFJO0k1RTlJRixpQkFBb0IsRStDNFhkLFdBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsV0FBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixXQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsV0FBYztJL0NsWHBCLFNBQVksRStDa1hOLFdBQWM7Ozs7QTBCelZsQixrQkFBa0IsQ0FBbEIsTUFBa0I7RUd1RnRCLEVBQUU7STVFMUhBLGlCQUFvQixFK0M0WGQsV0FBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxXQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFdBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxXQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sV0FBYzs7RTZCaFF0QixHQUFHO0k1RTVIRCxpQkFBb0IsRStDNFhkLFlBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsWUFBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixZQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsWUFBYztJL0NsWHBCLFNBQVksRStDa1hOLFlBQWM7O0U2QjlQdEIsR0FBRztJNUU5SEQsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FBYztJL0NwWHBCLFlBQWUsRStDb1hULFdBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixXQUFjOztFNkI1UHRCLEdBQUc7STVFaElELGlCQUFvQixFK0M0WGQsWUFBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxZQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFlBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxZQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sWUFBYzs7RTZCMVB0QixHQUFHO0k1RWxJRCxpQkFBb0IsRStDNFhkLFdBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsV0FBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixXQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsV0FBYztJL0NsWHBCLFNBQVksRStDa1hOLFdBQWM7O0U2QnhQdEIsR0FBRztJNUVwSUQsaUJBQW9CLEUrQzRYZCxZQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFlBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsWUFBYztJL0NwWHBCLFlBQWUsRStDb1hULFlBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixZQUFjOztFNkJ0UHRCLEdBQUc7STVFdElELGlCQUFvQixFK0M0WGQsV0FBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxXQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFdBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxXQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sV0FBYzs7RTZCcFB0QixHQUFHO0k1RXhJRCxpQkFBb0IsRStDNFhkLFlBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsWUFBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixZQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsWUFBYztJL0NsWHBCLFNBQVksRStDa1hOLFlBQWM7O0U2QmxQdEIsR0FBRztJNUUxSUQsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FBYztJL0NwWHBCLFlBQWUsRStDb1hULFdBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixXQUFjOztFNkJoUHRCLEdBQUc7STVFNUlELGlCQUFvQixFK0M0WGQsV0FBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxXQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFdBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxXQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sV0FBYzs7RTZCOU90QixJQUFJO0k1RTlJRixpQkFBb0IsRStDNFhkLFdBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsV0FBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixXQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsV0FBYztJL0NsWHBCLFNBQVksRStDa1hOLFdBQWM7Ozs7QTBCclZsQixhQUFhLENBQWIsTUFBYTtFR21GakIsRUFBRTtJNUUxSEEsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FBYztJL0NwWHBCLFlBQWUsRStDb1hULFdBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixXQUFjOztFNkJoUXRCLEdBQUc7STVFNUhELGlCQUFvQixFK0M0WGQsWUFBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxZQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFlBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxZQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sWUFBYzs7RTZCOVB0QixHQUFHO0k1RTlIRCxpQkFBb0IsRStDNFhkLFdBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsV0FBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixXQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsV0FBYztJL0NsWHBCLFNBQVksRStDa1hOLFdBQWM7O0U2QjVQdEIsR0FBRztJNUVoSUQsaUJBQW9CLEUrQzRYZCxZQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFlBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsWUFBYztJL0NwWHBCLFlBQWUsRStDb1hULFlBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixZQUFjOztFNkIxUHRCLEdBQUc7STVFbElELGlCQUFvQixFK0M0WGQsV0FBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxXQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFdBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxXQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sV0FBYzs7RTZCeFB0QixHQUFHO0k1RXBJRCxpQkFBb0IsRStDNFhkLFlBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsWUFBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixZQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsWUFBYztJL0NsWHBCLFNBQVksRStDa1hOLFlBQWM7O0U2QnRQdEIsR0FBRztJNUV0SUQsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FBYztJL0NwWHBCLFlBQWUsRStDb1hULFdBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixXQUFjOztFNkJwUHRCLEdBQUc7STVFeElELGlCQUFvQixFK0M0WGQsWUFBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxZQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFlBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxZQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sWUFBYzs7RTZCbFB0QixHQUFHO0k1RTFJRCxpQkFBb0IsRStDNFhkLFdBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsV0FBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixXQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsV0FBYztJL0NsWHBCLFNBQVksRStDa1hOLFdBQWM7O0U2QmhQdEIsR0FBRztJNUU1SUQsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FB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 */
