@charset "UTF-8";

/*!
 * animate.css -http://daneden.me/animate
 * Version - 3.5.1
 * Licensed under the MIT license - http://opensource.org/licenses/MIT
 *
 * Copyright (c) 2016 Daniel Eden
 */

.animated {
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
}

.animated.infinite {
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
}

.animated.hinge {
  -webkit-animation-duration: 2s;
  animation-duration: 2s;
}

.animated.flipOutX,
.animated.flipOutY,
.animated.bounceIn,
.animated.bounceOut {
  -webkit-animation-duration: .75s;
  animation-duration: .75s;
}

@-webkit-keyframes bounce {
  from, 20%, 53%, 80%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    -webkit-transform: translate3d(0,0,0);
    transform: translate3d(0,0,0);
  }

  40%, 43% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
    -webkit-transform: translate3d(0, -30px, 0);
    transform: translate3d(0, -30px, 0);
  }

  70% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
    -webkit-transform: translate3d(0, -15px, 0);
    transform: translate3d(0, -15px, 0);
  }

  90% {
    -webkit-transform: translate3d(0,-4px,0);
    transform: translate3d(0,-4px,0);
  }
}

@keyframes bounce {
  from, 20%, 53%, 80%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    -webkit-transform: translate3d(0,0,0);
    transform: translate3d(0,0,0);
  }

  40%, 43% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
    -webkit-transform: translate3d(0, -30px, 0);
    transform: translate3d(0, -30px, 0);
  }

  70% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
    -webkit-transform: translate3d(0, -15px, 0);
    transform: translate3d(0, -15px, 0);
  }

  90% {
    -webkit-transform: translate3d(0,-4px,0);
    transform: translate3d(0,-4px,0);
  }
}

.bounce {
  -webkit-animation-name: bounce;
  animation-name: bounce;
  -webkit-transform-origin: center bottom;
  transform-origin: center bottom;
}

@-webkit-keyframes flash {
  from, 50%, to {
    opacity: 1;
  }

  25%, 75% {
    opacity: 0;
  }
}

@keyframes flash {
  from, 50%, to {
    opacity: 1;
  }

  25%, 75% {
    opacity: 0;
  }
}

.flash {
  -webkit-animation-name: flash;
  animation-name: flash;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */

@-webkit-keyframes pulse {
  from {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }

  50% {
    -webkit-transform: scale3d(1.05, 1.05, 1.05);
    transform: scale3d(1.05, 1.05, 1.05);
  }

  to {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

@keyframes pulse {
  from {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }

  50% {
    -webkit-transform: scale3d(1.05, 1.05, 1.05);
    transform: scale3d(1.05, 1.05, 1.05);
  }

  to {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

.pulse {
  -webkit-animation-name: pulse;
  animation-name: pulse;
}

@-webkit-keyframes rubberBand {
  from {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }

  30% {
    -webkit-transform: scale3d(1.25, 0.75, 1);
    transform: scale3d(1.25, 0.75, 1);
  }

  40% {
    -webkit-transform: scale3d(0.75, 1.25, 1);
    transform: scale3d(0.75, 1.25, 1);
  }

  50% {
    -webkit-transform: scale3d(1.15, 0.85, 1);
    transform: scale3d(1.15, 0.85, 1);
  }

  65% {
    -webkit-transform: scale3d(.95, 1.05, 1);
    transform: scale3d(.95, 1.05, 1);
  }

  75% {
    -webkit-transform: scale3d(1.05, .95, 1);
    transform: scale3d(1.05, .95, 1);
  }

  to {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

@keyframes rubberBand {
  from {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }

  30% {
    -webkit-transform: scale3d(1.25, 0.75, 1);
    transform: scale3d(1.25, 0.75, 1);
  }

  40% {
    -webkit-transform: scale3d(0.75, 1.25, 1);
    transform: scale3d(0.75, 1.25, 1);
  }

  50% {
    -webkit-transform: scale3d(1.15, 0.85, 1);
    transform: scale3d(1.15, 0.85, 1);
  }

  65% {
    -webkit-transform: scale3d(.95, 1.05, 1);
    transform: scale3d(.95, 1.05, 1);
  }

  75% {
    -webkit-transform: scale3d(1.05, .95, 1);
    transform: scale3d(1.05, .95, 1);
  }

  to {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

.rubberBand {
  -webkit-animation-name: rubberBand;
  animation-name: rubberBand;
}

@-webkit-keyframes shake {
  from, to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  10%, 30%, 50%, 70%, 90% {
    -webkit-transform: translate3d(-10px, 0, 0);
    transform: translate3d(-10px, 0, 0);
  }

  20%, 40%, 60%, 80% {
    -webkit-transform: translate3d(10px, 0, 0);
    transform: translate3d(10px, 0, 0);
  }
}

@keyframes shake {
  from, to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  10%, 30%, 50%, 70%, 90% {
    -webkit-transform: translate3d(-10px, 0, 0);
    transform: translate3d(-10px, 0, 0);
  }

  20%, 40%, 60%, 80% {
    -webkit-transform: translate3d(10px, 0, 0);
    transform: translate3d(10px, 0, 0);
  }
}

.shake {
  -webkit-animation-name: shake;
  animation-name: shake;
}

@-webkit-keyframes headShake {
  0% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
  }

  6.5% {
    -webkit-transform: translateX(-6px) rotateY(-9deg);
    transform: translateX(-6px) rotateY(-9deg);
  }

  18.5% {
    -webkit-transform: translateX(5px) rotateY(7deg);
    transform: translateX(5px) rotateY(7deg);
  }

  31.5% {
    -webkit-transform: translateX(-3px) rotateY(-5deg);
    transform: translateX(-3px) rotateY(-5deg);
  }

  43.5% {
    -webkit-transform: translateX(2px) rotateY(3deg);
    transform: translateX(2px) rotateY(3deg);
  }

  50% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
  }
}

@keyframes headShake {
  0% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
  }

  6.5% {
    -webkit-transform: translateX(-6px) rotateY(-9deg);
    transform: translateX(-6px) rotateY(-9deg);
  }

  18.5% {
    -webkit-transform: translateX(5px) rotateY(7deg);
    transform: translateX(5px) rotateY(7deg);
  }

  31.5% {
    -webkit-transform: translateX(-3px) rotateY(-5deg);
    transform: translateX(-3px) rotateY(-5deg);
  }

  43.5% {
    -webkit-transform: translateX(2px) rotateY(3deg);
    transform: translateX(2px) rotateY(3deg);
  }

  50% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
  }
}

.headShake {
  -webkit-animation-timing-function: ease-in-out;
  animation-timing-function: ease-in-out;
  -webkit-animation-name: headShake;
  animation-name: headShake;
}

@-webkit-keyframes swing {
  20% {
    -webkit-transform: rotate3d(0, 0, 1, 15deg);
    transform: rotate3d(0, 0, 1, 15deg);
  }

  40% {
    -webkit-transform: rotate3d(0, 0, 1, -10deg);
    transform: rotate3d(0, 0, 1, -10deg);
  }

  60% {
    -webkit-transform: rotate3d(0, 0, 1, 5deg);
    transform: rotate3d(0, 0, 1, 5deg);
  }

  80% {
    -webkit-transform: rotate3d(0, 0, 1, -5deg);
    transform: rotate3d(0, 0, 1, -5deg);
  }

  to {
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
    transform: rotate3d(0, 0, 1, 0deg);
  }
}

@keyframes swing {
  20% {
    -webkit-transform: rotate3d(0, 0, 1, 15deg);
    transform: rotate3d(0, 0, 1, 15deg);
  }

  40% {
    -webkit-transform: rotate3d(0, 0, 1, -10deg);
    transform: rotate3d(0, 0, 1, -10deg);
  }

  60% {
    -webkit-transform: rotate3d(0, 0, 1, 5deg);
    transform: rotate3d(0, 0, 1, 5deg);
  }

  80% {
    -webkit-transform: rotate3d(0, 0, 1, -5deg);
    transform: rotate3d(0, 0, 1, -5deg);
  }

  to {
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
    transform: rotate3d(0, 0, 1, 0deg);
  }
}

.swing {
  -webkit-transform-origin: top center;
  transform-origin: top center;
  -webkit-animation-name: swing;
  animation-name: swing;
}

@-webkit-keyframes tada {
  from {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }

  10%, 20% {
    -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
    transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
  }

  30%, 50%, 70%, 90% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  }

  40%, 60%, 80% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  }

  to {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

@keyframes tada {
  from {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }

  10%, 20% {
    -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
    transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
  }

  30%, 50%, 70%, 90% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  }

  40%, 60%, 80% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  }

  to {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

.tada {
  -webkit-animation-name: tada;
  animation-name: tada;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */

@-webkit-keyframes wobble {
  from {
    -webkit-transform: none;
    transform: none;
  }

  15% {
    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
  }

  30% {
    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
  }

  45% {
    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
  }

  60% {
    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
  }

  75% {
    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
  }

  to {
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes wobble {
  from {
    -webkit-transform: none;
    transform: none;
  }

  15% {
    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
  }

  30% {
    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
  }

  45% {
    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
  }

  60% {
    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
  }

  75% {
    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
  }

  to {
    -webkit-transform: none;
    transform: none;
  }
}

.wobble {
  -webkit-animation-name: wobble;
  animation-name: wobble;
}

@-webkit-keyframes jello {
  from, 11.1%, to {
    -webkit-transform: none;
    transform: none;
  }

  22.2% {
    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
    transform: skewX(-12.5deg) skewY(-12.5deg);
  }

  33.3% {
    -webkit-transform: skewX(6.25deg) skewY(6.25deg);
    transform: skewX(6.25deg) skewY(6.25deg);
  }

  44.4% {
    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
    transform: skewX(-3.125deg) skewY(-3.125deg);
  }

  55.5% {
    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
    transform: skewX(1.5625deg) skewY(1.5625deg);
  }

  66.6% {
    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
    transform: skewX(-0.78125deg) skewY(-0.78125deg);
  }

  77.7% {
    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
    transform: skewX(0.390625deg) skewY(0.390625deg);
  }

  88.8% {
    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
  }
}

@keyframes jello {
  from, 11.1%, to {
    -webkit-transform: none;
    transform: none;
  }

  22.2% {
    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
    transform: skewX(-12.5deg) skewY(-12.5deg);
  }

  33.3% {
    -webkit-transform: skewX(6.25deg) skewY(6.25deg);
    transform: skewX(6.25deg) skewY(6.25deg);
  }

  44.4% {
    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
    transform: skewX(-3.125deg) skewY(-3.125deg);
  }

  55.5% {
    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
    transform: skewX(1.5625deg) skewY(1.5625deg);
  }

  66.6% {
    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
    transform: skewX(-0.78125deg) skewY(-0.78125deg);
  }

  77.7% {
    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
    transform: skewX(0.390625deg) skewY(0.390625deg);
  }

  88.8% {
    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
  }
}

.jello {
  -webkit-animation-name: jello;
  animation-name: jello;
  -webkit-transform-origin: center;
  transform-origin: center;
}

@-webkit-keyframes bounceIn {
  from, 20%, 40%, 60%, 80%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  }

  0% {
    opacity: 0;
    -webkit-transform: scale3d(.3, .3, .3);
    transform: scale3d(.3, .3, .3);
  }

  20% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
    transform: scale3d(1.1, 1.1, 1.1);
  }

  40% {
    -webkit-transform: scale3d(.9, .9, .9);
    transform: scale3d(.9, .9, .9);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(1.03, 1.03, 1.03);
    transform: scale3d(1.03, 1.03, 1.03);
  }

  80% {
    -webkit-transform: scale3d(.97, .97, .97);
    transform: scale3d(.97, .97, .97);
  }

  to {
    opacity: 1;
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

@keyframes bounceIn {
  from, 20%, 40%, 60%, 80%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  }

  0% {
    opacity: 0;
    -webkit-transform: scale3d(.3, .3, .3);
    transform: scale3d(.3, .3, .3);
  }

  20% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
    transform: scale3d(1.1, 1.1, 1.1);
  }

  40% {
    -webkit-transform: scale3d(.9, .9, .9);
    transform: scale3d(.9, .9, .9);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(1.03, 1.03, 1.03);
    transform: scale3d(1.03, 1.03, 1.03);
  }

  80% {
    -webkit-transform: scale3d(.97, .97, .97);
    transform: scale3d(.97, .97, .97);
  }

  to {
    opacity: 1;
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

.bounceIn {
  -webkit-animation-name: bounceIn;
  animation-name: bounceIn;
}

@-webkit-keyframes bounceInDown {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  }

  0% {
    opacity: 0;
    -webkit-transform: translate3d(0, -3000px, 0);
    transform: translate3d(0, -3000px, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(0, 25px, 0);
    transform: translate3d(0, 25px, 0);
  }

  75% {
    -webkit-transform: translate3d(0, -10px, 0);
    transform: translate3d(0, -10px, 0);
  }

  90% {
    -webkit-transform: translate3d(0, 5px, 0);
    transform: translate3d(0, 5px, 0);
  }

  to {
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes bounceInDown {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  }

  0% {
    opacity: 0;
    -webkit-transform: translate3d(0, -3000px, 0);
    transform: translate3d(0, -3000px, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(0, 25px, 0);
    transform: translate3d(0, 25px, 0);
  }

  75% {
    -webkit-transform: translate3d(0, -10px, 0);
    transform: translate3d(0, -10px, 0);
  }

  90% {
    -webkit-transform: translate3d(0, 5px, 0);
    transform: translate3d(0, 5px, 0);
  }

  to {
    -webkit-transform: none;
    transform: none;
  }
}

.bounceInDown {
  -webkit-animation-name: bounceInDown;
  animation-name: bounceInDown;
}

@-webkit-keyframes bounceInLeft {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  }

  0% {
    opacity: 0;
    -webkit-transform: translate3d(-3000px, 0, 0);
    transform: translate3d(-3000px, 0, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(25px, 0, 0);
    transform: translate3d(25px, 0, 0);
  }

  75% {
    -webkit-transform: translate3d(-10px, 0, 0);
    transform: translate3d(-10px, 0, 0);
  }

  90% {
    -webkit-transform: translate3d(5px, 0, 0);
    transform: translate3d(5px, 0, 0);
  }

  to {
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes bounceInLeft {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  }

  0% {
    opacity: 0;
    -webkit-transform: translate3d(-3000px, 0, 0);
    transform: translate3d(-3000px, 0, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(25px, 0, 0);
    transform: translate3d(25px, 0, 0);
  }

  75% {
    -webkit-transform: translate3d(-10px, 0, 0);
    transform: translate3d(-10px, 0, 0);
  }

  90% {
    -webkit-transform: translate3d(5px, 0, 0);
    transform: translate3d(5px, 0, 0);
  }

  to {
    -webkit-transform: none;
    transform: none;
  }
}

.bounceInLeft {
  -webkit-animation-name: bounceInLeft;
  animation-name: bounceInLeft;
}

@-webkit-keyframes bounceInRight {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  }

  from {
    opacity: 0;
    -webkit-transform: translate3d(3000px, 0, 0);
    transform: translate3d(3000px, 0, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(-25px, 0, 0);
    transform: translate3d(-25px, 0, 0);
  }

  75% {
    -webkit-transform: translate3d(10px, 0, 0);
    transform: translate3d(10px, 0, 0);
  }

  90% {
    -webkit-transform: translate3d(-5px, 0, 0);
    transform: translate3d(-5px, 0, 0);
  }

  to {
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes bounceInRight {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  }

  from {
    opacity: 0;
    -webkit-transform: translate3d(3000px, 0, 0);
    transform: translate3d(3000px, 0, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(-25px, 0, 0);
    transform: translate3d(-25px, 0, 0);
  }

  75% {
    -webkit-transform: translate3d(10px, 0, 0);
    transform: translate3d(10px, 0, 0);
  }

  90% {
    -webkit-transform: translate3d(-5px, 0, 0);
    transform: translate3d(-5px, 0, 0);
  }

  to {
    -webkit-transform: none;
    transform: none;
  }
}

.bounceInRight {
  -webkit-animation-name: bounceInRight;
  animation-name: bounceInRight;
}

@-webkit-keyframes bounceInUp {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  }

  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 3000px, 0);
    transform: translate3d(0, 3000px, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(0, -20px, 0);
    transform: translate3d(0, -20px, 0);
  }

  75% {
    -webkit-transform: translate3d(0, 10px, 0);
    transform: translate3d(0, 10px, 0);
  }

  90% {
    -webkit-transform: translate3d(0, -5px, 0);
    transform: translate3d(0, -5px, 0);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes bounceInUp {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  }

  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 3000px, 0);
    transform: translate3d(0, 3000px, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(0, -20px, 0);
    transform: translate3d(0, -20px, 0);
  }

  75% {
    -webkit-transform: translate3d(0, 10px, 0);
    transform: translate3d(0, 10px, 0);
  }

  90% {
    -webkit-transform: translate3d(0, -5px, 0);
    transform: translate3d(0, -5px, 0);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.bounceInUp {
  -webkit-animation-name: bounceInUp;
  animation-name: bounceInUp;
}

@-webkit-keyframes bounceOut {
  20% {
    -webkit-transform: scale3d(.9, .9, .9);
    transform: scale3d(.9, .9, .9);
  }

  50%, 55% {
    opacity: 1;
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
    transform: scale3d(1.1, 1.1, 1.1);
  }

  to {
    opacity: 0;
    -webkit-transform: scale3d(.3, .3, .3);
    transform: scale3d(.3, .3, .3);
  }
}

@keyframes bounceOut {
  20% {
    -webkit-transform: scale3d(.9, .9, .9);
    transform: scale3d(.9, .9, .9);
  }

  50%, 55% {
    opacity: 1;
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
    transform: scale3d(1.1, 1.1, 1.1);
  }

  to {
    opacity: 0;
    -webkit-transform: scale3d(.3, .3, .3);
    transform: scale3d(.3, .3, .3);
  }
}

.bounceOut {
  -webkit-animation-name: bounceOut;
  animation-name: bounceOut;
}

@-webkit-keyframes bounceOutDown {
  20% {
    -webkit-transform: translate3d(0, 10px, 0);
    transform: translate3d(0, 10px, 0);
  }

  40%, 45% {
    opacity: 1;
    -webkit-transform: translate3d(0, -20px, 0);
    transform: translate3d(0, -20px, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
    transform: translate3d(0, 2000px, 0);
  }
}

@keyframes bounceOutDown {
  20% {
    -webkit-transform: translate3d(0, 10px, 0);
    transform: translate3d(0, 10px, 0);
  }

  40%, 45% {
    opacity: 1;
    -webkit-transform: translate3d(0, -20px, 0);
    transform: translate3d(0, -20px, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
    transform: translate3d(0, 2000px, 0);
  }
}

.bounceOutDown {
  -webkit-animation-name: bounceOutDown;
  animation-name: bounceOutDown;
}

@-webkit-keyframes bounceOutLeft {
  20% {
    opacity: 1;
    -webkit-transform: translate3d(20px, 0, 0);
    transform: translate3d(20px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
    transform: translate3d(-2000px, 0, 0);
  }
}

@keyframes bounceOutLeft {
  20% {
    opacity: 1;
    -webkit-transform: translate3d(20px, 0, 0);
    transform: translate3d(20px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
    transform: translate3d(-2000px, 0, 0);
  }
}

.bounceOutLeft {
  -webkit-animation-name: bounceOutLeft;
  animation-name: bounceOutLeft;
}

@-webkit-keyframes bounceOutRight {
  20% {
    opacity: 1;
    -webkit-transform: translate3d(-20px, 0, 0);
    transform: translate3d(-20px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
    transform: translate3d(2000px, 0, 0);
  }
}

@keyframes bounceOutRight {
  20% {
    opacity: 1;
    -webkit-transform: translate3d(-20px, 0, 0);
    transform: translate3d(-20px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
    transform: translate3d(2000px, 0, 0);
  }
}

.bounceOutRight {
  -webkit-animation-name: bounceOutRight;
  animation-name: bounceOutRight;
}

@-webkit-keyframes bounceOutUp {
  20% {
    -webkit-transform: translate3d(0, -10px, 0);
    transform: translate3d(0, -10px, 0);
  }

  40%, 45% {
    opacity: 1;
    -webkit-transform: translate3d(0, 20px, 0);
    transform: translate3d(0, 20px, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
    transform: translate3d(0, -2000px, 0);
  }
}

@keyframes bounceOutUp {
  20% {
    -webkit-transform: translate3d(0, -10px, 0);
    transform: translate3d(0, -10px, 0);
  }

  40%, 45% {
    opacity: 1;
    -webkit-transform: translate3d(0, 20px, 0);
    transform: translate3d(0, 20px, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
    transform: translate3d(0, -2000px, 0);
  }
}

.bounceOutUp {
  -webkit-animation-name: bounceOutUp;
  animation-name: bounceOutUp;
}

@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

.fadeIn {
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

@-webkit-keyframes fadeInDown {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes fadeInDown {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

.fadeInDown {
  -webkit-animation-name: fadeInDown;
  animation-name: fadeInDown;
}

@-webkit-keyframes fadeInDownBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
    transform: translate3d(0, -2000px, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes fadeInDownBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
    transform: translate3d(0, -2000px, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

.fadeInDownBig {
  -webkit-animation-name: fadeInDownBig;
  animation-name: fadeInDownBig;
}

@-webkit-keyframes fadeInLeft {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes fadeInLeft {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

.fadeInLeft {
  -webkit-animation-name: fadeInLeft;
  animation-name: fadeInLeft;
}

@-webkit-keyframes fadeInLeftBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
    transform: translate3d(-2000px, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes fadeInLeftBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
    transform: translate3d(-2000px, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

.fadeInLeftBig {
  -webkit-animation-name: fadeInLeftBig;
  animation-name: fadeInLeftBig;
}

@-webkit-keyframes fadeInRight {
  from {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes fadeInRight {
  from {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

.fadeInRight {
  -webkit-animation-name: fadeInRight;
  animation-name: fadeInRight;
}

@-webkit-keyframes fadeInRightBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
    transform: translate3d(2000px, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes fadeInRightBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
    transform: translate3d(2000px, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

.fadeInRightBig {
  -webkit-animation-name: fadeInRightBig;
  animation-name: fadeInRightBig;
}

@-webkit-keyframes fadeInUp {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

.fadeInUp {
  -webkit-animation-name: fadeInUp;
  animation-name: fadeInUp;
}

@-webkit-keyframes fadeInUpBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
    transform: translate3d(0, 2000px, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes fadeInUpBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
    transform: translate3d(0, 2000px, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

.fadeInUpBig {
  -webkit-animation-name: fadeInUpBig;
  animation-name: fadeInUpBig;
}

@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
  }
}

@keyframes fadeOut {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
  }
}

.fadeOut {
  -webkit-animation-name: fadeOut;
  animation-name: fadeOut;
}

@-webkit-keyframes fadeOutDown {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }
}

@keyframes fadeOutDown {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }
}

.fadeOutDown {
  -webkit-animation-name: fadeOutDown;
  animation-name: fadeOutDown;
}

@-webkit-keyframes fadeOutDownBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
    transform: translate3d(0, 2000px, 0);
  }
}

@keyframes fadeOutDownBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
    transform: translate3d(0, 2000px, 0);
  }
}

.fadeOutDownBig {
  -webkit-animation-name: fadeOutDownBig;
  animation-name: fadeOutDownBig;
}

@-webkit-keyframes fadeOutLeft {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes fadeOutLeft {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

.fadeOutLeft {
  -webkit-animation-name: fadeOutLeft;
  animation-name: fadeOutLeft;
}

@-webkit-keyframes fadeOutLeftBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
    transform: translate3d(-2000px, 0, 0);
  }
}

@keyframes fadeOutLeftBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
    transform: translate3d(-2000px, 0, 0);
  }
}

.fadeOutLeftBig {
  -webkit-animation-name: fadeOutLeftBig;
  animation-name: fadeOutLeftBig;
}

@-webkit-keyframes fadeOutRight {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes fadeOutRight {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

.fadeOutRight {
  -webkit-animation-name: fadeOutRight;
  animation-name: fadeOutRight;
}

@-webkit-keyframes fadeOutRightBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
    transform: translate3d(2000px, 0, 0);
  }
}

@keyframes fadeOutRightBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
    transform: translate3d(2000px, 0, 0);
  }
}

.fadeOutRightBig {
  -webkit-animation-name: fadeOutRightBig;
  animation-name: fadeOutRightBig;
}

@-webkit-keyframes fadeOutUp {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }
}

@keyframes fadeOutUp {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }
}

.fadeOutUp {
  -webkit-animation-name: fadeOutUp;
  animation-name: fadeOutUp;
}

@-webkit-keyframes fadeOutUpBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
    transform: translate3d(0, -2000px, 0);
  }
}

@keyframes fadeOutUpBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
    transform: translate3d(0, -2000px, 0);
  }
}

.fadeOutUpBig {
  -webkit-animation-name: fadeOutUpBig;
  animation-name: fadeOutUpBig;
}

@-webkit-keyframes flip {
  from {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
    -webkit-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }

  40% {
    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
    -webkit-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }

  50% {
    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  80% {
    -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
    transform: perspective(400px) scale3d(.95, .95, .95);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  to {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

@keyframes flip {
  from {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
    -webkit-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }

  40% {
    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
    -webkit-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }

  50% {
    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  80% {
    -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
    transform: perspective(400px) scale3d(.95, .95, .95);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  to {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

.animated.flip {
  -webkit-backface-visibility: visible;
  backface-visibility: visible;
  -webkit-animation-name: flip;
  animation-name: flip;
}

@-webkit-keyframes flipInX {
  from {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
    opacity: 0;
  }

  40% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  60% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
    opacity: 1;
  }

  80% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
  }

  to {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }
}

@keyframes flipInX {
  from {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
    opacity: 0;
  }

  40% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  60% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
    opacity: 1;
  }

  80% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
  }

  to {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }
}

.flipInX {
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
  -webkit-animation-name: flipInX;
  animation-name: flipInX;
}

@-webkit-keyframes flipInY {
  from {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
    opacity: 0;
  }

  40% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  60% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
    opacity: 1;
  }

  80% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  }

  to {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }
}

@keyframes flipInY {
  from {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
    opacity: 0;
  }

  40% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  60% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
    opacity: 1;
  }

  80% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  }

  to {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }
}

.flipInY {
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
  -webkit-animation-name: flipInY;
  animation-name: flipInY;
}

@-webkit-keyframes flipOutX {
  from {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }

  30% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    opacity: 1;
  }

  to {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    opacity: 0;
  }
}

@keyframes flipOutX {
  from {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }

  30% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    opacity: 1;
  }

  to {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    opacity: 0;
  }
}

.flipOutX {
  -webkit-animation-name: flipOutX;
  animation-name: flipOutX;
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
}

@-webkit-keyframes flipOutY {
  from {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }

  30% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
    opacity: 1;
  }

  to {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    opacity: 0;
  }
}

@keyframes flipOutY {
  from {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }

  30% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
    opacity: 1;
  }

  to {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    opacity: 0;
  }
}

.flipOutY {
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
  -webkit-animation-name: flipOutY;
  animation-name: flipOutY;
}

@-webkit-keyframes lightSpeedIn {
  from {
    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
    transform: translate3d(100%, 0, 0) skewX(-30deg);
    opacity: 0;
  }

  60% {
    -webkit-transform: skewX(20deg);
    transform: skewX(20deg);
    opacity: 1;
  }

  80% {
    -webkit-transform: skewX(-5deg);
    transform: skewX(-5deg);
    opacity: 1;
  }

  to {
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

@keyframes lightSpeedIn {
  from {
    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
    transform: translate3d(100%, 0, 0) skewX(-30deg);
    opacity: 0;
  }

  60% {
    -webkit-transform: skewX(20deg);
    transform: skewX(20deg);
    opacity: 1;
  }

  80% {
    -webkit-transform: skewX(-5deg);
    transform: skewX(-5deg);
    opacity: 1;
  }

  to {
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

.lightSpeedIn {
  -webkit-animation-name: lightSpeedIn;
  animation-name: lightSpeedIn;
  -webkit-animation-timing-function: ease-out;
  animation-timing-function: ease-out;
}

@-webkit-keyframes lightSpeedOut {
  from {
    opacity: 1;
  }

  to {
    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
    transform: translate3d(100%, 0, 0) skewX(30deg);
    opacity: 0;
  }
}

@keyframes lightSpeedOut {
  from {
    opacity: 1;
  }

  to {
    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
    transform: translate3d(100%, 0, 0) skewX(30deg);
    opacity: 0;
  }
}

.lightSpeedOut {
  -webkit-animation-name: lightSpeedOut;
  animation-name: lightSpeedOut;
  -webkit-animation-timing-function: ease-in;
  animation-timing-function: ease-in;
}

@-webkit-keyframes rotateIn {
  from {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: rotate3d(0, 0, 1, -200deg);
    transform: rotate3d(0, 0, 1, -200deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

@keyframes rotateIn {
  from {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: rotate3d(0, 0, 1, -200deg);
    transform: rotate3d(0, 0, 1, -200deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

.rotateIn {
  -webkit-animation-name: rotateIn;
  animation-name: rotateIn;
}

@-webkit-keyframes rotateInDownLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

@keyframes rotateInDownLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

.rotateInDownLeft {
  -webkit-animation-name: rotateInDownLeft;
  animation-name: rotateInDownLeft;
}

@-webkit-keyframes rotateInDownRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

@keyframes rotateInDownRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

.rotateInDownRight {
  -webkit-animation-name: rotateInDownRight;
  animation-name: rotateInDownRight;
}

@-webkit-keyframes rotateInUpLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

@keyframes rotateInUpLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

.rotateInUpLeft {
  -webkit-animation-name: rotateInUpLeft;
  animation-name: rotateInUpLeft;
}

@-webkit-keyframes rotateInUpRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, -90deg);
    transform: rotate3d(0, 0, 1, -90deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

@keyframes rotateInUpRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, -90deg);
    transform: rotate3d(0, 0, 1, -90deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

.rotateInUpRight {
  -webkit-animation-name: rotateInUpRight;
  animation-name: rotateInUpRight;
}

@-webkit-keyframes rotateOut {
  from {
    -webkit-transform-origin: center;
    transform-origin: center;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: rotate3d(0, 0, 1, 200deg);
    transform: rotate3d(0, 0, 1, 200deg);
    opacity: 0;
  }
}

@keyframes rotateOut {
  from {
    -webkit-transform-origin: center;
    transform-origin: center;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: rotate3d(0, 0, 1, 200deg);
    transform: rotate3d(0, 0, 1, 200deg);
    opacity: 0;
  }
}

.rotateOut {
  -webkit-animation-name: rotateOut;
  animation-name: rotateOut;
}

@-webkit-keyframes rotateOutDownLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
}

@keyframes rotateOutDownLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
}

.rotateOutDownLeft {
  -webkit-animation-name: rotateOutDownLeft;
  animation-name: rotateOutDownLeft;
}

@-webkit-keyframes rotateOutDownRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}

@keyframes rotateOutDownRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}

.rotateOutDownRight {
  -webkit-animation-name: rotateOutDownRight;
  animation-name: rotateOutDownRight;
}

@-webkit-keyframes rotateOutUpLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}

@keyframes rotateOutUpLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}

.rotateOutUpLeft {
  -webkit-animation-name: rotateOutUpLeft;
  animation-name: rotateOutUpLeft;
}

@-webkit-keyframes rotateOutUpRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, 90deg);
    transform: rotate3d(0, 0, 1, 90deg);
    opacity: 0;
  }
}

@keyframes rotateOutUpRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, 90deg);
    transform: rotate3d(0, 0, 1, 90deg);
    opacity: 0;
  }
}

.rotateOutUpRight {
  -webkit-animation-name: rotateOutUpRight;
  animation-name: rotateOutUpRight;
}

@-webkit-keyframes hinge {
  0% {
    -webkit-transform-origin: top left;
    transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }

  20%, 60% {
    -webkit-transform: rotate3d(0, 0, 1, 80deg);
    transform: rotate3d(0, 0, 1, 80deg);
    -webkit-transform-origin: top left;
    transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }

  40%, 80% {
    -webkit-transform: rotate3d(0, 0, 1, 60deg);
    transform: rotate3d(0, 0, 1, 60deg);
    -webkit-transform-origin: top left;
    transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
    opacity: 1;
  }

  to {
    -webkit-transform: translate3d(0, 700px, 0);
    transform: translate3d(0, 700px, 0);
    opacity: 0;
  }
}

@keyframes hinge {
  0% {
    -webkit-transform-origin: top left;
    transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }

  20%, 60% {
    -webkit-transform: rotate3d(0, 0, 1, 80deg);
    transform: rotate3d(0, 0, 1, 80deg);
    -webkit-transform-origin: top left;
    transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }

  40%, 80% {
    -webkit-transform: rotate3d(0, 0, 1, 60deg);
    transform: rotate3d(0, 0, 1, 60deg);
    -webkit-transform-origin: top left;
    transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
    opacity: 1;
  }

  to {
    -webkit-transform: translate3d(0, 700px, 0);
    transform: translate3d(0, 700px, 0);
    opacity: 0;
  }
}

.hinge {
  -webkit-animation-name: hinge;
  animation-name: hinge;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */

@-webkit-keyframes rollIn {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes rollIn {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
  }

  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

.rollIn {
  -webkit-animation-name: rollIn;
  animation-name: rollIn;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */

@-webkit-keyframes rollOut {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
  }
}

@keyframes rollOut {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
  }
}

.rollOut {
  -webkit-animation-name: rollOut;
  animation-name: rollOut;
}

@-webkit-keyframes zoomIn {
  from {
    opacity: 0;
    -webkit-transform: scale3d(.3, .3, .3);
    transform: scale3d(.3, .3, .3);
  }

  50% {
    opacity: 1;
  }
}

@keyframes zoomIn {
  from {
    opacity: 0;
    -webkit-transform: scale3d(.3, .3, .3);
    transform: scale3d(.3, .3, .3);
  }

  50% {
    opacity: 1;
  }
}

.zoomIn {
  -webkit-animation-name: zoomIn;
  animation-name: zoomIn;
}

@-webkit-keyframes zoomInDown {
  from {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
    transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

@keyframes zoomInDown {
  from {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
    transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

.zoomInDown {
  -webkit-animation-name: zoomInDown;
  animation-name: zoomInDown;
}

@-webkit-keyframes zoomInLeft {
  from {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
    transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
    transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

@keyframes zoomInLeft {
  from {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
    transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
    transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

.zoomInLeft {
  -webkit-animation-name: zoomInLeft;
  animation-name: zoomInLeft;
}

@-webkit-keyframes zoomInRight {
  from {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
    transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
    transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

@keyframes zoomInRight {
  from {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
    transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
    transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

.zoomInRight {
  -webkit-animation-name: zoomInRight;
  animation-name: zoomInRight;
}

@-webkit-keyframes zoomInUp {
  from {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
    transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

@keyframes zoomInUp {
  from {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
    transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

.zoomInUp {
  -webkit-animation-name: zoomInUp;
  animation-name: zoomInUp;
}

@-webkit-keyframes zoomOut {
  from {
    opacity: 1;
  }

  50% {
    opacity: 0;
    -webkit-transform: scale3d(.3, .3, .3);
    transform: scale3d(.3, .3, .3);
  }

  to {
    opacity: 0;
  }
}

@keyframes zoomOut {
  from {
    opacity: 1;
  }

  50% {
    opacity: 0;
    -webkit-transform: scale3d(.3, .3, .3);
    transform: scale3d(.3, .3, .3);
  }

  to {
    opacity: 0;
  }
}

.zoomOut {
  -webkit-animation-name: zoomOut;
  animation-name: zoomOut;
}

@-webkit-keyframes zoomOutDown {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  to {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
    transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
    -webkit-transform-origin: center bottom;
    transform-origin: center bottom;
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

@keyframes zoomOutDown {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  to {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
    transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
    -webkit-transform-origin: center bottom;
    transform-origin: center bottom;
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

.zoomOutDown {
  -webkit-animation-name: zoomOutDown;
  animation-name: zoomOutDown;
}

@-webkit-keyframes zoomOutLeft {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
    transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
    transform: scale(.1) translate3d(-2000px, 0, 0);
    -webkit-transform-origin: left center;
    transform-origin: left center;
  }
}

@keyframes zoomOutLeft {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
    transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
    transform: scale(.1) translate3d(-2000px, 0, 0);
    -webkit-transform-origin: left center;
    transform-origin: left center;
  }
}

.zoomOutLeft {
  -webkit-animation-name: zoomOutLeft;
  animation-name: zoomOutLeft;
}

@-webkit-keyframes zoomOutRight {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
    transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
    transform: scale(.1) translate3d(2000px, 0, 0);
    -webkit-transform-origin: right center;
    transform-origin: right center;
  }
}

@keyframes zoomOutRight {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
    transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
    transform: scale(.1) translate3d(2000px, 0, 0);
    -webkit-transform-origin: right center;
    transform-origin: right center;
  }
}

.zoomOutRight {
  -webkit-animation-name: zoomOutRight;
  animation-name: zoomOutRight;
}

@-webkit-keyframes zoomOutUp {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  to {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
    transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
    -webkit-transform-origin: center bottom;
    transform-origin: center bottom;
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

@keyframes zoomOutUp {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  to {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
    transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
    -webkit-transform-origin: center bottom;
    transform-origin: center bottom;
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

.zoomOutUp {
  -webkit-animation-name: zoomOutUp;
  animation-name: zoomOutUp;
}

@-webkit-keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.slideInDown {
  -webkit-animation-name: slideInDown;
  animation-name: slideInDown;
}

@-webkit-keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.slideInLeft {
  -webkit-animation-name: slideInLeft;
  animation-name: slideInLeft;
}

@-webkit-keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.slideInRight {
  -webkit-animation-name: slideInRight;
  animation-name: slideInRight;
}

@-webkit-keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.slideInUp {
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

@-webkit-keyframes slideOutDown {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }
}

@keyframes slideOutDown {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }
}

.slideOutDown {
  -webkit-animation-name: slideOutDown;
  animation-name: slideOutDown;
}

@-webkit-keyframes slideOutLeft {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes slideOutLeft {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

.slideOutLeft {
  -webkit-animation-name: slideOutLeft;
  animation-name: slideOutLeft;
}

@-webkit-keyframes slideOutRight {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideOutRight {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

.slideOutRight {
  -webkit-animation-name: slideOutRight;
  animation-name: slideOutRight;
}

@-webkit-keyframes slideOutUp {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }
}

@keyframes slideOutUp {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }
}

.slideOutUp {
  -webkit-animation-name: slideOutUp;
  animation-name: slideOutUp;
}
.toast-title {
  font-weight: bold;
}
.toast-message {
  word-wrap: break-word;
}
.toast-message a,
.toast-message label {
  color: #FFFFFF;
}
.toast-message a:hover {
  color: #CCCCCC;
  text-decoration: none;
}
.toast-close-button {
  position: relative;
  right: -0.3em;
  top: -0.3em;
  float: right;
  font-size: 20px;
  font-weight: bold;
  color: #FFFFFF;
  -webkit-text-shadow: 0 1px 0 #ffffff;
  text-shadow: 0 1px 0 #ffffff;
  opacity: 0.8;
}
.toast-close-button:hover,
.toast-close-button:focus {
  color: #000000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.4;
}
/*Additional properties for button version
 iOS requires the button element instead of an anchor tag.
 If you want the anchor version, it requires `href="#"`.*/
button.toast-close-button {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.toast-top-center {
  top: 0;
  right: 0;
  width: 100%;
}
.toast-bottom-center {
  bottom: 0;
  right: 0;
  width: 100%;
}
.toast-top-full-width {
  top: 0;
  right: 0;
  width: 100%;
}
.toast-bottom-full-width {
  bottom: 0;
  right: 0;
  width: 100%;
}
.toast-top-left {
  top: 12px;
  left: 12px;
}
.toast-top-right {
  top: 12px;
  right: 12px;
}
.toast-bottom-right {
  right: 12px;
  bottom: 12px;
}
.toast-bottom-left {
  bottom: 12px;
  left: 12px;
}
#toast-container {
  position: fixed;
  z-index: 999999;
  /*overrides*/
}
#toast-container * {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}
#toast-container .toast {
  position: relative;
  overflow: hidden;
  margin: 0 0 6px;
  padding: 15px 15px 15px 50px;
  width: 300px;
  -moz-border-radius: 3px 3px 3px 3px;
  -webkit-border-radius: 3px 3px 3px 3px;
  border-radius: 3px 3px 3px 3px;
  background-position: 15px center;
  background-repeat: no-repeat;
  -moz-box-shadow: 0 0 12px #999999;
  -webkit-box-shadow: 0 0 12px #999999;
  box-shadow: 0 0 12px #999999;
  color: #FFFFFF;
  opacity: 0.8;
}
#toast-container .toast:hover {
  -moz-box-shadow: 0 0 12px #000000;
  -webkit-box-shadow: 0 0 12px #000000;
  box-shadow: 0 0 12px #000000;
  opacity: 1;
  cursor: pointer;
}
#toast-container .toast.toast-info {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
}
#toast-container .toast.toast-error {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
}
#toast-container .toast.toast-success {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
}
#toast-container .toast.toast-warning {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
}
#toast-container.toast-top-center .toast,
#toast-container.toast-bottom-center .toast {
  width: 300px;
  margin-left: auto;
  margin-right: auto;
}
#toast-container.toast-top-full-width .toast,
#toast-container.toast-bottom-full-width .toast {
  width: 96%;
  margin-left: auto;
  margin-right: auto;
}
.toast {
  background-color: #030303;
}
.toast-success {
  background-color: #51A351;
}
.toast-error {
  background-color: #BD362F;
}
.toast-info {
  background-color: #2F96B4;
}
.toast-warning {
  background-color: #F89406;
}
progress-bar {
  position: absolute;
  left: 0;
  bottom: 0;
  height: 4px;
  background-color: #000000;
  opacity: 0.4;
}
/*Animations*/
div[toast] {
  opacity: 1 !important;
}
div[toast].ng-enter {
  opacity: 0 !important;
  transition: opacity .3s linear;
}
div[toast].ng-enter.ng-enter-active {
  opacity: 1 !important;
}
div[toast].ng-leave {
  opacity: 1;
  transition: opacity .3s linear;
}
div[toast].ng-leave.ng-leave-active {
  opacity: 0 !important;
}
/*Responsive Design*/
@media all and (max-width: 240px) {
  #toast-container .toast.div {
    padding: 8px 8px 8px 50px;
    width: 11em;
  }
  #toast-container .toast-close-button {
    right: -0.2em;
    top: -0.2em;
  }
}
@media all and (min-width: 241px) and (max-width: 480px) {
  #toast-container .toast.div {
    padding: 8px 8px 8px 50px;
    width: 18em;
  }
  #toast-container .toast-close-button {
    right: -0.2em;
    top: -0.2em;
  }
}
@media all and (min-width: 481px) and (max-width: 768px) {
  #toast-container .toast.div {
    padding: 15px 15px 15px 50px;
    width: 25em;
  }
}
/**
 * Owl Carousel v2.2.0
 * Copyright 2013-2016 David Deutsch
 * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
 */
/*
 *  Owl Carousel - Core
 */
.owl-carousel {
  display: none;
  width: 100%;
  -webkit-tap-highlight-color: transparent;
  /* position relative and z-index fix webkit rendering fonts issue */
  position: relative;
  z-index: 1; }
  .owl-carousel .owl-stage {
    position: relative;
    -ms-touch-action: pan-Y; }
  .owl-carousel .owl-stage:after {
    content: ".";
    display: block;
    clear: both;
    visibility: hidden;
    line-height: 0;
    height: 0; }
  .owl-carousel .owl-stage-outer {
    position: relative;
    overflow: hidden;
    /* fix for flashing background */
    -webkit-transform: translate3d(0px, 0px, 0px); }
  .owl-carousel .owl-item {
    position: relative;
    min-height: 1px;
    float: left;
    -webkit-backface-visibility: hidden;
    -webkit-tap-highlight-color: transparent;
    -webkit-touch-callout: none; }
  .owl-carousel .owl-item img {
    display: block;
    width: 100%;
    -webkit-transform-style: preserve-3d; }
  .owl-carousel .owl-nav.disabled,
  .owl-carousel .owl-dots.disabled {
    display: none; }
  .owl-carousel .owl-nav .owl-prev,
  .owl-carousel .owl-nav .owl-next,
  .owl-carousel .owl-dot {
    cursor: pointer;
    cursor: hand;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none; }
  .owl-carousel.owl-loaded {
    display: block; }
  .owl-carousel.owl-loading {
    opacity: 0;
    display: block; }
  .owl-carousel.owl-hidden {
    opacity: 0; }
  .owl-carousel.owl-refresh .owl-item {
    visibility: hidden; }
  .owl-carousel.owl-drag .owl-item {
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none; }
  .owl-carousel.owl-grab {
    cursor: move;
    cursor: grab; }
  .owl-carousel.owl-rtl {
    direction: rtl; }
  .owl-carousel.owl-rtl .owl-item {
    float: right; }

/* No Js */
.no-js .owl-carousel {
  display: block; }

/*
 *  Owl Carousel - Animate Plugin
 */
.owl-carousel .animated {
  -webkit-animation-duration: 1000ms;
          animation-duration: 1000ms;
  -webkit-animation-fill-mode: both;
          animation-fill-mode: both; }

.owl-carousel .owl-animated-in {
  z-index: 0; }

.owl-carousel .owl-animated-out {
  z-index: 1; }

.owl-carousel .fadeOut {
  -webkit-animation-name: fadeOut;
          animation-name: fadeOut; }

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

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

/*
 * 	Owl Carousel - Auto Height Plugin
 */
.owl-height {
  transition: height 500ms ease-in-out; }

/*
 * 	Owl Carousel - Lazy Load Plugin
 */
.owl-carousel .owl-item .owl-lazy {
  opacity: 0;
  transition: opacity 400ms ease; }

.owl-carousel .owl-item img.owl-lazy {
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d; }

/*
 * 	Owl Carousel - Video Plugin
 */
.owl-carousel .owl-video-wrapper {
  position: relative;
  height: 100%;
  background: #000; }

.owl-carousel .owl-video-play-icon {
  position: absolute;
  height: 80px;
  width: 80px;
  left: 50%;
  top: 50%;
  margin-left: -40px;
  margin-top: -40px;
  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU1RTM0MEU5QzBCMDExRTM4MURCQTkwQzkyRUYxMzEzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjU1RTM0MEVBQzBCMDExRTM4MURCQTkwQzkyRUYxMzEzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTVFMzQwRTdDMEIwMTFFMzgxREJBOTBDOTJFRjEzMTMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTVFMzQwRThDMEIwMTFFMzgxREJBOTBDOTJFRjEzMTMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6n647gAAAP5klEQVR42uxcCVRU1xl+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) no-repeat;
  cursor: pointer;
  z-index: 1;
  -webkit-backface-visibility: hidden;
  transition: -webkit-transform 100ms ease;
  transition: transform 100ms ease; }

.owl-carousel .owl-video-play-icon:hover {
  -webkit-transform: scale(1.3, 1.3);
      -ms-transform: scale(1.3, 1.3);
          transform: scale(1.3, 1.3); }

.owl-carousel .owl-video-playing .owl-video-tn,
.owl-carousel .owl-video-playing .owl-video-play-icon {
  display: none; }

.owl-carousel .owl-video-tn {
  opacity: 0;
  height: 100%;
  background-position: center center;
  background-repeat: no-repeat;
  background-size: contain;
  transition: opacity 400ms ease; }

.owl-carousel .owl-video-frame {
  position: relative;
  z-index: 1;
  height: 100%;
  width: 100%; }
/**
 * Owl Carousel v2.2.0
 * Copyright 2013-2016 David Deutsch
 * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
 */
.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791}.ng-table th {
  text-align: center;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none; }
  .ng-table th.sortable {
    cursor: pointer; }
    .ng-table th.sortable .sort-indicator {
      padding-right: 18px;
      position: relative; }
      .ng-table th.sortable .sort-indicator:after, .ng-table th.sortable .sort-indicator:before {
        content: "";
        border-width: 0 4px 4px;
        border-style: solid;
        border-color: #000 transparent;
        visibility: visible;
        right: 5px;
        top: 50%;
        position: absolute;
        opacity: .3;
        margin-top: -4px; }
      .ng-table th.sortable .sort-indicator:before {
        margin-top: 2px;
        border-bottom: none;
        border-left: 4px solid transparent;
        border-right: 4px solid transparent;
        border-top: 4px solid #000; }
    .ng-table th.sortable .sort-indicator:hover:after, .ng-table th.sortable .sort-indicator:hover:before {
      opacity: 1;
      visibility: visible; }
    .ng-table th.sortable.sort-desc, .ng-table th.sortable.sort-asc {
      background-color: rgba(141, 192, 219, 0.25);
      text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); }
      .ng-table th.sortable.sort-desc .sort-indicator:after, .ng-table th.sortable.sort-asc .sort-indicator:after {
        margin-top: -2px; }
      .ng-table th.sortable.sort-desc .sort-indicator:before, .ng-table th.sortable.sort-asc .sort-indicator:before {
        visibility: hidden; }
    .ng-table th.sortable.sort-asc .sort-indicator:after, .ng-table th.sortable.sort-asc .sort-indicator:hover:after {
      visibility: visible;
      filter: alpha(opacity=60);
      -khtml-opacity: 0.6;
      -moz-opacity: 0.6;
      opacity: 0.6; }
    .ng-table th.sortable.sort-desc .sort-indicator:after {
      border-bottom: none;
      border-left: 4px solid transparent;
      border-right: 4px solid transparent;
      border-top: 4px solid #000;
      visibility: visible;
      -webkit-box-shadow: none;
      -moz-box-shadow: none;
      box-shadow: none;
      filter: alpha(opacity=60);
      -khtml-opacity: 0.6;
      -moz-opacity: 0.6;
      opacity: 0.6; }
  .ng-table th.filter .input-filter {
    margin: 0;
    display: block;
    width: 100%;
    min-height: 30px;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box; }

.ng-table .ng-table-group-header th {
  text-align: left; }

.ng-table .ng-table-group-selector {
  display: block; }

.ng-table .ng-table-group-close, .ng-table .ng-table-group-toggle {
  float: right; }

.ng-table .ng-table-group-toggle {
  margin-right: 5px; }

@media only screen and (max-width: 800px) {
  .ng-table-responsive {
    border-bottom: 1px solid #999; }
    .ng-table-responsive tr {
      border-top: 1px solid #999;
      border-left: 1px solid #999;
      border-right: 1px solid #999; }
    .ng-table-responsive td:before {
      position: absolute;
      padding: 8px;
      left: 0;
      top: 0;
      width: 50%;
      white-space: nowrap;
      text-align: left;
      font-weight: bold; }
    .ng-table-responsive thead tr th {
      text-align: left; }
    .ng-table-responsive thead tr.ng-table-filters th {
      padding: 0; }
      .ng-table-responsive thead tr.ng-table-filters th form > div {
        padding: 8px; }
    .ng-table-responsive td {
      border: none;
      border-bottom: 1px solid #eee;
      position: relative;
      padding-left: 50%;
      white-space: normal;
      text-align: left; }
      .ng-table-responsive td:before {
        content: attr(data-title-text); }
    .ng-table-responsive, .ng-table-responsive thead, .ng-table-responsive tbody, .ng-table-responsive th, .ng-table-responsive td, .ng-table-responsive tr {
      display: block; } }

.ng-table-pagination {
  margin-top: 0; }

.ng-table-group-selector:before,
.ng-table-group-selector:after,
.filter:before,
.filter:after {
  display: table;
  content: " "; }

.ng-table-group-selector:after,
.filter:after {
  clear: both; }

.filter > .filter-cell {
  float: left;
  box-sizing: border-box; }

.filter-horizontal > .filter-cell {
  padding: 0 2px; }

.filter-horizontal > .filter-cell:first-child {
  padding-left: 0; }

.filter-horizontal > .filter-cell:last-child, .filter-horizontal > .filter-cell.last {
  padding-right: 0; }

.s12 {
  width: 100%; }

.s11 {
  width: 91.66666666666666%; }

.s10 {
  width: 83.33333333333334%; }

.s9 {
  width: 75%; }

.s8 {
  width: 66.66666666666666%; }

.s7 {
  width: 58.333333333333336%; }

.s6 {
  width: 50%; }

.s5 {
  width: 41.66666666666667%; }

.s4 {
  width: 33.33333333333333%; }

.s3 {
  width: 25%; }

.s2 {
  width: 16.666666666666664%; }

.s1 {
  width: 8.333333333333332%; }

@media all and (max-width: 468px) {
  .s12, .s11, .s10, .s9, .s8, .s7, .s6, .s5, .s4, .s3, .s2, .s1 {
    width: 100%; }
  .filter > .filter-cell {
    padding: 0px; } }

/*# sourceMappingURL=ng-table.css.map*/body.stop-scrolling {
  height: 100%;
  overflow: hidden; }

.sweet-overlay {
  background-color: black;
  /* IE8 */
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
  /* IE8 */
  background-color: rgba(0, 0, 0, 0.4);
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  display: none;
  z-index: 10000; }

.sweet-alert {
  background-color: white;
  font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  width: 478px;
  padding: 17px;
  border-radius: 5px;
  text-align: center;
  position: fixed;
  left: 50%;
  top: 50%;
  margin-left: -256px;
  margin-top: -200px;
  overflow: hidden;
  display: none;
  z-index: 99999; }
  @media all and (max-width: 540px) {
    .sweet-alert {
      width: auto;
      margin-left: 0;
      margin-right: 0;
      left: 15px;
      right: 15px; } }
  .sweet-alert h2 {
    color: #575757;
    font-size: 30px;
    text-align: center;
    font-weight: 600;
    text-transform: none;
    position: relative;
    margin: 25px 0;
    padding: 0;
    line-height: 40px;
    display: block; }
  .sweet-alert p {
    color: #797979;
    font-size: 16px;
    text-align: center;
    font-weight: 300;
    position: relative;
    text-align: inherit;
    float: none;
    margin: 0;
    padding: 0;
    line-height: normal; }
  .sweet-alert fieldset {
    border: none;
    position: relative; }
  .sweet-alert .sa-error-container {
    background-color: #f1f1f1;
    margin-left: -17px;
    margin-right: -17px;
    overflow: hidden;
    padding: 0 10px;
    max-height: 0;
    webkit-transition: padding 0.15s, max-height 0.15s;
    transition: padding 0.15s, max-height 0.15s; }
    .sweet-alert .sa-error-container.show {
      padding: 10px 0;
      max-height: 100px;
      webkit-transition: padding 0.2s, max-height 0.2s;
      transition: padding 0.25s, max-height 0.25s; }
    .sweet-alert .sa-error-container .icon {
      display: inline-block;
      width: 24px;
      height: 24px;
      border-radius: 50%;
      background-color: #ea7d7d;
      color: white;
      line-height: 24px;
      text-align: center;
      margin-right: 3px; }
    .sweet-alert .sa-error-container p {
      display: inline-block; }
  .sweet-alert .sa-input-error {
    position: absolute;
    top: 29px;
    right: 26px;
    width: 20px;
    height: 20px;
    opacity: 0;
    -webkit-transform: scale(0.5);
    transform: scale(0.5);
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transition: all 0.1s;
    transition: all 0.1s; }
    .sweet-alert .sa-input-error::before, .sweet-alert .sa-input-error::after {
      content: "";
      width: 20px;
      height: 6px;
      background-color: #f06e57;
      border-radius: 3px;
      position: absolute;
      top: 50%;
      margin-top: -4px;
      left: 50%;
      margin-left: -9px; }
    .sweet-alert .sa-input-error::before {
      -webkit-transform: rotate(-45deg);
      transform: rotate(-45deg); }
    .sweet-alert .sa-input-error::after {
      -webkit-transform: rotate(45deg);
      transform: rotate(45deg); }
    .sweet-alert .sa-input-error.show {
      opacity: 1;
      -webkit-transform: scale(1);
      transform: scale(1); }
  .sweet-alert input {
    width: 100%;
    box-sizing: border-box;
    border-radius: 3px;
    border: 1px solid #d7d7d7;
    height: 43px;
    margin-top: 10px;
    margin-bottom: 17px;
    font-size: 18px;
    box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.06);
    padding: 0 12px;
    display: none;
    -webkit-transition: all 0.3s;
    transition: all 0.3s; }
    .sweet-alert input:focus {
      outline: none;
      box-shadow: 0px 0px 3px #c4e6f5;
      border: 1px solid #b4dbed; }
      .sweet-alert input:focus::-moz-placeholder {
        transition: opacity 0.3s 0.03s ease;
        opacity: 0.5; }
      .sweet-alert input:focus:-ms-input-placeholder {
        transition: opacity 0.3s 0.03s ease;
        opacity: 0.5; }
      .sweet-alert input:focus::-webkit-input-placeholder {
        transition: opacity 0.3s 0.03s ease;
        opacity: 0.5; }
    .sweet-alert input::-moz-placeholder {
      color: #bdbdbd; }
    .sweet-alert input:-ms-input-placeholder {
      color: #bdbdbd; }
    .sweet-alert input::-webkit-input-placeholder {
      color: #bdbdbd; }
  .sweet-alert.show-input input {
    display: block; }
  .sweet-alert .sa-confirm-button-container {
    display: inline-block;
    position: relative; }
  .sweet-alert .la-ball-fall {
    position: absolute;
    left: 50%;
    top: 50%;
    margin-left: -27px;
    margin-top: 4px;
    opacity: 0;
    visibility: hidden; }
  .sweet-alert button {
    background-color: #8CD4F5;
    color: white;
    border: none;
    box-shadow: none;
    font-size: 17px;
    font-weight: 500;
    -webkit-border-radius: 4px;
    border-radius: 5px;
    padding: 10px 32px;
    margin: 26px 5px 0 5px;
    cursor: pointer; }
    .sweet-alert button:focus {
      outline: none;
      box-shadow: 0 0 2px rgba(128, 179, 235, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.05); }
    .sweet-alert button:hover {
      background-color: #7ecff4; }
    .sweet-alert button:active {
      background-color: #5dc2f1; }
    .sweet-alert button.cancel {
      background-color: #C1C1C1; }
      .sweet-alert button.cancel:hover {
        background-color: #b9b9b9; }
      .sweet-alert button.cancel:active {
        background-color: #a8a8a8; }
      .sweet-alert button.cancel:focus {
        box-shadow: rgba(197, 205, 211, 0.8) 0px 0px 2px, rgba(0, 0, 0, 0.0470588) 0px 0px 0px 1px inset !important; }
    .sweet-alert button[disabled] {
      opacity: .6;
      cursor: default; }
    .sweet-alert button.confirm[disabled] {
      color: transparent; }
      .sweet-alert button.confirm[disabled] ~ .la-ball-fall {
        opacity: 1;
        visibility: visible;
        transition-delay: 0s; }
    .sweet-alert button::-moz-focus-inner {
      border: 0; }
  .sweet-alert[data-has-cancel-button=false] button {
    box-shadow: none !important; }
  .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] {
    padding-bottom: 40px; }
  .sweet-alert .sa-icon {
    width: 80px;
    height: 80px;
    border: 4px solid gray;
    -webkit-border-radius: 40px;
    border-radius: 40px;
    border-radius: 50%;
    margin: 20px auto;
    padding: 0;
    position: relative;
    box-sizing: content-box; }
    .sweet-alert .sa-icon.sa-error {
      border-color: #F27474; }
      .sweet-alert .sa-icon.sa-error .sa-x-mark {
        position: relative;
        display: block; }
      .sweet-alert .sa-icon.sa-error .sa-line {
        position: absolute;
        height: 5px;
        width: 47px;
        background-color: #F27474;
        display: block;
        top: 37px;
        border-radius: 2px; }
        .sweet-alert .sa-icon.sa-error .sa-line.sa-left {
          -webkit-transform: rotate(45deg);
          transform: rotate(45deg);
          left: 17px; }
        .sweet-alert .sa-icon.sa-error .sa-line.sa-right {
          -webkit-transform: rotate(-45deg);
          transform: rotate(-45deg);
          right: 16px; }
    .sweet-alert .sa-icon.sa-warning {
      border-color: #F8BB86; }
      .sweet-alert .sa-icon.sa-warning .sa-body {
        position: absolute;
        width: 5px;
        height: 47px;
        left: 50%;
        top: 10px;
        -webkit-border-radius: 2px;
        border-radius: 2px;
        margin-left: -2px;
        background-color: #F8BB86; }
      .sweet-alert .sa-icon.sa-warning .sa-dot {
        position: absolute;
        width: 7px;
        height: 7px;
        -webkit-border-radius: 50%;
        border-radius: 50%;
        margin-left: -3px;
        left: 50%;
        bottom: 10px;
        background-color: #F8BB86; }
    .sweet-alert .sa-icon.sa-info {
      border-color: #C9DAE1; }
      .sweet-alert .sa-icon.sa-info::before {
        content: "";
        position: absolute;
        width: 5px;
        height: 29px;
        left: 50%;
        bottom: 17px;
        border-radius: 2px;
        margin-left: -2px;
        background-color: #C9DAE1; }
      .sweet-alert .sa-icon.sa-info::after {
        content: "";
        position: absolute;
        width: 7px;
        height: 7px;
        border-radius: 50%;
        margin-left: -3px;
        top: 19px;
        background-color: #C9DAE1; }
    .sweet-alert .sa-icon.sa-success {
      border-color: #A5DC86; }
      .sweet-alert .sa-icon.sa-success::before, .sweet-alert .sa-icon.sa-success::after {
        content: '';
        -webkit-border-radius: 40px;
        border-radius: 40px;
        border-radius: 50%;
        position: absolute;
        width: 60px;
        height: 120px;
        background: white;
        -webkit-transform: rotate(45deg);
        transform: rotate(45deg); }
      .sweet-alert .sa-icon.sa-success::before {
        -webkit-border-radius: 120px 0 0 120px;
        border-radius: 120px 0 0 120px;
        top: -7px;
        left: -33px;
        -webkit-transform: rotate(-45deg);
        transform: rotate(-45deg);
        -webkit-transform-origin: 60px 60px;
        transform-origin: 60px 60px; }
      .sweet-alert .sa-icon.sa-success::after {
        -webkit-border-radius: 0 120px 120px 0;
        border-radius: 0 120px 120px 0;
        top: -11px;
        left: 30px;
        -webkit-transform: rotate(-45deg);
        transform: rotate(-45deg);
        -webkit-transform-origin: 0px 60px;
        transform-origin: 0px 60px; }
      .sweet-alert .sa-icon.sa-success .sa-placeholder {
        width: 80px;
        height: 80px;
        border: 4px solid rgba(165, 220, 134, 0.2);
        -webkit-border-radius: 40px;
        border-radius: 40px;
        border-radius: 50%;
        box-sizing: content-box;
        position: absolute;
        left: -4px;
        top: -4px;
        z-index: 2; }
      .sweet-alert .sa-icon.sa-success .sa-fix {
        width: 5px;
        height: 90px;
        background-color: white;
        position: absolute;
        left: 28px;
        top: 8px;
        z-index: 1;
        -webkit-transform: rotate(-45deg);
        transform: rotate(-45deg); }
      .sweet-alert .sa-icon.sa-success .sa-line {
        height: 5px;
        background-color: #A5DC86;
        display: block;
        border-radius: 2px;
        position: absolute;
        z-index: 2; }
        .sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
          width: 25px;
          left: 14px;
          top: 46px;
          -webkit-transform: rotate(45deg);
          transform: rotate(45deg); }
        .sweet-alert .sa-icon.sa-success .sa-line.sa-long {
          width: 47px;
          right: 8px;
          top: 38px;
          -webkit-transform: rotate(-45deg);
          transform: rotate(-45deg); }
    .sweet-alert .sa-icon.sa-custom {
      background-size: contain;
      border-radius: 0;
      border: none;
      background-position: center center;
      background-repeat: no-repeat; }

/*
 * Animations
 */
@-webkit-keyframes showSweetAlert {
  0% {
    transform: scale(0.7);
    -webkit-transform: scale(0.7); }
  45% {
    transform: scale(1.05);
    -webkit-transform: scale(1.05); }
  80% {
    transform: scale(0.95);
    -webkit-transform: scale(0.95); }
  100% {
    transform: scale(1);
    -webkit-transform: scale(1); } }

@keyframes showSweetAlert {
  0% {
    transform: scale(0.7);
    -webkit-transform: scale(0.7); }
  45% {
    transform: scale(1.05);
    -webkit-transform: scale(1.05); }
  80% {
    transform: scale(0.95);
    -webkit-transform: scale(0.95); }
  100% {
    transform: scale(1);
    -webkit-transform: scale(1); } }

@-webkit-keyframes hideSweetAlert {
  0% {
    transform: scale(1);
    -webkit-transform: scale(1); }
  100% {
    transform: scale(0.5);
    -webkit-transform: scale(0.5); } }

@keyframes hideSweetAlert {
  0% {
    transform: scale(1);
    -webkit-transform: scale(1); }
  100% {
    transform: scale(0.5);
    -webkit-transform: scale(0.5); } }

@-webkit-keyframes slideFromTop {
  0% {
    top: 0%; }
  100% {
    top: 50%; } }

@keyframes slideFromTop {
  0% {
    top: 0%; }
  100% {
    top: 50%; } }

@-webkit-keyframes slideToTop {
  0% {
    top: 50%; }
  100% {
    top: 0%; } }

@keyframes slideToTop {
  0% {
    top: 50%; }
  100% {
    top: 0%; } }

@-webkit-keyframes slideFromBottom {
  0% {
    top: 70%; }
  100% {
    top: 50%; } }

@keyframes slideFromBottom {
  0% {
    top: 70%; }
  100% {
    top: 50%; } }

@-webkit-keyframes slideToBottom {
  0% {
    top: 50%; }
  100% {
    top: 70%; } }

@keyframes slideToBottom {
  0% {
    top: 50%; }
  100% {
    top: 70%; } }

.showSweetAlert[data-animation=pop] {
  -webkit-animation: showSweetAlert 0.3s;
  animation: showSweetAlert 0.3s; }

.showSweetAlert[data-animation=none] {
  -webkit-animation: none;
  animation: none; }

.showSweetAlert[data-animation=slide-from-top] {
  -webkit-animation: slideFromTop 0.3s;
  animation: slideFromTop 0.3s; }

.showSweetAlert[data-animation=slide-from-bottom] {
  -webkit-animation: slideFromBottom 0.3s;
  animation: slideFromBottom 0.3s; }

.hideSweetAlert[data-animation=pop] {
  -webkit-animation: hideSweetAlert 0.2s;
  animation: hideSweetAlert 0.2s; }

.hideSweetAlert[data-animation=none] {
  -webkit-animation: none;
  animation: none; }

.hideSweetAlert[data-animation=slide-from-top] {
  -webkit-animation: slideToTop 0.4s;
  animation: slideToTop 0.4s; }

.hideSweetAlert[data-animation=slide-from-bottom] {
  -webkit-animation: slideToBottom 0.3s;
  animation: slideToBottom 0.3s; }

@-webkit-keyframes animateSuccessTip {
  0% {
    width: 0;
    left: 1px;
    top: 19px; }
  54% {
    width: 0;
    left: 1px;
    top: 19px; }
  70% {
    width: 50px;
    left: -8px;
    top: 37px; }
  84% {
    width: 17px;
    left: 21px;
    top: 48px; }
  100% {
    width: 25px;
    left: 14px;
    top: 45px; } }

@keyframes animateSuccessTip {
  0% {
    width: 0;
    left: 1px;
    top: 19px; }
  54% {
    width: 0;
    left: 1px;
    top: 19px; }
  70% {
    width: 50px;
    left: -8px;
    top: 37px; }
  84% {
    width: 17px;
    left: 21px;
    top: 48px; }
  100% {
    width: 25px;
    left: 14px;
    top: 45px; } }

@-webkit-keyframes animateSuccessLong {
  0% {
    width: 0;
    right: 46px;
    top: 54px; }
  65% {
    width: 0;
    right: 46px;
    top: 54px; }
  84% {
    width: 55px;
    right: 0px;
    top: 35px; }
  100% {
    width: 47px;
    right: 8px;
    top: 38px; } }

@keyframes animateSuccessLong {
  0% {
    width: 0;
    right: 46px;
    top: 54px; }
  65% {
    width: 0;
    right: 46px;
    top: 54px; }
  84% {
    width: 55px;
    right: 0px;
    top: 35px; }
  100% {
    width: 47px;
    right: 8px;
    top: 38px; } }

@-webkit-keyframes rotatePlaceholder {
  0% {
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg); }
  5% {
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg); }
  12% {
    transform: rotate(-405deg);
    -webkit-transform: rotate(-405deg); }
  100% {
    transform: rotate(-405deg);
    -webkit-transform: rotate(-405deg); } }

@keyframes rotatePlaceholder {
  0% {
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg); }
  5% {
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg); }
  12% {
    transform: rotate(-405deg);
    -webkit-transform: rotate(-405deg); }
  100% {
    transform: rotate(-405deg);
    -webkit-transform: rotate(-405deg); } }

.animateSuccessTip {
  -webkit-animation: animateSuccessTip 0.75s;
  animation: animateSuccessTip 0.75s; }

.animateSuccessLong {
  -webkit-animation: animateSuccessLong 0.75s;
  animation: animateSuccessLong 0.75s; }

.sa-icon.sa-success.animate::after {
  -webkit-animation: rotatePlaceholder 4.25s ease-in;
  animation: rotatePlaceholder 4.25s ease-in; }

@-webkit-keyframes animateErrorIcon {
  0% {
    transform: rotateX(100deg);
    -webkit-transform: rotateX(100deg);
    opacity: 0; }
  100% {
    transform: rotateX(0deg);
    -webkit-transform: rotateX(0deg);
    opacity: 1; } }

@keyframes animateErrorIcon {
  0% {
    transform: rotateX(100deg);
    -webkit-transform: rotateX(100deg);
    opacity: 0; }
  100% {
    transform: rotateX(0deg);
    -webkit-transform: rotateX(0deg);
    opacity: 1; } }

.animateErrorIcon {
  -webkit-animation: animateErrorIcon 0.5s;
  animation: animateErrorIcon 0.5s; }

@-webkit-keyframes animateXMark {
  0% {
    transform: scale(0.4);
    -webkit-transform: scale(0.4);
    margin-top: 26px;
    opacity: 0; }
  50% {
    transform: scale(0.4);
    -webkit-transform: scale(0.4);
    margin-top: 26px;
    opacity: 0; }
  80% {
    transform: scale(1.15);
    -webkit-transform: scale(1.15);
    margin-top: -6px; }
  100% {
    transform: scale(1);
    -webkit-transform: scale(1);
    margin-top: 0;
    opacity: 1; } }

@keyframes animateXMark {
  0% {
    transform: scale(0.4);
    -webkit-transform: scale(0.4);
    margin-top: 26px;
    opacity: 0; }
  50% {
    transform: scale(0.4);
    -webkit-transform: scale(0.4);
    margin-top: 26px;
    opacity: 0; }
  80% {
    transform: scale(1.15);
    -webkit-transform: scale(1.15);
    margin-top: -6px; }
  100% {
    transform: scale(1);
    -webkit-transform: scale(1);
    margin-top: 0;
    opacity: 1; } }

.animateXMark {
  -webkit-animation: animateXMark 0.5s;
  animation: animateXMark 0.5s; }

@-webkit-keyframes pulseWarning {
  0% {
    border-color: #F8D486; }
  100% {
    border-color: #F8BB86; } }

@keyframes pulseWarning {
  0% {
    border-color: #F8D486; }
  100% {
    border-color: #F8BB86; } }

.pulseWarning {
  -webkit-animation: pulseWarning 0.75s infinite alternate;
  animation: pulseWarning 0.75s infinite alternate; }

@-webkit-keyframes pulseWarningIns {
  0% {
    background-color: #F8D486; }
  100% {
    background-color: #F8BB86; } }

@keyframes pulseWarningIns {
  0% {
    background-color: #F8D486; }
  100% {
    background-color: #F8BB86; } }

.pulseWarningIns {
  -webkit-animation: pulseWarningIns 0.75s infinite alternate;
  animation: pulseWarningIns 0.75s infinite alternate; }

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

@keyframes rotate-loading {
  0% {
    transform: rotate(0deg); }
  100% {
    transform: rotate(360deg); } }

/* Internet Explorer 9 has some special quirks that are fixed here */
/* The icons are not animated. */
/* This file is automatically merged into sweet-alert.min.js through Gulp */
/* Error icon */
.sweet-alert .sa-icon.sa-error .sa-line.sa-left {
  -ms-transform: rotate(45deg) \9; }

.sweet-alert .sa-icon.sa-error .sa-line.sa-right {
  -ms-transform: rotate(-45deg) \9; }

/* Success icon */
.sweet-alert .sa-icon.sa-success {
  border-color: transparent\9; }

.sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
  -ms-transform: rotate(45deg) \9; }

.sweet-alert .sa-icon.sa-success .sa-line.sa-long {
  -ms-transform: rotate(-45deg) \9; }

/*!
 * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/)
 * Copyright 2015 Daniel Cardoso <@DanielCardoso>
 * Licensed under MIT
 */
.la-ball-fall,
.la-ball-fall > div {
  position: relative;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box; }

.la-ball-fall {
  display: block;
  font-size: 0;
  color: #fff; }

.la-ball-fall.la-dark {
  color: #333; }

.la-ball-fall > div {
  display: inline-block;
  float: none;
  background-color: currentColor;
  border: 0 solid currentColor; }

.la-ball-fall {
  width: 54px;
  height: 18px; }

.la-ball-fall > div {
  width: 10px;
  height: 10px;
  margin: 4px;
  border-radius: 100%;
  opacity: 0;
  -webkit-animation: ball-fall 1s ease-in-out infinite;
  -moz-animation: ball-fall 1s ease-in-out infinite;
  -o-animation: ball-fall 1s ease-in-out infinite;
  animation: ball-fall 1s ease-in-out infinite; }

.la-ball-fall > div:nth-child(1) {
  -webkit-animation-delay: -200ms;
  -moz-animation-delay: -200ms;
  -o-animation-delay: -200ms;
  animation-delay: -200ms; }

.la-ball-fall > div:nth-child(2) {
  -webkit-animation-delay: -100ms;
  -moz-animation-delay: -100ms;
  -o-animation-delay: -100ms;
  animation-delay: -100ms; }

.la-ball-fall > div:nth-child(3) {
  -webkit-animation-delay: 0ms;
  -moz-animation-delay: 0ms;
  -o-animation-delay: 0ms;
  animation-delay: 0ms; }

.la-ball-fall.la-sm {
  width: 26px;
  height: 8px; }

.la-ball-fall.la-sm > div {
  width: 4px;
  height: 4px;
  margin: 2px; }

.la-ball-fall.la-2x {
  width: 108px;
  height: 36px; }

.la-ball-fall.la-2x > div {
  width: 20px;
  height: 20px;
  margin: 8px; }

.la-ball-fall.la-3x {
  width: 162px;
  height: 54px; }

.la-ball-fall.la-3x > div {
  width: 30px;
  height: 30px;
  margin: 12px; }

/*
 * Animation
 */
@-webkit-keyframes ball-fall {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-145%);
    transform: translateY(-145%); }
  10% {
    opacity: .5; }
  20% {
    opacity: 1;
    -webkit-transform: translateY(0);
    transform: translateY(0); }
  80% {
    opacity: 1;
    -webkit-transform: translateY(0);
    transform: translateY(0); }
  90% {
    opacity: .5; }
  100% {
    opacity: 0;
    -webkit-transform: translateY(145%);
    transform: translateY(145%); } }

@-moz-keyframes ball-fall {
  0% {
    opacity: 0;
    -moz-transform: translateY(-145%);
    transform: translateY(-145%); }
  10% {
    opacity: .5; }
  20% {
    opacity: 1;
    -moz-transform: translateY(0);
    transform: translateY(0); }
  80% {
    opacity: 1;
    -moz-transform: translateY(0);
    transform: translateY(0); }
  90% {
    opacity: .5; }
  100% {
    opacity: 0;
    -moz-transform: translateY(145%);
    transform: translateY(145%); } }

@-o-keyframes ball-fall {
  0% {
    opacity: 0;
    -o-transform: translateY(-145%);
    transform: translateY(-145%); }
  10% {
    opacity: .5; }
  20% {
    opacity: 1;
    -o-transform: translateY(0);
    transform: translateY(0); }
  80% {
    opacity: 1;
    -o-transform: translateY(0);
    transform: translateY(0); }
  90% {
    opacity: .5; }
  100% {
    opacity: 0;
    -o-transform: translateY(145%);
    transform: translateY(145%); } }

@keyframes ball-fall {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-145%);
    -moz-transform: translateY(-145%);
    -o-transform: translateY(-145%);
    transform: translateY(-145%); }
  10% {
    opacity: .5; }
  20% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0); }
  80% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0); }
  90% {
    opacity: .5; }
  100% {
    opacity: 0;
    -webkit-transform: translateY(145%);
    -moz-transform: translateY(145%);
    -o-transform: translateY(145%);
    transform: translateY(145%); } }
@charset "UTF-8";
/*
Trix 0.10.1
Copyright © 2017 Basecamp, LLC
http://trix-editor.org/*/
trix-editor {
  border: 1px solid #bbb;
  border-radius: 3px;
  margin: 0;
  padding: 0.4em 0.6em;
  min-height: 5em;
  outline: none; }
trix-toolbar * {
  box-sizing: border-box; }
trix-toolbar .button_row {
  display: flex;
  flex-wrap: nowrap;
  justify-content: space-between; }
trix-toolbar .button_group {
  display: flex;
  margin-bottom: 10px;
  border: 1px solid #bbb;
  border-top-color: #ccc;
  border-bottom-color: #888;
  border-radius: 3px; }
  trix-toolbar .button_group button, trix-toolbar .button_group input[type=button] {
    position: relative;
    float: left;
    font-size: inherit;
    padding: 0;
    margin: 0;
    outline: none;
    border: none;
    border-bottom: 1px solid #ddd;
    border-radius: 0;
    background: transparent; }
    trix-toolbar .button_group button:not(:first-child), trix-toolbar .button_group input[type=button]:not(:first-child) {
      border-left: 1px solid #ccc; }
    trix-toolbar .button_group button:not(:disabled), trix-toolbar .button_group input[type=button]:not(:disabled) {
      cursor: pointer; }
    trix-toolbar .button_group button.active, trix-toolbar .button_group input[type=button].active {
      background: #cbeefa; }
    trix-toolbar .button_group button.icon, trix-toolbar .button_group input[type=button].icon {
      width: 2.6em;
      height: 1.6em;
      max-width: calc(0.8em + 4vw);
      text-indent: -9999px; }
      @media (max-device-width: 768px) {
        trix-toolbar .button_group button.icon, trix-toolbar .button_group input[type=button].icon {
          height: 2em;
          max-width: calc(0.8em + 3.5vw); } }
      trix-toolbar .button_group button.icon::before, trix-toolbar .button_group input[type=button].icon::before {
        display: inline-block;
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        opacity: 0.6;
        content: "";
        background-position: center;
        background-repeat: no-repeat;
        background-size: contain; }
        @media (max-device-width: 768px) {
          trix-toolbar .button_group button.icon::before, trix-toolbar .button_group input[type=button].icon::before {
            right: 6%;
            left: 6%; } }
      trix-toolbar .button_group button.icon.bold::before, trix-toolbar .button_group input[type=button].icon.bold::before {
        background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M15.6%2011.8c1-.7%201.6-1.8%201.6-2.8a4%204%200%200%200-4-4H7v14h7c2.1%200%203.7-1.7%203.7-3.8%200-1.5-.8-2.8-2.1-3.4zM10%207.5h3a1.5%201.5%200%201%201%200%203h-3v-3zm3.5%209H10v-3h3.5a1.5%201.5%200%201%201%200%203z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.italic::before, trix-toolbar .button_group input[type=button].icon.italic::before {
        background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M10%205v3h2.2l-3.4%208H6v3h8v-3h-2.2l3.4-8H18V5h-8z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.link::before, trix-toolbar .button_group input[type=button].icon.link::before {
        background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M9.88%2013.7a4.3%204.3%200%200%201%200-6.07l3.37-3.37a4.26%204.26%200%200%201%206.07%200%204.3%204.3%200%200%201%200%206.06l-1.96%201.72a.91.91%200%201%201-1.3-1.3l1.97-1.71a2.46%202.46%200%200%200-3.48-3.48l-3.38%203.37a2.46%202.46%200%200%200%200%203.48.91.91%200%201%201-1.3%201.3z%22%2F%3E%3Cpath%20d%3D%22M4.25%2019.46a4.3%204.3%200%200%201%200-6.07l1.93-1.9a.91.91%200%201%201%201.3%201.3l-1.93%201.9a2.46%202.46%200%200%200%203.48%203.48l3.37-3.38c.96-.96.96-2.52%200-3.48a.91.91%200%201%201%201.3-1.3%204.3%204.3%200%200%201%200%206.07l-3.38%203.38a4.26%204.26%200%200%201-6.07%200z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.strike::before, trix-toolbar .button_group input[type=button].icon.strike::before {
        background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M12.73%2014l.28.14c.26.15.45.3.57.44.12.14.18.3.18.5%200%20.3-.15.56-.44.75-.3.2-.76.3-1.39.3A13.52%2013.52%200%200%201%207%2014.95v3.37a10.64%2010.64%200%200%200%204.84.88c1.26%200%202.35-.19%203.28-.56.93-.37%201.64-.9%202.14-1.57s.74-1.45.74-2.32c0-.26-.02-.51-.06-.75h-5.21zm-5.5-4c-.08-.34-.12-.7-.12-1.1%200-1.29.52-2.3%201.58-3.02%201.05-.72%202.5-1.08%204.34-1.08%201.62%200%203.28.34%204.97%201l-1.3%202.93c-1.47-.6-2.73-.9-3.8-.9-.55%200-.96.08-1.2.26-.26.17-.38.38-.38.64%200%20.27.16.52.48.74.17.12.53.3%201.05.53H7.23zM3%2013h18v-2H3v2z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.quote::before, trix-toolbar .button_group input[type=button].icon.quote::before {
        background-image: url(data:image/svg+xml,%3Csvg%20version%3D%221%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M6%2017h3l2-4V7H5v6h3zm8%200h3l2-4V7h-6v6h3z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.heading-1::before, trix-toolbar .button_group input[type=button].icon.heading-1::before {
        background-image: url(data:image/svg+xml,%3Csvg%20version%3D%221%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M12%209v3H9v7H6v-7H3V9h9zM8%204h14v3h-6v12h-3V7H8V4z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.code::before, trix-toolbar .button_group input[type=button].icon.code::before {
        background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M18.2%2012L15%2015.2l1.4%201.4L21%2012l-4.6-4.6L15%208.8l3.2%203.2zM5.8%2012L9%208.8%207.6%207.4%203%2012l4.6%204.6L9%2015.2%205.8%2012z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.bullets::before, trix-toolbar .button_group input[type=button].icon.bullets::before {
        background-image: url(data:image/svg+xml,%3Csvg%20version%3D%221%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%204a2%202%200%201%200%200%204%202%202%200%200%200%200-4zm0%206a2%202%200%201%200%200%204%202%202%200%200%200%200-4zm0%206a2%202%200%201%200%200%204%202%202%200%200%200%200-4zm4%203h14v-2H8v2zm0-6h14v-2H8v2zm0-8v2h14V5H8z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.numbers::before, trix-toolbar .button_group input[type=button].icon.numbers::before {
        background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M2%2017h2v.5H3v1h1v.5H2v1h3v-4H2v1zm1-9h1V4H2v1h1v3zm-1%203h1.8L2%2013.1v.9h3v-1H3.2L5%2010.9V10H2v1zm5-6v2h14V5H7zm0%2014h14v-2H7v2zm0-6h14v-2H7v2z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.undo::before, trix-toolbar .button_group input[type=button].icon.undo::before {
        background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M12.5%208c-2.6%200-5%201-6.9%202.6L2%207v9h9l-3.6-3.6A8%208%200%200%201%2020%2016l2.4-.8a10.5%2010.5%200%200%200-10-7.2z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.redo::before, trix-toolbar .button_group input[type=button].icon.redo::before {
        background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M18.4%2010.6a10.5%2010.5%200%200%200-16.9%204.6L4%2016a8%208%200%200%201%2012.7-3.6L13%2016h9V7l-3.6%203.6z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.nesting-level.decrease::before, trix-toolbar .button_group input[type=button].icon.nesting-level.decrease::before {
        background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M3%2019h19v-2H3v2zm7-6h12v-2H10v2zm-8.3-.3l2.8%202.9L6%2014.2%204%2012l2-2-1.4-1.5L1%2012l.7.7zM3%205v2h19V5H3z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.nesting-level.increase::before, trix-toolbar .button_group input[type=button].icon.nesting-level.increase::before {
        background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M3%2019h19v-2H3v2zm7-6h12v-2H10v2zm-6.9-1L1%2014.2l1.4%201.4L6%2012l-.7-.7-2.8-2.8L1%209.9%203.1%2012zM3%205v2h19V5H3z%22%2F%3E%3C%2Fsvg%3E); }
      trix-toolbar .button_group button.icon.active::before, trix-toolbar .button_group input[type=button].icon.active::before {
        opacity: 1; }
      trix-toolbar .button_group button.icon:disabled::before, trix-toolbar .button_group input[type=button].icon:disabled::before {
        opacity: 0.125; }
    trix-toolbar .button_group button:not(.icon), trix-toolbar .button_group input[type=button]:not(.icon) {
      font-size: 0.75em;
      font-weight: 600;
      white-space: nowrap;
      padding: 0 0.5em;
      color: rgba(0, 0, 0, 0.6); }
      @media (max-device-width: 768px) {
        trix-toolbar .button_group button:not(.icon), trix-toolbar .button_group input[type=button]:not(.icon) {
          letter-spacing: -0.01em;
          padding: 0 0.3em; } }
      trix-toolbar .button_group button:not(.icon).active, trix-toolbar .button_group input[type=button]:not(.icon).active {
        color: black; }
      trix-toolbar .button_group button:not(.icon):disabled, trix-toolbar .button_group input[type=button]:not(.icon):disabled {
        color: rgba(0, 0, 0, 0.125); }
trix-toolbar .dialogs {
  position: relative; }
  trix-toolbar .dialogs .dialog {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    font-size: 0.75em;
    padding: 15px 10px;
    background: #fff;
    box-shadow: 0 0.3em 1em #ccc;
    border-top: 2px solid #888;
    border-radius: 5px;
    z-index: 5; }
    trix-toolbar .dialogs .dialog input {
      font-size: inherit;
      font-weight: normal; }
    trix-toolbar .dialogs .dialog input[type=url], trix-toolbar .dialogs .dialog input[type=text] {
      padding: 0.5em 0.8em;
      margin: 0 10px 0 0;
      border-radius: 3px;
      border: 1px solid #bbb;
      background-color: #fff;
      box-shadow: none;
      outline: none;
      -webkit-appearance: none;
      -moz-appearance: none; }
      trix-toolbar .dialogs .dialog input[type=url].validate:invalid, trix-toolbar .dialogs .dialog input[type=text].validate:invalid {
        box-shadow: #F00 0px 0px 1.5px 1px; }
    trix-toolbar .dialogs .dialog .button_group input[type=button] {
      font-size: inherit;
      padding: 0.5em;
      border-bottom: none; }
    trix-toolbar .dialogs .dialog.link_dialog {
      max-width: 600px; }
      trix-toolbar .dialogs .dialog.link_dialog .link_url_fields {
        display: flex;
        align-items: baseline; }
        trix-toolbar .dialogs .dialog.link_dialog .link_url_fields input[type=url] {
          flex: 1; }
        trix-toolbar .dialogs .dialog.link_dialog .link_url_fields .button_group {
          flex: 0 0 content;
          margin: 0; }
trix-editor [data-trix-mutable=true] {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none; }
  trix-editor [data-trix-mutable=true] ::-moz-selection {
    background: none; }
  trix-editor [data-trix-mutable=true] img {
    box-shadow: 0 0 0 2px highlight; }
  trix-editor [data-trix-mutable=true].attachment.attachment-file {
    box-shadow: 0 0 0 2px highlight;
    border-color: transparent; }
trix-editor .attachment:hover {
  cursor: default; }
trix-editor .attachment.attachment-preview .caption:hover {
  cursor: text; }
trix-editor .attachment button.remove {
  cursor: pointer; }
  trix-editor .attachment button.remove.icon {
    text-indent: -9999px;
    display: block;
    position: absolute;
    z-index: 1;
    padding: 0;
    margin: 0;
    top: -1.1em;
    left: calc(50% - 0.8em);
    width: 1.8em;
    height: 1.8em;
    line-height: 1.8em;
    border-radius: 50%;
    text-indent: -9999px;
    background-color: #fff;
    border: 2px solid highlight;
    box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.25); }
    trix-editor .attachment button.remove.icon::before {
      display: inline-block;
      position: absolute;
      top: 0.1em;
      right: 0.1em;
      bottom: 0.1em;
      left: 0.1em;
      opacity: 0.75;
      content: "";
      background-image: url(data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M19%206.4L17.6%205%2012%2010.6%206.4%205%205%206.4l5.6%205.6L5%2017.6%206.4%2019l5.6-5.6%205.6%205.6%201.4-1.4-5.6-5.6z%22%2F%3E%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3C%2Fsvg%3E);
      background-position: center;
      background-repeat: no-repeat;
      background-size: contain; }
  trix-editor .attachment button.remove:hover {
    border-color: #333; }
    trix-editor .attachment button.remove:hover::before {
      opacity: 1; }
trix-editor .attachment .caption.caption-editing textarea {
  display: inline-block;
  width: 100%;
  margin: 0;
  padding: 0;
  font-size: inherit;
  font-family: inherit;
  line-height: inherit;
  color: inherit;
  text-align: center;
  vertical-align: top;
  border: none;
  outline: none;
  -webkit-appearance: none;
  -moz-appearance: none; }
trix-editor .attachment progress {
  position: absolute;
  z-index: 1;
  height: 20px;
  top: calc(50% - 10px);
  left: 5%;
  width: 90%;
  opacity: 0.9; }
@charset "UTF-8";
.trix-content {
  line-height: 1.5; }
  .trix-content h1 {
    font-size: 1.2em;
    line-height: 1.2;
    margin: 0; }
  .trix-content blockquote {
    margin: 0 0 0 0.3em;
    padding: 0 0 0 0.6em;
    border-left: 0.3em solid #ccc; }
  .trix-content pre {
    font-family: monospace;
    font-size: 0.9em;
    margin: 0;
    padding: 0.5em;
    white-space: pre;
    background-color: #eee;
    overflow-x: auto; }
  .trix-content ul, .trix-content ol, .trix-content li {
    margin: 0;
    padding: 0; }
    .trix-content ul li, .trix-content ol li, .trix-content li li {
      margin-left: 1em; }
  .trix-content img {
    max-width: 100%;
    height: auto; }
  .trix-content a[data-trix-attachment] {
    color: inherit;
    text-decoration: none; }
    .trix-content a[data-trix-attachment]:hover, .trix-content a[data-trix-attachment]:visited:hover {
      color: inherit; }
  .trix-content .attachment {
    display: inline-block;
    position: relative;
    max-width: 100%;
    margin: 0;
    padding: 0; }
    .trix-content .attachment .caption {
      padding: 0;
      text-align: center; }
      .trix-content .attachment .caption .size:before {
        content: ' \B7   '; }
    .trix-content .attachment.attachment-preview {
      width: 100%;
      text-align: center; }
      .trix-content .attachment.attachment-preview .caption {
        color: #666;
        font-size: 0.9em;
        line-height: 1.2; }
    .trix-content .attachment.attachment-file {
      color: #333;
      line-height: 1;
      margin: 0 2px 2px 0;
      padding: 0.4em 1em;
      border: 1px solid #bbb;
      border-radius: 5px; }
@charset "UTF-8";
/**
 * Foundation for Sites by ZURB
 * Version 6.3.1
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */
/* Document
       ========================================================================== */
/**
     * 1. Change the default font family in all browsers (opinionated).
     * 2. Correct the line height in all browsers.
     * 3. Prevent adjustments of font size after orientation changes in
     *    IE on Windows Phone and in iOS.
     */
html {
  font-family: sans-serif;
  /* 1 */
  line-height: 1.15;
  /* 2 */
  -ms-text-size-adjust: 100%;
  /* 3 */
  -webkit-text-size-adjust: 100%;
  /* 3 */ }

/* Sections
       ========================================================================== */
/**
     * Remove the margin in all browsers (opinionated).
     */
body {
  margin: 0; }

/**
     * Add the correct display in IE 9-.
     */
article,
aside,
footer,
header,
nav,
section {
  display: block; }

/**
     * Correct the font size and margin on `h1` elements within `section` and
     * `article` contexts in Chrome, Firefox, and Safari.
     */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/* Grouping content
       ========================================================================== */
/**
     * Add the correct display in IE 9-.
     */
figcaption,
figure {
  display: block; }

/**
     * Add the correct margin in IE 8.
     */
figure {
  margin: 1em 40px; }

/**
     * 1. Add the correct box sizing in Firefox.
     * 2. Show the overflow in Edge and IE.
     */
hr {
  box-sizing: content-box;
  /* 1 */
  height: 0;
  /* 1 */
  overflow: visible;
  /* 2 */ }

/**
     * Add the correct display in IE.
     */
main {
  display: block; }

/**
     * 1. Correct the inheritance and scaling of font size in all browsers.
     * 2. Correct the odd `em` font sizing in all browsers.
     */
pre {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/* Links
       ========================================================================== */
/**
     * 1. Remove the gray background on active links in IE 10.
     * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
     */
a {
  background-color: transparent;
  /* 1 */
  -webkit-text-decoration-skip: objects;
  /* 2 */ }

/**
     * Remove the outline on focused links when they are also active or hovered
     * in all browsers (opinionated).
     */
a:active,
a:hover {
  outline-width: 0; }

/* Text-level semantics
       ========================================================================== */
/**
     * 1. Remove the bottom border in Firefox 39-.
     * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
     */
abbr[title] {
  border-bottom: none;
  /* 1 */
  text-decoration: underline;
  /* 2 */
  text-decoration: underline dotted;
  /* 2 */ }

/**
     * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
     */
b,
strong {
  font-weight: inherit; }

/**
     * Add the correct font weight in Chrome, Edge, and Safari.
     */
b,
strong {
  font-weight: bolder; }

/**
     * 1. Correct the inheritance and scaling of font size in all browsers.
     * 2. Correct the odd `em` font sizing in all browsers.
     */
code,
kbd,
samp {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/**
     * Add the correct font style in Android 4.3-.
     */
dfn {
  font-style: italic; }

/**
     * Add the correct background and color in IE 9-.
     */
mark {
  background-color: #ff0;
  color: #000; }

/**
     * Add the correct font size in all browsers.
     */
small {
  font-size: 80%; }

/**
     * Prevent `sub` and `sup` elements from affecting the line height in
     * all browsers.
     */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sub {
  bottom: -0.25em; }

sup {
  top: -0.5em; }

/* Embedded content
       ========================================================================== */
/**
     * Add the correct display in IE 9-.
     */
audio,
video {
  display: inline-block; }

/**
     * Add the correct display in iOS 4-7.
     */
audio:not([controls]) {
  display: none;
  height: 0; }

/**
     * Remove the border on images inside links in IE 10-.
     */
img {
  border-style: none; }

/**
     * Hide the overflow in IE.
     */
svg:not(:root) {
  overflow: hidden; }

/* Forms
       ========================================================================== */
/**
     * 1. Change the font styles in all browsers (opinionated).
     * 2. Remove the margin in Firefox and Safari.
     */
button,
input,
optgroup,
select,
textarea {
  font-family: sans-serif;
  /* 1 */
  font-size: 100%;
  /* 1 */
  line-height: 1.15;
  /* 1 */
  margin: 0;
  /* 2 */ }

/**
     * Show the overflow in IE.
     */
button {
  overflow: visible; }

/**
     * Remove the inheritance of text transform in Edge, Firefox, and IE.
     * 1. Remove the inheritance of text transform in Firefox.
     */
button,
select {
  /* 1 */
  text-transform: none; }

/**
     * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
     *    controls in Android 4.
     * 2. Correct the inability to style clickable types in iOS and Safari.
     */
button,
html [type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
  /* 2 */ }

button,
[type="button"],
[type="reset"],
[type="submit"] {
  /**
       * Remove the inner border and padding in Firefox.
       */
  /**
       * Restore the focus styles unset by the previous rule.
       */ }

button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0; }

button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText; }

/**
     * Show the overflow in Edge.
     */
input {
  overflow: visible; }

/**
     * 1. Add the correct box sizing in IE 10-.
     * 2. Remove the padding in IE 10-.
     */
[type="checkbox"],
[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
     * Correct the cursor style of increment and decrement buttons in Chrome.
     */
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
     * 1. Correct the odd appearance in Chrome and Safari.
     * 2. Correct the outline style in Safari.
     */
[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */
  /**
       * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
       */ }

[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
     * 1. Correct the inability to style clickable types in iOS and Safari.
     * 2. Change font properties to `inherit` in Safari.
     */
::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */ }

/**
     * Change the border, margin, and padding in all browsers (opinionated).
     */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
     * 1. Correct the text wrapping in Edge and IE.
     * 2. Correct the color inheritance from `fieldset` elements in IE.
     * 3. Remove the padding so developers are not caught out when they zero out
     *    `fieldset` elements in all browsers.
     */
legend {
  box-sizing: border-box;
  /* 1 */
  display: table;
  /* 1 */
  max-width: 100%;
  /* 1 */
  padding: 0;
  /* 3 */
  color: inherit;
  /* 2 */
  white-space: normal;
  /* 1 */ }

/**
     * 1. Add the correct display in IE 9-.
     * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
     */
progress {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
     * Remove the default vertical scrollbar in IE.
     */
textarea {
  overflow: auto; }

/* Interactive
       ========================================================================== */
/*
     * Add the correct display in Edge, IE, and Firefox.
     */
details {
  display: block; }

/*
     * Add the correct display in all browsers.
     */
summary {
  display: list-item; }

/*
     * Add the correct display in IE 9-.
     */
menu {
  display: block; }

/* Scripting
       ========================================================================== */
/**
     * Add the correct display in IE 9-.
     */
canvas {
  display: inline-block; }

/**
     * Add the correct display in IE.
     */
template {
  display: none; }

/* Hidden
       ========================================================================== */
/**
     * Add the correct display in IE 10-.
     */
[hidden] {
  display: none; }

.foundation-mq {
  font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; }

html {
  box-sizing: border-box;
  font-size: 100%; }

*,
*::before,
*::after {
  box-sizing: inherit; }

body {
  margin: 0;
  padding: 0;
  background: #fefefe;
  font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
  font-weight: normal;
  line-height: 1.5;
  color: #0a0a0a;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

img {
  display: inline-block;
  vertical-align: middle;
  max-width: 100%;
  height: auto;
  -ms-interpolation-mode: bicubic; }

textarea {
  height: auto;
  min-height: 50px;
  border-radius: 0; }

select {
  box-sizing: border-box;
  width: 100%;
  border-radius: 0; }

.map_canvas img,
.map_canvas embed,
.map_canvas object,
.mqa-display img,
.mqa-display embed,
.mqa-display object {
  max-width: none !important; }

button {
  padding: 0;
  appearance: none;
  border: 0;
  border-radius: 0;
  background: transparent;
  line-height: 1; }

[data-whatinput='mouse'] button {
  outline: 0; }

pre {
  overflow: auto; }

.is-visible {
  display: block !important; }

.is-hidden {
  display: none !important; }

.row {
  max-width: 75rem;
  margin-right: auto;
  margin-left: auto; }

.row::before,
.row::after {
  display: table;
  content: ' '; }

.row::after {
  clear: both; }

.row.collapse > .column,
.row.collapse > .columns {
  padding-right: 0;
  padding-left: 0; }

.row .row {
  margin-right: -0.625rem;
  margin-left: -0.625rem; }

@media print, screen and (min-width: 40em) {
  .row .row {
    margin-right: -0.9375rem;
    margin-left: -0.9375rem; } }

@media print, screen and (min-width: 64em) {
  .row .row {
    margin-right: -0.9375rem;
    margin-left: -0.9375rem; } }

.row .row.collapse {
  margin-right: 0;
  margin-left: 0; }

.row.expanded {
  max-width: none; }

.row.expanded .row {
  margin-right: auto;
  margin-left: auto; }

.row:not(.expanded) .row {
  max-width: none; }

.row.gutter-small > .column,
.row.gutter-small > .columns {
  padding-right: 0.625rem;
  padding-left: 0.625rem; }

.row.gutter-medium > .column,
.row.gutter-medium > .columns {
  padding-right: 0.9375rem;
  padding-left: 0.9375rem; }

.column,
.columns {
  width: 100%;
  float: left;
  padding-right: 0.625rem;
  padding-left: 0.625rem; }

@media print, screen and (min-width: 40em) {
  .column,
  .columns {
    padding-right: 0.9375rem;
    padding-left: 0.9375rem; } }

.column:last-child:not(:first-child),
.columns:last-child:not(:first-child) {
  float: right; }

.column.end:last-child:last-child,
.end.columns:last-child:last-child {
  float: left; }

.column.row.row,
.row.row.columns {
  float: none; }

.row .column.row.row,
.row .row.row.columns {
  margin-right: 0;
  margin-left: 0;
  padding-right: 0;
  padding-left: 0; }

.small-1 {
  width: 8.33333%; }

.small-push-1 {
  position: relative;
  left: 8.33333%; }

.small-pull-1 {
  position: relative;
  left: -8.33333%; }

.small-offset-0 {
  margin-left: 0%; }

.small-2 {
  width: 16.66667%; }

.small-push-2 {
  position: relative;
  left: 16.66667%; }

.small-pull-2 {
  position: relative;
  left: -16.66667%; }

.small-offset-1 {
  margin-left: 8.33333%; }

.small-3 {
  width: 25%; }

.small-push-3 {
  position: relative;
  left: 25%; }

.small-pull-3 {
  position: relative;
  left: -25%; }

.small-offset-2 {
  margin-left: 16.66667%; }

.small-4 {
  width: 33.33333%; }

.small-push-4 {
  position: relative;
  left: 33.33333%; }

.small-pull-4 {
  position: relative;
  left: -33.33333%; }

.small-offset-3 {
  margin-left: 25%; }

.small-5 {
  width: 41.66667%; }

.small-push-5 {
  position: relative;
  left: 41.66667%; }

.small-pull-5 {
  position: relative;
  left: -41.66667%; }

.small-offset-4 {
  margin-left: 33.33333%; }

.small-6 {
  width: 50%; }

.small-push-6 {
  position: relative;
  left: 50%; }

.small-pull-6 {
  position: relative;
  left: -50%; }

.small-offset-5 {
  margin-left: 41.66667%; }

.small-7 {
  width: 58.33333%; }

.small-push-7 {
  position: relative;
  left: 58.33333%; }

.small-pull-7 {
  position: relative;
  left: -58.33333%; }

.small-offset-6 {
  margin-left: 50%; }

.small-8 {
  width: 66.66667%; }

.small-push-8 {
  position: relative;
  left: 66.66667%; }

.small-pull-8 {
  position: relative;
  left: -66.66667%; }

.small-offset-7 {
  margin-left: 58.33333%; }

.small-9 {
  width: 75%; }

.small-push-9 {
  position: relative;
  left: 75%; }

.small-pull-9 {
  position: relative;
  left: -75%; }

.small-offset-8 {
  margin-left: 66.66667%; }

.small-10 {
  width: 83.33333%; }

.small-push-10 {
  position: relative;
  left: 83.33333%; }

.small-pull-10 {
  position: relative;
  left: -83.33333%; }

.small-offset-9 {
  margin-left: 75%; }

.small-11 {
  width: 91.66667%; }

.small-push-11 {
  position: relative;
  left: 91.66667%; }

.small-pull-11 {
  position: relative;
  left: -91.66667%; }

.small-offset-10 {
  margin-left: 83.33333%; }

.small-12 {
  width: 100%; }

.small-offset-11 {
  margin-left: 91.66667%; }

.small-up-1 > .column,
.small-up-1 > .columns {
  float: left;
  width: 100%; }

.small-up-1 > .column:nth-of-type(1n),
.small-up-1 > .columns:nth-of-type(1n) {
  clear: none; }

.small-up-1 > .column:nth-of-type(1n+1),
.small-up-1 > .columns:nth-of-type(1n+1) {
  clear: both; }

.small-up-1 > .column:last-child,
.small-up-1 > .columns:last-child {
  float: left; }

.small-up-2 > .column,
.small-up-2 > .columns {
  float: left;
  width: 50%; }

.small-up-2 > .column:nth-of-type(1n),
.small-up-2 > .columns:nth-of-type(1n) {
  clear: none; }

.small-up-2 > .column:nth-of-type(2n+1),
.small-up-2 > .columns:nth-of-type(2n+1) {
  clear: both; }

.small-up-2 > .column:last-child,
.small-up-2 > .columns:last-child {
  float: left; }

.small-up-3 > .column,
.small-up-3 > .columns {
  float: left;
  width: 33.33333%; }

.small-up-3 > .column:nth-of-type(1n),
.small-up-3 > .columns:nth-of-type(1n) {
  clear: none; }

.small-up-3 > .column:nth-of-type(3n+1),
.small-up-3 > .columns:nth-of-type(3n+1) {
  clear: both; }

.small-up-3 > .column:last-child,
.small-up-3 > .columns:last-child {
  float: left; }

.small-up-4 > .column,
.small-up-4 > .columns {
  float: left;
  width: 25%; }

.small-up-4 > .column:nth-of-type(1n),
.small-up-4 > .columns:nth-of-type(1n) {
  clear: none; }

.small-up-4 > .column:nth-of-type(4n+1),
.small-up-4 > .columns:nth-of-type(4n+1) {
  clear: both; }

.small-up-4 > .column:last-child,
.small-up-4 > .columns:last-child {
  float: left; }

.small-up-5 > .column,
.small-up-5 > .columns {
  float: left;
  width: 20%; }

.small-up-5 > .column:nth-of-type(1n),
.small-up-5 > .columns:nth-of-type(1n) {
  clear: none; }

.small-up-5 > .column:nth-of-type(5n+1),
.small-up-5 > .columns:nth-of-type(5n+1) {
  clear: both; }

.small-up-5 > .column:last-child,
.small-up-5 > .columns:last-child {
  float: left; }

.small-up-6 > .column,
.small-up-6 > .columns {
  float: left;
  width: 16.66667%; }

.small-up-6 > .column:nth-of-type(1n),
.small-up-6 > .columns:nth-of-type(1n) {
  clear: none; }

.small-up-6 > .column:nth-of-type(6n+1),
.small-up-6 > .columns:nth-of-type(6n+1) {
  clear: both; }

.small-up-6 > .column:last-child,
.small-up-6 > .columns:last-child {
  float: left; }

.small-up-7 > .column,
.small-up-7 > .columns {
  float: left;
  width: 14.28571%; }

.small-up-7 > .column:nth-of-type(1n),
.small-up-7 > .columns:nth-of-type(1n) {
  clear: none; }

.small-up-7 > .column:nth-of-type(7n+1),
.small-up-7 > .columns:nth-of-type(7n+1) {
  clear: both; }

.small-up-7 > .column:last-child,
.small-up-7 > .columns:last-child {
  float: left; }

.small-up-8 > .column,
.small-up-8 > .columns {
  float: left;
  width: 12.5%; }

.small-up-8 > .column:nth-of-type(1n),
.small-up-8 > .columns:nth-of-type(1n) {
  clear: none; }

.small-up-8 > .column:nth-of-type(8n+1),
.small-up-8 > .columns:nth-of-type(8n+1) {
  clear: both; }

.small-up-8 > .column:last-child,
.small-up-8 > .columns:last-child {
  float: left; }

.small-collapse > .column,
.small-collapse > .columns {
  padding-right: 0;
  padding-left: 0; }

.small-collapse .row {
  margin-right: 0;
  margin-left: 0; }

.expanded.row .small-collapse.row {
  margin-right: 0;
  margin-left: 0; }

.small-uncollapse > .column,
.small-uncollapse > .columns {
  padding-right: 0.625rem;
  padding-left: 0.625rem; }

.small-centered {
  margin-right: auto;
  margin-left: auto; }

.small-centered,
.small-centered:last-child:not(:first-child) {
  float: none;
  clear: both; }

.small-uncentered,
.small-push-0,
.small-pull-0 {
  position: static;
  float: left;
  margin-right: 0;
  margin-left: 0; }

@media print, screen and (min-width: 40em) {
  .medium-1 {
    width: 8.33333%; }
  .medium-push-1 {
    position: relative;
    left: 8.33333%; }
  .medium-pull-1 {
    position: relative;
    left: -8.33333%; }
  .medium-offset-0 {
    margin-left: 0%; }
  .medium-2 {
    width: 16.66667%; }
  .medium-push-2 {
    position: relative;
    left: 16.66667%; }
  .medium-pull-2 {
    position: relative;
    left: -16.66667%; }
  .medium-offset-1 {
    margin-left: 8.33333%; }
  .medium-3 {
    width: 25%; }
  .medium-push-3 {
    position: relative;
    left: 25%; }
  .medium-pull-3 {
    position: relative;
    left: -25%; }
  .medium-offset-2 {
    margin-left: 16.66667%; }
  .medium-4 {
    width: 33.33333%; }
  .medium-push-4 {
    position: relative;
    left: 33.33333%; }
  .medium-pull-4 {
    position: relative;
    left: -33.33333%; }
  .medium-offset-3 {
    margin-left: 25%; }
  .medium-5 {
    width: 41.66667%; }
  .medium-push-5 {
    position: relative;
    left: 41.66667%; }
  .medium-pull-5 {
    position: relative;
    left: -41.66667%; }
  .medium-offset-4 {
    margin-left: 33.33333%; }
  .medium-6 {
    width: 50%; }
  .medium-push-6 {
    position: relative;
    left: 50%; }
  .medium-pull-6 {
    position: relative;
    left: -50%; }
  .medium-offset-5 {
    margin-left: 41.66667%; }
  .medium-7 {
    width: 58.33333%; }
  .medium-push-7 {
    position: relative;
    left: 58.33333%; }
  .medium-pull-7 {
    position: relative;
    left: -58.33333%; }
  .medium-offset-6 {
    margin-left: 50%; }
  .medium-8 {
    width: 66.66667%; }
  .medium-push-8 {
    position: relative;
    left: 66.66667%; }
  .medium-pull-8 {
    position: relative;
    left: -66.66667%; }
  .medium-offset-7 {
    margin-left: 58.33333%; }
  .medium-9 {
    width: 75%; }
  .medium-push-9 {
    position: relative;
    left: 75%; }
  .medium-pull-9 {
    position: relative;
    left: -75%; }
  .medium-offset-8 {
    margin-left: 66.66667%; }
  .medium-10 {
    width: 83.33333%; }
  .medium-push-10 {
    position: relative;
    left: 83.33333%; }
  .medium-pull-10 {
    position: relative;
    left: -83.33333%; }
  .medium-offset-9 {
    margin-left: 75%; }
  .medium-11 {
    width: 91.66667%; }
  .medium-push-11 {
    position: relative;
    left: 91.66667%; }
  .medium-pull-11 {
    position: relative;
    left: -91.66667%; }
  .medium-offset-10 {
    margin-left: 83.33333%; }
  .medium-12 {
    width: 100%; }
  .medium-offset-11 {
    margin-left: 91.66667%; }
  .medium-up-1 > .column,
  .medium-up-1 > .columns {
    float: left;
    width: 100%; }
  .medium-up-1 > .column:nth-of-type(1n),
  .medium-up-1 > .columns:nth-of-type(1n) {
    clear: none; }
  .medium-up-1 > .column:nth-of-type(1n+1),
  .medium-up-1 > .columns:nth-of-type(1n+1) {
    clear: both; }
  .medium-up-1 > .column:last-child,
  .medium-up-1 > .columns:last-child {
    float: left; }
  .medium-up-2 > .column,
  .medium-up-2 > .columns {
    float: left;
    width: 50%; }
  .medium-up-2 > .column:nth-of-type(1n),
  .medium-up-2 > .columns:nth-of-type(1n) {
    clear: none; }
  .medium-up-2 > .column:nth-of-type(2n+1),
  .medium-up-2 > .columns:nth-of-type(2n+1) {
    clear: both; }
  .medium-up-2 > .column:last-child,
  .medium-up-2 > .columns:last-child {
    float: left; }
  .medium-up-3 > .column,
  .medium-up-3 > .columns {
    float: left;
    width: 33.33333%; }
  .medium-up-3 > .column:nth-of-type(1n),
  .medium-up-3 > .columns:nth-of-type(1n) {
    clear: none; }
  .medium-up-3 > .column:nth-of-type(3n+1),
  .medium-up-3 > .columns:nth-of-type(3n+1) {
    clear: both; }
  .medium-up-3 > .column:last-child,
  .medium-up-3 > .columns:last-child {
    float: left; }
  .medium-up-4 > .column,
  .medium-up-4 > .columns {
    float: left;
    width: 25%; }
  .medium-up-4 > .column:nth-of-type(1n),
  .medium-up-4 > .columns:nth-of-type(1n) {
    clear: none; }
  .medium-up-4 > .column:nth-of-type(4n+1),
  .medium-up-4 > .columns:nth-of-type(4n+1) {
    clear: both; }
  .medium-up-4 > .column:last-child,
  .medium-up-4 > .columns:last-child {
    float: left; }
  .medium-up-5 > .column,
  .medium-up-5 > .columns {
    float: left;
    width: 20%; }
  .medium-up-5 > .column:nth-of-type(1n),
  .medium-up-5 > .columns:nth-of-type(1n) {
    clear: none; }
  .medium-up-5 > .column:nth-of-type(5n+1),
  .medium-up-5 > .columns:nth-of-type(5n+1) {
    clear: both; }
  .medium-up-5 > .column:last-child,
  .medium-up-5 > .columns:last-child {
    float: left; }
  .medium-up-6 > .column,
  .medium-up-6 > .columns {
    float: left;
    width: 16.66667%; }
  .medium-up-6 > .column:nth-of-type(1n),
  .medium-up-6 > .columns:nth-of-type(1n) {
    clear: none; }
  .medium-up-6 > .column:nth-of-type(6n+1),
  .medium-up-6 > .columns:nth-of-type(6n+1) {
    clear: both; }
  .medium-up-6 > .column:last-child,
  .medium-up-6 > .columns:last-child {
    float: left; }
  .medium-up-7 > .column,
  .medium-up-7 > .columns {
    float: left;
    width: 14.28571%; }
  .medium-up-7 > .column:nth-of-type(1n),
  .medium-up-7 > .columns:nth-of-type(1n) {
    clear: none; }
  .medium-up-7 > .column:nth-of-type(7n+1),
  .medium-up-7 > .columns:nth-of-type(7n+1) {
    clear: both; }
  .medium-up-7 > .column:last-child,
  .medium-up-7 > .columns:last-child {
    float: left; }
  .medium-up-8 > .column,
  .medium-up-8 > .columns {
    float: left;
    width: 12.5%; }
  .medium-up-8 > .column:nth-of-type(1n),
  .medium-up-8 > .columns:nth-of-type(1n) {
    clear: none; }
  .medium-up-8 > .column:nth-of-type(8n+1),
  .medium-up-8 > .columns:nth-of-type(8n+1) {
    clear: both; }
  .medium-up-8 > .column:last-child,
  .medium-up-8 > .columns:last-child {
    float: left; }
  .medium-collapse > .column,
  .medium-collapse > .columns {
    padding-right: 0;
    padding-left: 0; }
  .medium-collapse .row {
    margin-right: 0;
    margin-left: 0; }
  .expanded.row .medium-collapse.row {
    margin-right: 0;
    margin-left: 0; }
  .medium-uncollapse > .column,
  .medium-uncollapse > .columns {
    padding-right: 0.9375rem;
    padding-left: 0.9375rem; }
  .medium-centered {
    margin-right: auto;
    margin-left: auto; }
  .medium-centered,
  .medium-centered:last-child:not(:first-child) {
    float: none;
    clear: both; }
  .medium-uncentered,
  .medium-push-0,
  .medium-pull-0 {
    position: static;
    float: left;
    margin-right: 0;
    margin-left: 0; } }

@media print, screen and (min-width: 64em) {
  .large-1 {
    width: 8.33333%; }
  .large-push-1 {
    position: relative;
    left: 8.33333%; }
  .large-pull-1 {
    position: relative;
    left: -8.33333%; }
  .large-offset-0 {
    margin-left: 0%; }
  .large-2 {
    width: 16.66667%; }
  .large-push-2 {
    position: relative;
    left: 16.66667%; }
  .large-pull-2 {
    position: relative;
    left: -16.66667%; }
  .large-offset-1 {
    margin-left: 8.33333%; }
  .large-3 {
    width: 25%; }
  .large-push-3 {
    position: relative;
    left: 25%; }
  .large-pull-3 {
    position: relative;
    left: -25%; }
  .large-offset-2 {
    margin-left: 16.66667%; }
  .large-4 {
    width: 33.33333%; }
  .large-push-4 {
    position: relative;
    left: 33.33333%; }
  .large-pull-4 {
    position: relative;
    left: -33.33333%; }
  .large-offset-3 {
    margin-left: 25%; }
  .large-5 {
    width: 41.66667%; }
  .large-push-5 {
    position: relative;
    left: 41.66667%; }
  .large-pull-5 {
    position: relative;
    left: -41.66667%; }
  .large-offset-4 {
    margin-left: 33.33333%; }
  .large-6 {
    width: 50%; }
  .large-push-6 {
    position: relative;
    left: 50%; }
  .large-pull-6 {
    position: relative;
    left: -50%; }
  .large-offset-5 {
    margin-left: 41.66667%; }
  .large-7 {
    width: 58.33333%; }
  .large-push-7 {
    position: relative;
    left: 58.33333%; }
  .large-pull-7 {
    position: relative;
    left: -58.33333%; }
  .large-offset-6 {
    margin-left: 50%; }
  .large-8 {
    width: 66.66667%; }
  .large-push-8 {
    position: relative;
    left: 66.66667%; }
  .large-pull-8 {
    position: relative;
    left: -66.66667%; }
  .large-offset-7 {
    margin-left: 58.33333%; }
  .large-9 {
    width: 75%; }
  .large-push-9 {
    position: relative;
    left: 75%; }
  .large-pull-9 {
    position: relative;
    left: -75%; }
  .large-offset-8 {
    margin-left: 66.66667%; }
  .large-10 {
    width: 83.33333%; }
  .large-push-10 {
    position: relative;
    left: 83.33333%; }
  .large-pull-10 {
    position: relative;
    left: -83.33333%; }
  .large-offset-9 {
    margin-left: 75%; }
  .large-11 {
    width: 91.66667%; }
  .large-push-11 {
    position: relative;
    left: 91.66667%; }
  .large-pull-11 {
    position: relative;
    left: -91.66667%; }
  .large-offset-10 {
    margin-left: 83.33333%; }
  .large-12 {
    width: 100%; }
  .large-offset-11 {
    margin-left: 91.66667%; }
  .large-up-1 > .column,
  .large-up-1 > .columns {
    float: left;
    width: 100%; }
  .large-up-1 > .column:nth-of-type(1n),
  .large-up-1 > .columns:nth-of-type(1n) {
    clear: none; }
  .large-up-1 > .column:nth-of-type(1n+1),
  .large-up-1 > .columns:nth-of-type(1n+1) {
    clear: both; }
  .large-up-1 > .column:last-child,
  .large-up-1 > .columns:last-child {
    float: left; }
  .large-up-2 > .column,
  .large-up-2 > .columns {
    float: left;
    width: 50%; }
  .large-up-2 > .column:nth-of-type(1n),
  .large-up-2 > .columns:nth-of-type(1n) {
    clear: none; }
  .large-up-2 > .column:nth-of-type(2n+1),
  .large-up-2 > .columns:nth-of-type(2n+1) {
    clear: both; }
  .large-up-2 > .column:last-child,
  .large-up-2 > .columns:last-child {
    float: left; }
  .large-up-3 > .column,
  .large-up-3 > .columns {
    float: left;
    width: 33.33333%; }
  .large-up-3 > .column:nth-of-type(1n),
  .large-up-3 > .columns:nth-of-type(1n) {
    clear: none; }
  .large-up-3 > .column:nth-of-type(3n+1),
  .large-up-3 > .columns:nth-of-type(3n+1) {
    clear: both; }
  .large-up-3 > .column:last-child,
  .large-up-3 > .columns:last-child {
    float: left; }
  .large-up-4 > .column,
  .large-up-4 > .columns {
    float: left;
    width: 25%; }
  .large-up-4 > .column:nth-of-type(1n),
  .large-up-4 > .columns:nth-of-type(1n) {
    clear: none; }
  .large-up-4 > .column:nth-of-type(4n+1),
  .large-up-4 > .columns:nth-of-type(4n+1) {
    clear: both; }
  .large-up-4 > .column:last-child,
  .large-up-4 > .columns:last-child {
    float: left; }
  .large-up-5 > .column,
  .large-up-5 > .columns {
    float: left;
    width: 20%; }
  .large-up-5 > .column:nth-of-type(1n),
  .large-up-5 > .columns:nth-of-type(1n) {
    clear: none; }
  .large-up-5 > .column:nth-of-type(5n+1),
  .large-up-5 > .columns:nth-of-type(5n+1) {
    clear: both; }
  .large-up-5 > .column:last-child,
  .large-up-5 > .columns:last-child {
    float: left; }
  .large-up-6 > .column,
  .large-up-6 > .columns {
    float: left;
    width: 16.66667%; }
  .large-up-6 > .column:nth-of-type(1n),
  .large-up-6 > .columns:nth-of-type(1n) {
    clear: none; }
  .large-up-6 > .column:nth-of-type(6n+1),
  .large-up-6 > .columns:nth-of-type(6n+1) {
    clear: both; }
  .large-up-6 > .column:last-child,
  .large-up-6 > .columns:last-child {
    float: left; }
  .large-up-7 > .column,
  .large-up-7 > .columns {
    float: left;
    width: 14.28571%; }
  .large-up-7 > .column:nth-of-type(1n),
  .large-up-7 > .columns:nth-of-type(1n) {
    clear: none; }
  .large-up-7 > .column:nth-of-type(7n+1),
  .large-up-7 > .columns:nth-of-type(7n+1) {
    clear: both; }
  .large-up-7 > .column:last-child,
  .large-up-7 > .columns:last-child {
    float: left; }
  .large-up-8 > .column,
  .large-up-8 > .columns {
    float: left;
    width: 12.5%; }
  .large-up-8 > .column:nth-of-type(1n),
  .large-up-8 > .columns:nth-of-type(1n) {
    clear: none; }
  .large-up-8 > .column:nth-of-type(8n+1),
  .large-up-8 > .columns:nth-of-type(8n+1) {
    clear: both; }
  .large-up-8 > .column:last-child,
  .large-up-8 > .columns:last-child {
    float: left; }
  .large-collapse > .column,
  .large-collapse > .columns {
    padding-right: 0;
    padding-left: 0; }
  .large-collapse .row {
    margin-right: 0;
    margin-left: 0; }
  .expanded.row .large-collapse.row {
    margin-right: 0;
    margin-left: 0; }
  .large-uncollapse > .column,
  .large-uncollapse > .columns {
    padding-right: 0.9375rem;
    padding-left: 0.9375rem; }
  .large-centered {
    margin-right: auto;
    margin-left: auto; }
  .large-centered,
  .large-centered:last-child:not(:first-child) {
    float: none;
    clear: both; }
  .large-uncentered,
  .large-push-0,
  .large-pull-0 {
    position: static;
    float: left;
    margin-right: 0;
    margin-left: 0; } }

.column-block {
  margin-bottom: 1.25rem; }

.column-block > :last-child {
  margin-bottom: 0; }

@media print, screen and (min-width: 40em) {
  .column-block {
    margin-bottom: 1.875rem; }
  .column-block > :last-child {
    margin-bottom: 0; } }

div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
form,
p,
blockquote,
th,
td {
  margin: 0;
  padding: 0; }

p {
  margin-bottom: 1rem;
  font-size: inherit;
  line-height: 1.6;
  text-rendering: optimizeLegibility; }

em,
i {
  font-style: italic;
  line-height: inherit; }

strong,
b {
  font-weight: bold;
  line-height: inherit; }

small {
  font-size: 80%;
  line-height: inherit; }

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  color: inherit;
  text-rendering: optimizeLegibility; }

h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small {
  line-height: 0;
  color: #cacaca; }

h1 {
  font-size: 1.5rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem; }

h2 {
  font-size: 1.25rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem; }

h3 {
  font-size: 1.1875rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem; }

h4 {
  font-size: 1.125rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem; }

h5 {
  font-size: 1.0625rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem; }

h6 {
  font-size: 1rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem; }

@media print, screen and (min-width: 40em) {
  h1 {
    font-size: 3rem; }
  h2 {
    font-size: 2.5rem; }
  h3 {
    font-size: 1.9375rem; }
  h4 {
    font-size: 1.5625rem; }
  h5 {
    font-size: 1.25rem; }
  h6 {
    font-size: 1rem; } }

a {
  line-height: inherit;
  color: #1779ba;
  text-decoration: none;
  cursor: pointer; }

a:hover,
a:focus {
  color: #1468a0; }

a img {
  border: 0; }

hr {
  clear: both;
  max-width: 75rem;
  height: 0;
  margin: 1.25rem auto;
  border-top: 0;
  border-right: 0;
  border-bottom: 1px solid #cacaca;
  border-left: 0; }

ul,
ol,
dl {
  margin-bottom: 1rem;
  list-style-position: outside;
  line-height: 1.6; }

li {
  font-size: inherit; }

ul {
  margin-left: 1.25rem;
  list-style-type: disc; }

ol {
  margin-left: 1.25rem; }

ul ul,
ol ul,
ul ol,
ol ol {
  margin-left: 1.25rem;
  margin-bottom: 0; }

dl {
  margin-bottom: 1rem; }

dl dt {
  margin-bottom: 0.3rem;
  font-weight: bold; }

blockquote {
  margin: 0 0 1rem;
  padding: 0.5625rem 1.25rem 0 1.1875rem;
  border-left: 1px solid #cacaca; }

blockquote,
blockquote p {
  line-height: 1.6;
  color: #8a8a8a; }

cite {
  display: block;
  font-size: 0.8125rem;
  color: #8a8a8a; }

cite:before {
  content: "\2014   "; }

abbr {
  border-bottom: 1px dotted #0a0a0a;
  color: #0a0a0a;
  cursor: help; }

figure {
  margin: 0; }

code {
  padding: 0.125rem 0.3125rem 0.0625rem;
  border: 1px solid #cacaca;
  background-color: #e6e6e6;
  font-family: Consolas, "Liberation Mono", Courier, monospace;
  font-weight: normal;
  color: #0a0a0a; }

kbd {
  margin: 0;
  padding: 0.125rem 0.25rem 0;
  background-color: #e6e6e6;
  font-family: Consolas, "Liberation Mono", Courier, monospace;
  color: #0a0a0a; }

.subheader {
  margin-top: 0.2rem;
  margin-bottom: 0.5rem;
  font-weight: normal;
  line-height: 1.4;
  color: #8a8a8a; }

.lead {
  font-size: 125%;
  line-height: 1.6; }

.stat {
  font-size: 2.5rem;
  line-height: 1; }

p + .stat {
  margin-top: -1rem; }

.no-bullet {
  margin-left: 0;
  list-style: none; }

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

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

.text-center {
  text-align: center; }

.text-justify {
  text-align: justify; }

@media print, screen and (min-width: 40em) {
  .medium-text-left {
    text-align: left; }
  .medium-text-right {
    text-align: right; }
  .medium-text-center {
    text-align: center; }
  .medium-text-justify {
    text-align: justify; } }

@media print, screen and (min-width: 64em) {
  .large-text-left {
    text-align: left; }
  .large-text-right {
    text-align: right; }
  .large-text-center {
    text-align: center; }
  .large-text-justify {
    text-align: justify; } }

.show-for-print {
  display: none !important; }

@media print {
  * {
    background: transparent !important;
    box-shadow: none !important;
    color: black !important;
    text-shadow: none !important; }
  .show-for-print {
    display: block !important; }
  .hide-for-print {
    display: none !important; }
  table.show-for-print {
    display: table !important; }
  thead.show-for-print {
    display: table-header-group !important; }
  tbody.show-for-print {
    display: table-row-group !important; }
  tr.show-for-print {
    display: table-row !important; }
  td.show-for-print {
    display: table-cell !important; }
  th.show-for-print {
    display: table-cell !important; }
  a,
  a:visited {
    text-decoration: underline; }
  a[href]:after {
    content: " (" attr(href) ")"; }
  .ir a:after,
  a[href^='javascript:']:after,
  a[href^='#']:after {
    content: ''; }
  abbr[title]:after {
    content: " (" attr(title) ")"; }
  pre,
  blockquote {
    border: 1px solid #8a8a8a;
    page-break-inside: avoid; }
  thead {
    display: table-header-group; }
  tr,
  img {
    page-break-inside: avoid; }
  img {
    max-width: 100% !important; }
  @page {
    margin: 0.5cm; }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3; }
  h2,
  h3 {
    page-break-after: avoid; } }

[type='text'],
[type='password'],
[type='date'],
[type='datetime'],
[type='datetime-local'],
[type='month'],
[type='week'],
[type='email'],
[type='number'],
[type='search'],
[type='tel'],
[type='time'],
[type='url'],
[type='color'],
textarea {
  display: block;
  box-sizing: border-box;
  width: 100%;
  height: 2.4375rem;
  margin: 0 0 1rem;
  padding: 0.5rem;
  border: 1px solid #cacaca;
  border-radius: 0;
  background-color: #fefefe;
  box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);
  font-family: inherit;
  font-size: 1rem;
  font-weight: normal;
  color: #0a0a0a;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  appearance: none; }

[type='text']:focus,
[type='password']:focus,
[type='date']:focus,
[type='datetime']:focus,
[type='datetime-local']:focus,
[type='month']:focus,
[type='week']:focus,
[type='email']:focus,
[type='number']:focus,
[type='search']:focus,
[type='tel']:focus,
[type='time']:focus,
[type='url']:focus,
[type='color']:focus,
textarea:focus {
  outline: none;
  border: 1px solid #8a8a8a;
  background-color: #fefefe;
  box-shadow: 0 0 5px #cacaca;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out; }

textarea {
  max-width: 100%; }

textarea[rows] {
  height: auto; }

input::placeholder,
textarea::placeholder {
  color: #cacaca; }

input:disabled,
input[readonly],
textarea:disabled,
textarea[readonly] {
  background-color: #e6e6e6;
  cursor: not-allowed; }

[type='submit'],
[type='button'] {
  appearance: none;
  border-radius: 0; }

input[type='search'] {
  box-sizing: border-box; }

[type='file'],
[type='checkbox'],
[type='radio'] {
  margin: 0 0 1rem; }

[type='checkbox'] + label,
[type='radio'] + label {
  display: inline-block;
  vertical-align: baseline;
  margin-left: 0.5rem;
  margin-right: 1rem;
  margin-bottom: 0; }

[type='checkbox'] + label[for],
[type='radio'] + label[for] {
  cursor: pointer; }

label > [type='checkbox'],
label > [type='radio'] {
  margin-right: 0.5rem; }

[type='file'] {
  width: 100%; }

label {
  display: block;
  margin: 0;
  font-size: 0.875rem;
  font-weight: normal;
  line-height: 1.8;
  color: #0a0a0a; }

label.middle {
  margin: 0 0 1rem;
  padding: 0.5625rem 0; }

.help-text {
  margin-top: -0.5rem;
  font-size: 0.8125rem;
  font-style: italic;
  color: #0a0a0a; }

.input-group {
  display: table;
  width: 100%;
  margin-bottom: 1rem; }

.input-group > :first-child {
  border-radius: 0 0 0 0; }

.input-group > :last-child > * {
  border-radius: 0 0 0 0; }

.input-group-label,
.input-group-field,
.input-group-button,
.input-group-button a,
.input-group-button input,
.input-group-button button,
.input-group-button label {
  margin: 0;
  white-space: nowrap;
  display: table-cell;
  vertical-align: middle; }

.input-group-label {
  padding: 0 1rem;
  border: 1px solid #cacaca;
  background: #e6e6e6;
  color: #0a0a0a;
  text-align: center;
  white-space: nowrap;
  width: 1%;
  height: 100%; }

.input-group-label:first-child {
  border-right: 0; }

.input-group-label:last-child {
  border-left: 0; }

.input-group-field {
  border-radius: 0;
  height: 2.5rem; }

.input-group-button {
  padding-top: 0;
  padding-bottom: 0;
  text-align: center;
  width: 1%;
  height: 100%; }

.input-group-button a,
.input-group-button input,
.input-group-button button,
.input-group-button label {
  height: 2.5rem;
  padding-top: 0;
  padding-bottom: 0;
  font-size: 1rem; }

.input-group .input-group-button {
  display: table-cell; }

fieldset {
  margin: 0;
  padding: 0;
  border: 0; }

legend {
  max-width: 100%;
  margin-bottom: 0.5rem; }

.fieldset {
  margin: 1.125rem 0;
  padding: 1.25rem;
  border: 1px solid #cacaca; }

.fieldset legend {
  margin: 0;
  margin-left: -0.1875rem;
  padding: 0 0.1875rem;
  background: #fefefe; }

select {
  height: 2.4375rem;
  margin: 0 0 1rem;
  padding: 0.5rem;
  appearance: none;
  border: 1px solid #cacaca;
  border-radius: 0;
  background-color: #fefefe;
  font-family: inherit;
  font-size: 1rem;
  line-height: normal;
  color: #0a0a0a;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>");
  background-origin: content-box;
  background-position: right -1rem center;
  background-repeat: no-repeat;
  background-size: 9px 6px;
  padding-right: 1.5rem;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out; }

@media screen and (min-width: 0\0) {
  select {
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } }

select:focus {
  outline: none;
  border: 1px solid #8a8a8a;
  background-color: #fefefe;
  box-shadow: 0 0 5px #cacaca;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out; }

select:disabled {
  background-color: #e6e6e6;
  cursor: not-allowed; }

select::-ms-expand {
  display: none; }

select[multiple] {
  height: auto;
  background-image: none; }

.is-invalid-input:not(:focus) {
  border-color: #cc4b37;
  background-color: #f9ecea; }

.is-invalid-input:not(:focus)::placeholder {
  color: #cc4b37; }

.is-invalid-label {
  color: #cc4b37; }

.form-error {
  display: none;
  margin-top: -0.5rem;
  margin-bottom: 1rem;
  font-size: 0.75rem;
  font-weight: bold;
  color: #cc4b37; }

.form-error.is-visible {
  display: block; }

.button {
  display: inline-block;
  vertical-align: middle;
  margin: 0 0 1rem 0;
  padding: 0.85em 1em;
  -webkit-appearance: none;
  border: 1px solid transparent;
  border-radius: 0;
  transition: background-color 0.25s ease-out, color 0.25s ease-out;
  font-size: 0.9rem;
  line-height: 1;
  text-align: center;
  cursor: pointer;
  background-color: #1779ba;
  color: #fefefe; }

[data-whatinput='mouse'] .button {
  outline: 0; }

.button:hover,
.button:focus {
  background-color: #14679e;
  color: #fefefe; }

.button.tiny {
  font-size: 0.6rem; }

.button.small {
  font-size: 0.75rem; }

.button.large {
  font-size: 1.25rem; }

.button.expanded {
  display: block;
  width: 100%;
  margin-right: 0;
  margin-left: 0; }

.button.primary {
  background-color: #1779ba;
  color: #fefefe; }

.button.primary:hover,
.button.primary:focus {
  background-color: #126195;
  color: #fefefe; }

.button.secondary {
  background-color: #767676;
  color: #fefefe; }

.button.secondary:hover,
.button.secondary:focus {
  background-color: #5e5e5e;
  color: #fefefe; }

.button.success {
  background-color: #3adb76;
  color: #0a0a0a; }

.button.success:hover,
.button.success:focus {
  background-color: #22bb5b;
  color: #0a0a0a; }

.button.warning {
  background-color: #ffae00;
  color: #0a0a0a; }

.button.warning:hover,
.button.warning:focus {
  background-color: #cc8b00;
  color: #0a0a0a; }

.button.alert {
  background-color: #cc4b37;
  color: #fefefe; }

.button.alert:hover,
.button.alert:focus {
  background-color: #a53b2a;
  color: #fefefe; }

.button.hollow {
  border: 1px solid #1779ba;
  color: #1779ba; }

.button.hollow,
.button.hollow:hover,
.button.hollow:focus {
  background-color: transparent; }

.button.hollow:hover,
.button.hollow:focus {
  border-color: #0c3d5d;
  color: #0c3d5d; }

.button.hollow.primary {
  border: 1px solid #1779ba;
  color: #1779ba; }

.button.hollow.primary:hover,
.button.hollow.primary:focus {
  border-color: #0c3d5d;
  color: #0c3d5d; }

.button.hollow.secondary {
  border: 1px solid #767676;
  color: #767676; }

.button.hollow.secondary:hover,
.button.hollow.secondary:focus {
  border-color: #3b3b3b;
  color: #3b3b3b; }

.button.hollow.success {
  border: 1px solid #3adb76;
  color: #3adb76; }

.button.hollow.success:hover,
.button.hollow.success:focus {
  border-color: #157539;
  color: #157539; }

.button.hollow.warning {
  border: 1px solid #ffae00;
  color: #ffae00; }

.button.hollow.warning:hover,
.button.hollow.warning:focus {
  border-color: #805700;
  color: #805700; }

.button.hollow.alert {
  border: 1px solid #cc4b37;
  color: #cc4b37; }

.button.hollow.alert:hover,
.button.hollow.alert:focus {
  border-color: #67251a;
  color: #67251a; }

.button.disabled,
.button[disabled] {
  opacity: 0.25;
  cursor: not-allowed; }

.button.disabled,
.button.disabled:hover,
.button.disabled:focus,
.button[disabled],
.button[disabled]:hover,
.button[disabled]:focus {
  background-color: #1779ba;
  color: #fefefe; }

.button.disabled.primary,
.button[disabled].primary {
  opacity: 0.25;
  cursor: not-allowed; }

.button.disabled.primary,
.button.disabled.primary:hover,
.button.disabled.primary:focus,
.button[disabled].primary,
.button[disabled].primary:hover,
.button[disabled].primary:focus {
  background-color: #1779ba;
  color: #fefefe; }

.button.disabled.secondary,
.button[disabled].secondary {
  opacity: 0.25;
  cursor: not-allowed; }

.button.disabled.secondary,
.button.disabled.secondary:hover,
.button.disabled.secondary:focus,
.button[disabled].secondary,
.button[disabled].secondary:hover,
.button[disabled].secondary:focus {
  background-color: #767676;
  color: #fefefe; }

.button.disabled.success,
.button[disabled].success {
  opacity: 0.25;
  cursor: not-allowed; }

.button.disabled.success,
.button.disabled.success:hover,
.button.disabled.success:focus,
.button[disabled].success,
.button[disabled].success:hover,
.button[disabled].success:focus {
  background-color: #3adb76;
  color: #0a0a0a; }

.button.disabled.warning,
.button[disabled].warning {
  opacity: 0.25;
  cursor: not-allowed; }

.button.disabled.warning,
.button.disabled.warning:hover,
.button.disabled.warning:focus,
.button[disabled].warning,
.button[disabled].warning:hover,
.button[disabled].warning:focus {
  background-color: #ffae00;
  color: #0a0a0a; }

.button.disabled.alert,
.button[disabled].alert {
  opacity: 0.25;
  cursor: not-allowed; }

.button.disabled.alert,
.button.disabled.alert:hover,
.button.disabled.alert:focus,
.button[disabled].alert,
.button[disabled].alert:hover,
.button[disabled].alert:focus {
  background-color: #cc4b37;
  color: #fefefe; }

.button.dropdown::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.4em;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #fefefe transparent transparent;
  position: relative;
  top: 0.4em;
  display: inline-block;
  float: right;
  margin-left: 1em; }

.button.arrow-only::after {
  top: -0.1em;
  float: none;
  margin-left: 0; }

.accordion {
  margin-left: 0;
  background: #fefefe;
  list-style-type: none; }

.accordion-item:first-child > :first-child {
  border-radius: 0 0 0 0; }

.accordion-item:last-child > :last-child {
  border-radius: 0 0 0 0; }

.accordion-title {
  position: relative;
  display: block;
  padding: 1.25rem 1rem;
  border: 1px solid #e6e6e6;
  border-bottom: 0;
  font-size: 0.75rem;
  line-height: 1;
  color: #1779ba; }

:last-child:not(.is-active) > .accordion-title {
  border-bottom: 1px solid #e6e6e6;
  border-radius: 0 0 0 0; }

.accordion-title:hover,
.accordion-title:focus {
  background-color: #e6e6e6; }

.accordion-title::before {
  position: absolute;
  top: 50%;
  right: 1rem;
  margin-top: -0.5rem;
  content: '+'; }

.is-active > .accordion-title::before {
  content: '\2013'; }

.accordion-content {
  display: none;
  padding: 1rem;
  border: 1px solid #e6e6e6;
  border-bottom: 0;
  background-color: #fefefe;
  color: #0a0a0a; }

:last-child > .accordion-content:last-child {
  border-bottom: 1px solid #e6e6e6; }

.is-accordion-submenu-parent > a {
  position: relative; }

.is-accordion-submenu-parent > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #1779ba transparent transparent;
  position: absolute;
  top: 50%;
  margin-top: -3px;
  right: 1rem; }

.is-accordion-submenu-parent[aria-expanded='true'] > a::after {
  transform: rotate(180deg);
  transform-origin: 50% 50%; }

.badge {
  display: inline-block;
  min-width: 2.1em;
  padding: 0.3em;
  border-radius: 50%;
  font-size: 0.6rem;
  text-align: center;
  background: #1779ba;
  color: #fefefe; }

.badge.primary {
  background: #1779ba;
  color: #fefefe; }

.badge.secondary {
  background: #767676;
  color: #fefefe; }

.badge.success {
  background: #3adb76;
  color: #0a0a0a; }

.badge.warning {
  background: #ffae00;
  color: #0a0a0a; }

.badge.alert {
  background: #cc4b37;
  color: #fefefe; }

.breadcrumbs {
  margin: 0 0 1rem 0;
  list-style: none; }

.breadcrumbs::before,
.breadcrumbs::after {
  display: table;
  content: ' '; }

.breadcrumbs::after {
  clear: both; }

.breadcrumbs li {
  float: left;
  font-size: 0.6875rem;
  color: #0a0a0a;
  cursor: default;
  text-transform: uppercase; }

.breadcrumbs li:not(:last-child)::after {
  position: relative;
  top: 1px;
  margin: 0 0.75rem;
  opacity: 1;
  content: "/";
  color: #cacaca; }

.breadcrumbs a {
  color: #1779ba; }

.breadcrumbs a:hover {
  text-decoration: underline; }

.breadcrumbs .disabled {
  color: #cacaca;
  cursor: not-allowed; }

.button-group {
  margin-bottom: 1rem;
  font-size: 0; }

.button-group::before,
.button-group::after {
  display: table;
  content: ' '; }

.button-group::after {
  clear: both; }

.button-group .button {
  margin: 0;
  margin-right: 1px;
  margin-bottom: 1px;
  font-size: 0.9rem; }

.button-group .button:last-child {
  margin-right: 0; }

.button-group.tiny .button {
  font-size: 0.6rem; }

.button-group.small .button {
  font-size: 0.75rem; }

.button-group.large .button {
  font-size: 1.25rem; }

.button-group.expanded {
  margin-right: -1px; }

.button-group.expanded::before,
.button-group.expanded::after {
  display: none; }

.button-group.expanded .button:first-child:last-child {
  width: 100%; }

.button-group.expanded .button:first-child:nth-last-child(2),
.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button {
  display: inline-block;
  width: calc(50% - 1px);
  margin-right: 1px; }

.button-group.expanded .button:first-child:nth-last-child(2):last-child,
.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button:last-child {
  margin-right: -6px; }

.button-group.expanded .button:first-child:nth-last-child(3),
.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button {
  display: inline-block;
  width: calc(33.33333% - 1px);
  margin-right: 1px; }

.button-group.expanded .button:first-child:nth-last-child(3):last-child,
.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button:last-child {
  margin-right: -6px; }

.button-group.expanded .button:first-child:nth-last-child(4),
.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button {
  display: inline-block;
  width: calc(25% - 1px);
  margin-right: 1px; }

.button-group.expanded .button:first-child:nth-last-child(4):last-child,
.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button:last-child {
  margin-right: -6px; }

.button-group.expanded .button:first-child:nth-last-child(5),
.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button {
  display: inline-block;
  width: calc(20% - 1px);
  margin-right: 1px; }

.button-group.expanded .button:first-child:nth-last-child(5):last-child,
.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button:last-child {
  margin-right: -6px; }

.button-group.expanded .button:first-child:nth-last-child(6),
.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button {
  display: inline-block;
  width: calc(16.66667% - 1px);
  margin-right: 1px; }

.button-group.expanded .button:first-child:nth-last-child(6):last-child,
.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button:last-child {
  margin-right: -6px; }

.button-group.primary .button {
  background-color: #1779ba;
  color: #fefefe; }

.button-group.primary .button:hover,
.button-group.primary .button:focus {
  background-color: #126195;
  color: #fefefe; }

.button-group.secondary .button {
  background-color: #767676;
  color: #fefefe; }

.button-group.secondary .button:hover,
.button-group.secondary .button:focus {
  background-color: #5e5e5e;
  color: #fefefe; }

.button-group.success .button {
  background-color: #3adb76;
  color: #0a0a0a; }

.button-group.success .button:hover,
.button-group.success .button:focus {
  background-color: #22bb5b;
  color: #0a0a0a; }

.button-group.warning .button {
  background-color: #ffae00;
  color: #0a0a0a; }

.button-group.warning .button:hover,
.button-group.warning .button:focus {
  background-color: #cc8b00;
  color: #0a0a0a; }

.button-group.alert .button {
  background-color: #cc4b37;
  color: #fefefe; }

.button-group.alert .button:hover,
.button-group.alert .button:focus {
  background-color: #a53b2a;
  color: #fefefe; }

.button-group.stacked .button,
.button-group.stacked-for-small .button,
.button-group.stacked-for-medium .button {
  width: 100%; }

.button-group.stacked .button:last-child,
.button-group.stacked-for-small .button:last-child,
.button-group.stacked-for-medium .button:last-child {
  margin-bottom: 0; }

@media print, screen and (min-width: 40em) {
  .button-group.stacked-for-small .button {
    width: auto;
    margin-bottom: 0; } }

@media print, screen and (min-width: 64em) {
  .button-group.stacked-for-medium .button {
    width: auto;
    margin-bottom: 0; } }

@media screen and (max-width: 39.9375em) {
  .button-group.stacked-for-small.expanded {
    display: block; }
  .button-group.stacked-for-small.expanded .button {
    display: block;
    margin-right: 0; } }

.callout {
  position: relative;
  margin: 0 0 1rem 0;
  padding: 1rem;
  border: 1px solid rgba(10, 10, 10, 0.25);
  border-radius: 0;
  background-color: white;
  color: #0a0a0a; }

.callout > :first-child {
  margin-top: 0; }

.callout > :last-child {
  margin-bottom: 0; }

.callout.primary {
  background-color: #d7ecfa;
  color: #0a0a0a; }

.callout.secondary {
  background-color: #eaeaea;
  color: #0a0a0a; }

.callout.success {
  background-color: #e1faea;
  color: #0a0a0a; }

.callout.warning {
  background-color: #fff3d9;
  color: #0a0a0a; }

.callout.alert {
  background-color: #f7e4e1;
  color: #0a0a0a; }

.callout.small {
  padding-top: 0.5rem;
  padding-right: 0.5rem;
  padding-bottom: 0.5rem;
  padding-left: 0.5rem; }

.callout.large {
  padding-top: 3rem;
  padding-right: 3rem;
  padding-bottom: 3rem;
  padding-left: 3rem; }

.card {
  margin-bottom: 1rem;
  border: 1px solid #e6e6e6;
  border-radius: 0;
  background: #fefefe;
  box-shadow: none;
  overflow: hidden;
  color: #0a0a0a; }

.card > :last-child {
  margin-bottom: 0; }

.card-divider {
  padding: 1rem;
  background: #e6e6e6; }

.card-divider > :last-child {
  margin-bottom: 0; }

.card-section {
  padding: 1rem; }

.card-section > :last-child {
  margin-bottom: 0; }

.close-button {
  position: absolute;
  color: #8a8a8a;
  cursor: pointer; }

[data-whatinput='mouse'] .close-button {
  outline: 0; }

.close-button:hover,
.close-button:focus {
  color: #0a0a0a; }

.close-button.small {
  right: 0.66rem;
  top: 0.33em;
  font-size: 1.5em;
  line-height: 1; }

.close-button,
.close-button.medium {
  right: 1rem;
  top: 0.5rem;
  font-size: 2em;
  line-height: 1; }

.menu {
  margin: 0;
  list-style-type: none; }

.menu > li {
  display: table-cell;
  vertical-align: middle; }

[data-whatinput='mouse'] .menu > li {
  outline: 0; }

.menu > li > a {
  display: block;
  padding: 0.7rem 1rem;
  line-height: 1; }

.menu input,
.menu select,
.menu a,
.menu button {
  margin-bottom: 0; }

.menu > li > a img,
.menu > li > a i,
.menu > li > a svg {
  vertical-align: middle; }

.menu > li > a img + span,
.menu > li > a i + span,
.menu > li > a svg + span {
  vertical-align: middle; }

.menu > li > a img,
.menu > li > a i,
.menu > li > a svg {
  margin-right: 0.25rem;
  display: inline-block; }

.menu > li,
.menu.horizontal > li {
  display: table-cell; }

.menu.expanded {
  display: table;
  width: 100%;
  table-layout: fixed; }

.menu.expanded > li:first-child:last-child {
  width: 100%; }

.menu.vertical > li {
  display: block; }

@media print, screen and (min-width: 40em) {
  .menu.medium-horizontal > li {
    display: table-cell; }
  .menu.medium-expanded {
    display: table;
    width: 100%;
    table-layout: fixed; }
  .menu.medium-expanded > li:first-child:last-child {
    width: 100%; }
  .menu.medium-vertical > li {
    display: block; } }

@media print, screen and (min-width: 64em) {
  .menu.large-horizontal > li {
    display: table-cell; }
  .menu.large-expanded {
    display: table;
    width: 100%;
    table-layout: fixed; }
  .menu.large-expanded > li:first-child:last-child {
    width: 100%; }
  .menu.large-vertical > li {
    display: block; } }

.menu.simple li {
  display: inline-block;
  vertical-align: top;
  line-height: 1; }

.menu.simple a {
  padding: 0; }

.menu.simple li {
  margin-left: 0;
  margin-right: 1rem; }

.menu.simple.align-right li {
  margin-right: 0;
  margin-left: 1rem; }

.menu.align-right::before,
.menu.align-right::after {
  display: table;
  content: ' '; }

.menu.align-right::after {
  clear: both; }

.menu.align-right > li {
  float: right; }

.menu.icon-top > li > a {
  text-align: center; }

.menu.icon-top > li > a img,
.menu.icon-top > li > a i,
.menu.icon-top > li > a svg {
  display: block;
  margin: 0 auto 0.25rem; }

.menu.icon-top.vertical a > span {
  margin: auto; }

.menu.nested {
  margin-left: 1rem; }

.menu .active > a {
  background: #1779ba;
  color: #fefefe; }

.menu.menu-bordered li {
  border: 1px solid #e6e6e6; }

.menu.menu-bordered li:not(:first-child) {
  border-top: 0; }

.menu.menu-hover li:hover {
  background-color: #e6e6e6; }

.menu-text {
  padding-top: 0;
  padding-bottom: 0;
  padding: 0.7rem 1rem;
  font-weight: bold;
  line-height: 1;
  color: inherit; }

.menu-centered {
  text-align: center; }

.menu-centered > .menu {
  display: inline-block;
  vertical-align: top; }

.no-js [data-responsive-menu] ul {
  display: none; }

.menu-icon {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  width: 20px;
  height: 16px;
  cursor: pointer; }

.menu-icon::after {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  width: 100%;
  height: 2px;
  background: #fefefe;
  box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe;
  content: ''; }

.menu-icon:hover::after {
  background: #cacaca;
  box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; }

.menu-icon.dark {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  width: 20px;
  height: 16px;
  cursor: pointer; }

.menu-icon.dark::after {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  width: 100%;
  height: 2px;
  background: #0a0a0a;
  box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a;
  content: ''; }

.menu-icon.dark:hover::after {
  background: #8a8a8a;
  box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; }

.is-drilldown {
  position: relative;
  overflow: hidden; }

.is-drilldown li {
  display: block; }

.is-drilldown.animate-height {
  transition: height 0.5s; }

.is-drilldown-submenu {
  position: absolute;
  top: 0;
  left: 100%;
  z-index: -1;
  width: 100%;
  background: #fefefe;
  transition: transform 0.15s linear; }

.is-drilldown-submenu.is-active {
  z-index: 1;
  display: block;
  transform: translateX(-100%); }

.is-drilldown-submenu.is-closing {
  transform: translateX(100%); }

.drilldown-submenu-cover-previous {
  min-height: 100%; }

.is-drilldown-submenu-parent > a {
  position: relative; }

.is-drilldown-submenu-parent > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #1779ba;
  position: absolute;
  top: 50%;
  margin-top: -6px;
  right: 1rem; }

.js-drilldown-back > a::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #1779ba transparent transparent;
  border-left-width: 0;
  display: inline-block;
  vertical-align: middle;
  margin-right: 0.75rem;
  border-left-width: 0; }

.dropdown-pane {
  position: absolute;
  z-index: 10;
  display: block;
  width: 300px;
  padding: 1rem;
  visibility: hidden;
  border: 1px solid #cacaca;
  border-radius: 0;
  background-color: #fefefe;
  font-size: 1rem; }

.dropdown-pane.is-open {
  visibility: visible; }

.dropdown-pane.tiny {
  width: 100px; }

.dropdown-pane.small {
  width: 200px; }

.dropdown-pane.large {
  width: 400px; }

.dropdown.menu > li.opens-left > .is-dropdown-submenu {
  top: 100%;
  right: 0;
  left: auto; }

.dropdown.menu > li.opens-right > .is-dropdown-submenu {
  top: 100%;
  right: auto;
  left: 0; }

.dropdown.menu > li.is-dropdown-submenu-parent > a {
  position: relative;
  padding-right: 1.5rem; }

.dropdown.menu > li.is-dropdown-submenu-parent > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #1779ba transparent transparent;
  right: 5px;
  margin-top: -3px; }

[data-whatinput='mouse'] .dropdown.menu a {
  outline: 0; }

.no-js .dropdown.menu ul {
  display: none; }

.dropdown.menu.vertical > li .is-dropdown-submenu {
  top: 0; }

.dropdown.menu.vertical > li.opens-left > .is-dropdown-submenu {
  right: 100%;
  left: auto; }

.dropdown.menu.vertical > li.opens-right > .is-dropdown-submenu {
  right: auto;
  left: 100%; }

.dropdown.menu.vertical > li > a::after {
  right: 14px; }

.dropdown.menu.vertical > li.opens-left > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #1779ba transparent transparent; }

.dropdown.menu.vertical > li.opens-right > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #1779ba; }

@media print, screen and (min-width: 40em) {
  .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu {
    top: 100%;
    right: 0;
    left: auto; }
  .dropdown.menu.medium-horizontal > li.opens-right > .is-dropdown-submenu {
    top: 100%;
    right: auto;
    left: 0; }
  .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a {
    position: relative;
    padding-right: 1.5rem; }
  .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-bottom-width: 0;
    border-top-style: solid;
    border-color: #1779ba transparent transparent;
    right: 5px;
    margin-top: -3px; }
  .dropdown.menu.medium-vertical > li .is-dropdown-submenu {
    top: 0; }
  .dropdown.menu.medium-vertical > li.opens-left > .is-dropdown-submenu {
    right: 100%;
    left: auto; }
  .dropdown.menu.medium-vertical > li.opens-right > .is-dropdown-submenu {
    right: auto;
    left: 100%; }
  .dropdown.menu.medium-vertical > li > a::after {
    right: 14px; }
  .dropdown.menu.medium-vertical > li.opens-left > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-left-width: 0;
    border-right-style: solid;
    border-color: transparent #1779ba transparent transparent; }
  .dropdown.menu.medium-vertical > li.opens-right > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-right-width: 0;
    border-left-style: solid;
    border-color: transparent transparent transparent #1779ba; } }

@media print, screen and (min-width: 64em) {
  .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu {
    top: 100%;
    right: 0;
    left: auto; }
  .dropdown.menu.large-horizontal > li.opens-right > .is-dropdown-submenu {
    top: 100%;
    right: auto;
    left: 0; }
  .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a {
    position: relative;
    padding-right: 1.5rem; }
  .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-bottom-width: 0;
    border-top-style: solid;
    border-color: #1779ba transparent transparent;
    right: 5px;
    margin-top: -3px; }
  .dropdown.menu.large-vertical > li .is-dropdown-submenu {
    top: 0; }
  .dropdown.menu.large-vertical > li.opens-left > .is-dropdown-submenu {
    right: 100%;
    left: auto; }
  .dropdown.menu.large-vertical > li.opens-right > .is-dropdown-submenu {
    right: auto;
    left: 100%; }
  .dropdown.menu.large-vertical > li > a::after {
    right: 14px; }
  .dropdown.menu.large-vertical > li.opens-left > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-left-width: 0;
    border-right-style: solid;
    border-color: transparent #1779ba transparent transparent; }
  .dropdown.menu.large-vertical > li.opens-right > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-right-width: 0;
    border-left-style: solid;
    border-color: transparent transparent transparent #1779ba; } }

.dropdown.menu.align-right .is-dropdown-submenu.first-sub {
  top: 100%;
  right: 0;
  left: auto; }

.is-dropdown-menu.vertical {
  width: 100px; }

.is-dropdown-menu.vertical.align-right {
  float: right; }

.is-dropdown-submenu-parent {
  position: relative; }

.is-dropdown-submenu-parent a::after {
  position: absolute;
  top: 50%;
  right: 5px;
  margin-top: -6px; }

.is-dropdown-submenu-parent.opens-inner > .is-dropdown-submenu {
  top: 100%;
  left: auto; }

.is-dropdown-submenu-parent.opens-left > .is-dropdown-submenu {
  right: 100%;
  left: auto; }

.is-dropdown-submenu-parent.opens-right > .is-dropdown-submenu {
  right: auto;
  left: 100%; }

.is-dropdown-submenu {
  position: absolute;
  top: 0;
  left: 100%;
  z-index: 1;
  display: none;
  min-width: 200px;
  border: 1px solid #cacaca;
  background: #fefefe; }

.is-dropdown-submenu .is-dropdown-submenu-parent > a::after {
  right: 14px; }

.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #1779ba transparent transparent; }

.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #1779ba; }

.is-dropdown-submenu .is-dropdown-submenu {
  margin-top: -1px; }

.is-dropdown-submenu > li {
  width: 100%; }

.is-dropdown-submenu.js-dropdown-active {
  display: block; }

.responsive-embed,
.flex-video {
  position: relative;
  height: 0;
  margin-bottom: 1rem;
  padding-bottom: 75%;
  overflow: hidden; }

.responsive-embed iframe,
.responsive-embed object,
.responsive-embed embed,
.responsive-embed video,
.flex-video iframe,
.flex-video object,
.flex-video embed,
.flex-video video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%; }

.responsive-embed.widescreen,
.flex-video.widescreen {
  padding-bottom: 56.25%; }

.label {
  display: inline-block;
  padding: 0.33333rem 0.5rem;
  border-radius: 0;
  font-size: 0.8rem;
  line-height: 1;
  white-space: nowrap;
  cursor: default;
  background: #1779ba;
  color: #fefefe; }

.label.primary {
  background: #1779ba;
  color: #fefefe; }

.label.secondary {
  background: #767676;
  color: #fefefe; }

.label.success {
  background: #3adb76;
  color: #0a0a0a; }

.label.warning {
  background: #ffae00;
  color: #0a0a0a; }

.label.alert {
  background: #cc4b37;
  color: #fefefe; }

.media-object {
  display: block;
  margin-bottom: 1rem; }

.media-object img {
  max-width: none; }

@media screen and (max-width: 39.9375em) {
  .media-object.stack-for-small .media-object-section {
    padding: 0;
    padding-bottom: 1rem;
    display: block; }
  .media-object.stack-for-small .media-object-section img {
    width: 100%; } }

.media-object-section {
  display: table-cell;
  vertical-align: top; }

.media-object-section:first-child {
  padding-right: 1rem; }

.media-object-section:last-child:not(:nth-child(2)) {
  padding-left: 1rem; }

.media-object-section > :last-child {
  margin-bottom: 0; }

.media-object-section.middle {
  vertical-align: middle; }

.media-object-section.bottom {
  vertical-align: bottom; }

.is-off-canvas-open {
  overflow: hidden; }

.js-off-canvas-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  transition: opacity 0.5s ease, visibility 0.5s ease;
  background: rgba(254, 254, 254, 0.25);
  opacity: 0;
  visibility: hidden;
  overflow: hidden; }

.js-off-canvas-overlay.is-visible {
  opacity: 1;
  visibility: visible; }

.js-off-canvas-overlay.is-closable {
  cursor: pointer; }

.js-off-canvas-overlay.is-overlay-absolute {
  position: absolute; }

.js-off-canvas-overlay.is-overlay-fixed {
  position: fixed; }

.off-canvas-wrapper {
  position: relative;
  overflow: hidden; }

.off-canvas {
  position: fixed;
  z-index: 1;
  transition: transform 0.5s ease;
  backface-visibility: hidden;
  background: #e6e6e6; }

[data-whatinput='mouse'] .off-canvas {
  outline: 0; }

.off-canvas.is-transition-overlap {
  z-index: 10; }

.off-canvas.is-transition-overlap.is-open {
  box-shadow: 0 0 10px rgba(10, 10, 10, 0.7); }

.off-canvas.is-open {
  transform: translate(0, 0); }

.off-canvas-absolute {
  position: absolute;
  z-index: 1;
  transition: transform 0.5s ease;
  backface-visibility: hidden;
  background: #e6e6e6; }

[data-whatinput='mouse'] .off-canvas-absolute {
  outline: 0; }

.off-canvas-absolute.is-transition-overlap {
  z-index: 10; }

.off-canvas-absolute.is-transition-overlap.is-open {
  box-shadow: 0 0 10px rgba(10, 10, 10, 0.7); }

.off-canvas-absolute.is-open {
  transform: translate(0, 0); }

.position-left {
  top: 0;
  left: 0;
  width: 250px;
  height: 100%;
  transform: translateX(-250px);
  overflow-y: auto; }

.position-left.is-open ~ .off-canvas-content {
  transform: translateX(250px); }

.position-left.is-transition-push::after {
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  width: 1px;
  box-shadow: 0 0 10px rgba(10, 10, 10, 0.7);
  content: " "; }

.position-left.is-transition-overlap.is-open ~ .off-canvas-content {
  transform: none; }

.position-right {
  top: 0;
  right: 0;
  width: 250px;
  height: 100%;
  transform: translateX(250px);
  overflow-y: auto; }

.position-right.is-open ~ .off-canvas-content {
  transform: translateX(-250px); }

.position-right.is-transition-push::after {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 1px;
  box-shadow: 0 0 10px rgba(10, 10, 10, 0.7);
  content: " "; }

.position-right.is-transition-overlap.is-open ~ .off-canvas-content {
  transform: none; }

.position-top {
  top: 0;
  left: 0;
  width: 100%;
  height: 250px;
  transform: translateY(-250px);
  overflow-x: auto; }

.position-top.is-open ~ .off-canvas-content {
  transform: translateY(250px); }

.position-top.is-transition-push::after {
  position: absolute;
  bottom: 0;
  left: 0;
  height: 1px;
  width: 100%;
  box-shadow: 0 0 10px rgba(10, 10, 10, 0.7);
  content: " "; }

.position-top.is-transition-overlap.is-open ~ .off-canvas-content {
  transform: none; }

.position-bottom {
  bottom: 0;
  left: 0;
  width: 100%;
  height: 250px;
  transform: translateY(250px);
  overflow-x: auto; }

.position-bottom.is-open ~ .off-canvas-content {
  transform: translateY(-250px); }

.position-bottom.is-transition-push::after {
  position: absolute;
  top: 0;
  left: 0;
  height: 1px;
  width: 100%;
  box-shadow: 0 0 10px rgba(10, 10, 10, 0.7);
  content: " "; }

.position-bottom.is-transition-overlap.is-open ~ .off-canvas-content {
  transform: none; }

.off-canvas-content {
  transition: transform 0.5s ease;
  backface-visibility: hidden; }

@media print, screen and (min-width: 40em) {
  .position-left.reveal-for-medium {
    transform: none;
    z-index: 1; }
  .position-left.reveal-for-medium ~ .off-canvas-content {
    margin-left: 250px; }
  .position-right.reveal-for-medium {
    transform: none;
    z-index: 1; }
  .position-right.reveal-for-medium ~ .off-canvas-content {
    margin-right: 250px; }
  .position-top.reveal-for-medium {
    transform: none;
    z-index: 1; }
  .position-top.reveal-for-medium ~ .off-canvas-content {
    margin-top: 250px; }
  .position-bottom.reveal-for-medium {
    transform: none;
    z-index: 1; }
  .position-bottom.reveal-for-medium ~ .off-canvas-content {
    margin-bottom: 250px; } }

@media print, screen and (min-width: 64em) {
  .position-left.reveal-for-large {
    transform: none;
    z-index: 1; }
  .position-left.reveal-for-large ~ .off-canvas-content {
    margin-left: 250px; }
  .position-right.reveal-for-large {
    transform: none;
    z-index: 1; }
  .position-right.reveal-for-large ~ .off-canvas-content {
    margin-right: 250px; }
  .position-top.reveal-for-large {
    transform: none;
    z-index: 1; }
  .position-top.reveal-for-large ~ .off-canvas-content {
    margin-top: 250px; }
  .position-bottom.reveal-for-large {
    transform: none;
    z-index: 1; }
  .position-bottom.reveal-for-large ~ .off-canvas-content {
    margin-bottom: 250px; } }

.orbit {
  position: relative; }

.orbit-container {
  position: relative;
  height: 0;
  margin: 0;
  list-style: none;
  overflow: hidden; }

.orbit-slide {
  width: 100%; }

.orbit-slide.no-motionui.is-active {
  top: 0;
  left: 0; }

.orbit-figure {
  margin: 0; }

.orbit-image {
  width: 100%;
  max-width: 100%;
  margin: 0; }

.orbit-caption {
  position: absolute;
  bottom: 0;
  width: 100%;
  margin-bottom: 0;
  padding: 1rem;
  background-color: rgba(10, 10, 10, 0.5);
  color: #fefefe; }

.orbit-previous,
.orbit-next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
  padding: 1rem;
  color: #fefefe; }

[data-whatinput='mouse'] .orbit-previous,
[data-whatinput='mouse'] .orbit-next {
  outline: 0; }

.orbit-previous:hover,
.orbit-next:hover,
.orbit-previous:active,
.orbit-next:active,
.orbit-previous:focus,
.orbit-next:focus {
  background-color: rgba(10, 10, 10, 0.5); }

.orbit-previous {
  left: 0; }

.orbit-next {
  left: auto;
  right: 0; }

.orbit-bullets {
  position: relative;
  margin-top: 0.8rem;
  margin-bottom: 0.8rem;
  text-align: center; }

[data-whatinput='mouse'] .orbit-bullets {
  outline: 0; }

.orbit-bullets button {
  width: 1.2rem;
  height: 1.2rem;
  margin: 0.1rem;
  border-radius: 50%;
  background-color: #cacaca; }

.orbit-bullets button:hover {
  background-color: #8a8a8a; }

.orbit-bullets button.is-active {
  background-color: #8a8a8a; }

.pagination {
  margin-left: 0;
  margin-bottom: 1rem; }

.pagination::before,
.pagination::after {
  display: table;
  content: ' '; }

.pagination::after {
  clear: both; }

.pagination li {
  margin-right: 0.0625rem;
  border-radius: 0;
  font-size: 0.875rem;
  display: none; }

.pagination li:last-child,
.pagination li:first-child {
  display: inline-block; }

@media print, screen and (min-width: 40em) {
  .pagination li {
    display: inline-block; } }

.pagination a,
.pagination button {
  display: block;
  padding: 0.1875rem 0.625rem;
  border-radius: 0;
  color: #0a0a0a; }

.pagination a:hover,
.pagination button:hover {
  background: #e6e6e6; }

.pagination .current {
  padding: 0.1875rem 0.625rem;
  background: #1779ba;
  color: #fefefe;
  cursor: default; }

.pagination .disabled {
  padding: 0.1875rem 0.625rem;
  color: #cacaca;
  cursor: not-allowed; }

.pagination .disabled:hover {
  background: transparent; }

.pagination .ellipsis::after {
  padding: 0.1875rem 0.625rem;
  content: '\2026';
  color: #0a0a0a; }

.pagination-previous a::before,
.pagination-previous.disabled::before {
  display: inline-block;
  margin-right: 0.5rem;
  content: '\AB'; }

.pagination-next a::after,
.pagination-next.disabled::after {
  display: inline-block;
  margin-left: 0.5rem;
  content: '\BB'; }

.progress {
  height: 1rem;
  margin-bottom: 1rem;
  border-radius: 0;
  background-color: #cacaca; }

.progress.primary .progress-meter {
  background-color: #1779ba; }

.progress.secondary .progress-meter {
  background-color: #767676; }

.progress.success .progress-meter {
  background-color: #3adb76; }

.progress.warning .progress-meter {
  background-color: #ffae00; }

.progress.alert .progress-meter {
  background-color: #cc4b37; }

.progress-meter {
  position: relative;
  display: block;
  width: 0%;
  height: 100%;
  background-color: #1779ba; }

.progress-meter-text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  position: absolute;
  margin: 0;
  font-size: 0.75rem;
  font-weight: bold;
  color: #fefefe;
  white-space: nowrap; }

.slider {
  position: relative;
  height: 0.5rem;
  margin-top: 1.25rem;
  margin-bottom: 2.25rem;
  background-color: #e6e6e6;
  cursor: pointer;
  user-select: none;
  touch-action: none; }

.slider-fill {
  position: absolute;
  top: 0;
  left: 0;
  display: inline-block;
  max-width: 100%;
  height: 0.5rem;
  background-color: #cacaca;
  transition: all 0.2s ease-in-out; }

.slider-fill.is-dragging {
  transition: all 0s linear; }

.slider-handle {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  position: absolute;
  left: 0;
  z-index: 1;
  display: inline-block;
  width: 1.4rem;
  height: 1.4rem;
  border-radius: 0;
  background-color: #1779ba;
  transition: all 0.2s ease-in-out;
  touch-action: manipulation; }

[data-whatinput='mouse'] .slider-handle {
  outline: 0; }

.slider-handle:hover {
  background-color: #14679e; }

.slider-handle.is-dragging {
  transition: all 0s linear; }

.slider.disabled,
.slider[disabled] {
  opacity: 0.25;
  cursor: not-allowed; }

.slider.vertical {
  display: inline-block;
  width: 0.5rem;
  height: 12.5rem;
  margin: 0 1.25rem;
  transform: scale(1, -1); }

.slider.vertical .slider-fill {
  top: 0;
  width: 0.5rem;
  max-height: 100%; }

.slider.vertical .slider-handle {
  position: absolute;
  top: 0;
  left: 50%;
  width: 1.4rem;
  height: 1.4rem;
  transform: translateX(-50%); }

.sticky-container {
  position: relative; }

.sticky {
  position: relative;
  z-index: 0;
  transform: translate3d(0, 0, 0); }

.sticky.is-stuck {
  position: fixed;
  z-index: 5; }

.sticky.is-stuck.is-at-top {
  top: 0; }

.sticky.is-stuck.is-at-bottom {
  bottom: 0; }

.sticky.is-anchored {
  position: relative;
  right: auto;
  left: auto; }

.sticky.is-anchored.is-at-bottom {
  bottom: 0; }

body.is-reveal-open {
  overflow: hidden; }

html.is-reveal-open,
html.is-reveal-open body {
  min-height: 100%;
  overflow: hidden;
  user-select: none; }

.reveal-overlay {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1005;
  display: none;
  background-color: rgba(10, 10, 10, 0.45);
  overflow-y: scroll; }

.reveal {
  z-index: 1006;
  backface-visibility: hidden;
  display: none;
  padding: 1rem;
  border: 1px solid #cacaca;
  border-radius: 0;
  background-color: #fefefe;
  position: relative;
  top: 100px;
  margin-right: auto;
  margin-left: auto;
  overflow-y: auto; }

[data-whatinput='mouse'] .reveal {
  outline: 0; }

@media print, screen and (min-width: 40em) {
  .reveal {
    min-height: 0; } }

.reveal .column,
.reveal .columns,
.reveal .columns {
  min-width: 0; }

.reveal > :last-child {
  margin-bottom: 0; }

@media print, screen and (min-width: 40em) {
  .reveal {
    width: 600px;
    max-width: 75rem; } }

@media print, screen and (min-width: 40em) {
  .reveal .reveal {
    right: auto;
    left: auto;
    margin: 0 auto; } }

.reveal.collapse {
  padding: 0; }

@media print, screen and (min-width: 40em) {
  .reveal.tiny {
    width: 30%;
    max-width: 75rem; } }

@media print, screen and (min-width: 40em) {
  .reveal.small {
    width: 50%;
    max-width: 75rem; } }

@media print, screen and (min-width: 40em) {
  .reveal.large {
    width: 90%;
    max-width: 75rem; } }

.reveal.full {
  top: 0;
  left: 0;
  width: 100%;
  max-width: none;
  height: 100%;
  height: 100vh;
  min-height: 100vh;
  margin-left: 0;
  border: 0;
  border-radius: 0; }

@media screen and (max-width: 39.9375em) {
  .reveal {
    top: 0;
    left: 0;
    width: 100%;
    max-width: none;
    height: 100%;
    height: 100vh;
    min-height: 100vh;
    margin-left: 0;
    border: 0;
    border-radius: 0; } }

.reveal.without-overlay {
  position: fixed; }

.switch {
  height: 2rem;
  position: relative;
  margin-bottom: 1rem;
  outline: 0;
  font-size: 0.875rem;
  font-weight: bold;
  color: #fefefe;
  user-select: none; }

.switch-input {
  position: absolute;
  margin-bottom: 0;
  opacity: 0; }

.switch-paddle {
  position: relative;
  display: block;
  width: 4rem;
  height: 2rem;
  border-radius: 0;
  background: #cacaca;
  transition: all 0.25s ease-out;
  font-weight: inherit;
  color: inherit;
  cursor: pointer; }

input + .switch-paddle {
  margin: 0; }

.switch-paddle::after {
  position: absolute;
  top: 0.25rem;
  left: 0.25rem;
  display: block;
  width: 1.5rem;
  height: 1.5rem;
  transform: translate3d(0, 0, 0);
  border-radius: 0;
  background: #fefefe;
  transition: all 0.25s ease-out;
  content: ''; }

input:checked ~ .switch-paddle {
  background: #1779ba; }

input:checked ~ .switch-paddle::after {
  left: 2.25rem; }

[data-whatinput='mouse'] input:focus ~ .switch-paddle {
  outline: 0; }

.switch-active,
.switch-inactive {
  position: absolute;
  top: 50%;
  transform: translateY(-50%); }

.switch-active {
  left: 8%;
  display: none; }

input:checked + label > .switch-active {
  display: block; }

.switch-inactive {
  right: 15%; }

input:checked + label > .switch-inactive {
  display: none; }

.switch.tiny {
  height: 1.5rem; }

.switch.tiny .switch-paddle {
  width: 3rem;
  height: 1.5rem;
  font-size: 0.625rem; }

.switch.tiny .switch-paddle::after {
  top: 0.25rem;
  left: 0.25rem;
  width: 1rem;
  height: 1rem; }

.switch.tiny input:checked ~ .switch-paddle::after {
  left: 1.75rem; }

.switch.small {
  height: 1.75rem; }

.switch.small .switch-paddle {
  width: 3.5rem;
  height: 1.75rem;
  font-size: 0.75rem; }

.switch.small .switch-paddle::after {
  top: 0.25rem;
  left: 0.25rem;
  width: 1.25rem;
  height: 1.25rem; }

.switch.small input:checked ~ .switch-paddle::after {
  left: 2rem; }

.switch.large {
  height: 2.5rem; }

.switch.large .switch-paddle {
  width: 5rem;
  height: 2.5rem;
  font-size: 1rem; }

.switch.large .switch-paddle::after {
  top: 0.25rem;
  left: 0.25rem;
  width: 2rem;
  height: 2rem; }

.switch.large input:checked ~ .switch-paddle::after {
  left: 2.75rem; }

table {
  width: 100%;
  margin-bottom: 1rem;
  border-radius: 0; }

table thead,
table tbody,
table tfoot {
  border: 1px solid #f1f1f1;
  background-color: #fefefe; }

table caption {
  padding: 0.5rem 0.625rem 0.625rem;
  font-weight: bold; }

table thead {
  background: #f8f8f8;
  color: #0a0a0a; }

table tfoot {
  background: #f1f1f1;
  color: #0a0a0a; }

table thead tr,
table tfoot tr {
  background: transparent; }

table thead th,
table thead td,
table tfoot th,
table tfoot td {
  padding: 0.5rem 0.625rem 0.625rem;
  font-weight: bold;
  text-align: left; }

table tbody th,
table tbody td {
  padding: 0.5rem 0.625rem 0.625rem; }

table tbody tr:nth-child(even) {
  border-bottom: 0;
  background-color: #f1f1f1; }

table.unstriped tbody {
  background-color: #fefefe; }

table.unstriped tbody tr {
  border-bottom: 0;
  border-bottom: 1px solid #f1f1f1;
  background-color: #fefefe; }

@media screen and (max-width: 63.9375em) {
  table.stack thead {
    display: none; }
  table.stack tfoot {
    display: none; }
  table.stack tr,
  table.stack th,
  table.stack td {
    display: block; }
  table.stack td {
    border-top: 0; } }

table.scroll {
  display: block;
  width: 100%;
  overflow-x: auto; }

table.hover thead tr:hover {
  background-color: #f3f3f3; }

table.hover tfoot tr:hover {
  background-color: #ececec; }

table.hover tbody tr:hover {
  background-color: #f9f9f9; }

table.hover:not(.unstriped) tr:nth-of-type(even):hover {
  background-color: #ececec; }

.table-scroll {
  overflow-x: auto; }

.table-scroll table {
  width: auto; }

.tabs {
  margin: 0;
  border: 1px solid #e6e6e6;
  background: #fefefe;
  list-style-type: none; }

.tabs::before,
.tabs::after {
  display: table;
  content: ' '; }

.tabs::after {
  clear: both; }

.tabs.vertical > li {
  display: block;
  float: none;
  width: auto; }

.tabs.simple > li > a {
  padding: 0; }

.tabs.simple > li > a:hover {
  background: transparent; }

.tabs.primary {
  background: #1779ba; }

.tabs.primary > li > a {
  color: #fefefe; }

.tabs.primary > li > a:hover,
.tabs.primary > li > a:focus {
  background: #1673b1; }

.tabs-title {
  float: left; }

.tabs-title > a {
  display: block;
  padding: 1.25rem 1.5rem;
  font-size: 0.75rem;
  line-height: 1;
  color: #1779ba; }

.tabs-title > a:hover {
  background: #fefefe;
  color: #1468a0; }

.tabs-title > a:focus,
.tabs-title > a[aria-selected='true'] {
  background: #e6e6e6;
  color: #1779ba; }

.tabs-content {
  border: 1px solid #e6e6e6;
  border-top: 0;
  background: #fefefe;
  color: #0a0a0a;
  transition: all 0.5s ease; }

.tabs-content.vertical {
  border: 1px solid #e6e6e6;
  border-left: 0; }

.tabs-panel {
  display: none;
  padding: 1rem; }

.tabs-panel[aria-hidden="false"] {
  display: block; }

.thumbnail {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 1rem;
  border: solid 4px #fefefe;
  border-radius: 0;
  box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2);
  line-height: 0; }

a.thumbnail {
  transition: box-shadow 200ms ease-out; }

a.thumbnail:hover,
a.thumbnail:focus {
  box-shadow: 0 0 6px 1px rgba(23, 121, 186, 0.5); }

a.thumbnail image {
  box-shadow: none; }

.title-bar {
  padding: 0.5rem;
  background: #0a0a0a;
  color: #fefefe; }

.title-bar::before,
.title-bar::after {
  display: table;
  content: ' '; }

.title-bar::after {
  clear: both; }

.title-bar .menu-icon {
  margin-left: 0.25rem;
  margin-right: 0.25rem; }

.title-bar-left {
  float: left; }

.title-bar-right {
  float: right;
  text-align: right; }

.title-bar-title {
  display: inline-block;
  vertical-align: middle;
  font-weight: bold; }

.has-tip {
  position: relative;
  display: inline-block;
  border-bottom: dotted 1px #8a8a8a;
  font-weight: bold;
  cursor: help; }

.tooltip {
  position: absolute;
  top: calc(100% + 0.6495rem);
  z-index: 1200;
  max-width: 10rem;
  padding: 0.75rem;
  border-radius: 0;
  background-color: #0a0a0a;
  font-size: 80%;
  color: #fefefe; }

.tooltip::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  content: '';
  border-top-width: 0;
  border-bottom-style: solid;
  border-color: transparent transparent #0a0a0a;
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%); }

.tooltip.top::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #0a0a0a transparent transparent;
  top: 100%;
  bottom: auto; }

.tooltip.left::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #0a0a0a;
  top: 50%;
  bottom: auto;
  left: 100%;
  transform: translateY(-50%); }

.tooltip.right::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #0a0a0a transparent transparent;
  top: 50%;
  right: 100%;
  bottom: auto;
  left: auto;
  transform: translateY(-50%); }

.top-bar {
  padding: 0.5rem; }

.top-bar::before,
.top-bar::after {
  display: table;
  content: ' '; }

.top-bar::after {
  clear: both; }

.top-bar,
.top-bar ul {
  background-color: #e6e6e6; }

.top-bar input {
  max-width: 200px;
  margin-right: 1rem; }

.top-bar .input-group-field {
  width: 100%;
  margin-right: 0; }

.top-bar input.button {
  width: auto; }

.top-bar .top-bar-left,
.top-bar .top-bar-right {
  width: 100%; }

@media print, screen and (min-width: 40em) {
  .top-bar .top-bar-left,
  .top-bar .top-bar-right {
    width: auto; } }

@media screen and (max-width: 63.9375em) {
  .top-bar.stacked-for-medium .top-bar-left,
  .top-bar.stacked-for-medium .top-bar-right {
    width: 100%; } }

@media screen and (max-width: 74.9375em) {
  .top-bar.stacked-for-large .top-bar-left,
  .top-bar.stacked-for-large .top-bar-right {
    width: 100%; } }

.top-bar-title {
  display: inline-block;
  float: left;
  padding: 0.5rem 1rem 0.5rem 0; }

.top-bar-title .menu-icon {
  bottom: 2px; }

.top-bar-left {
  float: left; }

.top-bar-right {
  float: right; }

.hide {
  display: none !important; }

.invisible {
  visibility: hidden; }

@media screen and (max-width: 39.9375em) {
  .hide-for-small-only {
    display: none !important; } }

@media screen and (max-width: 0em), screen and (min-width: 40em) {
  .show-for-small-only {
    display: none !important; } }

@media print, screen and (min-width: 40em) {
  .hide-for-medium {
    display: none !important; } }

@media screen and (max-width: 39.9375em) {
  .show-for-medium {
    display: none !important; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .hide-for-medium-only {
    display: none !important; } }

@media screen and (max-width: 39.9375em), screen and (min-width: 64em) {
  .show-for-medium-only {
    display: none !important; } }

@media print, screen and (min-width: 64em) {
  .hide-for-large {
    display: none !important; } }

@media screen and (max-width: 63.9375em) {
  .show-for-large {
    display: none !important; } }

@media screen and (min-width: 64em) and (max-width: 74.9375em) {
  .hide-for-large-only {
    display: none !important; } }

@media screen and (max-width: 63.9375em), screen and (min-width: 75em) {
  .show-for-large-only {
    display: none !important; } }

.show-for-sr,
.show-on-focus {
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0); }

.show-on-focus:active,
.show-on-focus:focus {
  position: static !important;
  width: auto;
  height: auto;
  overflow: visible;
  clip: auto; }

.show-for-landscape,
.hide-for-portrait {
  display: block !important; }

@media screen and (orientation: landscape) {
  .show-for-landscape,
  .hide-for-portrait {
    display: block !important; } }

@media screen and (orientation: portrait) {
  .show-for-landscape,
  .hide-for-portrait {
    display: none !important; } }

.hide-for-landscape,
.show-for-portrait {
  display: none !important; }

@media screen and (orientation: landscape) {
  .hide-for-landscape,
  .show-for-portrait {
    display: none !important; } }

@media screen and (orientation: portrait) {
  .hide-for-landscape,
  .show-for-portrait {
    display: block !important; } }

.float-left {
  float: left !important; }

.float-right {
  float: right !important; }

.float-center {
  display: block;
  margin-right: auto;
  margin-left: auto; }

.clearfix::before,
.clearfix::after {
  display: table;
  content: ' '; }

.clearfix::after {
  clear: both; }

@font-face {
  font-family: 'imovehome';
  src: url(abe7f9d22943810517626b3a59df5c77.woff2) format("woff2"), url(7d83a4b2925e615afcf3a38dfceca14f.woff) format("woff"), url(d30111a6c74fc4323427ba81f25eef89.ttf) format("truetype");
  font-weight: bold;
  font-style: normal; }

@font-face {
  font-family: 'imovehome';
  src: url(1f7810ac6a13812954e8bc4a75ca6c45.woff2) format("woff2"), url(03e02086b2b24aa9e215cfc47d7c5b21.woff) format("woff"), url(318362a143c48335034f1d456dde0a05.ttf) format("truetype");
  font-weight: normal;
  font-style: normal; }

body {
  font-family: 'imovehome' !important; }

@font-face {
  font-family: 'imovehome';
  src: url(abe7f9d22943810517626b3a59df5c77.woff2) format("woff2"), url(7d83a4b2925e615afcf3a38dfceca14f.woff) format("woff"), url(d30111a6c74fc4323427ba81f25eef89.ttf) format("truetype");
  font-weight: bold;
  font-style: normal; }

@font-face {
  font-family: 'imovehome';
  src: url(1f7810ac6a13812954e8bc4a75ca6c45.woff2) format("woff2"), url(03e02086b2b24aa9e215cfc47d7c5b21.woff) format("woff"), url(318362a143c48335034f1d456dde0a05.ttf) format("truetype");
  font-weight: normal;
  font-style: normal; }

html,
body,
form,
fieldset,
table,
tr,
td,
img {
  font-family: 'imovehome'; }

input,
button,
select,
textarea,
optgroup,
option {
  font-family: 'imovehome'; }

/* rest of your styles; like: */
body {
  font-family: 'imovehome'; }

a {
  color: #192154;
  text-decoration: underline; }

.bg-secondary {
  background-color: #00deb6; }

.imh-currency-input {
  position: relative;
  display: block;
  width: 100%; }

.imh-currency-input span {
  position: absolute;
  left: 0;
  display: inline-block;
  font-size: 24px;
  color: #000000;
  letter-spacing: 0.16px;
  padding: 8px 16px; }

.imh-currency-input input[type="text"] {
  padding-left: 30px !important;
  display: inline-block;
  color: #000000 !important;
  height: 60px;
  font-size: 24px !important; }

.error-message {
  color: #ff0000 !important;
  font-size: 16px !important;
  font-weight: bold !important;
  padding: 0;
  margin: 0; }

.error-message-container {
  display: block; }

.imh-tooltip {
  color: #192154;
  font-weight: bold;
  border: solid 2px #192154;
  border-radius: 50%;
  font-size: 13px;
  padding: 10px 7px; }

.tooltip {
  display: none !important; }

.imh-btn {
  font-family: 'imovehome';
  position: relative;
  font-weight: bold;
  font-size: 18px;
  padding: 15px !important;
  border-radius: 4px !important;
  cursor: pointer;
  transition: background-color 0.2s;
  min-width: 223px; }

@media screen and (max-width: 39.9375em) {
  .imh-btn {
    width: 100%;
    margin: 20px 0; } }

.imh-btn-primary {
  background-color: #192154;
  color: #fff;
  box-shadow: 0px 3px 0px 0px black; }

.imh-btn-primary:hover {
  background-color: #0d122d; }

.imh-btn-secondary {
  background-color: #00deb6;
  color: #fff;
  box-shadow: 0px 3px 0px 0px #005f4d; }

.imh-btn-secondary:hover {
  background-color: #00ab8c; }

.imh-btn-secondary-disabled {
  background-color: #12ffd4; }

.imh-btn-primary-disabled {
  background-color: #25307b; }

.imh-btn-danger {
  background-color: #ff0000;
  color: #fff;
  box-shadow: 0px 3px 0px 0px maroon; }

.imh-btn-danger:hover {
  background-color: #cc0000; }

.imh-btn-warning {
  background-color: #EDC79B;
  color: #fff;
  box-shadow: 0px 3px 0px 0px #da8a2f; }

.imh-btn-warning:hover {
  background-color: #e5af70; }

.imh-btn-info {
  background-color: #825BE8;
  color: #fff;
  box-shadow: 0px 3px 0px 0px #4118ab; }

.imh-btn-info:hover {
  background-color: #602ee2; }

.imh-btn-muted {
  background-color: #DBDBDB;
  color: #000000;
  box-shadow: 0px 3px 0px 0px #9b9b9b; }

.imh-btn-muted:hover {
  color: #000000;
  background-color: #c2c2c2; }

.underline {
  text-decoration: underline; }

@keyframes pulsate {
  0% {
    color: #000000;
    font-size: 20px; }
  50% {
    color: #00deb6;
    font-size: 25px; }
  100% {
    color: #000000;
    font-size: 20px; } }

@keyframes border-pulsate {
  0% {
    border-color: cyan; }
  50% {
    border-color: rgba(0, 255, 255, 0); }
  100% {
    border-color: cyan; } }

.loading {
  text-align: center; }

.loading .imh-spinner {
  display: inline-block;
  font-size: 64px;
  height: 64px;
  line-height: 1;
  margin: 0.1em;
  color: #00deb6;
  animation: anim-rotate 3s infinite linear; }

.loading p {
  color: #73848D;
  font-size: 16px; }

.imh-failed {
  text-align: center; }

.imh-failed .icon-cross {
  display: inline-block;
  font-size: 64px;
  height: 64px;
  line-height: 1;
  margin: 0.1em;
  color: red; }

.imh-failed p {
  color: #73848D;
  font-size: 16px; }

.imh-complete {
  text-align: center; }

.imh-complete .icon-check {
  display: inline-block;
  font-size: 64px;
  height: 64px;
  line-height: 1;
  margin: 0.1em;
  color: #00deb6; }

.imh-complete p {
  color: #73848D;
  font-size: 16px; }

@keyframes anim-rotate {
  0% {
    transform: rotate(0);
    opacity: 1; }
  50% {
    opacity: 0.7; }
  100% {
    transform: rotate(359deg);
    opacity: 1; } }

.delete-modal {
  background: #FFFFFF;
  padding: 20px;
  border-radius: 4px !important;
  outline: none; }

.delete-modal .modal-title {
  color: #37474F;
  font-weight: bold; }

.delete-modal .modal-subject {
  color: #ff0000; }

.delete-modal .control-group {
  float: right;
  width: 100%; }

.delete-modal .control-group .delete-confirm {
  background: #ff0000;
  color: #FFFFFF;
  padding: 10px;
  border-radius: 5px;
  margin: 2px;
  border-radius: 5px !important;
  cursor: pointer;
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
  transition: all 0.2s; }

.delete-modal .control-group .delete-confirm:hover {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
  transition: all 0.2s; }

.delete-modal .control-group .cancel {
  background: #DBDBDB;
  color: #FFFFFF;
  padding: 10px;
  border-radius: 5px;
  margin: 2px;
  border-radius: 5px !important;
  cursor: pointer;
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
  transition: all 0.2s; }

.delete-modal .control-group .cancel:hover {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
  transition: all 0.2s; }

body {
  font-family: 'imovehome' !important; }

body [ng\:cloak],
body [ng-cloak],
body [data-ng-cloak],
body [x-ng-cloak],
body .ng-cloak,
body .x-ng-cloak {
  display: none !important; }

body .nav-off-canvas {
  color: #FFFFFF !important; }

body .nav-off-canvas .off-canvas-wrapper-inner {
  outline: none !important; }

body .nav-off-canvas .off-canvas-wrapper-inner .off-canvas {
  outline: none !important;
  background-color: #FFFFFF !important;
  padding: 15px;
  height: 100%;
  text-align: center;
  z-index: 2;
  border-top: 2px solid #192154;
  border-right: 2px solid #192154;
  border-left: 0px;
  border-bottom: 2px solid #192154; }

body .nav-off-canvas .off-canvas-wrapper-inner .off-canvas .logo {
  object-fit: contain;
  height: 40px;
  margin: 20px auto;
  display: block; }

body .nav-off-canvas .off-canvas-wrapper-inner .off-canvas .icon-cross2 {
  float: right; }

body .nav-off-canvas .off-canvas-wrapper-inner .off-canvas .nav-menu li a {
  color: #485E69 !important;
  font-size: 15px !important;
  outline: none;
  text-decoration: none; }

body .nav-off-canvas .off-canvas-wrapper-inner .off-canvas .nav-menu li a:hover {
  text-decoration: underline; }

body .nav-off-canvas .off-canvas-wrapper-inner .off-canvas .nav-menu li .imh-btn-primary {
  min-width: 0px !important; }

body .nav-off-canvas .off-canvas-wrapper-inner .off-canvas-content {
  box-shadow: none; }

body footer {
  padding: 0 0 50px 0; }

@media screen and (max-width: 39.9375em) {
  body footer p,
  body footer ul {
    text-align: center; } }

body footer p {
  margin: 4px 0 1em 0; }

body footer ul {
  list-style-type: none;
  margin: 0px; }

body footer ul li {
  margin: 0; }

body footer ul li a {
  color: #73848D; }

body footer ul li a:hover {
  text-decoration: underline; }

body footer .banner-section {
  background: #F0F7FF;
  margin-bottom: 50px; }

body footer .banner-section .house-banner {
  width: 100%;
  height: 356px;
  position: relative;
  text-align: center; }

body footer .banner-section .house-banner img {
  object-fit: cover;
  object-position: center;
  height: 277px;
  margin-top: 80px; }

body footer .imovehome-summary img {
  margin-bottom: 1em;
  height: 33px;
  object-fit: contain; }

@media screen and (max-width: 39.9375em) {
  body footer .imovehome-summary img {
    margin: 0 auto;
    display: table; } }

body footer .imovehome-summary p {
  font-size: 13px;
  color: #546E7A; }

body footer .imovehome-contacts ul {
  display: block; }

body footer .imovehome-contacts ul li {
  display: inline-block;
  margin: 5px; }

body footer .associated {
  margin-top: 120px; }

body footer .associated ul {
  list-style-type: none;
  margin: 0 auto;
  display: table; }

body footer .associated ul li {
  display: inline;
  margin: 0 20px; }

body footer .associated ul li .rightmove-logo {
  height: 29px; }

body footer .associated ul li .zoopla-logo {
  height: 20px; }

body footer .associated ul li .primelocation-logo {
  height: 29px; }

@media screen and (max-width: 39.9375em) {
  body footer .associated {
    margin-top: 50px; }
  body footer .associated ul li {
    text-align: center;
    display: block;
    width: 100%;
    margin: 10px 0; } }

/**
 * Tooltip Styles
 */
/* Base styles for the element that has a tooltip */
[data-tooltip],
.tooltip {
  position: relative;
  cursor: pointer; }

/* Base styles for the entire tooltip */
[data-tooltip]:before,
[data-tooltip]:after,
.tooltip:before,
.tooltip:after {
  position: absolute;
  visibility: hidden;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
  opacity: 0;
  -webkit-transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out, -webkit-transform 0.2s cubic-bezier(0.71, 1.7, 0.77, 1.24);
  -moz-transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out, -moz-transform 0.2s cubic-bezier(0.71, 1.7, 0.77, 1.24);
  transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out, transform 0.2s cubic-bezier(0.71, 1.7, 0.77, 1.24);
  -webkit-transform: translate3d(0, 0, 0);
  -moz-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
  pointer-events: none; }

/* Show the entire tooltip on hover and focus */
[data-tooltip]:hover:before,
[data-tooltip]:hover:after,
[data-tooltip]:focus:before,
[data-tooltip]:focus:after,
.tooltip:hover:before,
.tooltip:hover:after,
.tooltip:focus:before,
.tooltip:focus:after {
  visibility: visible;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
  opacity: 1; }

/* Base styles for the tooltip's directional arrow */
.tooltip:before,
[data-tooltip]:before {
  z-index: 1001;
  border: 6px solid transparent;
  background: transparent;
  content: ""; }

/* Base styles for the tooltip's content area */
.tooltip:after,
[data-tooltip]:after {
  z-index: 1000;
  padding: 8px;
  width: 300px;
  background-color: #192154;
  color: #fff;
  content: attr(data-tooltip);
  font-size: 14px;
  line-height: 1.2;
  border-radius: 5px; }

/* Directions */
/* Top (default) */
[data-tooltip]:before,
[data-tooltip]:after,
.tooltip:before,
.tooltip:after,
.tooltip-top:before,
.tooltip-top:after {
  bottom: 100%;
  left: 50%; }

[data-tooltip]:before,
.tooltip:before,
.tooltip-top:before {
  margin-left: -6px;
  margin-bottom: -12px;
  border-top-color: #192154; }

/* Horizontally align top/bottom tooltips */
[data-tooltip]:after,
.tooltip:after,
.tooltip-top:after {
  margin-left: -80px; }

[data-tooltip]:hover:before,
[data-tooltip]:hover:after,
[data-tooltip]:focus:before,
[data-tooltip]:focus:after,
.tooltip:hover:before,
.tooltip:hover:after,
.tooltip:focus:before,
.tooltip:focus:after,
.tooltip-top:hover:before,
.tooltip-top:hover:after,
.tooltip-top:focus:before,
.tooltip-top:focus:after {
  -webkit-transform: translateY(-12px);
  -moz-transform: translateY(-12px);
  transform: translateY(-12px); }

/* Left */
.tooltip-left:before,
.tooltip-left:after {
  right: 100%;
  bottom: 50%;
  left: auto; }

.tooltip-left:before {
  margin-left: 0;
  margin-right: -12px;
  margin-bottom: 0;
  border-top-color: transparent;
  border-left-color: #192154; }

.tooltip-left:hover:before,
.tooltip-left:hover:after,
.tooltip-left:focus:before,
.tooltip-left:focus:after {
  -webkit-transform: translateX(-12px);
  -moz-transform: translateX(-12px);
  transform: translateX(-12px); }

/* Bottom */
.tooltip-bottom:before,
.tooltip-bottom:after {
  top: 100%;
  bottom: auto;
  left: 50%; }

.tooltip-bottom:before {
  margin-top: -12px;
  margin-bottom: 0;
  border-top-color: transparent;
  border-bottom-color: #192154; }

.tooltip-bottom:hover:before,
.tooltip-bottom:hover:after,
.tooltip-bottom:focus:before,
.tooltip-bottom:focus:after {
  -webkit-transform: translateY(12px);
  -moz-transform: translateY(12px);
  transform: translateY(12px); }

/* Right */
.tooltip-right:before,
.tooltip-right:after {
  bottom: 50%;
  left: 100%; }

.tooltip-right:before {
  margin-bottom: 0;
  margin-left: -12px;
  border-top-color: transparent;
  border-right-color: #192154; }

.tooltip-right:hover:before,
.tooltip-right:hover:after,
.tooltip-right:focus:before,
.tooltip-right:focus:after {
  -webkit-transform: translateX(12px);
  -moz-transform: translateX(12px);
  transform: translateX(12px); }

/* Move directional arrows down a bit for left/right tooltips */
.tooltip-left:before,
.tooltip-right:before {
  top: 7px; }

/* Vertically center tooltip content for left/right tooltips */
.tooltip-left:after,
.tooltip-right:after {
  margin-left: 0;
  margin-bottom: -16px; }

.account-section {
  margin-top: 1px;
  border-top: solid 5px #192154;
  background-image: linear-gradient(120deg, #91C4FF 0%, #F0F7FF 87%);
  padding-bottom: 50px;
  position: relative; }

.account-section .heading h2 {
  color: #485E69;
  font-weight: bold; }

.account-section .dashboard-navigation {
  margin-bottom: 20px; }

.account-section .cloud-scroll {
  background: url(/src/assets/images/imovehome/clouds.png) repeat-x;
  top: 70px;
  left: 0;
  width: 100%;
  height: 50%;
  background-size: cover;
  position: absolute;
  -webkit-animation: 900000s backgroundScroll infinite linear;
  -moz-animation: 900000s backgroundScroll infinite linear;
  -o-animation: 900000s backgroundScroll infinite linear;
  -ms-animation: 900000s backgroundScroll infinite linear;
  animation: 900000s backgroundScroll infinite linear; }

@-webkit-keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

@keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

.account-section .section-title {
  color: #485E69;
  font-size: 25px;
  margin: 0 0 10px !important;
  font-weight: bold; }

.account-section h3 {
  font-weight: bold !important;
  font-size: 18px !important;
  color: #37474F !important;
  letter-spacing: 0.18px;
  width: 100%; }

.account-section input,
.account-section select {
  border: solid 2px #bbbbbb;
  border-radius: 5px;
  padding: 0 20px;
  font-size: 16px;
  color: #37474F;
  letter-spacing: 0.16px;
  height: 51px;
  transition: all 0.2s;
  font-weight: bold; }

.account-section input:focus,
.account-section select:focus {
  transition: all 0.2s;
  border: solid 2px #192154;
  color: #192154;
  font-weight: bold; }

.account-section .account-options {
  position: relative; }

.account-section .account-options .account-details-form .imh-tooltip {
  margin-bottom: 10px; }

.account-section .account-options .account-tools {
  background: #192154;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
  border: 0 !important;
  color: #FFFFFF;
  box-shadow: 0px 3px 0px 0px #182c7b;
  padding: 5px; }

.account-section .account-options .account-tools li {
  display: inline-block; }

.account-section .account-options .account-tools li a {
  color: #FFFFFF;
  font-weight: bold;
  font-size: 18px;
  outline: none !important;
  text-decoration: none; }

.account-section .account-options .account-tools li a span {
  margin: 5px; }

.account-section .account-options .account-tools li a:focus {
  background-color: #0d122d; }

.account-section .account-options .account-tools li a:hover {
  background-color: #0d122d; }

.account-section .account-options .account-tools li a:active,
.account-section .account-options .account-tools li a[aria-selected='true'] {
  background: #192154 !important;
  color: #FFFFFF; }

.account-section .account-options .account-contents {
  margin-top: 50px;
  background: #FFFFFF;
  padding: 20px;
  border-radius: 4px !important; }

.account-section .house-banner {
  text-align: center;
  width: 100%;
  margin: 50px 0 0 0; }

.account-section .house-banner img {
  object-fit: cover;
  object-position: center;
  width: 100%; }

.login .login-block {
  background-color: #F0F7FF;
  padding: 150px 0;
  text-align: center; }

.login .login-block h1 {
  font-size: 36px;
  color: #37474F;
  letter-spacing: 0.37px;
  margin-bottom: 40px;
  font-weight: bold; }

.login .login-block .login-form {
  width: 455px;
  display: block;
  margin: 0 auto 40px auto;
  padding: 20px;
  background: #FFFFFF;
  box-shadow: 0px 2px 0px 0px rgba(203, 206, 208, 0.5);
  border-radius: 3px; }

@media screen and (max-width: 39.9375em) {
  .login .login-block .login-form {
    width: 100%; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .login .login-block .login-form {
    margin-right: 0;
    width: 100%; } }

.login .login-block .login-form input {
  background: #FCFCFC;
  border: 1px solid #B4B4B4;
  border-radius: 2px;
  font-size: 18px;
  color: #73848D;
  letter-spacing: 0.18px;
  height: 59px;
  padding: 0 20px; }

.login .login-block .login-form input:placeholder {
  font-size: 18px;
  color: #73848D;
  letter-spacing: 0.18px; }

.login .login-block .login-form .password-field {
  position: relative; }

.login .login-block .login-form .password-field span {
  position: absolute;
  right: 10;
  top: 15;
  font-size: 24px;
  color: #262C3D;
  letter-spacing: 0.24px; }

.login .login-block .login-form .imh-btn-secondary {
  width: 100%;
  height: 77px;
  background: #00deb6;
  box-shadow: 0px 2px 0px 0px #27A448;
  border-radius: 2px;
  font-size: 28px;
  color: #FFFFFF;
  letter-spacing: 0.29px; }

.login .login-block .login-link {
  font-size: 18px;
  color: #73848D;
  letter-spacing: 0.18px; }

.login .login-block .login-link a {
  font-size: 18px !important;
  color: #192154 !important;
  font-weight: bold !important;
  letter-spacing: 0.18px;
  text-decoration: underline; }

.register .register-block {
  background-color: #F0F7FF;
  padding: 150px 0;
  text-align: center; }

.register .register-block h1 {
  font-size: 36px;
  color: #37474F;
  letter-spacing: 0.37px;
  margin-bottom: 40px;
  font-weight: bold; }

.register .register-block .register-form {
  width: 455px;
  display: block;
  margin: 0 auto 40px auto;
  padding: 20px;
  background: #FFFFFF;
  box-shadow: 0px 2px 0px 0px rgba(203, 206, 208, 0.5);
  border-radius: 3px; }

@media screen and (max-width: 39.9375em) {
  .register .register-block .register-form {
    width: 100%; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .register .register-block .register-form {
    margin-right: 0;
    width: 100%; } }

.register .register-block .register-form input {
  background: #FCFCFC;
  border: 1px solid #B4B4B4;
  border-radius: 2px;
  font-family: imovehome;
  font-size: 18px;
  color: #73848D;
  letter-spacing: 0.18px;
  height: 59px;
  padding: 0 20px; }

.register .register-block .register-form input:placeholder {
  font-family: imovehome;
  font-size: 18px;
  color: #73848D;
  letter-spacing: 0.18px; }

.register .register-block .register-form .password-field {
  position: relative; }

.register .register-block .register-form .password-field span {
  position: absolute;
  right: 10;
  top: 15;
  font-size: 24px;
  color: #262C3D;
  letter-spacing: 0.24px; }

.register .register-block .register-form .imh-btn-secondary {
  width: 100%;
  height: 77px;
  background: #00deb6;
  box-shadow: 0px 2px 0px 0px #27A448;
  border-radius: 2px;
  font-family: imovehome-Bold;
  font-size: 28px;
  color: #FFFFFF;
  letter-spacing: 0.29px; }

.register .register-block .register-link {
  font-family: imovehome;
  font-size: 18px;
  color: #73848D;
  letter-spacing: 0.18px; }

.register .register-block .register-link a {
  font-size: 18px !important;
  color: #192154 !important;
  font-weight: bold !important;
  letter-spacing: 0.18px;
  text-decoration: underline; }

.reset-password .reset-password-block {
  background-color: #F0F7FF;
  padding: 100px 0;
  text-align: center; }

.reset-password .reset-password-block h1 {
  font-size: 36px;
  color: #37474F;
  letter-spacing: 0.37px;
  margin-bottom: 40px;
  font-weight: bold; }

.reset-password .reset-password-block .reset-password-form {
  width: 455px;
  display: block;
  margin: 0 auto 40px auto;
  padding: 20px;
  background: #FFFFFF;
  box-shadow: 0px 2px 0px 0px rgba(203, 206, 208, 0.5);
  border-radius: 3px; }

@media screen and (max-width: 39.9375em) {
  .reset-password .reset-password-block .reset-password-form {
    width: 100%; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .reset-password .reset-password-block .reset-password-form {
    margin-right: 0;
    width: 100%; } }

.reset-password .reset-password-block .reset-password-form input {
  background: #FCFCFC;
  border: 1px solid #B4B4B4;
  border-radius: 2px;
  font-family: imovehome;
  font-size: 18px;
  color: #73848D;
  letter-spacing: 0.18px;
  height: 59px;
  padding: 0 20px; }

.reset-password .reset-password-block .reset-password-form input:placeholder {
  font-family: imovehome;
  font-size: 18px;
  color: #73848D;
  letter-spacing: 0.18px; }

.reset-password .reset-password-block .reset-password-form .password-field {
  position: relative; }

.reset-password .reset-password-block .reset-password-form .password-field span {
  position: absolute;
  right: 10;
  top: 15;
  font-size: 24px;
  color: #262C3D;
  letter-spacing: 0.24px; }

.reset-password .reset-password-block .reset-password-form .imh-btn-secondary {
  width: 100%;
  height: 77px;
  background: #00deb6;
  box-shadow: 0px 2px 0px 0px #27A448;
  border-radius: 2px;
  font-family: imovehome-Bold;
  font-size: 28px;
  color: #FFFFFF;
  letter-spacing: 0.29px; }

.reset-password .reset-password-block .reset-password-link {
  font-family: imovehome;
  font-size: 18px;
  color: #73848D;
  letter-spacing: 0.18px; }

.reset-password .reset-password-block .reset-password-link a {
  font-size: 18px !important;
  color: #192154 !important;
  font-weight: bold !important;
  letter-spacing: 0.18px;
  text-decoration: underline; }

.forgot-password .forgot-password-block {
  background-color: #F0F7FF;
  padding: 100px 0;
  text-align: center; }

.forgot-password .forgot-password-block h1 {
  font-size: 36px;
  color: #37474F;
  letter-spacing: 0.37px;
  margin-bottom: 40px;
  font-weight: bold; }

.forgot-password .forgot-password-block .forgot-password-form {
  width: 455px;
  display: block;
  margin: 0 auto 40px auto;
  padding: 20px;
  background: #FFFFFF;
  box-shadow: 0px 2px 0px 0px rgba(203, 206, 208, 0.5);
  border-radius: 3px; }

@media screen and (max-width: 39.9375em) {
  .forgot-password .forgot-password-block .forgot-password-form {
    width: 100%; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .forgot-password .forgot-password-block .forgot-password-form {
    margin-right: 0;
    width: 100%; } }

.forgot-password .forgot-password-block .forgot-password-form input {
  background: #FCFCFC;
  border: 1px solid #B4B4B4;
  border-radius: 2px;
  font-family: imovehome;
  font-size: 18px;
  color: #73848D;
  letter-spacing: 0.18px;
  height: 59px;
  padding: 0 20px; }

.forgot-password .forgot-password-block .forgot-password-form input:placeholder {
  font-family: imovehome;
  font-size: 18px;
  color: #73848D;
  letter-spacing: 0.18px; }

.forgot-password .forgot-password-block .forgot-password-form .password-field {
  position: relative; }

.forgot-password .forgot-password-block .forgot-password-form .password-field span {
  position: absolute;
  right: 10;
  top: 15;
  font-size: 24px;
  color: #262C3D;
  letter-spacing: 0.24px; }

.forgot-password .forgot-password-block .forgot-password-form .imh-btn-secondary {
  width: 100%;
  height: 77px;
  background: #00deb6;
  box-shadow: 0px 2px 0px 0px #27A448;
  border-radius: 2px;
  font-family: imovehome-Bold;
  font-size: 28px;
  color: #FFFFFF;
  letter-spacing: 0.29px; }

.forgot-password .forgot-password-block .forgot-password-link {
  font-family: imovehome;
  font-size: 18px;
  color: #73848D;
  letter-spacing: 0.18px; }

.forgot-password .forgot-password-block .forgot-password-link a {
  font-size: 18px !important;
  color: #192154 !important;
  font-weight: bold !important;
  letter-spacing: 0.18px;
  text-decoration: underline; }

.home .banner {
  background-image: linear-gradient(120deg, #91C4FF 0%, #F0F7FF 87%);
  min-height: 550px;
  border-bottom: solid 7px #205081;
  position: relative; }

@media screen and (max-width: 39.9375em) {
  .home .banner {
    min-height: auto;
    padding: 20px 0; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .home .banner {
    min-height: auto;
    padding: 20px 0; } }

.home .banner .cloud-scroll {
  background: url(/src/assets/images/imovehome/clouds.png) repeat-x;
  top: 20px;
  left: 0;
  width: 100%;
  height: 80%;
  background-size: cover;
  position: absolute;
  -webkit-animation: 900000s backgroundScroll infinite linear;
  -moz-animation: 900000s backgroundScroll infinite linear;
  -o-animation: 900000s backgroundScroll infinite linear;
  -ms-animation: 900000s backgroundScroll infinite linear;
  animation: 900000s backgroundScroll infinite linear; }

.home .banner #house_hype_container {
  width: 680px !important;
  z-index: 1; }

@-webkit-keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

@keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

.home .banner .get-started {
  position: relative;
  margin-top: 60px;
  /* Small only */
  /* Medium only */ }

@media screen and (max-width: 39.9375em) {
  .home .banner .get-started {
    margin-top: 40px;
    text-align: center; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .home .banner .get-started {
    margin: 40px 0;
    text-align: center; } }

.home .banner .get-started .cta p {
  margin: 5px 0 !important;
  padding: 0 !important;
  line-height: 1; }

.home .banner .get-started .cta p:first-child {
  font-size: 40px;
  color: #262C3D; }

.home .banner .get-started .cta p:nth-child(2) {
  font-size: 64px;
  color: #262C3D;
  font-weight: bold; }

.home .banner .get-started .cta p:nth-child(3) {
  font-size: 28px;
  color: #37474F; }

.home .banner .get-started .features {
  margin-top: 50px; }

.home .banner .get-started .features .feature-block {
  display: inline-block;
  margin-right: 5px 5px 5px 0; }

.home .banner .get-started .features .feature-block img {
  height: 32px;
  width: 32px;
  display: inline-block; }

.home .banner .get-started .features .feature-block p {
  font-size: 20px;
  color: #37474F;
  display: inline-block;
  margin-left: 10px; }

.home .banner .get-started .actions {
  margin-top: 30px; }

.home .banner .get-started .actions .get-started-btn {
  position: relative;
  display: inline-block;
  height: 70px;
  width: 287px;
  background: #00deb6;
  transition: background-color 0.5s;
  box-shadow: 0px 3px 0px 0px #005f4d;
  border-radius: 4px;
  cursor: pointer;
  margin-bottom: 20px; }

.home .banner .get-started .actions .get-started-btn .logo-block {
  background-color: #00deb6;
  left: 0;
  float: left;
  height: inherit;
  padding: 14px 20px; }

.home .banner .get-started .actions .get-started-btn .logo-block img {
  height: 39.27px;
  width: 42px; }

.home .banner .get-started .actions .get-started-btn .button-block {
  display: inline-block;
  height: inherit;
  padding: 14px 10px;
  color: #FFFFFF;
  text-decoration: none;
  font-size: 28px;
  font-weight: bold; }

.home .banner .get-started .actions .get-started-btn input[type="submit"] {
  padding: 18px 0 0 100px;
  border: 0px !important;
  color: #FFFFFF;
  font-size: 28px;
  font-weight: bold;
  background-color: transparent; }

.home .banner .get-started .actions .get-started-btn:hover {
  transition: background-color 0.5s;
  background-color: #00ab8c; }

.home .banner .get-started .actions .learn {
  display: inline-block;
  margin-left: 20px;
  /* Small only */
  /* Medium only */ }

.home .banner .get-started .actions .learn span {
  font-size: 18px;
  color: #73848D; }

.home .banner .get-started .actions .learn span a {
  font-size: 18px !important;
  color: #73848D !important;
  font-weight: bold !important;
  text-decoration: underline; }

.home .banner .get-started .actions .learn span a:hover {
  color: #00deb6 !important; }

@media screen and (max-width: 39.9375em) {
  .home .banner .get-started .actions .learn {
    margin-left: 0px;
    width: 100%;
    margin-top: 20px; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .home .banner .get-started .actions .learn {
    margin-left: 0px;
    width: 100%;
    margin-top: 20px; } }

.home .website-listings {
  margin: 40px 0;
  text-align: center;
  /* Small only */
  /* Medium only */ }

.home .website-listings p {
  color: #37474F; }

.home .website-listings .rightmove-logo {
  height: 57px;
  object-fit: contain; }

.home .website-listings .zoopla-logo {
  height: 39px;
  object-fit: contain;
  margin-top: 15px; }

.home .website-listings .primelocation-logo {
  height: 57px;
  object-fit: contain; }

@media screen and (max-width: 39.9375em) {
  .home .website-listings img {
    margin-top: 15px; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .home .website-listings img {
    margin-top: 15px; } }

.home .steps {
  background-color: #F0F7FF;
  padding: 75px 0px;
  object-fit: cover;
  object-position: center;
  position: relative; }

.home .steps h1 {
  color: #000000; }

.home .steps h3 {
  color: #000000; }

.home .steps .steps-title {
  font-size: 36px;
  color: #000000;
  font-weight: bold;
  text-align: center;
  width: 100%;
  margin-bottom: 90px; }

.home .steps .step-block {
  text-align: center;
  outline: none !important; }

.home .steps .step-block .house-img {
  width: 293px;
  height: 128px; }

.home .steps .step-block .listing-img {
  width: 290px;
  height: 128px; }

.home .steps .step-block .phone-img {
  width: 214px;
  height: 128px; }

.home .steps .step-block h3 {
  font-size: 20px;
  font-weight: bold;
  text-align: center;
  width: 100%;
  margin: 30px 0; }

.home .steps .step-block p {
  font-size: 14px;
  color: #73848D; }

.home .steps .step-block ul {
  list-style-type: none;
  text-align: left !important; }

.home .steps .step-block ul li {
  margin: 0 auto; }

.home .steps .step-block ul li img {
  display: inline;
  height: 26px;
  width: 26px;
  display: inline-block;
  float: left; }

.home .steps .step-block ul li p {
  display: inline-block;
  margin-left: 20px; }

.home .steps .home-carousel {
  height: 400px;
  text-align: center;
  outline: none !important; }

.home .steps .home-carousel .house-img,
.home .steps .home-carousel .listing-img,
.home .steps .home-carousel .phone-img {
  display: inline-block !important; }

.home .steps .home-carousel .step-block {
  padding: 0 25px; }

.home .steps .home-carousel .step-block ul {
  display: inline-block !important; }

.home .comparison-ad {
  padding-top: 80px; }

.home .comparison-ad .left-side {
  text-align: right; }

@media screen and (max-width: 39.9375em) {
  .home .comparison-ad .left-side {
    text-align: center; } }

.home .comparison-ad .left-side .ad-description {
  display: inline-block;
  width: calc(100% - 244px);
  float: left;
  margin: 40px 0 0 0; }

@media screen and (max-width: 39.9375em) {
  .home .comparison-ad .left-side .ad-description {
    margin-top: 5px;
    width: 100%;
    text-align: center; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .home .comparison-ad .left-side .ad-description {
    margin-top: 5px;
    width: 100%;
    height: 100px; } }

.home .comparison-ad .right-side {
  text-align: left; }

@media screen and (max-width: 39.9375em) {
  .home .comparison-ad .right-side {
    text-align: center; } }

.home .comparison-ad .right-side .ad-description {
  display: inline-block;
  width: calc(100% - 244px);
  float: right;
  margin: 40px 0 0 0; }

@media screen and (max-width: 39.9375em) {
  .home .comparison-ad .right-side .ad-description {
    margin-top: 5px;
    width: 100%;
    text-align: center; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .home .comparison-ad .right-side .ad-description {
    margin-top: 5px;
    width: 100%;
    height: 100px; } }

.home .comparison-ad .price {
  padding: 0 50px; }

.home .comparison-ad .price span {
  font-size: 14px;
  color: #37474F;
  text-transform: uppercase;
  display: inline-block; }

.home .comparison-ad .price p {
  font-size: 36px;
  color: #262C3D;
  display: inline-block; }

.home .comparison-ad .comparison-ad-block {
  display: block; }

.home .comparison-ad .comparison-ad-block img {
  width: 209px;
  height: 227px;
  display: inline-block !important; }

.home .comparison-ad .comparison-ad-block p {
  font-size: 20px;
  color: #262C3D; }

.savings {
  background-color: #192154;
  padding: 70px 20px;
  color: #FFFFFF !important;
  margin-top: -38px;
  position: relative;
  z-index: 1; }

.savings .savings-ad {
  text-align: center; }

.savings .savings-ad h3 {
  font-size: 36px !important;
  font-weight: bold !important; }

.savings .savings-ad p {
  font-size: 18px; }

.savings label {
  color: #FFFFFF !important;
  opacity: 0.64; }

.savings input {
  background: transparent !important;
  border: 3px solid #FFFFFF;
  border-radius: 8px;
  color: #FFFFFF;
  font-size: 28px;
  outline: none !important;
  height: 60px; }

.savings .selling-price-block {
  width: 60%;
  display: inline-block;
  margin-right: 3%; }

@media screen and (max-width: 39.9375em) {
  .savings .selling-price-block {
    margin-right: 0;
    width: 100%; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .savings .selling-price-block {
    margin-right: 0;
    width: 100%; } }

.savings .selling-price-block .selling-price-field {
  position: relative; }

.savings .selling-price-block .selling-price-field input {
  padding-left: 43px;
  display: inline-block; }

.savings .selling-price-block .selling-price-field span {
  font-size: 28px;
  color: #FFFFFF;
  position: absolute;
  left: 30;
  top: 10;
  display: inline-block; }

@media screen and (max-width: 39.9375em) {
  .savings .selling-price-block {
    width: 100%;
    margin-right: 0px; } }

.savings .agency-fee-block {
  width: 30%;
  display: inline-block; }

@media screen and (max-width: 39.9375em) {
  .savings .agency-fee-block {
    margin-right: 0;
    width: 100%; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .savings .agency-fee-block {
    margin-right: 0;
    width: 35%; } }

.savings .agency-fee-block input {
  padding-left: 30px; }

.savings .agency-fee-block .agency-fee-field {
  position: relative; }

.savings .agency-fee-block .agency-fee-field span {
  font-size: 28px;
  color: #FFFFFF;
  position: absolute;
  left: 68;
  top: 10; }

@media screen and (max-width: 39.9375em) {
  .savings .agency-fee-block {
    width: 100%; }
  .savings .agency-fee-block input {
    width: 100%; } }

.savings .savings-sum {
  display: block; }

.savings .savings-sum .you-will-save {
  display: inline-block;
  font-size: 28px !important;
  color: #FFFFFF;
  opacity: 0.8;
  padding-bottom: 15px;
  vertical-align: middle; }

@media screen and (max-width: 39.9375em) {
  .savings .savings-sum .you-will-save {
    margin: 0;
    padding: 0;
    display: block;
    width: 100%;
    text-align: center; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .savings .savings-sum .you-will-save {
    margin: 0;
    padding: 0;
    display: block;
    width: 100%;
    text-align: center; } }

.savings .savings-sum .savings-field {
  position: relative;
  display: inline-block;
  margin-left: 10px; }

@media screen and (max-width: 39.9375em) {
  .savings .savings-sum .savings-field {
    margin: 0;
    text-align: center;
    width: 100%;
    display: block; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .savings .savings-sum .savings-field {
    margin: 0;
    width: 100%;
    display: block;
    text-align: center; } }

.savings .savings-sum .savings-field span {
  display: inline-block;
  top: 5;
  left: 3;
  color: #FFFFFF;
  font-size: 72px;
  font-weight: bold; }

.savings .savings-sum .savings-field p {
  display: inline-block;
  color: #FFFFFF;
  font-size: 72px;
  font-weight: bold;
  line-height: 0; }

.confirmation-checklist .checklist-block .checklist-cta img {
  width: 91px;
  height: 91px;
  display: inline;
  float: left;
  margin: 20px 20px 0 0; }

.confirmation-checklist .checklist-block .checklist-cta .payment-confirm {
  display: inline-block; }

.confirmation-checklist .checklist-block .checklist-cta .payment-confirm h1 {
  font-size: 64px !important;
  font-weight: bold !important;
  color: #37474F;
  letter-spacing: 0.66px; }

.confirmation-checklist .checklist-block .checklist-cta .payment-confirm p {
  font-size: 16px;
  color: #73848D;
  letter-spacing: 0.2px; }

.confirmation-checklist .checklist-block .checklist-requirements {
  margin: 50px 0; }

@media screen and (max-width: 39.9375em) {
  .confirmation-checklist .checklist-block .checklist-requirements {
    margin-top: 10px;
    margin: 10px auto 0 auto; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .confirmation-checklist .checklist-block .checklist-requirements {
    margin-top: 10px;
    margin: 10px auto 0 auto; } }

.confirmation-checklist .checklist-block .checklist-requirements .checklist-img {
  height: 261px;
  width: 233px;
  margin: 0 auto;
  display: block; }

@media screen and (max-width: 39.9375em) {
  .confirmation-checklist .checklist-block .checklist-requirements .checklist-img {
    margin-bottom: 50px; } }

.confirmation-checklist .checklist-block .checklist-requirements .requriement-block {
  margin-bottom: 50px;
  display: block; }

.confirmation-checklist .checklist-block .checklist-requirements .requriement-block .check {
  width: 20px;
  height: 18px;
  float: left;
  margin-top: 5px;
  margin-right: 10px;
  display: inline-block; }

.confirmation-checklist .checklist-block .checklist-requirements .requriement-block h3 {
  font-size: 22px !important;
  color: #37474F !important;
  letter-spacing: 0.22px;
  font-weight: bold !important;
  display: inline-block; }

.confirmation-checklist .checklist-block .checklist-requirements .requriement-block p {
  margin-left: 30px;
  color: #37474F; }

@media screen and (max-width: 39.9375em) {
  .confirmation-checklist .checklist-block .checklist-requirements .requriement-block p {
    margin-left: 0; } }

.listing-about {
  padding: 0 20px; }

@media screen and (max-width: 39.9375em) {
  .listing-about {
    padding: 0px; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .listing-about {
    padding: 0px; } }

.listing-about .personal-details,
.listing-about .address,
.listing-about .photo-identification,
.listing-about .owners-section {
  padding: 40px 0;
  border-bottom: solid 2px #ECECEC; }

.listing-about .address-block {
  font-family: imovehome;
  font-size: 16px;
  color: #37474F;
  letter-spacing: 0.16px;
  line-height: 23px;
  margin-top: 60px;
  width: 170px; }

.listing-about .personal-details h3 {
  margin: 20px 0; }

.listing-about .personal-details .login-option {
  color: #37474F;
  margin: 10px 0; }

.listing-about .personal-details .login-option a {
  color: #192154;
  text-decoration: underline; }

.listing-about .address h3 {
  margin-bottom: 20px; }

.listing-about .address input[type="checkbox"] {
  display: inline-block; }

.listing-about .address .html-select-response {
  color: #00deb6; }

.listing-about .address .valuation-error {
  color: #00deb6; }

.listing-about .photo-identification {
  color: #000000; }

.listing-about .photo-identification span {
  font-size: 48px;
  color: #000000;
  vertical-align: middle;
  margin-right: 40px; }

.listing-about .photo-identification .image-controls {
  margin: 0;
  padding: 0;
  display: inline-block; }

.listing-about .photo-identification .image-controls .icon-cross {
  font-size: 30px;
  color: red;
  cursor: pointer; }

.listing-details .property-type-section {
  margin: 10px 0 30px 0; }

.listing-details .property-type-section select {
  float: left; }

.listing-details .rooms-section {
  margin: 30px 0; }

.listing-details .rooms-section ul {
  margin: 0px;
  padding: 0px; }

.listing-details .rooms-section ul li {
  display: inline-block;
  width: 184px; }

@media screen and (max-width: 39.9375em) {
  .listing-details .rooms-section ul li {
    width: 110px;
    text-align: center; } }

.listing-details .rooms-section .room-block {
  display: inline-block;
  margin-right: 20px; }

.listing-details .rooms-section .room-block h3 {
  white-space: nowrap; }

.listing-details .rooms-section .room-block .room-box {
  width: 104px;
  height: 78px;
  background: #FCFCFC;
  border: 2px solid #9A9A9A;
  border-radius: 2px;
  font-size: 18px;
  color: #262C3D;
  letter-spacing: 0.18px;
  text-align: center;
  padding: 10px 5px;
  cursor: pointer; }

.listing-details .rooms-section .room-block .room-box input {
  height: 22px;
  width: 100%;
  text-align: center;
  border: 1px solid #262C3D;
  box-shadow: none;
  margin: 15px auto;
  padding: 0px; }

.listing-details .rooms-section .room-block .room-box:hover {
  transition: all 0.2s;
  border-color: #00deb6; }

.listing-details .rooms-section .room-block .room-box:hover input {
  border: 1px solid #00deb6; }

@media screen and (max-width: 39.9375em) {
  .listing-details .rooms-section .room-block {
    margin: 10px 0; }
  .listing-details .rooms-section .room-block input {
    width: 100%; }
  .listing-details .rooms-section .room-block:nth-child(2) {
    margin-left: 0px !important; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .listing-details .rooms-section .room-block input {
    width: 100%; } }

.listing-details .features-section .features {
  list-style-type: none;
  border-radius: 5px;
  margin: 0px; }

.listing-details .features-section .features .feature {
  border: solid 2px #00deb6;
  padding: 5px;
  margin: 5px;
  border-radius: 5px;
  display: inline-block;
  color: #00deb6;
  transition: all 0.2s;
  font-weight: bold;
  cursor: pointer; }

.listing-details .features-section .features .feature-selected {
  background: #00deb6;
  color: #FFFFFF; }

.listing-details .leading-introduction-section,
.listing-details .main-description-section {
  width: 100%;
  display: block;
  margin: 30px 0; }

.listing-details .leading-introduction-section .sub-heading,
.listing-details .main-description-section .sub-heading {
  color: #37474F;
  font-weight: bold;
  font-size: 16px; }

.listing-details .leading-introduction-section trix-editor,
.listing-details .main-description-section trix-editor {
  min-height: 113px;
  color: #37474F; }

.listing-details .leading-introduction-section .word-count,
.listing-details .main-description-section .word-count {
  font-weight: bold;
  color: #192154;
  font-size: 18px;
  float: right;
  margin: 10px 0; }

.listing-details .text-count {
  font-weight: bold;
  color: #192154;
  font-size: 16px; }

.listing-details .epc-section {
  padding: 10px 0 40px 0;
  border-bottom: solid 2px #ECECEC; }

.listing-details .epc-section .image-controls {
  margin: 0;
  padding: 0;
  display: inline-block;
  color: #000000; }

.listing-details .epc-section .image-controls .icon-trash3 {
  font-size: 30px;
  vertical-align: middle;
  color: red;
  cursor: pointer; }

.listing-details .epc-section .head,
.listing-details .epc-section .sub-heading {
  display: inline-block;
  font-size: 14px;
  color: #737373;
  letter-spacing: 0.21px; }

.listing-details .epc-section .head {
  margin-right: 20px;
  font-weight: bold !important;
  font-size: 18px !important;
  color: #37474F !important;
  letter-spacing: 0.18px; }

.listing-details .epc-section .upload-epc-heading {
  font-size: 14px;
  color: #737373;
  letter-spacing: 0.21px; }

@media screen and (max-width: 39.9375em) {
  .listing-details .epc-section .upload-epc-heading {
    margin: 20px 0; } }

.listing-details .epc-section .epc-icon {
  height: 60px;
  display: inline-block; }

.listing-details .epc-section .epc-register-link {
  color: #37474F;
  font-weight: bold;
  text-decoration: underline; }

.listing-details .epc-section .epc-register-link:hover {
  color: #0d1113; }

.listing-details .epc-section .upload-epc-btn {
  padding: 20px 46px !important; }

.listing-details .epc-section .order-epc-block {
  display: block;
  border: solid 2px #000000;
  border-radius: 2px;
  height: 62px;
  text-align: center; }

.listing-details .epc-section .order-epc-block p {
  margin: 0px; }

.listing-details .epc-section .order-epc-block .price,
.listing-details .epc-section .order-epc-block .item,
.listing-details .epc-section .order-epc-block .imh-btn-secondary {
  display: inline-block; }

.listing-details .epc-section .order-epc-block .price {
  background-color: #000000;
  height: 100%;
  font-weight: bold;
  font-size: 36px;
  color: #FFFFFF;
  letter-spacing: 0.37px;
  padding: 0 20px;
  float: left; }

.listing-details .epc-section .order-epc-block .item {
  font-weight: bold;
  font-size: 18px;
  color: #37474F;
  letter-spacing: 0.18px;
  margin-top: 16px;
  margin-left: 20px;
  float: left; }

.listing-details .epc-section .order-epc-block .imh-btn-secondary {
  margin: 4px;
  min-width: 0px;
  float: right; }

@media screen and (max-width: 39.9375em) {
  .listing-details .epc-section .order-epc-block .imh-btn-secondary {
    margin: 15px 0; } }

@media screen and (min-width: 40em) {
  .listing-details .epc-section .order-epc-block .imh-btn-secondary {
    margin: 4px; } }

.listing-extras .extras-list-section .extra-added {
  border: solid 3px #00deb6 !important;
  border-radius: 2px; }

.listing-extras .extras-list-section .item-lg {
  border: 2px solid #FFFFFF;
  color: #FFFFFF; }

.listing-extras .extras-list-section .item-lg p {
  margin: 0px;
  padding: 0px; }

.listing-extras .extras-list-section .item-lg .name {
  font-size: 18px;
  letter-spacing: 0.18px;
  font-weight: bold;
  margin-top: 14px;
  text-transform: uppercase; }

.listing-extras .extras-list-section .item-lg .price {
  font-weight: bold;
  font-size: 36px;
  color: #FFFFFF;
  letter-spacing: 0.37px; }

.listing-extras .extras-list-section .imh-listing-fee {
  background: #00deb6;
  height: 100px;
  padding: 20px 15px; }

.listing-extras .extras-list-section .extra {
  position: relative;
  display: block;
  width: 100%;
  margin: 25px 0;
  padding: 20px;
  border: solid 1px #ABABAB;
  border-radius: 2px; }

.listing-extras .extras-list-section .extra .icon,
.listing-extras .extras-list-section .extra .item {
  display: table-cell;
  vertical-align: middle; }

@media screen and (max-width: 39.9375em) {
  .listing-extras .extras-list-section .extra .icon,
  .listing-extras .extras-list-section .extra .item {
    width: 100% !important;
    display: block;
    padding: 0px !important; } }

.listing-extras .extras-list-section .extra .icon {
  width: 120px; }

.listing-extras .extras-list-section .extra .icon img {
  padding: 0 10px; }

.listing-extras .extras-list-section .extra .icon .rightmove-logo {
  height: 29px;
  margin: 10px 0; }

.listing-extras .extras-list-section .extra .icon .zoopla-logo {
  height: 20px;
  margin: 10px 0; }

.listing-extras .extras-list-section .extra .icon .for-sale-logo {
  height: 69px; }

.listing-extras .extras-list-section .extra .icon .floor-plan {
  height: 72px; }

.listing-extras .extras-list-section .extra .icon .camera {
  height: 48px; }

.listing-extras .extras-list-section .extra .icon .mortage {
  height: 56px; }

.listing-extras .extras-list-section .extra .item {
  padding-right: 150px;
  margin: 20px 0; }

.listing-extras .extras-list-section .extra .item .extra-title {
  font-weight: bold;
  font-size: 16px;
  color: #37474F;
  letter-spacing: 0.16px;
  font-weight: bold; }

.listing-extras .extras-list-section .extra .item .extra-description {
  font-weight: bold;
  font-size: 14px;
  color: #7F8A90;
  letter-spacing: 0.14px;
  line-height: 22px; }

.listing-extras .extras-list-section .extra .price-block {
  width: 125px;
  position: absolute;
  right: 15px;
  top: 50px; }

@media screen and (max-width: 39.9375em) {
  .listing-extras .extras-list-section .extra .price-block {
    width: 100% !important;
    position: initial;
    display: block; } }

.listing-extras .extras-list-section .extra .price-block .price {
  background: #00deb6;
  box-shadow: 0px 2px 0px 0px #00ab8c;
  border-radius: 2px;
  color: #FFFFFF;
  font-size: 18px;
  font-weight: bold;
  width: 124px;
  margin: 0px !important;
  height: 34px;
  transition: background-color 0.5s; }

@media screen and (max-width: 39.9375em) {
  .listing-extras .extras-list-section .extra .price-block .price {
    width: 100% !important; } }

.listing-extras .extras-list-section .extra .price-block .price:hover {
  transition: background-color 0.5s;
  background-color: #00ab8c; }

.listing-extras .extras-list-section .extra .price-block .price .add {
  font-size: 14px;
  font-weight: bold;
  display: inline-block;
  text-align: right;
  margin-left: 27px; }

.listing-extras .extras-list-section .extra .price-block .price-remove {
  background: #73848D;
  box-shadow: 0px 2px 0px 0px #4B5A62;
  border-radius: 2px;
  color: #FFFFFF;
  font-weight: bold;
  font-size: 18px;
  width: 124px;
  height: 34px;
  margin: 0px !important;
  transition: background-color 0.5s; }

.listing-extras .extras-list-section .extra .price-block .price-remove:hover {
  transition: background-color 0.5s;
  background-color: #000000; }

.listing-extras .extras-list-section .premium {
  border: 3px solid #192154;
  border-radius: 2px; }

.listing {
  margin-top: 1px;
  border-top: solid 5px #192154;
  background-image: linear-gradient(120deg, #91C4FF 0%, #F0F7FF 87%);
  position: relative;
  padding-bottom: 50px; }

.listing .cloud-scroll {
  background: url(/src/assets/images/imovehome/clouds.png) repeat-x;
  top: 50px;
  left: 0;
  width: 100%;
  height: 50%;
  background-size: cover;
  position: absolute;
  -webkit-animation: 900000s backgroundScroll infinite linear;
  -moz-animation: 900000s backgroundScroll infinite linear;
  -o-animation: 900000s backgroundScroll infinite linear;
  -ms-animation: 900000s backgroundScroll infinite linear;
  animation: 900000s backgroundScroll infinite linear; }

@-webkit-keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

@keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

.listing .resume-listing {
  background-color: #FFFFFF;
  padding: 25px;
  border-radius: 5px;
  margin: 50px 0 150px 0;
  position: relative;
  z-index: 1; }

.listing .resume-listing h3 {
  font-size: 30px !important; }

.listing .resume-listing p {
  color: #37474F; }

.listing .resume-listing .listing-postcode {
  color: #00deb6;
  font-weight: bold; }

.listing .tab-content > .tab-pane {
  display: block;
  visibility: hidden; }

.listing .tab-content > .tab-pane.active {
  visibility: visible; }

.listing .menu-container {
  overflow: hidden;
  position: relative; }

.listing .menu-container .menu,
.listing .menu-container .menu-content {
  margin-bottom: -99999px;
  padding-bottom: 99999px; }

.listing .menu-container .menu {
  background: #192154 !important;
  min-height: 1000px; }

.listing .menu-container .menu-content {
  background: #FFFFFF; }

@media screen and (max-width: 39.9375em) {
  .listing .menu-container .menu,
  .listing .menu-container .menu-content {
    margin: 0px;
    padding: 0px; }
  .listing .menu-container .menu {
    background: none !important;
    min-height: auto; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .listing .menu-container .menu,
  .listing .menu-container .menu-content {
    margin: 0px;
    padding: 0px; }
  .listing .menu-container .menu {
    background: none !important;
    min-height: auto; } }

.listing #steps-menu {
  background: #192154 !important;
  height: 100%;
  margin: 0;
  padding: 20px 0;
  border: 0px !important; }

.listing #steps-menu .disabledTab a {
  opacity: 0.3; }

.listing #steps-menu .disabledTab a:hover {
  box-shadow: none; }

.listing #steps-menu .disabledTab a:hover .oval {
  border: solid 2px #FFFFFF; }

.listing #steps-menu .step {
  background: #192154;
  color: #FFFFFF;
  margin: 10px 0;
  min-height: 46px;
  width: 100%;
  cursor: pointer;
  outline: none !important;
  transition: all 0.2s;
  padding: 0px !important; }

.listing #steps-menu .step:hover {
  box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.12), 0 1px 2px -2px rgba(0, 0, 0, 0.24);
  transition: all 0.2s; }

.listing #steps-menu .step a {
  color: #FFFFFF !important;
  font-size: 16px;
  display: block;
  width: 100%;
  position: relative;
  outline: none !important;
  text-decoration: none; }

.listing #steps-menu .step a:hover {
  background: none !important; }

.listing #steps-menu .step a:focus {
  background: none !important; }

.listing #steps-menu .step a .arrow {
  width: 0;
  height: 0;
  border-top: 15px solid transparent;
  border-bottom: 15px solid transparent;
  border-right: 15px solid #FFFFFF;
  display: none;
  transition: all 0.5s;
  position: absolute;
  right: -1;
  top: 13px;
  margin-left: 5px; }

.listing #steps-menu .step a:active,
.listing #steps-menu .step a[aria-selected='true'] {
  background: none !important; }

.listing #steps-menu .step a:active .arrow,
.listing #steps-menu .step a[aria-selected='true'] .arrow {
  display: block;
  transition: all 0.5s; }

@media screen and (max-width: 39.9375em) {
  .listing #steps-menu {
    height: auto !important;
    margin: 0;
    padding: 20px 0;
    border: 0px !important; }
  .listing #steps-menu .step {
    width: auto;
    display: inline-block; }
  .listing #steps-menu .step a:active,
  .listing #steps-menu .step a[aria-selected='true'] {
    background: none !important; }
  .listing #steps-menu .step a:active .oval,
  .listing #steps-menu .step a[aria-selected='true'] .oval {
    border: solid 2px #00deb6;
    transition: border 0.5s; }
  .listing #steps-menu .step a:active .arrow,
  .listing #steps-menu .step a[aria-selected='true'] .arrow {
    display: none;
    transition: all 0.5s; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .listing #steps-menu {
    height: auto !important;
    margin: 0;
    padding: 20px 0;
    border: 0px !important; }
  .listing #steps-menu .step {
    width: auto;
    display: inline-block; }
  .listing #steps-menu .step a:active,
  .listing #steps-menu .step a[aria-selected='true'] {
    background: none !important; }
  .listing #steps-menu .step a:active .oval,
  .listing #steps-menu .step a[aria-selected='true'] .oval {
    border: solid 2px #00deb6;
    transition: border 0.5s; }
  .listing #steps-menu .step a:active .arrow,
  .listing #steps-menu .step a[aria-selected='true'] .arrow {
    display: none;
    transition: all 0.5s; } }

.listing .tabs-content {
  border: 0px !important; }

.listing .tabs-content .tabs-panel {
  margin: 1em 0; }

@keyframes border-pulsate {
  0% {
    border: solid 2px #00deb6; }
  50% {
    border: solid 2px #FFFFFF; }
  100% {
    border: solid 2px #00deb6; } }

.listing .heading {
  border-bottom: solid 2px #FFFFFF; }

.listing .heading h1 {
  font-size: 36px;
  font-weight: bold;
  color: #000000;
  padding: 0;
  margin: 0; }

.listing .heading p {
  font-size: 18px;
  color: #37474F !important; }

.listing .house-banner {
  width: 100%;
  height: 356px;
  position: relative;
  text-align: center; }

.listing .house-banner img {
  object-fit: cover;
  object-position: center;
  height: 277px;
  margin-top: 80px; }

.listing input,
.listing select {
  border: solid 2px #bbbbbb;
  border-radius: 5px;
  padding: 0 20px;
  font-size: 16px;
  color: #37474F;
  letter-spacing: 0.16px;
  height: 51px;
  transition: all 0.2s;
  font-weight: bold; }

.listing input:focus,
.listing select:focus {
  transition: all 0.2s;
  border: solid 2px #192154;
  color: #192154;
  font-weight: bold; }

.listing h3 {
  font-weight: bold !important;
  font-size: 18px !important;
  color: #37474F !important;
  letter-spacing: 0.18px;
  width: 100%; }

.listing .imh-btn-secondary .navigate-back {
  position: relative;
  padding: 15px 32px;
  margin: 2px 0; }

.listing .imh-btn-secondary .navigate-back span {
  position: absolute;
  right: 5px;
  top: 14px;
  font-weight: bold;
  font-size: 21px; }

.listing .step {
  padding: 40px 0;
  margin-bottom: 40px; }

.listing .step .imh-btn-secondary {
  float: right !important; }

.listing .step .imh-btn-muted {
  float: left !important; }

.listing-pay .error-message-container {
  margin: 20px 0; }

.listing-pay .step-heading {
  font-size: 18px;
  color: #73848D !important; }

.listing-pay .item {
  padding-top: 20px;
  padding-bottom: 20px;
  border-bottom: solid 2px #ECECEC; }

.listing-pay .item p {
  margin: 0px;
  padding: 0px; }

.listing-pay .item .name {
  font-size: 18px;
  color: #262C3D;
  letter-spacing: 0.18px;
  margin-top: 6px; }

.listing-pay .item .price {
  font-size: 24px;
  color: #262C3D;
  letter-spacing: 0.24px; }

.listing-pay .item .icon-trash3 {
  color: #ff0000;
  cursor: pointer;
  font-size: 16px;
  margin: 10px 0 0 11px;
  transition: all 0.2s; }

.listing-pay .item .delete-confirm {
  background: #ff0000;
  cursor: pointer;
  font-size: 16px;
  margin: 0 0 0 11px;
  padding: 5px;
  border-radius: 5px;
  transition: all 0.2s;
  font-weight: bold; }

.listing-pay .item .delete-confirm:hover {
  background-color: #cc0000; }

.listing-pay .item-lg {
  border: 2px solid #FFFFFF;
  color: #FFFFFF;
  padding-top: 20px;
  padding-bottom: 20px; }

.listing-pay .item-lg p {
  margin: 0px;
  padding: 0px; }

.listing-pay .item-lg .name {
  font-size: 18px;
  letter-spacing: 0.18px;
  font-weight: bold;
  margin-top: 14px;
  text-transform: uppercase; }

.listing-pay .item-lg .price {
  font-weight: bold;
  font-size: 36px;
  color: #FFFFFF;
  letter-spacing: 0.37px; }

.listing-pay .imh-listing-fee {
  background: #00deb6; }

.listing-pay .total {
  background: #192154; }

.listing-pay .more-extras {
  margin: 20px 0; }

.listing-pay .more-extras a {
  color: #37474F;
  font-weight: bold;
  text-decoration: underline; }

.listing-pay .more-extras a:hover {
  color: #0d1113; }

/**
 * The CSS shown here will not be introduced in the Quickstart guide, but shows
 * how you can use CSS to style your Element's container.
 */
.StripeElement {
  background-color: white;
  padding: 8px 12px;
  border-radius: 4px;
  border: 1px solid transparent;
  box-shadow: 0 1px 3px 0 #e6ebf1;
  -webkit-transition: box-shadow 150ms ease;
  transition: box-shadow 150ms ease; }

.StripeElement--focus {
  box-shadow: 0 1px 3px 0 #cfd7df; }

.StripeElement--invalid {
  border-color: #ff0000; }

.StripeElement--webkit-autofill {
  background-color: #fefde5 !important; }

#card-errors {
  margin: 10px 0;
  color: #ff0000; }

.payment-section {
  padding: 40px 0;
  border-bottom: solid 2px #ECECEC; }

.payment-section .card-logos {
  list-style-type: none;
  margin: 10px 0;
  padding: 0;
  float: right; }

.payment-section .card-logos li {
  display: inline; }

.payment-section p {
  font-size: 20px;
  font-weight: bold;
  color: #262C3D;
  letter-spacing: 0.2px; }

.payment-section .icon-lock {
  font-size: 64px;
  color: #73848D; }

@media screen and (max-width: 39.9375em) {
  .payment-section .icon-lock {
    margin: 10px 0; } }

#payment-form .terms {
  margin: 10px 0; }

#payment-form .terms p,
#payment-form .terms input[type="checkbox"] {
  display: inline-block !important;
  height: auto !important; }

#payment-form .terms p {
  font-size: 14px;
  font-weight: bold;
  color: #73848D;
  letter-spacing: 0.14px; }

#payment-form .terms p a {
  color: #192154;
  text-decoration: underline; }

#payment-form .terms p a:hover {
  color: black; }

#payment-form .activate-listing {
  padding: 40px 0; }

#payment-form .activate-listing .checklist {
  height: 183px;
  display: block;
  float: left; }

#payment-form .imh-btn-navigate {
  margin: 10px 0;
  float: right;
  height: 78px;
  width: 343px;
  font-size: 28px;
  color: #FFFFFF;
  letter-spacing: 0.29px; }

@media screen and (max-width: 39.9375em) {
  #payment-form .checklist {
    margin-bottom: 20px; } }

.payment-confirmation {
  padding: 40px 0;
  border-bottom: solid 2px #ECECEC; }

.payment-confirmation p {
  color: #37474F; }

.photo-identification {
  color: #000000; }

.photo-identification span {
  font-size: 48px;
  color: #000000;
  vertical-align: middle;
  margin-right: 40px; }

.photo-identification .image-controls {
  margin: 0;
  padding: 0;
  display: inline-block; }

.photo-identification .image-controls .icon-trash3 {
  font-size: 30px;
  color: red;
  cursor: pointer; }

.upload-listing-block {
  padding: 20px;
  display: block;
  position: relative; }

.upload-listing-block .zoopla-progress-block,
.upload-listing-block .rightmove-progress-block {
  text-align: center;
  padding: 40px;
  border: solid 3px #00deb6;
  border-radius: 5px;
  display: inline-block;
  width: 100%;
  height: 280px;
  margin: 40px 0; }

.upload-listing-block .zoopla-progress-block img,
.upload-listing-block .rightmove-progress-block img {
  width: 170px;
  height: 50px; }

.listing-preview .preview-section {
  margin: 40px 0; }

.listing-preview .preview-section .preview-card {
  border-radius: 5px;
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
  padding: 0 0 40px; }

.listing-preview .preview-section .preview-card .card-title {
  background-color: #192154;
  border-radius: 5px 5px 0 0;
  color: #FFFFFF;
  padding: 10px 30px; }

.listing-preview .preview-section .preview-card .card-title .preview-address {
  color: #FFFFFF;
  font-weight: bold;
  font-size: 20px !important;
  letter-spacing: 0.24px;
  width: 100%;
  display: block;
  margin-bottom: 10px; }

.listing-preview .preview-section .preview-card .card-title .preview-address p {
  margin: 0; }

.listing-preview .preview-section .preview-card .card-title .preview-address .icon-home {
  font-size: 25px; }

.listing-preview .preview-section .preview-card .card-title .price {
  font-weight: bold;
  font-size: 25px !important;
  color: #FFFFFF;
  letter-spacing: 0.24px;
  display: block;
  width: 100%; }

.listing-preview .preview-section .preview-card .card-title .price p {
  margin: 0; }

.listing-preview .preview-section .focus-image {
  height: 350px;
  width: 100%;
  margin: 10px 0;
  padding: 0 10px; }

.listing-preview .preview-section .focus-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center; }

.listing-preview .preview-section .owl-carousel {
  position: relative;
  display: block;
  padding: 0 10px; }

.listing-preview .preview-section .owl-carousel .owl-nav .owl-prev,
.listing-preview .preview-section .owl-carousel .owl-nav .owl-next {
  width: 50%;
  display: inline-block;
  color: #192154;
  font-weight: bold;
  text-transform: capitalize; }

.listing-preview .preview-section .owl-carousel .owl-nav .owl-prev {
  text-align: left; }

.listing-preview .preview-section .owl-carousel .owl-nav .owl-next {
  text-align: right; }

.listing-preview .preview-section .owl-carousel .owl-nav .disabled {
  color: #37474F;
  opacity: 0.3; }

.listing-preview .preview-section .image-block {
  outline: none !important;
  cursor: pointer; }

.listing-preview .preview-section .image-block img {
  height: 140px;
  object-fit: cover;
  object-position: center;
  outline: none !important; }

.listing-preview .preview-section .room-number .rooms-section {
  margin: 30px 0;
  text-align: center; }

.listing-preview .preview-section .room-number .rooms-section .room-block {
  display: inline-block;
  text-align: center; }

.listing-preview .preview-section .room-number .rooms-section .room-block h3 {
  white-space: nowrap; }

.listing-preview .preview-section .room-number .rooms-section .room-block .room-box {
  width: 104px;
  height: 78px;
  background: #FCFCFC;
  border: 2px solid #9A9A9A;
  border-radius: 2px;
  font-family: imovehome;
  font-size: 18px;
  color: #262C3D;
  letter-spacing: 0.18px;
  text-align: center;
  padding: 10px 0; }

.listing-preview .preview-section .room-number .rooms-section .room-block .room-box p {
  font-size: 20px;
  color: #73848D;
  margin: 5px; }

.listing-preview .preview-section .preview-title {
  font-size: 14px;
  color: #262C3D;
  letter-spacing: 0.22px;
  padding: 0 50px;
  text-align: left; }

.listing-preview .preview-section .preview-title p {
  margin: 0;
  word-wrap: break-word; }

.listing-preview .preview-section .preview-description {
  padding: 0 50px;
  text-align: left; }

.listing-preview .preview-section .preview-description p {
  font-size: 13px;
  color: #73848D !important;
  letter-spacing: 0;
  line-height: 25px;
  margin-bottom: 10px;
  word-wrap: break-word; }

.listing-upload .professional-photographer-block,
.listing-upload .upload-image-block {
  padding: 40px 0;
  border-bottom: solid 2px #ECECEC; }

.listing-upload .professional-photographer-block h3 {
  margin-bottom: 20px; }

.listing-upload .professional-photographer-block .description {
  font-size: 14px;
  color: #73848D;
  margin-bottom: 20px; }

.listing-upload .professional-photographer-block .hire-professional-photographer-block {
  position: relative;
  display: block;
  min-height: 62px;
  width: 545px;
  border: solid 2px #3E4640;
  border-radius: 2px;
  margin-bottom: 30px; }

@media screen and (max-width: 39.9375em) {
  .listing-upload .professional-photographer-block .hire-professional-photographer-block {
    width: 100%; } }

.listing-upload .professional-photographer-block .hire-professional-photographer-block .price {
  font-size: 36px;
  color: #FFFFFF;
  font-weight: bold;
  background-color: #000000;
  min-height: 62px;
  padding: 0 12px; }

.listing-upload .professional-photographer-block .hire-professional-photographer-block .title {
  font-weight: bold;
  font-size: 18px;
  color: #37474F;
  letter-spacing: 0.18px;
  margin: 0 30px; }

.listing-upload .professional-photographer-block .hire-professional-photographer-block .imh-btn-secondary {
  display: block;
  margin: 20px auto; }

.listing-upload .professional-photographer-block .hire-professional-photographer-block .imh-btn-secondary span {
  font-size: 15px;
  font-weight: bold;
  margin-right: 5px; }

@media screen and (max-width: 39.9375em) {
  .listing-upload .professional-photographer-block .hire-professional-photographer-block .imh-btn-secondary {
    width: 95%;
    margin: inherit auto; } }

.listing-upload .professional-photographer-block .hire-professional-photographer-block .tooltip-info {
  margin: 15px 30px !important; }

.listing-upload .upload-image-block .upload-btn-block .imh-btn-secondary .icon-upload2 {
  font-weight: bold;
  margin-left: 5px; }

.listing-upload .upload-image-block .upload-btn-block p {
  margin-top: 15px;
  color: #73848D;
  vertical-align: center; }

.listing-upload .upload-image-block .upload-btn-block p .icon-lamp {
  color: #00deb6;
  font-size: 25px; }

.listing-upload .upload-image-block .gallery-carousel {
  margin: 20px 0; }

.listing-upload .upload-image-block .gallery-carousel .owl-carousel {
  position: relative;
  display: block;
  padding: 0 10px; }

.listing-upload .upload-image-block .gallery-carousel .owl-carousel .owl-nav .owl-next,
.listing-upload .upload-image-block .gallery-carousel .owl-carousel .owl-nav .owl-prev {
  width: 50%;
  display: inline-block;
  color: #192154;
  font-weight: bold;
  text-transform: capitalize; }

.listing-upload .upload-image-block .gallery-carousel .owl-carousel .owl-nav .owl-prev {
  text-align: left; }

.listing-upload .upload-image-block .gallery-carousel .owl-carousel .owl-nav .owl-next {
  text-align: right; }

.listing-upload .upload-image-block .gallery-carousel .owl-carousel .owl-nav .disabled {
  color: #37474F;
  opacity: 0.3; }

.listing-upload .upload-image-block .gallery-carousel .image-block {
  outline: none !important;
  cursor: pointer; }

.listing-upload .upload-image-block .gallery-carousel .image-block img {
  height: 180px;
  border-radius: 5px;
  object-fit: cover;
  object-position: center;
  outline: none !important; }

.listing-upload .upload-image-block .gallery-image-list .gallery-image {
  display: inline-block;
  cursor: move;
  height: 180px;
  width: 100%;
  margin: 10px;
  padding: 10px;
  border-radius: 5px !important;
  transition: all linear 0.2s;
  position: relative; }

.listing-upload .upload-image-block .gallery-image-list .gallery-image:active {
  border: solid 2px #27A448;
  animation: border-pulsate 2s infinite;
  transition: all linear 0.2s; }

.listing-upload .upload-image-block .gallery-image-list .gallery-image .house-image {
  border-radius: 5px !important;
  height: 100%;
  width: 100%;
  display: inline-block;
  object-fit: cover;
  object-position: center; }

.listing-upload .upload-image-block .gallery-image-list .gallery-image .image-index {
  position: absolute;
  color: #FFFFFF;
  top: 13px;
  right: 20px;
  background: #00deb6;
  border-radius: 50%;
  padding: 6px;
  height: 36px;
  width: 36px;
  text-align: center; }

.listing-upload .upload-image-block .gallery-image-list .gallery-image .cover {
  background: #00deb6;
  color: #FFFFFF;
  font-weight: bold;
  padding: 5px;
  position: absolute;
  top: 13px;
  left: 15px;
  border-radius: 5px !important; }

.listing-upload .upload-image-block .gallery-image-list .gallery-image .delete-tool {
  font-weight: bold;
  font-size: 18px;
  color: #FFFFFF;
  padding: 5px 10px !important;
  margin: 2px;
  border-radius: 5px !important;
  cursor: pointer;
  transition: all 0.2s;
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
  background: #ff0000;
  position: absolute;
  bottom: 15px;
  right: 17px; }

.listing-upload .upload-image-block .gallery-image-list .gallery-image .delete-tool:hover {
  transition: all 0.2s;
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); }

.listing-value {
  padding: 0 20px; }

@media screen and (max-width: 39.9375em) {
  .listing-value {
    padding: 0px; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .listing-value {
    padding: 0px; } }

.listing-value .estimate,
.listing-value .estimate-select {
  padding: 40px 0;
  border-bottom: solid 2px #ECECEC; }

.listing-value .estimate h3 {
  margin-bottom: 55px; }

.listing-value .estimate .estimate-input {
  position: relative;
  width: 100%;
  color: #73848D; }

.listing-value .estimate .estimate-input span {
  position: absolute;
  top: 7px;
  left: 11px;
  font-size: 25px;
  color: #000000 !important; }

.listing-value .estimate .estimate-input input[type="text"] {
  font-size: 25px !important;
  padding-left: 25px;
  color: #000000 !important;
  background-color: #FFFFFF !important; }

.listing-value .estimate-select .estimate-box {
  display: inline-block;
  position: relative;
  height: 220px;
  width: 100%;
  background: #FFFFFF;
  border: 4px solid #D7D7D7;
  border-radius: 4px;
  padding: 20px;
  transition: all 0.2s;
  cursor: pointer;
  text-align: center;
  float: left;
  margin-top: 15px;
  margin-bottom: 15px; }

@media screen and (max-width: 39.9375em) {
  .listing-value .estimate-select .estimate-box {
    float: none;
    width: 100%; } }

.listing-value .estimate-select .estimate-box .personal-valuation {
  position: relative;
  width: 100%; }

.listing-value .estimate-select .estimate-box .personal-valuation span {
  position: absolute;
  left: 5px;
  top: 14px;
  color: #000000 !important; }

.listing-value .estimate-select .estimate-box .tick {
  position: absolute;
  top: -15px;
  height: 24px;
  width: 24px;
  left: 45%;
  display: none; }

.listing-value .estimate-select .estimate-box .logo {
  object-position: center;
  margin: 10px 0; }

.listing-value .estimate-select .estimate-box .price {
  font-size: 25px;
  margin: 10px 0;
  color: #37474F; }

.listing-value .estimate-select .estimate-box:nth-child(2) {
  margin-left: 40px; }

@media screen and (max-width: 39.9375em) {
  .listing-value .estimate-select .estimate-box:nth-child(2) {
    margin-left: 0px; } }

.listing-value .estimate-select .estimate-box .title {
  font-weight: bold;
  font-size: 18px;
  height: 69px;
  color: #37474F;
  letter-spacing: 0.18px;
  font-weight: bold; }

.listing-value .estimate-select .estimate-box:hover {
  border: 4px solid #00deb6;
  transition: all 0.2s; }

.listing-value .estimate-select .estimate-box:hover .tick {
  display: block; }

.listing-value .estimate-select .estimate-box-selected {
  border: 4px solid #00deb6;
  transition: all 0.2s; }

.listing-value .estimate-select .estimate-box-selected .tick {
  display: block; }

.navigation-main .burger-menu {
  display: inline-block; }

@media print, screen and (min-width: 40em) {
  .navigation-main .burger-menu {
    display: none; } }

.navigation-main .no-js [data-responsive-menu] ul {
  display: none; }

.navigation-main .top-bar {
  background-color: #FFFFFF !important;
  padding: 0; }

.navigation-main .top-bar .top-bar-title {
  margin-top: 8px; }

@media screen and (max-width: 39.9375em) {
  .navigation-main .top-bar .top-bar-title {
    margin-top: 0px;
    width: 100%;
    text-align: center; }
  .navigation-main .top-bar .top-bar-title .burger-menu {
    float: left;
    margin-top: 10px; } }

.navigation-main .top-bar .top-bar-title .logo {
  object-fit: contain;
  height: 33px; }

.navigation-main .top-bar .get-valuation {
  display: block;
  position: relative;
  text-align: center; }

.navigation-main .top-bar .get-valuation:hover {
  color: #FFFFFF; }

@media screen and (max-width: 39.9375em) {
  .navigation-main .top-bar .get-valuation {
    margin: 10px 0; } }

.navigation-main .top-bar .contact-details p {
  display: inline-block;
  color: #37474F;
  font-weight: bold;
  margin: 0 10px;
  vertical-align: center; }

@media screen and (max-width: 39.9375em) {
  .navigation-main .top-bar .contact-details {
    margin: 10px 0; } }

.navigation-main .top-bar #responsive-menu .navbar-imh-btn {
  min-width: 165px; }

.navigation-main .top-bar #responsive-menu .top-bar-right {
  position: relative;
  z-index: 2; }

.navigation-main .top-bar #responsive-menu .top-bar-right ul {
  background-color: #FFFFFF !important; }

.navigation-main .top-bar #responsive-menu .top-bar-right ul li a {
  color: #485E69 !important;
  font-size: 16px !important;
  text-decoration: none; }

.navigation-main .top-bar #responsive-menu .top-bar-right ul li a:hover {
  color: #192154 !important; }

.dashboard .heading h2 {
  color: #485E69;
  font-weight: bold; }

.dashboard .listings-container {
  margin-top: 50px; }

.dashboard .property-list {
  margin-bottom: 70px; }

.dashboard .property-list .property-section-title {
  margin-bottom: 10px;
  padding: 10px;
  font-size: 30px;
  color: #FFFFFF;
  font-weight: bold; }

.dashboard .property-list .normal-section {
  background: #192154;
  box-shadow: 0 3px 0 0 black; }

.dashboard .property-list .danger-section {
  background: #ff0000 !important;
  box-shadow: 0 3px 0 0 maroon; }

.dashboard .property-list .property {
  position: relative;
  transition: all 0.2s;
  height: 300px;
  width: 100%;
  display: inline-block;
  margin: 10px 0;
  background-image: url("/src/assets/images/imovehome/imh-placeholder.png");
  background-position: center;
  background-size: cover;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); }

@media screen and (max-width: 39.9375em) {
  .dashboard .property-list .property {
    margin: 10px 0; } }

.dashboard .property-list .property:hover {
  cursor: pointer; }

.dashboard .property-list .property:hover .property-tools {
  display: block;
  transition: all 0.2s; }

.dashboard .property-list .property:hover .hover-background {
  display: block; }

.dashboard .property-list .property img {
  height: 100%;
  width: 100%;
  object-fit: cover;
  object-position: center;
  background: url("/src/assets/images/imovehome/imh-placeholder.png");
  background-position: center;
  background-size: cover; }

.dashboard .property-list .property .listing-info {
  position: absolute;
  top: 0;
  background-color: #00deb6;
  color: #FFFFFF;
  width: 100%;
  padding: 10px; }

.dashboard .property-list .property .listing-info p {
  font-size: 16px;
  margin: 0;
  color: #FFFFFF;
  font-weight: bold; }

.dashboard .property-list .property .hover-background {
  display: none;
  position: absolute;
  top: 0;
  height: 100%;
  width: 100%;
  background: rgba(55, 71, 79, 0.65); }

.dashboard .property-list .property .property-tools {
  text-align: center;
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  display: none;
  transition: all 0.2s; }

.dashboard .property-list .property .property-tools .tool {
  color: #FFFFFF;
  font-weight: bold;
  font-size: 20px;
  padding: 5px 10px !important;
  margin: 2px;
  border-radius: 5px !important;
  cursor: pointer;
  transition: all 0.2s;
  text-decoration: none; }

.dashboard .property-list .property .property-tools .tool-warning {
  background: #ff0000; }

.dashboard .property-list .property .property-tools .tool-warning:hover {
  transition: all 0.2s;
  background-color: #cc0000; }

.dashboard .property-list .property .property-tools .tool-edit {
  background: #192154; }

.dashboard .property-list .property .property-tools .tool-edit:hover {
  transition: all 0.2s;
  background-color: #0d122d; }

.dashboard .property-list .property .property-tools .tool-view {
  background: #00deb6; }

.dashboard .property-list .property .property-tools .tool-view:hover {
  transition: all 0.2s;
  background-color: #00ab8c; }

.dashboard .property-list .view-all {
  float: right; }

#property-edit .preview-card {
  border-radius: 5px;
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); }

#property-edit .preview-card .not-found-message {
  color: #37474F; }

#property-edit .preview-card .card-title {
  background-color: #192154;
  border-radius: 5px 5px 0 0;
  color: #FFFFFF;
  padding: 10px 30px; }

#property-edit .preview-card .card-title .preview-address {
  color: #FFFFFF;
  font-weight: bold;
  font-size: 20px !important;
  letter-spacing: 0.24px;
  display: inline-block;
  margin-bottom: 10px; }

#property-edit .preview-card .card-title .preview-address p {
  margin: 0; }

#property-edit .preview-card .card-title .preview-address .icon-home {
  font-size: 25px; }

#property-edit .preview-card .card-title .price {
  font-weight: bold;
  font-size: 25px !important;
  color: #FFFFFF;
  letter-spacing: 0.24px;
  display: block;
  width: 100%; }

#property-edit .preview-card .card-title .price p {
  margin: 0; }

#property-edit .preview-card .card-title .imh-btn-primary {
  display: inline-block;
  margin-top: 15px; }

#property-edit .edit-property-form {
  padding: 20px 15px;
  background: #FFFFFF; }

#property-edit .edit-property-form .focus-image {
  margin: 10px 0;
  height: 350px;
  width: 100%; }

#property-edit .edit-property-form .focus-image img {
  height: 100%;
  width: 100%;
  object-fit: cover;
  object-position: center; }

#property-edit .edit-property-form .house-images-section {
  margin: 20px 0; }

#property-edit .edit-property-form .house-images-section .gallery-carousel {
  margin: 20px 0; }

#property-edit .edit-property-form .house-images-section .gallery-carousel .owl-carousel {
  position: relative;
  display: block;
  padding: 0 10px; }

#property-edit .edit-property-form .house-images-section .gallery-carousel .owl-carousel .owl-nav .owl-next,
#property-edit .edit-property-form .house-images-section .gallery-carousel .owl-carousel .owl-nav .owl-prev {
  width: 50%;
  display: inline-block;
  color: #192154;
  font-weight: bold;
  text-transform: capitalize; }

#property-edit .edit-property-form .house-images-section .gallery-carousel .owl-carousel .owl-nav .owl-prev {
  text-align: left; }

#property-edit .edit-property-form .house-images-section .gallery-carousel .owl-carousel .owl-nav .owl-next {
  text-align: right; }

#property-edit .edit-property-form .house-images-section .gallery-carousel .owl-carousel .owl-nav .disabled {
  color: #37474F;
  opacity: 0.3; }

#property-edit .edit-property-form .house-images-section .gallery-carousel .image-block {
  outline: none !important;
  cursor: pointer; }

#property-edit .edit-property-form .house-images-section .gallery-carousel .image-block img {
  height: 180px;
  border-radius: 5px;
  object-fit: cover;
  object-position: center;
  outline: none !important; }

#property-edit .edit-property-form .house-images-section .gallery-image-list .gallery-image {
  display: inline-block;
  cursor: move;
  height: 180px;
  width: 100%;
  margin: 10px;
  padding: 10px;
  border-radius: 5px !important;
  transition: all linear 0.2s;
  position: relative; }

#property-edit .edit-property-form .house-images-section .gallery-image-list .gallery-image:active {
  border: solid 2px #27A448;
  animation: border-pulsate 2s infinite;
  transition: all linear 0.2s; }

#property-edit .edit-property-form .house-images-section .gallery-image-list .gallery-image .house-image {
  border-radius: 5px !important;
  height: 100%;
  width: 100%;
  display: inline-block;
  object-fit: cover;
  object-position: center; }

#property-edit .edit-property-form .house-images-section .gallery-image-list .gallery-image .image-index {
  position: absolute;
  top: 13px;
  right: 20px;
  background: #00deb6;
  border-radius: 50%;
  padding: 6px;
  height: 36px;
  width: 36px;
  text-align: center; }

#property-edit .edit-property-form .house-images-section .gallery-image-list .gallery-image .cover {
  background: #00deb6;
  color: #FFFFFF;
  font-weight: bold;
  padding: 5px;
  position: absolute;
  top: 13px;
  left: 15px;
  border-radius: 5px !important; }

#property-edit .edit-property-form .house-images-section .gallery-image-list .gallery-image .delete-tool {
  font-weight: bold;
  font-size: 18px;
  color: #FFFFFF;
  padding: 5px 10px !important;
  margin: 2px;
  border-radius: 5px !important;
  cursor: pointer;
  transition: all 0.2s;
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
  background: #ff0000;
  position: absolute;
  bottom: 15px;
  right: 17px; }

#property-edit .edit-property-form .house-images-section .gallery-image-list .gallery-image .delete-tool:hover {
  transition: all 0.2s;
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); }

#property-edit .edit-property-form .property-type {
  font-size: 20px;
  color: #262C3D;
  letter-spacing: 0.22px;
  text-align: left; }

#property-edit .edit-property-form .owner-id-section .link-container .image-controls,
#property-edit .edit-property-form .owner-id-section .link-container .imh-btn,
#property-edit .edit-property-form .owner-id-section .link-container .link {
  display: block; }

#property-edit .edit-property-form .owner-id-section .link-container .image-controls {
  color: #37474F;
  margin: 0;
  padding: 0;
  display: inline-block;
  color: #000000; }

#property-edit .edit-property-form .owner-id-section .link-container .image-controls .icon-trash3 {
  font-size: 30px;
  vertical-align: middle;
  color: #ff0000;
  cursor: pointer; }

#property-edit .edit-property-form .second-owner-section .link-container .image-controls,
#property-edit .edit-property-form .second-owner-section .link-container .imh-btn,
#property-edit .edit-property-form .second-owner-section .link-container .link {
  display: block; }

#property-edit .edit-property-form .second-owner-section .link-container .image-controls {
  color: #37474F;
  margin: 0;
  padding: 0;
  display: inline-block;
  color: #000000; }

#property-edit .edit-property-form .second-owner-section .link-container .image-controls .icon-trash3 {
  font-size: 30px;
  vertical-align: middle;
  color: #ff0000;
  cursor: pointer; }

#property-edit .edit-property-form .extra-section {
  margin: 20px 0; }

#property-edit .edit-property-form .extra-section .extras {
  margin: 20px 0;
  padding: 0;
  list-style-type: circle; }

#property-edit .edit-property-form .extra-section .extras .extra {
  display: inline-block;
  color: #37474F;
  background: #192154;
  color: #FFFFFF;
  font-weight: bold;
  padding: 5px 20px;
  border-radius: 5px;
  margin: 10px; }

#property-edit .edit-property-form .feature-section {
  margin: 20px 0; }

#property-edit .edit-property-form .feature-section .features {
  margin: 20px 0;
  padding: 0;
  list-style-type: circle; }

#property-edit .edit-property-form .feature-section .features .feature {
  display: inline-block;
  color: #37474F;
  background: #00deb6;
  color: #FFFFFF;
  font-weight: bold;
  padding: 5px 20px;
  border-radius: 5px;
  margin: 10px; }

#property-edit .edit-property-form .room-number .rooms-section {
  margin: 30px 0; }

#property-edit .edit-property-form .room-number .rooms-section .columns {
  text-align: center; }

#property-edit .edit-property-form .room-number .rooms-section .room-block {
  display: inline-block;
  margin-right: 20px; }

#property-edit .edit-property-form .room-number .rooms-section .room-block h3 {
  font-weight: bold !important;
  font-size: 18px !important;
  color: #37474F !important;
  letter-spacing: 0.18px; }

#property-edit .edit-property-form .room-number .rooms-section .room-block .room-box {
  width: 104px;
  height: 78px;
  background: #FCFCFC;
  border: 2px solid #9A9A9A;
  border-radius: 2px;
  font-size: 18px;
  color: #262C3D;
  letter-spacing: 0.18px;
  text-align: center;
  padding: 10px 5px;
  cursor: pointer; }

#property-edit .edit-property-form .room-number .rooms-section .room-block .room-box input {
  height: 22px;
  width: 100%;
  text-align: center;
  border: 1px solid #262C3D;
  box-shadow: none;
  margin: 15px auto;
  padding: 0; }

#property-edit .edit-property-form .room-number .rooms-section .room-block .room-box:hover {
  transition: all 0.2s;
  border-color: #00deb6; }

#property-edit .edit-property-form .room-number .rooms-section .room-block .room-box:hover input {
  border: 1px solid #00deb6; }

@media screen and (max-width: 39.9375em) {
  #property-edit .edit-property-form .room-number .rooms-section .room-block {
    margin: 10px 0; }
  #property-edit .edit-property-form .room-number .rooms-section .room-block input {
    width: 100%; }
  #property-edit .edit-property-form .room-number .rooms-section .room-block:nth-child(2) {
    margin-left: 0 !important; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  #property-edit .edit-property-form .room-number .rooms-section .room-block input {
    width: 100%; } }

#property-edit .edit-property-form .leading-introduction-section,
#property-edit .edit-property-form .main-description-section {
  width: 100%;
  display: block;
  margin: 30px 0; }

#property-edit .edit-property-form .leading-introduction-section .sub-heading,
#property-edit .edit-property-form .main-description-section .sub-heading {
  color: #37474F;
  font-weight: bold;
  font-size: 16px; }

#property-edit .edit-property-form .leading-introduction-section trix-editor,
#property-edit .edit-property-form .main-description-section trix-editor {
  min-height: 113px;
  color: #37474F; }

#property-edit .edit-property-form .leading-introduction-section .word-count,
#property-edit .edit-property-form .main-description-section .word-count {
  font-weight: bold;
  color: #192154;
  font-size: 18px;
  float: right;
  margin: 10px 0; }

#property-edit .edit-property-form .text-count {
  font-weight: bold;
  color: #192154;
  font-size: 16px; }

#property-edit .edit-property-form .delete-property-btn,
#property-edit .edit-property-form .save-property-btn {
  width: 100%; }

#property-view .preview-card {
  border-radius: 5px;
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
  background: #FFFFFF; }

#property-view .preview-card .card-title {
  background-color: #192154;
  border-radius: 5px 5px 0 0;
  color: #FFFFFF;
  padding: 10px 30px; }

#property-view .preview-card .card-title .preview-address {
  color: #FFFFFF;
  font-weight: bold;
  font-size: 20px !important;
  letter-spacing: 0.24px;
  display: inline-block;
  margin-bottom: 10px; }

#property-view .preview-card .card-title .preview-address p {
  margin: 0; }

#property-view .preview-card .card-title .preview-address .icon-home {
  font-size: 25px; }

#property-view .preview-card .card-title .price {
  font-weight: bold;
  font-size: 25px !important;
  color: #FFFFFF;
  letter-spacing: 0.24px;
  display: block;
  width: 100%; }

#property-view .preview-card .card-title .price p {
  margin: 0; }

#property-view .preview-card .card-title .imh-btn-primary {
  display: inline-block;
  margin-top: 15px; }

#property-view .edit-property-form {
  padding: 20px 15px; }

#property-view .edit-property-form .focus-image {
  margin: 10px 0;
  height: 350px;
  width: 100%; }

#property-view .edit-property-form .focus-image img {
  height: 100%;
  width: 100%;
  object-fit: cover;
  object-position: center;
  border-radius: 5px; }

#property-view .edit-property-form .external-block {
  text-align: center;
  padding: 40px;
  border: solid 3px #00deb6;
  border-radius: 5px;
  display: inline-block;
  width: 100%;
  margin: 40px 0; }

#property-view .edit-property-form .external-block img {
  object-fit: cover;
  object-position: center;
  height: 40px;
  margin: 5px 20px 0 0; }

#property-view .edit-property-form .price,
#property-view .edit-property-form .property-type {
  font-size: 20px;
  color: #262C3D;
  letter-spacing: 0.22px;
  text-align: left; }

#property-view .edit-property-form .gallery .image-block {
  outline: none !important;
  cursor: pointer; }

#property-view .edit-property-form .gallery .image-block img {
  height: 165px;
  object-fit: cover;
  object-position: center;
  outline: none !important;
  border-radius: 5px; }

#property-view .edit-property-form .extra-section {
  margin: 20px 0; }

#property-view .edit-property-form .extra-section .extras {
  margin: 20px 0;
  padding: 0;
  list-style-type: circle; }

#property-view .edit-property-form .extra-section .extras .extra {
  display: inline-block;
  color: #37474F;
  background: #192154;
  color: #FFFFFF;
  font-weight: bold;
  padding: 5px 20px;
  border-radius: 5px;
  margin: 10px; }

#property-view .edit-property-form .feature-section {
  margin: 20px 0; }

#property-view .edit-property-form .feature-section .features {
  margin: 20px 0;
  padding: 0;
  list-style-type: circle; }

#property-view .edit-property-form .feature-section .features .feature {
  display: inline-block;
  color: #37474F;
  background: #00deb6;
  color: #FFFFFF;
  font-weight: bold;
  padding: 5px 20px;
  border-radius: 5px;
  margin: 10px; }

#property-view .edit-property-form .upload-images {
  display: inline-block;
  margin: 10px 0 !important; }

#property-view .edit-property-form .room-number .rooms-section {
  margin: 30px 0; }

#property-view .edit-property-form .room-number .rooms-section .columns {
  text-align: center; }

#property-view .edit-property-form .room-number .rooms-section .room-block {
  display: inline-block;
  margin-right: 20px; }

#property-view .edit-property-form .room-number .rooms-section .room-block h3 {
  font-weight: bold !important;
  font-size: 18px !important;
  color: #37474F !important;
  letter-spacing: 0.18px; }

#property-view .edit-property-form .room-number .rooms-section .room-block .room-box {
  width: 104px;
  height: 78px;
  background: #FCFCFC;
  border: 2px solid #9A9A9A;
  border-radius: 2px;
  font-family: imove;
  font-size: 18px;
  color: #262C3D;
  letter-spacing: 0.18px;
  text-align: center;
  padding: 10px 5px; }

#property-view .edit-property-form .room-number .rooms-section .room-block .room-box input {
  height: 22px;
  width: 100%;
  text-align: center;
  border: 0px;
  box-shadow: none;
  margin: 15px auto;
  padding: 0px; }

@media screen and (max-width: 39.9375em) {
  #property-view .edit-property-form .room-number .rooms-section .room-block {
    margin: 10px 0; }
  #property-view .edit-property-form .room-number .rooms-section .room-block:nth-child(2) {
    margin-left: 0px !important; } }

#property-view .edit-property-form .leading-introduction-section {
  font-size: 14px;
  color: #262C3D;
  letter-spacing: 0.22px;
  text-align: left;
  margin-bottom: 20px; }

#property-view .edit-property-form .leading-introduction-section p {
  margin: 0; }

#property-view .edit-property-form .leading-introduction-section h3 {
  font-weight: bold !important;
  font-size: 18px !important;
  color: #37474F !important;
  letter-spacing: 0.18px; }

#property-view .edit-property-form .main-description-section {
  text-align: left;
  margin-bottom: 20px; }

#property-view .edit-property-form .main-description-section p {
  font-size: 13px;
  color: #73848D !important;
  letter-spacing: 0;
  line-height: 25px;
  margin-bottom: 10px; }

#property-view .edit-property-form .main-description-section h3 {
  font-weight: bold !important;
  font-size: 18px !important;
  color: #37474F !important;
  letter-spacing: 0.18px; }

.admin-dashboard {
  margin-top: 1px;
  border-top: solid 5px #192154;
  background-image: linear-gradient(120deg, #91C4FF 0%, #F0F7FF 87%);
  position: relative; }

.admin-dashboard .heading h2 {
  color: #485E69;
  font-weight: bold; }

.admin-dashboard .dashboard-navigation {
  margin-bottom: 20px; }

.admin-dashboard .section-title {
  color: #485E69;
  font-size: 25px;
  margin: 0 0 20px 0 !important;
  font-weight: bold; }

.admin-dashboard .section-title h4 {
  margin: 0; }

.admin-dashboard h3 {
  font-weight: bold !important;
  font-size: 18px !important;
  color: #37474F !important;
  letter-spacing: 0.18px;
  width: 100%; }

.admin-dashboard input,
.admin-dashboard select {
  border: solid 2px #bbbbbb;
  border-radius: 5px;
  font-size: 16px;
  color: #37474F;
  letter-spacing: 0.16px;
  height: 51px;
  transition: all 0.2s;
  font-weight: bold; }

.admin-dashboard input:focus,
.admin-dashboard select:focus {
  transition: all 0.2s;
  border: solid 2px #192154;
  color: #192154;
  font-weight: bold; }

.admin-dashboard .admin-options {
  position: relative; }

.admin-dashboard .admin-options .admin-details-form .imh-tooltip {
  margin-bottom: 10px; }

.admin-dashboard .admin-options .admin-tools {
  background: #192154;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
  border: 0 !important;
  color: #FFFFFF;
  box-shadow: 0px 3px 0px 0px #182c7b;
  padding: 5px; }

.admin-dashboard .admin-options .admin-tools li {
  display: inline-block; }

.admin-dashboard .admin-options .admin-tools li a {
  color: #FFFFFF;
  font-weight: bold;
  font-size: 18px;
  outline: none !important;
  text-decoration: none; }

.admin-dashboard .admin-options .admin-tools li a span {
  margin: 5px; }

.admin-dashboard .admin-options .admin-tools li a:focus {
  background-color: #0d122d; }

.admin-dashboard .admin-options .admin-tools li a:hover {
  background-color: #0d122d; }

.admin-dashboard .admin-options .admin-tools li a:active,
.admin-dashboard .admin-options .admin-tools li a[aria-selected='true'] {
  background: #192154 !important;
  color: #FFFFFF; }

.admin-dashboard .admin-options .admin-contents {
  margin: 50px 0;
  background: #FFFFFF;
  padding: 20px;
  border-radius: 4px !important; }

.admin-dashboard .admin-options .admin-contents .content-section-title {
  color: #37474F;
  font-weight: bold; }

.admin-dashboard .admin-options .admin-contents .content-list-filter {
  margin: 20px 0; }

.admin-dashboard .admin-options .admin-contents .content-list-filter ul {
  margin: 0px;
  list-style-type: none; }

.admin-dashboard .admin-options .admin-contents .content-list-filter .filter-title {
  color: #192154;
  font-weight: bold;
  text-decoration: none;
  font-size: 20px;
  padding: 0 0 10px 0; }

.admin-dashboard .admin-options .admin-contents .content-list-filter .filter-list input {
  margin: 10px 0; }

.admin-dashboard .admin-options .admin-contents .content-list table {
  border-collapse: collapse;
  margin-left: auto;
  margin-right: auto; }

.admin-dashboard .admin-options .admin-contents .content-list table th {
  white-space: nowrap;
  background: #192154;
  color: #FFFFFF; }

.admin-dashboard .admin-options .admin-contents .content-list table tr td .imh-btn {
  display: inline-block;
  margin: 0 2px;
  min-width: auto;
  padding: 10px !important; }

.admin-dashboard .admin-options .admin-contents .content-list table tr td .table-link {
  font-weight: bold;
  text-decoration: none;
  color: #192154; }

.admin-dashboard .admin-options .admin-contents .content-list table tr td .table-link:hover {
  color: black; }

.admin-dashboard .admin-options .admin-contents .content-list table tr td .table-actions {
  width: 225px; }

.admin-dashboard .admin-options .admin-contents .content-list table tr td .table-actions select {
  height: auto;
  margin: 0px; }

.admin-dashboard .admin-options .admin-contents .content-list table .sold-status {
  color: #192154; }

.admin-dashboard .admin-options .admin-contents .content-list table .open-status {
  color: #00deb6; }

.admin-dashboard .admin-options .admin-contents .content-list table .deleted-status {
  color: #ff0000; }

.admin-dashboard .admin-options .admin-contents .content-list table .pending-status {
  color: #EDC79B; }

.admin-dashboard .admin-options .admin-contents .content-list .ng-table-pagination li a {
  background: #192154;
  border-radius: 4px;
  text-decoration: none;
  color: #FFFFFF; }

.admin-dashboard .admin-options .admin-contents .content-list .ng-table-pagination li a:hover {
  transition: all 0.2s;
  background: #020205; }

.admin-dashboard .admin-options .admin-contents .content-list .ng-table-pagination .disabled {
  display: none; }

.admin-dashboard .admin-options .admin-contents .content-confirm-delete .title {
  color: #485E69;
  font-weight: bold; }

.admin-dashboard .admin-options .admin-contents .content-confirm-delete .subject {
  color: #485E69; }

.admin-dashboard .admin-options .admin-contents .content-confirm-delete .subject .to-delete {
  color: #ff0000;
  font-weight: bold; }

.admin-dashboard .admin-options .admin-contents .edit-property .title {
  color: #485E69;
  font-weight: bold; }

.admin-dashboard .admin-options .admin-contents .edit-property .section-title {
  background: #192154;
  box-shadow: 0px 3px 0px 0px black;
  padding: 10px; }

.admin-dashboard .admin-options .admin-contents .edit-property .section-title h4 {
  font-size: 30px;
  color: #FFFFFF;
  font-weight: bold; }

.admin-dashboard .admin-options .admin-contents .edit-property .premium-listing-title {
  color: #ffc659;
  font-style: italic;
  font-size: 24px; }

.admin-dashboard .admin-options .admin-contents .edit-property input {
  padding: 0 20px; }

.admin-dashboard .admin-options .admin-contents .edit-property label {
  font-weight: bold !important;
  font-size: 18px !important;
  color: #37474F !important;
  letter-spacing: 0.18px;
  width: 100%;
  margin: 20px 0; }

.admin-dashboard .admin-options .admin-contents .edit-property .word-count {
  font-weight: bold;
  color: #192154;
  font-size: 18px;
  float: right;
  margin: 10px 0; }

.admin-dashboard .admin-options .admin-contents .edit-property .address-section {
  margin-bottom: 20px; }

.admin-dashboard .admin-options .admin-contents .edit-property .address-section .estimate-box {
  display: inline-block;
  position: relative;
  height: 220px;
  width: 100%;
  background: #FFFFFF;
  border: 4px solid #D7D7D7;
  border-radius: 4px;
  padding: 20px;
  transition: all 0.2s;
  cursor: pointer;
  text-align: center;
  float: left;
  margin-top: 15px;
  margin-bottom: 15px; }

@media screen and (max-width: 39.9375em) {
  .admin-dashboard .admin-options .admin-contents .edit-property .address-section .estimate-box {
    float: none;
    width: 100%; } }

.admin-dashboard .admin-options .admin-contents .edit-property .address-section .estimate-box .valuation {
  position: relative;
  width: 100%; }

.admin-dashboard .admin-options .admin-contents .edit-property .address-section .estimate-box .valuation span {
  position: absolute;
  left: 5px;
  top: 14px;
  color: #000000 !important; }

.admin-dashboard .admin-options .admin-contents .edit-property .address-section .estimate-box .price {
  font-size: 25px;
  margin: 10px 0;
  color: #37474F; }

.admin-dashboard .admin-options .admin-contents .edit-property .address-section .estimate-box:nth-child(2) {
  margin-left: 40px; }

@media screen and (max-width: 39.9375em) {
  .admin-dashboard .admin-options .admin-contents .edit-property .address-section .estimate-box:nth-child(2) {
    margin-left: 0px; } }

.admin-dashboard .admin-options .admin-contents .edit-property .address-section .estimate-box .title {
  font-weight: bold;
  font-size: 18px;
  height: 69px;
  color: #37474F;
  letter-spacing: 0.18px;
  font-weight: bold; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section {
  margin-bottom: 20px; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section trix-editor {
  min-height: 113px;
  color: #37474F; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .gallery-image-list .no-images {
  color: #37474F; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .gallery-image-list .gallery-image {
  display: inline-block;
  cursor: move;
  height: 180px;
  width: 100%;
  margin: 10px;
  padding: 10px;
  border-radius: 5px !important;
  transition: all linear 0.2s;
  position: relative; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .gallery-image-list .gallery-image:active {
  border: solid 2px #00deb6;
  animation: border-pulsate 2s infinite;
  transition: all linear 0.2s; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .gallery-image-list .gallery-image .house-image {
  border-radius: 5px !important;
  height: 100%;
  width: 100%;
  display: inline-block;
  object-fit: cover;
  object-position: center; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .gallery-image-list .gallery-image .image-index {
  position: absolute;
  top: 13px;
  right: 20px;
  background: #00deb6;
  border-radius: 50%;
  padding: 6px;
  height: 36px;
  width: 36px;
  text-align: center; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .gallery-image-list .gallery-image .cover {
  background: #00deb6;
  color: #FFFFFF;
  font-weight: bold;
  padding: 5px;
  position: absolute;
  top: 13px;
  left: 15px;
  border-radius: 5px !important; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .gallery-image-list .gallery-image .delete-tool {
  font-weight: bold;
  font-size: 18px;
  color: #FFFFFF;
  padding: 5px 10px !important;
  margin: 2px;
  border-radius: 5px !important;
  cursor: pointer;
  transition: all 0.2s;
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
  background: #ff0000;
  position: absolute;
  bottom: 15px;
  right: 17px; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .gallery-image-list .gallery-image .delete-tool:hover {
  transition: all 0.2s;
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .feature-section {
  margin: 20px 0; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .feature-section .features {
  margin: 20px 0;
  padding: 0;
  list-style-type: circle; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .feature-section .features .feature {
  display: inline-block;
  color: #37474F;
  background: #00deb6;
  color: #FFFFFF;
  font-weight: bold;
  padding: 5px 20px;
  border-radius: 5px;
  margin: 10px; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .feature-section .features-selected {
  margin: 20px 0;
  padding: 0; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .feature-section .features-selected .feature {
  border: solid 2px #00deb6;
  padding: 5px;
  margin: 5px;
  border-radius: 5px;
  display: inline-block;
  color: #00deb6;
  transition: all 0.2s;
  font-weight: bold;
  cursor: pointer; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .feature-section .features-selected .feature-selected {
  background: #00deb6;
  color: #FFFFFF; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .extra-section {
  margin: 20px 0; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .extra-section .extras {
  margin: 20px 0;
  padding: 0; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .extra-section .extras .extra {
  display: inline-block;
  color: #37474F;
  background: #192154;
  color: #FFFFFF;
  font-weight: bold;
  padding: 5px 20px;
  border-radius: 5px;
  margin: 10px; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .extra-section .extras-selected {
  margin: 20px 0;
  padding: 0; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .extra-section .extras-selected .extra {
  border: solid 2px #192154;
  padding: 5px;
  margin: 5px;
  border-radius: 5px;
  display: inline-block;
  color: #192154;
  transition: all 0.2s;
  font-weight: bold;
  cursor: pointer; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .extra-section .extras-selected .extra-selected {
  background: #192154;
  color: #FFFFFF; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section {
  margin: 30px 0; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section ul {
  margin: 0px;
  padding: 0px; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section ul li {
  display: inline-block;
  width: 184px; }

@media screen and (max-width: 39.9375em) {
  .admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section ul li {
    width: 110px;
    text-align: center; } }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section .room-block {
  display: inline-block;
  margin-right: 20px; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section .room-block h3 {
  white-space: nowrap; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section .room-block .room-box {
  width: 104px;
  height: 78px;
  background: #FCFCFC;
  border: 2px solid #9A9A9A;
  border-radius: 2px;
  font-size: 18px;
  color: #262C3D;
  letter-spacing: 0.18px;
  text-align: center;
  padding: 10px 5px;
  cursor: pointer; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section .room-block .room-box input {
  height: 22px;
  width: 100%;
  text-align: center;
  border: 1px solid #262C3D;
  box-shadow: none;
  margin: 15px auto;
  padding: 0px; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section .room-block .room-box:hover {
  transition: all 0.2s;
  border-color: #00deb6; }

.admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section .room-block .room-box:hover input {
  border: 1px solid #00deb6; }

@media screen and (max-width: 39.9375em) {
  .admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section .room-block {
    margin: 10px 0; }
  .admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section .room-block input {
    width: 100%; }
  .admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section .room-block:nth-child(2) {
    margin-left: 0px !important; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .admin-dashboard .admin-options .admin-contents .edit-property .property-details-section .rooms-section .room-block input {
    width: 100%; } }

.admin-dashboard .admin-options .admin-contents .edit-property .user-section {
  margin-bottom: 20px; }

.admin-dashboard .admin-options .admin-contents .edit-property .user-section p {
  color: #37474F;
  font-size: 18px; }

.admin-dashboard .admin-options .admin-contents .edit-property .api-section {
  margin-bottom: 20px; }

.admin-dashboard .admin-options .admin-contents .edit-property .api-section .api-tools .imh-btn {
  margin-bottom: 20px; }

.admin-dashboard .admin-options .admin-contents .edit-property .api-section .api-tools .imh-btn-premium {
  background-color: #ffc659;
  color: #fff;
  box-shadow: 0px 3px 0px 0px #d98e00; }

.admin-dashboard .admin-options .admin-contents .edit-property .api-section .api-tools .imh-btn-premium:hover {
  background-color: #ffb426; }

.admin-dashboard .admin-options .admin-contents .edit-property .api-section .api-link {
  font-size: 25px;
  font-weight: bold; }

.admin-dashboard .admin-options .admin-contents .edit-property .api-section .zoopla {
  margin-right: 20px;
  color: #6C148E; }

.admin-dashboard .admin-options .admin-contents .edit-property .api-section .zoopla:hover {
  color: #17041e; }

.admin-dashboard .admin-options .admin-contents .edit-property .api-section .rightmove {
  color: #01DEB6; }

.admin-dashboard .admin-options .admin-contents .edit-property .api-section .rightmove:hover {
  color: #005f4e; }

#mortgages .banner {
  background-image: linear-gradient(120deg, #91C4FF 0%, #F0F7FF 87%);
  padding-top: 90px;
  border-bottom: solid 7px #205081;
  position: relative;
  min-height: 577px; }

#mortgages .banner .cloud-scroll {
  background: url("/src/assets/images/imovehome/clouds.png") repeat-x;
  top: 20px;
  left: 0;
  width: 100%;
  height: 80%;
  background-size: cover;
  position: absolute;
  -webkit-animation: 900000s backgroundScroll infinite linear;
  -moz-animation: 900000s backgroundScroll infinite linear;
  -o-animation: 900000s backgroundScroll infinite linear;
  -ms-animation: 900000s backgroundScroll infinite linear;
  animation: 900000s backgroundScroll infinite linear; }

#mortgages .banner .content-row {
  position: relative; }

#mortgages .banner .content-row .content h1 {
  font-size: 36px !important;
  font-weight: bold !important;
  color: #000000; }

#mortgages .banner .content-row .content p {
  color: #37474F;
  font-size: 18px;
  margin-bottom: 40px; }

#mortgages .banner .banner-image {
  height: 400px;
  position: absolute;
  right: 0;
  bottom: -10px;
  object-fit: cover;
  object-position: center; }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  #mortgages .banner .banner-image {
    height: 390px; } }

@-webkit-keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

@keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

@media screen and (max-width: 39.9375em) {
  #mortgages .banner {
    min-height: auto;
    padding: 20px 0; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  #mortgages .banner {
    min-height: 680px; } }

#mortgages .estate-agent-ad {
  background: #F0F7FF;
  border-bottom: 7px solid #2A5081;
  padding: 90px 0; }

#mortgages .estate-agent-ad .content {
  margin-bottom: 40px; }

#mortgages .estate-agent-ad .content h1 {
  font-size: 36px !important;
  font-weight: bold !important;
  color: #000000; }

#mortgages .estate-agent-ad .content p {
  color: #37474F;
  font-size: 18px;
  margin-bottom: 40px; }

#mortgages .estate-agent-ad img {
  margin-bottom: 40px;
  object-fit: cover;
  object-position: center; }

#mortgages .estate-agent-ad .boy-happy-profile {
  height: 326px; }

#mortgages .estate-agent-ad .checklist {
  height: 221px; }

#mortgages .estate-agent-ad.no-background {
  background: #fff; }

#mortgages .estate-agent-ad.no-border {
  border-bottom: 0; }

#mortgages .sub-message {
  padding: 50px 0; }

#mortgages .sub-message h4 {
  color: #37474F;
  margin-bottom: 50px; }

#mortgages .sub-message .custom-underline {
  border-bottom: solid 2px #192154; }

#mortgages .banner-section {
  background: #F0F7FF; }

#mortgages .banner-section .house-banner {
  width: 100%;
  height: 356px;
  position: relative;
  text-align: center; }

#mortgages .banner-section .house-banner img {
  object-fit: cover;
  object-position: center;
  height: 277px;
  margin-top: 80px; }

#conveyancing input,
#conveyancing select {
  border: solid 2px #bbb;
  border-radius: 5px;
  font-size: 16px;
  color: #37474F;
  letter-spacing: 0.16px;
  padding: 0 20px;
  height: 51px;
  transition: all 0.2s;
  font-weight: bold; }

#conveyancing input:focus,
#conveyancing select:focus {
  transition: all 0.2s;
  border: solid 2px #192154;
  color: #192154;
  font-weight: bold; }

#conveyancing input[type='checkbox'] {
  height: auto !important; }

#conveyancing .banner {
  background-image: linear-gradient(120deg, #91C4FF 0%, #F0F7FF 87%);
  padding-top: 90px;
  border-bottom: solid 7px #205081;
  position: relative;
  min-height: 577px; }

#conveyancing .banner .cloud-scroll {
  background: url("/src/assets/images/imovehome/clouds.png") repeat-x;
  top: 20px;
  left: 0;
  width: 100%;
  height: 80%;
  background-size: cover;
  position: absolute;
  -webkit-animation: 900000s backgroundScroll infinite linear;
  -moz-animation: 900000s backgroundScroll infinite linear;
  -o-animation: 900000s backgroundScroll infinite linear;
  -ms-animation: 900000s backgroundScroll infinite linear;
  animation: 900000s backgroundScroll infinite linear; }

#conveyancing .banner .content-row {
  position: relative; }

#conveyancing .banner .content-row .content {
  padding-bottom: 40px; }

#conveyancing .banner .content-row .content h1 {
  font-size: 36px !important;
  font-weight: bold !important;
  color: #000000; }

#conveyancing .banner .content-row .content p {
  color: #37474F;
  font-size: 18px;
  margin-bottom: 40px; }

#conveyancing .banner .banner-image {
  height: 450px;
  position: absolute;
  right: 0;
  bottom: -7px;
  object-fit: cover;
  object-position: center; }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  #conveyancing .banner .banner-image {
    height: 410px; } }

@-webkit-keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

@keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

@media screen and (max-width: 39.9375em) {
  #conveyancing .banner {
    min-height: auto;
    padding: 20px 0; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  #conveyancing .banner {
    min-height: 680px; } }

#conveyancing .conveyancing-title {
  color: #37474F;
  font-size: 30px;
  margin: 50px 0; }

#conveyancing #conveyancing-form {
  background: url("/src/assets/images/imovehome/clouds-background@2x.png");
  background-position: center;
  background-size: cover;
  padding: 80px 0; }

#conveyancing #conveyancing-form .form-sub-title {
  color: #37474F; }

#conveyancing #conveyancing-form .form-container {
  border-top: solid 1px #37474F;
  padding: 20px 0; }

#conveyancing #conveyancing-form .form-container .hidden-label {
  height: 6px; }

#conveyancing #conveyancing-form .form-container .imh-btn {
  margin: 20px 0;
  width: 100%;
  background: #FFFFFF;
  border: solid 1px #37474F;
  box-shadow: none;
  color: #37474F; }

#conveyancing #conveyancing-form .form-container .imh-btn:hover {
  background: #192154;
  color: #FFFFFF; }

#conveyancing #conveyancing-form .form-container .imh-btn-group {
  display: block;
  font-size: 0;
  margin: 0; }

#conveyancing #conveyancing-form .form-container .imh-btn-toggle {
  width: 50%;
  margin: 0 !important;
  background: #FFFFFF;
  border: solid 1px #37474F;
  box-shadow: none;
  color: #37474F;
  height: 51px;
  min-width: auto; }

#conveyancing #conveyancing-form .form-container .imh-btn-toggle:hover {
  background: #192154;
  color: #FFFFFF; }

#conveyancing #conveyancing-form .form-container .imh-btn-toggle-left {
  border-right: 0;
  border-radius: 5px 0 0 5px !important; }

#conveyancing #conveyancing-form .form-container .imh-btn-toggle-right {
  border-left: 0;
  border-radius: 0 5px 5px 0 !important; }

#conveyancing #conveyancing-form .form-container .option-selected {
  background-color: #192154;
  color: #FFFFFF; }

#conveyancing .disclaimer {
  padding: 80px 20px; }

#conveyancing .disclaimer p {
  color: #37474F; }

#conveyancing #video-player {
  margin: 90px 0; }

#conveyancing .banner-section {
  background: #F0F7FF; }

#conveyancing .banner-section .house-banner {
  width: 100%;
  height: 356px;
  position: relative;
  text-align: center; }

#conveyancing .banner-section .house-banner img {
  object-fit: cover;
  object-position: center;
  height: 277px;
  margin-top: 80px; }

#price-list .banner {
  background: #F0F7FF;
  padding: 50px 0; }

#price-list .banner h1 {
  color: #37474F;
  text-decoration: underline; }

#price-list .listing-fee {
  position: relative;
  display: block;
  width: 100%;
  margin: 25px 0;
  padding: 20px;
  border-radius: 2px;
  background: #F0F7FF;
  border: solid 1px #EFF3F9; }

#price-list .listing-fee .info {
  margin: 0 18px 0 0; }

#price-list .listing-fee .info .title {
  color: #37474F;
  font-size: 22px; }

#price-list .listing-fee .info .description {
  color: #37474F; }

#price-list .listing-fee .portals {
  width: 500px;
  margin-top: 35px; }

#price-list .listing-fee .portals img {
  display: inline-block;
  height: 28px;
  object-fit: cover;
  object-position: center;
  margin: 0 14px 0 0; }

#price-list .listing-fee .price {
  color: #37474F;
  font-size: 22px;
  margin-top: 35px; }

#price-list .listing-fee .info,
#price-list .listing-fee .portals,
#price-list .listing-fee .price {
  display: table-cell;
  vertical-align: middle;
  margin: 0px 5px; }

@media screen and (max-width: 39.9375em) {
  #price-list .listing-fee .info,
  #price-list .listing-fee .portals,
  #price-list .listing-fee .price {
    width: 100% !important;
    display: block;
    padding: 0px !important;
    margin: 20px 0px; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  #price-list .listing-fee .info,
  #price-list .listing-fee .portals,
  #price-list .listing-fee .price {
    width: 100% !important;
    display: block;
    padding: 0px !important;
    margin: 20px 0px; } }

#price-list .option-list {
  margin: 25px 0; }

#price-list .option-list .option-list-title {
  border-bottom: solid 1px #DBDBDB; }

#price-list .option-list .option-list-title .title {
  color: #DBDBDB;
  margin-bottom: 20px;
  font-size: 20px; }

#price-list .option-list .option {
  position: relative;
  display: block;
  width: 100%;
  margin: 25px 0;
  padding: 20px;
  background: #F0F7FF;
  border: solid 1px #EFF3F9;
  border-radius: 2px; }

#price-list .option-list .option .icon,
#price-list .option-list .option .info,
#price-list .option-list .option .price {
  display: table-cell;
  vertical-align: middle; }

@media screen and (max-width: 39.9375em) {
  #price-list .option-list .option .icon,
  #price-list .option-list .option .info,
  #price-list .option-list .option .price {
    width: 100% !important;
    display: block;
    padding: 0px !important; } }

#price-list .option-list .option .icon {
  width: 120px; }

#price-list .option-list .option .icon img {
  padding: 0 10px; }

#price-list .option-list .option .info {
  padding-right: 150px;
  margin: 20px 0; }

#price-list .option-list .option .info .title {
  font-weight: bold;
  font-size: 16px;
  color: #37474F;
  letter-spacing: 0.16px;
  font-weight: bold; }

#price-list .option-list .option .info .description {
  font-weight: bold;
  font-size: 14px;
  color: #7F8A90;
  letter-spacing: 0.14px;
  line-height: 22px; }

#price-list .option-list .option .price {
  color: #37474F;
  font-size: 22px;
  width: 125px;
  position: absolute;
  right: 20px;
  top: 50px;
  text-align: right; }

@media screen and (max-width: 39.9375em) {
  #price-list .option-list .option .price {
    width: 100% !important;
    position: initial;
    display: block; } }

#hiw .banner {
  background-image: linear-gradient(120deg, #91C4FF 0%, #F0F7FF 87%);
  padding-top: 90px;
  border-bottom: solid 7px #205081;
  position: relative;
  min-height: 577px; }

#hiw .banner .cloud-scroll {
  background: url("/src/assets/images/imovehome/clouds.png") repeat-x;
  top: 20px;
  left: 0;
  width: 100%;
  height: 80%;
  background-size: cover;
  position: absolute;
  -webkit-animation: 900000s backgroundScroll infinite linear;
  -moz-animation: 900000s backgroundScroll infinite linear;
  -o-animation: 900000s backgroundScroll infinite linear;
  -ms-animation: 900000s backgroundScroll infinite linear;
  animation: 900000s backgroundScroll infinite linear; }

#hiw .banner .content-row {
  position: relative; }

#hiw .banner .content-row .content {
  padding-bottom: 40px; }

#hiw .banner .content-row .content h1 {
  font-size: 36px !important;
  font-weight: bold !important;
  color: #000000; }

#hiw .banner .content-row .content p {
  color: #37474F;
  font-size: 18px;
  margin-bottom: 40px; }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  #hiw .banner .content-row .content p {
    margin-bottom: 20px; } }

#hiw .banner .banner-image {
  height: 360px;
  position: absolute;
  right: 0;
  bottom: -10px;
  object-fit: cover;
  object-position: center; }

@-webkit-keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

@keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

@media screen and (max-width: 39.9375em) {
  #hiw .banner {
    min-height: auto;
    padding: 20px 0; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  #hiw .banner {
    min-height: 835px; } }

#hiw .hiw-steps {
  margin: 50px 0 0;
  height: 1715px;
  width: 100%; }

#hiw .hiw-steps g,
#hiw .hiw-steps p,
#hiw .hiw-steps text,
#hiw .hiw-steps tspan {
  font-family: 'imovehome' !important; }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  #hiw .hiw-steps {
    height: auto; } }

@media screen and (max-width: 39.9375em) {
  #hiw .hiw-steps {
    height: auto; } }

#hiw .get-started-btn {
  margin-bottom: 100px; }

#hiw #hiw-video {
  margin-bottom: 100px;
  border-bottom: solid 7px #205081; }

#faq .banner {
  background: #F0F7FF;
  padding: 50px 0; }

#faq .banner h1 {
  color: #37474F;
  text-decoration: underline; }

#faq .faq-list {
  margin: 50px 0; }

#faq .faq-list .accordion {
  background: #fff; }

#faq .faq-list .accordion .accordion-item .accordion-title {
  color: #37474F;
  text-decoration: none;
  font-size: 20px;
  border: 0px;
  border-bottom: solid 1px #e6e6e6; }

#faq .faq-list .accordion .accordion-item .accordion-content {
  border-top: 0px;
  background: #F0F7FF; }

#faq .faq-list .accordion .accordion-item .accordion-content p {
  font-size: 18px;
  color: #37474F; }

#free-valuation input,
#free-valuation select {
  border: solid 2px #bbbbbb;
  border-radius: 5px;
  padding: 0 20px;
  font-size: 16px;
  color: #37474F;
  letter-spacing: 0.16px;
  height: 51px;
  transition: all 0.2s;
  font-weight: bold; }

#free-valuation input:focus,
#free-valuation select:focus {
  transition: all 0.2s;
  border: solid 2px #192154;
  color: #192154;
  font-weight: bold; }

#free-valuation .banner {
  background-image: linear-gradient(120deg, #91C4FF 0%, #F0F7FF 87%);
  padding-top: 90px;
  border-bottom: solid 7px #205081;
  position: relative;
  min-height: 577px; }

#free-valuation .banner .cloud-scroll {
  background: url(/src/assets/images/imovehome/clouds.png) repeat-x;
  top: 20px;
  left: 0;
  width: 100%;
  height: 80%;
  background-size: cover;
  position: absolute;
  -webkit-animation: 900000s backgroundScroll infinite linear;
  -moz-animation: 900000s backgroundScroll infinite linear;
  -o-animation: 900000s backgroundScroll infinite linear;
  -ms-animation: 900000s backgroundScroll infinite linear;
  animation: 900000s backgroundScroll infinite linear; }

#free-valuation .banner .content-row {
  position: relative; }

#free-valuation .banner .content-row .content {
  padding-bottom: 40px; }

#free-valuation .banner .content-row .content h1 {
  font-size: 36px !important;
  font-weight: bold !important;
  color: #000000; }

#free-valuation .banner .content-row .content p {
  color: #37474F;
  font-size: 18px;
  margin-bottom: 40px; }

#free-valuation .banner .banner-image {
  height: 500px;
  position: absolute;
  right: 0;
  bottom: -10px;
  object-fit: cover;
  object-position: center; }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  #free-valuation .banner .banner-image {
    height: 500px; } }

@-webkit-keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

@keyframes backgroundScroll {
  from {
    background-position: 0 0; }
  to {
    background-position: -99999999px 0; } }

@media screen and (max-width: 39.9375em) {
  #free-valuation .banner {
    min-height: auto;
    padding: 20px 0; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  #free-valuation .banner {
    min-height: 835px; } }

#free-valuation .valuation-message {
  margin: 50px 0; }

#free-valuation .valuation-message .message {
  font-size: 18px;
  color: #37474F; }

#free-valuation .valuation-form {
  background: url("/src/assets/images/imovehome/clouds-background@2x.png");
  background-position: center;
  background-size: cover;
  padding: 80px 0; }

#free-valuation .valuation-form .form-container,
#free-valuation .valuation-form .address-select,
#free-valuation .valuation-form .valuation-options {
  padding: 20px 0; }

#free-valuation .valuation-form .sub-title-container {
  border-bottom: solid 2px #DBDBDB; }

#free-valuation .valuation-form .sub-title-container .sub-title {
  color: #37474F; }

#free-valuation .valuation-form .address-select {
  color: #37474F;
  text-align: center; }

#free-valuation .valuation-form .valuation-options .valuation-container {
  text-align: center; }

#free-valuation .valuation-form .valuation-options .valuation-container .valuation {
  background: #ffffff;
  border: solid 2px #37474F;
  padding: 20px 0;
  margin-bottom: 20px; }

#free-valuation .valuation-form .valuation-options .valuation-container .valuation .valuation-title {
  color: #37474F;
  font-size: 28px;
  margin: 0px; }

#free-valuation .valuation-form .valuation-options .valuation-container .valuation .valuation-price {
  color: #37474F;
  font-size: 28px;
  margin: 0px; }

#free-valuation .valuation-form .valuation-options .valuation-container .valuation-description {
  font-size: 13px;
  color: #37474F; }

#terms {
  color: #37474F;
  padding: 50px 25px; }

#terms ol {
  list-style-type: none;
  counter-reset: item;
  margin: 0;
  padding: 0; }

#terms ol > li {
  display: table;
  counter-increment: item;
  margin-bottom: 0.6em; }

#terms ol > li:before {
  content: counters(item, ".") ". ";
  display: table-cell;
  padding-right: 0.6em; }

#terms li ol > li {
  margin: 0; }

#terms li ol > li:before {
  content: counters(item, ".") " "; }

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2FwcC5zY3NzIiwic291cmNlcyI6WyIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9zcmMvYXNzZXRzL3Njc3MvYXBwLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2ZvdW5kYXRpb24uc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivbm9ybWFsaXplLXNjc3Mvc2Fzcy9fbm9ybWFsaXplLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL25vcm1hbGl6ZS1zY3NzL3Nhc3Mvbm9ybWFsaXplL192YXJpYWJsZXMuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivbm9ybWFsaXplLXNjc3Mvc2Fzcy9ub3JtYWxpemUvX3ZlcnRpY2FsLXJoeXRobS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9ub3JtYWxpemUtc2Nzcy9zYXNzL25vcm1hbGl6ZS9fbm9ybWFsaXplLW1peGluLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX21pc3NpbmctZGVwZW5kZW5jaWVzLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3RydWUuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19wdXJnZS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3JlbW92ZS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3JlcGxhY2Uuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL190by1saXN0LnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3V0aWwuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fbWF0aC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191bml0LnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3ZhbHVlLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2RpcmVjdGlvbi5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19jb2xvci5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19tYXRoLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3NlbGVjdG9yLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2ZsZXguc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19taXhpbnMuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvX2dsb2JhbC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19ncmlkLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3Jvdy5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19jb2x1bW4uc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fc2l6ZS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19wb3NpdGlvbi5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19ndXR0ZXIuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fY2xhc3Nlcy5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19sYXlvdXQuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fZmxleC1ncmlkLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX3R5cG9ncmFwaHkuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fYmFzZS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19oZWxwZXJzLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX2FsaWdubWVudC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19wcmludC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZm9ybXMuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3RleHQuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2NoZWNrYm94LnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19sYWJlbC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9faGVscC10ZXh0LnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19pbnB1dC1ncm91cC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZmllbGRzZXQuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3NlbGVjdC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fcmFuZ2Uuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3Byb2dyZXNzLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19tZXRlci5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZXJyb3Iuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdmlzaWJpbGl0eS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19mbG9hdC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19idXR0b24uc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9uLWdyb3VwLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2FjY29yZGlvbi1tZW51LnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2FjY29yZGlvbi5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19iYWRnZS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19icmVhZGNydW1icy5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jYWxsb3V0LnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2NhcmQuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fY2xvc2UtYnV0dG9uLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2RyaWxsZG93bi5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19kcm9wZG93bi1tZW51LnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Ryb3Bkb3duLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2ZsZXguc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcmVzcG9uc2l2ZS1lbWJlZC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19sYWJlbC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZWRpYS1vYmplY3Quc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fbWVudS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZW51LWljb24uc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fb2ZmLWNhbnZhcy5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19vcmJpdC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19wYWdpbmF0aW9uLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3Byb2dyZXNzLWJhci5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19yZXZlYWwuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fc2xpZGVyLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3N0aWNreS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zd2l0Y2guc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGFibGUuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGFicy5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190aXRsZS1iYXIuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdG9wLWJhci5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190aHVtYm5haWwuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdG9vbHRpcC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL19zZXR0aW5ncy5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191dGlsLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX21hdGguc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdW5pdC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL192YWx1ZS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19kaXJlY3Rpb24uc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fY29sb3Iuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fbWF0aC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19zZWxlY3Rvci5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19mbGV4LnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2JyZWFrcG9pbnQuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fbWl4aW5zLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9zcmMvYXNzZXRzL3Njc3MvaW1vdmVob21lL190aGVtZS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2ltb3ZlaG9tZS9fdGVtcGxhdGUuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvX3Rvb2x0aXAuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvYWNjb3VudC9fYWNjb3VudC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2ltb3ZlaG9tZS9hY2NvdW50L19sb2dpbi5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2ltb3ZlaG9tZS9hY2NvdW50L19yZWdpc3Rlci5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2ltb3ZlaG9tZS9hY2NvdW50L19yZXNldC1wYXNzd29yZC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2ltb3ZlaG9tZS9hY2NvdW50L19mb3Jnb3QtcGFzc3dvcmQuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvaG9tZS9faG9tZS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2ltb3ZlaG9tZS9pbmNsdWRlcy9fc2F2aW5ncy1jYWxjdWxhdG9yLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9zcmMvYXNzZXRzL3Njc3MvaW1vdmVob21lL2xpc3RpbmcvX2NoZWNrbGlzdC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2ltb3ZlaG9tZS9saXN0aW5nL19saXN0aW5nLWFib3V0LnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9zcmMvYXNzZXRzL3Njc3MvaW1vdmVob21lL2xpc3RpbmcvX2xpc3RpbmctZGV0YWlscy5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2ltb3ZlaG9tZS9saXN0aW5nL19saXN0aW5nLWV4dHJhcy5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2ltb3ZlaG9tZS9saXN0aW5nL19saXN0aW5nLW1lbnUuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvbGlzdGluZy9fbGlzdGluZy1wYXkuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvbGlzdGluZy9fbGlzdGluZy1wcmV2aWV3LnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9zcmMvYXNzZXRzL3Njc3MvaW1vdmVob21lL2xpc3RpbmcvX2xpc3RpbmctdXBsb2FkLnNjc3MiLCIvaG9tZS9mb3JnZS93d3cuaW1vdmVob21lLmNvbS9wdWJsaWNfaHRtbC9zcmMvYXNzZXRzL3Njc3MvaW1vdmVob21lL2xpc3RpbmcvX2xpc3RpbmctdmFsdWUuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvbmF2YmFyL19uYXZiYXIuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvZGFzaGJvYXJkL19kYXNoYm9hcmQuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvcHJvcGVydHkvX3Byb3BlcnR5LWVkaXQuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvcHJvcGVydHkvX3Byb3BlcnR5LXZpZXcuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvYWRtaW4vYWRtaW4uc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvbW9ydGdhZ2VzL19tb3J0Z2FnZXMuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvY29udmV5YW5jaW5nL19jb252ZXlhbmNpbmcuc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvcHJpY2UtbGlzdC9fcHJpY2UtbGlzdC5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2ltb3ZlaG9tZS9ob3ctaXQtd29ya3MvX2hvdy1pdC13b3Jrcy5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2ltb3ZlaG9tZS9mYXEvX2ZhcS5zY3NzIiwiL2hvbWUvZm9yZ2Uvd3d3Lmltb3ZlaG9tZS5jb20vcHVibGljX2h0bWwvc3JjL2Fzc2V0cy9zY3NzL2ltb3ZlaG9tZS9mcmVlLXZhbHVhdGlvbi9fZnJlZS12YWx1YXRpb24uc2NzcyIsIi9ob21lL2ZvcmdlL3d3dy5pbW92ZWhvbWUuY29tL3B1YmxpY19odG1sL3NyYy9hc3NldHMvc2Nzcy9pbW92ZWhvbWUvdGVybXMvX3Rlcm1zLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcmQgUGFydHkgU3R5bGVzXG5AaW1wb3J0ICd+Zm91bmRhdGlvbi1zaXRlcy9zY3NzL2ZvdW5kYXRpb24nO1xuQGltcG9ydCAnfmFuaW1hdGUuY3NzL2FuaW1hdGUuY3NzJztcbkBpbXBvcnQgJ35hbmd1bGFyLXRvYXN0ci9kaXN0L2FuZ3VsYXItdG9hc3RyLmNzcyc7XG5AaW1wb3J0ICd+b3dsLmNhcm91c2VsL2Rpc3QvYXNzZXRzL293bC5jYXJvdXNlbC5jc3MnO1xuQGltcG9ydCAnfm93bC5jYXJvdXNlbC9kaXN0L2Fzc2V0cy9vd2wudGhlbWUuZGVmYXVsdC5taW4uY3NzJztcbkBpbXBvcnQgJ35uZy10YWJsZS9idW5kbGVzL25nLXRhYmxlLmNzcyc7XG5AaW1wb3J0ICd+c3dlZXRhbGVydC9kaXN0L3N3ZWV0YWxlcnQuY3NzJztcbkBpbXBvcnQgJ350cml4L2Rpc3QvdHJpeC5jc3MnO1xuQGluY2x1ZGUgZm91bmRhdGlvbi1ldmVyeXRoaW5nO1xuQGltcG9ydCAnc2V0dGluZ3MnO1xuXG4vLyBHbG9iYWxcbkBpbXBvcnQgJ2ltb3ZlaG9tZS90aGVtZSc7XG5AaW1wb3J0ICdpbW92ZWhvbWUvdGVtcGxhdGUnO1xuQGltcG9ydCAnaW1vdmVob21lL3Rvb2x0aXAnO1xuXG4vLyBpbW92ZSBBY2NvdW50XG5AaW1wb3J0ICdpbW92ZWhvbWUvYWNjb3VudC9hY2NvdW50JztcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9hY2NvdW50L2xvZ2luJztcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9hY2NvdW50L3JlZ2lzdGVyJztcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9hY2NvdW50L3Jlc2V0LXBhc3N3b3JkJztcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9hY2NvdW50L2ZvcmdvdC1wYXNzd29yZCc7XG5cbi8vIGltb3ZlIEhvbWVcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9ob21lL2hvbWUnO1xuXG4vLyBpbW92ZSBJbmNsdWRlc1xuQGltcG9ydCAnaW1vdmVob21lL2luY2x1ZGVzL3NhdmluZ3MtY2FsY3VsYXRvcic7XG5cbi8vIGltb3ZlIExpc3RpbmdcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9saXN0aW5nL2NoZWNrbGlzdCc7XG5AaW1wb3J0ICdpbW92ZWhvbWUvbGlzdGluZy9saXN0aW5nLWFib3V0JztcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9saXN0aW5nL2xpc3RpbmctZGV0YWlscyc7XG5AaW1wb3J0ICdpbW92ZWhvbWUvbGlzdGluZy9saXN0aW5nLWV4dHJhcyc7XG5AaW1wb3J0ICdpbW92ZWhvbWUvbGlzdGluZy9saXN0aW5nLW1lbnUnO1xuQGltcG9ydCAnaW1vdmVob21lL2xpc3RpbmcvbGlzdGluZy1wYXknO1xuQGltcG9ydCAnaW1vdmVob21lL2xpc3RpbmcvbGlzdGluZy1wcmV2aWV3JztcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9saXN0aW5nL2xpc3RpbmctdXBsb2FkJztcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9saXN0aW5nL2xpc3RpbmctdmFsdWUnO1xuXG4vLyBpbW92ZSBOYXZiYXJcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9uYXZiYXIvbmF2YmFyJztcblxuLy8gaW1vdmUgUHJvcGVydHkgRGFzaGJvYXJkXG5AaW1wb3J0ICdpbW92ZWhvbWUvZGFzaGJvYXJkL2Rhc2hib2FyZCc7XG5AaW1wb3J0ICdpbW92ZWhvbWUvcHJvcGVydHkvcHJvcGVydHktZWRpdCc7XG5AaW1wb3J0ICdpbW92ZWhvbWUvcHJvcGVydHkvcHJvcGVydHktdmlldyc7XG5cbi8vIGltb3ZlIEFkbWluXG5AaW1wb3J0ICdpbW92ZWhvbWUvYWRtaW4vYWRtaW4nO1xuXG4vLyBpbW92ZSBNb3J0Z2FnZXNcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9tb3J0Z2FnZXMvbW9ydGdhZ2VzJztcblxuLy8gaW1vdmUgQ29udmV5YW5jaW5nXG5AaW1wb3J0ICdpbW92ZWhvbWUvY29udmV5YW5jaW5nL2NvbnZleWFuY2luZyc7XG5cbi8vIGltb3ZlIFByaWNlIExpc3RcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9wcmljZS1saXN0L3ByaWNlLWxpc3QnO1xuXG4vLyBpbW92ZSBIb3cgaXQgV29ya3NcbkBpbXBvcnQgJ2ltb3ZlaG9tZS9ob3ctaXQtd29ya3MvaG93LWl0LXdvcmtzJztcblxuLy8gaW1vdmUgRkFRU1xuQGltcG9ydCAnaW1vdmVob21lL2ZhcS9mYXEnO1xuXG4vLyBpbW92ZSBGcmVlIFZhbHVhdGlvblxuQGltcG9ydCAnaW1vdmVob21lL2ZyZWUtdmFsdWF0aW9uL2ZyZWUtdmFsdWF0aW9uJztcblxuLy8gdGVybXNcbkBpbXBvcnQgJ2ltb3ZlaG9tZS90ZXJtcy90ZXJtcyc7XG4iLCIvKipcbiAqIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbiAqIFZlcnNpb24gNi4zLjFcbiAqIGZvdW5kYXRpb24uenVyYi5jb21cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuICovXG5cbi8vIERlcGVuZGVuY2llc1xuQGltcG9ydCAnLi4vX3ZlbmRvci9ub3JtYWxpemUtc2Nzcy9zYXNzL25vcm1hbGl6ZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvbWlzc2luZy1kZXBlbmRlbmNpZXMnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL3RydWUnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcHVyZ2UnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcmVtb3ZlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3JlcGxhY2UnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvdG8tbGlzdCc7XG5cbi8vIFNldHRpbmdzXG4vLyBpbXBvcnQgeW91ciBvd24gYHNldHRpbmdzYCBoZXJlIG9yXG4vLyBpbXBvcnQgYW5kIG1vZGlmeSB0aGUgZGVmYXVsdCBzZXR0aW5ncyB0aHJvdWdoXG4vLyBAaW1wb3J0ICdzZXR0aW5ncy9zZXR0aW5ncyc7XG5cbi8vIFNhc3MgdXRpbGl0aWVzXG5AaW1wb3J0ICd1dGlsL3V0aWwnO1xuXG4vLyBHbG9iYWwgdmFyaWFibGVzIGFuZCBzdHlsZXNcbkBpbXBvcnQgJ2dsb2JhbCc7XG5cbi8vIENvbXBvbmVudHNcbkBpbXBvcnQgJ2dyaWQvZ3JpZCc7XG5AaW1wb3J0ICd0eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQGltcG9ydCAnZm9ybXMvZm9ybXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy92aXNpYmlsaXR5JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxvYXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24tZ3JvdXAnO1xuQGltcG9ydCAnY29tcG9uZW50cy9hY2NvcmRpb24tbWVudSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2FjY29yZGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2JhZGdlJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jYWxsb3V0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2FyZCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Nsb3NlLWJ1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2RyaWxsZG93bic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Ryb3Bkb3duLW1lbnUnO1xuQGltcG9ydCAnY29tcG9uZW50cy9kcm9wZG93bic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2ZsZXgnO1xuQGltcG9ydCAnY29tcG9uZW50cy9yZXNwb25zaXZlLWVtYmVkJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbGFiZWwnO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZWRpYS1vYmplY3QnO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZW51JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVudS1pY29uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb2ZmLWNhbnZhcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL29yYml0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcGFnaW5hdGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Byb2dyZXNzLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3JldmVhbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3NsaWRlcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3N0aWNreSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3N3aXRjaCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RhYmxlJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFicyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RpdGxlLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RvcC1iYXInO1xuQGltcG9ydCAnY29tcG9uZW50cy90aHVtYm5haWwnO1xuQGltcG9ydCAnY29tcG9uZW50cy90b29sdGlwJztcblxuQG1peGluIGZvdW5kYXRpb24tZXZlcnl0aGluZygkZmxleDogZmFsc2UpIHtcbiAgQGlmICRmbGV4IHtcbiAgICAkZ2xvYmFsLWZsZXhib3g6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcztcbiAgQGlmIG5vdCAkZmxleCB7XG4gICAgQGluY2x1ZGUgZm91bmRhdGlvbi1ncmlkO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsZXgtZ3JpZDtcbiAgfVxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXR5cG9ncmFwaHk7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1iYWRnZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1icmVhZGNydW1icztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1idXR0b24tZ3JvdXA7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2FsbG91dDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jYXJkO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNsb3NlLWJ1dHRvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lbnUtaWNvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1kcmlsbGRvd24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1kcm9wZG93bjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1kcm9wZG93bi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXJlc3BvbnNpdmUtZW1iZWQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbGFiZWw7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVkaWEtb2JqZWN0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW9mZi1jYW52YXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tb3JiaXQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcGFnaW5hdGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm9ncmVzcy1iYXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc2xpZGVyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXN0aWNreTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1yZXZlYWw7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc3dpdGNoO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRhYmxlO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRhYnM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGh1bWJuYWlsO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRpdGxlLWJhcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10b29sdGlwO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRvcC1iYXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdmlzaWJpbGl0eS1jbGFzc2VzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsb2F0LWNsYXNzZXM7XG5cbiAgQGlmICRmbGV4IHtcbiAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsZXgtY2xhc3NlcztcbiAgfVxufVxuIiwiQGltcG9ydCAnbm9ybWFsaXplL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdub3JtYWxpemUvdmVydGljYWwtcmh5dGhtJztcbkBpbXBvcnQgJ25vcm1hbGl6ZS9ub3JtYWxpemUtbWl4aW4nO1xuIiwiLy9cbi8vIFZhcmlhYmxlc1xuLy9cbi8vIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdmFsdWVzIGJ5IHNldHRpbmcgdGhlIHZhcmlhYmxlcyBpbiB5b3VyIFNhc3Ncbi8vIGJlZm9yZSBpbXBvcnRpbmcgdGhlIG5vcm1hbGl6ZS1zY3NzIGxpYnJhcnkuXG5cbi8vIFRoZSBmb250IHNpemUgc2V0IG9uIHRoZSByb290IGh0bWwgZWxlbWVudC5cbiRiYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8gVGhlIGJhc2UgbGluZSBoZWlnaHQgZGV0ZXJtaW5lcyB0aGUgYmFzaWMgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0uXG4kYmFzZS1saW5lLWhlaWdodDogMjRweCAhZGVmYXVsdDtcblxuLy8gVGhlIGxlbmd0aCB1bml0IGluIHdoaWNoIHRvIG91dHB1dCB2ZXJ0aWNhbCByaHl0aG0gdmFsdWVzLlxuLy8gU3VwcG9ydGVkIHZhbHVlczogcHgsIGVtLCByZW0uXG4kYmFzZS11bml0OiAnZW0nICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBmb250IGZhbWlseS5cbiRiYXNlLWZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmICFkZWZhdWx0O1xuXG4vLyBUaGUgZm9udCBzaXplcyBmb3IgaDEtaDYuXG4kaDEtZm9udC1zaXplOiAyICAgICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xuJGgyLWZvbnQtc2l6ZTogMS41ICAqICRiYXNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRoMy1mb250LXNpemU6IDEuMTcgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XG4kaDQtZm9udC1zaXplOiAxICAgICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xuJGg1LWZvbnQtc2l6ZTogMC44MyAqICRiYXNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRoNi1mb250LXNpemU6IDAuNjcgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBhbW91bnQgbGlzdHMgYW5kIGJsb2NrcXVvdGVzIGFyZSBpbmRlbnRlZC5cbiRpbmRlbnQtYW1vdW50OiA0MHB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZm9sbG93aW5nIHZhcmlhYmxlIGNvbnRyb2xzIHdoZXRoZXIgbm9ybWFsaXplLXNjc3Mgd2lsbCBvdXRwdXRcbi8vIGZvbnQtc2l6ZXMsIGxpbmUtaGVpZ2h0cyBhbmQgYmxvY2stbGV2ZWwgdG9wL2JvdHRvbSBtYXJnaW5zIHRoYXQgZm9ybSBhIGJhc2ljXG4vLyB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHBhZ2UsIHdoaWNoIGRpZmZlcnMgZnJvbSB0aGUgb3JpZ2luYWwgTm9ybWFsaXplLmNzcy5cbi8vIEhvd2V2ZXIsIGNoYW5naW5nIGFueSBvZiB0aGUgdmFyaWFibGVzIGFib3ZlIHdpbGwgY2F1c2Vcbi8vICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHRvIGJlIGF1dG9tYXRpY2FsbHkgc2V0IHRvIHRydWUuXG4kbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobTogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvL1xuLy8gVmVydGljYWwgUmh5dGhtXG4vL1xuLy8gVGhpcyBpcyB0aGUgbWluaW1hbCBhbW91bnQgb2YgY29kZSBuZWVkZWQgdG8gY3JlYXRlIHZlcnRpY2FsIHJoeXRobSBpbiBvdXJcbi8vIENTUy4gSWYgeW91IGFyZSBsb29raW5nIGZvciBhIHJvYnVzdCBzb2x1dGlvbiwgbG9vayBhdCB0aGUgZXhjZWxsZW50IFR5cGV5XG4vLyBsaWJyYXJ5LiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcHRhcmFudG8vdHlwZXlcblxuQGZ1bmN0aW9uIG5vcm1hbGl6ZS1yaHl0aG0oJHZhbHVlLCAkcmVsYXRpdmUtdG86ICRiYXNlLWZvbnQtc2l6ZSwgJHVuaXQ6ICRiYXNlLXVuaXQpIHtcbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSBweCB7XG4gICAgQGVycm9yIFwiVGhlIG5vcm1hbGl6ZSB2ZXJ0aWNhbC1yaHl0aG0gbW9kdWxlIG9ubHkgc3VwcG9ydHMgcHggaW5wdXRzLiBUaGUgdHlwZXkgbGlicmFyeSBpcyBiZXR0ZXIuXCI7XG4gIH1cbiAgQGlmICR1bml0ID09IHJlbSB7XG4gICAgQHJldHVybiAoJHZhbHVlIC8gJGJhc2UtZm9udC1zaXplKSAqIDFyZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gZW0ge1xuICAgIEByZXR1cm4gKCR2YWx1ZSAvICRyZWxhdGl2ZS10bykgKiAxZW07XG4gIH1cbiAgQGVsc2UgeyAvLyAkdW5pdCA9PSBweFxuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG59XG5cbkBtaXhpbiBub3JtYWxpemUtZm9udC1zaXplKCR2YWx1ZSwgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSAncHgnIHtcbiAgICBAZXJyb3IgXCJub3JtYWxpemUtZm9udC1zaXplKCkgb25seSBzdXBwb3J0cyBweCBpbnB1dHMuIFRoZSB0eXBleSBsaWJyYXJ5IGlzIGJldHRlci5cIjtcbiAgfVxuICBmb250LXNpemU6IG5vcm1hbGl6ZS1yaHl0aG0oJHZhbHVlLCAkcmVsYXRpdmUtdG8pO1xufVxuXG5AbWl4aW4gbm9ybWFsaXplLXJoeXRobSgkcHJvcGVydHksICR2YWx1ZXMsICRyZWxhdGl2ZS10bzogJGJhc2UtZm9udC1zaXplKSB7XG4gICR2YWx1ZS1saXN0OiAkdmFsdWVzO1xuICAkc2VwOiBzcGFjZTtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlcykgPT0gJ2xpc3QnIHtcbiAgICAkc2VwOiBsaXN0LXNlcGFyYXRvcigkdmFsdWVzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHZhbHVlLWxpc3Q6IGFwcGVuZCgoKSwgJHZhbHVlcyk7XG4gIH1cblxuICAkbm9ybWFsaXplZC12YWx1ZXM6ICgpO1xuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlLWxpc3Qge1xuICAgIEBpZiB1bml0bGVzcygkdmFsdWUpIGFuZCAkdmFsdWUgIT0gMCB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAqIG5vcm1hbGl6ZS1yaHl0aG0oJGJhc2UtbGluZS1oZWlnaHQsICRyZWxhdGl2ZS10byk7XG4gICAgfVxuICAgICRub3JtYWxpemVkLXZhbHVlczogYXBwZW5kKCRub3JtYWxpemVkLXZhbHVlcywgJHZhbHVlLCAkc2VwKTtcbiAgfVxuICAjeyRwcm9wZXJ0eX06ICRub3JtYWxpemVkLXZhbHVlcztcbn1cblxuQG1peGluIG5vcm1hbGl6ZS1tYXJnaW4oJHZhbHVlcywgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGluY2x1ZGUgbm9ybWFsaXplLXJoeXRobShtYXJnaW4sICR2YWx1ZXMsICRyZWxhdGl2ZS10byk7XG59XG5cbkBtaXhpbiBub3JtYWxpemUtbGluZS1oZWlnaHQoJGZvbnQtc2l6ZSwgJG1pbi1saW5lLXBhZGRpbmc6IDJweCkge1xuICAkbGluZXM6IGNlaWwoJGZvbnQtc2l6ZSAvICRiYXNlLWxpbmUtaGVpZ2h0KTtcbiAgLy8gSWYgbGluZXMgYXJlIGNyYW1wZWQgaW5jbHVkZSBzb21lIGV4dHJhIGxlYWRpbmcuXG4gIEBpZiAoJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkZm9udC1zaXplKSA8ICgkbWluLWxpbmUtcGFkZGluZyAqIDIpIHtcbiAgICAkbGluZXM6ICRsaW5lcyArIDE7XG4gIH1cbiAgQGluY2x1ZGUgbm9ybWFsaXplLXJoeXRobShsaW5lLWhlaWdodCwgJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cbiIsIi8vIEhlbHBlciBmdW5jdGlvbiBmb3IgdGhlIG5vcm1hbGl6ZSgpIG1peGluLlxuQGZ1bmN0aW9uIF9ub3JtYWxpemUtaW5jbHVkZSgkc2VjdGlvbiwgJGV4Y2x1ZGU6IG51bGwpIHtcbiAgLy8gSW5pdGlhbGl6ZSB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBuZWVkZWQgYnkgdGhpcyBmdW5jdGlvbi5cbiAgQGlmIG5vdCBnbG9iYWxfdmFyaWFibGVfZXhpc3RzKF9ub3JtYWxpemUtaW5jbHVkZSkge1xuICAgICRfbm9ybWFsaXplLWluY2x1ZGU6ICgpICFnbG9iYWw7XG4gICAgJF9ub3JtYWxpemUtZXhjbHVkZTogKCkgIWdsb2JhbDtcbiAgfVxuICAvLyBTaW5jZSB3ZSBhcmUgZ2l2ZW4gMiBwYXJhbWV0ZXJzLCBzZXQgdGhlIGdsb2JhbCB2YXJpYWJsZXMuXG4gIEBpZiAkZXhjbHVkZSAhPSBudWxsIHtcbiAgICAkaW5jbHVkZTogJHNlY3Rpb247XG4gICAgLy8gU2FzcyBkb2Vzbid0IGhhdmUgc3RhdGljIHZhcmlhYmxlcywgc28gdGhlIHdvcmstYXJvdW5kIGlzIHRvIHN0dWZmIHRoZXNlXG4gICAgLy8gdmFsdWVzIGludG8gZ2xvYmFsIHZhcmlhYmxlcyBzbyB3ZSBjYW4gYWNjZXNzIHRoZW0gaW4gZnV0dXJlIGNhbGxzLlxuICAgICRfbm9ybWFsaXplLWluY2x1ZGU6IGlmKHR5cGUtb2YoJGluY2x1ZGUpID09ICdsaXN0JywgJGluY2x1ZGUsICgkaW5jbHVkZSkpICFnbG9iYWw7XG4gICAgJF9ub3JtYWxpemUtZXhjbHVkZTogaWYodHlwZS1vZigkZXhjbHVkZSkgPT0gJ2xpc3QnLCAkZXhjbHVkZSwgKCRleGNsdWRlKSkgIWdsb2JhbDtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBDaGVjayBpZiAkc2VjdGlvbiBpcyBpbiB0aGUgJGluY2x1ZGUgbGlzdC5cbiAgQGlmIGluZGV4KCRfbm9ybWFsaXplLWluY2x1ZGUsICRzZWN0aW9uKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIC8vIElmICRpbmNsdWRlIGlzIHNldCB0byAoYWxsKSwgbWFrZSBzdXJlICRzZWN0aW9uIGlzIG5vdCBpbiAkZXhjbHVkZS5cbiAgQGVsc2UgaWYgbm90IGluZGV4KCRfbm9ybWFsaXplLWV4Y2x1ZGUsICRzZWN0aW9uKSBhbmQgaW5kZXgoJF9ub3JtYWxpemUtaW5jbHVkZSwgYWxsKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbkBtaXhpbiBub3JtYWxpemUoJGluY2x1ZGU6IChhbGwpLCAkZXhjbHVkZTogKCkpIHtcbiAgLy8gSW5pdGlhbGl6ZSB0aGUgaGVscGVyIGZ1bmN0aW9uIGJ5IHBhc3NpbmcgaXQgdGhpcyBtaXhpbidzIHBhcmFtZXRlcnMuXG4gICRpbml0OiBfbm9ybWFsaXplLWluY2x1ZGUoJGluY2x1ZGUsICRleGNsdWRlKTtcblxuICAvLyBJZiB3ZSd2ZSBjdXN0b21pemVkIGFueSBmb250IHZhcmlhYmxlcywgd2UnbGwgbmVlZCBleHRyYSBwcm9wZXJ0aWVzLlxuICBAaWYgJGJhc2UtZm9udC1zaXplICE9IDE2cHhcbiAgICBvciAkYmFzZS1saW5lLWhlaWdodCAhPSAyNHB4XG4gICAgb3IgJGJhc2UtdW5pdCAhPSAnZW0nXG4gICAgb3IgJGgxLWZvbnQtc2l6ZSAhPSAyICAgICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGgyLWZvbnQtc2l6ZSAhPSAxLjUgICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGgzLWZvbnQtc2l6ZSAhPSAxLjE3ICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGg0LWZvbnQtc2l6ZSAhPSAxICAgICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGg1LWZvbnQtc2l6ZSAhPSAwLjgzICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGg2LWZvbnQtc2l6ZSAhPSAwLjY3ICogJGJhc2UtZm9udC1zaXplIHtcbiAgICAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobTogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgLyohIG5vcm1hbGl6ZS1zY3NzIHwgTUlUL0dQTHYyIExpY2Vuc2UgfCBiaXQubHkvbm9ybWFsaXplLXNjc3MgKi9cblxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGRvY3VtZW50KSB7XG4gICAgLyogRG9jdW1lbnRcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogMS4gQ2hhbmdlIHRoZSBkZWZhdWx0IGZvbnQgZmFtaWx5IGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICAgICAqIDIuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAgICAgKiAzLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluXG4gICAgICogICAgSUUgb24gV2luZG93cyBQaG9uZSBhbmQgaW4gaU9TLlxuICAgICAqL1xuXG4gICAgaHRtbCB7XG4gICAgICBmb250LWZhbWlseTogJGJhc2UtZm9udC1mYW1pbHk7IC8qIDEgKi9cbiAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAgIC8vIENvcnJlY3Qgb2xkIGJyb3dzZXIgYnVnIHRoYXQgcHJldmVudGVkIGFjY2Vzc2libGUgcmVzaXppbmcgb2YgdGV4dFxuICAgICAgICAvLyB3aGVuIHJvb3QgZm9udC1zaXplIGlzIHNldCB3aXRoIHB4IG9yIGVtLlxuICAgICAgICBmb250LXNpemU6ICgkYmFzZS1mb250LXNpemUgLyAxNnB4KSAqIDEwMCU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAoJGJhc2UtbGluZS1oZWlnaHQgLyAkYmFzZS1mb250LXNpemUpICogMWVtOyAvKiAyICovXG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAyICovXG4gICAgICB9XG4gICAgICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMyAqL1xuICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAzICovXG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShzZWN0aW9ucykge1xuICAgIC8qIFNlY3Rpb25zXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICAgICAqL1xuXG4gICAgYm9keSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICovXG5cbiAgICBhcnRpY2xlLFxuICAgIGFzaWRlLFxuICAgIGZvb3RlcixcbiAgICBoZWFkZXIsXG4gICAgbmF2LFxuICAgIHNlY3Rpb24ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICAgICAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gICAgICovXG5cbiAgICBoMSB7XG4gICAgICBAaW5jbHVkZSBub3JtYWxpemUtZm9udC1zaXplKCRoMS1mb250LXNpemUpO1xuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWxpbmUtaGVpZ2h0KCRoMS1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xuICAgICAgICAvKiBTZXQgMSB1bml0IG9mIHZlcnRpY2FsIHJoeXRobSBvbiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lucy4gKi9cbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMS1mb250LXNpemUpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBtYXJnaW46IDAuNjdlbSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICBoMiB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGgyLWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDItZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMi1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoMyB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGgzLWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDMtZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMy1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoNCB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg0LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDQtZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNC1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoNSB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg1LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDUtZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNS1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoNiB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg2LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDYtZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNi1mb250LXNpemUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoZ3JvdXBpbmcpIHtcbiAgICAvKiBHcm91cGluZyBjb250ZW50XG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAvKipcbiAgICAgICAqIFNldCAxIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtIG9uIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW4uXG4gICAgICAgKi9cblxuICAgICAgYmxvY2txdW90ZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAkaW5kZW50LWFtb3VudCk7XG4gICAgICB9XG5cbiAgICAgIGRsLFxuICAgICAgb2wsXG4gICAgICB1bCB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwKTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBUdXJuIG9mZiBtYXJnaW5zIG9uIG5lc3RlZCBsaXN0cy5cbiAgICAgICAqL1xuXG4gICAgICBvbCxcbiAgICAgIHVsIHtcbiAgICAgICAgb2wsXG4gICAgICAgIHVsIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZGQge1xuICAgICAgICBtYXJnaW46IDAgMCAwICRpbmRlbnQtYW1vdW50O1xuICAgICAgfVxuXG4gICAgICBvbCxcbiAgICAgIHVsIHtcbiAgICAgICAgcGFkZGluZzogMCAwIDAgJGluZGVudC1hbW91bnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICovXG5cbiAgICBmaWdjYXB0aW9uLFxuICAgIGZpZ3VyZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgbWFyZ2luIGluIElFIDguXG4gICAgICovXG5cbiAgICBmaWd1cmUge1xuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxICRpbmRlbnQtYW1vdW50KTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgbWFyZ2luOiAxZW0gJGluZGVudC1hbW91bnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAgICAgKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAgICAgKi9cblxuICAgIGhyIHtcbiAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAxICovXG4gICAgICBoZWlnaHQ6IDA7IC8qIDEgKi9cbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUuXG4gICAgICovXG5cbiAgICBtYWluIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAvKipcbiAgICAgICAqIFNldCAxIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtIG9uIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW4uXG4gICAgICAgKi9cblxuICAgICAgcCxcbiAgICAgIHByZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAgICAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAgICAgKi9cblxuICAgIHByZSB7XG4gICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgICAgIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShsaW5rcykge1xuICAgIC8qIExpbmtzXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIDEuIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAgICAgKiAyLiBSZW1vdmUgZ2FwcyBpbiBsaW5rcyB1bmRlcmxpbmUgaW4gaU9TIDgrIGFuZCBTYWZhcmkgOCsuXG4gICAgICovXG5cbiAgICBhIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvKiAxICovXG4gICAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHRoZSBvdXRsaW5lIG9uIGZvY3VzZWQgbGlua3Mgd2hlbiB0aGV5IGFyZSBhbHNvIGFjdGl2ZSBvciBob3ZlcmVkXG4gICAgICogaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gICAgICovXG5cbiAgICBhOmFjdGl2ZSxcbiAgICBhOmhvdmVyIHtcbiAgICAgIG91dGxpbmUtd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZSh0ZXh0KSB7XG4gICAgLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxuICAgICAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG4gICAgICovXG5cbiAgICBhYmJyW3RpdGxlXSB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLyogMiAqL1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJldmVudCB0aGUgZHVwbGljYXRlIGFwcGxpY2F0aW9uIG9mIGBib2xkZXJgIGJ5IHRoZSBuZXh0IHJ1bGUgaW4gU2FmYXJpIDYuXG4gICAgICovXG5cbiAgICBiLFxuICAgIHN0cm9uZyB7XG4gICAgICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICAgICAqL1xuXG4gICAgYixcbiAgICBzdHJvbmcge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAgICAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAgICAgKi9cblxuICAgIGNvZGUsXG4gICAga2JkLFxuICAgIHNhbXAge1xuICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gICAgICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLS5cbiAgICAgKi9cblxuICAgIGRmbiB7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGJhY2tncm91bmQgYW5kIGNvbG9yIGluIElFIDktLlxuICAgICAqL1xuXG4gICAgbWFyayB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xuICAgICAgY29sb3I6ICMwMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBzbWFsbCB7XG4gICAgICBmb250LXNpemU6IDgwJTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAgICAgKiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBzdWIsXG4gICAgc3VwIHtcbiAgICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gICAgfVxuXG4gICAgc3ViIHtcbiAgICAgIGJvdHRvbTogLTAuMjVlbTtcbiAgICB9XG5cbiAgICBzdXAge1xuICAgICAgdG9wOiAtMC41ZW07XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShlbWJlZGRlZCkge1xuICAgIC8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICovXG5cbiAgICBhdWRpbyxcbiAgICB2aWRlbyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gaU9TIDQtNy5cbiAgICAgKi9cblxuICAgIGF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgaGVpZ2h0OiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAtLlxuICAgICAqL1xuXG4gICAgaW1nIHtcbiAgICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlIHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAgICAgKi9cblxuICAgIHN2Zzpub3QoOnJvb3QpIHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShmb3Jtcykge1xuICAgIC8qIEZvcm1zXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gICAgICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICAgICAqL1xuXG4gICAgYnV0dG9uLFxuICAgIGlucHV0LFxuICAgIG9wdGdyb3VwLFxuICAgIHNlbGVjdCxcbiAgICB0ZXh0YXJlYSB7XG4gICAgICBmb250LWZhbWlseTogJGJhc2UtZm9udC1mYW1pbHk7IC8qIDEgKi9cbiAgICAgIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICgkYmFzZS1saW5lLWhlaWdodCAvICRiYXNlLWZvbnQtc2l6ZSkgKiAxZW07IC8qIDEgKi9cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cbiAgICAgIH1cbiAgICAgIG1hcmdpbjogMDsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICAgICAqL1xuXG4gICAgYnV0dG9uIHtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICAgICAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAgICAgKi9cblxuICAgIGJ1dHRvbixcbiAgICBzZWxlY3QgeyAvKiAxICovXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBQcmV2ZW50IGEgV2ViS2l0IGJ1ZyB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2AgYW5kIGB2aWRlb2BcbiAgICAgKiAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXG4gICAgICogMi4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAgICAgKi9cblxuICAgIGJ1dHRvbixcbiAgICBodG1sIFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXG4gICAgW3R5cGU9XCJyZXNldFwiXSxcbiAgICBbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xuICAgIH1cblxuICAgIGJ1dHRvbixcbiAgICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgICBbdHlwZT1cInJlc2V0XCJdLFxuICAgIFt0eXBlPVwic3VibWl0XCJdIHtcblxuICAgICAgLyoqXG4gICAgICAgKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICAgICAgICovXG5cbiAgICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICAgICAgICovXG5cbiAgICAgICY6LW1vei1mb2N1c3Jpbmcge1xuICAgICAgICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cbiAgICAgKi9cblxuICAgIGlucHV0IHtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLS5cbiAgICAgKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAtLlxuICAgICAqL1xuXG4gICAgW3R5cGU9XCJjaGVja2JveFwiXSxcbiAgICBbdHlwZT1cInJhZGlvXCJdIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgICAgIHBhZGRpbmc6IDA7IC8qIDIgKi9cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gICAgICovXG5cbiAgICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gICAgICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gICAgICovXG5cbiAgICBbdHlwZT1cInNlYXJjaFwiXSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cblxuICAgICAgLyoqXG4gICAgICAgKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgYW5kIGNhbmNlbCBidXR0b25zIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuICAgICAgICovXG5cbiAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG4gICAgICAmOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gICAgICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICAgICAqL1xuXG4gICAgOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xuICAgICAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZSB0aGUgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICAgICAqL1xuXG4gICAgZmllbGRzZXQge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgICAgIG1hcmdpbjogMCAycHg7XG4gICAgICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAgICAgKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gICAgICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICAgICAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICAgICAqL1xuXG4gICAgbGVnZW5kIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgICAgIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7IC8qIDEgKi9cbiAgICAgIHBhZGRpbmc6IDA7IC8qIDMgKi9cbiAgICAgIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiAxICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICogMi4gQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAgICAgKi9cblxuICAgIHByb2dyZXNzIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgLyogMSAqL1xuICAgICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRS5cbiAgICAgKi9cblxuICAgIHRleHRhcmVhIHtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoaW50ZXJhY3RpdmUpIHtcbiAgICAvKiBJbnRlcmFjdGl2ZVxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAvKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFLCBhbmQgRmlyZWZveC5cbiAgICAgKi9cblxuICAgIGRldGFpbHMge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBzdW1tYXJ5IHtcbiAgICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICAgICAqL1xuXG4gICAgbWVudSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgLypcbiAgICAgICAgICogMS4gU2V0IDEgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbi5cbiAgICAgICAgICogMi4gU2V0IGNvbnNpc3RlbnQgc3BhY2UgZm9yIHRoZSBsaXN0IHN0eWxlIGltYWdlLlxuICAgICAgICAgKi9cblxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbWFyZ2luKDEgMCk7IC8qIDEgKi9cbiAgICAgICAgcGFkZGluZzogMCAwIDAgJGluZGVudC1hbW91bnQ7IC8qIDIgKi9cblxuICAgICAgICAvKipcbiAgICAgICAgICogVHVybiBvZmYgbWFyZ2lucyBvbiBuZXN0ZWQgbGlzdHMuXG4gICAgICAgICAqL1xuXG4gICAgICAgIG1lbnUgJixcbiAgICAgICAgb2wgJixcbiAgICAgICAgdWwgJiB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShzY3JpcHRpbmcpIHtcbiAgICAvKiBTY3JpcHRpbmdcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICovXG5cbiAgICBjYW52YXMge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxuICAgICAqL1xuXG4gICAgdGVtcGxhdGUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGhpZGRlbikge1xuICAgIC8qIEhpZGRlblxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMC0uXG4gICAgICovXG5cbiAgICBbaGlkZGVuXSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vXG4vLy8gQ2hlY2tzIHdoZXRoZXIgYCRmdW5jdGlvbnNgIGV4aXN0IGluIGdsb2JhbCBzY29wZS5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtBcmdMaXN0fSAkZnVuY3Rpb25zIC0gbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2hlY2sgZm9yXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfSBXaGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgbWlzc2luZyBkZXBlbmRlbmNpZXNcbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLW1pc3NpbmctZGVwZW5kZW5jaWVzKCRmdW5jdGlvbnMuLi4pIHtcbiAgJG1pc3NpbmctZGVwZW5kZW5jaWVzOiAoKTtcbiAgXG4gIEBlYWNoICRmdW5jdGlvbiBpbiAkZnVuY3Rpb25zIHtcbiAgICBAaWYgbm90IGZ1bmN0aW9uLWV4aXN0cygkZnVuY3Rpb24pIHtcbiAgICAgICRtaXNzaW5nLWRlcGVuZGVuY2llczogYXBwZW5kKCRtaXNzaW5nLWRlcGVuZGVuY2llcywgJGZ1bmN0aW9uLCBjb21tYSk7XG4gICAgfVxuICB9XG4gIFxuICBAaWYgbGVuZ3RoKCRtaXNzaW5nLWRlcGVuZGVuY2llcykgPiAwIHtcbiAgICBAZXJyb3IgJ1VubWV0IGRlcGVuZGVuY2llcyEgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHJlcXVpcmVkOiAjeyRtaXNzaW5nLWRlcGVuZGVuY2llc30uJztcbiAgfVxuXG4gIEByZXR1cm4gbGVuZ3RoKCRtaXNzaW5nLWRlcGVuZGVuY2llcykgPiAwO1xufVxuIiwiLy8vXG4vLy8gUmV0dXJucyB0cnV0aGluZXNzIG9mIGAkdmFsdWVgLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0geyp9ICR2YWx1ZSAtIHZhbHVlIHRvIGNoZWNrXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuLy8vXG4gXG5AZnVuY3Rpb24gc2wtaXMtdHJ1ZSgkdmFsdWUpIHtcbiAgQHJldHVybiBpZigkdmFsdWUgPT0gbnVsbCwgZmFsc2UsICR2YWx1ZSBhbmQgJHZhbHVlICE9IG51bGwgYW5kICR2YWx1ZSAhPSAnJyBhbmQgJHZhbHVlICE9ICgpKTtcbn1cbiIsIi8vLyBSZW1vdmVzIGFsbCBmYWxzZSBhbmQgbnVsbCB2YWx1ZXMgZnJvbSBgJGxpc3RgLlxuLy8vXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLXB1cmdlXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtaXMtdHJ1ZVxuLy8vIEByZXF1aXJlcyBzbC10by1saXN0XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0IC0gbGlzdCB0byBwdXJnZVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1wdXJnZShudWxsIGEgZmFsc2UgYilcbi8vLyAvLyBhIGJcbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9XG4vLy9cblxuQGZ1bmN0aW9uIHNsLXB1cmdlKCRsaXN0KSB7XG4gICRfOiBzbC1taXNzaW5nLWRlcGVuZGVuY2llcygnc2wtaXMtdHJ1ZScsICdzbC10by1saXN0Jyk7XG4gIFxuICAkcmVzdWx0OiAoKTtcblxuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgQGlmIHNsLWlzLXRydWUoJGl0ZW0pIHtcbiAgICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkaXRlbSwgbGlzdC1zZXBhcmF0b3IoJGxpc3QpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHNsLXRvLWxpc3QoJHJlc3VsdCk7XG59XG5cbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1wdXJnZVxuLy8vIEBhbGlhcyBzbC1wdXJnZVxuLy8vXG4gXG5AZnVuY3Rpb24gc2wtY2xlYW4oJGxpc3QpIHtcbiAgQHJldHVybiBzbC1wdXJnZSgkbGlzdCk7XG59XG4iLCIvLy9cbi8vLyBSZW1vdmVzIHZhbHVlKHMpIGAkdmFsdWVgIGZyb20gYCRsaXN0YC5cbi8vL1xuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1yZW1vdmVcbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1yZXBsYWNlXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICAgICRsaXN0ICAgICAgLSBsaXN0IHRvIHVwZGF0ZVxuLy8vIEBwYXJhbSB7Kn0gICAgICAgJHZhbHVlICAgICAtIHZhbHVlIHRvIHJlbW92ZVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1yZW1vdmUoYSBiIGMsIGEpXG4vLy8gLy8gYiBjXG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fVxuLy8vXG5cbkBmdW5jdGlvbiBzbC1yZW1vdmUoJGxpc3QsICR2YWx1ZSkge1xuICAkXzogc2wtbWlzc2luZy1kZXBlbmRlbmNpZXMoJ3NsLXJlcGxhY2UnKTtcblxuICBAcmV0dXJuIHNsLXJlcGxhY2UoJGxpc3QsICR2YWx1ZSwgbnVsbCk7XG59XG5cbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1yZW1vdmVcbi8vLyBAYWxpYXMgc2wtcmVtb3ZlXG4vLy9cblxuQGZ1bmN0aW9uIHNsLXdpdGhvdXQoJGxpc3QsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNsLXJlbW92ZSgkbGlzdCwgJHZhbHVlKTtcbn1cbiIsIi8vL1xuLy8vIFJlcGxhY2VzIGAkb2xkYCBieSBgJG5ld2AgaW4gYCRsaXN0YC5cbi8vL1xuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1yZXBsYWNlXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtaXMtdHJ1ZVxuLy8vIEByZXF1aXJlcyBzbC1wdXJnZVxuLy8vIEByZXF1aXJlcyBzbC10by1saXN0XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICAgICRsaXN0ICAtIGxpc3QgdG8gdXBkYXRlXG4vLy8gQHBhcmFtIHsqfSAgICAgICAkb2xkICAgLSB2YWx1ZSB0byByZXBsYWNlXG4vLy8gQHBhcmFtIHsqfSAgICAgICAkdmFsdWUgLSBuZXcgdmFsdWUgZm9yICRvbGRcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtcmVwbGFjZShhIGIgYywgYiwgeilcbi8vLyAvLyBhIHogY1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1yZXBsYWNlKGEgYiBjLCB5LCB6KVxuLy8vIC8vIGEgYiBjXG4vLy8gXG4vLy8gQHJldHVybiB7TGlzdH1cbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLXJlcGxhY2UoJGxpc3QsICRvbGQsICR2YWx1ZSkge1xuICAkXzogc2wtbWlzc2luZy1kZXBlbmRlbmNpZXMoJ3NsLWlzLXRydWUnLCAnc2wtcHVyZ2UnLCAnc2wtdG8tbGlzdCcpO1xuXG4gICRydW5uaW5nOiB0cnVlO1xuXG4gIEB3aGlsZSAkcnVubmluZyB7XG4gICAgJGluZGV4OiBpbmRleCgkbGlzdCwgJG9sZCk7XG5cbiAgICBAaWYgbm90ICRpbmRleCB7XG4gICAgICAkcnVubmluZzogZmFsc2U7XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgJGxpc3Q6IHNldC1udGgoJGxpc3QsICRpbmRleCwgJHZhbHVlKTtcbiAgICB9XG5cbiAgfVxuXG4gICRsaXN0OiBpZihzbC1pcy10cnVlKCR2YWx1ZSksICRsaXN0LCBzbC1wdXJnZSgkbGlzdCkpO1xuICBcbiAgQHJldHVybiBzbC10by1saXN0KCRsaXN0KTtcbn1cbiIsIi8vL1xuLy8vIENhc3RzIGAkdmFsdWVgIGludG8gYSBsaXN0LlxuLy8vXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLXRvLWxpc3Rcbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlIC0gdmFsdWUgdG8gY2FzdCB0byBsaXN0XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZXBhcmF0b3IgW3NwYWNlXSAtIHNlcGFyYXRvciB0byB1c2Vcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtdG8tbGlzdChhIGIgYywgY29tbWEpXG4vLy8gLy8gYSwgYiwgY1xuLy8vIFxuLy8vIEByZXR1cm4ge0xpc3R9XG4vLy9cblxuQGZ1bmN0aW9uIHNsLXRvLWxpc3QoJHZhbHVlLCAkc2VwYXJhdG9yOiBsaXN0LXNlcGFyYXRvcigkdmFsdWUpKSB7XG4gIEByZXR1cm4gam9pbigoKSwgJHZhbHVlLCAkc2VwYXJhdG9yKTtcbn1cblxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLXRvLWxpc3Rcbi8vLyBAYWxpYXMgc2wtdG8tbGlzdFxuLy8vXG5cbkBmdW5jdGlvbiBzbC1saXN0aWZ5KCR2YWx1ZSkge1xuICBAcmV0dXJuIHNsLXRvLWxpc3QoJHZhbHVlKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AaW1wb3J0ICdtYXRoJztcbkBpbXBvcnQgJ3VuaXQnO1xuQGltcG9ydCAndmFsdWUnO1xuQGltcG9ydCAnZGlyZWN0aW9uJztcbkBpbXBvcnQgJ2NvbG9yJztcbkBpbXBvcnQgJ3NlbGVjdG9yJztcbkBpbXBvcnQgJ2ZsZXgnO1xuQGltcG9ydCAnYnJlYWtwb2ludCc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBGaW5kcyB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgdHdvIGludGVnZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRhIC0gRmlyc3QgbnVtYmVyIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiIC0gU2Vjb25kIG51bWJlciB0byBjb21wYXJlLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yLlxuQGZ1bmN0aW9uIGdjZCgkYSwgJGIpIHtcbiAgLy8gRnJvbTogaHR0cDovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL0dyZWF0ZXN0X2NvbW1vbl9kaXZpc29yI0phdmFTY3JpcHRcbiAgQGlmICgkYiAhPSAwKSB7XG4gICAgQHJldHVybiBnY2QoJGIsICRhICUgJGIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGFicygkYSk7XG4gIH1cbn1cblxuLy8vIEhhbmRsZXMgZGVjaW1hbCBleHBvbmVudHMgYnkgdHJ5aW5nIHRvIGNvbnZlcnQgdGhlbSBpbnRvIGEgZnJhY3Rpb24gYW5kIHRoZW4gdXNlIGEgbnRoLXJvb3QtYWxnb3JpdGhtIGZvciBwYXJ0cyBvZiB0aGUgY2FsY3VsYXRpb25cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBiYXNlIG51bWJlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGV4cG9uZW50IC0gVGhlIGV4cG9uZW50LlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHByb2R1Y3Qgb2YgdGhlIGV4cG9uZW50aWF0aW9uLlxuQGZ1bmN0aW9uIHBvdygkYmFzZSwgJGV4cG9uZW50LCAkcHJlYzogMTIpIHtcbiAgQGlmIChmbG9vcigkZXhwb25lbnQpICE9ICRleHBvbmVudCkge1xuICAgICRwcmVjMiA6IHBvdygxMCwgJHByZWMpO1xuICAgICRleHBvbmVudDogcm91bmQoJGV4cG9uZW50ICogJHByZWMyKTtcbiAgICAkZGVub21pbmF0b3I6IGdjZCgkZXhwb25lbnQsICRwcmVjMik7XG4gICAgQHJldHVybiBudGgtcm9vdChwb3coJGJhc2UsICRleHBvbmVudCAvICRkZW5vbWluYXRvciksICRwcmVjMiAvICRkZW5vbWluYXRvciwgJHByZWMpO1xuICB9XG5cbiAgJHZhbHVlOiAkYmFzZTtcbiAgQGlmICRleHBvbmVudCA+IDEge1xuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGV4cG9uZW50IHtcbiAgICAgICR2YWx1ZTogJHZhbHVlICogJGJhc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRleHBvbmVudCA8IDEge1xuICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggLSRleHBvbmVudCB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAvICRiYXNlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG5AZnVuY3Rpb24gbnRoLXJvb3QoJG51bSwgJG46IDIsICRwcmVjOiAxMikge1xuICAvLyBGcm9tOiBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTnRoX3Jvb3QjSmF2YVNjcmlwdFxuICAkeDogMTtcblxuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRwcmVjIHtcbiAgICAkeDogMSAvICRuICogKCgkbiAtIDEpICogJHggKyAoJG51bSAvIHBvdygkeCwgJG4gLSAxKSkpO1xuICB9XG5cbiAgQHJldHVybiAkeDtcbn1cblxuLy8vIENhbGN1bGF0ZXMgdGhlIGhlaWdodCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHdpZHRoIGZvciBhIGdpdmVuIHJhdGlvLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHJhdGlvIC0gUmF0aW8gdG8gdXNlIHRvIGNhbGN1bGF0ZSB0aGUgaGVpZ2h0LCBmb3JtYXR0ZWQgYXMgYHggYnkgeWAuXG4vLy8gQHJldHVybiB7TnVtYmVyfSBBIHBlcmNlbnRhZ2UgdmFsdWUgZm9yIHRoZSBoZWlnaHQgcmVsYXRpdmUgdG8gdGhlIHdpZHRoIG9mIGEgcmVzcG9uc2l2ZSBjb250YWluZXIuXG5AZnVuY3Rpb24gcmF0aW8tdG8tcGVyY2VudGFnZSgkcmF0aW8pIHtcbiAgJHc6IG50aCgkcmF0aW8sIDEpO1xuICAkaDogbnRoKCRyYXRpbywgMyk7XG4gIEByZXR1cm4gJGggLyAkdyAqIDEwMCU7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuJGdsb2JhbC1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vLyBSZW1vdmVzIHRoZSB1bml0IChlLmcuIHB4LCBlbSwgcmVtKSBmcm9tIGEgdmFsdWUsIHJldHVybmluZyB0aGUgbnVtYmVyIG9ubHkuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bSAtIE51bWJlciB0byBzdHJpcCB1bml0IGZyb20uXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgc2FtZSBudW1iZXIsIHNhbnMgdW5pdC5cbkBmdW5jdGlvbiBzdHJpcC11bml0KCRudW0pIHtcbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG59XG5cbi8vLyBDb252ZXJ0cyBvbmUgb3IgbW9yZSBwaXhlbCB2YWx1ZXMgaW50byBtYXRjaGluZyByZW0gdmFsdWVzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHZhbHVlcyAtIE9uZSBvciBtb3JlIHZhbHVlcyB0byBjb252ZXJ0LiBCZSBzdXJlIHRvIHNlcGFyYXRlIHRoZW0gd2l0aCBzcGFjZXMgYW5kIG5vdCBjb21tYXMuIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgd3JhcCB0aGUgbGlzdCBpbiBwYXJlbnRoZXNlcy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gVGhlIGJhc2UgdmFsdWUgdG8gdXNlIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGByZW1gLiBJZiB5b3UncmUgdXNpbmcgRm91bmRhdGlvbiBvdXQgb2YgdGhlIGJveCwgdGhpcyBpcyAxNnB4LiBJZiB0aGlzIHBhcmFtZXRlciBpcyBgbnVsbGAsIHRoZSBmdW5jdGlvbiB3aWxsIHJlZmVyZW5jZSB0aGUgYCRiYXNlLWZvbnQtc2l6ZWAgdmFyaWFibGUgYXMgdGhlIGJhc2UuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gQSBsaXN0IG9mIGNvbnZlcnRlZCB2YWx1ZXMuXG5AZnVuY3Rpb24gcmVtLWNhbGMoJHZhbHVlcywgJGJhc2U6IG51bGwpIHtcbiAgJHJlbS12YWx1ZXM6ICgpO1xuICAkY291bnQ6IGxlbmd0aCgkdmFsdWVzKTtcblxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXG4gIEBpZiAkYmFzZSA9PSBudWxsIHtcbiAgICAkYmFzZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBJZiB0aGUgYmFzZSBmb250IHNpemUgaXMgYSAlLCB0aGVuIG11bHRpcGx5IGl0IGJ5IDE2cHhcbiAgLy8gVGhpcyBpcyBiZWNhdXNlIDEwMCUgZm9udCBzaXplID0gMTZweCBpbiBtb3N0IGFsbCBicm93c2Vyc1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogKCRiYXNlIC8gMTAwJSkgKiAxNnB4O1xuICB9XG5cbiAgLy8gVXNpbmcgcmVtIGFzIGJhc2UgYWxsb3dzIGNvcnJlY3Qgc2NhbGluZ1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ3JlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgJGNvdW50ID09IDEge1xuICAgIEByZXR1cm4gLXpmLXRvLXJlbSgkdmFsdWVzLCAkYmFzZSk7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRjb3VudCB7XG4gICAgJHJlbS12YWx1ZXM6IGFwcGVuZCgkcmVtLXZhbHVlcywgLXpmLXRvLXJlbShudGgoJHZhbHVlcywgJGkpLCAkYmFzZSkpO1xuICB9XG5cbiAgQHJldHVybiAkcmVtLXZhbHVlcztcbn1cblxuLy8gQ29udmVydHMgYSB1bml0bGVzcywgcGl4ZWwsIG9yIHJlbSB2YWx1ZSB0byBlbSwgZm9yIHVzZSBpbiBicmVha3BvaW50cy5cbkBmdW5jdGlvbiAtemYtYnAtdG8tZW0oJHZhbHVlKSB7XG4gIC8vIFBpeGVsIGFuZCB1bml0bGVzcyB2YWx1ZXMgYXJlIGNvbnZlcnRlZCB0byByZW1zXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyBvciB1bml0bGVzcygkdmFsdWUpIHtcbiAgICAkdmFsdWU6IHJlbS1jYWxjKCR2YWx1ZSwgJGJhc2U6IDE2cHgpO1xuICB9XG5cbiAgLy8gVGhlbiB0aGUgdmFsdWUgaXMgY29udmVydGVkIHRvIGVtc1xuICBAcmV0dXJuIHN0cmlwLXVuaXQoJHZhbHVlKSAqIDFlbTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwgdmFsdWUgdG8gbWF0Y2hpbmcgcmVtIHZhbHVlLiAqQW55KiB2YWx1ZSBwYXNzZWQsIHJlZ2FyZGxlc3Mgb2YgdW5pdCwgaXMgYXNzdW1lZCB0byBiZSBhIHBpeGVsIHZhbHVlLiBCeSBkZWZhdWx0LCB0aGUgYmFzZSBwaXhlbCB2YWx1ZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgcmVtIHZhbHVlIGlzIHRha2VuIGZyb20gdGhlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgdmFyaWFibGUuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gUGl4ZWwgdmFsdWUgdG8gY29udmVydC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gQmFzZSBmb3IgcGl4ZWwgY29udmVyc2lvbi5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgbnVtYmVyIGluIHJlbXMsIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIGdpdmVuIHZhbHVlIGFuZCB0aGUgYmFzZSBwaXhlbCB2YWx1ZS4gcmVtIHZhbHVlcyBhcmUgcGFzc2VkIHRocm91Z2ggYXMgaXMuXG5AZnVuY3Rpb24gLXpmLXRvLXJlbSgkdmFsdWUsICRiYXNlOiBudWxsKSB7XG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkdmFsdWUpICE9ICdudW1iZXInIHtcbiAgICBAd2FybiBpbnNwZWN0KCR2YWx1ZSkgKyAnIHdhcyBwYXNzZWQgdG8gcmVtLWNhbGMoKSwgd2hpY2ggaXMgbm90IGEgbnVtYmVyLic7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cblxuICAvLyBUcmFuc2Zvcm0gZW0gaW50byByZW0gaWYgc29tZW9uZSBoYW5kcyBvdmVyICdlbSdzXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2VtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAxcmVtO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHJlbSBpZiB1bml0cyBmb3IgJHZhbHVlIGlzIG5vdCByZW0gb3IgZW1cbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSAncmVtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlKSAqIDFyZW07XG4gIH1cblxuICAvLyBUdXJuIDByZW0gaW50byAwXG4gIEBpZiAkdmFsdWUgPT0gMHJlbSB7XG4gICAgJHZhbHVlOiAwO1xuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cbi8vLyBDb252ZXJ0cyBhIHBpeGVsLCBwZXJjZW50YWdlLCByZW0gb3IgZW0gdmFsdWUgdG8gYSB1bml0bGVzcyB2YWx1ZSBiYXNlZCBvbiBhIGdpdmVuIGZvbnQgc2l6ZS4gSWRlYWwgZm9yIHdvcmtpbmcgb3V0IHVuaXRsZXNzIGxpbmUgaGVpZ2h0cy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBjb252ZXJ0IHRvIGEgdW5pdGxlc3MgbGluZSBoZWlnaHRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgLSBUaGUgZm9udCBzaXplIHRvIHVzZSB0byB3b3JrIG91dCB0aGUgbGluZSBoZWlnaHQgLSBkZWZhdWx0cyB0byAkZ2xvYmFsLWZvbnQtc2l6ZVxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIFVuaXRsZXNzIG51bWJlclxuQGZ1bmN0aW9uIHVuaXRsZXNzLWNhbGMoJHZhbHVlLCAkYmFzZTogbnVsbCkge1xuXG4gIC8vIElmIG5vIGJhc2UgaXMgZGVmaW5lZCwgZGVmZXIgdG8gdGhlIGdsb2JhbCBmb250IHNpemVcbiAgQGlmICRiYXNlID09IG51bGwge1xuICAgICRiYXNlOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIEZpcnN0LCBsZXRzIGNvbnZlcnQgb3VyICRiYXNlIHRvIHBpeGVsc1xuXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogKCRiYXNlIC8gMTAwJSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmIHVuaXQoJGJhc2UpID09ICdyZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmIHVuaXQoJGJhc2UpID09ICdlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICAvLyBOb3cgbGV0cyBjb252ZXJ0IG91ciB2YWx1ZSB0byBwaXhlbHMgdG9vXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJyUnIHtcbiAgICAkdmFsdWU6ICgkdmFsdWUgLyAxMDAlKSAqICRiYXNlO1xuICB9XG5cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncmVtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAkYmFzZTtcbiAgfVxuXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2VtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAkYmFzZTtcbiAgfVxuXG4gIC8vICdweCdcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIHtcbiAgICBAcmV0dXJuIHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UpO1xuICB9XG5cbiAgLy8gYXNzdW1lIHRoYXQgbGluZS1oZWlnaHRzIGdyZWF0ZXJuIHRoZW4gMTAgYXJlIG1lYW50IHRvIGJlIGFic29sdXRlIGluICdweCdcbiAgQGlmIHVuaXRsZXNzKCR2YWx1ZSkgYW5kICgkdmFsdWUgPiAxMCkge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gc3RyaXAtdW5pdCgkYmFzZSk7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgbm90IGZhbHNleSwgaW4gQ1NTIHRlcm1zLiBGYWxzZXkgdmFsdWVzIGFyZSBgbnVsbGAsIGBub25lYCwgYDBgIHdpdGggYW55IHVuaXQsIG9yIGFuIGVtcHR5IGxpc3QuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkdmFsIC0gVmFsdWUgdG8gY2hlY2suXG4vLy9cbi8vLyBAcmV0dXJucyB7Qm9vbGVhbn0gYHRydWVgIGlmIGAkdmFsYCBpcyBub3QgZmFsc2V5LlxuQGZ1bmN0aW9uIGhhcy12YWx1ZSgkdmFsKSB7XG4gIEBpZiAkdmFsID09IG51bGwgb3IgJHZhbCA9PSBub25lIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG4gIEBpZiB0eXBlLW9mKCR2YWwpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCR2YWwpID09IDAge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJHZhbCkgPT0gMCB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLyBEZXRlcm1pbmUgYSB0b3AvcmlnaHQvYm90dG9tL3JpZ2h0IHZhbHVlIG9uIGEgcGFkZGluZywgbWFyZ2luLCBldGMuIHByb3BlcnR5LCBubyBtYXR0ZXIgaG93IG1hbnkgdmFsdWVzIHdlcmUgcGFzc2VkIGluLiBVc2UgdGhpcyBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyBzaWRlIG9mIGEgdmFsdWUsIGJ1dCBkb24ndCBrbm93IGlmIHRoZSB2YWx1ZSBpcyB1c2luZyBhIHNob3J0aGFuZCBmb3JtYXQuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R8TnVtYmVyfSAkdmFsIC0gVmFsdWUgdG8gYW5hbHl6ZS4gU2hvdWxkIGJlIGEgc2hvcnRoYW5kIHNpemluZyBwcm9wZXJ0eSwgZS5nLiBcIjFlbSAyZW0gMWVtXCJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaWRlIC0gU2lkZSB0byByZXR1cm4uIFNob3VsZCBiZSBgdG9wYCwgYHJpZ2h0YCwgYGJvdHRvbWAsIG9yIGBsZWZ0YC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgc2luZ2xlIHZhbHVlIGJhc2VkIG9uIGAkdmFsYCBhbmQgYCRzaWRlYC5cbkBmdW5jdGlvbiBnZXQtc2lkZSgkdmFsLCAkc2lkZSkge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHZhbCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIEByZXR1cm4gbWFwLWdldCgoXG4gICAgICB0b3A6IG50aCgkdmFsLCAxKSxcbiAgICAgIGJvdHRvbTogbnRoKCR2YWwsIDEpLFxuICAgICAgbGVmdDogbnRoKCR2YWwsIDIpLFxuICAgICAgcmlnaHQ6IG50aCgkdmFsLCAyKSxcbiAgICApLCAkc2lkZSk7XG4gIH1cbiAgQGlmICRsZW5ndGggPT0gMyB7XG4gICAgQHJldHVybiBtYXAtZ2V0KChcbiAgICAgIHRvcDogbnRoKCR2YWwsIDEpLFxuICAgICAgbGVmdDogbnRoKCR2YWwsIDIpLFxuICAgICAgcmlnaHQ6IG50aCgkdmFsLCAyKSxcbiAgICAgIGJvdHRvbTogbnRoKCR2YWwsIDMpLFxuICAgICksICRzaWRlKTtcbiAgfVxuICBAaWYgJGxlbmd0aCA9PSA0IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoKFxuICAgICAgdG9wOiBudGgoJHZhbCwgMSksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMyksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgNCksXG4gICAgKSwgJHNpZGUpO1xuICB9XG59XG5cbi8vLyBHaXZlbiBib3JkZXIgJHZhbCwgZmluZCBhIHNwZWNpZmljIGVsZW1lbnQgb2YgdGhlIGJvcmRlciwgd2hpY2ggaXMgJGVsZW0uIFRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yICRlbGVtIGFyZSB3aWR0aCwgc3R5bGUsIGFuZCBjb2xvci5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbCAtIEJvcmRlciB2YWx1ZSB0byBmaW5kIGEgdmFsdWUgaW4uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZWxlbSAtIEJvcmRlciBjb21wb25lbnQgdG8gZXh0cmFjdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gSWYgdGhlIHZhbHVlIGV4aXN0cywgcmV0dXJucyB0aGUgdmFsdWUuIElmIHRoZSB2YWx1ZSBpcyBub3QgaW4gdGhlIGJvcmRlciBkZWZpbml0aW9uLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gYSAwcHggd2lkdGgsIHNvbGlkIHN0eWxlLCBvciBibGFjayBib3JkZXIuXG5AZnVuY3Rpb24gZ2V0LWJvcmRlci12YWx1ZSgkdmFsLCAkZWxlbSkge1xuICAvLyBGaW5kIHRoZSB3aWR0aCwgc3R5bGUsIG9yIGNvbG9yIGFuZCByZXR1cm4gaXRcbiAgQGVhY2ggJHYgaW4gJHZhbCB7XG4gICAgJHR5cGU6IHR5cGUtb2YoJHYpO1xuICAgIEBpZiAkZWxlbSA9PSB3aWR0aCBhbmQgJHR5cGUgPT0gJ251bWJlcicge1xuICAgICAgQHJldHVybiAkdjtcbiAgICB9XG4gICAgQGlmICRlbGVtID09IHN0eWxlIGFuZCAkdHlwZSA9PSAnc3RyaW5nJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgICBAaWYgJGVsZW0gPT0gY29sb3IgYW5kICR0eXBlID09ICdjb2xvcicge1xuICAgICAgQHJldHVybiAkdjtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZhdWx0c1xuICAkZGVmYXVsdHM6IChcbiAgICB3aWR0aDogMCxcbiAgICBzdHlsZTogc29saWQsXG4gICAgY29sb3I6ICMwMDAsXG4gICk7XG5cbiAgQHJldHVybiBtYXAtZ2V0KCRkZWZhdWx0cywgJGVsZW0pO1xufVxuXG4vLy8gRmluZHMgYSB2YWx1ZSBpbiBhIG5lc3RlZCBtYXAuXG4vLy8gQGxpbmsgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9zYXNzL2RlZXAtZ2V0c2V0LW1hcHMvIERlZXAgR2V0L1NldCBpbiBNYXBzXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBwdWxsIGEgdmFsdWUgZnJvbS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleXMuLi4gLSBLZXlzIHRvIHVzZSB3aGVuIGxvb2tpbmcgZm9yIGEgdmFsdWUuXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm91bmQgaW4gdGhlIG1hcC5cbkBmdW5jdGlvbiBtYXAtZGVlcC1nZXQoJG1hcCwgJGtleXMuLi4pIHtcbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgfVxuICBAcmV0dXJuICRtYXA7XG59XG5cbi8vLyBDYXN0cyBhIG1hcCBpbnRvIGEgbGlzdC5cbi8vLyBAbGluayBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE0LzA0LzI4L2Nhc3RpbmctbWFwLWludG8tbGlzdC9cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHB1bGwgYSB2YWx1ZSBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IERlcGVuZGluZyBvbiB0aGUgZmxhZywgcmV0dXJucyBlaXRoZXIgJGtleXMgb3IgJHZhbHVlcyBvciBib3RoLlxuQGZ1bmN0aW9uIG1hcC10by1saXN0KCRtYXAsICRrZWVwOiAnYm90aCcpIHtcbiAgJGtlZXA6IGlmKGluZGV4KCdrZXlzJyAndmFsdWVzJywgJGtlZXApLCAka2VlcCwgJ2JvdGgnKTtcblxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbWFwJyB7XG4gICAgJGtleXM6ICgpO1xuICAgICR2YWx1ZXM6ICgpO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkbWFwIHtcbiAgICAgICRrZXlzOiBhcHBlbmQoJGtleXMsICRrZXkpO1xuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICR2YWwpO1xuICAgIH1cblxuICAgIEBpZiAka2VlcCA9PSAna2V5cycge1xuICAgICAgQHJldHVybiAka2V5cztcbiAgICB9XG4gICAgQGVsc2UgaWYgJGtlZXAgPT0gJ3ZhbHVlcycge1xuICAgICAgQHJldHVybiAkdmFsdWVzO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIHppcCgka2V5cywgJHZhbHVlcyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBpZih0eXBlLW9mKCRtYXApICE9ICdsaXN0JywgKCR2YWx1ZSwpLCAkbWFwKTtcblxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBSZXR1cm5zIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gb2YgJGRpclxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyIC0gVXNlZCBkaXJlY3Rpb24gYmV0d2VlbiBcInRvcFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIgYW5kIFwibGVmdFwiLlxuLy8vIEByZXR1cm4ge0tleXdvcmR9IE9wcG9zaXRlIGRpcmVjdGlvbiBvZiAkZGlyXG5AZnVuY3Rpb24gZGlyZWN0aW9uLW9wcG9zaXRlKFxuICAkZGlyXG4pIHtcbiAgJGRpcnM6ICh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpO1xuICAkcGxhY2U6IGluZGV4KCRkaXJzLCAkZGlyKTtcblxuICBAaWYgJHBsYWNlID09IG51bGwge1xuICAgIEBlcnJvciAnZGlyZWN0aW9uLW9wcG9zaXRlOiBJbnZhbGlkICRkaXIgcGFyYW1ldGVyLCBleHBlY3RlZCBhIHZhbHVlIGZyb20gXCIjeyRkaXJzfVwiLCBmb3VuZCBcIiN7JGRpcn1cIi4nO1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIENhbGN1bCB0aGUgb3Bwb3NpdGUgcGxhY2UgaW4gYSBjaXJjbGUsIHdpdGggYSBzdGFydGluZyBpbmRleCBvZiAxXG4gICRsZW5ndGg6IGxlbmd0aCgkZGlycyk7XG4gICRkZW1pOiAkbGVuZ3RoIC8gMjtcbiAgJG9wcG9zaXRlLXBsYWNlOiAoKCRwbGFjZSArICRkZW1pIC0gMSkgJSAkbGVuZ3RoKSArIDE7XG5cbiAgQHJldHVybiBudGgoJGRpcnMsICRvcHBvc2l0ZS1wbGFjZSk7XG59XG5cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AaW1wb3J0ICdtYXRoJztcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIENoZWNrcyB0aGUgbHVtaW5hbmNlIG9mIGAkY29sb3JgLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3IgdG8gY2hlY2sgdGhlIGx1bWluYW5jZSBvZi5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBsdW1pbmFuY2Ugb2YgYCRjb2xvcmAuXG5AZnVuY3Rpb24gY29sb3ItbHVtaW5hbmNlKCRjb2xvcikge1xuICAvLyBBZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9MZWFWZXJvdS9jb250cmFzdC1yYXRpby9ibG9iL2doLXBhZ2VzL2NvbG9yLmpzXG4gIC8vIEZvcm11bGE6IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jcmVsYXRpdmVsdW1pbmFuY2VkZWZcbiAgJHJnYmE6IHJlZCgkY29sb3IpLCBncmVlbigkY29sb3IpLCBibHVlKCRjb2xvcik7XG4gICRyZ2JhMjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAzIHtcbiAgICAkcmdiOiBudGgoJHJnYmEsICRpKTtcbiAgICAkcmdiOiAkcmdiIC8gMjU1O1xuXG4gICAgJHJnYjogaWYoJHJnYiA8IDAuMDM5MjgsICRyZ2IgLyAxMi45MiwgcG93KCgkcmdiICsgMC4wNTUpIC8gMS4wNTUsIDIuNCkpO1xuXG4gICAgJHJnYmEyOiBhcHBlbmQoJHJnYmEyLCAkcmdiKTtcbiAgfVxuXG4gIEByZXR1cm4gMC4yMTI2ICogbnRoKCRyZ2JhMiwgMSkgKyAwLjcxNTIgKiBudGgoJHJnYmEyLCAyKSArIDAuMDcyMiAqIG50aCgkcmdiYTIsIDMpO1xufVxuXG4vLy8gQ2hlY2tzIHRoZSBjb250cmFzdCByYXRpbyBvZiB0d28gY29sb3JzLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yMSAtIEZpcnN0IGNvbG9yIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yMiAtIFNlY29uZCBjb2xvciB0byBjb21wYXJlLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGNvbnRyYXN0IHJhdGlvIG9mIHRoZSBjb21wYXJlZCBjb2xvcnMuXG5AZnVuY3Rpb24gY29sb3ItY29udHJhc3QoJGNvbG9yMSwgJGNvbG9yMikge1xuICAvLyBBZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9MZWFWZXJvdS9jb250cmFzdC1yYXRpby9ibG9iL2doLXBhZ2VzL2NvbG9yLmpzXG4gIC8vIEZvcm11bGE6IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jY29udHJhc3QtcmF0aW9kZWZcbiAgJGx1bWluYW5jZTE6IGNvbG9yLWx1bWluYW5jZSgkY29sb3IxKSArIDAuMDU7XG4gICRsdW1pbmFuY2UyOiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yMikgKyAwLjA1O1xuICAkcmF0aW86ICRsdW1pbmFuY2UxIC8gJGx1bWluYW5jZTI7XG5cbiAgQGlmICRsdW1pbmFuY2UyID4gJGx1bWluYW5jZTEge1xuICAgICRyYXRpbzogMSAvICRyYXRpbztcbiAgfVxuXG4gICRyYXRpbzogcm91bmQoJHJhdGlvICogMTApIC8gMTA7XG5cbiAgQHJldHVybiAkcmF0aW87XG59XG5cbi8vLyBDaGVja3MgdGhlIGx1bWluYW5jZSBvZiBgJGJhc2VgLCBhbmQgcmV0dXJucyB0aGUgY29sb3IgZnJvbSBgJGNvbG9yc2AgKGxpc3Qgb2YgY29sb3JzKSB0aGF0IGhhcyB0aGUgbW9zdCBjb250cmFzdC5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvcjEgLSBGaXJzdCBjb2xvciB0byBjb21wYXJlLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvcjIgLSBTZWNvbmQgY29sb3IgdG8gY29tcGFyZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBjb250cmFzdCByYXRpbyBvZiB0aGUgY29tcGFyZWQgY29sb3JzLlxuQGZ1bmN0aW9uIGNvbG9yLXBpY2stY29udHJhc3QoJGJhc2UsICRjb2xvcnM6ICgkd2hpdGUsICRibGFjayksICR0b2xlcmFuY2U6IDApIHtcbiAgJGNvbnRyYXN0OiBjb2xvci1jb250cmFzdCgkYmFzZSwgbnRoKCRjb2xvcnMsIDEpKTtcbiAgJGJlc3Q6IG50aCgkY29sb3JzLCAxKTtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkY29sb3JzKSB7XG4gICAgJGN1cnJlbnQtY29udHJhc3Q6IGNvbG9yLWNvbnRyYXN0KCRiYXNlLCBudGgoJGNvbG9ycywgJGkpKTtcbiAgICBAaWYgKCRjdXJyZW50LWNvbnRyYXN0IC0gJGNvbnRyYXN0ID4gJHRvbGVyYW5jZSkge1xuICAgICAgJGNvbnRyYXN0OiBjb2xvci1jb250cmFzdCgkYmFzZSwgbnRoKCRjb2xvcnMsICRpKSk7XG4gICAgICAkYmVzdDogbnRoKCRjb2xvcnMsICRpKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRjb250cmFzdCA8IDMpIHtcbiAgICBAd2FybiBcIkNvbnRyYXN0IHJhdGlvIG9mICN7JGJlc3R9IG9uICN7JGJhc2V9IGlzIHByZXR0eSBiYWQsIGp1c3QgI3skY29udHJhc3R9XCI7XG4gIH1cblxuICBAcmV0dXJuICRiZXN0O1xufVxuXG4vLy8gU2NhbGVzIGEgY29sb3IgdG8gYmUgZGFya2VyIGlmIGl0J3MgbGlnaHQsIG9yIGxpZ2h0ZXIgaWYgaXQncyBkYXJrLiBVc2UgdGhpcyBmdW5jdGlvbiB0byB0aW50IGEgY29sb3IgYXBwcm9wcmlhdGUgdG8gaXRzIGxpZ2h0bmVzcy5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIHNjYWxlLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHNjYWxlIFs1JV0gLSBBbW91bnQgdG8gc2NhbGUgdXAgb3IgZG93bi5cbi8vLyBAcGFyYW0ge1BlcmNlbnRhZ2V9ICR0aHJlc2hvbGQgWzQwJV0gLSBUaHJlc2hvbGQgb2YgbGlnaHRuZXNzIHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IEEgc2NhbGVkIGNvbG9yLlxuQGZ1bmN0aW9uIHNtYXJ0LXNjYWxlKCRjb2xvciwgJHNjYWxlOiA1JSwgJHRocmVzaG9sZDogNDAlKSB7XG4gIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA+ICR0aHJlc2hvbGQge1xuICAgICRzY2FsZTogLSRzY2FsZTtcbiAgfVxuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHNjYWxlKTtcbn1cblxuLy8vIEdldCBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuLy8vXG4vLy8gQHBhcmFtIHtrZXl9IGNvbG9yIGtleSBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuQGZ1bmN0aW9uIGdldC1jb2xvcigka2V5KSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCAka2V5KSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsICRrZXkpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgJ2dpdmVuICRrZXkgaXMgbm90IGF2YWlsYWJsZSBpbiAkZm91bmRhdGlvbi1wYWxldHRlJztcbiAgfVxufVxuXG4vLy8gVHJhbnNmZXJzIHRoZSBjb2xvcnMgaW4gdGhlIGAkZm91bmRhdGlvbi1wYWxldHRlYG1hcCBpbnRvIHZhcmlhYmxlcywgc3VjaCBhcyBgJHByaW1hcnktY29sb3JgIGFuZCBgJHNlY29uZGFyeS1jb2xvcmAuIENhbGwgdGhpcyBtaXhpbiBiZWxvdyB0aGUgR2xvYmFsIHNlY3Rpb24gb2YgeW91ciBzZXR0aW5ncyBmaWxlIHRvIHByb3Blcmx5IG1pZ3JhdGUgeW91ciBjb2RlYmFzZS5cbkBtaXhpbiBhZGQtZm91bmRhdGlvbi1jb2xvcnMoKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSB7XG4gICAgJHByaW1hcnktY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSkgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc2Vjb25kYXJ5KSB7XG4gICAgJHNlY29uZGFyeS1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBzZWNvbmRhcnkpICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHN1Y2Nlc3MpIHtcbiAgICAkc3VjY2Vzcy1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBzdWNjZXNzKSAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCB3YXJuaW5nKSB7XG4gICAgJHdhcm5pbmctY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgd2FybmluZykgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpIHtcbiAgICAkYWxlcnQtY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpICFnbG9iYWw7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gRmluZHMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yIG9mIHR3byBpbnRlZ2Vycy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYSAtIEZpcnN0IG51bWJlciB0byBjb21wYXJlLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYiAtIFNlY29uZCBudW1iZXIgdG8gY29tcGFyZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvci5cbkBmdW5jdGlvbiBnY2QoJGEsICRiKSB7XG4gIC8vIEZyb206IGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9HcmVhdGVzdF9jb21tb25fZGl2aXNvciNKYXZhU2NyaXB0XG4gIEBpZiAoJGIgIT0gMCkge1xuICAgIEByZXR1cm4gZ2NkKCRiLCAkYSAlICRiKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBhYnMoJGEpO1xuICB9XG59XG5cbi8vLyBIYW5kbGVzIGRlY2ltYWwgZXhwb25lbnRzIGJ5IHRyeWluZyB0byBjb252ZXJ0IHRoZW0gaW50byBhIGZyYWN0aW9uIGFuZCB0aGVuIHVzZSBhIG50aC1yb290LWFsZ29yaXRobSBmb3IgcGFydHMgb2YgdGhlIGNhbGN1bGF0aW9uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgLSBUaGUgYmFzZSBudW1iZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRleHBvbmVudCAtIFRoZSBleHBvbmVudC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBwcm9kdWN0IG9mIHRoZSBleHBvbmVudGlhdGlvbi5cbkBmdW5jdGlvbiBwb3coJGJhc2UsICRleHBvbmVudCwgJHByZWM6IDEyKSB7XG4gIEBpZiAoZmxvb3IoJGV4cG9uZW50KSAhPSAkZXhwb25lbnQpIHtcbiAgICAkcHJlYzIgOiBwb3coMTAsICRwcmVjKTtcbiAgICAkZXhwb25lbnQ6IHJvdW5kKCRleHBvbmVudCAqICRwcmVjMik7XG4gICAgJGRlbm9taW5hdG9yOiBnY2QoJGV4cG9uZW50LCAkcHJlYzIpO1xuICAgIEByZXR1cm4gbnRoLXJvb3QocG93KCRiYXNlLCAkZXhwb25lbnQgLyAkZGVub21pbmF0b3IpLCAkcHJlYzIgLyAkZGVub21pbmF0b3IsICRwcmVjKTtcbiAgfVxuXG4gICR2YWx1ZTogJGJhc2U7XG4gIEBpZiAkZXhwb25lbnQgPiAxIHtcbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRleHBvbmVudCB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAqICRiYXNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkZXhwb25lbnQgPCAxIHtcbiAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoIC0kZXhwb25lbnQge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgLyAkYmFzZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuQGZ1bmN0aW9uIG50aC1yb290KCRudW0sICRuOiAyLCAkcHJlYzogMTIpIHtcbiAgLy8gRnJvbTogaHR0cDovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL050aF9yb290I0phdmFTY3JpcHRcbiAgJHg6IDE7XG5cbiAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkcHJlYyB7XG4gICAgJHg6IDEgLyAkbiAqICgoJG4gLSAxKSAqICR4ICsgKCRudW0gLyBwb3coJHgsICRuIC0gMSkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHg7XG59XG5cbi8vLyBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSB3aWR0aCBmb3IgYSBnaXZlbiByYXRpby5cbi8vLyBAcGFyYW0ge0xpc3R9ICRyYXRpbyAtIFJhdGlvIHRvIHVzZSB0byBjYWxjdWxhdGUgdGhlIGhlaWdodCwgZm9ybWF0dGVkIGFzIGB4IGJ5IHlgLlxuLy8vIEByZXR1cm4ge051bWJlcn0gQSBwZXJjZW50YWdlIHZhbHVlIGZvciB0aGUgaGVpZ2h0IHJlbGF0aXZlIHRvIHRoZSB3aWR0aCBvZiBhIHJlc3BvbnNpdmUgY29udGFpbmVyLlxuQGZ1bmN0aW9uIHJhdGlvLXRvLXBlcmNlbnRhZ2UoJHJhdGlvKSB7XG4gICR3OiBudGgoJHJhdGlvLCAxKTtcbiAgJGg6IG50aCgkcmF0aW8sIDMpO1xuICBAcmV0dXJuICRoIC8gJHcgKiAxMDAlO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBHZW5lcmF0ZXMgYSBzZWxlY3RvciB3aXRoIGV2ZXJ5IHRleHQgaW5wdXQgdHlwZS4gWW91IGNhbiBhbHNvIGZpbHRlciB0aGUgbGlzdCB0byBvbmx5IG91dHB1dCBhIHN1YnNldCBvZiB0aG9zZSBzZWxlY3RvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R8S2V5d29yZH0gJHR5cGVzIFsoKV0gLSBBIGxpc3Qgb2YgdGV4dCBpbnB1dCB0eXBlcyB0byB1c2UuIExlYXZlIGJsYW5rIHRvIHVzZSBhbGwgb2YgdGhlbS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRtb2RpZmllciBbJyddIC0gQSBtb2RpZmllciB0byBiZSBhcHBsaWVkIHRvIGVhY2ggdGV4dCBpbnB1dCB0eXBlIChlLmcuIGEgY2xhc3Mgb3IgYSBwc2V1ZG8tY2xhc3MpLiBMZWF2ZSBibGFuayB0byBpZ25vcmUuXG5AZnVuY3Rpb24gdGV4dC1pbnB1dHMoJHR5cGVzOiAoKSwgJG1vZGlmaWVyOiAnJykge1xuICAkcmV0dXJuOiAoKTtcblxuICAkYWxsLXR5cGVzOlxuICAgIHRleHRcbiAgICBwYXNzd29yZFxuICAgIGRhdGVcbiAgICBkYXRldGltZVxuICAgIGRhdGV0aW1lLWxvY2FsXG4gICAgbW9udGhcbiAgICB3ZWVrXG4gICAgZW1haWxcbiAgICBudW1iZXJcbiAgICBzZWFyY2hcbiAgICB0ZWxcbiAgICB0aW1lXG4gICAgdXJsXG4gICAgY29sb3I7XG5cbiAgQGlmIG5vdCBoYXMtdmFsdWUoJHR5cGVzKSB7XG4gICAgJHR5cGVzOiAkYWxsLXR5cGVzO1xuICB9XG5cbiAgQGVhY2ggJHR5cGUgaW4gJHR5cGVzIHtcbiAgICAkcmV0dXJuOiBhcHBlbmQoJHJldHVybiwgdW5xdW90ZSgnW3R5cGU9XFwnI3skdHlwZX1cXCddI3skbW9kaWZpZXJ9JyksIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIiQtemYtZmxleC1qdXN0aWZ5OiAoXG4gICdsZWZ0JzogZmxleC1zdGFydCxcbiAgJ3JpZ2h0JzogZmxleC1lbmQsXG4gICdjZW50ZXInOiBjZW50ZXIsXG4gICdqdXN0aWZ5Jzogc3BhY2UtYmV0d2VlbixcbiAgJ3NwYWNlZCc6IHNwYWNlLWFyb3VuZCxcbik7XG5cbiQtemYtZmxleC1hbGlnbjogKFxuICAndG9wJzogZmxleC1zdGFydCxcbiAgJ2JvdHRvbSc6IGZsZXgtZW5kLFxuICAnbWlkZGxlJzogY2VudGVyLFxuICAnc3RyZXRjaCc6IHN0cmV0Y2gsXG4pO1xuXG4kLXpmLWZsZXgtZGlyZWN0aW9uOiAoXG4gICdyb3cnOiByb3csXG4gICdyb3ctcmV2ZXJzZSc6IHJvdy1yZXZlcnNlLFxuICAnY29sdW1uJzogY29sdW1uLFxuICAnY29sdW1uLXJldmVyc2UnOiBjb2x1bW4tcmV2ZXJzZSxcbik7XG5cbi8vLyBFbmFibGVzIGZsZXhib3ggYnkgYWRkaW5nIGBkaXNwbGF5OiBmbGV4YCB0byB0aGUgZWxlbWVudC5cbkBtaXhpbiBmbGV4IHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLy8vIEhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGFsaWducyB0aGUgaXRlbXMgd2l0aGluIGEgZmxleCBjb250YWluZXIuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR4IFtudWxsXSAtIEhvcml6b250YWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGBsZWZ0YCwgYHJpZ2h0YCwgYGNlbnRlcmAsIGBqdXN0aWZ5YCwgb3IgYHNwYWNlZGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCBob3Jpem9udGFsIGFsaWdubWVudC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR5IFtudWxsXSAtIFZlcnRpY2FsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgdG9wYCwgYGJvdHRvbWAsIGBtaWRkbGVgLCBvciBgc3RyZXRjaGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gZmxleC1hbGlnbigkeDogbnVsbCwgJHk6IG51bGwpIHtcbiAgQGlmICR4IHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWp1c3RpZnksICR4KSB7XG4gICAgICAkeDogbWFwLWdldCgkLXpmLWZsZXgtanVzdGlmeSwgJHgpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnZmxleC1ncmlkLXJvdy1hbGlnbigpOiAjeyR4fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgaG9yaXpvbnRhbCBhbGlnbm1lbnQuIFVzZSBsZWZ0LCByaWdodCwgY2VudGVyLCBqdXN0aWZ5LCBvciBzcGFjZWQuJztcbiAgICB9XG4gIH1cblxuICBAaWYgJHkge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtYWxpZ24sICR5KSB7XG4gICAgICAkeTogbWFwLWdldCgkLXpmLWZsZXgtYWxpZ24sICR5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1yb3ctYWxpZ24oKTogI3skeX0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIHZlcnRpY2FsIGFsaWdubWVudC4gVXNlIHRvcCwgYm90dG9tLCBtaWRkbGUsIG9yIHN0cmV0Y2guJztcbiAgICB9XG4gIH1cblxuICBqdXN0aWZ5LWNvbnRlbnQ6ICR4O1xuICBhbGlnbi1pdGVtczogJHk7XG59XG5cbi8vLyBWZXJ0aWNhbGx5IGFsaWduIGEgc2luZ2xlIGNvbHVtbiB3aXRoaW4gYSBmbGV4IHJvdy4gQXBwbHkgdGhpcyBtaXhpbiB0byBhIGZsZXggY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeSBbbnVsbF0gLSBWZXJ0aWNhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYHRvcGAsIGBib3R0b21gLCBgbWlkZGxlYCwgb3IgYHN0cmV0Y2hgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIGZsZXgtYWxpZ24tc2VsZigkeTogbnVsbCkge1xuICBAaWYgJHkge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtYWxpZ24sICR5KSB7XG4gICAgICAkeTogbWFwLWdldCgkLXpmLWZsZXgtYWxpZ24sICR5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1jb2x1bW4tYWxpZ24oKTogI3skeX0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIGFsaWdubWVudC4gVXNlIHRvcCwgYm90dG9tLCBtaWRkbGUsIG9yIHN0cmV0Y2guJztcbiAgICB9XG4gIH1cblxuICBhbGlnbi1zZWxmOiAkeTtcbn1cblxuLy8vIENoYW5nZXMgdGhlIHNvdXJjZSBvcmRlciBvZiBhIGZsZXggY2hpbGQuIENoaWxkcmVuIHdpdGggbG93ZXIgbnVtYmVycyBhcHBlYXIgZmlyc3QgaW4gdGhlIGxheW91dC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG9yZGVyIFswXSAtIE9yZGVyIG51bWJlciB0byBhcHBseS5cbkBtaXhpbiBmbGV4LW9yZGVyKCRvcmRlcjogMCkge1xuICBvcmRlcjogJG9yZGVyO1xufVxuXG4vLy8gQ2hhbmdlIGZsZXgtZGlyZWN0aW9uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyZWN0aW9uIFtyb3ddIC0gRmxleCBkaXJlY3Rpb24gdG8gdXNlLiBDYW4gYmVcbi8vLyAgIC0gcm93IChkZWZhdWx0KTogc2FtZSBhcyB0ZXh0IGRpcmVjdGlvblxuLy8vICAgLSByb3ctcmV2ZXJzZTogb3Bwb3NpdGUgdG8gdGV4dCBkaXJlY3Rpb25cbi8vLyAgIC0gY29sdW1uOiBzYW1lIGFzIHJvdyBidXQgdG9wIHRvIGJvdHRvbVxuLy8vICAgLSBjb2x1bW4tcmV2ZXJzZTogc2FtZSBhcyByb3ctcmV2ZXJzZSB0b3AgdG8gYm90dG9tXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJGRpcmVjdGlvbjogcm93KSB7XG4gIGZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWtwb2ludHNcbi8vLy9cblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcy5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50czogKFxuICBzbWFsbDogMCxcbiAgbWVkaXVtOiA2NDBweCxcbiAgbGFyZ2U6IDEwMjRweCxcbiAgeGxhcmdlOiAxMjAwcHgsXG4gIHh4bGFyZ2U6IDE0NDBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGFyZ2VzdCBuYW1lZCBicmVha3BvaW50IGluIHdoaWNoIHRvIGluY2x1ZGUgcHJpbnQgYXMgYSBtZWRpYSB0eXBlXG4vLy8gQHR5cGUgS2V5d29yZFxuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlICFkZWZhdWx0O1xuXG4kLXpmLXplcm8tYnJlYWtwb2ludDogc21hbGwgIWRlZmF1bHQ7XG5cbiQtemYtYnJlYWtwb2ludHMta2V5czogbWFwLXRvLWxpc3QoJGJyZWFrcG9pbnRzLCAna2V5cycpO1xuXG5AaWYgbnRoKG1hcC12YWx1ZXMoJGJyZWFrcG9pbnRzKSwgMSkgIT0gMCB7XG4gIEBlcnJvciAnWW91ciBzbWFsbGVzdCBicmVha3BvaW50IChkZWZpbmVkIGluICRicmVha3BvaW50cykgbXVzdCBiZSBzZXQgdG8gXCIwXCIuJztcbn1cbkBlbHNlIHtcbiAgJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IG50aChtYXAta2V5cygkYnJlYWtwb2ludHMpLCAxKTtcbn1cblxuLy8vIEFsbCBvZiB0aGUgbmFtZXMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgb3V0cHV0IGFzIGNsYXNzZXMgaW4geW91ciBDU1MsIGxpa2UgYC5zbWFsbC0xMmAsIGAubWVkaXVtLTZgLCBhbmQgc28gb24uIEVhY2ggdmFsdWUgaW4gdGhpcyBsaXN0IG11c3QgYWxzbyBiZSBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLlxuLy8vIEB0eXBlIExpc3RcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UpICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgc3RyaW5nIG1hdGNoaW5nIHRoZSBpbnB1dCB2YWx1ZS4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBzZWUgd2hhdCB0aGUgcG9zc2libGUgaW5wdXRzIGFyZS5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWwgW3NtYWxsXSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbkBmdW5jdGlvbiBicmVha3BvaW50KCR2YWw6ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gIC8vIFNpemUgb3Iga2V5d29yZFxuICAkYnA6IG50aCgkdmFsLCAxKTtcbiAgLy8gVmFsdWUgZm9yIG1heC13aWR0aCBtZWRpYSBxdWVyaWVzXG4gICRicC1tYXg6IDA7XG4gIC8vIERpcmVjdGlvbiBvZiBtZWRpYSBxdWVyeSAodXAsIGRvd24sIG9yIG9ubHkpXG4gICRkaXI6IGlmKGxlbmd0aCgkdmFsKSA+IDEsIG50aCgkdmFsLCAyKSwgdXApO1xuICAvLyBFdmVudHVhbCBvdXRwdXRcbiAgJHN0cjogJyc7XG4gIC8vIElzIGl0IGEgbmFtZWQgbWVkaWEgcXVlcnk/XG4gICRuYW1lZDogZmFsc2U7XG5cbiAgLy8gT3JpZW50YXRpb24gbWVkaWEgcXVlcmllcyBoYXZlIGEgdW5pcXVlIHN5bnRheFxuICBAaWYgJGJwID09ICdsYW5kc2NhcGUnIG9yICRicCA9PSAncG9ydHJhaXQnIHtcbiAgICBAcmV0dXJuICcob3JpZW50YXRpb246ICN7JGJwfSknO1xuICB9XG4gIEBlbHNlIGlmICRicCA9PSAncmV0aW5hJyB7XG4gICAgQHJldHVybiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSc7XG4gIH1cblxuICAvLyBUcnkgdG8gcHVsbCBhIG5hbWVkIGJyZWFrcG9pbnQgb3V0IG9mIHRoZSAkYnJlYWtwb2ludHMgbWFwXG4gIEBpZiB0eXBlLW9mKCRicCkgPT0gJ3N0cmluZycge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicCkge1xuICAgICAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ2Rvd24nIHtcbiAgICAgICAgJGJwLW1heDogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJGJwKTtcbiAgICAgIH1cblxuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJGJwKTtcbiAgICAgICRuYW1lZDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGJwOiAwO1xuICAgICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogXCIjeyR2YWx9XCIgaXMgbm90IGRlZmluZWQgaW4geW91ciAkYnJlYWtwb2ludHMgc2V0dGluZy4nO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbnZlcnQgYW55IHBpeGVsLCByZW0sIG9yIHVuaXRsZXNzIHZhbHVlIHRvIGVtXG4gICRicDogLXpmLWJwLXRvLWVtKCRicCk7XG4gIEBpZiAkYnAtbWF4IHtcbiAgICAkYnAtbWF4OiAtemYtYnAtdG8tZW0oJGJwLW1heCkgLSAoMS8xNik7XG4gIH1cblxuICAvLyBDb25kaXRpb25zIHRvIHNraXAgbWVkaWEgcXVlcnkgY3JlYXRpb25cbiAgLy8gLSBJdCdzIGEgbmFtZWQgYnJlYWtwb2ludCB0aGF0IHJlc29sdmVkIHRvIFwiMCBkb3duXCIgb3IgXCIwIHVwXCJcbiAgLy8gLSBJdCdzIGEgbnVtZXJpYyBicmVha3BvaW50IHRoYXQgcmVzb2x2ZWQgdG8gXCIwIFwiICsgYW55dGhpbmdcbiAgQGlmICRicCA+IDBlbSBvciAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgLy8gYG9ubHlgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbikgYW5kIChtYXgtd2lkdGg6IG4pYFxuICAgIEBpZiAkZGlyID09ICdvbmx5JyB7XG4gICAgICAvLyBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gXCJvbmx5XCIgcmFuZ2VcbiAgICAgIEBpZiAkbmFtZWQgPT0gdHJ1ZSB7XG4gICAgICAgIC8vIE9ubHkgdXNlIFwibWluLXdpZHRoXCIgaWYgdGhlIGZsb29yIGlzIGdyZWF0ZXIgdGhhbiAwXG4gICAgICAgIEBpZiAkYnAgPiAwZW0ge1xuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG5cbiAgICAgICAgICAvLyBPbmx5IGFkZCBcImFuZFwiIHRvIHRoZSBtZWRpYSBxdWVyeSBpZiB0aGVyZSdzIGEgY2VpbGluZ1xuICAgICAgICAgIEBpZiAkYnAtbWF4ICE9IG51bGwge1xuICAgICAgICAgICAgJHN0cjogJHN0ciArICcgYW5kICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSB1c2UgXCJtYXgtd2lkdGhcIiBpZiB0aGVyZSdzIGEgY2VpbGluZ1xuICAgICAgICBAaWYgJGJwLW1heCAhPSBudWxsIHtcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtYXgtd2lkdGg6ICN7JGJwLW1heH0pJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gYG9ubHlgIHJhbmdlLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYGRvd25gIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1heC13aWR0aDogbilgXG4gICAgQGVsc2UgaWYgJGRpciA9PSAnZG93bicge1xuICAgICAgJG1heDogaWYoJG5hbWVkLCAkYnAtbWF4LCAkYnApO1xuXG4gICAgICAvLyBTa2lwIG1lZGlhIHF1ZXJ5IGNyZWF0aW9uIGlmIGlucHV0IHZhbHVlIGlzIGV4YWN0bHkgXCIwIGRvd25cIixcbiAgICAgIC8vIHVubGVzcyB0aGUgZnVuY3Rpb24gd2FzIGNhbGxlZCBhcyBcInNtYWxsIGRvd25cIiwgaW4gd2hpY2ggY2FzZSBpdCdzIGp1c3QgXCJzbWFsbCBvbmx5XCJcbiAgICAgIEBpZiAkbmFtZWQgb3IgJGJwID4gMGVtIHtcbiAgICAgICAgQGlmICRtYXggIT0gbnVsbCB7XG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWF4LXdpZHRoOiAjeyRtYXh9KSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBgdXBgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbilgXG4gICAgQGVsc2UgaWYgJGJwID4gMGVtIHtcbiAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gV3JhcHMgYSBtZWRpYSBxdWVyeSBhcm91bmQgdGhlIGNvbnRlbnQgeW91IHB1dCBpbnNpZGUgdGhlIG1peGluLiBUaGlzIG1peGluIGFjY2VwdHMgYSBudW1iZXIgb2YgdmFsdWVzOlxuLy8vICAtIElmIGEgc3RyaW5nIGlzIHBhc3NlZCwgdGhlIG1peGluIHdpbGwgbG9vayBmb3IgaXQgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcCwgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbi8vL1xuLy8vIEBvdXRwdXQgSWYgdGhlIGJyZWFrcG9pbnQgaXMgXCIwcHggYW5kIGxhcmdlclwiLCBvdXRwdXRzIHRoZSBjb250ZW50IGFzLWlzLiBPdGhlcndpc2UsIG91dHB1dHMgdGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBhIG1lZGlhIHF1ZXJ5LlxuQG1peGluIGJyZWFrcG9pbnQoJHZhbHVlKSB7XG4gICRzdHI6IGJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICR2YWx1ZSk7XG4gICRwYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgJHByaW50LWJyZWFrcG9pbnQpO1xuXG4gIC8vIElmICRzdHIgaXMgc3RpbGwgYW4gZW1wdHkgc3RyaW5nLCBubyBtZWRpYSBxdWVyeSBpcyBuZWVkZWRcbiAgQGlmICRzdHIgPT0gJycge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCB3cmFwIHRoZSBjb250ZW50IGluIGEgbWVkaWEgcXVlcnlcbiAgQGVsc2Uge1xuICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcbiAgICBAaWYgJGJwICE9IG51bGwgYW5kICRicCA8PSAkcGJwIHtcbiAgICAgIEBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBDb252ZXJzIHRoZSBicmVha3BvaW50cyBtYXAgdG8gYSBVUkwtZW5jb2RlZCBzdHJpbmcsIGxpa2UgdGhpczogYGtleTE9dmFsdWUxJmtleTI9dmFsdWUyYC4gVGhlIHZhbHVlIGlzIHRoZW4gZHJvcHBlZCBpbnRvIHRoZSBDU1MgZm9yIGEgc3BlY2lhbCBgPG1ldGE+YCB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdC4gVGhpcyBpcyBob3cgd2UgdHJhbnNmZXIgdmFsdWVzIGZyb20gU2FzcyB0byBKYXZhU2NyaXB0LCBzbyB0aGV5IGNhbiBiZSBkZWZpbmVkIGluIG9uZSBwbGFjZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIGNvbnZlcnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBBIHN0cmluZyBjb250YWluaW5nIHRoZSBtYXAncyBjb250ZW50cy5cbkBmdW5jdGlvbiAtemYtYnAtc2VyaWFsaXplKCRtYXApIHtcbiAgJHN0cjogJyc7XG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICAkc3RyOiAkc3RyICsgJGtleSArICc9JyArIC16Zi1icC10by1lbSgkdmFsdWUpICsgJyYnO1xuICB9XG4gICRzdHI6IHN0ci1zbGljZSgkc3RyLCAxLCAtMik7XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBrZXkgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm9yIHRoZSBrZXkgYWZ0ZXIgYCRrZXlgLCBpZiBgJGtleWAgd2FzIGZvdW5kLiBJZiBgJGtleWAgd2FzIG5vdCBmb3VuZCwgb3IgYCRrZXlgIHdhcyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQoJG1hcCwgJGtleSkge1xuXG4gIC8vIFN0b3JlIHRoZSBrZXlzIG9mIHRoZSBtYXAgYXMgYSBsaXN0XG4gICR2YWx1ZXM6IG1hcC1rZXlzKCRtYXApO1xuXG4gICRpOiAwO1xuXG4gIC8vIElmIHRoZSBLZXkgRXhpc3RzLCBHZXQgdGhlIGluZGV4IG9mIHRoZSBrZXkgd2l0aGluIHRoZSBtYXAgYW5kIGFkZCAxIHRvIGl0IGZvciB0aGUgbmV4dCBicmVha3BvaW50IGluIHRoZSBtYXBcbiAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xuICAgICRpOiBpbmRleCgkdmFsdWVzLCAka2V5KSArIDE7XG4gIH1cblxuICAvLyBJZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QsIG9yIGl0J3MgdGhlIGxhc3Qga2V5IGluIHRoZSBtYXAsIHJldHVybiBudWxsXG4gIEBpZiAoJGkgPiBsZW5ndGgoJG1hcCkgb3IgJGkgPT0gMCkge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBPdGhlcndpc2UsIHJldHVybiB0aGUgdmFsdWVcbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCBudGgoJHZhbHVlcywgJGkpKTtcbiAgfVxuXG59XG5cbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0IHJlZ2FyZGxlc3Mgb2YgYCR2YWx1ZWAuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUgdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWdldC1icC12YWwoJG1hcCwgJHZhbHVlKSB7XG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkbWFwO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgZ2xvYmFsbHlcbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICR2YWx1ZSkge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBpbiB0aGUgbG9jYWwgY29uZmlnIG1hcFxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkbWFwLCAkdmFsdWUpIHtcbiAgICAvLyBJZiBpdCBkb2VzLCBqdXN0IHJldHVybiB0aGUgdmFsdWVcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJHZhbHVlKTtcbiAgfVxuICAvLyBPdGhlcndpc2UsIGZpbmQgdGhlIG5leHQgbG93ZXN0IGJyZWFrcG9pbnQgYW5kIHJldHVybiB0aGF0IHZhbHVlXG4gIEBlbHNlIHtcbiAgICAkYW5jaG9yOiBudWxsO1xuICAgICRmb3VuZDogZmFsc2U7XG5cbiAgICBAZWFjaCAka2V5LCAkdmFsIGluICRicmVha3BvaW50cyB7XG4gICAgICBAaWYgbm90ICRmb3VuZCB7XG4gICAgICAgIEBpZiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KSB7XG4gICAgICAgICAgJGFuY2hvcjogJGtleTtcbiAgICAgICAgfVxuICAgICAgICBAaWYgJGtleSA9PSAkdmFsdWUge1xuICAgICAgICAgICRmb3VuZDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAkYW5jaG9yKTtcbiAgfVxufVxuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBzbWFsbCkge1xuICAkc21hbGwtdXA6IHNjcmVlbjtcbiAgJHNtYWxsLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHNtYWxsIG9ubHkpfScpO1xufVxuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBtZWRpdW0pIHtcbiAgJG1lZGl1bS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtKX0nKTtcbiAgJG1lZGl1bS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0gb25seSl9Jyk7XG59XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIGxhcmdlKSB7XG4gICRsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2UpfScpO1xuICAkbGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2Ugb25seSl9Jyk7XG59XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHhsYXJnZSkge1xuICAkeGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2UpfScpO1xuICAkeGxhcmdlLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSBvbmx5KX0nKTtcbn1cblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeHhsYXJnZSkge1xuICAkeHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeHhsYXJnZSl9Jyk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIENyZWF0ZXMgYSBDU1MgdHJpYW5nbGUsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBkcm9wZG93biBhcnJvd3MsIGRyb3Bkb3duIHBpcHMsIGFuZCBtb3JlLiBVc2UgdGhpcyBtaXhpbiBpbnNpZGUgYSBgJjo6YmVmb3JlYCBvciBgJjo6YWZ0ZXJgIHNlbGVjdG9yLCB0byBhdHRhY2ggdGhlIHRyaWFuZ2xlIHRvIGFuIGV4aXN0aW5nIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHRyaWFuZ2xlLXNpemUgLSBXaWR0aCBvZiB0aGUgdHJpYW5nbGUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJHRyaWFuZ2xlLWNvbG9yIC0gQ29sb3Igb2YgdGhlIHRyaWFuZ2xlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHRyaWFuZ2xlLWRpcmVjdGlvbiAtIERpcmVjdGlvbiB0aGUgdHJpYW5nbGUgcG9pbnRzLiBDYW4gYmUgYHVwYCwgYHJpZ2h0YCwgYGRvd25gLCBvciBgbGVmdGAuXG5AbWl4aW4gY3NzLXRyaWFuZ2xlKFxuICAkdHJpYW5nbGUtc2l6ZSxcbiAgJHRyaWFuZ2xlLWNvbG9yLFxuICAkdHJpYW5nbGUtZGlyZWN0aW9uXG4pIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG5cbiAgYm9yZGVyOiBpbnNldCAkdHJpYW5nbGUtc2l6ZTtcblxuICBjb250ZW50OiAnJztcblxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gZG93bikge1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiAkdHJpYW5nbGUtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IHVwKSB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvcjtcbiAgfVxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gcmlnaHQpIHtcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yO1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIG1lbnUgaWNvbiB3aXRoIGEgc2V0IHdpZHRoLCBoZWlnaHQsIG51bWJlciBvZiBiYXJzLCBhbmQgY29sb3JzLiBUaGUgbWl4aW4gdXNlcyB0aGUgaGVpZ2h0IG9mIHRoZSBpY29uIGFuZCB0aGUgd2VpZ2h0IG9mIHRoZSBiYXJzIHRvIGRldGVybWluZSBzcGFjaW5nLiA8ZGl2IGNsYXNzPVwiZG9jcy1leGFtcGxlLWJ1cmdlclwiPjwvZGl2PlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3ItaG92ZXIgWyRkYXJrLWdyYXldIC0gQ29sb3IgdG8gdXNlIHdoZW4gdGhlIGljb24gaXMgaG92ZXJlZCBvdmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWzIwcHhdIC0gV2lkdGggb2YgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHQgWzE2cHhdIC0gSGVpZ2h0IG9mIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2VpZ2h0IFsycHhdIC0gSGVpZ2h0IG9mIGluZGl2aWR1YWwgYmFycyBpbiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhcnMgWzNdIC0gTnVtYmVyIG9mIGJhcnMgaW4gdGhlIGljb24uXG5AbWl4aW4gaGFtYnVyZ2VyKFxuICAkY29sb3I6ICRibGFjayxcbiAgJGNvbG9yLWhvdmVyOiAkZGFyay1ncmF5LFxuICAkd2lkdGg6IDIwcHgsXG4gICRoZWlnaHQ6IDE2cHgsXG4gICR3ZWlnaHQ6IDJweCxcbiAgJGJhcnM6IDNcbikge1xuICAvLyBib3gtc2hhZG93IENTUyBvdXRwdXRcbiAgJHNoYWRvdzogKCk7XG4gICRob3Zlci1zaGFkb3c6ICgpO1xuXG4gIC8vIFNwYWNpbmcgYmV0d2VlbiBiYXJzIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgaWNvbiBhbmQgdGhlIHdlaWdodCBvZiBlYWNoIGJhclxuICAkc3BhY2luZzogKCRoZWlnaHQgLSAoJHdlaWdodCAqICRiYXJzKSkgLyAoJGJhcnMgLSAxKTtcblxuICBAaWYgdW5pdCgkc3BhY2luZykgPT0gJ3B4JyB7XG4gICAgJHNwYWNpbmc6IGZsb29yKCRzcGFjaW5nKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xuICAgICRvZmZzZXQ6ICgkd2VpZ2h0ICsgJHNwYWNpbmcpICogKCRpIC0gMSk7XG4gICAgJHNoYWRvdzogYXBwZW5kKCRzaGFkb3csIDAgJG9mZnNldCAwICRjb2xvciwgY29tbWEpO1xuICB9XG5cbiAgLy8gSWNvbiBjb250YWluZXJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gIC8vIEljb24gYmFyc1xuICAmOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkd2VpZ2h0O1xuXG4gICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgIGJveC1zaGFkb3c6ICRzaGFkb3c7XG5cbiAgICBjb250ZW50OiAnJzsgICAgXG4gIH1cblxuICAvLyBIb3ZlciBzdGF0ZVxuICBAaWYgJGNvbG9yLWhvdmVyIHtcbiAgICAvLyBHZW5lcmF0ZSBDU1NcbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRiYXJzIHtcbiAgICAgICRvZmZzZXQ6ICgkd2VpZ2h0ICsgJHNwYWNpbmcpICogKCRpIC0gMSk7XG4gICAgICAkaG92ZXItc2hhZG93OiBhcHBlbmQoJGhvdmVyLXNoYWRvdywgMCAkb2Zmc2V0IDAgJGNvbG9yLWhvdmVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJjpob3Zlcjo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWhvdmVyO1xuICAgICAgYm94LXNoYWRvdzogJGhvdmVyLXNoYWRvdztcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgYSBkb3dud2FyZC1mYWNpbmcgdHJpYW5nbGUgYXMgYSBiYWNrZ3JvdW5kIGltYWdlIHRvIGFuIGVsZW1lbnQuIFRoZSBpbWFnZSBpcyBmb3JtYXR0ZWQgYXMgYW4gU1ZHLCBtYWtpbmcgaXQgZWFzeSB0byBjaGFuZ2UgdGhlIGNvbG9yLiBCZWNhdXNlIEludGVybmV0IEV4cGxvcmVyIGRvZXNuJ3Qgc3VwcG9ydCBlbmNvZGVkIFNWR3MgYXMgYmFja2dyb3VuZCBpbWFnZXMsIGEgUE5HIGZhbGxiYWNrIGlzIGFsc28gaW5jbHVkZWQuXG4vLy8gVGhlcmUgYXJlIHR3byBQTkcgZmFsbGJhY2tzOiBhIGJsYWNrIHRyaWFuZ2xlIGFuZCBhIHdoaXRlIHRyaWFuZ2xlLiBUaGUgb25lIHVzZWQgZGVwZW5kcyBvbiB0aGUgbGlnaHRuZXNzIG9mIHRoZSBpbnB1dCBjb2xvci5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJsYWNrXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIHRyaWFuZ2xlLlxuQG1peGluIGJhY2tncm91bmQtdHJpYW5nbGUoJGNvbG9yOiAkYmxhY2spIHtcbiAgJHJnYjogJ3JnYiUyOCN7cm91bmQocmVkKCRjb2xvcikpfSwgI3tyb3VuZChncmVlbigkY29sb3IpKX0sICN7cm91bmQoYmx1ZSgkY29sb3IpKX0lMjknO1xuXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnIHdpZHRoPSczMicgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDMyIDI0Jz48cG9seWdvbiBwb2ludHM9JzAsMCAzMiwwIDE2LDI0JyBzdHlsZT0nZmlsbDogI3skcmdifSc+PC9wb2x5Z29uPjwvc3ZnPlwiKTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjBcXDApIHtcbiAgICBAaWYgbGlnaHRuZXNzKCRjb2xvcikgPCA2MCUge1xuICAgICAgLy8gV2hpdGUgdHJpYW5nbGVcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFZQ0FZQUFBQ2JVLzgwQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFJcEpSRUZVZU5yRWtja05nREFNQkJmUmtFdDBPYlJCQmRzR1hVRGdtUWZLNFhoSDJtOGN6UUFBeTI3UjN0c3c0UWZlMng4dU9PNm9ZTGI2R2xPb3IzR0Yrc3dVUkFPbVVKK1J3dEVKczlXdlRHRVl4QlhxSTFNUUFaaENmVVFLUnpETVZqK1R3ckFJVjZqdlNVRWtZQXIxTFNrY3lUQmIvVitLWWZYN3hBZXVzcTNzTER0R0gza0VHQUNQV0lmbE5aZmhSUUFBQUFCSlJVNUVya0pnZ2c9PScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBCbGFjayB0cmlhbmdsZVxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQVlDQVlBQUFDYlUvODBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU1CSlJFRlVlTnJFbGxzT2hDQU1SVnN6QzlJbHpVN0tDbVZIVEpzb01XWU1VdHB5djlCZ2J1WFFCNVpTZGdCWVlZNHljZ0Jpdms4S1lGc1FNZk1pVFRCUDRvM25VekNLek9hYkxKYkx5Mi9nMzFldkdrQWdpblI0L1plZ0tINXFYM2JKQ3NjQTN0MHgza2dPNXRRRnloaEZmNTB4UnFGTGJ5TVVOSlF6Z3lqR1Mvd2dDcHZLcWtSQnB1V3JFNFY5ZCsxRTRkUFVYcUlnMTA3U1FPRS8yRFJReE13VER5Z0lJblZERVQ5VDNsQ29qLzZqL1ZDbUdqWk9sMmxLcFo4QUF3RFFQN3pJaW1ER0ZRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBcHBsaWVzIHRoZSBtaWNybyBjbGVhcmZpeCBoYWNrIHBvcHVsYXJpemVkIGJ5IE5pY29sYXMgR2FsbGFnaGVyLiBJbmNsdWRlIHRoaXMgbWl4aW4gb24gYSBjb250YWluZXIgaWYgaXRzIGNoaWxkcmVuIGFyZSBhbGwgZmxvYXRlZCwgdG8gZ2l2ZSB0aGUgY29udGFpbmVyIGEgcHJvcGVyIGhlaWdodC5cbi8vLyBUaGUgY2xlYXJmaXggaXMgYXVnbWVudGVkIHdpdGggc3BlY2lmaWMgc3R5bGVzIHRvIHByZXZlbnQgYm9yZGVycyBpbiBmbGV4Ym94IGVudmlyb25tZW50c1xuLy8vIEBsaW5rIGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLyBNaWNybyBDbGVhcmZpeCBIYWNrXG4vLy8gQGxpbmsgaHR0cDovL2RhbmlzYWRlc2lnbmVyLmNvbS9ibG9nL2ZsZXhib3gtY2xlYXItZml4LXBzZXVkby1lbGVtZW50cy8gRmxleGJveCBmaXhcbkBtaXhpbiBjbGVhcmZpeCB7XG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNvbnRlbnQ6ICcgJztcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC1iYXNpczogMDtcbiAgICAgIG9yZGVyOiAxO1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuXG4vLy8gQWRkcyBDU1MgZm9yIGEgXCJxdWFudGl0eSBxdWVyeVwiIHNlbGVjdG9yIHRoYXQgYXV0b21hdGljYWxseSBzaXplcyBlbGVtZW50cyBiYXNlZCBvbiBob3cgbWFueSB0aGVyZSBhcmUgaW5zaWRlIGEgY29udGFpbmVyLlxuLy8vIEBsaW5rIGh0dHA6Ly9hbGlzdGFwYXJ0LmNvbS9hcnRpY2xlL3F1YW50aXR5LXF1ZXJpZXMtZm9yLWNzcyBRdWFudGl0eSBRdWVyaWVzIGZvciBDU1Ncbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWF4IC0gTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gZGV0ZWN0LiBUaGUgaGlnaGVyIHRoaXMgbnVtYmVyIGlzLCB0aGUgbW9yZSBDU1MgdGhhdCdzIHJlcXVpcmVkIHRvIGNvdmVyIGVhY2ggbnVtYmVyIG9mIGl0ZW1zLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGVsZW0gW2xpXSAtIFRhZyB0byB1c2UgZm9yIHNpYmxpbmcgc2VsZWN0b3JzLlxuQG1peGluIGF1dG8td2lkdGgoJG1heCwgJGVsZW06IGxpKSB7XG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJG1heCB7XG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQsXG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQgfiAjeyRlbGVtfSB7XG4gICAgICB3aWR0aDogcGVyY2VudGFnZSgxIC8gJGkpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gUmVtb3ZlcyB0aGUgZm9jdXMgcmluZyBhcm91bmQgYW4gZWxlbWVudCB3aGVuIGEgbW91c2UgaW5wdXQgaXMgZGV0ZWN0ZWQuXG5AbWl4aW4gZGlzYWJsZS1tb3VzZS1vdXRsaW5lIHtcbiAgW2RhdGEtd2hhdGlucHV0PSdtb3VzZSddICYge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cblxuLy8vIE1ha2VzIGFuIGVsZW1lbnQgdmlzdWFsbHkgaGlkZGVuLCBidXQgc3RpbGwgYWNjZXNzaWJsZSB0byBrZXlib2FyZHMgYW5kIGFzc2lzdGl2ZSBkZXZpY2VzLlxuLy8vIEBsaW5rIGh0dHA6Ly9zbm9vay5jYS9hcmNoaXZlcy9odG1sX2FuZF9jc3MvaGlkaW5nLWNvbnRlbnQtZm9yLWFjY2Vzc2liaWxpdHkgSGlkaW5nIENvbnRlbnQgZm9yIEFjY2Vzc2liaWxpdHlcbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbn1cblxuLy8vIFJldmVyc2VzIHRoZSBDU1Mgb3V0cHV0IGNyZWF0ZWQgYnkgdGhlIGBlbGVtZW50LWludmlzaWJsZSgpYCBtaXhpbi5cbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZS1vZmYge1xuICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBjbGlwOiBhdXRvO1xufVxuXG4vLy8gVmVydGljYWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi8vLyBIb3Jpem9udGFsbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxuLy8vIEBsaW5rIGh0dHA6Ly93d3cuc2l0ZXBvaW50LmNvbS9jZW50ZXJpbmctd2l0aC1zYXNzLyBDZW50ZXJpbmcgV2l0aCBTYXNzXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuXG4vLy8gQWJzb2x1dGVseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuXG4vLy8gSXRlcmF0ZXMgdGhyb3VnaCBicmVha3BvaW50cyBkZWZpbmVkIGluIGAkYnJlYWtwb2ludC1jbGFzc2VzYCBhbmQgcHJpbnRzIHRoZSBDU1MgaW5zaWRlIHRoZSBtaXhpbiBhdCBlYWNoIGJyZWFrcG9pbnQncyBtZWRpYSBxdWVyeS4gVXNlIHRoaXMgd2l0aCB0aGUgZ3JpZCwgb3IgYW55IG90aGVyIGNvbXBvbmVudCB0aGF0IGhhcyByZXNwb25zaXZlIGNsYXNzZXMuXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRzbWFsbCBbdHJ1ZV0gLSBJZiBgZmFsc2VgLCB0aGUgbWl4aW4gd2lsbCBza2lwIHRoZSBgc21hbGxgIGJyZWFrcG9pbnQuIFVzZSB0aGlzIHdpdGggY29tcG9uZW50cyB0aGF0IGRvbid0IHByZWZpeCBjbGFzc2VzIHdpdGggYHNtYWxsLWAsIG9ubHkgYG1lZGl1bS1gIGFuZCB1cC5cbkBtaXhpbiAtemYtZWFjaC1icmVha3BvaW50KCRzbWFsbDogdHJ1ZSkge1xuICAkbGlzdDogJGJyZWFrcG9pbnQtY2xhc3NlcztcblxuICBAaWYgbm90ICRzbWFsbCB7XG4gICAgJGxpc3Q6IHNsLXJlbW92ZSgkbGlzdCwgJC16Zi16ZXJvLWJyZWFrcG9pbnQpO1xuICB9XG5cbiAgQGVhY2ggJG5hbWUgaW4gJGxpc3Qge1xuICAgICQtemYtc2l6ZTogJG5hbWUgIWdsb2JhbDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gR2VuZXJhdGUgdGhlIGBAY29udGVudGAgcGFzc2VkIHRvIHRoZSBtaXhpbiB3aXRoIGEgdmFsdWUgYCQtemYtYnAtdmFsdWVgIHJlbGF0ZWQgdG8gYSBicmVha3BvaW50LCBkZXBlbmRpbmcgb24gdGhlIGAkbmFtZWAgcGFyYW1ldGVyOlxuLy8vIC0gRm9yIGEgc2luZ2xlIHZhbHVlLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhpcyB2YWx1ZS5cbi8vLyAtIEZvciBhIGJyZWFrcG9pbnQgbmFtZSwgYCQtemYtYnAtdmFsdWVgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUgaW4gYCRtYXBgLlxuLy8vIC0gRm9yIFwiYXV0b1wiLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZSBpbiBgJG1hcGAgYW5kIGlzIHBhc3NlZCB0byBgQGNvbnRlbnRgLCB3aGljaCBpcyBtYWRlIHJlc3BvbnNpdmUgZm9yIGVhY2ggYnJlYWtwb2ludCBvZiBgJG1hcGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8S2V5d29yZH0gJG5hbWUgW2F1dG9dIC0gU2luZ2xlIHZhbHVlIG9yIGJyZWFrcG9pbnQgbmFtZSB0byB1c2UuIFwiYXV0b1wiIGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFwIC0gTWFwIG9mIGJyZWFrcG9pbnRzIGFuZCB2YWx1ZXMgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZS5cbkBtaXhpbiAtemYtYnJlYWtwb2ludC12YWx1ZShcbiAgJG5hbWU6IGF1dG8sXG4gICRtYXA6IG51bGxcbikge1xuICBAaWYgJG5hbWUgPT0gYXV0byBhbmQgdHlwZS1vZigkbWFwKSA9PSAnbWFwJyB7XG4gICAgLy8gXCJhdXRvXCJcbiAgICBAZWFjaCAkaywgJHYgaW4gJG1hcCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRrKSB7XG4gICAgICAgIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKCR2LCAkbWFwKSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIGJyZWFrcG9pbnQgbmFtZVxuICAgIEBpZiB0eXBlLW9mKCRuYW1lKSA9PSAnc3RyaW5nJyB7XG4gICAgICAkbmFtZTogLXpmLWdldC1icC12YWwoJG1hcCwgJG5hbWUpO1xuICAgIH1cblxuICAgIC8vIGJyZWFrcG9pbnQgdmFsdWVcbiAgICAkLXpmLWJwLXZhbHVlOiAkbmFtZSAhZ2xvYmFsO1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Fzcy1saW50OmRpc2FibGUgZm9yY2UtYXR0cmlidXRlLW5lc3RpbmcsIGZvcmNlLXBzZXVkby1uZXN0aW5nLCBuby1jb2xvci1saXRlcmFscywgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuXG4vLy8vXG4vLy8gQGdyb3VwIGdsb2JhbFxuLy8vL1xuXG4vLy8gRm9udCBzaXplIGF0dHJpYnV0ZSBhcHBsaWVkIHRvIGA8aHRtbD5gIGFuZCBgPGJvZHk+YC4gV2UgdXNlIDEwMCUgYnkgZGVmYXVsdCBzbyB0aGUgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHVzZXIncyBicm93c2VyIHNldHRpbmdzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgd2lkdGggb2YgeW91ciBzaXRlLiBVc2VkIGJ5IHRoZSBncmlkIHRvIGRldGVybWluZSByb3cgd2lkdGguXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjAwKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIGFsbCB0eXBlLiBgJGdsb2JhbC1saW5laGVpZ2h0YCBpcyAyNHB4IHdoaWxlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgaXMgMTZweFxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1saW5laGVpZ2h0OiAxLjUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcnMgdXNlZCBmb3IgYnV0dG9ucywgY2FsbG91dHMsIGxpbmtzLCBldGMuIFRoZXJlIG11c3QgYWx3YXlzIGJlIGEgY29sb3IgY2FsbGVkIGBwcmltYXJ5YC5cbi8vLyBAdHlwZSBNYXBcbiRmb3VuZGF0aW9uLXBhbGV0dGU6IChcbiAgcHJpbWFyeTogIzE3NzliYSxcbiAgc2Vjb25kYXJ5OiAjNzY3Njc2LFxuICBzdWNjZXNzOiAjM2FkYjc2LFxuICB3YXJuaW5nOiAjZmZhZTAwLFxuICBhbGVydDogI2NjNGIzNyxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBsaWdodCBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbGlnaHQtZ3JheTogI2U2ZTZlNiAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHVzZWQgZm9yIG1lZGl1bSBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbWVkaXVtLWdyYXk6ICNjYWNhY2EgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBkYXJrIGdyYXkgVUkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkYXJrLWdyYXk6ICM4YThhOGEgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBibGFjayB1aSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJsYWNrOiAjMGEwYTBhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3Igd2hpdGUgdWkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiR3aGl0ZTogI2ZlZmVmZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3RhY2sgb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgTGlzdFxuJGJvZHktZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZiAhZGVmYXVsdDtcblxuLy8vIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIGFudGlhbGlhc2VkIHR5cGUsIHVzaW5nIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgYW5kIGAtbW96LW9zeC1mb250LXNtb290aGluZ2AgQ1NTIHByb3BlcnRpZXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJvZHktYW50aWFsaWFzZWQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgbWFyZ2luIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBwYWRkaW5nIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3Igbm9ybWFsIHR5cGUuXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGdsb2JhbC13ZWlnaHQtbm9ybWFsOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3IgYm9sZCB0eXBlLlxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcbiRnbG9iYWwtd2VpZ2h0LWJvbGQ6IGJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGJvcmRlciByYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXJhZGl1czogMCAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIHRleHQgZGlyZWN0aW9uIG9mIHRoZSBDU1MuIENhbiBiZSBlaXRoZXIgYGx0cmAgb3IgYHJ0bGAuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGdsb2JhbC10ZXh0LWRpcmVjdGlvbjogbHRyICFkZWZhdWx0O1xuXG4vLy8gRW5hYmxlcyBmbGV4Ym94IGZvciBjb21wb25lbnRzIHRoYXQgc3VwcG9ydCBpdC5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZ2xvYmFsLWZsZXhib3g6IGZhbHNlICFkZWZhdWx0O1xuXG5AaWYgbm90IG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpIHtcbiAgQGVycm9yICdJbiAkZm91bmRhdGlvbi1wYWxldHRlLCB5b3UgbXVzdCBoYXZlIGEgY29sb3IgbmFtZWQgXCJwcmltYXJ5XCIuJztcbn1cblxuLy8gSW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgZm9yIHRleHQgZGlyZWN0aW9uXG4kZ2xvYmFsLWxlZnQ6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCByaWdodCwgbGVmdCk7XG4kZ2xvYmFsLXJpZ2h0OiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCwgbGVmdCwgcmlnaHQpO1xuXG4vLyBJbnRlcm5hbCB2YXJpYWJsZXMgdXNlZCBmb3IgY29sb3JzXG4kcHJpbWFyeS1jb2xvcjogZ2V0LWNvbG9yKHByaW1hcnkpO1xuJHNlY29uZGFyeS1jb2xvcjogZ2V0LWNvbG9yKHNlY29uZGFyeSk7XG4kc3VjY2Vzcy1jb2xvcjogZ2V0LWNvbG9yKHN1Y2Nlc3MpO1xuJHdhcm5pbmctY29sb3I6IGdldC1jb2xvcih3YXJuaW5nKTtcbiRhbGVydC1jb2xvcjogZ2V0LWNvbG9yKGFsZXJ0KTtcblxuQG1peGluIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcyB7XG4gIEBpbmNsdWRlIC16Zi1ub3JtYWxpemU7XG5cbiAgLy8gVGhlc2Ugc3R5bGVzIGFyZSBhcHBsaWVkIHRvIGEgPG1ldGE+IHRhZywgd2hpY2ggaXMgcmVhZCBieSB0aGUgRm91bmRhdGlvbiBKYXZhU2NyaXB0XG4gIC5mb3VuZGF0aW9uLW1xIHtcbiAgICBmb250LWZhbWlseTogJyN7LXpmLWJwLXNlcmlhbGl6ZSgkYnJlYWtwb2ludHMpfSc7XG4gIH1cblxuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGZvbnQtc2l6ZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBTZXQgYm94LXNpemluZyBnbG9iYWxseSB0byBoYW5kbGUgcGFkZGluZyBhbmQgYm9yZGVyIHdpZHRoc1xuICAqLFxuICAqOjpiZWZvcmUsXG4gICo6OmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG5cbiAgLy8gRGVmYXVsdCBib2R5IHN0eWxlc1xuICBib2R5IHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcblxuICAgIGJhY2tncm91bmQ6ICRib2R5LWJhY2tncm91bmQ7XG5cbiAgICBmb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcbiAgICBsaW5lLWhlaWdodDogJGdsb2JhbC1saW5laGVpZ2h0O1xuICAgIGNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuXG4gICAgQGlmICgkYm9keS1hbnRpYWxpYXNlZCkge1xuICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAgIH1cbiAgfVxuXG4gIGltZyB7XG4gICAgLy8gR2V0IHJpZCBvZiBnYXAgdW5kZXIgaW1hZ2VzIGJ5IG1ha2luZyB0aGVtIGRpc3BsYXk6IGlubGluZS1ibG9jazsgYnkgZGVmYXVsdFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gICAgLy8gR3JpZCBkZWZhdWx0cyB0byBnZXQgaW1hZ2VzIGFuZCBlbWJlZHMgdG8gd29yayBwcm9wZXJseVxuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYztcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB0ZXh0YXJlYSB0YWtlcyBvbiBoZWlnaHQgYXV0b21hdGljYWxseVxuICB0ZXh0YXJlYSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gIH1cblxuICAvLyBNYWtlIHNlbGVjdCBlbGVtZW50cyBhcmUgMTAwJSB3aWR0aCBieSBkZWZhdWx0XG4gIHNlbGVjdCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgfVxuXG4gIC8vIFN0eWxlcyBHb29nbGUgTWFwcyBhbmQgTWFwUXVlc3QgZW1iZWRzIHByb3Blcmx5XG4gIC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8taWRzXG4gIC5tYXBfY2FudmFzLFxuICAubXFhLWRpc3BsYXkge1xuICAgIGltZyxcbiAgICBlbWJlZCxcbiAgICBvYmplY3Qge1xuICAgICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzZXQgPGJ1dHRvbj4gc3R5bGVzIGNyZWF0ZWQgYnkgbW9zdCBicm93c2Vyc1xuICBidXR0b24ge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcblxuICAgIHBhZGRpbmc6IDA7XG5cbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblxuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICB9XG5cbiAgLy8gUHJldmVudCB0ZXh0IG92ZXJmbG93IG9uIHByZVxuICBwcmUge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgY2xhc3NlcyB0byBzaG93L2hpZGUgZWxlbWVudHMgaW4gSmF2YVNjcmlwdFxuICAuaXMtdmlzaWJsZSB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5pcy1oaWRkZW4ge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gTG9hZHMgbm9ybWFsaXplLmNzcy5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiAtemYtbm9ybWFsaXplIHtcbiAgQGluY2x1ZGUgbm9ybWFsaXplKCk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBUaGUgbWF4aW11bSB3aWR0aCBvZiBhIHJvdy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRncmlkLXJvdy13aWR0aDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIFRoZSBkZWZhdWx0IGNvbHVtbiBjb3VudCBvZiBhIGdyaWQuIENoYW5naW5nIHRoaXMgdmFsdWUgYWZmZWN0cyB0aGUgbG9naWMgb2YgdGhlIGdyaWQgbWl4aW5zLCBhbmQgdGhlIG51bWJlciBvZiBDU1MgY2xhc3NlcyBvdXRwdXQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ3JpZC1jb2x1bW4tY291bnQ6IDEyICFkZWZhdWx0O1xuXG4vLy8gVGhlIGFtb3VudCBvZiBzcGFjZSBiZXR3ZWVuIGNvbHVtbnMgYXQgZGlmZmVyZW50IHNjcmVlbiBzaXplcy4gVG8gdXNlIGp1c3Qgb25lIHNpemUsIHNldCB0aGUgdmFyaWFibGUgdG8gYSBudW1iZXIgaW5zdGVhZCBvZiBhIG1hcC5cbi8vLyBAdHlwZSBNYXAgfCBMZW5ndGhcbi8vLyBAc2luY2UgNi4xLjBcbiRncmlkLWNvbHVtbi1ndXR0ZXI6IChcbiAgc21hbGw6IDIwcHgsXG4gIG1lZGl1bTogMzBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIHRoZSBsYXN0IGNvbHVtbiBpbiBhIHJvdyB3aWxsIGFsaWduIHRvIHRoZSBvcHBvc2l0ZSBlZGdlIG9mIHRoZSByb3cuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGdyaWQtY29sdW1uLWFsaWduLWVkZ2U6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgaGlnaGVzdCBudW1iZXIgb2YgYC54LXVwYCBjbGFzc2VzIGF2YWlsYWJsZSB3aGVuIHVzaW5nIHRoZSBibG9jayBncmlkIENTUy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRibG9jay1ncmlkLW1heDogOCAhZGVmYXVsdDtcblxuLy8gSW50ZXJuYWwgdmFsdWUgdG8gc3RvcmUgdGhlIGVuZCBjb2x1bW4gZmxvYXQgZGlyZWN0aW9uXG4kLXpmLWVuZC1mbG9hdDogaWYoJGdyaWQtY29sdW1uLWFsaWduLWVkZ2UsICRnbG9iYWwtcmlnaHQsICRnbG9iYWwtbGVmdCk7XG5cbkBpbXBvcnQgJ3Jvdyc7XG5AaW1wb3J0ICdjb2x1bW4nO1xuQGltcG9ydCAnc2l6ZSc7XG5AaW1wb3J0ICdwb3NpdGlvbic7XG5AaW1wb3J0ICdndXR0ZXInO1xuQGltcG9ydCAnY2xhc3Nlcyc7XG5AaW1wb3J0ICdsYXlvdXQnO1xuXG5AaW1wb3J0ICdmbGV4LWdyaWQnO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gQ2hhbmdlIHRoZSBiZWhhdmlvciBvZiBjb2x1bW5zIGRlZmluZWQgaW5zaWRlIHRoaXMgbWl4aW4gdG8gdXNlIGEgZGlmZmVyZW50IGNvbHVtbiBjb3VudC5cbi8vLyBAY29udGVudFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gdXNlLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHJvb3QgW2ZhbHNlXVxuLy8vICAgSWYgYGZhbHNlYCwgc2VsZWN0b3JzIGluc2lkZSB0aGlzIG1peGluIHdpbGwgbmVzdCBpbnNpZGUgdGhlIHBhcmVudCBzZWxlY3Rvci5cbi8vLyAgIElmIGB0cnVlYCwgc2VsZWN0b3JzIHdpbGwgbm90IG5lc3QuXG5AbWl4aW4gZ3JpZC1jb250ZXh0KFxuICAkY29sdW1ucyxcbiAgJHJvb3Q6IGZhbHNlXG4pIHtcbiAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgY29sdW1uIGNvdW50IHNvIGl0IGNhbiBiZSByZS1zZXQgbGF0ZXJcbiAgJG9sZC1ncmlkLWNvbHVtbi1jb3VudDogJGdyaWQtY29sdW1uLWNvdW50O1xuICAkZ3JpZC1jb2x1bW4tY291bnQ6ICRjb2x1bW5zICFnbG9iYWw7XG5cbiAgQGlmICRyb290IHtcbiAgICBAYXQtcm9vdCB7IEBjb250ZW50OyB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgLy8gUmVzdG9yZSB0aGUgb2xkIGNvbHVtbiBjb3VudFxuICAkZ3JpZC1jb2x1bW4tY291bnQ6ICRvbGQtZ3JpZC1jb2x1bW4tY291bnQgIWdsb2JhbDtcbn1cblxuLy8vIENyZWF0ZXMgYSBncmlkIHJvdy5cbi8vLyBAY29udGVudFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zIFtudWxsXSAtIENvbHVtbiBjb3VudCBmb3IgdGhpcyByb3cuIGBudWxsYCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBjb2x1bW4gY291bnQuXG4vLy8gQHBhcmFtIHtLZXl3b3Jkc30gJGJlaGF2aW9yIFtudWxsXVxuLy8vICAgTW9kaWZpY2F0aW9ucyB0byB0aGUgZGVmYXVsdCBncmlkIHN0eWxlcy4gYG5lc3RgIGluZGljYXRlcyB0aGUgcm93IHdpbGwgYmUgcGxhY2VkIGluc2lkZSBhbm90aGVyIHJvdy4gYGNvbGxhcHNlYCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29sdW1ucyBpbnNpZGUgdGhpcyByb3cgd2lsbCBub3QgaGF2ZSBwYWRkaW5nLiBgbmVzdCBjb2xsYXBzZWAgY29tYmluZXMgYm90aCBiZWhhdmlvcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgWyRncmlkLXJvdy13aWR0aF0gTWF4aW11bSBzaXplIG9mIHRoZSByb3cuIFNldCB0byBgZXhwYW5kYCB0byBtYWtlIHRoZSByb3cgdGFraW5nIHRoZSBmdWxsIHdpZHRoLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGNmIFt0cnVlXSAtIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgYSBjbGVhcmZpeC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSB3aGVuIGludmVydGluZyBtYXJnaW5zLiBSZXNwb25zaXZlIGd1dHRlciBzZXR0aW5ncyBieSBkZWZhdWx0LlxuQG1peGluIGdyaWQtcm93KFxuICAkY29sdW1uczogbnVsbCxcbiAgJGJlaGF2aW9yOiBudWxsLFxuICAkc2l6ZTogJGdyaWQtcm93LXdpZHRoLFxuICAkY2Y6IHRydWUsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgJG1hcmdpbjogYXV0bztcblxuICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBuZXN0KSAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1uZXN0KCRndXR0ZXJzKTtcblxuICAgIEBpZiBpbmRleCgkYmVoYXZpb3IsIGNvbGxhcHNlKSAhPSBudWxsIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZSgkc2l6ZSk7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG5cbiAgQGlmICRjZiB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH1cblxuICBAaWYgJGNvbHVtbnMgIT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb250ZXh0KCRjb2x1bW5zKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEludmVydHMgdGhlIG1hcmdpbnMgb2YgYSByb3cgdG8gbmVzdCBpdCBpbnNpZGUgb2YgYSBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSB3aGVuIGludmVydGluZyBtYXJnaW5zLiBSZXNwb25zaXZlIGd1dHRlciBzZXR0aW5ncyBieSBkZWZhdWx0LlxuQG1peGluIGdyaWQtcm93LW5lc3QoJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXIpIHtcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgJG1hcmdpbjogcmVtLWNhbGMoLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICQtemYtc2l6ZSkpIC8gMiAqIC0xO1xuXG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG59XG5cbi8vLyBTZXQgYSBncmlkIHJvdyBzaXplXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbJGdyaWQtcm93LXdpZHRoXSBNYXhpbXVtIHNpemUgb2YgdGhlIHJvdy4gU2V0IHRvIGBleHBhbmRgIHRvIG1ha2UgdGhlIHJvdyB0YWtpbmcgdGhlIGZ1bGwgd2lkdGguXG5AbWl4aW4gZ3JpZC1yb3ctc2l6ZSgkc2l6ZTogJGdyaWQtcm93LXdpZHRoKSB7XG4gIEBpZiAkc2l6ZSA9PSBleHBhbmQge1xuICAgICRzaXplOiBub25lO1xuICB9XG5cbiAgbWF4LXdpZHRoOiAkc2l6ZTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIGEgY29sdW1uIGJhc2VkIG9uIGEgbnVtYmVyIG9mIGZhY3RvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkY29sdW1uc1xuLy8vICAgV2lkdGggb2YgdGhlIGNvbHVtbi4gQWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtIEEgcGVyY2VudGFnZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIGNvbHVtbiB0aGF0IGV4YWN0IHNpemUuXG4vLy8gICAtIEEgc2luZ2xlIGRpZ2l0IHdpbGwgbWFrZSB0aGUgY29sdW1uIHNwYW4gdGhhdCBudW1iZXIgb2YgY29sdW1ucyB3aWRlLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBjb2x1bW4gY291bnQgb2YgdGhlIHBhcmVudCByb3cuXG4vLy8gICAtIEEgbGlzdCBvZiB0aGUgZm9ybWF0IFwieCBvZiB5XCIgKHdpdGhvdXQgcXVvdGVzKSB3aWxsIG1ha2UgYSBjb2x1bW4gdGhhdCBpcyAqeCogY29sdW1ucyB3aWRlLCBhc3N1bWluZyAqeSogdG90YWwgY29sdW1ucyBmb3IgdGhlIHBhcmVudC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgY2FsY3VsYXRlZCBwZXJjZW50YWdlIHZhbHVlLlxuQGZ1bmN0aW9uIGdyaWQtY29sdW1uKCRjb2x1bW5zKSB7XG4gICR3aWR0aDogMCU7XG5cbiAgLy8gUGFyc2luZyBwZXJjZW50cywgZGVjaW1hbHMsIGFuZCBjb2x1bW4gY291bnRzXG4gIEBpZiB0eXBlLW9mKCRjb2x1bW5zKSA9PSAnbnVtYmVyJyB7XG4gICAgQGlmIHVuaXQoJGNvbHVtbnMpID09ICclJyB7XG4gICAgICAkd2lkdGg6ICRjb2x1bW5zO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY29sdW1ucyA8IDEge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRjb2x1bW5zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRjb2x1bW5zIC8gJGdyaWQtY29sdW1uLWNvdW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBQYXJzaW5nIFwibiBvZiBuXCIgZXhwcmVzc2lvbnNcbiAgQGVsc2UgaWYgdHlwZS1vZigkY29sdW1ucykgPT0gJ2xpc3QnIHtcbiAgICBAaWYgbGVuZ3RoKCRjb2x1bW5zKSAhPSAzIHtcbiAgICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBncmlkLWNvbHVtbigpLiBVc2UgdGhlIGZvcm1hdCBcIm4gb2YgblwiLic7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZShudGgoJGNvbHVtbnMsIDEpIC8gbnRoKCRjb2x1bW5zLCAzKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQW55dGhpbmcgZWxzZSBpcyBpbmNvcnJlY3RcbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBncmlkLWNvbHVtbigpLiBVc2UgYSBudW1iZXIsIGRlY2ltYWwsIHBlcmNlbnRhZ2UsIG9yIFwibiBvZiBuXCIuJztcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgWyRncmlkLWNvbHVtbi1jb3VudF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMuIFJlZmVyIHRvIHRoZSBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG5AbWl4aW4gZ3JpZC1jb2x1bW4oXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnQsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tc2l6ZSgkY29sdW1ucyk7XG4gIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XG5cbiAgLy8gR3V0dGVyc1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoJGd1dHRlcnM6ICRndXR0ZXJzKTtcblxuICAvLyBMYXN0IGNvbHVtbiBhbGlnbm1lbnRcbiAgQGlmICRncmlkLWNvbHVtbi1hbGlnbi1lZGdlIHtcbiAgICAmOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgZmxvYXQ6ICRnbG9iYWwtcmlnaHQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgZ3JpZCBjb2x1bW4gcm93LiBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIGFkZGluZyBgLnJvd2AgYW5kIGAuY29sdW1uYCB0byB0aGUgc2FtZSBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gV2lkdGggb2YgdGhlIGd1dHRlcnMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIGNvbHVtbiByb3cuIFJlZmVyIHRvIHRoZSBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tcm93KFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtcm93O1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbigkZ3V0dGVyczogJGd1dHRlcnMpO1xuXG4gICYsXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgZmxvYXQ6IG5vbmU7XG4gIH1cbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtblxuQGZ1bmN0aW9uIGdyaWQtY29sKFxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50XG4pIHtcbiAgQHJldHVybiBncmlkLWNvbHVtbigkY29sdW1ucyk7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW5cbkBtaXhpbiBncmlkLWNvbChcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudCxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbigkY29sdW1ucywgJGd1dHRlcnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tcm93KClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1yb3dcbkBtaXhpbiBncmlkLWNvbC1yb3coXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tcm93KCRndXR0ZXJzKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFNldCB0aGUgd2lkdGggb2YgYSBncmlkIGNvbHVtbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR3aWR0aCBbJGdyaWQtY29sdW1uLWNvdW50XSAtIFdpZHRoIHRvIG1ha2UgdGhlIGNvbHVtbi4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuQG1peGluIGdyaWQtY29sdW1uLXNpemUoXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnRcbikge1xuICB3aWR0aDogZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tc2l6ZSgpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tc2l6ZVxuQG1peGluIGdyaWQtY29sLXNpemUoXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnRcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1zaXplKCRjb2x1bW5zKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFJlcG9zaXRpb24gYSBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkcG9zaXRpb24gLSBEaXJlY3Rpb24gYW5kIGFtb3VudCB0byBtb3ZlLiBUaGUgY29sdW1uIHdpbGwgbW92ZSBlcXVhbCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiBjb3VudCBzcGVjaWZpZWQuIEEgcG9zaXRpdmUgbnVtYmVyIHdpbGwgcHVzaCB0aGUgY29sdW1uIHRvIHRoZSByaWdodCwgd2hpbGUgYSBuZWdhdGl2ZSBudW1iZXIgd2lsbCBwdWxsIGl0IHRvIHRoZSBsZWZ0LiBTZXQgdG8gY2VudGVyIHRvIGNlbnRlciB0aGUgY29sdW1uLlxuQG1peGluIGdyaWQtY29sdW1uLXBvc2l0aW9uKCRwb3NpdGlvbikge1xuICBAaWYgdHlwZS1vZigkcG9zaXRpb24pID09ICdudW1iZXInIHtcbiAgICAkb2Zmc2V0OiBwZXJjZW50YWdlKCRwb3NpdGlvbiAvICRncmlkLWNvbHVtbi1jb3VudCk7XG5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBjZW50ZXIge1xuICAgICYsICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuICdXcm9uZyBzeW50YXggZm9yIGdyaWQtY29sdW1uLXBvc2l0aW9uKCkuIEVudGVyIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgbnVtYmVyLCBvciBjZW50ZXIuJztcbiAgfVxufVxuXG4vLy8gUmVzZXQgYSBwb3NpdGlvbiBkZWZpbml0aW9uLlxuQG1peGluIGdyaWQtY29sdW1uLXVucG9zaXRpb24ge1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLy8vIE9mZnNldHMgYSBjb2x1bW4gdG8gdGhlIHJpZ2h0IGJ5IGAkbmAgY29sdW1ucy5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFdpZHRoIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIG1peGluLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuQG1peGluIGdyaWQtY29sdW1uLW9mZnNldCgkbikge1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiBncmlkLWNvbHVtbigkbik7XG59XG5cbi8vLyBEaXNhYmxlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBsYXN0IGNvbHVtbiBpbiBhIHJvdyBhbGlnbmluZyB0byB0aGUgb3Bwb3NpdGUgZWRnZS5cbkBtaXhpbiBncmlkLWNvbHVtbi1lbmQge1xuICAvLyBUaGlzIGV4dHJhIHNwZWNpZmljaXR5IGlzIHJlcXVpcmVkIGZvciB0aGUgcHJvcGVydHkgdG8gYmUgYXBwbGllZFxuICAmOmxhc3QtY2hpbGQ6bGFzdC1jaGlsZCB7XG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgfVxufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tcG9zaXRpb24oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXBvc2l0aW9uXG5AbWl4aW4gZ3JpZC1jb2wtcG9zKCRwb3NpdGlvbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1wb3NpdGlvbigkcG9zaXRpb24pO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvblxuQG1peGluIGdyaWQtY29sLXVucG9zIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbjtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLW9mZnNldCgpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tb2Zmc2V0XG5AbWl4aW4gZ3JpZC1jb2wtb2ZmKCRuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLW9mZnNldCgkbik7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1lbmQoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWVuZFxuQG1peGluIGdyaWQtY29sLWVuZCB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWVuZDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFNldCB0aGUgZ3V0dGVycyBvbiBhIGNvbHVtblxuLy8vIEBwYXJhbSB7TnVtYmVyfEtleXdvcmR9ICRndXR0ZXIgW2F1dG9dXG4vLy8gICBTcGFjaW5nIGJldHdlZW4gY29sdW1ucywgYWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtIEEgc2luZ2xlIHZhbHVlIHdpbGwgbWFrZSB0aGUgZ3V0dGVyIHRoYXQgZXhhY3Qgc2l6ZS5cbi8vLyAgIC0gQSBicmVha3BvaW50IG5hbWUgd2lsbCBtYWtlIHRoZSBndXR0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgc2l6ZSBpbiB0aGUgJGd1dHRlcnMgbWFwLlxuLy8vICAgLSBcImF1dG9cIiB3aWxsIG1ha2UgdGhlIGd1dHRlciByZXNwb25zaXZlLCB1c2luZyB0aGUgJGd1dHRlcnMgbWFwIHZhbHVlcy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZS4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBncmlkLWNvbHVtbi1ndXR0ZXIoXG4gICRndXR0ZXI6IGF1dG8sXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoJGd1dHRlciwgJGd1dHRlcnMpIHtcbiAgICAkcGFkZGluZzogcmVtLWNhbGMoJC16Zi1icC12YWx1ZSkgLyAyO1xuXG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxufVxuXG4vLy8gQ29sbGFwc2UgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW4gYnkgcmVtb3ZpbmcgdGhlIHBhZGRpbmcuICoqTm90ZToqKiBvbmx5IHVzZSB0aGlzIG1peGluIHdpdGhpbiBhIGJyZWFrcG9pbnQuIFRvIGNvbGxhcHNlIGEgY29sdW1uJ3MgZ3V0dGVycyBvbiBhbGwgc2NyZWVuIHNpemVzLCB1c2UgdGhlIGAkZ3V0dGVyYCBwYXJhbWV0ZXIgb2YgdGhlIGBncmlkLWNvbHVtbigpYCBtaXhpbiBpbnN0ZWFkLlxuQG1peGluIGdyaWQtY29sdW1uLWNvbGxhcHNlIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKDApO1xufVxuXG4vLy8gVW4tY29sbGFwc2UgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW4gYnkgcmUtYWRkaW5nIHRoZSBwYWRkaW5nLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRndXR0ZXIgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tdW5jb2xsYXBzZSgkZ3V0dGVyOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyKSB7XG4gIEB3YXJuICdUaGlzIG1peGluIGlzIGJlaW5nIHJlcGxhY2VkIGJ5IGdyaWQtY29sdW1uLWd1dHRlcigpLiBncmlkLWNvbHVtbi11bmNvbGxhcHNlKCkgd2lsbCBiZSByZW1vdmVkIGluIEZvdW5kYXRpb24gNi40Lic7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWd1dHRlcigkZ3V0dGVyczogJGd1dHRlcik7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1ndXR0ZXIoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWd1dHRlclxuQG1peGluIGdyaWQtY29sLWd1dHRlcihcbiAgJGd1dHRlcjogYXV0byxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoJGd1dHRlciwgJGd1dHRlcnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tY29sbGFwc2UoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWNvbGxhcHNlXG5AbWl4aW4gZ3JpZC1jb2wtY29sbGFwc2Uge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1jb2xsYXBzZTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLXVuY29sbGFwc2UoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXVuY29sbGFwc2VcbkBtaXhpbiBncmlkLWNvbC11bmNvbGxhcHNlKCRndXR0ZXI6ICRncmlkLWNvbHVtbi1ndXR0ZXIpIHtcbiAgQHdhcm4gJ1RoaXMgbWl4aW4gaXMgYmVpbmcgcmVwbGFjZWQgYnkgZ3JpZC1jb2wtZ3V0dGVyKCkuIGdyaWQtY29sLXVuY29sbGFwc2UoKSB3aWxsIGJlIHJlbW92ZWQgaW4gRm91bmRhdGlvbiA2LjQuJztcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tdW5jb2xsYXBzZSgkZ3V0dGVyKTtcbn1cblxuLy8vIFNldHMgYm90dG9tIG1hcmdpbiBvbiBncmlkIGNvbHVtbnMgdG8gbWF0Y2ggZ3V0dGVyc1xuLy8vIEBwYXJhbSB7TnVtYmVyfEtleXdvcmR9ICRtYXJnaW4gW2F1dG9dXG4vLy8gICBUaGUgYm90dG9tIG1hcmdpbiBvbiBncmlkIGNvbHVtbnMsIGFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxuLy8vICAgLSBBIHNpbmdsZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIG1hcmdpbiB0aGF0IGV4YWN0IHNpemUuXG4vLy8gICAtIEEgYnJlYWtwb2ludCBuYW1lIHdpbGwgbWFrZSB0aGUgbWFyZ2luIHRoZSBjb3JyZXNwb25kaW5nIHNpemUgaW4gdGhlICRtYXJnaW5zIG1hcC5cbi8vLyAgIC0gXCJhdXRvXCIgd2lsbCBtYWtlIHRoZSBtYXJnaW4gcmVzcG9uc2l2ZSwgdXNpbmcgdGhlICRtYXJnaW5zIG1hcCB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFyZ2lucyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZS4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBncmlkLWNvbHVtbi1tYXJnaW4gKFxuICAkbWFyZ2luOiBhdXRvLFxuICAkbWFyZ2luczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKCRtYXJnaW4sICRtYXJnaW5zKSB7XG4gICAgJG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUpO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuXG4gICAgPiA6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gT3V0cHV0cyBDU1MgY2xhc3NlcyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gZm91bmRhdGlvbi1ncmlkKFxuICAkcm93OiAncm93JyxcbiAgJGNvbHVtbjogJ2NvbHVtbicsXG4gICRjb2x1bW4tcm93OiAnY29sdW1uLXJvdycsXG4gICRndXR0ZXI6ICdndXR0ZXInLFxuICAkcHVzaDogJ3B1c2gnLFxuICAkcHVsbDogJ3B1bGwnLFxuICAkY2VudGVyOiAnY2VudGVyZWQnLFxuICAkdW5jZW50ZXI6ICd1bmNlbnRlcmVkJyxcbiAgJGNvbGxhcHNlOiAnY29sbGFwc2UnLFxuICAkdW5jb2xsYXBzZTogJ3VuY29sbGFwc2UnLFxuICAkb2Zmc2V0OiAnb2Zmc2V0JyxcbiAgJGVuZDogJ2VuZCcsXG4gICRleHBhbmRlZDogJ2V4cGFuZGVkJyxcbiAgJGJsb2NrOiAnYmxvY2snXG4pIHtcbiAgLy8gUm93XG4gIC4jeyRyb3d9IHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdztcblxuICAgIC8vIENvbGxhcHNpbmdcbiAgICAmLiN7JGNvbGxhcHNlfSB7XG4gICAgICA+IC4jeyRjb2x1bW59IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmVzdGluZ1xuICAgICYgLiN7JHJvd30ge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctbmVzdCgkZ3JpZC1jb2x1bW4tZ3V0dGVyKTtcblxuICAgICAgJi4jeyRjb2xsYXBzZX0ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4cGFuZGVkIChmdWxsLXdpZHRoKSByb3dcbiAgICAmLiN7JGV4cGFuZGVkfSB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XG5cbiAgICAgIC4jeyRyb3d9IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCguI3skZXhwYW5kZWR9KSAuI3skcm93fSB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJGdyaWQtY29sdW1uLWd1dHRlcikgPT0gJ21hcCcge1xuICAgICAgLy8gU3RhdGljICh1bnJlc3BvbnNpdmUpIHJvdyBndXR0ZXJzXG4gICAgICAvL1xuICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsICR2YWx1ZSBpbiAkZ3JpZC1jb2x1bW4tZ3V0dGVyIHtcbiAgICAgICAgJi4jeyRndXR0ZXJ9LSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgICAgICA+IC4jeyRjb2x1bW59IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLWd1dHRlcigkdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbHVtblxuICAuI3skY29sdW1ufSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2w7XG5cbiAgICBAaWYgJGdyaWQtY29sdW1uLWFsaWduLWVkZ2Uge1xuICAgICAgJi4jeyRlbmR9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtZW5kO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbHVtbiByb3dcbiAgLy8gVGhlIGRvdWJsZSAucm93IGNsYXNzIGlzIG5lZWRlZCB0byBidW1wIHVwIHRoZSBzcGVjaWZpY2l0eVxuICAuI3skY29sdW1ufS4jeyRyb3d9LiN7JHJvd30ge1xuICAgIGZsb2F0OiBub25lO1xuICB9XG5cbiAgLy8gVG8gcHJvcGVybHkgbmVzdCBhIGNvbHVtbiByb3csIHBhZGRpbmcgYW5kIG1hcmdpbiBpcyByZW1vdmVkXG4gIC4jeyRyb3d9IC4jeyRjb2x1bW59LiN7JHJvd30uI3skcm93fSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW4tY291bnQge1xuICAgICAgLy8gQ29sdW1uIHdpZHRoXG4gICAgICAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtc2l6ZSgkaSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNvdXJjZSBvcmRlcmluZ1xuICAgICAgQGlmICRpIDwgJGdyaWQtY29sdW1uLWNvdW50IHtcbiAgICAgICAgLiN7JC16Zi1zaXplfS0jeyRwdXNofS0jeyRpfSB7XG4gICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKCRpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC4jeyQtemYtc2l6ZX0tI3skcHVsbH0tI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXBvcygtJGkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE9mZnNldHNcbiAgICAgICRvOiAkaSAtIDE7XG5cbiAgICAgIC4jeyQtemYtc2l6ZX0tI3skb2Zmc2V0fS0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLW9mZigkbyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmxvY2sgZ3JpZFxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGJsb2NrLWdyaWQtbWF4IHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWxheW91dCgkaSwgJy4jeyRjb2x1bW59Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBjb2xsYXBzaW5nXG4gICAgLiN7JC16Zi1zaXplfS0jeyRjb2xsYXBzZX0ge1xuICAgICAgPiAuI3skY29sdW1ufSB7IEBpbmNsdWRlIGdyaWQtY29sLWNvbGxhcHNlOyB9XG5cbiAgICAgIC4jeyRyb3d9IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuI3skZXhwYW5kZWR9LiN7JHJvd30gLiN7JC16Zi1zaXplfS0jeyRjb2xsYXBzZX0uI3skcm93fSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LSN7JHVuY29sbGFwc2V9IHtcbiAgICAgID4gLiN7JGNvbHVtbn0geyBAaW5jbHVkZSBncmlkLWNvbC1ndXR0ZXIoJC16Zi1zaXplKTsgfVxuICAgIH1cblxuICAgIC8vIFBvc2l0aW9uaW5nXG4gICAgLiN7JC16Zi1zaXplfS0jeyRjZW50ZXJ9IHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXBvcyhjZW50ZXIpO1xuICAgIH1cblxuICAgIC8vIEd1dHRlciBhZGp1c3RtZW50XG4gICAgLiN7JC16Zi1zaXplfS0jeyR1bmNlbnRlcn0sXG4gICAgLiN7JC16Zi1zaXplfS0jeyRwdXNofS0wLFxuICAgIC4jeyQtemYtc2l6ZX0tI3skcHVsbH0tMCB7XG4gICAgICBAaW5jbHVkZSBncmlkLWNvbC11bnBvcztcbiAgICB9XG4gIH1cblxuICAvLyBCbG9jayBncmlkIGNvbHVtbnNcbiAgLiN7JGNvbHVtbn0tI3skYmxvY2t9IHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1tYXJnaW47XG4gIH1cblxuICBAaWYgJGNvbHVtbiA9PSAnY29sdW1uJyB7XG4gICAgLmNvbHVtbnMge1xuICAgICAgLy8gc2Fzcy1saW50OmRpc2FibGUtYmxvY2sgcGxhY2Vob2xkZXItaW4tZXh0ZW5kXG4gICAgICBAZXh0ZW5kIC5jb2x1bW47XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBTaXplcyBjaGlsZCBlbGVtZW50cyBzbyB0aGF0IGAkbmAgbnVtYmVyIG9mIGl0ZW1zIGFwcGVhciBvbiBlYWNoIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBlbGVtZW50cyB0byBkaXNwbGF5IHBlciByb3cuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJy5jb2x1bW4nXSAtIFNlbGVjdG9yKHMpIHRvIHVzZSBmb3IgY2hpbGQgZWxlbWVudHMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGd1dHRlclxuLy8vICAgVGhlIGd1dHRlciB0byBhcHBseSB0byBjaGlsZCBlbGVtZW50cy4gQWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtICRncmlkLWNvbHVtbi1ndXR0ZXIgd2lsbCB1c2UgdGhlIHZhbHVlcyBpbiB0aGUgJGdyaWQtY29sdW1uLWd1dHRlciBtYXAsIGluY2x1ZGluZyBicmVha3BvaW50IHNpemVzLlxuLy8vICAgLSBBIGZpeGVkIG51bWVyaWMgdmFsdWUgd2lsbCBhcHBseSB0aGlzIGd1dHRlciB0byBhbGwgYnJlYWtwb2ludHMuXG5AbWl4aW4gZ3JpZC1sYXlvdXQoXG4gICRuLFxuICAkc2VsZWN0b3I6ICcuY29sdW1uJyxcbiAgJGd1dHRlcjogbnVsbFxuKSB7XG4gICYgPiAjeyRzZWxlY3Rvcn0ge1xuICAgIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoMS8kbik7XG5cbiAgICAvLyBJZiBhICRndXR0ZXIgdmFsdWUgaXMgcGFzc2VkXG4gICAgQGlmKCRndXR0ZXIpIHtcbiAgICAgIC8vIEd1dHRlcnNcbiAgICAgIEBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdtYXAnIHtcbiAgICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsICR2YWx1ZSBpbiAkZ3V0dGVyIHtcbiAgICAgICAgICAkcGFkZGluZzogcmVtLWNhbGMoJHZhbHVlKSAvIDI7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCRndXR0ZXIpID4gMCB7XG4gICAgICAgICRwYWRkaW5nOiByZW0tY2FsYygkZ3V0dGVyKSAvIDI7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bnRoLW9mLXR5cGUoMW4pIHtcbiAgICAgIGNsZWFyOiBub25lO1xuICAgIH1cblxuICAgICY6bnRoLW9mLXR5cGUoI3skbn1uKzEpIHtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBleHRyYSBDU1MgdG8gYmxvY2sgZ3JpZCBjaGlsZHJlbiBzbyB0aGUgbGFzdCBpdGVtcyBpbiB0aGUgcm93IGNlbnRlciBhdXRvbWF0aWNhbGx5LiBBcHBseSB0aGlzIHRvIHRoZSBjb2x1bW5zLCBub3QgdGhlIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBpdGVtcyB0aGF0IGFwcGVhciBpbiBlYWNoIHJvdy5cbkBtaXhpbiBncmlkLWxheW91dC1jZW50ZXItbGFzdCgkbikge1xuICBAZm9yICRpIGZyb20gMSB0byAkbiB7XG4gICAgQGlmICRpID09IDEge1xuICAgICAgJjpudGgtY2hpbGQoI3skbn1uKzEpOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tbGVmdDogKDEwMCAtIDEwMC8kbiAqICRpKSAvIDIgKiAxJTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJjpudGgtY2hpbGQoI3skbn1uKzEpOm50aC1sYXN0LWNoaWxkKCN7JGl9KSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAoMTAwIC0gMTAwLyRuICogJGkpIC8gMiAqIDElO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZmxleC1ncmlkXG4vLy8vXG5cbi8vLyBDcmVhdGVzIGEgY29udGFpbmVyIGZvciBhIGZsZXggZ3JpZCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TGlzdH0gJGJlaGF2aW9yIFtudWxsXVxuLy8vICAgTW9kaWZpY2F0aW9ucyB0byB0aGUgZGVmYXVsdCBncmlkIHN0eWxlcy4gYG5lc3RgIGluZGljYXRlcyB0aGUgcm93IHdpbGwgYmUgcGxhY2VkIGluc2lkZSBhbm90aGVyIHJvdy4gYGNvbGxhcHNlYCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29sdW1ucyBpbnNpZGUgdGhpcyByb3cgd2lsbCBub3QgaGF2ZSBwYWRkaW5nLiBgbmVzdCBjb2xsYXBzZWAgY29tYmluZXMgYm90aCBiZWhhdmlvcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgWyRncmlkLXJvdy13aWR0aF0gTWF4aW11bSBzaXplIG9mIHRoZSByb3cuIFNldCB0byBgZXhwYW5kYCB0byBtYWtlIHRoZSByb3cgdGFraW5nIHRoZSBmdWxsIHdpZHRoLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyBbbnVsbF0gLSBOdW1iZXIgb2YgY29sdW1ucyB0byB1c2UgZm9yIHRoaXMgcm93LiBJZiBzZXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCksIHRoZSBnbG9iYWwgY29sdW1uIGNvdW50IHdpbGwgYmUgdXNlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRiYXNlIFt0cnVlXSAtIFNldCB0byBgZmFsc2VgIHRvIHByZXZlbnQgYmFzaWMgc3R5bGVzIGZyb20gYmVpbmcgb3V0cHV0LiBVc2VmdWwgaWYgeW91J3JlIGNhbGxpbmcgdGhpcyBtaXhpbiBvbiB0aGUgc2FtZSBlbGVtZW50IHR3aWNlLCBhcyBpdCBwcmV2ZW50cyBkdXBsaWNhdGUgQ1NTIG91dHB1dC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSB3aGVuIGludmVydGluZyBtYXJnaW5zLCBpbiBjYXNlIHRoZSByb3cgaXMgbmVzdGVkLiBSZXNwb25zaXZlIGd1dHRlciBzZXR0aW5ncyBieSBkZWZhdWx0LlxuQG1peGluIGZsZXgtZ3JpZC1yb3coXG4gICRiZWhhdmlvcjogbnVsbCxcbiAgJHNpemU6ICRncmlkLXJvdy13aWR0aCxcbiAgJGNvbHVtbnM6IG51bGwsXG4gICRiYXNlOiB0cnVlLFxuICAkd3JhcDogdHJ1ZSxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICAkbWFyZ2luOiBhdXRvO1xuICAkd3JhcDogaWYoJHdyYXAsIHdyYXAsIG5vd3JhcCk7XG5cbiAgQGlmIGluZGV4KCRiZWhhdmlvciwgbmVzdCkgIT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctbmVzdCgkZ3V0dGVycyk7XG5cbiAgICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBjb2xsYXBzZSkgIT0gbnVsbCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoJHNpemUpO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gIEBpZiAkYmFzZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyAkd3JhcDtcbiAgfVxuXG4gIEBpZiAkY29sdW1ucyAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbnRleHQoJGNvbHVtbnMsICRiYXNlKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIENhbGN1bGF0ZXMgdGhlIGBmbGV4YCBwcm9wZXJ0eSBmb3IgYSBmbGV4IGdyaWQgY29sdW1uLiBJdCBhY2NlcHRzIGFsbCBvZiB0aGUgc2FtZSB2YWx1ZXMgYXMgdGhlIGJhc2ljIGBncmlkLWNvbHVtbigpYCBmdW5jdGlvbiwgYWxvbmcgd2l0aCB0d28gZXh0cmFzOlxuLy8vICAgLSBgZXhwYW5kYCAodGhlIGRlZmF1bHQpIHdpbGwgbWFrZSB0aGUgY29sdW1uIGV4cGFuZCB0byBmaWxsIHNwYWNlLlxuLy8vICAgLSBgc2hyaW5rYCB3aWxsIG1ha2UgdGhlIGNvbHVtbiBjb250cmFjdCwgc28gaXQgb25seSB0YWtlcyB1cCB0aGUgaG9yaXpvbnRhbCBzcGFjZSBpdCBuZWVkcy5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFtleHBhbmRdIC0gV2lkdGggb2YgdGhlIGNvbHVtbi5cbkBmdW5jdGlvbiBmbGV4LWdyaWQtY29sdW1uKCRjb2x1bW5zOiBleHBhbmQpIHtcbiAgJGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG5cbiAgQGlmICRjb2x1bW5zID09IHNocmluayB7XG4gICAgJGZsZXg6IDAgMCBhdXRvO1xuICB9XG4gIEBlbHNlIGlmICRjb2x1bW5zICE9IGV4cGFuZCB7XG4gICAgJGZsZXg6IDAgMCBncmlkLWNvbHVtbigkY29sdW1ucyk7XG4gIH1cblxuICBAcmV0dXJuICRmbGV4O1xufVxuXG4vLy8gQ3JlYXRlcyBhIGNvbHVtbiBmb3IgYSBmbGV4IGdyaWQuIEJ5IGRlZmF1bHQsIHRoZSBjb2x1bW4gd2lsbCBzdHJldGNoIHRvIHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBjb250YWluZXIsIGJ1dCB0aGlzIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggc2l6aW5nIGNsYXNzZXMsIG9yIGJ5IHVzaW5nIHRoZSBgdW5zdGFja2AgY2xhc3Mgb24gdGhlIHBhcmVudCBmbGV4IHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFtleHBhbmRdIC0gV2lkdGggb2YgdGhlIGNvbHVtbi4gUmVmZXIgdG8gdGhlIGBmbGV4LWdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzIHdpZHRoLiBTZWUgdGhlIGBncmlkLWNvbHVtbi1ndXR0ZXJgIG1peGluLlxuQG1peGluIGZsZXgtZ3JpZC1jb2x1bW4oXG4gICRjb2x1bW5zOiBleHBhbmQsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgLy8gQmFzZSBwcm9wZXJ0aWVzXG4gIEBpbmNsdWRlIGZsZXgtZ3JpZC1zaXplKCRjb2x1bW5zKTtcblxuICAvLyBHdXR0ZXJzXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWd1dHRlcigkZ3V0dGVyczogJGd1dHRlcnMpO1xuXG4gIC8vIGZpeGVzIHJlY2VudCBDaHJvbWUgdmVyc2lvbiBub3QgbGltaXRpbmcgY2hpbGQgd2lkdGhcbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ5MzQ1ODYvd2hpdGUtc3BhY2Utbm93cmFwLWFuZC1mbGV4Ym94LWRpZC1ub3Qtd29yay1pbi1jaHJvbWVcbiAgQGlmICRjb2x1bW5zID09IGV4cGFuZCB7XG4gICAgbWluLXdpZHRoOiBpbml0aWFsO1xuICB9XG4gIC8vIG1heC13aWR0aCBmaXhlcyBJRSAxMC8xMSBub3QgcmVzcGVjdGluZyB0aGUgZmxleC1iYXNpcyBwcm9wZXJ0eVxuICBAaWYgJGNvbHVtbnMgIT0gZXhwYW5kIGFuZCAkY29sdW1ucyAhPSBzaHJpbmsge1xuICAgIG1heC13aWR0aDogZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgYmxvY2sgZ3JpZCBmb3IgYSBmbGV4IGdyaWQgcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gZGlzcGxheSBvbiBlYWNoIHJvdy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIC0gU2VsZWN0b3IgdG8gdXNlIHRvIHRhcmdldCBjb2x1bW5zIHdpdGhpbiB0aGUgcm93LlxuQG1peGluIGZsZXgtZ3JpZC1sYXlvdXQoXG4gICRuLFxuICAkc2VsZWN0b3I6ICcuY29sdW1uJ1xuKSB7XG4gIGZsZXgtd3JhcDogd3JhcDtcblxuICA+ICN7JHNlbGVjdG9yfSB7XG4gICAgJHBjdDogcGVyY2VudGFnZSgxLyRuKTtcblxuICAgIGZsZXg6IDAgMCAkcGN0O1xuICAgIG1heC13aWR0aDogJHBjdDtcbiAgfVxufVxuXG4vLy8gQ2hhbmdlcyB0aGUgd2lkdGggZmxleCBncmlkIGNvbHVtbi5cbi8vLyBAcGFyYW0ge01peGVkfSAkY29sdW1ucyBbZXhwYW5kXSAtIFdpZHRoIG9mIHRoZSBjb2x1bW4uIFJlZmVyIHRvIHRoZSBgZmxleC1ncmlkLWNvbHVtbigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxuQG1peGluIGZsZXgtZ3JpZC1zaXplKCRjb2x1bW5zOiBudWxsKSB7XG4gICRjb2x1bW5zOiAkY29sdW1ucyBvciBleHBhbmQ7XG5cbiAgZmxleDogZmxleC1ncmlkLWNvbHVtbigkY29sdW1ucyk7XG5cbiAgLy8gbWF4LXdpZHRoIGZpeGVzIElFIDEwLzExIG5vdCByZXNwZWN0aW5nIHRoZSBmbGV4LWJhc2lzIHByb3BlcnR5XG4gIEBpZiAkY29sdW1ucyAhPSBleHBhbmQgYW5kICRjb2x1bW5zICE9IHNocmluayB7XG4gICAgbWF4LXdpZHRoOiBncmlkLWNvbHVtbigkY29sdW1ucyk7XG4gIH1cbn1cblxuXG5AbWl4aW4gZm91bmRhdGlvbi1mbGV4LWdyaWQge1xuICAvLyBSb3dcbiAgLnJvdyB7XG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdztcblxuICAgIC8vIE5lc3RpbmcgYmVoYXZpb3JcbiAgICAmIC5yb3cge1xuICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdyhuZXN0LCAkYmFzZTogZmFsc2UpO1xuXG4gICAgICAmLmNvbGxhcHNlIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBhbmRlZCByb3dcbiAgICAmLmV4cGFuZGVkIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoZXhwYW5kKTtcbiAgICB9XG5cbiAgICAmOm5vdCguZXhwYW5kZWQpIC5yb3cge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xuICAgIH1cblxuICAgICYuY29sbGFwc2Uge1xuICAgICAgPiAuY29sdW1uIHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW5kbyBuZWdhdGl2ZSBtYXJnaW5zXG4gICAgLy8gRnJvbSBjb2xsYXBzZWQgY2hpbGRcbiAgICAmLmlzLWNvbGxhcHNlLWNoaWxkLFxuICAgICYuY29sbGFwc2UgPiAuY29sdW1uID4gLnJvdyB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gIH1cblxuICAvLyBDb2x1bW5cbiAgLmNvbHVtbiB7XG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbjtcbiAgfVxuXG4gIC8vIENvbHVtbiByb3dcbiAgLy8gVGhlIGRvdWJsZSAucm93IGNsYXNzIGlzIG5lZWRlZCB0byBidW1wIHVwIHRoZSBzcGVjaWZpY2l0eVxuICAuY29sdW1uLnJvdy5yb3cge1xuICAgIGZsb2F0OiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLy8gVG8gcHJvcGVybHkgbmVzdCBhIGNvbHVtbiByb3csIHBhZGRpbmcgYW5kIG1hcmdpbiBpcyByZW1vdmVkXG4gIC5yb3cgLmNvbHVtbi5yb3cucm93IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cblxuXG4gIC5mbGV4LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZmxleDtcbiAgfVxuXG4gIC5mbGV4LWNoaWxkLWF1dG8ge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgLmZsZXgtY2hpbGQtZ3JvdyB7XG4gICAgZmxleDogMSAwIGF1dG87XG4gIH1cblxuICAuZmxleC1jaGlsZC1zaHJpbmsge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICB9XG5cbiAgQGVhY2ggJGRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWRpcmVjdGlvbiB7XG4gICAgLmZsZXgtZGlyLSN7JGRpcn0ge1xuICAgICAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oJHByb3ApO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1uLWNvdW50IHtcbiAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAgIC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCRpKTtcbiAgICAgICAgbWF4LXdpZHRoOiBncmlkLWNvbHVtbigkaSk7XG4gICAgICB9XG5cbiAgICAgIC8vIE9mZnNldHNcbiAgICAgICRvOiAkaSAtIDE7XG5cbiAgICAgIC4jeyQtemYtc2l6ZX0tb2Zmc2V0LSN7JG99IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tb2Zmc2V0KCRvKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTb3VyY2Ugb3JkZXJpbmdcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDYge1xuICAgICAgLiN7JC16Zi1zaXplfS1vcmRlci0jeyRpfSB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtb3JkZXIoJGkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJsb2NrIGdyaWRcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRibG9jay1ncmlkLW1heCB7XG4gICAgICAuI3skLXpmLXNpemV9LXVwLSN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWxheW91dCgkaSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICQtemYtc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAvLyBTaXppbmcgKGV4cGFuZClcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJC16Zi1zaXplKSB7XG4gICAgICAgIC4jeyQtemYtc2l6ZX0tZXhwYW5kIHtcbiAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZGlyZWN0aW9uIGhlbHBlciBjbGFzc2VzXG4gICAgICBAZWFjaCAkZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtZGlyZWN0aW9uIHtcbiAgICAgICAgLiN7JC16Zi1zaXplfS1mbGV4LWRpci0jeyRkaXJ9IHtcbiAgICAgICAgICBAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbigkcHJvcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIGNoaWxkIGhlbHBlciBjbGFzc2VzXG4gICAgICAuI3skLXpmLXNpemV9LWZsZXgtY2hpbGQtYXV0byB7XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgfVxuXG4gICAgICAuI3skLXpmLXNpemV9LWZsZXgtY2hpbGQtZ3JvdyB7XG4gICAgICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAuI3skLXpmLXNpemV9LWZsZXgtY2hpbGQtc2hyaW5rIHtcbiAgICAgICAgZmxleDogMCAxIGF1dG87XG4gICAgICB9XG5cbiAgICAgIC8vIEF1dG8tc3RhY2tpbmcvdW5zdGFja2luZ1xuICAgICAgQGF0LXJvb3QgKHdpdGhvdXQ6IG1lZGlhKSB7XG4gICAgICAgIC5yb3cuI3skLXpmLXNpemV9LXVuc3RhY2sge1xuICAgICAgICAgID4gLmNvbHVtbiB7XG4gICAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKDEwMCUpO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtc2l6ZSkge1xuICAgICAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBjb2xsYXBzaW5nXG4gICAgLiN7JC16Zi1zaXplfS1jb2xsYXBzZSB7XG4gICAgICA+IC5jb2x1bW4geyBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTsgfVxuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tdW5jb2xsYXBzZSB7XG4gICAgICA+IC5jb2x1bW4geyBAaW5jbHVkZSBncmlkLWNvbC1ndXR0ZXIoJC16Zi1zaXplKTsgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNpemluZyAoc2hyaW5rKVxuICAuc2hyaW5rIHtcbiAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKHNocmluayk7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLy8gQmxvY2sgZ3JpZCBjb2x1bW5zXG4gIC5jb2x1bW4tYmxvY2sge1xuICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLW1hcmdpbjtcbiAgfVxuXG4gIC5jb2x1bW5zIHtcbiAgICBAZXh0ZW5kIC5jb2x1bW47IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgcGxhY2Vob2xkZXItaW4tZXh0ZW5kXG5cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdHlwb2dyYXBoeVxuLy8vL1xuXG4vLyBCYXNlIHR5cG9ncmFwaHkgc3R5bGVzICh0YWdzIG9ubHkpXG5AaW1wb3J0ICdiYXNlJztcblxuLy8gVHlwb2dyYXBoeSBoZWxwZXIgY2xhc3NlcyAoY2xhc3NlcyBvbmx5KVxuQGltcG9ydCAnaGVscGVycyc7XG5cbi8vIFRleHQgYWxpZ25tZW50IGNsYXNzZXNcbkBpbXBvcnQgJ2FsaWdubWVudCc7XG5cbi8vIFByaW50IHN0eWxlc1xuQGltcG9ydCAncHJpbnQnO1xuXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5IHtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5LWJhc2U7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1oZWxwZXJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRleHQtYWxpZ25tZW50O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByaW50LXN0eWxlcztcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHktYmFzZVxuLy8vL1xuXG4vLyBCYXNlIFR5cG9ncmFwaHlcbi8vIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtXG4vLyBUaGVzZSBhcmUgc3R5bGVzIGFwcGxpZWQgdG8gYmFzaWMgSFRNTCB0YWdzLCBpbmNsdWRpbmc6XG4vLyAgIC0gUGFyYWdyYXBocyA8cD5cbi8vICAgLSBCb2xkL2l0YWxpY3MgPGI+IDxzdHJvbmc+IDxpPiA8ZW0+XG4vLyAgIC0gU21hbGwgdGV4dCA8c21hbGw+XG4vLyAgIC0gSGVhZGluZ3MgPGgxPi08aDY+XG4vLyAgIC0gQW5jaG9ycyA8YT5cbi8vICAgLSBEaXZpZGVycyA8aHI+XG4vLyAgIC0gTGlzdHMgPHVsPiA8b2w+IDxkbD5cbi8vICAgLSBCbG9ja3F1b3RlcyA8YmxvY2txdW90ZT5cbi8vICAgLSBDb2RlIGJsb2NrcyA8Y29kZT5cbi8vICAgLSBBYmJyZXZpYXRpb25zIDxhYmJyPlxuLy8gICAtIENpdGF0aW9ucyA8Y2l0ZT5cbi8vICAgLSBLZXlzdHJva2VzIDxrYmQ+XG5cbi8vLyBGb250IGZhbWlseSBmb3IgaGVhZGVyIGVsZW1lbnRzLlxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRoZWFkZXItZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3R5bGUgKGUuZy4gaXRhbGljaXplZCkgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRoZWFkZXItZm9udC1zdHlsZTogbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzdGFjayB1c2VkIGZvciBlbGVtZW50cyB0aGF0IHVzZSBtb25vc3BhY2VkIHR5cGUsIHN1Y2ggYXMgY29kZSBzYW1wbGVzXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBDb3VyaWVyLCBtb25vc3BhY2UgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIENvbG9yXG4kaGVhZGVyLWNvbG9yOiBpbmhlcml0ICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoZWFkZXItbGluZWhlaWdodDogMS40ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJGhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBTdHlsZXMgZm9yIGhlYWRpbmdzIGF0IHZhcmlvdXMgc2NyZWVuIHNpemVzLiBFYWNoIGtleSBpcyBhIGJyZWFrcG9pbnQsIGFuZCBlYWNoIHZhbHVlIGlzIGEgbWFwIG9mIGhlYWRpbmcgc3R5bGVzLlxuLy8vIEB0eXBlIE1hcFxuJGhlYWRlci1zdHlsZXM6IChcbiAgc21hbGw6IChcbiAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDI0KSxcbiAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcbiAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDE5KSxcbiAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDE4KSxcbiAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDE3KSxcbiAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcbiAgKSxcbiAgbWVkaXVtOiAoXG4gICAgJ2gxJzogKCdmb250LXNpemUnOiA0OCksXG4gICAgJ2gyJzogKCdmb250LXNpemUnOiA0MCksXG4gICAgJ2gzJzogKCdmb250LXNpemUnOiAzMSksXG4gICAgJ2g0JzogKCdmb250LXNpemUnOiAyNSksXG4gICAgJ2g1JzogKCdmb250LXNpemUnOiAyMCksXG4gICAgJ2g2JzogKCdmb250LXNpemUnOiAxNiksXG4gICksXG4pICFkZWZhdWx0O1xuXG4vLyAkaGVhZGVyLXN0eWxlcyBtYXAgaXMgYnVpbHQgZnJvbSAkaGVhZGVyLXNpemVzIGluIG9yZGVyIHRvIGVuc3VyZSBkb3dud2FyZCBjb21wYXRpYmlsaXR5XG4vLyB3aGVuICRoZWFkZXItc2l6ZXMgaXMgZGVwcmVjaWF0ZWQsICRoZWFkZXItc3R5bGVzIG5lZWRzIHRvIGdldCAhZGVmYXVsdCB2YWx1ZXMgbGlrZSBzZXR0aW5ncy5zY3NzXG5AZnVuY3Rpb24gYnVpbGRfZnJvbV9oZWFkZXItc2l6ZXMoJGhlYWRlci1zaXplcykge1xuICBAd2FybiAnTm90ZSwgdGhhdCAkaGVhZGVyLXNpemVzIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggJGhlYWRlci1zdHlsZXMuICRoZWFkZXItc2l6ZXMgc3RpbGwgd29ya3MsIGJ1dCBpdCBpcyBnb2luZyB0byBiZSBkZXByZWNpYXRlZC4nO1xuICAkaGVhZGVyLXN0eWxlczogKCk7XG4gIEBlYWNoICRzaXplLCAkaGVhZGVycyBpbiAkaGVhZGVyLXNpemVzIHtcbiAgICAkaGVhZGVyLW1hcDogKCk7XG4gICAgQGVhY2ggJGhlYWRlciwgJGZvbnQtc2l6ZSBpbiAkaGVhZGVycyB7XG4gICAgICAkaGVhZGVyLW1hcDogbWFwLW1lcmdlKCRoZWFkZXItbWFwLCAoJGhlYWRlcjogKCdmb250LXNpemUnOiAkZm9udC1zaXplKSkpOyAgXG4gICAgfVxuICAgICRoZWFkZXItc3R5bGVzOiBtYXAtbWVyZ2UoJGhlYWRlci1zdHlsZXMsICgkc2l6ZTogJGhlYWRlci1tYXApKTtcbiAgfVxuICBAcmV0dXJuICRoZWFkZXItc3R5bGVzO1xufVxuXG4vLyBJZiBpdCBleGlzdHMgJGhlYWRlcnMtc2l6ZXMgaXMgdXNlZCB0byBidWlsZCAkaGVhZGVyLXN0eWxlcy4gU2VlIHRoZSBkb2N1bWVudGF0aW9uLlxuQGlmIHZhcmlhYmxlLWV4aXN0cyhoZWFkZXItc2l6ZXMpIHtcbiAgJGhlYWRlci1zdHlsZXM6IGJ1aWxkX2Zyb21faGVhZGVyLXNpemVzKCRoZWFkZXItc2l6ZXMpO1xufVxuXG4vLy8gVGV4dCByZW5kZXJpbmcgbWV0aG9kIG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kaGVhZGVyLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgYDxzbWFsbD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJHNtYWxsLWZvbnQtc2l6ZTogODAlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgYDxzbWFsbD5gIGVsZW1lbnRzIHdoZW4gcGxhY2VkIGluc2lkZSBoZWFkZXJzLlxuLy8vIEB0eXBlIENvbG9yXG4kaGVhZGVyLXNtYWxsLWZvbnQtY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IG9mIHRleHQgaW5zaWRlIGA8cD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhcmFncmFwaC1saW5laGVpZ2h0OiAxLjYgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIG9mIHBhcmFncmFwaHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFyYWdyYXBoLW1hcmdpbi1ib3R0b206IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IHJlbmRlcmluZyBtZXRob2QgZm9yIHBhcmFncmFwaCB0ZXh0LlxuLy8vIEB0eXBlIFN0cmluZ1xuJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5ICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBjb2RlIHNhbXBsZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjb2RlLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGZhbWlseSBvZiBjb2RlIHNhbXBsZXMuXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGNvZGUtZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1tb25vc3BhY2UgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGluIGNvZGUgc2FtcGxlcy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRjb2RlLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGNvZGUgc2FtcGxlcy5cbi8vLyBAdHlwZSBDb2xvclxuJGNvZGUtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIGNvZGUgc2FtcGxlcy5cbi8vLyBAdHlwZSBMaXN0XG4kY29kZS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGFyb3VuZCB0ZXh0IG9mIGNvZGUgc2FtcGxlcy5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kY29kZS1wYWRkaW5nOiByZW0tY2FsYygyIDUgMSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBsaW5rcy5cbi8vLyBAdHlwZSBDb2xvclxuJGFuY2hvci1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBsaW5rcyBvbiBob3Zlci5cbi8vLyBAdHlwZSBDb2xvclxuJGFuY2hvci1jb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGFuY2hvci1jb2xvciwgJGxpZ2h0bmVzczogLTE0JSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgZGVvY3JhdGlvbiBmb3IgbGlua3MuXG4vLy8gQHR5cGUgU3RyaW5nXG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbjogbm9uZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBkZWNvcmF0aW9uIGZvciBsaW5rcyBvbiBob3Zlci5cbi8vLyBAdHlwZSBTdHJpbmdcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lICFkZWZhdWx0O1xuXG4vLy8gTWF4aW11bSB3aWR0aCBvZiBhIGRpdmlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaHItd2lkdGg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBmb3IgYSBkaXZpZGVyLlxuLy8vIEB0eXBlIExpc3RcbiRoci1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBmb3IgYSBkaXZpZGVyLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgZm9yIGl0ZW1zIGluIGEgbGlzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LWxpbmVoZWlnaHQ6ICRwYXJhZ3JhcGgtbGluZWhlaWdodCAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIGl0ZW1zIGluIGEgbGlzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LW1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbSAhZGVmYXVsdDtcblxuLy8vIEJ1bGxldCB0eXBlIHRvIHVzZSBmb3IgdW5vcmRlcmVkIGxpc3RzIChlLmcuLCBgc3F1YXJlYCwgYGNpcmNsZWAsIGBkaXNjYCkuXG4vLy8gQHR5cGUgU3RyaW5nXG4kbGlzdC1zdHlsZS10eXBlOiBkaXNjICFkZWZhdWx0O1xuXG4vLy8gUG9zaXRpb25pbmcgZm9yIGJ1bGxldHMgb24gdW5vcmRlcmVkIGxpc3QgaXRlbXMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kbGlzdC1zdHlsZS1wb3NpdGlvbjogb3V0c2lkZSAhZGVmYXVsdDtcblxuLy8vIExlZnQgKG9yIHJpZ2h0KSBtYXJnaW4gZm9yIGxpc3RzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxpc3Qtc2lkZS1tYXJnaW46IDEuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0IChvciByaWdodCkgbWFyZ2luIGZvciBhIGxpc3QgaW5zaWRlIGEgbGlzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LW5lc3RlZC1zaWRlLW1hcmdpbjogMS4yNXJlbSAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIGA8ZGw+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkZWZubGlzdC1tYXJnaW4tYm90dG9tOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGA8ZHQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRkZWZubGlzdC10ZXJtLXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBgPGR0PmAgYW5kIGA8ZGQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYDxibG9ja3F1b3RlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRibG9ja3F1b3RlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgYSBgPGJsb2NrcXVvdGU+YCBlbGVtZW50LlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRibG9ja3F1b3RlLXBhZGRpbmc6IHJlbS1jYWxjKDkgMjAgMCAxOSkgIWRlZmF1bHQ7XG5cbi8vLyBTaWRlIGJvcmRlciBmb3IgYDxibG9ja3F1b3RlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTGlzdFxuJGJsb2NrcXVvdGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBgPGNpdGU+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjaXRlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBmb3IgYDxjaXRlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjaXRlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUHNldWRvIGNvbnRlbnQgZm9yIGA8Y2l0ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGNpdGUtcHNldWRvLWNvbnRlbnQ6ICdcXDIwMTQgXFwwMDIwJyAhZGVmYXVsdDtcblxuLy8vIEZvbnQgZmFtaWx5IGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRrZXlzdHJva2UtZm9udDogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3IgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRrZXlzdHJva2UtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRrZXlzdHJva2UtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRrZXlzdHJva2UtcGFkZGluZzogcmVtLWNhbGMoMiA0IDApICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4ka2V5c3Ryb2tlLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gYm9yZGVyIHN0eWxlIGZvciBgPGFiYnI+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBMaXN0XG4kYWJici11bmRlcmxpbmU6IDFweCBkb3R0ZWQgJGJsYWNrICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5LWJhc2Uge1xuICAvLyBUeXBvZ3JhcGh5IHJlc2V0c1xuICBkaXYsXG4gIGRsLFxuICBkdCxcbiAgZGQsXG4gIHVsLFxuICBvbCxcbiAgbGksXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYsXG4gIHByZSxcbiAgZm9ybSxcbiAgcCxcbiAgYmxvY2txdW90ZSxcbiAgdGgsXG4gIHRkIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIC8vIFBhcmFncmFwaHNcbiAgcCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xuXG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XG4gICAgdGV4dC1yZW5kZXJpbmc6ICRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc7XG4gIH1cblxuICAvLyBFbXBoYXNpemVkIHRleHRcbiAgZW0sXG4gIGkge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIFN0cm9uZyB0ZXh0XG4gIHN0cm9uZyxcbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBTbWFsbCB0ZXh0XG4gIHNtYWxsIHtcbiAgICBmb250LXNpemU6ICRzbWFsbC1mb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBIZWFkaW5nc1xuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LWZhbWlseTogJGhlYWRlci1mb250LWZhbWlseTtcbiAgICBmb250LXN0eWxlOiAkaGVhZGVyLWZvbnQtc3R5bGU7XG4gICAgZm9udC13ZWlnaHQ6ICRoZWFkZXItZm9udC13ZWlnaHQ7XG4gICAgY29sb3I6ICRoZWFkZXItY29sb3I7XG4gICAgdGV4dC1yZW5kZXJpbmc6ICRoZWFkZXItdGV4dC1yZW5kZXJpbmc7XG5cbiAgICBzbWFsbCB7XG4gICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgIGNvbG9yOiAkaGVhZGVyLXNtYWxsLWZvbnQtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLy8gSGVhZGluZyBzdHlsZXNcbiAgQGVhY2ggJHNpemUsICRoZWFkZXJzIGluICRoZWFkZXItc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICBAZWFjaCAkaGVhZGVyLCAkaGVhZGVyLWRlZnMgaW4gJGhlYWRlcnMge1xuICAgICAgICAkZm9udC1zaXplLXRlbXA6IDFyZW07XG4gICAgICAgICN7JGhlYWRlcn0ge1xuXG4gICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgZm9udC1zaXplKSB7XG4gICAgICAgICAgICAkZm9udC1zaXplLXRlbXA6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBmb250LXNpemUpKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS10ZW1wO1xuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBmcykge1xuICAgICAgICAgICAgJGZvbnQtc2l6ZS10ZW1wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgZnMpKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS10ZW1wO1xuICAgICAgICAgIH0gQGVsc2UgaWYgJHNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXRlbXA7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGxpbmUtaGVpZ2h0KSB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdW5pdGxlc3MtY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbGluZS1oZWlnaHQpLCAkZm9udC1zaXplLXRlbXApO1xuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBsaCkge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHVuaXRsZXNzLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGxoKSwgJGZvbnQtc2l6ZS10ZW1wKTtcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB1bml0bGVzcy1jYWxjKCRoZWFkZXItbGluZWhlaWdodCwgJGZvbnQtc2l6ZS10ZW1wKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtYXJnaW4tdG9wKSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbWFyZ2luLXRvcCkpO1xuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtdCkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIG10KSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtYXJnaW4tYm90dG9tKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbWFyZ2luLWJvdHRvbSkpO1xuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtYikge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIG1iKSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygkaGVhZGVyLW1hcmdpbi1ib3R0b20pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIExpbmtzXG4gIGEge1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGNvbG9yOiAkYW5jaG9yLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogJGFuY2hvci10ZXh0LWRlY29yYXRpb247XG5cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICRhbmNob3ItY29sb3ItaG92ZXI7XG4gICAgICBAaWYgJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXIgIT0gJGFuY2hvci10ZXh0LWRlY29yYXRpb24ge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246ICRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGltZyB7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gSG9yaXpvbnRhbCBydWxlXG4gIGhyIHtcbiAgICBjbGVhcjogYm90aDtcblxuICAgIG1heC13aWR0aDogJGhyLXdpZHRoO1xuICAgIGhlaWdodDogMDtcbiAgICBtYXJnaW46ICRoci1tYXJnaW47XG5cbiAgICBib3JkZXItdG9wOiAwO1xuICAgIGJvcmRlci1yaWdodDogMDtcbiAgICBib3JkZXItYm90dG9tOiAkaHItYm9yZGVyO1xuICAgIGJvcmRlci1sZWZ0OiAwO1xuICB9XG5cbiAgLy8gTGlzdHNcbiAgdWwsXG4gIG9sLFxuICBkbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGxpc3QtbWFyZ2luLWJvdHRvbTtcbiAgICBsaXN0LXN0eWxlLXBvc2l0aW9uOiAkbGlzdC1zdHlsZS1wb3NpdGlvbjtcbiAgICBsaW5lLWhlaWdodDogJGxpc3QtbGluZWhlaWdodDtcbiAgfVxuXG4gIC8vIExpc3QgaXRlbXNcbiAgbGkge1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIFVub3JkZXJlZCBsaXN0c1xuICB1bCB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3Qtc2lkZS1tYXJnaW47XG4gICAgbGlzdC1zdHlsZS10eXBlOiAkbGlzdC1zdHlsZS10eXBlO1xuICB9XG5cbiAgLy8gT3JkZXJlZCBsaXN0c1xuICBvbCB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3Qtc2lkZS1tYXJnaW47XG4gIH1cblxuICAvLyBOZXN0ZWQgdW5vcmRlcmVkL29yZGVyZWQgbGlzdHNcbiAgdWwsIG9sIHtcbiAgICAmICYge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3QtbmVzdGVkLXNpZGUtbWFyZ2luO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZpbml0aW9uIGxpc3RzXG4gIGRsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTtcblxuICAgIGR0IHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b207XG4gICAgICBmb250LXdlaWdodDogJGRlZm5saXN0LXRlcm0td2VpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIEJsb2NrcXVvdGVzXG4gIGJsb2NrcXVvdGUge1xuICAgIG1hcmdpbjogMCAwICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcbiAgICBwYWRkaW5nOiAkYmxvY2txdW90ZS1wYWRkaW5nO1xuICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06ICRibG9ja3F1b3RlLWJvcmRlcjtcblxuICAgICYsIHAge1xuICAgICAgbGluZS1oZWlnaHQ6ICRwYXJhZ3JhcGgtbGluZWhlaWdodDtcbiAgICAgIGNvbG9yOiAkYmxvY2txdW90ZS1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAvLyBDaXRhdGlvbnNcbiAgY2l0ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAkY2l0ZS1mb250LXNpemU7XG4gICAgY29sb3I6ICRjaXRlLWNvbG9yO1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJGNpdGUtcHNldWRvLWNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gQWJicmV2aWF0aW9uc1xuICBhYmJyIHtcbiAgICBib3JkZXItYm90dG9tOiAkYWJici11bmRlcmxpbmU7XG4gICAgY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG4gICAgY3Vyc29yOiBoZWxwO1xuICB9XG5cbiAgLy8gRmlndXJlc1xuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBcbiAgLy8gQ29kZVxuICBjb2RlIHtcbiAgICBwYWRkaW5nOiAkY29kZS1wYWRkaW5nO1xuXG4gICAgYm9yZGVyOiAkY29kZS1ib3JkZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvZGUtYmFja2dyb3VuZDtcblxuICAgIGZvbnQtZmFtaWx5OiAkY29kZS1mb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJGNvZGUtZm9udC13ZWlnaHQ7XG4gICAgY29sb3I6ICRjb2RlLWNvbG9yO1xuICB9XG5cbiAgLy8gS2V5c3Ryb2tlc1xuICBrYmQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAka2V5c3Ryb2tlLXBhZGRpbmc7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAka2V5c3Ryb2tlLWJhY2tncm91bmQ7XG5cbiAgICBmb250LWZhbWlseTogJGtleXN0cm9rZS1mb250O1xuICAgIGNvbG9yOiAka2V5c3Ryb2tlLWNvbG9yO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgka2V5c3Ryb2tlLXJhZGl1cykge1xuICAgICAgYm9yZGVyLXJhZGl1czogJGtleXN0cm9rZS1yYWRpdXM7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0eXBvZ3JhcGh5LWhlbHBlcnNcbi8vLy9cblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBsZWFkIHBhcmFncmFwaHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGVhZC1mb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplICogMS4yNSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIGxlYWQgcGFyYWdyYXBocy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRsZWFkLWxpbmVoZWlnaHQ6IDEuNiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3ViaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3Igc3ViaGVhZGVycy5cbi8vLyBAdHlwZSBDb2xvclxuJHN1YmhlYWRlci1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kc3ViaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRvcCBtYXJnaW4gZm9yIHN1YmhoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN1YmhlYWRlci1tYXJnaW4tdG9wOiAwLjJyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3ViaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBzdGF0aXN0aWMgbnVtYmVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzdGF0LWZvbnQtc2l6ZTogMi41cmVtICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5LWhlbHBlcnMge1xuICAvLyBVc2UgdG8gY3JlYXRlIGEgc3ViaGVhZGluZyB1bmRlciBhIG1haW4gaGVhZGVyXG4gIC8vIE1ha2Ugc3VyZSB5b3UgcGFpciB0aGUgdHdvIGVsZW1lbnRzIGluIGEgPGhlYWRlcj4gZWxlbWVudCwgbGlrZSB0aGlzOlxuICAvLyA8aGVhZGVyPlxuICAvLyAgIDxoMT5IZWFkaW5nPC9oMT5cbiAgLy8gICA8aDI+U3ViaGVhZGluZzwvaDI+XG4gIC8vIDwvaGVhZGVyPlxuICAuc3ViaGVhZGVyIHtcbiAgICBtYXJnaW4tdG9wOiAkc3ViaGVhZGVyLW1hcmdpbi10b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tO1xuXG4gICAgZm9udC13ZWlnaHQ6ICRzdWJoZWFkZXItZm9udC13ZWlnaHQ7XG4gICAgbGluZS1oZWlnaHQ6ICRzdWJoZWFkZXItbGluZWhlaWdodDtcbiAgICBjb2xvcjogJHN1YmhlYWRlci1jb2xvcjtcbiAgfVxuXG4gIC8vIFVzZSB0byBzdHlsZSBhbiBpbnRyb2R1Y3RvcnkgbGVhZCwgZGVjaywgYmx1cmIsIGV0Yy5cbiAgLmxlYWQge1xuICAgIGZvbnQtc2l6ZTogJGxlYWQtZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAkbGVhZC1saW5laGVpZ2h0O1xuICB9XG5cbiAgLy8gVXNlIHRvIHN0eWxlIGEgbGFyZ2UgbnVtYmVyIHRvIGRpc3BsYXkgYSBzdGF0aXN0aWNcbiAgLnN0YXQge1xuICAgIGZvbnQtc2l6ZTogJHN0YXQtZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgcCArICYge1xuICAgICAgbWFyZ2luLXRvcDogLTFyZW07XG4gICAgfVxuICB9XG5cbiAgLy8gVXNlIHRvIHJlbW92ZSB0aGUgYnVsbGV0cyBmcm9tIGFuIHVub3JkZXJlZCBsaXN0XG4gIC5uby1idWxsZXQge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRleHQtYWxpZ25tZW50IHtcbiAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgQGVhY2ggJGFsaWduIGluIChsZWZ0LCByaWdodCwgY2VudGVyLCBqdXN0aWZ5KSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtI3skYWxpZ259IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246ICRhbGlnbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIC50ZXh0LSN7JGFsaWdufSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiAkYWxpZ247XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vIElmIGB0cnVlYCwgYWxsIGVsZW1lbnRzIHdpbGwgaGF2ZSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kcyB3aGVuIHByaW50ZWQsIHRvIHNhdmUgb24gaW5rLlxuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAZ3JvdXAgZ2xvYmFsXG4kcHJpbnQtdHJhbnNwYXJlbnQtYmFja2dyb3VuZHM6IHRydWUgIWRlZmF1bHQ7XG4kcHJpbnQtaHJlZnM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIHNhc3MtbGludDpkaXNhYmxlLWFsbFxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcmludC1zdHlsZXMge1xuICAuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuICBAbWVkaWEgcHJpbnQge1xuICAgICoge1xuICAgICAgQGlmICRwcmludC10cmFuc3BhcmVudC1iYWNrZ3JvdW5kcyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcblxuICAgICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7IC8vIEJsYWNrIHByaW50cyBmYXN0ZXI6IGg1YnAuY29tL3NcbiAgICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIC5oaWRlLWZvci1wcmludCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuXG4gICAgdGFibGUuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9XG4gICAgdGhlYWQuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXAgIWltcG9ydGFudDsgfVxuICAgIHRib2R5LnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtcm93LWdyb3VwICFpbXBvcnRhbnQ7IH1cbiAgICB0ci5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OyB9XG4gICAgdGQuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH1cbiAgICB0aC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxuXG4gICAgLy8gRGlzcGxheSB0aGUgVVJMIG9mIGEgbGluayBhZnRlciB0aGUgdGV4dFxuICAgIGEsXG4gICAgYTp2aXNpdGVkIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7fVxuICAgIEBpZiAkcHJpbnQtaHJlZnMge1xuICAgICAgYVtocmVmXTphZnRlciB7IGNvbnRlbnQ6ICcgKCcgYXR0cihocmVmKSAnKSc7IH1cbiAgICB9XG5cbiAgICAvLyBEb24ndCBkaXNwbGF5IHRoZSBVUkwgZm9yIGltYWdlcyBvciBKYXZhU2NyaXB0L2ludGVybmFsIGxpbmtzXG4gICAgLmlyIGE6YWZ0ZXIsXG4gICAgYVtocmVmXj0namF2YXNjcmlwdDonXTphZnRlcixcbiAgICBhW2hyZWZePScjJ106YWZ0ZXIgeyBjb250ZW50OiAnJzsgfVxuXG4gICAgLy8gRGlzcGxheSB3aGF0IGFuIGFiYnJldmlhdGlvbiBzdGFuZHMgZm9yIGFmdGVyIHRoZSB0ZXh0XG4gICAgYWJiclt0aXRsZV06YWZ0ZXIgeyBjb250ZW50OiAnICgnIGF0dHIodGl0bGUpICcpJzsgfVxuXG4gICAgLy8gUHJldmVudCBwYWdlIGJyZWFrcyBpbiB0aGUgbWlkZGxlIG9mIGEgYmxvY2txdW90ZSBvciBwcmVmb3JtYXR0ZWQgdGV4dCBibG9ja1xuICAgIHByZSxcbiAgICBibG9ja3F1b3RlIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRkYXJrLWdyYXk7XG4gICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuXG4gICAgLy8gaDVicC5jb20vdFxuICAgIHRoZWFkIHsgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOyB9XG5cbiAgICB0cixcbiAgICBpbWcgeyBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7IH1cblxuICAgIGltZyB7IG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbiAgICBAcGFnZSB7IG1hcmdpbjogMC41Y207IH1cblxuICAgIHAsXG4gICAgaDIsXG4gICAgaDMge1xuICAgICAgb3JwaGFuczogMztcbiAgICAgIHdpZG93czogMztcbiAgICB9XG5cbiAgICAvLyBBdm9pZCBwYWdlIGJyZWFrcyBhZnRlciBhIGhlYWRpbmdcbiAgICBoMixcbiAgICBoMyB7IHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOyB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBHbG9iYWwgc3BhY2luZyBmb3IgZm9ybSBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLXNwYWNpbmc6IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcblxuQGltcG9ydCAndGV4dCc7XG5AaW1wb3J0ICdjaGVja2JveCc7XG5AaW1wb3J0ICdsYWJlbCc7XG5AaW1wb3J0ICdoZWxwLXRleHQnO1xuQGltcG9ydCAnaW5wdXQtZ3JvdXAnO1xuQGltcG9ydCAnZmllbGRzZXQnO1xuQGltcG9ydCAnc2VsZWN0JztcbkBpbXBvcnQgJ3JhbmdlJztcbkBpbXBvcnQgJ3Byb2dyZXNzJztcbkBpbXBvcnQgJ21ldGVyJztcbkBpbXBvcnQgJ2Vycm9yJztcblxuQG1peGluIGZvdW5kYXRpb24tZm9ybXMge1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tdGV4dDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWNoZWNrYm94O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tbGFiZWw7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1oZWxwdGV4dDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLXByZXBvc3RmaXg7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1maWVsZHNldDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLXNlbGVjdDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWVycm9yO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIEZvbnQgY29sb3Igb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBjb2xvciBvZiBwbGFjZWhvbGRlciB0ZXh0IHdpdGhpbiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LXBsYWNlaG9sZGVyLWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGZhbWlseSBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBGb250XG4kaW5wdXQtZm9udC1mYW1pbHk6IGluaGVyaXQgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaW5wdXQtZm9udC1zaXplOiByZW0tY2FsYygxNikgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaW5wdXQtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGZvY3VzZWQgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGRpc2FibGVkIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEJvcmRlclxuJGlucHV0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBhcm91bmQgZm9jdXNlZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJvcmRlci1mb2N1czogMXB4IHNvbGlkICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3ggc2hhZG93IGluc2lkZSB0ZXh0IGlucHV0cyB3aGVuIG5vdCBmb2N1c2VkLlxuLy8vIEB0eXBlIFNoYWRvd1xuJGlucHV0LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoJGJsYWNrLCAwLjEpICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBvdXRzaWRlIHRleHQgaW5wdXRzIHdoZW4gZm9jdXNlZC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRpbnB1dC1zaGFkb3ctZm9jdXM6IDAgMCA1cHggJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQ3Vyc29yIHRvIHVzZSB3aGVuIGhvdmVyaW5nIG92ZXIgYSBkaXNhYmxlZCB0ZXh0IGlucHV0LlxuLy8vIEB0eXBlIEN1cnNvclxuJGlucHV0LWN1cnNvci1kaXNhYmxlZDogbm90LWFsbG93ZWQgIWRlZmF1bHQ7XG5cbi8vLyBQcm9wZXJ0aWVzIHRvIHRyYW5zaXRpb24gb24gdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxuJGlucHV0LXRyYW5zaXRpb246IGJveC1zaGFkb3cgMC41cywgYm9yZGVyLWNvbG9yIDAuMjVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4vLy8gRW5hYmxlcyB0aGUgdXAvZG93biBidXR0b25zIHRoYXQgQ2hyb21lIGFuZCBGaXJlZm94IGFkZCB0byBgPGlucHV0IHR5cGU9J251bWJlcic+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kaW5wdXQtbnVtYmVyLXNwaW5uZXJzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gUmFkaXVzIGZvciB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBCb3JkZXJcbiRpbnB1dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgZm9ybSBidXR0b25zLCBkZWZhdWx0ZWQgdG8gZ2xvYmFsLXJhZGl1cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gZm9ybS1lbGVtZW50IHtcbiAgJGhlaWdodDogKCRpbnB1dC1mb250LXNpemUgKyAoJGZvcm0tc3BhY2luZyAqIDEuNSkgLSByZW0tY2FsYygxKSk7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG4gIHBhZGRpbmc6ICRmb3JtLXNwYWNpbmcgLyAyO1xuXG4gIGJvcmRlcjogJGlucHV0LWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJGlucHV0LXJhZGl1cztcbiAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQ7XG4gIGJveC1zaGFkb3c6ICRpbnB1dC1zaGFkb3c7XG5cbiAgZm9udC1mYW1pbHk6ICRpbnB1dC1mb250LWZhbWlseTtcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGlucHV0LWZvbnQtd2VpZ2h0O1xuICBjb2xvcjogJGlucHV0LWNvbG9yO1xuXG4gIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgfVxuXG4gIC8vIEZvY3VzIHN0YXRlXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLWZvY3VzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzO1xuICAgIGJveC1zaGFkb3c6ICRpbnB1dC1zaGFkb3ctZm9jdXM7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS10ZXh0IHtcbiAgLy8gVGV4dCBpbnB1dHNcbiAgI3t0ZXh0LWlucHV0cygpfSxcbiAgdGV4dGFyZWEge1xuICAgIEBpbmNsdWRlIGZvcm0tZWxlbWVudDtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgLy8gVGV4dCBhcmVhc1xuICB0ZXh0YXJlYSB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgJltyb3dzXSB7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxuICB9XG5cbiAgaW5wdXQsXG4gIHRleHRhcmVhIHtcbiAgICAvLyBQbGFjZWhvbGRlciB0ZXh0XG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjtcbiAgICB9XG5cbiAgICAvLyBEaXNhYmxlZC9yZWFkb25seSBzdGF0ZVxuICAgICY6ZGlzYWJsZWQsXG4gICAgJltyZWFkb25seV0ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ7XG4gICAgICBjdXJzb3I6ICRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzZXQgc3R5bGVzIG9uIGJ1dHRvbi1saWtlIGlucHV0c1xuICBbdHlwZT0nc3VibWl0J10sXG4gIFt0eXBlPSdidXR0b24nXSB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAkZm9ybS1idXR0b24tcmFkaXVzO1xuICB9XG5cbiAgLy8gUmVzZXQgTm9ybWFsaXplIHNldHRpbmcgY29udGVudC1ib3ggdG8gc2VhcmNoIGVsZW1lbnRzXG4gIGlucHV0W3R5cGU9J3NlYXJjaCddIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuXG4gIC8vIE51bWJlciBpbnB1dCBzdHlsZXNcbiAgW3R5cGU9J251bWJlciddIHtcbiAgICBAaWYgbm90ICRpbnB1dC1udW1iZXItc3Bpbm5lcnMge1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeFxuXG4gICAgICAmOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICAgICAgJjo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tY2hlY2tib3gge1xuICBbdHlwZT0nZmlsZSddLFxuICBbdHlwZT0nY2hlY2tib3gnXSxcbiAgW3R5cGU9J3JhZGlvJ10ge1xuICAgIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG4gIH1cblxuICAvLyBTdHlsZXMgZm9yIGlucHV0L2xhYmVsIHNpYmxpbmdzXG4gIFt0eXBlPSdjaGVja2JveCddICsgbGFiZWwsXG4gIFt0eXBlPSdyYWRpbyddICsgbGFiZWwge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG5cbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkZm9ybS1zcGFjaW5nICogMC41O1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkZm9ybS1zcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAmW2Zvcl0ge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0eWxlcyBmb3IgaW5wdXRzIGluc2lkZSBsYWJlbHNcbiAgbGFiZWwgPiBbdHlwZT0nY2hlY2tib3gnXSxcbiAgbGFiZWwgPiBbdHlwZT0ncmFkaW8nXSB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRmb3JtLXNwYWNpbmcgKiAwLjU7XG4gIH1cblxuICAvLyBOb3JtYWxpemUgZmlsZSBpbnB1dCB3aWR0aFxuICBbdHlwZT0nZmlsZSddIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIENvbG9yIGZvciBmb3JtIGxhYmVscy5cbi8vLyBAdHlwZSBDb2xvclxuJGZvcm0tbGFiZWwtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBmb3IgZm9ybSBsYWJlbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZm9ybS1sYWJlbC1mb250LXNpemU6IHJlbS1jYWxjKDE0KSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IGZvciBmb3JtIGxhYmVscy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kZm9ybS1sYWJlbC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgZm9yIGZvcm0gbGFiZWxzLiBUaGUgaGlnaGVyIHRoZSBudW1iZXIsIHRoZSBtb3JlIHNwYWNlIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBpdHMgaW5wdXQgZmllbGQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZm9ybS1sYWJlbC1saW5lLWhlaWdodDogMS44ICFkZWZhdWx0O1xuXG5AbWl4aW4gZm9ybS1sYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDA7XG5cbiAgZm9udC1zaXplOiAkZm9ybS1sYWJlbC1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkZm9ybS1sYWJlbC1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGZvcm0tbGFiZWwtY29sb3I7XG59XG5cbkBtaXhpbiBmb3JtLWxhYmVsLW1pZGRsZSB7XG4gICRpbnB1dC1ib3JkZXItd2lkdGg6IGdldC1ib3JkZXItdmFsdWUoJGlucHV0LWJvcmRlciwgd2lkdGgpO1xuXG4gIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG4gIHBhZGRpbmc6ICgkZm9ybS1zcGFjaW5nIC8gMiArIHJlbS1jYWxjKCRpbnB1dC1ib3JkZXItd2lkdGgpKSAwO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWxhYmVsIHtcbiAgbGFiZWwge1xuICAgIEBpbmNsdWRlIGZvcm0tbGFiZWw7XG5cbiAgICAmLm1pZGRsZSB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWxhYmVsLW1pZGRsZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBoZWxwIHRleHQuXG4vLy8gQHR5cGUgQ29sb3JcbiRoZWxwdGV4dC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGhlbHAgdGV4dC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoZWxwdGV4dC1mb250LXNpemU6IHJlbS1jYWxjKDEzKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzdHlsZSBmb3IgaGVscCB0ZXh0LlxuLy8vIEB0eXBlIEtleXdvcmRcbiRoZWxwdGV4dC1mb250LXN0eWxlOiBpdGFsaWMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0taGVscHRleHQge1xuICAuaGVscC10ZXh0IHtcbiAgICAkbWFyZ2luLXRvcDogKCRmb3JtLXNwYWNpbmcgKiAwLjUpICogLTE7XG5cbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICBmb250LXNpemU6ICRoZWxwdGV4dC1mb250LXNpemU7XG4gICAgZm9udC1zdHlsZTogJGhlbHB0ZXh0LWZvbnQtc3R5bGU7XG4gICAgY29sb3I6ICRoZWxwdGV4dC1jb2xvcjtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIENvbG9yIG9mIGxhYmVscyBwcmVmaXhlZCB0byBhbiBpbnB1dC5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LXByZWZpeC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIGxhYmVscyBwcmVmaXhlZCB0byBhbiBpbnB1dC5cbi8vLyBAdHlwZSBCb3JkZXJcbiRpbnB1dC1wcmVmaXgtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTGVmdC9yaWdodCBwYWRkaW5nIG9mIGFuIHByZS9wb3N0Zml4ZWQgaW5wdXQgbGFiZWxcbiRpbnB1dC1wcmVmaXgtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1wcmVwb3N0Zml4IHtcbiAgJGhlaWdodDogKCRpbnB1dC1mb250LXNpemUgKyAkZm9ybS1zcGFjaW5nICogMS41KTtcblxuICAuaW5wdXQtZ3JvdXAge1xuICAgIGRpc3BsYXk6IGlmKCRnbG9iYWwtZmxleGJveCwgZmxleCwgdGFibGUpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmc7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIH1cblxuICAgID4gOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCAwICRpbnB1dC1yYWRpdXMgJGlucHV0LXJhZGl1cyAwLCAkaW5wdXQtcmFkaXVzIDAgMCAkaW5wdXQtcmFkaXVzKTtcbiAgICB9XG5cbiAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgID4gKiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCAkaW5wdXQtcmFkaXVzIDAgMCAkaW5wdXQtcmFkaXVzLCAwICRpbnB1dC1yYWRpdXMgJGlucHV0LXJhZGl1cyAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAlaW5wdXQtZ3JvdXAtY2hpbGQge1xuICAgIG1hcmdpbjogMDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbiAgLmlucHV0LWdyb3VwLWxhYmVsIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICBwYWRkaW5nOiAwICRpbnB1dC1wcmVmaXgtcGFkZGluZztcbiAgICBib3JkZXI6ICRpbnB1dC1wcmVmaXgtYm9yZGVyO1xuICAgIGJhY2tncm91bmQ6ICRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDtcblxuICAgIGNvbG9yOiAkaW5wdXQtcHJlZml4LWNvbG9yO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogMSU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtcHJlZml4LWJvcmRlcikge1xuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5pbnB1dC1ncm91cC1maWVsZCB7XG4gICAgQGV4dGVuZCAlaW5wdXQtZ3JvdXAtY2hpbGQ7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIG1pbi13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC5pbnB1dC1ncm91cC1idXR0b24ge1xuICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHdpZHRoOiAxJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICBhLFxuICAgIGlucHV0LFxuICAgIGJ1dHRvbixcbiAgICBsYWJlbCB7XG4gICAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgcGFkZGluZy1ib3R0b206IDA7XG5cbiAgICAgIGZvbnQtc2l6ZTogJGlucHV0LWZvbnQtc2l6ZTtcbiAgICB9XG4gIH1cblxuICAvLyBTcGVjaWZpY2l0eSBidW1wIG5lZWRlZCB0byBwcmV2ZW50IG92ZXJyaWRlIGJ5IGJ1dHRvbnNcbiAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgLmlucHV0LWdyb3VwIC5pbnB1dC1ncm91cC1idXR0b24ge1xuICAgICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJvcmRlciBhcm91bmQgY3VzdG9tIGZpZWxkc2V0cy5cbi8vLyBAdHlwZSBCb3JkZXJcbiRmaWVsZHNldC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGN1c3RvbSBmaWVsZHNldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZmllbGRzZXQtcGFkZGluZzogcmVtLWNhbGMoMjApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXJnaW4gYXJvdW5kIGN1c3RvbSBmaWVsZHNldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZmllbGRzZXQtbWFyZ2luOiByZW0tY2FsYygxOCAwKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBiZXR3ZWVuIHRoZSBsZWdlbmQgdGV4dCBhbmQgZmllbGRzZXQgYm9yZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJGxlZ2VuZC1wYWRkaW5nOiByZW0tY2FsYygwIDMpICFkZWZhdWx0O1xuXG5AbWl4aW4gZmllbGRzZXQge1xuICBtYXJnaW46ICRmaWVsZHNldC1tYXJnaW47XG4gIHBhZGRpbmc6ICRmaWVsZHNldC1wYWRkaW5nO1xuICBib3JkZXI6ICRmaWVsZHNldC1ib3JkZXI7XG5cbiAgbGVnZW5kIHtcbiAgICAvLyBDb3ZlcnMgdXAgdGhlIGZpZWxkc2V0J3MgYm9yZGVyIHRvIGNyZWF0ZSBhcnRpZmljaWFsIHBhZGRpbmdcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogcmVtLWNhbGMoLTMpO1xuICAgIHBhZGRpbmc6ICRsZWdlbmQtcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tZmllbGRzZXQge1xuICBmaWVsZHNldCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiAwO1xuICB9XG5cbiAgbGVnZW5kIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgfVxuXG4gIC5maWVsZHNldCB7XG4gICAgQGluY2x1ZGUgZmllbGRzZXQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBzZWxlY3QgbWVudXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRzZWxlY3QtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgdGhlIGRyb3Bkb3duIHRyaWFuZ2xlIGluc2lkZSBzZWxlY3QgbWVudXMuIFNldCB0byBgdHJhbnNwYXJlbnRgIHRvIHJlbW92ZSBpdCBlbnRpcmVseS5cbi8vLyBAdHlwZSBDb2xvclxuJHNlbGVjdC10cmlhbmdsZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBzZWxlY3QgbWVudXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRzZWxlY3QtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvcm0tc2VsZWN0IHtcbiAgJGhlaWdodDogKCRpbnB1dC1mb250LXNpemUgKyAoJGZvcm0tc3BhY2luZyAqIDEuNSkgLSByZW0tY2FsYygxKSk7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICBwYWRkaW5nOiAoJGZvcm0tc3BhY2luZyAvIDIpO1xuXG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogJGlucHV0LWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJHNlbGVjdC1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzZWxlY3QtYmFja2dyb3VuZDtcblxuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIGNvbG9yOiAkaW5wdXQtY29sb3I7XG5cbiAgQGlmICRzZWxlY3QtdHJpYW5nbGUtY29sb3IgIT0gdHJhbnNwYXJlbnQge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtdHJpYW5nbGUoJHNlbGVjdC10cmlhbmdsZS1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46IGNvbnRlbnQtYm94O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246ICRnbG9iYWwtcmlnaHQgKC0kZm9ybS1zcGFjaW5nKSBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDlweCA2cHg7XG5cbiAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICgkZm9ybS1zcGFjaW5nICogMS41KTtcbiAgfVxuXG4gIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgfVxuXG4gIC8vIEZvY3VzIHN0YXRlXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLWZvY3VzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzO1xuICAgIGJveC1zaGFkb3c6ICRpbnB1dC1zaGFkb3ctZm9jdXM7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cblxuICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAmOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDtcbiAgICBjdXJzb3I6ICRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ7XG4gIH1cblxuICAvLyBIaWRlIHRoZSBkcm9wZG93biBhcnJvdyBzaG93biBpbiBuZXdlciBJRSB2ZXJzaW9uc1xuICAmOjotbXMtZXhwYW5kIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJlttdWx0aXBsZV0ge1xuICAgIGhlaWdodDogYXV0bztcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tc2VsZWN0IHtcbiAgc2VsZWN0IHtcbiAgICBAaW5jbHVkZSBmb3JtLXNlbGVjdDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgc2xpZGVyXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGhlaWdodCBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1oZWlnaHQ6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgc2xpZGVyJ3MgdHJhY2suXG4vLy8gQHR5cGUgQ29sb3JcbiRzbGlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBhY3RpdmUgZmlsbCBjb2xvciBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kc2xpZGVyLWZpbGwtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBoZWlnaHQgb2YgdGhlIGhhbmRsZSBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1oYW5kbGUtaGVpZ2h0OiAxLjRyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHdpZHRoIG9mIHRoZSBoYW5kbGUgb2YgdGhlIHNsaWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItaGFuZGxlLXdpZHRoOiAxLjRyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBoYW5kbGUgZm9yIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmYWRlIGFtb3VudCBvZiBhIGRpc2FibGVkIHNsaWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDogMC4yNSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXJhbmdlLWlucHV0IHtcbiAgaW5wdXRbdHlwZT1cInJhbmdlXCJdIHsgIC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgICRtYXJnaW46ICgkc2xpZGVyLWhhbmRsZS1oZWlnaHQgLSAkc2xpZGVyLWhlaWdodCkgLyAyO1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcblxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYm9yZGVyOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgb3V0bGluZTogMDtcbiAgICB9XG5cbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICBvcGFjaXR5OiAkc2xpZGVyLW9wYWNpdHktZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tdmVuZG9yLXByZWZpeFxuXG4gICAgLy8gQ2hyb21lL1NhZmFyaVxuICAgICY6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItaGFuZGxlIHtcbiAgICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xuICAgICAgbWFyZ2luLXRvcDogLSRtYXJnaW47XG5cbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmlyZWZveFxuICAgICY6Oi1tb3otcmFuZ2UtdHJhY2sge1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcbiAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAmOjotbW96LXJhbmdlLXRodW1iIHtcbiAgICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xuICAgICAgbWFyZ2luLXRvcDogLSRtYXJnaW47XG5cbiAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW50ZXJuZXQgRXhwbG9yZXJcbiAgICAmOjotbXMtdHJhY2sge1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcblxuICAgICAgYm9yZGVyOiAwO1xuICAgICAgYm9yZGVyLXRvcDogJG1hcmdpbiBzb2xpZCAkYm9keS1iYWNrZ3JvdW5kO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJG1hcmdpbiBzb2xpZCAkYm9keS1iYWNrZ3JvdW5kO1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kO1xuXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAmOjotbXMtdGh1bWIge1xuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICBib3JkZXI6IDA7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRzbGlkZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi1tcy1maWxsLWxvd2VyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi1tcy1maWxsLXVwcGVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICBAYXQtcm9vdCB7XG4gICAgICBvdXRwdXQge1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBtYXJnaW4tbGVmdDogMC41ZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm9ncmVzcy1iYXJcbi8vLy9cblxuLy8vIEhlaWdodCBvZiBhIHByb2dyZXNzIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm9ncmVzcy1oZWlnaHQ6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgcHJvZ3Jlc3MgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kcHJvZ3Jlc3MtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBhIHByb2dyZXNzIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm9ncmVzcy1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgYSBwcm9ncmVzcyBiYXIncyBtZXRlci5cbi8vLyBAdHlwZSBDb2xvclxuJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgb2YgYSBwcm9ncmVzcyBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvZ3Jlc3MtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tcHJvZ3Jlc3MtZWxlbWVudCB7XG4gIHByb2dyZXNzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRwcm9ncmVzcy1oZWlnaHQ7XG4gICAgbWFyZ2luLWJvdHRvbTogJHByb2dyZXNzLW1hcmdpbi1ib3R0b207XG5cbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgQGlmIGhhc3ZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gICAgfVxuXG4gICAgLy8gRm9yIEZpcmVmb3hcbiAgICBib3JkZXI6IDA7XG4gICAgYmFja2dyb3VuZDogJHByb2dyZXNzLWJhY2tncm91bmQ7XG5cbiAgICAmOjotd2Via2l0LXByb2dyZXNzLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhc3ZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi1tb3otcHJvZ3Jlc3MtYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgLy8gSW50ZXJuZXQgRXhwbG9yZXIgc2V0cyB0aGUgZmlsbCB3aXRoIGNvbG9yXG4gICAgICAgIGNvbG9yOiAkY29sb3I7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6LW1vei1wcm9ncmVzcy1iYXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvciBJRSBhbmQgRWRnZVxuICAgICY6Oi1tcy1maWxsIHtcbiAgICAgIEBpZiBoYXN2YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG1ldGVyXG4vLy8vXG5cbi8vLyBIZWlnaHQgb2YgYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRtZXRlci1oZWlnaHQ6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIG9mIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kbWV0ZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIE1ldGVyIGZpbGwgZm9yIGFuIG9wdGltYWwgdmFsdWUgaW4gYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWZpbGwtZ29vZDogJHN1Y2Nlc3MtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBNZXRlciBmaWxsIGZvciBhbiBhdmVyYWdlIHZhbHVlIGluIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRtZXRlci1maWxsLW1lZGl1bTogJHdhcm5pbmctY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBNZXRlciBmaWxsIGZvciBhIHN1Ym9wdGltYWwgdmFsdWUgaW4gYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWZpbGwtYmFkOiAkYWxlcnQtY29sb3IgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW1ldGVyLWVsZW1lbnQge1xuICBtZXRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkbWV0ZXItaGVpZ2h0O1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG5cbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgIH1cblxuICAgIC8vIEZvciBGaXJlZm94XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQ6ICRtZXRlci1iYWNrZ3JvdW5kO1xuXG4gICAgLy8gQ2hyb21lL1NhZmFyaS9FZGdlXG4gICAgJjo6LXdlYmtpdC1tZXRlci1iYXIge1xuICAgICAgYm9yZGVyOiAwO1xuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtbWV0ZXItaW5uZXItZWxlbWVudCB7XG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotd2Via2l0LW1ldGVyLW9wdGltdW0tdmFsdWUge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtZ29vZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1tZXRlci1zdWJvcHRpbXVtLXZhbHVlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLW1lZGl1bTtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1tZXRlci1ldmVuLWxlc3MtZ29vZC12YWx1ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1iYWQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi1tb3otbWV0ZXItYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOi1tb3otbWV0ZXItb3B0aW11bTo6LW1vei1tZXRlci1iYXIgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIGZvcmNlLXBzZXVkby1uZXN0aW5nXG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1nb29kO1xuICAgIH1cblxuICAgICY6LW1vei1tZXRlci1zdWItb3B0aW11bTo6LW1vei1tZXRlci1iYXIgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIGZvcmNlLXBzZXVkby1uZXN0aW5nXG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1tZWRpdW07XG4gICAgfVxuXG4gICAgJjotbW96LW1ldGVyLXN1Yi1zdWItb3B0aW11bTo6LW1vei1tZXRlci1iYXIgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIGZvcmNlLXBzZXVkby1uZXN0aW5nXG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1iYWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBhYmlkZVxuLy8vL1xuXG4vLy8gU2V0cyBpZiBlcnJvciBzdHlsZXMgc2hvdWxkIGJlIGFkZGVkIHRvIGlucHV0cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWJpZGUtaW5wdXRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBpZiBlcnJvciBzdHlsZXMgc2hvdWxkIGJlIGFkZGVkIHRvIGxhYmVscy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWJpZGUtbGFiZWxzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciB0byB1c2UgZm9yIGludmFsaWQgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB0byB1c2UgZm9yIGxhYmVscyBvZiBpbnZhbGlkIGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGZvcm0tbGFiZWwtY29sb3ItaW52YWxpZDogZ2V0LWNvbG9yKGFsZXJ0KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgZm9ybSBlcnJvciB0ZXh0LlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtZXJyb3ItY29sb3I6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgZm9ybSBlcnJvciB0ZXh0LlxuLy8vIEB0eXBlIE51bWJlclxuJGlucHV0LWVycm9yLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHdlaWdodCBmb3IgZm9ybSBlcnJvciB0ZXh0LlxuLy8vIEB0eXBlIEtleXdvcmRcbiRpbnB1dC1lcnJvci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuLy8vIFN0eWxlcyB0aGUgYmFja2dyb3VuZCBhbmQgYm9yZGVyIG9mIGFuIGlucHV0IGZpZWxkIHRvIGhhdmUgYW4gZXJyb3Igc3RhdGUuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGFsZXJ0LWNvbG9yXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhY2tncm91bmQtbGlnaHRlbiBbMTAlXSAtIExpZ2h0bmVzcyBsZXZlbCBvZiB0aGUgYmFja2dyb3VuZCBjb2xvci5cbkBtaXhpbiBmb3JtLWlucHV0LWVycm9yKFxuICAkYmFja2dyb3VuZDogJGlucHV0LWJhY2tncm91bmQtaW52YWxpZCxcbiAgJGJhY2tncm91bmQtbGlnaHRlbjogMTAlXG4pIHtcbiAgJjpub3QoOmZvY3VzKSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtaXgoJGJhY2tncm91bmQsICR3aGl0ZSwgJGJhY2tncm91bmQtbGlnaHRlbik7XG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBlcnJvciBzdHlsZXMgdG8gYSBmb3JtIGVsZW1lbnQsIHVzaW5nIHRoZSB2YWx1ZXMgaW4gdGhlIHNldHRpbmdzIGZpbGUuXG5AbWl4aW4gZm9ybS1lcnJvciB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1hcmdpbi10b3A6ICRmb3JtLXNwYWNpbmcgKiAtMC41O1xuICBtYXJnaW4tYm90dG9tOiAkZm9ybS1zcGFjaW5nO1xuXG4gIGZvbnQtc2l6ZTogJGlucHV0LWVycm9yLWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRpbnB1dC1lcnJvci1mb250LXdlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1lcnJvci1jb2xvcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1lcnJvciB7XG4gIEBpZiAkYWJpZGUtaW5wdXRzIHtcbiAgICAvLyBFcnJvciBjbGFzcyBmb3IgaW52YWxpZCBpbnB1dHNcbiAgICAuaXMtaW52YWxpZC1pbnB1dCB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWlucHV0LWVycm9yO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkYWJpZGUtbGFiZWxzIHtcbiAgICAvLyBFcnJvciBjbGFzcyBmb3IgbGFiZWxzIG9mIGludmFsaWQgb3V0cHV0c1xuICAgIC5pcy1pbnZhbGlkLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvci1pbnZhbGlkO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvcm0gZXJyb3IgZWxlbWVudFxuICAuZm9ybS1lcnJvciB7XG4gICAgQGluY2x1ZGUgZm9ybS1lcnJvcjtcblxuICAgICYuaXMtdmlzaWJsZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8gSGlkZSBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIG9ubHkgZGlzcGxheWluZyBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBzaG93LWZvcigkc2l6ZSkge1xuICAkc2l6ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICRzaXplKTtcbiAgJHNpemU6IC16Zi1icC10by1lbSgkc2l6ZSkgLSAoMSAvIDE2KTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplIGRvd24pIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIEhpZGUgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBvbmx5IGRpc3BsYXlpbmcgaXQgd2l0aGluIGEgY2VydGFpbiBicmVha3BvaW50LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gc2hvdy1mb3Itb25seSgkc2l6ZSkge1xuICAkbG93ZXItYm91bmQtc2l6ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICRzaXplKTtcbiAgJHVwcGVyLWJvdW5kLXNpemU6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRzaXplKTtcblxuICAvLyBtb3JlIG9mdGVuIHRoYW4gbm90IHRoaXMgd2lsbCBiZSBjb3JyZWN0LCBqdXN0IG9uZSB0aW1lIHJvdW5kIHRoZSBsb29wIGl0IHdvbid0IHNvIHNldCBpbiBzY29wZSBoZXJlXG4gICRsb3dlci1ib3VuZDogLXpmLWJwLXRvLWVtKCRsb3dlci1ib3VuZC1zaXplKSAtICgxIC8gMTYpO1xuICAvLyB0ZXN0IGFjdHVhbCBsb3dlci1ib3VuZC1zaXplLCBpZiAwIHNldCBpdCB0byAwZW1cbiAgQGlmIHN0cmlwLXVuaXQoJGxvd2VyLWJvdW5kLXNpemUpID09IDAge1xuICAgICRsb3dlci1ib3VuZDogLXpmLWJwLXRvLWVtKCRsb3dlci1ib3VuZC1zaXplKTtcbiAgfVxuXG4gIEBpZiAkdXBwZXItYm91bmQtc2l6ZSA9PSBudWxsIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbG93ZXItYm91bmQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICR1cHBlci1ib3VuZDogLXpmLWJwLXRvLWVtKCR1cHBlci1ib3VuZC1zaXplKTtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsb3dlci1ib3VuZCksIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHVwcGVyLWJvdW5kKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8vIFNob3cgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBhbmQgaGlkZSBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBoaWRlLWZvcigkc2l6ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vLyBTaG93IGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgYW5kIGhpZGUgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gaGlkZS1mb3Itb25seSgkc2l6ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplIG9ubHkpIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdmlzaWJpbGl0eS1jbGFzc2VzIHtcbiAgLy8gQmFzaWMgaGlkaW5nIGNsYXNzZXNcbiAgLmhpZGUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5pbnZpc2libGUge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxuXG4gIC8vIFJlc3BvbnNpdmUgdmlzaWJpbGl0eSBjbGFzc2VzXG4gIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAuaGlkZS1mb3ItI3skc2l6ZX0ge1xuICAgICAgICBAaW5jbHVkZSBoaWRlLWZvcigkc2l6ZSk7XG4gICAgICB9XG5cbiAgICAgIC5zaG93LWZvci0jeyRzaXplfSB7XG4gICAgICAgIEBpbmNsdWRlIHNob3ctZm9yKCRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuaGlkZS1mb3ItI3skc2l6ZX0tb25seSB7XG4gICAgICBAaW5jbHVkZSBoaWRlLWZvci1vbmx5KCRzaXplKTtcbiAgICB9XG5cbiAgICAuc2hvdy1mb3ItI3skc2l6ZX0tb25seSB7XG4gICAgICBAaW5jbHVkZSBzaG93LWZvci1vbmx5KCRzaXplKTtcbiAgICB9XG4gIH1cblxuICAvLyBTY3JlZW4gcmVhZGVyIHZpc2liaWxpdHkgY2xhc3Nlc1xuICAvLyBOZWVkIGEgXCJoaWRlLWZvci1zclwiIGNsYXNzPyBBZGQgYXJpYS1oaWRkZW49J3RydWUnIHRvIHRoZSBlbGVtZW50XG4gIC5zaG93LWZvci1zcixcbiAgLnNob3ctb24tZm9jdXMge1xuICAgIEBpbmNsdWRlIGVsZW1lbnQtaW52aXNpYmxlO1xuICB9XG5cbiAgLy8gT25seSBkaXNwbGF5IHRoZSBlbGVtZW50IHdoZW4gaXQncyBmb2N1c2VkXG4gIC5zaG93LW9uLWZvY3VzIHtcbiAgICAmOmFjdGl2ZSxcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBpbmNsdWRlIGVsZW1lbnQtaW52aXNpYmxlLW9mZjtcbiAgICB9XG4gIH1cblxuICAvLyBMYW5kc2NhcGUgYW5kIHBvcnRyYWl0IHZpc2liaWxpdHlcbiAgLnNob3ctZm9yLWxhbmRzY2FwZSxcbiAgLmhpZGUtZm9yLXBvcnRyYWl0IHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYW5kc2NhcGUpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwb3J0cmFpdCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gIC5oaWRlLWZvci1sYW5kc2NhcGUsXG4gIC5zaG93LWZvci1wb3J0cmFpdCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYW5kc2NhcGUpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHBvcnRyYWl0KSB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZmxvYXRcbi8vLy9cblxuQG1peGluIGZvdW5kYXRpb24tZmxvYXQtY2xhc3NlcyB7XG4gIC5mbG9hdC1sZWZ0IHtcbiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmZsb2F0LXJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5mbG9hdC1jZW50ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gIC5jbGVhcmZpeCB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGJ1dHRvblxuLy8vL1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLXBhZGRpbmc6IDAuODVlbSAxZW0gIWRlZmF1bHQ7XG5cbi8vLyBNYXJnaW4gYXJvdW5kIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmaWxsIGZvciBidXR0b25zLiBDYW4gZWl0aGVyIGJlIGBzb2xpZGAgb3IgYGhvbGxvd2AuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGJ1dHRvbi1maWxsOiBzb2xpZCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBDb2xvclxuJGJ1dHRvbi1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlcjogc2NhbGUtY29sb3IoJGJ1dHRvbi1iYWNrZ3JvdW5kLCAkbGlnaHRuZXNzOiAtMTUlKSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgY29sb3IgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQWx0ZXJuYXRpdmUgZm9udCBjb2xvciBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLWNvbG9yLWFsdDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgYnV0dG9ucywgZGVmYXVsdGVkIHRvIGdsb2JhbC1yYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBTaXplcyBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBNYXBcbiRidXR0b24tc2l6ZXM6IChcbiAgdGlueTogMC42cmVtLFxuICBzbWFsbDogMC43NXJlbSxcbiAgZGVmYXVsdDogMC45cmVtLFxuICBsYXJnZTogMS4yNXJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcmluZyBjbGFzc2VzLiBBIG1hcCBvZiBjbGFzc2VzIHRvIG91dHB1dCBpbiB5b3VyIENTUywgbGlrZSBgLnNlY29uZGFyeWAsIGAuc3VjY2Vzc2AsIGFuZCBzbyBvbi5cbi8vLyBAdHlwZSBNYXBcbiRidXR0b24tcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZSAhZGVmYXVsdDtcblxuLy8vIG9wYWNpdHkgZm9yIGEgZGlzYWJsZWQgYnV0dG9uLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tb3BhY2l0eS1kaXNhYmxlZDogMC4yNSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgbGlnaHRuZXNzIG9uIGhvdmVyIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzczogLTIwJSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIGxpZ2h0bmVzcyBvbiBob3ZlciBmb3IgaG9sbG93IGJ1dHRvbnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3M6IC01MCUgIWRlZmF1bHQ7XG5cbi8vIEludGVybmFsOiBmbGlwIGZyb20gbWFyZ2luLXJpZ2h0IHRvIG1hcmdpbi1sZWZ0IGZvciBkZWZhdWx0c1xuQGlmICRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gJ3J0bCcge1xuICAkYnV0dG9uLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xufVxuXG4vLy8gdHJhbnNpdGlvbnMgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzIGVhc2Utb3V0LCBjb2xvciAwLjI1cyBlYXNlLW91dCAhZGVmYXVsdDtcblxuLy8gVE9ETzogRG9jdW1lbnQgYnV0dG9uLWJhc2UoKSBtaXhpblxuQG1peGluIGJ1dHRvbi1iYXNlIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG1hcmdpbjogJGJ1dHRvbi1tYXJnaW47XG4gIHBhZGRpbmc6ICRidXR0b24tcGFkZGluZztcblxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgdHJhbnNpdGlvbjogJGJ1dHRvbi10cmFuc2l0aW9uO1xuXG4gIGZvbnQtc2l6ZTogbWFwLWdldCgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4vLy8gRXhwYW5kcyBhIGJ1dHRvbiB0byBtYWtlIGl0IGZ1bGwtd2lkdGguXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZXhwYW5kIFt0cnVlXSAtIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIHRoZSBleHBhbmQgYmVoYXZpb3IuIFNldCB0byBgZmFsc2VgIHRvIHJldmVyc2UgdGhpcyBiZWhhdmlvci5cbkBtaXhpbiBidXR0b24tZXhwYW5kKCRleHBhbmQ6IHRydWUpIHtcbiAgQGlmICRleHBhbmQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1hcmdpbjogJGJ1dHRvbi1tYXJnaW47XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIHZpc3VhbCBzdHlsZSBvZiBhIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZC1ob3ZlciBbJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbiBvbiBob3Zlci4gU2V0IHRvIGBhdXRvYCB0byBoYXZlIHRoZSBtaXhpbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgaG92ZXIgY29sb3IuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIFRleHQgY29sb3Igb2YgdGhlIGJ1dHRvbi4gU2V0IHRvIGBhdXRvYCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgY29sb3IgYmFzZWQgb24gdGhlIGJhY2tncm91bmQgY29sb3IuXG5AbWl4aW4gYnV0dG9uLXN0eWxlKFxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLFxuICAkY29sb3I6ICRidXR0b24tY29sb3IsXG4gICRiYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzc1xuKSB7XG4gIEBpZiAkY29sb3IgPT0gYXV0byB7XG4gICAgJGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYWNrZ3JvdW5kLCAoJGJ1dHRvbi1jb2xvciwgJGJ1dHRvbi1jb2xvci1hbHQpKTtcbiAgfVxuXG4gIEBpZiAkYmFja2dyb3VuZC1ob3ZlciA9PSBhdXRvIHtcbiAgICAkYmFja2dyb3VuZC1ob3Zlcjogc2NhbGUtY29sb3IoJGJhY2tncm91bmQsICRsaWdodG5lc3M6ICRiYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzcyk7XG4gIH1cblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgY29sb3I6ICRjb2xvcjtcblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ob3ZlcjtcbiAgICBjb2xvcjogJGNvbG9yO1xuICB9XG59XG5cbi8vLyBSZW1vdmVzIGJhY2tncm91bmQgZmlsbCBvbiBob3ZlciBhbmQgZm9jdXMgZm9yIGhvbGxvdyBidXR0b25zLlxuQG1peGluIGJ1dHRvbi1ob2xsb3cge1xuICAmLFxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG5AbWl4aW4gYnV0dG9uLWhvbGxvdy1zdHlsZShcbiAgJGNvbG9yOiAkcHJpbWFyeS1jb2xvcixcbiAgJGhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzXG4pIHtcbiAgJGNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRob3Zlci1saWdodG5lc3MpO1xuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvcjtcbiAgY29sb3I6ICRjb2xvcjtcblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICB9XG59XG5cbi8vLyBBZGRzIGRpc2FibGVkIHN0eWxlcyB0byBhIGJ1dHRvbiBieSBmYWRpbmcgdGhlIGVsZW1lbnQsIHJlc2V0aW5nIHRoZSBjdXJzb3IsIGFuZCBkaXNhYmxpbmcgcG9pbnRlciBldmVudHMuXG4vLy8gQHBhcmFtIFtDb2xvcl0gJGJhY2tncm91bmQgWyRwcmltYXJ5LWNvbG9yXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGRpc2FibGVkIGJ1dHRvbi5cbi8vLyBAcGFyYW0gW0NvbG9yXSAkY29sb3IgWyRidXR0b24tY29sb3JdIC0gVGV4dCBjb2xvciBvZiB0aGUgZGlzYWJsZWQgYnV0dG9uLiBTZXQgdG8gYGF1dG9gIHRvIGhhdmUgdGhlIG1peGluIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBjb2xvciBiYXNlZCBvbiB0aGUgYmFja2dyb3VuZCBjb2xvci5cbkBtaXhpbiBidXR0b24tZGlzYWJsZWQoXG4gICRiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcixcbiAgJGNvbG9yOiAkYnV0dG9uLWNvbG9yXG4pIHtcbiAgQGlmICRjb2xvciA9PSBhdXRvIHtcbiAgICAkY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGJhY2tncm91bmQsICgkYnV0dG9uLWNvbG9yLCAkYnV0dG9uLWNvbG9yLWFsdCkpO1xuICB9XG5cbiAgb3BhY2l0eTogJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXG4gICYsICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cbn1cblxuLy8vIEFkZHMgYSBkcm9wZG93biBhcnJvdyB0byBhIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNpemUgWzAuNGVtXSAtIFNpemUgb2YgdGhlIGFycm93LiBXZSByZWNvbW1lbmQgdXNpbmcgYW4gYGVtYCB2YWx1ZSBzbyB0aGUgdHJpYW5nbGUgc2NhbGVzIHdoZW4gdXNlZCBpbnNpZGUgZGlmZmVyZW50IHNpemVzIG9mIGJ1dHRvbnMuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFt3aGl0ZV0gLSBDb2xvciBvZiB0aGUgYXJyb3cuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvZmZzZXQgWyRidXR0b24tcGFkZGluZ10gLSBEaXN0YW5jZSBiZXR3ZWVuIHRoZSBhcnJvdyBhbmQgdGhlIHRleHQgb2YgdGhlIGJ1dHRvbi4gRGVmYXVsdHMgdG8gd2hhdGV2ZXIgdGhlIHJpZ2h0IHBhZGRpbmcgb2YgYSBidXR0b24gaXMuXG5AbWl4aW4gYnV0dG9uLWRyb3Bkb3duKFxuICAkc2l6ZTogMC40ZW0sXG4gICRjb2xvcjogJHdoaXRlLFxuICAkb2Zmc2V0OiBnZXQtc2lkZSgkYnV0dG9uLXBhZGRpbmcsIHJpZ2h0KVxuKSB7XG4gICY6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHNpemUsICRjb2xvciwgZG93bik7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogMC40ZW07IC8vIEFsaWducyB0aGUgYXJyb3cgd2l0aCB0aGUgdGV4dCBvZiB0aGUgYnV0dG9uXG5cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZmxvYXQ6ICN7JGdsb2JhbC1yaWdodH07XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogZ2V0LXNpZGUoJGJ1dHRvbi1wYWRkaW5nLCByaWdodCk7XG4gIH1cbn1cblxuLy8vIEFkZHMgYWxsIHN0eWxlcyBmb3IgYSBidXR0b24uIEZvciBtb3JlIGdyYW51bGFyIGNvbnRyb2wgb3ZlciBzdHlsZXMsIHVzZSB0aGUgaW5kaXZpZHVhbCBidXR0b24gbWl4aW5zLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGV4cGFuZCBbZmFsc2VdIC0gU2V0IHRvIGB0cnVlYCB0byBtYWtlIHRoZSBidXR0b24gZnVsbC13aWR0aC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZC1ob3ZlciBbJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbiBvbiBob3Zlci4gU2V0IHRvIGBhdXRvYCB0byBoYXZlIHRoZSBtaXhpbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgaG92ZXIgY29sb3IuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIFRleHQgY29sb3Igb2YgdGhlIGJ1dHRvbi4gU2V0IHRvIGBhdXRvYCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgY29sb3IgYmFzZWQgb24gdGhlIGJhY2tncm91bmQgY29sb3IuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc3R5bGUgW3NvbGlkXSAtIFNldCB0byBgaG9sbG93YCB0byBjcmVhdGUgYSBob2xsb3cgYnV0dG9uLiBUaGUgY29sb3IgZGVmaW5lZCBpbiBgJGJhY2tncm91bmRgIHdpbGwgYmUgdXNlZCBhcyB0aGUgcHJpbWFyeSBjb2xvciBvZiB0aGUgYnV0dG9uLlxuQG1peGluIGJ1dHRvbihcbiAgJGV4cGFuZDogZmFsc2UsXG4gICRiYWNrZ3JvdW5kOiAkYnV0dG9uLWJhY2tncm91bmQsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYnV0dG9uLWJhY2tncm91bmQtaG92ZXIsXG4gICRjb2xvcjogJGJ1dHRvbi1jb2xvcixcbiAgJHN0eWxlOiAkYnV0dG9uLWZpbGxcbikge1xuICBAaW5jbHVkZSBidXR0b24tYmFzZTtcblxuICBAaWYgJHN0eWxlID09IHNvbGlkIHtcbiAgICBAaW5jbHVkZSBidXR0b24tc3R5bGUoJGJhY2tncm91bmQsICRiYWNrZ3JvdW5kLWhvdmVyLCAkY29sb3IpO1xuICB9XG4gIEBlbHNlIGlmICRzdHlsZSA9PSBob2xsb3cge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3c7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZSgkYmFja2dyb3VuZCk7XG4gIH1cblxuICBAaWYgJGV4cGFuZCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1idXR0b24ge1xuICAuYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBidXR0b247XG5cbiAgICAvLyBTaXplc1xuICAgIEBlYWNoICRzaXplLCAkdmFsdWUgaW4gbWFwLXJlbW92ZSgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KSB7XG4gICAgICAmLiN7JHNpemV9IHtcbiAgICAgICAgZm9udC1zaXplOiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5leHBhbmRlZCB7IEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7IH1cblxuICAgIC8vIENvbG9yc1xuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcbiAgICAgIEBpZiAkYnV0dG9uLWZpbGwgIT0gaG9sbG93IHtcbiAgICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLXN0eWxlKCRjb2xvciwgYXV0bywgYXV0byk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZSgkY29sb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi4jeyRuYW1lfS5kcm9wZG93bjo6YWZ0ZXIge1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhvbGxvdyBzdHlsZVxuICAgIEBpZiAkYnV0dG9uLWZpbGwgIT0gaG9sbG93IHtcbiAgICAgICYuaG9sbG93IHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdztcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZTtcblxuICAgICAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XG4gICAgICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlKCRjb2xvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGlzYWJsZWQgc3R5bGVcbiAgICAmLmRpc2FibGVkLFxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kaXNhYmxlZDtcblxuICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xuICAgICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZGlzYWJsZWQoJGNvbG9yLCBhdXRvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERyb3Bkb3duIGFycm93XG4gICAgJi5kcm9wZG93biB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZHJvcGRvd247XG5cbiAgICAgIEBpZiAkYnV0dG9uLWZpbGwgPT0gaG9sbG93IHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRidXR0b24tYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJ1dHRvbiB3aXRoIGRyb3Bkb3duIGFycm93IG9ubHlcbiAgICAmLmFycm93LW9ubHk6OmFmdGVyIHtcbiAgICAgIHRvcDogLTAuMWVtO1xuICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnV0dG9uLWdyb3VwXG4vLy8vXG5cbi8vLyBNYXJnaW4gZm9yIGJ1dHRvbiBncm91cHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uZ3JvdXAtbWFyZ2luOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGJldHdlZW4gYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbi8vLyBAdHlwZSBCb3JkZXJcbiRidXR0b25ncm91cC1zcGFjaW5nOiAxcHggIWRlZmF1bHQ7XG5cbi8vLyBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yOiAnLmJ1dHRvbicgIWRlZmF1bHQ7XG5cbi8vLyBNYXhpbXVtIG51bWJlciBvZiBidXR0b25zIHRoYXQgY2FuIGJlIGluIGFuIGV2ZW4td2lkdGggYnV0dG9uIGdyb3VwLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg6IDYgIWRlZmF1bHQ7XG5cbi8vLyBEZXRlcm1pbmVzIGlmICRidXR0b24tcmFkaXVzIGlzIGFwcGxpZWQgdG8gZWFjaCBidXR0b24gb3IgdGhlIGJ1dHRvbiBncm91cCBhcyBhIHdob2xlLiBVc2UgJGdsb2JhbC1yYWRpdXMgaW4gX3NldHRpbmdzLnNjc3MgdG8gY2hhbmdlIHJhZGl1cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2g6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBBZGQgc3R5bGVzIGZvciBhIGJ1dHRvbiBncm91cCBjb250YWluZXIuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRjaGlsZC1zZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXG5AbWl4aW4gYnV0dG9uLWdyb3VwKFxuICAkY2hpbGQtc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvclxuKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBtYXJnaW4tYm90dG9tOiAkYnV0dG9uZ3JvdXAtbWFyZ2luO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc2l6ZTogMDtcbiAgfVxuXG4gICN7JGNoaWxkLXNlbGVjdG9yfSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkYnV0dG9uZ3JvdXAtc3BhY2luZztcbiAgICBtYXJnaW4tYm90dG9tOiAkYnV0dG9uZ3JvdXAtc3BhY2luZztcbiAgICBmb250LXNpemU6IG1hcC1nZXQoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCk7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICB9XG5cbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgZnVsbC13aWR0aCBidXR0b24gZ3JvdXAsIG1ha2luZyBlYWNoIGJ1dHRvbiBlcXVhbCB3aWR0aC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAtZXhwYW5kKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcixcbiAgJGNvdW50OiBudWxsXG4pIHtcbiAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAtJGJ1dHRvbmdyb3VwLXNwYWNpbmc7XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLy8gT25lIGNoaWxkXG4gICAgICAmOmZpcnN0LWNoaWxkOmxhc3QtY2hpbGQge1xuICAgICAgICB3aWR0aDogMTAwJVxuICAgICAgfVxuXG4gICAgICAvLyBUd28gb3IgbW9yZSBjaGlsZHJlZW5cbiAgICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXgge1xuICAgICAgICAmOmZpcnN0LWNoaWxkOm50aC1sYXN0LWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgJiwgJjpmaXJzdC1jaGlsZDpudGgtbGFzdC1jaGlsZCgjeyRpfSkgfiAjeyRzZWxlY3Rvcn0ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IGNhbGMoI3twZXJjZW50YWdlKDEgLyAkaSl9IC0gI3skYnV0dG9uZ3JvdXAtc3BhY2luZ30pO1xuICAgICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRidXR0b25ncm91cC1zcGFjaW5nO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGJ1dHRvbmdyb3VwLXNwYWNpbmcgKiAtJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBTdGFja3MgdGhlIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgdGhlIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAtc3RhY2soXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9XG5cbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cblxuICAgIEBpZiBub3QgJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGR7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxufVxuXG4vLy8gVW4tc3RhY2tzIHRoZSBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIHRoZSBidXR0b24gZ3JvdXAuXG5AbWl4aW4gYnV0dG9uLWdyb3VwLXVuc3RhY2soXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXG4pIHtcbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgQGlmIG5vdCAkYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2gge1xuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJ1dHRvbi1ncm91cCB7XG4gIC5idXR0b24tZ3JvdXAge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cDtcblxuICAgIC8vIFNpemVzXG4gICAgQGVhY2ggJHNpemUsICR2YWx1ZSBpbiBtYXAtcmVtb3ZlKCRidXR0b24tc2l6ZXMsIGRlZmF1bHQpIHtcbiAgICAgICYuI3skc2l6ZX0gI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgZm9udC1zaXplOiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXZlbi13aWR0aCBHcm91cFxuICAgICYuZXhwYW5kZWQgeyBAaW5jbHVkZSBidXR0b24tZ3JvdXAtZXhwYW5kOyB9XG5cbiAgICAvLyBDb2xvcnNcbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xuICAgICAgQGlmICRidXR0b24tZmlsbCAhPSBob2xsb3cge1xuICAgICAgICAmLiN7JG5hbWV9ICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XG4gICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLXN0eWxlKCRjb2xvciwgYXV0bywgYXV0byk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJi4jeyRuYW1lfSAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3c7XG4gICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZSgkY29sb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLFxuICAgICYuc3RhY2tlZC1mb3Itc21hbGwsXG4gICAgJi5zdGFja2VkLWZvci1tZWRpdW0ge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLXN0YWNrO1xuICAgIH1cblxuICAgICYuc3RhY2tlZC1mb3Itc21hbGwge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLXVuc3RhY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLWZvci1tZWRpdW0ge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtdW5zdGFjaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsLmV4cGFuZGVkIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBmb3JjZS1lbGVtZW50LW5lc3RpbmdcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLy8vXG4vLy8gQGdyb3VwIGFjY29yZGlvbi1tZW51XG4vLy8vXG5cbi8vLyBTZXRzIGlmIGFjY29yZGlvbiBtZW51cyBoYXZlIHRoZSBkZWZhdWx0IGFycm93IHN0eWxlcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWNjb3JkaW9ubWVudS1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGFycm93IGNvbG9yIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgYXJyb3cgc2l6ZSBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIExlbmd0aFxuJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi1hY2NvcmRpb24tbWVudSB7XG4gIEBpZiAkYWNjb3JkaW9ubWVudS1hcnJvd3Mge1xuICAgIC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQgPiBhIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZSwgJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3IsIGRvd24pO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBtYXJnaW4tdG9wOiAtMSAqICgkYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplIC8gMik7XG4gICAgICAgICN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudFthcmlhLWV4cGFuZGVkPSd0cnVlJ10gPiBhOjphZnRlciB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGFjY29yZGlvblxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGFjY29yZGlvbiBncm91cC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGFkZHMgcGx1cyBhbmQgbWludXMgaWNvbnMgdG8gdGhlIHNpZGUgb2YgZWFjaCBhY2NvcmRpb24gdGl0bGUuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFjY29yZGlvbi1wbHVzbWludXM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgYWNjb3JkaW9uIHRpdGxlcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb24tdGl0bGUtZm9udC1zaXplOiByZW0tY2FsYygxMikgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGl0ZW1zIGluIGEgTWVudS5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1pdGVtLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvbiBob3ZlciBmb3IgaXRlbXMgaW4gYSBNZW51LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgb2YgYW4gYWNjb3JkaW9uIGl0ZW0uXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGFjY29yZGlvbi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGFjY29yZGlvbi1jb250ZW50LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gYWNjb3JkaW9uIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byB0aGUgc2FtZSBlbGVtZW50IHRoYXQgZ2V0cyBgZGF0YS1hY2NvcmRpb25gLlxuQG1peGluIGFjY29yZGlvbi1jb250YWluZXIgKFxuICAkYmFja2dyb3VuZDogJGFjY29yZGlvbi1iYWNrZ3JvdW5kXG4pIHtcbiAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYWNjb3JkaW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gdGhlIGxpc3QgaXRlbSB3aXRoaW4gYW4gYWNjb3JkaW9uIHVsLlxuQG1peGluIGFjY29yZGlvbi1pdGVtIHtcbiAgJjpmaXJzdC1jaGlsZCA+IDpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXMgMCAwO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkID4gOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAkZ2xvYmFsLXJhZGl1cyAkZ2xvYmFsLXJhZGl1cztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSB0aXRsZSBvZiBhbiBhY2NvcmRpb24gaXRlbS4gQXBwbHkgdGhpcyB0byB0aGUgbGluayB3aXRoaW4gYW4gYWNjb3JkaW9uIGl0ZW0uXG5AbWl4aW4gYWNjb3JkaW9uLXRpdGxlIChcbiAgJHBhZGRpbmc6ICRhY2NvcmRpb24taXRlbS1wYWRkaW5nLFxuICAkZm9udC1zaXplOiAkYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZSxcbiAgJGNvbG9yOiAkYWNjb3JkaW9uLWl0ZW0tY29sb3IsXG4gICRib3JkZXI6ICRhY2NvcmRpb24tY29udGVudC1ib3JkZXIsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYWNjb3JkaW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlclxuKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuXG4gIGJvcmRlcjogJGJvcmRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMDtcblxuICBmb250LXNpemU6ICRmb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogJGNvbG9yO1xuXG4gIDpsYXN0LWNoaWxkOm5vdCguaXMtYWN0aXZlKSA+ICYge1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwICRnbG9iYWwtcmFkaXVzICRnbG9iYWwtcmFkaXVzO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtaG92ZXI7XG4gIH1cblxuICBAaWYgJGFjY29yZGlvbi1wbHVzbWludXMge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgICN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gICAgICBtYXJnaW4tdG9wOiAtMC41cmVtO1xuICAgICAgY29udGVudDogJysnO1xuICAgIH1cblxuICAgIC5pcy1hY3RpdmUgPiAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ1xcMjAxMyc7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYWNjb3JkaW9uIGNvbnRlbnQuIEFwcGx5IHRoaXMgdG8gdGhlIGNvbnRlbnQgcGFuZSBiZWxvdyBhbiBhY2NvcmRpb24gaXRlbSdzIHRpdGxlLlxuQG1peGluIGFjY29yZGlvbi1jb250ZW50IChcbiAgJHBhZGRpbmc6ICRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nLFxuICAkYm9yZGVyOiAkYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyLFxuICAkYmFja2dyb3VuZDogJGFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQsXG4gICRjb2xvcjogJGFjY29yZGlvbi1jb250ZW50LWNvbG9yXG4pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBib3JkZXItYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcblxuICBjb2xvcjogJGNvbG9yO1xuXG4gIDpsYXN0LWNoaWxkID4gJjpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWFjY29yZGlvbiB7XG4gIC5hY2NvcmRpb24ge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1jb250YWluZXI7XG4gIH1cblxuICAuYWNjb3JkaW9uLWl0ZW0ge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1pdGVtO1xuICB9XG5cbiAgLmFjY29yZGlvbi10aXRsZSB7XG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLXRpdGxlO1xuICB9XG5cbiAgLmFjY29yZGlvbi1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24tY29udGVudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYmFkZ2Vcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmFkZ2UtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGJhZGdlcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJhZGdlLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBBbHRlcm5hdGUgdGV4dCBjb2xvciBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmFkZ2UtY29sb3ItYWx0OiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcmluZyBjbGFzc2VzLiBBIG1hcCBvZiBjbGFzc2VzIHRvIG91dHB1dCBpbiB5b3VyIENTUywgbGlrZSBgLnNlY29uZGFyeWAsIGAuc3VjY2Vzc2AsIGFuZCBzbyBvbi5cbi8vLyBAdHlwZSBNYXBcbiRiYWRnZS1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBiYWRnZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmFkZ2UtcGFkZGluZzogMC4zZW0gIWRlZmF1bHQ7XG5cbi8vLyBNaW5pbXVtIHdpZHRoIG9mIGEgYmFkZ2UuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmFkZ2UtbWlud2lkdGg6IDIuMWVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGJhZGdlcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRiYWRnZS1mb250LXNpemU6IDAuNnJlbSAhZGVmYXVsdDtcblxuLy8vIEdlbmVyYXRlcyB0aGUgYmFzZSBzdHlsZXMgZm9yIGEgYmFkZ2UuXG5AbWl4aW4gYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1pbi13aWR0aDogJGJhZGdlLW1pbndpZHRoO1xuICBwYWRkaW5nOiAkYmFkZ2UtcGFkZGluZztcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgZm9udC1zaXplOiAkYmFkZ2UtZm9udC1zaXplO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJhZGdlIHtcbiAgLmJhZGdlIHtcbiAgICBAaW5jbHVkZSBiYWRnZTtcblxuICAgIGJhY2tncm91bmQ6ICRiYWRnZS1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkYmFkZ2UtY29sb3I7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRiYWRnZS1wYWxldHRlIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgICAgIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRjb2xvciwgKCRiYWRnZS1jb2xvciwgJGJhZGdlLWNvbG9yLWFsdCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWRjcnVtYnNcbi8vLy9cblxuLy8vIE1hcmdpbiBhcm91bmQgYSBicmVhZGNydW1icyBjb250YWluZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJyZWFkY3J1bWJzLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMSkgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIENvbG9yXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiB0aGUgYWN0aXZlIGJyZWFkY3J1bWIgbGluay5cbi8vLyBAdHlwZSBDb2xvclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gT3BhY2l0eSBvZiBkaXNhYmxlZCBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiBiZXR3ZWVuIGJyZWFkY3J1bWIgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW46IDAuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIG1ha2VzIGJyZWFkY3J1bWIgbGlua3MgdXBwZXJjYXNlLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRicmVhZGNydW1icy1pdGVtLXVwcGVyY2FzZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYWRkcyBhIHNsYXNoIGJldHdlZW4gYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYnJlYWRjcnVtYnMtaXRlbS1zbGFzaDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lciwgYWxvbmcgd2l0aCB0aGUgc3R5bGVzIGZvciB0aGUgYDxsaT5gIGFuZCBgPGE+YCBlbGVtZW50cyBpbnNpZGUgb2YgaXQuXG5AbWl4aW4gYnJlYWRjcnVtYnMtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbjogJGJyZWFkY3J1bWJzLW1hcmdpbjtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAvLyBJdGVtIHdyYXBwZXJcbiAgbGkge1xuICAgIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XG5cbiAgICBmb250LXNpemU6ICRicmVhZGNydW1icy1pdGVtLWZvbnQtc2l6ZTtcbiAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG5cbiAgICBAaWYgJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlIHtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuXG4gICAgQGlmICRicmVhZGNydW1icy1pdGVtLXNsYXNoIHtcbiAgICAgIC8vIE5lZWQgdG8gZXNjYXBlIHRoZSBiYWNrc2xhc2hcbiAgICAgICRzbGFzaDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSAnbHRyJywgJy8nLCAnXFxcXCcpO1xuXG4gICAgICAmOm5vdCg6bGFzdC1jaGlsZCk6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IDFweDtcbiAgICAgICAgbWFyZ2luOiAwICRicmVhZGNydW1icy1pdGVtLW1hcmdpbjtcblxuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBjb250ZW50OiAkc2xhc2g7XG4gICAgICAgIGNvbG9yOiAkbWVkaXVtLWdyYXk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW47XG4gICAgfVxuICB9XG5cbiAgLy8gUGFnZSBsaW5rc1xuICBhIHtcbiAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1icmVhZGNydW1icyB7XG4gIC5icmVhZGNydW1icyB7XG4gICAgQGluY2x1ZGUgYnJlYWRjcnVtYnMtY29udGFpbmVyO1xuXG4gICAgLmRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDtcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBjYWxsb3V0XG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZmFkZSB2YWx1ZSBmb3IgY2FsbG91dCBiYWNrZ3JvdW5kcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjYWxsb3V0LWJhY2tncm91bmQtZmFkZTogODUlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgc3R5bGUgZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIExpc3RcbiRjYWxsb3V0LWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoJGJsYWNrLCAwLjI1KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2FsbG91dC1tYXJnaW46IDAgMCAxcmVtIDAgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGlubmVyIHBhZGRpbmcgZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGNhbGxvdXQtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGNhbGxvdXRzLCBpZiB0aGUgY2FsbG91dCBoYXMgYSBkYXJrIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LWZvbnQtY29sb3ItYWx0OiAkYm9keS1iYWNrZ3JvdW5kICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgcmFkaXVzIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEFtb3VudCB0byB0aW50IGxpbmtzIHVzZWQgd2l0aGluIGNvbG9yZWQgcGFuZWxzLiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZS5cbi8vLyBAdHlwZSBOdW1iZXIgfCBCb29sZWFuXG4kY2FsbG91dC1saW5rLXRpbnQ6IDMwJSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBhIGNhbGxvdXQsIGluY2x1ZGluZyBwYWRkaW5nIGFuZCBtYXJnaW4uXG5AbWl4aW4gY2FsbG91dC1iYXNlKCkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogJGNhbGxvdXQtbWFyZ2luO1xuICBwYWRkaW5nOiAkY2FsbG91dC1wYWRkaW5nO1xuXG4gIGJvcmRlcjogJGNhbGxvdXQtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkY2FsbG91dC1yYWRpdXM7XG5cbiAgLy8gUmVzcGVjdCB0aGUgcGFkZGluZywgZm9vbC5cbiAgPiA6Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cblxuICA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBHZW5lcmF0ZSBxdWljayBzdHlsZXMgZm9yIGEgY2FsbG91dCB1c2luZyBhIHNpbmdsZSBjb2xvciBhcyBhIGJhc2VsaW5lLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGNhbGxvdXQtYmFja2dyb3VuZF0gLSBDb2xvciB0byB1c2UuXG5AbWl4aW4gY2FsbG91dC1zdHlsZSgkY29sb3I6ICRjYWxsb3V0LWJhY2tncm91bmQpIHtcbiAgJGJhY2tncm91bmQ6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGNhbGxvdXQtYmFja2dyb3VuZC1mYWRlKTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGJhY2tncm91bmQsICgkY2FsbG91dC1mb250LWNvbG9yLCAkY2FsbG91dC1mb250LWNvbG9yLWFsdCkpO1xufVxuXG5AbWl4aW4gY2FsbG91dC1zaXplKCRwYWRkaW5nKSB7XG4gIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbn1cblxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2FsbG91dC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRjYWxsb3V0LWJhY2tncm91bmRdIC0gQ29sb3IgdG8gdXNlLlxuQG1peGluIGNhbGxvdXQoJGNvbG9yOiAkY2FsbG91dC1iYWNrZ3JvdW5kKSB7XG4gIEBpbmNsdWRlIGNhbGxvdXQtYmFzZTtcbiAgQGluY2x1ZGUgY2FsbG91dC1zdHlsZSgkY29sb3IpO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1jYWxsb3V0IHtcbiAgLmNhbGxvdXQge1xuICAgIEBpbmNsdWRlIGNhbGxvdXQ7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIEBpbmNsdWRlIGNhbGxvdXQtc3R5bGUoJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnNtYWxsIHtcbiAgICAgIEBpbmNsdWRlIGNhbGxvdXQtc2l6ZSgwLjVyZW0pO1xuICAgIH1cblxuICAgICYubGFyZ2Uge1xuICAgICAgQGluY2x1ZGUgY2FsbG91dC1zaXplKDNyZW0pO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgY2FyZFxuLy8vL1xuXG4vLy8gRGVmdWFsdCBiYWNrZ3JvdW5kIGNvbG9yLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FyZC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGNhcmRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FyZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FyZC1kaXZpZGVyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgc3R5bGUuXG4vLy8gQHR5cGUgTGlzdFxuJGNhcmQtYm9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNhcmQgc2hhZG93LlxuLy8vIEB0eXBlIExpc3RcbiRjYXJkLXNoYWRvdzogbm9uZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIHJhZGl1cy5cbi8vLyBAdHlwZSBMaXN0XG4kY2FyZC1ib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjYXJkLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbi5cbi8vLyBAdHlwZSBudW1iZXJcbiRjYXJkLW1hcmdpbjogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYXJkIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gZm9udCBjb2xvciBvZiB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1hcmdpbiAtIEJvdHRvbSBtYXJnaW4gb2YgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtMaXN0fSAkYm9yZGVyIC0gQm9yZGVyIGFyb3VuZCB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRyYWRpdXMgLSBib3JkZXIgcmFkaXVzIG9mIHRoZSBjYXJkLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHNoYWRvdyAtIGJveCBzaGFkb3cgb2YgdGhlIGNhcmQuXG5AbWl4aW4gY2FyZC1jb250YWluZXIoXG4gICRiYWNrZ3JvdW5kOiAkY2FyZC1iYWNrZ3JvdW5kLFxuICAkY29sb3I6ICRjYXJkLWZvbnQtY29sb3IsXG4gICRtYXJnaW46ICRjYXJkLW1hcmdpbixcbiAgJGJvcmRlcjogJGNhcmQtYm9yZGVyLFxuICAkcmFkaXVzOiAkY2FyZC1ib3JkZXItcmFkaXVzLFxuICAkc2hhZG93OiAkY2FyZC1zaGFkb3dcbikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIH1cblxuICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuXG4gIGJvcmRlcjogJGJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgYm94LXNoYWRvdzogJHNoYWRvdztcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjb2xvcjogJGNhcmQtZm9udC1jb2xvcjtcblxuICAmID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhcmQgZGl2aWRlci5cbkBtaXhpbiBjYXJkLWRpdmlkZXIoXG4gICRiYWNrZ3JvdW5kOiAkY2FyZC1kaXZpZGVyLWJhY2tncm91bmQsXG4gICRwYWRkaW5nOiAkY2FyZC1wYWRkaW5nXG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gIH1cblxuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG5cbiAgJiA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYXJkIHNlY3Rpb24uXG5AbWl4aW4gY2FyZC1zZWN0aW9uKFxuICAkcGFkZGluZzogJGNhcmQtcGFkZGluZ1xuKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICB9XG5cbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgJiA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWNhcmQge1xuICAuY2FyZCB7XG4gICAgQGluY2x1ZGUgY2FyZC1jb250YWluZXI7XG4gIH1cblxuICAuY2FyZC1kaXZpZGVyIHtcbiAgICBAaW5jbHVkZSBjYXJkLWRpdmlkZXI7XG4gIH1cblxuICAuY2FyZC1zZWN0aW9uIHtcbiAgICBAaW5jbHVkZSBjYXJkLXNlY3Rpb247XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGNsb3NlLWJ1dHRvblxuLy8vL1xuXG4vLy8gRGVmYXVsdCBwb3NpdGlvbiBvZiB0aGUgY2xvc2UgYnV0dG9uLiBUaGUgZmlyc3QgdmFsdWUgc2hvdWxkIGJlIGByaWdodGAgb3IgYGxlZnRgLCBhbmQgdGhlIHNlY29uZCB2YWx1ZSBzaG91bGQgYmUgYHRvcGAgb3IgYGJvdHRvbWAuXG4vLy8gQHR5cGUgTGlzdFxuJGNsb3NlYnV0dG9uLXBvc2l0aW9uOiByaWdodCB0b3AgIWRlZmF1bHQ7XG5cbi8vLyBSaWdodCAob3IgbGVmdCkgb2Zmc2V0KHMpIGZvciBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBOdW1iZXJ8TWFwXG4kY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWw6IChcbiAgc21hbGw6IDAuNjZyZW0sXG4gIG1lZGl1bTogMXJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUb3AgKG9yIGJvdHRvbSkgb2Zmc2V0KHMpIGZvciBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBOdW1iZXJ8TWFwXG4kY2xvc2VidXR0b24tb2Zmc2V0LXZlcnRpY2FsOiAoXG4gIHNtYWxsOiAwLjMzZW0sXG4gIG1lZGl1bTogMC41cmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplKHMpIG9mIHRoZSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyfE1hcFxuJGNsb3NlYnV0dG9uLXNpemU6IChcbiAgc21hbGw6IDEuNWVtLFxuICBtZWRpdW06IDJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGluZS1oZWlnaHQgb2YgdGhlIGNsb3NlIGJ1dHRvbi4gSXQgYWZmZWN0cyB0aGUgc3BhY2luZyBvZiB0aGUgZWxlbWVudC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0OiAxICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgY2xvc2UgYnV0dG9uLlxuLy8vIEB0eXBlIENvbG9yXG4kY2xvc2VidXR0b24tY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBjbG9zZSBidXR0b24gd2hlbiBiZWluZyBob3ZlcmVkIG9uLlxuLy8vIEB0eXBlIENvbG9yXG4kY2xvc2VidXR0b24tY29sb3ItaG92ZXI6ICRibGFjayAhZGVmYXVsdDtcblxuXG4vLy8gR2V0IHRoZSBzaXplIGFuZCBwb3NpdGlvbiBmb3IgYSBjbG9zZSBidXR0b24uIElmIHRoZSBpbnB1dCB2YWx1ZSBpcyBhIG51bWJlciwgdGhlIG51bWJlciBpcyByZXR1cm5lZC4gSWYgdGhlIGlucHV0IHZhbHVlIGlzIGEgY29uZmlnIG1hcCBhbmQgdGhlIG1hcCBoYXMgdGhlIGtleSBgJHNpemVgLCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICR2YWx1ZSAtIEEgbnVtYmVyIG9yIG1hcCB0aGF0IHJlcHJlc2VudHMgdGhlIHNpemUgb3IgcG9zaXRpb24gdmFsdWUocykgb2YgdGhlIGNsb3NlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gVGhlIHNpemUgb2YgdGhlIGNsb3NlIGJ1dHRvbiB0byB1c2UuXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IFRoZSBnaXZlbiBudW1iZXIgb3IgdGhlIHZhbHVlIGZvdW5kIGluIHRoZSBtYXAuXG5AZnVuY3Rpb24gLXpmLWdldC1zaXplLXZhbCgkdmFsdWUsICRzaXplKSB7XG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcbiAgICAvLyBJZiBpdCBpcywganVzdCByZXR1cm4gdGhlIG51bWJlclxuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHNpemUgbmFtZSBleGlzdHMgaW4gdGhlIHZhbHVlIG1hcFxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkdmFsdWUsICRzaXplKSB7XG4gICAgLy8gSWYgaXQgZG9lcywgcmV0dXJuIHRoZSB2YWx1ZVxuICAgIEByZXR1cm4gbWFwLWdldCgkdmFsdWUsICRzaXplKTtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgc2l6ZSBhbmQgcG9zaXRpb24gb2YgYSBjbG9zZSBidXR0b24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbbWVkaXVtXSAtIFRoZSBzaXplIHRvIHVzZS4gU2V0IHRvIGBzbWFsbGAgdG8gY3JlYXRlIGEgc21hbGwgY2xvc2UgYnV0dG9uLiBUaGUgJ21lZGl1bScgdmFsdWVzIGRlZmluZWQgaW4gYCRjbG9zZWJ1dHRvbi0qYCB2YXJpYWJsZXMgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHNpemUgYW5kIHBvc2l0aW9uIG9mIHRoZSBjbG9zZSBidXR0b24uXG5AbWl4aW4gY2xvc2UtYnV0dG9uLXNpemUoJHNpemUpIHtcbiAgJHg6IG50aCgkY2xvc2VidXR0b24tcG9zaXRpb24sIDEpO1xuICAkeTogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMik7XG5cbiAgI3skeH06IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsLCAkc2l6ZSk7XG4gICN7JHl9OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWwsICRzaXplKTtcbiAgZm9udC1zaXplOiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1zaXplLCAkc2l6ZSk7XG4gIGxpbmUtaGVpZ2h0OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0LCAkc2l6ZSk7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjbG9zZSBidXR0b24sIHVzaW5nIHRoZSBzdHlsZXMgaW4gdGhlIHNldHRpbmdzIHZhcmlhYmxlcy5cbkBtaXhpbiBjbG9zZS1idXR0b24ge1xuICAkeDogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMSk7XG4gICR5OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAyKTtcblxuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29sb3I6ICRjbG9zZWJ1dHRvbi1jb2xvcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkY2xvc2VidXR0b24tY29sb3ItaG92ZXI7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uIHtcbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgY2xvc2UtYnV0dG9uO1xuXG4gICAgJi5zbWFsbCB7IEBpbmNsdWRlIGNsb3NlLWJ1dHRvbi1zaXplKHNtYWxsKSB9XG4gICAgJiwgJi5tZWRpdW0geyBAaW5jbHVkZSBjbG9zZS1idXR0b24tc2l6ZShtZWRpdW0pIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZHJpbGxkb3duXG4vLy8vXG5cbi8vLyBUcmFuc2l0aW9uIHByb3BlcnR5IHRvIHVzZSBmb3IgYW5pbWF0aW5nIG1lbnVzLlxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiRkcmlsbGRvd24tdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGxpbmVhciAhZGVmYXVsdDtcblxuLy8vIEFkZHMgYXJyb3dzIHRvIGRyaWxsZG93biBpdGVtcyB3aXRoIHN1Ym1lbnVzLCBhcyB3ZWxsIGFzIHRoZSBiYWNrIGJ1dHRvbi5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZHJpbGxkb3duLWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJpbGxkb3duIGFycm93IGNvbG9yIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcmlsbGRvd24tYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gYXJyb3cgc2l6ZSBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIExlbmd0aFxuJGRyaWxsZG93bi1hcnJvdy1zaXplOiA2cHggIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcmlsbGRvd24gc3VibWVudXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcmlsbGRvd24tYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi1kcmlsbGRvd24tbWVudSB7XG4gIC8vIEFwcGxpZWQgdG8gdGhlIE1lbnUgY29udGFpbmVyXG4gIC5pcy1kcmlsbGRvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgbGkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJi5hbmltYXRlLWhlaWdodCB7XG4gICAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMC41cztcbiAgICB9XG4gIH1cblxuICAvLyBBcHBsaWVkIHRvIG5lc3RlZCA8dWw+c1xuICAuaXMtZHJpbGxkb3duLXN1Ym1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAxMDAlO1xuICAgIHotaW5kZXg6IC0xO1xuXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogJGRyaWxsZG93bi1iYWNrZ3JvdW5kO1xuICAgIHRyYW5zaXRpb246ICRkcmlsbGRvd24tdHJhbnNpdGlvbjtcblxuICAgICYuaXMtYWN0aXZlIHtcbiAgICAgIHotaW5kZXg6IDE7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IGx0ciwgLTEwMCUsIDEwMCUpKTtcbiAgICB9XG5cbiAgICAmLmlzLWNsb3Npbmcge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gbHRyLCAxMDAlLCAtMTAwJSkpO1xuICAgIH1cbiAgfVxuXG4gIC5kcmlsbGRvd24tc3VibWVudS1jb3Zlci1wcmV2aW91cyB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgfVxuXG4gIEBpZiAkZHJpbGxkb3duLWFycm93cyB7XG4gICAgLmlzLWRyaWxsZG93bi1zdWJtZW51LXBhcmVudCA+IGEge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJpbGxkb3duLWFycm93LXNpemUsICRkcmlsbGRvd24tYXJyb3ctY29sb3IsICRnbG9iYWwtcmlnaHQpO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBtYXJnaW4tdG9wOiAtMSAqICRkcmlsbGRvd24tYXJyb3ctc2l6ZTtcbiAgICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuanMtZHJpbGxkb3duLWJhY2sgPiBhOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcmlsbGRvd24tYXJyb3ctc2l6ZSwgJGRyaWxsZG93bi1hcnJvdy1jb2xvciwgJGdsb2JhbC1sZWZ0KTtcbiAgICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH0td2lkdGg6IDA7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDAuNzVyZW07IC8vIENyZWF0ZXMgc3BhY2UgYmV0d2VlbiB0aGUgYXJyb3cgYW5kIHRoZSB0ZXh0XG5cbiAgICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH0td2lkdGg6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcm9wZG93bi1tZW51XG4vLy8vXG5cbi8vLyBFbmFibGVzIGFycm93cyBmb3IgaXRlbXMgd2l0aCBkcm9wZG93biBtZW51cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZHJvcGRvd25tZW51LWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBhcnJvdyBjb2xvciBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd25tZW51LWFycm93LWNvbG9yOiAkYW5jaG9yLWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IGFycm93IHNpemUgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xuXG4vLy8gTWluaW11bSB3aWR0aCBvZiBkcm9wZG93biBzdWItbWVudXMuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LW1pbi13aWR0aDogMjAwcHggIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcm9wZG93bnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcm9wZG93bm1lbnUtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGZvciBkcm9wZG93biBzdWItbWVudXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3dubWVudS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vIEJvcmRlciB3aWR0aCBmb3IgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8gVXNlZCB0byBhZGp1c3QgdG9wIG1hcmdpbiBvZiBhIHN1Yi1tZW51IGlmIGEgYm9yZGVyIGlzIHVzZWQuXG4vLyBAdHlwZSBMZW5ndGhcbiRkcm9wZG93bm1lbnUtYm9yZGVyLXdpZHRoOiBudGgoJGRyb3Bkb3dubWVudS1ib3JkZXIsIDEpO1xuXG5AbWl4aW4gbGVmdC1yaWdodC1hcnJvd3Mge1xuICA+IGE6OmFmdGVyIHtcbiAgICAjeyRnbG9iYWwtcmlnaHR9OiAxNHB4O1xuICB9XG5cbiAgJi5vcGVucy1sZWZ0ID4gYTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGxlZnQpO1xuICB9XG5cbiAgJi5vcGVucy1yaWdodCA+IGE6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCByaWdodCk7XG4gIH1cbn1cblxuQG1peGluIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKCRkaXI6IGhvcml6b250YWwpIHtcbiAgQGlmICRkaXIgPT0gaG9yaXpvbnRhbCB7XG4gICAgPiBsaS5vcGVucy1sZWZ0IHtcbiAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgID4gbGkub3BlbnMtcmlnaHQge1xuICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcbiAgICAgID4gbGkuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQgPiBhIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06IDEuNXJlbTtcbiAgICAgIH1cblxuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgZG93bik7XG4gICAgICAgICN7JGdsb2JhbC1yaWdodH06IDVweDtcbiAgICAgICAgbWFyZ2luLXRvcDogLTEgKiAoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplIC8gMik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gdmVydGljYWwge1xuICAgID4gbGkge1xuICAgICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICB0b3A6IDA7XG4gICAgICB9XG5cbiAgICAgICYub3BlbnMtbGVmdCB7XG4gICAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5vcGVucy1yaWdodCB7XG4gICAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICAgIGxlZnQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcbiAgICAgICAgQGluY2x1ZGUgbGVmdC1yaWdodC1hcnJvd3M7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiAnVGhlIGRpcmVjdGlvbiB1c2VkIGZvciBkcm9wZG93bi1tZW51LWRpcmVjdGlvbigpIG11c3QgYmUgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbC4nO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnUge1xuICAuZHJvcGRvd24ubWVudSB7XG4gICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XG5cbiAgICBhIHtcbiAgICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgICB9XG5cbiAgICAubm8tanMgJiB1bCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICYudmVydGljYWwge1xuICAgICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xuICAgIH1cblxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICAgICYuI3skc2l6ZX0taG9yaXpvbnRhbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLiN7JHNpemV9LXZlcnRpY2FsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmFsaWduLXJpZ2h0IHtcbiAgICAgIC5pcy1kcm9wZG93bi1zdWJtZW51LmZpcnN0LXN1YiB7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmlzLWRyb3Bkb3duLW1lbnUudmVydGljYWwge1xuICAgIHdpZHRoOiAxMDBweDtcblxuICAgICYuYWxpZ24tcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgYTo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiA1cHg7XG4gICAgICBtYXJnaW4tdG9wOiAtMSAqICRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTtcbiAgICB9XG5cbiAgICAmLm9wZW5zLWlubmVyID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuXG4gICAgICB0b3A6IDEwMCU7XG4gICAgICBAaWYgJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSAncnRsJyB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICYub3BlbnMtbGVmdCA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgbGVmdDogYXV0bztcbiAgICB9XG5cbiAgICAmLm9wZW5zLXJpZ2h0ID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICBsZWZ0OiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgICN7JGdsb2JhbC1sZWZ0fTogMTAwJTtcbiAgICB6LWluZGV4OiAxO1xuXG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBtaW4td2lkdGg6ICRkcm9wZG93bm1lbnUtbWluLXdpZHRoO1xuXG4gICAgYm9yZGVyOiAkZHJvcGRvd25tZW51LWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kOiAkZHJvcGRvd25tZW51LWJhY2tncm91bmQ7XG5cbiAgICAuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQge1xuICAgICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcbiAgICAgICAgQGluY2x1ZGUgbGVmdC1yaWdodC1hcnJvd3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICh0eXBlLW9mKCRkcm9wZG93bm1lbnUtYm9yZGVyLXdpZHRoKSA9PSAnbnVtYmVyJykge1xuICAgICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICBtYXJnaW4tdG9wOiAoLSRkcm9wZG93bm1lbnUtYm9yZGVyLXdpZHRoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICA+IGxpIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC8vIFtUT0RPXSBDdXQgYmFjayBzcGVjaWZpY2l0eVxuICAgIC8vJjpub3QoLmpzLWRyb3Bkb3duLW5vaG92ZXIpID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50OmhvdmVyID4gJiwgLy8gd2h5IGlzIHRoaXMgbGluZSBuZWVkZWQ/IE9wZW5pbmcgaXMgaGFuZGxlZCBieSBKUyBhbmQgdGhpcyBjYXVzZXMgc29tZSB1Z2x5IGZsaWNrZXJpbmcgd2hlbiB0aGUgc3ViIGlzIHJlLXBvc2l0aW9uZWQgYXV0b21hdGljYWxseS4uLlxuICAgICYuanMtZHJvcGRvd24tYWN0aXZlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZHJvcGRvd25cbi8vLy9cblxuLy8vIFBhZGRpbmcgZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bi1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcm9wZG93bi1iYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBMaXN0XG4kZHJvcGRvd24tYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBMaXN0XG4kZHJvcGRvd24tZm9udC1zaXplOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gV2lkdGggZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3duLXdpZHRoOiAzMDBweCAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIFNpemVzIGZvciBkcm9wZG93biBwYW5lcy4gRWFjaCBzaXplIGlzIGEgQ1NTIGNsYXNzIHlvdSBjYW4gYXBwbHkuXG4vLy8gQHR5cGUgTWFwXG4kZHJvcGRvd24tc2l6ZXM6IChcbiAgdGlueTogMTAwcHgsXG4gIHNtYWxsOiAyMDBweCxcbiAgbGFyZ2U6IDQwMHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIEFwcGxpZXMgc3R5bGVzIGZvciBhIGJhc2ljIGRyb3Bkb3duLlxuQG1peGluIGRyb3Bkb3duLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTA7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAkZHJvcGRvd24td2lkdGg7XG4gIHBhZGRpbmc6ICRkcm9wZG93bi1wYWRkaW5nO1xuXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgYm9yZGVyOiAkZHJvcGRvd24tYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkZHJvcGRvd24tcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJvcGRvd24tYmFja2dyb3VuZDtcblxuICBmb250LXNpemU6ICRkcm9wZG93bi1mb250LXNpemU7XG5cbiAgJi5pcy1vcGVuIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWRyb3Bkb3duIHtcbiAgLmRyb3Bkb3duLXBhbmUge1xuICAgIEBpbmNsdWRlIGRyb3Bkb3duLWNvbnRhaW5lcjtcbiAgfVxuXG4gIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkZHJvcGRvd24tc2l6ZXMge1xuICAgIC5kcm9wZG93bi1wYW5lLiN7JG5hbWV9IHtcbiAgICAgIHdpZHRoOiAkc2l6ZTtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiBmb3VuZGF0aW9uLWZsZXgtY2xhc3NlcyB7XG4gIC8vIEhvcml6b250YWwgYWxpZ25tZW50IHVzaW5nIGp1c3RpZnktY29udGVudFxuICBAZWFjaCAkaGRpciwgJHByb3AgaW4gbWFwLXJlbW92ZSgkLXpmLWZsZXgtanVzdGlmeSwgbGVmdCkge1xuICAgIC5hbGlnbi0jeyRoZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR4OiAkaGRpcik7XG4gICAgfVxuICB9XG5cbiAgLy8gVmVydGljYWwgYWxpZ25tZW50IHVzaW5nIGFsaWduLWl0ZW1zIGFuZCBhbGlnbi1zZWxmXG4gIEBlYWNoICR2ZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtYWxpZ24ge1xuICAgIC5hbGlnbi0jeyR2ZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR5OiAkdmRpcik7XG4gICAgfVxuXG4gICAgLmFsaWduLXNlbGYtI3skdmRpcn0ge1xuICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbi1zZWxmKCR5OiAkdmRpcik7XG4gICAgfVxuICB9XG5cbiAgLy8gU291cmNlIG9yZGVyaW5nXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggNiB7XG4gICAgICAuI3skLXpmLXNpemV9LW9yZGVyLSN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1vcmRlcigkaSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCByZXNwb25zaXZlLWVtYmVkXG4vLy8vXG5cbi8vLyBNYXJnaW4gYmVsb3cgYSByZXNwb25zaXZlIGVtYmVkIGNvbnRhaW5lci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXNwb25zaXZlLWVtYmVkLW1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcblxuLy8vIEFzcGVjdCByYXRpb3MgdXNlZCB0byBkZXRlcm1pbmUgcGFkZGluZy1ib3R0b20gb2YgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXJzLlxuLy8vIEB0eXBlIE1hcFxuJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zOiAoXG4gIGRlZmF1bHQ6IDQgYnkgMyxcbiAgd2lkZXNjcmVlbjogMTYgYnkgOSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDcmVhdGVzIGEgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXIuXG4vLy8gQHBhcmFtIHtTdHJpbmd8TGlzdH0gJHJhdGlvIFtkZWZhdWx0XSAtIFJhdGlvIG9mIHRoZSBjb250YWluZXIuIENhbiBiZSBhIGtleSBmcm9tIHRoZSBgJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zYCBtYXAgb3IgYSBsaXN0IGZvcm1hdHRlZCBhcyBgeCBieSB5YC5cbkBtaXhpbiByZXNwb25zaXZlLWVtYmVkKCRyYXRpbzogZGVmYXVsdCkge1xuICBAaWYgdHlwZS1vZigkcmF0aW8pID09ICdzdHJpbmcnIHtcbiAgICAkcmF0aW86IG1hcC1nZXQoJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zLCAkcmF0aW8pO1xuICB9XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW4tYm90dG9tOiAkcmVzcG9uc2l2ZS1lbWJlZC1tYXJnaW4tYm90dG9tO1xuICBwYWRkaW5nLWJvdHRvbTogcmF0aW8tdG8tcGVyY2VudGFnZSgkcmF0aW8pO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIGlmcmFtZSxcbiAgb2JqZWN0LFxuICBlbWJlZCxcbiAgdmlkZW8ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1yZXNwb25zaXZlLWVtYmVkIHtcbiAgLnJlc3BvbnNpdmUtZW1iZWQsXG4gIC5mbGV4LXZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNwb25zaXZlLWVtYmVkKCRyYXRpbzogZGVmYXVsdCk7XG5cbiAgICAkcmF0aW9zOiBtYXAtcmVtb3ZlKCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvcyxkZWZhdWx0KTtcblxuICAgIEBlYWNoICRuYW1lLCAkcmF0aW8gaW4gJHJhdGlvcyB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHJhdGlvLXRvLXBlcmNlbnRhZ2UoJHJhdGlvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZmxleC12aWRlbyB7XG4gIEB3YXJuICdUaGlzIG1peGluIGlzIGJlaW5nIHJlcGxhY2VkIGJ5IGZvdW5kYXRpb24tcmVzcG9uc2l2ZS1lbWJlZCgpLiBmb3VuZGF0aW9uLWZsZXgtdmlkZW8oKSB3aWxsIGJlIHJlbW92ZWQgaW4gRm91bmRhdGlvbiA2LjQuJztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1yZXNwb25zaXZlLWVtYmVkO1xufVxuXG5AbWl4aW4gZmxleC12aWRlbygkcmF0aW86ICRyZXNwb25zaXZlLWVtYmVkLXJhdGlvKSB7XG4gIEB3YXJuICdUaGlzIG1peGluIGlzIGJlaW5nIHJlcGxhY2VkIGJ5IHJlc3BvbnNpdmUtZW1iZWQoKS4gZmxleC12aWRlbygpIHdpbGwgYmUgcmVtb3ZlZCBpbiBGb3VuZGF0aW9uIDYuNC4nO1xuICBAaW5jbHVkZSByZXNwb25zaXZlLWVtYmVkO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgbGFiZWxcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kbGFiZWwtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBDb2xvclxuJGxhYmVsLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBBbHRlcm5hdGUgdGV4dCBjb2xvciBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kbGFiZWwtY29sb3ItYWx0OiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcmluZyBjbGFzc2VzLiBBIG1hcCBvZiBjbGFzc2VzIHRvIG91dHB1dCBpbiB5b3VyIENTUywgbGlrZSBgLnNlY29uZGFyeWAsIGAuc3VjY2Vzc2AsIGFuZCBzbyBvbi5cbi8vLyBAdHlwZSBNYXBcbiRsYWJlbC1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsYWJlbC1mb250LXNpemU6IDAuOHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgbGFiZWxzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxhYmVsLXBhZGRpbmc6IDAuMzMzMzNyZW0gMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgb2YgbGFiZWxzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxhYmVsLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYmFzZSBzdHlsZXMgZm9yIGEgbGFiZWwuXG5AbWl4aW4gbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6ICRsYWJlbC1wYWRkaW5nO1xuXG4gIGJvcmRlci1yYWRpdXM6ICRsYWJlbC1yYWRpdXM7XG5cbiAgZm9udC1zaXplOiAkbGFiZWwtZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogMTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1sYWJlbCB7XG4gIC5sYWJlbCB7XG4gICAgQGluY2x1ZGUgbGFiZWw7XG5cbiAgICBiYWNrZ3JvdW5kOiAkbGFiZWwtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkbGFiZWwtcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkY29sb3IsICgkbGFiZWwtY29sb3IsICRsYWJlbC1jb2xvci1hbHQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG1lZGlhLW9iamVjdFxuLy8vL1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBhIG1lZGlhIG9iamVjdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIExlZnQgYW5kIHJpZ2h0IHBhZGRpbmcgb24gc2VjdGlvbnMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gV2lkdGggb2YgaW1hZ2VzIHdpdGhpbiBhIG1lZGlhIG9iamVjdCwgd2hlbiB0aGUgb2JqZWN0IGlzIHN0YWNrZWQgdmVydGljYWxseS4gU2V0IHRvICdhdXRvJyB0byB1c2UgdGhlIGltYWdlJ3MgbmF0dXJhbCB3aWR0aC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgbWVkaWEgb2JqZWN0IGNvbnRhaW5lci5cbkBtaXhpbiBtZWRpYS1vYmplY3QtY29udGFpbmVyIHtcbiAgZGlzcGxheTogaWYoJGdsb2JhbC1mbGV4Ym94LCBmbGV4LCBibG9jayk7XG4gIG1hcmdpbi1ib3R0b206ICRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3Igc2VjdGlvbnMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGluZyBbJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZ10gLSBQYWRkaW5nIGJldHdlZW4gc2VjdGlvbnMuXG5AbWl4aW4gbWVkaWEtb2JqZWN0LXNlY3Rpb24oJHBhZGRpbmc6ICRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmcpIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgfVxuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIHBhZGRpbmctI3skZ2xvYmFsLXJpZ2h0fTogJHBhZGRpbmc7XG4gIH1cblxuICAmOmxhc3QtY2hpbGQ6bm90KDpudGgtY2hpbGQoMikpIHtcbiAgICBwYWRkaW5nLSN7JGdsb2JhbC1sZWZ0fTogJHBhZGRpbmc7XG4gIH1cblxuICA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyB0byBzdGFjayBzZWN0aW9ucyBvZiBhIG1lZGlhIG9iamVjdC4gQXBwbHkgdGhpcyB0byB0aGUgc2VjdGlvbiBlbGVtZW50cywgbm90IHRoZSBjb250YWluZXIuXG5AbWl4aW4gbWVkaWEtb2JqZWN0LXN0YWNrIHtcbiAgcGFkZGluZzogMDtcbiAgcGFkZGluZy1ib3R0b206ICRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmc7XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgaW1nIHtcbiAgICB3aWR0aDogJG1lZGlhb2JqZWN0LWltYWdlLXdpZHRoLXN0YWNrZWQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tbWVkaWEtb2JqZWN0IHtcbiAgLm1lZGlhLW9iamVjdCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LWNvbnRhaW5lcjtcblxuICAgIGltZyB7XG4gICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAmLnN0YWNrLWZvci0jeyQtemYtemVyby1icmVha3BvaW50fSB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJC16Zi16ZXJvLWJyZWFrcG9pbnQgb25seSkge1xuICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2stZm9yLSN7JC16Zi16ZXJvLWJyZWFrcG9pbnR9IC5tZWRpYS1vYmplY3Qtc2VjdGlvbiB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtemVyby1icmVha3BvaW50IG9ubHkpIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LXN0YWNrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZWRpYS1vYmplY3Qtc2VjdGlvbiB7XG4gICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LXNlY3Rpb247XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICYubWFpbi1zZWN0aW9uIHtcbiAgICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJi5taWRkbGUge1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgfVxuXG4gICAgICAmLmJvdHRvbSB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBtZW51XG4vLy8vXG5cbi8vLyBNYXJnaW4gb2YgYSBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtbWFyZ2luOiAwICFkZWZhdWx0O1xuXG4vLy8gTGVmdC1oYW5kIG1hcmdpbiBvZiBhIG5lc3RlZCBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtbWFyZ2luLW5lc3RlZDogMXJlbSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgZm9yIGl0ZW1zIGluIGEgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LWl0ZW0tcGFkZGluZzogMC43cmVtIDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIGFuIGFjdGl2ZSBtZW51IGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRtZW51LWl0ZW0tY29sb3ItYWN0aXZlOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGFjdGl2ZSBtZW51IGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU6IGdldC1jb2xvcihwcmltYXJ5KSAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBhbiBpY29uIGFuZCB0ZXh0IGluIGEgbWVudSBpdGVtLlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgYW4gaG92ZXJlZCBtZW51IGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRtZW51LWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBmb3IgYm9yZGVyZWQgbWVudVxuLy8vIEB0eXBlIENvbG9yXG4kbWVudS1ib3JkZXI6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQ3JlYXRlcyB0aGUgYmFzZSBzdHlsZXMgZm9yIGEgTWVudS5cbkBtaXhpbiBtZW51LWJhc2Uge1xuICBtYXJnaW46ICRtZW51LW1hcmdpbjtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIExpc3QgaXRlbXMgYXJlIHRhYmxlIGNlbGwgdG8gYWxsb3cgZm9yIHZlcnRpY2FsIGFsaWdubWVudFxuICA+IGxpIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCBsaW5lIGhlaWdodCB0byBtYWtlIHRoZSBoZWlnaHQgb2YgdGhlIG92ZXJhbGwgaXRlbSBlYXNpZXIgdG8gY2FsY3VsYXRlXG4gID4gbGkgPiBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkbWVudS1pdGVtLXBhZGRpbmc7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gIH1cblxuICAvLyBSZXNldCBzdHlsZXMgb2YgaW5uZXIgZWxlbWVudHNcbiAgaW5wdXQsXG4gIHNlbGVjdCxcbiAgYSxcbiAgYnV0dG9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBFeHBhbmRzIHRoZSBpdGVtcyBvZiBhIE1lbnUsIHNvIGVhY2ggaXRlbSBpcyB0aGUgc2FtZSB3aWR0aC5cbkBtaXhpbiBtZW51LWV4cGFuZCB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgID4gbGkge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gIH1cblxuICA+IGxpOmZpcnN0LWNoaWxkOmxhc3QtY2hpbGQge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgYSBNZW51LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpciBbaG9yaXpvbnRhbF0gLSBEaXJlY3Rpb24gb2YgdGhlIE1lbnUuIENhbiBiZSBgaG9yaXpvbnRhbGAgb3IgYHZlcnRpY2FsYC5cbkBtaXhpbiBtZW51LWRpcmVjdGlvbigkZGlyOiBob3Jpem9udGFsKSB7XG4gIEBpZiAkZGlyID09IGhvcml6b250YWwge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7XG5cbiAgICAgID4gbGkge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgPiBsaSB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gdmVydGljYWwge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICA+IGxpIHtcbiAgICAgICAgZmxleDogMCAwIDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgPiBsaSAgPiBhIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgPiBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ1RoZSBkaXJlY3Rpb24gdXNlZCBmb3IgbWVudS1kaXJlY3Rpb24oKSBtdXN0IGJlIGhvcml6b250YWwgb3IgdmVydGljYWwuJztcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIHNpbXBsZSBNZW51LCB3aGljaCBoYXMgbm8gcGFkZGluZyBvciBob3ZlciBzdGF0ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgWyRnbG9iYWwtbGVmdF0gLSBEaXJlY3Rpb24gb2YgdGhlIG1lbnUuIFNldCB0byBgbnVsbGAgdG8gZG8gbm90IGdlbmVyYXRlIHN0eWxlcyBmb3IgZGlyZWN0aW9uLlxuQG1peGluIG1lbnUtc2ltcGxlKCRkaXI6ICRnbG9iYWwtbGVmdCkge1xuICBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gIH1cblxuICBhIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgQGlmICRkaXIgIT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVudS1zaW1wbGUtZGlyZWN0aW9uKCRkaXIpO1xuICB9XG59XG5cbi8vLyBEaXJlY3Rpb24gbW9kaWZpZXIgZm9yIGEgc2ltcGxlIE1lbnVcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgWyRnbG9iYWwtbGVmdF0gLSBEaXJlY3Rpb24gb2YgdGhlIG1lbnVcbkBtaXhpbiBtZW51LXNpbXBsZS1kaXJlY3Rpb24oJGRpcjogJGdsb2JhbC1sZWZ0KSB7XG4gICRuby1tYXJnaW4tZGlyOiAkZGlyO1xuICAkbWFyZ2luLWRpcjogZGlyZWN0aW9uLW9wcG9zaXRlKCRkaXIpO1xuXG4gIGxpIHtcbiAgICBtYXJnaW4tI3skbm8tbWFyZ2luLWRpcn06IDA7XG4gICAgbWFyZ2luLSN7JG1hcmdpbi1kaXJ9OiBnZXQtc2lkZSgkbWVudS1pdGVtLXBhZGRpbmcsICRtYXJnaW4tZGlyKTtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgbmVzdGVkIE1lbnUsIGJ5IGFkZGluZyBgbWFyZ2luLWxlZnRgIHRvIHRoZSBtZW51LlxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRwYWRkaW5nIFthdXRvXSAtIExlbmd0aCBvZiB0aGUgbWFyZ2luLlxuQG1peGluIG1lbnUtbmVzdGVkKCRtYXJnaW46ICRtZW51LW1hcmdpbi1uZXN0ZWQpIHtcbiAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJG1hcmdpbjtcbn1cblxuLy8vIEFkZHMgc3VwcG9ydCBmb3IgaWNvbnMgdG8gTWVudSBpdGVtcy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRwb3NpdGlvbiBbc2lkZV0gLSBQb3NpdGlvbmluZyBmb3IgaWNvbnMuIENhbiBiZSBgc2lkZWAgKGxlZnQsIG9yIHJpZ2h0IG9uIFJUTCkgb3IgYHRvcGAuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkYmFzZSBbdHJ1ZV0gLSBTZXQgdG8gYGZhbHNlYCB0byBwcmV2ZW50IHRoZSBzaGFyZWQgQ1NTIGJldHdlZW4gc2lkZS0gYW5kIHRvcC1hbGlnbmVkIGljb25zIGZyb20gYmVpbmcgcHJpbnRlZC4gU2V0IHRoaXMgdG8gYGZhbHNlYCBpZiB5b3UncmUgY2FsbGluZyB0aGUgbWl4aW4gbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUgZWxlbWVudC5cbkBtaXhpbiBtZW51LWljb25zKCRwb3NpdGlvbjogc2lkZSwgJGJhc2U6IHRydWUpIHtcbiAgQGlmICRiYXNlIHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgID4gbGkgPiBhIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgPiBsaSA+IGEge1xuICAgICAgICBpbWcsXG4gICAgICAgIGksXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgICAgICAgICsgc3BhbiB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkcG9zaXRpb24gPT0gc2lkZSB7XG4gICAgPiBsaSA+IGEge1xuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgaW1nLFxuICAgICAgaSxcbiAgICAgIHN2ZyB7XG4gICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkbWVudS1pY29uLXNwYWNpbmc7XG5cbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcbiAgICA+IGxpID4gYSB7XG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIGltZyxcbiAgICAgIGksXG4gICAgICBzdmcge1xuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgbWFyZ2luOiAwIGF1dG8gJG1lbnUtaWNvbi1zcGFjaW5nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRtZW51LWljb24tc3BhY2luZztcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1lbnUtdGV4dCB7XG4gIHBhZGRpbmctdG9wOiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgcGFkZGluZzogJG1lbnUtaXRlbS1wYWRkaW5nO1xuXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW1lbnUge1xuICAubWVudSB7XG4gICAgQGluY2x1ZGUgbWVudS1iYXNlO1xuICAgIEBpbmNsdWRlIG1lbnUtaWNvbnM7XG5cbiAgICAvLyBEZWZhdWx0IG9yaWVudGF0aW9uOiBob3Jpem9udGFsXG4gICAgJiwgJi5ob3Jpem9udGFsIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuICAgIH1cblxuICAgIC8vIEV2ZW4td2lkdGggbW9kaWZpZXIgZm9yIGhvcml6b250YWwgb3JpZW50YXRpb25cbiAgICAmLmV4cGFuZGVkIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtZXhwYW5kO1xuICAgIH1cblxuICAgIC8vIFZlcnRpY2FsIG9yaWVudGF0aW9uIG1vZGlmaWVyXG4gICAgJi52ZXJ0aWNhbCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgkc21hbGw6IGZhbHNlKSB7XG4gICAgICAmLiN7JC16Zi1zaXplfS1ob3Jpem9udGFsIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XG4gICAgICB9XG5cbiAgICAgICYuI3skLXpmLXNpemV9LWV4cGFuZGVkIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG4gICAgICB9XG5cbiAgICAgICYuI3skLXpmLXNpemV9LXZlcnRpY2FsIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNpbXBsZVxuICAgICYuc2ltcGxlIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtc2ltcGxlO1xuXG4gICAgICAmLmFsaWduLSN7JGdsb2JhbC1yaWdodH0ge1xuICAgICAgICBAaW5jbHVkZSBtZW51LXNpbXBsZS1kaXJlY3Rpb24oJGdsb2JhbC1yaWdodCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWxpZ24gcmlnaHRcbiAgICAmLmFsaWduLSN7JGdsb2JhbC1yaWdodH0ge1xuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICAgICAgID4gbGkge1xuICAgICAgICAgIGZsb2F0OiAkZ2xvYmFsLXJpZ2h0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVmVydGljYWwgaWNvbnNcbiAgICAmLmljb24tdG9wIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbnModG9wLCAkYmFzZTogZmFsc2UpO1xuICAgICAgLy8gTWFrZSB2ZXJ0aWNhbCBtZW51IHdpdGggaWNvbnMgb24gdG9wIHdvcmtcbiAgICAgICYudmVydGljYWwge1xuICAgICAgICBhID4gc3BhbiB7XG4gICAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmVzdGluZ1xuICAgICYubmVzdGVkIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkO1xuICAgIH1cblxuICAgIC8vIEFjdGl2ZSBzdGF0ZVxuICAgIC5hY3RpdmUgPiBhIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgICBjb2xvcjogJG1lbnUtaXRlbS1jb2xvci1hY3RpdmU7XG4gICAgfVxuXG4gICAgLy8gTWVudSB3aXRoIGJvcmRlclxuICAgICYubWVudS1ib3JkZXJlZCB7XG4gICAgICBsaSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRtZW51LWJvcmRlcjtcbiAgICAgICAgJjpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgICAgYm9yZGVyLXRvcDogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1lbnUgd2l0aCBiYWNrZ3JvdW5kIGhvdmVyXG4gICAgJi5tZW51LWhvdmVyIHtcbiAgICAgIGxpOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWhvdmVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZW51LXRleHQge1xuICAgIEBpbmNsdWRlIG1lbnUtdGV4dDtcbiAgfVxuXG4gIC8vIEFsaWduIGNlbnRlclxuICAubWVudS1jZW50ZXJlZCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgPiAubWVudSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIH1cbiAgfVxuXG4gIC8vIFByZXZlbnQgRk9VQyB3aGVuIHVzaW5nIHRoZSBSZXNwb25zaXZlIE1lbnUgcGx1Z2luXG4gIC5uby1qcyBbZGF0YS1yZXNwb25zaXZlLW1lbnVdIHVsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iLCJAbWl4aW4gZm91bmRhdGlvbi1tZW51LWljb24ge1xuICAubWVudS1pY29uIHtcbiAgICBAaW5jbHVkZSBoYW1idXJnZXIoJGNvbG9yOiAkdGl0bGViYXItaWNvbi1jb2xvciwgJGNvbG9yLWhvdmVyOiAkdGl0bGViYXItaWNvbi1jb2xvci1ob3Zlcik7XG4gIH1cblxuICAubWVudS1pY29uLmRhcmsge1xuICAgIEBpbmNsdWRlIGhhbWJ1cmdlcjtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgb2ZmLWNhbnZhc1xuLy8vL1xuXG4vLy8gV2lkdGggb2YgYSBsZWZ0L3JpZ2h0IG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLXNpemU6IDI1MHB4ICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgdG9wL2JvdHRvbSBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplOiAyNTBweCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gb2ZmLWNhbnZhcyBwYW5lbC5cbi8vLyBAdHlwZSBDb2xvclxuJG9mZmNhbnZhcy1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgZm9yIHRoZSBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIFNoYWRvd1xuJG9mZmNhbnZhcy1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoJGJsYWNrLCAwLjcpICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIHBhbmVsIHdpdGggdGhlIGBwdXNoYCB0cmFuc2l0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy1wdXNoLXppbmRleDogMSAhZGVmYXVsdDtcblxuLy8vIFotaW5kZXggb2YgYW4gb2ZmLWNhbnZhcyBwYW5lbCB3aXRoIHRoZSBgb3ZlcmxhcGAgdHJhbnNpdGlvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXg6IDEwICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIHBhbmVsIHVzaW5nIHRoZSBgcmV2ZWFsLWZvci0qYCBjbGFzc2VzIG9yIG1peGluLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4OiAxICFkZWZhdWx0O1xuXG4vLy8gTGVuZ3RoIG9mIHRoZSBhbmltYXRpb24gb24gYW4gb2ZmLWNhbnZhcyBwYW5lbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGg6IDAuNXMgIWRlZmF1bHQ7XG5cbi8vLyBUaW1pbmcgZnVuY3Rpb24gb2YgdGhlIGFuaW1hdGlvbiBvbiBhbiBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc6IGVhc2UgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGEgcmV2ZWFsZWQgb2ZmLWNhbnZhcyB3aWxsIGJlIGZpeGVkLXBvc2l0aW9uLCBhbmQgc2Nyb2xsIHdpdGggdGhlIHNjcmVlbi5cbi8vLyBAdHlwZSBCb29sXG4kb2ZmY2FudmFzLWZpeGVkLXJldmVhbDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBvdmVybGF5IHRoYXQgYXBwZWFycyB3aGVuIGFuIG9mZi1jYW52YXMgcGFuZWwgaXMgb3Blbi5cbi8vLyBAdHlwZSBDb2xvclxuJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ6IHJnYmEoJHdoaXRlLCAwLjI1KSAhZGVmYXVsdDtcblxuLy8vIENTUyBjbGFzcyB1c2VkIGZvciB0aGUgbWFpbiBjb250ZW50IGFyZWEuIFRoZSBvZmYtY2FudmFzIG1peGlucyB1c2UgdGhpcyB0byB0YXJnZXQgdGhlIHBhZ2UgY29udGVudC5cbiRtYWluY29udGVudC1jbGFzczogJ29mZi1jYW52YXMtY29udGVudCcgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIGJhc2VsaW5lIHN0eWxlcyBmb3Igb2ZmLWNhbnZhcy4gVGhpcyBDU1MgaXMgcmVxdWlyZWQgdG8gbWFrZSB0aGUgb3RoZXIgcGllY2VzIHdvcmsuXG5AbWl4aW4gb2ZmLWNhbnZhcy1iYXNpY3Mge1xuICAvLyBIaWRlcyBvdmVyZmxvdyBvbiBib2R5IHdoZW4gYW4gb2ZmLWNhbnZhcyBwYW5lbCBpcyBvcGVuLlxuICAuaXMtb2ZmLWNhbnZhcy1vcGVuIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBvdmVybGF5IChnZW5lcmF0ZWQgYnkgSmF2YVNjcmlwdClcbiAgLmpzLW9mZi1jYW52YXMtb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoICRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmcsIHZpc2liaWxpdHkgJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nO1xuXG4gICAgYmFja2dyb3VuZDogJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ7XG5cbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmLmlzLXZpc2libGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgfVxuXG4gICAgJi5pcy1jbG9zYWJsZSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgJi5pcy1vdmVybGF5LWFic29sdXRlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG4gICAgXG4gICAgJi5pcy1vdmVybGF5LWZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB9XG4gIH1cbn1cblxuLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGFuIG9mZi1jYW52YXMgd3JhcHBlci5cbkBtaXhpbiBvZmYtY2FudmFzLXdyYXBwZXIoKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBhbiBvZmYtY2FudmFzIHBhbmVsLlxuQG1peGluIG9mZi1jYW52YXMtYmFzZShcbiAgJGJhY2tncm91bmQ6ICRvZmZjYW52YXMtYmFja2dyb3VuZCxcbiAgJHRyYW5zaXRpb246ICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZyxcbiAgJGZpeGVkOiB0cnVlXG4pIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuXG4gIEBpZiAkZml4ZWQgPT0gdHJ1ZSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICB6LWluZGV4OiAkb2ZmY2FudmFzLXB1c2gtemluZGV4O1xuXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkdHJhbnNpdGlvbjtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuXG4gIC8vIE92ZXJsYXAgb25seSBzdHlsZXMuXG4gICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwIHtcbiAgICB6LWluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4O1xuXG4gICAgJi5pcy1vcGVuIHtcbiAgICAgIGJveC1zaGFkb3c6ICRvZmZjYW52YXMtc2hhZG93O1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldHMgdHJhbnNmb3JtIHRvIDAgdG8gc2hvdyBhbiBvZmYtY2FudmFzIHBhbmVsLlxuICAmLmlzLW9wZW4ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyB0byBwb3NpdGlvbiBhbiBvZmYtY2FudmFzIHBhbmVsIHRvIHRoZSBsZWZ0L3JpZ2h0L3RvcC9ib3R0b20uXG5AbWl4aW4gb2ZmLWNhbnZhcy1wb3NpdGlvbihcbiAgJHBvc2l0aW9uOiBsZWZ0LFxuICAkb3JpZW50YXRpb246IGhvcml6b250YWwsXG4gICRzaXplOiBpZigkb3JpZW50YXRpb24gPT0gaG9yaXpvbnRhbCwgJG9mZmNhbnZhcy1zaXplLCAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemUpXG4pIHtcbiAgQGlmICRwb3NpdGlvbiA9PSBsZWZ0IHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0kc2l6ZSk7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgJi5pcy1vcGVuIH4gLiN7JG1haW5jb250ZW50LWNsYXNzfSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHNpemUpO1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gcmlnaHQge1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRzaXplKTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcbiAgICAmLmlzLW9wZW4gfiAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtJHNpemUpO1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcblxuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJHNpemU7XG5cbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcbiAgICAmLmlzLW9wZW4gfiAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkc2l6ZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBib3R0b20ge1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkc2l6ZSk7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgJi5pcy1vcGVuIH4gLiN7JG1haW5jb250ZW50LWNsYXNzfSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcbiAgICB9XG4gIH1cblxuICAvLyBJZiAkb2ZmY2FudmFzLXNoYWRvdyBpcyBzZXQsIGFkZCBpdCBhcyBhIHBzZXVkby1lbGVtZW50LlxuICAvLyBUaGlzIG1pbWljcyB0aGUgb2ZmLWNhbnZhcyBwYW5lbCBoYXZpbmcgYSBsb3dlciB6LWluZGV4LCB3aXRob3V0IGhhdmluZyB0byBoYXZlIG9uZS5cbiAgQGlmICRvZmZjYW52YXMtc2hhZG93IHtcbiAgICAmLmlzLXRyYW5zaXRpb24tcHVzaDo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gICAgICBAaWYgJHBvc2l0aW9uID09IGxlZnQge1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuXG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRwb3NpdGlvbiA9PSByaWdodCB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcblxuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAxcHg7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuXG4gICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBib3R0b20ge1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG5cbiAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICBib3gtc2hhZG93OiAkb2ZmY2FudmFzLXNoYWRvdztcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5vIHRyYW5zZm9ybSBvbiBvdmVybGFwIHRyYW5zaXRpb25cbiAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB+IC4jeyRtYWluY29udGVudC1jbGFzc30ge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgc3R5bGVzIGZvciB0aGUgY29udGVudCBjb250YWluZXIuXG5AbWl4aW4gb2ZmLWNhbnZhcy1jb250ZW50KCkge1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi8vLyBBZGRzIHN0eWxlcyB0aGF0IHJldmVhbCBhbiBvZmYtY2FudmFzIHBhbmVsLlxuQG1peGluIG9mZi1jYW52YXMtcmV2ZWFsKFxuJHBvc2l0aW9uOiBsZWZ0LFxuJHppbmRleDogJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4LFxuJGNvbnRlbnQ6ICRtYWluY29udGVudC1jbGFzc1xuKSB7XG4gIHRyYW5zZm9ybTogbm9uZTtcbiAgei1pbmRleDogJHppbmRleDtcblxuICBAaWYgbm90ICRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICAmIH4gLiN7JGNvbnRlbnR9IHtcbiAgICBtYXJnaW4tI3skcG9zaXRpb259OiAkb2ZmY2FudmFzLXNpemU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tb2ZmLWNhbnZhcyB7XG4gIEBpbmNsdWRlIG9mZi1jYW52YXMtYmFzaWNzO1xuXG4gIC8vIE9mZi1jYW52YXMgd3JhcHBlclxuICAub2ZmLWNhbnZhcy13cmFwcGVyIHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXdyYXBwZXI7XG4gIH1cblxuICAvLyBPZmYtY2FudmFzIGNvbnRhaW5lclxuICAub2ZmLWNhbnZhcyB7XG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNlO1xuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBjb250YWluZXIgd2l0aCBhYnNvbHV0ZSBwb3NpdGlvblxuICAub2ZmLWNhbnZhcy1hYnNvbHV0ZSB7XG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNlKCRmaXhlZDogZmFsc2UpO1xuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBwb3NpdGlvbiBjbGFzc2VzXG4gIC5wb3NpdGlvbi1sZWZ0ICAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihsZWZ0LCAgIGhvcml6b250YWwpOyB9XG4gIC5wb3NpdGlvbi1yaWdodCAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihyaWdodCwgIGhvcml6b250YWwpOyB9XG4gIC5wb3NpdGlvbi10b3AgICAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbih0b3AsICAgIHZlcnRpY2FsKTsgfVxuICAucG9zaXRpb24tYm90dG9tICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24oYm90dG9tLCB2ZXJ0aWNhbCk7IH1cblxuICAub2ZmLWNhbnZhcy1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLWNvbnRlbnQ7XG4gIH1cblxuICAvLyBSZXZlYWwgb2ZmLWNhbnZhcyBwYW5lbCBvbiBsYXJnZXIgc2NyZWVuc1xuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpZiAkbmFtZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIC5wb3NpdGlvbi1sZWZ0LnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKGxlZnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBvc2l0aW9uLXJpZ2h0LnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKHJpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wb3NpdGlvbi10b3AucmV2ZWFsLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwodG9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wb3NpdGlvbi1ib3R0b20ucmV2ZWFsLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwoYm90dG9tKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBvcmJpdFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgT3JiaXQncyBidWxsZXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYWN0aXZlIGNvbG9yIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGRpYW1ldGVyIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LWRpYW1ldGVyOiAxLjJyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBiZXR3ZWVuIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1idWxsZXQtbWFyZ2luOiAwLjFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGRpc3RhbmNlIGZyb20gc2xpZGUgcmVnaW9uIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbi10b3A6IDAuOHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBmcm9tIE9yYml0J3MgYnVsbGV0cyB0byB3aGF0ZXZlciBjb250ZW50IG1heSBsdXJrIGJlbG93IGl0LlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWJ1bGxldC1tYXJnaW4tYm90dG9tOiAwLjhyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIE9yYml0J3MgY2FwdGlvbi5cbi8vLyBAdHlwZSBDb2xvclxuJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIE9yYml0J3MgY2FwdGlvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jYXB0aW9uLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIE9yYml0J3MgY29udHJvbHMgd2hlbiBob3ZlcmVkLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKCRibGFjaywgMC41KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgT3JiaXQncyBjb250cm9scy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jb250cm9sLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHotaW5kZXggZm9yIE9yYml0J3MgY29udHJvbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtY29udHJvbC16aW5kZXg6IDEwICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBvdXRlciBPcmJpdCB3cmFwcGVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXRgIGNsYXNzLlxuQG1peGluIG9yYml0LXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGlubmVyIE9yYml0IHNsaWRlIGNvbnRhaW5lci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWNvbnRhaW5lcmAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDA7IC8vIFByZXZlbnQgRk9VQyBieSBub3Qgc2hvd2luZyB1bnRpbCBKUyBzZXRzIGhlaWdodFxuICBtYXJnaW46IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGluZGl2aWR1YWwgc2xpZGVzIG9mIGFuIE9yYml0IHNsaWRlci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LXNsaWRlYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1zbGlkZSB7XG4gIHdpZHRoOiAxMDAlO1xuXG4gICYubm8tbW90aW9udWkge1xuICAgICYuaXMtYWN0aXZlIHtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBvcmJpdC1maWd1cmUge1xuICBtYXJnaW46IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzbGlkZSBjb250YWluaW5nIGFuIGltYWdlLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtaW1hZ2VgIGNsYXNzLlxuQG1peGluIG9yYml0LWltYWdlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIG9yYml0IHNsaWRlIGNhcHRpb24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1jYXB0aW9uYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1jYXB0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBwYWRkaW5nOiAkb3JiaXQtY2FwdGlvbi1wYWRkaW5nO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQ7XG4gIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQpO1xufVxuXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgdGhlIG5leHQvcHJldmlvdXMgYnV0dG9ucyBpbiBhbiBPcmJpdCBzbGlkZXIuIFRoZXNlIHN0eWxlcyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlIGAub3JiaXQtbmV4dGAgYW5kIGAub3JiaXQtcHJldmlvdXNgIGNsYXNzZXMgaW4gdGhlIGRlZmF1bHQgQ1NTLlxuQG1peGluIG9yYml0LWNvbnRyb2wge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlcjtcbiAgei1pbmRleDogJG9yYml0LWNvbnRyb2wtemluZGV4O1xuICBwYWRkaW5nOiAkb3JiaXQtY29udHJvbC1wYWRkaW5nO1xuICBjb2xvcjogJHdoaXRlO1xuXG4gICY6aG92ZXIsXG4gICY6YWN0aXZlLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIE9yYml0IHByZXZpb3VzIGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LXByZXZpb3VzYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1wcmV2aW91cyB7XG4gICN7JGdsb2JhbC1sZWZ0fTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgT3JiaXQgbmV4dCBidXR0b24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1uZXh0YCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1uZXh0IHtcbiAgI3skZ2xvYmFsLWxlZnR9OiBhdXRvO1xuICAjeyRnbG9iYWwtcmlnaHR9OiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY29udGFpbmVyIG9mIE9yYml0IGJ1bGxldHMuIC8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIE9yYml0IHByZXZpb3VzIGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWJ1bGxldHNgIGNsYXNzLlxuQG1peGluIG9yYml0LWJ1bGxldHMge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLXRvcDogJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wO1xuICBtYXJnaW4tYm90dG9tOiAkb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b207XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBidXR0b24ge1xuICAgIHdpZHRoOiAkb3JiaXQtYnVsbGV0LWRpYW1ldGVyO1xuICAgIGhlaWdodDogJG9yYml0LWJ1bGxldC1kaWFtZXRlcjtcbiAgICBtYXJnaW46ICRvcmJpdC1idWxsZXQtbWFyZ2luO1xuXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1idWxsZXQtYmFja2dyb3VuZDtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICB9XG5cbiAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1vcmJpdCB7XG4gIC5vcmJpdCB7XG4gICAgQGluY2x1ZGUgb3JiaXQtd3JhcHBlcjtcbiAgfVxuXG4gIC5vcmJpdC1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIG9yYml0LWNvbnRhaW5lcjtcbiAgfVxuXG4gIC5vcmJpdC1zbGlkZSB7XG4gICAgQGluY2x1ZGUgb3JiaXQtc2xpZGU7XG4gIH1cblxuICAub3JiaXQtZmlndXJlIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1maWd1cmU7XG4gIH1cblxuICAub3JiaXQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIG9yYml0LWltYWdlO1xuICB9XG5cbiAgLm9yYml0LWNhcHRpb24ge1xuICAgIEBpbmNsdWRlIG9yYml0LWNhcHRpb247XG4gIH1cblxuICAlb3JiaXQtY29udHJvbCB7XG4gICAgQGluY2x1ZGUgb3JiaXQtY29udHJvbDtcbiAgfVxuXG4gIC5vcmJpdC1wcmV2aW91cyB7XG4gICAgQGV4dGVuZCAlb3JiaXQtY29udHJvbDtcbiAgICBAaW5jbHVkZSBvcmJpdC1wcmV2aW91cztcbiAgfVxuXG4gIC5vcmJpdC1uZXh0IHtcbiAgICBAZXh0ZW5kICVvcmJpdC1jb250cm9sO1xuICAgIEBpbmNsdWRlIG9yYml0LW5leHQ7XG4gIH1cblxuICAub3JiaXQtYnVsbGV0cyB7XG4gICAgQGluY2x1ZGUgb3JiaXQtYnVsbGV0cztcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcGFnaW5hdGlvblxuLy8vL1xuXG4vLy8gRm9udCBzaXplIG9mIHBhZ2luYXRpb24gaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1mb250LXNpemU6IHJlbS1jYWxjKDE0KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBvZiB0aGUgcGFnaW5hdGlvbiBvYmplY3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgb2YgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZzogcmVtLWNhbGMoMyAxMCkgIWRlZmF1bHQ7XG5cbi8vLyBSaWdodCBtYXJnaW4gdG8gc2VwYXJhdGUgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLWl0ZW0tc3BhY2luZzogcmVtLWNhbGMoMSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3IgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHBhZ2luYXRpb24gaXRlbXMgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHBhZ2luYXRpb24gaXRlbSBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiB0aGUgcGFnaW5hdGlvbiBpdGVtIGZvciB0aGUgY3VycmVudCBwYWdlLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWN1cnJlbnQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYSBkaXNhYmxlZCBwYWdpbmF0aW9uIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRoZSBlbGxpcHNpcyBpbiBhIHBhZ2luYXRpb24gbWVudS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIElmIGBmYWxzZWAsIGRvbid0IGRpc3BsYXkgcGFnZSBudW1iZXIgbGlua3Mgb24gbW9iaWxlLCBvbmx5IG5leHQvcHJldmlvdXMgbGlua3Ncbi8vLyBhbmQgb3B0aW9uYWxseSBjdXJyZW50IHBhZ2UgbnVtYmVyLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGRpc3BsYXkgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgb24gbW9iaWxlIGV2ZW4gaWYgYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtc2AgaXMgc2V0IHRvIGBmYWxzZWAuXG4vLy8gVGhpcyBwYXJhbWV0ZXIgd2lsbCBvbmx5IG92ZXJyaWRlIHRoZSB2aXNpYmlsaXR5IHNldHRpbmcgb2YgdGhlIGN1cnJlbnQgaXRlbSBmb3IgYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2U7YCxcbi8vLyBpdCB3aWxsIG5vdCBhZmZlY3QgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgdmlzaWJpbGl0eSB3aGVuIGAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXNgIGlzIHNldCB0byBgdHJ1ZWAuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGFycm93cyBhcmUgYWRkZWQgdG8gdGhlIG5leHQgYW5kIHByZXZpb3VzIGxpbmtzIG9mIHBhZ2luYXRpb24uXG4vLy8gQHR5cGUgQm9vbGVhblxuJHBhZ2luYXRpb24tYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgcGFnaW5hdGlvbiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gYSBgPHVsPmAuXG5AbWl4aW4gcGFnaW5hdGlvbi1jb250YWluZXIgKFxuICAkbWFyZ2luLWJvdHRvbTogJHBhZ2luYXRpb24tbWFyZ2luLWJvdHRvbSxcbiAgJGZvbnQtc2l6ZTogJHBhZ2luYXRpb24tZm9udC1zaXplLFxuICAkc3BhY2luZzogJHBhZ2luYXRpb24taXRlbS1zcGFjaW5nLFxuICAkcmFkaXVzOiAkcGFnaW5hdGlvbi1yYWRpdXMsXG4gICRjb2xvcjogJHBhZ2luYXRpb24taXRlbS1jb2xvcixcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlclxuKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcblxuICAvLyBMaXN0IGl0ZW1cbiAgbGkge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcblxuICAgIEBpZiAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXMge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAmOmxhc3QtY2hpbGQsXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgfVxuXG4gICAgICBAaWYgJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbSB7XG4gICAgICAgICYuY3VycmVudCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYWdlIGxpbmtzXG4gIGEsXG4gIGJ1dHRvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogJHBhZGRpbmc7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgY29sb3I6ICRjb2xvcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtaG92ZXI7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGN1cnJlbnQgcGFnaW5hdGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIGFuIGA8YT5gLlxuQG1peGluIHBhZ2luYXRpb24taXRlbS1jdXJyZW50IChcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcbiAgJGJhY2tncm91bmQtY3VycmVudDogJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQsXG4gICRjb2xvci1jdXJyZW50OiAkcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWN1cnJlbnRcbikge1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtY3VycmVudDtcbiAgY29sb3I6ICRjb2xvci1jdXJyZW50O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBkaXNhYmxlZCBwYWdpbmF0aW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gYW4gYDxhPmAuXG5AbWl4aW4gcGFnaW5hdGlvbi1pdGVtLWRpc2FibGVkIChcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcbiAgJGNvbG9yOiAkcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWRpc2FibGVkXG4pIHtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBlbGxpcHNpcyBmb3IgdXNlIGluIGEgcGFnaW5hdGlvbiBsaXN0LlxuQG1peGluIHBhZ2luYXRpb24tZWxsaXBzaXMgKFxuICAkcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nLFxuICAkY29sb3I6ICRwYWdpbmF0aW9uLWVsbGlwc2lzLWNvbG9yXG4pIHtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIGNvbnRlbnQ6ICdcXDIwMjYnO1xuICBjb2xvcjogJGNvbG9yO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wYWdpbmF0aW9uIHtcbiAgLnBhZ2luYXRpb24ge1xuICAgIEBpbmNsdWRlIHBhZ2luYXRpb24tY29udGFpbmVyO1xuXG4gICAgLmN1cnJlbnQge1xuICAgICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1pdGVtLWN1cnJlbnQ7XG4gICAgfVxuXG4gICAgLmRpc2FibGVkIHtcbiAgICAgIEBpbmNsdWRlIHBhZ2luYXRpb24taXRlbS1kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAuZWxsaXBzaXM6OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIHBhZ2luYXRpb24tZWxsaXBzaXM7XG4gICAgfVxuICB9XG5cbiAgQGlmICRwYWdpbmF0aW9uLWFycm93cyB7XG4gICAgLnBhZ2luYXRpb24tcHJldmlvdXMgYTo6YmVmb3JlLFxuICAgIC5wYWdpbmF0aW9uLXByZXZpb3VzLmRpc2FibGVkOjpiZWZvcmUge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDAuNXJlbTtcbiAgICAgIGNvbnRlbnQ6ICdcXDAwYWInO1xuICAgIH1cblxuICAgIC5wYWdpbmF0aW9uLW5leHQgYTo6YWZ0ZXIsXG4gICAgLnBhZ2luYXRpb24tbmV4dC5kaXNhYmxlZDo6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMC41cmVtO1xuICAgICAgY29udGVudDogJ1xcMDBiYic7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHByb2dyZXNzIGJhciBjb250YWluZXIuXG5AbWl4aW4gcHJvZ3Jlc3MtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAkcHJvZ3Jlc3MtaGVpZ2h0O1xuICBtYXJnaW4tYm90dG9tOiAkcHJvZ3Jlc3MtbWFyZ2luLWJvdHRvbTtcbiAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLWJhY2tncm91bmQ7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGlubmVyIG1ldGVyIG9mIGEgcHJvZ3Jlc3MgYmFyLlxuQG1peGluIHByb2dyZXNzLW1ldGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kO1xuXG4gIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGV4dCBpbiB0aGUgcHJvZ3Jlc3MgbWV0ZXIuXG5AbWl4aW4gcHJvZ3Jlc3MtbWV0ZXItdGV4dCB7XG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm9ncmVzcy1iYXIge1xuICAvLyBQcm9ncmVzcyBiYXJcbiAgLnByb2dyZXNzIHtcbiAgICBAaW5jbHVkZSBwcm9ncmVzcy1jb250YWluZXI7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIC5wcm9ncmVzcy1tZXRlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSW5uZXIgbWV0ZXJcbiAgLnByb2dyZXNzLW1ldGVyIHtcbiAgICBAaW5jbHVkZSBwcm9ncmVzcy1tZXRlcjtcbiAgfVxuXG4gIC8vIElubmVyIG1ldGVyIHRleHRcbiAgLnByb2dyZXNzLW1ldGVyLXRleHQge1xuICAgIEBpbmNsdWRlIHByb2dyZXNzLW1ldGVyLXRleHQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHJldmVhbFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEgbW9kYWwuXG4vLy8gQHR5cGUgQ29sb3JcbiRyZXZlYWwtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB3aWR0aCBvZiBhIG1vZGFsLCB3aXRoIG5vIGNsYXNzIGFwcGxpZWQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLXdpZHRoOiA2MDBweCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWF4aW11bSB3aWR0aCBvZiBhIG1vZGFsLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC1tYXgtd2lkdGg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGEgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIGFyb3VuZCBhIG1vZGFsLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3IgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyB6LWluZGV4IGZvciBtb2RhbHMuIFRoZSBvdmVybGF5IHVzZXMgdGhpcyB2YWx1ZSwgd2hpbGUgdGhlIG1vZGFsIGl0c2VsZiB1c2VzIHRoaXMgdmFsdWUgcGx1cyBvbmUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLXppbmRleDogMTAwNSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgbW9kYWwgb3ZlcmxheXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRyZXZlYWwtb3ZlcmxheS1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC40NSkgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBtb2RhbCBvdmVybGF5LlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBvdmVybGF5LlxuQG1peGluIHJldmVhbC1vdmVybGF5KCRiYWNrZ3JvdW5kOiAkcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZCkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHJldmVhbC16aW5kZXg7XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbn1cblxuLy8vIEFkZHMgYmFzZSBzdHlsZXMgZm9yIGEgbW9kYWwuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLWJhc2Uge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHotaW5kZXg6ICRyZXZlYWwtemluZGV4ICsgMTtcbiAgLy8gV29ya2Fyb3VuZCBhbmRyb2lkIGJyb3dzZXIgei1pbmRleCBidWdcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBhZGRpbmc6ICRyZXZlYWwtcGFkZGluZztcblxuICBib3JkZXI6ICRyZXZlYWwtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkcmV2ZWFsLXJhZGl1cztcbiAgYmFja2dyb3VuZC1jb2xvcjogJHJldmVhbC1iYWNrZ3JvdW5kO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgbWluLWhlaWdodDogMDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSByb3dzIGRvbid0IGhhdmUgYSBtaW4td2lkdGggb24gdGhlbVxuICAuY29sdW1uLFxuICAuY29sdW1ucyB7XG4gICAgbWluLXdpZHRoOiAwO1xuICB9XG5cbiAgLy8gU3RyaXAgbWFyZ2lucyBmcm9tIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIG1vZGFsXG4gID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEFkanVzdHMgdGhlIHdpZHRoIG9mIGEgbW9kYWwuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBtb2RhbC4gR2VuZXJhbGx5IGEgcGVyY2VudGFnZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heC13aWR0aCBbJHJldmVhbC1tYXgtd2lkdGhdIC0gTWF4aW11bSB3aWR0aCBvZiB0aGUgbW9kYWwuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLXdpZHRoKFxuICAkd2lkdGg6ICRyZXZlYWwtd2lkdGgsXG4gICRtYXgtd2lkdGg6ICRyZXZlYWwtbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICBAZXh0ZW5kICVyZXZlYWwtY2VudGVyZWQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXgtd2lkdGg6ICRyZXZlYWwtbWF4LXdpZHRoO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgZnVsbC1zY3JlZW4gbW9kYWwsIHdoaWNoIHN0cmV0Y2hlcyB0aGUgZnVsbCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLWZ1bGxzY3JlZW4ge1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG5cbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogbm9uZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBoZWlnaHQ6IDEwMHZoOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLWR1cGxpY2F0ZS1wcm9wZXJ0aWVzXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXJldmVhbCB7XG4gIC8vIFtUT0RPXSBJcyB0aGlzIG5lY2Vzc2FyeT9cbiAgYm9keS5pcy1yZXZlYWwtb3BlbiB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICAvLyBodG1sIGdldHMgdGhpcyBjbGFzcyBvbmx5IGluIGlPU1xuICBodG1sLmlzLXJldmVhbC1vcGVuLFxuICBodG1sLmlzLXJldmVhbC1vcGVuIGJvZHkge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxuXG4gIC8vIE92ZXJsYXlcbiAgLnJldmVhbC1vdmVybGF5IHtcbiAgICBAaW5jbHVkZSByZXZlYWwtb3ZlcmxheTtcbiAgfVxuXG4gIC8vIE1vZGFsIGNvbnRhaW5lclxuICAucmV2ZWFsIHtcbiAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtYmFzZTtcbiAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoJHJldmVhbC13aWR0aCk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogMTAwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAvLyBQbGFjZWhvbGRlciBzZWxlY3RvciBmb3IgbWVkaXVtLWFuZC11cCBtb2RhbHNcbiAgICAvLyBQcmV2ZW50cyBkdXBsaWNhdGUgQ1NTIHdoZW4gZGVmaW5pbmcgbXVsdGlwbGUgUmV2ZWFsIHNpemVzXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICVyZXZlYWwtY2VudGVyZWQge1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHBhZGRpbmdcbiAgICAmLmNvbGxhcHNlIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLy8gU2l6aW5nIGNsYXNzZXNcbiAgICAmLnRpbnkgIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDMwJSk7IH1cbiAgICAmLnNtYWxsIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDUwJSk7IH1cbiAgICAmLmxhcmdlIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDkwJSk7IH1cblxuICAgIC8vIEZ1bGwtc2NyZWVuIG1vZGVcbiAgICAmLmZ1bGwge1xuICAgICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLWZ1bGxzY3JlZW47XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXplcm8tYnJlYWtwb2ludCBvbmx5KSB7XG4gICAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbjtcbiAgICB9XG5cbiAgICAmLndpdGhvdXQtb3ZlcmxheSB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gW1RPRE9dIENoZWNrIGhvdyBwbHVnaW4gY29uZmlybXMgZGlzYWJsZWQgb3IgdmVydGljYWwgc3RhdHVzXG4vLyBbVE9ET10gQ2hlY2sgaWYgdHJhbnNpdGlvbjogYWxsOyBpcyBuZWNlc3NhcnlcblxuLy8vL1xuLy8vIEBncm91cCBzbGlkZXJcbi8vLy9cblxuLy8vIERlZmF1bHQgc2xpZGVyIHdpZHRoIG9mIGEgdmVydGljYWwgc2xpZGVyLiAoRG9lc24ndCBhcHBseSB0byB0aGUgbmF0aXZlIHNsaWRlci4pXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLXdpZHRoLXZlcnRpY2FsOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUcmFuc2l0aW9uIHByb3BlcnRpZXMgdG8gYXBwbHkgdG8gdGhlIHNsaWRlciBoYW5kbGUgYW5kIGZpbGwuIChEb2Vzbid0IGFwcGx5IHRvIHRoZSBuYXRpdmUgc2xpZGVyLilcbi8vLyBAdHlwZSBUcmFuc2l0aW9uXG4kc2xpZGVyLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHNsaWRlcnMuXG5AbWl4aW4gc2xpZGVyLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcbiAgbWFyZ2luLXRvcDogMS4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMi4yNXJlbTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2xpZGVyLWJhY2tncm91bmQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHRvdWNoLWFjdGlvbjogbm9uZTtcbn1cblxuLy8vIEFkZHMgdGhlIGdlbmVyYWwgc3R5bGVzIGZvciBhY3RpdmUgZmlsbCBmb3Igc2xpZGVycy5cbkBtaXhpbiBzbGlkZXItZmlsbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kO1xuICB0cmFuc2l0aW9uOiAkc2xpZGVyLXRyYW5zaXRpb247XG5cbiAgJi5pcy1kcmFnZ2luZyB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDBzIGxpbmVhcjtcbiAgfVxufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHRoZSBzbGlkZXIgaGFuZGxlcy5cbkBtaXhpbiBzbGlkZXItaGFuZGxlIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG5cbiAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzbGlkZXItdHJhbnNpdGlvbjtcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogc2NhbGUtY29sb3IoJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSk7XG4gIH1cblxuICAmLmlzLWRyYWdnaW5nIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMHMgbGluZWFyO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZXItZGlzYWJsZWQge1xuICBvcGFjaXR5OiAkc2xpZGVyLW9wYWNpdHktZGlzYWJsZWQ7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbkBtaXhpbiBzbGlkZXItdmVydGljYWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc2xpZGVyLXdpZHRoLXZlcnRpY2FsO1xuICBoZWlnaHQ6IDEyLjVyZW07XG4gIG1hcmdpbjogMCAxLjI1cmVtO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEsIC0xKTtcblxuICAuc2xpZGVyLWZpbGwge1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogJHNsaWRlci13aWR0aC12ZXJ0aWNhbDtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgLnNsaWRlci1oYW5kbGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogNTAlO1xuICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tc2xpZGVyIHtcbiAgLy8gQ29udGFpbmVyXG4gIC5zbGlkZXIge1xuICAgIEBpbmNsdWRlIHNsaWRlci1jb250YWluZXI7XG4gIH1cblxuICAvLyBGaWxsIGFyZWFcbiAgLnNsaWRlci1maWxsIHtcbiAgICBAaW5jbHVkZSBzbGlkZXItZmlsbDtcbiAgfVxuXG4gIC8vIERyYWdnYWJsZSBoYW5kbGVcbiAgLnNsaWRlci1oYW5kbGUge1xuICAgIEBpbmNsdWRlIHNsaWRlci1oYW5kbGU7XG4gIH1cblxuICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAuc2xpZGVyLmRpc2FibGVkLFxuICAuc2xpZGVyW2Rpc2FibGVkXSB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLWRpc2FibGVkO1xuICB9XG5cbiAgLy8gVmVydGljYWwgc2xpZGVyXG4gIC5zbGlkZXIudmVydGljYWwge1xuICAgIEBpbmNsdWRlIHNsaWRlci12ZXJ0aWNhbDtcbiAgfVxuXG4gIC8vIFJUTCBzdXBwb3J0XG4gIEBpZiAkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCB7XG4gICAgLnNsaWRlcjpub3QoLnZlcnRpY2FsKSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AbWl4aW4gZm91bmRhdGlvbi1zdGlja3kge1xuICAuc3RpY2t5LWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLnN0aWNreSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIC5zdGlja3kuaXMtc3R1Y2sge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiA1O1xuXG4gICAgJi5pcy1hdC10b3Age1xuICAgICAgdG9wOiAwO1xuICAgIH1cblxuICAgICYuaXMtYXQtYm90dG9tIHtcbiAgICAgIGJvdHRvbTogMDtcbiAgICB9XG4gIH1cblxuICAuc3RpY2t5LmlzLWFuY2hvcmVkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcblxuICAgICYuaXMtYXQtYm90dG9tIHtcbiAgICAgIGJvdHRvbTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHN3aXRjaFxuLy8vL1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIHN3aXRjaC5cbi8vLyBAdHlwZSBDb2xvclxuJHN3aXRjaC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGFjdGl2ZSBjb2xvciBvZiBhIHN3aXRjaC5cbi8vLyBAdHlwZSBDb2xvclxuJHN3aXRjaC1iYWNrZ3JvdW5kLWFjdGl2ZTogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2gsIHdpdGggbm8gY2xhc3MgYXBwbGllZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0OiAycmVtICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoIHdpdGggLnRpbnkgY2xhc3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodC10aW55OiAxLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2ggd2l0aCAuc21hbGwgY2xhc3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodC1zbWFsbDogMS43NXJlbSAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCB3aXRoIC5sYXJnZSBjbGFzcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0LWxhcmdlOiAyLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIG9mIHRoZSBzd2l0Y2hcbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIGJvcmRlciBhcm91bmQgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtbWFyZ2luOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBzd2l0Y2ggY29udGFpbmVyIGFuZCBwYWRkbGUuXG4vLy8gQHR5cGUgQ29sb3JcbiRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBhIHN3aXRjaCBwYWRkbGUgYW5kIHRoZSBlZGdlIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtb2Zmc2V0OiAwLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gYm9yZGVyIHJhZGl1cyBvZiB0aGUgc3dpdGNoIHBhZGRsZVxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIHN3aXRjaCB0cmFuc2l0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG4vLyBtYWtlIHRoZW0gdmFyaWFibGVzXG4vLyBhc2sgYWJvdXQgYWNjZXNzaWJpbGl0eSBvbiBsYWJlbFxuLy8gY2hhbmdlIGNsYXNzIG5hbWUgZm9yIHRleHRcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN3aXRjaCBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gYSBjb250YWluZXIgY2xhc3MuXG5AbWl4aW4gc3dpdGNoLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogJHN3aXRjaC1tYXJnaW47XG4gIG91dGxpbmU6IDA7XG5cbiAgLy8gVGhlc2UgcHJvcGVydGllcyBjYXNjYWRlIGRvd24gdG8gdGhlIHN3aXRjaCB0ZXh0XG4gIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICR3aGl0ZTtcblxuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN3aXRjaCBpbnB1dC4gQXBwbHkgdGhpcyB0byBhbiBgPGlucHV0PmAgd2l0aGluIGEgc3dpdGNoLlxuQG1peGluIHN3aXRjaC1pbnB1dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgb3BhY2l0eTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYmFja2dyb3VuZCBhbmQgcGFkZGxlIG9mIGEgc3dpdGNoLiBBcHBseSB0aGlzIHRvIGEgYDxsYWJlbD5gIHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtcGFkZGxlIHtcbiAgJHN3aXRjaC13aWR0aDogJHN3aXRjaC1oZWlnaHQgKiAyO1xuICAkcGFkZGxlLWhlaWdodDogJHN3aXRjaC1oZWlnaHQgLSAoJHN3aXRjaC1wYWRkbGUtb2Zmc2V0ICogMik7XG4gICRwYWRkbGUtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRzd2l0Y2gtcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q6ICRzd2l0Y2gtd2lkdGggLSAkcGFkZGxlLXdpZHRoIC0gJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAkc3dpdGNoLXdpZHRoO1xuICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xuXG4gIGJvcmRlci1yYWRpdXM6ICRzd2l0Y2gtcmFkaXVzO1xuICBiYWNrZ3JvdW5kOiAkc3dpdGNoLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb247XG5cbiAgLy8gUmVzZXR0aW5nIHRoZXNlIDxsYWJlbD4gcHJlc2V0cyBzbyB0eXBlIHN0eWxlcyBjYXNjYWRlIGRvd25cbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAvLyBOZWVkZWQgdG8gb3ZlcnJpZGUgc3BlY2lmaWNpdHlcbiAgaW5wdXQgKyAmIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBUaGUgcGFkZGxlIGl0c2VsZlxuICAmOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICRwYWRkbGUtd2lkdGg7XG4gICAgaGVpZ2h0OiAkcGFkZGxlLWhlaWdodDtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgYm9yZGVyLXJhZGl1czogJHN3aXRjaC1wYWRkbGUtcmFkaXVzO1xuICAgIGJhY2tncm91bmQ6ICRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ7XG4gICAgdHJhbnNpdGlvbjogJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjtcbiAgICBjb250ZW50OiAnJztcbiAgfVxuXG4gIC8vIENoYW5nZSB0aGUgdmlzdWFsIHN0eWxlIHdoZW4gdGhlIHN3aXRjaCBpcyBhY3RpdmVcbiAgaW5wdXQ6Y2hlY2tlZCB+ICYge1xuICAgIGJhY2tncm91bmQ6ICRzd2l0Y2gtYmFja2dyb3VuZC1hY3RpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAjeyRnbG9iYWwtbGVmdH06ICRwYWRkbGUtYWN0aXZlLW9mZmVzdDtcbiAgICB9XG4gIH1cblxuICBpbnB1dDpmb2N1cyB+ICYge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgfVxufVxuXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgYWN0aXZlL2luYWN0aXZlIHRleHQgaW5zaWRlIGEgc3dpdGNoLiBBcHBseSB0aGlzIHRvIHRleHQgZWxlbWVudHMgaW5zaWRlIHRoZSBzd2l0Y2ggYDxsYWJlbD5gLlxuQG1peGluIHN3aXRjaC10ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBhY3RpdmUgc3RhdGUgdGV4dCB3aXRoaW4gYSBzd2l0Y2guXG5AbWl4aW4gc3dpdGNoLXRleHQtYWN0aXZlIHtcbiAgI3skZ2xvYmFsLWxlZnR9OiA4JTtcbiAgZGlzcGxheTogbm9uZTtcblxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgPiAmIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBpbmFjdGl2ZSBzdGF0ZSB0ZXh0IHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtdGV4dC1pbmFjdGl2ZSB7XG4gICN7JGdsb2JhbC1yaWdodH06IDE1JTtcblxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgPiAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSBzaXplIG9mIGEgc3dpdGNoIGJ5IG1vZGlmeWluZyB0aGUgc2l6ZSBvZiB0aGUgYm9keSBhbmQgcGFkZGxlLiBBcHBseSB0aGlzIHRvIGEgc3dpdGNoIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZvbnQtc2l6ZSBbMXJlbV0gLSBGb250IHNpemUgb2YgbGFiZWwgdGV4dCB3aXRoaW4gdGhlIHN3aXRjaC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHN3aXRjaC1oZWlnaHQgWzJyZW1dIC0gSGVpZ2h0IG9mIHRoZSBzd2l0Y2ggYm9keS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHBhZGRsZS1vZmZzZXQgWzAuMjVyZW1dIC0gU3BhY2luZyBiZXR3ZWVuIHRoZSBzd2l0Y2ggcGFkZGxlIGFuZCB0aGUgZWRnZSBvZiB0aGUgc3dpdGNoIGJvZHkuXG5AbWl4aW4gc3dpdGNoLXNpemUoXG4gICRmb250LXNpemU6IDFyZW0sXG4gICRzd2l0Y2gtaGVpZ2h0OiAycmVtLFxuICAkcGFkZGxlLW9mZnNldDogMC4yNXJlbVxuKSB7XG5cbiAgJHN3aXRjaC13aWR0aDogJHN3aXRjaC1oZWlnaHQgKiAyO1xuICAkcGFkZGxlLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAtICgkcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLWhlaWdodDogJHN3aXRjaC1oZWlnaHQgLSAoJHBhZGRsZS1vZmZzZXQgKiAyKTtcbiAgJHBhZGRsZS1hY3RpdmUtb2ZmZXN0OiAkc3dpdGNoLXdpZHRoIC0gJHBhZGRsZS13aWR0aCAtICRwYWRkbGUtb2Zmc2V0O1xuXG4gIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XG5cbiAgLnN3aXRjaC1wYWRkbGUge1xuICAgIHdpZHRoOiAkc3dpdGNoLXdpZHRoO1xuICAgIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICB9XG5cbiAgLnN3aXRjaC1wYWRkbGU6OmFmdGVyIHtcbiAgICB0b3A6ICRwYWRkbGUtb2Zmc2V0O1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1vZmZzZXQ7XG4gICAgd2lkdGg6ICRwYWRkbGUtd2lkdGg7XG4gICAgaGVpZ2h0OiAkcGFkZGxlLWhlaWdodDtcbiAgfVxuXG4gIGlucHV0OmNoZWNrZWQgfiAuc3dpdGNoLXBhZGRsZTo6YWZ0ZXIge1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1hY3RpdmUtb2ZmZXN0O1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXN3aXRjaCB7XG4gIC8vIENvbnRhaW5lciBjbGFzc1xuICAuc3dpdGNoIHtcbiAgICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xuICAgIEBpbmNsdWRlIHN3aXRjaC1jb250YWluZXI7XG4gIH1cblxuICAvLyA8aW5wdXQ+IGVsZW1lbnRcbiAgLnN3aXRjaC1pbnB1dCB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLWlucHV0O1xuICB9XG5cbiAgLy8gPGxhYmVsPiBlbGVtZW50XG4gIC5zd2l0Y2gtcGFkZGxlIHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtcGFkZGxlO1xuICB9XG5cbiAgLy8gQmFzZSBsYWJlbCB0ZXh0IHN0eWxlc1xuICAlc3dpdGNoLXRleHQge1xuICAgIEBpbmNsdWRlIHN3aXRjaC10ZXh0O1xuICB9XG5cbiAgLy8gQWN0aXZlIGxhYmVsIHRleHQgc3R5bGVzXG4gIC5zd2l0Y2gtYWN0aXZlIHtcbiAgICBAZXh0ZW5kICVzd2l0Y2gtdGV4dDtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dC1hY3RpdmU7XG4gIH1cblxuICAvLyBJbmFjdGl2ZSBsYWJlbCB0ZXh0IHN0eWxlc1xuICAuc3dpdGNoLWluYWN0aXZlIHtcbiAgICBAZXh0ZW5kICVzd2l0Y2gtdGV4dDtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dC1pbmFjdGl2ZTtcbiAgfVxuXG4gIC8vIFN3aXRjaCBzaXplc1xuICAuc3dpdGNoLnRpbnkge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDEwKSwgJHN3aXRjaC1oZWlnaHQtdGlueSwgJHN3aXRjaC1wYWRkbGUtb2Zmc2V0KTtcbiAgfVxuXG4gIC5zd2l0Y2guc21hbGwge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDEyKSwgJHN3aXRjaC1oZWlnaHQtc21hbGwsICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XG4gIH1cblxuICAuc3dpdGNoLmxhcmdlIHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtc2l6ZShyZW0tY2FsYygxNiksICRzd2l0Y2gtaGVpZ2h0LWxhcmdlLCAkc3dpdGNoLXBhZGRsZS1vZmZzZXQpO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Fzcy1saW50OmRpc2FibGUgZm9yY2UtZWxlbWVudC1uZXN0aW5nLCBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGFibGVcbi8vLy9cblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIHRhYmxlIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1iYWNrZ3JvdW5kOiAkd2hpdGUgICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBzY2FsZSBmb3IgZGFya2VuaW5nIHRoZSBzdHJpcGVkIHRhYmxlIHJvd3MgYW5kIHRoZSB0YWJsZSBib3JkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtY29sb3Itc2NhbGU6IDUlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBzdHlsZSBmb3IgdGFibGUgYm9yZGVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1ib3JkZXI6IDFweCBzb2xpZCBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgdGFibGUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtcGFkZGluZzogcmVtLWNhbGMoOCAxMCAxMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHNjYWxlIGZvciBkYXJrZW5pbmcgdGhlIHRhYmxlIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtaG92ZXItc2NhbGU6IDIlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBzdGFuZGFyZCByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2Ygc3RyaXBlZCByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSArICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIHRhYmxlcyBhcmUgc3RyaXBlZCBieSBkZWZhdWx0IGFuZCBhbiAudW5zdHJpcGVkIGNsYXNzIGlzIGNyZWF0ZWQuIElmIGBmYWxzZWAsIGEgLnN0cmlwZWQgY2xhc3MgaXMgY3JlYXRlZC5cbi8vLyBAdHlwZSBCb29sZWFuXG4kdGFibGUtaXMtc3RyaXBlZDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3Igc3RyaXBlZCByb3dzLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHNob3dpbmcgdGhlIHN0cmlwZSBvbiByb3dzIG9mIHRoZSB0YWJsZXMsIGV4Y2x1ZGluZyB0aGUgaGVhZGVyIGFuZCBmb290ZXIuIElmIGV2ZW4sIHRoZSBldmVuIHJvd3Mgd2lsbCBoYXZlIGEgYmFja2dyb3VuZCBjb2xvci4gSWYgb2RkLCB0aGUgb2RkIHJvd3Mgd2lsbCBoYXZlIGEgYmFja2dyb3VuZCBjb2xvci4gSWYgZW1wdHksIG9yIGFueSBvdGhlciB2YWx1ZSwgdGhlIHRhYmxlIHJvd3Mgd2lsbCBoYXZlIG5vIHN0cmlwaW5nLlxuLy8vIEB0eXBlIEtleXdvcmRcbiR0YWJsZS1zdHJpcGU6IGV2ZW4gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBoZWFkZXIgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLWhlYWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSAvIDIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBoZWFkZXIgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtaGVhZC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtaGVhZC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgZm9vdGVyIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1mb290LWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBmb290ZXIgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtZm9vdC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtZm9vdC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBoZWFkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1oZWFkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGZvb3Rlci5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLWZvb3QtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHNob3dpbmcgdGhlIGhlYWRlciB3aGVuIHVzaW5nIHN0YWNrZWQgdGFibGVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRzaG93LWhlYWRlci1mb3Itc3RhY2tlZDogZmFsc2UgIWRlZmF1bHQ7XG5cbkBtaXhpbiAtemYtdGFibGUtc3RyaXBlKCRzdHJpcGU6ICR0YWJsZS1zdHJpcGUpIHtcbiAgdHIge1xuICAgIC8vIElmIHN0cmlwZSBpcyBzZXQgdG8gZXZlbiwgZGFya2VuIHRoZSBldmVuIHJvd3MuXG4gICAgQGlmICRzdHJpcGUgPT0gZXZlbiB7XG4gICAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgc3RyaXBlIGlzIHNldCB0byBvZGQsIGRhcmtlbiB0aGUgb2RkIHJvd3MuXG4gICAgQGVsc2UgaWYgJHN0cmlwZSA9PSBvZGQge1xuICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiAtemYtdGFibGUtdW5zdHJpcGUoKSB7XG4gIHRyIHtcbiAgICBib3JkZXItYm90dG9tOiAwO1xuICAgIGJvcmRlci1ib3R0b206ICR0YWJsZS1ib3JkZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIC16Zi10YWJsZS1jaGlsZHJlbi1zdHlsZXMoJHN0cmlwZTogJHRhYmxlLXN0cmlwZSwgJGlzLXN0cmlwZWQ6ICR0YWJsZS1pcy1zdHJpcGVkKSB7XG4gIHRoZWFkLFxuICB0Ym9keSxcbiAgdGZvb3Qge1xuICAgIGJvcmRlcjogJHRhYmxlLWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmFja2dyb3VuZDtcbiAgfVxuXG4gIC8vIENhcHRpb25cbiAgY2FwdGlvbiB7XG4gICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gIH1cblxuICAvLyBUYWJsZSBoZWFkXG4gIHRoZWFkIHtcbiAgICBiYWNrZ3JvdW5kOiAkdGFibGUtaGVhZC1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkdGFibGUtaGVhZC1mb250LWNvbG9yO1xuICB9XG5cbiAgLy8gVGFibGUgZm9vdFxuICB0Zm9vdCB7XG4gICAgYmFja2dyb3VuZDogJHRhYmxlLWZvb3QtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHRhYmxlLWZvb3QtZm9udC1jb2xvcjtcbiAgfVxuXG4gIC8vIFRhYmxlIGhlYWQgYW5kIGZvb3RcbiAgdGhlYWQsXG4gIHRmb290IHtcbiAgICAvLyBSb3dzIHdpdGhpbiBoZWFkIGFuZCBmb290XG4gICAgdHIge1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgLy8gQ2VsbHMgd2l0aGluIGhlYWQgYW5kIGZvb3RcbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiAkdGFibGUtcGFkZGluZztcbiAgICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICAgICAgdGV4dC1hbGlnbjogI3skZ2xvYmFsLWxlZnR9O1xuICAgIH1cbiAgfVxuXG4gIC8vIFRhYmxlIHJvd3NcbiAgdGJvZHkge1xuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgIHBhZGRpbmc6ICR0YWJsZS1wYWRkaW5nO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRhYmxlcyBhcmUgc3RyaXBlZFxuICBAaWYgJGlzLXN0cmlwZWQgPT0gdHJ1ZSB7XG4gICAgdGJvZHkge1xuICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXN0cmlwZSgkc3RyaXBlKTtcbiAgICB9XG5cbiAgICAmLnVuc3RyaXBlZCB7XG4gICAgICB0Ym9keSB7XG4gICAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS11bnN0cmlwZSgpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmFja2dyb3VuZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiB0YWJsZXMgYXJlIG5vdCBzdHJpcGVkXG4gIEBlbHNlIGlmICRpcy1zdHJpcGVkID09IGZhbHNlIHtcbiAgICB0Ym9keSB7XG4gICAgICBAaW5jbHVkZSAtemYtdGFibGUtdW5zdHJpcGUoKTtcbiAgICB9XG5cbiAgICAmLnN0cmlwZWQge1xuICAgICAgdGJvZHkge1xuICAgICAgICBAaW5jbHVkZSAtemYtdGFibGUtc3RyaXBlKCRzdHJpcGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHRhYmxlcy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzdHJpcGUgWyR0YWJsZS1zdHJpcGVdIC0gVXNlcyBrZXl3b3JkcyBldmVuLCBvZGQsIG9yIG5vbmUgdG8gZGFya2VuIHJvd3Mgb2YgdGhlIHRhYmxlLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBldmVuLlxuQG1peGluIHRhYmxlKFxuICAkc3RyaXBlOiAkdGFibGUtc3RyaXBlLFxuICAkbmVzdDogZmFsc2Vcbikge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4gIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4gIEBpZiAkbmVzdCB7XG4gICAgQGluY2x1ZGUgLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgdGhlIGFiaWxpdHkgdG8gaG9yaXpvbnRhbGx5IHNjcm9sbCB0aGUgdGFibGUgd2hlbiB0aGUgY29udGVudCBvdmVyZmxvd3MgaG9yaXpvbnRhbGx5LlxuQG1peGluIHRhYmxlLXNjcm9sbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteDogYXV0bztcbn1cblxuLy8vIFNsaWdodGx5IGRhcmtlbnMgdGhlIHRhYmxlIHJvd3Mgb24gaG92ZXIuXG5AbWl4aW4gdGFibGUtaG92ZXIge1xuICB0aGVhZCB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSB0YWJsZSBoZWFkZXIgcm93cyBvbiBob3Zlci5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1oZWFkLXJvdy1ob3ZlcjtcbiAgICB9XG4gIH1cblxuICB0Zm9vdCB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSB0YWJsZSBmb290ZXIgcm93cyBvbiBob3Zlci5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1mb290LXJvdy1ob3ZlcjtcbiAgICB9XG4gIH1cblxuICB0Ym9keSB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSBub24tc3RyaXBlZCB0YWJsZSByb3dzIG9uIGhvdmVyLlxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1ob3ZlcjtcbiAgICB9XG4gIH1cblxuICBAaWYgJHRhYmxlLWlzLXN0cmlwZWQgPT0gdHJ1ZSB7XG4gICAgLy8gRGFya2VucyB0aGUgZXZlbiBzdHJpcGVkIHRhYmxlIHJvd3MuXG4gICAgQGlmKCR0YWJsZS1zdHJpcGUgPT0gZXZlbikge1xuICAgICAgJjpub3QoLnVuc3RyaXBlZCkgdHI6bnRoLW9mLXR5cGUoZXZlbik6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYXJrZW5zIHRoZSBvZGQgc3RyaXBlZCB0YWJsZSByb3dzLlxuICAgIEBlbHNlaWYoJHRhYmxlLXN0cmlwZSA9PSBvZGQpIHtcbiAgICAgICY6bm90KC51bnN0cmlwZWQpIHRyOm50aC1vZi10eXBlKG9kZCk6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAkdGFibGUtaXMtc3RyaXBlZCA9PSBmYWxzZSB7XG4gICAgLy8gRGFya2VucyB0aGUgZXZlbiBzdHJpcGVkIHRhYmxlIHJvd3MuXG4gICAgQGlmKCR0YWJsZS1zdHJpcGUgPT0gZXZlbikge1xuICAgICAgJi5zdHJpcGVkIHRyOm50aC1vZi10eXBlKGV2ZW4pOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGFya2VucyB0aGUgb2RkIHN0cmlwZWQgdGFibGUgcm93cy5cbiAgICBAZWxzZWlmKCR0YWJsZS1zdHJpcGUgPT0gb2RkKSB7XG4gICAgICAmLnN0cmlwZWQgdHI6bnRoLW9mLXR5cGUob2RkKTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc3RhY2tlZCB0YWJsZS4gVXNlZnVsIGZvciBzbWFsbC1zY3JlZW4gbGF5b3V0cy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRoZWFkZXIgWyRzaG93LWhlYWRlci1mb3Itc3RhY2tlZF0gLSBTaG93IHRoZSBmaXJzdCB0aCBvZiBoZWFkZXIgd2hlbiBzdGFja2VkLlxuQG1peGluIHRhYmxlLXN0YWNrKCRoZWFkZXI6ICRzaG93LWhlYWRlci1mb3Itc3RhY2tlZCkge1xuICBAaWYgJGhlYWRlciB7XG4gICAgdGhlYWQge1xuICAgICAgdGg6Zmlyc3QtY2hpbGQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgdGgge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgdGhlYWQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICB0Zm9vdCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIHRyLFxuICB0aCxcbiAgdGQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgdGQge1xuICAgIGJvcmRlci10b3A6IDA7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdGFibGUoJG5lc3Q6IGZhbHNlKSB7XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSB0YWJsZSgkbmVzdDogJG5lc3QpO1xuICB9XG5cbiAgdGFibGUuc3RhY2sge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pIHtcbiAgICAgIEBpbmNsdWRlIHRhYmxlLXN0YWNrO1xuICAgIH1cbiAgfVxuXG4gIHRhYmxlLnNjcm9sbCB7XG4gICAgQGluY2x1ZGUgdGFibGUtc2Nyb2xsO1xuICB9XG5cbiAgdGFibGUuaG92ZXIge1xuICAgIEBpbmNsdWRlIHRhYmxlLWhvdmVyO1xuICB9XG5cbiAgLnRhYmxlLXNjcm9sbCB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICAgIHRhYmxlIHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGFic1xuLy8vL1xuXG4vLy8gRGVmYXVsdCBtYXJnaW4gb2YgdGhlIHRhYiBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFiLW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiBhIHRhYiBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRm9udCBjb2xvciBvZiB0YWIgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBBY3RpdmUgYmFja2dyb3VuZCBjb2xvciBvZiBhIHRhYiBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItYmFja2dyb3VuZC1hY3RpdmU6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQWN0aXZlIGZvbnQgY29sb3Igb2YgdGFiIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItYWN0aXZlLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiB0YWIgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFiLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMikgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgZm9yIGl0ZW1zIGluIGEgTWVudS5cbiR0YWItaXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgb2YgYSB0YWIgaXRlbS5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWItaXRlbS1wYWRkaW5nOiAxLjI1cmVtIDEuNXJlbSAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gbnVtYmVyIG9mIGBleHBhbmQtbmAgY2xhc3NlcyB0byBpbmNsdWRlIGluIHRoZSBDU1MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFiLWV4cGFuZC1tYXg6IDYgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1jb250ZW50LWJvcmRlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJHRhYi1jb250ZW50LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSB0YWIgY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgYDx1bD5gLlxuQG1peGluIHRhYnMtY29udGFpbmVyIChcbiAgJG1hcmdpbjogJHRhYi1tYXJnaW4sXG4gICRiYWNrZ3JvdW5kOiAkdGFiLWJhY2tncm91bmQsXG4gICRib3JkZXItY29sb3I6ICR0YWItY29udGVudC1ib3JkZXJcbikge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luOiAkbWFyZ2luO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuXG4vLy8gQXVnbWVudHMgYSB0YWIgY29udGFpbmVyIHRvIGhhdmUgdmVydGljYWwgdGFicy4gVXNlIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFicy1jb250YWluZXIoKWAuXG5AbWl4aW4gdGFicy1jb250YWluZXItdmVydGljYWwge1xuICA+IGxpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogbm9uZTtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBsaW5rcyB3aXRoaW4gYSB0YWIgY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIHRoZSBgPGxpPmAgZWxlbWVudHMgaW5zaWRlIGEgdGFiIGNvbnRhaW5lci5cbkBtaXhpbiB0YWJzLXRpdGxlIChcbiAgJHBhZGRpbmc6ICR0YWItaXRlbS1wYWRkaW5nLFxuICAkZm9udC1zaXplOiAkdGFiLWl0ZW0tZm9udC1zaXplLFxuICAkY29sb3I6ICR0YWItY29sb3IsXG4gICRjb2xvci1hY3RpdmU6ICR0YWItYWN0aXZlLWNvbG9yLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXIsXG4gICRiYWNrZ3JvdW5kLWFjdGl2ZTogJHRhYi1iYWNrZ3JvdW5kLWFjdGl2ZVxuKSB7XG4gIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XG5cbiAgPiBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkcGFkZGluZztcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY29sb3I6ICRjb2xvcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtaG92ZXI7XG4gICAgICBjb2xvcjogc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAtMTQlKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLFxuICAgICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICAgIGNvbG9yOiAkY29sb3ItYWN0aXZlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSB3cmFwcGVyIHRoYXQgc3Vycm91bmRzIGEgdGFiIGdyb3VwJ3MgY29udGVudCBwYW5lcy5cbkBtaXhpbiB0YWJzLWNvbnRlbnQgKFxuICAkYmFja2dyb3VuZDogJHRhYi1jb250ZW50LWJhY2tncm91bmQsXG4gICRjb2xvcjogJHRhYi1jb250ZW50LWNvbG9yLFxuICAkYm9yZGVyLWNvbG9yOiAkdGFiLWNvbnRlbnQtYm9yZGVyXG4pIHtcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgYm9yZGVyLXRvcDogMDtcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gIGNvbG9yOiAkY29sb3I7XG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2U7XG59XG5cbi8vLyBBdWdtZW50cyBhIHRhYiBjb250ZW50IGNvbnRhaW5lciB0byBoYXZlIGEgdmVydGljYWwgc3R5bGUsIGJ5IHNoaWZ0aW5nIHRoZSBib3JkZXIgYXJvdW5kLiBVc2UgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGB0YWJzLWNvbnRlbnQoKWAuXG5AbWl4aW4gdGFicy1jb250ZW50LXZlcnRpY2FsIChcbiAgJGJvcmRlci1jb2xvcjogJHRhYi1jb250ZW50LWJvcmRlclxuKSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gaW5kaXZpZHVhbCB0YWIgY29udGVudCBwYW5lbCB3aXRoaW4gdGhlIHRhYiBjb250ZW50IGNvbnRhaW5lci5cbkBtaXhpbiB0YWJzLXBhbmVsIChcbiAgJHBhZGRpbmc6ICR0YWItY29udGVudC1wYWRkaW5nXG4pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgJlthcmlhLWhpZGRlbj1cImZhbHNlXCJdIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10YWJzIHtcbiAgLnRhYnMge1xuICAgIEBpbmNsdWRlIHRhYnMtY29udGFpbmVyO1xuICB9XG5cbiAgLy8gVmVydGljYWxcbiAgLnRhYnMudmVydGljYWwge1xuICAgIEBpbmNsdWRlIHRhYnMtY29udGFpbmVyLXZlcnRpY2FsO1xuICB9XG5cbiAgLy8gU2ltcGxlXG4gIC50YWJzLnNpbXBsZSB7XG4gICAgPiBsaSA+IGEge1xuICAgICAgcGFkZGluZzogMDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByaW1hcnkgY29sb3JcbiAgLnRhYnMucHJpbWFyeSB7XG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG5cbiAgICA+IGxpID4gYSB7XG4gICAgICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkcHJpbWFyeS1jb2xvcik7XG5cbiAgICAgICY6aG92ZXIsXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHByaW1hcnktY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC50YWJzLXRpdGxlIHtcbiAgICBAaW5jbHVkZSB0YWJzLXRpdGxlO1xuICB9XG5cbiAgLnRhYnMtY29udGVudCB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250ZW50O1xuICB9XG5cbiAgLnRhYnMtY29udGVudC52ZXJ0aWNhbCB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250ZW50LXZlcnRpY2FsO1xuICB9XG5cbiAgLnRhYnMtcGFuZWwge1xuICAgIEBpbmNsdWRlIHRhYnMtcGFuZWw7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRpdGxlLWJhclxuLy8vL1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRpdGxlYmFyLWJhY2tncm91bmQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRleHQgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIExlbmd0aFxuJHRpdGxlYmFyLXBhZGRpbmc6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IG9mIHRleHQgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIFdlaWdodFxuJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ6IGJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBtZW51IGljb25zIGluc2lkZSBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRpdGxlYmFyLWljb24tY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIG1lbnUgaWNvbnMgaW5zaWRlIGEgdGl0bGUgYmFyIG9uIGhvdmVyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItaWNvbi1jb2xvci1ob3ZlcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBiZXR3ZWVuIHRoZSBtZW51IGljb24gYW5kIHRleHQgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIExlbmd0aFxuJHRpdGxlYmFyLWljb24tc3BhY2luZzogMC4yNXJlbSAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tdGl0bGUtYmFyIHtcbiAgLnRpdGxlLWJhciB7XG4gICAgcGFkZGluZzogJHRpdGxlYmFyLXBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogJHRpdGxlYmFyLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICR0aXRsZWJhci1jb2xvcjtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cblxuICAgIC5tZW51LWljb24ge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJHRpdGxlYmFyLWljb24tc3BhY2luZztcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkdGl0bGViYXItaWNvbi1zcGFjaW5nO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIC50aXRsZS1iYXItbGVmdCxcbiAgICAudGl0bGUtYmFyLXJpZ2h0IHtcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG4gICAgfVxuXG4gICAgLnRpdGxlLWJhci1yaWdodCB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC50aXRsZS1iYXItbGVmdCB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG5cbiAgICAudGl0bGUtYmFyLXJpZ2h0IHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC50aXRsZS1iYXItdGl0bGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGZvbnQtd2VpZ2h0OiAkdGl0bGViYXItdGV4dC1mb250LXdlaWdodDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdG9wLWJhclxuLy8vL1xuXG4vLy8gUGFkZGluZyBmb3IgdGhlIHRvcCBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9wYmFyLXBhZGRpbmc6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSB0b3AgYmFyLiBUaGlzIGNvbG9yIGFsc28gY2FzY2FkZXMgdG8gbWVudXMgd2l0aGluIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdG9wYmFyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBzdWJtZW51cyB3aXRoaW4gdGhlIHRvcCBiYXIuIFVzZWZ1bGwgaWYgJHRvcGJhci1iYWNrZ3JvdW5kIGlzIHRyYW5zcGFyZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZDogJHRvcGJhci1iYWNrZ3JvdW5kICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBmb3IgdGhlIHRvcCBiYXIgdGl0bGUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9wYmFyLXRpdGxlLXNwYWNpbmc6IDAuNXJlbSAxcmVtIDAuNXJlbSAwICFkZWZhdWx0O1xuXG4vLy8gTWF4aW11bSB3aWR0aCBvZiBgPGlucHV0PmAgZWxlbWVudHMgaW5zaWRlIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci1pbnB1dC13aWR0aDogMjAwcHggIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGF0IHdoaWNoIHRvcCBiYXIgc3dpdGNoZXMgZnJvbSBtb2JpbGUgdG8gZGVza3RvcCB2aWV3LlxuLy8vIEB0eXBlIEJyZWFrcG9pbnRcbiR0b3BiYXItdW5zdGFjay1icmVha3BvaW50OiBtZWRpdW0gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSB0b3AgYmFyIGNvbnRhaW5lci5cbkBtaXhpbiB0b3AtYmFyLWNvbnRhaW5lciB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9XG5cbiAgcGFkZGluZzogJHRvcGJhci1wYWRkaW5nO1xuXG4gICYsXG4gIHVsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9wYmFyLWJhY2tncm91bmQ7XG4gIH1cblxuICAvLyBDaGVjayBpZiAkdG9wYmFyLWJhY2tncm91bmQgaXMgZGlmZmVybnQgZnJvbSAkdG9wYmFyLWJhY2tncm91bmQtc3VibWVudVxuICBAaWYgKCR0b3BiYXItYmFja2dyb3VuZCAhPSAkdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZCkge1xuICAgIHVsIHVsIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RyYWluIHdpZHRoIG9mIGlucHV0cyBieSBkZWZhdWx0IHRvIG1ha2UgdGhlbSBlYXNpZXIgdG8gYXJyYW5nZVxuICBpbnB1dCB7XG4gICAgbWF4LXdpZHRoOiAkdG9wYmFyLWlucHV0LXdpZHRoO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xuICB9XG5cbiAgLy8gVGhlIGFib3ZlIHN0eWxlcyBzaG91bGRuJ3QgYXBwbHkgdG8gaW5wdXQgZ3JvdXAgZmllbGRzXG4gIC5pbnB1dC1ncm91cC1maWVsZCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gIH1cblxuICBpbnB1dC5idXR0b24geyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxuXG4vLy8gTWFrZXMgc2VjdGlvbnMgb2YgYSB0b3AgYmFyIHN0YWNrIG9uIHRvcCBvZiBlYWNoIG90aGVyLlxuQG1peGluIHRvcC1iYXItc3RhY2tlZCB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC8vIFN1Yi1zZWN0aW9uc1xuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxleDogMCAwIDEwMCU7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBTdWItc2VjdGlvbnNcbiAgICAudG9wLWJhci1sZWZ0LFxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gVW5kb2VzIHRoZSBDU1MgYXBwbGllZCBieSB0aGUgYHRvcC1iYXItc3RhY2tlZCgpYCBtaXhpbi5cbkBtaXhpbiB0b3AtYmFyLXVuc3RhY2sge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcblxuICAgIC50b3AtYmFyLWxlZnQge1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgfVxuXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxleDogMCAxIGF1dG87XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAudG9wLWJhci1sZWZ0LFxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10b3AtYmFyIHtcbiAgLy8gVG9wIGJhciBjb250YWluZXJcbiAgLnRvcC1iYXIge1xuICAgIEBpbmNsdWRlIHRvcC1iYXItY29udGFpbmVyO1xuXG4gICAgLy8gU3RhY2sgb24gc21hbGwgc2NyZWVucyBieSBkZWZhdWx0XG4gICAgQGluY2x1ZGUgdG9wLWJhci1zdGFja2VkO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludCkge1xuICAgICAgQGluY2x1ZGUgdG9wLWJhci11bnN0YWNrO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIGNsYXNzZXMgZm9yIHN0YWNraW5nIG9uIGVhY2ggc2NyZWVuIHNpemUgKGRlZmluZWQgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcylcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICYuc3RhY2tlZC1mb3ItI3skc2l6ZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgZG93bikge1xuICAgICAgICAgICAgQGluY2x1ZGUgdG9wLWJhci1zdGFja2VkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFN1Yi1zZWN0aW9uc1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAudG9wLWJhci10aXRsZSB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgIG1hcmdpbjogJHRvcGJhci10aXRsZS1zcGFjaW5nO1xuICAgIH1cblxuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAudG9wLWJhci10aXRsZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIHBhZGRpbmc6ICR0b3BiYXItdGl0bGUtc3BhY2luZztcblxuICAgICAgLm1lbnUtaWNvbiB7XG4gICAgICAgIGJvdHRvbTogMnB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC50b3AtYmFyLWxlZnQge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGh1bWJuYWlsXG4vLy8vXG5cbi8vLyBCb3JkZXIgYXJvdW5kIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgQm9yZGVyXG4kdGh1bWJuYWlsLWJvcmRlcjogc29saWQgNHB4ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGh1bWJuYWlsLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyB1bmRlciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIFNoYWRvd1xuJHRodW1ibmFpbC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKCRibGFjaywgMC4yKSAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgdW5kZXIgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBTaGFkb3dcbiR0aHVtYm5haWwtc2hhZG93LWhvdmVyOiAwIDAgNnB4IDFweCByZ2JhKCRwcmltYXJ5LWNvbG9yLCAwLjUpICFkZWZhdWx0O1xuXG4vLy8gVHJhbnNpdGlvbiBwcm9wcnRpZXMgZm9yIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxuJHRodW1ibmFpbC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDIwMG1zIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGh1bWJuYWlsLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHRodW1ibmFpbCBzdHlsZXMgdG8gYW4gZWxlbWVudC5cbkBtaXhpbiB0aHVtYm5haWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogJHRodW1ibmFpbC1tYXJnaW4tYm90dG9tO1xuXG4gIGJvcmRlcjogJHRodW1ibmFpbC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICR0aHVtYm5haWwtcmFkaXVzO1xuICBib3gtc2hhZG93OiAkdGh1bWJuYWlsLXNoYWRvdztcblxuICBsaW5lLWhlaWdodDogMDtcbn1cblxuQG1peGluIHRodW1ibmFpbC1saW5rIHtcbiAgdHJhbnNpdGlvbjogJHRodW1ibmFpbC10cmFuc2l0aW9uO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGJveC1zaGFkb3c6ICR0aHVtYm5haWwtc2hhZG93LWhvdmVyO1xuICB9XG5cbiAgaW1hZ2Uge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdGh1bWJuYWlsIHtcbiAgLnRodW1ibmFpbCB7XG4gICAgQGluY2x1ZGUgdGh1bWJuYWlsO1xuICB9XG5cbiAgYS50aHVtYm5haWwge1xuICAgIEBpbmNsdWRlIHRodW1ibmFpbC1saW5rO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0b29sdGlwXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGZvbnQgd2VpZ2h0IG9mIHRoZSBkZWZpbmVkIHRlcm0uXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGhhcy10aXAtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBib3R0b20gb2YgdGhlIGRlZmluZWQgdGVybS5cbi8vLyBAdHlwZSBMaXN0XG4kaGFzLXRpcC1ib3JkZXItYm90dG9tOiBkb3R0ZWQgMXB4ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSB0b29sdGlwIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0b29sdGlwLWJhY2tncm91bmQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIHRvb2x0aXAgZm9udC5cbi8vLyBAdHlwZSBDb2xvclxuJHRvb2x0aXAtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBvZiB0aGUgdG9vbHRpcCBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtcGFkZGluZzogMC43NXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIG9mIHRoZSB0b29sdGlwIHRleHQuIEJ5IGRlZmF1bHQsIHdlIHJlY29tbWVuZCBhIHNtYWxsZXIgZm9udCBzaXplIHRoYW4gdGhlIGJvZHkgY29weS5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLWZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGlwIHdpZHRoIGZvciB0b29sdGlwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXBpcC13aWR0aDogMC43NXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGlwIGhlaWdodCBmb3IgdG9vbHRpcHMuIFRoaXMgaXMgaGVscGZ1bCBmb3IgY2FsY3VsYXRpbmcgdGhlIGRpc3RhbmNlIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvb2x0aXAgd29yZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXBpcC1oZWlnaHQ6ICR0b29sdGlwLXBpcC13aWR0aCAqIDAuODY2ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHRvb2x0aXBzLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGhhcy10aXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBib3JkZXItYm90dG9tOiAkaGFzLXRpcC1ib3JkZXItYm90dG9tO1xuICBmb250LXdlaWdodDogJGhhcy10aXAtZm9udC13ZWlnaHQ7XG4gIGN1cnNvcjogaGVscDtcbn1cblxuQG1peGluIHRvb2x0aXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYygxMDAlICsgI3skdG9vbHRpcC1waXAtaGVpZ2h0fSk7XG4gIHotaW5kZXg6IDEyMDA7XG5cbiAgbWF4LXdpZHRoOiAxMHJlbTtcbiAgcGFkZGluZzogJHRvb2x0aXAtcGFkZGluZztcblxuICBib3JkZXItcmFkaXVzOiAkdG9vbHRpcC1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICR0b29sdGlwLWJhY2tncm91bmQtY29sb3I7XG4gIGZvbnQtc2l6ZTogJHRvb2x0aXAtZm9udC1zaXplO1xuICBjb2xvcjogJHRvb2x0aXAtY29sb3I7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCB1cCk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMTAwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG5cbiAgJi50b3A6OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCR0b29sdGlwLXBpcC13aWR0aCwgJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgZG93bik7XG4gICAgdG9wOiAxMDAlO1xuICAgIGJvdHRvbTogYXV0bztcbiAgfVxuXG4gICYubGVmdDo6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCByaWdodCk7XG4gICAgdG9wOiA1MCU7XG4gICAgYm90dG9tOiBhdXRvO1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG5cbiAgJi5yaWdodDo6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCBsZWZ0KTtcbiAgICB0b3A6IDUwJTtcbiAgICByaWdodDogMTAwJTtcbiAgICBib3R0b206IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdG9vbHRpcCB7XG4gIC5oYXMtdGlwIHtcbiAgICBAaW5jbHVkZSBoYXMtdGlwO1xuICB9XG5cbiAgLnRvb2x0aXAge1xuICAgIEBpbmNsdWRlIHRvb2x0aXA7XG4gIH1cbn1cbiIsIi8vICBGb3VuZGF0aW9uIGZvciBTaXRlcyBTZXR0aW5nc1xuLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuLy8gIFRhYmxlIG9mIENvbnRlbnRzOlxuLy9cbi8vICAgMS4gR2xvYmFsXG4vLyAgIDIuIEJyZWFrcG9pbnRzXG4vLyAgIDMuIFRoZSBHcmlkXG4vLyAgIDQuIEJhc2UgVHlwb2dyYXBoeVxuLy8gICA1LiBUeXBvZ3JhcGh5IEhlbHBlcnNcbi8vICAgNi4gQWJpZGVcbi8vICAgNy4gQWNjb3JkaW9uXG4vLyAgIDguIEFjY29yZGlvbiBNZW51XG4vLyAgIDkuIEJhZGdlXG4vLyAgMTAuIEJyZWFkY3J1bWJzXG4vLyAgMTEuIEJ1dHRvblxuLy8gIDEyLiBCdXR0b24gR3JvdXBcbi8vICAxMy4gQ2FsbG91dFxuLy8gIDE0LiBDbG9zZSBCdXR0b25cbi8vICAxNS4gRHJpbGxkb3duXG4vLyAgMTYuIERyb3Bkb3duXG4vLyAgMTcuIERyb3Bkb3duIE1lbnVcbi8vICAxOC4gRmxleCBWaWRlb1xuLy8gIDE5LiBGb3Jtc1xuLy8gIDIwLiBMYWJlbFxuLy8gIDIxLiBNZWRpYSBPYmplY3Rcbi8vICAyMi4gTWVudVxuLy8gIDIzLiBNZXRlclxuLy8gIDI0LiBPZmYtY2FudmFzXG4vLyAgMjUuIE9yYml0XG4vLyAgMjYuIFBhZ2luYXRpb25cbi8vICAyNy4gUHJvZ3Jlc3MgQmFyXG4vLyAgMjguIFJldmVhbFxuLy8gIDI5LiBTbGlkZXJcbi8vICAzMC4gU3dpdGNoXG4vLyAgMzEuIFRhYmxlXG4vLyAgMzIuIFRhYnNcbi8vICAzMy4gVGh1bWJuYWlsXG4vLyAgMzQuIFRpdGxlIEJhclxuLy8gIDM1LiBUb29sdGlwXG4vLyAgMzYuIFRvcCBCYXJcbkBpbXBvcnQgJ35mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC91dGlsJzsgLy8gMS4gR2xvYmFsXG4vLyAtLS0tLS0tLS1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ2ltb3ZlaG9tZSc7XG4gIHNyYzogdXJsKCcuLi9mb250cy9ha2t1cmF0X2JvbGQtd2ViZm9udC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSwgdXJsKCcuLi9mb250cy9ha2t1cmF0X2JvbGQtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnLi4vZm9udHMvYWtrdXJhdF9ib2xkLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnaW1vdmVob21lJztcbiAgc3JjOiB1cmwoJy4uL2ZvbnRzL2Fra3VyYXRfcmVndWxhci13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJy4uL2ZvbnRzL2Fra3VyYXRfcmVndWxhci13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuLi9mb250cy9ha2t1cmF0X3JlZ3VsYXItd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlO1xuJGdsb2JhbC13aWR0aDogcmVtLWNhbGMoMTIwMCk7XG4kZ2xvYmFsLWxpbmVoZWlnaHQ6IDEuNTtcbiRmb3VuZGF0aW9uLXBhbGV0dGU6ICggcHJpbWFyeTogIzIxOTllOCwgc2Vjb25kYXJ5OiAjNzc3LCBzdWNjZXNzOiAjM2FkYjc2LCB3YXJuaW5nOiAjZmZhZTAwLCBhbGVydDogI2VjNTg0MCwgKTtcbiRsaWdodC1ncmF5OiAjZTZlNmU2O1xuJG1lZGl1bS1ncmF5OiAjY2FjYWNhO1xuJGRhcmstZ3JheTogIzhhOGE4YTtcbiRibGFjazogIzBhMGEwYTtcbiR3aGl0ZTogI2ZlZmVmZTtcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjaztcbiRib2R5LWZvbnQtZmFtaWx5OiAnaW1vdmVob21lJywgSGVsdmV0aWNhLCBSb2JvdG8sIEFyaWFsLCBzYW5zLXNlcmlmO1xuJGJvZHktYW50aWFsaWFzZWQ6IHRydWU7XG4kZ2xvYmFsLW1hcmdpbjogMXJlbTtcbiRnbG9iYWwtcGFkZGluZzogMXJlbTtcbiRnbG9iYWwtd2VpZ2h0LW5vcm1hbDogbm9ybWFsO1xuJGdsb2JhbC13ZWlnaHQtYm9sZDogYm9sZDtcbiRnbG9iYWwtcmFkaXVzOiAwO1xuJGdsb2JhbC10ZXh0LWRpcmVjdGlvbjogbHRyO1xuJGdsb2JhbC1mbGV4Ym94OiBmYWxzZTtcbiRwcmludC10cmFuc3BhcmVudC1iYWNrZ3JvdW5kczogdHJ1ZTtcbkBpbmNsdWRlIGFkZC1mb3VuZGF0aW9uLWNvbG9yczsgLy8gMi4gQnJlYWtwb2ludHNcbi8vIC0tLS0tLS0tLS0tLS0tXG4kYnJlYWtwb2ludHM6ICggc21hbGw6IDAsIG1lZGl1bTogNjQwcHgsIGxhcmdlOiAxMDI0cHgsIHhsYXJnZTogMTIwMHB4LCB4eGxhcmdlOiAxNDQwcHgsICk7XG4kYnJlYWtwb2ludC1jbGFzc2VzOiAoc21hbGwgbWVkaXVtIGxhcmdlKTsgLy8gMy4gVGhlIEdyaWRcbi8vIC0tLS0tLS0tLS0tXG4kZ3JpZC1yb3ctd2lkdGg6ICRnbG9iYWwtd2lkdGg7XG4kZ3JpZC1jb2x1bW4tY291bnQ6IDEyO1xuJGdyaWQtY29sdW1uLWd1dHRlcjogKCBzbWFsbDogMjBweCwgbWVkaXVtOiAzMHB4LCApO1xuJGdyaWQtY29sdW1uLWFsaWduLWVkZ2U6IHRydWU7XG4kYmxvY2stZ3JpZC1tYXg6IDg7IC8vIDQuIEJhc2UgVHlwb2dyYXBoeVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4kaGVhZGVyLWZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseTtcbiRoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcbiRoZWFkZXItZm9udC1zdHlsZTogbm9ybWFsO1xuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBDb3VyaWVyLCBtb25vc3BhY2U7XG4kaGVhZGVyLXNpemVzOiAoIHNtYWxsOiAoICdoMSc6IDI0LCAnaDInOiAyMCwgJ2gzJzogMTksICdoNCc6IDE4LCAnaDUnOiAxNywgJ2g2JzogMTYsICksIG1lZGl1bTogKCAnaDEnOiA0OCwgJ2gyJzogNDAsICdoMyc6IDMxLCAnaDQnOiAyNSwgJ2g1JzogMjAsICdoNic6IDE2LCApLCApO1xuJGhlYWRlci1jb2xvcjogaW5oZXJpdDtcbiRoZWFkZXItbGluZWhlaWdodDogMS40O1xuJGhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW07XG4kaGVhZGVyLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4kc21hbGwtZm9udC1zaXplOiA4MCU7XG4kaGVhZGVyLXNtYWxsLWZvbnQtY29sb3I6ICRtZWRpdW0tZ3JheTtcbiRwYXJhZ3JhcGgtbGluZWhlaWdodDogMS42O1xuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAxcmVtO1xuJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuJGNvZGUtY29sb3I6ICRibGFjaztcbiRjb2RlLWZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlO1xuJGNvZGUtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcbiRjb2RlLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJGNvZGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xuJGNvZGUtcGFkZGluZzogcmVtLWNhbGMoMiA1IDEpO1xuJGFuY2hvci1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kYW5jaG9yLWNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkYW5jaG9yLWNvbG9yLCAkbGlnaHRuZXNzOiAtMTQlKTtcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI6IG5vbmU7XG4kaHItd2lkdGg6ICRnbG9iYWwtd2lkdGg7XG4kaHItYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xuJGhyLW1hcmdpbjogcmVtLWNhbGMoMjApIGF1dG87XG4kbGlzdC1saW5laGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XG4kbGlzdC1tYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XG4kbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xuJGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGU7XG4kbGlzdC1zaWRlLW1hcmdpbjogMS4yNXJlbTtcbiRsaXN0LW5lc3RlZC1zaWRlLW1hcmdpbjogMS4yNXJlbTtcbiRkZWZubGlzdC1tYXJnaW4tYm90dG9tOiAxcmVtO1xuJGRlZm5saXN0LXRlcm0td2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuJGRlZm5saXN0LXRlcm0tbWFyZ2luLWJvdHRvbTogMC4zcmVtO1xuJGJsb2NrcXVvdGUtY29sb3I6ICRkYXJrLWdyYXk7XG4kYmxvY2txdW90ZS1wYWRkaW5nOiByZW0tY2FsYyg5IDIwIDAgMTkpO1xuJGJsb2NrcXVvdGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xuJGNpdGUtZm9udC1zaXplOiByZW0tY2FsYygxMyk7XG4kY2l0ZS1jb2xvcjogJGRhcmstZ3JheTtcbiRrZXlzdHJva2UtZm9udDogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTtcbiRrZXlzdHJva2UtY29sb3I6ICRibGFjaztcbiRrZXlzdHJva2UtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG4ka2V5c3Ryb2tlLXBhZGRpbmc6IHJlbS1jYWxjKDIgNCAwKTtcbiRrZXlzdHJva2UtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRhYmJyLXVuZGVybGluZTogMXB4IGRvdHRlZCAkYmxhY2s7IC8vIDUuIFR5cG9ncmFwaHkgSGVscGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4kbGVhZC1mb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplICogMS4yNTtcbiRsZWFkLWxpbmVoZWlnaHQ6IDEuNjtcbiRzdWJoZWFkZXItbGluZWhlaWdodDogMS40O1xuJHN1YmhlYWRlci1jb2xvcjogJGRhcmstZ3JheTtcbiRzdWJoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcbiRzdWJoZWFkZXItbWFyZ2luLXRvcDogMC4ycmVtO1xuJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW07XG4kc3RhdC1mb250LXNpemU6IDIuNXJlbTsgLy8gNi4gQWJpZGVcbi8vIC0tLS0tLS0tXG4kYWJpZGUtaW5wdXRzOiB0cnVlO1xuJGFiaWRlLWxhYmVsczogdHJ1ZTtcbiRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQ6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpO1xuJGZvcm0tbGFiZWwtY29sb3ItaW52YWxpZDogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBhbGVydCk7XG4kaW5wdXQtZXJyb3ItY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpO1xuJGlucHV0LWVycm9yLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xuJGlucHV0LWVycm9yLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkOyAvLyA3LiBBY2NvcmRpb25cbi8vIC0tLS0tLS0tLS0tLVxuJGFjY29yZGlvbi1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kYWNjb3JkaW9uLXBsdXNtaW51czogdHJ1ZTtcbiRhY2NvcmRpb24taXRlbS1jb2xvcjogZm9yZWdyb3VuZCgkYWNjb3JkaW9uLWJhY2tncm91bmQsICRwcmltYXJ5LWNvbG9yKTtcbiRhY2NvcmRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheTtcbiRhY2NvcmRpb24taXRlbS1wYWRkaW5nOiAxLjI1cmVtIDFyZW07XG4kYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlO1xuJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5O1xuJGFjY29yZGlvbi1jb250ZW50LWNvbG9yOiBmb3JlZ3JvdW5kKCRhY2NvcmRpb24tYmFja2dyb3VuZCwgJHByaW1hcnktY29sb3IpO1xuJGFjY29yZGlvbi1jb250ZW50LXBhZGRpbmc6IDFyZW07IC8vIDguIEFjY29yZGlvbiBNZW51XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuJGFjY29yZGlvbm1lbnUtYXJyb3dzOiB0cnVlO1xuJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yOyAvLyA5LiBCYWRnZVxuLy8gLS0tLS0tLS1cbiRiYWRnZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRiYWRnZS1jb2xvcjogZm9yZWdyb3VuZCgkYmFkZ2UtYmFja2dyb3VuZCk7XG4kYmFkZ2UtcGFkZGluZzogMC4zZW07XG4kYmFkZ2UtbWlud2lkdGg6IDIuMWVtO1xuJGJhZGdlLWZvbnQtc2l6ZTogMC42cmVtOyAvLyAxMC4gQnJlYWRjcnVtYnNcbi8vIC0tLS0tLS0tLS0tLS0tLVxuJGJyZWFkY3J1bWJzLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luIDA7XG4kYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDExKTtcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yLWN1cnJlbnQ6ICRibGFjaztcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkOiAkbWVkaXVtLWdyYXk7XG4kYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW46IDAuNzVyZW07XG4kYnJlYWRjcnVtYnMtaXRlbS11cHBlcmNhc2U6IHRydWU7XG4kYnJlYWRjcnVtYnMtaXRlbS1zbGFzaDogdHJ1ZTsgLy8gMTEuIEJ1dHRvblxuLy8gLS0tLS0tLS0tLVxuJGJ1dHRvbi1wYWRkaW5nOiAwLjg1ZW0gMWVtO1xuJGJ1dHRvbi1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwO1xuJGJ1dHRvbi1maWxsOiBzb2xpZDtcbiRidXR0b24tYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRidXR0b24tYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSk7XG4kYnV0dG9uLWNvbG9yOiAkd2hpdGU7XG4kYnV0dG9uLWNvbG9yLWFsdDogJGJsYWNrO1xuJGJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGJ1dHRvbi1zaXplczogKCB0aW55OiAwLjZyZW0sIHNtYWxsOiAwLjc1cmVtLCBkZWZhdWx0OiAwLjlyZW0sIGxhcmdlOiAxLjI1cmVtLCApO1xuJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkOiAwLjI1OyAvLyAxMi4gQnV0dG9uIEdyb3VwXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4kYnV0dG9uZ3JvdXAtbWFyZ2luOiAxcmVtO1xuJGJ1dHRvbmdyb3VwLXNwYWNpbmc6IDFweDtcbiRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcjogJy5idXR0b24nO1xuJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg6IDY7IC8vIDEzLiBDYWxsb3V0XG4vLyAtLS0tLS0tLS0tLVxuJGNhbGxvdXQtYmFja2dyb3VuZDogJHdoaXRlO1xuJGNhbGxvdXQtYmFja2dyb3VuZC1mYWRlOiA4NSU7XG4kY2FsbG91dC1ib3JkZXI6IDFweCBzb2xpZCByZ2JhKCRibGFjaywgMC4yNSk7XG4kY2FsbG91dC1tYXJnaW46IDAgMCAxcmVtIDA7XG4kY2FsbG91dC1wYWRkaW5nOiAxcmVtO1xuJGNhbGxvdXQtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcbiRjYWxsb3V0LWZvbnQtY29sb3ItYWx0OiAkYm9keS1iYWNrZ3JvdW5kO1xuJGNhbGxvdXQtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRjYWxsb3V0LWxpbmstdGludDogMzAlOyAvLyAxNC4gQ2xvc2UgQnV0dG9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4kY2xvc2VidXR0b24tcG9zaXRpb246IHJpZ2h0IHRvcDtcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbDogMXJlbTtcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWw6IDAuNXJlbTtcbiRjbG9zZWJ1dHRvbi1zaXplOiAyZW07XG4kY2xvc2VidXR0b24tbGluZWhlaWdodDogMTtcbiRjbG9zZWJ1dHRvbi1jb2xvcjogJGRhcmstZ3JheTtcbiRjbG9zZWJ1dHRvbi1jb2xvci1ob3ZlcjogJGJsYWNrOyAvLyAxNS4gRHJpbGxkb3duXG4vLyAtLS0tLS0tLS0tLS0tXG4kZHJpbGxkb3duLXRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBsaW5lYXI7XG4kZHJpbGxkb3duLWFycm93czogdHJ1ZTtcbiRkcmlsbGRvd24tYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuJGRyaWxsZG93bi1iYWNrZ3JvdW5kOiAkd2hpdGU7IC8vIDE2LiBEcm9wZG93blxuLy8gLS0tLS0tLS0tLS0tXG4kZHJvcGRvd24tcGFkZGluZzogMXJlbTtcbiRkcm9wZG93bi1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kZHJvcGRvd24tZm9udC1zaXplOiAxcmVtO1xuJGRyb3Bkb3duLXdpZHRoOiAzMDBweDtcbiRkcm9wZG93bi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGRyb3Bkb3duLXNpemVzOiAoIHRpbnk6IDEwMHB4LCBzbWFsbDogMjAwcHgsIGxhcmdlOiA0MDBweCwgKTsgLy8gMTcuIERyb3Bkb3duIE1lbnVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4kZHJvcGRvd25tZW51LWFycm93czogdHJ1ZTtcbiRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3I6ICRhbmNob3ItY29sb3I7XG4kZHJvcGRvd25tZW51LW1pbi13aWR0aDogMjAwcHg7XG4kZHJvcGRvd25tZW51LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRkcm9wZG93bm1lbnUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5OyAvLyAxOC4gRmxleCBWaWRlb1xuLy8gLS0tLS0tLS0tLS0tLS1cbiRmbGV4dmlkZW8tbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTYpO1xuJGZsZXh2aWRlby1yYXRpbzogNCBieSAzO1xuJGZsZXh2aWRlby1yYXRpby13aWRlc2NyZWVuOiAxNiBieSA5OyAvLyAxOS4gRm9ybXNcbi8vIC0tLS0tLS0tLVxuJGZpZWxkc2V0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRmaWVsZHNldC1wYWRkaW5nOiByZW0tY2FsYygyMCk7XG4kZmllbGRzZXQtbWFyZ2luOiByZW0tY2FsYygxOCAwKTtcbiRsZWdlbmQtcGFkZGluZzogcmVtLWNhbGMoMCAzKTtcbiRmb3JtLXNwYWNpbmc6IHJlbS1jYWxjKDE2KTtcbiRoZWxwdGV4dC1jb2xvcjogJGJsYWNrO1xuJGhlbHB0ZXh0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xuJGhlbHB0ZXh0LWZvbnQtc3R5bGU6IGl0YWxpYztcbiRpbnB1dC1wcmVmaXgtY29sb3I6ICRibGFjaztcbiRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1wcmVmaXgtcGFkZGluZzogMXJlbTtcbiRmb3JtLWxhYmVsLWNvbG9yOiAkYmxhY2s7XG4kZm9ybS1sYWJlbC1mb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kZm9ybS1sYWJlbC1saW5lLWhlaWdodDogMS44O1xuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kc2VsZWN0LXRyaWFuZ2xlLWNvbG9yOiAkZGFyay1ncmF5O1xuJHNlbGVjdC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGlucHV0LWNvbG9yOiAkYmxhY2s7XG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1mb250LWZhbWlseTogaW5oZXJpdDtcbiRpbnB1dC1mb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiRpbnB1dC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kaW5wdXQtYmFja2dyb3VuZC1mb2N1czogJHdoaXRlO1xuJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ6ICRsaWdodC1ncmF5O1xuJGlucHV0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1ib3JkZXItZm9jdXM6IDFweCBzb2xpZCAkZGFyay1ncmF5O1xuJGlucHV0LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoJGJsYWNrLCAwLjEpO1xuJGlucHV0LXNoYWRvdy1mb2N1czogMCAwIDVweCAkbWVkaXVtLWdyYXk7XG4kaW5wdXQtY3Vyc29yLWRpc2FibGVkOiBkZWZhdWx0O1xuJGlucHV0LXRyYW5zaXRpb246IGJveC1zaGFkb3cgMC41cywgYm9yZGVyLWNvbG9yIDAuMjVzIGVhc2UtaW4tb3V0O1xuJGlucHV0LW51bWJlci1zcGlubmVyczogdHJ1ZTtcbiRpbnB1dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzOyAvLyAyMC4gTGFiZWxcbi8vIC0tLS0tLS0tLVxuJGxhYmVsLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJGxhYmVsLWNvbG9yOiBmb3JlZ3JvdW5kKCRsYWJlbC1iYWNrZ3JvdW5kKTtcbiRsYWJlbC1mb250LXNpemU6IDAuOHJlbTtcbiRsYWJlbC1wYWRkaW5nOiAwLjMzMzMzcmVtIDAuNXJlbTtcbiRsYWJlbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzOyAvLyAyMS4gTWVkaWEgT2JqZWN0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4kbWVkaWFvYmplY3QtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4kbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XG4kbWVkaWFvYmplY3QtaW1hZ2Utd2lkdGgtc3RhY2tlZDogMTAwJTsgLy8gMjIuIE1lbnVcbi8vIC0tLS0tLS0tXG4kbWVudS1tYXJnaW46IDA7XG4kbWVudS1tYXJnaW4tbmVzdGVkOiAxcmVtO1xuJG1lbnUtaXRlbS1wYWRkaW5nOiAwLjdyZW0gMXJlbTtcbiRtZW51LWl0ZW0tY29sb3ItYWN0aXZlOiAkd2hpdGU7XG4kbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpO1xuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtOyAvLyAyMy4gTWV0ZXJcbi8vIC0tLS0tLS0tLVxuJG1ldGVyLWhlaWdodDogMXJlbTtcbiRtZXRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJG1ldGVyLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRtZXRlci1maWxsLWdvb2Q6ICRzdWNjZXNzLWNvbG9yO1xuJG1ldGVyLWZpbGwtbWVkaXVtOiAkd2FybmluZy1jb2xvcjtcbiRtZXRlci1maWxsLWJhZDogJGFsZXJ0LWNvbG9yOyAvLyAyNC4gT2ZmLWNhbnZhc1xuLy8gLS0tLS0tLS0tLS0tLS1cbiRvZmZjYW52YXMtc2l6ZTogMjUwcHg7XG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJG9mZmNhbnZhcy16aW5kZXg6IC0xO1xuJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aDogMC41cztcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc6IGVhc2U7XG4kb2ZmY2FudmFzLWZpeGVkLXJldmVhbDogdHJ1ZTtcbiRvZmZjYW52YXMtZXhpdC1iYWNrZ3JvdW5kOiByZ2JhKCR3aGl0ZSwgMC4yNSk7XG4kbWFpbmNvbnRlbnQtY2xhc3M6ICdvZmYtY2FudmFzLWNvbnRlbnQnO1xuJG1haW5jb250ZW50LXNoYWRvdzogMCAwIDEwcHggcmdiYSgkYmxhY2ssIDAuNSk7IC8vIDI1LiBPcmJpdFxuLy8gLS0tLS0tLS0tXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU6ICRkYXJrLWdyYXk7XG4kb3JiaXQtYnVsbGV0LWRpYW1ldGVyOiAxLjJyZW07XG4kb3JiaXQtYnVsbGV0LW1hcmdpbjogMC4xcmVtO1xuJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wOiAwLjhyZW07XG4kb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b206IDAuOHJlbTtcbiRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjUpO1xuJG9yYml0LWNhcHRpb24tcGFkZGluZzogMXJlbTtcbiRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoJGJsYWNrLCAwLjUpO1xuJG9yYml0LWNvbnRyb2wtcGFkZGluZzogMXJlbTtcbiRvcmJpdC1jb250cm9sLXppbmRleDogMTA7IC8vIDI2LiBQYWdpbmF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLVxuJHBhZ2luYXRpb24tZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4kcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3I6ICRibGFjaztcbiRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZzogcmVtLWNhbGMoMyAxMCk7XG4kcGFnaW5hdGlvbi1pdGVtLXNwYWNpbmc6IHJlbS1jYWxjKDEpO1xuJHBhZ2luYXRpb24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXk7XG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudDogJHByaW1hcnktY29sb3I7XG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWN1cnJlbnQ6IGZvcmVncm91bmQoJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQpO1xuJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5O1xuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjaztcbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2U7XG4kcGFnaW5hdGlvbi1hcnJvd3M6IHRydWU7IC8vIDI3LiBQcm9ncmVzcyBCYXJcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbiRwcm9ncmVzcy1oZWlnaHQ6IDFyZW07XG4kcHJvZ3Jlc3MtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xuJHByb2dyZXNzLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJHByb2dyZXNzLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7IC8vIDI4LiBSZXZlYWxcbi8vIC0tLS0tLS0tLS1cbiRyZXZlYWwtYmFja2dyb3VuZDogJHdoaXRlO1xuJHJldmVhbC13aWR0aDogNjAwcHg7XG4kcmV2ZWFsLW1heC13aWR0aDogJGdsb2JhbC13aWR0aDtcbiRyZXZlYWwtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nO1xuJHJldmVhbC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kcmV2ZWFsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kcmV2ZWFsLXppbmRleDogMTAwNTtcbiRyZXZlYWwtb3ZlcmxheS1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC40NSk7IC8vIDI5LiBTbGlkZXJcbi8vIC0tLS0tLS0tLS1cbiRzbGlkZXItd2lkdGgtdmVydGljYWw6IDAuNXJlbTtcbiRzbGlkZXItdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG4kc2xpZGVyLWhlaWdodDogMC41cmVtO1xuJHNsaWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kc2xpZGVyLWhhbmRsZS1oZWlnaHQ6IDEuNHJlbTtcbiRzbGlkZXItaGFuZGxlLXdpZHRoOiAxLjRyZW07XG4kc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDogMC4yNTtcbiRzbGlkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1czsgLy8gMzAuIFN3aXRjaFxuLy8gLS0tLS0tLS0tLVxuJHN3aXRjaC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kc3dpdGNoLWJhY2tncm91bmQtYWN0aXZlOiAkcHJpbWFyeS1jb2xvcjtcbiRzd2l0Y2gtaGVpZ2h0OiAycmVtO1xuJHN3aXRjaC1oZWlnaHQtdGlueTogMS41cmVtO1xuJHN3aXRjaC1oZWlnaHQtc21hbGw6IDEuNzVyZW07XG4kc3dpdGNoLWhlaWdodC1sYXJnZTogMi41cmVtO1xuJHN3aXRjaC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJHN3aXRjaC1tYXJnaW46ICRnbG9iYWwtbWFyZ2luO1xuJHN3aXRjaC1wYWRkbGUtYmFja2dyb3VuZDogJHdoaXRlO1xuJHN3aXRjaC1wYWRkbGUtb2Zmc2V0OiAwLjI1cmVtO1xuJHN3aXRjaC1wYWRkbGUtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlLW91dDsgLy8gMzEuIFRhYmxlXG4vLyAtLS0tLS0tLS1cbiR0YWJsZS1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kdGFibGUtY29sb3Itc2NhbGU6IDUlO1xuJHRhYmxlLWJvcmRlcjogMXB4IHNvbGlkIHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpO1xuJHRhYmxlLXBhZGRpbmc6IHJlbS1jYWxjKDggMTAgMTApO1xuJHRhYmxlLWhvdmVyLXNjYWxlOiAyJTtcbiR0YWJsZS1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKTtcbiR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSArICR0YWJsZS1ob3Zlci1zY2FsZSk7XG4kdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKTtcbiR0YWJsZS1zdHJpcGU6IGV2ZW47XG4kdGFibGUtaGVhZC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlIC8gMik7XG4kdGFibGUtZm9vdC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKTtcbiR0YWJsZS1oZWFkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG4kc2hvdy1oZWFkZXItZm9yLXN0YWNrZWQ6IGZhbHNlOyAvLyAzMi4gVGFic1xuLy8gLS0tLS0tLS1cbiR0YWItbWFyZ2luOiAwO1xuJHRhYi1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kdGFiLWJhY2tncm91bmQtYWN0aXZlOiAkbGlnaHQtZ3JheTtcbiR0YWItaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbiR0YWItaXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkd2hpdGU7XG4kdGFiLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxLjVyZW07XG4kdGFiLWV4cGFuZC1tYXg6IDY7XG4kdGFiLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlO1xuJHRhYi1jb250ZW50LWJvcmRlcjogJGxpZ2h0LWdyYXk7XG4kdGFiLWNvbnRlbnQtY29sb3I6IGZvcmVncm91bmQoJHRhYi1iYWNrZ3JvdW5kLCAkcHJpbWFyeS1jb2xvcik7XG4kdGFiLWNvbnRlbnQtcGFkZGluZzogMXJlbTsgLy8gMzMuIFRodW1ibmFpbFxuLy8gLS0tLS0tLS0tLS0tLVxuJHRodW1ibmFpbC1ib3JkZXI6IHNvbGlkIDRweCAkd2hpdGU7XG4kdGh1bWJuYWlsLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuJHRodW1ibmFpbC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKCRibGFjaywgMC4yKTtcbiR0aHVtYm5haWwtc2hhZG93LWhvdmVyOiAwIDAgNnB4IDFweCByZ2JhKCRwcmltYXJ5LWNvbG9yLCAwLjUpO1xuJHRodW1ibmFpbC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDIwMG1zIGVhc2Utb3V0O1xuJHRodW1ibmFpbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzOyAvLyAzNC4gVGl0bGUgQmFyXG4vLyAtLS0tLS0tLS0tLS0tXG4kdGl0bGViYXItYmFja2dyb3VuZDogJGJsYWNrO1xuJHRpdGxlYmFyLWNvbG9yOiAkd2hpdGU7XG4kdGl0bGViYXItcGFkZGluZzogMC41cmVtO1xuJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ6IGJvbGQ7XG4kdGl0bGViYXItaWNvbi1jb2xvcjogJHdoaXRlO1xuJHRpdGxlYmFyLWljb24tY29sb3ItaG92ZXI6ICRtZWRpdW0tZ3JheTtcbiR0aXRsZWJhci1pY29uLXNwYWNpbmc6IDAuMjVyZW07IC8vIDM1LiBUb29sdGlwXG4vLyAtLS0tLS0tLS0tLVxuJGhhcy10aXAtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4kaGFzLXRpcC1ib3JkZXItYm90dG9tOiBkb3R0ZWQgMXB4ICRkYXJrLWdyYXk7XG4kdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2s7XG4kdG9vbHRpcC1jb2xvcjogJHdoaXRlO1xuJHRvb2x0aXAtcGFkZGluZzogMC43NXJlbTtcbiR0b29sdGlwLWZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZTtcbiR0b29sdGlwLXBpcC13aWR0aDogMC43NXJlbTtcbiR0b29sdGlwLXBpcC1oZWlnaHQ6ICR0b29sdGlwLXBpcC13aWR0aCAqIDAuODY2O1xuJHRvb2x0aXAtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1czsgLy8gMzYuIFRvcCBCYXJcbi8vIC0tLS0tLS0tLS0tXG4kdG9wYmFyLXBhZGRpbmc6IDAuNXJlbTtcbiR0b3BiYXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG4kdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZDogJHRvcGJhci1iYWNrZ3JvdW5kO1xuJHRvcGJhci10aXRsZS1zcGFjaW5nOiAxcmVtO1xuJHRvcGJhci1pbnB1dC13aWR0aDogMjAwcHg7XG4kdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludDogbWVkaXVtO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ21hdGgnO1xuQGltcG9ydCAndW5pdCc7XG5AaW1wb3J0ICd2YWx1ZSc7XG5AaW1wb3J0ICdkaXJlY3Rpb24nO1xuQGltcG9ydCAnY29sb3InO1xuQGltcG9ydCAnc2VsZWN0b3InO1xuQGltcG9ydCAnZmxleCc7XG5AaW1wb3J0ICdicmVha3BvaW50JztcbkBpbXBvcnQgJ21peGlucyc7XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIEZpbmRzIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0d28gaW50ZWdlcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGEgLSBGaXJzdCBudW1iZXIgdG8gY29tcGFyZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGIgLSBTZWNvbmQgbnVtYmVyIHRvIGNvbXBhcmUuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3IuXG5AZnVuY3Rpb24gZ2NkKCRhLCAkYikge1xuICAvLyBGcm9tOiBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvR3JlYXRlc3RfY29tbW9uX2Rpdmlzb3IjSmF2YVNjcmlwdFxuICBAaWYgKCRiICE9IDApIHtcbiAgICBAcmV0dXJuIGdjZCgkYiwgJGEgJSAkYik7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYWJzKCRhKTtcbiAgfVxufVxuXG4vLy8gSGFuZGxlcyBkZWNpbWFsIGV4cG9uZW50cyBieSB0cnlpbmcgdG8gY29udmVydCB0aGVtIGludG8gYSBmcmFjdGlvbiBhbmQgdGhlbiB1c2UgYSBudGgtcm9vdC1hbGdvcml0aG0gZm9yIHBhcnRzIG9mIHRoZSBjYWxjdWxhdGlvblxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIC0gVGhlIGJhc2UgbnVtYmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZXhwb25lbnQgLSBUaGUgZXhwb25lbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgcHJvZHVjdCBvZiB0aGUgZXhwb25lbnRpYXRpb24uXG5AZnVuY3Rpb24gcG93KCRiYXNlLCAkZXhwb25lbnQsICRwcmVjOiAxMikge1xuICBAaWYgKGZsb29yKCRleHBvbmVudCkgIT0gJGV4cG9uZW50KSB7XG4gICAgJHByZWMyIDogcG93KDEwLCAkcHJlYyk7XG4gICAgJGV4cG9uZW50OiByb3VuZCgkZXhwb25lbnQgKiAkcHJlYzIpO1xuICAgICRkZW5vbWluYXRvcjogZ2NkKCRleHBvbmVudCwgJHByZWMyKTtcbiAgICBAcmV0dXJuIG50aC1yb290KHBvdygkYmFzZSwgJGV4cG9uZW50IC8gJGRlbm9taW5hdG9yKSwgJHByZWMyIC8gJGRlbm9taW5hdG9yLCAkcHJlYyk7XG4gIH1cblxuICAkdmFsdWU6ICRiYXNlO1xuICBAaWYgJGV4cG9uZW50ID4gMSB7XG4gICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkZXhwb25lbnQge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgKiAkYmFzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGV4cG9uZW50IDwgMSB7XG4gICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAtJGV4cG9uZW50IHtcbiAgICAgICR2YWx1ZTogJHZhbHVlIC8gJGJhc2U7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cbkBmdW5jdGlvbiBudGgtcm9vdCgkbnVtLCAkbjogMiwgJHByZWM6IDEyKSB7XG4gIC8vIEZyb206IGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9OdGhfcm9vdCNKYXZhU2NyaXB0XG4gICR4OiAxO1xuXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJHByZWMge1xuICAgICR4OiAxIC8gJG4gKiAoKCRuIC0gMSkgKiAkeCArICgkbnVtIC8gcG93KCR4LCAkbiAtIDEpKSk7XG4gIH1cblxuICBAcmV0dXJuICR4O1xufVxuXG4vLy8gQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgd2lkdGggZm9yIGEgZ2l2ZW4gcmF0aW8uXG4vLy8gQHBhcmFtIHtMaXN0fSAkcmF0aW8gLSBSYXRpbyB0byB1c2UgdG8gY2FsY3VsYXRlIHRoZSBoZWlnaHQsIGZvcm1hdHRlZCBhcyBgeCBieSB5YC5cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IEEgcGVyY2VudGFnZSB2YWx1ZSBmb3IgdGhlIGhlaWdodCByZWxhdGl2ZSB0byB0aGUgd2lkdGggb2YgYSByZXNwb25zaXZlIGNvbnRhaW5lci5cbkBmdW5jdGlvbiByYXRpby10by1wZXJjZW50YWdlKCRyYXRpbykge1xuICAkdzogbnRoKCRyYXRpbywgMSk7XG4gICRoOiBudGgoJHJhdGlvLCAzKTtcbiAgQHJldHVybiAkaCAvICR3ICogMTAwJTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4kZ2xvYmFsLWZvbnQtc2l6ZTogMTAwJSAhZGVmYXVsdDtcblxuLy8vIFJlbW92ZXMgdGhlIHVuaXQgKGUuZy4gcHgsIGVtLCByZW0pIGZyb20gYSB2YWx1ZSwgcmV0dXJuaW5nIHRoZSBudW1iZXIgb25seS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtIC0gTnVtYmVyIHRvIHN0cmlwIHVuaXQgZnJvbS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBzYW1lIG51bWJlciwgc2FucyB1bml0LlxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJG51bSkge1xuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcbn1cblxuLy8vIENvbnZlcnRzIG9uZSBvciBtb3JlIHBpeGVsIHZhbHVlcyBpbnRvIG1hdGNoaW5nIHJlbSB2YWx1ZXMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkdmFsdWVzIC0gT25lIG9yIG1vcmUgdmFsdWVzIHRvIGNvbnZlcnQuIEJlIHN1cmUgdG8gc2VwYXJhdGUgdGhlbSB3aXRoIHNwYWNlcyBhbmQgbm90IGNvbW1hcy4gSWYgeW91IG5lZWQgdG8gY29udmVydCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB3cmFwIHRoZSBsaXN0IGluIHBhcmVudGhlc2VzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBUaGUgYmFzZSB2YWx1ZSB0byB1c2Ugd2hlbiBjYWxjdWxhdGluZyB0aGUgYHJlbWAuIElmIHlvdSdyZSB1c2luZyBGb3VuZGF0aW9uIG91dCBvZiB0aGUgYm94LCB0aGlzIGlzIDE2cHguIElmIHRoaXMgcGFyYW1ldGVyIGlzIGBudWxsYCwgdGhlIGZ1bmN0aW9uIHdpbGwgcmVmZXJlbmNlIHRoZSBgJGJhc2UtZm9udC1zaXplYCB2YXJpYWJsZSBhcyB0aGUgYmFzZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtMaXN0fSBBIGxpc3Qgb2YgY29udmVydGVkIHZhbHVlcy5cbkBmdW5jdGlvbiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZTogbnVsbCkge1xuICAkcmVtLXZhbHVlczogKCk7XG4gICRjb3VudDogbGVuZ3RoKCR2YWx1ZXMpO1xuXG4gIC8vIElmIG5vIGJhc2UgaXMgZGVmaW5lZCwgZGVmZXIgdG8gdGhlIGdsb2JhbCBmb250IHNpemVcbiAgQGlmICRiYXNlID09IG51bGwge1xuICAgICRiYXNlOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxuICAvLyBUaGlzIGlzIGJlY2F1c2UgMTAwJSBmb250IHNpemUgPSAxNnB4IGluIG1vc3QgYWxsIGJyb3dzZXJzXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiAoJGJhc2UgLyAxMDAlKSAqIDE2cHg7XG4gIH1cblxuICAvLyBVc2luZyByZW0gYXMgYmFzZSBhbGxvd3MgY29ycmVjdCBzY2FsaW5nXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiAkY291bnQgPT0gMSB7XG4gICAgQHJldHVybiAtemYtdG8tcmVtKCR2YWx1ZXMsICRiYXNlKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvdW50IHtcbiAgICAkcmVtLXZhbHVlczogYXBwZW5kKCRyZW0tdmFsdWVzLCAtemYtdG8tcmVtKG50aCgkdmFsdWVzLCAkaSksICRiYXNlKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZW0tdmFsdWVzO1xufVxuXG4vLyBDb252ZXJ0cyBhIHVuaXRsZXNzLCBwaXhlbCwgb3IgcmVtIHZhbHVlIHRvIGVtLCBmb3IgdXNlIGluIGJyZWFrcG9pbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC10by1lbSgkdmFsdWUpIHtcbiAgLy8gUGl4ZWwgYW5kIHVuaXRsZXNzIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIHJlbXNcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIG9yIHVuaXRsZXNzKCR2YWx1ZSkge1xuICAgICR2YWx1ZTogcmVtLWNhbGMoJHZhbHVlLCAkYmFzZTogMTZweCk7XG4gIH1cblxuICAvLyBUaGVuIHRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gZW1zXG4gIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpICogMWVtO1xufVxuXG4vLy8gQ29udmVydHMgYSBwaXhlbCB2YWx1ZSB0byBtYXRjaGluZyByZW0gdmFsdWUuICpBbnkqIHZhbHVlIHBhc3NlZCwgcmVnYXJkbGVzcyBvZiB1bml0LCBpcyBhc3N1bWVkIHRvIGJlIGEgcGl4ZWwgdmFsdWUuIEJ5IGRlZmF1bHQsIHRoZSBiYXNlIHBpeGVsIHZhbHVlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSByZW0gdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBQaXhlbCB2YWx1ZSB0byBjb252ZXJ0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBCYXNlIGZvciBwaXhlbCBjb252ZXJzaW9uLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBudW1iZXIgaW4gcmVtcywgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gdmFsdWUgYW5kIHRoZSBiYXNlIHBpeGVsIHZhbHVlLiByZW0gdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCBhcyBpcy5cbkBmdW5jdGlvbiAtemYtdG8tcmVtKCR2YWx1ZSwgJGJhc2U6IG51bGwpIHtcbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gJ251bWJlcicge1xuICAgIEB3YXJuIGluc3BlY3QoJHZhbHVlKSArICcgd2FzIHBhc3NlZCB0byByZW0tY2FsYygpLCB3aGljaCBpcyBub3QgYSBudW1iZXIuJztcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuXG4gIC8vIFRyYW5zZm9ybSBlbSBpbnRvIHJlbSBpZiBzb21lb25lIGhhbmRzIG92ZXIgJ2VtJ3NcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqIDFyZW07XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgcmVtIGlmIHVuaXRzIGZvciAkdmFsdWUgaXMgbm90IHJlbSBvciBlbVxuICBAaWYgdW5pdCgkdmFsdWUpICE9ICdyZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UpICogMXJlbTtcbiAgfVxuXG4gIC8vIFR1cm4gMHJlbSBpbnRvIDBcbiAgQGlmICR2YWx1ZSA9PSAwcmVtIHtcbiAgICAkdmFsdWU6IDA7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwsIHBlcmNlbnRhZ2UsIHJlbSBvciBlbSB2YWx1ZSB0byBhIHVuaXRsZXNzIHZhbHVlIGJhc2VkIG9uIGEgZ2l2ZW4gZm9udCBzaXplLiBJZGVhbCBmb3Igd29ya2luZyBvdXQgdW5pdGxlc3MgbGluZSBoZWlnaHRzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGNvbnZlcnQgdG8gYSB1bml0bGVzcyBsaW5lIGhlaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBmb250IHNpemUgdG8gdXNlIHRvIHdvcmsgb3V0IHRoZSBsaW5lIGhlaWdodCAtIGRlZmF1bHRzIHRvICRnbG9iYWwtZm9udC1zaXplXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gVW5pdGxlc3MgbnVtYmVyXG5AZnVuY3Rpb24gdW5pdGxlc3MtY2FsYygkdmFsdWUsICRiYXNlOiBudWxsKSB7XG5cbiAgLy8gSWYgbm8gYmFzZSBpcyBkZWZpbmVkLCBkZWZlciB0byB0aGUgZ2xvYmFsIGZvbnQgc2l6ZVxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gRmlyc3QsIGxldHMgY29udmVydCBvdXIgJGJhc2UgdG8gcGl4ZWxzXG5cbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiAoJGJhc2UgLyAxMDAlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ3JlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ2VtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIC8vIE5vdyBsZXRzIGNvbnZlcnQgb3VyIHZhbHVlIHRvIHBpeGVscyB0b29cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnJScge1xuICAgICR2YWx1ZTogKCR2YWx1ZSAvIDEwMCUpICogJGJhc2U7XG4gIH1cblxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdyZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqICRiYXNlO1xuICB9XG5cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqICRiYXNlO1xuICB9XG5cbiAgLy8gJ3B4J1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdweCcge1xuICAgIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpIC8gc3RyaXAtdW5pdCgkYmFzZSk7XG4gIH1cblxuICAvLyBhc3N1bWUgdGhhdCBsaW5lLWhlaWdodHMgZ3JlYXRlcm4gdGhlbiAxMCBhcmUgbWVhbnQgdG8gYmUgYWJzb2x1dGUgaW4gJ3B4J1xuICBAaWYgdW5pdGxlc3MoJHZhbHVlKSBhbmQgKCR2YWx1ZSA+IDEwKSB7XG4gICAgQHJldHVybiAkdmFsdWUgLyBzdHJpcC11bml0KCRiYXNlKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBub3QgZmFsc2V5LCBpbiBDU1MgdGVybXMuIEZhbHNleSB2YWx1ZXMgYXJlIGBudWxsYCwgYG5vbmVgLCBgMGAgd2l0aCBhbnkgdW5pdCwgb3IgYW4gZW1wdHkgbGlzdC5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICR2YWwgLSBWYWx1ZSB0byBjaGVjay5cbi8vL1xuLy8vIEByZXR1cm5zIHtCb29sZWFufSBgdHJ1ZWAgaWYgYCR2YWxgIGlzIG5vdCBmYWxzZXkuXG5AZnVuY3Rpb24gaGFzLXZhbHVlKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gbnVsbCBvciAkdmFsID09IG5vbmUge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gJ251bWJlcicgYW5kIHN0cmlwLXVuaXQoJHZhbCkgPT0gMCB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuICBAaWYgdHlwZS1vZigkdmFsKSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkdmFsKSA9PSAwIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vIERldGVybWluZSBhIHRvcC9yaWdodC9ib3R0b20vcmlnaHQgdmFsdWUgb24gYSBwYWRkaW5nLCBtYXJnaW4sIGV0Yy4gcHJvcGVydHksIG5vIG1hdHRlciBob3cgbWFueSB2YWx1ZXMgd2VyZSBwYXNzZWQgaW4uIFVzZSB0aGlzIGZ1bmN0aW9uIGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHNpZGUgb2YgYSB2YWx1ZSwgYnV0IGRvbid0IGtub3cgaWYgdGhlIHZhbHVlIGlzIHVzaW5nIGEgc2hvcnRoYW5kIGZvcm1hdC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdHxOdW1iZXJ9ICR2YWwgLSBWYWx1ZSB0byBhbmFseXplLiBTaG91bGQgYmUgYSBzaG9ydGhhbmQgc2l6aW5nIHByb3BlcnR5LCBlLmcuIFwiMWVtIDJlbSAxZW1cIlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpZGUgLSBTaWRlIHRvIHJldHVybi4gU2hvdWxkIGJlIGB0b3BgLCBgcmlnaHRgLCBgYm90dG9tYCwgb3IgYGxlZnRgLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBzaW5nbGUgdmFsdWUgYmFzZWQgb24gYCR2YWxgIGFuZCBgJHNpZGVgLlxuQGZ1bmN0aW9uIGdldC1zaWRlKCR2YWwsICRzaWRlKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkdmFsKTtcblxuICBAaWYgJGxlbmd0aCA9PSAxIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgQHJldHVybiBtYXAtZ2V0KChcbiAgICAgIHRvcDogbnRoKCR2YWwsIDEpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMSksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgMiksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICksICRzaWRlKTtcbiAgfVxuICBAaWYgJGxlbmd0aCA9PSAzIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoKFxuICAgICAgdG9wOiBudGgoJHZhbCwgMSksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgMiksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMyksXG4gICAgKSwgJHNpZGUpO1xuICB9XG4gIEBpZiAkbGVuZ3RoID09IDQge1xuICAgIEByZXR1cm4gbWFwLWdldCgoXG4gICAgICB0b3A6IG50aCgkdmFsLCAxKSxcbiAgICAgIHJpZ2h0OiBudGgoJHZhbCwgMiksXG4gICAgICBib3R0b206IG50aCgkdmFsLCAzKSxcbiAgICAgIGxlZnQ6IG50aCgkdmFsLCA0KSxcbiAgICApLCAkc2lkZSk7XG4gIH1cbn1cblxuLy8vIEdpdmVuIGJvcmRlciAkdmFsLCBmaW5kIGEgc3BlY2lmaWMgZWxlbWVudCBvZiB0aGUgYm9yZGVyLCB3aGljaCBpcyAkZWxlbS4gVGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgJGVsZW0gYXJlIHdpZHRoLCBzdHlsZSwgYW5kIGNvbG9yLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkdmFsIC0gQm9yZGVyIHZhbHVlIHRvIGZpbmQgYSB2YWx1ZSBpbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRlbGVtIC0gQm9yZGVyIGNvbXBvbmVudCB0byBleHRyYWN0LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBJZiB0aGUgdmFsdWUgZXhpc3RzLCByZXR1cm5zIHRoZSB2YWx1ZS4gSWYgdGhlIHZhbHVlIGlzIG5vdCBpbiB0aGUgYm9yZGVyIGRlZmluaXRpb24sIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBhIDBweCB3aWR0aCwgc29saWQgc3R5bGUsIG9yIGJsYWNrIGJvcmRlci5cbkBmdW5jdGlvbiBnZXQtYm9yZGVyLXZhbHVlKCR2YWwsICRlbGVtKSB7XG4gIC8vIEZpbmQgdGhlIHdpZHRoLCBzdHlsZSwgb3IgY29sb3IgYW5kIHJldHVybiBpdFxuICBAZWFjaCAkdiBpbiAkdmFsIHtcbiAgICAkdHlwZTogdHlwZS1vZigkdik7XG4gICAgQGlmICRlbGVtID09IHdpZHRoIGFuZCAkdHlwZSA9PSAnbnVtYmVyJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgICBAaWYgJGVsZW0gPT0gc3R5bGUgYW5kICR0eXBlID09ICdzdHJpbmcnIHtcbiAgICAgIEByZXR1cm4gJHY7XG4gICAgfVxuICAgIEBpZiAkZWxlbSA9PSBjb2xvciBhbmQgJHR5cGUgPT0gJ2NvbG9yJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgfVxuXG4gIC8vIERlZmF1bHRzXG4gICRkZWZhdWx0czogKFxuICAgIHdpZHRoOiAwLFxuICAgIHN0eWxlOiBzb2xpZCxcbiAgICBjb2xvcjogIzAwMCxcbiAgKTtcblxuICBAcmV0dXJuIG1hcC1nZXQoJGRlZmF1bHRzLCAkZWxlbSk7XG59XG5cbi8vLyBGaW5kcyBhIHZhbHVlIGluIGEgbmVzdGVkIG1hcC5cbi8vLyBAbGluayBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL3Nhc3MvZGVlcC1nZXRzZXQtbWFwcy8gRGVlcCBHZXQvU2V0IGluIE1hcHNcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHB1bGwgYSB2YWx1ZSBmcm9tLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5cy4uLiAtIEtleXMgdG8gdXNlIHdoZW4gbG9va2luZyBmb3IgYSB2YWx1ZS5cbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgbWFwLlxuQGZ1bmN0aW9uIG1hcC1kZWVwLWdldCgkbWFwLCAka2V5cy4uLikge1xuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICB9XG4gIEByZXR1cm4gJG1hcDtcbn1cblxuLy8vIENhc3RzIGEgbWFwIGludG8gYSBsaXN0LlxuLy8vIEBsaW5rIGh0dHA6Ly9odWdvZ2lyYXVkZWwuY29tLzIwMTQvMDQvMjgvY2FzdGluZy1tYXAtaW50by1saXN0L1xuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gcHVsbCBhIHZhbHVlIGZyb20uXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gRGVwZW5kaW5nIG9uIHRoZSBmbGFnLCByZXR1cm5zIGVpdGhlciAka2V5cyBvciAkdmFsdWVzIG9yIGJvdGguXG5AZnVuY3Rpb24gbWFwLXRvLWxpc3QoJG1hcCwgJGtlZXA6ICdib3RoJykge1xuICAka2VlcDogaWYoaW5kZXgoJ2tleXMnICd2YWx1ZXMnLCAka2VlcCksICRrZWVwLCAnYm90aCcpO1xuXG4gIEBpZiB0eXBlLW9mKCRtYXApID09ICdtYXAnIHtcbiAgICAka2V5czogKCk7XG4gICAgJHZhbHVlczogKCk7XG5cbiAgICBAZWFjaCAka2V5LCAkdmFsIGluICRtYXAge1xuICAgICAgJGtleXM6IGFwcGVuZCgka2V5cywgJGtleSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJHZhbCk7XG4gICAgfVxuXG4gICAgQGlmICRrZWVwID09ICdrZXlzJyB7XG4gICAgICBAcmV0dXJuICRrZXlzO1xuICAgIH1cbiAgICBAZWxzZSBpZiAka2VlcCA9PSAndmFsdWVzJyB7XG4gICAgICBAcmV0dXJuICR2YWx1ZXM7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gemlwKCRrZXlzLCAkdmFsdWVzKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGlmKHR5cGUtb2YoJG1hcCkgIT0gJ2xpc3QnLCAoJHZhbHVlLCksICRtYXApO1xuXG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIFJldHVybnMgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBvZiAkZGlyXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgLSBVc2VkIGRpcmVjdGlvbiBiZXR3ZWVuIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiBhbmQgXCJsZWZ0XCIuXG4vLy8gQHJldHVybiB7S2V5d29yZH0gT3Bwb3NpdGUgZGlyZWN0aW9uIG9mICRkaXJcbkBmdW5jdGlvbiBkaXJlY3Rpb24tb3Bwb3NpdGUoXG4gICRkaXJcbikge1xuICAkZGlyczogKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7XG4gICRwbGFjZTogaW5kZXgoJGRpcnMsICRkaXIpO1xuXG4gIEBpZiAkcGxhY2UgPT0gbnVsbCB7XG4gICAgQGVycm9yICdkaXJlY3Rpb24tb3Bwb3NpdGU6IEludmFsaWQgJGRpciBwYXJhbWV0ZXIsIGV4cGVjdGVkIGEgdmFsdWUgZnJvbSBcIiN7JGRpcnN9XCIsIGZvdW5kIFwiI3skZGlyfVwiLic7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQ2FsY3VsIHRoZSBvcHBvc2l0ZSBwbGFjZSBpbiBhIGNpcmNsZSwgd2l0aCBhIHN0YXJ0aW5nIGluZGV4IG9mIDFcbiAgJGxlbmd0aDogbGVuZ3RoKCRkaXJzKTtcbiAgJGRlbWk6ICRsZW5ndGggLyAyO1xuICAkb3Bwb3NpdGUtcGxhY2U6ICgoJHBsYWNlICsgJGRlbWkgLSAxKSAlICRsZW5ndGgpICsgMTtcblxuICBAcmV0dXJuIG50aCgkZGlycywgJG9wcG9zaXRlLXBsYWNlKTtcbn1cblxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ21hdGgnO1xuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gQ2hlY2tzIHRoZSBsdW1pbmFuY2Ugb2YgYCRjb2xvcmAuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBDb2xvciB0byBjaGVjayB0aGUgbHVtaW5hbmNlIG9mLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGx1bWluYW5jZSBvZiBgJGNvbG9yYC5cbkBmdW5jdGlvbiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yKSB7XG4gIC8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL0xlYVZlcm91L2NvbnRyYXN0LXJhdGlvL2Jsb2IvZ2gtcGFnZXMvY29sb3IuanNcbiAgLy8gRm9ybXVsYTogaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZlxuICAkcmdiYTogcmVkKCRjb2xvciksIGdyZWVuKCRjb2xvciksIGJsdWUoJGNvbG9yKTtcbiAgJHJnYmEyOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDMge1xuICAgICRyZ2I6IG50aCgkcmdiYSwgJGkpO1xuICAgICRyZ2I6ICRyZ2IgLyAyNTU7XG5cbiAgICAkcmdiOiBpZigkcmdiIDwgMC4wMzkyOCwgJHJnYiAvIDEyLjkyLCBwb3coKCRyZ2IgKyAwLjA1NSkgLyAxLjA1NSwgMi40KSk7XG5cbiAgICAkcmdiYTI6IGFwcGVuZCgkcmdiYTIsICRyZ2IpO1xuICB9XG5cbiAgQHJldHVybiAwLjIxMjYgKiBudGgoJHJnYmEyLCAxKSArIDAuNzE1MiAqIG50aCgkcmdiYTIsIDIpICsgMC4wNzIyICogbnRoKCRyZ2JhMiwgMyk7XG59XG5cbi8vLyBDaGVja3MgdGhlIGNvbnRyYXN0IHJhdGlvIG9mIHR3byBjb2xvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IxIC0gRmlyc3QgY29sb3IgdG8gY29tcGFyZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IyIC0gU2Vjb25kIGNvbG9yIHRvIGNvbXBhcmUuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgY29udHJhc3QgcmF0aW8gb2YgdGhlIGNvbXBhcmVkIGNvbG9ycy5cbkBmdW5jdGlvbiBjb2xvci1jb250cmFzdCgkY29sb3IxLCAkY29sb3IyKSB7XG4gIC8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL0xlYVZlcm91L2NvbnRyYXN0LXJhdGlvL2Jsb2IvZ2gtcGFnZXMvY29sb3IuanNcbiAgLy8gRm9ybXVsYTogaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNjb250cmFzdC1yYXRpb2RlZlxuICAkbHVtaW5hbmNlMTogY29sb3ItbHVtaW5hbmNlKCRjb2xvcjEpICsgMC4wNTtcbiAgJGx1bWluYW5jZTI6IGNvbG9yLWx1bWluYW5jZSgkY29sb3IyKSArIDAuMDU7XG4gICRyYXRpbzogJGx1bWluYW5jZTEgLyAkbHVtaW5hbmNlMjtcblxuICBAaWYgJGx1bWluYW5jZTIgPiAkbHVtaW5hbmNlMSB7XG4gICAgJHJhdGlvOiAxIC8gJHJhdGlvO1xuICB9XG5cbiAgJHJhdGlvOiByb3VuZCgkcmF0aW8gKiAxMCkgLyAxMDtcblxuICBAcmV0dXJuICRyYXRpbztcbn1cblxuLy8vIENoZWNrcyB0aGUgbHVtaW5hbmNlIG9mIGAkYmFzZWAsIGFuZCByZXR1cm5zIHRoZSBjb2xvciBmcm9tIGAkY29sb3JzYCAobGlzdCBvZiBjb2xvcnMpIHRoYXQgaGFzIHRoZSBtb3N0IGNvbnRyYXN0LlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yMSAtIEZpcnN0IGNvbG9yIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yMiAtIFNlY29uZCBjb2xvciB0byBjb21wYXJlLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGNvbnRyYXN0IHJhdGlvIG9mIHRoZSBjb21wYXJlZCBjb2xvcnMuXG5AZnVuY3Rpb24gY29sb3ItcGljay1jb250cmFzdCgkYmFzZSwgJGNvbG9yczogKCR3aGl0ZSwgJGJsYWNrKSwgJHRvbGVyYW5jZTogMCkge1xuICAkY29udHJhc3Q6IGNvbG9yLWNvbnRyYXN0KCRiYXNlLCBudGgoJGNvbG9ycywgMSkpO1xuICAkYmVzdDogbnRoKCRjb2xvcnMsIDEpO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRjb2xvcnMpIHtcbiAgICAkY3VycmVudC1jb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAkaSkpO1xuICAgIEBpZiAoJGN1cnJlbnQtY29udHJhc3QgLSAkY29udHJhc3QgPiAkdG9sZXJhbmNlKSB7XG4gICAgICAkY29udHJhc3Q6IGNvbG9yLWNvbnRyYXN0KCRiYXNlLCBudGgoJGNvbG9ycywgJGkpKTtcbiAgICAgICRiZXN0OiBudGgoJGNvbG9ycywgJGkpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJGNvbnRyYXN0IDwgMykge1xuICAgIEB3YXJuIFwiQ29udHJhc3QgcmF0aW8gb2YgI3skYmVzdH0gb24gI3skYmFzZX0gaXMgcHJldHR5IGJhZCwganVzdCAjeyRjb250cmFzdH1cIjtcbiAgfVxuXG4gIEByZXR1cm4gJGJlc3Q7XG59XG5cbi8vLyBTY2FsZXMgYSBjb2xvciB0byBiZSBkYXJrZXIgaWYgaXQncyBsaWdodCwgb3IgbGlnaHRlciBpZiBpdCdzIGRhcmsuIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHRpbnQgYSBjb2xvciBhcHByb3ByaWF0ZSB0byBpdHMgbGlnaHRuZXNzLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3IgdG8gc2NhbGUuXG4vLy8gQHBhcmFtIHtQZXJjZW50YWdlfSAkc2NhbGUgWzUlXSAtIEFtb3VudCB0byBzY2FsZSB1cCBvciBkb3duLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHRocmVzaG9sZCBbNDAlXSAtIFRocmVzaG9sZCBvZiBsaWdodG5lc3MgdG8gY2hlY2sgYWdhaW5zdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtDb2xvcn0gQSBzY2FsZWQgY29sb3IuXG5AZnVuY3Rpb24gc21hcnQtc2NhbGUoJGNvbG9yLCAkc2NhbGU6IDUlLCAkdGhyZXNob2xkOiA0MCUpIHtcbiAgQGlmIGxpZ2h0bmVzcygkY29sb3IpID4gJHRocmVzaG9sZCB7XG4gICAgJHNjYWxlOiAtJHNjYWxlO1xuICB9XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkc2NhbGUpO1xufVxuXG4vLy8gR2V0IGNvbG9yIGZyb20gZm91bmRhdGlvbi1wYWxldHRlXG4vLy9cbi8vLyBAcGFyYW0ge2tleX0gY29sb3Iga2V5IGZyb20gZm91bmRhdGlvbi1wYWxldHRlXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IGNvbG9yIGZyb20gZm91bmRhdGlvbi1wYWxldHRlXG5AZnVuY3Rpb24gZ2V0LWNvbG9yKCRrZXkpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsICRrZXkpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgJGtleSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnZ2l2ZW4gJGtleSBpcyBub3QgYXZhaWxhYmxlIGluICRmb3VuZGF0aW9uLXBhbGV0dGUnO1xuICB9XG59XG5cbi8vLyBUcmFuc2ZlcnMgdGhlIGNvbG9ycyBpbiB0aGUgYCRmb3VuZGF0aW9uLXBhbGV0dGVgbWFwIGludG8gdmFyaWFibGVzLCBzdWNoIGFzIGAkcHJpbWFyeS1jb2xvcmAgYW5kIGAkc2Vjb25kYXJ5LWNvbG9yYC4gQ2FsbCB0aGlzIG1peGluIGJlbG93IHRoZSBHbG9iYWwgc2VjdGlvbiBvZiB5b3VyIHNldHRpbmdzIGZpbGUgdG8gcHJvcGVybHkgbWlncmF0ZSB5b3VyIGNvZGViYXNlLlxuQG1peGluIGFkZC1mb3VuZGF0aW9uLWNvbG9ycygpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpIHtcbiAgICAkcHJpbWFyeS1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBzZWNvbmRhcnkpIHtcbiAgICAkc2Vjb25kYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHNlY29uZGFyeSkgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc3VjY2Vzcykge1xuICAgICRzdWNjZXNzLWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHN1Y2Nlc3MpICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHdhcm5pbmcpIHtcbiAgICAkd2FybmluZy1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCB3YXJuaW5nKSAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBhbGVydCkge1xuICAgICRhbGVydC1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBhbGVydCkgIWdsb2JhbDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBGaW5kcyB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgdHdvIGludGVnZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRhIC0gRmlyc3QgbnVtYmVyIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiIC0gU2Vjb25kIG51bWJlciB0byBjb21wYXJlLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yLlxuQGZ1bmN0aW9uIGdjZCgkYSwgJGIpIHtcbiAgLy8gRnJvbTogaHR0cDovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL0dyZWF0ZXN0X2NvbW1vbl9kaXZpc29yI0phdmFTY3JpcHRcbiAgQGlmICgkYiAhPSAwKSB7XG4gICAgQHJldHVybiBnY2QoJGIsICRhICUgJGIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGFicygkYSk7XG4gIH1cbn1cblxuLy8vIEhhbmRsZXMgZGVjaW1hbCBleHBvbmVudHMgYnkgdHJ5aW5nIHRvIGNvbnZlcnQgdGhlbSBpbnRvIGEgZnJhY3Rpb24gYW5kIHRoZW4gdXNlIGEgbnRoLXJvb3QtYWxnb3JpdGhtIGZvciBwYXJ0cyBvZiB0aGUgY2FsY3VsYXRpb25cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBiYXNlIG51bWJlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGV4cG9uZW50IC0gVGhlIGV4cG9uZW50LlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHByb2R1Y3Qgb2YgdGhlIGV4cG9uZW50aWF0aW9uLlxuQGZ1bmN0aW9uIHBvdygkYmFzZSwgJGV4cG9uZW50LCAkcHJlYzogMTIpIHtcbiAgQGlmIChmbG9vcigkZXhwb25lbnQpICE9ICRleHBvbmVudCkge1xuICAgICRwcmVjMiA6IHBvdygxMCwgJHByZWMpO1xuICAgICRleHBvbmVudDogcm91bmQoJGV4cG9uZW50ICogJHByZWMyKTtcbiAgICAkZGVub21pbmF0b3I6IGdjZCgkZXhwb25lbnQsICRwcmVjMik7XG4gICAgQHJldHVybiBudGgtcm9vdChwb3coJGJhc2UsICRleHBvbmVudCAvICRkZW5vbWluYXRvciksICRwcmVjMiAvICRkZW5vbWluYXRvciwgJHByZWMpO1xuICB9XG5cbiAgJHZhbHVlOiAkYmFzZTtcbiAgQGlmICRleHBvbmVudCA+IDEge1xuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGV4cG9uZW50IHtcbiAgICAgICR2YWx1ZTogJHZhbHVlICogJGJhc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRleHBvbmVudCA8IDEge1xuICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggLSRleHBvbmVudCB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAvICRiYXNlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG5AZnVuY3Rpb24gbnRoLXJvb3QoJG51bSwgJG46IDIsICRwcmVjOiAxMikge1xuICAvLyBGcm9tOiBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTnRoX3Jvb3QjSmF2YVNjcmlwdFxuICAkeDogMTtcblxuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRwcmVjIHtcbiAgICAkeDogMSAvICRuICogKCgkbiAtIDEpICogJHggKyAoJG51bSAvIHBvdygkeCwgJG4gLSAxKSkpO1xuICB9XG5cbiAgQHJldHVybiAkeDtcbn1cblxuLy8vIENhbGN1bGF0ZXMgdGhlIGhlaWdodCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHdpZHRoIGZvciBhIGdpdmVuIHJhdGlvLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHJhdGlvIC0gUmF0aW8gdG8gdXNlIHRvIGNhbGN1bGF0ZSB0aGUgaGVpZ2h0LCBmb3JtYXR0ZWQgYXMgYHggYnkgeWAuXG4vLy8gQHJldHVybiB7TnVtYmVyfSBBIHBlcmNlbnRhZ2UgdmFsdWUgZm9yIHRoZSBoZWlnaHQgcmVsYXRpdmUgdG8gdGhlIHdpZHRoIG9mIGEgcmVzcG9uc2l2ZSBjb250YWluZXIuXG5AZnVuY3Rpb24gcmF0aW8tdG8tcGVyY2VudGFnZSgkcmF0aW8pIHtcbiAgJHc6IG50aCgkcmF0aW8sIDEpO1xuICAkaDogbnRoKCRyYXRpbywgMyk7XG4gIEByZXR1cm4gJGggLyAkdyAqIDEwMCU7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIEdlbmVyYXRlcyBhIHNlbGVjdG9yIHdpdGggZXZlcnkgdGV4dCBpbnB1dCB0eXBlLiBZb3UgY2FuIGFsc28gZmlsdGVyIHRoZSBsaXN0IHRvIG9ubHkgb3V0cHV0IGEgc3Vic2V0IG9mIHRob3NlIHNlbGVjdG9ycy5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdHxLZXl3b3JkfSAkdHlwZXMgWygpXSAtIEEgbGlzdCBvZiB0ZXh0IGlucHV0IHR5cGVzIHRvIHVzZS4gTGVhdmUgYmxhbmsgdG8gdXNlIGFsbCBvZiB0aGVtLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJG1vZGlmaWVyIFsnJ10gLSBBIG1vZGlmaWVyIHRvIGJlIGFwcGxpZWQgdG8gZWFjaCB0ZXh0IGlucHV0IHR5cGUgKGUuZy4gYSBjbGFzcyBvciBhIHBzZXVkby1jbGFzcykuIExlYXZlIGJsYW5rIHRvIGlnbm9yZS5cbkBmdW5jdGlvbiB0ZXh0LWlucHV0cygkdHlwZXM6ICgpLCAkbW9kaWZpZXI6ICcnKSB7XG4gICRyZXR1cm46ICgpO1xuXG4gICRhbGwtdHlwZXM6XG4gICAgdGV4dFxuICAgIHBhc3N3b3JkXG4gICAgZGF0ZVxuICAgIGRhdGV0aW1lXG4gICAgZGF0ZXRpbWUtbG9jYWxcbiAgICBtb250aFxuICAgIHdlZWtcbiAgICBlbWFpbFxuICAgIG51bWJlclxuICAgIHNlYXJjaFxuICAgIHRlbFxuICAgIHRpbWVcbiAgICB1cmxcbiAgICBjb2xvcjtcblxuICBAaWYgbm90IGhhcy12YWx1ZSgkdHlwZXMpIHtcbiAgICAkdHlwZXM6ICRhbGwtdHlwZXM7XG4gIH1cblxuICBAZWFjaCAkdHlwZSBpbiAkdHlwZXMge1xuICAgICRyZXR1cm46IGFwcGVuZCgkcmV0dXJuLCB1bnF1b3RlKCdbdHlwZT1cXCcjeyR0eXBlfVxcJ10jeyRtb2RpZmllcn0nKSwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiJC16Zi1mbGV4LWp1c3RpZnk6IChcbiAgJ2xlZnQnOiBmbGV4LXN0YXJ0LFxuICAncmlnaHQnOiBmbGV4LWVuZCxcbiAgJ2NlbnRlcic6IGNlbnRlcixcbiAgJ2p1c3RpZnknOiBzcGFjZS1iZXR3ZWVuLFxuICAnc3BhY2VkJzogc3BhY2UtYXJvdW5kLFxuKTtcblxuJC16Zi1mbGV4LWFsaWduOiAoXG4gICd0b3AnOiBmbGV4LXN0YXJ0LFxuICAnYm90dG9tJzogZmxleC1lbmQsXG4gICdtaWRkbGUnOiBjZW50ZXIsXG4gICdzdHJldGNoJzogc3RyZXRjaCxcbik7XG5cbiQtemYtZmxleC1kaXJlY3Rpb246IChcbiAgJ3Jvdyc6IHJvdyxcbiAgJ3Jvdy1yZXZlcnNlJzogcm93LXJldmVyc2UsXG4gICdjb2x1bW4nOiBjb2x1bW4sXG4gICdjb2x1bW4tcmV2ZXJzZSc6IGNvbHVtbi1yZXZlcnNlLFxuKTtcblxuLy8vIEVuYWJsZXMgZmxleGJveCBieSBhZGRpbmcgYGRpc3BsYXk6IGZsZXhgIHRvIHRoZSBlbGVtZW50LlxuQG1peGluIGZsZXgge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4vLy8gSG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgYWxpZ25zIHRoZSBpdGVtcyB3aXRoaW4gYSBmbGV4IGNvbnRhaW5lci5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHggW251bGxdIC0gSG9yaXpvbnRhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYGxlZnRgLCBgcmlnaHRgLCBgY2VudGVyYCwgYGp1c3RpZnlgLCBvciBgc3BhY2VkYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IGhvcml6b250YWwgYWxpZ25tZW50LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHkgW251bGxdIC0gVmVydGljYWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGB0b3BgLCBgYm90dG9tYCwgYG1pZGRsZWAsIG9yIGBzdHJldGNoYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiBmbGV4LWFsaWduKCR4OiBudWxsLCAkeTogbnVsbCkge1xuICBAaWYgJHgge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtanVzdGlmeSwgJHgpIHtcbiAgICAgICR4OiBtYXAtZ2V0KCQtemYtZmxleC1qdXN0aWZ5LCAkeCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtcm93LWFsaWduKCk6ICN7JHh9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4gVXNlIGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnksIG9yIHNwYWNlZC4nO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkeSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1hbGlnbiwgJHkpIHtcbiAgICAgICR5OiBtYXAtZ2V0KCQtemYtZmxleC1hbGlnbiwgJHkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnZmxleC1ncmlkLXJvdy1hbGlnbigpOiAjeyR5fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgdmVydGljYWwgYWxpZ25tZW50LiBVc2UgdG9wLCBib3R0b20sIG1pZGRsZSwgb3Igc3RyZXRjaC4nO1xuICAgIH1cbiAgfVxuXG4gIGp1c3RpZnktY29udGVudDogJHg7XG4gIGFsaWduLWl0ZW1zOiAkeTtcbn1cblxuLy8vIFZlcnRpY2FsbHkgYWxpZ24gYSBzaW5nbGUgY29sdW1uIHdpdGhpbiBhIGZsZXggcm93LiBBcHBseSB0aGlzIG1peGluIHRvIGEgZmxleCBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR5IFtudWxsXSAtIFZlcnRpY2FsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgdG9wYCwgYGJvdHRvbWAsIGBtaWRkbGVgLCBvciBgc3RyZXRjaGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gZmxleC1hbGlnbi1zZWxmKCR5OiBudWxsKSB7XG4gIEBpZiAkeSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1hbGlnbiwgJHkpIHtcbiAgICAgICR5OiBtYXAtZ2V0KCQtemYtZmxleC1hbGlnbiwgJHkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnZmxleC1ncmlkLWNvbHVtbi1hbGlnbigpOiAjeyR5fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgYWxpZ25tZW50LiBVc2UgdG9wLCBib3R0b20sIG1pZGRsZSwgb3Igc3RyZXRjaC4nO1xuICAgIH1cbiAgfVxuXG4gIGFsaWduLXNlbGY6ICR5O1xufVxuXG4vLy8gQ2hhbmdlcyB0aGUgc291cmNlIG9yZGVyIG9mIGEgZmxleCBjaGlsZC4gQ2hpbGRyZW4gd2l0aCBsb3dlciBudW1iZXJzIGFwcGVhciBmaXJzdCBpbiB0aGUgbGF5b3V0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb3JkZXIgWzBdIC0gT3JkZXIgbnVtYmVyIHRvIGFwcGx5LlxuQG1peGluIGZsZXgtb3JkZXIoJG9yZGVyOiAwKSB7XG4gIG9yZGVyOiAkb3JkZXI7XG59XG5cbi8vLyBDaGFuZ2UgZmxleC1kaXJlY3Rpb25cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXJlY3Rpb24gW3Jvd10gLSBGbGV4IGRpcmVjdGlvbiB0byB1c2UuIENhbiBiZVxuLy8vICAgLSByb3cgKGRlZmF1bHQpOiBzYW1lIGFzIHRleHQgZGlyZWN0aW9uXG4vLy8gICAtIHJvdy1yZXZlcnNlOiBvcHBvc2l0ZSB0byB0ZXh0IGRpcmVjdGlvblxuLy8vICAgLSBjb2x1bW46IHNhbWUgYXMgcm93IGJ1dCB0b3AgdG8gYm90dG9tXG4vLy8gICAtIGNvbHVtbi1yZXZlcnNlOiBzYW1lIGFzIHJvdy1yZXZlcnNlIHRvcCB0byBib3R0b21cbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkZGlyZWN0aW9uOiByb3cpIHtcbiAgZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVha3BvaW50c1xuLy8vL1xuXG4vLy8gQSBsaXN0IG9mIG5hbWVkIGJyZWFrcG9pbnRzLiBZb3UgY2FuIHVzZSB0aGVzZSB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBxdWlja2x5IGNyZWF0ZSBtZWRpYSBxdWVyaWVzLlxuLy8vIEB0eXBlIE1hcFxuJGJyZWFrcG9pbnRzOiAoXG4gIHNtYWxsOiAwLFxuICBtZWRpdW06IDY0MHB4LFxuICBsYXJnZTogMTAyNHB4LFxuICB4bGFyZ2U6IDEyMDBweCxcbiAgeHhsYXJnZTogMTQ0MHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIFRoZSBsYXJnZXN0IG5hbWVkIGJyZWFrcG9pbnQgaW4gd2hpY2ggdG8gaW5jbHVkZSBwcmludCBhcyBhIG1lZGlhIHR5cGVcbi8vLyBAdHlwZSBLZXl3b3JkXG4kcHJpbnQtYnJlYWtwb2ludDogbGFyZ2UgIWRlZmF1bHQ7XG5cbiQtemYtemVyby1icmVha3BvaW50OiBzbWFsbCAhZGVmYXVsdDtcblxuJC16Zi1icmVha3BvaW50cy1rZXlzOiBtYXAtdG8tbGlzdCgkYnJlYWtwb2ludHMsICdrZXlzJyk7XG5cbkBpZiBudGgobWFwLXZhbHVlcygkYnJlYWtwb2ludHMpLCAxKSAhPSAwIHtcbiAgQGVycm9yICdZb3VyIHNtYWxsZXN0IGJyZWFrcG9pbnQgKGRlZmluZWQgaW4gJGJyZWFrcG9pbnRzKSBtdXN0IGJlIHNldCB0byBcIjBcIi4nO1xufVxuQGVsc2Uge1xuICAkLXpmLXplcm8tYnJlYWtwb2ludDogbnRoKG1hcC1rZXlzKCRicmVha3BvaW50cyksIDEpO1xufVxuXG4vLy8gQWxsIG9mIHRoZSBuYW1lcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBvdXRwdXQgYXMgY2xhc3NlcyBpbiB5b3VyIENTUywgbGlrZSBgLnNtYWxsLTEyYCwgYC5tZWRpdW0tNmAsIGFuZCBzbyBvbi4gRWFjaCB2YWx1ZSBpbiB0aGlzIGxpc3QgbXVzdCBhbHNvIGJlIGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAuXG4vLy8gQHR5cGUgTGlzdFxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSkgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBzdHJpbmcgbWF0Y2hpbmcgdGhlIGlucHV0IHZhbHVlLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHNlZSB3aGF0IHRoZSBwb3NzaWJsZSBpbnB1dHMgYXJlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbCBbc21hbGxdIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHZhbDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgLy8gU2l6ZSBvciBrZXl3b3JkXG4gICRicDogbnRoKCR2YWwsIDEpO1xuICAvLyBWYWx1ZSBmb3IgbWF4LXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1heDogMDtcbiAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgJGRpcjogaWYobGVuZ3RoKCR2YWwpID4gMSwgbnRoKCR2YWwsIDIpLCB1cCk7XG4gIC8vIEV2ZW50dWFsIG91dHB1dFxuICAkc3RyOiAnJztcbiAgLy8gSXMgaXQgYSBuYW1lZCBtZWRpYSBxdWVyeT9cbiAgJG5hbWVkOiBmYWxzZTtcblxuICAvLyBPcmllbnRhdGlvbiBtZWRpYSBxdWVyaWVzIGhhdmUgYSB1bmlxdWUgc3ludGF4XG4gIEBpZiAkYnAgPT0gJ2xhbmRzY2FwZScgb3IgJGJwID09ICdwb3J0cmFpdCcge1xuICAgIEByZXR1cm4gJyhvcmllbnRhdGlvbjogI3skYnB9KSc7XG4gIH1cbiAgQGVsc2UgaWYgJGJwID09ICdyZXRpbmEnIHtcbiAgICBAcmV0dXJuICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJztcbiAgfVxuXG4gIC8vIFRyeSB0byBwdWxsIGEgbmFtZWQgYnJlYWtwb2ludCBvdXQgb2YgdGhlICRicmVha3BvaW50cyBtYXBcbiAgQGlmIHR5cGUtb2YoJGJwKSA9PSAnc3RyaW5nJyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwKSB7XG4gICAgICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAnZG93bicge1xuICAgICAgICAkYnAtbWF4OiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkYnApO1xuICAgICAgfVxuXG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkYnApO1xuICAgICAgJG5hbWVkOiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkYnA6IDA7XG4gICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBcIiN7JHZhbH1cIiBpcyBub3QgZGVmaW5lZCBpbiB5b3VyICRicmVha3BvaW50cyBzZXR0aW5nLic7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29udmVydCBhbnkgcGl4ZWwsIHJlbSwgb3IgdW5pdGxlc3MgdmFsdWUgdG8gZW1cbiAgJGJwOiAtemYtYnAtdG8tZW0oJGJwKTtcbiAgQGlmICRicC1tYXgge1xuICAgICRicC1tYXg6IC16Zi1icC10by1lbSgkYnAtbWF4KSAtICgxLzE2KTtcbiAgfVxuXG4gIC8vIENvbmRpdGlvbnMgdG8gc2tpcCBtZWRpYSBxdWVyeSBjcmVhdGlvblxuICAvLyAtIEl0J3MgYSBuYW1lZCBicmVha3BvaW50IHRoYXQgcmVzb2x2ZWQgdG8gXCIwIGRvd25cIiBvciBcIjAgdXBcIlxuICAvLyAtIEl0J3MgYSBudW1lcmljIGJyZWFrcG9pbnQgdGhhdCByZXNvbHZlZCB0byBcIjAgXCIgKyBhbnl0aGluZ1xuICBAaWYgJGJwID4gMGVtIG9yICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ2Rvd24nIHtcbiAgICAvLyBgb25seWAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWluLXdpZHRoOiBuKSBhbmQgKG1heC13aWR0aDogbilgXG4gICAgQGlmICRkaXIgPT0gJ29ubHknIHtcbiAgICAgIC8vIE9ubHkgbmFtZWQgbWVkaWEgcXVlcmllcyBjYW4gaGF2ZSBhbiBcIm9ubHlcIiByYW5nZVxuICAgICAgQGlmICRuYW1lZCA9PSB0cnVlIHtcbiAgICAgICAgLy8gT25seSB1c2UgXCJtaW4td2lkdGhcIiBpZiB0aGUgZmxvb3IgaXMgZ3JlYXRlciB0aGFuIDBcbiAgICAgICAgQGlmICRicCA+IDBlbSB7XG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWluLXdpZHRoOiAjeyRicH0pJztcblxuICAgICAgICAgIC8vIE9ubHkgYWRkIFwiYW5kXCIgdG8gdGhlIG1lZGlhIHF1ZXJ5IGlmIHRoZXJlJ3MgYSBjZWlsaW5nXG4gICAgICAgICAgQGlmICRicC1tYXggIT0gbnVsbCB7XG4gICAgICAgICAgICAkc3RyOiAkc3RyICsgJyBhbmQgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbmx5IHVzZSBcIm1heC13aWR0aFwiIGlmIHRoZXJlJ3MgYSBjZWlsaW5nXG4gICAgICAgIEBpZiAkYnAtbWF4ICE9IG51bGwge1xuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1heC13aWR0aDogI3skYnAtbWF4fSknO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEB3YXJuICdicmVha3BvaW50KCk6IE9ubHkgbmFtZWQgbWVkaWEgcXVlcmllcyBjYW4gaGF2ZSBhbiBgb25seWAgcmFuZ2UuJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBgZG93bmAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWF4LXdpZHRoOiBuKWBcbiAgICBAZWxzZSBpZiAkZGlyID09ICdkb3duJyB7XG4gICAgICAkbWF4OiBpZigkbmFtZWQsICRicC1tYXgsICRicCk7XG5cbiAgICAgIC8vIFNraXAgbWVkaWEgcXVlcnkgY3JlYXRpb24gaWYgaW5wdXQgdmFsdWUgaXMgZXhhY3RseSBcIjAgZG93blwiLFxuICAgICAgLy8gdW5sZXNzIHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkIGFzIFwic21hbGwgZG93blwiLCBpbiB3aGljaCBjYXNlIGl0J3MganVzdCBcInNtYWxsIG9ubHlcIlxuICAgICAgQGlmICRuYW1lZCBvciAkYnAgPiAwZW0ge1xuICAgICAgICBAaWYgJG1heCAhPSBudWxsIHtcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtYXgtd2lkdGg6ICN7JG1heH0pJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGB1cGAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWluLXdpZHRoOiBuKWBcbiAgICBAZWxzZSBpZiAkYnAgPiAwZW0ge1xuICAgICAgJHN0cjogJHN0ciArICcobWluLXdpZHRoOiAjeyRicH0pJztcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdHI7XG59XG5cbi8vLyBXcmFwcyBhIG1lZGlhIHF1ZXJ5IGFyb3VuZCB0aGUgY29udGVudCB5b3UgcHV0IGluc2lkZSB0aGUgbWl4aW4uIFRoaXMgbWl4aW4gYWNjZXB0cyBhIG51bWJlciBvZiB2YWx1ZXM6XG4vLy8gIC0gSWYgYSBzdHJpbmcgaXMgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBsb29rIGZvciBpdCBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLCBhbmQgdXNlIGEgbWVkaWEgcXVlcnkgdGhlcmUuXG4vLy8gIC0gSWYgYSBwaXhlbCB2YWx1ZSBpcyBwYXNzZWQsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGFuIGVtIHZhbHVlIHVzaW5nIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgYXMgdGhlIGJhc2UuXG4vLy8gIC0gSWYgYSByZW0gdmFsdWUgaXMgcGFzc2VkLCB0aGUgdW5pdCB3aWxsIGJlIGNoYW5nZWQgdG8gZW0uXG4vLy8gIC0gSWYgYW4gZW0gdmFsdWUgaXMgcGFzc2VkLCB0aGUgdmFsdWUgd2lsbCBiZSB1c2VkIGFzLWlzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbHVlIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuLy8vXG4vLy8gQG91dHB1dCBJZiB0aGUgYnJlYWtwb2ludCBpcyBcIjBweCBhbmQgbGFyZ2VyXCIsIG91dHB1dHMgdGhlIGNvbnRlbnQgYXMtaXMuIE90aGVyd2lzZSwgb3V0cHV0cyB0aGUgY29udGVudCB3cmFwcGVkIGluIGEgbWVkaWEgcXVlcnkuXG5AbWl4aW4gYnJlYWtwb2ludCgkdmFsdWUpIHtcbiAgJHN0cjogYnJlYWtwb2ludCgkdmFsdWUpO1xuICAkYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgJHZhbHVlKTtcbiAgJHBicDogaW5kZXgoJC16Zi1icmVha3BvaW50cy1rZXlzLCAkcHJpbnQtYnJlYWtwb2ludCk7XG5cbiAgLy8gSWYgJHN0ciBpcyBzdGlsbCBhbiBlbXB0eSBzdHJpbmcsIG5vIG1lZGlhIHF1ZXJ5IGlzIG5lZWRlZFxuICBAaWYgJHN0ciA9PSAnJyB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAvLyBPdGhlcndpc2UsIHdyYXAgdGhlIGNvbnRlbnQgaW4gYSBtZWRpYSBxdWVyeVxuICBAZWxzZSB7XG4gICAgLy8gRm9yIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAkcHJpbnQtYnJlYWtwb2ludCwgYWRkIHByaW50IHRvIHRoZSBtZWRpYSB0eXBlc1xuICAgIEBpZiAkYnAgIT0gbnVsbCBhbmQgJGJwIDw9ICRwYnAge1xuICAgICAgQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kICN7JHN0cn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICN7JHN0cn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIENvbnZlcnMgdGhlIGJyZWFrcG9pbnRzIG1hcCB0byBhIFVSTC1lbmNvZGVkIHN0cmluZywgbGlrZSB0aGlzOiBga2V5MT12YWx1ZTEma2V5Mj12YWx1ZTJgLiBUaGUgdmFsdWUgaXMgdGhlbiBkcm9wcGVkIGludG8gdGhlIENTUyBmb3IgYSBzcGVjaWFsIGA8bWV0YT5gIHRhZywgd2hpY2ggaXMgcmVhZCBieSB0aGUgRm91bmRhdGlvbiBKYXZhU2NyaXB0LiBUaGlzIGlzIGhvdyB3ZSB0cmFuc2ZlciB2YWx1ZXMgZnJvbSBTYXNzIHRvIEphdmFTY3JpcHQsIHNvIHRoZXkgY2FuIGJlIGRlZmluZWQgaW4gb25lIHBsYWNlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gY29udmVydC5cbi8vL1xuLy8vIEByZXR1cm5zIHtTdHJpbmd9IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG1hcCdzIGNvbnRlbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC1zZXJpYWxpemUoJG1hcCkge1xuICAkc3RyOiAnJztcbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAge1xuICAgICRzdHI6ICRzdHIgKyAka2V5ICsgJz0nICsgLXpmLWJwLXRvLWVtKCR2YWx1ZSkgKyAnJic7XG4gIH1cbiAgJHN0cjogc3RyLXNsaWNlKCRzdHIsIDEsIC0yKTtcblxuICBAcmV0dXJuICRzdHI7XG59XG5cbi8vLyBGaW5kIHRoZSBuZXh0IGtleSBpbiBhIG1hcC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHRyYXZlcnNlLlxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSB2YWx1ZSBmb3IgdGhlIGtleSBhZnRlciBgJGtleWAsIGlmIGAka2V5YCB3YXMgZm91bmQuIElmIGAka2V5YCB3YXMgbm90IGZvdW5kLCBvciBgJGtleWAgd2FzIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBtYXAsIHJldHVybnMgYG51bGxgLlxuQGZ1bmN0aW9uIC16Zi1tYXAtbmV4dCgkbWFwLCAka2V5KSB7XG5cbiAgLy8gU3RvcmUgdGhlIGtleXMgb2YgdGhlIG1hcCBhcyBhIGxpc3RcbiAgJHZhbHVlczogbWFwLWtleXMoJG1hcCk7XG5cbiAgJGk6IDA7XG5cbiAgLy8gSWYgdGhlIEtleSBFeGlzdHMsIEdldCB0aGUgaW5kZXggb2YgdGhlIGtleSB3aXRoaW4gdGhlIG1hcCBhbmQgYWRkIDEgdG8gaXQgZm9yIHRoZSBuZXh0IGJyZWFrcG9pbnQgaW4gdGhlIG1hcFxuICBAaWYgKG1hcC1oYXMta2V5KCRtYXAsICRrZXkpKSB7XG4gICAgJGk6IGluZGV4KCR2YWx1ZXMsICRrZXkpICsgMTtcbiAgfVxuXG4gIC8vIElmIHRoZSBrZXkgZG9lc24ndCBleGlzdCwgb3IgaXQncyB0aGUgbGFzdCBrZXkgaW4gdGhlIG1hcCwgcmV0dXJuIG51bGxcbiAgQGlmICgkaSA+IGxlbmd0aCgkbWFwKSBvciAkaSA9PSAwKSB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSB2YWx1ZVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsIG50aCgkdmFsdWVzLCAkaSkpO1xuICB9XG5cbn1cblxuLy8vIEdldCBhIHZhbHVlIGZvciBhIGJyZWFrcG9pbnQgZnJvbSBhIHJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgc2luZ2xlIHZhbHVlLCByZXR1cm4gaXQgcmVnYXJkbGVzcyBvZiBgJHZhbHVlYC5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBtYXAgYW5kIGhhcyB0aGUga2V5IGAkdmFsdWVgLCB0aGUgZXhhY3QgYnJlYWtwb2ludCB2YWx1ZSBpcyByZXR1cm5lZC5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBtYXAgYW5kIGRvZXMgKm5vdCogaGF2ZSB0aGUgYnJlYWtwb2ludCwgdGhlIHZhbHVlIG1hdGNoaW5nIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGluIHRoZSBjb25maWcgbWFwIGlzIHJldHVybmVkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFwIC0gUmVzcG9uc2l2ZSBjb25maWcgbWFwIG9yIHNpbmdsZSB2YWx1ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSB0byB1c2UuXG4vLy9cbi8vLyBAcmV0dXJuIHtNaXhlZH0gVGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZS5cbkBmdW5jdGlvbiAtemYtZ2V0LWJwLXZhbCgkbWFwLCAkdmFsdWUpIHtcbiAgLy8gSWYgdGhlIGdpdmVuIG1hcCBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0XG4gIEBpZiB0eXBlLW9mKCRtYXApID09ICdudW1iZXInIHtcbiAgICBAcmV0dXJuICRtYXA7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG4gIC8vIENoZWNrIGlmIHRoZSBicmVha3BvaW50IG5hbWUgZXhpc3RzIGluIHRoZSBsb2NhbCBjb25maWcgbWFwXG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRtYXAsICR2YWx1ZSkge1xuICAgIC8vIElmIGl0IGRvZXMsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAkdmFsdWUpO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgZmluZCB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBhbmQgcmV0dXJuIHRoYXQgdmFsdWVcbiAgQGVsc2Uge1xuICAgICRhbmNob3I6IG51bGw7XG4gICAgJGZvdW5kOiBmYWxzZTtcblxuICAgIEBlYWNoICRrZXksICR2YWwgaW4gJGJyZWFrcG9pbnRzIHtcbiAgICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRtYXAsICRrZXkpIHtcbiAgICAgICAgICAkYW5jaG9yOiAka2V5O1xuICAgICAgICB9XG4gICAgICAgIEBpZiAka2V5ID09ICR2YWx1ZSB7XG4gICAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICRhbmNob3IpO1xuICB9XG59XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHNtYWxsKSB7XG4gICRzbWFsbC11cDogc2NyZWVuO1xuICAkc21hbGwtb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoc21hbGwgb25seSl9Jyk7XG59XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIG1lZGl1bSkge1xuICAkbWVkaXVtLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0pfScpO1xuICAkbWVkaXVtLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSBvbmx5KX0nKTtcbn1cblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbGFyZ2UpIHtcbiAgJGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSl9Jyk7XG4gICRsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSBvbmx5KX0nKTtcbn1cblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeGxhcmdlKSB7XG4gICR4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSl9Jyk7XG4gICR4bGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlIG9ubHkpfScpO1xufVxuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4eGxhcmdlKSB7XG4gICR4eGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4eGxhcmdlKX0nKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gQ3JlYXRlcyBhIENTUyB0cmlhbmdsZSwgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGRyb3Bkb3duIGFycm93cywgZHJvcGRvd24gcGlwcywgYW5kIG1vcmUuIFVzZSB0aGlzIG1peGluIGluc2lkZSBhIGAmOjpiZWZvcmVgIG9yIGAmOjphZnRlcmAgc2VsZWN0b3IsIHRvIGF0dGFjaCB0aGUgdHJpYW5nbGUgdG8gYW4gZXhpc3RpbmcgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdHJpYW5nbGUtc2l6ZSAtIFdpZHRoIG9mIHRoZSB0cmlhbmdsZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkdHJpYW5nbGUtY29sb3IgLSBDb2xvciBvZiB0aGUgdHJpYW5nbGUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdHJpYW5nbGUtZGlyZWN0aW9uIC0gRGlyZWN0aW9uIHRoZSB0cmlhbmdsZSBwb2ludHMuIENhbiBiZSBgdXBgLCBgcmlnaHRgLCBgZG93bmAsIG9yIGBsZWZ0YC5cbkBtaXhpbiBjc3MtdHJpYW5nbGUoXG4gICR0cmlhbmdsZS1zaXplLFxuICAkdHJpYW5nbGUtY29sb3IsXG4gICR0cmlhbmdsZS1kaXJlY3Rpb25cbikge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcblxuICBib3JkZXI6IGluc2V0ICR0cmlhbmdsZS1zaXplO1xuXG4gIGNvbnRlbnQ6ICcnO1xuXG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6ICR0cmlhbmdsZS1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgfVxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gdXApIHtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yO1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSByaWdodCkge1xuICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICBib3JkZXItbGVmdC1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3I7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgbWVudSBpY29uIHdpdGggYSBzZXQgd2lkdGgsIGhlaWdodCwgbnVtYmVyIG9mIGJhcnMsIGFuZCBjb2xvcnMuIFRoZSBtaXhpbiB1c2VzIHRoZSBoZWlnaHQgb2YgdGhlIGljb24gYW5kIHRoZSB3ZWlnaHQgb2YgdGhlIGJhcnMgdG8gZGV0ZXJtaW5lIHNwYWNpbmcuIDxkaXYgY2xhc3M9XCJkb2NzLWV4YW1wbGUtYnVyZ2VyXCI+PC9kaXY+XG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRibGFja10gLSBDb2xvciB0byB1c2UgZm9yIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvci1ob3ZlciBbJGRhcmstZ3JheV0gLSBDb2xvciB0byB1c2Ugd2hlbiB0aGUgaWNvbiBpcyBob3ZlcmVkIG92ZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbMjBweF0gLSBXaWR0aCBvZiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBbMTZweF0gLSBIZWlnaHQgb2YgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3ZWlnaHQgWzJweF0gLSBIZWlnaHQgb2YgaW5kaXZpZHVhbCBiYXJzIGluIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFycyBbM10gLSBOdW1iZXIgb2YgYmFycyBpbiB0aGUgaWNvbi5cbkBtaXhpbiBoYW1idXJnZXIoXG4gICRjb2xvcjogJGJsYWNrLFxuICAkY29sb3ItaG92ZXI6ICRkYXJrLWdyYXksXG4gICR3aWR0aDogMjBweCxcbiAgJGhlaWdodDogMTZweCxcbiAgJHdlaWdodDogMnB4LFxuICAkYmFyczogM1xuKSB7XG4gIC8vIGJveC1zaGFkb3cgQ1NTIG91dHB1dFxuICAkc2hhZG93OiAoKTtcbiAgJGhvdmVyLXNoYWRvdzogKCk7XG5cbiAgLy8gU3BhY2luZyBiZXR3ZWVuIGJhcnMgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSBpY29uIGFuZCB0aGUgd2VpZ2h0IG9mIGVhY2ggYmFyXG4gICRzcGFjaW5nOiAoJGhlaWdodCAtICgkd2VpZ2h0ICogJGJhcnMpKSAvICgkYmFycyAtIDEpO1xuXG4gIEBpZiB1bml0KCRzcGFjaW5nKSA9PSAncHgnIHtcbiAgICAkc3BhY2luZzogZmxvb3IoJHNwYWNpbmcpO1xuICB9XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkYmFycyB7XG4gICAgJG9mZnNldDogKCR3ZWlnaHQgKyAkc3BhY2luZykgKiAoJGkgLSAxKTtcbiAgICAkc2hhZG93OiBhcHBlbmQoJHNoYWRvdywgMCAkb2Zmc2V0IDAgJGNvbG9yLCBjb21tYSk7XG4gIH1cblxuICAvLyBJY29uIGNvbnRhaW5lclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6ICR3aWR0aDtcbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgLy8gSWNvbiBiYXJzXG4gICY6OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG5cbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICR3ZWlnaHQ7XG5cbiAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgYm94LXNoYWRvdzogJHNoYWRvdztcblxuICAgIGNvbnRlbnQ6ICcnOyAgICBcbiAgfVxuXG4gIC8vIEhvdmVyIHN0YXRlXG4gIEBpZiAkY29sb3ItaG92ZXIge1xuICAgIC8vIEdlbmVyYXRlIENTU1xuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xuICAgICAgJG9mZnNldDogKCR3ZWlnaHQgKyAkc3BhY2luZykgKiAoJGkgLSAxKTtcbiAgICAgICRob3Zlci1zaGFkb3c6IGFwcGVuZCgkaG92ZXItc2hhZG93LCAwICRvZmZzZXQgMCAkY29sb3ItaG92ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItaG92ZXI7XG4gICAgICBib3gtc2hhZG93OiAkaG92ZXItc2hhZG93O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBhIGRvd253YXJkLWZhY2luZyB0cmlhbmdsZSBhcyBhIGJhY2tncm91bmQgaW1hZ2UgdG8gYW4gZWxlbWVudC4gVGhlIGltYWdlIGlzIGZvcm1hdHRlZCBhcyBhbiBTVkcsIG1ha2luZyBpdCBlYXN5IHRvIGNoYW5nZSB0aGUgY29sb3IuIEJlY2F1c2UgSW50ZXJuZXQgRXhwbG9yZXIgZG9lc24ndCBzdXBwb3J0IGVuY29kZWQgU1ZHcyBhcyBiYWNrZ3JvdW5kIGltYWdlcywgYSBQTkcgZmFsbGJhY2sgaXMgYWxzbyBpbmNsdWRlZC5cbi8vLyBUaGVyZSBhcmUgdHdvIFBORyBmYWxsYmFja3M6IGEgYmxhY2sgdHJpYW5nbGUgYW5kIGEgd2hpdGUgdHJpYW5nbGUuIFRoZSBvbmUgdXNlZCBkZXBlbmRzIG9uIHRoZSBsaWdodG5lc3Mgb2YgdGhlIGlucHV0IGNvbG9yLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgdHJpYW5nbGUuXG5AbWl4aW4gYmFja2dyb3VuZC10cmlhbmdsZSgkY29sb3I6ICRibGFjaykge1xuICAkcmdiOiAncmdiJTI4I3tyb3VuZChyZWQoJGNvbG9yKSl9LCAje3JvdW5kKGdyZWVuKCRjb2xvcikpfSwgI3tyb3VuZChibHVlKCRjb2xvcikpfSUyOSc7XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZlcnNpb249JzEuMScgd2lkdGg9JzMyJyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMzIgMjQnPjxwb2x5Z29uIHBvaW50cz0nMCwwIDMyLDAgMTYsMjQnIHN0eWxlPSdmaWxsOiAjeyRyZ2J9Jz48L3BvbHlnb24+PC9zdmc+XCIpO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MFxcMCkge1xuICAgIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA8IDYwJSB7XG4gICAgICAvLyBXaGl0ZSB0cmlhbmdsZVxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQVlDQVlBQUFDYlUvODBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUlwSlJFRlVlTnJFa2NrTmdEQU1CQmZSa0V0ME9iUkJCZHNHWFVEZ21RZks0WGhIMm04Y3pRQUF5MjdSM3RzdzRRZmUyeDh1T082b1lMYjZHbE9vcjNHRitzd1VSQU9tVUorUnd0RUpzOVd2VEdFWXhCWHFJMU1RQVpoQ2ZVUUtSekRNVmorVHdyQUlWNmp2U1VFa1lBcjFMU2tjeVRCYi9WK0tZZlg3eEFldXNxM3NMRHRHSDNrRUdBQ1BXSWZsTlpmaFJRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIEJsYWNrIHRyaWFuZ2xlXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBWUNBWUFBQUNiVS84MEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTUJKUkVGVWVOckVsbHNPaENBTVJWc3pDOUlselU3S0NtVkhUSnNvTVdZTVV0cHl2OUJnYnVYUUI1WlNkZ0JZWVk0eWNnQml2azhLWUZzUU1mTWlUVEJQNG8zblV6Q0t6T2FiTEpiTHkyL2czMWV2R2tBZ2luUjQvWmVnS0g1cVgzYkpDc2NBM3QweDNrZ081dFFGeWhoRmY1MHhScUZMYnlNVU5KUXpneWpHUy93Z0Nwdktxa1JCcHVXckU0VjlkKzFFNGRQVVhxSWcxMDdTUU9FLzJEUlF4TXdURHlnSUluVkRFVDlUM2xDb2ovNmovVkNtR2paT2wybEtwWjhBQXdEUVA3eklpbURHRlFBQUFBQkpSVTVFcmtKZ2dnPT0nKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFwcGxpZXMgdGhlIG1pY3JvIGNsZWFyZml4IGhhY2sgcG9wdWxhcml6ZWQgYnkgTmljb2xhcyBHYWxsYWdoZXIuIEluY2x1ZGUgdGhpcyBtaXhpbiBvbiBhIGNvbnRhaW5lciBpZiBpdHMgY2hpbGRyZW4gYXJlIGFsbCBmbG9hdGVkLCB0byBnaXZlIHRoZSBjb250YWluZXIgYSBwcm9wZXIgaGVpZ2h0LlxuLy8vIFRoZSBjbGVhcmZpeCBpcyBhdWdtZW50ZWQgd2l0aCBzcGVjaWZpYyBzdHlsZXMgdG8gcHJldmVudCBib3JkZXJzIGluIGZsZXhib3ggZW52aXJvbm1lbnRzXG4vLy8gQGxpbmsgaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svIE1pY3JvIENsZWFyZml4IEhhY2tcbi8vLyBAbGluayBodHRwOi8vZGFuaXNhZGVzaWduZXIuY29tL2Jsb2cvZmxleGJveC1jbGVhci1maXgtcHNldWRvLWVsZW1lbnRzLyBGbGV4Ym94IGZpeFxuQG1peGluIGNsZWFyZml4IHtcbiAgJjo6YmVmb3JlLFxuICAmOjphZnRlciB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY29udGVudDogJyAnO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4LWJhc2lzOiAwO1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG59XG5cbi8vLyBBZGRzIENTUyBmb3IgYSBcInF1YW50aXR5IHF1ZXJ5XCIgc2VsZWN0b3IgdGhhdCBhdXRvbWF0aWNhbGx5IHNpemVzIGVsZW1lbnRzIGJhc2VkIG9uIGhvdyBtYW55IHRoZXJlIGFyZSBpbnNpZGUgYSBjb250YWluZXIuXG4vLy8gQGxpbmsgaHR0cDovL2FsaXN0YXBhcnQuY29tL2FydGljbGUvcXVhbnRpdHktcXVlcmllcy1mb3ItY3NzIFF1YW50aXR5IFF1ZXJpZXMgZm9yIENTU1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggLSBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBkZXRlY3QuIFRoZSBoaWdoZXIgdGhpcyBudW1iZXIgaXMsIHRoZSBtb3JlIENTUyB0aGF0J3MgcmVxdWlyZWQgdG8gY292ZXIgZWFjaCBudW1iZXIgb2YgaXRlbXMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZWxlbSBbbGldIC0gVGFnIHRvIHVzZSBmb3Igc2libGluZyBzZWxlY3RvcnMuXG5AbWl4aW4gYXV0by13aWR0aCgkbWF4LCAkZWxlbTogbGkpIHtcbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkbWF4IHtcbiAgICAmOm50aC1sYXN0LWNoaWxkKCN7JGl9KTpmaXJzdC1jaGlsZCxcbiAgICAmOm50aC1sYXN0LWNoaWxkKCN7JGl9KTpmaXJzdC1jaGlsZCB+ICN7JGVsZW19IHtcbiAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDEgLyAkaSk7XG4gICAgfVxuICB9XG59XG5cbi8vLyBSZW1vdmVzIHRoZSBmb2N1cyByaW5nIGFyb3VuZCBhbiBlbGVtZW50IHdoZW4gYSBtb3VzZSBpbnB1dCBpcyBkZXRlY3RlZC5cbkBtaXhpbiBkaXNhYmxlLW1vdXNlLW91dGxpbmUge1xuICBbZGF0YS13aGF0aW5wdXQ9J21vdXNlJ10gJiB7XG4gICAgb3V0bGluZTogMDtcbiAgfVxufVxuXG4vLy8gTWFrZXMgYW4gZWxlbWVudCB2aXN1YWxseSBoaWRkZW4sIGJ1dCBzdGlsbCBhY2Nlc3NpYmxlIHRvIGtleWJvYXJkcyBhbmQgYXNzaXN0aXZlIGRldmljZXMuXG4vLy8gQGxpbmsgaHR0cDovL3Nub29rLmNhL2FyY2hpdmVzL2h0bWxfYW5kX2Nzcy9oaWRpbmctY29udGVudC1mb3ItYWNjZXNzaWJpbGl0eSBIaWRpbmcgQ29udGVudCBmb3IgQWNjZXNzaWJpbGl0eVxuQG1peGluIGVsZW1lbnQtaW52aXNpYmxlIHtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xufVxuXG4vLy8gUmV2ZXJzZXMgdGhlIENTUyBvdXRwdXQgY3JlYXRlZCBieSB0aGUgYGVsZW1lbnQtaW52aXNpYmxlKClgIG1peGluLlxuQG1peGluIGVsZW1lbnQtaW52aXNpYmxlLW9mZiB7XG4gIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogYXV0bztcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIGNsaXA6IGF1dG87XG59XG5cbi8vLyBWZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIHZlcnRpY2FsLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuLy8vIEhvcml6b250YWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG5cbi8vLyBBYnNvbHV0ZWx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIGFic29sdXRlLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbi8vLyBJdGVyYXRlcyB0aHJvdWdoIGJyZWFrcG9pbnRzIGRlZmluZWQgaW4gYCRicmVha3BvaW50LWNsYXNzZXNgIGFuZCBwcmludHMgdGhlIENTUyBpbnNpZGUgdGhlIG1peGluIGF0IGVhY2ggYnJlYWtwb2ludCdzIG1lZGlhIHF1ZXJ5LiBVc2UgdGhpcyB3aXRoIHRoZSBncmlkLCBvciBhbnkgb3RoZXIgY29tcG9uZW50IHRoYXQgaGFzIHJlc3BvbnNpdmUgY2xhc3Nlcy5cbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHNtYWxsIFt0cnVlXSAtIElmIGBmYWxzZWAsIHRoZSBtaXhpbiB3aWxsIHNraXAgdGhlIGBzbWFsbGAgYnJlYWtwb2ludC4gVXNlIHRoaXMgd2l0aCBjb21wb25lbnRzIHRoYXQgZG9uJ3QgcHJlZml4IGNsYXNzZXMgd2l0aCBgc21hbGwtYCwgb25seSBgbWVkaXVtLWAgYW5kIHVwLlxuQG1peGluIC16Zi1lYWNoLWJyZWFrcG9pbnQoJHNtYWxsOiB0cnVlKSB7XG4gICRsaXN0OiAkYnJlYWtwb2ludC1jbGFzc2VzO1xuXG4gIEBpZiBub3QgJHNtYWxsIHtcbiAgICAkbGlzdDogc2wtcmVtb3ZlKCRsaXN0LCAkLXpmLXplcm8tYnJlYWtwb2ludCk7XG4gIH1cblxuICBAZWFjaCAkbmFtZSBpbiAkbGlzdCB7XG4gICAgJC16Zi1zaXplOiAkbmFtZSAhZ2xvYmFsO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBHZW5lcmF0ZSB0aGUgYEBjb250ZW50YCBwYXNzZWQgdG8gdGhlIG1peGluIHdpdGggYSB2YWx1ZSBgJC16Zi1icC12YWx1ZWAgcmVsYXRlZCB0byBhIGJyZWFrcG9pbnQsIGRlcGVuZGluZyBvbiB0aGUgYCRuYW1lYCBwYXJhbWV0ZXI6XG4vLy8gLSBGb3IgYSBzaW5nbGUgdmFsdWUsIGAkLXpmLWJwLXZhbHVlYCBpcyB0aGlzIHZhbHVlLlxuLy8vIC0gRm9yIGEgYnJlYWtwb2ludCBuYW1lLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZSBpbiBgJG1hcGAuXG4vLy8gLSBGb3IgXCJhdXRvXCIsIGAkLXpmLWJwLXZhbHVlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlIGluIGAkbWFwYCBhbmQgaXMgcGFzc2VkIHRvIGBAY29udGVudGAsIHdoaWNoIGlzIG1hZGUgcmVzcG9uc2l2ZSBmb3IgZWFjaCBicmVha3BvaW50IG9mIGAkbWFwYC5cbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkbmFtZSBbYXV0b10gLSBTaW5nbGUgdmFsdWUgb3IgYnJlYWtwb2ludCBuYW1lIHRvIHVzZS4gXCJhdXRvXCIgYnkgZGVmYXVsdC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRtYXAgLSBNYXAgb2YgYnJlYWtwb2ludHMgYW5kIHZhbHVlcyBvciBzaW5nbGUgdmFsdWUgdG8gdXNlLlxuQG1peGluIC16Zi1icmVha3BvaW50LXZhbHVlKFxuICAkbmFtZTogYXV0byxcbiAgJG1hcDogbnVsbFxuKSB7XG4gIEBpZiAkbmFtZSA9PSBhdXRvIGFuZCB0eXBlLW9mKCRtYXApID09ICdtYXAnIHtcbiAgICAvLyBcImF1dG9cIlxuICAgIEBlYWNoICRrLCAkdiBpbiAkbWFwIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGspIHtcbiAgICAgICAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoJHYsICRtYXApIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gYnJlYWtwb2ludCBuYW1lXG4gICAgQGlmIHR5cGUtb2YoJG5hbWUpID09ICdzdHJpbmcnIHtcbiAgICAgICRuYW1lOiAtemYtZ2V0LWJwLXZhbCgkbWFwLCAkbmFtZSk7XG4gICAgfVxuXG4gICAgLy8gYnJlYWtwb2ludCB2YWx1ZVxuICAgICQtemYtYnAtdmFsdWU6ICRuYW1lICFnbG9iYWw7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vIElNSCBUaGVtZVxuLy8gQm9keVxuJGJvZHktYmc6ICNmNWY4ZmE7XG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6ICdpbW92ZWhvbWUnICFpbXBvcnRhbnQ7XG59XG5cbi8vIEJyYW5kc1xuJGJyYW5kLXByaW1hcnk6ICMxOTIxNTQ7XG4kYnJhbmQtc2Vjb25kYXJ5OiAjMDBkZWI2O1xuJGJyYW5kLWluZm86ICM4MjVCRTg7XG4kYnJhbmQtc3VjY2VzczogJGJyYW5kLXNlY29uZGFyeTtcbiRicmFuZC13YXJuaW5nOiAjRURDNzlCO1xuJGJyYW5kLWRhbmdlcjogI2ZmMDAwMDtcbiR3aGl0ZTogI0ZGRkZGRjtcbiRibGFjazogIzAwMDAwMDtcbiRncmV5OiAjREJEQkRCOyAvLyBUeXBvZ3JhcGh5XG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdpbW92ZWhvbWUnO1xuICBzcmM6IHVybCgnLi4vZm9udHMvYWtrdXJhdF9ib2xkLXdlYmZvbnQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksIHVybCgnLi4vZm9udHMvYWtrdXJhdF9ib2xkLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJy4uL2ZvbnRzL2Fra3VyYXRfYm9sZC13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnaW1vdmVob21lJztcbiAgc3JjOiB1cmwoJy4uL2ZvbnRzL2Fra3VyYXRfcmVndWxhci13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJy4uL2ZvbnRzL2Fra3VyYXRfcmVndWxhci13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuLi9mb250cy9ha2t1cmF0X3JlZ3VsYXItd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuaHRtbCwgYm9keSwgZm9ybSwgZmllbGRzZXQsIHRhYmxlLCB0ciwgdGQsIGltZyB7XG4gICAgZm9udC1mYW1pbHk6ICdpbW92ZWhvbWUnO1xufVxuXG5pbnB1dCwgYnV0dG9uLCBzZWxlY3QsIHRleHRhcmVhLCBvcHRncm91cCwgb3B0aW9uIHtcbiAgICBmb250LWZhbWlseTogJ2ltb3ZlaG9tZSc7XG59XG5cbi8qIHJlc3Qgb2YgeW91ciBzdHlsZXM7IGxpa2U6ICovXG5ib2R5IHtcbiAgICBmb250LWZhbWlseTogJ2ltb3ZlaG9tZSc7XG59XG5cbiRmb250LXNpemUtYmFzZTogMTRweDtcbiRsaW5lLWhlaWdodC1iYXNlOiAxLjY7XG4kYm9yZGVyLWNvbG9yOiAjNzM4NDhEO1xuJHRleHQtY29sb3I6ICMzNzQ3NEY7XG4kdGV4dC1wcmltYXJ5OiAjZmZmO1xuJHRleHQtc2Vjb25kYXJ5OiAjZmZmOyAvLyBOYXZiYXJcbiRuYXZiYXItZGVmYXVsdC1iZzogJGJyYW5kLXByaW1hcnk7IC8vIEJ1dHRvbnNcbiRidG4tZGVmYXVsdC1jb2xvcjogJHRleHQtY29sb3I7XG5hIHtcbiAgY29sb3I6ICRicmFuZC1wcmltYXJ5O1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLy8gUGFuZWxzXG4kcGFuZWwtZGVmYXVsdC1oZWFkaW5nLWJnOiAjZmZmOyAvLyBCYWNrZ3JvdW5kc1xuLmJnLXNlY29uZGFyeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRicmFuZC1zZWNvbmRhcnk7XG59XG5cbi8vIDMuIEZvcm1zXG4vLyAtLS0tLS0tXG4uaW1oLWN1cnJlbmN5LWlucHV0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHNwYW4ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgY29sb3I6ICRibGFjaztcbiAgICBsZXR0ZXItc3BhY2luZzogMC4xNnB4O1xuICAgIHBhZGRpbmc6IDhweCAxNnB4O1xuICB9XG4gIGlucHV0W3R5cGU9XCJ0ZXh0XCJdIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDMwcHggIWltcG9ydGFudDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgY29sb3I6ICRibGFjayAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNjBweDtcbiAgICBmb250LXNpemU6IDI0cHggIWltcG9ydGFudDtcbiAgfVxufVxuXG4uZXJyb3ItbWVzc2FnZSB7XG4gIGNvbG9yOiAkYnJhbmQtZGFuZ2VyICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG59XG5cbi5lcnJvci1tZXNzYWdlLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uaW1oLXRvb2x0aXAge1xuICBjb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBib3JkZXI6IHNvbGlkIDJweCAkYnJhbmQtcHJpbWFyeTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBmb250LXNpemU6IDEzcHg7XG4gIHBhZGRpbmc6IDEwcHggN3B4O1xufVxuLnRvb2x0aXAge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8vIEJ1dHRvbnNcbi5pbWgtYnRuIHtcbiAgZm9udC1mYW1pbHk6ICdpbW92ZWhvbWUnO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDE4cHg7XG4gIHBhZGRpbmc6IDE1cHggIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xuICBtaW4td2lkdGg6IDIyM3B4O1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDIwcHggMDtcbiAgfVxufVxuXG4uaW1oLWJ0bi1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gIGNvbG9yOiAkdGV4dC1wcmltYXJ5O1xuICBib3gtc2hhZG93OiAwcHggM3B4IDBweCAwcHggZGFya2VuKCAkYnJhbmQtcHJpbWFyeSwgMjUlKTtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCAkYnJhbmQtcHJpbWFyeSwgMTAlKTtcbiAgfVxufVxuXG4uaW1oLWJ0bi1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQtc2Vjb25kYXJ5O1xuICBjb2xvcjogJHRleHQtc2Vjb25kYXJ5O1xuICBib3gtc2hhZG93OiAwcHggM3B4IDBweCAwcHggZGFya2VuKCAkYnJhbmQtc2Vjb25kYXJ5LCAyNSUpO1xuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oICRicmFuZC1zZWNvbmRhcnksIDEwJSk7XG4gIH1cbn1cblxuLmltaC1idG4tc2Vjb25kYXJ5LWRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbiggJGJyYW5kLXNlY29uZGFyeSwgMTAlKTtcbn1cblxuLmltaC1idG4tcHJpbWFyeS1kaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oICRicmFuZC1wcmltYXJ5LCAxMCUpO1xufVxuXG4uaW1oLWJ0bi1kYW5nZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQtZGFuZ2VyO1xuICBjb2xvcjogJHRleHQtc2Vjb25kYXJ5O1xuICBib3gtc2hhZG93OiAwcHggM3B4IDBweCAwcHggZGFya2VuKCAkYnJhbmQtZGFuZ2VyLCAyNSUpO1xuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGJyYW5kLWRhbmdlciwgMTAlKTtcbiAgfVxufVxuLmltaC1idG4td2FybmluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRicmFuZC13YXJuaW5nO1xuICBjb2xvcjogJHRleHQtc2Vjb25kYXJ5O1xuICBib3gtc2hhZG93OiAwcHggM3B4IDBweCAwcHggZGFya2VuKCAkYnJhbmQtd2FybmluZywgMjUlKTtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRicmFuZC13YXJuaW5nLCAxMCUpO1xuICB9XG59XG5cbi5pbWgtYnRuLWluZm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQtaW5mbztcbiAgY29sb3I6ICR0ZXh0LXNlY29uZGFyeTtcbiAgYm94LXNoYWRvdzogMHB4IDNweCAwcHggMHB4IGRhcmtlbiggJGJyYW5kLWluZm8sIDI1JSk7XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkYnJhbmQtaW5mbywgMTAlKTtcbiAgfVxufVxuXG5cbi5pbWgtYnRuLW11dGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXk7XG4gIGNvbG9yOiAkYmxhY2s7XG4gIGJveC1zaGFkb3c6IDBweCAzcHggMHB4IDBweCBkYXJrZW4oICRncmV5LCAyNSUpO1xuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJGJsYWNrO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbiggJGdyZXksIDEwJSk7XG4gIH1cbn1cblxuLy8gNS4gSGVscGVyXG4vLyAtLS0tLS0tLS1cbi51bmRlcmxpbmUge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuQGtleWZyYW1lcyBwdWxzYXRlIHtcbiAgMCUge1xuICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICB9XG4gIDUwJSB7XG4gICAgY29sb3I6ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgZm9udC1zaXplOiAyNXB4O1xuICB9XG4gIDEwMCUge1xuICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgYm9yZGVyLXB1bHNhdGUge1xuICAwJSB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDI1NSwgMjU1LCAxKTtcbiAgfVxuICA1MCUge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAyNTUsIDI1NSwgMCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDI1NSwgMjU1LCAxKTtcbiAgfVxufVxuXG4ubG9hZGluZyB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgLmltaC1zcGlubmVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1zaXplOiA2NHB4O1xuICAgIGhlaWdodDogNjRweDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBtYXJnaW46IDAuMWVtO1xuICAgIGNvbG9yOiAkYnJhbmQtc2Vjb25kYXJ5O1xuICAgIGFuaW1hdGlvbjogYW5pbS1yb3RhdGUgM3MgaW5maW5pdGUgbGluZWFyO1xuICB9XG4gIHAge1xuICAgIGNvbG9yOiAjNzM4NDhEO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxufVxuXG4uaW1oLWZhaWxlZCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgLmljb24tY3Jvc3Mge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IDY0cHg7XG4gICAgaGVpZ2h0OiA2NHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIG1hcmdpbjogMC4xZW07XG4gICAgY29sb3I6IHJlZDtcbiAgfVxuICBwIHtcbiAgICBjb2xvcjogIzczODQ4RDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gIH1cbn1cblxuLmltaC1jb21wbGV0ZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgLmljb24tY2hlY2sge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IDY0cHg7XG4gICAgaGVpZ2h0OiA2NHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIG1hcmdpbjogMC4xZW07XG4gICAgY29sb3I6ICRicmFuZC1zdWNjZXNzO1xuICB9XG4gIHAge1xuICAgIGNvbG9yOiAjNzM4NDhEO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGFuaW0tcm90YXRlIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDApO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwLjc7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi5kZWxldGUtbW9kYWwge1xuICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDtcbiAgICBvdXRsaW5lOiBub25lO1xuICAubW9kYWwtdGl0bGUge1xuICAgIGNvbG9yOiAjMzc0NzRGO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG4gIC5tb2RhbC1zdWJqZWN0IHtcbiAgICBjb2xvcjogJGJyYW5kLWRhbmdlcjtcbiAgfVxuICAuY29udHJvbC1ncm91cCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC5kZWxldGUtY29uZmlybSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYnJhbmQtZGFuZ2VyO1xuICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICBtYXJnaW46IDJweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDVweCAhaW1wb3J0YW50O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgYm94LXNoYWRvdzogMCAzcHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xNiksIDAgM3B4IDZweCByZ2JhKDAsIDAsIDAsIDAuMjMpO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxNHB4IDI4cHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIyKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICB9XG4gICAgfVxuICAgIC5jYW5jZWwge1xuICAgICAgYmFja2dyb3VuZDogJGdyZXk7XG4gICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgIG1hcmdpbjogMnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNXB4ICFpbXBvcnRhbnQ7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBib3gtc2hhZG93OiAwIDNweCA2cHggcmdiYSgwLCAwLCAwLCAwLjE2KSwgMCAzcHggNnB4IHJnYmEoMCwgMCwgMCwgMC4yMyk7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiAwIDE0cHggMjhweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwIDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMjIpO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImJvZHkge1xuICBbbmdcXDpjbG9ha10sXG4gIFtuZy1jbG9ha10sXG4gIFtkYXRhLW5nLWNsb2FrXSxcbiAgW3gtbmctY2xvYWtdLFxuICAubmctY2xvYWssXG4gIC54LW5nLWNsb2FrIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgZm9udC1mYW1pbHk6ICdpbW92ZWhvbWUnICFpbXBvcnRhbnQ7XG4gIC5uYXYtb2ZmLWNhbnZhcyB7XG4gICAgY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xuICAgIC5vZmYtY2FudmFzLXdyYXBwZXItaW5uZXIge1xuICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgLm9mZi1jYW52YXMge1xuICAgICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAxNXB4O1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICRicmFuZC1wcmltYXJ5O1xuICAgICAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAkYnJhbmQtcHJpbWFyeTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRicmFuZC1wcmltYXJ5O1xuICAgICAgICAubG9nbyB7XG4gICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgbWFyZ2luOiAyMHB4IGF1dG87XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgLmljb24tY3Jvc3MyIHtcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgLm5hdi1tZW51IHtcbiAgICAgICAgICBsaSB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgY29sb3I6ICM0ODVFNjkgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pbWgtYnRuLXByaW1hcnkge1xuICAgICAgICAgICAgICBtaW4td2lkdGg6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLm9mZi1jYW52YXMtY29udGVudCB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGZvb3RlciB7XG4gICAgcGFkZGluZzogMCAwIDUwcHggMDtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICAgIHAsIHVsIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuICAgIH1cbiAgICBwIHtcbiAgICAgIG1hcmdpbjogNHB4IDAgMWVtIDA7XG4gICAgfVxuICAgIHVsIHtcbiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgIG1hcmdpbjogMHB4O1xuICAgICAgbGkge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGEge1xuICAgICAgICAgIGNvbG9yOiAjNzM4NDhEO1xuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5iYW5uZXItc2VjdGlvbiB7XG4gICAgICBiYWNrZ3JvdW5kOiAjRjBGN0ZGO1xuICAgICAgbWFyZ2luLWJvdHRvbTogNTBweDtcbiAgICAgIC5ob3VzZS1iYW5uZXIge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAzNTZweDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgaGVpZ2h0OiAyNzdweDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiA4MHB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5pbW92ZWhvbWUtc3VtbWFyeSB7XG4gICAgICBpbWcge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgICAgIGhlaWdodDogMzNweDtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHAge1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGNvbG9yOiAjNTQ2RTdBO1xuICAgICAgfVxuICAgIH1cbiAgICAuaW1vdmVob21lLWNvbnRhY3RzIHtcbiAgICAgIHVsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgbWFyZ2luOiA1cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLmFzc29jaWF0ZWQge1xuICAgICAgbWFyZ2luLXRvcDogMTIwcHg7XG4gICAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgICBsaSB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgIG1hcmdpbjogMCAyMHB4O1xuICAgICAgICAgIC5yaWdodG1vdmUtbG9nbyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDI5cHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC56b29wbGEtbG9nbyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5wcmltZWxvY2F0aW9uLWxvZ28ge1xuICAgICAgICAgICAgaGVpZ2h0OiAyOXB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDUwcHg7XG4gICAgICAgIHVsIHtcbiAgICAgICAgICBsaSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBUb29sdGlwIFN0eWxlc1xuICovXG5cbi8qIEJhc2Ugc3R5bGVzIGZvciB0aGUgZWxlbWVudCB0aGF0IGhhcyBhIHRvb2x0aXAgKi9cbltkYXRhLXRvb2x0aXBdLFxuLnRvb2x0aXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLyogQmFzZSBzdHlsZXMgZm9yIHRoZSBlbnRpcmUgdG9vbHRpcCAqL1xuW2RhdGEtdG9vbHRpcF06YmVmb3JlLFxuW2RhdGEtdG9vbHRpcF06YWZ0ZXIsXG4udG9vbHRpcDpiZWZvcmUsXG4udG9vbHRpcDphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAtbXMtZmlsdGVyOiBcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApXCI7XG4gIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCk7XG4gIG9wYWNpdHk6IDA7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogXG4gICAgICBvcGFjaXR5IDAuMnMgZWFzZS1pbi1vdXQsXG4gICAgICAgIHZpc2liaWxpdHkgMC4ycyBlYXNlLWluLW91dCxcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0gMC4ycyBjdWJpYy1iZXppZXIoMC43MSwgMS43LCAwLjc3LCAxLjI0KTtcbiAgICAtbW96LXRyYW5zaXRpb246ICAgIFxuICAgICAgICBvcGFjaXR5IDAuMnMgZWFzZS1pbi1vdXQsXG4gICAgICAgIHZpc2liaWxpdHkgMC4ycyBlYXNlLWluLW91dCxcbiAgICAgICAgLW1vei10cmFuc2Zvcm0gMC4ycyBjdWJpYy1iZXppZXIoMC43MSwgMS43LCAwLjc3LCAxLjI0KTtcbiAgICB0cmFuc2l0aW9uOiAgICAgICAgIFxuICAgICAgICBvcGFjaXR5IDAuMnMgZWFzZS1pbi1vdXQsXG4gICAgICAgIHZpc2liaWxpdHkgMC4ycyBlYXNlLWluLW91dCxcbiAgICAgICAgdHJhbnNmb3JtIDAuMnMgY3ViaWMtYmV6aWVyKDAuNzEsIDEuNywgMC43NywgMS4yNCk7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgLW1vei10cmFuc2Zvcm06ICAgIHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB0cmFuc2Zvcm06ICAgICAgICAgdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4vKiBTaG93IHRoZSBlbnRpcmUgdG9vbHRpcCBvbiBob3ZlciBhbmQgZm9jdXMgKi9cbltkYXRhLXRvb2x0aXBdOmhvdmVyOmJlZm9yZSxcbltkYXRhLXRvb2x0aXBdOmhvdmVyOmFmdGVyLFxuW2RhdGEtdG9vbHRpcF06Zm9jdXM6YmVmb3JlLFxuW2RhdGEtdG9vbHRpcF06Zm9jdXM6YWZ0ZXIsXG4udG9vbHRpcDpob3ZlcjpiZWZvcmUsXG4udG9vbHRpcDpob3ZlcjphZnRlcixcbi50b29sdGlwOmZvY3VzOmJlZm9yZSxcbi50b29sdGlwOmZvY3VzOmFmdGVyIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgLW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApXCI7XG4gIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKTtcbiAgb3BhY2l0eTogMTtcbn1cblxuLyogQmFzZSBzdHlsZXMgZm9yIHRoZSB0b29sdGlwJ3MgZGlyZWN0aW9uYWwgYXJyb3cgKi9cbi50b29sdGlwOmJlZm9yZSxcbltkYXRhLXRvb2x0aXBdOmJlZm9yZSB7XG4gIHotaW5kZXg6IDEwMDE7XG4gIGJvcmRlcjogNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY29udGVudDogXCJcIjtcbn1cblxuLyogQmFzZSBzdHlsZXMgZm9yIHRoZSB0b29sdGlwJ3MgY29udGVudCBhcmVhICovXG4udG9vbHRpcDphZnRlcixcbltkYXRhLXRvb2x0aXBdOmFmdGVyIHtcbiAgei1pbmRleDogMTAwMDtcbiAgcGFkZGluZzogOHB4O1xuICB3aWR0aDogMzAwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICRicmFuZC1wcmltYXJ5O1xuICBjb2xvcjogI2ZmZjtcbiAgY29udGVudDogYXR0cihkYXRhLXRvb2x0aXApO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbn1cblxuLyogRGlyZWN0aW9ucyAqL1xuXG4vKiBUb3AgKGRlZmF1bHQpICovXG5bZGF0YS10b29sdGlwXTpiZWZvcmUsXG5bZGF0YS10b29sdGlwXTphZnRlcixcbi50b29sdGlwOmJlZm9yZSxcbi50b29sdGlwOmFmdGVyLFxuLnRvb2x0aXAtdG9wOmJlZm9yZSxcbi50b29sdGlwLXRvcDphZnRlciB7XG4gIGJvdHRvbTogMTAwJTtcbiAgbGVmdDogNTAlO1xufVxuXG5bZGF0YS10b29sdGlwXTpiZWZvcmUsXG4udG9vbHRpcDpiZWZvcmUsXG4udG9vbHRpcC10b3A6YmVmb3JlIHtcbiAgbWFyZ2luLWxlZnQ6IC02cHg7XG4gIG1hcmdpbi1ib3R0b206IC0xMnB4O1xuICBib3JkZXItdG9wLWNvbG9yOiAkYnJhbmQtcHJpbWFyeTtcbn1cblxuLyogSG9yaXpvbnRhbGx5IGFsaWduIHRvcC9ib3R0b20gdG9vbHRpcHMgKi9cbltkYXRhLXRvb2x0aXBdOmFmdGVyLFxuLnRvb2x0aXA6YWZ0ZXIsXG4udG9vbHRpcC10b3A6YWZ0ZXIge1xuICBtYXJnaW4tbGVmdDogLTgwcHg7XG59XG5cbltkYXRhLXRvb2x0aXBdOmhvdmVyOmJlZm9yZSxcbltkYXRhLXRvb2x0aXBdOmhvdmVyOmFmdGVyLFxuW2RhdGEtdG9vbHRpcF06Zm9jdXM6YmVmb3JlLFxuW2RhdGEtdG9vbHRpcF06Zm9jdXM6YWZ0ZXIsXG4udG9vbHRpcDpob3ZlcjpiZWZvcmUsXG4udG9vbHRpcDpob3ZlcjphZnRlcixcbi50b29sdGlwOmZvY3VzOmJlZm9yZSxcbi50b29sdGlwOmZvY3VzOmFmdGVyLFxuLnRvb2x0aXAtdG9wOmhvdmVyOmJlZm9yZSxcbi50b29sdGlwLXRvcDpob3ZlcjphZnRlcixcbi50b29sdGlwLXRvcDpmb2N1czpiZWZvcmUsXG4udG9vbHRpcC10b3A6Zm9jdXM6YWZ0ZXIge1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTJweCk7XG4gIC1tb3otdHJhbnNmb3JtOiAgICB0cmFuc2xhdGVZKC0xMnB4KTtcbiAgdHJhbnNmb3JtOiAgICAgICAgIHRyYW5zbGF0ZVkoLTEycHgpOyBcbn1cblxuLyogTGVmdCAqL1xuLnRvb2x0aXAtbGVmdDpiZWZvcmUsXG4udG9vbHRpcC1sZWZ0OmFmdGVyIHtcbiAgcmlnaHQ6IDEwMCU7XG4gIGJvdHRvbTogNTAlO1xuICBsZWZ0OiBhdXRvO1xufVxuXG4udG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBtYXJnaW4tcmlnaHQ6IC0xMnB4O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICRicmFuZC1wcmltYXJ5O1xufVxuXG4udG9vbHRpcC1sZWZ0OmhvdmVyOmJlZm9yZSxcbi50b29sdGlwLWxlZnQ6aG92ZXI6YWZ0ZXIsXG4udG9vbHRpcC1sZWZ0OmZvY3VzOmJlZm9yZSxcbi50b29sdGlwLWxlZnQ6Zm9jdXM6YWZ0ZXIge1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTJweCk7XG4gIC1tb3otdHJhbnNmb3JtOiAgICB0cmFuc2xhdGVYKC0xMnB4KTtcbiAgdHJhbnNmb3JtOiAgICAgICAgIHRyYW5zbGF0ZVgoLTEycHgpOyBcbn1cblxuLyogQm90dG9tICovXG4udG9vbHRpcC1ib3R0b206YmVmb3JlLFxuLnRvb2x0aXAtYm90dG9tOmFmdGVyIHtcbiAgdG9wOiAxMDAlO1xuICBib3R0b206IGF1dG87XG4gIGxlZnQ6IDUwJTtcbn1cblxuLnRvb2x0aXAtYm90dG9tOmJlZm9yZSB7XG4gIG1hcmdpbi10b3A6IC0xMnB4O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGJyYW5kLXByaW1hcnk7XG59XG5cbi50b29sdGlwLWJvdHRvbTpob3ZlcjpiZWZvcmUsXG4udG9vbHRpcC1ib3R0b206aG92ZXI6YWZ0ZXIsXG4udG9vbHRpcC1ib3R0b206Zm9jdXM6YmVmb3JlLFxuLnRvb2x0aXAtYm90dG9tOmZvY3VzOmFmdGVyIHtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTJweCk7XG4gIC1tb3otdHJhbnNmb3JtOiAgICB0cmFuc2xhdGVZKDEycHgpO1xuICB0cmFuc2Zvcm06ICAgICAgICAgdHJhbnNsYXRlWSgxMnB4KTsgXG59XG5cbi8qIFJpZ2h0ICovXG4udG9vbHRpcC1yaWdodDpiZWZvcmUsXG4udG9vbHRpcC1yaWdodDphZnRlciB7XG4gIGJvdHRvbTogNTAlO1xuICBsZWZ0OiAxMDAlO1xufVxuXG4udG9vbHRpcC1yaWdodDpiZWZvcmUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBtYXJnaW4tbGVmdDogLTEycHg7XG4gIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQtY29sb3I6ICRicmFuZC1wcmltYXJ5O1xufVxuXG4udG9vbHRpcC1yaWdodDpob3ZlcjpiZWZvcmUsXG4udG9vbHRpcC1yaWdodDpob3ZlcjphZnRlcixcbi50b29sdGlwLXJpZ2h0OmZvY3VzOmJlZm9yZSxcbi50b29sdGlwLXJpZ2h0OmZvY3VzOmFmdGVyIHtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTJweCk7XG4gIC1tb3otdHJhbnNmb3JtOiAgICB0cmFuc2xhdGVYKDEycHgpO1xuICB0cmFuc2Zvcm06ICAgICAgICAgdHJhbnNsYXRlWCgxMnB4KTsgXG59XG5cbi8qIE1vdmUgZGlyZWN0aW9uYWwgYXJyb3dzIGRvd24gYSBiaXQgZm9yIGxlZnQvcmlnaHQgdG9vbHRpcHMgKi9cbi50b29sdGlwLWxlZnQ6YmVmb3JlLFxuLnRvb2x0aXAtcmlnaHQ6YmVmb3JlIHtcbiAgdG9wOiA3cHg7XG59XG5cbi8qIFZlcnRpY2FsbHkgY2VudGVyIHRvb2x0aXAgY29udGVudCBmb3IgbGVmdC9yaWdodCB0b29sdGlwcyAqL1xuLnRvb2x0aXAtbGVmdDphZnRlcixcbi50b29sdGlwLXJpZ2h0OmFmdGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IC0xNnB4O1xufSIsIi5hY2NvdW50LXNlY3Rpb24ge1xuICAgIG1hcmdpbi10b3A6IDFweDtcbiAgICBib3JkZXItdG9wOiBzb2xpZCA1cHggJGJyYW5kLXByaW1hcnk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEyMGRlZywgIzkxQzRGRiAwJSwgI0YwRjdGRiA4NyUpO1xuICAgIHBhZGRpbmctYm90dG9tOiA1MHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAuaGVhZGluZyB7XG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIGNvbG9yOiAjNDg1RTY5O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmRhc2hib2FyZC1uYXZpZ2F0aW9uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG4gICAgLmNsb3VkLXNjcm9sbCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCgvc3JjL2Fzc2V0cy9pbWFnZXMvaW1vdmVob21lL2Nsb3Vkcy5wbmcpIHJlcGVhdC14O1xuICAgICAgICB0b3A6IDcwcHg7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgLW1vei1hbmltYXRpb246IDkwMDAwMHMgYmFja2dyb3VuZFNjcm9sbCBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICAgIC1vLWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgLW1zLWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgYW5pbWF0aW9uOiA5MDAwMDBzIGJhY2tncm91bmRTY3JvbGwgaW5maW5pdGUgbGluZWFyO1xuICAgIH1cbiAgICBALXdlYmtpdC1rZXlmcmFtZXMgYmFja2dyb3VuZFNjcm9sbCB7XG4gICAgICAgIGZyb20ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwO1xuICAgICAgICB9XG4gICAgICAgIHRvIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC05OTk5OTk5OXB4IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGtleWZyYW1lcyBiYWNrZ3JvdW5kU2Nyb2xsIHtcbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG4gICAgICAgIH1cbiAgICAgICAgdG8ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk5OTk5OTk5cHggMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuc2VjdGlvbi10aXRsZSB7XG4gICAgICAgIGNvbG9yOiAjNDg1RTY5O1xuICAgICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICAgIG1hcmdpbjogMCAwIDEwcHggIWltcG9ydGFudDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuICAgIGgzIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGNvbG9yOiAjMzc0NzRGICFpbXBvcnRhbnQ7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgICBpbnB1dCxcbiAgICBzZWxlY3Qge1xuICAgICAgICBib3JkZXI6IHNvbGlkIDJweCAjYmJiYmJiO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE2cHg7XG4gICAgICAgIGhlaWdodDogNTFweDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAycHggJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgICBjb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hY2NvdW50LW9wdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIC5hY2NvdW50LWRldGFpbHMtZm9ybSB7XG4gICAgICAgICAgICAuaW1oLXRvb2x0aXAge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYWNjb3VudC10b29scyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYnJhbmQtcHJpbWFyeTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjI0KTtcbiAgICAgICAgICAgIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAzcHggMHB4IDBweCAjMTgyYzdiO1xuICAgICAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oICRicmFuZC1wcmltYXJ5LCAxMCUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oICRicmFuZC1wcmltYXJ5LCAxMCUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGE6YWN0aXZlLFxuICAgICAgICAgICAgICAgIGFbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXByaW1hcnkgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmFjY291bnQtY29udGVudHMge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNTBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ob3VzZS1iYW5uZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDUwcHggMCAwIDA7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5sb2dpbiB7XG4gICAgLmxvZ2luLWJsb2NrIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0YwRjdGRjtcbiAgICAgICAgcGFkZGluZzogMTUwcHggMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBoMSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDM2cHg7XG4gICAgICAgICAgICBjb2xvcjogIzM3NDc0RjtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjM3cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgLmxvZ2luLWZvcm0ge1xuICAgICAgICAgICAgd2lkdGg6IDQ1NXB4O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0byA0MHB4IGF1dG87XG4gICAgICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAycHggMHB4IDBweCByZ2JhKDIwMywgMjA2LCAyMDgsIDAuNTApO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGQ0ZDRkM7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0I0QjRCNDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjNzM4NDhEO1xuICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1OXB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgICAgICAgICAgICAmOnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzczODQ4RDtcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMThweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAucGFzc3dvcmQtZmllbGQge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMTA7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMTU7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMyNjJDM0Q7XG4gICAgICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjI0cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmltaC1idG4tc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDc3cHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDBweCAwcHggIzI3QTQ0ODtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyOHB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjRkZGRkZGO1xuICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjI5cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmxvZ2luLWxpbmsge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgY29sb3I6ICM3Mzg0OEQ7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRicmFuZC1wcmltYXJ5ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSIsIi5yZWdpc3RlciB7XG4gICAgLnJlZ2lzdGVyLWJsb2NrIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0YwRjdGRjtcbiAgICAgICAgcGFkZGluZzogMTUwcHggMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBoMSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDM2cHg7XG4gICAgICAgICAgICBjb2xvcjogIzM3NDc0RjtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjM3cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgLnJlZ2lzdGVyLWZvcm0ge1xuICAgICAgICAgICAgd2lkdGg6IDQ1NXB4O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0byA0MHB4IGF1dG87XG4gICAgICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAycHggMHB4IDBweCByZ2JhKDIwMywgMjA2LCAyMDgsIDAuNTApO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGQ0ZDRkM7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0I0QjRCNDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGltb3ZlaG9tZTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM3Mzg0OEQ7XG4gICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMThweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDU5cHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4O1xuICAgICAgICAgICAgICAgICY6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogaW1vdmVob21lO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjNzM4NDhEO1xuICAgICAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5wYXNzd29yZC1maWVsZCB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAxMDtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAxNTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzI2MkMzRDtcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMjRweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuaW1oLWJ0bi1zZWNvbmRhcnkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogNzdweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYnJhbmQtc2Vjb25kYXJ5O1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAycHggMHB4IDBweCAjMjdBNDQ4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogaW1vdmVob21lLUJvbGQ7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyOHB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjRkZGRkZGO1xuICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjI5cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnJlZ2lzdGVyLWxpbmsge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGltb3ZlaG9tZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgIGNvbG9yOiAjNzM4NDhEO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMThweDtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYnJhbmQtcHJpbWFyeSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMThweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn0iLCIucmVzZXQtcGFzc3dvcmQge1xuICAgIC5yZXNldC1wYXNzd29yZC1ibG9jayB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGMEY3RkY7XG4gICAgICAgIHBhZGRpbmc6IDEwMHB4IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgaDEge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzNnB4O1xuICAgICAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4zN3B4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG4gICAgICAgIC5yZXNldC1wYXNzd29yZC1mb3JtIHtcbiAgICAgICAgICAgIHdpZHRoOiA0NTVweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gNDBweCBhdXRvO1xuICAgICAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDBweCAwcHggcmdiYSgyMDMsIDIwNiwgMjA4LCAwLjUwKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDBlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjkzNzVlbSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkNGQ0ZDO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNCNEI0QjQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBpbW92ZWhvbWU7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjNzM4NDhEO1xuICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1OXB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgICAgICAgICAgICAmOnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGltb3ZlaG9tZTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzczODQ4RDtcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMThweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAucGFzc3dvcmQtZmllbGQge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMTA7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMTU7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMyNjJDM0Q7XG4gICAgICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjI0cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmltaC1idG4tc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDc3cHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDBweCAwcHggIzI3QTQ0ODtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGltb3ZlaG9tZS1Cb2xkO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4yOXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5yZXNldC1wYXNzd29yZC1saW5rIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBpbW92ZWhvbWU7XG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICBjb2xvcjogIzczODQ4RDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGJyYW5kLXByaW1hcnkgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59IiwiLmZvcmdvdC1wYXNzd29yZCB7XG4gICAgLmZvcmdvdC1wYXNzd29yZC1ibG9jayB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGMEY3RkY7XG4gICAgICAgIHBhZGRpbmc6IDEwMHB4IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgaDEge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzNnB4O1xuICAgICAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4zN3B4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG4gICAgICAgIC5mb3Jnb3QtcGFzc3dvcmQtZm9ybSB7XG4gICAgICAgICAgICB3aWR0aDogNDU1cHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDQwcHggYXV0bztcbiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDJweCAwcHggMHB4IHJnYmEoMjAzLCAyMDYsIDIwOCwgMC41MCk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIGFuZCAobWF4LXdpZHRoOiA2My45Mzc1ZW0pIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZDRkNGQztcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjQjRCNEI0O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogaW1vdmVob21lO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzczODQ4RDtcbiAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogNTlweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XG4gICAgICAgICAgICAgICAgJjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBpbW92ZWhvbWU7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM3Mzg0OEQ7XG4gICAgICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnBhc3N3b3JkLWZpZWxkIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDEwO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDE1O1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMjYyQzNEO1xuICAgICAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4yNHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pbWgtYnRuLXNlY29uZGFyeSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA3N3B4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDJweCAwcHggMHB4ICMyN0E0NDg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBpbW92ZWhvbWUtQm9sZDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNGRkZGRkY7XG4gICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMjlweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuZm9yZ290LXBhc3N3b3JkLWxpbmsge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGltb3ZlaG9tZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgIGNvbG9yOiAjNzM4NDhEO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMThweDtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYnJhbmQtcHJpbWFyeSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMThweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn0iLCIuaG9tZSB7XG4gICAgLmJhbm5lciB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgxMjBkZWcsICM5MUM0RkYgMCUsICNGMEY3RkYgODclKTtcbiAgICAgICAgbWluLWhlaWdodDogNTUwcHg7XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgbWluLWhlaWdodDogYXV0bztcbiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggMDtcbiAgICAgICAgfVxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgcGFkZGluZzogMjBweCAwO1xuICAgICAgICB9XG4gICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDdweCAjMjA1MDgxO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIC5jbG91ZC1zY3JvbGwge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKC9zcmMvYXNzZXRzL2ltYWdlcy9pbW92ZWhvbWUvY2xvdWRzLnBuZykgcmVwZWF0LXg7XG4gICAgICAgICAgICB0b3A6IDIwcHg7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDgwJTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgICAgIC1tb3otYW5pbWF0aW9uOiA5MDAwMDBzIGJhY2tncm91bmRTY3JvbGwgaW5maW5pdGUgbGluZWFyO1xuICAgICAgICAgICAgLW8tYW5pbWF0aW9uOiA5MDAwMDBzIGJhY2tncm91bmRTY3JvbGwgaW5maW5pdGUgbGluZWFyO1xuICAgICAgICAgICAgLW1zLWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgfVxuICAgICAgICAjaG91c2VfaHlwZV9jb250YWluZXIge1xuICAgICAgICAgICAgd2lkdGg6IDY4MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICB9XG4gICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBiYWNrZ3JvdW5kU2Nyb2xsIHtcbiAgICAgICAgICAgIGZyb20ge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRvIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTk5OTk5OTlweCAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBrZXlmcmFtZXMgYmFja2dyb3VuZFNjcm9sbCB7XG4gICAgICAgICAgICBmcm9tIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0byB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk5OTk5OTk5cHggMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuZ2V0LXN0YXJ0ZWQge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNjBweDtcbiAgICAgICAgICAgIC8qIFNtYWxsIG9ubHkgKi9cbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDQwcHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyogTWVkaXVtIG9ubHkgKi9cbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIGFuZCAobWF4LXdpZHRoOiA2My45Mzc1ZW0pIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDQwcHggMDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuY3RhIHtcbiAgICAgICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiA1cHggMCFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICAgICAgfSAvLyBEaWZmZXJlbnQgc2l6ZSBmb3IgZWFjaCBjYWxsIHRvIGFjdGlvblxuICAgICAgICAgICAgICAgIHA6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDQwcHg7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMjYyQzNEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwOm50aC1jaGlsZCgyKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNjRweDtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMyNjJDM0Q7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwOm50aC1jaGlsZCgzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmZlYXR1cmVzIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA1MHB4O1xuICAgICAgICAgICAgICAgIC5mZWF0dXJlLWJsb2NrIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweCA1cHggNXB4IDA7XG4gICAgICAgICAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMzc0NzRGO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuYWN0aW9ucyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICAgICAgICAgICAgICAuZ2V0LXN0YXJ0ZWQtYnRuIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogNzBweDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI4N3B4O1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYnJhbmQtc2Vjb25kYXJ5O1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuNXM7XG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAzcHggMHB4IDBweCBkYXJrZW4oICRicmFuZC1zZWNvbmRhcnksIDI1JSk7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICAubG9nby1ibG9jayB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQtc2Vjb25kYXJ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTRweCAyMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDM5LjI3cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDQycHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLmJ1dHRvbi1ibG9jayB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxNHB4IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyOHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxOHB4IDAgMCAxMDBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyOHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC41cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbiggJGJyYW5kLXNlY29uZGFyeSwgMTAlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAubGVhcm4ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjNzM4NDhEO1xuICAgICAgICAgICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM3Mzg0OEQgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGJyYW5kLXNlY29uZGFyeSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvKiBTbWFsbCBvbmx5ICovXG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvKiBNZWRpdW0gb25seSAqL1xuICAgICAgICAgICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC53ZWJzaXRlLWxpc3RpbmdzIHtcbiAgICAgICAgbWFyZ2luOiA0MHB4IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBjb2xvcjogIzM3NDc0RjtcbiAgICAgICAgfVxuICAgICAgICAucmlnaHRtb3ZlLWxvZ28ge1xuICAgICAgICAgICAgaGVpZ2h0OiA1N3B4O1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgfVxuICAgICAgICAuem9vcGxhLWxvZ28ge1xuICAgICAgICAgICAgaGVpZ2h0OiAzOXB4O1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLnByaW1lbG9jYXRpb24tbG9nbyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDU3cHg7XG4gICAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICB9XG4gICAgICAgIC8qIFNtYWxsIG9ubHkgKi9cbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyogTWVkaXVtIG9ubHkgKi9cbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDBlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjkzNzVlbSkge1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5zdGVwcyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGMEY3RkY7XG4gICAgICAgIHBhZGRpbmc6IDc1cHggMHB4O1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgaDEge1xuICAgICAgICAgICAgY29sb3I6ICRibGFjaztcbiAgICAgICAgfVxuICAgICAgICBoMyB7XG4gICAgICAgICAgICBjb2xvcjogJGJsYWNrO1xuICAgICAgICB9XG4gICAgICAgIC5zdGVwcy10aXRsZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDM2cHg7XG4gICAgICAgICAgICBjb2xvcjogJGJsYWNrO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDkwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLnN0ZXAtYmxvY2sge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgLmhvdXNlLWltZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDI5M3B4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTI4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAubGlzdGluZy1pbWcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyOTBweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEyOHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnBob25lLWltZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDIxNHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTI4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDMwcHggMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzczODQ4RDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVsIHtcbiAgICAgICAgICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDI2cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjZweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmhvbWUtY2Fyb3VzZWwge1xuICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIC5ob3VzZS1pbWcsXG4gICAgICAgICAgICAubGlzdGluZy1pbWcsXG4gICAgICAgICAgICAucGhvbmUtaW1nIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5zdGVwLWJsb2NrIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDI1cHg7XG4gICAgICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmNvbXBhcmlzb24tYWQge1xuICAgICAgICBwYWRkaW5nLXRvcDogODBweDtcbiAgICAgICAgLmxlZnQtc2lkZSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5hZC1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyNDRweCk7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiA0MHB4IDAgMCAwO1xuICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIGFuZCAobWF4LXdpZHRoOiA2My45Mzc1ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnJpZ2h0LXNpZGUge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5hZC1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyNDRweCk7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogNDBweCAwIDAgMDtcbiAgICAgICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDUwcHg7XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDM2cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMyNjJDM0Q7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5jb21wYXJpc29uLWFkLWJsb2NrIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjA5cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyMjdweDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzI2MkMzRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn0iLCIuc2F2aW5ncyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gICAgcGFkZGluZzogNzBweCAyMHB4O1xuICAgIGNvbG9yOiAkd2hpdGUgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tdG9wOiAtMzhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICAuc2F2aW5ncy1hZCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgaDMge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICB9XG4gICAgfVxuICAgIGxhYmVsIHtcbiAgICAgICAgY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xuICAgICAgICBvcGFjaXR5OiAwLjY0O1xuICAgIH1cbiAgICBpbnB1dCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR3aGl0ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgIH1cbiAgICAuc2VsbGluZy1wcmljZS1ibG9jayB7XG4gICAgICAgIHdpZHRoOiA2MCU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAzJTtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgICAuc2VsbGluZy1wcmljZS1maWVsZCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA0M3B4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAzMDtcbiAgICAgICAgICAgICAgICB0b3A6IDEwO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmFnZW5jeS1mZWUtYmxvY2sge1xuICAgICAgICB3aWR0aDogMzAlO1xuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIGFuZCAobWF4LXdpZHRoOiA2My45Mzc1ZW0pIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAzNSU7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xuICAgICAgICB9XG4gICAgICAgIC5hZ2VuY3ktZmVlLWZpZWxkIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBsZWZ0OiA2ODtcbiAgICAgICAgICAgICAgICB0b3A6IDEwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuc2F2aW5ncy1zdW0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgLnlvdS13aWxsLXNhdmUge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiAyOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDE1cHg7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDBlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjkzNzVlbSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuc2F2aW5ncy1maWVsZCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB0b3A6IDU7XG4gICAgICAgICAgICAgICAgbGVmdDogMztcbiAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNzJweDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNzJweDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5jb25maXJtYXRpb24tY2hlY2tsaXN0IHtcbiAgICAuY2hlY2tsaXN0LWJsb2NrIHtcbiAgICAgICAgLmNoZWNrbGlzdC1jdGEge1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogOTFweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDkxcHg7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMjBweCAyMHB4IDAgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5wYXltZW50LWNvbmZpcm0ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBoMSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNjRweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzM3NDc0RjtcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNjZweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM3Mzg0OEQ7XG4gICAgICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjJweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmNoZWNrbGlzdC1yZXF1aXJlbWVudHMge1xuICAgICAgICAgICAgbWFyZ2luOiA1MHB4IDA7XG4gICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweCBhdXRvIDAgYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIGFuZCAobWF4LXdpZHRoOiA2My45Mzc1ZW0pIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweCBhdXRvIDAgYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5jaGVja2xpc3QtaW1nIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI2MXB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyMzNweDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNTBweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAucmVxdXJpZW1lbnQtYmxvY2sge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDUwcHg7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgLmNoZWNrIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGgzIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMzc0NzRGICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjIycHg7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAzMHB4O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIubGlzdGluZy1hYm91dCB7XG4gICAgLnBvc3Rjb2RlLWlucHV0IHt9XG4gICAgcGFkZGluZzogMCAyMHB4O1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIGFuZCAobWF4LXdpZHRoOiA2My45Mzc1ZW0pIHtcbiAgICAgICAgcGFkZGluZzogMHB4O1xuICAgIH1cbiAgICAucGVyc29uYWwtZGV0YWlscyxcbiAgICAuYWRkcmVzcyxcbiAgICAucGhvdG8taWRlbnRpZmljYXRpb24sXG4gICAgLm93bmVycy1zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogNDBweCAwO1xuICAgICAgICBib3JkZXItYm90dG9tOiBzb2xpZCAycHggI0VDRUNFQztcbiAgICB9XG4gICAgLmFkZHJlc3MtYmxvY2sge1xuICAgICAgICBmb250LWZhbWlseTogaW1vdmVob21lO1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGNvbG9yOiAjMzc0NzRGO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xNnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMjNweDtcbiAgICAgICAgbWFyZ2luLXRvcDogNjBweDtcbiAgICAgICAgd2lkdGg6IDE3MHB4O1xuICAgIH1cbiAgICAucGVyc29uYWwtZGV0YWlscyB7XG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgICAgICB9XG4gICAgICAgIC5sb2dpbi1vcHRpb24ge1xuICAgICAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmFkZHJlc3Mge1xuICAgICAgICBoMyB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICB9XG4gICAgICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgLmh0bWwtc2VsZWN0LXJlc3BvbnNlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYnJhbmQtc2Vjb25kYXJ5O1xuICAgICAgICB9XG4gICAgICAgIC52YWx1YXRpb24tZXJyb3Ige1xuICAgICAgICAgICAgY29sb3I6ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnBob3RvLWlkZW50aWZpY2F0aW9uIHtcbiAgICAgICAgY29sb3I6ICRibGFjaztcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDQ4cHg7XG4gICAgICAgICAgICBjb2xvcjogJGJsYWNrO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNDBweDtcbiAgICAgICAgfVxuICAgICAgICAuaW1hZ2UtY29udHJvbHMge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIC5pY29uLWNyb3NzIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDMwcHg7XG4gICAgICAgICAgICAgICAgY29sb3I6IHJlZDtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIubGlzdGluZy1kZXRhaWxzIHtcbiAgLnByb3BlcnR5LXR5cGUtc2VjdGlvbiB7XG4gICAgbWFyZ2luOiAxMHB4IDAgMzBweCAwO1xuICAgIHNlbGVjdCB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG4gIH1cbiAgLnJvb21zLXNlY3Rpb24ge1xuICAgIG1hcmdpbjogMzBweCAwO1xuICAgIHVsIHtcbiAgICAgIG1hcmdpbjogMHB4O1xuICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxODRweDtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgd2lkdGg6IDExMHB4O1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAucm9vbS1ibG9jayB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gICAgICBoMyB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG4gICAgICAucm9vbS1ib3gge1xuICAgICAgICB3aWR0aDogMTA0cHg7XG4gICAgICAgIGhlaWdodDogNzhweDtcbiAgICAgICAgYmFja2dyb3VuZDogI0ZDRkNGQztcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgIzlBOUE5QTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgIGNvbG9yOiAjMjYyQzNEO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggNXB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICBoZWlnaHQ6IDIycHg7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMyNjJDM0Q7XG4gICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICBtYXJnaW46IDE1cHggYXV0bztcbiAgICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYnJhbmQtc2Vjb25kYXJ5O1xuICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgICAmOm50aC1jaGlsZCgyKSB7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAuZmVhdHVyZXMtc2VjdGlvbiB7XG4gICAgLmZlYXR1cmVzIHtcbiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgIG1hcmdpbjogMHB4O1xuICAgICAgLmZlYXR1cmUge1xuICAgICAgICBib3JkZXI6IHNvbGlkIDJweCAkYnJhbmQtc2Vjb25kYXJ5O1xuICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgICAgIG1hcmdpbjogNXB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgY29sb3I6ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuICAgICAgLmZlYXR1cmUtc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYnJhbmQtc2Vjb25kYXJ5O1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgLmxlYWRpbmctaW50cm9kdWN0aW9uLXNlY3Rpb24sXG4gIC5tYWluLWRlc2NyaXB0aW9uLXNlY3Rpb24ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogMzBweCAwO1xuICAgIC5zdWItaGVhZGluZyB7XG4gICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB9XG4gICAgdHJpeC1lZGl0b3Ige1xuICAgICAgbWluLWhlaWdodDogMTEzcHg7XG4gICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgfVxuICAgIC53b3JkLWNvdW50IHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgY29sb3I6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgfVxuICB9XG4gIC50ZXh0LWNvdW50IHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICB9XG4gIC5lcGMtc2VjdGlvbiB7XG4gICAgcGFkZGluZzogMTBweCAwIDQwcHggMDtcbiAgICBib3JkZXItYm90dG9tOiBzb2xpZCAycHggI0VDRUNFQztcbiAgICAuaW1hZ2UtY29udHJvbHMge1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAuaWNvbi10cmFzaDMge1xuICAgICAgICBmb250LXNpemU6IDMwcHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIGNvbG9yOiByZWQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gICAgLmhlYWQsXG4gICAgLnN1Yi1oZWFkaW5nIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIGNvbG9yOiAjNzM3MzczO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMjFweDtcbiAgICB9XG4gICAgLmhlYWQge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICAgIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50O1xuICAgICAgY29sb3I6ICMzNzQ3NEYgIWltcG9ydGFudDtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgfVxuICAgIC51cGxvYWQtZXBjLWhlYWRpbmcge1xuICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgY29sb3I6ICM3MzczNzM7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMC4yMXB4O1xuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgICAgfVxuICAgIH1cbiAgICAuZXBjLWljb24ge1xuICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgICAuZXBjLXJlZ2lzdGVyLWxpbmsge1xuICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogZGFya2VuKCR0ZXh0LWNvbG9yLCAyMCUpO1xuICAgICAgfVxuICAgIH1cbiAgICAudXBsb2FkLWVwYy1idG4ge1xuICAgICAgcGFkZGluZzogMjBweCA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5vcmRlci1lcGMtYmxvY2sge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBib3JkZXI6IHNvbGlkIDJweCAkYmxhY2s7XG4gICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICBoZWlnaHQ6IDYycHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBwIHtcbiAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICB9XG4gICAgICAucHJpY2UsXG4gICAgICAuaXRlbSxcbiAgICAgIC5pbWgtYnRuLXNlY29uZGFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICAgIC5wcmljZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRibGFjaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgZm9udC1zaXplOiAzNnB4O1xuICAgICAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMzdweDtcbiAgICAgICAgcGFkZGluZzogMCAyMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgIH1cbiAgICAgIC5pdGVtIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgIH1cbiAgICAgIC5pbWgtYnRuLXNlY29uZGFyeSB7XG4gICAgICAgIG1hcmdpbjogNHB4O1xuICAgICAgICBtaW4td2lkdGg6IDBweDtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIGRvd24pIHtcbiAgICAgICAgICBtYXJnaW46IDE1cHggMDtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSB1cCkge1xuICAgICAgICAgIG1hcmdpbjogNHB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIubGlzdGluZy1leHRyYXMge1xuICAuZXh0cmFzLWxpc3Qtc2VjdGlvbiB7XG4gICAgLmV4dHJhLWFkZGVkIHtcbiAgICAgIGJvcmRlcjogc29saWQgM3B4ICRicmFuZC1zZWNvbmRhcnkgIWltcG9ydGFudDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICB9XG4gICAgLml0ZW0tbGcge1xuICAgICAgYm9yZGVyOiAycHggc29saWQgJHdoaXRlO1xuICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgIHAge1xuICAgICAgICBtYXJnaW46IDBweDtcbiAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgfVxuICAgICAgLm5hbWUge1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBtYXJnaW4tdG9wOiAxNHB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuICAgICAgLnByaWNlIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMzZweDtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMzdweDtcbiAgICAgIH1cbiAgICB9XG4gICAgLmltaC1saXN0aW5nLWZlZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYnJhbmQtc2Vjb25kYXJ5O1xuICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICAgIHBhZGRpbmc6IDIwcHggMTVweDtcbiAgICB9XG4gICAgLmV4dHJhIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtYXJnaW46IDI1cHggMDtcbiAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICBib3JkZXI6IHNvbGlkIDFweCAjQUJBQkFCO1xuICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgLmljb24sXG4gICAgICAuaXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5pY29uIHtcbiAgICAgICAgd2lkdGg6IDEyMHB4O1xuICAgICAgICBpbWcge1xuICAgICAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICAgICAgfVxuICAgICAgICAucmlnaHRtb3ZlLWxvZ28ge1xuICAgICAgICAgIGhlaWdodDogMjlweDtcbiAgICAgICAgICBtYXJnaW46IDEwcHggMDtcbiAgICAgICAgfVxuICAgICAgICAuem9vcGxhLWxvZ28ge1xuICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICBtYXJnaW46IDEwcHggMDtcbiAgICAgICAgfVxuICAgICAgICAuZm9yLXNhbGUtbG9nbyB7XG4gICAgICAgICAgaGVpZ2h0OiA2OXB4O1xuICAgICAgICB9XG4gICAgICAgIC5mbG9vci1wbGFuIHtcbiAgICAgICAgICBoZWlnaHQ6IDcycHg7XG4gICAgICAgIH1cbiAgICAgICAgLmNhbWVyYSB7XG4gICAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICB9XG4gICAgICAgIC5tb3J0YWdlIHtcbiAgICAgICAgICBoZWlnaHQ6IDU2cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5pdGVtIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTUwcHg7XG4gICAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgICAgICAuZXh0cmEtdGl0bGUge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICBjb2xvcjogIzM3NDc0RjtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xNnB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG4gICAgICAgIC5leHRyYS1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgIGNvbG9yOiAjN0Y4QTkwO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE0cHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5wcmljZS1ibG9jayB7XG4gICAgICAgIHdpZHRoOiAxMjVweDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMTVweDtcbiAgICAgICAgdG9wOiA1MHB4O1xuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgIHBvc2l0aW9uOiBpbml0aWFsO1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDBweCAwcHggZGFya2VuKCAkYnJhbmQtc2Vjb25kYXJ5LCAxMCUpOztcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgd2lkdGg6IDEyNHB4O1xuICAgICAgICAgIG1hcmdpbjogMHB4IWltcG9ydGFudDtcbiAgICAgICAgICBoZWlnaHQ6IDM0cHg7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjVzO1xuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuNXM7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oICRicmFuZC1zZWNvbmRhcnksIDEwJSk7O1xuICAgICAgICAgIH1cbiAgICAgICAgICAuYWRkIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMjdweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnByaWNlLXJlbW92ZSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogIzczODQ4RDtcbiAgICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDBweCAwcHggIzRCNUE2MjtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgd2lkdGg6IDEyNHB4O1xuICAgICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgICBtYXJnaW46IDBweCFpbXBvcnRhbnQ7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjVzO1xuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjVzO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAucHJlbWl1bSB7XG4gICAgICBib3JkZXI6IDNweCBzb2xpZCAkYnJhbmQtcHJpbWFyeTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICB9XG4gIH1cbn1cbiIsIi5saXN0aW5nIHtcbiAgICBtYXJnaW4tdG9wOiAxcHg7XG4gICAgYm9yZGVyLXRvcDogc29saWQgNXB4ICRicmFuZC1wcmltYXJ5O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgxMjBkZWcsICM5MUM0RkYgMCUsICNGMEY3RkYgODclKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZy1ib3R0b206IDUwcHg7XG4gICAgLmNsb3VkLXNjcm9sbCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCgvc3JjL2Fzc2V0cy9pbWFnZXMvaW1vdmVob21lL2Nsb3Vkcy5wbmcpIHJlcGVhdC14O1xuICAgICAgICB0b3A6IDUwcHg7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgLW1vei1hbmltYXRpb246IDkwMDAwMHMgYmFja2dyb3VuZFNjcm9sbCBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICAgIC1vLWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgLW1zLWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgYW5pbWF0aW9uOiA5MDAwMDBzIGJhY2tncm91bmRTY3JvbGwgaW5maW5pdGUgbGluZWFyO1xuICAgIH1cbiAgICBALXdlYmtpdC1rZXlmcmFtZXMgYmFja2dyb3VuZFNjcm9sbCB7XG4gICAgICAgIGZyb20ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwO1xuICAgICAgICB9XG4gICAgICAgIHRvIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC05OTk5OTk5OXB4IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGtleWZyYW1lcyBiYWNrZ3JvdW5kU2Nyb2xsIHtcbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG4gICAgICAgIH1cbiAgICAgICAgdG8ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk5OTk5OTk5cHggMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAucmVzdW1lLWxpc3Rpbmcge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICAgIHBhZGRpbmc6IDI1cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgbWFyZ2luOiA1MHB4IDAgMTUwcHggMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBoMyB7XG4gICAgICAgICAgICBmb250LXNpemU6IDMwcHggIWltcG9ydGFudDsgXG4gICAgICAgIH1cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgIH1cbiAgICAgICAgLmxpc3RpbmctcG9zdGNvZGUge1xuICAgICAgICAgICAgY29sb3I6ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAudGFiLWNvbnRlbnQ+LnRhYi1wYW5lIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG4gICAgLnRhYi1jb250ZW50Pi50YWItcGFuZS5hY3RpdmUge1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIH1cbiAgICAubWVudS1jb250YWluZXIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIC5tZW51LFxuICAgICAgICAubWVudS1jb250ZW50IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC05OTk5OXB4O1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDk5OTk5cHg7XG4gICAgICAgIH1cbiAgICAgICAgLm1lbnUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXByaW1hcnkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMDBweDtcbiAgICAgICAgfVxuICAgICAgICAubWVudS1jb250ZW50IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICAgICAgICAgIC5tZW51LFxuICAgICAgICAgICAgLm1lbnUtY29udGVudCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLm1lbnUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIGFuZCAobWF4LXdpZHRoOiA2My45Mzc1ZW0pIHtcbiAgICAgICAgICAgIC5tZW51LFxuICAgICAgICAgICAgLm1lbnUtY29udGVudCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLm1lbnUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICNzdGVwcy1tZW51IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXByaW1hcnkgIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMDtcbiAgICAgICAgYm9yZGVyOiAwcHggIWltcG9ydGFudDtcbiAgICAgICAgLmRpc2FibGVkVGFiIHtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMztcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgLm92YWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAycHggJHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5zdGVwIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgICAgICAgbWluLWhlaWdodDogNDZweDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgICAgICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgMXB4IDJweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yNCk7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5hcnJvdyB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDE1cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDE1cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTVweCBzb2xpZCAkd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjVzO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAtMTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAxM3B4O1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGE6YWN0aXZlLFxuICAgICAgICAgICAgYVthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAuYXJyb3cge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAyMHB4IDA7XG4gICAgICAgICAgICBib3JkZXI6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgLnN0ZXAge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBhOmFjdGl2ZSxcbiAgICAgICAgICAgICAgICBhW2FyaWEtc2VsZWN0ZWQ9J3RydWUnXSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgLm92YWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAycHggJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGJvcmRlciAwLjVzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5hcnJvdyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDBlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjkzNzVlbSkge1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAyMHB4IDA7XG4gICAgICAgICAgICBib3JkZXI6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgLnN0ZXAge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBhOmFjdGl2ZSxcbiAgICAgICAgICAgICAgICBhW2FyaWEtc2VsZWN0ZWQ9J3RydWUnXSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgLm92YWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAycHggJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGJvcmRlciAwLjVzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5hcnJvdyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnRhYnMtY29udGVudCB7XG4gICAgICAgIGJvcmRlcjogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIC50YWJzLXBhbmVsIHtcbiAgICAgICAgICAgIG1hcmdpbjogMWVtIDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGtleWZyYW1lcyBib3JkZXItcHVsc2F0ZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICAgIGJvcmRlcjogc29saWQgMnB4ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICAgIGJvcmRlcjogc29saWQgMnB4ICR3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICAgIGJvcmRlcjogc29saWQgMnB4ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmhlYWRpbmcge1xuICAgICAgICBib3JkZXItYm90dG9tOiBzb2xpZCAycHggJHdoaXRlO1xuICAgICAgICBoMSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDM2cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmhvdXNlLWJhbm5lciB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDM1NnB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBoZWlnaHQ6IDI3N3B4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogODBweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbnB1dCxcbiAgICBzZWxlY3Qge1xuICAgICAgICBib3JkZXI6IHNvbGlkIDJweCAjYmJiYmJiO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE2cHg7XG4gICAgICAgIGhlaWdodDogNTFweDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAycHggJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgICBjb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoMyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50O1xuICAgICAgICBjb2xvcjogIzM3NDc0RiAhaW1wb3J0YW50O1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgLmltaC1idG4tc2Vjb25kYXJ5IC5uYXZpZ2F0ZS1iYWNrIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nOiAxNXB4IDMycHg7XG4gICAgICAgIG1hcmdpbjogMnB4IDA7XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcmlnaHQ6IDVweDtcbiAgICAgICAgICAgIHRvcDogMTRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgZm9udC1zaXplOiAyMXB4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5zdGVwIHtcbiAgICAgICAgcGFkZGluZzogNDBweCAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgICAgICAuaW1oLWJ0bi1zZWNvbmRhcnkge1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLmltaC1idG4tbXV0ZWQge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn0iLCIubGlzdGluZy1wYXkge1xuICAgIC5lcnJvci1tZXNzYWdlLWNvbnRhaW5lciB7XG4gICAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgIH1cbiAgICAuc3RlcC1oZWFkaW5nIHtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICBjb2xvcjogIzczODQ4RCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuaXRlbSB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAyMHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQgMnB4ICNFQ0VDRUM7XG4gICAgICAgIHAge1xuICAgICAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLm5hbWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgY29sb3I6ICMyNjJDM0Q7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xuICAgICAgICB9XG4gICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgICBjb2xvcjogIzI2MkMzRDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjI0cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmljb24tdHJhc2gzIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYnJhbmQtZGFuZ2VyO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDAgMCAxMXB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgIH1cbiAgICAgICAgLmRlbGV0ZS1jb25maXJtIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1kYW5nZXI7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAwIDExcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCAkYnJhbmQtZGFuZ2VyLCAxMCUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5pdGVtLWxnIHtcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgJHdoaXRlO1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICBwYWRkaW5nLXRvcDogMjBweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gICAgICAgIHAge1xuICAgICAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLm5hbWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMThweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTRweDtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIH1cbiAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgZm9udC1zaXplOiAzNnB4O1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjM3cHg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmltaC1saXN0aW5nLWZlZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgfVxuICAgIC50b3RhbCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1wcmltYXJ5O1xuICAgIH1cbiAgICAubW9yZS1leHRyYXMge1xuICAgICAgICBtYXJnaW46IDIwcHggMDtcbiAgICAgICAgYSB7XG4gICAgICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6IGRhcmtlbigkdGV4dC1jb2xvciwgMjAlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vKipcbiAqIFRoZSBDU1Mgc2hvd24gaGVyZSB3aWxsIG5vdCBiZSBpbnRyb2R1Y2VkIGluIHRoZSBRdWlja3N0YXJ0IGd1aWRlLCBidXQgc2hvd3NcbiAqIGhvdyB5b3UgY2FuIHVzZSBDU1MgdG8gc3R5bGUgeW91ciBFbGVtZW50J3MgY29udGFpbmVyLlxuICovXG5cbi5TdHJpcGVFbGVtZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgI2U2ZWJmMTtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJveC1zaGFkb3cgMTUwbXMgZWFzZTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDE1MG1zIGVhc2U7XG59XG5cbi5TdHJpcGVFbGVtZW50LS1mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgI2NmZDdkZjtcbn1cblxuLlN0cmlwZUVsZW1lbnQtLWludmFsaWQge1xuICAgIGJvcmRlci1jb2xvcjogI2ZmMDAwMDtcbn1cblxuLlN0cmlwZUVsZW1lbnQtLXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZmRlNSAhaW1wb3J0YW50O1xufVxuXG4jY2FyZC1lcnJvcnMge1xuICAgIG1hcmdpbjogMTBweCAwO1xuICAgIGNvbG9yOiAkYnJhbmQtZGFuZ2VyO1xufVxuXG4ucGF5bWVudC1zZWN0aW9uIHtcbiAgICBwYWRkaW5nOiA0MHB4IDA7XG4gICAgYm9yZGVyLWJvdHRvbTogc29saWQgMnB4ICNFQ0VDRUM7XG4gICAgLmNhcmQtbG9nb3Mge1xuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwIHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgY29sb3I6ICMyNjJDM0Q7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjJweDtcbiAgICB9XG4gICAgLmljb24tbG9jayB7XG4gICAgICAgIGZvbnQtc2l6ZTogNjRweDtcbiAgICAgICAgY29sb3I6ICM3Mzg0OEQ7XG4gICAgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAuaWNvbi1sb2NrIHtcbiAgICAgICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4jcGF5bWVudC1mb3JtIHtcbiAgICAudGVybXMge1xuICAgICAgICBtYXJnaW46IDEwcHggMDtcbiAgICAgICAgcCxcbiAgICAgICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGNvbG9yOiAjNzM4NDhEO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMTRweDtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYnJhbmQtcHJpbWFyeTtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuYWN0aXZhdGUtbGlzdGluZyB7XG4gICAgICAgIHBhZGRpbmc6IDQwcHggMDtcbiAgICAgICAgLmNoZWNrbGlzdCB7XG4gICAgICAgICAgICBoZWlnaHQ6IDE4M3B4O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuaW1oLWJ0bi1uYXZpZ2F0ZSB7XG4gICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIGhlaWdodDogNzhweDtcbiAgICAgICAgd2lkdGg6IDM0M3B4O1xuICAgICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgICAgIGNvbG9yOiAjRkZGRkZGO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4yOXB4O1xuICAgIH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICAgICAgLmNoZWNrbGlzdCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucGF5bWVudC1jb25maXJtYXRpb24ge1xuICAgIHBhZGRpbmc6IDQwcHggMDtcbiAgICBib3JkZXItYm90dG9tOiBzb2xpZCAycHggI0VDRUNFQztcbiAgICBwIHtcbiAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgIH1cbn1cblxuLnBob3RvLWlkZW50aWZpY2F0aW9uIHtcbiAgICBjb2xvcjogJGJsYWNrO1xuICAgIHNwYW4ge1xuICAgICAgICBmb250LXNpemU6IDQ4cHg7XG4gICAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNDBweDtcbiAgICB9XG4gICAgLmltYWdlLWNvbnRyb2xzIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIC5pY29uLXRyYXNoMyB7XG4gICAgICAgICAgICBmb250LXNpemU6IDMwcHg7XG4gICAgICAgICAgICBjb2xvcjogcmVkO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udXBsb2FkLWxpc3RpbmctYmxvY2sge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC56b29wbGEtcHJvZ3Jlc3MtYmxvY2ssXG4gICAgLnJpZ2h0bW92ZS1wcm9ncmVzcy1ibG9jayB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogNDBweDtcbiAgICAgICAgYm9yZGVyOiBzb2xpZCAzcHggJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDI4MHB4O1xuICAgICAgICBtYXJnaW46IDQwcHggMDtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNzBweDtcbiAgICAgICAgICAgIGhlaWdodDogNTBweDtcbiAgICAgICAgfVxuICAgIH1cbn0iLCIubGlzdGluZy1wcmV2aWV3IHtcbiAgLnByZXZpZXctc2VjdGlvbiB7XG4gICAgbWFyZ2luOiA0MHB4IDA7XG4gICAgLnByZXZpZXctY2FyZCB7XG4gICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICBib3gtc2hhZG93OiAwIDNweCA2cHggcmdiYSgwLCAwLCAwLCAwLjE2KSwgMCAzcHggNnB4IHJnYmEoMCwgMCwgMCwgMC4yMyk7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoLjI1LCAuOCwgLjI1LCAxKTtcbiAgICAgIHBhZGRpbmc6IDAgMCA0MHB4O1xuICAgICAgLmNhcmQtdGl0bGUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQtcHJpbWFyeTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4IDVweCAwIDA7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMzBweDtcbiAgICAgICAgLnByZXZpZXctYWRkcmVzcyB7XG4gICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICBmb250LXNpemU6IDIwcHggIWltcG9ydGFudDtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4yNHB4O1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgcCB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5pY29uLWhvbWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAyNXB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAucHJpY2Uge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMjVweCAhaW1wb3J0YW50O1xuICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMjRweDtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBwIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLmZvY3VzLWltYWdlIHtcbiAgICAgIGhlaWdodDogMzUwcHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgcGFkZGluZzogMCAxMHB4O1xuICAgICAgaW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgfVxuICAgIH1cbiAgICAub3dsLWNhcm91c2VsIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcGFkZGluZzogMCAxMHB4O1xuICAgICAgLm93bC1uYXYge1xuICAgICAgICAub3dsLXByZXYsXG4gICAgICAgIC5vd2wtbmV4dCB7XG4gICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgY29sb3I6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgICAgICB9XG4gICAgICAgIC5vd2wtcHJldiB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuICAgICAgICAub3dsLW5leHQge1xuICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIC5kaXNhYmxlZCB7XG4gICAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICAgIG9wYWNpdHk6IDAuMztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAuaW1hZ2UtYmxvY2sge1xuICAgICAgb3V0bGluZTogbm9uZSFpbXBvcnRhbnQ7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBpbWcge1xuICAgICAgICBoZWlnaHQ6IDE0MHB4O1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIG91dGxpbmU6IG5vbmUhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgICAucm9vbS1udW1iZXIge1xuICAgICAgLnJvb21zLXNlY3Rpb24ge1xuICAgICAgICBtYXJnaW46IDMwcHggMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAucm9vbS1ibG9jayB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBoMyB7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgIH1cbiAgICAgICAgICAucm9vbS1ib3gge1xuICAgICAgICAgICAgd2lkdGg6IDEwNHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA3OHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZDRkNGQztcbiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICM5QTlBOUE7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgICBmb250LWZhbWlseTogaW1vdmVob21lO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgY29sb3I6ICMyNjJDM0Q7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogMTBweCAwO1xuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICAgICAgY29sb3I6ICM3Mzg0OEQ7XG4gICAgICAgICAgICAgIG1hcmdpbjogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAucHJldmlldy10aXRsZSB7XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBjb2xvcjogIzI2MkMzRDtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjIycHg7XG4gICAgICBwYWRkaW5nOiAwIDUwcHg7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgICAgfVxuICAgIH1cbiAgICAucHJldmlldy1kZXNjcmlwdGlvbiB7XG4gICAgICBwYWRkaW5nOiAwIDUwcHg7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgY29sb3I6ICM3Mzg0OEQgIWltcG9ydGFudDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyNXB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiLmxpc3RpbmctdXBsb2FkIHtcbiAgLnByb2Zlc3Npb25hbC1waG90b2dyYXBoZXItYmxvY2ssXG4gIC51cGxvYWQtaW1hZ2UtYmxvY2sge1xuICAgIHBhZGRpbmc6IDQwcHggMDtcbiAgICBib3JkZXItYm90dG9tOiBzb2xpZCAycHggI0VDRUNFQztcbiAgfVxuICAucHJvZmVzc2lvbmFsLXBob3RvZ3JhcGhlci1ibG9jayB7XG4gICAgaDMge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG4gICAgLmRlc2NyaXB0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIGNvbG9yOiAjNzM4NDhEO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG4gICAgLmhpcmUtcHJvZmVzc2lvbmFsLXBob3RvZ3JhcGhlci1ibG9jayB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1pbi1oZWlnaHQ6IDYycHg7XG4gICAgICB3aWR0aDogNTQ1cHg7XG4gICAgICBib3JkZXI6IHNvbGlkIDJweCAjM0U0NjQwO1xuICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICAgIC5wcmljZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMzZweDtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRibGFjaztcbiAgICAgICAgbWluLWhlaWdodDogNjJweDtcbiAgICAgICAgcGFkZGluZzogMCAxMnB4O1xuICAgICAgfVxuICAgICAgLnRpdGxlIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgIG1hcmdpbjogMCAzMHB4O1xuICAgICAgfVxuICAgICAgLmltaC1idG4tc2Vjb25kYXJ5IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMjBweCBhdXRvO1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgIH1cbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgd2lkdGg6IDk1JTtcbiAgICAgICAgICBtYXJnaW46IGluaGVyaXQgYXV0bztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLnRvb2x0aXAtaW5mbyB7XG4gICAgICAgIG1hcmdpbjogMTVweCAzMHB4ICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC51cGxvYWQtaW1hZ2UtYmxvY2sge1xuICAgIC51cGxvYWQtYnRuLWJsb2NrIHtcbiAgICAgIC5pbWgtYnRuLXNlY29uZGFyeSB7XG4gICAgICAgIC5pY29uLXVwbG9hZDIge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHAge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgICAgICAuaWNvbi1sYW1wIHtcbiAgICAgICAgICBjb2xvcjogJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICAgIH1cbiAgICAgICAgY29sb3I6ICM3Mzg0OEQ7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIC5nYWxsZXJ5LWNhcm91c2VsIHtcbiAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgICAgLm93bC1jYXJvdXNlbCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICAgICAgLm93bC1uYXYge1xuICAgICAgICAgIC5vd2wtbmV4dCxcbiAgICAgICAgICAub3dsLXByZXYge1xuICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIGNvbG9yOiAkYnJhbmQtcHJpbWFyeTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5vd2wtcHJldiB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgIH1cbiAgICAgICAgICAub3dsLW5leHQge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5kaXNhYmxlZCB7XG4gICAgICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuaW1hZ2UtYmxvY2sge1xuICAgICAgICBvdXRsaW5lOiBub25lIWltcG9ydGFudDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBpbWcge1xuICAgICAgICAgIGhlaWdodDogMTgwcHg7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgIG91dGxpbmU6IG5vbmUhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5nYWxsZXJ5LWltYWdlLWxpc3Qge1xuICAgICAgLmdhbGxlcnktaW1hZ2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGN1cnNvcjogbW92ZTtcbiAgICAgICAgaGVpZ2h0OiAxODBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMTBweDtcbiAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCBsaW5lYXIgMC4ycztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgYm9yZGVyOiBzb2xpZCAycHggIzI3QTQ0ODtcbiAgICAgICAgICBhbmltYXRpb246IGJvcmRlci1wdWxzYXRlIDJzIGluZmluaXRlO1xuICAgICAgICAgIHRyYW5zaXRpb246IGFsbCBsaW5lYXIgMC4ycztcbiAgICAgICAgfVxuICAgICAgICAuaG91c2UtaW1hZ2Uge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweCAhaW1wb3J0YW50O1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgLmltYWdlLWluZGV4IHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgY29sb3I6ICNGRkZGRkY7XG4gICAgICAgICAgdG9wOiAxM3B4O1xuICAgICAgICAgIHJpZ2h0OiAyMHB4O1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgIHBhZGRpbmc6IDZweDtcbiAgICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgICAgIC5jb3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHRvcDogMTNweDtcbiAgICAgICAgICBsZWZ0OiAxNXB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIC5kZWxldGUtdG9vbCB7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIGNvbG9yOiAjRkZGRkZGO1xuICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgbWFyZ2luOiAycHg7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTYpLCAwIDNweCA2cHggcmdiYSgwLCAwLCAwLCAwLjIzKTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmYwMDAwO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBib3R0b206IDE1cHg7XG4gICAgICAgICAgcmlnaHQ6IDE3cHg7XG4gICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yMik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIubGlzdGluZy12YWx1ZSB7XG4gICAgcGFkZGluZzogMCAyMHB4O1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIGFuZCAobWF4LXdpZHRoOiA2My45Mzc1ZW0pIHtcbiAgICAgICAgcGFkZGluZzogMHB4O1xuICAgIH1cbiAgICAuZXN0aW1hdGUsXG4gICAgLmVzdGltYXRlLXNlbGVjdCB7XG4gICAgICAgIHBhZGRpbmc6IDQwcHggMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQgMnB4ICNFQ0VDRUM7XG4gICAgfVxuICAgIC5lc3RpbWF0ZSB7XG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDU1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmVzdGltYXRlLWlucHV0IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgY29sb3I6ICM3Mzg0OEQ7XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiA3cHg7XG4gICAgICAgICAgICAgICAgbGVmdDogMTFweDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRibGFjayAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5wdXRbdHlwZT1cInRleHRcIl0ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjVweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjVweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGJsYWNrICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmVzdGltYXRlLXNlbGVjdCB7XG4gICAgICAgIC5lc3RpbWF0ZS1ib3gge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgaGVpZ2h0OiAyMjBweDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcbiAgICAgICAgICAgIGJvcmRlcjogNHB4IHNvbGlkICNEN0Q3RDc7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAucGVyc29uYWwtdmFsdWF0aW9uIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogNXB4O1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDE0cHg7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYmxhY2sgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAudGljayB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogLTE1cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgICAgIGxlZnQ6IDQ1JTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmxvZ28ge1xuICAgICAgICAgICAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOm50aC1jaGlsZCgyKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDQwcHg7XG4gICAgICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA2OXB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjMzc0NzRGO1xuICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDRweCBzb2xpZCAkYnJhbmQtc2Vjb25kYXJ5O1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICAgICAgICAgIC50aWNrIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5lc3RpbWF0ZS1ib3gtc2VsZWN0ZWQge1xuICAgICAgICAgIGJvcmRlcjogNHB4IHNvbGlkICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgICAgLnRpY2sge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLm5hdmlnYXRpb24tbWFpbiB7XG4gIC5idXJnZXItbWVudSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwpIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gIH1cbiAgLm5vLWpzIFtkYXRhLXJlc3BvbnNpdmUtbWVudV0gdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLnRvcC1iYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgLnRvcC1iYXItdGl0bGUge1xuICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgLmJ1cmdlci1tZW51IHtcbiAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAubG9nbyB7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGhlaWdodDogMzNweDtcbiAgICAgIH1cbiAgICB9XG4gICAgLmdldC12YWx1YXRpb24ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgIH1cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICBtYXJnaW46IDEwcHggMDtcbiAgICAgIH1cbiAgICB9XG4gICAgLmNvbnRhY3QtZGV0YWlscyB7XG4gICAgICBwIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBjb2xvcjogIzM3NDc0RjtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIG1hcmdpbjogMCAxMHB4O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgfVxuICAgIH1cbiAgICAjcmVzcG9uc2l2ZS1tZW51IHtcbiAgICAgIC5uYXZiYXItaW1oLWJ0biB7XG4gICAgICAgIG1pbi13aWR0aDogMTY1cHg7XG4gICAgICB9XG4gICAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgdWwge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xuICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICBjb2xvcjogIzQ4NUU2OSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGJyYW5kLXByaW1hcnkgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIi5kYXNoYm9hcmQge1xuICAuaGVhZGluZyB7XG4gICAgaDIge1xuICAgICAgY29sb3I6ICM0ODVFNjk7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG4gIH1cblxuICAubGlzdGluZ3MtY29udGFpbmVyIHtcbiAgICBtYXJnaW4tdG9wOiA1MHB4O1xuICB9XG5cbiAgLnByb3BlcnR5LWxpc3Qge1xuICAgIG1hcmdpbi1ib3R0b206IDcwcHg7XG5cbiAgICAucHJvcGVydHktc2VjdGlvbi10aXRsZSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgIGZvbnQtc2l6ZTogMzBweDtcbiAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbiAgICAubm9ybWFsLXNlY3Rpb24ge1xuICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXByaW1hcnk7XG4gICAgICBib3gtc2hhZG93OiAwIDNweCAwIDAgZGFya2VuKCAkYnJhbmQtcHJpbWFyeSwgMjUlKTtcbiAgICB9XG5cbiAgICAuZGFuZ2VyLXNlY3Rpb24ge1xuICAgICAgYmFja2dyb3VuZDogJGJyYW5kLWRhbmdlciAhaW1wb3J0YW50O1xuICAgICAgYm94LXNoYWRvdzogMCAzcHggMCAwIGRhcmtlbiggJGJyYW5kLWRhbmdlciwgMjUlKTtcbiAgICB9XG5cbiAgICAucHJvcGVydHkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICBoZWlnaHQ6IDMwMHB4O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW46IDEwcHggMDtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi9zcmMvYXNzZXRzL2ltYWdlcy9pbW92ZWhvbWUvaW1oLXBsYWNlaG9sZGVyLnBuZ1wiKTtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yNCk7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIGRvd24pIHtcbiAgICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgLnByb3BlcnR5LXRvb2xzIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgICAgfVxuXG4gICAgICAgIC5ob3Zlci1iYWNrZ3JvdW5kIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpbWcge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCgnL3NyYy9hc3NldHMvaW1hZ2VzL2ltb3ZlaG9tZS9pbWgtcGxhY2Vob2xkZXIucG5nJyk7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgIH1cblxuICAgICAgLmxpc3RpbmctaW5mbyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQtc2Vjb25kYXJ5O1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMTBweDtcblxuICAgICAgICBwIHtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmhvdmVyLWJhY2tncm91bmQge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSg1NSwgNzEsIDc5LCAwLjY1KTtcbiAgICAgIH1cblxuICAgICAgLnByb3BlcnR5LXRvb2xzIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG5cbiAgICAgICAgLnRvb2wge1xuICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgbWFyZ2luOiAycHg7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50b29sLXdhcm5pbmcge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1kYW5nZXI7XG5cbiAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCAkYnJhbmQtZGFuZ2VyLCAxMCUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC50b29sLWVkaXQge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1wcmltYXJ5O1xuXG4gICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbiggJGJyYW5kLXByaW1hcnksIDEwJSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnRvb2wtdmlldyB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXNlY29uZGFyeTtcblxuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oICRicmFuZC1zZWNvbmRhcnksIDEwJSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnZpZXctYWxsIHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gIH1cbn1cbiIsIiNwcm9wZXJ0eS1lZGl0IHtcbiAgLnByZXZpZXctY2FyZCB7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGJveC1zaGFkb3c6IDAgM3B4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTYpLCAwIDNweCA2cHggcmdiYSgwLCAwLCAwLCAwLjIzKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoLjI1LCAuOCwgLjI1LCAxKTtcblxuICAgIC5ub3QtZm91bmQtbWVzc2FnZSB7XG4gICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgfVxuXG4gICAgLmNhcmQtdGl0bGUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gICAgICBib3JkZXItcmFkaXVzOiA1cHggNXB4IDAgMDtcbiAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICBwYWRkaW5nOiAxMHB4IDMwcHg7XG5cbiAgICAgIC5wcmV2aWV3LWFkZHJlc3Mge1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjI0cHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcblxuICAgICAgICBwIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuaWNvbi1ob21lIHtcbiAgICAgICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnByaWNlIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMjVweCAhaW1wb3J0YW50O1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4yNHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5pbWgtYnRuLXByaW1hcnkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmVkaXQtcHJvcGVydHktZm9ybSB7XG4gICAgcGFkZGluZzogMjBweCAxNXB4O1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcblxuICAgIC5mb2N1cy1pbWFnZSB7XG4gICAgICBtYXJnaW46IDEwcHggMDtcbiAgICAgIGhlaWdodDogMzUwcHg7XG4gICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgaW1nIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5ob3VzZS1pbWFnZXMtc2VjdGlvbiB7XG4gICAgICBtYXJnaW46IDIwcHggMDtcblxuICAgICAgLmdhbGxlcnktY2Fyb3VzZWwge1xuICAgICAgICBtYXJnaW46IDIwcHggMDtcblxuICAgICAgICAub3dsLWNhcm91c2VsIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgcGFkZGluZzogMCAxMHB4O1xuXG4gICAgICAgICAgLm93bC1uYXYge1xuICAgICAgICAgICAgLm93bC1uZXh0LFxuICAgICAgICAgICAgLm93bC1wcmV2IHtcbiAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICBjb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm93bC1wcmV2IHtcbiAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm93bC1uZXh0IHtcbiAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5kaXNhYmxlZCB7XG4gICAgICAgICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgICAgICAgb3BhY2l0eTogMC4zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5pbWFnZS1ibG9jayB7XG4gICAgICAgICAgb3V0bGluZTogbm9uZSFpbXBvcnRhbnQ7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGhlaWdodDogMTgwcHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZSFpbXBvcnRhbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5nYWxsZXJ5LWltYWdlLWxpc3Qge1xuICAgICAgICAuZ2FsbGVyeS1pbWFnZSB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIGN1cnNvcjogbW92ZTtcbiAgICAgICAgICBoZWlnaHQ6IDE4MHB4O1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1hcmdpbjogMTBweDtcbiAgICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweCAhaW1wb3J0YW50O1xuICAgICAgICAgIHRyYW5zaXRpb246IGFsbCBsaW5lYXIgMC4ycztcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICBib3JkZXI6IHNvbGlkIDJweCAjMjdBNDQ4O1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBib3JkZXItcHVsc2F0ZSAycyBpbmZpbml0ZTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCBsaW5lYXIgMC4ycztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuaG91c2UtaW1hZ2Uge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLmltYWdlLWluZGV4IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMTNweDtcbiAgICAgICAgICAgIHJpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDZweDtcbiAgICAgICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5jb3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYnJhbmQtc2Vjb25kYXJ5O1xuICAgICAgICAgICAgY29sb3I6ICNGRkZGRkY7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMTNweDtcbiAgICAgICAgICAgIGxlZnQ6IDE1cHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHggIWltcG9ydGFudDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuZGVsZXRlLXRvb2wge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtYXJnaW46IDJweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDNweCA2cHggcmdiYSgwLCAwLCAwLCAwLjE2KSwgMCAzcHggNnB4IHJnYmEoMCwgMCwgMCwgMC4yMyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmYwMDAwO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgcmlnaHQ6IDE3cHg7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxNHB4IDI4cHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAucHJvcGVydHktdHlwZSB7XG4gICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICBjb2xvcjogIzI2MkMzRDtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjIycHg7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIH1cblxuICAgIC5vd25lci1pZC1zZWN0aW9uIHtcbiAgICAgIC5saW5rLWNvbnRhaW5lciB7XG4gICAgICAgIC5pbWFnZS1jb250cm9scyxcbiAgICAgICAgLmltaC1idG4sXG4gICAgICAgIC5saW5rIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5pbWFnZS1jb250cm9scyB7XG4gICAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICBjb2xvcjogJGJsYWNrO1xuXG4gICAgICAgICAgLmljb24tdHJhc2gzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMzBweDtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICBjb2xvcjogJGJyYW5kLWRhbmdlcjtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2Vjb25kLW93bmVyLXNlY3Rpb24ge1xuICAgICAgLmxpbmstY29udGFpbmVyIHtcbiAgICAgICAgLmltYWdlLWNvbnRyb2xzLFxuICAgICAgICAuaW1oLWJ0bixcbiAgICAgICAgLmxpbmsge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgLmltYWdlLWNvbnRyb2xzIHtcbiAgICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIGNvbG9yOiAkYmxhY2s7XG5cbiAgICAgICAgICAuaWNvbi10cmFzaDMge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIGNvbG9yOiAkYnJhbmQtZGFuZ2VyO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5leHRyYS1zZWN0aW9uIHtcbiAgICAgIG1hcmdpbjogMjBweCAwO1xuXG4gICAgICAuZXh0cmFzIHtcbiAgICAgICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogY2lyY2xlO1xuXG4gICAgICAgIC5leHRyYSB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIGNvbG9yOiAjMzc0NzRGO1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgcGFkZGluZzogNXB4IDIwcHg7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgIG1hcmdpbjogMTBweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5mZWF0dXJlLXNlY3Rpb24ge1xuICAgICAgbWFyZ2luOiAyMHB4IDA7XG5cbiAgICAgIC5mZWF0dXJlcyB7XG4gICAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IGNpcmNsZTtcblxuICAgICAgICAuZmVhdHVyZSB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIGNvbG9yOiAjMzc0NzRGO1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICBwYWRkaW5nOiA1cHggMjBweDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgbWFyZ2luOiAxMHB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnJvb20tbnVtYmVyIHtcbiAgICAgIC5yb29tcy1zZWN0aW9uIHtcbiAgICAgICAgbWFyZ2luOiAzMHB4IDA7XG5cbiAgICAgICAgLmNvbHVtbnMge1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yb29tLWJsb2NrIHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuXG4gICAgICAgICAgaDMge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY29sb3I6ICMzNzQ3NEYgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLnJvb20tYm94IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDRweDtcbiAgICAgICAgICAgIGhlaWdodDogNzhweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGQ0ZDRkM7XG4gICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjOUE5QTlBO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgY29sb3I6ICMyNjJDM0Q7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogMTBweCA1cHg7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAyMnB4O1xuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMjYyQzNEO1xuICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICBtYXJnaW46IDE1cHggYXV0bztcbiAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICRicmFuZC1zZWNvbmRhcnk7XG5cbiAgICAgICAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgICBtYXJnaW46IDEwcHggMDtcblxuICAgICAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5sZWFkaW5nLWludHJvZHVjdGlvbi1zZWN0aW9uLFxuICAgIC5tYWluLWRlc2NyaXB0aW9uLXNlY3Rpb24ge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbjogMzBweCAwO1xuXG4gICAgICAuc3ViLWhlYWRpbmcge1xuICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICB9XG5cbiAgICAgIHRyaXgtZWRpdG9yIHtcbiAgICAgICAgbWluLWhlaWdodDogMTEzcHg7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgLndvcmQtY291bnQge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgY29sb3I6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRleHQtY291bnQge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBjb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuXG4gICAgLmRlbGV0ZS1wcm9wZXJ0eS1idG4sXG4gICAgLnNhdmUtcHJvcGVydHktYnRuIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxufVxuIiwiI3Byb3BlcnR5LXZpZXcge1xuICAgIC5wcmV2aWV3LWNhcmQge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTYpLCAwIDNweCA2cHggcmdiYSgwLCAwLCAwLCAwLjIzKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKC4yNSwgLjgsIC4yNSwgMSk7XG4gICAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICAgICAgLmNhcmQtdGl0bGUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHggNXB4IDAgMDtcbiAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDMwcHg7XG4gICAgICAgICAgICAucHJldmlldy1hZGRyZXNzIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjI0cHg7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmljb24taG9tZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAucHJpY2Uge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjVweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMjRweDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pbWgtYnRuLXByaW1hcnkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5lZGl0LXByb3BlcnR5LWZvcm0ge1xuICAgICAgICBwYWRkaW5nOiAyMHB4IDE1cHg7XG4gICAgICAgIC5mb2N1cy1pbWFnZSB7XG4gICAgICAgICAgICBtYXJnaW46IDEwcHggMDtcbiAgICAgICAgICAgIGhlaWdodDogMzUwcHg7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICAgICAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuZXh0ZXJuYWwtYmxvY2sge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogNDBweDtcbiAgICAgICAgICAgIGJvcmRlcjogc29saWQgM3B4ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbjogNDBweCAwO1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgICAgICAgICBvYmplY3QtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiA1cHggMjBweCAwIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnByaWNlLFxuICAgICAgICAucHJvcGVydHktdHlwZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgICBjb2xvcjogIzI2MkMzRDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjIycHg7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB9XG4gICAgICAgIC5nYWxsZXJ5IHtcbiAgICAgICAgICAgIC5pbWFnZS1ibG9jayB7XG4gICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZSFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTY1cHg7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZSFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmV4dHJhLXNlY3Rpb24ge1xuICAgICAgICAgICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgICAgICAgICAuZXh0cmFzIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDIwcHggMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogY2lyY2xlO1xuICAgICAgICAgICAgICAgIC5leHRyYSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAxMHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuZmVhdHVyZS1zZWN0aW9uIHtcbiAgICAgICAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgICAgICAgICAgLmZlYXR1cmVzIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDIwcHggMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogY2lyY2xlO1xuICAgICAgICAgICAgICAgIC5mZWF0dXJlIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzM3NDc0RjtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweCAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnVwbG9hZC1pbWFnZXMge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDAgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICAucm9vbS1udW1iZXIge1xuICAgICAgICAgICAgLnJvb21zLXNlY3Rpb24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMzBweCAwO1xuICAgICAgICAgICAgICAgIC5jb2x1bW5zIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAucm9vbS1ibG9jayB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzM3NDc0RiAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMThweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAucm9vbS1ib3gge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA3OHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZDRkNGQztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICM5QTlBOUE7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogaW1vdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzI2MkMzRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDVweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIycHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAxNXB4IGF1dG87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAmOm50aC1jaGlsZCgyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5sZWFkaW5nLWludHJvZHVjdGlvbi1zZWN0aW9uIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGNvbG9yOiAjMjYyQzNEO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMjJweDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMzNzQ3NEYgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5tYWluLWRlc2NyaXB0aW9uLXNlY3Rpb24ge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM3Mzg0OEQgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjVweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMzNzQ3NEYgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSIsIi5hZG1pbi1kYXNoYm9hcmQge1xuICBtYXJnaW4tdG9wOiAxcHg7XG4gIGJvcmRlci10b3A6IHNvbGlkIDVweCAkYnJhbmQtcHJpbWFyeTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEyMGRlZywgIzkxQzRGRiAwJSwgI0YwRjdGRiA4NyUpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC5oZWFkaW5nIHtcbiAgICBoMiB7XG4gICAgICBjb2xvcjogIzQ4NUU2OTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgfVxuICAuZGFzaGJvYXJkLW5hdmlnYXRpb24ge1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIH1cbiAgLnNlY3Rpb24tdGl0bGUge1xuICAgIGNvbG9yOiAjNDg1RTY5O1xuICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICBtYXJnaW46IDAgMCAyMHB4IDAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGg0IHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gIH1cbiAgaDMge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICMzNzQ3NEYgIWltcG9ydGFudDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG4gIGlucHV0LFxuICBzZWxlY3Qge1xuICAgIGJvcmRlcjogc29saWQgMnB4ICNiYmJiYmI7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMTZweDtcbiAgICBoZWlnaHQ6IDUxcHg7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgJjpmb2N1cyB7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgIGJvcmRlcjogc29saWQgMnB4ICRicmFuZC1wcmltYXJ5O1xuICAgICAgY29sb3I6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuICB9XG4gIC5hZG1pbi1vcHRpb25zIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgLmFkbWluLWRldGFpbHMtZm9ybSB7XG4gICAgICAuaW1oLXRvb2x0aXAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgfVxuICAgIH1cbiAgICAuYWRtaW4tdG9vbHMge1xuICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXByaW1hcnk7XG4gICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yNCk7XG4gICAgICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICBib3gtc2hhZG93OiAwcHggM3B4IDBweCAwcHggIzE4MmM3YjtcbiAgICAgIHBhZGRpbmc6IDVweDtcbiAgICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBhIHtcbiAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgbWFyZ2luOiA1cHg7XG4gICAgICAgICAgfVxuICAgICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCAkYnJhbmQtcHJpbWFyeSwgMTAlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oICRicmFuZC1wcmltYXJ5LCAxMCUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhOmFjdGl2ZSxcbiAgICAgICAgYVthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1wcmltYXJ5ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAuYWRtaW4tY29udGVudHMge1xuICAgICAgbWFyZ2luOiA1MHB4IDA7XG4gICAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7XG4gICAgICAuY29udGVudC1zZWN0aW9uLXRpdGxlIHtcbiAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIH1cbiAgICAgIC5jb250ZW50LWxpc3QtZmlsdGVyIHtcbiAgICAgICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgICAgIHVsIHtcbiAgICAgICAgICBtYXJnaW46IDBweDtcbiAgICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLmZpbHRlci10aXRsZSB7XG4gICAgICAgICAgY29sb3I6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgcGFkZGluZzogMCAwIDEwcHggMDtcbiAgICAgICAgfVxuICAgICAgICAuZmlsdGVyLWxpc3Qge1xuICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmNvbnRlbnQtbGlzdCB7XG4gICAgICAgIHRhYmxlIHtcbiAgICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgICB0aCB7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0ciB7XG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgIC5pbWgtYnRuIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDJweDtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IGF1dG87XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC50YWJsZS1saW5rIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgY29sb3I6IGRhcmtlbigkYnJhbmQtcHJpbWFyeSwgMjUlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLnRhYmxlLWFjdGlvbnMge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyMjVweDtcbiAgICAgICAgICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC5zb2xkLXN0YXR1cyB7XG4gICAgICAgICAgICBjb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5vcGVuLXN0YXR1cyB7XG4gICAgICAgICAgICBjb2xvcjogJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmRlbGV0ZWQtc3RhdHVzIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYnJhbmQtZGFuZ2VyO1xuICAgICAgICAgIH1cbiAgICAgICAgICAucGVuZGluZy1zdGF0dXMge1xuICAgICAgICAgICAgY29sb3I6ICRicmFuZC13YXJuaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAubmctdGFibGUtcGFnaW5hdGlvbiB7XG4gICAgICAgICAgbGkge1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogZGFya2VuKCRicmFuZC1wcmltYXJ5LCAyMCUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC5kaXNhYmxlZCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmNvbnRlbnQtY29uZmlybS1kZWxldGUge1xuICAgICAgICAudGl0bGUge1xuICAgICAgICAgIGNvbG9yOiAjNDg1RTY5O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG4gICAgICAgIC5zdWJqZWN0IHtcbiAgICAgICAgICBjb2xvcjogIzQ4NUU2OTtcbiAgICAgICAgICAudG8tZGVsZXRlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYnJhbmQtZGFuZ2VyO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuZWRpdC1wcm9wZXJ0eSB7XG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgY29sb3I6ICM0ODVFNjk7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgLnNlY3Rpb24tdGl0bGUge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAzcHggMHB4IDBweCBkYXJrZW4oJGJyYW5kLXByaW1hcnksIDI1JSk7XG4gICAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgICBoNCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDMwcHg7XG4gICAgICAgICAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAucHJlbWl1bS1saXN0aW5nLXRpdGxlIHtcbiAgICAgICAgICBjb2xvcjogI2ZmYzY1OTtcbiAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICB9XG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XG4gICAgICAgIH1cbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgY29sb3I6ICMzNzQ3NEYgIWltcG9ydGFudDtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xOHB4O1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgICAgICB9XG4gICAgICAgIC53b3JkLWNvdW50IHtcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICBjb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICBtYXJnaW46IDEwcHggMDtcbiAgICAgICAgfVxuICAgICAgICAuYWRkcmVzcy1zZWN0aW9uIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICAgIC5lc3RpbWF0ZS1ib3gge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgaGVpZ2h0OiAyMjBweDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcbiAgICAgICAgICAgIGJvcmRlcjogNHB4IHNvbGlkICNEN0Q3RDc7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC52YWx1YXRpb24ge1xuICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgbGVmdDogNXB4O1xuICAgICAgICAgICAgICAgIHRvcDogMTRweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGJsYWNrICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICAgICAgICAgIGNvbG9yOiAjMzc0NzRGO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNDBweDtcbiAgICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgICAgaGVpZ2h0OiA2OXB4O1xuICAgICAgICAgICAgICBjb2xvcjogIzM3NDc0RjtcbiAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMThweDtcbiAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5wcm9wZXJ0eS1kZXRhaWxzLXNlY3Rpb24ge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgICAgdHJpeC1lZGl0b3Ige1xuICAgICAgICAgICAgbWluLWhlaWdodDogMTEzcHg7XG4gICAgICAgICAgICBjb2xvcjogIzM3NDc0RjtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmdhbGxlcnktaW1hZ2UtbGlzdCB7XG4gICAgICAgICAgICAubm8taW1hZ2VzIHtcbiAgICAgICAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmdhbGxlcnktaW1hZ2Uge1xuICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgIGN1cnNvcjogbW92ZTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxODBweDtcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIG1hcmdpbjogMTBweDtcbiAgICAgICAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCBsaW5lYXIgMC4ycztcbiAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAycHggJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICBhbmltYXRpb246IGJvcmRlci1wdWxzYXRlIDJzIGluZmluaXRlO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCBsaW5lYXIgMC4ycztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAuaG91c2UtaW1hZ2Uge1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLmltYWdlLWluZGV4IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAxM3B4O1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDZweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC5jb3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMTNweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAxNXB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC5kZWxldGUtdG9vbCB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjRkZGRkZGO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTYpLCAwIDNweCA2cHggcmdiYSgwLCAwLCAwLCAwLjIzKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYnJhbmQtZGFuZ2VyO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBib3R0b206IDE1cHg7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDE3cHg7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC5mZWF0dXJlLXNlY3Rpb24ge1xuICAgICAgICAgICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgICAgICAgICAuZmVhdHVyZXMge1xuICAgICAgICAgICAgICBtYXJnaW46IDIwcHggMDtcbiAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBjaXJjbGU7XG4gICAgICAgICAgICAgIC5mZWF0dXJlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweCAyMHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDEwcHg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5mZWF0dXJlcy1zZWxlY3RlZCB7XG4gICAgICAgICAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAuZmVhdHVyZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAycHggJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiA1cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBjb2xvcjogJGJyYW5kLXNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLmZlYXR1cmUtc2VsZWN0ZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAuZXh0cmEtc2VjdGlvbiB7XG4gICAgICAgICAgICBtYXJnaW46IDIwcHggMDtcbiAgICAgICAgICAgIC5leHRyYXMge1xuICAgICAgICAgICAgICBtYXJnaW46IDIwcHggMDtcbiAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgLmV4dHJhIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHggMjBweDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAxMHB4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZXh0cmFzLXNlbGVjdGVkIHtcbiAgICAgICAgICAgICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgIC5leHRyYSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAycHggJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogNXB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAuZXh0cmEtc2VsZWN0ZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLnJvb21zLXNlY3Rpb24ge1xuICAgICAgICAgICAgbWFyZ2luOiAzMHB4IDA7XG4gICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgIG1hcmdpbjogMHB4O1xuICAgICAgICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE4NHB4O1xuICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgICAgICAgd2lkdGg6IDExMHB4O1xuICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnJvb20tYmxvY2sge1xuICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcbiAgICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLnJvb20tYm94IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTA0cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA3OHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGQ0ZDRkM7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgIzlBOUE5QTtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjMjYyQzNEO1xuICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE4cHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggNXB4O1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIycHg7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMyNjJDM0Q7XG4gICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICAgICAgbWFyZ2luOiAxNXB4IGF1dG87XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRicmFuZC1zZWNvbmRhcnk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmOm50aC1jaGlsZCgyKSB7XG4gICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIGFuZCAobWF4LXdpZHRoOiA2My45Mzc1ZW0pIHtcbiAgICAgICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnVzZXItc2VjdGlvbiB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgICBwIHtcbiAgICAgICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmFwaS1zZWN0aW9uIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICAgIC5hcGktdG9vbHMge1xuICAgICAgICAgICAgLmltaC1idG4ge1xuICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmltaC1idG4tcHJlbWl1bSB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmM2NTk7XG4gICAgICAgICAgICAgIGNvbG9yOiAkdGV4dC1wcmltYXJ5O1xuICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggM3B4IDBweCAwcHggZGFya2VuKCAjZmZjNjU5LCAyNSUpO1xuICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oICNmZmM2NTksIDEwJSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLmFwaS1saW5rIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuem9vcGxhIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcbiAgICAgICAgICAgIGNvbG9yOiAjNkMxNDhFO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgIGNvbG9yOiBkYXJrZW4oIzZDMTQ4RSwgMjUlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLnJpZ2h0bW92ZSB7XG4gICAgICAgICAgICBjb2xvcjogIzAxREVCNjtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICBjb2xvcjogZGFya2VuKCMwMURFQjYsIDI1JSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIjbW9ydGdhZ2VzIHtcbiAgLmJhbm5lciB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEyMGRlZywgIzkxQzRGRiAwJSwgI0YwRjdGRiA4NyUpO1xuICAgIHBhZGRpbmctdG9wOiA5MHB4O1xuICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDdweCAjMjA1MDgxO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtaW4taGVpZ2h0OiA1NzdweDtcblxuICAgIC5jbG91ZC1zY3JvbGwge1xuICAgICAgYmFja2dyb3VuZDogdXJsKFwiL3NyYy9hc3NldHMvaW1hZ2VzL2ltb3ZlaG9tZS9jbG91ZHMucG5nXCIpIHJlcGVhdC14O1xuICAgICAgdG9wOiAyMHB4O1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiA4MCU7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgLXdlYmtpdC1hbmltYXRpb246IDkwMDAwMHMgYmFja2dyb3VuZFNjcm9sbCBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICAtbW96LWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgIC1vLWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgIC1tcy1hbmltYXRpb246IDkwMDAwMHMgYmFja2dyb3VuZFNjcm9sbCBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICBhbmltYXRpb246IDkwMDAwMHMgYmFja2dyb3VuZFNjcm9sbCBpbmZpbml0ZSBsaW5lYXI7XG4gICAgfVxuXG4gICAgLmNvbnRlbnQtcm93IHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgLmNvbnRlbnQge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAzNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICAgICAgICBjb2xvcjogJGJsYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFubmVyLWltYWdlIHtcbiAgICAgIGhlaWdodDogNDAwcHg7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMDtcbiAgICAgIGJvdHRvbTogLTEwcHg7XG4gICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDBlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjkzNzVlbSkge1xuICAgICAgICBoZWlnaHQ6IDM5MHB4O1xuICAgICAgfVxuICAgIH1cbiAgICBALXdlYmtpdC1rZXlmcmFtZXMgYmFja2dyb3VuZFNjcm9sbCB7XG4gICAgICBmcm9tIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwO1xuICAgICAgfVxuXG4gICAgICB0byB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC05OTk5OTk5OXB4IDA7XG4gICAgICB9XG4gICAgfVxuICAgIEBrZXlmcmFtZXMgYmFja2dyb3VuZFNjcm9sbCB7XG4gICAgICBmcm9tIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwO1xuICAgICAgfVxuXG4gICAgICB0byB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC05OTk5OTk5OXB4IDA7XG4gICAgICB9XG4gICAgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgbWluLWhlaWdodDogYXV0bztcbiAgICAgIHBhZGRpbmc6IDIwcHggMDtcbiAgICB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDBlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjkzNzVlbSkge1xuICAgICAgbWluLWhlaWdodDogNjgwcHg7XG4gICAgfVxuICB9XG5cbiAgLmVzdGF0ZS1hZ2VudC1hZCB7XG4gICAgYmFja2dyb3VuZDogI0YwRjdGRjtcbiAgICBib3JkZXItYm90dG9tOiA3cHggc29saWQgIzJBNTA4MTtcbiAgICBwYWRkaW5nOiA5MHB4IDA7XG5cbiAgICAuY29udGVudCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuXG4gICAgICBoMSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMzZweCAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgICBjb2xvcjogJGJsYWNrO1xuICAgICAgfVxuXG4gICAgICBwIHtcbiAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5ib3ktaGFwcHktcHJvZmlsZSB7XG4gICAgICBoZWlnaHQ6IDMyNnB4O1xuICAgIH1cblxuICAgIC5jaGVja2xpc3Qge1xuICAgICAgaGVpZ2h0OiAyMjFweDtcbiAgICB9XG5cbiAgICAmLm5vLWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICB9XG5cbiAgICAmLm5vLWJvcmRlciB7XG4gICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5zdWItbWVzc2FnZSB7XG4gICAgcGFkZGluZzogNTBweCAwO1xuXG4gICAgaDQge1xuICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgbWFyZ2luLWJvdHRvbTogNTBweDtcbiAgICB9XG5cbiAgICAuY3VzdG9tLXVuZGVybGluZSB7XG4gICAgICBib3JkZXItYm90dG9tOiBzb2xpZCAycHggJGJyYW5kLXByaW1hcnk7XG4gICAgfVxuICB9XG5cbiAgLmJhbm5lci1zZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAjRjBGN0ZGO1xuXG4gICAgLmhvdXNlLWJhbm5lciB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMzU2cHg7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgIGltZyB7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICBvYmplY3QtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgaGVpZ2h0OiAyNzdweDtcbiAgICAgICAgbWFyZ2luLXRvcDogODBweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIiNjb252ZXlhbmNpbmcge1xuICBpbnB1dCxcbiAgc2VsZWN0IHtcbiAgICBib3JkZXI6IHNvbGlkIDJweCAjYmJiO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjE2cHg7XG4gICAgcGFkZGluZzogMCAyMHB4O1xuICAgIGhlaWdodDogNTFweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICBmb250LXdlaWdodDogYm9sZDtcblxuICAgICY6Zm9jdXMge1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICBib3JkZXI6IHNvbGlkIDJweCAkYnJhbmQtcHJpbWFyeTtcbiAgICAgIGNvbG9yOiAkYnJhbmQtcHJpbWFyeTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgfVxuXG4gIGlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmJhbm5lciB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEyMGRlZywgIzkxQzRGRiAwJSwgI0YwRjdGRiA4NyUpO1xuICAgIHBhZGRpbmctdG9wOiA5MHB4O1xuICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDdweCAjMjA1MDgxO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtaW4taGVpZ2h0OiA1NzdweDtcblxuICAgIC5jbG91ZC1zY3JvbGwge1xuICAgICAgYmFja2dyb3VuZDogdXJsKFwiL3NyYy9hc3NldHMvaW1hZ2VzL2ltb3ZlaG9tZS9jbG91ZHMucG5nXCIpIHJlcGVhdC14O1xuICAgICAgdG9wOiAyMHB4O1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiA4MCU7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgLXdlYmtpdC1hbmltYXRpb246IDkwMDAwMHMgYmFja2dyb3VuZFNjcm9sbCBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICAtbW96LWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgIC1vLWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgIC1tcy1hbmltYXRpb246IDkwMDAwMHMgYmFja2dyb3VuZFNjcm9sbCBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICBhbmltYXRpb246IDkwMDAwMHMgYmFja2dyb3VuZFNjcm9sbCBpbmZpbml0ZSBsaW5lYXI7XG4gICAgfVxuXG4gICAgLmNvbnRlbnQtcm93IHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgLmNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDBweDtcblxuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAzNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICAgICAgICBjb2xvcjogJGJsYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFubmVyLWltYWdlIHtcbiAgICAgIGhlaWdodDogNDUwcHg7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMDtcbiAgICAgIGJvdHRvbTogLTdweDtcbiAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gICAgICAgIGhlaWdodDogNDEwcHg7XG4gICAgICB9XG4gICAgfVxuICAgIEAtd2Via2l0LWtleWZyYW1lcyBiYWNrZ3JvdW5kU2Nyb2xsIHtcbiAgICAgIGZyb20ge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG4gICAgICB9XG5cbiAgICAgIHRvIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk5OTk5OTk5cHggMDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGtleWZyYW1lcyBiYWNrZ3JvdW5kU2Nyb2xsIHtcbiAgICAgIGZyb20ge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG4gICAgICB9XG5cbiAgICAgIHRvIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk5OTk5OTk5cHggMDtcbiAgICAgIH1cbiAgICB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgICAgcGFkZGluZzogMjBweCAwO1xuICAgIH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gICAgICBtaW4taGVpZ2h0OiA2ODBweDtcbiAgICB9XG4gIH1cblxuICAuY29udmV5YW5jaW5nLXRpdGxlIHtcbiAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgZm9udC1zaXplOiAzMHB4O1xuICAgIG1hcmdpbjogNTBweCAwO1xuICB9XG5cbiAgI2NvbnZleWFuY2luZy1mb3JtIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoJy9zcmMvYXNzZXRzL2ltYWdlcy9pbW92ZWhvbWUvY2xvdWRzLWJhY2tncm91bmRAMngucG5nJyk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgcGFkZGluZzogODBweCAwO1xuXG4gICAgLmZvcm0tc3ViLXRpdGxlIHtcbiAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICB9XG5cbiAgICAuZm9ybS1jb250YWluZXIge1xuICAgICAgYm9yZGVyLXRvcDogc29saWQgMXB4ICR0ZXh0LWNvbG9yO1xuICAgICAgcGFkZGluZzogMjBweCAwO1xuXG4gICAgICAuaGlkZGVuLWxhYmVsIHtcbiAgICAgICAgaGVpZ2h0OiA2cHg7XG4gICAgICB9XG5cbiAgICAgIC5pbWgtYnRuIHtcbiAgICAgICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgICAgIGJvcmRlcjogc29saWQgMXB4ICR0ZXh0LWNvbG9yO1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuaW1oLWJ0bi1ncm91cCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLmltaC1idG4tdG9nZ2xlIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHggJHRleHQtY29sb3I7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgaGVpZ2h0OiA1MXB4O1xuICAgICAgICBtaW4td2lkdGg6IGF1dG87XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuaW1oLWJ0bi10b2dnbGUtbGVmdCB7XG4gICAgICAgIGJvcmRlci1yaWdodDogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4IDAgMCA1cHggIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgLmltaC1idG4tdG9nZ2xlLXJpZ2h0IHtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAgNXB4IDVweCAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5vcHRpb24tc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQtcHJpbWFyeTtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZGlzY2xhaW1lciB7XG4gICAgcGFkZGluZzogODBweCAyMHB4O1xuXG4gICAgcCB7XG4gICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgI3ZpZGVvLXBsYXllciB7XG4gICAgbWFyZ2luOiA5MHB4IDA7XG4gIH1cblxuICAuYmFubmVyLXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6ICNGMEY3RkY7XG5cbiAgICAuaG91c2UtYmFubmVyIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAzNTZweDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgaW1nIHtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBoZWlnaHQ6IDI3N3B4O1xuICAgICAgICBtYXJnaW4tdG9wOiA4MHB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiI3ByaWNlLWxpc3Qge1xuICAuYmFubmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjRjBGN0ZGO1xuICAgIHBhZGRpbmc6IDUwcHggMDtcbiAgICBoMSB7XG4gICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG4gIH1cbiAgLmxpc3RpbmctZmVlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiAyNXB4IDA7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgYmFja2dyb3VuZDogI0YwRjdGRjtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAjRUZGM0Y5O1xuICAgIC5pbmZvIHtcbiAgICAgIG1hcmdpbjogMCAxOHB4IDAgMDtcbiAgICAgIC50aXRsZSB7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgfVxuICAgICAgLmRlc2NyaXB0aW9uIHtcbiAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgICAucG9ydGFscyB7XG4gICAgICB3aWR0aDogNTAwcHg7XG4gICAgICBtYXJnaW4tdG9wOiAzNXB4O1xuICAgICAgaW1nIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICBvYmplY3QtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luOiAwIDE0cHggMCAwO1xuICAgICAgfVxuICAgIH1cbiAgICAucHJpY2Uge1xuICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgbWFyZ2luLXRvcDogMzVweDtcbiAgICB9XG4gICAgLmluZm8sXG4gICAgLnBvcnRhbHMsXG4gICAgLnByaWNlIHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgbWFyZ2luOiAwcHggNXB4O1xuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzkuOTM3NWVtKSB7XG4gICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAyMHB4IDBweFxuICAgICAgfVxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDBlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjkzNzVlbSkge1xuICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMjBweCAwcHhcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLm9wdGlvbi1saXN0IHtcbiAgICBtYXJnaW46IDI1cHggMDtcbiAgICAub3B0aW9uLWxpc3QtdGl0bGUge1xuICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICNEQkRCREI7XG4gICAgICAudGl0bGUge1xuICAgICAgICBjb2xvcjogI0RCREJEQjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgfVxuICAgIH1cbiAgICAub3B0aW9uIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtYXJnaW46IDI1cHggMDtcbiAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjRjBGN0ZGO1xuICAgICAgYm9yZGVyOiBzb2xpZCAxcHggI0VGRjNGOTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgIC5pY29uLFxuICAgICAgLmluZm8sXG4gICAgICAucHJpY2Uge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzOS45Mzc1ZW0pIHtcbiAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuaWNvbiB7XG4gICAgICAgIHdpZHRoOiAxMjBweDtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5pbmZvIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTUwcHg7XG4gICAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgICAgICAudGl0bGUge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICBjb2xvcjogIzM3NDc0RjtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xNnB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG4gICAgICAgIC5kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgIGNvbG9yOiAjN0Y4QTkwO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE0cHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5wcmljZSB7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICB3aWR0aDogMTI1cHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDIwcHg7XG4gICAgICAgIHRvcDogNTBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgcG9zaXRpb246IGluaXRpYWw7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCIjaGl3IHtcbiAgLmJhbm5lciB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEyMGRlZywgIzkxQzRGRiAwJSwgI0YwRjdGRiA4NyUpO1xuICAgIHBhZGRpbmctdG9wOiA5MHB4O1xuICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDdweCAjMjA1MDgxO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtaW4taGVpZ2h0OiA1NzdweDtcblxuICAgIC5jbG91ZC1zY3JvbGwge1xuICAgICAgYmFja2dyb3VuZDogdXJsKFwiL3NyYy9hc3NldHMvaW1hZ2VzL2ltb3ZlaG9tZS9jbG91ZHMucG5nXCIpIHJlcGVhdC14O1xuICAgICAgdG9wOiAyMHB4O1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiA4MCU7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgLXdlYmtpdC1hbmltYXRpb246IDkwMDAwMHMgYmFja2dyb3VuZFNjcm9sbCBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICAtbW96LWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgIC1vLWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgIC1tcy1hbmltYXRpb246IDkwMDAwMHMgYmFja2dyb3VuZFNjcm9sbCBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICBhbmltYXRpb246IDkwMDAwMHMgYmFja2dyb3VuZFNjcm9sbCBpbmZpbml0ZSBsaW5lYXI7XG4gICAgfVxuXG4gICAgLmNvbnRlbnQtcm93IHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgLmNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDBweDtcblxuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAzNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICAgICAgICBjb2xvcjogJGJsYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDBlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjkzNzVlbSkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFubmVyLWltYWdlIHtcbiAgICAgIGhlaWdodDogMzYwcHg7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMDtcbiAgICAgIGJvdHRvbTogLTEwcHg7XG4gICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgIH1cbiAgICBALXdlYmtpdC1rZXlmcmFtZXMgYmFja2dyb3VuZFNjcm9sbCB7XG4gICAgICBmcm9tIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwO1xuICAgICAgfVxuXG4gICAgICB0byB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC05OTk5OTk5OXB4IDA7XG4gICAgICB9XG4gICAgfVxuICAgIEBrZXlmcmFtZXMgYmFja2dyb3VuZFNjcm9sbCB7XG4gICAgICBmcm9tIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwO1xuICAgICAgfVxuXG4gICAgICB0byB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC05OTk5OTk5OXB4IDA7XG4gICAgICB9XG4gICAgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgbWluLWhlaWdodDogYXV0bztcbiAgICAgIHBhZGRpbmc6IDIwcHggMDtcbiAgICB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDBlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjkzNzVlbSkge1xuICAgICAgbWluLWhlaWdodDogODM1cHg7XG4gICAgfVxuICB9XG5cbiAgLmhpdy1zdGVwcyB7XG4gICAgbWFyZ2luOiA1MHB4IDAgMDtcbiAgICBoZWlnaHQ6IDE3MTVweDtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIGcsXG4gICAgcCxcbiAgICB0ZXh0LFxuICAgIHRzcGFuIHtcbiAgICAgIGZvbnQtZmFtaWx5OiAnaW1vdmVob21lJyAhaW1wb3J0YW50O1xuICAgIH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIC5nZXQtc3RhcnRlZC1idG4ge1xuICAgIG1hcmdpbi1ib3R0b206IDEwMHB4O1xuICB9XG5cbiAgI2hpdy12aWRlbyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTAwcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogc29saWQgN3B4ICMyMDUwODE7XG4gIH1cbn1cbiIsIiNmYXEge1xuICAuYmFubmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjRjBGN0ZGO1xuICAgIHBhZGRpbmc6IDUwcHggMDtcbiAgICBoMSB7XG4gICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG4gIH1cbiAgLmZhcS1saXN0IHtcbiAgICBtYXJnaW46IDUwcHggMDtcbiAgICAuYWNjb3JkaW9uIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAuYWNjb3JkaW9uLWl0ZW0ge1xuICAgICAgICAuYWNjb3JkaW9uLXRpdGxlIHtcbiAgICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICBib3JkZXI6IDBweDtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggI2U2ZTZlNjtcbiAgICAgICAgfVxuICAgICAgICAuYWNjb3JkaW9uLWNvbnRlbnQge1xuICAgICAgICAgIGJvcmRlci10b3A6IDBweDtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAjRjBGN0ZGO1xuICAgICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIiNmcmVlLXZhbHVhdGlvbiB7XG4gIGlucHV0LFxuICBzZWxlY3Qge1xuICAgIGJvcmRlcjogc29saWQgMnB4ICNiYmJiYmI7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjE2cHg7XG4gICAgaGVpZ2h0OiA1MXB4O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICY6Zm9jdXMge1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgICBib3JkZXI6IHNvbGlkIDJweCAkYnJhbmQtcHJpbWFyeTtcbiAgICAgIGNvbG9yOiAkYnJhbmQtcHJpbWFyeTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgfVxuICAuYmFubmVyIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMTIwZGVnLCAjOTFDNEZGIDAlLCAjRjBGN0ZGIDg3JSk7XG4gICAgcGFkZGluZy10b3A6IDkwcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogc29saWQgN3B4ICMyMDUwODE7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1pbi1oZWlnaHQ6IDU3N3B4O1xuICAgIC5jbG91ZC1zY3JvbGwge1xuICAgICAgYmFja2dyb3VuZDogdXJsKC9zcmMvYXNzZXRzL2ltYWdlcy9pbW92ZWhvbWUvY2xvdWRzLnBuZykgcmVwZWF0LXg7XG4gICAgICB0b3A6IDIwcHg7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDgwJTtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAtd2Via2l0LWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgIC1tb3otYW5pbWF0aW9uOiA5MDAwMDBzIGJhY2tncm91bmRTY3JvbGwgaW5maW5pdGUgbGluZWFyO1xuICAgICAgLW8tYW5pbWF0aW9uOiA5MDAwMDBzIGJhY2tncm91bmRTY3JvbGwgaW5maW5pdGUgbGluZWFyO1xuICAgICAgLW1zLWFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICAgIGFuaW1hdGlvbjogOTAwMDAwcyBiYWNrZ3JvdW5kU2Nyb2xsIGluZmluaXRlIGxpbmVhcjtcbiAgICB9XG4gICAgLmNvbnRlbnQtcm93IHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIC5jb250ZW50IHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDQwcHg7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDM2cHggIWltcG9ydGFudDtcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAgIH1cbiAgICAgICAgcCB7XG4gICAgICAgICAgY29sb3I6ICMzNzQ3NEY7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLmJhbm5lci1pbWFnZSB7XG4gICAgICBoZWlnaHQ6IDUwMHB4O1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBib3R0b206IC0xMHB4O1xuICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICBvYmplY3QtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIGFuZCAobWF4LXdpZHRoOiA2My45Mzc1ZW0pIHtcbiAgICAgICAgaGVpZ2h0OiA1MDBweDtcbiAgICAgIH1cbiAgICB9XG4gICAgQC13ZWJraXQta2V5ZnJhbWVzIGJhY2tncm91bmRTY3JvbGwge1xuICAgICAgZnJvbSB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDtcbiAgICAgIH1cbiAgICAgIHRvIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk5OTk5OTk5cHggMDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGtleWZyYW1lcyBiYWNrZ3JvdW5kU2Nyb2xsIHtcbiAgICAgIGZyb20ge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG4gICAgICB9XG4gICAgICB0byB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC05OTk5OTk5OXB4IDA7XG4gICAgICB9XG4gICAgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5LjkzNzVlbSkge1xuICAgICAgbWluLWhlaWdodDogYXV0bztcbiAgICAgIHBhZGRpbmc6IDIwcHggMDtcbiAgICB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDBlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjkzNzVlbSkge1xuICAgICAgbWluLWhlaWdodDogODM1cHg7XG4gICAgfVxuICB9XG4gIC52YWx1YXRpb24tbWVzc2FnZSB7XG4gICAgbWFyZ2luOiA1MHB4IDA7XG4gICAgLm1lc3NhZ2Uge1xuICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgIH1cbiAgfVxuICAudmFsdWF0aW9uLWZvcm0ge1xuICAgIGJhY2tncm91bmQ6IHVybCgnL3NyYy9hc3NldHMvaW1hZ2VzL2ltb3ZlaG9tZS9jbG91ZHMtYmFja2dyb3VuZEAyeC5wbmcnKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBwYWRkaW5nOiA4MHB4IDA7XG4gICAgLmZvcm0tY29udGFpbmVyLFxuICAgIC5hZGRyZXNzLXNlbGVjdCxcbiAgICAudmFsdWF0aW9uLW9wdGlvbnMge1xuICAgICAgcGFkZGluZzogMjBweCAwO1xuICAgIH1cbiAgICAuc3ViLXRpdGxlLWNvbnRhaW5lciB7XG4gICAgICBib3JkZXItYm90dG9tOiBzb2xpZCAycHggJGdyZXk7XG4gICAgICAuc3ViLXRpdGxlIHtcbiAgICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgICAuYWRkcmVzcy1zZWxlY3Qge1xuICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgICAudmFsdWF0aW9uLW9wdGlvbnMge1xuICAgICAgLnZhbHVhdGlvbi1jb250YWluZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIC52YWx1YXRpb24ge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICAgICAgYm9yZGVyOiBzb2xpZCAycHggJHRleHQtY29sb3I7XG4gICAgICAgICAgcGFkZGluZzogMjBweCAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgICAgLnZhbHVhdGlvbi10aXRsZSB7XG4gICAgICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgICAgICAgICBtYXJnaW46IDBweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLnZhbHVhdGlvbi1wcmljZSB7XG4gICAgICAgICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgICAgICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgICAgICAgICBtYXJnaW46IDBweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnZhbHVhdGlvbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIiN0ZXJtcyB7XG4gIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgcGFkZGluZzogNTBweCAyNXB4O1xuICBvbCB7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgIGNvdW50ZXItcmVzZXQ6IGl0ZW07XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgb2w+bGkge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNvdW50ZXItaW5jcmVtZW50OiBpdGVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuNmVtO1xuICB9XG4gIG9sPmxpOmJlZm9yZSB7XG4gICAgY29udGVudDogY291bnRlcnMoaXRlbSwgXCIuXCIpIFwiLiBcIjtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNmVtO1xuICB9XG4gIGxpIG9sPmxpIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgbGkgb2w+bGk6YmVmb3JlIHtcbiAgICBjb250ZW50OiBjb3VudGVycyhpdGVtLCBcIi5cIikgXCIgXCI7XG4gIH1cbn0iXSwibWFwcGluZ3MiOiI7QUNBQTs7Ozs7R0FLRztBREhILE9BQU8sQ0FBUCw2QkFBTztBQUNQLE9BQU8sQ0FBUCw0Q0FBTztBQUNQLE9BQU8sQ0FBUCwrQ0FBTztBQUNQLE9BQU8sQ0FBUCx3REFBTztBQUNQLE9BQU8sQ0FBUCxtQ0FBTztBQUNQLE9BQU8sQ0FBUCxvQ0FBTztBQUNQLE9BQU8sQ0FBUCx3QkFBTztBS3FDTCxpRUFBaUU7QUFHL0Q7b0ZBQ2dGO0FBRWhGOzs7OztPQUtHO0FBRUgsQUFBQSxJQUFJLENBQUM7RUFDSCxXQUFXLEVGMUNFLFVBQVU7RUUwQ1MsT0FBTztFQVFyQyxXQUFXLEVBQUUsSUFBSztFQUFFLE9BQU87RUFFN0Isb0JBQW9CLEVBQUUsSUFBSztFQUFFLE9BQU87RUFDcEMsd0JBQXdCLEVBQUUsSUFBSztFQUFFLE9BQU8sRUFDekM7O0FBSUQ7b0ZBQ2dGO0FBRWhGOztPQUVHO0FBRUgsQUFBQSxJQUFJLENBQUM7RUFDSCxNQUFNLEVBQUUsQ0FBRSxHQUNYOztBQUVEOztPQUVHO0FBRUgsQUFBQSxPQUFPO0FBQ1AsQUFBQSxLQUFLO0FBQ0wsQUFBQSxNQUFNO0FBQ04sQUFBQSxNQUFNO0FBQ04sQUFBQSxHQUFHO0FBQ0gsQUFBQSxPQUFPLENBQUM7RUFDTixPQUFPLEVBQUUsS0FBTSxHQUNoQjs7QUFFRDs7O09BR0c7QUFFSCxBQUFBLEVBQUUsQ0FBQztFRDlFTCxTQUFTLEVBWEUsR0FBTTtFQ29HWCxNQUFNLEVBQUUsUUFBUyxHQUVwQjs7QUFvQ0Q7b0ZBQ2dGO0FBdUNoRjs7T0FF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 */
