/**
 * Foundation for Sites
 * Version 6.6.3
 * https://get.foundation
 * Licensed under MIT Open Source
 */
/* ============================================================= */
/* ============================================================= */
/* ============================================================= */
/* ============================================================= */
/* ============================================================= */
/* Flex-flow is short hand for "flex-direction" & "flex-wrap" */
/* Flex-direction - Column */
/* Flex-direction - Row */
/* Align Items - Stretch */
/* Align Items - Center */
/* ============================================================= */
/* ============================================================= */
/* Clearfix */
/* Revert clearfix */
/* ============================================================= */
/* ============================================================= */
/* ============================================================= */
/* ============================================================= */
/* Eric Meyer's CSS Reset */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
}

/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, main {
  display: block;
}

body {
  line-height: 1;
}

ol, ul {
  list-style: none;
}

blockquote, q {
  quotes: none;
}

blockquote:before, blockquote:after,
q:before, q:after {
  content: '';
  content: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

/* End of Eric Meyer's CSS Reset */
*:focus {
  outline: none;
}

/* Forms
   ========================================================================== */
/**
 * Known limitation: by default, Chrome and Safari on OS X allow very limited
 * styling of `select`, unless a `border` property is set.
 */
/**
 * 1. Correct color not being inherited.
 *    Known issue: affects color of disabled elements.
 * 2. Correct font properties not being inherited.
 * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
 */
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  /* 1 */
  font: inherit;
  /* 2 */
  margin: 0;
  /* 3 */
}

/**
 * Address `overflow` set to `hidden` in IE 8/9/10.
 */
button {
  overflow: visible;
}

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Firefox, IE 8+, and Opera
 * Correct `select` style inheritance in Firefox.
 */
button,
select {
  text-transform: none;
}

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */
}

/**
 * Re-set default cursor for disabled elements.
 */
button[disabled],
html input[disabled] {
  cursor: default;
}

/**
 * Remove inner padding and border in Firefox 4+.
 */
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */
input {
  line-height: normal;
}

/**
 * It's recommended that you don't attempt to style these elements.
 * Firefox's implementation doesn't respect box-sizing, padding, or width.
 *
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 */
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */
}

/**
 * Fix the cursor style for Chrome's increment/decrement buttons. For certain
 * `font-size` values of the `input`, it causes the cursor style of the
 * decrement button to change from `default` to `text`.
 */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
 *    (include `-moz` to future-proof).
 */
input[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box;
  /* 2 */
  box-sizing: content-box;
}

/**
 * Remove inner padding and search cancel button in Safari and Chrome on OS X.
 * Safari (but not Chrome) clips the cancel button when the search input has
 * padding (and `textfield` appearance).
 */
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

.block {
  display: block;
}

.left {
  float: left;
}

.right {
  float: right;
}

.visible {
  overflow: visible !important;
}

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

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

.hide {
  display: none !important;
}

.full-width {
  width: 100%;
}

.full-height {
  height: 100%;
}

.inline-list {
  display: inline-block;
  vertical-align: middle;
}

.inline-list--top {
  vertical-align: top !important;
}

.inline-list > li {
  display: inline-block;
}

.no-scroll {
  overflow: hidden;
}

.mr-auto {
  margin-right: auto;
}

.ml-auto {
  margin-left: auto;
}

.mt-1 {
  margin-top: 1rem;
}

.mt-2 {
  margin-top: 2rem;
}

.mt-3 {
  margin-top: 3rem;
}

.mt-4 {
  margin-top: 4rem;
}

.mt-5 {
  margin-top: 5rem;
}

.mb-1 {
  margin-bottom: 1rem;
}

.mb-2 {
  margin-bottom: 2rem;
}

.mb-3 {
  margin-bottom: 3rem;
}

.mb-4 {
  margin-bottom: 4rem;
}

.mb-5 {
  margin-bottom: 5rem;
}

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

body {
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  letter-spacing: 0em;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  height: 100%;
  font-weight: 400;
  line-height: 1.25;
  color: #444444;
  background: #fff;
  font-size: 1.8rem;
  -webkit-text-size-adjust: 100%;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  word-wrap: break-word;
}

@media print, screen and (max-width: 39.99875em) {
  body {
    font-size: 2.4rem;
  }
}

html {
  min-height: 100%;
  height: 100%;
  font-size: 62.5% !important;
}

@media screen and (max-width: 1199px) {
  html {
    font-size: 52.08% !important;
  }
}

@media screen and (max-width: 768px) {
  html {
    font-size: 52.5% !important;
  }
}

@media screen and (max-width: 425px) {
  html {
    font-size: 50% !important;
  }
}

@media screen and (min-width: 1921px) and (min-aspect-ratio: 4 / 3) {
  html {
    font-size: calc(0.625vw * .84) !important;
  }
}

a {
  text-decoration: none;
  color: #0580FF;
}

a:hover {
  text-decoration: underline;
}

.visible {
  overflow: visible !important;
}

.fullwidth {
  width: 100% !important;
  max-width: 100% !important;
}

.halfwidth {
  width: 50% !important;
}

.fullheight {
  height: 100%;
  min-height: 100%;
}

.truncate {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

img {
  display: inline-block;
  vertical-align: middle;
}

img.normal {
  width: auto;
  max-width: none;
}

img.responsive {
  width: 100%;
  max-width: 100%;
  height: auto;
}

.img-fluid {
  width: auto;
  max-width: 100%;
}

.img-rounded {
  overflow: hidden;
  border-radius: 50%;
}

.left {
  float: left !important;
}

.right {
  float: right !important;
}

.pull-left, .pull-right {
  float: none !important;
}

.flex-center {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -moz-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
}

.os-animation, .os-animation-always {
  opacity: 0;
}

.os-animation.animated, .os-animation-always.animated {
  opacity: 1;
}

.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;
}

/* .fadeOut is style taken from Animation.css and this is how it looks in owl.carousel.css:  */
.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;
  }
}

@-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;
}

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

@-webkit-keyframes progress {
  0% {
    width: 0;
  }
  100% {
    width: 100%;
  }
}

@keyframes progress {
  0% {
    width: 0;
  }
  100% {
    width: 100%;
  }
}

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

.fadeInDown {
  animation-name: fadeInDown;
}

@keyframes fadeInLeft {
  from {
    opacity: 0;
    transform: translate3d(-50%, 0, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

.fadeInLeft {
  animation-name: fadeInLeft;
}

@keyframes fadeInRight {
  from {
    opacity: 0;
    transform: translate3d(100%, 0, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

.fadeInRight {
  animation-name: fadeInRight;
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 30%, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

.fadeInUp {
  animation-name: fadeInUp;
}

.slide-in-down.mui-enter {
  transition-duration: 500ms;
  transition-timing-function: linear;
  -webkit-transform: translateY(-100%);
  transform: translateY(-100%);
  transition-property: opacity, -webkit-transform;
  transition-property: transform, opacity;
  transition-property: transform, opacity, -webkit-transform;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

.slide-in-down.mui-enter.mui-enter-active {
  -webkit-transform: translateY(0);
  transform: translateY(0);
}

.slide-out-down.mui-leave {
  transition-duration: 500ms;
  transition-timing-function: linear;
  -webkit-transform: translateY(0);
  transform: translateY(0);
  transition-property: opacity, -webkit-transform;
  transition-property: transform, opacity;
  transition-property: transform, opacity, -webkit-transform;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

.slide-out-down.mui-leave.mui-leave-active {
  -webkit-transform: translateY(100%);
  transform: translateY(100%);
}

p {
  margin: 0 0 2rem;
  font-size: 1.8rem;
  line-height: 1.36;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

p:last-child {
  margin-bottom: 0;
}

@media print, screen and (max-width: 39.99875em) {
  p {
    font-size: 2.4rem;
    line-height: 1.5;
  }
}

strong {
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  font-weight: 700;
}

i {
  font-style: italic;
}

a {
  transition: color .25s;
  text-decoration: none;
}

a:hover {
  color: #0580FF;
}

h1, h2, h3, h4, h5, h6 {
  font-weight: 700;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  margin-bottom: 2rem;
  line-height: 1.17;
  letter-spacing: -0.02em;
}

h1 {
  font-size: 4.4rem;
}

h2 {
  font-size: 4rem;
}

h3 {
  font-size: 3.6rem;
}

h4 {
  font-size: 3rem;
}

h5 {
  font-size: 2.4rem;
}

sup {
  vertical-align: super;
  font-size: 60%;
}

.section-title {
  position: relative;
  z-index: 1;
  font-weight: 700;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  color: #222222;
  line-height: 1.1;
  margin-bottom: 3rem;
}

.section-title.m-group {
  margin-bottom: .5rem;
}

.article-title {
  position: relative;
  z-index: 1;
  font-size: 3rem;
  font-weight: 700;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  color: #444444;
  text-transform: uppercase;
  line-height: 1.1;
  margin-bottom: 3rem;
}

._bold {
  font-weight: 700;
}

._semibold {
  font-weight: 600;
}

._medium {
  font-weight: 500;
}

._normal {
  font-weight: 400;
}

[class*="title-"], .section-title {
  letter-spacing: -0.02em;
  font-weight: 700;
}

[class*="title-"].mb-1, .section-title.mb-1 {
  margin-bottom: 1rem;
}

[class*="title-"].mb-2, .section-title.mb-2 {
  margin-bottom: 2rem;
}

[class*="title-"].mb-3, .section-title.mb-3 {
  margin-bottom: 3rem;
}

[class*="title-"].mb-4, .section-title.mb-4 {
  margin-bottom: 3rem;
}

[class*="title-"].mb-5, .section-title.mb-5 {
  margin-bottom: 5rem;
}

[class*="title-"].mt-1, .section-title.mt-1 {
  margin-top: 1rem;
}

[class*="title-"].mt-2, .section-title.mt-2 {
  margin-top: 2rem;
}

[class*="title-"].mt-3, .section-title.mt-3 {
  margin-top: 3rem;
}

[class*="title-"].mt-4, .section-title.mt-4 {
  margin-top: 3rem;
}

[class*="title-"].mt-5, .section-title.mt-5 {
  margin-top: 5rem;
}

[class*="title-"]._semibold, .section-title._semibold {
  font-weight: 600;
}

[class*="title-"]._medium, .section-title._medium {
  font-weight: 500;
}

[class*="title-"]._normal, .section-title._normal {
  font-weight: 400;
}

.title-0 {
  font-size: 8rem;
}

.title-1, .s-hero__title {
  font-size: 6rem;
}

.title-2, .section-title {
  font-size: 4.4rem;
}

.title-3 {
  font-size: 4rem;
}

.title-4, .b-location__title {
  font-size: 3.6rem;
}

.title-5 {
  font-size: 3.2rem;
}

.title-6, .b-post__title {
  font-size: 2.8rem;
}

@media screen and (max-width: 900px) {
  .title-1, .s-hero__title {
    font-size: 36px;
  }
}

@media screen and (max-width: 640px) {
  .title-0 {
    font-size: 4.4rem;
  }
  .title-1, .s-hero__title {
    font-size: 4.4rem;
  }
  .title-2, .section-title {
    font-size: 3.52rem;
  }
  .title-3 {
    font-size: 3.2rem;
  }
  .title-4, .b-location__title {
    font-size: 2.88rem;
  }
  .title-5 {
    font-size: 2.56rem;
  }
  .title-6, .b-post__title {
    font-size: 2.52rem;
  }
}

@media screen and (max-width: 425px) {
  .title-1, .s-hero__title {
    font-size: 26px;
  }
  .title-2, .section-title {
    font-size: 26px;
  }
}

.title-group [class="title-"], .title-group > span {
  display: block;
}

.text--xxlarge {
  font-size: 2.8rem;
}

.text--xlarge, .about-title {
  font-size: 2.4rem;
}

.text--large, .s-content-partners p, .s-content-post .article p, .s-content-post .article ul, .b-report__info p {
  font-size: 2.2rem;
}

.text--medium, .s-ai-personal__txt, .s-ai-about__txt, .b-cta-benefit__txt, .b-ai-product__txt {
  font-size: 2rem;
}

.text--small {
  font-size: 1.6rem;
}

.text--primary {
  color: #0580FF;
}

section.text-white .text--primary {
  color: #0580FF;
}

s-section.text-white .text--primary {
  color: #0580FF;
}

.text--secondary {
  color: #444444;
}

.text--white {
  color: #fff;
}

.text--white .text--opacity {
  opacity: .6;
}

.text--dark {
  color: #444444;
}

.text--dark * {
  color: #444444;
}

.text--black {
  color: #222222;
}

.text--blue {
  color: #0580FF;
}

.text--red {
  color: #FF0505;
}

.text--orange {
  color: #ff7a00;
}

.text--yellow {
  color: #FFE800;
}

.text--grey {
  color: #E5E5E5;
}

.text--darkgrey {
  color: #666666;
}

.text--magic {
  position: relative;
  padding-left: 7.8rem;
}

.text--magic:before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: 5rem;
  height: 5rem;
  background: url(../img/icon/magic.svg) 0 0 no-repeat;
}

.text--magic a {
  text-decoration: underline;
}

.text--magic a:hover {
  text-decoration: none;
}

@media print, screen and (max-width: 39.99875em) {
  .text--xxlarge {
    font-size: 2.4rem;
  }
  .text--xlarge, .about-title {
    font-size: 2.4rem;
  }
  .text--large, .s-content-partners p, .s-content-post .article p, .s-content-post .article ul, .b-report__info p {
    font-size: 2.4rem;
  }
  .text--medium, .s-ai-personal__txt, .s-ai-about__txt, .b-cta-benefit__txt, .b-ai-product__txt {
    font-size: 2.4rem;
  }
  .text--small {
    font-size: 1.6rem;
  }
}

.s-solutions-article__txt ol, .s-content-ai__about ol {
  list-style: decimal;
  margin-bottom: 2rem;
}

.s-solutions-article__txt ol li, .s-content-ai__about ol li {
  line-height: 1.67;
  margin-top: .5rem;
  margin-bottom: .5rem;
  margin-left: 2rem;
}

.article h1, .article h2, .article h3, .article h4, .article h5, .article h6 {
  color: #222222;
}

.article ol, .article .s-solutions-article__txt ol, .s-solutions-article__txt .article ol, .article .s-content-ai__about ol, .s-content-ai__about .article ol {
  list-style: decimal;
}

.article ol li, .article .s-solutions-article__txt ol li, .s-solutions-article__txt .article ol li, .article .s-content-ai__about ol li, .s-content-ai__about .article ol li {
  line-height: 1.67;
  margin-top: .5rem;
  margin-bottom: .5rem;
  margin-left: 2rem;
}

.article p a {
  color: #0580FF;
}

.list-disc, .article ul, .s-solutions-article__txt-group ul, .s-content-ai__about ul {
  list-style: disc;
}

.list-disc li, .article ul li, .s-solutions-article__txt-group ul li, .s-content-ai__about ul li {
  margin-bottom: 1.67rem;
  line-height: 1.67;
  margin-left: 2rem;
}

.list-arrow {
  list-style: none;
}

.list-arrow li {
  list-style: none;
  position: relative;
  padding-left: 1.3rem;
  margin-bottom: 1.67rem;
  line-height: 1.67;
  margin-left: 2rem;
}

.list-arrow li:before {
  content: '';
  position: absolute;
  left: -2rem;
  top: .7rem;
  background: url(../img/icon/arrow-list-right.svg) 0 0 no-repeat;
  background-size: contain;
  width: 1.9rem;
  height: 1.6rem;
}

.list-column {
  column-count: 2;
  column-gap: 6rem;
  column-width: auto;
}

.list-column.list-disc {
  list-style: none;
}

.list-column.list-disc li {
  list-style: none;
}

.list-column.list-disc li:before {
  content: "\2022";
  color: #0580FF;
  font-weight: bold;
  display: inline-block;
  width: 1.2em;
  margin-left: -1.2em;
}

@media print, screen and (max-width: 39.99875em) {
  .list-column.list-disc li:before {
    width: 1.6rem;
    margin-left: -2rem;
    font-size: 20px;
  }
}

.list-column > li, .list-column > div {
  -webkit-column-break-inside: avoid;
  page-break-inside: avoid;
  break-inside: avoid;
}

@media print, screen and (max-width: 47.99875em) {
  .list-column {
    column-count: 2;
    column-gap: 3rem;
    column-width: auto;
  }
  .list-column > li, .list-column > div {
    -webkit-column-break-inside: avoid;
    page-break-inside: avoid;
    break-inside: avoid;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .list-column {
    column-count: 1;
    column-gap: 0rem;
    column-width: auto;
  }
  .list-column > li, .list-column > div {
    -webkit-column-break-inside: avoid;
    page-break-inside: avoid;
    break-inside: avoid;
  }
}

.about-title {
  font-weight: 600;
}

@media print, screen and (max-width: 39.99875em) {
  .text-center--sm {
    text-align: center !important;
  }
}

.icon-play {
  font-size: 10px;
  display: inline-block;
  background: url(../img/common/icon/play.svg) 0 0 no-repeat;
  background-size: contain;
  width: 7.3em;
  height: 10.2em;
}

.icon-svg-bank-report {
  font-size: 10px;
  display: inline-block;
  background: url(../img/common/icon/bank-report.svg) 0 0 no-repeat;
  background-size: contain;
  width: 7.3em;
  height: 10.2em;
}

.icon-minus {
  font-size: 100%;
  display: inline-block;
  background: currentColor;
  width: 1.5em;
  height: 0.6em;
  color: currentColor;
}

.b-header {
  position: relative;
  background: transparent;
  color: #000;
}

.b-header.m-fixed {
  position: fixed;
  z-index: 99;
  left: 0;
  top: 0;
  width: 100%;
  background: transparent;
}

.b-header.m-fixed .b-header__wrp > .row {
  max-width: 100%;
}

.b-header.m-abs {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  z-index: 99;
  background: transparent;
}

.b-header .sticky, .b-header.sticky {
  transition: background .3s ease, padding .3s ease;
}

.b-header .sticky.is-stuck, .b-header.sticky.is-stuck {
  background: transparent;
}

.b-header * {
  color: #000;
}

.b-header__container, .b-header .container, .b-header__row {
  max-width: 100%;
}

.b-header__wrp {
  width: 100%;
  padding-top: 1.9rem;
  padding-bottom: 1.9rem;
}

.b-header__row {
  max-width: calc(100% + 3rem);
}

.b-header .b-logo img {
  max-width: 19.5rem;
}

.b-header .b-logo ._show-on-scroll {
  display: none;
}

.b-header .b-logo ._show-on-menu {
  display: none;
}

.b-header__menu-nav {
  position: relative;
}

.b-header__menu-nav > ul {
  display: flex;
  justify-content: space-between;
  font-size: 1.6rem;
  font-weight: 600;
}

.b-header__menu-nav > ul > li.current > a, .b-header__menu-nav > ul > li.is-active > a, .b-header__menu-nav > ul > li:hover > a {
  color: #ff7a00;
}

.b-header__menu-nav > ul > li.magic-item {
  text-transform: uppercase;
  position: relative;
}

.b-header__menu-nav > ul > li.magic-item:before {
  content: '';
  position: absolute;
  left: 0.5rem;
  top: -1.8rem;
  width: 2.8rem;
  height: 2.8rem;
  background: url(../img/icon/magic.svg) 50% 50% no-repeat;
  background-size: contain;
}

.b-header__menu-nav > ul > li.magic-item.is-active > a {
  display: block;
  position: relative;
}

.b-header__menu-nav > ul > li.magic-item.is-active > a:after {
  content: '';
  display: block;
  position: absolute;
  left: 1.5rem;
  right: 1.5rem;
  bottom: -.5rem;
  border-bottom: 2px solid;
}

.b-header__menu-nav > ul > li:hover > a {
  color: #ff7a00;
}

.b-header__menu-nav > ul > li a {
  color: #000;
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}

.b-header__menu-nav > ul > li a span {
  display: block;
  font-size: 80%;
  opacity: .8;
  font-weight: normal;
}

.b-header__menu-nav > ul > li a:hover {
  text-decoration: none;
}

.b-header__auth {
  font-weight: 600;
  font-size: 1.6rem;
}

.b-header__auth a {
  color: #888888;
}

.b-header .burger {
  position: absolute;
  top: 2.7rem;
  right: 3rem;
}

.b-header--yellow {
  color: #fff;
}

.b-header--yellow .menu-icon.burger {
  color: #fff;
}

.b-header--yellow .menu-icon.burger:before, .b-header--yellow .menu-icon.burger:after {
  color: #fff;
}

.b-header--yellow .menu-icon.burger * {
  color: #fff;
}

.b-header--yellow .b-header__auth a {
  color: rgba(255, 255, 255, 0.6);
}

.b-header--yellow .b-header__menu-nav > ul > li.is-active > a, .b-header--yellow .b-header__menu-nav > ul > li.current > a, .b-header--yellow .b-header__menu-nav > ul > li:hover > a {
  color: #ff7a00;
}

.b-header--yellow .b-header__menu-nav > ul > li.is-active > a {
  display: block;
  position: relative;
}

.b-header--yellow .b-header__menu-nav > ul > li.is-active > a:after {
  content: '';
  display: block;
  position: absolute;
  left: 1.5rem;
  right: 1.5rem;
  bottom: -.5rem;
  border-bottom: 2px solid;
}

.b-header--yellow .b-header__menu-nav > ul > li > a {
  color: #fff;
}

.b-header[class*="nav-"] {
  background: #fff;
  position: fixed;
  width: 100%;
  top: 0;
  left: 0;
}

.b-header[class*="nav-"].m-abs {
  position: fixed;
  background: #fff;
}

.b-header[class*="nav-"].m-abs.lp-header {
  position: absolute;
  background: none;
}

.b-header[class*="nav-"].m-abs.lp-header .b-logo img {
  display: block;
}

.b-header[class*="nav-"].m-abs.lp-header .b-logo img._show-on-scroll {
  display: none;
}

.b-header[class*="nav-"] .b-logo img {
  display: none;
}

.b-header[class*="nav-"] .b-logo img._show-on-scroll {
  display: block;
}

.b-header[class*="nav-"] .menu-icon.burger {
  color: #000;
}

.b-header[class*="nav-"] .menu-icon.burger:before, .b-header[class*="nav-"] .menu-icon.burger:after {
  color: #000;
}

.b-header[class*="nav-"] .menu-icon.burger * {
  color: #000;
}

.is-menu-open .b-header[class*="nav-"] .menu-icon.burger {
  color: #fff;
}

.is-menu-open .b-header[class*="nav-"] .menu-icon.burger:before, .is-menu-open .b-header[class*="nav-"] .menu-icon.burger:after {
  color: #fff;
}

.is-menu-open .b-header[class*="nav-"] .menu-icon.burger * {
  color: #fff;
}

.b-header[class*="nav-"] .b-header__auth a {
  color: #888888;
}

.b-header[class*="nav-"] .b-header__menu-nav ul > li.is-active a:after {
  color: #ff7a00;
}

.b-header[class*="nav-"] .b-header__menu-nav ul > li.is-active.magic-item a:after {
  color: #ff7a00;
}

.b-header[class*="nav-"] .b-header__menu-nav ul > li a {
  color: #000000;
}

.b-header[class*="nav-"] .b-header__menu-nav ul > li a:hover {
  color: #ff7a00;
}

@media print, screen and (max-width: 47.99875em) {
  .b-header .column:last-of-type {
    padding-right: 6rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .b-header__auth, .b-header__callback {
    display: none;
  }
}

@media screen and (max-width: 425px) {
  .b-header .burger {
    right: 20px;
  }
}

.is-menu-open {
  overflow: hidden !important;
}

.is-menu-open .b-header {
  background: #FFE800;
  background: #222222;
  box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.2);
  overflow-x: hidden;
  overflow-y: auto;
  max-height: 100vh;
}

.is-menu-open .b-header[class*="nav-"] {
  background: #222222;
}

.is-menu-open .b-header[class*="nav-"].m-abs {
  background: #222222;
}

.is-menu-open .b-header[class*="nav-"] .b-header__menu-nav ul > li:not(.magic-item) a {
  color: #ffff;
}

.is-menu-open .b-header[class*="nav-"] .b-header__menu-nav ul > li a {
  color: #ff7a00;
  color: #ffff;
}

.is-menu-open .b-header__logo {
  margin-left: auto;
}

.is-menu-open .b-header .b-logo img {
  display: block;
  display: none;
}

.is-menu-open .b-header .b-logo img._show-on-scroll {
  display: none;
}

.is-menu-open .b-header .b-logo img._show-on-menu {
  display: block;
}

.is-menu-open .b-header .column:last-of-type {
  padding-right: 0;
}

.is-menu-open .b-header__menu {
  display: block !important;
  left: 0;
  width: 100%;
  background: #FFE800;
  background: #222222;
}

.is-menu-open .menu-icon.burger:before, .is-menu-open .menu-icon.burger:after {
  color: #fff;
}

.is-menu-open .menu-icon.burger span {
  color: #fff;
}

.is-menu-open .menu-icon.burger span:before, .is-menu-open .menu-icon.burger span:after {
  color: #fff;
}

.is-menu-open .b-header__menu-nav ul > li a {
  color: #ffff;
}

.is-menu-open .b-header__auth {
  display: block !important;
  text-align: center;
  width: 100%;
  font-size: 2.4rem;
}

@media screen and (max-width: 424px) {
  .is-menu-open .b-header__auth {
    font-size: 5vw;
  }
}

.is-menu-open .b-header__callback {
  display: block !important;
  text-align: center;
  width: 100%;
  margin-top: 1vh;
}

.is-menu-open .b-header__callback .btn, .is-menu-open .b-header__callback .btn-flat, .is-menu-open .b-header__callback .b-callback-form .btn-submit, .b-callback-form .is-menu-open .b-header__callback .btn-submit {
  font-weight: 700;
  font-size: 2rem;
}

@media screen and (max-width: 424px) {
  .is-menu-open .b-header__callback .btn, .is-menu-open .b-header__callback .btn-flat, .is-menu-open .b-header__callback .b-callback-form .btn-submit, .b-callback-form .is-menu-open .b-header__callback .btn-submit {
    font-size: 5vw;
  }
}

.is-menu-open .b-header__wrp {
  padding-bottom: 30px;
}

.is-menu-open .b-header__auth-itm {
  padding-top: .5vh;
  padding-top: 1rem;
  padding-bottom: .5vh;
  padding-bottom: 1rem;
  min-height: 50px;
}

.is-menu-open .b-header__auth-itm a {
  font-size: 20px;
}

.is-menu-open .b-header__menu-nav {
  padding-top: 3rem;
  padding-bottom: 0;
}

.is-menu-open .b-header__menu-nav ul {
  flex-direction: column;
  align-items: center;
}

.is-menu-open .b-header__menu-nav ul li {
  display: block;
  min-height: 50px;
  padding-top: .5vh;
  padding-top: 1rem;
  padding-bottom: .5vh;
  padding-bottom: 1rem;
}

.is-menu-open .b-header__menu-nav ul li.magic-item:before {
  top: -0.75rem;
  left: 0.5rem;
}

.is-menu-open .b-header__menu-nav ul li a {
  font-size: 2.4rem;
}

@media screen and (max-width: 424px) {
  .is-menu-open .b-header__menu-nav ul li a {
    font-size: 5vw;
    font-size: 20px;
  }
}

.b-footer {
  position: relative;
  overflow: hidden;
  background: #F5CE00;
  color: #222;
  font-size: 1.6rem;
}

.b-footer__container, .b-footer .container {
  max-width: 100%;
}

.b-footer__row {
  max-width: 100%;
}

.b-footer p {
  font-size: 100%;
}

.b-footer a {
  color: currentColor;
}

.b-footer__nav ul {
  margin-left: -1.5rem;
  margin-right: -1.5rem;
}

.b-footer__nav ul li {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}

.b-footer__social .social-inline {
  padding-left: 3rem;
  padding-right: 3rem;
}

.b-footer__menu {
  display: inline-flex;
  align-items: center;
}

.b-footer__menu .social-inline {
  margin-left: 3rem;
}

.b-footer__menu .social-inline:first-of-type {
  margin-right: 3rem;
  margin-left: 0;
}

.b-footer .social-inline {
  padding-bottom: .6rem;
}

.b-footer .social-inline a:hover {
  opacity: .7;
}

@media print, screen and (min-width: 48em) {
  .b-footer__copy {
    display: inline-flex;
    flex-direction: column;
    justify-content: center;
    align-self: center;
    position: relative;
    padding-left: 6rem;
    min-height: 4rem;
  }
  .b-footer__copy._no-logo:before {
    display: none;
  }
  .b-footer__copy._no-logo.column {
    padding-left: 0rem;
  }
}

@media print, screen and (max-width: 47.99875em) {
  .b-footer__copy, .b-footer__menu {
    text-align: center;
    margin-left: auto;
    margin-right: auto;
  }
  .b-footer__menu {
    order: -1;
    margin-bottom: 1rem;
    flex-wrap: wrap;
  }
  .b-footer__nav {
    order: -1;
    margin-bottom: 1rem;
    margin-left: auto;
    margin-right: auto;
    position: relative;
  }
  .b-footer .social-inline {
    flex: 0 0 100%;
    width: 100%;
  }
}

@media screen and (max-width: 425px) {
  .b-footer__copy {
    text-align: left;
  }
  .b-footer__menu .social-inline {
    text-align: left;
  }
  .b-footer__menu .social-inline:first-of-type {
    margin-right: 0;
  }
  .b-footer__nav {
    padding-left: 15px;
    padding-right: 15px;
  }
  .b-footer__nav ul {
    text-align: left;
    column-count: 2;
    column-gap: 3rem;
    column-width: auto;
  }
  .b-footer__nav ul > li, .b-footer__nav ul > div {
    -webkit-column-break-inside: avoid;
    page-break-inside: avoid;
    break-inside: avoid;
  }
  .b-footer__nav ul li {
    width: 100%;
    padding-top: .5rem;
    padding-bottom: .5rem;
  }
}

.l-main {
  padding: 0;
}

.container, .container-fluid {
  max-width: 126rem;
  width: 100%;
  padding-left: 30px;
  padding-right: 30px;
  margin-left: auto;
  margin-right: auto;
}

.container--md, .container-fluid--md {
  max-width: 102rem;
}

.container > .row:not(.small-collapse), .container-fluid > .row:not(.small-collapse) {
  margin-left: -1.5rem;
  margin-right: -1.5rem;
}

.container > .row:not(.small-collapse).row--wide, .container > .row.b-blog:not(.small-collapse), .container-fluid > .row:not(.small-collapse).row--wide, .container-fluid > .row.b-blog:not(.small-collapse) {
  margin-left: -30px;
  margin-right: -30px;
}

@media print, screen and (max-width: 39.99875em) {
  .container, .container-fluid {
    padding-left: 20px;
    padding-right: 20px;
  }
}

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

.row--narrow {
  margin-left: -6px;
  margin-right: -6px;
}

.row--narrow > .col, .row--narrow [class^="col-"] {
  padding-left: 6px;
  padding-right: 6px;
}

.row--wide, .b-blog.row {
  margin-left: -30px;
  margin-right: -30px;
}

.row--wide > .col, .b-blog.row > .col, .row--wide [class^="col-"], .b-blog.row [class^="col-"], .row--wide > .column, .b-blog.row > .column {
  padding-left: 30px;
  padding-right: 30px;
}

.row--list > .col, .row--list [class^="col-"], .row--list > .column {
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}

.row--section {
  margin-top: 5rem;
}

.sticky-container + .l-main {
  position: static;
}

.l-wrapper {
  background: #fff;
  position: relative;
  min-height: 1%;
  height: auto;
  overflow: hidden;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  -moz-flex-direction: column;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
  min-height: 100vh;
}

.l-wrapper main {
  overflow: hidden;
  display: block;
  width: 100%;
  position: relative;
}

.l-wrapper .l-main {
  flex: 1;
  -webkit-flex: 1 1 auto;
  -ms-flex: 1 1 auto;
  flex: 1 1 auto;
  -webkit-align-self: stretch;
  -ms-flex-item-align: stretch;
  align-self: stretch;
}

.l-header {
  width: 100%;
  display: block;
}

.l-footer {
  display: block;
  width: 100%;
  overflow: hidden;
}

.aside-main-menu {
  will-change: -webkit-transform;
  will-change: transform;
  position: fixed;
  z-index: 199;
  top: 0;
  right: 0;
  color: #fff;
  background: rgba(0, 0, 0, 0.9);
  width: 100%;
  max-width: 320px;
  height: 100%;
  min-height: 100vh;
  padding: 3rem;
  visibility: hidden;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  transition: transform 0.5s cubic-bezier(0.645, 0.045, 0.355, 1), visibility 0.5s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
  transform: translateX(100%);
  transform: translate3d(100%, 0%, 0);
}

.aside-main-menu.is-active {
  transform: translate3d(0, 0, 0);
  transform: translateX(0);
  visibility: visible;
}

.aside-main-menu__nav {
  padding-right: 15px;
  width: 100%;
  height: 100%;
  font-size: 1.875rem;
  font-weight: 300;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-transform: uppercase;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -moz-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
}

.aside-main-menu__nav ul {
  display: block;
}

.aside-main-menu__nav ul li {
  margin: .2em 0;
  display: block;
}

.aside-main-menu__nav ul li:last-child a {
  margin-bottom: 0;
}

.aside-main-menu__nav ul li a {
  display: inline-block;
  color: #fff;
  font-size: 1.2em;
  margin-bottom: 2vh;
  text-transform: uppercase;
  text-decoration: none;
  outline: 0;
  transition: all .3s ease;
}

.aside-main-menu__nav ul li a:hover, .aside-main-menu__nav ul li a.is-active {
  text-decoration: none;
  color: #444444;
  border-bottom-color: transparent;
}

@media screen and (max-width: 1024px) {
  .aside-main-menu__nav ul li a {
    font-size: 26px;
  }
}

@media screen and (max-width: 1024px) and (max-height: 400px) and (orientation: landscape) {
  .aside-main-menu__nav ul li a {
    font-size: 2rem;
  }
}

@media screen and (max-width: 640px) {
  .aside-main-menu__nav ul li a {
    font-size: 5vw;
    margin-bottom: 2.5vh;
    line-height: 1.4;
    border-bottom: none;
  }
}

@media screen and (max-width: 640px) and (max-height: 400px) and (orientation: landscape) {
  .aside-main-menu__nav ul li a {
    font-size: 2rem;
  }
}

.aside-main-menu__wrp {
  padding-top: 6rem;
}

.aside-main-menu .b-header__search {
  display: block !important;
  max-width: 100%;
  margin-bottom: 2vh;
}

.aside-main-menu .b-header__search-form .btn-search {
  color: #fff;
}

.aside-main-menu .b-header__search-form .btn-search:hover {
  color: #444444;
}

.aside-main-menu .menu-icon.burger {
  position: absolute;
  right: 1.5rem;
  top: 1.5rem;
  color: #fff;
}

.aside-main-menu .menu-icon.burger span {
  color: #fff;
}

.aside-main-menu .menu-icon.burger:before, .aside-main-menu .menu-icon.burger:after {
  color: #fff;
}

@media screen and (max-width: 1024px) {
  .aside-main-menu__nav {
    padding-top: 5rem;
  }
}

@media screen and (max-width: 640px) {
  .aside-main-menu__nav {
    padding-top: 2vh;
  }
}

.overlay {
  transition: all 0.5s cubic-bezier(0.645, 0.045, 0.355, 1);
  display: block;
  position: fixed;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  z-index: 199;
  background: rgba(0, 0, 0, 0.85);
  visibility: hidden;
  opacity: 0;
}

.menu-is-open .overlay {
  visibility: visible;
  opacity: 1;
  transition: all 0.5s cubic-bezier(0.645, 0.045, 0.355, 1);
}

.sidebar-is-open .overlay {
  visibility: visible;
  opacity: 1;
  transition: all 0.5s cubic-bezier(0.645, 0.045, 0.355, 1);
}

input[type=text],
input[type=password],
input[type=email],
input[type=url],
input[type=time],
input[type=date],
input[type=datetime-local],
input[type=tel],
input[type=number],
input[type=search],
input[type=file],
textarea, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) {
  background-color: #fff;
  border: 1px solid #000;
  border-radius: 0px;
  outline: none;
  height: 4rem;
  line-height: 4rem;
  width: 100%;
  color: #444444;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  font-size: 1.5rem;
  font-weight: 400;
  padding: 0 1.2rem;
  margin-bottom: 2rem;
  transition: border .3s ease, box-shadow .3s ease;
  box-sizing: border-box;
  box-shadow: none;
}

input[type=text]::-webkit-input-placeholder,
input[type=password]::-webkit-input-placeholder,
input[type=email]::-webkit-input-placeholder,
input[type=url]::-webkit-input-placeholder,
input[type=time]::-webkit-input-placeholder,
input[type=date]::-webkit-input-placeholder,
input[type=datetime-local]::-webkit-input-placeholder,
input[type=tel]::-webkit-input-placeholder,
input[type=number]::-webkit-input-placeholder,
input[type=search]::-webkit-input-placeholder,
input[type=file]::-webkit-input-placeholder,
textarea::-webkit-input-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio)::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #000;
  font-weight: 400;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

input[type=text]:-moz-placeholder,
input[type=password]:-moz-placeholder,
input[type=email]:-moz-placeholder,
input[type=url]:-moz-placeholder,
input[type=time]:-moz-placeholder,
input[type=date]:-moz-placeholder,
input[type=datetime-local]:-moz-placeholder,
input[type=tel]:-moz-placeholder,
input[type=number]:-moz-placeholder,
input[type=search]:-moz-placeholder,
input[type=file]:-moz-placeholder,
textarea:-moz-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #000;
  font-weight: 400;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

input[type=text]::-moz-placeholder,
input[type=password]::-moz-placeholder,
input[type=email]::-moz-placeholder,
input[type=url]::-moz-placeholder,
input[type=time]::-moz-placeholder,
input[type=date]::-moz-placeholder,
input[type=datetime-local]::-moz-placeholder,
input[type=tel]::-moz-placeholder,
input[type=number]::-moz-placeholder,
input[type=search]::-moz-placeholder,
input[type=file]::-moz-placeholder,
textarea::-moz-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio)::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #000;
  font-weight: 400;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

input[type=text]:-ms-input-placeholder,
input[type=password]:-ms-input-placeholder,
input[type=email]:-ms-input-placeholder,
input[type=url]:-ms-input-placeholder,
input[type=time]:-ms-input-placeholder,
input[type=date]:-ms-input-placeholder,
input[type=datetime-local]:-ms-input-placeholder,
input[type=tel]:-ms-input-placeholder,
input[type=number]:-ms-input-placeholder,
input[type=search]:-ms-input-placeholder,
input[type=file]:-ms-input-placeholder,
textarea:-ms-input-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #000;
  font-weight: 400;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

input[type=text]:hover, input[type=text]:focus,
input[type=password]:hover,
input[type=password]:focus,
input[type=email]:hover,
input[type=email]:focus,
input[type=url]:hover,
input[type=url]:focus,
input[type=time]:hover,
input[type=time]:focus,
input[type=date]:hover,
input[type=date]:focus,
input[type=datetime-local]:hover,
input[type=datetime-local]:focus,
input[type=tel]:hover,
input[type=tel]:focus,
input[type=number]:hover,
input[type=number]:focus,
input[type=search]:hover,
input[type=search]:focus,
input[type=file]:hover,
input[type=file]:focus,
textarea:hover,
textarea:focus, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):hover, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):focus {
  background-color: #fff;
  border-color: #0580FF;
}

input[type=text].inline,
input[type=password].inline,
input[type=email].inline,
input[type=url].inline,
input[type=time].inline,
input[type=date].inline,
input[type=datetime-local].inline,
input[type=tel].inline,
input[type=number].inline,
input[type=search].inline,
input[type=file].inline,
textarea.inline, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).inline {
  width: auto;
}

input[type=text].is-error, input[type=text].has-error,
input[type=password].is-error,
input[type=password].has-error,
input[type=email].is-error,
input[type=email].has-error,
input[type=url].is-error,
input[type=url].has-error,
input[type=time].is-error,
input[type=time].has-error,
input[type=date].is-error,
input[type=date].has-error,
input[type=datetime-local].is-error,
input[type=datetime-local].has-error,
input[type=tel].is-error,
input[type=tel].has-error,
input[type=number].is-error,
input[type=number].has-error,
input[type=search].is-error,
input[type=search].has-error,
input[type=file].is-error,
input[type=file].has-error,
textarea.is-error,
textarea.has-error, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).has-error {
  color: #e3725b;
  border-color: #e3725b;
}

input[type=text].is-error .required-icn, input[type=text].has-error .required-icn,
input[type=password].is-error .required-icn,
input[type=password].has-error .required-icn,
input[type=email].is-error .required-icn,
input[type=email].has-error .required-icn,
input[type=url].is-error .required-icn,
input[type=url].has-error .required-icn,
input[type=time].is-error .required-icn,
input[type=time].has-error .required-icn,
input[type=date].is-error .required-icn,
input[type=date].has-error .required-icn,
input[type=datetime-local].is-error .required-icn,
input[type=datetime-local].has-error .required-icn,
input[type=tel].is-error .required-icn,
input[type=tel].has-error .required-icn,
input[type=number].is-error .required-icn,
input[type=number].has-error .required-icn,
input[type=search].is-error .required-icn,
input[type=search].has-error .required-icn,
input[type=file].is-error .required-icn,
input[type=file].has-error .required-icn,
textarea.is-error .required-icn,
textarea.has-error .required-icn, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error .required-icn, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).has-error .required-icn {
  opacity: 1;
}

.has-error input[type=text]:hover, .has-error input[type=text]:focus, .has-error
input[type=password]:hover, .has-error
input[type=password]:focus, .has-error
input[type=email]:hover, .has-error
input[type=email]:focus, .has-error
input[type=url]:hover, .has-error
input[type=url]:focus, .has-error
input[type=time]:hover, .has-error
input[type=time]:focus, .has-error
input[type=date]:hover, .has-error
input[type=date]:focus, .has-error
input[type=datetime-local]:hover, .has-error
input[type=datetime-local]:focus, .has-error
input[type=tel]:hover, .has-error
input[type=tel]:focus, .has-error
input[type=number]:hover, .has-error
input[type=number]:focus, .has-error
input[type=search]:hover, .has-error
input[type=search]:focus, .has-error
input[type=file]:hover, .has-error
input[type=file]:focus, .has-error
textarea:hover, .has-error
textarea:focus, .has-error .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):hover, .has-error .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):focus {
  box-shadow: none;
  background-color: #fff;
}

.has-error input[type=text] .required-icn, .has-error
input[type=password] .required-icn, .has-error
input[type=email] .required-icn, .has-error
input[type=url] .required-icn, .has-error
input[type=time] .required-icn, .has-error
input[type=date] .required-icn, .has-error
input[type=datetime-local] .required-icn, .has-error
input[type=tel] .required-icn, .has-error
input[type=number] .required-icn, .has-error
input[type=search] .required-icn, .has-error
input[type=file] .required-icn, .has-error
textarea .required-icn, .has-error .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) .required-icn {
  opacity: 1;
}

input[type=text]:focus, input[type=text]:active,
input[type=password]:focus,
input[type=password]:active,
input[type=email]:focus,
input[type=email]:active,
input[type=url]:focus,
input[type=url]:active,
input[type=time]:focus,
input[type=time]:active,
input[type=date]:focus,
input[type=date]:active,
input[type=datetime-local]:focus,
input[type=datetime-local]:active,
input[type=tel]:focus,
input[type=tel]:active,
input[type=number]:focus,
input[type=number]:active,
input[type=search]:focus,
input[type=search]:active,
input[type=file]:focus,
input[type=file]:active,
textarea:focus,
textarea:active, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):focus, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):active {
  border-color: #0580FF;
}

input[type=text]:focus.is-error, input[type=text]:focus.has-error, input[type=text]:active.is-error, input[type=text]:active.has-error,
input[type=password]:focus.is-error,
input[type=password]:focus.has-error,
input[type=password]:active.is-error,
input[type=password]:active.has-error,
input[type=email]:focus.is-error,
input[type=email]:focus.has-error,
input[type=email]:active.is-error,
input[type=email]:active.has-error,
input[type=url]:focus.is-error,
input[type=url]:focus.has-error,
input[type=url]:active.is-error,
input[type=url]:active.has-error,
input[type=time]:focus.is-error,
input[type=time]:focus.has-error,
input[type=time]:active.is-error,
input[type=time]:active.has-error,
input[type=date]:focus.is-error,
input[type=date]:focus.has-error,
input[type=date]:active.is-error,
input[type=date]:active.has-error,
input[type=datetime-local]:focus.is-error,
input[type=datetime-local]:focus.has-error,
input[type=datetime-local]:active.is-error,
input[type=datetime-local]:active.has-error,
input[type=tel]:focus.is-error,
input[type=tel]:focus.has-error,
input[type=tel]:active.is-error,
input[type=tel]:active.has-error,
input[type=number]:focus.is-error,
input[type=number]:focus.has-error,
input[type=number]:active.is-error,
input[type=number]:active.has-error,
input[type=search]:focus.is-error,
input[type=search]:focus.has-error,
input[type=search]:active.is-error,
input[type=search]:active.has-error,
input[type=file]:focus.is-error,
input[type=file]:focus.has-error,
input[type=file]:active.is-error,
input[type=file]:active.has-error,
textarea:focus.is-error,
textarea:focus.has-error,
textarea:active.is-error,
textarea:active.has-error, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):focus.is-error, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):focus.has-error, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):active.is-error, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):active.has-error {
  border-color: #e3725b;
  color: #e3725b;
}

input[type=text]:invalid:focus + .required-icn,
input[type=password]:invalid:focus + .required-icn,
input[type=email]:invalid:focus + .required-icn,
input[type=url]:invalid:focus + .required-icn,
input[type=time]:invalid:focus + .required-icn,
input[type=date]:invalid:focus + .required-icn,
input[type=datetime-local]:invalid:focus + .required-icn,
input[type=tel]:invalid:focus + .required-icn,
input[type=number]:invalid:focus + .required-icn,
input[type=search]:invalid:focus + .required-icn,
input[type=file]:invalid:focus + .required-icn,
textarea:invalid:focus + .required-icn, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):invalid:focus + .required-icn {
  opacity: 1;
}

input[type=text]:valid:focus, input[type=text]:focus,
input[type=password]:valid:focus,
input[type=password]:focus,
input[type=email]:valid:focus,
input[type=email]:focus,
input[type=url]:valid:focus,
input[type=url]:focus,
input[type=time]:valid:focus,
input[type=time]:focus,
input[type=date]:valid:focus,
input[type=date]:focus,
input[type=datetime-local]:valid:focus,
input[type=datetime-local]:focus,
input[type=tel]:valid:focus,
input[type=tel]:focus,
input[type=number]:valid:focus,
input[type=number]:focus,
input[type=search]:valid:focus,
input[type=search]:focus,
input[type=file]:valid:focus,
input[type=file]:focus,
textarea:valid:focus,
textarea:focus, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):valid:focus, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):focus {
  border-color: #0580FF;
}

input[type=text].is-error:focus,
input[type=password].is-error:focus,
input[type=email].is-error:focus,
input[type=url].is-error:focus,
input[type=time].is-error:focus,
input[type=date].is-error:focus,
input[type=datetime-local].is-error:focus,
input[type=tel].is-error:focus,
input[type=number].is-error:focus,
input[type=search].is-error:focus,
input[type=file].is-error:focus,
textarea.is-error:focus, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error:focus {
  color: #444444;
  border-color: #0580FF;
}

input[type=text].is-error::-webkit-input-placeholder,
input[type=password].is-error::-webkit-input-placeholder,
input[type=email].is-error::-webkit-input-placeholder,
input[type=url].is-error::-webkit-input-placeholder,
input[type=time].is-error::-webkit-input-placeholder,
input[type=date].is-error::-webkit-input-placeholder,
input[type=datetime-local].is-error::-webkit-input-placeholder,
input[type=tel].is-error::-webkit-input-placeholder,
input[type=number].is-error::-webkit-input-placeholder,
input[type=search].is-error::-webkit-input-placeholder,
input[type=file].is-error::-webkit-input-placeholder,
textarea.is-error::-webkit-input-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error::-webkit-input-placeholder {
  /* WebKit browsers */
}

input[type=text].is-error:-moz-placeholder,
input[type=password].is-error:-moz-placeholder,
input[type=email].is-error:-moz-placeholder,
input[type=url].is-error:-moz-placeholder,
input[type=time].is-error:-moz-placeholder,
input[type=date].is-error:-moz-placeholder,
input[type=datetime-local].is-error:-moz-placeholder,
input[type=tel].is-error:-moz-placeholder,
input[type=number].is-error:-moz-placeholder,
input[type=search].is-error:-moz-placeholder,
input[type=file].is-error:-moz-placeholder,
textarea.is-error:-moz-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
}

input[type=text].is-error::-moz-placeholder,
input[type=password].is-error::-moz-placeholder,
input[type=email].is-error::-moz-placeholder,
input[type=url].is-error::-moz-placeholder,
input[type=time].is-error::-moz-placeholder,
input[type=date].is-error::-moz-placeholder,
input[type=datetime-local].is-error::-moz-placeholder,
input[type=tel].is-error::-moz-placeholder,
input[type=number].is-error::-moz-placeholder,
input[type=search].is-error::-moz-placeholder,
input[type=file].is-error::-moz-placeholder,
textarea.is-error::-moz-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error::-moz-placeholder {
  /* Mozilla Firefox 19+ */
}

input[type=text].is-error:-ms-input-placeholder,
input[type=password].is-error:-ms-input-placeholder,
input[type=email].is-error:-ms-input-placeholder,
input[type=url].is-error:-ms-input-placeholder,
input[type=time].is-error:-ms-input-placeholder,
input[type=date].is-error:-ms-input-placeholder,
input[type=datetime-local].is-error:-ms-input-placeholder,
input[type=tel].is-error:-ms-input-placeholder,
input[type=number].is-error:-ms-input-placeholder,
input[type=search].is-error:-ms-input-placeholder,
input[type=file].is-error:-ms-input-placeholder,
textarea.is-error:-ms-input-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error:-ms-input-placeholder {
  /* Internet Explorer 10+ */
}

input[type=text].input-small,
input[type=password].input-small,
input[type=email].input-small,
input[type=url].input-small,
input[type=time].input-small,
input[type=date].input-small,
input[type=datetime-local].input-small,
input[type=tel].input-small,
input[type=number].input-small,
input[type=search].input-small,
input[type=file].input-small,
textarea.input-small, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).input-small {
  width: 13rem;
  max-width: 13rem;
}

.row-field input[type=text], .row-field
input[type=password], .row-field
input[type=email], .row-field
input[type=url], .row-field
input[type=time], .row-field
input[type=date], .row-field
input[type=datetime-local], .row-field
input[type=tel], .row-field
input[type=number], .row-field
input[type=search], .row-field
input[type=file], .row-field
textarea, .row-field .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) {
  margin-bottom: 0;
}

@media print, screen and (max-width: 39.99875em) {
  input[type=text],
  input[type=password],
  input[type=email],
  input[type=url],
  input[type=time],
  input[type=date],
  input[type=datetime-local],
  input[type=tel],
  input[type=number],
  input[type=search],
  input[type=file],
  textarea, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) {
    font-size: 2rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  input[type=text] input[type=text], input[type=password] input[type=text], input[type=email] input[type=text], input[type=url] input[type=text], input[type=time] input[type=text], input[type=date] input[type=text], input[type=datetime-local] input[type=text], input[type=tel] input[type=text], input[type=number] input[type=text], input[type=search] input[type=text], input[type=file] input[type=text], textarea input[type=text], .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=text], form input[type=text], .b-callback-form input[type=text],
  input[type=text] input[type=password],
  input[type=password] input[type=password],
  input[type=email] input[type=password],
  input[type=url] input[type=password],
  input[type=time] input[type=password],
  input[type=date] input[type=password],
  input[type=datetime-local] input[type=password],
  input[type=tel] input[type=password],
  input[type=number] input[type=password],
  input[type=search] input[type=password],
  input[type=file] input[type=password],
  textarea input[type=password],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=password],
  form input[type=password],
  .b-callback-form input[type=password],
  input[type=text] input[type=email],
  input[type=password] input[type=email],
  input[type=email] input[type=email],
  input[type=url] input[type=email],
  input[type=time] input[type=email],
  input[type=date] input[type=email],
  input[type=datetime-local] input[type=email],
  input[type=tel] input[type=email],
  input[type=number] input[type=email],
  input[type=search] input[type=email],
  input[type=file] input[type=email],
  textarea input[type=email],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=email],
  form input[type=email],
  .b-callback-form input[type=email],
  input[type=text] input[type=url],
  input[type=password] input[type=url],
  input[type=email] input[type=url],
  input[type=url] input[type=url],
  input[type=time] input[type=url],
  input[type=date] input[type=url],
  input[type=datetime-local] input[type=url],
  input[type=tel] input[type=url],
  input[type=number] input[type=url],
  input[type=search] input[type=url],
  input[type=file] input[type=url],
  textarea input[type=url],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=url],
  form input[type=url],
  .b-callback-form input[type=url],
  input[type=text] input[type=time],
  input[type=password] input[type=time],
  input[type=email] input[type=time],
  input[type=url] input[type=time],
  input[type=time] input[type=time],
  input[type=date] input[type=time],
  input[type=datetime-local] input[type=time],
  input[type=tel] input[type=time],
  input[type=number] input[type=time],
  input[type=search] input[type=time],
  input[type=file] input[type=time],
  textarea input[type=time],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=time],
  form input[type=time],
  .b-callback-form input[type=time],
  input[type=text] input[type=date],
  input[type=password] input[type=date],
  input[type=email] input[type=date],
  input[type=url] input[type=date],
  input[type=time] input[type=date],
  input[type=date] input[type=date],
  input[type=datetime-local] input[type=date],
  input[type=tel] input[type=date],
  input[type=number] input[type=date],
  input[type=search] input[type=date],
  input[type=file] input[type=date],
  textarea input[type=date],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=date],
  form input[type=date],
  .b-callback-form input[type=date],
  input[type=text] input[type=datetime-local],
  input[type=password] input[type=datetime-local],
  input[type=email] input[type=datetime-local],
  input[type=url] input[type=datetime-local],
  input[type=time] input[type=datetime-local],
  input[type=date] input[type=datetime-local],
  input[type=datetime-local] input[type=datetime-local],
  input[type=tel] input[type=datetime-local],
  input[type=number] input[type=datetime-local],
  input[type=search] input[type=datetime-local],
  input[type=file] input[type=datetime-local],
  textarea input[type=datetime-local],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=datetime-local],
  form input[type=datetime-local],
  .b-callback-form input[type=datetime-local],
  input[type=text] input[type=tel],
  input[type=password] input[type=tel],
  input[type=email] input[type=tel],
  input[type=url] input[type=tel],
  input[type=time] input[type=tel],
  input[type=date] input[type=tel],
  input[type=datetime-local] input[type=tel],
  input[type=tel] input[type=tel],
  input[type=number] input[type=tel],
  input[type=search] input[type=tel],
  input[type=file] input[type=tel],
  textarea input[type=tel],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=tel],
  form input[type=tel],
  .b-callback-form input[type=tel],
  input[type=text] input[type=number],
  input[type=password] input[type=number],
  input[type=email] input[type=number],
  input[type=url] input[type=number],
  input[type=time] input[type=number],
  input[type=date] input[type=number],
  input[type=datetime-local] input[type=number],
  input[type=tel] input[type=number],
  input[type=number] input[type=number],
  input[type=search] input[type=number],
  input[type=file] input[type=number],
  textarea input[type=number],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=number],
  form input[type=number],
  .b-callback-form input[type=number],
  input[type=text] input[type=search],
  input[type=password] input[type=search],
  input[type=email] input[type=search],
  input[type=url] input[type=search],
  input[type=time] input[type=search],
  input[type=date] input[type=search],
  input[type=datetime-local] input[type=search],
  input[type=tel] input[type=search],
  input[type=number] input[type=search],
  input[type=search] input[type=search],
  input[type=file] input[type=search],
  textarea input[type=search],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=search],
  form input[type=search],
  .b-callback-form input[type=search],
  input[type=text] input[type=file],
  input[type=password] input[type=file],
  input[type=email] input[type=file],
  input[type=url] input[type=file],
  input[type=time] input[type=file],
  input[type=date] input[type=file],
  input[type=datetime-local] input[type=file],
  input[type=tel] input[type=file],
  input[type=number] input[type=file],
  input[type=search] input[type=file],
  input[type=file] input[type=file],
  textarea input[type=file],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=file],
  form input[type=file],
  .b-callback-form input[type=file],
  input[type=text] textarea,
  input[type=password] textarea,
  input[type=email] textarea,
  input[type=url] textarea,
  input[type=time] textarea,
  input[type=date] textarea,
  input[type=datetime-local] textarea,
  input[type=tel] textarea,
  input[type=number] textarea,
  input[type=search] textarea,
  input[type=file] textarea,
  textarea textarea,
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) textarea,
  form textarea,
  .b-callback-form textarea, input[type=text] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=password] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=email] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=url] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=time] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=date] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=datetime-local] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=tel] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=number] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=search] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=file] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), textarea .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), form .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), .b-callback-form .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) {
    font-size: 2rem;
    height: 40px;
    line-height: 40px;
  }
}

::-ms-reveal {
  display: none !important;
}

input[type=file] {
  text-indent: 0;
  line-height: 1;
  color: #0580FF;
}

textarea {
  padding: 1.4rem;
  overflow: auto;
  resize: none;
  line-height: 1.1;
  min-height: 210px;
}

.auto-width {
  width: auto;
}

input[type=text]::-ms-clear {
  display: none;
}

label {
  margin-bottom: .5rem;
}

label.is-error {
  display: block;
  color: #e3725b;
  margin-top: 5px;
  font-weight: normal;
  font-size: 1.4rem;
  line-height: 1;
}

.label {
  font-size: 1.4rem;
  line-height: 1;
  display: block;
  margin-bottom: .5rem;
}

.select-wrp {
  position: relative;
}

.select-wrp:before {
  content: '';
  content: "\e901";
  position: absolute;
  left: 1rem;
  top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
  font-size: 1.3rem;
  color: #000;
}

[dir="ltr"] .select-wrp:before {
  left: auto;
  right: 1rem;
}

.ltr .select-wrp:before {
  left: auto;
  right: 1rem;
}

.select-wrp select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  width: 100%;
  height: 4rem;
  background-color: #fff;
  border: 1px solid #000;
  border-radius: 0px;
  outline: none;
  line-height: 4rem;
  color: #444444;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  font-size: 1.5rem;
  font-weight: 400;
  padding: 0 1.2rem;
  padding-left: 4rem;
}

[dir="ltr"] .select-wrp select {
  padding-left: 1.2rem;
  padding-right: 4rem;
}

.ltr .select-wrp select {
  padding-left: 1.2rem;
  padding-right: 4rem;
}

.error-message {
  color: red;
  font-size: 1.6rem;
  line-height: 1.25;
  padding-bottom: 1.5rem;
}

.app-callback-form .btn, .app-callback-form .btn-flat, .app-callback-form .b-callback-form .btn-submit, .b-callback-form .app-callback-form .btn-submit {
  width: 100%;
}

/*****************************************
  upload button styles
******************************************/
.file-upload {
  position: relative;
  display: inline-block;
}

.file-upload__label {
  display: block;
  background: transparent;
  color: #0580FF;
  font-size: 18px;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

.file-upload__label:before {
  content: '';
  display: inline-block;
  margin-right: 10px;
  background: url(../img/icon/iconattach.svg) 0 0 no-repeat;
  background-size: contain;
  width: 20px;
  height: 20px;
  vertical-align: -2px;
}

.file-upload__label:hover {
  cursor: pointer;
}

.file-upload__input {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  font-size: 0;
  width: 0;
  height: 100%;
  opacity: 0;
}

#gform_wrapper_3 .gform_confirmation_message, .gform_wrapper .gform_confirmation_message {
  font-size: 22px;
  text-align: center;
  font-weight: bold;
  padding: 0 20px 0 20px;
}

section .app-inline-form {
  margin-left: -20px;
  margin-right: -20px;
}

section .app-inline-form .gfield {
  padding-left: 20px;
  padding-right: 20px;
}

section #gform_wrapper_3.gform_wrapper .gform_button, section #gform_wrapper_3.gform_wrapper .button, section .gform_wrapper .gform_button, section .gform_wrapper .button {
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  color: #fff !important;
  padding: 1.2rem 1.5rem 1.2rem !important;
  font-size: 14px !important;
  font-weight: 700;
  border-radius: 0 !important;
  background: #0580FF !important;
  min-width: 160px;
  max-width: 240px;
}

section #gform_wrapper_3.gform_wrapper .gfield .gfield_error, section .gform_wrapper .gfield .gfield_error {
  border: none;
  background: transparent;
  /* Safari - Pre Flex Flow */
  -webkit-flex-direction: row;
  -webkit-flex-wrap: wrap;
  /* MS - Pre Flex Flow */
  -ms-flex-direction: row;
  -ms-flex-wrap: wrap;
  /* Moz - Pre Flex Flow */
  -moz-flex-direction: row;
  -moz-flex-wrap: wrap;
  /* Flex Flow  */
  -webkit-flex-flow: row wrap;
  -moz-flex-flow: row wrap;
  -ms-flex-flow: row wrap;
  -webkit-flex-flow: row wrap;
  flex-flow: row wrap;
}

section #gform_wrapper_3.gform_wrapper .gfield .gfield_error .validation_message, section .gform_wrapper .gfield .gfield_error .validation_message {
  padding-top: 0;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  color: red;
}

section #gform_wrapper_3.gform_wrapper .gfield .gfield_error input:not([type=submit]), section .gform_wrapper .gfield .gfield_error input:not([type=submit]) {
  border-color: red;
}

section #gform_wrapper_3.gform_wrapper .gfield_description, section .gform_wrapper .gfield_description {
  color: #888888;
}

section #gform_wrapper_3.gform_wrapper .gfield.field_description_below .ginput_container, section .gform_wrapper .gfield.field_description_below .ginput_container {
  max-width: 500px;
}

@media screen and (min-width: 567px) {
  section #gform_wrapper_3.gform_wrapper .gfield.field_description_below, section .gform_wrapper .gfield.field_description_below {
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -webkit-box-align: center;
    -moz-box-align: center;
    -ms-flex-align: center;
    -webkit-align-items: center;
    align-items: center;
  }
  section #gform_wrapper_3.gform_wrapper .gfield.field_description_below .gfield_label, section .gform_wrapper .gfield.field_description_below .gfield_label {
    flex: 0 0 220px;
    max-width: 220px;
    margin-top: 0;
    margin-bottom: 12px;
  }
  section #gform_wrapper_3.gform_wrapper .gfield.field_description_below .ginput_container, section .gform_wrapper .gfield.field_description_below .ginput_container {
    flex: 0 1 auto;
    flex: auto;
    max-width: calc(100% - 220px);
    max-width: 500px;
  }
}

section #gform_wrapper_3.gform_wrapper .gfield_label, section .gform_wrapper .gfield_label {
  color: #253343 !important;
  font-family: "Source Sans Pro", "Roboto", sans-serif !important;
  font-size: 18px !important;
  font-weight: 600 !important;
  letter-spacing: 0;
}

section #gform_wrapper_3.gform_wrapper .ginput_container input:not([type=submit]), section .gform_wrapper .ginput_container input:not([type=submit]) {
  border-color: #AAAAAA;
  color: #444444 !important;
  font-size: 1.6rem !important;
  font-family: "Source Sans Pro", "Roboto", sans-serif !important;
  font-weight: normal !important;
  background: #fff !important;
  box-shadow: none !important;
  letter-spacing: 0;
  padding-left: 2rem !important;
  padding-right: 2rem !important;
  height: 5rem;
  width: 100%;
  margin-bottom: 0 !important;
}

@media print, screen and (max-width: 39.99875em) {
  section #gform_wrapper_3.gform_wrapper .ginput_container input:not([type=submit]), section .gform_wrapper .ginput_container input:not([type=submit]) {
    font-size: 2rem !important;
  }
}

section #gform_wrapper_3.gform_wrapper .ginput_container input:not([type=submit])::-webkit-input-placeholder, section .gform_wrapper .ginput_container input:not([type=submit])::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

section #gform_wrapper_3.gform_wrapper .ginput_container input:not([type=submit]):-moz-placeholder, section .gform_wrapper .ginput_container input:not([type=submit]):-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

section #gform_wrapper_3.gform_wrapper .ginput_container input:not([type=submit])::-moz-placeholder, section .gform_wrapper .ginput_container input:not([type=submit])::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

section #gform_wrapper_3.gform_wrapper .ginput_container input:not([type=submit]):-ms-input-placeholder, section .gform_wrapper .ginput_container input:not([type=submit]):-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

section #gform_wrapper_3.gform_wrapper .dropbox-dropin-btn, section .gform_wrapper .dropbox-dropin-btn {
  color: #00A6D0 !important;
  border: none !important;
  border-radius: 0 !important;
  background: none !important;
  font-size: 18px !important;
  font-family: "Source Sans Pro", "Roboto", sans-serif !important;
  padding: 0 !important;
  font-weight: normal !important;
  height: 50px !important;
  line-height: 50px !important;
  margin-bottom: 15px;
}

section #gform_wrapper_3.gform_wrapper .dropbox-dropin-btn .dropin-btn-status, section .gform_wrapper .dropbox-dropin-btn .dropin-btn-status {
  background: url(../img/icon/icondropbox.svg) 0 0 no-repeat !important;
  background-size: contain !important;
  width: 20px !important;
  height: 21px !important;
  margin: 0 !important;
  margin-right: 8px !important;
  vertical-align: -2px !important;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload, section .gform_wrapper .ginput_container_fileupload {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -moz-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  /* Safari - Pre Flex Flow */
  -webkit-flex-direction: row;
  -webkit-flex-wrap: wrap;
  /* MS - Pre Flex Flow */
  -ms-flex-direction: row;
  -ms-flex-wrap: wrap;
  /* Moz - Pre Flex Flow */
  -moz-flex-direction: row;
  -moz-flex-wrap: wrap;
  /* Flex Flow  */
  -webkit-flex-flow: row wrap;
  -moz-flex-flow: row wrap;
  -ms-flex-flow: row wrap;
  -webkit-flex-flow: row wrap;
  flex-flow: row wrap;
  margin-bottom: 20px;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload .gfield_description, section .gform_wrapper .ginput_container_fileupload .gfield_description {
  font-size: 15px;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload > div, section .gform_wrapper .ginput_container_fileupload > div {
  cursor: pointer;
  display: inline-block;
  margin-right: 54px;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload > div:last-of-type, section .gform_wrapper .ginput_container_fileupload > div:last-of-type {
  margin-right: 0;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload > div:last-child, section .gform_wrapper .ginput_container_fileupload > div:last-child {
  margin-right: 0;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload > div:not(:first-child).dropbox-upload, section .gform_wrapper .ginput_container_fileupload > div:not(:first-child).dropbox-upload {
  margin-right: 0;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload .dropbox-upload:hover, section .gform_wrapper .ginput_container_fileupload .dropbox-upload:hover {
  cursor: pointer;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload .dropbox-upload .dropbox-dropin-btn, section .gform_wrapper .ginput_container_fileupload .dropbox-upload .dropbox-dropin-btn {
  margin-bottom: 0 !important;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload .dropbox-upload .dropbox-dropin-btn .dropin-btn-status, section .gform_wrapper .ginput_container_fileupload .dropbox-upload .dropbox-dropin-btn .dropin-btn-status {
  display: inline-block;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload .file-upload__label, section .gform_wrapper .ginput_container_fileupload .file-upload__label {
  position: relative;
  cursor: pointer;
  z-index: 5;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload .file-upload:hover, section .gform_wrapper .ginput_container_fileupload .file-upload:hover {
  cursor: pointer;
}

section #gform_wrapper_3.gform_wrapper .gform_footer, section .gform_wrapper .gform_footer {
  padding-left: 20px;
  padding-right: 20px;
}

.gfield.accept-policy {
  list-style: none;
  padding: 1rem .5rem;
  font-size: 14px;
  color: #888888;
}

@media print, screen and (max-width: 39.99875em) {
  .app-form-landing-request-demo .row .column {
    flex: 0 0 100%;
    max-width: 100%;
    width: 100%;
  }
  .app-form-landing-request-demo .row + .row {
    padding-top: 3rem;
  }
}

@media screen and (max-width: 39.99875em) and (max-width: 411px) {
  .app-form-landing-request-demo .btn-submit {
    width: 100%;
    padding-top: .7em;
    padding-bottom: .7em;
    font-size: 16px;
  }
}

.menu-icon, .menu-icon--aside {
  display: inline-block;
  width: 3.7rem;
  height: 3rem;
  border: none;
  background: transparent;
  position: relative;
  cursor: pointer;
}

.menu-is-open .menu-icon, .menu-is-open .menu-icon--aside {
  z-index: 200;
  color: #fff;
}

.menu-is-open .menu-icon.burger span, .menu-is-open .menu-icon.burger:before, .menu-is-open .menu-icon.burger:after, .menu-is-open .menu-icon--aside.burger span, .menu-is-open .menu-icon--aside.burger:before, .menu-is-open .menu-icon--aside.burger:after {
  color: #fff;
}

@media screen and (min-width: 1024px) {
  .menu-icon:hover, .menu-icon--aside:hover {
    color: #484a48;
  }
  .menu-icon:hover.burger span, .menu-icon:hover.burger:before, .menu-icon:hover.burger:after, .menu-icon--aside:hover.burger span, .menu-icon--aside:hover.burger:before, .menu-icon--aside:hover.burger:after {
    color: #484a48;
    transition: color .3s ease;
  }
}

.menu-icon.large, .menu-icon--aside.large {
  width: 2rem;
  height: 1.8rem;
}

.menu-icon:focus, .menu-icon--aside:focus {
  outline: none;
}

.menu-icon.burger:after, .menu-icon.burger:before,
.menu-icon.burger span, .menu-icon--aside.burger:after, .menu-icon--aside.burger:before,
.menu-icon--aside.burger span {
  color: #444444;
  width: 100%;
  height: 4px;
  border-radius: 5px;
  position: absolute;
  display: block;
  background: currentColor;
}

.menu-icon.burger:after, .menu-icon.burger:before, .menu-icon--aside.burger:after, .menu-icon--aside.burger:before {
  content: "";
  transition: 0.3s width 0.4s;
}

.menu-icon.burger:after, .menu-icon--aside.burger:after {
  top: 0;
  left: 0;
  margin-top: 0;
}

.menu-icon.burger:before, .menu-icon--aside.burger:before {
  bottom: 0;
  right: 0;
  margin-bottom: 0;
}

.menu-icon.burger span, .menu-icon--aside.burger span {
  top: 50%;
  margin-top: -2px;
  transition: transform 0.3s;
}

.menu-icon.burger span:before, .menu-icon--aside.burger span:before {
  content: "";
  background: currentColor;
  width: 100%;
  height: 4px;
  border-radius: 5px;
  position: absolute;
  left: 0;
  transition: transform 0.3s;
}

.menu-icon.burger.on:after, .menu-icon--aside.burger.on:after {
  transition: all 0.2s;
  width: 0;
  left: 0;
}

.menu-icon.burger.on:before, .menu-icon--aside.burger.on:before {
  transition: all 0.2s;
  width: 0;
  right: 0;
}

.menu-icon.burger.on span, .menu-icon--aside.burger.on span {
  transform: rotate(45deg);
  transition: 0.3s transform 0.4s;
}

.menu-icon.burger.on span:before, .menu-icon--aside.burger.on span:before {
  transform: rotate(-90deg);
  transition: 0.3s transform 0.4s;
}

.b-sidebar-menu__title {
  border-radius: 5px;
  background: #000;
  color: #fff;
  font-weight: bold;
  margin-bottom: 2px;
  text-align: center;
  font-size: 2rem;
  position: relative;
  overflow: hidden;
}

.b-sidebar-menu__title.is-active {
  background: #444444;
  color: #444444;
}

.b-sidebar-menu__title > a {
  text-decoration: none;
  padding: 1.8rem 1rem;
  display: block;
  color: currentColor;
}

.b-sidebar-menu__title > a:hover {
  text-decoration: none;
}

.b-sidebar-menu__content {
  padding: 2rem;
}

.b-sidebar-menu__nav li {
  font-size: 1.5rem;
  font-weight: 400;
}

.b-sidebar-menu__nav li:not(:last-of-type) {
  margin-bottom: 1rem;
}

.b-sidebar-menu__nav .is-active {
  font-weight: bold;
}

.navigation {
  font-size: 1.5rem;
}

.navigation .screen-reader-text {
  display: inline-block;
  vertical-align: middle;
  font-size: 1.5rem;
  font-weight: bold;
  margin: 0;
}

.navigation .nav-links {
  margin-left: 5px;
  margin-right: 5px;
  display: inline-block;
  vertical-align: middle;
}

.navigation .page-numbers {
  padding-left: .4rem;
  padding-right: .4rem;
}

.navigation .current {
  font-weight: bold;
}

.has-submenu {
  position: relative;
}

.has-submenu:hover .submenu-wrp {
  display: block;
}

.has-submenu .submenu-wrp {
  padding-top: 1rem;
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  width: 12rem;
}

.has-submenu .submenu {
  min-width: 120px;
  background: #fff;
  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
  border-radius: 4px;
  display: block;
}

.is-menu-open .has-submenu .submenu {
  box-shadow: none;
  min-width: 0;
  margin-left: 0;
  text-align: center;
}

.has-submenu .submenu > li {
  display: block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}

.has-submenu .submenu > li + li {
  padding-top: 0;
}

.is-menu-open .has-submenu .submenu > li + li {
  padding-top: 1rem;
}

.has-submenu .submenu > li > a {
  color: #000;
  font-size: 1.6rem;
  font-weight: 400;
  padding-left: 11px;
  padding-right: 11px;
}

.has-submenu .submenu > li > a:hover {
  color: #888888;
}

.b-header--yellow .has-submenu .submenu > li > a {
  color: #000;
}

.b-header--yellow .has-submenu .submenu > li > a:hover {
  color: #888888;
}

.b-header[class*=nav-] .has-submenu .submenu > li > a {
  color: #000;
}

.b-header[class*=nav-] .has-submenu .submenu > li > a:hover {
  color: #888888;
}

@media print, screen and (max-width: 47.99875em) {
  .has-submenu .submenu-wrp {
    width: 100%;
    display: block;
    position: relative;
  }
  .has-submenu .submenu-wrp .submenu {
    background: none;
  }
  .has-submenu .submenu-wrp .submenu li.is-active a {
    color: #ff7a00;
  }
  .has-submenu .submenu-wrp .submenu li a {
    color: #fff;
  }
}

.close-button {
  display: block;
  margin-left: auto;
  position: relative;
  line-height: 1;
  font-size: 0;
  width: 5.1rem;
  height: 5.1rem;
  margin-bottom: 2rem;
  transition: opacity .3s ease, background .3s ease;
}

.close-button:before, .close-button:after {
  content: '';
  position: absolute;
  top: 0;
  left: 2.65rem;
  height: 5.2rem;
  width: 0.2rem;
  background-color: #444444;
}

.close-button:before {
  transform: rotate(45deg);
}

.close-button:after {
  transform: rotate(-45deg);
}

.close-button:hover {
  opacity: .5;
}

html.is-reveal-open body {
  height: auto;
}

.reveal-overlay {
  background: rgba(0, 68, 90, 0.95);
  background: rgba(13, 12, 30, 0.84);
}

.reveal {
  border: none;
  outline: none;
  padding: 5.8rem;
  max-width: 88rem;
  width: 100%;
}

.reveal.reveal-transparent {
  background: transparent;
}

.reveal.reveal-small {
  max-width: 70rem;
}

.reveal.reveal-box {
  max-width: 87rem;
}

.reveal.reveal-box .modal-txt {
  max-width: 67rem;
}

.reveal .close-button {
  display: block;
  margin-left: auto;
  position: relative;
  line-height: 1;
  font-size: 0;
  width: 5.1rem;
  height: 5.1rem;
  margin-bottom: 2rem;
  transition: opacity .3s ease, background .3s ease;
}

.reveal .close-button:before, .reveal .close-button:after {
  content: '';
  position: absolute;
  top: 0;
  left: 2.65rem;
  height: 5.2rem;
  width: 0.2rem;
  background-color: #444444;
}

.reveal .close-button:before {
  transform: rotate(45deg);
}

.reveal .close-button:after {
  transform: rotate(-45deg);
}

.reveal .close-button:hover {
  opacity: .5;
}

.reveal .modal-header {
  display: flex;
}

.reveal .modal-title {
  margin-bottom: 3rem;
}

.reveal .modal-title .article-title {
  margin-bottom: 0;
}

.reveal .modal-body p {
  font-size: 100%;
  line-height: 1.875;
}

.reveal .modal-txt {
  font-size: 1.6rem;
}

.reveal .modal-preview {
  padding-top: 2rem;
  margin-bottom: 4rem;
}

.reveal .modal-footer {
  margin-top: 3.5rem;
}

.reveal .modal-footer [class^="btn"], .reveal .modal-footer .btn, .reveal .modal-footer .btn-flat, .reveal .modal-footer .b-callback-form .btn-submit, .b-callback-form .reveal .modal-footer .btn-submit {
  margin-right: 1rem;
  margin-top: 1rem;
  text-transform: none;
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
  min-width: 23.3rem;
  border-radius: 0;
}

.reveal .more-link {
  color: #444444;
  text-decoration: underline;
}

.reveal .more-link:hover {
  text-decoration: none;
}

.reveal iframe {
  width: 100%;
  max-width: 100%;
}

.reveal video {
  width: 100%;
  max-width: 100%;
  height: 100%;
  object-fit: cover;
}

.reveal .responsive-embed {
  background-color: #000;
  background: #ccc url(../img/common/loader.svg) 50% 50% no-repeat;
  background-size: 15rem auto;
}

.reveal.reveal-video {
  background: transparent;
  background-size: contain;
  padding: 0;
}

.reveal.reveal-video .close-button:before, .reveal.reveal-video .close-button:after {
  background-color: #fff;
}

.reveal.reveal-video .modal-body {
  line-height: 0;
}

@media print, screen and (max-width: 39.99875em) {
  .reveal {
    padding-left: 3rem;
    padding-right: 3rem;
  }
}

.section, .s-section {
  width: 100%;
  position: relative;
  padding-top: 10rem;
  padding-bottom: 10rem;
}

@media print, screen and (max-width: 47.99875em) {
  .section, .s-section {
    padding-top: 7rem;
    padding-bottom: 7rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .section, .s-section {
    padding-top: 5rem;
    padding-bottom: 5rem;
  }
}

.section.p-md, .s-section.p-md {
  padding-top: 7rem;
  padding-bottom: 7rem;
}

@media print, screen and (max-width: 39.99875em) {
  .section.p-md, .s-section.p-md {
    padding-top: 5rem;
    padding-bottom: 5rem;
  }
}

.section.m-grey, .s-section.m-grey {
  background-color: #E5E5E5;
}

.section.m-cyan, .s-section.m-cyan {
  background-color: #36D1DC;
}

.section.m-blue, .s-section.m-blue {
  background-color: #0580FF;
}

.section.m-blue:before, .s-section.m-blue:before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(180deg, rgba(0, 58, 145, 0.5) 0%, rgba(5, 128, 255, 0) 100%);
}

.section.m-blue .section-title, .s-section.m-blue .section-title {
  color: #fff;
}

.section.m-wave:after, .s-section.m-wave:after {
  content: '';
  position: absolute;
  top: auto;
  bottom: -1px;
  left: 0;
  width: 100%;
  height: 100%;
  background: url(../img/common/bg__waveSolutions.svg) 100% 100% no-repeat;
  background-size: 100% auto;
  pointer-events: none;
  z-index: 1;
}

@media screen and (max-width: 2000px) and (min-width: 1200px) {
  .section.m-wave:after, .s-section.m-wave:after {
    background-position: 0 100%;
    background-size: 2000px auto;
  }
}

.section.m-primary, .s-section.m-primary {
  background-color: #0580FF;
}

.section.m-primary .section-title, .s-section.m-primary .section-title {
  color: #fff;
}

.section.m-orange, .s-section.m-orange {
  background-color: #ff7a00;
}

.section.m-yellow, .s-section.m-yellow {
  background-color: #FFE800;
}

.section.h100, .s-section.h100 {
  min-height: 100vh;
}

.section.pt-0, .s-section.pt-0 {
  padding-top: 0;
}

.section.pb-0, .s-section.pb-0 {
  padding-bottom: 0;
}

.section.text-white, .s-section.text-white {
  color: #fff;
}

.section.text-white .s-hero__title, .s-section.text-white .s-hero__title {
  color: #fff;
}

.section.text-white .s-hero__txt, .s-section.text-white .s-hero__txt {
  color: #fff;
}

.section-slider, .section-main-slider, .section-hero {
  width: 100%;
}

.section-slider .bg-img, .section-main-slider .bg-img, .section-hero .bg-img {
  background-size: cover;
}

.section-slider .bg-img img, .section-main-slider .bg-img img, .section-hero .bg-img img {
  opacity: 0;
  visibility: hidden;
}

.section-bg {
  position: relative;
}

.section-bg .bg-img {
  background-position: top center;
  background-size: cover;
  background-repeat: no-repeat;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
}

.section-bg .bg-img.bg-parallax {
  transform: scale(1.1);
  background-position: center center;
}

.section-bg .bg-img--fixed {
  background-attachment: fixed;
}

.section-bg .bg-img img {
  opacity: 0;
  visibility: hidden;
}

.section-bg .subtitle {
  color: #fff;
}

.section-bg .container, .section-bg .section-title, .section-bg .row {
  position: relative;
}

.video-wrap.bg-img {
  background-position: top center;
  background-size: cover;
  background-repeat: no-repeat;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
}

.video-wrap.bg-img img {
  opacity: 0;
  visibility: hidden;
}

.s-hero {
  background: #FFE800;
  position: relative;
  width: 100%;
}

.s-hero._header-offset {
  padding-top: 14rem;
}

.s-hero__bg.bg-img {
  background-position: 50% 100%;
  image-rendering: -webkit-optimize-contrast;
}

.s-hero__bg.bg-img._show-tablet {
  display: none;
}

@media screen and (max-width: 1280px) and (min-width: 1000px) {
  .s-hero__bg.bg-img {
    background-size: 1920px auto;
  }
}

@media screen and (max-width: 999px) and (min-width: 320px) {
  .s-hero__bg.bg-img {
    background-size: 115% auto;
    display: none;
  }
  .s-hero__bg.bg-img._show-tablet {
    display: block;
  }
}

.s-hero__content {
  padding-bottom: 14rem;
}

.s-hero__txt {
  max-width: 70rem;
  margin-bottom: 3.4rem;
  font-size: 2.4rem;
  color: #222222;
}

.s-hero__txt p {
  font-size: 100%;
  line-height: 1.33;
}

.s-hero__title {
  letter-spacing: -0.02em;
  margin-bottom: 2rem;
  color: #222222;
}

.s-hero__title span {
  color: #fff;
  text-shadow: 10px 4px 12px rgba(140, 84, 0, 0.6);
}

.s-hero__btn .btn + .btn, .s-hero__btn .btn-flat + .btn, .s-hero__btn .b-callback-form .btn-submit + .btn, .b-callback-form .s-hero__btn .btn-submit + .btn, .s-hero__btn .btn + .btn-flat, .s-hero__btn .btn-flat + .btn-flat, .s-hero__btn .b-callback-form .btn-submit + .btn-flat, .b-callback-form .s-hero__btn .btn-submit + .btn-flat, .s-hero__btn .b-callback-form .btn + .btn-submit, .b-callback-form .s-hero__btn .btn + .btn-submit, .s-hero__btn .b-callback-form .btn-flat + .btn-submit, .b-callback-form .s-hero__btn .btn-flat + .btn-submit, .s-hero__btn .b-callback-form .btn-submit + .btn-submit, .b-callback-form .s-hero__btn .btn-submit + .btn-submit {
  margin-left: 1rem;
}

.s-hero__btn .btn, .s-hero__btn .btn-flat, .s-hero__btn .b-callback-form .btn-submit, .b-callback-form .s-hero__btn .btn-submit {
  margin-bottom: 1rem;
}

@media screen and (min-width: 1200px) and (max-width: 1920px) and (max-height: 960px) {
  .home .s-hero {
    background: transparent;
    min-height: 60rem;
    padding-bottom: 0;
    margin-bottom: -4rem;
    padding-top: 9rem;
  }
}

@media screen and (min-aspect-ratio: 17 / 10) and (min-width: 1200px) {
  .home .s-hero {
    background: transparent;
    min-height: 60rem;
    padding-bottom: 0;
    margin-bottom: -4rem;
    padding-top: 9rem;
  }
}

@media screen and (min-width: 1024px) and (max-width: 1920px) and (max-height: 700px) {
  .home .s-hero {
    background: transparent;
    min-height: 51rem;
    padding-bottom: 0;
    margin-bottom: -6rem;
    padding-top: 9rem;
  }
}

@media screen and (min-width: 1024px) and (max-width: 1920px) and (max-height: 700px) and (max-width: 1600px) {
  .home .s-hero__bg.bg-img {
    background-size: 1600px auto;
  }
}

@media screen and (min-width: 1024px) and (max-width: 1920px) and (max-height: 700px) {
  .home .s-hero__title {
    font-size: 5rem;
  }
  .home .s-hero__txt {
    font-size: 2.2rem;
  }
}

@media screen and (min-width: 1024px) and (max-width: 1920px) and (max-height: 600px) {
  .home .s-hero {
    min-height: 51rem;
    margin-bottom: -7rem;
  }
}

@media screen and (min-width: 1200px) {
  .s-hero {
    min-height: 72rem;
  }
}

@media print, screen and (max-width: 63.99875em) {
  .s-hero__content {
    padding-top: 0;
    padding-bottom: 8rem;
  }
}

@media screen and (max-width: 1280px) and (min-width: 1000px) {
  .s-hero__content {
    padding-top: 0rem;
    padding-bottom: 10rem;
  }
}

@media print, screen and (max-width: 47.99875em) {
  .s-hero__content {
    padding-top: 0;
    padding-bottom: 15rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero__bg.bg-img {
    background-position: 95% 100%;
    background-size: 100rem auto;
  }
  .s-hero__content {
    padding-bottom: 24rem;
  }
  .s-hero__title {
    font-size: 32px;
  }
  .s-hero__btn {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }
  .s-hero__btn .btn, .s-hero__btn .btn-flat, .s-hero__btn .b-callback-form .btn-submit, .b-callback-form .s-hero__btn .btn-submit {
    width: auto;
    margin-left: 0;
  }
  .s-hero__btn .btn + .btn, .s-hero__btn .btn-flat + .btn, .s-hero__btn .b-callback-form .btn-submit + .btn, .b-callback-form .s-hero__btn .btn-submit + .btn, .s-hero__btn .btn + .btn-flat, .s-hero__btn .btn-flat + .btn-flat, .s-hero__btn .b-callback-form .btn-submit + .btn-flat, .b-callback-form .s-hero__btn .btn-submit + .btn-flat, .s-hero__btn .b-callback-form .btn + .btn-submit, .b-callback-form .s-hero__btn .btn + .btn-submit, .s-hero__btn .b-callback-form .btn-flat + .btn-submit, .b-callback-form .s-hero__btn .btn-flat + .btn-submit, .s-hero__btn .b-callback-form .btn-submit + .btn-submit, .b-callback-form .s-hero__btn .btn-submit + .btn-submit {
    margin-left: 0;
  }
}

@media screen and (max-width: 425px) {
  .s-hero._header-offset {
    padding-top: 10rem;
  }
  .s-hero__bg.bg-img {
    background-position: 68% 100%;
    background-size: 80rem auto;
  }
  .s-hero__content {
    padding-bottom: 17rem;
  }
}

.s-hero-solutions:after {
  content: '';
  position: absolute;
  top: auto;
  bottom: -1px;
  left: 0;
  width: 100%;
  height: 100%;
  background: url(../img/common/bg__waveSolutions.svg) 100% 100% no-repeat;
  background-size: 100% auto;
  pointer-events: none;
  z-index: 1;
}

@media screen and (max-width: 2000px) and (min-width: 1200px) {
  .s-hero-solutions:after {
    background-position: 0 100%;
    background-size: 2000px auto;
  }
}

.s-hero-solutions__pic {
  position: absolute;
  bottom: 0;
  right: 0%;
  z-index: 0;
}

.s-hero-solutions__pic img {
  width: 54rem;
}

.s-hero-solutions__content {
  padding-top: 4rem;
}

@media print, screen and (max-width: 63.99875em) {
  .s-hero-solutions__pic {
    text-align: right;
  }
  .s-hero-solutions__pic img {
    width: 70%;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-solutions {
    padding-bottom: 24rem;
  }
  .s-hero-solutions:after {
    background-size: 2000px auto;
    background-position: 51% 100%;
  }
  .s-hero-solutions .bg-img {
    background-position: 30% 0;
  }
  .s-hero-solutions__content {
    padding-top: 6rem;
    padding-bottom: 10rem;
    padding-right: 14%;
  }
  .s-hero-solutions .s-hero__txt {
    padding-right: 20%;
  }
  .s-hero-solutions__pic {
    right: -12%;
    max-width: 100%;
  }
}

@media screen and (max-width: 425px) {
  .s-hero-solutions {
    padding-bottom: 26rem;
  }
  .s-hero-solutions__content {
    padding-bottom: 0rem;
    padding-right: 20px;
  }
  .s-hero-solutions .s-hero__txt, .s-hero-solutions__txt {
    padding-right: 0;
  }
}

.s-hero-content {
  min-height: 55rem;
  background-color: #E5E5E5;
}

.s-hero-content.m-shadow:after {
  background: url(../img/common/bg__waveSolutions-shadow.svg) 100% 100% no-repeat;
  background-size: 100% auto;
}

@media screen and (max-width: 2000px) and (min-width: 1200px) {
  .s-hero-content.m-shadow:after {
    background-position: 0 101%;
    background-size: 2000px auto;
  }
}

.s-hero-content.m-clean:after {
  display: none;
}

.s-hero-content:after {
  content: '';
  position: absolute;
  top: auto;
  bottom: -1px;
  left: 0;
  width: 100%;
  height: 100%;
  background: url(../img/common/bg__waveSolutions.svg) 100% 100% no-repeat;
  background-size: 100% auto;
  pointer-events: none;
  z-index: 1;
}

@media screen and (max-width: 2000px) and (min-width: 1200px) {
  .s-hero-content:after {
    background-position: 0 100%;
    background-size: 2000px auto;
  }
}

.s-hero-content .bg-img {
  overflow: hidden;
}

.s-hero-content .bg-img:before {
  content: '';
  z-index: 1;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 12rem;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 100%);
}

.s-hero-content .bg-img:after {
  content: '';
  position: absolute;
  top: auto;
  bottom: -1px;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(34, 34, 34, 0.6);
}

.s-hero-blog {
  display: flex;
  align-items: center;
}

.s-hero-blog:after {
  display: none;
}

.s-hero-blog .s-hero-ai__content {
  padding-bottom: 0;
}

.s-ai-personal {
  padding-top: 15rem;
  padding-bottom: 20%;
  position: relative;
  z-index: 1;
  min-height: 89rem;
}

.s-ai-personal__info {
  padding-left: 30px;
}

.s-ai-personal__bg {
  z-index: -1;
}

.s-ai-personal__bg.bg-img {
  background-position: 50% 100%;
  background-size: 2000px auto;
}

@media screen and (min-width: 2000px) {
  .s-ai-personal__bg.bg-img {
    background-size: 100% auto;
    background-position: 100% 100%;
  }
}

.s-ai-personal__title {
  margin-bottom: 4rem;
}

.s-ai-personal__title:before {
  content: '';
  width: 8rem;
  height: 8rem;
  display: block;
  background: url(../img/icon/magic.svg) 0 0 no-repeat;
  background-size: contain;
  position: relative;
  margin-left: -4rem;
  margin-bottom: -1rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-ai-personal__title:before {
    width: 5rem;
    height: 5rem;
    margin-left: -2rem;
  }
}

.s-ai-personal__title span {
  display: block;
}

.s-ai-personal__txt p {
  font-size: 100%;
  line-height: 1.5;
}

.s-ai-personal__btn {
  margin-top: 5rem;
}

@media print, screen and (max-width: 74.99875em) {
  .s-ai-personal {
    min-height: 75vw;
  }
}

@media print, screen and (max-width: 63.99875em) {
  .s-ai-personal {
    padding-top: 3rem;
  }
  .s-ai-personal .container {
    padding-top: 20rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-ai-personal {
    padding-top: 4rem;
    padding-left: 10px;
    padding-bottom: 0;
  }
  .s-ai-personal__bg.bg-img {
    background-position: 100% 0%;
    background-size: 100% auto;
  }
  .s-ai-personal__title {
    margin-top: 6rem;
    margin-bottom: 20vw;
  }
  .s-ai-personal__txt {
    text-align: center;
  }
  .s-ai-personal__btn {
    text-align: center;
  }
  .s-ai-personal__info {
    padding-left: 20px;
  }
}

@media screen and (max-width: 500px) {
  .s-ai-personal__title {
    margin-bottom: 13rem;
    margin-bottom: 22rem;
    margin-top: 0;
  }
  .s-ai-personal .title-1, .s-ai-personal .s-hero__title {
    font-size: 26px;
  }
  .s-ai-personal__bg.bg-img {
    background-position: 50% 0%;
    background-size: 500px auto;
  }
}

.s-hero-industries {
  z-index: 5;
}

.s-hero-industries__bg:before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 100%);
  height: 12rem;
}

.s-hero-industries__bg.bg-img {
  background-position: 50% 100%;
  background-size: cover;
}

@media screen and (max-width: 999px) and (min-width: 320px) {
  .s-hero-industries__bg.bg-img {
    background-size: cover;
  }
}

.s-hero-ai {
  background: #F1F1F1;
  position: relative;
  min-height: 52rem;
}

.s-hero-ai.m-shadow:after {
  background: url(../img/common/bg__waveSolutions-shadow.svg) 100% 100% no-repeat;
  background-size: 100% auto;
}

@media screen and (max-width: 2000px) and (min-width: 1200px) {
  .s-hero-ai.m-shadow:after {
    background-position: 0 101%;
    background-size: 2000px auto;
  }
}

.s-hero-ai:after {
  content: '';
  position: absolute;
  top: auto;
  bottom: -1px;
  left: 0;
  width: 100%;
  height: 100%;
  background: url(../img/common/bg__waveSolutions.svg) 100% 100% no-repeat;
  background-size: 100% auto;
  pointer-events: none;
  z-index: 1;
}

@media screen and (max-width: 2000px) and (min-width: 1200px) {
  .s-hero-ai:after {
    background-position: 0 100%;
    background-size: 2000px auto;
  }
}

.s-hero-ai__content {
  padding-top: 6rem;
  padding-bottom: 6rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-ai {
    min-height: 20vh;
  }
  .s-hero-ai__content {
    padding-bottom: 0;
  }
}

.s-callback-form {
  padding-bottom: 5rem;
  min-height: 46rem;
}

.s-callback-form .form-title {
  padding-left: .5rem;
  padding-right: .5rem;
  padding-top: 5rem;
  margin-bottom: 2rem;
  font-weight: 700;
  color: #222222;
}

.s-callback-form__bg.bg-img {
  background-position: 0% 101%;
  background-size: 192rem auto;
}

@media screen and (min-width: 1200px) and (max-width: 2000px) {
  .s-callback-form__bg.bg-img {
    background-size: 2000px auto;
  }
}

@media screen and (min-width: 1600px) and (max-width: 2000px) {
  .s-callback-form__bg.bg-img {
    background-size: 2100px auto;
  }
}

.s-callback-form__content {
  padding-top: 17%;
}

.s-callback-form textarea {
  padding-top: 1rem;
  min-height: 14rem;
  margin-bottom: 0;
  border: 1px solid #CCCCCC;
}

.s-callback-form textarea::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

.s-callback-form textarea:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

.s-callback-form textarea::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

.s-callback-form textarea:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

.s-callback-form .b-form-list {
  font-size: 0;
  margin-top: -.5rem;
  margin-bottom: -.5rem;
  margin-right: .5rem;
}

.s-callback-form .b-form-list input:not([type=submit]), .s-callback-form .b-form-list textarea {
  margin-bottom: 0;
  border: 1px solid #CCCCCC;
}

.s-callback-form .b-form-list input:not([type=submit]):focus, .s-callback-form .b-form-list input:not([type=submit]):active, .s-callback-form .b-form-list textarea:focus, .s-callback-form .b-form-list textarea:active {
  border-color: #0580FF;
}

.s-callback-form .b-form-list input:not([type=submit])::-webkit-input-placeholder, .s-callback-form .b-form-list textarea::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

.s-callback-form .b-form-list input:not([type=submit]):-moz-placeholder, .s-callback-form .b-form-list textarea:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

.s-callback-form .b-form-list input:not([type=submit])::-moz-placeholder, .s-callback-form .b-form-list textarea::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

.s-callback-form .b-form-list input:not([type=submit]):-ms-input-placeholder, .s-callback-form .b-form-list textarea:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

.s-callback-form .b-form-list .has-error input:not([type=submit]), .s-callback-form .b-form-list .has-error textarea {
  background-color: #FFE7E7;
  border: 1px solid #FF0000;
}

.s-callback-form .b-form-list li {
  padding: .5rem;
  width: 50%;
  display: inline-block;
}

.s-callback-form .btn-submit {
  min-width: 18rem;
  background: #FFF166;
  border-color: #FFF166;
  color: rgba(34, 34, 34, 0.5);
  box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.2);
}

.s-callback-form .btn-submit:hover, .s-callback-form .btn-submit:focus {
  background: #0580FF;
  border-color: #0580FF;
  color: #fff;
  opacity: 1;
}

.s-callback-form .btn-submit.btn, .s-callback-form .btn-submit.btn-flat, .s-callback-form .b-callback-form .btn-submit, .b-callback-form .s-callback-form .btn-submit {
  background: #0580FF;
  color: #fff;
  border-color: #0580FF;
}

.s-callback-form .btn-submit.btn:hover, .s-callback-form .btn-submit.btn-flat:hover, .s-callback-form .b-callback-form .btn-submit:hover, .b-callback-form .s-callback-form .btn-submit:hover {
  opacity: .7;
}

.s-callback-form .has-error input, .s-callback-form .has-error textarea {
  background-color: #FFE7E7;
  border: 1px solid #FF0000;
}

.s-callback-form .form-submit-message {
  max-width: 28rem;
  font-size: 2.4rem;
  line-height: 1.25;
}

.s-callback-form .form-submit-message p {
  font-size: 100%;
}

.s-callback-form .form-submit-message__title {
  font-size: 100%;
  font-weight: bold;
}

.s-callback-form .form-submit-message__txt {
  line-height: 1.25;
}

.s-callback-form .error-message {
  padding-left: .5rem;
}

@media print, screen and (max-width: 63.99875em) {
  .s-callback-form__bg.bg-img {
    background-position: 0 100%;
    background-size: 100% auto;
  }
}

@media print, screen and (max-width: 47.99875em) {
  .s-callback-form {
    background: #FFE800;
    padding-bottom: 6rem;
    min-height: 0;
  }
  .s-callback-form__bg.bg-img {
    background-position: 0 0%;
    background-size: 100% auto;
    background-color: #FFE800;
  }
  .s-callback-form__content {
    padding-top: 6rem;
  }
}

@media print, screen and (max-width: 39.99875em) {

  .s-callback-form__bg.bg-img {
    background-position: 0 0;
    background-size: 100% auto;
  }
  .s-callback-form .text-right {
    text-align: center;
  }
  .s-callback-form form .column {
    text-align: center;
  }
  .s-callback-form form .shrink.small-12 {
    flex: 0 0 100%;
  }
  .s-callback-form .form-title {
    padding-top: 0;
    padding-left: 0rem;
  }
  .s-callback-form .b-form-list {
    margin-left: -.5rem;
    margin-right: -.5rem;
    margin-bottom: .5rem;
  }
}

@media screen and (max-width: 425px) {
  .s-callback-form .b-form-list li {
    width: 100%;
  }
  .s-callback-form .ml-auto, .s-callback-form .mr-auto {
    margin-left: auto;
    margin-right: auto;
  }
  .s-callback-form .error-message {
    margin-bottom: 1.5rem;
  }
}

.s-ai-about {
  padding-top: 12rem;
  padding-bottom: 12rem;
  position: relative;
  z-index: 1;
}

.s-ai-about:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0%;
  left: 0%;
  z-index: -1;
  pointer-events: none;
  background: url(../img/common/bg__line2.svg) 55% 0 no-repeat;
  background-size: auto 100%;
}

@media screen and (min-width: 1600px) {
  .s-ai-about:before {
    background-position: 10% 0;
  }
}

@media screen and (max-width: 1199px) {
  .s-ai-about:before {
    display: none;
  }
}

.s-ai-about__row {
  align-items: center;
  padding-top: 6rem;
}

.s-ai-about__pic img, .s-ai-about__pic svg {
  max-width: 66rem;
}

.s-ai-about__info {
  max-width: 54rem;
}

.s-ai-about__title {
  font-weight: normal;
  color: #222222;
}

.s-ai-about__title span, .s-ai-about__title strong {
  font-weight: 700;
}

.s-ai-about__txt p {
  line-height: 1.5;
}

@media print, screen and (max-width: 63.99875em) {
  .s-ai-about {
    padding-top: 6rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-ai-about {
    padding-top: 0;
  }
  .s-ai-about__row {
    text-align: center;
  }
  .s-ai-about__row:nth-child(2n) .s-ai-about__pic {
    order: -1;
  }
  .s-ai-about__info {
    margin-left: auto;
    margin-right: auto;
  }
}

.s-ai-cta [class^="title-"] {
  color: #222222;
}

@media print, screen and (min-width: 40em) {
  .s-ai-cta__info {
    padding-left: 3rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-ai-cta__btn {
    text-align: center;
  }
  .s-ai-cta__info {
    margin-bottom: -2rem;
  }
}

.s-ai-products {
  padding-top: 8.2rem;
  padding-bottom: 8.2rem;
  color: #000;
  z-index: 5;
  margin-bottom: -12%;
}

.s-ai-products:before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  height: 50%;
  width: 100%;
  background-color: #0094ff;
  border-radius: 40px;
}

.s-ai-products:after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  background: url(../img/common/bg__wave.svg) 50% 100% no-repeat;
  background-size: 192rem auto;
  pointer-events: none;
}

.s-ai-products .container {
  position: relative;
  z-index: 1;
}

.s-ai-products + .section, .s-ai-products + section {
  padding-top: 12%;
}

.s-ai-products__info {
  padding-top: 8rem;
}

@media print, screen and (max-width: 74.99875em) {
  .s-ai-products {
    padding-bottom: 18rem;
  }
  .s-ai-products:after {
    background-position: 0 100%;
  }
}

@media screen and (min-width: 1000px) and (max-width: 1024px) {
  .s-ai-products {
    padding-bottom: 4.5rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-ai-products {
    padding-bottom: 5rem;
  }
  .s-ai-products:before {
    height: 80%;
  }
  .s-ai-products:after {
    background-size: 1000px auto;
    background-position: 44% 100%;
  }
  .s-ai-products__info {
    padding-top: 3rem;
  }
}

@media screen and (max-width: 425px) {
  .s-ai-products {
    padding-bottom: 5rem;
  }
  .s-ai-products:after {
    background-size: 1000px auto;
    background-position: 44% 100%;
  }
}

.s-review__video {
  padding-bottom: 7rem;
}

.s-review__video-wrp {
  max-width: 70rem;
  margin-left: auto;
  margin-right: auto;
}

.s-review__video .b-home-video {
  margin-bottom: 4.5rem;
  max-width: 70rem;
  margin-left: auto;
  margin-right: auto;
}

.s-review__video .b-home-video .btn-play {
  font-size: .6rem;
}

.s-review__video .b-home-video .responsive-embed {
  border-radius: 2rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-review {
    padding-top: 8rem;
  }
  .s-review__video {
    padding-bottom: 4rem;
  }
  .s-review__video .b-home-video {
    margin-bottom: 2rem;
  }
  .s-review__video .b-home-video__txt br {
    display: none;
  }
  .s-review .slick-slider .b-box-review {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }
}

.s-solutions-article + .s-solutions-article {
  margin-top: 11.7rem;
}

.s-solutions-article__title {
  margin-bottom: 3rem;
  color: #222222;
}

.s-solutions-article__pic {
  margin-top: 5.4rem;
}

.s-solutions-article__tab-nav {
  position: relative;
  margin-top: 9rem;
  margin-bottom: 9rem;
  margin-left: auto;
  margin-right: auto;
}

.s-solutions-article__tab-nav:after {
  top: 100%;
  position: absolute;
  left: 50%;
  margin-left: -60rem;
  display: block;
  border-bottom: 1px solid #AAAAAA;
  width: 120rem;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav li, .s-solutions-article__tab-nav .tabs-nav li {
  padding-left: 2.6rem;
  padding-right: 2.6rem;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav li:hover .b-tabs__link, .s-solutions-article__tab-nav .tabs-nav li:hover .b-tabs__link {
  color: #fff;
  text-decoration: underline;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav li:hover .b-tabs__link:after, .s-solutions-article__tab-nav .tabs-nav li:hover .b-tabs__link:after {
  background: rgba(0, 0, 0, 0);
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav li:hover .b-tabs__link span, .s-solutions-article__tab-nav .tabs-nav li:hover .b-tabs__link span {
  opacity: .7;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav .is-active .b-tabs__link, .s-solutions-article__tab-nav .tabs-nav .is-active .b-tabs__link {
  color: #fff;
  text-decoration: underline;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav .is-active .b-tabs__link:after, .s-solutions-article__tab-nav .tabs-nav .is-active .b-tabs__link:after {
  background: rgba(0, 0, 0, 0);
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav .b-tabs__link, .s-solutions-article__tab-nav .tabs-nav .b-tabs__link {
  width: 20rem;
  height: 20rem;
  color: #fff;
  text-decoration: underline;
  border-radius: 50%;
  overflow: hidden;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav .b-tabs__link:before, .s-solutions-article__tab-nav .tabs-nav .b-tabs__link:before {
  display: none;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav .b-tabs__link span, .s-solutions-article__tab-nav .tabs-nav .b-tabs__link span {
  transition: .3s ease opacity;
}

@media screen and (max-width: 1023px) {
  .s-solutions-article__tab-nav ul {
    margin: -1.5rem;
  }
  .s-solutions-article__tab-nav li {
    padding: 1.5rem;
    flex: 0 0 50%;
    max-width: 50%;
    min-width: 24rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-solutions-article__tab-nav li {
    text-align: center;
    min-width: 50%;
    width: 50%;
    flex: 0 0 50%;
    padding: 0;
  }
  .s-solutions-article__tab-nav li:not(last-of-type) {
    margin-bottom: 3rem;
  }
  .s-solutions-article__tab-nav .b-tabs__link {
    margin-left: auto;
    margin-right: auto;
  }
}

@media screen and (max-width: 374px) {
  .s-solutions-article__tab-nav li {
    min-width: 100%;
    width: 100%;
    flex: 0 0 100%;
  }
}

.s-solutions-article__tab-body:not(.tab-content) .b-tab + .b-tab {
  padding-top: 10rem;
}

.s-solutions-article__tab-body:not(.tab-content) .b-tab {
  padding-top: 10rem;
}

.s-solutions-article__tab-body .bg-title {
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin-bottom: 6rem;
  padding: 4rem;
  letter-spacing: -0.02em;
  color: #222222;
  background-size: cover;
  background-position: 50% 50%;
  min-height: 20rem;
}

.s-solutions-article__tab-body .bg-title [class*="title"] {
  color: #222222;
  text-transform: uppercase;
}

.s-solutions-article__txt-title, .s-solutions-article h4, .s-solutions-article h5 {
  font-size: 2.4rem;
  color: #222222;
  font-weight: 700;
}

.s-solutions-article__txt-group + .s-solutions-article__txt-group {
  margin-top: 5rem;
}

.s-solutions-article__txt {
  font-size: 1.8rem;
}

.s-solutions-article__txt p {
  font-size: 100%;
  line-height: 1.67;
}

.s-solutions-article__txt ul {
  font-size: 100%;
}

.s-solutions-article__txt ul li {
  margin-top: .5rem;
  margin-bottom: .5rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-solutions-article .row:not(.row--list) .column.small-12 + .column.small-12 {
    margin-top: 5rem;
  }
  .s-solutions-article__pic {
    margin-left: -20px;
    margin-right: -20px;
  }
  .s-solutions-article__tab-body .bg-title {
    padding: 20px;
    min-height: 80px;
    margin-left: -20px;
    margin-right: -20px;
  }
  .s-solutions-article__tab-body .bg-title [class^="title"] {
    margin-bottom: 0;
  }
  .s-solutions-article__tab-body .bg-title .title-2, .s-solutions-article__tab-body .bg-title .section-title {
    font-size: 25px;
  }
  .s-solutions-article__txt {
    font-size: 2.4rem;
  }
}

.article .grve-text-wrp {
  margin-top: 5rem;
}

.grve-text-wrp + .grve-text-wrp {
  margin-top: 5rem;
}

.s-company-article + .s-solutions-article {
  margin-top: 11.7rem;
}

.s-company-article__title {
  margin-bottom: 3rem;
  color: #222222;
}

.s-company-article__pic {
  margin-top: 5.4rem;
}

.s-company-article__txt {
  font-size: 2.2rem;
}

.s-company-article__txt p {
  font-size: 100%;
  line-height: 1.36;
}

@media print, screen and (max-width: 39.99875em) {
  .s-company-article__txt {
    font-size: 2.4rem;
  }
}

.s-content-partners p {
  line-height: 1.5;
}

@media print, screen and (max-width: 39.99875em) {
  .s-content-partners p {
    text-align: center;
  }
}

.s-company-about {
  padding-top: 18%;
  padding-bottom: 10.5rem;
}

.s-company-about__info {
  max-width: 38.5rem;
  color: #222222;
}

@media print, screen and (max-width: 89.99875em) {
  .s-company-about {
    padding-bottom: 10.5rem;
  }
}

@media print, screen and (max-width: 47.99875em) {
  .s-company-about {
    padding-top: 25%;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-company-about {
    padding-top: 30%;
    padding-bottom: 15%;
    min-height: 55rem;
  }
  .s-company-about .bg-img {
    background-position: 50% 0%;
    background-size: 1000px auto;
  }
  .s-company-about .container {
    padding-left: 20px;
    padding-right: 20px;
  }
  .s-company-about__info {
    max-width: 22.5rem;
  }
}

.s-hero-company {
  overflow: hidden;
  height: 0;
  padding-bottom: 48.25%;
}

.s-hero-company .video-wrp:before {
  content: '';
  z-index: 1;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 12rem;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 100%);
}

.s-hero-company > iframe, .s-hero-company > video {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.s-hero-company .bgVideo {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.s-hero-company .bgVideo iframe {
  object-fit: cover;
}

.s-hero-company .bgVideo .ytplayer-container {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  position: absolute;
  top: 0;
  width: 100%;
  height: 100%;
}

.s-hero-company2 {
  padding-bottom: 0;
  line-height: 1;
  margin-bottom: 5rem;
}

.s-hero-company2 .videoHero {
  width: 100%;
  position: relative;
  line-height: 0;
  box-shadow: 0px 10px 30px rgba(0, 0, 0, 0.4);
}

.s-hero-company2 .video-wrp {
  margin-bottom: -5rem;
  background: #fff;
  position: relative;
  z-index: 5;
  line-height: 0;
}

.s-hero-company2 .s-hero-ai__content, .s-hero-company2__content {
  padding-bottom: 0;
  padding-top: 0;
}

@media print, screen and (max-width: 47.99875em) {
  .s-hero-company2 .s-hero-ai__content, .s-hero-company2__content {
    padding-top: 6rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-company2 {
    padding: 0;
    margin-bottom: 0;
  }
  .s-hero-company2 .s-hero-ai__content {
    padding: 0;
  }
  .s-hero-company2 .video-wrp {
    box-shadow: none;
    margin-bottom: 0;
    padding: 0;
  }
  .s-hero-company2 .video-wrp:before {
    content: '';
    z-index: 1;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 12rem;
    background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 100%);
  }
  .s-hero-company2 .video-wrp video {
    box-shadow: none;
    min-height: 180px;
    object-fit: cover;
  }
}

.s-request-demo {
  background: #fff;
}

.s-request-demo.m-fixed {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  z-index: 98;
  background: #fff;
  padding: 1rem 20px;
  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.25);
}

@media print, screen and (max-width: 39.99875em) {
  .s-request-demo:not(.hide) ~ .s-gartner.m-fixed {
    bottom: 6rem;
  }
}

.s-gartner {
  transition: transform .4s ease;
}

.s-gartner.is-hide {
  transform: translateX(100%);
  visibility: hidden;
  pointer-events: none;
}

.s-gartner.m-fixed {
  position: fixed;
  bottom: 2rem;
  right: 0;
  width: auto;
  z-index: 97;
  background: #fff;
  box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.25);
}

.s-gartner__wrp {
  width: 100%;
  display: flex;
  flex-direction: column;
  position: relative;
  max-width: 10rem;
}

.s-gartner__logo {
  flex: 0 0 10rem;
  width: 10rem;
  background: #182a54;
  line-height: 0;
}

.s-gartner__logo img {
  max-width: 100%;
  width: 100%;
}

.s-gartner__title {
  flex: 0 0 100%;
  font-family: "Roboto", Tahoma, Arial, Helvetica, sans-serif;
  padding: .6rem .3rem .9rem .9rem;
  font-size: 12px;
  font-weight: 500;
}

@media print, screen and (max-width: 39.99875em) {
  .s-gartner.m-fixed {
    bottom: 0;
    right: auto;
    left: 20px;
  }
  .s-gartner__wrp {
    flex-direction: row;
    max-width: 185px;
    max-width: 24rem;
  }
  .s-gartner__logo {
    flex: 0 0 90px;
    max-width: 90px;
    flex-grow: 1;
  }
  .s-gartner__title {
    background: #fff;
    padding: 15px 5px 15px 16px;
    flex: 0 1 auto;
    font-size: 14px !important;
    font-size: 1.75rem !important;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .has-show-gartner .b-footer {
    padding-bottom: 12rem;
  }
}

.s-content-ai__about p {
  line-height: 1.67;
}

.d-flex {
  display: flex;
  align-items: center;
}

.s-cookies.m-fixed {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  z-index: 99;
  background: #fff;
  padding: 1.5rem 4rem;
  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.25);
}

.s-cookies__info {
  padding-top: 1rem;
  padding-bottom: 1rem;
}

.s-cookies .btn, .s-cookies .btn-flat, .s-cookies .b-callback-form .btn-submit, .b-callback-form .s-cookies .btn-submit {
  min-width: 9rem;
  margin-left: 3rem;
}

.s-cookies .close-button {
  position: absolute;
  right: 2rem;
  top: 1rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-cookies {
    flex-wrap: wrap;
  }
  .s-cookies.m-fixed {
    padding-left: 20px;
    padding-right: 20px;
  }
  .s-cookies .btn, .s-cookies .btn-flat, .s-cookies .b-callback-form .btn-submit, .b-callback-form .s-cookies .btn-submit {
    margin-left: 0;
  }
}

.b-socials__title {
  display: inline-block;
  vertical-align: middle;
  margin-right: 10px;
  color: #888888;
  font-size: 16px;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

.b-socials__title p {
  font-size: 100%;
  color: currentColor;
}

.b-socials__list {
  display: inline-block;
  vertical-align: middle;
  list-style: none;
  font-size: 0;
  margin: 0;
  line-height: 1;
}

.b-socials__list li {
  display: inline-block;
  vertical-align: middle;
  line-height: 1;
  padding-left: 10px;
  padding-right: 10px;
}

.b-socials__list li a {
  display: block;
}

.b-socials__list li a:hover {
  opacity: .7;
}

.s-content-footer {
  width: 100%;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -moz-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
}

.s-content-footer .b-socials {
  margin-left: auto;
}

.page-vacancy #grve-content .s-content-footer .b-vacancy-page__back-link {
  margin-bottom: 0;
}

@media screen and (max-width: 1024px) {
  .s-content-footer {
    padding-right: 25px;
    padding-left: 25px;
  }
}

@media screen and (max-width: 640px) {
  .s-content-footer {
    /* Safari - Pre Flex Flow */
    -webkit-flex-direction: row;
    -webkit-flex-wrap: wrap;
    /* MS - Pre Flex Flow */
    -ms-flex-direction: row;
    -ms-flex-wrap: wrap;
    /* Moz - Pre Flex Flow */
    -moz-flex-direction: row;
    -moz-flex-wrap: wrap;
    /* Flex Flow  */
    -webkit-flex-flow: row wrap;
    -moz-flex-flow: row wrap;
    -ms-flex-flow: row wrap;
    -webkit-flex-flow: row wrap;
    flex-flow: row wrap;
    padding-left: 0;
    padding-right: 0;
  }
  .s-content-footer .b-socials {
    width: 100%;
    margin-top: 30px;
    margin-left: 0;
    margin-right: auto;
  }
  .s-content-footer .b-socials li {
    padding-top: 10px;
    padding-bottom: 10px;
  }
}

.s-hero-request {
  position: relative;
  z-index: 5;
  padding-bottom: 20%;
  min-height: 56vh;
}

.s-hero-request .s-hero__txt {
  font-size: 2.2rem;
  max-width: 63rem;
}

.s-hero-request .s-hero__btn .btn, .s-hero-request .s-hero__btn .btn-flat, .s-hero-request .s-hero__btn .b-callback-form .btn-submit, .b-callback-form .s-hero-request .s-hero__btn .btn-submit {
  min-width: 16rem;
}

.s-hero-request .s-hero__title {
  color: #222;
}

.s-hero-request .s-hero__title.m-small {
  font-size: 5rem;
  letter-spacing: -0.02em;
  margin-bottom: 0.5rem;
}

.s-hero-request__content, .s-hero-request .container {
  position: relative;
  padding-top: 6rem;
}

.s-hero-request .bg-img {
  background-position: 40% 100%;
  background-repeat: no-repeat;
}

@media screen and (max-width: 999px) {
  .s-hero-request .bg-img {
    background-position: 50% 100%;
  }
}

@media screen and (max-width: 700px) {
  .s-hero-request .bg-img {
    background-position: 60% 100%;
  }
}

@media screen and (max-width: 700px) {
  .s-hero-request {
    min-height: 600px;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-request {
    min-height: 360px;
  }
  .s-hero-request .bg-img {
    background-size: 1400px auto;
    background-position: 62% 100%;
  }
  .s-hero-request .s-hero__title {
    max-width: 200px;
  }
}

.s-hero-request--landing {
  padding-bottom: 12%;
  margin-bottom: 10rem;
  background: #0094ff;
}

.s-hero-request--landing .bg-img {
  top: -1px;
  bottom: -1px;
}

@media screen and (max-width: 999px) {
  .s-hero-request--landing {
    padding-bottom: 14%;
  }
  .s-hero-request--landing .bg-img {
    background-position: 66% 100%;
    background-size: 130% auto;
  }
  .s-hero-request--landing .s-hero__txt {
    width: 80%;
    font-size: 2rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-request--landing {
    padding-bottom: 320px;
  }
  .s-hero-request--landing .bg-img {
    background-position: 80% 100%;
    background-size: 1000px auto;
  }
  .s-hero-request--landing .s-hero__title {
    max-width: 100%;
  }
  .s-hero-request--landing .s-hero__txt {
    width: 100%;
  }
  .s-hero-request--landing .s-hero__txt p br {
    display: none;
  }
}

.s-form {
  padding-top: 0;
  padding-bottom: 0;
  min-height: 40vh;
  min-height: calc(44vh - 5.5rem);
  background-color: #FFE800;
}

.s-form.s-form--request .b-form-list {
  margin-bottom: 0;
}

@media print, screen and (max-width: 39.99875em) {
  .s-form.s-form--request .b-form-list {
    margin-left: -.5rem;
    margin-right: -.5rem;
    margin-bottom: .5rem;
  }
}

.s-form.s-form--landing {
  padding-bottom: 7rem;
  min-height: 40vh;
}

.s-form.s-form--landing .container {
  top: 0;
  margin-top: -10rem;
}

.s-form.s-form--landing .b-form-list {
  font-size: 0;
  margin: -.5rem;
}

.s-form.s-form--landing .b-form-list li {
  width: 100%;
}

.s-form.s-form--landing .b-form-list li:nth-child(1) {
  width: 50%;
}

.s-form.s-form--landing .b-form-list li:nth-child(2) {
  width: 50%;
}

.s-form.s-form--landing .s-form__partners > .row {
  max-width: 70rem;
}

.s-form.s-form--landing textarea, .s-form.s-form--landing input {
  border-radius: 3px;
}

@media print, screen and (min-width: 48em) {
  .s-form.s-form--landing textarea {
    height: 100%;
  }
}

.s-form.s-form--landing .error-message {
  padding-left: 0;
}

.s-form.s-form--landing .row .row:not(.small-collapse) {
  margin-left: -1.5rem;
  margin-right: -1.5rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-form.s-form--landing .container {
    margin-top: -3rem;
  }
  .s-form.s-form--landing p br {
    display: none;
  }
  .s-form.s-form--landing .text--large, .s-form.s-form--landing .s-content-partners p, .s-content-partners .s-form.s-form--landing p, .s-form.s-form--landing .s-content-post .article p, .s-content-post .article .s-form.s-form--landing p, .s-form.s-form--landing .s-content-post .article ul, .s-content-post .article .s-form.s-form--landing ul, .s-form.s-form--landing .b-report__info p, .b-report__info .s-form.s-form--landing p {
    font-size: 2.2rem;
  }
  .s-form.s-form--landing .b-ai-partners__img {
    padding: 1rem;
  }
  .s-form.s-form--landing .b-ai-partners__img:first-child img {
    max-width: 7.7rem;
  }
  .s-form.s-form--landing .b-ai-partners__img:nth-child(5) img {
    max-width: 7rem;
  }
  .s-form.s-form--landing .b-ai-partners__img img {
    margin-top: 1rem;
    max-height: 5rem;
    min-height: 3.9rem;
    max-width: 5.3rem;
  }
}

.s-form.m-white {
  background: #fff;
}

.s-form .container {
  position: relative;
  z-index: 6;
  top: -7rem;
}

.s-form textarea {
  padding-top: 1rem;
  min-height: 14rem;
  margin-bottom: 0;
  border: 1px solid #CCCCCC;
}

.s-form textarea::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

.s-form textarea:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

.s-form textarea::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

.s-form textarea:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

.s-form .b-form-list {
  font-size: 0;
  margin-top: -.5rem;
  margin-bottom: 2rem;
  margin-right: .5rem;
}

.s-form .b-form-list input:not([type=submit]), .s-form .b-form-list textarea {
  margin-bottom: 0;
  border: 1px solid #CCCCCC;
}

.s-form .b-form-list input:not([type=submit]):focus, .s-form .b-form-list input:not([type=submit]):active, .s-form .b-form-list textarea:focus, .s-form .b-form-list textarea:active {
  border-color: #0580FF;
}

.s-form .b-form-list input:not([type=submit])::-webkit-input-placeholder, .s-form .b-form-list textarea::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

.s-form .b-form-list input:not([type=submit]):-moz-placeholder, .s-form .b-form-list textarea:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

.s-form .b-form-list input:not([type=submit])::-moz-placeholder, .s-form .b-form-list textarea::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

.s-form .b-form-list input:not([type=submit]):-ms-input-placeholder, .s-form .b-form-list textarea:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

.s-form .b-form-list .has-error input:not([type=submit]), .s-form .b-form-list .has-error textarea {
  background-color: #FFE7E7;
  border: 1px solid #FF0000;
}

.s-form .b-form-list li {
  padding: .5rem;
  width: 50%;
  display: inline-block;
}

.s-form .b-form-list li.accept-policy {
  width: 100%;
}

.s-form .btn-submit {
  min-width: 18rem;
  background: #FFF166;
  border-color: #FFF166;
  color: rgba(34, 34, 34, 0.5);
  box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.2);
}

.s-form .btn-submit:hover, .s-form .btn-submit:focus {
  background: #0580FF;
  border-color: #0580FF;
  color: #fff;
  opacity: 1;
}

.s-form .btn-submit.btn, .s-form .btn-submit.btn-flat, .s-form .b-callback-form .btn-submit, .b-callback-form .s-form .btn-submit {
  background: #0580FF;
  color: #fff;
  border-color: #0580FF;
}

.s-form .btn-submit.btn:hover, .s-form .btn-submit.btn-flat:hover, .s-form .b-callback-form .btn-submit:hover, .b-callback-form .s-form .btn-submit:hover {
  opacity: .7;
}

.s-form .has-error input, .s-form .has-error textarea {
  background-color: #FFE7E7;
  border: 1px solid #FF0000;
}

.s-form .form-submit-message {
  max-width: 28rem;
  font-size: 2.4rem;
  line-height: 1.25;
}

.s-form .form-submit-message p {
  font-size: 100%;
}

.s-form .form-submit-message__title {
  font-size: 100%;
  font-weight: bold;
}

.s-form .form-submit-message__txt {
  line-height: 1.25;
}

.s-form .error-message {
  padding-left: .5rem;
}

.s-form__txt p {
  font-size: 100%;
}

@media print, screen and (max-width: 63.99875em) {
  .s-form .container {
    top: 0;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-form__txt {
    text-align: center;
    font-size: 20px;
  }
  .s-form__txt p {
    font-size: 100%;
  }
  .s-form .container {
    top: -8rem;
  }
  .s-form .text-right {
    text-align: left;
  }
}

@media screen and (max-width: 425px) {
  .s-form .b-form-list {
    margin-left: -.5rem;
    margin-right: -.5rem;
  }
  .s-form .b-form-list li {
    width: 100%;
  }
}

.s-hero-ai:not(.text-white) [class^="title-"] {
  color: #222222;
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-ai:not(.s-hero-industries):not(.s-hero-content) {
    padding-bottom: 24rem;
  }
  .s-hero-ai:not(.s-hero-industries):not(.s-hero-content):after {
    background-size: 1400px auto;
    background-position: 56% 100%;
  }
  .s-hero-ai:not(.s-hero-industries):not(.s-hero-content) .s-hero-ai__bg {
    background-position: 75% 100%;
    background-size: 1000px auto;
    background-blend-mode: multiply;
    background-color: #F1F1F1;
  }
  .s-hero-ai .title-1, .s-hero-ai .s-hero__title {
    font-size: 32px;
  }
}

.s-hero-industries:not(.text-white) [class^="title-"] {
  color: #222222;
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-industries {
    padding-bottom: 16rem;
  }
  .s-hero-industries:after {
    background-size: 1400px auto;
    background-position: 56% 101%;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .page-template-page-ai .s-hero-ai .s-hero__txt {
    padding-right: 30%;
  }
}

.responsive-embed {
  overflow: hidden;
  display: block;
}

.responsive-embed > img, .responsive-embed > iframe, .responsive-embed > video, .responsive-embed > .video-wrp {
  height: 100%;
  width: 100%;
  object-fit: cover;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

.responsive-embed > iframe {
  object-fit: fill;
}

.responsive-embed > .bg-img {
  background-size: cover;
}

.responsive-embed-wrp {
  position: relative;
  z-index: 5;
}

.responsive-embed-wrp.m-shadow:after {
  content: '';
  position: absolute;
  height: 72%;
  top: auto;
  right: -3rem;
  left: -3rem;
  bottom: -3rem;
  background: #0580FF;
  z-index: -1;
  pointer-events: none;
}

.responsive-embed-wrp.m-shadow .responsive-embed {
  border-radius: 1rem;
}

.b-social-inline {
  font-size: 0;
}

.b-social-inline li {
  padding: 0 7px;
}

.b-social-inline li a {
  transform: translateZ(0);
  display: block;
  transition: opacity .3s ease;
}

.b-social-inline li a:hover {
  opacity: .8;
}

.abs-link {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 5;
}

.b-ai-partners__img {
  margin-top: -1.5rem;
  position: relative;
  overflow: hidden;
  max-width: 96rem;
}

.b-ai-partners__img img {
  margin-right: 5rem;
  margin-top: 1.5rem;
  max-height: 5.9rem;
  min-height: 4.9rem;
  width: auto;
  object-fit: contain;
}

.b-ai-partners__img img:last-child {
  margin-right: 0;
}

.b-ai-partners__img img.big, .b-ai-partners__img img:nth-child(2) {
  max-height: 5.9rem;
}

.b-ai-partners__img .slider-item {
  min-width: 10rem;
  text-align: center;
  flex: none;
}

.b-ai-partners__img-slider {
  padding-top: 1.5rem;
  width: 100%;
}

.b-ai-partners__img-slider .slider-item {
  padding: 1rem;
  padding-left: 1.5vw;
  padding-right: 1.5vw;
}

.b-ai-partners__img-slider .slider-item img {
  max-width: 100%;
}

.b-ai-partners__img-slider .slick-dots {
  margin-top: 0;
}

.b-ai-partners__img-slider.slider-marquee {
  display: flex;
  flex-wrap: nowrap;
  white-space: nowrap;
  justify-content: flex-start;
  min-width: 0;
}

.b-ai-partners__img-slider.slider-marquee.cloned {
  position: absolute;
  top: 1.5rem;
  left: 1.5rem;
}

@media print, screen and (max-width: 39.99875em) {
  .b-ai-partners__img-slider.cloned .slider-item:first-of-type {
    padding-left: 1.5rem;
  }
  .b-ai-partners__img-slider .slider-item {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    min-width: 0;
    flex: 0 0 auto;
  }
  .b-ai-partners__img-slider .slider-item img {
    max-width: none;
  }
}

@media print, screen and (max-width: 63.99875em) {
  .b-ai-partners {
    margin-top: -10rem;
  }
  .b-ai-partners__txt {
    max-width: 50rem;
  }
  .b-ai-partners__img {
    margin-top: 0rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .b-ai-partners {
    text-align: center;
    margin-top: -4rem;
  }
  .b-ai-partners__img {
    text-align: center;
    margin-top: 1.5rem;
    max-width: 100%;
    max-width: calc(100% - 20px);
    margin-left: auto;
    margin-right: auto;
  }
}

@media screen and (max-width: 425px) {
  .b-ai-partners__img {
    text-align: center;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
  }
  .b-ai-partners__img > img {
    margin-right: 1rem;
    margin-left: 1rem;
    max-width: 24%;
    flex: 0 1 auto;
    object-fit: contain;
  }
}

.b-box-review {
  max-width: 44rem;
  margin-right: auto;
  margin-left: auto;
}

.b-box-review-list {
  margin-top: 4rem;
}

.b-box-review-list.row.slick-slider {
  margin-left: auto;
  margin-right: auto;
}

@media print, screen and (max-width: 39.99875em) {
  .b-box-review-list > .column {
    padding-top: 1.5rem;
    padding-bottom: 1.5rem;
  }
  .b-box-review-list > .column + .column {
    margin-top: 3rem;
  }
}

.b-box-review-list .b-box-review {
  height: 100%;
  display: flex;
  flex-direction: column;
  flex: 1;
}

.b-box-review-list .b-box-review__footer {
  margin-top: auto;
}

.b-box-review__pic {
  margin-bottom: 3.4rem;
  height: 10rem;
  width: 10rem;
  margin-right: auto;
  margin-left: auto;
}

.b-box-review__pic img {
  max-width: 10rem;
}

.b-box-review__pic .responsive-embed {
  height: 10rem;
  width: 10rem;
}

.b-box-review__pic .responsive-embed img {
  max-width: 100%;
}

.b-box-review__txt {
  padding-top: 20px;
  font-size: 16px;
}

.b-box-review__body {
  padding-bottom: 2rem;
  font-size: 1.6rem;
}

.b-box-review__body p {
  font-size: 100%;
  line-height: 1.5;
}

.b-box-review__footer {
  font-size: 1.8rem;
  text-align: left;
  color: #888888;
  padding-top: 1.5rem;
  display: flex;
}

.b-box-review__footer p a {
  color: currentColor;
  text-decoration: underline;
}

.b-box-review__footer p a:hover {
  text-decoration: none;
}

.b-box-review__footer-col {
  border-right: 1px solid #ccc;
  flex: 0 1 auto;
  min-height: 7rem;
  padding-left: 2rem;
  padding-right: 2rem;
  display: inline-flex;
  flex-direction: column;
  height: 100%;
  justify-content: center;
}

.b-box-review__footer-col:last-of-type {
  border: none;
}

.b-box-review__footer p {
  margin-bottom: 0;
}

.b-box-review__author {
  color: #222;
  font-weight: 700;
}

@media print, screen and (max-width: 39.99875em) {
  .b-box-review__txt, .b-box-review__author {
    font-size: 2.4rem;
  }
}

.b-report {
  display: flex;
  width: 100%;
}

.b-report-list {
  max-width: 90rem;
  margin-right: auto;
  margin-left: auto;
}

.b-report-list .b-report + .b-report {
  margin-top: 1rem;
}

.b-report--career .b-report__pic {
  padding: 0;
}

.b-report--career .b-report__pic img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.b-report--career .b-report__info {
  padding-left: 2.4rem;
  padding-right: 2.4rem;
}

.b-report--career .b-report__info p {
  font-size: 1.8rem;
}

@media print, screen and (max-width: 39.99875em) {
  .b-report--career .b-report__info p {
    font-size: 2.4rem;
  }
}

.b-report--career .b-report__info-btn .btn, .b-report--career .b-report__info-btn .btn-flat, .b-report--career .b-report__info-btn .b-callback-form .btn-submit, .b-callback-form .b-report--career .b-report__info-btn .btn-submit {
  min-width: 0;
}

.b-report__pic {
  background: #00563F;
  padding: 3rem;
  flex: 0 0 24rem;
  max-width: 24rem;
  flex-grow: 1;
  align-items: center;
  display: flex;
}

.b-report__info {
  padding-left: 4rem;
  padding-right: 4rem;
  flex: 1;
  flex: 0 0 calc(100% - 24rem);
  max-width: calc(100% - 24rem);
  background: #E9E9E9;
  color: #222;
  display: inline-flex;
  align-items: center;
}

.b-report__info-txt {
  flex: 1;
  margin-right: auto;
  padding-top: .75rem;
  padding-bottom: .75rem;
}

.b-report__info-btn {
  flex: 0 1 auto;
  margin-left: 4rem;
}

@media print, screen and (max-width: 39.99875em) {
  .b-report {
    flex-wrap: wrap;
  }
  .b-report__pic, .b-report__info {
    flex: 0 0 100%;
    max-width: 100%;
    padding: 3rem;
  }
}

@media screen and (max-width: 425px) {
  .b-report-list {
    max-width: 240px;
  }
  .b-report__info {
    flex-wrap: wrap;
    padding: 1.8rem 2rem 3rem;
  }
  .b-report__info-txt {
    flex: 0 0 100%;
    max-width: 100%;
    text-align: center;
    margin-bottom: 2rem;
  }
  .b-report__info-btn {
    margin-left: auto;
    margin-right: auto;
  }
}

.b-cta-benefit {
  position: relative;
  max-width: 28rem;
  min-width: 27rem;
}

.b-cta-benefit:before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  pointer-events: none;
  width: 5rem;
  height: 5rem;
  background: url(../img/icon/check-c.svg) 0 0 no-repeat;
  background-size: contain;
}

.b-cta-benefit__txt {
  padding-left: 5rem;
  padding-right: 3rem;
  padding-top: .4rem;
}

.b-cta-benefit p {
  font-size: 100%;
}

@media print, screen and (max-width: 39.99875em) {
  .b-cta-benefit {
    flex: 0 0 70%;
    padding-bottom: 4rem;
  }
  .b-cta-benefit:before {
    width: 4rem;
    height: 4rem;
  }
  .b-cta-benefit__txt {
    font-size: 20px;
  }
}

@media screen and (max-width: 424px) {
  .b-cta-benefit {
    flex: 0 0 100%;
    min-height: 7rem;
    max-width: 95%;
  }
  .b-cta-benefit__txt {
    padding-top: 0;
    padding-right: 0;
  }
}

.b-ai-product {
  display: flex;
  flex-wrap: wrap;
}

.slick-slider .b-ai-product {
  display: flex !important;
}

.b-ai-product__pic {
  flex: 0 0 45%;
  max-width: 45%;
  text-align: center;
}

.b-ai-product__pic img {
  margin-left: auto;
  margin-right: auto;
  margin-top: -10%;
}

.b-ai-product__info {
  flex: 0 0 55%;
  max-width: 55%;
  padding-top: 1rem;
  padding-left: 4rem;
  padding-right: 4rem;
}

.b-ai-product__title {
  margin-bottom: 1.8rem;
  color: #222;
}

.b-ai-product__txt p {
  font-size: 100%;
  line-height: 1.5;
}

@media print, screen and (max-width: 39.99875em) {
  .b-ai-product {
    padding-bottom: 6rem;
  }
  .b-ai-product__pic, .b-ai-product__info {
    flex: 0 0 100%;
    max-width: 100%;
  }
  .b-ai-product__pic {
    padding-left: 10%;
    padding-right: 10%;
  }
  .b-ai-product__pic img {
    margin-bottom: -10%;
  }
  .b-ai-product__info {
    padding-left: 2rem;
    padding-right: 2rem;
    text-align: center;
  }
  .b-ai-product__info .text-right {
    text-align: center;
  }
}

.b-ai-product-slider__nav {
  position: relative;
  border-bottom: 1px solid rgba(0, 0, 0, 0.3);
  text-align: center;
  font-size: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}

.b-ai-product-slider__nav-icn {
  height: 5rem;
  margin-bottom: 1rem;
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  align-items: center;
  justify-content: center;
}

.b-ai-product-slider__nav-icn img, .b-ai-product-slider__nav-icn svg {
  height: auto;
  max-width: 6.2rem;
  max-height: 4.6rem;
  object-fit: contain;
}

.b-ai-product-slider__nav-icn .icn-ux {
  width: 4.5rem;
}

.b-ai-product-slider__nav-itm {
  display: inline-block;
  text-align: center;
  position: relative;
  padding-left: 1.8rem;
  padding-right: 1.8rem;
  max-width: 18rem;
  width: 18rem;
  cursor: pointer;
}

.b-ai-product-slider__nav-itm.is-active {
  border-bottom: 0.8rem solid #FFE800;
}

.b-ai-product-slider__nav-itm.is-active * {
  color: #FFE800;
}

.b-ai-product-slider__nav-itm.is-active svg path {
  fill: #FFE800;
  fill-opacity: 1;
}

.b-ai-product-slider__nav-title {
  font-size: 1.4rem;
  padding-bottom: 1rem;
  text-transform: uppercase;
  color: rgba(0, 0, 0, 0.7);
}

.is-active .b-ai-product-slider__nav-title {
  font-weight: 700;
}

@media print, screen and (max-width: 39.99875em) {
  .b-ai-product-slider .slick-nav.slick-arrow {
    top: 20%;
  }
  .b-ai-product-slider__nav {
    flex-wrap: nowrap;
    justify-content: space-around;
  }
  .b-ai-product-slider__nav-itm {
    padding-left: .5rem;
    padding-right: .5rem;
    width: auto;
    max-width: none;
    flex: 1;
    border-bottom-width: 3px;
  }
  .b-ai-product-slider__nav-itm.is-active {
    border-bottom-width: 3px;
  }
  .b-ai-product-slider__nav-title {
    font-size: 10px;
    letter-spacing: -0.04em;
  }
}

@media screen and (max-width: 425px) {
  .b-ai-product-slider__nav-title {
    font-size: 11px;
    font-weight: 700;
  }
  .b-ai-product-slider__nav-icn svg, .b-ai-product-slider__nav-icn img {
    max-width: 4.2rem;
    max-height: 3.6rem;
  }
}

.b-use-case-list {
  display: flex;
  flex-wrap: wrap;
}

.b-use-case-list__itm {
  padding: 2rem;
  flex: 0 0 33%;
  max-width: 33.33%;
  flex-grow: 1;
}

@media print, screen and (max-width: 47.99875em) {
  .b-use-case-list__itm {
    flex: 0 0 50%;
    max-width: 50%;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .b-use-case-list {
    margin-left: -2rem;
    margin-right: -2rem;
  }
  .b-use-case-list__itm {
    flex: 0 0 50%;
    max-width: 50%;
    margin-left: auto;
    margin-right: auto;
  }
}

@media screen and (max-width: 375px) {
  .b-use-case-list__itm {
    padding: 1rem;
  }
}

.b-use-case {
  position: relative;
  border-radius: 10px;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  min-height: 22rem;
}

.b-use-case__pic {
  width: 100%;
  text-align: center;
}

.b-use-case__pic img {
  width: 100%;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.b-use-case__info {
  flex: 0 0 100%;
  padding-top: 1rem;
  padding-right: 1rem;
  padding-left: 1rem;
  text-align: center;
  position: absolute;
  left: 0;
  top: 55%;
  width: 100%;
}

.b-use-case__title {
  font-weight: 600;
  font-size: 2rem;
  line-height: 1.2;
  max-width: 20rem;
  margin-left: auto;
  margin-right: auto;
  letter-spacing: -0.02em;
}

@media print, screen and (max-width: 39.99875em) {
  .b-use-case__title {
    font-size: 12px;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .b-use-case__title {
    font-size: 18px;
    font-weight: 600;
  }
}

@media screen and (max-width: 375px) {
  .b-use-case {
    min-height: 0;
  }
}

.b-callback-form textarea {
  padding-top: 1rem;
  min-height: 14rem;
  margin-bottom: 0;
  border: 1px solid #CCCCCC;
}

.b-callback-form textarea::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

.b-callback-form textarea:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

.b-callback-form textarea::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

.b-callback-form textarea:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

.b-callback-form .b-form-list {
  font-size: 0;
  margin-top: -.5rem;
  margin-bottom: -.5rem;
  margin-right: .5rem;
}

.b-callback-form .b-form-list input:not([type=submit]), .b-callback-form .b-form-list textarea {
  margin-bottom: 0;
  border: 1px solid #CCCCCC;
}

.b-callback-form .b-form-list input:not([type=submit]):focus, .b-callback-form .b-form-list input:not([type=submit]):active, .b-callback-form .b-form-list textarea:focus, .b-callback-form .b-form-list textarea:active {
  border-color: #0580FF;
}

.b-callback-form .b-form-list input:not([type=submit])::-webkit-input-placeholder, .b-callback-form .b-form-list textarea::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

.b-callback-form .b-form-list input:not([type=submit]):-moz-placeholder, .b-callback-form .b-form-list textarea:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

.b-callback-form .b-form-list input:not([type=submit])::-moz-placeholder, .b-callback-form .b-form-list textarea::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

.b-callback-form .b-form-list input:not([type=submit]):-ms-input-placeholder, .b-callback-form .b-form-list textarea:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

.b-callback-form .b-form-list .has-error input:not([type=submit]), .b-callback-form .b-form-list .has-error textarea {
  background-color: #FFE7E7;
  border: 1px solid #FF0000;
}

.b-callback-form .b-form-list li {
  padding: .5rem;
  width: 50%;
  display: inline-block;
}

.b-callback-form .btn-submit.btn, .b-callback-form .btn-submit.btn-flat, .b-callback-form .btn-submit {
  background: #0580FF;
  color: #fff;
  border-color: #0580FF;
}

.b-callback-form .btn-submit.btn:hover, .b-callback-form .btn-submit.btn-flat:hover, .b-callback-form .btn-submit:hover {
  opacity: .7;
}

.b-callback-form .has-error input, .b-callback-form .has-error textarea {
  background-color: #FFE7E7;
  border: 1px solid #FF0000;
}

.b-callback-form .form-submit-message {
  max-width: 28rem;
  font-size: 2.4rem;
  line-height: 1.25;
}

.b-callback-form .form-submit-message p {
  font-size: 100%;
}

.b-callback-form .form-submit-message__title {
  font-size: 100%;
  font-weight: bold;
}

.b-callback-form .form-submit-message__txt {
  line-height: 1.25;
}

@media print, screen and (max-width: 39.99875em) {
  .b-callback-form .text-right {
    text-align: center;
  }
  .b-callback-form .column.ml-auto {
    margin-left: 0;
  }
  .b-callback-form .gform_footer {
    margin-top: 1rem;
  }
  .b-callback-form form .column {
    text-align: center;
  }
  .b-callback-form .b-form-list {
    margin-left: -.5rem;
    margin-right: -.5rem;
    margin-bottom: .5rem;
  }
}

@media screen and (max-width: 425px) {
  .b-callback-form .b-form-list li {
    width: 100%;
  }
}

.b-partners-list {
  font-size: 0;
}

.b-partners-list__itm {
  padding: 1rem 1.5rem;
  display: inline-block;
  vertical-align: middle;
}

.b-partners-list__itm img {
  object-fit: contain;
}

.b-location-list {
  display: flex;
  flex-wrap: wrap;
}

.b-location-list .b-location {
  margin-left: auto;
  margin-right: auto;
}

.b-location-list__itm {
  padding: 2rem;
  flex: 0 0 33%;
  max-width: 33.33%;
  flex-grow: 1;
}

@media print, screen and (max-width: 47.99875em) {
  .b-location-list__itm {
    flex: 0 0 50%;
    max-width: 50%;
  }
}

@media screen and (max-width: 767px) and (min-width: 375px) {
  .b-location-list {
    margin-left: -1rem;
    margin-right: -1rem;
  }
  .b-location-list__itm {
    flex: 0 0 33%;
    max-width: 33%;
    padding-left: 1rem;
    padding-right: 1rem;
  }
  .b-location-list__itm > div {
    max-width: 100%;
    height: 100%;
  }
  .b-location-list__itm .b-location__info {
    padding-top: 9%;
  }
  .b-location-list__itm .b-location__title {
    font-size: 2rem;
    font-size: 4vw;
  }
  .b-location-list__itm .b-location__city {
    font-size: 1.8rem;
    font-size: 3.6vw;
  }
  .b-location-list__itm .b-location__marker {
    margin-bottom: 0;
    margin-bottom: 1vw;
  }
}

@media screen and (max-width: 374px) {
  .b-location-list__itm {
    flex: 0 0 100%;
    max-width: 100%;
  }
  .b-location-list__itm > div {
    width: 24rem;
    height: 24rem;
  }
}

.b-location {
  width: 28rem;
  height: 28rem;
  border-radius: 50%;
  position: relative;
}

.b-location__info {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  text-align: center;
  padding-top: 4rem;
}

.b-location__marker {
  margin-bottom: 1rem;
}

.b-location__title {
  font-weight: bold;
  color: #222222;
}

.b-location__city {
  font-size: 2.6rem;
}

.b-vacancy-list {
  margin-top: 3rem;
  max-width: 400px;
}

.b-vacancy-list__itm {
  border-bottom: 1px solid #ccc;
}

.b-vacancy {
  padding-top: 20px;
  padding-bottom: 20px;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-pack: space-between;
  -moz-box-pack: space-between;
  -ms-flex-pack: space-between;
  -webkit-justify-content: space-between;
  justify-content: space-between;
}

.b-vacancy-wrp {
  max-width: 400px;
  margin-left: auto;
  margin-right: auto;
}

.b-vacancy__body {
  max-width: 80%;
  text-align: left;
}

.b-vacancy__title {
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  color: #0a0a0a;
  font-weight: 600;
  font-size: 18px;
}

.b-vacancy__title a {
  color: currentColor;
}

.b-vacancy__city {
  color: #888888;
  font-size: 16px;
}

.b-vacancy__link {
  color: #ff7a00;
  font-weight: 600;
  font-size: 16px;
  max-width: 20%;
}

.b-vacancy__link:hover {
  opacity: .7;
  color: #ff7a00;
}

@media screen and (max-width: 1023px) {
  .b-vacancy-list, .b-vacancy-wrp {
    margin-left: auto;
    margin-right: auto;
  }
  .b-vacancy-list.align-right, .b-vacancy-wrp.align-right {
    margin-left: auto;
    margin-right: auto;
  }
}

@media screen and (max-width: 767px) {
  .b-vacancy-list {
    margin-top: 25px;
    margin-bottom: 75px;
  }
}

.b-home-video {
  position: relative;
  max-width: 96rem;
  margin-left: auto;
  margin-right: auto;
}

.b-home-video .btn-play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 5;
  font-size: 1rem;
}

.b-home-video .btn-play:hover .icn-play-shadow {
  transform: scale(0.9);
}

.b-home-video .btn-play.is-hide {
  display: none;
}

.b-home-video .btn-play .icn-play-shadow {
  display: block;
  width: 22em;
  height: 22em;
  background: url(../img/icon/play-circle-shadow.svg) 50% 50% no-repeat;
  background-size: contain;
  transition: transform .3s ease;
}

@media print, screen and (max-width: 39.99875em) {
  .b-home-video .btn-play {
    font-size: 1.2vw;
  }
}

.b-home-video .responsive-embed {
  border-radius: 3rem;
}

.b-home-video__video-mob > iframe {
  object-fit: initial;
}

@media print, screen and (max-width: 39.99875em) {
  .b-home-video__video-mob > iframe {
    border-radius: 2rem;
  }
}

@media screen and (max-width: 1360px) {
  .b-home-video {
    max-width: 78rem;
  }
}

[class*='btn-'] {
  display: inline-block;
}

[class*='btn-']:hover {
  text-decoration: none;
}

.btn-icon {
  background-color: transparent;
  border: medium none;
  outline: none;
  height: auto;
  line-height: 1;
  width: auto;
  padding: 1.1rem 1rem;
}

.btn-dropdown, .btn-link {
  background-color: transparent;
  border: medium none;
  outline: none;
  padding: 0;
}

.btn--block {
  display: block;
  width: 100%;
}

.btn, .btn-flat, .b-callback-form .btn-submit, .button, .btn-submit {
  position: relative;
  border-radius: 2rem;
  border: 1px solid #0580FF;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  display: inline-block;
  line-height: 1;
  font-size: 1.4rem;
  font-weight: 700;
  color: #fff;
  text-transform: uppercase;
  background: #0580FF;
  padding: 1.2rem 1.5rem 1.2rem;
  text-align: center;
  transition: color .3s, background .3s, border-color .3s, opacity .3s ease;
}

.btn:link, .btn-flat:link, .b-callback-form .btn-submit:link, .button:link, .btn-submit:link {
  text-decoration: none;
}

.btn:link:hover, .btn-flat:link:hover, .b-callback-form .btn-submit:link:hover, .button:link:hover, .btn-submit:link:hover {
  text-decoration: none;
}

.btn:hover, .btn-flat:hover, .b-callback-form .btn-submit:hover, .btn:focus, .btn-flat:focus, .b-callback-form .btn-submit:focus, .button:hover, .button:focus, .btn-submit:hover, .btn-submit:focus {
  color: #fff;
  opacity: .7;
}

.btn.no-radius, .no-radius.btn-flat, .b-callback-form .no-radius.btn-submit, .button.no-radius, .no-radius.btn-submit {
  border-radius: 0;
}

.btn.m-white, .m-white.btn-flat, .b-callback-form .m-white.btn-submit, .button.m-white, .m-white.btn-submit {
  background: #fff;
  color: #444444;
}

.btn.m-white:hover, .m-white.btn-flat:hover, .b-callback-form .m-white.btn-submit:hover, .button.m-white:hover, .m-white.btn-submit:hover {
  opacity: .7;
}

.btn.btn--white, .btn--white.btn-flat, .b-callback-form .btn--white.btn-submit, .button.btn--white, .btn--white.btn-submit {
  color: rgba(0, 0, 0, 0.7);
  border-color: #fff;
  background: #ffffff;
}

.btn.btn--white:hover, .btn--white.btn-flat:hover, .b-callback-form .btn--white.btn-submit:hover, .btn.btn--white:focus, .btn--white.btn-flat:focus, .b-callback-form .btn--white.btn-submit:focus, .button.btn--white:hover, .button.btn--white:focus, .btn--white.btn-submit:hover, .btn--white.btn-submit:focus {
  color: #000;
  border-color: #fff;
  background: #ffffff;
  opacity: 1;
}

.btn.btn--primary, .btn--primary.btn-flat, .b-callback-form .btn--primary.btn-submit, .button.btn--primary, .btn--primary.btn-submit {
  color: #fff;
  border-color: #0580FF;
  background: #0580FF;
}

.btn.btn--primary:hover, .btn--primary.btn-flat:hover, .b-callback-form .btn--primary.btn-submit:hover, .btn.btn--primary:focus, .btn--primary.btn-flat:focus, .b-callback-form .btn--primary.btn-submit:focus, .button.btn--primary:hover, .button.btn--primary:focus, .btn--primary.btn-submit:hover, .btn--primary.btn-submit:focus {
  color: #fff;
  border-color: #0067d1;
  background: #0067d1;
  opacity: 1;
}

.btn.m-shadow, .m-shadow.btn-flat, .b-callback-form .m-shadow.btn-submit, .button.m-shadow, .m-shadow.btn-submit {
  box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.2);
}

.btn.m-fixed, .m-fixed.btn-flat, .b-callback-form .m-fixed.btn-submit, .button.m-fixed, .m-fixed.btn-submit {
  min-width: 18rem;
}

.btn.m-fixed--md, .m-fixed--md.btn-flat, .b-callback-form .m-fixed--md.btn-submit, .button.m-fixed--md, .m-fixed--md.btn-submit {
  min-width: 16rem;
}

.btn.m-rounded, .m-rounded.btn-flat, .b-callback-form .m-rounded.btn-submit, .button.m-rounded, .m-rounded.btn-submit {
  border-radius: 100px;
}

@media print, screen and (max-width: 39.99875em) {
  .btn, .btn-flat, .b-callback-form .btn-submit, .button, .btn-submit {
    font-size: 14px;
    border-radius: 20px;
  }
  .btn.m-fixed, .m-fixed.btn-flat, .b-callback-form .m-fixed.btn-submit, .button.m-fixed, .m-fixed.btn-submit {
    min-width: 180px;
  }
  .btn.m-fixed--md, .m-fixed--md.btn-flat, .b-callback-form .m-fixed--md.btn-submit, .button.m-fixed--md, .m-fixed--md.btn-submit {
    min-width: 160px;
  }
}

button {
  border: medium none;
}

button span {
  vertical-align: middle;
}

.btn-flat, .b-callback-form .btn-submit {
  background: transparent;
  color: #0580FF;
}

.btn-flat:hover, .b-callback-form .btn-submit:hover {
  border-color: #0580FF;
  background-color: #0580FF;
  color: #fff;
}

.btn-flat.m-white, .b-callback-form .m-white.btn-submit {
  background: transparent;
  border: 1px solid #fff;
  color: #fff;
}

.btn-flat.m-white:hover, .b-callback-form .m-white.btn-submit:hover, .btn-flat.m-white:focus, .b-callback-form .m-white.btn-submit:focus {
  opacity: .7;
}

.btn-more, .b-callback-form .btn-submit {
  min-width: 18rem;
  font-weight: 600;
}

@media print, screen and (max-width: 39.99875em) {
  .btn-more, .b-callback-form .btn-submit {
    font-size: 16px;
    min-width: 180px;
    border-radius: 20px;
  }
}

.back-link {
  color: #888888;
}

.back-link:hover {
  text-decoration: none;
}

.back-link svg, .back-link [class^="icon"] {
  margin-right: 1rem;
  fill: currentColor;
}

.back-link:hover {
  opacity: .7;
}

.back-link.text--blue {
  color: #0580FF;
}

.back-link.text--orange {
  color: #ff7a00;
}

.close-button {
  display: block;
  margin-left: auto;
  position: relative;
  line-height: 1;
  font-size: 0;
  width: 2rem;
  height: 2rem;
  margin-bottom: 2rem;
  transition: opacity .3s ease, background .3s ease;
}

.close-button:before, .close-button:after {
  content: '';
  position: absolute;
  top: 0;
  left: 1.1rem;
  height: 2.1rem;
  width: 0.2rem;
  background-color: #222222;
}

.close-button:before {
  transform: rotate(45deg);
}

.close-button:after {
  transform: rotate(-45deg);
}

.close-button:hover {
  opacity: .5;
}

.btn-watch {
  border-color: rgba(0, 0, 0, 0.5);
  color: rgba(0, 0, 0, 0.7);
}

.btn-watch:hover, .btn-watch:focus {
  opacity: .7;
  border-color: rgba(0, 0, 0, 0.5);
  color: rgba(0, 0, 0, 0.7);
}

.btn-watch.btn-flat, .b-callback-form .btn-watch.btn-submit {
  border-color: rgba(0, 0, 0, 0.5);
  background: none;
}

.btn-watch.btn-flat:hover, .b-callback-form .btn-watch.btn-submit:hover, .btn-watch.btn-flat:focus, .b-callback-form .btn-watch.btn-submit:focus {
  border-color: rgba(0, 0, 0, 0.5);
  color: rgba(0, 0, 0, 0.7);
  background: none;
}

.slick-slider.slider-progressive {
  opacity: 0;
  height: 0;
  visibility: hidden;
  transition: all 1.2s ease;
}

.slick-slider.slider-progressive.slick-initialized {
  opacity: 1;
  visibility: visible;
  height: auto;
}

.slick-slider.has-popover {
  position: relative;
  z-index: 50;
  overflow-y: visible;
}

.slick-slider.has-popover .slick-track, .slick-slider.has-popover .slick-list {
  overflow: visible;
}

.slick-slider.slider-visible .slick-track, .slick-slider.slider-visible .slick-list {
  overflow: visible;
}

.slick-slider .slick-dots {
  width: 100%;
  margin-top: 2rem;
  text-align: center;
  font-size: 0;
  padding-top: 1rem;
  padding-bottom: 1rem;
}

.slick-slider .slick-dots li {
  display: inline-block;
  padding: 1rem;
}

.slick-slider .slick-dots li.slick-active button {
  background: #0580FF;
}

.slick-slider .slick-dots li button {
  width: 2.2rem;
  height: 2.2rem;
  border-radius: 50%;
  border: 1px solid #0580FF;
  background: transparent;
}

@media print, screen and (max-width: 74.99875em) {
  .slick-slider .slick-dots li {
    padding: .5rem;
  }
  .slick-slider .slick-dots li button {
    width: 12px;
    height: 12px;
  }
}

.slick-slider .slick-arrow {
  position: absolute;
  top: 50%;
  z-index: 50;
  transform: translateY(-50%);
  font-size: 4rem;
  color: #444444;
  transition: .5s;
}

.slick-slider .slick-arrow.slick-disabled {
  opacity: 0;
  pointer-events: none;
}

.slick-slider .slick-arrow.slick-prev {
  left: -6rem;
}

.slick-slider .slick-arrow.slick-next {
  margin-left: 1rem;
  right: -6rem;
}

@media print, screen and (min-width: 90em) {
  .slick-slider .slick-arrow {
    font-size: 6rem;
  }
  .slick-slider .slick-arrow.slick-prev {
    left: -8rem;
  }
  .slick-slider .slick-arrow.slick-next {
    right: -8rem;
  }
}

.slick-slider .slick-nav.slick-arrow {
  width: 1.9rem;
  height: 3.2rem;
  display: block !important;
}

.slick-slider .slick-nav.slick-arrow.slick-disabled {
  opacity: .5;
  pointer-events: none;
}

.slick-slider .slick-nav.slick-arrow.slick-next {
  background: url(../img/icon/arrow-right.svg) 50% 50% no-repeat;
  background-size: contain;
}

.slick-slider .slick-nav.slick-arrow.slick-prev {
  background: url(../img/icon/arrow-left.svg) 50% 50% no-repeat;
  background-size: contain;
}

@media screen and (max-width: 1400px) {
  .slick-slider .slick-nav.slick-arrow.slick-next {
    right: -1.5rem;
  }
  .slick-slider .slick-nav.slick-arrow.slick-prev {
    left: -1.5rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .slick-slider .slick-nav.slick-arrow.slick-next {
    right: -0.5rem;
  }
  .slick-slider .slick-nav.slick-arrow.slick-prev {
    left: -0.5rem;
  }
}

.align-left .slick-slider .slick-track {
  margin-left: 0;
}

.align-right .slick-slider .slick-track {
  margin-right: 0;
}

.tabs-panel {
  display: none;
}

.tabs-panel.is-active {
  display: block;
}

.tabs {
  background: none;
  border: none;
}

.tabs:before, .tabs:after {
  display: none;
}

.tabs .tabs-title {
  float: none;
}

.tabs .tabs-title > a {
  padding: 0;
  background: none;
}

.tabs-content {
  border: none;
  background: none;
}

.tabs-content, .tab-content {
  border: none;
  background: none;
  overflow: hidden;
  position: relative;
  backface-visibility: hidden;
}

.tabs-content.has-loader, .tab-content.has-loader {
  background: url(../img/common/loader.svg) 50% 15% no-repeat;
  background-size: 12rem auto;
}

.tabs-content--visible, .tab-content--visible {
  overflow: visible;
}

.tabs-content--padding, .tab-content--padding {
  padding-top: 2rem;
}

.tabs-content .b-tab, .tab-content .b-tab {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  visibility: hidden;
  opacity: 0;
  transition: opacity .7s;
}

.tabs-content .b-tab.is-active, .tab-content .b-tab.is-active {
  opacity: 1;
  z-index: 50;
  visibility: visible;
  position: relative;
}

.b-tabs__link {
  display: inline-block;
  padding: .9rem 1.5rem;
  background: #fff;
  font-weight: 700;
  font-size: 1.6rem;
  color: #444444;
}

.b-tabs--bg .b-tabs__link {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  min-height: 12rem;
  font-size: 2.4rem;
  text-transform: uppercase;
}

.b-tabs--bg .b-tabs__link img {
  position: absolute;
  z-index: -1;
  width: 100%;
  height: 100%;
  object-fit: cover;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

.b-tabs--bg .b-tabs__link span {
  position: relative;
  z-index: 4;
}

.b-tabs--bg .b-tabs-list {
  display: flex;
  flex-wrap: wrap;
}

.b-tabs--bg .b-tabs-list li {
  flex: 1;
  line-height: 0;
  overflow: hidden;
}

.b-tabs--bg .b-tabs-list li.is-active .b-tabs__link, .b-tabs--bg .b-tabs-list li:hover .b-tabs__link, .b-tabs--bg .b-tabs-list li:focus .b-tabs__link {
  background: #0580FF;
  color: #000;
}

.b-tabs--bg .b-tabs-list li.is-active .b-tabs__link:hover, .b-tabs--bg .b-tabs-list li:hover .b-tabs__link:hover, .b-tabs--bg .b-tabs-list li:focus .b-tabs__link:hover {
  text-decoration: none;
}

.b-tabs--bg .b-tabs-list li.is-active .b-tabs__link:before, .b-tabs--bg .b-tabs-list li:hover .b-tabs__link:before, .b-tabs--bg .b-tabs-list li:focus .b-tabs__link:before {
  content: '';
  height: 6px;
  width: 100%;
  background: #222;
  position: absolute;
  bottom: 0;
  left: 0;
  z-index: 1;
}

.b-tabs--bg .b-tabs-list li .b-tabs__link {
  color: #fff;
}

.b-tabs--bg .b-tabs-list li .b-tabs__link:after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
}

@media print, screen and (max-width: 39.99875em) {
  .b-tabs--bg .b-tabs-list li {
    flex: 0 0 100%;
  }
}

.b-tabs-list {
  font-size: 0;
}

.b-tabs-list li.is-active .b-tabs__link, .b-tabs-list li:hover .b-tabs__link, .b-tabs-list li:focus .b-tabs__link {
  background: #0580FF;
  color: #fff;
}

.b-tabs-list li.is-active .b-tabs__link:hover, .b-tabs-list li:hover .b-tabs__link:hover, .b-tabs-list li:focus .b-tabs__link:hover {
  text-decoration: none;
}

.b-post__author {
  color: #888888;
  font-size: 1.6rem;
}

.b-post__author a {
  color: currentColor;
}

.b-post__header {
  padding-bottom: 1rem;
}

.b-post__body {
  padding: 1.6rem 2.4rem;
  padding-left: 0;
}

.b-post__body a {
  color: #0580FF;
}

.b-post__pic {
  border-bottom: 6px solid #FFE800;
}

.b-post__title {
  font-weight: bold;
  line-height: 1.14;
  margin-bottom: 1.8rem;
  color: #222222;
}

.b-post__title a {
  color: currentColor;
}

.b-post__txt {
  font-size: 16px;
}

.b-post__txt p {
  font-size: 100%;
  line-height: 1.67;
}

.b-post__btn {
  margin-top: 1.8rem;
}

.b-post__btn .btn-more, .b-post__btn .b-callback-form .btn-submit, .b-callback-form .b-post__btn .btn-submit {
  min-width: 12rem;
}

@media print, screen and (max-width: 39.99875em) {
  .b-post__author {
    font-size: 16px;
  }
  .b-post__txt {
    font-size: 2.4rem;
  }
}

.b-pagination__list {
  font-size: 0;
  margin-left: -.5rem;
  margin-right: -.5rem;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

.b-pagination__list .page-numbers {
  padding: .8rem .5rem;
  min-width: 3.6rem;
  text-align: center;
  font-size: 1.8rem;
  line-height: 1;
  border-radius: 5px;
  font-weight: 600;
  display: inline-block;
  border: 1px solid transparent;
  margin: .5rem;
  color: #0580FF;
  transition: opacity .2s ease;
}

.b-pagination__list .page-numbers:hover {
  opacity: .6;
}

.b-pagination__list .page-numbers:hover {
  text-decoration: none;
}

.b-pagination__list .page-numbers.current {
  background: #006ac0;
  border-color: #006ac0;
  color: #fff;
}

.b-pagination__list .page-numbers.current:hover {
  opacity: 1;
}

.b-pagination__list .page-numbers.next, .b-pagination__list .page-numbers.prev {
  padding-left: 1rem;
  padding-right: 1rem;
}

.b-pagination__list .page-numbers.dots {
  border: none;
}

@media print, screen and (max-width: 39.99875em) {
  .b-pagination {
    margin-top: 2.5rem;
  }
}

.gfield.hidden_label .gfield_label {
  display: none !important;
}

form.home-form .gfield_description.validation_message {
  display: none !important;
}

form.home-form .gform_footer input[type="submit"] {
  display: none !important;
}

#cookie-notice.cookie-notice-hidden {
  display: none;
}

#cookie-notice {
  font-size: inherit;
  font-family: inherit;
}

form.left-button .column.small-12.shrink.ml-auto.text-right {
  margin-left: 0;
}

.gfield.gform_hidden {
  display: none;
}

.error-message-block {
  width: 100%;
}

.error-message {
  padding-left: .5rem;
}

/* about labels  */
.s-ai-about__label{
  font-weight: bold;
  font-size: 14px;
  line-height: 1.5;
  font-style: normal;
  color: #0580FF;
  padding: 4px 16px;
  background: #cdebff;
  width: max-content;
}
.s-ai-about__label.label-0{
  color: #4952F7;
  background-color: #F0F1FE;
}

@media (max-width: 1200px) {
  .s-ai-about__label{
    font-size: 12px;
  }
}
@media (max-width: 768px) {
  .s-ai-about__label {
    margin: 0 auto;
    margin-bottom: 18px;
    font-size: 12px;
  }
}

/* top-text */
.s-content__top-text{
  max-width: 600px;
  margin: 0 auto;
  text-align: center;
  padding-top: 100px;
}

/* smb */
.s-content__smb{
  padding: 70px 0 150px;
  text-align: center;
}

.s-content__smb-bg-1{
  background: #F4F4F4;
  border-radius: 100px 320px 100px 320px;
  padding: 0;
}
.s-content__smb-bg-2{
  background: #FFFFFF;
  border-radius: 280px 320px 280px 320px;
  padding: 5px 0;
  width: 90%;
  margin: 0 auto;
}
.s-content__smb-bg-3{
  background: #40F693;
  border-radius: 320px 150px 320px 150px;
  padding: 64px;
  width: 90%;
  margin: 0 auto;
}
.s-content__smb-text-wrapper{
  max-width: 580px;
  margin: 0 auto;
}
.s-content__smb-button-group{
  display: flex;
  gap: 20px;
  justify-content: center;
}
.b-box-review__video-button{
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 auto;
  margin-top: 28px;
margin-bottom: 8px;
  width: max-content;
}
.b-box-review__pic{
  margin-bottom: 0;
}
.b-box-review-list{ 
  gap: 80px 0 ;
}

.s-callback-form__content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 20px;
}

.s-callback-form__content p:first-child {
  margin: 0 !important;
}

.s-ai-footer__button-group {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  width: 100%;
  margin-top: 20px;
}

.footer__grid {
  display: grid;
  gap: 40px;
  grid-template-columns: 1fr 1fr;
  padding-top: 80px;
  padding-bottom: 80px;
  border-bottom: 1px dashed #fff;
}

.footer__grid-img-wrapper {
  display: flex;
  align-items: center;
  gap: 10px;
}

.footer__grid-img-wrapper img {
  width: 50px;
}

.footer__grid-label {
  font-size: 14px;
  font-weight: 600;
  color: #666666;
  margin-bottom: 32px;
}

#footer__grid-ul {
  display: grid;
  gap: 16px;
}

#footer__grid-ul a {
  font-size: 18px;
}

.b-footer__menu {
  justify-content: flex-end;
}

.footer__grid-description {
  font-size: 18px !important;
  max-width: 400px;
  margin-top: 24px;
}

.small-collapse {
  padding-top: 32px;
  padding-bottom: 80px;
  display: flex;
  justify-content: space-between;
}

.s-ai-about__button-group{
  gap: 10px;
  display: flex; 

}

@media (max-width: 1024px) {
  .s-content__smb {
    padding-bottom: 100px;
  }
  .s-content__smb-bg-3 {
    border-radius: 200px 150px 200px 150px;
  }
  .s-ai-cta__info{
    gap: 35px 0 !important;
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
  }
  .b-cta-benefit {
    margin: 0 auto;
  }
}

@media (max-width: 820px) {
  .s-ai-footer__button-group {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 768px) {
  .s-content__smb {
    padding-bottom: 70px;
    padding-top: 50px;
  }
  .s-content__smb-bg-1 {
    border-radius: 250px 100px 250px 100px;
    padding: 43px 1px;
    width: 100%;
  }
  .s-content__smb-bg-2 {
    border-radius: 220px 100px 220px 100px;
    padding: 43px 4px;
    width: 100%;
  }
  .s-content__smb-bg-3 {
    border-radius: 180px 100px 180px 100px;
    padding:64px 48px;
    width: 100%;
  }
  .s-content__smb-button-group{
    flex-direction: column;
    gap: 12px;
  }
  .b-box-review-list {
    gap: 40px 0;
  }
  .b-footer__row{
    flex-direction: column-reverse;
    justify-content: flex-start;
    align-items: flex-start;
    gap: 24px;
  }
  .b-footer__nav ul{
    display: grid;
    gap: 24px;
  }
  .b-footer a{
    font-size: 14px;
  }
  .b-footer__copy{
    margin-left: 0;
  }
  .b-footer__menu{
    margin-left: 0;
    text-align: start;
  }
  .footer__grid{
    grid-template-columns: 1fr;
    gap: 64px;
    padding-top: 72px;
    padding-bottom: 32px;
  }
  .small-collapse{
    padding-bottom: 72px;
  }
  .s-ai-about__title{
    margin: 0 auto;
  }
  .s-callback-form__content{
    grid-template-columns: 1fr;
  }
  .s-callback-form__content .row{
    text-align: center;
    margin-left: 0 !important;
    margin-right: 0 !important;
    margin: 0 auto;
    max-width: 100%;
  }
  .s-callback-form__content {
  padding-top: 54%;
  }
  .show-for-small-only {
  display: block !important;
  }
  .show-for-medium{
  display: none !important;
  }
  .s-callback-form{
    padding-bottom: 40px !important;
  }
  .b-cta-benefit{
    max-width: 95% !important;
    padding-bottom: 0 !important;
    margin-left: 0 !important;
  }
}
.s-review__text-block{
  width: 100%;
  max-width: 460px;
  margin: 0 auto;
}
.s-content__top-text{
  position: relative;
}
.s-content__top-text:before{
  content: "";
  position: absolute;
  top: -18px;
  left: -110px;
  background: url(/wp-content/themes/roojoom-new/assets/img/background-new-arrow-to-up.png);
  background-repeat: no-repeat;
  background-size: contain;
  width: 205px;
  height: 113px;
}

@media (max-width: 1200px) {
  .s-content__top-text:before {
    display: none;
  }
}
@media (max-width: 508px) {
      .s-ai-about__button-group {
          gap: 10px;
          display: grid;
        }
  .s-ai-cta__info{
    padding-left: 40px;
    grid-template-columns: 1fr !important;
  }
}




/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIiwiX3NldHRpbmdzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191dGlsLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19tYXRoLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191bml0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL192YWx1ZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fZGlyZWN0aW9uLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19jb2xvci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fc2VsZWN0b3Iuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2ZsZXguc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2JyZWFrcG9pbnQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX21peGlucy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdHlwb2dyYXBoeS5zY3NzIiwiX3ZhcmlhYmxlcy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm91bmRhdGlvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdmVuZG9yL25vcm1hbGl6ZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy9fbWlzc2luZy1kZXBlbmRlbmNpZXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3RydWUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fY29udGFpbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19wdXJnZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19yZW1vdmUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcmVwbGFjZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL190by1saXN0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191dGlsLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9fZ2xvYmFsLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZm9ybXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL190ZXh0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fY2hlY2tib3guc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19sYWJlbC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2hlbHAtdGV4dC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2lucHV0LWdyb3VwLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZmllbGRzZXQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19zZWxlY3Quc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19yYW5nZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3Byb2dyZXNzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fbWV0ZXIuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19lcnJvci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fYmFzZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9faGVscGVycy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fYWxpZ25tZW50LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19wcmludC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fZ3JpZC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fcm93LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19jb2x1bW4uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3NpemUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3Bvc2l0aW9uLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19ndXR0ZXIuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2NsYXNzZXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2xheW91dC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fZmxleC1ncmlkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL194eS1ncmlkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19ndXR0ZXJzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19ncmlkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19jZWxsLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19mcmFtZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fcG9zaXRpb24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2xheW91dC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY29sbGFwc2Uuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2NsYXNzZXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2J1dHRvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9uLWdyb3VwLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jbG9zZS1idXR0b24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2xhYmVsLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19wcm9ncmVzcy1iYXIuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3NsaWRlci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fc3dpdGNoLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190YWJsZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYmFkZ2Uuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2JyZWFkY3J1bWJzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jYWxsb3V0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jYXJkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19kcm9wZG93bi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcGFnaW5hdGlvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdG9vbHRpcC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYWNjb3JkaW9uLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZWRpYS1vYmplY3Quc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX29yYml0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19yZXNwb25zaXZlLWVtYmVkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190YWJzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190aHVtYm5haWwuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX21lbnUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX21lbnUtaWNvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYWNjb3JkaW9uLW1lbnUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2RyaWxsZG93bi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZHJvcGRvd24tbWVudS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fb2ZmLWNhbnZhcy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcmV2ZWFsLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zdGlja3kuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RpdGxlLWJhci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdG9wLWJhci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZmxvYXQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2ZsZXguc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3Zpc2liaWxpdHkuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcHJvdG90eXBlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3JlbGF0aW9uLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2JveC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19yb3RhdGUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fdGV4dC11dGlsaXRpZXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fdGV4dC10cmFuc2Zvcm1hdGlvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL190ZXh0LWRlY29yYXRpb24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fZm9udC1zdHlsaW5nLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2xpc3Qtc3R5bGUtdHlwZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19yb3VuZGVkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2JvcmRlcmVkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3NoYWRvdy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19hcnJvdy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19zZXBhcmF0b3Iuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fb3ZlcmZsb3cuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fZGlzcGxheS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19wb3NpdGlvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19ib3JkZXItYm94LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2JvcmRlci1ub25lLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3NpemluZy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19zcGFjaW5nLnNjc3MiLCJhcHAvX19pbmRleC5zY3NzIiwiYXBwL2Jhc2UvX2Jhc2Uuc2NzcyIsImFwcC9iYXNlL19taXhpbnMuc2NzcyIsImFwcC9iYXNlL19yZXNldC5zY3NzIiwiYXBwL2Jhc2UvX2hlbHBlcnMuc2NzcyIsImFwcC9iYXNlL19zZXR0aW5ncy5zY3NzIiwiYXBwL2Jhc2UvX2ZvbnRmYWNlLnNjc3MiLCJhcHAvYmFzZS9fYXBwLW1peGlucy5zY3NzIiwiYXBwL2NvbXBvbmVudHMvX19pbmRleC5zY3NzIiwiYXBwL2NvbXBvbmVudHMvX2FuaW1hdGUuc2NzcyIsImFwcC9jb21wb25lbnRzL190eXBvLnNjc3MiLCJhcHAvY29tcG9uZW50cy9faWNvbi5zY3NzIiwiYXBwL2NvbXBvbmVudHMvX2xheW91dC5zY3NzIiwiYXBwL2NvbXBvbmVudHMvX2hlYWRlci5zY3NzIiwiYXBwL2NvbXBvbmVudHMvX2Zvb3Rlci5zY3NzIiwiYXBwL2NvbXBvbmVudHMvZm9ybS9fX2luZGV4LnNjc3MiLCJhcHAvY29tcG9uZW50cy9mb3JtL19mb3JtLnNjc3MiLCJhcHAvY29tcG9uZW50cy9fbmF2LnNjc3MiLCJhcHAvY29tcG9uZW50cy9fbW9kYWwuc2NzcyIsImFwcC9jb21wb25lbnRzL19zZWN0aW9uLnNjc3MiLCJhcHAvY29tcG9uZW50cy9fYm94LnNjc3MiLCJhcHAvY29tcG9uZW50cy9fYnRuLnNjc3MiLCJhcHAvY29tcG9uZW50cy9fc2xpZGUuc2NzcyIsImFwcC9jb21wb25lbnRzL190YWJzLnNjc3MiLCJhcHAvY29tcG9uZW50cy9fYmxvZy5zY3NzIiwiYXBwL2NvbXBvbmVudHMvX3BhZ2luYXRpb24uc2NzcyIsImFwcC9jb21wb25lbnRzL19jdXN0b20uc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwic2V0dGluZ3NcIjtcclxuQGltcG9ydCBcInZhcmlhYmxlc1wiO1xyXG5AaW1wb3J0IFwiZm91bmRhdGlvblwiO1xyXG5AaW1wb3J0IFwiYXBwL19pbmRleFwiO1xyXG4iLCIvLyAgRm91bmRhdGlvbiBmb3IgU2l0ZXMgU2V0dGluZ3NcclxuLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vXHJcbi8vICBUYWJsZSBvZiBDb250ZW50czpcclxuLy9cclxuLy8gICAxLiBHbG9iYWxcclxuLy8gICAyLiBCcmVha3BvaW50c1xyXG4vLyAgIDMuIFRoZSBHcmlkXHJcbi8vICAgNC4gQmFzZSBUeXBvZ3JhcGh5XHJcbi8vICAgNS4gVHlwb2dyYXBoeSBIZWxwZXJzXHJcbi8vICAgNi4gQWJpZGVcclxuLy8gICA3LiBBY2NvcmRpb25cclxuLy8gICA4LiBBY2NvcmRpb24gTWVudVxyXG4vLyAgIDkuIEJhZGdlXHJcbi8vICAxMC4gQnJlYWRjcnVtYnNcclxuLy8gIDExLiBCdXR0b25cclxuLy8gIDEyLiBCdXR0b24gR3JvdXBcclxuLy8gIDEzLiBDYWxsb3V0XHJcbi8vICAxNC4gQ2FyZFxyXG4vLyAgMTUuIENsb3NlIEJ1dHRvblxyXG4vLyAgMTYuIERyaWxsZG93blxyXG4vLyAgMTcuIERyb3Bkb3duXHJcbi8vICAxOC4gRHJvcGRvd24gTWVudVxyXG4vLyAgMTkuIEZvcm1zXHJcbi8vICAyMC4gTGFiZWxcclxuLy8gIDIxLiBNZWRpYSBPYmplY3RcclxuLy8gIDIyLiBNZW51XHJcbi8vICAyMy4gTWV0ZXJcclxuLy8gIDI0LiBPZmYtY2FudmFzXHJcbi8vICAyNS4gT3JiaXRcclxuLy8gIDI2LiBQYWdpbmF0aW9uXHJcbi8vICAyNy4gUHJvZ3Jlc3MgQmFyXHJcbi8vICAyOC4gUmVzcG9uc2l2ZSBFbWJlZFxyXG4vLyAgMjkuIFJldmVhbFxyXG4vLyAgMzAuIFNsaWRlclxyXG4vLyAgMzEuIFN3aXRjaFxyXG4vLyAgMzIuIFRhYmxlXHJcbi8vICAzMy4gVGFic1xyXG4vLyAgMzQuIFRodW1ibmFpbFxyXG4vLyAgMzUuIFRpdGxlIEJhclxyXG4vLyAgMzYuIFRvb2x0aXBcclxuLy8gIDM3LiBUb3AgQmFyXHJcblxyXG5AaW1wb3J0ICd1dGlsL3V0aWwnO1xyXG5cclxuLy8gMS4gR2xvYmFsXHJcbi8vIC0tLS0tLS0tLVxyXG5cclxuJGdsb2JhbC1mb250LXNpemU6IDYyLjUlO1xyXG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxNDQwKTtcclxuJGdsb2JhbC1saW5laGVpZ2h0OiAxLjI1O1xyXG4kZm91bmRhdGlvbi1wYWxldHRlOiAoXHJcbiAgICAgICAgcHJpbWFyeTogIzE3NzliYSxcclxuICAgICAgICBzZWNvbmRhcnk6ICM3Njc2NzYsXHJcbiAgICAgICAgc3VjY2VzczogIzNhZGI3NixcclxuICAgICAgICB3YXJuaW5nOiAjZmZhZTAwLFxyXG4gICAgICAgIGFsZXJ0OiAjY2M0YjM3LFxyXG4pO1xyXG5cclxuJGNvbG9yOiAoXHJcbiAgICAgICAgcHJpbWFyeTogIzJlMmU0NCxcclxuICAgICAgICByZWQ6ICNjYzMzMzMsXHJcbiAgICAgICAgYmx1ZTogIzNhNDE4NSxcclxuICAgICAgICBncmVlbjogIzM2Y2M2MCxcclxuICAgICAgICB0ZXh0OiAjMzYzNjM2LFxyXG4gICAgICAgIGJvcmRlcjojZTdlN2U3XHJcbik7XHJcbiRzaGFkb3c6IChcclxuICAgICAgICB0ZXh0OiAwcHggMXB4IDNweCByZ2JhKDkxLCA5MSwgOTEsIDEpLFxyXG4gICAgICAgIGJveDogMHB4IDFweCAzcHggMC4wNnB4IHJnYmEoOTEsIDkxLCA5MSwgMSlcclxuKTtcclxuJGxpZ2h0LWdyYXk6ICNlNmU2ZTY7XHJcbiRtZWRpdW0tZ3JheTogI2NhY2FjYTtcclxuJGRhcmstZ3JheTogIzhhOGE4YTtcclxuJGJsYWNrOiAjMGEwYTBhO1xyXG4kd2hpdGU6ICNmZWZlZmU7XHJcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJGJvZHktZm9udC1jb2xvcjogJGJsYWNrO1xyXG4kYm9keS1mb250LWZhbWlseTogJ1JvYm90bycsIHNhbnMtc2VyaWY7XHJcbiRib2R5LWZvbnQtZmFtaWx5MjogJ1JvYm90bycsJ1BhbnRvbicsIHNhbnMtc2VyaWY7XHJcbiRib2R5LWFudGlhbGlhc2VkOiB0cnVlO1xyXG4kZ2xvYmFsLW1hcmdpbjogMXJlbTtcclxuJGdsb2JhbC1wYWRkaW5nOiAxcmVtO1xyXG4kZ2xvYmFsLXdlaWdodC1ub3JtYWw6IDMwMDtcclxuJGdsb2JhbC13ZWlnaHQtYm9sZDogYm9sZDtcclxuJGdsb2JhbC1yYWRpdXM6IDA7XHJcbiRnbG9iYWwtdGV4dC1kaXJlY3Rpb246IGx0cjtcclxuJGdsb2JhbC1mbGV4Ym94OiBmYWxzZTtcclxuJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzOiB0cnVlO1xyXG5cclxuQGluY2x1ZGUgYWRkLWZvdW5kYXRpb24tY29sb3JzO1xyXG5cclxuLy8gMi4gQnJlYWtwb2ludHNcclxuLy8gLS0tLS0tLS0tLS0tLS1cclxuJGZsZXgtc291cmNlLW9yZGVyaW5nLWNvdW50OiAxMjtcclxuJGJyZWFrcG9pbnRzOiAoXHJcbiAgICAgICAgc21hbGw6IDAsXHJcbiAgICAgICAgbWVkaXVtOiA2NDBweCxcclxuICAgICAgICB0YWJsZXQ6IDc2OHB4LFxyXG4gICAgICAgIGxhcmdlOiAxMDI0cHgsXHJcbiAgICAgICAgd2xhcmdlOiAxMjAwcHgsXHJcbiAgICAgICAgeGxhcmdlOiAxNDQwcHgsXHJcbiAgICAgICAgeHhsYXJnZTogMTkyMHB4LFxyXG4pO1xyXG4kcHJpbnQtYnJlYWtwb2ludDogdGFibGV0O1xyXG4kcHJpbnQtYnJlYWtwb2ludDogd2xhcmdlO1xyXG4kcHJpbnQtYnJlYWtwb2ludDogeGxhcmdlO1xyXG4kcHJpbnQtYnJlYWtwb2ludDogeHhsYXJnZTtcclxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSB0YWJsZXQgbGFyZ2Ugd2xhcmdlIHhsYXJnZSB4eGxhcmdlKTtcclxuXHJcbi8vIDMuIFRoZSBHcmlkTlxyXG4vLyAtLS0tLS0tLS0tLVxyXG5cclxuJGdyaWQtcm93LXdpZHRoOiAkZ2xvYmFsLXdpZHRoO1xyXG4kZ3JpZC1jb2x1bW4tY291bnQ6IDEyO1xyXG4kZ3JpZC1jb2x1bW4tZ3V0dGVyOiAoXHJcbiAgICAgICAgc21hbGw6IDMwcHgsXHJcbiAgICAgICAgbWVkaXVtOiAzMHB4LFxyXG4pO1xyXG4kZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZTogdHJ1ZTtcclxuJGJsb2NrLWdyaWQtbWF4OiA4O1xyXG5cclxuLy8gNC4gQmFzZSBUeXBvZ3JhcGh5XHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJGhlYWRlci1mb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHk7XHJcbiRoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcclxuJGhlYWRlci1mb250LXN0eWxlOiBub3JtYWw7XHJcbiRmb250LWZhbWlseS1tb25vc3BhY2U6IENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgQ291cmllciwgbW9ub3NwYWNlO1xyXG4kaGVhZGVyLWNvbG9yOiBpbmhlcml0O1xyXG4kaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNDtcclxuJGhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcbiRoZWFkZXItc3R5bGVzOiAoXHJcbiAgICAgICAgc21hbGw6IChcclxuICAgICAgICAgICAgICAgICdoMSc6ICgnZm9udC1zaXplJzogMjQpLFxyXG4gICAgICAgICAgICAgICAgJ2gyJzogKCdmb250LXNpemUnOiAyMCksXHJcbiAgICAgICAgICAgICAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDE5KSxcclxuICAgICAgICAgICAgICAgICdoNCc6ICgnZm9udC1zaXplJzogMTgpLFxyXG4gICAgICAgICAgICAgICAgJ2g1JzogKCdmb250LXNpemUnOiAxNyksXHJcbiAgICAgICAgICAgICAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcclxuICAgICAgICApLFxyXG4gICAgICAgIG1lZGl1bTogKFxyXG4gICAgICAgICAgICAgICAgJ2gxJzogKCdmb250LXNpemUnOiA0OCksXHJcbiAgICAgICAgICAgICAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDQwKSxcclxuICAgICAgICAgICAgICAgICdoMyc6ICgnZm9udC1zaXplJzogMzEpLFxyXG4gICAgICAgICAgICAgICAgJ2g0JzogKCdmb250LXNpemUnOiAyNSksXHJcbiAgICAgICAgICAgICAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcclxuICAgICAgICAgICAgICAgICdoNic6ICgnZm9udC1zaXplJzogMTYpLFxyXG4gICAgICAgICksXHJcbik7XHJcbiRoZWFkZXItdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcclxuJHNtYWxsLWZvbnQtc2l6ZTogODAlO1xyXG4kaGVhZGVyLXNtYWxsLWZvbnQtY29sb3I6ICRtZWRpdW0tZ3JheTtcclxuJHBhcmFncmFwaC1saW5laGVpZ2h0OiAxLjY7XHJcbiRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xyXG4kY29kZS1jb2xvcjogJGJsYWNrO1xyXG4kY29kZS1mb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTtcclxuJGNvZGUtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcclxuJGNvZGUtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XHJcbiRjb2RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuJGNvZGUtcGFkZGluZzogcmVtLWNhbGMoMiA1IDEpO1xyXG4kYW5jaG9yLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcclxuJGFuY2hvci1jb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGFuY2hvci1jb2xvciwgJGxpZ2h0bmVzczogLTE0JSk7XHJcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3Zlcjogbm9uZTtcclxuJGhyLXdpZHRoOiAkZ2xvYmFsLXdpZHRoO1xyXG4kaHItYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xyXG4kaHItbWFyZ2luOiByZW0tY2FsYygyMCkgYXV0bztcclxuJGxpc3QtbGluZWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xyXG4kbGlzdC1tYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XHJcbiRsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XHJcbiRsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlO1xyXG4kbGlzdC1zaWRlLW1hcmdpbjogMS4yNXJlbTtcclxuJGxpc3QtbmVzdGVkLXNpZGUtbWFyZ2luOiAxLjI1cmVtO1xyXG4kZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuJGRlZm5saXN0LXRlcm0td2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xyXG4kZGVmbmxpc3QtdGVybS1tYXJnaW4tYm90dG9tOiAwLjNyZW07XHJcbiRibG9ja3F1b3RlLWNvbG9yOiAkZGFyay1ncmF5O1xyXG4kYmxvY2txdW90ZS1wYWRkaW5nOiByZW0tY2FsYyg5IDIwIDAgMTkpO1xyXG4kYmxvY2txdW90ZS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcbiRjaXRlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xyXG4kY2l0ZS1jb2xvcjogJGRhcmstZ3JheTtcclxuJGNpdGUtcHNldWRvLWNvbnRlbnQ6ICdcXDIwMTQgXFwwMDIwJztcclxuJGtleXN0cm9rZS1mb250OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlO1xyXG4ka2V5c3Ryb2tlLWNvbG9yOiAkYmxhY2s7XHJcbiRrZXlzdHJva2UtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XHJcbiRrZXlzdHJva2UtcGFkZGluZzogcmVtLWNhbGMoMiA0IDApO1xyXG4ka2V5c3Ryb2tlLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRhYmJyLXVuZGVybGluZTogMXB4IGRvdHRlZCAkYmxhY2s7XHJcblxyXG4vLyA1LiBUeXBvZ3JhcGh5IEhlbHBlcnNcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kbGVhZC1mb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplICogMS4yNTtcclxuJGxlYWQtbGluZWhlaWdodDogMS42O1xyXG4kc3ViaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNDtcclxuJHN1YmhlYWRlci1jb2xvcjogJGRhcmstZ3JheTtcclxuJHN1YmhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xyXG4kc3ViaGVhZGVyLW1hcmdpbi10b3A6IDAuMnJlbTtcclxuJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcbiRzdGF0LWZvbnQtc2l6ZTogMi41cmVtO1xyXG5cclxuLy8gNi4gQWJpZGVcclxuLy8gLS0tLS0tLS1cclxuXHJcbiRhYmlkZS1pbnB1dHM6IHRydWU7XHJcbiRhYmlkZS1sYWJlbHM6IHRydWU7XHJcbiRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCk7XHJcbiRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCk7XHJcbiRpbnB1dC1lcnJvci1jb2xvcjogZ2V0LWNvbG9yKGFsZXJ0KTtcclxuJGlucHV0LWVycm9yLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xyXG4kaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XHJcblxyXG4vLyA3LiBBY2NvcmRpb25cclxuLy8gLS0tLS0tLS0tLS0tXHJcblxyXG4kYWNjb3JkaW9uLWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJGFjY29yZGlvbi1wbHVzbWludXM6IHRydWU7XHJcbiRhY2NvcmRpb24tdGl0bGUtZm9udC1zaXplOiByZW0tY2FsYygxMik7XHJcbiRhY2NvcmRpb24taXRlbS1jb2xvcjogJHByaW1hcnktY29sb3I7XHJcbiRhY2NvcmRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheTtcclxuJGFjY29yZGlvbi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMXJlbTtcclxuJGFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5O1xyXG4kYWNjb3JkaW9uLWNvbnRlbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XHJcbiRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nOiAxcmVtO1xyXG5cclxuLy8gOC4gQWNjb3JkaW9uIE1lbnVcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRhY2NvcmRpb25tZW51LWFycm93czogdHJ1ZTtcclxuJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xyXG4kYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplOiA2cHg7XHJcblxyXG4vLyA5LiBCYWRnZVxyXG4vLyAtLS0tLS0tLVxyXG5cclxuJGJhZGdlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xyXG4kYmFkZ2UtY29sb3I6ICR3aGl0ZTtcclxuJGJhZGdlLWNvbG9yLWFsdDogJGJsYWNrO1xyXG4kYmFkZ2UtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcclxuJGJhZGdlLXBhZGRpbmc6IDAuM2VtO1xyXG4kYmFkZ2UtbWlud2lkdGg6IDIuMWVtO1xyXG4kYmFkZ2UtZm9udC1zaXplOiAwLjZyZW07XHJcblxyXG4vLyAxMC4gQnJlYWRjcnVtYnNcclxuLy8gLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kYnJlYWRjcnVtYnMtbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMDtcclxuJGJyZWFkY3J1bWJzLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMSk7XHJcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDogJGJsYWNrO1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5O1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW46IDAuNzVyZW07XHJcbiRicmVhZGNydW1icy1pdGVtLXVwcGVyY2FzZTogdHJ1ZTtcclxuJGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2g6IHRydWU7XHJcblxyXG4vLyAxMS4gQnV0dG9uXHJcbi8vIC0tLS0tLS0tLS1cclxuXHJcbiRidXR0b24tcGFkZGluZzogMC44NWVtIDFlbTtcclxuJGJ1dHRvbi1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwO1xyXG4kYnV0dG9uLWZpbGw6IHNvbGlkO1xyXG4kYnV0dG9uLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xyXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRidXR0b24tYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSk7XHJcbiRidXR0b24tY29sb3I6ICR3aGl0ZTtcclxuJGJ1dHRvbi1jb2xvci1hbHQ6ICRibGFjaztcclxuJGJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kYnV0dG9uLXNpemVzOiAoXHJcbiAgICAgICAgdGlueTogMC42cmVtLFxyXG4gICAgICAgIHNtYWxsOiAwLjc1cmVtLFxyXG4gICAgICAgIGRlZmF1bHQ6IDAuOXJlbSxcclxuICAgICAgICBsYXJnZTogMS4yNXJlbSxcclxuKTtcclxuJGJ1dHRvbi1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlO1xyXG4kYnV0dG9uLW9wYWNpdHktZGlzYWJsZWQ6IDAuMjU7XHJcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3M6IC0yMCU7XHJcbiRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzczogLTUwJTtcclxuJGJ1dHRvbi10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzIGVhc2Utb3V0LCBjb2xvciAwLjI1cyBlYXNlLW91dDtcclxuXHJcbi8vIDEyLiBCdXR0b24gR3JvdXBcclxuLy8gLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJGJ1dHRvbmdyb3VwLW1hcmdpbjogMXJlbTtcclxuJGJ1dHRvbmdyb3VwLXNwYWNpbmc6IDFweDtcclxuJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yOiAnLmJ1dHRvbic7XHJcbiRidXR0b25ncm91cC1leHBhbmQtbWF4OiA2O1xyXG4kYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2g6IHRydWU7XHJcblxyXG4vLyAxMy4gQ2FsbG91dFxyXG4vLyAtLS0tLS0tLS0tLVxyXG5cclxuJGNhbGxvdXQtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kY2FsbG91dC1iYWNrZ3JvdW5kLWZhZGU6IDg1JTtcclxuJGNhbGxvdXQtYm9yZGVyOiAxcHggc29saWQgcmdiYSgkYmxhY2ssIDAuMjUpO1xyXG4kY2FsbG91dC1tYXJnaW46IDAgMCAxcmVtIDA7XHJcbiRjYWxsb3V0LXBhZGRpbmc6IDFyZW07XHJcbiRjYWxsb3V0LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XHJcbiRjYWxsb3V0LWZvbnQtY29sb3ItYWx0OiAkYm9keS1iYWNrZ3JvdW5kO1xyXG4kY2FsbG91dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kY2FsbG91dC1saW5rLXRpbnQ6IDMwJTtcclxuXHJcbi8vIDE0LiBDYXJkXHJcbi8vIC0tLS0tLS0tXHJcblxyXG4kY2FyZC1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiRjYXJkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XHJcbiRjYXJkLWRpdmlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XHJcbiRjYXJkLWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5O1xyXG4kY2FyZC1zaGFkb3c6IG5vbmU7XHJcbiRjYXJkLWJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kY2FyZC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XHJcbiRjYXJkLW1hcmdpbjogJGdsb2JhbC1tYXJnaW47XHJcblxyXG4vLyAxNS4gQ2xvc2UgQnV0dG9uXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRjbG9zZWJ1dHRvbi1wb3NpdGlvbjogcmlnaHQgdG9wO1xyXG4kY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWw6IChcclxuICAgICAgICBzbWFsbDogMC42NnJlbSxcclxuICAgICAgICBtZWRpdW06IDFyZW0sXHJcbik7XHJcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWw6IChcclxuICAgICAgICBzbWFsbDogMC4zM2VtLFxyXG4gICAgICAgIG1lZGl1bTogMC41cmVtLFxyXG4pO1xyXG4kY2xvc2VidXR0b24tc2l6ZTogKFxyXG4gICAgICAgIHNtYWxsOiAxLjVlbSxcclxuICAgICAgICBtZWRpdW06IDJlbSxcclxuKTtcclxuJGNsb3NlYnV0dG9uLWxpbmVoZWlnaHQ6IDE7XHJcbiRjbG9zZWJ1dHRvbi1jb2xvcjogJGRhcmstZ3JheTtcclxuJGNsb3NlYnV0dG9uLWNvbG9yLWhvdmVyOiAkYmxhY2s7XHJcblxyXG4vLyAxNi4gRHJpbGxkb3duXHJcbi8vIC0tLS0tLS0tLS0tLS1cclxuXHJcbiRkcmlsbGRvd24tdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGxpbmVhcjtcclxuJGRyaWxsZG93bi1hcnJvd3M6IHRydWU7XHJcbiRkcmlsbGRvd24tYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xyXG4kZHJpbGxkb3duLWFycm93LXNpemU6IDZweDtcclxuJGRyaWxsZG93bi1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcblxyXG4vLyAxNy4gRHJvcGRvd25cclxuLy8gLS0tLS0tLS0tLS0tXHJcblxyXG4kZHJvcGRvd24tcGFkZGluZzogMXJlbTtcclxuJGRyb3Bkb3duLWJhY2tncm91bmQ6ICRib2R5LWJhY2tncm91bmQ7XHJcbiRkcm9wZG93bi1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcbiRkcm9wZG93bi1mb250LXNpemU6IDFyZW07XHJcbiRkcm9wZG93bi13aWR0aDogMzAwcHg7XHJcbiRkcm9wZG93bi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kZHJvcGRvd24tc2l6ZXM6IChcclxuICAgICAgICB0aW55OiAxMDBweCxcclxuICAgICAgICBzbWFsbDogMjAwcHgsXHJcbiAgICAgICAgbGFyZ2U6IDQwMHB4LFxyXG4pO1xyXG5cclxuLy8gMTguIERyb3Bkb3duIE1lbnVcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRkcm9wZG93bm1lbnUtYXJyb3dzOiB0cnVlO1xyXG4kZHJvcGRvd25tZW51LWFycm93LWNvbG9yOiAkYW5jaG9yLWNvbG9yO1xyXG4kZHJvcGRvd25tZW51LWFycm93LXNpemU6IDZweDtcclxuJGRyb3Bkb3dubWVudS1taW4td2lkdGg6IDIwMHB4O1xyXG4kZHJvcGRvd25tZW51LWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJGRyb3Bkb3dubWVudS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcblxyXG4vLyAxOS4gRm9ybXNcclxuLy8gLS0tLS0tLS0tXHJcblxyXG4kZmllbGRzZXQtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xyXG4kZmllbGRzZXQtcGFkZGluZzogcmVtLWNhbGMoMjApO1xyXG4kZmllbGRzZXQtbWFyZ2luOiByZW0tY2FsYygxOCAwKTtcclxuJGxlZ2VuZC1wYWRkaW5nOiByZW0tY2FsYygwIDMpO1xyXG4kZm9ybS1zcGFjaW5nOiByZW0tY2FsYygxNik7XHJcbiRoZWxwdGV4dC1jb2xvcjogJGJsYWNrO1xyXG4kaGVscHRleHQtZm9udC1zaXplOiByZW0tY2FsYygxMyk7XHJcbiRoZWxwdGV4dC1mb250LXN0eWxlOiBpdGFsaWM7XHJcbiRpbnB1dC1wcmVmaXgtY29sb3I6ICRibGFjaztcclxuJGlucHV0LXByZWZpeC1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcclxuJGlucHV0LXByZWZpeC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcbiRpbnB1dC1wcmVmaXgtcGFkZGluZzogMXJlbTtcclxuJGZvcm0tbGFiZWwtY29sb3I6ICRibGFjaztcclxuJGZvcm0tbGFiZWwtZm9udC1zaXplOiByZW0tY2FsYygxNCk7XHJcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XHJcbiRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0OiAxLjg7XHJcbiRzZWxlY3QtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kc2VsZWN0LXRyaWFuZ2xlLWNvbG9yOiAkZGFyay1ncmF5O1xyXG4kc2VsZWN0LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRpbnB1dC1jb2xvcjogJGJsYWNrO1xyXG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICRtZWRpdW0tZ3JheTtcclxuJGlucHV0LWZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG4kaW5wdXQtZm9udC1zaXplOiByZW0tY2FsYygxNik7XHJcbiRpbnB1dC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xyXG4kaW5wdXQtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kaW5wdXQtYmFja2dyb3VuZC1mb2N1czogJHdoaXRlO1xyXG4kaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDogJGxpZ2h0LWdyYXk7XHJcbiRpbnB1dC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcbiRpbnB1dC1ib3JkZXItZm9jdXM6IDFweCBzb2xpZCAkZGFyay1ncmF5O1xyXG4kaW5wdXQtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgkYmxhY2ssIDAuMSk7XHJcbiRpbnB1dC1zaGFkb3ctZm9jdXM6IDAgMCA1cHggJG1lZGl1bS1ncmF5O1xyXG4kaW5wdXQtY3Vyc29yLWRpc2FibGVkOiBub3QtYWxsb3dlZDtcclxuJGlucHV0LXRyYW5zaXRpb246IGJveC1zaGFkb3cgMC41cywgYm9yZGVyLWNvbG9yIDAuMjVzIGVhc2UtaW4tb3V0O1xyXG4kaW5wdXQtbnVtYmVyLXNwaW5uZXJzOiB0cnVlO1xyXG4kaW5wdXQtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJGZvcm0tYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcblxyXG4vLyAyMC4gTGFiZWxcclxuLy8gLS0tLS0tLS0tXHJcblxyXG4kbGFiZWwtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XHJcbiRsYWJlbC1jb2xvcjogJHdoaXRlO1xyXG4kbGFiZWwtY29sb3ItYWx0OiAkYmxhY2s7XHJcbiRsYWJlbC1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlO1xyXG4kbGFiZWwtZm9udC1zaXplOiAwLjhyZW07XHJcbiRsYWJlbC1wYWRkaW5nOiAwLjMzMzMzcmVtIDAuNXJlbTtcclxuJGxhYmVsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcblxyXG4vLyAyMS4gTWVkaWEgT2JqZWN0XHJcbi8vIC0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcclxuJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nO1xyXG4kbWVkaWFvYmplY3QtaW1hZ2Utd2lkdGgtc3RhY2tlZDogMTAwJTtcclxuXHJcbi8vIDIyLiBNZW51XHJcbi8vIC0tLS0tLS0tXHJcblxyXG4kbWVudS1tYXJnaW46IDA7XHJcbiRtZW51LW1hcmdpbi1uZXN0ZWQ6IDFyZW07XHJcbiRtZW51LWl0ZW0tcGFkZGluZzogMC43cmVtIDFyZW07XHJcbiRtZW51LWl0ZW0tY29sb3ItYWN0aXZlOiAkd2hpdGU7XHJcbiRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU6IGdldC1jb2xvcihwcmltYXJ5KTtcclxuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtO1xyXG4kbWVudS1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRsaWdodC1ncmF5O1xyXG4kbWVudS1ib3JkZXI6ICRsaWdodC1ncmF5O1xyXG5cclxuLy8gMjMuIE1ldGVyXHJcbi8vIC0tLS0tLS0tLVxyXG5cclxuJG1ldGVyLWhlaWdodDogMXJlbTtcclxuJG1ldGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRtZXRlci1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XHJcbiRtZXRlci1maWxsLWdvb2Q6ICRzdWNjZXNzLWNvbG9yO1xyXG4kbWV0ZXItZmlsbC1tZWRpdW06ICR3YXJuaW5nLWNvbG9yO1xyXG4kbWV0ZXItZmlsbC1iYWQ6ICRhbGVydC1jb2xvcjtcclxuXHJcbi8vIDI0LiBPZmYtY2FudmFzXHJcbi8vIC0tLS0tLS0tLS0tLS0tXHJcblxyXG4kb2ZmY2FudmFzLXNpemU6IDI1MHB4O1xyXG4kb2ZmY2FudmFzLXZlcnRpY2FsLXNpemU6IDI1MHB4O1xyXG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xyXG4kb2ZmY2FudmFzLXNoYWRvdzogMCAwIDEwcHggcmdiYSgkYmxhY2ssIDAuNyk7XHJcbiRvZmZjYW52YXMtcHVzaC16aW5kZXg6IDE7XHJcbiRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXg6IDEwO1xyXG4kb2ZmY2FudmFzLXJldmVhbC16aW5kZXg6IDE7XHJcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGg6IDAuNXM7XHJcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc6IGVhc2U7XHJcbiRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsOiB0cnVlO1xyXG4kb2ZmY2FudmFzLWV4aXQtYmFja2dyb3VuZDogcmdiYSgkd2hpdGUsIDAuMjUpO1xyXG4kbWFpbmNvbnRlbnQtY2xhc3M6ICdvZmYtY2FudmFzLWNvbnRlbnQnO1xyXG5cclxuLy8gMjUuIE9yYml0XHJcbi8vIC0tLS0tLS0tLVxyXG5cclxuJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XHJcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU6ICRkYXJrLWdyYXk7XHJcbiRvcmJpdC1idWxsZXQtZGlhbWV0ZXI6IDEuMnJlbTtcclxuJG9yYml0LWJ1bGxldC1tYXJnaW46IDAuMXJlbTtcclxuJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wOiAwLjhyZW07XHJcbiRvcmJpdC1idWxsZXQtbWFyZ2luLWJvdHRvbTogMC44cmVtO1xyXG4kb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC41KTtcclxuJG9yYml0LWNhcHRpb24tcGFkZGluZzogMXJlbTtcclxuJG9yYml0LWNvbnRyb2wtYmFja2dyb3VuZC1ob3ZlcjogcmdiYSgkYmxhY2ssIDAuNSk7XHJcbiRvcmJpdC1jb250cm9sLXBhZGRpbmc6IDFyZW07XHJcbiRvcmJpdC1jb250cm9sLXppbmRleDogMTA7XHJcblxyXG4vLyAyNi4gUGFnaW5hdGlvblxyXG4vLyAtLS0tLS0tLS0tLS0tLVxyXG5cclxuJHBhZ2luYXRpb24tZm9udC1zaXplOiByZW0tY2FsYygxNCk7XHJcbiRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xyXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yOiAkYmxhY2s7XHJcbiRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZzogcmVtLWNhbGMoMyAxMCk7XHJcbiRwYWdpbmF0aW9uLWl0ZW0tc3BhY2luZzogcmVtLWNhbGMoMSk7XHJcbiRwYWdpbmF0aW9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXk7XHJcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1jdXJyZW50OiAkcHJpbWFyeS1jb2xvcjtcclxuJHBhZ2luYXRpb24taXRlbS1jb2xvci1jdXJyZW50OiAkd2hpdGU7XHJcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheTtcclxuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjaztcclxuJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zOiBmYWxzZTtcclxuJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbTogZmFsc2U7XHJcbiRwYWdpbmF0aW9uLWFycm93czogdHJ1ZTtcclxuXHJcbi8vIDI3LiBQcm9ncmVzcyBCYXJcclxuLy8gLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb2dyZXNzLWhlaWdodDogMXJlbTtcclxuJHByb2dyZXNzLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcclxuJHByb2dyZXNzLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xyXG4kcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XHJcbiRwcm9ncmVzcy1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG5cclxuLy8gMjguIFJlc3BvbnNpdmUgRW1iZWRcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRyZXNwb25zaXZlLWVtYmVkLW1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDApO1xyXG4kcmVzcG9uc2l2ZS1lbWJlZC1yYXRpb3M6IChcclxuICAgICAgICBkZWZhdWx0OiA0IGJ5IDMsXHJcbiAgICAgICAgcG9ydHJhaXQ6IDMgYnkgNC41LFxyXG4gICAgICAgIHNxdWFyZTogMSBieSAwLjg4LFxyXG4gICAgICAgIGV2ZW50OiAxIGJ5IDAuNzIsXHJcbiAgICAgICAgbWVkaWEtc3F1YXJlOiAxIGJ5IDEsXHJcbiAgICAgICAgbWVkaWEtcG9ydHJhaXQ6IDEgYnkgMS4yLFxyXG4gICAgICAgIGNpcmNsZTogMSBieSAxLFxyXG4gICAgICAgIHdpZGU6IDEgYnkgMC42NCxcclxuICAgICAgICB2aWRlbzogMSBieSAwLjU2MjUsXHJcbiAgICAgICAgYmxvZzogMSBieSAwLjY4NzUsXHJcbiAgICAgICAgd2lkZXNjcmVlbjogMTYgYnkgOSxcclxuICAgICAgICBjaW5lbWE6IDIxIGJ5IDksXHJcbiAgICAgICAgcGFub3JhbWE6IDM1IGJ5IDksXHJcbik7XHJcblxyXG4vLyAyOS4gUmV2ZWFsXHJcbi8vIC0tLS0tLS0tLS1cclxuXHJcbiRyZXZlYWwtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kcmV2ZWFsLXdpZHRoOiA2MDBweDtcclxuJHJldmVhbC1tYXgtd2lkdGg6ICRnbG9iYWwtd2lkdGg7XHJcbiRyZXZlYWwtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nO1xyXG4kcmV2ZWFsLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuJHJldmVhbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kcmV2ZWFsLXppbmRleDogMTAwNTtcclxuJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjQpO1xyXG5cclxuLy8gMzAuIFNsaWRlclxyXG4vLyAtLS0tLS0tLS0tXHJcblxyXG4kc2xpZGVyLXdpZHRoLXZlcnRpY2FsOiAwLjVyZW07XHJcbiRzbGlkZXItdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XHJcbiRzbGlkZXItaGVpZ2h0OiAwLjVyZW07XHJcbiRzbGlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XHJcbiRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XHJcbiRzbGlkZXItaGFuZGxlLWhlaWdodDogMS40cmVtO1xyXG4kc2xpZGVyLWhhbmRsZS13aWR0aDogMS40cmVtO1xyXG4kc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcclxuJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkOiAwLjI1O1xyXG4kc2xpZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcblxyXG4vLyAzMS4gU3dpdGNoXHJcbi8vIC0tLS0tLS0tLS1cclxuXHJcbiRzd2l0Y2gtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xyXG4kc3dpdGNoLWJhY2tncm91bmQtYWN0aXZlOiAkcHJpbWFyeS1jb2xvcjtcclxuJHN3aXRjaC1oZWlnaHQ6IDJyZW07XHJcbiRzd2l0Y2gtaGVpZ2h0LXRpbnk6IDEuNXJlbTtcclxuJHN3aXRjaC1oZWlnaHQtc21hbGw6IDEuNzVyZW07XHJcbiRzd2l0Y2gtaGVpZ2h0LWxhcmdlOiAyLjVyZW07XHJcbiRzd2l0Y2gtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJHN3aXRjaC1tYXJnaW46ICRnbG9iYWwtbWFyZ2luO1xyXG4kc3dpdGNoLXBhZGRsZS1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiRzd2l0Y2gtcGFkZGxlLW9mZnNldDogMC4yNXJlbTtcclxuJHN3aXRjaC1wYWRkbGUtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2Utb3V0O1xyXG5cclxuLy8gMzIuIFRhYmxlXHJcbi8vIC0tLS0tLS0tLVxyXG5cclxuJHRhYmxlLWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJHRhYmxlLWNvbG9yLXNjYWxlOiA1JTtcclxuJHRhYmxlLWJvcmRlcjogMXB4IHNvbGlkIHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpO1xyXG4kdGFibGUtcGFkZGluZzogcmVtLWNhbGMoOCAxMCAxMCk7XHJcbiR0YWJsZS1ob3Zlci1zY2FsZTogMiU7XHJcbiR0YWJsZS1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKTtcclxuJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlICsgJHRhYmxlLWhvdmVyLXNjYWxlKTtcclxuJHRhYmxlLWlzLXN0cmlwZWQ6IHRydWU7XHJcbiR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpO1xyXG4kdGFibGUtc3RyaXBlOiBldmVuO1xyXG4kdGFibGUtaGVhZC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlIC8gMik7XHJcbiR0YWJsZS1oZWFkLXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1oZWFkLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSk7XHJcbiR0YWJsZS1mb290LWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpO1xyXG4kdGFibGUtZm9vdC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtZm9vdC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpO1xyXG4kdGFibGUtaGVhZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xyXG4kdGFibGUtZm9vdC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xyXG4kc2hvdy1oZWFkZXItZm9yLXN0YWNrZWQ6IGZhbHNlO1xyXG5cclxuLy8gMzMuIFRhYnNcclxuLy8gLS0tLS0tLS1cclxuXHJcbiR0YWItbWFyZ2luOiAwO1xyXG4kdGFiLWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJHRhYi1jb2xvcjogJHByaW1hcnktY29sb3I7XHJcbiR0YWItYmFja2dyb3VuZC1hY3RpdmU6ICRsaWdodC1ncmF5O1xyXG4kdGFiLWFjdGl2ZS1jb2xvcjogJHByaW1hcnktY29sb3I7XHJcbiR0YWItaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDEyKTtcclxuJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICR3aGl0ZTtcclxuJHRhYi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMS41cmVtO1xyXG4kdGFiLWV4cGFuZC1tYXg6IDY7XHJcbiR0YWItY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiR0YWItY29udGVudC1ib3JkZXI6ICRsaWdodC1ncmF5O1xyXG4kdGFiLWNvbnRlbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XHJcbiR0YWItY29udGVudC1wYWRkaW5nOiAxcmVtO1xyXG5cclxuLy8gMzQuIFRodW1ibmFpbFxyXG4vLyAtLS0tLS0tLS0tLS0tXHJcblxyXG4kdGh1bWJuYWlsLWJvcmRlcjogc29saWQgNHB4ICR3aGl0ZTtcclxuJHRodW1ibmFpbC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcclxuJHRodW1ibmFpbC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKCRibGFjaywgMC4yKTtcclxuJHRodW1ibmFpbC1zaGFkb3ctaG92ZXI6IDAgMCA2cHggMXB4IHJnYmEoJHByaW1hcnktY29sb3IsIDAuNSk7XHJcbiR0aHVtYm5haWwtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAyMDBtcyBlYXNlLW91dDtcclxuJHRodW1ibmFpbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG5cclxuLy8gMzUuIFRpdGxlIEJhclxyXG4vLyAtLS0tLS0tLS0tLS0tXHJcblxyXG4kdGl0bGViYXItYmFja2dyb3VuZDogJGJsYWNrO1xyXG4kdGl0bGViYXItY29sb3I6ICR3aGl0ZTtcclxuJHRpdGxlYmFyLXBhZGRpbmc6IDAuNXJlbTtcclxuJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiR0aXRsZWJhci1pY29uLWNvbG9yOiAkd2hpdGU7XHJcbiR0aXRsZWJhci1pY29uLWNvbG9yLWhvdmVyOiAkbWVkaXVtLWdyYXk7XHJcbiR0aXRsZWJhci1pY29uLXNwYWNpbmc6IDAuMjVyZW07XHJcblxyXG4vLyAzNi4gVG9vbHRpcFxyXG4vLyAtLS0tLS0tLS0tLVxyXG5cclxuJGhhcy10aXAtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XHJcbiRoYXMtdGlwLWJvcmRlci1ib3R0b206IGRvdHRlZCAxcHggJGRhcmstZ3JheTtcclxuJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrO1xyXG4kdG9vbHRpcC1jb2xvcjogJHdoaXRlO1xyXG4kdG9vbHRpcC1wYWRkaW5nOiAwLjc1cmVtO1xyXG4kdG9vbHRpcC1mb250LXNpemU6ICRzbWFsbC1mb250LXNpemU7XHJcbiR0b29sdGlwLXBpcC13aWR0aDogMC43NXJlbTtcclxuJHRvb2x0aXAtcGlwLWhlaWdodDogJHRvb2x0aXAtcGlwLXdpZHRoICogMC44NjY7XHJcbiR0b29sdGlwLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcblxyXG4vLyAzNy4gVG9wIEJhclxyXG4vLyAtLS0tLS0tLS0tLVxyXG5cclxuJHRvcGJhci1wYWRkaW5nOiAwLjVyZW07XHJcbiR0b3BiYXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XHJcbiR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kOiAkdG9wYmFyLWJhY2tncm91bmQ7XHJcbiR0b3BiYXItdGl0bGUtc3BhY2luZzogMC41cmVtIDFyZW0gMC41cmVtIDA7XHJcbiR0b3BiYXItaW5wdXQtd2lkdGg6IDIwMHB4O1xyXG4kdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludDogbWVkaXVtO1xyXG5cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AaW1wb3J0ICdtYXRoJztcbkBpbXBvcnQgJ3VuaXQnO1xuQGltcG9ydCAndmFsdWUnO1xuQGltcG9ydCAnZGlyZWN0aW9uJztcbkBpbXBvcnQgJ2NvbG9yJztcbkBpbXBvcnQgJ3NlbGVjdG9yJztcbkBpbXBvcnQgJ2ZsZXgnO1xuQGltcG9ydCAnYnJlYWtwb2ludCc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuQGltcG9ydCAndHlwb2dyYXBoeSc7XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBGaW5kcyB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgdHdvIGludGVnZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRhIC0gRmlyc3QgbnVtYmVyIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiIC0gU2Vjb25kIG51bWJlciB0byBjb21wYXJlLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yLlxuQGZ1bmN0aW9uIGdjZCgkYSwgJGIpIHtcbiAgLy8gRnJvbTogaHR0cDovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL0dyZWF0ZXN0X2NvbW1vbl9kaXZpc29yI0phdmFTY3JpcHRcbiAgQGlmICgkYiAhPSAwKSB7XG4gICAgQHJldHVybiBnY2QoJGIsICRhICUgJGIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGFicygkYSk7XG4gIH1cbn1cblxuLy8vIEhhbmRsZXMgZGVjaW1hbCBleHBvbmVudHMgYnkgdHJ5aW5nIHRvIGNvbnZlcnQgdGhlbSBpbnRvIGEgZnJhY3Rpb24gYW5kIHRoZW4gdXNlIGEgbnRoLXJvb3QtYWxnb3JpdGhtIGZvciBwYXJ0cyBvZiB0aGUgY2FsY3VsYXRpb25cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBiYXNlIG51bWJlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGV4cG9uZW50IC0gVGhlIGV4cG9uZW50LlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHByb2R1Y3Qgb2YgdGhlIGV4cG9uZW50aWF0aW9uLlxuQGZ1bmN0aW9uIHBvdygkYmFzZSwgJGV4cG9uZW50LCAkcHJlYzogMTYpIHtcbiAgQGlmIChmbG9vcigkZXhwb25lbnQpICE9ICRleHBvbmVudCkge1xuICAgICRwcmVjMiA6IHBvdygxMCwgJHByZWMpO1xuICAgICRleHBvbmVudDogcm91bmQoJGV4cG9uZW50ICogJHByZWMyKTtcbiAgICAkZGVub21pbmF0b3I6IGdjZCgkZXhwb25lbnQsICRwcmVjMik7XG4gICAgQHJldHVybiBudGgtcm9vdChwb3coJGJhc2UsICRleHBvbmVudCAvICRkZW5vbWluYXRvciksICRwcmVjMiAvICRkZW5vbWluYXRvciwgJHByZWMpO1xuICB9XG5cbiAgJHZhbHVlOiAkYmFzZTtcbiAgQGlmICRleHBvbmVudCA+IDEge1xuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGV4cG9uZW50IHtcbiAgICAgICR2YWx1ZTogJHZhbHVlICogJGJhc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRleHBvbmVudCA8IDEge1xuICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggLSRleHBvbmVudCB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAvICRiYXNlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG5AZnVuY3Rpb24gbnRoLXJvb3QoJG51bSwgJG46IDIsICRwcmVjOiAxMikge1xuICAvLyBGcm9tOiBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTnRoX3Jvb3QjSmF2YVNjcmlwdFxuICAkeDogMTtcblxuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRwcmVjIHtcbiAgICAkeDogMSAvICRuICogKCgkbiAtIDEpICogJHggKyAoJG51bSAvIHBvdygkeCwgJG4gLSAxKSkpO1xuICB9XG5cbiAgQHJldHVybiAkeDtcbn1cblxuLy8vIENhbGN1bGF0ZXMgdGhlIGhlaWdodCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHdpZHRoIGZvciBhIGdpdmVuIHJhdGlvLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHJhdGlvIC0gUmF0aW8gdG8gdXNlIHRvIGNhbGN1bGF0ZSB0aGUgaGVpZ2h0LCBmb3JtYXR0ZWQgYXMgYHggYnkgeWAuXG4vLy8gQHJldHVybiB7TnVtYmVyfSBBIHBlcmNlbnRhZ2UgdmFsdWUgZm9yIHRoZSBoZWlnaHQgcmVsYXRpdmUgdG8gdGhlIHdpZHRoIG9mIGEgcmVzcG9uc2l2ZSBjb250YWluZXIuXG5AZnVuY3Rpb24gcmF0aW8tdG8tcGVyY2VudGFnZSgkcmF0aW8pIHtcbiAgJHc6IG50aCgkcmF0aW8sIDEpO1xuICAkaDogbnRoKCRyYXRpbywgMyk7XG4gIEByZXR1cm4gJGggLyAkdyAqIDEwMCU7XG59XG5cbi8vLyBQYXJzZSB0aGUgZ2l2ZW4gYCRmcmFjdGlvbmAgdG8gbnVtZXJhdG9ycyBhbmQgZGVudW1lcmF0b3JzLlxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkZnJhY3Rpb24gLSBWYWx1ZSByZXByZXNlbnRpbmcgYSBmcmFjdGlvbiB0byBwYXJzZS4gSXQgY2FuIGJlIGZvcm1hdHRlZCBhcyBgNTAlYCwgYDEgb2YgMmAsIGAxLzJgIG9yIGA1MGAgKG5vIGRlbm9taW5hdG9yIHdvdWxkIGJlIHJldHVybmVkKS5cbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9IExpc3Qgb2YgcGFyc2VkIHZhbHVlcyB3aXRoIG51bWVyYXRvciBhdCBmaXJzdCBwb3NpdGlvbiBhbmQgZGVudW1lcmF0b3IgYXMgc2Vjb25kLiBUaGVzZSB2YWx1ZXMgbWF5IGJlIG51bGwuXG5AZnVuY3Rpb24gemYtcGFyc2UtZnJhY3Rpb24oJGZyYWN0aW9uKSB7XG5cbiAgQGlmIHR5cGUtb2YoJGZyYWN0aW9uKSA9PSAnbnVtYmVyJyB7XG4gICAgLy8gXCI1MCVcIlxuICAgIEBpZiB1bml0KCRmcmFjdGlvbikgPT0gJyUnIHtcbiAgICAgIEByZXR1cm4gKHN0cmlwLXVuaXQoJGZyYWN0aW9uKSwgMTAwKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKHVuaXQoJGZyYWN0aW9uKSA9PSAnJykge1xuICAgICAgLy8gXCIwLjVcIlxuICAgICAgQGlmICRmcmFjdGlvbiA8IDEge1xuICAgICAgICBAcmV0dXJuICgkZnJhY3Rpb24gKiAxMDAsIDEwMCk7XG4gICAgICB9XG4gICAgICAvLyBcIjUwXCJcbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQHJldHVybiAoJGZyYWN0aW9uLCBudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiB0eXBlLW9mKCRmcmFjdGlvbikgPT0gJ2xpc3QnIHtcbiAgICAvLyBcIjUwIG9mIDEwMFwiLCBcIjUwLzEwMFwiLi4uXG4gICAgQGlmIGxlbmd0aCgkZnJhY3Rpb24pID09IDNcbiAgICAgIGFuZCB0eXBlLW9mKG50aCgkZnJhY3Rpb24sIDEpID09ICdudW1iZXInKVxuICAgICAgYW5kIHR5cGUtb2YobnRoKCRmcmFjdGlvbiwgMykgPT0gJ251bWJlcicpIHtcbiAgICAgIEByZXR1cm4gKG50aCgkZnJhY3Rpb24sIDEpLCBudGgoJGZyYWN0aW9uLCAzKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAobnVsbCwgbnVsbCk7XG59XG5cbi8vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIGAkdmFsdWVgIHJlcHJlc2VudHMgYSBmcmFjdGlvbi4gU3VwcG9ydHMgZm9ybWF0cyBsaWtlIGA1MCVgLCBgMSBvZiAyYCwgYDEgcGVyIDJgIG9yIGAxLzJgLlxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkdmFsdWUgLSBWYWx1ZSB0byB0ZXN0LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGFsbG93LW5vLWRlbm9taW5hdG9yIFtmYWxzZV0gLSBJZiBgdHJ1ZWAsIHNpbXBsZSBudW1iZXJzIHdpdGhvdXQgZGVub21pbmF0b3JzIGxpa2UgYDUwYCBhcmUgc3VwcG9ydGVkLlxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbGVhbn0gYHRydWVgIGlmIGAkdmFsdWVgIHJlcHJlc2VudHMgYSBmcmFjdGlvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG5AZnVuY3Rpb24gemYtaXMtZnJhY3Rpb24oJHZhbHVlLCAkYWxsb3ctbm8tZGVub21pbmF0b3I6IGZhbHNlKSB7XG4gICRwYXJzZWQ6IHpmLXBhcnNlLWZyYWN0aW9uKCR2YWx1ZSk7XG4gIEByZXR1cm4gbm90KG50aCgkcGFyc2VkLCAxKSA9PSBudWxsXG4gICAgb3IgKG50aCgkcGFyc2VkLCAyKSA9PSBudWxsIGFuZCAkYWxsb3ctbm8tZGVub21pbmF0b3IgPT0gZmFsc2UpKTtcbn1cblxuLy8vIENhbGN1bGF0ZSBhIHBlcmNlbnRhZ2UgZnJvbSBhIGdpdmVuIGZyYWN0aW9uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGZyYWN0aW9uIC0gVmFsdWUgcmVwcmVzZW50aW5nIGEgZnJhY3Rpb24gdG8gdXNlIHRvIGNhbGN1bGF0ZSB0aGUgcGVyY2VudGFnZSwgZm9ybWF0dGVkIGFzIGA1MGAgKHJlbGF0aXZlIHRvIGAkZGVub21pbmF0b3JgKSwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRkZW5vbWluYXRvciAtIERlZmF1bHQgdmFsdWUgdG8gdXNlIGFzIGRlbm9taW5hdG9yIHdoZW4gYCRmcmFjdGlvbmAgcmVwcmVzZW50cyBhbiBhYnNvbHV0ZSB2YWx1ZS5cbkBmdW5jdGlvbiBmcmFjdGlvbi10by1wZXJjZW50YWdlKFxuICAkZnJhY3Rpb24sXG4gICRkZW5vbWluYXRvcjogbnVsbFxuKSB7XG4gICRwYXJzZWQ6IHpmLXBhcnNlLWZyYWN0aW9uKCRmcmFjdGlvbik7XG4gICRwYXJzZWQtbm9taW5hdG9yOiBudGgoJHBhcnNlZCwgMSk7XG4gICRwYXJzZWQtZGVub21pbmF0b3I6IG50aCgkcGFyc2VkLCAyKTtcblxuICBAaWYgJHBhcnNlZC1ub21pbmF0b3IgPT0gbnVsbCB7XG4gICAgQGVycm9yICdXcm9uZyBzeW50YXggZm9yIFwiZnJhY3Rpb24tdG8tcGVyY2VudGFnZSgpXCIuIFVzZSBhIG51bWJlciwgZGVjaW1hbCwgcGVyY2VudGFnZSwgb3IgXCJuIG9mIG5cIiAvIFwibi9uXCIuJztcbiAgfVxuICBAaWYgJHBhcnNlZC1kZW5vbWluYXRvciA9PSBudWxsIHtcbiAgICBAaWYgdHlwZS1vZigkZGVub21pbmF0b3IpID09ICdudW1iZXInIHtcbiAgICAgICRwYXJzZWQtZGVub21pbmF0b3I6ICRkZW5vbWluYXRvcjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGVycm9yICdFcnJvciB3aXRoIFwiZnJhY3Rpb24tdG8tcGVyY2VudGFnZSgpXCIuIEEgZGVmYXVsdCBcIiRkZW5vbWluYXRvclwiIGlzIHJlcXVpcmVkIHRvIHN1cHBvcnQgYWJzb2x1dGUgdmFsdWVzJztcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJHBhcnNlZC1ub21pbmF0b3IgLyAkcGFyc2VkLWRlbm9taW5hdG9yKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuJGdsb2JhbC1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vLyBSZW1vdmVzIHRoZSB1bml0IChlLmcuIHB4LCBlbSwgcmVtKSBmcm9tIGEgdmFsdWUsIHJldHVybmluZyB0aGUgbnVtYmVyIG9ubHkuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bSAtIE51bWJlciB0byBzdHJpcCB1bml0IGZyb20uXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgc2FtZSBudW1iZXIsIHNhbnMgdW5pdC5cbkBmdW5jdGlvbiBzdHJpcC11bml0KCRudW0pIHtcbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG59XG5cbi8vLyBDb252ZXJ0cyBvbmUgb3IgbW9yZSBwaXhlbCB2YWx1ZXMgaW50byBtYXRjaGluZyByZW0gdmFsdWVzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHZhbHVlcyAtIE9uZSBvciBtb3JlIHZhbHVlcyB0byBjb252ZXJ0LiBCZSBzdXJlIHRvIHNlcGFyYXRlIHRoZW0gd2l0aCBzcGFjZXMgYW5kIG5vdCBjb21tYXMuIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgd3JhcCB0aGUgbGlzdCBpbiBwYXJlbnRoZXNlcy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gVGhlIGJhc2UgdmFsdWUgdG8gdXNlIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGByZW1gLiBJZiB5b3UncmUgdXNpbmcgRm91bmRhdGlvbiBvdXQgb2YgdGhlIGJveCwgdGhpcyBpcyAxNnB4LiBJZiB0aGlzIHBhcmFtZXRlciBpcyBgbnVsbGAsIHRoZSBmdW5jdGlvbiB3aWxsIHJlZmVyZW5jZSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZSBhcyB0aGUgYmFzZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtMaXN0fSBBIGxpc3Qgb2YgY29udmVydGVkIHZhbHVlcy5cbkBmdW5jdGlvbiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZTogbnVsbCkge1xuICAkcmVtLXZhbHVlczogKCk7XG4gICRjb3VudDogbGVuZ3RoKCR2YWx1ZXMpO1xuXG4gIC8vIElmIG5vIGJhc2UgaXMgZGVmaW5lZCwgZGVmZXIgdG8gdGhlIGdsb2JhbCBmb250IHNpemVcbiAgQGlmICRiYXNlID09IG51bGwge1xuICAgICRiYXNlOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxuICAvLyBUaGlzIGlzIGJlY2F1c2UgMTAwJSBmb250IHNpemUgPSAxNnB4IGluIG1vc3QgYWxsIGJyb3dzZXJzXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiAoJGJhc2UgLyAxMDAlKSAqIDE2cHg7XG4gIH1cblxuICAvLyBVc2luZyByZW0gYXMgYmFzZSBhbGxvd3MgY29ycmVjdCBzY2FsaW5nXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiAkY291bnQgPT0gMSB7XG4gICAgQHJldHVybiAtemYtdG8tcmVtKCR2YWx1ZXMsICRiYXNlKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvdW50IHtcbiAgICAkcmVtLXZhbHVlczogYXBwZW5kKCRyZW0tdmFsdWVzLCAtemYtdG8tcmVtKG50aCgkdmFsdWVzLCAkaSksICRiYXNlKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZW0tdmFsdWVzO1xufVxuXG4vLyBDb252ZXJ0cyBhIHVuaXRsZXNzLCBwaXhlbCwgb3IgcmVtIHZhbHVlIHRvIGVtLCBmb3IgdXNlIGluIGJyZWFrcG9pbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC10by1lbSgkdmFsdWUpIHtcbiAgLy8gUGl4ZWwgYW5kIHVuaXRsZXNzIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIHJlbXNcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIG9yIHVuaXRsZXNzKCR2YWx1ZSkge1xuICAgICR2YWx1ZTogcmVtLWNhbGMoJHZhbHVlLCAkYmFzZTogMTZweCk7XG4gIH1cblxuICAvLyBUaGVuIHRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gZW1zXG4gIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpICogMWVtO1xufVxuXG4vLy8gQ29udmVydHMgYSBwaXhlbCB2YWx1ZSB0byBtYXRjaGluZyByZW0gdmFsdWUuICpBbnkqIHZhbHVlIHBhc3NlZCwgcmVnYXJkbGVzcyBvZiB1bml0LCBpcyBhc3N1bWVkIHRvIGJlIGEgcGl4ZWwgdmFsdWUuIEJ5IGRlZmF1bHQsIHRoZSBiYXNlIHBpeGVsIHZhbHVlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSByZW0gdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBQaXhlbCB2YWx1ZSB0byBjb252ZXJ0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBCYXNlIGZvciBwaXhlbCBjb252ZXJzaW9uLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBudW1iZXIgaW4gcmVtcywgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gdmFsdWUgYW5kIHRoZSBiYXNlIHBpeGVsIHZhbHVlLiByZW0gdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCBhcyBpcy5cbkBmdW5jdGlvbiAtemYtdG8tcmVtKCR2YWx1ZSwgJGJhc2U6IG51bGwpIHtcbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gJ251bWJlcicge1xuICAgIEB3YXJuIGluc3BlY3QoJHZhbHVlKSArICcgd2FzIHBhc3NlZCB0byByZW0tY2FsYygpLCB3aGljaCBpcyBub3QgYSBudW1iZXIuJztcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuXG4gIC8vIFRyYW5zZm9ybSBlbSBpbnRvIHJlbSBpZiBzb21lb25lIGhhbmRzIG92ZXIgJ2VtJ3NcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqIDFyZW07XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgcmVtIGlmIHVuaXRzIGZvciAkdmFsdWUgaXMgbm90IHJlbSBvciBlbVxuICBAaWYgdW5pdCgkdmFsdWUpICE9ICdyZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UpICogMXJlbTtcbiAgfVxuXG4gIC8vIFR1cm4gMHJlbSBpbnRvIDBcbiAgQGlmICR2YWx1ZSA9PSAwcmVtIHtcbiAgICAkdmFsdWU6IDA7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwsIHBlcmNlbnRhZ2UsIHJlbSBvciBlbSB2YWx1ZSB0byBhIHVuaXRsZXNzIHZhbHVlIGJhc2VkIG9uIGEgZ2l2ZW4gZm9udCBzaXplLiBJZGVhbCBmb3Igd29ya2luZyBvdXQgdW5pdGxlc3MgbGluZSBoZWlnaHRzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGNvbnZlcnQgdG8gYSB1bml0bGVzcyBsaW5lIGhlaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBmb250IHNpemUgdG8gdXNlIHRvIHdvcmsgb3V0IHRoZSBsaW5lIGhlaWdodCAtIGRlZmF1bHRzIHRvICRnbG9iYWwtZm9udC1zaXplXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gVW5pdGxlc3MgbnVtYmVyXG5AZnVuY3Rpb24gdW5pdGxlc3MtY2FsYygkdmFsdWUsICRiYXNlOiBudWxsKSB7XG5cbiAgLy8gSWYgbm8gYmFzZSBpcyBkZWZpbmVkLCBkZWZlciB0byB0aGUgZ2xvYmFsIGZvbnQgc2l6ZVxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gRmlyc3QsIGxldHMgY29udmVydCBvdXIgJGJhc2UgdG8gcGl4ZWxzXG5cbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiAoJGJhc2UgLyAxMDAlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ3JlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ2VtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIC8vIE5vdyBsZXQncyBjb252ZXJ0IG91ciB2YWx1ZSB0byBwaXhlbHMgdG9vXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJyUnIHtcbiAgICAkdmFsdWU6ICgkdmFsdWUgLyAxMDAlKSAqICRiYXNlO1xuICB9XG5cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncmVtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAkYmFzZTtcbiAgfVxuXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2VtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAkYmFzZTtcbiAgfVxuXG4gIC8vICdweCdcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIHtcbiAgICBAcmV0dXJuIHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UpO1xuICB9XG5cbiAgLy8gYXNzdW1lIHRoYXQgbGluZS1oZWlnaHRzIGdyZWF0ZXIgdGhhbiAxMCBhcmUgbWVhbnQgdG8gYmUgYWJzb2x1dGUgaW4gJ3B4J1xuICBAaWYgdW5pdGxlc3MoJHZhbHVlKSBhbmQgKCR2YWx1ZSA+IDEwKSB7XG4gICAgQHJldHVybiAkdmFsdWUgLyBzdHJpcC11bml0KCRiYXNlKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgbm90IGZhbHNleSwgaW4gQ1NTIHRlcm1zLiBGYWxzZXkgdmFsdWVzIGFyZSBgbnVsbGAsIGBub25lYCwgYDBgIHdpdGggYW55IHVuaXQsIG9yIGFuIGVtcHR5IGxpc3QuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkdmFsIC0gVmFsdWUgdG8gY2hlY2suXG4vLy9cbi8vLyBAcmV0dXJucyB7Qm9vbGVhbn0gYHRydWVgIGlmIGAkdmFsYCBpcyBub3QgZmFsc2V5LlxuQGZ1bmN0aW9uIGhhcy12YWx1ZSgkdmFsKSB7XG4gIEBpZiAkdmFsID09IG51bGwgb3IgJHZhbCA9PSBub25lIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG4gIEBpZiB0eXBlLW9mKCR2YWwpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCR2YWwpID09IDAge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJHZhbCkgPT0gMCB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLyBEZXRlcm1pbmUgYSB0b3AvcmlnaHQvYm90dG9tL3JpZ2h0IHZhbHVlIG9uIGEgcGFkZGluZywgbWFyZ2luLCBldGMuIHByb3BlcnR5LCBubyBtYXR0ZXIgaG93IG1hbnkgdmFsdWVzIHdlcmUgcGFzc2VkIGluLiBVc2UgdGhpcyBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyBzaWRlIG9mIGEgdmFsdWUsIGJ1dCBkb24ndCBrbm93IGlmIHRoZSB2YWx1ZSBpcyB1c2luZyBhIHNob3J0aGFuZCBmb3JtYXQuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R8TnVtYmVyfSAkdmFsIC0gVmFsdWUgdG8gYW5hbHl6ZS4gU2hvdWxkIGJlIGEgc2hvcnRoYW5kIHNpemluZyBwcm9wZXJ0eSwgZS5nLiBcIjFlbSAyZW0gMWVtXCJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaWRlIC0gU2lkZSB0byByZXR1cm4uIFNob3VsZCBiZSBgdG9wYCwgYHJpZ2h0YCwgYGJvdHRvbWAsIG9yIGBsZWZ0YC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgc2luZ2xlIHZhbHVlIGJhc2VkIG9uIGAkdmFsYCBhbmQgYCRzaWRlYC5cbkBmdW5jdGlvbiBnZXQtc2lkZSgkdmFsLCAkc2lkZSkge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHZhbCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIEByZXR1cm4gbWFwLWdldCgoXG4gICAgICB0b3A6IG50aCgkdmFsLCAxKSxcbiAgICAgIGJvdHRvbTogbnRoKCR2YWwsIDEpLFxuICAgICAgbGVmdDogbnRoKCR2YWwsIDIpLFxuICAgICAgcmlnaHQ6IG50aCgkdmFsLCAyKSxcbiAgICApLCAkc2lkZSk7XG4gIH1cbiAgQGlmICRsZW5ndGggPT0gMyB7XG4gICAgQHJldHVybiBtYXAtZ2V0KChcbiAgICAgIHRvcDogbnRoKCR2YWwsIDEpLFxuICAgICAgbGVmdDogbnRoKCR2YWwsIDIpLFxuICAgICAgcmlnaHQ6IG50aCgkdmFsLCAyKSxcbiAgICAgIGJvdHRvbTogbnRoKCR2YWwsIDMpLFxuICAgICksICRzaWRlKTtcbiAgfVxuICBAaWYgJGxlbmd0aCA9PSA0IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoKFxuICAgICAgdG9wOiBudGgoJHZhbCwgMSksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMyksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgNCksXG4gICAgKSwgJHNpZGUpO1xuICB9XG59XG5cbi8vLyBHaXZlbiBib3JkZXIgJHZhbCwgZmluZCBhIHNwZWNpZmljIGVsZW1lbnQgb2YgdGhlIGJvcmRlciwgd2hpY2ggaXMgJGVsZW0uIFRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yICRlbGVtIGFyZSB3aWR0aCwgc3R5bGUsIGFuZCBjb2xvci5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbCAtIEJvcmRlciB2YWx1ZSB0byBmaW5kIGEgdmFsdWUgaW4uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZWxlbSAtIEJvcmRlciBjb21wb25lbnQgdG8gZXh0cmFjdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gSWYgdGhlIHZhbHVlIGV4aXN0cywgcmV0dXJucyB0aGUgdmFsdWUuIElmIHRoZSB2YWx1ZSBpcyBub3QgaW4gdGhlIGJvcmRlciBkZWZpbml0aW9uLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gYSAwcHggd2lkdGgsIHNvbGlkIHN0eWxlLCBvciBibGFjayBib3JkZXIuXG5AZnVuY3Rpb24gZ2V0LWJvcmRlci12YWx1ZSgkdmFsLCAkZWxlbSkge1xuICAvLyBGaW5kIHRoZSB3aWR0aCwgc3R5bGUsIG9yIGNvbG9yIGFuZCByZXR1cm4gaXRcbiAgQGVhY2ggJHYgaW4gJHZhbCB7XG4gICAgJHR5cGU6IHR5cGUtb2YoJHYpO1xuICAgIEBpZiAkZWxlbSA9PSB3aWR0aCBhbmQgJHR5cGUgPT0gJ251bWJlcicge1xuICAgICAgQHJldHVybiAkdjtcbiAgICB9XG4gICAgQGlmICRlbGVtID09IHN0eWxlIGFuZCAkdHlwZSA9PSAnc3RyaW5nJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgICBAaWYgJGVsZW0gPT0gY29sb3IgYW5kICR0eXBlID09ICdjb2xvcicge1xuICAgICAgQHJldHVybiAkdjtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZhdWx0c1xuICAkZGVmYXVsdHM6IChcbiAgICB3aWR0aDogMCxcbiAgICBzdHlsZTogc29saWQsXG4gICAgY29sb3I6ICMwMDAsXG4gICk7XG5cbiAgQHJldHVybiBtYXAtZ2V0KCRkZWZhdWx0cywgJGVsZW0pO1xufVxuXG4vLy8gRmluZHMgYSB2YWx1ZSBpbiBhIG5lc3RlZCBtYXAuXG4vLy8gQGxpbmsgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9zYXNzL2RlZXAtZ2V0c2V0LW1hcHMvIERlZXAgR2V0L1NldCBpbiBNYXBzXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBwdWxsIGEgdmFsdWUgZnJvbS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleXMuLi4gLSBLZXlzIHRvIHVzZSB3aGVuIGxvb2tpbmcgZm9yIGEgdmFsdWUuXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm91bmQgaW4gdGhlIG1hcC5cbkBmdW5jdGlvbiBtYXAtZGVlcC1nZXQoJG1hcCwgJGtleXMuLi4pIHtcbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgfVxuICBAcmV0dXJuICRtYXA7XG59XG5cbi8vLyBDYXN0cyBhIG1hcCBpbnRvIGEgbGlzdC5cbi8vLyBAbGluayBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE0LzA0LzI4L2Nhc3RpbmctbWFwLWludG8tbGlzdC9cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHB1bGwgYSB2YWx1ZSBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IERlcGVuZGluZyBvbiB0aGUgZmxhZywgcmV0dXJucyBlaXRoZXIgJGtleXMgb3IgJHZhbHVlcyBvciBib3RoLlxuQGZ1bmN0aW9uIG1hcC10by1saXN0KCRtYXAsICRrZWVwOiAnYm90aCcpIHtcbiAgJGtlZXA6IGlmKGluZGV4KCdrZXlzJyAndmFsdWVzJywgJGtlZXApLCAka2VlcCwgJ2JvdGgnKTtcblxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbWFwJyB7XG4gICAgJGtleXM6ICgpO1xuICAgICR2YWx1ZXM6ICgpO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkbWFwIHtcbiAgICAgICRrZXlzOiBhcHBlbmQoJGtleXMsICRrZXkpO1xuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICR2YWwpO1xuICAgIH1cblxuICAgIEBpZiAka2VlcCA9PSAna2V5cycge1xuICAgICAgQHJldHVybiAka2V5cztcbiAgICB9XG4gICAgQGVsc2UgaWYgJGtlZXAgPT0gJ3ZhbHVlcycge1xuICAgICAgQHJldHVybiAkdmFsdWVzO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIHppcCgka2V5cywgJHZhbHVlcyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBpZih0eXBlLW9mKCRtYXApICE9ICdsaXN0JywgKCR2YWx1ZSwpLCAkbWFwKTtcblxufVxuXG4vLy8gUmV0dXJuIGEgam9pbiBvZiB0aGUgdHdvIGdpdmVuIHN0cmluZ3MgYCRzdHIxYCBhbmQgYCRzdHIyYC5cbi8vLyBJZiB0aGUgdHdvIHN0cmluZ3MgYXJlIG5vdCBlbXB0eSwgdGhleSBhcmUgc2VwYXJhdGVkIGJ5IGAkZGVsaW1pdGVyYC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3RyMSBbbnVsbF0gLSBGaXJzdCBzdHJpbmcgdG8gam9pbi5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0cjEgW251bGxdIC0gU2Vjb25kIHN0cmluZyB0byBqb2luLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGVsaW1pdGVyIFtudWxsXSAtIERlbGltaWV0ZXIgYmV0d2VlbiBgJHN0cjFgIGFuZCBgJHN0cjJgLlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gSm9pbiBvZiBgJHN0cjFgLCBgJGRlbGltaXRlcmAgYW5kIGAkc3RyMmAuXG5AZnVuY3Rpb24gemYtc3RyLWpvaW4oXG4gICRzdHIxOiBudWxsLFxuICAkc3RyMjogbnVsbCxcbiAgJGRlbGltaXRlcjogbnVsbFxuKSB7XG4gICRyZXQ6ICcnO1xuXG4gIEBpZiAkc3RyMSBhbmQgc3RyLWxlbmd0aCgkc3RyMSkgPiAwIHtcbiAgICAkcmV0OiAkcmV0ICsgJHN0cjE7XG5cbiAgICBAaWYgJGRlbGltaXRlciBhbmQgc3RyLWxlbmd0aCgkZGVsaW1pdGVyKSA+IDAgYW5kICRzdHIyIGFuZCBzdHItbGVuZ3RoKCRzdHIyKSA+IDAge1xuICAgICAgJHJldDogJHJldCArICRkZWxpbWl0ZXI7XG4gICAgfVxuICB9XG4gIEBpZiAkc3RyMiBhbmQgc3RyLWxlbmd0aCgkc3RyMikgPiAwIHtcbiAgICAkcmV0OiAkcmV0ICsgJHN0cjI7XG4gIH1cblxuICBAcmV0dXJuICRyZXQ7XG59XG5cbi8vLyBTYWZlbHkgcmV0dXJuIGEgdmFsdWUgZnJvbSBhIG1hcC5cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHJldHJpZXZlIGEgdmFsdWUgZnJvbS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleSAtIE5hbWUgb2YgdGhlIG1hcCBrZXkuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gRm91bmQgdmFsdWUuXG5AZnVuY3Rpb24gbWFwLXNhZmUtZ2V0KCRtYXAsICRrZXkpIHtcbiAgQGlmICh0eXBlLW9mKCRtYXApID09ICdtYXAnIG9yICh0eXBlLW9mKCRtYXApID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRtYXApID09IDApKSB7XG4gICAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xuICAgICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAZXJyb3IgJ0tleTogYCN7JGtleX1gIGlzIG5vdCBhdmFpbGFibGUgaW4gYCN7JG1hcH1gJztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnYCN7JG1hcH1gIGlzIG5vdCBhIHZhbGlkIG1hcCc7XG4gIH1cbn1cblxuLy8vIENvbnZlcnQgdGhlIGdpdmVuIGAkdmFsYCB0byBhIEJvb2xlYW4uIEVtcHR5IHZhbHVlcyBhcmUgY29uc2lkZXJlZCBhcyBmYWxzZS5cbi8vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbCAtIFZhbHVlIHRvIGNvbnZlcnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7Qm9vbGVhbn0gQ29udmVydGVkIEJvb2xlYW4gdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWJvb2woJHZhbCkge1xuICBAcmV0dXJuICR2YWwgIT0gZmFsc2UgYW5kIGhhcy12YWx1ZSgkdmFsKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIFJldHVybnMgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBvZiAkZGlyXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgLSBVc2VkIGRpcmVjdGlvbiBiZXR3ZWVuIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiBhbmQgXCJsZWZ0XCIuXG4vLy8gQHJldHVybiB7S2V5d29yZH0gT3Bwb3NpdGUgZGlyZWN0aW9uIG9mICRkaXJcbkBmdW5jdGlvbiBkaXJlY3Rpb24tb3Bwb3NpdGUoXG4gICRkaXJcbikge1xuICAkZGlyczogKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7XG4gICRwbGFjZTogaW5kZXgoJGRpcnMsICRkaXIpO1xuXG4gIEBpZiAkcGxhY2UgPT0gbnVsbCB7XG4gICAgQGVycm9yICdkaXJlY3Rpb24tb3Bwb3NpdGU6IEludmFsaWQgJGRpciBwYXJhbWV0ZXIsIGV4cGVjdGVkIGEgdmFsdWUgZnJvbSBcIiN7JGRpcnN9XCIsIGZvdW5kIFwiI3skZGlyfVwiLic7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBvcHBvc2l0ZSBwbGFjZSBpbiBhIGNpcmNsZSwgd2l0aCBhIHN0YXJ0aW5nIGluZGV4IG9mIDFcbiAgJGxlbmd0aDogbGVuZ3RoKCRkaXJzKTtcbiAgJGRlbWk6ICRsZW5ndGggLyAyO1xuICAkb3Bwb3NpdGUtcGxhY2U6ICgoJHBsYWNlICsgJGRlbWkgLSAxKSAlICRsZW5ndGgpICsgMTtcblxuICBAcmV0dXJuIG50aCgkZGlycywgJG9wcG9zaXRlLXBsYWNlKTtcbn1cblxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AaW1wb3J0ICdtYXRoJztcblxuJGNvbnRyYXN0LXdhcm5pbmdzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gQ2hlY2tzIHRoZSBsdW1pbmFuY2Ugb2YgYCRjb2xvcmAuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBDb2xvciB0byBjaGVjayB0aGUgbHVtaW5hbmNlIG9mLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGx1bWluYW5jZSBvZiBgJGNvbG9yYC5cbkBmdW5jdGlvbiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yKSB7XG4gIC8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL0xlYVZlcm91L2NvbnRyYXN0LXJhdGlvL2Jsb2IvZ2gtcGFnZXMvY29sb3IuanNcbiAgLy8gRm9ybXVsYTogaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZlxuICAkcmdiYTogcmVkKCRjb2xvciksIGdyZWVuKCRjb2xvciksIGJsdWUoJGNvbG9yKTtcbiAgJHJnYmEyOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDMge1xuICAgICRyZ2I6IG50aCgkcmdiYSwgJGkpO1xuICAgICRyZ2I6ICRyZ2IgLyAyNTU7XG5cbiAgICAkcmdiOiBpZigkcmdiIDwgMC4wMzkyOCwgJHJnYiAvIDEyLjkyLCBwb3coKCRyZ2IgKyAwLjA1NSkgLyAxLjA1NSwgMi40KSk7XG5cbiAgICAkcmdiYTI6IGFwcGVuZCgkcmdiYTIsICRyZ2IpO1xuICB9XG5cbiAgQHJldHVybiAwLjIxMjYgKiBudGgoJHJnYmEyLCAxKSArIDAuNzE1MiAqIG50aCgkcmdiYTIsIDIpICsgMC4wNzIyICogbnRoKCRyZ2JhMiwgMyk7XG59XG5cbi8vLyBDaGVja3MgdGhlIGNvbnRyYXN0IHJhdGlvIG9mIHR3byBjb2xvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IxIC0gRmlyc3QgY29sb3IgdG8gY29tcGFyZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IyIC0gU2Vjb25kIGNvbG9yIHRvIGNvbXBhcmUuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgY29udHJhc3QgcmF0aW8gb2YgdGhlIGNvbXBhcmVkIGNvbG9ycy5cbkBmdW5jdGlvbiBjb2xvci1jb250cmFzdCgkY29sb3IxLCAkY29sb3IyKSB7XG4gIC8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL0xlYVZlcm91L2NvbnRyYXN0LXJhdGlvL2Jsb2IvZ2gtcGFnZXMvY29sb3IuanNcbiAgLy8gRm9ybXVsYTogaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNjb250cmFzdC1yYXRpb2RlZlxuICAkbHVtaW5hbmNlMTogY29sb3ItbHVtaW5hbmNlKCRjb2xvcjEpICsgMC4wNTtcbiAgJGx1bWluYW5jZTI6IGNvbG9yLWx1bWluYW5jZSgkY29sb3IyKSArIDAuMDU7XG4gICRyYXRpbzogJGx1bWluYW5jZTEgLyAkbHVtaW5hbmNlMjtcblxuICBAaWYgJGx1bWluYW5jZTIgPiAkbHVtaW5hbmNlMSB7XG4gICAgJHJhdGlvOiAxIC8gJHJhdGlvO1xuICB9XG5cbiAgJHJhdGlvOiByb3VuZCgkcmF0aW8gKiAxMCkgLyAxMDtcblxuICBAcmV0dXJuICRyYXRpbztcbn1cblxuLy8vIENoZWNrcyB0aGUgbHVtaW5hbmNlIG9mIGAkYmFzZWAsIGFuZCByZXR1cm5zIHRoZSBjb2xvciBmcm9tIGAkY29sb3JzYCAobGlzdCBvZiBjb2xvcnMpIHRoYXQgaGFzIHRoZSBtb3N0IGNvbnRyYXN0LlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhc2UgLSBDb2xvciB0byBjaGVjayBsdW1pbmFuY2UuXG4vLy8gQHBhcmFtIHtMaXN0fSAkY29sb3JzIFsoJHdoaXRlLCAkYmxhY2spXSAtIENvbG9ycyB0byBjb21wYXJlLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9sZXJhbmNlIFskZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlXSAtIENvbnRyYXN0IHRvbGVyYW5jZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtDb2xvcn0gdGhlIGNvbG9yIGZyb20gYCRjb2xvcnNgIChsaXN0IG9mIGNvbG9ycykgdGhhdCBoYXMgdGhlIG1vc3QgY29udHJhc3QuXG5AZnVuY3Rpb24gY29sb3ItcGljay1jb250cmFzdCgkYmFzZSwgJGNvbG9yczogKCR3aGl0ZSwgJGJsYWNrKSwgJHRvbGVyYW5jZTogJGdsb2JhbC1jb2xvci1waWNrLWNvbnRyYXN0LXRvbGVyYW5jZSkge1xuICAkY29udHJhc3Q6IGNvbG9yLWNvbnRyYXN0KCRiYXNlLCBudGgoJGNvbG9ycywgMSkpO1xuICAkYmVzdDogbnRoKCRjb2xvcnMsIDEpO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRjb2xvcnMpIHtcbiAgICAkY3VycmVudC1jb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAkaSkpO1xuICAgIEBpZiAoJGN1cnJlbnQtY29udHJhc3QgLSAkY29udHJhc3QgPiAkdG9sZXJhbmNlKSB7XG4gICAgICAkY29udHJhc3Q6IGNvbG9yLWNvbnRyYXN0KCRiYXNlLCBudGgoJGNvbG9ycywgJGkpKTtcbiAgICAgICRiZXN0OiBudGgoJGNvbG9ycywgJGkpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJGNvbnRyYXN0LXdhcm5pbmdzIGFuZCAkY29udHJhc3QgPCAzKSB7XG4gICAgQHdhcm4gXCJDb250cmFzdCByYXRpbyBvZiAjeyRiZXN0fSBvbiAjeyRiYXNlfSBpcyBwcmV0dHkgYmFkLCBqdXN0ICN7JGNvbnRyYXN0fVwiO1xuICB9XG5cbiAgQHJldHVybiAkYmVzdDtcbn1cblxuLy8vIFNjYWxlcyBhIGNvbG9yIHRvIGJlIGRhcmtlciBpZiBpdCdzIGxpZ2h0LCBvciBsaWdodGVyIGlmIGl0J3MgZGFyay4gVXNlIHRoaXMgZnVuY3Rpb24gdG8gdGludCBhIGNvbG9yIGFwcHJvcHJpYXRlIHRvIGl0cyBsaWdodG5lc3MuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBDb2xvciB0byBzY2FsZS5cbi8vLyBAcGFyYW0ge1BlcmNlbnRhZ2V9ICRzY2FsZSBbNSVdIC0gQW1vdW50IHRvIHNjYWxlIHVwIG9yIGRvd24uXG4vLy8gQHBhcmFtIHtQZXJjZW50YWdlfSAkdGhyZXNob2xkIFs0MCVdIC0gVGhyZXNob2xkIG9mIGxpZ2h0bmVzcyB0byBjaGVjayBhZ2FpbnN0LlxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSBBIHNjYWxlZCBjb2xvci5cbkBmdW5jdGlvbiBzbWFydC1zY2FsZSgkY29sb3IsICRzY2FsZTogNSUsICR0aHJlc2hvbGQ6IDQwJSkge1xuICBAaWYgbGlnaHRuZXNzKCRjb2xvcikgPiAkdGhyZXNob2xkIHtcbiAgICAkc2NhbGU6IC0kc2NhbGU7XG4gIH1cbiAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRzY2FsZSk7XG59XG5cbi8vLyBHZXQgY29sb3IgZnJvbSBmb3VuZGF0aW9uLXBhbGV0dGVcbi8vL1xuLy8vIEBwYXJhbSB7a2V5fSBjb2xvciBrZXkgZnJvbSBmb3VuZGF0aW9uLXBhbGV0dGVcbi8vL1xuLy8vIEByZXR1cm5zIHtDb2xvcn0gY29sb3IgZnJvbSBmb3VuZGF0aW9uLXBhbGV0dGVcbkBmdW5jdGlvbiBnZXQtY29sb3IoJGtleSkge1xuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgJGtleSkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCAka2V5KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGVycm9yICdnaXZlbiAka2V5IGlzIG5vdCBhdmFpbGFibGUgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSc7XG4gIH1cbn1cblxuLy8vIFRyYW5zZmVycyB0aGUgY29sb3JzIGluIHRoZSBgJGZvdW5kYXRpb24tcGFsZXR0ZWAgbWFwIGludG8gdmFyaWFibGVzLCBzdWNoIGFzIGAkcHJpbWFyeS1jb2xvcmAgYW5kIGAkc2Vjb25kYXJ5LWNvbG9yYC4gQ2FsbCB0aGlzIG1peGluIGJlbG93IHRoZSBHbG9iYWwgc2VjdGlvbiBvZiB5b3VyIHNldHRpbmdzIGZpbGUgdG8gcHJvcGVybHkgbWlncmF0ZSB5b3VyIGNvZGViYXNlLlxuQG1peGluIGFkZC1mb3VuZGF0aW9uLWNvbG9ycygpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpIHtcbiAgICAkcHJpbWFyeS1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkcHJpbWFyeS1jb2xvcjogIzE3NzliYSAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBzZWNvbmRhcnkpIHtcbiAgICAkc2Vjb25kYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHNlY29uZGFyeSkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJHNlY29uZGFyeS1jb2xvcjogIzc2NzY3NiAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBzdWNjZXNzKSB7XG4gICAgJHN1Y2Nlc3MtY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc3VjY2VzcykgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJHN1Y2Nlc3MtY29sb3I6ICMzYWRiNzYgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgd2FybmluZykge1xuICAgICR3YXJuaW5nLWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHdhcm5pbmcpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICR3YXJuaW5nLWNvbG9yOiAjZmZhZTAwICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIGFsZXJ0KSB7XG4gICAgJGFsZXJ0LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIGFsZXJ0KSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkYWxlcnQtY29sb3I6ICNjYzRiMzcgIWdsb2JhbDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gR2VuZXJhdGVzIGEgc2VsZWN0b3Igd2l0aCBldmVyeSB0ZXh0IGlucHV0IHR5cGUuIFlvdSBjYW4gYWxzbyBmaWx0ZXIgdGhlIGxpc3QgdG8gb25seSBvdXRwdXQgYSBzdWJzZXQgb2YgdGhvc2Ugc2VsZWN0b3JzLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fEtleXdvcmR9ICR0eXBlcyBbKCldIC0gQSBsaXN0IG9mIHRleHQgaW5wdXQgdHlwZXMgdG8gdXNlLiBMZWF2ZSBibGFuayB0byB1c2UgYWxsIG9mIHRoZW0uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkbW9kaWZpZXIgWycnXSAtIEEgbW9kaWZpZXIgdG8gYmUgYXBwbGllZCB0byBlYWNoIHRleHQgaW5wdXQgdHlwZSAoZS5nLiBhIGNsYXNzIG9yIGEgcHNldWRvLWNsYXNzKS4gTGVhdmUgYmxhbmsgdG8gaWdub3JlLlxuQGZ1bmN0aW9uIHRleHQtaW5wdXRzKCR0eXBlczogKCksICRtb2RpZmllcjogJycpIHtcbiAgJHJldHVybjogKCk7XG5cbiAgJGFsbC10eXBlczpcbiAgICB0ZXh0XG4gICAgcGFzc3dvcmRcbiAgICBkYXRlXG4gICAgZGF0ZXRpbWVcbiAgICBkYXRldGltZS1sb2NhbFxuICAgIG1vbnRoXG4gICAgd2Vla1xuICAgIGVtYWlsXG4gICAgbnVtYmVyXG4gICAgc2VhcmNoXG4gICAgdGVsXG4gICAgdGltZVxuICAgIHVybFxuICAgIGNvbG9yO1xuXG4gIEBpZiBub3QgaGFzLXZhbHVlKCR0eXBlcykge1xuICAgICR0eXBlczogJGFsbC10eXBlcztcbiAgfVxuXG4gIEBlYWNoICR0eXBlIGluICR0eXBlcyB7XG4gICAgJHJldHVybjogYXBwZW5kKCRyZXR1cm4sIHVucXVvdGUoJ1t0eXBlPVxcJyN7JHR5cGV9XFwnXSN7JG1vZGlmaWVyfScpLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCJAZnVuY3Rpb24gLXpmLWZsZXgtanVzdGlmeSgkdGV4dC1kaXJlY3Rpb24pe1xuICAkLXpmLWZsZXgtanVzdGlmeTogKFxuICAgICdsZWZ0JzogaWYoJHRleHQtZGlyZWN0aW9uID09IHJ0bCwgZmxleC1lbmQsIGZsZXgtc3RhcnQpLFxuICAgICdyaWdodCc6IGlmKCR0ZXh0LWRpcmVjdGlvbiA9PSBydGwsIGZsZXgtc3RhcnQsIGZsZXgtZW5kKSxcbiAgICAnY2VudGVyJzogY2VudGVyLFxuICAgICdqdXN0aWZ5Jzogc3BhY2UtYmV0d2VlbixcbiAgICAnc3BhY2VkJzogc3BhY2UtYXJvdW5kLFxuICApO1xuXG4gIEByZXR1cm4gJC16Zi1mbGV4LWp1c3RpZnk7XG59XG5cblxuJC16Zi1mbGV4LWFsaWduOiAoXG4gICd0b3AnOiBmbGV4LXN0YXJ0LFxuICAnYm90dG9tJzogZmxleC1lbmQsXG4gICdtaWRkbGUnOiBjZW50ZXIsXG4gICdzdHJldGNoJzogc3RyZXRjaCxcbik7XG5cbiQtemYtZmxleC1kaXJlY3Rpb246IChcbiAgJ3Jvdyc6IHJvdyxcbiAgJ3Jvdy1yZXZlcnNlJzogcm93LXJldmVyc2UsXG4gICdjb2x1bW4nOiBjb2x1bW4sXG4gICdjb2x1bW4tcmV2ZXJzZSc6IGNvbHVtbi1yZXZlcnNlLFxuKTtcblxuLy8vIEVuYWJsZXMgZmxleGJveCBieSBhZGRpbmcgYGRpc3BsYXk6IGZsZXhgIHRvIHRoZSBlbGVtZW50LlxuQG1peGluIGZsZXgge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4vLy8gSG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgYWxpZ25zIHRoZSBpdGVtcyB3aXRoaW4gYSBmbGV4IGNvbnRhaW5lci5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHggW251bGxdIC0gSG9yaXpvbnRhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYGxlZnRgLCBgcmlnaHRgLCBgY2VudGVyYCwgYGp1c3RpZnlgLCBvciBgc3BhY2VkYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IGhvcml6b250YWwgYWxpZ25tZW50LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHkgW251bGxdIC0gVmVydGljYWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGB0b3BgLCBgYm90dG9tYCwgYG1pZGRsZWAsIG9yIGBzdHJldGNoYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiBmbGV4LWFsaWduKCR4OiBudWxsLCAkeTogbnVsbCkge1xuICBAaWYgJHgge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtanVzdGlmeSwgJHgpIHtcbiAgICAgICR4OiBtYXAtZ2V0KCQtemYtZmxleC1qdXN0aWZ5LCAkeCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtcm93LWFsaWduKCk6ICN7JHh9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4gVXNlIGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnksIG9yIHNwYWNlZC4nO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkeSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1hbGlnbiwgJHkpIHtcbiAgICAgICR5OiBtYXAtZ2V0KCQtemYtZmxleC1hbGlnbiwgJHkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnZmxleC1ncmlkLXJvdy1hbGlnbigpOiAjeyR5fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgdmVydGljYWwgYWxpZ25tZW50LiBVc2UgdG9wLCBib3R0b20sIG1pZGRsZSwgb3Igc3RyZXRjaC4nO1xuICAgIH1cbiAgfVxuXG4gIGp1c3RpZnktY29udGVudDogJHg7XG4gIGFsaWduLWl0ZW1zOiAkeTtcbn1cblxuLy8vIFZlcnRpY2FsbHkgYWxpZ24gYSBzaW5nbGUgY29sdW1uIHdpdGhpbiBhIGZsZXggcm93LiBBcHBseSB0aGlzIG1peGluIHRvIGEgZmxleCBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR5IFtudWxsXSAtIFZlcnRpY2FsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgdG9wYCwgYGJvdHRvbWAsIGBtaWRkbGVgLCBvciBgc3RyZXRjaGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gZmxleC1hbGlnbi1zZWxmKCR5OiBudWxsKSB7XG4gIEBpZiAkeSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1hbGlnbiwgJHkpIHtcbiAgICAgICR5OiBtYXAtZ2V0KCQtemYtZmxleC1hbGlnbiwgJHkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnZmxleC1ncmlkLWNvbHVtbi1hbGlnbigpOiAjeyR5fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgYWxpZ25tZW50LiBVc2UgdG9wLCBib3R0b20sIG1pZGRsZSwgb3Igc3RyZXRjaC4nO1xuICAgIH1cbiAgfVxuXG4gIGFsaWduLXNlbGY6ICR5O1xufVxuXG4vLy8gQ2hhbmdlcyB0aGUgc291cmNlIG9yZGVyIG9mIGEgZmxleCBjaGlsZC4gQ2hpbGRyZW4gd2l0aCBsb3dlciBudW1iZXJzIGFwcGVhciBmaXJzdCBpbiB0aGUgbGF5b3V0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb3JkZXIgWzBdIC0gT3JkZXIgbnVtYmVyIHRvIGFwcGx5LlxuQG1peGluIGZsZXgtb3JkZXIoJG9yZGVyOiAwKSB7XG4gIG9yZGVyOiAkb3JkZXI7XG59XG5cbi8vLyBDaGFuZ2UgZmxleC1kaXJlY3Rpb25cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXJlY3Rpb24gW3Jvd10gLSBGbGV4IGRpcmVjdGlvbiB0byB1c2UuIENhbiBiZVxuLy8vICAgLSByb3cgKGRlZmF1bHQpOiBzYW1lIGFzIHRleHQgZGlyZWN0aW9uXG4vLy8gICAtIHJvdy1yZXZlcnNlOiBvcHBvc2l0ZSB0byB0ZXh0IGRpcmVjdGlvblxuLy8vICAgLSBjb2x1bW46IHNhbWUgYXMgcm93IGJ1dCB0b3AgdG8gYm90dG9tXG4vLy8gICAtIGNvbHVtbi1yZXZlcnNlOiBzYW1lIGFzIHJvdy1yZXZlcnNlIHRvcCB0byBib3R0b21cbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkZGlyZWN0aW9uOiByb3cpIHtcbiAgZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWtwb2ludHNcbi8vLy9cblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcy5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50czogKFxuICBzbWFsbDogMCxcbiAgbWVkaXVtOiA2NDBweCxcbiAgbGFyZ2U6IDEwMjRweCxcbiAgeGxhcmdlOiAxMjAwcHgsXG4gIHh4bGFyZ2U6IDE0NDBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBBIGxpc3Qgb2YgbmFtZWQgSGlEUEkgYnJlYWtwb2ludHMuIFlvdSBjYW4gdXNlIHRoZXNlIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHF1aWNrbHkgY3JlYXRlIG1lZGlhIHF1ZXJpZXMgZm9yIHJlc29sdXRpb25zLlxuLy8vIFZhbHVlcyBtdXN0IHJlcHJlc2VudCB0aGUgZGV2aWNlIHBpeGVscyAvIHdlYiBwaXhlbHMgcmF0aW9uIGFuZCBiZSB1bml0bGVzcyBvciBpbiBEUFBYLlxuLy8vIEB0eXBlIE1hcFxuJGJyZWFrcG9pbnRzLWhpZHBpOiAoXG4gIGhpZHBpLTE6IDEsXG4gIGhpZHBpLTEtNTogMS41LFxuICBoaWRwaS0yOiAyLFxuICByZXRpbmE6IDIsXG4gIGhpZHBpLTM6IDNcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGFyZ2VzdCBuYW1lZCBicmVha3BvaW50IGluIHdoaWNoIHRvIGluY2x1ZGUgcHJpbnQgYXMgYSBtZWRpYSB0eXBlXG4vLy8gQHR5cGUgS2V5d29yZFxuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlICFkZWZhdWx0O1xuXG4kLXpmLXplcm8tYnJlYWtwb2ludDogc21hbGwgIWRlZmF1bHQ7XG5cbiQtemYtYnJlYWtwb2ludHMta2V5czogbWFwLXRvLWxpc3QoJGJyZWFrcG9pbnRzLCAna2V5cycpO1xuXG5AaWYgbnRoKG1hcC12YWx1ZXMoJGJyZWFrcG9pbnRzKSwgMSkgIT0gMCB7XG4gIEBlcnJvciAnVGhlIGZpcnN0IGtleSBpbiB0aGUgJGJyZWFrcG9pbnRzIG1hcCBtdXN0IGhhdmUgYSB2YWx1ZSBvZiBcIjBcIi4nO1xufVxuQGVsc2Uge1xuICAkLXpmLXplcm8tYnJlYWtwb2ludDogbnRoKG1hcC1rZXlzKCRicmVha3BvaW50cyksIDEpO1xufVxuXG4vLy8gQWxsIG9mIHRoZSBuYW1lcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBvdXRwdXQgYXMgY2xhc3NlcyBpbiB5b3VyIENTUywgbGlrZSBgLnNtYWxsLTEyYCwgYC5tZWRpdW0tNmAsIGFuZCBzbyBvbi4gRWFjaCB2YWx1ZSBpbiB0aGlzIGxpc3QgbXVzdCBhbHNvIGJlIGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAuXG4vLy8gQHR5cGUgTGlzdFxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSkgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBzdHJpbmcgbWF0Y2hpbmcgdGhlIGlucHV0IHZhbHVlLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHNlZSB3aGF0IHRoZSBwb3NzaWJsZSBpbnB1dHMgYXJlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbCBbc21hbGxdIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHZhbDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgLy8gV2ViIHN0YW5kYXJkIFBpeGVscyBwZXIgaW5jaC4gKDFkZHB4IC8gJHN0ZC13ZWItZHBpKSA9IDFkcGlcbiAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdmFsdWVzLTMvI2Fic29sdXRlLWxlbmd0aHNcbiAgJHN0ZC13ZWItZHBpOiA5NjtcblxuICAvLyBTaXplIG9yIGtleXdvcmRcbiAgJGJwOiBudGgoJHZhbCwgMSk7XG4gIC8vIFZhbHVlIG9mIHRoZSBmb2xsb3dpbmcgYnJlYWtwb2ludFxuICAkYnAtbmV4dDogbnVsbDtcbiAgLy8gVmFsdWUgZm9yIG1heC13aWR0aCBtZWRpYSBxdWVyaWVzXG4gICRicC1taW46IG51bGw7XG4gIC8vIFZhbHVlIGZvciBtaW4td2lkdGggbWVkaWEgcXVlcmllc1xuICAkYnAtbWF4OiBudWxsO1xuICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAkZGlyOiBpZihsZW5ndGgoJHZhbCkgPiAxLCBudGgoJHZhbCwgMiksIHVwKTtcbiAgLy8gSWYgbmFtZWQsIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnRcbiAgJG5hbWU6IG51bGw7XG4gIC8vIElmIHRoZSBicmVha3BvaW50IGlzIGEgSGlEUEkgYnJlYWtwb2ludFxuICAkaGlkcGk6IGZhbHNlO1xuXG4gIC8vIE9yaWVudGF0aW9uIG1lZGlhIHF1ZXJpZXMgaGF2ZSBhIHVuaXF1ZSBzeW50YXhcbiAgQGlmICRicCA9PSAnbGFuZHNjYXBlJyBvciAkYnAgPT0gJ3BvcnRyYWl0JyB7XG4gICAgQHJldHVybiAnKG9yaWVudGF0aW9uOiAjeyRicH0pJztcbiAgfVxuXG4gIC8vIElmIGEgYnJlYWtwb2ludCBuYW1lIGlzIGdpdmVuLCBnZXQgaXRzIHZhbHVlIGZyb20gdGhlICRicmVha3BvaW50cy8kYnJlYWtwb2ludHMtaGlkcGkgbWFwLlxuICBAaWYgdHlwZS1vZigkYnApID09ICdzdHJpbmcnIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnApIHtcbiAgICAgICRuYW1lOiAkYnA7XG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgICAkYnAtbmV4dDogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMtaGlkcGksICRicCkge1xuICAgICAgJG5hbWU6ICRicDtcbiAgICAgICRicDogbWFwLWdldCgkYnJlYWtwb2ludHMtaGlkcGksICRuYW1lKTtcbiAgICAgICRicC1uZXh0OiAtemYtbWFwLW5leHQtbnVtYmVyKCRicmVha3BvaW50cy1oaWRwaSwgJGJwKTtcbiAgICAgICRoaWRwaTogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGJwOiAwO1xuICAgICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogXCIjeyR2YWx9XCIgaXMgbm90IGRlZmluZWQgaW4geW91ciBgJGJyZWFrcG9pbnRzYCBvciBgJGJyZWFrcG9pbnRzLWhpZHBpYCBzZXR0aW5nLic7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkbmFtZSBhbmQgJGRpciA9PSAnb25seScge1xuICAgIEB3YXJuICdicmVha3BvaW50KCk6IE9ubHkgbmFtZWQgbWVkaWEgcXVlcmllcyBjYW4gaGF2ZSBhbiBgb25seWAgcmFuZ2UuJztcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBPbmx5ICdvbmx5JyBhbmQgJ3VwJyBoYXZlIGEgbWluIGxpbWl0LlxuICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAndXAnIHtcbiAgICAkYnAtbWluOiBpZigkaGlkcGksIHN0cmlwLXVuaXQoJGJwKSwgLXpmLWJwLXRvLWVtKCRicCkpO1xuICB9XG4gIC8vIE9ubHkgJ29ubHknIGFuZCAnZG93bicgaGF2ZSBhIG1heCBsaW1pdC5cbiAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ2Rvd24nIHtcbiAgICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBhIHZhbHVlLCB1c2UgaXQgYXMgbWF4IGxpbWl0LlxuICAgIEBpZiBub3QgJG5hbWUge1xuICAgICAgJGJwLW1heDogaWYoJGhpZHBpLCBzdHJpcC11bml0KCRicCksIC16Zi1icC10by1lbSgkYnApKTtcbiAgICB9XG4gICAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgaXMgbmFtZWQsIHRoZSBtYXggbGltaXQgaXMgdGhlIGZvbGxvd2luZyBicmVha3BvaW50IC0gMXB4LlxuICAgIEBlbHNlIGlmICRicC1uZXh0IHtcbiAgICAgIC8vIE1heCB2YWx1ZSBpcyAwLjJweCB1bmRlciB0aGUgbmV4dCBicmVha3BvaW50ICgwLjAyIC8gMTYgPSAwLjAwMTI1KS5cbiAgICAgIC8vIFVzZSBhIHByZWNpc2lvbiB1bmRlciAxcHggdG8gc3VwcG9ydCBicm93c2VyIHpvb20sIGJ1dCBub3QgdG8gbG93IHRvIGF2b2lkIHJvdW5kaW5nLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzExMzEzXG4gICAgICAkYnAtbWF4OiBpZigkaGlkcGksICRicC1uZXh0IC0gKDEvJHN0ZC13ZWItZHBpKSwgLXpmLWJwLXRvLWVtKCRicC1uZXh0KSAtIDAuMDAxMjUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdlbmVyYXRlIHRoZSBtZWRpYSBxdWVyeSBzdHJpbmcgZnJvbSBtaW4gYW5kIG1heCBsaW1pdHMuXG4gIEBpZiAkaGlkcGkge1xuICAgIC8vIEdlbmVyYXRlIHZhbHVlcyBpbiBEUEkgaW5zdGVhZCBvZiBEUFBYIGZvciBhbiBJRTktMTEvT3BlcmEgbWluaSBjb21wYXRpYmlsaXR5LlxuICAgIC8vIFNlZSBodHRwczovL2Nhbml1c2UuY29tLyNmZWF0PWNzcy1tZWRpYS1yZXNvbHV0aW9uXG4gICAgJGJwLW1pbi1kcGk6IGlmKCRicC1taW4sICRicC1taW4gKiAkc3RkLXdlYi1kcGkgKiAxZHBpLCAkYnAtbWluKTtcbiAgICAkYnAtbWF4LWRwaTogaWYoJGJwLW1heCwgJGJwLW1heCAqICRzdGQtd2ViLWRwaSAqIDFkcGksICRicC1tYXgpO1xuICAgIEByZXR1cm4gemYtc3RyLWpvaW4oXG4gICAgICAtemYtYnAtam9pbigkYnAtbWluLCAkYnAtbWF4LCAnLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvJywgJy13ZWJraXQtbWF4LWRldmljZS1waXhlbC1yYXRpbycpLFxuICAgICAgLXpmLWJwLWpvaW4oJGJwLW1pbi1kcGksICRicC1tYXgtZHBpLCAnbWluLXJlc29sdXRpb24nLCAnbWF4LXJlc29sdXRpb24nKSxcbiAgICAgICcsICcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIC16Zi1icC1qb2luKCRicC1taW4sICRicC1tYXgpO1xuICB9XG59XG5cbi8vLyBXcmFwcyBhIG1lZGlhIHF1ZXJ5IGFyb3VuZCB0aGUgY29udGVudCB5b3UgcHV0IGluc2lkZSB0aGUgbWl4aW4uIFRoaXMgbWl4aW4gYWNjZXB0cyBhIG51bWJlciBvZiB2YWx1ZXM6XG4vLy8gIC0gSWYgYSBzdHJpbmcgaXMgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBsb29rIGZvciBpdCBpbiB0aGUgYCRicmVha3BvaW50c2AgYW5kIGAkYnJlYWtwb2ludHMtaGlkcGlgIG1hcHMsIGFuZCB1c2UgYSBtZWRpYSBxdWVyeSB0aGVyZS5cbi8vLyAgLSBJZiBhIHBpeGVsIHZhbHVlIGlzIHBhc3NlZCwgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYW4gZW0gdmFsdWUgdXNpbmcgYCRnbG9iYWwtZm9udC1zaXplYCBhcyB0aGUgYmFzZS5cbi8vLyAgLSBJZiBhIHJlbSB2YWx1ZSBpcyBwYXNzZWQsIHRoZSB1bml0IHdpbGwgYmUgY2hhbmdlZCB0byBlbS5cbi8vLyAgLSBJZiBhbiBlbSB2YWx1ZSBpcyBwYXNzZWQsIHRoZSB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMtaXMuXG4vLy9cbi8vLyBJZiBtdWx0aXBsZSB2YWx1ZXMgYXJlIHBhc3NlZCwgdGhlIG1peGluIHdpbGwgZ2VuZXJhdGUgYSBtZWRpYSBxdWVyeSBmb3IgZWFjaCBvZiB0aGVtIGFzIGRlc2NyaWJlZCBhYm92ZS5cbi8vLyBTaW5jZSB0aGUgY29udGVudCBpcyBkdXBsaWNhdGVkIGZvciBlYWNoIGJyZWFrcG9pbnQsIHRoaXMgbWl4aW4gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIHByb3BlcnRpZXMgdGhhdFxuLy8vIGNoYW5nZSBhY3Jvc3MgYnJlYWtwb2ludHMuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkdmFsdWVzLi4uIC0gQnJlYWtwb2ludCBuYW1lIG9yIHB4L3JlbS9lbSB2YWx1ZSB0byBwcm9jZXNzLlxuLy8vXG4vLy8gQG91dHB1dCBJZiB0aGUgYnJlYWtwb2ludCBpcyBcIjBweCBhbmQgbGFyZ2VyXCIsIG91dHB1dHMgdGhlIGNvbnRlbnQgYXMtaXMuIE90aGVyd2lzZSwgb3V0cHV0cyB0aGUgY29udGVudCB3cmFwcGVkIGluIGEgbWVkaWEgcXVlcnkuXG5AbWl4aW4gYnJlYWtwb2ludCgkdmFsdWVzLi4uKSB7XG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR2YWx1ZXMpIHtcbiAgICAkdmFsdWU6IG50aCgkdmFsdWVzLCAkaSk7XG4gICAgJHN0cjogYnJlYWtwb2ludCgkdmFsdWUpO1xuICAgICRicDogaW5kZXgoJC16Zi1icmVha3BvaW50cy1rZXlzLCBudGgoJHZhbHVlLCAxKSk7XG4gICAgJHBicDogaW5kZXgoJC16Zi1icmVha3BvaW50cy1rZXlzLCAkcHJpbnQtYnJlYWtwb2ludCk7XG4gICAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgICAkZGlyOiBpZihsZW5ndGgoJHZhbHVlKSA+IDEsIG50aCgkdmFsdWUsIDIpLCB1cCk7XG5cbiAgICAkb2xkLXpmLXNpemU6IG51bGw7XG5cbiAgICAvLyBNYWtlIGJyZWFrcG9pbnQgc2l6ZSBhdmFpbGFibGUgYXMgYSB2YXJpYWJsZVxuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSB7XG4gICAgICAkb2xkLXpmLXNpemU6ICQtemYtc2l6ZTtcbiAgICB9XG4gICAgJC16Zi1zaXplOiBudGgoJHZhbHVlLCAxKSAhZ2xvYmFsOyAvLyBnZXQgdGhlIGZpcnN0IHZhbHVlIHRvIGFjY291bnQgZm9yIGBvbmx5YCBhbmQgYGRvd25gIGtleXdvcmRzXG5cbiAgICAvLyBJZiAkc3RyIGlzIHN0aWxsIGFuIGVtcHR5IHN0cmluZywgbm8gbWVkaWEgcXVlcnkgaXMgbmVlZGVkXG4gICAgQGlmICRzdHIgPT0gJycge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlLCB3cmFwIHRoZSBjb250ZW50IGluIGEgbWVkaWEgcXVlcnlcbiAgICBAZWxzZSB7XG4gICAgICAvLyBGb3IgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICRwcmludC1icmVha3BvaW50LCBhZGQgcHJpbnQgdG8gdGhlIG1lZGlhIHR5cGVzXG4gICAgICAvLyBnZW5lcmF0ZSBwcmludCBpZiB0aGUgYnJlYWtwb2ludCBhZmZlY3RzIHRoZSBwcmludC1icmVha3BvaW50IChvciBzbWFsbGVyKS5cbiAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGN1cnJlbnQgY29uZGl0aW9uIG9ubHkgbmVlZHMgdG8gYmUgZXh0ZW5kZWQgc28gJ2Rvd24nIGFsd2F5cyBnZW5lcmF0ZXMgcHJpbnQuXG4gICAgICBAaWYgJGJwICE9IG51bGwgYW5kICgkYnAgPD0gJHBicCBvciAkZGlyID09IGRvd24pIHtcbiAgICAgICAgQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kICN7JHN0cn0ge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICN7JHN0cn0ge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJC16Zi1zaXplOiAkb2xkLXpmLXNpemUgIWdsb2JhbDtcbiAgfVxufVxuXG4vLy8gQ29udmVydHMgdGhlIGJyZWFrcG9pbnRzIG1hcCB0byBhIFVSTC1lbmNvZGVkIHN0cmluZywgbGlrZSB0aGlzOiBga2V5MT12YWx1ZTEma2V5Mj12YWx1ZTJgLiBUaGUgdmFsdWUgaXMgdGhlbiBkcm9wcGVkIGludG8gdGhlIENTUyBmb3IgYSBzcGVjaWFsIGA8bWV0YT5gIHRhZywgd2hpY2ggaXMgcmVhZCBieSB0aGUgRm91bmRhdGlvbiBKYXZhU2NyaXB0LiBUaGlzIGlzIGhvdyB3ZSB0cmFuc2ZlciB2YWx1ZXMgZnJvbSBTYXNzIHRvIEphdmFTY3JpcHQsIHNvIHRoZXkgY2FuIGJlIGRlZmluZWQgaW4gb25lIHBsYWNlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gY29udmVydC5cbi8vL1xuLy8vIEByZXR1cm5zIHtTdHJpbmd9IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG1hcCdzIGNvbnRlbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC1zZXJpYWxpemUoJG1hcCkge1xuICAkc3RyOiAnJztcbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAge1xuICAgICRzdHI6ICRzdHIgKyAka2V5ICsgJz0nICsgLXpmLWJwLXRvLWVtKCR2YWx1ZSkgKyAnJic7XG4gIH1cbiAgJHN0cjogc3RyLXNsaWNlKCRzdHIsIDEsIC0yKTtcblxuICBAcmV0dXJuICRzdHI7XG59XG5cbi8vLyBGaW5kIHRoZSBuZXh0IGtleSBpbiBhIG1hcC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHRyYXZlcnNlLlxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSB2YWx1ZSBmb3IgdGhlIGtleSBhZnRlciBgJGtleWAsIGlmIGAka2V5YCB3YXMgZm91bmQuIElmIGAka2V5YCB3YXMgbm90IGZvdW5kLCBvciBgJGtleWAgd2FzIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBtYXAsIHJldHVybnMgYG51bGxgLlxuQGZ1bmN0aW9uIC16Zi1tYXAtbmV4dCgkbWFwLCAka2V5KSB7XG5cbiAgLy8gU3RvcmUgdGhlIGtleXMgb2YgdGhlIG1hcCBhcyBhIGxpc3RcbiAgJHZhbHVlczogbWFwLWtleXMoJG1hcCk7XG5cbiAgJGk6IDA7XG5cbiAgLy8gSWYgdGhlIEtleSBFeGlzdHMsIEdldCB0aGUgaW5kZXggb2YgdGhlIGtleSB3aXRoaW4gdGhlIG1hcCBhbmQgYWRkIDEgdG8gaXQgZm9yIHRoZSBuZXh0IGJyZWFrcG9pbnQgaW4gdGhlIG1hcFxuICBAaWYgKG1hcC1oYXMta2V5KCRtYXAsICRrZXkpKSB7XG4gICAgJGk6IGluZGV4KCR2YWx1ZXMsICRrZXkpICsgMTtcbiAgfVxuXG4gIC8vIElmIHRoZSBrZXkgZG9lc24ndCBleGlzdCwgb3IgaXQncyB0aGUgbGFzdCBrZXkgaW4gdGhlIG1hcCwgcmV0dXJuIG51bGxcbiAgQGlmICgkaSA+IGxlbmd0aCgkbWFwKSBvciAkaSA9PSAwKSB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSB2YWx1ZVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsIG50aCgkdmFsdWVzLCAkaSkpO1xuICB9XG5cbn1cblxuLy8vIEZpbmQgdGhlIG5leHQgbnVtYmVyIGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJG51bWJlciAtIE51bWJlciB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIG51bWJlciBmb2xsb3dpbmcgYCRudW1iZXJgLCBpZiBgJG51bWJlcmAgd2FzIGZvdW5kLiBJZiBgJG51bWJlcmAgd2FzIG5vdCBmb3VuZCwgb3IgYCRudW1iZXJgIHdhcyB0aGUgYmlnZ2VzdCBudW1iZXIgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0LW51bWJlcigkbWFwLCAkbnVtYmVyKSB7XG5cbiAgJG5leHRfbnVtYmVyOiBudWxsO1xuXG4gIEBlYWNoICRrLCAkdiBpbiAkbWFwIHtcbiAgICBAaWYgdHlwZS1vZigkdikgPT0gJ251bWJlcicgYW5kICR2ID4gJG51bWJlciBhbmQgKCRuZXh0X251bWJlciA9PSBudWxsIG9yICR2IDwgJG5leHRfbnVtYmVyKSB7XG4gICAgICAkbmV4dF9udW1iZXI6ICR2O1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5leHRfbnVtYmVyO1xufVxuXG4vLy8gUmV0dXJuIGEgbGlzdCBvZiBvdXIgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuICRrZXkuIFVzZWZ1bCBmb3IgZGVhbGluZyB3aXRoXG4vLy8gcmVzcG9uc2l2ZSBndXR0ZXJzIGZvciB0aGUgZ3JpZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBsYXN0IGJyZWFrcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7QXJyYXl9IFRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIHVwIHRvIGFuZC4gSWYgJGtleSBpcyBhdXRvLCByZXR1cm5zIGJyZWFrcG9pbnRzIGFib3ZlIHRoZSB6ZXJvXG5AZnVuY3Rpb24gLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigka2V5KSB7XG4gICRsaXN0OiAoKTtcbiAgJGZvdW5kX2tleTogZmFsc2U7XG5cbiAgQGVhY2ggJG5hbWUgaW4gJC16Zi1icmVha3BvaW50cy1rZXlzIHtcbiAgICBAaWYgKCRuYW1lID09ICRrZXkpIHtcbiAgICAgICRmb3VuZF9rZXk6IHRydWU7XG4gICAgfVxuICAgIEBpZiBub3QgJGZvdW5kX2tleSB7XG4gICAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkbmFtZSk7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IC0gYSBuYW1lZCBvciBub24tbmFtZWQgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtY2xvc2VzdC1uYW1lZC1icmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICRsYXN0OiAkLXpmLXplcm8tYnJlYWtwb2ludDtcbiAgJGZvdW5kOiBmYWxzZTtcblxuICAkdmFsdWU6IHVuaXRsZXNzLWNhbGMoJGJyZWFrcG9pbnQsIDFweCk7XG4gIEBlYWNoICRrZXksICR2YWwgaW4gJGJyZWFrcG9pbnRzIHtcbiAgICBAaWYgbm90ICRmb3VuZCB7XG4gICAgICBAaWYgdW5pdGxlc3MtY2FsYygkdmFsKSA+ICR2YWx1ZSB7XG4gICAgICAgICRmb3VuZDogdHJ1ZTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkbGFzdDogJGtleTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsYXN0O1xufVxuXG4vLy8gR2V0IGEgdmFsdWUgZm9yIGEgYnJlYWtwb2ludCBmcm9tIGEgcmVzcG9uc2l2ZSBjb25maWcgbWFwIG9yIHNpbmdsZSB2YWx1ZS5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdCByZWdhcmRsZXNzIG9mIGAkdmFsdWVgLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIG1hcCBhbmQgaGFzIHRoZSBrZXkgYCR2YWx1ZWAsIHRoZSBleGFjdCBicmVha3BvaW50IHZhbHVlIGlzIHJldHVybmVkLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIG1hcCBhbmQgZG9lcyAqbm90KiBoYXZlIHRoZSBicmVha3BvaW50LCB0aGUgdmFsdWUgbWF0Y2hpbmcgdGhlIG5leHQgbG93ZXN0IGJyZWFrcG9pbnQgaW4gdGhlIGNvbmZpZyBtYXAgaXMgcmV0dXJuZWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRtYXAgLSBSZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHZhbHVlIC0gQnJlYWtwb2ludCBuYW1lIHRvIHVzZS5cbi8vL1xuLy8vIEByZXR1cm4ge01peGVkfSBUaGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlLlxuQGZ1bmN0aW9uIC16Zi1nZXQtYnAtdmFsKCRtYXAsICR2YWx1ZSkge1xuICAvLyBJZiB0aGUgZ2l2ZW4gbWFwIGlzIGEgc2luZ2xlIHZhbHVlLCByZXR1cm4gaXRcbiAgQGlmIHR5cGUtb2YoJG1hcCkgPT0gJ251bWJlcicge1xuICAgIEByZXR1cm4gJG1hcDtcbiAgfVxuXG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgZ2xvYmFsbHlcbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICR2YWx1ZSkge1xuICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiAtemYtY2xvc2VzdC1uYW1lZC1icmVha3BvaW50KCR2YWx1ZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG4gIC8vIENoZWNrIGlmIHRoZSBicmVha3BvaW50IG5hbWUgZXhpc3RzIGluIHRoZSBsb2NhbCBjb25maWcgbWFwXG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRtYXAsICR2YWx1ZSkge1xuICAgIC8vIElmIGl0IGRvZXMsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAkdmFsdWUpO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgZmluZCB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBhbmQgcmV0dXJuIHRoYXQgdmFsdWVcbiAgQGVsc2Uge1xuICAgICRhbmNob3I6IG51bGw7XG4gICAgJGZvdW5kOiBmYWxzZTtcblxuICAgIEBlYWNoICRrZXksICR2YWwgaW4gJGJyZWFrcG9pbnRzIHtcbiAgICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRtYXAsICRrZXkpIHtcbiAgICAgICAgICAkYW5jaG9yOiAka2V5O1xuICAgICAgICB9XG4gICAgICAgIEBpZiAka2V5ID09ICR2YWx1ZSB7XG4gICAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICRhbmNob3IpO1xuICB9XG59XG5cbi8vLyBSZXR1cm4gdGhlIGJlc3QgYnJlYWtwb2ludCB0byB1c2UgYWNjb3JkaW5nIHRvIHRoZSBjYWxsaW5nIGNvbnRleHQuIEl0IHJldHVybnMgaW4gb3JkZXI6XG4vLy8gMS4gdGhlIGdpdmVuIGAkdmFsdWVgIGFyZ3VtZW50IGlmIGl0IGlzIG5vdCBudWxsLlxuLy8vIDIuIHRoZSBnbG9iYWwgYnJlYWtwb2ludCBjb250ZXh0IGAkLXpmLXNpemVgIGlmIGl0IGlzIG5vdCBudWxsIChsaWtlIGlmIGNhbGxlZCBpbnNpZGUgdGhlbiBgYnJlYWtwb2ludCgpYCBtaXhpbilcbi8vLyAzLiB0aGUgZ2l2ZW4gYCRkZWZhdWx0YCBhcmd1bWVudC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHZhbHVlIFtudWxsXSAtIEJyZWFrcG9pbnQgdG8gdXNlIGluIHByaW9yaXR5IGlmIG5vbi1udWxsLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRlZmF1bHQgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgYnkgZGVmYXVsdCBpZiBubyBvdGhlciB2YWx1ZSBjYW4gYmUgdXNlZC5cbi8vL1xuLy8vIEByZXR1cm4ge0tleXdvcmR9IFRoZSByZXNvbHZlZCBicmVha3BvaW50LlxuQGZ1bmN0aW9uIC16Zi1jdXJyZW50LWJyZWFrcG9pbnQoJHZhbHVlOiBudWxsLCAkZGVmYXVsdDogbnVsbCkge1xuICBAaWYgKCR2YWx1ZSAhPSBudWxsKSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgKHZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkgYW5kIHR5cGUtb2YoJC16Zi1zaXplKSAhPSAnbnVtYmVyJykgYW5kICQtemYtc2l6ZSAhPSBudWxsIHtcbiAgICBAcmV0dXJuICQtemYtc2l6ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZGVmYXVsdDtcbiAgfVxufVxuXG4vLy8gUmV0dXJuIG1lZGlhIHF1ZXJ5IHN0cmluZyBmcm9tIHRoZSBnaXZlbiBtaW4gYW5kL29yIG1heCBsaW1pdHMuXG4vLy8gSWYgYSBsaW1pdCBpcyBlcXVhbCB0byBgbnVsbGAgb3IgYDBgLCBpdCBpcyBpZ25vcmVkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtaW4gWzBdIC0gTWluIG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWF4IFswXSAtIE1heCBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1pbi1uYW1lIFsnbWluLXdpZHRoJ10gLSBOYW1lIG9mIHRoZSBtaW4gbWVkaWEgcXVlcnkgbGltaXQuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkZWxpbWl0ZXIgWydtYXgtd2lkdGgnXSAtIE5hbWUgb2YgdGhlIG1heCBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtTdHJpbmd9IE1lZGlhIFF1ZXJ5IHN0cmluZy5cbkBmdW5jdGlvbiAtemYtYnAtam9pbihcbiAgJG1pbjogMCxcbiAgJG1heDogMCxcbiAgJG1pbi1uYW1lOiAnbWluLXdpZHRoJyxcbiAgJG1heC1uYW1lOiAnbWF4LXdpZHRoJ1xuKSB7XG4gIEByZXR1cm4gemYtc3RyLWpvaW4oXG4gICAgaWYoJG1pbiBhbmQgJG1pbiA+IDAsICcoI3skbWluLW5hbWV9OiAjeyRtaW59KScsIG51bGwpLFxuICAgIGlmKCRtYXggYW5kICRtYXggPiAwLCAnKCN7JG1heC1uYW1lfTogI3skbWF4fSknLCBudWxsKSxcbiAgICAnIGFuZCAnKTtcbn1cblxuJHNtYWxsLXVwOiAnJztcbiRzbWFsbC1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgc21hbGwpIHtcbiAgJHNtYWxsLXVwOiBzY3JlZW47XG4gICRzbWFsbC1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChzbWFsbCBvbmx5KX0nKTtcbn1cblxuJG1lZGl1bS11cDogJyc7XG4kbWVkaXVtLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBtZWRpdW0pIHtcbiAgJG1lZGl1bS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtKX0nKTtcbiAgJG1lZGl1bS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0gb25seSl9Jyk7XG59XG5cbiRsYXJnZS11cDogJyc7XG4kbGFyZ2Utb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIGxhcmdlKSB7XG4gICRsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2UpfScpO1xuICAkbGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4bGFyZ2UtdXA6ICcnO1xuJHhsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeGxhcmdlKSB7XG4gICR4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSl9Jyk7XG4gICR4bGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlIG9ubHkpfScpO1xufVxuXG4keHhsYXJnZS11cDogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHh4bGFyZ2UpIHtcbiAgJHh4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHh4bGFyZ2UpfScpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gQ3JlYXRlcyBhbiBpbm5lciBib3gtc2hhZG93IGZvciBvbmx5IG9uZSBzaWRlXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaWRlIC0gU2lkZSB0aGUgc2hhZG93IGlzIHN1cHBvc2VkIHRvIGFwcGVhci4gQ2FuIGJlIGB0b3BgLCBgbGVmdGAsIGByaWdodGAgb3IgYGJvdHRvbWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzaXplIC0gV2lkdGggZm9yIHRoZSB0YXJnZXQgc2lkZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBDb2xvciBvZiB0aGUgc2hhZG93LlxuQG1peGluIGlubmVyLXNpZGUtc2hhZG93KFxuICAkc2lkZTogYm90dG9tLFxuICAkc2l6ZTogMjBweCxcbiAgJGNvbG9yOiByZ2JhKCRibGFjaywgMC4yNSlcbikge1xuXG4gICRoZWxwZXI6IHJvdW5kKCRzaXplICogMC42NSk7XG5cbiAgQGlmICgkc2lkZSA9PSB0b3ApIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwICRoZWxwZXIgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcbiAgfSBAZWxzZSBpZiAoJHNpZGUgPT0gbGVmdCkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0ICRoZWxwZXIgMCAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xuICB9IEBlbHNlIGlmICgkc2lkZSA9PSByaWdodCkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0ICgtMSkqJGhlbHBlciAwICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH0gQGVsc2UgaWYgKCRzaWRlID09IGJvdHRvbSkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgKC0xKSokaGVscGVyICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBDU1MgdHJpYW5nbGUsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBkcm9wZG93biBhcnJvd3MsIGRyb3Bkb3duIHBpcHMsIGFuZCBtb3JlLiBVc2UgdGhpcyBtaXhpbiBpbnNpZGUgYSBgJjo6YmVmb3JlYCBvciBgJjo6YWZ0ZXJgIHNlbGVjdG9yLCB0byBhdHRhY2ggdGhlIHRyaWFuZ2xlIHRvIGFuIGV4aXN0aW5nIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHRyaWFuZ2xlLXNpemUgLSBXaWR0aCBvZiB0aGUgdHJpYW5nbGUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJHRyaWFuZ2xlLWNvbG9yIC0gQ29sb3Igb2YgdGhlIHRyaWFuZ2xlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHRyaWFuZ2xlLWRpcmVjdGlvbiAtIERpcmVjdGlvbiB0aGUgdHJpYW5nbGUgcG9pbnRzLiBDYW4gYmUgYHVwYCwgYHJpZ2h0YCwgYGRvd25gLCBvciBgbGVmdGAuXG5AbWl4aW4gY3NzLXRyaWFuZ2xlKFxuICAkdHJpYW5nbGUtc2l6ZSxcbiAgJHRyaWFuZ2xlLWNvbG9yLFxuICAkdHJpYW5nbGUtZGlyZWN0aW9uXG4pIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG5cbiAgYm9yZGVyOiBpbnNldCAkdHJpYW5nbGUtc2l6ZTtcblxuICBjb250ZW50OiAnJztcblxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gZG93bikge1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiAkdHJpYW5nbGUtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IHVwKSB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvcjtcbiAgfVxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gcmlnaHQpIHtcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yO1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIG1lbnUgaWNvbiB3aXRoIGEgc2V0IHdpZHRoLCBoZWlnaHQsIG51bWJlciBvZiBiYXJzLCBhbmQgY29sb3JzLiBUaGUgbWl4aW4gdXNlcyB0aGUgaGVpZ2h0IG9mIHRoZSBpY29uIGFuZCB0aGUgd2VpZ2h0IG9mIHRoZSBiYXJzIHRvIGRldGVybWluZSBzcGFjaW5nLiA8ZGl2IGNsYXNzPVwiZG9jcy1leGFtcGxlLWJ1cmdlclwiPjwvZGl2PlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3ItaG92ZXIgWyRkYXJrLWdyYXldIC0gQ29sb3IgdG8gdXNlIHdoZW4gdGhlIGljb24gaXMgaG92ZXJlZCBvdmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWzIwcHhdIC0gV2lkdGggb2YgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHQgWzE2cHhdIC0gSGVpZ2h0IG9mIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2VpZ2h0IFsycHhdIC0gSGVpZ2h0IG9mIGluZGl2aWR1YWwgYmFycyBpbiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhcnMgWzNdIC0gTnVtYmVyIG9mIGJhcnMgaW4gdGhlIGljb24uXG5AbWl4aW4gaGFtYnVyZ2VyKFxuICAkY29sb3I6ICRibGFjayxcbiAgJGNvbG9yLWhvdmVyOiAkZGFyay1ncmF5LFxuICAkd2lkdGg6IDIwcHgsXG4gICRoZWlnaHQ6IDE2cHgsXG4gICR3ZWlnaHQ6IDJweCxcbiAgJGJhcnM6IDNcbikge1xuICAvLyBib3gtc2hhZG93IENTUyBvdXRwdXRcbiAgJHNoYWRvdzogKCk7XG4gICRob3Zlci1zaGFkb3c6ICgpO1xuXG4gIC8vIFNwYWNpbmcgYmV0d2VlbiBiYXJzIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgaWNvbiBhbmQgdGhlIHdlaWdodCBvZiBlYWNoIGJhclxuICAkc3BhY2luZzogKCRoZWlnaHQgLSAoJHdlaWdodCAqICRiYXJzKSkgLyAoJGJhcnMgLSAxKTtcblxuICBAaWYgdW5pdCgkc3BhY2luZykgPT0gJ3B4JyB7XG4gICAgJHNwYWNpbmc6IGZsb29yKCRzcGFjaW5nKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xuICAgICRvZmZzZXQ6ICgkd2VpZ2h0ICsgJHNwYWNpbmcpICogKCRpIC0gMSk7XG4gICAgJHNoYWRvdzogYXBwZW5kKCRzaGFkb3csIDAgJG9mZnNldCAwICRjb2xvciwgY29tbWEpO1xuICB9XG5cbiAgLy8gSWNvbiBjb250YWluZXJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gIC8vIEljb24gYmFyc1xuICAmOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkd2VpZ2h0O1xuXG4gICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgIGJveC1zaGFkb3c6ICRzaGFkb3c7XG5cbiAgICBjb250ZW50OiAnJztcbiAgfVxuXG4gIC8vIEhvdmVyIHN0YXRlXG4gIEBpZiAkY29sb3ItaG92ZXIge1xuICAgIC8vIEdlbmVyYXRlIENTU1xuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xuICAgICAgJG9mZnNldDogKCR3ZWlnaHQgKyAkc3BhY2luZykgKiAoJGkgLSAxKTtcbiAgICAgICRob3Zlci1zaGFkb3c6IGFwcGVuZCgkaG92ZXItc2hhZG93LCAwICRvZmZzZXQgMCAkY29sb3ItaG92ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItaG92ZXI7XG4gICAgICBib3gtc2hhZG93OiAkaG92ZXItc2hhZG93O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBhIGRvd253YXJkLWZhY2luZyB0cmlhbmdsZSBhcyBhIGJhY2tncm91bmQgaW1hZ2UgdG8gYW4gZWxlbWVudC4gVGhlIGltYWdlIGlzIGZvcm1hdHRlZCBhcyBhbiBTVkcsIG1ha2luZyBpdCBlYXN5IHRvIGNoYW5nZSB0aGUgY29sb3IuIEJlY2F1c2UgSW50ZXJuZXQgRXhwbG9yZXIgZG9lc24ndCBzdXBwb3J0IGVuY29kZWQgU1ZHcyBhcyBiYWNrZ3JvdW5kIGltYWdlcywgYSBQTkcgZmFsbGJhY2sgaXMgYWxzbyBpbmNsdWRlZC5cbi8vLyBUaGVyZSBhcmUgdHdvIFBORyBmYWxsYmFja3M6IGEgYmxhY2sgdHJpYW5nbGUgYW5kIGEgd2hpdGUgdHJpYW5nbGUuIFRoZSBvbmUgdXNlZCBkZXBlbmRzIG9uIHRoZSBsaWdodG5lc3Mgb2YgdGhlIGlucHV0IGNvbG9yLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgdHJpYW5nbGUuXG5AbWl4aW4gYmFja2dyb3VuZC10cmlhbmdsZSgkY29sb3I6ICRibGFjaykge1xuICAkcmdiOiAncmdiJTI4I3tyb3VuZChyZWQoJGNvbG9yKSl9LCAje3JvdW5kKGdyZWVuKCRjb2xvcikpfSwgI3tyb3VuZChibHVlKCRjb2xvcikpfSUyOSc7XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZlcnNpb249JzEuMScgd2lkdGg9JzMyJyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMzIgMjQnPjxwb2x5Z29uIHBvaW50cz0nMCwwIDMyLDAgMTYsMjQnIHN0eWxlPSdmaWxsOiAjeyRyZ2J9Jz48L3BvbHlnb24+PC9zdmc+XCIpO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MFxcMCkge1xuICAgIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA8IDYwJSB7XG4gICAgICAvLyBXaGl0ZSB0cmlhbmdsZVxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQVlDQVlBQUFDYlUvODBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUlwSlJFRlVlTnJFa2NrTmdEQU1CQmZSa0V0ME9iUkJCZHNHWFVEZ21RZks0WGhIMm04Y3pRQUF5MjdSM3RzdzRRZmUyeDh1T082b1lMYjZHbE9vcjNHRitzd1VSQU9tVUorUnd0RUpzOVd2VEdFWXhCWHFJMU1RQVpoQ2ZVUUtSekRNVmorVHdyQUlWNmp2U1VFa1lBcjFMU2tjeVRCYi9WK0tZZlg3eEFldXNxM3NMRHRHSDNrRUdBQ1BXSWZsTlpmaFJRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIEJsYWNrIHRyaWFuZ2xlXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBWUNBWUFBQUNiVS84MEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTUJKUkVGVWVOckVsbHNPaENBTVJWc3pDOUlselU3S0NtVkhUSnNvTVdZTVV0cHl2OUJnYnVYUUI1WlNkZ0JZWVk0eWNnQml2azhLWUZzUU1mTWlUVEJQNG8zblV6Q0t6T2FiTEpiTHkyL2czMWV2R2tBZ2luUjQvWmVnS0g1cVgzYkpDc2NBM3QweDNrZ081dFFGeWhoRmY1MHhScUZMYnlNVU5KUXpneWpHUy93Z0Nwdktxa1JCcHVXckU0VjlkKzFFNGRQVVhxSWcxMDdTUU9FLzJEUlF4TXdURHlnSUluVkRFVDlUM2xDb2ovNmovVkNtR2paT2wybEtwWjhBQXdEUVA3eklpbURHRlFBQUFBQkpSVTVFcmtKZ2dnPT0nKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFwcGxpZXMgdGhlIG1pY3JvIGNsZWFyZml4IGhhY2sgcG9wdWxhcml6ZWQgYnkgTmljb2xhcyBHYWxsYWdoZXIuIEluY2x1ZGUgdGhpcyBtaXhpbiBvbiBhIGNvbnRhaW5lciBpZiBpdHMgY2hpbGRyZW4gYXJlIGFsbCBmbG9hdGVkLCB0byBnaXZlIHRoZSBjb250YWluZXIgYSBwcm9wZXIgaGVpZ2h0LlxuLy8vIFRoZSBjbGVhcmZpeCBpcyBhdWdtZW50ZWQgd2l0aCBzcGVjaWZpYyBzdHlsZXMgdG8gcHJldmVudCBib3JkZXJzIGluIGZsZXhib3ggZW52aXJvbm1lbnRzXG4vLy8gQGxpbmsgaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svIE1pY3JvIENsZWFyZml4IEhhY2tcbi8vLyBAbGluayBodHRwOi8vZGFuaXNhZGVzaWduZXIuY29tL2Jsb2cvZmxleGJveC1jbGVhci1maXgtcHNldWRvLWVsZW1lbnRzLyBGbGV4Ym94IGZpeFxuQG1peGluIGNsZWFyZml4IHtcbiAgJjo6YmVmb3JlLFxuICAmOjphZnRlciB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY29udGVudDogJyAnO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4LWJhc2lzOiAwO1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG59XG5cbi8vLyBBZGRzIENTUyBmb3IgYSBcInF1YW50aXR5IHF1ZXJ5XCIgc2VsZWN0b3IgdGhhdCBhdXRvbWF0aWNhbGx5IHNpemVzIGVsZW1lbnRzIGJhc2VkIG9uIGhvdyBtYW55IHRoZXJlIGFyZSBpbnNpZGUgYSBjb250YWluZXIuXG4vLy8gQGxpbmsgaHR0cDovL2FsaXN0YXBhcnQuY29tL2FydGljbGUvcXVhbnRpdHktcXVlcmllcy1mb3ItY3NzIFF1YW50aXR5IFF1ZXJpZXMgZm9yIENTU1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggLSBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBkZXRlY3QuIFRoZSBoaWdoZXIgdGhpcyBudW1iZXIgaXMsIHRoZSBtb3JlIENTUyB0aGF0J3MgcmVxdWlyZWQgdG8gY292ZXIgZWFjaCBudW1iZXIgb2YgaXRlbXMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZWxlbSBbbGldIC0gVGFnIHRvIHVzZSBmb3Igc2libGluZyBzZWxlY3RvcnMuXG5AbWl4aW4gYXV0by13aWR0aCgkbWF4LCAkZWxlbTogbGkpIHtcbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkbWF4IHtcbiAgICAmOm50aC1sYXN0LWNoaWxkKCN7JGl9KTpmaXJzdC1jaGlsZCxcbiAgICAmOm50aC1sYXN0LWNoaWxkKCN7JGl9KTpmaXJzdC1jaGlsZCB+ICN7JGVsZW19IHtcbiAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDEgLyAkaSk7XG4gICAgfVxuICB9XG59XG5cbi8vLyBSZW1vdmVzIHRoZSBmb2N1cyByaW5nIGFyb3VuZCBhbiBlbGVtZW50IHdoZW4gYSBtb3VzZSBpbnB1dCBpcyBkZXRlY3RlZC5cbkBtaXhpbiBkaXNhYmxlLW1vdXNlLW91dGxpbmUge1xuICBbZGF0YS13aGF0aW5wdXQ9J21vdXNlJ10gJiB7XG4gICAgb3V0bGluZTogMDtcbiAgfVxufVxuXG4vLy8gTWFrZXMgYW4gZWxlbWVudCB2aXN1YWxseSBoaWRkZW4sIGJ1dCBzdGlsbCBhY2Nlc3NpYmxlIHRvIGtleWJvYXJkcyBhbmQgYXNzaXN0aXZlIGRldmljZXMuXG4vLy8gQGxpbmsgaHR0cDovL3Nub29rLmNhL2FyY2hpdmVzL2h0bWxfYW5kX2Nzcy9oaWRpbmctY29udGVudC1mb3ItYWNjZXNzaWJpbGl0eSBIaWRpbmcgQ29udGVudCBmb3IgQWNjZXNzaWJpbGl0eVxuLy8vIEBsaW5rIGh0dHA6Ly9odWdvZ2lyYXVkZWwuY29tLzIwMTYvMTAvMTMvY3NzLWhpZGUtYW5kLXNlZWsvXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRlbmZvcmNlIC0gSWYgYHRydWVgLCB1c2UgYCFpbXBvcnRhbnRgIG9uIGFwcGxpZWQgcHJvcGVydGllc1xuQG1peGluIGVsZW1lbnQtaW52aXNpYmxlKFxuICAkZW5mb3JjZTogdHJ1ZVxuKSB7XG4gICRpbXBvcnRhbnQ6IGlmKCRlbmZvcmNlLCAnIWltcG9ydGFudCcsIG51bGwpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAjeyRpbXBvcnRhbnR9O1xuICB3aWR0aDogMXB4ICN7JGltcG9ydGFudH07XG4gIGhlaWdodDogMXB4ICN7JGltcG9ydGFudH07XG4gIHBhZGRpbmc6IDAgI3skaW1wb3J0YW50fTtcbiAgb3ZlcmZsb3c6IGhpZGRlbiAjeyRpbXBvcnRhbnR9O1xuICBjbGlwOiByZWN0KDAsMCwwLDApICN7JGltcG9ydGFudH07XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgI3skaW1wb3J0YW50fTtcbiAgYm9yZGVyOiAwICN7JGltcG9ydGFudH07XG59XG5cbi8vLyBSZXZlcnNlcyB0aGUgQ1NTIG91dHB1dCBjcmVhdGVkIGJ5IHRoZSBgZWxlbWVudC1pbnZpc2libGUoKWAgbWl4aW4uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZW5mb3JjZSAtIElmIGB0cnVlYCwgdXNlIGAhaW1wb3J0YW50YCBvbiBhcHBsaWVkIHByb3BlcnRpZXNcbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZS1vZmYoXG4gICRlbmZvcmNlOiB0cnVlXG4pIHtcbiAgJGltcG9ydGFudDogaWYoJGVuZm9yY2UsICchaW1wb3J0YW50JywgbnVsbCk7XG5cbiAgcG9zaXRpb246IHN0YXRpYyAjeyRpbXBvcnRhbnR9O1xuICB3aWR0aDogYXV0byAjeyRpbXBvcnRhbnR9O1xuICBoZWlnaHQ6IGF1dG8gI3skaW1wb3J0YW50fTtcbiAgb3ZlcmZsb3c6IHZpc2libGUgI3skaW1wb3J0YW50fTtcbiAgY2xpcDogYXV0byAjeyRpbXBvcnRhbnR9O1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsICN7JGltcG9ydGFudH07XG59XG5cbi8vLyBWZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIHZlcnRpY2FsLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuLy8vIEhvcml6b250YWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG5cbi8vLyBBYnNvbHV0ZWx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIGFic29sdXRlLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbi8vLyBJdGVyYXRlcyB0aHJvdWdoIGJyZWFrcG9pbnRzIGRlZmluZWQgaW4gYCRicmVha3BvaW50LWNsYXNzZXNgIGFuZCBwcmludHMgdGhlIENTUyBpbnNpZGUgdGhlIG1peGluIGF0IGVhY2ggYnJlYWtwb2ludCdzIG1lZGlhIHF1ZXJ5LiBVc2UgdGhpcyB3aXRoIHRoZSBncmlkLCBvciBhbnkgb3RoZXIgY29tcG9uZW50IHRoYXQgaGFzIHJlc3BvbnNpdmUgY2xhc3Nlcy5cbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHNtYWxsIFt0cnVlXSAtIElmIGBmYWxzZWAsIHRoZSBtaXhpbiB3aWxsIHNraXAgdGhlIGBzbWFsbGAgYnJlYWtwb2ludC4gVXNlIHRoaXMgd2l0aCBjb21wb25lbnRzIHRoYXQgZG9uJ3QgcHJlZml4IGNsYXNzZXMgd2l0aCBgc21hbGwtYCwgb25seSBgbWVkaXVtLWAgYW5kIHVwLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzIFt0cnVlXSAtIElmIGBmYWxzZWAsIHRoZSBtaXhpbiB3aWxsIGl0ZXJhdGUgb3ZlciBicmVha3BvaW50cyB3aXRob3V0IGRvaW5nIHRoZSBtZWRpYSBxdWVyeSBpdHNlbGYuIFVzZWZ1bCBmb3IgbW9yZSBjb21wbGV4IG1lZGlhIHF1ZXJ5IGdlbmVyYXRpb24gYXMgaW4gdGhlIG1hcmdpbiBncmlkLlxuQG1peGluIC16Zi1lYWNoLWJyZWFrcG9pbnQoXG4gICRzbWFsbDogdHJ1ZSxcbiAgJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzOiB0cnVlXG4pIHtcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludC1pbihhdXRvLCAtemYtYm9vbCgkc21hbGwpLCAtemYtYm9vbCgkYXV0by1pbnNlcnQtYnJlYWtwb2ludHMpKSB7XG4gICAgQGNvbnRlbnRcbiAgfTtcbn1cblxuLy8vIEl0ZXJhdGVzIHdpdGggYEBjb250ZW50YCB0aHJvdWdoIHRoZSBnaXZlbiBsaXN0IG9mIGJyZWFrcG9pbnRzIGAkYnJlYWtwb2ludHNgLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TGlzdH0gJGJyZWFrcG9pbnRzIFthdXRvXSAtIEJyZWFrcG9pbnRzIHRvIGl0ZXJhdGVzIG9uLiBJdCBjYW4gYmUgYSBicmVha3BvaW50IG5hbWUsIGxpc3Qgb2YgYnJlYWtwb2ludHMgb3IgYGF1dG9gIGZvciBhbGwgYnJlYWtwb2ludHMuXG4vLy8gQHBhcmFtIHtCb29sZWFufE51bGx9ICR6ZXJvLWJyZWFrcG9pbnQgW251bGxdIC0gV2hldGhlciB0aGUgemVyby1icmVha3BvaW50IChvZnRlbiBgc21hbGxgKSBtdXN0IGJlIGluY2x1ZGVkLiBJZiBgdHJ1ZWAsIGl0IHdpbGwgYWx3YXlzIGJlIGFkZGVkIHRvIHRoZSBsaXN0IGlmIG5vdCBhbHJlYWR5IHRoZXJlLiBJZiBgZmFsc2VgLCBpdCB3aWxsIGFsd2F5cyBiZSByZW1vdmVkLiBEb2VzIG5vdGhpbmcgYnkgZGVmYXVsdC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW58S2V5d29yZH0gJG1lZGlhLXF1ZXJpZXMgW3RydWVdIC0gV2hldGhlciBtZWRpYS1xdWVyaWVzIG11c3QgYmUgZ2VuZXJhdGVkLiBJZiBgZm9yLWxpc3RzYCwgb25seSBnZW5lcmF0ZSBtZWRpYS1xdWVyaWVzIHdoZW4gYCRicmVha3BvaW50c2AgaXMgYSBsaXN0LlxuQG1peGluIC16Zi1lYWNoLWJyZWFrcG9pbnQtaW4oXG4gICRicmVha3BvaW50czogYXV0byxcbiAgJHplcm8tYnJlYWtwb2ludDogbnVsbCxcbiAgJG1lZGlhLXF1ZXJpZXM6IHRydWVcbikge1xuICAkLWxpc3Q6ICgpO1xuICAkLWJyZWFrcG9pbnRzLWlzLWEtbGlzdDogdHJ1ZTtcblxuICAvLyBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBicmVha3BvaW50KHMpIHRvIGl0ZXJhdGUgb24uXG4gIEBpZiAkYnJlYWtwb2ludHMgPT0gYXV0byB7XG4gICAgJC1saXN0OiAkYnJlYWtwb2ludC1jbGFzc2VzO1xuICB9XG4gIEBlbHNlIGlmIHR5cGUtb2YoJGJyZWFrcG9pbnRzKSA9PSAnbGlzdCcge1xuICAgICQtbGlzdDogJGJyZWFrcG9pbnRzO1xuICB9XG4gIEBlbHNlIGlmIHR5cGUtb2YoJGJyZWFrcG9pbnRzKSA9PSAnc3RyaW5nJyB7XG4gICAgJC1saXN0OiAoJGJyZWFrcG9pbnRzKTtcbiAgICAkLWJyZWFrcG9pbnRzLWlzLWEtbGlzdDogZmFsc2U7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBcIiRicmVha3BvaW50c1wiIGluIFwiLXpmLWVhY2gtYnJlYWtwb2ludC1pbigpXCIuIEdvdCBcIiN7JGJyZWFrcG9pbnRzfVwiICgje3R5cGUtb2YoJGJyZWFrcG9pbnRzKX0pLiBFeHBlY3RlZCBhIGJyZWFrcG9pbnQgbmFtZSwgYSBsaXN0IG9mIGJyZWFrcG9pbnRzIG9yIFwiYXV0b1wiJztcbiAgfVxuXG4gIC8vIEFkZCBvciByZW1vdmUgdGhlIHplcm8gYnJlYWtwb2ludCBhY2NvcmRpbmcgdG8gYCR6ZXJvLWJyZWFrcG9pbnRgXG4gIEBpZiAkemVyby1icmVha3BvaW50ID09IHRydWUge1xuICAgICQtbGlzdDogam9pbigoJC16Zi16ZXJvLWJyZWFrcG9pbnQpLCBzbC1yZW1vdmUoJC1saXN0LCAkLXpmLXplcm8tYnJlYWtwb2ludCkpO1xuICB9XG4gIEBlbHNlIGlmICR6ZXJvLWJyZWFrcG9pbnQgPT0gZmFsc2Uge1xuICAgICQtbGlzdDogc2wtcmVtb3ZlKCQtbGlzdCwgJC16Zi16ZXJvLWJyZWFrcG9pbnQpO1xuICB9XG5cbiAgLy8gSXRlcmF0ZSBvbiBicmVha3BvaW50KHMpXG4gIEBlYWNoICRicCBpbiAkLWxpc3Qge1xuICAgICRvbGQtemYtc2l6ZTogbnVsbDtcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkge1xuICAgICAgJG9sZC16Zi1zaXplOiAkLXpmLXNpemU7XG4gICAgfVxuICAgICQtemYtc2l6ZTogJGJwICFnbG9iYWw7XG5cbiAgICBAaWYgKCRtZWRpYS1xdWVyaWVzID09IHRydWVcbiAgICAgIG9yICgkbWVkaWEtcXVlcmllcyA9PSAnZm9yLWxpc3RzJyBhbmQgJC1icmVha3BvaW50cy1pcy1hLWxpc3QpKSB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgJC16Zi1zaXplOiAkb2xkLXpmLXNpemUgIWdsb2JhbDtcbiAgfVxufVxuXG4vLy8gR2VuZXJhdGUgdGhlIGBAY29udGVudGAgcGFzc2VkIHRvIHRoZSBtaXhpbiB3aXRoIGEgdmFsdWUgYCQtemYtYnAtdmFsdWVgIHJlbGF0ZWQgdG8gYSBicmVha3BvaW50LCBkZXBlbmRpbmcgb24gdGhlIGAkbmFtZWAgcGFyYW1ldGVyOlxuLy8vIC0gRm9yIGEgc2luZ2xlIHZhbHVlLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhpcyB2YWx1ZS5cbi8vLyAtIEZvciBhIGJyZWFrcG9pbnQgbmFtZSwgYCQtemYtYnAtdmFsdWVgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUgaW4gYCRtYXBgLlxuLy8vIC0gRm9yIFwiYXV0b1wiLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZSBpbiBgJG1hcGAgYW5kIGlzIHBhc3NlZCB0byBgQGNvbnRlbnRgLCB3aGljaCBpcyBtYWRlIHJlc3BvbnNpdmUgZm9yIGVhY2ggYnJlYWtwb2ludCBvZiBgJG1hcGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8QXJyYXl8S2V5d29yZH0gJG5hbWUgW2F1dG9dIC0gU2luZ2xlIHZhbHVlLCBicmVha3BvaW50IG5hbWUsIG9yIGxpc3Qgb2YgYnJlYWtwb2ludCBuYW1lcyB0byB1c2UuIFwiYXV0b1wiIGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFwIC0gTWFwIG9mIGJyZWFrcG9pbnRzIGFuZCB2YWx1ZXMgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZS5cbkBtaXhpbiAtemYtYnJlYWtwb2ludC12YWx1ZShcbiAgJG5hbWU6IGF1dG8sXG4gICRtYXA6IG51bGxcbikge1xuICBAaWYgJG5hbWUgPT0gYXV0byBhbmQgdHlwZS1vZigkbWFwKSA9PSAnbWFwJyB7XG4gICAgLy8gXCJhdXRvXCJcbiAgICBAZWFjaCAkaywgJHYgaW4gJG1hcCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRrKSB7XG4gICAgICAgIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKCR2LCAkbWFwKSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIGJyZWFrcG9pbnQgbmFtZVxuICAgIEBpZiB0eXBlLW9mKCRuYW1lKSA9PSAnc3RyaW5nJyB7XG4gICAgICAkYnAtdmFsdWU6IC16Zi1nZXQtYnAtdmFsKCRtYXAsICRuYW1lKTtcbiAgICAgIEBpZiAkYnAtdmFsdWUgIT0gbnVsbCB7XG4gICAgICAgICRuYW1lOiAkYnAtdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYnJlYWtwb2ludCB2YWx1ZVxuICAgICQtemYtYnAtdmFsdWU6ICRuYW1lICFnbG9iYWw7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuJC16Zi1mb250LXN0YWNrOiAoXG4gICdnZW9yZ2lhJzogKEdlb3JnaWEsIFwiVVJXIEJvb2ttYW4gTFwiLCBzZXJpZiksXG4gICdoZWx2ZXRpY2EnOiAoSGVsdmV0aWNhLCBBcmlhbCwgXCJOaW1idXMgU2FucyBMXCIsIHNhbnMtc2VyaWYpLFxuICAnbHVjaWRhLWdyYW5kZSc6IChcIkx1Y2lkYSBHcmFuZGVcIiwgXCJMdWNpZGEgU2FucyBVbmljb2RlXCIsIFwiQml0c3RyZWFtIFZlcmEgU2Fuc1wiLCBzYW5zLXNlcmlmKSxcbiAgJ21vbm9zcGFjZSc6IChcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIFwiTmltYnVzIFNhbnMgTFwiLCBtb25vc3BhY2UpLFxuICAnc3lzdGVtJzogKC1hcHBsZS1zeXN0ZW0sIHN5c3RlbS11aSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFwiUm9ib3RvXCIsIFwiT3h5Z2VuXCIsIFwiVWJ1bnR1XCIsIFwiQ2FudGFyZWxsXCIsIFwiRmlyYSBTYW5zXCIsIFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiksXG4gICd2ZXJkYW5hJzogKFZlcmRhbmEsIEdlbmV2YSwgXCJEZWphVnUgU2Fuc1wiLCBzYW5zLXNlcmlmKSxcbik7XG5cbi8vLyBSZXR1cm4gYSBmb250IHN0YWNrIGxpc3QgZnJvbSBhIG1hcC4gRXF1aXZhbGVudCB0byBgbWFwLXNhZmUtZ2V0KCRuYW1lLCAkLXpmLWZvbnQtc3RhY2spYC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3RhY2sgLSBOYW1lIG9mIHRoZSBmb250IHN0YWNrLlxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIFskLXpmLWZvbnQtc3RhY2tdIC0gTWFwIG9mIGZvbnQgc3RhY2tzIHRvIHJldHJpZXZlIGEgbGlzdCBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IEZvdW5kIGZvbnQgc3RhY2suXG5AZnVuY3Rpb24gZm9udC1zdGFjaygkc3RhY2ssICRtYXA6ICQtemYtZm9udC1zdGFjaykge1xuICBAcmV0dXJuIG1hcC1zYWZlLWdldCgkbWFwLCAkc3RhY2spO1xufVxuIiwiJGZvbnQtbmFtZTogJ1NvdXJjZSBTYW5zIFBybyc7XHJcbiRmb250LWZhbWlseS1iYXNlOiAkZm9udC1uYW1lLCdSb2JvdG8nLCBzYW5zLXNlcmlmO1xyXG4kZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xyXG4kZm9udC1mYW1pbHktZmFsbGJhY2s6ICdSb2JvdG8nLFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcclxuJGZvbnQtZmFtaWx5LXRpdGxlOiAkZm9udC1uYW1lLCdSb2JvdG8nLCBzYW5zLXNlcmlmO1xyXG4kZm9udC1mYW1pbHktbGlnaHQ6ICRmb250LW5hbWUsJ1JvYm90bycsIHNhbnMtc2VyaWY7XHJcbiRmb250LWZhbWlseTI6ICRmb250LW5hbWUsJ1JvYm90bycsIHNhbnMtc2VyaWY7XHJcbiRsZXR0ZXItc3BhY2luZzogMGVtO1xyXG4kaHRtbC1mb250LXNpemU6IDYyLjUlO1xyXG4kZm9udC1zaXplLWJvZHk6IDEuOHJlbTtcclxuJGZvbnQtc2l6ZS1ib2R5LW1vYjogMi40cmVtO1xyXG4kZm9udC1zaXplLWJhc2U6IDEuOHJlbTtcclxuJGJnLWNvbG9yOiAjZmZmO1xyXG5cclxuJHRpdGxlOiAoXHJcbiAgICAgICAgZnM6IDZyZW0sXHJcbiAgICAgICAgZnMtbWQ6IDQuNHJlbSxcclxuICAgICAgICBmcy1zbTogM3JlbSxcclxuICAgICAgICBsaDogMS4xNVxyXG4pO1xyXG5cclxuJHNlY3Rpb246IChcclxuICAgICAgICBwYWRkaW5nOiAxMHJlbSxcclxuICAgICAgICBwYWRkaW5nLW1kOiA3cmVtLFxyXG4gICAgICAgIHBhZGRpbmctc206IDVyZW1cclxuKTtcclxuXHJcbiRjb250YWluZXItd2lkdGg6IDEyNnJlbTtcclxuJGNvbnRhaW5lci13aWR0aC1weDogMTI2MHB4O1xyXG4kZ2xvYmFsLWZvbnQtc2l6ZTogNjIuNSU7XHJcbiRnbG9iYWwtd2lkdGg6IHJlbS1jYWxjKDEyNjApO1xyXG5cclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMHB4O1xyXG4kYm9yZGVyLXJhZGl1cy1idG46IDJyZW07XHJcblxyXG4kZm9vdGVyLXBhZGRpbmcteTogMS41cmVtO1xyXG4kZm9vdGVyLXNpemU6IDEuNnJlbTtcclxuXHJcblxyXG4kY29sb3ItcmVkOiAjYzEyNzJkO1xyXG4kY29sb3ItcmVkLWxpZ2h0OiAjZTM3MjViO1xyXG4kY29sb3ItcmVkLWZvcm06ICNlMzcyNWI7XHJcblxyXG4kY29sb3ItYmx1ZTogIzA1ODBGRjtcclxuJGNvbG9yLWRhcmstYmx1ZTogIzAwNDQ1YTtcclxuJGNvbG9yLWN5YW46ICMzNkQxREM7XHJcbiRjb2xvci1ncmVlbjogIzAwNTYzRjtcclxuJGNvbG9yLXllbGxvdzogI0ZGRTgwMDtcclxuJGNvbG9yLWdyZWVuLWxpZ2h0OiAjZWNmMGViO1xyXG4kY29sb3ItZ3JlZW4tZGFyazogIzJiOTMyMztcclxuJGNvbG9yLWxpZ2h0Z3JlZW46ICMxZmRmNWM7XHJcbiRjb2xvci15ZWxsb3ctbGlnaHQ6ICNmZmViOTY7XHJcbiRjb2xvci1vcmFuZ2U6ICNmZjdhMDA7XHJcbiRjb2xvci1hc3BoYWx0OiAjNzA3ODgyO1xyXG4kY29sb3ItYnJvd246ICM3MzUwMzI7XHJcbiRjb2xvci1icm93bjE6ICM2ZTRkMmY7XHJcbiRjb2xvci1icm93bi1kYXJrZXN0OiAjNWEzYjIwO1xyXG4kY29sb3ItYnJvd24tZGFya2VzdDE6ICMzNjIzMTM7XHJcbiRjb2xvci1icm93bi1tZWRpdW06ICM3ZTYwNDg7XHJcbiRjb2xvci1icm93bi1saWdodDogI0VDRTZEQztcclxuJGNvbG9yLWJsYWNrOiAjMWQxZDFkO1xyXG4kY29sb3ItZ3JleTogI0U1RTVFNTtcclxuJGNvbG9yLWdyZXkyOiAjODg4ODg4O1xyXG4kY29sb3ItZ3JleS1hY2NlbnQ6ICM2NjY2NjY7XHJcbiRjb2xvci1kYXJrZ3JleTogI2MwYzBjMDtcclxuJGNvbG9yLWxpZ2h0Z3JleTogI2NjYztcclxuXHJcblxyXG4kY29sb3ItdGV4dDogIzQ0NDQ0NDtcclxuJGNvbG9yLWhlYWRpbmc6ICMyMjIyMjI7XHJcbiRjb2xvci1wcmltYXJ5OiAkY29sb3ItYmx1ZTtcclxuJGNvbG9yLXNlY29uZGFyeTogJGNvbG9yLXRleHQ7XHJcbiRjb2xvci1saW5rOiAkY29sb3ItcHJpbWFyeTtcclxuJGNvbG9yLWxpbmstYWN0aXZlOiAkY29sb3ItcHJpbWFyeTtcclxuJGNvbG9yLWJvcmRlcjogI2NjYztcclxuJGNvbG9yLWJvcmRlci1pbnB1dDogIzAwMDtcclxuJGNvbG9yLWJnLWhlYWRlcjogdHJhbnNwYXJlbnQ7XHJcbiRjb2xvci1oZWFkZXI6ICMwMDA7XHJcbiRjb2xvci1iZy1mb290ZXI6ICNGNUNFMDA7XHJcbiRjb2xvci1mb290ZXI6ICMyMjI7XHJcbiRjb2xvci1ib3gtYm9yZGVyOiAkY29sb3ItYm9yZGVyO1xyXG5cclxuXHJcbiRzaGFkb3c6IDBweCAwcHggMjVweCAwcHggcmdiYSgzNywgMzgsIDM3LCAuMSk7XHJcbiRtb2RhbC1zaGFkb3c6IDBweCAwcHggMjVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcclxuJGJ0bi1zaGFkb3c6IDBweCA2cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcbiIsIi8qKlxuICogRm91bmRhdGlvbiBmb3IgU2l0ZXNcbiAqIFZlcnNpb24gNi42LjNcbiAqIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuICovXG5cbi8vIC0tLSBEZXBlbmRlbmNpZXMgLS0tXG5AaW1wb3J0ICd2ZW5kb3Ivbm9ybWFsaXplJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy9taXNzaW5nLWRlcGVuZGVuY2llcyc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvdHJ1ZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9jb250YWluJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3B1cmdlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3JlbW92ZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9yZXBsYWNlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3RvLWxpc3QnO1xuXG4vLyAtLS0gU2V0dGluZ3MgLS0tXG4vLyBpbXBvcnQgeW91ciBvd24gYHNldHRpbmdzYCBoZXJlIG9yXG4vLyBpbXBvcnQgYW5kIG1vZGlmeSB0aGUgZGVmYXVsdCBzZXR0aW5ncyB0aHJvdWdoXG4vLyBAaW1wb3J0ICdzZXR0aW5ncy9zZXR0aW5ncyc7XG5cbi8vIC0tLSBDb21wb25lbnRzIC0tLVxuLy8gVXRpbGl0aWVzXG5AaW1wb3J0ICd1dGlsL3V0aWwnO1xuLy8gR2xvYmFsIHN0eWxlc1xuQGltcG9ydCAnZ2xvYmFsJztcbkBpbXBvcnQgJ2Zvcm1zL2Zvcm1zJztcbkBpbXBvcnQgJ3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5cbi8vIEdyaWRzXG5AaW1wb3J0ICdncmlkL2dyaWQnO1xuQGltcG9ydCAneHktZ3JpZC94eS1ncmlkJztcbi8vIEdlbmVyaWMgY29tcG9uZW50c1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24tZ3JvdXAnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jbG9zZS1idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9sYWJlbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Byb2dyZXNzLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3NsaWRlcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3N3aXRjaCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RhYmxlJztcbi8vIEJhc2ljIGNvbXBvbmVudHNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYmFkZ2UnO1xuQGltcG9ydCAnY29tcG9uZW50cy9icmVhZGNydW1icyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2NhbGxvdXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jYXJkJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJvcGRvd24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9wYWdpbmF0aW9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdG9vbHRpcCc7XG5cbi8vIENvbnRhaW5lcnNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYWNjb3JkaW9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVkaWEtb2JqZWN0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb3JiaXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9yZXNwb25zaXZlLWVtYmVkJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFicyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RodW1ibmFpbCc7XG4vLyBNZW51LWJhc2VkIGNvbnRhaW5lcnNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVudSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL21lbnUtaWNvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2FjY29yZGlvbi1tZW51JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJpbGxkb3duJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJvcGRvd24tbWVudSc7XG5cbi8vIExheW91dCBjb21wb25lbnRzXG5AaW1wb3J0ICdjb21wb25lbnRzL29mZi1jYW52YXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9yZXZlYWwnO1xuQGltcG9ydCAnY29tcG9uZW50cy9zdGlja3knO1xuQGltcG9ydCAnY29tcG9uZW50cy90aXRsZS1iYXInO1xuQGltcG9ydCAnY29tcG9uZW50cy90b3AtYmFyJztcblxuLy8gSGVscGVyc1xuQGltcG9ydCAnY29tcG9uZW50cy9mbG9hdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2ZsZXgnO1xuQGltcG9ydCAnY29tcG9uZW50cy92aXNpYmlsaXR5JztcbkBpbXBvcnQgJ3Byb3RvdHlwZS9wcm90b3R5cGUnO1xuXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWV2ZXJ5dGhpbmcoXG4gICRmbGV4OiB0cnVlLFxuICAkcHJvdG90eXBlOiBmYWxzZSxcbiAgJHh5LWdyaWQ6ICR4eS1ncmlkXG4pIHtcbiAgQGlmICRmbGV4IHtcbiAgICAkZ2xvYmFsLWZsZXhib3g6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIEBpZiAkeHktZ3JpZCB7XG4gICAgJHh5LWdyaWQ6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIC8vIEdsb2JhbCBzdHlsZXNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1nbG9iYWwtc3R5bGVzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm1zO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXR5cG9ncmFwaHk7XG5cbiAgLy8gR3JpZHNcbiAgQGlmIG5vdCAkZmxleCB7XG4gICAgQGluY2x1ZGUgZm91bmRhdGlvbi1ncmlkO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJHh5LWdyaWQge1xuICAgICAgQGluY2x1ZGUgZm91bmRhdGlvbi14eS1ncmlkLWNsYXNzZXM7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxleC1ncmlkO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdlbmVyaWMgY29tcG9uZW50c1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJ1dHRvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1idXR0b24tZ3JvdXA7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWxhYmVsO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb2dyZXNzLWJhcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zbGlkZXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc3dpdGNoO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRhYmxlO1xuICAvLyBCYXNpYyBjb21wb25lbnRzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYmFkZ2U7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnJlYWRjcnVtYnM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2FsbG91dDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jYXJkO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXBhZ2luYXRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9vbHRpcDtcblxuICAvLyBDb250YWluZXJzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYWNjb3JkaW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lZGlhLW9iamVjdDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1vcmJpdDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1yZXNwb25zaXZlLWVtYmVkO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRhYnM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGh1bWJuYWlsO1xuICAvLyBNZW51LWJhc2VkIGNvbnRhaW5lcnNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lbnUtaWNvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1kcmlsbGRvd24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1kcm9wZG93bi1tZW51O1xuXG4gIC8vIExheW91dCBjb21wb25lbnRzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tb2ZmLWNhbnZhcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1yZXZlYWw7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc3RpY2t5O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRpdGxlLWJhcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10b3AtYmFyO1xuXG4gIC8vIEhlbHBlcnNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbG9hdC1jbGFzc2VzO1xuICBAaWYgJGZsZXggeyBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsZXgtY2xhc3NlczsgfVxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXZpc2liaWxpdHktY2xhc3NlcztcbiAgQGlmICRwcm90b3R5cGUgeyBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1jbGFzc2VzOyB9XG59XG4iLCJAbWl4aW4gZm91bmRhdGlvbi1ub3JtYWxpemUoKSB7XG4gIC8qISBub3JtYWxpemUuY3NzIHY4LjAuMCB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuICAvLyBEb2N1bWVudFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAgLy8gMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG5cbiAgaHRtbCB7XG4gICAgbGluZS1oZWlnaHQ6IDEuMTU7IC8vIDFcbiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIDJcbiAgfVxuXG4gIC8vIFNlY3Rpb25zXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzLlxuXG4gIGJvZHkge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIC8vIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAgLy8gYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cblxuICBoMSB7XG4gICAgZm9udC1zaXplOiAyZW07XG4gICAgbWFyZ2luOiAwLjY3ZW0gMDtcbiAgfVxuXG4gIC8vIEdyb3VwaW5nIGNvbnRlbnRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuICAvLyAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cblxuICBociB7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8vIDFcbiAgICBoZWlnaHQ6IDA7IC8vIDFcbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgLy8gMlxuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAgLy8gMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuXG4gIHByZSB7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvLyAxXG4gICAgZm9udC1zaXplOiAxZW07IC8vIDJcbiAgfVxuXG4gIC8vIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuXG4gIGEge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG5cbiAgLy8gMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIENocm9tZSA1Ny1cbiAgLy8gMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cblxuICBhYmJyW3RpdGxlXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsgLy8gMVxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAvLyAyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvLyAyXG4gIH1cblxuICAvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuXG4gIGIsXG4gIHN0cm9uZyB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gIC8vIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cblxuICBjb2RlLFxuICBrYmQsXG4gIHNhbXAge1xuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLy8gMVxuICAgIGZvbnQtc2l6ZTogMWVtOyAvLyAyXG4gIH1cblxuICAvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cblxuICBzbWFsbCB7XG4gICAgZm9udC1zaXplOiA4MCU7XG4gIH1cblxuICAvLyBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAgLy8gYWxsIGJyb3dzZXJzLlxuXG4gIHN1YixcbiAgc3VwIHtcbiAgICBmb250LXNpemU6IDc1JTtcbiAgICBsaW5lLWhlaWdodDogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICB9XG5cbiAgc3ViIHtcbiAgICBib3R0b206IC0wLjI1ZW07XG4gIH1cblxuICBzdXAge1xuICAgIHRvcDogLTAuNWVtO1xuICB9XG5cbiAgLy8gRW1iZWRkZWQgY29udGVudFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAuXG5cbiAgaW1nIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIH1cblxuICAvLyBGb3Jtc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzLlxuICAvLyAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG5cbiAgYnV0dG9uLFxuICBpbnB1dCxcbiAgb3B0Z3JvdXAsXG4gIHNlbGVjdCxcbiAgdGV4dGFyZWEge1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OyAvLyAxXG4gICAgZm9udC1zaXplOiAxMDAlOyAvLyAxXG4gICAgbGluZS1oZWlnaHQ6IDEuMTU7IC8vIDFcbiAgICBtYXJnaW46IDA7IC8vIDJcbiAgfVxuXG4gIC8vIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICAvLyAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuXG4gIGJ1dHRvbixcbiAgaW5wdXQgeyAvLyAxXG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cbiAgLy8gMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuXG4gIGJ1dHRvbixcbiAgc2VsZWN0IHsgLy8gMVxuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLy8gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cblxuICBidXR0b24sXG4gIFt0eXBlPVwiYnV0dG9uXCJdLFxuICBbdHlwZT1cInJlc2V0XCJdLFxuICBbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuXG4gIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbiAgW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG4gIFt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXG4gIFt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cblxuICBidXR0b246LW1vei1mb2N1c3JpbmcsXG4gIFt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuICBbdHlwZT1cInJlc2V0XCJdOi1tb3otZm9jdXNyaW5nLFxuICBbdHlwZT1cInN1Ym1pdFwiXTotbW96LWZvY3VzcmluZyB7XG4gICAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xuICB9XG5cbiAgLy8gQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuXG4gIGZpZWxkc2V0IHtcbiAgICBwYWRkaW5nOiAwLjM1ZW0gMC43NWVtIDAuNjI1ZW07XG4gIH1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICAvLyAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gIC8vIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAgLy8gICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgbGVnZW5kIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxXG4gICAgY29sb3I6IGluaGVyaXQ7IC8vIDJcbiAgICBkaXNwbGF5OiB0YWJsZTsgLy8gMVxuICAgIG1heC13aWR0aDogMTAwJTsgLy8gMVxuICAgIHBhZGRpbmc6IDA7IC8vIDNcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvLyAxXG4gIH1cblxuICAvLyBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuXG4gIHByb2dyZXNzIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDEwKy5cblxuICB0ZXh0YXJlYSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gIH1cblxuICAvLyAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC5cbiAgLy8gMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLlxuXG4gIFt0eXBlPVwiY2hlY2tib3hcIl0sXG4gIFt0eXBlPVwicmFkaW9cIl0ge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIDFcbiAgICBwYWRkaW5nOiAwOyAvLyAyXG4gIH1cblxuICAvLyBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG5cbiAgW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gIFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAgLy8gMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG5cbiAgW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvLyAxXG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8vIDJcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cblxuICBbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAgLy8gMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuXG4gIDo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAxXG4gICAgZm9udDogaW5oZXJpdDsgLy8gMlxuICB9XG5cbiAgLy8gSW50ZXJhY3RpdmVcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSAxMCssIGFuZCBGaXJlZm94LlxuXG4gIGRldGFpbHMge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxuXG4gIHN1bW1hcnkge1xuICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcbiAgfVxuXG4gIC8vIE1pc2NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXG5cbiAgdGVtcGxhdGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMC5cblxuICBbaGlkZGVuXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIiwiLy8vXG4vLy8gQ2hlY2tzIHdoZXRoZXIgYCRmdW5jdGlvbnNgIGV4aXN0IGluIGdsb2JhbCBzY29wZS5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtBcmdMaXN0fSAkZnVuY3Rpb25zIC0gbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2hlY2sgZm9yXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfSBXaGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgbWlzc2luZyBkZXBlbmRlbmNpZXNcbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLW1pc3NpbmctZGVwZW5kZW5jaWVzKCRmdW5jdGlvbnMuLi4pIHtcbiAgJG1pc3NpbmctZGVwZW5kZW5jaWVzOiAoKTtcbiAgXG4gIEBlYWNoICRmdW5jdGlvbiBpbiAkZnVuY3Rpb25zIHtcbiAgICBAaWYgbm90IGZ1bmN0aW9uLWV4aXN0cygkZnVuY3Rpb24pIHtcbiAgICAgICRtaXNzaW5nLWRlcGVuZGVuY2llczogYXBwZW5kKCRtaXNzaW5nLWRlcGVuZGVuY2llcywgJGZ1bmN0aW9uLCBjb21tYSk7XG4gICAgfVxuICB9XG4gIFxuICBAaWYgbGVuZ3RoKCRtaXNzaW5nLWRlcGVuZGVuY2llcykgPiAwIHtcbiAgICBAZXJyb3IgJ1VubWV0IGRlcGVuZGVuY2llcyEgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHJlcXVpcmVkOiAjeyRtaXNzaW5nLWRlcGVuZGVuY2llc30uJztcbiAgfVxuXG4gIEByZXR1cm4gbGVuZ3RoKCRtaXNzaW5nLWRlcGVuZGVuY2llcykgPiAwO1xufVxuIiwiLy8vXG4vLy8gUmV0dXJucyB0cnV0aGluZXNzIG9mIGAkdmFsdWVgLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0geyp9ICR2YWx1ZSAtIHZhbHVlIHRvIGNoZWNrXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuLy8vXG4gXG5AZnVuY3Rpb24gc2wtaXMtdHJ1ZSgkdmFsdWUpIHtcbiAgQHJldHVybiBpZigkdmFsdWUgPT0gbnVsbCwgZmFsc2UsICR2YWx1ZSBhbmQgJHZhbHVlICE9IG51bGwgYW5kICR2YWx1ZSAhPSAnJyBhbmQgJHZhbHVlICE9ICgpKTtcbn1cbiIsIi8vL1xuLy8vIFJldHVybnMgd2hldGhlciBgJGxpc3RgIGNvbnRhaW5zIGAkdmFsdWVgLlxuLy8vXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLWNvbnRhaW5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gICAgJGxpc3QgIC0gbGlzdCB0byBjaGVja1xuLy8vIEBwYXJhbSB7Kn0gICAgICAgJHZhbHVlIC0gdmFsdWUgdG8gbG9vayBmb3Jcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtY29udGFpbihhIGIgYywgYSlcbi8vLyAvLyB0cnVlXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLWNvbnRhaW4oYSBiIGMsIHopXG4vLy8gLy8gZmFsc2Vcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2x9XG4vLy9cblxuQGZ1bmN0aW9uIHNsLWNvbnRhaW4oJGxpc3QsICR2YWx1ZSkge1xuICBAcmV0dXJuIG5vdCBub3QgaW5kZXgoJGxpc3QsICR2YWx1ZSk7XG59XG5cbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1jb250YWluXG4vLy8gQGFsaWFzIHNsLWNvbnRhaW5cbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLWluY2x1ZGUoJGxpc3QsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNsLWNvbnRhaW4oJGxpc3QsICR2YWx1ZSk7XG59XG4iLCIvLy8gUmVtb3ZlcyBhbGwgZmFsc2UgYW5kIG51bGwgdmFsdWVzIGZyb20gYCRsaXN0YC5cbi8vL1xuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1wdXJnZVxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLWlzLXRydWVcbi8vLyBAcmVxdWlyZXMgc2wtdG8tbGlzdFxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIGxpc3QgdG8gcHVyZ2Vcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtcHVyZ2UobnVsbCBhIGZhbHNlIGIpXG4vLy8gLy8gYSBiXG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fVxuLy8vXG5cbkBmdW5jdGlvbiBzbC1wdXJnZSgkbGlzdCkge1xuICAkXzogc2wtbWlzc2luZy1kZXBlbmRlbmNpZXMoJ3NsLWlzLXRydWUnLCAnc2wtdG8tbGlzdCcpO1xuICBcbiAgJHJlc3VsdDogKCk7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBzbC1pcy10cnVlKCRpdGVtKSB7XG4gICAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGl0ZW0sIGxpc3Qtc2VwYXJhdG9yKCRsaXN0KSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBzbC10by1saXN0KCRyZXN1bHQpO1xufVxuXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtcHVyZ2Vcbi8vLyBAYWxpYXMgc2wtcHVyZ2Vcbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLWNsZWFuKCRsaXN0KSB7XG4gIEByZXR1cm4gc2wtcHVyZ2UoJGxpc3QpO1xufVxuIiwiLy8vXG4vLy8gUmVtb3ZlcyB2YWx1ZShzKSBgJHZhbHVlYCBmcm9tIGAkbGlzdGAuXG4vLy9cbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtcmVtb3ZlXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtcmVwbGFjZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAgICAkbGlzdCAgICAgIC0gbGlzdCB0byB1cGRhdGVcbi8vLyBAcGFyYW0geyp9ICAgICAgICR2YWx1ZSAgICAgLSB2YWx1ZSB0byByZW1vdmVcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtcmVtb3ZlKGEgYiBjLCBhKVxuLy8vIC8vIGIgY1xuLy8vXG4vLy8gQHJldHVybiB7TGlzdH1cbi8vL1xuXG5AZnVuY3Rpb24gc2wtcmVtb3ZlKCRsaXN0LCAkdmFsdWUpIHtcbiAgJF86IHNsLW1pc3NpbmctZGVwZW5kZW5jaWVzKCdzbC1yZXBsYWNlJyk7XG5cbiAgQHJldHVybiBzbC1yZXBsYWNlKCRsaXN0LCAkdmFsdWUsIG51bGwpO1xufVxuXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtcmVtb3ZlXG4vLy8gQGFsaWFzIHNsLXJlbW92ZVxuLy8vXG5cbkBmdW5jdGlvbiBzbC13aXRob3V0KCRsaXN0LCAkdmFsdWUpIHtcbiAgQHJldHVybiBzbC1yZW1vdmUoJGxpc3QsICR2YWx1ZSk7XG59XG4iLCIvLy9cbi8vLyBSZXBsYWNlcyBgJG9sZGAgYnkgYCRuZXdgIGluIGAkbGlzdGAuXG4vLy9cbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtcmVwbGFjZVxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLWlzLXRydWVcbi8vLyBAcmVxdWlyZXMgc2wtcHVyZ2Vcbi8vLyBAcmVxdWlyZXMgc2wtdG8tbGlzdFxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAgICAkbGlzdCAgLSBsaXN0IHRvIHVwZGF0ZVxuLy8vIEBwYXJhbSB7Kn0gICAgICAgJG9sZCAgIC0gdmFsdWUgdG8gcmVwbGFjZVxuLy8vIEBwYXJhbSB7Kn0gICAgICAgJHZhbHVlIC0gbmV3IHZhbHVlIGZvciAkb2xkXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLXJlcGxhY2UoYSBiIGMsIGIsIHopXG4vLy8gLy8gYSB6IGNcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtcmVwbGFjZShhIGIgYywgeSwgeilcbi8vLyAvLyBhIGIgY1xuLy8vIFxuLy8vIEByZXR1cm4ge0xpc3R9XG4vLy9cbiBcbkBmdW5jdGlvbiBzbC1yZXBsYWNlKCRsaXN0LCAkb2xkLCAkdmFsdWUpIHtcbiAgJF86IHNsLW1pc3NpbmctZGVwZW5kZW5jaWVzKCdzbC1pcy10cnVlJywgJ3NsLXB1cmdlJywgJ3NsLXRvLWxpc3QnKTtcblxuICAkcnVubmluZzogdHJ1ZTtcblxuICBAd2hpbGUgJHJ1bm5pbmcge1xuICAgICRpbmRleDogaW5kZXgoJGxpc3QsICRvbGQpO1xuXG4gICAgQGlmIG5vdCAkaW5kZXgge1xuICAgICAgJHJ1bm5pbmc6IGZhbHNlO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICRsaXN0OiBzZXQtbnRoKCRsaXN0LCAkaW5kZXgsICR2YWx1ZSk7XG4gICAgfVxuXG4gIH1cblxuICAkbGlzdDogaWYoc2wtaXMtdHJ1ZSgkdmFsdWUpLCAkbGlzdCwgc2wtcHVyZ2UoJGxpc3QpKTtcbiAgXG4gIEByZXR1cm4gc2wtdG8tbGlzdCgkbGlzdCk7XG59XG4iLCIvLy9cbi8vLyBDYXN0cyBgJHZhbHVlYCBpbnRvIGEgbGlzdC5cbi8vL1xuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC10by1saXN0XG4vLy9cbi8vLyBAcGFyYW0geyp9ICR2YWx1ZSAtIHZhbHVlIHRvIGNhc3QgdG8gbGlzdFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VwYXJhdG9yIFtzcGFjZV0gLSBzZXBhcmF0b3IgdG8gdXNlXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLXRvLWxpc3QoYSBiIGMsIGNvbW1hKVxuLy8vIC8vIGEsIGIsIGNcbi8vLyBcbi8vLyBAcmV0dXJuIHtMaXN0fVxuLy8vXG5cbkBmdW5jdGlvbiBzbC10by1saXN0KCR2YWx1ZSwgJHNlcGFyYXRvcjogbGlzdC1zZXBhcmF0b3IoJHZhbHVlKSkge1xuICBAcmV0dXJuIGpvaW4oKCksICR2YWx1ZSwgJHNlcGFyYXRvcik7XG59XG5cbi8vL1xuLy8vIEByZXF1aXJlcyBzbC10by1saXN0XG4vLy8gQGFsaWFzIHNsLXRvLWxpc3Rcbi8vL1xuXG5AZnVuY3Rpb24gc2wtbGlzdGlmeSgkdmFsdWUpIHtcbiAgQHJldHVybiBzbC10by1saXN0KCR2YWx1ZSk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ21hdGgnO1xuQGltcG9ydCAndW5pdCc7XG5AaW1wb3J0ICd2YWx1ZSc7XG5AaW1wb3J0ICdkaXJlY3Rpb24nO1xuQGltcG9ydCAnY29sb3InO1xuQGltcG9ydCAnc2VsZWN0b3InO1xuQGltcG9ydCAnZmxleCc7XG5AaW1wb3J0ICdicmVha3BvaW50JztcbkBpbXBvcnQgJ21peGlucyc7XG5AaW1wb3J0ICd0eXBvZ3JhcGh5JztcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tY29sb3ItbGl0ZXJhbHMsIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcblxuLy8vL1xuLy8vIEBncm91cCBnbG9iYWxcbi8vLy9cblxuQGltcG9ydCAndXRpbC91dGlsJztcblxuLy8vIEZvbnQgc2l6ZSBhdHRyaWJ1dGUgYXBwbGllZCB0byBgPGh0bWw+YCBhbmQgYDxib2R5PmAuIFdlIHVzZSAxMDAlIGJ5IGRlZmF1bHQgc28gdGhlIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSB1c2VyJ3MgYnJvd3NlciBzZXR0aW5ncy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHdpZHRoIG9mIHlvdXIgc2l0ZS4gVXNlZCBieSB0aGUgZ3JpZCB0byBkZXRlcm1pbmUgcm93IHdpZHRoLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC13aWR0aDogcmVtLWNhbGMoMTIwMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBhbGwgdHlwZS4gYCRnbG9iYWwtbGluZWhlaWdodGAgaXMgMjRweCB3aGlsZSBgJGdsb2JhbC1mb250LXNpemVgIGlzIDE2cHhcbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtbGluZWhlaWdodDogMS41ICFkZWZhdWx0O1xuXG4vLy8gQ29sb3JzIHVzZWQgZm9yIGJ1dHRvbnMsIGNhbGxvdXRzLCBsaW5rcywgZXRjLiBUaGVyZSBtdXN0IGFsd2F5cyBiZSBhIGNvbG9yIGNhbGxlZCBgcHJpbWFyeWAuXG4vLy8gQHR5cGUgTWFwXG4kZm91bmRhdGlvbi1wYWxldHRlOiAoXG4gIHByaW1hcnk6ICMxNzc5YmEsXG4gIHNlY29uZGFyeTogIzc2NzY3NixcbiAgc3VjY2VzczogIzNhZGI3NixcbiAgd2FybmluZzogI2ZmYWUwMCxcbiAgYWxlcnQ6ICNjYzRiMzcsXG4pICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3IgbGlnaHQgZ3JheSBVSSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGxpZ2h0LWdyYXk6ICNlNmU2ZTYgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBtZWRpdW0gZ3JheSBVSSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJG1lZGl1bS1ncmF5OiAjY2FjYWNhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3IgZGFyayBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kZGFyay1ncmF5OiAjOGE4YThhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3IgYmxhY2sgdWkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRibGFjazogIzBhMGEwYSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHVzZWQgZm9yIHdoaXRlIHVpIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kd2hpdGU6ICNmZWZlZmUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIENvbG9yXG4kYm9keS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIENvbG9yXG4kYm9keS1mb250LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHN0YWNrIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIExpc3RcbiRib2R5LWZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIFJvYm90bywgQXJpYWwsIHNhbnMtc2VyaWYgIWRlZmF1bHQ7XG5cbi8vLyBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSBhbnRpYWxpYXNlZCB0eXBlLCB1c2luZyB0aGUgYC13ZWJraXQtZm9udC1zbW9vdGhpbmdgIGFuZCBgLW1vei1vc3gtZm9udC1zbW9vdGhpbmdgIENTUyBwcm9wZXJ0aWVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRib2R5LWFudGlhbGlhc2VkOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIG1hcmdpbiBvbiBjb21wb25lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgcGFkZGluZyBvbiBjb21wb25lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIHBvc2l0aW9uaW5nIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXBvc2l0aW9uOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIGZvbnQgd2VpZ2h0IHVzZWQgZm9yIG5vcm1hbCB0eXBlLlxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcbiRnbG9iYWwtd2VpZ2h0LW5vcm1hbDogbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIGZvbnQgd2VpZ2h0IHVzZWQgZm9yIGJvbGQgdHlwZS5cbi8vLyBAdHlwZSBLZXl3b3JkIHwgTnVtYmVyXG4kZ2xvYmFsLXdlaWdodC1ib2xkOiBib2xkICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIGFsbCBlbGVtZW50cyB0aGF0IGhhdmUgYSBib3JkZXIgcmFkaXVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1yYWRpdXM6IDAgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgYWxsIG1lbnUgc3R5bGVzLiBDYW4gYmUgb3ZlcndyaXR0ZW4gYXQgaW5kaXZpZHVhbCBtZW51IGNvbXBvbmVudCBsZXZlbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtbWVudS1wYWRkaW5nOiAwLjdyZW0gMXJlbSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBhbGwgbWVudSBzdHlsZXMuIE5lc3RlZCBtYXJnaW4gZm9yIHN1Ym1lbnUuXG4kZ2xvYmFsLW1lbnUtbmVzdGVkLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIHRleHQgZGlyZWN0aW9uIG9mIHRoZSBDU1MuIENhbiBiZSBlaXRoZXIgYGx0cmAgb3IgYHJ0bGAuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGdsb2JhbC10ZXh0LWRpcmVjdGlvbjogbHRyICFkZWZhdWx0O1xuXG4vLy8gRW5hYmxlcyBmbGV4Ym94IGZvciBjb21wb25lbnRzIHRoYXQgc3VwcG9ydCBpdC5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZ2xvYmFsLWZsZXhib3g6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBFbmFibGVkIHJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHByb3RvdHlwZXMgaWYgYXBwbGljYWJsZVxuLy8vIEB0eXBlIEJvb2xlYW5cbiRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8vIEJ1dHRvbiBjdXJzb3IncyB2YWx1ZSwgYGF1dG9gIGJ5IGRlZmF1bHRcbi8vLyBAdHlwZSBLZXl3b3JkXG4kZ2xvYmFsLWJ1dHRvbi1jdXJzb3I6IGF1dG8gIWRlZmF1bHQ7XG5cbkBpZiBub3QgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSkge1xuICBAZXJyb3IgJ0luICRmb3VuZGF0aW9uLXBhbGV0dGUsIHlvdSBtdXN0IGhhdmUgYSBjb2xvciBuYW1lZCBcInByaW1hcnlcIi4nO1xufVxuXG4vLyBJbnRlcm5hbCB2YXJpYWJsZXMgdXNlZCBmb3IgdGV4dCBkaXJlY3Rpb25cbiRnbG9iYWwtbGVmdDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIHJpZ2h0LCBsZWZ0KTtcbiRnbG9iYWwtcmlnaHQ6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCBsZWZ0LCByaWdodCk7XG5cbi8vIEludGVybmFsIHZhcmlhYmxlIHRoYXQgY29udGFpbnMgdGhlIGZsZXgganVzdGlmeWluZyBvcHRpb25zXG4kLXpmLWZsZXgtanVzdGlmeTogLXpmLWZsZXgtanVzdGlmeSgkZ2xvYmFsLXRleHQtZGlyZWN0aW9uKTtcblxuLy8vIEdsb2JhbCB0b2xlcmFuY2UgZm9yIGNvbG9yIHBpY2sgY29udHJhc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlOiAwICFkZWZhdWx0O1xuXG4vLyBJbnRlcm5hbCB2YXJpYWJsZXMgdXNlZCBmb3IgY29sb3JzXG5AaW5jbHVkZSBhZGQtZm91bmRhdGlvbi1jb2xvcnM7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWdsb2JhbC1zdHlsZXMge1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW5vcm1hbGl6ZTtcblxuICAvLyBUaGVzZSBzdHlsZXMgYXJlIGFwcGxpZWQgdG8gYSA8bWV0YT4gdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHRcbiAgLmZvdW5kYXRpb24tbXEge1xuICAgIGZvbnQtZmFtaWx5OiAnI3stemYtYnAtc2VyaWFsaXplKCRicmVha3BvaW50cyl9JztcbiAgfVxuXG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIFNldCBib3gtc2l6aW5nIGdsb2JhbGx5IHRvIGhhbmRsZSBwYWRkaW5nIGFuZCBib3JkZXIgd2lkdGhzXG4gICosXG4gICo6OmJlZm9yZSxcbiAgKjo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBEZWZhdWx0IGJvZHkgc3R5bGVzXG4gIGJvZHkge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuXG4gICAgYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZDtcblxuICAgIGZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAkZ2xvYmFsLWxpbmVoZWlnaHQ7XG4gICAgY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG5cbiAgICBAaWYgKCRib2R5LWFudGlhbGlhc2VkKSB7XG4gICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgfVxuICB9XG5cbiAgaW1nIHtcbiAgICAvLyBHZXQgcmlkIG9mIGdhcCB1bmRlciBpbWFnZXMgYnkgbWFraW5nIHRoZW0gZGlzcGxheTogaW5saW5lLWJsb2NrOyBieSBkZWZhdWx0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICAvLyBHcmlkIGRlZmF1bHRzIHRvIGdldCBpbWFnZXMgYW5kIGVtYmVkcyB0byB3b3JrIHByb3Blcmx5XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIHRleHRhcmVhIHRha2VzIG9uIGhlaWdodCBhdXRvbWF0aWNhbGx5XG4gIHRleHRhcmVhIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWluLWhlaWdodDogNTBweDtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgfVxuXG4gIC8vIE1ha2Ugc2VsZWN0IGVsZW1lbnRzIGFyZSAxMDAlIHdpZHRoIGJ5IGRlZmF1bHRcbiAgc2VsZWN0IHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICB9XG5cbiAgLy8gU3R5bGVzIEdvb2dsZSBNYXBzIGFuZCBNYXBRdWVzdCBlbWJlZHMgcHJvcGVybHlcbiAgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1pZHNcbiAgLm1hcF9jYW52YXMsXG4gIC5tcWEtZGlzcGxheSB7XG4gICAgaW1nLFxuICAgIGVtYmVkLFxuICAgIG9iamVjdCB7XG4gICAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCA8YnV0dG9uPiBzdHlsZXMgY3JlYXRlZCBieSBtb3N0IGJyb3dzZXJzXG4gIGJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY3Vyc29yOiAkZ2xvYmFsLWJ1dHRvbi1jdXJzb3I7XG4gIH1cblxuICAvLyBQcmV2ZW50IHRleHQgb3ZlcmZsb3cgb24gcHJlXG4gIHByZSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gIH1cblxuICAvLyBNYWtlIHJlc2V0IGluaGVyaXQgZm9udC1mYW1pbHkgaW5zdGVhZCBvZiBzZXR0aW5ncyBzYW5zLXNlcmlmXG4gIGJ1dHRvbixcbiAgaW5wdXQsXG4gIG9wdGdyb3VwLFxuICBzZWxlY3QsXG4gIHRleHRhcmVhIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIEludGVybmFsIGNsYXNzZXMgdG8gc2hvdy9oaWRlIGVsZW1lbnRzIGluIEphdmFTY3JpcHRcbiAgLmlzLXZpc2libGUge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaXMtaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gR2xvYmFsIHNwYWNpbmcgZm9yIGZvcm0gZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZm9ybS1zcGFjaW5nOiByZW0tY2FsYygxNikgIWRlZmF1bHQ7XG5cbkBpbXBvcnQgJ3RleHQnO1xuQGltcG9ydCAnY2hlY2tib3gnO1xuQGltcG9ydCAnbGFiZWwnO1xuQGltcG9ydCAnaGVscC10ZXh0JztcbkBpbXBvcnQgJ2lucHV0LWdyb3VwJztcbkBpbXBvcnQgJ2ZpZWxkc2V0JztcbkBpbXBvcnQgJ3NlbGVjdCc7XG5AaW1wb3J0ICdyYW5nZSc7XG5AaW1wb3J0ICdwcm9ncmVzcyc7XG5AaW1wb3J0ICdtZXRlcic7XG5AaW1wb3J0ICdlcnJvcic7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm1zIHtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLXRleHQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1jaGVja2JveDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWxhYmVsO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0taGVscHRleHQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1wcmVwb3N0Zml4O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tZmllbGRzZXQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1zZWxlY3Q7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1lcnJvcjtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gRm9udCBjb2xvciBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIG9mIHBsYWNlaG9sZGVyIHRleHQgd2l0aGluIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgZmFtaWx5IG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEZvbnRcbiRpbnB1dC1mb250LWZhbWlseTogaW5oZXJpdCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRpbnB1dC1mb250LXNpemU6IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRpbnB1dC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGlucHV0LWxpbmUtaGVpZ2h0OiAkZ2xvYmFsLWxpbmVoZWlnaHQgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBmb2N1c2VkIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1mb2N1czogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBkaXNhYmxlZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBCb3JkZXJcbiRpbnB1dC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIGZvY3VzZWQgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1ib3JkZXItZm9jdXM6IDFweCBzb2xpZCAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LXBhZGRpbmc6ICRmb3JtLXNwYWNpbmcgLyAyICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBpbnNpZGUgdGV4dCBpbnB1dHMgd2hlbiBub3QgZm9jdXNlZC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRpbnB1dC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKCRibGFjaywgMC4xKSAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgb3V0c2lkZSB0ZXh0IGlucHV0cyB3aGVuIGZvY3VzZWQuXG4vLy8gQHR5cGUgU2hhZG93XG4kaW5wdXQtc2hhZG93LWZvY3VzOiAwIDAgNXB4ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEN1cnNvciB0byB1c2Ugd2hlbiBob3ZlcmluZyBvdmVyIGEgZGlzYWJsZWQgdGV4dCBpbnB1dC5cbi8vLyBAdHlwZSBDdXJzb3JcbiRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ6IG5vdC1hbGxvd2VkICFkZWZhdWx0O1xuXG4vLy8gUHJvcGVydGllcyB0byB0cmFuc2l0aW9uIG9uIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiRpbnB1dC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuNXMsIGJvcmRlci1jb2xvciAwLjI1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuLy8vIEVuYWJsZXMgdGhlIHVwL2Rvd24gYnV0dG9ucyB0aGF0IENocm9tZSBhbmQgRmlyZWZveCBhZGQgdG8gYDxpbnB1dCB0eXBlPSdudW1iZXInPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGlucHV0LW51bWJlci1zcGlubmVyczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFJhZGl1cyBmb3IgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQm9yZGVyXG4kaW5wdXQtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGZvcm0gYnV0dG9ucywgZGVmYXVsdGVkIHRvIGdsb2JhbC1yYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZm9ybS1idXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvcm0tZWxlbWVudCB7XG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICogdW5pdGxlc3MtY2FsYygkaW5wdXQtbGluZS1oZWlnaHQpKSArIChnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ3RvcCcpICsgZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICdib3R0b20nKSkgLSByZW0tY2FsYygxKTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkaW5wdXQtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZDtcbiAgYm94LXNoYWRvdzogJGlucHV0LXNoYWRvdztcblxuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkaW5wdXQtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkaW5wdXQtY29sb3I7XG5cbiAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xuICAgIHRyYW5zaXRpb246ICRpbnB1dC10cmFuc2l0aW9uO1xuICB9XG5cbiAgLy8gRm9jdXMgc3RhdGVcbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXItZm9jdXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZm9jdXM7XG4gICAgYm94LXNoYWRvdzogJGlucHV0LXNoYWRvdy1mb2N1cztcblxuICAgIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcbiAgICAgIHRyYW5zaXRpb246ICRpbnB1dC10cmFuc2l0aW9uO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLXRleHQge1xuICAvLyBUZXh0IGlucHV0c1xuICAje3RleHQtaW5wdXRzKCl9LFxuICB0ZXh0YXJlYSB7XG4gICAgQGluY2x1ZGUgZm9ybS1lbGVtZW50O1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICAvLyBUZXh0IGFyZWFzXG4gIHRleHRhcmVhIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG5cbiAgICAmW3Jvd3NdIHtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICB9XG4gIH1cblxuICBpbnB1dCxcbiAgdGV4dGFyZWEge1xuICAgIC8vIERpc2FibGVkL3JlYWRvbmx5IHN0YXRlXG4gICAgJjpkaXNhYmxlZCxcbiAgICAmW3JlYWRvbmx5XSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDtcbiAgICAgIGN1cnNvcjogJGlucHV0LWN1cnNvci1kaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCBzdHlsZXMgb24gYnV0dG9uLWxpa2UgaW5wdXRzXG4gIFt0eXBlPSdzdWJtaXQnXSxcbiAgW3R5cGU9J2J1dHRvbiddIHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6ICRmb3JtLWJ1dHRvbi1yYWRpdXM7XG4gIH1cblxuICAvLyBSZXNldCBOb3JtYWxpemUgc2V0dGluZyBjb250ZW50LWJveCB0byBzZWFyY2ggZWxlbWVudHNcbiAgaW5wdXRbdHlwZT0nc2VhcmNoJ10geyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgLy8gTnVtYmVyIGlucHV0IHN0eWxlc1xuICBbdHlwZT0nbnVtYmVyJ10ge1xuICAgIEBpZiBub3QgJGlucHV0LW51bWJlci1zcGlubmVycyB7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcblxuICAgICAgJjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgICAgICY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQbGFjZWhvbGRlciB0ZXh0XG4gIDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkaW5wdXQtcGxhY2Vob2xkZXItY29sb3I7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWNoZWNrYm94IHtcbiAgW3R5cGU9J2ZpbGUnXSxcbiAgW3R5cGU9J2NoZWNrYm94J10sXG4gIFt0eXBlPSdyYWRpbyddIHtcbiAgICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICB9XG5cbiAgLy8gU3R5bGVzIGZvciBpbnB1dC9sYWJlbCBzaWJsaW5nc1xuICBbdHlwZT0nY2hlY2tib3gnXSArIGxhYmVsLFxuICBbdHlwZT0ncmFkaW8nXSArIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGZvcm0tc3BhY2luZztcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgJltmb3JdIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gIH1cblxuICAvLyBTdHlsZXMgZm9yIGlucHV0cyBpbnNpZGUgbGFiZWxzXG4gIGxhYmVsID4gW3R5cGU9J2NoZWNrYm94J10sXG4gIGxhYmVsID4gW3R5cGU9J3JhZGlvJ10ge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkZm9ybS1zcGFjaW5nICogMC41O1xuICB9XG5cbiAgLy8gTm9ybWFsaXplIGZpbGUgaW5wdXQgd2lkdGhcbiAgW3R5cGU9J2ZpbGUnXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gQ29sb3IgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kZm9ybS1sYWJlbC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBmb3JtIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWxhYmVsLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBmb3IgZm9ybSBsYWJlbHMuIFRoZSBoaWdoZXIgdGhlIG51bWJlciwgdGhlIG1vcmUgc3BhY2UgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGl0cyBpbnB1dCBmaWVsZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0OiAxLjggIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3JtLWxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMDtcblxuICBmb250LXNpemU6ICRmb3JtLWxhYmVsLWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGZvcm0tbGFiZWwtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvcjtcbn1cblxuQG1peGluIGZvcm0tbGFiZWwtbWlkZGxlIHtcbiAgJGlucHV0LWJvcmRlci13aWR0aDogZ2V0LWJvcmRlci12YWx1ZSgkaW5wdXQtYm9yZGVyLCB3aWR0aCk7XG5cbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgcGFkZGluZzogKCRmb3JtLXNwYWNpbmcgLyAyICsgcmVtLWNhbGMoJGlucHV0LWJvcmRlci13aWR0aCkpIDA7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tbGFiZWwge1xuICBsYWJlbCB7XG4gICAgQGluY2x1ZGUgZm9ybS1sYWJlbDtcblxuICAgICYubWlkZGxlIHtcbiAgICAgIEBpbmNsdWRlIGZvcm0tbGFiZWwtbWlkZGxlO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBoZWxwIHRleHQuXG4vLy8gQHR5cGUgQ29sb3JcbiRoZWxwdGV4dC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGhlbHAgdGV4dC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoZWxwdGV4dC1mb250LXNpemU6IHJlbS1jYWxjKDEzKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzdHlsZSBmb3IgaGVscCB0ZXh0LlxuLy8vIEB0eXBlIEtleXdvcmRcbiRoZWxwdGV4dC1mb250LXN0eWxlOiBpdGFsaWMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0taGVscHRleHQge1xuICAuaGVscC10ZXh0IHtcbiAgICAkbWFyZ2luLXRvcDogKCRmb3JtLXNwYWNpbmcgKiAwLjUpICogLTE7XG5cbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICBmb250LXNpemU6ICRoZWxwdGV4dC1mb250LXNpemU7XG4gICAgZm9udC1zdHlsZTogJGhlbHB0ZXh0LWZvbnQtc3R5bGU7XG4gICAgY29sb3I6ICRoZWxwdGV4dC1jb2xvcjtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBDb2xvciBvZiBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1wcmVmaXgtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgbGFiZWxzIHByZWZpeGVkIHRvIGFuIGlucHV0LlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtcHJlZml4LWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXG4vLy8gQHR5cGUgQm9yZGVyXG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIExlZnQvcmlnaHQgcGFkZGluZyBvZiBhbiBwcmUvcG9zdGZpeGVkIGlucHV0IGxhYmVsXG4kaW5wdXQtcHJlZml4LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tcHJlcG9zdGZpeCB7XG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICogJGlucHV0LWxpbmUtaGVpZ2h0KSArIChnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ3RvcCcpICsgZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICdib3R0b20nKSkgLSByZW0tY2FsYygxKTtcblxuICAuaW5wdXQtZ3JvdXAge1xuICAgIGRpc3BsYXk6IGlmKCRnbG9iYWwtZmxleGJveCwgZmxleCwgdGFibGUpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmc7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIH1cblxuICAgID4gOmZpcnN0LWNoaWxkIHtcbiAgICAgICYsICYuaW5wdXQtZ3JvdXAtYnV0dG9uID4gKiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCAwICRpbnB1dC1yYWRpdXMgJGlucHV0LXJhZGl1cyAwLCAkaW5wdXQtcmFkaXVzIDAgMCAkaW5wdXQtcmFkaXVzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgICYsICYuaW5wdXQtZ3JvdXAtYnV0dG9uID4gKiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCAkaW5wdXQtcmFkaXVzIDAgMCAkaW5wdXQtcmFkaXVzLCAwICRpbnB1dC1yYWRpdXMgJGlucHV0LXJhZGl1cyAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAlaW5wdXQtZ3JvdXAtY2hpbGQge1xuICAgIG1hcmdpbjogMDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbiAgLmlucHV0LWdyb3VwLWxhYmVsIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICBwYWRkaW5nOiAwICRpbnB1dC1wcmVmaXgtcGFkZGluZztcbiAgICBib3JkZXI6ICRpbnB1dC1wcmVmaXgtYm9yZGVyO1xuICAgIGJhY2tncm91bmQ6ICRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDtcblxuICAgIGNvbG9yOiAkaW5wdXQtcHJlZml4LWNvbG9yO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogMSU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtcHJlZml4LWJvcmRlcikge1xuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5pbnB1dC1ncm91cC1maWVsZCB7XG4gICAgQGV4dGVuZCAlaW5wdXQtZ3JvdXAtY2hpbGQ7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICAgIG1pbi13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuICAuaW5wdXQtZ3JvdXAtYnV0dG9uIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgd2lkdGg6IDElO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIGEsXG4gICAgaW5wdXQsXG4gICAgYnV0dG9uLFxuICAgIGxhYmVsIHtcbiAgICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuXG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICB9XG4gICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNwZWNpZmljaXR5IGJ1bXAgbmVlZGVkIHRvIHByZXZlbnQgb3ZlcnJpZGUgYnkgYnV0dG9uc1xuICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgLmlucHV0LWdyb3VwIHtcbiAgICAgIC5pbnB1dC1ncm91cC1idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJvcmRlciBhcm91bmQgY3VzdG9tIGZpZWxkc2V0cy5cbi8vLyBAdHlwZSBCb3JkZXJcbiRmaWVsZHNldC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGN1c3RvbSBmaWVsZHNldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZmllbGRzZXQtcGFkZGluZzogcmVtLWNhbGMoMjApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXJnaW4gYXJvdW5kIGN1c3RvbSBmaWVsZHNldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZmllbGRzZXQtbWFyZ2luOiByZW0tY2FsYygxOCAwKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBiZXR3ZWVuIHRoZSBsZWdlbmQgdGV4dCBhbmQgZmllbGRzZXQgYm9yZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJGxlZ2VuZC1wYWRkaW5nOiByZW0tY2FsYygwIDMpICFkZWZhdWx0O1xuXG5AbWl4aW4gZmllbGRzZXQge1xuICBtYXJnaW46ICRmaWVsZHNldC1tYXJnaW47XG4gIHBhZGRpbmc6ICRmaWVsZHNldC1wYWRkaW5nO1xuICBib3JkZXI6ICRmaWVsZHNldC1ib3JkZXI7XG5cbiAgbGVnZW5kIHtcbiAgICAvLyBDb3ZlcnMgdXAgdGhlIGZpZWxkc2V0J3MgYm9yZGVyIHRvIGNyZWF0ZSBhcnRpZmljaWFsIHBhZGRpbmdcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogcmVtLWNhbGMoLTMpO1xuICAgIHBhZGRpbmc6ICRsZWdlbmQtcGFkZGluZztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWZpZWxkc2V0IHtcbiAgZmllbGRzZXQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogMDtcbiAgfVxuXG4gIGxlZ2VuZCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmcgKiAwLjU7XG4gIH1cblxuICAuZmllbGRzZXQge1xuICAgIEBpbmNsdWRlIGZpZWxkc2V0O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHNlbGVjdCBtZW51cy5cbi8vLyBAdHlwZSBDb2xvclxuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiB0aGUgZHJvcGRvd24gdHJpYW5nbGUgaW5zaWRlIHNlbGVjdCBtZW51cy4gU2V0IHRvIGB0cmFuc3BhcmVudGAgdG8gcmVtb3ZlIGl0IGVudGlyZWx5LlxuLy8vIEB0eXBlIENvbG9yXG4kc2VsZWN0LXRyaWFuZ2xlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHNlbGVjdCBtZW51cy5cbi8vLyBAdHlwZSBDb2xvclxuJHNlbGVjdC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gZm9ybS1zZWxlY3Qge1xuICAkaGVpZ2h0OiAoJGlucHV0LWZvbnQtc2l6ZSAqIHVuaXRsZXNzLWNhbGMoJGlucHV0LWxpbmUtaGVpZ2h0KSkgKyAoZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICd0b3AnKSArIGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAnYm90dG9tJykpIC0gcmVtLWNhbGMoMSk7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZztcblxuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6ICRpbnB1dC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRzZWxlY3QtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2VsZWN0LWJhY2tncm91bmQ7XG5cbiAgZm9udC1mYW1pbHk6ICRpbnB1dC1mb250LWZhbWlseTtcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGlucHV0LWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LWNvbG9yO1xuXG4gIEBpZiAkc2VsZWN0LXRyaWFuZ2xlLWNvbG9yICE9IHRyYW5zcGFyZW50IHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXRyaWFuZ2xlKCRzZWxlY3QtdHJpYW5nbGUtY29sb3IpO1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiBjb250ZW50LWJveDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkZ2xvYmFsLXJpZ2h0ICgtJGZvcm0tc3BhY2luZykgY2VudGVyO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiA5cHggNnB4O1xuXG4gICAgcGFkZGluZy0jeyRnbG9iYWwtcmlnaHR9OiAoJGZvcm0tc3BhY2luZyAqIDEuNSk7XG4gIH1cblxuICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XG4gIH1cblxuICAvLyBGb2N1cyBzdGF0ZVxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci1mb2N1cztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1mb2N1cztcbiAgICBib3gtc2hhZG93OiAkaW5wdXQtc2hhZG93LWZvY3VzO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzYWJsZWQgc3RhdGVcbiAgJjpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ7XG4gICAgY3Vyc29yOiAkaW5wdXQtY3Vyc29yLWRpc2FibGVkO1xuICB9XG5cbiAgLy8gSGlkZSB0aGUgZHJvcGRvd24gYXJyb3cgc2hvd24gaW4gbmV3ZXIgSUUgdmVyc2lvbnNcbiAgJjo6LW1zLWV4cGFuZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gICZbbXVsdGlwbGVdIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxuICAmOm5vdChbbXVsdGlwbGVdKSB7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1zZWxlY3Qge1xuICBzZWxlY3Qge1xuICAgIEBpbmNsdWRlIGZvcm0tc2VsZWN0O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgc2xpZGVyXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGhlaWdodCBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1oZWlnaHQ6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgc2xpZGVyJ3MgdHJhY2suXG4vLy8gQHR5cGUgQ29sb3JcbiRzbGlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBhY3RpdmUgZmlsbCBjb2xvciBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kc2xpZGVyLWZpbGwtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBoZWlnaHQgb2YgdGhlIGhhbmRsZSBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1oYW5kbGUtaGVpZ2h0OiAxLjRyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHdpZHRoIG9mIHRoZSBoYW5kbGUgb2YgdGhlIHNsaWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItaGFuZGxlLXdpZHRoOiAxLjRyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBoYW5kbGUgZm9yIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmYWRlIGFtb3VudCBvZiBhIGRpc2FibGVkIHNsaWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDogMC4yNSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXJhbmdlLWlucHV0IHtcbiAgaW5wdXRbdHlwZT0ncmFuZ2UnXSB7ICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICAkbWFyZ2luOiAoJHNsaWRlci1oYW5kbGUtaGVpZ2h0IC0gJHNsaWRlci1oZWlnaHQpIC8gMjtcblxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG5cbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlcjogMDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRzbGlkZXItcmFkaXVzKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IDA7XG4gICAgfVxuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgb3BhY2l0eTogJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkO1xuICAgIH1cblxuICAgIC8vIHNhc3MtbGludDpkaXNhYmxlIG5vLXZlbmRvci1wcmVmaXhcblxuICAgIC8vIENocm9tZS9TYWZhcmlcbiAgICAmOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xuICAgICAgbWFyZ2luLXRvcDogLSRtYXJnaW47XG5cbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmlyZWZveFxuICAgICY6Oi1tb3otcmFuZ2UtdHJhY2sge1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcbiAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAmOjotbW96LXJhbmdlLXRodW1iIHtcbiAgICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xuICAgICAgbWFyZ2luLXRvcDogLSRtYXJnaW47XG5cbiAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW50ZXJuZXQgRXhwbG9yZXJcbiAgICAmOjotbXMtdHJhY2sge1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcblxuICAgICAgYm9yZGVyOiAwO1xuICAgICAgYm9yZGVyLXRvcDogJG1hcmdpbiBzb2xpZCAkYm9keS1iYWNrZ3JvdW5kO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJG1hcmdpbiBzb2xpZCAkYm9keS1iYWNrZ3JvdW5kO1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kO1xuXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAmOjotbXMtdGh1bWIge1xuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICBib3JkZXI6IDA7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRzbGlkZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi1tcy1maWxsLWxvd2VyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi1tcy1maWxsLXVwcGVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICBAYXQtcm9vdCB7XG4gICAgICBvdXRwdXQge1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBtYXJnaW4tbGVmdDogMC41ZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvZ3Jlc3MtYmFyXG4vLy8vXG5cbi8vLyBIZWlnaHQgb2YgYSBwcm9ncmVzcyBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvZ3Jlc3MtaGVpZ2h0OiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIHByb2dyZXNzIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHByb2dyZXNzLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgYSBwcm9ncmVzcyBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvZ3Jlc3MtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIGEgcHJvZ3Jlc3MgYmFyJ3MgbWV0ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIG9mIGEgcHJvZ3Jlc3MgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb2dyZXNzLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb2dyZXNzLWVsZW1lbnQge1xuICBwcm9ncmVzcyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkcHJvZ3Jlc3MtaGVpZ2h0O1xuICAgIG1hcmdpbi1ib3R0b206ICRwcm9ncmVzcy1tYXJnaW4tYm90dG9tO1xuXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcblxuICAgIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICB9XG5cbiAgICAvLyBGb3IgRmlyZWZveFxuICAgIGJvcmRlcjogMDtcbiAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcblxuICAgICY6Oi13ZWJraXQtcHJvZ3Jlc3MtYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotbW96LXByb2dyZXNzLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZm91bmRhdGlvbi1wYWxldHRlIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAvLyBJbnRlcm5ldCBFeHBsb3JlciBzZXRzIHRoZSBmaWxsIHdpdGggY29sb3JcbiAgICAgICAgY29sb3I6ICRjb2xvcjtcblxuICAgICAgICAmOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmOjotbW96LXByb2dyZXNzLWJhciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9yIElFIGFuZCBFZGdlXG4gICAgJjo6LW1zLWZpbGwgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBtZXRlclxuLy8vL1xuXG4vLy8gSGVpZ2h0IG9mIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kbWV0ZXItaGVpZ2h0OiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBvZiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxuLy8vIEB0eXBlIExlbmd0aFxuJG1ldGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRtZXRlci1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBNZXRlciBmaWxsIGZvciBhbiBvcHRpbWFsIHZhbHVlIGluIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRtZXRlci1maWxsLWdvb2Q6ICRzdWNjZXNzLWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gTWV0ZXIgZmlsbCBmb3IgYW4gYXZlcmFnZSB2YWx1ZSBpbiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kbWV0ZXItZmlsbC1tZWRpdW06ICR3YXJuaW5nLWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gTWV0ZXIgZmlsbCBmb3IgYSBzdWJvcHRpbWFsIHZhbHVlIGluIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRtZXRlci1maWxsLWJhZDogJGFsZXJ0LWNvbG9yICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi1tZXRlci1lbGVtZW50IHtcbiAgbWV0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJG1ldGVyLWhlaWdodDtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuXG4gICAgLy8gRGlzYWJsZSBgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lYCBmcm9tIGdldHRpbmcgcHJlZml4ZWQsXG4gICAgLy8gV2UgaGF2ZSBkaXNhYmxlZCBhdXRvcHJlZml4ZXIgZmlyc3QgYW5kIGFyZSBqdXN0IG9ubHkgdXNpbmcgXG4gICAgLy8gYC1tb3otYXBwZWFyYW5jZTogbm9uZWAgYXMgYSBwcmVmaXggYW5kIG5lZ2xlY3RpbmcgdGhlIHdlYmtpdC5cbiAgICBcbiAgICAvKiEgYXV0b3ByZWZpeGVyOiBvZmYgKi9cbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcblxuICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICB9XG5cbiAgICAvLyBGb3IgRmlyZWZveFxuICAgIGJvcmRlcjogMDtcbiAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItYmFja2dyb3VuZDtcblxuICAgIC8vIENocm9tZS9TYWZhcmkvRWRnZVxuICAgICY6Oi13ZWJraXQtbWV0ZXItYmFyIHtcbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuXG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LW1ldGVyLWlubmVyLWVsZW1lbnQge1xuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1tZXRlci1vcHRpbXVtLXZhbHVlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLWdvb2Q7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi13ZWJraXQtbWV0ZXItc3Vib3B0aW11bS12YWx1ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1tZWRpdW07XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi13ZWJraXQtbWV0ZXItZXZlbi1sZXNzLWdvb2QtdmFsdWUge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtYmFkO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotbW96LW1ldGVyLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjotbW96LW1ldGVyLW9wdGltdW06Oi1tb3otbWV0ZXItYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLWdvb2Q7XG4gICAgfVxuXG4gICAgJjotbW96LW1ldGVyLXN1Yi1vcHRpbXVtOjotbW96LW1ldGVyLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1tZWRpdW07XG4gICAgfVxuXG4gICAgJjotbW96LW1ldGVyLXN1Yi1zdWItb3B0aW11bTo6LW1vei1tZXRlci1iYXIge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtYmFkO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGFiaWRlXG4vLy8vXG5cbi8vLyBTZXRzIGlmIGVycm9yIHN0eWxlcyBzaG91bGQgYmUgYWRkZWQgdG8gaW5wdXRzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRhYmlkZS1pbnB1dHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGlmIGVycm9yIHN0eWxlcyBzaG91bGQgYmUgYWRkZWQgdG8gbGFiZWxzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRhYmlkZS1sYWJlbHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIHRvIHVzZSBmb3IgaW52YWxpZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJhY2tncm91bmQtaW52YWxpZDogZ2V0LWNvbG9yKGFsZXJ0KSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHRvIHVzZSBmb3IgbGFiZWxzIG9mIGludmFsaWQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kZm9ybS1sYWJlbC1jb2xvci1pbnZhbGlkOiBnZXQtY29sb3IoYWxlcnQpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBmb3JtIGVycm9yIHRleHQuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1lcnJvci1jb2xvcjogZ2V0LWNvbG9yKGFsZXJ0KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBmb3JtIGVycm9yIHRleHQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaW5wdXQtZXJyb3ItZm9udC1zaXplOiByZW0tY2FsYygxMikgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgd2VpZ2h0IGZvciBmb3JtIGVycm9yIHRleHQuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGlucHV0LWVycm9yLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4vLy8gU3R5bGVzIHRoZSBiYWNrZ3JvdW5kIGFuZCBib3JkZXIgb2YgYW4gaW5wdXQgZmllbGQgdG8gaGF2ZSBhbiBlcnJvciBzdGF0ZS5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskYWxlcnQtY29sb3JdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgYmFja2dyb3VuZCBhbmQgYm9yZGVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFja2dyb3VuZC1saWdodGVuIFsxMCVdIC0gTGlnaHRuZXNzIGxldmVsIG9mIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuQG1peGluIGZvcm0taW5wdXQtZXJyb3IoXG4gICRiYWNrZ3JvdW5kOiAkaW5wdXQtYmFja2dyb3VuZC1pbnZhbGlkLFxuICAkYmFja2dyb3VuZC1saWdodGVuOiAxMCVcbikge1xuICAmOm5vdCg6Zm9jdXMpIHtcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1peCgkYmFja2dyb3VuZCwgJHdoaXRlLCAkYmFja2dyb3VuZC1saWdodGVuKTtcblxuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgZXJyb3Igc3R5bGVzIHRvIGEgZm9ybSBlbGVtZW50LCB1c2luZyB0aGUgdmFsdWVzIGluIHRoZSBzZXR0aW5ncyBmaWxlLlxuQG1peGluIGZvcm0tZXJyb3Ige1xuICBkaXNwbGF5OiBub25lO1xuICBtYXJnaW4tdG9wOiAkZm9ybS1zcGFjaW5nICogLTAuNTtcbiAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZztcblxuICBmb250LXNpemU6ICRpbnB1dC1lcnJvci1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ7XG4gIGNvbG9yOiAkaW5wdXQtZXJyb3ItY29sb3I7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tZXJyb3Ige1xuICBAaWYgJGFiaWRlLWlucHV0cyB7XG4gICAgLy8gRXJyb3IgY2xhc3MgZm9yIGludmFsaWQgaW5wdXRzXG4gICAgLmlzLWludmFsaWQtaW5wdXQge1xuICAgICAgQGluY2x1ZGUgZm9ybS1pbnB1dC1lcnJvcjtcbiAgICB9XG4gIH1cblxuICBAaWYgJGFiaWRlLWxhYmVscyB7XG4gICAgLy8gRXJyb3IgY2xhc3MgZm9yIGxhYmVscyBvZiBpbnZhbGlkIG91dHB1dHNcbiAgICAuaXMtaW52YWxpZC1sYWJlbCB7XG4gICAgICBjb2xvcjogJGZvcm0tbGFiZWwtY29sb3ItaW52YWxpZDtcbiAgICB9XG4gIH1cblxuICAvLyBGb3JtIGVycm9yIGVsZW1lbnRcbiAgLmZvcm0tZXJyb3Ige1xuICAgIEBpbmNsdWRlIGZvcm0tZXJyb3I7XG5cbiAgICAmLmlzLXZpc2libGUge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdHlwb2dyYXBoeVxuLy8vL1xuXG4vLyBCYXNlIHR5cG9ncmFwaHkgc3R5bGVzICh0YWdzIG9ubHkpXG5AaW1wb3J0ICdiYXNlJztcblxuLy8gVHlwb2dyYXBoeSBoZWxwZXIgY2xhc3NlcyAoY2xhc3NlcyBvbmx5KVxuQGltcG9ydCAnaGVscGVycyc7XG5cbi8vIFRleHQgYWxpZ25tZW50IGNsYXNzZXNcbkBpbXBvcnQgJ2FsaWdubWVudCc7XG5cbi8vIFByaW50IHN0eWxlc1xuQGltcG9ydCAncHJpbnQnO1xuXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5IHtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5LWJhc2U7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1oZWxwZXJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRleHQtYWxpZ25tZW50O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByaW50LXN0eWxlcztcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0eXBvZ3JhcGh5LWJhc2Vcbi8vLy9cblxuLy8gQmFzZSBUeXBvZ3JhcGh5XG4vLyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLVxuLy8gVGhlc2UgYXJlIHN0eWxlcyBhcHBsaWVkIHRvIGJhc2ljIEhUTUwgdGFncywgaW5jbHVkaW5nOlxuLy8gICAtIFBhcmFncmFwaHMgPHA+XG4vLyAgIC0gQm9sZC9pdGFsaWNzIDxiPiA8c3Ryb25nPiA8aT4gPGVtPlxuLy8gICAtIFNtYWxsIHRleHQgPHNtYWxsPlxuLy8gICAtIEhlYWRpbmdzIDxoMT4tPGg2PlxuLy8gICAtIEFuY2hvcnMgPGE+XG4vLyAgIC0gRGl2aWRlcnMgPGhyPlxuLy8gICAtIExpc3RzIDx1bD4gPG9sPiA8ZGw+XG4vLyAgIC0gQmxvY2txdW90ZXMgPGJsb2NrcXVvdGU+XG4vLyAgIC0gQ29kZSBibG9ja3MgPGNvZGU+XG4vLyAgIC0gQWJicmV2aWF0aW9ucyA8YWJicj5cbi8vICAgLSBDaXRhdGlvbnMgPGNpdGU+XG4vLyAgIC0gS2V5c3Ryb2tlcyA8a2JkPlxuXG4vLy8gRm9udCBmYW1pbHkgZm9yIGhlYWRlciBlbGVtZW50cy5cbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XG4kaGVhZGVyLWZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHN0eWxlIChlLmcuIGl0YWxpY2l6ZWQpIG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kaGVhZGVyLWZvbnQtc3R5bGU6IG5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3RhY2sgdXNlZCBmb3IgZWxlbWVudHMgdGhhdCB1c2UgbW9ub3NwYWNlZCB0eXBlLCBzdWNoIGFzIGNvZGUgc2FtcGxlc1xuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRmb250LWZhbWlseS1tb25vc3BhY2U6IENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgQ291cmllciwgbW9ub3NwYWNlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBDb2xvclxuJGhlYWRlci1jb2xvcjogaW5oZXJpdCAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNCAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoZWFkZXItbWFyZ2luLWJvdHRvbTogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gU3R5bGVzIGZvciBoZWFkaW5ncyBhdCB2YXJpb3VzIHNjcmVlbiBzaXplcy4gRWFjaCBrZXkgaXMgYSBicmVha3BvaW50LCBhbmQgZWFjaCB2YWx1ZSBpcyBhIG1hcCBvZiBoZWFkaW5nIHN0eWxlcy5cbi8vLyBAdHlwZSBNYXBcbiRoZWFkZXItc3R5bGVzOiAoXG4gIHNtYWxsOiAoXG4gICAgJ2gxJzogKCdmb250LXNpemUnOiAyNCksXG4gICAgJ2gyJzogKCdmb250LXNpemUnOiAyMCksXG4gICAgJ2gzJzogKCdmb250LXNpemUnOiAxOSksXG4gICAgJ2g0JzogKCdmb250LXNpemUnOiAxOCksXG4gICAgJ2g1JzogKCdmb250LXNpemUnOiAxNyksXG4gICAgJ2g2JzogKCdmb250LXNpemUnOiAxNiksXG4gICksXG4gIG1lZGl1bTogKFxuICAgICdoMSc6ICgnZm9udC1zaXplJzogNDgpLFxuICAgICdoMic6ICgnZm9udC1zaXplJzogNDApLFxuICAgICdoMyc6ICgnZm9udC1zaXplJzogMzEpLFxuICAgICdoNCc6ICgnZm9udC1zaXplJzogMjUpLFxuICAgICdoNSc6ICgnZm9udC1zaXplJzogMjApLFxuICAgICdoNic6ICgnZm9udC1zaXplJzogMTYpLFxuICApLFxuKSAhZGVmYXVsdDtcblxuLy8gJGhlYWRlci1zdHlsZXMgbWFwIGlzIGJ1aWx0IGZyb20gJGhlYWRlci1zaXplcyBpbiBvcmRlciB0byBlbnN1cmUgZG93bndhcmQgY29tcGF0aWJpbGl0eVxuLy8gd2hlbiAkaGVhZGVyLXNpemVzIGlzIGRlcHJlY2lhdGVkLCAkaGVhZGVyLXN0eWxlcyBuZWVkcyB0byBnZXQgIWRlZmF1bHQgdmFsdWVzIGxpa2Ugc2V0dGluZ3Muc2Nzc1xuQGZ1bmN0aW9uIGJ1aWxkX2Zyb21faGVhZGVyLXNpemVzKCRoZWFkZXItc2l6ZXMpIHtcbiAgQHdhcm4gJ05vdGUsIHRoYXQgJGhlYWRlci1zaXplcyBoYXMgYmVlbiByZXBsYWNlZCB3aXRoICRoZWFkZXItc3R5bGVzLiAkaGVhZGVyLXNpemVzIHN0aWxsIHdvcmtzLCBidXQgaXQgaXMgZ29pbmcgdG8gYmUgZGVwcmVjaWF0ZWQuJztcbiAgJGhlYWRlci1zdHlsZXM6ICgpO1xuICBAZWFjaCAkc2l6ZSwgJGhlYWRlcnMgaW4gJGhlYWRlci1zaXplcyB7XG4gICAgJGhlYWRlci1tYXA6ICgpO1xuICAgIEBlYWNoICRoZWFkZXIsICRmb250LXNpemUgaW4gJGhlYWRlcnMge1xuICAgICAgJGhlYWRlci1tYXA6IG1hcC1tZXJnZSgkaGVhZGVyLW1hcCwgKCRoZWFkZXI6ICgnZm9udC1zaXplJzogJGZvbnQtc2l6ZSkpKTtcbiAgICB9XG4gICAgJGhlYWRlci1zdHlsZXM6IG1hcC1tZXJnZSgkaGVhZGVyLXN0eWxlcywgKCRzaXplOiAkaGVhZGVyLW1hcCkpO1xuICB9XG4gIEByZXR1cm4gJGhlYWRlci1zdHlsZXM7XG59XG5cbi8vIElmIGl0IGV4aXN0cyAkaGVhZGVycy1zaXplcyBpcyB1c2VkIHRvIGJ1aWxkICRoZWFkZXItc3R5bGVzLiBTZWUgdGhlIGRvY3VtZW50YXRpb24uXG5AaWYgdmFyaWFibGUtZXhpc3RzKGhlYWRlci1zaXplcykge1xuICAkaGVhZGVyLXN0eWxlczogYnVpbGRfZnJvbV9oZWFkZXItc2l6ZXMoJGhlYWRlci1zaXplcyk7XG59XG5cbi8vLyBUZXh0IHJlbmRlcmluZyBtZXRob2Qgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRoZWFkZXItdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiBgPHNtYWxsPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc21hbGwtZm9udC1zaXplOiA4MCUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBgPHNtYWxsPmAgZWxlbWVudHMgd2hlbiBwbGFjZWQgaW5zaWRlIGhlYWRlcnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRoZWFkZXItc21hbGwtZm9udC1jb2xvcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgb2YgdGV4dCBpbnNpZGUgYDxwPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFyYWdyYXBoLWxpbmVoZWlnaHQ6IDEuNiAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgcGFyYWdyYXBocy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTogMXJlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgcmVuZGVyaW5nIG1ldGhvZCBmb3IgcGFyYWdyYXBoIHRleHQuXG4vLy8gQHR5cGUgU3RyaW5nXG4kcGFyYWdyYXBoLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHkgIWRlZmF1bHQ7XG5cbi8vLyBVc2UgdGhlIGAuY29kZS1pbmxpbmVgIGNvbXBvbmVudCBhcyBkZWZhdWx0IGZvciBgPGNvZGU+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZW5hYmxlLWNvZGUtaW5saW5lOiB0cnVlO1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgbGlua3MuXG4vLy8gQHR5cGUgQ29sb3JcbiRhbmNob3ItY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgbGlua3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRhbmNob3ItY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRhbmNob3ItY29sb3IsICRsaWdodG5lc3M6IC0xNCUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGRlY29yYXRpb24gZm9yIGxpbmtzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGFuY2hvci10ZXh0LWRlY29yYXRpb246IG5vbmUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgZGVjb3JhdGlvbiBmb3IgbGlua3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgU3RyaW5nXG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3Zlcjogbm9uZSAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gd2lkdGggb2YgYSBkaXZpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJGhyLXdpZHRoOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgZm9yIGEgZGl2aWRlci5cbi8vLyBAdHlwZSBMaXN0XG4kaHItYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXJnaW4gZm9yIGEgZGl2aWRlci5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kaHItbWFyZ2luOiByZW0tY2FsYygyMCkgYXV0byAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IGZvciBpdGVtcyBpbiBhIGxpc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1saW5laGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIGZvciBpdGVtcyBpbiBhIGxpc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1tYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b20gIWRlZmF1bHQ7XG5cbi8vLyBCdWxsZXQgdHlwZSB0byB1c2UgZm9yIHVub3JkZXJlZCBsaXN0cyAoZS5nLiwgYHNxdWFyZWAsIGBjaXJjbGVgLCBgZGlzY2ApLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGxpc3Qtc3R5bGUtdHlwZTogZGlzYyAhZGVmYXVsdDtcblxuLy8vIFBvc2l0aW9uaW5nIGZvciBidWxsZXRzIG9uIHVub3JkZXJlZCBsaXN0IGl0ZW1zLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGUgIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0IChvciByaWdodCkgbWFyZ2luIGZvciBsaXN0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LXNpZGUtbWFyZ2luOiAxLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gTGVmdCAob3IgcmlnaHQpIG1hcmdpbiBmb3IgYSBsaXN0IGluc2lkZSBhIGxpc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW46IDEuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIGZvciBgPGRsPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IGZvciBgPGR0PmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kZGVmbmxpc3QtdGVybS13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gYDxkdD5gIGFuZCBgPGRkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZGVmbmxpc3QtdGVybS1tYXJnaW4tYm90dG9tOiAwLjNyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIGA8YmxvY2txdW90ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmxvY2txdW90ZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIGEgYDxibG9ja3F1b3RlPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kYmxvY2txdW90ZS1wYWRkaW5nOiByZW0tY2FsYyg5IDIwIDAgMTkpICFkZWZhdWx0O1xuXG4vLy8gU2lkZSBib3JkZXIgZm9yIGA8YmxvY2txdW90ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIExpc3RcbiRibG9ja3F1b3RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIFVzZSB0aGUgYC5jaXRlLWJsb2NrYCBjb21wb25lbnQgYXMgZGVmYXVsdCBmb3IgYDxjaXRlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGVuYWJsZS1jaXRlLWJsb2NrOiB0cnVlO1xuXG4vLy8gRm9udCBmYW1pbHkgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGtleXN0cm9rZS1mb250OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGtleXN0cm9rZS1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGtleXN0cm9rZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGtleXN0cm9rZS1wYWRkaW5nOiByZW0tY2FsYygyIDQgMCkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRrZXlzdHJva2UtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBib3JkZXIgc3R5bGUgZm9yIGA8YWJicj5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIExpc3RcbiRhYmJyLXVuZGVybGluZTogMXB4IGRvdHRlZCAkYmxhY2sgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXR5cG9ncmFwaHktYmFzZSB7XG4gIC8vIFR5cG9ncmFwaHkgcmVzZXRzXG4gIGRpdixcbiAgZGwsXG4gIGR0LFxuICBkZCxcbiAgdWwsXG4gIG9sLFxuICBsaSxcbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNixcbiAgcHJlLFxuICBmb3JtLFxuICBwLFxuICBibG9ja3F1b3RlLFxuICB0aCxcbiAgdGQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgLy8gUGFyYWdyYXBoc1xuICBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XG5cbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6ICRwYXJhZ3JhcGgtbGluZWhlaWdodDtcbiAgICB0ZXh0LXJlbmRlcmluZzogJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZztcbiAgfVxuXG4gIC8vIEVtcGhhc2l6ZWQgdGV4dFxuICBlbSxcbiAgaSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gU3Ryb25nIHRleHRcbiAgc3Ryb25nLFxuICBiIHtcbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIFNtYWxsIHRleHRcbiAgc21hbGwge1xuICAgIGZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIEhlYWRpbmdzXG4gIGgxLCAuaDEsXG4gIGgyLCAuaDIsXG4gIGgzLCAuaDMsXG4gIGg0LCAuaDQsXG4gIGg1LCAuaDUsXG4gIGg2LCAuaDYge1xuICAgIGZvbnQtZmFtaWx5OiAkaGVhZGVyLWZvbnQtZmFtaWx5O1xuICAgIGZvbnQtc3R5bGU6ICRoZWFkZXItZm9udC1zdHlsZTtcbiAgICBmb250LXdlaWdodDogJGhlYWRlci1mb250LXdlaWdodDtcbiAgICBjb2xvcjogJGhlYWRlci1jb2xvcjtcbiAgICB0ZXh0LXJlbmRlcmluZzogJGhlYWRlci10ZXh0LXJlbmRlcmluZztcblxuICAgIHNtYWxsIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgY29sb3I6ICRoZWFkZXItc21hbGwtZm9udC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAvLyBIZWFkaW5nIHN0eWxlc1xuICBAZWFjaCAkc2l6ZSwgJGhlYWRlcnMgaW4gJGhlYWRlci1zdHlsZXMge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgIEBlYWNoICRoZWFkZXIsICRoZWFkZXItZGVmcyBpbiAkaGVhZGVycyB7XG4gICAgICAgICRmb250LXNpemUtdGVtcDogMXJlbTtcbiAgICAgICAgI3skaGVhZGVyfSwgLiN7JGhlYWRlcn0ge1xuXG4gICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgZm9udC1zaXplKSB7XG4gICAgICAgICAgICAkZm9udC1zaXplLXRlbXA6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBmb250LXNpemUpKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS10ZW1wO1xuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBmcykge1xuICAgICAgICAgICAgJGZvbnQtc2l6ZS10ZW1wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgZnMpKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS10ZW1wO1xuICAgICAgICAgIH0gQGVsc2UgaWYgJHNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXRlbXA7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGxpbmUtaGVpZ2h0KSB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdW5pdGxlc3MtY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbGluZS1oZWlnaHQpLCAkZm9udC1zaXplLXRlbXApO1xuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBsaCkge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHVuaXRsZXNzLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGxoKSwgJGZvbnQtc2l6ZS10ZW1wKTtcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB1bml0bGVzcy1jYWxjKCRoZWFkZXItbGluZWhlaWdodCwgJGZvbnQtc2l6ZS10ZW1wKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtYXJnaW4tdG9wKSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbWFyZ2luLXRvcCkpO1xuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtdCkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIG10KSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtYXJnaW4tYm90dG9tKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbWFyZ2luLWJvdHRvbSkpO1xuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtYikge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIG1iKSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygkaGVhZGVyLW1hcmdpbi1ib3R0b20pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIExpbmtzXG4gIGEge1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGNvbG9yOiAkYW5jaG9yLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogJGFuY2hvci10ZXh0LWRlY29yYXRpb247XG5cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICRhbmNob3ItY29sb3ItaG92ZXI7XG4gICAgICBAaWYgJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXIgIT0gJGFuY2hvci10ZXh0LWRlY29yYXRpb24ge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246ICRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGltZyB7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gSG9yaXpvbnRhbCBydWxlXG4gIGhyIHtcbiAgICBjbGVhcjogYm90aDtcblxuICAgIG1heC13aWR0aDogJGhyLXdpZHRoO1xuICAgIGhlaWdodDogMDtcbiAgICBtYXJnaW46ICRoci1tYXJnaW47XG5cbiAgICBib3JkZXItdG9wOiAwO1xuICAgIGJvcmRlci1yaWdodDogMDtcbiAgICBib3JkZXItYm90dG9tOiAkaHItYm9yZGVyO1xuICAgIGJvcmRlci1sZWZ0OiAwO1xuICB9XG5cbiAgLy8gTGlzdHNcbiAgdWwsXG4gIG9sLFxuICBkbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGxpc3QtbWFyZ2luLWJvdHRvbTtcbiAgICBsaXN0LXN0eWxlLXBvc2l0aW9uOiAkbGlzdC1zdHlsZS1wb3NpdGlvbjtcbiAgICBsaW5lLWhlaWdodDogJGxpc3QtbGluZWhlaWdodDtcbiAgfVxuXG4gIC8vIExpc3QgaXRlbXNcbiAgbGkge1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIFVub3JkZXJlZCBsaXN0c1xuICB1bCB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3Qtc2lkZS1tYXJnaW47XG4gICAgbGlzdC1zdHlsZS10eXBlOiAkbGlzdC1zdHlsZS10eXBlO1xuICB9XG5cbiAgLy8gT3JkZXJlZCBsaXN0c1xuICBvbCB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3Qtc2lkZS1tYXJnaW47XG4gIH1cblxuICAvLyBOZXN0ZWQgdW5vcmRlcmVkL29yZGVyZWQgbGlzdHNcbiAgdWwsIG9sIHtcbiAgICAmICYge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3QtbmVzdGVkLXNpZGUtbWFyZ2luO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZpbml0aW9uIGxpc3RzXG4gIGRsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTtcblxuICAgIGR0IHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b207XG4gICAgICBmb250LXdlaWdodDogJGRlZm5saXN0LXRlcm0td2VpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIEJsb2NrcXVvdGVzXG4gIGJsb2NrcXVvdGUge1xuICAgIG1hcmdpbjogMCAwICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcbiAgICBwYWRkaW5nOiAkYmxvY2txdW90ZS1wYWRkaW5nO1xuICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06ICRibG9ja3F1b3RlLWJvcmRlcjtcblxuICAgICYsIHAge1xuICAgICAgbGluZS1oZWlnaHQ6ICRwYXJhZ3JhcGgtbGluZWhlaWdodDtcbiAgICAgIGNvbG9yOiAkYmxvY2txdW90ZS1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAvLyBJbmxpbmUgQ2l0YXRpb25zXG4gIEBpZiAoJGVuYWJsZS1jaXRlLWJsb2NrID09IHRydWUpIHtcbiAgICBjaXRlIHtcbiAgICAgIC8vIEV4dGVuZGluZyBhIGNsYXNzIGlzIG5vdCByZWNvbW1lbmRlZC5cbiAgICAgIC8vIFRPRE86IEJyZWFrIHRoZSB0eXBvZ3JhcGh5LWJhc2UvdHlwb2dyYXBoeS1oZWxwZXJzIHNlcGFyYXRpb25cbiAgICAgIEBleHRlbmQgLmNpdGUtYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgLy8gQWJicmV2aWF0aW9uc1xuICBhYmJyLCBhYmJyW3RpdGxlXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGFiYnItdW5kZXJsaW5lO1xuICAgIGN1cnNvcjogaGVscDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cblxuICAvLyBGaWd1cmVzXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLy8gQ29kZVxuICBAaWYgKCRlbmFibGUtY29kZS1pbmxpbmUgPT0gdHJ1ZSkge1xuICAgIGNvZGUge1xuICAgICAgQGV4dGVuZCAuY29kZS1pbmxpbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gS2V5c3Ryb2tlc1xuICBrYmQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAka2V5c3Ryb2tlLXBhZGRpbmc7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAka2V5c3Ryb2tlLWJhY2tncm91bmQ7XG5cbiAgICBmb250LWZhbWlseTogJGtleXN0cm9rZS1mb250O1xuICAgIGNvbG9yOiAka2V5c3Ryb2tlLWNvbG9yO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgka2V5c3Ryb2tlLXJhZGl1cykge1xuICAgICAgYm9yZGVyLXJhZGl1czogJGtleXN0cm9rZS1yYWRpdXM7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdHlwb2dyYXBoeS1oZWxwZXJzXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgbGVhZCBwYXJhZ3JhcGhzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxlYWQtZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZSAqIDEuMjUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBsZWFkIHBhcmFncmFwaHMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kbGVhZC1saW5laGVpZ2h0OiAxLjYgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN1YmhlYWRlci1saW5laGVpZ2h0OiAxLjQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRzdWJoZWFkZXItY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgd2VpZ2h0IGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJHN1YmhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0b3AgbWFyZ2luIGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN1YmhlYWRlci1tYXJnaW4tdG9wOiAwLjJyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3ViaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBzdGF0aXN0aWMgbnVtYmVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzdGF0LWZvbnQtc2l6ZTogMi41cmVtICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBmb3IgYC5jaXRlLWJsb2NrYCBjb21wb25lbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRjaXRlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBgLmNpdGUtYmxvY2tgIGNvbXBvbmVudC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjaXRlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpICFkZWZhdWx0O1xuXG4vLy8gUHNldWRvIGNvbnRlbnQgZm9yIGAuY2l0ZS1ibG9ja2AgY29tcG9uZW50LlxuLy8vIEB0eXBlIFN0cmluZ1xuJGNpdGUtcHNldWRvLWNvbnRlbnQ6ICdcXDIwMTQgXFwwMDIwJyAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYC5jb2RlLWlubGluZWAgYW5kIGAuY29kZS1ibG9ja2AgY29tcG9uZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGNvZGUtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgZmFtaWx5IG9mIGAuY29kZS1pbmxpbmVgIGFuZCBgLmNvZGUtYmxvY2tgIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGNvZGUtZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1tb25vc3BhY2UgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGluIGAuY29kZS1pbmxpbmVgIGFuZCBgLmNvZGUtYmxvY2tgIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kY29kZS1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBgLmNvZGUtaW5saW5lYCBhbmQgYC5jb2RlLWJsb2NrYCBjb21wb25lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY29kZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBhcm91bmQgYC5jb2RlLWlubGluZWAgYW5kIGAuY29kZS1ibG9ja2AgY29tcG9uZW50cy5cbi8vLyBAdHlwZSBMaXN0XG4kY29kZS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGFyb3VuZCB0ZXh0IG9mIHRoZSBgLmNvZGUtaW5saW5lYCBjb21wb25lbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGNvZGUtcGFkZGluZzogcmVtLWNhbGMoMiA1IDEpICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBhcm91bmQgdGV4dCBvZiB0aGUgYC5jb2RlLWJsb2NrYCBjb21wb25lbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGNvZGUtYmxvY2stcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiB1bmRlciB0aGUgYC5jb2RlLWJsb2NrYCBjb21wb25lbnQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY29kZS1ibG9jay1tYXJnaW4tYm90dG9tOiAxLjVyZW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiBjaXRlLWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGNvbG9yOiAkY2l0ZS1jb2xvcjtcbiAgZm9udC1zaXplOiAkY2l0ZS1mb250LXNpemU7XG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRjaXRlLXBzZXVkby1jb250ZW50O1xuICB9XG59XG5cbi8vLyBBZGQgYmFzaWMgc3R5bGVzIGZvciBhIGNvZGUgaGVscGVyLlxuLy8vIFNlZSBgY29kZS1pbmxpbmVgIGFuZCBgY29kZS1ibG9ja2AgbWl4aW5zLlxuQG1peGluIGNvZGUtc3R5bGUge1xuICBib3JkZXI6ICRjb2RlLWJvcmRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvZGUtYmFja2dyb3VuZDtcblxuICBmb250LWZhbWlseTogJGNvZGUtZm9udC1mYW1pbHk7XG4gIGZvbnQtd2VpZ2h0OiAkY29kZS1mb250LXdlaWdodDtcbiAgY29sb3I6ICRjb2RlLWNvbG9yO1xufVxuXG4vLy8gTWFrZSBjb2RlIGhlbHBlciBmcm9tIHRoZSBgY29kZS1zdHlsZWAgbWl4aW4gaW5saW5lLlxuLy8vIFVzZWQgdG8gZ2VuZXJhdGUgYC5jb2RlLWlubGluZWBcbkBtaXhpbiBjb2RlLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG5cbiAgcGFkZGluZzogJGNvZGUtcGFkZGluZztcbn1cblxuLy8vIE1ha2UgY29kZSBoZWxwZXIgZnJvbSB0aGUgYGNvZGUtc3R5bGVgIG1peGluIGEgYmxvY2suXG4vLy8gVXNlZCB0byBnZW5lcmF0ZSBgLmNvZGUtYmxvY2tgXG5AbWl4aW4gY29kZS1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogYXV0bztcbiAgd2hpdGUtc3BhY2U6IHByZTtcblxuICBwYWRkaW5nOiAkY29kZS1ibG9jay1wYWRkaW5nO1xuICBtYXJnaW4tYm90dG9tOiAkY29kZS1ibG9jay1tYXJnaW4tYm90dG9tO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5LWhlbHBlcnMge1xuICAvLyBVc2UgdG8gY3JlYXRlIGEgc3ViaGVhZGluZyB1bmRlciBhIG1haW4gaGVhZGVyXG4gIC8vIE1ha2Ugc3VyZSB5b3UgcGFpciB0aGUgdHdvIGVsZW1lbnRzIGluIGEgPGhlYWRlcj4gZWxlbWVudCwgbGlrZSB0aGlzOlxuICAvLyA8aGVhZGVyPlxuICAvLyAgIDxoMT5IZWFkaW5nPC9oMT5cbiAgLy8gICA8aDI+U3ViaGVhZGluZzwvaDI+XG4gIC8vIDwvaGVhZGVyPlxuICAuc3ViaGVhZGVyIHtcbiAgICBtYXJnaW4tdG9wOiAkc3ViaGVhZGVyLW1hcmdpbi10b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tO1xuXG4gICAgZm9udC13ZWlnaHQ6ICRzdWJoZWFkZXItZm9udC13ZWlnaHQ7XG4gICAgbGluZS1oZWlnaHQ6ICRzdWJoZWFkZXItbGluZWhlaWdodDtcbiAgICBjb2xvcjogJHN1YmhlYWRlci1jb2xvcjtcbiAgfVxuXG4gIC8vIFVzZSB0byBzdHlsZSBhbiBpbnRyb2R1Y3RvcnkgbGVhZCwgZGVjaywgYmx1cmIsIGV0Yy5cbiAgLmxlYWQge1xuICAgIGZvbnQtc2l6ZTogJGxlYWQtZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAkbGVhZC1saW5laGVpZ2h0O1xuICB9XG5cbiAgLy8gVXNlIHRvIHN0eWxlIGEgbGFyZ2UgbnVtYmVyIHRvIGRpc3BsYXkgYSBzdGF0aXN0aWNcbiAgLnN0YXQge1xuICAgIGZvbnQtc2l6ZTogJHN0YXQtZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgcCArICYge1xuICAgICAgbWFyZ2luLXRvcDogLTFyZW07XG4gICAgfVxuICB9XG5cbiAgdWwsIG9sIHtcbiAgICAvLyBVc2UgdG8gcmVtb3ZlIG51bWJlcnMgZnJvbSBvcmRlcmVkIGxpc3QgJiBidWxsZXRzIGZyb20gdW5vcmRlcmVkIGxpc3RcbiAgICAmLm5vLWJ1bGxldCB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAuY2l0ZS1ibG9jayB7XG4gICAgQGluY2x1ZGUgY2l0ZS1ibG9jaztcbiAgfVxuXG4gIC5jb2RlLWlubGluZSB7XG4gICAgQGluY2x1ZGUgY29kZS1zdHlsZTtcbiAgICBAaW5jbHVkZSBjb2RlLWlubGluZTtcbiAgfVxuXG4gIC5jb2RlLWJsb2NrIHtcbiAgICBAaW5jbHVkZSBjb2RlLXN0eWxlO1xuICAgIEBpbmNsdWRlIGNvZGUtYmxvY2s7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQG1peGluIGZvdW5kYXRpb24tdGV4dC1hbGlnbm1lbnQge1xuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICBAZWFjaCAkYWxpZ24gaW4gKGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnkpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyRhbGlnbn0ge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogJGFsaWduO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgLnRleHQtI3skYWxpZ259IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246ICRhbGlnbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vIElmIGB0cnVlYCwgYWxsIGVsZW1lbnRzIHdpbGwgaGF2ZSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kcyB3aGVuIHByaW50ZWQsIHRvIHNhdmUgb24gaW5rLlxuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAZ3JvdXAgZ2xvYmFsXG4kcHJpbnQtdHJhbnNwYXJlbnQtYmFja2dyb3VuZHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGRpc3BsYXlzIG5leHQgdG8gYWxsIGxpbmtzIHRoZWlyIFwiaHJlZlwiIHdoZW4gcHJpbnRlZC5cbi8vLyBAdHlwZSBCb29sZWFuXG4vLy8gQGdyb3VwIGdsb2JhbFxuJHByaW50LWhyZWZzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBzYXNzLWxpbnQ6ZGlzYWJsZS1hbGxcblxuQG1peGluIGZvdW5kYXRpb24tcHJpbnQtc3R5bGVzIHtcbiAgLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbiAgQG1lZGlhIHByaW50IHtcbiAgICAqIHtcbiAgICAgIC8vIEVuc3VyZSBhIFwiYmxhY2stb24td2hpdGVcIiBwcmludCBieSByZW1vdmluZyBiYWNrZ3JvdW5kcyxcbiAgICAgIC8vIHVzaW5nIGJsYWNrIHRleHQgZXZlcnl3aGVyZSBhbmQgZm9yY2luZyB0aGUgYnJvd3NlciB0byBlY29ub21pemUgaW5rLlxuICAgICAgQGlmICRwcmludC10cmFuc3BhcmVudC1iYWNrZ3JvdW5kcyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50OyAvLyBCbGFjayBwcmludHMgZmFzdGVyOiBoNWJwLmNvbS9zXG4gICAgICAgIGNvbG9yLWFkanVzdDogZWNvbm9teTtcbiAgICAgIH1cbiAgICAgIC8vIE90aGVyd2lzZSwgcHJldmVudCBhbnkgZWNvbm9teSBieSB0aGUgYnJvd3Nlci5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgIH1cblxuICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgLmhpZGUtZm9yLXByaW50IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbiAgICB0YWJsZS5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cbiAgICB0aGVhZC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cCAhaW1wb3J0YW50OyB9XG4gICAgdGJvZHkuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXAgIWltcG9ydGFudDsgfVxuICAgIHRyLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH1cbiAgICB0ZC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxuICAgIHRoLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG5cbiAgICAvLyBEaXNwbGF5IHRoZSBVUkwgb2YgYSBsaW5rIGFmdGVyIHRoZSB0ZXh0XG4gICAgYSxcbiAgICBhOnZpc2l0ZWQgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTt9XG4gICAgQGlmICRwcmludC1ocmVmcyB7XG4gICAgICBhW2hyZWZdOmFmdGVyIHsgY29udGVudDogJyAoJyBhdHRyKGhyZWYpICcpJzsgfVxuICAgIH1cblxuICAgIC8vIERvbid0IGRpc3BsYXkgdGhlIFVSTCBmb3IgaW1hZ2VzIG9yIEphdmFTY3JpcHQvaW50ZXJuYWwgbGlua3NcbiAgICAuaXIgYTphZnRlcixcbiAgICBhW2hyZWZePSdqYXZhc2NyaXB0OiddOmFmdGVyLFxuICAgIGFbaHJlZl49JyMnXTphZnRlciB7IGNvbnRlbnQ6ICcnOyB9XG5cbiAgICAvLyBEaXNwbGF5IHdoYXQgYW4gYWJicmV2aWF0aW9uIHN0YW5kcyBmb3IgYWZ0ZXIgdGhlIHRleHRcbiAgICBhYmJyW3RpdGxlXTphZnRlciB7IGNvbnRlbnQ6ICcgKCcgYXR0cih0aXRsZSkgJyknOyB9XG5cbiAgICAvLyBQcmV2ZW50IHBhZ2UgYnJlYWtzIGluIHRoZSBtaWRkbGUgb2YgYSBibG9ja3F1b3RlIG9yIHByZWZvcm1hdHRlZCB0ZXh0IGJsb2NrXG4gICAgcHJlLFxuICAgIGJsb2NrcXVvdGUge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGRhcmstZ3JheTtcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICAvLyBoNWJwLmNvbS90XG4gICAgdGhlYWQgeyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7IH1cblxuICAgIHRyLFxuICAgIGltZyB7IHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxuXG4gICAgaW1nIHsgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cblxuICAgIEBwYWdlIHsgbWFyZ2luOiAwLjVjbTsgfVxuXG4gICAgcCxcbiAgICBoMixcbiAgICBoMyB7XG4gICAgICBvcnBoYW5zOiAzO1xuICAgICAgd2lkb3dzOiAzO1xuICAgIH1cblxuICAgIC8vIEF2b2lkIHBhZ2UgYnJlYWtzIGFmdGVyIGEgaGVhZGluZ1xuICAgIGgyLFxuICAgIGgzIHsgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7IH1cblxuICAgIC8vIEhlbHBlciB0byByZS1hbGxvdyBwYWdlIGJyZWFrcyBpbiB0aGUgbWlkZGxlIG9mIGNlcnRhaW4gZWxlbWVudHMgKGUuZy4gcHJlLCBibG9ja3F1b3RlLCB0cilcbiAgICAucHJpbnQtYnJlYWstaW5zaWRlIHtcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdXRvO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFRoZSBtYXhpbXVtIHdpZHRoIG9mIGEgcm93LlxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtcm93LXdpZHRoOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gVGhlIGRlZmF1bHQgY29sdW1uIGNvdW50IG9mIGEgZ3JpZC4gQ2hhbmdpbmcgdGhpcyB2YWx1ZSBhZmZlY3RzIHRoZSBsb2dpYyBvZiB0aGUgZ3JpZCBtaXhpbnMsIGFuZCB0aGUgbnVtYmVyIG9mIENTUyBjbGFzc2VzIG91dHB1dC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRncmlkLWNvbHVtbi1jb3VudDogMTIgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gY29sdW1ucyBhdCBkaWZmZXJlbnQgc2NyZWVuIHNpemVzLiBUbyB1c2UganVzdCBvbmUgc2l6ZSwgc2V0IHRoZSB2YXJpYWJsZSB0byBhIG51bWJlciBpbnN0ZWFkIG9mIGEgbWFwLlxuLy8vIEB0eXBlIE1hcCB8IExlbmd0aFxuLy8vIEBzaW5jZSA2LjEuMFxuJGdyaWQtY29sdW1uLWd1dHRlcjogKFxuICBzbWFsbDogMjBweCxcbiAgbWVkaXVtOiAzMHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgdGhlIGxhc3QgY29sdW1uIGluIGEgcm93IHdpbGwgYWxpZ24gdG8gdGhlIG9wcG9zaXRlIGVkZ2Ugb2YgdGhlIHJvdy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNlbGVjdG9yIHVzZWQgZm9yIGFuIGFsaWFzIG9mIGNvbHVtbiAod2l0aCBAZXh0ZW5kKS4gSWYgYGZhbHNlYCwgbm8gYWxpYXMgaXMgY3JlYXRlZC5cbi8vLyBAdHlwZSBTdHJpbmdcbiRncmlkLWNvbHVtbi1hbGlhczogJ2NvbHVtbnMnICFkZWZhdWx0O1xuXG4vLy8gVGhlIGhpZ2hlc3QgbnVtYmVyIG9mIGAueC11cGAgY2xhc3NlcyBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUgYmxvY2sgZ3JpZCBDU1MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmxvY2stZ3JpZC1tYXg6IDggIWRlZmF1bHQ7XG5cbi8vIEludGVybmFsIHZhbHVlIHRvIHN0b3JlIHRoZSBlbmQgY29sdW1uIGZsb2F0IGRpcmVjdGlvblxuJC16Zi1lbmQtZmxvYXQ6IGlmKCRncmlkLWNvbHVtbi1hbGlnbi1lZGdlLCAkZ2xvYmFsLXJpZ2h0LCAkZ2xvYmFsLWxlZnQpO1xuXG5AaW1wb3J0ICdyb3cnO1xuQGltcG9ydCAnY29sdW1uJztcbkBpbXBvcnQgJ3NpemUnO1xuQGltcG9ydCAncG9zaXRpb24nO1xuQGltcG9ydCAnZ3V0dGVyJztcbkBpbXBvcnQgJ2NsYXNzZXMnO1xuQGltcG9ydCAnbGF5b3V0JztcblxuQGltcG9ydCAnZmxleC1ncmlkJztcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBDaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIGNvbHVtbnMgZGVmaW5lZCBpbnNpZGUgdGhpcyBtaXhpbiB0byB1c2UgYSBkaWZmZXJlbnQgY29sdW1uIGNvdW50LlxuLy8vIEBjb250ZW50XG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnMgLSBOdW1iZXIgb2YgY29sdW1ucyB0byB1c2UuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkcm9vdCBbZmFsc2VdXG4vLy8gICBJZiBgZmFsc2VgLCBzZWxlY3RvcnMgaW5zaWRlIHRoaXMgbWl4aW4gd2lsbCBuZXN0IGluc2lkZSB0aGUgcGFyZW50IHNlbGVjdG9yLlxuLy8vICAgSWYgYHRydWVgLCBzZWxlY3RvcnMgd2lsbCBub3QgbmVzdC5cbkBtaXhpbiBncmlkLWNvbnRleHQoXG4gICRjb2x1bW5zLFxuICAkcm9vdDogZmFsc2Vcbikge1xuICAvLyBTdG9yZSB0aGUgY3VycmVudCBjb2x1bW4gY291bnQgc28gaXQgY2FuIGJlIHJlLXNldCBsYXRlclxuICAkb2xkLWdyaWQtY29sdW1uLWNvdW50OiAkZ3JpZC1jb2x1bW4tY291bnQ7XG4gICRncmlkLWNvbHVtbi1jb3VudDogJGNvbHVtbnMgIWdsb2JhbDtcblxuICBAaWYgJHJvb3Qge1xuICAgIEBhdC1yb290IHsgQGNvbnRlbnQ7IH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAvLyBSZXN0b3JlIHRoZSBvbGQgY29sdW1uIGNvdW50XG4gICRncmlkLWNvbHVtbi1jb3VudDogJG9sZC1ncmlkLWNvbHVtbi1jb3VudCAhZ2xvYmFsO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGdyaWQgcm93LlxuLy8vIEBjb250ZW50XG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnMgW251bGxdIC0gQ29sdW1uIGNvdW50IGZvciB0aGlzIHJvdy4gYG51bGxgIHdpbGwgdXNlIHRoZSBkZWZhdWx0IGNvbHVtbiBjb3VudC5cbi8vLyBAcGFyYW0ge0tleXdvcmRzfSAkYmVoYXZpb3IgW251bGxdXG4vLy8gICBNb2RpZmljYXRpb25zIHRvIHRoZSBkZWZhdWx0IGdyaWQgc3R5bGVzLiBgbmVzdGAgaW5kaWNhdGVzIHRoZSByb3cgd2lsbCBiZSBwbGFjZWQgaW5zaWRlIGFub3RoZXIgcm93LiBgY29sbGFwc2VgIGluZGljYXRlcyB0aGF0IHRoZSBjb2x1bW5zIGluc2lkZSB0aGlzIHJvdyB3aWxsIG5vdCBoYXZlIHBhZGRpbmcuIGBuZXN0IGNvbGxhcHNlYCBjb21iaW5lcyBib3RoIGJlaGF2aW9ycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbJGdyaWQtcm93LXdpZHRoXSBNYXhpbXVtIHNpemUgb2YgdGhlIHJvdy4gU2V0IHRvIGBleHBhbmRgIHRvIG1ha2UgdGhlIHJvdyB0YWtpbmcgdGhlIGZ1bGwgd2lkdGguXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkY2YgW3RydWVdIC0gV2hldGhlciBvciBub3QgdG8gaW5jbHVkZSBhIGNsZWFyZml4LlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gR3V0dGVyIG1hcCBvciBzaW5nbGUgdmFsdWUgdG8gdXNlIHdoZW4gaW52ZXJ0aW5nIG1hcmdpbnMuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXG5AbWl4aW4gZ3JpZC1yb3coXG4gICRjb2x1bW5zOiBudWxsLFxuICAkYmVoYXZpb3I6IG51bGwsXG4gICRzaXplOiAkZ3JpZC1yb3ctd2lkdGgsXG4gICRjZjogdHJ1ZSxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICAkbWFyZ2luOiBhdXRvO1xuXG4gIEBpZiBpbmRleCgkYmVoYXZpb3IsIG5lc3QpICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGdyaWQtcm93LW5lc3QoJGd1dHRlcnMpO1xuXG4gICAgQGlmIGluZGV4KCRiZWhhdmlvciwgY29sbGFwc2UpICE9IG51bGwge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKCRzaXplKTtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cblxuICBAaWYgJGNmIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfVxuXG4gIEBpZiAkY29sdW1ucyAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbnRleHQoJGNvbHVtbnMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gSW52ZXJ0cyB0aGUgbWFyZ2lucyBvZiBhIHJvdyB0byBuZXN0IGl0IGluc2lkZSBvZiBhIGNvbHVtbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gR3V0dGVyIG1hcCBvciBzaW5nbGUgdmFsdWUgdG8gdXNlIHdoZW4gaW52ZXJ0aW5nIG1hcmdpbnMuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXG5AbWl4aW4gZ3JpZC1yb3ctbmVzdCgkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlcikge1xuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICAkbWFyZ2luOiByZW0tY2FsYygtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJC16Zi1zaXplKSkgLyAyICogLTE7XG5cbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW47XG4gIH1cbn1cblxuLy8vIFNldCBhIGdyaWQgcm93IHNpemVcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFskZ3JpZC1yb3ctd2lkdGhdIE1heGltdW0gc2l6ZSBvZiB0aGUgcm93LiBTZXQgdG8gYGV4cGFuZGAgdG8gbWFrZSB0aGUgcm93IHRha2luZyB0aGUgZnVsbCB3aWR0aC5cbkBtaXhpbiBncmlkLXJvdy1zaXplKCRzaXplOiAkZ3JpZC1yb3ctd2lkdGgpIHtcbiAgQGlmICRzaXplID09IGV4cGFuZCB7XG4gICAgJHNpemU6IG5vbmU7XG4gIH1cblxuICBtYXgtd2lkdGg6ICRzaXplO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIGEgY29sdW1uIGJhc2VkIG9uIGEgbnVtYmVyIG9mIGZhY3RvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkY29sdW1uc1xuLy8vICAgV2lkdGggb2YgdGhlIGNvbHVtbi4gQWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtIEEgcGVyY2VudGFnZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIGNvbHVtbiB0aGF0IGV4YWN0IHNpemUuXG4vLy8gICAtIEEgc2luZ2xlIGRpZ2l0IHdpbGwgbWFrZSB0aGUgY29sdW1uIHNwYW4gdGhhdCBudW1iZXIgb2YgY29sdW1ucyB3aWRlLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBjb2x1bW4gY291bnQgb2YgdGhlIHBhcmVudCByb3cuXG4vLy8gICAtIEEgbGlzdCBvZiB0aGUgZm9ybWF0IFwieCBvZiB5XCIgKHdpdGhvdXQgcXVvdGVzKSB3aWxsIG1ha2UgYSBjb2x1bW4gdGhhdCBpcyAqeCogY29sdW1ucyB3aWRlLCBhc3N1bWluZyAqeSogdG90YWwgY29sdW1ucyBmb3IgdGhlIHBhcmVudC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgY2FsY3VsYXRlZCBwZXJjZW50YWdlIHZhbHVlLlxuQGZ1bmN0aW9uIGdyaWQtY29sdW1uKCRjb2x1bW5zKSB7XG4gIEByZXR1cm4gZnJhY3Rpb24tdG8tcGVyY2VudGFnZSgkY29sdW1ucywgJGRlbm9taW5hdG9yOiAkZ3JpZC1jb2x1bW4tY291bnQpO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgWyRncmlkLWNvbHVtbi1jb3VudF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMuIFJlZmVyIHRvIHRoZSBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG5AbWl4aW4gZ3JpZC1jb2x1bW4oXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnQsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tc2l6ZSgkY29sdW1ucyk7XG4gIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XG5cbiAgLy8gR3V0dGVyc1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoJGd1dHRlcnM6ICRndXR0ZXJzKTtcblxuICAvLyBQb3NpdGlvblxuICBAaW5jbHVkZSBncmlkLWNvbC1wb3MoYXV0byk7XG59XG5cbi8vLyBDcmVhdGVzIGEgZ3JpZCBjb2x1bW4gcm93LiBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIGFkZGluZyBgLnJvd2AgYW5kIGAuY29sdW1uYCB0byB0aGUgc2FtZSBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gV2lkdGggb2YgdGhlIGd1dHRlcnMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIGNvbHVtbiByb3cuIFJlZmVyIHRvIHRoZSBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tcm93KFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtcm93O1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbigkZ3V0dGVyczogJGd1dHRlcnMpO1xuXG4gICYsXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgZmxvYXQ6IG5vbmU7XG4gIH1cbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtblxuQGZ1bmN0aW9uIGdyaWQtY29sKFxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50XG4pIHtcbiAgQHJldHVybiBncmlkLWNvbHVtbigkY29sdW1ucyk7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW5cbkBtaXhpbiBncmlkLWNvbChcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudCxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbigkY29sdW1ucywgJGd1dHRlcnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tcm93KClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1yb3dcbkBtaXhpbiBncmlkLWNvbC1yb3coXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tcm93KCRndXR0ZXJzKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBTZXQgdGhlIHdpZHRoIG9mIGEgZ3JpZCBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkd2lkdGggWyRncmlkLWNvbHVtbi1jb3VudF0gLSBXaWR0aCB0byBtYWtlIHRoZSBjb2x1bW4uIFlvdSBjYW4gcGFzcyBpbiBhbnkgdmFsdWUgYWNjZXB0ZWQgYnkgdGhlIGBncmlkLWNvbHVtbigpYCBmdW5jdGlvbiwgc3VjaCBhcyBgNmAsIGA1MCVgLCBvciBgMSBvZiAyYC5cbkBtaXhpbiBncmlkLWNvbHVtbi1zaXplKFxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50XG4pIHtcbiAgd2lkdGg6IGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLXNpemUoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXNpemVcbkBtaXhpbiBncmlkLWNvbC1zaXplKFxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50XG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tc2l6ZSgkY29sdW1ucyk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gUmVwb3NpdGlvbiBhIGNvbHVtbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfEtleXdvcmR9ICRwb3NpdGlvbiAtIEl0IGNhbiBiZTpcbi8vLyAgICogQSBudW1iZXI6IFRoZSBjb2x1bW4gd2lsbCBtb3ZlIGVxdWFsIHRvIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uIGNvdW50XG4vLy8gICAgIHNwZWNpZmllZC4gQSBwb3NpdGl2ZSBudW1iZXIgd2lsbCBwdXNoIHRoZSBjb2x1bW4gdG8gdGhlIHJpZ2h0LCB3aGlsZVxuLy8vICAgICBhIG5lZ2F0aXZlIG51bWJlciB3aWxsIHB1bGwgaXQgdG8gdGhlIGxlZnQuXG4vLy8gICAqIGBjZW50ZXJgOiBDb2x1bW4gd2lsbCBiZSBjZW50ZXJlZFxuLy8vICAgKiBgYXV0b2A6IENvbHVtbiB3aWxsIGJlIHB1c2hlZCB0byB0aGUgbGVmdCAob3IgdG8gdGhlIHJpZ2h0IGZvciB0aGUgbGFzdCBjb2x1bW4pLlxuQG1peGluIGdyaWQtY29sdW1uLXBvc2l0aW9uKCRwb3NpdGlvbikge1xuICAvLyBBdXRvIHBvc2l0aW9uaW5nXG4gIEBpZiAkcG9zaXRpb24gPT0gYXV0byB7XG4gICAgJiwgJjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XG4gICAgICBjbGVhcjogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBMYXN0IGNvbHVtbiBhbGlnbm1lbnRcbiAgICBAaWYgJGdyaWQtY29sdW1uLWFsaWduLWVkZ2Uge1xuICAgICAgJjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgZmxvYXQ6ICRnbG9iYWwtcmlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUHVzaC9wdWxsXG4gIEBlbHNlIGlmIHR5cGUtb2YoJHBvc2l0aW9uKSA9PSAnbnVtYmVyJyB7XG4gICAgJG9mZnNldDogcGVyY2VudGFnZSgkcG9zaXRpb24gLyAkZ3JpZC1jb2x1bW4tY291bnQpO1xuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJG9mZnNldDtcbiAgfVxuXG4gIC8vIENlbnRlciBwb3NpdGlvbmluZ1xuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gY2VudGVyIHtcbiAgICAmLCAmOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuICdXcm9uZyBzeW50YXggZm9yIGdyaWQtY29sdW1uLXBvc2l0aW9uKCkuIEVudGVyIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgbnVtYmVyLCBcImNlbnRlclwiIG9yIFwiYXV0b1wiLic7XG4gIH1cbn1cblxuLy8vIFJlc2V0IGEgcG9zaXRpb24gZGVmaW5pdGlvbi5cbkBtaXhpbiBncmlkLWNvbHVtbi11bnBvc2l0aW9uIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tcG9zaXRpb24oYXV0byk7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi8vLyBPZmZzZXRzIGEgY29sdW1uIHRvIHRoZSByaWdodCBieSBgJG5gIGNvbHVtbnMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJG4gLSBXaWR0aCB0byBvZmZzZXQgYnkuIFlvdSBjYW4gcGFzcyBpbiBhbnkgdmFsdWUgYWNjZXB0ZWQgYnkgdGhlIGBncmlkLWNvbHVtbigpYCBtaXhpbiwgc3VjaCBhcyBgNmAsIGA1MCVgLCBvciBgMSBvZiAyYC5cbkBtaXhpbiBncmlkLWNvbHVtbi1vZmZzZXQoJG4pIHtcbiAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogZ3JpZC1jb2x1bW4oJG4pO1xufVxuXG4vLy8gRGlzYWJsZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgbGFzdCBjb2x1bW4gaW4gYSByb3cgYWxpZ25pbmcgdG8gdGhlIG9wcG9zaXRlIGVkZ2UuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tZW5kIHtcbiAgLy8gVGhpcyBleHRyYSBzcGVjaWZpY2l0eSBpcyByZXF1aXJlZCBmb3IgdGhlIHByb3BlcnR5IHRvIGJlIGFwcGxpZWRcbiAgJjpsYXN0LWNoaWxkOmxhc3QtY2hpbGQge1xuICAgIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XG4gIH1cbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLXBvc2l0aW9uKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1wb3NpdGlvblxuQG1peGluIGdyaWQtY29sLXBvcygkcG9zaXRpb24pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tcG9zaXRpb24oJHBvc2l0aW9uKTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLXVucG9zaXRpb24oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXVucG9zaXRpb25cbkBtaXhpbiBncmlkLWNvbC11bnBvcyB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXVucG9zaXRpb247XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1vZmZzZXQoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLW9mZnNldFxuQG1peGluIGdyaWQtY29sLW9mZigkbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1vZmZzZXQoJG4pO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tZW5kKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1lbmRcbkBtaXhpbiBncmlkLWNvbC1lbmQge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1lbmQ7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gU2V0IHRoZSBndXR0ZXJzIG9uIGEgY29sdW1uXG4vLy8gQHBhcmFtIHtOdW1iZXJ8S2V5d29yZH0gJGd1dHRlciBbYXV0b11cbi8vLyAgIFNwYWNpbmcgYmV0d2VlbiBjb2x1bW5zLCBhY2NlcHRzIG11bHRpcGxlIHZhbHVlczpcbi8vLyAgIC0gQSBzaW5nbGUgdmFsdWUgd2lsbCBtYWtlIHRoZSBndXR0ZXIgdGhhdCBleGFjdCBzaXplLlxuLy8vICAgLSBBIGJyZWFrcG9pbnQgbmFtZSB3aWxsIG1ha2UgdGhlIGd1dHRlciB0aGUgY29ycmVzcG9uZGluZyBzaXplIGluIHRoZSAkZ3V0dGVycyBtYXAuXG4vLy8gICAtIFwiYXV0b1wiIHdpbGwgbWFrZSB0aGUgZ3V0dGVyIHJlc3BvbnNpdmUsIHVzaW5nIHRoZSAkZ3V0dGVycyBtYXAgdmFsdWVzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gR3V0dGVyIG1hcCBvciBzaW5nbGUgdmFsdWUgdG8gdXNlLiBSZXNwb25zaXZlIGd1dHRlciBzZXR0aW5ncyBieSBkZWZhdWx0LlxuQG1peGluIGdyaWQtY29sdW1uLWd1dHRlcihcbiAgJGd1dHRlcjogYXV0byxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkZ3V0dGVyLCAkZ3V0dGVycykge1xuICAgICRwYWRkaW5nOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKSAvIDI7XG5cbiAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG59XG5cbi8vLyBDb2xsYXBzZSB0aGUgZ3V0dGVycyBvbiBhIGNvbHVtbiBieSByZW1vdmluZyB0aGUgcGFkZGluZy4gKipOb3RlOioqIG9ubHkgdXNlIHRoaXMgbWl4aW4gd2l0aGluIGEgYnJlYWtwb2ludC4gVG8gY29sbGFwc2UgYSBjb2x1bW4ncyBndXR0ZXJzIG9uIGFsbCBzY3JlZW4gc2l6ZXMsIHVzZSB0aGUgYCRndXR0ZXJgIHBhcmFtZXRlciBvZiB0aGUgYGdyaWQtY29sdW1uKClgIG1peGluIGluc3RlYWQuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tY29sbGFwc2Uge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoMCk7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1ndXR0ZXIoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWd1dHRlclxuQG1peGluIGdyaWQtY29sLWd1dHRlcihcbiAgJGd1dHRlcjogYXV0byxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoJGd1dHRlciwgJGd1dHRlcnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tY29sbGFwc2UoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWNvbGxhcHNlXG5AbWl4aW4gZ3JpZC1jb2wtY29sbGFwc2Uge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1jb2xsYXBzZTtcbn1cblxuLy8vIFNldHMgYm90dG9tIG1hcmdpbiBvbiBncmlkIGNvbHVtbnMgdG8gbWF0Y2ggZ3V0dGVyc1xuLy8vIEBwYXJhbSB7TnVtYmVyfEtleXdvcmR9ICRtYXJnaW4gW2F1dG9dXG4vLy8gICBUaGUgYm90dG9tIG1hcmdpbiBvbiBncmlkIGNvbHVtbnMsIGFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxuLy8vICAgLSBBIHNpbmdsZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIG1hcmdpbiB0aGF0IGV4YWN0IHNpemUuXG4vLy8gICAtIEEgYnJlYWtwb2ludCBuYW1lIHdpbGwgbWFrZSB0aGUgbWFyZ2luIHRoZSBjb3JyZXNwb25kaW5nIHNpemUgaW4gdGhlICRtYXJnaW5zIG1hcC5cbi8vLyAgIC0gXCJhdXRvXCIgd2lsbCBtYWtlIHRoZSBtYXJnaW4gcmVzcG9uc2l2ZSwgdXNpbmcgdGhlICRtYXJnaW5zIG1hcCB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFyZ2lucyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZS4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBncmlkLWNvbHVtbi1tYXJnaW4gKFxuICAkbWFyZ2luOiBhdXRvLFxuICAkbWFyZ2luczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKCRtYXJnaW4sICRtYXJnaW5zKSB7XG4gICAgJG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUpO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuXG4gICAgPiA6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIE91dHB1dHMgQ1NTIGNsYXNzZXMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIGZvdW5kYXRpb24tZ3JpZChcbiAgJHJvdzogJ3JvdycsXG4gICRjb2x1bW46ICdjb2x1bW4nLFxuICAkY29sdW1uLXJvdzogJ2NvbHVtbi1yb3cnLFxuICAkZ3V0dGVyOiAnZ3V0dGVyJyxcbiAgJHB1c2g6ICdwdXNoJyxcbiAgJHB1bGw6ICdwdWxsJyxcbiAgJGNlbnRlcjogJ2NlbnRlcmVkJyxcbiAgJHVuY2VudGVyOiAndW5jZW50ZXJlZCcsXG4gICRjb2xsYXBzZTogJ2NvbGxhcHNlJyxcbiAgJHVuY29sbGFwc2U6ICd1bmNvbGxhcHNlJyxcbiAgJG9mZnNldDogJ29mZnNldCcsXG4gICRlbmQ6ICdlbmQnLFxuICAkZXhwYW5kZWQ6ICdleHBhbmRlZCcsXG4gICRibG9jazogJ2Jsb2NrJ1xuKSB7XG4gIC8vIFJvd1xuICAuI3skcm93fSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3c7XG5cbiAgICAvLyBDb2xsYXBzaW5nXG4gICAgJi4jeyRjb2xsYXBzZX0ge1xuICAgICAgPiAuI3skY29sdW1ufSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLWNvbGxhcHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5lc3RpbmdcbiAgICAmIC4jeyRyb3d9IHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtcm93LW5lc3QoJGdyaWQtY29sdW1uLWd1dHRlcik7XG5cbiAgICAgICYuI3skY29sbGFwc2V9IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBhbmRlZCAoZnVsbC13aWR0aCkgcm93XG4gICAgJi4jeyRleHBhbmRlZH0ge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xuXG4gICAgICAuI3skcm93fSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpub3QoLiN7JGV4cGFuZGVkfSkgLiN7JHJvd30ge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRncmlkLWNvbHVtbi1ndXR0ZXIpID09ICdtYXAnIHtcbiAgICAgIC8vIFN0YXRpYyAodW5yZXNwb25zaXZlKSByb3cgZ3V0dGVyc1xuICAgICAgLy9cbiAgICAgIEBlYWNoICRicmVha3BvaW50LCAkdmFsdWUgaW4gJGdyaWQtY29sdW1uLWd1dHRlciB7XG4gICAgICAgICYuI3skZ3V0dGVyfS0jeyRicmVha3BvaW50fSB7XG4gICAgICAgICAgPiAuI3skY29sdW1ufSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1ndXR0ZXIoJHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDb2x1bW5cbiAgLiN7JGNvbHVtbn0ge1xuICAgIEBpbmNsdWRlIGdyaWQtY29sO1xuXG4gICAgQGlmICRncmlkLWNvbHVtbi1hbGlnbi1lZGdlIHtcbiAgICAgICYuI3skZW5kfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLWVuZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDb2x1bW4gcm93XG4gIC8vIFRoZSBkb3VibGUgLnJvdyBjbGFzcyBpcyBuZWVkZWQgdG8gYnVtcCB1cCB0aGUgc3BlY2lmaWNpdHlcbiAgLiN7JGNvbHVtbn0uI3skcm93fS4jeyRyb3d9IHtcbiAgICBmbG9hdDogbm9uZTtcbiAgfVxuXG4gIC8vIFRvIHByb3Blcmx5IG5lc3QgYSBjb2x1bW4gcm93LCBwYWRkaW5nIGFuZCBtYXJnaW4gaXMgcmVtb3ZlZFxuICAuI3skcm93fSAuI3skY29sdW1ufS4jeyRyb3d9LiN7JHJvd30ge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1uLWNvdW50IHtcbiAgICAgIC8vIENvbHVtbiB3aWR0aFxuICAgICAgLiN7JC16Zi1zaXplfS0jeyRpfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXNpemUoJGkpO1xuICAgICAgfVxuXG4gICAgICAvLyBTb3VyY2Ugb3JkZXJpbmdcbiAgICAgIEBpZiAkaSA8ICRncmlkLWNvbHVtbi1jb3VudCB7XG4gICAgICAgIEBpZiAkcHVzaCB7XG4gICAgICAgICAgLiN7JC16Zi1zaXplfS0jeyRwdXNofS0jeyRpfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1wb3MoJGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkcHVsbCB7XG4gICAgICAgICAgLiN7JC16Zi1zaXplfS0jeyRwdWxsfS0jeyRpfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1wb3MoLSRpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gT2Zmc2V0c1xuICAgICAgJG86ICRpIC0gMTtcblxuICAgICAgQGlmICRvZmZzZXQge1xuICAgICAgICAuI3skLXpmLXNpemV9LSN7JG9mZnNldH0tI3skb30ge1xuICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLW9mZigkbyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCbG9jayBncmlkXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkYmxvY2stZ3JpZC1tYXgge1xuICAgICAgLiN7JC16Zi1zaXplfS11cC0jeyRpfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtbGF5b3V0KCRpLCAnLiN7JGNvbHVtbn0nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIGNvbGxhcHNpbmdcbiAgICAuI3skLXpmLXNpemV9LSN7JGNvbGxhcHNlfSB7XG4gICAgICA+IC4jeyRjb2x1bW59IHsgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7IH1cblxuICAgICAgLiN7JHJvd30ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC4jeyRleHBhbmRlZH0uI3skcm93fSAuI3skLXpmLXNpemV9LSN7JGNvbGxhcHNlfS4jeyRyb3d9IHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tI3skdW5jb2xsYXBzZX0ge1xuICAgICAgPiAuI3skY29sdW1ufSB7IEBpbmNsdWRlIGdyaWQtY29sLWd1dHRlcigkLXpmLXNpemUpOyB9XG4gICAgfVxuXG4gICAgLy8gUG9zaXRpb25pbmdcbiAgICBAaWYgJGNlbnRlciB7XG4gICAgICAuI3skLXpmLXNpemV9LSN7JGNlbnRlcn0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1wb3MoY2VudGVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHdXR0ZXIgYWRqdXN0bWVudFxuICAgICQtZ3V0dGVyLXVucG9zLXNlbGVjdG9yOiAoXG4gICAgICBpZigkdW5jZW50ZXIsICcuI3skLXpmLXNpemV9LSN7JHVuY2VudGVyfScsIG51bGwpLFxuICAgICAgaWYoJHB1c2gsICcuI3skLXpmLXNpemV9LSN7JHB1c2h9LTAnLCBudWxsKSxcbiAgICAgIGlmKCRwdWxsLCAnLiN7JC16Zi1zaXplfS0jeyRwdWxsfS0wJywgbnVsbCksXG4gICAgKTtcbiAgICBAaWYgKCR1bmNlbnRlciBvciAkcHVzaCBvciAkcHVsbCkge1xuICAgICAgI3skLWd1dHRlci11bnBvcy1zZWxlY3Rvcn0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC11bnBvcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBCbG9jayBncmlkIGNvbHVtbnNcbiAgLiN7JGNvbHVtbn0tI3skYmxvY2t9IHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1tYXJnaW47XG4gIH1cblxuICBAaWYgJGNvbHVtbiA9PSAnY29sdW1uJyBhbmQgaGFzLXZhbHVlKCRncmlkLWNvbHVtbi1hbGlhcykge1xuICAgIC4jeyRncmlkLWNvbHVtbi1hbGlhc30ge1xuICAgICAgLy8gc2Fzcy1saW50OmRpc2FibGUtYmxvY2sgcGxhY2Vob2xkZXItaW4tZXh0ZW5kXG4gICAgICBAZXh0ZW5kIC5jb2x1bW47XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gU2l6ZXMgY2hpbGQgZWxlbWVudHMgc28gdGhhdCBgJG5gIG51bWJlciBvZiBpdGVtcyBhcHBlYXIgb24gZWFjaCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgZWxlbWVudHMgdG8gZGlzcGxheSBwZXIgcm93LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWycuY29sdW1uJ10gLSBTZWxlY3RvcihzKSB0byB1c2UgZm9yIGNoaWxkIGVsZW1lbnRzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRndXR0ZXJcbi8vLyAgIFRoZSBndXR0ZXIgdG8gYXBwbHkgdG8gY2hpbGQgZWxlbWVudHMuIEFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxuLy8vICAgLSAkZ3JpZC1jb2x1bW4tZ3V0dGVyIHdpbGwgdXNlIHRoZSB2YWx1ZXMgaW4gdGhlICRncmlkLWNvbHVtbi1ndXR0ZXIgbWFwLCBpbmNsdWRpbmcgYnJlYWtwb2ludCBzaXplcy5cbi8vLyAgIC0gQSBmaXhlZCBudW1lcmljIHZhbHVlIHdpbGwgYXBwbHkgdGhpcyBndXR0ZXIgdG8gYWxsIGJyZWFrcG9pbnRzLlxuQG1peGluIGdyaWQtbGF5b3V0KFxuICAkbixcbiAgJHNlbGVjdG9yOiAnLmNvbHVtbicsXG4gICRndXR0ZXI6IG51bGxcbikge1xuICAmID4gI3skc2VsZWN0b3J9IHtcbiAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xuICAgIHdpZHRoOiBwZXJjZW50YWdlKDEvJG4pO1xuXG4gICAgLy8gSWYgYSAkZ3V0dGVyIHZhbHVlIGlzIHBhc3NlZFxuICAgIEBpZigkZ3V0dGVyKSB7XG4gICAgICAvLyBHdXR0ZXJzXG4gICAgICBAaWYgdHlwZS1vZigkZ3V0dGVyKSA9PSAnbWFwJyB7XG4gICAgICAgIEBlYWNoICRicmVha3BvaW50LCAkdmFsdWUgaW4gJGd1dHRlciB7XG4gICAgICAgICAgJHBhZGRpbmc6IHJlbS1jYWxjKCR2YWx1ZSkgLyAyO1xuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2UgaWYgdHlwZS1vZigkZ3V0dGVyKSA9PSAnbnVtYmVyJyBhbmQgc3RyaXAtdW5pdCgkZ3V0dGVyKSA+IDAge1xuICAgICAgICAkcGFkZGluZzogcmVtLWNhbGMoJGd1dHRlcikgLyAyO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm50aC1vZi10eXBlKDFuKSB7XG4gICAgICBjbGVhcjogbm9uZTtcbiAgICB9XG5cbiAgICAmOm50aC1vZi10eXBlKCN7JG59bisxKSB7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgZXh0cmEgQ1NTIHRvIGJsb2NrIGdyaWQgY2hpbGRyZW4gc28gdGhlIGxhc3QgaXRlbXMgaW4gdGhlIHJvdyBjZW50ZXIgYXV0b21hdGljYWxseS4gQXBwbHkgdGhpcyB0byB0aGUgY29sdW1ucywgbm90IHRoZSByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgaXRlbXMgdGhhdCBhcHBlYXIgaW4gZWFjaCByb3cuXG5AbWl4aW4gZ3JpZC1sYXlvdXQtY2VudGVyLWxhc3QoJG4pIHtcbiAgQGZvciAkaSBmcm9tIDEgdG8gJG4ge1xuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICY6bnRoLWNoaWxkKCN7JG59bisxKTpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICgxMDAgLSAxMDAvJG4gKiAkaSkgLyAyICogMSU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICY6bnRoLWNoaWxkKCN7JG59bisxKTpudGgtbGFzdC1jaGlsZCgjeyRpfSkge1xuICAgICAgICBtYXJnaW4tbGVmdDogKDEwMCAtIDEwMC8kbiAqICRpKSAvIDIgKiAxJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmbGV4LWdyaWRcbi8vLy9cblxuLy8vIENyZWF0ZXMgYSBjb250YWluZXIgZm9yIGEgZmxleCBncmlkIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxMaXN0fSAkYmVoYXZpb3IgW251bGxdXG4vLy8gICBNb2RpZmljYXRpb25zIHRvIHRoZSBkZWZhdWx0IGdyaWQgc3R5bGVzLiBgbmVzdGAgaW5kaWNhdGVzIHRoZSByb3cgd2lsbCBiZSBwbGFjZWQgaW5zaWRlIGFub3RoZXIgcm93LiBgY29sbGFwc2VgIGluZGljYXRlcyB0aGF0IHRoZSBjb2x1bW5zIGluc2lkZSB0aGlzIHJvdyB3aWxsIG5vdCBoYXZlIHBhZGRpbmcuIGBuZXN0IGNvbGxhcHNlYCBjb21iaW5lcyBib3RoIGJlaGF2aW9ycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbJGdyaWQtcm93LXdpZHRoXSBNYXhpbXVtIHNpemUgb2YgdGhlIHJvdy4gU2V0IHRvIGBleHBhbmRgIHRvIG1ha2UgdGhlIHJvdyB0YWtpbmcgdGhlIGZ1bGwgd2lkdGguXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zIFtudWxsXSAtIE51bWJlciBvZiBjb2x1bW5zIHRvIHVzZSBmb3IgdGhpcyByb3cuIElmIHNldCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSwgdGhlIGdsb2JhbCBjb2x1bW4gY291bnQgd2lsbCBiZSB1c2VkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGJhc2UgW3RydWVdIC0gU2V0IHRvIGBmYWxzZWAgdG8gcHJldmVudCBiYXNpYyBzdHlsZXMgZnJvbSBiZWluZyBvdXRwdXQuIFVzZWZ1bCBpZiB5b3UncmUgY2FsbGluZyB0aGlzIG1peGluIG9uIHRoZSBzYW1lIGVsZW1lbnQgdHdpY2UsIGFzIGl0IHByZXZlbnRzIGR1cGxpY2F0ZSBDU1Mgb3V0cHV0LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHdyYXAgW3RydWVdIC0gU2V0IHRvIGBmYWxzZWAgdG8gaGF2ZSByb3cgd3JhcHBpbmcgYmVoYXZpb3Igc2V0IHRvIG5vd3JhcFxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gR3V0dGVyIG1hcCBvciBzaW5nbGUgdmFsdWUgdG8gdXNlIHdoZW4gaW52ZXJ0aW5nIG1hcmdpbnMsIGluIGNhc2UgdGhlIHJvdyBpcyBuZXN0ZWQuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXG5AbWl4aW4gZmxleC1ncmlkLXJvdyhcbiAgJGJlaGF2aW9yOiBudWxsLFxuICAkc2l6ZTogJGdyaWQtcm93LXdpZHRoLFxuICAkY29sdW1uczogbnVsbCxcbiAgJGJhc2U6IHRydWUsXG4gICR3cmFwOiB0cnVlLFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gICRtYXJnaW46IGF1dG87XG4gICR3cmFwOiBpZigkd3JhcCwgd3JhcCwgbm93cmFwKTtcblxuICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBuZXN0KSAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1uZXN0KCRndXR0ZXJzKTtcblxuICAgIEBpZiBpbmRleCgkYmVoYXZpb3IsIGNvbGxhcHNlKSAhPSBudWxsIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZSgkc2l6ZSk7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG5cbiAgQGlmICRiYXNlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93ICR3cmFwO1xuICB9XG5cbiAgQGlmICRjb2x1bW5zICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGdyaWQtY29udGV4dCgkY29sdW1ucywgJGJhc2UpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQ2FsY3VsYXRlcyB0aGUgYGZsZXhgIHByb3BlcnR5IGZvciBhIGZsZXggZ3JpZCBjb2x1bW4uIEl0IGFjY2VwdHMgYWxsIG9mIHRoZSBzYW1lIHZhbHVlcyBhcyB0aGUgYmFzaWMgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIHR3byBleHRyYXM6XG4vLy8gICAtIGBleHBhbmRgICh0aGUgZGVmYXVsdCkgd2lsbCBtYWtlIHRoZSBjb2x1bW4gZXhwYW5kIHRvIGZpbGwgc3BhY2UuXG4vLy8gICAtIGBzaHJpbmtgIHdpbGwgbWFrZSB0aGUgY29sdW1uIGNvbnRyYWN0LCBzbyBpdCBvbmx5IHRha2VzIHVwIHRoZSBob3Jpem9udGFsIHNwYWNlIGl0IG5lZWRzLlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgW2V4cGFuZF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLlxuQGZ1bmN0aW9uIGZsZXgtZ3JpZC1jb2x1bW4oJGNvbHVtbnM6IGV4cGFuZCkge1xuICAkZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcblxuICBAaWYgJGNvbHVtbnMgPT0gc2hyaW5rIHtcbiAgICAkZmxleDogMCAwIGF1dG87XG4gIH1cbiAgQGVsc2UgaWYgJGNvbHVtbnMgIT0gZXhwYW5kIHtcbiAgICAkZmxleDogMCAwIGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcbiAgfVxuXG4gIEByZXR1cm4gJGZsZXg7XG59XG5cbi8vLyBDcmVhdGVzIGEgY29sdW1uIGZvciBhIGZsZXggZ3JpZC4gQnkgZGVmYXVsdCwgdGhlIGNvbHVtbiB3aWxsIHN0cmV0Y2ggdG8gdGhlIGZ1bGwgd2lkdGggb2YgaXRzIGNvbnRhaW5lciwgYnV0IHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBzaXppbmcgY2xhc3Nlcywgb3IgYnkgdXNpbmcgdGhlIGB1bnN0YWNrYCBjbGFzcyBvbiB0aGUgcGFyZW50IGZsZXggcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgW2V4cGFuZF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGZsZXgtZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMgd2lkdGguIFNlZSB0aGUgYGdyaWQtY29sdW1uLWd1dHRlcmAgbWl4aW4uXG5AbWl4aW4gZmxleC1ncmlkLWNvbHVtbihcbiAgJGNvbHVtbnM6IGV4cGFuZCxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICAvLyBCYXNlIHByb3BlcnRpZXNcbiAgQGluY2x1ZGUgZmxleC1ncmlkLXNpemUoJGNvbHVtbnMpO1xuXG4gIC8vIEd1dHRlcnNcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKCRndXR0ZXJzOiAkZ3V0dGVycyk7XG5cbiAgLy8gZml4ZXMgcmVjZW50IENocm9tZSB2ZXJzaW9uIG5vdCBsaW1pdGluZyBjaGlsZCB3aWR0aFxuICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNDkzNDU4Ni93aGl0ZS1zcGFjZS1ub3dyYXAtYW5kLWZsZXhib3gtZGlkLW5vdC13b3JrLWluLWNocm9tZVxuICBAaWYgJGNvbHVtbnMgPT0gZXhwYW5kIHtcbiAgICBtaW4td2lkdGg6IDA7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBibG9jayBncmlkIGZvciBhIGZsZXggZ3JpZCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgY29sdW1ucyB0byBkaXNwbGF5IG9uIGVhY2ggcm93LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgLSBTZWxlY3RvciB0byB1c2UgdG8gdGFyZ2V0IGNvbHVtbnMgd2l0aGluIHRoZSByb3cuXG5AbWl4aW4gZmxleC1ncmlkLWxheW91dChcbiAgJG4sXG4gICRzZWxlY3RvcjogJy5jb2x1bW4nXG4pIHtcbiAgZmxleC13cmFwOiB3cmFwO1xuXG4gID4gI3skc2VsZWN0b3J9IHtcbiAgICAkcGN0OiBwZXJjZW50YWdlKDEvJG4pO1xuXG4gICAgZmxleDogMCAwICRwY3Q7XG4gICAgbWF4LXdpZHRoOiAkcGN0O1xuICB9XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSB3aWR0aCBmbGV4IGdyaWQgY29sdW1uLlxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFtleHBhbmRdIC0gV2lkdGggb2YgdGhlIGNvbHVtbi4gUmVmZXIgdG8gdGhlIGBmbGV4LWdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG5AbWl4aW4gZmxleC1ncmlkLXNpemUoJGNvbHVtbnM6IG51bGwpIHtcbiAgJGNvbHVtbnM6ICRjb2x1bW5zIG9yIGV4cGFuZDtcblxuICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCRjb2x1bW5zKTtcblxuICAvLyBtYXgtd2lkdGggZml4ZXMgSUUgMTAvMTEgbm90IHJlc3BlY3RpbmcgdGhlIGZsZXgtYmFzaXMgcHJvcGVydHlcbiAgQGlmICRjb2x1bW5zICE9IGV4cGFuZCBhbmQgJGNvbHVtbnMgIT0gc2hyaW5rIHtcbiAgICBtYXgtd2lkdGg6IGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcbiAgfVxufVxuXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZsZXgtZ3JpZCB7XG4gIC8vIFJvd1xuICAucm93IHtcbiAgICBAaW5jbHVkZSBmbGV4LWdyaWQtcm93O1xuXG4gICAgLy8gTmVzdGluZyBiZWhhdmlvclxuICAgICYgLnJvdyB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtcm93KG5lc3QsICRiYXNlOiBmYWxzZSk7XG5cbiAgICAgICYuY29sbGFwc2Uge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4cGFuZGVkIHJvd1xuICAgICYuZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xuXG4gICAgICAucm93IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCguZXhwYW5kZWQpIC5yb3cge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xuICAgIH1cblxuICAgICYuY29sbGFwc2Uge1xuICAgICAgPiAuY29sdW1uIHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW5kbyBuZWdhdGl2ZSBtYXJnaW5zXG4gICAgLy8gRnJvbSBjb2xsYXBzZWQgY2hpbGRcbiAgICAmLmlzLWNvbGxhcHNlLWNoaWxkLFxuICAgICYuY29sbGFwc2UgPiAuY29sdW1uID4gLnJvdyB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gIH1cblxuICAvLyBDb2x1bW5cbiAgLmNvbHVtbiB7XG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbjtcbiAgfVxuXG4gIC8vIENvbHVtbiByb3dcbiAgLy8gVGhlIGRvdWJsZSAucm93IGNsYXNzIGlzIG5lZWRlZCB0byBidW1wIHVwIHRoZSBzcGVjaWZpY2l0eVxuICAuY29sdW1uLnJvdy5yb3cge1xuICAgIGZsb2F0OiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLy8gVG8gcHJvcGVybHkgbmVzdCBhIGNvbHVtbiByb3csIHBhZGRpbmcgYW5kIG1hcmdpbiBpcyByZW1vdmVkXG4gIC5yb3cgLmNvbHVtbi5yb3cucm93IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cblxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbi1jb3VudCB7XG4gICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgICAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigkaSk7XG4gICAgICAgIG1heC13aWR0aDogZ3JpZC1jb2x1bW4oJGkpO1xuICAgICAgfVxuXG4gICAgICAvLyBPZmZzZXRzXG4gICAgICAkbzogJGkgLSAxO1xuXG4gICAgICAuI3skLXpmLXNpemV9LW9mZnNldC0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLW9mZnNldCgkbyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmxvY2sgZ3JpZFxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGJsb2NrLWdyaWQtbWF4IHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtbGF5b3V0KCRpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJC16Zi1zaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgIC8vIFNpemluZyAoZXhwYW5kKVxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXNpemUpIHtcbiAgICAgICAgLiN7JC16Zi1zaXplfS1leHBhbmQge1xuICAgICAgICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBdXRvLXN0YWNraW5nL3Vuc3RhY2tpbmdcbiAgICAgIEBhdC1yb290ICh3aXRob3V0OiBtZWRpYSkge1xuICAgICAgICAucm93LiN7JC16Zi1zaXplfS11bnN0YWNrIHtcbiAgICAgICAgICA+IC5jb2x1bW4ge1xuICAgICAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigxMDAlKTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXNpemUpIHtcbiAgICAgICAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgY29sbGFwc2luZ1xuICAgIC4jeyQtemYtc2l6ZX0tY29sbGFwc2Uge1xuICAgICAgPiAuY29sdW1uIHsgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7IH1cbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LXVuY29sbGFwc2Uge1xuICAgICAgPiAuY29sdW1uIHsgQGluY2x1ZGUgZ3JpZC1jb2wtZ3V0dGVyKCQtemYtc2l6ZSk7IH1cbiAgICB9XG4gIH1cblxuICAvLyBTaXppbmcgKHNocmluaylcbiAgLnNocmluayB7XG4gICAgZmxleDogZmxleC1ncmlkLWNvbHVtbihzaHJpbmspO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIEJsb2NrIGdyaWQgY29sdW1uc1xuICAuY29sdW1uLWJsb2NrIHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1tYXJnaW47XG4gIH1cblxuICAuY29sdW1ucyB7XG4gICAgQGV4dGVuZCAuY29sdW1uOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHBsYWNlaG9sZGVyLWluLWV4dGVuZFxuXG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBFbmFibGVzIHRoZSBYWSBncmlkLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiR4eS1ncmlkOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gVGhlIG1heGltdW0gd2lkdGggb2YgYSBncmlkIGNvbnRhaW5lci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRncmlkLWNvbnRhaW5lcjogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIFRoZSBudW1iZXIgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBncmlkLlxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtY29sdW1uczogMTIgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgYW1vdW50IG9mIG1hcmdpbiBiZXR3ZWVuIGNlbGxzIGF0IGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgd2hlbiB1c2luZyB0aGUgbWFyZ2luIGdyaWQuIFRvIHVzZSBqdXN0IG9uZSBzaXplLCBzZXQgdGhlIHZhcmlhYmxlIHRvIGEgbnVtYmVyIGluc3RlYWQgb2YgYSBtYXAuXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXG4kZ3JpZC1tYXJnaW4tZ3V0dGVyczogKFxuICBzbWFsbDogMjBweCxcbiAgbWVkaXVtOiAzMHB4XG4pICFkZWZhdWx0O1xuXG4vLy8gVGhlIGFtb3VudCBvZiBwYWRkaW5nIGluIGNlbGxzIGF0IGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgd2hlbiB1c2luZyB0aGUgcGFkZGluZyBncmlkLiBUbyB1c2UganVzdCBvbmUgc2l6ZSwgc2V0IHRoZSB2YXJpYWJsZSB0byBhIG51bWJlciBpbnN0ZWFkIG9mIGEgbWFwLlxuLy8vIEB0eXBlIE1hcCB8IExlbmd0aFxuJGdyaWQtcGFkZGluZy1ndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyAhZGVmYXVsdDtcblxuLy8vIFRoZSBhbW91bnQgb2YgcGFkZGluZyB0byB1c2Ugd2hlbiBwYWRkaW5nIHRoZSBncmlkLWNvbnRhaW5lci5cbi8vLyBAdHlwZSBNYXAgfCBMZW5ndGhcbiRncmlkLWNvbnRhaW5lci1wYWRkaW5nOiAkZ3JpZC1wYWRkaW5nLWd1dHRlcnMgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbWF4aW11bSB3aWR0aCB0byBhcHBseSB0byBhIGdyaWQgY29udGFpbmVyXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ3JpZC1jb250YWluZXItbWF4OiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNlbGxzIGluIGFuIFhZIGJsb2NrIGdyaWQuXG4vLy8gQHR5cGUgTnVtYmVyXG4keHktYmxvY2stZ3JpZC1tYXg6IDggIWRlZmF1bHQ7XG5cbkBpbXBvcnQgJ2d1dHRlcnMnO1xuQGltcG9ydCAnZ3JpZCc7XG5AaW1wb3J0ICdjZWxsJztcbkBpbXBvcnQgJ2ZyYW1lJztcbkBpbXBvcnQgJ3Bvc2l0aW9uJztcbkBpbXBvcnQgJ2xheW91dCc7XG5AaW1wb3J0ICdjb2xsYXBzZSc7XG5AaW1wb3J0ICdjbGFzc2VzJztcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBDcmVhdGUgZ3V0dGVycyBmb3IgYSBjZWxsL2NvbnRhaW5lci5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgZWl0aGVyIG1hcmdpbiBvciBwYWRkaW5nLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbcmlnaHQgbGVmdF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkbmVnYXRpdmUgW2ZhbHNlXSAtIFdoZXRoZXIgdG8gYXBwbHkgdGhlIGd1dHRlciBhcyBhIG5lZ2F0aXZlIHZhbHVlLiBDb21tb25seSB1c2VkIGZvciBuZXN0ZWQgZ3JpZHMuXG5AbWl4aW4geHktZ3V0dGVycyhcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogcmlnaHQgbGVmdCxcbiAgJG5lZ2F0aXZlOiBmYWxzZVxuKSB7XG4gICRvcGVyYXRvcjogaWYoJG5lZ2F0aXZlLCAnLScsICcnKTtcblxuICAvLyBJZiB3ZSBoYXZlIGRlY2xhcmVkIG5lZ2F0aXZlIGd1dHRlcnMsIGZvcmNlIHR5cGUgdG8gYG1hcmdpbi5cbiAgJGd1dHRlci10eXBlOiBpZigkbmVnYXRpdmUsICdtYXJnaW4nLCAkZ3V0dGVyLXR5cGUpO1xuXG4gIC8vIE91dHB1dCBvdXIgbWFyZ2luIGd1dHRlcnMuXG4gIEBpZiAodHlwZS1vZigkZ3V0dGVycykgPT0gJ21hcCcpIHtcbiAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZShhdXRvLCAkZ3V0dGVycykge1xuICAgICAgJGd1dHRlcjogcmVtLWNhbGMoJC16Zi1icC12YWx1ZSkgLyAyO1xuXG4gICAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBndXR0ZXIgcG9zaXRpb25cbiAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgI3skZ3V0dGVyLXR5cGV9LSN7JHZhbHVlfTogdW5xdW90ZShcIiN7JG9wZXJhdG9yfSN7JGd1dHRlcn1cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICh0eXBlLW9mKCRndXR0ZXJzKSA9PSAnbnVtYmVyJykge1xuICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXJzKSAvIDI7XG5cbiAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBndXR0ZXIgcG9zaXRpb25cbiAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAjeyRndXR0ZXItdHlwZX0tI3skdmFsdWV9OiB1bnF1b3RlKFwiI3skb3BlcmF0b3J9I3skZ3V0dGVyfVwiKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBDcmVhdGVzIGEgbWF4IHdpZHRoIGNvbnRhaW5lciwgZGVzaWduZWQgdG8gaG91c2UgeW91ciBncmlkIGNvbnRlbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFskZ3JpZC1jb250YWluZXJdIC0gYSB3aWR0aCB0byBsaW1pdCB0aGUgY29udGFpbmVyIHRvLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGluZyBbJGdyaWQtY29udGFpbmVyLXBhZGRpbmddIC0gcGFkZGluZ3Mgb2YgdGhlIGNvbnRhaW5lci5cbkBtaXhpbiB4eS1ncmlkLWNvbnRhaW5lcihcbiAgJHdpZHRoOiAkZ3JpZC1jb250YWluZXIsXG4gICRwYWRkaW5nOiAkZ3JpZC1jb250YWluZXItcGFkZGluZ1xuKSB7XG4gIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRwYWRkaW5nLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuXG4gIG1heC13aWR0aDogJHdpZHRoO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGNvbnRhaW5lciBmb3IgeW91ciBmbGV4IGNlbGxzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyZWN0aW9uIFtob3Jpem9udGFsXSAtIEVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGRpcmVjdGlvbiBvZiBjZWxscyB3aXRoaW4uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkd3JhcCBbdHJ1ZV0gLSBJZiB0aGUgY2VsbHMgd2l0aGluIHNob3VsZCB3cmFwIG9yIG5vdC5cbkBtaXhpbiB4eS1ncmlkKFxuICAkZGlyZWN0aW9uOiBob3Jpem9udGFsLFxuICAkd3JhcDogdHJ1ZVxuKSB7XG4gICRkaXJlY3Rpb246IGlmKCRkaXJlY3Rpb24gPT0gJ2hvcml6b250YWwnLCByb3csIGNvbHVtbik7XG4gICR3cmFwOiBpZigkd3JhcCwgd3JhcCwgbm93cmFwKTtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6ICRkaXJlY3Rpb24gJHdyYXA7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLy8gUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQ1NTIGZsZXggdmFsdWUgZm9yIGEgY2VsbCBiYXNlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIEFjY2VwdHMgYGZ1bGxgLCBgYXV0b2AsIGBzaHJpbmtgLCBgZ3Jvd2AsIG9yIGFueSBvdGhlciB2YWx1ZSByZXByZXNlbnRpbmcgYSBjZWxsIHNpemUgKGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBgc2hyaW5rYCkuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gVGhlIGNlbGwgZmxleCBwcm9wZXJ0eSB2YWx1ZS5cbkBmdW5jdGlvbiB4eS1jZWxsLWJhc2UoJHNpemU6IGZ1bGwpIHtcbiAgQGlmICgkc2l6ZSA9PSAnYXV0bycpIHtcbiAgICBAcmV0dXJuIDEgMSAwcHg7XG4gIH1cbiAgQGVsc2UgaWYgKCRzaXplID09ICdncm93Jykge1xuICAgIEByZXR1cm4gMSAwIGF1dG87XG4gIH1cbiAgQGVsc2UgaWYgKCRzaXplID09ICdzaHJpbmsnIG9yICRzaXplID09ICdmdWxsJyBvciB6Zi1pcy1mcmFjdGlvbigkc2l6ZSwgJGFsbG93LW5vLWRlbm9taW5hdG9yOiB0cnVlKSkge1xuICAgIEByZXR1cm4gMCAwIGF1dG87XG4gIH1cbiAgQHJldHVybiBudWxsO1xufVxuXG4vLy8gQ2FsY3VsYXRlIHRoZSBzaXplIG9mIGEgY2VsbCBndXR0ZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiBgYXV0b2AsIHJldHVybnMgdGhlIHJlc3BvbnNpdmUgZ3V0dGVycyBtYXAgYCRndXR0ZXJzYC4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcnxNYXB9IFRoZSBjZWxsIGd1dHRlciBzaXplIG9yIHRoZSByZXNwb25zaXZlIGd1dHRlcnMgbWFwLlxuQGZ1bmN0aW9uIHh5LWNlbGwtZ3V0dGVycyhcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkYnJlYWtwb2ludDogbnVsbFxuKSB7XG4gIC8vIEZvciBgYXV0b2AsIHJldHVybnMgdGhlIHJlc3BvbnNpdmUgbWFwIGAkZ3V0dGVyc2AuXG4gIEBpZiAoJGJyZWFrcG9pbnQgPT0gJ2F1dG8nKSB7XG4gICAgQHJldHVybiAkZ3V0dGVycztcbiAgfVxuXG4gIC8vIFVzZSB0aGUgY29udGV4dHVhbCBicmVha3BvaW50IGJ5IGRlZmF1bHQuXG4gICRicmVha3BvaW50OiAtemYtY3VycmVudC1icmVha3BvaW50KCRicmVha3BvaW50KTtcblxuICBAaWYgKCRicmVha3BvaW50KSB7XG4gICAgQHJldHVybiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkLXpmLXplcm8tYnJlYWtwb2ludCkgb3IgMDtcbiAgfVxufVxuXG4vLy8gUmV0dXJucyB0aGUgcGVyY2VudGFnZSBzaXplIG9mIGEgY2VsbC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRzaXplIFskZ3JpZC1jb2x1bW5zXSAtIFNpemUgdG8gbWFrZSB0aGUgY2VsbC4gWW91IGNhbiBwYXNzIGEgdmFsdWUgaW4gbXVsdGlwbGUgZm9ybWF0cywgc3VjaCBhcyBgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8zYC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFNpemUgb2YgdGhlIGNlbGwgKGluIHBlcmNlbnQpLlxuQGZ1bmN0aW9uIHh5LWNlbGwtc2l6ZShcbiAgJHNpemU6ICRncmlkLWNvbHVtbnNcbikge1xuICBAcmV0dXJuIGZyYWN0aW9uLXRvLXBlcmNlbnRhZ2UoJHNpemUsICRkZW5vbWluYXRvcjogJGdyaWQtY29sdW1ucyk7XG59XG5cbi8vLyBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBDU1MgdmFsdWUgZm9yIGEgY2VsbCBzaXplLlxuLy8vXG4vLy8gR3V0dGVycy1yZWxhdGVkIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgZm9yIGNlbGxzIHdpdGggbWFyZ2luIGd1dHRlcnMgKGJ5IGRlZmF1bHQpIGFzIHRoZSBndXR0ZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHdpZHRoLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBDYW4gYmUgYGZ1bGxgLCBgYXV0b2AsIGBzaHJpbmtgIG9yIGFueSBmcmFjdGlvbiBsaWtlIGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAsIGBwYWRkaW5nYCBvciBgbm9uZWAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgYGF1dG9gLCByZXR1cm5zIGEgbWFwIG9mIHNpemVzIGFkYXB0ZWQgdG8gcmVzcG9uc2l2ZSBndXR0ZXJzLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfFN0cmluZ3xNYXB9IFRoZSBjZWxsIHNpemluZyBwcm9wZXJ0eSB2YWx1ZSwgb3IgYSByZXNwb25zaXZlIG1hcCBvZiB0aGVtLlxuQGZ1bmN0aW9uIHh5LWNlbGwtc2l6ZS1jc3MoXG4gICRzaXplOiBmdWxsLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkYnJlYWtwb2ludDogbnVsbFxuKSB7XG4gICRtYXJnaW4tZ3V0dGVyOiAwO1xuXG4gIEBpZiAoJHNpemUgPT0gJ2F1dG8nIG9yICRzaXplID09ICdzaHJpbmsnKSB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG5cbiAgLy8gRm9yIGNlbGxzIHdpdGggbWFyZ2luIGd1dHRlcnMsIHRoZSBndXR0ZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHdpZHRoLlxuICBAaWYgKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xuICAgICRtYXJnaW4tZ3V0dGVyOiB4eS1jZWxsLWd1dHRlcnMoJGd1dHRlcnMsICRicmVha3BvaW50KTtcbiAgICBAaWYgKCRtYXJnaW4tZ3V0dGVyID09IG51bGwpIHtcbiAgICAgIEBlcnJvciAneHktY2VsbC1zaXplOiBubyBndXR0ZXJzIHdlcmUgZm91bmQgaW4gYCRndXR0ZXJzYCBmb3IgXCIkYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIic7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBjZWxsIHNpemUgKG51bWJlcilcbiAgJHNpemUtcmF3OiBpZigkc2l6ZSA9PSAnZnVsbCcsIDEwMCUsIHh5LWNlbGwtc2l6ZSgkc2l6ZSkpO1xuXG4gIC8vIENhbGN1bGF0ZSB0aGUgY2VsbCBDU1Mgc2l6ZSBpbmNsdWRpbmcgZ3V0dGVycyAoc3RyaW5nKVxuICAvLyBJZiB0aGUgY2VsbCBoYXMgcmVzcG9uc2l2ZSBtYXJnaW4gZ3V0dGVycywgcmV0dXJuIGEgcmVzcG9uc2l2ZSBtYXAgb2Ygc2l6ZXMuXG4gIEBpZiB0eXBlLW9mKCRtYXJnaW4tZ3V0dGVyKSA9PSAnbWFwJyB7XG4gICAgJHJlc3BvbnNpdmUtY3NzLXNpemVzOiAoKTtcblxuICAgIEBlYWNoICRicCwgJG1nIGluICRtYXJnaW4tZ3V0dGVyIHtcbiAgICAgICRzaXplLWNzczogaWYoJG1nID09IDAsICRzaXplLXJhdywgY2FsYygjeyRzaXplLXJhd30gLSAje3JlbS1jYWxjKCRtZyl9KSk7XG4gICAgICAkcmVzcG9uc2l2ZS1jc3Mtc2l6ZXM6IG1hcC1tZXJnZSgkcmVzcG9uc2l2ZS1jc3Mtc2l6ZXMsICgkYnA6ICRzaXplLWNzcykpO1xuICAgIH1cblxuICAgIEByZXR1cm4gJHJlc3BvbnNpdmUtY3NzLXNpemVzO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIGEgc2luZ2xlIENTUyBzaXplLlxuICBAZWxzZSB7XG4gICAgJGNzcy1zaXplOiBpZigkbWFyZ2luLWd1dHRlciA9PSAwLCAkc2l6ZS1yYXcsIGNhbGMoI3skc2l6ZS1yYXd9IC0gI3tyZW0tY2FsYygkbWFyZ2luLWd1dHRlcil9KSk7XG4gICAgQHJldHVybiAkY3NzLXNpemU7XG4gIH1cbn1cblxuLy8vIFNldHMgYmFzZSBmbGV4IHByb3BlcnRpZXMgZm9yIGNlbGxzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIEFjY2VwdHMgYGZ1bGxgLCBgYXV0b2AsIGBzaHJpbmtgLCBgZ3Jvd2AsIG9yIGFueSBvdGhlciB2YWx1ZSByZXByZXNlbnRpbmcgYSBjZWxsIHNpemUgKGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBgc2hyaW5rYCkuXG5AbWl4aW4geHktY2VsbC1iYXNlKCRzaXplOiBmdWxsKSB7XG4gICRiYXNlOiB4eS1jZWxsLWJhc2UoJHNpemUpO1xuXG4gIGZsZXg6ICN7JGJhc2V9O1xuXG4gIC8vIFNldCBiYXNlIHN0eWxlcyBmb3IgXCJmdWxsXCIgb25seVxuICBAaWYoJHNpemUgPT0gJ2Z1bGwnKSB7XG4gICAgbWluLWhlaWdodDogMHB4O1xuICAgIG1pbi13aWR0aDogMHB4O1xuICB9XG59XG5cbi8vLyBSZXNldHMgYSBjZWxscyB3aWR0aCAob3IgaGVpZ2h0IGlmIHZlcnRpY2FsIGlzIHRydWUpIGFzIHdlbGwgYXMgc3RyaXBzIGl0cyBndXR0ZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuQG1peGluIHh5LWNlbGwtcmVzZXQoJHZlcnRpY2FsOiB0cnVlKSB7XG4gICRkaXJlY3Rpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCBoZWlnaHQsIHdpZHRoKTtcbiAgI3skZGlyZWN0aW9ufTogYXV0bztcbiAgbWF4LSN7JGRpcmVjdGlvbn06IG5vbmU7XG59XG5cbi8vLyBTZXRzIHNpemluZyBwcm9wZXJ0aWVzIGZvciBjZWxscy5cbi8vL1xuLy8vIEd1dHRlcnMtcmVsYXRlZCBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIGZvciBjZWxscyB3aXRoIG1hcmdpbiBndXR0ZXJzIChieSBkZWZhdWx0KSBhcyB0aGUgZ3V0dGVyIGlzIGluY2x1ZGVkIGluIHRoZSB3aWR0aC5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCAoMTAwJSB3aWR0aCksIGBhdXRvYCAodXNlIGFsbCBhdmFpbGFibGUgc3BhY2UpLCBgc2hyaW5rYCAodXNlIG9ubHkgdGhlIHJlcXVpcmVkIHNwYWNlKSBvciBhbnkgZnJhY3Rpb24gKGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLi4uKS5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGBtYXJnaW5gLCBgcGFkZGluZ2Agb3IgYG5vbmVgLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIGBhdXRvYCwgZ2VuZXJhdGVzIHNpemVzIGFkYXB0ZWQgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycy4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbkBtaXhpbiB4eS1jZWxsLXNpemUoXG4gICRzaXplOiBmdWxsLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRzaXplczogeHktY2VsbC1zaXplLWNzcygkc2l6ZSwgJGd1dHRlcnMsICRndXR0ZXItdHlwZSwgJGJyZWFrcG9pbnQpO1xuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgaGVpZ2h0LCB3aWR0aCk7XG5cbiAgQGlmICh0eXBlLW9mKCRzaXplcykgPT0gJ21hcCcpIHtcbiAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZShhdXRvLCAkc2l6ZXMpIHtcbiAgICAgICN7JGRpcmVjdGlvbn06ICQtemYtYnAtdmFsdWU7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAjeyRkaXJlY3Rpb259OiAkc2l6ZXM7XG4gIH1cbn1cblxuLy8vIFNldHMgZ3V0dGVycyBwcm9wZXJ0aWVzIGZvciBjZWxscy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAsIGBwYWRkaW5nYCBvciBgbm9uZWAuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtudWxsXSAtIFRoZSBwb3NpdGlvbiB0byBhcHBseSBndXR0ZXJzIHRvLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi4gQnkgZGVmYXVsdCBgcmlnaHQgbGVmdGAgZm9yIGhvcml6b250YWwgY2VsbHMgYW5kIGB0b3AgYm90dG9tYCBmb3IgdmVydGljYWwgY2VsbHMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgYGF1dG9gLCBnZW5lcmF0ZXMgcmVzcG9uc2l2ZSBndXR0ZXJzLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIERpcmVjdGlvbiBvZiB0aGUgZ3V0dGVycyB0byBvdXRwdXQuIFNlZSBgJGd1dHRlci1wb3NpdGlvbmAuXG5AbWl4aW4geHktY2VsbC1ndXR0ZXJzKFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiBudWxsLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gIC8vIEdldCB0aGUgZGVmYXVsdCBndXR0ZXIgcG9zaXRpb24gYWNjb3JkaW5nIHRvIGNlbGwgZGlyZWN0aW9uXG4gIEBpZigkZ3V0dGVyLXBvc2l0aW9uID09IG51bGwpIHtcbiAgICAkZ3V0dGVyLXBvc2l0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgdG9wIGJvdHRvbSwgbGVmdCByaWdodCk7XG4gIH1cblxuICAvLyBHZXQgdGhlIGd1dHRlciB3aWR0aCBmb3IgdGhpcyBicmVha3BvaW50XG4gICRndXR0ZXItd2lkdGg6IHh5LWNlbGwtZ3V0dGVycygkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICBAaWYgKCRndXR0ZXItd2lkdGggPT0gbnVsbCkge1xuICAgIEBlcnJvciAneHktY2VsbC1ndXR0ZXJzOiBubyBndXR0ZXJzIHdlcmUgZm91bmQgaW4gYCRndXR0ZXJzYCBmb3IgXCIkYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIic7XG4gIH1cblxuICBAaWYgKCRndXR0ZXItdHlwZSBhbmQgJGd1dHRlci10eXBlICE9IG5vbmUpIHtcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXItd2lkdGgsICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbik7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBjZWxsIGZvciB5b3VyIGdyaWQuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIENhbiBiZSBgZnVsbGAgKDEwMCUgd2lkdGgpLCBgYXV0b2AgKHVzZSBhbGwgYXZhaWxhYmxlIHNwYWNlKSwgYHNocmlua2AgKHVzZSBvbmx5IHRoZSByZXF1aXJlZCBzcGFjZSkgb3IgYW55IGZyYWN0aW9uIChgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8yYC4uLikuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbbnVsbF0gLSBbREVQUkVDQVRFRF0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCwgYHBhZGRpbmdgIG9yIGBub25lYC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW251bGxdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLiBCeSBkZWZhdWx0IGByaWdodCBsZWZ0YCBmb3IgaG9yaXpvbnRhbCBjZWxscyBhbmQgYHRvcCBib3R0b21gIGZvciB2ZXJ0aWNhbCBjZWxscy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiBgYXV0b2AsIGdlbmVyYXRlcyByZXNwb25zaXZlIGd1dHRlcnMuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG4vLy8gQHBhcmFtIHtMaXN0fSAkb3V0cHV0IFsoYmFzZSBzaXplIGd1dHRlcnMpXSAtIENlbGwgcGFydHMgdG8gb3V0cHV0LiBZb3Ugd2lsbCBuZWVkIHRvIGdlbmVyYXRlIG90aGVycyBwYXJ0cyBvZiB0aGUgY2VsbCBzZXBlcmF0ZWx5LCBpdCBtYXkgbm90IHdvcmsgcHJvcGVybHkgb3RoZXJ3aXNlLlxuQG1peGluIHh5LWNlbGwoXG4gICRzaXplOiBmdWxsLFxuICAkZ3V0dGVyLW91dHB1dDogbnVsbCxcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogbnVsbCxcbiAgJGJyZWFrcG9pbnQ6IG51bGwsXG4gICR2ZXJ0aWNhbDogZmFsc2UsXG4gICRvdXRwdXQ6IChiYXNlIHNpemUgZ3V0dGVycylcbikge1xuICAvLyBEZWZhdWx0IGZvciAkZ3V0dGVyLW91dHB1dFxuICBAaWYgKCRndXR0ZXItb3V0cHV0ICE9IG51bGwpIHtcbiAgICBAd2FybiAneHktY2VsbDogJGd1dHRlci1vdXRwdXQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBTZWUgbWlncmF0aW9uIG5vdGVzIGF0IGh0dHBzOi8vZ2l0LmlvL2ZvdW5kYXRpb24tNi02LTAnO1xuICAgIEBpZiAoJGd1dHRlci1vdXRwdXQgPT0gZmFsc2UpIHtcbiAgICAgICRvdXRwdXQ6IHNsLXJlbW92ZSgkb3V0cHV0LCBndXR0ZXJzKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKGluZGV4KCRvdXRwdXQsIGJhc2UpKSB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKCRzaXplKTtcbiAgfVxuICBAaWYgKGluZGV4KCRvdXRwdXQsIHNpemUpKSB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRzaXplLCAkZ3V0dGVycywgJGd1dHRlci10eXBlLCAkYnJlYWtwb2ludCwgJHZlcnRpY2FsKTtcbiAgfVxuICBAaWYgKGluZGV4KCRvdXRwdXQsIGd1dHRlcnMpKSB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1ndXR0ZXJzKCRndXR0ZXJzLCAkZ3V0dGVyLXR5cGUsICRndXR0ZXItcG9zaXRpb24sICRicmVha3BvaW50LCAkdmVydGljYWwpO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgc2luZ2xlIGJyZWFrcG9pbnQgc2l6ZWQgZ3JpZC4gVXNlZCB0byBnZW5lcmF0ZSBvdXIgZ3JpZCBjbGFzc2VzLlxuLy8vXG4vLy8gYHh5LWNlbGwtc3RhdGljKClgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC5cbi8vLyBVc2UgYHh5LWNlbGwoKWAgaW5zdGVhZCB3aXRoIGAkb3V0cHV0OiAoc2l6ZSBndXR0ZXJzKWAgdG8gbm90IGdlbmVyYXRlIHRoZSBjZWxsIGJhc2UuXG4vLy8gU2VlIG1pZ3JhdGlvbiBub3RlcyBhdCBodHRwczovL2dpdC5pby9mb3VuZGF0aW9uLTYtNi0wXG4vLy9cbi8vLyBAZGVwcmVjYXRlZCB2Ni42LjBcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCAoMTAwJSB3aWR0aCksIGBhdXRvYCAodXNlIGFsbCBhdmFpbGFibGUgc3BhY2UpLCBgc2hyaW5rYCAodXNlIG9ubHkgdGhlIHJlcXVpcmVkIHNwYWNlKSBvciBhbnkgZnJhY3Rpb24gKGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLi4uKS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRndXR0ZXItb3V0cHV0IFt0cnVlXSAtIFdoZXRoZXIgb3Igbm90IHRvIG91dHB1dCBndXR0ZXJzLiBBbHdheXMgYHRydWVgIGZvciBtYXJnaW4gZ3V0dGVycy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuQG1peGluIHh5LWNlbGwtc3RhdGljKFxuICAkc2l6ZTogZnVsbCxcbiAgJGd1dHRlci1vdXRwdXQ6IHRydWUsXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRicmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gIEB3YXJuICd4eS1jZWxsLXN0YXRpYygpIG1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIFwieHktY2VsbCgpXCIgaW5zdGVhZC4gU2VlIG1pZ3JhdGlvbiBub3RlcyBhdCBodHRwczovL2dpdC5pby9mb3VuZGF0aW9uLTYtNi0wJztcblxuICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICAkZ3V0dGVyLXBvc2l0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgdG9wIGJvdHRvbSwgbGVmdCByaWdodCk7XG5cbiAgJC1ndXR0ZXItb3V0cHV0OiBpZigkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicsIHRydWUsICRndXR0ZXItb3V0cHV0KTtcbiAgJC1ndXR0ZXItbWFyZ2luOiBpZigkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicsICRndXR0ZXIsIDApO1xuXG4gIEBpbmNsdWRlIC14eS1jZWxsLXByb3BlcnRpZXMoJHNpemUsICQtZ3V0dGVyLW1hcmdpbiwgJHZlcnRpY2FsKTtcbiAgQGlmICgkLWd1dHRlci1vdXRwdXQpIHtcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXIsICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbik7XG4gIH1cbn1cbiIsIi8vLyBNb2RpZmllcyBhIGdyaWQgdG8gZ2l2ZSBpdCBcImZyYW1lXCIgYmVoYXZpb3IgKG5vIG92ZXJmbG93LCBubyB3cmFwLCBzdHJldGNoIGJlaGF2aW9yKVxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIElzIGdyaWQgdmVydGljYWwgb3IgaG9yaXpvbnRhbC4gU2hvdWxkIG1hdGNoIGdyaWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkbmVzdGVkIFtmYWxzZV0gLSBJcyBncmlkIG5lc3RlZCBvciBub3QuIElmIG5lc3RlZCBpcyB0cnVlIHRoaXMgc2V0cyB0aGUgZnJhbWUgdG8gMTAwJSBoZWlnaHQsIG90aGVyd2lzZSB3aWxsIGJlIDEwMHZoLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgW251bGxdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtYmFzZSBbdHJ1ZV0gLSBJbmNsdWRlIHRoZSBiYXNlIHN0eWxlcyB0aGF0IGRvbid0IHZhcnkgcGVyIGJyZWFrcG9pbnQuXG5AbWl4aW4geHktZ3JpZC1mcmFtZShcbiAgJHZlcnRpY2FsOiBmYWxzZSxcbiAgJG5lc3RlZDogZmFsc2UsXG4gICRndXR0ZXJzOiBudWxsLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJGluY2x1ZGUtYmFzZTogdHJ1ZVxuKSB7XG5cbiAgQGlmICRpbmNsdWRlLWJhc2Uge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICB9XG5cbiAgQGlmICRicmVha3BvaW50ID09IG51bGwgYW5kIHR5cGUtb2YoJGd1dHRlcnMpID09ICdtYXAnIHtcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSgkdmVydGljYWwsICRuZXN0ZWQsICRndXR0ZXJzLCAkLXpmLXNpemUsIGZhbHNlKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIC8vIEdldCBvdXIgZ3V0dGVycyBpZiBhcHBsaWNhYmxlXG4gICAgJGd1dHRlcjogLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICRicmVha3BvaW50KTtcblxuICAgIC8vIElmIHdlIGhhdmUgYSBndXR0ZXIsIGFkZCBpdCB0byB0aGUgd2lkdGgvaGVpZ2h0XG4gICAgQGlmICRndXR0ZXIge1xuICAgICAgQGlmICR2ZXJ0aWNhbCA9PSB0cnVlIHtcbiAgICAgICAgJHVuaXQ6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdmgpO1xuICAgICAgICAkZ3V0dGVyOiByZW0tY2FsYygkZ3V0dGVyKTtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKCN7JHVuaXR9ICsgI3skZ3V0dGVyfSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHVuaXQ6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdncpO1xuICAgICAgICAkZ3V0dGVyOiByZW0tY2FsYygkZ3V0dGVyKTtcbiAgICAgICAgd2lkdGg6IGNhbGMoI3skdW5pdH0gKyAjeyRndXR0ZXJ9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICR2ZXJ0aWNhbCA9PSB0cnVlIHtcbiAgICAgICAgaGVpZ2h0OiBpZigkbmVzdGVkID09IHRydWUsIDEwMCUsIDEwMHZoKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICB3aWR0aDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2dyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBNb2RpZmllcyBhIGNlbGwgdG8gZ2l2ZSBpdCBcImJsb2NrXCIgYmVoYXZpb3IgKG92ZXJmbG93IGF1dG8sIGluZXJ0aWFsIHNjcm9sbGluZylcbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBJcyBncmlkIHZlcnRpY2FsIG9yIGhvcml6b250YWwuIFNob3VsZCBtYXRjaCBncmlkLlxuQG1peGluIHh5LWNlbGwtYmxvY2soXG4gICR2ZXJ0aWNhbDogZmFsc2Vcbikge1xuICAkcHJvcGVydHk6IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCAnb3ZlcmZsb3cteScsICdvdmVyZmxvdy14Jyk7XG5cbiAgQGlmICR2ZXJ0aWNhbCA9PSB0cnVlIHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgfSBAZWxzZSB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cblxuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyO1xufVxuXG4vLy8gQ29udGFpbmVyIGZvciBpbnNpZGUgYSBncmlkIGZyYW1lIGNvbnRhaW5pbmcgbXVsdGlwbGUgYmxvY2tzLiBUeXBpY2FsbHkgdXNlZFxuLy8vIGFzIGEgbW9kaWZpZXIgZm9yIGEgYC5jZWxsYCB0byBhbGxvdyB0aGUgY2VsbCB0byBwYXNzIGFsb25nIGZsZXggc2l6aW5nXG4vLy8gY29uc3RyYWludHMgLyBmcm9tIHBhcmVudHMgdG8gY2hpbGRyZW4uXG5AbWl4aW4geHktY2VsbC1ibG9jay1jb250YWluZXIoKSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG5cbiAgPiAuZ3JpZC14IHtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLy8gUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQ1NTIHZhbHVlIHRvIG9mZnNldCBhIGNlbGwuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFNpemUgdG8gb2Zmc2V0IGJ5LiBZb3UgY2FuIHBhc3MgaW4gYW55IHZhbHVlIGFjY2VwdGVkIGJ5IHRoZSBgeHktY2VsbCgpYCBtaXhpbiwgc3VjaCBhcyBgNmAsIGA1MCVgLCBvciBgMSBvZiAyYC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gTWFwIG9mIGd1dHRlcnMgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIFRoZSB0eXBlIG9mIGd1dHRlciB0byB1c2UuIENhbiBiZSBgbWFyZ2luYCBvciBgcGFkZGluZ2Bcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfFN0cmluZ30gVGhlIGNlbGwgb2Zmc2V0IHByb3BlcnR5IHZhbHVlLlxuQGZ1bmN0aW9uIHh5LWNlbGwtb2Zmc2V0KFxuICAkbixcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGJyZWFrcG9pbnQ6IG51bGxcbikge1xuICAkYnJlYWtwb2ludDogLXpmLWN1cnJlbnQtYnJlYWtwb2ludCgkYnJlYWtwb2ludCwgJGRlZmF1bHQ6ICQtemYtemVyby1icmVha3BvaW50KTtcbiAgJHNpemU6IHh5LWNlbGwtc2l6ZSgkbik7XG5cbiAgJG9mZnNldDogJHNpemU7XG4gIEBpZiAoJGd1dHRlci10eXBlID09ICdtYXJnaW4nKSB7XG4gICAgJGd1dHRlcjogcmVtLWNhbGMoeHktY2VsbC1ndXR0ZXJzKCRndXR0ZXJzLCAkYnJlYWtwb2ludCkgLyAyKTtcbiAgICAkb2Zmc2V0OiBpZigkZ3V0dGVyID09IDAsICRzaXplLCBjYWxjKCN7JHNpemV9ICsgI3skZ3V0dGVyfSkpO1xuICB9XG4gIEByZXR1cm4gJG9mZnNldDtcbn1cblxuLy8vIE9mZnNldHMgYSBjb2x1bW4gdG8gdGhlIHJpZ2h0L2JvdHRvbSBieSBgJG5gIGNvbHVtbnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFNpemUgdG8gb2Zmc2V0IGJ5LiBZb3UgY2FuIHBhc3MgaW4gYW55IHZhbHVlIGFjY2VwdGVkIGJ5IHRoZSBgeHktY2VsbCgpYCBtaXhpbiwgc3VjaCBhcyBgNmAsIGA1MCVgLCBvciBgMSBvZiAyYC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gTWFwIG9mIGd1dHRlcnMgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIFRoZSB0eXBlIG9mIGd1dHRlciB0byB1c2UuIENhbiBiZSBgbWFyZ2luYCBvciBgcGFkZGluZ2Bcbi8vLyBAcGFyYW0ge051bWJlcnxBcnJheXxLZXl3b3JkfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBCcmVha3BvaW50IHRvIHVzZSBmb3IgYCRndXR0ZXJzYC4gSXQgY2FuIGJlIGEgYnJlYWtwb2ludCBuYW1lLCBsaXN0IG9mIGJyZWFrcG9pbnRzIG9yIGBhdXRvYCBmb3IgYWxsIGJyZWFrcG9pbnRzLiBJZiBhIGxpc3QgaXMgZ2l2ZW4sIG1lZGlhLXF1ZXJpZXMgd2lsbCBiZSBnZW5lcmF0ZWQuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIFNldHMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgb2Zmc2V0LiBJZiBzZXQgdG8gdHJ1ZSB3aWxsIGFwcGx5IG1hcmdpbi10b3AgaW5zdGVhZC5cbkBtaXhpbiB4eS1jZWxsLW9mZnNldChcbiAkbixcbiAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gJGJyZWFrcG9pbnQ6IG51bGwsXG4gJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRicmVha3BvaW50OiAtemYtY3VycmVudC1icmVha3BvaW50KCRicmVha3BvaW50LCAkZGVmYXVsdDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpO1xuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwsICd0b3AnLCAkZ2xvYmFsLWxlZnQpO1xuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQtaW4oJGJyZWFrcG9pbnQsICRtZWRpYS1xdWVyaWVzOiAnZm9yLWxpc3RzJykge1xuICAgICRvZmZzZXQ6IHh5LWNlbGwtb2Zmc2V0KCRuLCAkZ3V0dGVycywgJGd1dHRlci10eXBlKTtcbiAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogI3skb2Zmc2V0fTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIFNpemVzIGNoaWxkIGVsZW1lbnRzIHNvIHRoYXQgYCRuYCBudW1iZXIgb2YgaXRlbXMgYXBwZWFyIG9uIGVhY2ggcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRpc3BsYXkgcGVyIHJvdy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFsnLmNlbGwnXSAtIFNlbGVjdG9yKHMpIHRvIHVzZSBmb3IgY2hpbGQgZWxlbWVudHMuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbbnVsbF0gLSBbREVQUkVDQVRFRF0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCwgYHBhZGRpbmdgIG9yIGBub25lYC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW251bGxdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLiBCeSBkZWZhdWx0IGByaWdodCBsZWZ0YCBmb3IgaG9yaXpvbnRhbCBjZWxscyBhbmQgYHRvcCBib3R0b21gIGZvciB2ZXJ0aWNhbCBjZWxscy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIGJyZWFrcG9pbnQgdG8gdXNlIGZvciB0aGUgY2VsbCBnZW5lcmF0aW9uLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuLy8vIEBwYXJhbSB7TGlzdH0gJG91dHB1dCBbKGJhc2Ugc2l6ZSBndXR0ZXJzKV0gLSBDZWxsIHBhcnRzIHRvIG91dHB1dC4gWW91IHdpbGwgbmVlZCB0byBnZW5lcmF0ZSBvdGhlcnMgcGFydHMgb2YgdGhlIGNlbGwgc2VwZXJhdGVseSwgaXQgbWF5IG5vdCB3b3JrIGNvcnJlY3RseSBvdGhlcndpc2UuXG5AbWl4aW4geHktZ3JpZC1sYXlvdXQoXG4gICRuLFxuICAkc2VsZWN0b3I6ICcuY2VsbCcsXG4gICRndXR0ZXItb3V0cHV0OiBudWxsLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiBudWxsLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZSxcbiAgJG91dHB1dDogKGJhc2Ugc2l6ZSBndXR0ZXJzKVxuKSB7XG4gICRzaXplOiBwZXJjZW50YWdlKDEvJG4pO1xuXG4gICYgPiAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwoJHNpemUsICRndXR0ZXItb3V0cHV0LCAkZ3V0dGVycywgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uLCAkYnJlYWtwb2ludCwgJHZlcnRpY2FsLCAkb3V0cHV0KTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIENvbGxhcHNlcyB0aGUgZ3JpZCBhIGNlbGxzIHdpdGhpbiBpdC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWy5jZWxsXSAtIFRoZSBjaGlsZCBlbGVtZW50IHRvIHJlbW92ZSB0aGUgZ3V0dGVyIGZyb20uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUaGUgdHlwZSBvZiBndXR0ZXIgdG8gcmVtb3ZlLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbcmlnaHQgbGVmdF0gLSBUaGUgcG9zaXRpb25zIHRvIHJlbW92ZSBndXR0ZXJzIGZyb20uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJG1pbi1icmVha3BvaW50IFskLXpmLXplcm8tYnJlYWtwb2ludF0gLSBNaW5pbXVtIGJyZWFrcG9pbnQgaW4gYCRicmVha3BvaW50LWNsYXNzZXNgIGZvciB3aGljaCB0byBjb2xsYXBzZSB0aGUgZ3V0dGVyLlxuQG1peGluIHh5LWdyaWQtY29sbGFwc2UoXG4gICRzZWxlY3RvcjogJy5jZWxsJyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRndXR0ZXItcG9zaXRpb246IHJpZ2h0IGxlZnQsXG4gICRtaW4tYnJlYWtwb2ludDogJC16Zi16ZXJvLWJyZWFrcG9pbnRcbikge1xuICAvLyBGaXJzdCwgbGV0cyBuZWdhdGUgYW55IG1hcmdpbnMgb24gdGhlIHRvcCBsZXZlbFxuICBAaWYgKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWluLWJyZWFrcG9pbnQpIHtcbiAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgbWFyZ2luLSN7JHZhbHVlfTogMDtcbiAgICAgIH1cblxuICAgICAgPiAjeyRzZWxlY3Rvcn0ge1xuICAgICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAgICAgbWFyZ2luLSN7JHZhbHVlfTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRleGNsdWRlZC1icHM6IC16Zi1icmVha3BvaW50cy1sZXNzLXRoYW4oJG1pbi1icmVha3BvaW50KTtcblxuICAgIC8vIE91dHB1dCBuZXcgd2lkdGhzIHRvIG5vdCBpbmNsdWRlIGd1dHRlcnNcbiAgICBAZWFjaCAkYnAgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaWYoc2wtY29udGFpbigkZXhjbHVkZWQtYnBzLCAkYnApKSB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1pbi1icmVha3BvaW50KSB7XG4gICAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAgICAgICAgID4gLiN7JGJwfS0jeyRpfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZSgkaSwgJGd1dHRlci10eXBlOiBub25lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicCkge1xuICAgICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgICAgICAgICA+IC4jeyRicH0tI3skaX0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJGksICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1pbi1icmVha3BvaW50KSB7XG4gICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAgIG1hcmdpbi0jeyR2YWx1ZX06IDA7XG4gICAgICB9XG5cbiAgICAgID4gI3skc2VsZWN0b3J9IHtcbiAgICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICAgIHBhZGRpbmctI3skdmFsdWV9OiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLyBNYXJnaW4gR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktYmFzZS1ncmlkLWNsYXNzZXMge1xuXG4gIC8vIEdyaWQgQ29udGFpbmVyXG4gIC5ncmlkLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgeHktZ3JpZC1jb250YWluZXI7XG5cbiAgICAmLmZsdWlkIHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29udGFpbmVyKDEwMCUpO1xuICAgIH1cblxuICAgICYuZnVsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbnRhaW5lcigxMDAlLCAwKTtcbiAgICB9XG4gIH1cblxuICAvLyBCYXNlIGdyaWQgc3R5bGVzXG4gIC5ncmlkLXgge1xuICAgIEBpbmNsdWRlIHh5LWdyaWQ7XG4gIH1cblxuICAuY2VsbCB7XG4gICAgQGluY2x1ZGUgeHktY2VsbChmdWxsLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuXG4gICAgJi5hdXRvIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShhdXRvKTtcbiAgICB9XG5cbiAgICAmLnNocmluayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2Uoc2hyaW5rKTtcbiAgICB9XG5cbiAgfVxuICAuZ3JpZC14IHtcbiAgICA+IC5hdXRvIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShhdXRvLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgIH1cblxuICAgID4gLnNocmluayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoc2hyaW5rLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEF1dG8gd2lkdGhcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAvLyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjay93b3JrYXJvdW5kLCBzZWUgdGhlc2UgaXNzdWVzICYgUFJzIGZvciB0aGUgYmFja3N0b3J5OlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzEwMjQ0XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMjIyIGFuZFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDE2NFxuICAgIC5ncmlkLXgge1xuICAgICAgJHN0cjogXCI+IC4jeyQtemYtc2l6ZX0tc2hyaW5rLCA+IC4jeyQtemYtc2l6ZX0tZnVsbFwiO1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgJHN0cjogJHN0ciArIFwiLCA+IC4jeyQtemYtc2l6ZX0tI3skaX1cIlxuICAgICAgfVxuICAgICAgI3skc3RyfSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAvLyBSZXNwb25zaXZlIFwiYXV0b1wiIG1vZGlmaWVyXG4gICAgQGlmIG5vdCgkLXpmLXNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgICAgIC5ncmlkLXggPiAuI3skLXpmLXNpemV9LWF1dG8ge1xuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsKGF1dG8sICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJS14eS1jZWxsLWJhc2Utc2hyaW5rLWhvcml6b250YWwtI3skLXpmLXNpemV9IHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShzaHJpbmspO1xuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgXCJzaHJpbmtcIiBtb2RpZmllclxuICAgIEBpZiBub3QoJC16Zi1zaXplID09ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgICAuZ3JpZC14ID4gLiN7JC16Zi1zaXplfS1zaHJpbmsge1xuICAgICAgICBAZXh0ZW5kICUteHktY2VsbC1iYXNlLXNocmluay1ob3Jpem9udGFsLSN7JC16Zi1zaXplfTtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKHNocmluaywgJGd1dHRlci10eXBlOiBub25lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHdpZHRoIG1vZGlmaWVyc1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgICAuZ3JpZC14ID4gLiN7JC16Zi1zaXplfS0jeyRpfSB7XG4gICAgICAgIEBleHRlbmQgJS14eS1jZWxsLWJhc2Utc2hyaW5rLWhvcml6b250YWwtI3skLXpmLXNpemV9O1xuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJGksICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzZXQgd2lkdGggd2hlbiB1c2luZyBgLmdyaWQtbWFyZ2luLXhgIG5vdCBvbiBgLmdyaWQteGBcbiAgLmdyaWQtbWFyZ2luLXg6bm90KC5ncmlkLXgpID4gLmNlbGwge1xuICAgIHdpZHRoOiBhdXRvO1xuICB9XG5cbiAgLy8gUmVzZXQgaGVpZ2h0IHdoZW4gdXNpbmcgYC5ncmlkLW1hcmdpbi15YCBub3Qgb24gYC5ncmlkLXlgXG4gIC5ncmlkLW1hcmdpbi15Om5vdCguZ3JpZC15KSA+IC5jZWxsIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIC14eS1icmVha3BvaW50LWNlbGwtY2xhc3NlcygkY2xhc3MtYnJlYWtwb2ludCwgJGd1dHRlci1icmVha3BvaW50LCAkdmVydGljYWwpIHtcbiAgJHByZWZpeDogaWYoJGNsYXNzLWJyZWFrcG9pbnQgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQsICcnLCAnI3skY2xhc3MtYnJlYWtwb2ludH0tJyk7XG4gID4gLiN7JHByZWZpeH1hdXRvIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoYXV0bywgJHZlcnRpY2FsOiAkdmVydGljYWwpO1xuICB9XG5cbiAgPiAuI3skcHJlZml4fXNocmluayB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKHNocmluaywgJHZlcnRpY2FsOiAkdmVydGljYWwpO1xuICB9XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgJGNsYXNzbmFtZTogaWYoJHZlcnRpY2FsLCAnLiN7JGNsYXNzLWJyZWFrcG9pbnR9LSN7JGl9JywgJy4jeyRjbGFzcy1icmVha3BvaW50fS0jeyRpfScpO1xuXG4gICAgPiAjeyRjbGFzc25hbWV9IHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZSgkaSwgJHZlcnRpY2FsOiAkdmVydGljYWwpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBNYXJnaW4gR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktbWFyZ2luLWdyaWQtY2xhc3NlcyhcbiAgJGd1dHRlci1wb3NpdGlvbjogbGVmdCByaWdodCxcbiAgJHZlcnRpY2FsOiBmYWxzZSxcbiAgJHdyYXBwaW5nLXNlbGVjdG9yOiAnLmdyaWQtbWFyZ2luLXgnXG4pe1xuICAjeyR3cmFwcGluZy1zZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlLCAkZ3V0dGVyLXBvc2l0aW9uOiAkZ3V0dGVyLXBvc2l0aW9uKTtcblxuICAgIC8vIEJhc2UgY2VsbCBzdHlsZXNcbiAgICA+IC5jZWxsIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwoJHZlcnRpY2FsOiAkdmVydGljYWwsICRvdXRwdXQ6IChzaXplIGd1dHRlcnMpKTtcbiAgICB9XG5cbiAgICAvLyBiYXNlIHN0eWxlcyBuZWVkIHRvIGFsbCBiZSBiZWZvcmUgdGhlIGF1dG8gYW5kIHNocmluayBzdHlsZXNcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSBhbmQgJC16Zi1zaXplICE9ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgICAgID4gLmNlbGwge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwoJHZlcnRpY2FsOiAkdmVydGljYWwsICRvdXRwdXQ6IChzaXplIGd1dHRlcnMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG5cbiAgICAgIC8vIFRoaXMgaXMgcHVyZWx5IGZvciByZXNwb25zaXZlIGd1dHRlcnMgLSB0aGUgbWFyZ2luIGdyaWQgaGFzIHRvIGdvIGJhY2sgYW5kIGFkanVzdCB3aWR0aHMgKG9yIGhlaWdodHMpXG4gICAgICAvLyBmb3IgYWxsIHByaW9yIGJyZWFrcG9pbnRzLlxuICAgICAgLy8gQXMgdGhlaXIgZ3V0dGVyIGlzIGRlZmluZWQgd2l0aCB0aGVpciB3aWR0aC9oZWlnaHQsIGV2ZW4gYnJlYWtwb2ludCB3aXRob3V0IGEgbmV3IG1hcmdpbiBtdXN0IGJlXG4gICAgICAvLyBnZW5lcmF0ZWQgdG8gbm90IGhhdmluZyB0aGVpciB3aWR0aC9oZWlnaHQgb3ZlcnJpZGVkIGJ5IHJlLWFkanVzdGVkIHNtYWxsZXIgYnJlYWtwb2ludHMuXG4gICAgICBAaWYodHlwZS1vZigkZ3JpZC1tYXJnaW4tZ3V0dGVycykgPT0gJ21hcCcgYW5kIG1hcC1oYXMta2V5KCRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkLXpmLXNpemUpKSB7XG4gICAgICAgIEBlYWNoICRicCBpbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCQtemYtc2l6ZSkge1xuICAgICAgICAgIEBpbmNsdWRlIC14eS1icmVha3BvaW50LWNlbGwtY2xhc3NlcygkYnAsICQtemYtc2l6ZSwgJHZlcnRpY2FsKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSAteHktYnJlYWtwb2ludC1jZWxsLWNsYXNzZXMoJC16Zi1zaXplLCAkLXpmLXNpemUsICR2ZXJ0aWNhbCk7XG4gICAgfVxuICB9XG59XG5cbi8vIFBhZGRpbmcgR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktcGFkZGluZy1ncmlkLWNsYXNzZXMge1xuICAuZ3JpZC1wYWRkaW5nLXgge1xuXG4gICAgLy8gTmVnYXRpdmUgbWFyZ2luIGZvciBuZXN0ZWQgZ3JpZHNcbiAgICAuZ3JpZC1wYWRkaW5nLXgge1xuICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUpO1xuICAgIH1cblxuICAgIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3IgZ3JpZHMgd2l0aGluIGBncmlkLWNvbnRhaW5lci9ncmlkLWNvbnRhaW5lci5mbHVpZGBcbiAgICAvLyBUaGlzIGFsbG93cyBtYXJnaW4gYW5kIHBhZGRpbmcgZ3JpZHMgdG8gbGluZSB1cCB3aXRoIGVhY2hvdGhlclxuICAgIC5ncmlkLWNvbnRhaW5lcjpub3QoLmZ1bGwpID4gJiB7XG4gICAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gQmFzZSBjZWxsIHN0eWxlc1xuICAgID4gLmNlbGwge1xuICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyczogJGdyaWQtcGFkZGluZy1ndXR0ZXJzLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBCbG9jayBHcmlkIGNsYXNzZXNcbkBtaXhpbiB4eS1ibG9jay1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkOiB0cnVlLCAkcGFkZGluZy1ncmlkOiB0cnVlKSB7XG4gIEBpZiAkcGFkZGluZy1ncmlkIHtcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHh5LWJsb2NrLWdyaWQtbWF4IHtcbiAgICAgICAgLiN7JC16Zi1zaXplfS11cC0jeyRpfSB7XG4gICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJG46ICRpLCAkc2VsZWN0b3I6ICcuY2VsbCcsICRndXR0ZXItdHlwZTogcGFkZGluZywgJG91dHB1dDogKHNpemUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkbWFyZ2luLWdyaWQge1xuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkeHktYmxvY2stZ3JpZC1tYXgge1xuICAgICAgICAvLyBUaGlzIGlzIHB1cmVseSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzIC0gdGhlIG1hcmdpbiBncmlkIGhhcyB0byBnbyBiYWNrIGFuZCBhZGp1c3Qgd2lkdGhzIChvciBoZWlnaHRzKVxuICAgICAgICAvLyBmb3IgcHJpb3IgYnJlYWtwb2ludHMgYmFzZWQgb24gdGhlIHJlc3BvbnNpdmUgZ3V0dGVyLlxuICAgICAgICBAaWYodHlwZS1vZigkZ3JpZC1tYXJnaW4tZ3V0dGVycykgPT0gJ21hcCcgYW5kIG1hcC1oYXMta2V5KCRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkLXpmLXNpemUpKSB7XG4gICAgICAgICAgQGVhY2ggJGJwIGluIC16Zi1icmVha3BvaW50cy1sZXNzLXRoYW4oJC16Zi1zaXplKSB7XG4gICAgICAgICAgICBAaWYobWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICRicCkpIHtcbiAgICAgICAgICAgICAgLmdyaWQtbWFyZ2luLXguI3skYnB9LXVwLSN7JGl9IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWxheW91dCgkbjogJGksICRzZWxlY3RvcjogJy5jZWxsJywgJGd1dHRlci10eXBlOiBtYXJnaW4sICRvdXRwdXQ6IChzaXplKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHh5LWJsb2NrLWdyaWQtbWF4IHtcbiAgICAgICAgLmdyaWQtbWFyZ2luLXguI3skLXpmLXNpemV9LXVwLSN7JGl9IHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWxheW91dCgkbjogJGksICRzZWxlY3RvcjogJy5jZWxsJywgJGd1dHRlci10eXBlOiBtYXJnaW4sICRvdXRwdXQ6IChzaXplKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gQ29sbGFwc2UgY2xhc3Nlc1xuQG1peGluIHh5LWNvbGxhcHNlLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQ6IHRydWUsICRwYWRkaW5nLWdyaWQ6IHRydWUpIHtcbiAgQGVhY2ggJGJwIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpZiAkbWFyZ2luLWdyaWQge1xuICAgICAgLiN7JGJwfS1tYXJnaW4tY29sbGFwc2Uge1xuICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbGxhcHNlKCRndXR0ZXItdHlwZTogbWFyZ2luLCAkbWluLWJyZWFrcG9pbnQ6ICRicCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRwYWRkaW5nLWdyaWQge1xuICAgICAgLiN7JGJwfS1wYWRkaW5nLWNvbGxhcHNlIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1jb2xsYXBzZSgkZ3V0dGVyLXR5cGU6IHBhZGRpbmcsICRtaW4tYnJlYWtwb2ludDogJGJwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gT2Zmc2V0IGNsYXNzZXNcbkBtaXhpbiB4eS1vZmZzZXQtY2VsbC1jbGFzc2VzIHtcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgIC8vIE9mZnNldHNcbiAgICAgICRvOiAkaSAtIDE7XG5cbiAgICAgIC4jeyQtemYtc2l6ZX0tb2Zmc2V0LSN7JG99IHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1vZmZzZXQoJG8sICRndXR0ZXJzOiAkZ3JpZC1wYWRkaW5nLWd1dHRlcnMsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XG4gICAgICB9XG5cbiAgICAgIC5ncmlkLW1hcmdpbi14ID4gLiN7JC16Zi1zaXplfS1vZmZzZXQtI3skb30ge1xuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLW9mZnNldCgkbyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFZlcnRpY2FsIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LXZlcnRpY2FsLWdyaWQtY2xhc3NlcyhcbiAgJG1hcmdpbi1ncmlkOiB0cnVlLFxuICAkcGFkZGluZy1ncmlkOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgIEBpZiBub3QoJC16Zi1zaXplID09ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgfVxuICB9XG5cbiAgLmdyaWQteSB7XG4gICAgQGluY2x1ZGUgeHktZ3JpZCh2ZXJ0aWNhbCwgZmFsc2UpO1xuXG5cbiAgICA+IC5jZWxsIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtcmVzZXQoKTtcbiAgICB9XG5cbiAgICA+IC5hdXRvIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShhdXRvLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgfVxuXG4gICAgPiAuc2hyaW5rIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShzaHJpbmssICRndXR0ZXItdHlwZTogbm9uZSwgJHZlcnRpY2FsOiB0cnVlKTtcbiAgICB9XG5cblxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjay93b3JrYXJvdW5kLCBzZWUgdGhlc2UgaXNzdWVzIGFuZCBQUnMgZm9yIHRoZSBiYWNrc3Rvcnk6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMDI0NFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMjIyIGFuZFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMTY0XG4gICAgICAkc3RyOiBcIj4gLiN7JC16Zi1zaXplfS1zaHJpbmssID4gLiN7JC16Zi1zaXplfS1mdWxsXCI7XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgICAkc3RyOiAkc3RyICsgXCIsID4gLiN7JC16Zi1zaXplfS0jeyRpfVwiXG4gICAgICB9XG4gICAgICAjeyRzdHJ9IHtcbiAgICAgICAgZmxleC1iYXNpczogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgICAgLy8gUmVzcG9uc2l2ZSBcImF1dG9cIiBtb2RpZmllclxuICAgICAgQGlmIG5vdCgkLXpmLXNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgPiAuI3skLXpmLXNpemV9LWF1dG8ge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwoYXV0bywgJGd1dHRlci10eXBlOiBub25lLCAkdmVydGljYWw6IHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICUteHktY2VsbC1iYXNlLXNocmluay12ZXJ0aWNhbC0jeyQtemYtc2l6ZX0ge1xuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2Uoc2hyaW5rKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVzcG9uc2l2ZSBcInNocmlua1wiIG1vZGlmaWVyXG4gICAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgICA+IC4jeyQtemYtc2l6ZX0tc2hyaW5rIHtcbiAgICAgICAgICBAZXh0ZW5kICUteHktY2VsbC1iYXNlLXNocmluay12ZXJ0aWNhbC0jeyQtemYtc2l6ZX07XG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKHNocmluaywgJGd1dHRlci10eXBlOiBub25lLCAkdmVydGljYWw6IHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlc3BvbnNpdmUgd2lkdGggbW9kaWZpZXJzXG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgICAgID4gLiN7JC16Zi1zaXplfS0jeyRpfSB7XG4gICAgICAgICAgQGV4dGVuZCAlLXh5LWNlbGwtYmFzZS1zaHJpbmstdmVydGljYWwtI3skLXpmLXNpemV9O1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZSgkaSwgJGd1dHRlci10eXBlOiBub25lLCAkdmVydGljYWw6IHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuICBAaWYgJHBhZGRpbmctZ3JpZCB7XG4gICAgLmdyaWQtcGFkZGluZy15IHtcbiAgICAgIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3IgbmVzdGVkIGdyaWRzXG4gICAgICAuZ3JpZC1wYWRkaW5nLXkge1xuICAgICAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSwgJGd1dHRlci1wb3NpdGlvbjogdG9wIGJvdHRvbSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEJhc2UgY2VsbCBzdHlsZXNcbiAgICAgID4gLmNlbGwge1xuICAgICAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXJzOiAkZ3JpZC1wYWRkaW5nLWd1dHRlcnMsICRndXR0ZXItdHlwZTogcGFkZGluZywgJGd1dHRlci1wb3NpdGlvbjogdG9wIGJvdHRvbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRtYXJnaW4tZ3JpZCB7XG4gICAgQGluY2x1ZGUgeHktbWFyZ2luLWdyaWQtY2xhc3Nlcyh0b3AgYm90dG9tLCB0cnVlLCAnLmdyaWQtbWFyZ2luLXknKTtcbiAgfVxuXG59XG5cbkBtaXhpbiB4eS1mcmFtZS1ncmlkLWNsYXNzZXMoJHZlcnRpY2FsLWdyaWQ6IHRydWUsICRtYXJnaW4tZ3JpZDogdHJ1ZSkge1xuICAvLyBGcmFtZWQgZ3JpZCBzdHlsZXNcbiAgLmdyaWQtZnJhbWUge1xuICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWU7XG4gIH1cblxuICAuY2VsbCAuZ3JpZC1mcmFtZSB7XG4gICAgd2lkdGg6IDEwMCU7IC8vIFNhbWUgYXMgaW5jbHVkZSB3aXRoICRuZXN0ZWQsIGJ1dCB3aXRoIGxlc3MgY3NzXG4gIH1cblxuICAuY2VsbC1ibG9jayB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jaygpO1xuICB9XG5cbiAgLmNlbGwtYmxvY2steSB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jayh0cnVlKTtcbiAgfVxuXG5cbiAgLmNlbGwtYmxvY2stY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrLWNvbnRhaW5lcigpO1xuICB9XG5cblxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KGZhbHNlKSB7XG5cbiAgICAuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xuICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZTtcbiAgICB9XG5cbiAgICAuY2VsbCAuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xuICAgICAgd2lkdGg6IDEwMCU7IC8vIFNhbWUgYXMgaW5jbHVkZSB3aXRoICRuZXN0ZWQsIGJ1dCB3aXRoIGxlc3MgY3NzXG4gICAgfVxuXG4gICAgLiN7JC16Zi1zaXplfS1jZWxsLWJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2soKTtcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LWNlbGwtYmxvY2stY29udGFpbmVyIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2stY29udGFpbmVyKCk7XG4gICAgfVxuXG4gICAgLiN7JC16Zi1zaXplfS1jZWxsLWJsb2NrLXkge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jayh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHZlcnRpY2FsLWdyaWQge1xuICAgIC5ncmlkLXkge1xuICAgICAgJi5ncmlkLWZyYW1lIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUodHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcbiAgICAgICAgJi4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfVxuICAgIC5jZWxsIHtcbiAgICAgIC5ncmlkLXkuZ3JpZC1mcmFtZSB7XG4gICAgICAgIGhlaWdodDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcbiAgICAgICAgLmdyaWQteS4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBpZiAkbWFyZ2luLWdyaWQge1xuICAgIEBpbmNsdWRlIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXModG9wIGJvdHRvbSwgdHJ1ZSwgJy5ncmlkLW1hcmdpbi15Jyk7XG4gICAgLmdyaWQtZnJhbWUuZ3JpZC1tYXJnaW4teSB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUsIGZhbHNlLCAkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJGluY2x1ZGUtYmFzZTogZmFsc2UpO1xuICAgIH1cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KGZhbHNlKSB7XG4gICAgICAuZ3JpZC1tYXJnaW4teS4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUodHJ1ZSwgZmFsc2UsICRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkLXpmLXNpemUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gRmluYWwgY2xhc3Nlc1xuQG1peGluIGZvdW5kYXRpb24teHktZ3JpZC1jbGFzc2VzKFxuICAkYmFzZS1ncmlkOiB0cnVlLFxuICAkbWFyZ2luLWdyaWQ6IHRydWUsXG4gICRwYWRkaW5nLWdyaWQ6IHRydWUsXG4gICRibG9jay1ncmlkOiB0cnVlLFxuICAkY29sbGFwc2U6IHRydWUsXG4gICRvZmZzZXQ6IHRydWUsXG4gICR2ZXJ0aWNhbC1ncmlkOiB0cnVlLFxuICAkZnJhbWUtZ3JpZDogdHJ1ZVxuKSB7XG5cbiAgLy8gQmFzZSBncmlkIHN0eWxlc1xuICBAaWYoJGJhc2UtZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LWJhc2UtZ3JpZC1jbGFzc2VzKCk7XG4gIH1cblxuICAvLyBNYXJnaW4gZ3JpZFxuICBAaWYoJG1hcmdpbi1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktbWFyZ2luLWdyaWQtY2xhc3NlcygpO1xuICB9XG5cbiAgLy8gUGFkZGluZyBncmlkXG4gIEBpZigkcGFkZGluZy1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktcGFkZGluZy1ncmlkLWNsYXNzZXMoKTtcbiAgfVxuXG4gIC8vIEJsb2NrIGdyaWRcbiAgQGlmKCRibG9jay1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktYmxvY2stZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZCwgJHBhZGRpbmctZ3JpZCk7XG4gIH1cblxuICAvLyBDb2xsYXBzZSBndXR0ZXJzXG4gIEBpZigkY29sbGFwc2UpIHtcbiAgICBAaW5jbHVkZSB4eS1jb2xsYXBzZS1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkLCAkcGFkZGluZy1ncmlkKTtcbiAgfVxuXG4gIC8vIE9mZnNldCBndXR0ZXJzXG4gIEBpZigkb2Zmc2V0KSB7XG4gICAgQGluY2x1ZGUgeHktb2Zmc2V0LWNlbGwtY2xhc3NlcygpO1xuICB9XG5cbiAgLy8gVmVydGljYWwgZ3JpZFxuICBAaWYoJHZlcnRpY2FsLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS12ZXJ0aWNhbC1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkLCAkcGFkZGluZy1ncmlkKTtcbiAgfVxuXG4gIEBpZiAoJGZyYW1lLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1mcmFtZS1ncmlkLWNsYXNzZXMoJHZlcnRpY2FsLWdyaWQsICRtYXJnaW4tZ3JpZClcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGJ1dHRvblxuLy8vL1xuXG4vLy8gRm9udCBmYW1pbHkgZm9yIGJ1dHRvbiBlbGVtZW50cy5cbi8vLyBAdHlwZSBGb250XG4kYnV0dG9uLWZvbnQtZmFtaWx5OiBpbmhlcml0ICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGJ1dHRvbiBlbGVtZW50cy5cbi8vLyBJZ25vcmVkIGlmIG51bGwgKGRlZmF1bHQpXG4vLy8gQHR5cGUgRm9udC1XZWlnaHRcbiRidXR0b24tZm9udC13ZWlnaHQ6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGluc2lkZSBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tcGFkZGluZzogMC44NWVtIDFlbSAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiBhcm91bmQgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luIDAgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZpbGwgZm9yIGJ1dHRvbnMuIENhbiBlaXRoZXIgYmUgYHNvbGlkYCBvciBgaG9sbG93YC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kYnV0dG9uLWZpbGw6IHNvbGlkICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIENvbG9yXG4kYnV0dG9uLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvbiBob3ZlciBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBDb2xvclxuJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyOiBzY2FsZS1jb2xvcigkYnV0dG9uLWJhY2tncm91bmQsICRsaWdodG5lc3M6IC0xNSUpICFkZWZhdWx0O1xuXG4vLy8gRm9udCBjb2xvciBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBBbHRlcm5hdGl2ZSBmb250IGNvbG9yIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tY29sb3ItYWx0OiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIGZvciBidXR0b25zLCBkZWZhdWx0ZWQgdG8gZ2xvYmFsLXJhZGl1cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBmb3IgYnV0dG9ucywgdHJhbnNwYXJlbnQgYnkgZGVmYXVsdFxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgd2lkdGggZm9yIGhvbGxvdyBvdXRsaW5lIGJ1dHRvbnNcbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b24taG9sbG93LWJvcmRlci13aWR0aDogMXB4ICFkZWZhdWx0O1xuXG4vLy8gU2l6ZXMgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTWFwXG4kYnV0dG9uLXNpemVzOiAoXG4gIHRpbnk6IDAuNnJlbSxcbiAgc21hbGw6IDAuNzVyZW0sXG4gIGRlZmF1bHQ6IDAuOXJlbSxcbiAgbGFyZ2U6IDEuMjVyZW0sXG4pICFkZWZhdWx0O1xuXG4vLy8gQ29sb3JpbmcgY2xhc3Nlcy4gQSBtYXAgb2YgY2xhc3NlcyB0byBvdXRwdXQgaW4geW91ciBDU1MsIGxpa2UgYC5zZWNvbmRhcnlgLCBgLnN1Y2Nlc3NgLCBhbmQgc28gb24uXG4vLy8gQHR5cGUgTWFwXG4kYnV0dG9uLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGUgIWRlZmF1bHQ7XG5cbi8vLyBvcGFjaXR5IGZvciBhIGRpc2FibGVkIGJ1dHRvbi5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLW9wYWNpdHktZGlzYWJsZWQ6IDAuMjUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGxpZ2h0bmVzcyBvbiBob3ZlciBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3M6IC0yMCUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBsaWdodG5lc3Mgb24gaG92ZXIgZm9yIGhvbGxvdyBidXR0b25zLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzOiAtNTAlICFkZWZhdWx0O1xuXG4vLyBJbnRlcm5hbDogZmxpcCBmcm9tIG1hcmdpbi1yaWdodCB0byBtYXJnaW4tbGVmdCBmb3IgZGVmYXVsdHNcbkBpZiAkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09ICdydGwnIHtcbiAgJGJ1dHRvbi1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcbn1cblxuLy8vIHRyYW5zaXRpb25zIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjI1cyBlYXNlLW91dCwgY29sb3IgMC4yNXMgZWFzZS1vdXQgIWRlZmF1bHQ7XG5cbi8vLyBBZGRpdGlvbmFsIHJlc3BvbnNpdmUgY2xhc3NlcyBmb3IgLmV4cGFuZGVkXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJ1dHRvbi1yZXNwb25zaXZlLWV4cGFuZGVkOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVE9ETzogRG9jdW1lbnQgYnV0dG9uLWJhc2UoKSBtaXhpblxuQG1peGluIGJ1dHRvbi1iYXNlIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG1hcmdpbjogJGJ1dHRvbi1tYXJnaW47XG5cbiAgQGlmICh0eXBlLW9mKCRidXR0b24tcGFkZGluZykgPT0gJ21hcCcpIHtcbiAgICBAZWFjaCAkc2l6ZSwgJHBhZGRpbmcgaW4gJGJ1dHRvbi1wYWRkaW5nIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgcGFkZGluZzogJHBhZGRpbmc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwYWRkaW5nOiAkYnV0dG9uLXBhZGRpbmc7XG4gIH1cblxuICBib3JkZXI6ICRidXR0b24tYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgdHJhbnNpdGlvbjogJGJ1dHRvbi10cmFuc2l0aW9uO1xuICBmb250LWZhbWlseTogJGJ1dHRvbi1mb250LWZhbWlseTtcbiAgZm9udC1zaXplOiBtYXAtZ2V0KCRidXR0b24tc2l6ZXMsIGRlZmF1bHQpO1xuICBmb250LXdlaWdodDogJGJ1dHRvbi1mb250LXdlaWdodDtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICBsaW5lLWhlaWdodDogMTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8vLyBFeHBhbmRzIGEgYnV0dG9uIHRvIG1ha2UgaXQgZnVsbC13aWR0aC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRleHBhbmQgW3RydWVdIC0gU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgdGhlIGV4cGFuZCBiZWhhdmlvci4gU2V0IHRvIGBmYWxzZWAgdG8gcmV2ZXJzZSB0aGlzIGJlaGF2aW9yLlxuQG1peGluIGJ1dHRvbi1leHBhbmQoJGV4cGFuZDogdHJ1ZSkge1xuICBAaWYgJGV4cGFuZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWFyZ2luOiAkYnV0dG9uLW1hcmdpbjtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgYmFzZSBzdHlsZXMgb2YgYSBob2xsb3cgb3IgY2xlYXIgYnV0dG9uIGZpbGxpbmcgYWNjb3JkaW5nIHRvIGAkZmlsbGAuXG4vLy8gU2VlIG1peGluIGBidXR0b24tZmlsbC1zdHlsZWAgZm9yIHRoZSBmaWxsaW5nIHN0eWxlcy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRmaWxsIFskYnV0dG9uLWZpbGxdIC0gVHlwZSBvZiBmaWxsaW5nIGJldHdlZW4gYGhvbGxvd2AgYW5kIGBjbGVhcmAuIGBzb2xpZGAgaGFzIG5vIGVmZmVjdHMuXG5AbWl4aW4gYnV0dG9uLWZpbGwoXG4gICRmaWxsOiAkYnV0dG9uLWZpbGxcbikge1xuICBAaWYgJGZpbGwgPT0gaG9sbG93IHtcbiAgICBAaW5jbHVkZSBidXR0b24taG9sbG93O1xuICB9XG4gIEBlbHNlIGlmICRmaWxsID09IGNsZWFyIHtcbiAgICBAaW5jbHVkZSBidXR0b24tY2xlYXI7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIHZpc3VhbCBzdHlsZXMgb2YgYSBzb2xpZC9ob2xsb3cvY2xlYXIgYnV0dG9uIGZpbGxpbmcgYWNjb3JkaW5nIHRvIGAkZmlsbGAuXG4vLy8gU2VlIG1peGlucyBgYnV0dG9uLXN0eWxlYCwgYGJ1dHRvbi1ob2xsb3ctc3R5bGVgIGFuZCBgYnV0dG9uLWNsZWFyLXN0eWxlYCBmb3IgZWZmZWN0cyBvZiB2aXN1YWwgc3R5bGluZyBwYXJhbWV0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGZpbGwgWyRidXR0b24tZmlsbF0gLSBUeXBlIG9mIGZpbGxpbmcgYmV0d2VlbiBgaG9sbG93YCBhbmQgYGNsZWFyYC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIC1cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZC1ob3ZlciBbJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyXSAtIC1cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRidXR0b24tY29sb3JdIC0gLVxuQG1peGluIGJ1dHRvbi1maWxsLXN0eWxlKFxuICAkZmlsbDogJGJ1dHRvbi1maWxsLFxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLFxuICAkY29sb3I6ICRidXR0b24tY29sb3Jcbikge1xuICBAaWYgJGZpbGwgPT0gc29saWQge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1zdHlsZSgkYmFja2dyb3VuZCwgJGJhY2tncm91bmQtaG92ZXIsICRjb2xvcik7XG4gIH1cbiAgQGVsc2UgaWYgJGZpbGwgPT0gaG9sbG93IHtcbiAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlKCRiYWNrZ3JvdW5kKTtcbiAgfVxuICBAZWxzZSBpZiAkZmlsbCA9PSBjbGVhciB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWNsZWFyLXN0eWxlKCRiYWNrZ3JvdW5kKTtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgdmlzdWFsIHN0eWxlIG9mIGEgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskYnV0dG9uLWJhY2tncm91bmRdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kLWhvdmVyIFskYnV0dG9uLWJhY2tncm91bmQtaG92ZXJdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uIG9uIGhvdmVyLiBTZXQgdG8gYGF1dG9gIHRvIGhhdmUgdGhlIG1peGluIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBob3ZlciBjb2xvci5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRidXR0b24tY29sb3JdIC0gVGV4dCBjb2xvciBvZiB0aGUgYnV0dG9uLiBTZXQgdG8gYGF1dG9gIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBjb2xvciBiYXNlZCBvbiB0aGUgYmFja2dyb3VuZCBjb2xvci5cbkBtaXhpbiBidXR0b24tc3R5bGUoXG4gICRiYWNrZ3JvdW5kOiAkYnV0dG9uLWJhY2tncm91bmQsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYnV0dG9uLWJhY2tncm91bmQtaG92ZXIsXG4gICRjb2xvcjogJGJ1dHRvbi1jb2xvcixcbiAgJGJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzOiAkYnV0dG9uLWJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzXG4pIHtcbiAgQGlmICRjb2xvciA9PSBhdXRvIHtcbiAgICAkY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGJhY2tncm91bmQsICgkYnV0dG9uLWNvbG9yLCAkYnV0dG9uLWNvbG9yLWFsdCkpO1xuICB9XG5cbiAgQGlmICRiYWNrZ3JvdW5kLWhvdmVyID09IGF1dG8ge1xuICAgICRiYWNrZ3JvdW5kLWhvdmVyOiBzY2FsZS1jb2xvcigkYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogJGJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgYW5kIGRpc2FibGVkIHN0YXRlc1xuICAmLFxuICAmLmRpc2FibGVkLCAmW2Rpc2FibGVkXSxcbiAgJi5kaXNhYmxlZDpob3ZlciwgJltkaXNhYmxlZF06aG92ZXIsXG4gICYuZGlzYWJsZWQ6Zm9jdXMsICZbZGlzYWJsZWRdOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJGNvbG9yO1xuICB9XG5cbiAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtaG92ZXI7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgYmFzZSBzdHlsZXMgb2YgYSBob2xsb3cgYnV0dG9uLlxuLy8vIFNlZSBtaXhpbiBgYnV0dG9uLWhvbGxvdy1zdHlsZWAgZm9yIHRoZSBmaWxsaW5nIHN0eWxlcy5cbkBtaXhpbiBidXR0b24taG9sbG93IHtcbiAgJiwgJi5kaXNhYmxlZCwgJltkaXNhYmxlZF0ge1xuICAgICYsICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBTZXRzIHRoZSB2aXN1YWwgc3R5bGUgb2YgYSBob2xsb3cgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIFRleHQgYW5kIGJvcmRlciBjb2xvciBvZiB0aGUgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRob3Zlci1saWdodG5lc3MgWyRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzc10gLSBDb2xvciBsaWdodG5lc3Mgb24gaG92ZXIuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJvcmRlci13aWR0aCBbJGJ1dHRvbi1ob2xsb3ctYm9yZGVyLXdpZHRoXSAtIEJvcmRlciB3aWR0aCBvZiB0aGUgYnV0dG9uLlxuQG1peGluIGJ1dHRvbi1ob2xsb3ctc3R5bGUoXG4gICRjb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkaG92ZXItbGlnaHRuZXNzOiAkYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3MsXG4gICRib3JkZXItd2lkdGg6ICRidXR0b24taG9sbG93LWJvcmRlci13aWR0aFxuKSB7XG4gICRjb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkaG92ZXItbGlnaHRuZXNzKTtcblxuICAvLyBEZWZhdWx0IGFuZCBkaXNhYmxlZCBzdGF0ZXNcbiAgJixcbiAgJi5kaXNhYmxlZCwgJltkaXNhYmxlZF0sXG4gICYuZGlzYWJsZWQ6aG92ZXIsICZbZGlzYWJsZWRdOmhvdmVyLFxuICAmLmRpc2FibGVkOmZvY3VzLCAmW2Rpc2FibGVkXTpmb2N1cyB7XG4gICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRjb2xvcjtcbiAgICBjb2xvcjogJGNvbG9yO1xuICB9XG5cbiAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItaG92ZXI7XG4gICAgY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgYmFzZSBzdHlsZXMgb2YgYSBjbGVhciBidXR0b24uXG4vLy8gU2VlIG1peGluIGBidXR0b24tY2xlYXItc3R5bGVgIGZvciB0aGUgZmlsbGluZyBzdHlsZXMuXG5AbWl4aW4gYnV0dG9uLWNsZWFyIHtcbiAgJiwgJi5kaXNhYmxlZCwgJltkaXNhYmxlZF0ge1xuICAgICYsICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgdmlzdWFsIHN0eWxlIG9mIGEgY2xlYXIgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIFRleHQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkaG92ZXItbGlnaHRuZXNzIFskYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3NdIC0gQ29sb3IgbGlnaHRuZXNzIG9uIGhvdmVyLlxuQG1peGluIGJ1dHRvbi1jbGVhci1zdHlsZShcbiAgJGNvbG9yOiAkYnV0dG9uLWJhY2tncm91bmQsXG4gICRob3Zlci1saWdodG5lc3M6ICRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzc1xuKSB7XG4gICRjb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkaG92ZXItbGlnaHRuZXNzKTtcblxuICAvLyBEZWZhdWx0IGFuZCBkaXNhYmxlZCBzdGF0ZXNcbiAgJixcbiAgJi5kaXNhYmxlZCwgJltkaXNhYmxlZF0sXG4gICYuZGlzYWJsZWQ6aG92ZXIsICZbZGlzYWJsZWRdOmhvdmVyLFxuICAmLmRpc2FibGVkOmZvY3VzLCAmW2Rpc2FibGVkXTpmb2N1cyB7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgfVxuXG4gICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkY29sb3ItaG92ZXI7XG4gIH1cbn1cblxuLy8vIEFkZHMgZGlzYWJsZWQgc3R5bGVzIHRvIGEgYnV0dG9uIGJ5IGZhZGluZyB0aGUgZWxlbWVudCBhbmQgcmVzZXRpbmcgdGhlIGN1cnNvci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG9wYWNpdHkgWyRidXR0b24tb3BhY2l0eS1kaXNhYmxlZF0gLSBPcGFjaXR5IG9mIHRoZSBkaXNhYmxlZCBidXR0b24uXG5AbWl4aW4gYnV0dG9uLWRpc2FibGVkKFxuICAkb3BhY2l0eTogJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkXG4pIHtcbiAgb3BhY2l0eTogJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4vLy8gQWRkcyBhIGRyb3Bkb3duIGFycm93IHRvIGEgYnV0dG9uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2l6ZSBbMC40ZW1dIC0gU2l6ZSBvZiB0aGUgYXJyb3cuIFdlIHJlY29tbWVuZCB1c2luZyBhbiBgZW1gIHZhbHVlIHNvIHRoZSB0cmlhbmdsZSBzY2FsZXMgd2hlbiB1c2VkIGluc2lkZSBkaWZmZXJlbnQgc2l6ZXMgb2YgYnV0dG9ucy5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgW3doaXRlXSAtIENvbG9yIG9mIHRoZSBhcnJvdy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG9mZnNldCBbJGJ1dHRvbi1wYWRkaW5nXSAtIERpc3RhbmNlIGJldHdlZW4gdGhlIGFycm93IGFuZCB0aGUgdGV4dCBvZiB0aGUgYnV0dG9uLiBEZWZhdWx0cyB0byB3aGF0ZXZlciB0aGUgcmlnaHQgcGFkZGluZyBvZiBhIGJ1dHRvbiBpcy5cbkBtaXhpbiBidXR0b24tZHJvcGRvd24oXG4gICRzaXplOiAwLjRlbSxcbiAgJGNvbG9yOiAkd2hpdGUsXG4gICRvZmZzZXQ6IGdldC1zaWRlKCRidXR0b24tcGFkZGluZywgcmlnaHQpXG4pIHtcbiAgJjo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkc2l6ZSwgJGNvbG9yLCBkb3duKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAwLjRlbTsgLy8gQWxpZ25zIHRoZSBhcnJvdyB3aXRoIHRoZSB0ZXh0IG9mIHRoZSBidXR0b25cblxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmbG9hdDogI3skZ2xvYmFsLXJpZ2h0fTtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xuICB9XG59XG5cbi8vLyBBZGRzIGFsbCBzdHlsZXMgZm9yIGEgYnV0dG9uLiBGb3IgbW9yZSBncmFudWxhciBjb250cm9sIG92ZXIgc3R5bGVzLCB1c2UgdGhlIGluZGl2aWR1YWwgYnV0dG9uIG1peGlucy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRleHBhbmQgW2ZhbHNlXSAtIFNldCB0byBgdHJ1ZWAgdG8gbWFrZSB0aGUgYnV0dG9uIGZ1bGwtd2lkdGguXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQtaG92ZXIgWyRidXR0b24tYmFja2dyb3VuZC1ob3Zlcl0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24gb24gaG92ZXIuIFNldCB0byBgYXV0b2AgdG8gaGF2ZSB0aGUgbWl4aW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGhvdmVyIGNvbG9yLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJ1dHRvbi1jb2xvcl0gLSBUZXh0IGNvbG9yIG9mIHRoZSBidXR0b24uIFNldCB0byBgYXV0b2AgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGNvbG9yIGJhc2VkIG9uIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHN0eWxlIFtzb2xpZF0gLSBTZXQgdG8gYGhvbGxvd2AgdG8gY3JlYXRlIGEgaG9sbG93IGJ1dHRvbi4gVGhlIGNvbG9yIGRlZmluZWQgaW4gYCRiYWNrZ3JvdW5kYCB3aWxsIGJlIHVzZWQgYXMgdGhlIHByaW1hcnkgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbkBtaXhpbiBidXR0b24oXG4gICRleHBhbmQ6IGZhbHNlLFxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLFxuICAkY29sb3I6ICRidXR0b24tY29sb3IsXG4gICRzdHlsZTogJGJ1dHRvbi1maWxsXG4pIHtcbiAgQGluY2x1ZGUgYnV0dG9uLWJhc2U7XG4gIEBpbmNsdWRlIGJ1dHRvbi1maWxsKCRzdHlsZSk7XG4gIEBpbmNsdWRlIGJ1dHRvbi1maWxsLXN0eWxlKCRzdHlsZSwgJGJhY2tncm91bmQsICRiYWNrZ3JvdW5kLWhvdmVyLCAkY29sb3IpO1xuXG4gIEBpZiAkZXhwYW5kIHtcbiAgICBAaW5jbHVkZSBidXR0b24tZXhwYW5kO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJ1dHRvbiB7XG4gIC5idXR0b24ge1xuICAgIEBpbmNsdWRlIGJ1dHRvbigkc3R5bGU6IG5vbmUpO1xuXG4gICAgLy8gU2l6ZXNcbiAgICBAZWFjaCAkc2l6ZSwgJHZhbHVlIGluIG1hcC1yZW1vdmUoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCkge1xuICAgICAgJi4jeyRzaXplfSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZXhwYW5kZWQgeyBAaW5jbHVkZSBidXR0b24tZXhwYW5kOyB9XG5cbiAgICBAaWYgJGJ1dHRvbi1yZXNwb25zaXZlLWV4cGFuZGVkIHtcbiAgICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCN7JHNpemV9IG9ubHkpIHtcbiAgICAgICAgICAmLiN7JHNpemV9LW9ubHktZXhwYW5kZWQge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCN7JHNpemV9IGRvd24pIHtcbiAgICAgICAgICAgICYuI3skc2l6ZX0tZG93bi1leHBhbmRlZCB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgjeyRzaXplfSkge1xuICAgICAgICAgICAgJi4jeyRzaXplfS1leHBhbmRlZCB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU29saWQsIGhvbGxvdyAmIGNsZWFyIHN0eWxlc1xuICAgIEBlYWNoICRmaWxsaW5nIGluIChzb2xpZCBob2xsb3cgY2xlYXIpIHtcbiAgICAgICRzZWxlY3RvcjogaWYoJGJ1dHRvbi1maWxsID09ICRmaWxsaW5nLCBudWxsLCAnLiN7JGZpbGxpbmd9Jyk7XG5cbiAgICAgICYjeyRzZWxlY3Rvcn0ge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24tZmlsbCgkZmlsbGluZyk7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1maWxsLXN0eWxlKCRmaWxsaW5nKTtcblxuICAgICAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XG4gICAgICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZmlsbC1zdHlsZSgkZmlsbGluZywgJGNvbG9yLCBhdXRvLCBhdXRvKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAgICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvLyBEcm9wZG93biBhcnJvd1xuICAgICYuZHJvcGRvd24ge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLWRyb3Bkb3duO1xuXG4gICAgICBAaWYgJGJ1dHRvbi1maWxsID09IGhvbGxvdyB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkYnV0dG9uLWJhY2tncm91bmQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5ob2xsb3csICYuY2xlYXIge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xuICAgICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQnV0dG9uIHdpdGggZHJvcGRvd24gYXJyb3cgb25seVxuICAgICYuYXJyb3ctb25seTo6YWZ0ZXIge1xuICAgICAgdG9wOiAtMC4xZW07XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gICAgfVxuICB9XG5cbiAgYS5idXR0b24geyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGJ1dHRvbi1ncm91cFxuLy8vL1xuXG4vLy8gTWFyZ2luIGZvciBidXR0b24gZ3JvdXBzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbmdyb3VwLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiBiZXR3ZWVuIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uZ3JvdXAtc3BhY2luZzogMXB4ICFkZWZhdWx0O1xuXG4vLy8gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbi8vLyBAdHlwZSBTdHJpbmdcbiRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcjogJy5idXR0b24nICFkZWZhdWx0O1xuXG4vLy8gTWF4aW11bSBudW1iZXIgb2YgYnV0dG9ucyB0aGF0IGNhbiBiZSBpbiBhbiBldmVuLXdpZHRoIGJ1dHRvbiBncm91cC4gKE9ubHkgbmVlZGVkIHdoZW4gJGdsb2JhbC1mbGV4Ym94OiBmYWxzZTspXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uZ3JvdXAtZXhwYW5kLW1heDogNiAhZGVmYXVsdDtcblxuLy8vIERldGVybWluZXMgaWYgJGJ1dHRvbi1yYWRpdXMgaXMgYXBwbGllZCB0byBlYWNoIGJ1dHRvbiBvciB0aGUgYnV0dG9uIGdyb3VwIGFzIGEgd2hvbGUuIFVzZSAkZ2xvYmFsLXJhZGl1cyBpbiBfc2V0dGluZ3Muc2NzcyB0byBjaGFuZ2UgcmFkaXVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEFkZCBzdHlsZXMgZm9yIGEgYnV0dG9uIGdyb3VwIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGNoaWxkLXNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNwYWNpbmcgWyRidXR0b25ncm91cC1zcGFjaW5nXSAtIFNwYWNpbmcgYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cChcbiAgJGNoaWxkLXNlbGVjdG9yOiAkYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3IsXG4gICRzcGFjaW5nOiAkYnV0dG9uZ3JvdXAtc3BhY2luZ1xuKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBtYXJnaW4tYm90dG9tOiAkYnV0dG9uZ3JvdXAtbWFyZ2luO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIGZsZXgtZ3JvdzogMTtcblxuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyAvLyBEaXNhYmxlIGNsZWFyZml4XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBmb250LXNpemU6IDA7XG4gIH1cblxuICAjeyRjaGlsZC1zZWxlY3Rvcn0ge1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHNwYWNpbmc7XG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgZm9udC1zaXplOiBtYXAtZ2V0KCRidXR0b24tc2l6ZXMsIGRlZmF1bHQpO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gICAgfVxuXG4gICAgQGlmIG5vdCAkYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2gge1xuICAgICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIE1ha2UgYnV0dG9ucyBib25kZWQgd2l0aG91dCBnYXAgYmV0d2VlbiB0aGVtLiBCb3JkZXJzIGJldHdlZW4gYnV0dG9ucyBhcmUgbWVyZ2VkXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXG5AbWl4aW4gYnV0dG9uLWdyb3VwLW5vLWdhcHMoXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yLFxuICAkYm9yZGVyLXdpZHRoOiAkYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGhcbikge1xuICAjeyRzZWxlY3Rvcn0ge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiByZW0tY2FsYygtJGJvcmRlci13aWR0aCk7XG5cbiAgICArICN7JHNlbGVjdG9yfSB7XG4gICAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBmdWxsLXdpZHRoIGJ1dHRvbiBncm91cCwgbWFraW5nIGVhY2ggYnV0dG9uIGVxdWFsIHdpZHRoLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3BhY2luZyBbJGJ1dHRvbmdyb3VwLXNwYWNpbmddIC0gU3BhY2luZyBiZXR3ZWVuIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXG5AbWl4aW4gYnV0dG9uLWdyb3VwLWV4cGFuZChcbiAgJHNlbGVjdG9yOiAkYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3IsXG4gICRzcGFjaW5nOiAkYnV0dG9uZ3JvdXAtc3BhY2luZyxcbiAgJGNvdW50OiBudWxsXG4pIHtcbiAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAtJHNwYWNpbmc7XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgLy8gRGlzYWJsZSBjbGVhcmZpeFxuICAgIH1cbiAgfVxuXG4gICN7JHNlbGVjdG9yfSB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBPbmUgY2hpbGRcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAjeyRzcGFjaW5nfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVHdvIG9yIG1vcmUgY2hpbGRyZWVuXG4gICAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRidXR0b25ncm91cC1leHBhbmQtbWF4IHtcbiAgICAgICAgJjpmaXJzdC1jaGlsZDpudGgtbGFzdC1jaGlsZCgjeyRpfSkge1xuICAgICAgICAgICYsICY6Zmlyc3QtY2hpbGQ6bnRoLWxhc3QtY2hpbGQoI3skaX0pIH4gI3skc2VsZWN0b3J9IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKCN7cGVyY2VudGFnZSgxIC8gJGkpfSAtICN7JHNwYWNpbmd9KTtcbiAgICAgICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nICogLSRidXR0b25ncm91cC1leHBhbmQtbWF4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gU3RhY2tzIHRoZSBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIHRoZSBidXR0b24gZ3JvdXAuXG5AbWl4aW4gYnV0dG9uLWdyb3VwLXN0YWNrKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvclxuKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxuXG4gICN7JHNlbGVjdG9yfSB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgQGlmIG5vdCAkYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2gge1xuICAgICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIFVuLXN0YWNrcyB0aGUgYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSB0aGUgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cC11bnN0YWNrKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvclxuKSB7XG4gICN7JHNlbGVjdG9yfSB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tYnV0dG9uLWdyb3VwIHtcbiAgLmJ1dHRvbi1ncm91cCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwO1xuXG4gICAgLy8gU2l6ZXNcbiAgICBAZWFjaCAkc2l6ZSwgJHZhbHVlIGluIG1hcC1yZW1vdmUoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCkge1xuICAgICAgJi4jeyRzaXplfSAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICBmb250LXNpemU6ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFdmVuLXdpZHRoIEdyb3VwXG4gICAgJi5leHBhbmRlZCB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtZXhwYW5kO1xuICAgIH1cblxuICAgIC8vIFNvbGlkLCBob2xsb3cgJiBjbGVhciBzdHlsZXNcbiAgICBAZWFjaCAkZmlsbGluZyBpbiAoc29saWQgaG9sbG93IGNsZWFyKSB7XG4gICAgICAkYmFzZS1zZWxlY3RvcjogaWYoJGJ1dHRvbi1maWxsID09ICRmaWxsaW5nLCBudWxsLCAnLiN7JGZpbGxpbmd9Jyk7XG5cbiAgICAgICYjeyRiYXNlLXNlbGVjdG9yfSB7XG4gICAgICAgIC8vIERvIG5vdCBnZW5lcmF0ZSBidXR0b24gYmFzZSBzdHlsZXMgZm9yIHRoZSBkZWZhdWx0IGZpbGxpbmdcbiAgICAgICAgQGlmKCRidXR0b24tZmlsbCAhPSAkZmlsbGluZykge1xuICAgICAgICAgICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZmlsbCgkZmlsbGluZyk7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZmlsbC1zdHlsZSgkZmlsbGluZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xuICAgICAgICAgICRpbmRpdmlkdWFsLXNlbGVjdG9yOiBpZigkYnV0dG9uLWZpbGwgPT0gJGZpbGxpbmcsIG51bGwsICcgI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9LiN7JG5hbWV9Jyk7XG5cbiAgICAgICAgICAmLiN7JG5hbWV9ICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSwgI3skaW5kaXZpZHVhbC1zZWxlY3Rvcn0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWZpbGwtc3R5bGUoJGZpbGxpbmcsICRjb2xvciwgYXV0bywgYXV0byk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICAmLm5vLWdhcHMge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLW5vLWdhcHM7XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLFxuICAgICYuc3RhY2tlZC1mb3Itc21hbGwsXG4gICAgJi5zdGFja2VkLWZvci1tZWRpdW0ge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLXN0YWNrO1xuXG4gICAgICAmLmV4cGFuZGVkIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLWV4cGFuZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC11bnN0YWNrO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZC1mb3ItbWVkaXVtIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLXVuc3RhY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLWZvci1zbWFsbC5leHBhbmRlZCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZC1mb3ItbWVkaXVtLmV4cGFuZGVkIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGNsb3NlLWJ1dHRvblxuLy8vL1xuXG4vLy8gRGVmYXVsdCBwb3NpdGlvbiBvZiB0aGUgY2xvc2UgYnV0dG9uLiBUaGUgZmlyc3QgdmFsdWUgc2hvdWxkIGJlIGByaWdodGAgb3IgYGxlZnRgLCBhbmQgdGhlIHNlY29uZCB2YWx1ZSBzaG91bGQgYmUgYHRvcGAgb3IgYGJvdHRvbWAuXG4vLy8gQHR5cGUgTGlzdFxuJGNsb3NlYnV0dG9uLXBvc2l0aW9uOiByaWdodCB0b3AgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHotaW5kZXggZm9yIGEgY2xvc2UgYnV0dG9uLlxuLy8vIEB0eXBlIE51bWJlclxuJGNsb3NlYnV0dG9uLXotaW5kZXg6IDEwICFkZWZhdWx0O1xuXG4vLy8gQnV0dG9uIHNpemUgdG8gdXNlIGFzIGRlZmF1bHRcbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAc2VlICRjbG9zZWJ1dHRvbi1zaXplXG4vLy8gQHNlZSAkY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWxcbi8vLyBAc2VlICRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWxcbiRjbG9zZWJ1dHRvbi1kZWZhdWx0LXNpemU6IG1lZGl1bSAhZGVmYXVsdDtcblxuLy8vIFJpZ2h0IChvciBsZWZ0KSBvZmZzZXQocykgZm9yIGEgY2xvc2UgYnV0dG9uLlxuLy8vIEB0eXBlIE51bWJlcnxNYXBcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbDogKFxuICBzbWFsbDogMC42NnJlbSxcbiAgbWVkaXVtOiAxcmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIFRvcCAob3IgYm90dG9tKSBvZmZzZXQocykgZm9yIGEgY2xvc2UgYnV0dG9uLlxuLy8vIEB0eXBlIE51bWJlcnxNYXBcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWw6IChcbiAgc21hbGw6IDAuMzNlbSxcbiAgbWVkaXVtOiAwLjVyZW0sXG4pICFkZWZhdWx0O1xuXG4vLy8gU2l6ZShzKSBvZiB0aGUgY2xvc2UgYnV0dG9uLiBVc2VkIHRvIGdlbmVyYXRlIHNpemluZyBtb2RpZmllcnMuXG4vLy8gQHR5cGUgTnVtYmVyfE1hcFxuJGNsb3NlYnV0dG9uLXNpemU6IChcbiAgc21hbGw6IDEuNWVtLFxuICBtZWRpdW06IDJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGluZS1oZWlnaHQgb2YgdGhlIGNsb3NlIGJ1dHRvbi4gSXQgYWZmZWN0cyB0aGUgc3BhY2luZyBvZiB0aGUgZWxlbWVudC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0OiAxICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgY2xvc2UgYnV0dG9uLlxuLy8vIEB0eXBlIENvbG9yXG4kY2xvc2VidXR0b24tY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBjbG9zZSBidXR0b24gd2hlbiBiZWluZyBob3ZlcmVkIG9uLlxuLy8vIEB0eXBlIENvbG9yXG4kY2xvc2VidXR0b24tY29sb3ItaG92ZXI6ICRibGFjayAhZGVmYXVsdDtcblxuXG4vLy8gR2V0IHRoZSBzaXplIGFuZCBwb3NpdGlvbiBmb3IgYSBjbG9zZSBidXR0b24uIElmIHRoZSBpbnB1dCB2YWx1ZSBpcyBhIG51bWJlciwgdGhlIG51bWJlciBpcyByZXR1cm5lZC4gSWYgdGhlIGlucHV0IHZhbHVlIGlzIGEgY29uZmlnIG1hcCBhbmQgdGhlIG1hcCBoYXMgdGhlIGtleSBgJHNpemVgLCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICR2YWx1ZSAtIEEgbnVtYmVyIG9yIG1hcCB0aGF0IHJlcHJlc2VudHMgdGhlIHNpemUgb3IgcG9zaXRpb24gdmFsdWUocykgb2YgdGhlIGNsb3NlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gVGhlIHNpemUgb2YgdGhlIGNsb3NlIGJ1dHRvbiB0byB1c2UuXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IFRoZSBnaXZlbiBudW1iZXIgb3IgdGhlIHZhbHVlIGZvdW5kIGluIHRoZSBtYXAuXG5AZnVuY3Rpb24gLXpmLWdldC1zaXplLXZhbCgkdmFsdWUsICRzaXplKSB7XG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcbiAgICAvLyBJZiBpdCBpcywganVzdCByZXR1cm4gdGhlIG51bWJlclxuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHNpemUgbmFtZSBleGlzdHMgaW4gdGhlIHZhbHVlIG1hcFxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkdmFsdWUsICRzaXplKSB7XG4gICAgLy8gSWYgaXQgZG9lcywgcmV0dXJuIHRoZSB2YWx1ZVxuICAgIEByZXR1cm4gbWFwLWdldCgkdmFsdWUsICRzaXplKTtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgc2l6ZSBhbmQgcG9zaXRpb24gb2YgYSBjbG9zZSBidXR0b24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbbWVkaXVtXSAtIFRoZSBzaXplIHRvIHVzZS4gU2V0IHRvIGBzbWFsbGAgdG8gY3JlYXRlIGEgc21hbGwgY2xvc2UgYnV0dG9uLiBUaGUgJ21lZGl1bScgdmFsdWVzIGRlZmluZWQgaW4gYCRjbG9zZWJ1dHRvbi0qYCB2YXJpYWJsZXMgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHNpemUgYW5kIHBvc2l0aW9uIG9mIHRoZSBjbG9zZSBidXR0b24uXG5AbWl4aW4gY2xvc2UtYnV0dG9uLXNpemUoJHNpemUpIHtcbiAgJHg6IG50aCgkY2xvc2VidXR0b24tcG9zaXRpb24sIDEpO1xuICAkeTogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMik7XG5cbiAgI3skeH06IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsLCAkc2l6ZSk7XG4gICN7JHl9OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWwsICRzaXplKTtcbiAgZm9udC1zaXplOiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1zaXplLCAkc2l6ZSk7XG4gIGxpbmUtaGVpZ2h0OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0LCAkc2l6ZSk7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjbG9zZSBidXR0b24sIHVzaW5nIHRoZSBzdHlsZXMgaW4gdGhlIHNldHRpbmdzIHZhcmlhYmxlcy5cbkBtaXhpbiBjbG9zZS1idXR0b24ge1xuICAkeDogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMSk7XG4gICR5OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAyKTtcblxuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogJGNsb3NlYnV0dG9uLXotaW5kZXg7XG4gIGNvbG9yOiAkY2xvc2VidXR0b24tY29sb3I7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBjb2xvcjogJGNsb3NlYnV0dG9uLWNvbG9yLWhvdmVyO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWNsb3NlLWJ1dHRvbiB7XG4gIC5jbG9zZS1idXR0b24ge1xuICAgIEBpbmNsdWRlIGNsb3NlLWJ1dHRvbjtcblxuICAgIC8vIEdlbmVyYXRlIGEgcGxhY2Vob2xkZXIgYW5kIGEgY2xhc3MgZm9yIGVhY2ggc2l6ZVxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkY2xvc2VidXR0b24tc2l6ZSB7XG4gICAgICBAYXQtcm9vdCB7XG4gICAgICAgICV6Zi1jbG9zZS1idXR0b24tLSN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBjbG9zZS1idXR0b24tc2l6ZSgkbmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIEBleHRlbmQgJXpmLWNsb3NlLWJ1dHRvbi0tI3skbmFtZX07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXNlIGJ5IGRlZmF1bHQgdGhlIHBsYWNlaG9sZGVyIG9mIHRoZSBkZWZhdWx0IHNpemVcbiAgICBAZXh0ZW5kICV6Zi1jbG9zZS1idXR0b24tLSN7JGNsb3NlYnV0dG9uLWRlZmF1bHQtc2l6ZX07XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBsYWJlbFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBsYWJlbHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRsYWJlbC1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kbGFiZWwtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEFsdGVybmF0ZSB0ZXh0IGNvbG9yIGZvciBsYWJlbHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRsYWJlbC1jb2xvci1hbHQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIENvbG9yaW5nIGNsYXNzZXMuIEEgbWFwIG9mIGNsYXNzZXMgdG8gb3V0cHV0IGluIHlvdXIgQ1NTLCBsaWtlIGAuc2Vjb25kYXJ5YCwgYC5zdWNjZXNzYCwgYW5kIHNvIG9uLlxuLy8vIEB0eXBlIE1hcFxuJGxhYmVsLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxhYmVsLWZvbnQtc2l6ZTogMC44cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBsYWJlbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGFiZWwtcGFkZGluZzogMC4zMzMzM3JlbSAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBvZiBsYWJlbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGFiZWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEdlbmVyYXRlcyBiYXNlIHN0eWxlcyBmb3IgYSBsYWJlbC5cbkBtaXhpbiBsYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogJGxhYmVsLXBhZGRpbmc7XG5cbiAgYm9yZGVyLXJhZGl1czogJGxhYmVsLXJhZGl1cztcblxuICBmb250LXNpemU6ICRsYWJlbC1mb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWxhYmVsIHtcbiAgLmxhYmVsIHtcbiAgICBAaW5jbHVkZSBsYWJlbDtcblxuICAgIGJhY2tncm91bmQ6ICRsYWJlbC1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRsYWJlbC1wYWxldHRlIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgICAgIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRjb2xvciwgKCRsYWJlbC1jb2xvciwgJGxhYmVsLWNvbG9yLWFsdCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgcHJvZ3Jlc3MgYmFyIGNvbnRhaW5lci5cbkBtaXhpbiBwcm9ncmVzcy1jb250YWluZXIge1xuICBoZWlnaHQ6ICRwcm9ncmVzcy1oZWlnaHQ7XG4gIG1hcmdpbi1ib3R0b206ICRwcm9ncmVzcy1tYXJnaW4tYm90dG9tO1xuICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5uZXIgbWV0ZXIgb2YgYSBwcm9ncmVzcyBiYXIuXG5AbWl4aW4gcHJvZ3Jlc3MtbWV0ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ7XG5cbiAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0ZXh0IGluIHRoZSBwcm9ncmVzcyBtZXRlci5cbkBtaXhpbiBwcm9ncmVzcy1tZXRlci10ZXh0IHtcbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyO1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm9ncmVzcy1iYXIge1xuICAvLyBQcm9ncmVzcyBiYXJcbiAgLnByb2dyZXNzIHtcbiAgICBAaW5jbHVkZSBwcm9ncmVzcy1jb250YWluZXI7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIC5wcm9ncmVzcy1tZXRlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSW5uZXIgbWV0ZXJcbiAgLnByb2dyZXNzLW1ldGVyIHtcbiAgICBAaW5jbHVkZSBwcm9ncmVzcy1tZXRlcjtcbiAgfVxuXG4gIC8vIElubmVyIG1ldGVyIHRleHRcbiAgLnByb2dyZXNzLW1ldGVyLXRleHQge1xuICAgIEBpbmNsdWRlIHByb2dyZXNzLW1ldGVyLXRleHQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gW1RPRE9dIENoZWNrIGhvdyBwbHVnaW4gY29uZmlybXMgZGlzYWJsZWQgb3IgdmVydGljYWwgc3RhdHVzXG4vLyBbVE9ET10gQ2hlY2sgaWYgdHJhbnNpdGlvbjogYWxsOyBpcyBuZWNlc3NhcnlcblxuLy8vL1xuLy8vIEBncm91cCBzbGlkZXJcbi8vLy9cblxuLy8vIERlZmF1bHQgc2xpZGVyIHdpZHRoIG9mIGEgdmVydGljYWwgc2xpZGVyLiAoRG9lc24ndCBhcHBseSB0byB0aGUgbmF0aXZlIHNsaWRlci4pXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLXdpZHRoLXZlcnRpY2FsOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUcmFuc2l0aW9uIHByb3BlcnRpZXMgdG8gYXBwbHkgdG8gdGhlIHNsaWRlciBoYW5kbGUgYW5kIGZpbGwuIChEb2Vzbid0IGFwcGx5IHRvIHRoZSBuYXRpdmUgc2xpZGVyLilcbi8vLyBAdHlwZSBUcmFuc2l0aW9uXG4kc2xpZGVyLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHNsaWRlcnMuXG5AbWl4aW4gc2xpZGVyLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcbiAgbWFyZ2luLXRvcDogMS4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMi4yNXJlbTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2xpZGVyLWJhY2tncm91bmQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHRvdWNoLWFjdGlvbjogbm9uZTtcbn1cblxuLy8vIEFkZHMgdGhlIGdlbmVyYWwgc3R5bGVzIGZvciBhY3RpdmUgZmlsbCBmb3Igc2xpZGVycy5cbkBtaXhpbiBzbGlkZXItZmlsbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kO1xuICB0cmFuc2l0aW9uOiAkc2xpZGVyLXRyYW5zaXRpb247XG5cbiAgJi5pcy1kcmFnZ2luZyB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDBzIGxpbmVhcjtcbiAgfVxufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHRoZSBzbGlkZXIgaGFuZGxlcy5cbkBtaXhpbiBzbGlkZXItaGFuZGxlIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXI7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDE7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XG4gIGhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xuXG4gIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xuICB0cmFuc2l0aW9uOiAkc2xpZGVyLXRyYW5zaXRpb247XG4gIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHNjYWxlLWNvbG9yKCRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQsICRsaWdodG5lc3M6IC0xNSUpO1xuICB9XG5cbiAgJi5pcy1kcmFnZ2luZyB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDBzIGxpbmVhcjtcbiAgfVxufVxuXG5AbWl4aW4gc2xpZGVyLWRpc2FibGVkIHtcbiAgb3BhY2l0eTogJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG5AbWl4aW4gc2xpZGVyLXZlcnRpY2FsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogJHNsaWRlci13aWR0aC12ZXJ0aWNhbDtcbiAgaGVpZ2h0OiAxMi41cmVtO1xuICBtYXJnaW46IDAgMS4yNXJlbTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLCAtMSk7XG5cbiAgLnNsaWRlci1maWxsIHtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6ICRzbGlkZXItd2lkdGgtdmVydGljYWw7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgfVxuXG4gIC5zbGlkZXItaGFuZGxlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB3aWR0aDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xuICAgIGhlaWdodDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXNsaWRlciB7XG4gIC8vIENvbnRhaW5lclxuICAuc2xpZGVyIHtcbiAgICBAaW5jbHVkZSBzbGlkZXItY29udGFpbmVyO1xuICB9XG5cbiAgLy8gRmlsbCBhcmVhXG4gIC5zbGlkZXItZmlsbCB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLWZpbGw7XG4gIH1cblxuICAvLyBEcmFnZ2FibGUgaGFuZGxlXG4gIC5zbGlkZXItaGFuZGxlIHtcbiAgICBAaW5jbHVkZSBzbGlkZXItaGFuZGxlO1xuICB9XG5cbiAgLy8gRGlzYWJsZWQgc3RhdGVcbiAgLnNsaWRlci5kaXNhYmxlZCxcbiAgLnNsaWRlcltkaXNhYmxlZF0ge1xuICAgIEBpbmNsdWRlIHNsaWRlci1kaXNhYmxlZDtcbiAgfVxuXG4gIC8vIFZlcnRpY2FsIHNsaWRlclxuICAuc2xpZGVyLnZlcnRpY2FsIHtcbiAgICBAaW5jbHVkZSBzbGlkZXItdmVydGljYWw7XG4gIH1cblxuICAvLyBSVEwgc3VwcG9ydFxuICBAaWYgJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwge1xuICAgIC5zbGlkZXI6bm90KC52ZXJ0aWNhbCkge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgtMSwgMSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgc3dpdGNoXG4vLy8vXG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgc3dpdGNoLlxuLy8vIEB0eXBlIENvbG9yXG4kc3dpdGNoLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgYWN0aXZlIGNvbG9yIG9mIGEgc3dpdGNoLlxuLy8vIEB0eXBlIENvbG9yXG4kc3dpdGNoLWJhY2tncm91bmQtYWN0aXZlOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCwgd2l0aCBubyBjbGFzcyBhcHBsaWVkLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1oZWlnaHQ6IDJyZW0gIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2ggd2l0aCAudGlueSBjbGFzcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0LXRpbnk6IDEuNXJlbSAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCB3aXRoIC5zbWFsbCBjbGFzcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0LXNtYWxsOiAxLjc1cmVtICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoIHdpdGggLmxhcmdlIGNsYXNzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1oZWlnaHQtbGFyZ2U6IDIuNXJlbSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgb2YgdGhlIHN3aXRjaFxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gYm9yZGVyIGFyb3VuZCBhIG1vZGFsLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1tYXJnaW46ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHN3aXRjaCBjb250YWluZXIgYW5kIHBhZGRsZS5cbi8vLyBAdHlwZSBDb2xvclxuJHN3aXRjaC1wYWRkbGUtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBiZXR3ZWVuIGEgc3dpdGNoIHBhZGRsZSBhbmQgdGhlIGVkZ2Ugb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLXBhZGRsZS1vZmZzZXQ6IDAuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBib3JkZXIgcmFkaXVzIG9mIHRoZSBzd2l0Y2ggcGFkZGxlXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLXBhZGRsZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gc3dpdGNoIHRyYW5zaXRpb24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZS1vdXQgIWRlZmF1bHQ7XG5cbi8vLyBPcGFjaXR5IG9mIGEgZGlzYWJsZWQgc3dpdGNoLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1vcGFjaXR5LWRpc2FibGVkOiAuNSAhZGVmYXVsdDtcblxuLy8vIEN1cnNvciBmb3IgYSBkaXNhYmxlZCBzd2l0Y2guXG4vLy8gQHR5cGUgQ3Vyc29yXG4kc3dpdGNoLWN1cnNvci1kaXNhYmxlZDogbm90LWFsbG93ZWQgIWRlZmF1bHQ7XG5cbi8vIG1ha2UgdGhlbSB2YXJpYWJsZXNcbi8vIGFzayBhYm91dCBhY2Nlc3NpYmlsaXR5IG9uIGxhYmVsXG4vLyBjaGFuZ2UgY2xhc3MgbmFtZSBmb3IgdGV4dFxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc3dpdGNoIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byBhIGNvbnRhaW5lciBjbGFzcy5cbkBtaXhpbiBzd2l0Y2gtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAkc3dpdGNoLW1hcmdpbjtcbiAgb3V0bGluZTogMDtcblxuICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGNhc2NhZGUgZG93biB0byB0aGUgc3dpdGNoIHRleHRcbiAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogJHdoaXRlO1xuXG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc3dpdGNoIGlucHV0LiBBcHBseSB0aGlzIHRvIGFuIGA8aW5wdXQ+YCB3aXRoaW4gYSBzd2l0Y2guXG5AbWl4aW4gc3dpdGNoLWlucHV0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBvcGFjaXR5OiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBiYWNrZ3JvdW5kIGFuZCBwYWRkbGUgb2YgYSBzd2l0Y2guIEFwcGx5IHRoaXMgdG8gYSBgPGxhYmVsPmAgd2l0aGluIGEgc3dpdGNoLlxuQG1peGluIHN3aXRjaC1wYWRkbGUge1xuICAkc3dpdGNoLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAqIDI7XG4gICRwYWRkbGUtaGVpZ2h0OiAkc3dpdGNoLWhlaWdodCAtICgkc3dpdGNoLXBhZGRsZS1vZmZzZXQgKiAyKTtcbiAgJHBhZGRsZS13aWR0aDogJHN3aXRjaC1oZWlnaHQgLSAoJHN3aXRjaC1wYWRkbGUtb2Zmc2V0ICogMik7XG4gICRwYWRkbGUtYWN0aXZlLW9mZmVzdDogJHN3aXRjaC13aWR0aCAtICRwYWRkbGUtd2lkdGggLSAkc3dpdGNoLXBhZGRsZS1vZmZzZXQ7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6ICRzd2l0Y2gtd2lkdGg7XG4gIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XG5cbiAgYm9yZGVyLXJhZGl1czogJHN3aXRjaC1yYWRpdXM7XG4gIGJhY2tncm91bmQ6ICRzd2l0Y2gtYmFja2dyb3VuZDtcbiAgdHJhbnNpdGlvbjogJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjtcblxuICAvLyBSZXNldHRpbmcgdGhlc2UgPGxhYmVsPiBwcmVzZXRzIHNvIHR5cGUgc3R5bGVzIGNhc2NhZGUgZG93blxuICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG5cbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gIC8vIE5lZWRlZCB0byBvdmVycmlkZSBzcGVjaWZpY2l0eVxuICBpbnB1dCArICYge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIC8vIFRoZSBwYWRkbGUgaXRzZWxmXG4gICY6OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAkc3dpdGNoLXBhZGRsZS1vZmZzZXQ7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkc3dpdGNoLXBhZGRsZS1vZmZzZXQ7XG5cbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogJHBhZGRsZS13aWR0aDtcbiAgICBoZWlnaHQ6ICRwYWRkbGUtaGVpZ2h0O1xuXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICBib3JkZXItcmFkaXVzOiAkc3dpdGNoLXBhZGRsZS1yYWRpdXM7XG4gICAgYmFja2dyb3VuZDogJHN3aXRjaC1wYWRkbGUtYmFja2dyb3VuZDtcbiAgICB0cmFuc2l0aW9uOiAkc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uO1xuICAgIGNvbnRlbnQ6ICcnO1xuICB9XG5cbiAgLy8gQ2hhbmdlIHRoZSB2aXN1YWwgc3R5bGUgd2hlbiB0aGUgc3dpdGNoIGlzIGFjdGl2ZVxuICBpbnB1dDpjaGVja2VkIH4gJiB7XG4gICAgYmFja2dyb3VuZDogJHN3aXRjaC1iYWNrZ3JvdW5kLWFjdGl2ZTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1hY3RpdmUtb2ZmZXN0O1xuICAgIH1cbiAgfVxuXG4gIC8vIGluZGljYXRlIGEgZGlzYWJsZWQgc3dpdGNoXG4gIGlucHV0OmRpc2FibGVkIH4gJiB7XG4gICAgY3Vyc29yOiAkc3dpdGNoLWN1cnNvci1kaXNhYmxlZDtcbiAgICBvcGFjaXR5OiAkc3dpdGNoLW9wYWNpdHktZGlzYWJsZWQ7XG4gIH1cblxuICBpbnB1dDpmb2N1cyB+ICYge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgfVxufVxuXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgYWN0aXZlL2luYWN0aXZlIHRleHQgaW5zaWRlIGEgc3dpdGNoLiBBcHBseSB0aGlzIHRvIHRleHQgZWxlbWVudHMgaW5zaWRlIHRoZSBzd2l0Y2ggYDxsYWJlbD5gLlxuQG1peGluIHN3aXRjaC10ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBhY3RpdmUgc3RhdGUgdGV4dCB3aXRoaW4gYSBzd2l0Y2guXG5AbWl4aW4gc3dpdGNoLXRleHQtYWN0aXZlIHtcbiAgI3skZ2xvYmFsLWxlZnR9OiA4JTtcbiAgZGlzcGxheTogbm9uZTtcblxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgPiAmIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBpbmFjdGl2ZSBzdGF0ZSB0ZXh0IHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtdGV4dC1pbmFjdGl2ZSB7XG4gICN7JGdsb2JhbC1yaWdodH06IDE1JTtcblxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgPiAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSBzaXplIG9mIGEgc3dpdGNoIGJ5IG1vZGlmeWluZyB0aGUgc2l6ZSBvZiB0aGUgYm9keSBhbmQgcGFkZGxlLiBBcHBseSB0aGlzIHRvIGEgc3dpdGNoIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZvbnQtc2l6ZSBbMXJlbV0gLSBGb250IHNpemUgb2YgbGFiZWwgdGV4dCB3aXRoaW4gdGhlIHN3aXRjaC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHN3aXRjaC1oZWlnaHQgWzJyZW1dIC0gSGVpZ2h0IG9mIHRoZSBzd2l0Y2ggYm9keS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHBhZGRsZS1vZmZzZXQgWzAuMjVyZW1dIC0gU3BhY2luZyBiZXR3ZWVuIHRoZSBzd2l0Y2ggcGFkZGxlIGFuZCB0aGUgZWRnZSBvZiB0aGUgc3dpdGNoIGJvZHkuXG5AbWl4aW4gc3dpdGNoLXNpemUoXG4gICRmb250LXNpemU6IDFyZW0sXG4gICRzd2l0Y2gtaGVpZ2h0OiAycmVtLFxuICAkcGFkZGxlLW9mZnNldDogMC4yNXJlbVxuKSB7XG5cbiAgJHN3aXRjaC13aWR0aDogJHN3aXRjaC1oZWlnaHQgKiAyO1xuICAkcGFkZGxlLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAtICgkcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLWhlaWdodDogJHN3aXRjaC1oZWlnaHQgLSAoJHBhZGRsZS1vZmZzZXQgKiAyKTtcbiAgJHBhZGRsZS1hY3RpdmUtb2ZmZXN0OiAkc3dpdGNoLXdpZHRoIC0gJHBhZGRsZS13aWR0aCAtICRwYWRkbGUtb2Zmc2V0O1xuXG4gIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XG5cbiAgLnN3aXRjaC1wYWRkbGUge1xuICAgIHdpZHRoOiAkc3dpdGNoLXdpZHRoO1xuICAgIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICB9XG5cbiAgLnN3aXRjaC1wYWRkbGU6OmFmdGVyIHtcbiAgICB0b3A6ICRwYWRkbGUtb2Zmc2V0O1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1vZmZzZXQ7XG4gICAgd2lkdGg6ICRwYWRkbGUtd2lkdGg7XG4gICAgaGVpZ2h0OiAkcGFkZGxlLWhlaWdodDtcbiAgfVxuXG4gIGlucHV0OmNoZWNrZWQgfiAuc3dpdGNoLXBhZGRsZTo6YWZ0ZXIge1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1hY3RpdmUtb2ZmZXN0O1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXN3aXRjaCB7XG4gIC8vIENvbnRhaW5lciBjbGFzc1xuICAuc3dpdGNoIHtcbiAgICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xuICAgIEBpbmNsdWRlIHN3aXRjaC1jb250YWluZXI7XG4gIH1cblxuICAvLyA8aW5wdXQ+IGVsZW1lbnRcbiAgLnN3aXRjaC1pbnB1dCB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLWlucHV0O1xuICB9XG5cbiAgLy8gPGxhYmVsPiBlbGVtZW50XG4gIC5zd2l0Y2gtcGFkZGxlIHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtcGFkZGxlO1xuICB9XG5cbiAgLy8gQmFzZSBsYWJlbCB0ZXh0IHN0eWxlc1xuICAlc3dpdGNoLXRleHQge1xuICAgIEBpbmNsdWRlIHN3aXRjaC10ZXh0O1xuICB9XG5cbiAgLy8gQWN0aXZlIGxhYmVsIHRleHQgc3R5bGVzXG4gIC5zd2l0Y2gtYWN0aXZlIHtcbiAgICBAZXh0ZW5kICVzd2l0Y2gtdGV4dDtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dC1hY3RpdmU7XG4gIH1cblxuICAvLyBJbmFjdGl2ZSBsYWJlbCB0ZXh0IHN0eWxlc1xuICAuc3dpdGNoLWluYWN0aXZlIHtcbiAgICBAZXh0ZW5kICVzd2l0Y2gtdGV4dDtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dC1pbmFjdGl2ZTtcbiAgfVxuXG4gIC8vIFN3aXRjaCBzaXplc1xuICAuc3dpdGNoLnRpbnkge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDEwKSwgJHN3aXRjaC1oZWlnaHQtdGlueSwgJHN3aXRjaC1wYWRkbGUtb2Zmc2V0KTtcbiAgfVxuXG4gIC5zd2l0Y2guc21hbGwge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDEyKSwgJHN3aXRjaC1oZWlnaHQtc21hbGwsICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XG4gIH1cblxuICAuc3dpdGNoLmxhcmdlIHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtc2l6ZShyZW0tY2FsYygxNiksICRzd2l0Y2gtaGVpZ2h0LWxhcmdlLCAkc3dpdGNoLXBhZGRsZS1vZmZzZXQpO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vIHNhc3MtbGludDpkaXNhYmxlIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcblxuLy8vL1xuLy8vIEBncm91cCB0YWJsZVxuLy8vL1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgdGFibGUgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLWJhY2tncm91bmQ6ICR3aGl0ZSAgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHNjYWxlIGZvciBkYXJrZW5pbmcgdGhlIHN0cmlwZWQgdGFibGUgcm93cyBhbmQgdGhlIHRhYmxlIGJvcmRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWJsZS1jb2xvci1zY2FsZTogNSUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHN0eWxlIGZvciB0YWJsZSBib3JkZXIuXG4vLy8gQHR5cGUgTGlzdFxuJHRhYmxlLWJvcmRlcjogMXB4IHNvbGlkIHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGZvciB0YWJsZS5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWJsZS1wYWRkaW5nOiByZW0tY2FsYyg4IDEwIDEwKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgc2NhbGUgZm9yIGRhcmtlbmluZyB0aGUgdGFibGUgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWJsZS1ob3Zlci1zY2FsZTogMiUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHN0YW5kYXJkIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTGlzdFxuJHRhYmxlLXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBzdHJpcGVkIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTGlzdFxuJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlICsgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgdGFibGVzIGFyZSBzdHJpcGVkIGJ5IGRlZmF1bHQgYW5kIGFuIC51bnN0cmlwZWQgY2xhc3MgaXMgY3JlYXRlZC4gSWYgYGZhbHNlYCwgYSAuc3RyaXBlZCBjbGFzcyBpcyBjcmVhdGVkLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiR0YWJsZS1pcy1zdHJpcGVkOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBzdHJpcGVkIHJvd3MuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3Igc2hvd2luZyB0aGUgc3RyaXBlIG9uIHJvd3Mgb2YgdGhlIHRhYmxlcywgZXhjbHVkaW5nIHRoZSBoZWFkZXIgYW5kIGZvb3Rlci4gSWYgZXZlbiwgdGhlIGV2ZW4gcm93cyB3aWxsIGhhdmUgYSBiYWNrZ3JvdW5kIGNvbG9yLiBJZiBvZGQsIHRoZSBvZGQgcm93cyB3aWxsIGhhdmUgYSBiYWNrZ3JvdW5kIGNvbG9yLiBJZiBlbXB0eSwgb3IgYW55IG90aGVyIHZhbHVlLCB0aGUgdGFibGUgcm93cyB3aWxsIGhhdmUgbm8gc3RyaXBpbmcuXG4vLy8gQHR5cGUgS2V5d29yZFxuJHRhYmxlLXN0cmlwZTogZXZlbiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGhlYWRlciBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtaGVhZC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlIC8gMikgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIGhlYWRlciByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1oZWFkLXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1oZWFkLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBmb290ZXIgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLWZvb3QtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIGZvb3RlciByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1mb290LXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1mb290LWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGhlYWRlci5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLWhlYWQtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgZm9vdGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtZm9vdC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3Igc2hvd2luZyB0aGUgaGVhZGVyIHdoZW4gdXNpbmcgc3RhY2tlZCB0YWJsZXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHNob3ctaGVhZGVyLWZvci1zdGFja2VkOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8vIEJyZWFrcG9pbnQgYXQgd2hpY2ggc3RhY2tlZCB0YWJsZSBzd2l0Y2hlcyBmcm9tIG1vYmlsZSB0byBkZXNrdG9wIHZpZXcuXG4vLy8gQHR5cGUgQnJlYWtwb2ludFxuJHRhYmxlLXN0YWNrLWJyZWFrcG9pbnQ6IG1lZGl1bSAhZGVmYXVsdDtcblxuQG1peGluIC16Zi10YWJsZS1zdHJpcGUoJHN0cmlwZTogJHRhYmxlLXN0cmlwZSkge1xuICB0ciB7XG4gICAgLy8gSWYgc3RyaXBlIGlzIHNldCB0byBldmVuLCBkYXJrZW4gdGhlIGV2ZW4gcm93cy5cbiAgICBAaWYgJHN0cmlwZSA9PSBldmVuIHtcbiAgICAgICY6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBzdHJpcGUgaXMgc2V0IHRvIG9kZCwgZGFya2VuIHRoZSBvZGQgcm93cy5cbiAgICBAZWxzZSBpZiAkc3RyaXBlID09IG9kZCB7XG4gICAgICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIC16Zi10YWJsZS11bnN0cmlwZSgpIHtcbiAgdHIge1xuICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgYm9yZGVyLWJvdHRvbTogJHRhYmxlLWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmFja2dyb3VuZDtcbiAgfVxufVxuXG5AbWl4aW4gLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlOiAkdGFibGUtc3RyaXBlLCAkaXMtc3RyaXBlZDogJHRhYmxlLWlzLXN0cmlwZWQpIHtcbiAgdGhlYWQsXG4gIHRib2R5LFxuICB0Zm9vdCB7XG4gICAgYm9yZGVyOiAkdGFibGUtYm9yZGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1iYWNrZ3JvdW5kO1xuICB9XG5cbiAgLy8gQ2FwdGlvblxuICBjYXB0aW9uIHtcbiAgICBwYWRkaW5nOiAkdGFibGUtcGFkZGluZztcbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiAgfVxuXG4gIC8vIFRhYmxlIGhlYWRcbiAgdGhlYWQge1xuICAgIGJhY2tncm91bmQ6ICR0YWJsZS1oZWFkLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICR0YWJsZS1oZWFkLWZvbnQtY29sb3I7XG4gIH1cblxuICAvLyBUYWJsZSBmb290XG4gIHRmb290IHtcbiAgICBiYWNrZ3JvdW5kOiAkdGFibGUtZm9vdC1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkdGFibGUtZm9vdC1mb250LWNvbG9yO1xuICB9XG5cbiAgLy8gVGFibGUgaGVhZCBhbmQgZm9vdFxuICB0aGVhZCxcbiAgdGZvb3Qge1xuICAgIC8vIFJvd3Mgd2l0aGluIGhlYWQgYW5kIGZvb3RcbiAgICB0ciB7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAvLyBDZWxscyB3aXRoaW4gaGVhZCBhbmQgZm9vdFxuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgIHBhZGRpbmc6ICR0YWJsZS1wYWRkaW5nO1xuICAgICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gICAgICB0ZXh0LWFsaWduOiAjeyRnbG9iYWwtbGVmdH07XG4gICAgfVxuICB9XG5cbiAgLy8gVGFibGUgcm93c1xuICB0Ym9keSB7XG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGFibGVzIGFyZSBzdHJpcGVkXG4gIEBpZiAkaXMtc3RyaXBlZCA9PSB0cnVlIHtcbiAgICB0Ym9keSB7XG4gICAgICBAaW5jbHVkZSAtemYtdGFibGUtc3RyaXBlKCRzdHJpcGUpO1xuICAgIH1cblxuICAgICYudW5zdHJpcGVkIHtcbiAgICAgIHRib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXVuc3RyaXBlKCk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1iYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRhYmxlcyBhcmUgbm90IHN0cmlwZWRcbiAgQGVsc2UgaWYgJGlzLXN0cmlwZWQgPT0gZmFsc2Uge1xuICAgIHRib2R5IHtcbiAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS11bnN0cmlwZSgpO1xuICAgIH1cblxuICAgICYuc3RyaXBlZCB7XG4gICAgICB0Ym9keSB7XG4gICAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS1zdHJpcGUoJHN0cmlwZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHRoZSBnZW5lcmFsIHN0eWxlcyBmb3IgdGFibGVzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHN0cmlwZSBbJHRhYmxlLXN0cmlwZV0gLSBVc2VzIGtleXdvcmRzIGV2ZW4sIG9kZCwgb3Igbm9uZSB0byBkYXJrZW4gcm93cyBvZiB0aGUgdGFibGUuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGV2ZW4uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkbmVzdCBbZmFsc2VdIC0gTmVlZGVkIGlmIHlvdSBvbmx5IHdhbnQgdG8gYXBwbHkgdGhpcyB0byBhIHNwZWNpZmljIHRhYmxlLlxuQG1peGluIHRhYmxlKFxuICAkc3RyaXBlOiAkdGFibGUtc3RyaXBlLFxuICAkbmVzdDogZmFsc2Vcbikge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4gIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4gIEBpZiAkbmVzdCB7XG4gICAgQGluY2x1ZGUgLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgdGhlIGFiaWxpdHkgdG8gaG9yaXpvbnRhbGx5IHNjcm9sbCB0aGUgdGFibGUgd2hlbiB0aGUgY29udGVudCBvdmVyZmxvd3MgaG9yaXpvbnRhbGx5LlxuQG1peGluIHRhYmxlLXNjcm9sbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteDogYXV0bztcbn1cblxuLy8vIFNsaWdodGx5IGRhcmtlbnMgdGhlIHRhYmxlIHJvd3Mgb24gaG92ZXIuXG5AbWl4aW4gdGFibGUtaG92ZXIge1xuICB0aGVhZCB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSB0YWJsZSBoZWFkZXIgcm93cyBvbiBob3Zlci5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1oZWFkLXJvdy1ob3ZlcjtcbiAgICB9XG4gIH1cblxuICB0Zm9vdCB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSB0YWJsZSBmb290ZXIgcm93cyBvbiBob3Zlci5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1mb290LXJvdy1ob3ZlcjtcbiAgICB9XG4gIH1cblxuICB0Ym9keSB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSBub24tc3RyaXBlZCB0YWJsZSByb3dzIG9uIGhvdmVyLlxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1ob3ZlcjtcbiAgICB9XG4gIH1cblxuICBAaWYgJHRhYmxlLWlzLXN0cmlwZWQgPT0gdHJ1ZSB7XG4gICAgLy8gRGFya2VucyB0aGUgZXZlbiBzdHJpcGVkIHRhYmxlIHJvd3MuXG4gICAgQGlmKCR0YWJsZS1zdHJpcGUgPT0gZXZlbikge1xuICAgICAgJjpub3QoLnVuc3RyaXBlZCkgdHI6bnRoLW9mLXR5cGUoZXZlbik6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYXJrZW5zIHRoZSBvZGQgc3RyaXBlZCB0YWJsZSByb3dzLlxuICAgIEBlbHNlIGlmKCR0YWJsZS1zdHJpcGUgPT0gb2RkKSB7XG4gICAgICAmOm5vdCgudW5zdHJpcGVkKSB0cjpudGgtb2YtdHlwZShvZGQpOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgJHRhYmxlLWlzLXN0cmlwZWQgPT0gZmFsc2Uge1xuICAgIC8vIERhcmtlbnMgdGhlIGV2ZW4gc3RyaXBlZCB0YWJsZSByb3dzLlxuICAgIEBpZigkdGFibGUtc3RyaXBlID09IGV2ZW4pIHtcbiAgICAgICYuc3RyaXBlZCB0cjpudGgtb2YtdHlwZShldmVuKTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERhcmtlbnMgdGhlIG9kZCBzdHJpcGVkIHRhYmxlIHJvd3MuXG4gICAgQGVsc2UgaWYoJHRhYmxlLXN0cmlwZSA9PSBvZGQpIHtcbiAgICAgICYuc3RyaXBlZCB0cjpudGgtb2YtdHlwZShvZGQpOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzdGFja2VkIHRhYmxlLiBVc2VmdWwgZm9yIHNtYWxsLXNjcmVlbiBsYXlvdXRzLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGhlYWRlciBbJHNob3ctaGVhZGVyLWZvci1zdGFja2VkXSAtIFNob3cgdGhlIGZpcnN0IHRoIG9mIGhlYWRlciB3aGVuIHN0YWNrZWQuXG5AbWl4aW4gdGFibGUtc3RhY2soJGhlYWRlcjogJHNob3ctaGVhZGVyLWZvci1zdGFja2VkKSB7XG4gIEBpZiAkaGVhZGVyIHtcbiAgICB0aGVhZCB7XG4gICAgICB0aCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgdGhlYWQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICB0Zm9vdCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIHRyLFxuICB0aCxcbiAgdGQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgdGQge1xuICAgIGJvcmRlci10b3A6IDA7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdGFibGUoJG5lc3Q6IGZhbHNlKSB7XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSB0YWJsZSgkbmVzdDogJG5lc3QpO1xuICB9XG5cbiAgdGFibGUuc3RhY2sge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxlLXN0YWNrLWJyZWFrcG9pbnQgZG93bikge1xuICAgICAgQGluY2x1ZGUgdGFibGUtc3RhY2s7XG4gICAgfVxuICB9XG5cbiAgdGFibGUuc2Nyb2xsIHtcbiAgICBAaW5jbHVkZSB0YWJsZS1zY3JvbGw7XG4gIH1cblxuICB0YWJsZS5ob3ZlciB7XG4gICAgQGluY2x1ZGUgdGFibGUtaG92ZXI7XG4gIH1cblxuICAudGFibGUtc2Nyb2xsIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuXG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBiYWRnZVxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBiYWRnZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRiYWRnZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmFkZ2UtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEFsdGVybmF0ZSB0ZXh0IGNvbG9yIGZvciBiYWRnZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRiYWRnZS1jb2xvci1hbHQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIENvbG9yaW5nIGNsYXNzZXMuIEEgbWFwIG9mIGNsYXNzZXMgdG8gb3V0cHV0IGluIHlvdXIgQ1NTLCBsaWtlIGAuc2Vjb25kYXJ5YCwgYC5zdWNjZXNzYCwgYW5kIHNvIG9uLlxuLy8vIEB0eXBlIE1hcFxuJGJhZGdlLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGJhZGdlcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRiYWRnZS1wYWRkaW5nOiAwLjNlbSAhZGVmYXVsdDtcblxuLy8vIE1pbmltdW0gd2lkdGggb2YgYSBiYWRnZS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRiYWRnZS1taW53aWR0aDogMi4xZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJhZGdlLWZvbnQtc2l6ZTogMC42cmVtICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIHRoZSBiYXNlIHN0eWxlcyBmb3IgYSBiYWRnZS5cbkBtaXhpbiBiYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWluLXdpZHRoOiAkYmFkZ2UtbWlud2lkdGg7XG4gIHBhZGRpbmc6ICRiYWRnZS1wYWRkaW5nO1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICBmb250LXNpemU6ICRiYWRnZS1mb250LXNpemU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tYmFkZ2Uge1xuICAuYmFkZ2Uge1xuICAgIEBpbmNsdWRlIGJhZGdlO1xuXG4gICAgYmFja2dyb3VuZDogJGJhZGdlLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRiYWRnZS1jb2xvcjtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJhZGdlLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICAgICAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGNvbG9yLCAoJGJhZGdlLWNvbG9yLCAkYmFkZ2UtY29sb3ItYWx0KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWRjcnVtYnNcbi8vLy9cblxuLy8vIE1hcmdpbiBhcm91bmQgYSBicmVhZGNydW1icyBjb250YWluZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJyZWFkY3J1bWJzLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMSkgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIENvbG9yXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiB0aGUgYWN0aXZlIGJyZWFkY3J1bWIgbGluay5cbi8vLyBAdHlwZSBDb2xvclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gT3BhY2l0eSBvZiBkaXNhYmxlZCBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiBiZXR3ZWVuIGJyZWFkY3J1bWIgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW46IDAuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIG1ha2VzIGJyZWFkY3J1bWIgbGlua3MgdXBwZXJjYXNlLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRicmVhZGNydW1icy1pdGVtLXVwcGVyY2FzZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYWRkcyBhIHNlcGVyYXRvciBiZXR3ZWVuIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBJZiBpdCBleGlzdHMgJGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2ggaXMgdXNlZCB0byBidWlsZCAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3IuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbi5cbkBpZiB2YXJpYWJsZS1leGlzdHMoYnJlYWRjcnVtYnMtaXRlbS1zbGFzaCkge1xuICAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3I6ICRicmVhZGNydW1icy1pdGVtLXNsYXNoO1xufVxuXG4vLy8gVXNlZCBjaGFyYWN0ZXIgZm9yIHRoZSBicmVhZGNydW1iIHNlcGFyYXRvci5cbi8vLyBAdHlwZSBDb250ZW50XG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbTogJy8nICFkZWZhdWx0O1xuXG4vLy8gVXNlZCBjaGFyYWN0ZXIgZm9yIHRoZSBicmVhZGNydW1iIHNlcGFyYXRvciBpbiBydGwgbW9kZS5cbi8vLyBAdHlwZSBDb250ZW50XG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbS1ydGw6ICdcXFxcJyAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIGJyZWFkY3J1bWIgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vIElmIGl0IGV4aXN0cyAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaC1jb2xvciBpcyB1c2VkIHRvIGJ1aWxkICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1jb2xvci4gU2VlIHRoZSBkb2N1bWVudGF0aW9uLlxuQGlmIHZhcmlhYmxlLWV4aXN0cyhicmVhZGNydW1icy1pdGVtLXNsYXNoLWNvbG9yKSB7XG4gICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1jb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2gtY29sb3I7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBicmVhZGNydW1icyBjb250YWluZXIsIGFsb25nIHdpdGggdGhlIHN0eWxlcyBmb3IgdGhlIGA8bGk+YCBhbmQgYDxhPmAgZWxlbWVudHMgaW5zaWRlIG9mIGl0LlxuQG1peGluIGJyZWFkY3J1bWJzLWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBtYXJnaW46ICRicmVhZGNydW1icy1tYXJnaW47XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgLy8gSXRlbSB3cmFwcGVyXG4gIGxpIHtcbiAgICBmbG9hdDogI3skZ2xvYmFsLWxlZnR9O1xuXG4gICAgZm9udC1zaXplOiAkYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU7XG4gICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLWNvbG9yLWN1cnJlbnQ7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICAgQGlmICRicmVhZGNydW1icy1pdGVtLXVwcGVyY2FzZSB7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cblxuICAgIEBpZiAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3Ige1xuICAgICAgLy8gTmVlZCB0byBlc2NhcGUgdGhlIGJhY2tzbGFzaFxuICAgICAgJHNlcGFyYXRvcjogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSAnbHRyJywgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW0sICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtLXJ0bCk7XG5cbiAgICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgbWFyZ2luOiAwICRicmVhZGNydW1icy1pdGVtLW1hcmdpbjtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIGNvbnRlbnQ6ICRzZXBhcmF0b3I7XG4gICAgICAgICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGJyZWFkY3J1bWJzLWl0ZW0tbWFyZ2luO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhZ2UgbGlua3NcbiAgYSB7XG4gICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLWNvbG9yO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tYnJlYWRjcnVtYnMge1xuICAuYnJlYWRjcnVtYnMge1xuICAgIEBpbmNsdWRlIGJyZWFkY3J1bWJzLWNvbnRhaW5lcjtcblxuICAgIC5kaXNhYmxlZCB7XG4gICAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItZGlzYWJsZWQ7XG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGNhbGxvdXRcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvci5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmYWRlIHZhbHVlIGZvciBjYWxsb3V0IGJhY2tncm91bmRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGNhbGxvdXQtYmFja2dyb3VuZC1mYWRlOiA4NSUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBzdHlsZSBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgTGlzdFxuJGNhbGxvdXQtYm9yZGVyOiAxcHggc29saWQgcmdiYSgkYmxhY2ssIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjYWxsb3V0LW1hcmdpbjogMCAwIDFyZW0gMCAhZGVmYXVsdDtcblxuLy8vIFNpemVzIGZvciBDYWxsb3V0IHBhZGRpbmdzLlxuLy8vIEB0eXBlIE1hcFxuJGNhbGxvdXQtc2l6ZXM6IChcbiAgc21hbGw6IDAuNXJlbSxcbiAgZGVmYXVsdDogMXJlbSxcbiAgbGFyZ2U6IDNyZW0sXG4pICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FsbG91dHMsIGlmIHRoZSBjYWxsb3V0IGhhcyBhIGRhcmsgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtZm9udC1jb2xvci1hbHQ6ICRib2R5LWJhY2tncm91bmQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciByYWRpdXMgZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FsbG91dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQW1vdW50IHRvIHRpbnQgbGlua3MgdXNlZCB3aXRoaW4gY29sb3JlZCBwYW5lbHMuIFNldCB0byBgZmFsc2VgIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLlxuLy8vIEB0eXBlIE51bWJlciB8IEJvb2xlYW5cbiRjYWxsb3V0LWxpbmstdGludDogMzAlICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGEgY2FsbG91dCwgaW5jbHVkaW5nIHBhZGRpbmcgYW5kIG1hcmdpbi5cbkBtaXhpbiBjYWxsb3V0LWJhc2UoKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luOiAkY2FsbG91dC1tYXJnaW47XG4gIHBhZGRpbmc6IG1hcC1nZXQoJGNhbGxvdXQtc2l6ZXMsIGRlZmF1bHQpO1xuXG4gIGJvcmRlcjogJGNhbGxvdXQtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkY2FsbG91dC1yYWRpdXM7XG5cbiAgLy8gUmVzcGVjdCB0aGUgcGFkZGluZywgZm9vbC5cbiAgPiA6Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cblxuICA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBHZW5lcmF0ZSBxdWljayBzdHlsZXMgZm9yIGEgY2FsbG91dCB1c2luZyBhIHNpbmdsZSBjb2xvciBhcyBhIGJhc2VsaW5lLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGNhbGxvdXQtYmFja2dyb3VuZF0gLSBDb2xvciB0byB1c2UuXG5AbWl4aW4gY2FsbG91dC1zdHlsZSgkY29sb3I6ICRjYWxsb3V0LWJhY2tncm91bmQpIHtcbiAgJGJhY2tncm91bmQ6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGNhbGxvdXQtYmFja2dyb3VuZC1mYWRlKTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGJhY2tncm91bmQsICgkY2FsbG91dC1mb250LWNvbG9yLCAkY2FsbG91dC1mb250LWNvbG9yLWFsdCkpO1xufVxuXG5AbWl4aW4gY2FsbG91dC1zaXplKCRwYWRkaW5nKSB7XG4gIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbn1cblxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2FsbG91dC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRjYWxsb3V0LWJhY2tncm91bmRdIC0gQ29sb3IgdG8gdXNlLlxuQG1peGluIGNhbGxvdXQoJGNvbG9yOiAkY2FsbG91dC1iYWNrZ3JvdW5kKSB7XG4gIEBpbmNsdWRlIGNhbGxvdXQtYmFzZTtcbiAgQGluY2x1ZGUgY2FsbG91dC1zdHlsZSgkY29sb3IpO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1jYWxsb3V0IHtcbiAgLmNhbGxvdXQge1xuICAgIEBpbmNsdWRlIGNhbGxvdXQ7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIEBpbmNsdWRlIGNhbGxvdXQtc3R5bGUoJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkc2l6ZSwgJHBhZGRpbmcgaW4gbWFwLXJlbW92ZSgkY2FsbG91dC1zaXplcywgZGVmYXVsdCkge1xuICAgICAgJi4jeyRzaXplfSB7XG4gICAgICAgIEBpbmNsdWRlIGNhbGxvdXQtc2l6ZSgkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgY2FyZFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FyZC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGNhcmRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FyZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FyZC1kaXZpZGVyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgc3R5bGUuXG4vLy8gQHR5cGUgTGlzdFxuJGNhcmQtYm9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNhcmQgc2hhZG93LlxuLy8vIEB0eXBlIExpc3RcbiRjYXJkLXNoYWRvdzogbm9uZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIHJhZGl1cy5cbi8vLyBAdHlwZSBMaXN0XG4kY2FyZC1ib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjYXJkLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbi5cbi8vLyBAdHlwZSBudW1iZXJcbiRjYXJkLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2FyZCBjb250YWluZXIuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBjYXJkLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIGZvbnQgY29sb3Igb2YgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXJnaW4gLSBCb3R0b20gbWFyZ2luIG9mIHRoZSBjYXJkLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGJvcmRlciAtIEJvcmRlciBhcm91bmQgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtMaXN0fSAkcmFkaXVzIC0gYm9yZGVyIHJhZGl1cyBvZiB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaGFkb3cgLSBib3ggc2hhZG93IG9mIHRoZSBjYXJkLlxuQG1peGluIGNhcmQtY29udGFpbmVyKFxuICAkYmFja2dyb3VuZDogJGNhcmQtYmFja2dyb3VuZCxcbiAgJGNvbG9yOiAkY2FyZC1mb250LWNvbG9yLFxuICAkbWFyZ2luOiAkY2FyZC1tYXJnaW4tYm90dG9tLFxuICAkYm9yZGVyOiAkY2FyZC1ib3JkZXIsXG4gICRyYWRpdXM6ICRjYXJkLWJvcmRlci1yYWRpdXMsXG4gICRzaGFkb3c6ICRjYXJkLXNoYWRvd1xuKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBmbGV4LWdyb3c6IDE7XG4gIH1cblxuICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuXG4gIGJvcmRlcjogJGJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgYm94LXNoYWRvdzogJHNoYWRvdztcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjb2xvcjogJGNvbG9yO1xuXG4gICYgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2FyZCBkaXZpZGVyLlxuQG1peGluIGNhcmQtZGl2aWRlcihcbiAgJGJhY2tncm91bmQ6ICRjYXJkLWRpdmlkZXItYmFja2dyb3VuZCxcbiAgJHBhZGRpbmc6ICRjYXJkLXBhZGRpbmdcbikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICB9XG5cbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuXG4gICYgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2FyZCBzZWN0aW9uLlxuQG1peGluIGNhcmQtc2VjdGlvbihcbiAgJHBhZGRpbmc6ICRjYXJkLXBhZGRpbmdcbikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4OiAxIDAgYXV0bztcbiAgfVxuXG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuXG4gICYgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1jYXJkIHtcbiAgLmNhcmQge1xuICAgIEBpbmNsdWRlIGNhcmQtY29udGFpbmVyO1xuICB9XG5cbiAgLmNhcmQtZGl2aWRlciB7XG4gICAgQGluY2x1ZGUgY2FyZC1kaXZpZGVyO1xuICB9XG5cbiAgLmNhcmQtc2VjdGlvbiB7XG4gICAgQGluY2x1ZGUgY2FyZC1zZWN0aW9uO1xuICB9XG5cbiAgLy8gRm9yIElFIDExIC0gRmxleGJ1Z1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGhpbGlwd2FsdG9uL2ZsZXhidWdzL2lzc3Vlcy83NVxuICAuY2FyZC1pbWFnZSB7XG4gICAgbWluLWhlaWdodDogMXB4O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZHJvcGRvd25cbi8vLy9cblxuLy8vIFBhZGRpbmcgZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bi1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcm9wZG93bi1iYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBMaXN0XG4kZHJvcGRvd24tYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBMaXN0XG4kZHJvcGRvd24tZm9udC1zaXplOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gV2lkdGggZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3duLXdpZHRoOiAzMDBweCAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIFNpemVzIGZvciBkcm9wZG93biBwYW5lcy4gRWFjaCBzaXplIGlzIGEgQ1NTIGNsYXNzIHlvdSBjYW4gYXBwbHkuXG4vLy8gQHR5cGUgTWFwXG4kZHJvcGRvd24tc2l6ZXM6IChcbiAgdGlueTogMTAwcHgsXG4gIHNtYWxsOiAyMDBweCxcbiAgbGFyZ2U6IDQwMHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIEFwcGxpZXMgc3R5bGVzIGZvciBhIGJhc2ljIGRyb3Bkb3duLlxuQG1peGluIGRyb3Bkb3duLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTA7XG5cbiAgZGlzcGxheTogbm9uZTtcblxuICB3aWR0aDogJGRyb3Bkb3duLXdpZHRoO1xuICBwYWRkaW5nOiAkZHJvcGRvd24tcGFkZGluZztcblxuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIGJvcmRlcjogJGRyb3Bkb3duLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJGRyb3Bkb3duLXJhZGl1cztcbiAgYmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLWJhY2tncm91bmQ7XG5cbiAgZm9udC1zaXplOiAkZHJvcGRvd24tZm9udC1zaXplO1xuXG5cbiAgLy8gQWxsb3cgYW4gaW50ZXJtaXR0ZW50IHN0YXRlIHRvIGRvIHBvc2l0aW9uaW5nIGJlZm9yZSBtYWtpbmcgdmlzaWJsZS5cbiAgJi5pcy1vcGVuaW5nIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gICYuaXMtb3BlbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1kcm9wZG93biB7XG4gIC5kcm9wZG93bi1wYW5lIHtcbiAgICBAaW5jbHVkZSBkcm9wZG93bi1jb250YWluZXI7XG4gIH1cblxuICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJGRyb3Bkb3duLXNpemVzIHtcbiAgICAuZHJvcGRvd24tcGFuZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgd2lkdGg6ICRzaXplO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHBhZ2luYXRpb25cbi8vLy9cblxuLy8vIEZvbnQgc2l6ZSBvZiBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24tZm9udC1zaXplOiByZW0tY2FsYygxNCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gb2YgdGhlIHBhZ2luYXRpb24gb2JqZWN0LlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24tbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIHBhZ2luYXRpb24gaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIG9mIHBhZ2luYXRpb24gaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmc6IHJlbS1jYWxjKDMgMTApICFkZWZhdWx0O1xuXG4vLy8gUmlnaHQgbWFyZ2luIHRvIHNlcGFyYXRlIHBhZ2luYXRpb24gaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1pdGVtLXNwYWNpbmc6IHJlbS1jYWxjKDEpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHBhZ2luYXRpb24gaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBwYWdpbmF0aW9uIGl0ZW1zIG9uIGhvdmVyLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBwYWdpbmF0aW9uIGl0ZW0gZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1jdXJyZW50OiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgdGhlIHBhZ2luYXRpb24gaXRlbSBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1jb2xvci1jdXJyZW50OiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIGEgZGlzYWJsZWQgcGFnaW5hdGlvbiBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWRpc2FibGVkOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiB0aGUgZWxsaXBzaXMgaW4gYSBwYWdpbmF0aW9uIG1lbnUuXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWVsbGlwc2lzLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgZmFsc2VgLCBkb24ndCBkaXNwbGF5IHBhZ2UgbnVtYmVyIGxpbmtzIG9uIG1vYmlsZSwgb25seSBuZXh0L3ByZXZpb3VzIGxpbmtzXG4vLy8gYW5kIG9wdGlvbmFsbHkgY3VycmVudCBwYWdlIG51bWJlci5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXM6IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBkaXNwbGF5IHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyIG9uIG1vYmlsZSBldmVuIGlmIGAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXNgIGlzIHNldCB0byBgZmFsc2VgLlxuLy8vIFRoaXMgcGFyYW1ldGVyIHdpbGwgb25seSBvdmVycmlkZSB0aGUgdmlzaWJpbGl0eSBzZXR0aW5nIG9mIHRoZSBjdXJyZW50IGl0ZW0gZm9yIGAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXM6IGZhbHNlO2AsXG4vLy8gaXQgd2lsbCBub3QgYWZmZWN0IHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyIHZpc2liaWxpdHkgd2hlbiBgJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zYCBpcyBzZXQgdG8gYHRydWVgLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwYWdpbmF0aW9uLW1vYmlsZS1jdXJyZW50LWl0ZW06IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBhcnJvd3MgYXJlIGFkZGVkIHRvIHRoZSBuZXh0IGFuZCBwcmV2aW91cyBsaW5rcyBvZiBwYWdpbmF0aW9uLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwYWdpbmF0aW9uLWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIENvbnRlbnQgZm9yIHRoZSBwcmV2aW91cyBhcnJvdyB3aGVuIGAkcGFnaW5hdGlvbi1hcnJvd3NgIGlzIGB0cnVlYFxuLy8vIEB0eXBlIFN0cmluZ1xuJHBhZ2luYXRpb24tYXJyb3ctcHJldmlvdXM6ICdcXDAwQUInICFkZWZhdWx0O1xuXG4vLy8gQ29udGVudCBmb3IgdGhlIG5leHQgYXJyb3cgd2hlbiBgJHBhZ2luYXRpb24tYXJyb3dzYCBpcyBgdHJ1ZWBcbi8vLyBAdHlwZSBTdHJpbmdcbiRwYWdpbmF0aW9uLWFycm93LW5leHQ6ICdcXDAwQkInICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgcGFnaW5hdGlvbiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gYSBgPHVsPmAuXG5AbWl4aW4gcGFnaW5hdGlvbi1jb250YWluZXIgKFxuICAkbWFyZ2luLWJvdHRvbTogJHBhZ2luYXRpb24tbWFyZ2luLWJvdHRvbSxcbiAgJGZvbnQtc2l6ZTogJHBhZ2luYXRpb24tZm9udC1zaXplLFxuICAkc3BhY2luZzogJHBhZ2luYXRpb24taXRlbS1zcGFjaW5nLFxuICAkcmFkaXVzOiAkcGFnaW5hdGlvbi1yYWRpdXMsXG4gICRjb2xvcjogJHBhZ2luYXRpb24taXRlbS1jb2xvcixcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlclxuKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcblxuICAvLyBMaXN0IGl0ZW1cbiAgbGkge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcblxuICAgIEBpZiAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXMge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAmOmxhc3QtY2hpbGQsXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgfVxuXG4gICAgICBAaWYgJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbSB7XG4gICAgICAgICYuY3VycmVudCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYWdlIGxpbmtzXG4gIGEsXG4gIGJ1dHRvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogJHBhZGRpbmc7XG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgICBjb2xvcjogJGNvbG9yO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1ob3ZlcjtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgY3VycmVudCBwYWdpbmF0aW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gYW4gYDxhPmAuXG5AbWl4aW4gcGFnaW5hdGlvbi1pdGVtLWN1cnJlbnQgKFxuICAkcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nLFxuICAkYmFja2dyb3VuZC1jdXJyZW50OiAkcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudCxcbiAgJGNvbG9yLWN1cnJlbnQ6ICRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItY3VycmVudFxuKSB7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1jdXJyZW50O1xuICBjb2xvcjogJGNvbG9yLWN1cnJlbnQ7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGRpc2FibGVkIHBhZ2luYXRpb24gaXRlbS4gQXBwbHkgdGhpcyB0byBhbiBgPGE+YC5cbkBtaXhpbiBwYWdpbmF0aW9uLWl0ZW0tZGlzYWJsZWQgKFxuICAkcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nLFxuICAkY29sb3I6ICRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWRcbikge1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgY29sb3I6ICRjb2xvcjtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIGVsbGlwc2lzIGZvciB1c2UgaW4gYSBwYWdpbmF0aW9uIGxpc3QuXG5AbWl4aW4gcGFnaW5hdGlvbi1lbGxpcHNpcyAoXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXG4gICRjb2xvcjogJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3Jcbikge1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgY29udGVudDogJ1xcMjAyNic7XG4gIGNvbG9yOiAkY29sb3I7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXBhZ2luYXRpb24ge1xuICAucGFnaW5hdGlvbiB7XG4gICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1jb250YWluZXI7XG5cbiAgICAuY3VycmVudCB7XG4gICAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWl0ZW0tY3VycmVudDtcbiAgICB9XG5cbiAgICAuZGlzYWJsZWQge1xuICAgICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1pdGVtLWRpc2FibGVkO1xuICAgIH1cblxuICAgIC5lbGxpcHNpczo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1lbGxpcHNpcztcbiAgICB9XG4gIH1cblxuICBAaWYgJHBhZ2luYXRpb24tYXJyb3dzIHtcbiAgICAucGFnaW5hdGlvbi1wcmV2aW91cyBhOjpiZWZvcmUsXG4gICAgLnBhZ2luYXRpb24tcHJldmlvdXMuZGlzYWJsZWQ6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMC41cmVtO1xuICAgICAgY29udGVudDogJHBhZ2luYXRpb24tYXJyb3ctcHJldmlvdXM7XG4gICAgfVxuXG4gICAgLnBhZ2luYXRpb24tbmV4dCBhOjphZnRlcixcbiAgICAucGFnaW5hdGlvbi1uZXh0LmRpc2FibGVkOjphZnRlciB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwLjVyZW07XG4gICAgICBjb250ZW50OiAkcGFnaW5hdGlvbi1hcnJvdy1uZXh0O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRvb2x0aXBcbi8vLy9cblxuLy8vIERlZmF1bHQgY3Vyc29yIG9mIHRoZSBkZWZpbmVkIHRlcm0uXG4vLy8gQHR5cGUgS2V5d29yZFxuJGhhcy10aXAtY3Vyc29yOiBoZWxwICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHdlaWdodCBvZiB0aGUgZGVmaW5lZCB0ZXJtLlxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcbiRoYXMtdGlwLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgYm90dG9tIG9mIHRoZSBkZWZpbmVkIHRlcm0uXG4vLy8gQHR5cGUgTGlzdFxuJGhhcy10aXAtYm9yZGVyLWJvdHRvbTogZG90dGVkIDFweCAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgdG9vbHRpcCBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSB0b29sdGlwIGZvbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0b29sdGlwLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgb2YgdGhlIHRvb2x0aXAgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXBhZGRpbmc6IDAuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1heCB3aWR0aCBmb3IgdG9vbHRpcHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1tYXgtd2lkdGg6IDEwcmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgb2YgdGhlIHRvb2x0aXAgdGV4dC4gQnkgZGVmYXVsdCwgd2UgcmVjb21tZW5kIGEgc21hbGxlciBmb250IHNpemUgdGhhbiB0aGUgYm9keSBjb3B5LlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwaXAgd2lkdGggZm9yIHRvb2x0aXBzLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtcGlwLXdpZHRoOiAwLjc1cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwaXAgaGVpZ2h0IGZvciB0b29sdGlwcy4gVGhpcyBpcyBoZWxwZnVsIGZvciBjYWxjdWxhdGluZyB0aGUgZGlzdGFuY2Ugb2YgdGhlIHRvb2x0aXAgZnJvbSB0aGUgdG9vbHRpcCB3b3JkLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtcGlwLWhlaWdodDogJHRvb2x0aXAtcGlwLXdpZHRoICogMC44NjYgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3IgdG9vbHRpcHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gaGFzLXRpcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIGJvcmRlci1ib3R0b206ICRoYXMtdGlwLWJvcmRlci1ib3R0b207XG4gIGZvbnQtd2VpZ2h0OiAkaGFzLXRpcC1mb250LXdlaWdodDtcbiAgY3Vyc29yOiAkaGFzLXRpcC1jdXJzb3I7XG59XG5cbkBtaXhpbiB0b29sdGlwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IGNhbGMoMTAwJSArICN7JHRvb2x0aXAtcGlwLWhlaWdodH0pO1xuICB6LWluZGV4OiAxMjAwO1xuXG4gIG1heC13aWR0aDogJHRvb2x0aXAtbWF4LXdpZHRoO1xuICBwYWRkaW5nOiAkdG9vbHRpcC1wYWRkaW5nO1xuXG4gIGJvcmRlci1yYWRpdXM6ICR0b29sdGlwLXJhZGl1cztcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcjtcbiAgZm9udC1zaXplOiAkdG9vbHRpcC1mb250LXNpemU7XG4gIGNvbG9yOiAkdG9vbHRpcC1jb2xvcjtcblxuICAmOjpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuXG4gICYuYm90dG9tIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCR0b29sdGlwLXBpcC13aWR0aCwgJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgdXApO1xuICAgICAgYm90dG9tOiAxMDAlO1xuICAgIH1cblxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIH1cbiAgfVxuXG4gICYudG9wIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCR0b29sdGlwLXBpcC13aWR0aCwgJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgZG93bik7XG4gICAgICB0b3A6IDEwMCU7XG4gICAgICBib3R0b206IGF1dG87XG4gICAgfVxuXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi5sZWZ0IHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCR0b29sdGlwLXBpcC13aWR0aCwgJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgcmlnaHQpO1xuICAgICAgbGVmdDogMTAwJTtcbiAgICB9XG5cbiAgICAmLmFsaWduLWNlbnRlcjo6YmVmb3JlIHtcbiAgICAgIGJvdHRvbTogYXV0bztcbiAgICAgIHRvcDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxuXG4gICYucmlnaHQge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCBsZWZ0KTtcbiAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgbGVmdDogYXV0bztcbiAgICB9XG5cbiAgICAmLmFsaWduLWNlbnRlcjo6YmVmb3JlIHtcbiAgICAgIGJvdHRvbTogYXV0bztcbiAgICAgIHRvcDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxuXG4gICYuYWxpZ24tdG9wOjpiZWZvcmUge1xuICAgIGJvdHRvbTogYXV0bztcbiAgICB0b3A6IDEwJTtcbiAgfVxuXG4gICYuYWxpZ24tYm90dG9tOjpiZWZvcmUge1xuICAgIGJvdHRvbTogMTAlO1xuICAgIHRvcDogYXV0bztcbiAgfVxuXG4gICYuYWxpZ24tbGVmdDo6YmVmb3JlIHtcbiAgICBsZWZ0OiAxMCU7XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cblxuICAmLmFsaWduLXJpZ2h0OjpiZWZvcmUge1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IDEwJTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10b29sdGlwIHtcbiAgLmhhcy10aXAge1xuICAgIEBpbmNsdWRlIGhhcy10aXA7XG4gIH1cblxuICAudG9vbHRpcCB7XG4gICAgQGluY2x1ZGUgdG9vbHRpcDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGFjY29yZGlvblxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGFjY29yZGlvbiBncm91cC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGFkZHMgcGx1cyBhbmQgbWludXMgaWNvbnMgdG8gdGhlIHNpZGUgb2YgZWFjaCBhY2NvcmRpb24gdGl0bGUuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFjY29yZGlvbi1wbHVzbWludXM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBDb250ZW50IGZvciB0aGUgcGx1cyBpY29uIHdoZW4gYCRhY2NvcmRpb24tcGx1c21pbnVzYCBpcyBgdHJ1ZWBcbi8vLyBAdHlwZSBTdHJpbmdcbiRhY2NvcmRpb24tcGx1cy1jb250ZW50OiAnXFwwMDJCJyAhZGVmYXVsdDtcblxuLy8vIENvbnRlbnQgZm9yIHRoZSBtaW51cyBpY29uIHdoZW4gYCRhY2NvcmRpb24tcGx1c21pbnVzYCBpcyBgdHJ1ZWBcbi8vLyBAdHlwZSBTdHJpbmdcbiRhY2NvcmRpb24tbWludXMtY29udGVudDogJ1xcMjAxMycgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgYWNjb3JkaW9uIHRpdGxlcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb24tdGl0bGUtZm9udC1zaXplOiByZW0tY2FsYygxMikgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGl0ZW1zIGluIGEgTWVudS5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1pdGVtLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvbiBob3ZlciBmb3IgaXRlbXMgaW4gYSBNZW51LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgb2YgYW4gYWNjb3JkaW9uIGl0ZW0uXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGFjY29yZGlvbi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGFjY29yZGlvbi1jb250ZW50LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gYWNjb3JkaW9uIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byB0aGUgc2FtZSBlbGVtZW50IHRoYXQgZ2V0cyBgZGF0YS1hY2NvcmRpb25gLlxuQG1peGluIGFjY29yZGlvbi1jb250YWluZXIgKFxuICAkYmFja2dyb3VuZDogJGFjY29yZGlvbi1iYWNrZ3JvdW5kXG4pIHtcbiAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICAmW2Rpc2FibGVkXSB7XG4gICAgLmFjY29yZGlvbi10aXRsZSB7XG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBhY2NvcmRpb24gaXRlbS4gQXBwbHkgdGhpcyB0byB0aGUgbGlzdCBpdGVtIHdpdGhpbiBhbiBhY2NvcmRpb24gdWwuXG5AbWl4aW4gYWNjb3JkaW9uLWl0ZW0ge1xuICAmOmZpcnN0LWNoaWxkID4gOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAkZ2xvYmFsLXJhZGl1cyAwIDA7XG4gIH1cblxuICAmOmxhc3QtY2hpbGQgPiA6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwICRnbG9iYWwtcmFkaXVzICRnbG9iYWwtcmFkaXVzO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIHRpdGxlIG9mIGFuIGFjY29yZGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIHRoZSBsaW5rIHdpdGhpbiBhbiBhY2NvcmRpb24gaXRlbS5cbkBtaXhpbiBhY2NvcmRpb24tdGl0bGUgKFxuICAkcGFkZGluZzogJGFjY29yZGlvbi1pdGVtLXBhZGRpbmcsXG4gICRmb250LXNpemU6ICRhY2NvcmRpb24tdGl0bGUtZm9udC1zaXplLFxuICAkY29sb3I6ICRhY2NvcmRpb24taXRlbS1jb2xvcixcbiAgJGJvcmRlcjogJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcixcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRhY2NvcmRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyXG4pIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBib3JkZXItYm90dG9tOiAwO1xuXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiAkY29sb3I7XG5cbiAgOmxhc3QtY2hpbGQ6bm90KC5pcy1hY3RpdmUpID4gJiB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXM7XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ob3ZlcjtcbiAgfVxuXG4gIEBpZiAkYWNjb3JkaW9uLXBsdXNtaW51cyB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgICAgIG1hcmdpbi10b3A6IC0wLjVyZW07XG4gICAgICBjb250ZW50OiAkYWNjb3JkaW9uLXBsdXMtY29udGVudDtcbiAgICB9XG5cbiAgICAuaXMtYWN0aXZlID4gJjo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRhY2NvcmRpb24tbWludXMtY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhY2NvcmRpb24gY29udGVudC4gQXBwbHkgdGhpcyB0byB0aGUgY29udGVudCBwYW5lIGJlbG93IGFuIGFjY29yZGlvbiBpdGVtJ3MgdGl0bGUuXG5AbWl4aW4gYWNjb3JkaW9uLWNvbnRlbnQgKFxuICAkcGFkZGluZzogJGFjY29yZGlvbi1jb250ZW50LXBhZGRpbmcsXG4gICRib3JkZXI6ICRhY2NvcmRpb24tY29udGVudC1ib3JkZXIsXG4gICRiYWNrZ3JvdW5kOiAkYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZCxcbiAgJGNvbG9yOiAkYWNjb3JkaW9uLWNvbnRlbnQtY29sb3Jcbikge1xuICBkaXNwbGF5OiBub25lO1xuICBwYWRkaW5nOiAkcGFkZGluZztcblxuICBib3JkZXI6ICRib3JkZXI7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuXG4gIGNvbG9yOiAkY29sb3I7XG5cbiAgOmxhc3QtY2hpbGQgPiAmOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tYWNjb3JkaW9uIHtcbiAgLmFjY29yZGlvbiB7XG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLWNvbnRhaW5lcjtcbiAgfVxuXG4gIC5hY2NvcmRpb24taXRlbSB7XG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLWl0ZW07XG4gIH1cblxuICAuYWNjb3JkaW9uLXRpdGxlIHtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24tdGl0bGU7XG4gIH1cblxuICAuYWNjb3JkaW9uLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1jb250ZW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgbWVkaWEtb2JqZWN0XG4vLy8vXG5cbi8vLyBCb3R0b20gbWFyZ2luIG9mIGEgbWVkaWEgb2JqZWN0LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lZGlhb2JqZWN0LW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gTGVmdCBhbmQgcmlnaHQgcGFkZGluZyBvbiBzZWN0aW9ucyB3aXRoaW4gYSBtZWRpYSBvYmplY3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBXaWR0aCBvZiBpbWFnZXMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LCB3aGVuIHRoZSBvYmplY3QgaXMgc3RhY2tlZCB2ZXJ0aWNhbGx5LiBTZXQgdG8gJ2F1dG8nIHRvIHVzZSB0aGUgaW1hZ2UncyBuYXR1cmFsIHdpZHRoLlxuLy8vIEB0eXBlIE51bWJlclxuJG1lZGlhb2JqZWN0LWltYWdlLXdpZHRoLXN0YWNrZWQ6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBtZWRpYSBvYmplY3QgY29udGFpbmVyLlxuQG1peGluIG1lZGlhLW9iamVjdC1jb250YWluZXIge1xuICBkaXNwbGF5OiBpZigkZ2xvYmFsLWZsZXhib3gsIGZsZXgsIGJsb2NrKTtcbiAgbWFyZ2luLWJvdHRvbTogJG1lZGlhb2JqZWN0LW1hcmdpbi1ib3R0b207XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gIH1cblxuICBpbWcge1xuICAgIG1heC13aWR0aDogbm9uZTtcbiAgfVxuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICYuc3RhY2stZm9yLSN7JC16Zi16ZXJvLWJyZWFrcG9pbnR9IHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJC16Zi16ZXJvLWJyZWFrcG9pbnQgb25seSkge1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3Igc2VjdGlvbnMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGluZyBbJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZ10gLSBQYWRkaW5nIGJldHdlZW4gc2VjdGlvbnMuXG5AbWl4aW4gbWVkaWEtb2JqZWN0LXNlY3Rpb24oJHBhZGRpbmc6ICRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmcpIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgfVxuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIHBhZGRpbmctI3skZ2xvYmFsLXJpZ2h0fTogJHBhZGRpbmc7XG4gIH1cblxuICAmOmxhc3QtY2hpbGQ6bm90KDpudGgtY2hpbGQoMikpIHtcbiAgICBwYWRkaW5nLSN7JGdsb2JhbC1sZWZ0fTogJHBhZGRpbmc7XG4gIH1cblxuICA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgLnN0YWNrLWZvci0jeyQtemYtemVyby1icmVha3BvaW50fSAmIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtemVyby1icmVha3BvaW50IG9ubHkpIHtcbiAgICAgIEBpbmNsdWRlIG1lZGlhLW9iamVjdC1zdGFjaztcbiAgICB9XG4gIH1cblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAmLm1haW4tc2VjdGlvbiB7XG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJi5taWRkbGUge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAmLmJvdHRvbSB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgdG8gc3RhY2sgc2VjdGlvbnMgb2YgYSBtZWRpYSBvYmplY3QuIEFwcGx5IHRoaXMgdG8gdGhlIHNlY3Rpb24gZWxlbWVudHMsIG5vdCB0aGUgY29udGFpbmVyLlxuQG1peGluIG1lZGlhLW9iamVjdC1zdGFjayB7XG4gIHBhZGRpbmc6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAkbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIGltZyB7XG4gICAgd2lkdGg6ICRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW1lZGlhLW9iamVjdCB7XG4gIC5tZWRpYS1vYmplY3Qge1xuICAgIEBpbmNsdWRlIG1lZGlhLW9iamVjdC1jb250YWluZXI7XG4gIH1cblxuICAubWVkaWEtb2JqZWN0LXNlY3Rpb24ge1xuICAgIEBpbmNsdWRlIG1lZGlhLW9iamVjdC1zZWN0aW9uO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgb3JiaXRcbi8vLy9cblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGFjdGl2ZSBjb2xvciBmb3IgT3JiaXQncyBidWxsZXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBkaWFtZXRlciBmb3IgT3JiaXQncyBidWxsZXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWJ1bGxldC1kaWFtZXRlcjogMS4ycmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXJnaW4gYmV0d2VlbiBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbjogMC4xcmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBkaXN0YW5jZSBmcm9tIHNsaWRlIHJlZ2lvbiBmb3IgT3JiaXQncyBidWxsZXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wOiAwLjhyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gZnJvbSBPcmJpdCdzIGJ1bGxldHMgdG8gd2hhdGV2ZXIgY29udGVudCBtYXkgbHVyayBiZWxvdyBpdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1idWxsZXQtbWFyZ2luLWJvdHRvbTogMC44cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBPcmJpdCdzIGNhcHRpb24uXG4vLy8gQHR5cGUgQ29sb3JcbiRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGZvciBPcmJpdCdzIGNhcHRpb24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtY2FwdGlvbi1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBPcmJpdCdzIGNvbnRyb2xzIHdoZW4gaG92ZXJlZC5cbi8vLyBAdHlwZSBDb2xvclxuJG9yYml0LWNvbnRyb2wtYmFja2dyb3VuZC1ob3ZlcjogcmdiYSgkYmxhY2ssIDAuNSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIE9yYml0J3MgY29udHJvbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtY29udHJvbC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB6LWluZGV4IGZvciBPcmJpdCdzIGNvbnRyb2xzLlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWNvbnRyb2wtemluZGV4OiAxMCAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgb3V0ZXIgT3JiaXQgd3JhcHBlci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0YCBjbGFzcy5cbkBtaXhpbiBvcmJpdC13cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBpbm5lciBPcmJpdCBzbGlkZSBjb250YWluZXIuIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1jb250YWluZXJgIGNsYXNzLlxuQG1peGluIG9yYml0LWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAwOyAvLyBQcmV2ZW50IEZPVUMgYnkgbm90IHNob3dpbmcgdW50aWwgSlMgc2V0cyBoZWlnaHRcbiAgbWFyZ2luOiAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBpbmRpdmlkdWFsIHNsaWRlcyBvZiBhbiBPcmJpdCBzbGlkZXIuIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1zbGlkZWAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtc2xpZGUge1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gICYubm8tbW90aW9udWkge1xuICAgICYuaXMtYWN0aXZlIHtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBvcmJpdC1maWd1cmUge1xuICBtYXJnaW46IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzbGlkZSBjb250YWluaW5nIGFuIGltYWdlLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtaW1hZ2VgIGNsYXNzLlxuQG1peGluIG9yYml0LWltYWdlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIG9yYml0IHNsaWRlIGNhcHRpb24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1jYXB0aW9uYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1jYXB0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBwYWRkaW5nOiAkb3JiaXQtY2FwdGlvbi1wYWRkaW5nO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQ7XG4gIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQpO1xufVxuXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgdGhlIG5leHQvcHJldmlvdXMgYnV0dG9ucyBpbiBhbiBPcmJpdCBzbGlkZXIuIFRoZXNlIHN0eWxlcyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlIGAub3JiaXQtbmV4dGAgYW5kIGAub3JiaXQtcHJldmlvdXNgIGNsYXNzZXMgaW4gdGhlIGRlZmF1bHQgQ1NTLlxuQG1peGluIG9yYml0LWNvbnRyb2wge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlcjtcbiAgei1pbmRleDogJG9yYml0LWNvbnRyb2wtemluZGV4O1xuICBwYWRkaW5nOiAkb3JiaXQtY29udHJvbC1wYWRkaW5nO1xuICBjb2xvcjogJHdoaXRlO1xuXG4gICY6aG92ZXIsXG4gICY6YWN0aXZlLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIE9yYml0IHByZXZpb3VzIGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LXByZXZpb3VzYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1wcmV2aW91cyB7XG4gICN7JGdsb2JhbC1sZWZ0fTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgT3JiaXQgbmV4dCBidXR0b24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1uZXh0YCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1uZXh0IHtcbiAgI3skZ2xvYmFsLWxlZnR9OiBhdXRvO1xuICAjeyRnbG9iYWwtcmlnaHR9OiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY29udGFpbmVyIG9mIE9yYml0IGJ1bGxldHMuIC8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIE9yYml0IHByZXZpb3VzIGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWJ1bGxldHNgIGNsYXNzLlxuQG1peGluIG9yYml0LWJ1bGxldHMge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLXRvcDogJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wO1xuICBtYXJnaW4tYm90dG9tOiAkb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b207XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBidXR0b24ge1xuICAgIHdpZHRoOiAkb3JiaXQtYnVsbGV0LWRpYW1ldGVyO1xuICAgIGhlaWdodDogJG9yYml0LWJ1bGxldC1kaWFtZXRlcjtcbiAgICBtYXJnaW46ICRvcmJpdC1idWxsZXQtbWFyZ2luO1xuXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1idWxsZXQtYmFja2dyb3VuZDtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICB9XG5cbiAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1vcmJpdCB7XG4gIC5vcmJpdCB7XG4gICAgQGluY2x1ZGUgb3JiaXQtd3JhcHBlcjtcbiAgfVxuXG4gIC5vcmJpdC1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIG9yYml0LWNvbnRhaW5lcjtcbiAgfVxuXG4gIC5vcmJpdC1zbGlkZSB7XG4gICAgQGluY2x1ZGUgb3JiaXQtc2xpZGU7XG4gIH1cblxuICAub3JiaXQtZmlndXJlIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1maWd1cmU7XG4gIH1cblxuICAub3JiaXQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIG9yYml0LWltYWdlO1xuICB9XG5cbiAgLm9yYml0LWNhcHRpb24ge1xuICAgIEBpbmNsdWRlIG9yYml0LWNhcHRpb247XG4gIH1cblxuICAlb3JiaXQtY29udHJvbCB7XG4gICAgQGluY2x1ZGUgb3JiaXQtY29udHJvbDtcbiAgfVxuXG4gIC5vcmJpdC1wcmV2aW91cyB7XG4gICAgQGV4dGVuZCAlb3JiaXQtY29udHJvbDtcbiAgICBAaW5jbHVkZSBvcmJpdC1wcmV2aW91cztcbiAgfVxuXG4gIC5vcmJpdC1uZXh0IHtcbiAgICBAZXh0ZW5kICVvcmJpdC1jb250cm9sO1xuICAgIEBpbmNsdWRlIG9yYml0LW5leHQ7XG4gIH1cblxuICAub3JiaXQtYnVsbGV0cyB7XG4gICAgQGluY2x1ZGUgb3JiaXQtYnVsbGV0cztcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHJlc3BvbnNpdmUtZW1iZWRcbi8vLy9cblxuLy8vIE1hcmdpbiBiZWxvdyBhIHJlc3BvbnNpdmUgZW1iZWQgY29udGFpbmVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHJlc3BvbnNpdmUtZW1iZWQtbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTYpICFkZWZhdWx0O1xuXG4vLy8gQXNwZWN0IHJhdGlvcyB1c2VkIHRvIGRldGVybWluZSBwYWRkaW5nLWJvdHRvbSBvZiByZXNwb25zaXZlIGVtYmVkIGNvbnRhaW5lcnMuXG4vLy8gQHR5cGUgTWFwXG4kcmVzcG9uc2l2ZS1lbWJlZC1yYXRpb3M6IChcbiAgZGVmYXVsdDogNCBieSAzLFxuICB3aWRlc2NyZWVuOiAxNiBieSA5LFxuKSAhZGVmYXVsdDtcblxuLy8vIENyZWF0ZXMgYSByZXNwb25zaXZlIGVtYmVkIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge1N0cmluZ3xMaXN0fSAkcmF0aW8gW2RlZmF1bHRdIC0gUmF0aW8gb2YgdGhlIGNvbnRhaW5lci4gQ2FuIGJlIGEga2V5IGZyb20gdGhlIGAkcmVzcG9uc2l2ZS1lbWJlZC1yYXRpb3NgIG1hcCBvciBhIGxpc3QgZm9ybWF0dGVkIGFzIGB4IGJ5IHlgLlxuQG1peGluIHJlc3BvbnNpdmUtZW1iZWQoJHJhdGlvOiBkZWZhdWx0KSB7XG4gIEBpZiB0eXBlLW9mKCRyYXRpbykgPT0gJ3N0cmluZycge1xuICAgICRyYXRpbzogbWFwLWdldCgkcmVzcG9uc2l2ZS1lbWJlZC1yYXRpb3MsICRyYXRpbyk7XG4gIH1cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDA7XG4gIG1hcmdpbi1ib3R0b206ICRyZXNwb25zaXZlLWVtYmVkLW1hcmdpbi1ib3R0b207XG4gIHBhZGRpbmctYm90dG9tOiByYXRpby10by1wZXJjZW50YWdlKCRyYXRpbyk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgaWZyYW1lLFxuICBvYmplY3QsXG4gIGVtYmVkLFxuICB2aWRlbyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICAjeyRnbG9iYWwtbGVmdH06IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXJlc3BvbnNpdmUtZW1iZWQge1xuICAucmVzcG9uc2l2ZS1lbWJlZCxcbiAgLmZsZXgtdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc3BvbnNpdmUtZW1iZWQoJHJhdGlvOiBkZWZhdWx0KTtcblxuICAgICRyYXRpb3M6IG1hcC1yZW1vdmUoJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zLGRlZmF1bHQpO1xuXG4gICAgQGVhY2ggJG5hbWUsICRyYXRpbyBpbiAkcmF0aW9zIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogcmF0aW8tdG8tcGVyY2VudGFnZSgkcmF0aW8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRhYnNcbi8vLy9cblxuLy8vIERlZmF1bHQgbWFyZ2luIG9mIHRoZSB0YWIgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYi1tYXJnaW46IDAgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgYSB0YWIgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgY29sb3Igb2YgdGFiIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gQWN0aXZlIGJhY2tncm91bmQgY29sb3Igb2YgYSB0YWIgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWJhY2tncm91bmQtYWN0aXZlOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEFjdGl2ZSBmb250IGNvbG9yIG9mIHRhYiBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWFjdGl2ZS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgdGFiIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYi1pdGVtLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBpdGVtcyBpbiBhIE1lbnUuXG4kdGFiLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIG9mIGEgdGFiIGl0ZW0uXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFiLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1jb250ZW50LWJvcmRlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJHRhYi1jb250ZW50LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSB0YWIgY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgYDx1bD5gLlxuQG1peGluIHRhYnMtY29udGFpbmVyIChcbiAgJG1hcmdpbjogJHRhYi1tYXJnaW4sXG4gICRiYWNrZ3JvdW5kOiAkdGFiLWJhY2tncm91bmQsXG4gICRib3JkZXItY29sb3I6ICR0YWItY29udGVudC1ib3JkZXJcbikge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luOiAkbWFyZ2luO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuXG4vLy8gQXVnbWVudHMgYSB0YWIgY29udGFpbmVyIHRvIGhhdmUgdmVydGljYWwgdGFicy4gVXNlIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFicy1jb250YWluZXIoKWAuXG5AbWl4aW4gdGFicy1jb250YWluZXItdmVydGljYWwge1xuICA+IGxpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogbm9uZTtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBsaW5rcyB3aXRoaW4gYSB0YWIgY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIHRoZSBgPGxpPmAgZWxlbWVudHMgaW5zaWRlIGEgdGFiIGNvbnRhaW5lci5cbkBtaXhpbiB0YWJzLXRpdGxlIChcbiAgJHBhZGRpbmc6ICR0YWItaXRlbS1wYWRkaW5nLFxuICAkZm9udC1zaXplOiAkdGFiLWl0ZW0tZm9udC1zaXplLFxuICAkY29sb3I6ICR0YWItY29sb3IsXG4gICRjb2xvci1hY3RpdmU6ICR0YWItYWN0aXZlLWNvbG9yLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXIsXG4gICRiYWNrZ3JvdW5kLWFjdGl2ZTogJHRhYi1iYWNrZ3JvdW5kLWFjdGl2ZVxuKSB7XG4gIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XG5cbiAgPiBhIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogJHBhZGRpbmc7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGNvbG9yOiAkY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWhvdmVyO1xuICAgICAgY29sb3I6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogLTE0JSk7XG4gICAgfVxuXG4gICAgJjpmb2N1cyxcbiAgICAmW2FyaWEtc2VsZWN0ZWQ9J3RydWUnXSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgICBjb2xvcjogJGNvbG9yLWFjdGl2ZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgd3JhcHBlciB0aGF0IHN1cnJvdW5kcyBhIHRhYiBncm91cCdzIGNvbnRlbnQgcGFuZXMuXG5AbWl4aW4gdGFicy1jb250ZW50IChcbiAgJGJhY2tncm91bmQ6ICR0YWItY29udGVudC1iYWNrZ3JvdW5kLFxuICAkY29sb3I6ICR0YWItY29udGVudC1jb2xvcixcbiAgJGJvcmRlci1jb2xvcjogJHRhYi1jb250ZW50LWJvcmRlclxuKSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gIGJvcmRlci10b3A6IDA7XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICBjb2xvcjogJGNvbG9yO1xuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlO1xufVxuXG4vLy8gQXVnbWVudHMgYSB0YWIgY29udGVudCBjb250YWluZXIgdG8gaGF2ZSBhIHZlcnRpY2FsIHN0eWxlLCBieSBzaGlmdGluZyB0aGUgYm9yZGVyIGFyb3VuZC4gVXNlIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFicy1jb250ZW50KClgLlxuQG1peGluIHRhYnMtY29udGVudC12ZXJ0aWNhbCAoXG4gICRib3JkZXItY29sb3I6ICR0YWItY29udGVudC1ib3JkZXJcbikge1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIGluZGl2aWR1YWwgdGFiIGNvbnRlbnQgcGFuZWwgd2l0aGluIHRoZSB0YWIgY29udGVudCBjb250YWluZXIuXG5AbWl4aW4gdGFicy1wYW5lbCAoXG4gICRwYWRkaW5nOiAkdGFiLWNvbnRlbnQtcGFkZGluZ1xuKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuXG4gICYuaXMtYWN0aXZlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10YWJzIHtcbiAgLnRhYnMge1xuICAgIEBpbmNsdWRlIHRhYnMtY29udGFpbmVyO1xuICB9XG5cbiAgLy8gVmVydGljYWxcbiAgLnRhYnMudmVydGljYWwge1xuICAgIEBpbmNsdWRlIHRhYnMtY29udGFpbmVyLXZlcnRpY2FsO1xuICB9XG5cbiAgLy8gU2ltcGxlXG4gIC50YWJzLnNpbXBsZSB7XG4gICAgPiBsaSA+IGEge1xuICAgICAgcGFkZGluZzogMDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByaW1hcnkgY29sb3JcbiAgLnRhYnMucHJpbWFyeSB7XG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG5cbiAgICA+IGxpID4gYSB7XG4gICAgICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkcHJpbWFyeS1jb2xvcik7XG5cbiAgICAgICY6aG92ZXIsXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHByaW1hcnktY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC50YWJzLXRpdGxlIHtcbiAgICBAaW5jbHVkZSB0YWJzLXRpdGxlO1xuICB9XG5cbiAgLnRhYnMtY29udGVudCB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250ZW50O1xuICB9XG5cbiAgLnRhYnMtY29udGVudC52ZXJ0aWNhbCB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250ZW50LXZlcnRpY2FsO1xuICB9XG5cbiAgLnRhYnMtcGFuZWwge1xuICAgIEBpbmNsdWRlIHRhYnMtcGFuZWw7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0aHVtYm5haWxcbi8vLy9cblxuLy8vIEJvcmRlciBhcm91bmQgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBCb3JkZXJcbiR0aHVtYm5haWwtYm9yZGVyOiA0cHggc29saWQgJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBmb3IgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBMZW5ndGhcbiR0aHVtYm5haWwtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBCb3ggc2hhZG93IHVuZGVyIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgU2hhZG93XG4kdGh1bWJuYWlsLXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoJGJsYWNrLCAwLjIpICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyB1bmRlciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIFNoYWRvd1xuJHRodW1ibmFpbC1zaGFkb3ctaG92ZXI6IDAgMCA2cHggMXB4IHJnYmEoJHByaW1hcnktY29sb3IsIDAuNSkgIWRlZmF1bHQ7XG5cbi8vLyBUcmFuc2l0aW9uIHByb3BydGllcyBmb3IgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBUcmFuc2l0aW9uXG4kdGh1bWJuYWlsLXRyYW5zaXRpb246IGJveC1zaGFkb3cgMjAwbXMgZWFzZS1vdXQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3IgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0aHVtYm5haWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEFkZHMgdGh1bWJuYWlsIHN0eWxlcyB0byBhbiBlbGVtZW50LlxuQG1peGluIHRodW1ibmFpbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAkdGh1bWJuYWlsLW1hcmdpbi1ib3R0b207XG5cbiAgYm9yZGVyOiAkdGh1bWJuYWlsLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJHRodW1ibmFpbC1yYWRpdXM7XG4gIGJveC1zaGFkb3c6ICR0aHVtYm5haWwtc2hhZG93O1xuXG4gIGxpbmUtaGVpZ2h0OiAwO1xufVxuXG5AbWl4aW4gdGh1bWJuYWlsLWxpbmsge1xuICB0cmFuc2l0aW9uOiAkdGh1bWJuYWlsLXRyYW5zaXRpb247XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgYm94LXNoYWRvdzogJHRodW1ibmFpbC1zaGFkb3ctaG92ZXI7XG4gIH1cblxuICBpbWFnZSB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10aHVtYm5haWwge1xuICAudGh1bWJuYWlsIHtcbiAgICBAaW5jbHVkZSB0aHVtYm5haWw7XG4gIH1cblxuICBhLnRodW1ibmFpbCB7XG4gICAgQGluY2x1ZGUgdGh1bWJuYWlsLWxpbms7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBtZW51XG4vLy8vXG5cbi8vLyBNYXJnaW4gb2YgYSBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtbWFyZ2luOiAwICFkZWZhdWx0O1xuXG4vLy8gTGVmdC1oYW5kIG1hcmdpbiBvZiBhIG5lc3RlZCBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtbmVzdGVkLW1hcmdpbjogJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGZvciBpdGVtcyBpbiBhIHBpbGwgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LWl0ZW1zLXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gbWFyZ2luIGZvciBpdGVtcyBpbiBhIHNpbXBsZSBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtc2ltcGxlLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYW4gYWN0aXZlIG1lbnUgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJG1lbnUtaXRlbS1jb2xvci1hY3RpdmU6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEFsdGVybmF0aXZlIHRleHQgY29sb3Igb2YgYW4gYWN0aXZlIG1lbnUgaXRlbS4uXG4vLy8gQHR5cGUgQ29sb3JcbiRtZW51LWl0ZW0tY29sb3ItYWx0LWFjdGl2ZTogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhbiBhY3RpdmUgbWVudSBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlOiBnZXQtY29sb3IocHJpbWFyeSkgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gYW4gaWNvbiBhbmQgdGV4dCBpbiBhIG1lbnUgaXRlbS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LWljb24tc3BhY2luZzogMC4yNXJlbSAhZGVmYXVsdDtcblxuLy8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIG1lbnUgc3RhdGUuIElmIHRydWUsIHRoaXMgZHVwbGljYXRlIGBhY3RpdmVgIHdpdGggYGlzLWFjdGl2ZWAuIFxuLy8vIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IGBhY3RpdmVgIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB2ZXJzaW9ucy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kbWVudS1zdGF0ZS1iYWNrLWNvbXBhdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIG1lbnUgY2VudGVyZWQuIElmIHRydWUsIHRoaXMgZHVwbGljYXRlIGAubWVudS1jZW50ZXJlZCA+IC5tZW51YCB3aXRoIGAubWVudS5hbGlnbi1jZW50ZXJgLiBcbi8vLyBCdXQgcGxlYXNlIG5vdGUgdGhhdCBgbWVudS1jZW50ZXJlZGAgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIHZlcnNpb25zLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRtZW51LWNlbnRlcmVkLWJhY2stY29tcGF0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgdXNpbmcgYGljb24tKmAgY2xhc3NlcyB3aXRob3V0IGAuaWNvbnNgIGNsYXNzZXNcbi8vLyBCdXQgcGxlYXNlIG5vdGUgdGhhdCB0aGlzIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIHZlcnNpb25zLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRtZW51LWljb25zLWJhY2stY29tcGF0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQ3JlYXRlcyB0aGUgYmFzZSBzdHlsZXMgZm9yIGEgTWVudS5cbkBtaXhpbiBtZW51LWJhc2Uge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxuXG4gIGxpIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIH1cblxuICBhLFxuICAuYnV0dG9uIHtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogJG1lbnUtaXRlbXMtcGFkZGluZztcbiAgfVxuXG4gIC8vIFJlc2V0IHN0eWxlcyBvZiBpbm5lciBlbGVtZW50c1xuICBpbnB1dCxcbiAgc2VsZWN0LFxuICBhLFxuICBidXR0b24ge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICBpbnB1dCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cbi8vLyBFeHBhbmRzIHRoZSBpdGVtcyBvZiBhIE1lbnUsIHNvIGVhY2ggaXRlbSBpcyB0aGUgc2FtZSB3aWR0aC5cbkBtaXhpbiBtZW51LWV4cGFuZCB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGxpIHtcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgID4gbGkge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBbGlnbiBtZW51IGl0ZW1zLlxuQG1peGluIG1lbnUtYWxpZ24oJGFsaWdubWVudCkge1xuICBAaWYgJGFsaWdubWVudCA9PSBsZWZ0IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1sZWZ0O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkYWxpZ25tZW50ID09IHJpZ2h0IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblxuICAgICAgICAuc3VibWVudSBsaSB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYudmVydGljYWwgbGkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1yaWdodDtcblxuICAgICAgICAuc3VibWVudSBsaSB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1yaWdodDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xuXG4gICAgICAuc3VibWVudSBsaSB7XG4gICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtbGVmdDtcbiAgICAgIH1cblxuICAgICAgJi52ZXJ0aWNhbCB7XG4gICAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRhbGlnbm1lbnQgPT0gY2VudGVyIHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgZGlyZWN0aW9uIG9mIGEgTWVudS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgW2hvcml6b250YWxdIC0gRGlyZWN0aW9uIG9mIHRoZSBNZW51LiBDYW4gYmUgYGhvcml6b250YWxgIG9yIGB2ZXJ0aWNhbGAuXG5AbWl4aW4gbWVudS1kaXJlY3Rpb24oJGRpcjogaG9yaXpvbnRhbCkge1xuICBAaWYgJGRpciA9PSBob3Jpem9udGFsIHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkZGlyID09IHZlcnRpY2FsIHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuICdUaGUgZGlyZWN0aW9uIHVzZWQgZm9yIG1lbnUtZGlyZWN0aW9uKCkgbXVzdCBiZSBob3Jpem9udGFsIG9yIHZlcnRpY2FsLic7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBzaW1wbGUgTWVudSwgd2hpY2ggaGFzIG5vIHBhZGRpbmcgb3IgaG92ZXIgc3RhdGUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyIFskZ2xvYmFsLWxlZnRdIC0gRGlyZWN0aW9uIG9mIHRoZSBtZW51LiBUaGlzIGVmZmVjdHMgdGhlIHNpZGUgb2YgdGhlIGA8bGk+YCB0aGF0IHJlY2VpdmVzIHRoZSBtYXJnaW4uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXJnaW4gWyRtZW51LXNpbXBsZS1tYXJnaW5dIC0gVGhlIG1hcmdpbiB0byBhcHBseSB0byBlYWNoIGA8bGk+YC5cbkBtaXhpbiBtZW51LXNpbXBsZSgkZGlyOiAkZ2xvYmFsLWxlZnQsICRtYXJnaW46ICRtZW51LXNpbXBsZS1tYXJnaW4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIGxpICsgbGkge1xuICAgIG1hcmdpbi0jeyRkaXJ9OiAkbWFyZ2luO1xuICB9XG5cbiAgYSB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgbmVzdGVkIE1lbnUsIGJ5IGFkZGluZyBgbWFyZ2luLWxlZnRgIHRvIHRoZSBtZW51LlxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRtYXJnaW4gWyRtZW51LW5lc3RlZC1tYXJnaW5dIC0gTGVuZ3RoIG9mIHRoZSBtYXJnaW4uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkbmVzdGVkLWFsaWdubWVudCBbbGVmdF0gLSBBbGlnbm1lbnQgb2YgdGhlIG5lc3RlZCBjbGFzc1xuQG1peGluIG1lbnUtbmVzdGVkKFxuICAkbWFyZ2luOiAkbWVudS1uZXN0ZWQtbWFyZ2luLFxuICAkbmVzdGVkLWFsaWdubWVudDogbGVmdFxuKSB7XG4gIEBpZiAkbmVzdGVkLWFsaWdubWVudCA9PSByaWdodCB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRtYXJnaW47XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJG1hcmdpbjtcbiAgfVxuXG59XG5cbi8vLyBBZGRzIGJhc2ljIHN0eWxlcyBmb3IgaWNvbnMgaW4gbWVudXMuXG5AbWl4aW4gbWVudS1pY29ucygpIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgYSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgaW1nLFxuICAgIGksXG4gICAgc3ZnIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICAgICsgc3BhbiB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHBvc2l0aW9uIGNsYXNzZXMgZm9yIGljb25zIHdpdGhpbiBhIG1lbnUuXG5AbWl4aW4gbWVudS1pY29uLXBvc2l0aW9uKCRwb3NpdGlvbjogbGVmdCwgJHNwYWNpbmc6ICRtZW51LWljb24tc3BhY2luZykge1xuICBAaWYgJHBvc2l0aW9uID09IGxlZnQge1xuICAgIGxpIGEge1xuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgaW1nLFxuICAgICAgaSxcbiAgICAgIHN2ZyB7XG4gICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcblxuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSByaWdodCB7XG4gICAgbGkgYSB7XG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgICAgfVxuXG4gICAgICBpbWcsXG4gICAgICBpLFxuICAgICAgc3ZnIHtcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJHNwYWNpbmc7XG5cbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcbiAgICBsaSBhIHtcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgaW1nLFxuICAgICAgaSxcbiAgICAgIHN2ZyB7XG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW46IDAgYXV0byAkc3BhY2luZztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IGJvdHRvbSB7XG4gICAgbGkgYSB7XG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIGltZyxcbiAgICAgIGksXG4gICAgICBzdmcge1xuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgbWFyZ2luOiAkc3BhY2luZyBhdXRvIDA7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtZW51LXRleHQge1xuICBwYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZztcblxuICBmb250LXdlaWdodDogYm9sZDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuXG5AbWl4aW4gbWVudS1zdGF0ZS1hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAkbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlO1xuICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlLCAoJG1lbnUtaXRlbS1jb2xvci1hY3RpdmUsICRtZW51LWl0ZW0tY29sb3ItYWx0LWFjdGl2ZSkpO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1tZW51IHtcbiAgLm1lbnUge1xuICAgIEBpbmNsdWRlIG1lbnUtYmFzZTtcblxuICAgIC8vIERlZmF1bHQgb3JpZW50YXRpb246IGhvcml6b250YWxcbiAgICAmLCAmLmhvcml6b250YWwge1xuICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XG4gICAgfVxuXG4gICAgLy8gVmVydGljYWwgb3JpZW50YXRpb24gbW9kaWZpZXJcbiAgICAmLnZlcnRpY2FsIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICB9XG5cbiAgICAvLyBFdmVuLXdpZHRoIG1vZGlmaWVyIGZvciBob3Jpem9udGFsIG9yaWVudGF0aW9uXG4gICAgJi5leHBhbmRlZCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWV4cGFuZDtcbiAgICB9XG5cbiAgICAvLyBTaW1wbGVcbiAgICAmLnNpbXBsZSB7XG4gICAgICBAaW5jbHVkZSBtZW51LXNpbXBsZTtcbiAgICB9XG5cbiAgICAvLyBCcmVha3BvaW50IHNwZWNpZmljIHZlcnNpb25zXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgkc21hbGw6IGZhbHNlKSB7XG4gICAgICAmLiN7JC16Zi1zaXplfS1ob3Jpem9udGFsIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XG4gICAgICB9XG5cbiAgICAgICYuI3skLXpmLXNpemV9LXZlcnRpY2FsIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xuICAgICAgfVxuXG4gICAgICAmLiN7JC16Zi1zaXplfS1leHBhbmRlZCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZXhwYW5kO1xuICAgICAgfVxuXG4gICAgICAmLiN7JC16Zi1zaXplfS1zaW1wbGUge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWV4cGFuZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOZXN0aW5nXG4gICAgJi5uZXN0ZWQge1xuICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQ7XG4gICAgfVxuXG4gICAgLy8gSWNvbiBCYXNlIFN0eWxlc1xuICAgICYuaWNvbnMge1xuICAgICAgQGluY2x1ZGUgbWVudS1pY29ucztcbiAgICB9XG5cbiAgICAvLyBCYWNrd2FyZCBDb21wYXRpYmlsaXR5IGZvciBhY3RpdmUgc3RhdGVcbiAgICBAaWYgJG1lbnUtaWNvbnMtYmFjay1jb21wYXQge1xuICAgICAgJi5pY29uLXRvcCxcbiAgICAgICYuaWNvbi1yaWdodCxcbiAgICAgICYuaWNvbi1ib3R0b20sXG4gICAgICAmLmljb24tbGVmdCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWNvbiBMZWZ0XG4gICAgJi5pY29uLWxlZnQge1xuICAgICAgQGluY2x1ZGUgbWVudS1pY29uLXBvc2l0aW9uKGxlZnQpO1xuICAgIH1cblxuICAgIC8vIEljb24gUmlnaHRcbiAgICAmLmljb24tcmlnaHQge1xuICAgICAgQGluY2x1ZGUgbWVudS1pY29uLXBvc2l0aW9uKHJpZ2h0KTtcbiAgICB9XG5cbiAgICAvLyBJY29uIFRvcFxuICAgICYuaWNvbi10b3Age1xuICAgICAgQGluY2x1ZGUgbWVudS1pY29uLXBvc2l0aW9uKHRvcCk7XG4gICAgfVxuXG4gICAgLy8gSWNvbiBCb3R0b21cbiAgICAmLmljb24tYm90dG9tIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbihib3R0b20pO1xuICAgIH1cblxuICAgIC8vIEFjdGl2ZSBzdGF0ZVxuICAgIC5pcy1hY3RpdmUgPiBhIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtc3RhdGUtYWN0aXZlO1xuICAgIH1cbiAgICBcbiAgICAvLyBCYWNrd2FyZCBDb21wYXRpYmlsaXR5IGZvciBhY3RpdmUgc3RhdGVcbiAgICBAaWYgJG1lbnUtc3RhdGUtYmFjay1jb21wYXQge1xuICAgICAgLmFjdGl2ZSA+IGEge1xuICAgICAgICBAaW5jbHVkZSBtZW51LXN0YXRlLWFjdGl2ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGlnbiBsZWZ0XG4gICAgJi5hbGlnbi0jeyRnbG9iYWwtbGVmdH0ge1xuICAgICAgQGluY2x1ZGUgbWVudS1hbGlnbihsZWZ0KTtcbiAgICB9XG5cbiAgICAvLyBBbGlnbiByaWdodFxuICAgICYuYWxpZ24tI3skZ2xvYmFsLXJpZ2h0fSB7XG4gICAgICBAaW5jbHVkZSBtZW51LWFsaWduKHJpZ2h0KTtcblxuICAgICAgLm5lc3RlZCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRuZXN0ZWQtYWxpZ25tZW50OiByaWdodCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWxpZ24gY2VudGVyXG4gICAgJi5hbGlnbi1jZW50ZXIge1xuICAgICAgQGluY2x1ZGUgbWVudS1hbGlnbihjZW50ZXIpO1xuICAgIH1cblxuICAgIC5tZW51LXRleHQge1xuICAgICAgQGluY2x1ZGUgbWVudS10ZXh0O1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkbWVudS1jZW50ZXJlZC1iYWNrLWNvbXBhdCB7XG4gICAgLm1lbnUtY2VudGVyZWQge1xuICAgICAgPiAubWVudSB7XG4gICAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBAaW5jbHVkZSBtZW51LWFsaWduKGNlbnRlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUHJldmVudCBGT1VDIHdoZW4gdXNpbmcgdGhlIFJlc3BvbnNpdmUgTWVudSBwbHVnaW5cbiAgLm5vLWpzIFtkYXRhLXJlc3BvbnNpdmUtbWVudV0gdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIkBtaXhpbiBmb3VuZGF0aW9uLW1lbnUtaWNvbiB7XG4gIC5tZW51LWljb24ge1xuICAgIEBpbmNsdWRlIGhhbWJ1cmdlcigkY29sb3I6ICR0aXRsZWJhci1pY29uLWNvbG9yLCAkY29sb3ItaG92ZXI6ICR0aXRsZWJhci1pY29uLWNvbG9yLWhvdmVyKTtcbiAgfVxuXG4gIC5tZW51LWljb24uZGFyayB7XG4gICAgQGluY2x1ZGUgaGFtYnVyZ2VyO1xuICB9XG59XG4iLCIvLy8vXG4vLy8gQGdyb3VwIGFjY29yZGlvbi1tZW51XG4vLy8vXG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IHBhZGRpbmcuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgbmVzdGVkIG1hcmdpblxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbm1lbnUtbmVzdGVkLW1hcmdpbjogJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IHN1Ym1lbnUgcGFkZGluZy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtcGFkZGluZzogJGFjY29yZGlvbm1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIFNldHMgaWYgYWNjb3JkaW9uIG1lbnVzIGhhdmUgdGhlIGRlZmF1bHQgYXJyb3cgc3R5bGVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRhY2NvcmRpb25tZW51LWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgYXJyb3cgY29sb3IgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBpdGVtIHBhZGRpbmcuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb25tZW51LWl0ZW0tYmFja2dyb3VuZDogbnVsbCAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBib3JkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb25tZW51LWJvcmRlcjogbnVsbCAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBwYWRkaW5nLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1iYWNrZ3JvdW5kOiBudWxsICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBpdGVtIHBhZGRpbmcuXG4vLy8gQHR5cGUgTGlzdFxuJGFjY29yZGlvbi1zdWJtZW51LXRvZ2dsZS1ib3JkZXI6ICRhY2NvcmRpb25tZW51LWJvcmRlciAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgc3VibWVudSB0b2dnbGUgYmFja2dyb3VuZCB3aWR0aC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoOiA0MHB4ICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBzdWJtZW51IHRvZ2dsZSBiYWNrZ3JvdW5kIGhlaWdodC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWhlaWdodDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGFycm93IHNpemUgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRhY2NvcmRpb25tZW51LWFycm93LXNpemU6IDZweCAhZGVmYXVsdDtcblxuQG1peGluIHpmLWFjY29yZGlvbi1tZW51LWxlZnQtcmlnaHQtYXJyb3dzIHtcbiAgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudDpub3QoLmhhcy1zdWJtZW51LXRvZ2dsZSkgPiBhIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZSwgJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3IsIGRvd24pO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICBtYXJnaW4tdG9wOiAtMSAqICgkYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplIC8gMik7XG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xuICAgIH1cbiAgfVxuXG4gICYuYWxpZ24tbGVmdCAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xuICAgIHJpZ2h0OiAxcmVtO1xuICAgIGxlZnQ6IGF1dG87XG4gIH1cblxuICAmLmFsaWduLXJpZ2h0IC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQgPiBhOjphZnRlciB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogMXJlbTtcbiAgfVxufVxuQG1peGluIGZvdW5kYXRpb24tYWNjb3JkaW9uLW1lbnUge1xuXG4gIC5hY2NvcmRpb24tbWVudSB7XG4gICAgQGlmICRhY2NvcmRpb25tZW51LWJvcmRlciB7XG4gICAgICBib3JkZXItYm90dG9tOiAkYWNjb3JkaW9ubWVudS1ib3JkZXI7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgQGlmICRhY2NvcmRpb25tZW51LWJvcmRlciB7XG4gICAgICAgIGJvcmRlci10b3A6ICRhY2NvcmRpb25tZW51LWJvcmRlcjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAkYWNjb3JkaW9ubWVudS1ib3JkZXI7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAkYWNjb3JkaW9ubWVudS1ib3JkZXI7XG4gICAgICB9XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIEBpZiAkYWNjb3JkaW9ubWVudS1pdGVtLWJhY2tncm91bmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYWNjb3JkaW9ubWVudS1pdGVtLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgICBwYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1wYWRkaW5nO1xuICAgIH1cblxuICAgIC5pcy1hY2NvcmRpb24tc3VibWVudSBhIHtcbiAgICAgIHBhZGRpbmc6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtcGFkZGluZztcbiAgICB9XG5cbiAgICAubmVzdGVkLmlzLWFjY29yZGlvbi1zdWJtZW51IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW4pO1xuICAgIH1cblxuICAgICYuYWxpZ24tI3skZ2xvYmFsLXJpZ2h0fSB7XG4gICAgICAubmVzdGVkLmlzLWFjY29yZGlvbi1zdWJtZW51IHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQoJGFjY29yZGlvbm1lbnUtbmVzdGVkLW1hcmdpbiwgcmlnaHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkYWNjb3JkaW9ubWVudS1hcnJvd3Mge1xuICAgICAgQGluY2x1ZGUgemYtYWNjb3JkaW9uLW1lbnUtbGVmdC1yaWdodC1hcnJvd3M7XG5cbiAgICAgIC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnRbYXJpYS1leHBhbmRlZD0ndHJ1ZSddID4gYTo6YWZ0ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5pcy1hY2NvcmRpb24tc3VibWVudSBsaSB7XG4gICAgQGlmICRhY2NvcmRpb25tZW51LWJvcmRlciB7XG4gICAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgICBib3JkZXItbGVmdDogMDtcbiAgICB9XG4gIH1cblxuICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAuaGFzLXN1Ym1lbnUtdG9nZ2xlID4gYSB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoO1xuICB9XG5cbiAgLy8gU3VibWVudSB0b2dnbGVcbiAgLnN1Ym1lbnUtdG9nZ2xlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgICN7JGdsb2JhbC1yaWdodH06IDA7XG5cbiAgICB3aWR0aDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGg7XG4gICAgaGVpZ2h0OiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1oZWlnaHQ7XG5cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAkYWNjb3JkaW9uLXN1Ym1lbnUtdG9nZ2xlLWJvcmRlcjtcblxuICAgIEBpZiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQ6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgLy8gQWRkIHRoZSBhcnJvdyB0byB0aGUgdG9nZ2xlXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKDZweCwgJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3IsIGRvd24pO1xuXG4gICAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBtYXJnaW46IGF1dG87XG4gICAgfVxuICB9XG5cbiAgLy8gUm90YXRlIHRoZSBhcnJvdyB3aGVuIG1lbnUgaXMgb3BlblxuICAuc3VibWVudS10b2dnbGVbYXJpYS1leHBhbmRlZD0ndHJ1ZSddOjphZnRlciB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoLTEpO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XG4gIH1cblxuICAuc3VibWVudS10b2dnbGUtdGV4dCB7XG4gICAgQGluY2x1ZGUgZWxlbWVudC1pbnZpc2libGU7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcmlsbGRvd25cbi8vLy9cblxuLy8vIFRyYW5zaXRpb24gcHJvcGVydHkgdG8gdXNlIGZvciBhbmltYXRpbmcgbWVudXMuXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxuJGRyaWxsZG93bi10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgbGluZWFyICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBhcnJvd3MgdG8gZHJpbGxkb3duIGl0ZW1zIHdpdGggc3VibWVudXMsIGFzIHdlbGwgYXMgdGhlIGJhY2sgYnV0dG9uLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRkcmlsbGRvd24tYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gbWVudSBpdGVtIHBhZGRpbmcuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJpbGxkb3duLXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gbWVudSBuZXN0ZWQgbWFyZ2luXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJpbGxkb3duLW5lc3RlZC1tYXJnaW46IDAgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcmlsbGRvd24gdG9wIGxldmVsIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJpbGxkb3duLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJpbGxkb3duIG1lbnUgaXRlbSBwYWRkaW5nIGluIHRoZSBzdWJtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJGRyaWxsZG93bi1zdWJtZW51LXBhZGRpbmc6ICRkcmlsbGRvd24tcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIGRyaWxsZG93biBzdWJtZW51cy5cbi8vLyBAdHlwZSBDb2xvclxuJGRyaWxsZG93bi1zdWJtZW51LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJpbGxkb3duIGFycm93IGNvbG9yIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcmlsbGRvd24tYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gYXJyb3cgc2l6ZSBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIExlbmd0aFxuJGRyaWxsZG93bi1hcnJvdy1zaXplOiA2cHggIWRlZmF1bHQ7XG5cbkBtaXhpbiB6Zi1kcmlsbGRvd24tbGVmdC1yaWdodC1hcnJvd3Mge1xuICAuaXMtZHJpbGxkb3duLXN1Ym1lbnUtcGFyZW50ID4gYSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcmlsbGRvd24tYXJyb3ctc2l6ZSwgJGRyaWxsZG93bi1hcnJvdy1jb2xvciwgJGdsb2JhbC1yaWdodCk7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIG1hcmdpbi10b3A6IC0xICogJGRyaWxsZG93bi1hcnJvdy1zaXplO1xuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgICB9XG4gIH1cblxuICAmLmFsaWduLWxlZnQgLmlzLWRyaWxsZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCByaWdodCk7XG4gICAgcmlnaHQ6IDFyZW07XG4gICAgbGVmdDogYXV0bztcbiAgfVxuXG4gICYuYWxpZ24tcmlnaHQgLmlzLWRyaWxsZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCBsZWZ0KTtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAxcmVtO1xuICB9XG5cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZHJpbGxkb3duLW1lbnUge1xuICAvLyBBcHBsaWVkIHRvIHRoZSBNZW51IGNvbnRhaW5lclxuICAuaXMtZHJpbGxkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIGxpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgICYuYW5pbWF0ZS1oZWlnaHQge1xuICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuNXM7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhlIHRvcCBsZXZlbCA8dWw+XG4gIC5kcmlsbGRvd24ge1xuICAgIGEge1xuICAgICAgcGFkZGluZzogJGRyaWxsZG93bi1wYWRkaW5nO1xuICAgICAgYmFja2dyb3VuZDogJGRyaWxsZG93bi1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIC8vIEFwcGxpZWQgdG8gc3VibWVudSA8dWw+c1xuICAgIC5pcy1kcmlsbGRvd24tc3VibWVudSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICAjeyRnbG9iYWwtbGVmdH06IDEwMCU7XG4gICAgICB6LWluZGV4OiAtMTtcblxuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBiYWNrZ3JvdW5kOiAkZHJpbGxkb3duLXN1Ym1lbnUtYmFja2dyb3VuZDtcbiAgICAgIHRyYW5zaXRpb246ICRkcmlsbGRvd24tdHJhbnNpdGlvbjtcblxuICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gbHRyLCAtMTAwJSwgMTAwJSkpO1xuICAgICAgfVxuXG4gICAgICAmLmlzLWNsb3Npbmcge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBsdHIsIDEwMCUsIC0xMDAlKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFN1Ym1lbnUgaXRlbSBwYWRkaW5nXG4gICAgICBhIHtcbiAgICAgICAgcGFkZGluZzogJGRyaWxsZG93bi1zdWJtZW51LXBhZGRpbmc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm5lc3RlZC5pcy1kcmlsbGRvd24tc3VibWVudSB7XG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkZHJpbGxkb3duLW5lc3RlZC1tYXJnaW4pO1xuICAgIH1cblxuICAgIC5kcmlsbGRvd24tc3VibWVudS1jb3Zlci1wcmV2aW91cyB7XG4gICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIEBpZiAkZHJpbGxkb3duLWFycm93cyB7XG4gICAgICBAaW5jbHVkZSB6Zi1kcmlsbGRvd24tbGVmdC1yaWdodC1hcnJvd3M7XG5cbiAgICAgIC5qcy1kcmlsbGRvd24tYmFjayA+IGE6OmJlZm9yZSB7XG4gICAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJpbGxkb3duLWFycm93LXNpemUsICRkcmlsbGRvd24tYXJyb3ctY29sb3IsICRnbG9iYWwtbGVmdCk7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDAuNzVyZW07IC8vIENyZWF0ZXMgc3BhY2UgYmV0d2VlbiB0aGUgYXJyb3cgYW5kIHRoZSB0ZXh0XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZHJvcGRvd24tbWVudVxuLy8vL1xuXG4vLy8gRW5hYmxlcyBhcnJvd3MgZm9yIGl0ZW1zIHdpdGggZHJvcGRvd24gbWVudXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGRyb3Bkb3dubWVudS1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyb3Bkb3duIG1lbnUgYXJyb3cgY29sb3IgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvcjogJGFuY2hvci1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBhcnJvdyBzaXplIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LWFycm93LXNpemU6IDZweCAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBhcnJvdyBwYWRkaW5nIGZvciBhbGlnbmluZyB0aGUgYXJyb3cgY29ycmVjdGx5LlxuLy8vIEB0eXBlIExlbmd0aFxuJGRyb3Bkb3dubWVudS1hcnJvdy1wYWRkaW5nOiAxLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBNaW5pbXVtIHdpZHRoIG9mIGRyb3Bkb3duIHN1Yi1tZW51cy5cbi8vLyBAdHlwZSBMZW5ndGhcbiRkcm9wZG93bm1lbnUtbWluLXdpZHRoOiAyMDBweCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRvcCBsZXZlbCBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3dubWVudS1iYWNrZ3JvdW5kOiBudWxsICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgZHJvcGRvd25zLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd25tZW51LXN1Ym1lbnUtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBmb3IgdG9wIGxldmVsIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3dubWVudS1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBuZXN0ZWQgbWFyZ2luXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd25tZW51LW5lc3RlZC1tYXJnaW46IDAgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGZvciBzdWItbWVudSBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bm1lbnUtc3VibWVudS1wYWRkaW5nOiAkZHJvcGRvd25tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgZm9yIGRyb3Bkb3duIHN1Yi1tZW51cy5cbi8vLyBAdHlwZSBMaXN0XG4kZHJvcGRvd25tZW51LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8gQm9yZGVyIHdpZHRoIGZvciBkcm9wZG93biBzdWItbWVudXMuXG4vLyBVc2VkIHRvIGFkanVzdCB0b3AgbWFyZ2luIG9mIGEgc3ViLW1lbnUgaWYgYSBib3JkZXIgaXMgdXNlZC5cbi8vIEB0eXBlIExlbmd0aFxuJGRyb3Bkb3dubWVudS1ib3JkZXItd2lkdGg6IG50aCgkZHJvcGRvd25tZW51LWJvcmRlciwgMSk7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIGFuIGFjdGl2ZSBkcm9wZG93biBtZW51IGl0ZW0uIEV4cGxpY2l0IG92ZXJyaWRlIGZvciBtZW51IGRlZmF1bHRzXG4vLy8gQHR5cGUgQ29sb3JcbiRkcm9wZG93bi1tZW51LWl0ZW0tY29sb3ItYWN0aXZlOiBnZXQtY29sb3IocHJpbWFyeSkgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGFjdGl2ZSBkcm9wZG93biBtZW51IGl0ZW0uIEV4cGxpY2l0IG92ZXJyaWRlIGZvciBtZW51IGRlZmF1bHRzXG4vLy8gQHR5cGUgQ29sb3JcbiRkcm9wZG93bi1tZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU6IHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuXG5AbWl4aW4gemYtZHJvcGRvd24tbGVmdC1yaWdodC1hcnJvd3Mge1xuICA+IGE6OmFmdGVyIHtcbiAgICAjeyRnbG9iYWwtcmlnaHR9OiAxNHB4O1xuICB9XG5cbiAgJi5vcGVucy1sZWZ0ID4gYTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGxlZnQpO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDVweDtcbiAgfVxuXG4gICYub3BlbnMtcmlnaHQgPiBhOjphZnRlciB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgcmlnaHQpO1xuICB9XG59XG5cbkBtaXhpbiBkcm9wZG93bi1tZW51LWRpcmVjdGlvbigkZGlyOiBob3Jpem9udGFsKSB7XG4gIEBpZiAkZGlyID09IGhvcml6b250YWwge1xuICAgID4gbGkub3BlbnMtbGVmdCB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgPiBsaS5vcGVucy1yaWdodCB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcbiAgICAgID4gbGkuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQgPiBhIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZy0jeyRnbG9iYWwtcmlnaHR9OiAkZHJvcGRvd25tZW51LWFycm93LXBhZGRpbmc7XG4gICAgICB9XG5cbiAgICAgID4gbGkuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQgPiBhOjphZnRlciB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCBkb3duKTtcbiAgICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogNXB4O1xuICAgICAgICAjeyRnbG9iYWwtbGVmdH06IGF1dG87XG4gICAgICAgIG1hcmdpbi10b3A6IC0xICogKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSAvIDIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkZGlyID09IHZlcnRpY2FsIHtcbiAgICA+IGxpIHtcbiAgICAgIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgfVxuXG4gICAgICAmLm9wZW5zLWxlZnQge1xuICAgICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgcmlnaHQ6IDEwMCU7XG4gICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLm9wZW5zLXJpZ2h0IHtcbiAgICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgICAgbGVmdDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaWYgJGRyb3Bkb3dubWVudS1hcnJvd3Mge1xuICAgICAgICBAaW5jbHVkZSB6Zi1kcm9wZG93bi1sZWZ0LXJpZ2h0LWFycm93cztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuICdUaGUgZGlyZWN0aW9uIHVzZWQgZm9yIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKCkgbXVzdCBiZSBob3Jpem9udGFsIG9yIHZlcnRpY2FsLic7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZHJvcGRvd24tbWVudSB7XG4gIC5kcm9wZG93bi5tZW51IHtcbiAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcblxuICAgIGEge1xuICAgICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICAgIH1cblxuICAgIC8vIFRvcC1sZXZlbCBpdGVtXG4gICAgPiBsaSA+IGEge1xuICAgICAgYmFja2dyb3VuZDogJGRyb3Bkb3dubWVudS1iYWNrZ3JvdW5kO1xuICAgICAgcGFkZGluZzogJGRyb3Bkb3dubWVudS1wYWRkaW5nO1xuICAgIH1cblxuICAgIC8vIFRvcC1sZXZlbCBpdGVtIGFjdGl2ZSBzdGF0ZVxuICAgID4gbGkuaXMtYWN0aXZlID4gYSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkZHJvcGRvd24tbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlO1xuICAgICAgY29sb3I6ICRkcm9wZG93bi1tZW51LWl0ZW0tY29sb3ItYWN0aXZlO1xuICAgIH1cblxuICAgIC5uby1qcyAmIHVsIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLm5lc3RlZC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRkcm9wZG93bm1lbnUtbmVzdGVkLW1hcmdpbik7XG4gICAgfVxuXG4gICAgJi52ZXJ0aWNhbCB7XG4gICAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XG4gICAgfVxuXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgICAgJi4jeyRzaXplfS1ob3Jpem9udGFsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICYuI3skc2l6ZX0tdmVydGljYWwge1xuICAgICAgICAgICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuYWxpZ24tcmlnaHQge1xuICAgICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUuZmlyc3Qtc3ViIHtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuaXMtZHJvcGRvd24tbWVudS52ZXJ0aWNhbCB7XG4gICAgd2lkdGg6IDEwMHB4O1xuXG4gICAgJi5hbGlnbi1yaWdodCB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBhOjphZnRlciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgICN7JGdsb2JhbC1yaWdodH06IDVweDtcbiAgICAgICN7JGdsb2JhbC1sZWZ0fTogYXV0bztcbiAgICAgIG1hcmdpbi10b3A6IC0xICogJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplO1xuICAgIH1cblxuICAgICYub3BlbnMtaW5uZXIgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG5cbiAgICAgIHRvcDogMTAwJTtcbiAgICAgIEBpZiAkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09ICdydGwnIHtcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5vcGVucy1sZWZ0ID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgcmlnaHQ6IDEwMCU7XG4gICAgICBsZWZ0OiBhdXRvO1xuICAgIH1cblxuICAgICYub3BlbnMtcmlnaHQgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICByaWdodDogYXV0bztcbiAgICAgIGxlZnQ6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAxMDAlO1xuICAgIHotaW5kZXg6IDE7XG5cbiAgICBkaXNwbGF5OiBub25lO1xuICAgIG1pbi13aWR0aDogJGRyb3Bkb3dubWVudS1taW4td2lkdGg7XG5cbiAgICBib3JkZXI6ICRkcm9wZG93bm1lbnUtYm9yZGVyO1xuICAgIGJhY2tncm91bmQ6ICRkcm9wZG93bm1lbnUtc3VibWVudS1iYWNrZ3JvdW5kO1xuXG4gICAgLmRyb3Bkb3duICYgYSB7XG4gICAgICBwYWRkaW5nOiAkZHJvcGRvd25tZW51LXN1Ym1lbnUtcGFkZGluZztcbiAgICB9XG5cbiAgICAuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQge1xuICAgICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcbiAgICAgICAgQGluY2x1ZGUgemYtZHJvcGRvd24tbGVmdC1yaWdodC1hcnJvd3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICh0eXBlLW9mKCRkcm9wZG93bm1lbnUtYm9yZGVyLXdpZHRoKSA9PSAnbnVtYmVyJykge1xuICAgICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICBtYXJnaW4tdG9wOiAoLSRkcm9wZG93bm1lbnUtYm9yZGVyLXdpZHRoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICA+IGxpIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC8vIFtUT0RPXSBDdXQgYmFjayBzcGVjaWZpY2l0eVxuICAgIC8vJjpub3QoLmpzLWRyb3Bkb3duLW5vaG92ZXIpID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50OmhvdmVyID4gJiwgLy8gd2h5IGlzIHRoaXMgbGluZSBuZWVkZWQ/IE9wZW5pbmcgaXMgaGFuZGxlZCBieSBKUyBhbmQgdGhpcyBjYXVzZXMgc29tZSB1Z2x5IGZsaWNrZXJpbmcgd2hlbiB0aGUgc3ViIGlzIHJlLXBvc2l0aW9uZWQgYXV0b21hdGljYWxseS4uLlxuICAgICYuanMtZHJvcGRvd24tYWN0aXZlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG9mZi1jYW52YXNcbi8vLy9cblxuLy8vIFdpZHRoIG1hcCBvZiBhIGxlZnQvcmlnaHQgb2ZmLWNhbnZhcyBwYW5lbC5cbi8vLyBAdHlwZSBNYXBcbiRvZmZjYW52YXMtc2l6ZXM6IChcbiAgc21hbGw6IDI1MHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBtYXAgb2YgYSB0b3AvYm90dG9tIG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgTWFwXG4kb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzOiAoXG4gIHNtYWxsOiAyNTBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgQ29sb3JcbiRvZmZjYW52YXMtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3ggc2hhZG93IGZvciB0aGUgb2ZmLWNhbnZhcyBvdmVybGFwIHBhbmVsLlxuLy8vIEB0eXBlIFNoYWRvd1xuJG9mZmNhbnZhcy1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoJGJsYWNrLCAwLjcpICFkZWZhdWx0O1xuXG4vLy8gSW5uZXIgYm94IHNoYWRvdyBzaXplIGZvciB0aGUgb2ZmLWNhbnZhcyBwdXNoIHBhbmVsLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZTogMjBweCAhZGVmYXVsdDtcblxuLy8vIElubmVyIGJveCBzaGFkb3cgY29sb3IgZm9yIHRoZSBvZmYtY2FudmFzIHB1c2ggcGFuZWwuXG4vLy8gQHR5cGUgQ29sb3JcbiRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yOiByZ2JhKCRibGFjaywgMC4yNSkgIWRlZmF1bHQ7XG5cbi8vLyBaLWluZGV4IG9mIGFuIG9mZi1jYW52YXMgY29udGVudCBvdmVybGF5LlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleDogMTEgIWRlZmF1bHQ7XG5cbi8vLyBaLWluZGV4IG9mIGFuIG9mZi1jYW52YXMgcGFuZWwgd2l0aCB0aGUgYHB1c2hgIHRyYW5zaXRpb24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLXB1c2gtemluZGV4OiAxMiAhZGVmYXVsdDtcblxuLy8vIFotaW5kZXggb2YgYW4gb2ZmLWNhbnZhcyBwYW5lbCB3aXRoIHRoZSBgb3ZlcmxhcGAgdHJhbnNpdGlvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXg6IDEzICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIHBhbmVsIHVzaW5nIHRoZSBgcmV2ZWFsLWZvci0qYCBjbGFzc2VzIG9yIG1peGluLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4OiAxMiAhZGVmYXVsdDtcblxuLy8vIExlbmd0aCBvZiB0aGUgYW5pbWF0aW9uIG9uIGFuIG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoOiAwLjVzICFkZWZhdWx0O1xuXG4vLy8gVGltaW5nIGZ1bmN0aW9uIG9mIHRoZSBhbmltYXRpb24gb24gYW4gb2ZmLWNhbnZhcyBwYW5lbC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nOiBlYXNlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBhIHJldmVhbGVkIG9mZi1jYW52YXMgd2lsbCBiZSBmaXhlZC1wb3NpdGlvbiwgYW5kIHNjcm9sbCB3aXRoIHRoZSBzY3JlZW4uXG4vLy8gQHR5cGUgQm9vbFxuJG9mZmNhbnZhcy1maXhlZC1yZXZlYWw6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgb3ZlcmxheSB0aGF0IGFwcGVhcnMgd2hlbiBhbiBvZmYtY2FudmFzIHBhbmVsIGlzIG9wZW4uXG4vLy8gQHR5cGUgQ29sb3JcbiRvZmZjYW52YXMtZXhpdC1iYWNrZ3JvdW5kOiByZ2JhKCR3aGl0ZSwgMC4yNSkgIWRlZmF1bHQ7XG5cbi8vLyBDU1MgY2xhc3MgdXNlZCBmb3IgdGhlIG1haW4gY29udGVudCBhcmVhLiBUaGUgb2ZmLWNhbnZhcyBtaXhpbnMgdXNlIHRoaXMgdG8gdGFyZ2V0IHRoZSBwYWdlIGNvbnRlbnQuXG4kbWFpbmNvbnRlbnQtY2xhc3M6ICdvZmYtY2FudmFzLWNvbnRlbnQnICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBiYXNlbGluZSBzdHlsZXMgZm9yIG9mZi1jYW52YXMuIFRoaXMgQ1NTIGlzIHJlcXVpcmVkIHRvIG1ha2UgdGhlIG90aGVyIHBpZWNlcyB3b3JrLlxuQG1peGluIG9mZi1jYW52YXMtYmFzaWNzIHtcblxuICAvLy8gVHJhbnNmb3JtIGRlcHJlY2F0ZWQgc2l6ZSBzZXR0aW5ncyBpbnRvIG1hcCAmIHNob3cgd2FybmluZ1xuICBAaWYgdmFyaWFibGUtZXhpc3RzKG9mZmNhbnZhcy1zaXplKSB7XG4gICAgJG9mZmNhbnZhcy1zaXplczogKHNtYWxsOiAkb2ZmY2FudmFzLXNpemUsIG1lZGl1bTogJG9mZmNhbnZhcy1zaXplKSAhZ2xvYmFsO1xuICAgIEB3YXJuICckb2ZmY2FudmFzLXNpemUgaXMgZGVwcmVjYXRlZCBhbmQgbm90IHVzZWQgYW55bW9yZSEgUGxlYXNlIHVwZGF0ZSB5b3VyIHNldHRpbmdzIGFuZCB1c2UgdGhlIG1hcCAkb2ZmY2FudmFzLXNpemVzIGluc3RlYWQnO1xuICB9XG4gIEBpZiB2YXJpYWJsZS1leGlzdHMob2ZmY2FudmFzLXZlcnRpY2FsLXNpemUpIHtcbiAgICAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzOiAoc21hbGw6ICRvZmZjYW52YXMtdmVydGljYWwtc2l6ZSwgbWVkaXVtOiAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemUpICFnbG9iYWw7XG4gICAgQHdhcm4gJyRvZmZjYW52YXMtdmVydGljYWwtc2l6ZSBpcyBkZXByZWNhdGVkIGFuZCBub3QgdXNlZCBhbnltb3JlISBQbGVhc2UgdXBkYXRlIHlvdXIgc2V0dGluZ3MgYW5kIHVzZSB0aGUgbWFwICRvZmZjYW52YXMtdmVydGljYWwtc2l6ZXMgaW5zdGVhZCc7XG4gIH1cblxuICAvLyBDaGVja3MgdGhlIHotaW5kZXhlcyBhbmQgaW5jcmVhc2UgdGhlbSBkdWUgdG8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIG92ZXJsYXkncyB6LWluZGV4IGlzIG5ldyBzaW5jZSB2Ni40IGFuZCBtYXkgYmUgaWRlbnRpY2FsIHRvIHRoZSB1c2VyIGN1c3RvbSBzZXR0aW5ncyBvZiB0aGUgcHVzaCB6LWluZGV4LlxuICBAaWYgJG9mZmNhbnZhcy1wdXNoLXppbmRleCA8PSAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4IHsgJG9mZmNhbnZhcy1wdXNoLXppbmRleDogJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleCArIDEgIWdsb2JhbDsgfVxuICBAaWYgJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleCA8PSAkb2ZmY2FudmFzLXB1c2gtemluZGV4IHsgJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDogJG9mZmNhbnZhcy1wdXNoLXppbmRleCArIDEgIWdsb2JhbDsgfVxuICBAaWYgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4IDw9ICRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXggeyAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXg6ICRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXggKyAxICFnbG9iYWw7IH1cblxuICAvLyBIaWRlcyBvdmVyZmxvdyBvbiBib2R5IHdoZW4gYW4gb2ZmLWNhbnZhcyBwYW5lbCBpcyBvcGVuLlxuICAuaXMtb2ZmLWNhbnZhcy1vcGVuIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBvdmVybGF5IChnZW5lcmF0ZWQgYnkgSmF2YVNjcmlwdClcbiAgLmpzLW9mZi1jYW52YXMtb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6ICRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXg7XG5cbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZywgdmlzaWJpbGl0eSAkb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoICRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc7XG5cbiAgICBiYWNrZ3JvdW5kOiAkb2ZmY2FudmFzLWV4aXQtYmFja2dyb3VuZDtcblxuICAgIG9wYWNpdHk6IDA7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICYuaXMtdmlzaWJsZSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB9XG5cbiAgICAmLmlzLWNsb3NhYmxlIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAmLmlzLW92ZXJsYXktYWJzb2x1dGUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIH1cblxuICAgICYuaXMtb3ZlcmxheS1maXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgfVxuICB9XG59XG5cbi8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBhbiBvZmYtY2FudmFzIHdyYXBwZXIuXG5AbWl4aW4gb2ZmLWNhbnZhcy13cmFwcGVyKCkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8vLyBBZGRzIGJhc2ljIHN0eWxlcyBmb3IgYW4gb2ZmLWNhbnZhcyBwYW5lbC5cbkBtaXhpbiBvZmYtY2FudmFzLWJhc2UoXG4gICRiYWNrZ3JvdW5kOiAkb2ZmY2FudmFzLWJhY2tncm91bmQsXG4gICR0cmFuc2l0aW9uOiAkb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoICRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmcsXG4gICRmaXhlZDogdHJ1ZVxuKSB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcblxuICBAaWYgJGZpeGVkID09IHRydWUge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG5cbiAgLy8gU2V0IHRoZSBvZmYtY2FudmFzIHotaW5kZXguXG4gIHotaW5kZXg6ICRvZmZjYW52YXMtcHVzaC16aW5kZXg7XG5cbiAgLy8gSW5jcmVhc2UgQ1NTIHNwZWNpZmljaXR5XG4gICYuaXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICB6LWluZGV4OiAkb2ZmY2FudmFzLXB1c2gtemluZGV4O1xuICB9XG5cbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICR0cmFuc2l0aW9uO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG5cbiAgLy8gSGlkZSBpbmFjdGl2ZSBvZmYtY2FudmFzIHdpdGhpbiB0aGUgY29udGVudCB0aGF0IGhhdmUgdGhlIHNhbWUgcG9zaXRpb25cbiAgJi5pcy1jbG9zZWQge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxuXG4gIC8vIE92ZXJsYXAgb25seSBzdHlsZXMuXG4gICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwIHtcbiAgICB6LWluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4O1xuXG4gICAgJi5pcy1vcGVuIHtcbiAgICAgIGJveC1zaGFkb3c6ICRvZmZjYW52YXMtc2hhZG93O1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldHMgdHJhbnNmb3JtIHRvIDAgdG8gc2hvdyBhbiBvZmYtY2FudmFzIHBhbmVsLlxuICAmLmlzLW9wZW4ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyB0byBwb3NpdGlvbiBhbiBvZmYtY2FudmFzIHBhbmVsIHRvIHRoZSBsZWZ0L3JpZ2h0L3RvcC9ib3R0b20uXG5AbWl4aW4gb2ZmLWNhbnZhcy1wb3NpdGlvbihcbiAgJHBvc2l0aW9uOiBsZWZ0LFxuICAkb3JpZW50YXRpb246IGhvcml6b250YWwsXG4gICRzaXplczogaWYoJG9yaWVudGF0aW9uID09IGhvcml6b250YWwsICRvZmZjYW52YXMtc2l6ZXMsICRvZmZjYW52YXMtdmVydGljYWwtc2l6ZXMpXG4pIHtcbiAgQGlmICRwb3NpdGlvbiA9PSBsZWZ0IHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICB3aWR0aDogJHNpemU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtJHNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIHBvc2l0aW9uIGZvciBuZXN0ZWQgb2ZmLWNhbnZhcyBlbGVtZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAub2ZmLWNhbnZhcy5wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xuXG4gICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtJHNpemUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcC5pcy1vcGVuIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9LmlzLW9wZW4tI3skcG9zaXRpb259IHtcbiAgICAgICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgkc2l6ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSByaWdodCB7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIHdpZHRoOiAkc2l6ZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcblxuICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHNpemUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcC5pcy1vcGVuIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9LmlzLW9wZW4tI3skcG9zaXRpb259IHtcbiAgICAgICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtJHNpemUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIGhlaWdodDogJHNpemU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJHNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIHBvc2l0aW9uIGZvciBuZXN0ZWQgb2ZmLWNhbnZhcyBlbGVtZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAub2ZmLWNhbnZhcy5wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHNpemUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gYm90dG9tIHtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIGhlaWdodDogJHNpemU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgcG9zaXRpb24gZm9yIG5lc3RlZCBvZmYtY2FudmFzIGVsZW1lbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IC5vZmYtY2FudmFzLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG4gICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwLmlzLW9wZW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBvcGVuIHBvc2l0aW9uIGZvciB0aGUgY29udGVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30uaXMtb3Blbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kc2l6ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSBpcyBzZXQsIGFkZCBpbm5lciBib3gtc2hhZG93LlxuICAvLyBUaGlzIG1pbWljcyB0aGUgb2ZmLWNhbnZhcyBwYW5lbCBoYXZpbmcgYSBsb3dlciB6LWluZGV4LCB3aXRob3V0IGhhdmluZyB0byBoYXZlIG9uZS5cbiAgQGlmICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUge1xuICAgICYuaXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICAgIEBpZiAkcG9zaXRpb24gPT0gbGVmdCB7XG4gICAgICAgIEBpbmNsdWRlIGlubmVyLXNpZGUtc2hhZG93KHJpZ2h0LCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplLCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcik7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gcmlnaHQge1xuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyhsZWZ0LCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplLCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcik7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcbiAgICAgICAgQGluY2x1ZGUgaW5uZXItc2lkZS1zaGFkb3coYm90dG9tLCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplLCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcik7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gYm90dG9tIHtcbiAgICAgICAgQGluY2x1ZGUgaW5uZXItc2lkZS1zaGFkb3codG9wLCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplLCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cblxuLy8vIFNldHMgdGhlIHN0eWxlcyBmb3IgdGhlIGNvbnRlbnQgY29udGFpbmVyLlxuQG1peGluIG9mZi1jYW52YXMtY29udGVudCgpIHtcbiAgdHJhbnNmb3JtOiBub25lO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgLy8gQmluZCB0byBoYXMtdHJhbnNpdGlvbi1YIGNsYXNzIHRvIHByZXZlbnQgdHJhbnNpdGlvbiBmb3IgdHJhbnNmb3JtOm5vbmVcbiAgJi5oYXMtdHJhbnNpdGlvbi1vdmVybGFwLFxuICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoICRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc7XG4gIH1cblxuICAvLyBUcmFuc2Zvcm0gc2NvcGUgdW50aWwgdGhlIGVsZW1lbnQgaXMgY2xvc2VkIChtYWtlcyBzdXJlIHRyYW5zaXRpb25lbmQgZ2V0cyB0cmlnZ2VyZWQpXG4gICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gIH1cblxuICAvLyBDb25zaWRlciBlbGVtZW50ICYgY29udGVudCwgbmVzdGVkIGluIGFub3RoZXIgY29udGVudFxuICAub2ZmLWNhbnZhcy5pcy1vcGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgdGhhdCByZXZlYWwgYW4gb2ZmLWNhbnZhcyBwYW5lbC5cbkBtaXhpbiBvZmYtY2FudmFzLXJldmVhbChcbiRwb3NpdGlvbjogbGVmdCxcbiR6aW5kZXg6ICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCxcbiRjb250ZW50OiAkbWFpbmNvbnRlbnQtY2xhc3MsXG4kYnJlYWtwb2ludDogc21hbGxcbikge1xuICB0cmFuc2Zvcm06IG5vbmU7XG4gIHotaW5kZXg6ICR6aW5kZXg7XG4gIHRyYW5zaXRpb246IG5vbmU7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG5cbiAgQGlmIG5vdCAkb2ZmY2FudmFzLWZpeGVkLXJldmVhbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG5cbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC8vIENvbnNpZGVyIHJldmVhbGVkIGVsZW1lbnQgaXMgbmVzdGVkIGluIGNvbnRlbnRcbiAgLiN7JG1haW5jb250ZW50LWNsYXNzfSAmIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cblxuICBAYXQtcm9vdCAuI3skY29udGVudH0uaGFzLXJldmVhbC0jeyRwb3NpdGlvbn0ge1xuICAgIG1hcmdpbi0jeyRwb3NpdGlvbn06IC16Zi1nZXQtYnAtdmFsKCRvZmZjYW52YXMtc2l6ZXMsICRicmVha3BvaW50KTtcbiAgfVxuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IChwcmlvciB0byB2Ni40KVxuICAmIH4gLiN7JGNvbnRlbnR9IHtcbiAgICBtYXJnaW4tI3skcG9zaXRpb259OiAtemYtZ2V0LWJwLXZhbCgkb2ZmY2FudmFzLXNpemVzLCAkYnJlYWtwb2ludCk7XG4gIH1cbn1cblxuLy8vIE92ZXJyaWRlcyB0aGUgb2ZmLWNhbnZhcyBzdHlsZXNcbkBtaXhpbiBpbi1jYW52YXMoKSB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIGhlaWdodDogYXV0bztcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgd2lkdGg6IGF1dG87XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICB0cmFuc2l0aW9uOiBub25lO1xuXG4gIC8vIEluY3JlYXNlIENTUyBzcGVjaWZpY2l0eVxuICAmLnBvc2l0aW9uLWxlZnQsXG4gICYucG9zaXRpb24tcmlnaHQsXG4gICYucG9zaXRpb24tdG9wLFxuICAmLnBvc2l0aW9uLWJvdHRvbSB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cblxuICAuY2xvc2UtYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW9mZi1jYW52YXMge1xuICBAaW5jbHVkZSBvZmYtY2FudmFzLWJhc2ljcztcblxuICAvLyBPZmYtY2FudmFzIHdyYXBwZXJcbiAgLm9mZi1jYW52YXMtd3JhcHBlciB7XG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy13cmFwcGVyO1xuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBjb250YWluZXJcbiAgLm9mZi1jYW52YXMge1xuICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtYmFzZTtcblxuICAgIC8vIEZvcmNlIHBvc2l0aW9uIGFic29sdXRlIGZvciBuZXN0ZWQgb2ZmLWNhbnZhcyBiZWNhdXNlIGZpeGVkIGRvZXNuJ3Qgd29yayBmb3IgcHVzaCB0cmFuc2l0aW9uIHdpdGhpbiB0aGUgdHJhbnNmb3JtIHNjb3BlLlxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gJiB7XG4gICAgICAvLyBOT1RFOiBzaW5jZSBvdmVybGFwIHRyYW5zaXRpb24gaXMgY3VycmVudGx5IGZvcmNlZCBpZiBuZXN0ZWQsIHRoZXJlJ3Mgbm8gbmVlZCB0byBmb3JjZSBwb3NpdGlvbiBhYnNvbHV0ZSB1bnRpbCBuZXN0ZWQgcHVzaCB0cmFuc2l0aW9uIGlzIHN1cHBvcnRlZC5cbiAgICAgIC8vIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG4gIH1cblxuICAvLyBPZmYtY2FudmFzIGNvbnRhaW5lciB3aXRoIGFic29sdXRlIHBvc2l0aW9uXG4gIC5vZmYtY2FudmFzLWFic29sdXRlIHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLWJhc2UoJGZpeGVkOiBmYWxzZSk7XG4gIH1cblxuICAvLyBPZmYtY2FudmFzIHBvc2l0aW9uIGNsYXNzZXNcbiAgLnBvc2l0aW9uLWxlZnQgICAgeyBAaW5jbHVkZSBvZmYtY2FudmFzLXBvc2l0aW9uKGxlZnQsICAgaG9yaXpvbnRhbCk7IH1cbiAgLnBvc2l0aW9uLXJpZ2h0ICAgeyBAaW5jbHVkZSBvZmYtY2FudmFzLXBvc2l0aW9uKHJpZ2h0LCAgaG9yaXpvbnRhbCk7IH1cbiAgLnBvc2l0aW9uLXRvcCAgICAgeyBAaW5jbHVkZSBvZmYtY2FudmFzLXBvc2l0aW9uKHRvcCwgICAgdmVydGljYWwpOyB9XG4gIC5wb3NpdGlvbi1ib3R0b20gIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihib3R0b20sIHZlcnRpY2FsKTsgfVxuXG4gIC5vZmYtY2FudmFzLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtY29udGVudDtcbiAgfVxuXG4gIC8vIFJldmVhbCBvZmYtY2FudmFzIHBhbmVsIG9uIGxhcmdlciBzY3JlZW5zXG4gIEBlYWNoICRuYW1lLCAkdmFsdWUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgQGlmICRuYW1lICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgLnBvc2l0aW9uLWxlZnQucmV2ZWFsLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwobGVmdCwgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4LCAkbWFpbmNvbnRlbnQtY2xhc3MsICRuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wb3NpdGlvbi1yaWdodC5yZXZlYWwtZm9yLSN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXJldmVhbChyaWdodCwgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4LCAkbWFpbmNvbnRlbnQtY2xhc3MsICRuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wb3NpdGlvbi10b3AucmV2ZWFsLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwodG9wLCAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsICRtYWluY29udGVudC1jbGFzcywgJG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBvc2l0aW9uLWJvdHRvbS5yZXZlYWwtZm9yLSN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXJldmVhbChib3R0b20sICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCwgJG1haW5jb250ZW50LWNsYXNzLCAkbmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBNb3ZlIGluLWNhbnZhcyBmb3IgbGFyZ2VyIHNjcmVlbnNcbiAgQGVhY2ggJG5hbWUsICR2YWx1ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJG5hbWUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAub2ZmLWNhbnZhcy5pbi1jYW52YXMtZm9yLSN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBpbi1jYW52YXM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHJldmVhbFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEgbW9kYWwuXG4vLy8gQHR5cGUgQ29sb3JcbiRyZXZlYWwtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB3aWR0aCBvZiBhIG1vZGFsLCB3aXRoIG5vIGNsYXNzIGFwcGxpZWQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLXdpZHRoOiA2MDBweCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWF4aW11bSB3aWR0aCBvZiBhIG1vZGFsLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC1tYXgtd2lkdGg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGEgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIGFyb3VuZCBhIG1vZGFsLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3IgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyB6LWluZGV4IGZvciBtb2RhbHMuIFRoZSBvdmVybGF5IHVzZXMgdGhpcyB2YWx1ZSwgd2hpbGUgdGhlIG1vZGFsIGl0c2VsZiB1c2VzIHRoaXMgdmFsdWUgcGx1cyBvbmUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLXppbmRleDogMTAwNSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgbW9kYWwgb3ZlcmxheXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRyZXZlYWwtb3ZlcmxheS1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC40NSkgIWRlZmF1bHQ7XG5cblxuLy8gUGxhY2Vob2xkZXIgc2VsZWN0b3IgZm9yIG1lZGl1bS1hbmQtdXAgbW9kYWxzXG4vLyBQcmV2ZW50cyBkdXBsaWNhdGUgQ1NTIHdoZW4gZGVmaW5pbmcgbXVsdGlwbGUgUmV2ZWFsIHNpemVzXG4vLyBUaGlzIHNob3VsZCBiZSBpbiB0aGUgc2FtZSBicmVha3BvaW50IHRoZW4gYEBtaXhpbiByZXZlYWwtbW9kYWwtd2lkdGhgXG5AaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAlcmV2ZWFsLWNlbnRlcmVkIHtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICB9XG59XG5cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIG1vZGFsIG92ZXJsYXkuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRyZXZlYWwtb3ZlcmxheS1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIG92ZXJsYXkuXG5AbWl4aW4gcmV2ZWFsLW92ZXJsYXkoJGJhY2tncm91bmQ6ICRyZXZlYWwtb3ZlcmxheS1iYWNrZ3JvdW5kKSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAkcmV2ZWFsLXppbmRleDtcblxuICBkaXNwbGF5OiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLy8vIEFkZHMgYmFzZSBzdHlsZXMgZm9yIGEgbW9kYWwuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLWJhc2Uge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHotaW5kZXg6ICRyZXZlYWwtemluZGV4ICsgMTtcbiAgLy8gV29ya2Fyb3VuZCBhbmRyb2lkIGJyb3dzZXIgei1pbmRleCBidWdcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBhZGRpbmc6ICRyZXZlYWwtcGFkZGluZztcblxuICBib3JkZXI6ICRyZXZlYWwtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkcmV2ZWFsLXJhZGl1cztcbiAgYmFja2dyb3VuZC1jb2xvcjogJHJldmVhbC1iYWNrZ3JvdW5kO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgbWluLWhlaWdodDogMDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSByb3dzIGRvbid0IGhhdmUgYSBtaW4td2lkdGggb24gdGhlbVxuICAuY29sdW1uIHtcbiAgICBtaW4td2lkdGg6IDA7XG4gIH1cblxuICAvLyBTdHJpcCBtYXJnaW5zIGZyb20gdGhlIGxhc3QgaXRlbSBpbiB0aGUgbW9kYWxcbiAgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4vLy8gQWRqdXN0cyB0aGUgd2lkdGggb2YgYSBtb2RhbC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIC0gV2lkdGggb2YgdGhlIG1vZGFsLiBHZW5lcmFsbHkgYSBwZXJjZW50YWdlLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWF4LXdpZHRoIFskcmV2ZWFsLW1heC13aWR0aF0gLSBNYXhpbXVtIHdpZHRoIG9mIHRoZSBtb2RhbC5cbkBtaXhpbiByZXZlYWwtbW9kYWwtd2lkdGgoXG4gICR3aWR0aDogJHJldmVhbC13aWR0aCxcbiAgJG1heC13aWR0aDogJHJldmVhbC1tYXgtd2lkdGhcbikge1xuICAvLyBFeHRlbmRzIG11c3QgYmUgbWFkZSBvdXRzaWRlIG9mIGJyZWFrcG9pbnRzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbmV3ZXIgU2FzcyB2ZXJzaW9ucyAobGlic2FzcyB2My41KVxuICBAZXh0ZW5kICVyZXZlYWwtY2VudGVyZWQ7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBmdWxsLXNjcmVlbiBtb2RhbCwgd2hpY2ggc3RyZXRjaGVzIHRoZSBmdWxsIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbkBtaXhpbiByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbiB7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcblxuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiBub25lO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcmV2ZWFsIHtcblxuICAvLy8gRGlzYWJsZXMgdGhlIHNjcm9sbCB3aGVuIFJldmVhbCBpcyBzaG93biB0byBwcmV2ZW50IHRoZSBiYWNrZ3JvdW5kIGZyb20gc2hpZnRpbmdcbiAgaHRtbC5pcy1yZXZlYWwtb3BlbiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcblxuICAgICYuemYtaGFzLXNjcm9sbCB7XG4gICAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgfVxuXG4gICAgYm9keSB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gIC8vIE92ZXJsYXlcbiAgLnJldmVhbC1vdmVybGF5IHtcbiAgICBAaW5jbHVkZSByZXZlYWwtb3ZlcmxheTtcbiAgfVxuXG4gIC8vIE1vZGFsIGNvbnRhaW5lclxuICAucmV2ZWFsIHtcbiAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtYmFzZTtcbiAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoJHJldmVhbC13aWR0aCk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogMTAwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAvLyBSZW1vdmUgcGFkZGluZ1xuICAgICYuY29sbGFwc2Uge1xuICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAvLyBTaXppbmcgY2xhc3Nlc1xuICAgICYudGlueSAgeyBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoMzAlKTsgfVxuICAgICYuc21hbGwgeyBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoNTAlKTsgfVxuICAgICYubGFyZ2UgeyBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoOTAlKTsgfVxuXG4gICAgLy8gRnVsbC1zY3JlZW4gbW9kZVxuICAgICYuZnVsbCB7XG4gICAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtemVyby1icmVha3BvaW50IG9ubHkpIHtcbiAgICAgIEBpbmNsdWRlIHJldmVhbC1tb2RhbC1mdWxsc2NyZWVuO1xuICAgIH1cblxuICAgICYud2l0aG91dC1vdmVybGF5IHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQG1peGluIGZvdW5kYXRpb24tc3RpY2t5IHtcbiAgLnN0aWNreS1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5zdGlja3kge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICAuc3RpY2t5LmlzLXN0dWNrIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogNTtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgICYuaXMtYXQtdG9wIHtcbiAgICAgIHRvcDogMDtcbiAgICB9XG5cbiAgICAmLmlzLWF0LWJvdHRvbSB7XG4gICAgICBib3R0b206IDA7XG4gICAgfVxuICB9XG5cbiAgLnN0aWNreS5pcy1hbmNob3JlZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG5cbiAgICAmLmlzLWF0LWJvdHRvbSB7XG4gICAgICBib3R0b206IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGl0bGUtYmFyXG4vLy8vXG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItYmFja2dyb3VuZDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGl0bGViYXItcGFkZGluZzogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgV2VpZ2h0XG4kdGl0bGViYXItdGV4dC1mb250LXdlaWdodDogYm9sZCAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIG1lbnUgaWNvbnMgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItaWNvbi1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgbWVudSBpY29ucyBpbnNpZGUgYSB0aXRsZSBiYXIgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1pY29uLWNvbG9yLWhvdmVyOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gdGhlIG1lbnUgaWNvbiBhbmQgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGl0bGViYXItaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi10aXRsZS1iYXIge1xuICAudGl0bGUtYmFyIHtcbiAgICBwYWRkaW5nOiAkdGl0bGViYXItcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiAkdGl0bGViYXItYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHRpdGxlYmFyLWNvbG9yO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgLm1lbnUtaWNvbiB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkdGl0bGViYXItaWNvbi1zcGFjaW5nO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICR0aXRsZWJhci1pY29uLXNwYWNpbmc7XG4gICAgfVxuICB9XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgLnRpdGxlLWJhci1sZWZ0LFxuICAgIC50aXRsZS1iYXItcmlnaHQge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICB9XG5cbiAgICAudGl0bGUtYmFyLXJpZ2h0IHtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLnRpdGxlLWJhci1sZWZ0IHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIC50aXRsZS1iYXItcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLnRpdGxlLWJhci10aXRsZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgZm9udC13ZWlnaHQ6ICR0aXRsZWJhci10ZXh0LWZvbnQtd2VpZ2h0O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdG9wLWJhclxuLy8vL1xuXG4vLy8gUGFkZGluZyBmb3IgdGhlIHRvcCBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9wYmFyLXBhZGRpbmc6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSB0b3AgYmFyLiBUaGlzIGNvbG9yIGFsc28gY2FzY2FkZXMgdG8gbWVudXMgd2l0aGluIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdG9wYmFyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBzdWJtZW51cyB3aXRoaW4gdGhlIHRvcCBiYXIuIFVzZWZ1bGwgaWYgJHRvcGJhci1iYWNrZ3JvdW5kIGlzIHRyYW5zcGFyZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZDogJHRvcGJhci1iYWNrZ3JvdW5kICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBmb3IgdGhlIHRvcCBiYXIgdGl0bGUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9wYmFyLXRpdGxlLXNwYWNpbmc6IDAuNXJlbSAxcmVtIDAuNXJlbSAwICFkZWZhdWx0O1xuXG4vLy8gTWF4aW11bSB3aWR0aCBvZiBgPGlucHV0PmAgZWxlbWVudHMgaW5zaWRlIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci1pbnB1dC13aWR0aDogMjAwcHggIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGF0IHdoaWNoIHRvcCBiYXIgc3dpdGNoZXMgZnJvbSBtb2JpbGUgdG8gZGVza3RvcCB2aWV3LlxuLy8vIEB0eXBlIEJyZWFrcG9pbnRcbiR0b3BiYXItdW5zdGFjay1icmVha3BvaW50OiBtZWRpdW0gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSB0b3AgYmFyIGNvbnRhaW5lci5cbkBtaXhpbiB0b3AtYmFyLWNvbnRhaW5lciB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9XG5cbiAgcGFkZGluZzogJHRvcGJhci1wYWRkaW5nO1xuXG4gICYsXG4gIHVsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9wYmFyLWJhY2tncm91bmQ7XG4gIH1cblxuICAvLyBDaGVjayBpZiAkdG9wYmFyLWJhY2tncm91bmQgaXMgZGlmZmVybnQgZnJvbSAkdG9wYmFyLWJhY2tncm91bmQtc3VibWVudVxuICBAaWYgKCR0b3BiYXItYmFja2dyb3VuZCAhPSAkdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZCkge1xuICAgIHVsIHVsIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RyYWluIHdpZHRoIG9mIGlucHV0cyBieSBkZWZhdWx0IHRvIG1ha2UgdGhlbSBlYXNpZXIgdG8gYXJyYW5nZVxuICBpbnB1dCB7XG4gICAgbWF4LXdpZHRoOiAkdG9wYmFyLWlucHV0LXdpZHRoO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xuICB9XG5cbiAgLy8gVGhlIGFib3ZlIHN0eWxlcyBzaG91bGRuJ3QgYXBwbHkgdG8gaW5wdXQgZ3JvdXAgZmllbGRzXG4gIC5pbnB1dC1ncm91cC1maWVsZCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gIH1cblxuICBpbnB1dC5idXR0b24geyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxuXG4vLy8gTWFrZXMgc2VjdGlvbnMgb2YgYSB0b3AgYmFyIHN0YWNrIG9uIHRvcCBvZiBlYWNoIG90aGVyLlxuQG1peGluIHRvcC1iYXItc3RhY2tlZCB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC8vIFN1Yi1zZWN0aW9uc1xuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxleDogMCAwIDEwMCU7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBTdWItc2VjdGlvbnNcbiAgICAudG9wLWJhci1sZWZ0LFxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gVW5kb2VzIHRoZSBDU1MgYXBwbGllZCBieSB0aGUgYHRvcC1iYXItc3RhY2tlZCgpYCBtaXhpbi5cbkBtaXhpbiB0b3AtYmFyLXVuc3RhY2sge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcblxuICAgIC50b3AtYmFyLWxlZnQge1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgfVxuXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxleDogMCAxIGF1dG87XG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRvcC1iYXIge1xuICAvLyBUb3AgYmFyIGNvbnRhaW5lclxuICAudG9wLWJhciB7XG4gICAgQGluY2x1ZGUgdG9wLWJhci1jb250YWluZXI7XG5cbiAgICAvLyBTdGFjayBvbiBzbWFsbCBzY3JlZW5zIGJ5IGRlZmF1bHRcbiAgICBAaW5jbHVkZSB0b3AtYmFyLXN0YWNrZWQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0b3BiYXItdW5zdGFjay1icmVha3BvaW50KSB7XG4gICAgICBAaW5jbHVkZSB0b3AtYmFyLXVuc3RhY2s7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgY2xhc3NlcyBmb3Igc3RhY2tpbmcgb24gZWFjaCBzY3JlZW4gc2l6ZSAoZGVmaW5lZCBpbiAkYnJlYWtwb2ludC1jbGFzc2VzKVxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgJi5zdGFja2VkLWZvci0jeyRzaXplfSB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBkb3duKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0b3AtYmFyLXN0YWNrZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU3ViLXNlY3Rpb25zXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIC50b3AtYmFyLXRpdGxlIHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgbWFyZ2luOiAkdG9wYmFyLXRpdGxlLXNwYWNpbmc7XG4gICAgfVxuXG4gICAgLnRvcC1iYXItbGVmdCxcbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC50b3AtYmFyLXRpdGxlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgcGFkZGluZzogJHRvcGJhci10aXRsZS1zcGFjaW5nO1xuXG4gICAgICAubWVudS1pY29uIHtcbiAgICAgICAgYm90dG9tOiAycHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRvcC1iYXItbGVmdCB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG5cbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZmxvYXRcbi8vLy9cblxuQG1peGluIGZvdW5kYXRpb24tZmxvYXQtY2xhc3NlcyB7XG4gIC5mbG9hdC1sZWZ0IHtcbiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmZsb2F0LXJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5mbG9hdC1jZW50ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gIC5jbGVhcmZpeCB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBGbGV4Ym94IFV0aWxpdGllc1xuLy8vL1xuLy9cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciB0aGUgY291bnQgb2Ygc291cmNlIG9yZGVyaW5nYFxuLy8vIEB0eXBlIE51bWJlclxuJGZsZXgtc291cmNlLW9yZGVyaW5nLWNvdW50OiA2ICFkZWZhdWx0O1xuXG4vLy8gUXVpY2tseSBkaXNhYmxlL2VuYWJsZSBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBWYW5pbGxhIEZsZXggSGVscGVycy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZmxleGJveC1yZXNwb25zaXZlLWJyZWFrcG9pbnRzOiB0cnVlICFkZWZhdWx0O1xuXG5AbWl4aW4gZmxleC1oZWxwZXJzIHtcbiAgLmZsZXgtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBmbGV4O1xuICB9XG5cbiAgLmZsZXgtY2hpbGQtYXV0byB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cblxuICAuZmxleC1jaGlsZC1ncm93IHtcbiAgICBmbGV4OiAxIDAgYXV0bztcbiAgfVxuXG4gIC5mbGV4LWNoaWxkLXNocmluayB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gIH1cblxuICBAZWFjaCAkZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtZGlyZWN0aW9uIHtcbiAgICAuZmxleC1kaXItI3skZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbigkcHJvcCk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkZmxleGJveC1yZXNwb25zaXZlLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jb250YWluZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jaGlsZC1hdXRvIHtcbiAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNoaWxkLWdyb3cge1xuICAgICAgICAgICAgZmxleDogMSAwIGF1dG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY2hpbGQtc2hyaW5rIHtcbiAgICAgICAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlYWNoICRkaXIsICRwcm9wIGluICQtemYtZmxleC1kaXJlY3Rpb24ge1xuICAgICAgICAgICAgLiN7JHNpemV9LWZsZXgtZGlyLSN7JGRpcn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbigkcHJvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZsZXgtY2xhc3NlcyB7XG4gIC8vIEhvcml6b250YWwgYWxpZ25tZW50IHVzaW5nIGp1c3RpZnktY29udGVudFxuICBAZWFjaCAkaGRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWp1c3RpZnkge1xuICAgIC5hbGlnbi0jeyRoZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR4OiAkaGRpcik7XG4gICAgfVxuICB9XG4gIFxuICAvLyBIb3Jpem9udGFsIGFsaWdubWVudCBTcGVjaWZpY2FsbHkgZm9yIFZlcnRpY2FsIE1lbnVcbiAgQGVhY2ggJGhkaXIsICRwcm9wIGluIG1hcC1yZW1vdmUoJC16Zi1mbGV4LWp1c3RpZnksICdqdXN0aWZ5JywgJ3NwYWNlZCcpIHtcbiAgICAuYWxpZ24tI3skaGRpcn0ge1xuICAgICAgJi52ZXJ0aWNhbCB7XG4gICAgICAgICYubWVudSA+IGxpID4gYSB7XG4gICAgICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbigkeDogJGhkaXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVmVydGljYWwgYWxpZ25tZW50IHVzaW5nIGFsaWduLWl0ZW1zIGFuZCBhbGlnbi1zZWxmXG4gIEBlYWNoICR2ZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtYWxpZ24ge1xuICAgIC5hbGlnbi0jeyR2ZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR5OiAkdmRpcik7XG4gICAgfVxuXG4gICAgLmFsaWduLXNlbGYtI3skdmRpcn0ge1xuICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbi1zZWxmKCR5OiAkdmRpcik7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2VudHJhbCBhbGlnbm1lbnQgb2YgY29udGVudFxuICAuYWxpZ24tY2VudGVyLW1pZGRsZSB7XG4gICAgQGluY2x1ZGUgZmxleC1hbGlnbigkeDogY2VudGVyLCAkeTogbWlkZGxlKTtcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAvLyBTb3VyY2Ugb3JkZXJpbmdcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZmxleC1zb3VyY2Utb3JkZXJpbmctY291bnQge1xuICAgICAgLiN7JC16Zi1zaXplfS1vcmRlci0jeyRpfSB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtb3JkZXIoJGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFZhbmlsbGEgRmxleGJveCBIZWxwZXJzXG4gIEBpbmNsdWRlIGZsZXgtaGVscGVycztcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vIEhpZGUgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBvbmx5IGRpc3BsYXlpbmcgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gc2hvdy1mb3IoJHNpemUpIHtcbiAgJHNpemU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XG4gIC8vIE1heCB2YWx1ZSBpcyAwLjJweCB1bmRlciB0aGUgbmV4dCBicmVha3BvaW50ICgwLjAyIC8gMTYgPSAwLjAwMTI1KS5cbiAgLy8gVXNlIGEgcHJlY2lzaW9uIHVuZGVyIDFweCB0byBzdXBwb3J0IGJyb3dzZXIgem9vbSwgYnV0IG5vdCB0byBsb3cgdG8gYXZvaWQgcm91bmRpbmcuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMTMxM1xuICAkc2l6ZTogLXpmLWJwLXRvLWVtKCRzaXplKSAtIC4wMDEyNTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplIGRvd24pIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIEhpZGUgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBvbmx5IGRpc3BsYXlpbmcgaXQgd2l0aGluIGEgY2VydGFpbiBicmVha3BvaW50LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gc2hvdy1mb3Itb25seSgkc2l6ZSkge1xuICAkbG93ZXItYm91bmQtc2l6ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICRzaXplKTtcbiAgJHVwcGVyLWJvdW5kLXNpemU6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRzaXplKTtcblxuICAvLyBtb3JlIG9mdGVuIHRoYW4gbm90IHRoaXMgd2lsbCBiZSBjb3JyZWN0LCBqdXN0IG9uZSB0aW1lIHJvdW5kIHRoZSBsb29wIGl0IHdvbid0IHNvIHNldCBpbiBzY29wZSBoZXJlXG4gICRsb3dlci1ib3VuZDogLXpmLWJwLXRvLWVtKCRsb3dlci1ib3VuZC1zaXplKSAtIC4wMDEyNTtcbiAgLy8gdGVzdCBhY3R1YWwgbG93ZXItYm91bmQtc2l6ZSwgaWYgMCBzZXQgaXQgdG8gMGVtXG4gIEBpZiBzdHJpcC11bml0KCRsb3dlci1ib3VuZC1zaXplKSA9PSAwIHtcbiAgICAkbG93ZXItYm91bmQ6IC16Zi1icC10by1lbSgkbG93ZXItYm91bmQtc2l6ZSk7XG4gIH1cblxuICBAaWYgJHVwcGVyLWJvdW5kLXNpemUgPT0gbnVsbCB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxvd2VyLWJvdW5kKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkdXBwZXItYm91bmQ6IC16Zi1icC10by1lbSgkdXBwZXItYm91bmQtc2l6ZSk7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbG93ZXItYm91bmQpLCBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR1cHBlci1ib3VuZCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vLyBTaG93IGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgYW5kIGhpZGUgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gaGlkZS1mb3IoJHNpemUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gU2hvdyBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIGFuZCBoaWRlIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIGhpZGUtZm9yLW9ubHkoJHNpemUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBvbmx5KSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXZpc2liaWxpdHktY2xhc3NlcyB7XG4gIC8vIEJhc2ljIGhpZGluZyBjbGFzc2VzXG4gIC5oaWRlIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaW52aXNpYmxlIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAvLyBSZXNwb25zaXZlIHZpc2liaWxpdHkgY2xhc3Nlc1xuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgLmhpZGUtZm9yLSN7JHNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgaGlkZS1mb3IoJHNpemUpO1xuICAgICAgfVxuXG4gICAgICAuc2hvdy1mb3ItI3skc2l6ZX0ge1xuICAgICAgICBAaW5jbHVkZSBzaG93LWZvcigkc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmhpZGUtZm9yLSN7JHNpemV9LW9ubHkge1xuICAgICAgQGluY2x1ZGUgaGlkZS1mb3Itb25seSgkc2l6ZSk7XG4gICAgfVxuXG4gICAgLnNob3ctZm9yLSN7JHNpemV9LW9ubHkge1xuICAgICAgQGluY2x1ZGUgc2hvdy1mb3Itb25seSgkc2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2NyZWVuIHJlYWRlciB2aXNpYmlsaXR5IGNsYXNzZXNcbiAgLy8gTmVlZCBhIFwiaGlkZS1mb3Itc3JcIiBjbGFzcz8gQWRkIGFyaWEtaGlkZGVuPSd0cnVlJyB0byB0aGUgZWxlbWVudFxuICAuc2hvdy1mb3Itc3IsXG4gIC5zaG93LW9uLWZvY3VzIHtcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcbiAgfVxuXG4gIC8vIE9ubHkgZGlzcGxheSB0aGUgZWxlbWVudCB3aGVuIGl0J3MgZm9jdXNlZFxuICAuc2hvdy1vbi1mb2N1cyB7XG4gICAgJjphY3RpdmUsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZS1vZmY7XG4gICAgfVxuICB9XG5cbiAgLy8gTGFuZHNjYXBlIGFuZCBwb3J0cmFpdCB2aXNpYmlsaXR5XG4gIC5zaG93LWZvci1sYW5kc2NhcGUsXG4gIC5oaWRlLWZvci1wb3J0cmFpdCB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFuZHNjYXBlKSB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocG9ydHJhaXQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAuaGlkZS1mb3ItbGFuZHNjYXBlLFxuICAuc2hvdy1mb3ItcG9ydHJhaXQge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFuZHNjYXBlKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwb3J0cmFpdCkge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGVcbi8vLy9cblxuLy8gUmVsYXRpb25hbCBNaXhpbnNcbkBpbXBvcnQgJ3JlbGF0aW9uJztcblxuLy8gQm94IE1peGluXG5AaW1wb3J0ICdib3gnO1xuXG4vLyBSb3RhdGUgTWl4aW5cbkBpbXBvcnQgJ3JvdGF0ZSc7XG5cbi8vIFRleHQgdXRpbGl0aWVzXG5AaW1wb3J0ICd0ZXh0LXV0aWxpdGllcyc7XG5cbi8vIFRleHQgdHJhbnNmb3JtYXRpb24gY2xhc3Nlc1xuQGltcG9ydCAndGV4dC10cmFuc2Zvcm1hdGlvbic7XG5cbi8vIFRleHQgRGVjb3JhdGlvbiBjbGFzc2VzXG5AaW1wb3J0ICd0ZXh0LWRlY29yYXRpb24nO1xuXG4vLyBGb250IFN0eWxpbmdcbkBpbXBvcnQgJ2ZvbnQtc3R5bGluZyc7XG5cbi8vIExpc3QgU3R5bGUgdHlwZVxuQGltcG9ydCAnbGlzdC1zdHlsZS10eXBlJztcblxuLy8gUm91bmRlZCBVdGlsaXR5XG5AaW1wb3J0ICdyb3VuZGVkJztcblxuLy8gQm9yZGVyZWQgVXRpbGl0eVxuQGltcG9ydCAnYm9yZGVyZWQnO1xuXG4vLyBTaGFkb3cgVXRpbGl0eVxuQGltcG9ydCAnc2hhZG93JztcblxuLy8gQXJyb3cgVXRpbGl0eVxuQGltcG9ydCAnYXJyb3cnO1xuXG4vLyBTZXBhcmF0b3IgVXRpbGl0eVxuQGltcG9ydCAnc2VwYXJhdG9yJztcblxuLy8gT3ZlcmZsb3cgaGVscGVyIGNsYXNzZXNcbkBpbXBvcnQgJ292ZXJmbG93JztcblxuLy8gRGlzcGxheSBjbGFzc2VzXG5AaW1wb3J0ICdkaXNwbGF5JztcblxuLy8gUG9zaXRpb24gSGVscGVyc1xuQGltcG9ydCAncG9zaXRpb24nO1xuXG4vLyBCb3JkZXIgYm94XG5AaW1wb3J0ICdib3JkZXItYm94JztcblxuLy8gQm9yZGVyIG5vbmUgVXRpbHR5XG5AaW1wb3J0ICdib3JkZXItbm9uZSc7XG5cbi8vIFNpemluZyBVdGlsaXRpZXNcbkBpbXBvcnQgJ3NpemluZyc7XG5cbi8vIFNwYWNpbmcgVXRpbGl0aWVzXG5AaW1wb3J0ICdzcGFjaW5nJztcblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWNsYXNzZXMge1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LXV0aWxpdGllcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1mb250LXN0eWxpbmc7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWxpc3Qtc3R5bGUtdHlwZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtcm91bmRlZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyZWQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXNoYWRvdztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtYXJyb3c7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXNlcGFyYXRvcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtb3ZlcmZsb3c7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWRpc3BsYXk7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXBvc2l0aW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXItYm94O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXItbm9uZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtc2l6aW5nO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1zcGFjaW5nO1xufVxuIiwiLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gZnJvbSB0aGUgZmlyc3QgdG8gYCRudW1gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gRmlyc3QgYG5gIG51bWJlcnMgb2YgdG90YWwgY2hpbGRyZW4gXG5AbWl4aW4gZmlyc3QoJG51bSkge1xuICBAaWYgJG51bSA9PSAxIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJjpudGgtY2hpbGQoLW4gKyAjeyRudW19KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFNlbGVjdCB0aGUgZmlyc3QgZXhhY3QgY2hpbGRcbkBtaXhpbiBmaXJzdC1jaGlsZCB7XG4gICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gZnJvbSB0aGUgbGFzdCB0byBgJG51bWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBMYXN0IGBuYCBudW1iZXJzIG9mIHRvdGFsIGNoaWxkcmVuIFxuQG1peGluIGxhc3QoJG51bSkge1xuICAmOm50aC1sYXN0LWNoaWxkKC1uICsgI3skbnVtfSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgdGhlIGxhc3QgZXhhY3QgY2hpbGRcbkBtaXhpbiBsYXN0LWNoaWxkIHtcbiAgJjpsYXN0LW9mLXR5cGUge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgY2hpbGRyZW4gZXZlcnkgYCRudW1gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gRXZlcnkgYG5gIG51bWJlciBvZiBhbGwgY2hpbGRyZW5cbkBtaXhpbiBldmVyeSgkbnVtKSB7XG4gICY6bnRoLWNoaWxkKCN7JG51bX1uKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBvbmx5IHRoZSBmaXJzdCBhbmQgbGFzdCBjaGlsZC5cbkBtaXhpbiBmaXJzdC1sYXN0IHtcbiAgJjpmaXJzdC1jaGlsZCxcbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBhZnRlciB0aGUgZmlyc3QgdG8gYCRudW1gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gQWZ0ZXIgRmlyc3QgYG5gIG51bWJlcnMgb2YgdG90YWwgY2hpbGRyZW4gXG5AbWl4aW4gYWZ0ZXItZmlyc3QoJG51bSkge1xuICAmOm50aC1jaGlsZChuICsgI3skbnVtICsgMX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBiZWZvcmUgYCRudW1gIGZyb20gdGhlIGxhc3QuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBGcm9tIExhc3QgYG5gIG51bWJlcnMgb2YgdG90YWwgY2hpbGRyZW4gXG5AbWl4aW4gZnJvbS1sYXN0KCRudW0pIHtcbiAgJjpudGgtbGFzdC1jaGlsZCgjeyRudW19KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCB0aGUgYCRudW1gIGNoaWxkIGZyb20gdGhlIGZpcnN0IGFuZCB0aGUgYCRudW1gIGNoaWxkIGZyb20gdGhlIGxhc3QuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBgbmAgbnVtYmVyIGNhbGxlZCBmcm9tIGZpcnN0IGFuZCBsYXN0IFxuQG1peGluIGZyb20tZmlyc3QtbGFzdCgkbnVtKSB7XG4gICY6bnRoLWNoaWxkKCN7JG51bX0pLFxuICAmOm50aC1sYXN0LWNoaWxkKCN7JG51bX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBidXQgYCRudW1gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gYG5gIG51bWJlciB0aGF0IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIGFsbCBvdGhlciBjaGlsZHJlbiBcbkBtaXhpbiBhbGwtYnV0KCRudW0pIHtcbiAgJjpub3QoOm50aC1jaGlsZCgjeyRudW19KSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGJldHdlZW4gdGhlIGAkbnVtYCBmaXJzdCBhbmQgdGhlIGAkbnVtYCBsYXN0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gYG5gIG51bWJlciBleGNsdWRlZCBmcm9tIGZpcnN0IGFuZCBsYXN0IGZyb20gYWxsIG90aGVyIGNoaWxkcmVuXG5AbWl4aW4gYWxsLWJ1dC1maXJzdC1sYXN0KCRudW0pIHtcbiAgJjpudGgtY2hpbGQobiArICN7JG51bX0pOm50aC1sYXN0LWNoaWxkKG4gKyAjeyRudW19KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFdpbGwgb25seSBzZWxlY3QgdGhlIGNoaWxkIGlmIGl0J3MgdW5pcXVlLiBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlcmUgYXJlIGF0IGxlYXN0IDIgY2hpbGRyZW4sIHRoZSBzdHlsZSB3aWxsIG5vdCBiZSBhcHBsaWVkLlxuQG1peGluIHVuaXF1ZSB7XG4gICY6b25seS1jaGlsZCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFdpbGwgb25seSBzZWxlY3QgY2hpbGRyZW4gaWYgdGhleSBhcmUgbm90IHVuaXF1ZS4gVGhhdCBtZWFucyB0aGF0IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIGNoaWxkcmVuLCB0aGUgc3R5bGUgd2lsbCBiZSBhcHBsaWVkLlxuQG1peGluIG5vdC11bmlxdWUoKSB7XG4gICY6bm90KDpvbmx5LWNoaWxkKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZpcnN0W10gRmlyc3QgYG50aGAgbnVtYmVyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsYXN0W10gTGFzdCBgbnRoYCBudW1iZXJcbkBtaXhpbiBiZXR3ZWVuKCRmaXJzdCwgJGxhc3QpIHtcbiAgJjpudGgtY2hpbGQobiArICN7JGZpcnN0fSk6bnRoLWNoaWxkKC1uICsgI3skbGFzdH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBldmVuIGNoaWxkcmVuLlxuQG1peGluIGV2ZW4ge1xuICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgZXZlbiBjaGlsZHJlbiBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlyc3RbXSBGaXJzdCBgbnRoYCBudW1iZXJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxhc3RbXSBMYXN0IGBudGhgIG51bWJlclxuQG1peGluIGV2ZW4tYmV0d2VlbigkZmlyc3QsICRsYXN0KSB7XG4gICY6bnRoLWNoaWxkKGV2ZW4pOm50aC1jaGlsZChuICsgI3skZmlyc3R9KTpudGgtY2hpbGQoLW4gKyAjeyRsYXN0fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIG9kZCBjaGlsZHJlbi5cbkBtaXhpbiBvZGQge1xuICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBvZGQgY2hpbGRyZW4gYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZpcnN0W10gRmlyc3QgYG50aGAgbnVtYmVyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsYXN0W10gTGFzdCBgbnRoYCBudW1iZXJcbkBtaXhpbiBvZGQtYmV0d2VlbigkZmlyc3QsICRsYXN0KSB7XG4gICY6bnRoLWNoaWxkKG9kZCk6bnRoLWNoaWxkKG4gKyAjeyRmaXJzdH0pOm50aC1jaGlsZCgtbiArICN7JGxhc3R9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgYCRudW1gIGNoaWxkcmVuIGJldHdlZW4gYCRmaXJzdGAgYW5kIGAkbGFzdGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBFdmVyeSBgbmAgbnVtYmVyIGJldHdlZW4gYCRmaXJzdGAgYW5kIGAkbGFzdGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaXJzdFtdIEZpcnN0IGBuYCBudW1iZXJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxhc3RbXSBMYXN0IGBuYCBudW1iZXJcbkBtaXhpbiBudW1iZXItYmV0d2VlbigkbnVtLCAkZmlyc3QsICRsYXN0KSB7XG4gICY6bnRoLWNoaWxkKCN7JG51bX1uKTpudGgtY2hpbGQobiArICN7JGZpcnN0fSk6bnRoLWNoaWxkKC1uICsgI3skbGFzdH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1ib3hcbi8vLy9cblxuLy8vIEJveCBNaXhpbjogRWFzaWx5IGNyZWF0ZSBhIHNxdWFyZSwgcmVjdGFuZ2xlIG9yIGEgY2lyY2xlXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aFtdIFdpZHRoIG9mIHRoZSBib3hcbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodFskd2lkdGhdIEhlaWdodCBvZiB0aGUgYm94LCBkZWZhdWx0cyB0byBgJHdpZHRoYCB0byBlYXNpbHkgbWFrZSBhIHNxdWFyZVxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGNpcmNsZVtmYWxzZV0gTWFrZXMgdGhlIGJveCBhIGNpcmNsZSwgYnkgZGVmYXVsdCBgZmFsc2VgLlxuQG1peGluIGJveChcbiAgJHdpZHRoLCBcbiAgJGhlaWdodDogJHdpZHRoLCBcbiAgJGNpcmNsZTogZmFsc2Vcbikge1xuICB3aWR0aDogJHdpZHRoO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIEBpZiAkY2lyY2xlIHtcbiAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1yb3RhdGVcbi8vLy9cblxuLy8vIFJvdGF0ZSBNaXhpbjogUm90YXRlIGFuIGVsZW1lbnQgdG8gYSBjZXJ0YWluIGRlZ1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGVnW10gRGVncmVlIG9mIHJvdGF0aW9uXG5AbWl4aW4gcm90YXRlKCRkZWcpIHtcblx0dHJhbnNmb3JtOnJvdGF0ZSgkZGVnICsgZGVnKTtcbn1cblxuLy8vIFJvdGF0ZVggTWl4aW46IFJvdGF0ZSBhbiBlbGVtZW50IHRvIGEgY2VydGFpbiBkZWcgb24gWC1BeGlzXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZWdbXSBEZWdyZWUgb2Ygcm90YXRpb25cbkBtaXhpbiByb3RhdGVYKCRkZWcpIHtcblx0dHJhbnNmb3JtOnJvdGF0ZVgoJGRlZyArIGRlZyk7XG59XG5cbi8vLyBSb3RhdGVZIE1peGluOiBSb3RhdGUgYW4gZWxlbWVudCB0byBhIGNlcnRhaW4gZGVnIG9uIFktQXhpc1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGVnW10gRGVncmVlIG9mIHJvdGF0aW9uXG5AbWl4aW4gcm90YXRlWSgkZGVnKSB7XG5cdHRyYW5zZm9ybTpyb3RhdGVZKCRkZWcgKyBkZWcpO1xufVxuXG4vLy8gUm90YXRlWiBNaXhpbjogUm90YXRlIGFuIGVsZW1lbnQgdG8gYSBjZXJ0YWluIGRlZyBvbiBaLUF4aXNcbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlZ1tdIERlZ3JlZSBvZiByb3RhdGlvblxuQG1peGluIHJvdGF0ZVooJGRlZykge1xuXHR0cmFuc2Zvcm06cm90YXRlWigkZGVnICsgZGVnKTtcbn0iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXRleHQtdXRpbGl0aWVzXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciB0ZXh0IHV0aWxpdGllc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtdXRpbGl0aWVzLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgVmFsdWUgZm9yIGB0ZXh0LW92ZXJmbG93YCB2YXJpYWJsZVxuLy8vIEB0eXBlIFN0cmluZ1xuJHByb3RvdHlwZS10ZXh0LW92ZXJmbG93OiBlbGxpcHNpcyAhZGVmYXVsdDtcblxuLy8vIEltYWdlIFJlcGxhY2VtZW50IHV0aWxpdHkuIGB0ZXh0LWhpZGVgXG5AbWl4aW4gdGV4dC1oaWRlIHtcbiAgZm9udDogMC8wIGEgIWltcG9ydGFudDtcbiAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogMCAhaW1wb3J0YW50O1xufVxuXG4vLy8gVHJ1bmNhdGluZyB0aGUgdGV4dCwgZWxpcHNpcyBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3ZlcmZsb3cgWyRwcm90b3R5cGUtdGV4dC1vdmVyZmxvd10gVGV4dCBUcnVuY2F0ZVxuQG1peGluIHRleHQtdHJ1bmNhdGUoXG4gICRvdmVyZmxvdzogJHByb3RvdHlwZS10ZXh0LW92ZXJmbG93XG4pIHtcbiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgdGV4dC1vdmVyZmxvdzogJG92ZXJmbG93OyBcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xufVxuXG4vLy8gTm8gd3JhcHBpbmcgb2YgdGhlIHRleHQuIGB0ZXh0LW5vd3JhcGBcbkBtaXhpbiB0ZXh0LW5vd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbn1cblxuLy8vIFdyYXBwaW5nIG9mIHRoZSB0ZXh0LiBgdGV4dC13cmFwYFxuQG1peGluIHRleHQtd3JhcCB7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZCAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC11dGlsaXRpZXMge1xuICAudGV4dC1oaWRlIHtcbiAgICBAaW5jbHVkZSB0ZXh0LWhpZGU7XG4gIH1cblxuICAudGV4dC10cnVuY2F0ZSB7XG4gICAgQGluY2x1ZGUgdGV4dC10cnVuY2F0ZTtcbiAgfVxuXG4gIC50ZXh0LW5vd3JhcCB7XG4gICAgQGluY2x1ZGUgdGV4dC1ub3dyYXA7XG4gIH1cblxuICAudGV4dC13cmFwIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXdyYXA7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtdXRpbGl0aWVzLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC1oaWRlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtaGlkZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC10cnVuY2F0ZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LXRydW5jYXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LW5vd3JhcCB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LW5vd3JhcDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC13cmFwIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtd3JhcDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvblxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgdGV4dCB0cmFuc2Zvcm1hdGlvbiBjbGFzc2VzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS10cmFuc2Zvcm1hdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGB0ZXh0LXRyYW5zZm9ybWF0aW9uYCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb246IChcbiAgbG93ZXJjYXNlLFxuICB1cHBlcmNhc2UsXG4gIGNhcGl0YWxpemVcbikgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IFRyYW5zZm9ybWF0aW9uLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb25gXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0cmFuc2Zvcm1hdGlvbiBbXSBUZXh0IFRyYW5zZm9ybWF0aW9uXG5AbWl4aW4gdGV4dC10cmFuc2Zvcm0oJHRyYW5zZm9ybWF0aW9uKSB7XG4gIHRleHQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtYXRpb24gIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb24ge1xuICBAZWFjaCAkdHJhbnNmb3JtYXRpb24gaW4gJHByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uIHtcbiAgICAudGV4dC0jeyR0cmFuc2Zvcm1hdGlvbn0ge1xuICAgICAgQGluY2x1ZGUgdGV4dC10cmFuc2Zvcm0oJHRyYW5zZm9ybWF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtdHJhbnNmb3JtYXRpb24tYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICBcdEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAZWFjaCAkdHJhbnNmb3JtYXRpb24gaW4gJHByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LXRleHQtI3skdHJhbnNmb3JtYXRpb259IHtcbiAgXHRcdFx0ICAgICAgQGluY2x1ZGUgdGV4dC10cmFuc2Zvcm0oJHRyYW5zZm9ybWF0aW9uKTtcbiAgXHRcdFx0ICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciB0ZXh0IGRlY29yYXRpb24gY2xhc3Nlc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtZGVjb3JhdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGB0ZXh0LWRlY29yYXRpb25gIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uOiAoXG4gIG92ZXJsaW5lLFxuICB1bmRlcmxpbmUsXG4gIGxpbmUtdGhyb3VnaCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IERlY29yYXRpb24sIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uYFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGVjb3JhdGlvbiBbXSBUZXh0IERlY29yYXRpb25cbkBtaXhpbiB0ZXh0LWRlY29yYXRpb24oJGRlY29yYXRpb24pIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiAkZGVjb3JhdGlvbiAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uIHtcbiAgQGVhY2ggJGRlY29yYXRpb24gaW4gJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb24ge1xuICAgIC50ZXh0LSN7JGRlY29yYXRpb259IHtcbiAgICAgIEBpbmNsdWRlIHRleHQtZGVjb3JhdGlvbigkZGVjb3JhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWRlY29yYXRpb24tYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAZWFjaCAkZGVjb3JhdGlvbiBpbiAkcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbiB7XG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIC4jeyRzaXplfS10ZXh0LSN7JGRlY29yYXRpb259IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC1kZWNvcmF0aW9uKCRkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtZm9udC1zdHlsaW5nXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBmb250IHN0eWxpbmcgdHlwZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWZvbnQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTGV0dGVyIHNwYWNpbmcgZm9yIGAuZm9udC13aWRlYFxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS13aWRlLWxldHRlci1zcGFjaW5nOiByZW0tY2FsYyg0KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgd2VpZ2h0IGZvciBgLmZvbnQtbm9ybWFsYCwgZGVmYXVsdGVkIHRvIGBnbG9iYWwtd2VpZ2h0LW5vcm1hbGBcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtZm9udC1ub3JtYWw6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgd2VpZ2h0IGZvciBgLmZvbnQtYm9sZGAsIGRlZmF1bHRlZCB0byBgZ2xvYmFsLXdlaWdodC1ib2xkYFxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1mb250LWJvbGQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdpZGUgbGV0dGVyIHNwYWNpbmchXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZXR0ZXItc3BhY2luZyBbJHByb3RvdHlwZS13aWRlLWxldHRlci1zcGFjaW5nXSBXaWRlIGxldHRlciBzcGFjaW5nIGZvciB0aGUgZm9udFxuQG1peGluIGZvbnQtd2lkZShcbiAgJGxldHRlci1zcGFjaW5nOiAkcHJvdG90eXBlLXdpZGUtbGV0dGVyLXNwYWNpbmdcbikge1xuICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nO1xufVxuXG4vLy8gRm9udCBXZWlnaHQgTm9ybWFsLCBkZWZhdWx0IHZhbHVlIGNvbWluZyB0aHJvdWdoIGBnbG9iYWwtd2VpZ2h0LW5vcm1hbGBcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdlaWdodCBbJHByb3RvdHlwZS1mb250LW5vcm1hbF0gV2VpZ2h0IG9mIHRoZSBmb250IChub3JtYWwpXG5AbWl4aW4gZm9udC1ub3JtYWwoXG4gICR3ZWlnaHQ6ICRwcm90b3R5cGUtZm9udC1ub3JtYWxcbikge1xuICBmb250LXdlaWdodDogJHdlaWdodDtcbn1cblxuLy8vIEZvbnQgV2VpZ2h0IEJvbGQsIGRlZmF1bHQgdmFsdWUgY29taW5nIHRocm91Z2ggYGdsb2JhbC13ZWlnaHQtYm9sZGBcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdlaWdodCBbJHByb3RvdHlwZS1mb250LWJvbGRdIFdlaWdodCBvZiB0aGUgZm9udCAoYm9sZClcbkBtaXhpbiBmb250LWJvbGQoXG4gICR3ZWlnaHQ6ICRwcm90b3R5cGUtZm9udC1ib2xkXG4pIHtcbiAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG59XG5cbi8vLyBGb250IFN0eWxlIEl0YWxpY1xuQG1peGluIGZvbnQtaXRhbGljIHtcbiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1mb250LXN0eWxpbmcge1xuICAuZm9udC13aWRle1xuICAgIEBpbmNsdWRlIGZvbnQtd2lkZTtcbiAgfVxuXG4gIC5mb250LW5vcm1hbCB7XG4gICAgQGluY2x1ZGUgZm9udC1ub3JtYWw7XG4gIH1cblxuICAuZm9udC1ib2xkIHtcbiAgICBAaW5jbHVkZSBmb250LWJvbGQ7XG4gIH1cblxuICAuZm9udC1pdGFsaWMge1xuICAgIEBpbmNsdWRlIGZvbnQtaXRhbGljO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWZvbnQtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1mb250LXdpZGV7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LXdpZGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LWZvbnQtbm9ybWFsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtbm9ybWFsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mb250LWJvbGQge1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1ib2xkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mb250LWl0YWxpYyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LWl0YWxpYztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtbGlzdC1zdHlsZS10eXBlXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBsaXN0IHN0eWxpbmcgdHlwZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWxpc3QtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgc3R5bGUtdHlwZS11bm9yZGVyZWRgIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtc3R5bGUtdHlwZS11bm9yZGVyZWQ6IChcbiAgZGlzYyxcbiAgY2lyY2xlLFxuICBzcXVhcmVcbikgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBzdHlsZS10eXBlLW9yZGVyZWRgIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtc3R5bGUtdHlwZS1vcmRlcmVkOiAoXG4gIGRlY2ltYWwsXG4gIGxvd2VyLWFscGhhLFxuICBsb3dlci1sYXRpbixcbiAgbG93ZXItcm9tYW4sXG4gIHVwcGVyLWFscGhhLFxuICB1cHBlci1sYXRpbixcbiAgdXBwZXItcm9tYW5cbikgIWRlZmF1bHQ7XG5cblxuLy8vIFN0eWxlIHR5cGUgZm9yIHVub3JkZXJlZCBMaXN0cywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1zdHlsZS10eXBlLXVub3JkZXJlZGBcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0eWxlLXR5cGUtdW5vcmRlcmVkIFtdIFN0eWxlIHR5cGUgZm9yIHVub3JkZXJlZCBMaXN0c1xuQG1peGluIHN0eWxlLXR5cGUtdW5vcmRlcmVkKCRzdHlsZS10eXBlLXVub3JkZXJlZCkge1xuICBsaXN0LXN0eWxlLXR5cGU6ICRzdHlsZS10eXBlLXVub3JkZXJlZCAhaW1wb3J0YW50O1xufVxuXG4vLy8gU3R5bGUgdHlwZSBmb3Igb3JkZXJlZCBMaXN0cywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWRgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHlsZS10eXBlLW9yZGVyZWQgW10gU3R5bGUgdHlwZSBmb3Igb3JkZXJlZCBMaXN0c1xuQG1peGluIHN0eWxlLXR5cGUtb3JkZXJlZCgkc3R5bGUtdHlwZS1vcmRlcmVkKSB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogJHN0eWxlLXR5cGUtb3JkZXJlZCAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gbGlzdC11bm9yZGVyZWQge1xuICBAZWFjaCAkc3R5bGUtdHlwZS11bm9yZGVyZWQgaW4gJHByb3RvdHlwZS1zdHlsZS10eXBlLXVub3JkZXJlZCB7XG4gICAgdWwubGlzdC0jeyRzdHlsZS10eXBlLXVub3JkZXJlZH0ge1xuICAgICAgQGluY2x1ZGUgc3R5bGUtdHlwZS11bm9yZGVyZWQoJHN0eWxlLXR5cGUtdW5vcmRlcmVkKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtbGlzdC1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICRzdHlsZS10eXBlLXVub3JkZXJlZCBpbiAkcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgdWwuI3skc2l6ZX0tbGlzdC0jeyRzdHlsZS10eXBlLXVub3JkZXJlZH0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBzdHlsZS10eXBlLXVub3JkZXJlZCgkc3R5bGUtdHlwZS11bm9yZGVyZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1vcmRlcmVkIHtcbiAgQGVhY2ggJHN0eWxlLXR5cGUtb3JkZXJlZCBpbiAkcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZCB7XG4gICAgb2wubGlzdC0jeyRzdHlsZS10eXBlLW9yZGVyZWR9IHtcbiAgICAgIEBpbmNsdWRlIHN0eWxlLXR5cGUtb3JkZXJlZCgkc3R5bGUtdHlwZS1vcmRlcmVkKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtbGlzdC1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICRzdHlsZS10eXBlLW9yZGVyZWQgaW4gJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWQge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBvbC4jeyRzaXplfS1saXN0LSN7JHN0eWxlLXR5cGUtb3JkZXJlZH0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBzdHlsZS10eXBlLW9yZGVyZWQoJHN0eWxlLXR5cGUtb3JkZXJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1saXN0LXN0eWxlLXR5cGUge1xuICBAaW5jbHVkZSBsaXN0LXVub3JkZXJlZDtcbiAgQGluY2x1ZGUgbGlzdC1vcmRlcmVkO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1yb3VuZGVkXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciByb3VuZGVkIHV0aWxpdHkuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1yb3VuZGVkLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIGBwcm90b3R5cGUtYm9yZGVyLXJhZGl1c2Bcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoMykgIWRlZmF1bHQ7XG5cbi8vLyBSb3VuZGVkIHV0aWxpdHkgKGFsbCBjb3JuZXJzKTogQWRkcyByYWRpdXMgY29ybmVycyAoYWxsIGNvcm5lcnMpIHRvIGFuIGVsZW1lbnQgYnkgZGVmYXVsdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHJhZGl1cyBbJHByb3RvdHlwZS1ib3JkZXItcmFkaXVzXSBCb3JkZXIgcmFkaXVzIChhbGwgY29ybmVycylcbkBtaXhpbiBib3JkZXItcmFkaXVzKFxuICAkcmFkaXVzOiAkcHJvdG90eXBlLWJvcmRlci1yYWRpdXNcbikge1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xufVxuXG4vLy8gUm91bmRlZCBzcXVhcmUgdXRpbGl0eSBvciByZWN0YW5nbGUgdXRpbGl0eSAoYWxsIGNvcm5lcnMpOiBSb3VuZHMgYWxsIGNvcm5lcnMgdG8gYW4gZWxlbWVudCBieSBkZWZhdWx0IHRvIG1ha2UgYSBwaWxsIHNoYXBlLlxuQG1peGluIGJvcmRlci1yb3VuZGVkIHtcbiAgYm9yZGVyLXJhZGl1czogNTAwMHB4ICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1yb3VuZGVkIHtcbiAgLnJvdW5kZWQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yb3VuZGVkO1xuXG4gICAgLnN3aXRjaC1wYWRkbGUge1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLXJvdW5kZWQ7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOyAvLyBGb3Igc3dpdGNoZXNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAucmFkaXVzIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLXJvdW5kZWQtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1yb3VuZGVkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJvcmRlci1yb3VuZGVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuI3skc2l6ZX0tcmFkaXVzIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJvcmRlcmVkXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBib3JkZXJlZCB1dGlsaXR5LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtYm9yZGVyZWQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItd2lkdGhgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWJvcmRlci13aWR0aDogcmVtLWNhbGMoMSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJvcmRlci10eXBlYFxuLy8vIEB0eXBlIFN0cmluZ1xuJHByb3RvdHlwZS1ib3JkZXItdHlwZTogc29saWQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJvcmRlci1jb2xvcmAgZGVmYXVsdGVkIHRvIGBtZWRpdW0tZ3JheWBcbi8vLyBAdHlwZSBDb2xvclxuJHByb3RvdHlwZS1ib3JkZXItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlcmVkIFV0aWxpdHk6IEFkZHMgYSBsaWdodCBib3JkZXIgdG8gYW4gZWxlbWVudCBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWyRwcm90b3R5cGUtYm9yZGVyLXdpZHRoXSBXaWR0aCBvZiB0aGUgYm9yZGVyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlIFskcHJvdG90eXBlLWJvcmRlci10eXBlXSBUeXBlIG9mIHRoZSBib3JkZXJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRwcm90b3R5cGUtYm9yZGVyLWNvbG9yXSBDb2xvciBvZiB0aGUgYm9yZGVyXG5AbWl4aW4gYm9yZGVyZWQoXG4gICR3aWR0aDogJHByb3RvdHlwZS1ib3JkZXItd2lkdGgsXG4gICR0eXBlOiAkcHJvdG90eXBlLWJvcmRlci10eXBlLFxuICAkY29sb3I6ICRwcm90b3R5cGUtYm9yZGVyLWNvbG9yXG4pIHtcbiAgYm9yZGVyOiAkd2lkdGggJHR5cGUgJGNvbG9yO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyZWQge1xuICAuYm9yZGVyZWQge1xuICAgIEBpbmNsdWRlIGJvcmRlcmVkO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWJvcmRlcmVkLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tYm9yZGVyZWQge1xuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXNoYWRvd1xuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igc2hhZG93IHV0aWxpdHkuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1zaGFkb3ctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3gtc2hhZG93YFxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1ib3gtc2hhZG93OiAwIDJweCA1cHggMCByZ2JhKDAsMCwwLC4xNiksXG4gICAgICAgICAgICAgICAgICAgICAgIDAgMnB4IDEwcHggMCByZ2JhKDAsMCwwLC4xMikgIWRlZmF1bHQ7XG5cbi8vLyBTaGFkb3cgVXRpbGl0eTogQWRkcyBhIGxpZ2h0IGJveCBzaGFkb3cgdG8gYW4gZWxlbWVudCBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2hhZG93IFskcHJvdG90eXBlLWJveC1zaGFkb3ddIEJveCBTaGFkb3cgb2YgYSBjb21wb25lbnRcbkBtaXhpbiBzaGFkb3coXG4gICRzaGFkb3c6ICRwcm90b3R5cGUtYm94LXNoYWRvd1xuKSB7XG4gIGJveC1zaGFkb3c6ICRzaGFkb3c7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1zaGFkb3cge1xuICAuc2hhZG93IHtcbiAgICBAaW5jbHVkZSBzaGFkb3c7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtc2hhZG93LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tc2hhZG93IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNoYWRvdztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtYXJyb3dcbi8vLy9cblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYGFycm93YCBkaXJlY3Rpb25cbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtYXJyb3ctZGlyZWN0aW9uczogKFxuICBkb3duLFxuICB1cCxcbiAgcmlnaHQsXG4gIGxlZnRcbikgIWRlZmF1bHQ7XG5cbi8vLyBXaWR0aCBvZiB0aGUgQXJyb3csIGAwLjQzNzVyZW1gIGJ5IGRlZmF1bHQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWFycm93LXNpemU6IDAuNDM3NXJlbTtcblxuLy8vIENvbG9yIG9mIHRoZSBBcnJvdywgYCRibGFja2AgYnkgZGVmYXVsdC5cbi8vLyBAdHlwZSBDb2xvclxuJHByb3RvdHlwZS1hcnJvdy1jb2xvcjogJGJsYWNrO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtYXJyb3cge1xuICBAZWFjaCAkcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbiBpbiAkcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbnMge1xuICAgIC5hcnJvdy0jeyRwcm90b3R5cGUtYXJyb3ctZGlyZWN0aW9ufSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoXG4gICAgICAgICRwcm90b3R5cGUtYXJyb3ctc2l6ZSwgXG4gICAgICAgICRwcm90b3R5cGUtYXJyb3ctY29sb3IsIFxuICAgICAgICAkcHJvdG90eXBlLWFycm93LWRpcmVjdGlvblxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc2VwYXJhdG9yXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1zZXBhcmF0b3ItYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBhbGlnbm1lbnQgb2YgYSBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgU3RyaW5nXG4kcHJvdG90eXBlLXNlcGFyYXRvci1hbGlnbjogY2VudGVyICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1zZXBhcmF0b3ItaGVpZ2h0OiByZW0tY2FsYygyKSAhZGVmYXVsdDtcblxuLy8vIFdpZHRoIG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGg6IDNyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIENvbG9yXG4kcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFRvcCBNYXJnaW4gb2YgYSBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIFRpdGxlIHNlcGFyYXRvciBVdGlsaXR5LCBtb3N0bHkgdXNlZCB0byBzdHlsZSB0aGUgbWFpbiBoZWFkaW5nIG9mIGEgc2VjdGlvblxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYWxpZ24gWyRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduXSAtIHNlcGFyYXRvciBBbGlnbm1lbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBbJHByb3RvdHlwZS1zZXBhcmF0b3ItaGVpZ2h0XSAtIFdpZHRoXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGhdIC0gSGVpZ2h0XG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRwcm90b3R5cGUtc2VwYXJhdG9yLWJhY2tncm91bmRdIC0gQmFja2dyb3VuZFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFskcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wXSAtIE1hcmdpbiBUb3BcbkBtaXhpbiBzZXBhcmF0b3IgKFxuICAkYWxpZ246ICRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduLFxuICAkaGVpZ2h0OiAkcHJvdG90eXBlLXNlcGFyYXRvci1oZWlnaHQsXG4gICR3aWR0aDogJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGgsXG4gICRiYWNrZ3JvdW5kOiAkcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kLFxuICAkdG9wOiAkcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wXG4pIHtcbiAgdGV4dC1hbGlnbjogJGFsaWduICFpbXBvcnRhbnQ7XG5cdEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICY6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBwb3NpdGlvbihyZWxhdGl2ZSk7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRiYWNrZ3JvdW5kO1xuICAgIG1hcmdpbjogJHRvcCBhdXRvIDA7XG5cbiAgICBAaWYgJGFsaWduID09IGxlZnQge1xuICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAaWYgJGFsaWduID09IHJpZ2h0IHtcbiAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtc2VwYXJhdG9yIHtcblx0LnNlcGFyYXRvci1jZW50ZXIge1xuXHRcdEBpbmNsdWRlIHNlcGFyYXRvcihjZW50ZXIpO1xuXHR9XG5cbiAgLnNlcGFyYXRvci1sZWZ0IHtcbiAgICBAaW5jbHVkZSBzZXBhcmF0b3IobGVmdCk7XG4gIH1cblxuICAuc2VwYXJhdG9yLXJpZ2h0IHtcbiAgICBAaW5jbHVkZSBzZXBhcmF0b3IocmlnaHQpO1xuICB9XG5cblx0QGlmICgkcHJvdG90eXBlLXNlcGFyYXRvci1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXNlcGFyYXRvci1jZW50ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgc2VwYXJhdG9yKGNlbnRlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIC4jeyRzaXplfS1zZXBhcmF0b3ItbGVmdCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzZXBhcmF0b3IobGVmdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC4jeyRzaXplfS1zZXBhcmF0b3ItcmlnaHQge1xuICAgICAgICAgICAgQGluY2x1ZGUgc2VwYXJhdG9yKHJpZ2h0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtb3ZlcmZsb3dcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIG92ZXJmbG93IGhlbHBlciBjbGFzc2VzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1vdmVyZmxvdy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBvdmVyZmxvd2AgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1vdmVyZmxvdzogKFxuICB2aXNpYmxlLFxuICBoaWRkZW4sXG4gIHNjcm9sbFxuKSAhZGVmYXVsdDtcblxuLy8vIE92ZXJmbG93IGNsYXNzZXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtb3ZlcmZsb3dgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbXSBPdmVyZmxvdyBjbGFzc2VzXG5AbWl4aW4gb3ZlcmZsb3coJG92ZXJmbG93KSB7XG4gIG92ZXJmbG93OiAkb3ZlcmZsb3cgIWltcG9ydGFudDtcbn1cblxuLy8vIE92ZXJmbG93IGNsYXNzZXMgb24gaG9yaXpvbnRhbCBheGlzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLW92ZXJmbG93YFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3ZlcmZsb3cgW10gT3ZlcmZsb3cgY2xhc3NlcyAoaG9yaXpvbnRhbCBheGlzKVxuQG1peGluIG92ZXJmbG93LXgoJG92ZXJmbG93KSB7XG4gIG92ZXJmbG93LXg6ICRvdmVyZmxvdyAhaW1wb3J0YW50O1xufVxuXG4vLy8gT3ZlcmZsb3cgY2xhc3NlcyBvbiB2ZXJ0aWNhbCBheGlzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLW92ZXJmbG93YFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3ZlcmZsb3cgW10gT3ZlcmZsb3cgY2xhc3NlcyAodmVydGljYWwgYXhpcylcbkBtaXhpbiBvdmVyZmxvdy15KCRvdmVyZmxvdykge1xuICBvdmVyZmxvdy15OiAkb3ZlcmZsb3cgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLW92ZXJmbG93IHtcbiAgQGVhY2ggJG92ZXJmbG93IGluICRwcm90b3R5cGUtb3ZlcmZsb3cge1xuICAgIC5vdmVyZmxvdy0jeyRvdmVyZmxvd30ge1xuICAgICAgQGluY2x1ZGUgb3ZlcmZsb3coJG92ZXJmbG93KTtcbiAgICB9XG4gICAgLm92ZXJmbG93LXgtI3skb3ZlcmZsb3d9IHtcbiAgICAgIEBpbmNsdWRlIG92ZXJmbG93LXgoJG92ZXJmbG93KTtcbiAgICB9XG4gICAgLm92ZXJmbG93LXktI3skb3ZlcmZsb3d9IHtcbiAgICAgIEBpbmNsdWRlIG92ZXJmbG93LXkoJG92ZXJmbG93KTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtb3ZlcmZsb3ctYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAZWFjaCAkb3ZlcmZsb3cgaW4gJHByb3RvdHlwZS1vdmVyZmxvdyB7XG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIC4jeyRzaXplfS1vdmVyZmxvdy0jeyRvdmVyZmxvd30ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBvdmVyZmxvdygkb3ZlcmZsb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLiN7JHNpemV9LW92ZXJmbG93LXgtI3skb3ZlcmZsb3d9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteCgkb3ZlcmZsb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLiN7JHNpemV9LW92ZXJmbG93LXktI3skb3ZlcmZsb3d9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteSgkb3ZlcmZsb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1kaXNwbGF5XG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBkaXNwbGF5IGNsYXNzZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWRpc3BsYXktYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgZGlzcGxheWAgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1kaXNwbGF5OiAoXG4gIGlubGluZSxcbiAgaW5saW5lLWJsb2NrLFxuICBibG9jayxcbiAgdGFibGUsXG4gIHRhYmxlLWNlbGxcbikgIWRlZmF1bHQ7XG5cbi8vLyBEaXNwbGF5IGNsYXNzZXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtZGlzcGxheWBcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpc3BsYXkgW10gRGlzcGxheSBjbGFzc2VzXG5AbWl4aW4gZGlzcGxheSgkZGlzcGxheSkge1xuICBkaXNwbGF5OiAkZGlzcGxheSAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtZGlzcGxheSB7XG4gIEBlYWNoICRkaXNwbGF5IGluICRwcm90b3R5cGUtZGlzcGxheSB7XG4gICAgLmRpc3BsYXktI3skZGlzcGxheX0ge1xuICAgICAgQGluY2x1ZGUgZGlzcGxheSgkZGlzcGxheSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWRpc3BsYXktYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAZWFjaCAkZGlzcGxheSBpbiAkcHJvdG90eXBlLWRpc3BsYXkge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tZGlzcGxheS0jeyRkaXNwbGF5fSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIGRpc3BsYXkoJGRpc3BsYXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1wb3NpdGlvblxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgcG9zaXRpb24gaGVscGVyc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtcG9zaXRpb24tYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgcG9zaXRpb25gIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtcG9zaXRpb246IChcbiAgc3RhdGljLFxuICByZWxhdGl2ZSxcbiAgYWJzb2x1dGUsXG4gIGZpeGVkXG4pICFkZWZhdWx0O1xuXG4vLy8gei1pbmRleCBmb3IgZml4ZWQgcG9zaXRpb25pbmdcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleDogOTc1ICFkZWZhdWx0O1xuXG4vLy8gUG9zaXRpb24gY2xhc3NlcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1wb3NpdGlvbmAsIHdoZXJlYXMgYWxsIHRoZSBvZmZzZXQgdmFsdWVzIGFyZSBtdWx0aXBsaWVkIGJ5IGAkZ2xvYmFsLXBvc2l0aW9uYCB3aGljaCBieSBkZWZhdWx0IGlzIGVxdWFsIHRvIGAxcmVtYC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHBvc2l0aW9uIFtdIFBvc2l0aW9uIGNsYXNzZXMsIEVpdGhlciBgc3RhdGljYCwgYHJlbGF0aXZlYCwgYGFic29sdXRlYCBvciBgZml4ZWRgXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgW251bGxdIC0gVG9wIG9mZnNldFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmlnaHQgW251bGxdIC0gUmlnaHQgb2Zmc2V0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRib3R0b20gW251bGxdIC0gQm90dG9tIG9mZnNldFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVmdCBbbnVsbF0gLSBMZWZ0IG9mZnNldFxuQG1peGluIHBvc2l0aW9uKFxuICAkcG9zaXRpb24sXG4gICR0b3A6IG51bGwsXG4gICRyaWdodDogbnVsbCxcbiAgJGJvdHRvbTogbnVsbCxcbiAgJGxlZnQ6IG51bGxcbikge1xuICBwb3NpdGlvbjogJHBvc2l0aW9uICFpbXBvcnRhbnQ7XG4gIEBpZiAkdG9wICE9IG51bGwge1xuICAgIHRvcDogJHRvcCAqICRnbG9iYWwtcG9zaXRpb24gIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG51bGwge1xuICAgIHJpZ2h0OiAkcmlnaHQgKiAkZ2xvYmFsLXBvc2l0aW9uICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbnVsbCB7XG4gICAgYm90dG9tOiAkYm90dG9tICogJGdsb2JhbC1wb3NpdGlvbiAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkbGVmdCAhPSBudWxsIHtcbiAgICBsZWZ0OiAkbGVmdCAqICRnbG9iYWwtcG9zaXRpb24gIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gUG9zaXRpb24gRml4ZWQgb24gdG9wIGNvcm5lcnNcbi8vLyBAcGFyYW0ge051bWJlcn0gJHotaW5kZXggWyRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleF0gei1pbmRleCBmb3IgYHBvc2l0aW9uLWZpeGVkLXRvcGBcbkBtaXhpbiBwb3NpdGlvbi1maXhlZC10b3AoXG4gICR6LWluZGV4OiAkcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXhcbikge1xuICBAaW5jbHVkZSBwb3NpdGlvbihmaXhlZCwgMCwgMCwgbnVsbCwgMCk7XG4gIHotaW5kZXg6ICR6LWluZGV4O1xufVxuXG4vLy8gUG9zaXRpb24gRml4ZWQgb24gYm90dG9tIGNvcm5lcnNcbi8vLyBAcGFyYW0ge051bWJlcn0gJHotaW5kZXggWyRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleF0gei1pbmRleCBmb3IgYHBvc2l0aW9uLWZpeGVkLWJvdHRvbWBcbkBtaXhpbiBwb3NpdGlvbi1maXhlZC1ib3R0b20oXG4gICR6LWluZGV4OiAkcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXhcbikge1xuICBAaW5jbHVkZSBwb3NpdGlvbihmaXhlZCwgbnVsbCwgMCwgMCwgMCk7XG4gIHotaW5kZXg6ICR6LWluZGV4O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtcG9zaXRpb24ge1xuICAvLyBQb3NpdGlvbjogU3RhdGljLCBSZWxhdGl2ZSwgRml4ZWQsIEFic29sdXRlXG4gIEBlYWNoICRwb3NpdGlvbiBpbiAkcHJvdG90eXBlLXBvc2l0aW9uIHtcbiAgICAucG9zaXRpb24tI3skcG9zaXRpb259IHtcbiAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKCRwb3NpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLy8gUG9zaXRpb246IEZpeGVkIFRvcCwgRml4ZWQgQm90dG9tXG4gIC5wb3NpdGlvbi1maXhlZC10b3Age1xuICAgIEBpbmNsdWRlIHBvc2l0aW9uLWZpeGVkLXRvcDtcbiAgfVxuICAucG9zaXRpb24tZml4ZWQtYm90dG9tIHtcbiAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC1ib3R0b207XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtcG9zaXRpb24tYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICAvLyBQb3NpdGlvbjogU3RhdGljLCBSZWxhdGl2ZSwgRml4ZWQsIEFic29sdXRlXG4gICAgICAgIEBlYWNoICRwb3NpdGlvbiBpbiAkcHJvdG90eXBlLXBvc2l0aW9uIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKCRwb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUG9zaXRpb246IEZpeGVkIFRvcCwgRml4ZWQgQm90dG9tXG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLWZpeGVkLXRvcCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC10b3A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLWZpeGVkLWJvdHRvbSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC1ib3R0b207XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJvcmRlci1ib3hcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIGJvcmRlciBib3guXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1ib3JkZXItYm94LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBib3ggdXRpbGl0eVxuQG1peGluIGJvcmRlci1ib3gge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXItYm94IHtcbiAgLmJvcmRlci1ib3gge1xuICAgIEBpbmNsdWRlIGJvcmRlci1ib3g7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtYm9yZGVyLWJveC1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LWJvcmRlci1ib3gge1xuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLWJveDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtYm9yZGVyLW5vbmVcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIGJvcmRlciBub25lLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtYm9yZGVyLW5vbmUtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIG5vbmUgdXRpbGl0eVxuQG1peGluIGJvcmRlci1ub25lIHtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXItbm9uZSB7XG4gIC5ib3JkZXItbm9uZSB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLW5vbmU7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtYm9yZGVyLW5vbmUtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1ib3JkZXItbm9uZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc2l6aW5nXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzcGFjaW5nIGNsYXNzZXMgKG1hcmdpbiBhbmQgcGFkZGluZylcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXNpemluZy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBzaXppbmdgIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtc2l6aW5nOiAoXG4gIHdpZHRoLFxuICBoZWlnaHRcbikgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIHNpemVzLlxuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1zaXplczogKFxuICAyNTogMjUlLFxuICA1MDogNTAlLFxuICA3NTogNzUlLFxuICAxMDA6IDEwMCVcbikgIWRlZmF1bHQ7XG5cbi8vLyBNYXggV2lkdGggMTAwIHV0aWxpdHkuXG5AbWl4aW4gbWF4LXdpZHRoLTEwMCB7XG4gIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xufVxuXG4vLy8gTWF4IEhlaWdodCAxMDAgdXRpbGl0eS5cbkBtaXhpbiBtYXgtaGVpZ2h0LTEwMCB7XG4gIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNpemluZyB7XG4gIC8vIEVsZW1lbnQgU2l6aW5nXG4gIEBlYWNoICRzaXppbmcgaW4gJHByb3RvdHlwZS1zaXppbmcge1xuICAgIEBlYWNoICRsZW5ndGgsICRwZXJjZW50YWdlIGluICRwcm90b3R5cGUtc2l6ZXMge1xuICAgICAgLiN7JHNpemluZ30tI3skbGVuZ3RofSB7XG4gICAgICAgICN7JHNpemluZ306ICRwZXJjZW50YWdlICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTWF4IHdpZHRoICYgaGVpZ2h0XG4gIC5tYXgtd2lkdGgtMTAwIHtcbiAgICBAaW5jbHVkZSBtYXgtd2lkdGgtMTAwO1xuICB9XG4gIC5tYXgtaGVpZ2h0LTEwMCB7XG4gICAgQGluY2x1ZGUgbWF4LWhlaWdodC0xMDA7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtc2l6aW5nLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICBAZWFjaCAkc2l6aW5nIGluICRwcm90b3R5cGUtc2l6aW5nIHtcbiAgICAgICAgICAgIEBlYWNoICRsZW5ndGgsICRwZXJjZW50YWdlIGluICRwcm90b3R5cGUtc2l6ZXMge1xuICAgICAgICAgICAgICAuI3skc2l6ZX0tI3skc2l6aW5nfS0jeyRsZW5ndGh9IHtcbiAgICAgICAgICAgICAgICAjeyRzaXppbmd9OiAkcGVyY2VudGFnZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXNwYWNpbmdcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHNwYWNpbmcgY2xhc3NlcyAobWFyZ2luIGFuZCBwYWRkaW5nKVxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtc3BhY2luZy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG51bWJlciBvZiBzcGFjZXJzIGNvdW50IChtYXJnaW4gYW5kIHBhZGRpbmcpXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLXNwYWNlcnMtY291bnQ6IDMgIWRlZmF1bHQ7XG5cbi8vLyBNYXJnaW4gaGVscGVyIG1peGluLCBhbGwgdGhlIHZhbHVlcyBhcmUgbXVsdGlwbGllZCBieSBgJGdsb2JhbC1tYXJnaW5gIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZXF1YWwgdG8gYDFyZW1gXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgW251bGxdIC0gTWFyZ2luIFRvcFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmlnaHQgW251bGxdIC0gTWFyZ2luIFJpZ2h0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRib3R0b20gW251bGxdIC0gTWFyZ2luIEJvdHRvbVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVmdCBbbnVsbF0gLSBNYXJnaW4gTGVmdFxuQG1peGluIG1hcmdpbihcbiAgJHRvcDogbnVsbCxcbiAgJHJpZ2h0OiBudWxsLFxuICAkYm90dG9tOiBudWxsLFxuICAkbGVmdDogbnVsbFxuKSB7XG4gIEBpZiAkdG9wICE9IG51bGwge1xuICAgIG1hcmdpbi10b3A6ICR0b3AgKiAkZ2xvYmFsLW1hcmdpbiAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbnVsbCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAkcmlnaHQgKiAkZ2xvYmFsLW1hcmdpbiAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG51bGwge1xuICAgIG1hcmdpbi1ib3R0b206ICRib3R0b20gKiAkZ2xvYmFsLW1hcmdpbiAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkbGVmdCAhPSBudWxsIHtcbiAgICBtYXJnaW4tbGVmdDogJGxlZnQgKiAkZ2xvYmFsLW1hcmdpbiAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vLyBQYWRkaW5nIGhlbHBlciBtaXhpbiwgYWxsIHRoZSB2YWx1ZXMgYXJlIG11bHRpcGxpZWQgYnkgYCRnbG9iYWwtcGFkZGluZ2Agd2hpY2ggYnkgZGVmYXVsdCBpcyBlcXVhbCB0byBgMXJlbWBcbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvcCBbbnVsbF0gLSBQYWRkaW5nIFRvcFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmlnaHQgW251bGxdIC0gUGFkZGluZyBSaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYm90dG9tIFtudWxsXSAtIFBhZGRpbmcgQm90dG9tXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWZ0IFtudWxsXSAtIFBhZGRpbmcgTGVmdFxuQG1peGluIHBhZGRpbmcoXG4gICR0b3A6IG51bGwsXG4gICRyaWdodDogbnVsbCxcbiAgJGJvdHRvbTogbnVsbCxcbiAgJGxlZnQ6IG51bGxcbikge1xuICBAaWYgJHRvcCAhPSBudWxsIHtcbiAgICBwYWRkaW5nLXRvcDogJHRvcCAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbnVsbCB7XG4gICAgcGFkZGluZy1yaWdodDogJHJpZ2h0ICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbnVsbCB7XG4gICAgcGFkZGluZy1ib3R0b206ICRib3R0b20gKiAkZ2xvYmFsLXBhZGRpbmcgIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbnVsbCB7XG4gICAgcGFkZGluZy1sZWZ0OiAkbGVmdCAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vLyBNYXJnaW4gY2xhc3NlcyBmb3Igc3BlY2lmaWMgZGlyZWN0aW9uIHByb3BlcnRpZXNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpciBbXSBEaXJlY3Rpb25cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNwYWNlciBbXSBTcGFjZXJcbkBtaXhpbiBtYXJnaW4tZGlyZWN0aW9uKCRkaXIsICRzcGFjZXIpIHtcbiAgQGlmICgkZGlyID09IHRvcCkgeyBcbiAgICBAaW5jbHVkZSBtYXJnaW4oJHRvcDogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IHJpZ2h0KSB7IFxuICAgIEBpbmNsdWRlIG1hcmdpbigkcmlnaHQ6ICRzcGFjZXIpOyBcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSBib3R0b20pIHsgXG4gICAgQGluY2x1ZGUgbWFyZ2luKCRib3R0b206ICRzcGFjZXIpOyBcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSBsZWZ0KSB7IFxuICAgIEBpbmNsdWRlIG1hcmdpbigkbGVmdDogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IGhvcml6b250YWwpIHsgXG4gICAgQGluY2x1ZGUgbWFyZ2luKCRyaWdodDogJHNwYWNlciwgJGxlZnQ6ICRzcGFjZXIpOyBcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSB2ZXJ0aWNhbCkgeyBcbiAgICBAaW5jbHVkZSBtYXJnaW4oJHRvcDogJHNwYWNlciwgJGJvdHRvbTogJHNwYWNlcik7IFxuICB9XG59XG5cbi8vLyBQYWRkaW5nIGNsYXNzZXMgZm9yIHNwZWNpZmljIGRpcmVjdGlvbiBwcm9wZXJ0aWVzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXIgW10gRGlyZWN0aW9uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzcGFjZXIgW10gU3BhY2VyXG5AbWl4aW4gcGFkZGluZy1kaXJlY3Rpb24oJGRpciwgJHNwYWNlcikge1xuICBAaWYgKCRkaXIgPT0gdG9wKSB7IFxuICAgIEBpbmNsdWRlIHBhZGRpbmcoJHRvcDogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IHJpZ2h0KSB7IFxuICAgIEBpbmNsdWRlIHBhZGRpbmcoJHJpZ2h0OiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gYm90dG9tKSB7IFxuICAgIEBpbmNsdWRlIHBhZGRpbmcoJGJvdHRvbTogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IGxlZnQpIHsgXG4gICAgQGluY2x1ZGUgcGFkZGluZygkbGVmdDogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IGhvcml6b250YWwpIHsgXG4gICAgQGluY2x1ZGUgcGFkZGluZygkcmlnaHQ6ICRzcGFjZXIsICRsZWZ0OiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gdmVydGljYWwpIHsgXG4gICAgQGluY2x1ZGUgcGFkZGluZygkdG9wOiAkc3BhY2VyLCAkYm90dG9tOiAkc3BhY2VyKTsgXG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNwYWNpbmcge1xuICBAZm9yICRzcGFjZXIgZnJvbSAwIHRocm91Z2ggJHByb3RvdHlwZS1zcGFjZXJzLWNvdW50IHtcbiAgICBcbiAgICBAZWFjaCAkcHJvcCBpbiAobWFyZ2luLCBwYWRkaW5nKSB7XG4gICAgICAvLyBBbGwgU2lkZXNcbiAgICAgIC4jeyRwcm9wfS0jeyRzcGFjZXJ9IHtcbiAgICAgICAgQGlmICgkcHJvcCA9PSBtYXJnaW4pIHsgXG4gICAgICAgICAgbWFyZ2luOiAkc3BhY2VyICogJGdsb2JhbC1tYXJnaW4gIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSBpZiAoJHByb3AgPT0gcGFkZGluZykgeyBcbiAgICAgICAgICBwYWRkaW5nOiAkc3BhY2VyICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGVhY2ggJGRpciBpbiAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBob3Jpem9udGFsLCB2ZXJ0aWNhbCkge1xuICAgICAgICAvLyBUb3AgU2lkZVxuICAgICAgICAuI3skcHJvcH0tI3skZGlyfS0jeyRzcGFjZXJ9IHtcbiAgICAgICAgICBAaWYgKCRwcm9wID09IG1hcmdpbikgeyBcbiAgICAgICAgICAgIEBpbmNsdWRlIG1hcmdpbi1kaXJlY3Rpb24oJGRpciwgJHNwYWNlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIGlmICgkcHJvcCA9PSBwYWRkaW5nKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nLWRpcmVjdGlvbigkZGlyLCAkc3BhY2VyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtc3BhY2luZy1icmVha3BvaW50cykge1xuICAgIEBmb3IgJHNwYWNlciBmcm9tIDAgdGhyb3VnaCAkcHJvdG90eXBlLXNwYWNlcnMtY291bnQge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICAuI3skc2l6ZX0ge1xuICAgICAgICAgICAgICBAZWFjaCAkcHJvcCBpbiAobWFyZ2luLCBwYWRkaW5nKSB7XG4gICAgICAgICAgICAgICAgLy8gQWxsIFNpZGVzXG4gICAgICAgICAgICAgICAgJi0jeyRwcm9wfS0jeyRzcGFjZXJ9IHtcbiAgICAgICAgICAgICAgICAgIEBpZiAoJHByb3AgPT0gbWFyZ2luKSB7IFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICRzcGFjZXIgKiAkZ2xvYmFsLW1hcmdpbiAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGVsc2UgaWYgKCRwcm9wID09IHBhZGRpbmcpIHsgXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICRzcGFjZXIgKiAkZ2xvYmFsLXBhZGRpbmcgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAZWFjaCAkZGlyIGluICh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIGhvcml6b250YWwsIHZlcnRpY2FsKSB7XG4gICAgICAgICAgICAgICAgICAvLyBUb3AgU2lkZVxuICAgICAgICAgICAgICAgICAgJi0jeyRwcm9wfS0jeyRkaXJ9LSN7JHNwYWNlcn0ge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKCRwcm9wID09IG1hcmdpbikgeyBcbiAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtYXJnaW4tZGlyZWN0aW9uKCRkaXIsICRzcGFjZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBlbHNlIGlmICgkcHJvcCA9PSBwYWRkaW5nKSB7IFxuICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBhZGRpbmctZGlyZWN0aW9uKCRkaXIsICRzcGFjZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0IFwiYmFzZS9iYXNlXCI7XHJcbkBpbXBvcnQgXCJjb21wb25lbnRzL19pbmRleFwiOyIsIkBpbXBvcnQgXCJtaXhpbnNcIjtcclxuQGltcG9ydCBcInJlc2V0XCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzXCI7XHJcbkBpbXBvcnQgXCJzZXR0aW5nc1wiO1xyXG5AaW1wb3J0IFwiZm9udGZhY2VcIjtcclxuQGltcG9ydCBcImFwcC1taXhpbnNcIjsiLCJAbWl4aW4gYmxvY2soJHdpZHRoLCRoZWlnaHQ6MCwkZHNwOicnKXtcclxuICB3aWR0aDokd2lkdGg7XHJcbiAgQGlmICRoZWlnaHQ9PTAge1xyXG4gICAgaGVpZ2h0OiAkd2lkdGg7XHJcbiAgfUBlbHNle1xyXG4gICAgaGVpZ2h0OiRoZWlnaHRcclxuICB9XHJcbiAgQGlmKCRkc3AhPScnKXtcclxuICAgIGRpc3BsYXk6IHVucXVvdGUoJGRzcCk7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gYm94LXNpemluZygkdmFsdWUpe1xyXG4gIGJveC1zaXppbmc6ICR2YWx1ZTtcclxuICAtbW96LWJveC1zaXppbmc6ICR2YWx1ZTtcclxufVxyXG5cclxuQG1peGluIGNpcmNsZSgkd2lkdGgsJGRpc3BsYXk6YmxvY2spe1xyXG4gIHdpZHRoOiAkd2lkdGg7IGhlaWdodDogJHdpZHRoO1xyXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoNTAlKTtcclxuICBkaXNwbGF5OiRkaXNwbGF5O1xyXG59XHJcblxyXG5cclxuQG1peGluIGZvcm0tcGxhY2Vob2xlcigpe1xyXG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgeyAvKiBXZWJLaXQgYnJvd3NlcnMgKi9cclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxuICAmOi1tb3otcGxhY2Vob2xkZXIgeyAvKiBNb3ppbGxhIEZpcmVmb3ggNCB0byAxOCAqL1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG4gICY6Oi1tb3otcGxhY2Vob2xkZXIgeyAvKiBNb3ppbGxhIEZpcmVmb3ggMTkrICovXHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyAvKiBJbnRlcm5ldCBFeHBsb3JlciAxMCsgKi9cclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuXHJcbkBtaXhpbiBkYm9yZGVyKCRjb2xvcjEsJGNvbG9yMil7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yMTtcclxuICBvdXRsaW5lOiAxcHggc29saWQgJGNvbG9yMjtcclxufVxyXG5cclxuXHJcblxyXG5AbWl4aW4gdGV4dCgkczonJywkdzonJywkdDonJywkZDonJywkc2w6JycsJGE6JycsJGxzOicnKXtcclxuICBAaWYgJHMhPScne1xyXG4gICAgZm9udC1zaXplOnVucXVvdGUoJHMpO1xyXG4gIH1cclxuICBAaWYgJHNsIT0nJ3tcclxuICAgIGZvbnQtc3R5bGU6dW5xdW90ZSgkc2wpO1xyXG4gIH1cclxuICBAaWYgJHchPScne1xyXG4gICAgZm9udC13ZWlnaHQ6dW5xdW90ZSgkdyk7XHJcbiAgfVxyXG4gIEBpZiAkdCE9Jyd7XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTp1bnF1b3RlKCR0KTtcclxuICB9XHJcbiAgQGlmICRkIT0nJ3tcclxuICAgIHRleHQtZGVjb3JhdGlvbjp1bnF1b3RlKCRkKTtcclxuICB9XHJcbiAgQGlmICRhIT0nJ3tcclxuICAgIHRleHQtYWxpZ246dW5xdW90ZSgkYSk7XHJcbiAgfVxyXG4gIEBpZiAkbHMhPScne1xyXG4gICAgbGV0dGVyLXNwYWNpbmc6dW5xdW90ZSgkbHMpO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGlucHV0LWhlaWdodC1wYWRkaW5nKCRmU2l6ZSwkaGVpZ2h0KXtcclxuICBsaW5lLWhlaWdodDogMTtcclxuICBwYWRkaW5nLXRvcDooJGhlaWdodCAtICRmU2l6ZSkvMiAhaW1wb3J0YW50O1xyXG4gIHBhZGRpbmctYm90dG9tOigkaGVpZ2h0IC0gJGZTaXplKS8yICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXJ7XHJcbiAgJjphZnRlcntcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgZm9udC1zaXplOiAwO1xyXG4gICAgbWFyZ2luLWxlZnQ6LS4zcmVtO1xyXG4gIH1cclxuICAmPip7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGFsaWduLXZlcnRpY2FsKCR2YWx1ZSl7XHJcbiAgJjpiZWZvcmV7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgdmVydGljYWwtYWxpZ246ICR2YWx1ZTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHdpZHRoOjA7XHJcbiAgICBmb250LXNpemU6IDA7XHJcbiAgfVxyXG4gICY+KntcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiAkdmFsdWU7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWp1c3RpZnl7XHJcbiAgdGV4dC1hbGlnbjoganVzdGlmeTtcclxuICAmPip7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gIH1cclxuICAmOmJlZm9yZXtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgZm9udC1zaXplOiAwO1xyXG4gICAgbWFyZ2luLWxlZnQ6LS4zcmVtO1xyXG4gIH1cclxuXHJcbiAgJjphZnRlcntcclxuICAgIGNvbnRlbnQ6XCJcIjtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAwO1xyXG4gICAgZm9udC1zaXplOiAwO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIG1hcmdpbi1jZW50ZXJ7XHJcbiAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDtcclxuICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcclxufVxyXG5cclxuQG1peGluIGxpc3QtaW5kZW50KCRtYXJnaW4pe1xyXG4gICY+bGkrbGl7XHJcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcclxuICB9XHJcbn1cclxuXHJcblxyXG5AbWl4aW4gY2hpbGRzKCl7XHJcbiAgJj4qKyp7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vID0gT3BhY2l0eVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5AbWl4aW4gb3BhY2l0eSgkb3BhY2l0eSkge1xyXG4gIGZpbHRlcjogdW5xdW90ZShcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PSN7cm91bmQoJG9wYWNpdHkgKiAxMDApfSlcIik7XHJcbiAgb3BhY2l0eTogJG9wYWNpdHk7XHJcblxyXG4gIC8qIEhhY2sgSUU2ICovXHJcbiAgLmx0LWllNyAmIHtcclxuICAgIGZpbHRlciA6IGFscGhhKG9wYWNpdHk9I3tyb3VuZCgkb3BhY2l0eSAqIDEwMCl9KTtcclxuICAgIHpvb206IDE7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gcmVzZXQtdWwoKSB7XHJcbiAgbGlzdC1zdHlsZTogbm9uZTtcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMDtcclxufVxyXG5AbWl4aW4gdWwtanVzdGlmeSgkZWw6bGkpe1xyXG4gICY6YWZ0ZXJ7d2lkdGg6IDEwMCU7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgY29udGVudDogXCIuXCI7IHZpc2liaWxpdHk6IGhpZGRlbjt9XHJcbiAgdGV4dC1hbGlnbjoganVzdGlmeTtcclxuICA+I3skZWx9e2Rpc3BsYXk6IGlubGluZS1ibG9jazt9XHJcbn1cclxuXHJcbkBtaXhpbiBfY2xlYXJmaXgoKXtcclxuICAmOmFmdGVye1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBmb250LXNpemU6IDA7XHJcbiAgICBjb250ZW50OiBcIiBcIjtcclxuICAgIGNsZWFyOiBib3RoO1xyXG4gICAgaGVpZ2h0OiAwO1xyXG4gIH1cclxuICAvLyAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIC8vZGlzcGxheTogYmxvY2s7XHJcbiAgQGF0LXJvb3QgKiBodG1sICZ7XHJcbiAgICBoZWlnaHQ6IDElO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGlzLXRyYW5zZm9ybWVkKCR4Oi01MCUsJHk6LTUwJSwgJHdpZHRoOiAxMDAlLCAkcDphYnNvbHV0ZSl7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgcG9zaXRpb246ICRwO1xyXG4gIGxlZnQ6IDUwJTt0b3A6IDUwJTtcclxuICB3aWR0aDogJHdpZHRoO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlKCR4LCR5KSk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb25TZXR0aW5ncygkbmFtZSwgJHRpbWluZywgJGZ1bmN0aW9uOmxpbmVhciwgJGxvb3A6aW5maW5pdGUsICRkaXJlY3Rpb246bm9ybWFsLCAkZGVsYXk6IDBzKSB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246ICRuYW1lICR0aW1pbmcgJGRlbGF5ICRmdW5jdGlvbiAkbG9vcCAkZGlyZWN0aW9uO1xyXG4gIC1tb3otYW5pbWF0aW9uOiAkbmFtZSAkdGltaW5nICRkZWxheSAkZnVuY3Rpb24gJGxvb3AgJGRpcmVjdGlvbjtcclxuICAtby1hbmltYXRpb246ICRuYW1lICR0aW1pbmcgJGRlbGF5ICRmdW5jdGlvbiAkbG9vcCAkZGlyZWN0aW9uO1xyXG4gIGFuaW1hdGlvbjogJG5hbWUgJHRpbWluZyAkZGVsYXkgJGZ1bmN0aW9uICRsb29wICRkaXJlY3Rpb247XHJcbn1cclxuXHJcbkBtaXhpbiBhYnNvbHV0ZVN0cmV0Y2ggeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgfVxyXG5cclxuLy8gVGV4dCBvdmVyZmxvd1xyXG4vLyBSZXF1aXJlcyBpbmxpbmUtYmxvY2sgb3IgYmxvY2sgZm9yIHByb3BlciBzdHlsaW5nXHJcblxyXG5AbWl4aW4gdGV4dC1vdmVyZmxvdygpIHtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbn1cclxuXHJcbkBtaXhpbiBoaWRlKCl7XHJcbiAgZGlzcGxheTogbm9uZSFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8vIE1JWElOJ3MgRk9SIEZMRVggTEFZT1VUIHcvIEZMT0FUIEZBTExCQUNLIEVOQUJMRURcclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLy8gMS4gRW5hYmxlIEZsZXggTGF5b3V0XHJcbi8vIDIuIExheW91dCBBbGlnbm1lbnQgT3B0aW9uc1xyXG4vLyAzLiBQYXJlbnQgVXNhZ2U6IEVuYWJsZSBDTEVBUkZJWCAvIERpc2FibGUgQ0xFQVJGSVhcclxuLy8gNC4gQ2hpbGQgVXNhZ2U6IEVuYWJsZSBGTE9BVFMgLyBEaXNhYmxlIEZMT0FUU1xyXG4vLyA1LiBGaXJlZm94IFVzYWdlOiBMYXlvdXRzIHRoYXQgbmVlZCBcIkZsZXgtd3JhcFwiIHdpbGwgbmVlZCB0byBiZSByZXZlcnRlZCB0byBhIGZsb2F0LlxyXG5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG4vLyAxLiBFbmFibGUgRmxleCBMYXlvdXRcclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5AbWl4aW4gZGlzcGxheUZsZXgoKXtcclxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcclxuICBkaXNwbGF5OiAtbW96LWJveDtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XHJcbiAgZGlzcGxheTogZmxleDtcclxufVxyXG5cclxuQG1peGluIGRpc3BsYXlJbmxpbmVGbGV4KCl7XHJcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgZGlzcGxheTogLW1vei1ib3g7XHJcbiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7XHJcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbn1cclxuXHJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuLy8gMi4gTGF5b3V0IEFsaWdubWVudCBPcHRpb25zXHJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qIEZsZXgtZmxvdyBpcyBzaG9ydCBoYW5kIGZvciBcImZsZXgtZGlyZWN0aW9uXCIgJiBcImZsZXgtd3JhcFwiICovXHJcbkBtaXhpbiBmbGV4Rmxvd1Jvd1dyYXAoKXtcclxuICAvKiBTYWZhcmkgLSBQcmUgRmxleCBGbG93ICovXHJcbiAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIC13ZWJraXQtZmxleC13cmFwOiB3cmFwO1xyXG4gIC8qIE1TIC0gUHJlIEZsZXggRmxvdyAqL1xyXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIC1tcy1mbGV4LXdyYXA6IHdyYXA7XHJcbiAgLyogTW96IC0gUHJlIEZsZXggRmxvdyAqL1xyXG4gIC1tb3otZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAtbW96LWZsZXgtd3JhcDogd3JhcDtcclxuICAvKiBGbGV4IEZsb3cgICovXHJcbiAgLXdlYmtpdC1mbGV4LWZsb3c6IHJvdyB3cmFwO1xyXG4gIC1tb3otZmxleC1mbG93OiByb3cgd3JhcDtcclxuICAtbXMtZmxleC1mbG93OiByb3cgd3JhcDtcclxuICAtd2Via2l0LWZsZXgtZmxvdzogcm93IHdyYXA7XHJcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcclxufVxyXG4vKiBGbGV4LWRpcmVjdGlvbiAtIENvbHVtbiAqL1xyXG5AbWl4aW4gZmxleERpcmVjdGlvbkNvbCgpe1xyXG4gIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAtbW96LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbn1cclxuQG1peGluIGZsZXhEaXJlY3Rpb25Db2xSZXZlcnNlKCl7XHJcbiAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XHJcbiAgLW1vei1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XHJcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcclxuICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XHJcbn1cclxuLyogRmxleC1kaXJlY3Rpb24gLSBSb3cgKi9cclxuQG1peGluIGZsZXhEaXJlY3Rpb25Sb3coKXtcclxuICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgLW1vei1mbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdztcclxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG59XHJcbkBtaXhpbiBmbGV4RGlyZWN0aW9uUm93UmV2ZXJzZSgpe1xyXG4gIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xyXG4gIC1tb3otZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xyXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XHJcbiAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XHJcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xyXG59XHJcbkBtaXhpbiBqdXN0aWZ5Q29udGVudENlbnRlcigpe1xyXG4gIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG59XHJcbkBtaXhpbiBqdXN0aWZ5Q29udGVudFNwYWNlQmV0d2Vlbigpe1xyXG4gIC13ZWJraXQtYm94LXBhY2s6IHNwYWNlLWJldHdlZW47XHJcbiAgLW1vei1ib3gtcGFjazogc3BhY2UtYmV0d2VlbjtcclxuICAtbXMtZmxleC1wYWNrOiBzcGFjZS1iZXR3ZWVuO1xyXG4gIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxufVxyXG5AbWl4aW4ganVzdGlmeUNvbnRlbnRGbGV4U3RhcnQoKXtcclxuICAtd2Via2l0LWJveC1wYWNrOiBmbGV4LXN0YXJ0O1xyXG4gIC1tb3otYm94LXBhY2s6IGZsZXgtc3RhcnQ7XHJcbiAgLW1zLWZsZXgtcGFjazogZmxleC1zdGFydDtcclxuICAtd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbn1cclxuQG1peGluIGp1c3RpZnlDb250ZW50RmxleEVuZCgpe1xyXG4gIC13ZWJraXQtYm94LXBhY2s6IGZsZXgtZW5kO1xyXG4gIC1tb3otYm94LXBhY2s6IGZsZXgtZW5kO1xyXG4gIC1tcy1mbGV4LXBhY2s6IGZsZXgtZW5kO1xyXG4gIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG59XHJcbi8qIEFsaWduIEl0ZW1zIC0gU3RyZXRjaCAqL1xyXG5AbWl4aW4gYWxpZ25JdGVtc1N0cmV0Y2goKXtcclxuICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDtcclxuICAtbW96LWJveC1hbGlnbjogc3RyZXRjaDtcclxuICAtbXMtZmxleC1hbGlnbjogc3RyZXRjaDtcclxuICAtd2Via2l0LWFsaWduLWl0ZW1zOiBzdHJldGNoO1xyXG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xyXG59XHJcbi8qIEFsaWduIEl0ZW1zIC0gQ2VudGVyICovXHJcbkBtaXhpbiBhbGlnbkl0ZW1zQ2VudGVyKCl7XHJcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcclxuICAtbW96LWJveC1hbGlnbjogY2VudGVyO1xyXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XHJcbiAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuQG1peGluIGFsaWduQ29udGVudEZsZXhTdGFydCgpe1xyXG4gIC1tb3otYWxpZ24tY29udGVudDogZmxleC1zdGFydDtcclxuICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgLW1zLWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDtcclxufVxyXG5AbWl4aW4gYWxpZ25Db250ZW50RmxleEVuZCgpe1xyXG4gIC1tb3otYWxpZ24tY29udGVudDogZmxleC1lbmQ7XHJcbiAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcclxuICAtbXMtYWxpZ24tY29udGVudDogZmxleC1lbmQ7XHJcbiAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7XHJcbn1cclxuQG1peGluIGFsaWduU2VsZkNlbnRlcigpe1xyXG4gIC1tb3otYWxpZ24tc2VsZjogY2VudGVyO1xyXG4gIC13ZWJraXQtYWxpZ24tc2VsZjogY2VudGVyO1xyXG4gIC1tcy1hbGlnbi1zZWxmOiBjZW50ZXI7XHJcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xyXG59XHJcbkBtaXhpbiBmbGV4MS0xLTEwMCgpe1xyXG4gIC1tb3otZmxleDogMSAxIDEwMCU7XHJcbiAgLXdlYmtpdC1mbGV4OiAxIDEgMTAwJTtcclxuICAtbXMtZmxleDogMSAxIDEwMCU7XHJcbiAgZmxleDogMSAxIDEwMCU7XHJcbn1cclxuXHJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuLy8gMy4gUGFyZW50IHVzYWdlOiBFbmFibGUgQ0xFQVJGSVggLyBEaXNhYmxlIENMRUFSRklYXHJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qIENsZWFyZml4ICovXHJcbkBtaXhpbiBjbGVhcmZpeCgpe1xyXG4gICY6YmVmb3JlLCAmOmFmdGVye1xyXG4gICAgY29udGVudDogXCIgXCI7XHJcbiAgICBkaXNwbGF5OiB0YWJsZTtcclxuICB9XHJcblxyXG4gICY6YWZ0ZXJ7XHJcbiAgICBjbGVhcjogYm90aDtcclxuICAgIC8vICBJRVxyXG4gICAgKnpvb206IDE7XHJcbiAgfVxyXG59XHJcbi8qIFJldmVydCBjbGVhcmZpeCAqL1xyXG5AbWl4aW4gcmV2ZXJ0Q2xlYXJmaXgoKXtcclxuICAmOmJlZm9yZSwgJjphZnRlcntcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAvLyAgSUVcclxuICAgICp6b29tOiBhdXRvO1xyXG4gIH1cclxufVxyXG5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG4vLyA0LiBDaGlsZHJlbiB1c2FnZTogLSBFbmFibGUgRkxPQVRTIC8gRGlzYWJsZSBGTE9BVFNcclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5AbWl4aW4gZmxvYXRUb2dnbGVGb3JGbGV4KCl7XHJcbiAgZmxvYXQ6IGxlZnQ7XHJcbiAgLyogVGhlIE1vZGVybml6ciBjbGFzc2VzIG9uIHRoZSBFZGl0b3IgJiBGdWxsIHBhZ2UgYXJlIHNsaWdodHkgZGlmZmVyZW50LCBzbyBJIGhhdmUgdG8gaW5jbHVkZSBcIi5uby1mbGV4Ym94XCIsIHdoaWNoIG1ha2VzIG1lIHNhZC4gKi9cclxuICBAYXQtcm9vdCAuZmxleGJveCAme1xyXG4gICAgZmxvYXQ6IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcbi8vIDUuIEZpcmVmb3ggVXNhZ2U6IExheW91dHMgdGhhdCBuZWVkIFwiRmxleC13cmFwXCIgd2lsbCBuZWVkIHRvIGJlIHJldmVydGVkIHRvIGEgZmxvYXQuXHJcbi8vIE1vZGVybml6ciBoYXMgYSBidWcgd2hlcmUgaXQgaW5zZXJ0cyBcIm5vLWZsZXhib3hcIiwgd2hlbiBpbiBmYWN0IGl0IGRvZXMuXHJcbi8vIFVudGlsIHRoaXMgY2hhbmdlcyB3ZSBuZWVkIHRvIGluY2x1ZGUgXCIubm8tZmxleGJveCAmXCJcclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuQG1peGluIC1tb3otY2xlYXJmaXgoKXtcclxuICAvLyBOZWVkZWQgdG8gb3ZlcnJpZGUgc3R5bGVzXHJcbiAgQGF0LXJvb3QgLmZsZXhib3ggJntcclxuICAgIEBpbmNsdWRlIGNsZWFyZml4KCk7XHJcbiAgfVxyXG4gIEBhdC1yb290IC5uby1mbGV4Ym94ICZ7XHJcbiAgICBAaW5jbHVkZSBjbGVhcmZpeCgpO1xyXG4gIH1cclxufVxyXG5AbWl4aW4gLW1vei1ub0ZsZXhXcmFwLUZsb2F0bGVmdCgpe1xyXG4gIC8vIE5lZWRlZCB0byBvdmVycmlkZSBzdHlsZXNcclxuICBAYXQtcm9vdCAuZmxleGJveCAme1xyXG4gICAgZmxvYXQ6IGxlZnQ7XHJcbiAgfVxyXG4gIEBhdC1yb290IC5uby1mbGV4Ym94ICZ7XHJcbiAgICBmbG9hdDogbGVmdDtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiB0cmlhbmdsZSgkc2l6ZSwgJGNvbG9yLCAkZGlyZWN0aW9uKSB7XHJcbiAgaGVpZ2h0OiAwO1xyXG4gIHdpZHRoOiAwO1xyXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcclxuXHJcbiAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xyXG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xyXG4gIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XHJcbiAgICBib3JkZXItbGVmdC1jb2xvcjogICAkY29sb3I7XHJcblxyXG4gIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcclxuICAgIGJvcmRlci10b3AtY29sb3I6ICAgICRjb2xvcjtcclxuXHJcbiAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xyXG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAgJGNvbG9yO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbkBtaXhpbiBib3JkZXJlZC10cmlhbmdsZSgkc2l6ZSwgJGJvcmRlci13aWR0aCwgJGNvbG9yLCAkYm9yZGVyLWNvbG9yLCAkZGlyZWN0aW9uLCAkYWx0OiBmYWxzZSkge1xyXG4gICRiYWNrLXNpemU6ICRzaXplICsgKCRib3JkZXItd2lkdGggKiAyKTtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG4gIG1pbi13aWR0aDogJHNpemU7XHJcbiAgbWluLWhlaWdodDogJHNpemU7XHJcblxyXG4gICY6YWZ0ZXIsXHJcbiAgJjpiZWZvcmUge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gIH1cclxuXHJcbiAgJjphZnRlciB7XHJcbiAgICBAaW5jbHVkZSB0cmlhbmdsZSgkc2l6ZSwgJGNvbG9yLCAkZGlyZWN0aW9uKTtcclxuICB9XHJcblxyXG4gICY6YmVmb3JlIHtcclxuICAgIEBpbmNsdWRlIHRyaWFuZ2xlKCRiYWNrLXNpemUsICRib3JkZXItY29sb3IsICRkaXJlY3Rpb24pO1xyXG4gICAgJG1pZC1ib3JkZXItd2lkdGg6ICgkYm9yZGVyLXdpZHRoIC8gMik7XHJcbiAgICAkYm9yZGVyLXdpZHRoLWFuZC1taWQ6ICRib3JkZXItd2lkdGggKyAkbWlkLWJvcmRlci13aWR0aDtcclxuXHJcbiAgICBAaWYgKCRhbHQgPT0gdHJ1ZSkge1xyXG4gICAgICAkbWlkLWJvcmRlci13aWR0aDogMDtcclxuICAgICAgJGJvcmRlci13aWR0aC1hbmQtbWlkOiAkYm9yZGVyLXdpZHRoICogMjtcclxuICAgIH1cclxuXHJcbiAgICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IC0gJGJvcmRlci13aWR0aDtcclxuXHJcbiAgICAgIEBpZiAoJGRpcmVjdGlvbiA9PSBkb3duKSB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogLSRtaWQtYm9yZGVyLXdpZHRoO1xyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAtICRib3JkZXItd2lkdGgtYW5kLW1pZDtcclxuICAgICAgfVxyXG5cclxuICAgIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcclxuICAgICAgbWFyZ2luLXRvcDogLSAkYm9yZGVyLXdpZHRoO1xyXG5cclxuICAgICAgQGlmICgkZGlyZWN0aW9uID09IHJpZ2h0KSB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0gJG1pZC1ib3JkZXItd2lkdGg7XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtICRib3JkZXItd2lkdGgtYW5kLW1pZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbkBtaXhpbiBjbG9zZSgkd2lkdGg6MS41cmVtLCAkYmc6I2ZmZil7XHJcbiAgJjpiZWZvcmUsJjphZnRlcntcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDFweDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBiYWNrZ3JvdW5kOiAkYmc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwJSwtNTAlKSByb3RhdGUoLTQ1ZGVnKTtcclxuICB9XHJcbiAgJjphZnRlcntcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAlLC01MCUpIHJvdGF0ZSg0NWRlZyk7XHJcbiAgfVxyXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gIHdpZHRoOiAkd2lkdGg7XHJcbiAgaGVpZ2h0OiAkd2lkdGg7XHJcbiAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbn0iLCIvKiBFcmljIE1leWVyJ3MgQ1NTIFJlc2V0ICovXHJcbmh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcclxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxyXG5hLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXHJcbmRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcclxuc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcclxuYiwgdSwgaSwgY2VudGVyLFxyXG5kbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxyXG5maWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcclxudGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXHJcbmFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxyXG5maWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXHJcbm1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxyXG50aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xyXG5cdG1hcmdpbjogMDtcclxuXHRwYWRkaW5nOiAwO1xyXG5cdGJvcmRlcjogMDtcclxuXHRmb250LXNpemU6IDEwMCU7XHJcblx0Zm9udDogaW5oZXJpdDtcclxuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XHJcbn1cclxuLyogSFRNTDUgZGlzcGxheS1yb2xlIHJlc2V0IGZvciBvbGRlciBicm93c2VycyAqL1xyXG5hcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLFxyXG5mb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtZW51LCBuYXYsIHNlY3Rpb24sIG1haW4ge1xyXG5cdGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcbmJvZHkge1xyXG5cdGxpbmUtaGVpZ2h0OiAxO1xyXG59XHJcbm9sLCB1bCB7XHJcblx0bGlzdC1zdHlsZTogbm9uZTtcclxufVxyXG5ibG9ja3F1b3RlLCBxIHtcclxuXHRxdW90ZXM6IG5vbmU7XHJcbn1cclxuYmxvY2txdW90ZTpiZWZvcmUsIGJsb2NrcXVvdGU6YWZ0ZXIsXHJcbnE6YmVmb3JlLCBxOmFmdGVyIHtcclxuXHRjb250ZW50OiAnJztcclxuXHRjb250ZW50OiBub25lO1xyXG59XHJcbnRhYmxlIHtcclxuXHRib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG5cdGJvcmRlci1zcGFjaW5nOiAwO1xyXG59XHJcbi8qIEVuZCBvZiBFcmljIE1leWVyJ3MgQ1NTIFJlc2V0ICovXHJcblxyXG4qOmZvY3Vze1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi8qIEZvcm1zXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogS25vd24gbGltaXRhdGlvbjogYnkgZGVmYXVsdCwgQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWCBhbGxvdyB2ZXJ5IGxpbWl0ZWRcclxuICogc3R5bGluZyBvZiBgc2VsZWN0YCwgdW5sZXNzIGEgYGJvcmRlcmAgcHJvcGVydHkgaXMgc2V0LlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiAxLiBDb3JyZWN0IGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQuXHJcbiAqICAgIEtub3duIGlzc3VlOiBhZmZlY3RzIGNvbG9yIG9mIGRpc2FibGVkIGVsZW1lbnRzLlxyXG4gKiAyLiBDb3JyZWN0IGZvbnQgcHJvcGVydGllcyBub3QgYmVpbmcgaW5oZXJpdGVkLlxyXG4gKiAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSA1LCBhbmQgQ2hyb21lLlxyXG4gKi9cclxuXHJcbmJ1dHRvbixcclxuaW5wdXQsXHJcbm9wdGdyb3VwLFxyXG5zZWxlY3QsXHJcbnRleHRhcmVhIHtcclxuICBjb2xvcjogaW5oZXJpdDsgLyogMSAqL1xyXG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cclxuICBtYXJnaW46IDA7IC8qIDMgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLlxyXG4gKi9cclxuXHJcbmJ1dHRvbiB7XHJcbiAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBZGRyZXNzIGluY29uc2lzdGVudCBgdGV4dC10cmFuc2Zvcm1gIGluaGVyaXRhbmNlIGZvciBgYnV0dG9uYCBhbmQgYHNlbGVjdGAuXHJcbiAqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXHJcbiAqIENvcnJlY3QgYGJ1dHRvbmAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveCwgSUUgOCssIGFuZCBPcGVyYVxyXG4gKiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3guXHJcbiAqL1xyXG5cclxuYnV0dG9uLFxyXG5zZWxlY3Qge1xyXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2BcclxuICogICAgYW5kIGB2aWRlb2AgY29udHJvbHMuXHJcbiAqIDIuIENvcnJlY3QgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSBgaW5wdXRgIHR5cGVzIGluIGlPUy5cclxuICogMy4gSW1wcm92ZSB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcclxuICogICAgYGlucHV0YCBhbmQgb3RoZXJzLlxyXG4gKi9cclxuXHJcbmJ1dHRvbixcclxuaHRtbCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXHJcbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcclxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cclxuICBjdXJzb3I6IHBvaW50ZXI7IC8qIDMgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuXHJcbiAqL1xyXG5cclxuYnV0dG9uW2Rpc2FibGVkXSxcclxuaHRtbCBpbnB1dFtkaXNhYmxlZF0ge1xyXG4gIGN1cnNvcjogZGVmYXVsdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cclxuICovXHJcblxyXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXHJcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcclxuICBib3JkZXI6IDA7XHJcbiAgcGFkZGluZzogMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZHJlc3MgRmlyZWZveCA0KyBzZXR0aW5nIGBsaW5lLWhlaWdodGAgb24gYGlucHV0YCB1c2luZyBgIWltcG9ydGFudGAgaW5cclxuICogdGhlIFVBIHN0eWxlc2hlZXQuXHJcbiAqL1xyXG5cclxuaW5wdXQge1xyXG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvbid0IGF0dGVtcHQgdG8gc3R5bGUgdGhlc2UgZWxlbWVudHMuXHJcbiAqIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHJlc3BlY3QgYm94LXNpemluZywgcGFkZGluZywgb3Igd2lkdGguXHJcbiAqXHJcbiAqIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkvMTAuXHJcbiAqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuXHJcbiAqL1xyXG5cclxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxyXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cclxuICBwYWRkaW5nOiAwOyAvKiAyICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxyXG4gKiBgZm9udC1zaXplYCB2YWx1ZXMgb2YgdGhlIGBpbnB1dGAsIGl0IGNhdXNlcyB0aGUgY3Vyc29yIHN0eWxlIG9mIHRoZVxyXG4gKiBkZWNyZW1lbnQgYnV0dG9uIHRvIGNoYW5nZSBmcm9tIGBkZWZhdWx0YCB0byBgdGV4dGAuXHJcbiAqL1xyXG5cclxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcclxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIDUgYW5kIENocm9tZS5cclxuICogMi4gQWRkcmVzcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lXHJcbiAqICAgIChpbmNsdWRlIGAtbW96YCB0byBmdXR1cmUtcHJvb2YpLlxyXG4gKi9cclxuXHJcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXHJcbiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcclxuICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAyICovXHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgc2VhcmNoIGNhbmNlbCBidXR0b24gaW4gU2FmYXJpIGFuZCBDaHJvbWUgb24gT1MgWC5cclxuICogU2FmYXJpIChidXQgbm90IENocm9tZSkgY2xpcHMgdGhlIGNhbmNlbCBidXR0b24gd2hlbiB0aGUgc2VhcmNoIGlucHV0IGhhc1xyXG4gKiBwYWRkaW5nIChhbmQgYHRleHRmaWVsZGAgYXBwZWFyYW5jZSkuXHJcbiAqL1xyXG5cclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG59IiwiJWhpZGV7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG4uYmxvY2t7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuLmxlZnR7ZmxvYXQ6IGxlZnQ7fVxyXG4ucmlnaHR7ZmxvYXQ6IHJpZ2h0O31cclxuLnZpc2libGV7b3ZlcmZsb3c6IHZpc2libGUhaW1wb3J0YW50O31cclxuXHJcbi50ZXh0LWNlbnRlcnt0ZXh0LWFsaWduOiBjZW50ZXI7fVxyXG4udGV4dC1yaWdodHt0ZXh0LWFsaWduOiByaWdodDt9XHJcbi5oaWRle2Rpc3BsYXk6IG5vbmUhaW1wb3J0YW50O31cclxuXHJcbi5mdWxsLXdpZHRoe1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uZnVsbC1oZWlnaHR7XHJcbiAgaGVpZ2h0OiAxMDAlXHJcbn1cclxuLmlubGluZS1saXN0e1xyXG4gICYtLXRvcHt2ZXJ0aWNhbC1hbGlnbjogdG9wICFpbXBvcnRhbnQ7fVxyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gID5saXtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7fVxyXG59XHJcblxyXG4ubm8tc2Nyb2xse292ZXJmbG93OiBoaWRkZW47fVxyXG4ubXItYXV0b3ttYXJnaW4tcmlnaHQ6IGF1dG87fVxyXG4ubWwtYXV0b3ttYXJnaW4tbGVmdDogYXV0bzt9XHJcblxyXG4ubXQtMXttYXJnaW4tdG9wOiAxcmVtO31cclxuLm10LTJ7bWFyZ2luLXRvcDogMnJlbTt9XHJcbi5tdC0ze21hcmdpbi10b3A6IDNyZW07fVxyXG4ubXQtNHttYXJnaW4tdG9wOiA0cmVtO31cclxuLm10LTV7bWFyZ2luLXRvcDogNXJlbTt9XHJcbi5tYi0xe21hcmdpbi1ib3R0b206IDFyZW07fVxyXG4ubWItMnttYXJnaW4tYm90dG9tOiAycmVtO31cclxuLm1iLTN7bWFyZ2luLWJvdHRvbTogM3JlbTt9XHJcbi5tYi00e21hcmdpbi1ib3R0b206IDRyZW07fVxyXG4ubWItNXttYXJnaW4tYm90dG9tOiA1cmVtO30iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG5AaW1wb3J0IFwiLi4vLi4vdmFyaWFibGVzXCI7XHJcblxyXG4qIHtcclxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmJvZHl7XHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xyXG4gIC8vZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nO1xyXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLDAsMCwwKTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICBsaW5lLWhlaWdodDogMS4yNTtcclxuICBjb2xvcjogJGNvbG9yLXRleHQ7XHJcbiAgYmFja2dyb3VuZDogJGJnLWNvbG9yO1xyXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1ib2R5O1xyXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcclxuICB0ZXh0LXJlbmRlcmluZzogYXV0bztcclxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcclxuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICAvL3RleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XHJcbiAgLy8tbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczogJ2xpZ2EnO1xyXG4gIC8vLW1zLWZvbnQtZmVhdHVyZS1zZXR0aW5nczogJ2xpZ2EnO1xyXG4gIC8vLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6ICdsaWdhJztcclxuICAvL2ZvbnQtZmVhdHVyZS1zZXR0aW5nczogJ2xpZ2EnO1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtYm9keS1tb2I7XHJcbiAgfVxyXG59XHJcblxyXG5odG1se1xyXG4gIG1pbi1oZWlnaHQ6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGZvbnQtc2l6ZTogJGh0bWwtZm9udC1zaXplICFpbXBvcnRhbnQ7XHJcbiAgLy8td2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkO1xyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpe1xyXG4gICAgZm9udC1zaXplOiA1Mi4wOCUgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KXtcclxuICAgIGZvbnQtc2l6ZTogNTIuNSUgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyNXB4KXtcclxuICAgIGZvbnQtc2l6ZTogNTAlICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxOTIxcHgpe1xyXG4gICAgQG1lZGlhIChtaW4tYXNwZWN0LXJhdGlvOiA0LzMpIHtcclxuICAgICAgZm9udC1zaXplOiBjYWxjKDAuNjI1dncgKiAuODQpICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICBAbWVkaWEgKG1pbi1hc3BlY3QtcmF0aW86IDE3LzEwKSB7XHJcbiAgICAgIC8vZm9udC1zaXplOiBjYWxjKDAuNjI1dncgKiAuODIpICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5he1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICBjb2xvcjogJGNvbG9yLWxpbms7XHJcbiAgJjpob3ZlcntcclxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gIH1cclxufVxyXG5cclxuLnZpc2libGV7b3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDt9XHJcblxyXG4uZnVsbHdpZHRoe1xyXG4gIHdpZHRoOiAxMDAlIWltcG9ydGFudDtcclxuICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcclxufVxyXG4uaGFsZndpZHRoe1xyXG4gIHdpZHRoOiA1MCUhaW1wb3J0YW50O1xyXG59XHJcbi5mdWxsaGVpZ2h0e1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBtaW4taGVpZ2h0OiAxMDAlO1xyXG59XHJcbi50cnVuY2F0ZXtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbn1cclxuXHJcbmltZ3tcclxuICAmLm5vcm1hbHtcclxuICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgbWF4LXdpZHRoOiBub25lO1xyXG4gIH1cclxuICAmLnJlc3BvbnNpdmV7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogYXV0bztcclxuICB9XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbn1cclxuXHJcbi5pbWctZmx1aWR7XHJcbiAgd2lkdGg6IGF1dG87XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaW1nLXJvdW5kZWR7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbn1cclxuXHJcbi5sZWZ0e2Zsb2F0OiBsZWZ0IWltcG9ydGFudDt9XHJcbi5yaWdodHtmbG9hdDogcmlnaHQhaW1wb3J0YW50O31cclxuLnB1bGwtbGVmdCwucHVsbC1yaWdodHtmbG9hdDogbm9uZSFpbXBvcnRhbnQ7fVxyXG5cclxuJWZsZXgtY2VudGVye1xyXG4gIEBpbmNsdWRlIGRpc3BsYXlGbGV4O1xyXG4gIEBpbmNsdWRlIGFsaWduSXRlbXNDZW50ZXI7XHJcbiAgQGluY2x1ZGUganVzdGlmeUNvbnRlbnRDZW50ZXI7XHJcbn1cclxuXHJcbi5mbGV4LWNlbnRlcntcclxuICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcclxufVxyXG5cclxuJWhpZGRlbntcclxuICBvcGFjaXR5OiAwO1xyXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuLy8gIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSAuM3MgZWFzZSk7XHJcbn1cclxuJXZpc2libGV7XHJcbiAgb3BhY2l0eTogMTtcclxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4vLyAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgLjNzIGVhc2UpO1xyXG5cclxufVxyXG5cclxuJWJvb3RyZXN7XHJcbiAgJjpmb2N1cywmLmZvY3Vze1xyXG4gICAgb3V0bGluZS1vZmZzZXQ6MDtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBib3gtc2hhZG93OiBub25lO1xyXG4gIH1cclxufSIsIiIsIkBtaXhpbiBjb2x1bW4tY291bnQoJGNvdW50OjIsICRnYXA6M3JlbSwgJHdpZHRoOmF1dG8sICRicmVhazphdm9pZCl7XHJcbiAgY29sdW1uLWNvdW50OiAkY291bnQ7XHJcbiAgY29sdW1uLWdhcDogJGdhcDtcclxuICBjb2x1bW4td2lkdGg6ICR3aWR0aDtcclxuICA+bGksPmRpdntcclxuICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogJGJyZWFrO1xyXG4gICAgcGFnZS1icmVhay1pbnNpZGU6ICRicmVhaztcclxuICAgIGJyZWFrLWluc2lkZTogJGJyZWFrO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGltYWdlLTJ4KCRpbWFnZSwgJHdpZHRoLCAkaGVpZ2h0KSB7XHJcbiAgQG1lZGlhIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuMyksXHJcbiAgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIuNi8yKSxcclxuICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjMpLFxyXG4gIChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjMpLFxyXG4gIChtaW4tcmVzb2x1dGlvbjogMS4zZHBweCkge1xyXG4gICAgLyogb24gcmV0aW5hLCB1c2UgaW1hZ2UgdGhhdCdzIHNjYWxlZCBieSAyICovXHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJGltYWdlKTtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogJHdpZHRoICRoZWlnaHQ7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gc2Nyb2xsYmFycygkc2l6ZSwgJGZvcmVncm91bmQtY29sb3IsICRiYWNrZ3JvdW5kLWNvbG9yOiBtaXgoJGZvcmVncm91bmQtY29sb3IsIHdoaXRlLCAgNTAlKSkge1xyXG4gIC8vIEZvciBHb29nbGUgQ2hyb21lXHJcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gICAgd2lkdGg6ICAkc2l6ZTtcclxuICAgIGhlaWdodDogJHNpemU7XHJcbiAgfVxyXG5cclxuICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XHJcbiAgICBiYWNrZ3JvdW5kOiAkZm9yZWdyb3VuZC1jb2xvcjtcclxuICB9XHJcblxyXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcclxuICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gIH1cclxuXHJcbiAgLy8gRm9yIEludGVybmV0IEV4cGxvcmVyXHJcbiAgJiB7XHJcbiAgICBzY3JvbGxiYXItZmFjZS1jb2xvcjogJGZvcmVncm91bmQtY29sb3I7XHJcbiAgICBzY3JvbGxiYXItdHJhY2stY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIHRleHRzbGljZSgkbGluZSl7XHJcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAkbGluZTtcclxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbkBtaXhpbiBkaXJlY3Rpb24oJGRpcjpsdHIpe1xyXG4gIEBhdC1yb290IFtkaXI9XCIjeyRkaXJ9XCJdICZ7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbiAgQGF0LXJvb3QgLiN7JGRpcn0gJntcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIG5vZGVjb3J7XHJcbiAgJjpob3Zlcnt0ZXh0LWRlY29yYXRpb246IG5vbmU7fVxyXG59XHJcblxyXG5AbWl4aW4gdHJhbnNpdGlvbmZpeCB7XHJcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xyXG4gIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcclxuXHJcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgLW1vei1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XHJcbn1cclxuXHJcbkBtaXhpbiBmYWRlZC1ib3R0b217XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICY6YWZ0ZXJ7XHJcbiAgICBjb250ZW50OlwiXCI7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGJvdHRvbTogMCA7XHJcbiAgICB6LWluZGV4OiAyMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbGVmdDogMDtcclxuICAgIGhlaWdodDogNnJlbTtcclxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMjU1LDI1NSwyNTUsMSksIHJnYmEoMjU1LDI1NSwyNTUsMCkpO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZhZGVkLXRvcHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgJjpiZWZvcmV7XHJcbiAgICBjb250ZW50OlwiXCI7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMCA7XHJcbiAgICB6LWluZGV4OiAyMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbGVmdDogMDtcclxuICAgIGhlaWdodDogNnJlbTtcclxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMjU1LDI1NSwyNTUsMCksIHJnYmEoMjU1LDI1NSwyNTUsMSkpO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGlubGluZS12LWNlbnRlcntcclxuICAmPip7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gIH1cclxuICAmOmFmdGVye1xyXG4gICAgZm9udC1zaXplOjA7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XHJcbiAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgd2lkdGg6MDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcbn0iLCJAaW1wb3J0IFwiYW5pbWF0ZVwiO1xyXG4vL0BpbXBvcnQgXCJmb250ZmFjZS9faW5kZXhcIjtcclxuQGltcG9ydCBcInR5cG9cIjtcclxuQGltcG9ydCBcImljb25cIjtcclxuQGltcG9ydCBcImxheW91dFwiO1xyXG5AaW1wb3J0IFwiZm9ybS9faW5kZXhcIjtcclxuQGltcG9ydCBcIm5hdlwiO1xyXG5AaW1wb3J0IFwibW9kYWxcIjtcclxuQGltcG9ydCBcInNlY3Rpb25cIjtcclxuQGltcG9ydCBcImJveFwiO1xyXG5AaW1wb3J0IFwiYnRuXCI7XHJcbkBpbXBvcnQgXCJzbGlkZVwiO1xyXG5AaW1wb3J0IFwidGFic1wiO1xyXG5AaW1wb3J0IFwiYmxvZ1wiO1xyXG5AaW1wb3J0IFwicGFnaW5hdGlvblwiO1xyXG5AaW1wb3J0IFwiY3VzdG9tXCI7XHJcbi8vQGltcG9ydCBcIndvb2NvbW1lcmNlXCI7XHJcbi8vQGltcG9ydCBcImJyZWFkY3J1bWJzXCI7XHJcbi8vQGltcG9ydCBcImFjY29yZGlvblwiOyIsIi5vcy1hbmltYXRpb24sIC5vcy1hbmltYXRpb24tYWx3YXlzIHtcclxuICBvcGFjaXR5OiAwO1xyXG4gICYuYW5pbWF0ZWR7b3BhY2l0eTogMTt9XHJcbiAgQGF0LXJvb3QgLmFjdGl2ZSAme1xyXG4gICAgLy9vcGFjaXR5OiAxO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8vLmFuaW1hdGVkLC5hbmltYXRlZFdvdyB7XHJcbi8vICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XHJcbi8vICBhbmltYXRpb24tZHVyYXRpb246IDFzO1xyXG4vLyAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xyXG4vLyAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcclxuLy99XHJcblxyXG4uYW5pbWF0ZWRcclxuLy8sLmFjdGl2ZSAub3MtYW5pbWF0aW9uXHJcbntcclxuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XHJcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcclxuICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XHJcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcclxufVxyXG5cclxuLmFuaW1hdGVkLmluZmluaXRlIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xyXG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xyXG59XHJcblxyXG4uYW5pbWF0ZWQuaGluZ2Uge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcclxuICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xyXG59XHJcbi8qIC5mYWRlT3V0IGlzIHN0eWxlIHRha2VuIGZyb20gQW5pbWF0aW9uLmNzcyBhbmQgdGhpcyBpcyBob3cgaXQgbG9va3MgaW4gb3dsLmNhcm91c2VsLmNzczogICovXHJcbi5mYWRlT3V0ICB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZSA6IGZhZGVPdXQgIDtcclxuICBhbmltYXRpb24tbmFtZSA6IGZhZGVPdXQgIDtcclxufVxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgIGZhZGVPdXQgIHtcclxuICAwJSB7XHJcbiAgICBvcGFjaXR5IDogMSAgIDtcclxuICB9XHJcbiAgMTAwJSB7XHJcbiAgICBvcGFjaXR5IDogMCAgIDtcclxuICB9XHJcbn1cclxuQGtleWZyYW1lcyAgZmFkZU91dCAge1xyXG4gIDAlIHtcclxuICAgIG9wYWNpdHkgOiAxICAgO1xyXG4gIH1cclxuICAxMDAlIHtcclxuICAgIG9wYWNpdHkgOiAwICAgO1xyXG4gIH1cclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbiB7XHJcbiAgZnJvbSB7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgZmFkZUluIHtcclxuICBmcm9tIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgfVxyXG5cclxuICB0byB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gIH1cclxufVxyXG5cclxuLmZhZGVJbiB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZUluO1xyXG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW47XHJcbn1cclxuXHJcbi5wcm9ncmVzcyAge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWUgOiBwcm9ncmVzcztcclxuICBhbmltYXRpb24tbmFtZSA6IHByb2dyZXNzO1xyXG59XHJcbkAtd2Via2l0LWtleWZyYW1lcyAgcHJvZ3Jlc3MgIHtcclxuICAwJSB7XHJcbiAgICB3aWR0aCA6IDA7XHJcbiAgfVxyXG4gIDEwMCUge1xyXG4gICAgd2lkdGggOiAxMDAlO1xyXG4gIH1cclxufVxyXG5Aa2V5ZnJhbWVzICBwcm9ncmVzcyAge1xyXG4gIDAlIHtcclxuICAgIHdpZHRoIDogMDtcclxuICB9XHJcbiAgMTAwJSB7XHJcbiAgICB3aWR0aCA6IDEwMCU7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGZhZGVJbkRvd24ge1xyXG4gIGZyb20ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHRyYW5zZm9ybTogbm9uZTtcclxuICB9XHJcbn1cclxuXHJcbi5mYWRlSW5Eb3duIHtcclxuICBhbmltYXRpb24tbmFtZTogZmFkZUluRG93bjtcclxufVxyXG5cclxuQGtleWZyYW1lcyBmYWRlSW5MZWZ0IHtcclxuICBmcm9tIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIDAsIDApO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHRyYW5zZm9ybTogbm9uZTtcclxuICB9XHJcbn1cclxuXHJcbi5mYWRlSW5MZWZ0IHtcclxuICBhbmltYXRpb24tbmFtZTogZmFkZUluTGVmdDtcclxufVxyXG5cclxuQGtleWZyYW1lcyBmYWRlSW5SaWdodCB7XHJcbiAgZnJvbSB7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcclxuICB9XHJcblxyXG4gIHRvIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB0cmFuc2Zvcm06IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG4uZmFkZUluUmlnaHQge1xyXG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5SaWdodDtcclxufVxyXG5cclxuQGtleWZyYW1lcyBmYWRlSW5VcCB7XHJcbiAgZnJvbSB7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMzAlLCAwKTtcclxuICB9XHJcblxyXG4gIHRvIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB0cmFuc2Zvcm06IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG4uZmFkZUluVXAge1xyXG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5VcDtcclxufVxyXG5cclxuLnNsaWRlLWluLWRvd24ubXVpLWVudGVyIHtcclxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtcztcclxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xyXG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xyXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHksIC13ZWJraXQtdHJhbnNmb3JtO1xyXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTtcclxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIG9wYWNpdHksIC13ZWJraXQtdHJhbnNmb3JtO1xyXG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsgfVxyXG5cclxuLnNsaWRlLWluLWRvd24ubXVpLWVudGVyLm11aS1lbnRlci1hY3RpdmUge1xyXG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxyXG5cclxuXHJcbi5zbGlkZS1vdXQtZG93bi5tdWktbGVhdmUge1xyXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zO1xyXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XHJcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xyXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHksIC13ZWJraXQtdHJhbnNmb3JtO1xyXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTtcclxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIG9wYWNpdHksIC13ZWJraXQtdHJhbnNmb3JtO1xyXG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsgfVxyXG5cclxuLnNsaWRlLW91dC1kb3duLm11aS1sZWF2ZS5tdWktbGVhdmUtYWN0aXZlIHtcclxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7IH0iLCJwe1xyXG4gICY6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOiAwO31cclxuICBtYXJnaW46IDAgMCAycmVtO1xyXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjM2O1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYmFzZTtcclxuICAvL2ZvbnQtd2VpZ2h0OiA1MDA7XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtYm9keS1tb2I7XHJcbiAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gIH1cclxufVxyXG5cclxuc3Ryb25ne1xyXG4gIC8vZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1ib2xkO1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktdGl0bGU7XHJcbiAgZm9udC13ZWlnaHQ6IDcwMDtcclxufVxyXG5cclxuaXtmb250LXN0eWxlOiBpdGFsaWM7fVxyXG5cclxuYXtcclxuICAmOmhvdmVye2NvbG9yOiAkY29sb3ItbGluay1hY3RpdmU7fVxyXG4gIC8vQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciAuMnMpO1xyXG4gIHRyYW5zaXRpb246IGNvbG9yIC4yNXM7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG59XHJcblxyXG5oMSxoMixoMyxoNCxoNSxoNntcclxuICAvL2NvbG9yOiAkY29sb3ItaGVhZGluZztcclxuICBmb250LXdlaWdodDogNzAwO1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktdGl0bGU7XHJcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcclxuICBsaW5lLWhlaWdodDogMS4xNztcclxuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcclxufVxyXG5cclxuaDF7Zm9udC1zaXplOiA0LjRyZW07fVxyXG5oMntmb250LXNpemU6IDRyZW07fVxyXG5oM3tmb250LXNpemU6IDMuNnJlbTt9XHJcbmg0e2ZvbnQtc2l6ZTogM3JlbTt9XHJcbmg1e2ZvbnQtc2l6ZTogMi40cmVtO31cclxuXHJcbnN1cHtcclxuICB2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7XHJcbiAgZm9udC1zaXplOiA2MCU7XHJcbn1cclxuXHJcblxyXG4uc2VjdGlvbi10aXRsZXtcclxuICBAZXh0ZW5kIC50aXRsZS0yO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAxO1xyXG4gIC8vZm9udC1zaXplOiAzcmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS10aXRsZTtcclxuICBjb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgLy90ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjE7XHJcbiAgbWFyZ2luLWJvdHRvbTogM3JlbTtcclxuXHJcbiAgJi5tLWdyb3Vwe1xyXG4gICAgbWFyZ2luLWJvdHRvbTogLjVyZW07XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLmFydGljbGUtdGl0bGV7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgZm9udC1zaXplOiAzcmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS10aXRsZTtcclxuICBjb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjE7XHJcbiAgbWFyZ2luLWJvdHRvbTogM3JlbTtcclxufVxyXG5cclxuLl9ib2xke2ZvbnQtd2VpZ2h0OiA3MDA7fVxyXG4uX3NlbWlib2xke2ZvbnQtd2VpZ2h0OiA2MDA7fVxyXG4uX21lZGl1bXtmb250LXdlaWdodDogNTAwO31cclxuLl9ub3JtYWx7Zm9udC13ZWlnaHQ6IDQwMDt9XHJcblxyXG5bY2xhc3MqPVwidGl0bGUtXCJdLC5zZWN0aW9uLXRpdGxle1xyXG4gICYubWItMXttYXJnaW4tYm90dG9tOiAxcmVtO31cclxuICAmLm1iLTJ7bWFyZ2luLWJvdHRvbTogMnJlbTt9XHJcbiAgJi5tYi0ze21hcmdpbi1ib3R0b206IDNyZW07fVxyXG4gICYubWItNHttYXJnaW4tYm90dG9tOiAzcmVtO31cclxuICAmLm1iLTV7bWFyZ2luLWJvdHRvbTogNXJlbTt9XHJcbiAgJi5tdC0xe21hcmdpbi10b3A6IDFyZW07fVxyXG4gICYubXQtMnttYXJnaW4tdG9wOiAycmVtO31cclxuICAmLm10LTN7bWFyZ2luLXRvcDogM3JlbTt9XHJcbiAgJi5tdC00e21hcmdpbi10b3A6IDNyZW07fVxyXG4gICYubXQtNXttYXJnaW4tdG9wOiA1cmVtO31cclxuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG5cclxuICAmLl9zZW1pYm9sZHtmb250LXdlaWdodDogNjAwO31cclxuICAmLl9tZWRpdW17Zm9udC13ZWlnaHQ6IDUwMDt9XHJcbiAgJi5fbm9ybWFse2ZvbnQtd2VpZ2h0OiA0MDA7fVxyXG5cclxufVxyXG5cclxuJHRpdGxlLTA6IDhyZW07XHJcbiR0aXRsZS0xOiA2cmVtO1xyXG4kdGl0bGUtMjogNC40cmVtO1xyXG4kdGl0bGUtMzogNHJlbTtcclxuJHRpdGxlLTQ6IDMuNnJlbTtcclxuJHRpdGxlLTU6IDMuMnJlbTtcclxuJHRpdGxlLTY6IDIuOHJlbTtcclxuXHJcbi50aXRsZXtcclxuICAmLTB7Zm9udC1zaXplOiAkdGl0bGUtMDt9XHJcbiAgJi0xe2ZvbnQtc2l6ZTogJHRpdGxlLTE7fVxyXG4gICYtMntmb250LXNpemU6ICR0aXRsZS0yO31cclxuICAmLTN7Zm9udC1zaXplOiAkdGl0bGUtMzt9XHJcbiAgJi00e2ZvbnQtc2l6ZTogJHRpdGxlLTQ7fVxyXG4gICYtNXtmb250LXNpemU6ICR0aXRsZS01O31cclxuICAmLTZ7Zm9udC1zaXplOiAkdGl0bGUtNjt9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDkwMHB4KXtcclxuICAgICYtMXtmb250LXNpemU6IDM2cHh9XHJcbiAgfVxyXG5cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpe1xyXG4gICAgJi0we2ZvbnQtc2l6ZTogbWFwX2dldCgkdGl0bGUsIGZzLW1kKTt9XHJcbiAgICAmLTF7Zm9udC1zaXplOiBtYXBfZ2V0KCR0aXRsZSwgZnMtbWQpO31cclxuICAgICYtMntmb250LXNpemU6ICR0aXRsZS0yICogMC44O31cclxuICAgICYtM3tmb250LXNpemU6ICR0aXRsZS0zICogMC44O31cclxuICAgICYtNHtmb250LXNpemU6ICR0aXRsZS00ICogMC44O31cclxuICAgICYtNXtmb250LXNpemU6ICR0aXRsZS01ICogMC44O31cclxuICAgICYtNntmb250LXNpemU6ICR0aXRsZS02ICogMC45O31cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyNXB4KXtcclxuICAgICYtMXtmb250LXNpemU6IDI2cHg7fVxyXG4gICAgJi0ye2ZvbnQtc2l6ZTogMjZweDt9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLnRpdGxlLWdyb3Vwe1xyXG4gIFtjbGFzcz1cInRpdGxlLVwiXSw+c3BhbntcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxufVxyXG5cclxuLnRleHR7XHJcblxyXG4gICYtLXh4bGFyZ2V7Zm9udC1zaXplOiAyLjhyZW07fVxyXG4gICYtLXhsYXJnZXtmb250LXNpemU6IDIuNHJlbTt9XHJcbiAgJi0tbGFyZ2V7Zm9udC1zaXplOiAyLjJyZW07fVxyXG4gICYtLW1lZGl1bXtmb250LXNpemU6IDJyZW07fVxyXG4gICYtLXNtYWxse2ZvbnQtc2l6ZTogMS42cmVtO31cclxuXHJcbiAgJi0tcHJpbWFyeXtcclxuICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgIEBhdC1yb290IHNlY3Rpb24udGV4dC13aGl0ZSAme1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICB9XHJcbiAgICBAYXQtcm9vdCBzLXNlY3Rpb24udGV4dC13aGl0ZSAme1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICB9XHJcbiAgfVxyXG4gICYtLXNlY29uZGFyeXtjb2xvcjogJGNvbG9yLXNlY29uZGFyeTt9XHJcbiAgJi0td2hpdGV7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIC50ZXh0LS1vcGFjaXR5e29wYWNpdHk6IC42O31cclxuICB9XHJcblxyXG4gICYtLWRhcmt7XHJcbiAgICBjb2xvcjogJGNvbG9yLXRleHQ7XHJcbiAgICAqe1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXRleHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLS1ibGFja3tjb2xvcjogIzIyMjIyMjt9XHJcbiAgJi0tYmx1ZXtjb2xvcjogJGNvbG9yLWJsdWU7fVxyXG4gICYtLXJlZHtjb2xvcjogI0ZGMDUwNTt9XHJcbiAgJi0tb3Jhbmdle2NvbG9yOiAkY29sb3Itb3JhbmdlO31cclxuICAmLS15ZWxsb3d7Y29sb3I6ICRjb2xvci15ZWxsb3c7fVxyXG4gICYtLWdyZXl7Y29sb3I6ICRjb2xvci1ncmV5O31cclxuICAmLS1kYXJrZ3JleXtjb2xvcjogJGNvbG9yLWdyZXktYWNjZW50O31cclxuXHJcbiAgJi0tbWFnaWN7XHJcbiAgICAmOmJlZm9yZXtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgbGVmdDowO3RvcDowO1xyXG4gICAgICB3aWR0aDogNXJlbTtcclxuICAgICAgaGVpZ2h0OiA1cmVtO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2ljb24vbWFnaWMuc3ZnKSAwIDAgbm8tcmVwZWF0O1xyXG4gICAgfVxyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgcGFkZGluZy1sZWZ0OiA3LjhyZW07XHJcbiAgICBhe1xyXG4gICAgICAmOmhvdmVye3RleHQtZGVjb3JhdGlvbjogbm9uZTt9XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICYtLXh4bGFyZ2V7Zm9udC1zaXplOiAkZm9udC1zaXplLWJvZHktbW9iO31cclxuICAgICYtLXhsYXJnZXtmb250LXNpemU6ICRmb250LXNpemUtYm9keS1tb2I7fVxyXG4gICAgJi0tbGFyZ2V7Zm9udC1zaXplOiAkZm9udC1zaXplLWJvZHktbW9iO31cclxuICAgICYtLW1lZGl1bXtmb250LXNpemU6ICRmb250LXNpemUtYm9keS1tb2I7fVxyXG4gICAgJi0tc21hbGx7Zm9udC1zaXplOiAxLjZyZW07fVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiVvbHtcclxuICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xyXG4gIG1hcmdpbi1ib3R0b206IDJyZW07XHJcbiAgIGxpe1xyXG4gICAgIGxpbmUtaGVpZ2h0OiAxLjY3O1xyXG4gICAgIG1hcmdpbi10b3A6IC41cmVtO1xyXG4gICAgIG1hcmdpbi1ib3R0b206IC41cmVtO1xyXG4gICAgIG1hcmdpbi1sZWZ0OiAycmVtO1xyXG4gICB9XHJcbiB9XHJcblxyXG4uYXJ0aWNsZXtcclxuXHJcbiAgaDEsaDIsaDMsaDQsaDUsaDZ7Y29sb3I6ICRjb2xvci1oZWFkaW5nO31cclxuXHJcbiAgdWwsJXVse1xyXG4gICAgQGV4dGVuZCAlbGlzdC1kaXNjO1xyXG4gIH1cclxuICBvbCwlb2x7XHJcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xyXG4gICAgbGl7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjY3O1xyXG4gICAgICBtYXJnaW4tdG9wOiAuNXJlbTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogLjVyZW07XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAycmVtO1xyXG4gICAgfVxyXG4gIH1cclxuICBwe1xyXG4gICAgYXtcclxuICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmxpc3QtZGlzYywgJWxpc3QtZGlzY3tcclxuICBsaXN0LXN0eWxlOiBkaXNjO1xyXG4gIGxpe1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMS42N3JlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjY3O1xyXG4gICAgbWFyZ2luLWxlZnQ6IDJyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ubGlzdC1hcnJvdywgJWxpc3QtYXJyb3d7XHJcbiAgbGlzdC1zdHlsZTogbm9uZTtcclxuICBsaXtcclxuICAgICY6YmVmb3Jle1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBsZWZ0Oi0ycmVtO3RvcDouN3JlbTtcclxuICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9pY29uL2Fycm93LWxpc3QtcmlnaHQuc3ZnKSAwIDAgbm8tcmVwZWF0O1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XHJcbiAgICAgIHdpZHRoOiAxLjlyZW07XHJcbiAgICAgIGhlaWdodDogMS42cmVtO1xyXG4gICAgfVxyXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHBhZGRpbmctbGVmdDogMS4zcmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMS42N3JlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjY3O1xyXG4gICAgbWFyZ2luLWxlZnQ6IDJyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ubGlzdC1jb2x1bW57XHJcblxyXG4gICYubGlzdC1kaXNje1xyXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcclxuICAgIGxpe1xyXG4gICAgICAmOmJlZm9yZXtcclxuICAgICAgICBjb250ZW50OiBcIlxcMjAyMlwiO1xyXG4gICAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDEuMmVtO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMS4yZW07XHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICAgICAgIHdpZHRoOiAxLjZyZW07XHJcbiAgICAgICAgICBtYXJnaW4tbGVmdDogLTJyZW07XHJcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBjb2x1bW4tY291bnQoMiwgNnJlbSk7XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pe1xyXG4gICAgQGluY2x1ZGUgY29sdW1uLWNvdW50KDIsIDNyZW0pO1xyXG4gIH1cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgQGluY2x1ZGUgY29sdW1uLWNvdW50KDEsIDByZW0pO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi5hYm91dC10aXRsZXtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIEBleHRlbmQgLnRleHQtLXhsYXJnZTtcclxufVxyXG4udGV4dC1jZW50ZXItLXNte1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIhaW1wb3J0YW50O1xyXG4gIH1cclxufSIsIi5pY29uLXBsYXl7XHJcbiAgZm9udC1zaXplOiAxMHB4O1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9pY29uL3BsYXkuc3ZnKSAwIDAgbm8tcmVwZWF0O1xyXG4gIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuICB3aWR0aDogNy4zZW07XHJcbiAgaGVpZ2h0OiAxMC4yZW07XHJcbn1cclxuXHJcbi5pY29uLXN2Zy1iYW5rLXJlcG9ydHtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGJhY2tncm91bmQ6IHVybCguLi9pbWcvY29tbW9uL2ljb24vYmFuay1yZXBvcnQuc3ZnKSAwIDAgbm8tcmVwZWF0O1xyXG4gIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuICB3aWR0aDogNy4zZW07XHJcbiAgaGVpZ2h0OiAxMC4yZW07XHJcbn1cclxuXHJcbi5pY29uLW1pbnVze1xyXG4gIGZvbnQtc2l6ZTogMTAwJTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgYmFja2dyb3VuZDogY3VycmVudENvbG9yO1xyXG4gIHdpZHRoOiAxLjVlbTtcclxuICBoZWlnaHQ6IDAuNmVtO1xyXG4gIGNvbG9yOiBjdXJyZW50Q29sb3I7XHJcbn1cclxuIiwiQGltcG9ydCBcImhlYWRlclwiO1xyXG5AaW1wb3J0IFwiZm9vdGVyXCI7XHJcblxyXG4ubC1tYWlue1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgLy9wYWRkaW5nLWJvdHRvbTogO1xyXG59XHJcblxyXG4uY29udGFpbmVyLC5jb250YWluZXItZmx1aWR7XHJcbiAgbWF4LXdpZHRoOiAkY29udGFpbmVyLXdpZHRoO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHBhZGRpbmctbGVmdDogMzBweDtcclxuICBwYWRkaW5nLXJpZ2h0OiAzMHB4O1xyXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gIG1hcmdpbi1yaWdodDogYXV0bztcclxuXHJcbiAgJi0tbWR7XHJcbiAgICBtYXgtd2lkdGg6IDEwMnJlbTtcclxuICB9XHJcblxyXG5cclxuICAmLS1uYXJyb3d7XHJcbiAgfVxyXG5cclxuICAmLS1wYWRkaW5ne1xyXG4gICAgLy9wYWRkaW5nLWxlZnQ6IDMwcHg7XHJcbiAgICAvL3BhZGRpbmctcmlnaHQ6IDMwcHg7XHJcbiAgfVxyXG5cclxuICA+IC5yb3c6bm90KC5zbWFsbC1jb2xsYXBzZSl7XHJcbiAgICBtYXJnaW4tbGVmdDogLTEuNXJlbTtcclxuICAgIG1hcmdpbi1yaWdodDogLTEuNXJlbTtcclxuXHJcbiAgICAmLnJvdy0td2lkZXtcclxuICAgICAgbWFyZ2luLWxlZnQ6IC0zMHB4O1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IC0zMHB4O1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5yb3d7XHJcbiAgJjpiZWZvcmUsJjphZnRlcntcclxuICAgIC8vZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gIC5yb3d7XHJcbiAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIG1hcmdpbi1yaWdodDogMDtcclxuICB9XHJcbiAgLy9wYWRkaW5nLWxlZnQ6IDEuNXJlbTtcclxuICAvL3BhZGRpbmctcmlnaHQ6IDEuNXJlbTtcclxuICAvL21heC13aWR0aDogMTAyLjRyZW07XHJcblxyXG4gICYtLW5hcnJvd3tcclxuICAgIG1hcmdpbi1sZWZ0OiAtNnB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAtNnB4O1xyXG4gICAgPi5jb2wsW2NsYXNzXj1cImNvbC1cIl17XHJcbiAgICAgIHBhZGRpbmctbGVmdDogNnB4O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA2cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLS13aWRle1xyXG4gICAgbWFyZ2luLWxlZnQ6IC0zMHB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAtMzBweDtcclxuICAgID4uY29sLFtjbGFzc149XCJjb2wtXCJdLD4uY29sdW1ue1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLS1saXN0e1xyXG4gICAgPi5jb2wsW2NsYXNzXj1cImNvbC1cIl0sPi5jb2x1bW57XHJcbiAgICAgIHBhZGRpbmctdG9wOiAxLjVyZW07XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLS1zZWN0aW9ue1xyXG4gICAgbWFyZ2luLXRvcDogNXJlbTtcclxuICB9XHJcblxyXG59XHJcblxyXG4uc3RpY2t5LWNvbnRhaW5lciArIC5sLW1haW57cG9zaXRpb246IHN0YXRpYzt9XHJcblxyXG4ubC13cmFwcGVye1xyXG4gIGJhY2tncm91bmQ6ICRiZy1jb2xvcjtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbWluLWhlaWdodDogMSU7XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgJi5tZW51LWlzLW9wZW57XHJcbiAgICAmOmFmdGVye1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgbWFpbntcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIH1cclxuICBAaW5jbHVkZSBkaXNwbGF5RmxleDtcclxuICBAaW5jbHVkZSBmbGV4RGlyZWN0aW9uQ29sKCk7XHJcbiAgbWluLWhlaWdodDogMTAwdmg7XHJcbiAgLmwtbWFpbntcclxuICAgIC8vQGluY2x1ZGUgZmxleDEtMS0xMDA7XHJcbiAgICBmbGV4OiAxO1xyXG4gICAgLXdlYmtpdC1mbGV4OiAxIDEgYXV0bztcclxuICAgIC1tcy1mbGV4OiAxIDEgYXV0bztcclxuICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBzdHJldGNoO1xyXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaDtcclxuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XHJcbiAgfVxyXG59XHJcblxyXG4ubC1oZWFkZXJ7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbi5sLWZvb3RlcntcclxuICBkaXNwbGF5OiBibG9jaztcclxuICB3aWR0aDogMTAwJTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4uYXNpZGUtbWFpbi1tZW51e1xyXG4gICYuaXMtYWN0aXZle1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLDAsMCk7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gICAgLy9vcGFjaXR5OiAxO1xyXG4gIH1cclxuICB3aWxsLWNoYW5nZTogLXdlYmtpdC10cmFuc2Zvcm07XHJcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgei1pbmRleDogMTk5O1xyXG4gIHRvcDogMDtcclxuICByaWdodDogMDtcclxuICBjb2xvcjogI2ZmZjtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC45KTtcclxuICAvL2JhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6IDMyMHB4O1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBtaW4taGVpZ2h0OiAxMDB2aDtcclxuICBwYWRkaW5nOiAzcmVtO1xyXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAvL29wYWNpdHk6IDA7XHJcbiAgb3ZlcmZsb3cteTogYXV0bztcclxuICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xyXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjVzIGN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKSxcclxuICB2aXNpYmlsaXR5IDAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpLFxyXG4gIG9wYWNpdHkgLjRzIGN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKTtcclxuICAvL3RyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwwLDApO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsMCUsMCk7XHJcblxyXG4gIC8vICBuYXZcclxuICAmX19uYXZ7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBmb250LXNpemU6IDEuODc1cmVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcclxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xyXG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcclxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICBAaW5jbHVkZSBkaXNwbGF5RmxleDtcclxuICAgIEBpbmNsdWRlIGFsaWduSXRlbXNDZW50ZXI7XHJcbiAgICAvL0BpbmNsdWRlIGp1c3RpZnlDb250ZW50Q2VudGVyO1xyXG4gICAgdWx7XHJcbiAgICAgIC8vdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgbGl7XHJcbiAgICAgICAgbWFyZ2luOiAuMmVtIDA7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgJjpsYXN0LWNoaWxke1xyXG4gICAgICAgICAgYXttYXJnaW4tYm90dG9tOiAwO31cclxuICAgICAgICB9XHJcbiAgICAgICAgYXtcclxuICAgICAgICAgICY6aG92ZXIsICYuaXMtYWN0aXZle1xyXG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xyXG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxLjJlbTtcclxuICAgICAgICAgIC8vbGV0dGVyLXNwYWNpbmc6IDAuMmVtO1xyXG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnZoO1xyXG4gICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgICAgICAgIC8vYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmZmY7XHJcbiAgICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIC4zcyBlYXNlO1xyXG5cclxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCl7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjZweDtcclxuICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IDQwMHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpe1xyXG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpe1xyXG4gICAgICAgICAgICAvL3RleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogNXZ3O1xyXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyLjV2aDtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcclxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcclxuICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IDQwMHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpe1xyXG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX3dycHtcclxuICAgIHBhZGRpbmctdG9wOiA2cmVtO1xyXG4gIH1cclxuXHJcbiAgLmItaGVhZGVyX19zZWFyY2h7XHJcbiAgICBkaXNwbGF5OiBibG9jayFpbXBvcnRhbnQ7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAydmg7XHJcblxyXG4gICAgJi1mb3Jte1xyXG4gICAgICAuYnRuLXNlYXJjaHtcclxuICAgICAgICAmOmhvdmVye2NvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O31cclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLm1lbnUtaWNvbi5idXJnZXJ7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICByaWdodDogMS41cmVtO3RvcDoxLjVyZW07XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIHNwYW57Y29sb3I6ICNmZmY7fVxyXG4gICAgJjpiZWZvcmUsJjphZnRlcntjb2xvcjogI2ZmZjt9XHJcbiAgfVxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCl7XHJcbiAgICAmX19uYXZ7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA1cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NDBweCl7XHJcbiAgICAmX19uYXZ7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAydmg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLm92ZXJsYXl7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgbGVmdDogMDtcclxuICB0b3A6IDA7XHJcbiAgei1pbmRleDogMTk5O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44NSk7XHJcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIG9wYWNpdHk6IDA7XHJcbiAgQGF0LXJvb3QgLm1lbnUtaXMtb3BlbiAme1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC41cyBjdWJpYy1iZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSk7XHJcbiAgfVxyXG4gIEBhdC1yb290IC5zaWRlYmFyLWlzLW9wZW4gJntcclxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO1xyXG4gIH1cclxufVxyXG4iLCIuYi1oZWFkZXJ7XHJcbiAgJi5tLWZpeGVke1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgei1pbmRleDogOTk7XHJcbiAgICBsZWZ0OiAwO3RvcDowO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIC5iLWhlYWRlcl9fd3JwPi5yb3d7XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIH1cclxuICB9XHJcbiAgJi5tLWFic3tcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGxlZnQ6MDt0b3A6MDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgei1pbmRleDogOTk7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuXHJcbiAgICAuYi1sb2dve1xyXG4gICAgICAvL2JhY2tncm91bmQtY29sb3I6ICRiZy1jb2xvcjtcclxuICAgICAgLy9iYWNrZ3JvdW5kLWJsZW5kLW1vZGU6IGxpZ2h0ZW47XHJcbiAgICB9XHJcbiAgICAuYi1oZWFkZXJfX3dycD4ucm93e1xyXG4gICAgICAvL21heC13aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIC5zdGlja3ksJi5zdGlja3l7XHJcbiAgICAmLmlzLXN0dWNre1xyXG4gICAgICAvL2JhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1iZy1oZWFkZXI7XHJcbiAgICAgIC8vcGFkZGluZzogMDtcclxuICAgICAgLmJ1cmdlcntcclxuICAgICAgICAvL3NwYW4sJjpiZWZvcmUsJjphZnRlcntjb2xvcjogJGNvbG9yLXRleHQ7fVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4zcyBlYXNlLCBwYWRkaW5nIC4zcyBlYXNlO1xyXG4gIH1cclxuXHJcbiAgLy9mb250LXNpemU6IDEwcHg7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci1iZy1oZWFkZXI7XHJcbiAgY29sb3I6ICRjb2xvci1oZWFkZXI7XHJcblxyXG4gICp7XHJcbiAgICBjb2xvcjogJGNvbG9yLWhlYWRlcjtcclxuICB9XHJcblxyXG4gICZfX2NvbnRhaW5lciwuY29udGFpbmVyLCZfX3Jvd3tcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICB9XHJcblxyXG4gICZfX3dycHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcGFkZGluZy10b3A6IDEuOXJlbTtcclxuICAgIHBhZGRpbmctYm90dG9tOiAxLjlyZW07XHJcbiAgfVxyXG5cclxuICAmX19yb3d7XHJcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSArIDNyZW0pO1xyXG4gIH1cclxuXHJcbiAgJl9fbWVudXtcclxuICAgIC8vdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgLy9mbGV4OiAxO1xyXG4gIH1cclxuXHJcbiAgLmItbG9nb3tcclxuICAgIGltZ3tcclxuICAgICAgbWF4LXdpZHRoOiAxOS41cmVtO1xyXG4gICAgfVxyXG4gICAgLl9zaG93LW9uLXNjcm9sbHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuICAgIC5fc2hvdy1vbi1tZW51e1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fbWVudS1uYXZ7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG4gICAgPnVse1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG5cclxuICAgICAgPmxpe1xyXG5cclxuICAgICAgICAmLmN1cnJlbnQsICYuaXMtYWN0aXZlLCAmOmhvdmVye1xyXG4gICAgICAgICAgPmF7XHJcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3Itb3JhbmdlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5tYWdpYy1pdGVte1xyXG4gICAgICAgICAgJjpiZWZvcmV7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgIGxlZnQ6IDAuNXJlbTtcclxuICAgICAgICAgICAgdG9wOiAtMS44cmVtO1xyXG4gICAgICAgICAgICB3aWR0aDogMi44cmVtO2hlaWdodDogMi44cmVtO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2ljb24vbWFnaWMuc3ZnKSA1MCUgNTAlIG5vLXJlcGVhdDtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgJi5pcy1hY3RpdmV7XHJcbiAgICAgICAgICAgID5he1xyXG4gICAgICAgICAgICAgICY6YWZ0ZXJ7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OicnO1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICAvL3dpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgbGVmdDoxLjVyZW07cmlnaHQ6IDEuNXJlbTtcclxuICAgICAgICAgICAgICAgIGJvdHRvbTotLjVyZW07XHJcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQ7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgICAvL3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgPiBhe1xyXG4gICAgICAgICAgICAvL2NvbG9yOiAkY29sb3Itb3JhbmdlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpob3ZlcntcclxuICAgICAgICAgID4gYXtcclxuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1vcmFuZ2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhe1xyXG4gICAgICAgICAgc3BhbntcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogODAlO1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAuODtcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgICAgIC8vZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgICAgICAgLy9zcGFue2ZvbnQtd2VpZ2h0OiBub3JtYWw7fVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGluY2x1ZGUgbm9kZWNvcjtcclxuICAgICAgICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XHJcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vbWFyZ2luLWxlZnQ6IDVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2F1dGh7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgZm9udC1zaXplOiAxLjZyZW07XHJcbiAgICBhe1xyXG4gICAgICBjb2xvcjogJGNvbG9yLWdyZXkyO1xyXG4gICAgICAvL2NvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYnVyZ2Vye1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAyLjdyZW07XHJcbiAgICByaWdodDogM3JlbTtcclxuICB9XHJcblxyXG4gIC8vIHRoZW1lXHJcbiAgJi0teWVsbG93e1xyXG5cclxuICAgIGNvbG9yOiAjZmZmO1xyXG5cclxuICAgIC5tZW51LWljb24uYnVyZ2Vye1xyXG4gICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgJjpiZWZvcmUsICY6YWZ0ZXJ7XHJcbiAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgIH1cclxuICAgICAgKntcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5iLWhlYWRlcntcclxuICAgICAgJl9fYXV0aHtcclxuICAgICAgICBhe1xyXG4gICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgJl9fbWVudS1uYXZ7XHJcbiAgICAgICAgPnVse1xyXG4gICAgICAgICAgPmxpe1xyXG4gICAgICAgICAgICAmLmlzLWFjdGl2ZSwgJi5jdXJyZW50LCAmOmhvdmVye1xyXG4gICAgICAgICAgICAgICY+IGF7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLW9yYW5nZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJi5pcy1hY3RpdmV7XHJcbiAgICAgICAgICAgICAgPiBhe1xyXG4gICAgICAgICAgICAgICAgJjphZnRlcntcclxuICAgICAgICAgICAgICAgICAgY29udGVudDonJztcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgICAgLy93aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICAgICAgbGVmdDoxLjVyZW07cmlnaHQ6IDEuNXJlbTtcclxuICAgICAgICAgICAgICAgICAgYm90dG9tOi0uNXJlbTtcclxuICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgICAgICAvL3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAmLm1hZ2ljLWl0ZW17XHJcbiAgICAgICAgICAgICAgPiBhe1xyXG4gICAgICAgICAgICAgICAgLy9jb2xvcjogJGNvbG9yLW9yYW5nZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPiBhe1xyXG4gICAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgICAgICAgIC8vcGFkZGluZy10b3A6IC41cmVtO1xyXG4gICAgICAgICAgICAgIC8vcGFkZGluZy1ib3R0b206IC41cmVtO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmW2NsYXNzKj1cIm5hdi1cIl17XHJcbiAgICAmLm0tYWJze1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcblxyXG4gICAgICAmLmxwLWhlYWRlcntcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgICAgICAuYi1sb2dvIGltZ3tcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgJi5fc2hvdy1vbi1zY3JvbGx7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICB0b3A6MDtsZWZ0OjA7XHJcblxyXG4gICAgLmItbG9nb3tcclxuICAgICAgaW1ne1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgJi5fc2hvdy1vbi1zY3JvbGx7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAubWVudS1pY29uLmJ1cmdlcntcclxuICAgICAgY29sb3I6ICMwMDA7XHJcbiAgICAgICY6YmVmb3JlLCAmOmFmdGVye1xyXG4gICAgICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgICB9XHJcbiAgICAgICp7XHJcbiAgICAgICAgY29sb3I6ICMwMDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBhdC1yb290IC5pcy1tZW51LW9wZW4gJntcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICAmOmJlZm9yZSwgJjphZnRlcntcclxuICAgICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgIH1cclxuICAgICAgICAqe1xyXG4gICAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmItaGVhZGVyX19hdXRoe1xyXG4gICAgICBhe1xyXG4gICAgICAgIGNvbG9yOiAjODg4ODg4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmItaGVhZGVyX19tZW51LW5hdntcclxuICAgICAgdWw+bGl7XHJcblxyXG4gICAgICAgICYuaXMtYWN0aXZle1xyXG4gICAgICAgICAgYXtcclxuICAgICAgICAgICAgJjphZnRlcntjb2xvcjogJGNvbG9yLW9yYW5nZTt9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAmLm1hZ2ljLWl0ZW17XHJcbiAgICAgICAgICAgIGF7XHJcbiAgICAgICAgICAgICAgJjphZnRlcntjb2xvcjogJGNvbG9yLW9yYW5nZTt9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubWFnaWMtaXRlbXtcclxuXHJcbiAgICAgICAgICBhe1xyXG4gICAgICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgICAgIC8vY29sb3I6ICRjb2xvci1vcmFuZ2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9jb2xvcjogJGNvbG9yLW9yYW5nZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGF7XHJcbiAgICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLW9yYW5nZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbG9yOiAjMDAwMDAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pe1xyXG4gICAgLmNvbHVtbjpsYXN0LW9mLXR5cGV7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDZyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgJl9fYXV0aCwmX19jYWxsYmFja3tkaXNwbGF5OiBub25lO31cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyNXB4KXtcclxuICAgIC5idXJnZXJ7cmlnaHQ6IDIwcHg7fVxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4uaXMtbWVudS1vcGVue1xyXG5cclxuICBvdmVyZmxvdzogaGlkZGVuIWltcG9ydGFudDtcclxuXHJcbiAgLmItaGVhZGVye1xyXG5cclxuICAgICZbY2xhc3MqPVwibmF2LVwiXXtcclxuICAgICAgJi5tLWFic3tcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjMjIyMjIyO1xyXG4gICAgICB9XHJcbiAgICAgIGJhY2tncm91bmQ6ICMyMjIyMjI7XHJcbiAgICAgIC5iLWhlYWRlcl9fbWVudS1uYXZ7XHJcbiAgICAgICAgdWw+bGl7XHJcbiAgICAgICAgICAmOm5vdCgubWFnaWMtaXRlbSl7XHJcbiAgICAgICAgICAgIGF7XHJcbiAgICAgICAgICAgICAgY29sb3I6ICNmZmZmO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhe1xyXG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLW9yYW5nZTtcclxuICAgICAgICAgICAgY29sb3I6ICNmZmZmO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZfX2xvZ297XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgfVxyXG5cclxuICAgIC5iLWxvZ297XHJcbiAgICAgIGltZ3tcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICYuX3Nob3ctb24tc2Nyb2xse1xyXG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgJi5fc2hvdy1vbi1tZW51e1xyXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLXllbGxvdztcclxuICAgIGJhY2tncm91bmQ6ICMyMjIyMjI7XHJcbiAgICBib3gtc2hhZG93OiAkYnRuLXNoYWRvdztcclxuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcclxuICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICBtYXgtaGVpZ2h0OiAxMDB2aDtcclxuXHJcbiAgICAuY29sdW1uOmxhc3Qtb2YtdHlwZXtcclxuICAgICAgcGFkZGluZy1yaWdodDogMDtcclxuICAgIH1cclxuICB9XHJcbiAgLmItaGVhZGVyX19tZW51e1xyXG4gICAgZGlzcGxheTogYmxvY2shaW1wb3J0YW50O1xyXG4gICAgLy9wb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAvL3RvcDogMTAwJTtcclxuICAgIGxlZnQ6MDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLXllbGxvdztcclxuICAgIGJhY2tncm91bmQ6ICMyMjIyMjI7XHJcbiAgfVxyXG4gIC5tZW51LWljb24uYnVyZ2Vye1xyXG4gICAgJjpiZWZvcmUsJjphZnRlcntcclxuICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICB9XHJcbiAgICBzcGFue1xyXG4gICAgICAmOmJlZm9yZSwmOmFmdGVye1xyXG4gICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgfVxyXG4gIH1cclxuICAuYi1oZWFkZXJfX21lbnUtbmF2e1xyXG4gICAgdWw+bGl7XHJcbiAgICAgIGF7XHJcbiAgICAgICAgY29sb3I6ICNmZmZmO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5iLWhlYWRlcl9fYXV0aHtcclxuICAgIGRpc3BsYXk6IGJsb2NrIWltcG9ydGFudDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgZm9udC1zaXplOiAyLjRyZW07XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjRweCkge1xyXG4gICAgICBmb250LXNpemU6IDV2dztcclxuICAgIH1cclxuICB9XHJcbiAgLmItaGVhZGVyX19jYWxsYmFja3tcclxuICAgIGRpc3BsYXk6IGJsb2NrIWltcG9ydGFudDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLXRvcDogMXZoO1xyXG4gICAgLmJ0bntcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgZm9udC1zaXplOiAycmVtO1xyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjRweCkge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogNXZ3O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5iLWhlYWRlcl9fd3Jwe1xyXG4gICAgcGFkZGluZy1ib3R0b206IDMwcHg7XHJcbiAgfVxyXG4gIC5iLWhlYWRlcl9fYXV0aC1pdG17XHJcbiAgICBwYWRkaW5nLXRvcDogLjV2aDtcclxuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xyXG4gICAgcGFkZGluZy1ib3R0b206IC41dmg7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcclxuICAgIG1pbi1oZWlnaHQ6IDUwcHg7XHJcbiAgICBhe1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5iLWhlYWRlcl9fbWVudS1uYXZ7XHJcbiAgICBwYWRkaW5nLXRvcDogM3JlbTtcclxuICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gICAgdWx7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGxpe1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IC41dmg7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDFyZW07XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IC41dmg7XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDFyZW07XHJcbiAgICAgICAgJi5tYWdpYy1pdGVte1xyXG4gICAgICAgICAgJjpiZWZvcmV7XHJcbiAgICAgICAgICAgIHRvcDogLTAuNzVyZW07XHJcbiAgICAgICAgICAgIGxlZnQ6IDAuNXJlbTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYXtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMi40cmVtO1xyXG4gICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDI0cHgpIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiA1dnc7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0iLCIuYi1mb290ZXJ7XHJcblxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci1iZy1mb290ZXI7XHJcbiAgY29sb3I6ICRjb2xvci1mb290ZXI7XHJcbiAgZm9udC1zaXplOiAkZm9vdGVyLXNpemU7XHJcbiAgcGFkZGluZzogJGZvb3Rlci1wYWRkaW5nLXkgMDtcclxuXHJcbiAgJl9fY29udGFpbmVyLC5jb250YWluZXJ7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG5cclxuICAmX19yb3d7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG5cclxuICBwe1xyXG4gICAgZm9udC1zaXplOiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgKntcclxuICAgIC8vY29sb3I6ICRjb2xvci1mb290ZXI7XHJcbiAgfVxyXG5cclxuICBhe2NvbG9yOmN1cnJlbnRDb2xvcjt9XHJcblxyXG4gICZfX25hdntcclxuICAgIHVse1xyXG4gICAgICBtYXJnaW4tbGVmdDogLTEuNXJlbTtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtO1xyXG4gICAgICBsaXtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XHJcbiAgICAgICAgYXtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX3NvY2lhbHtcclxuXHJcbiAgICAuc29jaWFsLWlubGluZXtcclxuICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fbWVudXtcclxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIC5zb2NpYWwtaW5saW5le1xyXG4gICAgICAmOmZpcnN0LW9mLXR5cGV7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAzcmVtO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OjA7XHJcbiAgICAgIH1cclxuICAgICAgbWFyZ2luLWxlZnQ6IDNyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuc29jaWFsLWlubGluZXtcclxuICAgIHBhZGRpbmctYm90dG9tOiAuNnJlbTtcclxuICAgIGF7XHJcbiAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgb3BhY2l0eTogLjc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQodGFibGV0KXtcclxuICAgICZfX2NvcHl7XHJcbiAgICAgICY6YmVmb3Jle1xyXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBsZWZ0OjByZW07XHJcbiAgICAgICAgdG9wOjA7XHJcbiAgICAgICAgd2lkdGg6IDRyZW07aGVpZ2h0OiA0cmVtO1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvbG9nby1mb290ZXIuc3ZnKSAwIDAgbm8tcmVwZWF0O1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuICAgICAgfVxyXG4gICAgICAmLmNvbHVtbntcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDZyZW07XHJcbiAgICAgIH1cclxuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgcGFkZGluZy1sZWZ0OiA2cmVtO1xyXG4gICAgICBtaW4taGVpZ2h0OiA0cmVtO1xyXG5cclxuXHJcbiAgICAgICYuX25vLWxvZ297XHJcbiAgICAgICAgJjpiZWZvcmV7XHJcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmLmNvbHVtbntcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDogMHJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pe1xyXG4gICAgJl9fY29weSwmX19tZW51e1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICB9XHJcbiAgICAmX19tZW51e1xyXG4gICAgICBvcmRlcjogLTE7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgIH1cclxuXHJcbiAgICAmX19uYXZ7XHJcbiAgICAgICY6YmVmb3Jle1xyXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBsZWZ0Oi02cmVtO1xyXG4gICAgICAgIHRvcDowO1xyXG4gICAgICAgIHdpZHRoOiA0cmVtO2hlaWdodDogNHJlbTtcclxuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2xvZ28tZm9vdGVyLnN2ZykgMCAwIG5vLXJlcGVhdDtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XHJcbiAgICAgIH1cclxuICAgICAgb3JkZXI6IC0xO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiA2cmVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5zb2NpYWwtaW5saW5le1xyXG4gICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIC8vb3JkZXI6IGxhc3Q7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgLy9wYWRkaW5nLWJvdHRvbTogOHJlbTtcclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyNXB4KXtcclxuICAgICZfX2NvcHl7XHJcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICB9XHJcbiAgICAmX19tZW51e1xyXG4gICAgICAuc29jaWFsLWlubGluZXtcclxuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgICAgICY6Zmlyc3Qtb2YtdHlwZXtcclxuICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgICZfX25hdntcclxuICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xyXG4gICAgICB1bHtcclxuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgICAgIEBpbmNsdWRlIGNvbHVtbi1jb3VudCgyKTtcclxuICAgICAgICBsaXtcclxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgcGFkZGluZy10b3A6IC41cmVtO1xyXG4gICAgICAgICAgcGFkZGluZy1ib3R0b206IC41cmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn0iLCJAaW1wb3J0IFwiZm9ybVwiO1xyXG4vL0BpbXBvcnQgXCJjaGVja2JveFwiO1xyXG4vL0BpbXBvcnQgXCJyYWRpb1wiOyIsIiRpbnB1dC13aWR0aDogMTdweDtcclxuJGlucHV0LWhlaWdodDogNHJlbTtcclxuJGxhYmVsLXBhZGRpbmc6ICRpbnB1dC13aWR0aCArIDhweDtcclxuJHJhZGlvLWVtcHR5LWNvbG9yOiAkY29sb3ItYm9yZGVyO1xyXG4kcmFkaW8tZmlsbC1jb2xvcjogJGNvbG9yLWJsdWU7XHJcbiRpbnB1dC1kaXNhYmxlZC1jb2xvcjogJGNvbG9yLWdyZXk7XHJcbiRpbnB1dC1kaXNhYmxlZC1zb2xpZC1jb2xvcjogJGNvbG9yLWdyZXk7XHJcbiRpbnB1dC1iZy1jb2xvcjogJGNvbG9yLWJvcmRlcjtcclxuJHNlY29uZGFyeS1jb2xvcjogJGNvbG9yLW9yYW5nZTtcclxuXHJcbi8vIFRleHQgaW5wdXRzXHJcbmlucHV0W3R5cGU9dGV4dF0sXHJcbmlucHV0W3R5cGU9cGFzc3dvcmRdLFxyXG5pbnB1dFt0eXBlPWVtYWlsXSxcclxuaW5wdXRbdHlwZT11cmxdLFxyXG5pbnB1dFt0eXBlPXRpbWVdLFxyXG5pbnB1dFt0eXBlPWRhdGVdLFxyXG5pbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXSxcclxuaW5wdXRbdHlwZT10ZWxdLFxyXG5pbnB1dFt0eXBlPW51bWJlcl0sXHJcbmlucHV0W3R5cGU9c2VhcmNoXSxcclxuaW5wdXRbdHlwZT1maWxlXSxcclxudGV4dGFyZWEsLndwY2Y3LWZvcm0tY29udHJvbDpub3QoLndwY2Y3LWNoZWNrYm94KTpub3QoLndwY2Y3LXJhZGlvKVxyXG57XHJcbiAgLy8gR2VuZXJhbCBTdHlsZXNcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1ib3JkZXItaW5wdXQ7XHJcbiAgLy9ib3JkZXI6IG1lZGl1bSBub25lO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWJhc2U7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XHJcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgY29sb3I6ICRjb2xvci10ZXh0O1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbGlnaHQ7XHJcbiAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICBwYWRkaW5nOiAwIDEuMnJlbTtcclxuICBtYXJnaW4tYm90dG9tOiAycmVtO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlciAuM3MgZWFzZSwgYm94LXNoYWRvdyAuM3MgZWFzZTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgQGluY2x1ZGUgZm9ybS1wbGFjZWhvbGVyKCl7XHJcbiAgICBjb2xvcjogJGNvbG9yLWJvcmRlci1pbnB1dDtcclxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWxpZ2h0O1xyXG4gICAgLy9mb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgfVxyXG4gICY6aG92ZXIsJjpmb2N1c3tcclxuICAgIC8vYm94LXNoYWRvdzogbm9uZTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gIH1cclxuICAmLmlubGluZXtcclxuICAgIHdpZHRoOiBhdXRvO1xyXG4gIH1cclxuICAmLmlzLWVycm9yLCAmLmhhcy1lcnJvcntcclxuICAgIGNvbG9yOiAkY29sb3ItcmVkLWZvcm07XHJcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1yZWQtZm9ybTtcclxuICAgIC5yZXF1aXJlZC1pY257b3BhY2l0eTogMTt9XHJcbiAgfVxyXG4gIEBhdC1yb290IC5oYXMtZXJyb3IgJntcclxuICAgICY6aG92ZXIsJjpmb2N1c3tcclxuICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICAgICAgLy9ib3JkZXI6IDFweCBzb2xpZCAjZTJlMmUyO1xyXG4gICAgfVxyXG4gICAgLnJlcXVpcmVkLWljbntvcGFjaXR5OiAxO31cclxuICAgIC8vYm9yZGVyLWNvbG9yOiAkY29sb3ItcmVkLWZvcm07XHJcbiAgfVxyXG4gICY6Zm9jdXMsJjphY3RpdmV7XHJcbiAgICAmLmlzLWVycm9yLCAmLmhhcy1lcnJvcntcclxuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcmVkLWZvcm07XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItcmVkLWZvcm07XHJcbiAgICB9XHJcbiAgICAvL2JveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAvL2JvcmRlcjogbWVkaXVtIG5vbmU7XHJcbiAgICAvL2JvcmRlci1jb2xvcjogI2ZmZjtcclxuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgfVxyXG5cclxuICAmOmludmFsaWQ6Zm9jdXN7XHJcbiAgICArIC5yZXF1aXJlZC1pY257XHJcbiAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICB9XHJcbiAgICAvL2NvbG9yOiAkY29sb3ItcmVkLWZvcm07XHJcbiAgICAvL2JvcmRlci1jb2xvcjogJGNvbG9yLXJlZC1mb3JtO1xyXG4gIH1cclxuICAmOmludmFsaWQ6YWN0aXZle1xyXG4gICAgLy9ib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gIH1cclxuICAmOnZhbGlkOmZvY3VzLCY6Zm9jdXN7XHJcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gIH1cclxuXHJcbiAgJi5pcy1lcnJvcntcclxuICAgICY6Zm9jdXN7XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItdGV4dDtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgIH1cclxuICAgIEBpbmNsdWRlIGZvcm0tcGxhY2Vob2xlcigpe1xyXG4gICAgICAvL2ZvbnQtc2l6ZTogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuaW5wdXQtc21hbGx7XHJcbiAgICB3aWR0aDogMTNyZW07XHJcbiAgICBtYXgtd2lkdGg6IDEzcmVtO1xyXG4gIH1cclxuXHJcbiAgQGF0LXJvb3QgLnJvdy1maWVsZCAme1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBmb250LXNpemU6IDJyZW07XHJcbiAgfVxyXG5cclxuICBAZXh0ZW5kICVtb2JpbGUtZm9ybTtcclxuXHJcbi8vXHJcbn1cclxuXHJcbmZvcm17XHJcbiAgQGV4dGVuZCAlbW9iaWxlLWZvcm07XHJcbn1cclxuXHJcbiVtb2JpbGUtZm9ybXtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgIGlucHV0W3R5cGU9dGV4dF0sXHJcbiAgICBpbnB1dFt0eXBlPXBhc3N3b3JkXSxcclxuICAgIGlucHV0W3R5cGU9ZW1haWxdLFxyXG4gICAgaW5wdXRbdHlwZT11cmxdLFxyXG4gICAgaW5wdXRbdHlwZT10aW1lXSxcclxuICAgIGlucHV0W3R5cGU9ZGF0ZV0sXHJcbiAgICBpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXSxcclxuICAgIGlucHV0W3R5cGU9dGVsXSxcclxuICAgIGlucHV0W3R5cGU9bnVtYmVyXSxcclxuICAgIGlucHV0W3R5cGU9c2VhcmNoXSxcclxuICAgIGlucHV0W3R5cGU9ZmlsZV0sXHJcbiAgICB0ZXh0YXJlYSwud3BjZjctZm9ybS1jb250cm9sOm5vdCgud3BjZjctY2hlY2tib3gpOm5vdCgud3BjZjctcmFkaW8pe1xyXG4gICAgICBmb250LXNpemU6IDJyZW07XHJcbiAgICAgIGhlaWdodDogNDBweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5pbnB1dDpub3QoW3ZhbHVlPVwiXCJdKSB7XHJcbiAgLy9ib3gtc2hhZG93OiBub25lO1xyXG59XHJcblxyXG46Oi1tcy1yZXZlYWwge1xyXG4gIGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5pbnB1dFt0eXBlPWZpbGVde1xyXG4gIC8vcGFkZGluZy10b3A6IDEuMXJlbTtcclxuICB0ZXh0LWluZGVudDogMDtcclxuICBsaW5lLWhlaWdodDogMTtcclxuICBjb2xvcjogJGNvbG9yLWJsdWU7XHJcbiAgQGF0LXJvb3QgLnRvdWNoICZ7XHJcbiAgICAvL0BtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRtZWRpdW0tc2NyZWVuKXtcclxuICAgIC8vICBsaW5lLWhlaWdodDogMTtcclxuICAgIC8vICBwYWRkaW5nLXRvcDogOHB4O1xyXG4gICAgLy8gIHRleHQtaW5kZW50OiAtOHB4O1xyXG4gICAgLy99XHJcbiAgfVxyXG59XHJcbnRleHRhcmVhe1xyXG4gIHBhZGRpbmc6IDEuNHJlbTtcclxuICBvdmVyZmxvdzogYXV0bztcclxuICByZXNpemU6IG5vbmU7XHJcbiAgbGluZS1oZWlnaHQ6IDEuMTtcclxuICBtaW4taGVpZ2h0OiAyMTBweDtcclxufVxyXG5cclxuLmF1dG8td2lkdGh7XHJcbiAgd2lkdGg6IGF1dG87XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9dGV4dF06Oi1tcy1jbGVhciB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuXHJcbmxhYmVse1xyXG4gICYuaXMtZXJyb3J7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGNvbG9yOiAkY29sb3ItcmVkLWZvcm07XHJcbiAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuICB9XHJcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XHJcbn1cclxuXHJcbi5sYWJlbHtcclxuICBmb250LXNpemU6IDEuNHJlbTtcclxuICBsaW5lLWhlaWdodDogMTtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcclxufVxyXG5cclxuLnNlbGVjdC13cnB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIC8vYmFja2dyb3VuZDogdXJsKC4uL2ltZy8pO1xyXG4gICY6YmVmb3Jle1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBjb250ZW50OiBcIlxcZTkwMVwiO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDogMXJlbTtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgLy9AaW5jbHVkZSBpY29ubW9vbjtcclxuXHJcbiAgICBAaW5jbHVkZSBkaXJlY3Rpb24obHRyKXtcclxuICAgICAgbGVmdDogYXV0bztcclxuICAgICAgcmlnaHQ6IDFyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3R7XHJcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICBhcHBlYXJhbmNlOiBub25lO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLWJvcmRlci1pbnB1dDtcclxuICAgIC8vYm9yZGVyOiBtZWRpdW0gbm9uZTtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWJhc2U7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgbGluZS1oZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XHJcbiAgICBjb2xvcjogJGNvbG9yLXRleHQ7XHJcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWxpZ2h0O1xyXG4gICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgcGFkZGluZzogMCAxLjJyZW07XHJcblxyXG4gICAgcGFkZGluZy1sZWZ0OiA0cmVtO1xyXG4gICAgQGluY2x1ZGUgZGlyZWN0aW9uKGx0cil7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMS4ycmVtO1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmVycm9yLW1lc3NhZ2V7XHJcbiAgY29sb3I6IHJlZDtcclxuICBmb250LXNpemU6IDEuNnJlbTtcclxuICBsaW5lLWhlaWdodDogMS4yNTtcclxuICBwYWRkaW5nLWJvdHRvbTogMS41cmVtO1xyXG59XHJcblxyXG4uYXBwLWNhbGxiYWNrLWZvcm17XHJcbiAgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLC53cGNmNy1mb3JtLWNvbnRyb2w6bm90KC53cGNmNy1jaGVja2JveCk6bm90KC53cGNmNy1yYWRpbyl7XHJcbiAgICAmOmhvdmVyLCY6Zm9jdXN7XHJcbiAgICAgIC8vYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIC5idG57XHJcbiAgICAvL21hcmdpbi10b3A6IDFyZW07XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgdXBsb2FkIGJ1dHRvbiBzdHlsZXNcclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4uZmlsZS11cGxvYWQge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblxyXG4gICZfX2xhYmVse1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAvL3BhZGRpbmc6IDFlbSAyZW07XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgIGZvbnQtc2l6ZTogMThweDtcclxuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktdGl0bGU7XHJcblxyXG4gICAgJjpiZWZvcmV7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9pY29uL2ljb25hdHRhY2guc3ZnKSAwIDAgbm8tcmVwZWF0O1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XHJcbiAgICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICAgIHZlcnRpY2FsLWFsaWduOiAtMnB4O1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19pbnB1dCB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBmb250LXNpemU6IDA7XHJcbiAgICB3aWR0aDowO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3BhY2l0eTogMDtcclxuICB9XHJcblxyXG59XHJcblxyXG4jZ2Zvcm1fd3JhcHBlcl8zIC5nZm9ybV9jb25maXJtYXRpb25fbWVzc2FnZSwuZ2Zvcm1fd3JhcHBlciAuZ2Zvcm1fY29uZmlybWF0aW9uX21lc3NhZ2Uge1xyXG4gIGZvbnQtc2l6ZTogMjJweDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgcGFkZGluZzogMCAyMHB4IDAgMjBweDtcclxufVxyXG5cclxuXHJcbnNlY3Rpb257XHJcblxyXG4gIC5hcHAtaW5saW5lLWZvcm17XHJcbiAgICBtYXJnaW4tbGVmdDogLTIwcHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC0yMHB4O1xyXG4gICAgLmdmaWVsZHtcclxuICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI2dmb3JtX3dyYXBwZXJfMy5nZm9ybV93cmFwcGVyLC5nZm9ybV93cmFwcGVye1xyXG4gICAgLmdmb3JtX2J1dHRvbiwuYnV0dG9ue1xyXG4gICAgICAvL2xldHRlci1zcGFjaW5nOiAtLjIycHghaW1wb3J0YW50O1xyXG4gICAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXRpdGxlO1xyXG4gICAgICBjb2xvcjogI2ZmZiFpbXBvcnRhbnQ7XHJcbiAgICAgIC8vcGFkZGluZzogMC43ZW0gMS43MzhlbSFpbXBvcnRhbnQ7XHJcbiAgICAgIHBhZGRpbmc6IDEuMnJlbSAxLjVyZW0gMS4ycmVtIWltcG9ydGFudDtcclxuICAgICAgZm9udC1zaXplOiAxNHB4IWltcG9ydGFudDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMCFpbXBvcnRhbnQ7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1wcmltYXJ5IWltcG9ydGFudDtcclxuICAgICAgbWluLXdpZHRoOiAxNjBweDtcclxuICAgICAgbWF4LXdpZHRoOiAyNDBweDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLmdmaWVsZHtcclxuICAgICAgJiAuZ2ZpZWxkX2Vycm9ye1xyXG5cclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIGZsZXhGbG93Um93V3JhcDtcclxuXHJcbiAgICAgICAgLnZhbGlkYXRpb25fbWVzc2FnZXtcclxuICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gICAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS10aXRsZTtcclxuICAgICAgICAgIGNvbG9yOiByZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSl7XHJcbiAgICAgICAgICBib3JkZXItY29sb3I6IHJlZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAuZ2ZpZWxkX2Rlc2NyaXB0aW9ue2NvbG9yOiAkY29sb3ItZ3JleTI7fVxyXG5cclxuICAgIC5nZmllbGQuZmllbGRfZGVzY3JpcHRpb25fYmVsb3d7XHJcbiAgICAgIC5naW5wdXRfY29udGFpbmVye1xyXG4gICAgICAgIG1heC13aWR0aDogNTAwcHg7XHJcbiAgICAgIH1cclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTY3cHgpe1xyXG4gICAgICAgIEBpbmNsdWRlIGRpc3BsYXlGbGV4O1xyXG4gICAgICAgIEBpbmNsdWRlIGFsaWduSXRlbXNDZW50ZXI7XHJcbiAgICAgICAgLmdmaWVsZF9sYWJlbHtcclxuICAgICAgICAgIGZsZXg6IDAgMCAyMjBweDtcclxuICAgICAgICAgIG1heC13aWR0aDogMjIwcHg7XHJcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5naW5wdXRfY29udGFpbmVye1xyXG4gICAgICAgICAgZmxleDogMCAxIGF1dG87XHJcbiAgICAgICAgICBmbGV4OiBhdXRvO1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyMjBweCk7XHJcbiAgICAgICAgICBtYXgtd2lkdGg6IDUwMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5nZmllbGRfbGFiZWx7XHJcbiAgICAgIGNvbG9yOiAjMjUzMzQzIWltcG9ydGFudDtcclxuICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS10aXRsZSFpbXBvcnRhbnQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogMThweCFpbXBvcnRhbnQ7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDAhaW1wb3J0YW50O1xyXG4gICAgICBsZXR0ZXItc3BhY2luZzogMDtcclxuICAgIH1cclxuXHJcbiAgICAuZ2lucHV0X2NvbnRhaW5lcntcclxuICAgICAgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pe1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogI0FBQUFBQTtcclxuICAgICAgICBjb2xvcjogJGNvbG9yLXRleHQhaW1wb3J0YW50O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS42cmVtIWltcG9ydGFudDtcclxuICAgICAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXRpdGxlIWltcG9ydGFudDtcclxuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsIWltcG9ydGFudDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmIWltcG9ydGFudDtcclxuICAgICAgICBib3gtc2hhZG93OiBub25lIWltcG9ydGFudDtcclxuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDJyZW0haW1wb3J0YW50O1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDJyZW0haW1wb3J0YW50O1xyXG4gICAgICAgIGhlaWdodDogNXJlbTtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAwIWltcG9ydGFudDtcclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICAgICAgZm9udC1zaXplOiAycmVtIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgQGluY2x1ZGUgZm9ybS1wbGFjZWhvbGVyKCl7XHJcbiAgICAgICAgICBjb2xvcjogI0FBQUFBQTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZHJvcGJveC1kcm9waW4tYnRue1xyXG4gICAgICBjb2xvcjogIzAwQTZEMCFpbXBvcnRhbnQ7XHJcbiAgICAgIGJvcmRlcjogbm9uZSFpbXBvcnRhbnQ7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAhaW1wb3J0YW50O1xyXG4gICAgICBiYWNrZ3JvdW5kOiBub25lIWltcG9ydGFudDtcclxuICAgICAgZm9udC1zaXplOiAxOHB4IWltcG9ydGFudDtcclxuICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS10aXRsZSAhaW1wb3J0YW50O1xyXG4gICAgICBwYWRkaW5nOiAwIWltcG9ydGFudDtcclxuICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbCFpbXBvcnRhbnQ7XHJcbiAgICAgIGhlaWdodDogNTBweCFpbXBvcnRhbnQ7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4IWltcG9ydGFudDtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcclxuICAgICAgLmRyb3Bpbi1idG4tc3RhdHVze1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvaWNvbi9pY29uZHJvcGJveC5zdmcpIDAgMCBuby1yZXBlYXQgIWltcG9ydGFudDtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW4haW1wb3J0YW50O1xyXG4gICAgICAgIHdpZHRoOiAyMHB4IWltcG9ydGFudDtcclxuICAgICAgICBoZWlnaHQ6IDIxcHghaW1wb3J0YW50O1xyXG4gICAgICAgIG1hcmdpbjogMCFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHghaW1wb3J0YW50O1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiAtMnB4IWltcG9ydGFudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5naW5wdXRfY29udGFpbmVyX2ZpbGV1cGxvYWR7XHJcbiAgICAgIEBpbmNsdWRlIGRpc3BsYXlGbGV4O1xyXG4gICAgICBAaW5jbHVkZSBhbGlnbkl0ZW1zQ2VudGVyO1xyXG4gICAgICBAaW5jbHVkZSBmbGV4Rmxvd1Jvd1dyYXA7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcblxyXG4gICAgICAuZ2ZpZWxkX2Rlc2NyaXB0aW9ue1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTVweDtcclxuICAgICAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXRpdGxlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICA+IGRpdntcclxuICAgICAgICAmOmxhc3Qtb2YtdHlwZXttYXJnaW4tcmlnaHQ6IDA7fVxyXG4gICAgICAgICY6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6IDA7fVxyXG4gICAgICAgICY6bm90KDpmaXJzdC1jaGlsZCl7XHJcbiAgICAgICAgICAmLmRyb3Bib3gtdXBsb2Fke21hcmdpbi1yaWdodDogMDt9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1NHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZHJvcGJveC11cGxvYWR7XHJcbiAgICAgICAgJjpob3ZlcntcclxuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLmRyb3Bib3gtZHJvcGluLWJ0bntcclxuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgLmRyb3Bpbi1idG4tc3RhdHVze2Rpc3BsYXk6IGlubGluZS1ibG9jazt9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC5maWxlLXVwbG9hZHtcclxuICAgICAgICAmX19sYWJlbHtcclxuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAgIHotaW5kZXg6IDU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICZfX2lucHV0e1xyXG4gICAgICAgICAgLy93aWR0aDogMTAwJSFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC5nZm9ybV9mb290ZXJ7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbi5nZmllbGQuYWNjZXB0LXBvbGljeXtcclxuICBsaXN0LXN0eWxlOiBub25lO1xyXG4gIHBhZGRpbmc6IDFyZW0gLjVyZW07XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGNvbG9yOiAkY29sb3ItZ3JleTI7XHJcbn1cclxuXHJcblxyXG4vLy9hcHAtZm9ybS1sYW5kaW5nLXJlcXVlc3QtZGVtb1xyXG4uYXBwLWZvcm0tbGFuZGluZy1yZXF1ZXN0LWRlbW97XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAucm93e1xyXG4gICAgICAuY29sdW1ue1xyXG4gICAgICAgIGZsZXg6IDAgMCAxMDAlO1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJiArIC5yb3d7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDNyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MTFweCl7XHJcbiAgICAgIC5idG4tc3VibWl0e1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiAuN2VtO1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAuN2VtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG59IiwiJGJ1cmdlci13aWR0aDogMy43cmVtO1xyXG4kYnVyZ2VyLWhlaWdodDogM3JlbTtcclxuJGJ1cmdlci1jb2xvcjogJGNvbG9yLXRleHQ7XHJcbiRidXJnZXItY29sb3ItaG92ZXI6ICM0ODRhNDg7XHJcbiRidXJnZXItY29sb3Itb3BlbjogI2ZmZjtcclxuJGJ1cmdlci1saW5lLWhlaWdodDogNHB4O1xyXG4kYnVyZ2VyLWxpbmUtcmFkaXVzOiA1cHg7XHJcblxyXG4ubWVudS1pY29uLC5tZW51LWljb24tLWFzaWRle1xyXG4gIEBhdC1yb290IC5tZW51LWlzLW9wZW4gJntcclxuICAgICYuYnVyZ2Vye1xyXG4gICAgICBzcGFuLCY6YmVmb3JlLCY6YWZ0ZXJ7Y29sb3I6ICRidXJnZXItY29sb3Itb3Blbjt9XHJcbiAgICB9XHJcbiAgICB6LWluZGV4OiAyMDA7XHJcbiAgICBjb2xvcjogJGJ1cmdlci1jb2xvci1vcGVuO1xyXG4gIH1cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpe1xyXG4gICAgJjpob3ZlcntcclxuICAgICAgJi5idXJnZXJ7XHJcbiAgICAgICAgc3BhbiwmOmJlZm9yZSwmOmFmdGVye2NvbG9yOiAkYnVyZ2VyLWNvbG9yLWhvdmVyO3RyYW5zaXRpb246IGNvbG9yIC4zcyBlYXNlO31cclxuICAgICAgfVxyXG4gICAgICBjb2xvcjogJGJ1cmdlci1jb2xvci1ob3ZlcjtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgd2lkdGg6ICRidXJnZXItd2lkdGg7XHJcbiAgaGVpZ2h0OiAkYnVyZ2VyLWhlaWdodDtcclxuICBib3JkZXI6bm9uZTtcclxuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xyXG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xyXG4gIGN1cnNvcjpwb2ludGVyO1xyXG4gICYubGFyZ2V7XHJcbiAgICB3aWR0aDogMnJlbTtcclxuICAgIGhlaWdodDogMS44cmVtO1xyXG4gIH1cclxuICAmOmZvY3VzIHtcclxuICAgIG91dGxpbmU6bm9uZTtcclxuICB9XHJcbiAgJi5idXJnZXIge1xyXG4gICAgJjphZnRlcixcclxuICAgICY6YmVmb3JlLFxyXG4gICAgc3BhbiB7XHJcbiAgICAgIGNvbG9yOiAkYnVyZ2VyLWNvbG9yO1xyXG4gICAgICB3aWR0aDoxMDAlO1xyXG4gICAgICBoZWlnaHQ6JGJ1cmdlci1saW5lLWhlaWdodDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogJGJ1cmdlci1saW5lLXJhZGl1cztcclxuICAgICAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgICAgIGRpc3BsYXk6YmxvY2s7XHJcbiAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjtcclxuXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAmOmFmdGVyLFxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OlwiXCI7XHJcbiAgICAgIHRyYW5zaXRpb246IDAuM3Mgd2lkdGggMC40cztcclxuICAgIH1cclxuXHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgdG9wOjA7XHJcbiAgICAgIGxlZnQ6MDtcclxuICAgICAgbWFyZ2luLXRvcDowO1xyXG4gICAgfVxyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgYm90dG9tOjA7XHJcbiAgICAgIHJpZ2h0OjA7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206MDtcclxuICAgIH1cclxuXHJcbiAgICBzcGFuIHtcclxuICAgICAgdG9wOjUwJTtcclxuICAgICAgbWFyZ2luLXRvcDogLSgkYnVyZ2VyLWxpbmUtaGVpZ2h0KS8yO1xyXG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyA7XHJcbiAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICBjb250ZW50OlwiXCI7XHJcbiAgICAgICAgYmFja2dyb3VuZDpjdXJyZW50Q29sb3I7XHJcbiAgICAgICAgd2lkdGg6MTAwJTtcclxuICAgICAgICBoZWlnaHQ6JGJ1cmdlci1saW5lLWhlaWdodDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiRidXJnZXItbGluZS1yYWRpdXM7XHJcbiAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgICAgICAgbGVmdDowO1xyXG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIDtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLm9uIHtcclxuICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XHJcbiAgICAgICAgd2lkdGg6MDtcclxuICAgICAgICBsZWZ0OjA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcclxuICAgICAgICB3aWR0aDowO1xyXG4gICAgICAgIHJpZ2h0OjA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNwYW4ge1xyXG4gICAgICAgIHRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO1xyXG4gICAgICAgIHRyYW5zaXRpb246IDAuM3MgdHJhbnNmb3JtIDAuNHMgO1xyXG4gICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgIHRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTtcclxuICAgICAgICAgIHRyYW5zaXRpb246IDAuM3MgdHJhbnNmb3JtIDAuNHMgO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuLmItc2lkZWJhci1tZW51e1xyXG4gICZfX3RpdGxle1xyXG4gICAgJi5pcy1hY3RpdmV7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1zZWNvbmRhcnk7XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItdGV4dDtcclxuICAgIH1cclxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgIGJhY2tncm91bmQ6ICMwMDA7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMnB4O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgZm9udC1zaXplOiAycmVtO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgID5he1xyXG4gICAgICAmOmhvdmVye3RleHQtZGVjb3JhdGlvbjogbm9uZTt9XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgICAgcGFkZGluZzogMS44cmVtIDFyZW07XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBjb2xvcjogY3VycmVudENvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuICAmX19jb250ZW50e1xyXG4gICAgcGFkZGluZzogMnJlbTtcclxuICAgIC8vcGFkZGluZy1yaWdodDogMnJlbTtcclxuICB9XHJcblxyXG4gICZfX25hdntcclxuICAgIGxpe1xyXG4gICAgICAmOm5vdCg6bGFzdC1vZi10eXBlKXtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gICAgICB9XHJcbiAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gICAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgfVxyXG4gICAgLmlzLWFjdGl2ZXtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ubmF2aWdhdGlvbntcclxuICBmb250LXNpemU6IDEuNXJlbTtcclxuXHJcbiAgLnNjcmVlbi1yZWFkZXItdGV4dHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBmb250LXNpemU6IDEuNXJlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gIH1cclxuICAubmF2LWxpbmtze1xyXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcclxuICAgIG1hcmdpbi1yaWdodDogNXB4O1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICB9XHJcbiAgLnBhZ2UtbnVtYmVyc3tcclxuICAgIHBhZGRpbmctbGVmdDogLjRyZW07XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAuNHJlbTtcclxuICB9XHJcbiAgLmN1cnJlbnR7Zm9udC13ZWlnaHQ6IGJvbGQ7fVxyXG59XHJcblxyXG4uaGFzLXN1Ym1lbnV7XHJcblxyXG4gICY6aG92ZXJ7XHJcbiAgICAuc3VibWVudS13cnB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG4gICAgPmF7XHJcbiAgICAgIC8vY29sb3I6ICRjb2xvci15ZWxsb3chaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAuc3VibWVudS13cnB7XHJcbiAgICBwYWRkaW5nLXRvcDogMXJlbTtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6MTAwJTtcclxuICAgIGxlZnQ6MDtcclxuICAgIHdpZHRoOiAxMnJlbTtcclxuXHJcbiAgfVxyXG5cclxuICAuc3VibWVudXtcclxuICAgIG1pbi13aWR0aDogMTIwcHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDRweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuXHJcbiAgICBAYXQtcm9vdCAuaXMtbWVudS1vcGVuICZ7XHJcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgIG1pbi13aWR0aDogMDtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICA+bGl7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBwYWRkaW5nLXRvcDogMXJlbTtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDFyZW07XHJcbiAgICAgICsgbGl7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XHJcbiAgICAgICAgQGF0LXJvb3QgLmlzLW1lbnUtb3BlbiAme1xyXG4gICAgICAgICAgcGFkZGluZy10b3A6IDFyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgID5he1xyXG4gICAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgICBjb2xvcjogJGNvbG9yLWdyZXkyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb2xvcjogIzAwMDtcclxuICAgICAgICBmb250LXNpemU6IDEuNnJlbTtcclxuICAgICAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMTFweDtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMXB4O1xyXG4gICAgICAgIEBhdC1yb290IC5iLWhlYWRlci0teWVsbG93ICZ7XHJcbiAgICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWdyZXkyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29sb3I6ICMwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBhdC1yb290IC5iLWhlYWRlcltjbGFzcyo9bmF2LV0gJntcclxuICAgICAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItZ3JleTI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb2xvcjogIzAwMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pe1xyXG4gICAgLnN1Ym1lbnUtd3Jwe1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgLnN1Ym1lbnV7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgICAgICBsaXtcclxuICAgICAgICAgICYuaXMtYWN0aXZle1xyXG4gICAgICAgICAgICBhe1xyXG4gICAgICAgICAgICAgIGNvbG9yOiAkY29sb3Itb3JhbmdlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhe1xyXG4gICAgICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59IiwiJGNsb3NlLXdpZHRoOiA1LjFyZW07XHJcbiRjbG9zZS1saW5lLXdpZHRoOiAuMnJlbTtcclxuXHJcbi5jbG9zZS1idXR0b257XHJcbiAgJjpiZWZvcmUsJjphZnRlcntcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOjA7XHJcbiAgICBsZWZ0OiAoJGNsb3NlLXdpZHRoLzIpICsgJGNsb3NlLWxpbmUtd2lkdGgvMjtcclxuICAgIGhlaWdodDogJGNsb3NlLXdpZHRoICsgJGNsb3NlLWxpbmUtd2lkdGgvMjtcclxuICAgIHdpZHRoOiAkY2xvc2UtbGluZS13aWR0aDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci10ZXh0O1xyXG4gIH1cclxuICAmOmJlZm9yZXt0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7fVxyXG4gICY6YWZ0ZXJ7dHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTt9XHJcblxyXG4gICY6aG92ZXJ7XHJcbiAgICBvcGFjaXR5OiAuNTtcclxuICB9XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG4gIGZvbnQtc2l6ZTogMDtcclxuICB3aWR0aDogJGNsb3NlLXdpZHRoO1xyXG4gIGhlaWdodDogJGNsb3NlLXdpZHRoO1xyXG4gIG1hcmdpbi1ib3R0b206IDJyZW07XHJcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuM3MgZWFzZSwgYmFja2dyb3VuZCAuM3MgZWFzZTtcclxufVxyXG5cclxuaHRtbC5pcy1yZXZlYWwtb3BlbiBib2R5e1xyXG4gIGhlaWdodDogYXV0bztcclxufVxyXG5cclxuLnJldmVhbC1vdmVybGF5e1xyXG4gIC8vZGlzcGxheTogYmxvY2shaW1wb3J0YW50O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoJGNvbG9yLWRhcmstYmx1ZSwuOTUpO1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoIzBkMGMxZSwuODQpO1xyXG59XHJcblxyXG4ucmV2ZWFse1xyXG5cclxuICAmLnJldmVhbC10cmFuc3BhcmVudHtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gIH1cclxuXHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgcGFkZGluZzogNS44cmVtO1xyXG4gIG1heC13aWR0aDogODhyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICYucmV2ZWFsLXNtYWxse1xyXG4gICAgbWF4LXdpZHRoOiA3MHJlbTtcclxuICB9XHJcblxyXG4gICYucmV2ZWFsLWJveHtcclxuICAgIG1heC13aWR0aDogODdyZW07XHJcbiAgICAubW9kYWwtdHh0e1xyXG4gICAgICBtYXgtd2lkdGg6IDY3cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnNlY3Rpb24tdGl0bGV7XHJcbiAgICAvL21hcmdpbi1ib3R0b206IDVyZW07XHJcbiAgfVxyXG5cclxuICAuY2xvc2UtYnV0dG9ue1xyXG4gICAgJjpiZWZvcmUsJjphZnRlcntcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOjA7XHJcbiAgICAgIGxlZnQ6ICgkY2xvc2Utd2lkdGgvMikgKyAkY2xvc2UtbGluZS13aWR0aC8yO1xyXG4gICAgICBoZWlnaHQ6ICRjbG9zZS13aWR0aCArICRjbG9zZS1saW5lLXdpZHRoLzI7XHJcbiAgICAgIHdpZHRoOiAkY2xvc2UtbGluZS13aWR0aDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXRleHQ7XHJcbiAgICB9XHJcbiAgICAmOmJlZm9yZXt0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7fVxyXG4gICAgJjphZnRlcnt0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO31cclxuXHJcbiAgICAmOmhvdmVye1xyXG4gICAgICBvcGFjaXR5OiAuNTtcclxuICAgIH1cclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuICAgIGZvbnQtc2l6ZTogMDtcclxuICAgIHdpZHRoOiAkY2xvc2Utd2lkdGg7XHJcbiAgICBoZWlnaHQ6ICRjbG9zZS13aWR0aDtcclxuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XHJcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zcyBlYXNlLCBiYWNrZ3JvdW5kIC4zcyBlYXNlO1xyXG4gIH1cclxuXHJcbiAgLm1vZGFsLWhlYWRlcntcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgfVxyXG5cclxuICAubW9kYWwtdGl0bGV7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xyXG4gICAgLmFydGljbGUtdGl0bGV7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAubW9kYWwtYm9keXtcclxuXHJcbiAgICBwe1xyXG4gICAgICBmb250LXNpemU6IDEwMCU7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjg3NTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAubW9kYWwtdHh0e1xyXG4gICAgZm9udC1zaXplOiAxLjZyZW07XHJcbiAgfVxyXG5cclxuICAubW9kYWwtcHJldmlld3tcclxuICAgIHBhZGRpbmctdG9wOiAycmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNHJlbTtcclxuICB9XHJcblxyXG4gIC5tb2RhbC1mb290ZXJ7XHJcblxyXG4gICAgbWFyZ2luLXRvcDogMy41cmVtO1xyXG5cclxuICAgIFtjbGFzc149XCJidG5cIl0sLmJ0bntcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xyXG4gICAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcclxuICAgICAgcGFkZGluZy10b3A6IDEuNXJlbTtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcclxuICAgICAgbWluLXdpZHRoOiAyMy4zcmVtO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLm1vcmUtbGlua3tcclxuICAgICY6aG92ZXJ7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIH1cclxuICAgIGNvbG9yOiAkY29sb3ItdGV4dDtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gIH1cclxuXHJcbiAgaWZyYW1le1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG4gIHZpZGVve1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcclxuICB9XHJcblxyXG4gIC5yZXNwb25zaXZlLWVtYmVke1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcclxuICAgIGJhY2tncm91bmQ6ICNjY2MgdXJsKC4uL2ltZy9jb21tb24vbG9hZGVyLnN2ZykgNTAlIDUwJSBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE1cmVtIGF1dG87XHJcbiAgfVxyXG5cclxuICAmLnJldmVhbC12aWRlb3tcclxuXHJcbiAgICAvL2JhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCguLi9pbWcvY29tbW9uL2xvYWRlci5zdmcpIDUwJSA1MCUgbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XHJcbiAgICBwYWRkaW5nOiAwO1xyXG5cclxuICAgIC5jbG9zZS1idXR0b257XHJcbiAgICAgICY6YmVmb3JlLCAmOmFmdGVye2JhY2tncm91bmQtY29sb3I6ICNmZmY7fVxyXG4gICAgfVxyXG4gICAgLm1vZGFsLWJvZHl7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIHBhZGRpbmctbGVmdDogM3JlbTtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XHJcbiAgfVxyXG5cclxufSIsIkBtaXhpbiBpdGVtKCR3aWR0aCwgJGJyZWFrcG9pbnQpe1xyXG4gIG1heC13aWR0aDogJHdpZHRoO1xyXG4gIHdpZHRoOiAoJHdpZHRoLyRicmVha3BvaW50KSoxMDB2dztcclxuICBtaW4td2lkdGg6ICR3aWR0aC8yO1xyXG59XHJcblxyXG4uc2VjdGlvbiwucy1zZWN0aW9ue1xyXG5cclxuICB3aWR0aDogMTAwJTtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgcGFkZGluZy10b3A6IG1hcF9nZXQoJHNlY3Rpb24sIHBhZGRpbmcpO1xyXG4gIHBhZGRpbmctYm90dG9tOiBtYXBfZ2V0KCRzZWN0aW9uLCBwYWRkaW5nKTtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSBkb3duKXt9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pe1xyXG4gICAgcGFkZGluZy10b3A6IG1hcF9nZXQoJHNlY3Rpb24sIHBhZGRpbmctbWQpO1xyXG4gICAgcGFkZGluZy1ib3R0b206IG1hcF9nZXQoJHNlY3Rpb24sIHBhZGRpbmctbWQpO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIHBhZGRpbmctdG9wOiBtYXBfZ2V0KCRzZWN0aW9uLCBwYWRkaW5nLXNtKTtcclxuICAgIHBhZGRpbmctYm90dG9tOiBtYXBfZ2V0KCRzZWN0aW9uLCBwYWRkaW5nLXNtKTtcclxuICB9XHJcblxyXG4gICYucC1tZHtcclxuICAgIHBhZGRpbmctdG9wOiBtYXBfZ2V0KCRzZWN0aW9uLCBwYWRkaW5nLW1kKTtcclxuICAgIHBhZGRpbmctYm90dG9tOiBtYXBfZ2V0KCRzZWN0aW9uLCBwYWRkaW5nLW1kKTtcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAgIHBhZGRpbmctdG9wOiBtYXBfZ2V0KCRzZWN0aW9uLCBwYWRkaW5nLXNtKTtcclxuICAgICAgcGFkZGluZy1ib3R0b206IG1hcF9nZXQoJHNlY3Rpb24sIHBhZGRpbmctc20pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5tLWdyZXl7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JleTtcclxuICB9XHJcblxyXG4gICYubS1jeWFue1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWN5YW47XHJcbiAgfVxyXG5cclxuICAmLm0tYmx1ZXtcclxuICAgICY6YmVmb3Jle1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBsZWZ0OjA7dG9wOjA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO2hlaWdodDoxMDAlO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDAsIDU4LCAxNDUsIDAuNSkgMCUsIHJnYmEoNSwgMTI4LCAyNTUsIDApIDEwMCUpO1xyXG4gICAgfVxyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsdWU7XHJcbiAgICAuc2VjdGlvbi10aXRsZXtjb2xvcjogI2ZmZjt9XHJcbiAgfVxyXG5cclxuICAmLm0td2F2ZXtcclxuICAgICY6YWZ0ZXJ7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDphdXRvO2JvdHRvbTotMXB4O1xyXG4gICAgICBsZWZ0OjA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvY29tbW9uL2JnX193YXZlU29sdXRpb25zLnN2ZykgMTAwJSAxMDAlIG5vLXJlcGVhdDtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XHJcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgICB6LWluZGV4OiAxO1xyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyMDAwcHgpIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpe1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMTAwJTtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMDBweCBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm0tcHJpbWFyeXtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgLnNlY3Rpb24tdGl0bGV7Y29sb3I6ICNmZmY7fVxyXG4gIH1cclxuXHJcbiAgJi5tLW9yYW5nZXtiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itb3JhbmdlO31cclxuICAmLm0teWVsbG93e2JhY2tncm91bmQtY29sb3I6ICRjb2xvci15ZWxsb3c7fVxyXG5cclxuICAmLmgxMDB7XHJcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcclxuICB9XHJcblxyXG4gICYucHQtMHtwYWRkaW5nLXRvcDogMH1cclxuICAmLnBiLTB7cGFkZGluZy1ib3R0b206IDB9XHJcblxyXG4gICYudGV4dC13aGl0ZXtcclxuICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgLnMtaGVyb19fdGl0bGV7Y29sb3I6ICNmZmY7fVxyXG4gICAgLnMtaGVyb19fdHh0e2NvbG9yOiAjZmZmO31cclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuLnNlY3Rpb24tc2xpZGVyLC5zZWN0aW9uLW1haW4tc2xpZGVyLC5zZWN0aW9uLWhlcm97XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgLy9vdmVyZmxvdzogaGlkZGVuO1xyXG4gIC5iZy1pbWd7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gICAgaW1ne29wYWNpdHk6IDA7dmlzaWJpbGl0eTogaGlkZGVuO31cclxuICB9XHJcbn1cclxuXHJcbi5zZWN0aW9uLWJne1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAuYmctaW1ne1xyXG4gICAgJi5iZy1wYXJhbGxheHtcclxuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xyXG4gICAgfVxyXG4gICAgJi0tZml4ZWR7YmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDt9XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBsZWZ0OiAwO3JpZ2h0OiAwO1xyXG4gICAgdG9wOiAwOyBib3R0b206MDtcclxuICAgIGltZ3tvcGFjaXR5OiAwO3Zpc2liaWxpdHk6IGhpZGRlbjt9XHJcbiAgICAvL3otaW5kZXg6IC0xO1xyXG4gIH1cclxuICAuc3VidGl0bGV7Y29sb3I6ICNmZmY7fVxyXG4gIC5jb250YWluZXIsLnNlY3Rpb24tdGl0bGUsLnJvd3tcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB9XHJcbn1cclxuXHJcbi52aWRlby13cmFwLmJnLWltZ3tcclxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgY2VudGVyO1xyXG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgbGVmdDogMDtyaWdodDogMDtcclxuICB0b3A6IDA7IGJvdHRvbTowO1xyXG4gIGltZ3tvcGFjaXR5OiAwO3Zpc2liaWxpdHk6IGhpZGRlbjt9XHJcbiAgLy96LWluZGV4OiAtMTtcclxufVxyXG5cclxuLnMtaGVyb3tcclxuXHJcbiAgJi5faGVhZGVyLW9mZnNldHtcclxuICAgIHBhZGRpbmctdG9wOiAxNHJlbTtcclxuICB9XHJcblxyXG4gIGJhY2tncm91bmQ6ICRjb2xvci15ZWxsb3c7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIC8vbWluLWhlaWdodDogNTJyZW07XHJcblxyXG4gICZfX2Jne1xyXG4gICAgJi5iZy1pbWd7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJSAxMDAlO1xyXG4gICAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJhc3Q7XHJcbiAgICAgIC8vYmFja2dyb3VuZC1zaXplOiAxOTJyZW0gYXV0bztcclxuICAgICAgJi5fc2hvdy10YWJsZXR7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxOTIxcHgpe1xyXG4gICAgICAgIC8vYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XHJcbiAgICAgIH1cclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTI4MHB4KSBhbmQgKG1pbi13aWR0aDogMTAwMHB4KXtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDE5MjBweCBhdXRvO1xyXG4gICAgICB9XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5OXB4KSBhbmQgKG1pbi13aWR0aDogMzIwcHgpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDExNSUgYXV0bztcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICYuX3Nob3ctdGFibGV0e1xyXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19waWN7fVxyXG5cclxuICAmX19jb250ZW50e1xyXG4gICAgLy9wYWRkaW5nLXRvcDogN3JlbTtcclxuICAgIHBhZGRpbmctYm90dG9tOiAxNHJlbTtcclxuICB9XHJcblxyXG4gICZfX3R4dHtcclxuICAgIG1heC13aWR0aDogNzByZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzLjRyZW07XHJcbiAgICBmb250LXNpemU6IDIuNHJlbTtcclxuICAgIGNvbG9yOiAkY29sb3ItaGVhZGluZztcclxuICAgIHB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuMzM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX190aXRsZXtcclxuICAgIEBleHRlbmQgLnRpdGxlLTE7XHJcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XHJcbiAgICBjb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgICBzcGFue1xyXG4gICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgdGV4dC1zaGFkb3c6IDEwcHggNHB4IDEycHggcmdiYSgxNDAsIDg0LCAwLCAwLjYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fYnRue1xyXG4gICAgLmJ0biArIC5idG57XHJcbiAgICAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bntcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBAYXQtcm9vdCAuaG9tZSAme1xyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSBhbmQgKG1heC13aWR0aDogMTkyMHB4KXtcclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IDk2MHB4KXtcclxuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgICBtaW4taGVpZ2h0OiA2MHJlbTtcclxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAtNHJlbTtcclxuICAgICAgICBwYWRkaW5nLXRvcDogOXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4tYXNwZWN0LXJhdGlvOiAxNy8xMCkgYW5kIChtaW4td2lkdGg6IDEyMDBweCl7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBtaW4taGVpZ2h0OiA2MHJlbTtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDA7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IC00cmVtO1xyXG4gICAgICBwYWRkaW5nLXRvcDogOXJlbTtcclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIGFuZCAobWF4LXdpZHRoOiAxOTIwcHgpe1xyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWhlaWdodDogNzAwcHgpe1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDUxcmVtO1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IC02cmVtO1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiA5cmVtO1xyXG5cclxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNjAwcHgpe1xyXG4gICAgICAgICAgJl9fYmcuYmctaW1ne2JhY2tncm91bmQtc2l6ZTogMTYwMHB4IGF1dG87fVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJl9fdGl0bGV7Zm9udC1zaXplOiA1cmVtO31cclxuICAgICAgICAmX190eHR7Zm9udC1zaXplOiAyLjJyZW07fVxyXG5cclxuICAgICAgfVxyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWhlaWdodDogNjAwcHgpe1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDUxcmVtO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IC03cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgQG1lZGlhICBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCl7XHJcbiAgICBtaW4taGVpZ2h0OiA3MnJlbTtcclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE5MjFweCl7XHJcbiAgICAvL21pbi1oZWlnaHQ6IDEwNXZoO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCh0YWJsZXQgZG93bil7XHJcbiAgICAmX19jb250ZW50e1xyXG4gICAgICBwYWRkaW5nLXRvcDogMDtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDhyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpIGFuZCAobWluLXdpZHRoOiAxMDAwcHgpe1xyXG4gICAgJl9fY29udGVudHtcclxuICAgICAgcGFkZGluZy10b3A6IDByZW07XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxMHJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pe1xyXG4gICAgJl9fY29udGVudHtcclxuICAgICAgcGFkZGluZy10b3A6IDA7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAmX19iZy5iZy1pbWd7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDk1JSAxMDAlO1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMHJlbSBhdXRvO1xyXG4gICAgfVxyXG4gICAgJl9fY29udGVudHtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDI0cmVtO1xyXG4gICAgfVxyXG4gICAgJl9fdGl0bGV7Zm9udC1zaXplOiAzMnB4O31cclxuXHJcbiAgICAmX19idG57XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAgICAuYnRue1xyXG4gICAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICAgICYgKyAuYnRue1xyXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjVweCl7XHJcbiAgICAmLl9oZWFkZXItb2Zmc2V0e3BhZGRpbmctdG9wOiAxMHJlbTt9XHJcbiAgICAmX19iZy5iZy1pbWd7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDY4JSAxMDAlO1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDgwcmVtIGF1dG87XHJcbiAgICB9XHJcbiAgICAmX19jb250ZW50e3BhZGRpbmctYm90dG9tOjE3cmVtO31cclxuICB9XHJcblxyXG59XHJcblxyXG4ucy1oZXJvLXNvbHV0aW9uc3tcclxuICAmOmFmdGVye1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6YXV0bztib3R0b206LTFweDtcclxuICAgIGxlZnQ6MDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9jb21tb24vYmdfX3dhdmVTb2x1dGlvbnMuc3ZnKSAxMDAlIDEwMCUgbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XHJcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyMDAwcHgpIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpe1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwMHB4IGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19waWN7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICByaWdodDogMCU7XHJcbiAgICB6LWluZGV4OiAwO1xyXG4gICAgaW1ne1xyXG4gICAgICB3aWR0aDogNTRyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19jb250ZW50e1xyXG4gICAgcGFkZGluZy10b3A6IDRyZW07XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHRhYmxldCBkb3duKXtcclxuICAgICZfX3BpY3tcclxuICAgICAgLy93aWR0aDogODAlO1xyXG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgICAgaW1ne1xyXG4gICAgICAgIHdpZHRoOiA3MCU7XHJcbiAgICAgICAgLy93aWR0aDogODAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuXHJcbiAgICAmOmFmdGVye1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMDBweCBhdXRvO1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MSUgMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuYmctaW1ne2JhY2tncm91bmQtcG9zaXRpb246IDMwJSAwO31cclxuXHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMjRyZW07XHJcblxyXG4gICAgJl9fY29udGVudHtcclxuICAgICAgcGFkZGluZy10b3A6IDZyZW07XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxMHJlbTtcclxuICAgICAgcGFkZGluZy1yaWdodDogMTQlO1xyXG4gICAgfVxyXG5cclxuICAgIC5zLWhlcm9fX3R4dHtcclxuICAgICAgcGFkZGluZy1yaWdodDogMjAlO1xyXG4gICAgfVxyXG5cclxuICAgICZfX3BpY3tcclxuICAgICAgcmlnaHQ6IC0xMiU7XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyNXB4KXtcclxuICAgIHBhZGRpbmctYm90dG9tOiAyNnJlbTtcclxuICAgICZfX2NvbnRlbnR7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwcmVtO1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xyXG4gICAgfVxyXG4gICAgJl9fcGlje1xyXG4gICAgICAvL2Rpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgICAucy1oZXJvX190eHQsJl9fdHh0e1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5zLWhlcm8tY29udGVudHtcclxuXHJcbiAgJi5tLXNoYWRvd3tcclxuICAgICY6YWZ0ZXJ7XHJcbiAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvY29tbW9uL2JnX193YXZlU29sdXRpb25zLXNoYWRvdy5zdmcpIDEwMCUgMTAwJSBuby1yZXBlYXQ7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyMDAwcHgpIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpe1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMTAxJTtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMDBweCBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm0tY2xlYW57XHJcbiAgICAmOmFmdGVye2Rpc3BsYXk6IG5vbmU7fVxyXG4gIH1cclxuXHJcblxyXG4gICY6YWZ0ZXJ7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDphdXRvO2JvdHRvbTotMXB4O1xyXG4gICAgbGVmdDowO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9iZ19fd2F2ZVNvbHV0aW9ucy5zdmcpIDEwMCUgMTAwJSBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0bztcclxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIC8vb3BhY2l0eTogLjc7XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyMDAwcHgpIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpe1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwMHB4IGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYmctaW1ne1xyXG4gICAgJjpiZWZvcmV7XHJcbiAgICAgIGNvbnRlbnQ6Jyc7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOjA7bGVmdDowO1xyXG4gICAgICB3aWR0aDoxMDAlO2hlaWdodDogMTJyZW07XHJcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSAwJSwgcmdiYSgwLCAwLCAwLCAwKSAxMDAlKTtcclxuICAgIH1cclxuICAgICY6YWZ0ZXJ7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDphdXRvO2JvdHRvbTotMXB4O1xyXG4gICAgICBsZWZ0OjA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoIzIyMiwuNik7XHJcbiAgICB9XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgbWluLWhlaWdodDogNTVyZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyZXk7XHJcbn1cclxuXHJcbi5zLWhlcm8tYmxvZ3tcclxuICAmOmFmdGVye2Rpc3BsYXk6IG5vbmU7fVxyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgLnMtaGVyby1haV9fY29udGVudHtcclxuICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gIH1cclxufVxyXG5cclxuLnMtYWktcGVyc29uYWx7XHJcblxyXG4gIHBhZGRpbmctdG9wOiAxNXJlbTtcclxuICBwYWRkaW5nLWJvdHRvbTogMjAlO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAxO1xyXG4gIG1pbi1oZWlnaHQ6IDg5cmVtO1xyXG4gIC8vb3ZlcmZsb3c6IHZpc2libGU7XHJcblxyXG4gICZfX2luZm97XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XHJcbiAgfVxyXG5cclxuICAmX19iZ3tcclxuICAgICYuYmctaW1ne1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgMTAwJTtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDAwcHggYXV0bztcclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMjAwMHB4KXtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0bztcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDEwMCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHotaW5kZXg6IC0xO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGV7XHJcblxyXG4gICAgJjpiZWZvcmV7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICB3aWR0aDogOHJlbTtoZWlnaHQ6IDhyZW07XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2ljb24vbWFnaWMuc3ZnKSAwIDAgbm8tcmVwZWF0O1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgbWFyZ2luLWxlZnQ6IC00cmVtO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAtMXJlbTtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bil7XHJcbiAgICAgICAgLy9kaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAgICAgd2lkdGg6IDVyZW07aGVpZ2h0OiA1cmVtO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMnJlbTtcclxuICAgICAgICAvL21hcmdpbi1ib3R0b206IC0ycmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3BhbntkaXNwbGF5OiBibG9jazt9XHJcbiAgICBtYXJnaW4tYm90dG9tOiA0cmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fdHh0e1xyXG4gICAgQGV4dGVuZCAudGV4dC0tbWVkaXVtO1xyXG4gICAgcHtmb250LXNpemU6IDEwMCU7bGluZS1oZWlnaHQ6IDEuNTt9XHJcbiAgfVxyXG5cclxuICAmX19idG57XHJcbiAgICBtYXJnaW4tdG9wOiA1cmVtO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSBkb3duKXtcclxuICAgIG1pbi1oZWlnaHQ6IDc1dnc7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHRhYmxldCBkb3duKXtcclxuICAgIHBhZGRpbmctdG9wOiAzcmVtO1xyXG5cclxuICAgIC5jb250YWluZXJ7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAyMHJlbTtcclxuICAgIH1cclxuXHJcbiAgICAmX19iZ3tcclxuICAgICAgJi5iZy1pbWd7XHJcbiAgICAgICAgLy9iYWNrZ3JvdW5kLXBvc2l0aW9uOiA0NSUgMDtcclxuICAgICAgICAvL2JhY2tncm91bmQtc2l6ZTogMTEwMHB4IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBwYWRkaW5nLXRvcDogNHJlbTtcclxuICAgIHBhZGRpbmctbGVmdDogMTBweDtcclxuICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG5cclxuICAgIC5iZy1pbWd7XHJcbiAgICAgIC8vb3BhY2l0eTogLjU7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fYmd7XHJcbiAgICAgICYuYmctaW1ne1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgMCU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmX190aXRsZXtcclxuICAgICAgbWFyZ2luLXRvcDogNnJlbTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMjB2dztcclxuICAgIH1cclxuXHJcbiAgICAmX190eHR7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuICAgICZfX2J0bntcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgfVxyXG4gICAgJl9faW5mb3tcclxuICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDUwMHB4KXtcclxuXHJcblxyXG4gICAgJl9fdGl0bGV7XHJcbiAgICAgIC8vbWFyZ2luLXRvcDogMnJlbTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMTNyZW07XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDIycmVtO1xyXG4gICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC50aXRsZS0xe2ZvbnQtc2l6ZTogMjZweDt9XHJcblxyXG4gICAgJl9fYmcuYmctaW1ne1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgMCU7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogNTAwcHggYXV0bztcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuLnMtaGVyby1pbmR1c3RyaWVze1xyXG5cclxuICAmLm0tYmx1ZXtcclxuXHJcbiAgfVxyXG5cclxuICB6LWluZGV4OiA1O1xyXG5cclxuICAmX19iZ3tcclxuXHJcbiAgICAmOmJlZm9yZXtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIEBpbmNsdWRlIGFic29sdXRlU3RyZXRjaDtcclxuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSAwJSwgcmdiYSgwLCAwLCAwLCAwKSAxMDAlKTtcclxuICAgICAgaGVpZ2h0OiAxMnJlbTtcclxuICAgICAgLy9iYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTYuNTZkZWcsICMwMDU5QjEgMzcuODYlLCByZ2JhKDAsIDAsIDAsIDApIDEwMCUpO1xyXG4gICAgfVxyXG5cclxuICAgICYuYmctaW1ne1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgMTAwJTtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuICAgICAgLy9iYWNrZ3JvdW5kLXNpemU6IDE5MnJlbSBhdXRvO1xyXG4gICAgICAmLl9zaG93LXRhYmxldHtcclxuICAgICAgICAvL2Rpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTkyMXB4KXtcclxuICAgICAgICAvL2JhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gICAgICB9XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyODBweCkgYW5kIChtaW4td2lkdGg6IDEwMDBweCl7XHJcbiAgICAgICAgLy9iYWNrZ3JvdW5kLXNpemU6IDE5MjBweCBhdXRvO1xyXG4gICAgICB9XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5OXB4KSBhbmQgKG1pbi13aWR0aDogMzIwcHgpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gICAgICAgIC8vZGlzcGxheTogbm9uZTtcclxuICAgICAgICAmLl9zaG93LXRhYmxldHtcclxuICAgICAgICAgIC8vZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ucy1oZXJvLWFpe1xyXG5cclxuICAmLm0tc2hhZG93e1xyXG4gICAgJjphZnRlcntcclxuICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9jb21tb24vYmdfX3dhdmVTb2x1dGlvbnMtc2hhZG93LnN2ZykgMTAwJSAxMDAlIG5vLXJlcGVhdDtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDIwMDBweCkgYW5kIChtaW4td2lkdGg6IDEyMDBweCl7XHJcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAxMDElO1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwMHB4IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6YWZ0ZXJ7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDphdXRvO2JvdHRvbTotMXB4O1xyXG4gICAgbGVmdDowO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9iZ19fd2F2ZVNvbHV0aW9ucy5zdmcpIDEwMCUgMTAwJSBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0bztcclxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDIwMDBweCkgYW5kIChtaW4td2lkdGg6IDEyMDBweCl7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMTAwJTtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDAwcHggYXV0bztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJhY2tncm91bmQ6ICNGMUYxRjE7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG1pbi1oZWlnaHQ6IDUycmVtO1xyXG5cclxuICAmX19jb250ZW50e1xyXG4gICAgcGFkZGluZy10b3A6IDZyZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNnJlbTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBtaW4taGVpZ2h0OiAyMHZoO1xyXG4gICAgJl9fY29udGVudHtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbi5zLWNhbGxiYWNrLWZvcm17XHJcblxyXG4gIHBhZGRpbmctYm90dG9tOiA1cmVtO1xyXG4gIG1pbi1oZWlnaHQ6IDQ2cmVtO1xyXG5cclxuXHJcbiAgLmZvcm0tdGl0bGV7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IC41cmVtO1xyXG4gICAgcGFkZGluZy1yaWdodDogLjVyZW07XHJcbiAgICBwYWRkaW5nLXRvcDogNXJlbTtcclxuICAgIC8vY29sb3I6IHJnYmEoMzQsIDM0LCAzNCwgMC41KTtcclxuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgY29sb3I6ICRjb2xvci1oZWFkaW5nO1xyXG4gICAgLy9AZXh0ZW5kIC50aXRsZS01O1xyXG4gIH1cclxuXHJcbiAgJl9fYmd7XHJcbiAgICAmLmJnLWltZ3tcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgMTAxJTtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiAxOTJyZW0gYXV0bztcclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSBhbmQgKG1heC13aWR0aDogMjAwMHB4KXtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMDBweCBhdXRvO1xyXG4gICAgICB9XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE2MDBweCkgYW5kIChtYXgtd2lkdGg6IDIwMDBweCl7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyMTAwcHggYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fY29udGVudHtcclxuICAgIHBhZGRpbmctdG9wOiAxNyU7XHJcbiAgfVxyXG5cclxuICB0ZXh0YXJlYXtcclxuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xyXG4gICAgbWluLWhlaWdodDogMTRyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQztcclxuICAgIEBpbmNsdWRlIGZvcm0tcGxhY2Vob2xlcigpe1xyXG4gICAgICBjb2xvcjogI0FBQUFBQTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5iLWZvcm0tbGlzdHtcclxuICAgIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKSx0ZXh0YXJlYXtcclxuICAgICAgJjpmb2N1cywmOmFjdGl2ZXtcclxuICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgIH1cclxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQztcclxuICAgICAgQGluY2x1ZGUgZm9ybS1wbGFjZWhvbGVyKCl7XHJcbiAgICAgICAgY29sb3I6ICNBQUFBQUE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuaGFzLWVycm9ye1xyXG4gICAgICBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSksdGV4dGFyZWF7XHJcbiAgICAgICAgJjpmb2N1cywmOmFjdGl2ZXtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkU3RTc7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0ZGMDAwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvbnQtc2l6ZTogMDtcclxuICAgIG1hcmdpbi10b3A6IC0uNXJlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IC0uNXJlbTtcclxuICAgIG1hcmdpbi1yaWdodDogLjVyZW07XHJcblxyXG4gICAgbGl7XHJcbiAgICAgIHBhZGRpbmc6IC41cmVtO1xyXG4gICAgICB3aWR0aDogNTAlO1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLmJ0bi1zdWJtaXR7XHJcbiAgICAmOmhvdmVyLCAmOmZvY3Vze1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgLy9jb2xvcjogcmdiYSgzNCwgMzQsIDM0LCAwLjYpO1xyXG4gICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgb3BhY2l0eToxO1xyXG4gICAgICAvL2JveC1zaGFkb3c6IDBweCA2cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4gICAgfVxyXG4gICAgJi5idG57XHJcbiAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgb3BhY2l0eTouNztcclxuICAgICAgfVxyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICB9XHJcbiAgICAvL0BleHRlbmQgJWJ0bjtcclxuICAgIG1pbi13aWR0aDogMThyZW07XHJcbiAgICBiYWNrZ3JvdW5kOiAjRkZGMTY2O1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjRkZGMTY2O1xyXG4gICAgY29sb3I6IHJnYmEoMzQsIDM0LCAzNCwgMC41KTtcclxuICAgIGJveC1zaGFkb3c6IDBweCA2cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcbiAgfVxyXG5cclxuICAuaGFzLWVycm9ye1xyXG4gICAgaW5wdXQsdGV4dGFyZWF7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkU3RTc7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNGRjAwMDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZm9ybS1zdWJtaXQtbWVzc2FnZXtcclxuICAgIG1heC13aWR0aDogMjhyZW07XHJcbiAgICBmb250LXNpemU6IDIuNHJlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xyXG5cclxuICAgIHB7Zm9udC1zaXplOiAxMDAlO31cclxuXHJcbiAgICAmX190aXRsZXtcclxuICAgICAgZm9udC1zaXplOiAxMDAlO1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIH1cclxuXHJcbiAgICAmX190eHR7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xyXG4gICAgICAvL2ZvbnQtc2l6ZTogMTAwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5lcnJvci1tZXNzYWdle1xyXG4gICAgcGFkZGluZy1sZWZ0OiAuNXJlbTtcclxuICB9XHJcblxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHRhYmxldCBkb3duKXtcclxuICAgICZfX2Jne1xyXG4gICAgICAmLmJnLWltZ3tcclxuICAgICAgICAvL2Rpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKXtcclxuXHJcbiAgICAmX19iZ3tcclxuICAgICAgJi5iZy1pbWd7XHJcbiAgICAgICAgLy9kaXNwbGF5OiBub25lO1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMCU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXllbGxvdztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci15ZWxsb3c7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNnJlbTtcclxuICAgIG1pbi1oZWlnaHQ6IDA7XHJcblxyXG4gICAgJl9fY29udGVudHtcclxuICAgICAgcGFkZGluZy10b3A6IDZyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgICZfX2NvbnRlbnR7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA0MiU7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fYmd7XHJcbiAgICAgICYuYmctaW1ne1xyXG4gICAgICAgIC8vZGlzcGxheTogbm9uZTtcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAudGV4dC1yaWdodHtcclxuICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZm9ybXtcclxuICAgICAgLmNvbHVtbntcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgICAgLnNocmluay5zbWFsbC0xMntcclxuICAgICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgICAgfVxyXG4gICAgICAvL3BhZGRpbmctbGVmdDogMTBweDtcclxuICAgICAgLy9wYWRkaW5nLXJpZ2h0OiAxMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLXRpdGxle1xyXG4gICAgICBwYWRkaW5nLXRvcDowO1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDByZW07XHJcbiAgICB9XHJcblxyXG4gICAgLmItZm9ybS1saXN0e1xyXG4gICAgICBtYXJnaW4tbGVmdDogLS41cmVtO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IC0uNXJlbTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogLjVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjVweCl7XHJcbiAgICAuYi1mb3JtLWxpc3R7XHJcbiAgICAgIGxpe1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAubWwtYXV0bywubXItYXV0b3tcclxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIH1cclxuICAgIC5lcnJvci1tZXNzYWdle1xyXG4gICAgICAvL3RleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5zLWFpLWFib3V0e1xyXG5cclxuICAmOmJlZm9yZXtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB0b3A6MDtcclxuICAgIGxlZnQ6IDAlO1xyXG4gICAgLy90cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICB6LWluZGV4OiAtMTtcclxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9jb21tb24vYmdfX2xpbmUyLnN2ZykgNTUlIDAgbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBhdXRvIDEwMCU7XHJcblxyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTYwMHB4KXtcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAlIDA7XHJcbiAgICB9XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpe1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGFkZGluZy10b3A6IDEycmVtO1xyXG4gIHBhZGRpbmctYm90dG9tOiAxMnJlbTtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxuXHJcbiAgJl9fcm93e1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIHBhZGRpbmctdG9wOiA2cmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fcGlje1xyXG4gICAgaW1nLHN2Z3tcclxuICAgICAgbWF4LXdpZHRoOiA2NnJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2luZm97XHJcbiAgICBtYXgtd2lkdGg6IDU0cmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGV7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgY29sb3I6ICRjb2xvci1oZWFkaW5nO1xyXG4gICAgc3BhbixzdHJvbmd7Zm9udC13ZWlnaHQ6IDcwMDt9XHJcbiAgfVxyXG5cclxuICAmX190eHR7XHJcbiAgICBAZXh0ZW5kIC50ZXh0LS1tZWRpdW07XHJcbiAgICBwe1xyXG4gICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCh0YWJsZXQgZG93bil7XHJcbiAgICBwYWRkaW5nLXRvcDogNnJlbTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcblxyXG4gICAgcGFkZGluZy10b3A6IDA7XHJcblxyXG4gICAgJl9fcm93e1xyXG4gICAgICAmOm50aC1jaGlsZCgybil7XHJcbiAgICAgICAgLnMtYWktYWJvdXRfX3BpY3tvcmRlcjogLTE7fVxyXG4gICAgICB9XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAmX19pbmZve1xyXG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5zLWFpLXJlcG9ydHtcclxuXHJcbn1cclxuXHJcbi5zLWFpLWN0YXtcclxuXHJcbiAgW2NsYXNzXj1cInRpdGxlLVwiXXtjb2xvcjogJGNvbG9yLWhlYWRpbmc7fVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSB1cCl7XHJcbiAgICAmX19pbmZve1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgJl9fYnRue1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB9XHJcbiAgICAmX19pbmZve1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAtMnJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4ucy1haS1wcm9kdWN0c3tcclxuICAmOmJlZm9yZXtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOjA7XHJcbiAgICBsZWZ0OjA7XHJcbiAgICBoZWlnaHQ6NTAlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5NGZmO1xyXG4gIH1cclxuICAmOmFmdGVye1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBsZWZ0OjA7Ym90dG9tOjA7XHJcbiAgICB3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9iZ19fd2F2ZS5zdmcpIDUwJSAxMDAlIG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogMTkycmVtIGF1dG87XHJcbiAgICAvL3otaW5kZXg6IC0xO1xyXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAuY29udGFpbmVye1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMTtcclxuICB9XHJcblxyXG4gIHBhZGRpbmctdG9wOiA4LjJyZW07XHJcbiAgcGFkZGluZy1ib3R0b206IDguMnJlbTtcclxuICBjb2xvcjogIzAwMDtcclxuICB6LWluZGV4OiA1O1xyXG4gIG1hcmdpbi1ib3R0b206IC0xMiU7XHJcblxyXG4gICYgKyAuc2VjdGlvbiwgJiArIHNlY3Rpb257XHJcbiAgICBwYWRkaW5nLXRvcDogMTIlO1xyXG4gIH1cclxuXHJcbiAgJl9faW5mb3tcclxuICAgIHBhZGRpbmctdG9wOiA4cmVtO1xyXG4gICAgLy9wYWRkaW5nLWJvdHRvbTogOHJlbTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UgZG93bil7XHJcbiAgICAmOmFmdGVye1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDEwMCU7XHJcbiAgICB9XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMThyZW07XHJcblxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAwMHB4KSBhbmQgKG1heC13aWR0aDogMTAyNHB4KXtcclxuICAgIHBhZGRpbmctYm90dG9tOiA0LjVyZW07XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgICY6YmVmb3Jle2hlaWdodDogODAlO31cclxuICAgIC8vJjphZnRlcntiYWNrZ3JvdW5kLXNpemU6IDEyMDBweCBhdXRvO31cclxuICAgICY6YWZ0ZXJ7YmFja2dyb3VuZC1zaXplOiAxMDAwcHggYXV0bztiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0NCUgMTAwJTt9XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNXJlbTtcclxuICAgICZfX2luZm97XHJcbiAgICAgIHBhZGRpbmctdG9wOiAzcmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDI1cHgpe1xyXG4gICAgJjphZnRlcntiYWNrZ3JvdW5kLXNpemU6IDEwMDBweCBhdXRvO2JhY2tncm91bmQtcG9zaXRpb246IDQ0JSAxMDAlO31cclxuICAgIHBhZGRpbmctYm90dG9tOiA1cmVtO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5zLXJldmlld3tcclxuXHJcbiAgJl9fdmlkZW97XHJcbiAgICAvL3BhZGRpbmctdG9wOiA1cmVtO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDdyZW07XHJcblxyXG4gICAgJi13cnB7XHJcbiAgICAgIG1heC13aWR0aDogNzByZW07XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICB9XHJcblxyXG4gICAgLmItaG9tZS12aWRlb3tcclxuICAgICAgbWFyZ2luLWJvdHRvbTogNC41cmVtO1xyXG4gICAgICBtYXgtd2lkdGg6IDcwcmVtO1xyXG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG5cclxuICAgICAgLmJ0bi1wbGF5e1xyXG4gICAgICAgIGZvbnQtc2l6ZTogLjZyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5yZXNwb25zaXZlLWVtYmVke1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIHBhZGRpbmctdG9wOiA4cmVtO1xyXG5cclxuICAgICZfX3ZpZGVve1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogNHJlbTtcclxuICAgICAgLmItaG9tZS12aWRlb3tcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xyXG4gICAgICAgICZfX3R4dHtcclxuICAgICAgICAgIGJye1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO31cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2xpY2stc2xpZGVye1xyXG4gICAgICAuYi1ib3gtcmV2aWV3e1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuXHJcblxyXG4ucy1zb2x1dGlvbnMtYWJvdXR7fVxyXG5cclxuLnMtc29sdXRpb25zLWFydGljbGV7XHJcblxyXG4gICYgKyAucy1zb2x1dGlvbnMtYXJ0aWNsZXtcclxuICAgICBtYXJnaW4tdG9wOiAxMS43cmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGV7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xyXG4gICAgY29sb3I6ICRjb2xvci1oZWFkaW5nO1xyXG4gIH1cclxuXHJcbiAgJl9fcGlje1xyXG4gICAgbWFyZ2luLXRvcDogNS40cmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fdGFiLW5hdntcclxuICAgICY6YWZ0ZXJ7XHJcbiAgICAgIC8vY29udGVudDogJyc7XHJcbiAgICAgIHRvcDogMTAwJTtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAtNjByZW07XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0FBQUFBQTtcclxuICAgICAgd2lkdGg6IDEyMHJlbTtcclxuICAgIH1cclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG1hcmdpbi10b3A6IDlyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiA5cmVtO1xyXG4gICAgLy9tYXgtd2lkdGg6IDg4cmVtO1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcblxyXG4gICAgLmItdGFicy0tYmcgLnRhYnMtbmF2LC50YWJzLW5hdntcclxuICAgICAgbGl7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyLjZyZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMi42cmVtO1xyXG4gICAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgICAuYi10YWJzX19saW5re1xyXG4gICAgICAgICAgICAmOmFmdGVye1xyXG4gICAgICAgICAgICAgIC8vYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDBkZWcscmdiYSgwLDAsMCwuMykscmdiYSgwLDAsMCwuMykpLGxpbmVhci1ncmFkaWVudCgxNDEuOTFkZWcscmdiYSgwLDAsMCwuNzYpIDEwLjA3JSxyZ2JhKDAsMCwwLDApIDk4Ljc3JSk7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzcGFue29wYWNpdHk6IC43O31cclxuXHJcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pcy1hY3RpdmV7XHJcbiAgICAgICAgLmItdGFic19fbGlua3tcclxuICAgICAgICAgICY6YWZ0ZXJ7XHJcbiAgICAgICAgICAgIC8vYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDBkZWcscmdiYSgwLDAsMCwuMykscmdiYSgwLDAsMCwuMykpLGxpbmVhci1ncmFkaWVudCgxNDEuOTFkZWcscmdiYSgwLDAsMCwuNzYpIDEwLjA3JSxyZ2JhKDAsMCwwLDApIDk4Ljc3JSk7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmItdGFic19fbGlua3tcclxuXHJcbiAgICAgICAgJjpiZWZvcmV7ZGlzcGxheTogbm9uZTt9XHJcblxyXG4gICAgICAgIHNwYW57dHJhbnNpdGlvbjogLjNzIGVhc2Ugb3BhY2l0eTt9XHJcblxyXG4gICAgICAgIHdpZHRoOiAyMHJlbTtcclxuICAgICAgICBoZWlnaHQ6IDIwcmVtO1xyXG4gICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgICAgIC8vaGVpZ2h0OiAwO1xyXG4gICAgICAgIC8vcGFkZGluZy1ib3R0b206IDEwMCU7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XHJcbiAgICAgIHVse1xyXG4gICAgICAgIG1hcmdpbjogLTEuNXJlbTtcclxuICAgICAgfVxyXG4gICAgICBsaXtcclxuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XHJcbiAgICAgICAgZmxleDogMCAwIDUwJTtcclxuICAgICAgICBtYXgtd2lkdGg6IDUwJTtcclxuICAgICAgICBtaW4td2lkdGg6IDI0cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICAgbGl7XHJcbiAgICAgICAgJjpub3QobGFzdC1vZi10eXBlKXtcclxuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBtaW4td2lkdGg6IDUwJTtcclxuICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgICAgIGZsZXg6IDAgMCA1MCU7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgfVxyXG4gICAgICAuYi10YWJzX19saW5re1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM3NHB4KXtcclxuICAgICAgbGl7XHJcbiAgICAgICAgbWluLXdpZHRoOiAxMDAlO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGZsZXg6IDAgMCAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgJl9fdGFiLWJvZHl7XHJcbiAgICAmOm5vdCgudGFiLWNvbnRlbnQpe1xyXG4gICAgICAuYi10YWIgKyAuYi10YWJ7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcmVtO1xyXG4gICAgICB9XHJcbiAgICAgIC5iLXRhYntcclxuICAgICAgICBwYWRkaW5nLXRvcDogMTByZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYmctdGl0bGV7XHJcblxyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlIHVwKXtcclxuICAgICAgICAvL21hcmdpbi1sZWZ0OiAtMS41cmVtO1xyXG4gICAgICAgIC8vbWFyZ2luLXJpZ2h0OiAtMS41cmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogNnJlbTtcclxuICAgICAgcGFkZGluZzogNHJlbTtcclxuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItaGVhZGluZztcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDUwJTtcclxuICAgICAgbWluLWhlaWdodDogMjByZW07XHJcbiAgICAgIFtjbGFzcyo9XCJ0aXRsZVwiXXtcclxuICAgICAgICBjb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gICZfX3R4dC10aXRsZSxoNCxoNXtcclxuICAgIGZvbnQtc2l6ZTogMi40cmVtO1xyXG4gICAgY29sb3I6ICMyMjIyMjI7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gIH1cclxuXHJcbiAgJl9fdHh0LWdyb3Vwe1xyXG4gICAgJiArIC5zLXNvbHV0aW9ucy1hcnRpY2xlX190eHQtZ3JvdXB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDVyZW07XHJcbiAgICB9XHJcblxyXG4gICAgdWx7XHJcbiAgICAgIEBleHRlbmQgJWxpc3QtZGlzYztcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX3R4dHtcclxuICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgcHtcclxuICAgICAgZm9udC1zaXplOiAxMDAlO1xyXG4gICAgICBsaW5lLWhlaWdodDogMS42NztcclxuICAgIH1cclxuXHJcbiAgICB1bHtcclxuICAgICAgZm9udC1zaXplOiAxMDAlO1xyXG4gICAgICAvL2xpbmUtaGVpZ2h0OiAxLjI1O1xyXG4gICAgICAvL0BleHRlbmQgJWxpc3QtZGlzYztcclxuICAgICAgbGl7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogLjVyZW07XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbHtcclxuICAgICAgQGV4dGVuZCAlb2w7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIC5yb3c6bm90KC5yb3ctLWxpc3Qpe1xyXG4gICAgICAuY29sdW1uLnNtYWxsLTEye1xyXG4gICAgICAgICsgLmNvbHVtbi5zbWFsbC0xMntcclxuICAgICAgICAgIG1hcmdpbi10b3A6IDVyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJl9fcGlje1xyXG4gICAgICBtYXJnaW4tbGVmdDogLTIwcHg7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogLTIwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fdGFiLWJvZHl7XHJcbiAgICAgIC5iZy10aXRsZXtcclxuICAgICAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgICAgIC8vanVzdGlmeS1jb250ZW50OmNlbnRlcjtcclxuICAgICAgICBtaW4taGVpZ2h0OiA4MHB4O1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMjBweDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0yMHB4O1xyXG4gICAgICAgIFtjbGFzc149XCJ0aXRsZVwiXXtcclxuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC50aXRsZS0ye2ZvbnQtc2l6ZTogMjVweDt9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmX190eHR7XHJcbiAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1ib2R5LW1vYjtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcblxyXG59XHJcblxyXG4uYXJ0aWNsZXtcclxuICAuZ3J2ZS10ZXh0LXdycHtcclxuICAgIG1hcmdpbi10b3A6IDVyZW07XHJcbiAgfVxyXG59XHJcblxyXG4uZ3J2ZS10ZXh0LXdycHtcclxuXHJcbiAgJiArIC5ncnZlLXRleHQtd3Jwe1xyXG4gICAgbWFyZ2luLXRvcDogNXJlbTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4ucy1jb21wYW55LWFydGljbGV7XHJcblxyXG4gICYgKyAucy1zb2x1dGlvbnMtYXJ0aWNsZXtcclxuICAgIG1hcmdpbi10b3A6IDExLjdyZW07XHJcbiAgfVxyXG5cclxuICAmX190aXRsZXtcclxuICAgIG1hcmdpbi1ib3R0b206IDNyZW07XHJcbiAgICBjb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgfVxyXG5cclxuICAmX19waWN7XHJcbiAgICBtYXJnaW4tdG9wOiA1LjRyZW07XHJcbiAgfVxyXG5cclxuICAmX190eHR7XHJcbiAgICBmb250LXNpemU6IDIuMnJlbTtcclxuICAgIHB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuMzY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgJl9fdHh0e1xyXG4gICAgICBmb250LXNpemU6ICRmb250LXNpemUtYm9keS1tb2I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbi5zLWNvbnRlbnQtcGFydG5lcnN7XHJcbiAgcHtcclxuICAgIEBleHRlbmQgLnRleHQtLWxhcmdlO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBwe1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ucy1jb21wYW55LWFib3V0e1xyXG4gIHBhZGRpbmctdG9wOiAxOCU7XHJcbiAgcGFkZGluZy1ib3R0b206IDEwLjVyZW07XHJcblxyXG4gICZfX2luZm97XHJcbiAgICBtYXgtd2lkdGg6IDM4LjVyZW07XHJcbiAgICBjb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHhsYXJnZSBkb3duKXtcclxuICAgIC8vcGFkZGluZy10b3A6IDE4JTtcclxuICAgIC8vcGFkZGluZy1ib3R0b206IDEwLjVyZW07XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHdsYXJnZSBkb3duKXtcclxuICAgIC8vcGFkZGluZy10b3A6IDE2LjUlO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDEwLjVyZW07XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKXtcclxuICAgIHBhZGRpbmctdG9wOiAyNSU7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgcGFkZGluZy10b3A6IDMwJTtcclxuICAgIHBhZGRpbmctYm90dG9tOiAxNSU7XHJcbiAgICBtaW4taGVpZ2h0OiA1NXJlbTtcclxuXHJcbiAgICAuYmctaW1ne1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgMCU7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwMHB4IGF1dG87XHJcbiAgICB9XHJcblxyXG4gICAgLmNvbnRhaW5lcntcclxuICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xyXG4gICAgfVxyXG5cclxuICAgICZfX2luZm97XHJcbiAgICAgIG1heC13aWR0aDogMjIuNXJlbTtcclxuICAgICAgLy9wYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgICAgIC8vcGFkZGluZy1yaWdodDogMTBweDtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG5cclxuLnMtaGVyby1jb21wYW55e1xyXG5cclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIGhlaWdodDowO1xyXG4gIHBhZGRpbmctYm90dG9tOiA0OC4yNSU7XHJcblxyXG4gIC52aWRlby13cnB7XHJcbiAgICAmOmJlZm9yZXtcclxuICAgICAgY29udGVudDonJztcclxuICAgICAgei1pbmRleDogMTtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6MDtsZWZ0OjA7XHJcbiAgICAgIHdpZHRoOjEwMCU7aGVpZ2h0OiAxMnJlbTtcclxuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSgwLCAwLCAwLCAwLjcpIDAlLCByZ2JhKDAsIDAsIDAsIDApIDEwMCUpO1xyXG4gICAgfVxyXG4gICAgLy9oZWlnaHQ6MDtcclxuICAgIC8vd2lkdGg6MTAwJTtcclxuICAgIC8vcGFkZGluZy1ib3R0b206IDU2LjI1JTtcclxuICB9XHJcblxyXG4gID4gaWZyYW1lLD52aWRlb3tcclxuICAgIEBpbmNsdWRlIGFic29sdXRlU3RyZXRjaDtcclxuICAgIC8vei1pbmRleDogLTE7XHJcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgfVxyXG4gIC8vPi17XHJcbiAgLy8gIG9iamVjdC1maXQ6IGZpbGw7XHJcbiAgLy99XHJcblxyXG4gIC5iZ1ZpZGVve1xyXG4gICAgQGluY2x1ZGUgYWJzb2x1dGVTdHJldGNoO1xyXG4gICAgLy96LWluZGV4OiAtMTtcclxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcclxuICAgIGlmcmFtZXtcclxuICAgICAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgICB9XHJcbiAgICAueXRwbGF5ZXItY29udGFpbmVye1xyXG4gICAgICBAaW5jbHVkZSBhYnNvbHV0ZVN0cmV0Y2g7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAvL3otaW5kZXg6IC0xO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnMtaGVyby1jb21wYW55MntcclxuXHJcbiAgcGFkZGluZy1ib3R0b206IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgbWFyZ2luLWJvdHRvbTogNXJlbTtcclxuXHJcbiAgLnZpZGVvSGVyb3tcclxuICAgIHdpZHRoOjEwMCU7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAvL3otaW5kZXg6IDU7XHJcbiAgICBsaW5lLWhlaWdodDogMDtcclxuICAgIGJveC1zaGFkb3c6IDBweCAxMHB4IDMwcHggcmdiYSgwLCAwLCAwLCAwLjQpO1xyXG4gIH1cclxuICAudmlkZW8td3Jwe1xyXG4gICAgbWFyZ2luLWJvdHRvbTogLTVyZW07XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogNTtcclxuICAgIGxpbmUtaGVpZ2h0OiAwO1xyXG4gIH1cclxuXHJcbiAgLnMtaGVyby1haV9fY29udGVudCwmX19jb250ZW50e1xyXG4gICAgcGFkZGluZy1ib3R0b206MDtcclxuICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bil7XHJcbiAgICAucy1oZXJvLWFpX19jb250ZW50LCZfX2NvbnRlbnR7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA2cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgLnMtaGVyby1haV9fY29udGVudHtcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgIH1cclxuICAgIC52aWRlby13cnB7XHJcbiAgICAgICY6YmVmb3Jle1xyXG4gICAgICAgIGNvbnRlbnQ6Jyc7XHJcbiAgICAgICAgei1pbmRleDogMTtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOjA7bGVmdDowO1xyXG4gICAgICAgIHdpZHRoOjEwMCU7aGVpZ2h0OiAxMnJlbTtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDAsIDAsIDAsIDAuNykgMCUsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSk7XHJcbiAgICAgIH1cclxuICAgICAgdmlkZW97XHJcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICBtaW4taGVpZ2h0OiAxODBweDtcclxuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcclxuICAgICAgfVxyXG4gICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5zLXJlcXVlc3QtZGVtb3tcclxuICAmLm0tZml4ZWR7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICBib3R0b206MDtcclxuICAgIGxlZnQ6MDtcclxuICAgIHdpZHRoOjEwMCU7XHJcbiAgICB6LWluZGV4OiA5ODtcclxuICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICBwYWRkaW5nOiAxcmVtIDIwcHg7XHJcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcclxuICB9XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxuXHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAmOm5vdCguaGlkZSl7XHJcbiAgICAgIH4gLnMtZ2FydG5lci5tLWZpeGVke1xyXG4gICAgICAgIGJvdHRvbTogNnJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5zLWdhcnRuZXJ7XHJcblxyXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNHMgZWFzZTtcclxuXHJcbiAgJi5pcy1oaWRle1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAmLm0tZml4ZWR7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICBib3R0b206MnJlbTtcclxuICAgIHJpZ2h0OjA7XHJcbiAgICB3aWR0aDphdXRvO1xyXG4gICAgei1pbmRleDogOTc7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDRweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcbiAgfVxyXG5cclxuICAmX193cnB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgbWF4LXdpZHRoOiAxMHJlbTtcclxuICB9XHJcblxyXG4gICZfX2xvZ297XHJcbiAgICBmbGV4OiAwIDAgMTByZW07XHJcbiAgICB3aWR0aDogMTByZW07XHJcbiAgICBiYWNrZ3JvdW5kOiAjMTgyYTU0O1xyXG4gICAgbGluZS1oZWlnaHQ6IDA7XHJcbiAgICBpbWd7bWF4LXdpZHRoOiAxMDAlO3dpZHRoOjEwMCU7fVxyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGV7XHJcbiAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktZmFsbGJhY2s7XHJcbiAgICBwYWRkaW5nOiAuNnJlbSAuM3JlbSAuOXJlbSAuOXJlbTtcclxuICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgICYubS1maXhlZHtcclxuICAgICAgYm90dG9tOjA7XHJcbiAgICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgICBsZWZ0OiAyMHB4O1xyXG4gICAgfVxyXG5cclxuICAgICZfX3dycHtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgICAgbWF4LXdpZHRoOiAxODVweDtcclxuICAgICAgbWF4LXdpZHRoOiAyNHJlbTtcclxuICAgIH1cclxuXHJcbiAgICAmX19sb2dve1xyXG4gICAgICBmbGV4OiAwIDAgOTBweDtcclxuICAgICAgbWF4LXdpZHRoOiA5MHB4O1xyXG4gICAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fdGl0bGV7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgIHBhZGRpbmc6IDE1cHggNXB4IDE1cHggMTZweDtcclxuICAgICAgZmxleDogMCAxIGF1dG87XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweCFpbXBvcnRhbnQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS43NXJlbSFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLmhhcy1zaG93LWdhcnRuZXJ7XHJcbiAgLmItZm9vdGVye1xyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDEycmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbi5zLWNvbnRlbnQtYWl7XHJcblxyXG4gICZfX2Fib3V0e1xyXG4gICAgcHtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNjc7XHJcbiAgICB9XHJcbiAgICB1bHtcclxuICAgICAgQGV4dGVuZCAlbGlzdC1kaXNjO1xyXG4gICAgfVxyXG4gICAgb2x7XHJcbiAgICAgIEBleHRlbmQgJW9sO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5kLWZsZXh7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG59XHJcblxyXG4ucy1jb29raWVze1xyXG4gICYubS1maXhlZHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIGJvdHRvbTowO1xyXG4gICAgbGVmdDowO1xyXG4gICAgd2lkdGg6MTAwJTtcclxuICAgIHotaW5kZXg6IDk5O1xyXG4gICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgIHBhZGRpbmc6IDEuNXJlbSA0cmVtO1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcbiAgfVxyXG4gICZfX2luZm97XHJcbiAgICBwYWRkaW5nLXRvcDogMXJlbTtcclxuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtO1xyXG4gIH1cclxuICAuYnRue1xyXG4gICAgbWluLXdpZHRoOiA5cmVtO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDNyZW07XHJcbiAgfVxyXG5cclxuICAuY2xvc2UtYnV0dG9ue1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgcmlnaHQ6IDJyZW07XHJcbiAgICB0b3A6IDFyZW07XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgJi5tLWZpeGVke1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XHJcbiAgICB9XHJcbiAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAuYnRue21hcmdpbi1sZWZ0OiAwO31cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuLnMtY29udGVudC1wb3N0e1xyXG4gIC5hcnRpY2xle1xyXG4gICAgcCx1bHtcclxuICAgICAgQGV4dGVuZCAudGV4dC0tbGFyZ2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLmItc29jaWFsc3tcclxuICAmX190aXRsZXtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgICBjb2xvcjogJGNvbG9yLWdyZXkyO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS10aXRsZTtcclxuICAgIHB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgICAgY29sb3I6IGN1cnJlbnRDb2xvcjtcclxuICAgIH1cclxuICB9XHJcbiAgJl9fbGlzdHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBsaXN0LXN0eWxlOiBub25lO1xyXG4gICAgZm9udC1zaXplOiAwO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICBsaXtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICBsaW5lLWhlaWdodDogMTtcclxuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xyXG4gICAgICBhe1xyXG4gICAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgICBvcGFjaXR5OiAuNztcclxuICAgICAgICB9XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5zLWNvbnRlbnQtZm9vdGVye1xyXG5cclxuXHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgQGluY2x1ZGUgZGlzcGxheUZsZXg7XHJcbiAgQGluY2x1ZGUgYWxpZ25JdGVtc0NlbnRlcjtcclxuXHJcbiAgLmItc29jaWFsc3tcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgLmItdmFjYW5jeS1wYWdlX19iYWNrLWxpbmt7XHJcblxyXG4gICAgQGF0LXJvb3QgLnBhZ2UtdmFjYW5jeSAjZ3J2ZS1jb250ZW50ICZ7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KXtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDI1cHg7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NDBweCl7XHJcbiAgICBAaW5jbHVkZSBmbGV4Rmxvd1Jvd1dyYXA7XHJcblxyXG4gICAgcGFkZGluZy1sZWZ0OiAwO1xyXG4gICAgcGFkZGluZy1yaWdodDogMDtcclxuXHJcbiAgICAuYi1zb2NpYWxze1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgbWFyZ2luLXRvcDogMzBweDtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgICAgbGl7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4ucy1oZXJvLXJlcXVlc3R7XHJcblxyXG4gIC8vJjphZnRlcntcclxuICAvLyAgY29udGVudDogJyc7XHJcbiAgLy8gIEBpbmNsdWRlIGFic29sdXRlU3RyZXRjaDtcclxuICAvLyAgdG9wOiAxMDAlO1xyXG4gIC8vICBib3R0b206IGF1dG87XHJcbiAgLy8gIGhlaWdodDogMTAwJTtcclxuICAvLyAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgLy8gIGJhY2tncm91bmQ6IHVybCguLi9pbWcvY29tbW9uL2JnRGVtb1dhdmUtc2hhZG93LnN2ZykgNTAlIDEwMCUgbm8tcmVwZWF0O1xyXG4gIC8vICAvL2JhY2tncm91bmQtY29sb3I6IHJlZDtcclxuICAvLyAgei1pbmRleDogMTtcclxuICAvL31cclxuXHJcbiAgLnMtaGVyb19fdHh0e1xyXG4gICAgZm9udC1zaXplOiAyLjJyZW07XHJcbiAgICBtYXgtd2lkdGg6IDYzcmVtO1xyXG4gIH1cclxuXHJcbiAgLnMtaGVyb19fYnRue1xyXG4gICAgLmJ0bntcclxuICAgICAgbWluLXdpZHRoOiAxNnJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zLWhlcm9fX3RpdGxle1xyXG4gICAgY29sb3I6ICMyMjI7XHJcblxyXG4gICAgJi5tLXNtYWxse1xyXG4gICAgICBmb250LXNpemU6IDVyZW07XHJcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19jb250ZW50LC5jb250YWluZXJ7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBwYWRkaW5nLXRvcDogNnJlbTtcclxuICAgIC8vei1pbmRleDogMjtcclxuICB9XHJcblxyXG4gIC5iZy1pbWd7XHJcbiAgICAvL3RvcDogMTAwJTtcclxuICAgIC8vYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0MCUgMTAwJTtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyMDAwcHgpIGFuZCAobWluLXdpZHRoOiAxMDAwcHgpe1xyXG4gICAgICAvL2JhY2tncm91bmQtc2l6ZTogMjAwMHB4IGF1dG87XHJcbiAgICB9XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTlweCl7XHJcbiAgICAgIC8vYmFja2dyb3VuZC1zaXplOiAxMDAwcHggYXV0bztcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDEwMCU7XHJcbiAgICB9XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3MDBweCl7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDYwJSAxMDAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDU7XHJcbiAgcGFkZGluZy1ib3R0b206IDIwJTtcclxuICBtaW4taGVpZ2h0OiA1NnZoO1xyXG4gIC8vbWFyZ2luLWJvdHRvbTogLTIwcmVtO1xyXG5cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzAwcHgpe1xyXG4gICAgbWluLWhlaWdodDogNjAwcHg7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgIC5iZy1pbWd7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMTQwMHB4IGF1dG87XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDYyJSAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIG1pbi1oZWlnaHQ6IDM2MHB4O1xyXG5cclxuICAgIC5zLWhlcm9fX3RpdGxle1xyXG4gICAgICBtYXgtd2lkdGg6IDIwMHB4O1xyXG4gICAgICAvL2ZvbnQtc2l6ZTogMzJweDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAmLS1sYW5kaW5ne1xyXG4gICAgcGFkZGluZy1ib3R0b206IDEyJTtcclxuICAgIG1hcmdpbi1ib3R0b206IDEwcmVtO1xyXG4gICAgLy9vdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgYmFja2dyb3VuZDogIzAwOTRmZjtcclxuXHJcbiAgICAuYmctaW1ne1xyXG4gICAgICB0b3A6IC0xcHg7XHJcbiAgICAgIGJvdHRvbTogLTFweDtcclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTlweCl7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxNCU7XHJcblxyXG4gICAgICAuYmctaW1ne1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDY2JSAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTMwJSBhdXRvO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAucy1oZXJvX190eHR7XHJcbiAgICAgICAgd2lkdGg6IDgwJTtcclxuICAgICAgICBmb250LXNpemU6IDJyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMzIwcHg7XHJcbiAgICAgIC8vbWFyZ2luLWJvdHRvbTogMTByZW07XHJcbiAgICAgIC5iZy1pbWd7XHJcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogODAlIDEwMCU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAwcHggYXV0bztcclxuICAgICAgfVxyXG4gICAgICAucy1oZXJvX190aXRsZXtcclxuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgICAgLnMtaGVyb19fdHh0e1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICAgICBwe1xyXG4gICAgICAgICAgYnJ7ZGlzcGxheTogbm9uZTt9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ucy1mb3Jte1xyXG5cclxuICAmLnMtZm9ybS0tcmVxdWVzdHtcclxuXHJcbiAgICAuYi1mb3JtLWxpc3R7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTIwMHB4KXtcclxuICAgICAgdGV4dGFyZWF7XHJcbiAgICAgICAgLy9oZWlnaHQ6IGNhbGMoMTAwJSAtIDIuM3JlbSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICAuYi1mb3JtLWxpc3R7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0uNXJlbTtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0uNXJlbTtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gICYucy1mb3JtLS1sYW5kaW5ne1xyXG5cclxuICAgIHBhZGRpbmctYm90dG9tOiA3cmVtO1xyXG4gICAgbWluLWhlaWdodDogNDB2aDtcclxuXHJcbiAgICAuY29udGFpbmVye1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIG1hcmdpbi10b3A6IC0xMHJlbTtcclxuICAgIH1cclxuXHJcbiAgICAuYi1mb3JtLWxpc3R7XHJcbiAgICAgIGZvbnQtc2l6ZTogMDtcclxuICAgICAgbWFyZ2luOiAtLjVyZW07XHJcbiAgICAgIGxpe1xyXG4gICAgICAgICY6bnRoLWNoaWxkKDEpe3dpZHRoOiA1MCU7fVxyXG4gICAgICAgICY6bnRoLWNoaWxkKDIpe3dpZHRoOiA1MCU7fVxyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnMtZm9ybV9fcGFydG5lcnN7XHJcbiAgICAgIC8vbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgIC8vbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gICAgICA+IC5yb3d7XHJcbiAgICAgICAgbWF4LXdpZHRoOiA3MHJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRleHRhcmVhLGlucHV0e1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICB9XHJcblxyXG4gICAgdGV4dGFyZWF7XHJcbiAgICAgIC8vaGVpZ2h0OiAxMDAlO1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KHRhYmxldCl7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmVycm9yLW1lc3NhZ2V7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgIH1cclxuXHJcbiAgICAucm93IC5yb3c6bm90KC5zbWFsbC1jb2xsYXBzZSl7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMS41cmVtO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IC0xLjVyZW07XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuXHJcbiAgICAgIC5jb250YWluZXJ7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogLTNyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHB7XHJcbiAgICAgICAgYnJ7ZGlzcGxheTogbm9uZTt9XHJcbiAgICAgIH1cclxuICAgICAgLnRleHQtLWxhcmdle1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuYi1haS1wYXJ0bmVyc19faW1ne1xyXG4gICAgICAgIHBhZGRpbmc6IDFyZW07XHJcbiAgICAgICAgJjpmaXJzdC1jaGlsZHtcclxuICAgICAgICAgIGltZ3ttYXgtd2lkdGg6Ny43cmVtO31cclxuICAgICAgICB9XHJcbiAgICAgICAgJjpudGgtY2hpbGQoNSl7XHJcbiAgICAgICAgICBpbWd7bWF4LXdpZHRoOjdyZW07fVxyXG4gICAgICAgIH1cclxuICAgICAgICBpbWd7XHJcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG4gICAgICAgICAgbWF4LWhlaWdodDogNXJlbTtcclxuICAgICAgICAgIG1pbi1oZWlnaHQ6IDMuOXJlbTtcclxuICAgICAgICAgIG1heC13aWR0aDogNS4zcmVtO1xyXG4gICAgICAgICAgLy9taW4td2lkdGg6IDdyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8vbWFyZ2luLXRvcDogLTEwcmVtO1xyXG4gIHBhZGRpbmctdG9wOiAwO1xyXG4gIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gIG1pbi1oZWlnaHQ6IDQwdmg7XHJcbiAgbWluLWhlaWdodDogY2FsYyg0NHZoIC0gNS41cmVtKTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3IteWVsbG93O1xyXG4gIC8vcGFkZGluZy10b3A6IDIwJTtcclxuICBcclxuICAmLm0td2hpdGV7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIH1cclxuXHJcbiAgLmNvbnRhaW5lcntcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDY7XHJcbiAgICB0b3A6IC03cmVtO1xyXG4gIH1cclxuXHJcbiAgdGV4dGFyZWF7XHJcbiAgICBwYWRkaW5nLXRvcDogMXJlbTtcclxuICAgIG1pbi1oZWlnaHQ6IDE0cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7XHJcbiAgICBAaW5jbHVkZSBmb3JtLXBsYWNlaG9sZXIoKXtcclxuICAgICAgY29sb3I6ICNBQUFBQUE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYi1mb3JtLWxpc3R7XHJcbiAgICBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSksdGV4dGFyZWF7XHJcbiAgICAgICY6Zm9jdXMsJjphY3RpdmV7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgfVxyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDO1xyXG4gICAgICBAaW5jbHVkZSBmb3JtLXBsYWNlaG9sZXIoKXtcclxuICAgICAgICBjb2xvcjogI0FBQUFBQTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAuaGFzLWVycm9ye1xyXG4gICAgICBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSksdGV4dGFyZWF7XHJcbiAgICAgICAgJjpmb2N1cywmOmFjdGl2ZXtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkU3RTc7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0ZGMDAwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvbnQtc2l6ZTogMDtcclxuICAgIG1hcmdpbi10b3A6IC0uNXJlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC41cmVtO1xyXG5cclxuICAgIGxpe1xyXG4gICAgICBwYWRkaW5nOiAuNXJlbTtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cclxuICAgICAgJi5hY2NlcHQtcG9saWN5e1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLmJ0bi1zdWJtaXR7XHJcbiAgICAmOmhvdmVyLCAmOmZvY3Vze1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgLy9jb2xvcjogcmdiYSgzNCwgMzQsIDM0LCAwLjYpO1xyXG4gICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgb3BhY2l0eToxO1xyXG4gICAgICAvL2JveC1zaGFkb3c6IDBweCA2cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4gICAgfVxyXG4gICAgJi5idG57XHJcbiAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgb3BhY2l0eTouNztcclxuICAgICAgfVxyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICB9XHJcbiAgICAvL0BleHRlbmQgJWJ0bjtcclxuICAgIG1pbi13aWR0aDogMThyZW07XHJcbiAgICBiYWNrZ3JvdW5kOiAjRkZGMTY2O1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjRkZGMTY2O1xyXG4gICAgY29sb3I6IHJnYmEoMzQsIDM0LCAzNCwgMC41KTtcclxuICAgIGJveC1zaGFkb3c6IDBweCA2cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcbiAgfVxyXG5cclxuICAuaGFzLWVycm9ye1xyXG4gICAgaW5wdXQsdGV4dGFyZWF7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkU3RTc7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNGRjAwMDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZm9ybS1zdWJtaXQtbWVzc2FnZXtcclxuICAgIG1heC13aWR0aDogMjhyZW07XHJcbiAgICBmb250LXNpemU6IDIuNHJlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xyXG5cclxuICAgIHB7Zm9udC1zaXplOiAxMDAlO31cclxuXHJcbiAgICAmX190aXRsZXtcclxuICAgICAgZm9udC1zaXplOiAxMDAlO1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIH1cclxuXHJcbiAgICAmX190eHR7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xyXG4gICAgICAvL2ZvbnQtc2l6ZTogMTAwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5lcnJvci1tZXNzYWdle1xyXG4gICAgcGFkZGluZy1sZWZ0OiAuNXJlbTtcclxuICB9XHJcblxyXG4gICZfX3R4dHtcclxuICAgIHB7Zm9udC1zaXplOiAxMDAlO31cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQodGFibGV0IGRvd24pe1xyXG4gICAgLmNvbnRhaW5lcnt0b3A6MDt9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgIC8vbWFyZ2luLXRvcDogLTVyZW07XHJcblxyXG4gICAgJl9fdHh0e1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgcHtmb250LXNpemU6IDEwMCU7fVxyXG4gICAgfVxyXG5cclxuICAgIC5jb250YWluZXJ7dG9wOiAtOHJlbTt9XHJcblxyXG4gICAgLnRleHQtcmlnaHR7XHJcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDI1cHgpe1xyXG4gICAgLmItZm9ybS1saXN0e1xyXG4gICAgICBtYXJnaW4tbGVmdDogLS41cmVtO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IC0uNXJlbTtcclxuICAgICAgbGl7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuLnMtaGVyby1haXtcclxuXHJcbiAgJjpub3QoLnRleHQtd2hpdGUpe1xyXG4gICAgW2NsYXNzXj1cInRpdGxlLVwiXXtcclxuICAgICAgY29sb3I6ICRjb2xvci1oZWFkaW5nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICY6bm90KC5zLWhlcm8taW5kdXN0cmllcyk6bm90KC5zLWhlcm8tY29udGVudCl7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAyNHJlbTtcclxuICAgICAgJjphZnRlcntcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDE0MDBweCBhdXRvO1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDU2JSAxMDAlO1xyXG4gICAgICB9XHJcbiAgICAgIC5zLWhlcm8tYWlfX2Jne1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDc1JSAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwMHB4IGF1dG87XHJcbiAgICAgICAgYmFja2dyb3VuZC1ibGVuZC1tb2RlOiBtdWx0aXBseTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjFGMUYxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC50aXRsZS0xe1xyXG4gICAgICBmb250LXNpemU6IDMycHg7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5zLWhlcm8taW5kdXN0cmllc3tcclxuXHJcbiAgJjpub3QoLnRleHQtd2hpdGUpe1xyXG4gICAgW2NsYXNzXj1cInRpdGxlLVwiXXtcclxuICAgICAgY29sb3I6ICRjb2xvci1oZWFkaW5nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICY6YWZ0ZXJ7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMTQwMHB4IGF1dG87XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDU2JSAxMDElO1xyXG4gICAgfVxyXG4gICAgJl9fYmcuYmctaW1ne1xyXG4gICAgICAvL2JhY2tncm91bmQtcG9zaXRpb246IDc1JSAwJTtcclxuICAgICAgLy9iYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTAwJTtcclxuICAgIH1cclxuICAgIHBhZGRpbmctYm90dG9tOiAxNnJlbTtcclxuICB9XHJcbn1cclxuXHJcbi5wYWdlLXRlbXBsYXRlLXBhZ2UtYWl7XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIC5zLWhlcm8tYWl7XHJcbiAgICAgIC5zLWhlcm9fX3R4dHtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzMCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi5yZXNwb25zaXZlLWVtYmVke1xyXG5cclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG5cclxuICA+aW1nLD5pZnJhbWUsPnZpZGVvLD4udmlkZW8td3Jwe1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcclxuICAgIEBpbmNsdWRlIGFic29sdXRlU3RyZXRjaDtcclxuXHJcbiAgfVxyXG5cclxuICA+IGlmcmFtZXtcclxuICAgIG9iamVjdC1maXQ6IGZpbGw7XHJcbiAgfVxyXG5cclxuICA+LmJnLWltZ3tiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO31cclxuXHJcbiAgJi13cnB7XHJcblxyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogNTtcclxuXHJcbiAgICAmLm0tc2hhZG93e1xyXG4gICAgICAmOmFmdGVye1xyXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBoZWlnaHQ6IDcyJTtcclxuICAgICAgICB0b3A6IGF1dG87XHJcbiAgICAgICAgcmlnaHQ6IC0zcmVtO1xyXG4gICAgICAgIGxlZnQ6IC0zcmVtO1xyXG4gICAgICAgIGJvdHRvbTogLTNyZW07XHJcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgICAgei1pbmRleDogLTE7XHJcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgICAgLnJlc3BvbnNpdmUtZW1iZWR7Ym9yZGVyLXJhZGl1czogMXJlbTt9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5iLXNvY2lhbC1pbmxpbmV7XHJcbiAgZm9udC1zaXplOiAwO1xyXG4gIGxpe1xyXG4gICAgcGFkZGluZzogMCA3cHg7XHJcbiAgICBhe1xyXG4gICAgICAmOmhvdmVye1xyXG4gICAgICAgIG9wYWNpdHk6IC44O1xyXG4gICAgICB9XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzIGVhc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYWJzLWxpbmt7XHJcbiAgQGluY2x1ZGUgYWJzb2x1dGVTdHJldGNoO1xyXG4gIHotaW5kZXg6IDU7XHJcbn1cclxuXHJcbi5iLWFpLXBhcnRuZXJze1xyXG5cclxuICAmX19pbWd7XHJcbiAgICBtYXJnaW4tdG9wOiAtMS41cmVtO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIG1heC13aWR0aDogOTZyZW07XHJcbiAgICBpbWd7XHJcbiAgICAgICY6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6IDA7fVxyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDVyZW07XHJcbiAgICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcclxuICAgICAgbWF4LWhlaWdodDogNS45cmVtO1xyXG4gICAgICBtaW4taGVpZ2h0OiA0LjlyZW07XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICBvYmplY3QtZml0OiBjb250YWluO1xyXG5cclxuICAgICAgJi5iaWcsJjpudGgtY2hpbGQoMil7XHJcbiAgICAgICAgbWF4LWhlaWdodDogNS45cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAuc2xpZGVyLWl0ZW17XHJcbiAgICAgIG1pbi13aWR0aDogMTByZW07XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgZmxleDogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2ltZy1zbGlkZXJ7XHJcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICAuc2xpZGVyLWl0ZW17XHJcbiAgICAgIHBhZGRpbmc6IDFyZW07XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMS41dnc7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXZ3O1xyXG5cclxuICAgICAgaW1ne1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLnNsaWNrLWRvdHN7XHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgJi5zbGlkZXItbWFycXVlZXtcclxuICAgICAgZGlzcGxheTpmbGV4O1xyXG4gICAgICBmbGV4LXdyYXA6bm93cmFwO1xyXG4gICAgICB3aGl0ZS1zcGFjZTpub3dyYXA7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgICAgbWluLXdpZHRoOiAwO1xyXG5cclxuICAgICAgJi5jbG9uZWR7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDoxLjVyZW07bGVmdDoxLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICAvL292ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgICAvL292ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIC5zbGljay10cmFjaywuc2xpY2stbGlzdHtcclxuICAgICAgICAvL292ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgICB9XHJcbiAgICAgICYuY2xvbmVke1xyXG4gICAgICAgIC5zbGlkZXItaXRlbXtcclxuICAgICAgICAgICY6Zmlyc3Qtb2YtdHlwZXtcclxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC5zbGlkZXItaXRlbXtcclxuICAgICAgICAmOmZpcnN0LW9mLXR5cGV7XHJcbiAgICAgICAgICAvL3BhZGRpbmctbGVmdDogMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xyXG4gICAgICAgIG1pbi13aWR0aDogMDtcclxuICAgICAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgICAgICBpbWd7XHJcbiAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XHJcbiAgICAgICAgICAvL21pbi13aWR0aDogMjV2dztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9mbGV4OiAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCh0YWJsZXQgZG93bil7XHJcblxyXG4gICAgbWFyZ2luLXRvcDogLTEwcmVtO1xyXG5cclxuICAgICZfX3R4dHtcclxuICAgICAgbWF4LXdpZHRoOiA1MHJlbTtcclxuICAgIH1cclxuXHJcbiAgICAmX19pbWd7XHJcbiAgICAgIG1hcmdpbi10b3A6IDByZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgbWFyZ2luLXRvcDogLTRyZW07XHJcbiAgICAmX19pbWd7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgbWFyZ2luLXRvcDogMS41cmVtO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMjBweCk7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OmF1dG87XHJcbiAgICAgIG1hcmdpbi1yaWdodDphdXRvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDI1cHgpe1xyXG4gICAgJl9faW1ne1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgID5pbWd7XHJcbiAgICAgICAgLy9tYXJnaW4tcmlnaHQ6IDUlO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICAgICAgICBtYXgtd2lkdGg6IDI0JTtcclxuICAgICAgICBmbGV4OiAwIDEgYXV0bztcclxuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLmItYm94LXJldmlld3tcclxuXHJcbiAgJi1saXN0e1xyXG5cclxuICAgICYucm93e1xyXG4gICAgICAmLnNsaWNrLXNsaWRlcntcclxuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtYXJnaW4tdG9wOiA0cmVtO1xyXG5cclxuICAgID4uY29sdW1ue1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiAxLjVyZW07XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcclxuICAgICAgICArIC5jb2x1bW57XHJcbiAgICAgICAgICBtYXJnaW4tdG9wOiAzcmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5iLWJveC1yZXZpZXd7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgZmxleDogMTtcclxuICAgICAgJl9fZm9vdGVye21hcmdpbi10b3A6IGF1dG87fVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWF4LXdpZHRoOiA0NHJlbTtcclxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcblxyXG4gICZfX3BpY3tcclxuICAgIG1hcmdpbi1ib3R0b206IDMuNHJlbTtcclxuICAgIGhlaWdodDogMTByZW07XHJcbiAgICB3aWR0aDogMTByZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuXHJcbiAgICBpbWd7XHJcbiAgICAgIG1heC13aWR0aDogMTByZW07XHJcbiAgICB9XHJcblxyXG4gICAgLnJlc3BvbnNpdmUtZW1iZWR7XHJcbiAgICAgIGhlaWdodDogMTByZW07XHJcbiAgICAgIHdpZHRoOiAxMHJlbTtcclxuICAgICAgaW1ne1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fdHh0e1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gIH1cclxuXHJcbiAgJl9fYm9keXtcclxuICAgIHBhZGRpbmctYm90dG9tOiAycmVtO1xyXG4gICAgZm9udC1zaXplOiAxLjZyZW07XHJcbiAgICBwe1xyXG4gICAgICBmb250LXNpemU6IDEwMCU7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19mb290ZXJ7XHJcbiAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICBjb2xvcjogJGNvbG9yLWdyZXkyO1xyXG4gICAgcGFkZGluZy10b3A6IDEuNXJlbTtcclxuXHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgLy9mbGV4LWdyb3c6IDE7XHJcblxyXG4gICAgcHtcclxuICAgICAgYXtcclxuICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb2xvcjogY3VycmVudENvbG9yO1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi1jb2x7XHJcbiAgICAgICY6bGFzdC1vZi10eXBle2JvcmRlcjpub25lO31cclxuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGNvbG9yLWJvcmRlcjtcclxuICAgICAgZmxleDogMCAxIGF1dG87XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDdyZW07XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMnJlbTtcclxuICAgICAgcGFkZGluZy1yaWdodDogMnJlbTtcclxuXHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgfVxyXG5cclxuICAgIHB7bWFyZ2luLWJvdHRvbTogMDt9XHJcbiAgfVxyXG5cclxuICAmX19hdXRob3J7XHJcbiAgICBjb2xvcjogIzIyMjtcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgJl9fdHh0LCZfX2F1dGhvcntcclxuICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJvZHktbW9iO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5iLXJlcG9ydHtcclxuXHJcbiAgJi1saXN0e1xyXG4gICAgbWF4LXdpZHRoOiA5MHJlbTtcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG5cclxuICAgIC5iLXJlcG9ydCArIC5iLXJlcG9ydHttYXJnaW4tdG9wOiAxcmVtO31cclxuXHJcbiAgfVxyXG5cclxuICAmLS1jYXJlZXJ7XHJcbiAgICAuYi1yZXBvcnR7XHJcbiAgICAgICZfX3BpY3tcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICAgIGltZ3tcclxuICAgICAgICAgIHdpZHRoOjEwMCU7XHJcbiAgICAgICAgICBoZWlnaHQ6MTAwJTtcclxuICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAmX19pbmZve1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMi40cmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDIuNHJlbTtcclxuICAgICAgICBwe1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07XHJcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtYm9keS1tb2I7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICZfX2luZm8tYnRue1xyXG4gICAgICAgIC5idG57bWluLXdpZHRoOiAwO31cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzcGxheTogZmxleDtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgJl9fcGlje1xyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWdyZWVuO1xyXG4gICAgcGFkZGluZzogM3JlbTtcclxuICAgIGZsZXg6IDAgMCAyNHJlbTtcclxuICAgIG1heC13aWR0aDogMjRyZW07XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICB9XHJcbiAgJl9faW5mb3tcclxuICAgIHBhZGRpbmctbGVmdDogNHJlbTtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDRyZW07XHJcbiAgICBmbGV4OiAxO1xyXG4gICAgZmxleDogMCAwIGNhbGMoMTAwJSAtIDI0cmVtKTtcclxuICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMjRyZW0pO1xyXG4gICAgYmFja2dyb3VuZDogI0U5RTlFOTtcclxuICAgIGNvbG9yOiAjMjIyO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cclxuICAgICYtdHh0e1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICAgIHBhZGRpbmctdG9wOiAuNzVyZW07XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAuNzVyZW07XHJcbiAgICB9XHJcblxyXG4gICAgJi1idG57XHJcbiAgICAgIGZsZXg6IDAgMSBhdXRvO1xyXG4gICAgICBtYXJnaW4tbGVmdDogNHJlbTtcclxuICAgIH1cclxuXHJcbiAgICBwe1xyXG4gICAgICBAZXh0ZW5kIC50ZXh0LS1sYXJnZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAmX19waWMsJl9faW5mb3tcclxuICAgICAgZmxleDogMCAwIDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgcGFkZGluZzogM3JlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyNXB4KXtcclxuICAgICYtbGlzdHtcclxuICAgICAgbWF4LXdpZHRoOiAyNDBweDtcclxuICAgIH1cclxuICAgICZfX2luZm97XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgICAgcGFkZGluZzogMS44cmVtIDJyZW0gM3JlbTtcclxuICAgIH1cclxuICAgICZfX2luZm8tdHh0e1xyXG4gICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XHJcbiAgICB9XHJcbiAgICAmX19pbmZvLWJ0bntcclxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4uYi1jdGEtYmVuZWZpdHtcclxuICAmOmJlZm9yZXtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDowO1xyXG4gICAgdG9wOjA7XHJcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgIHdpZHRoOiA1cmVtO1xyXG4gICAgaGVpZ2h0OiA1cmVtO1xyXG4gICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9pY29uL2NoZWNrLWMuc3ZnKSAwIDAgbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gIH1cclxuXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG1heC13aWR0aDogMjhyZW07XHJcbiAgbWluLXdpZHRoOiAyN3JlbTtcclxuXHJcbiAgJl9fdHh0e1xyXG4gICAgcGFkZGluZy1sZWZ0OiA1cmVtO1xyXG4gICAgcGFkZGluZy1yaWdodDogM3JlbTtcclxuICAgIHBhZGRpbmctdG9wOiAuNHJlbTtcclxuICAgIEBleHRlbmQgLnRleHQtLW1lZGl1bTtcclxuICB9XHJcblxyXG4gIHB7XHJcbiAgICBmb250LXNpemU6IDEwMCU7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgICY6YmVmb3Jle1xyXG4gICAgICB3aWR0aDogNHJlbTtcclxuICAgICAgaGVpZ2h0OiA0cmVtO1xyXG4gICAgfVxyXG5cclxuICAgIGZsZXg6IDAgMCA3MCU7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNHJlbTtcclxuXHJcbiAgICAmX190eHR7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjRweCl7XHJcbiAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgIG1pbi1oZWlnaHQ6IDdyZW07XHJcbiAgICBtYXgtd2lkdGg6IDk1JTtcclxuXHJcbiAgICAmX190eHR7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG4uYi1haS1wcm9kdWN0e1xyXG5cclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuXHJcbiAgQGF0LXJvb3QgLnNsaWNrLXNsaWRlciAme1xyXG4gICAgZGlzcGxheTogZmxleCFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICAmX19waWN7XHJcbiAgICBmbGV4OiAwIDAgNDUlO1xyXG4gICAgbWF4LXdpZHRoOiA0NSU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBpbWd7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICAgIG1hcmdpbi10b3A6IC0xMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19pbmZve1xyXG4gICAgZmxleDogMCAwIDU1JTtcclxuICAgIG1heC13aWR0aDogNTUlO1xyXG4gICAgcGFkZGluZy10b3A6IDFyZW07XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDRyZW07XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiA0cmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGV7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxLjhyZW07XHJcbiAgICBjb2xvcjogIzIyMjtcclxuICB9XHJcblxyXG4gICZfX3R4dHtcclxuICAgIC8vQGV4dGVuZCAudGV4dC0teGxhcmdlO1xyXG4gICAgQGV4dGVuZCAudGV4dC0tbWVkaXVtO1xyXG4gICAgcHtmb250LXNpemU6IDEwMCU7bGluZS1oZWlnaHQ6IDEuNTt9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgIHBhZGRpbmctYm90dG9tOiA2cmVtO1xyXG5cclxuICAgICZfX3BpYywmX19pbmZve1xyXG4gICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG4gICAgJl9fcGlje1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDEwJTtcclxuICAgICAgcGFkZGluZy1yaWdodDogMTAlO1xyXG4gICAgICBpbWd7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTEwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZfX2luZm97XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMnJlbTtcclxuICAgICAgcGFkZGluZy1yaWdodDogMnJlbTtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAudGV4dC1yaWdodHtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG5cclxuLmItYWktcHJvZHVjdC1zbGlkZXJ7XHJcblxyXG4gICZfX25hdntcclxuXHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjMpO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgZm9udC1zaXplOiAwO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgLy9ib3JkZXItYm90dG9tOiAxcHggc29saWQgI0U5RTlFOTtcclxuXHJcbiAgICAmLWljbntcclxuXHJcbiAgICAgIGhlaWdodDogNXJlbTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgZmxleC1ncm93OiAxO1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICAgIGltZyxzdmd7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgIC8vbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICAgIG1heC13aWR0aDogNi4ycmVtO1xyXG4gICAgICAgIG1heC1oZWlnaHQ6IDQuNnJlbTtcclxuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuaWNuLXV4e3dpZHRoOiA0LjVyZW07fVxyXG4gICAgfVxyXG5cclxuICAgICYtaXRte1xyXG5cclxuICAgICAgJi5pcy1hY3RpdmV7XHJcbiAgICAgICAgKntcclxuICAgICAgICAgIGNvbG9yOiAkY29sb3IteWVsbG93O1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdmd7XHJcbiAgICAgICAgICBwYXRoe2ZpbGw6ICRjb2xvci15ZWxsb3c7ZmlsbC1vcGFjaXR5OiAxO31cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGJvcmRlci1ib3R0b206IC44cmVtIHNvbGlkICRjb2xvci15ZWxsb3c7XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDEuOHJlbTtcclxuICAgICAgcGFkZGluZy1yaWdodDogMS44cmVtO1xyXG4gICAgICBtYXgtd2lkdGg6IDE4cmVtO1xyXG4gICAgICB3aWR0aDogMThyZW07XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAmLXRpdGxle1xyXG4gICAgICBAYXQtcm9vdCAuaXMtYWN0aXZlICZ7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgfVxyXG4gICAgICBmb250LXNpemU6IDEuNHJlbTtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDFyZW07XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7XHJcbiAgICAgIC8vbWFyZ2luLWJvdHRvbTogMXJlbjtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgLnNsaWNrLW5hdi5zbGljay1hcnJvd3tcclxuICAgICAgdG9wOiAyMCU7XHJcbiAgICB9XHJcbiAgICAmX19uYXZ7XHJcbiAgICAgICYtaXRte1xyXG4gICAgICAgICYuaXMtYWN0aXZle1xyXG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogM3B4O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL21hcmdpbi1ib3R0b206IC41cmVtO1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogLjVyZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogLjVyZW07XHJcbiAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xyXG4gICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogM3B4O1xyXG4gICAgICB9XHJcbiAgICAgICYtdGl0bGV7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wNGVtO1xyXG4gICAgICB9XHJcbiAgICAgIC8vJi10aXRsZXtmb259XHJcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcclxuICAgICAgLy9ib3JkZXItYm90dG9tOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDI1cHgpe1xyXG4gICAgJl9fbmF2e1xyXG4gICAgICAmLXRpdGxle1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcclxuICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICB9XHJcbiAgICAgICYtaWNue1xyXG4gICAgICAgIHN2ZyxpbWd7XHJcbiAgICAgICAgICBtYXgtd2lkdGg6IDQuMnJlbTtcclxuICAgICAgICAgIG1heC1oZWlnaHQ6IDMuNnJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuLmItdXNlLWNhc2UtbGlzdHtcclxuXHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcblxyXG4gICZfX2l0bXtcclxuICAgIHBhZGRpbmc6IDJyZW07XHJcbiAgICBmbGV4OiAwIDAgMzMlO1xyXG4gICAgbWF4LXdpZHRoOiAzMy4zMyU7XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcblxyXG4gICAgLy8uYi11c2UtY2FzZXtcclxuICAgIC8vICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi91c2UtY2FzZS0xLnN2ZykgNTAlIDAgbm8tcmVwZWF0O1xyXG4gICAgLy8gIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuICAgIC8vfVxyXG5cclxuICAgIC8vQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAxMntcclxuICAgIC8vICAmOm50aC1jaGlsZCgjeyRpfSl7XHJcbiAgICAvLyAgICAuYi11c2UtY2FzZXtcclxuICAgIC8vICAgICAgYmFja2dyb3VuZDogdXJsKCcuLi9pbWcvY29tbW9uL3VzZS1jYXNlLSN7JGl9LnN2ZycpIDUwJSAwIG5vLXJlcGVhdDtcclxuICAgIC8vICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgLy8gICAgfVxyXG4gICAgLy8gIH1cclxuICAgIC8vfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICAuYi11c2UtY2FzZXtcclxuICAgIC8vaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bil7XHJcbiAgICAmX19pdG17XHJcbiAgICAgIGZsZXg6IDAgMCA1MCU7XHJcbiAgICAgIG1heC13aWR0aDogNTAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuXHJcbiAgICBtYXJnaW4tbGVmdDogLTJyZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC0ycmVtO1xyXG5cclxuICAgICZfX2l0bXtcclxuICAgICAgZmxleDogMCAwIDUwJTtcclxuICAgICAgbWF4LXdpZHRoOiA1MCU7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzc1cHgpe1xyXG4gICAgJl9faXRte1xyXG4gICAgICBwYWRkaW5nOiAxcmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5iLXVzZS1jYXNle1xyXG5cclxuICAmOmhvdmVye1xyXG4gICAgLy9ib3gtc2hhZG93OiAkc2hhZG93O1xyXG4gIH1cclxuXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbiAgLy9iYWNrZ3JvdW5kOiAkY29sb3IteWVsbG93O1xyXG4gIC8vcGFkZGluZy10b3A6IDJyZW07XHJcbiAgLy9wYWRkaW5nLWJvdHRvbTogMnJlbTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBtaW4taGVpZ2h0OiAyMnJlbTtcclxuXHJcbiAgJl9fcGlje1xyXG4gICAgLy9mbGV4OiAwIDAgMTAwJTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgLy9oZWlnaHQ6IDEycmVtO1xyXG4gICAgLy9kaXNwbGF5OiBmbGV4O1xyXG4gICAgLy9mbGV4LWdyb3c6IDE7XHJcbiAgICAvL2FsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAvL2p1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cclxuICAgICYuX2ItMXtcclxuICAgICAgLy90b3A6MjAlO3Bvc2l0aW9uOnJlbGF0aXZlO1xyXG4gICAgICAvL2ltZ3ttYXgtd2lkdGg6IDEzMCU7fVxyXG4gICAgfVxyXG5cclxuICAgIGltZ3tcclxuICAgICAgLy9tYXJnaW4tbGVmdDogLTEzJTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgbWF4LWhlaWdodDogMTAwJTtcclxuICAgICAgLy9oZWlnaHQ6IDEwMCU7XHJcbiAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19pbmZve1xyXG4gICAgZmxleDogMCAwIDEwMCU7XHJcbiAgICAvL2hlaWdodDogMTAwJTtcclxuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xyXG4gICAgLy9tYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDEycmVtKTtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblxyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDowO3RvcDo1NSU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcblxyXG4gICZfX3RpdGxle1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGZvbnQtc2l6ZTogMnJlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XHJcbiAgICBtYXgtd2lkdGg6IDIwcmVtO1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAmLWxpc3R7XHJcbiAgICB9XHJcbiAgICAmX19pbmZve1xyXG4gICAgICAvL21heC13aWR0aDogY2FsYygxMDAlIC0gOHJlbSlcclxuICAgIH1cclxuICAgICZfX3RpdGxle1xyXG4gICAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICB9XHJcbiAgICAmX19waWN7XHJcbiAgICAgIC8vd2lkdGg6IDlyZW07XHJcbiAgICAgIC8vZmxleDogMCAwIDlyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzNzVweCl7XHJcbiAgICBtaW4taGVpZ2h0OiAwO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5iLWNhbGxiYWNrLWZvcm17XHJcblxyXG4gIEBleHRlbmQgJW1vYmlsZS1mb3JtO1xyXG5cclxuICB0ZXh0YXJlYXtcclxuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xyXG4gICAgbWluLWhlaWdodDogMTRyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQztcclxuICAgIEBpbmNsdWRlIGZvcm0tcGxhY2Vob2xlcigpe1xyXG4gICAgICBjb2xvcjogI0FBQUFBQTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5iLWZvcm0tbGlzdHtcclxuICAgIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKSx0ZXh0YXJlYXtcclxuICAgICAgJjpmb2N1cywmOmFjdGl2ZXtcclxuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgICB9XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7XHJcbiAgICAgIEBpbmNsdWRlIGZvcm0tcGxhY2Vob2xlcigpe1xyXG4gICAgICAgIGNvbG9yOiAjQUFBQUFBO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmhhcy1lcnJvcntcclxuICAgICAgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLHRleHRhcmVhe1xyXG4gICAgICAgICY6Zm9jdXMsJjphY3RpdmV7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZFN0U3O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNGRjAwMDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb250LXNpemU6IDA7XHJcbiAgICBtYXJnaW4tdG9wOiAtLjVyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAtLjVyZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC41cmVtO1xyXG5cclxuICAgIGxpe1xyXG4gICAgICBwYWRkaW5nOiAuNXJlbTtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC5idG4tc3VibWl0e1xyXG4gICAgQGV4dGVuZCAuYnRuLWZsYXQ7XHJcbiAgICBAZXh0ZW5kIC5idG4tbW9yZTtcclxuICAgICYuYnRue1xyXG4gICAgICAmOmhvdmVye1xyXG4gICAgICAgIG9wYWNpdHk6Ljc7XHJcbiAgICAgIH1cclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmhhcy1lcnJvcntcclxuICAgIGlucHV0LHRleHRhcmVhe1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZFN0U3O1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjRkYwMDAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmZvcm0tc3VibWl0LW1lc3NhZ2V7XHJcbiAgICBtYXgtd2lkdGg6IDI4cmVtO1xyXG4gICAgZm9udC1zaXplOiAyLjRyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4yNTtcclxuXHJcbiAgICBwe2ZvbnQtc2l6ZTogMTAwJTt9XHJcblxyXG4gICAgJl9fdGl0bGV7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fdHh0e1xyXG4gICAgICBsaW5lLWhlaWdodDogMS4yNTtcclxuICAgICAgLy9mb250LXNpemU6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgIC50ZXh0LXJpZ2h0e1xyXG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAuY29sdW1uLm1sLWF1dG97XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5nZm9ybV9mb290ZXJ7XHJcbiAgICAgIG1hcmdpbi10b3A6IDFyZW07XHJcbiAgICB9XHJcblxyXG4gICAgZm9ybXtcclxuICAgICAgLmNvbHVtbntcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgICAgLy9wYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgICAgIC8vcGFkZGluZy1yaWdodDogMTBweDtcclxuICAgIH1cclxuXHJcbiAgICAuYi1mb3JtLWxpc3R7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAtLjVyZW07XHJcbiAgICAgIG1hcmdpbi1yaWdodDogLS41cmVtO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyNXB4KXtcclxuICAgIC5iLWZvcm0tbGlzdHtcclxuICAgICAgbGl7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5iLXBhcnRuZXJzLWxpc3R7XHJcbiAgZm9udC1zaXplOiAwO1xyXG4gICZfX2l0bXtcclxuICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIGltZ3tcclxuICAgICAgLy9tYXgtaGVpZ2h0OiA1cmVtO1xyXG4gICAgICAvL2hlaWdodDogYXV0bztcclxuICAgICAgLy93aWR0aDogYXV0bztcclxuICAgICAgLy9tYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYi1sb2NhdGlvbi1saXN0e1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC13cmFwOiB3cmFwO1xyXG5cclxuICAuYi1sb2NhdGlvbntcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJl9faXRte1xyXG4gICAgcGFkZGluZzogMnJlbTtcclxuICAgIGZsZXg6IDAgMCAzMyU7XHJcbiAgICBtYXgtd2lkdGg6IDMzLjMzJTtcclxuICAgIGZsZXgtZ3JvdzogMTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pe1xyXG4gICAgJl9faXRte1xyXG4gICAgICBmbGV4OiAwIDAgNTAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDUwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSBhbmQgKG1pbi13aWR0aDogMzc1cHgpe1xyXG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAtMXJlbTtcclxuICAgICZfX2l0bXtcclxuICAgICAgZmxleDogMCAwIDMzJTtcclxuICAgICAgbWF4LXdpZHRoOiAzMyU7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcclxuICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcclxuICAgICAgPiBkaXZ7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgICAuYi1sb2NhdGlvbl9faW5mb3twYWRkaW5nLXRvcDogOSU7fVxyXG4gICAgICAuYi1sb2NhdGlvbl9fdGl0bGV7Zm9udC1zaXplOiAycmVtO2ZvbnQtc2l6ZTogNHZ3O31cclxuICAgICAgLmItbG9jYXRpb25fX2NpdHl7Zm9udC1zaXplOiAxLjhyZW07Zm9udC1zaXplOiAzLjZ2dzt9XHJcbiAgICAgIC5iLWxvY2F0aW9uX19tYXJrZXJ7bWFyZ2luLWJvdHRvbTogMDttYXJnaW4tYm90dG9tOiAxdnc7fVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzc0cHgpe1xyXG4gICAgJl9faXRte1xyXG4gICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICA+IGRpdntcclxuICAgICAgICB3aWR0aDogMjRyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAyNHJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5iLWxvY2F0aW9ue1xyXG4gIHdpZHRoOiAyOHJlbTtcclxuICBoZWlnaHQ6IDI4cmVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG5cclxuICAmX19pbmZve1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOjA7bGVmdDowO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBwYWRkaW5nLXRvcDogNHJlbTtcclxuICAgIC8vZGlzcGxheTogZmxleDtcclxuICAgIC8vZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIC8vYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIC8vanVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgfVxyXG5cclxuICAmX19tYXJrZXJ7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGV7XHJcbiAgICBAZXh0ZW5kIC50aXRsZS00O1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBjb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgfVxyXG5cclxuICAmX19jaXR5e1xyXG4gICAgZm9udC1zaXplOiAyLjZyZW1cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuLmItdmFjYW5jeS1saXN0e1xyXG4gIG1hcmdpbi10b3A6IDNyZW07XHJcbiAgbWF4LXdpZHRoOiA0MDBweDtcclxuXHJcbiAgJl9faXRte1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XHJcbiAgICAvL2JhY2tncm91bmQtY29sb3I6ICNmNGY0ZjQ7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuXHJcbi5iLXZhY2FuY3l7XHJcblxyXG4gICYtd3Jwe1xyXG4gICAgbWF4LXdpZHRoOiA0MDBweDtcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgcGFkZGluZy10b3A6IDIwcHg7XHJcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7XHJcblxyXG4gIEBpbmNsdWRlIGRpc3BsYXlGbGV4O1xyXG4gIEBpbmNsdWRlIGp1c3RpZnlDb250ZW50U3BhY2VCZXR3ZWVuO1xyXG5cclxuICAmX19ib2R5e1xyXG4gICAgbWF4LXdpZHRoOiA4MCU7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGV7XHJcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXRpdGxlO1xyXG4gICAgY29sb3I6ICMwYTBhMGE7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgLy9sZXR0ZXItc3BhY2luZzogLS4wNWVtO1xyXG4gICAgYXtcclxuICAgICAgLy8mOmhvdmVye1xyXG4gICAgICAvLyAgY29sb3I6ICRjb2xvci1idG47XHJcbiAgICAgIC8vfVxyXG4gICAgICBjb2xvcjogY3VycmVudENvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fY2l0eXtcclxuICAgIGNvbG9yOiAkY29sb3ItZ3JleTI7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICAvL2xldHRlci1zcGFjaW5nOiAtLjA1ZW07XHJcbiAgfVxyXG5cclxuICAmX19saW5re1xyXG4gICAgJjpob3ZlcntcclxuICAgICAgLy90ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgICAgb3BhY2l0eTogLjc7XHJcbiAgICAgIGNvbG9yOiAkY29sb3Itb3JhbmdlO1xyXG4gICAgfVxyXG4gICAgY29sb3I6ICRjb2xvci1vcmFuZ2U7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgbWF4LXdpZHRoOiAyMCU7XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpe1xyXG4gICAgJi1saXN0LCAmLXdycHtcclxuICAgICAgLy9tYXgtd2lkdGg6IDgwJTtcclxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgICAgJi5hbGlnbi1yaWdodHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KXtcclxuICAgICYtbGlzdHtcclxuICAgICAgbWFyZ2luLXRvcDogMjVweDtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogNzVweDtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuLmItaG9tZS12aWRlb3tcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbWF4LXdpZHRoOiA5NnJlbTtcclxuICBtYXJnaW4tbGVmdDogYXV0bztcclxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcblxyXG4gIC5idG4tcGxheXtcclxuICAgICY6aG92ZXJ7XHJcbiAgICAgIC5pY24tcGxheS1zaGFkb3d7XHJcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSguOSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmlzLWhpZGV7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLC01MCUpO1xyXG4gICAgei1pbmRleDogNTtcclxuICAgIGZvbnQtc2l6ZTogMXJlbTtcclxuICAgIC5pY24tcGxheS1zaGFkb3d7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB3aWR0aDogMjJlbTtcclxuICAgICAgaGVpZ2h0OiAyMmVtO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2ljb24vcGxheS1jaXJjbGUtc2hhZG93LnN2ZykgNTAlIDUwJSBuby1yZXBlYXQ7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4zcyBlYXNlO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS4ydnc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLnJlc3BvbnNpdmUtZW1iZWR7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fdmlkZW8tbW9ie1xyXG4gICAgPiBpZnJhbWV7XHJcbiAgICAgIG9iamVjdC1maXQ6IGluaXRpYWw7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTM2MHB4KXtcclxuICAgIG1heC13aWR0aDogNzhyZW07XHJcbiAgfVxyXG5cclxufVxyXG4iLCJbY2xhc3MqPSdidG4tJ117XHJcbiAgJjpob3Zlcnt0ZXh0LWRlY29yYXRpb246IG5vbmU7fVxyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAvL2JvcmRlcjogbWVkaXVtIG5vbmU7XHJcbn1cclxuXHJcbi5idG4taWNvbntcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICBib3JkZXI6IG1lZGl1bSBub25lO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG4gIHdpZHRoOiBhdXRvO1xyXG4gIHBhZGRpbmc6IDEuMXJlbSAxcmVtO1xyXG59XHJcblxyXG4uYnRuLWRyb3Bkb3duLC5idG4tbGlua3tcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICBib3JkZXI6IG1lZGl1bSBub25lO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgcGFkZGluZzogMDtcclxufVxyXG5cclxuLmJ0bi0tYmxvY2t7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5idG4sIC5idXR0b24sICVidG57XHJcbiAgJjpsaW5re1xyXG4gICAgJjpob3Zlcnt0ZXh0LWRlY29yYXRpb246IG5vbmU7fVxyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIH1cclxuICAmOmhvdmVyLCY6Zm9jdXN7XHJcbiAgICAvL2JvcmRlci1jb2xvcjogZGFya2VuKCRjb2xvci1wcmltYXJ5LCAxMCUpO1xyXG4gICAgLy9iYWNrZ3JvdW5kOiBkYXJrZW4oJGNvbG9yLXByaW1hcnksIDEwJSk7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIG9wYWNpdHk6IC43O1xyXG4gICAgLy9ib3JkZXItY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcbiAgICAvL2NvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICB9XHJcbiAgJjphY3RpdmV7XHJcbiAgICAvL2NvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICB9XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWJ0bjtcclxuICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItcHJpbWFyeTtcclxuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWJhc2U7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG4gIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgY29sb3I6ICNmZmY7XHJcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcclxuICBwYWRkaW5nOiAxLjJyZW0gMS41cmVtIDEuMnJlbTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogY29sb3IgLjNzLCBiYWNrZ3JvdW5kIC4zcywgYm9yZGVyLWNvbG9yIC4zcywgb3BhY2l0eSAuM3MgZWFzZTtcclxuXHJcbiAgJi5uby1yYWRpdXN7XHJcbiAgICBib3JkZXItcmFkaXVzOiAwO1xyXG4gIH1cclxuXHJcbiAgJi5tLXdoaXRle1xyXG4gICAgJjpob3ZlcntcclxuICAgICAgLy9iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgLy9jb2xvcjogI2ZmZjtcclxuICAgICAgLy9ib3JkZXItY29sb3I6ICNmZmY7XHJcbiAgICAgIG9wYWNpdHk6IC43O1xyXG4gICAgfVxyXG4gICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgIGNvbG9yOiAkY29sb3ItdGV4dDtcclxuICB9XHJcblxyXG4gICYuYnRuLS13aGl0ZXtcclxuICAgICY6aG92ZXIsJjpmb2N1c3tcclxuICAgICAgY29sb3I6ICMwMDA7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogI2ZmZjtcclxuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7XHJcbiAgICBib3JkZXItY29sb3I6ICNmZmY7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xyXG4gIH1cclxuXHJcbiAgJi5idG4tLXByaW1hcnl7XHJcbiAgICAmOmhvdmVyLCY6Zm9jdXN7XHJcbiAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICBib3JkZXItY29sb3I6IGRhcmtlbigkY29sb3ItcHJpbWFyeSwxMCUpO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBkYXJrZW4oJGNvbG9yLXByaW1hcnksMTAlKTtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1wcmltYXJ5O1xyXG4gIH1cclxuXHJcblxyXG4gICYubS1zaGFkb3d7XHJcbiAgICBib3gtc2hhZG93OiAkYnRuLXNoYWRvdztcclxuICB9XHJcbiAgJi5tLWZpeGVke1xyXG4gICAgJi0tbWR7bWluLXdpZHRoOiAxNnJlbTt9XHJcbiAgICBtaW4td2lkdGg6IDE4cmVtO1xyXG4gIH1cclxuICAmLm0tcm91bmRlZHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICYubS1maXhlZHtcclxuICAgICAgJi0tbWR7bWluLXdpZHRoOiAxNjBweDt9XHJcbiAgICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICB9XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmJ1dHRvbntcclxuICBib3JkZXI6IG1lZGl1bSBub25lO1xyXG4gIHNwYW57dmVydGljYWwtYWxpZ246IG1pZGRsZTt9XHJcbn1cclxuXHJcblxyXG4uYnRuLWZsYXR7XHJcbiAgJi5pcy1hY3RpdmV7fVxyXG4gIEBleHRlbmQgLmJ0bjtcclxuICAmOmhvdmVye1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgY29sb3I6ICNmZmY7XHJcbiAgfVxyXG5cclxuICAmLm0td2hpdGV7XHJcbiAgICAmOmhvdmVyLCY6Zm9jdXN7XHJcbiAgICAgIC8vYmFja2dyb3VuZDogI2ZmZjtcclxuICAgICAgLy9jb2xvcjogJGNvbG9yLXRleHQ7XHJcbiAgICAgIG9wYWNpdHk6IC43O1xyXG4gICAgfVxyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZmO1xyXG4gICAgY29sb3I6ICNmZmY7XHJcbiAgfVxyXG5cclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbn1cclxuXHJcbi5idG4tc3VibWl0e1xyXG4gIEBleHRlbmQgJWJ0bjtcclxufVxyXG5cclxuLmJ0bi1tb3Jle1xyXG4gIG1pbi13aWR0aDogMThyZW07XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi5iYWNrLWxpbmt7XHJcbiAgQGluY2x1ZGUgbm9kZWNvcjtcclxuICBjb2xvcjogJGNvbG9yLWdyZXkyO1xyXG4gIHN2ZyxbY2xhc3NePVwiaWNvblwiXXtcclxuICAgIG1hcmdpbi1yaWdodDogMXJlbTtcclxuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcclxuICB9XHJcblxyXG4gICY6aG92ZXJ7XHJcbiAgICBvcGFjaXR5OiAuNztcclxuICB9XHJcblxyXG4gICYudGV4dC0tYmx1ZXtjb2xvcjogJGNvbG9yLWJsdWU7fVxyXG4gICYudGV4dC0tb3Jhbmdle2NvbG9yOiAkY29sb3Itb3JhbmdlO31cclxuXHJcbn1cclxuXHJcbiRjbG9zZS13aWR0aDogMnJlbTtcclxuJGNsb3NlLWxpbmUtd2lkdGg6IC4ycmVtO1xyXG5cclxuLmNsb3NlLWJ1dHRvbntcclxuICAmOmJlZm9yZSwmOmFmdGVye1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6MDtcclxuICAgIGxlZnQ6ICgkY2xvc2Utd2lkdGgvMikgKyAkY2xvc2UtbGluZS13aWR0aC8yO1xyXG4gICAgaGVpZ2h0OiAkY2xvc2Utd2lkdGggKyAkY2xvc2UtbGluZS13aWR0aC8yO1xyXG4gICAgd2lkdGg6ICRjbG9zZS1saW5lLXdpZHRoO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgfVxyXG4gICY6YmVmb3Jle3RyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTt9XHJcbiAgJjphZnRlcnt0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO31cclxuXHJcbiAgJjpob3ZlcntcclxuICAgIG9wYWNpdHk6IC41O1xyXG4gIH1cclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtYXJnaW4tbGVmdDogYXV0bztcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgZm9udC1zaXplOiAwO1xyXG4gIHdpZHRoOiAkY2xvc2Utd2lkdGg7XHJcbiAgaGVpZ2h0OiAkY2xvc2Utd2lkdGg7XHJcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcclxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zcyBlYXNlLCBiYWNrZ3JvdW5kIC4zcyBlYXNlO1xyXG59XHJcblxyXG4uYnRuLXdhdGNoe1xyXG4gICY6aG92ZXIsJjpmb2N1c3tcclxuICAgIG9wYWNpdHk6IC43O1xyXG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcclxuICAgIGNvbG9yOiByZ2JhKDAsMCwwLC43KTtcclxuICB9XHJcbiAgJi5idG4tZmxhdHtcclxuICAgICY6aG92ZXIsJjpmb2N1c3tcclxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcclxuICAgICAgY29sb3I6IHJnYmEoMCwwLDAsLjcpO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgfVxyXG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcclxuICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgfVxyXG4gIGJvcmRlci1jb2xvcjogcmdiYSgwLDAsMCwuNSk7XHJcbiAgY29sb3I6IHJnYmEoMCwwLDAsLjcpO1xyXG4gIC8vcGFkZGluZy1sZWZ0OiAxLjhyZW07XHJcbiAgLy9wYWRkaW5nLXJpZ2h0OiAxLjhyZW07XHJcbn0iLCIlYnZfaGlkZGVuIHtcclxuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XHJcbn1cclxuJWZpbGxlZF9vYmoge1xyXG4gIGNvbnRlbnQ6ICcnO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiVzbGlkZXJIMTAwe1xyXG4gIC5zbGljay10cmFja3tcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgLnNsaWNrLXNsaWRle1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5zbGljay10cmFjaywuc2xpY2stbGlzdHtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcbiAgLnNsaWNrLXNsaWRle1xyXG4gICAgPmRpdntcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICA+IGRpdntcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4uc2xpY2stc2xpZGVye1xyXG5cclxuICAmLnNsaWRlci1wcm9ncmVzc2l2ZXtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICBoZWlnaHQ6MDtcclxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgIHRyYW5zaXRpb246YWxsIDEuMnMgZWFzZTtcclxuXHJcbiAgICAmLnNsaWNrLWluaXRpYWxpemVkIHtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5oYXMtcG9wb3ZlcntcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDUwO1xyXG4gICAgb3ZlcmZsb3cteTogdmlzaWJsZTtcclxuICAgIC5zbGljay10cmFjaywuc2xpY2stbGlzdHtcclxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLnNsaWRlci12aXNpYmxle1xyXG4gICAgLnNsaWNrLXRyYWNrLC5zbGljay1saXN0e1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zbGljay1kb3Rze1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW4tdG9wOiAycmVtO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgZm9udC1zaXplOiAwO1xyXG4gICAgcGFkZGluZy10b3A6IDFyZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcclxuICAgIGxpe1xyXG4gICAgICAmLnNsaWNrLWFjdGl2ZXtcclxuICAgICAgICBidXR0b257XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICBwYWRkaW5nOiAxcmVtO1xyXG4gICAgICBidXR0b257XHJcbiAgICAgICAgd2lkdGg6IDIuMnJlbTtcclxuICAgICAgICBoZWlnaHQ6IDIuMnJlbTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UgZG93bil7XHJcbiAgICAgICAgcGFkZGluZzogLjVyZW07XHJcbiAgICAgICAgYnV0dG9ue1xyXG4gICAgICAgICAgd2lkdGg6IDEycHg7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEycHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuc2xpY2stYXJyb3d7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIHotaW5kZXg6IDUwO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgZm9udC1zaXplOiA0cmVtO1xyXG4gICAgY29sb3I6ICRjb2xvci10ZXh0O1xyXG4gICAgdHJhbnNpdGlvbjogLjVzO1xyXG5cclxuICAgICYuc2xpY2stZGlzYWJsZWR7XHJcbiAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgICYuc2xpY2stcHJldntcclxuICAgICAgbGVmdDotNnJlbTtcclxuICAgIH1cclxuICAgICYuc2xpY2stbmV4dHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcbiAgICAgIHJpZ2h0Oi02cmVtO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHhsYXJnZSB1cCl7XHJcbiAgICAgIGZvbnQtc2l6ZTogNnJlbTtcclxuICAgICAgJi5zbGljay1wcmV2e2xlZnQ6LThyZW07fVxyXG4gICAgICAmLnNsaWNrLW5leHR7cmlnaHQ6LThyZW07fVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnNsaWNrLW5hdi5zbGljay1hcnJvd3tcclxuICAgICYuc2xpY2stZGlzYWJsZWR7XHJcbiAgICAgIG9wYWNpdHk6IC41O1xyXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgIH1cclxuICAgIHdpZHRoOiAxLjlyZW07XHJcbiAgICBoZWlnaHQ6IDMuMnJlbTtcclxuXHJcbiAgICBkaXNwbGF5OiBibG9jayFpbXBvcnRhbnQ7XHJcblxyXG4gICAgJi5zbGljay1uZXh0e1xyXG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2ljb24vYXJyb3ctcmlnaHQuc3ZnKSA1MCUgNTAlIG5vLXJlcGVhdDtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgfVxyXG5cclxuICAgICYuc2xpY2stcHJldntcclxuICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9pY29uL2Fycm93LWxlZnQuc3ZnKSA1MCUgNTAlIG5vLXJlcGVhdDtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MDBweCl7XHJcbiAgICAgICYuc2xpY2stbmV4dHtyaWdodDogLTEuNXJlbTt9XHJcbiAgICAgICYuc2xpY2stcHJldntsZWZ0OiAtMS41cmVtO31cclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICAmLnNsaWNrLW5leHR7cmlnaHQ6IC0wLjVyZW07fVxyXG4gICAgICAmLnNsaWNrLXByZXZ7bGVmdDogLTAuNXJlbTt9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLnNsaWNrLXRyYWNre1xyXG4gICAgQGF0LXJvb3QgLmFsaWduLWxlZnQgJntcclxuICAgICAgbWFyZ2luLWxlZnQ6MDtcclxuICAgIH1cclxuICAgIEBhdC1yb290IC5hbGlnbi1yaWdodCAme1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6MDtcclxuICAgIH1cclxuICB9XHJcblxyXG59IiwiLnRhYnMtcGFuZWx7XHJcbiAgLy92aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgLy9vcGFjaXR5OiAwO1xyXG4gIC8vaGVpZ2h0OiAwO1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbiAgJi5pcy1hY3RpdmV7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIC8vdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgIC8vb3BhY2l0eTogMTtcclxuICAgIC8vaGVpZ2h0OiBhdXRvO1xyXG4gIH1cclxufVxyXG4udGFic3tcclxuICAmOmJlZm9yZSwmOmFmdGVye2Rpc3BsYXk6IG5vbmU7fVxyXG4gIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIC50YWJzLXRpdGxle1xyXG4gICAgZmxvYXQ6IG5vbmU7XHJcbiAgICA+YXtwYWRkaW5nOiAwO2JhY2tncm91bmQ6IG5vbmU7fVxyXG4gIH1cclxufVxyXG5cclxuLnRhYnMtY29udGVudHtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYmFja2dyb3VuZDogbm9uZTtcclxufVxyXG5cclxuLnRhYnMtY29udGVudCwgLnRhYi1jb250ZW50e1xyXG5cclxuICAmLmhhcy1sb2FkZXJ7XHJcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9sb2FkZXIuc3ZnKSA1MCUgMTUlIG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogMTJyZW0gYXV0bztcclxuICB9XHJcblxyXG4gICYtLXZpc2libGV7XHJcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICB9XHJcblxyXG4gIGJvcmRlcjogbm9uZTtcclxuICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxuXHJcbiAgJi0tcGFkZGluZ3tcclxuICAgIHBhZGRpbmctdG9wOiAycmVtO1xyXG4gIH1cclxuXHJcbiAgLmItdGFie1xyXG4gICAgJi5pcy1hY3RpdmV7XHJcbiAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgIC8vei1pbmRleDogMTtcclxuICAgICAgei1pbmRleDogNTA7XHJcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB0b3A6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICAvL3otaW5kZXg6IDA7XHJcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC43cztcclxuICB9XHJcbn1cclxuXHJcbi5iLXRhYnN7XHJcblxyXG4gICZfX2xpbmt7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAuOXJlbSAxLjVyZW07XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gICAgY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcbiAgfVxyXG5cclxuICAmLS1iZ3tcclxuXHJcbiAgICAuYi10YWJzX19saW5re1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBtaW4taGVpZ2h0OiAxMnJlbTtcclxuICAgICAgZm9udC1zaXplOiAyLjRyZW07XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICAgIGltZ3tcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgei1pbmRleDogLTE7XHJcbiAgICAgICAgd2lkdGg6MTAwJTtcclxuICAgICAgICBoZWlnaHQ6MTAwJTtcclxuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcclxuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZVN0cmV0Y2g7XHJcbiAgICAgIH1cclxuICAgICAgc3BhbntcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgei1pbmRleDogNDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5iLXRhYnMtbGlzdHtcclxuXHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuXHJcbiAgICAgIGxpe1xyXG5cclxuICAgICAgICAmLmlzLWFjdGl2ZSwgJjpob3ZlciwgJjpmb2N1c3tcclxuICAgICAgICAgIC5iLXRhYnNfX2xpbmt7XHJcbiAgICAgICAgICAgICY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOiBub25lO31cclxuICAgICAgICAgICAgJjpiZWZvcmV7XHJcbiAgICAgICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiA2cHg7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzIyMjtcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgYm90dG9tOjA7XHJcbiAgICAgICAgICAgICAgbGVmdDowO1xyXG4gICAgICAgICAgICAgIHotaW5kZXg6IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJjphZnRlcntcclxuICAgICAgICAgICAgICAvL2JhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCByZ2JhKDI1NSwgMjMyLCAwLCAwLjUpLCByZ2JhKDI1NSwgMjMyLCAwLCAwLjUpKSwgbGluZWFyLWdyYWRpZW50KDE0MS45MWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc2KSAxMC4wNyUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgOTguNzclKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgICAgICAgY29sb3I6ICMwMDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuYi10YWJzX19saW5re1xyXG4gICAgICAgICAgJjphZnRlcntcclxuICAgICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGFic29sdXRlU3RyZXRjaDtcclxuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICAgICAgICAgIC8vYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDBkZWcsIHJnYmEoMCwgMCwgMCwgMC4zKSwgcmdiYSgwLCAwLCAwLCAwLjMpKSwgbGluZWFyLWdyYWRpZW50KDE0MS45MWRlZywgcmdiYSgwLCAwLCAwLCAwLjc2KSAxMC4wNyUsIHJnYmEoMCwgMCwgMCwgMCkgOTguNzclKTtcclxuICAgICAgICAgICAgLy9iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICAgICAgIGZsZXg6IDAgMCAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5iLXRhYnMtbGlzdHtcclxuXHJcbiAgZm9udC1zaXplOiAwO1xyXG5cclxuICBsaXtcclxuICAgICYuaXMtYWN0aXZlLCAmOmhvdmVyLCAmOmZvY3Vze1xyXG4gICAgICAuYi10YWJzX19saW5re1xyXG4gICAgICAgICY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOiBub25lO31cclxuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufSIsIi5iLWJsb2d7XHJcbiAgJi5yb3d7XHJcbiAgICBAZXh0ZW5kIC5yb3ctLXdpZGU7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLmItcG9zdHtcclxuXHJcbiAgJl9fYXV0aG9ye1xyXG4gICAgY29sb3I6ICRjb2xvci1ncmV5MjtcclxuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gICAgYXtjb2xvcjogY3VycmVudENvbG9yO31cclxuICB9XHJcblxyXG4gICZfX2hlYWRlcntcclxuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fYm9keXtcclxuICAgIHBhZGRpbmc6IDEuNnJlbSAyLjRyZW07XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICBhe2NvbG9yOiAkY29sb3ItcHJpbWFyeTt9XHJcbiAgfVxyXG5cclxuICAmX19waWN7XHJcbiAgICBib3JkZXItYm90dG9tOiA2cHggc29saWQgJGNvbG9yLXllbGxvdztcclxuICB9XHJcblxyXG4gICZfX3RpdGxle1xyXG4gICAgQGV4dGVuZCAudGl0bGUtNjtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuMTQ7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxLjhyZW07XHJcbiAgICBjb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgICBhe2NvbG9yOiBjdXJyZW50Q29sb3I7fVxyXG4gIH1cclxuXHJcbiAgJl9fdHh0e1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgcHtcclxuICAgICAgZm9udC1zaXplOiAxMDAlO1xyXG4gICAgICBsaW5lLWhlaWdodDogMS42NztcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2J0bntcclxuICAgIG1hcmdpbi10b3A6IDEuOHJlbTtcclxuXHJcbiAgICAuYnRuLW1vcmV7bWluLXdpZHRoOiAxMnJlbTt9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgJl9fYXV0aG9ye2ZvbnQtc2l6ZTogMTZweH1cclxuICAgICZfX3R4dHtcclxuICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJvZHktbW9iO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn0iLCIkcG9zdC1tYXJnaW46IDJyZW07XHJcblxyXG4uYi1wYWdpbmF0aW9ue1xyXG5cclxuICAvL21hcmdpbi10b3A6ICRwb3N0LW1hcmdpbjtcclxuICAvL3BhZGRpbmctbGVmdDogNXJlbTtcclxuXHJcbiAgJl9fYXJyb3d7fVxyXG5cclxuICAmX19saXN0e1xyXG5cclxuICAgIGZvbnQtc2l6ZTogMDtcclxuICAgIG1hcmdpbi1sZWZ0OiAtLjVyZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC0uNXJlbTtcclxuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktdGl0bGU7XHJcblxyXG4gICAgLnBhZ2UtbnVtYmVyc3tcclxuICAgICAgJjpob3ZlcntvcGFjaXR5OiAuNjt9XHJcbiAgICAgIEBpbmNsdWRlIG5vZGVjb3I7XHJcbiAgICAgIHBhZGRpbmc6IC44cmVtIC41cmVtO1xyXG4gICAgICBtaW4td2lkdGg6IDMuNnJlbTtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgLy9ib3JkZXItcmFkaXVzOiAwO1xyXG4gICAgICBtYXJnaW46IC41cmVtO1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgIC8vY29sb3I6ICNmZmY7XHJcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2U7XHJcblxyXG4gICAgICAmLmN1cnJlbnR7XHJcbiAgICAgICAgJjpob3ZlcntvcGFjaXR5OiAxO31cclxuICAgICAgICBiYWNrZ3JvdW5kOiAjMDA2YWMwO1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogIzAwNmFjMDtcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICAvL2NvbG9yOiAkY29sb3ItZ3JleTI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYubmV4dCwmLnByZXZ7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuZG90c3tib3JkZXI6IG5vbmU7fVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAvL3BhZGRpbmctbGVmdDogM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDIuNXJlbTtcclxuICB9XHJcblxyXG59IiwiLmdmaWVsZC5oaWRkZW5fbGFiZWwgLmdmaWVsZF9sYWJlbCB7XHJcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5mb3JtLmhvbWUtZm9ybSAuZ2ZpZWxkX2Rlc2NyaXB0aW9uLnZhbGlkYXRpb25fbWVzc2FnZXtcclxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuZm9ybS5ob21lLWZvcm0gLmdmb3JtX2Zvb3RlciBpbnB1dFt0eXBlPVwic3VibWl0XCJde1xyXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuXHJcblxyXG4jY29va2llLW5vdGljZS5jb29raWUtbm90aWNlLWhpZGRlbiB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuI2Nvb2tpZS1ub3RpY2Uge1xyXG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxufVxyXG5cclxuXHJcbmZvcm0ubGVmdC1idXR0b24gLmNvbHVtbi5zbWFsbC0xMi5zaHJpbmsubWwtYXV0by50ZXh0LXJpZ2h0e1xyXG4gIG1hcmdpbi1sZWZ0OiAwO1xyXG5cclxufVxyXG5cclxuXHJcbi5nZmllbGQuZ2Zvcm1faGlkZGVuIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG5cclxuLmVycm9yLW1lc3NhZ2UtYmxvY2sge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcbi5lcnJvci1tZXNzYWdlIHtcclxuICBwYWRkaW5nLWxlZnQ6IC41cmVtO1xyXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBY0FBOzs7OztHQUtHO0F1R3dOSCxtRUFBbUU7QUFRbkUsbUVBQW1FO0FBRW5FLG1FQUFtRTtBQWlCbkUsbUVBQW1FO0FBRW5FLG1FQUFtRTtBQUVuRSxnRUFBZ0U7QUFrQmhFLDZCQUE2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 */
